Intel i860
Procesor Intel i860, inaczej 80860, nazwa kodowa N10 – procesor o architekturze RISC produkowany przez firmę Intel od 1989. Procesor ten, wraz z modelem Intel i960 był jednym z pierwszych podejść Intela do przemodelowania architektury zestawu rozkazów od czasów nieudanego modelu i432, produkowanego w latach 80. Procesor został wprowadzony na rynek przy dość intensywnych działaniach promocyjnych, przyćmiewając pojawienie się na rynku modelu i960, uważanego za konstrukcję bardziej udaną. Model i860 nigdy nie odniósł sukcesu komercyjnego, a jego produkcja została zaprzestana w połowie lat 90. Sam układ był wykorzystywany w wysokiej klasy podsystemach graficznych, takich, jak karta rozszerzająca "NeXT Dimension" komputera NeXT.
Cechy techniczne
[edytuj | edytuj kod]i860 zawierał kilka cech, które w owych czasach były unikalne. Jedną z nich była architektura VLIW (Very Long Instruction Word, bardzo długie słowo rozkazu) i obsługa szybkich operacji zmiennoprzecinkowych. Procesor składał się z 32-bitowej jednostki ALU (arytmetyczno-logicznej) i 64-bitowej jednostki FPU (zmiennoprzecinkowej), która z kolei składała się z trzech części: sumatora, mnożnika i procesora graficznego. Procesor korzystał z oddzielnych potoków dla jednostki ALU, zmiennoprzecinkowego sumatora i mnożnika, potrafił też wykonać do trzech instrukcji w jednym cyklu zegara (dokładnie były to dwie instrukcje – jedna całkowita plus jedna instrukcja zmiennoprzecinkowa "mnóż i zbierz" – w jednym cyklu).
Jedną z niecodziennych cech układu było to, że możliwy był dostęp programowy do potoków prowadzących do jednostek funkcjonalnych. Wymagało to ze strony kompilatorów dokładnego porządkowania instrukcji w kodzie obiektowym, by potoki były cały czas zapełnione. To podejście umożliwiło osiągnięcie częściowo takich samych efektów, jakie były wyznacznikiem architektury mikroprocesorów RISC, gdzie skomplikowany mikrokod, pewnego rodzaju zagnieżdżony interpreter, został usunięty z rdzenia procesora i umieszczony w kompilatorze. Pozwalało to na zmniejszenie rdzenia procesora i odpowiednie zagospodarowanie zwolnionej przestrzeni. Wadą tego rozwiązania była większa objętość kodu, przekładająca się na większą liczbę żądań dostępu do pamięci podręcznej, negatywny wpływ na przepustowość pamięci i całkowity koszt systemu. Konsekwencją takiej architektury było to, że układ i860 był w stanie wykonywać niektóre algorytmy graficzne i zmiennoprzecinkowe z wyjątkowo dużą szybkością, ale odbijało się to na mniejszej wydajności w zastosowaniach ogólnych. Układ był też uciążliwy w efektywnym programowaniu (patrz niżej).
Wszystkie szyny procesora miały szerokość co najmniej 64 bitów. Wewnętrzna szyna prowadząca do pamięci podręcznej miała szerokość 128 bitów. Obydwie jednostki procesora posiadały trzydzieści dwa 32-bitowe rejestry, ale jednostka zmiennoprzecinkowa traktowała je jako szesnaście rejestrów 64-bitowych. Instrukcje przeznaczone dla jednostki ALU pobierane były parami, by wykorzystać całą szerokość szyny zewnętrznej. Intel zawsze określał swój produkt jako "64-bitowy procesor i860".
Jednostka graficzna była jak na swoje czasy unikatem. Była to zasadniczo 64-bitowa jednostka obliczeń całkowitych, wykorzystująca rejestry jednostki FPU. Zezwalała na stosowanie pewnej liczby instrukcji podobnych do SIMD oraz prowadzenie 64-bitowych obliczeń matematycznych na liczbach całkowitych. Doświadczenie zebrane przez firmę Intel wpłynęło na rozwój funkcji MMX zastosowanych w układach serii Pentium.
Osiągi i problemy
[edytuj | edytuj kod]Specyfikacje techniczne były zachwycające jak na układ zamknięty w jednej obudowie. Jednak rzeczywiste osiągi i860 pozostawiały sporo do życzenia. Jednym z problemów, który być może w czasach, kiedy procesor był rozwijany, nie był dyskutowany, była nieprzewidywalność ścieżek, którymi mógł podążać kod w trakcie wykonywania. Oznaczało to wzrastające trudności w prawidłowym ułożeniu instrukcji na etapie kompilacji. Dla przykładu, polecenie dodania dwóch liczb zajmowało więcej czasu, gdy wartości wejściowe nie znajdowały się w pamięci podręcznej, ale programista nie był w stanie sprawdzić, czy taka sytuacja miała rzeczywiście miejsce. Jeśli programista zgadywał, mogło dojść do zatkania całego potoku do czasu otrzymania przez proces żądanych danych. Całość projektu układu i860 bazowała na tym, że efektywnym zarządzaniem danych powinien zająć się kompilator, ale w praktyce okazało się to niemal niemożliwe. Teoretycznie układ był w stanie osiągnąć wydajność nawet do 60 MFLOPS w wersji XP, lecz asemblery kodowane ręcznie zatrzymywały się na wyniku rzędu 40 MFLOPS, a większość kompilatorów ogólnego stosowania nie przekraczała wyniku 10.
Kolejnym ważnym problemem był brak rozwiązań umożliwiających szybkie przełączanie kontekstu. Procesor był wyposażony w kilka potoków (dla jednostek ALU i FPU), zaś zastosowanie przerwania mogło doprowadzić do ich opróżnienia i konieczności ponownego wypełnienia. W najbardziej optymistycznym scenariuszu zabierało to 62 cykle pracy procesora, w najmniej – 2000. Pesymistyczny wariant przekładał się na czas jednej dwudziestotysięcznej sekundy – dla procesora jest to cała wieczność. Te problemy praktycznie wyeliminowały układ i860 z rynku procesorów do zastosowań ogólnych.
Wersje i zastosowania układu
[edytuj | edytuj kod]Układ udostępniono w dwóch wersjach – podstawowej XR i XP (nazwa kodowa N11). Wersja XP wyposażona była w pamięć podręczną o większej pojemności, pamięć podręczną drugiego poziomu, szybsze szyny systemowe i obsługę podglądu szyny, co pozwalało na uzyskanie jednolitości pamięci podręcznej w zastosowaniach równoległych. Wersja XR działała z prędkością 25 lub 40 MHz, a zmniejszenie technologii produkcji układów XP (z 1 do 0,8 mikrometra) pozwoliło na produkcję układów działających z prędkością 40 i 50 MHz. Obydwa układy wyposażone był w identyczne zestawy instrukcji.
Na początku układy i860 wykorzystywane były tylko w ograniczonej liczbie wielkich rozwiązań typu iPSC/860 w Laboratoriach Narodowych w Los Alamos. Wraz z poprawą jakości stosowanych kompilatorów, poprawiała się wydajność procesorów, ale w tym czasie większą wydajność oferowały inne rozwiązania RISC.
Intel przez jakiś czas testował możliwość zastosowania i860 w rozwiązaniach biurkowych konkurujących między innymi z układami opartymi na architekturze MIPS. Microsoft stworzył nawet wstępną wersję systemu, który miał stać się wersją Windows NT dla opracowanych wtedy stacji roboczych opartych na układach i860 (nazwa kodowa Dazzle), lecz potem przeniósł system na procesory i386 i późniejsze. Istnieją pogłoski, że pierwotne znaczenie liter "NT" w nazwie systemu miało pochodzić od "N-Ten", czyli "N-10" (nazwa kodowa układu).
Procesory i860 znalazły jednak zastosowanie w stacjach roboczych, dokładniej w roli akceleratorów grafiki. Przykładem może tu być rozwiązanie graficzne NeXTDimension, gdzie układ działał pod kontrolą zubożonej wersji jądra Mach, udostępniając operatorowi kompletny stos języka PostScript. W takich zastosowaniach procesor i860 sprawował się zdecydowanie lepiej, gdyż program główny dało się załadować w całości do pamięci podręcznej i bezbłędnie przewidzieć jego zachowanie, co pozwoliło kompilatorom na efektywne ułożenie rozkazów. Innym zastosowaniem procesora był Onyx Reality Engine 2 firmy SGI, który w zastosowaniach geometrycznych posługiwał się pewną ilością układów i860. Niestety, takie zastosowania dla specjalizowanych układów również odeszły w niepamięć po pojawieniu się procesorów do zastosowań ogólnych, które swoją mocą dorównywały chipowi i860. Intel w tym czasie skupił swoje wysiłki na opracowywaniu procesorów linii Pentium.
W późnych latach 90., Intel zarzucił produkcję układów RISC na rzecz rozwiązań ARM, nazwanych XScale. Mylącym faktem jest to, że symbol i860 został przez firmę wykorzystany jeszcze raz, jako symbol chipsetu stosowanego w płytach głównych dla procesorów Xeon.
Linki zewnętrzne
[edytuj | edytuj kod]- Specyfikacja techniczna 64-bitowego procesora Intel i860. dvo.ru. [zarchiwizowane z tego adresu (2006-10-13)].
- Zdjęcia i opis układu i860
- Rhodehamel, Michael W. "The Bus Interface and Paging Units of the i860(tm) Microprocessor". IEEE International Conference on Computer Design, strony. 380–384, 1989.