-
[Computer Science] CPU : 레지스터Computer Science 2024. 5. 10. 11:05
CPU를 구성하는 여러가지 부품 중 레지스터에 대하여 정리하였습니다.참조 : 인프런 '개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제'
< 레지스터 >
레지스터에는 여러 종류가 있지만, 반드시 알아야 할 레지스터는 다음과 같습니다.
- 프로그램 카운터 : 메모리에서 가져올 명령어의 주소(메모리에서 읽어 들일 명령어의 주소)
> 프로그램 카운터를 Instruction Pointer(명령어 포인터)라고 부르는 CPU도 있습니다.
- 메모리 주소 레지스터 : 메모리의 주소
> CPU가 읽어 들이고자 하는 주소를 주소 버스로 보낼 때 거치는 레지스터
- 메모리 버퍼 레지스터 : 메모리와 주고받을 값(데이터와 명령어)
> CPU가 정보를 데이터 버스로 주고받을 때 거치는 레지스터
- 명령어 레지스터 : 해석할 명령어 (방금 메모리에서 읽어 들인 명령어)
> 제어장치가 해석합니다.
- 플래그 레지스터 : 연산 결과 또는 CPU 상태에 대한 부가적인 정보
- 범용 레지스터 : 다양하고 일반적인 상황에서 자유롭게 사용
- 스택 포인터 : 스택의 꼭대기를 가리키는 레지스터(스택이 어디까지 차 있는지에 대한 표시)
- 베이스 레지스터 : 기준 주소 저장 레지스터
Example) 프로그램 카운터, 메모리 주소 레지스터, 메모리 버퍼 레지스터, 명령어 레지스터 동작 방식
1. 프로그램 카운터에 다음으로 실행할 명령어의 주소(여기서는 1000번지)가 저장됩니다.
012. 읽고자 하는 메모리의 주소를 주소버스로 전달하며 메모리 주소 레지스터에 메모리의 주소가 저장됩니다.
3. 해당 메모리에 저장된 값을 데이터 버스로 가져와 메모리 버퍼 레지스터에 저장하고, 프로그램 카운터는 1증가합니다.
프로그램 카운터는 일반적으로 1씩 증가하지만, 순차적인 실행 흐름이 끊기는 경우 불규칙하게 다른 값으로 바뀔 수 있습니다.
[ 순차적인 실행 흐름이 끊기는 경우 ]
- 특정 메모리 주소로 실행 흐름을 이동하는 명령어 실행 시
(ex. JUMP, CONDITIONAL JUMP, CALL, RET)
- 인터럽트 발생 시
- ETC...4. 가져온 값을 제어장치가 해석하기 위해 명령어 레지스터에 복사합니다.
+. 가져온 값이 명령어가 아니라 데이터라면 명령어 레지스터에 복사되지 않고 데이터를 처리하기위한 다른 프로세스로 진행됩니다.
< 특정 레지스터를 이용한 주소 지정 방식 >
스택 주소 지정 방식: 스택과 스택 포인터를 이용한 주소 지정 방식
변위 주소 지정 방식: 오퍼랜드 필드의 값(변위)과 특정 레지스터(프로그램 카운터, 베이스 레지스터)의 값을 더하여 유효 주소 얻기
- 상대 주소 지정 방식
- 베이스 레지스터 주소 지정 방식
[ 스택 주소 지정 방식 ]
- 스택 포인터: 스택의 꼭대기를 가리키는 레지스터(스택이 어디까지 차 있는지에 대한 표시)
- 스택은 메모리 안 스택처럼 쓸 수 있는 공간이 미리 지정된 구역(스택 영역)이 있습니다.
[ 변위 주소 지정 방식 ]
변위주소 지정을 사용하는 명령어는 다음과 같은 꼴을 띄고 있습니다.
1. 상대 주소 지정 방식 : 오퍼랜드 필드의 값과 프로그램 카운터의 값을 더해 유효 주소 얻기
2. 베이스 레지스터 주소 지정 방식 : 오퍼랜드 필드의 값과 베이스 레지스터의 값을 더해 유효 주소 얻기
'Computer Science' 카테고리의 다른 글
[Computer Science] CPU : 빠른 CPU를 위한 설계 기법 (1) 2024.05.14 [Computer Science] CPU : 명령어 사이클과 인터럽트 (0) 2024.05.10 [Computer Science] CPU : ALU와 제어장치 (0) 2024.05.09 [Computer Science] 명령어 : 명령어의 구조 (0) 2024.05.09 [Computer Science] 명령어 : 소스 코드와 명령어 (0) 2024.05.09