Von Neumann Architecture
Von Neumann architecture는 1945년 John von Neumann이 제안한 컴퓨터 아키텍처로, 현대 대부분의 컴퓨터 시스템의 기본이 되는 설계이다.
특징
순차적 실행:
- 명령어를 메모리에서 한 번에 하나씩 순차적으로 가져와 실행
레지스터:
- 프로그램 카운터 (PC): 다음 실행할 명령어의 주소 저장
- 명령어 레지스터 (CIR): 현재 실행 중인 명령어 저장
- 메모리 주소 레지스터 (MAR): 접근할 메모리 주소 저장
- 메모리 데이터 레지스터 (MDR): 메모리와 주고받는 데이터 저장
- 누산기 (Accumulator): 연산 결과 임시 저장
버스 시스템:
- 데이터 버스: CPU와 메모리, 입출력 장치 간 데이터 전송
- 주소 버스: 메모리 주소 전송
- 제어 버스: 제어 신호 전송
Fetch-Decode-Execute 사이클:
- 명령어 인출 (Fetch)
- 명령어 해독 (Decode)
- 명령어 실행 (Execute)
핵심 구성 요소
제어 장치 (Control Unit):
- 프로그램의 명령어를 해석하고 실행을 제어한다.
- 다른 모든 구성 요소들의 동작을 조정한다.
- 마치 오케스트라의 지휘자와 같은 역할을 한다.
산술 논리 장치 (Arithmetic Logic Unit, ALU):
- 실제 계산과 논리 연산을 수행한다.
- 덧셈, 뺄셈, 곱셈, 나눗셈과 같은 수학적 연산을 처리한다.
- AND, OR, NOT과 같은 논리 연산도 수행한다.
메모리 (Memory):
- 프로그램과 데이터를 모두 저장한다.
- 각 메모리 위치는 고유한 주소를 가진다.
- 현대 컴퓨터에서는 RAM이 이 역할을 담당한다.
입력 장치 (Input Devices):
- 외부로부터 데이터를 받아들인다.
- 키보드, 마우스, 스캐너 등이 해당된다.
출력 장치 (Output Devices):
- 처리된 결과를 외부로 전달한다.
- 모니터, 프린터, 스피커 등이 해당된다.
작동 방식
폰 노이만 아키텍처의 작동 과정을 단계별로 살펴보자:
명령어 인출 (Fetch):
프로그램 카운터가 가리키는 메모리 주소에서 다음 실행할 명령어를 가져온다.
명령어 해석 (Decode):
제어 장치가 명령어를 해석하여 수행할 작업을 결정한다.
실행 (Execute):
ALU나 다른 하드웨어 구성 요소가 명령어를 실행한다.
저장 (Store):
결과를 메모리에 저장하고 다음 명령어로 이동한다.
폰 노이만 아키텍처의 특징과 장단점
장점:
- 단순성: 명확한 구조로 인해 설계와 구현이 비교적 단순하다.
- 유연성: 프로그램을 쉽게 수정하고 업데이트할 수 있다.
- 범용성: 다양한 종류의 프로그램을 실행할 수 있다.
단점:
- 폰 노이만 병목 현상: 메모리와 처리 장치 사이의 단일 통로로 인한 성능 제한이 있다.
- 순차적 실행: 명령어가 순차적으로 실행되어 병렬 처리가 제한된다.
- 저장 프로그램 개념:
- 프로그램과 데이터를 동일한 메모리에 저장
- 이로 인해 프로그램의 수정과 실행이 용이해짐
현대적 발전과 적용
현대 컴퓨터는 기본적으로 폰 노이만 아키텍처를 따르지만, 여러 가지 개선 사항을 도입했다:
캐시 메모리:
파이프라이닝:
병렬 처리: