Русский
Русский
English
Статистика
Реклама

8086

Перевод Анализ кристалла сдвигового регистра у математического сопроцессора 8087

22.06.2020 14:22:01 | Автор: admin
Числа с плавающей запятой необходимы для научного программирования, однако первые процессоры напрямую поддерживали лишь операции с целыми числами. Но ранние микропроцессоры всё же могли производить операции с числами с плавающей запятой. Такие операции просто разбивались на множество целочисленных, манипуляции с экспонентой и дробной частью. Иначе говоря, поддержка плавающей запятой не сделала возможной операции с ней в принципе она просто серьёзно их ускорила. Существует ещё один способ представления нецелых чисел это числа с фиксированной запятой, у которых есть неизменное количество цифр после десятичного разделителя. С ними работать проще, однако с их помощью можно представить диапазон заметно меньшего размера.

Хотя операции с плавающей запятой на мейнфреймах были обычным делом уже в 1950-х и 1960-х годах, только в 1980-м Intel представила сопроцессор с плавающей запятой 8087 для микрокомпьютеров.

8087 не был первым чипом с поддержкой плавающей запятой. National Semiconductor представила MM57109 Number Cruncher Unit [перемалыватель цифр] так его реально назвали в 1997-м. Это был, по сути, чип от научного калькулятора на 12 цифр в новом корпусе, работающий с десятичными значениями в двоичном представлении, и требовавший ввода данных в обратной польской записи. Чип работал до абсурдного медленно: к примеру, на вычисление тангенса могло уйти до секунды. AMD представила свой первый чип с поддержкой плавающей запятой, Am9511, в 1978-м. Этот чип поддерживал 32-битные числа с плавающей запятой, и на вычисление тангенса тратил до 1,4 мс. В итоге Intel купила у AMD лицензию на Am9511 и продавала его как 8231. 8087 на 10 МГц, для сравнения, мог вычислить тангенс за 54 мкс, работая с 80-битным числом с плавающей запятой. Вот насколько быстродействие и точность 8087 были выше его предшественников.

Добавление этого чипа к микрокомпьютеру, к примеру, к IBM PC, могло ускорить операции с плавающей запятой в 100 раз. Это было огромным преимуществом для таких приложений, как AutoCAD, электронные таблицы или авиасимуляторы.
У оригинального IBM PC (1981) на материнской плате был пустой разъём для добавления сопроцессора 8087. На фото ниже можно увидеть большой пустой разъём, над микропроцессором 8088. Интересующиеся могут посмотреть на список приложений, поддерживавших 8087.



Минусом чипа была его стоимость в несколько сотен долларов. Я не нашёл оригинальных цен на 8087, однако он реально был дорогим. Сначала Intel продавала 8087 только в испытанной и отлаженной паре с 8088, поскольку у 8087 были проблемы с таймером. К 1982 году Intel понизила стоимость 8087 до $230, что эквивалентно сегодняшним $500. С точки зрения сегодняшнего мира открытых исходников выглядит странно, что клиентам также приходилось платить за поддержку ПО: использование 8087 с языком BASIC стоило дополнительных $150, а библиотека разработчика от Intel для 8087 стоила $1250.

Довольно сложно реализовать операции с плавающей запятой так, чтобы вычисления шли быстро и точно. Проблемы возникают от переполнения, округления, трансцендентных операций, и множества пограничных случаев. До появления 8087 у каждого производителя была своя, несовместимая с другими реализация плавающей запятой. Intel же заручился поддержкой эксперта по численному анализу Уильяма Кэхэна для разработки точных операций с плавающей запятой на основе жёстких принципов.

Разработчики так прокомментировали советы профессора Кэхэна: Получилось хуже, чем хотели, но лучше, чем ожидалось. За свою работу с числами с плавающей запятой Кэхэн позднее получил премию имени Тьюринга. Так и появилась архитектура с плавающей запятой 8087. Она стала стандартом IEEE 754, который используется почти во всех современных компьютерах, почему я и считаю 8087 одним из наиболее влиятельных чипов из когда-либо разработанных.


Кристалл Intel 8087 с размеченными основными функциональными блоками. Его размер 56 мм. Красным обведён сдвиговый регистр.

Чтобы разобраться в принципах работы 8087, я вскрыл этот чип и сделал фотографии кремниевого кристалла через микроскоп. На нём находится 40 000 транзисторов, и его изготовление реально находилось на пределе возможностей технологий того времени. Для сравнения, в микропроцессоре 8086 было всего 29 000 транзисторов. Сделать такой чип позволили новые технологии, разработанные в Intel. В этой статье я концентрируюсь на высокоскоростном сдвиговом регистре. Сдвиговый регистр занимает значительную часть площади чипа, поэтому для создания 8087 было жизненно необходимо минимизировать его размер.

Число с плавающей запятой состоит из дробной части (также известной, как мантисса), экспоненты и знакового бита. В чипе они реализованы в двоичной системе, но по аналогии с десятичной, у числа 6,021023 мантисса будет 6,02, а экспонента 23. Обрабатывающая мантиссу схема видна внизу фотографии. Слева направо, она состоит из: ROM с константами, сдвигового регистра, сумматоров/вычитателей, стека регистров. Схема обработки экспоненты находится в середине. Над ней модуль микрокода и ROM управления.

Сдвиговый регистр


Сдвиговый регистр занимается сдвигом двоичных чисел влево или вправо. У этой задачи есть несколько критически важных ролей в операциях с плавающей запятой. При сложении или вычитании двух чисел с плавающей запятой их нужно сдвигать так, чтобы выровнять двоичные разделители. Двоичный разделитель это как десятичный разделитель, только для двоичных чисел. Трансцендентные инструкции 8087 работают за счёт сложений и сдвигов с использованием алгоритмов CORDIC. Сдвиговый регистр также используется для сборки чисел с плавающей запятой из 16-битных кусочков при чтении из памяти.

Умножение и деление активнейшим образом используют сдвиги. Умножение выполняется при помощи сдвигов и сложений, а деление сдвигов и вычитаний. Однако 8087 не использует для этих операций сдвиговый регистр общего назначения. У него есть особые сдвиговые регистры, оптимизированные под данные операции. Поскольку сдвиги так важны для быстродействия, 8087 использует т.н. barrel shifter, или устройство быстрого сдвига, способное сдвигать число на любое количество битов в один шаг.

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

Intel использовала двухступенчатую схему сдвига, которая не разрастается слишком сильно, и при этом обеспечивает достаточно большую скорость работы. Первая ступень сдвигает значение на 0-7 бит, вторая на 0-7 байт. Вместе они сдвигают значение на любое число битов от 0 до 63.

Побитовый сдвиговый регистр


