🖐️오늘은 ALU와 제어장치에 대해 알아보겠습니다.
ALU와 제어장치를 알아보기 앞서 그 기초가 되는 CPU에 대해 간단하게 알아봅시다.
중앙처리장치 (Core Processing Unit)
- 컴퓨터의 두뇌와 같은 장치이며 메모리에 저장된 명령어를 받아들이고, 명령어를 해석하고, 실행하는 부품입니다.
- CPU 내부에는 ALU, 제어장치, 레지스터가 있습니다.
산술논리연산장치 (Arithmetic Logic Unit)
- 계산만을 위해 존재하는 부품이며 컴퓨터 내부에서 수행되는 대부분의 계산은 ALU가 도맡아 수행합니다.
ALU는 레지스터로부터 피연산자를 받아들이고, 제어 신호로 산술 연산, 논리 연산 등 다양한 연산을 수행합니다.
CPU가 메모리에 접근하는 속도는 레지스터에 접근하는 속도보다 훨씬 느립니다. 때문에 ALU가 연산할 때마다 결과를 메모리에 저장한다면 프로그램 실행 속도가 느려질 수 있습니다.
플래그는 연산 결과에 대한 추가적인 상태 정보입니다.
플래그는 CPU가 프로그램을 실행하는 도중 반드시 기억해야 하는 참고 정보입니다. 이 플래그들은 플래그 레지스터에 저장됩니다.
플래그 레지스터는 이름 그대로의 뜻을 가집니다. 아래의 사진을 예시로 들겠습니다.
부호플래그(Sign)과 캐리플래그(Carry)에 1이 되었다는 것은 계산 결과가 음수이고, 올림수나 빌림수가 발생했다는 것을 의미합니다.
- 가산기: 덧셈을 하는 회로
- 보수기: 뺄셈을 하는 회로
- 시프터: 시프트 연산을 수행하는 회로
- 오버플로우 검출기: 오버플로우를 대비하는 회로
제어장치는 제어 신호를 내보내고, 명령어를 해석하는 부품입니다.
제어 신호는 컴퓨터 부품들을 관리하고 작동시키기 위한 전기 신호입니다.
클럭: 컴퓨터의 모든 부품을 일사불란하게 움직일 수 있게 하는 시간 단위입니다.
클럭은 일정한 주기에 맞춰서 다양한 행동을 합니다.
- 레지스터에서 다른 레지스터로 데이터가 이동합니다.
- ALU에서 연산 수행합니다.
- CPU가 메모리에 저장된 명령어를 읽어 들입니다.
- 일정한 주기에 맞춰 행동을 한다는 뜻이 컴퓨터의 모든 부품이 한 클럭 마다 작동하는 것은 아닙니다.
- 컴퓨터의 부품은 클럭에 맞춰서 작동할 뿐 한 박자마다 작동하는 것은 아닙니다.
위의 사진처럼 하나의 명령어가 여러 클럭에 걸쳐서 실행되는 것은 가능합니다.
CPU가 해석해야 할 명령어는 명령어 레지스터라는 레지스터에 저장됩니다.
제어장치는 명령어 레스터로부터 명령어를 받아들이고 제어신호를 발생시켜 컴퓨터 부품들에 수행할 일을 알려줍니다.
제어장치는 플래그 값을 받아들이고 참고 사항에 따라 제어 신호를 발생시킵니다.
제어장치는 클럭, 현재 수행할 명령어, 플래그, 제어 신호를 받아들입니다.
제어 신호는 CPU뿐만 아니라 입출력장치를 비롯한 CPU 외부 장치도 발생시킬 수 있습니다. 제어 버스를 통해 외부에서 전달된 제어 신호를 받아들이기도 합니다.
제어장치는 CPU 내부와 외부로 제어 신호를 보냅니다.
외부에 전달하는 제어 신호
제어장치가 CPU 외부로 제어 신호를 전달한다는 말은 제어 버스로 제어 신호르 내보낸다는 뜻입니다.
이러한 제어신호는 메모리에 전달하는 제어 신호와 입출력장치에 전달하는 제어 신호로 분류됩니다.
메모리에 전달하는 제어 신호
메모리에 저장된 값을 읽거나 메모리에 새로운 값을 쓰고 싶다면 메모리로 제어 신호를 내보냅니다.
입출력장치에 전달하는 제어 신호
입출력장치의 값을 읽거나 입출력장치에 새로운 값을 쓰고 싶다면 입출력장치로 제어 신호를 내보냅니다.
내부에 전달하는 제어 신호
ALU에 전달하는 제어 신호
수행할 연산을 지시하기 위해 제어 신호를 내보냅니다.
레지스터에 전달하는 제어 신호
레지스터 간에 데이터를 이동시키거나 레지스터에 저장된 명령어를 해석하기 위해 제어 신호를 내보냅니다.
이번 시간에는 CPU 중에서도 ALU와 제어장치에 대해 알아보았습니다.
이상으로 포스팅을 마치겠습니다.