전자 회로의 조합 논리

컴퓨터가 비트를 사용하게 된 이유

생각해보면 컴퓨터는 왜 10진수가 아니라 2진수를 사용하게 된걸까? 외계인이 만든 것도 아니고 10진수를 사용하는 사람들이 만든건데 말이다. 초기에 만들어진 컴퓨터들을 보면 비트를 사용하지 않고 릴레이나 진공관 같은 기술을 사용하는데, 어째서 현대의 컴퓨터는 비트를 사용하게 되었는지 알아보자

여러 기술들을 사용하는 기계적 계산장치들

옛날에 ‘이미테이션 게임’ 이라는 영화를 봤던 것이 생각난다. 베네딕트 컴버배치가 나온 영화로 엘런 튜링의 실화 바탕 이야기인데, 독일 나치의 암호기 에니그마를 해독하는 과정을 그린 영화였다. 이 영화는 지금까지도 재밌게 본 영화를 추리라하면 꼭 내 손가락 안에 들어가는 영화 중 하나인데 수 없이 바뀌는 동그란 원판을 쳐다보며 끊임없이 고민하며 해결하던 컴버배치의 모습이 참 인상깊었다.

톱니바퀴

톱니바퀴는 톱니바퀴 2개가 서로 맞물려 돌아간다. 그리고 이 톱니가 돌아가는 속도는 각 톱니바퀴의 톱니 비율에 따라 다르기 때문에 곱셈, 나눗셈, 기타 계산에 유용하게 쓰였다.

안티키테라

안티키테라

‘2000년 묵은 컴퓨터’ 안티키테라

기원전 100년경 만들어진 것으로 추정되는 안티키테라Antikythera은 다이얼을 돌려 날짜를, 크랭크를 돌려 해당 날짜의 태양의 위치나 달의 위치 같은 천문학적인 계산을 하던 계산기다.

화기 제어 컴퓨터

2차 세계대전 즈음에 쓰였으며 수 많은 모양과 크기의 톱니바퀴를 사용해 삼각함수와 미적분을 계산하였다.

그 외의 컴퓨터

계산자

S256_Faber-Castell_2-83

로그를 영리하게 응용한 도구로 $ log(x * y) = log(x) + log(y)$ 인 것을 이용해 곱셈을 수행하는 방식이다. 고정부와 이동부가 있으며 고정된 $ x $의 로그 눈금과 움직이는 $ y $ 눈금의 기준선을 맞추면 두 수의 곱을 계산하는 방식이다. 최근에도 파일럿들은 비행 컴퓨터flight computer라고 부르는 동그란 계산자로 항법을 계산한다.

차분기관

050114_2529_difference

만들어지지는 못했으나 1786년에 뮐러라는 사람이 제안한 기계이다. 1822년 찰스 배비지라는 사람이 잊혀진 차분기관을 발명하였으며 10진법을 사용하고 핸들을 돌려 동력을 얻는 방식으로 설계되었으나 제작하지는 못하였다. 영국 정부에 계속해서 지원금을 요구해서 지원을 철회했던 것도 있겠지만 200주년 기념으로 런던 과학 박물관에서 설계를 그대로 따라 만든 차분기관 2호를 만들었었는데 몇 가지 오류가 발견되어 공정과정에서 수정되었다고한다.

디지털과 아날로그

손가락으로 개수를 세는 행위는 디지털일까 아날로그일까? ‘엥 손가락은 당연히 아날로그아니야?’ 라고 생각할 수도 있다. 디지털과 아날로그를 자세히 모르는 상태에서 생각한다면 말이다. 손가락은 ‘디지털’이다. 손가락은 ‘이산적’이다. 이산적discrete이라는 말은, 하나하나 다른 존재로 구분이 가능하다는 뜻이다. 아날로그는 ‘연속적’이고 연속적continuous이라는 것은 ‘실수’를 자릿수 제한 없이 표현할 수 있다는 뜻이다.

  • 디지털 : 이산적, 하나하나 다른 존재로 구분할 수 있음
  • 아날로그 : 연속적, 실수를 자릿수 제한 없이 표현할 수 있음

