Dane Ogólne zalety MV / 8000 „Bit bez trybu”

10

Czytam „Duszę nowej maszyny” Tracy Kidder, w której zespół Data General projektuje nową maszynę (o kryptonimie „Eagle”, później nazwaną MV / 8000). Jest to 32-bitowe rozszerzenie poprzedniej architektury (16-bitowe środowisko Eclipse). Jednym z motywów obrotowych wydaje się być to, że nie chcą tworzyć maszyny z bitem trybu i że im się to udało.

Pomija jednak sposób, w jaki jest to technicznie osiągane, a także nie wyjaśnia, dlaczego stworzenie maszyny bez odrobiny trybu było tak atrakcyjne. Książka nie jest książką techniczną, więc może być tak, że szczegóły zostały w jakiś sposób zniekształcone. Jednak masz wrażenie, że czytając tę ​​książkę, rozwiązanie „bitowe” było w tym czasie powszechne (a zatem wykonalne), ale inżynierowie uznali go za nieatrakcyjny, być może ze względów estetycznych. Książka sprawia również, że stworzenie projektu bez odrobiny trybu wydaje się niezwykle trudnym zadaniem, które w jakiś sposób zostało przezwyciężone przez ten konkretny zespół.

Znalazłem ten opis, w jaki sposób został osiągnięty:

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

Wydaje się, że w zasadzie chodzi o wykorzystanie wcześniej nieużywanej części przestrzeni opcode na nowe instrukcje. Muszę przyznać, że byłem trochę rozczarowany, że to „właśnie to”. Myślę też, że nadal pozostawia to kilka pytań bez odpowiedzi:

Po pierwsze, jak przebiegły 16-bitowe procesy w 32-bitowej przestrzeni adresowej? Ponieważ uważam, że jest to kluczowe wyzwanie w tworzeniu rozszerzenia 32-bitowego „bez bitu trybu”. Z drugiej strony rozszerzenie zestawu instrukcji jest stosunkowo częstym przedsięwzięciem. Ponieważ nie ma opisu tego, jak to się stało, można założyć, że 16-bitowy kod po prostu uzyskuje dostęp do pamięci, jak zawsze, może widzi jakiś rodzaj zwirtualizowanego / zapisanego w pamięci widoku pamięci (z nowymi rejestrami CPU kontrolującymi, gdzie jest pierwszy adres) lub coś w tym stylu. Ale nie wiem, czy jest w tym coś więcej. W takim przypadku można argumentować, że było to rozwiązanie typu „bit trybu”. Procesy w trybie 16-bitowym mogą działać równolegle z innymi procesami dzięki specjalnym funkcjom dodanym do procesora.

Po drugie, dlaczego tak atrakcyjna była maszyna bez bitu trybu? Wiele korzyści opisanych w książce polega na tym, że klienci chcieli uruchomić stare oprogramowanie. Ale to nie wydaje się przemawiać przeciwko bitowi trybu, ponieważ jedynym celem użycia bitu trybu jest zgodność wsteczna. Kiedy AMD rozszerzyło x86 do 64-bitów, przynajmniej zgodnie z moim zrozumieniem słowa „bit trybu”, dokładnie zrobili, aby dodać bit trybu. Specjalny bit, który sprawiłby, że procesor byłby w trybie 64-bitowym. I kolejny bit, który sprawiłby, że proces byłby wykonywany w „trybie podrzędnym” trybu 64-bitowego (aby umożliwić zgodność z aplikacjami 32-bitowymi). Istotą tego podtrybu jest to, że procesor interpretuje strumień instrukcji jako stare 32-bitowe instrukcje, ale 32-bitowe dostępy do pamięci są rozwiązywane przy użyciu nowego formatu tabel stron (konfigurowanego przez 64-bitowy system operacyjny) i ostatecznie odwzorowany na pełną fizyczną przestrzeń adresową. Ponadto kod 32-bitowy można zablokować za pomocą kodu 64-bitowego. Podobnie jak rozwiązanie Data General, pozwalało to również 32-bitowemu programowi działać pod programami 64-bitowymi (16-bitowy vs 32-bitowy w przypadku DG). Z punktu widzenia klienta wydaje się, że nie ma żadnej różnicy. Stąd jedyną korzyścią mogła być implementacja, uproszczenie projektu, ale książka nie wydaje się, aby brzmiało to tak, ponieważ jest to problem, ponieważ tryb trybu wydawał się być powszechny nawet w tym czasie (i wydaje się, że później architektury również zastosował go, jak pokazuje przypadek x64).

