Seongyeol Yi

사실 엄마 아빠가 둘 다 좋지는 않았던 컴퓨터

This post is not yet available in English and is shown in Korean.

지난 글에서는 AND, OR, NOT이라는 세 가지 기본 논리 게이트를 살펴보고 이 게이트들을 조합하면 진리표로 표현 가능한 모든 논리 회로를 만들 수 있다는 것을 확인했다.

그런데 컴퓨터 하드웨어를 만드는 엔지니어의 입장에서는 조금 다르다. 컴퓨터는 사람이 아니기에 직관성이나 이해하기 쉬움보다는 물리적으로 구현하기 얼마나 효율적이고 간단한지가 훨씬 중요하다. 단 한 가지 종류의 부품만으로 모든 것을 만들 수 있다면 제조 과정이 훨씬 단순해지고 비용도 절감될 것이다.

그 어떤 복잡한 논리 회로도 오직 NAND 게이트 하나만으로 모두 만들 수 있다. 이를 NAND의 완전성(Completeness) 또는 보편성(Universality) 이라고 부른다. 이번 글에서는 NAND 게이트에 대해 알아보고 실제로 다른 기본 게이트들을 만들어보자.

NAND 게이트

NAND 게이트는 이름에서 알 수 있듯이 AND 연산의 결과에 NOT 연산을 적용한 것이다. 두 입력이 모두 참일 때만 거짓이 되고, 그 외의 경우에는 모두 참이 된다. A가 ‘엄마가 좋다’고 B가 ‘아빠가 좋다’면 A NAND B는 ‘엄마 아빠가 둘 다 좋지는 않다’인 셈이다.

NAND 게이트의 진리표는 다음과 같다.

A NAND B
001
011
101
110

NAND로 NOT 만들기

우선 비교적 단순한 NOT 게이트부터 만들어보자. NAND 게이트의 두 입력에 같은 값을 연결하면 어떻게 될까?

사각형 노드를 클릭해 입력값을 바꿔보자. 출력이 입력의 반대가 되는 것을 확인할 수 있다.

NAND로 AND 만들기

NAND 게이트는 AND 결과의 정반대 출력을 내놓는다. 그렇다면 NAND 게이트의 출력 값을 반전시키면 어떻게 될까?

NAND 게이트의 출력을 NAND 게이트의 입력들로 연결하면 AND 게이트가 된다.

NAND로 OR 만들기

OR 게이트는 조금 고민이 필요하다. 드모르간 법칙을 활용해볼 수 있다. 드모르간 법칙이란 NOT(A AND B) = (NOT A) OR (NOT B)처럼, AND와 OR을 NOT으로 서로 바꿀 수 있다는 법칙이다. 아래 순서대로 OR을 NAND로 표현할 수 있다:

  1. A OR B
  2. NOT ((NOT A) AND (NOT B))
  3. (NOT A) NAND (NOT B)

위 방법대로 구현한 모습은 다음과 같다:

NAND 게이트의 완전성 (Universality)

이렇게 NAND 게이트 하나만으로 NOT, OR, AND 게이트를 모두 구현할 수 있음을 확인했다. 지난 글에서 AND, OR, NOT만 있으면 어떤 논리 회로든 만들 수 있다는 것을 배웠다.

따라서 NAND 게이트 하나만으로도 모든 디지털 논리 회로를 구성하는 것이 가능하다. 이것이 바로 NAND 게이트의 완전성(Universality) 이다.

컴퓨터 하드웨어를 대량으로 생산하는 입장에서는 부품의 종류가 적을수록 생산 과정이 효율적이고 단순해진다. 단 한 종류의 기본 부품만 찍어내서 연결하면 되니, 제조 비용을 절감하고 복잡성을 줄일 수 있다.

마무리

복잡한 컴퓨터 하드웨어가 결국에는 이처럼 단순한 NAND의 조합으로 이루어질 수 있다.

이제 컴퓨터가 사용하는 비트(0과 1)가 어떻게 논리적인 의미를 가지고 물리적인 부품으로 구현되는지 이해했다. 기본 논리 게이트들을 조합하면 어떤 논리 회로든 만들 수 있다는 것도 알게 되었다.

다음 글에서는 이 논리 게이트들을 조합하여 실제로 간단한 계산을 수행하는 회로를 어떻게 만드는지 살펴보자.