명령어 집합 | |
CISC | AMD64 ● x86 ● · M68K · 68xx · Z80 · 8080 · MOS 65xx · VAX |
RISC |
AArch64
ARM ·
RISC-V
● ·
MIPS
● ·
DEC Alpha ·
POWER
PowerPC ·
CELL-BE LoongArch · OpenRISC · PA-RISC · SPARC · Blackfin · SuperH · AVR32 AVR |
VLIW EPIC |
E2K · IA-64 · Crusoe |
RISC-V 리스크 파이브[1] |
|
개발 |
UC 버클리 RISC-V International |
발표 | 2010년 |
분류 | 명령어 집합( RISC) |
비트 | 32, 64, 128비트 |
링크 |
[clearfix]
1. 개요
RISC-V: The Free and Open RISC Instruction Set Architecture
2010년부터 미국의
UC 버클리에서 개발중인 무료
오픈 소스
RISC 명령어셋 아키텍처다.2. 상세
단지 학술용이나 연구용이 아니라 실제 산업계에서 상용화할 것을 목표로 하고 있다. 즉, 현재 스마트폰이나 임베디드 장치의 CPU로 널리 쓰이는 ARM과 직접 경쟁하여 이를 대체할 수 있는 성능의 CPU 아키텍처를 개발하려는 것이다. 현재 업계를 장악한 아키텍처 중에서 ARM 아키텍처는 라이선스 비용을 받고, AMD64는 인텔과 AMD만이 독점적으로 사용하기에 RISC-V는 오픈소스 진영의 아키텍처로서 큰 각광을 받고 있다.비교적 관대한 BSD 라이선스로 무료로 쓸 수 있게 배포됐다. 공교롭게도 UC 버클리는 이전에 유닉스 운영 체제인 BSD를 개발한 전적이 있는데, 이것 또한 같은 라이선스로 유사하게 배포됐다. RISC-V에 대한 개략적인 설명
3. 역사
2010년 UC 버클리의 컴퓨터과학 연구원들에 의해 RISC-V가 결성됐다. UC 버클리의 컴퓨터과학과는 1980년대에도 MIPS 컴퓨터 구조의 기반이 된 Berkeley RISC 컴퓨터 구조를 성공시킨 바있고 유명한 컴퓨터과학자 데이비드 패터슨 교수도 프로젝트에 참여했다.2010년부터 연구가 시작되어 현재는 임베디드용 등 특수한 용도로 활발하게 상업화 되고 있다. 실험적으로 구현된 RISC-V 칩은 비슷한 성능의 상용 ARM 칩과 비교해 칩 면적이 30~50% 작고 소비 전력은 60%나 감소하는 등 상당히 높은 효율과 경제성을 보여서 미래에 상용화되면 ARM의 경쟁자가 될 수 있다는 기대를 받고 있다. 코어 몇 개 정도의 스마트폰 칩 정도에선 캐시 메모리를 뺀 코어의 면적이 작아 칩 면적면에서 장점이 적지만, 적은 소비전력은 상당한 장점이라 할 수 있다. 칩의 면적이 작다는 것은 코어 개수가 수십-수백개로 아주 많은 서버 류에서는 큰 장점이 될 수 있다.
2019년 엔비디아나 웨스턴 디지털 등 IT 반도체 업체들이 그래픽 칩이나 HDD/SSD 제어 등 기존 시스템과 호환성이 필요 없는 내장 제어용 CPU로 RISC-V를 채택하는 경우가 늘고 있고 이 분야에 진출하는 소규모 업체들은 늘고 있다. 특히 HDD/SDD 제어의 경우 커스텀 명령어를 사용 할 수 있게 되면 큰 성능상, 전력상의 이점이 존재한다. 이에 RISC-V는 좋은 대안이 되며 커스텀 명령어를 추가하지 않던 Arm에서 Cortex-M33부터 커스텀 명령어를 추가 할 수 있도록 대응하게 만들었다. Nvidia 역시 GPU 내부에 많은 RISC-V 코어를 사용한다고 밝혔다. Wi-Fi/블루투스 칩으로 유명한 Espressif ESP32도 기존의 Xtensa LX7 듀얼 코어 컨트롤러를 2021년 RISC-V로 교체한 새로운 칩을 발표했다.[2]
2019년 알리바바는 Xuantie 910를 발표했다. ARM의 Cortex-A73와 비교해서 성능이 대체로 비슷하다. # 다만, Cortex-A73는 2016년에 출시했으므로 3년의 기술 격차가 있다. 미국 아마존 클라우드 서비스의 서버용 ARM 칩인 Graviton처럼 알리바바의 클라우드 서비스에 적용될 것으로 보인다. 이는 Arm의 서버용 Neoverse 제품군이 추가적인 무역 제재로 수출이 불가능해 지면서 더욱 가속화 될 예정으로 보인다.
2020년 서버용으로 개발 중이지만 무려 1000코어짜리 칩을 개발 중이라는 소식이 있다. 아예 기기당 4000코어 이상 개발할 수 있다는 언급이 있다.
2021년 1월에는 안드로이드 10을 RISC-V로 이식하는 데 성공했다. #
2021년 6월에는 인텔이 RISC-V IP를 개발하는 데 가장 앞서고 있는 SiFive 라는 회사를 20억 달러에 인수를 추진 중이라는 소식이 나왔으나 무산됐다. # 다만 SiFive는 인텔에게서 인텔 파운드리 서비스 혁신 기금(Intel Foundary Services Innovation Fund)의 투자금을 받아 자신들의 SoC를 인텔 4 공정에서 생산하기로 계약을 맺었다. #
2021년 9월 2일, Apple도 RISC-V 개발자를 모집하고 있다. # 코어 하나당 ARM에게 지불해야 하는 라이선스 비용을 줄일 수 있다고. 다만, 기사에서 보듯이 주된 작업은 머신러닝, 컴퓨터 비전, 비디오 처리 등의 일을 하게 되는 것으로 보아 CPU, GPU를 Arm으로부터 대체한다기보단 NPU 쪽 설계 작업일 가능성이 매우 높다.
2022년 11월 SiFive의 P670과 ARM의 Cortex-A78의 성능 비교표가 나왔다. # 성능은 ARM보다 5% 낮지만 면적은 50% 적게 차지하고, 집적도는 2배이다. 그런데 비교 대상인 Cortex-A78은 2020년도 5월에 발표됐으므로 아직 2.5년의 기술 격차가 있다. 3년 전 알리바바가 출시할 때에도 기술 격차가 3년인 것을 볼 때 성능적으로 ARM과의 기술 격차를 좀처럼 좁히지 못 하고 있다.
2022년 12월, 퀄컴은 RISC-V 서밋 2022에서의 발표를 통해 RISC-V 코어의 출하로 시장 생태계를 조성하고 있다고 말했다. 퀄컴은 2019년부터 자사 SoC인 스냅드래곤 865에 처음으로 RISC-V 마이크로 컨트롤러를 탑재하기 시작했고[3], 현재까지 모바일, 자동차, XR, IoT 등에 약 6억 5천만 개의 RISC-V 코어를 출하했다고 밝혔다.
2023년 5월 31일, 짐 켈러가 이끄는 RISC-V 기반 AI 반도체 업체 tenstorrent와 LG전자가 협력을 발표했다. 이 협력을 통해 LG전자는 tenstorrent로부터 차량용과 프리미엄 TV에 쓰이는 AI 및 RISC-V CPU 기술을 받는다. tenstorrent는 LG전자로부터 데이터센터에서 쓰는 비디오 코덱 기술을 받는다. # tenstorrent 공식
2023년 8월 4일, Robert Bosch GmbH, Infineon Technologies AG, Nordic Semiconductor, NXP® Semiconductors, and Qualcomm Technologies, Inc., 가 협력투자해서 RISC-V를 적용한 차세대 하드웨어 개발에 대한 계획을 발표하였다. https://www.infineon.com/cms/en/about-infineon/press/press-releases/2023/INFXX202308-142.html
2023년 10월 RISC-V 아키텍트가 모여 만든 회사인 SiFive가 전체 직원의 20%에 해당하는 인원을 해고하면서, RISC-V의 전망이 불확실해졌다는 의견이 많다. RISC-V 생태계에 가장 많이 기여했던 SiFive가 더 이상 적극적으로 참여하지 않을 것이라는 우려가 많이 나오고 있다.
2024년 5월 구글이 AOSP에서 RISC-V 지원를 제거했다. https://www.theregister.com/2024/05/01/riscv_support_android_pulled
2024년 6월 딥컴퓨팅(DeepComputing)에서 자사의 두번째 RISC-V 노트북인 DC-ROMA RISC-V Laptop II를 발표했다. CPU는 SpacemiT의 K1 8코어 SoC를, OS는 우분투 리눅스를 포팅해서 쓰며 개발 용도로 나왔다.
4. 특징
2013년 1월에 공개된 RISC-V 시험용 제품.
- 레지스터는 '32비트 또는 64비트 정수 레지스터 32개', 선택적으로 부동소수점 확장을 구현한 경우 '부동소수점 레지스터 32개'가 추가되며 벡터 확장을 구현한 경우 '벡터 레지스터 32개'가 추가된다. 소규모 하위 구현은 레지스터 수를 16개로 줄이고 부동소수점 레지스터는 생략할 수 있다. 일반적인 구현은 정수 레지스터 32개 및 부동소수점 레지스터 32개를 포함한다. 레지스터 0번은 상수 0이어서 R1 + R0 → R2 는 R1 → R2와 같다. 다른 RISC CPU처럼 메모리 접근 전용 명령어를 가진 load-store 구조를 채택하고 있으며 모든 연산조작은 레지스터에서만 한다.
- 기본적으로 명령어 길이는 32비트지만 코드 밀도를 높여서 상용에 적합하도록 가변길이 명령어를 채택하고, 특히 ARM의 Thumb-2 처럼 대폭 간소화된 16비트 단축 명령어 셋도 있다. 하지만 별도의 단축 명령어 모드가 따로 있는 게 아니라 일반 명령어와 단축 명령어를 자유로이 섞어서 쓸 수 있다. 코드 밀도는 x86이나 MIPS보다는 약 20% 더 효율적이고 Thumb-2보다는 2% 뒤지는 정도.
- 판단이나 분기를 위한 상태 코드가 없다. 그 대신 비교 후 조건부 점프가 이를 대신한다.
- 시스템 특권 모드는 4단계이며 스레드나 인터럽트를 유연하게 다룰 수 있게 되어 있다. 멀티미디어 등 고속 수치 계산을 위한 MMX류의 SIMD 벡터 연산이나 디버깅용 JTAG 하드웨어 등 현대의 스마트폰이나 PC, 서버, 슈퍼컴퓨터 등 광범위한 응용에 적합한 기능을 가지고 있다. 상당히 유연한 구조를 가지고 있어서 미래의 다양한 응용을 위한 충분한 여유가 확보되어 있기도 하고 저전력 소규모 임베디드 응용 등을 위해 최소한의 기능을 가진 CPU를 만들거나 CPU 가상화를 지원하고 있다. 소프트웨어 측면에선 GCC나 LLVM 등 사용자 수준의 툴체인은 완비되어 있지만 아직은 일부 특권 모드 관련 사양(특정 인터럽트 등)이 확정되지 않아 운영 체제 지원은 실험적 수준에 머물러 있다.
- MMX 같은 SIMD 벡터 명령어 세트("V" 확장)의 개발은 거의 끝났으나 아직 확정되어 있지는 않다.
4.1. 장점
- 상태 코드를 사용하지 않아 상태 코드를 통한 명령어 간의 순서 의존성이 줄어들어 비순차적 실행(out-of-order execution)의 효율을 올릴 수 있다. 여타 RISC ISA처럼 복잡한 어드레싱 모드 등이 없는 대신 위치무관코드를 위한 기능이 있다. 멀티미디어나 신호처리에도 응용할 수 있는 기능도 있다. MIPS와 비교해 지연 분기 슬롯(브랜치 딜레이 슬롯)이 없는것이 단점으로 착각되기 쉬운데, 이는 현대 CPU 파이프라인이 5단계보다 깊어졌기 때문으로 오히려 장점이다.
-
리눅스나
BSD의
소스 코드를 가지고 자신의 목적에 맞는
안드로이드나
iOS 등을 만든 것처럼 RISC-V를 특정 목적에 특화된 칩을 설계하는 기반으로 사용할 수 있다.
USING OPEN SOURCE DESIGNS TO CREATE MORE SPECIALIZED CHIPS (2018.04.12)
4.2. 단점
- 파편화가 심하다. RISC-V 개발자들이 인정한 사실이고 (수만가지 조합이 존재) 그 때문에 표준적으로 사용되는 몇 가지 확장을 묶은 프로파일을 제시하였다. # # 오래 연구되어 온 RISC 계열 명령어 집합이자 Arm이라는 레퍼런스 개발사가 있는 ARM도 파편화 문제를 겪고 있는 것을 볼 때 해결되기 어려울 것으로 보인다.[4] 아키텍처가 커스텀 명령어를 기본적으로 지원하면서 파편화의 문제가 더 커진다.
- 성능이 그다지 뛰어나지 못하다. 기존 칩들을 전부 대체할 수 있는 수준의 성능 향상이 있는 것은 아니며 특히 칩셋 제조사의 설계 기술에 따라서 성능이 요동친다. 코어 설계사의 상당수가 역사가 짧아 현대 CPU의 성능에 큰 영향을 미치는 분기 예측 등의 기술 노하우가 부족해 아직 성능은 x86 및 ARM 진영에 비해 다소 아쉬운 편.
- RISC-V 개발자 인건비가 웬만한 규모의 프로젝트에서 ARM 라이선스로 지급하는 비용보다 훨씬 비싸서 개발사 입장에서 수익성이 떨어진다. 또한 디버거나 개발 도구의 완성도는 역사에 비례한다. RISC-V의 개발 난이도를 높이는 또 다른 면.
- ISA의 단순함이 고성능 마이크로아키텍처에서 소비 전력 및 성능 문제를 야기한다. 예를 들어 AArch64의 load pair(LDP), store pair(STP)와 간접 주소 지정은 불필요한 레지스터 리네이밍(register renaming)을 줄일 수 있지만 RISC-V에는 없다. 또 RISC-V는 조건 분기 명령어가 부족해, 오히려 더 복잡한 동적 분기 예측이 필요하다. 추가로, 대다수의 고성능 마이크로아키텍처는 명령을 프론트엔드 디코더에서 µops로 변환하기 때문에 단순한 ISA와 디코더 복잡성은 관련이 없다. 오히려 macro, micro-fusion과 같이 성능을 보완하기 위해 다른 부분이 더 복잡해질 뿐이다.
5. 확장
RISC-V 기본 정수 ISA는 레지스터 너비에 따라 RV32I, RV64I, RV128I로 나타내며, RV32I에서 레지스터 수를 절반으로(32개→16개) 줄인 구현의 경우 RV32E로 나타낸다.RISC-V는 기본 정수 ISA를 바탕으로 여러 가지 확장을 제공하는데, 확장 카테고리는 I 또는 E 뒤에 M-A-F-D-Q-C-P-V-H-Zxx-Sxx-Zxm-Xxx 순으로 나타낸다. (예: RV64IMAFDCZicsr_Zifencei) 이때 IMAFDZicsr_Zifencei를 "G"로 줄여 쓰기도 한다. (RV64GC = RV64IMAFDCZicsr_Zifencei)
몇몇 확장 사이에는 의존성이 있다.
- "F": "Zicsr" 확장 필요 (부동소수점 상태 레지스터 접근을 위해 CSR 연산 필요)
- "D": "F" 확장 필요
- "Q": "D" 확장 필요
- "V": "D" 확장 필요
- "Zam": "A" 확장 필요
5.1. 확장 목록
기본 ISA | 버전 | 상태 | 설명 |
RV32I | 2.1 | Ratified | |
RV32E | 2.0 | Ratified | |
RV64I | 2.1 | Ratified | |
RV64E | 2.0 | Ratified | |
RV128I | 1.7 | Draft | |
RVWMO | 2.0 | Ratified |
확장 이름 | 버전 | 상태 | 설명 |
"M" | 2.0 | Ratified | 정수 곱셈 및 나눗셈(integer multiplication and division) |
"A" | 2.1 | Ratified | 원자적 연산(atomic memory instructions) |
"F" | 2.2 | Ratified | 단정밀도(32-bit) 부동소수점 |
"D" | 2.2 | Ratified | 배정밀도(64-bit) 부동소수점 |
"Q" | 2.2 | Ratified | 사배정도(128-bit) 부동소수점 |
"C" | 2.0 | Ratified | 16-bit 압축된 명령어 포맷 |
"Counters" | 2.0 | Draft | |
"L" | 0.0 | Draft | 10진수 부동소수점 |
"B" | 0.0 | Draft | 비트 조작 |
"J" | 0.0 | Draft | 동적 변환 언어 |
"T" | 0.0 | Draft | |
"P" | 0.2 | Draft | Packed SIMD 연산 |
"V" | 1.0 | Frozen | 벡터 연산 |
"Zicsr" | 2.0 | Ratified | CSR(Control and Status Register) 명령어 |
"Zifencei" | 2.0 | Ratified | 명령어 인출 fence |
"Zihintpause" | 2.0 | Ratified | |
"Zihintntl" | 0.3 | Frozen | |
"Zam" | 0.1 | Draft | |
"Zfh" | 1.0 | Ratified | 반정밀도(16-bit) 부동소수점 |
"Zfhmin" | 1.0 | Ratified | |
"Zfinx" | 1.0 | Ratified | |
"Zdinx" | 1.0 | Ratified | |
"Zhinx" | 1.0 | Ratified | |
"Zhinxmin" | 1.0 | Ratified | |
"Zmmul" | 1.0 | Ratified | |
"Ztso" | 1.0 | Ratified | |
"Zfa" | 0.1 | Draft |
6. 프로파일
RISC-V ISA의 사양은 수많은 확장으로 세분화되어 있어 가능한 조합의 수가 매우 많은데, 이러한 다양성은 소프트웨어 생태계의 파편화 문제로 나타날 수 있다. 이 문제를 다루기 위해 RISC-V 재단에서는 주요 확장 및 기능을 묶은 프로파일을 제공하고 있다. 특권 모드에 따라 U, S, M으로 나뉘며 32비트 및 64비트 프로파일이 존재한다.6.1. RVI20U32/RVI20U64
필수 사양- RV32I/RV64I, little-endian
-
fence.tso
명령어
- "M", "A", "F", "D", "C" 및 "Zifencei", "Zicntr", "Zihpm" 확장
- 정렬되지 않은 load 및 store 명령어
6.2. RVA20U64
필수 사양- RV64GC, little-endian
-
fence.tso
명령어 - "Zicntr", "Ziccif", "Ziccrse", "Ziccamoa", "Za128rs", "Zicclsm" 확장
- 정렬되지 않은 load 및 store 명령어
- "Zihpm" 확장
6.3. RVA20S64
필수 사양- RV64I, little-endian
- "Zifencei" 확장
- "Sv39" 확장 (39-bit 가상 메모리)
- "Ss1p11", "Svbare", "Svade", "Ssccptr", "Sstvecd", "Sstavla" 확장
- "Zihpm" 확장
- "Sv48" 확장 (48-bit 가상 메모리)
- "Ssu64xl" 확장
6.4. RVA22U64
필수 사양- RV64GC, little-endian
-
fence.tso
명령어 - "Zicntr", "Ziccif", "Ziccrse", "Ziccamoa", "Za128rs", "Zicclsm" 확장
- 정렬되지 않은 load 및 store 명령어
- "Zihpm" 확장
- "Za64rs", "Zihintpause", "Zba", "Zbb", "Zbs", "Zfhmin" 확장
- "Zic64b", "Zicbom", "Zicbop", "Zicboz", "Zkt" 확장
선택 사양
- "Zfh", "V", "Zkn", "Zks" 확장
6.5. RVA22S64
필수 사양- RV64GC, little-endian
- "Zifencei" 확장
- RVA22U64의 모든 필수 확장
- "Sv39" 확장 (39-bit 가상 메모리)
- "Ss1p12", "Svbare", "Svade", "Ssccptr", "Sstvecd", "Sstavla" 확장
- "Sscounterenw", "Svpbmt", "Svinval" 확장
선택 사양
- "Sv48" 확장 (48-bit 가상 메모리)
- "Sv57" 확장 (57-bit 가상 메모리)
- "Ssu64xl" 확장
- "Svnapot", "Sstc", "Sscofpmf" 확장
- "Zkr" 확장
- "H" 확장
"H" 확장 구현시 필수 사양:
- "Ssstateen", "Shcounternew", "Shvstvala", "Shtvala", "Shvstvecd", "Shvsatpa", "Shgatpa" 확장
권장사항
- 구현되지 않은 명령어 실행 시도시 예외 발생시킬 것
7. 명령어 목록
8. 여담
RISC-V 연구를 후원하고 있는 기업으로는 구글, 휴렛팩커드, IBM, 오라클, 퀄컴, 마이크로소프트, 엔비디아, AMD 등 CPU 제조 설계 분야의 쟁쟁한 기업들이 많다. 삼성전자는 IoT 시장에서 RISC-V를 AP로 사용할 의사를 비치고 있다. 인디아 등 일부 연구 기관에서는 RISC-V를 이용해 슈퍼컴퓨터용 CPU를 개발하고 있다. 최근 슈퍼컴퓨터는 CPU 성능보다 냉각 문제로 제한되고 있는데 RISC-V의 성능 대비 소비 전력이 적은 덕에 이 분야에서 유망하게 됐다.PC나 스마트폰 AP 같은 경우보다는 임베디드로 전망이 밝다. 예를 들어 LAN카드나 블루투스칩 같은 통신용, 반도체의 단순한 동작이나 전력 컨트롤을 위한 MCU 등등이 대표적으로 시게이트에서는 드라이브 컨트롤러를 RISC-V 기반 자체칩셋등으로 전환하기도 했다. # WiFI/BT 인터페이스 칩으로 유명한 중국의 Espressif 시스템에서 RISC-V 구조에 기반한 WIFI/BT 내장 ESP32 C 시리즈를 발표했다. 현시점에서 RISC-V를 응용해보려면 가장 구하기 쉬운 RISC-V 마이크로 컨트롤러.
인프라와 시스템 생태계가 ARM에 비해 절대적으로 부족하므로 근시일 내에 이를 해소하기는 어렵다. 현재 대부분 SiFive가 제작한 RISC-V 프로세서를 사용하고 있다.
미국의 무역 제재로 어려움을 겪은 화웨이 등 중국 업체들이 ARM IP 기술에 대한 의존을 줄이기 위해 RISC-V에 대해 적극적인 태도를 보이고 있다. 중국 전자상거래 업체인 알리바바 그룹도 관심을 보이고 있다. [5]
9. 관련 문서
- ARM Cortex-A 시리즈
- DEC Alpha
- 썬/ 오라클 SPARC
[1]
리스크 브이가 아니라 "리스크 파이브(risk-five)"라고 발음하며, V는 영문 알파벳 V가 아닌 로마 숫자 5를 가리킨다.
[2]
ESP32 (Y2023년) 제품 시리즈 비교 By IDK_TECHNOLOGY
http://idktech.co.kr/?cat=59&lang=ko
[3]
보다 더 적은 면적으로 퀄컴의 수요를 충족할 수 있는 마이크로 컨트롤러가 필요했다고 밝혔다.
[4]
독자 아키텍처 수준으로 설계한 애플의 칩셋들은 호환성 자체가 없고. ARM 레퍼런스를 쓴다고 해도 퀄컴이나 삼성, 아마존. 미디어텍 등의 회사들도 호환성을 지키기는 커녕 명령어를 제멋대로 설계하는 판이라서 사실상 호환성은 물건너갔다.
[5]
다만 최근 미국이 중국, 특히 미 재무부 제재 대상 기업에 RISCV 사용 금지 명령을 추진을 시도하는 상황이라 현실로 이루어지기는 거의 불가능에 가깝다.