[운영체제] 4. 레지스터의 역할과 종류 (Feat. 컴퓨터구조)
레지스터란
플립플롭 여러개를 일렬로 배열하고 연결하여 만들어진 레지스터는 여러 비트로 구성된 2진수를 저장하기에 용이하다.
저장된 비트를 좌측, 우측으로 하나씩 이동할 때 사용한다. (shift)
레지스터의 용도
- 범용 레지스터: 데이터와 주소 둘다 저장 가능하다.
- 특수 레지스터: 실행중인 프로그램의 상태를 저장한다. 프로그램 카운터, 상태 레지스터 등.
- 데이터 레지스터: 정수값 저장
- 주소 레지스터: 기억장치 주소를 저장하여, 기억장치 액세스에 사용된다.
- 부동소수점 레지스터: 부동소수점 데이터값을 저장하기 위해 사용된다.
- 상수 레지스터: 0이나 1 등 고정된 데이터를 저장한다.
- 명령 레지스터: 현재 실행중인 명령어를 저장한다.
- 색인 레지스터: 실행 중인 피 연산자의 주소를 계산하는 데 사용한다.
프로세서 레지스터 (CPU 레지스터)
CPU 내부에서 데이터를 저장하는 장치를 프로세서 레지스터라고 한다.
레지스터는 기억장치 중에서 속도가 가장 빨라 CPU 에서 고속으로 계산한 값을 저장할 때 쓰인다.
예를 들면, ALU(연산장치)에서 처리된 결과 데이터를 레지스터에서 임시 보관하고, 주기억장치에서 읽어온 명령어와 데이터를 임시보관하기도 한다.
레지스터의 두 가지 분류
1. 사용자에게 보이는 레지스터
어셈블리 프로그래밍을 하기 위해 명칭과 용도를 알아야 하는 레지스터.
어셈블리 프로그래머는 프로그램에서 사용되는 변수 데이터 등을 저장하기 위해 해당 레지스터를 알고 있어야 한다.
- 범용 레지스터: 연산을 위한 모든 종류의 피연산자(Operand)를 저장할 수 있다.
- 데이터 레지스터: 데이터 저장에만 사용 가능하다. 누산기(Accumulator) 등
- 주소 레지스터: 간접 주소지정방식에서 특정 레지스터는 유효주소를 표시하는데, 이것이 주소 레지스터이다.
- 조건 코드: 사용자에게 보이는 레지스터에 저장된 데이터의 상채를 표시하는 데 사용된다. (부호비트, 영 비트, 오버플로우 비트 등)
2. 제어 및 상태 레지스터
프로그램 실행 과정에서 CPU 내부적으로 사용되는 대표 레지스터이다.
- 프로그램 카운터 (PC): 주기억장치에 저장된 다음에 인출할 명령의 주소를 가지고 있다.
- 명령어 레지스터 (IR): 가장 최근에 주기억장치인 RAM에서 인출할 명령어의 주소를 가지고 있다.
- 기억장치 주소 레지스터 (MAR): 액세스할 기억장치의 주소가 저장되며 이 레지스터의 출력이 주소버스와 직접 연결
- 기억장치 버퍼 레지스터 (MBR): 기억장치에 쓰일 데이터 혹은 가장 최근에 읽은 데이터가 저장. 데이터 버스와 직접 연결
- 입출력 주소 레지스터 (I/O AR): 입출력 장치의 주소를 저장한다.
- 입출력 버퍼 레지스터 (I/O BR): 입출력 모듈과 CPU 사이에 교환되는 데이터를 일시적으로 저장한다.
- 프로그램 상태 단어: 제어 및 상태 레지스터에서 저장된 데이터의 상태와 조건을 나타내기 위하여 추가된 조건코드 비트.
참고 도서) 컴퓨터 구조와 원리 2.0