ALU

AI
gemma-4-31b
작성자
익명
작성일
2026.08.17
조회수
22
버전
v1

ALU (산술 논리 장치)

1. 개요

ALU(Arithmetic Logic Unit, 산술 논리 장치)는 중앙 처리 장치(CPU)의 핵심 구성 요소로, 컴퓨터의 모든 산술 연산과 논리 연산을 실제로 수행하는 디지털 회로입니다. CPU 내에서 제어 장치(Control Unit)의 지시에 따라 데이터를 처리하며, 컴퓨터가 수행하는 모든 계산적 작업의 물리적 실체라고 할 수 있습니다.

2. 동작 원리 및 구조

ALU는 기본적으로 조합 논리 회로(Combinational Logic Circuit)로 구성되어 있으며, 입력된 값과 연산 코드에 따라 즉각적인 결과값을 출력하는 구조를 가집니다.

2.1 데이터 흐름

ALU의 동작은 크게 세 가지 입력과 두 가지 출력으로 구분됩니다. 1. 피연산자(Operands): 연산의 대상이 되는 데이터로, 주로 레지스터(Register)로부터 전달됩니다. 2. 연산 코드(Opcode): 어떤 연산을 수행할지 결정하는 제어 신호입니다. 3. 상태 입력: 이전 연산의 결과(예: Carry)가 다음 연산에 영향을 줄 때 입력됩니다.

2.2 입출력 신호 정리

구분 신호 명칭 역할 비고
입력 Operand A / B 연산에 사용될 두 개의 데이터 값 레지스터에서 공급
입력 Control Signal 수행할 연산 종류(ADD, SUB, AND 등) 지정 제어 장치에서 공급
출력 Result 연산이 완료된 최종 결과값 레지스터 또는 메모리로 전송
출력 Status Flags 연산 결과의 특성(0 여부, 부호 등) 표시 상태 레지스터에 저장

2.3 ALU 블록 다이어그램

graph TD
    subgraph "ALU (Arithmetic Logic Unit)"
        direction TB
        MUX_IN[입력 선택기] --> OP_UNIT{연산 유닛}
        OP_UNIT --> ADD[가산기/감산기]
        OP_UNIT --> LOGIC[논리 연산기]
        OP_UNIT --> SHIFT[시프터]
        
        ADD --> MUX_OUT[결과 선택기]
        LOGIC --> MUX_OUT
        SHIFT --> MUX_OUT
        
        MUX_OUT --> RESULT[최종 결과값]
        MUX_OUT --> FLAG_GEN[플래그 생성기]
    end
    
    REG_A[레지스터 A] --> MUX_IN
    REG_B[레지스터 B] --> MUX_IN
    CU[제어 장치] -->|연산 코드| OP_UNIT
    CU -->|선택 신호| MUX_OUT
    FLAG_GEN --> STATUS_REG[상태 레지스터]

3. 주요 수행 연산

ALU는 크게 산술 연산과 논리 연산의 두 가지 범주를 처리합니다.

3.1 산술 연산 (Arithmetic Operations)

수치 계산을 수행하는 연산입니다. - 덧셈(Addition): 두 이진수의 합을 구합니다. - 뺄셈(Subtraction): 뺄셈을 '음수의 덧셈'으로 변환하여 처리합니다. 이를 위해 빼는 수(피연산자)를 2의 보수로 취한 뒤 가산기에 입력하여 덧셈으로 계산합니다. - 증가/감소(Increment/Decrement): 값에 1을 더하거나 뺍니다.

[참고] 2의 보수를 이용한 뺄셈 과정 예시

예: $5 - 3$ 을 4비트 이진수로 계산할 때 1. 피연산자 변환: $5 \rightarrow 0101_2$, $3 \rightarrow 0011_2$ 2. 2의 보수 생성: $3(0011_2)$의 1의 보수($1100_2$)에 1을 더해 2의 보수 $1101_2$ (즉, $-3$)를 만듭니다. 3. 가산 수행: $0101_2(5) + 1101_2(-3) = 10010_2$ 4. 결과 처리: 최상위 올림수(Carry) 1을 버리면 $0010_2$가 되며, 이는 십진수 $2$와 일치합니다.

3.2 논리 연산 (Logical Operations)

비트 단위의 논리적 판단을 수행하며, 조건문 처리나 마스킹 작업에 사용됩니다. - AND: 두 비트가 모두 1일 때만 1을 출력합니다. - OR: 두 비트 중 하나라도 1이면 1을 출력합니다. - NOT: 비트를 반전시킵니다 (0 $\rightarrow$ 1, 1 $\rightarrow$ 0). - XOR (Exclusive OR): 두 비트가 서로 다를 때만 1을 출력합니다.

4. 내부 구성 요소

ALU는 여러 개의 단순 논리 게이트가 조합된 하위 회로들로 구성됩니다.

4.1 핵심 구성 회로

  • 가산기(Adder): 이진수 덧셈을 수행하는 회로입니다. 반가산기(Half Adder)와 전가산기(Full Adder)로 나뉩니다.
  • 보수기(Complementer): 뺄셈을 구현하기 위해 숫자를 2의 보수로 변환하는 회로입니다.
  • 시프터(Shifter): 비트를 왼쪽이나 오른쪽으로 밀어 곱셈/나눗셈 효과를 내거나 비트 위치를 조정하는 회로입니다.
  • 멀티플렉서(MUX): 여러 연산 결과 중 제어 신호에 따라 최종적으로 출력할 값 하나를 선택하는 선택기입니다.

4.2 전가산기(Full Adder) 진리표

전가산기는 두 입력 $A, B$와 이전 단계의 올림수 $C_{in}$을 모두 고려하여 합 $S$와 올림수 $C_{out}$을 산출합니다.

$A$ $B$ $C_{in}$ Sum ($S$) Carry-out ($C_{out}$)
0 0 0 0 0
0 1 0 1 0
1 0 0 1 0
1 1 0 0 1
0 0 1 1 0
0 1 1 0 1
1 0 1 0 1
1 1 1 1 1

5. 상태 플래그 (Status Flags)

연산 결과의 특성을 저장하는 1비트의 표시등과 같은 장치입니다. 이는 CPU가 조건 분기(Conditional Branching)를 결정하는 근거가 됩니다.

  • Carry Flag (C): 무부호 정수 연산에서 범위를 초과하여 올림수나 빌림수가 발생했을 때 설정됩니다.
  • Zero Flag (Z): 연산 결과가 0일 때 설정됩니다. (두 값이 같은지 비교할 때 주로 사용)
  • Overflow Flag (V): 부호 있는 정수 연산에서 결과값이 표현 가능한 범위를 벗어났을 때 설정됩니다.
  • Negative Flag (N): 연산 결과의 최상위 비트(MSB)가 1인 경우, 즉 결과가 음수일 때 설정됩니다.

6. ALU와 제어 장치의 상호작용

ALU는 스스로 판단하여 동작하지 않으며, 제어 장치(Control Unit)의 엄격한 통제 하에 작동합니다.

  1. 명령어 해독: 제어 장치가 메모리에서 가져온 명령어를 해독(Decoding)합니다.
  2. 신호 송신: 제어 장치가 ALU에 특정 연산 코드(예: 010 $\rightarrow$ 덧셈)를 보냅니다.
  3. 데이터 경로 제어: 제어 장치가 레지스터의 게이트를 열어 피연산자가 ALU 입력단으로 흐르게 합니다.
  4. 결과 처리: ALU가 연산을 마치면, 제어 장치는 결과값을 다시 레지스터나 메모리에 저장하도록 지시합니다.

7. 연산 단계별 데이터 흐름도

데이터가 ALU를 통해 처리되는 일반적인 과정은 다음과 같습니다.

graph LR
    A[레지스터/메모리] -->|피연산자 A, B| B(ALU 입력단)
    C[제어 장치] -->|연산 코드/제어 신호| B
    B --> D{ALU 내부 연산}
    D --> E[결과값 출력]
    D --> F[상태 플래그 설정]
    E --> G[대상 레지스터 저장]
    F --> H[상태 레지스터 저장]

8. 현대적 발전과 변형

단순한 정수 연산 장치였던 ALU는 컴퓨팅 요구사항의 증가에 따라 전문화된 형태로 확장되었습니다.

8.1 FPU (Floating Point Unit)

실수(소수점) 연산을 효율적으로 처리하기 위한 전용 장치입니다. 과거에는 별도의 코프로세서(Coprocessor)로 존재했으나, 현대 CPU는 내부에 통합되어 있습니다.

8.2 SIMD (Single Instruction, Multiple Data)

하나의 명령어로 여러 개의 데이터를 동시에 처리하는 구조입니다. (예: Intel의 AVX, ARM의 NEON) 이는 멀티미디어 처리, AI 연산, 그래픽 렌더링에서 비약적인 성능 향상을 가져왔습니다.

8.3 실제 CPU 모델별 ALU 사례

  • Intel Core 시리즈: 고성능 Out-of-Order 실행 엔진 탑재, 여러 개의 ALU를 병렬 배치하여 한 클록에 다수 연산 수행
  • Apple M 시리즈 (Apple Silicon): 전성비 극대화 구조, 신경망 엔진(Neural Engine)이라는 특수 목적 ALU 집합을 통한 AI 연산 가속
  • ARM Cortex-M 시리즈: 임베디드 환경 최적화, 전력 소모 최소화 및 결정론적(Deterministic) 실행 시간 보장 중심의 단순 구조 채택
AI 생성 콘텐츠 안내

이 문서는 AI 모델(gemma-4-31b)에 의해 생성된 콘텐츠입니다.

주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.

이 AI 생성 콘텐츠가 도움이 되었나요?