Vì bạn đề cập cụ thể đến nhiều chủ đề, tôi cho rằng bạn có ít nhất một hệ thống đa ổ cắm. Thông thường, các ngân hàng bộ nhớ được kết hợp với các socket bộ xử lý. Đó là, một bộ xử lý là "gần nhất" với các ngân hàng bộ nhớ riêng của nó và cần giao tiếp với các bộ điều khiển bộ xử lý khác để truy cập dữ liệu trên các ngân hàng khác. (Bộ xử lý ở đây có nghĩa là vật lý trong ổ cắm)
Khi bạn phân bổ dữ liệu, thường là chính sách ghi đầu tiên được sử dụng để xác định bộ nhớ nào sẽ phân bổ dữ liệu, có nghĩa là nó có thể truy cập dữ liệu nhanh hơn bộ vi xử lý.
Vì vậy, ít nhất đối với nhiều bộ xử lý (không chỉ nhiều lõi) nên có cải thiện hiệu suất từ phân bổ một bản sao ít nhất cho mỗi bộ xử lý. Hãy chắc chắn, để phân bổ/sao chép dữ liệu với mỗi bộ xử lý/luồng chứ không phải từ một luồng chủ (để khai thác chính sách ghi đầu tiên). Ngoài ra, bạn cần đảm bảo rằng các chuỗi sẽ không di chuyển giữa các bộ xử lý, vì sau đó bạn có khả năng mất kết nối gần với bộ nhớ của mình.
Tôi không chắc chắn, cách sao chép dữ liệu cho mỗi luồng trên một bộ xử lý sẽ ảnh hưởng đến hiệu suất, nhưng tôi đoán không sao chép có thể cải thiện khả năng chia sẻ nội dung của bộ đệm cấp cao hơn.
Trong mọi trường hợp, điểm chuẩn và quyết định dựa trên các phép đo thực tế.
Máy NUMA phải không? – Mysticial
Câu hỏi hiển nhiên là: hằng số bộ nhớ này trong khi nó đang được đọc, hoặc nó có bị thay đổi không? –
@Mysticial, người ta hy vọng rằng tất cả các kiến trúc có hiệu quả xử lý nhân dữ liệu đọc, không chỉ là một hệ thống NUMA. –