본문 바로가기
컴퓨터구조

[컴퓨터구조][기초] CPU - ALU (산술/논리 연산 장치)

by codingbird1234 2025. 3. 13.

*해당 글은 '혼자 공부하는 컴퓨터구조 + 운영체제(강민철 지음)'을 참고하여 작성되었습니다.

*구체적인 예시와 함께 더 자세히 공부하고 싶으신 분들은 해당 책을 읽어보시기를 추천드립니다.

 

 

이번 시간부터는 컴퓨터의 4가지 핵심 부품에 대해 배워볼 것입니다.

그리고 그 첫 번째는, 컴퓨터의 뇌라고 할 수 있는 CPU (Central Processing Unit, 중앙 처리 장치)입니다.

그래서 오늘은 CPU에 대한 대략적인 내용과 CPU를 구성하는 부품 중 하나인 ALU에 대해서 알아보겠습니다.

 

컴퓨터구조 개요에서 컴퓨터의 4가지 핵심 부품을 소개하면서, CPU를 언급했었습니다.

CPU란, 메모리에 저장된 명령어를 읽고, 해석하고, 그에 따라 실행하는 장치라고 했었습니다.

그리고 CPU는 크게 3가지로 구성되어있다고 할 수 있습니다.

  • 산술논리연산장치 (Arithmetic Logic Unit, 이하 ALU) : 계산하는 장치
  • 레지스터 (Register) : (CPU 내부에 있는) 임시 저장 장치
  • 제어장치 (Control Unit) : 컴퓨터 부품을 제어하는 제어 신호를 보내고, 명령어를 해석하는 장치

 

위 3가지에 대해서 하나씩 알아볼 건데요, 먼저 ALU에 대해 알아보겠습니다.

ALUCPU 내에서 계산을 수행하는 장치입니다.

우리가 일반적으로 계산을 하려면 무엇이 있어야 할까요?

(1) 계산할 대상이 필요하고, (2) 어떤 연산을 할지를 알아야 합니다.

컴퓨터구조에서는 계산할 대상피연산자라고 표현합니다.

그리고 수행할 연산을 보통 연산자라고 합니다.

 

CPU 내에 있는 레지스터로부터 피연산자 정보를 받고,

수행할 연산에 대한 정보는 제어 장치로부터 제어 신호로 받습니다.

그러면 ALU는 받은 정보대로 연산을 수행하고 결과를 내보냅니다.

그리고 이때의 결괏값은 레지스터에 먼저 저장됩니다.

 

이전부터 CPU가 레지스터에 접근하는 속도보다 메모리에 접근하는 속도가 훨씬 느리다고 했습니다.

ALU가 연산을 끝낼 때마다 메모리에 접근해서 결괏값을 저장한다면, 실행 속도 자체가 느려지게 됩니다.

때문에 결괏값을 일단 레지스터에 저장하는 것입니다.

 

 

 

재밌는 것은, ALU는 연산 결과 외에 한 가지 정보를 더 내보낸다는 것입니다.

바로 플래그(Flag)입니다.

플래그란, 연산 결과에 대한 추가적인 상태 정보를 말합니다.

 

예를 들어,

연산 결과가 음수라면, 연산 결과가 음수라는 추가 정보가 필요합니다.

만약 연산 결과를 담을 레지스터의 크기보다 연산 결과가 크다면, 결괏값이 너무 크다는 추가 정보가 필요합니다.

(연산 결과가 연산 결과를 담은 레지스터의 크기보다 큰 상황을 오버플로우(Overflow)라고 합니다.

 

아래는 ALU가 내보내는 대표적인 플래그들입니다.

플래그 종류 의미 플래그 값이 0일 때 플래그 값이 1일 때
부호 플래그 연산한 결과의 부호 연산 결과가 양수 연산 결과가 음수
제로 플래그 연산 결과가 0인지의 여부 연산 결과가 0이 아님 연산 결과가 0
캐리 플래그 연산 결과 올림수나 빌림수 발생 여부 올림수나 빌림수 발생 X 올림수나 빌림수 발생
오버플로우 플래그 오버플로우 발생 여부 오버플로우 발생 X 오버플로우 발생
인터럽트 플래그 인터럽트 가능 여부 인터럽트 불가능 인터럽트 가능
슈퍼바이저 플래그 커널 모드 / 사용자 모드 여부 사용자 모드로 실행 중 커널 모드로 실행 중

 

 

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

플래그 레지스터란, 말 그대로 플래그 값들을 저장하는 레지스터입니다.

플래그 레지스터의 값을 통해, 연산 결과에 대한 추가적인 정보를 얻을 수 있겠죠?

 

이렇게 ALU에 대해서 알아봤습니다.

ALU가 어떤 장치들과 상호 작용하면서 어떤 방식으로 정보를 받고 결과를 내보내는지를 알아봤습니다.

하지만 ALU 내부에서 어떤 과정으로 연산이 수행되는지에 대해서는 자세히 다루지 않았습니다.

회로에 대한 내용은 상당히 어렵기 때문입니다.

해당 내용은 더 윗 단계에서 따로 다루도록 하겠습니다!

 

다음 시간에는 CPU의 제어 장치에 대해서 알아보겠습니다!