Lec 2 · Instruction set architecture(명령어 집합 아키텍처) I
정밀 정리 · 검증 2026-09-24 13:20
1개요
1.1ISA 는 컴퓨터의 behavioral specification(manual), microarchitecture 는 그 구현(datapath·control).
1.2von Neumann(stored program, PC 순차 실행) vs dataflow: 유연성 대 성능·효율의 trade-off.
1.3ISA 가 정의하는 것(programmer visible state, 명령 class, atomic)과 EDSAC → register → GPR 로의 진화.
1.4operand·addressing mode, VAX-11 로 대표되는 CISC 와 load-store RISC, ISA 진화와 x86 이 남은 이유.
1.5System/360 설계 원칙: 비동기 동작·parameterization·예비 bit·general purpose·model 간 호환성.
2섹션별 정리 상황·문제 → 원인 → 해결
2.10:32–1:46강의 시작·lecture note 안내
상황·문제화면·음성 확인, lecture note 다운로드 문의 응대 후 오늘 주제(ISA) 예고.
2.21:46–7:16Architecture vs microarchitecture: manual 로 기계를 배운다
상황·문제드론·1980년대 Apple 컴퓨터를 처음 쓸 때 manual 을 본다. 컴퓨터의 기능은 어떤 수준으로 기술하나?
원인내부 구현(microarchitecture)까지 봐야 쓸 수 있다면 너무 복잡하다. 운전자는 엔진 구조를 몰라도 운전한다.
해결architecture(ISA) = behavioral specification, instruction set manual 로 제공. microarchitecture = datapath·control logic 구성(구현).
- ISA 는 가장 추상적인 기능 기술, 구현을 몰라도 사용 가능
- manual/automatic transmission: 조작법(architecture) vs 변속기 구조(microarchitecture)
- 뉴스 등에서는 두 용어를 섞어 쓰지만 이 수업은 엄격한 정의를 따른다
2.2.r.1Instruction set architecture (Wikipedia) ↗ · ISA 와 microarchitecture 구분, CISC/RISC, 가변 길이 encoding
2.37:16–9:29예시: x86 manual, Neoverse N1·A100, circuit level
상황·문제architecture 와 microarchitecture 기술이 실제로 어떻게 생겼는가.
원인architecture 는 명령 기능(예: x86 ADD 의 입력·mode), microarchitecture 는 내부 block diagram 으로 기술된다.
해결x86 manual 의 ADD 두 쪽, Arm Neoverse N1 core·NVIDIA A100 도식을 비교. 그 아래 circuit level(gate·wire·transistor)은 이 수업에서 거의 다루지 않는다.
- 수업에서 쓸 RISC-V 는 x86 보다 훨씬 단순
- 수업 초점은 architecture 와 microarchitecture 두 수준
2.3.r.2NVIDIA A100 Tensor Core GPU Architecture whitepaper (NVIDIA) ↗ · A100 microarchitecture 도식 원문
2.49:29–11:44Stored program (von Neumann) architecture
상황·문제x86·RISC-V·ARM·MIPS 는 모두 von Neumann architecture 기반. 어떻게 동작하나?
원인program(명령)과 data 가 같은 memory 에 저장된다(stored program).
해결PC 가 가리키는 명령을 fetch → execute → PC 증가 → 반복. 명령은 순차 처리된다.
- processor 는 필요하면 memory 에서 data 를 읽고 결과를 다시 쓴다
- 현재 명령 위치 = program counter(PC)
2.511:44–21:04von Neumann vs dataflow
상황·문제같은 프로그램(v=a+b, w=b*2, …)을 dataflow 로도 표현. program order 와 저장 위치(v,w,x…)는 정말 중요한가?
원인의존성이 있는 명령끼리만 순서가 중요하다(add→sub). 순차 실행은 정확하지만 재배치 기회를 버려 성능 상한을 낮춘다. 중간값이 memory 를 오가는 것도 낭비.
해결dataflow 는 operand 가 오면 바로 실행, 결과를 다음 연산자로 직접 전달해 빠르고 효율적. 대신 von Neumann 은 같은 hardware 로 다른 계산을 할 수 있어 general purpose 에 유리.
- dataflow 는 계산을 바꾸려면 연산자 구성을 바꿔야 함
- 고정된 계산만 한다면 dataflow 가 더 빠르고 저전력일 수 있음
- target application 에 따라 선택, 이 수업은 von Neumann 위주
2.621:04–24:57ISA 가 정의하는 것
상황·문제RISC-V·x86 같은 ISA 에는 무엇이 명시되나?
원인IBM System/360 정의: architecture 는 programmer 가 보는 conceptual structure 와 functional behavior. 입력에 대한 동작을 알 수 있어야 한다.
해결machine/assembly programmer 에게 필요한 모든 정보: data type, memory model, programmer visible state, instruction set(format·addressing mode), system model(privilege·interrupt·I/O), external interface.
- ISA 는 명령만이 아니라 모든 조건·입력에 대한 기능적 동작을 규정
- memory model 은 이후 강의에서 다룸
2.6.r.1Instruction set architecture (Wikipedia) ↗ · ISA 와 microarchitecture 구분, CISC/RISC, 가변 길이 encoding
2.724:57–32:10Programmer visible state 와 명령 class, atomic
상황·문제명령은 programmer visible state(memory, register, PC)를 어떻게 바꾸나?
원인memory = address 로 index 되는 배열, register 는 ISA 마다 개수·크기·용도(general/special)가 다름, PC 는 현재 명령 주소.
해결3 class: arithmetic/logical(operand fetch→계산→저장→PC+), data movement(move/load/store), control flow(branch 조건·target 계산, jump 는 무조건). 모든 명령은 atomic.
- arithmetic 은 integer 와 floating-point 로 나뉨
- control flow 는 if-else, for/while 에 쓰임
- atomic: ADD R1,R2,R4 에서 fetch 후 계산 전에 R2=3, R4=4 가 바뀌지 않는다
2.832:10–41:05EDSAC(1949): hardcoded address 의 한계
상황·문제초기 ISA EDSAC: 5-bit opcode, 10-bit n, 단일 accumulator(ACC ← ACC ⊕ M[n]). 주소 n 이 명령에 hardcode 됨.
원인함수 복귀 주소(E n2)가 a+1 로 고정돼 b 에서 호출하면 돌아올 수 없다. loop 에서 A n1 이 항상 같은 원소만 읽는다.
해결주소를 바꿀 수 있는 수단, 즉 register 가 필요하다(다음 절).
- accumulator = 계산기처럼 한 operand 는 implicit
- A: 더하기, T: 저장 후 clear, E: ACC≥0 이면 branch, I: paper tape 입력, Z: 정지·벨
2.941:05–46:39Register architecture 의 진화
상황·문제hardcoded address 문제를 어떻게 풀었나? 왜 처음부터 32개 register 를 두지 못했나?
원인register 는 transistor(초기엔 vacuum tube)가 많이 들어 비쌌다. fabrication 기술 발전(Moore's law)으로 transistor 가 싸졌다.
해결accumulator → accumulator + address register(register indirect, 초기엔 special purpose) → 주소 register 산술 지원 → general-purpose register(32~128개).
- 복귀 주소를 register r 에 두면 a+1, b+1 로 바꿔 돌아갈 수 있음
- 기술 비용 하락으로 storage 와 기능이 늘었다
2.1046:39–52:50Operand 개수·위치: CISC vs RISC, load-store
상황·문제ALU 명령의 operand 는 몇 개이고 memory 에 있어도 되나?
원인monadic(EDSAC, 나머지는 implicit) → dyadic(IBM 360, 첫 operand 가 in/out) → triadic(MIPS, out,in1,in2). x86·VAX(CISC)는 memory operand 허용, MIPS·RISC-V(RISC)는 register 만.
해결register 만 쓰는 방식 = load-store architecture: load → register 계산 → store. 같은 연산의 변형 수도 VAX(매우 많음)·x86 vs MIPS(적음)로 다르다.
- CISC 는 단순 ISA 에 기능을 계속 더해 복잡해진 결과
- RISC: 단순한 명령 집합으로도 충분한 유연성
- 성공 여부는 순수한 완성도 외 요인에도 좌우 → 둘 다 널리 쓰임
2.10.r.1Complex instruction set computer (Wikipedia) ↗ · memory operand 를 ALU 명령에서 직접 쓰는 CISC (x86, VAX)
2.1152:50–55:40Memory addressing mode
상황·문제memory 위치를 명령에서 어떻게 지정하나?
원인EDSAC 처럼 주소를 hardcode(absolute)하는 것 외에도 register 값을 쓰는 방법들이 있다.
해결absolute(LD rt,10000), register indirect(LD rt,(rbase)), displaced/based(offset+GPR[rbase]), indexed(GPR[rbase]+GPR[rindex]) 등.
- GPR[rbase]: rbase 는 register ID, GPR[rbase] 는 그 register 의 값
- 슬라이드의 memory indirect·auto inc/dec 는 강의에서 따로 설명하지 않음
2.11.r.1Addressing mode (Wikipedia) ↗ · absolute·register indirect·base+offset·indexed·memory indirect·autoincrement
2.1255:40–1:00:09VAX-11: 복잡한 ISA 의 정점과 가변 길이 encoding
상황·문제addressing mode·명령·register 를 계속 더하며 ISA 가 복잡해졌다. VAX-11 은 그 극단.
원인모든 addressing mode × operand format × 300개 이상 opcode 조합, 원형 이중 연결 리스트·4차 다항식 평가 같은 특수 명령, 1~56 byte 가변 길이 encoding.
해결가변 길이는 memory 를 아끼지만 decode 시 앞 비트를 봐야 길이를 알 수 있어 복잡. 고정 길이면 decode 가 단순. DEC 는 이후 RISC 인 Alpha 로 이행.
- 최초의 상용 32-bit 기계(슬라이드: DEC, 1977)
- 특수 명령은 대부분의 경우 필요 없음
2.131:00:09–1:06:12RISC 의 특징과 ISA 진화, x86 이 살아남은 이유
상황·문제RISC 는 무엇이 단순한가? ISA 는 왜 단순→복잡→단순으로 변했나?
원인RISC: 2-input 1-output 연산, register-to-register ALU, load/store 로만 memory 접근, branch 종류 제한, 모든 명령 동일 bit 수. assembly 가 아닌 compiler 생성 코드를 목표로 함.
해결초기엔 기술·경험 부족으로 단순, assembly 프로그래밍·memory 부족으로 복잡(CISC), 빠른 memory·cache·compiler 로 다시 단순(RISC). x86 이 여전한 것은 호환성·자본 등 기술 외 요인.
- 예: MIPS, RISC-V. ARM 은 엄밀한 RISC 는 아니지만 RISC 에 가까움
- Patterson & Ditzel 1980 논문 읽기 권장
2.13.r.1Reduced instruction set computer (Wikipedia) ↗ · load/store·고정 길이 encoding, Patterson & Ditzel 1980 인용
2.13.r.2Complex instruction set computer (Wikipedia) ↗ · memory operand 를 ALU 명령에서 직접 쓰는 CISC (x86, VAX)
2.141:06:12–1:13:09ISA 를 설계한다면: System/360 의 설계 원칙
상황·문제정답 없는 문제. target 도메인·기술·산업 상황에 따라 다르지만 최소 10~20년 쓸 수 있어야 한다.
원인component 속도와 기술은 계속 변하고, 미래에 어떤 명령이 필요할지 모른다.
해결asynchronous 동작, storage·CPU·I/O 개수 parameterization, 예비 bit 예약, standard interface, general purpose(code-independent 연산, 세밀한 addressing), model 간 호환성.
- 유효한 프로그램은 자원만 충분하면 configuration A·B 모두에서 실행
- invalid 프로그램은 같은 결과를 낼 필요 없음
- x86·IBM 360 성공 이유 중 하나가 호환성
2.151:13:09–1:15:34읽기 과제·독서 모임 안내
상황·문제P&H Ch.2(+Appendix D), Patterson & Ditzel 1980 논문 읽기(선택). Zoom 독서 모임은 카메라 on·마이크 off, 채팅 토론. 어려우면 한국어 설명도 가능.
2.15.r.1Computer Organization and Design RISC-V Edition 2e companion (Elsevier) ↗ · P&H online appendix (Survey of Instruction Set Architectures 포함)
3핵심 개념
3.1instruction set architecture (ISA)(명령어 집합 아키텍처)
programmer 가 관찰·제어할 수 있는 기계 동작의 명세. data type·state·명령·system model 포함.
3.1.r.1Instruction set architecture (Wikipedia) ↗ · ISA 와 microarchitecture 구분, CISC/RISC, 가변 길이 encoding
3.2microarchitecture(마이크로아키텍처)
ISA 의 구현. datapath 와 control logic 의 구성.
3.3stored program / von Neumann architecture(저장 프로그램 아키텍처)
명령과 data 를 memory 에 두고 PC 로 순차 fetch·execute.
3.4dataflow architecture(데이터 흐름 아키텍처)
operand 가 모두 오면 실행, PC 없음. 고정 계산엔 빠르지만 유연성 낮음.
3.5programmer visible state(프로그래머 가시 상태)
memory, register, PC(, processor status). 명령은 이 상태를 바꾸는 방법.
3.6atomic instruction(원자적 명령어)
fetch·계산·저장 단계 사이에 operand 값이 바뀌지 않는 것처럼 동작.
3.7accumulator(누산기)
한 operand 가 implicit 인 register. EDSAC 은 단일 accumulator 구조.
3.8general-purpose register (GPR)(범용 레지스터)
data·주소 모두 담는 register. RISC 는 보통 32개, Itanium 128개.
3.9load-store architecture(로드-스토어 아키텍처)
ALU 는 register 만 사용, memory 는 load/store 로만 접근.
3.10CISC / RISC
CISC: 다양한 명령·memory operand(x86, VAX). RISC: 단순·고정 길이·load-store(MIPS, RISC-V).
3.10.r.1Complex instruction set computer (Wikipedia) ↗ · memory operand 를 ALU 명령에서 직접 쓰는 CISC (x86, VAX)
3.10.r.2Reduced instruction set computer (Wikipedia) ↗ · load/store·고정 길이 encoding, Patterson & Ditzel 1980 인용
3.11addressing mode(주소 지정 방식)
absolute, register indirect, displaced/based, indexed 등 memory 주소 지정법.
3.11.r.1Addressing mode (Wikipedia) ↗ · absolute·register indirect·base+offset·indexed·memory indirect·autoincrement
3.12variable-length encoding(가변 길이 인코딩)
memory 절약 vs 길이를 먼저 알아내야 하는 복잡한 decode (VAX 1~56 byte).
3.13binary compatibility(이진 호환성)
유효한 프로그램이 다른 model 에서도 그대로 실행. x86·IBM 360 의 강점.
4스스로 확인
4.1architecture 와 microarchitecture 의 차이를 자동차 비유로 설명하면?
답
architecture = 운전 manual(조작법), microarchitecture = 변속기·엔진의 실제 구성.
4.2von Neumann 에서 program order 는 항상 중요한가?
답
의존성 있는 명령 사이에서만 중요. 순차 실행은 정확성을 보장하지만 재배치 기회를 잃는다.
4.3dataflow 대비 von Neumann 의 장점은?
답
같은 hardware 로 다른 계산을 수행할 수 있는 유연성(general purpose).
4.4EDSAC 의 hardcoded 주소가 만드는 두 문제는?
답
여러 곳에서 호출한 함수가 호출 위치로 복귀 불가, loop 에서 배열의 다음 원소 접근 불가.
4.5초기 기계가 32개 register 를 두지 못한 이유는?
답
register 에 필요한 transistor(vacuum tube)가 비쌌기 때문. 기술 발전으로 비용이 내려갔다.
4.6load-store architecture 에서 C = A + B 는 어떻게 하나?
답
A, B 를 register 로 load → register 끼리 add → 결과를 C 로 store.
4.7가변 길이 encoding 의 장단점은?
답
장점: memory 절약. 단점: 앞 bit 를 봐야 길이를 알아 decode 가 복잡.
4.8RISC 가 우수하다면 x86 이 여전히 널리 쓰이는 이유는?
답
호환성, 대량 생산 자본·성능 대비 비용 등 기술 외 요인.
5참고 자료
5.1Instruction set architecture (Wikipedia) ↗ · ISA 와 microarchitecture 구분, CISC/RISC, 가변 길이 encoding
5.3Reduced instruction set computer (Wikipedia) ↗ · load/store·고정 길이 encoding, Patterson & Ditzel 1980 인용
5.7Computer Organization and Design RISC-V Edition 2e companion (Elsevier) ↗ · P&H online appendix (Survey of Instruction Set Architectures 포함)

























