Számítógép-architektúra

A számítógép-architektúra egy számítógépes rendszer szerkezetének leírása.[1] Lehet a megvalósítás részleteit figyelmen kívül hagyó magas szintű leírás.[2] Egy részletesebb leírásban szerepelhet az utasításkészlet-architektúra, a mikroarchitektúra tervezése, a logikai tervezés és a megvalósítás.[3]

Egyszerű, egyprocesszoros számítógép rajza. A fekete vonalak az adat, a pirosak az irányítás áramlását, a nyilak ezek irányát mutatják.

Történet szerkesztés

Az első leírt számítógép-architektúrát Charles Babbage és Ada Lovelace alkották az Analytical engine leírásával. A Z1 1936-os építésekor Konrad Zuse későbbi projektjei két alkalmazásában leírta, hogy a gépi utasítások az adattal egy tárhelyen tárolható, ez lett a tárolt program koncepciója.[4][5] Két további korai és fontos példa:

Az architektúra fogalma a számítógépes irodalomban először Lyle R. Johnson és Fred Brooks, az IBM fő kutatóközpontjának két tagjának munkájában jelent meg 1959-ben. Johnson írt egy tanulmányt az Stretchről, melyet a Los Alamos-i Nemzeti Laboratóriumnak (akkori nevén Los Alamos-i Tudományos Laboratórium) fejlesztettek. A formátumok, utasítástípusok, hardverparaméterek és sebességjavulások leírásának részletessége a „rendszer-architektúra” szintjén volt.[8]

Ezután Brooks, a Stretch tervezője a Planning a Computer System: Project Stretch 2. fejezetét így kezdte: „A számítógép-architektúra, mint más architektúrák, a szerkezet felhasználóinak szükségleteinek meghatározása, majd azok oly tervezése, hogy ezeket a lehető leghatékonyabban töltse be gazdasági és technológiai kereteken belül”.[9]

Brooks később az IBM System/360 (mai nevén IBM zSeries) számítógép-sorozaton dolgozott, ahol az „architektúra” jelentése „a felhasználó által ismerendő információ” lett.[10] Later, computer users came to use the term in many less explicit ways.[11]

A legkorábbi számítógép-architektúrákat papíron készítették, majd közvetlenül a végső hardverben alkották meg.[12]

Később a számítógéparchitektúra-prototípusokat – például a Motorola 6800-éit és a PA-RISC-éit – fizikailag alakították ki TTL-t használó számítógépen, tesztelték, a végső változat előtt javították.

Az 1990-es évektől az új architektúrákat általában „megépítik”, tesztelik, majd javítják – más számítógép-architektúrában számítógéparchitektúra-szimulátoron vagy FPGA-ban puha mikroprocesszorként – a végső hardver kialakítása előtt.[13]

Alkategóriák szerkesztés

3 fő elvük van a számítógép-architektúráknak:[14]

Más technológiák is vannak a számítógép-architektúrában. Az alábbiakat a nagyobb cégek, például az Intel használják, és 2002-es becslések szerint az architektúrák 1%-át teszik ki:[14]

  • Makroarchitektúra: a mikroarchitektúráknál elvontabb architektúrarétegek
  • Összerakó utasításkészlet-architektúra: Egy assembler egy absztrakt több gépre jellemző assemblyt a különböző megvalósítások gépi nyelvére fordíthatja.
  • Programozó által látható makroarchitektúra: A magasabb szintű nyelvi eszközök, például a fordítóprogramok a programozókat összekapcsolják, az ISA, az UISA és a mikroarchitektúrák különbségeit láthatóvá téve. Például a C, a C++ vagy a Java programozó által látható makroarchitektúrákat határoznak meg.
  • Mikrokód: utasításokat a chipen való működésre fordító szoftver. A hardvert „borítják”, annak utasításkészlet-felületének legmegfelelőbb változatát adva. Ez az utasításfordítási mód a tervezőknek számos lehetőséget ad, például:
    1. Új, javított chip, mely mikrokódot használhat a korábbi chippel azonos utasításkészlethez, így az utasításkészletet célzó szoftver az új chipen változtatás szükségessége nélkül fut.
    2. A mikrokód azonos chiphez több utasításkészletet ad, több szoftverrel való működést lehetővé téve.
  • UISA: felhasználói utasításkészlet-architektúra – a PowerPC RISC processzorok utasításkészletének 3 részhalmazából az egyik. Az UISA az alkalmazásfejlesztők számára fontos utasításkészlet. A másik két utasítás a VEA (virtuáliskörnyezet-architektúra) virtualizációs rendszerek fejlesztőinek és az OEA (operációskörnyezet-architektúra) az operációs rendszerekhez.[16]
  • Tüskearchitektúra: A hardverplatformnak a mikroprocesszor által kínálandó funkciók, például az A20M, FERR/IGNNE vagy FLUSH x86-tüskék. Ezenkívül a processzor által a gyorsítótár-ürítéshez kiadandó üzeneteket is tartalmazza. Funkciói rugalmasabbak az ISA-éinál, mivel a külső hardver az új kódolásokhoz alkalmazkodhat, vagy tüskéről üzenetre válthat. Azért architektúra, mert a kompatibilis rendszereknek adandók a funkciók akkor is, ha a módszer változik.

