All streams
Search
Write a publication
Pull to refresh
69
0.8
Иван Савватеев @SIISII

Микроконтроллеры, цифровая электроника, ОС…

Send message

Частично Вы отметили разницу между машинами для научно-технических расчётов и экономических, отмечу и я, только несколько полнее.

  • Научные расчёты, если говорить совсем уж утрировано, сводятся к тому, что в машину вводится три числа, потом машина полдня что-то с ними делает по формулам, которые простым смертным понять не дано, и в конце печатает результат -- другие три числа.

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

    Как следствие, для "научной" машины важнейшим критерием является производительность на операциях над вещественными числами (числами с плавающей запятой). Для "экономической" машины эти операции не нужны вообще, зато очень полезны десятичные операции (ибо правила округления и т.п. вещи в экономике жёстко регламентированы и, естественно, под десятичную систему) и быстрый ввод-вывод, поскольку машине приходится не столько считать, сколько вводить и выводить данные.

  • Очевидно, что разный род задач требует для своего эффективного решения разного набора команд у процессора. Скажем, наша БЭСМ-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.

А в начале 90-х советские ЕС ЭВМ, которые были фактически клоном IBM

Клонами они не были, не надо врать. За исключением ЕС-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, да, именно по этой причине надо 5. Но это сильно дороже

Существуют, кстати, микросхемы-контроллеры для формирования и проверки 16-разрядной памяти по Хэммингу. У меня где-то с десяток лежит (кажись, из 531-й серии). Надеюсь, дойдут руки замутить :)

Как-то по цифрам не сходится. Если бы был ECC на всю дорожку, то, например, 3625 байт для 7.25Мб дисков давал бы необходимость 15 бит (добавим чётность - 16 - вполне удобно). Но 11 - это контрольные к группе в 256 байт? 128? Тут надо больше деталей

Если склероз не изменяет, на одну запись независимо от её длины. Но надо смотреть доку на диски, конечно, чтоб точно сказать.

Больше, да. Для 64-разрядного значения -- 8 контрольных битов, но не традиционной чётности, там хитрее всё считается. Этого хватало для выявления любых двойных ошибок -- т.е. неправильных значений двух битов в полном 72-разрядном слове, включающим контрольные разряды, и для исправления любых одиночных ошибок; в принципе, увеличив кол-во контрольных разрядов, можно добиться, например, 100% исправляемости одиночных и двойных ошибок, ну и т.д. Для 16-разрядного -- кажись, 5 контрольных битов нужно. В Вике, если склероз не изменяет, было описано корректно.

Вот почему его не использовали в ЕС-1050/52, я не знаю. Вроде, он к тому времени уже был известен и использовался, по меньшей мере, IBM в старших моделях (усложнение железа для младших моделей было бы вряд ли оправданным, но для старших -- сами понимаете).

Ну и для сравнения: ECC на тогдашних дисках, насколько помню, позволял исправить до 11 сбойных битов, но только если они следовали в записи подряд (что было вполне актуально: головка чирканула по поверхности диска -- вот тебе и сбойные биты).

Information

Rating
1,794-th
Location
Солнечногорск, Москва и Московская обл., Россия
Date of birth
Registered
Activity

Specialization

Embedded Software Engineer
Lead