Внутри ALU-чипа 74181: фотографии кристалла и реверс-инжиниринг

от автора

Что находится внутри TTL-чипа? Чтобы разобраться, я вскрыл ALU-чип 74181, сделал фотографии кристалла в высоком разрешении и провёл его реверс-инжиниринг.(примеч 1) Внутри обнаружилось несколько типов логических элементов, реализованных на любопытных схемах и необычных транзисторах. 74181 был популярным чипом 1970-х: его использовали для вычислений в арифметико-логических устройствах (ALU) мини-ЭВМ. Это чип средней сложности: в нём около 67 логических элементов и 170 транзисторов(примеч 3), реализованных на быстрой и популярной для своего времени TTL-логике — transistor-transistor logic.

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

На первый взгляд кристалл может казаться безнадёжно сложным, но если разбирать его внимательно, можно понять, как он работает.

Фотография кристалла микросхемы АЛУ 74181. Полная версия откроется по ссылке.

Фотография кристалла микросхемы АЛУ 74181. Полная версия откроется по ссылке.

Чип 74181 важен прежде всего своей ролью в истории мини-ЭВМ. До эпохи микропроцессоров процессоры мини-ЭВМ собирали из плат с отдельными микросхемами. Арифметические операции — сложение и вычитание — и логические операции вроде AND, OR и XOR выполняло арифметико-логическое устройство процессора, ALU. В ранних мини-ЭВМ ALU строили из большого количества простых логических элементов.

Но в марте 1970 года Texas Instruments представила микросхему 74181 Arithmetic / Logic Unit (ALU): полноценное 4-битное ALU в одном быстром TTL-чипе.(примеч 4) Этот чип поддерживал 32 арифметические(примеч 5) и логические(примеч 2) функции, а также быстрый упреждающий перенос.(примеч 7) 74181 упрощал конструкцию процессора мини-ЭВМ и делал её компактнее, поэтому чип использовали во многих машинах: от популярных мини-ЭВМ PDP-11 и NOVA до мощной VAX-11/780 и настольного компьютера Datapoint 2200. Даже сегодня 74181 встречается в ретрохакерских проектах.(примеч 6)

Краткий экскурс в NPN-транзисторы

74181 построен на биполярных NPN-транзисторах — это другая технология, не та, что MOS-транзисторы в современных процессорах. На схеме ниже показано, как NPN-транзистор выглядит в интегральной схеме, вместе с его поперечным сечением. У транзистора три вывода: коллектор, база и эмиттер; к каждому подходит своя металлическая дорожка. Коллектор соединён с кремнием N-типа, база — с кремнием P-типа, а эмиттер — снова с кремнием N-типа; отсюда и структура NPN.

На кристалле эмиттер можно узнать по вложенным квадратам, базу — по области кремния, которая окружает эмиттер, а коллектор — по самому крупному контакту.

Структура NPN-транзистора представлена ​​в интегральной схеме.

Структура NPN-транзистора представлена ​​в интегральной схеме.

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

Это очень сильное упрощение: биполярные транзисторы гораздо более «аналоговые» по своей природе. Но для понимания работы 74181 такого объяснения достаточно. Справа показано условное обозначение NPN-транзистора с подписанными коллектором, базой и эмиттером.

Инвертор

Базовый элемент TTL-логики — инвертор, а остальные логические элементы можно рассматривать как модификации его схемы. Поэтому важно разобраться, как устроен инвертор, хотя схема у него не самая простая. Я объясню её работу в упрощённом виде.(примеч 9)

На схеме ниже показан инвертор в чипе 74181. Линии 5 В и земли проходят вертикально слева и питают инвертор. Транзисторы выделены рамками. Резисторы видны как длинные извилистые полоски легированного кремния.(примеч 11) Входной вывод A0 подключён к контактной площадке. Справа приведена схема TTL-инвертора(примеч 10); её компоненты выделены так, чтобы их можно было сопоставить с фотографией кристалла

