- PVSM.RU - https://www.pvsm.ru -

Ремонт принтера от мейнфрейма IBM 1401 эпохи 60-х

Ремонт принтера от мейнфрейма IBM 1401 эпохи 60-х - 1 [1]
Мейнфрейм IBM 1401 (слева) в Музее компьютерной истории печатает фрактал Мандельброта [2] на принтере 1403 (справа)

В Музее компьютерной истории [3] для демонстрации [4] стоят два рабочих мейнфрейма IBM 1401, но несколько недель назад у одного из них внезапно отказал принтер. Я помог его починить, но это оказалось сложнее, чем мы ожидали. По ходу пришлось изучить логические схемы проверки ошибок в принтере, буфер печати и даже низкоуровневые сигналы ферритовой памяти. Эта статья о нашем расследовании и том, как мы всё-таки нашли неисправный германиевый транзистор.

Мейнфрейм IBM 1401 вышел в 1959 году и стал главным бестселлером [5] середины 60-х: всего было установлено более 10 000 систем. Компьютер давали в аренду за 2500 долларов в месяц (около 20 000 долларов в текущих ценах): очень низкая цена, позволяющая даже средним предприятиям использовать его для расчёта заработной платы, бухгалтерского учёта, выставления счетов и многих других задач. IBM 1401 сделан из небольших печатных плат (называемых SMS-картами), подключённых к блокам, называемых гейтами или воротами. На фото внизу показан 1401 с одним из открытых ворот. Видны десятки коричневых SMS-карт.

Ремонт принтера от мейнфрейма IBM 1401 эпохи 60-х - 2 [6]
Компьютер IBM 1401 с одним из раскрытых ворот, где видно множество печатных плат (карт SMS). Вентилятор на передней крышке охлаждает карты

Один из главных драйверов продаж IBM 1401 — высокоскоростной линейный принтер IBM 1403, который выводил 10 строк в секунду (IBM утверждала, что это в четыре раза быстрее, чем у других принтеров, но конкуренты оспаривают это утверждение). Принтер 1403 печатал превосходно: это качество сумели превзойти только лазерные принтеры 1970-х годов.1 [7] IBM утверждает, что «даже сегодня он остаётся стандартом качества для высокоскоростной ударной печати».

Ремонт принтера от мейнфрейма IBM 1401 эпохи 60-х - 3 [8]
Крупный план цепи с литерами (вверх ногами) линейного принтера IBM 1403

В принтере 1403 использовалась длинная цепь с литерами (на фото вверху), которая с высокой скоростью вращалась над бумагой и красящей лентой. На каждой из 132 печатных позиций установлен молоточек и электромагнит. В определённый момент, когда нужный символ проходил через молоточек, электромагнит подталкивал его к обратной стороне бумаги, в результате чего бумага и лента били по литере на цепи, печатая символ.2 [9]

Ремонт принтера от мейнфрейма IBM 1401 эпохи 60-х - 4
Печатный механизм линейного принтера IBM 1401. Из «Справочного руководства 1401» [10], стр. 11

К сожалению, у принтера в Музее компьютерной истории возникла проблема: всякий раз при печати строки компьютер останавливался из-за ошибки «Проверка печати». К счастью, в музее есть группа волонтёров, которые помогают поддерживать систему в рабочем состоянии. Среди специалистов, которые участвовали в решении этой проблемы — Рон Уильямс, Фрэнк Кинг, Марк Вердиелл, Карл Клаунч, Майкл Мариню, Роберт Гарнер и Алексей Топтыгин. К тому времени, когда я пришёл на помощь, Рон написал простую тестовую программу, которая неоднократно пыталась напечатать строку; он перешёл в ручной режим и отключил проверку ошибок. Принтер напечатал символы как положено. Поэтому мы предположили, что проблема в логической схеме сообщений об ошибках внутри компьютера. Стратегия заключалась в том, чтобы найти сигнал ошибки, отследить его до источника — и определить причину.

