Загальні дані 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 - доки це була нова архітектура, чому б не вибрати найкращу з нових машин з будь-якої мфр. Відсутність "бітового режиму" запропонувала легший "поступовий" перехід: Тому залишайтеся з DG.
davidbak

Відповіді:


8

Відповідь полягає в тому, що Ед де Кастро, президент відділу загального управління даними, створив команду інженерів у Північній Кароліні спеціально для розробки ЦП наступного покоління. Він поклав завдання на підтримку та додаткові вдосконалення для нас, команди штату Массачусетс. Три рази ми пропонували нову головну архітектуру, кожен раз з дуже розумним бітом режиму, і описали її як скромне додаткове вдосконалення. Кожного разу Ед бачив нашу маскування і відхиляв пропозицію, очікуючи успіху команди Північної Кароліни. Ед вважав, що незалежно від того, як ми намагалися замаскувати наші пропозиції, він би знав, що це архітектура нового покоління, якби вона мала біт режиму. Тому нам довелося запропонувати архітектуру нового покоління без бітового режиму, навіть якщо це зробило її менш ефективною. Ось так ми пройшли мимо Ед де Кастро. Дивіться душу нової машини,


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

6

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-бітні o / s, але все ж запускати звідти 32-бітну програму. Однак, як ви кажете, використовувати 32-бітний логічний адресний простір з 32-бітних програм, що працюють у цьому режимі, було б неможливо. У чомусь це схоже на те, що Intel робив з 16-бітним 32-бітовим переходом. Тут також можна було виконувати 32-бітні інструкції (доступ до вищої частини регістрів) зсередини 16-бітної програми (працює, наприклад, під MS-DOS). Однак в той же час у них було ...
Морті

... біти режиму для входу в "справжній" 32-бітний захищений режим (який також дозволяв підказка). Різниця полягає в тому, що в 32-бітному режимі кодування 32-бітних інструкцій відрізняється від кодування 32-бітних інструкцій в 16-бітному режимі (оскільки "за замовчуванням" інше), але можливість однакова. З іншого боку, з переходом x86 до 64-бітного кодування інструкція була повністю змінена, тому 32-розрядна програма (або 16-бітна програма) не може використовувати 64-бітні регістри тощо. / s запуск процесу в 64-бітному режимі ("Довгий режим").
Морті

Однак можна все-таки поставити під сумнів переваги підкреслити цю конструкцію "без режиму біт", оскільки, по-перше, існує біт режиму, і, здається, це дуже важливий випадок ("Запуск старого ОС та новий додаток"), де він пропонує будь-який вигода - невже більшість клієнтів не хочуть запустити нову операційну систему, яка може повністю скористатися обладнанням? Важливою особливістю тут є те, що новий ОС може запускати старі програми! Але, як згадується посилання, яке я надіслав, це навіть неможливо, програми вимагають повторного посилання та навіть повторної компіляції (через зміни у / з) надання рендерінга CPU. аспект спір!
Морті
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.