- Đọc/Ghi ngày, tháng, năm
HỆ ĐIỀU HÀNH NHIỀU BỘ VI XỬ LÝ
6.1.4. Hệ thống đa xử lý NUMA
Các hệ thống đa xử lý UMA dùng bus thường bị giới hạn tối đa khoảng vài tá CPU, cịn các hệ thống dùng chuyển mạch chéo hoặc chuyển mạch đa tầng thì cần nhiều phần cứng hỗ trợ. Để cho phép một hệ thống cĩ thể hỗ trợ tốt với trên 100 CPU, người ta đưa ra một cách tiếp cận khác. Với cách tiếp cận này, việc truy xuất bộ nhớ cục bộ sẽ nhanh hơn việc truy xuất bộ nhớở xa. Như vậy, các chương trình hỗ trợ UMA sẽ chạy tốt trên các máy hỗ trợ NUMA mà khơng cĩ sự thay đổi nào. Trong khi đĩ, các chương chương trình được hỗ trợ NUMA sẽ giảm hiệu suất thực thi khi chạy trên các máy hỗ trợ UMA ở cùng một tốc độđồng hồ.
Các máy NUMA cĩ 3 đặc điểm chính cĩ thể phân biệt với các hệ thống đa xử lý khác, đĩ là: Cĩ một khơng gian địa chỉ duy nhất cĩ thể nhìn thấy bởi tất cả các CPU.
Truy xuất bộ nhớở xa thơng qua hai lệnh LOAD và STORE. Truy xuất bộ nhớở xa chậm hơn truy xuất bộ nhớ cục bộ.
Khi thời gian truy xuất bộ nhớở xa cĩ sự khác biệt lớn so với thời gian truy xuất bộ nhớ cục bộ (bởi vì khơng cĩ cơ chế caching) thì hệ thống được gọi là NC-NUMA (NonCaching NUMA). Ngược lại, khi cĩ các bộ nhớ cache, thì hệ thống được gọi là CC-NUMA (Cache Coherent NUMA).
Hình 6.4. (a) Hệ thống đa xử lý sử dụng Directory – 256 node. (b) Phân chia địa chỉ ơ nhớ 32-bit thành các trường. (c) Cấu trúc Directory của node 36.
Cách tiếp cận phổ biến nhất để xây dựng một hệ thống đa xử lý CC-NUMA hiện nay là sử dụng một cơ sở dữ liệu để lưu vị trí của các khối cache và trạng thái của chúng. Khi một khối cache được tham chiếu, cơ sở dữ liệu được yêu cầu được truy vấn để tìm ra vị trí và trạng thái của nĩ là nguyên bản hay đã bị sửa đổi. Vì cơ sở dữ liệu này phải được truy vấn bởi mọi chỉ thị lệnh tham chiếu đến bộ nhớ, nên nĩ phải được lưu giữ trong một thiết bị phần cứng đặc biệt hỗ trợ tốc độ truy xuất cực nhanh.
Để làm rõ hơn ý tưởng của hệ thống này, chúng ta xét ví dụđơn giản được mơ tả như trong hình 6-5. Một hệ thống gồm 256 node, mỗi node gồm một CPU và 16MB bộ nhớ RAM được kết nối đến CPU thơng qua một bus cục bộ. Tổng bộ nhớ là 232 byte, được chia làm 226 khối cache, mỗi khối 64 byte. Bộ nhớ được định vị cốđịnh tại mỗi node, với 0-16MB cho node 0, 16MB–32MB
cho node 1 … Các node được kết nối với nhau như trong hình 6-5(a). Ngồi ra, mỗi node cũng lưu giữ các thực thể (entry) trong thư mục (directory) cho 218 khối cache 64-byte (hình thành bộ nhớ 224 byte) tương ứng.
Để thấy rõ cơ chế làm việc của hệ thống này, thực hiện theo vết lệnh LOAD từ CPU 20 như sau. Đầu tiên, CPU sẽ phát chỉ thị lệnh đến đơn vị quản lý bộ nhớ của nĩ (MMU), đơn vị này sẽ chuyển chỉ thỉ lệnh đĩ sang một địa chỉ vật lý (giả sử là 0x24000108). MMU tiếp tục chia địa chỉ này thành 3 phần như trong hình 6-5(b). Giả sử 3 phần này lần lượt cĩ giá trị là node 36, khối cache 4 và offset 8. Như vậy, MMU nhận thấy rằng, wordđược tham chiếu là từ node 36, khơng phải node 20, do vậy nĩ gởi một message yêu cầu đến node 36, là node quản lý khối cache 4, hỏi xem khối 4 cĩ được cache hay khơng, nếu cĩ thì nĩ được cache ởđâu.
Khi yêu cầu này đến node 36, nĩ sẽđược chuyển đến phần cứng Directory. Phần cứng này sẽ dị trong bảng gồm 218 thực thể của nĩ để tìm ra thực thể 4. Từ hình 6-5(c), chúng ta thấy rằng khối 4 khơng được cache, do vậy phần cứng sẽ nạp dịng 4 từ bộ nhớ RAM cục bộ và gởi ngược lại node 20, đồng thời cập nhật Directoryở thực thể 4 và chỉ ra rằng khối này bây giờđược cache ở node 20.
Bây giờ, chúng ta xem xét một yêu cầu khác, lần này node 20 hỏi về khối cache 2 của node 36. Từ hình 6-5(c), chúng ta thấy rằng khối này được cache tại node 82. Như vậy, phần cứng phải cập nhật thực thể 2 trong Directoryđể chỉ ra rằng khối này đang được cache ở node 20 đồng thời vơ hiệu hĩa cache của nĩ.