1. 꼭 알아야 할 레지스터 8가지
- 프로그램 카운터
- 명령어 레지스터
- 메모리 주소 레지스터
- 메모리 버퍼 레지스터
- 플래그 레지스터
- 범용 레지스터
- 스택 포인터
- 베이스 레지스터
1.1 프로그램 카운터?
- PC 프로그램 카운터는 메모리에서 일을 명령어의 주소 저장
- 명령어 포인터(IP : Instruction Pointers)라고도 부름
1.2. 명령어 레지스터?
- IR(Instruction Register)은 해석할 명령어를 저장하는 레지스터
- 제어장치는 명령어 레지스터 속 명령어를 받아서 해석하고 제어신호를 보냄
1.3. 메모리 주소 레지스터?
- MAR(Memory Address Register)는 메모리의 주소를 저장하는 레지스터
- CPU가 읽을 주소 값을 버스로 보낼 때 메모리 주소 레지스터 거침
1.4. 메모리 버퍼 레지스터?
- MBR(Memory Buffer Register)는 메모리와 주고 받을 값(데이터, 명령)을 저장하는 레지스터
- MDR(Memory Data Register)라고도 부름
- 메모리에 쓰고 싶은 값이나 메모리로부터 전달 받은 값은 메모리 버퍼 레지스터를 거침
예시
1)
- CPU가 실행할 프로그램은 1000 ~1500번지까지 저장
- 1000번지에는 1101(2)가 저장되어 있음
2)
- 프로그램을 처음 실행하려면 프로그램 카운터에는 1000이 저장됨
- == 메모리에서 가져올 명령어가 1000번지에 있다
3)
- 1000번지를 읽으려면 주소버스로 1000번지를 보내야 함
- 이를 위해서 메모리 주소 레지스터에는 1000이 저장..
4)
- '메모리 읽기' 제어 신호와 메모리 주소 레지스터 값이 각각 제어버스와 주소 버스를 통해서 메모리로 보내짐
5)
- 메모리 1000번지에 저장된 값은 데이터 버스를 통해서 메모리 버퍼 레지스터로 저장됨
- 프로그램 카운터는 증가돼서 다음 명령어 읽을 준비
6)
메모리 버퍼 레지스터에 저장된 값은 명령어 레지스터로 이동함
7) 제어 장치는 명령어 레지스터의 명령어 해석하고 제어 신호 발생시킴
1.5. 범용 레지스터?
- General Purpose Register는 일반적인 상황에서 자유롭게 사용할 수 있는 레지스터
- 데이터랑 주소 모두 저장할 수 있음
- CPU 안에는 여러개의 범용 레지스터 있음
1.6. 플래그 레지스터?
- 연산결과 또는 CPU 상태에 대산 부가적인 정보 저장하는 레지스터
2. 특정 레지스터를 이용한 주소 지정 방식1 : 스택 주소 지정 방식
- 스택포인터와 베이스 레지스터는 주소 지정에 사용하는 특별한 레지스터임
- 스택포인터는 스택 주소 지정방식이라는 주소 지정방식에 사용됨
- 프로그램 카운터, 베이스 레지스터는 변위주소 지정 방식이라는 주소 지정 방식에 사용
2.1. 스택 주소 지정 방식?
- 스택, 스택 포인터를 이용한 주소 지정 방식
- 스택은 접시 쌓기 개념
- 스택 포인터는 스택 꼭대기 가리키는 레지스터임-> 스택에 마지막으로 저장한 값의 위치를 저장하는 레지스터
3. 특정 레지스터를 이용한 주소 지정 방식2 : 변위 주소 지정 방식
- 명령어는 연산코드와 오퍼랜드로 이루어져있음
- 오퍼랜드 필드에는 메모리의 주소가 담길 때도 있음
- 변위 주소 지정방식은 오퍼랜드 필드의 값과 특정 레지스터의 값 더해서 유효 주소 얻어내는 주소 지정 방식임,,,
- 오퍼랜드 필드의 주소와 어떤 레지스터를 더하는지 따라 상대 주소 지정 방식, 베이스 레지스터 주소 지정방식으로 나눔
3.1. 상대 주소 지정방식
- 오퍼랜드와 프로그램 카운터의 값을 더해 유효 주소를 얻는 방식
- -3 이라면? 세 번째 이전 번지로 이동
- 그냥 3? 세 번째 이후 번지로 이동
- if문 처럼 분기하여 특정 주소의 코드 실행할 때 사용함
3.2. 베이스 레지스터 주소 지정 방식
- 오퍼랜드와 베이스 레지스터의 값을 더해 유효 주소 얻는 방식
- 베이스레지스터는 기준 주소
- 오퍼랜드는 기준주소로 부터 떨어진 거리 역할!
전공생 동생에게 물어보니, 동생은 왕 기초 개념이라고 열심히 설명해주지만 추상적으로 개념이 둥둥 떠다니기만 한다. 복습하면서 익숙해지는 방법을 택하겠다.
'운영체제' 카테고리의 다른 글
[컴퓨터 구조] 클럭, 스레드, 코어 (0) | 2024.08.12 |
---|---|
[컴퓨터 구조] 명령어 사이클과 인터럽트 (0) | 2024.08.09 |
[컴퓨터 구조] CPU 작동 원리1 : ALU (1) | 2024.08.06 |
[컴퓨터 구조] 명령어와 명령어의 구조 (0) | 2024.08.03 |
[컴퓨터 구조] 2진수, 16진수, 인코딩 (0) | 2024.07.31 |