Ваш смартфон выполняет огромное количество вычислений за несколько секунд, когда вы листаете ленту, смотрите видео или просто разблокируете экран. Но самое удивительное находится глубоко внутри процессора устройства.
Транзисторы являются сердцем любого современного процессора; их не сотни или тысячи, а миллиарды. Они похожи на микроскопические электронные выключатели, их размеры настолько малы, что десятки миллионов таких можно разместить на рисовом зернышке.
В цифровом мире каждый такой «выключатель» может находиться только в одном из двух состояний: «включено» или «выключено». Это похоже на простой свет в комнате: он горит или нет. Однако эта двоичная логика, в которой «включено» является единицей, а «выключено» — нолем, лежит в основе всего цифрового мира.
Объединяя эти миллиарды транзисторов в сложные схемы, инженеры заставляют их работать как крошечные логические вентили. Они могут выполнять простые задачи, такие как сложение, сравнение и запоминание битов информации. Это похоже на миллионы калькуляторов, работающих вместе.
Транзисторы переключаются миллиарды раз в секyнду, и каждое касание экрана — это целый каскад этих переключений, которые преобразуются в изображение, звук или реакцию приложения. По сути, вся сложность цифрового мира состоит в простом умении вовремя щелкнуть этими микроскопическими переключателями.
- По какой логике фундаментально работает компьютер
- Что такое транзистор, простейший выключатель в процессоре
- Как транзисторы превращаются в логические мини-блоки
- Как из простейших мини-блоков делают самостоятельные калькуляторы
- Как самостоятельные калькуляторы заставили работать друг с другом и исполнять код
- Как транзисторы научили считать обычные числа, а не двоичный код
По какой логике фундаментально работает компьютер

Подробнее будем смотреть на самый верхний «слой» этого пирога – на железную составляющую программы
Начнем с того, чтобы понять, как CPU работает на уровне архитектуры.
Мы можем использовать простой пример.
Если бы компьютер был поваром и попросил сделать торт, он бы сломал все этапы приготовления и создания каждого компонента.
Логика была бы такая:
1. Соединить элементарные частицы в нужные молекулы 2. Из молекул создать металлы, минералы и органику 3. Из молекул создать печь, инструменты и ингредиенты 4. Замесить тесто, испечь коржи, сделать крем и собрать торт.
Когда задача поднимается на новый уровень абстракции, каждый инструмент, используемый на каждом этапе, продолжает состоять из элементов, используемых на предыдущем этапе.

Схема ядра CPU от Intel. Вычисления в процессоре происходят в маленьких блоках, самые известные это ALU, арифметико-логические блоки
Компьютер состоит из множества маленьких вычислительных блоков, которые затем объединяются в более крупные блоки и так далее, пока в конечном итоге все это не станет похожим на программу с интерфейсом.
Когда компьютер работает, он использует не молекулы (пока), а нули и единицы.
Как и любая молекула, состоящая из элементарных частиц (протон, электрон, нейтрон), электроны, проходящие через транзисторы, создают нули и единицы.
Единица означает, что на транзистор подается ток, а ноль означает, что на него не подается ток.
Более сложные блоки создаются с помощью этой бинарной системы. Мы поговорим о том, как это происходит.
• Ранее
В вашем смартфоне нет только одного калькулятора, а миллиарды таких крошечных переключателей, которые невооружённым глазом не видны. Эти микроскопические переключатели являются транзисторами, или микропереключателями в процессоре, которые за доли секунды включаются и выключаются, обрабатывая различные команды, от открытия приложения до воспроизведения видео. С помощью комбинации этих миллиарды «кранов» процессор понимает сложные команды,
Что такое транзистор, простейший выключатель в процессоре
Можно нажать на изображение, чтобы увеличить. Полевые MOSFET-транзисторы CPU могут менять свое положение из-за зарядов плюса и минуса.
Транзистор представляет собой крошечный «блок» с тремя контактами. Они состоят из истока (вход), стока (выход) и затвора (управление).
Он должен либо блокировать ток (0), либо пропускать его (1).
В oбычном состоянии вход и выход не включены в цепь, а транзистор находится в состоянии 0.
Если на управляющий затвор приложить небольшое напряжение, он превращается в проводник, что позволяет электронам двигаться из истока в сток или из входа в выход. В результате транзистор переходит в состояние 1.
Вычисления начинаются, как только ток проходит через транзистор, поэтому процесс расчёта операций почти моментальный.
Поскольку сами транзисторы состоят из 20 атомов кремния, таких «переключателей» в современных процессорах миллиарды, а операций — триллионы в секунду.
Транзисторы бывают разных видов, принципов работы и составов.
Магия начинается, когда один транзистор соединяется с другим, создавая простейший вычислительный блок.
• Ранее
Как транзисторы превращаются в логические мини-блоки

