ความก้าวหน้าของ Raspberry Pi 5 กับ Resizable BAR ปลดล็อกศักยภาพของ Intel GPU

ทีมชุมชน BigGo
ความก้าวหน้าของ Raspberry Pi 5 กับ Resizable BAR ปลดล็อกศักยภาพของ Intel GPU

สำหรับผู้ที่ชื่นชอบเทคโนโลยีที่กำลังผลักดันขีดจำกัดของคอมพิวเตอร์บอร์ดเดี่ยว Raspberry Pi 5 ได้กลายเป็นแพลตฟอร์มที่ไม่คาดคิดสำหรับการทดลองใช้กราฟิกการ์ดภายนอก ความก้าวหน้าล่าสุดในการรองรับ Resizable BAR นับเป็นความสำเร็จที่สำคัญ โดยเฉพาะสำหรับกราฟิกการ์ด Intel Arc แม้ว่าการนำไปใช้งานจะเผยให้เห็นทั้งความเฉลียวฉลาดของชุมชนและข้อจำกัดทางฮาร์ดแวร์ที่พวกเขากำลังก้าวข้าม

การตั้งค่าพื้นที่ทำงานที่มีการ์ดจอประสิทธิภาพสูง เน้นการทดลองใช้ GPU ภายนอกบนคอมพิวเตอร์บอร์ดเดียวอย่าง Raspberry Pi
การตั้งค่าพื้นที่ทำงานที่มีการ์ดจอประสิทธิภาพสูง เน้นการทดลองใช้ GPU ภายนอกบนคอมพิวเตอร์บอร์ดเดียวอย่าง Raspberry Pi

ความท้าทายของ Resizable BAR บนระบบ ARM

ชุมชนค้นพบว่าในขณะที่ Raspberry Pi OS ควรจะรองรับ Resizable BAR ตามทฤษฎีอยู่แล้ว แต่ไดรเวอร์ Xe ของ Intel กลับพบข้อผิดพลาดที่น่าหงุดหงิดเมื่อพยายามปรับขนาดเกินขีดจำกัดเริ่มต้นที่ 256 MB ผู้ใช้หนึ่งท่านได้ให้ความเห็นเกี่ยวกับบริบทที่กว้างขึ้นของปัญหานี้ในระบบ ARM ต่างๆ ว่า:

ARM SoC และ SBC จำนวนมากมีขนาดแผนที่หน่วยความจำ PCIe ที่เล็กอย่างไม่สมเหตุสมผล อย่าง RK3399 นี่มันเท่าไหร่ 64 MB ใช่ไหม? แม้แต่สำหรับการ์ดเน็ตเวิร์กบางรุ่นยังไม่พอ

ข้อสังเกตนี้เน้นย้ำว่าข้อจำกัดของ Raspberry Pi เป็นส่วนหนึ่งของรูปแบบที่กว้างขึ้นในระบบนิเวศ ARM SBC ซึ่งการทำแผนที่หน่วยความจำ PCIe มักจะถูกละเลยเมื่อเทียบกับระบบ x86 ที่มีการใช้งาน BIOS/UEFI ที่成熟กว่ามาก

วิธีแก้ปัญหาเทคนิคและความเฉลียวฉลาดของชุมชน

ทางออกเกิดขึ้นผ่านการดีบั๊กร่วมกันระหว่างนักพัฒนา Raspberry Pi OS และชุมชนที่กว้างขึ้น ไม่เหมือนกับพีซีทั่วไปที่สามารถเปิดใช้งาน Resizable BAR ผ่านการตั้งค่า BIOS ได้ Raspberry Pi ต้องการวิธีการที่ต้องลงมือทำมากขึ้นซึ่งเกี่ยวข้องกับพารามิเตอร์เคอร์เนล การยกเลิกการเชื่อมโยงสะพาน PCIe ด้วยตนเอง และการกำหนดค่าขนาด BAR ที่แม่นยำ

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

ขั้นตอนการกำหนดค่าที่จำเป็น

  1. เพิ่มไดรเวอร์ Xe เข้า Blacklist ใน /etc/modprobe.d/raspi-blacklist.conf
  2. เพิ่ม xe.vram_bar_size=8192 ลงใน /boot/firmware/cmdline.txt
  3. สร้างสคริปต์ปรับขนาดด้วยตนเองหรือ systemd service
  4. รีบูตและโหลดไดรเวอร์ Xe ด้วยตนเอง
  5. ตรวจสอบ dmesg เพื่อดูว่าการเริ่มต้นระบบสำเร็จหรือไม่

ความเข้ากันได้ของฮาร์ดแวร์และข้อจำกัด

การสนทนาในความคิดเห็นเผยให้เห็นข้อจำกัดทางฮาร์ดแวร์ที่น่าสนใจ โดยเฉพาะอย่างยิ่งเกี่ยวกับความสัมพันธ์ระหว่างขนาด BAR และทรัพยากรระบบที่มีอยู่ เมื่อผู้ใช้หนึ่งคนพยายามกำหนดค่า BAR ขนาด 16 GB บนโมเดล Raspberry Pi 16 GB พวกเขาพบข้อผิดพลาด no space left on device ซึ่งชี้ให้เห็นว่าขนาด BAR อาจถูกจำกัดโดยความพร้อมของแรมทางกายภาพ แทนที่จะเป็นเพียงความจุ VRAM ของการ์ดกราฟิก

