jbush001 / NyuziProcessor

GPGPU microprocessor architecture
Apache License 2.0
2.01k stars 354 forks source link

Questions related to integration. #206

Open Vegg-development opened 1 year ago

Vegg-development commented 1 year ago

This is very great thing for a learners indeed. Though there are some things that i want to understand, hope i am asking right questions.

1) Does this FPGA design runs on standalone FPGA or it requires a host PC ( MAC, Intel, etc. ) 2) If it integrates both CPU and GPU in one design only, what kind of CPU architecture it's using? ( RICS-V, etc. ) 3) If i want to just design a GPU and integrate with host processor like ( PCIExress using ) how i should be able to do it? 4) You have mentioned opencl integration has been done, but i couldn't find a source repo? 5) The whole Architectural diagram is available of how the GPGPU works?

Sorry to bother you!

jbush001 commented 1 year ago

No problem!

  1. The host PC is required to load the bitstream onto the FPGA, and to load software onto it. The FPGA board could be made standalone by implementing a flash interface (for persistent storage to load the software from) and supporting flashing the bitstream onto the board (#156)
  2. It's a custom instruction set. https://github.com/jbush001/NyuziProcessor/wiki/Instruction-Set. Were I starting this today, I'd probably use RISC-V, but the vector extensions didn't exist when this project started.
  3. A number of people have done this on the Zynq chips from Xilinx, which couple an ARM processor with FPGA. Some are listed here: https://github.com/jbush001/NyuziProcessor/wiki/Related-Projects-and-Research. None of that work is in this repo, but there are some forks that have it. There are many other ways of doing this. You generally need some sort of shared memory, which could be SDRAM with an AXI multi-master configuration, or a chunk of dual ported SRAM. Those aren't terribly complex if you are familiar with the bus protocols, but not trivial.
  4. See #189. I think the closest thing is https://dl.acm.org/doi/10.5555/3314872.3314912
  5. Architecture description is in the Wiki: https://github.com/jbush001/NyuziProcessor/wiki/Microarchitecture

I hope that helps; I'm happy to answer any other questions!