레지스터의 종류
레지스터는 저마다의 역할이 있고, 그에 걸맞는 내용을 저장한다.
그 중 전공서적에서 주로 다루는 8개의 핵심 레지스터를 설명하겠다.
각 레지스터가 CPU내부에서 어떤 역할을 수행하는지에 유의하자.
프로그램 카운터 PC : Program Counter
프로그램 카운터(PC; Progream Counter)는 메모리에서 가저올 명령어의 주소,
즉 메모리에서 읽어 들일 명령어의 주소를 저장한다.
프로그램 카운터를 명령어 포인터(IP; Instruction Pointer)라고 부르는 CPU도 있다.
명령어 레지스터 IR : Instruction Register
명령어 레지스터(IR; Instruction Register)는 해석할 명령어,
즉 방금 메모리에서 읽어 들인 명령어를 저장하는 레지스터이다.
제어장치는 명령어 레지스터 속 명령어를 받아들이고
이를 해석한 뒤 제어 신호를 내보낸다.
메모리 주소 레지스터 MAR : Memory Address Register
메모리 주소 레지스터 (MAR; Memory Address Register)는 메모리의 주소를 저장하는 레지스터이다.
CPU가 읽어 들이고자 하는 주소 값을 주소 버스로 보낼 때 메모리 주소 레지스터를 거치게 된다.
메모리 버퍼 레지스터 MBR : Memory Buffer Register
메모리 버퍼 레지스터(MBR; Memory Buffer Register)는
메모리와 주고받을 값(데이터와 명령어)을 저장하는 레지스터이다.
즉, 메모리에 쓰고 싶은 값이나 메모리로부터 전달받은 값은 메모리 버퍼 레지스터를 거친다.
CPU가 주소 버스로 내보낼 값이 메모리 주소 레지스터를 거친다면,
데이터 버스로 주고받을 값은 메모리 버퍼 레지스터를 거친다.
범용 레지스터 general purpose register
범용 레지스터(general purpose register)는 이름 그대로 다양하고 일반적인 상황에서
자유롭게 사용할 수 있는 레지스터이다.
메모리 버퍼 레지스터는 데이터 버스로 주고받을 값만 저장하고,
메모리 주소 레지스터는 주소 버스로 내보낼 값만 저장하지만,
범용 레지스터는 데이터와 주소를 모두 저장할 수 있다.
일반적으로 CPU 안에는 여러 개의 범용 레지스터드링 있고,
현대 대다수의 CPU는 모두 범용 레지스터를 가지고 있다.
플래그 레지스터
플래그 레지스터는 ALU 연산 결과에 따른 플래그를 플래그 레지스터에 저장한다.
플래그 레지스터는 연산 결과 또는 CPU 상태에 대한 부가적인 정보를 저장하는 레지스터이다.
베이스 레지스터
베이스 레지스터는 Base Address를 저장하는 레지스터이다.
프로그램이나 데이터가 저장된 위치의 첫 번째 주소를 기억하는 레지스터이다.
베이스 레지스터 주소 지정 방식
베이스 레지스터 주소 지정 방식은 오퍼랜드와 베이스 레지스터의 값을 더하여 주소를 얻는 방식이다.
여기서 베이스 레지스터는 '기준 주소', 오퍼랜드는 '기준 주소로부터 떨어진 거리'로서의 역할을 한다.
즉, 베이스 레지스터 주소 지정 방식은
베이스 레지스터 속 기준 주소로부터
얼마나 떨어져 있는 주소에 접근할 것인지를 연산하여 유효 주소를 얻어내는 방식이다.
스택 포인터
스택의 가장 위쪽 데이터의 위치를 가리키며,
데이터의 삽입 및 삭제는 스택 포인터를 이용하여 수행하게 된다.
데이터를 삽입할 때는 스텍 오핀터를 먼저 증가시킨 다음,
그 위치에 데이터를 저장한다.
해당 게시글은 혼자 공부하는 운영체제 + 컴퓨터 구조 책을 참고하여 작성되었습니다.
'컴퓨터 프로그래밍 공부 > 컴퓨터 구조 + 운영체제' 카테고리의 다른 글
코어와 멀티코어, 스레드와 멀티스레드 (0) | 2024.04.09 |
---|---|
프로그래밍 개발 과정 (0) | 2024.04.08 |
컴퓨터 구조 (0) | 2024.04.08 |
ALU (1) | 2023.12.28 |
Introduction to Computer Systems - 컴퓨터 시스템 개요 (1) | 2023.10.17 |