ข่าว
ข่าว
CUDA ได้รับการปลูกถ่ายแล้ว และ GPU ที่ใช้ risc-v กำลังเล่นอยู่หรือไม่
2022-03-17 459

RISC-V เป็นหนึ่งในหัวข้อที่ร้อนแรงที่สุดในการประมวลผล เนื่องจากสถาปัตยกรรมชุดคำสั่ง (ISA) นี้ทำให้สามารถปรับแต่งได้อย่างกว้างขวางและเข้าใจง่าย นอกเหนือจากสิทธิประโยชน์แบบโอเพ่นซอร์สทั้งหมดแล้ว โดยไม่ต้องใช้ลิขสิทธิ์อีกด้วย มีแม้กระทั่งโครงการออกแบบ GPU เอนกประสงค์โดยใช้ RISC-V ISA และตอนนี้เรากำลังเห็นการย้ายไลบรารีซอฟต์แวร์ CUDA ของ Nvidia ไปยังแพลตฟอร์ม Vortex RISC-V GPGPU


CUDA (Computing Unified Device Architecture) ของ Nvidia แสดงถึงแพลตฟอร์มการประมวลผลที่เป็นเอกลักษณ์และ Application Programming Interface (API) ที่ทำงานบนกลุ่มผลิตภัณฑ์กราฟิกการ์ดของ Nvidia เมื่อเขียนแอปพลิเคชันเพื่อรองรับ CUDA ทันทีที่ระบบค้นพบ GPU ที่ใช้ CUDA ก็จะได้รับการเร่งโค้ด GPU จำนวนมาก


วันนี้ นักวิจัยได้ตรวจสอบวิธีเปิดใช้งานการสนับสนุนชุดเครื่องมือซอฟต์แวร์ CUDA ในโครงการ RISC-V GPGPU ที่เรียกว่า Vortex Vortex RISC-V GPGPU ได้รับการออกแบบมาเพื่อมอบ GPU RISC-V ทั่วทั้งระบบโดยยึดตาม RV32IMF ISA ซึ่งหมายความว่าคอร์ 32 บิตสามารถปรับขนาดการออกแบบ GPU ได้ตั้งแต่ 1 คอร์ไปจนถึง 32 คอร์ รองรับกราฟิก API OpenCL 1.2 และในปัจจุบันยังรองรับการทำงานของ CUDA บางอย่างด้วย


นักวิจัยอธิบายว่า: "...ในโครงการนี้ เราเสนอและสร้างไปป์ไลน์เพื่อรองรับการโยกย้าย CUDA แบบ end-to-end: ไปป์ไลน์ยอมรับซอร์สโค้ด CUDA เป็นอินพุตและดำเนินการบนสถาปัตยกรรม RISC-V GPU แบบขยาย ของเรา ไปป์ไลน์ประกอบด้วยหลายขั้นตอน: แปลซอร์สโค้ด CUDA เป็น NVVM IR, แปลง NVVM IR เป็น SPIR-V IR, ส่งต่อ SPIR-V IR เป็น POCL เพื่อรับไบนารี RISC-V และสุดท้ายดำเนินการกับสถาปัตยกรรมไฟล์ไบนารี RISC-V GPU แบบขยาย "



กระบวนการนี้แสดงให้เห็นในภาพด้านบน ซึ่งแสดงขั้นตอนทั้งหมดเพื่อให้ทำงานได้ กล่าวง่ายๆ ก็คือ ซอร์สโค้ด CUDA จะแสดงในรูปแบบการเป็นตัวแทนระดับกลาง (IR) ที่เรียกว่า NVVM IR โดยอิงตาม LLVM IR แบบโอเพ่นซอร์ส ต่อมาถูกแปลงเป็น Standard Portable Intermediate Representation (SPIR-V) IR ซึ่งส่งต่อไปยังการใช้งานโอเพ่นซอร์สแบบพกพาของมาตรฐาน OpenCL ที่เรียกว่า POCL เนื่องจาก Vortex รองรับ OpenCL จึงมีโค้ดที่รองรับและสามารถดำเนินการได้โดยไม่มีปัญหา


