Digitális számítógép

A digitális számítógép a számítógépek egyik kategóriája. Az elnevezés megkülönbözteti az analóg számítógépektől, illetve a 2010-es évek második felében kísérleti jelleggel megjelent kvantumszámítógépektől. A digitális számítógép működésének és felépítésének alapja a digitális technika.

A ma használt számítógépek szinte kivétel nélkül digitális számítógépek, az analóg számítógépeket nagyon kevés helyen, csak meghatározott célokra használják, a kvantum számítógépek jelenleg (2021-ben) még kísérleti eszközök, elterjedésük a következő évtizedekben várható.

A digitális számítógépek esetén az adatok bevitele (input), feldolgozása és az eredmények megjelenítése (output) számjegyek formájában történik[1].

A programvezérelt digitális számítóautomatákat, más néven digitális számítógépeket azzal a céllal fejlesztették ki, hogy egyrészt az embert tehermentesítsék a numerikus számolás rutinmunkájától, másrészt, hogy lerövidítsék a számolás idejét. Különösen az olyan feladatoknál alkalmazható előnyösen a számítógép, ahol sok különböző számértékkel kell ugyanazt a számítási folyamatot végrehajtani. Ismert, hogy az ember ha egy művelet sort monoton módon, gyakran ismétlődően végez el, egy idő után gyakrabban téveszt[2]. Maga a monotónia tűrés egy emberi adottság, vannak olyan emberek akik jobban és vannak akik kevésbé tűrik azt.[3][4] A számítógépek alkalmazásával sok monoton folyamat automatizálható, gépesíthető, ezzel a hibázás esélye csökkenthető. Ugyanakkor a szimbolikus programozási módok lehetővé tették azt is, hogy a rutinszerű matematikai levezetéseket is digitális számítógépek végezzék el.

Digitális szó jelentéseSzerkesztés

A számítástechnikában, az informatikában illetve az elektronikában használt magyar digitális (angolul digital) kifejezés a latin eredetű angol digit (számjegy) szóból származik[1]. Az anatómiában a latin digit/digiti/digitus[5][6] kifejezés a kézen illetve a lábon lévő ujjakat jelenti. Általánosabban a gerinces állatok ujjait jelenti.[7] Az orvosi kifejezések között a szintén latin digitalis jelentése "az ujjhoz tartozó"[6]. Szintén hasonló a növényrendszertanban a Gyűszűvirág nemzetség latin digitalis elnevezése is. Feltételezhető, hogy a számjegy jelentése is a latin eredetű ujj/ujjak szóból ered, majd ennek egy jelentésváltozása a kézen történő számolás értelme, majd ebből alakult ki a számjegy jelentéstartalom.[8]

Később már a 20. század közepén ebből kifejezésből alakult ki a digitális számítógép elnevezés is, jelezve, hogy a működésének alapja a számjegyeken alapuló digitális technika.

Az 1940-es években még kísérleteztek decimális (tízes számrendszeren alapuló) digitális számítógépek építésével is, ilyen volt az első teljesen elektronikusnak tekintett programozható számítógép az ENIAC[9]. Nagyjából azonos korban többen bináris (kettes számrendszeren alapuló) számítógépet építettek ilyen volt pl. Konrad Zuse Z3 jelfogós számítógépe, illetve John Vincent Atanasoff vezetésével épült Atanasoff–Berry computer (ABC) elektronikus számítógép is[10]. Neumann János a korszakot meghatározó 1945. június 30-án közzétett First Draft of a Report on the EDVAC[11] c. munkájában határozottan javasolta a bináris felépítést, ettől kezdve a számítógépek kettes számrendszert használnak, és sokan tévesen a bináris elvű számítógépek és a digitális számítógép fogalmakat szinonimának kezelik. Ez a fentiek alapján téves, mert a bináris számítógép a digitális számítógép egy részhalmazának tekinthető. Azaz minden bináris számítógép digitális számítógép, de nem minden digitális számítógép bináris.

Digitális számítógépek kialakulásaSzerkesztés

A digitális számítógépek kialakulása a számítástechnika és a számítógép történetének az utolsó kb.100 évére tehető. Korábban főleg számolási feladatokat megkönnyítő mechanikus, illetve elektromechanikus eszközöket készítettek, használtak. Az 1930-as évek végére, 1940-as évek elejére az elektrotechnika, elektronika fejlődése lehetővé tette a számítástechnika gyors fejlődősét. Nagyjából ezzel egyidőben, részben a II. világháború hatására megnőtt az igény a gyors működésű számítógépekre. Ebben az időszakban Németországban, Angliában, és az USA-ban több mérnök, fizikus, matematikus dolgozott a számítógépek megalkotásán.

1937-ben John Vincent Atanasoff felismerte, hogy a számítógépeket célszerű digitális elven felépíteni az analóg elv helyett[12]. Részben Atanasoff eredményeinek felhasználásával alkotta meg 1943-46 között John Presper Eckert és John William Mauchly[13] az ENIAC nevű elektronikus, programozható digitális számítógépet. A gép megalkotását az amerikai Hadügyminisztérium Hadianyag-ellátási Részlege rendelte meg 1943. június 5.-én kelt szerződéssel a Moore Intézettől, majd később Herman Heine Goldstine-t kinevezték a projekt felügyelőjévé[14], a gép 1945 december 10-re készült el. Goldstine 1944-ben az aberdeeni vasútállomáson találkozott véletlenül Neumann Jánossal és ekkor kezdődött kettejük között egy hosszabb ideig tartó közös munka[15].

Neumann János szerepeSzerkesztés

 
A Neumann architektúra vázlata

Neumann 1944-ben, amikor először találkozott Goldstinne-nal a Manhattan terven dolgozott. Goldstine meghívására többször meglátogatta a Moore Intézetet ahol közben készült az ENIAC. Ekkor már felmerült a gép továbbfejlesztése, egy újabb gép megépítésének a gondolata, ez a gép lett később az EDVAC, ebbe a munkába szinte a kezdetektől bekapcsolódott Neumann János[9]. Ennek a fejlesztési projektnek a keretében Neumann egy összefoglalót készített First Draft of a Report of the EDVAC[11] címmel (a szakirodalmakban gyakran „csak” First Draft címmel hivatkoznak erre a munkára) amelyben összefoglalta azokat az alapelveket amelyeket fontosnak tartott az EDVAC megépítéséhez. Ez az eredetileg belső (bizalmasnak) szánt feljegyzés később nyilvánosságra került, és ez lett hosszú időn keresztül a digitális számítógépek felépítésének alapja. Tartalmazza a később Neumann-elveknek nevezett irányelveket, és az ebből következő felépítését a digitális számítógépeknek. Amelyet utóbb Neumann-architektúrának neveztek el. Neumann a First Draftban következetesen a digital computing system[16] (magyarul digitális számoló rendszer), digital computing device[17] (magyarul digitális számoló eszköz) kifejezéseket használta. Ekkora már egyértelműen felismerték, hogy a digitális elvű számítógépek fejlesztésével érdemes foglalkozni, az analóg számítógépek speciális területen maradtak csak meg.

A digitális számítógépek elterjedéseSzerkesztés

A digitális számítógép megalkotása nem egy ember és nem egy intézmény munkája. Egy hosszú több évszázadot átölelő folyamat eredményeként az 1940-es évek közepére, második felére alakultak ki azok a fő tervezési elvek, módszerek amelyek meghatározzák a mai napig a számítógépek felépítését. Kezdetben az akkor már a távíró- és telefontechnikában elterjedt jelfogókat használták az elektromechanikus digitális számítógépek alap elemeként[9]. A jelfogós gépek legfontosabb problémája a sebesség volt[18]. Az 1940-es évek közepétől elkezdték az elektron csöveket használni az elektronikus digitális számítógépek fő alkatrészeként a jelfogók helyett. Az első valóban használható, elektronikus digitális számítógép 1945 végére készült el, ezt követően sorra jelentek meg a digitális számítógépek[9]. Az 1950-es évekre egyre több gép jelent meg. Kezdetben a számítógépek csak a hadiipar számára épületek. A fő alkalmazási területük az atomfegyverekhez kapcsolódó, illetve a különböző lövedékek[19]röppálya elemzéséhez szükséges számítások elvégzése volt[9]. Az első kereskedelmi forgalomba hozott, sorozatban gyártott számítógép az UNIVAC-I 1951.június 5-én került üzembe helyezésre. Ekkortól kezdődik a számítógépek rohamos elterjedése, mert már nem csak a hadiipar és a kiemelt kutatóhelyek rendelkeztek számítógéppel, hanem elvileg bárki aki azt képes volt megfizetni[20]. Ebben az időszakban Európában Ű(első sorban Németországban, Franciaországban, Angliában) is megjelentek az első számítógépek. A hidegháború idején a Szovjetunióban 1953-ban készült el az első sorozatban gyártott számítógép a Sztrela. Ezek a gépek még elektron csöves felépítésűek voltak.

