출처: https://devraphy.tistory.com/298 [개발자를 향하여:티스토리]
⭐ CPU의 구성요소
- 컴퓨터에서 데이터 처리를 수행하는 부분을 CPU라고 한다.
- CPU는 다음 세가지 구성요소로 이루어져 있다.
-
레지스터 세트(RS : Register Set)
명령을 실행하는데 필요한 데이터를 보관하는 역할
-
산술논리 장치(ALU : Arithmetic Logic Unit)
명령을 수행하기 위한 마이크로 연산을 수행하는 역할
마이크로 연산은 레지스터에 저장된 데이터를 조작하기 위해 실행되는 동작을 말한다.
-
제어 장치(CU : Control Unit)
레지스터 세트 간의 정보 전송을 감시하는 역할
ALU에게 수행할 동작을 지시하는 역할
📌 레지스터의 종류
1. 특수 전담 레지스터
- 가장 중요한 레지스터
- 용도(역할)가 정해져 있는 레지스터
- 사용자가 직접 접근할 수 없음
📍 PC(Program Counter)
- 프로그램을 순차적으로 처리하도록 프로그램의 순서를 카운트하는 역할
- 어떤 명령어가 몇번째 순서에 실행되는지를 기록하는 역할
- 다음에 실행될 명령어의 메모리 주소를 기억하고 있음
- 다른 이름으로 IC(Instruction Counter) 또는 LC(Location Counter)라고도 부른다.
📍 MAR(Memory Address Register)
- 메모리 주소록
- 데이터의 위치를 알고 있다.
- 비어있는 메모리 주소를 알고있다.
📍 MBR(Memory Buffer Register)
- 메모리에 저장되기 전 임시적으로 저장되는 공간
- MAR에게 메모리 주소를 요청한다.
📍 IR(Instruction Register)
- Decoder에 들어가기 전에 명령어를 기억하는 역할
- 명령어의 op-code를 확인하여 어떤 연산을 수행하는지 찾는다.
2. 데이터 레지스터(Data Register)
- 주기억장치에서 가져온 데이터를 저장하는 레지스터
- 가져온 데이터의 크기와 동일한 크기를 할당 한다.
📍 MBR(Memory Buffer Register)
-CPU가 메모리로부터 읽거나, 저장할 데이터 자체를 보관하는 레지스터
📍 WR(Working Register) / Accumulator
- 산술논리연산을 실행할 때, 연산 과정의 중간값이나 결과를 저장하는 역할
- ALU와 직접 연결되어 있는 레지스터
📍 GR(General Register) / GPR(General Purpose Register)
- 다목적으로 사용되는 레지스터
- 여러가지 레지스터의 집합을 의미한다.
- ALU와는 연결되어 있지 않다.
3. 주소 레지스터(Address Register)
- 주기억장치에 접근하기 위해서, 주기억장치의 주소 일부 또는 전부를 기억하는 레지스터
📍 PC(Program Counter)
- 다음 실행할 프로그램의 위치를 저장하고 있는 레지스터
📍 MAR(Memory Address Register)
- CPU가 명령에 필요한 데이터를 가져오기 위해 데이터 주소를 저장하고 있는 레지스터
📍 Base Register(BR)
- 메모리 주소를 계산하는 레지스터, 상대주소를 절대주소로 바꾸는 데 필요한 기준주소 보관
📍 Index Register
- 어떤 데이터를 다른 곳으로 연속해서 옮기고자 할 때 사용되는 레지스터
- 옮길 장소의 주소와 옮겨지는 장소의 주소를 모두 갖고 있다.
4. 그 외
📍 OP(Operation Code)
- op-code라고도 함
- IR에 전달되는 명령어의 구조 중 하나로, 명령 코드를 의미한다.
- 어떤 연산을 수행해야 하는지를 명시하는 부분이다.
📍 OPRD(Operand)
- 피연산자라는 의미로, 연산이 되는 대상을 의미한다.
- 즉, 어떤 데이터를 의미한다.
📍 Decoder
📍 SR(Status Register)
- CPU의 상태를 나타내는 특수목적의 레지스터
- 다음과 같은 연산 결과의 상태를 표시한다.
- Z(zero), S(sign / 부호), V(overflow), C(carry), I(Interrupt) 등을 표시한다.