Инвертор в микросхеме АЛУ 74181, а также принципиальная схема, показывающая компоненты инвертора.

Инвертор в микросхеме АЛУ 74181, а также принципиальная схема, показывающая компоненты инвертора.

Вход подключён к транзистору Q1, выделенному красным. Этот транзистор используется необычным образом: он работает как транзистор, «направляющий» ток. Если на входе низкий уровень, ток через R1 уходит через эмиттер Q1 на вход, и Q2 остаётся закрытым. Если на входе высокий уровень, ток через R1 течёт «назад» — из коллектора Q1 в базу Q2 — и открывает Q2.

Транзистор Q2, выделенный оранжевым, можно считать фазоинвертором: он следит за тем, чтобы был открыт ровно один из выходных транзисторов, Q3 или Q4. Иначе говоря, они включаются в противофазе. Если Q2 закрыт, R2 подаёт ток, который открывает Q3, выделенный жёлтым, и тот подтягивает выход к высокому уровню. В это же время R3 закрывает Q4. Если же Q2 открыт, он даёт достаточно тока, чтобы открыть Q4, выделенный зелёным, и тот притягивает выход к низкому уровню. Диоды я поясню в сноске.(примеч 12)

Схема 74181

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

На схеме выделены разные типы логических элементов. Несколько инверторов, отмеченных красным, инвертируют входные сигналы. Основная часть логики построена на элементах AND-OR-INVERT. Ступени AND показаны синим, а ступени OR-INVERT, то есть NOR, — зелёным. Некоторые ступени OR-INVERT на схеме не прорисованы явно и показаны пустыми блоками. Для вычисления сумм чип использует несколько XOR-элементов, выделенных фиолетовым. Наконец, жёлтым отмечена пара нестандартных элементов.

Схема АЛУ 74181

Схема АЛУ 74181

Эту схему можно сопоставить с размеченной фотографией кристалла ниже. Удобно, что топология кристалла в целом соответствует схеме. Большую часть чипа занимают элементы AND-OR-INVERT. Также обратите внимание, сколько места на кристалле отведено под резисторы. Выводы чипа подписаны синим текстом. Для этой фотографии металлический слой удалили, чтобы лучше было видно нижележащую схему.

Схема АЛУ 74181 с указанием типов основных логических элементов.

Схема АЛУ 74181 с указанием типов основных логических элементов.

AND-OR-INVERT

Большая часть логики 74181 реализована на элементах AND-OR-INVERT: это несколько элементов AND, подключённых к NOR, как показано ниже. После знакомства с инвертором можно ожидать, что AND-OR-INVERT окажется очень сложной схемой. Но, как видно на схеме ниже(примеч 14), такой элемент ненамного сложнее инвертора: ему нужно всего несколько дополнительных транзисторов.

Элемент AND реализован добавлением дополнительных эмиттеров к входному транзистору, который направляет ток, — он выделен красным. Это может выглядеть очень странно, но транзисторы с несколькими эмиттерами в TTL-схемах встречаются часто. Если на всех входах высокий уровень, ток базы направляется к коллектору. В остальных случаях ток базы уходит через эмиттер. Так и получается логическое AND по входам.

NOR реализован параллельным включением фазоинверторных транзисторов, выделенных оранжевым. Если на любой из баз высокий уровень, соответствующий транзистор — Q2A или Q2B — открывается и притягивает выход к низкому уровню. На схеме ниже показана схема с двумя элементами AND, но её легко расширить до нужного числа элементов и входов.

Схема И-ИЛИ-Инвертирование на микросхеме 7451. Многоэмиттерные транзисторы, реализующие операцию И, выделены красным цветом. Транзисторы, реализующие операцию ИЛИ, выделены оранжевым цветом.

Схема И-ИЛИ-Инвертирование на микросхеме 7451. Многоэмиттерные транзисторы, реализующие операцию И, выделены красным цветом. Транзисторы, реализующие операцию ИЛИ, выделены оранжевым цветом.