A tranzisztor megalkotása (1947. december 24.[21]) és elterjedése után a tranzisztorok lettek a számítógépek fő alkatrészei, azonban még az 1960-as évek elején is készültek elektron csöves gépek. 1947 körül megjelent a mágnesdobos memória,[22] illetve néhány évvel később 1950 körül a ferritgyűs memória[23]. A mágneses tárolás lehetővé tette azt, hogy a digitális számítógépek memóriája nagyobb kapacitás mellett egyszerűbb (olcsóbb) felépítésű legyen. Az integrált áramkörök megjelenése után – az első integrált áramkört a Texas Instruments mutatta be 1958-ban[24] – rövid idő alatt elkezdte az integrált áramkör felváltani a tranzisztort. 1971-ben az Intel bemutatta az első mikroprocesszort[25] ezután gyorsan terjedt a mikroprocesszorok alkalmazása. A következő években több gyártó is megjelent eleinte 8 bites, később 16 bites mikroprocesszorokkal (az első 16 bites mikroprocesszor 1976-ban jelent meg, a Texas Instruments TMS 9900 típusjelű eszköze volt[26]). 1979-ben a Motorola bemutatta az MC68000-es processzort amelyik az első 32 bites mikroprocesszor volt[26]. Ettől az időszaktól kezdődően a digitális számítógépek szinte kizárólag mikroprocesszorokból és az azokat kiegészítő integrált áramkörökből épülnek fel. Az elektronikai alkatrészek fejlődésével a gépek technológiája változott, ennek következménye lett, hogy a gépek mérete és ára rohamosan csökkent. 1981-ben megjelent az IBM PC,[27] majd ezt követte az IBM PC XT és később az AT változatok. Ezek a gépek kifejezetten személyi használatra szánt, jelentős teljesítményű gépek voltak. Ennek a folyamatnak a következménye lett, hogy az 1980-es évek közepére elérhetővé vált, hogy az embereknek akár a saját lakásukban is lehetett számítógépük, majd a 2000-es évektől megjelentek a kis méretű, kézben hordoható eszközök (pl. PDAk) később az okostelefonok is terjedtek[20]. Ezek az eszközök műszakilag digitális számítógépek.

A digitális számítógépekben használt mikroprocesszor technika fejlődésének eredményeként 2010-es évekre a fejlett világban a digitális számítógép az élet nélkülözhetetlen eszköze lett, a mindennapokban az okos eszközök használata, az IoT teljesen megszokottá vált.

ProgramvezérlésSzerkesztés

A digitális számítógépek egyik legfontosabb jellemzője, hogy programozottan működnek. Egy program határozza meg, hogy a számítógép az adatokkal milyen sorrendben milyen műveletek végezzen. Maga a program (elemi)utasítások sorozata. A számítógép értelmezi az utasítást, majd végrehajtja azt. Egy utasítás lehet egy matematika művelet elvégzése (pl. két szám összeszorzása), vagy lehetőség van arra, hogy bizonyos feltétel teljesülése esetén a program egy másik helyen folytatódjon (ún. feltételes ugró utasítás). Az minden számítógép egyik jellemzője, hogy milyen utasításokat tud végrehajtani.

A programvezérlés a digitális számítógépek megjelenése előtt már létezett. 1725-ben Basile Bouchon készített egy perforált (lukasztott) papír szalaggal vezérelt szövőszéket[28]. Basile megoldását többen tökéletesítették, végül Joseph Marie Jacquard, 1804-ben elkészítette az első, ipari termelésre is alkalmas lyukkártya vezérlésű szövőszéket[28]. Jacquard megoldása gyorsan terjedt, 1812-ben már 11 000 ilyen gép működött Franciaországban[29]. Az ő megoldása a szövés mintájának „programozására” szolgált. Charles Babbage az 1830-as években tervezett, és részben épített mechanikus számoló és számítógépeket[30]. Babbage ismerte Jacquard megoldását, és felismerte, hogy a lyukkártya alkalmas az általa tervezett analitikai gép[31] programjának tárolására[32]. A számológépek (számítógépek) programvezérlésének ötlete és kidolgozása Babbage nevéhez fűződik[30][33]. 1886-ban Herman Hollerith[34] egy olyan adatfeldolgozó rendszert készített amelyben az adatokat lyukkártyán tárolták. Hollerith rendszere alkalmas volt arra, hogy egy lyukkártya csomagból kiválogassa, illetve megszámolja azokat a kártyákat amelyeken a lukak meghatározott feltételeknek megfelelően helyezkednek el[35]. Hollerith 1896-ban megalapította a Tabulating Machine Company nevű cégét.[36] 1911-ben Hollerith eladta a cégét egy befektetőnek, amely után létrejött a Computing-Tabulating-Recording Company[37]. Ez a cég további átalakulások után 1924-ben[38] felvette az IBM nevet.

Később, amikor az 1940-es években sorra jelentek meg a korai elektromechanikus és elektronikus számítógépek a programvezérlés már ismert volt. Az első ilyen gépeknél a program módosítása kapcsolók mozgatásával és a gép áthuzalozásával történt. Például még az ENIAC esetén is dugasztáblákon vezetékek áthelyezésével,illetve kapcsolókkal lehetett a programot elkészíteni és módosítani[39][40]. Ebben az időszakban többen kísérleteztek azzal, hogy az elektronikus számítógépek esetén is programot, az adatokhoz hasonlóan lyukkártyán, elektronikusan tárolják. Neumann János a First Draftban ismertette annak az elméletét, hogy egy számítógép programját hogyan lehet ugyanúgy tárolni mint az adatokat, és javaslatot tett arra, hogy a program a gép memóriájában az adatokkal egységesen legyen tárolva.

Programok elkészítése (programozás)Szerkesztés

A számítógépek programozása nem más, mint az a folyamat amikor a programozó elkészíti a programot. Ez egy összetett, sokszor több szakember közös tevékenysége.[41] A legelső számítógépek esetén a programozás még részben huzalozással történt. Később a programot lyukkártyákon helyezték el. Az 1940-es évek közepére kialakult az ún. tárolt programú számítógép, amely gépeknél a program a számítógép memóriájába került[9]. A korai a gépeknél a programozás még az ún. gépi kódban történt. A gépi kódú program egy olyan program, amelyet a számítógép processzora közvetlenül képes végrehajtani[42]. Ennél a programozási módszernél a program egy lépése egy olyan elemi utasítás, amelyet a processzor végre tud hajtani. A gépi kódú programozás során az utasításokat bináris kódban kell megadni, annak megfelelően, hogy milyen az adott processzor utasításkészlete. Azt nagyon korán felismerték, hogy a gépi kódú programozás bonyolult, sok hibalehetőséget hordoz ezért már az 1950-es évek legelején próbálkoztak az első ún. magas szintű programnyelvek megalkotásával. Az első sikeresen működő fordítóprogram (angol elnevezéssel compiler) Grace Murray Hopper vezetésével készült el 1952-ben[43][44] egy UNIVAC I típusú számítógépre. Ez a program képes volt egyszerűbb matematika leírásokat bináris kódra fordítani, ők ezt a programnyelvet A-0-nak nevezték. Az 1950-es évek elejétől számtalan programozási nyelv keletkezett. Az első szabványban rögzített nyelv a Fortran 66 volt, ANSI X 3.9 1966 Fortran 66 jelzettel jelent meg,[45] a Fortran programozási nyelv története 1954-ben kezdődött, az első kereskedelmi változata 1957-ben az IBM fejlesztésében jelent meg[46].

