Numa multiprocessors
multiprocessors Độc-bus UMA thường được giới hạn không quá một vài
chục CPU, và xà Multiprocessors chuyển cần rất nhiều (đắt tiền)
phần cứng và không phải là lớn hơn nhiều. Để có được đến hơn 100 CPU, một cái gì đó
có để cung cấp cho. Thông thường, những gì cho là ý tưởng rằng tất cả các module bộ nhớ có cùng
thời gian truy cập. Nhượng này dẫn đến ý tưởng của multiprocessors Numa, như đã đề cập
ở trên. Giống như người anh em họ UMA của họ, họ cung cấp một không gian địa chỉ duy nhất trên
tất cả các CPU, nhưng không giống như các máy UMA, tiếp cận với các mô-đun bộ nhớ địa phương là
nhanh hơn so với truy cập cho những người từ xa. Như vậy tất cả các chương trình UMA sẽ chạy mà không có sự thay đổi
trên máy Numa, nhưng việc thực hiện sẽ tồi tệ hơn trên một máy UMA.
Máy Numa có ba đặc điểm quan trọng mà tất cả chúng có và
đó cùng nhau phân biệt chúng từ multiprocessors khác:
1. Có một không gian địa chỉ duy nhất có thể nhìn thấy tất cả các CPU.
2. Truy cập vào bộ nhớ từ xa thông qua các hướng dẫn LOAD và STORE.
3. Truy cập vào bộ nhớ từ xa là chậm hơn so với truy cập vào bộ nhớ địa phương.
Khi thời gian truy cập vào bộ nhớ từ xa không được ẩn (vì không có bộ nhớ đệm),
hệ thống được gọi là NC-Numa (Non Cache-mạch lạc Numa). Khi
cache là mạch lạc, hệ thống được gọi là CC-Numa (Cache-mạch lạc Numa).
Một phương pháp phổ biến để xây dựng multiprocessors CC-Numa lớn là
đa dựa trên thư mục. Ý tưởng là để duy trì một cơ sở dữ liệu kể nơi
mỗi dòng bộ nhớ cache là gì và tình trạng của nó là. Khi một dòng bộ nhớ cache được tham chiếu, cơ sở dữ liệu
được truy vấn để tìm ra nó ở đâu và liệu có sạch hay bẩn. Vì đây
cơ sở dữ liệu được truy vấn trên mỗi lệnh mà chạm đến bộ nhớ, nó phải được giữ trong cực kỳ
phần cứng đặc biệt mục đích nhanh, có thể đáp ứng một phần nhỏ của một chu kỳ bus.
Để thực hiện ý tưởng của một đa dựa trên thư mục nào cụ thể hơn,
chúng ta hãy xem xét như là một đơn giản (giả thuyết) Ví dụ, một hệ thống 256-node, mỗi node
bao gồm một CPU và 16 MB RAM kết nối với CPU thông qua một xe buýt địa phương.
tổng bộ nhớ là 232 byte và nó được chia thành 226 dòng bộ nhớ cache 64 byte
mỗi. Bộ nhớ là tĩnh phân bổ giữa các nút, với 0-16M tại nút 0,
16M-32M trong nút 1, vv Các nút được nối với nhau bằng một mạng lưới kết nối,
526 NHIỀU PROCESSOR HỆ THỐNG CHAP. 8
như hình. 8-6 (a). Mỗi nút cũng giữ mục thư mục cho 218
dòng bộ nhớ cache 64-byte bao gồm bộ nhớ 224-byte của nó. Đối với thời điểm này, chúng tôi sẽ giả định
rằng một dòng có thể được tổ chức tại nhiều nhất một bộ nhớ cache.
Thư mục
Node 0 Node 1 Node 255
(a)
(b)
Bits 8 18 6
(c)
mạng nối
CPU Bộ nhớ
xe buýt địa phương
CPU Bộ nhớ
xe buýt địa phương
CPU Memory
xe buýt địa phương
Node Khối offset
0
1
2
3
4
0
0
1
0
0
218-1
82
...
Hình 8-6. (a) 256-node dựa trên thư mục đa. (b) Bộ phận của một
địa chỉ bộ nhớ 32-bit vào các lĩnh vực. (c) Các thư mục tại nút 36.
Để xem cách các thư mục làm việc, chúng ta hãy theo dõi một hướng dẫn TẢI từ CPU 20
mà tham khảo một dòng cache. Đầu tiên CPU ban hành hướng dẫn trình bày nó để nó
MMU, mà chuyển nó đến một địa chỉ vật lý, nói, 0x24000108. MMU
chia tách địa chỉ này vào ba phần thể hiện trong hình. 8-6 (b). Trong số thập phân, ba
phần là nút 36, dòng 4, và bù đắp 8. MMU xem sự rằng từ bộ nhớ tham chiếu
là từ nút 36, không node 20, do đó nó sẽ gửi một thông điệp yêu cầu thông qua
mạng kết nối đến nút nhà của dòng, 36 tuổi, hỏi xem dòng của nó 4 được
lưu trữ, và nếu có, ở đâu.
Khi yêu cầu đến tại nút 36 qua mạng kết nối, nó được
chuyển đến các phần cứng thư mục. Các chỉ số phần cứng vào bảng của 218 mục,
một cho mỗi dòng bộ nhớ cache của nó, và các chiết xuất nhập 4. Từ hình. 8-6 (c), chúng tôi thấy rằng
các dòng không lưu trữ, do đó, các phần cứng vấn đề tìm nạp cho dòng 4 từ RAM địa phương
và sau đó đến gửi trở lại cho nút 20. Sau đó nó cập nhật vào thư mục 4 để chỉ
rằng dòng hiện đang được lưu trữ tại nút 20.
SEC. 8.1 multiprocessors 527
Bây giờ chúng ta hãy xem xét một yêu cầu thứ hai, lần này hỏi về nút 36 của dòng 2.
Từ hình. 8-6 (c), chúng tôi thấy rằng dòng này sẽ được lưu trữ tại nút 82. Tại thời điểm này, các phần cứng
có thể cập nhật mục nhập thư mục 2 để nói rằng các dòng tại là tại nút 20 và sau đó
gửi một thông điệp tới nút 82 hướng dẫn nó để vượt qua đường tới nút 20 và mất hiệu lực
bộ nhớ cache của nó. Lưu ý rằng ngay cả một cái gọi là '' chia sẻ bộ nhớ đa '' có rất nhiều
thông qua xảy ra dưới mui xe.
Như một cách nhanh chóng sang một bên, chúng ta hãy tính toán bao nhiêu bộ nhớ đang được đưa lên bởi các
thư mục. Mỗi nút có 16 MB RAM và 218 mục 9-bit để theo dõi
RAM. Do đó, chi phí thư mục là khoảng 9 × 218 bit chia cho 16 MB hoặc
khoảng 1,76%, mà nói chung là chấp nhận được (mặc dù nó có phải là bộ nhớ tốc độ cao,
làm tăng chi phí của nó, tất nhiên). Ngay cả với dòng bộ nhớ cache 32-byte overhead
sẽ chỉ là 4%. Với dòng bộ nhớ cache 128-byte, nó sẽ là dưới 1%.
Một hạn chế rõ ràng của thiết kế này là một dòng có thể được lưu trữ tại chỉ có một
nút. Để cho phép dòng để được lưu trữ tại nhiều nút, chúng tôi sẽ cần một số cách của
vị tất cả trong số họ,
đang được dịch, vui lòng đợi..