หากต้องการรายละเอียดเพิ่มเติมเกี่ยวกับกระบวนการที่ซับซ้อนนี้ คลิกด้านล่างเพื่ออ่านบทความต้นฉบับ ที่สำคัญ คุณต้องขอบคุณนักวิจัยเหล่านี้สำหรับความพยายามในการทำให้ CUDA ทำงานบน RISC-V GPGPU แม้ว่านี่จะเป็นเพียงก้าวเล็กๆ ในตอนนี้ แต่ก็อาจเป็นจุดเริ่มต้นของยุคที่ RISC-V ถูกนำมาใช้เพื่อเร่งความเร็วแอปพลิเคชันการประมวลผล เช่นเดียวกับกลุ่มผลิตภัณฑ์ GPU ของ Nvidia ในปัจจุบัน


การอ่านเพิ่มเติม: RISC-V สามารถเปลี่ยน GPU ได้หรือไม่


RISC-V สามารถจัดการธุรกรรม GPU ได้หรือไม่ นี่เป็นงานที่อยู่ระหว่างดำเนินการซึ่งสามารถทำได้โดยการสร้างการออกแบบขนาดเล็กที่มีประสิทธิภาพในพื้นที่พร้อมความสามารถในการตั้งโปรแกรมและความสามารถในการปรับขนาดแบบกำหนดเอง  
  ใครก็ตามที่เคยศึกษาสถาปัตยกรรม GPU จะรู้ดีว่านี่คือโครงสร้าง SIMD ของโปรเซสเซอร์เวกเตอร์ เป็นโปรเซสเซอร์แบบขนานประสิทธิภาพสูงพิเศษที่ใช้กับทุกสิ่งตั้งแต่การจำลองและเกมที่ยอดเยี่ยมไปจนถึงการสอนหุ่นยนต์ถึงวิธีรับ AI และช่วยเหลือคนฉลาดในการควบคุมตลาดหุ้น มันยังตรวจสอบไวยากรณ์ของฉันในขณะที่ฉันเขียนสิ่งนี้ด้วย  
  แต่สนาม GPU กลายเป็นสนามส่วนตัว และงานภายในของมันทำโดย IP และ มีประสิทธิภาพ แหล่งข้อมูลจากนักพัฒนา เช่น AMD, Intel และ Nvidia จะเป็นอย่างไรหากมีชุดคำสั่งกราฟิกชุดใหม่ที่ออกแบบมาสำหรับกราฟิก 3 มิติและการประมวลผลสื่อ ก็คงมี  
  คำสั่งใหม่กำลังถูกสร้างขึ้นบนชุดคำสั่งเวกเตอร์พื้นฐาน RISC-V พวกเขาจะเพิ่มการรองรับประเภทข้อมูลเฉพาะกราฟใหม่เป็นส่วนขยายแบบเลเยอร์ตามจิตวิญญาณของ RISC-V ISA หลัก รองรับเวกเตอร์ คณิตศาสตร์ก่อนหน้า พิกเซลและพื้นผิว และการดำเนินการบัฟเฟอร์ Z/Frame อาจเป็น CPU-GPU ISA ที่หลอมรวม ไลบรารี - กลุ่ม RISC 3D เรียกมันว่า RV64X (รูปที่ 1) เนื่องจากคำสั่งจะมีความยาว 64 บิต (32 บิตจะไม่เพียงพอที่จะรองรับ ISA ที่แข็งแกร่ง)  
 

รูปที่ 1 โปรเซสเซอร์กราฟิก RV64X มี DSP หลายตัว นอกเหนือจากหน่วยพื้นผิวเฉพาะและบล็อกฟังก์ชัน
 
  กลุ่มระบุว่าแรงจูงใจและเป้าหมายของพวกเขาคือการสร้างการออกแบบขนาดเล็กที่มีประสิทธิภาพพร้อมความสามารถในการตั้งโปรแกรมและความสามารถในการขยายแบบกำหนดเอง ควรจัดให้มีการเป็นเจ้าของและการพัฒนาทรัพย์สินทางปัญญาที่มีต้นทุนต่ำ ไม่ใช่แข่งขันกับผลิตภัณฑ์เชิงพาณิชย์ สามารถนำไปใช้กับเป้าหมาย FPGA และ ASIC และเป็นโอเพ่นซอร์สฟรี การออกแบบดั้งเดิมมุ่งเป้าไปที่ไมโครคอนโทรลเลอร์พลังงานต่ำที่จะเข้ากันได้กับ Khronos Vulkan และรองรับ API อื่นๆ (OpenGL, DirectX ฯลฯ)  
               

GPU + RISC-V


