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

그렘린·2022년 10월 26일
1

ALU 란?

CPU는 메모리에 저장된 명령어를 읽어 들이고, 해석하고 실행하는 장치이다. CPU 내부에는 ALU, 제어장치, 레지스터가 있다.
ALU는 '계산'에 관여하는 부품이다. 계산을 하려면 뭐가 필요한지 생각해보자.
10+20을 하면 우리는 10과 20이라는 피연산자가 필요하고, 더하기라는 연산이 필요하다. ALU도 마찬가지, 계산을 하기 위해서는 피연산자와 연산이 필요한 것이다!

ALU는 레지스터를 통해 피연산자를 받아들이고, 제어장치로부터 수행할 연산을 알려주는 제어신호를 받아들인다.
받아들인 것들을 통해 다양한 연산을 하고, 정보를 내보낸다.

ALU가 내보내는 값

1. 연산결과

내보내는 값들로는 숫자나 문자 또는 특정 메모리 주소가 될 수도 있다. 이 output들은 메모리에 곧바로 저장되지 않고, 일시적으로 레지스터에 저장된다. (이 이유는 cpu가 메모리에 접근하는 속도가 느리기 때문이다)

2. 플래그

플래그는 연산 결과에 대한 추가적인 정보를 내보낼 때 사용된다. ALU의 플래그는 다음과 같이 있다.

부호 플래그 : 연산한 결과의 부호를 나타낸다.
제로 플래그 : 연산 결과가 0인지 아닌지의 여부를 나타냄
캐리 플래그 : 연산 결과 올림수나 발림수가 발생했는지를 나타낸다.
오버플로우 플래그 : 오버플로우가 발생했는지를 나타냄.
인터럽트 플래그 : 인터럽트가 가능한지를 나타낸다.
슈퍼바이저 플래그 : 모드를 나타낸다. 커널모드인지, 사용자모드인지 구분할 수 있다.

이 플래그들은 '플래그 레지스터'에 저장된다. 이 레지스터를 읽으면, 연산에 대한 추가적인 정보를 얻을 수 있는 것!

예시)

ALU의 연산 후 플래그 레지스터가 위와 같다면, 연산 결과가 0임을 알 수 있다. (제로플래그가 1이면 연산결과가 0이라는 의미)

제어장치

제어장치는 제어 신호를 내보내고, 명령어를 해석하는 부품이다. 제어장치는 CPU에서 가장 정교한 부품이고 제조사마다 조금씩 다 다르다고 한다.

1. 제어장치가 받아들이는 정보

  • 클럭 신호를 받아들인다.
    - 클럭은 clock이다. 모든 부품을 움직일 수 있게 하는 시간단위. '주기'에 맞추어 특정한 일이 일어난다고 생각하면 된다.
  • 해석할 명령어를 받아들인다.
  • 플러그 레지스터 안의 플래그 값을 받아들이고 이에 대한 신호를 발생한다.
  • 제어 버스로 전달된 제어 신호를 받아들임.

2. 제어장치가 내보내는 정보

  • CPU 외부에 전달
    • 메모리, 입출력장치
    • 값을 읽거나 쓰고 싶을때
  • CPU 내부에 전달
    • ALU에 전달하는 신호, 레지스터에 전달하는 신호

0개의 댓글