Начну с описания побитового сдвигового регистра, делающего сдвиг на величину от 0 до 7 битов. На диаграмме ниже обрисована структура побитового сдвигового регистра с пятью входами и выходами. Полноценный сдвиговый регистр поддерживает 68 бит. 8087 использует 64-битную мантиссу и три дополнительных бита для округления, то есть, поддерживает 67 бит. И, если я не ошибся, у него есть ещё один дополнительный бит в значащем разряде, итого получается 68.

Суть в том, что активируя определённый столбец, мы сдвигаем входное значение на определённое число. Каждый кружок обозначает транзистор, способный работать как коммутатор между входной и выходной шинами. Вертикальные шины выборки активируют нужные транзисторы. Каждая входная шина по диагонали соединена с восемью транзисторами, поэтому мы можем направлять её на один из восьми выходов. К примеру, на диаграмме показана активация шины 3, которая активирует связанные с ней транзисторы (зелёная). Вход 20 (отмечен оранжевым цветом) перенаправляется на выход 23 (синий). Сходным образом другие входы соединяются с соответствующими выходами, и таким образом получается сдвиг на 3. Активировав другую шину выборки сдвига, можно сдвинуть входное значение на другое число, от 0 до 7.


Структура побитового сдвигового регистра.

Чтобы описать внутреннюю структуру сдвигового регистра, я начну с описания N-МОП транзисторов, использовавшихся в 8087. Транзисторы делают при помощи добавления на кремниевую подложку особых примесей, которые создают участки диффундированного кремния с различными электрическими свойствами. Транзистор можно считать переключателем, контролирующим поток электрического тока между двумя участками, истоком и стоком. Активируется транзистор затвором, состоящим из особого типа кремния, поликремния, расположенного отдельным слоем над кремниевой подложкой. Подача напряжения на затвор позволяет току течь между истоком и стоком, а иначе этот путь заблокирован. Соединяются транзисторы металлическим слоем, находящимся сверху, при помощи которого получают сложную интегральную схему.


МОП-структура

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


N-МОП транзистор в чипе 8087, под микроскопом

Если немного уменьшить увеличение, то можно рассмотреть диаграмму ниже, на которой показано, как побитовый сдвиговый регистр реализован на чипе. На этом фото уместилось 48 транзисторов, похожих на тот, чьё фото я привёл выше. Оранжевая и жёлтая диагональные линии соответствуют одному из входов. Оранжевые участки отмечают транзисторы, соединённые через кремний, а жёлтые соединённые через металлический слой. Металлический слой используется для того, чтобы перепрыгивать через шины выборки из поликремния. Зелёным показана шина выборки из поликремния для сдвига на 3. В центре шина поликремниевого затвора включает транзистор, соединяющий вход с выходной длинной жёлтой линией, и сдвигающей отмеченный вход на три шага. Таким способом данная схема реализует сдвиговый регистр, как он был описан в начале данного раздела. На фото видно 6 из 68 входов, поэтому целиком сдвиговый регистр выглядит гораздо больше.


Кремниевая схема побитового сдвигового регистра в увеличении. Показан путь одного сигнала.

Побайтовый сдвиговый регистр


Побайтовый сдвиговый регистр сдвигает входящие данные на количество шагов, кратное не одному, а восьми битам. По принципу работы он схож с побитовым сдвиговым регистром, только у него каждый вход соединён с каждым восьмым выходом. К примеру, вход 20 соединён с выходами 20, 28, 36 и т.д. В итоге диагональные связи сильно наклонены и находятся близко друг к другу. На диаграмме ниже отмечена шина для сдвига на 4, и отмечены связи входа 0 с выходом 32. В правой части диаграммы нет проводников любой бит, сдвинутый за пределы входа 0, обнуляется. К примеру, при сдвиге влево на 4 байта младшие биты от 31 и ниже обнуляются.


Структура побайтового сдвигового регистра

На фото кристалла ниже показана часть побитового сдвигового регистра и часть побайтового сдвигового регистра. Фото взято не в максимальном увеличении, чтобы была понятна общая картина; при этом отдельные транзисторы едва различимы. Область побитового сдвигового регистра плотно усыпана транзисторами, однако побайтовый сдвиговый регистр состоит в основном из проводников, перемежающихся столбцами транзисторов.

Чтобы втиснуть проводники как можно ближе друг к другу, в сдвиговом регистре чередуются проводники из диффундированного кремния и проводники из поликремния. На фото ниже проводники из диффундированного кремния розоватые, а из поликремния желтоватые. 8087 производили по техпроцессу HMOS III от Intel, требовавшего промежутков размером 4 мкм для поликремния и 5 мкм для диффузии возможно, из-за разрешения фотолитографии. Однако бывает, что расстояние между диффундированным кремнием и поликремниевыми шинами оказывается гораздо меньшим вероятно потому, что их создавали при помощи отдельных фотошаблонов на отдельных слоях. Поэтому эти чередующиеся шины могут находиться очень близко друг к другу, экономя пространство.


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

Отметьте также, что верхняя часть побайтового сдвигового регистра частично пуста, а внизу он заполнен большим количеством проводников. Расположение проводников не такое аккуратное, как на диаграмме, но разработано для получения максимальной эффективности.


Побитовый сдвиговый регистр и побайтовый сдвиговый регистр чипа 8087

Двунаправленные драйверы


Тут стоит уточнить, что между физическим и логическим сдвигом битов есть разница. На кристалле схема, отвечающая за работу с мантиссой, расположена так, что самый значимый бит находится внизу. Проход данных через сдвиговый регистр слева направо физически сдвигает биты сверху вниз. Это соответствует сдвигу двоичного числа влево, когда биты двигаются на более высокие позиции. Когда данные идут в обратном направлении, справа налево, происходит правый сдвиг битов.

Пока что наши побитовый сдвиговый регистр и побайтовый сдвиговый регистр сдвигали биты только в одном направлении. Однако биты требуется сдвигать в обоих направлениях. Одной из ключевых инноваций сдвигового регистра 8087 была двунаправленная схема работы. Для сдвига битов в противоположном направлении данные через сдвиговый регистр можно было передавать в обратном направлении. Это возможно благодаря тому, что сдвиговый регистр состоит из пропускающих транзисторов [pass transistors], а не логических вентилей. Логика на пропускающих транзисторах [PTL] использует транзисторы в качестве коммутаторов, пропускающих или блокирующих сигнал, так, что сигнал может идти в обоих направлениях. У обычных же логических вентилях, таких, как NOR, есть определённые входы и выходы.

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