Если соединить транзистор один за другим и закольцевать систему лампочкой на конце, для её включения нужно, чтобы оба транзистора «включились», то есть проводили ток
Допустим, мы можем использовать транзисторы, чтобы позволить лампочке включаться при определенных условиях.
Например, чтобы она загорала только тогда, когда оба переключателя включены, мы должны соединить их в правильном порядке.
Поскольку каждый транзистор может иметь по два значения (включен и выключен), если его заменить другим, теоретически мы можем получить четыре результата:
0+0=0
1+0=0
0+1=0
1+1=1
Эта простая цепочка создает самый фундаментальный вычислительный блок И (AND).
Он так называется, потому что первый и второй транзисторы должны иметь значение 1, то есть работать как проводники электричества, чтобы получить результат 1, то есть включить лампочку.
Посмотрим, как включить лампочку, если есть один переключатель включен — например, в отелях, где рубильник находится у кровати и на входе в номер.

Если соединить транзисторы параллельно друг другу и подвести к ним лампочку, она загорится, даже если только один «рубильник» будет проводить электричество
Чтобы это сделать, транзисторы нужно соединить параллельно друг другу и объединить в одну цепь. В результате остаются четыре возможных результата, но с другим результатом:
0+0=0
1+0=1
0+1=1
1+1=1
Базовый вычислительный блок ИЛИ (OR) образуется из этой цепочки.
Называется так, потому что хотя бы один из двух транзисторов должен иметь значение 1, то есть проводить ток.

Кроме того, есть третий базовый блок НЕ (NOT). Этот тип транзистора меняет свое состояние на противоположное, замыкая цепь до того, как транзистор будет подключен. В результате выключенный транзистор (0) не препятствует току иди к лампочке, а включенный транзистор (1) прекращает его подачу и выключает свет.
Таким образом, мы достигли первого уровня абстракции, где мы рассматриваем базовые вычислительные блоки, а не транзисторы.

На схемах эти блоки имеют своё обозначение, чтобы не рисовать все транзисторы каждый раз и проще понимать цепочку
Однако их недостаточно, чтобы охватить все переключательные варианты. А что, если нам нужно, чтобы 1+1 было равно 0?
В двоичной системе двойки нет, но если сложить 1+1, получится 2.
Следовательно, начинается новый десяток, который выглядит как один рядом с нулем, или просто десять. Такая закономерность называется целочисленным переполнением или выходом переполнения.
С другой стороны, это означает «ноль пишем, один в уме».
Таким образом, необходим блок, который может «держать в уме» единицу, как это делают примеры в столбике, а также может выдать 0 в случае 1+1.
Таким образом, наши мини-блоки нужно объединить в большие блоки.
• Ранее
Как из простейших мини-блоков делают самостоятельные калькуляторы

Этот блок нужен, чтобы писать «0» в десятках, когда складываем 1+1 в двоичной системе
Допустим, мы хотим сделать одноразовый калькулятор двоичной системы вместо лампочки.
Чтобы создать блок, способный делать ноль из двух единиц, необходимо объединить несколько логических операций в одну.
Для этого транзистор должен уметь инвертировать значение (блок НЕ, НЕ) и параллельно совмещаться с блоком И (AND). В конце добавляют новые данные с помощью блока ИЛИ (ИЛИ).
Как происходит это:
1. Единицы проходят сразу через два блока: НЕ и И. Блок, инвестирующий в них, превращает их в 0, что блокам И перекрывает возможность превратить их в единицы. Затем получившиеся два значения 0 попадают на блок ИЛИ, который выдает конечное значение 0.

Здесь ясно видно, почему результат при складывание двух единиц получается нулевым
Единицы нельзя просто пропустить через инверторы, потому что при попытке сложить 0 и 0 они превратятся в две единицы, и блок ИЛИ превратит их в 1 вместо нужного 0. В результате блок И добавляется. В схеме, в которой НЕ и идут параллельно, а затем попускается значение через ИЛИ, оба начальных значения инвертируются до 0 и взаимоисключаются, когда они проходят через блок И, что означает,
Такая особая схема имеет своё название XOR.
Если перейти на следующий уровень абстракции и совместить XOR и И в одном блоке, мы сможем создать микросхему, способную правильно складывать 1+1 и получать то же самое значение 10 с целочисленным переполнением (ноль пишется, один в уме). Такой блок называется половинным добавителем или полусумматором.

При этом мини-блоки выполняют задачу из двух чисел независимо от друг друга и параллельно. Первый вычисляет значения «единиц», а второй вычисляет значения «десятков» двоичной системы.
Это пример работы полусумматора. Вычислите, что в блоке XOR 1+1=0 и в блоке И 1+1=1, что приводит к коду 10.
Полусумматор принимает два значения и создает два новых значения.
Но чтобы продвинуться дальше, нам нужно достичь следующего уровня абстракции: для связанных друг с другом расчётов нам нужно, чтобы результаты первого вычисления служили исходными данными для второго обработки.
• Ранее
Как самостоятельные калькуляторы заставили работать друг с другом и исполнять код

