

ALU가 계산을 하기 위해서는 피연사자와 수행할 연산이 필요하다.
ALU는 레지스터를 통해 '피연산자'를 받아들이고, 제어장치로부터 수행할 연산을 알려주는 '제어 신호'를 받아들인다. 받아들인 피연산자와 제어신호로 연산, 논리 연산 등 다양한 연산을 수행한다.
연산을 수행한 결과는 메모리에 저장 되지 않고 일시적으로 레지스터에 저장된다.
CPU가 메모리에 접근하는 속도는 레지스터에 접근하는 속도보다 훨씬 느린다. ALU가 연산할 때 마다 결과를 메모리에 저장한다면 당연하게도 CPU는 메모리에 자주 접근하게 되고, 이는 프로그램 실행 속도를 늦출 수 있기 때문에 메모리가 아닌 레지스터에 우선 저장하는 것이다.
ALU는 계산결과와 더불어 '플래그'를 내보내는데 연산결과에 대해 추가적인 상태 정보는 '플래그'라고 한다.
| 플래그 종류 | 의미 | 사용예시 |
|---|---|---|
| 부호 | 연산한 결과의 부호를 나타낸다 | 1일 경우 계산 결과는 음수, 0일 경우 계산 결과는 양수 |
| 제로 | 연산 결과가 0인지 여부를 나타낸다 | 1일 경우 연산 결과는 0, 0일 경우 연산 결과는 0이 아님 |
| 캐리 | 연산 결과 올림수나 빌림수가 발생했는지를 나타낸다 | 1일 경우 올림수나 빌림수가 발생, 0일 경우 발생하지 않음 |
| 오버플로우 | 오버플로우가 발생했는지 나타낸다 | 1일 경우 오버플로우 발생, 0일 경우 발생하지 않음 |
| 인터럽트 | 인터럽트가 가능한지 나타낸다 | 1일 경우 가능, 0일 경우 불가능 |
| 슈퍼바이저 | 커널모드, 사용자 모드인지 나타낸다 | 1일 경우 커널 모드, 0일 경우 사용자 모드 |
제어 신호를 내보내고, 명령어를 해석하는 부품이고 '제어 신호'는 컴퓨터 부품들을 관리하고 작동시키기 위한 일종의 전기 신호이다.

( 1 ) 제어장치는 클럭 신호를 받아들인다
'클럭'이란 컴퓨터의 모든 부품을 일사불란하게 움직일 수 있게 하는 시간 단위를 말한다.
클럭의 주기에 맞춰 한 레지스터에서 다른 레지스터로 데이터가 이동되거나 ALU에서 연산이 수행되거나, CPU가 메모리에 저장된 명령어를 읽어 들이는 것이다.
컴퓨터 부품들은 클럭이라는 박자에 맞춰 작동할 뿐 한 박자마다 작동하는건 아닌다.
( 2 ) 제어장치는 '해석해야 할 명령어'를 받아들딘다
CPU가 해석해야 할 명령어는 '명령어 레지스터'라는 특별한 레지스터에 저장이 되는데 제어장치는 이 명령어 레지스터로부터 해석할 명령어를 받아들이고 해석한 뒤, 제어 신호를 발생시켜 컴퓨터 부품들에 수행해야 할 내용을 알려준다.
( 3 ) 제어장치는 플래그 레지스터 속 플래그 값을 받아들인다.
플래그 값을 받아들이고 참고하여 제어 신호를 발생시킨다.
( 3 ) 제어장치는 시스템 버스, 그중에서 제어 버스로 전달된 제어 신호를 받아들인다.
CPU뿐만 아니라 입출력장치를 비롯한 외부 장치도 발생시킬 수 있는데 제어 장치는 제어 버스틀 통해 외부로부터 전달된 제어 신호를 받아들인다.