У схемы драйвера есть несколько тонкостей. Она не отправляет данные напрямую на сдвиговый регистр биты передаются в два шага. Сначала шины сдвигового регистра предварительно заряжаются до высокого уровня. Затем любой вход 1 бита приводит к тому, что соответствующие шины сдвигового регистра притягиваются вниз. Иначе говоря, шины сдвигового регистра возбуждаются низким уровнем сигнала низкое напряжение соответствует 1. Поскольку у всех не использующихся входов остаётся высокое напряжение (что соответствует биту 0), нулевые биты сдвигаются в сторону младших автоматически. Думаю, что технология предварительного заряда лучше подходила для N-МОП, поскольку она лучше справлялась с притягиванием сигнала вниз, чем вверх. Такой подход увеличивал быстродействие, особенно учитывая относительно высокую ёмкость таких транзисторов. Защёлка между сдвиговым регистром и шиной мантиссы предотвращает нежелательный цикл, в котором сдвинутые данные пойдут обратно в сдвиговый регистр и снова сдвинутся.

Мультиплексор и декодеры


Последнее, что я опишу это электроника, управляющая сдвиговым регистром. Количество позиций сдвига контролируют три источника. Во-первых, микрокод может напрямую задавать это число. Во-вторых, число может прийти от счётчика петель этот случай используется в рамках алгоритмов CORDIC. Наконец, число может прийти от счётчика ведущих нулей это позволяет нормализовать числа, устраняя ведущие нули через сдвиги. Каждый из источников выдаёт 6-битное число сдвига; каждый из мультиплексоров берёт один бит из нужного источника. Также каждый источник должен сообщить направление сдвига, налево/направо однако отвечающую за это электронику я пока не нашёл.


Схема мультиплексора/декодера.

Затем декодер активирует одну из восьми шин побитового сдвига и одну из восьми шин побайтового сдвига, чтобы включить нужные пропускающие транзисторы в сдвиговый регистр. Каждый декодер принимает на вход 3 бита и активирует одну из 8 выходных шин. Поскольку каждая шина декодера управляет большим столбцом пропускающих транзисторов в сдвиговый регистр, декодер использует относительно крупные транзисторы питания.

Каждый декодер, по сути, состоит из восьми NOR-вентилей: семь притягиваются вниз, и только один, на всех входах которого будет низкий сигнал, притянется вверх. Однако реализовано это не в виде простого логического вентиля. Все выходы предварительно имеют высокий сигнал, а потом семь ненужных выходов притягиваются вниз. Такая динамическая логика предварительного заряда используется до сих пор см. книгу Synchronous Precharge Logic. По той же схеме реализованы и мультиплексоры. Внизу схемы видно, как 16 управляющих шин выходят наружу.

Заключение


8087 сложный чип со многими функциональными модулями. Однако, если тщательно изучить кристалл, можно разобраться в электронных схемах 8087. В другом посте я описал устройство быстрого сдвига 8087, способное сдвигать биты до 63 позиций за раз. У процессоров Intel x86 не было устройства быстрого сдвига вплоть до 80386 (1985), где появилось 64-битное устройство быстрого сдвига. До того 8086 и его потомки сдвигали по биту за раз, поэтому сдвиг на много позиций проходил куда как медленнее. На этот инновационный программируемый двунаправленный сдвиговый регистр у Intel есть патент.

Сдвиговый регистр стал лишь одной из особенностей 8087, позволявшей ему проводить операции с плавающей запятой гораздо быстрее, чем это мог процессор 8086. 8087 работает с 80 битами за раз, а не с 16. У 8087 регистры были шириной 80 бит, что уменьшало количество запросов к памяти во время вычислений. В 8087 были встроены проверки на NaN, исчезновение значащих разрядов, переполнение, и т.п., благодаря чему можно было избавиться от медленных проверок этого в коде. 8087 ускорял операции умножения и деления. Относительный вклад этих факторов мне неизвестен, однако в целом все они кардинально ускоряли работу с плавающей запятой, бывало, что и до 100 раз.

Преимущества наличия железа, работающего с плавающей запятой, были настолько велики, что Intel начала интегрировать модули для работы с плавающей запятой, начиная с 80486 (1989). Сегодня у большинства процессоров есть модуль для работы с плавающей запятой, и расходы, связанные с приобретением сопроцессора остались в прошлом.


Фото кристалла 8087 с удалённым металлическим слоем. Цвета дают остатки оксидов. Кликабельно.
Подробнее..

Перевод Масштабирование кристалла как Intel уменьшала масштаб процессора 8086

21.07.2020 18:12:25 | Автор: admin
8 июня 1978 года исполнилось 42 года с того момента, как первые появились революционные микропроцессоры Intel 8086. В честь этого я изучал кристаллы 8086. Мне попались два кристалла 8086 разного размера, и на их примере видно, как работает масштабирование кристалла. Концепция масштабирования кристалла состоит в том, что с улучшением технологий производители могли уменьшать размер кремниевого кристалла, снижая стоимость и увеличивая быстродействие. Однако тут дело заключается не только в масштабировании кристалла целиком. Хотя все внутренние цепи можно уменьшить, внешние характеристики так легко не уменьшаются. К примеру, площадки для припаивания должны быть определённого размера, чтобы к ним можно было подвести проводники, а дорожки распределения питания должны быть достаточно большими для того, чтобы проводить необходимый ток. В итоге в Intel масштабировали внутреннюю часть 8086 без изменений, а цепи и площадки по краям чипа переделали.

Примечательно, что МОП-структуры всё ещё работают, будучи сильно уменьшенными, в то время, как большинство вещей нельзя просто так уменьшить. К примеру, нельзя масштабировать двигатель в 10 раз и ожидать, что он будет работать. Большинство физических объектов страдают от закона квадрата куба: площадь объекта растёт как квадрат линейного размера, а объём как куб. Однако в случае МОП-структур большинство составляющих при масштабировании либо остаётся без изменений, либо улучшается (к примеру, частота и энергопотребление). Больше деталей по масштабированию ищите в книге Мида и Конвея Introduction to VLSI Systems. Забавно, что в книге 1978 года утверждается, что у масштабирования есть фундаментальное ограничение в четверть микрона (250 нм) для длины канала из-за физических свойств материи. Это ограничение оказалось неимоверно ошибочным сейчас транзисторы переходят на характерный размер 5 нм, благодаря таким технологиям, как FinFET.

На фото ниже показан чип 8086 из 1979 года, а также его версия с явно меньшим по размеру кристаллом от 1986. С чипов сняты керамические крышки, чтобы было видно кристаллы. В обновлённом 8086-м внутренние цепи уменьшили на 64% по длине по сравнению с оригиналом, поэтому он занимает 40% от первоначальной площади. Сам кристалл не очень сильно уменьшен; он занимает 54% от первоначальной площади. Корпус процессора не изменялся, DIP с 40 выводами в то время часто использовали для микропроцессоров.

На старом чипе написано '78, '79 на корпусе и 1979 на кристалле, а снизу проставлен код даты 7947 (47-я неделя 1979 года). На корпусе нового чипа написано 1978, а на кристалле 1986, кода даты нет. Поэтому он должен быть изготовлен в 1986 или чуть позже. Непонятно, почему у нового чипа на корпусе стоит более старая дата.


Сравнение двух чипов 8086. У нового чипа снизу кристалл значительно меньше. Прямоугольник в правом верхнем углу это ROM с микрокодом.

8086 один из наиболее влиятельных чипов из всех, когда-либо созданных. Он положил начало архитектуре х86, которая до сих пор доминирует как в настольных, так и в серверных компьютерах. В отличие от современных КМОП-процессоров, 8086 был построен на N-МОП транзисторах, как 6502, Z-80, и другие первые процессоры. Первый чип сделали по технологии HMOS, как называли этот процесс в Intel. В 79 году Intel представила продвинутую его версию, HMOS-II, а в 82-м перешла на HMOS-III процесс, использовавшийся при изготовлении более нового из двух моих чипов. Каждая следующая версия HMOS ужимала размер компонентов чипа и повышала эффективность.

N-канальная МОП-структура это определённый тип МОП-транзистора. Их эффективность значительно превосходит P-канальный МОП-структуру, использовавшийся в ранних микропроцессорах, таких, как Intel 4004. Современные процессоры используют N-канальные и P-канальные транзисторы совместно для понижения энергопотребления это называется КМОП. Вентилям, созданным из N-канальных МОП, требуется притягивающий резистор, роль которого играет транзистор. Depletion load-транзисторы это тип транзисторов, представленный в середине 1970-х. Транзисторы этого типа лучше подходят на роль притягивающих резисторов и им не нужно дополнительное напряжение питания. Наконец, МОП-транзисторы изначально использовали металл для создания вентилей (буква М в МОП). Однако в конце 1960-х в Fairchild разработали поликремний, которым можно заменить металл. В итоге эффективность чипов повысилась, а производить их стало проще. В итоге, с конца 1960-х до середины 1970-х в производстве МОП-структур произошло несколько радикальных изменений, приведших к успеху 6502, Z-80, 8085, 8086 и других ранних процессоров. В 1980-е их место заняли КМОП- процессоры, поскольку они работали быстрее, а потребляли меньше энергии.

Странно, но что именно означает буква H в акрониме HMOS, не совсем ясно. Я не нашёл расшифровки этого акронима от Intel. В спецификациях пишут передовой процесс изготовления кремниевых N-канальных вентилей HMOS от Intel, или говорят " HMOS это высокоэффективный n-канальный МОП-процесс". Позднее Intel описывала CHMOS как Complementary High Speed Metal Oxide Semiconductor [комплементарный высокоскоростной метал-оксидный полупроводник]. Motorola определила HMOS как High-density MOS [МОП высокой плотности]. В других источниках её описывают, как высокоскоростную МОП или МОП высокой плотности с короткими каналами. У Intel есть патент на МОП-процесс и устройство высокой плотности и высокой скорости, так что, возможно, H обозначает одновременно и high density и high speed.

Интересно, что Intel использовала статическое ОЗУ на 4К для разработки каждого из HMOS-процессов до того, как начала использовать этот процесс для микропроцессоров и других чипов. Она использовала чип ОЗУ, вероятно, потому, что у него цепи расположены очень плотно, но при этом его относительно легко разрабатывать, поскольку там снова и снова повторяется одна и та же ячейка памяти. Как только она разработала все правила компоновки схем, она смогла начать создание гораздо более сложных процессоров.


Две версии кристалла 8086 в одинаковом масштабе. Входящие проводники соединяются с площадками, расположенными по периметру кристалла.

На фото выше показаны две версии кристалла 8086 в одинаковом масштабе. У двух чипов идентичная схема расположения компонентов внутри, хотя на первый взгляд они могут показаться разными. У чипа справа в середине есть много тёмных линий, которых нет у чипа слева, но это просто артефакт съёмки. Эти линии слой поликремния, расположенного под металлом. У кристалла слева все проводники расположены точно так же, только на фото они очень бледные. Думаю, что у нового чипа металлический слой тоньше, из-за чего поликремний видно лучше.

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

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


Один и тот же участок на двух разных чипах, в одном масштабе

А вот по периметру кристаллов различия значительные. Контактные площадки расположены ближе друг к другу, особенно справа внизу. Тому есть две причины. Во-первых, контактные площадки нельзя значительно уменьшить, поскольку к ним нужно прикрепить соединительные проводники. Во-вторых, дорожки распределения питания по краям делаются шире, чтобы поддерживать ток необходимой силы. К примеру, посмотрите на правую нижнюю часть фото, справа от ОЗУ микрокода. В частности это сделано потому, что дорожки питания в середине схемы уменьшены в масштабе вместе со всем остальным, поэтому внешним дорожкам нужно компенсировать эти потери. Кроме того, более тонкий металлический слой в новом чипе не сможет поддерживать такой же ток, если его не расширить.


Контактная площадка и сопутствующие транзисторы на старом чипе (слева) и новом (справа). У цифры 6 в дате копирайта верхняя часть необычно плоская такое впечатление, что это 5, исправленная на 6.

На фото выше показана контактная площадка с припаянным соединительным проводником. Транзисторы находятся над площадкой. Площадка нового чипа имеет почти такой же размер, однако транзисторы уменьшены и переделаны. Обратите внимание на гораздо более толстые металлические проводники у нового чипа. Логотип Intel передвинули справа налево, возможно, потому, что там было свободное место.

Приглядимся к кристаллам поближе


Сначала немного истории о производстве n-канальных МОП, использовавшихся в 8086 и других чипах той эпохи. Эти чипы состояли из кремниевой подложки, к которой добавляли примеси мышьяка или бора, формировавшие транзисторы. Находящийся сверху слой поликремния создаёт вентили для транзисторов и даёт возможность соединять компоненты проводниками. Наконец, один металлический слой наверху связывает все компоненты.

У процесса производства полупроводников (к примеру, HMOS-III) есть определённые правила по минимальному размеру и расстоянию между компонентами кремнием, поликремнием и металлическими слоями. Если тщательно рассмотреть чипы, то станет видно, как эти параметры различались для HMOS I и HMOS III. В табличке (взятой из документа HMOS III Technology) сведены характеристики различных процессов HMOS. С каждой версией характерные размеры уменьшались, а быстродействие увеличивалось. При переходе от HMOS-II к HMOS-III Intel достигла улучшения быстродействия на 40%.

HMOS I HMOS II HMOS III
Шаг диффузии () 8.0 6.4 5.0
Шаг поликремния () 7.0 5.6 4.0
Шаг металла () 11.0 8.0 6.4
Толщина оксида вентиля () 700 400 250
Длина канала () 3.0 2.0 1.5
Idsat (mA) 8.0 14.0 27.0
Минимальная задержка вентиля (ps) 1000 400 200
Задержка вентиля на рассеивание тепла (pJ) 1.0 0.5 0.25
Степень линейного уменьшения 1.0 0.8 0.64


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

Вы могли заметить, что у трёх транзисторов на фото вентили гораздо больше. Эти транзисторы работают притягивающими резисторами, что типично для NMOS. Увеличение их размера ослабляет транзистор, поэтому подтягивающий ток получается слабым.


Транзисторы на старом чипе 8086. Для получения фото поликремний и металл были удалены. Кружочки это сквозные проводники, соединяющие их с металлическим слоем.

На фото ниже показаны транзисторы в более новом 8086 в том же масштабе; видно, что транзисторы уже гораздо меньше по размеру. Линейные размеры составляют 64% от первоначальных, поэтому транзисторы занимают 40% площади по сравнению с предыдущими. Этот кристалл я обрабатывал по-другому, поэтому на нём остался поликремний это желтоватые линии. Кремний с примесями выглядит розоватым, и его видно хуже, чем на предыдущем фото. Длину вентиля я определил в 1,9 мкм, что составляет 64% от предыдущих 3 мкм. Заметьте, что HMOS-III поддерживает значительно меньшую длину канала в 1,5 мкм, однако поскольку всё уменьшается в одно и то же количество раз, длина канала оказывается больше необходимой. Это показывает, что однородное уменьшение приводит к потере определённых преимуществ нового процесса, однако это делать гораздо проще, чем проектировать новый чип с нуля.


Транзисторы в новом чипе 8086. Между кремнием или поликремнием и металлическим слоем (здесь он убран) есть множество сквозных проводников.

Также я изучил шаг между шинами на металлическом слое. На фото ниже показаны горизонтальные и вертикальные металлические проводники старого чипа. Шаг металлических шин я определил в 11 мкм, что совпадает с опубликованными характеристиками HMOS I. Уменьшение до 64% даёт шаг в 7 мкм на новом чипе, хотя процесс HMOS III поддерживал и 6,4 мкм. Как и ранее, одинаковый коэффициент уменьшения не даёт пользоваться всеми преимуществами нового процесса.


Металлический слой старого чипа 8086. Под металлом видны красноватые проводники из поликремния.

Наконец, я изучил шаг поликремниевых проводников. На фото ниже показан старый 8086; поликремний удалён, и видны только бледные белые дорожки. Эти параллельные поликремниевые линии, вероятно, формировали шину, направляющую сигналы от одной части чипа к другой. Для поликремния я измерил шаг в 7 мкм, что совпадает с документацией. Интересно, что из-за свойств HMOS проводники из поликремния могут располагаться плотнее, чем металлические проводники. У нового чипа шаг составляет 4,5 мкм, хотя есть возможность делать его размером в 4 мкм.


Поликремниевые дорожки на старом 8086 чипе

Заключения


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

Современные микропроцессоры всё ещё используют технологию масштабирования кристалла. В 2007 году Intel перешла на модель тик-так, в которой масштабирование существующих чипов (тик) чередуется с выпуском новой микроархитектуры (так).
Подробнее..

Перевод Триггеры-защёлки реверс-инжиниринг регистра команд в Intel 8086

24.08.2020 16:22:46 | Автор: admin
Микропроцессор Intel 8086 один из самых влиятельных чипов. Порождённая им архитектура х86 и по сей день доминирует среди настольных и серверных компьютеров. И всё же этот чип ещё достаточно прост для того, чтобы его цепи можно было изучать под микроскопом и разбираться в них. В этой статье я объясню реализацию динамической защёлки [одноступенчатый триггер] схемы, удерживающей один бит. В 8086 есть более 80 защёлок, разбросанных по всему чипу, и удерживающих различные важные биты статуса процессора, но я сконцентрируюсь на восьми из них, реализующих регистр команд и хранящих выполняющуюся команду.

У 8086-го есть более 80 защёлок. Некоторые из них хранят значения контактов AD (address/data) или управляющих контактов. Другие хранят текущий адрес микрокода и микрокоманды, а также адрес возврата из подпрограммы микрокода. В третьих хранятся биты исходного и выходного регистра команд, и АЛУ-операция команды. Во многих хранятся статусы внутреннего состояния, в которых я пока ещё разбираюсь.


Кристалл 86, где показан 8-битный регистр команд

На фото выше показан кремниевый кристалл процессора 8086 под микроскопом. Я удалил металлический и поликремниевый слои, чтобы было видно транзисторы всего их порядка 29 000 штук. На выделенном участке располагается 8-битный буфер команд, состоящий из восьми защёлок. Этот процессор 1978 года был ещё достаточно простым для того, чтобы единственный 8-битный регистр занимал на нём относительно большую площадь. На увеличении показаны кремний и транзисторы, из которых состоит единственная защёлка.

Как работает динамическая защёлка


Защёлка один их важнейших элементов 8086, поскольку защёлки отслеживают то, чем занят процессор. Защёлки можно делать разными способами; в 8086 используется компактная цепь, известная, как динамическая защёлка. Динамическая защёлка зависит от работы двухфазного генератора тактовых импульсов, который часто использовался для управления микропроцессорами той эпохи. Двухфазный генератор тактовых импульсов выдаёт два тактовых сигнала, активных по очереди. В первой фазе основной тактовый сигнал высокий, а сопутствующий тактовый сигнал низкий. Потом они меняются местами. Цикл повторяется на тактовой частоте, к примеру, 5 МГц.

Многие микропроцессоры используют логические элементы И-НЕ (NAND gates) для формирования RS-триггеров. RS-триггер обычно занимает больше места, чем динамическая защёлка, особенно если к нему добавляются дополнительные цепи для поддержки тактовой частоты. Также популярны D-триггеры (триггеры задержки), однако они получаются ещё более сложными и используют шесть затворов. Во многих случаях достаточно проходного транзистора; он может хранить значение в течение одного такта, но длительного хранения не обеспечивает.

Для процессоров всегда выбирают максимально возможную тактовую частоту. Первый 8086 работал на частоте до 5 МГц, а позже 8086-1 поддерживал уже до 10 МГц. Однако из-за использования динамической логики у 8086 есть ещё и минимальная тактовая частота: 2 МГц. Если генератор тактовых импульсов будет работать медленнее, появится риск утечки заряда с проводников до того, как схемы обратятся к нему, что приведёт к ошибкам.


Защёлка в процессоре 8086 состоит из четырёх проходных транзисторов и двух инвертеров. Защёлка работает на перемежающихся тактовых сигналах.

На схеме выше показана типичная защёлка в 8086. Она состоит из двух инвертеров и несколько проходных транзисторов. Для наших целей проходной транзистор можно считать выключателем: если на затвор приходит 1, транзистор передаёт сигнал далее. Если приходит 0, транзистор блокирует сигнал. Проходной транзистор управляются несколькими сигналами: загрузка (load), загружающий бит в защёлку; удержание (hold), удерживающий имеющееся значение бита; тактовый сигнал (clock) первой фазы и тактовый сигнал второй, инвертированной.

На диаграмме ниже показано, как в защёлку загружается значение (в данном случае, это 1). Для сигнала загрузки повышается напряжение, что позволяет входному сигналу (1) пройти через транзистор. Поскольку тактовый сигнал высокий, сигнал проходит через второй транзистор к инвертеру, который выдаёт 0. В этот момент третий (тактовый) транзистор блокирует сигнал.


Входной сигнал загружается в защёлку при высоком уровне сигнала загрузки

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


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

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

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


Когда сигнал тактовой частоты высокий, значение проходит через первый инвертер.

Реализация в кремнии


8086 и другие процессоры той эры создавались на основе транзисторов типа N-МОП. Они изготавливались из кремниевой подложки, к которой в процессе легирования добавлялись примеси мышьяка или бора, формировавшие транзисторы. Сверху кремния находился поликремний, создававший затворы транзисторов и проводники, связывавшие все компоненты между собой. Ещё один слой, металлический, обеспечивал дополнительные токопроводящие связи. Современные процессоры, для сравнения, используют технологию КМОП, комбинирующую технологии N-МОП и P-МОП, а металлических проводящих слоёв у них больше одного.


Как в ИС реализуется N-МОП транзистор (МОП-структура)

На диаграмме выше показана структура транзистора. Транзистор можно считать выключателем, позволяющим току протекать от одного участка (исток) к другому (сток). Транзистор управляется затвором, сделанным из кремния особого типа поликремния. Подача напряжения на затвор позволяет току течь между истоком и стоком, а подтягивание затвора к 0 В блокирует ток. От кремния затвор отделён изолирующим слоем оксида из-за этого затвор работает как конденсатор, что видно на примере динамической защёлки.

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

Подтягивающий резистор в N-МОП затворе реализуется при помощи транзистора особого типа. Транзистор с собственным каналом [depletion-mode transistor] работает как резистор, но занимает меньше места и имеет большую эффективность.


На схеме показано, как из транзистора и резистора получается инвертер. На фото видно, как схема реализована на чипе. Металлический слой удалён, чтобы было видно поликремний и кремний.

На фото справа показано, как в 8086 физически реализован инвертер. Желтоватые участки это токопроводящий кремний с примесями, а пятнистые это поликремний сверху. Транзистор получается там, где поликремний пересекает кремний с примесью. Поликремний формирует затвор транзистора, а участки кремния с обеих сторон дают исток и сток транзистора. Большой поликремниевый прямоугольник формирует подтягивающий вверх резистор между +5 В и выходом. Можно сопоставить строение этих физических структур со схемой.

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


Микроскопическое фото защёлки в процессоре 8086. Металлический слой с проводниками удалён, однако видны его следы в виде красноватых вертикальных линий. Фото повёрнуто на 180, чтобы соответствовать схеме.

В защёлке используются выходные буферы, не отмеченные на схеме, дающие высокотоковые сигналы для выхода и инвертированного выхода. У этих буферов смешное название, супербуферы потому что они выдают ток гораздо выше, чем у типичного N-МОП инвертера. Проблема N-МОП инвертера в том, что он работает медленно при управлении какой-либо цепью с высокой ёмкостью. Поскольку супербуфер даёт больший ток, он переключает сигнал гораздо быстрее. Достигает он этого, заменяя подтягивающий резистор транзистором, дающим больший ток. Минус в том, что подтягивающий транзистор требует инвертер для работы, поэтому схема супербуфера получается сложнее. Поэтому супербуфер используются только по необходимости обычно при отправке сигнала на много затворов или при управлении длинной шиной.


Реализация супербуфера в защёлке 8086. Отметьте, что соединение с +5 В и землёй перенесены на самые правые транзисторы.

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

Проблема N-МОП инвертера в том, что у подтягивающего вверх резистора ток ограничен. Когда на выходе 0, транзистор в инвертере быстро и с относительно большим током подтягивает выход вниз. Однако если на выходе 1, выход подтягивается наверх гораздо более слабым подтягивающим резистором.

Супербуфер похож на КМОП-инвертер, поскольку у него есть подтягивающий вверх транзистор и подтягивающий вниз транзистор. Разница в том, что КМОП использует транзисторы типов P-МОП и N-МОП, а у P-МОП транзистора инвертированный вход затвора. И наоборот, для супербуфера N-МОП требуется отдельный инвертер. Иначе говоря, КМОП инвертер использует два транзистора, а эффективность у супербуфера гораздо меньше, поскольку ему требуется четыре транзистора.

Супербуфер использует транзистор с собственным каналом для подтягивания вверх и транзистор с индуцированным каналом [enhancement mode transistor] для подтягивания вниз. Пороговое напряжение транзистора с собственным каналом ниже нуля, что позволяет подтягивать его выход до 5 В, и не отключаться при менее высоком напряжении. Когда выход низкий, транзистор с собственным каналом всё ещё будет включён, и будет работать как обычный подтягивающий вверх в обычном инвертере, поэтому через него будет течь определённый ток. Подробнее о супербуфере можно почитать по ссылке.

Регистр команд


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


Все 8 защёлок несколько разной формы, оптимизированной с учётом окружающих проводников. Ранее в статье описывалась защёлка 1, повёрнутая на 180. Красные вертикальные линии следы удалённого слоя металла.

Команда путешествует по 8086 извилистым путём. Процессор использует увеличивающую быстродействие предварительную выборку, загружая команды из памяти перед тем, как они потребуются. Они хранятся в очереди команд, 6-байтной очереди, расположенной в середине набора регистров. У современных процессоров, для сравнения, командный кэш может достигать размера нескольких мегабайт.

При выполнении команды она сохраняется в регистре команд, примерно в центре чипа. Относительно большие расстояния и объясняют необходимость использования супербуфера. Регистр команд скармливает команду в ПЗУ групповой расшифровки. Это ПЗУ определяет высокоуровневые характеристики команды однобайтовая она, или многобайтовая, или это префикс команды. И это лишь небольшая часть сложной системы обработки команд 8086. Другие защёлки хранят части команд, отмечая использования регистра и операции АЛУ, а отдельная цепь управляет движком микрокода но это я буду описывать отдельно.


Кристалл 8086, отмечены ключевые компоненты для обработки команд. По периметру распаечные провода соединяют кристалл с внешними контактами.

Заключение


8086 активно использует динамические защёлки для хранения внутренних состояний. Их видно под микроскопом, и их цепи можно отследить и понять. Кристалл 8086 интересно анализировать, поскольку, в отличие от современных процессоров, его транзисторы достаточно крупные, чтобы их было видно под микроскопом. Для своего времени это был сложный процессор с 29 000 транзисторами, однако всё же достаточно простой для того, чтобы его цепи можно было отследить и понять.
Подробнее..

Перевод Как процессор 8086 работает с питанием и сигналами тактовой частоты

03.09.2020 14:17:53 | Автор: admin
Одна из недооценённых характеристик ранних микропроцессоров сложность в распределении питания внутри интегральной схемы. У современного процессора может быть 15 слоёв металла с проводниками, но у чипов из 1970-х, например, у 8086, был всего один металлический слой, из-за чего разводка проводников представляла собой проблему. Сигналы тактовой частоты (синхросигналы) тоже нужно доводить до всех частей чипа, чтобы все они работали синхронно.

На фото ниже показан кристалл 8086 под микроскопом. Виден металлический слой сверху чипа, под которым прячутся кремниевая подложка и поликремниевый слой с проводниками. По периметру кристалла снаружи крохотная проволочная разварка соединяет площадки кристалла с внешними ногами. У 8086 площадка питания расположена сверху, а площадки земли сверху и снизу. У каждой из них есть два проводка проволочной разварки, что удваивает величину поддерживаемого тока. Видны широкие металлические дорожки, идущие от площадок питания и земли. Они распределяют питание по чипу.


Фото кристалла 8086, где видно место подачи питания (вверху) и контакты земли (вверху и внизу). Цепи синхросигнала расположены внизу.

За синхронизацию в 8086 отвечают два внутренних сигнала тактовой частоты. Внешний осциллятор подаёт сигналы тактовой частоты на 8086 через входящую площадку синхросигнала внизу. Внутренний формирователь синхронизирующих импульсов выдаёт два высокотоковых синхросигнала на основе внешних сигналов. Отметьте, что формирователь синхронизирующих импульсов занимает немалую площадь на чипе.

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

Распределение питания


8086 состоит из трёх слоёв, в каждом из которых можно размещать проводники. Металлический слой сверху лучше всего подходит для этого из-за низкого сопротивления металла. Под металлом находится поликремниевый слой проводников, состоящий из кремния особого типа. Сопротивление у поликремния выше, чем у металла, но его всё равно можно использовать для передачи сигналов по чипу. На кремниевой подложке формируются транзисторы. Сопротивление кремния относительно велико, поэтому он используется только для передачи сигнала на небольшие расстояния например, внутри затвора.

Распределение энергии в чипе, подобном 8086, представляет собой некую топологическую головоломку. Из-за его низкого сопротивления металлический слой остаётся единственным практически полезным для разводки питания и земли. Питание и землю нужно подавать почти на все затворы чипа. А поскольку металлический слой у чипа один, питание и земля пересекаться не могут.

Питание и землю нужно подавать почти на все затворы чипа, поскольку стандартному затвору К-МОП требуется земля для его подтягивающей вниз сети и питание для подтягивающего вверх резистора. Однако есть и несколько исключений. 8086 использует динамические логические затворы, особенно в АЛУ для скорости. Эти затворы притягиваются вверх синхросигналом, поэтому прямая подача питания им не нужна. Также 8086 использует несколько XOR-затворов у проходных транзисторов, которые притягиваются вниз входящим сигналом, поэтому им не нужна земля.

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

На диаграмме ниже размечены металлические проводники в 8086. Питание, соединённое с контактом питания сверху, показано красным. Мощная ветка питания идёт вниз и вправо, а потом разделяется на множество ответвлений. Также питание проходит по границе всего чипа, обеспечивая энергией I/O контакты.

У ИС часто бывает так, что питание и земля расположены в противоположных углах или на противоположных сторонах чипа. Такое расположение облегчает разводку дорожек питания и земли, не пересекающихся друг с другом. 8086 немного необычно располагает питание и землю на противоположных по диагонали контактах, а вторую землю поближе к контакту питания. Сети питания и земли на чипе разветвляются, как деревья. Эти сети ветвятся, и как переплетённые пальцы, достигают всех частей чипа.


Питание (красное) и земля (синяя, зелёная) на металлическом слое чипа

Контактов земли два. Отмеченные синим дорожки соединяются с верхним контактом земли, а зелёные с нижним. У отмеченных синем дорожек земли видно толстое ответвление, идущее вниз через центр чипа, и разветвляющееся сложным образом по всем направлениям. Зелёные дорожки идут по низу, с левой и правой сторон чипа, поддерживая контакты I/O, а также соединяясь с ПЗУ микрокода справа внизу.

Отходя дальше от источника питания и подбираясь ближе к конечным точкам, проводники питания становятся всё тоньше, и ток уменьшается. Это видно по проводнику питания, идущему к контактам адресов и данных, ниже. Слева под контактами проводник с землёй очень широкий, однако он постепенно сужается, идя направо. Иначе говоря, слева проводник должен проводить ток со всех контактов, а в самой правой части только с одного.


Соединение контактов адресов и данных с землёй становится всё тоньше (левая сторона чипа, повёрнутая на 90)

Металлический слой используется для передачи многих сигналов, а не только питания и земли. Из-за его низкого сопротивления это лучший слой для передачи сигналов. Однако широкое использование проводников питания и земли ограничивает возможности металлического слоя. Дабы избежать пересечений, большинство дорожек для передачи сигнала на металлическом слое идут параллельно дорожкам питания. Слой поликремния снизу используется для перпендикулярной передачи сигналов. Но что будет, если металлическому проводнику нужно пересечь дорожку питания или земли? Решение провести его снизу [crossunder]. Сигнал спускается на уровень поликремния, пересекает дорожку, и затем поднимается обратно наверх, как показано ниже.

Такие пересечения снизу используются во многих случаях, не только с питанием. Однако чаще всего дело именно в питании. Обычно металлические проводники используются для передачи сигналов в одном направлении, а поликремниевые для передачи сигналов в перпендикулярном. В разных местах чипа эти направления меняются, и зависят от доминирующего направления передачи сигналов. Поэтому по большей части сигналы путешествуют беспрепятственно. И всё равно им часто приходится перескакивать со слоя на слой.


Сигналы на металлическом слое пересекают дорожки питания снизу посредством поликремниевого слоя

Если питание и земля почти целиком разводятся на металлическом слое, в паре мест эта схема нарушается, и проходящие снизу дорожки используются для подачи питания. Чаще это происходит на самых последних участках дорожек, где ток уже мал. Один из примеров показан ниже там земля дважды проходит снизу металлического слоя при помощи поликремниевых проводников. Для уменьшения сопротивления эти обходные дорожки сделаны гораздо шире, чем дорожки для сигналов, и также используют кремний и поликремний вместе. Небольшие кружочки это сквозные контакты [via] между металлическим и поликремниевым слоями.


