일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 컴퓨터구조
- http
- 광고테스트
- unity
- ui
- 랜덤
- scrollrect
- Hackerrank
- csvhelper
- LINQ
- 애니메이션
- 프로그래머스
- unity3D
- 유니티기초
- 열거형
- canvasgroup
- 유니티
- 모션
- cs
- React Native
- Admob
- dotween
- UGUI
- enum
- 게임개발
- 애드몹
- 코딩테스트
- climbingtheleaderboard
- C#
- 전면광고
- Today
- Total
Ruya Games
레지스터 본문
레지스터는 CPU 안에서 자료를 보관할 수 있는 아주 빠른 저장공간입니다. CPU 안에는 역할에 따라 다양한 레지스터들이 존재합니다.
역할에 따라 나눠진 레지스터의 종류는 아래와 같습니다.
1. 프로그램 카운터(Program Counter, PC)
- 메모리에서 가져올 명령어의 주소를 저장합니다. 주소를 저장하기 때문에 명령어 포인터(Instruction Pointer, IP)라고 부르는 CPU도 있습니다.
2. 메모리 주소 레지스터(Memory Address Register, MAR)
- 메모리의 주소를 저장하는 레지스터입니다. CPU가 메모리의 특정 주소값을 읽기 위해 해당 주소값을 주소 버스로 보낼때 MAR을 통하게 됩니다.
3. 메모리 버퍼 레지스터(Memory Buffer Register, MBR)
- 메모리와 주고받을 값을 저장하는 레지스터입니다. 메모리에 쓰고싶은 값이나, 메모리로부터 전달받은 값은 메모리 버퍼 레지스터를 거칩니다. <CPU -> 주소 버스> 의 데이터 흐름에서는 MAR을 거쳐야 한다면 <CPU -> 데이터 버스> 의 데이터 흐름에서는 MBR을 거치게 됩니다.
4. 명령어 레지스터(Instruction Register, IR)
- 메모리에서 읽어들인 명령어를 저장하는 레지스터입니다. CPU안의 제어장치는 IR속 명령어를 해석한 뒤 제어신호를 발생시킵니다.
개인적으로는 특정 값에 대한 저장/실행이라는 역할에 따라 위의 4개의 레지스터가 구분되어있다는 느낌이었습니다.
위 4개의 레지스터를 사용해서 CPU가 메모리상에 있는 프로그램을 실행하는 순서는 아래와 같습니다.
실행할 프로그램이 메모리상의 1000번부터 1500번까지 저장되어있다고 가정하고, 현재 PC에 1000이 저장되었다고 가정합니다.
- 메모리의 1000번지의 값을 읽기 위해서는 주소 버스를 통해 1000값을 내보내야 하고, 이때 MAR를 사용해야 합니다. MAR에 1000값을 저장합니다.
- 제어장치에서 메모리 읽기 신호를 제어 버스를 통해 메모리로 전송하고, MAR에서 읽고자하는 메모리 주소값인 1000을 주소 버스를 통해 메모리에 전송합니다.
- 메모리의 1000번지에 저장되있던 값은 데이터 버스를 통해 CPU의 MBR로 전달되고, 값을 정상적으로 받아왔으므로 PC에 저장된 주소값은 1증가하게 됩니다(1000 -> 1001).
- MBR에 저장되있던 값(메모리의 1000번지에서 가져온 값)은 IR로 이동합니다.
- 제어장치는 IR에 저장된 명령어를 해석한 뒤 제어신호를 발생시킵니다.
이 외에도 레지스터가 더 있습니다.
5. 범용 레지스터(General Purpose Register)
- 사용처가 정해진 위의 4개의 레지스터들과는 달리, 다양한 상황에서 자유롭게 사용할 수 있는 레지스터입니다.
6. 플래그 레지스터(Flag Register)
- ALU의 연산 결과에 따른 플래그를 플래그 레지스터에 저장합니다.
7. 스택 포인터(Stack Pointer)
- 메모리 내부의 스택 영역에 마지막으로 저장된 값의 위치를 저장하는 레지스터입니다.
8. 베이스 레지스터(Base Register)
- 변위 주소 지정방식중, 베이스 레지스터 주소 지정 방식에서 사용됩니다.
- 변위 주소 지정방식은 오퍼랜드와 특정 레지스터에 저장된 값을 더하여 유효 주소를 얻어내는 주소 지정 방식입니다. 명령어의 형태는 연산코드와 오퍼랜드에, 레지스터를 특정할 수 있는 레지스터 필드가 추가된 형태입니다. 여기서 레지스터 필드에 PC를 넣게 되면 상대 주소 지정 방식(PC값 + 오퍼랜드), 베이스 레지스터를 넣게되면 베이스 레지스터 주소 지정 방식(베이스 레지스터 값 + 오퍼랜드)이 됩니다.
'Computer Science > 컴퓨터 구조' 카테고리의 다른 글
명령어의 구조 (0) | 2024.05.29 |
---|