EDSAC

**Elektrooniline viivitussalvestuse automaatne kalkulaator** (inglise *Electronic Delay Storage Automatic Calculatoroli*, lühend **EDSAC**) oli varajane Briti arvuti, mida peetakse SSEM-i järel teiseks salvestatud programmiga elektrooniliseks arvutiks.
See loodi Cambridge'i Ülikooli matemaatikalaboris Inglismaal Maurice Wilkesi ja tema meeskonna poolt kohe pärastTeist maailmasõda. 

EDSACi hakati konstrueerima 1947. aastal ja esimene programm, millega masin arvutas välja ruutarvude ja algarvude tabeli, pandi käima 6. mail 1949. Programmi kirjutas Beatrice Worsley, kes oli tulnud Kanadast masinat uurima. EDSAC-i kasutamine lõpetati 11. juuli 1958. Selle asendas EDSAC 2, mis oli kasutusel kuni 1965. aastani.

## Rakendamine
Arvuti töötas tavaliselt 35 tundi nädalas. Päeval olid kohal insenerid, kes tegelesid tekkivate probleemidega. Teatud kasutajad võisid arvutit kasutada ka üleöö, aga seadme rikke korral pidi ootama hommikuni enne kui viga uurida sai. 

EDSAC töötati välja spetsiaalselt matemaatikalabori arvutuste toeks. 1951. aastal kasutati masinat 79-kohalise algarvu leidmiseks. 

Esimene informaatika kursus alustas 1953. aastal, kasutades EDSACi. 

Lisaks on EDSAC-i aidanud sellised teadlased nagu John Kendrew ja Max Perutz (keemia, 1962), Andrew Huxley (meditsiin, 1963) ja Martin Ryle (füüsika, 1974) nende uurimistöödes ning toonud neile Nobeli auhinna.

EDSAC oli esimene arvuti, mis käivitas graafilise arvutimängu trips-traps-trull teostuse OXO, mida kuvati läbi elektronkiiretoru. 

### EDSACi simulaator
EDSAC simulaator on EDSAC arvuti tarkvaraline kuju nagu see eksisteeris aastatel 1949–1951. Kasutajaliideses on kõik algse masina juhtnupud ja kuvad ning süsteem sisaldab originaalprogrammide, alamprogrammide ja silumistarkvara teeke. Simulaator on mõeldud kasutamiseks andmetöötluse ajaloo õpetamisel või ajaloolise kogemusena praegustele arvutipraktikutele.

## Ülevaade
### Komponendid

EDSAC töötas taktsagedusega 500 kHz. 
Masinal kasutati elavhõbedaga täidetud viivitusradu, mis salvestasid teavet helina seisva lainena mälu jaoks ja ligi 3000 elektronlampi loogikaks. Neid mälupankasid hoiti õhkjahutusega kapis. Seadme kogu elektrikulu oli 11 kW.
Kõigi tavaliste käskude puhul oli tsükliaeg 1,5 ms, korrutamise puhul oli see 6 ms. Käskude sisestamiseks kasutati viie auguga perfolinti läbi elektromehaanilise lindilugeja, mis töötas kiirusega 6 2/3 tähemärki sekundis.
Väljund toimus teletaibi kaudu. 

Põhimälu koosneb 32 paagist, millest igaüks on umbes 5 jalga pikk ja sisaldab 32 17 kahendkohalist numbrit, millest üks on märginumber. 

1952. aastal lisati ka magnetlindiseade, kuigi see ei töötanud nii hästi, et seda oleks reaalselt kasutusse võtta saanud.

Monitoorimiseks kasutati üheksatolliseid ekraane. 

### Mälu ja käsklused

Operatsioonikoode oli ainult 18 ja algselt vaid 512 18-bitist sõna põhimälu, hiljem laiendati 1024-ni. Kõige ülemine bitt ei olnud ajastusprobleemide tõttu alati saadaval, seega kasutati ainult 17 bitti. Käske täideti kiirusega keskmiselt 650 sekundis. 1024-sõnaline mälu viivitussalvestus oli saadaval alles 1955. aastal või 1956. aasta alguses,  kuni selle ajani oli programmide maht 800 sõna.

