본문 바로가기

CS ﹒ Algorithm/Computer architecture

컴퓨터 구조 (5) 아날로그와 디지털/ 디지털 하드웨어의 역사/ 집적회로(IC)와 논리회로(Logic gate)

인류 최초의 기계식 계산기인 그리스의 안티키테라(Antikythera) 무려 BC 100년에 만들어졌다. 단, 이는 천문, 시간 계산을 위한 계산기이다.(추정)

 

 

 

1. 기계식 계산기의 시대

 

16세기 윌리엄 오트레드가 계산자를 발명하였다, 이는 많은 사람에게 최초로 대량 생산된 계산 장치였으며 1642년 최초의 기계식 수동 계산기인 파스칼 계산기가 탄생하여 덧셈, 뺄셈이 가능하게 되었고 이후 곱셈 나눗셈까지 가능한 라이프니츠 계산기도 발명되었다. 이후에도 여러 계산기가 나타났으나 전자식 이전의 계산기는 사실상 라이프니츠 계산기를 계량한 정도로 이후에는 큰 차이가 없다.

다만 18세기 찰스 배비지가 고안한 계산기인 차분기관(differnce engine)과 해석기관(analytical engine) 있었으나 아쉽게도 예산과 시간의 부족으로 완성할 수 없었다.

( 차분기관과 해석기관에 로망을 가진 사람들이 많기 때문에 찰스 배비지가 당시 차분기관과 해석기관을 완성할 수 있었다면 ~ 이라는 가정 하에 만들어진 2차 창작물들이  꽤나 있다.. )

 

https://en.wikipedia.org/wiki/Calculator#History

 

Calculator - Wikipedia

From Wikipedia, the free encyclopedia Jump to navigation Jump to search Electronic device used for calculations A modern scientific calculator with a LCD An electronic calculator is typically a portable electronic device used to perform calculations, rangi

en.wikipedia.org

 

 

 

2. 아날로그와 디지털

 

전자 기술에서 Anlog는 연속적인 것을 의미하며, Digital은 이산적인 것을 의미한다. (라틴어로 손가락이 Digitus다.)

그러니까, 우리 손가락처럼 한 개씩 딱 딱 구별되는 것이 바로 디지털이고 계산자처럼 숫자 사이 사이에 모든 실수가 연속되어 표현되는 것이 아날로그라는 것이다.

 

 

(위) 디지털 (아래) 아날로그

 

기본적으로 컴퓨터는 하드웨어의 크기가 작으면 작을수록 기계는 더 빠르게 연산할 수 있다.

예를 들어 개폐장치로 열고 닫을 수 있는 배수관이 있을 때, 이 배수관이 길다면 개폐장치를 열어도 물이 모두 빠져나가는데 시간이 더 오래 걸릴 것이다. 

컴퓨터 하드웨어도 이와 마찬가지로,  전자는 빛의 속도로 움직이고 빛의 속도는 초당 3억미터인데, 3ghz의 클럭을 가진 cpu는 초당 40억회가량 연산할 수 있다. 그러나 40억분의 1초 동안 빛의 거리가 이동할 수 있는 거리는 고작 75mm뿐이다. 우리가 전자의 속도를 더 빠르게 하거나, 이보다 더 빠른 물질을 아직 찾지 못했으니 하드웨어의 크기를 줄이는 것이 바로 컴퓨터의 성능과 직결되는 것이다.

뉴스를 보면 삼성이 몇 나노 공정을 세계 최초로 성공했다느니, TSMC가 몇 나노 공정으로 반도체를 생산한다느니 이런 말들을 볼 수 있는데, 모두 이와 같은 이유로 최대한 작게 만들려고 하는 것이다.

 

디지털 아날로그 얘기하다가 왜 갑자기 이런 말이 나오냐면, 이렇게 하드웨어를 작게 만들면서도 안정적으로 작동하게 하려면 디지털 회로가 필수적이기 때문이다.

하드웨어가 작아지면 작아질수록 필요한 에너지가 줄어들어서 저전력, 저발열을 이끌어낼 수 있으나 칩셋 안의 회로간의 거리는 점점 더 가까워진다. 이것은 사람의 머리카락과는 비교할 수 없을 정도로 작은 단위이다. 이 때, 회로와 회로가 가까워지며 신호에 간섭을 주게 되는데 이런 crosstalk 효과를 완전히 방지할 방법은 없기 때문에, 아날로그 신호를 디지털 신호로 변경하여 판정 기준을 세우는 것이다.

 

 

 

예시로 들고왔을 뿐 나도 읽을 줄 모른다. 겁먹지 말자.

전달 함수를 쉽게 설명하자면, 우리가 탱탱볼을 바닥에 여러번 각도로 던지며 나오는 그 결과물을 함수로 표현한 것이다.

어떻게 던졌을 때 어떤 각도로 날아갔는가? 어떻게 던졌을 때 우리가 원하는 목표로 날아갔는가?

 

