Intel iAPX 432 — Intel iAPX 432

Intel iAPX 432
Logo Intela (1968).svg
Logo firmy Intel Corporation, 1968–2006
Informacje ogólne
Uruchomiona koniec 1981
Wycofane około 1985
Wspólni producenci
Występ
Maks. Częstotliwość taktowania procesora 5 MHz do 8 MHz

IAPX 432 ( Intel Advanced Performance Architecture ) jest zaniechana architektura komputer wprowadzono w 1981. Było Intel „s pierwszy 32-bitowy procesor projekt. Główny procesor architektury, ogólny procesor danych , jest zaimplementowany jako zestaw dwóch oddzielnych układów scalonych, ze względu na ograniczenia techniczne w tamtym czasie. Chociaż niektóre wczesne systemy i podręczniki oparte na 8086, 80186 i 80286 również używały prefiksu iAPX ze względów marketingowych, linie procesorów iAPX 432 i 8086 są całkowicie oddzielnymi projektami z zupełnie różnymi zestawami instrukcji.

Projekt rozpoczął się w 1975 roku jako 8800 (po 8008 i 8080 ) i miał być głównym projektem Intela na lata 80-te. W przeciwieństwie do 8086 , który został zaprojektowany w następnym roku jako następca 8080, iAPX 432 był radykalnym odejściem od poprzednich projektów Intela przeznaczonych dla innej niszy rynkowej i całkowicie niezwiązanym z liniami produktów 8080 lub x86 .

Projekt iAPX 432 jest uważany za komercyjną porażkę Intela i został przerwany w 1986 roku.

Opis

iAPX 432 był określany jako „mikromainframe”, zaprojektowany do programowania w całości w językach wysokiego poziomu. Zestaw instrukcji architektura była również całkowicie nowe i znaczące odejście od Intela poprzednie 8008 i 8080 procesorów jako model programowania iAPX 432 to maszyna stosowa bez widocznych rejestrów ogólnego przeznaczenia . Obsługuje programowanie obiektowe , usuwanie śmieci i wielozadaniowość, a także bardziej konwencjonalne zarządzanie pamięcią bezpośrednio w sprzęcie i mikrokodzie . Bezpośrednia obsługa różnych struktur danych ma również na celu umożliwienie implementacji nowoczesnych systemów operacyjnych przy użyciu znacznie mniejszej ilości kodu programu niż w przypadku zwykłych procesorów. Intel iMAX 432 to wycofany system operacyjny dla 432, napisany w całości w Ada , a Ada była również podstawowym językiem programowania aplikacji. W niektórych aspektach może być postrzegana jako architektura komputerowa języka wysokiego poziomu .

Te właściwości i funkcje zaowocowały projektem sprzętu i mikrokodu, który był bardziej złożony niż większość procesorów tamtej epoki, zwłaszcza mikroprocesory. Jednak magistrale wewnętrzne i zewnętrzne są (w większości) nie szersze niż 16-bitowe i, podobnie jak w innych 32-bitowych mikroprocesorach tamtej epoki (takich jak 68000 czy 32016 ), 32-bitowe instrukcje arytmetyczne są realizowane przez 16-bitowe -bit ALU, poprzez losową logikę i mikrokod lub inne rodzaje logiki sekwencyjnej . Rozszerzona przestrzeń adresowa iAPX 432 w stosunku do 8080 była również ograniczona przez fakt, że liniowe adresowanie danych nadal mogło używać tylko 16-bitowych przesunięć, trochę podobnie do pierwszych projektów Intela opartych na 8086 , w tym współczesnego 80286 (nowy segment 32-bitowy). offsety architektury 80386 zostały szczegółowo opisane publicznie w 1984 r.).

