**Von Neumannin arkkitehtuuri** on tietokonearkkitehtuuri, jonka John von Neumann suunnitteli yhdessä työryhmänsä kanssa 1940-luvulla. Arkkitehtuuri esiteltiin vuonna 1945 EDVAC-tietokonetta käsittelevässä muistiinpanosarjassa "First Draft of a Report on the EDVAC". EDVAC-tietokonetta voidaan pitää ensimmäisenä toimivana suunnitelmana todellisesta tietokoneesta. Vaikka ensimmäisen tietokoneen jälkeen tietokonearkkitehtuuri on kokenut suuria muutoksia, on Von Neumannin arkkitehtuuri säilynyt taustalla aina tähän päivään asti.

Von Neumannin arkkitehtuuri
Von Neumannin arkkitehtuurin ominaisuudet liittyvät siihen, että data ja sitä käyttävät ohjelmat varastoidaan samaan muistiin. Von Neumannin arkkitehtuurissa data ja käskyt käyttävät myös yhteisiä väyliä muistin ja prosessorin välillä. Ennen kuin Von Neumann esitteli tämän ratkaisunsa tietokonearkkitehtuurista, ei tietokoneita oltu voitu rakentaa kerrallaan kuin yhtä tarkoitusta varten. Toinen merkittävä tietokonearkkitehtuuri on Harvardin arkkitehtuuri. Se eroaa Von Neumannin arkkitehtuurista siten, että datalla ja ohjelmilla on omat erilliset muistinsa ja väylät signaaleille.

Historia
--------

Varhaisimmat tietokonemallit olivat hyvin yksinkertaisia, ja tietokoneen uudelleenohjelmointi oli usein työläs prosessi, joka vaati yleensä koneen purkamista ja jälleenrakentamisen tarkkaa suunnittelua.

Nykyisen kaltainen Von Neumannin arkkitehtuuriin nojaava tietokone sai ensimmäisen teoreettisen pohjansa 1936 Cambridgessä, kun Alan Turing julkaisi tutkielman "*On Computable Numbers*", jossa hän esitteli ideansa Turingin koneesta, jossa ohjelma ja data olisivat tallennettuna samaan muistiin. Samana vuonna myös saksalainen Konrad Zuse alkoi tutkimaan Turingin koneen mukaisen tietokoneen mahdollisuuksia, mutta hänen työnsä jäi kesken toisen maailmansodan vuoksi.

Turing ja Von Neumann tunsivat toisensa vuosien takaa, kun Von Neumann oli professorina Cambridgen yliopistossa 1935. Von Neumann ajautui tietokoneen kehityksen pariin Manhattan-projektin vauhdittamana ja vietti kesän 1944 Pennsylvanian yliopistossa, jossa ensimmäinen nykyisen tyyppinen tietokone ENIAC suunniteltiin John Mauchlyn ja Presper Eckertin toimesta. Eckert oli tammikuussa kirjoittanut, että he aikoivat tallentaa ohjelmat ja datan samaan muistilaitteeseen tietokoneen toiminnan nopeuttamiseksi. Eckert ei ollut tietoinen Turingin koneesta tuohon aikaan.

Turingin ajatusten ja ENIAC-projektin pohjalta Von Neumannilla oli eväät vuonna 1945 kirjoittaa raporttinsa "First Draft of a Report on the EDVAC" (1945), joka lähti leviämään nopeasti alan piireissä. Raportti oli niin selkeä, että keskeneräisenäkin sitä alettiin käyttää EDVAC:n rakentamisen pohjana.

Ensimmäinen Von Neumannin arkkitehtuurin mukainen tietokone (EDSAC) valmistui kuitenkin vasta 1949 Cambridgessä, sillä Mauchly ja Eckert lopettivat työnsä EDVAC:n parissa Pennsylvanian yliopistossa ja perustivat oman yrityksen. Mauchly ja Eckert kokivat arkkitehtuurin nimeämisen Von Neumannin mukaan suurena vääryytenä heitä kohtaan, sillä he olivat kuitenkin suunnitelleet ENIAC:n, jonka pohjalta Von Neumann kirjoitti raporttinsa.

Von Neumannin Arkkitehtuurin komponentit
----------------------------------------

### Suoritin eli CPU

Suoritin sisältää kolme osaa: kontrolliyksikön, aritmeettisloogisen yksikön (ALU) sekä rekisterit.

Kontrolliyksikkö eli CU. Kontrolliyksikkö määrää, missä järjestyksessä käskyt toteutetaan, ohjeistaa muita tietokoneen osia käskyjen toteutuksessa kontrollisignaalien välityksellä  ja tulkitsee käskyt. Kontrolliyksikkö hallitsee tiedonkulkua tietokoneessa.

