이번 글의 목표
- RISC-V 메모리 모델의 일관성 규칙 이해
- RV32/RV64의 load/store 아키텍처 특징 분석
- 캐시 계층(L1/L2/L3)의 구조적 원리
- 가상 메모리 구조와 페이지 테이블
- Sv32, Sv39, Sv48, Sv57 번역 스키마 비교
- TLB의 동작과 성능 영향
- 실제 예시 코드와 메모리 접근 흐름 분석
1. RISC-V 메모리 모델: 단순함 속의 명확함
RISC-V는 Load/Store 아키텍처다.
연산은 레지스터 간에만 수행되며, 메모리 접근은 반드시 load/store 명령을 통해 이뤄진다.
✔ 메모리 접근의 기본 규칙
| 구분 | 의미 |
| Load | memory → register |
| Store | register → memory |
모든 메모리 접근은 다음 명령어 중 하나다.
- lb/lh/lw/ld
- sb/sh/sw/sd
- lr/sc (atomic)
- amoadd/amoor/... (atomic memory ops)
✔ Memory Ordering (RVWMO)
RISC-V는 RVWMO (RISC-V Weak Memory Ordering) 모델을 사용한다.
RVWMO 특징:
- Load→Store, Store→Load 간 순서 재배치는 가능
- FENCE 명령으로 순서 강제 가능
- 대부분 ARM 계열 아키텍처와 유사한 “weak memory model”
예시 — Weak Ordering 문제
다음 두 스레드가 있다고 하자.
Thread 1
x = 1;
flag = 1;
Thread 2
while(flag == 0) {}
print(x);
Weak ordering에서는 x=1이 flag=1보다 늦게 보일 수도 있다.
해결: fence rw, rw
이 fence는 이전 load/store가 모두 완료될 때까지 이후 명령을 지연시킨다.
2. 캐시 계층 구조
대부분의 RISC-V CPU는 다음 구조를 따른다.
| 레벨 | 특징 | 용도 |
| L1 I-Cache | Instruction 전용 | IF 단계 최적화 |
| L1 D-Cache | Data 전용 | Load/Store 최적화 |
| L2 Unified Cache | I+D 통합 | 대부분의 SoC |
| L3 Cache | 고성능 서버용 | 멀티코어 공유 |
✔ 캐시 일관성 (Coherency)
RISC-V 기본 ISA는 캐시 일관성 모델을 강제하지 않는다.
→ 멀티코어 시스템은 규격화된 Coherence protocol(MESI/MOESI/CHI 등)을 SoC 업체가 직접 구현해야 한다.
이 부분이 ARM과의 중요한 차이점이다.
3. 가상 메모리: Sv32, Sv39, Sv48, Sv57
RISC-V는 플랫폼별 메모리 크기에 따라 여러 형태의 가상 메모리 체계를 제공한다.
✔ 스킴 비교표
| 스킴 | 주소 길이 | 페이지 테이블 계층 | 용도 |
| Sv32 | 32bit VA | 2단계 | MCU·임베디드 |
| Sv39 | 39bit VA | 3단계 | 리눅스 일반 SoC |
| Sv48 | 48bit VA | 4단계 | 서버급 CPU |
| Sv57 | 57bit VA | 5단계 | 대규모 HPC |
4. MMU(메모리 관리 유닛)의 역할
MMU는 virtual address(VA)를 physical address(PA)로 변환한다.
MMU 동작 과정 요약
- CPU가 VA로 load/store 요청
- TLB에 매핑 확인
- TLB hit → 바로 PA
- TLB miss → page table walk 수행
- PTE(page table entry) 확인
- 물리 주소 생성
- 캐시/메모리 접근 수행
5. TLB (Translation Lookaside Buffer)
TLB는 주소 변환 속도를 비약적으로 높이는 핵심 요소다.
✔ TLB 구조
| 항목 | 설명 |
| ITLB | 명령어 fetch용 |
| DTLB | 데이터 접근용 |
| STLB | 공유 TLB(고급 CPU) |
✔ TLB miss의 비용
TLB miss는 page table walk를 발생시켜,
- 메모리 접근 2~4회
- 캐시 miss 가능
고성능 CPU에서는 매우 큰 penalty를 유발한다.
6. RISC-V의 메모리 보호 구조
✔ PMP (Physical Memory Protection)
임베디드 시스템에서 사용
- 물리 주소 기반 권한 제어
- M-mode에서 설정
- U/S-mode 접근 제어
✔ Virtual Memory + Page Table
리눅스 기반 시스템에서 사용
- 가상 주소 기반 보호
- 페이지 단위 권한 부여(R/W/X)
7. flush·sfence·fence의 역할
✔ 캐시 flush
ISA 자체는 캐시 flush를 정의하지 않는다(플랫폼 의존).
✔ sfence.vma
TLB 무효화 명령
가상 주소 공간 변경 시 필수.
예: sfence.vma
✔ fence, fence.i
Store-load 재정렬 금지
Instruction cache flush 등 제공
8. 정리 — RISC-V 메모리 아키텍처의 본질
이번 글의 핵심 포인트:
✔ RVWMO(약한 메모리 모델)
성능 극대화 + fence로 제어.
✔ 캐시 계층 구조 유연
I/D 분리, coherence 방식 자유.
✔ 다양한 가상 메모리 스킴
Sv32~Sv57까지 시스템 규모별 선택.
✔ TLB 기반 주소 변환 최적화
TLB miss는 큰 비용.
✔ MMU 구조가 단순하고 구현 자유도 높음
기업/기관이 원하는 형태로 커스텀 가능.
'RISC-V > RISC-V 개념' 카테고리의 다른 글
| [RISC-V] RV32I 레지스터 (0) | 2026.03.05 |
|---|---|
| [RISC-V] 5편 RISC-V의 미래: 기회와 도전 — ISA 생태계 전환기의 기술·시장 분석 (1) | 2026.03.04 |
| [RISC-V] 3편 RISC-V 명령어의 실제 실행 과정: 파이프라인·예외·트랩·CSR (0) | 2026.02.10 |
| [RISC-V] 2편 RISC-V 명령어 집합 구조(ISA) (0) | 2026.02.10 |
| [RISC-V] 1편 RISC-V란 무엇인가: 오픈 ISA의 태동과 산업적 의미 (1) | 2026.02.02 |