CASCADE — TECHNICAL FIELD GUIDE / ТЕХНИЧЕСКИЙ СПРАВОЧНИК
PHASEPHYSICS
LAYER—
STATUS—
← ОГЛАВЛЕНИЕ — РИС. 00 — КАК ФИЗИЧЕСКОЕ ЯВЛЕНИЕ СТАНОВИТСЯ ВЫЧИСЛЕНИЕМ 17 ГЛАВ

КАСКАД
ОТ НАПРЯЖЕНИЯ ДО КОМПЬЮТЕРА: ARDUINO, ESP32, RASPBERRY PI, ПЛИС, СБИС

Семнадцать глав прослеживают одну непрерывную физическую цепочку: напряжение пересекает порог, транзистор переключается, элемент принимает решение, триггер запоминает, тактовый генератор синхронизирует, процессор выполняет — и так далее, вплоть до того, что на самом деле происходит при вызове digitalWrite() в скетче Arduino, почему ESP32 — не просто «Arduino с Wi-Fi», почему Raspberry Pi может загрузить Linux, а микроконтроллер — нет, и почему ПЛИС или СБИС иногда обгоняют процессор в лоб. Эта статья продолжает с того места, где остановился ПОРОГ (Общая основа и базовая логика) — та глава уже подробно разбирает пороги напряжения, три базовых элемента, двоичные числа и сумматор, так что здесь мы начинаем с транзистора и движемся к настоящему «железу». Пролистайте вниз, чтобы начать.

НАЧАТЬ — ГЛАВА 01 →
CH.01 / 17 — ФИЗИЧЕСКОЕ ПРОИСХОЖДЕНИЕ БИТА

«0» и «1» — не абстрактные объекты, живущие внутри микросхемы

Каждый бит, с которым работает компьютер, физически представляет собой диапазон некоторой непрерывной величины — почти всегда напряжения, иногда тока, заряда, ориентации магнитного домена или наличия светового импульса, — который инженеры договорились трактовать как одно из ровно двух логических состояний. Само по себе электричество не двоично: напряжение на проводе может принимать любое значение, допускаемое схемой. «0» и «1» — это интерпретация, наложенная поверх этого континуума, а не свойство, которое физика выдаёт бесплатно.

Первая глава ПОРОГА уже объясняет почему: общая точка отсчёта — земля, полоса LOW у 0 В, полоса HIGH у напряжения питания и намеренно неопределённый промежуток между ними — запас по помехоустойчивости. Эта глава принимает такую договорённость как данность и задаёт следующий вопрос: если провод физически несёт лишь непрерывное напряжение, какой физический механизм заставляет его чётко «прилипать» к одному из двух чистых состояний, каскад за каскадом, не съезжая в бессмыслицу уже через несколько ступеней? Этому механизму и посвящена оставшаяся часть статьи.

ЧЕМ «БИТ» ЯВЛЯЕТСЯ ФИЗИЧЕСКИ, В ЗАВИСИМОСТИ ОТ ТЕХНОЛОГИИ
ЛОГИЧЕСКИЙ ЭЛЕМЕНТ: полоса напряжения  ·  ЯЧЕЙКА SRAM: состояние перекрёстно соединённых инверторов  ·  ЯЧЕЙКА DRAM: заряд конденсатора  ·  ЯЧЕЙКА FLASH: заряд, «запертый» на плавающем затворе  ·  ЖЁСТКИЙ ДИСК: направление намагниченности домена  ·  ОПТОВОЛОКНО: свет есть / света нет
Шесть разных физических механизмов — одна логическая абстракция. В этом и состоит настоящий приём инженера: выбрать физическую величину, определить на ней два диапазона — и все слои, построенные поверх, больше никогда не задумываются о физике.
CH.02 / 17 — A DIGITAL SIGNAL IS STILL AN ANALOG WAVEFORM

Прямоугольный сигнал физически не является прямоугольным

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

Повторяющийся цифровой сигнал — такая же периодическая волна, как и любая другая: у неё есть частота, фаза и — для сигналов, проводящих неравное время в HIGH и LOW, — коэффициент заполнения, та самая величина, от которой зависит яркость светодиода, управляемого ШИМ. Настоящее достижение цифровой схемотехники — не в устранении этого аналогового «беспорядка», а в том, чтобы задать пороги логики достаточно щедрыми, чтобы этот беспорядок никогда не имел значения, пока каждый подъём, спад и установление успевают завершиться до того, как следующий фронт тактового сигнала «спросит» провод о его состоянии.

ВРЕМЯ НАРАСТАНИЯ (ОТ ДЛИТЕЛЬНОСТИ БИТА)8%
Медленный, чистый переход — с большим запасом внутри широкого логического диапазона.
CH.03 / 17 — ЕДИНСТВЕННЫЙ ПРИЁМ, ДЕЛАЮЩИЙ ЦИФРОВУЮ ЛОГИКУ ВОЗМОЖНОЙ В БОЛЬШИХ МАСШТАБАХ

Каждый элемент отбрасывает шум и восстанавливает чистый сигнал

Аналоговая усилительная цепочка деградирует: пропустите зашумлённый сигнал через достаточное число аналоговых каскадов — и шум накапливается, пока исходная информация не потеряется. Цифровая цепочка так не работает, потому что каждый элемент выполняет над входом одну и ту же операцию: считывает нечёткое, слегка зашумлённое напряжение, определяет, по какую сторону от порога оно оказалось, и выдаёт свежий, полноценный HIGH или LOW собственного производства — независимо от того, насколько именно чистым или грязным было входное напряжение, лишь бы оно попало на правильную сторону порога.

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

Без регенерации небольшой шум на элементе 1 к элементу 6 превращается в нечитаемый хаос.
CH.04 / 17 — ТРАНЗИСТОР — ЭТО ПЕРЕКЛЮЧАТЕЛЬ, А НЕ МАЛЕНЬКИЙ КОМПЬЮТЕР

Одно поле, один канал, один переключатель — повторённый миллиарды раз

У МОП-транзистора (полевого транзистора со структурой металл-оксид-полупроводник) есть три важных здесь вывода: затвор, исток и сток. Затвор расположен над каналом, отделён от него тонким слоем изолятора и практически не потребляет тока — он работает исключительно за счёт электрического поля. Поднимите напряжение на затворе достаточно высоко относительно истока — и это поле притягивает носители заряда в канал под затвором, открывая проводящий путь между истоком и стоком. Опустите напряжение затвора обратно — канал исчезает, и путь размыкается.

В этом и заключается весь механизм: управляющее напряжение решает, может ли протекать ток между двумя другими выводами. Соедините сток одного транзистора с затвором следующего — и переключение первого физически становится управляющим сигналом для второго: решение одного переключателя физически передаётся в решение следующего. Каждый логический элемент, каждый регистр, каждый процессор на этой странице — это тот же трёхвыводной переключатель, соединённый в узоры и повторённый на одном кристалле от нескольких тысяч до десятков миллиардов раз.

НАПРЯЖЕНИЕ НА ЗАТВОРЕ0.0V
OFF
Ниже порогового напряжения канал не образуется — исток и сток разъединены.
CH.05 / 17 — ДВА ТРАНЗИСТОРА СТАНОВЯТСЯ ИНВЕРТОРОМ; ЕЩЁ НЕСКОЛЬКО — ЛЮБЫМ ЭЛЕМЕНТОМ

И-НЕ и ИЛИ-НЕ — два элемента, из которых можно построить всё остальное

Современные чипы строят логику из пар КМОП (комплементарный МОП): для каждой задачи — одна сеть транзисторов, проводящая только тогда, когда выход должен быть подтянут к HIGH («сеть подтяжки к питанию»), и комплементарная сеть, проводящая только тогда, когда выход должен быть подтянут к LOW («сеть подтяжки к земле»), — никогда обе одновременно, что и позволяет элементам КМОП потреблять почти нулевой статический ток. Соедините затвор к затвору по одному транзистору каждого типа — и получите простейшую возможную логику: инвертор, выдающий значение, противоположное входному.

Добавьте ещё по одному транзистору каждого типа в правильной конфигурации — и инвертор превращается в элемент И-НЕ (NAND) или ИЛИ-НЕ (NOR); и оказывается, что любого из них одного достаточно, чтобы построить любой другой существующий элемент — включая И, ИЛИ, XOR, — просто соединив несколько таких элементов между собой и подав часть их собственных выходов обратно на входы. Именно это означает «функциональная полнота»: целый процессор в принципе можно построить из одних только элементов И-НЕ. Реальные чипы используют более полное семейство И/ИЛИ/НЕ/XOR из ПОРОГА просто потому, что так удобнее проектировать, а не потому, что это строго необходимо.

Слева: инвертор КМОП — один PMOS на подтяжке к питанию, один NMOS на подтяжке к земле. Справа: двухвходовой И-НЕ — два PMOS параллельно (подтяжка к питанию), два NMOS последовательно (подтяжка к земле); выход подтягивается к LOW только тогда, когда оба последовательных транзистора проводят, то есть оба входа — HIGH.
CH.06 / 17 — КАК СХЕМА ЗАПОМИНАЕТ ОДИН БИТ

Подайте выход элемента обратно на его вход — и он перестаёт забывать

Все рассмотренные до сих пор элементы — это комбинационная логика: их выход зависит только от текущих входов, без памяти о прошлом. Перекрёстно соедините два элемента ИЛИ-НЕ — подайте выход первого на вход второго, а выход второго обратно на вход первого — и схема станет последовательностной логикой: теперь у неё есть два входа, SET и RESET, и выход Q, который удерживает то состояние, в которое его последний раз перевели, даже после того как оба входа вернулись в LOW. Эта схема — SR-триггер (защёлка), и физически это простейшая из возможных ячеек памяти.

D-триггер уточняет ту же идею: вместо отдельных линий SET/RESET он берёт один информационный вход и копирует его на выход только по фронту тактового сигнала, затем удерживает это значение неизменным до следующего фронта, — из этого строительного блока сделан каждый регистр из главы 8. Расположите триггеры рядом друг с другом — получите регистр, хранящий целое слово; подайте выход регистра через сумматор обратно на его же вход — получите счётчик; добавьте ещё обратных связей и логику сравнения — получите конечный автомат. Память на этом уровне — никогда не что-то более экзотическое, чем обратная связь.

Q = 0
Когда оба входа LOW, защёлка удерживает то значение Q, в которое её последний раз перевели, — это и есть память.
CH.07 / 17 — ТАКТОВЫЙ ГЕНЕРАТОР КООРДИНИРУЕТ, А НЕ «ДУМАЕТ»

Тактовый сигнал — это сигнал синхронизации, а не источник «мысли» компьютера

ПОРОГ уже даёт базовую формулу тактовой частоты, f = 1/T. Важнее самого числа — та работа, которую тактовый сигнал реально выполняет: миллионы триггеров по всему чипу обновляются комбинационной логикой, которой после каждого изменения нужно некоторое время на установление, и если бы каждый триггер фиксировал новое значение тогда, когда ему заблагорассудится, разные части чипа рассогласовались бы друг с другом за микросекунды. Фронт тактового сигнала — это единый общий момент, распределённый повсюду, в который каждый триггер одновременно фиксирует свой вход; между фронтами «ничего не происходит», кроме того, что комбинационная логика тихо устанавливается к своему следующему ответу.

У этой договорённости есть настоящие «мелкие буквы»: информационный вход триггера обязан прийти и оставаться стабильным время установки до фронта тактового сигнала и время удержания после него, иначе триггер может войти в метастабильность — на мгновение застыть ни в чистом HIGH, ни в чистом LOW, как монета, балансирующая на ребре, прежде чем чуть позже непредсказуемо «упасть» в одно из состояний. Разработчики не устраняют этот риск, а ограничивают его: удерживают время прихода каждого сигнала надёжно внутри окна установки/удержания и добавляют дополнительные синхронизирующие триггеры на любом сигнале, который действительно переходит из одного тактового домена в другой.

ПРИХОД ДАННЫХ ОТНОСИТЕЛЬНО ФРОНТА ТАКТА−40%
SAFE CAPTURE
Данные устанавливаются задолго до открытия окна установки — триггер фиксирует их чисто.
CH.08 / 17 — ЧТО ПРОЦЕССОР НА САМОМ ДЕЛЕ ДЕЛАЕТ С ЧИСЛОМ

Процессор понятия не имеет, что значит «переместить этот объект». Он знает только кодированные состояния.

ПОРОГ уже объясняет, как ряд битов становится целым числом без знака и как дополнительный код придаёт ему знак; тот же фиксированный формат, разбитый иначе, даёт дробные числа с фиксированной точкой, а через бит знака, поле порядка и поле мантиссы, определённые стандартом IEEE 754, — числа с плавающей точкой, обменивающие часть точности на огромный диапазон. Ни одно из этих представлений не значит для «железа» ничего, кроме «узора проводов HIGH и LOW»; смысл поставляют программное обеспечение и программист.

Сама инструкция — точно такой же узор: поле опкода сообщает управляющей логике, какую операцию выполнить, а поля операндов называют, к каким регистрам или адресам памяти она применяется. Процессор пропускает каждую инструкцию через один и тот же пятиступенчатый цикл — выборка инструкции из памяти, декодирование, какой опкод и операнды она называет, выполнение операции в АЛУ, обращение к памяти, если инструкция этого требует, и запись результата обратно в регистр, — снова и снова, на тактовой скорости. Аккумуляторные машины хранят один неявный рабочий регистр; архитектуры RISC (ARM, RISC-V) предпочитают много явных регистров и простые, единообразные инструкции; архитектуры CISC (x86) допускают более плотные, разнообразные инструкции, делающие больше за одну выборку. Все три работают на одном и том же цикле выборка-декодирование-выполнение внутри.

Нажмите ШАГ, чтобы пройти одну инструкцию, ступень за ступенью.
CH.09 / 17 — МИКРОКОНТРОЛЛЕР ПРОТИВ МИКРОПРОЦЕССОРА

Разница в том, сколько компьютера умещается на одном кристалле кремния

Микроконтроллер (МК) объединяет на одном кристалле процессор, собственную флеш-память для хранения программы, собственную ОЗУ для рабочих данных, выводы GPIO, таймеры, АЦП, выходы ШИМ и периферию для связи (UART/SPI/I²C) — и построен, чтобы бесконечно выполнять одну программу с момента подачи питания. Микропроцессор (МП), как в одноплатном компьютере (ОПК), — это обычно только сам процессор и небольшой набор высокоскоростных интерфейсов; он зависит от внешней ОЗУ, внешнего накопителя и полноценной операционной системы, загружаемой с этого накопителя, чтобы вообще что-то делать.

Именно поэтому Arduino ощущается принципиально иначе, чем Raspberry Pi, уже через несколько секунд работы с любым из них: подайте питание на Arduino — и его единственная программа запускается за миллисекунды, детерминированно, а поведение каждого вывода можно напрямую проследить до этой программы; подайте питание на Raspberry Pi — и загрузчику сначала нужно найти, загрузить и передать управление целому ядру Linux, прежде чем хоть что-то похожее на «вашу программу» вообще сможет начаться. Главы 10–12 подробно проходят оба пути.

CH.10 / 17 — ARDUINO: ЧТО НА САМОМ ДЕЛЕ ДЕЛАЕТ digitalWrite(pin, HIGH)

Одна строка на C++ становится настоящим напряжением на настоящем выводе — пройдите каждый шаг

digitalWrite(pin, HIGH) выглядит как одна инструкция, но на самом деле это целая цепочка физических событий, каждое из которых полностью строится на предыдущих главах. Это самая важная демонстрация на этой странице — все рассмотренные до сих пор уровни, от транзистора до цикла инструкций, реально происходят, по порядку, каждый раз, когда выполняется эта одна строка.

