플레이하기

← fab24hr 칼럼

칩 입문약 6분

논리 게이트란? 스위치가 어떻게 계산하는 칩이 될까

논리 게이트(logic gate)는 트랜지스터 몇 개를 연결해 만든 작은 회로다. 입력선이 0인지 1인지 보고, 정해진 규칙에 따라 출력선을 0으로 할지 1로 할지 정한다. 가장 기본적인 것은 세 가지다. NOT(1이 들어오면 0을 내보내고, 0이 들어오면 1을 내보낸다), AND(둘 다 1일 때만 1을 내보낸다), OR(하나라도 1이면 1을 내보낸다). 칩이 덧셈을 하고, 크기를 비교하고, 조건에 따라 다음 동작을 정할 수 있는 것은 아주 많은 논리 게이트를 층층이 조합했기 때문이다.

트랜지스터라는 작은 스위치가 어떻게 생겼는지는 ‘트랜지스터란?’을 먼저 읽어도 좋다. 이 글은 스위치에서 출발해 위로 올라가며 설명한다.

칩 속의 0과 1은 도대체 무엇일까?

0과 1은 선 하나의 전압이 높은지 낮은지다. 선이 전원에 연결되어 전압이 높으면 1, 접지(전압이 0인 쪽)에 연결되어 전압이 낮으면 0이다. 논리 게이트가 하는 일은 입력선의 전압을 보고 스위치로 출력선을 전원이나 접지에 연결하는 것이다.

오늘날의 칩에서는 스위치가 두 종류이며, 둘을 짝지어 쓴다. 하나는 게이트에 전압이 걸려야(입력이 1) 켜지는 n형으로, 출력과 접지 사이에 놓여 출력을 0으로 끌어내린다. 다른 하나는 정반대로 게이트에 전압이 없어야(입력이 0) 켜지는 p형으로, 출력과 전원 사이에 놓여 출력을 1로 끌어올린다. 이런 구성을 CMOS라고 한다(CMOS란?).

가장 간단한 논리 게이트: NOT은 어떻게 ‘반전’할까?

NOT은 인버터라고도 한다. 입력 하나와 출력 하나뿐이며, 스위치 한 쌍으로 만들 수 있다.

  • 입력이 1일 때: 접지 쪽 스위치가 켜지고 전원 쪽 스위치가 꺼진다. 출력이 접지에 연결되어 0이 된다.
  • 입력이 0일 때: 접지 쪽 스위치가 꺼지고 전원 쪽 스위치가 켜진다. 출력이 전원에 연결되어 1이 된다.

그러니 스위치가 ‘켜졌다’고 해서 출력이 1이라는 뜻은 아니다. 입력이 1일 때 켜지는 스위치는 오히려 출력을 0으로 끌어내린다.

전환하지 않을 때는 두 스위치 가운데 하나만 켜져 있어 전원과 접지 사이에 곧장 이어지는 길이 없다. 그래서 새어 나가는 아주 적은 전류만 남는다. 이것이 CMOS가 전력을 적게 쓰는 이유다.

스위치 두 개를 직렬로, 병렬로 연결하면 무엇이 다를까?

수도관에 달린 밸브를 떠올리면 쉽다.

  • 직렬 연결: 수도관 하나에 밸브 두 개가 앞뒤로 달려 있다. 둘 다 열려야 물이 지나가고, 하나라도 닫혀 있으면 지나가지 못한다.
  • 병렬 연결: 수도관 두 개가 나란히 있고, 각각 밸브가 하나씩 달려 있다. 하나만 열려도 물이 지나가고, 둘 다 닫혀야 지나가지 못한다.

스위치도 마찬가지다. 두 개를 직렬로 연결하면 둘 다 켜져야 그 길이 통하고, 병렬로 연결하면 하나만 켜져도 그 길이 통한다. 논리 게이트는 이 두 가지 연결 방식으로 ‘언제 접지에 연결하고, 언제 전원에 연결할지’를 짜 놓은 것이다.

스위치 두 개를 직렬로 연결한 경우와 병렬로 연결한 경우의 비교: 직렬은 한 수도관에 밸브 두 개가 앞뒤로 달린 것과 같아서 둘 다 열려야 물이 지나간다. 병렬은 나란한 두 수도관에 밸브가 하나씩 달린 것과 같아서 하나만 열려도 물이 지나간다. 스위치도 마찬가지다.
논리 게이트는 이 두 가지 연결 방식으로, 언제 접지에 연결되고 언제 전원에 연결될지를 정한다(모식도).

NAND, NOR는 어떻게 연결할까? AND, OR는 어디서 나올까?