На схеме ниже показано, как такие многоэмиттерные транзисторы реализованы на кристалле. Видны три транзистора, у каждого по четыре или пять эмиттеров — тёмные квадраты. Так получаются AND-элементы с четырьмя или пятью входами. База каждого транзистора находится сверху, коллектор — снизу. Сигнальные линии идут горизонтально, а эмиттеры подключаются к ним там, где это нужно.

Такая структура позволяет компактно размещать на кристалле несколько AND-элементов — примерно как в программируемой логической матрице, PLA. Обратите внимание, что базовые резисторы занимают заметную часть площади кристалла.

Три логических элемента И в микросхеме АЛУ 74181. Каждый из них представляет собой отдельный транзистор с несколькими эмиттерами.

Три логических элемента И в микросхеме АЛУ 74181. Каждый из них представляет собой отдельный транзистор с несколькими эмиттерами.

На схеме ниже показано, как часть OR-INVERT выглядит на кристалле. Обратите внимание: у Q2A и Q2B, выделенных оранжевым, общий коллектор, поэтому два транзистора занимают на кристалле совсем немного места. Их входы приходят от AND-схем вроде тех, что показаны выше. OR-элементы с тремя и четырьмя входами реализованы так же — за счёт добавления дополнительных транзисторов.

Этап ИЛИ-ИНВЕРТ в логическом элементе И-ИЛИ-ИНВЕРТ в микросхеме 74181 в сравнении с логическим элементом И-ИЛИ-ИНВЕРТ в микросхеме 7451.

Этап ИЛИ-ИНВЕРТ в логическом элементе И-ИЛИ-ИНВЕРТ в микросхеме 74181 в сравнении с логическим элементом И-ИЛИ-ИНВЕРТ в микросхеме 7451.

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

Работает это так: если на первом входе высокий уровень, а на втором низкий, первый транзистор открывается за счёт тока база-эмиттер. Через этот транзистор выход притягивается к низкому уровню, при этом второй вход фактически играет роль земли. Аналогично, если на первом входе низкий уровень, а на втором высокий, открывается второй транзистор и притягивает выход к низкому уровню. Если оба входа одинаковые, тока база-эмиттер нет, оба транзистора остаются закрытыми, а резистор подтягивает выход к высокому уровню.

Выход транзисторной пары затем подаётся на стандартный инверторный каскад, так что итоговый сигнал равен XOR двух входов.(примеч 15) Как и в OR-INVERT, у двух транзисторов общий коллектор, что делает топологию компактнее.

Схема, используемая в микросхеме 74181 для вычисления операции XOR. Дизайн вдохновлен моделью userbinator.

Схема, используемая в микросхеме 74181 для вычисления операции XOR. Дизайн вдохновлен моделью userbinator.

На фотографии стоит отметить несколько деталей. У двух транзисторов общий коллектор, что эквивалентно соединению их коллекторов проводником. Подтягивающего резистора на снимке не видно: он находится правее. Входы XOR приходят от элементов AND-OR-INVERT; их выходные транзисторы расположены в верхней части фотографии.

NOT-AND

В чипе используются четыре AND-элемента с одним инвертированным входом.¹⁷ На первый взгляд кажется, что на кристалле они реализованы обычными AND-транзисторами, но для инверсии одного из входов здесь применён интересный приём. Транзистор Q1 включён обычным образом — как транзистор, направляющий ток; R1 задаёт ток базы. А вот у транзистора Q2 резистор подключён к коллектору, а не к базе.(примеч 16)

В нормальном состоянии R2 подтягивает выход к высокому уровню. Но если на входе X высокий уровень, а на входе Y низкий, ток через R1 пойдёт через коллектор Q1 и эмиттер Q2, откроет Q2 и притянет выход к низкому уровню. Поэтому после инверторного каскада получается X AND NOT Y.

В микросхеме 74181 используется интересная схема для генерации логического элемента НЕ-И. В ней применяются многоэмиттерные транзисторы, но несколько иным способом, чем в логических элементах И.