Пройдите по цепочке ниже, нажимая на каждый шаг. Тот же самый механизм, прочитанный в обратную сторону, — это ровно то, как работают digitalRead() и analogRead() (компаратор или аналого-цифровой преобразователь вместо выходного драйвера сообщает напряжение на выводе обратно в регистр); ШИМ — это то же переключение GPIO, но по расписанию аппаратного таймера, а не программы; прерывание — это периферия, сигнализирующая процессору в момент, когда напряжение на выводе пересекает порог, вместо того чтобы программа сама постоянно об этом спрашивала; а UART, SPI и I²C — это просто согласованные временные шаблоны переключения и считывания таких же выводов, достаточно быстрые и структурированные, чтобы другой чип мог декодировать их как данные.

void setup() { pinMode(13, OUTPUT);}void loop() { digitalWrite(13, HIGH); // ← this line}
CH.11 / 17 — ESP32: СИСТЕМА НА КРИСТАЛЛЕ, А НЕ «ARDUINO С WI-FI»

Arduino — это модель программирования. ESP32 — это семейство микросхем.

«Arduino» — это название экосистемы: разводка платы, упрощённая библиотека на C++, среда разработки, — которая может работать поверх очень разных микроконтроллеров. «ESP32» — это название реального семейства систем на кристалле от Espressif, чаще всего построенных вокруг одного или двух ядер процессора Xtensa LX6, которое может выполнять модель программирования Arduino как один из вариантов наряду с собственным фреймворком Espressif ESP-IDF или полноценной операционной системой реального времени.

То, что реально отличает ESP32 от классической 8-битной платы Arduino, — это интеграция: встроенная SRAM объёмом в сотни килобайт, а не несколько килобайт, внешняя флеш-память SPI для программы и файлов, полноценный радиомодуль Wi-Fi 802.11 и радиомодуль Bluetooth Classic/BLE на том же кристалле, аппаратный DMA, позволяющий периферии передавать данные без остановки процессорных ядер для «нянченья» с каждым байтом, а также те же GPIO, АЦП, ШИМ, таймеры, прерывания, UART, SPI и I²C, что и у младшего МК, — только их больше и часто они гибче. Это по-настоящему небольшой самодостаточный компьютер со встроенными радиомодулями, а не просто «Arduino покрупнее».

ПРОЦЕССОР1–2 ядра Xtensa LX6
ВСТРОЕННАЯ SRAM520 KB
РАДИОМОДУЛИWi-Fi + Bluetooth
ПАМЯТЬ ПРОГРАММВнешняя SPI флеш-память
CH.12 / 17 — RASPBERRY PI: СОВЕРШЕННО ИНОЙ УРОВЕНЬ АБСТРАКЦИИ

Прежде чем Raspberry Pi запустит «вашу программу», ему нужно стать компьютером с Linux

Raspberry Pi — это одноплатный компьютер, а не плата с микроконтроллером: при включении питания первым запускается встроенный загрузочный ПЗУ, который ищет загрузчик (на Pi 4 и новее — код, хранящийся в небольшой SPI EEPROM, заменившей файл bootcode.bin на SD-карте у старых моделей); этот загрузчик считывает дерево устройств и прошивку и, наконец, передаёт управление ядру Linux, которое монтирует файловую систему, запускает планировщик и только затем запускает тот процесс, который на самом деле хотел пользователь, — целый стек, который должен полностью завершиться, по порядку, прежде чем вообще запустится что-то написанное пользователем.

Микроконтроллер пропускает практически всё это: сброс запускает несколько строк стартового кода, настраивающих стек и очищающих память, а затем переходит прямо в главный цикл программы (или, самое большее, в планировщик небольшой операционной системы реального времени) — часто заметно быстрее, чем за миллисекунду. В этом и состоит настоящий компромисс: МК отказывается от операционной системы, файловой системы, сетевых стеков и огромной программной экосистемы в обмен на детерминированные тайминги, действительно низкое энергопотребление, почти мгновенный запуск и прямой, ничем не опосредованный контроль над собственным «железом»; ОПК жертвует временем запуска и детерминированностью ради настоящего процессора, настоящей памяти и всего, что приносит с собой Linux.

МК: ЗАПУСКМикросекунды, детерминированно
МК: СИЛЬНАЯ СТОРОНАТайминги, энергопотребление, цена
МК: ОГРАНИЧЕНИЕМало памяти, нет ОС
ОПК: ЗАПУСКСекунды, цепочка загрузки
ОПК: СИЛЬНАЯ СТОРОНАОС, память, сеть
ОПК: ОГРАНИЧЕНИЕНедетерминированные тайминги
CH.13 / 17 — ВЗГЛЯД ИНЖЕНЕРА: ФИЗИКА ⇄ ПРИЛОЖЕНИЕ

Перестаньте считать микроконтроллер волшебным чёрным ящиком

Инженерная культура, стоящая за datasheet-ами и application note-ами производителей полупроводников — от Texas Instruments, Microchip, STMicroelectronics и любого другого вендора кремния, — рассматривает каждый чип как стек слоёв, по которому инженер может двигаться в любом направлении: физика, устройство, схема, логика, архитектура, регистр, инструкция, прошивка, приложение. Чтение сверху вниз, от программы, объясняет, почему работает строка кода; чтение снизу вверх, от физики, объясняет, почему чип вообще может существовать. Ни одно из направлений не «реальнее» другого.

Именно поэтому настоящий инженер может отладить не горящий светодиод с любого конца: сверху вниз — «приложение вызывает драйвер, тот пишет в регистр, тот управляет периферией, та переключает транзистор, а это уже просто физика»; или снизу вверх — «вот это поведение электронов позволяет получить переключатель, который складывается в элемент, который складывается в конечный автомат, который складывается в процессор, который выполняет прошивку, которая выполняет приложение». Производители от AVR и PIC до STM32, RP2040, MSP430 и микроконтроллеров на архитектуре RISC-V — все они находятся где-то на этом же стеке: на каждом слое разные компромиссы, но никогда не другой набор слоёв.

CH.14 / 17 — КОГДА УНИВЕРСАЛЬНЫЙ ПРОЦЕССОР — НЕ ЛУЧШИЙ ОТВЕТ

ПЛИС конфигурирует «железо» под задачу вместо выполнения инструкций

Каждый рассмотренный до сих пор процессор, от 8-битного МК до настольного чипа, вычисляет одинаково: фиксированный аппаратный тракт данных снова и снова выбирает и выполняет поток инструкций. Программируемая пользователем вентильная матрица (ПЛИС, FPGA) переворачивает это отношение: это массив настраиваемых логических блоков, программируемой коммутации между ними, триггеров, небольших блоков памяти и выделенных DSP-блоков, — и вместо выполнения инструкций на фиксированной схеме она настраивает настоящую, фиксированную схему, «заточенную» под одну конкретную задачу, вообще без накладных расходов на выборку-декодирование-выполнение. Обработка сигналов, программно-определяемое радио, контуры управления в робототехнике, высокоскоростные интерфейсы и научные приборы обращаются к ПЛИС именно потому, что специально построенный аппаратный тракт данных может выполнять свою единственную задачу каждый такт, детерминированно, и ничто больше не конкурирует за внимание процессора.

Специализированная интегральная схема (СБИС, ASIC) доводит ту же идею на шаг дальше и замораживает её навсегда в кремнии: вместо датчик → процессор → программный алгоритм → результат ASIC может реализовать датчик → выделенный аппаратный конвейер → результат напрямую, часто при малой доле энергопотребления и задержки. Цена реальна: затраты на проектирование, верификацию и изготовление масок/фабрикацию, оправданные лишь при большом объёме производства, долгий путь до рынка и тот факт, что ошибка, найденная после изготовления, — это ошибка, впечённая в физический кремний, а не патч. Между процессором и ASIC располагаются DSP (наборы инструкций, заточенные именно под математику обработки сигналов) и GPU (тысячи простых ядер, заточенных под одну и ту же операцию, повторяемую над огромными параллельными данными) — каждый меняет универсальность именно на ту эффективность, которая нужна его целевой нагрузке.

CH.15 / 17 — ЧТО ВЫЧИСЛЕНИЕ РЕАЛЬНО СТОИТ ФИЗИЧЕСКИ

Переместить бит может стоить дороже энергии, чем вычислить с ним

Каждое событие переключения во всей этой статье стоит реальной энергии: заряд и разряд ёмкости затвора, проведение тока через канал и — в ячейках памяти из главы 6 — чтение и запись состояния. Ничто из этого не бесплатно, и на современном чипе энергия, затрачиваемая на перемещение данных из внешней DRAM в ядро процессора, регулярно оказывается намного больше энергии на арифметику, которую ядро затем с этими данными выполняет, — и разрыв только растёт с увеличением расстояния, которое данным приходится преодолеть.

Один этот факт объясняет целый слой устройства компьютеров, который большинство программистов никогда не видят напрямую: небольшой быстрый кэш, физически расположенный рядом с ядром процессора именно для того, чтобы избежать дорогого «похода» в DRAM; аппаратный DMA, перемещающий данные между памятью и периферией, не будя процессорное ядро на каждый байт; выделенные ускорители, размещённые прямо рядом с данными, которые они обрабатывают, вместо пересылки этих данных через весь чип; и периферийные (edge) вычисления, обрабатывающие данные датчика физически рядом с самим датчиком вместо того, чтобы платить намного большую энергетическую цену за их пересылку куда-то ещё.

ДОСТУП К РЕГИСТРУ / КЭШУДешевле всего — физически ближе всего
SRAM НА КРИСТАЛЛЕНизкая стоимость, ограниченный объём
ВНЕШНЯЯ DRAM / FLASHДороже всего — реальное физическое расстояние
CH.16 / 17 — МОЩНЕЕ — ЕЩЁ НЕ ЗНАЧИТ ЛУЧШЕ

ESP32, Raspberry Pi, ПЛИС и ASIC могут быть одинаково «правильным выбором» — для разных задач

Все предыдущие главы сводятся к одному практическому вопросу: если известны требуемые для задачи вычисления, задержка, энергобюджет, память, связность и детерминированность, — какая архитектура реально подходит? Крошечному МК, мигающему светодиодом, не нужны ни энергопотребление, ни время загрузки ОПК; автономному Wi-Fi-датчику на батарейке нужны радиомодули ESP32 больше, чем «сырая» вычислительная мощность; веб-серверу куда важнее операционная система и сетевой стек ОПК, чем детерминированные тайминги.

Машинное зрение опирается на GPU или выделенный нейроускоритель ради параллельной арифметики, обычно работая поверх ОС ОПК для всего остального; высокоскоростная детерминированная обработка сигналов опирается на ПЛИС или DSP именно потому, что накладные расходы на инструкции универсального процессора — единственное, чего эта нагрузка не может себе позволить; а массово производимое, сверхэкономичное однозадачное устройство — это именно тот случай, когда высокая невозвратная стоимость ASIC наконец окупается, распределившись на миллионы экземпляров. Нажмите на задачу ниже.

MCUESP32SBCGPUFPGAASIC
CH.17 / 17 — ПОЛНАЯ КАРТА, В ОБОИХ НАПРАВЛЕНИЯХ

Компьютер не отделён от физики

Каждая глава этой статьи была частью одной непрерывной иерархии, если читать её вперёд: физические явления становятся электрическими сигналами, сигналы становятся напряжением и током, напряжение пересекает порог, порог становится 0 или 1, 0 или 1 переключает транзистор, транзисторы становятся логикой, логика обретает память, тактовый генератор синхронизирует всё это, процессор — микроконтроллер, CPU, ПЛИС или ASIC — выполняет программу, а программа принимает решение, которое в итоге снова становится физическим действием в мире: вращается мотор, загорается дисплей, передаёт радиомодуль.

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

«Компьютер не отделён от физики. Это инженерная иерархия физических преобразований состояния, которую мы научились интерпретировать как информацию и вычисление».

CASCADE — ЗАКЛЮЧИТЕЛЬНОЕ УТВЕРЖДЕНИЕ
ИСТОЧНИКИ

Источники