Szerepei szerkesztés

Definíció szerkesztés

A számítógép-architektúrák célja a számítógépes rendszerek teljesítménye, hatékonysága, ára és megbízhatósága közti egyensúly. Az utasításkészlet-architektúra például e tényezők egyensúlyát mutathatja meg. Az összetettebb utasításkészletek lehetővé teszik helyhatékonyabb programok írását, mivel egy utasítás nagyobb szintű absztrakciót kódolhatnak (például az x86 Loop utasítása).[17] Azonban a hosszabb és összetettebb utasítások feldolgozása hosszabb és költségesebb. A nagy utasításkészlet nagyobb komplexitása a megbízhatatlanságra nagyobb lehetőséget ad, ha az utasítások váratlan módokon hatnak egymásra.

A megvalósítás integráltáramkör-tervezést, csomagolást, áramot és hűtést igényel. A tervezés optimalizálása a fordítóprogramok, az operációs rendszerek, a logikai tervezés és a csomagolás ismeretét igénylik.[18]

Utasításkészlet-architektúra szerkesztés

Az utasításkészlet-architektúra a számítógép szoftvere és hardvere közti felület, mely a gép programozói nézeteként is tekinthető. A számítógépek nem „értik” a magas szintű programozási nyelveket, például a Javát, a C++-t vagy a legtöbb használt programozási nyelvet. A processzor csak numerikusan, például bináris számokkal kódolt utasításokat ért. A szoftverek, például a fordítóprogramok e magas szintű nyelveket a processzor által érthető utasításokká fordítja.[19]

Az utasítások mellett az ISA határozza meg a program számára elérhető elemeket – például adattípusokat, regisztereket, címzésmódokat és memóriát.[20] Az utasítások ezeket regiszterindexekkel vagy -nevekkel és memóriacímzési módokkal érik el.

Egy számítógép ISA-ját általában kézikönyv írja le, ahol az utasítások kódolása szerepelhet. Ezenkívül rövid nevek is szerepelhetnek az utasításokra. A neveket egy assembler felismerheti. Ez az ISA ember által olvasható változatát géppel olvashatóvá alakítja. Ezenkívül elérhetők disassemblerek is jellemzően hibakeresőkben és a bináris programok hibáinak izolálására és javítására.[21]

Számítógép-elrendezés szerkesztés

A számítógép-elrendezés lehetővé teszi a teljesítményalapú termékek optimalizációját. Például a szoftverfejlesztőknek ismerni kell a processzorok teljesítményét. A szoftvert optimalizálniuk kellhet a legjobb teljesítmény legolcsóbban történő eléréséért. Ehhez szükséges lehet a számítógép részletes elemzése. Például egy SD-kártyát a tervezőknek úgy kell elrendezniük, hogy a lehető legtöbb adat a lehető leggyorsabban feldolgozható legyen.

A számítógép-elrendezés lehetővé teszi a processzor kiválasztását adott projekthez. A multimédia-projektek gyors adathozzáférést igényelhetnek, míg a virtuális számítógépek gyors megszakításokat. Egyes feladatokhoz további komponensek is kellhetnek. Például egy virtuális gép futtatására képes számítógép virtuális memóriát igényel, így a különböző virtuális számítógépek memóriája elválasztható. A számítógép-elrendezés és -funkciók befolyásolják az energiafogyasztást és a költségeket.

Megvalósítás szerkesztés

Az utasításkészlet- és mikroarchitektúra megtervezése után a gyakorlati gép is kifejlesztendő, ez a megvalósítás. A megvalósítást általában nem architektúra-, hanem hardvertervezésnek tekintik. Ez több lépésre bontható:

  • Logikai tervezés: az áramkörök tervezése logikai kapuk szintjén.
  • Áramkörtervezés: az alapelemek (kapuk, multiplexerek, reteszek) valamint néhány nagyobb elem (ALU, gyorsítótárak stb.) tervezése tranzisztorok szintjén. Logikai kapuk szintjén vagy szükség esetén fizikailag megvalósítható.
  • Fizikai megvalósítás: fizikai áramkörök rajzolása. A különböző áramköri elemek chiptervrajzra vagy áramköri lapra kerülnek, és létrejönnek az őket összekötő huzalok.
  • Tervezés-ellenőrzés: a teljes számítógép megfelelő működésének ellenőrzése. A tervezésérvényesítés kezdetén logikaemulációval történik a logikai tervezés tesztje. Ez a realisztikus teszthez általában túl lassú. Így az első teszten alapuló javítások után prototípusokat állítanak elő FPGA-kkal. A legtöbb hobbiprojekt itt véget ér. Az utolsó lépés az integráltáramkör-prototípusok tesztje. Ez több újratervezést igényelhet.[22]

