Procesor elementów heterogenicznych - Heterogeneous Element Processor

Heterogeniczne Element Procesor ( HEP ) został wprowadzony przez Denelcor, Inc. w 1982 roku architekta HEP była Burton Smith . Maszyna została zaprojektowana do rozwiązywania problemów z dynamiką płynów dla Laboratorium Badań Balistycznych . System HEP, jak sama nazwa wskazuje, składał się z wielu heterogenicznych komponentów - procesorów , modułów pamięci danych i modułów we / wy. Komponenty zostały połączone za pośrednictwem sieci komutowanej .

Pojedynczy procesor, zwany PEM, w systemie HEP (można było podłączyć do szesnastu PEM) był raczej niekonwencjonalny; za pośrednictwem kolejki „słowo stanu programu (PSW)” można było jednocześnie obsługiwać do pięćdziesięciu procesów na sprzęcie. Największy dostarczony system składał się z 4 PEM. Osiem stadium instrukcja rurociąg pozostawiono instrukcje z ośmiu różnych procesów prowadzono w raz. W rzeczywistości tylko jedna instrukcja z danego procesu mogła być obecna w potoku w dowolnym momencie. Dlatego pełną przepustowość procesora wynoszącą 10 MIPS można było osiągnąć tylko wtedy, gdy aktywnych było osiem lub więcej procesów; żaden pojedynczy proces nie może osiągnąć przepustowości większej niż 1,25 MIPS. Ten typ przetwarzania wielowątkowego klasyfikuje HEP jako procesor beczkowy . Sprzętową implementację HEP PEM stanowi logika sprzężona z emiterami .

Procesy zostały sklasyfikowane na poziomie użytkownika lub przełożonego. Procesy na poziomie użytkownika mogły tworzyć procesy na poziomie nadzorcy, które były używane do zarządzania procesami na poziomie użytkownika i wykonywania operacji we / wy. Procesy tej samej klasy musiały zostać zgrupowane w jednym z siedmiu zadań użytkownika i siedmiu zadań nadzorcy.

Każdy procesor, oprócz kolejki PSW i potoku instrukcji, zawierał pamięć instrukcji, 2048 64-bitowych rejestrów ogólnego przeznaczenia i 4096 rejestrów stałych. Stałe rejestry różnicowało fakt, że tylko procesy nadzorujące mogły modyfikować ich zawartość. Same procesory nie zawierały pamięci danych; zamiast tego moduły pamięci danych mogą być oddzielnie dołączane do sieci komutowanej.

Pamięć HEP składała się z całkowicie oddzielnej pamięci instrukcji (do 128 MB) i pamięci danych (do 1 GB). Użytkownicy widzieli 64-bitowe słowa, ale w rzeczywistości słowa pamięci danych były 72-bitowe z dodatkowymi bitami używanymi do określenia stanu, patrz następny akapit, parzystość, znakowanie i inne zastosowania.

HEP zaimplementował rodzaj wzajemnego wykluczania, w którym wszystkie rejestry i lokalizacje w pamięci danych miały skojarzone stany „pusty” i „pełny”. Czytanie z lokalizacji ustawiało stan na „pusty”, podczas pisania do niego ustawiał stan na „pełny”. Programista może pozwolić na zatrzymanie procesów po próbie odczytu z pustej lokalizacji lub zapisu w pełnej lokalizacji, wymuszając sekcje krytyczne.

Sieć komutowana między elementami przypominała pod wieloma względami nowoczesną sieć komputerową. W sieci znajdowały się zestawy węzłów, z których każdy miał trzy łącza. Gdy pakiet dotarł do węzła, sprawdzał tablicę routingu i próbował przekazać pakiet bliżej miejsca przeznaczenia. Jeśli węzeł został przeciążony, wszystkie przychodzące pakiety były przekazywane bez routingu. Pakiety traktowane w ten sposób miały podwyższony priorytet; gdy kilka pakietów rywalizowało o jeden węzeł, pakiet o wyższym poziomie priorytetu byłby kierowany przed pakietami o niższym priorytecie.

Kolejnym elementem przełączanej sieci był system SO z własną pamięcią i wieloma indywidualnymi magistralami DEC UNIBUS podłączonymi do dysków i innych urządzeń peryferyjnych. System miał również możliwość zapisywania pełnych / pustych bitów, które normalnie nie są bezpośrednio widoczne. Początkowa wydajność systemu we / wy okazała się żałośnie niewystarczająca ze względu na duże opóźnienie w rozpoczęciu operacji we / wy. Ron Natalie (z BRL) i Burton Smith zaprojektowali nowy system z części zamiennych na serwetkach w lokalnej restauracji steakhouse i uruchomili go w ciągu następnego tygodnia.

Podstawowym językiem programowania aplikacji HEP był unikalny wariant Fortran . Z czasem dodano C , Pascal i SISAL . Składnia zmiennych danych wykorzystująca pełne puste bity poprzedzone znakiem „$” przed ich nazwą. Tak więc „A” nazwałoby zmienną lokalną, ale $ A byłaby blokującą zmienną całkowicie pustą. Dzięki temu możliwe było zamknięcie aplikacji. Problematyczne, niepowodzenie w wpisaniu znaku „$” może spowodować niezamierzoną niedokładność liczbową.

Pierwszym systemem operacyjnym HEP był HEPOS. Mike Muuss był zaangażowany w port Unix dla Ballistic Research Laboratory. HEPOS nie był systemem operacyjnym podobnym do Uniksa.

Chociaż było znane ze słabej wydajności kosztowej, HEP zwrócił uwagę ze względu na kilka rewolucyjnych funkcji w tamtym czasie. HEP miał wydajność komputera klasy CDC 7600 w erze Cray-1 . Systemy HEP zostały nabyte przez Ballistic Research Laboratory (cztery systemy PEM), Los Alamos , Argonne National Laboratory (pojedynczy PEM), National Security Agency i niemiecki Messerschmitt (trzy systemy PEMS. Denelcor dostarczył również dwa systemy PEM na uniwersytet) Gruzji w zamian za dostarczenie pomocy oprogramowania (system został również zaoferowany University of Maryland). Messerschmitt był jedynym klientem, który użył HEP do "prawdziwych" aplikacji; pozostali klienci używali go do eksperymentowania z równoległymi algorytmami . System BRL został użyty do przygotowania filmu przy użyciu oprogramowania BRL-CAD jako jedynej rzeczywistej aplikacji. Szybsze i większe projekty dla HEP-2 i HEP-3 zostały rozpoczęte, ale nigdy nie zostały ukończone. Koncepcja architektoniczna została później zawarta w kodzie -name Horizon.

Zobacz też

Bibliografia