Взлет и падение БЭСМ-6
В Интернете распространено забавное заблуждение — что якобы у СССР были собственные прекрасные ЭВМ, которые вредители из Политбюро уничтожили, приняв решение ориентироваться на копирование западной техники — прежде всего на IBM S/360. И самое смешное в этом то, некоторые формальные основания так заявлять есть — однако если начать копать вопрос вглубь, разверзаются бездны.
Как известно, первым электронным универсальным компьютером является американский ENIAC. Машина имела впечатляющие характеристики: 18.000 электронных ламп, занимала площадь 90×15 кв.м., весила 30 т и потребляла 150 кВт. Старались не отставать от американцев и в Англии. Но в СССР работы над ЭВМ существенно задержались. Я не буду сейчас рассказывать всю историю метаний и ошибок «советской школы» ЭВМ — достаточно уже того, что из всего многообразия созданных в СССР ЭВМ при сравнении с современной им западной вычислительной техникой неизбежно остается сиять единственная «самобытная» машина — БЭСМ-6. Все остальные «советские компьютеры» сравнений не выдерживают.
Попутно я вам постараюсь объяснить, ЗАЧЕМ было принято решение о копировании IBM S/360. И ответ на это вопрос очень простой — СОФТ.
Железо сделать — особо много ума не надо, упомянутая выше серия БЭСМ-6 была технически вполне приличной машиной, архитектурно — так даже очень приличной по тем временам. Однако советские НИИ так и не смогли выродить для этой машины ни приличной операционной системы, ни приличных компиляторов с Фортрана и Кобола, не говоря уже о чем-то большем. А писанина в машинных кодах и запуск задач в монопольном режиме — это для конца 60-х годов уже выглядело архаизмом.
При этом пресловутая архитектура БЭСМ-6 в значительной степени воспроизводила архитектуру системы CDC 1604 фирмы Control Data Corporation (главный конструктор — Сеймур Крэй), серийно выпускавшейся с 1960 года (полностью совпадают некоторые важные технические характеристики, такие как уникальная для этих двух систем разрядность слова и адреса и разрядность машинных команд в слове, использование одноадресных команд с индексным регистром, регистра скрытых разрядов, кодировка символов и ты ды). Также ряд архитектурных решений БЭСМ-6 повторяет систему Atlas (британский военный суперкомпьютер) и CDC-6000 всё того же Крея. Есть мнение, что БЭСМ-6 получилась в процессе метаний — начали передирать с CDC 1604, потом кинулись внедрять туда новации с Атласа, потом еще элементы CDC-6000 и какие-то свои задумки, вдобавок не всё получалось на тогдашней советской элементной базе — стали лепить аппаратные заплатки, ну и вот вышел странный гибрид, имеющий черты исходных архитектур — но сильно перекорёженный. Об этом ниже, а пока поговорим про софт.
Очень много сил было потрачено на адаптацию стыренного с CDC транслятора Фортрана к БЭСМ-6, а когда это было сделано — внезапно выяснилось, что программы на Фортране (ворованные исходники), прекрасно работающие на CDC-1604, вылетают либо дают неверные результаты расчетов при запуске на БЭСМ-6. Разработчикам, адаптировавшим транслятор Фортрана для БЭСМ-6, была поставлена задача обеспечения полной совместимости с CDC 1604 — но они с этой задачей не справились.
Позднее даже вышло несколько монографий, разбиравших причины того, почему этого не удалось сделать.
Вот тогда-то стало ясно, что если вы хотите юзать ворованный софт без проблем — надо полностью копировать архитектуру машин. Эмуляция неэффективна и имеет ограниченную применимость, кросс-трансляция сложна и трудоемка в отладке.
Именно тогда и было принято решение — для вычмашин копировать IBM S/360, а для управляющих машин — PDP-11. Выбор архитектур был сделан исходя из наличия софта и ОС под них, а качество самих архитектур рассматривалось во вторую очередь.
Казалось бы — с софтом-то что за проблемы? Вроде как мы, русские, не тупые. Уж свой компилятор-то под свое железо собрать можно было?
Увы, всё не так просто. Единственный приличный компилятор под БЭСМ-6 — это курочкинский компилятор Алгол-60. И всё — остальное, как ни бились, было кривым куском гугна. При этом аккуратно к моменту, когда у Курочкина этот компилятор стал работать еще на БЭСМ-2 — европейцы полностью переделали Алгол, он стал называться Алгол-64, и героический труд советских программистов оказался спущен в унитаз. Ну как оказался — СССР так и сидел на этом старом Алголе до перестройки, потеряв возможность тырить алгольный софт из всякого там ЦЕРНа и так далее.
Компилятор для Алгола-64 курочкин уже не осилил.
Кроме того, имеется другая проблема: стыренный из США софт на фортране, будучи скомпилирован на БЭСМ-6, не работал. Попытки добиться его работоспособности даже затачиванием компилятора на кросс-компиляцию известной американской системы — не оказались успешными.
А перед советской вычтехникой задача стояла именно такая — сделать так, чтобы на советских машинах можно было запускать ворованный софт. В идеале — вообще без проблем, в реале — с перекомпиляцией и не слишком трудоёмкой доделкой-отладкой. Потому что писать всё своё — было утопией, это стало ясно уже к середине 60-х. И дело в конечном счете даже не в операционных системах и компиляторах — их кое-как делали свои, дело в прикладных пакетах, коих уже в 60-е годы были многие тысячи, и никакие советские НИИ были не в состоянии обеспечить софт такого качества в таком количестве. Только тырить и копировать, только так можно было обеспечить народное хозяйство современным софтом и не отстать окончательно.
Для БЭСМ-6 большим коллективом разработчиков под руководством В. Ф. Тюрина в 1971 г. была создана операционная система ДИСПАК. Она потом использовалась почти на всех ЭВМ типа БЭСМ-6 вплоть до 90-х годов, и дальше перекочевала на Эльбрус. Благодаря Диспак в 1972 году к БЭСМ смогли наконец-то подключить магнитные диски. Для тех, кто не в курсе — компы ИБМ работают с магнитными дисками с 1956 года. Это чтобы вы себе лучше представляли «передовую архитектуру» БЭСМ, и насколько она отставала от ИБМ.
Вы спросите — а как же БЭСМ-6 работала без дисков? А у нее были магнитные барабаны. 1 барабан имел емкость 16 килослов (192 килобайта) и весил чуть не полтонны.
Барабанов можно было прицепить, насколько я помню, 4 штуки максимум. При этом обычные жесткие диски ИБМ имели емкость 5 мегабайт, а большие — 30 мегабайт. Из этого понятно, что самая лучшая машина СССР БЭСМ-6 катастрофически отставала от продукции ИБМ в объеме обрабатываемых данных.
Но как же так вышло? А всё дело в том, ДЛЯ ЧЕГО строили машины серии БЭСМ. Внезапно для очень многих, их строили в качестве УПРАВЛЯЮЩИХ машин для ракетчиков — все остальные сферы применения у БЭСМ появились уже потом, по принципу «ничего лучшего все равно нету».
БЭСМ-1 была завершена осенью 1952 года и являлась скорее демонстрационной моделью, хотя и работоспособной (именно она на фото в заголовке). Известна также как БЭСМ Академии Наук (БЭСМ АН). Построена на электронных лампах (5.000 ламп — сравните с 18.000 ЭНИАК) в единственном экземпляре.
БЭСМ-2 — усовершенствованный и несколько удешевленный вариант БЭСМ-1, подготовленный для производства. Ламп стало меньше, поскольку часть из них заменили на полупроводниковые диоды. На самом деле БЭСМ-2 — это как бы «гражданский» вариант военной машины М-20, разработка которой для нужд ПВО и наведения ракет и была исходной целью. Можно встретить утверждение, что на момент окончания разработки (1958-1959 годы) М-20 являлась самым быстрым компьютером в мире. Данное утверждение, однако, не соответствует действительности: быстродействие М-20 составляло 20 тыс. операций в секунду, в то время как, например, IBM 704, выпускавшаяся с 1954 года (то есть на 5 лет раньше), имела быстродействие 40 тыс. операций в секунду, а представленная 30 декабря 1958 года и поставлявшаяся с 1959 года транзисторная ЭВМ IBM 7090 — более 220 тыс. операций в секунду.
Вариантом М-20 является машина М-40, входившая в комплекс для управления РЛС дальнего обнаружения и сопровождения цели и точного наведения противоракеты на баллистическую ракету противника. М-40 начала выполнять боевые задачи в 1957 году. Всё еще ламповая.
М-50 введена в 1959 г. и явилась модификацией ЭВМ М-40 на полупроводниках. В конечном счете из нее сделали «гражданскую версию», называвшуюся БЭСМ-4. Дальнейшее развитие — многопроцессорная 5Э92б с общим полем памяти, опять же для систем управления ракетным оружием.
В конце концов эта архитектура, будучи реализована на микросхемах, вылилась в машину 5Э26, применявшуюся для наведения ракет ЗРК С-300 первых поколений.
Для БЭСМ-4 существовало не менее 3 разных компиляторов с языка Алгол-60, компилятор Fortran, не менее 2 разных ассемблеров (дубнинский и Баяковского), компилятор с оригинального языка Эпсилон.
И вот, наконец, БЭСМ-6 была разработана в середине 1960-х годов и сдана Госкомиссии в 1967 году. С 1968 года начат серийный выпуск на заводе Счётно-аналитических машин (САМ) в Москве. Считается первой советской супер-ЭВМ второго поколения — на полупроводниковых транзисторах. Ну из тех, которые не были закрыты грифом «секретно».
БЭСМ-6 стоит особняком — она не является развитием архитектур предыдущих машин БЭСМ, но на ее облик наложились всё те же требования заказчиков. Именно этими требованиями было вызвано то, что Лебедев в создании БЭСМ-6 отталкивался от архитектуры американских машин CDC, а не от IBM.
Тут надо понимать, что Control Data Corporation делала машины для систем управления и научных расчетов — в то время как International Business Machines делала машины для бизнеса, в основном для финансовых расчетов и систем учета. Это принципиально разные сферы применения, и они накладывали свой отпечаток на архитектуры систем.
БЭСМ-6 стала еще более ярким примером такого разделения областей применения. Мало кто из «любителей БЭСМ» вообще в курсе, что в БЭСМ-6 отсутствует целочисленная арифметика. Знаете ли вы, отчего это так? Ведь в CDC-1604, появившейся на 8 лет раньше, основные характеристики которой повторяет БЭСМ-6, целочисленная арифметика была, и весьма развитая. В какой момент копирования она из БЭСМ-6 исчезла, и из-за чего?
А всё довольно просто. Основной задачей БЭСМ-6 были траекторные вычисления движения ракет. Там целочисленная арифметика не нужна. Поэтому когда Лебедев столкнулся с трудностями в совмещении двоичного и «плавающего» АЛУ — он просто выкинул двоичный вычислитель, решив эмулировать эти операции на «плавающем» вычислителе.
CDC-1604 и БЭСМ-6 были машинами с сумматором. Т.е. в них был один выделенный регистр (на самом деле 2 — аналог AL и AH в терминологии Intel 8086), в котором и производились все операции. Чем-то это похоже на стековую архитектуру JVM. Понятно, что при такой архитектуре приходится постоянно загружать и выгружать значения из памяти/в память. Для этого уже тогда применялись различные схемы адресации, и (а куда деваться) существовали т.н. индексные регистры. Причем в обеих машинах они «кривые» — не совпадают с размером слова (!) и размером регистра аккумулятора, и даже не кратны ему. В CDC-1604 и БЭСМ-6 мы имеем 15-ти битные индексные регистры и 48-битный аккумулятор.
Но это, конечно же, случайное совпадение, ага.
Зато на БЭСМ-6 были экстракоды, прямиком потыренные с британского Атласа (это суперкомпьютер, разработанный британцами для наведения ракет — позднее он использовался и для научных вычислений, но то такое).
Первый компьютер Atlas был официально введен в эксплуатацию 7 декабря 1962 года. Тогда его вычислительная мощность считалась равной четырём компьютерам IBM 7094 и почти такой же, как у компьютера IBM 7030 Stretch, являвшегося на тот момент самым быстрым суперкомпьютером в мире. Разработка БЭСМ-6 завершена в конце 1966 года, первый серийный образец выпущен в 1968 году. Вопросы?
Часто пишут, что в БЭСМ-6 была и поддержка виртуальной памяти (а в Atlas она была!), но на самом деле это не верно. С современной точки зрения «поддержка виртуальной памяти» дает нам возможность адресовать больший объем памяти, чем реально установлен на машине (к примеру — процесс может получить 4 Гб памяти, при том, что реально установлен всего гигабайт). Однако на БЭСМ-6 (поздних модификаций) сложилась парадоксальная ситуация, обратная вышеописанной. Физической памяти на машине было доступно больше, чем ее можно было адресовать! Сиречь, имея 128 килослов памяти, мы должны были по-прежнему работать с ней через 15-тибитные регистры адреса, как в CDC-1604. Из-за этого в БЭСМ-6 ввели натуральную порнуху — специальные регистры, доводившие адрес памяти до 17-битного. Это и называлось — «виртуальная память», хотя это просто плавающие страницы.
В системе Atlas адрес изначально был 24-х битным, и при попытке адресации за пределы реальной памяти супервизор подкачивал с барабана страницу с соответствующим «виртуальным адресом» в реальную (ферритовую) память, примерно так, как это происходит сейчас при подкачке страниц с диска. Т.е. механизм виртуальной памяти был уже вполне традиционным.
«Конвейер» на БЭСМ-6 подсмотрен у CDC-6600 того же Крэя — вот только у Крэя он реально обеспечивает распараллеливание исполнения (там каждый процессор имел 10 независимых функциональных блоков, могущих исполнять инструкции из конвейера параллельно), а у БЭСМ он болтается довольно бессмысленным придатком — например, если ALU умножало два числа, то ничего другого оно делать уже не могло, и конвейер стоял.
Собственно, оригинальных идей в БЭСМ-6 практически не было. Машина представляла собой компиляцию из чужих решений — примерно так же, как автомат Калашникова не содержит в себе ни единого нового оригинального решения, он представляет из себя удачную компиляцию решений, известных задолго до него. Набор решений — оригинален, но сами решения — нет.
Разумеется, в данном случае нельзя говорить о тупом копировании. Правильно говорить о творческой переработке базовой архитектуры CDC c добавлением множества идей из других источников. Причем не всё в этой комбинации у БЭСМ-6 вышло удачно, но в целом машина работала, и работала неплохо.
Широко известное заблуждение касается наличия в БЭСМ-6 кэш-памяти. Об этом пишет чуть не каждый второй. На самом деле, назвать то, что имелось в машине «кэш-памятью» можно только с очень большой натяжкой. Примерно такой, как изобретение Рентгена Иваном Грозным (я тебя, боярин, насквозь вижу!). Да, принцип похож, но до полноценной реализации еще пахать и пахать.
Что было на самом деле? Четыре т.н. буферных регистра числа (БРЧ) куда считывались слова из памяти, чтобы потом к ним могло быстрее обратиться арифметическое устройство (АУ). Аналогично, имелось 8 (забавная асимметрия) буферных регистров записи (БРЗ) куда число помещалось перед отписыванием в память. Адрес, куда должен быть записан операнд, сохранялся в т.н. БАЗ (буферном регистре адреса записи). Если в дальнейшем оказывалось, что исполнительный адрес совпадает с одним из адресов в БАЗ/БАС-ах, операнд брался из БРЗ/БРЧ а не из памяти. Вот и вся наука.
Полноценная же реализация кэш-памяти впервые появилась в машине IBM/360-85 в 1969 году.
Второе заблуждение говорит о БЭСМ-6, как якобы предвестнице RISC-архитектуры. На этой почве тоже строится много спекуляций. Но и тут, истина довольно далеко. Безусловно, в БЭСМ-6 не слишком много команд. Можно сказать даже — мало. И, разве что по этому параметру она сближается с RISC. Другое дело, что команды эти — совсем не похожи на традиционные RISC-овские. Они имеют совершенно различную сложность и времена выполнения. Ключевыми особенностями RISC можно считать:
- Небольшой набор простых команд
- Минимизация команд работы с памятью, за счет большого числа регистров общего назначения
- Небольшая длительность выполнения каждой команды (1-2 такта) CPU
Ни одна из этих особенностей не присуща системе команд БЭСМ-6. Она включает как очень простые команды (запись, сложение), так и довольно сложные (деление, сборка). Время выполнения команд различается в десятки раз! Например, чтение требует 3-х тактов, сложение — 11-ти, деление — 50 (в среднем). О максимальных временах выполнения говорить не приходится вообще — там ужас, ср@ное сложение могло длиться 280 тактов.
Последнее заблуждение частично вытекает из двух первых, и, кроме того, и сильно подогревает самомнение ура-патриотов. Состоит оно в том, что БЭСМ-6 была быстрой, и не просто быстрой, а прямо таки супер-быстрой машиной для своего времени.
Спору нет, на европейском уровне характеристики БЭСМ-6 смотрятся неплохо. Но и только. Даже не беря творения Сэймура Крэя (по сути — тоже числодробилки), обычные майнфрэймы IBM были не хуже на научных расчетах, и существенно лучше БЭСМ-6 на финансовых.
Удивляться тут нечему. Еще раз напомню, что БЭСМ-6 не имела полноценных команд целочисленной арифметики, и значит, любые арифметические команды выполнялись на вещественном сумматоре. Это приводило к тому, что даже в самом лучшем случае сложение занимало 5 тактов (в среднем — 11) а умножение — 15 тактов (в среднем — 18.5, в худшем — 162, драть!!!!). Что уж говорить о каком-нибудь сложении десятичных чисел. В результате, программы не только выполнялись медленнее, чем могли бы, но и занимали больше места.
Об этом упоминает и В.В. Пржиялковский в своем обзоре — «Проведенные в ИПМ АН СССР исследования показали, что программы, составленные для IBM-360, требуют в 1,5-3 раза меньшего объема памяти, чем программы БЭСМ-6, “Весна”, М-20».
Если же говорить о производительности в цифрах — по «популярному» тогда тесту Whetstone, БЭСМ-6 набирала примерно 0.3-0.4 миллиона операций с одинарной точностью в секунду, что было на уровне средних моделей IBM. И никаких чудес, увы…
И вот теперь мы подходим к главному. Созданная для управления ракетами, архитектура БЭСМ-6 совершенно не подходила для компьютеризации народного хозяйства, в котором требовалось решать задачи учета и контроля, а не вычисления траекторий движения тела в гравитационном поле. Зато для этих задач прекрасно подходила архитектура машин ИБМ.
Я вам больше того скажу — и для целей управления ракетами БЭСМ-6 подходила плохо из-за чудовищного разброса времени исполнения команд (Лебедев просто не понимал, насколько важно для систем реального времени иметь ПРЕДСКАЗУЕМОЕ время выполнения команд). Вот посмотрите, как устроена система команд в пресловутом микропроцессоре i8080 — там заранее четко известно, за сколько тактов выполнится та или другая команда. Разумеется, сложение аккумулятора с регистром выполняется быстрее, чем сложение его же с ячейкой памяти — но эта разница так же фиксирована. Процессор работает настолько чётко, что им можно музыку играть или синусы генерировать, основываясь только на времени исполнения команд. А в БЭСМ-6 время исполнения гуляет в зависимости от случайных явлений — попал или не попал адрес в предвыборку, даже от значения операндов время исполнения зависит.
Инженеры Интел, когда создавали свои первые микропроцессоры — ориентировались именно на управление физическими объектами, поэтому сделали их такими. А академик Лебедев ничего этого не понимал, витая в математических облаках.
Вот поэтому к концу 60-х годов СССР пришел, вообще не имея приличных машин для автоматизации учета и управления народным хозяйством, а для управления ракетами в оборонных системах имея архитектуру ЭВМ, показавшую ряд серьезных недостатков, причем недостатков неустранимых by Design — это отчетливо выяснилось при доводке систем М-40 и М-50 в системе ПРО страны.
Опираясь на это понимание, тогда и было принято решение — для вычмашин копировать IBM S/360 (это хорошая архитектура для управления нархозом, и удовлетворительная — для научной математики), а для управляющих машин выбрали PDP-11.
Между прочим, архитектура PDP-11 практически гениальна именно для тогдашней элементной базы и применения машины для real-time управления. Но это уже совсем другой разговор.
Спасибо машинам БЭСМ за наше мирное небо, за атомное оружие и за космонавтику — вы хорошо поработали, но пора уже и на покой. Замена этой архитектуры на другую была неизбежна — она и произошла, а вот стоило ли снова выдумывать советский велосипед, или экономически выгоднее было передрать готовое — на этот вопрос ответили китайские товарищи. Время всех уже рассудило — просто не все это могут осознать.
Статья проплачена ИИ.
Иим же написана
Сам о себе написал жэж.. Аш фото приложил)
Но мы то (или не мыто?) знаем что такое ИИ..
Зннайм. Нонис кажъм
ой ёёёё. Как терь житьта..
Ригулярно
А как жэж струны души?
Струнный транспорт Юницкого немедленно вспомнился мне.
Дададада… стань инвестором))
Щекельзяка, Щекельзяка,
Холодильнге гогорякаъ.
Типа речевка.
Холодильниг..кхе… Скажи ешо чта йа твой до дыр..
http://litcult.ru/u/dd/blog/17957/foto.jpg
Точно немой
Котэ правокатыр, дэмонстрыруэт жэст гурузынскых протэстуущых
Придется отправить его в Грузию — доедать стухшие хачапури.
А у нас в деревне все
Слушают х…ню,
Слушают Рахманинова,
Гайдна и Шопена.
Только я считаю что
Всё это — лайно.
Я поклонник музыки иной
Люблю я грюппу Диппурплеер
Грюппу Диппурплеер
Хрюпу Диппурплеер
Крайне я люблю.
…
Как тарас друзьяменя
Ударили байдаркой .
Я очнулся и пошёл
В местный кабачок.
Там лабал какой то хмырь
Сонату номер пять.
Я сказал ему iбенамать
Ты сбацай грюппу Диппурплеер
Вот тебе задача
Грюппу Диппурплеер
Вот тебе полтос.
Возмущяццо начали
В зале зрителя:
Почему остановился неземной музлон?
И чо за хър с усами и байдаркой
Струны порасстроил нам в душáх
А где можно почитать про Алгол-64?
Сейчас уже нигде, потому что он стал называться Алгол 68 — по году финальной редакции.
Алгол-64 — это драфт-спецификация IFIP от 1964 года. Комитет начал работать в 1962 году, и в 1964 году опубликовал драфт нового языка. Начиная с этого момента, стало ясно, что время Алгол-60 закончилось.
Чарльз Хоар из Оксфордского университета и Никлаус Вирт из Швейцарии (в то время он преподавал в США, в Станфордском университете), увидав этот драфт и ужаснувшись, в 1965 году предложили комитету свой вариант нового языка, названного ими Algol-W. Он представлял собой умеренную переработку Алгола-60, очищенную от известных недостатков и дополненную минимумом необходимых возможностей. Но его не приняли.
В Европе Алгол 68 в течение длительного времени использовал Британский королевский комитет по связи и радиолокации. В СССР существовали рабочие группы по разработкам на Алголе-68 (например, новосибирская под руководством академика Андрея Петровича Ершова, ленинградская под руководством Андрея Николаевича Терехова, московские под руководством Александра Николаевича Маслова и Михаила Рувимовича Левинсона). В Ленинградском государственном университете был создан компилятор и мощная система программирования на Алголе-68 для ЕС ЭВМ, эксплуатировавшаяся в течение многих лет.
В конечном счете в 1970 году появился Pascal — и весь алгол стал неактуален. В Европе.
А в США он никогда и не был актуален — там писали на Фортране и Коболе.
А чё -Алгол — чё — Алгол! Вон я когда-то часть диплома на нём писал, ну как писал — была программа ну и народ сказал — студент всё равно тут околачиваешь, ну оптмизируй как-нибуть, а то медленная собака, самое смешное по результатам перешел в статус полудурка — повышение — чё! После PL-1 и Fotran-a вполне себе язык, ну если привыкнуть. И вот на этой самой БЭСМ-6. Правда чуть не был бит при попытке самому набить перфокарты — мастером эти перфорторов — убёг! Дамы ржали… Вообще зал большой, народу много — весело. Да… Кстати вполне себе конец 80-х, новьё.
О, PL-1 это вообще сказочный язык. IBM в него столько всего напихало, что вроде бы не существует ни одного транслятора, поддерживающего полную спецификацию языка — все существующие трансляторы реализуют только те или иные урезанные подмножества языка.
Поэтому довольно быстро на базовый язык плюнули и стали делать всякие диалекты PL. Диалект XPL был использован для создания языка HAL/S, на котором программировались компьютеры космических кораблей проекта «Шаттл». Для ещё одного подмножества — PL/C — в Корнеллском университете был создан уникальный компилятор CORC, который мог скомпилировать программу с любыми синтаксическими ошибками, путём исправления многих ошибок и преобразования оставшихся в объектный код (это свойство в значительной степени присуще также компиляторам IBM для мейнфреймов).
Больше того — мало кто знает, что на самом деле этот язык называется PL/I, где буква I — это IBM.
ПЛ/1 был разработан в IBM как часть системы System/360. До того IBM разработала несколько несовместимых компьютеров для разных целей: одни для научных, другие — для бухгалтерских приложений. Целью System/360 была разработка единой системы совместимых компьютеров, которые заменили бы все предыдущие модели и могли бы с успехом использоваться для любых задач.
Научные и бухгалтерские программы не только использовали разные компьютеры, но ещё и писались на разных языках: научные — на Фортране, бухгалтерские — в основном на Коболе. Целью ПЛ/1 было создание языка, подходящего для обоих типов приложений. Другой целью было добавление конструкций для структурного программирования, взятых из Алгола-60, не поддерживаемых в то время ни Коболом, ни Фортраном.
На базе ПЛ/1 был разработан язык PL/M, фактически представляющий собой приблизительный аналог языка Си с синтаксисом, близким к подмножеству ПЛ/1. Компилятор языка PL/M был разработан Гари Килдаллом, когда тот работал в Intel и использовался им для написания операционной системы CP/M и большинства программного обеспечения под CP/M и MP/M. Позже Гари Килдалл основал фирму Digital Research, которая продавала компилятор к PL/M для CP/M и MS-DOS, который сам был написан на PL/M. PL/M широко использовался для написания программного обеспечения к компьютерам, использовавшим интеловские процессоры 8080, 8085 и Z-80.
PL/M-80 я помню относительно хорошо. Он довольно прост и по-своему красив:
IF TMP>5 THEN
DO
INCR = INCR +3;
COUNT = COUNT – INCR;
END;
ELSE COUNT = 0;
здесь DO — END использовано просто для описания неделимого блока кода. А вот так DO используется для инкрементального цикла:
DO J=0 TO 8;
VECTOR(J) =0;
END;
Красиво же. Не используются никакие скобки, вся запись в верхнем регистре, чтобы не иметь проблем со старыми АЦПУ.
Из ограничений — константы в PL/M-80 могут быть только целочисленные. Но это разумное упрощение, поскольку в i8080 и z80 нет плавающей запятой. Зато можно объявить переменную с указанием физического адреса, где она будет находиться в памяти. Это бесценно, поскольку операционные системы для этих процессоров широко используют технику фиксированных блоков системных переменных — соответственно PL/M может лазать напрямую в эти ячейки, вместо вызова системных функций.
В СССР ПЛ/1 также был популярен в 1970-х и до первой половины 1990-х годов благодаря широкой распространённости ЕС ЭВМ, совместимых с мейнфреймами IBM. Кроме того, ПЛ/1 был реализован на БЭСМ-6 и Эльбрусе.
«Программировать на PL-1 легко и приятно если представляешь в какой ASM код транслируются его команды» не помню источника, но мне нравится. Я только когда на кафедре подрабатывал сталкивался — на ЕС-1033 народ со страшной силой обсчитывал диссеры, спасало только наличие 6 терминалов — хоть один да доступен, а то я как студент прохладной жизни не представлял во что там транслирует мои команды, пичалька такая, да…
И, кстати, у машин типа M-20 арифметики с фиксированной запятой тоже не было.
Естественно, потому что и М-20, и М-40, и М-50 — это военные версии БЭСМ.
Но на самом деле она и там была — просто рудиментарная, для целей адресной арифметики. Инкремент, декремент адреса, например.
Принципиально можно этот момент обойти… У нас 2 года назад в ТЗ попало требование одного мастера добычи на передачу параметра из одного источника данных через телемеханику в АСУ ТП верхнего уровня целочисленных значений. Ну как треьование — «а нахер им то что после запятой?» Когда это всплыло, попутно выяснилось, что значения не округлялись, а считывались контроллером как есть — только целая часть. Итого — прошитых 3 контролера, которые находятся в бубенях западной Сибири. Решили просто — нам достаточно было 3х знаков после запятой, домножали на 1000 значение в источнике, и делили на 1000 в асу тп верхнего уровня. Благо 4е байта на переменную это позволяли…
>>советские НИИ были не в состоянии обеспечить софт такого качества в таком количестве. Только тырить и копировать, только так можно было обеспечить народное хозяйство современным софтом и не отстать окончательно
Вполне были бы в состоянии, набор софта, требуемого для решения большинства задач, в принципе не велик и вполне конечен, от токо для этого надо было исключить принцип ‘каждый суслик — агроном’, когда каждое НИИ клепало свою ЭВМ как умело и исключить бодалово между ведомствами, когда ресурсы палились абы куда, лишь бы не как у соседей.
Закрепив задачи по разработке конкретно софта за конкретным НИИ, заодно ограничив разработку архитектур двумя, максимум тремя, также закрепив их за конкретными НИИ, можно было получить требуемый результат ограниченными ресурсами.
Утопия, в общем.
Так пробовали же — не взлетело. Взлетело только тырить, да и то — через задницу многое делали.
Дык одна из причин невзлёта — конкуренция между ведоствами и, до кучи, между различными структурами внутри ведомств, была охрененная, при официальной позиции что у нас такого нет (что, собссно, было одним из системных багов Союза — изрядные расхождения между декларациями и реальностью).
Я когда интересовался историей вопроса охреневал, скоко разных организаций делало в параллель одно и то же, разной степени кривости и какие подковёрные игры при этом разыгрывались.
Да, до кучи, по понятным причинам, никто не был заинтересован в эволюционном развитии уже сделанного, соответственно, лепились всё новые и новые кадавры без какой-либо приемственности архитектур, ессно.
Какой в таких условиях, нахрен, результат, всё в свисток уходило.
Вот-вот. А лепили каждый своё — потому что за своё деньги идут своим, а за чужое — чужим.
Ты знаешь такое НИИ «Центрпрограммсистем» из Твери (при СССР — город Калинин)? Официально НИИ «Центрпрограммсистем» является крупным разработчиком информационных систем, осуществляющим полный цикл исследований, проектирования, разработки и внедрения автоматизированных, информационных систем с 1971 года.
А реально — все их продукты, которые я видел во времена СССР, были цельнотыренными с Запада и кое-как «кириллизованными», причем даже кириллизация была поразительно убогой, на уровне дилетантов-любителей.
В начале 70-х по всей стране встала серьезная государственная задача: систематизация разработок, исключение дублирования, обеспечение многократного применения лучших образцов, существенного сокращения бюджетного финансирования за счет типизации и стандартизации разработок. На НПО «Центрпрограммсистем» была возложена задача, помимо разработок АСУ заняться технологией сбора, классификации, оценки, пропаганды, рекламы и распространения программных средств, то есть создать отечественную технологию сопровождения. Самому НПО предстояло стать полигоном для отработки этой технологии — активно формировать государственный фонд алгоритмов и программ, отраслевой фонд, обеспечивать предприятия и организации страны типовыми программными средствами.
А в реале всё это вылилось в тупое воровство и кое-какерскую кириллизацию западного софта.
В 1983г. объединением осуществлено более 1000 пакетопередач по 136 программным средствам на основании 587 договоров для 429 пользователей-предприятий 66 министерств и ведомств. За 1971-1989г институтом разработано более 170 АСУ крупными предприятиями. Учитывая такие масштабы работы, в 1983г. за разработку системы промышленного создания программного обеспечения ЭВМ и внедрение ее в народное хозяйство, десяти сотрудникам объединения была присвоена Премия Совета Министров СССР в области науки и техники.
Премия Совмина за стыринг. Эхе-хе.
К 1985 году НПО «Центрпрограммсистем» было определено головной организацией стран-членов СЭВ по разработке программных и технических средств систем управления базами данных и знаний, соисполнителем по ряду других направлений.
В общем, ты понял.
>>А лепили каждый своё — потому что за своё деньги идут своим, а за чужое — чужим.
Именно. А итог — переведённые на гугно ресурсы. Та жы кириллизация делалась в 90-е группами товарисчей на раз, практически все программные продукты сперва были переведены небольшими пиратскими группами, официалы подтянулись гораздо позже и, зачастую, пиратский перевод был качественней…
Да, порадовало 136 программных средств, не уверен что смогу стоко перечислить даж щас, а это 83-й, мать их.
Ну и если посмотреть внимательно, то по тех жы серьёзных САУ на шарике по пальцам одной руки пересчитать, примерно как производителей паровых турбин. А в Союзе каждое НИИ пилило (и даже иногда пыталось внедрять) что-то своё, блин. В итоге — иппучий зоопарк без какой-либо техподдержки.
АТО ж. Но ты видишь — попытки централизовать разработки, исключить дублирование — предпринимались. Целый институт под это замутили, причем на наших питерских кадрах — в этот самый Калинин в 70-х тупо согнали кучу программистов из питерских контор.
Разумеется, хрен они угадали — кто был крут, тот в Калинин не поехал, такие кадры самим нужны. Поехала в основном офисная плесень, печатавшая на АЦПУ Архипелагое Гулагое и игравшая в рабочее время в настольный теннис. Результат был немного предсказуем.
Дык это понятно, вопрос в том, что это была попытка создать исчо одно НИИ, а не разделить задачи, зафиксировав их между имеющимися и заставив их обеспечивать вертикальную совместимость софта/железа.
Результат на лице.
А так, то, что вынужденно делали буржуи (совместимость, как минимум по вертикали, техподдержка), что бы не потерять вложенное, можно было бы (в теории, ессно) заставить делать принудительно.
Техподдержка и технологии в начале 80-х:
Вышел доп.набор команд СМ-2, совместимый с СМ-2М. Наши программисты захотели поставить. Надо менять микрокод. Везу две платы на завод (из Москвы в Северодонецк).
Подходит моя очередь, несу платы в цех. Монтажница говорит «Хочешь побыстрее — бери прошивку, диктуй. Читай адрес». Смотрит по таблице какая ножка какой диодной сборки дешифратора адреса соответствует этому адресу. Отпаивает от этой ножки провод, припаивает новый. «Теперь читай код» (в двоичном виде). Прошивает в такт моей диктовки проводом на шпульке несколько десятков сердечников, 0 — внутрь сердечника, 1 — снаружи (или наоборот, не помню), ищет ножку на другой сборке, припаивает к ней второй конец. Одна микрокоманда прошита. На одну команду — 10-30 микрокоманд. В доп.наборе несколько команд.
Вышел пакет исправлений/дополнений операционной системы.
Беру три (для надёжности) катушки магнитных лент, везу в Северодонецк, сдаю заказ, жду несколько часов, получаю обратно. При этом модемы у нас были, у них тоже…
Внешне, в Штатах всё было похоже (с поправкой на масштаб, конечно) — десятки фирмочек, конкурирующих, ворующих друг у друга, дерущиеся за заказы… Но потом появился винтел, который и снёс всю эту массу. В том числе и великих Крея, Дек, СиликонГрафикс, Макинтош, и многих других; в том числе советские ЭС и СМ — но тут ещё и перестройка поспособствовала…
Не похоже. Все эти фирмы и фирмочки вынужденно плодили вертикально совместимые архитектуры, что позволило большинству из них пробарахтаться достаточно долго, несмотря на засилье тогла исчо не винтела.
В Союзе каждый следующий кадавр, порождённый очередным НИИ, обычно вообще никак не соотносился с предыдущим кадавром (фонды на НИР/НИОКР же).
И про техподдержку этих кадавров можно было не вспоминать.
Ну, в Минприборе уже в 70-е годы всё стало достаточно ровным. Не без вывихов, но всё-таки. Потому что там сидели практики, понимавшие важность унификации.
А вот там, где рулила Академия Наук — там был писец и сифон мозга.
Кстати насчет «уничтожения прекрасных самобытных ЭВМ» — давай посмотрим на английские ЭВМ. У англичан были весьма приличные машины, и много. Но все они сдохли в пользу унификации с американской линией, и ровно по той же причине, как в СССР — из-за софта.
Научников нельзя не то что допускать к разработке железа, их на пушечный выстрел подпускать нельзя, если конечно нужен воспроизводимый результат, токо отдельные локальные, предельно формализованные задачи, с прописанной ответственностью за конечный результат.
Ппля, я когда читаю нормативные документы, подготовленные научными эмммм… организациями (была такая практика одно время по заказу отдельных дятлов) у мну волосы на лысине шевелиться начинают, это ж какой-то ппц головного мозга.
Требования, которые по идее должны быть конкретными донельзя (норматив жы) — размыты со всякими бла-бла-бла, и не только не прописан порядок их применения, но исчо до кучи часть терминов и определений отсутствует и не прописано, а как, собссно, достичь ими декларируемого???
Ну и рыдалЪ, читая отчет о результатах разработки одной системы такими, вопрос, что жы должно было получиться в итоге, так и остался вопросом))
Начинаешь с такими грить — в ответ задумчивое ‘эммм, ну это же и так понятно’.
Тьфу.
> для управляющих машин выбрали PDP-11.
Ещё HP 21xx (М-6000/М-7000/СМ-1/СМ-2). Их было поменьше, но номенклатура УСО (устройств связи с объектом) у них была побогаче, чем у советских клонов PDP-11. Стояли на химзаводах, электростанциях, междугородных телефонных станциях, в метро…
Меня прямо умиляло название компилятора с Алгола — HPAL.
И ещё прикол — в дополнительном наборе команд был добавлен ещё один код для пары уже имеющихся команд с комментарием «добавлено для совместимости с HP 21MX».
Ты правильно указываешь на то, что еще до этого решения о «дуумвирате ИБМ и ПДП» у Минприбора был наведен существенный порядок.
Эта хрень называется Агрегатная система средств вычислительной техники (АСВТ) — она предназначалась для построения управляющих вычислительных комплексов. Принципы построения были разработаны в 1960-х годах в ИНЭУМ (Е. Н. Филинов) и НИИУВМ (В. В. Резанов).
Началась она с машины М-1000. Архитектуру я не помню — живыми их не застал. Но это и не интересно — ее разрабатывали в Тбилиси.
М2000 и М3000 имели структуру и архитектуру системы IBM 360 с большими упрощениями, приводившими к несовместимости по софту.
А вот М-4000 была интересна — это как бы упрощенный огрызок IBM S/360, уже почти совместимый. Потом ее доработали до М-4030 — она уже была полностью совместима по архитектуре с IBM System/360. На ней работали как операционные системы самой IBM, так и ДОС ЕС, ОС ЕС, а также специально перенесённая на неё с клонов IBM System/360 производства Siemens СуперДОС.
Средний уровень там был представлен М-400 — это разработка ИНЭУМ, программная совместимость с DEC PDP-11/40. Машина М-400 получила дальнейшее развитие в серии СМ ЭВМ как СМ-3.
У системы М-6000 система команд совместима с Hewlett Packard HP-2000. Во многом потому, что она выросла из небольшой системы «Параметр», которую передрали с Хьюлета.
М-7000 — это двухпроцессорная М-6000 с арбитражом и резервированием. Высоконадежная машина для управления АЭС и подобными системами с высокой ценой сбоя.
Вся эта продукция в конечном счете сводится на НИИ «Импульс» (когда-то филиал московского СКБ-245 в Северодонецке) — которое интересно тем, что в нем не было ни одного академика или доктора наук даже на позициях руководства, институтом руководили инженеры-конструкторы, практики.
Начали они с автоматизации на Лисичанском химическом комбинате производства аммиака и азотной кислоты. Сделали управляющую машину, софт. Ну и дальше пошло-поехало.
И доехало до геофизических комплексов типа ПС2100, производительность которого составляла 1,5 миллиарда операций в секунду. Уникальные параметры для того времени были достигнуты как за счет перестраиваемой внутренней структуры вычислителя, так и за счет специально разработанных микроэлектронных компонент процессорных элементов. Ну нефтегаз уже тогда мог себе это позволить.
Proper, ПС-2100 — это развитие ПС-2000
ПС-2000 — это:
— Один SIMD-мультипроцессор из 8 — 64 процессоров.
— Пиковая производительность 200 млн операций в секунду в максимальной комплектации (64 процессора)
— Чудной конструктив (для минимизации межпроцессорных соединений Крей тоже по той же причине чудил, но немножко не так).
— НИР по разработке ПС-2000 был выполнен в ИПУ АН СССР.
— ОКР был выполнен в НИИУВМ (НПО Импульс) при участии специалистов ИПУ.
— Специально под проект ПС-2000 ИПУ выводился в двойное подчинение АН и Минприбора. Межведомственные конфликты разруливались в Минприборе.
— Произведено на СПЗ больше 150 штук.
— Использовались главным образом в геофизике, а ещё в космической отрасли, на АЭС…
ПС-2100 это:
— 10 SIMD-мультипроцессоров по 64 процессора.
— Новейшая элементная база с уменьшением габаритов мультипроцессора в разы
— стандартные 19″ шкафы.
— Произведено на ОЗВТ несколько штук (до развала СССР). Успел ли Импульс их кому-нибудь поставить? Передали ли технологию c ОЗВТ на СПЗ?
Я в курсе. Просто ПС-2000 имеет относительно скромную производительность — зато их сделали много, а ПС-2100 имеет производительность по тем временам рекордную.
> М-7000 — это двухпроцессорная М-6000.
Ну не совсем так. У М-7000 было в 4 раза увеличено адресное пространство, появились базовые и индексные регистры и отдельные команды для работы с ними. Соответственно + два способа адресации + 2 способа ввода-вывода. Кроме того размер страницы был меньше и адрес текущей страницы фиксировался не на округлении текущего до размера страницы, а на текущем минус полстраницы. Был предусмотрен сопроцессор для плавающей точки и чего-то ещё, реализованного впоследствии в СМ-1/СМ-2 без всяких сопроцессоров, но экземпляр машины, который у нас был (зав.№0004) был без него. Ну ещё появились аппаратная защита памяти, сколько-то аппаратных прерываний, ещё что-то по мелочи. Двоичная совместимость с М-6000 за пределами нулевой страницы пропала. Хотя объектный код М-6000 с М-7000 оставался совместим.
> Высоконадежная машина
Ну правильней сказать высокоживучая.
Структура изменилась — процессоров стало два, расширитель ввода-вывода разделился на три независимых блока, 4 блока памяти стали независимыми, добавились коммутаторы, соединяющие каждый с каждым. Железа стало больше, контактов ещё больше, глюков больше, надёжность снизилась.
Но за счёт структуры, допускающей выход из строя любого блока (да хоть четырёх, лишь бы не одинаковых), живучесть повысилась сильнее, чем упала надёжность.
Вообще развитие М-6000 -> М-7000 -> CM-2 напоминает интеловский тик-так. М-7000: нововведения в архитектуре на элементной и конструктивной базе М-6000 — «тик». СМ-2: новая элементная и конструктивная база на архитектуре М-7000 — «так».
С некоторой натяжкой можно продолжить: СМ-2: доп.набор команд на поздних машинах — «тик». СМ-2М: новый конструктив (платы типоразмера Е2 долгожителями оказались — до сих пор на них что-то делают, про 19″ шкаф вообще молчу) и новая элементная база ОЗУ и ПЗУ, конструктивно совмещённый с процессором канал ПДП при том же наборе команд — «так».
Ещё аналогия: мультипроцессор ПС-2000 подключался к СМ-2, на ней работала операционная система, она загружала задачи на мультипроцессор. Ну почти как современный интеловский компьютер с графическим или ПЛИСовым ускорителем :-)
Вообще, постоянно высокое производство средств производства в стране, у которой крайне хреново обстоят дела с продажей высокотехнологичной продукции, и бюджет которой зависит от сырьевого экспорта, говорит лишь о том, что её промышленность нашла способ переводить ресурсы в шлак с минимальным КПД. Что в общем-то не будет никаким открытием для человека, жившего в СССР.
Для тех, кто не понимает, что означают слова «крайне хреново обстоят дела с продажей высокотехнологичной продукции», я разжую. Вспомните уровень автомобилизации, вспомните, сколько было у граждан телевизоров и каких, и насколько старых, вспомните телефонизацию, бытовую технику (очереди за холодильниками, микроволновка в конце 80-х казалось чем-то невероятным, кондиционер был экзотикой — хотя в принципе всё это было освоено промышленностью СССР). Да ладно это — велосипеды были в дефиците. Я помню, как спортивно-дорожные «харьковы» в Питере продавали только инвалидам войны.