อีกข้อมูลเชิงเทคนิคหนึ่งที่ปรากฏขึ้นเกี่ยวกับว่าทำไมการ์ด VRAM 12 GB ถึงขอ BAR ขนาด 16 GB: ความยาวของ BAR ต้องเป็นเลขยกกำลังสอง นี่อธิบายคำขอที่มีขนาดดูใหญ่เกินไปและเน้นย้ำถึงข้อจำกัดทางสถาปัตยกรรมที่ขับเคลื่อนความต้องการขนาดเฉพาะเหล่านี้

การแมปขนาด Resizable BAR

ค่า Bit ขนาด BAR ค่า Bit ขนาด BAR ค่า Bit ขนาด BAR
1 2MB 6 64MB 11 2GB
2 4MB 7 128MB 12 4GB
3 8MB 8 256MB 13 8GB
4 16MB 9 512MB 14 16GB
5 32MB 10 1GB 15 32GB

ระบบนิเวศ eGPU ที่กว้างขึ้นบน Raspberry Pi

ในขณะที่ความสนใจส่วนใหญ่อยู่ที่ GPU ของ Intel ความคิดเห็นระบุว่า eGPU ของ AMD มีความเสถียรมากกว่าบนแพลตฟอร์ม Raspberry Pi โดยมีแพตช์ที่เรียบง่ายกว่าและมีแนวโน้มที่จะถูกรวมเข้าในเคอร์เนลหลักมากขึ้น ความแตกต่างนี้ชี้ให้เห็นว่าโครงสร้าง GPU ที่แตกต่างกันนำเสนอความท้าทายเฉพาะตัวเมื่อปรับให้เข้ากับข้อจำกัดทางฮาร์ดแวร์ของ Raspberry Pi

ความก้าวหน้าของชุมชนแสดงถึงขั้นตอนสำคัญสู่การทำให้ Raspberry Pi เป็นแพลตฟอร์มที่ใช้งานได้จริงสำหรับเวิร์กโหลดที่ใช้การเร่งความเร็วด้วย GPU ตั้งแต่การเรียนรู้ของเครื่องไปจนถึงการเรนเดอร์กราฟิกส์ แม้ว่าข้อกำหนดในปัจจุบันที่ต้องสร้างเคอร์เนลแบบกำหนดเองและการกำหนดค่าด้วยตนเองจะหมายความว่าความสามารถนี้ยังคงอยู่ในขอบเขตของผู้ที่ชื่นชอบเทคโนโลยีสำหรับตอนนี้

หมายเหตุความเข้ากันได้ของ GPU

  • Intel Arc A750: ต้องการ BAR ขนาด 8GB ใช้ฟังก์ชัน PCIe 02:04.0
  • Intel Arc B580: ต้องการ BAR ขนาด 16GB (แต่อาจประสบปัญหาข้อจำกัดของ RAM) ใช้ฟังก์ชัน PCIe 02:02.0
  • AMD GPUs: มีรายงานว่ามีเสถียรภาพมากกว่าเมื่อใช้ kernel patches ที่เรียบง่ายกว่า
  • Pi BAR เริ่มต้น: 256MB (ไม่เพียงพอสำหรับการทำงานของ GPU สมัยใหม่)

ผลกระทบในอนาคตและแรงผลักดันของชุมชน

งานพัฒนาที่กำลังดำเนินอยู่ รวมถึงการทดสอบ pull request ที่รวมแพตช์ Linux upstream ชี้ให้เห็นว่าการรองรับ Resizable BAR อาจจะมีความราบรื่นมากขึ้นในที่สุด อย่างไรก็ตาม สถานะปัจจุบันยังต้องการให้ผู้ใช้จัดการการกำหนดค่าของพวกเขาอย่างระมัดระวัง โดยเฉพาะเมื่อสลับระหว่างยี่ห้อ GPU ที่แตกต่างกันหรือไม่ได้ใช้ eGPU เป็นประจำ

ความมุ่งมั่นของชุมชนในการแก้ไขความท้าทายที่ซับซ้อนด้านการรวมฮาร์ดแวร์นี้ แสดงให้เห็นถึงวิวัฒนาการของ Raspberry Pi จากเครื่องมือทางการศึกษาสู่แพลตฟอร์มที่สามารถรองรับอุปกรณ์ต่อพ่วงคอมพิวเตอร์ประสิทธิภาพสูงได้ แม้ว่าจะต้องใช้ความพยายามที่ขับเคลื่อนโดยชุมชนอย่างมีนัยสำคัญเพื่อให้ทุกอย่างทำงานร่วมกันอย่างราบรื่น

Resizable BAR : คุณสมบัติของ PCI Express ที่อนุญาตให้ CPU เข้าถึงหน่วยความจำ GPU ทั้งหมดได้ในครั้งเดียว แทนที่จะเป็นส่วนย่อยๆ ละ 256 MB ซึ่งช่วยปรับปรุงประสิทธิภาพโดยการลดค่าใช้จ่ายในการถ่ายโอนข้อมูล

อ้างอิง: Resizeable BAR support on the Raspberry Pi