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. Analóg számítógépeket kevés helyen, speciális környezetben vagy célokra használnak. A kvantumszámítógépek 2022-ben még kísérleti stádiumban vannak, 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 digitális számítógépeket (régebbi névvel program vezérelt digitális számítóautomatákat vagy program vezérelt digitális számoló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 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 az emberi hibázás esélye csökkenthető.

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. Az orvosi kifejezések között a szintén latin digitalis jelentése „az ujjhoz tartozó”[6]. Hasonló a növényrendszertanban a Gyűszűvirág nemzetség latin digitalis elnevezése is. Feltételezhető, hogy a digit szó 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.[7]

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ó) 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[8]. 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[9]. Neumann János a korszakot meghatározó 1945. június 30-án közzétett First Draft of a Report on the EDVAC[10] című munkájában határozottan javasolta a bináris felépítést. Ettől az időszaktól kezdve a számítógépek kettes számrendszert használnak. 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.

Számítógép szóSzerkesztés

A számítógép szó a magyar nyelvben 1958-ban jelent meg. A magyar nyelvben egészen az 1970-es évek végéig nem volt egységes a kifejezés használata.[11] Korábban több kifejezést is használtak a számítógépekre, pl. számológép, számoló automata. Sokszor az 1970-es évek vége előtt megjelent magyar nyelvű szakcikkekben, szakkönyvekben sem mindig egyértelmű, hogy a mai értelemben vett számítógépről, vagy a számológépről van-e szó.

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, az 1940-as évek elejére az elektrotechnika, elektronika fejlődése lehetővé tette a számítástechnika gyors fejlődését is. 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.[14] Később Herman Heine Goldstine-t kinevezték a projekt felügyelőjévé.[15] Ez a gép 1945. december 10-re készült el. Goldstine 1944-ben az aberdeeni[16] 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, Neumann János haláláig, tartó közös munka.[17]

Neumann János szerepeSzerkesztés

 
A Neumann architektúra vázlata

