Общие данные MV / 8000 достоинств «Бит без режима»

10

Я читаю «Душу новой машины» Трейси Киддер, где команда Data General разрабатывает новую машину (под кодовым названием «Eagle», позже названную MV / 8000). Это 32-битное расширение предыдущей архитектуры (16-битное Eclipse). Кажется, одной из вращающихся тем является то, что они не хотят создавать машину с битом режима и что им это удалось.

Тем не менее, он не учитывает, как это технически достигается, и также не учитывает, почему было так привлекательно создавать машины без битов режима. Книга не является технической книгой, поэтому детали могут быть искажены. Тем не менее, читая эту книгу, вы чувствуете, что в то время решение «модового бита» было распространено (и, следовательно, возможно), но инженеры посчитали его непривлекательным по эстетическим причинам. Книга также заставляет казаться невероятно сложной задачей создание дизайна без бита режима, который каким-то образом был преодолен этой конкретной командой.

Я нашел это описание того, как это было достигнуто:

http://people.cs.clemson.edu/~mark/330/kidder/no_mode_bit.txt

Похоже, в основном речь идет об использовании ранее неиспользованной части пространства кода операции для новых инструкций. Я должен признать, что был немного разочарован тем, что это было «просто так». Также я думаю, что это все еще оставляет некоторые вопросы без ответа:

Во-первых, как 16-битные процессы жили в 32-битном адресном пространстве? Потому что я думаю, что это ключевая проблема в создании 32-битного расширения "без бита режима". Расширение набора инструкций, с другой стороны, является довольно распространенным делом. Поскольку нет описания того, как это произошло, можно предположить, что 16-битный код просто обращается к памяти, как это всегда делалось, возможно, он видит какой-то тип виртуализированного / объединенного представления памяти (с новыми регистрами ЦП, контролирующими, где находится первый адрес), или что-то такое. Но я не знаю, есть ли что-то большее, чем это. В этом случае можно было бы утверждать, что это своего рода «бит режима». Процессы в 16-битном режиме могут выполняться вместе с другими процессами благодаря специальным функциям, добавленным в ЦП.

Во-вторых, почему было так привлекательно создать машину без бита режима? Многие из преимуществ, о которых говорится в книге, заключается в том, что клиенты хотели запускать старое программное обеспечение. Но это, кажется, не говорит против бита режима, так как вся цель использования бита режима состоит в том, чтобы иметь обратную совместимость. Когда AMD расширила x86 до 64-бит, по крайней мере, согласно моему пониманию слова «бит режима», они точно добавили бит режима. Специальный бит, который сделает процессор в 64-битном режиме. И еще один бит, который заставил бы процесс выполняться в «подрежиме» 64-битного режима (чтобы обеспечить совместимость с 32-битными приложениями). Суть подрежима заключается в том, что ЦП интерпретирует поток инструкций как старые 32-битные инструкции, но выполненные 32-битные обращения к памяти разрешаются с использованием нового формата таблиц страниц (установленного 64-битной операционной системой) и в конечном итоге отображается на полное физическое адресное пространство. Кроме того, 32-битный код может быть заменен 64-битным кодом. Как и решение Data General, это также позволило 32-битной программе работать под 64-битными программами (16-битная или 32-битная в случае DG). Таким образом, с точки зрения клиента, похоже, нет никакой разницы вообще. Следовательно, единственная выгода могла бы быть в реализации, упрощая дизайн, но книга не делает это звучащим так, как это беспокоит, поскольку бит режима, казалось, был распространен даже в то время (и, кажется, более поздние архитектуры также использовал его, как показывает случай x64).

Я уверен, что кое-что я пропустил, поэтому было бы здорово, если бы кто-то мог обсудить больше технических деталей и достоинств этого «безрежимного» дизайна.

Морти
источник
В те дни - дни перехода общего размера слова с 16-битных на 32-битные - большинство новых 32-битных архитектур имели разные наборы команд полностью из одной и той же 16-битной строки mfr - даже если бы они могли также выполняться 16-битная инструкция, установленная с «битом режима». Это привело к неопределенности в маркетинге, так как люди, осуществляющие модернизацию проектов на новые 32-разрядные машины, не видели причин оставаться с тем же MFR - поскольку это была новая архитектура, почему бы не выбрать лучшее из новых компьютеров из MFR. Отсутствие «бита режима» предполагает более легкий «инкрементальный» переход: поэтому оставайтесь с DG.
Давидбак

Ответы:

8

