[Перевод] TROS: как IBM хранила микрокод мейнфреймов в трансформаторах

Прокомментировать Просмотры: 0

Модуль TROS длиной около 15 дюймов (39 см). Слева сквозь стопку из 128 майларовых плёнок проходят сердечники 60 трансформаторов; видны лишь их квадратные торцы. Справа плёнки соединены с диодными платами. К остальным узлам компьютера модуль подключается расположенными сзади кабелями с разъёмами.

Недавно мне достался модуль трансформаторного постоянного запоминающего устройства (Transformer Read‑Only Storage, TROS), в котором хранился микрокод мейнфрейма IBM System/360.

Эта необычная система памяти представляла собой стопку майларовых плёнок с закодированными на них 15 360 битами, или 1920 байтами. Сегодня такой объём кажется ничтожным. Но в 1964 году1 полупроводниковых микросхем ПЗУ ещё не было, поэтому использование майларовой плёнки для хранения данных выглядело вполне оправданным.

В этой статье я расскажу об устройстве TROS и о том, как оно помогло IBM System/360 добиться успеха.

Принцип работы TROS: трансформаторы и токовые импульсы

На приведённой ниже схеме устройство TROS показано на простом примере: два слова длиной по три бита.

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

Для каждого слова — A или B — предусмотрена отдельная линия возбуждения. Она проходит:

  • Через трансформатор, если записывается бит 1.

  • В обход трансформатора, если записывается бит 0.

На схеме токовый импульс активирует линию возбуждения B, обозначенную красным. Во втором и третьем трансформаторах при этом возникают считываемые импульсы, показанные синим, и для слова B получается последовательность 011. Расположение проводников слова A задаёт последовательность 101.

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

Так можно записать любую комбинацию битов: её определяет маршрут линии возбуждения.

Simplified diagram of TROS storage. Based on Model 40 Functional Units.
Упрощённая схема хранения данных в TROS, составленная по документации Model 40 Functional Units.

В реальном модуле TROS использовались 60 трансформаторов и 256 линий возбуждения, что позволяло хранить 256 слов по 60 бит.

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

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

На каждой плёнке находились две проводящие петли — линии выбора слова. Значения битов определялись тем, проходили ли эти линии через трансформаторы или обходили их.

Таким образом, 128 майларовых плёнок обеспечивали соединения для 256 слов.

A Mylar tape, holding 120 bits of data. It consists of two wire loops, connected to the four pins at the bottom.
Майларовая плёнка с закодированными на ней 120 битами данных. Две проводящие петли соединены с четырьмя контактами в нижней части.

Майларовые плёнки собирали в стопку и устанавливали на 60 трансформаторов, как показано ниже.

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

Structure of the transformers, viewed from underneath. Each transformer consists of a U-piece that goes through the tapes, and an I-bar that completes the transformer. From Model 40 Functional Units.
Трансформаторы снизу. Каждый из них состоит из U‑образного сердечника, проходящего через майларовые плёнки, и I‑образной перемычки, которая замыкает магнитопровод. Источник: Model 40 Functional Units.

Собрав стопку, на каждый U‑образный сердечник устанавливали I‑образную перемычку, замыкая магнитопровод.

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

На выходе получалось 60-битное слово.

В моём экземпляре TROS I‑образные перемычки и линии считывания отсутствуют, но их можно рассмотреть на фотографии другого модуля ниже.

The sense windings are wrapped around the I-bars and connected to pins. The I-bars at the bottom are removed, showing the tops of the transformer U-pieces sticking up through the Mylar tapes. This TROS module is in the Computer History Museum.
Считывающие обмотки намотаны на I‑образные перемычки и подведены к контактам. Внизу несколько перемычек снято, поэтому видны концы U‑образных сердечников, выступающие из стопки плёнок. Этот модуль TROS хранится в Музее компьютерной истории.

Информацию на майларовых плёнках кодировали, пробивая отверстия в проводящих дорожках и разрывая тем самым ненужные соединения.

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

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

Closeup of a TROS tape. The diagram on the right illustrates how the two traces (red and green) go through or around the transformers (gray rectangles), based on the holes punched in the tape.
Плёнка TROS крупным планом. Схема справа показывает, как пробитые отверстия направляют две дорожки — красную и зелёную — через трансформаторы, обозначенные серыми прямоугольниками, или в обход них.

