Chương 1: Giới thiệu về Thiết kế Chip GPU
Những gì là GPU và chúng khác với CPU như thế nào
Đơn vị Xử lý Đồ họa (GPU) là các mạch điện tử chuyên dụng được thiết kế để thao tác và thay đổi bộ nhớ nhanh chóng nhằm tăng tốc độ tạo ra hình ảnh trong một bộ đệm khung hình dành cho đầu ra trên thiết bị hiển thị. GPU ban đầu được phát triển để giảm tải việc kết xuất đồ họa 2D và 3D từ CPU, cho phép hiệu suất cao hơn nhiều cho các ứng dụng yêu cầu đồ họa như trò chơi video.
Trong khi CPU được thiết kế cho việc tính toán mục đích chung và có logic điều khiển phức tạp để hỗ trợ nhiều loại chương trình khác nhau, GPU có kiến trúc song song cao với hàng nghìn lõi nhỏ hơn và hiệu quả hơn, được thiết kế để xử lý nhiều tác vụ đồng thời. Điều này khiến chúng trở nên lý tưởng cho việc kết xuất đồ họa, nơi mà các khối dữ liệu lớn có thể được xử lý song song.
Những khác biệt kiến trúc chính giữa CPU và GPU bao gồm:
- Số lượng lõi: GPU có số lượng lớn các lõi nhỏ (hàng trăm đến hàng nghìn), trong khi CPU có một vài lõi lớn và mạnh mẽ (2-64).
- Cấp bậc bộ nhớ cache: CPU có bộ nhớ cache lớn để giảm độ trễ, trong khi GPU có bộ nhớ cache nhỏ hơn và phụ thuộc nhiều hơn vào băng thông cao để bù đắp độ trễ.
- Logic điều khiển: CPU có khả năng dự đoán nhánh phức tạp và thực hiện ngoài thứ tự. GPU có logic điều khiển đơn giản hơn nhiều.
- Tập lệnh: CPU hỗ trợ nhiều loại lệnh khác nhau cho tính toán mục đích chung. Tập lệnh GPU bị giới hạn hơn và được tối ưu hóa cho đồ họa.
- Băng thông bộ nhớ: GPU có băng thông bộ nhớ rất cao (lên đến 1 TB/s) để cung cấp cho nhiều lõi của chúng. CPU có băng thông thấp hơn (50-100 GB/s).
- Hiệu suất số dấu phẩy động: GPU có khả năng xử lý số dấu phẩy động cao hơn nhiều, khiến chúng phù hợp cho các tải HPC và AI.
Tóm lại, kiến trúc song song cao của GPU cho phép chúng vượt trội trong các tác vụ liên quan đến xử lý các khối dữ liệu lớn song song, trong khi logic điều khiển tinh vi hơn của CPU khiến chúng phù hợp hơn cho tính toán mục đích chung.Đây là bản dịch tiếng Việt của tệp Markdown:
Ứng dụng chính và tầm quan trọng của GPU
Trong hơn hai thập kỷ qua, GPU đã trở thành một trong những loại công nghệ tính toán quan trọng nhất, vì cấu trúc song song cao của chúng khiến chúng hiệu quả hơn so với CPU dùng cho mục đích chung đối với các thuật toán xử lý khối dữ liệu lớn song song. Một số lĩnh vực ứng dụng chính đã thúc đẩy sự phát triển nhanh chóng của công nghệ GPU bao gồm:
Đồ họa máy tính và trò chơi
Ứng dụng phổ biến nhất của GPU là tăng tốc độ tạo ra hình ảnh trong bộ đệm khung nhằm phục vụ cho thiết bị hiển thị. GPU vượt trội trong việc thao tác đồ họa máy tính và xử lý hình ảnh, và cấu trúc song song cao của chúng khiến chúng hiệu quả hơn so với CPU dùng cho mục đích chung đối với các thuật toán xử lý khối dữ liệu lớn song song. Chúng là thành phần tiêu chuẩn trong các máy chơi game hiện đại và máy tính chơi game.
Tính toán hiệu suất cao (HPC)
Khả năng xử lý song song của GPU khiến chúng phù hợp với các ứng dụng tính toán khoa học liên quan đến xử lý các tập dữ liệu rất lớn bằng các thuật toán song song. GPU đã được áp dụng rộng rãi trong các siêu máy tính và cụm máy tính HPC, nơi chúng hoạt động cùng với CPU để tăng tốc các tải công việc song song cao như dự báo thời tiết, mô phỏng động học phân tử và phân tích địa chấn.
Trí tuệ nhân tạo và học máy
Sức mạnh xử lý song song của GPU đã đóng vai trò quan trọng trong sự phát triển nhanh chóng của học sâu và trí tuệ nhân tạo trong những năm gần đây. Việc huấn luyện các mạng nơ-ron sâu phức tạp yêu cầu một lượng lớn năng lực tính toán, và GPU đã trở thành nền tảng được lựa chọn để huấn luyện các mô hình trí tuệ nhân tạo quy mô lớn do khả năng thực hiện hiệu quả các phép nhân ma trận, là cốt lõi của các thuật toán học sâu. Tất cả các nền tảng trí tuệ nhân tạo đám mây và siêu máy tính dùng cho trí tuệ nhân tạo đều sử dụng GPU.Tìm kiếm điện tử ngày nay phụ thuộc rất nhiều vào GPU.
Khai thác tiền điện tử
GPU cũng đã được sử dụng rộng rãi để khai thác tiền điện tử, vì khả năng xử lý song song của chúng phù hợp với các thuật toán băm mật mã được sử dụng trong các tiền điện tử dựa trên chứng minh công việc như Bitcoin. Các GPU cao cấp từ AMD và Nvidia rất được ưa chuộng trong cơn sốt tiền điện tử năm 2017.
Tính toán gia tốc và AI cạnh
Với sự chậm lại của Định luật Moore, đã có một xu hướng lớn hướng tới tính toán gia tốc, dị chủng, với các chip gia tốc chuyên dụng như GPU hoạt động cùng với CPU để tăng tốc các tải lượng đòi hỏi. GPU cũng đang được sử dụng để mang các khả năng AI đến các thiết bị cạnh như điện thoại thông minh, loa thông minh và hệ thống ô tô. Các SoC di động hiện nay thường có GPU tích hợp được sử dụng cho cả đồ họa và tăng tốc các tải lượng AI.
Sự song song hóa và băng thông bộ nhớ cao của GPU đã khiến chúng trở thành một trong những nền tảng tính toán quan trọng nhất ngày nay, với các ứng dụng vượt xa đồ họa máy tính. Khi chúng ta đạt đến giới hạn của các bộ xử lý sử dụng chung, các chip chuyên dụng như GPU, FPGA và gia tốc AI đang trở thành những động cơ tính toán quan trọng của tương lai.
Bức tranh của các bộ gia tốc tính toán
Khi các cải thiện về hiệu suất từ các CPU sử dụng chung đã chậm lại trong những năm gần đây, đã có một xu hướng gia tăng các chip gia tốc chuyên dụng có thể tăng tốc các tải lượng cụ thể. GPU là một trong những ví dụ nổi bật nhất về các bộ gia tốc, nhưng cũng có một số danh mục quan trọng khác:
Mảng cổng lập trình được (FPGA)
FPGA là các thiết bị bán dẫn dựa trên một ma trận các khối logic có thể cấu hình (CLB) được kết nối thông qua các liên kết có thể lập trình. FPGA có thể được lập trình lại để đáp ứng các yêu cầu ứng dụng hoặc chức năng mong muốn sau khi sản xuất, cung cấp một giải pháp linh hoạt hơn so với ASIC. Chúng thường được sử dụng trong hàng không vũ trụ và quốc phòng, nguyên mẫu ASIC, hình ảnh y tếĐây là bản dịch tiếng Việt của tệp Markdown:
Mạch tích hợp chuyên dụng (ASIC)
ASIC là các mạch tích hợp được tùy chỉnh cho một mục đích cụ thể, thay vì dùng cho mục đích chung như CPU. Các ASIC hiện đại thường bao gồm cả bộ xử lý 32 bit hoặc 64 bit, các khối bộ nhớ bao gồm ROM, RAM, EEPROM, bộ nhớ flash và các khối xây dựng lớn khác. ASIC thường được sử dụng trong khai thác bitcoin, gia tốc AI, truyền thông không dây 5G và các thiết bị IoT.
Gia tốc AI
Gia tốc AI là các chip chuyên dụng được thiết kế để tăng tốc các tải công việc AI, đặc biệt là huấn luyện và suy luận mạng nơ-ron. Ví dụ bao gồm Tensor Processing Units (TPU) của Google, Nervana Neural Network Processors (NNP) của Intel và một số công ty khởi nghiệp đang xây dựng chip AI từ đầu. Các chip này tận dụng toán học độ chính xác thấp, các mạch nhân ma trận hiệu quả và tích hợp chặt chẽ giữa tính toán và bộ nhớ để đạt được hiệu suất cao hơn nhiều so với GPU hoặc CPU trong các tải công việc AI.
Đơn vị xử lý thị giác (VPU)
VPU là các chip chuyên dụng được thiết kế để gia tăng tốc các tải công việc thị giác máy tính và xử lý ảnh. Chúng thường bao gồm phần cứng chuyên dụng cho các tác vụ như xử lý tín hiệu ảnh, thị giác không gian ba chiều và phát hiện đối tượng dựa trên CNN. VPU thường được sử dụng trong các ứng dụng như ADAS ô tô, máy bay không người lái, tai nghe AR/VR, camera thông minh và các thiết bị cạnh biên khác yêu cầu xử lý hình ảnh có độ trễ thấp.
Chip neuromorphic và lượng tử
Nhìn xa hơn, các chip neuromorphic cố gắng mô phỏng kiến trúc não bộ để cung cấp hiệu suất mạng nơ-ron nhanh và tiết kiệm năng lượng, trong khi các chip lượng tử tận dụng các hiệu ứng cơ học lượng tử để giải quyết một số vấn đề nhanh hơn máy tính cổ điển. Đây vẫn là các lĩnh vực nghiên cứu đang nổi lên nhưng có thể trở thành các gia tốc quan trọng trong tương lai.
Xu hướng chung trong công nghệ máy tính là hướng tới các kiến trúc chuyên dụng và sự đa dạng của các gia tốc được tích hợp cùng với các CPU dùng cho mục đích chung để tăng tốc các tải công việc cụ thể.Đây là bản dịch tiếng Việt của tệp Markdown này. Đối với mã, không dịch mã, chỉ dịch các bình luận.
Tải trọng công việc quan trọng. GPU đã tiên phong mô hình tính toán được gia tốc này và vẫn là một trong những loại gia tốc quan trọng nhất, nhưng một loạt các gia tốc khác cũng đang trở nên ngày càng quan trọng trong nhiều lĩnh vực ứng dụng.
Cơ bản về phần cứng GPU
Một GPU hiện đại bao gồm một số thành phần phần cứng chính:
Streaming Multiprocessors (SMs)
SM là khối xây dựng cơ bản của kiến trúc GPU NVIDIA. Mỗi SM chứa một tập hợp các lõi CUDA (thường từ 64 đến 128) chia sẻ logic điều khiển và bộ nhớ cache chỉ lệnh. Mỗi lõi CUDA có một đơn vị logic số học nguyên (ALU) và đơn vị số học dấu phẩy động (FPU) được ống dẫn đầy đủ. Thông thường, một chip GPU có từ 16 đến 128 SM, dẫn đến hàng nghìn lõi CUDA.
Bộ nhớ cache Texture/L1
Mỗi SM có một bộ nhớ cache texture và bộ nhớ cache L1 chuyên dụng để cải thiện hiệu suất và giảm lưu lượng truy cập bộ nhớ. Bộ nhớ cache texture được thiết kế để tối ưu hóa tính cục bộ không gian và đặc biệt hiệu quả cho các tải trọng công việc đồ họa. Bộ nhớ cache L1 xử lý các thao tác bộ nhớ (tải, lưu) và cung cấp quyền truy cập dữ liệu nhanh với độ trễ thấp.
Bộ nhớ Shared
Bộ nhớ Shared là một bộ nhớ trên chip nhanh, được chia sẻ giữa các lõi CUDA trong một SM. Nó có thể được sử dụng như một bộ nhớ cache có thể lập trình, cho phép băng thông cao hơn và quyền truy cập với độ trễ thấp hơn đến dữ liệu được sử dụng thường xuyên. Bộ nhớ Shared được chia thành các mô-đun bộ nhớ (ngân hàng) cùng kích thước, có thể được truy cập đồng thời bởi các lõi.
Bộ nhớ đăng ký
Mỗi SM có một bộ nhớ đăng ký lớn cung cấp bộ nhớ truy cập thấp độ trễ cho các toán hạng. Bộ nhớ đăng ký được chia giữa các luồng đang hoạt động trên một SM, cung cấp cho mỗi luồng một tập hợp đăng ký riêng. Truy cập một đăng ký thường mất không có chu kỳ đồng hồ bổ sung cho mỗi lệnh, nhưng có thể xảy ra độ trễ do các phụ thuộc đọc sau ghi và xung đột ngân hàng bộ nhớ đăng ký.
Bộ lập lịch Warp
Bộ lập lịch warp chịu trách nhiệm quản lý và lập lịch các warp trên một SM. Một warp là một nhóm 32 luồng chạy đồng thời trên các lõi CUDA.Đây là bản dịch tiếng Việt của tệp Markdown:
Bộ lập lịch warp chọn các warp sẵn sàng để thực thi và phân phối chúng đến các lõi, cho phép sử dụng cao và ẩn độ trễ.
Mạng Liên kết
Mạng liên kết kết nối các SM với bộ nhớ cache L2 chung và bộ điều khiển bộ nhớ của GPU. Nó thường được thực hiện dưới dạng một bộ chuyển mạch chéo cho phép nhiều SM truy cập bộ nhớ cache L2 và DRAM đồng thời.
Bộ Điều Khiển Bộ Nhớ
Các bộ điều khiển bộ nhớ xử lý tất cả các yêu cầu đọc và ghi đến DRAM của GPU. Họ chịu trách nhiệm tối ưu hóa các mẫu truy cập DRAM để tối đa hóa băng thông sử dụng. Các GPU hiện đại có giao diện DRAM rất rộng (256-bit đến 4096-bit) và hỗ trợ các công nghệ bộ nhớ băng thông cao như GDDR6 và HBM2.
Lõi RT và Lõi Tensor
Các GPU NVIDIA hiện đại cũng bao gồm các đơn vị phần cứng chuyên dụng để tăng tốc ray tracing (Lõi RT) và AI/học sâu (Lõi Tensor). Lõi RT tăng tốc việc duyệt cây phân cấp khối giới hạn (BVH) và các bài kiểm tra giao cắt tia-tam giác, trong khi Lõi Tensor cung cấp phép nhân ma trận và các phép toán tích chập với thông lượng cao.
Các thành phần phần cứng này hoạt động cùng nhau để cho phép GPU đạt được thông lượng tính toán và băng thông bộ nhớ rất cao, khiến chúng phù hợp với các tải công việc song song trong đồ họa, HPC và AI. Kiến trúc song song cao và các đơn vị phần cứng chuyên dụng của các GPU hiện đại cho phép chúng cung cấp hiệu suất cao hơn nhiều so với CPU sử dụng chung trong một số tải công việc nhất định.
Lược sử về GPU
Lịch sử của GPU có thể được truy ngược lại đến những ngày đầu của gia tốc đồ họa 3D vào những năm 1990:
-
Những năm 1990: Các bộ gia tốc 3D sớm như 3dfx Voodoo và NVIDIA RIVA TNT bắt đầu xuất hiện vào giữa những năm 1990 để giải offload việc kết xuất đồ họa 3D từ CPU. Đây là các thiết bị chức năng cố định được tối ưu hóa cho một tập hợp cụ thể các API đồ họa và thiếu khả năng lập trình.
-
1999: NVIDIA giới thiệu GeForce 256, GPU đầu tiên thực hiện phép biến đổi và chiếu sáng phần cứng (T&L) bên cạnh việc kết xuất 3D tiêu chuẩn.Vui lòng cung cấp bản dịch tiếng Việt cho tệp Markdown này. Đối với mã, không dịch mã, chỉ dịch các nhận xét. Đây là tệp: peline. Nó có thể xử lý 10 triệu đa giác mỗi giây, một cột mốc quan trọng trong hiệu suất đồ họa tiêu dùng.
-
2001: NVIDIA đã ra mắt GeForce 3, đưa vào lập trình được đỉnh và bóng điểm, mở đường cho các hiệu ứng trực quan thực tế và động hơn. Đây đánh dấu sự bắt đầu của quá trình chuyển từ đường ống dẫn đồ họa cố định sang có thể lập trình.
-
2006: Việc ra mắt NVIDIA GeForce 8800 GTX đánh dấu một bước ngoặt quan trọng, vì đây là GPU đầu tiên hỗ trợ mô hình lập trình CUDA, cho phép nhà phát triển sử dụng GPU cho các tính toán mục đích chung (GPGPU) ngoài đồ họa. Nó có 128 lõi CUDA và có thể đạt hơn 500 GFLOPS hiệu suất.
-
2008: Apple, AMD, Intel và NVIDIA đã thành lập nhóm làm việc OpenCL để phát triển một tiêu chuẩn mở cho lập trình song song trên các hệ thống dị chủ. OpenCL cung cấp một giải pháp thay thế không phụ thuộc vào nhà cung cấp so với CUDA, mặc dù CUDA vẫn là nền tảng GPGPU được sử dụng rộng rãi nhất.
-
2010: NVIDIA đã ra mắt kiến trúc Fermi, có tối đa 512 lõi CUDA, một cấu trúc bộ nhớ cache thống nhất L1/L2, hỗ trợ bộ nhớ ECC và cải thiện hiệu suất số học chính xác. Điều này khiến GPU trở nên khả thi cho một phạm vi rộng hơn các ứng dụng HPC và tính toán khoa học.
-
2016: NVIDIA giới thiệu kiến trúc Pascal với Tesla P100, có bộ nhớ HBM2 băng thông cao, tối đa 3584 lõi CUDA và lõi FP16 chuyên dụng cho học sâu. P100 có thể cung cấp hơn 10 TFLOPS hiệu suất, khẳng định GPU là nền tảng lựa chọn cho việc huấn luyện AI.
-
2018: NVIDIA ra mắt kiến trúc Turing, giới thiệu RT Cores cho ray tracing thời gian thực và Tensor Cores để tăng tốc suy luận AI. Turing đánh dấu một cột mốc quan trọng trong kiến trúc GPU, vì nó mở rộng khả năng của GPU vượt ra ngoài chỉ raster hóa và GPGPU để bao gồm các kỹ thuật kết xuất nâng cao và tăng tốc AI.
Kết luận
Trong hai thập kỷ qua, GPU đã phát triển từ bộ gia tốc đồ họa cố định chức năng thành những bộ xử lý có khả năng lập trình cao, phục vụ cho một loạt các ứng dụng từ đồ họa đến tính toán khoa học và trí tuệ nhân tạo.Đây là bản dịch tiếng Việt của tệp Markdown:
Các GPU (Đơn vị xử lý đồ họa) là những động cơ tính toán hiệu quả về năng lượng, đóng vai trò quan trọng trong một loạt ứng dụng rộng lớn, từ trò chơi và visualhóa đến tính toán hiệu suất cao và trí tuệ nhân tạo. Những đổi mới kiến trúc chính đã cho phép sự chuyển đổi này bao gồm:
- Việc giới thiệu bóng râm có thể lập trình với hỗ trợ cho phép chia nhánh và lặp
- Các kiến trúc bộ xử lý thống nhất cho phép cùng một đơn vị xử lý được sử dụng cho các tác vụ bóng râm khác nhau
- Việc bổ sung hỗ trợ cho các mô hình lập trình mục đích chung như CUDA và OpenCL
- Tăng cường hiệu quả năng lượng thông qua việc sử dụng đa luồng rộng rãi để ẩn độ trễ bộ nhớ và giữ cho các đơn vị tính toán được sử dụng
- Tiếp tục cải thiện băng thông bộ nhớ và giới thiệu các công nghệ bộ nhớ băng thông cao như GDDR6 và HBM2
- Việc kết hợp các đơn vị chức năng cố định cho quét tia và xử lý tensor để tăng tốc kết xuất và tải công việc AI
Khi nhìn về tương lai, rõ ràng là sự chuyên môn hóa và tính toán dị chủng sẽ tiếp tục là những động lực chính để cải thiện hiệu suất và hiệu quả. GPU được định vị tốt để duy trì vị trí tiên phong trong những xu hướng này, với di sản của chúng về xử lý song song hiệu quả về năng lượng và khả năng kết hợp chức năng cụ thể về miền trong khi vẫn duy trì khả năng lập trình mục đích chung. Các kỹ thuật như thiết kế dựa trên chiplet và các công nghệ đóng gói tiên tiến sẽ cho phép GPU mở rộng lên mức hiệu suất cao hơn và tích hợp thêm nhiều chức năng hơn theo thời gian.
Đồng thời, khả năng áp dụng gia tốc GPU tiếp tục tăng lên khi ngày càng nhiều tải công việc trong tính toán khoa học, phân tích dữ liệu và học máy thể hiện loại song song hạt nhỏ mà GPU thể hiện rất tốt. Với khả năng gia tốc các ứng dụng này và các ứng dụng mới nổi khác, GPU đang được định vị để đóng vai trò ngày càng quan trọng hơn trong việc thúc đẩy các bước tiến trong tính toán trong tương lai. Hiểu kiến trúc của chúng là chìa khóa để khai thác trọn vẹn tiềm năng của chúng.