Chapter 6: Architecture | ISA - 소프트웨어와 하드웨어의 인터페이스

Chapter 6: Architecture | ISA - 소프트웨어와 하드웨어의 인터페이스
Harris & Harris · Digital Design & Computer Architecture

🏛️ Chapter 6: Architecture

ISA — 소프트웨어와 하드웨어의 계약서

프로세서를 설계하기 전에 먼저 정의해야 할 것이 있습니다. “이 프로세서가 어떤 명령어를 이해할 것인가?” 이 질문에 대한 답이 바로 ISA(Instruction Set Architecture)입니다. ISA는 소프트웨어(컴파일러, OS)와 하드웨어(프로세서) 사이의 계약서이며, Chapter 6은 MIPS RISC 아키텍처를 통해 이 핵심 인터페이스를 배웁니다. 2026년 최신 트렌드로는 MIPS의 설계 철학을 계승하면서 오픈소스로 진화한 RISC-V의 폭발적 성장을 함께 다룹니다.

📋 1. 명령어 집합 아키텍처 (ISA)

ISA는 프로세서가 이해하고 실행할 수 있는 명령어 집합이자 규칙의 총체입니다. 프로그래머(또는 컴파일러)가 하드웨어를 제어하기 위해 알아야 하는 모든 것 — 명령어 종류, 레지스터 수, 메모리 모델, 데이터 타입 — 을 정의합니다.

RISC (Reduced ISC) 명령어가 단순하고 규칙적. 고정 길이 명령어, Load/Store 아키텍처. 하드웨어 구현이 용이하고 파이프라이닝에 최적화. MIPS, ARM, RISC-V가 대표적.
🏗️ CISC (Complex ISC) 명령어가 복잡하고 다양. 가변 길이 명령어, 메모리 직접 연산 가능. 코드 밀도가 높지만 하드웨어 구현이 복잡. x86이 대표적.

교과서는 RISC의 대표적 예인 MIPS 아키텍처를 사용합니다. MIPS는 1980년대 스탠포드 대학교에서 John Hennessy가 설계한 RISC 프로세서로, 명확하고 깔끔한 설계 덕분에 수십 년간 컴퓨터 아키텍처 교육의 표준이 되었습니다.

📦 2. 레지스터와 메모리

프로세서는 데이터를 레지스터(프로세서 내부, 초고속)와 메모리(외부, 상대적 저속)에 저장합니다. MIPS의 설계 원칙 중 하나인 “Smaller is faster”에 따라, 레지스터 수를 32개로 제한하여 접근 속도를 극대화했습니다.

MIPS 레지스터 (주요 발췌)
이름번호용도
$zero$0항상 0을 반환 (하드와이어드)
$s0-$s7$16-$23저장 변수 (Saved, 호출 규약에 의해 보존)
$t0-$t9$8-$15,$24-$25임시 변수 (Temporary, 보존 불필요)
$a0-$a3$4-$7함수 인수 전달
$v0-$v1$2-$3함수 반환값
$ra$31복귀 주소 (Return Address)
$sp$29스택 포인터

MIPS 메모리는 바이트 주소 지정(Byte-addressable)이며, 하나의 워드(32비트 = 4바이트)에 접근하려면 주소가 4의 배수(Word-aligned)여야 합니다. 배열 A[i]의 주소는 A의 기저 주소 + i × 4로 계산됩니다.

🔧 3. 기계어 명령어 형식

MIPS는 하드웨어 설계의 단순성을 위해 딱 3가지 명령어 형식만 사용합니다. 모든 명령어가 고정 32비트 길이라는 것이 RISC의 핵심 특징입니다.

📐 R-Type (Register)

레지스터 간 산술/논리 연산. add, sub, and, or, slt 등.

R-Type Format (32 bits)
op
6b
rs
5b
rt
5b
rd
5b
shamt
5b
funct
6b

📐 I-Type (Immediate)

