Pull to refresh

Внутри многокристального секционного микропроцессора Am2901 от AMD 1970-х годов

Reading time13 min
Views18K
Original author: Ken Shirriff
Внутри многокристального секционного микропроцессора 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, изучу его кристалл под микроскопом и поясню, как схемы ЭСЛ позволяют реализовать арифметико-логическое устройство (АЛУ).

Кстати, в документации на Atari Battlezone нет никаких упоминаний конкретной модели чипа Am2901, однако есть сноска на номер запчасти 137004-001, которую там называют «транзисторным массивом». Более того, в приведённой схеме распиновки чипа допущены намеренные искажения, и показано 20 адресных контактов и 8 контактов данных, чтобы чип выглядел, как ROM (в отличие от, например, чипов серии 7400, описанных точно). Возможно, Atari пыталась предотвратить клонирование своих видеоигр, скрывая модели некоторых ключевых чипов.

Популярной альтернативой для Am2901 во многих микрокомпьютерах был чип 74181 АЛУ. Он обеспечивал те же арифметические и логические функции, что и Am2901, но не его регистры.

Многокристальный секционный микропроцессор


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

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

Является ли Am2901 микропроцессором? С моей точки зрения, Am2901 – это лишь часть процессора, однако всё зависит от того, как определять «микропроцессор» (я подробно описал свои мысли по этому поводу в отдельной статье). Интересно, что в СССР больше склонялись в сторону секционных микропроцессоров, чем в США. И если на Западе словом «микропроцессор» обычно обозначают процессор на единственном чипе, в СССР процессоры на одном чипе или из нескольких секций обычно не различали.

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

Обзор кристалла


На фото ниже показан кристалл Am2901 и отмечены ключевые функциональные блоки. Для этого фото я удалил металлические слои, чтобы было видно кремний и транзисторы. Крупнейший функциональный блок чипа – память регистров в центре. У чипа есть 16 4-битных регистров (можно увидеть 16 столбцов и 4 строки в массиве памяти). Слева и справа от блока памяти – схемы драйвера памяти, управляющего записью и чтением.


Фото кристалла Am2901; отмечены ключевые функциональные блоки. Внешние схемы в основном состоят из буферов, преобразующих сигналы между внешними ТТЛ и внутренними ЭСЛ.


Полная блок-схема работы Am2901

Арифметико-логическое устройство (АЛУ) чипа занимается арифметическими (сложение и вычитание) и логическими операциями (AND, OR, исключающее OR). Первая секция АЛУ – крупный блок внизу слева; он состоит из четырёх рядов, поскольку это 4-битное АЛУ. Также в АЛУ есть логика, генерирующая выход переноса для сложения, и использующая быструю технику под названием «перенос с предварительным просмотром» [carry lookahead]. Затем АЛУ использует перенесённые значения для параллельной генерации суммы. Наконец выходные схемы обрабатывают и буферизуют сумму, и отправляют её на выходной контакт.

Перенос с предварительным просмотром использует сигналы Generate и Propagate для определения того, выдаёт ли бит на каждой из позиций свой перенос или передаёт дальше входящий. К примеру, если вы складываете 0+0+C (С – перенос), из этого сложения перенос никак не устранить, вне зависимости от его величины. С другой стороны, если вы складываете 1+1+C, перенос будет появляться в любом случае, вне зависимости от того, чему равен С. Наконец, в случаях 0+1+C (или 1+0+C) перенос будет передаваться дальше, если С был ненулевым. В итоге простые логические вентили создают для каждого бита сигнал G (Generate) если оба бита равны 1, и сигнал P (Propagate), если только оба бита не равны 0.

Формула вычисления переноса зависит от местоположения бита. К примеру, рассмотрим перенос с бита 0 на бит 1. Он произойдёт, если взведён флаг P0 (то есть, перенос возник или передаётся), и если в этом бите появился свой перенос, или он пришёл к нему с других битов. Тогда C1 = P0 AND (Cin OR G0). В переносах более высокого порядка количество вариантов растёт, и их сложность постоянно увеличивается. К примеру, рассмотрим перенос на бит 2. Во-первых должен быть взведён P1, чтобы перенос шёл с бита 1. Кроме того, перенос был либо создан битом 1, либо передан с бита 0. Наконец, первый перенос тоже должен был откуда-то взяться: это был либо пришедший от бита 0 перенос, либо перенос, сгенерированный битом 1. Если собрать всё это в формулу, получается функция, использованная в Am2901: C2 = P1 AND (G1 OR P0) AND (C0 OR G0 OR G1). Формулы для различных переносов и внешних P и G приведены в спецификации, рис. 9.

Пустые прямоугольники по краям чипа – это площадки для соединения чипа с внешним миром. Рядом с ними находятся схемы отправки и получения сигналов. В частности, поскольку чип общается с внешними схемами при помощи ТТЛ-сигналов, однако внутри использует ЭСЛ, эти схемы проводят преобразования между напряжениями ТТЛ и ЭСЛ.

У чипа есть два сдвиговых регистра, способных сдвигать слово на один бит вправо или влево. Регистр Q – 4-битный регистр, сделанный на основе триггеров. Наконец, схема опорного напряжения генерирует точные опорные напряжения, необходимые для работы ЭСЛ.

Как увидеть кристалл


Чтобы заглянуть внутрь чипа, обычно приходится растворять его пластиковый корпус в опасных кислотах. Однако я купил чип Am2901 не в пластиковом, а в керамическом корпусе. Я просто прошёлся по шву чипа со стамеской и разъединил две половинки, что позволило мне добраться до кристалла внутри. Кремниевый кристалл – это небольшой прямоугольник в центре чипа. Тонкие проводники соединяют площадки кристалла с выводной рамкой, которая ведёт к 40 внешним контактам чипа.


Am2901 после разъединения двух половинок керамического корпуса

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


Фото чипа крупным планом – видно надпись 4301X (вероятно, номер детали) и «1983 AMD»

Я собрал большое фото высокого разрешения из нескольких маленьких снимков с микроскопа (подробнее о процессе создания фотографий кристаллов читайте тут). Потом я удалил металлические слои и сделал ещё один набор фотографий кремния.

На фото ниже крупным планом показано четыре транзистора и три резистора. Разные участки силикона имеют разные примеси, дающие им различные свойства, и эти участки видно под микроскопом. Чип создан на основе биполярных n-p-n-транзисторов, отличающихся от МОП-транзисторов современных компьютеров. У левого транзистора размечены база (кремний p-типа), эмиттер (кремний n-типа) и коллектор (кремний n-типа) [B, E, C]. Светлые прямоугольники – это контакты кремния и металлического слоя, который раньше был сверху. У двух транзисторов справа один общий большой коллектор. На этом чипе часто встречаются транзисторы с общим коллектором.



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

Эмиттерно-связанная логика


Логические схемы можно создавать весьма различными способами. Почти все современные компьютеры используют логическую систему КМОП (комплементарная структура металл-оксид-полупроводник), где вентили состоят из МОП-транзисторов. В эру миникомпьютеров очень популярной была ТТЛ. ЭСЛ была более быстрой, но менее распространённой схемой. Недостатком ЭСЛ было большее энергопотребление (суперкомпьютер Cray-2 1985 года использовал ЭСЛ-вентили для увеличения скорости работы, но его приходилось охлаждать жидким фреоном).

Большая часть преимуществ ЭСЛ в скорости была связана с тем, что транзисторы включались не полностью. Это позволяло транзисторам очень быстро менять пути прохождения тока. Кроме того, разница между напряжением для значений 0 и 1 была небольшой (порядка 0,8 В), поэтому сигналы могли переключаться туда и сюда довольно быстро. К примеру, у ТТЛ-вентилей разница в напряжениях составляет порядка 3,2 В (сигналы способны переключаться со скоростью около 1 В в наносекунду, поэтому при большой разнице в напряжениях возникают задержки в несколько наносекунд). С другой стороны, небольшая разница в напряжениях приводила к повышению чувствительности ЭСЛ к электрическому шуму.

Первые версии Am2901 использовали ТТЛ, но в 1979 AMD представила более быстрый его вариант, Am2901C. Am2901C внутри использовал ЭСЛ для скорости, но снаружи поддерживал напряжение ТТЛ, благодаря чему его можно было легко использовать в ТТЛ-компьютерах. В этом посте как раз описывается вариант Am2901C.

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


Дифференциальная пара. Если на левом входе (красном) напряжение выше, большая часть тока пойдёт по левому пути, и наоборот.

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

Сток внизу ЭСЛ-вентиля даёт, по сути, постоянный ток, контролируемый входящим напряжением VCS. Этот вариант лучше простого резистора, поскольку ток через резистор меняется в зависимости от напряжения, зависящего от входящих напряжений. Также такая схема экономит место, так как использует меньший резистор.


ЭСЛ-инвертер. Верхний правый резистор можно опустить, поскольку он никуда не подсоединён.