CPU-k esetén e folyamat másképp történik, ezt gyakran CPU-tervezésnek nevezik.

Tervezési célok szerkesztés

Egy számítógépes rendszer formája függ a korlátoktól és a céloktól. A számítógép-architektúrák általában a szabványokat és a fogyasztást a teljesítménnyel, költségekkel, memóriával, késéssel (egy csomóponttól a forrásig megtett út ideje) és átvitellel hasonlítják össze. Néha más korlátok, például funkciók, méret, súly, megbízhatóság és bővíthetőség is számíthatnak.

Leggyakrabban a részletes teljesítményelemzés a fogyasztás megfelelő teljesítmény melletti alacsonyan tartását célozza.

Teljesítmény szerkesztés

A számítógép-teljesítmény gyakran ciklusonkénti utasításokkal (IPC) írható le, ami az architektúra hatékonysága tetszőleges frekvencián: a magasabb IPC gyorsabb számítógépet jelent. Régebbi számítógépek esetén az IPC akár 0,1 is lehetett, a modernebbek esetén ez körülbelül 1. A szuperskaláris processzorok esetén az IPC 3-5 közt van több utasítás egyszerre való végrehajtásával.[23]

A gépi nyelvi utasítások számolása félrevezethet, mivel különböző ISA-kban különböző mennyiségű munkát végezhetnek. Az utasítás nem a gépi nyelvi utasítások száma, hanem általában a VAX architektúrán alapuló mértékegység.

A teljesítményt sok más tervezési mód is befolyásolja – például egy processzor futószalagozása a késést növeli, de az átvitelt javítja. A gépirányító számítógépeknek általában alacsony megszakítási késleltetés kell. E számítógépek valós idejű környezetben működnek, és a művelet adott időn belüli sikertelensége esetén sikertelenek. Például a számítógéppel irányított blokkolásgátló fékeknek előrejelezhető, korlátozott időn belül kell a fékpedál lenyomása után a fékezést indítani, különben a fékezés sikertelen.

A benchmarking e tényezőket figyelembe veszi egy tesztprogramsorozat futtatásának idejének mérésével. Bár megmutatja az erősségeket, nem ez az egyetlen szempont számítógép-választáskor. Gyakran a mérési eredmények mérésenként eltérnek – például egy rendszer a tudományos alkalmazásokat kezelheti jól, egy másik a videójátékokat. Továbbá a tervezők speciális funkciókat adhatnak termékeikhez hardverrel vagy szoftverrel, lehetővé téve jó nérési eredményt általános feladatokon jelentkező előnyök nélkül.

Hatékonyság szerkesztés

Az energiahatékonyság is fontos mennyiség a modern számítógépekben. A nagyobb hatékonyság gyakran alacsonyabb sebességgel vagy magasabb költséggel párosul. A leggyakoribb mértékegység a fogyasztásnál a MIPS/W (millió utasítás wattonként).

A modern áramkörök tranzisztoronként kevesebb energiát igényelnek a chipenkénti tranzisztorszám növekedésével.[24] Ennek oka, hogy minden új chipbe kerülő tranzisztor saját áramforrást és új utat igényel az ellátásához, azonban a chipenkénti tranzisztorszám növekedése csökkenni kezdett. Így az energiahatékonyság hasonlóan fontossá vált, mint több tranzisztor egy chipen való elhelyezése. 2017-től a processzorok ezt helyezik előtérbe, nem a lehető legtöbb processzor elhelyezését egy helyen.[25] A beágyazott rendszerekben a hatékonyság az átvitel és a késés mellett fontos cél volt.

Igénybeli eltolódások szerkesztés