Aritmeettislooginen yksikkö eli ALU suorittaa kaikki matemaattiset ja loogiset laskut. Näitä ovat esimerkiksi yhteen- ja vähennyslaskut sekä Boolen algebran AND, OR ja NOT -operaatiot. Tietokone voi sisältää useita tällaisia yksiköita.

Rekisterit ovat nopeaa, väliaikaista muistia kontrolliyksikön ja aritmeettis-loogisen yksikön käytössä. Koska rekisterit ovat kytketty suoraan kontrolliyksikköön, on niiden dataa nopeampi käyttää kuin muuhun muistiin kirjattua dataa. Tämän takia rekisteri nopeuttaa tietokoneen toimintaa ja vähentää von Neumannin pullonkaulan vaikutusta.  

### Muisti ja väylät

Von Neumannin arkkitehtuurissa muisti tallentaa sekä dataa että ohjelmat. Muistin sisältämä tieto kulkee eri yksiköille väylien kautta.

### I/O-laitteet

Input/Output-laitteet mahdollistavat tietokoneelle datan vastaanottamista ja esittämistä. Yleisimpiä I/O laitteita ovat hiiri, näppäimistö ja ruutu.

Arkkitehtuurin rajoitukset
--------------------------

Von Neumann –arkkitehtuurissa konekäskyt haetaan homogeenisesta muistista ja suoritetaan yksi kerrallaan. Tämä johtaa ilmiöön, jota kutsutaan *Von Neumannin pullonkaulaksi.* Ohjelma- ja datamuistin jaettu väylä johtaa rajoitettuun datansiirtoon suorittimen ja muistin välillä. Data voi päästä kerrallaan vain toiseen suuntaan kanavaa pitkin, jolloin suoritusteho pienenee. Suoritinten nopeus ja muistien koot ovat kasvaneet nopeasti, jolloin myös pullonkaulan vaikutuksesta on tullut merkittävämpi. Von Neumannin pullonkaulaa kuvaili ensimmäisen kerran John Backus vuonna 1977. Backus esitti, että pullonkaula ei ole vain käytännön ongelma, vaan myös intellektuaalinen, sillä se rajoittaa ohjelmoijien ajattelua. 

Ratkaisukeinoja suorituksen parantamiseen on monia, esimerkiksi voidaan:

* Tarjota välimuisti suorittimen ja päämuistin välille
* Tarjota erilliset välimuistit tai erilliset väylät datalle ja ohjeille (niin kutsuttu "Mukailtu Harvardin arkkitehtuuri" eli Modified Harvard Architecture)
* Käyttää rinnakkaislaskentaa**,** tätä käytetään muun muassa supertietokoneissa**.**

Katso myös
----------

* Harvardin arkkitehtuuri
* Muistiarkkitehtuuri

Lähteet
-------

1. 1 2  John von Neumann: First Draft of a Report on the EDVAC (PDF) *archive.org*. Viitattu 25.8.2017.
2. ↑  von Neumann –arkkitehtuuri ennen ja nyt *www.cs.helsinki.fi*. Viitattu 19.3.2018.
3. 1 2  Mehdi Zargham: Computer architecture (2. kappale)  1996. Prentice Hall.  Arkistoitu 19.2.2018. Viitattu 10.3.2018.
4. ↑  Nicholas Enticknap: *Computer Jargon Explained*. Elsevier, 2014-05-16. ISBN 9781483135533. Teoksen verkkoversio (viitattu 22.3.2018). en
5. ↑  AlanTuring.net A Brief History of Computing *www.alanturing.net*. Viitattu 22.3.2018.
6. ↑  Martti Tienari: *Tietotekniikan alkuvuodet Suomessa*. Helsingin Yliopisto, 1993.
7. ↑  Massachusettsin yliopiston luentomoniste *none.cs.umass.edu*.  Arkistoitu 25.4.2012. Viitattu 12.3.2018.
8. ↑  John Backus: Can programming be liberated from the von Neumann style?: a functional style and its algebra of programs.  *Communications of the ACM*, 1.8.1978, nro 8, s. 613–641. doi:10.1145/359576.359579. ISSN 0001-0782. Artikkelin verkkoversio.
9. ↑  Nakul Machanda, Karen Anand: Non-Uniform Memory Access (NUMA) *cs.nyu.edu*. Viitattu 15.3.2018.

Aiheesta muualla
----------------

* Kuvia tai muita tiedostoja aiheesta **Von Neumannin arkkitehtuuri** Wikimedia Commonsissa