4 ms·
It is better to say RVC is almost never present without the full-size 4 byte instructions since we have one counter example: https://github.com/gsmecher/minima
by jecel 2y ago
It is better to say RVC is almost never present without the full-size 4 byte instructions since we have one counter example:
https://github.com/gsmecher/minimax https://github.com/gsmecher/minimax
This is an experimental rather than practical design that only directly implements the compressed instructions in hardware and then implements the normal RV32I instructions in "microcode" written using the compressed instructions.
- kragen 2y agoMinimax is a super cool design! I think it's not really a counterexample, because it does implement the uncompressed instructions, just more slowly.
- brucehoult 2y agoThe LUT counts do look competitive, until you realise that this doesn't include the cost of the microcode. Probably fine on FPGA where there's lots of almost free BRAM, but on an ASIC where you'd need to use SRAM or mask ROM, or if you used LUTRAM, it would look very different. Plus, the speed penalty for the microcoded instructions is huge. perhaps not as huge as SeRV :-)
- kragen 2y agoThat sounds reasonable, yeah. Presumably you'd write your inner loops purely in RVC instructions; in the situations where you'd use SeRV, you wouldn't be using it for your computational bottlenecks, which you'd build special-purpose hardware for, but just to sort of orchestrate a sequence of steps. But Minimax seems like it could really reduce the amount of stuff you had to design special-purpose hardware for.