계산자같은 경우는 눈금을 자에 갖다대어 계산하는 방식이기 때문에 ‘아날로그’ 방식이다. ‘아날로그’ 방식은 연속적이기 때문에 실수를 표현할 수 있어 계산에 적합해보이지만, 실제로는 디지털 방식의 계산기가 대부분을 차지하고 있다. 왜냐하면 아날로그 방식은 실수할 가능성이 높기 때문이다. 예를 들어 1.003을 가리키려고했을 때 내가 1.002에 눈금을 잘못 갖다댈수도, 1.005에 눈금을 잘못 갖다댈 수도 있기 때문에 정확한 계산을 요하는 계산기에는 아날로그 방식은 적합하지 않다. 크게 만들면 계산의 오차가 줄어들겠지만 길이가 축구장만한 계산기를 120+200을 위해 사용한다고하면 그 만한 낭비가 없을 것이다.

하드웨어의 크기

위에서 서술했듯이 축구장만한 계산기를 만드는 것은 비효율적이다. 축구장만한 계산자를 만들고, 그 자의 눈금을 가리키기위해서는 축구장을 뛰어다녀야 할 것이다. 컴퓨터도 마찬가지다. 현대 컴퓨터는 눈금자 대신 전자를 사용하고, 전기는 빛의 속도로 움직이고 물리적 한계를 뛰어넘을 수 없기 때문에 전자의 시간을 줄이기 위해서는 부품을 가능한 가깝게 위치시키는 것 뿐이다. 가끔 IT뉴스를 보면 ‘기술적 혁신 xx나노 공정 개발 완료’등의 뉴스를 볼 수 있는데, 컴퓨터가 작아지면 작아질수록 빨라지고 필요한 에너지 양이 줄어들어 효율이 좋아진다는 의미의 혁신이다.

10진 숫자 대신 비트를 사용하는 이유

손가락을 생각해보자. 손가락으로 1000을 표현하려고 할 때 우리들은 손가락 하나로 숫자 하나를 표현하기 때문에 1000의 손가락 개수가 필요할 것이다. 손가락을 비트처럼 피면1, 접으면0으로 해서 표현하는게 아닌 이상말이다. 손가락대신 비트의 방식을 사용해서 숫자를 표현하면 그 효율은 가히 100배 그 이상일 것이다.

컴퓨터가 전기를 사용하는 방법

전기는 물과 비슷하다. 전기도 흐르고 물도 흐른다. 그리고 우리들은 이 물을 제어하기위해 배관을 사용한다. 배관에는 밸브가 있으며 밸브가 잠기면 물이 나오지 않고(0), 밸브를 풀어주면 물이 배관에 흐르게 된다(1). 한 개의 파이프가 갈라져있지않고 직선으로(직렬)흘러져있고 밸브가 나란히 있다면, 모든 밸브가 열려야 물이 흐를 것이고(AND) 파이프가 갈라져있는 형태라면 한 군데만 밸브가 열려있어도 물은 흐를 것이다(OR). 물은 수압에 의해 물의 유속이 달라진다. 파이프가 작을수록 저항이 커져서 물의 흐름은 줄어든다. 파이프 속을 능동적으로 움직이는게 아니라 수압에 의해 떠밀려지는 것이다. 전기도 마찬가지로 수압대신 전압volt 이 있고 전압을 통과시키는 전선(도체)이 가늘수록 저항resistance(옴ohm이라고 함)이 세지고 전류(물의 흐름)가 커지지 못한다. 이 세 가지 변수(전압V, 전류I, 저항R)는 옴의 법칙ohm’s law을 통해 $ I=V/R $이라는 관계로 서로 이어져있다. 전류는 전압을 저항으로 나눈 값과 같다는 뜻이다.

