Von Neumanni arhitektuur

**Von Neumanni arhitektuur**, ka von Neumanni mudel või Princetoni arhitektuur, on arvutiarhitektuur, mis põhineb aastal 1945 matemaatik John von Neumanni välja pakutud arvuti arhitektuuri kirjeldusel uue täiselektroonilise EDVAC arvuti jaoks. Käsikiri “First Draft of a Report on the EDVAC” kirjeldas arvuti arhitektuurilist ülesehitust, kus käske ja andmeid säilitatakse arvutis ühises mäluruumis ning arvutit juhitakse tema enese mällu salvestatud programmiga. See arvutiarhitektuur on saanud aluseks suurema osa tänapäeva arvutite disainile.

Terminist “von Neumanni arhitektuur” on kujunenud mõiste, mis kirjeldab kõiki siseprogrammarvuteid, milles ühise siini tõttu ei saa käskudega ja andmetega seotud operatsioonid toimuda samal ajal. Von Neumanni arhitektuuril põhinevad arvutid on lihtsama disainiga kui Harvardi arhitektuuriga arvutid, mis on samuti siseprogrammarvutid, kuid millel on eraldi aadressi- ja andmesiinid mälust lugemise/kirjutamise jaoks ning käskude mälust võtmiseks.

Kuigi mällu salvestatud programmi abil talitav ning ühitatud käsu- ja andmemäluga arvutiarhitektuur on saanud nimetuse von Neumanni järgi, siis esimesena pakkusid sellise idee välja 1944. aastal ENIAC-i projekteeriad J. Presper Eckert ja John Mauchly ning von Neumann tegelikult arendas ja viimistles nende kontseptsiooni edasi.

## Ajalugu

John Mauchly ja J. Presper Eckerti juhtimisel hakati 1943. aastal Ameerika Ühendriikides Pennsylvania ülikoolis ehitama arvutit ENIAC, aastal hiljem liitus projektiga ka von Neumann. Aastal 1945, kui ENIAC-i ehitus oli veel käimas, avaldas von Neumann käsikirja, milles tõi välja peamised ideed elektroonilise siseprogramm üldkasutatava digitaalse arvuti ehk EDVAC-i jaoks. Pennsylvania ülikoolis 1946. aastal peetud EDVAC-i teemalised loengud olid väga populaarsed ja aitasid olulisel määral kaasa uute ideede levimisele. EDVAC-i ehitamise käigus väljatöötatud uudse arvutiarhitektuuri põhimõtted toodi välja 1946. aastal ilmunud Arthur W. Burks, Herman H. Goldstine ja John von Neumanni artiklis “Preliminary Discussion of the Logical Design of an Electronic Computing Instrument”. Kuigi artikkel valmis kolme autori ühistööna, on neist hiljem meeles peetud vaid ühte – John von Neumanni.

Siseprogrammarvutid olid suur edasiminek 1940. aastate programmjuhtimisega arvutitest, nagu Colossus ja ENIAC, kuna arvuti töö juhtimiseks hakati kasutama arvuti mälus säilitatavat programmi. Paljud esimesed arvutid ei olnud kas üldse ümberprogrammeeritavad (arvuti täitis vaid üht kindlat riistvarasse installeeritud programmi) või siis oli võimalik arvuti ülesannet teatud piirides muuta, kuid see nõudis palju vaeva. Näiteks kuigi ENIACi puhul oli tegemist juba täiselektroonilise arvutiga, programmeeriti seda ikka käsitsi sadade ja tuhandete pistikute ning lülitite ümberseadistamisega. Programmi ettevalmistamisele kulus tavaliselt kuu või kaks ning arvuti uue programmi jaoks töökorda seadmiseks paar päeva.

## Tööpõhimõte

Käsikirjas “First Draft of a Report on the EDVAC” kirjeldab von Neumann arhitektuurilist ülesehitust elektroonilise digitaalse arvuti jaoks, millel on järgmised komponendid:
* keskseade, millel on aritmeetika-loogikaseade ja registrid;
* juhtseade, millel on käsuloendur ja registrid käskude jaoks;
* mälu, kuhu salvestatakse andmeid ja käske;
* väline massmälu;
* sisend-väljundseadmed.