Композитное фото, на котором показаны обходные дорожки земли, идущие через поликремний под сигнальными дорожками.

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


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

После того, как 8086 обновили и физически уменьшились, у него появились другие проблемы с разводкой питания. С совершенствованием технологии производства Intel масштабировала кристаллы оставляла схемы такими же, но пропорциональна уменьшала их. К сожалению, уменьшение размера дорожек питания уменьшает и максимальный ток. Чтобы решить эту проблему, дорожки питания по периметру чипа усилили, а внутренние схемы и проводку уменьшили. Это видно на фото ниже например, дорожек питания гораздо больше в правом нижнем углу меньшего 8086.


Две версии 8086 в одном масштабе. Кристалл справа более поздний вариант, уменьшенный в размере.

Тактовые импульсы и процессоры


Почти все компьютеры используют сигналы тактовой частоты для управления синхронизацией процессора. 8086, как и многие микропроцессоры, использует внутри двухфазный формирователь синхронизирующих импульсов. У двухфазного формирователя синхронизирующих импульсов есть два синхросигнала когда первый сигнал высокий, второй низкий, и наоборот, как показано ниже. Одни схемы включаются первым синхросигналом, а другие вторым. Схема работы 8086 подразумевает отсутствие наложения двух фаз синхросигналов и их асимметричность между моментами, когда один синхросигнал становится низким, а второй растёт, имеется промежуток.


Двухфазный формирователь синхронизирующих импульсов состоит из двух синхросигналов противоположной полярности

Хотя почти все компьютеры используют синхросигналы для синхронизации, машинная архитектура IAS (популярная в 1950-х) была асинхронной, и работала без синхросигналов. Вместо этого каждая цепь по окончанию работы посылала импульс следующей, запуская выполнение следующего шага. Многие ранние компьютеры 1950-х были основаны на этой архитектуре, включая CYCLONE, ILLIAC, JOHNNIAC, MANIAC, SEAC и IBM 701. Исследования возможностей асинхронных вычислений продолжаются, но синхронные системы определённо доминируют.

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

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

У 8086 строгие требования к входящему синхросигналу, который должен находиться на высоком уровне треть времени. Обычно генерацией синхросигнала в 8086 занимался чип 8284 и кварцевый кристалл. Чип делил входящий синхросигнал на 3, чтобы выдавать 33% рабочего цикла синхросигнал, требуемый 8086.

В современных процессорах разводка синхросигнала очень сложная, поскольку сигнал должен доходить до всех частей чипа одновременно. Современные процессоры используют иерархию путей синхросигнала, балансируют время прохождения по каждому из путей, и часто обеспечивают отдельную буферизацию для каждого пути. Для сравнения, разводка синхросигнала в 8086 сделана прямолинейно, поскольку его тактовая частота в 5-10 МГц на несколько порядков меньше, чем у современных процессоров. На таких относительно малых частотах длина пути не имеет особого значения, поэтому тактовые импульсы у 8086 могут идти по извилистым путям.

Поскольку 8086 использовал динамическую логику, у него была и минимально допустимая тактовая частота в 2 МГц. Если частота будет меньше, есть риск утечки заряда до момента его обновления, что может приводить к отказам. Минимальная тактовая частота была неудобна с точки зрения отладки, поскольку замедлить или остановить синхросигнал было невозможно.


Разводка путей синхросигналов в 8086. Зелёный первый синхросигнал, а красный второй, с противоположной фазой

На диаграмме выше показана разводка путей синхросигналов в 8086. Фаза 1 отмечена зелёным, а фаза 2 красным. Внизу чипа цепи формирователя синхронизирующих импульсов выглядят как большие пятна. Оттуда синхросигналы разветвляются по всему чипу. По большей части две фазы синхросигналов идут параллельно, в отличие от питания и земли с их противоположными ветвями.

Поскольку синхросигналы доходят до всех частей чипа, им требуется гораздо больше тока, чем обычным сигналам, и поэтому они по большей части разведены на металлическом слое. Когда синхросигналам нужно пересечь дорожки питания, они проходят под ними снизу, как показано далее. Обратите внимание, что обходные пути для синхросигналов имеют неправильную форму они гораздо больше, чем обходные пути для других сигналов, например, для шины Q.


Обходящие дорожки питания пути синхросигналов довольно крупные. У шины Q (передающей команды из очереди команд в декодер) они гораздо меньше.

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


Крупный транзистор в формирователе синхронизирующих импульсов по сравнению с соседним логическим транзистором

На фото ниже видна схема формирователя синхронизирующих импульсов. Цепь разделяет внешний синхросигнал на две фазы, обеспечивает, чтобы они не накладывались друг на друга, и усиливает их. Розовый квадрат слева площадка для внешнего формирователя синхронизирующих импульсов. Сигнал проходит через ряд транзисторов, заканчивающийся на крупных транзисторах формирователя с правой стороны. Коричневые проводники поликремний, формирующий затворы. У многих транзисторов затворы идут зигзагами, таким образом большой транзистор умещается на небольшом пространстве.


Цепь формирователя синхронизирующих импульсов на кристалле. Металлический слой удалён. Видны крупные транзисторы. Входящий контакт внешнего синхросигнала розовый квадрат слева.

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


Упрощённая принципиальная схема формирователя синхронизирующих импульсов в 8086

Дополнительные цепи не дают синхросигналам накладываться: когда один сигнал высокий, это посредством инвертированного входа заставляет второй сигнал быть низким. Чтобы понять, как это работает, начнём с момента, когда сигнал на контакте clk in высокий. Сигналы clk in и clock высокие, а ^clk in^ и ^clock^ низкие. Теперь, допустим, входящий сигнал на clk in становится низким, что заставляет сигнал на clk in понизиться, а на ^clk in^ повыситься. Однако выход ^clock^ не может повыситься, пока clock не понизится. После этого сигнал ^clk in^ пойдёт через нижние формирователи, подтягивая ^clock^ вверх после двух вентильных задержек. Смысл в том, что clock и ^clock^ не переключаются одновременно. После того, как один становится низким, происходит задержка перед тем, как второй становится высоким. В результате мы получаем не накладывающиеся синхросигналы.

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

Заключение


8086 использует интересную разводку питания, но современные процессоры работают на совершенно другом уровне. Если 8086 требовались 350 мА, то современному процессору может потребоваться более 100 А. 8086 использовал 3 из 40 своих ног для питания и земли. У современных процессоров Intel Core i5 128 контактов питания и 377 земли (из общего количества в 1151 контакт). Хотя многочисленные металлические слои в современных чипах решают проблемы 8086 с разводкой, у них появляются новые сложности вроде разделения чипа на участки по питанию, что позволяет отключать неиспользуемые участки.

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

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru