Truy cập bộ nhớ không đồng nhất

Truy cập bộ nhớ không đồng nhất (Non-uniform memory access - viết tắt NUMA) là một cách thiết kế bộ nhớ máy tính được sử dụng trong lĩnh vực đa xử lý, trong đó thời gian truy cập bộ nhớ phụ thuộc vào vị trí tương đối của bộ nhớ so với bộ vi xử lý (CPU). Với NUMA, một bộ vi xử lý có thể truy cập bộ nhớ cục bộ của mình nhanh hơn các bộ nhớ khác (bộ nhớ của các vi xử lý khác, hoặc bộ nhớ chung chia sẻ giữa các bộ vi xử lý).

Khái niệm cơ bản 
Các CPUs hiện đại hoạt động nhanh hơn nhiều so với bộ nhớ chính (của CPU đó). Trong thời kỳ đầu của máy tính, CPU thường chạy chậm hơn bộ nhớ chính của CPU đó. Tốc độ giữa bộ xử lý và bộ nhớ đuổi kịp nhau trong những năm 1960 với sự ra đời của các siêu máy tính. Kể từ đó, CPUs càng ngày càng rơi vào trạng thái "đói dữ liệu" và thường phải dừng để chờ đợi cho dữ liệu truyền đến từ bộ nhớ. Nhiều siêu máy tính thiết kế trong những năm 1980 và 1990 tập trung vào tăng tốc độ truy cập bộ nhớ thay vì tăng tốc độ bộ xử lý, cho phép các máy tính này làm việc trên dữ liệu lớn ở tốc độ mà các hệ thống khác không thể đạt tới.

Giới hạn số lần truy cập bộ nhớ là chìa khóa để đạt được hiệu suất cao từ máy tính hiện đại. Với các bộ xử lý phổ thông, điều này có nghĩa là ngày càng dùng các bộ nhớ đệm (CPU cache) có dung lượng và tốc độ truy cập nhanh hơn, và sử dụng các thuật toán phức tạp hơn để tránh tình trạng trượt bộ nhớ đệm (cache misses). Tuy nhiên, kích thước của hệ điều hành và ứng dụng còn tăng lên nhiều hơn và do đó làm gỉảm hiệu quả của các cải tiến bộ nhớ đệm này. Các kiến trúc đa xử lý không dùng NUMA còn làm trầm trọng thêm vấn đề. Giờ đây một hệ thống có thể "bỏ đói" nhiều bộ xử lý trong cùng một thời điểm, bởi vì tại một thời điểm chỉ có một bộ xử lý có thể truy cập bộ nhớ.

NUMA đưa ra giải pháp cho vấn đề này bằng cách cung cấp một bộ nhớ riêng cho mỗi bộ vi xử lý, nhờ vậy tránh việc giảm hiệu suất khi nhiều bộ vi xử lý cùng truy cập một địa chỉ nhớ.

NUMA so với Điện toán cụm 
Ta có thể xem NUMA như là một dạng thức gắn kết chặt chẽ hơn của cụm máy tính. Chỉ cần hỗ trợ thêm trang bộ nhớ ảo trong một kiến trúc cụm máy tính là ta có thể hoàn toàn cài đặt giao thức giống như NUMA chỉ bằng phần mềm. Tuy nhiên, nếu chỉ hỗ trợ bằng phần mềm thì tốc độ trao đổi giữa các nút trong cụm sẽ lớn hơn hàng trăm, hàng ngàn lần (nghĩa là chậm hơn) so với việc hỗ trợ NUMA thông qua phần cứng.

Tham khảo

Bộ nhớ máy tính
Tính toán song song