Bộ nhớ của người kết hợp với nhau là gì?


16

Tôi biết rằng đơn vị xử lý đồ họa có một thứ gọi là bộ nhớ kết hợp lại. Khi đọc về nó tôi không rõ về chủ đề này. Đây có phải là bất kỳ cách nào liên quan đến Song song cấp bộ nhớ.

Tôi đã tìm kiếm trong Google nhưng không thể có được câu trả lời thỏa đáng.

Sẽ rất hữu ích nếu ai đó đưa ra một lời giải thích toàn diện hơn, dễ hiểu hơn.


Song song mức bộ nhớ (MLP) là khả năng thực hiện nhiều giao dịch bộ nhớ cùng một lúc. Trong nhiều kiến ​​trúc, điều này thể hiện là khả năng thực hiện cả thao tác đọc và ghi cùng một lúc, mặc dù nó cũng thường tồn tại khi có thể thực hiện nhiều lần đọc cùng một lúc. Rất hiếm khi thực hiện nhiều thao tác ghi cùng một lúc, vì nguy cơ xung đột tiềm ẩn (cố gắng viết hai giá trị khác nhau vào cùng một vị trí). Lưu ý rằng điều này không giống như các hoạt động bộ nhớ được vector hóa, chẳng hạn như đọc 4 giá trị 8 bit riêng biệt nhưng liền kề trong một lần đọc 32 bit.
sai kiran grandhi

Câu trả lời:


11

"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.

nhập mô tả hình ảnh ở đây

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.

4 luồng kết hợp bộ nhớ và 4 luồng với sải chân là 2

Ở đâ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:


2
Nhiều luồng cũng có thể truy cập vào cùng một mục dữ liệu (không chỉ là một phần tử trong cùng một khối lớn hơn), hơi giống với (nhưng chung chung hơn) các hoạt động SPLAT trong kiến ​​trúc SIMD. Là bộ xử lý thông lượng chịu độ trễ, GPU có thể đủ khả năng để tăng độ trễ truy cập khi điều đó cho phép tăng băng thông hiệu quả.
Paul A. Clayton

Các liên kết đưa ra bị hỏng.
Daniel Soutar

3

Tôi nghĩ rằng tôi thấy hai cách sử dụng từ "liên kết" trên mạng, cả hai đều phải làm với bộ nhớ. Một là kết hợp phân bổ bộ nhớ giải phóng , đó là những gì được đề cập trong trang wikipedia được liên kết trong câu hỏi.


Liên kết giải phóng bộ nhớ giải phóng

Khi cấp phát bộ nhớ, đôi khi trình quản lý bộ nhớ có thể có tình huống có hai khối bộ nhớ liền kề được giải phóng. Kết hợp những thứ này sẽ làm cho chúng trở thành một khối bộ nhớ được giải phóng duy nhất - đây được gọi là "liên kết". Thí dụ:

Bắt đầu với 4 khối được phân bổ:

4 khối được phân bổ

Sau đó, một trong số họ được giải thoát:

Bây giờ 1 khối miễn phí

Và sau đó, một cái khác được giải phóng:

Bây giờ 2 khối miễn phí liền kề

Bây giờ, tại sao có hai khối miễn phí liền kề? Liên kết chúng:

Liên kết các khối được giải phóng, bây giờ 2 khối được phân bổ, 1 khối được giải phóng

Sự kết hợp có thể xảy ra ngay khi có thể, hoặc, ví dụ, trong một trình thu gom rác, khi trình thu gom chạy.

Nguồn TikZ:


Tôi nghĩ rằng câu trả lời này không phù hợp với những gì tôi muốn. Bộ nhớ kết hợp lại đang đọc các khối bộ nhớ liền kề như bạn đã cung cấp trong câu trả lời khác. Nếu có thể, vui lòng xóa câu trả lời này và liên kết trong câu hỏi mà bạn đã chỉnh sửa
sai kiran grandhi

@saikirangrandhi Tôi sẽ giữ câu trả lời để tham khảo. Bạn có thể sửa đổi / hoàn tác chỉnh sửa câu hỏi của bạn như bạn muốn; bạn chỉ có thể nhấn "chỉnh sửa" dưới câu hỏi.
Realz Slaw
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.