2장. 전자 회로의 조합 논리 - 컴퓨터는 어떤 논리로 비트를 다루는가
이런 역사 이야기는 참 재밌다. 그냥 읽으면 재밌기 때문이다.
하지만 계산하면 골치아프다. 후후.. 이 장을 읽으면서도 전공 수업 생각이 많이 났는데, 사실 그때는 이런 과정을 모른 채 이론을 배우고 계산하기 급급했다. 그래서 각각의 이론들이 다 따로 놀았는데 (이거 혹시 나만 수업을 제대로 안 들어서 그런건 아니겠지?ㅎㅎ) 이렇게 순차적으로 읽어보니까 각각의 이론들이 이어지고 이해가 되는 느낌이다!
👉🏻 아날로그 세상에서 컴퓨터가 디지털인 이유
아이들을 학교에 등하교시킨다고 할 때, 시간을 단축하려면
1. 더 빠르게 운전하거나
2. 학교 근처로 이사가는
방법이 있다.
컴퓨터는 전자를 움직이는데, 전자의 이동 속도를 물리적으로 줄일 수 없기에 (아직은)
전자가 이동할 컴퓨터의 부품을 가능한 한 가깝게 위치시키면 시간을 단축할 수 있다.
이때 시간을 단축한다는 것은 성능이 높아진다는 것을 말한다.
오늘날 컴퓨터 클록 속도(clock speed)는 4GHz이며, 1초에 40억 가지 계산을 처리할 수 있다.
40억분의 1초동안 전자가 이동할 수 있는 거리는 75밀리미터이다.
결국 하드웨어를 작게 만들면
1. 이동해야하는 거리가 줄어들고 => 저전력소모
2. 필요한 에너지 양도 줄어든다. => 열발생감소
하지만, 하드웨어를 아주 작게 만들다 보니 또 다른 문제들이 생겼다.
물체가 너무 작아져서 서로 간섭하기가 아주 쉬워진 것이다.
이것을 누화 효과라고 하는데, 방지할 적절한 방법이 없기 때문에
더 높은 판정 기준을 통해 잡음 내성을 갖는 디지털 회로를 사용한다.
디지털 회로가 판정 기준, 잡음 내성을 뛰어넘기 위해서는 추가로 에너지가 필요하기 때문에
연속적인 장치를 사용할 때는 얻을 수 없는 일정 수준의 잡음 내성을 얻을 수 있다.
이것이 디지털 컴퓨터를 만드는 이유이다.
👉🏻 비트를 처리하기 위한 하드웨어 발전사
- 릴레이: 스위치를 움직이기 위해 전자석을 사용하는 장치
릴레이는 느리고 전기를 많이 소모하며, 스위치 접점에 먼지나 벌레가 있으면 제대로 작동하지 않는다!
그래서 '버그'라는 단어가 실제로 릴레이에 벌레가 껴서 생긴 단어이지!
또, 코일의 전원을 갑자기 끄면 순간적으로 초고압이 발생하고 그 사이에서 전기가 통하고, 접점이 마모된다.
이런 단점 때문에 기계적인 부품이 들어있지 않은 다른 물건들을 찾기 시작했다.
- 진공관: 물체를 충분히 가열하면 전자가 튀어나오는 열전자 방출을 기반으로 전자를 이동시킨다.
전구처럼 아주 뜨겁고 깨지기가 쉬운 것이 단점이다. 전구 필라멘트가 타듯이 히터도 타버릴 수 있다.
- 트랜지스터: 전송 저항 transfer resistor 이라는 말을 줄인 트랜지스터는 반도체를 사용한다.
트랜지스터를 아주 작게 만들면 도체가 가늘고 얇아져서 저항이 늘어나고 열이 발생한다.
그래서 실험시간에 트랜지스터가 그렇게 뻑하면 망가졌었나 ..^^
어쨌든 트랜지스터는 열을 제거하는 일이 중요하고 대량 생산에 적합하다.
BJT, FET 방식 중에서도 FET의 일종인 MOSFET이 현대 컴퓨터 칩에서 가장 널리 쓰이고 있다.
- 집적 회로: 복잡한 시스템을 트랜지스터 하나를 만드는 정도의 비용으로 만들 수 있다.
트랜지스터를 사용하면 AND 함수 같은 간단한 회로를 만들 때조차도 부품이 너무 많이 필요하기 때문에 이 친구를 사용하게 된다.
설계 시간에... 빵판에 꽂다가 지네 다리 꾸겨지고 ^^ 또 납땜했던 기억도 새록새록
👉🏻 논리 게이트와 그 특성
위의 IC칩에 내장되어 있는, 논리 연산을 수행하기 위한 회로를 논리 게이트라고 한다.
논리 신호는 0 - 1로 변경될 때 순간적으로 변경된다고 생각하기 쉽다. 하지만 실제 현실에서는 잡음이 생기고 0 - 1 까지 천천히 변하는 신호가 많다.
때문에 잡음으로 인해 출력 신호에 글리치(glitch, 작은 오류)가 생긴다. 이를 방지하기 위해 이력 현상을 사용한다.
슈미트 트리거라는 게이트가 이력 현상을 사용한다.
하지만 잡음이 많아서 이력을 도입해도(슈미트 트리거를 사용해도) 충분하지 못한 경우에는, 차동 신호 방식을 사용한다.
입력 신호를 반전관계 출력들로 변환하는 '드라이버'와, 반전관계인 두 입력을 받아서 단일 신호를 만들어주는 '리시버'.
이 신호들이 서로 반전관계가 되고, 두 신호의 차이를 측정해서 노이즈가 발생하면 감산하여 없어지게 만든다.
위 사진처럼 한 쌍의 선을 꼬아서 전기적으로 잡음 내성을 만들어내도록 하는 것을 연선 케이블링이라고 하는데, 스코틀랜드 발명가인 알렉산더 그레이엄 벨이 발명했다고 한다.
현재 USB, SATA, Ethernet 케이블 등 어디서나 연선을 볼 수 있다!
그런데 이 벨님의 업적이 대단하다. 전화 특허, 벨 연구소, AT&T 회사! 그리고 이 AT&T에서 나온 많은 IT 기술들. 음성 합성기, 트랜지스터, 해밍 코드, 현대식 태양전지 셀, MOSFET, C언어, C++ ?!!!! 프림과 크루스칼의 그리디 그래프 알고리즘도, 게다가 MULTICS와 UNIX, AT&T 뭐야 도대체 ....
마지막으로 전파 지연이란, 게이트에서 입력의 변화가 출력에 영향을 미칠 때까지 걸리는 시간을 말한다. 이는 정확한 값이라기보다는 통계적인 측정값이다. 최대 지연과 최소 지연이 있는데, 그 둘 사이의 어떤 값이 된다.
회로가 제대로 작동하기를 원한다면 최악의 경우에 해당하는 지연 시간을 가정하고 설계해야 한다.
이는 마치 알고리즘 문제를 풀 때 시간복잡도를 입력이 최악의 경우일 때로 가정하고 푸는 것과 같군!
👉🏻 논리 게이트의 출력
이미 설계되어 있는 몇 가지 출력 유형을 설명한다.
- 토템폴 출력(totem pole)
L -> L, H -> H.
입력을 그대로 출력하는 방식
출력을 연결하면 GND, VCC가 만나기 때문에 연결할 수 없다.
- 오픈 컬렉터(open-collector, BJT), 오픈 드레인(open-drain, MOS) 출력
출력 중 L가 하나라도 있으면 -> L (와이어드 AND),
H -> Z (임피던스, 외부에서 전압을 결정)
출력을 연결해서 사용할 수 있지만 액티브 풀업(토템폴) 보다 느리다.
- 트라이스테이트(tri-state)
위 두 가지의 단점을 보완하기 위해 세 가지 상태를 사용한다. 출력을 켜고 끄기 위한 활성화 입력이 존재한다.
활성화 입력이 H이면, 토템폴과 같이 L -> L, H -> H 입력을 그대로 출력한다.
활성화 입력이 L이면, Z 임피던스 상태가 되어 외부전압에 따라 값이 결정된다.
이 출력은 많은 장치를 직접 연결할 수 있지만, 한번에 하나의 장치만 활성화해야 한다.
다음으로 논리 게이트 조합 회로...
가산기, 디코더, 디멀티플렉서, 셀렉터가 나오는데
논리 회로 시간에 많이 했었으니까 ........ 패스하겠다.
(전자회로는 잘 기억 안나서 복습한 것 히힛)
여기까지, 2장에서는 비트와 디지털 논리 부품을 조합해서 더 복잡한 장치들을 만들 수 있다는 걸 알려줬다.
3장에서는 이 출력 결과를 기억할 수 있게 해주는 순차 논리, 메모리에 대해서 알려준다고 한다.
왜 학부 때 이렇게 흥미롭게 알려주지 않았냐구요 ㅠ ㅠ 그럼 다음 주 3장도 기대!
'full of life > book' 카테고리의 다른 글
[한 권으로 읽는 컴퓨터 구조와 프로그래밍] 조너선 스타인하트 - 5 (0) | 2021.10.24 |
---|---|
[한 권으로 읽는 컴퓨터 구조와 프로그래밍] 조너선 스타인하트 - 4 (0) | 2021.08.20 |
[한 권으로 읽는 컴퓨터 구조와 프로그래밍] 조너선 스타인하트 - 3 (0) | 2021.08.12 |
[한 권으로 읽는 컴퓨터 구조와 프로그래밍] 조너선 스타인하트 - 1 (0) | 2021.07.25 |
[한 권으로 읽는 컴퓨터 구조와 프로그래밍] 조너선 스타인하트 - 0 (0) | 2021.07.22 |