RISC-V: 더 잘 설계할 수 있었던 아키텍처

19 hours ago 5

RISC-V는 초소형 마이크로컨트롤러부터 서버까지 하나의 ISA로 포괄하려 하지만, 영역별 요구가 충돌하면서 ISA 설계와 과도한 선택성이 성능·호환성 문제를 낳음 저가형 코어에서는 인터럽트 처리와 코드 밀도가 Cortex-M0보다 불리하고, 고성능 코어에서는 가변 길이 명령어와 제한적인 주소 지정 방식이 병렬 디코딩과 배열 접근을 방해함 곱셈·나눗셈·CSR·특권 모드까지 선택 사항이고 기능 탐지 수단인 misa조차 선택적이어서, 소프트웨어가 실행 환경의 기능과 현재 특권 모드를 일관되게 판별하기 어려움 즉시값 비트가 형식마다 복잡하게 흩어지고 확장 조합에 따라 같은 바이트열의 의미도 달라져, 에뮬레이터 구현뿐 아니라 기존 바이너리의 의미적 호환성까지 훼손될 수 있음 RVA23 프로필이 뒤늦게 필수 확장 집합을 정의했지만 주요 SBC 다수가 이를 충족하지 못하며, RISC-V는 데스크톱보다 가격이 중요한 제어용 코어와 ML 가속기 보조 코어에서 경쟁력을 가질 것으로 전망함 모든 용도에 하나의 ISA가 가질 수 없는 최적점 고성능 CPU와 비용 절감형 마이크로컨트롤러는 필요한 특성이 정반대이며, 이 차이는 마이크로아키텍처뿐 아니라 CPU 아키텍처 자체에도 영향을 줌 초저가 단일 용도 마이크로컨트롤러는 MP3 플레이어·SD 카드·USB 메모리 같은 칩에서 하드웨어 블록의 레지스터를 조작하거나 설정하는 데 사용됨 핵심 기준은 낮은 인터럽트 지연, 작은 면적, 높은 코드 밀도임 대량 생산 제품은 비용 때문에 NOR flash 대신 ROM이나 RAM에서 코드를 실행할 수 있어 코드 크기가 중요함 연산량이 적으므로 곱셈기·나눗셈기와 특권 분리를 생략할 수 있음 RISC-V는 무료 명세와 무료 라이선스 코어 덕분에 8051이 차지한 초저가 시장을 대체할 가능성이 높지만, 이는 ISA 품질보다 가격 경쟁력에 따른 결과임 저가형 코어의 인터럽트와 압축 명령어 문제 규격에 맞는 인터럽트 처리에는 사실상 RV32I_Zicsr가 필요함 MIPS의 $k0, $k1 같은 예약 레지스터가 없으므로 RISC-V는 mscratch·sscratch를 이용해야 함 Zicsr가 없으면 레지스터를 임시 보관하면서 인터럽트 상태를 저장할 일반적인 방법이 없음 단순한 1명령어/사이클 코어를 가정하면 C 인터럽트 처리기를 호출하기 전후의 최소 비용은 RV32I 44사이클임 진입 시 CSRRW, ABI 레지스터 저장, 이전 t0 저장에 최소 21사이클이 ...

Read Entire Article