(밑바닥부터 만드는 컴퓨팅 시스템 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 (오버플로는 무시한다)
'밑바닥부터 만드는 컴퓨팅 시스템 (Nand to Tetris)' 카테고리의 다른 글
[Chapter 2] project 02 (0) | 2024.02.09 |
---|---|
[Chapter 2] 산술 논리 장지 (Arithmetic Logic Unit, ALU) (0) | 2024.02.09 |
[Chapter 2] 불 연산 (Boolean Arithmetic) (0) | 2024.02.09 |
[Chapter 1] projects 01 : 논리 게이트 구현 (0) | 2024.02.09 |
[Chapter 1] HDL 문법 (0) | 2024.02.09 |