컴퓨터 구조의 발전: 폰 노이만 구조와 하버드 구조 비교
컴퓨터 구조는 컴퓨터 시스템의 기본적인 구조와 동작원리를 배우는 이론입니다.
대부분의 현대 컴퓨터들은 폰 노이만 컴퓨터 구조 설계 방식을 따르고 있습니다. 폰 노이만 구조는 존 폰 노이만이 제시한 컴퓨터 아키텍처로 프로그램 내장 방식이라고도 불립니다.
컴퓨터의 역사
순번 | 항목 | 주요 내용 |
---|---|---|
1 | 해석기관 (Analytical Engine) | - 1830년대 초반, 찰스 배비지가 설계한 기계식 계산기 • 복잡한 방정식을 순차적으로 풀 수 있도록 설계 • 프로그램 가능한 최초의 기계식 컴퓨터 개념 제시 |
2 | 천공 카드 시스템 (Punched Card System) | - 19세기 후반, 허먼 홀러리스가 고안 • 종이 카드에 구멍을 뚫어 정보를 입력하고 처리 • 초기 컴퓨터 데이터 처리에 널리 활용됨 |
3 | 1세대 컴퓨터 (1940년대 후반 ~ 1950년대 중반) | - 진공관 회로 사용 - 폰 노이만 구조 채택 - 기계어 및 어셈블리어 사용 • 대표 기종: ENIAC, EDVAC, UNIVAC I |
4 | 2세대 컴퓨터 (1950년대 후반 ~ 1960년대 중반) | - 트랜지스터 사용으로 소형화 및 신뢰성 향상 - 운영체제(OS) 개념 등장 • 다중 프로그래밍 기술 도입 |
5 | 3세대 컴퓨터 (1960년대 중반 ~ 1970년대 초반) | - 집적회로(IC) 사용 - 캐시 메모리(Cache Memory) 최초 도입 • 시분할 처리(Time-Sharing) 기술 도입 |
6 | 4세대 컴퓨터 (1970년대 중반 ~ 1990년대) | - 마이크로프로세서(Microprocessor) 개발 - 가상 기억 장치(Virtual Memory) 등장 • 개인용 컴퓨터(PC) 대중화 |
7 | 5세대 컴퓨터 (1990년대 이후) | - 비 폰 노이만 구조 연구 시작 • 병렬 처리, 인공지능(AI), 신경망 컴퓨터, 양자 컴퓨팅 연구 활발 |
반도체 기술 발전에 따른 법칙
법칙 | 주요 내용 |
---|---|
무어의 법칙 (Moore’s Law) | - 1965년, 고든 무어(Gordon Moore)가 제안 • 집적회로(IC)에 집적될 수 있는 트랜지스터 수가 약 12개월마다 2배로 증가할 것이라 예측 • 이후 기술 발전 속도 조정으로 18개월, 최근에는 24개월 주기로 수정 • 컴퓨터 성능 향상과 가격 하락에 대한 기술적 지표 |
황의 법칙 (Hwang’s Law) | - 2002년, 황창규 박사가 제시 • DRAM 메모리 용량은 1년마다 2배씩 증가할 것이라는 법칙 • 메모리 기술 발전 추이를 설명하는 주요 이론으로 활용 |
폰 노이만 구조
폰 노이만 구조는 컴퓨터 아키텍처의 일종으로 기본적인 컴퓨터 시스템의 구성과 동작 방식을 설명하는 개념입니다. 폰 노이만 아키텍처의 핵심 아이디어는 프로그램과 데이터가 동일한 메모리 공간에 저장된다는 것입니다.
동작 방식
- Fetch (명령어 인출 단계)
- 현재 프로그램 카운터(PC)가 가리키는 주소에서 명령어를 메모리로부터 인출
- 인출 후, PC를 업데이트하여 다음 명령어를 준비
- Decode (명령어 해독 단계)
- 인출한 명령어를 제어장치가 해독
- 어떤 동작을 수행할지 결정
- Execute (명령어 실행 단계)
- 해독된 명령어에 따라 연산 수행
- ALU 또는 메모리, 입출력 장치와 연동하여 결과 처리
특징
- 프로그램 내장 구조
- 명령어와 데이터를 같은 메모리에 저장
- 프로그램을 수정하거나 교체하는 것이 용이
- 순차적 명령어 처리
- 프로그램 카운터(PC)에 따라 명령어를 순차적으로 인출하고 실행
- 메모리 단일성
- 명령어와 데이터가 동일한 메모리 공간에 존재
- 메모리 시스템 분리 불필요
- 구조의 단순성
- 설계와 구현이 비교적 간단하여 초기 컴퓨터 개발에 적합
- 범용성
- 하나의 하드웨어로 다양한 프로그램을 실행할 수 있음
- 특정 작업 전용이 아니라 범용 처리 가능
한계점
- 폰 노이만 병목 현상 (Neumann Bottleneck)
- 명령어와 데이터를 하나의 버스(공용 경로)를 통해 전달하다 보니, CPU 처리 속도와 메모리 접근 속도 차이로 병목현상 발생
- CPU는 빠른데 메모리 대역폭이 좁아 대기 시간 증가
- 메모리 접근 지연 (Memory Latency)
- 연산은 초고속으로 처리 가능하지만, 메모리에서 데이터를 가져오거나 저장하는 시간이 상대적으로 길어 전체 성능 저하
- 대용량 데이터 처리나 고속 계산 작업에서는 치명적
- 순차적 명령어 처리의 비효율성
- 기본적으로 순차적 명령어 실행(PC 기반)이기 때문에 대량 데이터나 복잡한 연산에서 병렬 처리 저효율
- 현대적 병렬 연산(멀티코어, GPU)과는 구조적 차이
비 폰 노이만 구조
폰 노이만 구조의 한계를 극복하기 위해 등장한 다양한 컴퓨터 아키텍처를 의미합니다. 주로 메모리 병목 문제를 해결하고, 병렬성 강화, 고속 처리, 특정 작업 최적화를 목표로 설계되었습니다. 대표적인 비 폰 노이만 구조로는 하버드 구조, 병렬 처리 구조, 뉴로모픽 컴퓨팅, 양자 컴퓨팅 등이 있습니다.
병렬 처리 구조(Parallel Processing Architecture)
여러 개의 프로세서(또는 코어)가 동시에 다수의 작업(Task)을 처리하는 구조입니다. 작업을 분할하여 병렬로 수행함으로써 전체 처리 속도를 향상시킵니다.
뉴로모픽 컴퓨팅(Neuromorphic Computing)
인간 뇌의 신경망(Neuron Network) 구조와 동작 원리를 모방하여 설계한 컴퓨터 시스템입니다.
양자 컴퓨팅(Quantum Computing)
양자역학(Quantum Mechanics)의 원리를 이용하여 처리하는 컴퓨터입니다. 정보 단위로 비트(Bit) 대신 큐비트(Qubit)를 사용합니다.
하버드 구조
비 폰 노이만 구조 중 하나로, 명령어와 데이터를 완전히 분리된 메모리와 버스를 통해 처리하는 구조입니다. 이러한 방식을 통해 명령어 읽기와 데이터 읽기/쓰기를 동시에 병렬로 수행할 수 있어 메모리 병목 문제를 완화할 수 있습니다.
구성 요소
- 중앙 처리 장치(CPU)
- 프로그램의 실행을 담당하는 핵심 구성 요소
- 연산, 제어 및 데이터 전송을 수행
- 프로그램 메모리(Instruction Memory)
- 프로그램 명령어가 저장되는 공간
- CPU는 명령어를 순차적으로 읽어들여 실행
- 데이터 메모리(Data Memory)
- 데이터가 저장되는 공간
- CPU는 데이터를 읽어들여 연산을 수행하거나 결과를 저장
- 명령어 세트 (Instruction Set)
- 프로세서가 이해하고 실행할 수 있는 기본 명령어 집합
- 명령어는 CPU가 수행해야 할 작업을 지시하는 역할
- 입출력 장치(I/O)
- 사용자와 컴퓨터 간의 상호 작용을 위한 장치로 데이터를 입력하거나 결과를 출력하는 역할
동작 방식
- 명령어 읽기 (Instruction Fetch)
- CPU는 명령어 메모리에서 다음에 실행할 명령어 인출
- 명령어 버스를 통해 빠르게 인출 가능
- 프로그램 카운터(PC)가 명령어 위치를 지정
- CPU는 명령어 메모리에서 다음에 실행할 명령어 인출
- 명령어 해석 및 데이터 읽기 (Instruction Decode & Data Fetch)
- CPU는 읽어온 명령어 해석
- 명령어에 따라 필요한 데이터를 결정
- CPU는 데이터 메모리에서 필요한 데이터를 별도의 데이터 버스를 통해 인출
- CPU는 읽어온 명령어 해석
- 연산 및 결과 저장 (Execute & Write Back)
- CPU 내부의 연산 장치(ALU)가 데이터를 사용하여 연산을 수행
- 연산 결과를 다시 데이터 메모리에 저장
- CPU 내부의 연산 장치(ALU)가 데이터를 사용하여 연산을 수행
- 입출력 처리 (I/O Operation)
- 명령어에 따라 필요한 경우, CPU는 입출력 장치와 통신
- 데이터를 외부로 출력하거나, 외부로부터 입력을 받아 저장
- 명령어에 따라 필요한 경우, CPU는 입출력 장치와 통신
폰노이만 구조와 하버드 구조의 차이점
구분 | 폰 노이만 구조 (Von Neumann Architecture) | 하버드 구조 (Harvard Architecture) |
---|---|---|
메모리 구성 | - 명령어(Instruction)와 데이터(Data)를 하나의 메모리 공간에 함께 저장 - 프로그램 코드와 데이터가 같은 주소 공간을 공유 | - 명령어와 데이터를 별도의 메모리 공간에 각각 저장 - 프로그램 코드 메모리와 데이터 메모리가 물리적으로 분리 |
버스 구성 | - 명령어와 데이터가 동일한 버스(전송 통로)를 통해 전송 - 하나의 버스만 존재하므로 명령어 인출(fetch)와 데이터 접근(access)을 동시에 처리할 수 없음 | - 명령어용 버스와 데이터용 버스를 별도로 구성 - 명령어 인출과 데이터 접근을 동시에 병렬로 처리 가능 |
처리 방식 | - 명령어 인출과 데이터 접근이 순차적으로 이루어짐 - 한 번에 하나의 작업만 가능하여 속도 저하 발생 가능 (버스 경합) | - 명령어 인출과 데이터 접근이 병렬로 이루어짐 - 동시에 여러 작업이 가능하여 처리 속도 향상 |
속도 및 병목 현상 | - ‘폰 노이만 병목(Von Neumann Bottleneck)’ 발생 - CPU가 메모리와 데이터를 주고받을 때 병목이 생겨 성능 저하 우려 | - 병렬 데이터 흐름으로 병목 현상이 감소 - 더 높은 메모리 대역폭 제공 가능 |
설계 복잡도 및 비용 | - 구조가 단순하여 설계와 구현이 용이 - 하드웨어 비용이 비교적 저렴 | - 구조가 복잡하여 설계와 구현이 어려움 - 별도의 메모리 및 버스 추가로 하드웨어 비용 상승 |