Korzystając z ówczesnej technologii półprzewodnikowej, inżynierowie Intela nie byli w stanie przełożyć projektu na bardzo wydajną pierwszą implementację. Wraz z brakiem optymalizacji w przedwczesnym kompilatorze Ada , przyczyniło się to do powolnych, ale drogich systemów komputerowych, wykonujących typowe testy porównawcze z mniej więcej 1/4 szybkości nowego układu 80286 przy tej samej częstotliwości zegara (na początku 1982 r.). Ta początkowa różnica w wydajności w stosunku do raczej niskoprofilowej i niedrogiej linii 8086 była prawdopodobnie głównym powodem, dla którego plan Intela, by zastąpić tę drugą (znaną później jako x86 ) iAPX 432, nie powiódł się. Chociaż inżynierowie widzieli sposoby na ulepszenie projektu nowej generacji, architekturę możliwości iAPX 432 zaczęto teraz postrzegać bardziej jako ogólne obciążenie implementacyjne niż jako uproszczone wsparcie, jakim miała być.

Pierwotnie zaprojektowane dla częstotliwości taktowania do 10 MHz, rzeczywiste sprzedawane urządzenia były określone dla maksymalnych częstotliwości zegara 4 MHz, 5 MHz, 7 MHz i 8 MHz z maksymalną wydajnością 2 milionów instrukcji na sekundę przy 8 MHz.

Historia

Rozwój

Projekt Intela 432 rozpoczął się w 1976 roku, rok po ukończeniu 8-bitowego Intel 8080 i rok przed rozpoczęciem projektu 16-bitowego 8086 . Projekt 432 został początkowo nazwany 8800 , jako kolejny krok poza istniejącymi mikroprocesorami Intel 8008 i 8080 . To był bardzo duży krok. Zestawy instrukcji tych 8-bitowych procesorów nie były zbyt dobrze dopasowane do typowych języków kompilowanych podobnych do Algola . Jednak głównym problemem był ich mały natywny zakres adresowania, zaledwie 16K dla 8008 i 64K dla 8080, zdecydowanie za mały dla wielu złożonych systemów oprogramowania bez użycia jakiegoś rodzaju przełączania banków , segmentacji pamięci lub podobnego mechanizmu (który został wbudowany w 8086). kilka lat później). Intel zamierzał teraz zbudować wyrafinowany kompletny system z kilku układów LSI, który funkcjonalnie byłby równy lub lepszy niż najlepsze 32-bitowe minikomputery i komputery mainframe, wymagające całych obudów starszych układów. Ten system obsługiwałby wieloprocesory, modułową rozbudowę, odporność na awarie, zaawansowane systemy operacyjne, zaawansowane języki programowania, bardzo duże aplikacje, ultra niezawodność i ultra bezpieczeństwo. Jego architektura zaspokoiłaby potrzeby klientów Intela przez dekadę.

Zespół programistów iAPX 432 był zarządzany przez Billa Lattina, z Justinem Rattnerem jako głównym inżynierem (chociaż jedno źródło podaje, że Fred Pollack był głównym inżynierem). (Rattner został później CTO firmy Intel). Początkowo zespół pracował w Santa Clara, ale w marcu 1977 r. Lattin i jego zespół 17 inżynierów przeniósł się do nowej siedziby Intela w Portland. Pollack później wyspecjalizował się w superskalarności i został głównym architektem układu i686 Intel Pentium Pro .

Szybko okazało się, że zaprojektowanie tego wszystkiego zajmie kilka lat i wielu inżynierów. I podobnie zajęłoby kilka lat dalszego postępu w prawie Moore'a , zanim ulepszona produkcja chipów zmieściłaby to wszystko w kilku gęstych chipach. Tymczasem Intel pilnie potrzebował prostszego produktu tymczasowego, aby sprostać bezpośredniej konkurencji ze strony Motoroli , Ziloga i National Semiconductor . Dlatego Intel rozpoczął pośpieszny projekt zaprojektowania 8086 jako stopniowej ewolucji 8080 o niskim ryzyku, przy użyciu oddzielnego zespołu projektowego. 8086 na rynek masowy został wysłany w 1978 roku.

8086 został zaprojektowany jako wstecznie kompatybilny z 8080 w tym sensie, że język asemblera 8080 może być mapowany na architekturę 8086 przy użyciu specjalnego asemblera . Istniejący kod źródłowy asemblera 8080 (choć nie ma kodu wykonywalnego ) został w ten sposób do pewnego stopnia zgodny z nowym 8086. W przeciwieństwie do tego 432 nie miał zgodności oprogramowania ani wymagań dotyczących migracji. Architekci mieli całkowitą swobodę tworzenia nowatorskiego projektu od zera, używając technik, które uznali za najlepsze dla systemów i oprogramowania na dużą skalę. Zastosowali modne koncepcje informatyki z uniwersytetów, w szczególności maszyny zdolnościowe , programowanie obiektowe, wysokopoziomowe maszyny CISC, Ada i gęsto zakodowane instrukcje. Ta ambitna mieszanka nowatorskich funkcji sprawiła, że ​​chip był większy i bardziej złożony. Złożoność układu ograniczyła szybkość zegara i wydłużyła harmonogram projektowania.

