폰 노이만형 아키텍처, 하버드 아키텍처
태그 :
- 개념
- 단일저장장치(메모리)에 연산 수행과 관련된 일련의 명령어와 연산에 필요한 또는 연산의 결과로 생성된 데이터를 함께 수용하는 Computing Machine 모델
I. Von Neumann Architecture와 Harvard Architecture의 개요
가. 폰 노이만 구조의 정의
- 단일저장장치(메모리)에 연산 수행과 관련된 일련의 명령어와 연산에 필요한 또는 연산의 결과로 생성된 데이터를 함께 수용하는 Computing Machine 모델
나. 폰 노이만 구조의 특징
- 프로그래머가 디자이한 가상 하드웨어를 기반으로 프로그램을 작성하고 H/W가 이에 맞게 동작
- CPU는 한번에 단 하나의 명령어만 실행가능(SISD: Single Instruction Single Data; Flynn의 분류)
- Fetch -> Decode -> Execute -> Stored”의 Cycle로 명령어 처리
- 하나의 메모리에 명령어, 데이터를 모두 저장해 메모리 버스의 병목현상 발생 및 성능향상을 위한 pipelining 구현 곤란 -> 명령 메모리와 데이터 메모리를 별도로 갖는 Harvard 구조로 발전
다. Harvard Architecture의 정의
- Von Neumann 구조의 문제점 극복을 위해, 명령어와 데이터 메모리가 구분되어 병렬적으로 작업이 처리되도록 구현된 Von Neumann을 변형한 컴퓨터 아키텍처
- 메모리를 분리하여 파이프라인 사용시 최적의 환경 제공
라. Harvard Architecture의 특징
- 하바드 아키텍쳐 컴퓨터에서는 CPU는 메모리로부터 명령어와 데이터를 동시에 사용할 수 있음
- 현재 명령을 마치는 것과 동시에 다음 명령을 가져올 수 있기 때문에 속도가 더 빠를 수 있음
- 데이터 메모리와 프로그램 메모리가 분리되어 각각의 어드레스/데이터 버스를 소유함
- Stored Program이란 측면에서는 Von Neumann Architecture와 같음.
II. Von Neumann Architecture와 Harvard Architecture의 비교
가. 구조적 특징 비교
나. 기능적 특징 비교
구분 |
Von Neumann |
Harvard |
---|---|---|
목적 |
CPU는 한번에 하나의 명령어만 실행가능 |
병렬처리를 위해 메모리 구분 |
메모리 |
- 하나의 메모리 공유 - 단일 read-write memory 사용 |
- 명령어, 데이터 메모리 분리 - 명령어 메모리는 read-only memory도 사용가능 |
프로세스 |
메모리 -> FI -> 메모리 -> DI -> 메모리 -> EI -> Store(메모리) 순차적으로 수행 |
- 명령어 메모리 -> FI - Store -> 데이터 메모리 - 동시에 명령어와 데이터 처리 가능 |
장점 |
공용 메모리 사용으로 상대적 구현 비용 저렴 |
파이프라이닝 기술 사용을 위한 최적의 환경 제공 |
단점 |
파이프라이닝 시 메모리 공유 문제 발생 |
- 별도 메모리 사용으로 구현 비용 증가 - 회로 구조 복잡 |
적용사례 |
일반적인 범용 CPU |
- Microchip Technology의 PIC - Atmel AVR |
III. 폰 노이만 구조의 문제점 및 해결방안
가. Von Neumann Architecture의 문제점
- CPU의 비효율적 활용: 한번에 하나의 명령어 처리로 상대적으로 빠른 속도의 CPU를 효율적으로 사용하지 못함
- 주기억장치의 병목현상 발생: 명령어와 데이터를 모두 주기억 장치에 저장하기 때문에 발생
나. Von Neumann Architecture의 문제점 해결방안
해결방안 |
설명 |
병렬처리 개념 도입 |
- 다중 프로세서/다중 데이터 스트임 처리가 가능한 병렬처리 컴퓨터 등장 - 명령어 병렬처리 기술(Pipeline, Super scalar 등) 적용 - SMP(Shared Memory Processor), MPP(Massively Parallel Processor)형태의 병렬처리 - 하나의 Processor에서 여러개의 thread를 처리하는 multi-core 및 hyper-threading 기술 출현 |
주기억 장치 병목 해결 |
- Bus를 instruction용과 data용으로 분리 - CPU에 Memory Controller를 내장하는 방식 도입 - CPU와 주기억장치사이에 고속의 cache memory 구성 - 최근에는 Bus를 읽기용과 쓰기용으로 세분화하는 Hyper transport 기술 출현 |
Harvard 아키텍처와 병행 사용 |
최근 폰 노이만과 하버드 구조를 함께 사용한 고성능 CPU 개발 - Harvard Architecture: 칩에 내장된 캐시 메모리는 명령어 캐시와 데이터 캐시로 분리 - Von Neumann Architecture: Cache가 적중하지 못한 경우 데이터와 명령어가 구분되지 않는 메모리에서 데이터를 로딩 |