ฮาร์ดแวร์เป้าหมายจะมีหน่วยการทำงานของ GPU และคอร์ RISC-V การรวมกันนี้มาในรูปแบบของโปรเซสเซอร์ซึ่งมีการเข้ารหัสคำสั่ง 64 บิตเป็นคำสั่งสเกลาร์ ประเด็นก็คือคอมไพลเลอร์จะสร้างคำสั่ง SIMD จาก opcodes สเกลาร์ที่นำหน้า คุณสมบัติอื่นๆ ได้แก่ ปัญหาที่ไม่แน่นอน แบ็กเอนด์ SIMD ที่ใช้เพรดิเคต; การติดตามสาขา ข้อยกเว้นที่ชัดเจน และส่วนหน้าของเวกเตอร์ การออกแบบจะประกอบด้วยเวอร์ชันจุดคงที่ 16 บิต และเวอร์ชันจุดลอยตัว 32 บิต แบบแรกเหมาะสำหรับการใช้งาน FPGA  
  ทีมงานกล่าวว่า: "ไม่จำเป็นต้องใช้กลไกการเรียก RPC/IPC เพื่อส่งการเรียก 3D API ไปยังพื้นที่หน่วยความจำ CPU ที่ไม่ได้ใช้ หรือพื้นที่หน่วยความจำ CPU ที่ไม่ได้ใช้ไปยังพื้นที่หน่วยความจำ GPU และในทางกลับกัน "  
  ข้อดีของแนวทาง ISA CPU-GPU แบบ "หลอมรวม" คือไปป์ไลน์กราฟิกมาตรฐานสามารถใช้ในไมโครโค้ดได้ และสามารถรองรับเชเดอร์แบบกำหนดเองได้ สามารถรวมส่วนขยาย Ray Tracing ได้ด้วย  
  การออกแบบจะอยู่ในรูปแบบ Vblock (จากความพยายามของ Libre GPU):  
 
  • มันเหมือนกับ VLIW (แต่ไม่ใช่จริงๆ)
  • บล็อกคำสั่งนำหน้าด้วยเครื่องหมายลงทะเบียนที่ให้บริบทเพิ่มเติมสำหรับคำสั่งแบบสเกลาร์ภายในบล็อกนั้น
  • บล็อกย่อยประกอบด้วยความยาวเวกเตอร์ การหมุน การซ้อนทับเวกเตอร์/ความกว้าง และการทำนาย
  • ทั้งหมดนี้ถูกเพิ่มเข้าไปใน opcodes แบบสเกลาร์!
  • ไม่มี opcodes เวกเตอร์ (และไม่จำเป็น)
  • ในบริบทเวกเตอร์ จะเป็นดังนี้: หาก opcode แบบสเกลาร์ใช้รีจิสเตอร์ และรีจิสเตอร์นั้นแสดงอยู่ในบริบทเวกเตอร์ โหมดเวกเตอร์จะถูกเปิดใช้งาน
  • การเปิดใช้งานทำให้ระดับฮาร์ดแวร์ for loop ปล่อยการดำเนินการสเกลาร์ติดต่อกันหลายครั้ง (แทนที่จะเป็นเพียงการดำเนินการเดียว)
  • ผู้นำไปใช้มีอิสระในการนำลูปไปใช้ในลักษณะใดก็ได้ที่ต้องการ - SIMD, หลายประเด็น, ดำเนินการครั้งเดียว; เกือบทุกอย่าง

  เวกเตอร์ RV32-V จัดการการทำงานของเวกเตอร์ 8 บิต, 16 บิต หรือ 32 บิต/องค์ประกอบ ของ 2 ถึง 4 องค์ประกอบ นอกจากนี้ยังมีคำแนะนำเฉพาะสำหรับไปป์ไลน์การเรนเดอร์กราฟิก 3D ทั่วไปสำหรับจุด XYZW แบบคงที่และลอยตัวแบบ 64 บิตและ 128 บิต พิกเซล RGBA 8-, 16-, 24- และ 32 บิต; 8 บิต, 16 บิต UVW texels ต่อส่วนประกอบ; และการตั้งค่าแสงและวัสดุ (Ia, ka, Id, kd, Is, ks ฯลฯ)  
  เวกเตอร์แอตทริบิวต์แสดงเป็นเมทริกซ์ขนาด 4×4 ระบบจะรองรับเมทริกซ์ 2×2 และ 3×3 โดยกำเนิด การสนับสนุนเวกเตอร์ยังอาจเหมาะสำหรับการจำลองเชิงตัวเลขโดยใช้ประเภทข้อมูลจำนวนเต็ม 8 บิตทั่วไปในแอปพลิเคชัน AI และการเรียนรู้ของเครื่อง  
  สามารถรวมแรสเตอร์ไรเซอร์แบบกำหนดเอง เช่น เส้นโค้ง พื้นผิว SubDiv และแพตช์ในการออกแบบได้ วิธีนี้ยังช่วยให้สามารถรวมขั้นตอนไปป์ไลน์ที่กำหนดเอง ขั้นตอนเรขาคณิต/พิกเซล/เฟรมบัฟเฟอร์ที่กำหนดเอง ตัวแบ่งย่อยที่กำหนดเอง และการดำเนินการสร้างอินสแตนซ์ที่กำหนดเองได้  
             

RV64X


การใช้งานอ้างอิง RV64X ประกอบด้วย:
 
 
  • คำแนะนำ/แคชข้อมูล SRAM (32 kB)

  • ไมโครโค้ด SRAM (8 kB)

  • ตัวถอดรหัสคำสั่งฟังก์ชั่นคู่ (เดินสายสำหรับ RV32V และ X ตัวถอดรหัสคำสั่งไมโครโค้ดสำหรับ ISA แบบกำหนดเอง)

  • Quad-เวกเตอร์ ALU (32 บิต/ALU-คงที่/ลอย)

  • ไฟล์รีจิสเตอร์ 136 บิต (องค์ประกอบ 1k)

  • หน่วยฟังก์ชั่นพิเศษ

  • หน่วยพื้นผิว

  • framebuffer ท้องถิ่นที่กำหนดค่าได้


  RV64X เป็นสถาปัตยกรรมที่ปรับขนาดได้ (รูปที่ 2) วิธีการฟิวชันเป็นวิธีใหม่ เช่นเดียวกับการใช้รีจิสเตอร์ที่กำหนดค่าได้สำหรับชนิดข้อมูลที่กำหนดเอง ไมโครโค้ดที่ใช้ SRAM กำหนดโดยผู้ใช้สามารถใช้เพื่อปรับใช้ส่วนขยาย เช่น ระยะแรสเตอร์ไรเซอร์ที่กำหนดเอง การติดตามรังสี แมชชีนวิชัน และการเรียนรู้ของเครื่อง การออกแบบเดียวสามารถนำไปใช้กับไมโครคอนโทรลเลอร์กราฟิกแบบสแตนด์อโลนหรือโซลูชันแบบมัลติคอร์พร้อมหน่วยเชเดอร์ที่ปรับขนาดได้  
 

รูปที่ 2 RV64X สามารถปรับขนาดได้ตั้งแต่การออกแบบระดับล่างธรรมดา (ซ้าย) ไปจนถึงโซลูชันแบบมัลติคอร์ (ขวา)  
  ส่วนขยายกราฟิกสำหรับ RISC-V ระบุถึงความสามารถในการปรับขนาดและการพูดได้หลายภาษา สิ่งนี้ทำให้เกิดกรณีการใช้งานในระดับที่สูงขึ้นซึ่งนำไปสู่นวัตกรรมที่มากขึ้น  
             

อะไรต่อไป


ข้อมูลจำเพาะของ RV64X ยังอยู่ในช่วงเริ่มต้นของการพัฒนาและอาจมีการเปลี่ยนแปลงได้ กระดานสนทนากำลังถูกสร้างขึ้น เป้าหมายทันทีคือการสร้างตัวอย่างการใช้งานโดยใช้ตัวจำลองชุดคำสั่ง ซึ่งจะเปิดขึ้นโดยใช้การใช้งาน Source IP และ FPGA ของ IP แบบกำหนดเองที่ออกแบบมาเป็นโครงการโอเพ่นซอร์ส





ข้อจำกัดความรับผิดชอบ: บทความนี้ทำซ้ำจาก "การสังเกตอุตสาหกรรมเซมิคอนดักเตอร์" บทความนี้เป็นเพียงความคิดเห็นส่วนตัวของผู้เขียน ไม่ใช่ความคิดเห็นของ Sac Micro และอุตสาหกรรม สำหรับการพิมพ์ซ้ำและแบ่งปัน การสนับสนุน เพื่อปกป้องสิทธิ์ในทรัพย์สินทางปัญญา โปรดระบุแหล่งที่มาดั้งเดิมและผู้แต่งสำหรับการพิมพ์ซ้ำ หากมีการละเมิดใด ๆ โปรดติดต่อเราเพื่อลบออก

whatsapp

สายด่วนบริการ

tel: +86 755 83044319

WhatsApp

Whatsapp:+8618073002950