### Võrdlus Harvardi arhitektuuriga
Arvutis, mis rakendab Harvardi arhitektuuri põhimõtteid, on käskude ja andmete jaoks eraldi mälud ja siinid. Sellest tulenevalt on protsessor võimeline tegelema rööpselt nii andmete kui ka käskudega, ja seda ka siis, kui puudub vahemälu. Selline arhitektuur parandab oluliselt arvuti jõudlust.

## Varajased Von Neumanni arhitektuuril põhinevad arvutid
Käsikirjas “First Draft of a Report on the EDVAC” kirjeldatud arhitektuurilist ülesehitust kasutati arvutite ehitamisel paljudes ülikoolides ja suurettevõtetes.

* ARC2 – Birkbecki kolledž, Londoni Ülikool, Suurbritannia. Alustas ametlikult tööd 12. mail 1948.
*Manchester Baby – Manchesteri Ülikool, Suurbritannia. Tuntud ka nimega SSEM (Small-Scale Experimental Machine), käitas edukalt mällu salvestatud programmi esimest korda 21. juunil 1948. SSEM oli suuteline mällu salvestama mitte ainult andmeid, vaid ka lühikest programmi.
* EDSAC – Cambridge'i Ülikool, Suurbritannia. Esimene praktiline salvestatud programmidega elektrooniline arvuti – juhtmeid ega lüliteid olnud vaja uute arvutuste jaoks ümberseadistada (mai 1949).
* Manchester Mark 1 – Manchesteri Ülikool, Suurbritannia. SSEM-i edasiarendus (juuni 1949).
* CSIRAC – Austraalia teadusorganisatsioon CSIRO. Austraalia esimene digitaalne arvuti (november 1949).
* EDVAC – loodi Ameerika Ühendriikide armee Ballistilise Teadustöö Labori jaoks (sai valmis 1949, alustas tööd 1951).
* ORDVAC – Illinoisi Ülikool, Ameerika Ühendriigid. Sai valmis novembris 1951, valmistati samuti Ballistilise Teadustöö Labori jaoks.
* IAS masin – Princetoni Ülikool, Ameerika Ühendriigid (jaanuar 1952).
* MANIAC I – Los Alamose teaduslabor, Ameerika Ühendriigid (märts 1952).
* ILLIAC – Illinoisi Ülikool, Ameerika Ühendriigid (september 1952).
* BESM-1 – Moskva, Venemaa (1952).
* AVIDAC – Argonne'i Riiklik Laboratoorium, Ameerika Ühendriigid (1953).
* ORACLE – Oak Ridge'i Riiklik Laboratoorium, Ameerika Ühendriigid (juuni 1953).
* BESK – Stockholm, Rootsi (1953).
* JOHNNIAC – Ameerika Ühendriigid, RAND korporatsioon (jaanuar 1954).
* DASK – Taani, põhines rootslaste BESK-il (1955).
* WEIZAC – Rehovot, Iisrael (1955).
* PERM – München, Saksamaa (1956).
* SILLIAC – Sydney, Austraalia (1956).

## Von Neumanni arhitektuuri piirangud
Käske ja andmeid hoitakse ühtses mälukeskkonnas ning sellest tingituna on siini kasutus protsessori ja mälu vahel samuti jagatud. Käsud ja andmed loetakse mälust jadapöördusega, mis aga seab olulisi piiranguid mälupöördustele. Sellist olukorda nimetatakse von Neumanni pudelikaelaks. Kuna erinevalt Harvardi arhitektuurist ei saa programmi mälu ja andmete mälu lugeda samaaegselt, on infotöötluse kiirus palju väiksem protsessori tegelikust jõudlusest, sest protsessor on sunnitud ootama seni, kuni andmete lugemine/kirjutamine mälust on lõpetatud.

Kuna von Neumanni arhitektuuri puhul puudub erisus mälus säilitatava info – andmete ja käskude – vahel, siis on oht, et programmis tekkiva vea tõttu kirjutatakse üle arvuti mälus olevad käsud, mis võib kahjustada arvutis töötavat programmi, teisi arvuti mälus olevaid programme või koguni arvuti operatsioonisüsteemi.

## Viited