소프트웨어학/컴퓨터구조

[컴퓨터 구조] CPU의 작동 원리 - ALU와 제어장치

진강이 2024. 6. 4. 22:48

컴퓨터의 핵심 부품 CPU를 하나하나 뜯어보기 전에

큰 덩어리부터 생각해본다. 다시금 컴퓨터 메인 보드를 뜯어와 보도록 하자. 

오늘 살펴볼 것은 CPU 그중에서도 ALU와 제어장치이다. 

 

CPU

CPU는 컴퓨터의 두뇌이다. 메모리에 저장된 명령어를 읽고, 해석해고, 실행하는 부품이다. (예시 : intel x86)

1. 메모리에 저장된 명령어를 읽어들이고, 해석하고 실행하는 장치이다. 
2. CPU 내부 : ALU(계산 담당) + 제어장치(명령어 읽고 해석함) + 레지스터(작은 임시 저장 장치)

 

CPU 모식도

 

 

1. ALU

ALU는 산술연산 장치, 한 마디로 계산하는 부품이다. 

 

계산을 하기 위해서는 피연산자(숫자)와, 수행할 연산자(+-/*)가 필요하다.

 

ALU가 받아들이는 정보 // 피연산자 + 제어신호

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

 

 

ALU가 내보내는 정보 // 계산 결과 + 플래그

ALU가 수행한 연산은 특정 숫자나 문자, 메모리 주소가 될 수 있다. 그리고 이 결과값은 바로 메모리에 저장되지 않고 일시적으로 레지스터에 저장된다. 이는 CPU가 직접 메모리에 매번 접근하면 실행 속도를 늦출 수 있기 때문에, ALU의 결과값을 메모리가 아닌 레지스터에 우선 저장한다. 

ALU는 계산 결과값플래그 정보를 내보내는데

 

이때 이 플래그는 우리가 알아야 할 중요한 키워드이다. 

 

#플래그

한 마디로 ALU가 내보내는 결과값에 대한 추가적인 정보를 나타낸다.

 

가령 연산 결과가 음수일 때 ALU는 '방금 계산한 결과가 음수'라는 추가 정보를 내보낸다. 혹은 연산 결과가 레지스터보다 클 때 '결과값이 너무 크다'라는 추가 정보를 내보낸다. -> 오버 플로우(overflow)

 

ALU가 내보내는 대표적인 플래그 종류는 아래와 같다. 

 

 

이런 플래그들은 플래그 래지스터라는 래지스터에 저장된다. 이 래지스터를 읽으면 연산 결과에 대한 추가적인 정보를 얻을 수 있다.

 

 

2. 제어장치

다음 CPU 구성요소로 제어장치에 대해 알아보자.

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

 

제어장치가 받아들이는 정보 // 1. 클럭 신호 2. 수행할 명령어 3. 플래그 4. 제어 신호

 

첫째로, 제어장치는 클럭 신호를 받아들인다. 

클럭(clock)이란, 컴퓨타의 모든 부품을 움직일 수 있게 하는 시간 단위이다.

클럭의 주기에 맞춰 한 레지스터에서 다른 레지스터로 이동되거나, ALU에서 연산이 수행되거나, CPU가 메모리에 저장된 명령어를 읽어 드린다. 

 

주의할 점은, "컴퓨터의 모든 부품이 클럭 신호에 맞춰 작동한다"라는 말을 "컴퓨터의 모든 부품이 한 클럭마다 작동한다."라고 이해하면 안 된다. 컴퓨터 부품들은 클럭이라는 박자에 맞춰 작동할 뿐, 한 박자마다 작동하는 것은 아니다. 

 

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

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

 

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

 

넷째, 제어장치는 제어 버스로 전달된 제어 신호를 받아들인다. 

제어 신호는 CPU 값 뿐만 아니라 입출력장치를 비록한 CPU 외부 장치도 발생시킬 수 있다. 

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

제어장치가 받아들이는 정보

 

제어장치가 내보내는 정보 // 1. 제어 신호(CPU 내부) 2. 제어 신호(CPU 외부)

 

제어장치는 CPU 외부나 내부에 제어 신호를 내보낸다.

CPU 외부에 제어 신호를 전달한다는 건 제어 버스로 제어 신호를 내보낸가는 것이다.

이러한 제어 신호에는 크게 메모리에 전달하는 제어 신호와 입출력장치에 전달하는 제어신호가 있다.

 

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

 

제어장치가 내보내는 정보

 

 

**<혼자 공부하는 컴퓨터 구조 + 운영체제> 를 참고하였습니다.