Programozási nyelvekSzerkesztés

A programozási nyelvek a számítógépes programok elkészítésének megkönnyítésére létrehozott mesterséges nyelvek. A programozási nyelvek egy kapcsolatot biztosítanak az emberi gondolkodás és a gép által végrehajtható gépi kódú utasítások között. A magas szintű programnyelvek lehetővé teszik, hogy egy program utasítás hatására a gép több száz vagy több ezer elemi, gépi utasítást úgy hajtson végre, hogy nem kell minden egyes utasítást leírni[47]. Egy adott programozási nyelv szabályai szerint elkészített programot (más néven forrás program) egy fordító program alakítja át gépikódú utasítások sorozatáva. Ennek a lépésnek az eredményeként jön létre a futtatható program[47][42]. Egy másik lehetőség a magas szintű programozási nyelvek használatára az ún. interpreter használata. Ebben az esetben a programnyelv értelmező programja fut az adott számítógépen és az adott programnyelven megírt utasításokat sorról sorra értelmezi és hajtatja végre a számítógéppel[42]. A magas szintű programnyelvek további előnye az ún. hordozhatóság, azaz ellentétben a gépi kódú programmal, egy adott típusú számítógépre elkészített program egy másik típusú számítógépen is használható (esetleg egy minimális átalakítás szükséges lehet)[42].

A kezdetektől a számítástechnika fejlődésével több ezer programozási nyelv alakult ki, és napjainkban is folyamatosan születnek új programozási nyelvek.[48][49] Vannak köztük általános célú programozási nyelvek, amelyek több típusú feladatra használhatóak, vannak speciális probléma orientált nyelvek, amelyek egy adott típusú feladat megoldására alkalmasak (pl. statisztikai számítások). Egy adott feladat esetén a programozónak lehetősége van az adott feladatra legmegfelelőbb nyelv kiválasztására.

FelépítéseSzerkesztés

 
A Harvard architektúra elméleti felépítése

A digitális számítógépek leggyakrabban alapvetően három elv szerint épülnek fel. Ezeket alapvető architektúrának nevezik.

  1. Neumann-architektúra
  2. Harvard-architektúra
  3. Módosított Harvard-architektúra

A három felépítési módszer között a különbség a memória kezelésében, elérésében van. A Neumann-architektúra esetén a számítógép memóriájában nincs megkülönböztetve a program és az adat, ugyanabban a memóriában, azonos bináris formában kerülnek elhelyezésre a program utasítások gépi kódban, és az adatok a megfelelő kódolásban. A Harvard-architektúra esetén a program és az adat két egymástól független memóriában kerül elhelyezésre. A program memóriában a program utasítások, míg az adat memóriában az adatok kapnak helyet. Ez utóbbi lehetővé teszi azt, hogy a program utasítások szóhossza és az adatok szóhossza eltérő legyen, valamint biztosítja, hogy a program nem tud adatként viselkedni ennek következtében a program nem képes megváltoztatnia saját magát[50]. A módosított Harvard-architektúra lehetővé teszi azt, hogy egy program futás közben módosítani tudja a programmemória tartalmát.

Tisztán Harvard-architektúrás gépeket elsősorban beágyazott rendszereknél, mikrokontrollereknél alkalmaznak.

A korszerű mikroprocesszorok gyakran egy „hibrid” megoldást használnak. a belső gyorsítótár kezelésében a módosított Harvard-architektúra szerint működnek, a gyorsítótárakban elkülönül a program- és az adat-gyorsítótár, a processzoron belül két független buszrendszer csatlakozik a két gyorsítótárhoz, azonban a processzoron kívül a számítógép memóriájának elérése a Neumann-architektúra szerint történik[51].

Az eredeti architektúrákhoz képest az 1950-es évek végétől, 1960-as évek elejétől az Aritmetikai és Logikai egységet (rövidítve ALU) és a vezérlő egységet összevontan központi egységnek vagy angol rövidítéssel CPU-nak kezdték el nevezni, és azóta is így használják.

Alapvető működésSzerkesztés

 
Neumann architektúrás CPU egyszerűsített vázlata[52]

A korszerű digitális számítógépek alapvető működése elválaszthatatlanul összefügg a gépek felépítésével. A felépítést és az alapvető működést összefoglalóan először Neumann János írta le a First Draft of a Report of the EDVAC[11] című munkájában. A három bemutatott alapvető architektúra közti különbség a számítógépek alapvető működősében alig okoz eltérést. Neumann munkájának közzététele óta kisebb módosításokkal szinte az összes digitális számítógép alapvető működése ennek megfelelő. A módosítások leginkább egyszerűsítések, és egyes részegységek összevonását jelentette. A tranzisztoros számítógépek megjelenésének idejére már nagyjából teljesen kialakult a mai felépítés[53] . A nagy változást a mikroprocesszorok megjelenése hozta, mert ez lehetővé tette, hogy fizikailag egy alkatrészbe legyen összeépítve a számítógép legtöbb részegysége[26]. Később az egycsipes mikrogépek (más néven mikrokontroller) megjelenésével fizikailag egy darab alkatrész képes egy teljes számítógépet tartalmazni[54].

RegiszterekSzerkesztés

A CPU-ban az adatok (átmeneti) tárolására szolgálnak a regiszterek[55]. Az, hogy egy adott CPU-ban hány darab, milyen hosszúságú regiszter kerül kialakításra a CPU típusától függ, és nagymértékben meghatározza a CPU jellemzőit. Van néhány olyan regiszter amely szinte a legtöbb CPU-ban előfordul.

  • Utasításszámláló: Más néven programszámláló, angol elnevezéssel Program Counter vagy rövidítve PC[56]. Ez a regiszter tartalmazza, hogy melyik memória címen található az aktuális vagy a következő utasítás. Hogy a két érték közül melyiket tartalmazza az a CPU kialakításától függ. Ez a regiszter minden utasítás végrehajtásakor eggyel növekszik, ugró utasítás esetén ebbe kerül kiszámításra az ugrás helye. Régebbi gépeken ezt a gép valamelyik kezelő szervén megjelenítették[57].
     
    IBM 701 számítógép előlapja 1952-ből. A középső részen a kijelzősorok különböző regiszterek tartalmát jelenítik meg. Baloldalt alul látható az utasításszámlálóinstruction counter és az utasításregiszter
  • Utasításregiszter: Angolul Instruction register. A CPU egyik lényeges regisztere. Az utasításlehívás[55][58] (angolul fetch) után ebbe a regiszterbe kerül az a gépi utasítás amelyet végre kell hajtani[55]. A gépi utasítás felépítése, szóhossza az adott CPU típusától függ. Az utasításregiszterbe csak az ún. gépi kódú utasítás kerülhet. Az utasítás regiszter közvetlenül csatlakozik az utasítás dekóderhez, amely ténylegesen értelmezi az utasítást, majd ennek megfelelően kerül végrehajtásra. Az utasítás dekóder alapvetően a vezérlő egység (CU) működését befolyásolja.
  • Akkumulátor regiszter: vagy röviden akkumulátor. Az akkumulátor regiszter az egy illetve két címes gépekkel jelent meg. Ez a regiszter tartalmazza az elvégezendő műveletek egyik operandusát, és felépítéstől függően gyakran az eredményt is.[55].
  • Általános célú regiszterek: Angol elnevezéssel General Purpose Registers vagy régebbi irodalmakban register file. Az általános célú regisztereket az aritmetikai és logikai műveletek operandusainak tárolásához; a cím számításhoz; illetve memória pointer műveletekhez lehet használni. Ezek a regiszterek közvetlenül elérhetőek a processzor számára[58][59].
  • Állapotregiszter: Ez a regiszter az ALU által elvégzett utolsó művelet eredményétől függő állapotjelzőket tartalmaz[58][59]. A pontos elnevezése a CPU típusától függ. Leggyakrabban a következő jelző biteket tartalmazza:
    • Átvitel (Carry): Jelzi, hogy a legmagasabb helyiértékű biten a művelet során átvitel keletkezett.
    • Zérús: Az utolsó művelet eredménye 0
    • Negatív: Az utolsó művelet eredménye negatív szám. Ez általában kisebb mint 0-t jelent.
    • Nem negatív: Az utolsó művelet eredménye nem negatív, nagyobb vagy egyenlő mint 0.

