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]
Történet
szerkesztésAz 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:
- Neumann János 1945-ös First Draft of a Report on the EDVAC című, a logikai elemek elrendezését leíró beszámolója;[6] and
- Alan Turing szintén 1945-ös részletesebb, Neumann beszámolójára hivatkozó elektronikusszámológép-terve az Automatic Computing Engine-hez.[7]
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és3 fő elvük van a számítógép-architektúráknak:[14]
- Utasításkészlet-architektúra (ISA): a processzor által elolvasott és feldolgozott gépi kódot, a szóméretet, a memóriacímzési módokat, a processzorregisztereket és az adattípusokat határozza meg.
- Mikroarchitektúra: más néven számítógép-elrendezés: egy processzor utasításkészletarchitektúra-megvalósítását írja le.[15] A processzor gyorsítótárának mérete általában ISA-független kérdés.
- Rendszertervezés: egy számítógép többi hardveres részét tartalmazza, például a CPU-n kívüli adatfeldolgozást (például közvetlen memóriaelérés), a virtualizációt és a többes feldolgozást.
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:
- Ú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.
- 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ésDefiníció
szerkesztésA 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ésAz 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ésA 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ésAz 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ésEgy 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ésA 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ésAz 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ésAz ó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- ↑ Dragoni, Nicole: Introduction to peer to peer computing. DTU Compute – Department of Applied Mathematics and Computer Science
- ↑ 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.”
- ↑ Computer Architecture: A Quantitative Approach, Fifth, 11. o. „This task has many aspects, including instruction set design, functional organization, logic design, and implementation.”
- ↑ (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.)
- ↑ Susanne Faber, „Konrad Zuses Bemühungen um die Patentanmeldung der Z3”, 2000
- ↑ Neumann, John. First Draft of a Report on the EDVAC, 9. o. (1945)
- ↑ Reproduced in B. J. Copeland (Ed.), „Alan Turing's Automatic Computing Engine”, Oxford University Press, 2005, pp. 369-454.
- ↑ Johnson, Lyle: A Description of Stretch, 1960. (Hozzáférés: 2017. október 7.)
- ↑ Buchholz, Werner. Planning a Computer System, 5. o. (1962)
- ↑ System 360, From Computers to Computer Systems. IBM100 , 2012. március 7. (Hozzáférés: 2017. május 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)
- ↑ 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]
- ↑ Schmalz, M. S.: Organization of Computer Systems. UF CISE . (Hozzáférés: 2017. május 11.)
- ↑ a b John L. Hennessy, David A. Patterson. Computer Architecture: A Quantitative Approach, Third, Morgan Kaufmann Publishers (2003)
- ↑ Laplante, Phillip A.. Dictionary of Computer Science, Engineering, and Technology. CRC Press, 94–95. o. (2001). ISBN 0-8493-2691-5
- ↑ PowerPC Architecture Book, Version 2.02. IBM Corporation, 2005. február 24.
- ↑ Null, Linda. The Essentials of Computer Organization and Architecture, 5th, Burlington, MA: Jones & Bartlett Learning, 280. o. (2019). ISBN 9781284123036
- ↑ Martin, Milo: What is computer architecture?. UPENN . (Hozzáférés: 2017. május 11.)
- ↑ 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
- ↑ What is Instruction Set Architecture (ISA)?. ARM. (Hozzáférés: 2023. november 11.)
- ↑ Eilam, Eldad. Reversing: Secrets of Reverse Engineering. Wiley Publishing, 595. o. (2005). ISBN 0-7645-7481-7
- ↑ Automated generation of megacells in an integrated circuit design system
- ↑ Advanced Computer Architecture. (Hozzáférés: 2023. november 11.)
- ↑ Integrated circuits and fabrication. (Hozzáférés: 2017. május 8.)
- ↑ Exynos 9 Series (8895). Samsung . (Hozzáférés: 2017. május 8.)
- ↑ Measuring Processor Power TDP vs ACP. Intel , 2011. április 1. (Hozzáférés: 2017. május 5.)
- ↑ History of Processor Performance. cs.columbia.edu , 2012. április 24. (Hozzáférés: 2017. május 5.)
Fordítás
szerkesztésEz 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- John L. Hennessy, David Patterson. Computer Architecture: A Quantitative Approach, Fourth, Morgan Kaufmann (2006). ISBN 978-0-12-370490-0
- Barton, Robert S., "Functional Design of Computers", Communications of the ACM 4(9): 405 (1961).
- Barton, Robert S., "A New Approach to the Functional Design of a Digital Computer", Proceedings of the Western Joint Computer Conference, May 1961, pp. 393–396. About the design of the Burroughs B5000 computer.
- Bell, C. Gordon; and Newell, Allen (1971). "Computer Structures: Readings and Examples", McGraw-Hill.
- Blaauw, G.A., and Brooks, F.P., Jr., "The Structure of System/360, Part I-Outline of the Logical Structure" Archiválva 2016. április 23-i dátummal a Wayback Machine-ben, IBM Systems Journal, vol. 3, no. 2, pp. 119–135, 1964.
- Tanenbaum, Andrew S.. Structured Computer Organization. Englewood Cliffs, New Jersey: Prentice-Hall (1979). ISBN 0-13-148521-0
További információk
szerkesztés- ISCA: Proceedings of the International Symposium on Computer Architecture
- Micro: IEEE/ACM International Symposium on Microarchitecture
- HPCA: International Symposium on High Performance Computer Architecture
- ASPLOS: International Conference on Architectural Support for Programming Languages and Operating Systems
- ACM Transactions on Architecture and Code Optimization
- IEEE Transactions on Computers
- The von Neumann Architecture of Computer Systems