컴퓨터구조

[컴퓨터구조] CPU, ALU와 제어장치

파송송 2022. 11. 22. 14:04
728x90

CPU

  • 메모리에 저장된 명령어를 읽어 들이고, 해석하고, 실행하는 장치
  • ALU, 제어장치, 레지스터로 구성됨

ALU

  • CPU 내부에서 계산을 담당함
  • 연산한 결괏값과 플래그를 내보냄

받아들이는 정보

  • 피연산자와 수행할 연산
  • 레지스터를 통해 피연산자를 받아들임
  • 제어장치를 통해 제어 신호를 받아들임

내보내는 정보

  • 연산 수행 결과는 특정 숫자, 문자, 메모리 주소 등이 될 수 있음
  • 위의 결괏값은 바로 메모리에 저장하지 않고 일시적으로 레지스터에 저장함
    • CPU에서 메모리에 접근하는 것이 레지스터에 접근하는 것보다 훨씬 느리기 때문
  • 플래그 (flag)
    • 때때로 결괏값뿐만 아니라 연산 결과에 대한 추가적인 정보는 내보내야 할 때가 있음
    • ex) 음수와 양수를 구분하기 위해 플래그를 사용한다.
    • ex) 연산 결과가 레지스터보다 클 때 결괏값이 너무 크다라는 추가 정보를 내보냄

대표적인 플래그

 

제어 플래그

플래그 종류 기능
인터럽트 플래그 (I F) 시스템 인터럽트들이 처리되거나 되지 않도록 명령한다. 인터럽트는 키보드, 디스크 드라이브, 시스템 클럭 타이머 같은 하드웨어 장치들에 의해 발생할 수 있다. 플래그값이1이면 인터럽트가 허용되고 0이면 금지한다.
트랩 플래그 (TF) 명령어 하나하나가 실행된 후 CPU가 정지 상태로 되어야 할지 말지를 결정한다. 이 플래그가 설정되면 오류 수정 프로그램이 프로그래머로 하여금 프로그램 명령어들을 한번에 하나씩 실행시킬 수 있어, 프로그램 추적에 의한 오류 수정이 가능해진다. 이 플래그 값이 1이면 트레이스가 허용되고 0이면 금지된다.

상태 플래그

플래그 종류 기능
오버플로우 플래그 (OF) 부호 있는 연산 결과가 너무 많은 비트들을 요구하여 목적지 피연산자에 저장되지 못할 때 설정된다. 이 플래그가 1이면 오버플로우가 발생할 때 이고 0이면 오버플로우가 발생하지 않았음을 나타낸다.
부호 플래그 (SF) 산술 및 논리 연산의 결과가 음의 수가 될 때 설정된다. 음의 수는 항상 최상위 비트 위치가 1이므로, 부호 플래그는 항상 목적지 피연산자의 부호 비트로 복사된다. 이 플래그의 값이 0이면 양수, 1이면 음수를 나타낸다.
제로 플래그 (ZF) 산술 및 논리 연산의 결과가 0일 때 설정된다. 이 플래그값이 1이면 두 값을 비교하여 같은 경우이고 0이면 같지 않은 경우이다.
캐리 플래그 (CF) 부호 없는 산술 연산 결과가 너무 커서 자리 올림이 발생할 때 설정된다. 이 플래그가 1이면 캐리가 발생한 것이고, 0이면 캐리가 발생하지 않은 것이다.

위의 플래그 들은 레지스터 플래그에 저장됨


제어장치

  • 제어장치: 제어 신호를 내보내고, 명령어를 해석하는 부품
  • 제어신호: 컴퓨터 부품들을 관리하고 작동시키기 위한 일종의 전기 신호
  • CPU 구성 요소 중 가장 정교하게 설계된 부품
  • CPU 제조사마다 제어장치의 구현 방식이나 명령어를 해석하는 방식, 받아들이고 내보내는 정보에는 조금씩 차이가 있음


제어장치 받아들이는 정보

  • 클럭 신호를 받아들임
    • 클럭 Clock이란 컴퓨터의 모든 부품을 일사불란하게 움직일 수 있게 하는 시간 단위
    • 클럭의 똑-딱 주기에 맞춰 한 레지스터에서 다른 레지스터로 데이터가 이동되거나, ALU에서 연산이 수행되거나, CPU가 메모리에 저장된 명령어를 읽어 들임
    • -> 컴퓨터의 모든 부품이 한 클럭마다 작동한다고 이해하면 안됨
    • 하나의 명령어가 여러 클럭에 걸쳐 실행될 수 있음
  • 해석해야 할 명령어를 받아들임
    • CPU가 해석해야 할 명령어는 명령어 레지스터라는 특별한 레지스터에 저장됨
    • 제어장치는 이 명령어 레지스터로부터 해석할 명령어를 받아들이고 해석한 뒤, 제어 신호를 발생시켜 컴퓨터 부품들에 수행해야 할 내용을 알려줌
  • 플래그 레지스터 속 플래그 값을 받아들임
    • 플래그는 ALU 연산에 대한 추가적인 상태 정보
    • 제어장치는 플래그를 참고하여 제어 신호를 발생시킴
  • 시스템 버스, 그중에서 제어 버스로 전달된 제어 신호를 받음

제어장치가 내보내는 정보

  • CPU 내부
  • CPU 외부
    • 제어 버스로 제어 신호를 내보냄 (메모리, 입출력 장치(보조기억장치))

제어장치는 메모리에 저장된 값을 읽거나 메모리에 새로운 값을 쓰고 싶을 때 메모리로 제어 신호를 내보냄

제어장치가 CPU 내부에 전달하는 제어 신호는 크게 ALU에 전달 하는 제어 신호와 레지스터에 전달하는 제어신호가 있음.

ALU: 수행할 연산 지시

레지스터: 레지스터 간에 데이터 이동, 레지스터에 저장된 명령어 해석

728x90