
CPU 구조
ALU (Arithmetic logic unit) : 각종 산술 연산(덧셈, 뺄셈, 곱셈, 나눗셈)과 논리연산(AND, OR, NOT)을 수행하는 회로로 이루어진 하드웨어 모듈이다.
Register : CPU 내부에 위치한 기억장치로서, 액세스 속도가 컴퓨터의 기억장치들 중에서 가장 빠르다. 그러나 내부 회로가 복잡하여 비교적 큰 공간을 차지하기 때문에 지정된 용도로만 사용되는 특수 목적 레지스터들과 적은 수의 일반 목적용 레지스터들만이 포함된다.
Control Unit : 명령어를 해석하고, 그것을 실행하기 위한 다양한 제어 신호를 순차적으로 발생하는 하드웨어 모듈이다. CPU가 제공하는 명령어들의 수가 많아질수록 Control Unit의 내부 회로는 더 복잡해지므로 최근에는 명령어의 수를 가능한 한 줄이고 명령어 형식을 단순화한 RISC(Reduced Instruction Set Computer) 설계 개념이 많이 사용된다.
CPU 레지스터
CPU 레지스터의 유형은 매우 다양한데 대표적으로 몇개를 알아보면 다음과 같다.
PC (Program Counter) : 다음에 인출될 명령어의 주소를 가지고 있는 레지스터이다. 각 명령어가 인출된 이후에는 그 내용이 자동적으로 1 증가 또는 명령어 길이에 따라 주소 단위만큼 증가한다.
IR (Instruction Register) : 가장 최근에 인출되었던 명령어(현재 실행중인)가 저장되어있는 레지스터이다.
AC (Accumulator) : 연산 결과 데이터를 일시적으로 저장하는 레지스터이다. 이 누산기의 길이가 한번에 연산 처리하는 데이터의 비트 수와 같다.
SR (Status Register) : 현재 CPU 의 상태를 가지고 있는 레지스터
MAR (Memory Address Register) : PC로부터 저장된 명령어 주소가 시스템 주소 버스로 출력 전에 일시적으로 저장된다.
MBR (Memory Buffer Register) : 기억장치로부터 읽혀진 데이터가 일시적으로 저장되는 버퍼 레지스터. 입출력 선들이 데이터 버스의 선과 동일하다.
CPU 명령어 사이클
CPU 명령어 사이클이란 CPU가 명령어 하나를 처리하기 위한 전체 흐름을 말한다.
인출(Fetch) → 해석(Decode) → 실행(Execute) → 기록(Writeback)
Fetch : 메모리상의 프로그램 카운터가 가리키는 주소의 명령어를 가져와 CPU의 IR에 적재한다.
Decode : 명령어의 해석. 이 단계에서 명령어의 종류(Op-code)와 타겟(피연산자) 등을 분석한다.
Execute : 해석된 명령어와 피연산자(Operand)에 따라 ALU에서 해당하는 연산을 수행한다.
Writeback : 처리 완료된 명령어 실행 결과(데이터)를 메모리에 기록한다.
명령어 사이클의 각 단계는 더 작고 세부적인 동작들로 구성되며, 이 세부 동작을 마이크로 연산(Micro-operations)이라고 부른다. 각 마이크로 연산은 CPU의 한 클럭 사이클에 실행되는 것이 일반적이다.
Ex. Fetch 단계의 마이크로 연산 예시
- MAR ← PC (프로그램 카운터 내용을 메모리 주소 레지스터에 복사)
- Memory read
- IR ← MBR (메모리 버퍼 레지스터에 있는 명령어를 명령어 레지스터로 이동)
- PC ← PC + 1 (다음 명령어를 위해 증가)
CPU 시스템 버스
주소버스 : CPU가 메모리나 입출력(I/O) 장치의 특정 위치를 지정하기 위해 주소 정보를 전송하는 버스다. 주소 버스의 폭은 최대 메모리 주소 지정 용량을 결정한다. 예를 들어 주소 버스가 8비트라면 최대 256개의 기억장소에 주소를 지정할 수 있다. 주소 정보는 항상 CPU에서 외부 장치 방향으로만 전달되므로 단방향 통신을 한다.
데이터 버스 : CPU와 메모리, 입출력 장치 간에 실제 데이터를 주고받는 버스다. 한 번에 전송할 수 있는 데이터의 폭(ex. 32비트, 64비트)을 정의하며, 데이터의 읽기/쓰기가 모두 일어나므로 양방향 통신을 한다.
- 폰 노이만 구조 : 명령어와 데이터가 하나의 메모리 공간과 데이터 버스를 공유한다.
- 하버드 구조 : 명령어와 데이터가 각자 물리적으로 분리된 메모리와 버스를 가진다.
- 현대 컴퓨터 구조 (수정된 하버드 구조) : CPU 내부의 L1 캐시 영역에서는 명령어와 데이터 버스를 분리하여 속도를 극대화(하버드 구조)하고, L2/L3 캐시 및 메인 메모리 영역에서는 회로의 효율성을 위해 통합된 메모리와 버스를 공유(폰 노이만 구조)하는 방식을 결합하여 사용한.
제어버스 : CPU가 외부 장치로 보내는 제어 신호(Memory Read/Write 등)와, 외부 장치가 CPU로 보내는 상태 신호(Interrupt 등)을 통틀어 일컫는다.

✓ 폰 노이만 구조가 혁신적인 이유
폰 노이만 구조 등장 이전의 초기 컴퓨터(ex. ENIAC)는 새로운 작업을 수행할 때마다 사용자가 직접 전선 플러그를 새로 연결하고 스위치를 조작하여 하드웨어 회로를 재구성해야 했다. 이에 존 폰 노이만은 명령어와 데이터를 하나의 메모리에 디지털 형태로 동시 저장하는 ‘프로그램 내장 방식’을 제시했고, 하드웨어 변경 없이 메모리 내 소프트웨어를 교체하는 것만으로 컴퓨터의 기능을 전환하는 것이 가능해졌다. 이를 기점으로 하드웨어와 소프트웨어의 분리가 이루어졌으며 컴퓨터는 특정 계산만을 반복하는 전용 기계에서, 프로그램에 따라 다양한 작업을 수행할 수 있는 범용 컴퓨터 형태로 발전하게 된 것이다.
CPU Pipeline
현대의 CPU는 명령어를 단계별로 나눠 동시에 실행하는 파이프라인 구조를 갖는다. 이는 명령어 처리의 효율을 높이기 위해 도입된 방식으로, 명령어들이 인출(Fetch), 해석(Decode), 실행(Execute), 기록(Writeback) 등의 단계를 병렬로 수행할 수 있게 하여 CPU의 처리량을 증가시킨다.
Cache Memory
CPU는 메인 메모리보다 훨씬 빠른 속도의 캐시(Cache)를 갖추고 있다. 캐시는 L1, L2, L3의 여러 단계로 구성되며, 자주 사용하는 데이터를 저장해 접근 시간을 줄인다. L1 캐시는 가장 작고 빠르며, L3는 가장 크고 느리지만 여전히 메인 메모리보다는 빠르다.
참고 :
'지식창고 > IT 지식' 카테고리의 다른 글
| TCP/IP stack (0) | 2024.01.10 |
|---|---|
| loop unroll (0) | 2023.12.19 |
| 스위치, 허브, 라우터, 공유기 차이점 (0) | 2023.12.16 |
| ISO 국가표준 규격서 무료 열람 (0) | 2023.12.10 |
| UTF-8, UTF-8(BOM) 차이 (0) | 2023.11.27 |