Для считывания одного из 256 слов токовый импульс подавали на соответствующую линию выбора слова — проводящую петлю на нужной плёнке.

Самый очевидный вариант — использовать 256 драйверов токовых импульсов и выбирать нужный по битам адреса. Но такое количество оборудования обошлось бы слишком дорого.

Поэтому разработчики TROS остановились на матричной схеме выбора.

Все 256 линий выбора слова логически образуют матрицу 16 × 16. Адрес разделяется на две части, каждая из которых дешифрируется для выбора одной из 16 линий.

В итоге токовый импульс поступает только на линию выбора слова, выбранную с обеих сторон.2

Each Mylar tape is plugged into a diode board. Note the "2020" on the left, indicating that this module is from a System/360 Model 20.
Каждая майларовая плёнка соединена с диодной платой. Маркировка «2020» слева указывает на то, что модуль предназначен для System/360 Model 20.

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

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

В IBM System/360 интегральные микросхемы не применялись. Вместо них компания использовала гибридные модули SLT (Solid Logic Technology), включавшие миниатюрные полупроводниковые элементы и толстоплёночные резисторы.

В каждом из изображённых ниже модулей SLT размещено по восемь диодов.

This closeup of the diode board shows the square metal SLT modules labeled 361485. Each one contains 8 diodes. The Mylar tape connections are at the top and bottom, while the "fin" in the middle is the wiring from the TROS module to the rest of the computer.
Диодная плата крупным планом. В каждом квадратном металлическом модуле SLT с маркировкой 361485 находится восемь диодов. Контакты для майларовых плёнок расположены сверху и снизу, а выступающая посередине «гребёнка» с проводниками связывает TROS с остальной частью компьютера.

Маркировка указывает, что мой модуль TROS применялся в младшей модели семейства System/360 — Model 20.

Это был сравнительно медленный и упрощённый компьютер, не поддерживавший даже полный набор команд System/360. Однако благодаря невысокой арендной плате — 1280 долларов в месяц — Model 20 стала самой популярной в семействе System/360.

В Model 20 устанавливалось восемь модулей TROS, вмещавших 6144 микроинструкции — по три в каждом 60-битном слове.3

На фотографии ниже эти модули вертикально расположены в левой части компьютера. Хорошо видно, насколько много места они занимали внутри машины.

IBM System/360 Model 20. TROS modules are on the left side. Photo from Ben Franske, CC BY 2.5.
IBM System/360 Model 20: модули TROS находятся слева. Фото: Ben Franske, CC BY 2.5.

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

Сам микрокод в шестнадцатеричном виде выделен синим, его мнемоническое представление — зелёным, а справа приведены комментарии.

Микрокод Model 20 был заметно проще горизонтального микрокода, применявшегося в старших моделях System/360.4

Microcode from the System 360/20. The micro-operations in the code are "Branch if Zero", "Add Immediate", "Branch if Plus", and "Branch if Minus", all acting on register R1. From FEMDM vol 2.
Фрагмент микрокода System/360 Model 20 с микрооперациями «условный переход при нуле» (Branch if Zero), «сложение с непосредственным операндом» (Add Immediate), «условный переход при положительном значении» (Branch if Plus) и «условный переход при отрицательном значении» (Branch if Minus). Все они работают с регистром R1. Источник: FEMDM, том 2.

Для чего нужен микрокод?

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

В 1951 году Морис Уилкс (Maurice Wilkes) предложил идею микрокода.

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

Чтобы выполнить машинную инструкцию, компьютер последовательно исполняет несколько более простых микроинструкций, определённых микрокодом.

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

Но в 1950-е годы технологии памяти ещё не позволяли практически применить эту идею: память оставалась слишком медленной и дорогой.

Широкое использование микрокода в коммерческих компьютерах началось лишь после появления IBM System/360 в 1964 году.

Микрокод стал одним из важнейших факторов успеха System/360. Он позволил IBM создать семейство компьютеров с общей архитектурой набора команд, несмотря на существенные различия в их внутреннем устройстве.

Кроме того, микрокод облегчал обеспечение обратной совместимости: System/360 могла поддерживать наборы команд более ранних компьютеров IBM.5

Технологии постоянной памяти IBM

Для хранения микрокода IBM применяла несколько технологий ПЗУ. Выбор определялся не только техническими соображениями, но и внутренней политикой компании.

