CPU의 구성

CPU는 크게 ALU와 제어장치, 레지스터로 나누어져 있다.
ALU

ALU는 산술 논리 장치라는 이름 그대로 산술 계산이나 논리 연산을 수행한다.
입력값으로 피연산자(Operand)와 명령코드(Opcode)를 받는다. 명령코드는 어떤 연산을 적용할 지를 결정해준다. ALU는 입력값을 바탕으로 연산을 수행하고 결과를 출력한다.
ALU가 출력하는 값은 연산의 수행 결과도 있지만, 결과에 따른 추가 정보도 출력한다. 결과가 오버플로우가 발생했는지, 0은 아닌지, 음수는 아닌지 등의 정보를 담은 조건코드가 함께 출력되며 이는 조건코드 레지스터에 저장된다.
** 참고


ALU가 수행할 수 있는 명령 중에는 시프트 연산도 있다. 시프트 연산을 어떤 숫자의 모든 비트를 왼쪽 또는 오른쪽으로 1비트씩 옮기는 역할을 수행한다. 시프터또한 플립플롭이나 셀렉터를 이용해서 설계할 수 있다.
제어 장치
제어장치는 메모리에 저장되어 있는 명령어를 해석해서 ALU에게 피연산자와 명령 코드를 알려주고, ALU의 결과값을 메모리에 돌려준다.
그러면 실행장치는 메모리에서 명령어를 가져와야 하는 위치를 어떻게 알 수 있을까? 컴퓨터에는 메모리의 위치를 가리키기 위한 프로그램 카운터가 내장되어있다. 실행 장치가 프로그램 카운터가 가리키는 주소에서 명령어를 읽어오면, 프로그램 카운터는 다음 명령어를 가져올 수 있도록 값을 증가시킨다.
명령어
| 모드 | 명령코드 (OpCode) | 주소 |
명령어는 모드, 명령코드와 연산에 사용할 데이터의 주소로 구성되어 있다.
A + B 의 연산을 하기 위해서 명령어에 데이터 A의 주소, 데이터 B의 주소, 결과값을 저장할 주소를 담을 수도 있다. 하지만 오퍼랜드의 크기가 12비트라면 각기 4비트씩밖에 담지 못하므로 16개의 주소만 표현할 수 있다. 그렇지만 하나의 주소만 담는다면 12비트 모두를 사용해 주소를 표현할 수 있다.

이것을 위해 누산기 레지스터라는 간단한 트릭을 사용할 수 있다. 이 누산기 레지스터에는 ALU가 계산한 결과가 저장된다. 그리고 A + B = C라는 명령을 좀 더 작게 쪼갠다. 이렇게 하면 한 명령이 하나의 데이터만 필요로 하기 때문에 보다 큰 주소값을 활용할 수 있게된다.

이때 명령어에 담긴 주소값이 데이터 그 자체라면 즉시 주소 지정, 데이터가 담겨 있는 주소를 가리킨다면 직접 주소 지정이라고 부른다. 그리고 주소를 한 번 더 거치는 간접 주소 지정이 있다. 그리고 이 주소 지정 방식이 모드에 담긴다. 세가지 주소 지정 모드 외에 네번째 코드가 담길때는 메모리와 관계 없는 연산인 경우이다.
나라마다 사용하는 언어가 다르기도 하듯이, CPU마다 사용하는 명령어가 조금씩 다르다. CPU가 이해할 수 있는 명령어들의 모음을 명령어 집합(ISA)라고 한다.
CISC는 복잡한 명령어 집합을 활용한다. 반면 RISC는 load-store 구조(메모리에 접근하는 명령어를 load와 store 두 개로 제한)를 채택해 단순한 명령어의 조합으로 프로그램을 실행한다.
-- 확인 문제 --
1. CPU는 크게 (1)과 (2), (3)으로 나누어져 있다. (2)가 메모리에 저장되어 있는 명령어를 해석해서 (1)에게 피연산자와 명령코드를 알려주면, (2)는 산술 계산이나 논리연산을 수행한다. 그리고 연산의 수행 결과나 결과에 따른 추가 정보(오버플로우 발생 여부, 음수 판정 등)를 (3)에 저장한다.
2. CPU마다 사용하는 명령어의 종류는 조금씩 다르다. 복잡한 명령어 집합을 활용하는 (1)과 단순한 명령어의 조합으로 프로그램을 실행하는 (2)로 구분할 수 있다. (2)는 메모리에 접근하는 명령어가 load와 store 두 가지이므로 load-store 구조라고도 불린다.
'CS' 카테고리의 다른 글
| [한 권으로 읽는 컴퓨터 구조와 프로그래밍] 8. 컴퓨터의 프로그래밍 언어 처리 (1) | 2024.04.16 |
|---|---|
| [한 권으로 읽는 컴퓨터 구조와 프로그래밍] 5. 컴퓨터 아키텍처 (1) | 2024.03.21 |
| [한 권으로 읽는 컴퓨터 구조와 프로그래밍] 3-2. 컴퓨터의 데이터 저장 방법 (1) | 2024.03.19 |
| [한 권으로 읽는 컴퓨터 구조와 프로그래밍] 3-1. 컴퓨터의 비트 기억 방법 (1) | 2024.03.19 |
| [한 권으로 읽는 컴퓨터 구조와 프로그래밍] 2. 전자 회로의 조합 논리 (2) | 2024.03.19 |