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

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

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


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

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


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

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


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

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

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

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


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

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


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

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


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

После некоторых сложных манипуляций6 мы выяснили, что проблема связана не с проверкой срабатывания молоточков, а с другой проверкой: «завершение печати строки» (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

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

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


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

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

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


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

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


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

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


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

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


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

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


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

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

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


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

Выводы


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

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


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

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

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

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

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

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

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

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

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

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

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

Комментарии (59)


  1. gleb_l
    19.09.2018 23:14
    +4

    Американскую инженерную школу, помимо хитрых технических решений, отличает и встраивание в устройства развитых средств диагностики (в этом устройстве — вплетенные практически в оконечный механизм — ток, приводящий в действие молоточки, прямым своим действием устанавливает бит «удар сделан»). Это позволяет, потеряв немного при выпуске устройств за счет небольшого усложнения конструкции, многократно выиграть в эксплуатации и поддержке на стоимости диагностики и ремонта (труд квалифицированного персонала дорогой!), а также выявить большое количество неисправностей с помощью формальных диагностических карт (так как входной информации для них становится достаточно).

    Спасибо, прочитал статью с большим удовольствием (хотя перевод хромает в достаточно типичных местах)


    1. Berkof
      20.09.2018 06:03

      Не знаю — отличительный ли это признак именно американской школы… Как-то довелось мне чинить трактор (кажется — Valtra), так там руководство пользователя страниц на 800 А4 со схемами, с указанием куда чем потыкать (вольтметр/омметр) на каких режимах (выключен/заведён), и специальные диагностические разъёмы, и куча датчиков, и инженерный режим для встроенного компьютера… короче, имхо, это просто признак профессиональной техники от хорошего производителя.


      1. 8street
        20.09.2018 09:55

        Документация частотного преобразователя S120 ф. Siemens в 12 томах с кол-вом страниц от 300 до 2700. Но и даже в ней нет полной принципиальной схемы, ибо ноу-хау, только блочные.


    1. rutenis
      20.09.2018 10:41

      Развитые средства диагностики — это, отчасти, следствие из особенностей коммерческого применения вычислительной техники в те времена. IBM тогда не продавала свои мэйнфреймы, а отдавала в аренду их машинное время, и арендная плата начислялась пока на них работали программы заказчика. Соответственно, простои техники (к слову, и сбои в операционной системе тоже) вели к прямым убыткам, отсюда требования быстрой диагностики и ремонта «в полевых условиях».


      1. Jenix
        20.09.2018 21:26
        -3

        То есть это забота о собственной прибыли, а вовсе не забота об удобстве покупателя, как тут нам пытается представить товарищ про

        Американскую инженерную школу
        )))
        Смешно, до чего некоторые овощи низкопоклонно преклоняются перед барыгами.


    1. Jef239
      20.09.2018 11:49

      я бы сказал наоборот — для ремонта советского АЦПУ (редкий плавающий дефект) мне было достаточно вешать логический пробник на разные сигналы. Аналогично — с лентопротяжкой, правда она более-менее стянутая у DEC была. Впрочем, это было третье поколение, а тут — второе.


    1. ledinhome
      20.09.2018 20:59

      Мне вспомнилось как много лет назад, в радиокружке, преподаватель ремонтировал огромный цветной телевизор. Вроде как в качестве мощных ключевых элементов стояли тиристоры. Так вот, наши инженеры написали туда столько защит, что чих в одном из блоков вызывал срабатывание защиты по всем другим. Как сказал тогда препод, пока он их все не вырезал диагностировать было нечего. Это я к тому, что далеко не всегда защита=средству диагностики, по статье у меня сложилось мнение что это была защита и ремонт она скорее усложнила.


      1. gleb_l
        20.09.2018 21:35

        Защита <> Диагностика. В аналоговых схемах, понятное дело, это сделать непросто, но по-правильному, если сработала защита по причине X в модуле Y, и отключились зависимые от Y модули A,B,C — то должен предоставляться и способ это узнать — то есть диагностический сигнал должен однозначно указать, что модули A,B,C отключены из-за неполадки X в модуле Y, а не просто сами по себе. Вот тогда это — правильная реализация. Если же этого нет, то успех починки отдаётся на откуп опыту конкретного мастера, который, отключая защитные механизмы, может спалить ещё несколько модулей ). Это — не американская, а сермяжная школа. Вспомните газовщиков, проверяющих спичкой утечку в соединениях труб, или «автоэлектриков», проверяющих наличие 12 вольт «на искру»


  1. nochkin
    20.09.2018 05:33

    Надо было по гарантии поменять просто.

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


    1. safari2012
      20.09.2018 09:42

      Не просто со схемами, а еще и с исходниками операционной системы и околосистемного ПО. Что позволило СССР клонировать их мейнфреймы в наши ЕС-ки.


    1. Jef239
      20.09.2018 11:51

      И не просто со схемой — с описанием логики работы вплоть до микросхемы.


  1. Berkof
    20.09.2018 05:54

    Иметь полную документацию — бесценно… Сейчас это — одна из причин успеха opensource (помимо бесплатности при покупки и возможности допилить напильником как тебе надо). Мечтаю, чтобы и обычную технику потихоньку начали продавать с полной документацией, например — можно на 1% снизить налоги с производителей, которые выкладывают полную техническую документацию на свой товар (схему ротора двигателя, припуски, марки металлов, толщину и тип провода обмоток… ну вообщем всё про готовое изделие, но без тех.карт производства — всё-таки это их информация)… чтобы лет через 5, когда будут 3д принтера по металлу, можно было без проблем скачать чертёж треснутого суппорта и распечатать, а не искать токаря/фрезеровщика/сварщиа, готовых эту деталь воспроизвести руками.


    1. HectorPrima
      20.09.2018 09:04

      К слову, там явно не на токарном резали а обычным надфилем.


      1. HiMem-74
        20.09.2018 11:43

        К слову, там явно не на токарном резали а обычным надфилем.

        Предположу, что в оригинале «grinder machine», это точильный станок, а не токарный.


        1. lorc
          20.09.2018 15:04

          Скорее уж шлифовальный.


    1. 8street
      20.09.2018 09:42

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


      1. Jef239
        20.09.2018 11:56

        Почему? Документация позволяла прямо в ВЦ выявить отказавшую микросхему или ТЭЗ. А меняли, само собой, по возможности ТЭЗами.

        Смысла нет менять микросхему, если на ТЭЗ одна микруха + чуть-чуть рассыпухи. Логичней сразу ТЭЗом.


        1. 8street
          20.09.2018 13:03

          Это, если вы инженер, обслуживающий ВЦ.
          Там человек, выше, предлагал обычную технику с полной документацией продавать. 99% пользователям это не нужно. Вот вы обычный пользователь ПК, сгорит у вас встроенная в материнку сетевуха, толку будет от документации?


          1. Jef239
            20.09.2018 13:30

            Угу, я программист. На этой самой СМ-1600 был системщиком. Но что делать, если дефект плавающий и при электронщиках не вылезает? Логический пробник в руки, описания схем — и ловить.

            сгорит у вас встроенная в материнку сетевуха, толку будет от документации?
            Ну самый простой ремонт — отключить от неё питание и CS и поставить внешнюю. Для этого и нужна дока — чтобы не выпаивать всю микросхему, а откусить пару выходов.

            Более сложный ремонт — замена микросхемы, тут нужен datasheet, чтобы проверить совместимость. А без неё — только оригинальную ставить.

            P.S. ну да, АСУТП и embeded — это близко к железу.


          1. Jef239
            20.09.2018 18:38

            Я другой вам пример приведу. Вот у вас комп перестал работать. То ли материнка, то ли проц, то ли блок питания. И без второго блока питания и второго проца вы сейчас не поймете, что же сгорело. А если есть технологические карты напряжений — то можно с китайским мультиметром за 200 рублей сделать первичную диагностику. И с шансом 90% все ограничится одной покупкой.


            1. 8street
              21.09.2018 09:40

              Нет, нельзя. Во-первых, все напряжения могут быть в норме, но ничего не работает. Например, обрыв внутри кристалла диода или транзистора. Но, если какой DC/DC преобразователь выйдет из строя, то может помочь. Второе, иногда бывает, что комп стартует и через 0.1 сек выключается. Мультиметром такое не измерить.


              1. Jef239
                21.09.2018 10:40

                Чуть внимательнее читать надо, я недаром про 90% написал. :-) Фактически, на наших собственных платах, хватает двух светодиодов. Один из них показывает наличие питания на процессоре, второй висит на GPIO и мигает, если проц стартовал. Я бы даже сказал, что это дает не 90%, а 98% диагностики. Но у нас довольно простые платы.

                Второе, иногда бывает, что комп стартует и через 0.1 сек выключается
                А это очень характерная картинка. Светодиод питания в момент перегрузки тускнеет, а на светодиоде от GPIO вместо ровного тик-так — дает нечто рваное.

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


                1. 8street
                  21.09.2018 11:39

                  Я видел про 90%, но считаю, что просадки по питанию значительно реже этих цифр. А по поводу светодиодов — я с вами согласен. На одной из моих ПК матерей было 3 аварийных светика: cpu, memory, еще что-то. Было очень удобно, определять, что отвалилось. Без всякой документации.


                  1. Jef239
                    21.09.2018 11:50

                    90% — это то, что можно легко диагностировать мультиметром и светодиодами. То есть комп не включается, POST не идет. Значит сгорел или БП или мать или проц. Эту ситуацию берем за 100%. Вот 90% от неё — простые поломки типа БП выдает не все напряжения или отключается при большом токе. Или не работает преобразователь питания на плате. Или срабатывает защита по питанию на плате. Или сгорел проц.

                    просадки по питанию значительно реже этих цифр
                    Это специфика GPS. Приемник в режиме быстрого поиска сигналов (до первого решения) потребляет мощность чуть ли не в десяток раз больше, чем в нормальном режиме.


    1. AquiHostStrider
      21.09.2018 09:18

      Мечтаю, чтобы и обычную технику потихоньку начали продавать с полной документацией
      Да вобщем-то даташиты и так на большинство существующих в природе микросхем и пассивных элементов находятся в открытом доступе, но сейчас это не спасёт отца русской демократии. Сейчас платы от бытовой техники — многослойные, микросхемы BGA в тонюсеньких корпусах посажены на бессвинцовый припой и всё это зачастую залито сухими китайскими соплями компаундом. Ремонту такое практически не поддаётся.


  1. yurisv3
    20.09.2018 08:12

    перемещались вертикально для выбора символов, поэтому любые ошибки смещения или синхронизации изменяли вертикальное положение символов, приводя к уродливому волнистому тексту

    «Узнаю брата Колю!» выход принтера ЕС-ки… Там правда не вертикальные линейки, а вращающийся барабан. И «амурские волны», да. Во всей красе.


  1. Arxitektor
    20.09.2018 08:58

    Просто супер.
    А ведь не давно то это был отличный мейнфрейм как я понмаю это как сервер.
    В 60 году можно было починить отдельный транзистор )
    Интересно чинить транзистор не пробовали?


    1. DGN
      20.09.2018 22:32

      Аналогично, было такое чувство, что они его починят. Но не хватило имеющихся технологий.


  1. Javian
    20.09.2018 09:07

    Нижний левый транзистор вышел из строя и был заменён

    видимо аппарат стоял где-то в пыльном и сыром помещении — вся плата в какой-то грязи, а блестящие корпуса транзисторов помутнели.


    1. 8street
      20.09.2018 09:51

      Ну так, это же с 1960х годов выпуска. Я считаю, это очень чистые платы. Попробуйте открыть годовалый современный компьютер и посмотреть, что там будет.


      1. Javian
        20.09.2018 20:11

        У меня фильтр на входе стоит. Пролетает только микропыль и то сухая. А тут явно вода была.


  1. u-235
    20.09.2018 09:34
    +1

    "Гейт или ворота" в данном случае называется корзиной плат или просто корзиной.


    1. m1rko Автор
      20.09.2018 10:45

      Спасибо за информацию!


      1. walti
        20.09.2018 13:08

        А «затвор» — это у полевого транзистора. Latch — так и переводится, как защелка.
        ПС. Что такое «циановый»?
        Я еле выучил «коралловый» (само слово, не цвет), а тут еще один непонятный оттенок.


        1. m1rko Автор
          20.09.2018 13:33

          Циан — не оттенок, а один из базовых цветов, вместе с жёлтым и маджентой! Это всякие там красный и синий — непонятные оттенки в системе CMYK! :)))

          А если серьёзно, то мадженту хотя бы можно назвать пурпурным цветом, а вот для циана слова нет, разве что «сине-зелёный»… Но если говорят «сине-зелёный», мне трудно это визуализировать, а вот циан — сразу понятно.


          1. 8street
            20.09.2018 14:27

            "Закат солнца видел когда-нибудь? Вот точно такой же, только зеленый."©


          1. walti
            20.09.2018 16:55

            Если серьезно, люди, которые работают с осциллографами их не различают.
            Циан — это тот, который не красный.
            Ок.
            Т.е. желтый.


  1. hdfan2
    20.09.2018 09:45
    +1

    Круто. Взяли и починили один бит. Прикладная некромантия. Только читать было тяжеловато из-за кучи сносок; лучше бы их прямо в текст вставили.


  1. vesper-bot
    20.09.2018 10:04

    Теперь я знаю, какие такие карты переставлял Ковекс и потом лопал Маззи!

    Спасибо, классный детектив. Убийца — транзистор — это сильно!


  1. IgorKuznet
    20.09.2018 11:47

    Спасибо! Были фичи в наше время — разбор принципиальных схем и документации! Недавно ко дня программиста нашел ролики про наши ЕС ЭВМ на Байконуре! У нас там мужиков 20 было, которые легко «чинили» железо! Здорово! Удачи автору!


  1. Jef239
    20.09.2018 12:00

    Самая смешная из историй про железо — это исторяи про ЕС 1035 с заводским номером 3. Там при сравнении вещественных сравнивались только мантиссы. Соответственно 2.0 было равно 16.0. Коллега, который это нашел в своей программе, очень долго удивлялся, когда понял, что ошибка в процессоре. Не меньше удивлялся и завод-изготовитель.


    1. sshikov
      20.09.2018 19:05

      Ну, я не знаю, чему удивлялся изготовитель. Мы регулярно получали обновления прошивок на ЕС-1061 и 1046 (правда, это наверное было чуть позже), и ловили ошибки в них. Чем 1035 лучше — не ясно.


      1. Jef239
        20.09.2018 19:11

        Тому, что тесты эту ошибку не поймали. Да и вообще, не написанный кусок кода — это такой epic fail.


        1. sshikov
          20.09.2018 19:18

          Тесты? Вообще говоря, микропрограммы, которые грузились в ЕС второго поколения, писались непонятно на чем, там система команд была не S/370 вовсе. Я не уверен, что там был хоть какой-то инструментарий для тестирования. В лучшем случае — ассемблер. А тесты, которые делаются ручками — ну так что от них можно ждать?

          В нашем же случае ошибка вообще была более сложная — там повторно срабатывал таймер, вызывая неожиданное прерывание, при обработке которого VM/SP зацикливалась (и все это в процессе IPL). На такие асинхронные процессы с инструментарием для тестирования и сегодня далеко не все хорошо.


          1. Jef239
            20.09.2018 20:29
            +1

            А что вас так тесты удивили? На любую ЭВМ тех времен в комплекте шел большой набор тестов, в том числе и тесты процессора. Они проверяли в том числе правильное исполнение всех команд процессора.

            Просто тесты эту ситуацию тоже прощелкали. Что 2.0 с 3.0 верно сравнивается — проверили, что 3.0 с 2.0 — тоже, что 2.0 с 2.0 — тоже, а вот 2.0 и 16.0 — фантащиии у авторов тестов не хватило.

            Само собой, это тесты на процессора, а не автотесты микроцессорного кода. То есть писались на обычном ассемблере.

            P.S. А обычное применение тестов было забавное. Приходит @удак с претензиями в ВЦКП — «ваша ЭВМ неверно считает». Ноль проблем — запускаем тесты. По тестам все ОК — ну и потраченное машинное время ему в счет. :-) А тесты (контрольные примеры в той терминологии) были на все, включая компиляторы. Это 1983 год, я тогда пару месяцев оператором ЕС-1022 работал.

            P.P.S. Интересно, а вы не пробовали в своей ситуации тест ПДП (DMA) запускать? Он не говорил в чем ошибка, но зато прилично нагружал всё систему. Он как раз мог показать, что баг имеется.


            1. sshikov
              20.09.2018 20:39

              >А что вас так тесты удивили?
              Тем, что тестировали они весьма примитивные вещи. Только плиз, не надо мне тут ля-ля…

              >Они проверяли в том числе правильное исполнение всех команд процессора.
              Нет, не проверяли. Кто вам сказал такую ерунду?

              >Это 1983 год, я тогда пару месяцев оператором ЕС-1022 работал.
              В 1983 я уже работал системным программистом.


              1. Jef239
                20.09.2018 20:55

                Ну дайте пруф, что не проверяли. За 35 лет, конечно, я мог что-то подзабыть, но мне помнится, что тест процессора (судя по документации) проверял каждую машинную команду. Бегло, а ля «фальшивый цитрус», но проверял.

                Со своей стороны — вот вам ссылка на книжку по тестам процессора.


                1. sshikov
                  20.09.2018 21:55

                  Пруф на то, чего не делали? Как вы себе это представляете? Ну и я тоже с ЕС уже с 1996 не работал, вообще-то. Но тем не менее…

                  Если вы видели спецификацию на систему команд S/360, то должны помнить, что это книжонка страниц на 600. Она у нас издавалась, кажется из-во Мир. Это сложная достаточно система команд, CISC архитектуры. С арифметикой-то проблем нет, а вот дальше…

                  Попробуйте прикинуть для смеху, как вы будете тестировать команды типа условных переходов, вроде BC. Или BALR какой-нибудь. Намек — как проверить что-то типа условного перехода (а-ля if в языке более высокого уровня), если вы подозреваете, что он может не работать на уровне железок?

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

                  Написать полный тест на систему такой сложности и сегодня почти не реально.

                  Да, и текста книжки по вашей ссылке кстати нет, похоже.


                  1. Jef239
                    20.09.2018 23:07

                    Пруф на то, чего не делали? Как вы себе это представляете?
                    Легко. Или перечь поставляемой документации на процессор, в котором нет описания контрольного примера. Или (хуже) ГОСТ на документацию к процессору, позволяющий его выпустить без описания контрольного примера.

                    Другой момент, что у системщиков этой книжки могло не быть, она должна была быть у электронщиков (или своих или приходящих).

                    Если вы видели спецификацию на систему команд S/360, то должны помнить, что это книжонка страниц на 600.
                    600 страниц — это учебник. Само описание системы команд — станиц 250-350.

                    Попробуйте прикинуть для смеху, как вы будете тестировать команды типа условных переходов, вроде BC.
                    Знаете, если бы это было сложно — не было бы написано ни одного программного эмулятора. :-) А тестируется оно просто. Ассемблеры я подзабыл с годами, так что не пинайте сильно. То, что ниже — это некоторая пародия на PDP-11, увы уже не все мнемоники помню.

                    CLR R0
                    MOV #1, R1
                    TST R1
                    JPL $1
                    INC R0
                    $1:
                    MOV #2, R2
                    CMP R2, R1
                    JPL $1
                    INC R0
                    $2:


                    Если у нас в R0 — 0, то все хорошо. Если 1 — не работает выставление битов одной из команд процессора, если 2 — или не работает условный переход или вообще не выставляется бит PL.

                    Тут проблема лишь в выдергивании себя за волосы. То есть надо примерно 30 работающих команд, чтобы тест мог хоть что-то выводить. Если не путаю, первые фазы теста можно было проходить пошагово с инженерного пульта.

                    Все такие тесты могут быть только косвенными, и потому заведомо неполными.
                    Конечно, не совсем полными. Вы зря не погуглили про "фальшивый цитрус". Это как раз хороший пример типичного качества теста. Дело в том, что цель данного теста — не проверка правильности реализации команд, а проверка работоспособности процессора.

                    А проверка правильности реализации команд — это чуть иной тест. Если не путаю, то у Брукса написано, что именно так процессор и разрабатывали. Писали тесты, если они не проходили — быстро делали заплату красными проводами, потом с завода приходили уже исправленные платы с обычным монтажом.

                    Ну и при написании эмуляторов CPU используются довольно подробные тесты.

                    Да, и текста книжки по вашей ссылке кстати нет, похоже.
                    Можете заказать по МБА из публички или ленинки. Там есть главное — выходные данные.

                    Кстати, насколько я помню, на СМ-1600 был один тест, загружавшийся в память микрокоманд. Увы, не знаю, было ли подобное на ЕС ЭВМ. А вот книжку с текстом микрокода для СМ-2М я сам листал. Была одна веселая история с этой машиной.


                    1. sshikov
                      21.09.2018 20:11

                      Давайте начнем с простого: тесты не гарантируют отсутствия багов. Они показывают только их наличие. Надеюсь, это не нужно доказывать? В этом смысле я и имел в виду, что полноценная проверка невозможна — все равно все кейсы покрыть тестами нельзя, даже теоретически. Это не процессоров касается — это универсальный принцип.

                      Что же до практики, то ваш пример все упрощает. Вот смотрите, тупой код команды условного перехода S/360:

                      … нечто, что выставит биты CC в PSW, обычно это сравнение
                      BC , LABEL… переход
                      … условие не выполнилось

                      LABEL… условие выполнилось


                      Сколько тест кейсов вы видите в этом примере, с учетом того, что мы исходим из возможной неработоспособности любой команды? Я вижу примерно столько:

                      1. До команды BC в PSW был такой condition code, какой мы ожидали (в принципе, установка напрямую кажется достижима только командой LPSW, т.е. немного необычными средствами — все остальные команды выставляют биты косвенно, и как мы предполагаем, тоже могут не работать)
                      2. До команды BC в PSW был НЕ такой condition code, какой мы ожидали (команда сравнения не сработала).
                      3. Команда BC сработала как надо, в соответствии с CC и маской, произошел переход на метку LABEL.
                      4. Команда BC сработала как надо, в соответствии с CC и маской, НЕ произошел переход на метку LABEL.
                      5. Команда BC не сработала как надо, в соответствии с CC и маской, НЕ произошел переход на метку LABEL, хотя должен был.
                      6. Команда BC не сработала как надо, в соответствии с CC и маской, произошел переход на метку LABEL, хотя не должен был.
                      7. Команда BC не сработала как надо, переход произошел непонятно куда (в произвольное место памяти + смещение в регистре).

                      И как пить дать, это еще не все.

                      То есть, на мой взгляд, тут куча случаев. Даже безусловный переход производится по адресу вида базовый регистр + смещение, и может работать неправильно кучей способов: не то смещение, не тот регистр, не то значение адреса. И наконец, отсутствие перехода, хотя маска и предполагает, что он безусловный, или наоборот, переход по маске 0, которого быть не должно.

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

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


                  1. Jef239
                    20.09.2018 23:33

                    Ну вот вам к примеру "ГОСТ 16325-88 Машины вычислительные электронные цифровые общего назначения. Общие технические требования " Гляньте пункты 1.5 и 7.6. Но это я так, просто бегло погуглил.


  1. old_gamer
    20.09.2018 12:15

    Очень приятная статья. Ламповая такая.
    Спасибо!


  1. dio_eraclea
    20.09.2018 12:48

    Транзистор внутри напоминает наши серии МПхх. Интересно, наши их копировали или «музыкой навеяло»?


    1. yurisv3
      20.09.2018 13:49

      МП красивше. Или фото не очень.


    1. nehrung
      20.09.2018 15:42

      Внутри неисправного германиевого транзистора IBM 083
      В исходной статье не указано, как удалось найти подходящий для замены? А если не удалось, то чем заменили? Ведь германиевые транзисторы практически не производятся, а уж конкретный тип, я уверен, не найти наверняка.


      1. walti
        20.09.2018 16:58

        Сдернули с другой, может даже не рабочей, платы.


      1. dmiceman
        20.09.2018 18:35

        Наверняка, методом выпаивания из другой железяки. Вот, например, видео о восстановлении телетайпа модели 19: www.youtube.com/watch?v=-LD872EWKaE (одно из; как раз про визит к товарищу, у которого запчасти есть).


  1. dmiceman
    20.09.2018 18:30

    К слову, очень рекомендую посмотреть канал Mark Curious Verdiell, упоминаемого в статье. Экстремально лампово!


  1. boroda_el
    21.09.2018 09:31

    Очень интересная статья! Хоть практической пользы от нее сейчас нет, это как метко сказали в комментах, прикладная некроманития. Но процесс захватывающий! Найти поломку вплоть до отдельной детали!

    А сейчас как принтера чинят? Перезагрузи принтер, перезагрузи комп, обнови драйвера, выкини принтер поставь новый.