Manchester Small-Scale Experimental Machine
Manchester Small-Scale Experimental Machine (SSEM, în română Mașina Experimentală pe Scară Redusă Manchester), poreclit și Baby, a fost primul calculator complet electronic în sistem binar, cu program stocat și Turing-complet din lume. A fost construit la Universitatea Victoria din Manchester de către Frederic C. Williams, Tom Kilburn și Geoff Tootill și a rulat primul program la data de 21 iunie 1948.[1]
Nu s-a intenționat ca această mașină să fie un calculator practic, ci a fost proiectat ca mediu de test pentru tuburile Williams, o formă veche de memorie pentru calculatoare. A fost considerat „mic și primitiv” prin comparație cu alte mașini din acea perioadă, deși conținea toate elementele esențiale ale unui calculator modern.[2] Imediat ce SSEM și-a demonstrat fezabilitatea, la universitate s-a demarat un proiect de dezvoltare a lui într-un calculator mai utilizabil, Manchester Mark 1. Mark 1, la rândul său, a devenit rapid prototipul pentru Ferranti Mark I, primul calculator generic comercial din lume.[3]
SSEM avea lungimea cuvântului de 32 de biți și o memorie de 32 cuvinte. A fost proiectat să fie cel mai simplu calculator cu program stocat; singura operație aritmetică pe care o putea efectua era scăderea. Primul dintre cele trei programe scrise pentru această mașină găsea cel mai mare divizor al numărului 218 (262.144), un calcul despre care se știa la acea vreme că avea să dureze foarte mult—pentru a demonstra fiabilitatea mașinii—verificând fiecare număr întreg de la 218 − 1 în jos, întrucât împărțirile se implementau ca scăderi repetate ale divizorului. Programul era format din 17 instrucțiuni și a rulat timp de 52 minute înainte de a ajunge la răspunsul corect, 131.072, după ce SSEM efectuase 3,5 milioane de operații.
Context
modificareÎn 1936, matematicianul Alan Turing a publicat o descriere a ceea ce a devenit cunoscut ca mașina Turing; aceasta era un concept teoretic, nu un proiect al unei mașini, prin care Turing își propunea să exploreze limitele calculabilității automate. Turing nu-și imagina o mașină fizică, ci o persoană pe care a denumit-o „calculator”, și care acționa conform instrucțiunilor citite de pe o bandă de pe care se puteau citi și scrie, secvențial, simboluri pe măsură ce banda se mișca prin fața unui cap de citire. Turing a demonstrat că dacă se poate scrie un algoritm care să rezolve o problemă matematică, atunci o mașină Turing poate executa acel algoritm.[4] Ulterior, s-au dezvoltat calculatoare programabile cum ar fi Z3 și Colossus, în anii 1940, dar programele lor erau în general introduse cu ajutorul tablourilor de comutatoare și prize. Programele nu erau stocate în memorie, ca în calculatoarele moderne, iar reprogramarea lui ENIAC, de exemplu, în 1946 putea dura câteva zile.[2] Cercetători ca Turing și Konrad Zuse au investigat ideea utilizării memoriei calculatorului pentru a stoca programul, pe lângă datele pe care lucrează el,[5] și matematicianul John von Neumann a definit o astfel de arhitectură de calculator, folosită și în secolul al XXI-lea de aproape toate calculatoarele.[6]
Construirea unui calculator von Neumann depindea de disponibilitatea unei memorii pe care să se stocheze programul. În timpul celui de-al doilea război mondial, cercetătorii care lucrau la problema eliminării zgomotului din semnalele radar au dezvoltat o formă de memorie cu linie de întârziere, a cărei primă aplicație practică a fost linia de întârziere cu mercur,[7] dezvoltată de J. Presper Eckert. Transmițătoarele radar emiteau din când în când impulsuri scurte de energie electromagnetică în spectrul radio, capta reflecțiile acestora și le afișa pe un ecran CRT. Întrucât operatorii erau interesați de regulă doar de obiectele în mișcare, era de dorit filtrarea oricăreri reflecții a obiectelor staționare. Filtrarea s-a realizat prin comparația fiecărui impuls primit cu impulsul anterior, și rejectarea ambelor dacă sunt identice, păstrând un semnal rezidual ce conține doar imaginile obiectelor în mișcare. Pentru stocarea impulsurilor primite în vederea comparării lor, ele treceau printr-o linie de transmisie, care le întârzia exact atât timp cât se scurgea între transmiterea impulsurilor.[8]
Turing s-a angajat la Laboratorul Național de Fizică (NPL) în octombrie 1945,[9] moment la care oamenii de știință de la Ministerul Proviziilor concluzionaseră că Regatul Unit are nevoie de un Laborator Național de Matematică pentru a coordona calculul asistat de mașini.[10] S-a înființat astfel la NPL o Divizie Matematică, iar la 19 februarie 1946, Alan Turing a prezentat o lucrare în care descria proiectul său pentru un calculator electronic cu program stocat, cunoscut ca Automatic Computing Engine (ACE),[10] unul din mai multele proiecte derulate în anii de după al doilea război mondial în scopul de a construi un astfel de calculator. În același timp, la Școala Moore de Inginerie Electrică din Universitatea Pennsylvania se dezvolta EDVAC, iar Laboratorul Matematic de la Universitatea Cambridge lucra la EDSAC.[10][11]
NPL nu avea expertiza de a construi o mașină ca ACE, astfel că a fost contactat Tommy Flowers de la Laboratorul de Cercetare Dollis Hill al General Post Office (GPO). Flowers, proiectantul calculatorului Colossus, primul calculator electronic programabil din lume, avea alte angajamente și nu a putut să ia parte la proiect; echipa sa, însă, a construit câteva linii de întârziere cu mercur pentru ACE.[10] Telecommunications Research Establishment (TRE) a fost și el abordat pentru ajutor, ca și Maurice Wilkes de la Laboratorul Matematic de la Universitatea Cambridge.[10]
Departamentul guvernamental responsabil cu NPL a decis ca toată munca să fie efectuată de TRE în numele său, iar ACE să primească prioritatea maximă.[10] Decizia NPL a condus la o vizită a superintendentului Diviziei de Fizică de la TRE la 22 noiembrie 1946, care a venit însoțit de Frederic C. Williams și A. M. Uttley, tot de la TRE.[10] Williams a condus un grup de dezvoltare TRE care lucra la mecanisme de stocare a datelor pe bază de tuburi catodice pentru aplicații radar, ca alternativă la liniile de întârziere.[12] El deja acceptase să fie profesor la Universitatea Manchester, și majoritatea tehnicienilor săi de circuite erau în procesul de transfer la Departamentul de Energie Atomică.[10] TRE a acceptat să trimită un mic număr de tehnicieni să lucreze sub conducerea lui Williams la universitate, și să susțină un alt mic grup care să lucreze cu Uttley la TRE.[10]
Tuburile Williams
modificareDeși primele calculatoare cum ar fi CSIRAC au utilizat cu succes memoriile cu linii de întârziere cu mercur,[13] această tehnologie avea câteva dezavantaje; memoriile erau grele, costisitoare, și nu permiteau accesul aleator. În plus, deoarece datele erau stocate ca secvențe de unde acustice propagate printr-o coloană de mercur, temperatura dispozitivului trebuia controlată atent, întrucât viteza sunetului printr-un mediu variază cu temperatura. Williams văzuse un experiment la Bell Labs care demonstrase eficacitatea tuburilor catodice (CRT) ca alternativă la liniile de întârziere în eliminarea ecourilor statice din semnalele radar. Lucrând la TRE, cu puțin timp înainte de a trece la Universitatea Manchester în decembrie 1946, el dezvoltase o formă de memorie electronică denumită tub Williams, bazat pe un tub catodic obișnuit și care a devenit primul dispozitiv de stocare cu acces aleator.[14] Manchester Small-Scale Experimental Machine (SSEM) a fost proiectat pentru a demonstra că tubul Williams era un dispozitiv practic de stocare, prin verificarea faptului că datele reținute în acesta pot fi actualizate continuu la viteza necesară pentru a fi utilizate într-un calculator.[15]
Pentru utilizarea într-un calculator numeric bazat pe sistemul de numerație binar, tubul trebuia să poată stoca oricare din două stări la fiecare locație de memorie, corespunzătoare cifrelor binare 0 și 1. El exploata sarcina electrostatică pozitivă sau negativă generată de afișarea unei linii sau a unui punct în orice poziție a ecranului tubului catodic, fenomen cunoscut sub numele de emisie secundară. O linie genera o sarcină pozitivă, iar un punct o sarcină negativă, iar oricare putea fi interceptată de o placă detectoare pusă în fața ecranului; o sarcină negativă reprezenta 0, iar o sarcină pozitivă 1. Sarcina se disipa în aproximativ 0,2 secunde, dar putea fi reîmprospătată automat din datele culese de detector.[16]
Tubul Williams se baza inițial pe CV1131, un tub catodic de 300 mm disponibil pe piață, dar în SSEM s-a utilizat un tub mai mic, CV1097, de 150 mm.[17]
Proiectarea și dezvoltarea
modificareÎn urma numirii sale la catedra de inginerie electrică a Universității Manchester, Williams și-a recrutat colegul de la TRE, Tom Kilburn. Până în toamna lui 1947, cei doi au mărit capacitatea de stocare a unui tub Williams de la un bit la 2048 de biți aranjați într-un tablou de 64 pe 32,[18] și au demonstrat că un astfel de tub poate stoca acești biți timp de patru ore.[19] Inginerul Geoff Tootill de la TRE s-a alăturat temporar echipei în septembrie 1947, și a rămas până în aprilie 1949.[20]
Max Newman fusese numit la catedra de matematici pure a Universității Manchester în 1945. În timpul celui de-al doilea război mondial, el lucrase ca criptanalist la Bletchley Park, unde a condus echipa care a produs în 1943 primul din cele două calculatoare criptanalitice Colossus. Deși Newman nu a jucat un rol activ în dezvoltarea SSEM, și nici în vreun alt proiect al vreunui calculator Manchester, atitudinea sa față de proiect a fost una entuziastă, și a susținut proiectul prin facilitarea achiziției de piese ieftine de la armată pentru construcția acestuia, piese printre care s-au numărat și carcasele metalice ale GPO de la Bletchley.[21]
Până în iunie 1948, SSEM fusese construit și funcționa.[18] El avea 5,2 m lungime, 2,2 m înălțime, și cântărea aproximativ o tonă. Mașina conținea 550 de tuburi—300 diode și 250 pentode—și avea un consum de 3.500 W.[22] Unitatea aritmetică a fost construită cu pentode EF50, folosite pe scară largă în timpul războiului.[19] SSEM folosea un tub Williams pentru a obține un spațiu de memorie cu acces aleator de 32 de cuvinte de 32 de biți, un al doilea pentru un registru acumulator pe 32 de biți, în care se stocau temporar rezultatele intermediare ale unui calcul, și un al treilea pentru a stoca instrucțiunea curentă împreună cu adresa sa de memorie. Un al patrulea tub catodic, lipsit de electronica de stocare a datelor pe care o aveau celelalte trei, era utilizat ca dispozitiv de ieșire, capabil să afișeze șablonul de biți al oricărui tub catodic de stocare selectat.[23]
Fiecare cuvânt de RAM pe 32 de biți putea conține fie date, fie o instrucțiune. Într-o instrucțiune, biții 0–12 reprezentau adresa de memorie a operandului, iar biții 13–15 reprezentau codul operației; restul de 24 biți erau nefolosiți.[23] Arhitectura cu un singur operand însemna că al doilea operand implicit al fiecărei instrucțiuni era în acumulator; instrucțiunile programului specificau doar adresa datelor din memorie.
Un cuvânt din memoria calculatorului putea fi scris, citit sau reîmprospătat în 360 microsecunde. Execuția unei instrucțiuni dura de patru ori mai mult decât accesarea unui cuvânt din memorie, ceea ce dădea o viteză de aproximativ 700 de instrucțiuni pe secundă. Memoria principală era reîmprospătată în permanență, proces care dura 20 milisecunde, fiecare dintre cele 32 de cuvinte trebuind să fie citit și apoi reîmprospătat pe rând.[18]
SSEM reprezenta numerele negative în complement față de doi,[24] ca și majoritatea calculatoarelor de la începutul secolului al XXI-lea. În acea reprezentare, valoarea celui mai semnificativ bit reprezenta semnul numărului; numerele pozitive aveau un zero pe acea poziție, iar cele negative aveau unu. Astfel, numerele ce puteau fi reprezentate pe un cuvânt de 32 de biți erau de la −231 până la +231 − 1 (în zecimal, de la −2.147.483.648 până la +2.147.483.647).
Programarea
modificareSetul de intrucțiuni pe trei biți al lui SSEM permitea maximum 8 (23) instrucțiuni diferite. Spre deosebire de convenția modernă, spațiul de stocare al mașinii era aranjat cu cifrele cel mai puțin semnificative la stânga; astfel, numărul zecimal 1 era reprezentat pe trei biți ca 100, și nu ca 001.[24]
Setul de instrucțiuni al SSEM[25] | ||
---|---|---|
Cod binar | Mnemonica modernă | Operațiunea |
000 | JMP S | Salt la instrucțiunea de la adresa de memorie specificată (salt necondiționat absolut) |
100 | JRP S | Salt la instrucțiunea de la adresa specificată plus numărul specificat (salt necondiționat relativ) |
010 | LDN S | Ia numărul de la adresa de memorie specificată, schimbă-i semnul, și încarcă-l în acumulator |
110 | STO S | Stochează numărul din acumulator la adresa de memorie specificată |
001 sau 101* | SUB S | Scade numărul de la adresa de memorie specificată din valoarea din acumulator, și stochează rezultatul în acumulator |
011 | CMP | Salt peste instrucțiunea următoare dacă acumulatorul conține o valoare negativă |
111 | STP | Stop |
*Pentru economie de circuite logice, biții de funcție erau doar parțial decodificați.[25] |
Operațiunile negative ale SSEM erau cauzate de lipsa de hardware pentru efectuarea altor operațiuni aritmetice decât scăderea. Se considera că nu este necesară construirea unui sumator înainte de începerea testării, întrucât adunarea putea fi ușor implementată prin scădere,[23] și anume poate fi calculat ca Deci adăugarea a două numere, X și Y, necesită patru instrucțiuni:[25]
LDN X // încarcă X cu semn schimbat în acumulator SUB Y // scade Y din valoarea din acumulator STO S // stochează valoarea din acumulator la adresa S LDN S // încarcă valoarea stocată la adresa S în acumulator cu semn schimbat
Programele se introduceau în formă binară prin trecerea peste fiecare cuvânt de memorie pe rând, și utilizarea unui set de 32 de comutatoare drept dispozitiv de intrare pentru a seta valoarea fiecărui bit al fiecărui cuvânt fie la 0, fie la 1. SSEM nu avea cititor de cartele perforate.[18]
Primele programe
modificarePentru acest calculator au fost scrise trei programe. Primul, constând din 17 instrucțiuni, a fost scris de Kilburn, și a rulat la 21 iunie 1948.[26] A fost proiectat pentru a găsi cel mai mare divizor al numărului 218 (262.144) încercând fiecare număr intreg de la 218 − 1 în jos. Împărțirile erau implementate ca scăderi repetate ale divizorului. SSEM a dat soluția (131.072 după 52 de minute și 3,5 milioane de operațiuni. Programul folosea opt cuvinte de memorie de lucru în plus față de cele 17 cuvinte ale codului, dimensiunea sa totală în memorie fiind de 25 de cuvinte.[27]
În luna următoare, Geoff Tootill a scris o versiune modificată a programului, și la jumătatea lui iulie, Alan Turing—care fusese numit conferențiar la catedra de matematică a Universității Manchester în septembrie 1948—a trimis al treilea program, pentru efectuarea de împărțiri de numere mari. Turing fusese numit și director adjunct al laboratorului de mașini de calcul al universității,[26] deși acest laborator nu a devenit realitate decât în 1951.[28]
Dezvoltări ulterioare
modificareWilliams și Kilburn au scris despre SSEM într-o scrisoare trimisă revistei Nature, și publicată în septembrie 1948.[29] Demonstrația cu succes a funcționării mașinii a condus rapid la construirea unui calculator mai practic, Manchester Mark 1, la care s-a început să se lucreze în august 1948. Prima versiune a fost operațională în aprilie 1949,[28] și ea a dus direct la dezvoltarea mașinii Ferranti Mark I, primul calculator generic comercial din lume.[3]
În 1998, în cinstea aniversării a 50 de ani de la rularea primului program SSEM, s-a construit o replică funcțională, astăzi expusă la Muzeul Științei și Industriei din Manchester. La acest muzeu se țin în mod regulat demonstrații ale funcționării mașinii.[30] În 2008, la Universitatea Manchester s-a descoperit o fotografie panoramică originală a întregii mașini. Fotografia, făcută la 15 decembrie 1948 de un student cercetător, Alec Robinson, fusese reprodusă în The Illustrated London News în iunie 1949.[31][32]
Note
modificare- ^ Enticknap, Nicholas (Summer 1998), „Computing's Golden Jubilee”, Resurrection, The Computer Conservation Society (20), ISSN 0958-7403, accesat în 19 aprilie 2008. Verificați datele pentru:
|access-date=
(ajutor) - ^ a b Early Electronic Computers (1946–51), University of Manchester, arhivat din original la 2009-01-05, accesat în 16 noiembrie 2008. Verificați datele pentru:
|access-date=
(ajutor) - ^ a b Napper, R. B. E., Introduction to the Mark 1, The University of Manchester, accesat în 4 noiembrie 2008. Verificați datele pentru:
|access-date=
(ajutor) - ^ Turing & 1936..
- ^ Zuse, Horst, „The Life and Work of Konrad Zuse”, EPE Online, Wimborne Publishing, arhivat din original la 2007-12-10, accesat în 16 noiembrie 2008. Verificați datele pentru:
|access-date=
(ajutor);|chapter=
ignorat (ajutor) - ^ Lavington 1998, p. 7..
- ^ Lavington 1998, p. 1..
- ^ Brown 1999, p. 429..
- ^ Lavington 1998, p. 9..
- ^ a b c d e f g h i Lavington (1980), Chapter 5: "ACE, the 'British National Computer'".
- ^ Lavington 1998, pp. 8–9..
- ^ Lavington 1998, p. 5..
- ^ „How did CSIRAC work?”, CSIRAC, Universitatea Melbourne, 4 aprilie 2006, arhivat din original la 2008-10-06, accesat în 16 noiembrie 2008. Verificați datele pentru:
|access-date=, |date=
(ajutor) - ^ „Early computers at Manchester University”, Resurrection, The Computer Conservation Society, 1 (4), vara lui 1992, ISSN 0958-7403, accesat în 19 aprilie 2008. Verificați datele pentru:
|access-date=, |date=
(ajutor) - ^ Lavington 1998, pp. 13, 24..
- ^ Lavington 1998, p. 12..
- ^ Lavington 1998, pp. 12–13..
- ^ a b c d Napper 2000, p. 366..
- ^ a b Lavington 1998, p. 13..
- ^ Lavington 1998, p. 16..
- ^ Lavington 1998, pp. 6–7..
- ^ The "Baby": The World's First Stored-Program Computer (PDF), Manchester Museum of Science & Industry, arhivat din original (PDF) la 2009-03-04, accesat în 15 noiembrie 2008. Verificați datele pentru:
|access-date=
(ajutor) - ^ a b c Napper 2000, p. 367..
- ^ a b Lavington 1998, p. 14..
- ^ a b c Lavington 1998, p. 15..
- ^ a b Lavington 1998, pp. 16–17..
- ^ Tootill, Geoff (Summer 1998), „The Original Original Program”, Resurrection, The Computer Conservation Society (20), ISSN 0958-7403, accesat în 19 aprilie 2008. Verificați datele pentru:
|access-date=
(ajutor) - ^ a b Lavington 1998, p. 17..
- ^ „Electronic Digital Computers”, Nature, 162: 487, 25 septembrie 1948, arhivat din original la 2009-04-06, accesat în 22 ianuarie 2009 Verificați datele pentru:
|access-date=, |date=
(ajutor) - ^ Meet Baby, Manchester Museum of Science & Industry, arhivat din original la 2008-06-26, accesat în 17 noiembrie 2008. Verificați datele pentru:
|access-date=
(ajutor) - ^ Highfield, Roger (17 iunie 2008), „Photo of great grandfather of modern computers found”, Daily Telegraph, accesat în 20 iunie 2008. Verificați datele pentru:
|access-date=, |date=
(ajutor) - ^ Imaginea panoramică a SSEM și alte înregistrări audio-video Arhivat în , la Wayback Machine. (Digital 60, University of Manchester)
Bibliografie
modificare- Brown, Louis (), A Radar History of World War II: Technical and Military Imperatives, CRC Press, ISBN 978-0-7503-0659-1
- Lavington, Simon (), Early British Computers: The Story of Vintage Computers and the People who built them (ed. 1st), Manchester: Manchester University Press Society, ISBN 0-7190-0803-4
- Lavington, Simon (), A History of Manchester Computers (ed. 2), Swindon: The British Computer Society, ISBN 0-902505-01-8 Verificați valoarea
|isbn=
: checksum (ajutor) - Napper, R. B. E. (), „The Manchester Mark 1 Computers”, În Rojas, Raúl; Hashagen, Ulf, The First Computers: History and Architectures, MIT Press, pp. 356–377, ISBN 0-262-68137-4
- Turing, A. M. (), „On Computable Numbers, with an Application to the Entscheidungsproblem”, Proceedings of the London Mathematical Society, 2 (publicat la ), 42, pp. 230–265. Retipărită de mai multe ori, disponibilă pe web în mai multe locuri, inclusiv pe Scribd.