Rdzeń projektu — główny procesor — został nazwany General Data Processor ( GDG ) i zbudowany jako dwa układy scalone : jeden (43201) do pobierania i dekodowania instrukcji, drugi (43202) do ich wykonywania. Większość systemów zawierałaby również procesor interfejsu 43203 ( IP ), który działał jako kontroler kanału dla I/O , oraz Attached Processor ( AP ), konwencjonalny procesor Intel 8086, który zapewniał „moc przetwarzania w podsystemie I/O”.

Były to jedne z największych projektów epoki. Dwuchipowy GDP miał łączną liczbę około 97 000  tranzystorów, podczas gdy jednoukładowy IP miał około 49 000. Dla porównania, Motorola 68000 (wprowadzona w 1979 r.) miała około 40 000 tranzystorów.

W 1983 roku Intel wypuścił dwa dodatkowe układy scalone dla architektury iAPX 432 Interconnect Architecture: 43204 Bus Interface Unit ( BIU ) i 43205 Memory Control Unit ( MCU ). Te chipy pozwoliły na prawie bezklejowe systemy wieloprocesorowe z maksymalnie 63 węzłami.

Awarie projektu

Niektóre z innowacyjnych funkcji iAPX 432 były szkodliwe dla dobrej wydajności. W wielu przypadkach iAPX 432 miał znacznie mniejszą przepustowość instrukcji niż konwencjonalne mikroprocesory tamtej epoki, takie jak National Semiconductor 32016 , Motorola 68010 i Intel 80286 . Jednym z problemów było to, że dwuchipowa implementacja GDP ograniczyła go do szybkości okablowania elektrycznego płyty głównej. Większym problemem była architektura możliwości wymagała dużych asocjacyjnych pamięci podręcznych, aby działać wydajnie, ale chipy nie miały na to miejsca. Zestaw instrukcji używał również bitów wyrównanych instrukcji o zmiennej długości zamiast zwykłych, częściowo stałych formatów wyrównanych do bajtów lub słów, używanych w większości projektów komputerowych. Dekodowanie instrukcji było zatem bardziej złożone niż w innych projektach. Chociaż samo w sobie nie wpłynęło to na wydajność, zastosowano dodatkowe tranzystory (głównie do dużego przełącznika beczkowego ) w projekcie, w którym i tak brakowało miejsca, oraz tranzystorów na pamięci podręczne, szersze magistrale i inne funkcje zorientowane na wydajność. Ponadto BIU został zaprojektowany do obsługi systemów odpornych na uszkodzenia, dzięki czemu do 40% czasu magistrali było przetrzymywane w stanach oczekiwania .

Innym poważnym problemem był niedojrzały i niedopracowany kompilator Ady . W każdym przypadku używał drogich instrukcji obiektowych, zamiast szybszych instrukcji skalarnych, gdzie miałoby to sens. Na przykład iAPX 432 zawierał bardzo kosztowną instrukcję wywołania procedury międzymodułowej , której kompilator używał do wszystkich wywołań, pomimo istnienia znacznie szybszych instrukcji branch i link. Innym bardzo powolnym wywołaniem było enter_environment, które ustawia ochronę pamięci. Kompilator uruchomił to dla każdej zmiennej w systemie, nawet jeśli zmienne były używane w istniejącym środowisku i nie trzeba było ich sprawdzać. Co gorsza, dane przekazywane do iz procedur zawsze były przekazywane przez zwrot wartości, a nie przez odniesienie. Podczas uruchamiania testu porównawczego Dhrystone przekazywanie parametrów trwało dziesięć razy dłużej niż wszystkie inne obliczenia łącznie.

Według New York Times „i432 działał od 5 do 10 razy wolniej niż jego konkurent, Motorola 68000”.

Impact i podobne projekty

iAPX 432 był jednym z pierwszych systemów, który wdrożył nowy standard IEEE-754 dla arytmetyki zmiennoprzecinkowej.

Skutkiem niepowodzenia 432 było to, że projektanci mikroprocesorów doszli do wniosku, że obsługa obiektów w chipie prowadzi do złożonego projektu, który niezmiennie będzie działał powoli, a 432 był często cytowany jako kontrprzykład przez zwolenników projektów RISC . Jednak niektórzy utrzymują, że obsługa obiektowa nie była głównym problemem 432 i że niedociągnięcia implementacyjne (szczególnie w kompilatorze) wspomniane powyżej spowalniałyby każdy projekt procesora. Od czasu iAPX 432 podjęto tylko jedną próbę stworzenia podobnego projektu, procesor Rekursiv , chociaż obsługa procesów przez INMOS Transputer była podobna — i bardzo szybka.

Intel spędził sporo czasu, pieniędzy i MindShare na 432, miał wykwalifikowanego zespołu poświęconą do niego i nie chciał z niego zrezygnować całkowicie po jego awarii w rynku. Nowy architekt — Glenford Myers — został sprowadzony, aby stworzyć całkowicie nową architekturę i implementację dla procesora rdzeniowego, który miałby zostać zbudowany w ramach wspólnego projektu Intela i Siemensa (później BiiN ), czego wynikiem były procesory z serii i960 . Podzbiór i960 RISC stał się przez pewien czas popularny na rynku procesorów wbudowanych, ale wysokiej klasy 960MC i 960MX z pamięcią tagowaną były sprzedawane tylko do zastosowań wojskowych.

Według New York Times , współpraca Intela z HP nad procesorem Merced (później znanym jako Itanium) była próbą powrotu firmy na rynek bardzo wysokiej klasy.

Architektura

Instrukcje iAPX 432 mają zmienną długość, od 6 do 321 bitów. Co niezwykłe, nie są one wyrównane do bajtów, to znaczy mogą zawierać nieparzystą liczbę bitów i bezpośrednio następować po sobie bez względu na granice bajtów.

Pamięć i możliwości obiektowe

iAPX 432 obsługuje sprzęt i mikrokod do programowania obiektowego i adresowania opartego na możliwościach . System wykorzystuje pamięć segmentową składającą się z maksymalnie 224 segmentów o wielkości do 64  KB każdy, zapewniając całkowitą wirtualną przestrzeń adresową o wielkości 2 40 bajtów. Fizyczna przestrzeń adresowa to 2 24 bajty (16  MB ).

Programy nie są w stanie odwoływać się do danych lub instrukcji według adresu; zamiast tego muszą określić segment i przesunięcie w obrębie segmentu. Do segmentów odwołują się deskryptory dostępu (AD) , które zapewniają indeks do tabeli obiektów systemowych oraz zestaw praw ( możliwości ) regulujących dostęp do tego segmentu. Segmenty mogą być „segmentami dostępu”, które mogą zawierać tylko deskryptory dostępu lub „segmentami danych”, które nie mogą zawierać AD. Sprzęt i mikrokod sztywno wymuszają rozróżnienie między segmentami danych i dostępu i nie pozwolą oprogramowaniu traktować danych jako deskryptorów dostępu i odwrotnie.

Obiekty zdefiniowane przez system składają się z pojedynczego segmentu dostępu lub segmentu dostępu i segmentu danych. Segmenty zdefiniowane przez system zawierają dane lub deskryptory dostępu dla danych zdefiniowanych przez system z wyznaczonymi przesunięciami, chociaż system operacyjny lub oprogramowanie użytkownika może je rozszerzyć o dodatkowe dane. Każdy obiekt systemowy ma pole typu, które jest sprawdzane za pomocą mikrokodu, tak że obiekt portu nie może być użyty tam, gdzie potrzebny jest obiekt przewoźnika. Programy użytkownika mogą definiować nowe typy obiektów, które będą w pełni korzystać ze sprawdzania typu sprzętu, dzięki wykorzystaniu obiektów kontroli typu (TCO) .