상수 연산, 메모리 Load/Store, 조건 분기. addi, lw, sw, beq, bne 등.

I-Type Format (32 bits)
op
6b
rs
5b
rt
5b
imm (immediate)
16 bits

📐 J-Type (Jump)

무조건 점프. j, jal 등.

J-Type Format (32 bits)
op
6b
addr (target address)
26 bits

💻 4. MIPS 어셈블리 프로그래밍

➕ 산술 연산

C → MIPS: f = (g + h) - (i + j) # 가정: f=$s0, g=$s1, h=$s2, i=$s3, j=$s4 add $t0, $s1, $s2 # $t0 = g + h add $t1, $s3, $s4 # $t1 = i + j sub $s0, $t0, $t1 # f = (g+h) - (i+j)

💾 메모리 접근 (배열)

C → MIPS: A[12] = h + A[8] # 가정: A 기저 주소=$s3, h=$s2 lw $t0, 32($s3) # $t0 = A[8] (8×4=32 byte offset) add $t0, $s2, $t0 # $t0 = h + A[8] sw $t0, 48($s3) # A[12] = 결과 (12×4=48 byte offset)

🔀 조건 분기 (if/else)

C → MIPS: if (i == j) f = g+h; else f = g-h; # i=$s3, j=$s4, f=$s0, g=$s1, h=$s2 bne $s3, $s4, Else # if i≠j, go to Else add $s0, $s1, $s2 # f = g + h (then) j Done # skip else Else: sub $s0, $s1, $s2 # f = g - h (else) Done: # 프로그램 계속

📞 5. 함수 호출 (Function Calls)

함수 호출과 복귀는 특정 호출 규약(Calling Convention)을 따라야 합니다. 이 규약이 없으면 레지스터 값이 함수 호출 도중 덮어써져 프로그램이 올바르게 동작하지 않습니다.

📤 호출: jal ProcAddr Jump and Link. 복귀 주소(PC+4)를 $ra에 저장하고 함수로 점프합니다. 인수는 $a0~$a3로, 반환값은 $v0~$v1로 전달합니다.
📥 복귀: jr $ra Jump Register. $ra에 저장된 복귀 주소로 점프하여 호출자(Caller)로 돌아갑니다.
📚 스택 (Stack) 함수 내에서 추가 저장 공간이 필요하면 $sp를 감소시켜(push) 스택에 저장하고, 복귀 전에 $sp를 증가시켜(pop) 복원합니다. LIFO 구조.
MIPS — 함수 호출 + 스택 사용 패턴 # 호출자 (Caller) addi $a0, $s0, 0 # 첫 번째 인수 전달 jal myFunc # 함수 호출 ($ra ← PC+4) add $s1, $v0, $zero # 반환값 사용 # 피호출자 (Callee: myFunc) myFunc: addi $sp, $sp, -8 # 스택 2워드 확보 (push) sw $ra, 4($sp) # $ra 저장 (중첩 호출 대비) sw $s0, 0($sp) # $s0 저장 (Callee-saved) # ... 함수 본문 ... lw $s0, 0($sp) # $s0 복원 (pop) lw $ra, 4($sp) # $ra 복원 addi $sp, $sp, 8 # 스택 해제 jr $ra # 호출자로 복귀

🚀 6. 2026년 산업 동향: RISC-V 혁명

교과서의 MIPS 아키텍처가 보여주는 RISC 설계 철학은 2026년 현재 RISC-V라는 오픈소스 ISA로 진화하여 전 세계 반도체 산업을 뒤흔들고 있습니다. UC Berkeley에서 시작된 학술 프로젝트가 x86, ARM과 함께 컴퓨팅의 “세 번째 기둥”이 되었습니다.

2026 UPDATE
🌍 RISC-V — MIPS의 설계 철학이 오픈소스로 꽃피다