Можно построить более сложный ЭСЛ-вентиль, добавив больше входов. На схеме ниже параллельно первому (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. Также селектор может инвертировать вход; чип выполняет вычитание через добавление инвертированного значения.


Первая часть АЛУ состоит из четырёх горизонтальных слоёв, по одному на бит

На диаграмме ниже показана схема AND-XOR, использующаяся в АЛУ AM2901, реализующая операцию A' • (B ⊕ C). Кратко опишу, как она работает. Если напряжение на входе А высокое, ток идёт через левые транзисторы, притягивая выход вниз. Если на В и С высокое напряжение, ток через левые транзисторы В и С притягивает выход вниз. Если напряжение на В и С низкое, ток через транзисторы Vref притягивает выход вниз. Если на В и С разное напряжение, ток идёт с транзисторов +, и на выходе остаётся высокое напряжение. Суть в том, что единственный ЭСЛ-вентиль может реализовывать сложную функциональность. При помощи большей части логических элементов XOR реализовать труднее. Мне лично логика ЭСЛ напоминает реле 1920-х годов, поскольку он переключается между двумя путями тока, а не просто включается и выключается.



После выбора двух входов для АЛУ, оно вычисляет биты «Propagate» (P) и «Generate» (G) для каждой пары входящих битов. Это часть процедуры переноса с предварительным просмотром, используемой для быстрого сложения.

На фото ниже показаны оставшиеся части схемы АЛУ (для разнообразия на этом фото есть металлический слой, в отличие от предыдущих фото, где был только кремний). Сигналы P и G из предыдущей схемы проходят в два блока вычислений с переносом. Нижний блок переноса вычисляет внешние P, G, и сигнал переноса с предварительным просмотром для нескольких чипов; это позволяет быстро складывать длинные слова.

Технику переноса с предварительным просмотром можно реализовывать на нескольких чипах для быстрого суммирования чисел больших, чем 4 бита. Каждый чип выдаёт сигналы Generate и Propagate, сообщая, сгенерирует ли он перенос или передаст ли входящий перенос. Эти сигналы комбинируются чипом-генератором переноса с предварительным просмотром – таким, как у Am2902.

Верхний блок переноса вычисляет внутренние переносы. Схема «суммы» вычисляет сумму каждого бита с использованием переноса, и значений P и G. Важно, что благодаря переносу с предварительным просмотром сумму каждого бита можно вычислять параллельно. Наконец, выходной контур преобразует внутренние сигналы ЭСЛ в сигналы ТТЛ и управляет четырьмя выходными контактами.


Остаток схемы АЛУ

Чип использует некоторые интересные техники, позволяющие использовать сумматор для восьми операций. Описанная ранее схема селектора может по желанию дополнять его вход. Это используется для вычитания, а также для некоторых из логических функций. При вычислении логических функций (вместо сложения/вычитания), вычисление переноса отключается. Во время выполнения логических операций на биты не влияет то, что происходит с другими битами. Наконец, схема XOR сумматора превращается в схему AND через увеличение сигналов P до максимума. Таким образом вместо использования восьми разных схем для восьми операций АЛУ, чип использует единую схему с некоторыми тщательно выбранными подстройками.

Чип использует значения P и G для генерирования суммы входов R и S с переносом С. Сумма (R ⊕ S ⊕ C)', вычисляется, как ((P' ∨ G) ⊕ C)', где P = R∨S, а G = R•S. Если P равняется 1, то (P' ∨ G) сводится к G, равному R•S. Получается, что, меняя P, одну и ту же схему можно использовать для вычисления AND от входящих значений R и S.

В таблице ниже показаны 8 операций, выполняемых АЛУ. Три бита инструкций скармливаются чипу и используются для выбора операции: I5, I4 и I3. В столбце «функция» показаны функции согласно документации, а в столбце «вычисление» показано, как вычисляется каждый из битов. Отметьте, что все операции в итоге сводятся к исключающим OR (⊕) или AND (∧). Сложение осуществляется побитовым XOR двух аргументов и битов переноса. Вычитание осуществляется через дополнение аргумента и последующее сложение. К примеру, добавить дополнение R (R') – это то же самое, что вычесть R. Бит I3 дополняет R, а бит I4 дополняет S. Операции с исключающим OR (EXOR и EXNOR) используют те же элементы, что и сложение, но с блокировкой вычисления переноса. Операция AND проводится через блокировку сигнала G. Наконец, OR вычисляется по закону де Моргана, R' ∧ S' = (R ∨ S)'. Смысл в том, что Am2901 не требуются отдельные элементы для сложения, вычитания, AND, OR и EXOR – большая часть элементов используется в каждой из операций.

Символическая запись I5 I4 I3 Функция Вычисление
ADD 0 0 0 R Plus S R ⊕ S ⊕ Carry
SUBR 0 0 1 S Minus R R' ⊕ S ⊕ Carry
SUBS 0 1 0 R Minus S R ⊕ S' ⊕ Carry
OR 0 1 1 R OR S (R' ∧ S') ⊕ 1
AND 1 0 0 R AND S R ∧ S
NOTRS 1 0 1 R' AND S R' ∧ S
EXOR 1 1 0 R EX OR S R ⊕ S' ⊕ 1
EXNOR 1 1 1 R EX NOR S R' ⊕ S' ⊕ 1


Заключение


Чип Am2901C представляет интерес как пример высокоскоростной ЭСЛ, относительно редкого логического семейства. Чип АЛУ распределён по нижней части кристалла, реализует восемь разных функций, и использует перенос с предварительным просмотром для ускорения работы. Хотя чип довольно сложный, тщательное разглядывание под микроскопом помогает разобраться в его работе.

Многокристальные секционные процессоры, такие, как Am2901, использовались в микрокомпьютерах и многих других системах в 1970-х и 1980-х. Однако в конце концов улучшения в технологии КМОП позволили реализовать быстрый процессор на едином чипе, что сделало эту технологию устаревшей. И хотя в Am2901 содержится, возможно, около тысячи транзисторов, и он работает на 16 МГц, сегодня AMD производит процессоры, содержащие миллиарды транзисторов и работающие на частоте 4 ГГц.
Tags:
Hubs:
If this publication inspired you and you want to support the author, do not hesitate to click on the button
Total votes 26: ↑25 and ↓1+24
Comments3

Articles