В микросхеме 74181 используется интересная схема для генерации логического элемента НЕ-И. В ней применяются многоэмиттерные транзисторы, но несколько иным способом, чем в логических элементах И.

Как я получил фотографии кристалла

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

ALU-чип 74181 в керамическом корпусе.

ALU-чип 74181 в керамическом корпусе.

Я постучал по шву чипа зубилом, и корпус раскололся на две части. Ниже видно, как металлические выводы закреплены между слоями корпуса и соединены с кремниевым кристаллом тончайшими проволочками.

Если аккуратно постучать по 74181 зубилом, керамический корпус можно раскрыть.

Если аккуратно постучать по 74181 зубилом, керамический корпус можно раскрыть.

Для съёмки кристалла я использовал металлографический микроскоп — специальный тип микроскопа, который светит вниз через объектив и освещает чип сверху. Я сделал 22 снимка, а затем с помощью программы Hugin склеил их в одно изображение высокого разрешения.

После этого я удалил с чипа металлический слой соляной кислотой и сделал ещё несколько снимков — так получилась фотография ниже. Когда металл удалён, проще рассмотреть структуру кремниевого слоя и понять, как работает чип.

Удаление металлического слоя с чипа 74181 с помощью HCl открывает лежащий под ним кремниевый слой. Полная версия открывается по ссылке.

Удаление металлического слоя с чипа 74181 с помощью HCl открывает лежащий под ним кремниевый слой. Полная версия открывается по ссылке.

Заключение

ALU-чип 74181 — сложная и производительная TTL-микросхема, которая была ключевым компонентом процессоров во многих мини-ЭВМ. Я сделал подробные фотографии кристалла 74181 ALU, и по ним видно, как чип устроен изнутри. В нём используется несколько типов логических элементов, прежде всего AND-OR-INVERT: они эффективно размещаются на кристалле. Эти элементы получаются за счёт разных расширений схемы инвертора, но они сложнее своих MOS-аналогов.

Примечания и ссылки

  1. Чтобы понять, что находится внутри TTL-чипа, возможно, разумнее было бы начать с простой микросхемы, например NAND-элемента. Но зачем выбирать лёгкий путь, если можно сразу залезть в сложный чип?

2. Многие из 32 функций 74181 выглядят странно, но на самом деле за ними стоит система. Обратите внимание: для двух одноразрядных двоичных входов A и B существует ровно 16 возможных функций. В таблице истинности 4 строки, и для каждой строки есть два варианта выхода, значит всего получается 2⁴ возможных функции. 16 логических функций 74181 — это как раз эти 16 функций, расширенные до 4 бит. А 16 арифметических функций 74181 имеют вид: A PLUS одна из 16 возможных функций от A и B PLUS входной перенос.

3. В разных источниках указано, что в 74181 то ли 61, то ли 75 логических элементов. На схеме их 67. Если не считать пять одно-входовых AND-элементов, получится 62. На кристалле я насчитал 169 транзисторов, но вполне мог что-то пропустить.

4. История чипа 74181 подробно описана на этом сайте. По-видимому, 74181 был первым созданным ALU-чипом. В 1968 году Fairchild выпустила 3800 — 8-битный аккумуляторный чип, но в нём не было логических функций, так что технически это был AU, Arithmetic Unit, а не ALU вроде 74181. До 74181 существовал 4-битный сумматор 7483, выпущенный в 1968 году; внутри он похож на нижнюю половину 74181. 7483 использовали в мини-ЭВМ, например PDP-8/E.

5. ALU-чипы той эпохи не выполняли умножение и деление, не говоря уже об операциях с плавающей точкой. Умножение и деление в компьютерах того времени встречались часто, но обычно выполнялись за несколько циклов сложения или вычитания. Единственная операция, которой, кажется, не хватает в 74181, — сдвиг вправо. Зато он умеет делать сдвиг влево через A PLUS A.

6. Среди ретропроектов на 74181 — APOLLO181 CPU, Fourbit CPU4 Bit TTL CPUMagic-1 на 74F381, TREXMark 1 FORTH и Big Mess o’ Wires

