ABOUT

성능과 운영 안정성을 함께 끌어올리는 개발자입니다.

92% Positional Error Reduction
79% p95 Latency Improvement
90%+ Long Tasks Reduction

2022.02 · 한국장학재단

우수 멘티

한국장학재단 사회 리더 대학생 멘토링 IT

2022.10 · 동작구청

우수 인재상

동작구청 우수 SW 인재

2025.05 · (주) 그랩

프로그래밍 우수상

(주) 그랩 우수 프로그램 개발

2025.05 · AWSKRUG

AWS한국사용자모임 발표

AI agent 스크립트 튜닝 관련 발표

ComputerScience

Development

Engineering

Trouble Shooting

GUESTBOOK

첫 마음부터
함께 나누는 온기

방명록 작성하러 가기

SUBSCRIBE

최신소식을
편하게 만나보세요.

산술논리연산장치 (ALU)

 
 

CPU

 

정의

CPU에서 0과 1로 세상을 계산하는 핵심 엔진입니다.

실제로 덧셈, 뺄셈 같은 사칙연산이나 데이터 비교 같은 논리연산을 수행할 회로로 구성되어 있는 계산기입니다.

작은 회로가 0과 1의 전기 신호를 받아 모든 종류의 연산을 담당하며, CPU가 처리할 명령어를 실질적으로 연산 하는 요소입니다.

C/C++에서 사용하는 +- 연산자나 Java의 &&|| 같은 논리 연산자 모두 ALU의 기능들을 활용합니다. 

핵심

산술 연산과 논리 연산을 수행합니다.
  • 산술 연산 (Arithmetic Operations)
  • - 덧셈(ADD), 뺄셈(SUB), 곱셈(MUL), 나눗셈(DIV) 등 숫자를 다루는 기본적인 수학 연산을 처리합니다.
  • 논리 연산 (Logic Operations)
  • - AND, OR, NOT, XOR 등 비트 단위의 논리 연산과 두 데이터를 비교하는 연산을 수행합니다.
    - 프로그램의 조건문이나 반복문의 기반이 됩니다.

동작원리

ALU는 다음의 과정을 통해 연산을 수행합니다.
단계 설명
입력 (Operands) 연산에 사용할 두 개의 데이터(피연산자)가 레지스터를 통해 ALU로 전달됩니다.
연산 제어 (Control Signal) 제어장치로부터 '어떤 연산을 수행할지' 지시하는 제어 신호를 받습니다.
연산 수행 (Calculation) 받은 데이터와 제어 신호에 따라 실제 산술/논리 연산을 진행합니다.
결과 출력 (Result & Flags) 연산 결과를 다시 레지스터로 보내고, 연산 상태를 나타내는 플래그(Flag)를 업데이트합니다.

3. 플래그 레지스터 (Flag Register): 연산의 결과 상태

ALU는 단순히 결과값만 내놓는 것이 아닙니다. 연산이 성공했는지, 오버플로가 발생했는지, 결과가 0인지 등 연산의 부가적인 상태 정보를 함께 알려줍니다. 이 정보를 저장하는 레지스터가 바로 플래그 레지스터(Flag Register)입니다.

  • ● 제로 플래그 (Zero Flag): 연산 결과가 0일 때 1로 설정됩니다. 조건문 if (x == 0) 등의 구현에 활용됩니다.
  • ● 캐리 플래그 (Carry Flag): 덧셈 시 최상위 비트에서 올림(Carry)이 발생했을 때 1로 설정됩니다.
  • ● 오버플로 플래그 (Overflow Flag): 부호 있는 수 연산 시 예상 범위를 넘어가는 오버플로가 발생했을 때 1로 설정됩니다.
  • ● 부호 플래그 (Sign Flag): 연산 결과가 음수일 때 1로 설정됩니다.

💡 개발자를 위한 인사이트

우리가 C/C++에서 사용하는 +, - 연산자나 Java의 &&, || 같은 논리 연산자는 결국 ALU의 이 기본 기능들을 활용합니다. 특히 플래그는 조건 분기(branching)를 통해 프로그램의 흐름을 제어하는 데 핵심적인 역할을 합니다.


728x90