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:
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.
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.