Arkitektura e Von Neumann

parapamje|Një skemë e arkitekturës von Neumann
**Arkitektura von Neumann** — e njohur edhe si **modeli von Neumann** ose **arkitektura e Princeton** — është një arkitekturë kompjuteri e bazuar në *Draftin e Parë të një Raporti mbi EDVAC*, 1–4 

* një njësi qëndrore aritmetike për të kryer operacione aritmetike;
* një njësi qëndrore kontrolli për të renditur në sekuencë operacionet qe kryhen nga makina;
* memorie që ruan të dhëna dhe instruksione;
* një "medium regjistrimi i jashtëm" për të ruajtur të dhënat hyrëse dhe dalëse nga makina;
* mekanizma hyrës dhe dalës për të transferuar të dhëna midis memories dhe mediumit të jashtëm të regjistrimit.

Atributimi i shpikjes së arkitekturës von Neumann është i diskutueshëm, jo vetëm sepse Eckert dhe Mauchly kishin bërë shumë nga puna e kërkuar e dizajnit dhe pretendojnë se e kishin pasur idenë për programet e ruajtura shumë kohë përpara se t'i diskutonin idetë me von Neumann dhe Herman Goldstine.

Termi "arkitektura von Neumann" ka evoluar për t'iu referuar çdo kompjuteri me program të ruajtur në të cilin marrja e një instruksioni dhe një operacion i të dhënave nuk mund të ndodhin në të njëjtën kohë (meqenëse ato ndajnë një magjistrale të përbashkët). Kjo njihet si ngushtica von Neumann, e cila shpesh kufizon performancën e sistemit përkatës.

Arkitektura von Neumann është më e thjeshtë se arkitektura Harvard (e cila ka një grup të dedikuar autobusësh adresash dhe të dhënash për lexim dhe shkrim në memorie dhe një grup tjetër autobusësh adresash dhe të dhënash për të marrë instruksione).

Një kompjuter me program të ruajtur përdor të njëjtin mekanizëm bazë për të koduar si instruksionet e programit ashtu edhe të dhënat, në kontrast me dizajnet e vjetra që përdorin mekanizma si panele me lidhje fizike ose qarkore të fiksuara për të zbatuar instruksionet. Kompjuterët me program të ruajtur ishin një përparim në krahasim me kompjuterët e rikonfiguruar manualisht ose me funksione fikse të viteve 1940, siç ishin Colossus dhe ENIAC. Këta programoheshin duke vendosur çelësa dhe duke futur kabllo patch për të drejtuar të dhënat dhe sinjalet e kontrollit midis njësive të ndryshme funksionale.

Shumica dërrmuese e kompjuterëve modernë përdorin të njëjtin mekanizëm hardueri për të koduar dhe ruajtur si të dhënat ashtu edhe instruksionet e programit, por kanë memorie të përkohshme (cache) midis CPU-së dhe memories, dhe, për memoriet e përkohshme më të afërta me CPU-në, kanë memorie të përkohshme të ndara për udhëzimet dhe të dhënat, në mënyrë që shumica e marrjes së udhëzimeve dhe të dhënave të përdorin autobusë të ndarë (arkitektura e ndarjes së memories së përkohshme).

## Histori 
Makinat më të hershme kompjuterike kishin programe të fiksuara. Disa kompjuterë shumë të thjeshtë ende e përdorin këtë dizajn, qoftë për thjeshtësi apo për qëllime trajnimi. Për shembull, një kalkulator tavoline (në parim) është një kompjuter me programe të fiksuara. Ai mund të bëjë llogaritje bazë matematikore, por nuk mund të ekzekutojë një përpunues teksti ose lojëra. Ndryshimi i programit të një makine me programe të fiksuara kërkon rirregullim, ristrukturim ose ridizajnim të makinës. Kompjuterët më të hershëm nuk ishin aq shumë të "programuar" sa ishin të "dizajnuar" për një detyrë të caktuar. "Riprogramimi" – kur ishte i mundur fare – ishte një proces i mundimshëm që fillonte me diagrame rrjedhëse dhe shënime në letër, të ndjekura nga dizajne të detajuara inxhinierike, dhe më pas procesi shpesh i vështirë i rirregullimit fizik dhe rindërtimit të makinës. Mund të duheshin tre javë për të konfiguruar dhe debuguar një program në ENIAC.

Me propozimin e kompjuterit me program të ruajtur, kjo ndryshoi. Një kompjuter me program të ruajtur përfshin, sipas dizajnit, një grup instruksionesh dhe mund të ruajë në memorie një grup instruksionesh (një program) që detajon llogaritjen.

