
산술 논리 장치(ALU)와 제어장치
산술 논리 장치(ALU)는 CPU의 핵심 부품 중 하나로, 주로 계산과 논리 연산을 담당한다. ALU는 레지스터로부터 데이터를 받아 연산을 수행하고, 제어장치로부터 제어 신호를 받아 작업을 지시받는다. 연산 결과와 상태 플래그를 출력하여 시스템의 다른 부분에서 사용할 수 있게 한다.
제어장치는 CPU의 다른 부분과 외부 장치와의 상호작용을 관리한다. 클럭 신호, 현재 실행 중인 명령어, 상태 플래그, 그리고 제어 신호를 받아들이며, 이를 바탕으로 CPU 내부와 외부로 제어 신호를 보낸다.
레지스터
CPU에는 다양한 종류의 레지스터가 존재하며, 각각의 역할이 다르다.
- 프로그램 카운터(PC): 다음에 실행할 명령어의 메모리 주소를 저장한다.
- 명령어 레지스터(IR): 현재 실행 중인 명령어를 저장한다.
- 메모리 주소 레지스터(MAR): 접근할 메모리 주소를 저장한다.
- 메모리 버퍼 레지스터(MBR): 메모리와 데이터를 주고받을 때 사용하는 임시 저장소이다.
- 범용 레지스터: 데이터와 주소를 임시 저장하는 데 사용된다.
- 플래그 레지스터: 연산 결과나 CPU의 상태에 대한 추가 정보를 저장한다.
- 스택 포인터(SP): 스택의 최상단 위치를 가리킨다.
- 베이스 레지스터: 기준 주소를 저장하여 상대 주소 계산에 사용된다.
명령어 사이클
CPU는 명령어를 실행할 때 여러 단계로 나누어 처리한다. 이를 명령어 사이클이라고 하며, 아래 다섯 단계로 진행된다.
- 인출 단계: 명령어를 메모리에서 가져온다.
- 디코딩 단계: 가져온 명령어를 해석한다.
- 실행 단계: 해석된 명령어를 실행한다.
- 간접 단계: 필요한 경우 추가 메모리 참조를 수행한다.
- 인터럽트 단계: 인터럽트가 발생하면 해당 신호를 처리한다.
인터럽트와 인터럽트 서비스 루틴
인터럽트는 CPU의 정상적인 작업 흐름을 방해하는 신호로, 하드웨어 문제나 소프트웨어 예외 상황에서 발생할 수 있다. 인터럽트 서비스 루틴(ISR)은 이러한 인터럽트를 처리하기 위한 코드로 구성된 프로그램이다.
클럭 속도와 멀티코어 프로세서
클럭 속도는 CPU가 작동하는 속도를 의미하며, 클럭 속도가 높을수록 CPU는 더 빠르게 동작한다. 코어는 명령어를 실행하는 CPU 내의 독립적인 처리 장치이다. 멀티코어 프로세서는 여러 개의 코어를 포함하는 CPU로, 동시에 여러 작업을 처리할 수 있다.
스레드는 CPU에서 실행되는 작업 단위로, 하드웨어적 스레드와 소프트웨어적 스레드가 있다. 멀티스레드 프로세서는 하나의 코어로 여러 개의 스레드를 동시에 실행할 수 있는 CPU이다.
명령어 파이프라이닝과 병렬 처리
명령어 파이프라이닝은 여러 명령어를 겹쳐서 동시에 실행하는 기술이다. 슈퍼스칼라는 여러 개의 명령어 파이프라인을 두어 병렬 처리를 수행하는 기법이다. 비순차적 명령어 처리는 명령어가 순차적으로 처리되지 않고, 중단을 최소화하기 위해 비순차적으로 처리하는 방법이다.
명령어 집합 구조(ISA)
명령어 집합 구조(ISA)는 CPU가 소프트웨어를 이해하고 실행하는 방식에 대한 규칙이다.
CISC(Complex Instruction Set Computing)는 복잡하고 다양한 가변 길이 명령어를 사용한다.
반면, RISC(Reduced Instruction Set Computing)는 단순하고 적은 종류의 고정 길이 명령어를 사용한다.
기본 숙제
1. p. 125의 확인 문제 2번
설명에 맞는 레지스터를 보기에서 찾아 빈칸을 채워 보세요.
프로그램 카운터, 명령어 레지스터, 플래그 레지스터, 범용 레지스터
- ( 플래그 레지스터 ) : 연산 결과 혹은 CPU 상태에 대한 부가 정보를 저장하는 레지스터
- ( 프로그램 카운터 ) : 메모리에서 가져올 명령어의 주소를 저장하는 레지스터
- ( 범용 레지스터 ) : 데이터와 주소를 모두 저장할 수 있는 레지스터
- ( 명령어 레지스터 ) : 해석할 명령어를 저장하는 레지스터
2. p. 155의 확인 문제 4번
다음 그림은 멀티코어 CPU를 간략하게 도식화한 그림입니다. 빈칸에 알맞은 용어를 써 넣으세요

답 : 코어
'TIL::Today I Learn' 카테고리의 다른 글
[혼공컴운] '혼자 공부하는 컴퓨터구조 + 운영체제' 스터디 4주차 (0) | 2024.07.28 |
---|---|
[혼공컴운] '혼자 공부하는 컴퓨터구조 + 운영체제' 스터디 3주차 (0) | 2024.07.21 |
[혼공컴운] '혼자 공부하는 컴퓨터구조 + 운영체제' 스터디 1주차 (0) | 2024.07.07 |
Git Hooks, Husky, Lint-Staged, ESLint 활용하여 코드 품질 유지&협업하기 (0) | 2024.05.12 |
GitHub push 시 매번 암호(Token) 요구하는 현상 해결하기 (0) | 2024.05.12 |