3 ms·
I couldnt find an answer online... what does RSP stand for?
by JamesSwift 4y ago
I couldnt find an answer online... what does RSP stand for?
- mikepurvis 4y agoReality Signal Processor: https://www.retroreversing.com/n64rsp https://www.retroreversing.com/n64rsp Basically a very, very early programmable GPU, but you were writing actual firmware for it, rather than writing the kind of high level shader functions that would come a decade+ later.
- tadfisher 4y agoI always heard it referred to as "microcode", and there were different RSP microcode packages floating around, shipped by Nintendo/SGI, or programmed from scratch and included in the ROM.
- monocasa 4y agoYeah, it was called that, but the term microcode was a bit of a stretch. It's a relatively straightforward 32bit MIPS with a 8x16bit SIMD vector unit strapped to the side as MIPS coprocessor 2. One cute thing is that since it can only access 4KiB of data, and load/store offsets in MIPS machine code are 12 bits, you can build any pointer in the load/store itself simply offsetting from the zero register. That's in contrast to most MIPS code where you generally need to build the pointer in a register first (or at least burn a register to be the global pointer).
- moring 4y agoJust to point out: You can still do this (with any processor that has a zero-register, otherwise you'd still have to "burn" a register and you could just use a real global pointer). This technique isn't made impossible by larger RAM, it just cannot access anything beyond 4KiB (1). If that is enough for your "hot" data, you could still use it. (1) 2KiB for RISCV, because immediate offsets are 12bits signed, and the upper end of the address space is usually not mapped to RAM. That is, 4KiB are possible with RISCV if you control the memory map.
- monocasa 4y agoA lot of processors don't even map usable RAM at address zero is the real problem. For instance a lot of simpler RISC-V chips are copying the basic Cortex-M memory map which places ROM low in memory. Even on systems with MMUs, it's very common that the kernel won't let you map RAM at address zero for several reasons. And the sizes are being talked about are about the size of a single page.