본문 바로가기
컴퓨터구조 & 운영체제

20250101 컴퓨터구조 + 운영체제 6일차

by Kimjoy 2025. 1. 1.

오늘부터는 CPU의 작동 원리를 뜯어 보겠다.


예전에 공부했던 내용을 다시 되짚어보자면 CPU는 메모리에 저장된 명령어를 읽어들이고 해석하고 실행하는 장치이다.
CPU 안에는 ALU, 제어장치, 레지스터들이 있다.
ALU는 계산을 담당하고, 제어장치는 명령어를 읽어 들이고 해석하고, 레지스터는 작은 임시 저장 장치이다.

ALU

ALU는 계산을 하기 위해 피연산자와 수행할 연산이 필요하다.
레지스터를 통해 피연산자를 받아들이고, 제어장치로부터 수행할 연산을 알려주는 제어 신호를 받아들인다.
그리고 피연산자와 제어신호로 산술 연산, 논리 연산 등 다양한 연산을 수행한다.

연산을 수행한 결과는 특정 문자나 숫자, 메모리 주소가 될 수도 있는데, 이 결과값은 바로 메모리에 저장되지 않고 레지스터에 저장된다.
그 이유는 CPU가 메모리에 접근하는 속도가 레지스터에 접근하는 속도보다 훨씬 느리기 때문에
메모리에 결과값을 저장하게 되면 CPU가 메모리에 자주 접근하게 되고 프로그램 실행 속도가 느려질 수 있어서 메모리가 아닌 레지스터에 저장하는 것이다.

그리고 ALU는 결과값과 함께 플래그도 내보낸다.
플래그는 연산 결과에 대한 추가적인 상태 정보를 말한다.
부호플래그, 제로플래그, 캐리플래그, 오버플로우플래그, 인터럽트 플래그, 슈퍼바이저 플래그 등이 있다.
플래그는 CPU가 프로그램을 실행하는 도중 반드시 기억해야 하는 일종의 참고 정보이고, 플래그 레지스터라는 레지스터에 저장된다.

제어장치

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

제어장치는 클럭신호와 해석해야할 명령어, 플래그 값, 제어버스로부터 전달된 제어 신호를 받아들인다.
그리고 CPU 내부와 외부로 제어 신호를 내보낸다.

제어장치가 받아들이는 정보 중 먼저 클럭을 살펴보자면,
클럭은 컴퓨터의 모든 부품을 일사불란하게 움직일 수 있게 하는 시간 단위이다.
클럭의 똑-딱-똑-딱 주기에 맞춰 한 레지스터에서 다른 레지스터로 데이터가 이동되거나, ALU에서 연산이 수행되거나 CPU가 메모리에 저장된 명령어를 읽어들인다.
하나의 명령어는 여러 클럭에 걸쳐 실행될 수 있다.

제어장치는 명령어 레지스터로부터 해석할 명령어를 받아들이고 해석한 뒤, 제어 신호를 발생시켜 컴퓨터 부품들에게 수행해야 할 내용을 알려준다.

제어장치는 ALU에서 전달한 플래그 레지스터로부터 연산에 대한 추가적인 상태 정보인 플래그 값을 받아들인다.
그리고 이를 참고하여 제어 신호를 발생시킨다.

제어장치는 제어버스를 통해 외부로부터 전달된 제어 신호를 받아들이기도 한다.


제어장치는 CPU 외부와 CPU 내부에 제어 신호를 전달할 수 있다.
제어장치가 CPU 외부에 제어 신호를 전달한다는 말은 제어 버스로 제어 신호를 내보낸다는 말과 같다.
제어 버스로 내보내진 제어 신호는 메모리에 전달하는 제어 신호입출력장치(보조기억장치 포함)에 전달하는 제어 신호가 있다.
메모리에 저장된 값을 읽거나 메모리에 새로운 값을 쓰고 싶다면 메로리로 제어 신호를 내보내고,
입출력 장치의 값을 읽거나 입출력장치에 새로운 값을 쓰고 싶다면 입출력장치로 제어 신호를 내보낸다.

제어장치가 CPU 내부에 전달하는 제어신호는 ALU에 전달하는 제어신호레지스터에 전달하는 제어 신호가 있다.
ALU에는 수행할 연산을 지시하기 위해, 레지스터에는 레지스터 간에 데이터를 이동시키거나 레지스터에 저장된 명령어를 해석하기 위해 제어 신호를 내보낸다.