Një dizajn me program të ruajtur lejon gjithashtu kodin vetë-modifikues . Një motivim i hershëm për një lehtësi të tillë ishte nevoja që një program të rriste ose në një mënyrë tjetër të ndryshonte pjesën e adresës së instruksioneve, gjë që operatorët duhej ta bënin manualisht në dizajnet e hershme. Kjo u bë më pak e rëndësishme kur regjistrat e indeksit dhe adresimi indirekt u bënë tipare të zakonshme të arkitekturës së makinës. Një përdorim tjetër ishte të futeshin të dhëna të përdorura shpesh në rrjedhën e instruksioneve duke përdorur adresimin e menjëhershëm.

Kur von Neumann përshkroi sistemet automatike të llogaritjes duke përdorur terminologji të ndryshme nga ajo që përshkruhet zakonisht me modelin. Në *Draftin e Parë të një Raporti mbi EDVAC*, arkitektura përbëhej nga "një memorie me shpejtësi të lartë M, një njësi qendrore aritmetike CA, një medium i jashtëm regjistrimi R, një organ hyrës I, një organ dalës O dhe një kontroll qëndror CC"

## Aftësitë 
Në një shkallë të gjerë, aftësia për të trajtuar instruksionet si të dhëna është ajo që i bën të mundura asemblerët, kompilatorët, lidhësit, ngarkuesit dhe mjetet e tjera të programimit të automatizuar. Kjo i bën të mundura "programet që shkruajnë programe".

Kjo ka bërë që një ekosistem i sofistikuar informatik vetë-pritës të lulëzojë rreth makinave me arkitekturë von Neumann.

Disa gjuhë të nivelit të lartë shfrytëzojnë arkitekturën von Neumann duke ofruar një mënyrë abstrakte, të pavarur nga makina, për të manipuluar kodin ekzekutues gjatë kohës së ekzekutimit (p.sh., LISP), ose duke përdorur informacionin e kohës së ekzekutimit për të akorduar kompilimin "just-in-time" (p.sh. gjuhët e hostuara në makinën virtuale Java, ose gjuhët e integruara në shfletuesit e uebit).

Në një shkallë më të vogël, disa operacione përsëritëse si BITBLT ose shader-at e pikselëve dhe vertekseve mund të përshpejtohen në procesorë për qëllime të përgjithshme duke përdorur teknika të kompilimit vetëm-në-kohë. Ky është një përdorim i kodit vetë-modifikues që ka mbetur popullor.

## Zhvillimi i konceptit të programit të ruajtur 
Matematikani Alan Turing, i cili ishte njoftuar për një problem të logjikës matematikore nga leksionet e Max Newman në Universitetin e Kembrixhit, shkroi një artikull në vitin 1936 të titulluar *Mbi Numrat e Llogaritshëm, me një Zbatim në Problemin e Zgjidhjes së Problemeve*, i cili u botua në *Proceedings of the London Mathematical Society*. Në të, ai përshkroi një makinë hipotetike që e quajti një *makinë universale llogaritëse*, e njohur tani si " Makina Universale e Turingut ". Makina hipotetike kishte një hapësirë të pafundme (memorie në terminologjinë e sotme) që përmbante si instruksione ashtu edhe të dhëna. John von Neumann u njoh me Turing ndërsa ishte profesor vizitor në Kembrixh në vitin 1935, dhe gjithashtu gjatë vitit të doktoraturës së Turing në Institutin për Studime të Avancuara në Princeton, New Jersey gjatë viteve 1936-1937.Nuk është e qartë nëse ai e dinte për artikullin e Turing të vitit 1936 në atë kohë.

Në vitin 1936, Konrad Zuse parashikoi gjithashtu, në dy aplikime për patentë, se instruksionet e makinës mund të ruheshin në të njëjtën memorie që përdoret për të dhënat.

Në mënyrë të pavarur, J. Presper Eckert dhe John Mauchly, të cilët po zhvillonin ENIAC në Shkollën Moore të Inxhinierisë Elektrike të Universitetit të Pensilvanisë, shkruan rreth konceptit të programit të ruajtur në dhjetor 1943. Duke planifikuar një makinë të re, EDVAC, Eckert shkroi në janar 1944 se ata do të ruanin të dhënat dhe programet në një pajisje të re memorieje të adresueshme, një memorie me vonesë metalike të merkurit. Kjo ishte hera e parë që propozohej ndërtimi i një makine praktike me program të ruajtur. Në atë kohë, ai dhe Mauchly nuk ishin në dijeni të punës së Turingut.

Von Neumann ishte i përfshirë në Projektin Manhattan në Laboratorin Kombëtar të Los Alamos. Ai kërkonte sasi të mëdha llogaritjesh dhe kështu e tërhoqi atë drejt projektit ENIAC, gjatë verës së vitit 1944. Atje ai u bashkua me diskutimet e vazhdueshme mbi projektimin e këtij kompjuteri me program të ruajtur, EDVAC. Si pjesë e atij grupi, ai shkroi një përshkrim të titulluar *Drafti i Parë i një Raporti mbi EDVAC* bazuar në punën e Eckert dhe Mauchly. Ishte i papërfunduar kur kolegu i tij Herman Goldstine e shpërndau dhe mbante vetëm emrin e von Neumann (për habinë e Eckert dhe Mauchly). Punimi u lexua nga dhjetëra kolegë të von Neumann në Amerikë dhe Evropë, dhe ndikoi në raundin e ardhshëm të dizajneve kompjuterike.

Jack Copeland konsideron se është "historikisht e papërshtatshme t'u referohemi kompjuterëve dixhitalë elektronikë me programe të ruajtura si 'makinat von Neumann'. Kolegu i tij nga Los Alamos, Stan Frankel, tha  për respektin e von Neumann për idetë e Turingut 

E di që rreth viteve 1943 ose 1944, von Neumann ishte shumë i vetëdijshëm për rëndësinë themelore të artikullit të Turing-ut të vitit 1936.... Von Neumann më prezantoi me atë artikull dhe, nën nxitjen e tij, e studiova me kujdes. Shumë njerëz e kanë lavdëruar von Neumann-in si babai i kompjuterit" (ne kuptimin modern të termit), por jam i sigurt se ai nuk do ta kishte bërë kurrë këtë gabim vetë. Ai mund të quhej ndoshta "nëna e lindjes",

por ai më theksoi fort, dhe sigurisht edhe të tjerëve, se koncepti themelor i takon Turing-ut-për sa nuk ishte parashikuar nga Babbage.... Siurisht, edhe Turing dhe von Neumann dhanë kontribute te rëndësishme në "zbatim praktik" të këtyre koncepteve, por nuk do t'i konsideroja këto të barabarta në rëndësi me prezantimin dhe shpjegimin e konceptit të një kompjuteri që mund të ruajë në memorien e tij programin e aktiviteteve dhe të modifikojë atë program gjatë ekzekutimit të këtyre aktiviteteve.

Në kohën kur qarkulloi raporti "Drafti i Parë", Turing po hartonte një raport të titulluar *"Llogaritësi Elektronik i Propozuar* ". Ai përshkruante me detaje inxhinierike dhe programimi idenë e tij për një makinë që ai e quajti *Motor Automatik i Llogaritjes (ACE)*. Ai ia paraqiti këtë komitetit ekzekutiv të Laboratorit Kombëtar Fizik Britanik më 19 shkurt 1946. Edhe pse Turing e dinte nga përvoja e tij e luftës në Bletchley Park se ajo që ai propozoi ishte e realizueshme, sekreti që rrethonte Colossus, i cili u ruajt më pas për disa dekada, e pengoi atë ta thoshte këtë. U realizuan zbatime të ndryshme të suksesshme të dizajnit ACE.

