RISC-V

덤프버전 :


명령어 집합
CISC
AMD64x86 · 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]
파일:RISC-V 로고.svg
개발
UC 버클리
RISC-V International
발표
2010년
분류
명령어 집합(RISC)
비트
32, 64, 128비트
링크
파일:홈페이지 아이콘.svg 파일:X Corp 아이콘(블랙).svg[[파일:X Corp 아이콘(화이트).svg 파일:유튜브 아이콘.svg 파일:플리커 아이콘.svg

RISC-V: The Free and Open RISC Instruction Set Architecture

1. 개요
2. 상세
3. 역사
4. 특징
4.1. 장점
4.2. 단점
5. 확장
5.1. 확장 목록
6. 프로파일
6.1. RVI20U32/RVI20U64
6.2. RVA20U64
6.3. RVA20S64
6.4. RVA22U64
6.5. RVA22S64
8. 여담
9. 관련 문서



1. 개요[편집]


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년부터 연구가 시작되어 2022년 현재는 임베디드용 등 특수한 용도로 활발하게 상업화 되고 있다. 실험적으로 구현된 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 반도체 업체 tenstorrentLG전자가 협력을 발표했다. 이 협력을 통해 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

4. 특징[편집]


파일:external/upload.wikimedia.org/220px-Yunsup_Lee_holding_RISC_V_prototype_chip.jpg

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 가상화를 지원하고 있다. 소프트웨어 측면에선 GCCLLVM 등 사용자 수준의 툴체인은 완비되어 있지만 아직은 일부 특권 모드 관련 사양(특정 인터럽트 등)이 확정되지 않아 운영 체제 지원은 실험적 수준에 머물러 있다.

  • MMX 같은 SIMD 벡터 명령어 세트("V" 확장)의 개발은 거의 끝났으나 아직 확정되어 있지는 않다.


4.1. 장점[편집]


  • 상태 코드를 사용하지 않아 상태 코드를 통한 명령어 간의 순서 의존성이 줄어들어 비순차적 실행(out-of-order execution)의 효율을 올릴 수 있다. 여타 RISC ISA처럼 복잡한 어드레싱 모드 등이 없는 대신 위치무관코드를 위한 기능이 있다. 멀티미디어나 신호처리에도 응용할 수 있는 기능도 있다. MIPS와 비교해 지연 분기 슬롯(브랜치 딜레이 슬롯)이 없는것이 단점으로 착각되기 쉬운데, 이는 현대 CPU 파이프라인이 5단계보다 깊어졌기 때문으로 오히려 장점이다.



4.2. 단점[편집]


  • 파편화가 심하다. RISC-V 개발자들이 인정한 사실이고 (수만가지 조합이 존재) 그 때문에 표준적으로 사용되는 몇 가지 확장을 묶은 프로파일을 제시하였다. ## 오래 연구되어온 RISC 계열 명령어셋이자 Arm이라는 레퍼런스 개발사가 존재하는 ARM도 파편화 문제를 겪고 있는 것을 볼 때 결코 쉽지 않을 것으로 보인다.[4] 아키텍처가 커스텀 명령어를 기본적으로 지원하면서 파편화의 문제가 더욱 강조된다.

  • 퍼포먼스가 매우 뛰어난건 아니다. 기존 칩들을 전부 대체할수 있는 수준의 성능 향상이 있는것은 아니며 특히 칩셋 제조사의 설계 및 커스텀에 따라서 성능이 요동친다. 코어 설계사의 상당수가 역사가 오래되지 않아 현대 CPU의 성능에 큰 영향을 미치는 분기예측 등의 기술적 노하우가 부족해 아직 성능은 x86 및 ARM 진영에 비해 다소 아쉬운 편.

  • RISC-V 개발자 인건비가 웬만한 규모의 프로젝트에서 ARM 라이선스로 지급하는 비용보다 훨씬 비싸서 개발사 입장에서 RISC-V 사용이 ARM에 라이선스비를 지급하는 것보다 비용 면에서 수익성이 떨어진다. 또한 디버거나 개발툴의 개발과 발전은 역사에 비례한다. RISC-V의 개발 난이도를 높이는 또 다른 면.


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, 오라클, 퀄컴, 마이크로소프트, 엔비디아, AMDCPU 제조 설계 분야의 쟁쟁한 기업들이 많다. 특히 만약 구글 안드로이드가 RISC-V를 지원하기 시작한다면 현재의 스마트폰 시장에서의 ARM의 독점적 위치를 위협할 수 있게 될 가능성이 있다. 삼성전자IoT 시장에서 RISC-V를 AP로 사용할 의사를 비치고 있다. 인디아 등 일부 연구 기관에서는 RISC-V를 이용해 슈퍼컴퓨터용 CPU를 개발하고 있다. 최근 슈퍼컴퓨터는 CPU 성능보다 냉각 문제로 제한되고 있는데 RISC-V의 성능 대비 소비 전력이 적은 덕에 이 분야에서 유망하게 됐다.

PC나 스마트폰 AP 같은 경우보다는 임베디드로 전망이 밝다. 예를 들어 LAN카드나 블루투스칩 같은 통신용, 반도체의 단순한 동작이나 전력 컨트롤을 위한 MCU 등등이 대표적으로 시게이트에서는 드라이브 컨트롤러를 RISC-V 기반 자체칩셋등으로 전환하기도 했다. #

인프라와 시스템 생태계가 ARM에 비해 절대적으로 부족하므로 근시일 내에 이를 해소하기는 어렵다. 현재 대부분 SiFive가 제작한 RISC-V 프로세서를 사용하고 있다.

미국의 무역 제재로 어려움을 겪은 화웨이 등 중국 업체들이 ARM IP 기술에 대한 의존을 줄이기 위해 RISC-V에 대해 적극적인 태도를 보이고 있다. 중국 전자상거래 업체인 알리바바 그룹도 관심을 보이고 있다.


9. 관련 문서[편집]


파일:크리에이티브 커먼즈 라이선스__CC.png 이 문서의 내용 중 전체 또는 일부는 2023-11-02 12:59:40에 나무위키 RISC-V 문서에서 가져왔습니다.

[1] 리스크 브이가 아니라 "리스크 파이브(risk-five)"라고 발음하며, V는 영문 알파벳 V가 아닌 로마 숫자 5를 가리킨다.[2] ESP32 (Y2023년) 제품 시리즈 비교 By IDK_TECHNOLOGYhttp://idktech.co.kr/?cat=59&lang=ko[3] 보다 더 적은 면적으로 퀄컴의 수요를 충족할 수 있는 마이크로 컨트롤러가 필요했다고 밝혔다.[4] 독자 아키텍처 수준으로 설계한 애플의 칩셋들은 호환성 자체가 없고. ARM 레퍼런스를 쓴다고 해도 퀄컴이나 삼성, 아마존. 미디어텍 등의 회사들도 호환성을 지키기는 커녕 명령어를 제멋대로 설계하는 판이라서 사실상 호환성은 물건너갔다.