Обновить
67
Иван Савватеев@SIISII

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

1,7
Рейтинг
53
Подписчики
Отправить сообщение

В языке, созданном для IBM 704, выражения (X + Y*Z) были строго отделены от управляющих инструкций (IF, DO, GOTO). Первые вычисляли значения, вторые управляли потоком исполнения и смешивать их между сбой было нельзя. Эта концепция синтаксиса напрямую отражала архитектуру вычислительных машин того времени: программа понималась как последовательность машинных команд, каждая из которых либо вычисляла операнд, либо изменяла счётчик команд, но не одновременно.

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

Это был прямой предшественник тернарного оператора

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

Такое решение диктовалось стремлением к максимально прямому отображению конструкций языка на машинные инструкции: условный переход jz процессора - это действие, а не способ вычислить значение.

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

Ну а во-вторых, у PDP-11 нет команды JZ, хотя идея, высказанная автором, понятна.

архитектурой машин фон Неймана

Архитектура фон Неймана, как и гарвардская архитектура -- это не про то, какие команды есть и что они делают, а про то, используются ли для памяти единые адреса независимо от того, команды это или данные (фон Нейман), или же адресные пространства кода и данных строго отделены друг от друга и не пересекаются, а численно один и тот же адрес указывает разные ячейки памяти в зависимости от того, является ли он адресом команды или данных (Гарвард).

В общем, как по мне, слов в публикации много, а толку -- не очень...

CGA поддерживала такие разрешения, как 160x100/160x200 (полная 16-цветная графика, разрешение почти в два раза ниже, чем в NES), 320x200 (самый популярный, однако усекал 16 цветов до 8-и) и 640x200

Следует заметить, что 160*100 в документации даже не упоминается, насколько помню, а 160*200 упоминается, но поддерживается BIOS лишь в PCjr, в обычной PC, как и последующих машинах, его можно было включить только ручками.

Ну и ошибка:320*200 -- четыре цвета, а не восемь (два бита на пиксель).

Hercules, появившаяся в 1982 году. Как и MDA, она была монохромной, однако поддерживала графические режимы (причём максимальным был 720x348

Насколько помню, графический режим в BIOS тоже не поддерживался -- BIOS работал с ним чисто как с MDA. С разрешением тоже есть сомнения: если пересчитывать разрешение MDA из строк символов в строки пикселей (а Херкулес, с точки зрения вывода на монитор, от МДА не отличается), то будет, кажется, 350 строк (но это уточнять надо по документации).

подсистемы GDI (которая практически в неизменном виде существует даже в Windows 11)

Вроде б, технически GDI серьёзно переписана и теперь работает поверх Direct2D, а не "параллельно" ему... Но в плане совместимости на уровне API -- это да, почему древние виндузовые программы обычно способны нормально работать на современных версиях системы (а если и неспособны, то, как правило, по другим причинам).

Да и "враги народа" там тоже бывают, достаточно маккартизм вспомнить или пресловутое "вмешательство в выборы". В общем, там хорошо, где нас нет -- а мы везде.

Угу, и сделать вид, что это изобретено совсем недавно и чуть ли не авторами данной "статьи" лично. Например, "скромно" промолчали о роли той же IBM, предпринимавшей кучу мер для обеспечения надёжности и устойчивости как на аппаратном, так и на программном уровне ещё в 1960-х.

"Тогда" бывало и 3, и 2, а не только 4.

Всем известны случаи, когда пилоты успешно завершают рейс и сажают самолет на взлетную полосу при одном работающем двигателе, а это как раз результат внедрения концепции «изящной деградации»

А ничего, что многомоторные самолёты появились и успешло летали и садились при отказах двигателей задолго до появления этой концепции, ещё до Первой мировой войны?

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

Ну и не упомянуто изобретение байтов в Системе 360, которыми сейчас пользуются вообще абсолютно все.

Насчёт Бейсика следует заметить, что lingua franca он был разве что в том смысле, что он был везде, но его диалекты различались настолько сильно, что перенос написанной на нём программы с одного компьютера на другой нередко требовал её переписывания чуть менее, чем полностью. По большому счёту, близкой к 100% переносимость была только у программ уровня хелловорлда.

Именно так :) Сей быдлокод я написал лет 15 назад -- делал (и, в целом, сделал) свою библиотеку, чтоб симулировать поведение цифровых схем, нарисованных в САПР печатных плат, способной экспортировать нетлист на VHDL или Verilog (в моём конкретном случае -- Expedition от Mentor, ныне Siemens). В не особо понятных случаях (в частности, и для этой микросхемы, и для К589ХЛ4) пришлось делать тесты реальных микросхем, в роли генератора тестовых воздействий выступала Ардуина :)