W wydaniu 1 architektury iAPX 432 obiekt zdefiniowany przez system zazwyczaj składał się z segmentu dostępu i opcjonalnie (w zależności od typu obiektu) segmentu danych określonego przez deskryptor dostępu w stałym przesunięciu w obrębie segmentu dostępu.

W wydaniu 3 architektury, w celu poprawy wydajności, segmenty dostępu i segmenty danych zostały połączone w pojedyncze segmenty o wielkości do 128 kB, podzielone na część dostępową i część danych o wielkości od 0 do 64 KB każdy. To drastycznie zmniejszyło liczbę wyszukiwań w tablicy obiektów i podwoiło maksymalną wirtualną przestrzeń adresową.

iAPX432 rozpoznaje czternaście typów predefiniowanych obiektów systemowych :

  • obiekt instrukcji zawiera instrukcje wykonywalne
  • obiekt domeny reprezentuje moduł programu i zawiera odwołania do podprogramów i danych
  • obiekt context reprezentuje kontekst wykonywanego procesu
  • obiekt definicji typu reprezentuje typ obiektu zdefiniowany programowo
  • obiekt kontroli typu reprezentuje przywilej specyficzny dla typu
  • tabela obiektów identyfikuje systemową kolekcję aktywnych deskryptorów obiektów
  • obiekt zasobów pamięci reprezentuje wolną pulę pamięci storage
  • fizyczny obiekt pamięci identyfikuje wolne bloki pamięci w pamięci
  • Obiekt żądania pamięci ogranicza pamięć, która może być przydzielona przez wszystkie powiązane obiekty zasobów pamięci masowej
  • obiekt procesu identyfikuje uruchomiony proces
  • obiekt port reprezentuje port i kolejkę komunikatów do komunikacji międzyprocesowej
  • przewoźnik Przewoźnicy przenoszą wiadomości do i z portów
  • procesor zawiera informacje o stanie jednego procesora w systemie
  • obiekt komunikacyjny procesora służy do komunikacji międzyprocesorowej

Zbieranie śmieci

Oprogramowanie działające na 432 nie musi jawnie zwalniać obiektów, które nie są już potrzebne. Zamiast tego mikrokod implementuje część oznaczającą część algorytmu równoległego wyrzucania elementów bezużytecznych Edsgera Dijkstry w locie ( kolektor w stylu mark-and-sweep ). Wpisy w tabeli obiektów systemowych zawierają bity używane do oznaczania każdego obiektu jako białego, czarnego lub szarego zgodnie z potrzebami kolektora. System operacyjny iMAX 432 zawiera część oprogramowania odśmiecacza pamięci.

Format instrukcji

Instrukcje wykonywalne są zawarte w systemowym „obiekcie instrukcji”. Ponieważ instrukcje są wyrównane bitowo, 16-bitowe przesunięcie do obiektu instrukcji pozwala obiektowi zawierać do 8192 bajtów instrukcji (65 536 bitów).

Instrukcje składają się z operatora , składającego się z klasy i kodu operacji oraz od zera do trzech odwołań do operandów . „Pola są zorganizowane w celu przedstawienia informacji procesorowi w kolejności wymaganej do dekodowania”. Częściej używane operatory są kodowane przy użyciu mniejszej liczby bitów. Instrukcja zaczyna się 4 lub 6 bitowym polem klasy, które wskazuje liczbę operandów, zwaną kolejnością instrukcji, oraz długość każdego operandu. Po nim następuje opcjonalnie pole formatu od 0 do 4 bitów , które opisuje operandy (jeśli nie ma operandów, format nie jest obecny). Następnie przyjdź od zera do trzech operandów, zgodnie z opisem w formacie. Instrukcja jest zakończona kodem operacji od 0 do 5 bitów, jeśli taki istnieje (niektóre klasy zawierają tylko jedną instrukcję i dlatego nie mają kodu operacji). „Pole Format pozwala, aby PKB był wyświetlany programiście jako architektura zero-, jedno-, dwu- lub trzyadresowa”. Pole formatu wskazuje, że operand jest odwołaniem do danych lub górnym lub kolejnym elementem stosu operandów.

Zobacz też

  • iAPX , dla nazwy iAPXX

Uwagi

Bibliografia

Linki zewnętrzne