앞선 포스팅에서 CPU는 메모리에 저장된 명령어를 읽고, 해석하고, 실행하는 장치라 했습니다. 그리고 CPU 내부에는 계산기인 ALU, 명령어를 읽고 해석하는 제어장치, 작은 임시 저장 장치인 레지스터라는 구성 요소가 있습니다. 이번 장에서는 각 구성요소와 CPU 작동 원리를 학습합니다.
ALU
ALU는 계산기입니다. 1 + 2라는 계산을 위해서는 1, 2라는 피연산자와 +라는 수행 연산이 필요합니다. 그래서 ALU는 레지스터를 통해 피연산자를 받아들이고, 제어장치로부터 수행할 연산을 알려주는 제어 신호를 받아들입니다.
그렇다면 ALU가 반환하는 정보는 무엇일까요?
① 수행 결과
수행 결과는 특정 숫자나, 문자, 메모리 주소가 될 수 있습니다. 그리고 이 결괏값은 바로 메모리에 저장되지 않고 일시적으로 레지스터에 저장됩니다. 레지스터에 접근하는 것이 메모리에 접근하는 것보다 더 빠르기 때문입니다.
② 플래그
플래그는 연산 결과에 대한 추가적인 정보입니다. 결과가 음수인지, 결괏값이 너무 크다 등의 추가 정보를 나타냅니다. 이러한 플래그는 플래그 레지스터라는 레지스터에 저장됩니다.
제어장치
제어 장치는 제어 신호를 내보내고, 명령어를 해석하는 부품입니다. 그렇다면 제어장치가 무엇을 받아들이고, 무엇을 내보내는지 학습합니다.
1. 제어장치가 받아들이는 정보
1) 클럭 신호
클럭이란 컴퓨터의 모든 부품을 일사불란하게 움직일 수 있게 하는 시간 단위입니다.
2) 해석해야할 명령어
명령어 레지스터로부터 해석할 명령어를 받아들이고, 해석한 후 제어 신호를 발생시켜 컴퓨터 부품들에 수행해야할 내용을 전달합니다.
3) 플래그 레지스터 속 플래그 값
4) 제어 버스로 전달된 제어 신호
2. 제어장치가 내보내는 정보
1) CPU 외부에 전달하는 제어 신호
제어 버스로 제어 신호를 내보낸다. 이러한 제어 신호에는 크게 메모리에 전달하는 제어 신호와 입출력 장치에 전달하는 제어 신호가 있습니다.
2) CPU 내부에 전달하는 제어 신호
① ALU에 전달하는 제어 신호: 수행할 연산을 지시하기 위해
② 레지스터에 전달하는 제어 신호: 레지스터 간에 데이터를 이동시키거나 레지스터에 저장된 명령어를 해석하기 위해
레지스터
프로그램 속 명령어와 데이터는 실행 전후로 반드시 레지스터에 저장됩니다. 각 레지스터의 종류와 역할에 대해 학습합니다.
1. 프로그램 카운터(PC)
메모리에서 가져올 명령어의 주소, 즉 메모리에서 읽어 들일 명령어의 주소를 저장하는 레지스터.
2. 명령어 레지스터
메모리에서 읽어 들일 명령어를 저장하는 레지스터. 제어장치는 명령어 레지스터 속 명령어를 읽고 해석한 후 제어신호를 내보냅니다.
3. 메모리 주소 레지스터
메모리의 주소를 저장하는 레지스터.
4. 메모리 버퍼 레지스터
메모리와 주고 받을 값을 저장하는 레지스터. 메모리에 쓰고 싶은 값이나 메모리로부터 전달 받은 값은 메모리 버퍼 레지스터를 거칩니다.
5. 범용 레지스터
데이터, 주소 모두를 저장할 수 있는 레지스터.
6. 플래그 레지스터
연산 결과 or CPU 상태에 대한 부가적인 정보를 저장하는 레지스터.
레지스터를 사용한 주소 지정 방식
스택 포인터(stack pointer)는 스택 주소 지정 방식이라는 주소 지정 방식에 사용되고, PC(Program Counter)와 베이스 레지스터는 변위 주소 지정 방식이라는 주소 지정 방식에 사용됩니다.
※ 특정 레지스터를 이용한 주소 지정 방식 1: 스택 주소 지정 방식
스택 포인터란 스택에 마지막으로 저장한 값의 위치, 맨 꼭대기의 위치를 저장하는 레지스터입니다. 스택이 어디까지 차있는지를 알려주는 놈이죠. 아래 그림에서처럼 4가 들어오면 스택 포인터는 4번지를 가리킵니다.
메모리 안에 스택처럼 사용할 영역이 정해져 있습니다. 이를 스택 영역이라고 하며, 암묵적으로 요 공간은 스택으로 사용할거야! 라고 약속된 영역입니다.
※ 특정 레지스터를 이용한 주소 지정 방식 2: 변위 주소 지정 방식
변위 주소 지정 방식이란 오퍼랜드 필드의 값(변위)과 특정 레지스터의 값을 더하여 유효 주소를 얻어내는 주소 지정 방식입니다.
변위 주소 지정 방식에는 오퍼랜드 필드의 주소와 어떤 레지스터를 더하는지에 따라 크게 두가지 방식이 있습니다.
① 상대 주소 지정 방식
오퍼랜드와 PC의 값을 더하여 유효 주소를 얻어내는 방식. PC에는 다음으로 수행할 명령어의 주소가 저장되어 있습니다. 만약 음수 -3이라면 CPU는 읽기로한 명령어로부터 '세번째 이전' 번지로 접근합니다.
② 베이스 레지스터 주소 지정 방식
오퍼랜드와 베이스 레지스터의 값을 더하여 유효 주소를 얻는 방식. 상대 주소 지정 방식과 유사하게 베이스 레지스터가 '기준 주소' 역할을 합니다. 기준 주소와 '기준 주소로부터 떨어진 거리' 역할을 하는 오퍼랜드 값을 더하여 유효 주소를 얻는 것이죠.
'Computer Science > 컴퓨터 구조' 카테고리의 다른 글
RAID (0) | 2023.03.27 |
---|---|
입출력 장치 (0) | 2023.03.26 |
CPU - 명령어 사이클과 인터럽트 (0) | 2023.03.20 |
명령어와 주소 지정 방식 (0) | 2023.03.13 |
컴퓨터의 기본 구조 (0) | 2023.03.13 |