RISC-V는 MIPS와 같은 RISC 철학(고정 길이 명령어, Load/Store 구조, 간결한 명령어 세트)을 계승하면서, 로열티 프리 오픈소스 ISA로 설계되어 누구나 자유롭게 커스텀 프로세서를 만들 수 있습니다.

시장 점유율 급성장: RISC-V 시장이 2026년 약 19억 달러 규모로 성장하며, 2031년까지 CAGR 41%로 106억 달러에 달할 전망. IoT 신규 설계의 55%+가 RISC-V를 채택.
NVIDIA 10억 코어 돌파: NVIDIA가 자사 제품 스택 전반에 걸쳐 누적 10억 RISC-V 코어 출하를 달성. GPU 내부의 마이크로컨트롤러에 RISC-V를 광범위하게 활용.
반도체 주권(Semiconductor Sovereignty): 중국(Alibaba T-Head), EU(DARE 프로젝트, 2.7억 유로 투자), 인도(Aheesa) 등이 x86/ARM 의존도를 줄이기 위해 RISC-V를 전략적으로 채택.
소프트웨어 생태계 성숙: Google이 RISC-V를 Android Tier-1 아키텍처로 지정. Linux, PyTorch, TensorFlow 등 주요 플랫폼이 RISC-V를 공식 지원.

📊 MIPS vs RISC-V: 교과서와 현실 비교

특성 MIPS (교과서) RISC-V (2026 현실)
설계 철학 RISC, 고정 32비트 명령어 RISC, 기본 32비트 + 16비트 압축(C 확장)
레지스터 32개 × 32비트 32개 × 32/64/128비트 (RV32/64/128)
명령어 형식 R, I, J (3종) R, I, S, B, U, J (6종, 더 체계적)
라이선스 상업 라이선스 (MIPS Tech) 오픈소스, 로열티 프리
확장성 고정 ISA 모듈러 확장 (M, A, F, D, V, Crypto...)
2026 현황 교육용으로 존속. 상업적 영향력 미미 IoT/자동차/데이터센터에서 급성장. 시장 $1.9B
📈 2026년 ISA 시장 판도
ARM모바일/임베디드 지배
x86 (Intel/AMD)서버/데스크톱 주력
RISC-VIoT/자동차/AI 가속 성장

IoT 신규 설계 기준 RISC-V 55%+. 전체 프로세서 시장 기준 약 15~25% (출처별 상이).

교육 패러다임의 변화

전 세계 대학의 컴퓨터 아키텍처 커리큘럼이 MIPS에서 RISC-V 중심으로 전환되고 있습니다. Harris & Harris 교과서의 최신판도 RISC-V를 채택했습니다. MIPS에서 배운 RISC 원리(고정 길이 명령어, Load/Store, 3종 명령어 형식, 호출 규약)는 RISC-V를 배울 때 거의 그대로 적용되므로, 이 교과서에서 배운 지식은 RISC-V 시대에도 완전히 유효합니다.

📋 핵심 요약

주제 핵심 포인트 키워드 / 명령어
ISASW-HW 인터페이스. RISC vs CISCMIPS, ARM, RISC-V, x86
레지스터32개 × 32비트. $s, $t, $a, $v, $ra, $spSmaller is faster
명령어 형식R(레지스터), I(상수/메모리), J(점프). 고정 32비트op, rs, rt, rd, funct, imm
어셈블리C→MIPS 번역. 산술, 메모리(lw/sw), 분기(beq/bne/j)add, sub, lw, sw, beq, j
함수 호출jal(호출) + jr $ra(복귀). 스택으로 레지스터 보존$a0-$a3, $v0, $ra, $sp
2026 트렌드RISC-V 오픈소스 ISA 폭발 성장. MIPS 철학 계승시장 $1.9B, CAGR 41%

댓글

이 블로그의 인기 게시물

📚 SDC 마스터 클래스 시리즈 | Chapter 1

📚 SDC 마스터 클래스 시리즈 | Chapter 2

📚 SDC 마스터 클래스 시리즈 | Chapter 3