본문 바로가기
컴퓨터공학기초 개념/컴퓨터구조

14. CPU 내부구조 - 레지스터

by devraphy 2021. 8. 10.

0. 시작하면서

- 이전 포스팅까지 논리회로에 대해서 배웠다.

- 그리고 플립플롭이 여러개 모이면 레지스터라는 것을 알게 되었다. 

- 이번 포스팅에서는 레지스터간의 연결 방식과 동작방식에 대해 알아보자.


1. 레지스터란 무엇인가?

- CPU 내부에서 명령어 또는 연산을 처리하면서 발생하는 데이터를 일시적으로 저장하는 기억장치

- 주기억장치(RAM)보다 저장용량이 적지만, 처리속도가 가장 빠르다.

- 그러므로 가격은 비싸고, 크기는 작다. 

- 여러개의 Flip Flop 이나 Latch 등을 연결하여 구성한다.  

- 휘발성 메모리이며, 읽고 쓰기가 가능하다. 


2. CPU의 구성요소  

- 컴퓨터에서 데이터 처리를 수행하는 부분을 CPU라고 한다.

- CPU는 다음 세가지 구성요소로 이루어져 있다. 

 

▶ 레지스터 세트(Register Set)

- 명령을 실행하는데 필요한 데이터를 보관하는 역할

 

▶ 산술논리 장치(ALU, Arithmetic Logic Unit)

- 명령을 수행하기 위한 마이크로 연산을 수행하는 역할

- 마이크로 연산은 레지스터에 저장된 데이터를 조작하기 위해 실행되는 동작을 말한다. 

 

▶ 제어 장치(Control Unit)

- 레지스터 세트 간의 정보 전송을 감시하는 역할 

- ALU에게 수행할 동작을 지시하는 역할

 


2. 레지스터의 종류 

a) 특수 전담 레지스터 

- 가장 중요한 레지스터로, 용도(역할)가 정해져 있는 레지스터

- 사용자가 직접 접근할 수 없다. 

 

▶ PC(Program Counter)

- 프로그램을 순차적으로 처리하도록 프로그램의 순서를 카운트하는 역할 

- 어떤 명령어가 몇번째 순서에 실행되는지를 기록하는 역할 

- 다음에 실행될 명령어의 메모리 주소를 기억하고 있다. 

- 다른 이름으로 IC(Instruction Counter) 또는 LC(Location Counter)라고도 부른다.

 

▶ MAR(Memory Address Register)

- 메모리 주소록

- 데이터의 위치를 알고 있다. 

- 비어있는 메모리 주소를 알고있다. 

 

▶ MBR(Memory Buffer Register)

- 메모리에 저장되기 전 임시적으로 저장되는 공간 

- MAR에게 메모리 주소를 요청한다. 

 

▶ IR(Instruction Register)

- Decoder에 들어가기 전에 명령어를 기억하는 역할

- 명령어의 op-code를 확인하여 어떤 연산을 수행하는지 찾는다. 

 

 

b) 데이터 레지스터(Data Register)

- 주기억장치에서 가져온 데이터를 저장하는 레지스터 

- 가져온 데이터의 크기와 동일한 크기를 할당 한다. 

 

▶ MBR(Memory Buffer Register) 

 

▶ WR(Working Register) / Accumulator

- 산술논리연산을 실행할 때, 연산 과정의 중간값이나 결과를 저장하는 역할

- ALU와 직접 연결되어 있는 레지스터 

 

▶ GR(General Register) / GPR(General Purpose Register)

- 다목적으로 사용되는 레지스터

- 여러가지 레지스터의 집합을 의미한다. 

- ALU와는 연결되어 있지 않다. 

 

 

c) 주소 레지스터(Address Register)

- 주기억장치에 접근하기 위해서, 주기억장치의 주소 일부 또는 전부를 기억하는 레지스터

 

▶ PC(Program Counter)

 

▶ MAR(Memory Address Register)

 

▶ Base Register

- 다음 실행할 프로그램의 위치를 저장하고 있는 레지스터

 

▶ Index Register

- 어떤 데이터를 다른 곳으로 연속해서 옮기고자 할 때 사용되는 레지스터

- 옮길 장소의 주소와 옮겨지는 장소의 주소를 모두 갖고 있다. 

 

 

d) 그 외

▶ OP(Operation Code) 

- IR에 전달되는 명령어의 구조 중 하나로, 명령 코드를 의미한다.

- 어떤 연산을 수행해야 하는지를 명시하는 부분이다. 

 

▶ OPRD(Operand)

- 피연산자라는 의미로, 연산이 되는 대상을 의미한다. 

- 즉, 어떤 데이터를 의미한다. 

 

▶ Decoder

- 실행된 명령어를 해석하는 역할

 

▶ SR(Status Register)

- CPU의 상태를 나타내는 특수목적의 레지스터

- 다음과 같은 연산 결과의 상태를 표시한다. 

- Z(zero), S(sign / 부호), V(overflow), C(carry), I(Interrupt) 등을 표시한다.  

 


3. CPU 내부구조 및 기본동작 

- CPU의 내부 구조와 기본 동작방식은 다음과 같다.

 

클릭하면 확대됩니다.

 

a) 예시를 통해 CPU 동작의 이해

- 아래 사진에 나온 예시는 위에서 본 CPU 동작순서와 동일하게 작동한다.

- ADD라는 명령어를 실행했을 때, 어떻게 처리되는지 확인해보자. 

클릭하면 확대됩니다.

▶ FETCH Cycle

- 1번 ~ 3번까지의 작업을 Fetch 라고 한다.

- 어떤 작업을 수행하는 과정이 아니라 데이터를 옮기는 과정을 의미한다. 

 

1. MAR ← PC

- 프로그램 카운터에서 다음 실행할 명령을 MAR에게 전달한다.

 

2. MBR ← MAR

-  MAR에서 명령(ADD)의 주소값을 확인한 후 메모리에서 데이터를 가져온다.

-  해당 데이터를 MBR에 저장한다. 

 

3. Instruction Register ← MBR

- MBR에 저장된 데이터를 IR에게 전달한다. 

- IR은 해당 명령을 Decoder에게 넘긴다. 

- Decoder는 어떤 명령인지를 확인한 후, 작업을 수행한다. 

 

4. MAR ← IR(OPRD)

- IR에서 OPRD를 확인하여 연산에 필요한 데이터의 주소값을 MAR에게 요청한다.

- OPRD는 피연산자를 의미한다. 즉, 연산의 대상이 되는 데이터를 말한다. 

 

5. MBR ← MAR

- MAR이 피연산자가 되는 데이터를 메모리에서 찾는다.

- 해당 데이터를 MBR에게 넘긴다. 

 

6. WR ← GR[IR]

- MBR로 부터 전달받은 피연산자를 IR에서 임시적으로 GR에 저장한다.

- 산술연산을 수행하기 위해 데이터를 GR에서 WR로 넘긴다. 

 

7. WR ← WR + MBR

- WR 과 MBR에 저장된 데이터를 가지고 ADD 명령을 수행한다. 

- 산술연산의 결과값을 WR에 저장한다. 

 

8. GR ← WR

- 산술연산의 결과값을 GR로 옮긴다. 

 

9. PC ← PC + 1

- 모든 과정이 완료된 후, PC 값을 1 증가시켜 다음 명령어를 수행한다.

 

댓글