1. Register
Register는 CPU내부에 위치한 기억장치다. 프로그램이 실행될 때 명령어와 데이터는 레지스터에 저장된다.
2. Register 종류
Register의 종류는 다양하다.
- 프로그램 카운터
- 명령어 레지스터
- 메모리 주소 레지스터
- 메모리 버퍼 레지스터
- 플래그 레지스터
- 범용 레지스터
- 스택 포인터
이외에도 더 많은 레지스터가 있지만, 우리는 이 7가지만 공부해 보겠다.
1) 프로그램 카운터(Program Counter, PC)
프로그램 카운터는 다음에 실행할 명령어의 주소를 저장하는 공간이다.
2) 명령어 레지스터(Instruction Register, IR)
PC에서 넘어온 명령어 주소를 바탕으로 어떤 명령어를 실행할지 저장하는 공간이다.
3) 메모리 주소 레지스터(Memory Address Register, MAR)
메모리의 주소를 저장하는 공간을, CPU가 읽어오고자 하는 주소 값을 주소 버스로 보낼 때 MAR을 거친다.
4) 메모리 버퍼 레지스터(Memory Buffer Register, MBR)
메모리와 주고받을 값을 저장하는 공간이다.
메모리에 쓰고 싶은 값이나, 전달받은 값이 저장된다.
즉, CPU가 주소버스로 내보낼 값은 MAR, 데이터 버스로 주고받을 값은 MBR을 통해 이동한다.
위 4개의 레지스터를 활용하여 예시를 보자.
① CPU로 실행할 프로그램이 다음과 같이 메모리에 저장되어 있다.
② 프로그램을 실행하기 위해 PC에는 첫 번째 주소인 1000이 저장된다.
③ 1000번지 주소를 읽기 위해 MAR에 1000을 저장한다.
④ CU(제어장치)에서 MAR에 해당하는 주소를 읽어오라고 명령한 후, 해당 값이 MBR에 저장되고, PC 증가한다.
⑤ 이후 MBR에 저장된 값은 명령어 레지스터(IR)로 이동하여, 그 명령어를 실행한다.
이 과정을 계속 반복하면서 프로그램이 실행된다.
하지만 엄격하게 따지면 이 과정은 완전하지 않다.
좀 더 자세한 내용을 알고 싶으면 [컴퓨터 구조] Data Path - basic을 참고.
https://hccode0419.tistory.com/entry/컴퓨터-구조-Data-path-basic
이어서 남은 레지스터도 확인해 보자.
5) 플래그 레지스터(Flag Register)
ALU 연산 결과에 따른 플래그를 저장한다. 즉, 연산 결과나 CPU 상태 등 부가적인 정보를 저장하는 공간이다.
6) 범용 레지스터(General Purpose Register)
MBR은 데이터 버스로 주고받은 값을 저장하고, MAR은 주소를 저장하는 반면, 범용 레지스터는 다양하게 많은 용도로 사용하는 레지스터로 데이터와 주소 모두를 저장할 수 있는 공간이다.
CPU에는 여러 개의 범용 레지스터가 있다.
7) 스택 포인터(Stack Pointer, SP)
스택 포인터를 설명하려면 스택에 대해 설명해야 한다.
간단하게 스택에 대해 설명하면 다음과 같이 위에서 아래로 데이터를 넣는 방식이다. 즉, 가장 최근에 저장한 데이터부터 꺼내올 수 있는 자료구조다.
이때 스택 포인터란 그 스택에서 마지막으로 저장한 값의 위치를 저장하는 공간이다.
위 사진에는 1008이 SP에 저장될 것이다.
이렇게 7개의 Register의 대해 공부해 봤다.
기본적인 컴퓨터 구조를 공부하려면 레지스터를 이해하고, 명령어 구조를 이해하고, data path를 이해해야 한다.
'컴퓨터구조' 카테고리의 다른 글
[컴퓨터 구조] Hamming Code (1) | 2025.01.04 |
---|---|
[컴퓨터 구조] memory (0) | 2025.01.02 |
[컴퓨터 구조] cache memory (0) | 2025.01.02 |