Ответ заключается в том, что Эд де Кастро, президент Data General Management, создал группу инженеров в Северной Каролине специально для разработки ЦП следующего поколения. Он поручил задачу поддержки и дополнительных улучшений нам, команде из Массачусетса. Мы трижды предлагали новую крупную архитектуру, каждый раз с очень разумным битом режима, и описывали ее как скромное постепенное улучшение. Каждый раз Эд видел нашу маскировку и отклонял предложение, ожидая, что команда Северной Каролины добьется успеха. Эд считал, что независимо от того, как мы пытались скрыть наши предложения, он знал бы, что это была архитектура нового поколения, если бы у нее был бит режима. Поэтому нам пришлось предложить архитектуру нового поколения без бита режима, даже если это сделало ее менее эффективной. Вот так мы прошли мимо Эда де Кастро. Увидеть душу новой машины,

Карл Алсинг
источник
Привет, Карл, спасибо за информацию, да, у меня сложилось впечатление (после прочтения книги), что дискуссия была очень о политических последствиях. Хорошо с инсайдерской информацией - похоже, что MV / 8000 был очень интересным проектом, частью которого я был.
Морти
6

Теоретически «бит без режима» позволит вам использовать старую 16-битную операционную систему без каких-либо изменений, и эта ОС сможет запускать 32-битные приложения, хотя новые 32-битные приложения будут зависать 16-битный виртуальный адрес, поэтому можно было бы использовать 32-битные регистры и новые инструкции, но он мог бы работать неправильно, если бы они обращались к виртуальным адресам больше .216

С помощью бита режима пришлось бы изменить старую 16-разрядную ОС, чтобы выяснить, была ли программа 16-разрядной или 32-разрядной, а затем установить соответствующий бит режима перед запуском программы.

На практике кажется, что MV / 8000 действительно имел бит режима. В другом месте на веб-странице Марка Смотермана в Клемсоне он опубликовал Общие данные, Принципы работы ECLIPSE MV / 8000 , 1980 . Если вы посмотрите в Приложении E (начиная со страницы 369), вы увидите, что MV / 8000 имел два совершенно разных механизма таблиц страниц. Конкретная машина, с которой MV / 8000 была обратно совместима, была C / 350, а C / 350 имел специальный 16-битный блок выделения и защиты памяти с особыми способами управления этим блоком. Для 32-разрядного логического к физическому режиму вы бы вместо этого включили модуль преобразования адресов (описано в главе 3, начиная со стр. 31).

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

Поэтому вопрос не в том, хороший или плохой бит режима. Более того, не было особой причины использовать бит режима, чтобы различать 16-битные и 32-битные инструкции. 16-битные инструкции используют 16-битный логический адрес (с высокими 16 битами, установленными в 0) и 16-битные регистры, а 32-битные инструкции используют 32-битный логический адрес и 32-битные регистры. Старая ОС «просто работает» на новой машине, но вы также можете попробовать новые инструкции, запустив новую программу под старой ОС.

Блуждающая логика
источник
Привет ОК, это делает задачу с «битом без режима» более ясной - поэтому цель состояла в том, чтобы иметь возможность загружать исходные 16-битные операции ввода-вывода, но при этом запускать 32-битную программу оттуда. Однако, как вы говорите, было бы невозможно использовать 32-разрядное логическое адресное пространство из 32-разрядных программ, работающих в этом режиме. В некотором смысле это похоже на то, что Intel сделала с переходом с 16-битного на 32-битный режим. Здесь также можно было выполнять 32-битные инструкции (обращаясь к верхней части регистров) из 16-битной программы (работающей, например, под MS-DOS). Тем не менее, в то же время они имели ...
Морти
... биты режима для входа в «истинный» 32-битный защищенный режим (который также допускает пейджинг). Разница в том, что в 32-битном режиме кодирование 32-битных инструкций отличается от кодирования 32-битных инструкций в 16-битном режиме (поскольку «значение по умолчанию» отличается), но возможности те же. С другой стороны, с переходом x86 на 64-битную кодировку инструкций полностью изменили, поэтому 32-битная программа (или 16-битная программа) не может использовать 64-битные регистры и т. Д. Это требует обновленного o / s запуск процесса в 64-битном режиме («Длинный режим»).
Морти
Тем не менее, можно по-прежнему сомневаться в достоинствах акцентирования внимания на этом дизайне «без режима бит», так как, во-первых, есть бит режима, и, похоже, это очень важный случай («Запуск старого ОС и новое приложение»), где он предлагает любые Выгода - разве большинство клиентов не захотят запустить новую ОС, которая может в полной мере использовать преимущества аппаратного обеспечения? Важной особенностью здесь является то, что новая ОС может запускать старые приложения! Но, как упоминала отправленная мной ссылка, это даже невозможно, программы требуют повторной компоновки и даже повторной компиляции (из-за изменений в o / s), отрисовывающих ЦП. аспект спорный!
Морти