Jestem pewien, że coś przeoczyłem, więc byłoby wspaniale, gdyby ktoś mógł omówić więcej szczegółów technicznych i zalet tego projektu „bez trybu bitowego”.

Morty
źródło
W tamtych czasach - w dniach przenoszenia wspólnego rozmiaru słowa z 16-bitowego na 32-bitowy - większość nowych 32-bitowych architektur miała różne zestawy instrukcji całkowicie z tej samej 16-bitowej linii mfr - nawet gdyby mogły one również wykonać 16-bitowa instrukcja ustawiona na „bit trybu”. Doprowadziło to do niepewności marketingowej, ponieważ osoby uaktualniające projekty do nowych 32-bitowych maszyn nie widziały powodu, aby pozostać z tym samym mfr - o ile była to nowa architektura, dlaczego nie wybrać najlepszego z nowych maszyn z dowolnego mfr. Brak „bitu trybu” sugerował łatwiejsze przejście „przyrostowe”: dlatego pozostań w DG.
davidbak

Odpowiedzi:

8

Odpowiedź jest taka, że ​​Ed deCastro, prezes Data General Management, powołał zespół inżynierów w Północnej Karolinie specjalnie do projektowania procesorów nowej generacji. Zadanie wsparcia i przyrostowych ulepszeń powierzył nam, zespołowi z Massachusetts. Trzy razy zaproponowaliśmy nową, poważną architekturę, za każdym razem z bardzo sensownym bitem trybu, i opisaliśmy ją jako skromne ulepszenie przyrostowe. Za każdym razem Ed przejrzał nasze przebranie i odrzucił propozycję, oczekując sukcesu drużyny z Karoliny Północnej. Ed uważał, że niezależnie od tego, jak próbowaliśmy ukryć nasze propozycje, wiedziałby, że jest to architektura nowej generacji, gdyby miała nieco tryb. Musieliśmy więc zaproponować architekturę nowej generacji bez bitu trybu, nawet jeśli zmniejszyło to jej wydajność. W ten sposób minęliśmy Eda deCastro. Zobacz Duszę nowej maszyny,

Carl Alsing
źródło
Cześć Carl, dziękuję za informację, tak, mam również wrażenie (po przeczytaniu książki), że dyskusja na temat modów była bardzo ważna w kwestiach politycznych. Dobrze z poufnymi informacjami - brzmi jak MV / 8000, był to bardzo ekscytujący projekt.
Morty,
6

Teoretycznie „bit bez trybu” pozwoliłby na używanie starego, 16-bitowego systemu operacyjnego bez żadnych modyfikacji, a system operacyjny byłby w stanie uruchamiać aplikacje 32-bitowe, chociaż nowe aplikacje 32-bitowe utknęłyby 16-bitowy adres wirtualny, więc byłby w stanie korzystać z 32-bitowych rejestrów i nowych instrukcji, ale źle się zachowałby, gdyby uzyskał dostęp do adresów wirtualnych większych niż .216

W przypadku bitu trybu stary 16-bitowy system operacyjny musiałby zostać zmodyfikowany, aby dowiedzieć się, czy program był 16-bitowy czy 32-bitowy, a następnie odpowiednio ustawić bit trybu przed uruchomieniem programu.