Наконец, чтобы создать полноценный калькулятор двоичной системы, который будет знать, откуда и какие значения брать, новый блок должен брать два исходных значения, а также третью единицу или ноль, которую он «держит в уме» из предыдущего расчета.
Для этого полусумматор был изменен, чтобы он мог принимать сразу три значения. На выходе все еще присутствуют блоки И и XOR, но к ним добавлены два блока и еще один XOR.
Они помогают правильно направить единицы и нули, чтобы получить два значения из трех: значение единиц и значение десятков.
Таким образом, создается новый блок полного добавителя, сумматоп.
Работа сумматора: в десятеричной системе мы должны сложить 11 и 11, что дает 3+3. Сначала сумматор складывает «однёрки», что приводит к 10.0 написанному в конце, один в уме. Затем он складывает первые числа 1 и 1, а затем добавляет к ним 1 — число, которое он «держит в уме» из предыдущего расчета. В результате 10+1=11, а вместо нуля добавляется одиннадцать, что приводит к 110. В бинарной

В этом примере складывается 101 и 111, в десятеричной системе это 5+7. В итоге получается 1100 в двоичной системе и 12 в десятеричной
Калькулятор непригоден к использованию, если он не объединяет полусумматоры для учета целочисленного переполнения (умения держать один в уме).
Поскольку они не выполняли принцип «один в уме», это настоящая катастрофа. Американская ракета Intelsat 708 со спутником разбилась сразу после запуска с китайского космодрома в 1996 году. Результаты исследования показали, что ошибка в схеме транзисторов встроенного компьютера привела к неправильному рассчету траектории во время полета, что привело к отклонению и падению.
Но сумматоры сами по себе не могут создать код десятичной системы, чередуя выходные числа одно за другим.
Для этого их объединяют в 8-битовые кластеры, которые адаптированы для того, чтобы компьютер мог интерпретировать их в понятные нам числа.
• Ранее
Как транзисторы научили считать обычные числа, а не двоичный код

Теперь в настоящий калькулятор можно включать сумматопы, которые могут «перенести» остаток на следующий сумматор.
8-битовый двоичный код используется для кодирования обычных чисел путем переноса остатков.
Чтобы добиться этого, восемь сумматоров, также известных как полный добавитель, объединяются в один блок, который теперь обладает способностью считать привычные нам числа.
Внутри него каждый сумматор, также известный как полный добавитель, отвечает только за расчет своей ячейки и цельночисленного переполнения в последовательности кода.
Так выглядит перевод двоичного кода в десятеричный.
◆ 0 из привычной нам десятеричной системы обозначается как 0000 0000.
◆ 1 обозначается как 0000 0001.
◆ 2, как мы выяснили, в двоичном коде обозначается как 0000 0010.
В этом случае остаток был перенесен на один уровень вперед. Мы продолжим.
Поскольку 3=1+2, мы должны сложить 0000 0001 и 0000 0010, чтобы получить 0000 0011.
И вот здесь начинается самое интересное.
◆ 4=1+3 или 0000 0001 плюс 0000 0011. Последнее число будет 0, предпоследнее тоже, поскольку происходит перенос остатка первого числа. И мы снова держим 1 в уме. Значит, третим с конца числом будет 1. Получается 0000 0100.
◆ И так доходим до 255, которое в двоичном коде выглядит как 1111 1111.
Блок, который отвечает за вычисление этого кода из восьми цифр называется 8-bit Full Adder, 8-битовый сумматор.
В каждом цикле он получает 8 цифр исходных данных и выдает 9 цифр, из которых восемь цифр составляют результат, а также одна цифра цельночисленного переполнения, которая находится в уме.
Чтобы получить 256, первый 8-битовый сумматор сообщает соседнему 8-битовому сумматору, что у него есть 1 в уме. Следующий 8-битовый сумматор учитывает это, превращая код числа из 8-битового в 16-битовый:
256=1+255, то есть0000 0001плюс 1111 1111.Когда вы суммируете новую единицу с единицей на конце, она становится «0 с одним в уме», что вызывает цепную реакцию для всех остальных единиц в восьмибитовой строке. В результате необходимо добавить второй сумматор, чтобы пропитать число в новом формате.
В итоге вычисления дают нам
0000 0001 0000 0000.Кроме того, механически это похоже на два 8-битовых сумматора с восемью сумматорами внутри каждого.
Наконец, мы приступаем к тому, как устроен арифметико-логический блок ALU, самая основная единица ядра процессора.
• Ранее
Таким образом, миллиарды микроскопических транзисторов не просто пропускают или блокируют ток; они также создают основной язык единиц и нулей, который вся цифровая вселенная использует для общения, игр, просмотра видео и решения сложных задач.
Представьте себе этот процесс как чрезвычайно сложный и быстрый танец, в котором каждую секунду принимаются простые решения миллиардами транзисторов. Однако когда так много транзисторов работает вместе по четкой схеме, результатом становятся чрезвычайно сложные вычисления, которые мы воспринимаем как плавное видео, быстрый поиск или красивую графику в игре.
Современные процессоры — это результат не только физики, но и человеческой изобретательности: инженеры уменьшают количество транзисторов и упаковывают все большую мощность в крошечные чипы. Эта постоянная гонка движет технологии вперед и меняет нашу жизнь, делая сложное и доступное одновременно.
В следующий раз, когда вы будете пользоваться навигатором или листать ленту, просто помните, что миллиарды бесконечных микроскопических переключателей работают внутри вашего смартфона над созданием цифровой магии, которой мы пользуемся каждый день.








