https://zzugest1.tistory.com/80
CS) 폰노이만 구조
폰노이만 구조란 현대에 쓰이고 있는 모든 컴퓨터의 기본 설계도이다. 최초의 계산기 애니악은 사람이 일일이 전선을 뺐다 꼈다 하며 회로를 물리적으로 바꿔야했지만이러한 문제점을 해결하
zzugest1.tistory.com

폰노이만 구조에 이어서 CPU에 대해 자세히 정리를 하자면
CPU(중앙처리장치) : 컴퓨터의 두뇌 역할을 하며, 메모리에서 명령어를 읽어와 해석하거나 산술 연산이나 논리 연산을 수행하며 시스템 전체를 제어하는 하드웨어이다. 게임으로 치면, 유저의 입력을 받고 캐릭터를 이동키시는 모든 '생각'이 CPU에서 일어난다.
CPU의 내부에는 세가지 장치가 있다.
1. 제어 장치 : 메모리에서 명령어를 가져와 해석하고, CPU의 각 장치와 주변 기기에 신호를 보내는 장치
제어장치에의 역할로는
- 명령어 인출(Fetch) : 주기억장치(RAM)에 저장된 명령어를 가져온다.
- 명령어 해석(Decode) : 가져온 명령어가 무엇인지 분석한다.
- 제어 신호 발생 : 해석된 결과에 따라 산술 논리 장치나 다른 메모리에 제어 신호를 보내 명령을 실행하게 한다.
제어 장치는 자신이 직접 연산을 하진 않지만, 모든 부품이 조화롭게 움직이도록 컨트롤하는 핵심적인 역할을 수행하는 장치이다.
2. 산술 논리 장치 : 제어 장치가 시키는 대로 산술, 논리 연산을 수행하는 장치
산술 논리 장치는 이름대로 두가지 핵심 업무를 수행한다.
- 산술 연산 : 사칙 연산을 수행, 컴퓨터는 내부적으로 0과 1만 알기 때문에 모든 연산은 이진수 덧셈을 기초로 수행한다.
- 논리 연산 : AND, OR, NOT 등의 논리 연산을 수행한다.
3. 레지스터 : CPU내부의 아주 작은 임시 저장 공간으로, 당장 계산해야할 데이터나 계산 결과 등을 이곳에 잠시 보관한다.(컴퓨터에서 가장 빠른 저장소)
레지스터의 속도는 주기억장치(RAM)보다 수십 배는 빠르며, CPU가 연산을 처리하는 속도와 비슷하다.
용량이 아주 작기 때문에 CPU가 지금 당장 계산해야할 데이터나, 바로 다음에 실행해야 할 명령어의 주소를 저장한다.
레지스터의 종류는 아래와 같다
- Program Counter(프로그램 카운터) : 다음에 실행할 명령어의 메모리 주소를 가리킨다.
- Instruction Register(명령어 레지스터) : 메모리에서 가져온 현재 실행 중인 명령어를 담고 있다.
- Accumulator(누산기) : 연산의 중간 결과나 최종 결과를 잠시 보관한다.
- MAR(메모리 주소 레지스터) : 읽거나 쓸 메모리의 주소를 보관
- MBR(메모리 버퍼 레지스터) : 메모리에서 읽어온 데이터나 쓸 데이터를 보관
성능 좋은 레지스터를 써야하는 이유는 속도 차이 때문이다.
CPU가 연산할 때마다 느린 RAM에 직접 가서 데이터를 가져오면 CPU는 대부분의 시간을 기다리는데 써버리기 때문에
자주 쓰는 데이터는 레지스터에 두고 쓰게 하면 효율적이기 때문이다.
CPU는 전원이 켜져 있는 동안 무한히 아래 단계를 반복한다.
1. Fetch(인출) : 메모리에서 명령어를 가져온다.
2. Decode(해석) : 가져온 명령어가 무슨 뜻인지 해석한다.
3. Excute(실행) : 해석한대로 연산을 하거나 데이터를 이동시킨다.
4. Writeback(기록) 결과를 다시 레지스터나 메모리에 저장한다.
C++로 코드를 짜면 이는 CPU 명령어로 바뀐다. CPU가 한번에 처리할 수 있는 연산량은 한계가 있기 때문에 CPU가 덜 고생하게 코드를 짜는 "최적화"를 생각해야 한다.
'CS' 카테고리의 다른 글
| CS) 고급 언어, 저급 언어, 기계어 (1) | 2026.01.14 |
|---|---|
| CS) 컴파일(Compile)과 빌드(Build) (0) | 2026.01.14 |
| CS) 병렬처리(명령어 파이프라이닝) (0) | 2026.01.14 |
| CS) CISC와 RISC (0) | 2026.01.13 |
| CS) 폰노이만 구조 (0) | 2026.01.13 |