Neumann-elvek a számítógép felépítésében és működésében

Neumann János (1903–1957) magyar születésű matematikus és vegyész. Iskoláit Magyarországon, Németországban és Svájcban végezte. 1930-tól az Egyesült Államokban tanított és kutatott. Maradandód alkotott többek között a matematika, a közgazdaságtan és a számítástechnika területén is.

Az 1945 nyarán írt First Draft of a Report on the EDVAC című dokumentumban lefektette a modern számítógép felépítésének és működésének alapelveit. Munkássága olyan jelentős volt, hogy a mai napig alapvetésnek számít a számítógépek tervezésében. Ebben a fejezetben azt tekintjük át, hogy Neumann meglátásai hogyan jellennek meg az informatikában a 21. század elején.

A számítógép felépítése

Az első Neumann-elvű gépek

Régi felépítés
A Neumann-elvű számítógép felépítése

Neumann elképzelése szerint a számítógép összetevőit három csoportba lehet elkülöníteni.

  1. A központi egység (mai nevén processzor) felelős a számítógép működtetéséért. A vezérlőegység feldolgozza a programok utasításait, az aritmetikai és logikai egység pedig végrehajtja a matematikai és logikai műveleteket.
  2. Az operatív tár (mai nevén memória) tartalmazza az éppen futó programok utasításait és az éppen használatban lévő adatokat. A központi egység innen olvassa ki a következő utasítást, és ide írja a számítások eredményét. Ha a számítógép áramellátása megszűnik, az opratív tár tartalma törlődik.
  3. A ki- és bemeneti egységek (mai nevén perifériák) teremtik meg a kapcsolatot a felhasználó és a számítógép között. Lehetőséget adnak az utasítások és adatok bevitelére, valamint megjelenítik a számítások eredményét.

A modern számítógépek

Modern felépítés
Egy mai modern számítógép felépítése

A First Draft megírása óta eltelt több, mint 70 évben a számítógépek felépítése sokat változott, de alapjaiban hasonló maradt. Néhány jelentős változás:

  • Az összetevők között megjelent egy negyedik csoport, a háttértárak. Ezek feladata a nagymennyiségű adatok hosszútávú tárolása akkor is, ha a számítógép nincs áram alatt. A háttértárakat közvetlenül vagy valamilyen író/olvasó egység segítségével csatlakoztathatjuk.
  • Jelentősen megnövekedett a perifériák száma és fajtája. A kezdeti szöveges be- és kiviteli egységek mellett elterjedtek az audiovizuális perifériák (hang és kép) és a különféle mutatóeszközök (egér, touchpad, stb.).
  • Megjelentek olyan vezérlőchipek és társprocesszorok, amik a központi egységet tehermentesítik különféle feladatok alól. Ezek az egységek (főként grafikus, hang és hálózati vezérlők) eleinte bővítőkártyák formájában kerültek piacra. Később, ahogy egyre fontosabbak lettek a mindennapi használatban, a gyártók az alaplapra forrasztották őket. Az utóbbi években pedig egyre több vezérlőt építenek be közvetlenül a processzorba, ezzel is növelve a számítógép adatfeldolgozó sebességét.
  • A központi egység az operatív tártól függetlenül kapott egy gyorsítótárnak nevezett memóriát. Ez ugyan kis méretű, de a benne tárolt utasítások és adatok gyorsabban elérhetők, mintha az operatív tárban lennének.
  • Elterjedtek a többmagos központi egységek. Ezek egy lapkára épített különálló processzorok, amik szorosan együttműködve tovább javítják a számítógép teljesítményét. A magok lehetnek egyenrangúak vagy eltérőek. Az utóbbi főleg a hordozható eszközökben jelent előnyt. A gyengébb mag kisebb számítási teljesítménnyel bír, de cserébe kevesebb áramot fogyaszt, mint az erősebb mag.

A számítógép működése

A Neumann-elvek

A First Draftban Neumann részletesen írt arról is, hogy a számítógépnek hogyan kell működni ahhoz, hogy gyorsan és hatékonyan lehessen velük az adatokat feldolgozni. Ezek egy része manapság megmosolyogtató lehet, de a 40-es években még nem voltak ennyire egyértelműek. A fő megállapítások a következők:

  1. A számítógép teljesen elektronikus működésű. A 19. században és a 20. század elején ugyanis sokan kísérleteztek mechanikus gépekkel. Az elektronikus központi egység és operatív tár azonban gyorsabb, kisebb és kevésbé sérülékeny, mint a mechanikus megoldások. A mozgó alkatrészeket ugyan nem lehet teljesen kizárni, de a fejlődés abba az irányba tart, hogy ezek száma csökkenjen. Jó példa erre az úgynevezett flashmemóriák sikere, amik nemcsak a szalagos, de lassan a lemezes háttértárakat is kiszorítják.
  2. A számítógép kettes számrendszerben működik. Azaz minden adatot és utasítást bitsorozatok (egyesek és nullák) formájában kezel. A mindössze kétféle érték nemcsak a feldolgozást, hanem a tárolást és a továbbítást is megkönnyíti, ugyanis könnyű mérni, hogy az áramkör egy adott pontján egy időpillanatban éppen van jel (1), vagy nincs (0).
  3. A számítógép univerzális működésű. Nemcsak egy adott feladatot tud elvégezni, hanem beprogramozható különféle feladatok elvégzésére. Alan Turing (Neumann kortársa) elmélete szerint ha egy gép el tud végezni néhány alapműveletet (pl.: összeadás, összehasonlítás, másolás), akkor bármilyen bonyolult problémát meg tud oldani. A programozó feladata az, hogy a problémát alapműveletekre bontsa, amiket a számítógép elvégez, és a folyamat végén megszületik a bonyolult számítás eredménye.
  4. A számítógép a tárolt program elvén működik. Az éppen futó programok utasításait és az éppen használatban lévő adatokat egy közös tárban (memória) kezeli. Így automatikusan be tudja tölteni a következő utasítást, és ideiglenesen tárolni tudja a számítások közben keletkező részeredményeket is. Ezek következtében kevesebb felhasználói beavatkozásra van szükség, és a számítási sebesség jelentősen megnövekszik.
  5. A számítógép az utasításokat sorban hajtja végre. A központi egység egyszerre egy utasítást olvas ki a memóriából, az adatokat pedig bitenként dolgozza fel. Ez az elv a többmagos processzorok korában úgy módosult, hogy a magok továbbra is sorosan működnek, viszont egymástól függetlenül egyszerre különböző programokat is futtathatnak, így a központi egység párhuzamosan több feladatot is végezhet.

A jövő

A Neumann-elveken működő gépek megjelenése óta folynak olyan kutatások, amik kisebb-nagyobb mértékben eltérő felépítésű és/vagy működésű gépek létrehozására törekednek. Van olyan, ami a kettes számrendszer használatát változtatja meg, és olyan is, ami az utasítások és adatok kezelését párhuzamosan oldja meg. Ezek azonban a gyakorlatban nem, vagy csak korlátozottan működnek, így jelenleg nem tekinthetők univerzális alternatívának.