ScholarGate
Trợ lý

Kiến trúc GPU

Bộ xử lý đồ họa (GPU) là một bộ xử lý song song lớn, hướng thông lượng, được xây dựng từ nhiều lõi đơn giản thực thi hàng nghìn luồng để che giấu độ trễ bộ nhớ, ban đầu dành cho đồ họa và hiện được sử dụng rộng rãi cho tính toán đa năng và học máy.

Tìm chủ đề với PaperMindSắp ra mắtFind papers & topics
Tools & resources
Tải xuống bản trình chiếu
Learn & explore
VideoSắp ra mắt

Definition

Kiến trúc GPU là một thiết kế bộ xử lý song song cao, bao gồm nhiều lõi nhẹ được nhóm thành các bộ xử lý đa luồng thực thi số lượng lớn luồng theo nhóm đồng bộ, được tối ưu hóa cho thông lượng số học cao và che giấu độ trễ hơn là tốc độ đơn luồng.

Scope

Chủ đề này bao gồm tổ chức phần cứng GPU: bộ xử lý đa luồng (streaming multiprocessor), mô hình thực thi một lệnh nhiều luồng (SIMT), các nhóm luồng (warps) và khối luồng (thread blocks), hệ thống phân cấp bộ nhớ gồm các thanh ghi, bộ nhớ chia sẻ và bộ nhớ toàn cục, và cách GPU che giấu độ trễ thông qua đa luồng lớn. Nó coi GPU như một kiến trúc song song. Nó không bao gồm các phần mở rộng SIMD của CPU (bộ xử lý SIMD và vector) và các khung phần mềm để lập trình GPU ngoài các hàm ý kiến trúc.

Core questions

  • Làm thế nào GPU đạt được thông lượng cao với nhiều lõi đơn giản thay vì ít lõi phức tạp?
  • Mô hình thực thi một lệnh nhiều luồng là gì và các nhóm luồng (warps) hoạt động như thế nào?
  • Làm thế nào đa luồng lớn che giấu độ trễ bộ nhớ?
  • Hệ thống phân cấp bộ nhớ GPU được tổ chức như thế nào cho các khối lượng công việc song song?

Key concepts

  • bộ xử lý đa luồng (streaming multiprocessor)
  • một lệnh nhiều luồng (SIMT)
  • các nhóm luồng (warps) và khối luồng (thread blocks)
  • đa luồng lớn
  • che giấu độ trễ
  • bộ nhớ chia sẻ, toàn cục và thanh ghi
  • hợp nhất bộ nhớ
  • thiết kế hướng thông lượng

Key theories

Che giấu độ trễ thông qua đa luồng lớn
Thay vì giảm thiểu độ trễ cho một luồng, GPU duy trì hàng nghìn luồng đang hoạt động và chuyển đổi giữa các nhóm sẵn sàng bất cứ khi nào một số luồng bị đình trệ do bộ nhớ, do đó sự song song dồi dào giúp nhiều đơn vị số học bận rộn và che giấu độ trễ bộ nhớ dài.

Mechanisms

Một GPU bao gồm nhiều bộ xử lý đa luồng, mỗi bộ thực thi các nhóm luồng (warps) đồng bộ theo mô hình SIMT. Các luồng được tổ chức thành các khối chia sẻ bộ nhớ trên chip nhanh và đồng bộ cục bộ. Phần cứng lập lịch nhiều nhóm luồng và chuyển đổi giữa chúng với chi phí gần như bằng không, vì vậy khi một nhóm luồng chờ bộ nhớ thì một nhóm khác chạy, giữ cho các đơn vị số học bận rộn; các mẫu truy cập bộ nhớ hợp nhất tối đa hóa việc sử dụng băng thông.

Clinical relevance

GPU đã trở thành trung tâm của điện toán hiệu năng cao và trí tuệ nhân tạo: thiết kế hướng thông lượng của chúng khiến chúng trở thành nền tảng thống trị để đào tạo và chạy các mạng thần kinh sâu, cũng như cho mô phỏng khoa học và phân tích dữ liệu. Kiến trúc của chúng thưởng cho các thuật toán song song dữ liệu và truy cập bộ nhớ hợp nhất, định hình cách viết phần mềm quan trọng về hiệu suất.

History

GPU đã phát triển từ các đường ống đồ họa chức năng cố định vào những năm 1990 thành các bộ đổ bóng có thể lập trình và sau đó là các bộ xử lý đa lõi có thể lập trình hoàn toàn. Việc giới thiệu các khung điện toán GPU đa năng vào cuối những năm 2000 đã mở ra chúng cho các khối lượng công việc khoa học và dữ liệu, và thông lượng của chúng đã biến chúng thành động cơ của kỷ nguyên học sâu từ những năm 2010 trở đi.

Debates

Tính tổng quát của GPU so với các bộ tăng tốc chuyên dụng
GPU là các công cụ thông lượng linh hoạt, nhưng các bộ tăng tốc ngày càng chuyên dụng (như các đơn vị tensor và ma trận) mang lại hiệu quả cao hơn cho các khối lượng công việc cụ thể; các nhà thiết kế cân nhắc khả năng lập trình và ứng dụng rộng rãi của GPU so với hiệu quả của phần cứng chuyên dụng.

Key figures

  • David B. Kirk
  • Wen-mei Hwu
  • John L. Hennessy
  • David A. Patterson

Related topics

Seminal works

  • hennessy2019
  • kirk2016

Frequently asked questions

Tại sao GPU lại tốt cho học sâu?
Việc đào tạo và chạy các mạng thần kinh chủ yếu bao gồm các phép toán ma trận và tensor dày đặc với sự song song dữ liệu dồi dào. Nhiều lõi và băng thông bộ nhớ cao của GPU thực hiện các phép toán này với thông lượng rất cao, vượt xa CPU đa năng trên các khối lượng công việc song song, đều đặn như vậy.
Một nhóm luồng (warp) trong thực thi GPU là gì?
Một nhóm luồng (warp) là một nhóm các luồng (thường là 32) thực thi cùng một lệnh đồng bộ theo mô hình SIMT. Việc nhóm các luồng thành các nhóm luồng cho phép phần cứng phân bổ điều khiển lệnh trên nhiều phần tử dữ liệu, mặc dù các nhánh phân kỳ trong một nhóm luồng làm giảm hiệu quả.

Methods for this concept

Related concepts