[2-1] Instruction Set Architecture (RISC-V) (1)

unnhyo·2025년 4월 29일

Computer-Architecture

목록 보기
4/4

✅ Instruction Set Architecture (ISA)란?

  • 하드웨어(Processor)에서 실행 가능한 명령어 집합.
  • 컴퓨터가 이해할 수 있는 언어이자, 소프트웨어와 하드웨어 사이의 인터페이스.
  • 프로그램 입장에서 보이는 시스템의 특성: 기능 동작(operations), 상태(state) 등을 포함.

🔹 ISA는 다양한 CPU에서도 유사한 구조를 가짐.

  • 공통된 기능 필요
  • 설계 목표: 성능↑, 비용/전력↓, 컴파일러/하드웨어 제작 쉬움

🧠 대표 ISA: ARMv7/v8, MIPS, RISC-V, x86, AMD64 등


✅ Microarchitecture (마이크로아키텍처)

  • 같은 ISA라도 여러 구현 방식이 존재함.
    • 예: x86 ISA → 286, 386, Pentium, Core 등으로 다양한 구현

💡
ISA는 명세이고, µarch는 그걸 구현한 방식!


✅ Von Neumann 구조와 ISA

  • Von Neumann 구조 기반: CPU + 메모리 + 입출력 장치로 구성
  • ISA는 그 위에서 동작하는 프로그래머 관점의 기능 명세임.

✅ ISA 예시 (RISC-V 스타일)

예시 명령어:

lw r1,1(r0)
lw r2,2(r0)
add r3,r1,r2
sw r3,0(r0)
j 15
  • 이 명령어들을 실행하면서 레지스터와 메모리 상태가 변화함.
  • ISA는 바로 이런 변화들을 정의하는 구조임.

✅ ISA의 주요 설계 철학: CISC vs. RISC

항목CISCRISC
컨셉복잡한 명령어단순한 명령어
명령어 수많음 (>1000개)적음 (~200개)
명령어 길이가변(1~15 바이트)고정(32bit)
명령어 실행여러 사이클1 사이클
코드 길이짧음
설계 난이도어려움쉬움
파이프라이닝어려움유리함
레지스터 수적음많음
전력 소비높음낮음

✅ RISC는 CPU 설계가 단순해서 임베디드 시스템에 적합

✅ CISC는 명령어 수가 적어서 코드 사이즈가 작음


✅ ISA 설계 이슈들

  1. 오퍼랜드 저장 위치: 레지스터, 메모리, 스택, 누산기
  2. 명시적 오퍼랜드 수: 0, 1, 2, 3개
  3. 오퍼랜드 지정 방식: register, immediate, indirect 등
  4. 오퍼랜드 타입/크기: int, float, string, vector 등
  5. 지원 연산: add, sub, mul, move, compare 등

✅ ISA 저장 구조 분류 (Storing Operands)

아키텍처특징예시
StackTOS에 암시적 저장(AB) - {A+(CB)}
Accumulator누산기 하나만 명시적add A → acc ← acc + mem[A]
Register모든 오퍼랜드 명시적add A, B, C → R(A) ← R(B) + R(C)
Memory-to-Memory모든 오퍼랜드가 메모리mul D,A,B / add E,A,E

✅ ISA의 오퍼랜드 수에 따른 분류

  • Register-Register (0,3) → RISC-V, ARM 등
  • Register-Memory (1,2) → Intel x86 등
  • Memory-Memory (2,2), (3,3) → VAX 등

✅ ISA 주소 지정 방식 (Addressing Mode)

방식예시설명
Register DirectAdd R4, R3R4 ← R4 + R3
ImmediateAdd R4, #3상수 더하기
DisplacementAdd R4, 100(R1)로컬 변수 접근
Register IndirectAdd R4, (R1)포인터
IndexedAdd R4, (R1 + R2)배열 인덱싱
DirectAdd R4, (1000)정적 주소 접근
Memory IndirectAdd R4, @(R3)이중 포인터
Auto IncrementAdd R4, (R2)+배열 순회
Auto DecrementAdd R4, (R2)-스택 구현
ScaledAdd R4, 100(R2)[R3]배열 인덱스 + 배수

✅ 오퍼랜드 타입과 크기

타입비트 수바이트 수
Character8 bit1 Byte
Half Word16 bit2 Bytes
Word32 bit4 Bytes
Double Word64 bit8 Bytes
Float (Single)32 bit4 Bytes
Double64 bit8 Bytes

✅ 지원 연산 종류

  • 산술/논리: add, sub, mul, div, and, or, xor, not
  • 데이터 이동: load, store, move
  • 제어: branch, jump, call, return
  • 시스템: OS 관련 명령
  • 실수연산: fadd, fmul, fdiv
  • 문자열, 그래픽 등도 확장 가능

✅ 바이트 순서 (Endianness)

종류설명예시
Little EndianLSB를 낮은 주소에 저장Intel, ARM, RISC-V
Big EndianMSB를 낮은 주소에 저장네트워크, IBM, SPARC

✅ “Word”란?

  • 고정된 크기의 데이터 단위 (ex. 32bit or 64bit)
  • 레지스터 크기, 메모리 버스 너비와 관련됨
  • x86에서는 word = 16bit, double word = 32bit

✅ SI vs IEC 단위 비교

SI (10진)IEC (2진)
KB = 10³KiB = 2¹⁰
MB = 10⁶MiB = 2²⁰
GB = 10⁹GiB = 2³⁰

profile
컴퓨터학부

0개의 댓글