TROS разработали в британском подразделении IBM в Хёрсли.

Работа над микрокодом началась там ещё в 1950-х годах: транзисторы в Англии тогда были очень дорогими, а микрокод позволял уменьшить их количество.

Первую версию TROS в Хёрсли создали для компьютера SCAMP.6 Позднее появилась технология TROS, описанная выше.

CCROS — ёмкостная память

Одним из конкурирующих решений была CCROS (Capacitive Coupled Read‑Only Storage) — ёмкостное постоянное запоминающее устройство.

В нём применялись майларовые плёнки, формировавшие матрицу конденсаторов.

Интересно, что размеры плёнок CCROS совпадали с размерами стандартных перфокарт IBM. Это позволяло записывать микрокод, пробивая отверстия обычным перфоратором для перфокарт.

CCROS создали в подразделении IBM в Эндикотте, где разрабатывалась и System/360 Model 30. Поэтому для этой машины выбрали местную технологию, хотя по скорости и надёжности она уступала TROS.

Каждая карточка CCROS вмещала 12 слов по 60 бит. В Model 30 устанавливались 42 платы CCROS, каждая с восемью карточками.

В сумме они хранили 4032 слова по 60 бит.

Detail of a CCROS sheet. It is programmed by punching holes in it with a keypunch.
Фрагмент плёнки CCROS. Информацию кодировали отверстиями, которые пробивали перфоратором для перфокарт.

BCROS — память на балансных конденсаторах

Более мощным моделям 50, 65 и 67 требовалась быстродействующая управляющая память. Поэтому в них использовали третью технологию — BCROS (Balanced Capacitor Read‑Only Storage), ПЗУ на балансных конденсаторах.

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

Майларовые плёнки BCROS размером 20 × 8,5 дюйма были значительно больше, чем плёнки TROS и CCROS.

Данные в BCROS задавались не отверстиями, а травлением медных проводящих дорожек, как показано ниже.

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

На одном слое плёнки размещалось 176 слов по 100 бит, а вся система из 16 слоёв вмещала 2816 слов.

Closeup of a BCROS sheet from a System/360 Model 50.
Плёнка BCROS из System/360 Model 50 крупным планом.

Управляющая память Model 25

Для хранения микрокода младшей Model 25 отдельную технологию разрабатывать не стали.

Вместо этого отвели 16 Кбайт обычной памяти на магнитных сердечниках. Этот участок называли управляющей памятью (Control Storage).

В Model 25 можно было загружать различные варианты микрокода с перфокарт или магнитной ленты, переключаясь между режимом System/360 и эмуляцией более старых машин серии IBM 1400.

Как обновляли микрокод

Важным достоинством всех этих решений была возможность сравнительно просто обновлять микрокод непосредственно у заказчика.

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

Для сравнения: в более старом IBM 1401 аппаратная доработка (engineering change) обычно требовала от инженера изменения проводных соединений на объединительной панели. Такая работа занимала значительно больше времени и была связана с риском ошибки.

Микрокод также обновляли, когда заказчик приобретал дополнительные функции для компьютера.

Сравнение с памятью на прошитых сердечниках

TROS во многом напоминает память на прошитых магнитных сердечниках (core rope), применявшуюся для хранения программ в бортовом компьютере Apollo Guidance Computer (AGC).

В обеих технологиях данные кодировались в постоянной памяти расположением проводников относительно сердечников.

Однако достоинства и недостатки этих решений различались.

  • Память на прошитых сердечниках в AGC обеспечивала значительно большую плотность хранения, что имело особое значение для космических полётов.

  • TROS можно было без труда перепрограммировать, заменив пластиковые плёнки.

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

Detail of core rope memory wiring from an early (Block I) Apollo Guidance Computer. Photo from Raytheon.
Проводные соединения памяти на прошитых сердечниках из раннего варианта бортового компьютера Apollo Guidance Computer (Block I). Фото: Raytheon.

По конструкции TROS и память на прошитых сердечниках практически противоположны: линии выбора слова, или адресные линии, и линии считывания в них как бы меняются местами.

В TROS биты определялись тем, какие линии выбора слова проходили сквозь трансформатор, а какие — мимо него.

В памяти на прошитых сердечниках действовал обратный принцип: данные зависели от того, какие линии считывания проходили через сердечник, а какие обходили его.

При считывании слова в AGC активировался один сердечник, тогда как в TROS потенциально могли возбуждаться все трансформаторы.

Каждый трансформатор TROS имел одну линию считывания и отвечал за один выходной бит.

В памяти AGC через каждый сердечник, напротив, проходили 192 линии считывания, а сам сердечник был связан с 12 словами.

Заключение

TROS и другие технологии постоянной памяти внесли значительный вклад в успех IBM System/360: благодаря им применение микрокода стало практически осуществимым.

Но в 1970-х годах появились недорогие полупроводниковые микросхемы ПЗУ, и сложные решения для хранения данных, такие как TROS, быстро устарели.

Большинство современных микропроцессоров по-прежнему используют микрокод, однако он хранится уже не на майларовых плёнках, а в ПЗУ внутри самого чипа.

Для исправления микрокода теперь достаточно загрузить файл обновления — заменять плёнки внутри компьютера больше не требуется.7

The TROS module, showing the diode boards and the stack of 128 Mylar tapes.
Модуль TROS: диодные платы и стопка из 128 майларовых плёнок.
Примечания и ссылки

¹ IBM System/360 была представлена в 1964 году. Этот конкретный модуль TROS датирован 27 мая 1970 года.

² Схема ниже иллюстрирует работу матричного выбора и диодов. Для простоты на ней показаны лишь 2 драйвера, 4 токовых ключа и 8 линий выбора слова. В реальной системе использовались 16 драйверов, 16 токовых ключей и 256 линий выбора слова. Термин gate в документации IBM здесь означает не логический вентиль, а токовый ключ, который служит стоком тока и замыкает цепь с противоположной стороны.

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

Matrix selection of a word line. Energizing driver DR1 and gate G3 selects word line W3. Based on Model 40 Functional Units, p61.
Матричный выбор линии слова: активация драйвера DR1 и токового ключа G3 выбирает линию W3. Источник: Model 40 Functional Units, стр. 61.

³ В Model 20 применялись 22-битные слова микрокода. Как они помещались в 60-битные слова TROS? Дело в том, что некоторые слова микрокода сокращали до 16 бит. Это позволяло разместить в одном слове TROS три слова микрокода: два 22-битных и одно 16-битное.

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

⁴ В Model 50 одна 90-битная микроинструкция могла параллельно выполнять до шести операций. Например, каждый жёлтый блок на схеме ниже соответствует одной микроинструкции, участвующей в умножении чисел с плавающей запятой. Строки внутри блока описывают отдельные действия. Одна микроинструкция способна одновременно управлять формирователем констант, сумматором, блоком сдвига, блоком пересылки данных и локальной памятью.

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

Две выделенные жёлтым микроинструкции System/360 Model 50 — фрагмент микрокода, обрабатывающего потерю значимости порядка и переполнение порядка при умножении чисел с плавающей запятой. Чёрными линиями обозначены переходы между микроинструкциями, а текст вне блоков содержит комментарии. Источник: схема QG702 из документации Model 50.

⁵ Микрокод применялся в большинстве компьютеров System/360: он снижал стоимость, повышал гибкость и ускорял разработку. IBM даже ввела правило, согласно которому все машины System/360 должны были использовать микрокод, если только для отказа от него не было веских оснований. Тем не менее в самых быстрых моделях ради максимальной производительности применяли аппаратные схемы управления.

⁶ Путаницу может вызвать то, что IBM выпустила два совершенно разных компьютера под названием SCAMP. Машина с TROS называлась Scientific Computer and Modulator Processor. Это был небольшой компьютер для научных расчётов, созданный в подразделении IBM в Хёрсли. Его не следует путать с более известным SCAMP — прототипом портативного IBM 5100 (Special Computer APL Machine Portable).

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

В IBM System/360 работа процессора определялась расположением проводников внутри модуля памяти. С тех пор технологии изменились, но понимать взаимодействие программного обеспечения с аппаратной частью по-прежнему важно. Без этого трудно разобраться, как операционная система управляет устройствами, распределяет память и выполняет процессы.

Хотите узнать, что происходит внутри компьютера за пределами программного кода? Приходите на бесплатные открытые уроки:

 

Источник

Похожие статьи

Поиск по играм, новостям и статьям…

Введите не менее двух символов

Введите не менее двух символов