Что находится внутри TTL-чипа? Чтобы разобраться, я вскрыл ALU-чип 74181, сделал фотографии кристалла в высоком разрешении и провёл его реверс-инжиниринг.(примеч 1) Внутри обнаружилось несколько типов логических элементов, реализованных на любопытных схемах и необычных транзисторах. 74181 был популярным чипом 1970-х: его использовали для вычислений в арифметико-логических устройствах (ALU) мини-ЭВМ. Это чип средней сложности: в нём около 67 логических элементов и 170 транзисторов(примеч 3), реализованных на быстрой и популярной для своего времени TTL-логике — transistor-transistor logic.
Ниже — фотография кристалла 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-транзистора в том, что он работает как переключатель между коллектором и эмиттером, а управляет этим переключателем база. В обычном состоянии ток между коллектором и эмиттером не течёт — как будто переключатель находится в положении «выключено». Но если пропустить небольшой ток от базы к эмиттеру, транзистор позволит идти гораздо большему току от коллектора к эмиттеру — как переключатель в положении «включено».
Это очень сильное упрощение: биполярные транзисторы гораздо более «аналоговые» по своей природе. Но для понимания работы 74181 такого объяснения достаточно. Справа показано условное обозначение NPN-транзистора с подписанными коллектором, базой и эмиттером.
Инвертор
Базовый элемент TTL-логики — инвертор, а остальные логические элементы можно рассматривать как модификации его схемы. Поэтому важно разобраться, как устроен инвертор, хотя схема у него не самая простая. Я объясню её работу в упрощённом виде.(примеч 9)
На схеме ниже показан инвертор в чипе 74181. Линии 5 В и земли проходят вертикально слева и питают инвертор. Транзисторы выделены рамками. Резисторы видны как длинные извилистые полоски легированного кремния.(примеч 11) Входной вывод A0 подключён к контактной площадке. Справа приведена схема TTL-инвертора(примеч 10); её компоненты выделены так, чтобы их можно было сопоставить с фотографией кристалла
Вход подключён к транзистору 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-элементов, выделенных фиолетовым. Наконец, жёлтым отмечена пара нестандартных элементов.
Эту схему можно сопоставить с размеченной фотографией кристалла ниже. Удобно, что топология кристалла в целом соответствует схеме. Большую часть чипа занимают элементы AND-OR-INVERT. Также обратите внимание, сколько места на кристалле отведено под резисторы. Выводы чипа подписаны синим текстом. Для этой фотографии металлический слой удалили, чтобы лучше было видно нижележащую схему.
AND-OR-INVERT
Большая часть логики 74181 реализована на элементах AND-OR-INVERT: это несколько элементов AND, подключённых к NOR, как показано ниже. После знакомства с инвертором можно ожидать, что AND-OR-INVERT окажется очень сложной схемой. Но, как видно на схеме ниже(примеч 14), такой элемент ненамного сложнее инвертора: ему нужно всего несколько дополнительных транзисторов.
Элемент AND реализован добавлением дополнительных эмиттеров к входному транзистору, который направляет ток, — он выделен красным. Это может выглядеть очень странно, но транзисторы с несколькими эмиттерами в TTL-схемах встречаются часто. Если на всех входах высокий уровень, ток базы направляется к коллектору. В остальных случаях ток базы уходит через эмиттер. Так и получается логическое AND по входам.
NOR реализован параллельным включением фазоинверторных транзисторов, выделенных оранжевым. Если на любой из баз высокий уровень, соответствующий транзистор — Q2A или Q2B — открывается и притягивает выход к низкому уровню. На схеме ниже показана схема с двумя элементами AND, но её легко расширить до нужного числа элементов и входов.
На схеме ниже показано, как такие многоэмиттерные транзисторы реализованы на кристалле. Видны три транзистора, у каждого по четыре или пять эмиттеров — тёмные квадраты. Так получаются AND-элементы с четырьмя или пятью входами. База каждого транзистора находится сверху, коллектор — снизу. Сигнальные линии идут горизонтально, а эмиттеры подключаются к ним там, где это нужно.
Такая структура позволяет компактно размещать на кристалле несколько AND-элементов — примерно как в программируемой логической матрице, PLA. Обратите внимание, что базовые резисторы занимают заметную часть площади кристалла.
На схеме ниже показано, как часть OR-INVERT выглядит на кристалле. Обратите внимание: у Q2A и Q2B, выделенных оранжевым, общий коллектор, поэтому два транзистора занимают на кристалле совсем немного места. Их входы приходят от AND-схем вроде тех, что показаны выше. OR-элементы с тремя и четырьмя входами реализованы так же — за счёт добавления дополнительных транзисторов.
Для вычисления XOR в чипе используется изящная и компактная схема: два транзистора соединены необычным образом — их эмиттеры и базы связаны между собой, а подключения к земле нет.
Работает это так: если на первом входе высокий уровень, а на втором низкий, первый транзистор открывается за счёт тока база-эмиттер. Через этот транзистор выход притягивается к низкому уровню, при этом второй вход фактически играет роль земли. Аналогично, если на первом входе низкий уровень, а на втором высокий, открывается второй транзистор и притягивает выход к низкому уровню. Если оба входа одинаковые, тока база-эмиттер нет, оба транзистора остаются закрытыми, а резистор подтягивает выход к высокому уровню.
Выход транзисторной пары затем подаётся на стандартный инверторный каскад, так что итоговый сигнал равен XOR двух входов.(примеч 15) Как и в OR-INVERT, у двух транзисторов общий коллектор, что делает топологию компактнее.
На фотографии стоит отметить несколько деталей. У двух транзисторов общий коллектор, что эквивалентно соединению их коллекторов проводником. Подтягивающего резистора на снимке не видно: он находится правее. Входы XOR приходят от элементов AND-OR-INVERT; их выходные транзисторы расположены в верхней части фотографии.
NOT-AND
В чипе используются четыре AND-элемента с одним инвертированным входом.¹⁷ На первый взгляд кажется, что на кристалле они реализованы обычными AND-транзисторами, но для инверсии одного из входов здесь применён интересный приём. Транзистор Q1 включён обычным образом — как транзистор, направляющий ток; R1 задаёт ток базы. А вот у транзистора Q2 резистор подключён к коллектору, а не к базе.(примеч 16)
В нормальном состоянии R2 подтягивает выход к высокому уровню. Но если на входе X высокий уровень, а на входе Y низкий, ток через R1 пойдёт через коллектор Q1 и эмиттер Q2, откроет Q2 и притянет выход к низкому уровню. Поэтому после инверторного каскада получается X AND NOT Y.
Как я получил фотографии кристалла
Чтобы сделать фотографии кристалла, нужно вскрыть корпус микросхемы и добраться до кремниевого кристалла внутри. У большинства чипов корпус эпоксидный, и его можно растворить в кипящей серной кислоте. Поскольку кипящая кислота меня не особенно привлекает, я взял чип 74181 в керамическом корпусе — его вскрывать гораздо проще.
Я постучал по шву чипа зубилом, и корпус раскололся на две части. Ниже видно, как металлические выводы закреплены между слоями корпуса и соединены с кремниевым кристаллом тончайшими проволочками.
Для съёмки кристалла я использовал металлографический микроскоп — специальный тип микроскопа, который светит вниз через объектив и освещает чип сверху. Я сделал 22 снимка, а затем с помощью программы Hugin склеил их в одно изображение высокого разрешения.
После этого я удалил с чипа металлический слой соляной кислотой и сделал ещё несколько снимков — так получилась фотография ниже. Когда металл удалён, проще рассмотреть структуру кремниевого слоя и понять, как работает чип.
Заключение
ALU-чип 74181 — сложная и производительная TTL-микросхема, которая была ключевым компонентом процессоров во многих мини-ЭВМ. Я сделал подробные фотографии кристалла 74181 ALU, и по ним видно, как чип устроен изнутри. В нём используется несколько типов логических элементов, прежде всего AND-OR-INVERT: они эффективно размещаются на кристалле. Эти элементы получаются за счёт разных расширений схемы инвертора, но они сложнее своих MOS-аналогов.
Примечания и ссылки
-
Чтобы понять, что находится внутри 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 CPU, 4 Bit TTL CPU, Magic-1 на 74F381, TREX, Mark 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/