저항은 전기를 열로 바꾸는데, 토스터기나 전기담요는 이와 같은 원리를 사용한다

전기에 사용되는 여러가지 장치들

스위치

스위치는 도체 사이에 부도체를 삽입해 전기의 흐름을 막는 용도로 사용된다. 두 금속 조각은 서로 붙어 있지 않으면 전기가 흐를 수 없기 때문에 이를 부도체로 막아서 전기가 통하지 않게 하는 역할이다. 단극단투 스위치, 쌍극쌍투스위치, 단극쌍투 스위치 여러가지 스위치가 있는데, 극pole이라는 말은 한꺼번에 연결되어 이동하는 스위치의 개수를, 투throw라는 말은 접점의 개수를 말한다. 예를 들어 ON과 OFF의 역할을 하는 접점 두개의 스위치를 만들고자한다면 이 것은 단극쌍투 스위치로 만들 수 있을 것이다.

릴레이

선을 둥글게 감아서 코일로 만들고 전기를 흘려보내면 코일은 전자석electronmagnet이 된다. 그냥 전기자석이다. 이 전자석은 키고 끌 수가 있기 때문에 물건을 움직일 때 활용할 수 있고, 밸브를 제어할 수 있고, 모터를 만드는 둥 여러가지로 활용된다. 릴레이는 이 전자석을 활용해 스위치를 움직이기 위한 장치이다. 릴레이를 사용하면 스위치로는 불가능한 일을 할 수 있다. 예로 인버터inverter를 만들 수 있다. 인버터는 NOT 함수를 구현하는 장치이다(NOT이 없으면 함수는 완결적이지 않다. 불리언 연산을 모두 표현할 수 있는 함수가 있다면 우리는 그 함수를 완결적이라고 부르기로했다. 그리고 이 불리언 연산을 모두 표현하려면 NOT의 존재가 필요하다.). 릴레이는 전이 함수의 문턱값이 수직이기 때문에 스위치는 코일에 가하는 전압을 아무리 천천히 높여도 항상 다른 위치로 순식간에 움직인다. (라그랑주-해밀턴 방정식에서 이 경우 문턱에서 전이 함수의 값이 정의되지 않는다는 사실을 배운다 이로 인해 스위치 접점이 순식간에 이동한다.)

전이 함수에 대한 설명은 bugoverdose님의 블로그를 참고하자.

릴레이는 느리고, 전기를 많이 소모한다. 실제로 버그bug라는 오류를 뜻하는 단어는 미국의 컴퓨터 과학자 그레이스 호퍼가 오류를 추적하다 발견한 릴레이에 낀 나방을 발견하며 유명해졌다. 릴레이로 스위치에서 다른 스위치를 제어할 수 있기 때문에 여러 문제도 생긴다. 코일의 전원을 갑자기 끄면 순간적으로 초고압이 발생하고 초고압에서는 공기가 도체로 바뀌기때문에(번개) 전기가 통한다. 이 현상으로 인해 스위치의 접점이 마모되고 이런 단점 때문에 사람들은 릴레이 대신 다른 방식을 찾기 시작했다.

진공관

