Хабрахабр

[Перевод] Ремонт принтера от мейнфрейма IBM 1401 эпохи 60-х


Мейнфрейм IBM 1401 (слева) в Музее компьютерной истории печатает фрактал Мандельброта на принтере 1403 (справа)

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

Вентилятор на передней крышке охлаждает карты
Компьютер IBM 1401 с одним из раскрытых ворот, где видно множество печатных плат (карт SMS).

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


Крупный план цепи с литерами (вверх ногами) линейного принтера IBM 1403

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

Из «Справочного руководства 1401», стр. 11
Печатный механизм линейного принтера IBM 1401.

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

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

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

Эта страница подписана как 36.
Фрагмент автоматизированной логической схемы (ALD) компьютера IBM 1401, показывающий затвор проверки печати (PRT CHK LAT). 21. 37. 2

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

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

Напомним, что в принтере 132 молоточка для печати строки символов. Ошибку проверки печати могут вызвать несколько условий3, и мы подумали, что проверка срабатывания молоточка (hammer fire) — наиболее вероятный кандидат. (1401 использует память на магнитных сердечниках по 4000 символов4; каждый бит памяти —маленькое ферритовое кольцо, которое в зависимости от намагниченности хранит 1 или 0. Для их проверки предусмотрены две специальные матрицы памяти. Много матриц располагаются друг над другом, формируя блок памяти). Сетка из 4000 сердечников образует матрицу памяти. Когда молоточек фактически срабатывает, импульс тока от электромагнита сохраняет бит в матрице срабатывания. Каждый раз, когда компьютер решает запустить молоточек, он записывает это в ферритовую память в матрице проверки соответствия (equal check). 5 На каждом цикле сканирования компьютер сравнивает две основные матрицы, чтобы проверить правильное/неправильное срабатывание молоточков, а в случае несоответствия выдаёт ошибку проверки.

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

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

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


Сигнал осциллографа при отладке принтера IBM 1401

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

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

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

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

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

К блоку памяти в правом верхнем углу подключены пучки жёлтых проводов
Это ворота с микросхемами буфера печати.

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

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

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


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

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


Принтер успешно работает, печатая степени двойки

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

На ней три вентиля NAND.
Неисправная карта CHWW от IBM 1401. Нижний левый транзистор вышел из строя и был заменён

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

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

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

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

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

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

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

Несколько жёстких проверок правильной работы принтера кажутся излишними. 3. В научных компьютерах IBM не было столько проверок на ошибки, как в бизнес-компьютерах, исходя из предположения, что учёные заметят проблемы. Но для бизнес-компьютера ошибки печати могут стать катастрофическими: представьте, что в чеках на зарплаты или в налоговых формах неправильные цифры. ↑

IBM 1401 хранит в ферритовой памяти сердечника 4000 символов, а не 4096, потому что это десятичная машина (т. 4. двоично-десятичный код), с десятичными адресами. е. Я уже писал о ремонте этого устройства. Память можно расширить до 16 000 символов с помощью блока расширения памяти размером с посудомоечную машину. ↑ А здесь можете подробнее почитать о ферритовой памяти 1401.

Запись в память каждого удара молоточком выполняется не компьютером. 5. При срабатывании молоточка импульс от электромагнита идёт по проводу через соответствуя сердечник, намагничивая его (Эти провода видны на фотографии сердечников в статье). Вместо этого каждый молоточек физически подключен проволокой непосредственно к определённому сердечнику памяти; 132 провода соединяют электромагниты с сердечниками. ↑

Было сложно определить, какой сигнал вызывал ошибку на входе F из-за «монтажной» логики 1401. 6. Один из трюков — монтажное ИЛИ вместо вентиля. Поскольку в те времена транзисторы были дорогими, IBM использовала ряд трюков, чтобы уменьшить их количество. Поэтому мы не могли просто прозондировать сигналы, подаваемые на контакт F — все они были связаны. Сигналы просто совмещались, так что если какой-то из двух имел высокий уровень, такой же получался у общей линии. ↑ Вместо этого пришлось отключить карты, чтобы проверить каждый сигнал по отдельности.

В печатном буфере 12 матриц памяти, то есть он хранит по 12 бит в каждом месте. 7. Вдобавок, четыре матрицы в печатном буфере предназначены для обнаружения ошибок: сигнальная матрица срабатывания молоточков, матрица проверки соответствия (запись молоточков, которые должны сработать), матрица завершения печати линии (PLC, запись колонок с напечатанными символами) и матрица проверки ошибок (колонки, которые вызвали ошибку). Как и в обычной памяти, 6 бит занимает каждый символ BCDIC, ещё один бит для метки слова (метаданные, указывающие местоположения полей) и бит чётности. ↑

Запись в ферритовые сердечники как будто происходит наоборот: высокий сигнал в шине запрета соответствует записи 0. 8. Чтобы изменить магнитное состояние сердечника, требуется сильный импульс; а импульс с половиной напряжения не влияет на него. Это связано с тем, как функционируют сердечники. Много матриц штабелированы друг над другом, каждая для одного бита. Сердечники расположены в сетке с адресными линиями X и Y, которые подают сигнал для выбора конкретного сердечника. У каждой матрицы есть шина запрета, которая проходит через все сердечники матрицы. По каждой линии подаётся сигнал с половинным напряжением, поэтому только на пересечении нужных линий X и Y хватает тока, чтобы намагнитить сердечник до состояния 1. Чтобы записать 0 в матрицу, на шину подаётся половинный ток в противоположном направлении. При записи 1 шина не получает тока, что намагничивает сердечник по указанному адресу, как описано выше. Таким образом, за счёт правильной установки шин можно записывать 0 и 1 по нужным адресам. В результате ни один из сердечников не получает достаточно тока для переключения, а сердечник по нужному адресу остаётся в состоянии 0. ↑

Информацию о проверках печати см. 9. Сведения о принтере 1403 см. в «Командной логике» на стр. 98. См. в «Описании компонентов IBM 1403», «Руководстве по техническому обслуживанию принтеров 1403» и «Руководстве по эксплуатации принтеров 1403». Подробное описание IBM 1401 — в «IBM 1401: современная теория работы». также эту краткую статью о принтере 1403 в журнале IEEE Spectrum. ↑

Показать больше

Похожие публикации

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»