Мы начали с изучения схемы затвора (latch), которая содержит условие ошибки проверки печати и отправляет его в компьютер. Чтобы найти цепь, мы сверились с документацией: сгенерированными на компьютере чертежами монтажных схем, которые называются автоматизированными логическими схемами (Automated Logic Diagrams, ALD). Ниже показан небольшой участок ALD с триггером проверки печати (PR CHK LAT). Каждый прямоугольник на ALD соответствует схеме на SMS-карте, а линии показывают соединение карт друг с другом. Расшифровка текста внутри поля справа указывает на карту типа 2JMX [11], реализующую функцию “2+AO”, которая в современных терминах представляет собой логическую схему И-ИЛИ с инвертированием [12]. Текст в каждом поле также указывает расположение карты: её гейт (физические откидные ворота, а не логический вентиль), в данном случае ворота 01A6, и положение карты внутри (F10). Таким образом, чтобы проверить осциллографом выходной сигнал затвора (обозначенный H), мы открыли ворота 01A6, нашли карту F10 и подключили осциллограф к контакту H.

Мы обнаружили, что контакт H выдаёт низкий сигнал (ошибка), когда контакты F и G под напряжением, что является правильным поведением для затвора. Контакт G (PR CK SAMPLE) по сути тактовый импульс для пробы состояния ошибки, в то время как контакт F является самим сигналом ошибки. Нашей следующей задачей стало определить, что вызывает сигнал ошибки на контакте F.

Ремонт принтера от мейнфрейма IBM 1401 эпохи 60-х - 5
Фрагмент автоматизированной логической схемы (ALD) компьютера IBM 1401, показывающий затвор проверки печати (PRT CHK LAT). Эта страница подписана как 36.37.21.2

В документации есть и схемы на логическом уровне. Их немного легче понять, чем физические соединения на диаграммах ALD. На приведённой ниже логической схеме показана схема ошибок принтера. Справа сигнал ошибки проверки печати (PRT CHK ERROR) выходит из затвора (PR CHK LAT), который содержит сигнал ошибки. (Это тот же затвор, что и на диаграмме ALD выше, как понятно по именам сигналов). Слева от затвора объединяются несколько различных состояний ошибок для формирования сигнала ошибки, подаваемого в затвор. (Обратите внимание, что логические символы IBM не соответствуют стандартным. Полукруг — это логический вентиль ИЛИ, а не И. Треугольник — это вентиль И. Символ “i” в прямоугольнике — инвертор).

Ремонт принтера от мейнфрейма IBM 1401 эпохи 60-х - 6
Логическая схема логики проверки ошибок в IBM 1401/1403. Из «Инструкций по логическим схемам» [13], стр. 77, «Элементы управления буфером печати»

Ошибку проверки печати могут вызвать несколько условий3 [14]4 [15]5 [16] На каждом цикле сканирования компьютер сравнивает две основные матрицы, чтобы проверить правильное/неправильное срабатывание молоточков, а в случае несоответствия выдаёт ошибку проверки.

Ремонт принтера от мейнфрейма IBM 1401 эпохи 60-х - 7 [17]
Крупный план электромагнитов в принтере IBM 1403. Электромагнит (при получении импульса через свою пару проводов) вытягивает металлический якорь, который управляет молоточком, бумагой и лентой напротив литеры. Всего установлено 132 молоточка, по одному на каждую колонку, в двух рядах по 66 штук

После некоторых сложных манипуляций6 [18] мы выяснили, что проблема связана не с проверкой срабатывания молоточков, а с другой проверкой: «завершение печати строки» (print line complete, PLC). Она проверяет, что для каждой строки в каждом столбце напечатано не больше одного символа. Здесь используется третья специальная матрица памяти — матрица «печать строки завершена». Каждый раз при печати символа устанавливается соответствующий бит. (Для пустого или непечатаемого символа бит устанавливается отдельной схемой). В конце строки (при сканировании 49) проверяются все сердечники матрицы. Если какой-то из них равен нулю, то есть принтеру не удалось напечатать этот столбец, выводится сообщение об ошибке. (На предыдущей логической схеме вы можете увидеть сигнал PLC CHECK и логику, которая его генерирует).