7. Когда несколько чипов 74181 соединены для работы с более длинными словами, можно просто подать выходной перенос одного чипа на входной перенос следующего. Для большей производительности можно использовать генератор упреждающего переноса 74182: он вычисляет переносы для нескольких чипов параллельно. Некоторые мини-ЭВМ, например Xerox Alto, не использовали 74182, а другие, например Interdata 7/16, использовали.

8. Здесь я дам краткий обзор реализации чипа. В основе его работы лежит идея упреждающего переноса. В частности, верхние элементы AND-OR-INVERT формируют сигналы переноса P, propagate, и G, generate, для каждого бита выражения A PLUS f(A,B). Нижние элементы AND-OR-INVERT используют эти сигналы, чтобы вычислить перенос для каждого бита суммы. Наконец, XOR-элементы складывают P, G и перенос, получая итоговый бит суммы. Смысл такой реализации — вычислять все четыре бита параллельно и избежать медленного последовательного распространения переноса. В следующей статье я подробно разберу эту схему.

9. Я упростил объяснение TTL-логики, поскольку большинству читателей, вероятно, не особенно важны насыщение, β, смещение и прочие детали. Если нужен полный разбор, см. Logic gates: the NOT gate или Transistor-Transistor Logic. В этой презентации есть схемы разных логических элементов и семейств TTL-логики.

10. Схема инвертора взята из даташита распространённого чипа-инвертора 7404. Интересно, что базовая схема инвертора почти полностью совпадает со схемой, используемой внутри 74181. Это верно для большинства схем в 74181: они похожи на отдельные TTL-микросхемы. Транзисторы 74181 немного меньше, потому что внутри чипа не нужен такой большой ток, но масштабирование куда меньше, чем можно было бы ожидать.

11. В инверторе 74181 R4 не используется: его место занимает R1. Вероятно, это связано с тем, что инвертору внутри чипа не нужно выдавать такой же ток, как отдельной микросхеме-инвертору 7404.

12. Самая хитрая часть схемы инвертора в том, что при открытии Q2 напряжения хватает, чтобы открыть Q4, но не Q3 — благодаря диоду D2. Назначение D2 не в том, чтобы проводить ток в одном направлении, как обычно ожидают от диода. Здесь он нужен, чтобы поднять напряжение на эмиттере Q3 на одно падение напряжения на диоде, примерно на 0,7 В. В результате для открытия Q3 требуется на 0,7 В больше на базе. Поэтому, когда Q2 активен, напряжения достаточно для открытия Q4, но недостаточно для открытия Q3. А D1 просто защищает чип, шунтируя на землю любое отрицательное входное напряжение.

13. Схема основана на диаграмме Poil с WikiMedia, лицензия CC BY-SA 3.0; я изменил подписи и выделил логические элементы.

14. Схема AND-OR-INVERT слегка изменена относительно чипа 7451 AND-OR-INVERT, чтобы соответствовать схеме 74181. В нижней половине 74181 элементы AND-OR-INVERT не используют подтягивающий выходной транзистор, который есть в 7451, поскольку внутри 74181 не нужен такой большой выходной ток. При этом выходной диод остаётся: он снижает напряжение на коллекторе фазоинверторного транзистора на одно падение напряжения на диоде, иначе низкий уровень на выходе будет слишком высоким.

15. Схема, используемая в 74181 для exclusive-OR, похожа на TTL-чип XOR 7486.

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

17. В некоторых даташитах (пример) вместо NOT-AND показан XOR-элемент. Может возникнуть вопрос: как такое вообще может работать, если XOR и NOT-AND — разные функции? Ответ в том, что одна из четырёх входных комбинаций в 74181 никогда не возникает, а на трёх остальных комбинациях эти элементы эквивалентны. Физически схема реализована именно как NOT-AND, а не как XOR.

ссылка на оригинал статьи https://habr.com/ru/articles/1041224/