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 증가시켜 다음 명령어를 수행한다.
'컴퓨터공학기초 개념 > 컴퓨터구조' 카테고리의 다른 글
15. CPU 내부구조 - 명령어의 구조 (0) | 2021.08.10 |
---|---|
--- 여기까지! 컴퓨터 구조, 번쩍! 복습하기! --- (0) | 2021.08.10 |
13. 논리회로 - 플립플롭(Flip-Flop) (2) | 2021.08.09 |
12. 논리회로 - 조합논리회로 (0) | 2021.08.06 |
11. 논리회로 - 카르노맵(karnaugh map) (0) | 2021.08.06 |
댓글