Angielski elektryczny KDF8
Deweloper | angielski elektryczny |
---|---|
Producent | angielski elektryczny |
Pokolenie | 1 |
Data wydania | 1961 | (jako KDP10 )
Długość życia | 5 lat |
Cena wprowadzająca | 400 000 funtów |
Jednostki sprzedane | 13 |
Pamięć | ( pamięć z rdzeniem magnetycznym ) |
Składowanie | Taśmy magnetyczne |
Wyjmowany schowek | Taśma papierowa |
KDF8 był wczesnym brytyjskim komputerem zbudowanym przez English Electric jako wersja RCA 501 . Celem stworzenia systemu kompatybilnego z oprogramowaniem było skrócenie czasu i kosztów tworzenia oprogramowania. Jednak długi proces rozwijania zdolności produkcyjnych sprawił, że system został wkrótce wyprzedzony przez systemy innych dostawców. W ciągu 5 lat produkcji sprzedano zaledwie kilka systemów. Ze względu na konsolidację brytyjskiego przemysłu komputerowego, dział komputerowy English Electric stał się jednym z elementów tego, co miało stać się ICL .
Tło
W późnych latach pięćdziesiątych English Electric rozpoczął dwa duże projekty komputerowe.
Po pierwsze, firma English Electric zbudowała wersję komputera RCA 501 , znaną jako KDP10 (KDP for Kidsgrove Data Processing). Była to maszyna przeznaczona do komercyjnych zastosowań przetwarzania danych, z instrukcjami o stałej długości i możliwościami przetwarzania danych numerycznych i alfanumerycznych o zmiennej długości. Oryginalna konstrukcja RCA została dostosowana do wykorzystania typów tranzystorów, diod i innych komponentów produkowanych w Wielkiej Brytanii. KDP10 został po raz pierwszy dostarczony w 1961 roku. W 1964 roku został ponownie oznaczony jako KDF8, a sprzedaż trwała do 1965 roku. Maszyna była zasadniczo taka sama jak RCA 501 i wyprodukowana na licencji, dzięki czemu English Electric mógł oferować pełną gamę systemów komputerowych dla wszystkich swoich klientów, bez ponoszenia kosztów opracowania zupełnie nowej maszyny. Maszyna została sprzedana za 400 000 funtów. Sprzedano tylko 13 sztuk.
Drugim dużym komputerem, który wyłonił się z prac rozwojowych w Kidsgrove , był KDF9 , zaprojektowany głównie do pracy naukowej.
Jeden KDF8 został zainstalowany w siedzibie Kidsgrove (Staffordshire) biura komputerowego The English Electric Company. Z biegiem lat i kolejnych fuzji organizacja ta przekształciła się w English Electric Leo Marconi (EELM), International Computing Services Limited (ICSL), a ostatecznie w ramach wspólnego porozumienia między ICL i Barclay's Bank , Baric.
Podstawowe funkcje
Procesor/główny magazyn
KDF8 był maszyną opartą na tranzystorach z rdzeniem magnetycznym pamięci . Pamięć rdzenia maszyny zainstalowanej w biurze komputerowym Kidsgrove została zwiększona z 64 000 do ówczesnych maksymalnie 96 000 pamięci rdzeniowej. KDF8 używał systemu adresowania ósemkowego (o podstawie ósemkowej). Instrukcja kodu maszynowego miała stałą długość, dziesięć znaków ósemkowych. Zestaw instrukcji został specjalnie zaprojektowany do użytku komercyjnego. Miał instrukcje na poziomie kodu maszynowego dla wszystkich czterech dziesiętnych funkcji arytmetycznych działających na liczbach o zmiennej długości, a także miał instrukcje wydajnego manipulowania ciągami danych o zmiennej długości. Nie wszystkie instrukcje wymagały wszystkich dziesięciu znaków. Biorąc pod uwagę minimalną dostępną pamięć rdzenia, programiści często używali „zapasowych” znaków w instrukcjach przechowywania stałych i podobnych sztuczek oszczędzających pamięć.
KDF8 był ściśle komputerem przetwarzającym wsadowo, uruchamiającym jeden program na raz. Tylko jedna instrukcja obliczeniowa mogła być przetwarzana jednocześnie, ale możliwe było również równoległe wykonywanie jednej instrukcji odczytu i / lub jednej instrukcji zapisu (zwykle z i na taśmę magnetyczną). Do kontroli stopnia synchronicznego działania wykorzystano system sprzętowych „bramek” ustawionych i sprawdzonych na poziomie kodu maszynowego. Ponieważ jednak nie było żadnego systemu operacyjnego, musiało to być całkowicie kontrolowane na poziomie indywidualnego programu.
KDP10 w biurze serwisowym został zaktualizowany na miejscu, ponieważ system został zbudowany z germanowych tranzystorów RCA. Częścią aktualizacji było przekształcenie głównej logiki w tranzystory krzemowe. Dodano również trzyznakowy sumator adresu, a cykl maszynowy wynosił 15 mikrosekund, z sześcioma impulsami taktowania, gdzie szósty impuls był przeznaczony na czas ustalania, w ten sposób cykl maszynowy został skrócony do 12,5 mikrosekundy.
Poziom umiejętności programisty do kontrolowania pełnego nakładania się odczytu/zapisu/obliczeń, zwłaszcza jeśli rekordy danych były „pogrupowane” po kilka do „rzeczywistego” bloku danych na taśmie magnetycznej, był znaczny, ponieważ wszystkie kontrole równoczesności musiały być ręcznie kodowane w program. Automatyczne wykrywanie błędów było zasadniczo ograniczone do sprzętowej kontroli parzystości na poziomie znaków i nie było żadnych kontroli sprzętowych procesora dotyczących tego, co może zrobić programista. Na przykład komputer po prostu przestałby działać, gdyby otrzymał polecenie uzyskania dostępu do lokalizacji pamięci poza pamięcią fizyczną.
Urządzenia peryferyjne
Nie było dysków magnetycznych, bębnów ani innych podobnych tymczasowych urządzeń do przechowywania. Przechowywanie luzem było ograniczone do taśm magnetycznych na otwartych szpulach, z których każda miała około jednego cala grubości i dziewięć cali (229 mm) średnicy, mieszcząc maksymalnie 2400 stóp (730 m) taśmy. Dane i programy były przechowywane na tych taśmach. Sprawdzanie błędów urządzeń peryferyjnych ponownie ograniczało się do sprawdzania parzystości wszystkich odczytów i zapisów oraz korzystania z pierścieni zezwalających na zapis. Kidsgrove KDF8 miał osiem jednostek taśm magnetycznych on-line, z których każda miała prędkość odczytu / zapisu 40 000 znaków na sekundę. Każda jednostka taśm miała około 6 stóp (1,8 m) wysokości i 2 stopy (0,61 m) szerokości, a szafy procesora i pamięci miały mniej więcej taką samą wielkość i liczbę. Konfiguracja Kidsgrove wymagała dużej, klimatyzowanej sali.
Osiem uznano za maksymalną roboczą liczbę jednostek taśm, po jednej na kanał, dla dowolnej rzeczywistej konfiguracji KDF8. Możliwe było podzielenie każdego kanału taśmowego przez dodatkowe jednostki sprzętowe na podgrupę ośmiu magnetofonów, co dało teoretyczne maksimum 61 jednostek taśmowych on-line. (W przypadku innych urządzeń wymagane były co najmniej trzy jednoznacznie zakodowane identyfikatory kanałów we/wy).
Dostępne były inne pary jednostka taśma / drukarka, zdolne do działania niezależnie od komputera głównego. Zapewniały one możliwość drukowania w trybie off-line do produkcji masowej, uwalniając KDF8 do wykonywania innych prac.
Inne urządzenia peryferyjne obejmowały:
- czytnik taśm papierowych (1000cps) do wprowadzania danych i (wstępnego) programu,
- teleprinter operatora (z wbudowanym powolnym dziurkaczem taśmy papierowej) umożliwiający programom wyświetlanie informacji operatorowi, a operatorowi używanie klawiatury do dziurkowania krótkich programów lub elementów danych na taśmie papierowej. Tej dalekopisu nie można było używać do wprowadzania danych bezpośrednio do komputera, wszystkie polecenia operatora musiały być wprowadzane przez konsolę operatora.
- drukarka on-line, używana głównie do zrzutów pamięci uszkodzonych programów.
Zarówno drukarki on-line, jak i off-line były drukarkami uderzeniowymi, zdolnymi do drukowania wiersza o długości 120 lub 160 znaków, w zależności od modelu. Były to pojedyncze kroje pisma, bez małych liter. Papier składany do drukarek był ciągły, z perforacjami między stronami i otworami po obu stronach papieru dla mechanizmu podawania papieru. Niestandardowe rozmiary papieru, z wstępnie wydrukowanymi liniami / tekstem / kolorami itp. były powszechne, zwłaszcza w zastosowaniach takich jak lista płac, a małe pętle kontrolne taśmy papierowej były potrzebne, aby dopasować rozmiar rzutu strony do każdego rodzaju papieru.
Zestaw instrukcji
Każda instrukcja kodu maszynowego KDF8 miała format
OO AAA RR BBB
W tej reprezentacji
OO reprezentuje dwuznakowy (ósemkowy) kod operacji, identyfikujący instrukcję, która ma zostać wykonana, w zakresie od 00 do 77, AAA reprezentuje sześcioznakowy (ósemkowy) adres rdzenia „A” z zakresu od 000000 do 777777. (Teoretyczny 1 ⁄ 4 Meg bezpośrednio adresowalny magazyn główny, rzeczywiste 96K!) RR reprezentuje dwuznakowe ustawienie rejestru (jeden znak dla każdego z dwóch możliwych rejestrów ponumerowanych od 1 do 7 używany do modyfikacji adresów „A” i „B”, gdzie 0 wskazuje bez modyfikacji rejestru), a BBB reprezentuje adres „B”, taki sam jak adres „A” w formacie.
Instrukcje były kolejno odczytywane z magazynu głównego do rejestrów, a następnie wykonywane.
Przykład. Instrukcja odczytu danych z czytnika taśm papierowych on-line do lokalizacji rozpoczynających się od lokalizacji sklepu (ósemkowo) 200000 wyglądałaby tak
14 200000 00 770000 (spacje tylko dla jasności)
Gdzie 14 było kodem operacji dla tego typu odczytu, 200000 było najniższą lokalizacją w pamięci, do której dane byłyby odczytywane, 00 wskazuje, że żadna modyfikacja rejestru nie miała być dokonywana w adresach A lub B instrukcji, a 77 to ( stały) identyfikator urządzenia czytnika taśmy papierowej. (Uwaga - 77 użyte jako identyfikator urządzenia do operacji zapisu kierowałoby zapis do dalekopisu operatora. Wstyd, jeśli wynikało to z błędu programu, a był to duży blok danych przeznaczony na taśmę magnetyczną.....) ostatnie cztery znaki ósemkowe (0000) nie były wymagane w tej instrukcji i byłyby ignorowane podczas przetwarzania instrukcji. Takie „zapasowe” znaki były często, biorąc pod uwagę bardzo ograniczony dostępny magazyn główny, używany przez programistów do przechowywania stałych.
Niektóre aspekty zestawu instrukcji były zaawansowane i znacznie ułatwiły programowanie systemów komercyjnych.
Kody operacji 51-54 wykonywały arytmetykę dziesiętną dodawania, odejmowania, mnożenia i dzielenia na liczbach o zmiennej długości, przechowywanych jako znaki dziesiętne. Jeden koniec każdego operandu był przechowywany pod adresami „A” i „B” instrukcji. Drugi koniec został oznaczony ISS (symbol separatora przedmiotów), ósemkowy 74. Zatem liczby mogą mieć dowolną długość. Instrukcja „Sector Compare” (Octal 43) zezwalała na trójdrożne warunkowe rozgałęzienie sterowania programem w zależności od tego, czy dane przechowywane w zakresie od adresu „A” do adresu „B” były większe, mniejsze lub równe, wartość tej samej liczby znaków przechowywanych w miejscach na lewo od (wcześniej ustawionego) rejestru „T”, co próbuje zademonstrować poniższa wersja językowa Assemblera.
Etykieta Opera Adres A RR Adres B
PORÓWNAJ ZESTAW WYNAGRODZENIE T GBP, R SC LIMIT PODATKOWY LIMIT PODATKOWY, R CTC PONIŻEJ LIMIT PODATKOWY POWYŻEJ LIMIT TC RÓWNY LIMIT PODATKOWY
Ten przykład porównuje wynagrodzenie z limitem podatkowym i przeskakuje do jednej z trzech lokalizacji programu w zależności od odpowiednich wartości. Konwencja asemblera „,R” reprezentuje skrajny prawy znak nazwanego pola. CTC oznaczało „Warunkowe przekazanie kontroli”, a TC – (bezwarunkowe) przekazanie kontroli
W powyższym kodzie „porównania”, oryginalny zestaw instrukcji (KDP10?) porównywany był od prawej do lewej, co wymagało porównania całej długości ciągów danych, znak po znaku. KDP8 został ulepszony, aby porównywać od lewej do prawej, więc porównanie mogło zostać zatrzymane, gdy tylko względne wartości były jasne, co znacznie przyspieszyło przetwarzanie takich instrukcji.
Dane o zmiennej długości były obsługiwane za pomocą specjalnie wyznaczonych znaków. ISS lub symbol separatora elementów, ósemkowy 74, zwykle reprezentowany jako „●”, był używany do oddzielania pól danych o zmiennej długości. Octal 75 „<” i 76 „>” identyfikowały początek i koniec komunikatu z danymi, Octal 777777 był zwyczajem i praktyką używaną do identyfikowania końca pliku. Tak więc dane, takie jak nazwiska i adresy, można dziurkować na taśmie papierowej w celu wprowadzenia danych jako (na przykład)
<IAN●TAYLOR●41●HIGH STREET●KIDSGROVE●STAFFS>
Różne instrukcje mogły działać bezpośrednio na tych danych o zmiennej długości, a rekordy można było grupować, powiedzmy po dziesięć, na taśmie magnetycznej, w celu wydajnego przechowywania. Biorąc pod uwagę stosunkowo powolny (jak na dzisiejsze standardy) procesor i szybkość operacji we/wy, istotnym aspektem zadania programisty było zrównoważenie grupowania danych na taśmie z obliczeniami wymaganymi dla każdego rekordu oraz zorganizowanie równoczesnych operacji we/wy i obliczeń z celem jest maksymalizacja nakładania się obliczeń z wejściami/wyjściami i unikanie zatrzymywania się taśm między odczytami wsadowymi.
Oprogramowanie
Nie było systemu operacyjnego. Programy były inicjowane przez operatora on-line, za pośrednictwem konsoli operatora. Operatorzy byli również odpowiedzialni za ręczne czyszczenie pamięci i resetowanie komputera między programami, montaż i wymianę taśm, sterowanie drukowaniem off-line i tym podobne.
Niektóre standardowe pakiety oprogramowania były dostępne lub stały się dostępne, wszystkie napisane w USA przez organizację RCA. Obejmowały one następujące.
- Oparty na parametrach program do sortowania i scalania, zdolny do obsługi bardzo dużych ilości danych. Parametry sortowania można albo wczytać z czytnika taśm papierowych, w celu jednorazowego sortowania, albo „skompilować” (tak naprawdę po prostu zapisać w programie). Istniały obszerne „haczyki” użytkownika, w których można było umieścić kod dostarczony przez użytkownika na różnych etapach procesu sortowania/scalania.
- Kompilator języka asemblera o nazwie EZ-Code. To nie było używane komercyjnie przez jakiś czas, ponieważ czas kompilacji był wtedy postrzegany jako duży narzut, ale w późniejszych latach był coraz częściej używany. Aby zaoszczędzić czas komputera, zazwyczaj programista przeprowadzałby wstępną kompilację, ręcznie sprawdzał program, ponownie kompilował, a następnie testował i usuwał błędy w skompilowanej wersji kodu maszynowego programu, budując rolkę papieru- przyklejaj poprawki kodu maszynowego do programu po dokonaniu każdej poprawki. Gdy dostępna była dość solidna kopia, zmiany były replikowane w asemblerze, a program ponownie kompilowany i ponownie testowany. Często ostatni etap nigdy nie był całkowicie ukończony i nie było niczym nieznanym, że programy produkcyjne wymagały ładowania poprawek kodu maszynowego z taśmy papierowej dla każdego przebiegu. Ponadto pracownicy Biura napisali szereg głównych pakietów komercyjnych dotyczących listy płac, kont i rejestracji udziałów, zanim kompilator Assemblera został zaakceptowany i pozostały w całości w kodzie maszynowym. Kolejnym dziwactwem było to, że procedury generowania we/wy asemblera nie były używane przez jedną sekcję programistyczną, która napisała własny uogólniony pakiet we/wy, zwany Tape Control, oparty na formatach tablic opisu plików COBOL. To zautomatyzowało wiele podatnych na błędy programowania grupowania / rozpakowywania rekordów i kontroli równoczesnych operacji odczytu / zapisu oraz warunków końca pliku.
- Kompilator języka COBOL. To było bardzo rzadko używane, wczesne doświadczenia nie były do końca korzystne. Jednym godnym uwagi wyjątkiem był program do projektowania okablowania o nazwie „WRS1”, używany do pomocy w projektowaniu sprzętu dla późniejszej serii komputerów mainframe English Electric KDF9 i System 4 . Inną osobliwością był preprocesor tablicy decyzyjnej dla programów w języku COBOL, sam napisany w języku COBOL. Było to interesujące, ponieważ personel programistyczny biura eksperymentował w tamtym czasie z wykorzystaniem tabel decyzyjnych jako alternatywy dla schematów blokowych. Jednakże, chociaż ci programiści kontynuowali ręczne kodowanie w asemblerze z odręcznych tablic decyzyjnych z pewnym sukcesem, koszty ogólne kompilacji uniemożliwiły użycie preprocesora.
Aby zoptymalizować przepustowość programów produkcyjnych, programiści biur stworzyli standardowe pakiety oprogramowania do obsługi płac, ksiąg sprzedaży i zakupów, ewidencji udziałów, kontroli zapasów itp., a niektóre aplikacje – np. listy płac – wspierały przetwarzanie danych od wielu klientów biura w jednym przebiegu komputerowym, z indywidualnymi ustawieniami parametrów zarządzającymi indywidualnymi wymaganiami klienta. Bardziej złożone wymagania klientów zostały spełnione przez niestandardowe programy.
Obsługa komputera
Bardzo mały (około 20 instrukcji) program ładujący można było trzymać z przodu każdej taśmy z programem, ale nawet to podejście nie zawsze było stosowane. Etykiety taśm (z wyjątkiem aplikacji zarządzanych w języku COBOL i Tape Control) prawie nie istniały. Cykl rotacji taśmy dziadek/ojciec/syn chronił taśmy produkcyjne przed poważnymi katastrofami, ale wymagał starannej ręcznej kontroli. Programiści (lub w przypadku pakietów operacyjnych personel Kontroli Produkcji) przekazali operatorowi pisemne instrukcje dotyczące tego, którą taśmę z programem i taśmami danych należy załadować, na jakie urządzenia oraz pisemne podsumowanie sposobu ładowania i inicjowania każdego programu. Operator ładowałby następnie taśmy oraz ładował i uruchamiał kolejno każdy program ręcznie z konsoli.
Konsola składająca się z pionowego panelu wyświetlacza o wysokości około 10 cali (250 mm) i długości około 5 stóp (1,5 m) z umieszczonym pod nim panelem sterowania o podobnej wielkości, lekko nachylonym pod kątem. Każda z tych dwóch części była wypełniona oznaczonymi przyciskami i podświetlanymi wskaźnikami, z których każdy (mniej więcej) miał jeden cal kwadratowy. Sekcja wyświetlacza składała się ze wskaźników, które po podświetleniu pokazywały, za pomocą znaków binarnych (pogrupowanych jako ósemkowe), aktualny stan pracy maszyny (lub statyczny) na indywidualnym adresie rdzenia maszyny i poziomie rejestru, dla operacji obliczeniowych, odczytu i zapisu w trakcie. Kiedy program był uruchomiony, ten wyświetlacz był kalejdoskopem szybko zmieniających się, migających, wielokolorowych świateł. Sekcja panelu sterowania składała się z przycisków do wyboru następnego rejestru do ustawienia oraz części centralnej, która odzwierciedlała układ adresu pojedynczego rdzenia maszyny. Inne przyciski umożliwiały dostęp do bardziej złożonych operacji. Użycie tych przycisków umożliwiło operatorowi wybranie, a następnie bezpośrednie wprowadzenie do podstawowych lokalizacji pamięci maszyny i zarejestrowanie wzoru ósemkowego, który wpisał ręcznie. Aby operator mógł wprowadzić pojedynczą instrukcję maszynową, każdy z maksymalnie dziesięciu znaków ósemkowych instrukcji musiał zostać wybrany i wprowadzony jako jego wzór binarny - każdy z odpowiednim (nieparzystym) bitem parzystości.
Zobacz też
- ^ Simon Hugh Lavington, Early British Computers: The Story of Vintage Computers and the People, którzy je zbudowali , Manchester University Press, 1980 ISBN 0719008107 strona 76
- ^ B. Jack Copeland (red.), Alan Turing's Electronic Brain: The Struggle to Build the ACE, the World's Fastest Computer , OUP Oxford, 2012, ISBN 0191625868 , s. 166-168
- ^ A. Gandy, Wczesny przemysł komputerowy: ograniczenia skali i zakresu , Springer, 2012, ISBN 0230389112 , s. 196-198