컴퓨터 구조 - 게이트 구현

Plato·2022년 8월 14일
0

서론

모든 소프트웨어는 하드웨어 위에서 동작한다. 그렇기에, 구현을 할 수 있을 정도로 구체적으로 알 필요는 없겠지만, 추상적으로라도 이해하고 싶었고, 많은 독자분께서도 마찬가지일 것으로 생각한다. 오늘은, 논리 회로가 무엇인지 알아보고, 기본적인 논리 회로를 결합하여, XOR, NAND, NOR 게이트를 만들어보자.

본론

단어 설명

게이트

논리 회로를, 게이트라 부른다.
위키피디아에 의하면 논리 회로는, "불 대수를 물리적 장치에 구현한 것으로... AND, OR, NOT의 기본 불 대수를 수행하며, 이 기본 불 대수들의 결합으로 복합적인 논리 기능을 수행한다."

위의 설명에서만큼은, '불 대수'를 '연산'으로 바꿔 읽어도 무방하다.
즉, 'AND, OR, NOT 연산을 기반으로, 복잡한 연산을 하는 하드웨어'를 논리 회로라 부른다.

AND OR NOT 연산

그러면, 이 세 연산은 무엇일까?
AND, OR 그리고 NOT은 아래와 같다.

A OR B의 결과값: A와 B 둘 중에 하나라도 참이면 참. 둘 다 거짓이면 거짓
A AND B의 결과값: A와 B 둘 다 참이면, 참. A와 B 둘 중에 하나라도 거짓이면 거짓
NOT A의 결과값: A가 참이면 거짓이고, A가 거짓이면 참.

*필자도, AND, OR, NOT을 하드웨어로 어떻게 구현하는지 모른다. 그렇기에 이 세 게이트가 잘 구현됐다고 가정한 뒤, 이를 사용하여 다른 게이트를 구현할 것이다.

표기법 설명

참/거짓 표기법

컴퓨터는 이진수를 사용하기 때문에, 일반적으로 참을 1로 표기하고, 거짓을 0으로 표기한다. 이 글에서는, 1과 0이 아니라, High 혹은 H 그리고 Low 혹은 L로 표기할 것이다. 필자가 사용한 논리 회로 시뮬레이터가, 해당 표기법을 사용하고 있어서, 일관성을 유지하기 위함이니, 필자를 원망치 말자.

AND 게이트 기호

아래가 AND 게이트를 나타내는 기호다. 왼쪽 2개의 점이, 두 개의 입력을 나타내고, 오른쪽 한 개의 점이, 출력을 나타낸다.

OR 게이트 기호


점의 의미는 AND 게이트와 동일하다.

NOT 게이트 기호


NOT은 위의 두 게이트와 다르게, 한 개의 입력을 받는다. 그래서, 입력을 나타내는 점이 왼쪽에 한 개만 존재한다.

NAND 구현

NAND는 (A AND B)를 부정한 것이다. 즉, A NAND B = NOT(A AND B)
그렇기에, 아래와 같이 not 게이트와 and 게이트를 연결하면 NAND 게이트를 구현할 수 있다.
(노란 선은, High(이진법으로 표기하면 1, 참/거짓으로 표기하면 참)를 나타낸다.)

이를 추상화해서, 아래의 기호로 NAND를 표기할 수 있다.

NOR 구현

NOR는 (A OR B)를 부정한 것이다. 즉, A NOR B = NOT(A OR B)
아래와 같이 NOT 게이트와, OR 게이트를 결합하여 구현할 수 있다.
NOR는, OR 게이트의 끝에 동그라미를 붙여, 아래와 같이 표기할 수 있다.

XOR 구현

XOR은, exclusive or의 약자로, OR과 유사하지만, '둘 중에 하나만 참일 때 참이 된다'는 차이점이 있다.
그렇다면 A or B 이면서, 동시에 A와 B가 참이 아니면 된다. 이를 표현하면 아래와 같다.

A XOR B = (A or B) and not(A and B)

여기서 not(A and B)는 NAND와 동일함에 주목하자. 아래처럼, NAND와 or 그리고 and 게이트로 XOR 게이트를 구현할 수 있다.

마무리

AND, OR, NOT 게이트 표기법과 NAND, NOR, XOR 게이트를 만드는 방법을 설명했다.
다음 글에서는, 한 발짝 더 나아가, 게이트를 조합하여 정수의 덧셈을 구현하는 과정을 설명하겠다.

*이 글에 첨부된 다이어그램은, 논리회로 시뮬레이터를 사용하여 만든, 회로의 사진이다. 게이트를 결합하여, 자유롭게 논리 회로를 구성하고, 테스트할 수 있으니, 시도해보길 권장한다.

참고자료

위키피디아 논리회로 문서
https://ko.wikipedia.org/wiki/%EB%85%BC%EB%A6%AC_%ED%9A%8C%EB%A1%9C

논리회로 시뮬레이터
http://www.falstad.com/circuit/

Dave Lee 강사님의 컴퓨터구조 강의

0개의 댓글