Si artikujt e von Neumann-it ashtu edhe të Turing-ut përshkruanin kompjuterë me programe të ruajtura, por artikulli i mëparshëm i von Neumann-it arriti një shpërndarje më të madhe dhe arkitektura e kompjuterit që ai përshkroi u bë e njohur si "arkitektura von Neumann". Në botimin e vitit 1953 *Faster than Thought: A Simpozium on Digital Computing Machines* (redaktuar nga B.&nbsp;V. Bowden), një seksion në kapitullin mbi *Kompjuterët në Amerikë* është si më poshtë:**Makina e Institutit për Studime të Avancuara, Princeton**

 Në vitin 1945, Profesor J. von Neumann, i cili në atë kohë punonte në Shkollën e Inxhinierisë Moore në Filadelfia, ku ishte ndërtuar E.N.I.A.C., lëshoi në emër të një grupi kolegësh të tij një raport mbi projektimin logjik të kompjuterëve dixhitalë. Raporti përmbante një propozim të detajuar për projektimin e makinës që atëherë është bërë e njohur si EDVAC (kompjuter elektronik automatik me ndryshore diskrete). Kjo makinë është përfunduar vetëm kohët e fundit në Amerikë, por raporti i von Neumann frymëzoi ndërtimin e E.D.S.A.C. (llogaritës elektronik automatik me ruajtje vonese) në Kembrixh (shih f. 130).

 Në vitin 1947, Burks, Goldstine dhe von Neumann publikuan një raport tjetër që përshkruante projektimin e një lloji tjetër makine (këtë herë një makine paralele) që do të ishte jashtëzakonisht e shpejtë, e aftë ndoshta për 20,000 operacione në sekondë. Ata theksuan se problemi i pazgjidhur në ndërtimin e një makine të tillë ishte zhvillimi i memories së përshtatshme me përmbajtje të aksesueshme te menjëhershme. Në fillim ata sugjeruan përdorimin e një tubi të veçantë vakumi – të quajtur " Selectron " – të cilin e kishin shpikur Laboratorët e Princetonit të RCA. Këto tuba ishin të shtrenjta dhe të vështira për t'u prodhuar, kështu që von Neumann më pas vendosi të ndërtonte një makinë të bazuar në memorien Williams. Kjo makinë – e përfunduar në qershor të vitit 1952 në Princeton – është bërë e njohur gjerësisht si Maniaku. Projektimi i kësaj makine frymëzoi të paktën gjysmë duzine makinash që po ndërtohen tani në Amerikë, të gjitha të njohura me dashuri si "Johniacs".Në të njëjtin libër, dy paragrafët e parë të një kapitulli mbi ACE-në janë si më poshtë:**Llogaritja Automatike në Laboratorin Kombëtar të Fizikës**

 Një nga kompjuterët dixhitalë më modernë që përfaqëson zhvillimet dhe përmirësimet në teknikën e llogaritjes elektronike automatike u demonstrua së fundmi në Laboratorin Kombëtar të Fizikës, Teddington, ku është dizajnuar dhe ndërtuar nga një ekip i vogël matematikanësh dhe inxhinierësh kërkimorë elektronikë në stafin e Laboratorit, të ndihmuar nga një numër inxhinierësh prodhimi nga English Electric Company, Limited. Pajisjet e ngritura deri më tani në Laborator janë vetëm modeli pilot i një instalimi shumë më të madh që do të njihet si Motori Automatik i Llogaritjes, por megjithëse relativisht i vogël në masë dhe që përmban vetëm rreth 800 valvola termonike, siç mund të gjykohet nga Pllakat XII, XIII dhe XIV, është një makinë llogaritëse jashtëzakonisht e shpejtë dhe e gjithanshme.

 Konceptet bazë dhe parimet abstrakte të llogaritjes nga një makinë u formuluan nga Dr.&nbsp;A.&nbsp;M. Turing, FRS, në një punim1. të lexuar para Shoqërisë Matematikore të Londrës në vitin 1936, por puna në makina të tilla në Britani u vonua nga lufta. Megjithatë, në vitin 1945, një shqyrtim i problemeve u bë në Laboratorin Kombëtar Fizik nga Z.&nbsp;J.&nbsp;R. Womersley, atëherë mbikëqyrës i Divizionit të Matematikës së Laboratorit. Atij iu bashkua Dr. Turing dhe një staf i vogël specialistësh, dhe, deri në vitin 1947, planifikimi paraprak ishte mjaftueshëm i avancuar për të garantuar krijimin e grupit të posaçëm të përmendur tashmë. Në prill të vitit 1948, ky i fundit u bë Seksioni i Elektronikës i Laboratorit, nën drejtimin e Z.&nbsp;F.&nbsp;M. Colebrook.

## Kompjuterët e hershëm me arkitekturë von Neumann 
*Drafti i Parë* përshkruante një dizajn që u përdor nga shumë universitete dhe korporata për të ndërtuar kompjuterët e tyre. Midis këtyre kompjuterëve të ndryshëm, vetëm ILLIAC dhe ORDVAC kishin grupe udhëzimesh të pajtueshme.

## Kompjuterët e hershëm me programe të ruajtura 
Informacioni i datës në kronologjinë e mëposhtme është i vështirë për t'u vendosur në rendin e duhur. Disa data janë për ekzekutimin e parë të një programi testimi, disa data janë hera e parë që kompjuteri është demonstruar ose përfunduar, dhe disa data janë për dorëzimin ose instalimin e parë.

