레지스터
레지스터는 CPU안에 있는 작은 임시 저장장치이다. CPU안에는 다양한 레지스터들이 있고, 각각 다른 이름과 역할이 있다. 프로그램을 구성하는 명령어와 데이터가 프로그램 실행 전 후로 레지스터에 저장되기 때문에 레지스터의 저장된 값을 보는 것만으로 낮은 수준의 프로그램 파악이 가능하다.
레지스터는 CPU 마다 이름과 종류가 조금씩 다르지만, 대표적으로 CPU가 공통적으로 가지고 있는 주요 레지스터를 알아보자.
프로그램 카운터(PC, Program Counter)
프로그램 카운터는 메모리에서 다음으로 읽어 들일 명령어의 주소를 저장한다. 그렇기 때문에 프로그램 카운터를 명령어 포인터(IP, Instruction Pointer)라고 부르기도 한다.
일반적으로 프로그램 카운터는 1씩 증가한다. 이는 곧 다음으로 읽어 들일 메모리가 1씩 증가하는 것과 같다. 메모리에 저장된 프로그램이 순차적으로 실행될 수 있는 것은 프로그램 카운터가 값이 1씩 증가하며 실행되기 때문이다.
하지만 프로그램 카운터는 순차적인 증가만 하지는 않는다. 프로그래밍 조건문이나 리턴문을 생각해 보면 알 수 있듯이 임의의 위치로 변경될 수 있다. 즉, 프로그램 실행 흐름이 순차적이지 않을 경우 프로그램 카운터의 값은 임의의 위치로 변경될 수 있다.
명령어 레지스터(IR, Instruction Register)
명령어 레지스터는 해석할 명령어, 즉 메모리에서 방금 읽어 들인 명령어를 저장한다. CPU 내의 제어장친느 명령어 레지스터 속 명령어를 해석한 뒤 ALU(산술논리연산장치)로 하여금 연산하도록 시키거나 다른 부품으로 제어 신호를 보내 해당 부품을 작동시킨다.
범용 레지스터(General Purpose Register)
범용 레지스터는 일반적 상황에서 자유롭게 사용할 수 있는 레지스터이다. 즉, 데이터와 명령어, 주소 모두를 저장할 수 있다.
일반적으로 CPU안에는 여러 개의 범용 레지스터들이 있다.
플래그 레지스터(Flag Register)
연산의 결과 혹은 CPU 상태에 대한 부가 정보인 플래그값을 저장한다.
플래그는 CPU가 명령어를 처리하는 과정에서 반드시 참조해야 할 상태 정보는 의미하는 비트이다.
예를 들어 연산의 수행 후 부호 플래그가 1이라면 그 연산의 결과가 음수임을 나타낸다. 또한 연산 직 후 제로 플래그가 1인 경우 연산의 결과가 0 임을 나타낸다.
스택 포인터
스택포인터는 메모리 내 스택 영역의 최상단 스택 데이터 위치를 가리키는 특별한 레지스터이다.
메모리는 실행 중인 프로그램들이 적재되어 있고, 이를 스택과 같은 형태로 사용 가능한 주소 공간을 하나 이상 가지고 있다. 암묵적으로 스택처럼 사용하고자 약속이 되어있는데 이 메모리 영역을 스택 영역이라고 한다. 그렇기 때문에 스택 포인터라는 레지스터가 있는 것이다.
참조
이것이 취업을 위한 컴퓨터 과학이다 with CS 기술 면접 - 강민철
'Knowledge > 컴퓨터구조&운영체제' 카테고리의 다른 글
[컴퓨터구조] CPU 성능 향상을 위한 설계 (클럭, 코어, 스레드) (0) | 2024.11.25 |
---|---|
[컴퓨터구조] CPU - 인터럽트 (0) | 2024.11.08 |
[컴퓨터구조] 컴퓨터가 이해하는 정보 - 명령어 (0) | 2024.10.28 |
[컴퓨터구조] 컴퓨터가 이해하는 정보 - 데이터 (0) | 2024.10.28 |
[컴퓨터 구조] 컴퓨터 구조의 큰 그림 (0) | 2024.10.21 |