[Перевод] Внутри многокристального секционного микропроцессора Am2901 от AMD 1970-х годов
Вы, возможно, знакомы с современными процессорами производства компании Advanced Micro Devices. Но AMD начала производить процессоры ещё в 1975 году, когда впервые представила свой Am2901. Это был т.н. многокристальный секционный процессор: каждый из чипов обрабатывал по 4 бита, однако для увеличения размера слова использовалась работа нескольких чипов одновременно. Такой подход использовали в 1970-х и 1980-х годах, чтобы создавать процессоры на 16, 32 или 64 бит (к примеру), когда не могли разместить целый процессор на одном быстром чипе (существовали процессоры и на одном чипе, однако их МОП-транзисторы работали медленнее; потом появились КМОП-транзисторы, и когда их скорость достаточно выросла, на них перешли почти все производители).
Фото кристалла с чипом Am2901. Видны металлические слои чипа; кремний находится внизу. По краям кристалла крохотные проводники соединяют чип с внешними контактами.
Чип Am2901 набрал большую популярность, его использовали в самых разных системах, от видеоигры Battlezone до миникомпьютера VAX-11/730, от рабочей станции Xerox Star до бортового компьютера Magic 372 истребителя F-16. Более быстрая версия этого процессора, Am2901C, использовала эмиттерно-связанную логику (ЭСЛ) для повышения быстродействия. В данной статье я препарирую Am2901C, изучу его кристалл под микроскопом и поясню, как схемы ЭСЛ позволяют реализовать арифметико-логическое устройство (АЛУ).
Многокристальный секционный микропроцессор
Вам, должно быть, интересно, как несколько процессорных чипов могут работать вместе и поддерживать слова произвольной длины. Суть в том, что микропроцессорная секция (МС) — это строительный кирпичик, а не процессор целиком, и для декодирования инструкций и управления системой ему требуются отдельные схемы. У МС были регистры, они проводили арифметические и логические операции с данными, а управляющий чип (такой, как Am2901), говорил МС, что им делать. Каждую машинную инструкцию разбивали на более мелкие шаги, микроинструкции, хранившиеся в микрокоде ROM. При этом набор инструкций определялся микрокодом, а не Am2901, поэтому поддерживать можно было практически любой набор инструкций.
Многокристальные секционные микропроцессоры (МСМ) находились где-то посередине между микропроцессорными чипами и компьютером, сделанным из простых ТТЛ-чипов. В то время собрать компьютер из ТТЛ-чипов было гораздо быстрее, чем сделать микропроцессор, однако для этого требовалось множество плат с чипами. Использование МСМ позволяло сохранить преимущество в скорости, уменьшая при этом количество используемых чипов. Также МСМ давал большую гибкость по сравнению с микропроцессором, позволяя проектировщику настраивать набор инструкций и другие архитектурные особенности.
Обзор кристалла
На фото ниже показан кристалл Am2901 и отмечены ключевые функциональные блоки. Для этого фото я удалил металлические слои, чтобы было видно кремний и транзисторы. Крупнейший функциональный блок чипа — память регистров в центре. У чипа есть 16 4-битных регистров (можно увидеть 16 столбцов и 4 строки в массиве памяти). Слева и справа от блока памяти — схемы драйвера памяти, управляющего записью и чтением.
Фото кристалла Am2901; отмечены ключевые функциональные блоки. Внешние схемы в основном состоят из буферов, преобразующих сигналы между внешними ТТЛ и внутренними ЭСЛ.
Полная блок-схема работы Am2901
Арифметико-логическое устройство (АЛУ) чипа занимается арифметическими (сложение и вычитание) и логическими операциями (AND, OR, исключающее OR). Первая секция АЛУ — крупный блок внизу слева; он состоит из четырёх рядов, поскольку это 4-битное АЛУ. Также в АЛУ есть логика, генерирующая выход переноса для сложения, и использующая быструю технику под названием «перенос с предварительным просмотром» [carry lookahead]. Затем АЛУ использует перенесённые значения для параллельной генерации суммы. Наконец выходные схемы обрабатывают и буферизуют сумму, и отправляют её на выходной контакт.
Пустые прямоугольники по краям чипа — это площадки для соединения чипа с внешним миром. Рядом с ними находятся схемы отправки и получения сигналов. В частности, поскольку чип общается с внешними схемами при помощи ТТЛ-сигналов, однако внутри использует ЭСЛ, эти схемы проводят преобразования между напряжениями ТТЛ и ЭСЛ.
У чипа есть два сдвиговых регистра, способных сдвигать слово на один бит вправо или влево. Регистр Q — 4-битный регистр, сделанный на основе триггеров. Наконец, схема опорного напряжения генерирует точные опорные напряжения, необходимые для работы ЭСЛ.
Как увидеть кристалл
Чтобы заглянуть внутрь чипа, обычно приходится растворять его пластиковый корпус в опасных кислотах. Однако я купил чип Am2901 не в пластиковом, а в керамическом корпусе. Я просто прошёлся по шву чипа со стамеской и разъединил две половинки, что позволило мне добраться до кристалла внутри. Кремниевый кристалл — это небольшой прямоугольник в центре чипа. Тонкие проводники соединяют площадки кристалла с выводной рамкой, которая ведёт к 40 внешним контактам чипа.
Am2901 после разъединения двух половинок керамического корпуса
Для получения фотографий чипа в высоком разрешении я использовал особый микроскоп, металлографический. На фото ниже видно логотип AMD. Выше — проводник, припаянный к площадке. В схеме чипа участвуют два металлических слоя, видимые справа.
Фото чипа крупным планом — видно надпись 4301X (вероятно, серийный номер) и » 1983 AMD»
Я собрал большое фото высокого разрешения из нескольких маленьких снимков с микроскопа (подробнее о процессе создания фотографий кристаллов читайте тут). Потом я удалил металлические слои и сделал ещё один набор фотографий кремния.
На фото ниже крупным планом показано четыре транзистора и три резистора. Разные участки силикона имеют разные примеси, дающие им различные свойства, и эти участки видно под микроскопом. Чип создан на основе биполярных n-p-n-транзисторов, отличающихся от МОП-транзисторов современных компьютеров. У левого транзистора размечены база (кремний p-типа), эмиттер (кремний n-типа) и коллектор (кремний p-типа) [B, E, C]. Светлые прямоугольники — это контакты кремния и металлического слоя, который раньше был сверху. У двух транзисторов справа один общий большой коллектор. На этом чипе часто встречаются транзисторы с общим коллектором.
¬Снизу находятся три резистора. Резистор получают путём добавления в кремний примесей, увеличивающих его сопротивление. Точность резисторов в ИС обычно оставляет желать лучшего. Также они получаются относительно большими — здесь они одного размера с транзисторами, иные же бывают и куда большего размера. Поэтому при проектировании ИС стараются минимизировать количество резисторов.
Эмиттерно-связанная логика
Логические схемы можно создавать весьма различными способами. Почти все современные компьютеры используют логическую систему КМОП (комплементарная структура металл-оксид-полупроводник), где вентили состоят из МОП-транзисторов. В эру миникомпьютеров очень популярной была ТТЛ. ЭСЛ была более быстрой, но менее распространённой схемой. Недостатком ЭСЛ было большее энергопотребление (суперкомпьютер Cray-2 1985 года использовал ЭСЛ-вентили для увеличения скорости работы, но его приходилось охлаждать жидким фреоном).
Первые версии Am2901 использовали ТТЛ, но в 1979 AMD представила более быстрый его вариант, Am2901C. Am2901C внутри использовал ЭСЛ для скорости, но снаружи поддерживал напряжение ТТЛ, благодаря чему его можно было легко использовать в ТТЛ-компьютерах. В этом посте как раз описывается вариант Am2901C.
ЭСЛ основана на системе дифференциальной пары — сходным образом работают операционные усилители. Идея дифференциальной пары (см. ниже) в том, что по схеме протекает фиксированный толк. Если у входа слева напряжение больше, чем справа, то левый транзистор включится и большая часть тока пойдёт через левую ветвь. И наоборот (обратите внимание, что эмиттеры транзисторов соединены — отсюда и название эмиттерно-связанной логики.
Дифференциальная пара. Если на левом входе (красном) напряжение выше, большая часть тока пойдёт по левому пути, и наоборот.
Некоторые модификации позволяют превратить дифференциальную пару в ЭСЛ-вентиль. Во-первых, напряжение в одной ветви фиксируется и становится опорным, где-то в промежутке между уровнями 0 и 1. Тогда, если вход выше опорного напряжения, он будет считаться за 1, а если ниже — за 0. Затем к ветви подсоединяют выходной транзистор (зелёный), дающий выходной сигнал путём буферизации напряжения ветви. Ниже приведена схема инвертера, поскольку, если на входе высокое напряжение, то ток через левый резистор притянет выход вниз. Для увеличения быстродействия нижний резистор заменили на сток (пурпурный), состоящий из транзистора и резистора.
ЭСЛ-инвертер. Верхний правый резистор можно опустить, поскольку он никуда не подсоединён.
Можно построить более сложный ЭСЛ-вентиль, добавив больше входов. На схеме ниже параллельно первому (1) добавлен второй входящий транзистор (2). Ток пойдёт через резистор R1, если на входе A или В будет 1 (то есть, напряжение будет выше опорного). В данном случае выход притянут вниз, и у нас получается вентиль NOR. С использованием других конфигураций можно сделать вентили AND, XOR или более сложные схемы.
NOR-вентиль на ЭСЛ
На схеме выше показан NOR-вентиль — такой, как он реализован на чипе. На фото ниже показан соответствующая физическая схема вентиля. Слева — кремниевый слой кристалла, где видно транзисторы и резисторы. Справа — металлические дорожки в той же части чипа. Сверху расположены транзисторы 1 и 2, получающие входной сигнал. У каждого из них база расположена сверху, а эмиттер — посередине. У транзисторов общий коллектор — белый прямоугольник ниже. Резисторы R1 и R2 представляют собой прямоугольники кремния. У всех транзисторов в середине (включая 3 и 4) общий коллектор, дважды соединённый с плюсом (непронумерованные транзисторы и резисторы относятся к другим вентилям).
Вентиль NOR, реализованный на кристалле Am2901
По проводникам справа видно, что верхний слой обеспечивает подводку горизонтальных проводников к плюсу, опорным напряжениям, стоку VCS и к минусу (видно, что плюс и минус сделаны более широкими, чтобы поддерживать большие токи). Под этим находятся проводники, связывающие транзисторы. Сверху входы А и В соединяются с базами транзисторов. Остальную проводку сложнее проследить, поскольку она закрыта верхним слоем. Но можно, к примеру, видеть связь между транзистором 4, коллектором транзисторов 1 и 2, и R1. Внимательно изучая фотографии кристалла, можно разобраться во всей проводке и провести обратную разработку логики чипа.
Арифметико-логическое устройство (АЛУ)
Арифметико-логическое устройство (АЛУ) в чипе Am2901 выполняет 4-битные арифметические или логические операции. Оно поддерживает 8 различных операций: сложение, вычитание и побитовые логические операции (умножением и делением оно не занимается).
На блок-схеме снизу показана структура АЛУ Am2901. Сначала селектор (мультиплексор) выбирает два входа из потенциальных источников. Значение D передаётся на контакты данных чипа, обычно на шину данных процессора. А — это значение одной из 16 записей в файле регистров чипа, выбирается контактами А0-А3; В работает сходным образом. Постоянное значение 0 можно скормить в АЛУ. Наконец, Q — это содержимое регистра Q (дополнительный отдельный регистр). Множество источников данных придаёт чипу большую гибкость.
Блок-схема АЛУ Am2901 из спецификации чипа. АЛУ выполняет одну из восьми функций на двух 4-битных входах, R и S. Справа различные выходы из чипа: G, P, выход переноса, знак, переполнение, тест нулей.
Два выбранных значения, R и S, скармливаются в АЛУ, которое производит выбранную операцию и выдаёт результат на F. Также АЛУ принимает величину переноса на вход (carry-in) и выдаёт величину переноса на выход (carry-out) (CN+4); это позволяет комбинировать несколько АЛУ для обработки более длинных слов. Выходы G и P используются для переноса с предварительным просмотром, а знак, переполнение и тест нолей можно использовать в качестве условных кодов процессора.
Кратко опишу схему АЛУ, начиная с селектора. Две первых коробочки селектора ниже (D и A) выбирают первый аргумент АЛУ, а последние три (A, Q и B) выбирают второй аргумент. Каждый селектор реализует функцию Select • (Value ⊕ Invert), где Value — потенциальное входящее значение, Select — 1 для выбора этого значения, а Invert — 1 для инвертирования значения (поскольку АЛУ 4-битный, выбираются 4 бита; каждый селектор реализован посредством четырёх вентилей ЭСЛ). Нужное значение выбирается включением одной из линий Select. Если ни одна из них не включена, то приходящее в АЛУ значение будет 0. Также селектор может инвертировать вход; чип выполняет вычитание через добавление инвертированного значения.
Первая часть АЛУ состоит из четырёх горизонтальных слоёв, по одному на бит
После выбора двух входов для АЛУ, оно вычисляет биты «Propagate» (P) и «Generate» (G) для каждой пары входящих битов. Это часть процедуры переноса с предварительным просмотром, используемой для быстрого сложения.
На фото ниже показаны оставшиеся части схемы АЛУ (для разнообразия на этом фото есть металлический слой, в отличие от предыдущих фото, где был только кремний). Сигналы P и G из предыдущей схемы проходят в два блока вычислений с переносом. Нижний блок переноса вычисляет внешние P, G, и сигнал переноса с предварительным просмотром для нескольких чипов; это позволяет быстро складывать длинные слова. Верхний блок переноса вычисляет внутренние переносы. Схема «суммы» вычисляет сумму каждого бита с использованием переноса, и значений P и G. Важно, что благодаря переносу с предварительным просмотром сумму каждого бита можно вычислять параллельно. Наконец, выходной контур преобразует внутренние сигналы ЭСЛ в сигналы ТТЛ и управляет четырьмя выходными контактами.
Остаток схемы АЛУ
Чип использует некоторые интересные техники, позволяющие использовать сумматор для восьми операций. Описанная ранее схема селектора может по желанию дополнять его вход. Это используется для вычитания, а также для некоторых из логических функций. При вычислении логических функций (вместо сложения/вычитания), вычисление переноса отключается. Во время выполнения логических операций на биты не влияет то, что происходит с другими битами. Наконец, схема XOR сумматора превращается в схему AND через увеличение сигналов P до максимума. Таким образом вместо использования восьми разных схем для восьми операций АЛУ, чип использует единую схему с некоторыми тщательно выбранными свойствами.
Заключение
Чип Am2901C представляет интерес как пример высокоскоростной ЭСЛ, относительно редкого логического семейства. Чип АЛУ распределён по нижней части кристалла, реализует восемь разных функций, и использует перенос с предварительным просмотром для ускорения работы. Хотя чип довольно сложный, тщательное разглядывание под микроскопом помогает разобраться в его работе.
Многокристальные секционные процессоры, такие, как Am2901, использовались в микрокомпьютерах и многих других системах в 1970-х и 1980-х. Однако в конце концов улучшения в технологии КМОП позволили реализовать быстрый процессор на едином чипе, что сделало эту технологию устаревшей. И хотя в Am2901 содержится, возможно, около тысячи транзисторов, и он работает на 16 МГц, сегодня AMD производит процессоры, содержащие миллиарды транзисторов и работающие на частоте 4 ГГц.