Settings

Theme

Running Doom on Our Custom CPU and Going Viral

armaangomes.com

86 points by arghunter 8 hours ago · 21 comments

Reader

Archit3ch an hour ago

Reading "Custom CPU" I expected wafer.space, instead of FPGA.

Flex247A 4 hours ago

Great work!

This reminded me of a project I built a while back: a RV32IM emulator in C++ that can boot and run DOOM. Initially I implemented only RV32I, and implementing the M extension provided a massive speedup!

If anyone's curious, here's the source code: https://github.com/lalitshankarch/rvcore

paulmooreparks 4 hours ago

Very cool!

I just did the same thing, but for a byte-code interpreter for a completely novel ISA I made up a while back (with an assist from Claude). I just haven't made the HN post yet, since I'm doing a bit of cleanup.

https://github.com/paulmooreparks/Maize/ https://paulmooreparks.github.io/Maize/

dmitrygr 6 hours ago

For anyone else curious: custom FPGA-based CPU code but not a custom architecture. This is an RV32I core. The article takes along time to give up this fact.

  • kryptiskt 5 hours ago

    Deciding on an ISA like RV32I only sets constraints on your architecture, it doesn't give you any of it for free. So I think it's entirely valid to say that it's a custom architecture if they didn't use any pre-existing CPU design.

    Basically, they had the API interface and implemented everything behind it. I think saying that "it's an RV32I core" vastly underrates the design work that goes into actually implementing an RV32I core from scratch.

    • Dylan16807 4 hours ago

      Making a particularly good core is hard. Making a core to the minimum risc-v spec is what you do in a single college course. It's what the ISA was designed for.

    • voidUpdate 5 hours ago

      It's a custom implementation of an existing architecture

      • ahartmetz 2 hours ago

        It's common to call the instruction set just "architecture", or ISA (instruction set architecture) to be more precise. The implementation is commonly called "microarchitecture".

      • speed_spread an hour ago

        RV32I doesn't define any architecture, it's just an ISA i.e. a software contract that happens to be implementable in hardware. The CPU could run on outer space goop and still be RV32I.

    • dmitrygr 4 hours ago

      The *architecture* is RV32I_Zmmul which is unambiguously neither new nor custom.

      What you describe (the specific implementation details of a core) is *microarchitecture*. In this case clearly a lot of work was done and it is cool, but the *architecture* is indeed RV32I and not custom

      I was not undermining anything. I was helping others find the info I sought and took a while to find. This is why i left my comment. Everyone has their own interests. As an example, my thoughts were "whoa... a new architecture... did they write a new compiler or rewrite doom in assembly?" and for that "it is rv32i" would have been a quick answer.

  • zuzululu 6 hours ago

    thanks for saving me the time but it is pretty cool to see i'd love to learn more about fpga my goal is to run very old rare consoles

terekhindc 2 hours ago

why Zmmul and not full M — is it just fpga area, or did the doom port let you drop div/rem?

sweetjuly 6 hours ago

Always a delight seeing Chisel in the wild :)

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection