TL;DR
  • Разобран узел ввода-вывода Intel 386 на уровне кристалла: как площадки I/O защищают чип от трёх «драконов» — ESD, защёлкивания и метастабильности.

  • ESD: у входов стоят диоды к шинам питания/земли, токоограничивающий поликремниевый резистор и дополнительный диод; встречаются внутренние подтяжки (~20 кОм), пример — BS16#.

  • Защёлкивание (latch-up): паразитные NPN/PNP образуют петлю положительной обратной связи; в 386 применены двойные guard rings вокруг NMOS/PMOS и n-подложка с p-колодцами для подавления токов подложки.

  • Выходные драйверы: мощные PMOS/NMOS с «рассинхроненными» инверторами управления, чтобы не открывались одновременно и не возникал сквозной ток (пример — WR#).

  • Метастабильность: асинхронные входы (INTR, NMI, PEREQ, ERROR#, BUSY#) проходят через двухкаскадные синхронизаторы; первый каскад — редкая защёлка на усилителе считывания, сокращающая окно неопределённости.

  • Отличия компоновки входов/выходов видны прямо на кристалле: большие матрицы «диодов», поликремниевые резисторы, отдельные защитные кольца, разные топологии у «данных», «адреса» и «управления».

  • Итог: I/O-узлы — это гибрид цифрового и аналогового мира; именно они обеспечивают живучесть 386 при взаимодействии с внешней средой.

Я давно занимаюсь реверс-инжинирингом процессора Intel 386 и недавно наткнулся на любопытные схемы узлов выводов ввода/вывода (I/O). Поскольку эти выводы взаимодействуют с внешним миром, им угрожают особые опасности: статическое электричество и защёлкивание (latch-up) способны разрушить кристалл, а метастабильность — вызвать серьёзные сбои. Эти узлы ввода-вывода полностью отличаются от логических схем процессора 386, и мне п��палась ранее не описанная схема триггера, так что я вступаю на неизведанную территорию. В этой статье я подробно разбираю, как именно узлы ввода-вывода защищают 386 от «драконов», способных его уничтожить.

Кристалл 386, крупные планы областей с контактными площадками (bond pads). Цвета меняются из-за разных объективов микроскопа. Кликните по ссылке, чтобы открыть крупную версию.
Кристалл 386, крупные планы областей с контактными площадками (bond pads). Цвета меняются из-за разных объективов микроскопа. Кликните по ссылке, чтобы открыть крупную версию.

На фото выше показан кристалл 386 под микроскопом. Тёмные сложные узоры, собранные в прямоугольные области, образованы двумя металлическими слоями межсоединений, которые связывают схемы на кристалле 386. Не видны транзисторы: они сформированы в кремнии и поликремнии и скрыты под металлом. По периметру этого кремниевого кристалла размером с ноготь расположена 141 квадратная контактная площадка, обеспечивающая соединение микросхемы с внешним миром; тонкие золотые бондовые проволоки соединяют эти площадки с корпусом. Рядом с каждой I/O-площадкой размещены специализированные узлы ввода-вывода, которые обеспечивают электрический интерфейс между кристаллом и внешними компонентами и одновременно защищают микросхему. Я приблизил три группы таких площадок вместе с соответствующими узлами ввода-вывода (I/O). Узлы в верхней части (для выводов данных) и слева (для адресных линий) полностью отличаются от узлов управления внизу, что наглядно показывает, как схемотехника узлов меняется в зависимости от функции вывода.

Статическое электричество

Первый «дракон», угрожающий 386-му, — статическое электричество, способное прожечь в кристалле дыру. МОП-транзисторы (металл–оксид–полупроводник) построены на тонком изолирующем оксидном слое под затвором. В 386 этот хрупкий стеклоподобный слой имеет толщину всего 250 нм — примерно как у вирусной частицы. Даже небольшой электростатический разряд (ESD) может пробить этот оксид и уничтожить чип. Если вы когда-нибудь шли по ковру и чувствовали искру при прикосновении к дверной ручке, значит, вы сгенерировали как минимум 3000 вольт статического электричества, опасного для микросхем. Intel рекомендует при установке процессора использовать антистатический коврик и заземляющий браслет, чтобы избежать риска электростатического разряда (ESD).1 (примеч.)

Чтобы снизить риск повреждения от ESD, в узлах ввода-вывода (I/O) микросхем применяются защитные диоды и другие элементы. На схеме ниже показан типичный вход 386. Цель — не допустить, чтобы разряд дошёл до инвертора, где он мог бы повредить его транзисторы. Диоды у площадки обеспечивают первый уровень защиты: они отводят избыточное напряжение на шину +5 В или на землю. Далее резистор ограничивает ток, который м��жет попасть к инвертору. Третий диод даёт финальный рубеж защиты. (Одна необычная особенность этого входа — не связанная с ESD — в том, что у него есть подтяжка к питанию, реализованная транзистором, работающим как резистор примерно 20 кОм. 2 (примеч.) )

Схема узла BS16#. Сигнал BS16# указывает процессору 386, является ли внешняя шина 16-разрядной или 32-разрядной.
Схема узла BS16#. Сигнал BS16# указывает процессору 386, является ли внешняя шина 16-разрядной или 32-разрядной.

На изображении ниже показано, как эта схема выглядит на кристалле. Для этого фото я удалил металлические слои кислотами, оголив кремний, чтобы стали видны транзисторы. Диоды и подтягивающий резистор реализованы на транзисторах. 3 (примеч.) Большие матрицы транзисторов образуют диоды у площадки, а третий диод расположен выше. Токоограничительный защитный резистор выполнен из поликремния, который обладает более высоким сопротивлением, чем металлические межсоединения. Конденсатор реализован в виде пластины из поликремния над кремнием, разделённых тонким оксидным слоем. Как видно, защитная схемотехника занимает значительно больше площади, чем инверторы, обрабатывающие сигнал.

Узел BS16# на кристалле. Зелёные области — места, где оксидный слой был удалён не полностью.
Узел BS16# на кристалле. Зелёные области — места, где оксидный слой был удалён не полностью.

Защёлкивание 

Транзисторы в 386 изготавливаются путём легирования кремния примесями для изменения его свойств, формируя области кремния «n-типа» и «p-типа». Чип 386, как и большинство процессоров, построен по CMOS (или КМОП) технологии , то есть использует два типа транзисторов: NMOS и PMOS. Исходной основой служит подложка из кремния n-типа; транзисторы PMOS формируются легированием небольших областей до p-типа внутри подлежащего кремния n-типа. Для NMOS всё наоборот: области кремния n-типа формируются внутри кремния p-типа. Чтобы сформировать NMOS-транзисторы, создают «колодцы» из кремния p-типа, как показано на поперечном разрезе ниже. В итоге кристалл 386 содержит сложный рисунок областей p- и n-типа, из которых собраны его 285 000 транзисторов.

Структура транзисторов NMOS и PMOS в 386 образует паразитные транзисторы NPN и PNP. Эта диаграмма обратна привычным иллюстрациям latch-up, потому что в 386 используется n-подложка, в отличие от современных чипов с p-подложкой.
Структура транзисторов NMOS и PMOS в 386 образует паразитные транзисторы NPN и PNP. Эта диаграмма обратна привычным иллюстрациям latch-up, потому что в 386 используется n-подложка, в отличие от современных чипов с p-подложкой.

Но под поверхностью скрывается опасность — огнедышащий дракон защёлкивания, готовый сжечь чип. Проблема в том, что области кремния n- и p-типа образуют нежелательные, «паразитные» транзисторы под нужными транзисторами. В обычных условиях эти паразитные NPN и PNP бездействуют и ими можно пренебречь. Однако если под поверхностью, по кремниевой подложке, потечёт ток, он может открыть паразитный транзистор и пробудить пресловутое защёлкивание. 4 (примеч.) Паразитные транзисторы образуют петлю положительной обратной связи, поэтому если один начинает открываться, он открывает другой и так далее, пока оба не окажутся полностью открыты — это состояние и называют защёлкиванием. 5 (примеч.) Более того, из-за обратной связи защёлкивание сохраняется, пока не будет снято питание чипа. 6 (примеч.) Во время защёлкивания шины питания и земли оказываются замкнутыми через паразитные транзисторы, что вызывает большой ток, способный уничтожить микросхему перегревом или даже расплавлением тонких золотых соединительных (бондовых) проволок.

Защёлкивание может запускаться по-разному — от перенапряжения питания до радиации, — но основной риск связан с узлами ввода-вывода (I/O), поскольку сигналы из внешнего мира непредсказуемы. Например, предположим, что к 386 подключён флоппи-дисковод и он посылает сигнал с напряжением выше уровня питания 386 (+5 В). Такое возможно из-за всплеска напряжения в самом дисководе, отражения в линии сигнала или даже при подключении кабеля. Ток пойдёт через защитные диоды 386, описанные в предыдущем разделе. 7 (примеч.) Если этот ток потечёт через кремниевую подложку кристалла, он может запустить защёлкивание и погубить процессор.

Из-за этой опасности узлы ввода-вывода (I/O) 386 спроектированы так, чтобы предотвращать защёлкивание. Одно из решений — блокировать нежелательные токи в подложке, по сути возвести «заборы» вокруг транзисторов, не давая паразитным токам уйти в подложку. В 386 такую роль играют «защитные кольца» вокруг I/O-транзисторов и диодов. Эти кольца препятствуют защёлкиванию, перекрывая нежелательные пути тока и безопасно отводя его к питанию или к земле.

Такие приёмы знакомы каждому, кто проектировал платы с чувствительными входами: то же экранирование, отвод токов и борьба с паразитными переходами. На курсе Электроника и электротехника это рассматривается уже на уровне практики — от расчёта защитных цепей до моделирования отказов.

Схемотехника выходного узла W/R#. (Сигнал W/R# сообщает подсистемам памяти и ввода-вывода, выполняет ли 386 операцию записи или чтения.) Я удалил металл и поликремний, чтобы показать нижележащий кремний.
Схемотехника выходного узла W/R#. (Сигнал W/R# сообщает подсистемам памяти и ввода-вывода, выполняет ли 386 операцию записи или чтения.) Я удалил металл и поликремний, чтобы показать нижележащий кремний.

На схеме выше показаны двойные защитные кольца для типичного I/O-узла. 8 (примеч.) Отдельные защитные кольца оберегают транзисторы NMOS и PMOS. У NMOS-транзисторов внутреннее кольцо выполнено из кремния p-типа и подключено к земле (синим), а внешнее — из кремния n-типа и подключено к +5 В (красным). Для PMOS кольца расположены наоборот. Защитные кольца занимают заметную площадь кристалла, но это не пустая трата места: они защищают микросхему от защёлкивания.

Метастабильность

Последний дракон — метастабильность: она, скорее всего, не уничтожит чип, но способна привести к серьёзным сбоям. 9 (примеч.) Метастабильность — это специфическая проблема, когда цифровому сигналу может потребоваться сколь угодно долгое время, чтобы установиться в ноль или единицу. Иными словами, схема на какое-то время перестаёт вести себя как цифровая и проявляет свою базовую аналоговую природу. 10 (примеч.) В 1960-е и 1970-е метастабильность была предметом споров: многие инженеры-электронщики не верили в её существование или считали её несущественной. Сейчас метастабильность хорошо изучена, существуют специальные схемы для снижения её влияния, но полностью устранить её нельзя.

В процессоре всё синхронизировано с его тактовым сигналом. Если у современных процессоров частота — несколько гигагерц, то у 386 она составляла 12–33 МГц. Внутри процессора сигналы аккуратно организованы так, чтобы изменяться в ритме тактового сигнала — поэтому при более высокой тактовой частоте компьютер работает быстрее. Проблема в том, что внешние сигналы могут не быть синхронизированы с тактовым сигналом ЦП. Например, дисковод может послать прерывание, когда данные готовы, и это зависит от механики вращающегося диска. Если такое прерывание придёт в самый неудачный момент, это может вызвать метастабильность.

Метастабильный сигнал, который спустя неопределённое время устанавливается в высокий или низкий уровень. Это изображение использовалось для рекламы курса по метастабильности в 1974 году. Источник: «My Work on All Things Metastable» Томаса Чейни.
Метастабильный сигнал, который спустя неопределённое время устанавливается в высокий или низкий уровень. Это изображение использовалось для рекламы курса по метастабильности в 1974 году. Источник: «My Work on All Things Metastable» Томаса Чейни.

Если подробнее, процессоры используют триггеры, чтобы фиксировать значения сигналов под управлением тактового сигнала. «Триггер, срабатывающий по фронту» (edge-triggered flip-flop) захватывает своё входное значение в момент перехода тактового сигнала в единицу (по переднему фронту) и удерживает его до следующего тактового сигнала. Всё работает корректно, если значение стабильно в момент смены тактового сигнала: если вход переключился из низкого уровня в высокий до фронта, триггер зафиксирует единицу. Если же вход переключился после фронта, триггер удержит ноль, поскольку на момент фронта вход был в нуле. Но что произойдёт, если вход меняется с нуля на единицу точно в тот момент, когда меняется тактовый сигнал? Обычно триггер выберет либо ноль, либо единицу. Однако очень редко — возможно, несколько раз на миллиард — триггер «зависает» где-то посередине, ни ноль, ни единица. На то, чтобы «принять решение» в пользу нуля или единицы, триггеру могут понадобиться несколько наносекунд, и до этого момента значение остаётся промежуточным.

Фото выше иллюстрирует метастабильный сигнал, который непредсказуемое время проводит между нулём и единицей, прежде чем установиться. Ситуация похожа на шар, балансирующий на вершине холма, в точке неустойчивого равновесия. 11 (примеч.) Малейшее возмущение столкнёт шар на одну из двух устойчивых сторон у подножия, но заранее неизвестно, в какую именно сторону и сколько времени это займёт.

Метафорическое представление метастабильности: шар на вершине холма, который может скатиться в любую сторону.
Метафорическое представление метастабильности: шар на вершине холма, который может скатиться в любую сторону.

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

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

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

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

Схемотехника узла BUSY#, показывающая триггеры, синхронизирующие входной сигнал.
Схемотехника узла BUSY#, показывающая триггеры, синхронизирующие входной сигнал.

На схеме выше показано, как в 386 используются два триггера для минимизации метастабильности. Первый — специальный триггер на основе усилителя считывания (sense amplifier). Он значительно сложнее обычного триггера, но реагирует быстрее, снижая вероятность метастабильности. Он собран из двух защёлок на усилителе считывания, показанных ниже; подобных схем я раньше нигде не встречал. В микросхемах DRAM усилитель считывания берёт слабый сигнал из ячейки памяти и быстро усиливает его до уверенного 0 или 1. В этом триггере усилитель считывания принимает потенциально неоднозначный сигнал и так же быстро доводит его до 0 или 1. За счёт быстрого усиления триггер сокращает окно метастабильности. (Подробности см. в примечании #14)

Современные микроконтроллеры решают те же проблемы — внешние прерывания, дребезг, асинхронные сигналы. На курсе Embedded Developer такие эффекты разбираются на уровне прошивок и периферии: от синхронизации GPIO до устойчивого обмена по I²C и SPI.

Защёлка на основе усилителя считывания.
Защёлка на основе усилителя считывания.

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

Схемотехника узла BUSY#, показывающая специальные защёлки на основе усилителя считывания, снижающие вероятность (риск) метастабильности.
Схемотехника узла BUSY#, показывающая специальные защёлки на основе усилителя считывания, снижающие вероятность (риск) метастабильности.

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

Примечания и ссылки (осторожно, много текста)
  1. Антистатические меры предосторожности описаны в инструкциях Intel по установке процессоров. См. также руководство Intel «Electrostatic Discharge and Electrical Overstress Guide». Я не нашёл ESD-рейтинг для 386, но современные чипы Intel тестируются на стойкость к 500 В или 2000 В в зависимости от методики испытаний. 

2. Вывод BS16# немного необычен, потому что имеет внутренний подтягивающий резистор. Если посмотреть даташит (раздел 9.2.3 и примечания к таблице 9-3), у нескольких входных выводов (ERROR#, BUSY# и BS16#) есть внутренние подтяжки к питанию номиналом 20 кОм, а у входа PEREQ — внутренняя подтяжка к земле 20 кОм. 

3. Защитный диод, вероятно, представляет собой NMOS с заземлённым затвором (ggNMOS): у такого NMOS транзистора затвор, источник и подложка (но не сток) соединены с землёй. Под МОП-транзистором при этом формируется паразитный NPN-транзистор, который рассеивает энергию ESD. (Думаю, защита для PMOS устроена аналогично, только затвор подтянут к питанию, а не к земле.) Для выходных выводов у мощных МОП-ключей драйвера есть паразитные транзисторы, из-за чего сам драйвер считается «самозащищённым». Следствие: входные и выходные площадки выглядят похоже (на обеих заметны крупные МОП-транзисторы), в отличие от других микросхем, где наличие больших транзисторов сразу указывает на выход. (Тем не менее, у 386 выходы можно отличить от входов по тому, что у выходов внутри защитных колец расположены крупные инверторы, управляющие МОП-ключами, а у входов — нет.) См. также «Practical ESD Protection Design»

4. В 386 используются p-колодцы в n-легированной подложке. Сама подложка сильно легирована сурьмой, сверху расположен слаболегированный эпитаксиальный слой n-типа. Такая структура повышала устойчивость к защёлкиванию. (См. «High performance technology, circuits and packaging for the 80386», ICCD 1986.) В большинстве современных чипов применяется противоположный подход: n-колодцы в p-подложке. Почему произошла смена подложки?

В ранние годы КМОП (CMOS) стандартом был P-well из-за доступных тогда технологий легирования, см. «N-well and P-well performance comparison». В 1980-е шла дискуссия, что лучше — P-well или N-well: «В целом считается, что технология P-well доказала надёжность, даёт меньшую чувствительность к α-частицам, лучшее согласование p- и n-канальных приборов и высокое усиление у структур NPN. Сторонники N-well отмечают лучшую совместимость и производительность с процессами и схемами NMOS, хорошее качество подложки, доступность и стоимость, меньшую ёмкость p–n-переходов и ослабление эффекта подложки». (См. «Design of a CMOS Standard Cell Library».)

По мере увеличения диаметра пластин в 1990-х индустрия перешла на p-подложки, поскольку из-за свойств соответствующих примесей трудно изготавливать большие пластины с n-типом легирования (ссылка). В некоторых процессах характеристики транзисторов оптимизируют, используя оба типа колодцев — так называемую «двухколодцевую» технологию (twin-well). Например, в Pentium применялись p-подложки, а n- и p-колодцы формировались имплантацией. (См. «Intel’s 0.25 micron, 2.0 volts logic process technology».) 

5. Паразитные транзисторы можно также рассматривать как образующийся тиристор (SCR, Silicon Controlled Rectifier) — четырёхслойный полупроводниковый прибор. Тиристоры были популярны в 1970-е, потому что выдерживали более высокие токи и напряжения, чем транзисторы. Но по мере развития мощных транзисторов интерес к тиристорам снизился. В частности, после открытия тиристор остаётся во включённом состоянии, пока питание не будет снято или не изменится полярность; это усложняет их применение по сравнению с транзисторами. (Именно эта особенность делает защёлкивание таким опасным.) 

6. Спутники и баллистические ракеты имеют высокий риск защёлкивания из-за радиации. Поскольку защёлкивание, вызванное излучением, не всегда удаётся предотвратить, один из подходов — обнаруживать чрезмерный ток при защёлкивании и затем обесточивать микросхему с последующей подачей питания. Например, можно купить радиационно-стойкий ограничитель тока, который выявляет избыточный ток из-за защёлкивания и временно снимает питание; цена такого чипа — впечатляющие $1780. Подробнее о защёлкивании см. документ Texas Instruments «Latch-Up» (white paper), а также «Latch-Up, ESD, and Other Phenomena»

7. В «Руководстве по аппаратной части 80386» обсуждается, как разработчику аппаратуры предотвратить защёлкивание в 386. Утверждается, что процесс «CHMOS III» от Intel предотвращает защёлкивание при нормальных условиях эксплуатации. Однако превышение допустимых уровней напряжений на выводах ввода-вывода может вызвать броски тока и защёлкивание. Intel даёт три рекомендации: соблюдать предельные значения входных напряжений, никогда не подавать питание на отдельный вывод 386 до включения питания самого чипа и корректно терминировать сигнальные линии ввода-вывода, чтобы избегать перерегулирования (overshoot) и провалов (undershoot). 

8. Схема драйвера вывода WR# похожа на многие другие выходные узлы. Базовая идея такова: большой транзистор PMOS подтягивает выход к «1», а большой NMOS тянет его к «0». Если сигнал разрешения (enable) низкий, оба транзистора закрыты, и выход остаётся в высокоимпедансном состоянии («плавает»). (Это позволяет другим устройствам захватывать шину в состоянии HOLD.)

Схема драйвера вывода WR#
Схема драйвера вывода WR#

Инверторы, управляющие силовыми транзисторами драйвера, имеют необычную компоновку. Эти инверторы находятся внутри защитных колец, то есть они разделены: NMOS-транзисторы — в одном кольце, PMOS — в другом. Дополнительные межсоединения добавляют выходную ёмкость, из-за чего инверторы, вероятно, немного медленнее.

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

9. В «Metastability and Synchronizers: A Tutorial» рассказана история о том, как источник питания космического аппарата был выведен из строя из-за метастабильности: якобы метастабильность заставила логику включить слишком много узлов, перегрузив и уничтожив питание. Полагаю, это скорее поучительная легенда, чем реальный случай. Подробнее о метастабильности см. эту презентацию и материал Тома Чейни, одного из первых исследователей метастабильности. 

10. Одна из инженерных максим Вонады гласит: «Цифровые схемы собраны из аналоговых деталей». Другая максима: «Синхронизирующие схемы могут бесконечно долго принимать решение». Эти и ещё с десяток максим сформулированы Доном Вонадой в книге DEC 1978 года «Computer Engineering»

11. Любопытно, что определение метастабильности в электронике не совпадает с определением в физике и химии. В электронике метастабильное состояние — это неустойчивое равновесие. В физике и химии, напротив, метастабильное состояние является устойчивым, просто это не самый стабильный (основной) уровень; умеренное возмущение переведёт систему из метастабильного состояния в основное. (В аналогии с холмом это как будто шар застрял в небольшой ложбинке на склоне.) 

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

Схема защёлки
Схема защёлки

Но что произойдёт, если тактовый сигнал переключит ключ как раз в момент изменения входа, и на вход первого инвертора подано напряжение где-то между нулём и единицей? Нужно помнить, что инвертор по сути — аналоговое устройство, а не строго бинарное. Его можно описать «вольт-амперной передаточной характеристикой» (фиолетовая линия), задающей выходное напряжение для данного входного. Например, при низком входе получается высокий выход и наоборот. Но существует точка равновесия, где выходное напряжение равно входному. Именно здесь и возникает метастабильность.

Передаточная характеристика по напряжению для гипотетического инвертора.
Передаточная характеристика по напряжению для гипотетического инвертора.

Предположим, что входное напряжение инвертора находится в точке равновесия. Точно попасть в неё не получится (как минимум из-за шума), поэтому допустим, что оно на 1 мкВ выше равновесия. Заметьте, что около точки равновесия передаточная кривая очень крутая — скажем, с наклоном 100, — поэтому она сильно усиливает отклонение от равновесия. Значит, если вход на 1 мкВ выше равновесия, то выход будет на 100 мкВ ниже равновесия. Затем следующий инвертор вновь усилит разницу и вернёт на первый инвертор сигнал на 10 мВ выше равновесия. Отклонение снова усилится — теперь уже на 1000 мВ ниже равновесия. На этом этапе вы оказываетесь на «плоском» участке кривой: второй инвертор выдаёт +5 В, первый — 0 В, и схема стабилизируется.

Смысл в том, что напряжение равновесия — это неустойчивое равновесие, поэтому схема в итоге установится либо в состояние +5 В, либо 0 В. Но на это может потребоваться произвольное число «проходов» через инверторы — в зависимости от того, насколько близко стартовая точка была к равновесию. (Сигнал непрерывен, поэтому говорить о «проходах» — упрощение.) Обратите также внимание, что отклонение от равновесия растёт экспоненциально со временем. Именно поэтому вероятность метастабильности экспоненциально убывает со временем. 

13. Осмотр кристалла показывает, что выводы с защитой от метастабильности — INTR, NMI, PEREQ, ERROR# и BUSY#. В «Руководстве по аппаратной части 80386» перечислены те же пять выводов как асинхронные — приятно, когда необычность на кристалле совпадает с малозаметным утверждением в документации. Прерывания INTR и NMI асинхронны, поскольку приходят из внешних источников, которые могут не использовать тактовый сигнал 386. А что насчёт PEREQ, ERROR# и BUSY#? Эти линии — часть интерфейса с внешним математическим сопроцессором (чип 287 или 387). В большинстве случаев сопроцессор использует тактовый сигнал 386. Однако 387 поддерживал редко используемый асинхронный режим, в котором процессор и сопроцессор могли работать на разных частотах. 

14. «Антиметастабильный» триггер в 386 построен на необычной схеме. У него два каскада защёлок (что нормально), но вместо двух инверторов в петле используется схема на усилителе считывания. Идея усилителя считывания в том, что он работает с дифференциальным входом. Когда тактовый сигнал разрешает работу усилителя считывания, он поднимает более высокий из входов ещё выше, а более низкий — опускает (эти же узлы служат и входами, и выходами). (В динамических ОЗУ усилители считывания усиливают крошечный сигнал ячейки до «0» или «1» и одновременно восстанавливают разряд в ячейке.) Заметьте, что входы усилителя считывания также являются его выходами: во время первой фазы тактового сигнала это входы, во второй — выходы.

На схеме показан один из каскадов защёлки; полный триггер содержит второй каскад, идентичный первому, только фазы тактового сигнала поменяны местами. Эта защёлка гораздо сложнее типичной защёлки 386: 14 транзисторов против 6 или 8. Усилитель считывания похож на два инвертора в петле, но они разделяют ограниченный ток питания и ограниченный ток по шине земли. Когда один инвертор начинает расти вверх, он «забирает» часть тока питания у другого. Тем временем другой инвертор «забирает» ток по шине земли. В результате небольшая разница на входах усиливается, как в дифференциальном усилителе. Комбинируя усиление дифференциального каскада с усилением петли инверторов, эта схема приходит к финальному состоянию быстрее, чем обычная петля из инверторов.

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

Я не нашёл в литературе защёлок такого типа. В «Comparative Analysis and Study of Metastability on High-Performance Flip-Flops» описаны 11 высокопроизводительных триггеров. Среди них есть два на основе усилителей считывания, но их схемы сильно отличаются от варианта 386. Возможно, схема 386 — это внутренняя разработка Intel, которая не публиковалась. В любом случае, напишите в комментариях, если у этой схемы есть общепринятое название. 

Другие статьи цикла:


Понимание таких схем требует не только любопытства, но и системного подхода к анализу микросхем. На курсе Reverse engineering разбирают реальные кристаллы — от съёма слоёв и топологии до восстановления логики и схемотехники. Это тот самый навык видеть устройство не по документации, а по самому кремнию. Приходите на бесплатный урок «Анализ бинарных файлов с angr» 23 октября, который проведет преподаватель курса.

А чтобы узнать, подойдет ли вам программа курса, пройдите вступительный тест.