Đường dây nóng Dịch vụ
RISC-V từng là một trong những chủ đề nóng nhất trong lĩnh vực điện toán vì kiến trúc tập lệnh (ISA) này cho phép tùy chỉnh rộng rãi và dễ hiểu, bên cạnh toàn bộ lợi ích nguồn mở, không cần giấy phép. Thậm chí còn có một dự án thiết kế GPU đa năng dựa trên RISC-V ISA và hiện chúng ta đang chứng kiến việc chuyển thư viện phần mềm CUDA của Nvidia sang nền tảng Vortex RISC-V GPGPU.
CUDA (Kiến trúc thiết bị hợp nhất điện toán) của Nvidia đại diện cho một nền tảng điện toán và giao diện lập trình ứng dụng (API) độc đáo chạy trên dòng card đồ họa của Nvidia. Khi một ứng dụng được viết để hỗ trợ CUDA, ngay khi hệ thống phát hiện ra GPU dựa trên CUDA, nó sẽ nhận được rất nhiều khả năng tăng tốc GPU của mã.
Hôm nay, các nhà nghiên cứu đã nghiên cứu cách kích hoạt hỗ trợ bộ công cụ phần mềm CUDA trên dự án GPGPU RISC-V có tên Vortex. Vortex RISC-V GPGPU được thiết kế để cung cấp GPU RISC-V trên toàn hệ thống dựa trên ISA RV32IMF. Điều này có nghĩa là lõi 32 bit có thể mở rộng quy mô từ thiết kế GPU 1 lõi đến 32 lõi. Nó hỗ trợ API đồ họa OpenCL 1.2 và ngày nay nó cũng hỗ trợ một số hoạt động CUDA.
Các nhà nghiên cứu giải thích: "...Trong dự án này, chúng tôi đề xuất và xây dựng một quy trình hỗ trợ di chuyển CUDA từ đầu đến cuối: quy trình chấp nhận mã nguồn CUDA làm đầu vào và thực thi chúng trên kiến trúc GPU RISC-V mở rộng. quy trình bao gồm một số bước: dịch mã nguồn CUDA sang NVVM IR, chuyển đổi NVVM IR sang SPIR-V IR, chuyển tiếp SPIR-V IR sang POCL để nhận tệp nhị phân RISC-V và cuối cùng thực thi trên kiến trúc tệp nhị phân GPU RISC-V mở rộng. "
Quá trình này được hiển thị trong hình trên, hiển thị tất cả các bước để thực hiện. Nói một cách đơn giản, mã nguồn CUDA được thể hiện ở định dạng biểu diễn trung gian (IR) được gọi là NVVM IR, dựa trên LLVM IR mã nguồn mở. Sau đó, nó được chuyển đổi thành IR Đại diện trung gian di động tiêu chuẩn (SPIR-V), sau đó được chuyển tiếp thành triển khai nguồn mở di động của tiêu chuẩn OpenCL, được gọi là POCL. Vì Vortex hỗ trợ OpenCL nên nó cung cấp mã được hỗ trợ và có thể thực thi mã đó mà không gặp vấn đề gì.
Để biết thêm chi tiết về quy trình phức tạp này, hãy nhấp vào bên dưới để đọc bài viết gốc. Điều quan trọng là bạn phải cảm ơn những nhà nghiên cứu này vì những nỗ lực của họ để CUDA chạy trên GPGPU RISC-V. Mặc dù hiện tại đây chỉ là một bước nhỏ nhưng nó có thể là sự khởi đầu cho một kỷ nguyên mà RISC-V được sử dụng để tăng tốc các ứng dụng điện toán, giống như dòng GPU của Nvidia ngày nay.
Đọc mở rộng: RISC-V có thể thay đổi GPU không?
Bất kỳ ai đã nghiên cứu kiến trúc GPU đều biết rằng đây là cấu trúc SIMD của bộ xử lý vector. Đó là bộ xử lý song song cực kỳ hiệu quả được sử dụng cho mọi thứ, từ chạy mô phỏng và trò chơi hay đến dạy robot cách sử dụng AI và giúp những người thông minh thao túng thị trường chứng khoán. Nó thậm chí còn kiểm tra ngữ pháp của tôi khi tôi viết bài này.
Nhưng lĩnh vực GPU đã trở thành một lĩnh vực riêng tư và công việc bên trong của nó được thực hiện bởi IP và hiệu quả nguồn cung cấp của các nhà phát triển như AMD, Intel và Nvidia. Sẽ thế nào nếu có một bộ hướng dẫn đồ họa mới được thiết kế cho đồ họa 3D và xử lý phương tiện? Vâng, có thể có.
Các lệnh mới đang được xây dựng trên tập lệnh vectơ cơ bản RISC-V. Họ sẽ thêm hỗ trợ cho các loại dữ liệu dành riêng cho biểu đồ mới dưới dạng các phần mở rộng phân lớp theo tinh thần của ISA RISC-V cốt lõi. Hỗ trợ các hoạt động vectơ, toán học trước, pixel và kết cấu cũng như bộ đệm Z/Frame. Nó có thể là ISA CPU-GPU hợp nhất. Thư viện - nhóm RISC 3D gọi nó là RV64X (Hình 1) vì các lệnh sẽ dài 64 bit (32 bit sẽ không đủ để hỗ trợ ISA mạnh mẽ).
Nhóm tuyên bố rằng động lực và mục tiêu của họ là tạo ra một thiết kế nhỏ, hiệu quả với khả năng lập trình và mở rộng tùy chỉnh. Nó phải cung cấp quyền sở hữu và phát triển IP với chi phí thấp, không cạnh tranh với các sản phẩm thương mại. Nó có thể được triển khai trên các mục tiêu FPGA và ASIC và là nguồn mở và miễn phí. Thiết kế ban đầu nhắm đến các bộ vi điều khiển công suất thấp sẽ tương thích với Khronos Vulkan và hỗ trợ các API khác (OpenGL, DirectX, v.v.).
GPU + RISC-V
Nhóm nghiên cứu cho biết: "Không cần sử dụng cơ chế gọi RPC/IPC để gửi các lệnh gọi API 3D tới không gian bộ nhớ CPU chưa sử dụng hoặc không gian bộ nhớ CPU chưa sử dụng tới không gian bộ nhớ GPU và ngược lại,"
Ưu điểm của phương pháp ISA CPU-GPU "hợp nhất" là các đường dẫn đồ họa tiêu chuẩn có thể được sử dụng trong vi mã và có thể hỗ trợ các trình đổ bóng tùy chỉnh. Thậm chí có thể bao gồm các phần mở rộng dò tia.
Thiết kế sẽ ở định dạng Vblock (từ nỗ lực của GPU Libre):
- Nó giống như VLIW (nhưng thực tế không phải vậy).
- Các khối lệnh được đặt trước bởi các dấu thanh ghi cung cấp ngữ cảnh bổ sung cho các lệnh vô hướng trong khối đó.
- Các khối con bao gồm chiều dài vectơ, góc quay, lớp phủ vectơ/chiều rộng và dự đoán.
- Tất cả điều này được thêm vào opcodes vô hướng!
- Không có mã vector (cũng không cần bất kỳ mã nào).
- Trong ngữ cảnh vectơ, nó diễn ra như sau: nếu opcode vô hướng sử dụng một thanh ghi và thanh ghi đó được liệt kê trong ngữ cảnh vectơ thì chế độ vectơ sẽ được kích hoạt.
- Việc kích hoạt làm cho vòng lặp for ở cấp độ phần cứng phát ra nhiều thao tác vô hướng liên tiếp (thay vì chỉ một).
- Người triển khai có thể tự do triển khai các vòng lặp theo bất kỳ cách nào họ muốn - SIMD, đa vấn đề, thực thi một lần; khá nhiều thứ.
Vectơ RV32-V xử lý các phép toán vectơ 8 bit, 16 bit hoặc 32 bit/phần tử của 2 đến 4 phần tử. Cũng sẽ có các hướng dẫn dành riêng cho quy trình kết xuất đồ họa 3D chung cho các điểm XYZW dấu phẩy động và cố định 64-bit và 128-bit. Pixel RGBA 8, 16, 24 và 32 bit; Texel UVW 8 bit, 16 bit cho mỗi thành phần; và cài đặt ánh sáng và vật liệu (Ia, ka, Id, kd, Is, ks, v.v.).
Vectơ thuộc tính được biểu diễn dưới dạng ma trận 4 × 4. Hệ thống ban đầu sẽ hỗ trợ ma trận 2×2 và 3×3. Hỗ trợ vectơ cũng có thể phù hợp cho các mô phỏng số sử dụng các kiểu dữ liệu số nguyên 8 bit phổ biến trong các ứng dụng AI và học máy.
Các trình rasterizer tùy chỉnh như spline, bề mặt SubDiv và các bản vá có thể được đưa vào thiết kế. Phương pháp này cũng cho phép bao gồm các giai đoạn quy trình tùy chỉnh, các giai đoạn hình học/pixel/bộ đệm khung tùy chỉnh, bộ chia nhỏ tùy chỉnh và các hoạt động phiên bản tùy chỉnh.
RV64X
-
Bộ đệm SRAM hướng dẫn/dữ liệu (32 kB)
-
Vi mã SRAM (8 kB)
-
Bộ giải mã lệnh chức năng kép (được gắn cứng cho RV32V và X; bộ giải mã lệnh vi mã hóa cho ISA tùy chỉnh)
-
ALU vectơ bốn (32-bit/ALU cố định/float)
-
Tệp đăng ký 136 bit (phần tử 1k)
-
đơn vị chức năng đặc biệt
-
đơn vị kết cấu
-
Bộ đệm khung cục bộ có thể định cấu hình
RV64X là một kiến trúc có thể mở rộng (Hình 2). Phương pháp hợp nhất của nó là mới, cũng như việc sử dụng các thanh ghi có thể định cấu hình cho các kiểu dữ liệu tùy chỉnh. Có thể sử dụng vi mã dựa trên SRAM do người dùng xác định để triển khai các tiện ích mở rộng như giai đoạn rasterizer tùy chỉnh, dò tia, thị giác máy và học máy. Một thiết kế duy nhất có thể được áp dụng cho bộ vi điều khiển đồ họa độc lập hoặc giải pháp đa lõi với các đơn vị đổ bóng có thể mở rộng.
Phần mở rộng đồ họa cho khả năng mở rộng địa chỉ RISC-V và đa ngôn ngữ. Điều này cho phép các trường hợp sử dụng cấp cao hơn dẫn đến nhiều đổi mới hơn.
cái gì tiếp theo
Thông số kỹ thuật RV64X vẫn đang trong giai đoạn phát triển ban đầu và có thể thay đổi. Một diễn đàn thảo luận đang được thành lập. Mục tiêu trước mắt là xây dựng một ví dụ triển khai bằng cách sử dụng trình mô phỏng tập lệnh. Điều này sẽ mở ra việc triển khai IP tùy chỉnh bằng cách sử dụng Source IP và FPGA được thiết kế dưới dạng các dự án nguồn mở.
Tuyên bố miễn trừ trách nhiệm: Bài viết này được sao chép từ "Quan sát ngành bán dẫn". Bài viết này chỉ thể hiện quan điểm cá nhân của tác giả, không phải quan điểm của Sắc Micro và giới chuyên môn, chỉ mang tính chất tái bản và chia sẻ, hỗ trợ Để bảo vệ quyền sở hữu trí tuệ vui lòng ghi rõ nguồn gốc và tác giả khi tái bản. Nếu có vi phạm vui lòng liên hệ với chúng tôi để xóa.




粤公网安备44030002007346号