entity K155IE1 is
    generic (
        INIT : STD_LOGIC_VECTOR(0 to 3) := "0000");
    port (
        R0   : in  STD_LOGIC;
        R1   : in  STD_LOGIC;
        C0   : in  STD_LOGIC;
        C1   : in  STD_LOGIC;
        \~Y\ : out STD_LOGIC);
end K155IE1;


architecture Logical of K155IE1 is
    signal R   : STD_LOGIC;
    signal C   : STD_LOGIC;
    signal CNT : STD_LOGIC_VECTOR(0 to 3) := INIT;
begin

    R <= R0 and R1;
    C <= C0 and C1;

    process (R, C) is
    begin
        if  R = '1'  then
            CNT <= "0000";
        elsif  rising_edge(C)  then
            if  CNT = "1001"  then
                CNT <= "0000";
            else
                CNT <= CNT + "0001";
            end if;
        end if;
    end process;

    \~Y\ <= '0'  when  CNT = "1001" and C = '0'  else
            '1';

end architecture Logical;

Как что? К155ИЕ1, аналогов, насколько помню, нет :)

Я без особых проблем освоил ISE (для Spartan-3E -- моей первой ПЛИСины). Правда, я хорошо знал, что такое цифровая схемотехника (включая пресловутые JK-триггеры :) ), и для меня основной сложностью было понять, как правильно объяснить синтезатору на VHDL (начинал с него) мою задумку (интерфейс с клавиатурой PS/2): я отлично знал, как сей интерфейс слепить на рассыпухе (сдвиговые регистры и логика), но не сразу "проникся" текстовым описанием. Когда, наконец, в это въехал -- проблем никаких не стало (ну, кроме чисто технических -- типа глюков в IDE и т.п.).

Constraints нужны когда вы понимаете что такое static timing analysis. Для начинающего нужен только 1 (один) constraint в его первый год обучения - это период 1 (одного) тактового сигнала на его плате.

Ну, строго говоря, ноги ПЛИСины задаются тоже в виде ограничений -- чтоб синтезатор знал, куда вести те или иные внешние сигналы.

С такими аргументами сложно спорить :) Я про Эльбрус помню только VLIW и Бабаяна, но это поздние - думаю, первые Эльбрусы были другими

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

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

  • защита и организация виртуальной памяти на основе сегментов переменной длины (80286 не первым был :) );

  • безадресная стековая архитектура: регистров как таковых нет, все операции выполняются над содержимым стека.

Кстати, тот же VLIW исторически проиграл, но VLIW были и Трансмета и Итаниум, оба ушедшие с рынка и оба возникшие не на пустом месте - ошибки и на свободном рынке случаются

Безусловно. Проблема в том, что на "свободном рынке" один выбирает такой путь, другой -- эдакий, и "рыночек порешает". Далеко не всегда в итоге победит технически лучший -- множество факторов будут определять успех или неудачу, пример IBM PC и архитектуры Intel -- наглядная иллюстрация; однако откровенно неэффективное решение в итоге проиграет гарантированно, что произошло и с VLIW (замечу, как архитектуры для процессоров общего назначения -- в специализированных вещах типа процессоров обработки сигналов эта концепция успешно работает), и с машинами Burroughs, хорошо выглядевшими в теории, но оказавшимися неэффективными на практике (как и наши эльбрусы, мгновенно вытесненные, кажется, банальными MIPSами, когда последние стали доступны для наших вояк).

А это из серии "Не надо свое - купим чужое". Это та же школа, нарабатывающаяся годами. Да и ОС бывают разные, скажем, реального времени. Вот Касперский сейчас пилит свою ОС - хочет сделать суперзащищенную для сетевого оборудования и мобильных устройств. Одним Линуксом везде сыт не будешь. Да и чужие хороши, когда они доступны.

Вот с этим согласен. Но тогда с доступностью проблем не было, уволочь можно было любое ПО -- во всяком случае, коммерческое (вояки и спецслужбы -- отдельная тема).

И, в любом случае, какая альтернатива-то? У нас банально не было людей (а шире -- ресурсов вообще), чтобы всё это развивать. Смогли бы сделать свою условную Систему 360 вместе с ОС, компиляторами и прочим? В теории, смогли бы -- только сделали бы это хорошо если к 1980-му году, т.е. на 10 лет позже, чем смогли получить иностранное, ведь всё это надо было бы разработать с нуля, а для этого и людей-то не было (напоминаю, что число программистов в СССР было меньше, чем в одной IBM). А если к этому прибавить ещё малые и управляющие машины (то, что стало СМ ЭВМ, хотя было и в АСВТ)? А там ещё и персоналки подъехали... Где люди и деньги?

