3 ms·
> I think adding and dropping C for desktop/server workloads would be relatively easy. It's not super easy because standard RISC-V without the c extension ball
by monocasa 3y ago
> I think adding and dropping C for desktop/server workloads would be relatively easy.
It's not super easy because standard RISC-V without the c extension balloons code size by about 30%. So Qualcomm is proposing a set of custom extensions on top of that to get the code size back down. It's not clear what the patent situation is on those extensions since they're so obviously AArch64 inspired.
- hajile 3y agoMore than 30%. For example, in this 2016 paper, the Linux kernel using compression was 67% the size of the non-compressed instructions. Stated in the reverse, removing compressed instructions would increase the kernel size by 50%. https://people.eecs.berkeley.edu/~krste/papers/EECS-2016-1.pdf https://people.eecs.berkeley.edu/~krste/papers/EECS-2016-1.p...
- Pet_Ant 3y agoFrom that document what is interesting is that they explicitly avoided the approach that Qualcomm are suggesting: p. 51 > each RVC instruction must expand into a single RISC-V instruction. The reasons for this constraint are twofold. Most importantly, it simplifies the implementation and verification of RVC processors: RVC instructions can simply be expanded into their base ISA counterparts during instruction decode, and so the backend of the processor can be largely agnostic to their existence. ... This constraint does, however, preclude some important code size optimizations: notably, load-multiple and store-multiple instructions, a common feature of other compressed RISC ISAs, do not fit this template. ... Given these constraints, the ISA design problem reduces to a simple tradeoff between compression ratio and ease of instruction decode cost. ... The dictionary lookup is costly, offsetting the instruction fetch energy savings. It also adds significant latency to instruction decode, likely reducing performance and further offsetting the energy savings. Finally, the dictionary adds to the architectural state, increasing context switch time and memory usage.