본문 바로가기

RISC-V/RISC-V 개념

[RISC-V] 2편 RISC-V 명령어 집합 구조(ISA)

 

- 이번 글의 목적

  • RISC-V ISA가 어떻게 구성되는지 깊이 이해
  • 가변적 확장 메커니즘과 구조적 철학 정리
  • 기존 ISA(x86, ARM )와 비교하여 특징 분석
  • 예시 코드로 실제 명령어 동작 감각 제공

 

1. RISC-V ISA 개요: 모듈성의 극치

RISC-V ISA의 설계 철학은 다음의 한 문장으로 요약할 수 있다. 필요한 것만 가져와라, 나머지는 선택 사항이다.” 기존 ISA는 하나의 거대한 사양 안에 억지로 모든 기능이 들어간 반면, RISC-V는 기본 구성만 두고 나머지를 선택하도록 해 아키텍처 설계의 자유도를 극대화했다.

 

2. RISC-V ISA 구성 방식

RISC-V ISA는 크게 다음 구조로 이루어진다.

 

2.1 기본 ISA(Base ISA)

하드웨어가 반드시 구현해야 하는 최소 명령어 집합.

Base ISA 설명
RV32I 32-bit 정수 기반 기본 ISA
RV64I 64-bit 정수 기반 기본 ISA
RV128I 128-bit 정수 기반 기본 ISA(아직 상용 제품 없음)

여기서 ‘I’Integer Instructions 를 의미한다.

Base ISA는 아래의 모든 명령을 포함한다:

  • 산술/논리(ALU)
  • 메모리 로드/스토어
  • 제어 흐름(branch/jump)
  • 시스템 명령(환경 호출 등)

 

2.2 표준 확장(Standard Extension)

기능 확장 모듈. CPU 제조사는 필요하면 포함하고, 필요 없다면 제거한다.

대표 확장 목록:

확장 설명
M 정수 곱셈/나눗셈(Multiply/Divide)
A 원자적 연산(Atomic Instructions)
F 단정밀도 Floating Point
D 배정밀도 Floating Point
C 16-bit 압축 명령어(Compressed)
V 벡터 연산(Vector Extension)
B 비트 조작(Bit-Manipulation)
Zicsr CSR(Control & Status Register)
Zifencei 명령어 페치 Fence

예시:

  • 고성능 서버 CPU: RV64IMAFDCV(정수+부동소수점+압축+벡터)
  • 초저전력 센서 MCU: RV32IC(정수+압축)

 

2.3 커스텀 확장(Custom Extension)

기업 또는 연구기관이 직접 ISA를 확장하는 영역.

예시:

  • 보안 암호화 전용 명령어(Crypto Extension)
  • 영상/신호처리 전용 DSP 확장
  • AI 가속용 행렬곱(matmul) 명령어

이 확장성을 통해 RISC-V ARM이나 x86이 제공하지 못하는 혁신성을 보여준다.

 

 

3. RISC-V의 명령어 형식(instruction format)

RISC-V는 명령어 형식도 RISC 철학을 따르며 매우 단순하다. 모든 명령어는 고정 길이 32비트(C 확장 제외)이며, 명령 종류에 따라 다음의 6가지 타입을 사용한다. HW는 opcodefunct3를 통해 각 명령어를 구분한다.

(1) R-Type (Register-Register 연산)

| opcode | rd | funct3 | rs1 | rs2 | funct7 |

: add x1, x2, x3

 

(2) I-Type (즉치(immediate), 로드, 시스템 명령)

| opcode | rd | funct3 | rs1 | imm[11:0] |

: addi x5, x5, 4
: lw x2, 8(x1)

 

(3) S-Type (Store 명령)

| opcode | imm[4:0] | funct3 | rs1 | rs2 | imm[11:5] |

: sw x3, 12(x1)

 

(4) B-Type (조건 분기 branch)

| opcode | imm[11] | imm[4:1] | funct3 | rs1 | rs2 | imm[10:5] | imm[12] |

: beq x1, x2, label

 

(5) U-Type (상위 즉치 immediate)

| opcode | rd | imm[31:12] |

: lui x5, 0x12345000

 

(6) J-Type (jump)

| opcode | rd | imm[20] | imm[10:1] | imm[11] | imm[19:12] |

: jal x1, offset

 

도표: RISC-V 6개 명령어 형식 요약

타입 역할 예시
R 레지스터 연산 add
I 즉치·load addi, lw
S store sw
B 조건 분기 beq
U 상위 즉치 lui
J 점프 jal

 

 

 

4. RISC-V의 모듈형 ISA가 가져온 구조적 장점

 

단순한 하드웨어 구현

ISA 자체가 단순하므로,

  • 파이프라인 설계 쉬움
  • 디코더 회로 간소화
  • 고속 클럭 구현 유리

이는 특히 임베디드 칩 설계에서 매우 큰 장점이다.

 

소형·대형 모두 커버

  • 가벼운 MCU RV32IC
  • 고성능 서버용 RV64IMAFDCV

같은 ISA 철학 아래 설계된다.

 

확장 ISAs를 통한 기능 특화

산업별 특수 목적 칩을 만드는데 최적화되어 있다.

산업 필요한 확장
AI 가속기 V, Zmmul
통신/네트워크 B, A
금융 보안 암호화 확장 Xcrypto
IoT 센서 C, Zicsr

 

생태계 다양성(architecture heterogeneity) 생존

모두가 동일한 ARM 코어를 쓰는 세상과 달리,
RISC-V
는 다양한 회사가 각자 자신만의 CPU를 설계할 수 있게 한다.

 

5. 예시 코드로 보는 RISC-V ISA 작동 방식

아래는 두 수를 더한 뒤 메모리에 저장하는 간단한 코드.

 

   C 코드

int add_and_store(int a, int b, int* out) {

    int c = a + b;

    *out = c;

    return c;

}

 

   RISC-V Assembly

add_and_store:

    add  x10, x10, x11     # x10 = a + b

    sw   x10, 0(x12)       # *out = x10

    ret

 

분석

동작 명령어 ISA 타입
정수 덧셈 add R-type
메모리 저장 sw S-type
반환 ret (jalr 기반) I-type

단 두 줄의 명령어만으로 주요 연산이 정리된다. 이런 단순성이 바로 RISC-V의 강점이다.

 

 

 

6. 정리 — RISC-V ISA의 본질은선택의 자유

이번 글에서 살펴본 핵심은 다음과 같다.

 

단순한 Base ISA

RISC 철학을 그대로 계승하며 하드웨어 구현이 쉽다.

 

확장 가능한 모듈 시스템

M/A/F/D/V/C 등 확장을 선택적으로 조합할 수 있다.

 

커스텀 확장을 통한 차별화

기관/기업이 원하는 기능을 ISA에 직접 추가 가능하다.

 

다양한 명령어 타입

6개 명령어 형식으로 모든 기능을 표현할 수 있다.