Architecture / ISA
Intermediate
RISC-V RVC / GCC (-march=rv32imc)
코드 크기를 30% 줄이는 RISC-V 16비트 압축 명령어(RVC / C 확장) 원리
임베디드 메모리 제약을 극복하기 위해 가장 빈번히 쓰이는 명령어를 16비트로 인코딩하여 캐시 히트율과 실행 밀도를 극대화하는 RVC 확장 기술.
#RISC-V #RVC #Optimization #Embedded #Compression
핵심 개념ARM Thumb-2와 유사하게, RISC-V는 C 확장(Compressed Instructions)을 통해 자주 사용되는 명령어를 16비트 포맷(c.li, c.mv, c.add, c.lw 등)으로 압축 제공합니다. 32비트와 16비트 명령어가 혼용되어도 디코더 하드웨어가 400개 미만의 게이트로 가볍게 구현되는 우아한 설계가 특징입니다.
1. 압축 명령어 1:1 매핑 예시
| 압축 명령어 (16-bit) | 정규 RV32I 동등 명령어 (32-bit) | 바이트 절감 |
|---|---|---|
| c.li rd, imm | addi rd, zero, imm | 50% 절감 (2 bytes) |
| c.mv rd, rs | add rd, zero, rs | 50% 절감 (2 bytes) |
| c.j offset | jal zero, offset | 50% 절감 (2 bytes) |
| c.lw rd', offset(rs1') | lw rd', offset(rs1') | 50% 절감 (x8~x15 한정) |