마찬가지로 카메라 센서, 이어폰, 스피커, 볼륨 노즐 등 다양한 곳에서 전달 함수가 사용되고 있다.

그리고 이 곡선을 보면 입력이 바뀌는 어느 지점에서 값이 전혀 다르게 편하는 것을 볼 수 있는데, 이 왜곡이 발생하는 지점을 문턱값(threshold)이라고 부르며 이것을 이용해 아날로그를 디지털화해서 표현할 수 있다.

(왜곡이 발생했다는 것은 해당 부분부터는 정상적인 값을 출력할 수 없는 의미이기 때문이다. 라디오 주파수를 돌리는 것을 상상해보자.)

 

 

 

컴퓨터에서 10진법이 아닌 2진법을 사용하는 이유도 이러한 전달 함수, 그리고 문턱값과 깊은 연관이 있다.

10진법으로 문턱값을 표현한다고 생각해보자. 벌써부터 끔찍하다.

2진법으로 문턱값을 표현하면 0과 1 두개면 끝이고, 하단부 영역을 차단(cutoff) 상단부 영역를 포화(sarturation)이라고 부른다.

(물론 꼭 전달 함수가 아니더라도, 비트를 표현하는 편이 적은 자리수로 훨씬 만은 수를 셀 수 있기 때문에 효율적이다.)

 

 

 

 

3. 비트를 처리하는 하드웨어

 

(1) 릴레이

 

덴마크의 과학자 한스 크리스티안 외르트레드가 발명한 것으로, 선을 둥글게 감아 코일로 만들고 전기를 흘려보내면 전자석이 된다.

참고로 이 릴레이라는 것은 아직도 아주 유용하게 사용되고 있으며 우리의 수도 밸브, 스프링 클러, 점화 플러그 등에서 찾아볼 수 있다.

 

릴레이는 스위치를 움직이기 위해 전자석을 사용하는 장치이며, 전력이 들어가지 않을 때 연결되지 않은 릴레이를 "평상시 닫힌 릴레이", 전력이 들어가지 않을 때 연결되어 있는 릴레이를 "평상시 열린 릴레이"라고 부른다.

 

릴레이를 사용하면 NOT함수를 구현한 인버터를 만들 수 있기 때문에 모든 불리언 연산을 표현할 수 있으며, 따라서 당시 전자 기계식 디지털 컴퓨터에 사용되었다.

그러나 릴레이는 연산 목적으로 사용하기에는 느리고, 전기를 많이 사용했으며 가장 치명적인 문제는 접점에 이물질이 들어가면 정상적으로 작동하지 않는다는 것이였다.

(단순 스위치로 사용하는 정도는 문제가 없지만, 옛날 전화 기지국은 이 릴레이가 건물을 가득 메우고 있었다!)

 

특히 그레이스 호퍼가 1947년 Havard Mark II에 발생한 문제를 해결하던 중 릴레이의 접점에 끼어서 죽어 있는 나방을 발견한 이후로 "Bug"라는 말이 컴퓨터에서 널리 사용되게 되었다.

 

 

(2) 진공관

 

영국의 물리학자 존 엠브로즈 플레밍이 발명하였으며, 물체를 가열하면 전자가 튀어나오는 열전자 방출 현상을 이용했다.

 

 

위의 캐소드를 충분히 가열하면 애노드로 이동하며 전자를 내보내고, 같은 극을 이용한 grid로 전자가 애노드에 도착하지 못하게 만들 수 있어 고전적인 릴레이의 역할을 대신할 수 있었다.

진공관은 릴레이보다 훨씬 빠르지만, 여전히 내구성과 발열 문제가 심했다.(물론 릴레이에 비하면 약과였다.)

 

 

 

(3) 트랜지스터

 

 

Transister는 전송 저항(Transfer Resistor)의 줄임말로써 드디어 우리가 익히 알고있는 반도체가 장치이며, 일반적으로 뉴스에서 자주 언급되는 반도체는 이 트랜지스터에 대한 이야기이다.

다들 알다시피 반도체는 도체와 부도체를 오갈 수 있는 성질을 가지고 있다.

 

 

 

트랜지스터는 기본적으로 스위칭과 증폭 작용을 수행한다.

 

https://www.youtube.com/watch?v=1WC9h1pWApY 

 

 

현대 컴퓨터에 가장 많이 사용되고 있는 트랜지스터는 MOSFET(Metal Oxide Semiconductor Field-Effect Transister, 일명 '모스펫')으로써 모스펫은 소형화 측면에서 유리하고 생산비도 저렴하다.

이 모스펫으로 집적회로를 만들게 되었다.

 

 

https://www.youtube.com/watch?v=tWwv4Cjz_38 

 

참고로 내가 링크로 대체하고 있으면 글로 작성하기 너무 분량이 많거나 잘 모른다는 뜻인데, 이건 후자다. ^^~~

