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. 베이스 레지스터 주소 지정 방식
오퍼랜드 + 베이스 레지스터의 값 → 유효주소
베이스 레지스터 = 기준 주소
오퍼랜드 = 기준 주소로 부터 떨어진 거리
'CS > [혼자 공부하는 컴퓨터구조 + 운영체제]' 카테고리의 다른 글
[컴퓨터 구조] 5-3. ISA, CISC와 RISC (0) | 2024.05.03 |
---|---|
[컴퓨터 구조] 5-2. 효율적인 CPU를 위한 설계 기법 - 명령어 병렬 처리 기법 (1) | 2024.05.02 |
[컴퓨터 구조] 4-3. 명령어 사이클과 인터럽트 (0) | 2024.04.29 |
[컴퓨터구조] 2. 컴퓨터 정보 단위와 인코딩 (0) | 2024.04.24 |
[컴퓨터구조] 1-2. 컴퓨터구조 개요 (2) | 2024.04.22 |