Проверка осциллографом (ниже) показала, что срабатывает PLC CHECK (жёлтый), потому что система думает, что в том же столбце печатается второй символ. Циановый сигнал — это (инвертированный) бит PLC от сердечника (PR LINE COMP LATCH); каждый нижний импульс указывает на печать символа в этой колонке. Розовый импульс (PRINT COMPARE) указывает на печать нового символа. Проблема в том, что циановый и розовый сигналы снижаются одновременно, указывая как на существующий символ, так и на новый символ в столбце. Это производит экстренный синий импульс (PLC CHECK), который инициирует жёлтый импульс (PRINT CHK ERROR от затвора). Эта схема показана на предыдущей логической схеме с надписью «Попытка напечатать позицию дважды» (Trying to print position twice).

Ремонт принтера от мейнфрейма IBM 1401 эпохи 60-х - 8
Сигнал осциллографа при отладке принтера IBM 1401

Почему система думает, что в столбце печатаются два символа? Это может быть по разным причинам. На распечатке мы видели, что в реальности принтер выводит на бумаге только один ожидаемый символ, так что схема для печати символа, видимо, работает правильно (PRINT COMPARE, одиночный розовый импульс вверху). Мы проверили схему пустых/непечатаемых символов, и она правильно обнаруживала пустые и непустые столбцы. Таким образом, наиболее вероятной проблемой является чтение 1 из сердечника памяти (циановая линия вверху, PR LINE COMP LATCH), когда там должен быть 0. Но в чём действительно проблема: неправильная намагниченность сердечника или неправильное значение на выходе?

Логическая схема внизу показывает механизм записи в память Print Line Compare. PR LINE COMP INH справа — это (инвертированный) сигнал, который записывается в сердечник.8 [19] При сканировании 49 (цикл проверки после печати всех 48 символов) на эту линию подаётся напряжение, очищая память. Если печатается символ, то идёт сигнал PRINT COMPARE EQUAL. Логические вентили слева определяют пустой или непечатаемый символ. И если в сердечнике уже бит 1 (PR LINE COMP LATCH), то бит 1 перезаписывается в сердечник.

Ремонт принтера от мейнфрейма IBM 1401 эпохи 60-х - 9
Логическая схема логики проверки завершения строки в IBM 1401/1403. Из «Инструкций по логическим схемам» [13], стр. 77, «Элементы управления буфером печати»

Мы обнаружили, что эта схема записывала в сердечник ложные значения 1, потому что считывала ложные значения 1 из сердечника. Но так мы пошли по кругу: непонятно, изначальная проблема в чтении или записи. Чтобы разрешить проблему, мы поставили осциллограф на сканирование печати 49, когда обнуляются биты PLC, а затем посмотрели на следующее сканирование печати, которое считывает очищенные биты. Мы видели, как записывается 0 (т. е. высокое напряжение PR LINE COMP INH), но неожиданно увидели, что возвращается 1 (затвор PR LINE COMP). Мы поняли: что-то происходит на низком уровне в ферритовой памяти.

Нужно упомянуть, что в стандартной системе 1401 контрольные биты принтера хранятся в основном модуле ферритовой памяти, но наша система использует отдельную «печатную память» для повышения производительности. Проблема производительности связана с тем, как принтер использует память: каждый раз, когда молоточек оказывается напротив нужной литеры на ленте, компьютер считывает соответствующий символ из памяти и запускает электромагнит, если символ в хранилище соответствует символу под молоточком. И получается, что в процессе печати непрерывно используется память — и компьютер во время печати не может производить никаких вычислений. Поэтому и внедрили отдельную печатную память на 132 сердечниках, которая действует как буфер печати.7 [20] При использовании такого буфера строка для печати сначала быстро копируется из основной памяти в память печати. После этого компьютер может продолжать вычисления, используя основную память. За каждую дополнительную опцию IBM 1401 взималась ежемесячная плата: печатная память стоила $386 в месяц.

Ремонт принтера от мейнфрейма IBM 1401 эпохи 60-х - 10 [21]
Это ворота с микросхемами буфера печати. К блоку памяти в правом верхнем углу подключены пучки жёлтых проводов

