0편 - 논리회로
전기전자나 컴퓨터 공학을 배우게 되면 전공 기초과목으로 전세계 공통으로 들어가 있는 디지털 논리회로.
오늘 다루는 내용은 이 논리회로가 왜 컴퓨터, 전자기기에서 중요한가를 다룰꺼야
1. 불 대수, 논리연산
19세기 중반에 불 대수(Boolean algebra)라고해서 이진연산, 논리연산이라고 불리는 수학체계가 개발 돼. AND, OR, XOR 등등의 연산자를 가지고 계산되지. 기존의 곱하기, 더하기, 같은 사칙연산 기반의 연산이랑은 좀 다른 대수 체계야.
<논리식 예제, 복잡해 보이지만 어차피 0아니면 1임>
이 논리연산은 그 당시 큰 파장을 일으켰고, 수학자들의 열띤 연구 결과, 이 논리연산 만을 가지고 실제 수학에서의 사칙연산까지 모두 흉내 낼 수 있게됨(물론 이진법으로 나오겠지만)
그러다가 19세기 말에 진공관이라는 게 개발됨. 이게 뭐냐면 평소에는 전기가 흐르지 않다가 일정 전압을 주면 진공관 안에 자유전자가 생기면서 전류를 흐르게 만들어 준다는 거야. 일종의 스위치라고 할 수 있지.
그러면 전류를 흐르거나, 흐르지 않는 상태, 두 가지로 나누어서 각각 0,1로 만든다면, 이 것을 이용하여 위의 논리연산을 실제 기계로 만들 수 있겠지???? 이게 초기 컴퓨터의 시초임
컴퓨터(computer)의 어원은 계산기잖아? 초기 컴퓨터는 이런 논리 회로를 통해서 복잡한 계산을 자동이며 훨씬 빠르게 푸는 기계에 불과했음. 그 때부터 컴퓨터라고 명명되었고, 지금까지 이어져오고 있지 ㅎㅎ
<최초의 컴퓨터 ABC(왼쪽)와 한 때 최초의 컴퓨터라고 불리우던 애니악(오른쪽)>
위의 ABC와 애니악 모두 진공관 기반의 연산장치임
2. 논리회로
무튼 이렇게 논리연산을 회로로 꾸릴 수 있게 되면서, 논리연산만을 위한 회로도 체계가 구축되는데 그 것이 바로 논리회로야
이 논리회로는 현대의 전자기기, 컴퓨터 등의 모든 디지털 기기들의 근간이야
가장 기초적인 연산자(gate라고 부름)는 밑에 그림에 있는 AND, OR, NOT(inverter) 세가지이고 이 것들을 이용해서 각종 연산기들을 짜는거지
<논리회로 삼대장 AND, OR, NOT>
간단하게 덧셈기(adder)를 설계하는 과정을 예로 들어 논리회로를 설명해줄께.
이진법 더하기 혹시 해본적 있어? 십진법 더하기 보다 훨씬 단순해
<10001 + 11101 계산>
이렇게 하는데, 우리가 보통 더하기 할 때랑 똑같이 계산하지? 단지 10이 2로 바뀌었을 뿐이야 ㅎㅎ
예를 들어 저기서 오른쪽에서 두번째 자릿수만 봐보자, A+B일때 A와 B는 0이고 이전 자릿수에서 올라온 1이 더해져서 1이 되었지?
덧셈에서는 저렇게 올라오는 숫자를 Carry하고 하거든.
그렇다면 한자릿수 이진법 더하기를 식으로 표현하하면 A+B+Carry가 돼, 세번째 자릿수를 예로 들자면 A(0)+B(1)+Carry(0) = 1 이 되는거지.
위에서 논리식 예제라고 써놓은 식이 이 adder에서 입력과 출력을 논리식으로 표현한 것이야.
이런 입력들의 경우의 수에 따른 출력들을 다 나열해보면 다음과 같은 표(논리연산에서는 진리표라고함)로 표현할 수 있어
<더하기 진리표>
실은 논리회로라는게 그냥 내가 원하는 조건(input)에서 원하는 결과(output)만 나오도록 짜면 장땡인 거거든,
그래서 보통 저렇게 표부터 만들고 식은 저 표를 토대로 만들어 ㅋㅋ
일단 저 식이 출력되면 논리회로로를 짜는 것은 쉬워,
<Full adder 논리연산식>
논리연산식에서 동그라미에 더하기가 겹쳐있는 기호는 XOR라고 부르고, 더하기기호는 OR, 곱하기(AB = A x B)는 AND야
이 식을 이용하여서 논리회로를 그리면
<Full adder 논리회로 도식도>
이렇게 그릴 수 있어 OR 게이트에 줄하나 더 그어져잇는게 XOR임.
시간 남으면 한번 제대로 나오나~하고 따라가 봐도 괜찮음 ㅎㅎ
지금까지 설명한 것이 한 bit에 대한 덧셈을 표현한 것이야. 위 그림에서 S는 더하기 결과이고,
Cout이라는 건 다음 자릿수로 올려주는 숫자를 뜻하지.
그렇다면 위 회로를 똑같이 두 개를 준비해서 첫번째 회로의 Cin에 두번째 회로의 Cout을 연결하면 어떻게 될까?
A1A2 + B1B2 이런 두 자리(bit)의 더하기를 할 수 있는 덧셈기가 만들어지는 거지.
밑에 그림은 위에 있는 한 자릿수 덧셈기(1-bit adder)를 연결시켜서 총 8 자릿수까지 연산 가능한 8-bit연산기야
8bit가 표현할 수 있는 최대 숫자가 255니깐 0~255까지의 결과를 같는 모든 자연수의 합은 연산가능하지
<논리회로로 그려낸 8bit 덧셈기>
현대 CPU안에는 저걸 32bit나 64bit로 계산할 수 있는 연산기가 들어있음
(여담) 디지털이라는 단어를 일상생활에서 많이 들어봤을텐데, 보통 아날로그의 반대되는 개념이야. 디지털은 0,1 이렇게 딱딱 끊어지는 신호을 통해서 연산하는 것이고, 아날로그는 0~1이렇게 이어지는 신호를 통해서 연산하는 방식을 말해
<아날로그 신호와 디지털 신호>
3. 반도체
그런데 이러다가 반도체라는 것을 논리회로에 접목하기 시작해. 반도체는 전기가 흐르기도 하고(도체), 안 흐르기도 해서(부도체) 반도체라고 불리는데, 이 전기가 통하고 안 통하는 시점을 우리가 조절할 수 있어. 딱 각이 나오지? 게다가 진공관보다 부피도 훨씬 작고 가격도 싼 편이라 빠르게 기존의 진공관에서 반도체 트랜지스터로 바뀌게 돼
반도체에 대한 자세한 내용은 다른 대학원생 개드리퍼가 좀 자세히 써놨더라구(https://www.dogdrip.net/173592229) 이 글을 한번 읽어 보는 걸 추천해, 나보다 훨씬 잘 쓴 것 같아....
아무튼 이렇게 기술 발전을 통해서 집적도가 매우 높은 MOSFET 같은 트랜지스터 형태가 개발되고, 위의 논리연산자들을 MOSFET의 조합(CMOS)으로 표현이 가능해 지면서 컴퓨터는 새로운 국면을 맞이하게 되지….
<MOSFET transistor들로 그린 NAND, NOR, NOT 연산자들>
지금까지 AND, OR, NOT으로만 설명하다 갑자기 앞에 not을 붙인 NAND, NOR를 그림을 보인 이유는
MOSFET transitor으로 설계하는 논리연산자들의 가장 기초 연산자들이 NAND, NOR, NOT이기 떄문에야 ㅎㅎ
<NAND gate를 실제로 만들기전에 그리는 물리 도식도>
그림을 보면 몇 층으로 쌓이게끔 만들어져 있고 각 색마다 물질 종류도 다르지
실제로도 실리콘 위에 저런 물질들을 쌓아서 만들어.
저기서 어디가 어떻게 트랜지스터냐고? 사실 난 거기까지는 몰라... 회로하는 사람들은 알꺼야 ㅎㅎ
<1-bit adder layout>
위에서 한번 다루었던 한 자릿수 덧셈기임. 생긴건 완전 딴 판이지? 단순히 논리 회로 도식도와는 다르게
공급전력(Vdd), 그라운드(gnd) 바이어스 등등도 필요하고 실제로 물질을 연결시켜서 만드려니 이렇게 완전 딴판일 수 밖에 없어 ㅎㅎ
이런거 다 그릴수 있도록 해주고, 이렇게 설계하면 소비 전력 어느 정도 예측되는지까지 뽑아주는 프로그램들이 있어
하지만 저 걸 설계하고 그리는 것은 다 설계하는 사람들이 해야하지 ㅎㅎ 삼성 메모리 사업부에 DRAM, FLASH 설계하는 사람들은
저런거 다 마스터한 사람들이지.... 대단한 분들이야....
위에 그려진 NAND gate를 모든 곳에서 다 쓰는 것은 아니고 저기에 각 물질들의 두께나 게이트의 면적 등의 수치들을 바뀌어서
면적에서 강점을 가지는 NAND gate, 속도에서 강점을 가지는 NAND gate등 여러가지 버전으로 만들 수 있어.
실제 CPU나 연산 chip을 설계하는 사람들은 자기가 만들 chip의 목적에 따라 각자 입맛에 맞는 연산자들을 사용해 ㅎㅎ
음... 이 쯤까지 설명했으면 반도체로 논리회로를 설계하는 것까지는 조금 이해 갔으리라 생각해.
마우스 매크로 써봤어? 내가 원하는 행동을 하는 마우스 패턴을 아예 매크로로 정해서, 그 행동을 클릭 한번으로 처리하는 거지.
반도체로 컴퓨터를 구성하는 과정도 똑같아.
1.가장 작은 요소는 전기가 통했다 안통했다하는 스위치(현재에는 반도체 트랜지스터)지만
2.이 반도체를 통해서 논리연산 gate들을 만들고
3.이 gate들을 이용해서 연산기들을 만들고
4.이 각종 연산기들을 이용해서 CPU, GPU, 메모리등의 장치들을 만들고
5.이 장치들을 다 합쳐서 컴퓨터를 만들고
6.이 컴퓨터들을 함쳐서 서버나 슈퍼 컴퓨터를 만들지....
여기까지 생각만 해봐도 되게 컴퓨터라는 장치가 엄청나게 많은 사람들의 연구와 노력의 산물이라는 생각이 들지않아?
난 가끔가다고 컴퓨터라는 장치가 참 대단하다는 생각이 들어...
보통 컴퓨터를 5세대에 걸쳐 발전했다고 말하는데 이 가장 작은 요소인 스위치를 어떤 것을 썼냐에 따라 나뉘어
1세대(진공관)->2세대(트랜지스터)->3세대(집적회로)->4세대(고밀도집적회로)->5세대(초고밀도집적회로) 임 ㅎㅎ
MOSFET은 3세대부터고 그때부터 면적이 줄고 밀도가 높아지면서 고밀도, 초고밀도로 가게되는거야
여기까지 일단 현재 전자기기의 근간이 되는 논리회로에 대한 설명과 간단한 역사를 살펴 봤어.
담엔 현대 컴퓨터 구조의 가장 중요한 장치인 연산장치(Processor)에 대해서 알아볼께
[세줄요약]
1. 이진수를 통해서 실제 사칙연산을 흉내내거나 다른 연산을 할 수 있는 논리연산이라는 개념이 생김
2. 스위치를 통해서 전류를 통하거나 안통하게 해서 이 상태를 0,1로 나누면 논리연산을 실제 기계로 구현할 수 있네? -> 컴퓨터 탄생
3. 스위치로 쓰는 장치가 점점 발전되면서 작아지고 더 복잡한 논리연산을 할 수 있게 됨.
그 결과 더 빠르고 복잡한 연산을 할 수 있는 컴퓨터가 개발되고 있고 지금도 현재진행형임
0개의 댓글