121 pointsby arghunter12 hours ago13 comments
  • tantalor2 hours ago
    > posted a video that got a few million views

    Anybody got a link to that?

    Is it this?

    https://www.instagram.com/armaan.gomes/reel/DatqWKChtnw/?hl=...

    I was expecting a real video, not some 9 second clip posted to random social media website.

    • jervantan hour ago
      > instagram

      > random social media website

  • caruasdo3 minutes ago
    Well, Doom runs everywhere.
  • _joel4 hours ago
    Cool, I thought this was a CPU custom designed for Doom, but I guess that's just a 486 :)

    edit: I went to down a quick hole "The historical footnote is that a version of this genuinely happened. SNES Doom shipped with a Super FX 2 in the cartridge, a custom RISC chip with a pixel-plot instruction, because the console's own CPU had no chance. Jaguar and PlayStation ports both moved the rasteriser onto dedicated hardware. Doom's design was shaped by the absence of an FPU, and then hardware kept getting built to catch up with it."

    • toast0an hour ago
      > SNES Doom shipped with a Super FX 2 in the cartridge, a custom RISC chip with a pixel-plot instruction, because the console's own CPU had no chance.

      The Super FX is a custom RISC chip, but it was custom made for Star Fox and used for other projects with refinements.

    • blastonico2 hours ago
      > but I guess that's just a 486

      *just* a 486. :-(

  • arghunter3 hours ago
    This is just RV32I-ZMMUL not a custom architecture, bt if you do want to see something from scratch, without any premade ISA or anything, here is an NPU I built: https://www.armaangomes.com/blogs/kernn/
  • Flex247A9 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

    • kailpa19 hours ago
      Nice one! Sounds like a fun project to do. Did you follow any tutorial or guide for this? If so, I would appreciate it if you shared it.
  • Archit3ch6 hours ago
    Reading "Custom CPU" I expected wafer.space, instead of FPGA.
  • layer8an hour ago
    I wonder, if Doom didn’t exist, what would have taken its place for the “can it run X” usage.
    • AndrewOMartin41 minutes ago
      Doom 2. And only John "Benevolent hyper-intelligent architect of the post singularity simulation we all live in" Carmack would know why he named it that.
  • paulmooreparks9 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/

  • dmitrygr11 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.
    • kryptiskt9 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.

      • Dylan168078 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.
      • voidUpdate9 hours ago
        It's a custom implementation of an existing architecture
        • ahartmetz7 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_spread6 hours 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.
          • Brian_K_White2 hours ago
            "RV32I doesn't define any architecture, it's just an ISA."

            My friend...

            • speed_spread19 minutes ago
              You are right, 'A' stands for Architecture. _Instruction Set_ Architecture that is. Not CPU architecture. I should have been more clear:

              > RV32I doesn't define the hardware architecture

              FTFM - satisfied?

      • dmitrygr9 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.

    • zuzululu10 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
    • ahk-dev8 hours ago
      [dead]
  • terekhindc7 hours ago
    why Zmmul and not full M — is it just fpga area, or did the doom port let you drop div/rem?
    • arghunter3 hours ago
      I'm kinda lazy lol. We are also implementing out-of-order rn, so we want to get a really solid rv32i setup going before adding multiplication, floating point, vector, etc.
  • sweetjuly11 hours ago
    Always a delight seeing Chisel in the wild :)
  • deton39914 hours ago
    [dead]
  • huflungdung7 hours ago
    [dead]