Как сложить два числа с помощью транзисторов
Как это устроено: транзисторы
Как сложить два числа с помощью транзисторов

Что мы уже зна­ем о тран­зи­сто­рах:

  1. Это устрой­ство, похо­жее на кран, толь­ко для элек­три­че­ства, и он либо про­пус­ка­ет сквозь себя ток, либо не про­пус­ка­ет.
  2. Если такие «кра­ны» пра­виль­но соеди­нить, то мож­но создать иллю­зию полез­ной для чело­ве­ка рабо­ты — напри­мер, сум­ми­ро­ва­ния.
  3. На тран­зи­сто­рах осно­ва­ны все совре­мен­ные ком­пью­тер­ные вычис­ле­ния. Совре­мен­ные тран­зи­сто­ры очень малень­кие — в бук­валь­ном смыс­ле мик­ро­ско­пи­че­ские. Они соеди­не­ны слож­ным обра­зом внут­ри всех наших про­цес­со­ров, кон­трол­ле­ров и даже памя­ти.
  4. Тран­зи­сто­ры сами по себе ниче­го не пони­ма­ют. Они про­сто пере­ме­ши­ва­ют элек­три­че­ство. Но если их пра­виль­но соеди­нить и их будет мно­го, от это­го пере­ме­ши­ва­ния полу­чит­ся зна­чи­тель­ная поль­за, от авто­ма­ти­че­ских и очень быст­рых мате­ма­ти­че­ских опе­ра­ций до совре­мен­ных ком­пью­те­ров.

В этой ста­тье раз­бе­рём, как же имен­но соеди­не­ны тран­зи­сто­ры, что­бы уметь так хоро­шо счи­тать. Для это­го нуж­но сна­ча­ла понять тран­зи­стор­ную логи­ку, после чего ста­нет оче­вид­но, как устро­е­на тран­зи­стор­ная мате­ма­ти­ка.

Нам потре­бу­ет­ся вспом­нить эту кар­тин­ку, кото­рая обо­зна­ча­ет прин­цип дей­ствия тран­зи­сто­ра:

Тут ток течёт сле­ва напра­во. На тран­зи­стор пода­ёт­ся управ­ля­ю­щий ток, кото­рый этот тран­зи­стор «откры­ва­ет», и ток течёт. Если управ­ля­ю­щий ток выклю­чить, то тран­зи­стор «закро­ет­ся», дви­же­ние тока оста­но­вит­ся.

Транзисторная логика

У тран­зи­сто­ров есть три прин­ци­пи­аль­ных спо­со­ба соеди­не­ния, кото­рые соот­вет­ству­ют трём базо­вым логи­че­ским опе­ра­ци­ям. Если пони­мать эти спо­со­бы и логи­ку, вы пой­мё­те архи­тек­ту­ру все­го ком­пью­тер­но­го мира. Запо­ми­нать и учить её не надо, доста­точ­но про­сто уви­деть.

Основ­ных логи­че­ских опе­ра­ций все­го три: И, ИЛИ, НЕ. Все осталь­ные полу­ча­ют­ся из их ком­би­на­ций, поэто­му нам доста­точ­но понять, как рабо­та­ют эти. Мож­но пред­ста­вить, что мы через тран­зи­сто­ры хотим вклю­чить лам­поч­ку в ком­на­те и у нас есть выклю­ча­тель на стене.

Операция «НЕ»

Самая про­стая опе­ра­ция: она меня­ет зна­че­ние на про­ти­во­по­лож­ное. Так как в ком­пью­те­рах и тран­зи­сто­рах на базо­вом уровне суще­ству­ют толь­ко поня­тия «есть ток» и «нет тока», то тут будет оче­вид­но, что про­ти­во­по­лож­но чему:

НЕ (есть ток) = нет тока

НЕ (нет тока) = есть ток

Эту же запись мож­но пред­ста­вить так:

НЕ (1) = 0

НЕ (0) = 1

В тер­ми­нах нашей ком­на­ты с лам­поч­кой это зву­чит так: «Если выклю­ча­тель выклю­чен, то лам­поч­ка долж­на гореть». Схе­ма под­клю­че­ния такая:

Инже­не­ры дого­во­ри­лись обо­зна­чать такую схе­му вот такой фигу­рой. Она озна­ча­ет «Логи­че­ская опе­ра­ция НЕ»:

Операция «И»

Здесь уже участ­ву­ют два пара­мет­ра, при­чём резуль­тат равен 1 толь­ко тогда, когда оба пара­мет­ра — 1.

