컴퓨터구조

컴퓨터구조 - 프로세서 레지스터

asu2880 2019. 11. 7. 14:40

프로세서 레지스터

  • CPU 내에서 데이터를 저장하는 장치
  • 기억장치 중에서 속도가 가장 빠르다.
  • 임시보관 (ALU에서 처리된 결과 데이터), 주기억장치에서 읽어온 명령어와 데이터)

레지스터의 용도별 분류

  • 데이터 레지스터 : 정수 데이터 값을 저장
  • 주소 레지스터 : 기억장치 주소를 저장하여 기억장치 액세스에 사용
  • 범용 레지스터 : 데이터와 주소를 모두 저장
  • 부동소수점 레지스터 : 부동소수점 데이터 값을 저장
  • 상수 레지스터 : 0이나 1등 고정된 데이터 값 저장
  • 특수 레지스터 : 실행 중인 프로그램의 상태를 저장. (프로그램 카운터, 상태 레지스터 )
  • 명령 레지스터 : 현재 실행 중인 명령어 저장
  • 색인 레지스터 : 피연산자의 주소를 계산 (index)

CPU에 존재하는 레지스터에는 사용자에게 보이는 레지스터제어 및 상태 레지스터가 있다.

①사용자에게 보이는 레지스터

  • 어셈블리어 프로그래머는 프로그램에서 사용되는 변수 데이터 등을 저장하기 해당 레지스터를 알고 있어야 한다.
  • 8086(16비트), 80386 펜티엄 2(32비트)
  • 일반 목적용 레지스터 : 프로그래머가 여러 용돌 사용할 수 있고, 연산을 위한 모든 종류의  피연산자를 저장할 수 있는  레지스터
  • 데이터 레지스터 : 데이터 저장만 사용. (대표적인 예로 누산기)
  • 주소 레지스터 : 특정 주소지정 방식을 위해 사용하는 레지스터
    - 세그먼트 포인트 : 세그먼트의 시작 주소 저장
    - 인덱스 레지스터 : 인덱스 주소지정
    - 스택 포인터 : 스택 저장장치의 최상위 주소 저장
  • 조건 코드 : 사용자에게 보이는 레지스터에 저장된 데이터의 상태를 표시
    - 부호 비트 : 양수, 음수 표시
    - (0) 비트 : 해당 데이터가 0이라는 것을 표시
    - 오버플로우 비트 : 연산의 결과가 오버플로우가 발생함을 표시

②제어 및 상태 레지스터

  • 프로그램 카운터 : 주기억장치에 저장된 다음에 인출할 명령어의 주소를 가지고 있다.
  • 명령어 레지스터 : 가장 최근에 주기억장치인 RAM에서 인출한 명령어를 저장
  • 기억장치 주소 레지스터 : 기억장치의 주소가 저장.  주소 버스와 연결
  • 기억장치 버터 레지스터 : 가장 최근에 읽은 데이터가 저장. 데이터 버스와 연결
  • 입출력 주소 레지스터 : 입출력장치의 주소를 저장
  • 입출력 버퍼 레지스터 : 입출력 모듈과 CPU 사이에 교환되는 데이터를 일시적으로 저장
  • 프로그램 상태 단어(PSW) : 데이터의 상태와 조건을 나타내기 위해 추가된 코드 비트
  1. 부호비트 : 데이터의 부호를 표시한다.
  2. 영 비트 : 지스터가 0이라는 것을 표시
  3. 올림수(carry) 비트 : 자리 올림이 발생했다는 것을 표시
  4. 동등(equal) 비트 : 비교 대상과 해당 레지스터가 동일한 상태임을 표시
  5. 오버플로우(overflow) 비트 : 오버플로우 상태를 표시
  6. 인터럽트 가능/불가능 비트 : 인터럽트 가능 여부를 표시
  7. 디렉션 비트 : 참일 경우 주소 레지스터 값이 자동으로 감소하고, 거짓일 경우 자동으로 증가
  8. 트랩 비트 : 참일 경우 한 명령을 실행할 때마다 인터럽트가 발생
  9. 보조 올림수 : 연산 결과 하위 니블에서 비트 범위를 넘었을 때 참이 된다.
  10. 패리티(parity) 비트 : 연산 결과에서 1의 값을 갖는 비트의 수가 짝수일 경우
  11. 슈퍼바이저 비트 : cpu슈퍼바이저 모드 혹은 사용자 모드에서 실행 중 인지를 나타내는 비트
728x90