Найти в Дзене

Как устроен компьютер? Часть 1 (Что такое бит)

Оглавление

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

-2

Но как быть, если соискателю больше всего интересно то, о чем как раз никто рассказывать не хочет? Например, как устроены процессор или память физически?

Да, есть много роликов, где вам расскажут, что такое транзистор, как из транзисторов составляются логические элементы (И, ИЛИ, НЕ и т.д.), далее говорится, что из элементов складывается АЛУ, регистры памяти, счетчики и вот из этого всего и собран процессор. СТОП! А никому разве не интересно, как именно устроены эти самые регистры? А как именно АЛУ понимает, когда умножать, а когда делить или вычитать? Почему для каждого процессора инструкции выглядят по-разному? Как физически работает прерывание? Как так получается, что цикл процессора может занимать несколько тактов, а одна операция - несколько циклов? Почему на плате может быть несколько тактовых сигналов и отчего не ограничиться лишь одним? И я сейчас не об абстрактных объяснениях, которые мы чаще всего слышим в псевдо-обучающих роликах или читаем в таких же статьях в интернете. Почему никто не возьмет за пример существующий простенький процессор и не объяснит досконально его устройство и принципы работы?

Ведь многие радиолюбители сталкиваются, порой, с какими-то необъяснимыми проблемами при работе с цифровой техникой именно потому, что понятия не имеют, как именно работает процессор и как он взаимодействует с другими устройствами.

Да в конце концов, вдруг какой-то "Самоделкин" захочет спроектировать свой собственный процессор и на его основе простенький компьютер? А исчерпывающую информацию об устройстве даже простого процессора найти крайне трудно.

Вот мне недавно тоже стало интересно: как устроен простой процессор физически? Но поисковики ничего толкового не находят. Читать даташиты на всякие 6502 и Z80 - тоже бесполезно, так как внутренней схемы так конечно же нет. Так в одном ролике на всем известном видео-хостинге, упомянули о замечательной книге Дж. Кларка Скотта "Но откуда он знает?". В этой книге как раз и описывается устройство простого процессора и ОЗУ, а так же принцип их взаимодействия и все это на уровне логических вентилей! Сначала я обрадовался, ведь книга, судя по всему не новая, поэтому должна быть переведена на русский язык! Но, к сожалению, перевода нет. И даже в оригинале купить эту книгу не так то просто.

Поэтому я решил поделиться с остальными соискателями информацией из этой книги. Переводом это едва ли можно назвать. Скорее это "изложение" по книге "But how do it knows" Дж. Кларка Скотта, так как некоторые главы я вообще выбросил, в некоторых использовал другие примеры, где-то сократил текст, перерисовал почти все иллюстрации и т.д. Но последовательность и вся важная информация сохранены. В общем, далее я частями буду публиковать изложение по этой книге.

*Just a little bit – (англ.) Совсем чуть-чуть. Дословно – «всего лишь маленький кусочек» или «всего лишь маленький бит». Название главы – игра слов.
*Just a little bit – (англ.) Совсем чуть-чуть. Дословно – «всего лишь маленький кусочек» или «всего лишь маленький бит». Название главы – игра слов.

Что такое компьютер? Он воспроизводит картинки, анимацию, музыку, тексты, письма, играет в игры, поддерживает связь с любой точкой мира и многое другое. Но разве есть какие-то картинки внутри самого компьютера? Даже вооружившись микроскопом, найдёте ли что-то из перечисленного внутри компьютера? Найдете ли там внутри буквы или цифры? Ответ: нет. Внутри нет ни картинок, ни букв, ни цифр. Лишь маленькие частички информации и массивы из них. И имя им «бит».

Если вы подбросите монетку, то выпадет либо орёл, либо решка. Так же и выключатель на стене комнаты может быть либо включен, либо выключен. Дверной замок может быть открыт или закрыт. Что общего у всех этих явлений? У них есть два устойчивых состояния и единовременно может быть только одно из них. Так же и с битом. Бит – это минимальная доля информации, которая может принимать значение «Да» или «Нет», т.е. «Вкл» или «Выкл». Но самостоятельно бит не может переключиться. Только под влиянием извне.

Что за..?

Представьте, что вы вошли в большую комнату с множеством окон. Комната залита солнечным светом. И тут вы замечаете, что люстра на потолке работает. «Нехорошо» - думаете вы. Надо бы выключить свет. Зачем жечь электричество зря? Осмотревшись, вы обнаруживаете два выключателя на стене. Ага! Один из них точно подключен к люстре. Вы подходите к выключателям, но обнаруживаете, что оба они уже выключены. Ну ОК, наверное, электрик перепутал и установил выключатель вверх ногами. Вы включаете один выключатель и ничего не меняется. «Значит – другой» - думаете вы и возвращаете его в обратное положение. Включаете второй и… снова – ничего! «Да что за ерунда?» - думаете вы и принимаетесь щелкать выключатели по очереди вкл-выкл, выкл-вкл и снова, и снова… И в какой-то момент вы сбиваетесь и щелкаете оба выключателя в положение «включено». И только теперь люстра гаснет.