Neumann 1944-ben, amikor először találkozott Goldstine-nal, a Manhattan terven dolgozott Los Alamosban. 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. Az EDVAC-cal kapcsolatos fejlesztési munkába szinte a kezdetektől bekapcsolódott Neumann János.[8] Ennek a fejlesztési projektnek a keretében Neumann egy összefoglalót készített First Draft of a Report of the EDVAC[10] 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 az elméleti 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. Ezt utóbb Neumann-architektúrának nevezték el. Neumann a First Draft-ban következetesen a digital computing system[18] (magyarul digitális számoló rendszer), digital computing device[19] (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 évtizedet á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 digitális 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 (más néven reléket) használták az elektromechanikus digitális számítógépek alap elemeként[8]. A jelfogós gépek legfontosabb problémája a sebesség volt[20]. Az 1940-es évek közepétől elkezdték az elektroncsö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[8]. 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ültek. A fő alkalmazási területük az atomfegyverekhez kapcsolódó, illetve a különböző lövedékek[21] röppálya elemzéséhez szükséges számítások elvégzése volt[8]. 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ődött a számítógépek rohamos elterjedése, ami után már nem csak a hadiipar és a kiemelt kutatóhelyek rendelkezhettek számítógéppel, hanem elvileg bárki, aki azt képes volt megfizetni[22]. 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 keleti-blokkban 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 elektroncsöves felépítésűek voltak.

A tranzisztor megalkotása (1947. december 24.[23]) é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 elektroncsöves gépek. 1947 körül megjelent a mágnesdobos memória,[24] illetve néhány évvel később 1950 körül a ferritgyűrűs memória[25]. 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. A ferritgyűrűs memória egy lényeges sebességbeli növekedést is magával hozott. Az integrált áramkörök megjelenése után – az első integrált áramkört a Texas Instruments mutatta be 1958-ban[26] – rövid idő alatt elkezdte az integrált áramkör felváltani a tranzisztort. 1971-ben az Intel bemutatta az első mikroprocesszort[27] ezután gyorsan terjedt a mikroprocesszorok alkalmazása is. A mikroprocesszor megjelenését követő években több gyártó is forgalomba hozott eleinte 8 bites, később 16 bites mikroprocesszorokat. Az első 16 bites mikroprocesszor 1976-ban jelent meg, a Texas Instruments TMS 9900 típusjelű eszköze volt[28]. 1979-ben a Motorola bemutatta az MC68000-es processzort, amelyik az első 32 bites mikroprocesszor volt[28]. Az 1970-es évek végétől a digitális számítógépek leggyakrabban 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 gyártástechnoló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,[29] 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. A 2000-es évektől megjelentek a kis méretű, kézben hordozható eszközök (pl. PDAk) később az okostelefonok is terjedtek[22]. 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 a 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, valamint az IoT 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 azt 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 fontos 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 is létezett. 1725-ben Basile Bouchon készített egy perforált (lukasztott) papírszalaggal vezérelt szövőszéket[30]. 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 és sorozatgyártásra is alkalmas lyukkártya vezérlésű szövőszéket. Jacquard szövőszékének rövid időn belül megindult a sorozatgyártása is.[30] Az ilyen szövőszék nagyon gyorsan terjedt, 1812-ben már 11 000 ilyen gép működött Franciaországban[31]. 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 megépített mechanikus számoló- és számítógépeket.[32] Babbage jól ismerte Jacquard megoldását, és felismerte, hogy a lyukkártya alkalmas az általa tervezett analitikai gép[33] programjának tárolására[34]. A számológépek (számítógépek) programvezérlésének ötlete és kidolgozása Babbage nevéhez fűződik[32][35]. 1886-ban Herman Hollerith[36] 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 lyukak meghatározott feltételeknek megfelelően helyezkednek el[37]. Hollerith 1896-ban megalapította a Tabulating Machine Company nevű cégét.[38] 1911-ben Hollerith eladta a cégét egy befektetőnek, amely után létrejött a Computing-Tabulating-Recording Company[39]. Ez a cég további átalakulások után 1924-ben[40] 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[41][42]. Ebben az időszakban többen kísérleteztek azzal, hogy az elektronikus számítógépek esetén a programot, az adatokhoz hasonlóan lyukkártyán, vagy 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.[43] A legelső számítógépek esetén a programozás még részben elektromos 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[8]. 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[44]. 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[45][46] egy UNIVAC I típusú számítógépre. Ez a program képes volt egyszerűbb matematikai 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,[47] 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[48].

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 programutasí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[49]. Egy adott programozási nyelv szabályai szerint elkészített programot (más néven forrásprogram) egy fordító program alakítja át gépi kódú utasítások sorozatává. Ennek a lépésnek az eredményeként jön létre a futtatható program[49][44]. 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[44]. 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)[44].

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.[50][51] 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.

Digitális számítógépek 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 programutasítások gépi kódban, és az adatok bináris 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 programmemóriában a programutasítások, míg az adat memóriában az adatok kapnak helyet. Ez utóbbi lehetővé teszi azt, hogy a programutasí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[52]. 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 ma már elsősorban beágyazott rendszereknél, mikrokontrollereknél alkalmaznak.

A korszerű mikroprocesszorok gyakran „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[53].

A memóriában tárolt program alapján a számítógép kezeli a perifériákat, ezeken keresztül képes a számítógépbe a külvilágból adat bekerülni (input), vagy a számítógépből a külvilág felé adat kikerülni (output). Az egész gép vezérlését a vezérlő egység (Control Unit) végzi. A kijelölt aritmetikai és logikai műveleteket az Aritmetikai és Logikai egység (rövidítve ALU) hajtja végre.[10][54]

Az eredeti architektúrákhoz képest az 1950-es évek végétől, 1960-as évek elejétől az ALU-t és a vezérlő egységet összevontan központi egységnek, 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[55]

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[10] 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 elemi 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.[56] Nagy változást a mikroprocesszorok megjelenése hozott, mert ez lehetővé tette, hogy fizikailag egy alkatrészbe legyen összeépítve a számítógép CPU-ja.[28] Később az egycsipes mikrogépek (más néven mikrokontroller) megjelenésével fizikailag egy darab alkatrész (integrált áramkör) képes egy teljes számítógépet tartalmazni.[57]

RegiszterekSzerkesztés

A CPU-ban az adatok (átmeneti) tárolására szolgálnak a regiszterek.[58] Az, hogy egy adott CPU-ban hány darab, milyen hosszúságú[59] regiszter kerül kialakításra, a CPU típusától függ. A regiszterek száma, és hosszúsága nagymértékben meghatározzák a CPU jellemzőit. Van néhány olyan (általános) regiszter, amely 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.[60] 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 utasításszámláló, 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, azaz, hogy hol kell folytatni a program végrehajtását. Régebbi gépeken ezt a gép valamelyik kezelő szervén megjelenítették.[61]
 
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[58][62] (angolul fetch) után ebbe a regiszterbe kerül az a gépi utasítás, amelyet végre kell hajtani.[58] 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 gépi kódú utasítás kerülhet. Az utasításregiszter 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.[58]
  • Általános célú regiszterek: angol elnevezéssel General Purpose Registers, 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 műveletvégző egysége számára.[62][63]
  • Állapotregiszter: ez a regiszter az ALU által elvégzett utolsó művelet eredményétől függő állapotjelzőket tartalmaz.[62][63] A pontos elnevezése és szerkezete a CPU típusától függ. Leggyakrabban a következő jelzőbiteket tartalmazza[62][63]:
    • Átvitel (Carry): jelzi, hogy a legmagasabb helyiértékű biten a művelet során átvitel keletkezett.
    • Zérus: 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 [10], é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.[54] A korai számítógépeknél, 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űveletvégző egységet. Eleinte 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ó (angolul ring counter), 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.[8]

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. Ha olyan műveletre van szükségünk, amit a gép nem tud elvégezni, akkor egy olyan algoritmust kell megvalósítani, amelynek 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[62], így ha valakinek erre volt szüksége, meg kellett írnia a szorzó programot.

Az 1960-as évek végén, az 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[64] típusjelű 4 bites ALU volt, amelyet a 74182-vel lehetett kiegészíteni. Ez az integrált áramkör az összeadás, kivoná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[64].

A legtöbb ALU két forrás operandussal végzi el a műveleteket, ezeket egy-egy átmeneti regiszter tárolja. Az eredmény az eredmény regiszterbe kerül, és ebből másolja a CPU a megfelelő helyre az adatot, ez vagy az akkumulátor regiszter, vagy az utasításban kijelölt cél. [62][58]

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[65] kód (angolul operation code vagy röviden op.code), a másik rész az operandus[58]. 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, vagy adatokkal 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[66]:

  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[66], vagy ritkábban (pl. a Razdan-3 számítógép esetén az utasítástól függően [67]) az eredmény az ALU egyik átmeneti regiszterébe kerül vissza másolásra, ezzel előkészítve a következő műveletet.
  4. Három címes felépítés: az utasításhoz három cím tartozik. Ebből kettő 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 az eredmény regiszterből 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 el kell végeznie. Ez a működés mód következik a programvezérelt működésből[60]. Az utasítás feldolgozást a vezérlő egység három része összehangoltan végzi. Neumann János ezt a First Draft-ban CC–nek, Central control part-nak nevezi [10]. Egy mai mikroprocesszor esetén az utasítás feldolgozásban részt vevő fontosabb részegységek[68]:

  • 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[69]:

  1. Utasításlehívás (fetch): Az utasításszámláló regiszter által kijelölt 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 programutasítások, mind az adatok közös memóriában, az ún. operatív memóriában találhatók. A Harvard-architektúrás gépek esetén a programutasítások és az adatok két külön álló memóriában találhatók. Az előbbiek az ún. program memóriában, az utóbbiak az adat memóriában[52]. Korszerűbb processzorok esetén gyakori, hogy az utasításlehívá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[63]. A sikeres utasításlehívás után a végrehajtandó utasítás gépi kódban, az utasítás regiszterben lesz elérhető a processzor többi részegysége számára.
  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 kialakítással. Az újabb (integrált áramkörös, illetve mikroprocesszoros gépek) valamint a CISC processzorok esetén elterjedtebb a mikroprogramozott módszer.[70] 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. Egy utasítás végrehajtása akár több lépésben, hosszabb idő alatt történhet, a processzor felépítésétől és az aktuális utasítástól függően.[62] Egy adott processzor típus esetén a gyártó általában megadja minden gépi utasítás végrehajtási idejét.[forrás?]

PerifériákSzerkesztés

A periféria szó alap jelentése környék, külváros, külterület, központtól távol eső (ld. még pl. az azonos szótövű perifériás látás, perifériás idegrendszer kifejezéseket)[71]. Jelenti azt is, hogy egy témától távol eső, kevésbé fontos, mellékes.[72] A peri- görög előtag jelentése körül,[73] mellett,[74] körbe[71](vesz).

A számítógépek esetén a perifériák a számítógép központi egységéhez csatlakoztatott különféle kiegészítő számítástechnikai eszközök, amelyek célja az adatok továbbítása a számítógép és a környezete között.[75][76][77] Leggyakrabban három (ritkábban négy)[78] csoportba szokás sorolni a perifériákat:

  1. Kimeneti perifériák: Ezek célja a számítógépben keletkező adatok kivitele a számítógépből a külvilág felé. Ilyen például a képernyős megjelenítő, a nyomtató, a rajzgép (plotter), de ilyen pl. egy robot kar is, amit egy számítógép mozgat stb.
  2. Bemeneti perifériák: Ezek célja, hogy a számítógépbe adatot vigyen be a külvilág felől. Ilyen például a billentyűzet, egér, lapolvasó (szkenner), egy digitális fényképezőgép képbontó egysége, egy hőmérséklet-érzékelő, szintérzékelő stb.
  3. Két irányú perifériák: Olyan perifériák, amelyek mind be- és kivitelre is alkalmasak. Ilyen például a hálózati kártya, multifunkciós nyomtató, stb.
  4. Háttértárak: Ezek célja a számítógépben keletkező adatok tartós tárolása. Ilyen például a mágneslemezes tároló (HDD), SSD tároló, lehet egy ún. pendrive, mágnesszalagos egység, régebben a lyukkártya és a lyukszalag.

Az első három csoportot összefoglalóan IO egységnek is szokták nevezni. Ebből az I az angol Input (bevitel) az O az angol Output (kivitel) kezdőbetűjéből álló rövidítés[58]. Írják I/O formában is.

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[79] és Babbage[80] 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!«[81]. 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, egyre egyszerűbbé vált 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.[82] Ken Thompson 1969-ben elkészítette a UNIX operációs rendszer első változatát, ezzel a célja egy egyszerűen használható operációs rendszer elkészítése volt.[83] 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).[84] 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 otthonukba számítógépet akarnának”.[85] Ettől az időszaktól kezdődően nagy szá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 egyszerűvé vált, szakértelmet nem igényel, ilyen rendszerekkel pl. az okos eszközöknél, okostelefonoknál is 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ásmó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 (magyarul „A Számítógép és az ember” címmel jelent meg) című munkája.[86]

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 azokat a szoftver és hardver komponenseket, amelyek biztosítják az ember-gép kapcsolatot. Beágyazott rendszerek esetén a Human Machine Interface (rövidítve HMI) biztosítja a kezelő és a gép közti kapcsolatot[87]. Ilyen pl. egy automata mosógép esetén az egyre fejlettebb, sokszor é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[61]. Később megjelent az ún. konzol írógép. A konzol írógép eleinte egy átalakított távgépíró volt (más néven telexgép). A konzol írógé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.[88] 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. A grafikus megjelenítőket kezdetben elsősorban CAD/CAM tervezési munkákhoz 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.[89] 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.

Adatok kódolásaSzerkesztés

A digitális számítógépek esetén az adatok bevitele, feldolgozása és az eredmények megjelenítése, valamint a működést meghatározó program bevitele számjegyek formájában történik.[1][58] A környezetünkben számtalan formában megjelennek adatok. Ahhoz, hogy ezeket digitális számítógéppel fel lehessen dolgozni, egy vagy több lépésben számértékké kell alakítani, ez a folyamat a kódolás. A kódolásnál követelmény, hogy az így kapott kód dekódolható legyen.[90] A kódolás legtöbb esetben több lépésben történik.

Például egy észlelő lát egy labdát, és ezt szeretné számítógépre vinni. A labda látványa alapján, a labda szó fog eszébe jutni, ha az illető magyar nyelven gondolkodik, a ball szó ha angol nyelven. Ez már egyfajta kódolás, mert a labda látványához egy adott nyelven egy (kód)szót rendeltünk. Az észlelő egy számítógép billentyűzete segítségével egymás után leüti az l, a, b, d, a billentyűket. A billentyűzet továbbítja a számítógép felé azt a pozíciót, hogy melyik billentyűt ütötte le a kezelő, ez a billentyűzet esetén az ún. scan kód.[91] A számítógépen futó program, a beállításoknak megfelelően egy karakter kódját fogja ehhez hozzárendelni. Ha ezt meg kell jeleníteni például egy képernyőn, akkor ennek a kódnak megfelelően jelennek meg egymás után az l, a, b, d, a betűk képei. Más adatok be- és kivitele is hasonlóan történik, ezt a folyamatot a perifériák és a számítógépen futó programok automatikusan elvégzik.

A korszerű digitális számítógépek esetén a kódolás eredményeként egy kettes számrendszerbeli szám (idegen kifejezéssel bináris szám) jön létre. Neumann János javasolta a számítógépekben a bináris rendszer alkalmazását, korábbi gépekből vett tapasztalat alapján.[8] A bináris kód esetén egy kódszó több helyi-értékű bináris szám. Egy helyi-értéket nevezünk egy bitnek. Ha a kódszavak hossza (azaz, hogy hány bitből áll) a kódkészletben állandó, akkor állandó hosszúságú kódrendszerről, ha az egyes kódszavak hossza nem állandó, változó szóhosszúságú kódrendszerről beszélünk. Ez utóbbira példa a Morzekód.[90]

Az idők során nagyon sok kódolási rendszer alakult ki, ezek egy része szabványos, más része nem. Szabványos az egyes betűk, írásjelek kódja. Az egyik ilyen elterjedt szabvány az Uincode. Vannak olyan esetek, amikor nem is lehet szabványos megoldást választani.

Például le szeretnénk képezni számítógépen egy iskolába járó tanulókat. Vannak köztük férfiak és nők. Ez esetben jelölhetjük (kódolhatjuk) 0-val a férfiakat és 1-el a nőket, de fordítva is. Ezt szabadon megválaszthatjuk, de a feldolgozás folyamán tisztában kell legyünk azzal, hogy mit, hogyan jelöltünk (kódoltunk). Sok helyen tévesen a kódolást a rejtjelzés szinonimájának értelmezik.

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 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, vagy az eredeti számot egy másik programnak kell ilyen alakúvá alakítania.

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" áramkörök, é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 volt 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.

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

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.

JegyzetekSzerkesztés

  1. a b c Számítástechnikai Kislexikon
  2. A monotónia 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. Online Etymology Dictionary - Digital. (Hozzáférés: 2021. december 25.)
  8. a b c d e f g h Goldstine 1980
  9. Ames 1990
  10. a b c d e f First Draft
  11. Szőllősy 2006
  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. A bíróság megállapította 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. Moore School of Electrical Engineering. History + Heritage. Penn Engineering University of Pennsylvania. (Hozzáférés: 2022. január 29.)
  15. Goldstine 1980 143. oldal
  16. A több azonos nevű település közül, az Amerikai Egyesült államokban, Maryland államban, Harford megyében található Aberdeen.
  17. Goldstine 1980 167. oldal
  18. First Draft pl.: 1.1 bekezdés
  19. First Draft pl. 4.1 bekezdés
  20. First Draft 4.3 bekezdés
  21. 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.
  22. a b Timeline
  23. John Orton 2006
  24. 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óként használni. Volt egy rövid átmeneti időszak, amikor mindkét célra használták.
  25. Magnetic Core Memory
  26. The chip that changed the world
  27. Intel4040
  28. a b c History of microprocessor
  29. August 12, 1981 IBM Introduces Personal Computer (angol nyelven). computerhistory.org. (Hozzáférés: 2021. december 26.)
  30. a b A Brief History of Figured Textile Production
  31. Goldstine 1980 31. oldal
  32. a b Holl András 1997
  33. Ha elkészült volna, az lett volna az első programozható, mechanikus számítógép, azonban technológiai és finanszírozási problémák miatt Babbage egyik gépe sem épült meg.
  34. Goldstine 1980 31-33. oldal
  35. Goldstine 1980 31-33. oldal
  36. Herman Hollerith
  37. An electric tabulating system
  38. History of IBM 1890s. (Hozzáférés: 2021. december 28.)
  39. The Punchet Card Tabulator
  40. History of IBM 1920s. (Hozzáférés: 2021. december 28.)
  41. Programming the ENIAC
  42. ENIAC-Story
  43. 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.)
  44. a b c d Tanuljunk meg programozni Python nyelven
  45. Grace Murray Hopper 1
  46. Grace Murray Hopper 2
  47. American National Standard - Fortran. (Hozzáférés: 2022. január 7.)
  48. History of FORTRAN Language
  49. a b Martin Plonus 2020
  50. 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.)
  51. Has the evolution of computer hardware influenced programming languages throughout history? Or vice versa?. (Hozzáférés: 2022. január 7.)
  52. a b Kann 2021
  53. Intel 11 Gen. Datasheet 56. old.
  54. a b ALU
  55. 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 
  56. Ld. pl. IBM 7070 sorozat: Reference Manual - 7070 Data Processing System. (Hozzáférés: 2022. január 1.)
  57. The Guide to Microcontrolleres
  58. a b c d e f g h Vancsó 1983
  59. Hány bites adat tárolására képes.
  60. a b IBM 1953
  61. a b Razdan-3
  62. a b c d e f g Z80 User's Manual
  63. a b c d Intel Software Developer's Manual
  64. a b 74181
  65. Más elnevezéssel utasítás kód
  66. a b Kann 2021-2
  67. Razdan-3 technikai adatok
  68. Z80 Product Brief
  69. Inst.dec.
  70. Mark Smotherman: A Brief History of Microprogramming. (Hozzáférés: 2022. január 4.)
  71. a b Arcanum Periféria
  72. Meaning of peripheral in English. (Hozzáférés: 2022. január 23.)
  73. szerk.: Radó Antal: Idegen szavak szótára, 10, Budapest: Lampel R. (Wodianer F. és fiai) (1942) 
  74. Bakos Ferenc.szerk.: Fábián Pál, Zigány Judit, Ármósné Eisenbarth Magda, Bödey József: Idegen szavak és kifejezések szótára. Budapest: Akadémiai Kiadó [1986]. ISBN 963-05-4262-5 
  75. Laplante, Philip A.. Dictionary of Computer Science, Engineering and Technology. CRC Press, 366. o. (2000. július 27.). ISBN 0-8493-2691-5 
  76. Which Computer Peripherals Make the Best Investments. (Hozzáférés: 2022. január 23.)
  77. Nem sorolják a perifériák közé a számítógép működéséhez szükséges olyan egységeket, amelyek alapvetően nem végeznek adatokkal műveleteket, pl. a számítógép háza, tápegység, szünetmentes tápegység, klímaberendezés stb.
  78. A háttértárakat több helyen a kétirányú perifériák közé sorolják.
  79. John Herschel(1792-1871) angol csillagász és matematikus
  80. Charles Babbage(1791-1871) angol matematikus
  81. Goldstine 1980 24. oldal
  82. Dr. Vadász 2002
  83. History of Unix. (Hozzáférés: 2022. január 14.)
  84. History of personal computers. (Hozzáférés: 2022. január 14.)
  85. 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.)
  86. 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.
  87. What is HMI or Human Machine Interface
  88. Teletype Machines. (Hozzáférés: 2022. január 16.)
  89. Jeremy Reimer: A History of the GUI, 2005. május 5. (Hozzáférés: 2022. január 16.)
  90. a b Fegyverneki S
  91. Keyboard scancodes

ForrásokSzerkesztés