Limsh.io

ALU의 숫자 계산


ALU는 숫자를 계산할 때 어떤 과정을 거칠까?

  • ALU는 기본적인 논리 회로의 결합으로 사칙 연산과 논리 연산을 수행합니다.

1. 산술 연산

  1. AND (& 연산): 두 입력 비트가 모두 1일 때만 1을 반환합니다.
  2. OR (| 연산): 입력 중 하나라도 1이면 1을 반환합니다.
  3. XOR (^ 연산): 두 입력 비트가 다르면 1, 같으면 0을 반환합니다.
  4. NOT (~ 연산): 비트를 반전시킵니다.

예시

ABAND (A & B)OR (A | B)XOR (A ^ B)NOT A (~A)
000001
010111
100110
111100

2. 6 + 9의 연산 과정

  • 0000 0110 (6) + 0000 1001 (9)
  • 각 비트별 XOR 연산을 수행 = 0000 1111 (15)
  • 위처럼 자리올림이 없는 경우 XOR을 사용해 연산이 가능하지만, 자리올림이 있을 경우 ALU는 어떻게 처리할까요?

3. 반가산기(Half Adder)와 전가산기(Full Adder)

  • ALU는 자리올림이 발생하면 반가산기전가산기를 통해 연산을 수행합니다.

반가산기(Half Adder)

  • 반가산기는 XORAND 두 개의 논리 게이트로 구성됩니다.
  • 반가산기는 두 개의 입력과 두 개의 출력을 가지는 논리 회로입니다.
  • 이 회로는 두 개의 입력 비트를 더하고 합과 자리올림(carry)을 출력합니다.

half-adder

전가산기(Full Adder)

  • 전가산기는 두 개의 반가산기OR 게이트로 구성됩니다.

  • 전가산기는 세 개의 입력과 두 개의 출력을 가지는 논리 회로입니다.

  • 세 개의 입력은 더할 두 비트와 이전 단계에서 넘어온 carry를 나타냅니다.

  • carry가 발생하면 AND 게이트로 자리올림을 다음 연산으로 넘겨줍니다.

  • 이러한 과정을 통해 최하위 비트부터 시작해 순차적으로 자리올림(carry)을 전파하여 덧셈을 수행합니다.

full-adder

출처: