본문 바로가기

[Chapter 2] 가산기

(밑바닥부터 만드는 컴퓨팅 시스템 2판,  인사이트(insight), 2023)을 학습하고 개인 학습용으로 정리한 내용입니다.

 

 

 

 

 

  • 반가산기 (Half Adder)

두 개의 입력 비트를 더한다. 

in out
a b carry sum
0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 0

입력 : a, b

출력 : sum, carry

기능 : sum = a + b의 LSB

          carry = a + b의 MSB

 

 

 

  • 전가산기 (Full Adder)

세 개의 입력 비트를 더한다.

sum은 산술연산의 결과 값이 아니다. 즉, a=1, b=1, c=1 일 때, a+b+c의 산술연산 결과인 \( (11)_2 \) 을 의미하지 않는다.

단지 a+b+c를 하고난 후의 현재 비트(1-bit) 값을 나타낼 뿐이다.

따라서 a(1)+b(1)=v(0) (carry 발생), v(0)+c(1)=sum 값이된다.

a b c carry sum
0 0 0 0 0
0 0 1 0 1
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0
1 1 1 1 1

입력 : a, b, c

출력: sum, carry

기능 : sum = a + b + c의 LSB

          carry = a + b + c의 MSB

 

 

 

  • 가산기

컴퓨터는 정수를 8, 16, 32, 64-bit 같은 고정 단어 크기로 표현한다. 이러한 두 개의 고정단어 n-bit 수를 더한다.

아래는 16-bit 가산기에 대한 추상화이다.

  0 1 0    
  1 0 1 1 a
... 0 0 1 0 b
... 1 1 0 1 out

 

 

입력 : a[16], b[16]

출력 : out[16]

기능 : 두 개의 16-bit 수를 더한다 (오버플로는 무시한다)

 

 

 

  • 증분기 (Incrementor)

주어진 숫자에 1을 더한다.

이 칩은 현재 명령을 실행한 후에 다음 명령을 가져오는데 쓰인다.

범용 가산기로도 x + 1 연산은 구현이 가능하지만, 전용 칩이 더 효율적이다.

 

입력 : in[16]

출력 : out[16]

기능 : out = out + 1 (오버플로는 무시한다)