Aritmetikai és Logikai egységSzerkesztés

A digitális számítógépekben ez az egység végzi el az utasítás által kijelölt matematikai műveletet. Talán ez az a részegység amely a leginkább megváltozott a korai számítógépekhez képest. Neumann János a First Draft-ban még CA–Central Arithmetical part-nak nevezi [11], és feladata a számítási műveletek elvégzése volt. Később egészült ki logikai műveletek elvégzésével, és alakult ki a mai elnevezése.[60] Korábban, illetve a nem Neumann elvű számítógép esetén nem volt külön egység. De minden számítógép tartalmazott valamilyen művelet végző egységet, korábban ezt a mechanikus számológépek összeadó műve alapján építették meg, ilyen volt pl. az ENIAC-ban alkalmazott ún. gyűrűs számláló, amely egyszerre volt képes tárolni az adatokat (regiszterként viselkedni) és az összeadás művelet elvégzésére is. Ezek a gépek még jellemzően decimális (tízes számrendszer) alapúak voltak[9].

Azt, hogy egy számítógép milyen matematikai műveleteket képes közvetlenül elvégezni azt az ALU képességei határozzák meg. A programozható számítógépek egyik előnye, hogy olyan műveleteket is el lehet végezni, amelyet az ALU önmagában nem képes, ilyenkor olyan algoritmust kell megvalósítani, amely minden egyes elemi műveletét már képes a gép elvégezni. Például a Z80 mikroprocesszor ALU-jában nem volt szorzás művelet[58], így ha valakinek erre volt szüksége meg kellett írnia a szorzó programot.

Az 1960-as évek végén, a 1970-es évek elején több cég készített olyan integrált áramköröket amelyek önállóan egy ALU funkcióját el tudták látni. Az egyik legismertebb ilyen a Texas Instruments által 1970-ben készített 74181[61] típusjelű 4 bites ALU volt, amelyet a 74182-vel lehetett kiegészíteni. Ez az integrált áramkör az összeadás, kívonás, shiftelés (egy bittel eltolás), összehasonlítás és további 12 aritmetikai műveletet, és 16 logikai műveletet volt képes elvégezni[61].

A legtöbb ALU két forrás operandussal végzi el a műveleteket, ezeket egy-egy regiszter tárolja. A mai egycímes gépeknél az egyik operandus az akkumulátor regiszter, a másik egy átmeneti (temporális) regiszter[58][55].

Gépi utasítás felépítéseSzerkesztés

Egy gépi utasítás két részből áll. Az egyik rész az ún. műveleti[62] kód (angolul operation code vagy röviden op.code), a másik rész az operandus[55]. Az utasításkód határozza meg magát a végrehajtandó utasítást. Az operandus azt határozza meg, hogy milyen adattal kell elvégezni a műveletet. Ez lehet egy állandó (konstans); egy, vagy több memória cím; belső általános célú regiszter; vagy egy ugró utasításnál az a cím ahol folytatni kell a program végrehajtását. A cím rész a processzortól függően több részből állhat. Leggyakrabban 4 címzési módszert használnak[63]:

  1. Nulla címes felépítés: Az utasítás nem tartalmaz külön címet. Az elvégzendő műveletek operandusait egymás után az ún. stackben helyezik el, majd a kijelölt művelet elvégzése után az eredmény szintén a stackbe kerül.
  2. Egy címes felépítés: Az utasításkódhoz egy cím kapcsolódik. Ilyenkor az elvégzendő művelet egyik operandusa mindig az akkumulátor regiszter, a cím azt a memória címet (vagy regisztert) határozza meg ahol a másik operandus található. Az így megcímzett adat az ALU átmeneti regiszterébe kerül. Az eredmény általában az akkumulátorba kerül.
  3. Két címes felépítése: Az utasításhoz két cím tartozik. Ez a két cím a két operandus címe. A két forrás cím által meghatározott helyről az ALU két átmeneti regiszterébe kerül az adat. Az eredmény vagy a két cím közül az egyikbe kerül vissza írásra[63], vagy ritkábban (pl. a Razdan-3 számítógép esetén az utasítástól függően [64]) az eredmény az ALU egyik átmeneti regiszterébe kerül.
  4. Három címes felépítés: Az utasításhoz három cím tartozik. Az elvégzendő művelet két operandusának a címe. A két forrás cím által meghatározott helyről az ALU két átmeneti regiszterébe kerül az adat. Az eredmény a harmadik cím által meghatározott helyre kerül.

Utasítás feldolgozásSzerkesztés

A digitális számítógépek programozott működésének alapja az utasítás feldolgozás. A program egyes utasításait a CPU-nak fel kell dolgoznia, és az utasításoknak megfelelő műveleteket kell elvégeznie. Ez az alapvető működés mód következik a programvezérelt működésből[56]. Az utasítás feldolgozást a vezérlő egység három része végzi végzi. Neumann János a First Draft-ban CC–Central control part-nak nevezi [11]. Egy mai mikroprocesszor esetén ennek felépítése[65]:

  • Utasítás regiszter (angolul: Instruction register)
  • Utasítás dekóder (angolul: Instruction decoder)
  • Vezérlő egység (angolul: Control Unit, rövidítve: CU)

Az utasítás feldolgozás lépései[66]:

  1. Utasításlehívás (fetch): Az utasításszámláló regiszter által kijelölt a memória címről a következő gépi utasítás beolvasása az utasításregiszterbe. Ez az a pont ahol lényeges eltérés van a Harvard- és a Neumann-architektúrás gépek között. A tisztán Neumann-architektúrás gépek esetén mind a program utasítások, mind az adatok közös memóriában az ún. operatív memóriában találhatóak. A Harvard-architektúrás gépek esetén a program utasítások és az adatok két külön álló memóriában találhatóak. Az előbbiek az ún. program memóriában, az utóbbiak az adat memóriában[50]. Korszerűbb processzorok esetén gyakori, hogy ezt a lépést az előző utasítás végrehajtásának idejében hajtja végre a processzor, így működnek pl. az Intel processzorai, ahol ezt pre-fetchnek nevezik[59].
  2. Utasítás dekódolása: A processzor felépítésétől függően ez lehet huzalozott (angolul hardwired) vagy mikroprogramozott. Jellemzően a korai processzorok (elektroncsöves, és tranzisztoros) valamint egyes RISC processzorok esetén találkozunk huzalozott, míg az újabb (integrált áramkörös, illetve mikroprocesszoros gépek) valamint a CISC processzorok esetén elterjedtebb a mikroprogramozott módszer.[67] Vannak olyan processzorok, és utasítástípusok amelyeknél az utasítás dekódolását egy külön lépés követi, az operandusok betöltése a műveleti regiszterekbe.
  3. Az utasítás végrehajtása: Az utasítás által meghatározott művelet tényleges elvégzése. Ezt a legtöbb utasítás esetén az ALU végzi el.

Számítógép – emberSzerkesztés