W praktyce wydaje się, że MV / 8000 faktycznie miał bit trybu. W innym miejscu na stronie internetowej Marka Smothermana w Clemson opublikował Data General, ECLIPSE MV / 8000 Principles of Operation , 1980 . Jeśli spojrzysz na Załącznik E (od strony 369), zobaczysz, że MV / 8000 miał dwa zupełnie różne mechanizmy tablic strony. Konkretną maszyną, z którą MV / 8000 był wstecznie kompatybilny, była C / 350, a C / 350 miał specyficzną 16-bitową jednostkę alokacji i ochrony pamięci, ze szczególnymi sposobami sterowania tą jednostką. W przypadku 32-bitowej operacji logicznej na fizyczną zamiast tego należy włączyć jednostkę translacji adresów (opisaną w rozdziale 3, zaczynając od strony 31.

W praktyce oznacza to, że podczas wykonywania instrukcji 16-bitowej w trybie 32-bitowym określa się, że wysokie 16 bitów adresu logicznego jest ustawiane na 0. Musi także istnieć specyfikacja tego, co dzieje się z wysokim 16-bitowy adres podczas wykonywania 32-bitowej instrukcji w trybie 16-bitowym, ale nie byłem w stanie jej znaleźć podczas krótkiego przeglądania instrukcji.

Więc nie chodzi o to, czy bit trybu jest dobry, czy zły. Co więcej, nie było szczególnie dobrego powodu, aby używać bitu trybu do rozróżniania instrukcji 16-bitowych i 32-bitowych. 16-bitowe instrukcje używają 16-bitowych adresów logicznych (przy wysokich 16 bitach ustawionych na 0) i 16-bitowych rejestrów, a 32-bitowe instrukcje używają 32-bitowych adresów logicznych i 32-bitowych rejestrów. Stary system operacyjny „po prostu działa” na nowym komputerze, ale możesz także wypróbować nowe instrukcje, uruchamiając nowy program w starym systemie operacyjnym.

Wędrująca logika
źródło
Cześć OK, to sprawia, że ​​cel z bitem „no mode” jest wyraźniejszy - więc celem było uruchomienie oryginalnego 16-bitowego systemu operacyjnego, ale nadal uruchamianie stamtąd 32-bitowego programu. Jednak, jak mówisz, nie byłoby możliwe użycie 32-bitowej logicznej przestrzeni adresowej z 32-bitowych programów działających w tym trybie. W pewnym sensie jest podobny do tego, co Intel zrobił z przejściem z 16 do 32 bitów. W tym przypadku możliwe było również wykonanie instrukcji 32-bitowych (dostęp do wyższej części rejestrów) z poziomu 16-bitowego programu (działającego na przykład pod MS-DOS). Jednak jednocześnie mieli ...
Morty
... bity trybu dla wejścia w „prawdziwy” 32-bitowy tryb chroniony (który również pozwalał na stronicowanie). Różnica polega jednak na tym, że w trybie 32-bitowym kodowanie instrukcji 32-bitowych różni się od kodowania instrukcji 32-bitowych w trybie 16-bitowym (ponieważ „domyślny” jest inny), ale możliwości są takie same. Z drugiej strony, przy przejściu x86 do wersji 64-bitowej kodowanie instrukcji zostało całkowicie zmienione, więc program 32-bitowy (lub program 16-bitowy) nie może używać rejestrów 64-bitowych itp. Wymaga to zaktualizowanego / s uruchamianie procesu w trybie 64-bitowym („Tryb długi”).
Morty,
Jednak nadal można zakwestionować zalety podkreślenia tego projektu „bitu bez trybu”, ponieważ po pierwsze jest to bit trybu i wydaje się, że jest to bardzo narożny przypadek („Uruchamianie starego systemu operacyjnego i nowej aplikacji”), w którym oferuje on dowolny korzyść - czy większość klientów nie chce uruchomić nowego systemu operacyjnego, który może w pełni korzystać ze sprzętu? Ważną funkcją jest to, że nowy system operacyjny może uruchamiać stare aplikacje! Ale jak wspomniałem w przesłanym przeze mnie linku, nie jest to nawet możliwe, programy wymagają ponownego łączenia, a nawet ponownej kompilacji (ze względu na zmiany w systemach operacyjnych) zapewniającej zgodność procesora. aspekt sporny!
Morty