На фото вверху показаны ворота, которые реализуют функцию печатного буфера. Основной модуль памяти представляет собой блок в правом верхнем углу с жёлтыми проводами. (Отдельные ферритовые сердечники можно увидеть на фото внизу). Ферритовая память требует большого количества вспомогательных схем. Для выбора адреса управляющие карты (driver card) генерируют сигналы X и Y. Чтобы намагнитить сердечник, сигнал сочетается с тактовым импульсом, затем управляющая карта усиливает сигнал и отправляет его по шине запрета, которая проходит через все сердечники в матрице.9 [22] При чтении сердечник наводит импульс на сигнальный провод. Этот импульс усиливается управляющей картой, а затем бит сохраняется в затворе. Многочисленные SMS-карты в воротах печатной памяти предназначены для вспомогательных функций в этом процессе.

Ремонт принтера от мейнфрейма IBM 1401 эпохи 60-х - 11
Сердечники в буфере печати. Проводка отличается от обычной ферритовой памяти, потому что каждый молоточек напрямую связан с сердечником проверки. Качество изображения плохое из-за пластиковой крышки над сердечниками

Мы исследовали усилитель сигнала и карты затвора на стороне чтения ферритовой памяти. Оказалось, что они работали правильно, поэтому мы перешли на сторону записи. Карта управления шиной HN [23] показалась кандидатом на отказ, потому что она работает на высоком напряжении. Мы поменяли карту — но запустить принтер по-прежнему не удалось. Затем я попытался посмотреть на вход этой карты — и обнаружил, что на одной линии нет сигнала.

Ремонт принтера от мейнфрейма IBM 1401 эпохи 60-х - 12
График осциллографа плохой карты CHWW с логическим вентилем И-НЕ: розовый (3) и синий (4) соответствуют входным сигналам, циановый выход (2) застрял на высоком напряжении

Отсутствующий сигнал генерировала карта типа CHWW [24], логический вентиль И-НЕ (NAND), который совмещает сигнал шины запрета с тактовым импульсом перед отправкой на управляющую карту. Я подключил осциллограф к входам и выходу вентиля и зафиксировал параметры сигнала, показанные на иллюстрации выше. Эта трассировка говорит сама за себя: выход (циан 2) остаётся высоким, даже когда оба входа (розовый 3 и синий 4) меняют значение с низкого на высокое. Сразу видно, что вентиль неисправен. Это всё объясняет: с таким застрявшим значением на выходе в матрицу PLC записываются только значения 1. После печати символа схема считывает значение 1 из памяти, думает, что символ уже был напечатан, проверка PLC терпит неудачу — и возникает ошибка проверки печати.

Ремонт принтера от мейнфрейма IBM 1401 эпохи 60-х - 13 [25]
Принтер успешно работает, печатая степени двойки

Мы заменили эту карту — и принтер начал печатать без ошибок (фото вверху). Это доказывает, что мы наконец-то выяснили проблему; это оказался простой вентиль И-НЕ в глубине схемы ферритовой памяти печатного буфера. Неисправная карта показана ниже. На ней три вентиля NAND (детали [24]) на диодно-транзисторной логике [24] (которую IBM называет CDTL — Complemented Transistor Diode Logic). Каждый вентиль с двумя входными сигналами использует один германиевый транзистор (круглый металлический элемент) и два диода (полосатые стеклянные компоненты справа). Слева — нагрузочные резисторы (полосатые) и индукторы (бежевые).

Ремонт принтера от мейнфрейма IBM 1401 эпохи 60-х - 14
Неисправная карта CHWW от IBM 1401. На ней три вентиля NAND. Нижний левый транзистор вышел из строя и был заменён

Я протестировал карту с генератором сигналов и обнаружил, что два из трёх вентилей работают, а третий застрял на высоком выходном сигнале, подтверждая наблюдения внутри 1401. Далее я проверил транзисторы в режиме диодного тестирования на мультиметре. На хороших транзисторах напряжение падало до 0,23 В. (Это может показаться низким значением, но помните, что это германиевые, а не кремниевые транзисторы). Для сравнения, на плохом транзисторе напряжение снижалось только до 0,95 В. Наконец, мы сняли транзисторы и проверили их на винтажном характериографе Tektronix 577 [26]. Мы думали, что плохой транзистор будет слишком слабым, чтобы управлять затвором, но он оказался полностью убит — совершенно ровная линия на характериографе.

Мы вскрыли транзистор на токарном станке и заглянули внутрь. Там используется германиевый сплав IBM 083 [27] NPN (германий использовался до кремния). Транзистор состоит из крошечной германиевой подложки (блестящий металлический квадрат на фотографии внизу), образующей основание. Два провода эмиттер и коллектор соединяются пятнами оловянного сплава. Под микроскопом похоже, что точки сплава подверглись коррозии, а провод эмиттера не выглядит надёжно соединённым: мы подозреваем, что это основная причина сбоя.

Ремонт принтера от мейнфрейма IBM 1401 эпохи 60-х - 15
Внутри неисправного германиевого транзистора IBM 083. Серебристый квадрат в центре — германиевая подложка, подключенная к штифтам цоколя. Точка в середине — сплав олова для коллектора, который соединяется проводом со штифтом коллектора слева. Меньшая точка на другой стороне германиевой матрицы образует эмиттер, подключенный к контакту справа

Выводы

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

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

[28]

нониус [29]). В частности, каждые 11,1 микросекунды цепь перемещается на 0,001 дюйма. Это приводит к новому выравниванию молоточка и типа литеры. По механическим причинам в очередь до конца строки выстраивается каждый третий молоточек (1, 4, 7, ...); это называется «подсканированием» (subscan) и занимает 555 микросекунд. Еще два подсканирования дают возможность сработать каждому молоточку в линии, образуя скан печати (print scan) в 1,665 миллисекунды. 48 сканов дают возможность каждому молоточку напечатать каждый символ, и после этого 49-е сканирование используется для проверки ошибок (Более подробный расчёт времени см. в «Руководстве по эксплуатации» [30], стр. 37.).

Механизм сканирования и подсканирований может показаться чрезмерно сложным. Но ему удаётся совместить быстрый «электронный мир» с более медленным «механическим миром». В частности, совместить молоточек с литерой каждые 11,1 микросекунды. Компьютер считывает символ в этом столбце из сердечника памяти, сравнивает его с литерой, и если они совпадают, то запускает молоточек. Здесь важно, что цикл памяти сердечника совпадает с временем выравнивания молоточка, что позволяет прочитать символ с сердечника для каждого выравнивания молоточка. Если вам интересно, как работает механизм печати, есть вот такая анимация [31].

Один из нюансов в том, что удар молоточка занимает 1,52 миллисекунды («Руководство по эксплуатации» [30], стр. 32). Таким образом, нужно запускать его не тогда, когда он действительно выровняется с литерой, а за 1,52 миллисекунды до этого момента. [32]

[33]

писал [34] о ремонте этого устройства. А здесь [35] можете подробнее почитать о ферритовой памяти 1401. [36]

[37]

монтажное ИЛИ [38] вместо вентиля. Сигналы просто совмещались, так что если какой-то из двух имел высокий уровень, такой же получался у общей линии. Поэтому мы не могли просто прозондировать сигналы, подаваемые на контакт F — все они были связаны. Вместо этого пришлось отключить карты, чтобы проверить каждый сигнал по отдельности. [39]

[40]

[41]

«Командной логике» [42] на стр. 98. Сведения о принтере 1403 см. в «Описании компонентов IBM 1403» [43], «Руководстве по техническому обслуживанию принтеров 1403» [44] и «Руководстве по эксплуатации принтеров 1403» [30]. См. также эту краткую статью [45] о принтере 1403 в журнале IEEE Spectrum. Подробное описание IBM 1401 — в «IBM 1401: современная теория работы» [46]. [47]

Автор: m1rko

Источник [48]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/staroe-zhelezo/293197

Ссылки в тексте:

[1] Image: https://lh3.googleusercontent.com/-eoTyi76vaow/W58hFfgKVpI/AAAAAAABUao/OW6Jeby5WkwJfMyB10vwoEizyn_ryXIIwCHMYBhgL/w9999/mandelbrot_1041_and_printer.jpg

[2] фрактал Мандельброта: http://www.righto.com/2015/03/12-minute-mandelbrot-fractals-on-50.html

[3] Музее компьютерной истории: http://www.computerhistory.org/

[4] демонстрации: http://www.computerhistory.org/hours/

[5] главным бестселлером: http://www-03.ibm.com/ibm/history/ibm100/us/en/icons/mainframe/

[6] Image: https://lh3.googleusercontent.com/-8jCA5HstSEQ/W58hFWFpNRI/AAAAAAABUao/B41-nd8nRX0SMIH_s0-XGSQE4jN0076yACHMYBhgL/w9999/gate_01b3.jpg

[7] 1: #1

[8] Image: https://lh3.googleusercontent.com/-9MqYKp7ovF8/W58hFcnfXhI/AAAAAAABUao/QRMNet2zlxQO3rAlL6CXmbxBT6VozEyPQCHMYBhgL/w9999/typechain.jpg

[9] 2: #2

[10] «Справочного руководства 1401»: http://ibm-1401.info/A24-1403-5_1401_Reference_Apr62--.pdf

[11] 2JMX: http://static.righto.com/sms/2JMX.html

[12] И-ИЛИ с инвертированием: https://en.wikipedia.org/wiki/AND-OR-Invert

[13] «Инструкций по логическим схемам»: http://ibm-1401.info/ILDs_Aug62-Enhanced-TOC.pdf

[14] 3: #3

[15] 4: #4

[16] 5: #5

[17] Image: https://lh3.googleusercontent.com/-pisl70r4u7A/W58hFZLrNfI/AAAAAAABUao/5ovol9hxPPYeIdOv2QhGcdkT9H78IQA6ACHMYBhgL/w9999/hammers.jpg

[18] 6: #6

[19] 8: #8

[20] 7: #7

[21] Image: https://lh3.googleusercontent.com/-PNTJm9rtSfM/W58hFcY1V0I/AAAAAAABUao/5NVeQo419HkVQtlpX5iBk4-qOugj_zIvwCHMYBhgL/w9999/print-storage-gate.jpg

[22] 9: #9

[23] HN: http://static.righto.com/sms/HN.html

[24] CHWW: http://static.righto.com/sms/CHWW.html

[25] Image: https://lh3.googleusercontent.com/-KiFDtU7Adi0/W58hFduXRMI/AAAAAAABUao/OMkAALKF4lc3hm3tysm0DT2FBI1yO7lwQCHMYBhgL/w9999/printer-working.jpg

[26] характериографе Tektronix 577: http://w140.com/tekwiki/wiki/577

[27] IBM 083: http://ibm-1401.info/GermaniumAlloy.html

[28] ↑: #1_1

[29] нониус: https://en.wikipedia.org/wiki/Vernier_scale

[30] «Руководстве по эксплуатации»: http://ibm-1401.info/0KenShirriff/IBM_Field_Engineering_Manual_of_Instruction_1403_Printers_225_6492_3.pdf

[31] такая анимация: http://righto.com/ibm1401/printchain.html

[32] ↑: #2_2

[33] ↑: #3_3

[34] писал: http://www.righto.com/2015/10/repairing-50-year-old-mainframe-inside.html

[35] здесь: http://www.righto.com/2015/08/examining-core-memory-module-inside.html

[36] ↑: #4_4

[37] ↑: #5_5

[38] монтажное ИЛИ: https://en.wikipedia.org/wiki/Wired_logic_connection

[39] ↑: #6_6

[40] ↑: #7_7

[41] ↑: #8_8

[42] «Командной логике»: http://bitsavers.informatik.uni-stuttgart.de/pdf/ibm/1401/ce/R25-1496_1401_Instruction_Logic_Nov60.pdf

[43] «Описании компонентов IBM 1403»: http://bitsavers.org/pdf/ibm/1403/GA24-3073-8_1403_printer.pdf

[44] «Руководстве по техническому обслуживанию принтеров 1403»: http://ibm-1401.info/1403FieldEngineeringMaintenanceManual.pdf

[45] краткую статью: https://spectrum.ieee.org/tech-history/silicon-revolution/how-the-ibm-1403-printer-hammered-out-1100-lines-per-minute

[46] «IBM 1401: современная теория работы»: http://ibm-1401.info/IBM-1401-Theory-of-Operation-GF.pdf

[47] ↑: #9_9

[48] Источник: https://habr.com/post/423831/?utm_campaign=423831