학창시절의 과학시간을 기억할 지는 모르겠지만, 아니면 교육과정이 바뀌었을 수도 있겠지만 내 기억의 과학시간 중 하나로 계속 가열하는 물체의 전자의 운동에너지가 증가해 전자끼리, 벽에 부딪히더니 전자가 튀어나와버리곤했다. 이것을 우리는 열전자 방출thermionicemission이라고 했고 이런 현상을 기반으로 진공관을 만들었다. 이 안에는 캐소드(야구 투수의 역할)와 캐소드를 가열하는 히터가 있고 캐소드에서 발생한 전자가 진공 속에서 애노드(포수 역할)로 날아간다. 전자는 서로 같은 극끼리 밀어내고 다른 극끼리 서로를 끌어당긴다. 진공관에 그리드(타자 역할)라고 하는 친구는 캐소드에서 나오는 전자를 쫓아내서 애노드에 도착하지 못하게 만든다.이 세 가지 요소(캐소드, 그리드, 애노드)가 들어 있는 진공관을 우리는 삼극관(트라이오드)이라고 부른다. ( >]:l >-히터 ]-캐소드 :-그리드 l-애노드) 그리드가 전자를 방해하는데, 그리드가 전자를 방해하지않으면 애노드에 도착한다. 그리드는 ‘스위치’라고 볼 수 있는 것이다. 진공관은 움직이는 부분이 없어서 릴레이보다 훨씬 빠르지만 깨지기가 쉽고 아주 뜨겁다. 하지만 릴레이에 비하면 훨씬 개선된 것이기 때문에 더 빠르고 안정적인 컴퓨터 구성이 가능해졌다. 이 진공관으로 만든 녀석이 콜로서스다. 초반에 말했던 ‘이미테이션 게임’에 등장한 에니그마의 암호 해독을 위한 기계 콜로서스로 잘못 알려져있는데, 사실 튜링이 만든 것은 콜로서스가 아니라 전기 기계식 ‘봄브’이고, 콜로서스는 로렌츠 암호 해독을 위해 만들어졌다.

트랜지스터

전송 저항transfer resistor이라는 말을 줄인 녀석이 트랜지스터transistor 이다. 반도체라는 특별한 녀석을 사용하고 이 녀석은 도체와 부도체를 오갈 수 있는 물질이다. 여러 가지 유형의 트랜지스터가 있지만 가장 중요한 두 가지는 쌍극 접합 트랜지스터필드 효과 트랜지스터이다. 제조 공정에서 비소같은 위험한 물질을 기판 위에 얇게 분사하는(성질을 변화시키기 위해) 도핑doping이라는 과정을 거치는데 이 때 $ p $와 $ n $ 유형의 물질로 이뤄진 영역을 만들어내고 트랜지스터를 만들려면 이 $ p $와 $ n $의 샌드위치를 만들어야한다. 예를 들어 NPN, PNP, N채널, P채널 등의 구성 방법이 있다.

집적회로

트랜지스터를 사용하며 더 작고 전력도 적게 소모하는 논리회로를 만들 수 있게 되었다. 하지만 트랜지스터를 사용하면 간단한 회로를 만들 때 조차 부품이 너무 많이 필요해서 잭 킬비와 로버트 노이스라는 분들이 집적 회로integrated circuit를 발명했다. 이 집적 회로를 사용하면 복잡한 시스템을 트랜지스터 하나의 비용 정도로 만들 수 있었고, 생긴 모양 때문에 칩chip이라고 불렸다.

논리 게이트

배관공이 ㄱ자 파이프, ㅡ자 파이프 등의 기성품을 구매해서 파이프라인을 구축하는 것처럼, 하드웨어 설계자들도 논리 게이트 라는 기성품들을 사용해서 논리 회로를 구축한다. AND 게이트, OR 게이트, NAND게이트, NOR게이트, XOR게이트, 인버터 등이 있다. 가장 단순한 회로는 AND나 OR이 아닌 NAND나 NOR 게이트로, 스키매틱(전기 회로를 그림으로 표시한 것)에서는 AND와 OR에 반전을 뜻하는 원을 그려주어 게이트를 완성시킨다. NAND나 NOR은 두 입력을 같은 입력 a에 연결해주면 인버터(NOT을 수행하는 게이트)게이트를 만들 수 있고 (a NAND a나 a NOR a 는 NOT a 와 같음) 드모르간의 법칙에 의해 NAND는 OR의 두 입력의 반전이므로 OR게이트로 바꿔그릴 수 도 있다. 또 NAND의 출력에 NAND로 만든 인버터를 연결하면 AND가 되므로 NAND만 있으면 OR, AND, NOT을 표현할 수있고 모든 논리를 표현할 수 있는 것이다. NOT또한 마찬가지이다.

댓글남기기