테키테크 TEKITECH

[컴퓨터구조] Ch04. CPU의 작동 원리 본문

그리고/스터디

[컴퓨터구조] Ch04. CPU의 작동 원리

TEKI 2023. 2. 6. 21:01

컴퓨터의 네 가지 핵심 부품 중 CPU에 대하여.

  1. ALU와 제어장치, 그리고 레지스터
  2. 명령어 사이클
  3. 인터럽트

 


 

1.  ALU와 제어장치, 그리고 레지스터

CPU 내부에 있는 구성 요소 3가지

  1. 계산을 담당하는 ALU
  2. 명령어를 읽어 들이고 해석하는 제어장치
  3. 작은 임시 저장 장치인 레지스터

 

[1] ALU

 

◈  플래그

  • 연산 결과에 대한 추가적인 상태 정보로, 플래그 레지스터에 저장됨
  • ALU가 내보내는 대표적인 플래그에는 부호 플래그, 제로 플래그, 캐리 플래그, 오버플로우 플래그, 인터럽트 플래그, 슈퍼바이저 플래그, 등이 있음

 

[2] 제어장치

  • 제어장치: 제어 신호를 내보내고, 명령어를 해석하는 부품
  • 제어 신호: 컴퓨터 부품들을 관리하고 작동시키기 위한 일종의 전기 신호

 

[3] 레지스터

많은 CPU가 공통으로 포함하고 있는 8개의 레지스터와 그 역할

◈  프로그램 카운터 (PC: Program Counter) 또는 명령어 포인터 (IP: Instruction Pointer)
: 메모리에서 가져올 명령어의 주소, 즉 메모리에서 읽어 들일 명령어의 주소를 저장

◈  명령어 레지스터 (IR: Instruction Register)
: 해석할 명령어, 즉 방금 메모리에서 읽어 들인 명령어를 저장하는 레지스터

◈  메모리 주소 레지스터 (MAR: Memory Address Register)
: 메모리의 주소를 저장하는 레지스터

◈  메모리 버퍼 레지스터 (MBR: Memory Buffer Register)
: 메모리와 주고받을 값(데이터와 명령어)을 저장하는 레지스터

◈  플래그 레지스터 (Flag Register)
: ALU 연산 결과 또는 CPU 상태에 대한 부가적인 정보를 저장하는 레지스터

◈  범용 레지스터 (General Purpose Register)
: 다양하고 일반적인 상황에서 자유롭게 사용할 수 있는 레지스터로, 현대 대다수 CPU에는 모두 범용 레지스터가 있으며 일반적으로 CPU 안에 여러 개의 범용 레지스터를 가지고 있다.

◈  스택 포인터 (Stack Pointer)
: 스택의 꼭대기를 가리키는 레지스터로 스택 주소 지정 방식에 사용됨

*스택 주소 지정 방식: 스택과 스택 포인터를 이용한 주소 지정 방식

◈  베이스 레지스터 (Base Register)
: 베이스 레지스터 주소 지정 방식에서 기준 주소의 역할을 하는 레지스터

*베이스 레지스터 주소 지정 방식(base-register addressing mode): 변위 주소 지정 방식 중에서 오퍼랜드와 베이스 레지스터의 값을 더하여 유효 주소를 얻는 방식

*변위 주소 지정 방식(displacement addressing mode): 오퍼랜드 필드의 값(변위)과 특정 레지스터의 값을 더하여 유효 주소를 얻어내는 주소 지정 방식

 

2. 명령어 사이클

프로그램은 수많은 명령어를 CPU에게 시키면서 실행된다. 이때 프로그램 속 명령어들은 명령어 사이클이라고 하는 일정한 주기에 따라 반복되면서 실행된다. 예를 들어 메모리에 저장된 명령어를 가져와 실행할 때 명령어를 메모리에서 CPU로 가져오는 인출 사이클, 가져온 명령어를 실행하는 실행 사이클, 명령어 실행을 위해 한 번 더 메모리 접근을 하는 간접 사이클 등이 있다.

 

3. 인터럽트

CPU의 작업을 방해하는 신호인터럽트(Interrupt)라고 한다.
인터럽트에는 크게 동기 인터럽트와 비동기 인터럽트가 있다.

◈  동기 인터럽트 (Synchronous Interrupts) 또는 예외(Exception)

동기 인터럽트는 CPU에 의해 발생하는 인터럽트로, CPU가 실행하는 프로그래밍상의 오류와 같은 상황을 말한다. '예외'라고도 부른다.

◈  비동기 인터럽트 (Asynchronous Interrupt) 또는 하드웨어 인터럽트 (Hardware Interrupt)

비동기 인터럽트는 주로 입출력장치에 의해 발생하는 인터럽트로, 아래와 같은 케이스가 해당된다

  • 명령받은 입출력 작업을 끝낸 입출력장치가 CPU에 완료를 알리기 위한 신호
  • 입출력장치가 입력을 받아들였을 때 이를 처리하기 위해 CPU에 보내는 입력 알림

CPU가 인터럽트 요청을 수용하려면 플래그 레지스터의 인터럽트 플래그(Interrupt Flag)가 활성화되어 있어야 한다.
만약 인터럽트 플래그가 '불가능'으로 설정되어 있다면 CPU는 인터럽트 요청이 오더라도 무시한다.
만약 인터럽트 플래그가 '가능'으로 설정되어 있다면 CPU는 인터럽트 요청 신호를 받아들이고, 인터럽트를 처리한다.

하드웨어 인터럽트에는 인터럽트 플래그로 막을 수 있는 인터럽트(Maskable Interrupt)막을 수 없는 인터럽트(Non Maskable Interrupt)가 있다. 

반응형
Comments