Comments 23
Как всё сложно-то....
В современной памяти всё сложнее в разы, но оно спрятано в виде готового изделия с фиксированными характеристиками. И не у памяти точно так же.
А вот почитать настолько детально уже обычно негде - всё под тремя слоями NDA. Потому эти рассказы и интересны.
У современной, пожалуй, даже не в разы, а на порядки... Одно параллельное выполнение сразу нескольких операций (с разными банками) чего стоит :) А тут всё просто и примитивно: получил запрос -- выполнил запрос и жди следующего. И постоянная регенерация не нужна, а только после чтения -- не то что в DRAM :)
средняя наработка на отказ — не менее 1000 ч;
Раз в месяц ремонт...
и это только память, есть и другие блоки...
Учитывая что подобных шкафов в ЕС ЭВМ было более десятка, то ремонтировали её почти каждый день. Но надо отдать должно проектировщикам этих машин, полная остановка была очень редким явлением. Обычно ремонт происходил путем "горячей" замены ТЭЗов, машина даже сообщала какой из блоков сбоит и при определенном опыте найти и заменить дохлый ТЭЗ было не сложно. Гораздо гиморней было ремонтировать сами ТЭЗы.
Реально сильно зависело от машины, в частности, от года выпуска. Насколько мне известно, все ранние, в т.ч. ЕС-1030, ломались постоянно из-за низкой надёжности микросхем, а они, в свою очередь, -- из-за плохих корпусов: довольно долго у нас не могли победить материалы, обеспечивающие герметичность и всё такое. Когда эту проблему решили, количество поломок многократно снизилось. Основное сосредоточение микросхем -- процессор, а позже и память (когда она стала полупроводниковой). И вот на моей памяти, а это вторая половина 1980-х и 1990-е, что на СМках, что на ЕСках поломки в процессорах случались исключительно редко (раз в год и реже), а память страдала (раз в месяц) только на ЕС-1035 (микросхемы К565РУ1 -- возможно, ранних выпусков, тут я не в курсе), но не ЕС-1130 (К565РУ7) и не СМ-1420 и СМ-1600 (там, кажется К565РУ5 или РУ6). Причём в случае с ЕС-1035 тест показывал неисправную микросхему, так что замена сложности не представляла (впрочем, это память с контролем по коду Хэмминга, там такое сделать достаточно легко).
У ферритовой памяти собственно колечки ломаются редко и механически (ну, если к ним не лазить, конечно), а вот транзисторы, диоды и те же микросхемы (ранних выпусков обычно, ага) -- другое дело. Но у неё есть и другая проблема: нужно регулярно поднастраивать, ибо параметры со временем плывут, и автоматической калибровки не всегда хватает. Так что регулярное техобслуживание ей таки требовалось (в отличие от чисто полупроводниковой электроники, где обычно хватало прогона тестов в автоматическом режиме).
И от фазы Луны :)
За несколько лет в одном зале ни разу не сломались две PDP-11, несколько раз ломалась одна СМ-1420, и одна из двух СМ-4 после череды неисправностей в конце концов пошла на ЗИП для второй СМ-4.
А потом в другом зале я за несколько лет ни разу не видел “погоревшими” ни одного из двух HP-1000, которые там и до моего прихода чёрт знает сколько лет отработали, и ни одного из четырёх (два — стоечные, два — “пуфики”) MicroVAX.
Вероятно, дело в элементной базе :) "У них" в начале производства чего-то совсем нового тоже было полно проблем, но, естественно, их преодолевали и дальше всё было надёжным. У нас -- та же история, только со сдвигом на несколько лет, поскольку мы всегда отставали. Можно, в частности, предположить, что постоянно ломавшаяся СМ-4 -- из числа первых машин, почему и проблем имела больше, чем другая наша техника.
И, кстати, ещё стоило бы уточнить, что именно ломалось. Микросхемы у нас в 1980-х были уже вполне себе надёжные (опять-таки, новейшие имели определённые проблемы, но они преодолевались за несколько первых лет выпуска), а вот нормальные диски, кажется, так и не научились делать...
Конечно же дело было в элементной базе. “Горели” именно микросхемы. Та самая К155 серия. Конец 80-х, начало 90-х. Я уже рассказывал, как мы несколько недель охотились за одной такой, что вела себя как тот алконавт из анекдота, которому собутыльники в раю предъявили “Чё ты всё время куда-то сваливаешь?!”, а он такой “Простите, пацаны, я ещё в реанимации.”
7400 на моей практике умирали раз и навсегда, а К133/155 порой отчаянно боролись за жизнь, иной раз месяцами :)
Причём в случае с ЕС-1035 тест показывал неисправную микросхему, так что замена сложности не представляла (впрочем, это память с контролем по коду Хэмминга, там такое сделать достаточно легко).
Хэмминга - это больше, чем только чётность? А сколько там тогда контрольных битов было и на какую порцию?
И не было ли кросс-эффектов? (которые могут быть выловлены только квадратичными тестами)
Больше, да. Для 64-разрядного значения -- 8 контрольных битов, но не традиционной чётности, там хитрее всё считается. Этого хватало для выявления любых двойных ошибок -- т.е. неправильных значений двух битов в полном 72-разрядном слове, включающим контрольные разряды, и для исправления любых одиночных ошибок; в принципе, увеличив кол-во контрольных разрядов, можно добиться, например, 100% исправляемости одиночных и двойных ошибок, ну и т.д. Для 16-разрядного -- кажись, 5 контрольных битов нужно. В Вике, если склероз не изменяет, было описано корректно.
Вот почему его не использовали в ЕС-1050/52, я не знаю. Вроде, он к тому времени уже был известен и использовался, по меньшей мере, IBM в старших моделях (усложнение железа для младших моделей было бы вряд ли оправданным, но для старших -- сами понимаете).
Ну и для сравнения: ECC на тогдашних дисках, насколько помню, позволял исправить до 11 сбойных битов, но только если они следовали в записи подряд (что было вполне актуально: головка чирканула по поверхности диска -- вот тебе и сбойные биты).
Для 64-разрядного значения -- 8 контрольных битов, но не чётности
Не совсем так. Если в группе из 2^N битов N контрольных - это даёт корректировку одиночных ошибок и выявление двойных. 64+что-то это больше 64, но меньше чем 128. Поэтому там 7 контрольных бит по Хэммингу, но добавляют ещё 1 общей чётности, вот тогда получается ровно 72. Эта схема сейчас (современные x86, ARM, прочие) стандартная для DRAM с реальным ECC. Но вот момента её появления я не знал. Если она была в полном виде в ЕС-1035, честь им и хвала.
Для 16, да, именно по этой причине надо 5. Но это сильно дороже.
ECC на тогдашних дисках, насколько помню, позволял исправить до 11 сбойных битов, но только если они следовали в записи подряд (что было вполне актуально: головка чирканула по поверхности диска -- вот тебе и сбойные биты).
Как-то по цифрам не сходится. Если бы был ECC на всю дорожку, то, например, 3625 байт для 7.25Мб дисков давал бы необходимость 15 бит (добавим чётность - 16 - вполне удобно). Но 11 - это контрольные к группе в 256 байт? 128? Тут надо больше деталей.
Для 16, да, именно по этой причине надо 5. Но это сильно дороже
Существуют, кстати, микросхемы-контроллеры для формирования и проверки 16-разрядной памяти по Хэммингу. У меня где-то с десяток лежит (кажись, из 531-й серии). Надеюсь, дойдут руки замутить :)
Как-то по цифрам не сходится. Если бы был ECC на всю дорожку, то, например, 3625 байт для 7.25Мб дисков давал бы необходимость 15 бит (добавим чётность - 16 - вполне удобно). Но 11 - это контрольные к группе в 256 байт? 128? Тут надо больше деталей
Если склероз не изменяет, на одну запись независимо от её длины. Но надо смотреть доку на диски, конечно, чтоб точно сказать.
Больше деталей. Устройство управления IBM 2841, которое в частности рулит 7 Мб дисками, добавляет два байта контрольного кода в конце каждой области: собственный адрес, счёт, ключ и данные. Тип кода не уточняется (cyclic check). Определяются следующие ошибки:
Все ошибки в пределах 16-битной последовательности.
Любые нечётные ошибки.
Но это, как понимаю, чисто контроль, без исправления. А мне вот помнится именно про исправление -- только не помню, с какими дисками. Может, 200-мегабайтные ЕС-5080?..
Да, 100 и 200 Мб, кажется, умеют: у них прописана процедура восстановления с исправлением ошибки. Я посмотрю доки сегодня позже или завтра.
Управляющий модуль ЕС 5667, в девичестве IBM 3333, генерирует циклический код (error correction code, ECC), который позволяет обнаруживать все ошибки в данных и исправлять одиночный пакет ошибок до 11 бит включительно. Длина кода 56 разрядов (7 байтов). Точная формула кода не приводится, сам код относится к кодам Файера (Fire codes). Код ECC дописывается в конец всех областей дорожки: собственного адреса, счёта, ключа и данных, при этом исправление ошибок в первых трёх производится автоматически, через повторение команды канала, а для поля данных устройство управления передаёт смещение от начала и 3 байта, которые необходимо наложить операцией XOR на принятые ранее данные.
О, значит, само по себе правильно помнил, только не помнил, какие диски :) А на ЕС-5061, скорей всего, ещё обычный CRC без исправления, как и на мелких дисках?
Коротко: полной ясности нет, но что без исправления, точно. За отсутствием документации по ЕС-5061 дальше информация про "американский аналог" IBM 2314.
Устройство управления 2844 дописывает 4 байта, называемых data checking, в конце каждой области. Первые два из них - cyclic checking - скорее всего, полностью аналогичны 7 Мб, судя по многочисленным отсылкам "as the 2311".
За ними следует 2-байтный bit count appendage (BCA). Первый байт называется индикаторным и служит для поддержания совместимости между старым форматом, без BCA, и новым. Если УУ обнаруживает, что индикаторный байт пропущен, оно "довольствуется" только cyclic check.
Следующий байт - bit count byte - содержит двоичное дополнение младшего байта количества битов в проверяемой области. Я так понимаю, он увеличивает надёжность проверки, но никак не может служить для исправления данных.
Остаётся вопрос: в какой мере на ЕС-5061 реализована функциональность BCA? В принципе, возможно, что ЕС-овское УУ было скопировано из ранней модели IBM 2844 (или прототипа), и там присутствует только 2-байтный код проверки.
Папа говорит, что редкая модель, что больше были распространены 1033 и 1035
Угу. ЕС-1030 принадлежит к самому первому поколению наших ЕСок (1020, 1030, 1050), так что её по определению не могло быть слишком много. Но, вдобавок, она откровенно неудачна по конструкции, из-за чего при большом количестве деталей обеспечивала лишь весьма скромную производительность. Так что неудивительно, что их выпустили мало (по-хорошему, вообще выпускать такое не надо было бы -- но об этом в заключении).
Я работал когда-то инженером на Минск-32 (там тоже была память на ферритовых кольцах) и таки да, сбоила достаточно часть. Инженеры начинали "качать напряжение" (там на блоках питания были такие тумблеры на три положения: норма, чуть меньше и чуть больше) из-за чего менялась амплитуда импульсов, намагничивающих эти кольца. Блоков питания было много, и при какой-то комбинации память вдруг начинала работать без сбоев.
Но если это не помогало, начальник машины брал деревянную рейсшину, ложился на пол и стучал по кубам, у которых внутри были сетки с этими кольцами...
Почти всегда это помогало, вот она, высшая квалификация!
ЭВМ ЕС-1030. Оперативная память