– Что за чёрт?!

Вы выключаете один из выключателей и люстра вновь светит! Вернули – погасла. Выключаете второй – снова светит! Вернули – погасла. Выключаете оба – светит. И тут вы понимаете, что это какая-то неправильная комната…

Данная ситуация приведена как пример для понятия одного из простейших устройств в компьютере. Существует некое устройство, у которого есть три линии связи. Причём на две из этих линий называются «Входами», так как электричество может в них приходить. А третья линия называется «Выход», так как электричество может выходить из неё и передаваться куда-то далее в компьютере. Это устройство, которое что-то делает с битами. Работает это так:

У вас есть два бита и вы отправляете их на входы устройства. Оно «смотрит» на эти два бита и «решает» включить бит на выходе или выключить. Способ решения очень прост – если оба бита на входах включены, то бит на выходе нужно выключить, во всех остальных случаях, бит на выходе включен. Это устройство работает именно так, как те самые выключатели в «странной комнате».

Вы можете спросить: «Раз это всё таки устройство, то ему нужен какой-то ресурс чтобы работать?» И да, это устройство, как и любой утюг или чайник так же нуждается в своём собственном электрическом питании. И хотя на схемах силовые линии питания обычно не рисуют, просто знайте, что всем этим устройствам тоже нужно питание. Что находится внутри этого устройства, мы разбирать не будем. Те, кто связаны с электроникой, при желании, могут погуглить и через полминуты разобраться, почему именно так работает это устройство. Ну а тем, кто с электроникой не связан, вникать настолько глубоко не обязательно. Именно из таких устройств можно собрать полноценный компьютер. На картинке в виде D-образной фигуры изображено это самое устройство. Два провода слева ‘a’и ‘b’ – это «входы», а провод справа ‘с’ – «выход». Само устройство называется «NAND gate» (англ. «Ворота НЕИ»). В русском языке такой тип устройства называется «Исключающее И». А конкретно такое устройство с двумя входами и одним выходом сокращённо называют «И-НЕ».

-4

Все три провода – это биты. На входы биты приходят из какой-то другой части компьютера, а на выходе всегда есть бит, состояние которого зависит от состояний приходящих на входы битов. Часто полезно смотреть специальную таблицу, в которой отражены все возможные состояния битов на входах и выходах таких устройств. Называется она «Таблица истинности».

-5

В каждой строке показаны возможные варианты битов на входе и результат выходного бита. Таким образом, мы можем наблюдать, что для отключения бита ‘c’на выходе, нам необходимо включить оба бита ‘a’ и ‘b’ на входах.

Простые Вариации

Как мы уже знаем, даже только из таких устройств можно построить компьютер. Но таких устройств нужно огромное количество и нужно будет соединять их все каким-то немыслимым образом. Давайте же рассмотрим несколько вариантов таких соединений.

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

-6
-7

Теперь, когда входы ‘a’ и ‘b’ одинаковые, по факту мы имеем только один вход. Называется такое устройство «Инвертор» или просто «НЕ» (англ. «NOTgate»), потому что оно просто инвертирует входящий бит и отправляет полученное значение на выход. Наше устройство стало ещё проще. Поэтому, давайте и рисовать его ещё проще.

-8
-9

Для получения следующей вариации, давайте последовательно соединим два уже имеющихся устройства и получим новый тип устройства:

-10

Теперь ‘a’, ‘b’ и ‘x’ работают как И-НЕ, а ‘x’ и‘c’ работают как инвертор.

-11

Такая комбинация встречается в компьютере настолько часто, что неё придумали отдельное название «И» (англ. «AND gate»)и изображение:

-12
-13

Все эти устройства подчиняются неким условиям, которые называют логикой работы. Поэтому все такие устройства ещё называют одним общим названием «Логический элемент» или «Логический вентиль».

Наверное, вы заметили, при начертании на выходе некоторых устройств есть кружок. И эти устройства всегда переворачивают бит на выходе. Этот кружок именно для обозначения инвертирования выхода и придуман. Почему же тогда мы не начали изучение устройств с И? Тут всё опять просто. На самом деле И-НЕ – самый простой в изготовлении логический элемент и именно из него и строятся все остальные элементы именно так, как мы только что видели.

Думаю, что теперь, когда вы поняли, как работают эти простые устройства, вам не составит труда понять, как работает компьютер в целом.

Далее Часть 2.