1 คะแนน โดย GN⁺ 2024-03-28 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • เป็นหน่วยประมวลผลกราฟิกแบบกำหนดเองที่สร้างขึ้นเองตั้งแต่ ฮาร์ดแวร์ไปจนถึงไดรเวอร์ เพื่อให้ใช้งานได้เหมือน GPU จริงบนพีซีสมัยใหม่
  • การใช้งานหลักสร้างบน Xilinx Zynq UltraScale+ FPGA และติดตั้งบน PCB แบบกำหนดเอง
  • เชื่อมต่อกับคอมพิวเตอร์โฮสต์ผ่าน PCIe จึงทำงานเป็น GPU ฮาร์ดแวร์จริง ไม่ใช่การทดลองซอฟต์แวร์
  • ฟีเจอร์ที่รองรับถูกปรับให้อยู่ในระดับ การ์ดจอระดับไฮเอนด์ช่วงกลางทศวรรษ 1990 โดยมีเป้าหมายเพื่อเรนเดอร์เกมยุคนั้น
  • มาพร้อม สแตกไดรเวอร์ Windows สมัยใหม่ ทำให้สามารถเรนเดอร์เกมจริงในยุคนั้นได้ด้วยเฟรมเรตที่สูงกว่าระดับเรียลไทม์

โครงสร้างฮาร์ดแวร์

  • FuryGpu เป็น GPU แบบกำหนดเองทั้งหมด ที่สร้างขึ้นตั้งแต่ต้นเพื่อใช้กับคอมพิวเตอร์สมัยใหม่
  • ลอจิกการประมวลผลกราฟิกถูกใช้งานบน Xilinx Zynq UltraScale+ FPGA
  • ติดตั้งบน PCB แบบกำหนดเอง และเชื่อมต่อกับคอมพิวเตอร์โฮสต์ผ่าน PCIe

ฟีเจอร์กราฟิกและไดรเวอร์

  • ความสามารถของฮาร์ดแวร์รองรับในระดับเทียบเท่า การ์ดจอระดับไฮเอนด์ช่วงกลางทศวรรษ 1990
  • มี สแตกไดรเวอร์ซอฟต์แวร์ Windows สมัยใหม่ให้มาด้วย จึงสามารถใช้งานเป็น GPU ในสภาพแวดล้อมจริงได้

งานที่สามารถรันได้

  • FuryGpu สามารถเรนเดอร์ เกมจริง ในยุคนั้นได้
  • ประสิทธิภาพการเรนเดอร์สามารถไปถึง เฟรมเรตที่สูงกว่าระดับเรียลไทม์

1 ความคิดเห็น

 
GN⁺ 2024-03-28
ความคิดเห็นบน Hacker News
  • ผมเป็นผู้สร้างโปรเจกต์นี้เอง จริง ๆ หวังว่ามันจะเริ่มแพร่กระจายหลังจากมีคอนเทนต์บนไซต์เพิ่มอีกสักหน่อย แต่ก็เป็นแบบนี้ไปแล้ว :)
    เพื่อตอบคำถามที่ผมถูกถามบ่อยที่สุด สักวันหนึ่งผมตั้งใจจะเปิดเผย ทั้งสแตกเป็นโอเพนซอร์ส ทั้งผังวงจร/เลย์เอาต์ PCB, HDL ทั้งหมด, ไดรเวอร์ Windows WDDM, ไดรเวอร์รันไทม์ API รวมถึง Quake ที่พอร์ตมาให้ใช้ API นั้นด้วย
    แต่ต้องจัดการประเด็นทางกฎหมายที่เกี่ยวกับงานประจำให้เรียบร้อยก่อน และต้องตัดสินใจรายละเอียดอย่างเรื่องไลเซนส์ด้วย แม้นี่จะไม่ใช่งานหลัก แต่ก็เป็นสาขาที่ใกล้เคียงกันพอสมควร จึงต้องระวัง
    คอมมิตแรกของโปรเจกต์นี้คือวันที่ 22 สิงหาคม 2021 และผมทำงานกับมันมานานกว่าสองปีครึ่งเล็กน้อยแล้ว ระหว่างทางไม่ได้เขียนบทความไว้ แต่ในเพลย์ลิสต์ YouTube FuryGpu(https://www.youtube.com/playlist?list=PL4FPA1MeZF440A9CFfMJ7...) มีวิดีโออยู่พอสมควรที่ดูความคืบหน้าโดยคร่าว ๆ ได้
    บทความบล็อกถัด ๆ ไปจะเกี่ยวกับ อินเทอร์เฟซ PCIe และน่าจะเป็นซีรีส์หลายตอน เริ่มจากผังวงจร/เลย์เอาต์ PCB ต่อไปยังการออกแบบ FPGA และไดรเวอร์ Windows แค่ได้ลองเขียนบทความเรื่อง Texture Unit หนึ่งบทความ ก็ทำให้ผมนับถือคนที่เขียนบทความเทคนิคแบบนี้เป็นประจำมากขึ้นอีก
    • ผมติดตามอัปเดตบน Discord แบบค่อนข้างสม่ำเสมอ เห็นแล้วเจ๋งมากที่โปรเจกต์มาได้ไกลถึงตรงนี้ ขณะเดียวกันก็แอบท้อหน่อย ๆ เพราะโปรเจกต์ FPGA ของผมเองคืบหน้าน้อยกว่าในช่วงเวลาเดียวกัน และรอให้มีการเขียนสรุปออกมาอยู่
    • ลองค้นหา Xilinx Zynq UltraScale+ แล้วดูเหมือนค่อนข้างแพง แน่นอนว่าหลายคนก็ใช้เงินหลายพันดอลลาร์หรือมากกว่านั้นกับงานอดิเรก ถ้ามีเงินก็ไม่ใช่ปัญหา แต่สงสัยว่านี่คือ ฮาร์ดแวร์เป้าหมายสุดท้าย ของโปรเจกต์หรือไม่ หรือคิดไปไกลกว่านั้นอีก
    • อยากรู้ว่าพึ่งพา ฮาร์ด IP บล็อก มากแค่ไหน สามารถพอร์ตไปยัง FPGA ของผู้ผลิตรายอื่นอย่าง Lattice ECP5 ได้ไหม? อยากรู้ด้วยว่า PCIe นั้นเขียนด้วย HDL เองโดยตรง หรือใช้ IP บล็อกเฉพาะของผู้ผลิต ถ้ามีสถิติการใช้ทรัพยากรให้ดูด้วยก็น่าจะดี
    • ในบทความ Texture Unit ดูเหมือนตาราง ROM สำหรับออฟเซ็ตที่อยู่ของ mip level จะกินพื้นที่ค่อนข้างมาก อยากรู้ว่าเคยพิจารณาใส่ ที่อยู่ฐานของ mip เป็นส่วนหนึ่งของสเปกเท็กซ์เจอร์หรือไม่
    • ถ้าอยากลองทำอะไรคล้าย ๆ กัน มีหนังสือเล่มไหนแนะนำได้บ้างไหม เช่น ต้องการแหล่งเรียนรู้การ ออกแบบบอร์ด PCB สำหรับฮาร์ดแวร์ที่เสียบผ่าน PCIe
  • อิทธิพลของซีรีส์คอมพิวเตอร์บนเบรดบอร์ดของ Ben Eater ต่ออิเล็กทรอนิกส์งานอดิเรกนั้นน่าทึ่งมาก ผมเองก็ได้รับแรงบันดาลใจคล้ายกัน และพยายามออกแบบ CPU “เรโทร” ของตัวเอง
    ผมอยากได้อะไรสักอย่างที่เสียบใช้ง่ายเหมือน 6502 แต่มีรีจิสเตอร์เพิ่มอีกสักหน่อย และมีฟีเจอร์เพิ่มอย่างการหารด้วยฮาร์ดแวร์ แต่เอาจริง ๆ มันเป็นงานที่ไม่ง่ายเลย
    สุดท้ายก็มักจะกลับไปที่ “ใช้ MCU ไปให้จบ ๆ” แล้วจากนั้นก็ชนกับ ปัญหาการสร้างกราฟิก
    • โปรเจกต์นี้ก็เริ่มจากตรงนั้นเป๊ะ ๆ หลังจากสร้าง คอมพิวเตอร์เบรดบอร์ด 8 บิต ของ Ben Eater แล้ว ผมก็เริ่มมองหาว่าถ้าจะทำอะไรที่น่าสนใจกว่านี้ต้องใช้อะไรบ้าง
      เพราะการทำงานความเร็วสูงจำนวนมากด้วยลอจิกเกตแยกชิ้นเพียงอย่างเดียวนั้นทำได้ยาก ผมเลยคิดว่าการเรียนรู้ว่า FPGA ทำอะไรได้บ้างน่าจะน่าสนใจกว่ามาก
    • รีจิสเตอร์สามารถอ้อมไปใช้สแตกหรือหน่วยความจำได้ ส่วนการหารก็ทำเป็นฟังก์ชันง่าย ๆ ได้ นั่นเป็นส่วนหนึ่งของความสนุกในการทำงานในระดับนั้น
      กราฟิกในตอนแรกเริ่มจาก เอาต์พุตแบบอนุกรม ก็ได้ เป็นวิธีนามธรรมปัญหาเอาไว้จนกว่าจะพร้อมรับมือ ถ้ารีดความสามารถ Arduino ให้สุด ๆ ก็ทำเป็นการ์ดกราฟิก VGA ขั้นพื้นฐานมาก ๆ ได้ [1] ESP32 to VGA ง่ายกว่า และยังมีคีย์บอร์ดกับเมาส์ให้ด้วย [2]
      [1] https://www.instructables.com/Arduino-Basic-PC-With-VGA-Outp...
      [2] https://www.aliexpress.us/item/1005006222846299.html
    • ผมกำลังจะเสนอ Parallax Propeller โดยเฉพาะรุ่นแรกที่มาในฟอร์ม DIP แต่จริง ๆ แล้วมันซับซ้อนกว่าในการเขียนโปรแกรมมาก และประสิทธิภาพก็แรงกว่ามากด้วย ถึงจุดนั้นดู ESP32 น่าจะดีกว่า และสุดท้ายก็กลายเป็น “ใช้ MCU ไปเลย” อยู่ดี :)
      เอาต์พุตวิดีโอเป็นปัญหาใหญ่เพราะ แบนด์วิดท์ ที่จำเป็นสำหรับเอาต์พุตดิจิทัล ถ้าเป็นเอาต์พุตคอมโพสิตหรือ VGA อาจยังทำได้ด้วยชิปที่หาได้ง่าย ใน Commander X16 รุ่นล่าสุดเลือกใช้ FPGA เพื่อแก้ปัญหานี้
    • ผมนึกถึงตัวอย่างอื่นที่ได้รับความนิยมขนาดนี้ไม่ค่อยออก ช่วงหนึ่งห่างหายไป แล้วเมื่อไม่นานมานี้เริ่มกลับมาอัปวิดีโอค่อนข้างสม่ำเสมออีกครั้ง และมีผู้ชมระดับหลักแสนต้น ๆ
      คนที่ดูวิดีโอจนจบจริง ๆ น่าจะน้อยกว่า 100,000 คน และในจำนวนนั้นคนที่ลงมือทำอะไรเองคงยิ่งน้อยกว่านั้นอีก สำหรับยุคนี้ อิเล็กทรอนิกส์งานอดิเรก ให้ความรู้สึกว่าเล็กกว่าที่คิด
    • ตอนดูเรื่องกราฟิกบน MCU ผมผิดหวังเมื่อรู้ว่า NeoChrom GPU ขนาดเล็กที่อยู่ในชิ้นส่วน STM32 รุ่นใหม่ไม่ได้มีเอกสารครบถ้วน ในอดีต STM32 มักไม่ใส่กล่องดำไว้ในชิป แต่ดูเหมือนว่านี่น่าจะเป็น IP บล็อกที่ไลเซนส์มาจากบุคคลที่สาม
  • เจ๋งดี บล็อก hello ช่วยให้เข้าใจเจตนาของผู้สร้าง: https://www.furygpu.com/blog/hello
    อ่านแล้วดูเหมือนว่าเหนือสิ่งอื่นใดมันเป็นโปรเจกต์งานอดิเรกที่ทำเพื่อความสนุก และน่าจะเขียนบทความจำนวนมากต่อจากนี้ว่าเขาสร้างมันอย่างไร
    สิ่งที่น่าประทับใจเป็นพิเศษคือ ทั้งสแตก ทำงานได้จริง ไดรเวอร์ Windows ใช้กราฟิก API แบบกำหนดเอง และ Quake รันอยู่บนนั้น น่าเสียดายที่ไม่มีการรองรับ DX/GL แต่ก็เข้าใจได้เต็มที่ว่าทำไมถึงเลือกเส้นทาง API แบบกำหนดเอง
    สงสัยว่าจะเปิดเผยดีไซน์เป็นโอเพนซอร์สหรือไม่
    • การเพิ่มฟีเจอร์ที่จำเป็นสำหรับการรองรับ D3D ขั้นพื้นฐานต้องใช้ความพยายามมาก และผมกำลังประเมินจริง ๆ ว่าด้านประสิทธิภาพแล้วอะไรเป็นไปได้บ้าง น่าเสียดายที่แนวโน้มดูไม่ค่อยดี
      ไม่ใช่แค่ปัญหาเรื่อง “เชดเดอร์” เท่านั้น แม้แต่ window manager ของ OS ก็มีข้อกำหนดค่อนข้างมากถึงจะทำงานได้ ผู้เล่นทั่วไปในวงการนี้อย่าง AMD, Nvidia, Intel, Imagination และรายอื่น ๆ ล้วน ค่อย ๆ สั่งสมขึ้นมาบนเทคโนโลยีที่พัฒนามากว่า 20 ปี
  • เป็นโปรเจกต์ในฝันของผมเลย

ตลอด 1 ปีที่ผ่านมา ผมทำงานกับ GPU ที่เน้น 2D สำหรับไมโครคอนโทรลเลอร์ที่มีข้อจำกัดด้าน I/O สูง (https://github.com/KallDrexx/microgpu) ทำให้สามารถเรนเดอร์อินเทอร์เฟซผู้ใช้ลงบนจอแสดงผลขนาดใหญ่ได้ แม้จะเป็นอุปกรณ์ SPI ที่ช้า และงานนี้ก็น่าสนใจมาก
แต่พอเห็นข้อจำกัดของ pipeline ของโปรเซสเซอร์ ก็คิดมาตลอดว่าถ้าใช้ FPGA น่าจะทำให้เร็วขึ้นได้ ช่วงหลังได้ FPGA ราคาถูกมาสองสามตัว เลยเริ่มเรียนรู้เพื่อจะลองเปลี่ยน microgpu ที่ใช้ ESP32 ให้เป็นแบบใช้ FPGA
ด้วยข้อจำกัดเรื่องลูก ๆ และเวลาว่าง ก็ไม่รู้ว่าจะไปถึงระดับนี้ได้ไหม แต่แค่ทำได้ 1 ใน 100 ของระดับนี้ก็ยังอยากลอง

  • คุณคงรู้อยู่แล้ว แต่สำหรับคนอื่น ๆ ที่สงสัยเส้นทางนี้ ขอพูดว่า สำหรับการใช้งานแบบนี้ การจำกัดตัวเองให้ใช้ FPGA ที่มี ทรานซีฟเวอร์แบนด์วิดท์สูงเฉพาะทาง นั้นคุ้มค่าอย่างชัดเจน
    แค่สัญญาณ RGB 1080p 60Hz “พื้นฐาน” ก็ต้องประมวลผลสัญญาณความถี่สูงที่รับมือด้วยลอจิก FPGA ล้วน ๆ ได้ยากมากแล้ว
  • pipeline ดูย้อนยุค แต่ก็ดีกว่าไม่มีมาก
    แทบไม่มี GPU ฮาร์ดแวร์เปิด ที่พอพูดถึงได้เลย ทั้งนี้ขึ้นอยู่กับไลเซนส์ด้วย แต่ผมหาข้อมูลไม่เจอ และนี่อาจเป็นกรณีแรกและเป็นจุดเริ่มต้นของงานต่อ ๆ ไปได้
    • มี GPU ประเภทคล้ายกันแบบนี้ด้วย
      https://github.com/asicguy/gplgpu
    • แน่นอนว่าขึ้นอยู่กับนิยามของคำว่า “เปิด” เท่าที่ผมทราบ ไม่มี ทูลเชนโอเพนซอร์ส สำหรับ FPGA ที่ค่อนข้างใหม่ ดังนั้นเมื่อต้องแก้ไขจริง ๆ ก็ยังถูกผูกกับเครื่องมือกรรมสิทธิ์ ซึ่งน่าจะต้องจ่ายเงินอยู่ดี ถ้าต้องการอะไรที่ใหญ่กว่า iCE40 UP5k ก็แทบไม่มีทางเลือก
    • Ticket2Ride Number9 เป็น GPU แบบฟังก์ชันคงที่ ในช่วงปลายทศวรรษ 1990 และถูกเปิดซอร์สทั้งหมดภายใต้ GPL
    • ขึ้นอยู่กับว่าคุณมองว่า “GPU” คืออะไร
      https://github.com/schlae/graphics-gremlin เป็นอะแดปเตอร์ที่เข้ากันได้กับ MDA/CGA
      https://github.com/OmarMongy/VGA เป็น VGA core
      https://github.com/archlabo/Frix เป็น SoC ที่เข้ากันได้กับ IBM PC แบบครบถ้วนซึ่งรวม VGA ด้วย
    • ยังมี Nyuzi ด้วย ฝั่งนี้เน้น GPU เอนกประสงค์ มากกว่า: https://github.com/jbush001/NyuziProcessor แต่ผู้สร้างก็เคยทดลองรันกราฟิก 3D ด้วย
  • ไม่น่าเชื่อว่านี่คือทางเลือกที่ใกล้เคียงที่สุดกับ GPU แยกขนาดเล็ก ที่เรามีอยู่ ไม่มีของแบบ GPU ฟอร์มแฟกเตอร์ M.2 เลย
    สิ่งที่ต้องการก็แค่ GPU M.2 แบบแยกหนึ่งตัว ประสิทธิภาพพอ modest ก็ได้ แค่ระดับ GPU ในตัวอย่าง Intel UHD Graphics, AMD Radeon, Qualcomm Adreno ก็พอ
    มีไอเดียผลิตภัณฑ์ฝังตัวขนาดเล็กที่ต้องการการคำนวณและเครือข่ายเยอะ แต่ต้องการความสามารถกราฟิกน้อยมาก NXP Layerscape LX2160A [1] เกือบจะสมบูรณ์แบบแล้ว แต่ต้องล้มเลิกไปเพราะไม่มี GPU ในตัว แค่ต้องการ GPU เล็ก ๆ เท่านั้น
    [1]: https://www.nxp.com/products/processors-and-microcontrollers...
    • มี M.2 GPU อย่างน้อยหนึ่งตัวที่ Asrock Rack ทำขึ้นโดยใช้คอนโทรลเลอร์ Silicon Motion SM750 ผลิตภัณฑ์ฟอร์มแฟกเตอร์ mPCIe ก็มีในลักษณะคล้ายกัน
      ประสิทธิภาพเทียบกับ GPU ในตัวสมัยใหม่ไม่ได้เลย GPU ในตัวสามารถใช้หน่วยความจำระบบ แคช และงบพลังงานทั้งหมดได้ แต่อุปกรณ์ M.2 ธรรมดาไม่มีสิ่งเหล่านั้น แม้แต่ GPU PCIe ระดับล่าง ๆ อย่างการ์ดสล็อตเดียวแบบครึ่งความยาว/ครึ่งความสูง ก็ยังยากที่จะเหนือกว่า GPU ในตัวที่ดี และจะมีความหมายก็ต่อเมื่อจำเป็นต้องมีฟังก์ชันแสดงผลพื้นฐานจริง ๆ
    • แล้ว MXM GPU ที่เคยอยู่ในแล็ปท็อปเกมมิงล่ะ? รู้ว่ามาตรฐานนี้เฉพาะกลุ่มมากจึงแพง บน eBay 3080M มือสองอยู่ราว 400 ดอลลาร์ แต่ก็มีอยู่จริง และสามารถแปลงเป็น PCIe แล้วต่อไปยัง M.2 ได้ด้วย
    • พลังงานอาจต่ำเกินไป แต่ก็มีแบบนี้: https://www.matrixorbital.com/ftdi-eve
  • เป็นโปรเจกต์ที่เจ๋งมาก และดีใจที่ได้เห็นงานในด้านนี้มากขึ้น
    อีกสิ่งที่น่าดูควบคู่กันคือ โปรเจกต์ Vortex ของ Georgia Tech [1] ดูเหมือนเป็นแนวทางที่มองไปอนาคต มากกว่าจะย้อนทำอดีตของการออกแบบ GPU แบบฟังก์ชันคงที่ซ้ำ ๆ แกนหลักคือคอมพิวเตอร์ที่ขนานสูงบนพื้นฐาน RISC-V และมีส่วนขยายเพื่อจัดการงาน GPU ได้ดีขึ้น
    บอร์ดที่รันได้จริงราคาหลายพันดอลลาร์ จึงไม่เป็นมิตรกับงานอดิเรกนัก แต่ก็เข้าถึงได้มากกว่าการพัฒนาแบบกรรมสิทธิ์ปิดอย่างชัดเจน เมื่อไม่กี่เดือนก่อนก็มีรีลีส 2.0 ออกมาด้วย
    [1]: https://vortex.cc.gatech.edu/
  • ดูเป็นความสำเร็จที่ยอดเยี่ยมจริง ๆ อยากเห็นรูปอุปกรณ์จริง ยังสับสนนิดหน่อยว่าใช้ โมดูล FPGA ตัวไหน
    ในบล็อกพูดถึง Xilinx Kria SoM แต่พอตามลิงก์ไปดูสเปกโมดูล ดูเหมือนข้างในเป็น ARM SoC ไม่ใช่ Xilinx FPGA ผมอาจพลาดอะไรไปเพราะไม่คุ้นกับโลก FPGA ก็ได้
    https://www.amd.com/en/products/system-on-modules/kria/k26/k...

อย่างที่กล่าวไว้ในส่วนอื่นของเธรดนี้ Kria SoM เป็นโครงสร้างที่มีทั้ง FPGA fabric และคอร์ ARM แบบฮาร์ดที่ทำหน้าที่ควบคุม นอกจากตอนนั้นจะหาซื้อได้ และบอร์ดพัฒนา Kria ก็ถูกมากราว 350 ดอลลาร์แล้ว อุปกรณ์เหล่านี้ยังมีสิ่งอย่าง hard DisplayPort IP ที่ผูกกับคอร์ ARM ทำให้สามารถโยนงานอย่างเอาต์พุตวิดีโอและเสียงไปให้เฟิร์มแวร์จัดการได้
เวอร์ชันก่อนหน้าของโปรเจกต์นี้รันบน Zynq 7020 และตอนนั้นต้องเขียนส่วนที่เกี่ยวกับ HDMI เอง แม้จะไม่ซับซ้อนมาก แต่ก็กินลอจิกค่อนข้างเยอะ และถ้าทำให้ตั้งค่าได้ก็จะซับซ้อนขึ้นมาก

  • ไม่ใช่การเลือกระหว่าง ARM SoC กับ Xilinx FPGA แต่เป็น ชิปแบบผสม โครงสร้างคือเอา FPGA กับ SoC แบบดั้งเดิมมารวมกัน จึงไม่จำเป็นต้องใส่ MCU แบบซอฟต์คอร์ที่กินทรัพยากร FPGA อันมีค่า เพียงเพื่อจัดการงานพื้นฐาน
  • Xilinx ไม่เปิดเผยหมายเลขชิ้นส่วน FPGA ที่แน่นอนที่ใช้ใน Kria SoM อย่างไรก็ตามจากสเปกที่เปิดเผย ดูเหมือนจะตรงกับอุปกรณ์ ZU3EG-UBVA530-2L และ ZU5EV-SFVC784-2L[1] และมีเพียงตัวหลังเท่านั้นที่ รองรับ PCIe
    แค่การออกแบบบอร์ด FPGA และ bring-up ตามที่เขียนในบล็อกก็เป็นกำแพงที่สูงอยู่แล้ว หวังว่าสักวันหนึ่งจะมีการเปิดเผย schematic และซอร์ส
    [1] https://docs.amd.com/v/u/en-US/zynq-ultrascale-plus-product-...
  • บอกว่ารองรับฟังก์ชันฮาร์ดแวร์เทียบเท่าการ์ดกราฟิกระดับไฮเอนด์ช่วงกลางทศวรรษ 1990 แต่ดูเหมือนยังไม่มีใครถามคำถามนี้ เลยอยากถามว่า ความเข้ากันได้กับ VGA อยู่ในระดับไหน? เช่น เสียบเข้ากับพีซีเครื่องไหนก็ได้ที่มีสล็อต PCIe แล้วบูต DOS เพื่อเล่น DOOM ได้ไหม?
  • อยากให้ผู้สร้างลงรายละเอียดการทำงานของ อินเทอร์เฟซ PCIe ถึงผมคงไม่มีโอกาสทำงานฮาร์ดแวร์ระดับนั้น แต่ในแง่ความรู้ทั่วไป การได้ส่องดูภายในของ PCIe ก็น่าจะคุ้มค่า
    • บล็อกโพสต์ถัดไปมีกำหนดจะพูดถึงเรื่องนั้นพอดี น่าจะเป็นซีรีส์หลายตอน โดยบทความแรกจะเป็น schematic/เลย์เอาต์ PCB ถัดไปเป็นอินเทอร์เฟซ FPGA และการทดสอบ แล้วจากนั้นน่าจะเป็นไดรเวอร์ Windows
    • FPGA ที่ใช้อยู่มี PCIe แบบเนทีฟ ดังนั้นโดยทั่วไปในส่วนนี้จะได้เพียงอินเทอร์เฟซไปยังบล็อก IP กรรมสิทธิ์ของผู้ขายเท่านั้น สถานะของ อินเทอร์เฟซแบบเปิด ในโลก FPGA นั้นย่ำแย่มาก สิ่งที่ดีที่สุดที่เคยเห็นว่าเป็นโอเพนซอร์สเต็มรูปแบบก็มีแค่ประมาณ gigabit MAC
    • ใช้ https://github.com/alexforencich/verilog-pcie บน Xilinx PCIe hard IP core คอร์นี้จัดเตรียมทุกอย่างที่อยู่ต่ำกว่า transaction layer