A számítógépeket elsősorban azért alkották meg, hogy a bonyolult, sok munkát jelentő számításokat gépesíteni lehessen, ezzel megkönnyítsék az emberek munkáját. H.H. Goldstine a Számítógép Pascaltól Neumannig c. művében így ír erről: „A történet szerint Herschel[68] és Babbage[69] egy alkalommal csillagászati számításokat ellenőriztek, amikor Babbage mérgében állítólag azt mondta:»adná Isten, hogy ezeket a számításokat a gőzgéppel lehessen elvégezni!«[70]. Mindig fontos szempont volt, hogy a számítógép ki tudja szolgálni azt az embert aki azt használja. A kezdeti időszakokban a számítógépek kezelése rendkívül bonyolult volt, ahogy fejlődtek a számítógépek vált egyre egyszerűbbé azok kezelése. Az első operációs rendszerek megjelenése egy fontos lépés volt, hogy a számítógépek kezelése egyszerűsödjön.[71] Ken Thompson 1969-ben elkészítette a UNIX operációs rendszer első változatát, célja egy egyszerűen használható operációs rendszer elkészítése volt[72]. Az 1970-es években megjelentek az ún. mikroszámítógépek. 1977-ben megjelent az első otthoni felhasználásra készült gép is (angolul home computer)[73]. Ezek már bárki számára elérhető, egyszerűen kezelhető gépek voltak. Még 1977-ben Ken Olsen a DEC társalapítója mondta: „Nem látom értelmét, hogy az emberek az otthonukban számítógépet akarnának[74]. Ettől az időszaktól kezdődően nagyszámban jelentek meg olyan gépek és operációs rendszerek amelyek már a hétköznapi embereket célozták meg. A 2000-es évekre egy általános számítógép és a hozzá tartozó operációs rendszer alapvető kezelése teljesen egyszerűvé vált, semmilyen szakértelmet nem igényel, ilyen rendszerekkel pl. az okos eszközöknél, okos telefonoknál találkozhatunk. Ez nem jelenti azt, hogy minden számítógép kezelése egyszerű a 2000-es évektől kezdődően, mert léteznek olyan gépek amelyek kezelése, üzemeltetése komoly szakértelmet igényel, ezek a gépek első sorban a különböző szerverek, illetve egyedi cél számítógépek.

A digitális számítógépek kialakulásakor az emberi gondolkodás módot próbálták utánozni. Neumann János a First Draft c. munkájában is több helyen kiemeli ezt a párhuzamot. Erről a párhuzamról 1958-ban jelent meg Neumann János The Computer and the Brain című munkája[75].

Digitális számítógépek kezeléseSzerkesztés

Az ember–számítógép kapcsolat alapvető fontosságú a számítógépek kezelésében. A számítógép céljának, és felépítésének megfelelően kell kiépíteni ezt. Beágyazott rendszerek esetén a Human Machine Interface (rövidítve HMI) biztosítja a kezelő és a gép közti kapcsolatot[76]. Ilyen pl. egy automata mosógép esetén az egyre fejletebb, sokszor már érintőképernyős kezelő felület. Az általános célú számítógépek esetén a számítógép-kezelő közti interakciót a felhasználói felület biztosítja. Kezdetben ez nagyon egyszerű volt, kapcsolók, nyomógombok, visszajelző lámpák alkották. A programok, adatok bevitele lyukkártyán, lyukszalagon történt[57]. Később megjelent az ún. konzol írógép. A konzol írógép átalakított távgépíró volt (más néven telexgép), elterjedten használt készülék volt hosszú időn keresztül, a billentyűzeten beírt parancsokat a gép értelmezte, és képes volt a gép a benne lévő papírra nyomtatni az üzeneteit[77]. Ezek használatát a képernyős megjelenítők szorították ki, az 1960-as évektől kezdődően. A képernyős megjelenítők kezdetben csak szöveges üzenetek megjelenítésére voltak képesek, majd fokozatosan megjelentek a grafikus megjelenítők is, ezeket kezdteben CAD/CAM munkához használták. A ma elterjedten használt grafikus felhasználói felület (rövidítve GUI) az 1960-as évek legvégén, az 1970-es évek elején kezdett kialakulni[78]. A GUI megjelenése, és elterjedése nagyban hozzájárult ahhoz, hogy az 1990-es évekre a számítógépek kezelése egyszerűbbé vált, ennek egyik fontos szereplője volt Steve Jobs és Steve Wozniak illetve általuk alapított Apple Computer cég.

Az utasítások fajtáiSzerkesztés

Valamely feladat numerikus megoldásának programja utasításokból áll:

  • számítási utasítások
  • szervezési utasítások
  • logikai utasítások

Számítási utasításokSzerkesztés

Elrendelik, hogy az automata elvégezze az alapműveleteket.

Szervezési utasításokSzerkesztés

Gondoskodnak a számítóautomata egységei közötti információtovábbításról; például a tárolókban elhelyezett számokat, összekapcsolásuk előtt, az aritmetikai egységbe, vagy a részeredményeket a memóriaegységbe kell szállítaniuk.

Logikai utasításokSzerkesztés

A valóságos programozási munkát nyújtják.

Gyakori pl., hogy a számítás menetét nem lehet programelágazás nélkül megadni; az automatának egy részeredmény értéke szerint kell eldöntenie, hogy több programelágazás közül melyik szerint kell továbbdolgoznia.

Egy másodfokú egyenlet megoldásánál pl., a diszkrimináns értékétől függően, három különböző előírás van; az iterációs eljárás befejezését az jelzi, hogy mikor értük el a számítandó mennyiség előre megadott pontossági határát. Az ilyen programelágazások feltételei mindig kérdésként fogalmazhatók meg.

Az információk előállításaSzerkesztés

Az utasításokat, illetve a számokat majdnem minden modern számítógépbe kódolva, kettes számrendszerben táplálják be. A kódolást azonban maga a gép végzi el a számjegynek megfelelő gomb lenyomásakor. A kódolásnál a kód, amit kulcs útján állítanak elő, egy hozzárendelést jelent a jelek, illetve jelsorok két csoportja között. (Lásd: szimbólum) A Morse-kód például az ábécé minden betűjéhez meghatározott módon egy "pontokból" és "vonásokból" álló jelsort rendel hozzá. Állandó szóhosszúságú kódnál a kettes helyi értékek szükséges száma a kódolandó jelek számának teljes mennyiségéhez igazodik. Ha például a következő hat utasítást kell duális alakban kódolni: összeadás (+), kivonás (-), szorzás (.), osztás (:), diszjunkció ( ) és konjunkció ( ), akkor három bináris helyi értékre van szükség.

Szám előállítása a számítógépbenSzerkesztés

Az elektronikus számítógépben való feldolgozásra a tízes rendszerbeli számokat bináris alakban kódolják, például a szokásos kettes számrendszerben. Egy tízes rendszerbeli szám kettes rendszerbe való átalakítását konvertálásnak, az ellenkező eljárást pedig visszakonvertálásnak nevezik. A korszerű digitális számítógépeknek általában állandó szóhosszúsága van, például a ZRA 1 szóhosszúsága 48 bit. A szóhosszúság határozza meg a numerikus számítás pontosságát, mert hosszú számításoknál – ahol sok a mellékszámítás is – a kerekítésből származó hibák inkább előbukkannak, ha kicsi a szóhosszúság.

A konvertálással kapcsolatos számítási műveleteket a gép a számok betáplálása közben maga végzi el. A betápláláskor a decimális számnak már bináris alakban kell lennie, mert a bemenőegység csak két különböző állapotot tud észlelni. Rendszerint minden decimális számjegyet külön kódolnak, és a 10 számjegy mindegyikéhez – a bináris rendszerben – 4 bitre van szükség, ez egy számnégyes vagy bináris tetrád. Így   = 16 jelet lehet összesen kódolni, ami nincs teljesen kihasználva. Például a 296 számot a következőképpen állítjuk elő:   =  ,   =  ,   =  ; így   =  , ahol a zárójelek melletti indexek a számrendszert jelentik. A szokásos kettes számrendszerben a   =  . Az első alakból a számítógép rendkívül egyszerű módon, tisztán duális műveletekkel el tudja végezni a tulajdonképpeni konvertálást.

A   szám konvertálásának példája; a félkövér számok a kettes számrendszerben értendők

művelet részeredmény művelet részeredmény
   
         
       
       
       
       
eredmény   eredmény  

A   =  -vel való szorzás, egy duális alakban kódolt decimális számjegy minden összeadásánál tekintetbe veszi a helyi értéket. A számnégyesek alakjában való duális kódolás hátránya, hogy több bináris helyi értékre van szükség, mint a szokásos duális előállításnál, minthogy a számnégyesek nincsenek teljesen kihasználva; példánkban 12 bináris hely van a kettős számrendszerbeli szám 9 helyével szemben.

