
1. Instruction Memory (명령어 메모리)
- 역할: CPU가 실행할 명령어를 저장합니다. 즉, 프로그램 코드가 저장된 메모리 공간입니다.
- 특징: 프로그램이 실행되는 동안 CPU는 명령어 메모리에서 명령어를 가져와 해석하고, 해당 명령어에 맞는 작업을 수행합니다. 이 메모리는 읽기 전용인 경우가 많으며, 특히 Harvard architecture에서는 명령어 메모리와 데이터 메모리가 물리적으로 분리됩니다.
- 예시:
- 마이크로컨트롤러의 플래시 메모리(Flash Memory)는 프로그램 코드를 저장하는 용도로 사용됩니다.
- 일반적인 컴퓨터에서 CPU가 실행하는 프로그램은 메인 메모리(RAM)에 적재된 후 instruction memory로 읽혀 실행됩니다.
2. Data Memory (데이터 메모리)
- 역할: CPU가 처리할 데이터를 저장합니다. 프로그램이 실행되는 동안 임시로 데이터를 저장하고 읽고 쓰는 작업을 수행하는 메모리입니다.
- 특징: 데이터 메모리는 주로 읽기와 쓰기 작업이 가능하며, 임시 저장소로 사용됩니다. Stack, heap, global, local 변수 등이 모두 데이터 메모리의 공간을 차지합니다. Von Neumann architecture에서는 명령어와 데이터가 동일한 메모리 공간을 공유합니다.
- 예시:
- CPU가 연산할 값을 저장하는 일반적인 RAM이 데이터 메모리 역할을 합니다.
- 예를 들어, 두 숫자의 합을 계산할 때, 이 숫자들은 데이터 메모리에 저장되고, CPU는 이 값을 읽어서 연산 후 결과를 다시 데이터 메모리에 저장합니다.
폰 노이만 구조의 병목 현상 (Von Neumann Bottleneck)
폰 노이만 구조는 명령어와 데이터를 같은 메모리 공간에서 처리하는 방식입니다. 이 구조에서는 CPU가 명령어를 인출(Fetch)하고 데이터를 읽고 쓰는 작업을 같은 버스를 통해 수행하기 때문에, 명령어와 데이터가 충돌하여 메모리 액세스 병목이 발생할 수 있습니다. 즉, CPU가 명령어를 가져오는 동안 데이터에 접근하지 못하고, 반대로 데이터를 읽거나 쓰는 동안 명령어를 가져올 수 없는 문제가 생깁니다.
이로 인해 메모리 대역폭이 제한되고, CPU 성능을 최대한 활용하지 못하게 됩니다. 특히, CPU 속도가 빨라지면 이 병목 현상은 더욱 두드러지게 나타납니다.
Harvard 구조의 등장
Harvard 구조는 이러한 병목 현상을 해결하기 위해 명령어와 데이터를 별도의 메모리 공간과 버스로 분리하여 처리하는 방식을 채택합니다.
- Instruction memory: 명령어를 저장하고 CPU가 인출하는 메모리
- Data memory: 데이터를 저장하고 읽고 쓰는 메모리
이렇게 두 메모리를 분리하면, CPU는 동시에 명령어를 인출하면서 데이터에 접근할 수 있게 되어 병목 현상을 줄일 수 있습니다. 즉, 명령어 처리와 데이터 처리 작업을 병렬로 수행할 수 있는 구조를 제공하므로 더 빠른 성능을 구현할 수 있습니다.
하버드 구조의 장점
- 동시 메모리 액세스: 명령어 인출과 데이터 읽기/쓰기가 동시에 이루어지기 때문에, CPU가 더 효율적으로 작동하고 메모리 대역폭이 늘어납니다.
- 메모리 성능 최적화: 명령어와 데이터 메모리를 각각의 특성에 맞게 최적화할 수 있습니다. 예를 들어, 명령어 메모리는 읽기 전용으로 빠른 접근 속도를 제공할 수 있고, 데이터 메모리는 읽기와 쓰기 속도를 균형 있게 고려할 수 있습니다.
'CPU ARCHITECTURE1 > CPU' 카테고리의 다른 글
| 05-1. Instruction Fetch(IF) (0) | 2024.09.30 |
|---|---|
| 05. CPU 5-Stage Pipeline (0) | 2024.09.30 |
| 04. SPR(Special Purpose Register) (0) | 2024.09.29 |
| 03. CPU main components (1) | 2024.09.29 |
| 01. Overall Architecture(Memory Hierarchy) (0) | 2024.09.29 |