Käsklused hõivasid ühe 17-bitise sõna, kuid terve viivitusrida pidi ringlema enne järgmise käsu täitmist. Seega oli kõige kiirem järjestikuste käskude täitmine \frac{500000}{(32+1)\cdot(17+1)}=841 käsku sekundis.  
Käsk koosnes 5-bitisest käsukoodist, 1 varubitist, 10-bitisest operandist (tavaliselt mäluaadress) ja 1 pikkuse bitist, et kontrollida, kas käsus kasutatakse 17-bitist või 35-bitist operandi (kaks järjestikust sõna, väike-endian).
Operatsioonisüsteem koosnes 31 juhisest, mis olid ühendatud astmelülitiga, mehaaniline kirjutuskaitstud mälu. Need juhised panid sümboolsel kujul programmid paberlindilt põhimällu ja käivitasid need. 

### Programmeerimine
EDSACi programmeerijad pidid kasutama tänapäeva standarditele mitte vastavaid tehnikaid, eelkõige nimelt isemuutuva koodi kasutamist. Kuna indeksiregister tuli alles palju hiljem, siis ainus viis massiivi juurde pääsemiseks, oli muuta millisele mäluaadressile konkreetne käsk viitab. Indeksiregistri puudumine valmistas alamprogrammi kirjutajale probleemi ka selle poolest, et nad ei teadnud ette, kuhu mälus alamprogramm laetakse ja seetõttu ei osatud adresseerida kasutatud koodi ühtegi piirkonda andmete salvestamiseks. See lahendati esialgse sisendrutiini abil, mis vastutas alamprogrammide laadimise eest perforeeritud lindilt mällu.

Lisaks kasutati vähese mälu tõttu ka erilisi tehnikaid, mis aitasid paremini mälu kasutada. Näiteks võib perforeeritud lindilt alamprogrammi mällu laadimisel juhtuda, et tuleb välja arvutada konstant, mis ei vaja hiljem ümberarvutamist. Selles olukorras arvutatakse konstant "vahepalana". Konstandi arvutamiseks vajalik kood esitatakse koos täieliku alamprogrammiga. Pärast seda, kui esialgne sisestusrutiin oli arvutuskoodi laadinud, annab see juhtimise üle sellele koodile. Kui konstant on arvutatud ja mällu kirjutatud, naaseb juhtimine algse sisendrutiini juurde. See jätkab alamprogrammi ülejäänud osa mällu kirjutamist, kuid esmalt kohandab selle alguspunkti nii, et konstandi arvutanud kood kirjutatakse üle. See võimaldas üldotstarbelises alamprogrammis teha keerulisi kohandusi, muutmata selle lõplikku jalajälge mälus suuremaks, kui see oleks olnud konkreetse olukorra jaoks kohandatud.

## Koopia projekt

13. jaanuaril 2011 teatas Arvutikaitseselts, et kavatseb ehitada EDSACi töötava koopia Bletchley Parkis asuvas Riiklikus Arvutusmuuseumis (inglise *The National Museum of Computing*, lühend *TNMoC*), mida juhendab Andrew Herbert, kes õppis Maurice Wilkesi käe all. Koopia esimesed osad lülitati sisse 2014. aasta novembris. Algselt loodeti projekt täielikult tööle saada 2017. aasta sügiseks. 

Projekti eesmärgid:
*Pakkuda käegakatsutavat demonstratsiooni Cambridge'i pioneeride saavutustest
*Tähistada Briti teaduse ja tehnoloogilise panuse saavutusi andmetöötluse varases arengus
*Ehitada võimalikult täpne koopia, arvestades komponentide ja materjalide saadavust ning kaasaegseid ohutusstandardeid
*Olla eeskujuks Briti inseneriteaduses ja julgustada uusi üliõpilasi arvuti- ja inseneriteadustega tegelema
*Õpetada välja uusi vabatahtlikke, kes suudaksid masinat kasutada, hooldada ja muuseumi külastajatele demonstreerida.

## Viited