CUDA Streaming Multiprocessors là gì ?

CUDA Streaming Multiprocessors là gì?

Về cơ bản,CUDA Streaming Multiprocessors giống như tính năng siêu phân luồng trên CPU, các luồng dữ liệu sẽ được tách ra xử lý trên mỗi CUDA, giúp xử lý nhanh hơn và hiệu quả hơn gấp nhiều lần

Cấu tạo của một khối Multiprocessor và chức năng

Mỗi kiến ​​trúc trong GPU bao gồm một số bộ xử lý SM hoặc Streaming Multiprocessor. Đây là những bộ xử lý có mục đích chung với mục tiêu tốc độ xung nhịp thấp và bộ đệm nhỏ. Nhiệm vụ chính của SM là nó phải thực thi song song nhiều khối luồng. Ngay sau khi một trong các khối luồng của nó hoàn thành việc thực thi, nó sẽ chiếm khối luồng tiếp theo. Nói chung, SM hỗ trợ tính song song ở mức hướng dẫn nhưng không hỗ trợ dự đoán nhánh.

Để đạt được mục đích này, một Streaming Multiprocessors chứa những thành phần sau:

1: Lõi thực thi.
2: Bộ nhớ đệm.
Bộ đệm L1. (để giảm độ trễ truy cập bộ nhớ).
Bộ nhớ dùng chung (dành cho dữ liệu được chia sẻ giữa các luồng).
Bộ nhớ đệm không đổi (để phát các lần đọc từ bộ nhớ chỉ đọc).
Bộ đệm kết cấu. (để tổng hợp băng thông từ bộ nhớ kết cấu).
3: Lập lịch cho các sợi dọc. (đây là để đưa ra hướng dẫn cho các sợi dọc dựa trên chính sách lập lịch cụ thể).
4: Một số lượng đáng kể các sổ đăng ký. (SM có thể đang chạy một số lượng lớn các luồng hoạt động cùng một lúc, do đó bắt buộc phải có hàng nghìn thanh ghi).

Chức năng của một khối Streaming Multiprocessors trong CUDA

Phần cứng lên lịch các khối luồng cho SM. Tất cả các luồng trong một khối luồng cụ thể phải nằm trên một SM duy nhất . Nói chung, một SM có thể xử lý nhiều khối luồng cùng một lúc . Một SM có thể chứa tổng cộng tối đa 8 khối luồng. ID luồng được gán cho một luồng bởi SM tương ứng của nó.
Bất cứ khi nào SM thực thi một khối luồng, nó sẽ thực thi hoàn toàn trên SM đó . Tất cả các luồng bên trong khối luồng được thực thi cùng một lúc . Do đó, để giải phóng bộ nhớ của khối luồng bên trong SM, điều quan trọng là toàn bộ tập hợp luồng trong khối đã kết thúc quá trình thực thi.
Ở cấp độ phần cứng trên SM, mỗi khối luồng được chia thành các đoạn gồm 32 luồng liên tiếp , được gọi là warp . Hướng dẫn được ban hành ở cấp độ dọc. Điều đó có nghĩa là một lệnh được đưa ra theo kiểu vector tới 32 luồng liên tiếp cùng một lúc. Mô hình thực thi này được gọi là Đơn lệnh đa luồng hoặc SIMT.

Warps Là gì, nó hoạt động như thế nào ?

Warps là gì ?

Về mặt phần cứng, một khối luồng bao gồm các sợi dọc (Warps). Một (Warps) là một tập hợp gồm 32 luồng trong một khối luồng sao cho tất cả các luồng trong một sợi dọc thực hiện cùng một lệnh . Các chủ đề này được chọn tuần tự bởi SM . Mỗi sợi dọc được thực thi theo kiểu SIMD (tức là tất cả các luồng trong sợi dọc phải thực hiện cùng một lệnh tại bất kỳ thời điểm nào).

 

Warps hoạt động như thế nào ?

Bộ lập lịch có thể chuyển đổi giữa các sợi dọc đồng thời, bắt nguồn từ bất kỳ khối nào của bất kỳ hạt nhân nào mà không cần chi phí. Khi một sợi dọc bị đình trệ – nghĩa là lệnh tiếp theo không thể được thực thi trong chu kỳ tiếp theo – bộ lập lịch sẽ chuyển sang một sợi dọc có khả năng thực hiện một lệnh. Khi một lệnh không có phụ thuộc dữ liệu, nghĩa là cả hai toán hạng của nó đều sẵn sàng, thì sợi dọc tương ứng được coi là sẵn sàng để thực thi.

Việc hoán đổi sợi dọc với chi phí thấp cho phép ẩn độ trễ lệnh một cách hiệu quả, giả sử có đủ sợi dọc với các lệnh có thể phát hành nằm trên SM. Nếu có nhiều hơn một sợi dọc đủ điều kiện để thực thi, SM cha sẽ sử dụng chính sách lập lịch sợi dọc để quyết định sợi dọc nào sẽ nhận được lệnh được tìm nạp tiếp theo.

Mỗi bộ lập lịch dọc có (2) đơn vị điều phối lệnh. Ở mỗi chu kỳ, bộ lập lịch sẽ chọn một Warp và nếu có thể, hai lệnh độc lập sẽ được đưa ra cho sợi dọc đó. Điều này tương tự như Đa luồng Fine-Grain.

Giả sử cần 4 chu kỳ xung nhịp để gửi cùng một lệnh cho tất cả các luồng trong một Warp . Nếu có một quyền truy cập bộ nhớ chung cứ sau 4 hướng dẫn thì cần bao nhiêu Warp để chịu đựng hoàn toàn độ trễ bộ nhớ 200 chu kỳ?
Warp đầu tiên sẽ chạy trong 16 chu kỳ trước khi cần truy cập bộ nhớ. Sau thời gian này, sợi dọc này cần đợi 200 chu kỳ. Tại thời điểm này, bộ lập lịch dọc có thể chuyển sang một  Warp  khác và bắt đầu thực hiện 4 lệnh đầu tiên của nó. Sau 16 chu kỳ nữa, quá trình này lặp lại cho đến khi bộ lập lịch có thể chuyển trở lạ Warp ban đầu sau 200 chu kỳ.

Bài viết liên quan

Contact Me on Zalo