"Liên kết" cũng có thể đề cập đến các mẫu truy cập bộ nhớ kết hợp lại . Trong cách sử dụng này, kết hợp lại được sử dụng để đảm bảo rằng các luồng chạy đồng thời, cố gắng truy cập bộ nhớ gần đó. Điều này thường là do:
- Bộ nhớ thường được lấy trong các khối lớn từ RAM.
- Một số đơn vị xử lý sẽ cố gắng dự đoán các lần truy cập bộ nhớ trong tương lai và bộ đệm trước, trong khi vẫn xử lý các phần bộ nhớ cũ hơn.
- Bộ nhớ được lưu trữ trong một hệ thống các bộ nhớ cache lớn hơn nhưng chậm hơn liên tiếp.
Do đó, làm cho các chương trình có thể sử dụng các mẫu bộ nhớ dự đoán là rất quan trọng. Nó thậm chí còn quan trọng hơn với một chương trình luồng, để các yêu cầu bộ nhớ không nhảy qua; nếu không, đơn vị xử lý sẽ chờ các yêu cầu bộ nhớ được thực hiện.
Các sơ đồ lấy cảm hứng từ Giới thiệu về lập trình song song: Bài học 2 Phần cứng GPU và các mẫu giao tiếp song song :
Dưới đây: Bốn chủ đề, với truy cập bộ nhớ thống nhất. Hình chữ nhật nét đứt màu đen đại diện cho một yêu cầu bộ nhớ 4 từ duy nhất.
Các truy cập bộ nhớ gần và có thể được truy xuất trong một lần đi / khối (hoặc số lượng yêu cầu ít nhất).
Tuy nhiên, nếu chúng ta tăng " bước tiến " của quyền truy cập giữa các luồng, nó sẽ yêu cầu nhiều truy cập bộ nhớ hơn. Dưới đây: bốn chủ đề nữa, với một sải chân của hai.
Ở đây bạn có thể thấy rằng 4 luồng này yêu cầu 2 yêu cầu khối bộ nhớ. Sải chân càng nhỏ càng tốt. Sải chân càng rộng, càng có nhiều yêu cầu có khả năng được yêu cầu.
Tất nhiên, tệ hơn một sải chân bộ nhớ lớn là một mẫu truy cập bộ nhớ ngẫu nhiên. Đây sẽ là gần như không thể đường ống, bộ nhớ cache hoặc dự đoán.
Nguồn TikZ: