Иван Савватеев @SIISII
Микроконтроллеры, цифровая электроника, ОС…
Information
- Rating
- 1,794-th
- Location
- Солнечногорск, Москва и Московская обл., Россия
- Date of birth
- Registered
- Activity
Specialization
Embedded Software Engineer
Lead
Микроконтроллеры, цифровая электроника, ОС…
Частично Вы отметили разницу между машинами для научно-технических расчётов и экономических, отмечу и я, только несколько полнее.
Научные расчёты, если говорить совсем уж утрировано, сводятся к тому, что в машину вводится три числа, потом машина полдня что-то с ними делает по формулам, которые простым смертным понять не дано, и в конце печатает результат -- другие три числа.
Экономические расчёты -- нечто противоположное. В машину вводится огромное количество данных (например, количество отработанных в месяце часов каждым работником предприятия, всякие надбавки, коэффициенты и прочая), затем машина выполняет очень простой расчёт (зарплату, в большинстве случаев, рассчитывать можно научить даже второклассника), а в конце печатает результат -- длиннющие "простыни" всяких табелей и ведомостей.
Как следствие, для "научной" машины важнейшим критерием является производительность на операциях над вещественными числами (числами с плавающей запятой). Для "экономической" машины эти операции не нужны вообще, зато очень полезны десятичные операции (ибо правила округления и т.п. вещи в экономике жёстко регламентированы и, естественно, под десятичную систему) и быстрый ввод-вывод, поскольку машине приходится не столько считать, сколько вводить и выводить данные.
Очевидно, что разный род задач требует для своего эффективного решения разного набора команд у процессора. Скажем, наша БЭСМ-6 (1967 год) -- самая мощная из советских "числодробилок" -- на научных расчётах была раза в два быстрей, чем самая мощная из ранних ЕС ЭВМ -- ЕС-1050 (надеюсь, руки дойдут и про неё написать), да и с американскими успешно могла соревноваться, если не считать суперкомпьютеров CDC, которые были в пике раз в 10 быстрей. Но на экономических расчётах её даже не пытались сравнивать с ЕС ЭВМ: система команд БЭСМ-6 исключительно неэффективна для любых задач, кроме научных (у неё даже операций над целыми числами как таковых нет, насколько помню), да и с последними тоже не всё так радужно.
IBM же делала Систему 360 как универсальную, 360 в её обозначении -- это рекламные "360 градусов", пригодность для любых задач (что не соответствовало действительности даже тогда, но было куда ближе к ней, чем у подавляющего большинства, если не у всех вообще, других компьютерных архитектур того времени).
Следствием разного характера задач в случае "экономики" является постоянная недогруженность процессора: он, по большей части, стоит и ждёт, пока будет введена очередная порция исходных данных или выведен результат предыдущих расчётов (что тогда, что сейчас процессор намного более быстр, чем периферия). Учитывая огромную стоимость "железа" в те годы, желательно процессор как-то суметь загрузить -- а значит, нужно параллельно выполнять несколько задач и, когда одна останавливается в ожидании завершения ввода-вывода, передавать управление другой, готовой к работе задаче.
Но, чтобы иметь возможность выполнять несколько задач, они должны быть загружены в память -- а значит, подавай большой объём памяти. У той же БЭСМ-6 адрес был 15-разрядным, а соответственно, предельный объём памяти -- 32 Кслова (слово там 48 бит, поэтому условно будем считать, что память у неё -- 96 Кбайт, хотя байтовой организации там не было, что тоже сильно мешало решению любых задач, кроме научных). Ну а у Системы 360 -- 24 бита, что позволяло иметь объём памяти до 16 Мбайт (абсолютно немыслимая величина в те годы, такой объём мощные машины "у них" получили лишь во второй половине 1970-х, когда у нас уже была грустная шутка про "мегабайт -- американское название килобайта").
Для того, чтобы управлять несколькими параллельно работающими задачами, нужна достаточно развитая операционная система, а также некоторые вспомогательные "железные" механизмы -- как минимум, защита памяти и таймер. У Системы 360 это было, у большинства других архитектур -- нет. Плюс, нужна лишняя память под нужды самой системы.
Следствием разного объёма данных является разный набор внешних устройств -- и по скорости, и по объёму. Вполне возможно, что именно это стало одной из причин нашего отставания в этой области (куда большего отставания, замечу, чем в области собственно процессоров): мы просто толком не занимались, скажем, магнитной записью (абы как сделали -- и ладно), поэтому не было ни дисководов (только магнитные барабаны малой ёмкости -- они намного проще по конструкции), ни хороших материалов для магнитных лент (из-за чего "у них" давно писали уже с плотностью 246 бит/мм, а у нас -- только 32, поскольку даже для 63 бит/мм наши магнитные ленты, по большей части, не годились).
Что касается ОС, её ещё надо написать -- а это огромный объём работы, ну а в одной IBM было больше программистов, чем во всём СССР. "Научные" задачи у нас нередко гоняли вообще без всякой ОС: просто вводили в память машины и запускали. Эффективное же решение "экономических" задач с подобным подходом невозможно.
Я бы сравнил решение о копировании архитектуры с копированием B-29 по приказу Сталина. По легенде, Туполев сказал: зачем копировать, мы сделаем лучше! Ну а Сталин ему ответил: "не надо лучше, сделайте такой же". Сделали, назвали Ту-4. Понятно, что самолёт изначально был устаревший (раз в 1944 он уже летал и бомбил японцев, значит, на момент начала копирования он уже был "старым", пускай и новейшим в строевых частях -- американские конструкторы уже разрабатывали следующие самолёты). Но его копирование потребовало создать нормальную авиационную промышленность и смежные производства вместо той полукустарщины, что была у нас: серийно выпускать столь сложный самолёт "на коленке" просто невозможно, поэтому пришлось подтягивать технологии и производство, повышать его культуру и т.д. и т.п. (а не подстраивать проект самолёта под имеющиеся возможности, как было бы в случае "сделаем лучше": единичный экземпляр точно сделали б лучше, а вот запустить серию...).
Ну, конкретно во время начала работ по ЕС ЭВМ всё было более-менее доставабельно легально. Ну а документация по архитектуре (собственно, единственное, что необходимо для решения задачи создать совместимую технику -- остальное лишь полезно) доступна без ограничений что тогда, что сейчас, поскольку это публичная вещь.
Ну и замечу, что "у них" наследники Системы 360 живы и выпускаются по сей день -- мэйнфреймы IBM z/Architecture.
Дейкстра работал на конкурентов IBM, отсюда может быть его большая нелюбовь к её разработкам. Кроме того, он, как и основная масса советских разработчиков 1940-60-х, был зациклен на научно-технических расчётах, в то время как IBM во многом ориентировалась на бизнес-задачи. Собственно, одна из причин копирования IBMовской архитектуры (а не самих машин!) в СССР -- это когда решили заняться АСУчиванием народного хозяйства и внезапно обнаружили, что ничего сколько-нибудь подходящего отечественного банально нет, а перспективы создания туманны (из-за отсутствия, в первую очередь, людских ресурсов).
Что касается ввода-вывода в Системе 360, то нельзя судить, что конкретно ему (Дейкстре) там не нравилось. Да, каналы ввода-вывода там очень примитивны, но они таки разгружали центральный процессор от рутины по организации связи с устройствами, передаче данных и т.д. и т.п., а заодно обеспечивали полностью унифицированный интерфейс ввода-вывода. Вот в CDC, которые он где-то хвалил, в роли каналов были полноценные 12-разрядные компьютеры, и основной код ОС крутился как раз на них, а не на 60-разрядном "центральном процессоре". Понятно, что ЦП при такой схеме занят почти исключительно полезной работой в виде выполнения программ пользователя, но платой становятся очень дорогие каналы (полноценные ЭВМ, повторюсь). Для суперкомпьютеров, каковыми они, по сути, и были, это нормально, но для более-менее массовых машин неприемлемо. Плюс, эти машины были ориентированы исключительно на научные расчёты (как у нас, скажем, БЭСМ-6), в отличие от намного более универсальной Системы 360.
Клонами они не были, не надо врать. За исключением ЕС-1035, у всех наших машин даже микроархитектура была своя, а реализация была своей всегда -- поскольку элементная база была банально другой. Что же касается ЕС-1035, то микроархитектура этой машины таки позаимствована у IBM 370/145, но реализация, опять-таки, своя.
Это ещё может быть связано с изменениями в законодательстве. Архитектуры (т.е. системы команд и всё, относящиеся к "точке зрения программиста") в 1960-70-х не защищались, а соответственно, любой мог выпускать свои реализации чужих архитектур (в частности, поэтому СССР ничего не нарушил, позаимствовав у IBM, HP и DEC их архитектуры). А вот позже, насколько знаю, это дело стали защищать юридически.
Поправка: 1977 год -- К580ИК80, переименование произошло позже, когда расширили номенклатуру обозначений микросхем (главным образом, ввели обозначения для микропроцессоров и иже с ними -- ВМ, ВИ, ВТ, ВВ...)
А я вот сейчас делаю несколько подпиленный римейк проца СМ-2420.01 -- в тырнетах есть схема и техописание, ну а это первый проц, какой в своё время я разобрал по косточкам, так сказать (году эдак в 1987-88) :)
Брать и читать оригинальные интеловские даташиты (собственно, советские -- это их переводы, иногда с косяками, иногда обрезанные). Плюс, у Интела были книжки про использование их железяк -- с примерами и прочим.
1989 -- это уже самый конец СССР, когда "социализм" уже, по сути, дал дуба; тогда в продаже что-то появляться стало (всякие спекулянты стали торговать уже открыто, а не из-под полы, а что-то и само государство стало, наконец, гражданам продавать). А попробуйте купить, скажем, в 1980-м -- фигушки. Зато дорогого Леонида Ильича можно было лично послушать.
Кроме того, Москва, Ленинград, Киев, Минск -- это далеко не весь СССР, так снабжение и всё такое прочее было намного лучше, чем в целом по стране. Недаром была типа загадка: длинное, зелёное, колбасой пахнет (ответ: электричка из Москвы).
Наконец, кружки -- это вообще ни разу не показатель, поскольку это организация -- а попробуй купить как частное лицо. (Ну и читай в таких условиях Хоровица с Хиллом про возможность заказа по почте чего угодно хоть из Мухосрановки-на-Аляске, а не только из Нью-Йорка).
Если будут вопросы, спрашивайте: тут пока что ещё довольно много тех, кто с подобными древностями работал :)
Ну, отладить логику взаимодействия и т.д. и т.п. вполне можно и на Ардуине -- скорость в данном случае не требуется. А перенести уже отлаженное будет, думается, несложно.
Хотя, может, поздние варианты и поддерживали частоты свыше 3 МГц, но, вроде б, предел везде 2,5 указывается... Впрочем, обычно работает; кажись, в заводском Векторе его на 3 МГц как раз и гоняли.
А ПЛИС -- откопали старую, 5-вольтовую, или преобразователи уровней лепите?
1) Если говорить строго, то нужно гарантировать порядок подачи питания, причём -5 В идут первыми, иначе проц имеет полное право сдохнуть. Учитывая, что сам БП никакого порядка не гарантирует, единственный способ -- делать свой... скажем так, контроллер питания, который пропускает на проц напряжения в нужном порядке. Правда, я неоднократно встречал слухи, что у советских процов поздних выпусков это требование стало необязательным: в принципе, это вполне возможно, ведь та же Интел через какое-то время выпустила 8085, чуть ли не важнейшим отличием которого стало только одно напряжение питания (отрицательное смещение научились вырабатывать "на борту"), который у нас тоже клонировали -- КР1821ВМ85, если склероз не изменяет.
2) Для отладки Ардуина вполне пойдёт; я сам временами использую её для разборок с логикой работы сложных микросхем, когда документация не даёт полного ответа или допускает двоякое толкование. Но для нормальной работы в качестве периферии, увы, не подходит. Я вот для аналогичной, но несколько более объёмной задачи (эмуляция периферии для СМ ЭВМ, в девичестве PDP-11) рассматриваю какой-нибудь мощный ARM -- скажем, GD32H7 с ядром Cortex-M7 на 600 МГц, ну а память будет настоящей, только на относительно современных (1990-х годов) микросхемах статического ОЗУ.
ПЛИС в роли периферии смотрится лучше, но там сразу кучу геморроя с согласованием уровней, ведь ПЛИС, поддерживающие +5 В, найти сложно, их выпуск прекращён много лет назад. Но такой вариант тоже рассматриваю, но, вероятно, как "продолжение банкета": отлаживаться по понятным причинам проще на микроконтроллере.
3) Достать почти все микросхемы 580-й серии пока ещё возможно. Самый дефицит, похоже, -- КР580ВВ79, которая применяется мало где (из любительских, кажется, только в ЮТ-88).
4) А вот в те годы (года эдак до 1987-88) "достать" означало прямо или косвенно украсть, ибо купить легально даже какую-нибудь К155ЛА3 было проблематично (в магазинах были лампы, транзисторы и несколько типов аналоговых микросхем -- и, по большому счёту, всё). Фактически, так сделали и разработчики Микро-80: где-то было то ли интервью, то ли рассказ о его создании, там и говорилось, что им в контору ошибочно прислали К580ИК80 (раннее название этого проца), которого ещё ни в каких справочниках не было, но они имели доступ к буржуйской литературе, кто-то связала советское название с 8080 -- и они из того, что было, слепили комп. Не по заданию конторы, а по собственному желанию использовали целую кучу государственных микросхем. Как только им не ай-ай-ай :)
Кстати говоря, причина выяснилась при изучении имеющейся инфы по обработке программных прерываний (в статье изменения уже внёс). Чтобы определить код прерывания, они сначала выполняют ветвление по этой микрооперации, а затем в одной ветке проверяют каждую из причин 1-10, а в другой -- 11-15. В общем, недодвоичный поиск кода прерывания :)
Когда человек сразу садится на Верилоге что-нить типа кодить, не научившись проектировать на рассыпухе, обычно такое получается... :)
Ну, документация на ЕС ЭВМ и СМ ЭВМ в своё время была переведена на уровне от "посредственно" до "ужасней не бывает". В частности, в доке по разработке драйверов под МОС ВП (советский клон VAX/VMS) даже падежи в предложениях зачастую были не согласованы, а про остальное уж вообще молчу.
О, значит, само по себе правильно помнил, только не помнил, какие диски :) А на ЕС-5061, скорей всего, ещё обычный CRC без исправления, как и на мелких дисках?
Но это, как понимаю, чисто контроль, без исправления. А мне вот помнится именно про исправление -- только не помню, с какими дисками. Может, 200-мегабайтные ЕС-5080?..
Существуют, кстати, микросхемы-контроллеры для формирования и проверки 16-разрядной памяти по Хэммингу. У меня где-то с десяток лежит (кажись, из 531-й серии). Надеюсь, дойдут руки замутить :)
Если склероз не изменяет, на одну запись независимо от её длины. Но надо смотреть доку на диски, конечно, чтоб точно сказать.
Больше, да. Для 64-разрядного значения -- 8 контрольных битов, но не традиционной чётности, там хитрее всё считается. Этого хватало для выявления любых двойных ошибок -- т.е. неправильных значений двух битов в полном 72-разрядном слове, включающим контрольные разряды, и для исправления любых одиночных ошибок; в принципе, увеличив кол-во контрольных разрядов, можно добиться, например, 100% исправляемости одиночных и двойных ошибок, ну и т.д. Для 16-разрядного -- кажись, 5 контрольных битов нужно. В Вике, если склероз не изменяет, было описано корректно.
Вот почему его не использовали в ЕС-1050/52, я не знаю. Вроде, он к тому времени уже был известен и использовался, по меньшей мере, IBM в старших моделях (усложнение железа для младших моделей было бы вряд ли оправданным, но для старших -- сами понимаете).
Ну и для сравнения: ECC на тогдашних дисках, насколько помню, позволял исправить до 11 сбойных битов, но только если они следовали в записи подряд (что было вполне актуально: головка чирканула по поверхности диска -- вот тебе и сбойные биты).