컴퓨터 구조의 메모리와 명령어 설계: Von Neumann·Harvard·RISC·CISC
Von Neumann·Harvard 메모리 구조와 RISC·CISC 명령어 집합 설계를 비교하고, 현대 프로세서의 융합 구조와 선택 기준을 정리한다.
2026-08-14 · 최초 발행 2026-01-16
컴퓨터 시스템을 바라보는 관점
컴퓨터 구조는 하드웨어가 조직되고 동작하는 방식을 설명하는 모델이다. 프로그래머가 접하는 시스템의 속성부터 그 속성을 구현하는 내부 방식까지 포함한다.
메모리와 버스를 어떻게 연결하는지는 Von Neumann과 Harvard로 구분한다. 명령어 집합을 어떤 철학으로 설계하는지는 RISC와 CISC로 구분한다. 둘은 경쟁하는 하나의 분류가 아니라 서로 다른 관점이다.
구조는 다음 계층에서 다룰 수 있다.
- ISA(Instruction Set Architecture): 명령어 집합, 레지스터, 주소 모드
- 마이크로아키텍처: ISA를 구현하는 방식
- 시스템 구조: 프로세서, 메모리, I/O를 연결하는 방식
시스템을 이루는 기본 요소는 CPU, 프로그램과 데이터를 담는 메모리, 외부 장치와 통신하는 입출력(I/O), 그리고 이들을 연결하는 버스다.
하나의 메모리와 버스를 공유하는 Von Neumann 구조
Von Neumann 아키텍처는 John von Neumann이 1945년에 제안한 저장 프로그램 방식(Stored Program Concept)이다. 프로그램과 데이터를 같은 메모리에 보관하고, 프로그램 카운터(PC)를 따라 명령어를 순차적으로 실행한다.
명령어와 데이터가 단일 메모리 공간에 함께 존재하며, 단일 버스로 전송된다는 점이 핵심이다. 프로그램 자체를 수정할 수 있고 메모리를 유연하게 사용할 수 있지만, 명령어 인출과 데이터 접근은 같은 경로를 두고 경쟁한다.
CPU는 명령어를 해석하고 제어 신호를 만드는 제어장치(CU), 연산을 수행하는 산술논리연산장치(ALU), 임시 데이터를 보관하는 레지스터로 구성된다. 메모리는 RAM에 프로그램과 데이터를 저장하고 선형 주소 공간과 바이트 단위 주소 지정을 사용한다. I/O 컨트롤러, 인터럽트 기반 통신, DMA(Direct Memory Access)는 입출력 시스템의 일부다.
같은 경로를 쓰면서 생기는 병목
명령어와 데이터가 하나의 버스를 공유하므로 두 대상에 동시에 접근할 수 없다. 이것이 Von Neumann 병목 현상이다. 명령어 인출과 데이터 접근이 충돌하고, 메모리 대역폭이 제한되며, CPU가 대기하는 상황으로 이어진다.
이를 완화하는 기법으로는 L1/L2/L3 계층의 캐시 메모리, 명령어를 겹쳐 실행하는 파이프라인, 데이터를 미리 불러오는 프리페칭, 명령어 흐름을 예측하는 분기 예측이 있다.
| 장점 | 단점 |
|---|---|
| 단순한 구조 | Von Neumann 병목 |
| 프로그래밍 유연성 | 보안 취약점(코드 수정) |
| 메모리 효율적 사용 | 동시 접근 불가 |
| 자기 수정 코드 가능 | 실시간 처리 제약 |
명령어와 데이터를 분리하는 Harvard 구조
Harvard 아키텍처는 Harvard Mark I 컴퓨터에서 유래했다. 명령어 메모리와 데이터 메모리를 물리적으로 나누고, 각각의 버스를 둔다. 따라서 명령어를 가져오는 작업과 데이터 읽기를 동시에 수행할 수 있다.
명령어 메모리는 ROM 또는 Flash로, 데이터 메모리는 RAM으로 구성할 수 있으며 두 영역은 독립적인 주소 공간을 갖는다. 명령어 버스는 명령어 메모리에, 데이터 버스는 데이터 메모리에 접근한다. 이 분리는 병렬 페치와 예측 가능한 타이밍을 가능하게 한다.
이 구조는 Von Neumann 병목을 해소하고 높은 처리량과 결정론적 타이밍을 제공해 실시간 처리에 적합하다. 반면 하드웨어가 복잡해지고, 메모리 낭비가 발생할 수 있으며, 자기 수정 코드는 사용할 수 없다.
| 장점 | 단점 |
|---|---|
| Von Neumann 병목 해소 | 하드웨어 복잡도 증가 |
| 높은 처리량 | 메모리 낭비 가능 |
| 실시간 처리 적합 | 자기 수정 코드 불가 |
| 결정론적 타이밍 | 유연성 감소 |
캐시와 주 메모리를 다르게 다루는 Modified Harvard
현대 프로세서는 순수한 Harvard 구조보다 수정된 Harvard 아키텍처를 사용한다. L1 캐시는 명령어와 데이터를 분리하는 Harvard 방식으로 두고, 주 메모리는 통합하는 Von Neumann 방식을 취한다. x86과 ARM 프로세서에서 채택되는 구성이다.
| 구분 | Von Neumann | Harvard |
|---|---|---|
| 메모리 구조 | 통합 | 분리 |
| 버스 구조 | 단일 | 이중 |
| 동시 접근 | 불가 | 가능 |
| 복잡도 | 낮음 | 높음 |
| 메모리 효율 | 높음 | 낮음 |
| 처리량 | 제한적 | 높음 |
| 적용 분야 | 범용 컴퓨터 | DSP, MCU |
단순성과 규칙성을 택한 RISC
RISC(Reduced Instruction Set Computer)는 단순하고 규칙적인 명령어 집합으로 파이프라인 실행 효율을 높이려는 설계 철학이다. 1980년대 버클리 RISC와 스탠포드 MIPS 프로젝트에서 시작됐다.
기본 연산 위주의 단순한 명령어, 고정 길이 명령어, 제한된 메모리 접근을 특징으로 한다. 로드/스토어 구조를 사용하고 레지스터를 많이 두어 메모리 접근을 줄이며, 하드와이어드 제어로 빠른 실행을 목표로 한다.
명령어 형식은 32비트 또는 64비트의 고정 길이이며, 필드 배치와 디코딩이 규칙적이다. 주소 모드는 적고, 실행은 대체로 단일 사이클로 이뤄진다. 레지스터 간 연산을 중심으로 하며 지연 분기(Delayed Branch)를 사용한다.
ARM은 모바일과 임베디드 시장에서 사용되며 저전력 설계, Cortex-A/R/M 시리즈, Apple Silicon, Qualcomm Snapdragon과 연결된다. RISC-V는 오픈소스 ISA와 모듈형 확장을 바탕으로 학술 및 상용 환경에서 활용되고 커스터마이징이 용이하다. MIPS는 네트워킹·임베디드 분야와 학술적 중요성, MIPS32/64로 알려져 있다. PowerPC는 과거 Apple Mac, PS3·Xbox 360 게임 콘솔, 임베디드 시스템에서 쓰였다.
복잡한 명령어와 호환성을 중시한 CISC
CISC(Complex Instruction Set Computer)는 다양한 복잡한 명령어를 제공해 프로그래밍 편의성과 코드 밀도를 높이는 설계 철학이다. 복잡한 연산을 수행하는 풍부한 명령어, 가변 길이 명령어, 다양한 주소 모드, 마이크로코드 기반 구현과 하위 호환성이 주요 특징이다.
명령어는 1~15바이트의 가변 길이로 인코딩이 복잡하고, 메모리-레지스터 연산과 다양한 주소 모드를 지원한다. 다중 사이클 명령어와 마이크로프로그램 제어를 사용하며, 파이프라인과 하드웨어 구현도 복잡해진다.
x86/x86-64는 PC와 서버 시장에서 사용되며 Intel Core, AMD Ryzen, 넓은 소프트웨어 생태계와 연결된다. VAX는 풍부한 명령어 집합과 다양한 데이터 타입을 가진 역사적 CISC의 대표 사례다.
현대 x86은 외부에는 x86-64 CISC 명령어를 제공하면서 내부에서는 이를 micro-ops(RISC-like)로 변환해 실행한다. 비순차 실행(Out-of-Order)도 이 내부 실행 구조에 포함된다.
명령어 집합 설계가 만드는 차이
| 특성 | RISC | CISC |
|---|---|---|
| 명령어 수 | 적음(100~200개) | 많음(수백~수천개) |
| 명령어 길이 | 고정 | 가변 |
| 실행 사이클 | 단일(대부분) | 다중 |
| 주소 모드 | 적음(2~3개) | 많음(10개 이상) |
| 레지스터 수 | 많음(32~128개) | 적음(8~16개) |
| 메모리 연산 | Load/Store만 | 직접 연산 가능 |
| 파이프라인 | 효율적 | 복잡 |
| 코드 밀도 | 낮음 | 높음 |
| 컴파일러 | 복잡한 최적화 필요 | 상대적 단순 |
RISC는 단순한 파이프라인으로 높은 클럭을 목표로 할 수 있고, 실행 시간이 예측 가능하며 저전력 설계와 슈퍼스칼라 구현에 유리하다. CISC는 적은 명령어로 복잡한 작업을 표현하고, 메모리 대역폭 효율과 레거시 호환성, 프로그래밍 편의성을 제공한다.
두 철학의 경계는 현대 프로세서에서 뚜렷하지 않다. x86은 프론트엔드에서 CISC 명령어를 디코드하고 백엔드에서 micro-ops(RISC-like)를 실행하며, 비순차 실행과 레지스터 리네이밍을 사용한다. ARM은 Thumb/Thumb-2의 가변 길이 명령어, NEON의 복잡한 SIMD 명령어, 조건부 실행 같은 CISC적 요소를 포함한다.
시스템 요구에 맞춰 고르는 기준
모바일은 저전력과 고효율을 이유로 ARM(RISC)을, 서버는 성능과 에코시스템을 고려해 x86 또는 ARM을 선택한다. 임베디드 환경에서는 저전력과 소형화 때문에 ARM과 RISC-V가 쓰이며, DSP에는 결정론적 타이밍을 위한 Harvard+RISC가 적합하다. PC는 소프트웨어 호환성 때문에 x86-64를 사용하고, AI 가속은 연산 특화 전용 ISA를 사용한다.
| 분야 | 권장 아키텍처 | 이유 |
|---|---|---|
| 모바일 | ARM(RISC) | 저전력, 고효율 |
| 서버 | x86, ARM | 성능, 에코시스템 |
| 임베디드 | ARM, RISC-V | 저전력, 소형화 |
| DSP | Harvard+RISC | 결정론적 타이밍 |
| PC | x86-64 | 소프트웨어 호환성 |
| AI 가속 | 전용 ISA | 연산 특화 |
앞으로는 CPU + GPU + NPU 통합, 도메인별 최적화 프로세서, 칩렛 기반 구성이 이기종 컴퓨팅의 축이 된다. 양자 컴퓨팅, 뉴로모픽 컴퓨팅, 인메모리 컴퓨팅, 광컴퓨팅도 새로운 컴퓨팅 패러다임으로 다뤄진다.