2012-01-26 21 views
6

Nó cũng được biết rằng truy cập bộ nhớ trong một thời trang sải chân là tốt nhất cho hiệu suất.Tôi có nên sử dụng quyền truy cập bộ nhớ một lần để đọc hoặc viết không?

Trong tình huống mà

  • Tôi phải truy cập vào một khu vực của bộ nhớ để đọc,
  • Tôi phải truy cập vào khu vực khác để viết, và
  • Tôi chỉ có thể truy cập vào một trong hai khu vực trong một sải chân một kiểu thời trang,

Tôi có nên đọc sải bước một hoặc viết sải chân không?

Một ví dụ đơn giản, cụ thể là thao tác sao chép và hoán vị giống như BLAS như y := P x. Ma trận hoán vị P được xác định hoàn toàn bởi một số vector hoán vị q(i). Nó có một vector hoán vị nghịch đảo tương ứng qinv(i). Người ta có thể mã các vòng lặp yêu cầu như y[qinv(i)] = x[i] hoặc là y[i]=x[q(i)] nơi trước đây đọc từ x stride một và sau này viết để y sải bước một.

Lý tưởng nhất có thể luôn mã hóa cả hai khả năng, cấu hình chúng trong điều kiện đại diện và chọn phiên bản nhanh hơn. Giả sử bạn chỉ có thể viết mã một phiên bản-- mẫu truy cập nào bạn sẽ luôn dự đoán sẽ nhanh hơn dựa trên hành vi của các kiến ​​trúc bộ nhớ hiện đại? Làm việc trong môi trường luồng có thay đổi phản hồi của bạn không?

+0

Không nổi tiếng bởi tôi. :-) Tôi không hiểu. Nếu bạn có thể đưa ra một ví dụ trong C có lẽ tôi có thể đưa ra một câu trả lời, nhưng trên OTOH bạn có thể không quan tâm đến một câu trả lời từ tôi nếu tôi không nhận được những gì BLAS là ... ;-) –

+0

BLAS là Chương trình con số đại số tuyến tính cơ bản (http://netlib.org/blas/), một tập hợp các khối xây dựng số hiệu suất cao thường được các nhà cung cấp triển khai. –

Trả lời

4

Mẫu truy cập, mà bạn đặt tên là "viết sải chân" (y[i]=x[q(i)]), thường nhanh hơn.

Nếu bộ nhớ được lưu trong bộ nhớ cache và các mẩu dữ liệu của bạn nhỏ hơn dòng bộ nhớ cache, mẫu truy cập này yêu cầu ít băng thông bộ nhớ hơn.

Thông thường các bộ xử lý hiện đại có nhiều đơn vị thực thi tải hơn đơn vị lưu trữ. Và kiến ​​trúc Intel tiếp theo, có tên Haswell, chỉ hỗ trợ chỉ dẫn GATHER, trong khi SCATTER chưa có trong kế hoạch của họ. Tất cả điều này cũng có lợi cho mô hình "viết một bước".

Làm việc trong môi trường có luồng không thay đổi điều này.

+0

Cảm ơn bạn Evgeny. –

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