본문 바로가기
취준

[컴퓨터 구조] Chapter 4-1. ALU와 제어장치

by 박매트 2024. 4. 22.

시작하기 전에....

 

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

 

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

 

ALU와 제어장치가 무엇을 내보내고, 무엇을 받아들이는지를 집중해서 읽어 봅시다!

 

ALU

 

 ALU는 계산하는 부품이비낟. 계산을 하기 위해 무엇이 필요할까요? 1+2를 계산할 때 1과 2라는 피연산자와 더하기라는 수행할 연산이 필요하듯 ALU가 계산을 하기 위해서는 피연산자와 수행할 연산이 필요합니다.

 

그래서 ALU는 레지스터를 통해 피연산자를 받아들이고, 제어장치로부터 수행할 연산을 알려주는 제어 신호를 받아들입니다.

 

ALU가 내보내는 정보를 알아봅시다.

연산을 수행한 결과는 특정 숫자나 문자가 될 수도 있고 메모리 주소가 될 수 도 있습니다. 그리고 결괏값은 메모리에 저장되지 않고 일시적으로 레지스터에 저장됩니다..

 

CPU가 메모리에 접근하는 속도는 레지스터에 접근하는 속도보다 훨씬 느립니다. ALU가 연산할 때마다 결과를 메모리에 저장한다면 당연하게도 CPU는 메모리에 자주 접근하게 되고, 이는 CPU가 실행 속도를 늦출 수 있습니다.

 

그래서 ALU의 결괏값을 메모리가 아닌 레지스터에 우선 저장하는 겁니다.

ALU가 내보내는 또 다른 정보가 있습니다. ALU는 계산 결과와 더불어 플래그를 내보냅니다. 

 

 

* 연산 결과가 연산 겨과를 담을 레지스터보다 큰 상황을 오버플로우 라고 합니다.

 

이러한 연산 결과에 대한 추가적인 상태 정보를 플래그 라고 합니다. 
ex. 
부호 플래그, 제로 플래그, 캐리 플래그, 오버플로우 플래그, 인터럽트 프랠그 etc . .

 

플래그는 CPU가 실행하는 도중 반드시 기억해야 하는 일종의 참고 정보입니다.

그리고 플래그들은 플래그 레지스터라는 레지스터에 저장됩니다. 

 

부호 플래그가 1이 되었다면 연산 결과는 음수임을 알 수 있습니다.

ALU가 연산을 수행한 직후 플래그 레지스터가 아래와 같다면, 제로 플래그가 1이 되었으나 연산 결과는 0임을 알 수 있습니다.

 

제어장치

 

제어장치는 제어 신호를 내보내고, 명령어를 해석하는 부품이라고 했습니다 .제어 신호는 컴퓨터 부품들을 관리하고 작동시키기 위한 일종의 전기 신호이기도 하죠.

 

참고로, 제어장치는 CPU의 구성 요소 중 가장 정교하게 설계된 부품이라고 해도 과언이 아닙니다. CPU 제조사 마다 제어장치의 구현 방식이나 명령어를 해석하는 방식에는 조금씩 차이가 있습니다.

 

 

제어장치가 무엇을 받아들이고, 무엇을 내보내는 지 다음 그림을 보며 하나씩 살펴보겟습니다.

 

첫째, 제어장치는 클릭 신호를 받아들입니다. 

클럭이란 컴퓨터의 모든 부품을 일사분란하게 움직일 수 있게 하는 시간 단위 입니다. 똑-딱 주기에 맞춰 한 레지스터에서 다른 레지스터로 데이터가 이동되거나, ALU에서 연산이 수행되거나, CPU가 메모리에 저장된 명령어를 읽어 들이는 것이지요.

 

그렇다고 컴퓨터의 모든 부품이 클럭 신호에 맞춰 작동한다라는 말을 '컴퓨터이 모든 부품이 한 클럭마다 작동한다'는 XXX

박자에 맞춰 작동할 뿐 한 박자마다 작동하는 것은 아닙니다. 

 

둘째, 제어장치는 '해석해야 할 명령어'를 받아들입니다.

CPU가 해석해야 할 명령어는 명령어 레지스터라는 특별한 레지스터에 저장됩니다. 제어장치는 해석할 명령어를 받아들이고 해석한 뒤, 제어 신호를 발생시켜 컴퓨터 부품들에 수행해야 할 내용을 알려줍니다.

 

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

플래그는 ALU 연산에 대한 추가적인 상태 정보라고 했습니다. 제어장치가 제어 신호를 통해 컴퓨터 부품들을 제어할 때 이 중요한 참고 사항을 무시하면 안됩니다. 그렇기에 제어장치는 플래그 값을 받아들이고 이를 참고하여 제어 신호를 발생시킵니다.

 

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

제어 신호는 CUP뿐만 아니라 입출력장치를 비롯한 CPU 외부 장치도 발생시킬 수 있습니다. 제어장치는 제어 버스를 통해 외부로 부터 전달도니 제어 신호를 받아들이기도 합니다.

 

제어장치가 내보내는 정보

 

CPU 외부에 전달되는 제어 신호와 CPU 내부에 전달하는 제어 신호

 

제어장치가 CPU 외부에 제어 시노를 전달한다는 말 

-> 곧, 제어 버스로 제어 신호를 내보낸다는 말. 이러한 제어 신호에는 크게 1) 메모리에 전달하는 제어 신호 2) 입출력장치에 전달하는 제어 신호가 있습니다.

 

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

 

ALU에는 수행할 연산을 지시하기 위해,

레지스터에레지스터 간에 데이터를 이동시키거나 레지스터에 저장된 명령어를 해석하기 위해 제어 신호를 내보냅니다.

 

 

 

마무리

  • ALU는 레지스터로부터 피연산자를 받아들이고, 제어장치로부터 제어 신호를 받아들입니다.
  • ALU는 연산 결과와 플래그를 내보냅니다.
  • 제어장치는 클럭, 현재 수행할 명령어, 플래그, 제어 신호를 받아들입니다.
  • 제어장치는 CPU 내부와 외부로 제어 신호를 내보냅니다.