* IBM SSEC kishte aftësinë për të trajtuar udhëzimet si të dhëna dhe u demonstrua publikisht më 27 janar 1948. Kjo aftësi u pretendua në një patentë amerikane.  Megjithatë, ai ishte pjesërisht elektromekanik, jo plotësisht elektronik. Në praktikë, udhëzimet lexoheshin nga shiriti i letrës për shkak të memories së tij të kufizuar.
* ARC2 i zhvilluar nga Andrew Booth dhe Kathleen Booth në Birkbeck, Universiteti i Londrës, u vu zyrtarisht në punë më 12 maj 1948. Ai paraqiste pajisjen e parë të ruajtjes së baterisë rrotulluese.
* Manchester Baby ishte kompjuteri i parë plotësisht elektronik që ekzekutoi një program të ruajtur. Ai ekzekutoi një program faktorizimi për 52 minuta më 21 qershor 1948, pasi më herët kishte ekzekutuar një program të thjeshtë pjesëtimi dhe një program për të treguar se dy numra ishin relativisht të thjeshtë.
* ENIAC u modifikua për të funksionuar si një kompjuter i thjeshtë me programe të ruajtura vetëm për lexim (duke përdorur Tabelat e Funksioneve për ROM-in e programit) dhe u demonstrua si i tillë më 16 shtator 1948, duke ekzekutuar një program nga Adele Goldstine për von Neumann.
* BINAC ekzekutoi disa programe testimi në shkurt, mars dhe prill 1949, megjithëse nuk u përfunduan deri në shtator 1949.
* Manchester Mark 1 u zhvillua nga projekti Baby. Një version i ndërmjetëm i Mark 1 ishte i disponueshëm për të ekzekutuar programe në prill të vitit 1949, por nuk u përfundua deri në tetor të vitit 1949.
* EDSAC ekzekutoi programin e tij të parë më 6 maj 1949.
* EDVAC u dorëzua në gusht të vitit 1949, por pati probleme që e penguan të vihej në funksionim të rregullt deri në vitin 1951.
* CSIR Mk I  ekzekutoi programin e tij të parë në nëntor të vitit 1949.
* SEAC u demonstrua në prill të vitit 1950.
* Pilot ACE ekzekutoi programin e tij të parë më 10 maj 1950 dhe u demonstrua në dhjetor 1950.
* SWAC u përfundua në korrik 1950.
* " Vorbulla" u përfundua në dhjetor 1950 dhe u vu në përdorim të vërtetë në prill 1951.
* Atlasi i parë ERA (më vonë ERA 1101/UNIVAC 1101 komercial) u instalua në dhjetor 1950.

## Evolucioni 
parapamje|Evolucioni i arkitekturës së një autobusi me sistem të vetëm
Gjatë dekadave të viteve 1960 dhe 1970, kompjuterët në përgjithësi u bënë si më të vegjël ashtu edhe më të shpejtë, gjë që çoi në evolucione në arkitekturën e tyre. Për shembull, I/O me hartëzim memorieje lejon që pajisjet hyrëse dhe dalëse të trajtohen njësoj si memoria. Një bus i vetëm sistemi mund të përdoret për të siguruar një sistem modular me kosto më të ulët. Kjo ndonjëherë quhet "riorganizim" i arkitekturës. Në dekadat pasuese, mikrokontrolluesit e thjeshtë nganjëherë do të linin jashtë funksionet e modelit për kosto dhe madhësi më të ulët. Kompjuterët më të mëdhenj shtuan funksione për performancë më të lartë.

## Kufizimet e dizajnit 
### Ngushtica von Neumannn 
Përdorimi i të njëjtit bus për të marrë instruksione dhe të dhëna çon në *ngushticën von Neumann*, rendimentin e kufizuar (shpejtësinë e transferimit të të dhënave) midis njësisë qendrore të përpunimit (CPU) dhe memories krahasuar me sasinë e memories. Meqenëse busi i vetëm mund të hyjë vetëm në njërën nga dy klasat e memories në të njëjtën kohë, rendimenti është më i ulët se shpejtësia me të cilën mund të funksionojë CPU. Kjo kufizon seriozisht shpejtësinë efektive të përpunimit kur CPU duhet të kryejë përpunim minimal në sasi të mëdha të dhënash. CPU-ja detyrohet vazhdimisht të presë që të dhënat e nevojshme të lëvizin në ose nga memoria. Meqenëse shpejtësia e CPU-së dhe madhësia e memories janë rritur shumë më shpejt se rendimenti midis tyre, ngushtica është bërë më problem, një problem ashpërsia e të cilit rritet me çdo brez të ri të CPU-së.