입력이 A와 B 두 개일 때는 입력마다 스위치 한 쌍씩, 모두 네 개를 쓴다.

  • NAND(부정 논리곱): 접지 쪽에서는 두 스위치를 직렬로 연결하고, 전원 쪽에서는 두 스위치를 병렬로 연결한다. A와 B가 모두 1이어야 접지로 가는 길이 통해 출력이 0이 된다. 하나라도 0이면 전원으로 가는 길 하나가 통해 출력이 1이 된다. ‘AND를 한 뒤 반전한 것’이라는 뜻이다.
  • NOR(부정 논리합): 반대로 연결한다. 접지 쪽은 병렬, 전원 쪽은 직렬이다. 하나라도 1이면 출력이 0으로 끌어내려지고, 둘 다 0이어야 출력이 1이 된다. ‘OR를 한 뒤 반전한 것’이라는 뜻이다.

입력이 1일 때 켜지는 것은 접지 쪽 스위치이므로, 이 방식(n형은 접지 쪽, p형은 전원 쪽)으로 한 단을 만들면 본래 ‘반전된’ 종류만 나온다. AND(논리곱)가 필요하면 NAND 뒤에 NOT을 하나 더 연결하며, 스위치는 모두 여섯 개가 된다. OR(논리합)가 필요하면 NOR 뒤에 NOT을 연결한다.

입력 A입력 BNANDANDNOROR
001010
011001
101001
110101

NAND만으로 모든 것을 만들 수 있다는 말은 왜 나올까?

수학적으로 이미 증명되어 있다. ‘0과 1 몇 개를 보고 0을 낼지 1을 낼지 정하는’ 규칙은 어떤 것이든 NAND만으로 만들 수 있으며, NOR만으로도 만들 수 있다. 예를 들어 NAND의 두 입력을 하나로 묶으면 NOT이 된다. 다만 실제 칩은 한 종류만 쓰지 않고, 면적을 아끼거나 더 빨리 동작하는 쪽을 골라 쓴다.

논리 게이트는 어떻게 덧셈을 할까?

칩 속의 수는 2진수로 쓰며, 각 자리에는 0과 1만 있다. 10진수에서 9에 1을 더하면 자리올림이 생기듯, 2진수에서도 1에 1을 더하면 자리올림이 생긴다. 이 자리에는 0을 쓰고, 윗자리로 1을 올린다.

한 자리 덧셈에는 경우가 네 가지뿐이다.

입력 A입력 B자리올림이 자리
0000
0101
1001
1110

‘자리올림’ 열은 둘 다 1일 때만 1이므로 AND다. ‘이 자리’ 열은 둘이 다를 때만 1인데, 이런 규칙을 XOR(배타적 논리합)라고 하며 NAND 네 개로 만들 수 있다. AND 하나와 XOR 하나를 합치면 한 자리 가산기가 되는데, 이를 반가산기라고 한다.

여기에 오른쪽 자리에서 올라온 자리올림까지 함께 더하면 전가산기가 된다. 전가산기를 한 줄로 늘어놓고 각 자리가 자리올림을 왼쪽 자리로 넘기게 하면, 초등학교에서 배운 세로셈처럼 아주 긴 수도 더할 수 있다.

덧셈에서 프로세서까지, 그 사이에는 무엇이 있을까?

덧셈을 할 수 있게 되면 그 위로 더 조합해 나간다.

  • 크기 비교: 두 수를 빼서 답이 양수인지, 음수인지, 0인지 본다. 칩에서는 뺄셈도 가산기로 한다.
  • 하나 고르기: 선 하나를 제어용으로 써서, 그 선이 1이면 첫 번째 답을 통과시키고 0이면 두 번째 답을 통과시킨다. 이것도 논리 게이트로 만든다.
  • 조건에 따라 다음 동작 정하기: 크기 비교 결과를 ‘하나 고르기’의 제어선에 연결하면, 다음에 프로그램의 어느 부분을 실행할지 정할 수 있다.

프로세서의 핵심은 계산하고, 비교하고, 고르는 이런 회로들과, 명령에 따라 이들을 한 단계씩 지휘하는 제어 회로다.

계산하는 동안에는 수를 잠시 기억해 두어야 한다. NOT 두 개를 머리와 꼬리를 이어 고리로 만들면, 첫 번째가 1을 내보낼 때 두 번째는 0을 내보내고, 이 0이 다시 첫 번째가 계속 1을 내보내게 한다. 스스로 그 상태에 고정되어, 전원이 들어와 있는 한 계속 기억한다. 프로세서 안에서 수를 기억하는 작은 칸은 이 아이디어에서 나왔다(메모리와 프로세서는 무엇이 다를까?).

칩 하나에는 논리 게이트가 몇 개나 있을까? 하나하나 그리는 걸까?

입력이 두 개인 NAND 하나에는 트랜지스터가 4개, NOT 하나에는 2개 필요하다. 스마트폰 칩 하나에는 트랜지스터가 백억 개 넘게 들어 있으니, 그중 일부만 논리 게이트에 쓰더라도 억 단위로 세어야 한다.

이렇게 많으니 하나하나 그릴 수는 없다. 설계자는 하드웨어 기술 언어로 ‘이 회로 블록이 무엇을 할지’를 적고, 설계 소프트웨어가 이를 논리 게이트 하나하나로 바꾼 다음 위치를 배치하고 배선을 연결한다(칩은 어떻게 설계할까?).

논리 게이트 하나하나가 조금 느리고 조금 새면, 칩 전체는 왜 크게 달라질까?

속도: 입력이 바뀌면 출력은 아주 짧은 시간이 지나서야 따라 바뀐다. 대부분의 디지털 회로는 메트로놈 같은 신호에 맞춰 동작하는데, 이를 클럭이라고 한다. 스마트폰 프로세서는 1초에 수십억 박자로 움직이며, 한 박자는 10억 분의 1초도 안 된다. 신호는 한 박자 안에 논리 게이트 여러 개를 줄줄이 통과해야 다음 박자로 넘어갈 수 있다. 게이트마다 조금씩 느리면 줄 전체가 느려지고, 박자를 늦출 수밖에 없다.

전력 소모: 게이트는 한 번 전환할 때마다 약간의 전기를 충전했다가 다시 방전한다. 꺼져 있을 때도 스위치는 아주 조금씩 전류를 흘리는데, 이를 누설 전류라고 한다. 하나만 보면 무시해도 될 만큼 적지만, 수십억 개를 곱하면 칩 전체의 전력 소모와 발열이 된다(칩은 왜 전력을 쓸까?).

fab24hr에서는

게임에서는 논리 게이트가 보이지 않는다. 메인 스토리 ‘칩의 일생’은 가상의 보청기 칩 ‘Glowmere’를 따라간다. 보청기 같은 기기는 일반적으로 소리를 숫자로 바꿔 처리하는데(아날로그 칩과 디지털 칩은 무엇이 다를까?), 숫자를 처리하는 회로가 바로 층층이 쌓인 논리 게이트다.

챕터 1 ‘12장을 어떻게 나눌까’에서 나는 R&D 라인의 개발 PIE 엔지니어로서 초도 로트 웨이퍼 12장을 어떻게 나눌지 정해야 한다. 중간값 외에도 두 종류의 트랜지스터가 모두 느린 경우, 모두 빠른 경우, 하나는 빠르고 하나는 느린 경우가 있으며, 이렇게 치우친 조건을 코너라고 한다. 그 두 종류의 트랜지스터가 바로 n형과 p형, 즉 논리 게이트에서 짝을 이루는 스위치다. ‘코너’ 용어 카드의 ‘조금 더 알아보기’에 따르면 하나는 빠르고 하나는 느린 경우가 더 까다롭다. 두 트랜지스터의 박자가 맞지 않아 회로가 아예 오동작할 수 있기 때문이다. 챕터 10 ‘대기 전류’에서 나는 후공정 공장의 테스트 엔지니어로서, 칩이 아무것도 하지 않을 때 새는 전류가 얼마나 높으면 걸러 낼지 정해야 한다.

게임 속 회사, 칩, 인물, 숫자는 모두 가상이다. 논리 게이트를 어떻게 연결하고 어떻게 조합해 계산하는 회로를 만드는지는 공개된 일반 자료를 바탕으로 썼다. 다른 업계 용어는 ‘반도체 공장 전문 용어, 쉬운 말로 풀이’에서 찾아볼 수 있다.

게임에서 만나는 곳게임에서는 논리 게이트가 보이지 않는다. 메인 스토리 ‘칩의 일생’ 챕터 1 ‘12장을 어떻게 나눌까’에서는 보청기 칩 ‘Glowmere’의 초도 로트 12장 가운데 몇 장을 두 종류의 트랜지스터가 일부러 빠르게, 느리게, 또는 하나는 빠르고 하나는 느리게 만들어지도록 할지 정해야 한다. 논리 게이트에서 짝을 이루는 것이 바로 이 두 종류의 스위치다.

fab24hr의 R&D 라인에서는 웨이퍼 몇 장에서 논리 게이트 속 두 종류의 스위치를 일부러 치우치게 만들지 정하고, 보청기 칩이 그것을 버텨 내는지 지켜본다.

챕터 1부터 시작하기: 12장을 어떻게 나눌지 정하기

선생님께: 이 글은 ‘수업에서 fab24hr 활용하기’ 페이지와 함께 수업에 쓸 수 있어요.

이 글 인용하기‘논리 게이트란? 스위치가 어떻게 계산하는 칩이 될까’, fab24hr, 업데이트. https://fab24hr.com/ko/blog/logic-gates/
수업과 비영리 목적이라면 무료로 쓸 수 있어요. 화면에 띄우거나, 강의 자료에 넣거나, 학생들에게 인쇄해 나눠 줘도 괜찮아요. 출처(fab24hr)를 밝혀 주세요. 판매하거나 자기 작품으로 바꿔 내놓는 것은 안 돼요. 오류가 있다면 문제 신고

다른 글

이 사이트의 다른 페이지