И, опять-таки, напоминаю про то, что в реальной истории у нас в качестве "высокопроизводительных ЭВМ" коллектив Лебедева смог продавить, получить деньги и в итоге сделать абсолютно бесперспективные машины. "У них" то же самое сделала Burroughs, но за свой собственный счёт -- и "рыночек порешал", как мы знаем (а вот Система 360, которую грязью поливал работавший в Burroughs Дейкстра, жива до сих пор -- в лице z/Architecture). У нас же при таком развитии событий, возможно, воощбе ничего бы не было, поскольку вряд ли бы выделили соизмеримые деньги кому-то другому на создание, в общем-то, того же самого, ну а разработать что-то серьёзное инициативно было невозможно в силу советской экономической модели.

В общем, лично мне кажется, что создание совместимого железа и использование готового системного ПО было единственным верным путём на тот момент, и проблема не в том, что заимствовали архитектуры, а в том, что, в конечном итоге, перешли к прямому копированию всё усложнявшихся иностранных микросхем вместо разработки своего железа, идентичного по поведению -- поэтому в итоге и остались без микроэлектроники. Ну а ПО... Много Вы знаете альтернатив Винде и Линуху на обычных компьютерах "общего назначения"? Реальной такой даже МакОС не является в силу объёма доступного прикладного ПО. А ведь в 80-е у них полно было всяких разных систем -- но почти всё либо заняло узкую нишу, либо вообще исчезло.

Школа - она ни за день, ни за месяц, ни за год не создается. Мы потеряли время.

И ничего бы путного не создали, скорей всего: сколько-нибудь свободного рынка не было, всё навязывалось сверху, а там зависело больше от "близости к телу".

Пример: уже была школа "железостроения", выдавшая машины серии БЭСМ -- вполне нормальные для своего времени, хоть и не дотягивающие до лучших (но только лучших!) западных образцов аналогичного периода. Что они сделали после БЭСМ-6? Только абсолютно ублюдский, порочный в самой своей основе Эльбрус (базировавшийся на идеях, заимствованных у Burroughs: аппаратная типизация данных, виртуальная память на сегментах переменной длины, а не фиксированных страницах, безадресная стековая архитектура). Вбухали на это кучу денег (причём периферию брали от ЕС ЭВМ, т.е. часть денег шла "по другой ведомости"), а получили на выходе абсолютно бесперспективную машину -- как бесперспективными оказались и машины Burroughs. Вот и всё, на что в реальности оказалась годной типа советская школа.

не знаю, насколько точно "архитектуры повторяли западные", железо в деталях другое, возможно, что и в ПО пришлось вносить изменения

Абсолютно точно повторяли архитектуру, причём не только процессоров, но и периферии. Поэтому западные ОС шли на отечественных машинах без малейших переделок. Сам лично работал, например, на RSX-11M 4.2, запущенной на СМ-1420, хотя и был советский клон ОС-РВ (основное видимое отличие которого -- как раз INVALID DEVICE вместо IНЖАЛИД ДЕЖИЦЕ :) ); знаю людей, которые работали на IBMовских системах на ЕС ЭВМ.

Вот об этом и речь - усилия по освоению чужих систем не привели к появлению своих.

А зачем делать свои, если нормально работают чужие? Вот зачем сейчас типа отечественная ОС с кучей вложений в неё, если это всё равно Линух со всеми его достоинствами и недостатками?

И, кстати, своё делали, только не в области ОС, а в прикладных вещах. В частности, как диалоговая система наш Primus родом из МИФИ абсолютно превосходит штатную IBMовскую TSO (в IBM зациклились на поддержке 100500 типов терминалов, причём с одинаковым подходом к работе на любых типах, а в результате там, например, не было нормального полноэкранного редактора текстов для дисплеев -- редактировали в строчном режиме, как это приходилось делать на пишущих машинках; не говоря о том, что всё это у IBM работало очень медленно из-за использования так называемого ОТМД -- общего телекоммуникационного метода доступа, TCAM по-буржуйски, вместо намного более простого и быстрого БТМД -- базисного, BTAM).