Ngushtica e von Neumann u përshkrua nga John Backus në ligjeraten e tij të vitit 1977 për Çmimin ACM Turing. Sipas Backus:Sigurisht që duhet të ketë një mënyrë më pak primitive për të bërë ndryshime të mëdha në memorie sesa duke shtyrë një numër të madh fjalësh para dhe mbrapa përmes ngushticës von Neumann. Jo vetëm që ky tub është një bllokim i mirëfilltë për trafikun e të dhënave të një problemi, por, më e rëndësishmja, është një ngushticë intelektuale që na ka mbajtur të lidhur me të menduarit fjalë për fjalë në vend që të na inkurajojë të mendojmë në terma të njësive më të mëdha konceptuale të detyrës në fjalë. Kështu, programimi në thelb është planifikimi dhe detajimi i trafikut të madh të fjalëve përmes ngushticës von Neumann, dhe shumica e këtij trafiku nuk ka të bëjë me vetë të dhënat e rëndësishme, por me vendin ku mund t'i gjejmë ato.

#### Zbutjet 
Ekzistojnë disa metoda të njohura për zbutjen e ngushticës së performancës  Von Neumann. Për shembull, të gjitha metodat e mëposhtme mund të përmirësojnë performancën:

* Sigurimi i një memorjeje të përkohshme midis CPU-së dhe memories kryesore.
* Sigurimi i memorieve të veçanta të fshehta ose shtigjeve të veçanta të aksesit për të dhënat dhe instruksionet (e ashtuquajtura arkitekturë e modifikuar e Harvardit).
* Përdorimi i algoritmeve dhe logjikës për parashikimin e degëve.
* Sigurimi i një pirgu të kufizuar të CPU-së ose një memorieje tjetër të integruar në çip për të zvogëluar aksesin në memorie.
* Implementimi i CPU-së dhe hierarkisë së memories si një sistem në çip, duke siguruar lokalitet më të madh të referencës dhe duke zvogëluar kështu vonesën dhe duke rritur rendimentin midis regjistrave të procesorit dhe memories kryesore.

Problemi mund të shmanget disi edhe duke përdorur llogaritje paralele, duke përdorur për shembull arkitekturën jo-uniforme të aksesit në memorie (NUMA) – kjo qasje përdoret zakonisht nga superkompjuterët . Nuk është shumë e qartë nëse *ngushtica intelektuale* që kritikoi Backus ka ndryshuar shumë që nga viti 1977. Zgjidhja e propozuar nga Backus nuk ka pasur një ndikim të madh. &#x5B; '** &#x5D; Programimi funksional modern dhe programimi i orientuar nga objektet janë shumë më pak të fokusuar tek "tërheqja e një numri të madh fjalësh para dhe mbrapa" sesa ishin gjuhët e mëparshme si FORTRAN, por në brendësi, kjo është ende ajo që kompjuterët shpenzojnë pjesën më të madhe të kohës duke bërë, madje edhe superkompjuterët me paralelitet të lartë.

### Kod vetë-modifikues 
Përveç ngushticës von Neumann, modifikimet e programit mund të jenë mjaft të dëmshme, qoftë aksidentalisht ose qëllimisht.&#x5B; **' &#x5D; Nëse nuk ka asnjë formë mbrojtjeje të memories për të parandaluar mbishkrimin e kodit, një program që nuk funksionon siç duhet mund të dëmtojë veten, programe të tjera ose sistemin operativ, duke çuar ndoshta në një rrëzim të kompjuterit. Megjithatë, ky problem vlen edhe për programet konvencionale që nuk kontrollojnë kufijt e memories. Mbrojtja e memories dhe kontrollet e ndryshme të qasjes në përgjithësi mbrojnë nga ndryshimet aksidentale dhe ato keqdashëse të programit.

Megjithatë, kodi vetë-modifikues mund të përdoret për të kryer disa optimizime që nuk do të ishin të mundura në arkitekturën Harvard.&#x5B; '''' &#x5D;

## Shih edhe 
* Ndihmë ilustruese për llogaritjet në CARDboard
* Grykë e ngushtë ndërlidhëse
* Kompjuteri i Njeriut të Vogël (LMC)
* Makinë me akses të rastësishëm
* Makina Turing

## Referime 
## Lidhje të jashtme 
* Harvard kundër von Neumann
* JOHNNY: Një simulator i thjeshtë me burim të hapur i një makine von Neumann për qëllime edukative