Az órajel-növekedés 2015-től lassult az energiahatékonysági javulásokkal szemben. Ezt a Moore-törvény vége, a hosszabb akkumulátor-üzemidő és a mobiltechnológia méretcsökkenése okozta. A nagyobb órajelről az alacsonyabb fogyasztás és a miniatürizáció felé való eltolódás a jelentős, akár 50%-os fogyasztáscsökkenésben is látható, melyről az Intel a Haswell kiadásakor beszámolt: a fogyasztás 30-40 W-ról 10-20 W-ra csökkent.[26] Összehasonlítva a sebesség 3-ról 4 GHz-re való növekedésével 2002–2006 közt,[27] látható, hogy a kutatás-fejlesztési célok az órajelről az alacsonyabb energiafogyasztásra és kisebb helyigényre mozdultak.

Jegyzetek szerkesztés

  1. Dragoni, Nicole: Introduction to peer to peer computing. DTU Compute – Department of Applied Mathematics and Computer Science
  2. Principles of Computer Hardware, Fourth, 1. o. „Architecture describes the internal organization of a computer in an abstract way; that is, it defines the capabilities of the computer and its programming model. You can have two computers that have been constructed in different ways with different technologies but with the same architecture.” 
  3. Computer Architecture: A Quantitative Approach, Fifth, 11. o. „This task has many aspects, including instruction set design, functional organization, logic design, and implementation.” 
  4. (1948. szeptember 25.) „Electronic Digital Computers”. Nature 162 (4117), 487. o. [2009. április 6-i dátummal az eredetiből archiválva]. DOI:10.1038/162487a0. (Hozzáférés: 2023. november 7.)  
  5. Susanne Faber, „Konrad Zuses Bemühungen um die Patentanmeldung der Z3”, 2000
  6. Neumann, John. First Draft of a Report on the EDVAC, 9. o. (1945) 
  7. Reproduced in B. J. Copeland (Ed.), „Alan Turing's Automatic Computing Engine”, Oxford University Press, 2005, pp. 369-454.
  8. Johnson, Lyle: A Description of Stretch, 1960. (Hozzáférés: 2017. október 7.)
  9. Buchholz, Werner. Planning a Computer System, 5. o. (1962) 
  10. System 360, From Computers to Computer Systems. IBM100 , 2012. március 7. (Hozzáférés: 2017. május 11.)
  11. Die Genese von Wissenschaftskonzeptionen der Computerarchitektur: Vom "system of organs" zum Schichtmodell des Designraums, Geschichten der Informatik: Visionen, Paradigmen, Leitmotive, 411–472. o. (2004) 
  12. Az ACE 1 év alatt 7-szer lett újratervezve a prototípus 1948-as készítése előtt. [B. J. Copeland (Ed.), "Alan Turing's Automatic Computing Engine", OUP, 2005, p. 57]
  13. Schmalz, M. S.: Organization of Computer Systems. UF CISE . (Hozzáférés: 2017. május 11.)
  14. a b John L. Hennessy, David A. Patterson. Computer Architecture: A Quantitative Approach, Third, Morgan Kaufmann Publishers (2003) 
  15. Laplante, Phillip A.. Dictionary of Computer Science, Engineering, and Technology. CRC Press, 94–95. o. (2001). ISBN 0-8493-2691-5 
  16. PowerPC Architecture Book, Version 2.02. IBM Corporation, 2005. február 24.
  17. Null, Linda. The Essentials of Computer Organization and Architecture, 5th, Burlington, MA: Jones & Bartlett Learning, 280. o. (2019). ISBN 9781284123036 
  18. Martin, Milo: What is computer architecture?. UPENN . (Hozzáférés: 2017. május 11.)
  19. Wolfram Schiffmann. [Számítógép-architektúra, p. 119, a Google Könyvekben Technische Informatik 2: Grundlagen der Computertechnik]. Springer-Verlag, 119. o. (2006). ISBN 978-3-540-27249-6 
  20. What is Instruction Set Architecture (ISA)?. ARM. (Hozzáférés: 2023. november 11.)
  21. Eilam, Eldad. Reversing: Secrets of Reverse Engineering. Wiley Publishing, 595. o. (2005). ISBN 0-7645-7481-7 
  22. Automated generation of megacells in an integrated circuit design systemPDF-hivatkozás
  23. Advanced Computer Architecture. (Hozzáférés: 2023. november 11.)
  24. Integrated circuits and fabrication. (Hozzáférés: 2017. május 8.)
  25. Exynos 9 Series (8895). Samsung . (Hozzáférés: 2017. május 8.)
  26. Measuring Processor Power TDP vs ACP. Intel , 2011. április 1. (Hozzáférés: 2017. május 5.)
  27. History of Processor Performance. cs.columbia.edu , 2012. április 24. (Hozzáférés: 2017. május 5.)

Fordítás szerkesztés

Ez a szócikk részben vagy egészben a Computer architecture című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.

Források szerkesztés

További információk szerkesztés

A Wikimédia Commons tartalmaz Számítógép-architektúra témájú médiaállományokat.