Angielski elektryczny KDF9 - English Electric KDF9
Deweloper | angielski elektryczny |
---|---|
Producent | angielski elektryczny |
Pokolenie | 2 |
Data wydania | 1964 |
Jednostki wysłane | 29 |
System operacyjny | Dyrektor ds. podziału czasu, Eldon 2, EGDON, COTAN |
procesor | Transformatorowo sprzężony układ logiczny diodowo-tranzystorowy , zbudowany z diod germanowych, około 20 000 tranzystorów i około 2000 toroidalnych transformatorów impulsowych) @ 1 MHz |
Pamięć | 32 tys. słów 48-bitowej pamięci masowej (192 tys. bajtów) |
Masa | 5,2 ton amerykańskich (4,7 t) |
KDF9 był wczesnym brytyjskim komputerem zaprojektowanym i zbudowanym przez English Electric (który w 1968 roku został połączony z International Computers Limited (ICL)). Pierwsza maszyna weszła do eksploatacji w 1964 roku, a ostatnia z 29 maszyn została wycofana z eksploatacji w 1980 roku w Państwowym Laboratorium Fizycznym . KDF9 został zaprojektowany i używany prawie w całości w dziedzinie przetwarzania matematycznego i naukowego – w 1967 roku dziewięć było używanych na brytyjskich uniwersytetach i uczelniach technicznych. KDF8 opracowany równolegle celem było handlowych obciążenia przetwarzania.
KDF9 był wczesnym przykładem maszyny, która bezpośrednio wspierała wieloprogramowanie , wykorzystując przesunięcia w swojej pamięci rdzeniowej do rozdzielenia programów na odrębne wirtualne przestrzenie adresowe. Dla platformy opracowano kilka systemów operacyjnych , w tym takie, które zapewniały w pełni interaktywne użytkowanie za pośrednictwem komputerów PDP-8 działających jako inteligentne serwery terminalowe . Dostępnych było wiele kompilatorów , w szczególności zarówno kompilatory kasowe , jak i globalnie optymalizujące dla Algola 60 .
Architektura
Obwody logiczne KDF9 były całkowicie półprzewodnikowe. W KDF9 zastosowano logikę diodowo-tranzystorową sprzężoną z transformatorem , zbudowaną z diod germanowych, około 20 000 tranzystorów i około 2000 toroidalnych transformatorów impulsowych . Działały na zegarze 1 MHz, który dostarczał dwa impulsy 250 ns oddzielone 500 ns w każdym cyklu zegara. Maksymalna konfiguracja zawierała 32 tys. słów 48-bitowego rdzenia pamięci (192 tys. bajtów) z czasem cyklu 6 mikrosekund. Każde słowo może zawierać 48-bitową liczbę całkowitą lub zmiennoprzecinkową , dwie 24-bitowe liczby całkowite lub zmiennoprzecinkowe, sześć 8-bitowych sylab instrukcji lub osiem 6-bitowych znaków. Przewidziano również wydajną obsługę liczb dwuwyrazowych (96-bitowych) zarówno w formacie całkowitym, jak i zmiennoprzecinkowym. Jednak nie było możliwości adresowania bajtowego lub znakowego, więc praca nienumeryczna ucierpiała w porównaniu. Jego standardowym zestawem znaków była wersja kodu taśmy papierowej Friden Flexowriter, która była zorientowana na Algol 60 i zawierała nietypowe znaki, takie jak indeks dolny Algola 10. Jednak każdy inny typ urządzenia I/O implementował swój własny podzbiór. Na przykład nie każdy znak, który można odczytać z taśmy papierowej, można z powodzeniem wydrukować.
Rejestry
Architektura procesora zawierała trzy zestawy rejestrów. The Nest był 16-głębokim stosem rejestrów arytmetycznych, SJNS ( Subroutine Jump Nesting Store) był podobnym stosem adresów zwrotnych. P magazynu był zestaw 16 rejestry indeksowe, każdy z 48 bitów, podzielonych na licznika (C), Kroki (i) i modyfikatora (M) części 16 bitów każdy. Flagi na instrukcji odwołań do pamięci określały, czy adres powinien być modyfikowany przez część M magazynu Q, a jeśli tak, to czy część C powinna zostać zmniejszona o 1, a część M zwiększona o zawartość części I. Dzięki temu kodowanie pętli zliczających było bardzo wydajne. Trzy dodatkowe poziomy Nest i jeden dodatkowy poziom SJNS zostały zarezerwowane dla Directora, systemu operacyjnego, umożliwiając obsługę przerwań o krótkiej ścieżce bez jawnego zapisywania i przywracania rejestrów. W rezultacie narzut przerwań wynosił tylko 3 cykle zegara.
Zestaw instrukcji
Instrukcje składały się z 1, 2 lub 3 sylab. Większość operacji arytmetycznych odbywała się na górze Nest i używała instrukcji z zerowym adresem , jednosylabowych, chociaż arytmetyka adresów i aktualizacja indeksów były obsługiwane oddzielnie w sklepie Q. Obsługa sklepu Q i niektóre instrukcje dotyczące pamięci używały 2 sylab. Instrukcje odniesienia do pamięci z 16-bitowym przesunięciem adresu, większość instrukcji skoku i 16-bitowe instrukcje ładowania literowego, wszystkie używały 3 sylab.
Gęste kodowanie instrukcji i intensywne korzystanie z zestawów rejestrów oznaczały, że dla typowych kodów naukowych, takich jak iloczyn skalarny i wewnętrzne pętle wielomianowe, potrzebnych było stosunkowo niewiele dostępów do sklepów . Zrobiło to wiele, aby zrekompensować stosunkowo powolny czas cyklu rdzenia, dając KDF9 około jedną trzecią szybkości jego znacznie bardziej znanego, ale 8 razy droższego i znacznie mniej udanego komercyjnie współczesnego komputera Manchester/ Ferranti Atlas .
Wieloprogramowanie (podział czasu)
KDF9 był jednym z pierwszych w pełni zabezpieczonych sprzętowo systemów wieloprogramowych. Pod kontrolą elegancko prostego systemu operacyjnego, Timesharing Director , można uruchomić do czterech programów jednocześnie , przy czym każdy z nich jest ograniczony do własnego obszaru głównego przez rejestry BA (adres bazowy) i NOL (liczba lokalizacji). Każdy program miał swoje własne zestawy rejestrów stosu i pamięci Q, które były aktywowane, gdy ten program był wysyłany, dzięki czemu przełączanie kontekstu było bardzo wydajne.
Każdy program mógł bezpośrednio sterować sprzętowymi urządzeniami I/O, ale był ograniczony przez kontrole sprzętu do tych, które przydzielił mu Dyrektor. Każda próba użycia nieprzydzielonego urządzenia powodowała przerwanie błędu. Podobne przerwanie wynikało z przepełnienia (lub nadmiernego opróżnienia) Nest lub SJNS lub próby uzyskania dostępu do pamięci pod adresem wyższym niż podany w rejestrze NOL. Nieco inne było przerwanie Lock-Out, które wynikało z próby uzyskania dostępu do obszaru magazynu, który był aktualnie używany przez urządzenie I/O, tak że nastąpiło wzajemne wykluczenie sprzętowe dostępu do buforów DMA. Kiedy program został zablokowany w trybie Lock-Out lub przez dobrowolne oczekiwanie na zakończenie transferu I/O, został przerwany, a Director przełączał się na program o najwyższym priorytecie, który sam nie został zablokowany. Gdy blokada została usunięta lub oczekiwany transfer został zakończony, a odpowiedzialny program miał wyższy priorytet niż program aktualnie uruchomiony, jednostka sterowania we/wy (IOC) została przerwana, aby umożliwić natychmiastowe przełączenie kontekstu. MKOl przewidział również, aby uniknąć odwrócenia priorytetów, w którym program o wysokim priorytecie czeka na urządzenie zajęte przez program o niższym priorytecie, żądając w tym przypadku odrębnego przerwania.
Późniejsze systemy operacyjne, w tym Eldon 2 na Uniwersytecie w Leeds i COTAN, opracowane przez UKAEA Culham Laboratories we współpracy z Glasgow University, były w pełni interaktywnymi systemami wielodostępowymi, z nakładkami PDP-8 do obsługi terminali.
Kompilatory Kidsgrove i Whetstone Algol 60 były jednymi z pierwszych w swojej klasie. Kompilator Kidsgrove położył nacisk na optymalizację; kompilator Whetstone wyprodukował interpretacyjny kod obiektowy mający na celu debugowanie. To dzięki oprzyrządowaniu tego ostatniego Brian Wichmann uzyskał statystyki dotyczące zachowania programu, które doprowadziły do opracowania benchmarku Whetstone dla obliczeń naukowych, który z kolei zainspirował benchmark Dhrystone dla obciążeń nieliczbowych.
Wspomnienie
Kolejność kodu maszynowego została napisana w formie ósemkowej, oficjalnie nazywanej sylabiczną ósemkową (znaną również jako notacja „slob-octal” lub „slob”). Reprezentował 8 bitów z trzema cyframi ósemkowymi, ale pierwsza cyfra reprezentowała tylko dwa najbardziej znaczące bity, podczas gdy pozostałe dwie pozostałe grupy po trzy bity każda. Chociaż słowo „ bajt ” zostało wymyślone przez projektantów IBM 7030 Stretch dla grupy ośmiu bitów , nie było jeszcze dobrze znane, a English Electric użyło słowa „ sylaba ” dla tego, co obecnie nazywa się bajtem.
W English Electric jego poprzednik, DEUCE , miał dobrze wykorzystany schemat matrycowy oparty na GIP (General Interpretive Program). Niewiarygodność maszyn zaworowych doprowadziła do włączenia mechanizmu sprawdzania sumy w celu wykrywania błędów w operacjach macierzy. W schemacie wykorzystano blokową liczbę zmiennoprzecinkową przy użyciu sprzętu arytmetycznego stałoprzecinkowego, w którym sprawdzanie sum było precyzyjne. Jednak gdy odpowiedni schemat został zaimplementowany w KDF9, używał zmiennoprzecinkowych, nowej koncepcji, która miała tylko ograniczoną analizę matematyczną. Szybko stało się jasne, że kontrole sum nie są już precyzyjne i powstał projekt mający na celu zapewnienie użytecznej kontroli. (W liczbach zmiennoprzecinkowych (A + B) + C niekoniecznie jest tożsame z A + (B + C), tj . operacja + nie jest asocjacyjna.) Wkrótce jednak uznano, że poziom błędów w maszynach tranzystorowych nie jest wydanie; albo działały poprawnie, albo nie działały wcale. W konsekwencji zrezygnowano z koncepcji kontroli sum. Początkowy pakiet macierzy okazał się bardzo przydatnym narzędziem do testowania systemu, ponieważ był w stanie generować długotrwałe kontrole wydajności na długo przed bardziej formalnymi pakietami testowymi, które zostały następnie opracowane.
Istnieje legenda, że KDF9 został opracowany jako projekt KD9 (Kidsgrove Development 9) i że litera „F” w jej oznaczeniu została stworzona przez ówczesnego prezesa po długiej i żmudnej dyskusji na temat tego, jak nazwać maszynę przy uruchomieniu — „Nie nie obchodzi mnie, czy nazwiecie to F— ”. Prawda jest bardziej przyziemna: nazwa została wybrana w zasadzie losowo przez kierownika ds. marketingu. (Patrz także KDF8, aby uzyskać informacje o równoległym rozwoju i użytkowaniu komputera zorientowanego komercyjnie.)
System operacyjny EGDON został tak nazwany, ponieważ jechało się do UKAEA Winfrith : w książce Thomasa Hardy'ego The Return of the Native Winfrith Heath nazywa się Egdon Heath. EGDON Fortran nazywał się EGTRAN. Eldon został tak nazwany, ponieważ komputer Uniwersytetu Leeds znajdował się w przebudowanej kaplicy Eldonów.
Fizyczny
Maszyna ważyła ponad 10 300 funtów (5,2 ton amerykańskich; 4,7 t). Pulpit sterowniczy z przerywaną maszyną do pisania 300 funtów (136 kg), głównym magazynem i jednostką sterującą wejścia/wyjścia 3500 (1587 kg), arytmetyczną i główną jednostką sterującą 3500 (1587 kg), zasilaczem 3000 (1360 kg).
Zobacz też
- Odwrotna notacja polska (RPN)
Uwagi
Bibliografia
Zewnętrzne linki
- Angielski elektryczny KDF9
- Sprzęt KDF9
- Oprogramowanie KDF9
- KDF9 i benchmarking
- KDF9: Bibliografia
- Kody znaków KDF9
- ee9 , emulator KDF9 napisany w GNU Ada
- Lista dostaw i aplikacje dla English Electric KDF9
- Historia kompilatora KDF9 Algol
- Whetstone KDF9 Algol Translator
- Niektóre anegdoty dotyczące kompilatora KDF9 Algol
- Prezentacja na temat KDF9 Algol z wizytą z Dijkstra
- Gniazdo KDF9 (zdjęcia)
- Kod źródłowy portu KDF9 kompilatora Atlas Autocode