2012-08-30 29 views
7

Tôi đang điều chỉnh hiệu suất của chương trình Java song song của mình. Tôi tò mò về hiệu ứng Kiến trúc.Làm thế nào để các CPU trên các socket khác nhau giao tiếp?

Cho một máy có hai ổ cắm CPU, mỗi một với một quad-core CPU Intel Xeon, sau đó:

  • Làm thế nào để hai CPU giao tiếp, nhanh như thế nào họ sẽ giao tiếp?
  • Hai lõi trên cùng một chip giao tiếp nhanh như thế nào?
  • Có phải bốn lõi trên cùng một chip tương đương về giao tiếp hoặc truy cập bộ nhớ?
+0

Bạn có đang truyền nhiều dữ liệu không? Dữ liệu được truyền như thế nào (ví dụ: 0MQ được sử dụng)? – osgx

Trả lời

3

1) Làm thế nào để hai CPU giao tiếp, họ sẽ liên lạc nhanh như thế nào?

Hầu hết thời gian họ giao tiếp qua bộ nhớ hoặc cấp phân cấp bộ nhớ được chia sẻ gần nhất. (Bộ nhớ hệ thống cả trên SMP và NUMA được coi là cấp chia sẻ, ngay cả khi trong NUMA nó được truy cập thông qua bộ điều khiển bộ nhớ của một chip khác. Đây chỉ là Non-Uniform = truy cập chậm hơn)

2) lõi trên cùng một chip giao tiếp?

Các lõi trên cùng một chip thường chia sẻ bộ nhớ cache L2 hoặc L3. Các lõi trên các chip khác nhau giao tiếp thông qua bộ nhớ hoặc với các tương tác cache-to-cache sử dụng giao thức kết hợp bộ nhớ cache.

Vì vậy, trong trường hợp 1 (các chip khác nhau) tốc độ (băng thông) bộ nhớ truyền giữa các CPU sẽ gần đọc/ghi bộ nhớ đơn giản. Và trong trường hợp 2 (cùng một chip) tốc độ này có thể lớn hơn, lên đến tốc độ đọc/ghi cache.

Độ trễ của thông tin liên lạc sẽ là vài trăm CPU bọ ve trong trường hợp 1 và vài chục trong trường hợp 2.

3) Có bốn lõi trên cùng một chip tương đương về mặt giao tiếp hoặc bộ nhớ truy cập?

Tất cả bốn lõi của cùng một chip thường có khoảng cách tương đương với RAM. Nó phụ thuộc vào kiến ​​trúc và triển khai chip; đối với một số Intels cũ hơn, ví dụ: chip đa lõi thực sự là hai con chip được đóng gói thành một gói duy nhất.

+0

Vì vậy, khi gán hai luồng cho hai lõi, một cái trên hai con chip có thể chậm hơn hàng chục lần so với con chip trên một con chip, phải không? – JackWM

+0

Tương tác giữa các chủ đề là gì? Họ sẽ thực hiện bao nhiêu công việc giữa các lần tương tác? Có phải họ gửi nhiều dữ liệu hoặc chỉ làm việc trên cấu trúc dữ liệu được chia sẻ không? – osgx

8

Cách lên lịch chủ đề cho lõi để đạt hiệu suất bộ nhớ tối ưu phụ thuộc vào mẫu truy cập vào bộ nhớ và thường không đáng để khắc phục sự cố. Nếu chương trình của bạn là trong Java, có thể bạn sẽ không có mức độ kiểm soát cần thiết để đạt được hiệu suất tối ưu.

CPU hiện đại có bộ điều khiển bộ nhớ tích hợp và hệ thống đa ổ cắm hiện đại có bộ nhớ phân phối. Điều này được gọi

Non-Uniform Memory Access (NUMA)

Trong hiện đại đa socket Intel vi xử lý giao tiếp giữa các ổ cắm được thực hiện với QPI

QuickPath Interconnect (QPI)

QPI là kiến ​​trúc Intel chỉ rõ cách làm việc này. Tương đương của AMD là HyperTransport.Bạn có thể tìm hiểu thêm về các kiến ​​trúc khác nhau ở đây:

System Architecture

Một quyền truy cập vào bộ nhớ mà bỏ sót trong dữ liệu bộ nhớ cache Level 1 có thể được phục vụ bởi bộ nhớ cache dữ liệu Level 2 (trong cùng một ổ cắm) hoặc nó có thể là được phục vụ bởi những gì Intel gọi là "Last Level Cache (LLC)" sẽ nằm trong socket có bộ điều khiển bộ nhớ cho địa chỉ bộ nhớ đó. Đánh vào LLC trong một ổ cắm khác có thể là vài chục chu kỳ xử lý, nhưng vẫn nhanh hơn nhiều so với việc truy cập DRAM (hơn một trăm chu trình bộ xử lý).

+1

Tóm tắt rất tốt. "Kiến trúc hệ thống" cũng giống như một nguồn tài nguyên tuyệt vời. –

Các vấn đề liên quan