0 И 0 = 0

1 И 0 = 0

0 И 1 = 0

1 И 1 = 1

Толь­ко в послед­нем слу­чае у нас полу­чи­лась еди­ни­ца, пото­му что оба пара­мет­ра — еди­ни­цы. Как толь­ко хотя бы один из пара­мет­ров — ноль, то всё выра­же­ние ста­но­вит­ся рав­но 0.

Это то же самое, как если бы у нас в ком­на­те было два выклю­ча­те­ля, а лам­поч­ка заго­ра­лась бы толь­ко тогда, когда вклю­че­ны оба.

На схе­мах такой логи­че­ский эле­мент обо­зна­ча­ет­ся так, два вхо­да и один выход:

Операция «ИЛИ»

Тоже рабо­та­ет с дву­мя пара­мет­ра­ми, но по дру­гим пра­ви­лам: если хотя бы одна еди­ни­ца есть, резуль­тат тоже будет еди­ни­цей.

0 ИЛИ 0 = 0

1 ИЛИ 0 = 1

0 ИЛИ 1 = 1

1 ИЛИ 1 = 1

Эта опе­ра­ция смот­рит, есть ли хоть одна еди­ни­ца, одна или вто­рая, или вооб­ще обе, и если нахо­дит её — сра­зу тоже ста­но­вит­ся еди­ни­цей.

В тер­ми­нах ком­на­ты с лам­поч­кой: что­бы лам­поч­ка заго­ре­лась, дол­жен быть вклю­чён хотя бы один выклю­ча­тель.

На схе­мах такой логи­че­ский эле­мент обо­зна­ча­ет­ся так:

Вся логи­ка и вычис­ли­тель­ная мощь всех про­цес­со­ров мира постро­е­на на этих трёх логи­че­ских куби­ках. Исклю­че­ние — кван­то­вые про­цес­со­ры, но они устро­е­ны внут­ри совсем по-другому.

Что дальше

Ком­би­ни­руя эти три логи­че­ские схе­мы (там есть ещё чет­вёр­тая, она дела­ет­ся из трёх основ­ных), мы смо­жем собрать такой кас­кад тран­зи­сто­ров, кото­рый помо­жет нам скла­ды­вать чис­ла. Забе­гая немно­го впе­рёд, вот кас­кад, кото­рый спо­со­бен сло­жить два чис­ла, если эти чис­ла — еди­ни­цы или ноли:

Этот кас­кад может сло­жить чис­ло раз­ме­ром 1 бит (еди­ни­ца или ноль). Его воз­мож­ные резуль­та­ты:

00 — ноль

01 — еди­ни­ца

10 — двой­ка в дво­ич­ном счис­ле­нии

Если такой кас­кад «схлоп­нуть» до одной коро­боч­ки (и немно­го допи­лить), а потом соеди­нить меж­ду собой несколь­ко коро­бо­чек, мож­но скла­ды­вать более слож­ные чис­ла. Напри­мер, такой кас­кад сло­жит два чис­ла до 4 бит, от 0 до 15:

Что мы узна­ли на этом эта­пе.

  1. Тран­зи­сто­ры мож­но соеди­нять по-разному: по цепоч­ке, парал­лель­но, как-то ещё хит­ро.
  2. В зави­си­мо­сти от схе­мы соеди­не­ния эта кон­струк­ция из тран­зи­сто­ров будет давать раз­ные резуль­та­ты. Напри­мер, лам­поч­ка будет гореть при выклю­чен­ном выклю­ча­те­ле. Или будет гореть, когда вклю­чён хотя бы один. Или когда вклю­че­ны оба.
  3. Эти схе­мы соеди­не­ний помо­га­ют вос­про­из­ве­сти про­стые логи­че­ские опе­ра­ции: НЕ, И, ИЛИ.
  4. Из этих логи­че­ских опе­ра­ций мож­но собрать про­стей­ший сум­ма­тор еди­ни­цы и ноля.
  5. Из про­стей­ше­го сум­ма­то­ра мож­но кас­ка­дом собрать более слож­ный, напри­мер, для чисел от 0 до 15.
  6. А даль­ше про­сто насла­и­ва­ешь эти сум­ма­то­ры друг на дру­га, соеди­ня­ешь раз­ны­ми хит­ры­ми обра­за­ми, и у тебя полу­ча­ет­ся всё более и более слож­ная вычис­ли­тель­ная маши­на.