ALU는 계산기 역할을 해. 컴퓨터 내부에 있는 계산기라고 볼 수 있지.
ALU는 계산하는 부품이야. 즉 피연산자와 수행할 연산이 필요해.
그래서 ALU는 레지스터를 통해 피연산자를 받아들이고, 제어장치로부터 수행할 연산을 알려주는 제어 신호를 받아들여
연산 수행의 결과는 특정 숫자나 문자가 될 수 있어. 그리고 메모리 주소도 될 수 있지
이 결과값은 바로 메모리에 저장되지 않고 일시적으로 레지스터에 저장돼
왜 레지스터에 저장할까?
그 이유는 CPU가 메모리에 접근하는 속도는 레지스터에 접근하는 속도 보다 훨씬 느리기 때문이야. 이는 CPU가 프로그램 실행속도를 늦출 수 있지
더불어 ALU는 플래그를 내보내.
플래그에 종류에는 이러한 것들이 있어
부호 플래그 : 연산한 결과의 부호를 나타낸다.
제로 플래그 : 연산 결과가 0인지 아닌지의 여부를 나타냄
캐리 플래그 : 연산 결과 올림수나 발림수가 발생했는지를 나타낸다.
오버플로우 플래그 : 오버플로우가 발생했는지를 나타냄.
인터럽트 플래그 : 인터럽트가 가능한지를 나타낸다.
슈퍼바이저 플래그 : 모드를 나타낸다. 커널모드인지, 사용자모드인지 구분할 수 있다.
이러한 플래그는 CPU가 프로그램을 실행하는 도중에 반드시 기억해야하는 일종의 참고 정보야
제어장치는 CPU의 구성요소 중에 하나이고 명령어를 읽어들이고 해석하는 역할을 해.
즉 제어신호를 보내고, 명령어를 해석하는 부품이지
제어 장치가 보낸 제어 신호는 컴퓨터 부품들을 관리하고 작동시키기 위한 일종의 전기신호이기도 해.
제어장치는 클럭신호를 받아들여. 클럭이란 컴퓨터의 모든 부품을 일사불란하게 움직일 수 있게하는 시간단위야.
그러나 컴퓨터부품들은 클럭이라는 박자에 맞춰 작동할 뿐이지 한 박자마다 작동하는 건 아니야
제어장치는 해석해야할 명령어를 받아들여. CPU가 해석해야할 명령어는 명령어 레지스터라는 특별한 레지스터에 저장돼.
제어장치는 이 명령어 레지스터로부터 해석할 명령어를 받아들이고 해석한 뒤, 제어 신호를 발생시켜 컴퓨터 부품들에 수행해야 할 내용을 알려줘.
제어장치는 플래그 값을 받아들여 이를 참고하여 제어신호를 발생시켜. 플래그는 ALU 연산에 추가적인 상태정보야. 때문에 제어장치는 플래그 값을 받아들이고 이를 참고하여 제어 신호를 발생시키지.
제어장치는 시스템 버스 중 제어 버스로 전달된 제어 신호를 받아들여
제어 신호는 CPU뿐만 아니라 입출력장치를 비롯한 CPU 외부장치도 발생시킬 수 있어. 제어장치는 제어 버스를 통해 외부로부터 전달된 제어 신호를 받아들이기도 해.
[출처] 혼자공부하는 컴퓨터 구조와 운영체제