A tizedesvessző feltüntetéseSzerkesztés

Mivel a szám értékét csak a számjegyek sora és a tizedesvessző határozza meg, a számítógépnek információt kell kapnia a tizedesvessző helyéről. Megkülönböztetünk:

  • lebegőpontos és
  • fixpontos számokat.

A lebegőpontos tizedes törteknél a programozó betáplálja a bemenőegységbe a számjegyek egymásutánját, és a tizedesvessző helyének jellemzésére 10-nek azt a kitevőjét, amellyel a számot 10 hatványaként előállítja.

Számok ábrázolása normált alakban

szám normált alak számjegyek kitevő
23,450 60   2 345 060 2
9 870 100   9 870 100 7
0,038 000   38 -1

Ehhez meg kell állapodnunk például abban, hogy a 10 hatványát a számnak mindig abból az alakjából olvassuk le, amelyben a tizedesvessző előtt 0, a tizedesvessző után pedig 0-tól különböző számjegy áll. Ezt a műveletet normálásnak nevezik, és a azám így kapott alakját normált alaknak, ami nem egyezik a szám normálalakjával.

Ezek után a számítógéppel csak a számjegyek sorrendjét és 10 hatványkitevőjét kell közölni, például 234 506 és 2 a 23,4506 számot jelenti.

A fixpontos tizedes-törteknél a tizedesvessző mindig ugyanazon a helyen van, például minden 1 és 10 közötti számnál az első számjegy után. Ha tudjuk, hogy valamely feladat megoldásánál valamennyi adat nagysága egy meghatározott tartományba esik, akkor előnyösen alkalmazható e számok fixpontos előállítása. Ha minden fizetés 10 000 forint alatt van, akkor egy-egy szám leírásához 6 decimális helyi érték elég.

A fixpontos előállításnak az az előnye, hogy a gépnek nem kell információt kapnia a tizedesvessző helyéről, hátránya viszont, hogy a vesszőt az embernek kell a megfelelő helyre kitennie.

A legtöbb modern számítógép mind a két szám-előállítási lehetőséggel rendelkezik. Egyes gépek, ha arra a programban külön megkötés nincs, az adott feladat megoldásánál automatikusan a kedvezőbb formát választják.

A számítógép építőköveiSzerkesztés

Az elektronikus digitális számítógépek információt hordozó legkisebb építőkövei, a memóriaelemek, két különböző állapotot vehetnek fel. Ezekből épülnek fel a legkisebb, információkat összekapcsoló egységek, a kapcsolási elemek, amelyek a kapcsolási algebrából ismert logikai függvényeket realizálni tudják.

Memóriaelemek például a kapcsolók, a jelfogók, az elektroncsövek, illetve a tranzisztorok, a "flip-flop" és a mágneses anyagokból készült elemek; illetve modern gépekben a bonyolult hálózatokat egyetlen alkatrészként megvalósító integrált áramkörök.

A mágneses elemek tipikus képviselője a ferritgyűrű, amelynek külső átmérője 2 mm vagy jóval kevesebb. A ferrit ferromágneses kerámia, hiszterézis-görbéje közel derékszögű.

Számítógépek néhány tárolóelemének és az emberi agy neuronjainak t kapcsolási ideje másodpercben, V térfogata  -ben

tárolóelem t V
relé   10…100
elektroncső   10…100
tranzisztor   1…10
ferritgyűrű   0,5…5
neuron    

Két stabilis állapot közötti átmenet időtartamát kapcsolási időnek nevezik.

Ezt és egyes memóriaelemek térszükségletét szokták a neuronnal, az emberi agy alapelemével összehasonlítani. Az aritmetikai egységben a kapcsolóelemeket, illetve a memória-elemeket a kapcsolási algebra szabályai szerint oly módon kapcsolják össze egy kapcsolóműbe, hogy a teljes kapcsolás el tudja látni az alapműveletek végrehajtásának feladatát.

Az építőkövek együttműködéseSzerkesztés

A számítógépben minden egyes művelet meghatározott időpontban zajlik le. Egy órafrekvencia-generátor meghatározott frekvenciájú elektromos impulzusokat bocsát ki, ennek alapján állapítja meg a vezérlőegység azokat az időpontokat, amikor előírt szerkezeti csoportok egymással kapcsolatba lépnek az utasítások végrehajtására. Olyan esetekben, amikor a feladatok a "valódi" – például helyi – időhöz rögzítettek, akkor az óragenerátort külső időalaphoz szinkronizálják. Ilyen eset például a forgalomirányítás. Az órafrekvencia (vagy ütemidő) elsősorban a kapcsolóelemek működési idejétől függ; a ZRA 1-nél például 100 kHz.

Programozás és programnyelvekSzerkesztés

Mielőtt egy probléma numerikus megoldását a digitális számítógépre bíznánk, előkészítő munkára van szükség. Először is feltárják a problémát, vagyis a feladatot matematikai alakban fogalmazzák meg. Először is a fontosabb lépéseket és a lépések sorrendjét a folyamatábrán rögzítik. Az (1) problémakitűzésből absztrakció útján nyerik a (2) szakmai modellt, amelyet azután matematikai modellé tökéletesítenek. Az ebben lefektetett matematikai adatkitűzéshez megfelelő megoldási módszert (4) kell választani, ez pedig az (5) durva programozáson át a (6) programhoz vezet. Az összes programutasítás és a számok kódolása (7) után (8) ellenőrzik a programot. Csak ezután lehet a számítógépet számolásra beindítani (9) és a megoldást kiszámítani (10).

A probléma feltárásaSzerkesztés

A probléma feltárása az ismertetett folyamatban az (1)-től (4)-ig terjedő lépéseket foglalja magába. Ha a feladat például az időjárás előrejelzése, akkor a következő lépések szükségesek: (1) a meteorológus felveti a problémát, amely legtöbbször még általános és pontatlan formában van (2). Az időjárás előrejelzésnél a következő napok hőmérséklete és csapadéka érdekel bennünket.

A paramétereket, mint a nyomás, a hőmérséklet, a levegő nedvessége, ismert fizikai összefüggések alapján foglalják össze a modellben (3). Ezután dolgozzák ki a matematikai modellt, amelynek során a kvantitatív összefüggések matematikai leírására törekednek: ez az időjárás-előrejelzés esetében parciális differenciálegyenletekkel történhet, és itt szoros együttműködésre van szükség a matematikusokkal (4). Majd az egyes matematikai képleteket aritmetikai műveletekre bontják, és a megfelelő logikai utasításokat elkészítik a gép számára. Röviden: elkészítik az algoritmust.

Algoritmus alkalmazásaSzerkesztés

A programozásban ezután az algoritmust lefordítják a gép nyelvére. A (7) és (8) lépésekben jelzett munkálatokat már segéderők is elvégezhetik.

Először (5) a durva programozást készítik el, hogy áttekintést kapjanak a feladatról. A bemenőmennyiségeket és a legfontosabb számítási lépéseket folyamatábrán tüntetik fel, esetleg a részeredményektől függő döntésekkel együtt. A folyamatábra jobb megértése céljából végezzük az  ,  , …,   10 szám összeadását, illetve az   összeg képzését ezzel a technikával. Az 1. rekeszben az i változó értéke 1, a 2. rekeszben pedig a H segédváltozó értéke 0 lesz. A 3. rekeszben H-hoz hozzáadódik   értéke; így kapjuk minden egyes lépésnél a H segédmennyiség új értékét. A 4-ben felteszik a kérdést, vajon az i futóindex elérte-e már az összes számot. A tagadó válasz az 5. rekeszhez vezet, ahol az i index eggyel nő. Ezután 3-ban megtörténik a következő összeadás. A 3., 4. és 5. rekeszek többször szerepelnek, ciklust képeznek, amely csak akkor hagyható el, amikor mind a 10 számot összeadtuk, és a 4-ben feltett kérdésre igenlő a válasz. Végül 6-ban az S változóhoz hozzárendeljük H értékét.

Gépi programSzerkesztés

A folyamatábra alapján gépi programot állítanak fel. E célból a folyamatábra utasításait elemi előírásokká kell felbontani. Ezt a folyamatábra 3. rekeszéhez kapcsolódva magyarázzuk meg, feltéve, hogy az   számok tíz tárolóhelyen találhatók, és a H segédmennyiség részére is fenntartunk egy tárolóhelyet.

A folyamatábra 3. rekeszében adott utasítás elemi műveletekre bontása

1. utasítás: Vidd át  -t a memóriarekeszből az 1. regiszterbe
2. utasítás: Vidd át H-t a memória rekeszből a 2. rekeszbe
3. utasítás: Add hozzá a 2. regiszter tartalmát az 1. regiszter tartalmához, és az eredményt tárold az 1. regiszterben
4. utasítás: Az 1. regiszter tartalmát vidd át H memória címére

Az 1., 2. és 4. utasítások átviteli utasítások, és így szervezési utasítások, a 3. utasítás számolási utasítás. Logikai utasítás a 4. rekeszben feltett kérdés megválaszolásánál léphetne fel. Mivel a számítógép csak binárisan kódolt információkat tud fogadni, a műveleti jeleket még kódolni kell, vagyis a 0 és 1 jel valamilyen sorozatává kell átalakítani.

A mai (1973-as) gépek közül igen sok megérti a feladatot a szokásos matematikai formában. Ezért ma már az egyszerű, logarléc szintű számítást is érdemes géppel végeztetni, ha van a közvetlen közelben, tehát azonnal elérhető bemenőegység.

Ezért fejlődnek ma az "időosztású" (time-sharing) rendszerek, amelyekben egyetlen gépnek sok kezelőpultja – végződése – van kihelyezve a mérnökök, kutatók, tisztviselők munkaasztalaira, s mindegyikük minden feladattal – kicsivel és naggyal – ugyanabban az időben a géphez fordulhat.

Ugyanezért terjednek rohamosan az igen pontos, gyors miniatűr számítógépek – az asztali- és zsebkalkulátorok.

Az elektronikus számítógépek sebességeSzerkesztés

Az elektronikus számítógépek számolási sebessége igen nagy, és egyre újabb alkalmazási területeket hódítottak meg; olyan feladatokról van szó, amelyeknek megoldása nélkülük évtizedeket vagy még annál is több időt venne igénybe. Például egy 1 000 ismeretlenes egyenletrendszer megoldásához 1 000 millió számítási műveletre van szükség. 1960 körül már voltak olyan berendezések, amelyek másodpercenként néhány százezer összeadást végeztek el, 1966-ban a csúcsteljesítmény 8 millió összeadás volt másodpercenként, illetve 5 millió szorzás másodpercenként (az IBM 360-as rendszerének 90-es modellje). 1968-ban olyan számítógépeket állítottak üzembe, amelyek 16,6 millió összeadást, illetve 5,5 millió szorzást tudtak másodpercenként elvégezni.

Más területeken (vezérlések, irányítás stb.) a döntéshez, beavatkozáshoz rendelkezésre álló idő alatt a szükséges pontossággal a kívánt adatokat csak az elektronikus számítógépek műveleti sebességével lehet előállítani, még akkor is, ha kevés és egyszerű számítást kell végezni – de például a másodperc törtrésze alatt (automatikus repülés irányítása stb.)

A műszaki változtatások közé tartozik a rendkívül kicsi kapcsolási idővel dolgozó építőelemek kifejlesztése; ilyenek például a félvezető építőelemek, kapcsolási idejük 0,7 nanoszekundum. Ezzel a gép működési sebessége igen megnőtt.

A miniatürizálással rövidítik a vezetékek hosszát. Az elektromos impulzusoknak, amelyek a számítógép egyes kapcsolási elemei és szerkezeti csoportjai közötti együttműködést vezérlik, 30 cm hosszú út megtételére egy nanoszekundum (  s) időre van szükségük; például a legkisebb tranzisztorokat és diódákat, amelyeknek felülete 0,6  , nyomtatott áramkörökkel kötik össze. Ilyen módon egy 2 cm átmérőjű szilíciumlemezen 500 áramkört lehet felépíteni, amelyek mindegyike 15 tranzisztor és 13 ellenállás funkcióját végzi, beleértve összekötő vezetékeit is. 1972-ben a HP – 35 zsebkalkulátor egyetlen, néhány mm²-es szilíciumkristályába 6 000 tranzisztornak megfelelő áramkört építettek be.

A vezérlési változtatások közé tartozik a párhuzamos gépekre való áttérés; ezeknél – ellentétben a soros gépekkel – minden bináris helyi érték feldolgozása egyidejűleg történik. Ezek a gépek gyorsabban dolgoznak, de előállításuk drágább.

A multiprogramozásnál egyidejűleg több programot hajt végre a gép. Az egyiket azalatt dolgozza fel, amíg a mágnesszalagról új számok érkeznek az operatív tárolóba, vagy pedig egy sor részeredményt kinyomtat a gép. A programokat ún. "felügyelő program" koordinálja. Ilyen módon a számítógépet jobban ki lehet használni.

Időigény és költségek; t – műveleti sebesség másodpercekben, L – napi teljesítmény számolási műveletekben, K – költség számolási műveletenként,  t – egy 30 ismeretlenes egyenletrendszer megoldásához szükséges idő

t L K  t
segédeszköz nélkül számoló ember 200 140 20 1500 óra
elektromechanikus asztali számológéppel dolgozó ember 25 1200 3 190 óra
asztali (programozható) elektronikus számítógéppel dolgozó ember 0,05 10^4-10^6 0,1-0,01 10-60 perc
közepes sebességű digitális számítógép 5-10^-5 10^9 0,002 1,5 s

MemóriakapacitásSzerkesztés

Mivel sok probléma feldolgozása nagy memóriakapacitást követel meg, nagyobb kapacitású, kisebb méretű és rövidebb várakozási idejű memóriákra törekednek. Ma már olyan vékonyréteg-memóriák léteznek, amelyeknél üveglemezekre    cm vastagságú ferromágneses rétegeket párologtatnak.

MegbízhatóságukSzerkesztés

A számítóberendezések gyakorlati felhasználásánál igen fontos megbízhatóságuk, illetve hiba- és meghibásodási arányuk. Míg az ENIAC-ban (1946) "csak" 17 000 elektroncső volt, egy modern adatfeldolgozó berendezésben közel félmillió tranzisztor, még több ellenállás és más elektromos alkatrész, továbbá mintegy 10 millió mágneses mag található. A fellépő hibákat különböző vizsgáló eljárásokkal és hibajelzésekkel azonnal észre lehet venni, illetve automatikusan korrigálni lehet. Különösen fontos ez a nagy adatmennyiséget tároló és kezelő óriás rendszerekben, például nagy bankok központi gépeinél.

Alkalmazási területekSzerkesztés

Még néhány évvel ezelőtt is az elektronikus számítógépeket felosztották adatfeldolgozó berendezésekre és tudományos számítások célját szolgáló automatákra. Az adatfeldolgozó berendezések nagy, viszonylag kevés számítási összefüggéssel rendelkező adattömegek feldolgozására szolgáltak, az utóbbiaknál viszont igen nagy volt a számolási sebesség, abból a célból hogy kevés bemenőadattal numerikusan oldjanak meg számításigényes problémákat.

A számítógépek modern fejlődése – ennek során az időosztás (time-sharing) és a multiprogramozás – feleslegessé teszi a kétféle feladatterület közötti megkülönböztetést.

Elvileg minden olyan problémánál alkalmazhatók számítógépek, amelyeknek megoldására algoritmusokat lehet felállítani. Alkalmazásuk nem annyira számítástechnikai kérdés, hanem arról szól, hogy az adott probléma matematikailag leírható-e. A fizikában és a műszaki tudományokban a folyamatok, tények és összefüggések matematikai leírása már régóta megoldott, ezért ezek a tudományágak voltak az elektronikus digitális számítógépek első alkalmazási területei.

De olyan nem numerikus feladatokat is előnyösen lehet számítógépre tenni, amelyeknél főleg számlálni (rendezni), összehasonlítani, kiválogatni vagy dönteni kell. Belátható, hogy nagy iparvállalatok, egész gazdasági ágazatok, sőt a népgazdaság egészének a tervezése és vezetése ilyen folyamatokból épül fel.

Ehhez hasonlóan egy üzem vezetésének egyik lényeges része az, hogy nagyszámú adatból kikeressék azokat, amelyek többek között például a kritikus helyzetet jelzik.

Egy nagy kórház automatikus betegellenőrzésénél például egy központi számítógép mérőberendezések útján adatokat gyűjt a betegekről, és jelzi a veszélyes állapotokat.

Hasonlóan történik a folyamatszabályozás az iparban. Itt a számítógép nemcsak a normáktól eltérő állapotokat jelzi, hanem arról is dönt, hogyan kell fellépni az eltéréseknél, és vezérli az ellenintézkedések végrehajtását.

Számító automatákat alkalmaznak még az orvosi diagnosztikában, a közlekedési eszközöknél és a szállodák helynyilvántartásánál, fordításoknál, közlekedésszabályozásnál, könyvtárakban és dokumentációs intézményekben, szerszámgépek numerikus vezérlésénél, automatikus tervezésnél és szerkesztésnél, tanító- és tanulógépek formájában az oktatásban, bérszámfejtésnél, a bankokban folyószámlák vezetésénél, repülőgépek forgalmának biztosításánál, időjárás-előrejelzésnél stb.

JegyzetekSzerkesztés

  1. a b Számítástechnikai Kislexikon
  2. Ez nem csak számítási feladatoknál, hanem fizikai munkafolyamatoknál is jelentkezik, és a munkabalesetek egyik gyakori oka lehet. Számítási feladatoknál "csak" téves/hibás eredményt okozhat, bár az így bekövetkező számítási hibáknak is lehetnek súlyos következményei.
  3. Pályaorientáció mindenkinek – mi elkísérünk az óvodától az egyetemig. Székesfehérvári Szakképzési Centrum. (Hozzáférés: 2021. december 25.)
  4. László Éva Lilla: Mitől válik pokollá a munkahely. hvg.hu, 2011. május 13. (Hozzáférés: 2021. december 25.)
  5. Toller és Kovács 2014
  6. a b Hajdu Ferenc
  7. https://en.wikipedia.org/wiki/Digit_(anatomy)
  8. Online Etymology Dictionary - Digital. (Hozzáférés: 2021. december 25.)
  9. a b c d e f g Goldstine 1980
  10. Ames 1990
  11. a b c d e First Draft
  12. Goldstine 1980 117. oldal
  13. Az alkotók közti elsőbbségről később (1971 és 1973 között) egy bonyolult perben döntött egy amerikai bíróság, és állapította meg Atanasoff elsőbbségét, és azt, hogy részben az ő eredményeit felhasználva dolgozott Eckert és Mauchly. Részletesen a perről és az ítéletről (angol nyelven): „Wednesday, Revised: The Trial (angol nyelven). Ames Lab SCL, 1997. október 29. [1998. január 31-i dátummal az eredetiből archiválva]. (Hozzáférés: 2021. december 25.)
  14. Goldstine 1980 143. oldal
  15. Goldstine 1980 167. oldal
  16. First Draft pl.: 1.1 bekezdés
  17. First Draft pl. 4.1 bekezdés
  18. First Draft 4.3 bekezdés
  19. Elsősorban az ekkor kiemelt kutatási területnek számító ballisztikus röppálya, illetve később az Interkontinentális ballisztikus rakéták fejlesztéséhez szükséges számítások elvégzése volt.
  20. a b Timeline
  21. John Orton 2006
  22. A mágnesdobos memóriát eleinte operatív tárnak használták, a ferritgyűrűs memória megjelenése után kezdték csak háttértárolónak használni, szintén volt egy rövid átmeneti időszak amikor mindkettőt használták.
  23. Magnetic Core Memory
  24. The chip that changed the world
  25. Intel4040
  26. a b c History of microprocessor
  27. August 12, 1981 IBM Introduces Personal Computer (angol nyelven). computerhistory.org. (Hozzáférés: 2021. december 26.)
  28. a b A Brief History of Figured Textile Production
  29. Goldstine 1980 31. oldal
  30. a b Holl András 1997
  31. Ha elkészült volna, az lett volna az első programozható, mechnaikus számítógép, azonban technológiai és finanszírozási problémák miatt Babbage egyik gépe sem épült meg.
  32. Goldstine 1980 31-33. oldal
  33. Goldstine 1980 31-33. oldal
  34. Herman Hollerith
  35. An electric tabulating system
  36. History of IBM 1890s. (Hozzáférés: 2021. december 28.)
  37. The Punchet Card Tabulator
  38. History of IBM 1920s. (Hozzáférés: 2021. december 28.)
  39. Programming the ENIAC
  40. ENIAC-Story
  41. Gregorics Tibor, Heizlerné Bakonyi Viktória, Horváth Győző, Menyhárt László, Pap Gábor Sándorné, Papp-Varga Zsuzsanna, Szlávi Péter, Zsakó László: A problémamegoldás lépései. Programozási alapismeretek. (Hozzáférés: 2022. január 6.)
  42. a b c d Tanuljunk meg programozni Python nelven
  43. Grace Murray Hopper 1
  44. Grace Murray Hopper 2
  45. American National Standard - Fortran. (Hozzáférés: 2022. január 7.)
  46. History of FORTRAN Language
  47. a b Martin Plonus 2020
  48. 2021-ben az egyik legbővebb listát gyűjtő weblap közel 9000 programozási nyelvet sorol fel.Online Historical Encyclopaedia of Programming Languages. (Hozzáférés: 2022. január 7.)
  49. Has the evolution of computer hardware influenced programming languages throughout history? Or vice versa?. (Hozzáférés: 2022. január 7.)
  50. a b Kann 2021
  51. Intel 11 Gen. Datasheet 56. old.
  52. Az ábra több forrás felhasználásával készült. 1: Z80 CPU architecture. (Hozzáférés: 2022. január 1.) 2: Vancsó Gyula. Mikroszámítógép elemek a tervezéshez, 3. kiadás, Budapest: Műszaki Könyvkiadó (1984). ISBN 9631060217 
  53. Ld. pl. IBM 7070 sorozat: Reference Manual - 7070 Data Processing System. (Hozzáférés: 2022. január 1.)
  54. The Guide to Microcontrolleres
  55. a b c d e f Vancsó 1983
  56. a b IBM 1953
  57. a b Razdan-3
  58. a b c d e Z80 User's Manual
  59. a b c Intel Software Developer's Manual
  60. Arithmetic Logic Units (ALU): An Introduction. (Hozzáférés: 2022. január 3.)
  61. a b 74181
  62. Más elnevezéssel utasítás kód
  63. a b Kann 2021-2
  64. Razdan-3 technikai adatok
  65. Z80 Product Brief
  66. Inst.dec.
  67. Mark Smotherman: A Brief History of Microprogramming. (Hozzáférés: 2022. január 4.)
  68. John Herschel(1792-1871) angol csillagász és matematikus
  69. Charles Babbage(1791-1871) angol matematikus
  70. Goldstine 1980 24. oldal
  71. Dr. Vadász 2002
  72. History of Unix. (Hozzáférés: 2022. január 14.)
  73. History of personal computers. (Hozzáférés: 2022. január 14.)
  74. Ez a kijelentés több magyar fordításban is megtalálható. Több forrás szerint angolul úgy hangzott:„There is no reason for any individual to have a computer in his home.” Ken Olsen obituary. (Hozzáférés: 2022. január 13.)
  75. Ez a munka már Neumann János 1957. február 8-án bekövetkezett halála után jelent meg. A megjelentetésben felesége Klara von Neumann működött közre.
  76. What is HMI or Human Machine Interface
  77. Teletype Machines. (Hozzáférés: 2022. január 16.)
  78. Jeremy Reimer: A History of the GUI, 2005. május 5. (Hozzáférés: 2022. január 16.)

ForrásokSzerkesztés