1) Школы попросту не было, от слова "вообще". Для СССР начала-середины 1960-х годов нормой ещё была разработка программ не на ассемблере даже, а прямо в машинных кодах; были лишь первые поползновения в разработке чего-то, напоминающего ОС (как, собственно, это было и у буржуев, но раньше). Можно вспомнить и о том, что на момент принятия решения о копировании в одной IBM программистов было больше, чем во всём СССР, причём у нас зачастую программистами были инженеры и математики, для которых основной специальностью было как раз не программирование и которые вынуждены были этим заниматься, чтобы решать стоящие перед ними задачи. Соответственно, терять нам в этом плане было абсолютно нечего. Что-то стало появляться в немалой степени как раз благодаря знакомству с буржуйскими системами и заимствованию из них определённых идей.

2) А что за переделки, позвольте узнать? На советских машинах, архитектуры которых повторяли западные, благополучно работали западные ОС без всяких переделок -- собственно, ради этого архитектуры и передирали, иначе б можно было бы придумать и что-то своё. Ну а те переделки, которые таки были внесены, обычно бывали элементарными:

  • переводили документацию (обычно весьма плохим языком; читая доку по ОС ЕС, прекрасно видишь, что это чуть ли не подстрочник английского оригинала, так как наши горе-переводчики даже порядок слов не стали менять с английского на русский, из-за чего фразы зачастую звучат не по-русски или акценты смещены не туда, куда надо);

  • в исходниках вырезали любые копирайты, комментарии на английском языке и т.д. и т.п.;

  • в макросы генерации ОС ЕС (и, надо полагать, ряда других систем -- но не в DECовских, где оставили только оригинал) добавили шифры советских устройств рядом с их буржуйскими прототипами; т.е., выполняя генерацию OS/360, ты должен указывать, например, диски типа 2311, а выполняя генерацию ОС ЕС, ты можешь указать как тип 2311, так и один из советских типов -- 5050, 5052, 5055, 5056;

  • если английские тексты выводимых сообщений содержали малые буквы (это, в частности, относится к операционным системам DEC), они все заменялись на большие буквы, поскольку вместо малых английских советские терминалы обычно содержали большие русские (откуда всем известное IНЖАЛИД ДЕЖИЦЕ -- в оригинале Invalid device, возникающий при запуске оригинальной RSX-11 на СМ ЭВМ).

Да, по мере знакомства и накопления опыта в буржуйские системы вносили и более заметные изменения, вплоть до того, что, например, ОС ЕС 6.1 позволяла выполнить генерацию системы в трёх режимах -- MFT, MVT и SVS, чего у оригинальной OS/360 никогда не было (SVS поставлялся как отдельная система VS/2, в то время как классическая OS/360 ограничивалась MFT и MVT -- хотя 95% кода там одинаково). Но это всё было позже, через ннадцать лет, а вот эксплуатацию, используя минимально адаптированные или вообще оригинальные системы, можно было начинать немедленно, как только появилось работоспособное "железо". Сразу появлялась и возможность разрабатывать прикладные программы на языках высокого уровня (в частности, Фортран для научных расчётов и Кобол для экономических).

В общем, скопировав архитектуры, мы сэкономили приличное время на разработке ПО, да и сами архитектуры, выбранные для копирования, были достаточно удачными, хотя не всё было, конечно, идеально. То, что вместо наращивания собственного потенциала, опираясь на западное, мы в дальнейшем всё больше и больше погружались в слепое копирование уже всего подряд -- это другой вопрос.

Ну, это, как и ЕСовские персоналки (ЕС-1840 и др.), появились много позже -- в середине и второй половине 1980-х, грубо говоря.

А у нас на ЕС-1035 считали зарплату, калькуляцию себестоимости производства и всё прочее экономическое. Так что дело в том, что на машине реализовали, а что нет: вероятно, на Вашем предприятии это не было в приоритете, потому и не сделали.

Графический интерфейс был, например, на 80386, которая по производительности примерно соответсвовала старшим моделям ЕС ЭВМ (а соответственно, IBMовским мэйнфреймам второй половины 1970-х). Так что не в нём как таковом дело, а в общем подходе к разработке ПО: возьмём этот фреймворк, добавим эту библиотеку, и ващще всё напишем на пыхтоне, потому что стильно-модно-молодёжно.

В СССР широко применялись два типа перфокарт: 80-колоночные с прямоугольными отверстиями (самые распространённые) и 45-колоночные с круглыми отверстиями. Вторые использовались, главным образом, в электромеханических табуляторах, хотя многие устройства ввода с перфокарт для ЭВМ их тоже могли читать.

1
23 ...

Информация

В рейтинге
1 831-й
Откуда
Солнечногорск, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Инженер встраиваемых систем
Ведущий