그냥 들으면 재미있지만 유관 지식이 없어서 온전히 이해하기는 어려운 것 같다.

 

 

 

 

(4) 집적회로

 

 

트랜지스터는 굉장히 빠르고 획기적인 발명품이였으나, 크키가 비교적 크고 만드는데 필요한 비용이 많이 들었다.

그러나 MOSFET의 발명 이후 트랜지스터 칩은 계속해서 소형화되어, 오늘날의 컴퓨터에서는 이 하나의 회로 안에 얼마나 더 많은 트랜지스터를 작게 만들 수 있는지(집적도)에 대해 무한 경쟁이 이어져오고 있다.

참고로 1971년 초기 PC 한 대에 사용된 트랜지스터의 수는 약 2300개였으나, 2017년 10nm 공정을 적용한 스냅드래곤 835 프로세서에 집적된 트랜지스터 수는 약 30억개다.

 

 

 

 

 

4. 논리 게이트

 

(1) 논리 게이트

 

논리 게이트(logic gate)는 위에서 설명한 집적회로에 들어가있는 회로로써, 각 집적 회로를 연결해 복잡한 회로를 구성하게 해주는 역할을 수행한다.

 

삼각형 꼭지에 동그라미가 있다면 Buffer라는 ㄷ스으로 입력을 출력으로 전달하기만 한다는 의미로 다른 논리게이트와 별도로 사용하는 것을 의미한다.

논리게이트 중 AND와 OR는 구현하기 위한 비용도 많이 들고 속도도 느리다는 단점이 있는데, 우리가 지난 시간에 배운 드모르간의 법칙을 생각해보자. NOT을 활용하면 OR과 AND가 서로를 대신할 수 있다.

이 점을 활용해 NAND게이트와 NOR게이트를 많이 사용한다. 참고로 NAND와 NOR을 연결하면 OR이나 AND를 표현할 수 있기 때문에 AND와 OR 게이트를 사용하지 않아도 전혀 문제가 없다.

 

이 때, 논리게이트에서 입력의 변화가 출력에 영향을 미칠 때까지 걸리는 시간을 "전파 지연"이라고 부른다.

 

 

(2) 잡음 제어

 

위에서 잡음 문제 때문에 디지털 신호를 사용하는 것이 중요하다고 했는데, 이를 해결하기 위해 차동신호를 사용할 수 있다.

 

차동 신호 방식에서는 애초에 2개의 신호를 동시에 보내는데, 기준값을 그 둘의 차이로 둔다.

예를 들어 내가 보내고 싶은 출력은 5V인데, 10V와 5V를 보내는 것이다. 그리고 전송 도중 잡음으로 인해 10+2V, 5+2V로 각각 12V, 7V가 되었다.

하지만 받는 쪽에서는 어차피 12-7 = 5V로 출력하기 때문에 잡음이 생겨도 아무 상관이 없다.

 

 

우리가 인터넷 케이블 등에서 쉽게 볼 수 있는 여러가닥으로 꼬여있는 선인 "연선"도 이 원리를 이용한 것으로 그 유명한 그레이엄 벨(Alexander Graham Bell)이 최초로 발명했다.

(종류에 따라 따로 차폐막이 있는 경우도 있으나 일반적인 이더넷 케이블은에는 사용되지 않는다.)

 

 

 

 

(3) 논리게이트에 따른 집적 회로의 구분

 

집적된 게이트의 수에 따라 명칭이 달라지는데, 기준은 다음과 같다.

- 소규모 집적회로 (Small-Scale, SSI) : 1~10개 정도의 게이트, 인버터, 1~2개의 플리플롭 등

- 중규모 집적회로 (Medium-scale, MSI) : 가산기,카운터,멀테플렉서 등, 10~100개 정도의 게이트 포함

- 대규모 집적회로 (Large-scale, LSI) : 마이크로프로세서 등, 100~수천개 이상의 소자 포함

- 초대규모 집적회로 (Very-Large-scale, VLSI) : 만~백만개 정도의 소자

- 극대규모 집적회로 (Ultra-scale, ULSI) : 백만개 이상의 소자를 포함

 

 

 

 

위는 가장 기본적인 형태의 가산기로써, 복잡해 보일 수 있지만 그냥 2진 계산법을 출력해주는 회로라고 생각하면 간단하다.

이외에도 멀티비트 가산기, 리플 캐리 가산기, 차리올림 예측 가산기, 자리올림 저장 가산기 등 다양한 가산기가 있으나 모두 위의 전 가산기를 여러개로 엮어서 구현하는 것이다.

물론 그 친구들은 좀 어렵다..

 

 

멀티플렉서는 여러 신호 중 하나를 선택하여 출력하는 장치로, 대표적으로 오븐이나 전자레인지의 다이얼 노브에서도 사용된다. 빙글빙글 돌리는 그 단순해보이는 노브도 아날로그가 아니라 디지털 신호를 이용한 것이였다니 놀라운 일이다.