프로그램 속 명령어와 데이터는 실행 전후로 반드시 레지스터에 저장됨. 메모리 계층구조의 최상위에 위치하면서 어떤 다른 메모리보다도 데이터를 가장 빠르게 다룰 수 있음.
레지스터의 종류
- 프로그램 카운터(PC; Program Counter): 다음에 실행할 명령어의 주소, 즉 메모리에서 읽을 명령의 주소를 저장. 명령을 가져오면 IP(Instruction Pointer)의 값이 증가. 즉, 프로그램 카운터는 항상 가져올 다음 명령의 주소를 가리키거나 현재 명령의 주소를 나타내고 있음.
- 프로그램 카운터는 꾸준히 증가하며 프로그램을 차례대로 실행. 하지만 JUMP, CONDITIONAL JUMP등의 명령어를 통해 명령의 실행이 순차가 아닌 다른 방향으로 변경될 수 있음
- 명령어 레지스터(IR; Instruction Register): 메모리에서 읽은 명령어를 저장하는 레지스터(현재 실행 중인 명령어 저장). 제어장치가 명령어 레지스터 속 명령어를 해석해서 제어 신호를 내보내는 구조
- 메모리 주소 레지스터(MAR; Memory Address Register): 메모리의 주로를 저장하는 레지스터. 주소버스와 연결되어 있음
- 메모리 버퍼 레지스터(MBR; Memory Buffer Register): 메모리와 주고받을 값(데이터와 명령어)을 저자아는 레지스터. 데이터 버스와 연결되어 있음
- 범용 레지스터(General purpose register): 일반적인 상황에서 유연하고 자유롭게 사용될 수 있는 레지스터
- 플래그 레지스터(Flag register): ALU 연산결과 혹은 CPU 상태에 대한 추가 정보 저장
특정 레지스터를 이용한 주소 지정방식
- 스택 주소 지정 방식: 스택 포인터를 이용해서 메모리 내의 스택 영역 중 가장 위에 있는 곳에 있는 데이터를 찾기
- 변위 주소 지정 방식: 오퍼랜드 필드의 값(변위)과 특정 레지스터의 값을 더하여 유효 주소를 산출
- 상대 주소 지정 방식: 오퍼랜드와 프로그램 카운터 값을 더하여 유효 주소를 산출
- 베이스 레지스터 주소 지정 방식: 오퍼랜드와 베이스 레지스터의 값을 더하여 유효 주소를 산출
'CS' 카테고리의 다른 글
[혼공컴운] 명령어 사이클과 인터럽트 (0) | 2023.03.31 |
---|---|
[혼공컴운] 프로세스 개요 (0) | 2023.03.30 |
[혼공컴운] 운영체제 시작하기 (0) | 2023.03.16 |
[혼공컴운] ALU와 제어장치 (0) | 2023.03.15 |
[혼공컴운] 명령어의 구조 (0) | 2023.03.14 |