1. Program Counter (PC, 프로그램 카운터)

  • 역할: 다음에 실행할 명령어의 주소를 저장하는 레지스터입니다. 명령어를 실행할 때마다 자동으로 증가하며, 프로그램의 흐름을 제어합니다.
  • 설명: 점프(Jump)나 함수 호출 시 프로그램 카운터는 해당 명령어의 주소로 업데이트되어 프로그램의 실행 순서를 변경할 수 있습니다.

2. Stack Pointer (SP, 스택 포인터)

  • 역할: 스택의 최상단 주소를 저장하는 레지스터입니다. 함수 호출, 반환 시 데이터를 스택에 저장하거나 복원하는 데 사용됩니다.
  • 설명: 호출된 함수가 종료되면 스택 포인터를 이용해 원래의 호출 상태로 복원합니다. 스택 포인터는 주로 함수 호출 시 지역 변수와 복귀 주소를 관리하는 데 중요합니다.

3. Status Register (또는 Flags Register, 상태 레지스터)

  • 역할: ALU 연산 결과에 대한 상태 정보를 저장합니다. 플래그 비트는 조건부 명령어의 실행을 결정하는 데 중요한 역할을 합니다.
  • 주요 플래그 비트:
    • Zero Flag (Z): 연산 결과가 0일 때 설정됩니다.
    • Carry Flag (C): 연산 결과에서 자리올림(Carry) 또는 자리내림(Borrow)이 발생할 때 설정됩니다.
    • Overflow Flag (V): 부호 있는 수의 연산에서 오버플로가 발생했을 때 설정됩니다.
    • Negative Flag (N): 연산 결과가 음수일 때 설정됩니다.
    • Interrupt Flag (I): 인터럽트 활성화 상태를 나타냅니다.

4. Instruction Register (IR, 명령어 레지스터)

  • 역할: 현재 실행 중인 명령어를 저장하는 레지스터입니다.
  • 설명: 메모리에서 명령어를 가져오면 해당 명령어는 IR에 저장되고, 디코딩 및 실행 단계에서 사용됩니다.

5. Link Register (LR, 링크 레지스터)

  • 역할: 함수 호출 시 반환 주소를 저장하는 레지스터입니다.
  • 설명: 함수 호출 후 리턴할 때 PC가 이 레지스터의 값을 읽어 원래 함수 호출 지점으로 복귀합니다. ARM 프로세서 등에서 사용됩니다.

6. Base Pointer (BP, 베이스 포인터)

  • 역할: 스택 프레임에서 함수 호출 시 기준이 되는 포인터입니다.
  • 설명: 함수의 지역 변수와 매개변수에 접근할 때 베이스 포인터를 기준으로 상대적인 주소를 사용합니다.

7. Frame Pointer (FP, 프레임 포인터)

  • 역할: 함수 호출 시 스택 프레임의 시작 주소를 가리킵니다. 베이스 포인터와 유사한 기능을 하며, 함수의 호출 및 복귀 과정에서 스택의 프레임을 관리합니다.

8. Machine Status Register (MSR, 머신 상태 레지스터)

  • 역할: CPU의 운영 모드와 인터럽트 상태를 저장합니다.
  • 설명: 이 레지스터는 CPU의 운영 모드(예: 사용자 모드, 시스템 모드)를 설정하거나 인터럽트 활성화/비활성화를 제어하는 데 사용됩니다.

'CPU ARCHITECTURE1 > CPU' 카테고리의 다른 글

05-1. Instruction Fetch(IF)  (0) 2024.09.30
05. CPU 5-Stage Pipeline  (0) 2024.09.30
03. CPU main components  (1) 2024.09.29
02. Computer Architecture  (0) 2024.09.29
01. Overall Architecture(Memory Hierarchy)  (0) 2024.09.29

+ Recent posts