Although the base ISA consists of only 32-bit instructions that must be naturally aligned, the base control-flow instructions have a displacement granularity of 16 bits.
Instructions express great spatial locality of register reference.
Instructions tend to have few unique operands
Immediate operands and offsets tend to be small
Roughly half of immediate operands can be represented in five bits. Statically, branch and jump offsets are often quite large; dynamically, however, almost 90% fit within eight bits, reflecting the dominance of relatively small loops
RVC will improve performance as compared to RISC-V code, by means of reducing cache misses, TLB misses, and page faults. Using RVC instead of RISC-V is more beneficial than increasing
the associativity, and almost as performant as doubling the cache size
when static code size matters more than runtime performance, we can obtain most of the benefit of load-multiple and store-multiple with a purely software technique. 在过程调用开始的寄存器保存代码和调用结束时的寄存器恢复代码基本都是一样的,因此可以将其作为一个过程调用使用。
RVC Security Implications
One feature of the base RISC-V ISA encoding is that instructions are all four bytes long and must be aligned to a four-byte boundary. Attempts to jump to the middle of an instruction word generate an exception. RVC, by design, lacks this property; indeed, the semantics of jumping into the middle of a four-byte instruction are well defined.
The dual interpretations of RVC code require either that both paths be proven safe, or that a higher-level constraint prevents the second path from executing.