Post

CPU[ALU]

CPU

CPU
CPU는 메모리에 저장된 명렁어를 읽어와서 해석하고, 실행하는 장치입니다.

CPU 내부에는 연산(계산)을 담당하는 ALU, 명령어를 읽어들이고 해석하는 제어장치, 그리고 작은 임시저장 장치인 레지스터로 구성되어 있습니다.

우선 연산장치인 ALU에 대해 알아보겠습니다.

ALU

ALU
ALU는 연산장치라고 말했었습니다.

ALU에서는 피연산자와 수행할 연산이 필요합니다.
그래서, 피연산자 ( 숫자, 연산에 필요한 데이터 )를 2개를 받아들입니다. 그럼 피연산자는 어디서 받아오느냐, 피연산자는 레지스터를 통해 받아 들입니다.
그리고 수행할 연산은, 제어 장치로부터 받아들입니다.

이렇게 피연산자와 수행할 연산을 받아들인 ALU는 산술 연산, 논리 연산등 다양한 연산을 수행합니다.

내보내는 정보는 숫자나 문자, 메모리 주소가 될 수 있습니다. 결과값을 바로 내보내는게 아닌, 레지스터에 일시적으로 저장합니다.

이러한 이유는, CPU가 메모리에 접근하는 속도가 레스터에 접근하는 속도보다 훨씬 느립니다. 메모리에 저장하면, 메모리에 자주 접근하게 되고, 이는 CPU의 프로그램 실행 속도를 늦출 수 있습니다.

이런 이유로 ALU의 결과값은 메모리에 먼저 저장하는게 아닌, 레지스터에 먼저 저장합니다.

플래그 레지스터

하지만 사진에는 플래그라고 하는 레지스터가 별도로 존재합니다. 플래그 레지스터는 연산 결과에 대한 추가 정보를 담고 있는 레지스터 입니다.

즉, 정수가 양수인지 음수인지 판단하는 것처럼 이런 정보를 담고 있는 레지스터 입니다.

플래그 종류설명사용 예시
부호 플래그연산한 결과의 부호를 나타냅니다.1 -> 계산 결과가 음수, 2-> 계산 결과가 양수
제로 플래그연산 결과가 0인지 여부를 나타냅니다.1인 경우 연산 결과는 0을 의미, 0인 경우 연산결과는 0이 아님을 의미
캐리 플래그연산 결과 올림수나 빌림수가 발생했는지를 나타냅니다.1인 경우 올림수나 빌림수가 발생을 의미, 0인 경우 발생하지 않았음을 의미
오버플로우 플래그오버플로우가 발생했는지를 나타냅니다.1인경우 발생했음을 의미, 0인경우 발생하지 않았음을 의미
인터럽트 플래그인터럽트가 가능한지를 나타냅니다인터럽트 플래그가 1인경우 가능함을 의미, 0인경우 불가능함을 의미
슈퍼바이저 플래그커널모드, 사용자모드를 구분하기 위한 플래그입니다1인경우 커널모드임을 의미, 0인경우 사용자모드임을 의미

제어 장치

ControlUnit
제어장치는 제어 신호를 내보내고, 명령어를 해석하는 부품입니다.
여기서 제어 신호는 부품들을 관리하고 작동시키기 위한 전기 신호입니다.

동작과정

  1. 제어장치는 클럭 신호를 받아들입니다.
    • 클럭은 컴퓨터의 모든 부품을 일시불란하게 움직일 수 있게하는 시간입니다.

    • 즉, 클럭의 주기에 맞춰 레지스터에서 레지스터로 데이터가 이동되거나, ALU에서 연산이 수행되거나, CPU가 메모리에서 명령어를 읽어들입니다.

  2. 제어장치는 해석해야할 명렁어를 명렁어 레지스터에서 읽어 들입니다.

  3. 제어장치는 플래그 레지스터 속 플래그 값을 받아들입니다.

  4. 제어장치는 시스템 버스, 그중에서 제어 버스로 제어 신호를 받아들입니다.

    • 제어장치는 신호를 내보낼때 크게 2가지 신호를 내보냅니다.

      • 외부 제어 신호

      • 내부 제어 신호

참고 자료 :: 혼공자 [ 혼자 공부하는 컴퓨터 구조 + 운영체제 ]

This post is licensed under CC BY 4.0 by the author.