본문 바로가기
CS/[혼자 공부하는 컴퓨터구조 + 운영체제]

[컴퓨터 구조] 4-1&2. CPU의 구성요소

by haeyoon 2024. 4. 25.

CPU 내부에는 ALU, 제어장치, 레지스터 라는 구성요소가 있다

1. ALU

(사진)

1.1. ALU가 받아들이는 정보

1 더하기 2 는?
계산할때 필요한 요소: 피연산자(1,2) + 수행할 연산어(더하기)

레지스터를 통해 피연산자를 받아들이고, 제어장치로부터 수행할 연산을 알려주는 제어신호를 받아들인다.

1.2. ALU가 내보내는 정보

연산결과(= 특정 숫자, 문자, 메모리 주소) & 플래그

연산결과는 메모리에 저장되지 않고 일시적으로 레지스터에 저장된다.
이유) CPU가 메모리에 접근하는 속도 <<<< 레지스터에 접근하는 속도

플래그

연산 결과에 대한 추가적인 정보
종류: 부호 플래그(연산 결과의 부호) / 제로 플래그(연산 결과가 0인지) / 캐리 플래그 / 오버플로우 플래그 / 인터럽트 플래그 / 슈퍼바이저 플래그 등

2. 제어장치

제어 신호를 내보내고, 명령어를 해석하는 부품
(사진)

2.1. 제어장치가 받아들이는 정보

1) 클럭 신호

클럭
컴퓨터의 모든 부품을 일사불란하게 움직일 수 있게 하는 시간 단위
컴퓨터의 모든 부품이 클럭 신호에 맞춰 작동한다 (O)
컴퓨터의 모든 부품이 한 클럭마다 작동한다 (X).   하나의 명령어가 여러 클럭에 걸쳐 실행될 수 있다

2) 해석해야 할 명령어

해석해야 할 명령어는 명령어 레지스터라는 레지스터에 저장된다
해석할 명령어 명령어 레지스터 제어신호 발생(컴퓨터 부품들에 수행해야 할 내용 알려줌)

3) 플러그 레지스터 속 플래그 값

ALU 연산에 대한 추가적인 상태정보 받아들인다

4) 시스템 버스, 그중에서 제어 버스로 전달된 제어 신호

제어신호는 CPU뿐 만 아니라 CPU외부 장치(입출력장치 등)에서도 발생한다
제어 장치는 제어버스를 통해 외부로부터 전달된 제어 신호 받아들인다


2.2. 제어장치가 내보내는 정보

- CPU 외부
   = 제어버스로 제어 신호 내보낸다
     - 메모리에
     - 입출력 장치에
- CPU 내부
     - ALU에
     - 레지스터에


3. 레지스터

CPU마다 레지스터의 이름, 크기 종류가 다양하다. 그중 8가지에 대해 알아보겠다.

1) 프로그램 카운터 (=명령어 포인터)

메모리에서 가져올 명령어의 주소를 저장

2) 명령어 레지스터

해석할 명령어를 저장
명령어 레지스터 속 명령어 받음 해석 제어신호 발생

3) 메모리 주소 레지스터

메모리의 주소를 저장하는 레지스터
CPU가 읽어 들이고자 하는 주소값 메모리 주소레지스터 주소버스

4) 메모리 버퍼 레지스터

메모리와 주고받을 값(데이터와 명령어) 저장
메모리에 쓰고 싶은값 & 메모리로부터 전달받은 값 메모리 버퍼 레지스터 데이터 버스

5) 플래그 레지스터

연산 결과 & CPU 상태에 대한 부가적인 정보를 저장

6) 범용 레지스터

데이터와 주소를 모두 저장

7) 스택 포인터

스택 주소 지정 방식
스택과 스택 포인터를 이용
* 스택: 후입선출 / 한쪽이 막힌 통과 같은 저장 공간
* 스택 포인터: 스택의 꼭대기를 가리키는 레지스터 = 마지막으로 저장한 값의 위치를 저장

8) 베이스 레지스터

번위 주소 지정 방식

오퍼랜드 필드의 값(변위) + 특정 레지스터의 값 유효 주소
(그림)

8.1. 상대 주소 지정 방식

오퍼랜드 + 프로그램 카운터의 값 유효주소
프로그램 카운터
읽어 들일 명령어의 주소

8.2. 베이스 레지스터 주소 지정 방식

오퍼랜드 + 베이스 레지스터의 값 유효주소
베이스 레지스터 = 기준 주소
오퍼랜드 = 기준 주소로 부터 떨어진 거리