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

Egy processzor nélküli processzorral rendelkező alapszámítógép tömbvázlata. A fekete vonalak jelzik az adatáramlást, míg a piros vonalak a vezérlési folyamatot. A nyilak jelzik az áramlás irányát.

A számítógépes tervezés , számítógépes architektúra egy sor szabályok és módszerek, amelyek leírják a funkcionalitás, a szervezés, és megvalósítása számítógépes rendszereket. A rendszer felépítése a rendszer külön -külön meghatározott összetevőit és egymás közötti kapcsolatait tekintve a szerkezetére utal.

Az architektúra néhány definíciója úgy határozza meg, hogy a számítógép képességeit és programozási modelljét írja le, de nem egy konkrét megvalósítást. Más definíciók szerint a számítógépes architektúra utasításkészlet -tervezést, mikroarchitektúra -tervezést, logikai tervezést és megvalósítást foglal magában .

Történelem

Az első dokumentált számítógépes architektúra Charles Babbage és Ada Lovelace levelezésében volt , leírva az analitikai motort . Amikor a Z1 számítógépet 1936-ban építette , Konrad Zuse két szabadalmi bejelentésében írta le jövőbeli projektjeire, hogy a gépi utasításokat ugyanabban az adattárolóban lehet tárolni, azaz a tárolt program koncepciót. Két másik korai és fontos példa:

Az „építészet” kifejezés a számítógépes irodalomban Lyle R. Johnson és Frederick P. Brooks, Jr. munkájára vezethető vissza , akik az IBM fő kutatóközpontjának Gépszervezési osztályának tagjai voltak 1959 -ben. Johnsonnak lehetősége volt saját találjon kommunikáció a Stretch egy IBM által kifejlesztett szuperszámítógép a Los Alamos National Laboratory (abban az időben ismert Los Alamos Tudományos Laboratórium). A fényűzően díszített számítógép megvitatásának részletességének leírása érdekében megjegyezte, hogy a formátumok, utasítás típusok, hardverparaméterek és sebességnövelések leírása a „rendszer architektúra” szintjén volt, amely kifejezés hasznosabbnak tűnt, mint a „gépszervezés” ”.

Ezt követően Brooks, a Stretch tervezője megnyitotta a Planning a Computer System: Project Stretch című könyv 2. fejezetét, és kijelentette: „A számítógépes architektúra, mint a többi architektúra, az a művészet, amely meghatározza a szerkezet használójának igényeit, majd gazdasági és technológiai korlátok között a lehető leghatékonyabban kielégíteni ezeket az igényeket. ”

Brooks ezután segített kifejleszteni az IBM System/360 (ma IBM zSeries ) számítógépsorozatot, amelyben az „architektúra” olyan főnévvé vált, amely meghatározza a „mit kell a felhasználónak tudnia”. Később a számítógép -felhasználók sok kevésbé explicit módon kezdték használni a kifejezést.

A legkorábbi számítógépes architektúrákat papírra tervezték, majd közvetlenül beépítették a végső hardverformába. Később a számítógépes architektúra prototípusait fizikailag egy tranzisztoros-tranzisztoros logikai (TTL) számítógép formájában építették fel , például a 6800-as és a PA-RISC prototípusait, majd tesztelték és módosították, mielőtt elkötelezték magukat a végleges hardverforma mellett. A kilencvenes évektől kezdve az új számítógépes architektúrákat jellemzően "megépítik", tesztelik és módosítják - más számítógépes architektúrán belül egy számítógépes architektúra szimulátorban ; vagy az FPGA belsejében lágy mikroprocesszorként ; vagy mindkettőt - mielőtt elkötelezi magát a végső hardverforma mellett.

Alkategóriák

A számítógép -architektúra tudományága három fő alkategóriát foglal magában:

A számítógépes architektúrában más technológiák is léteznek. A következő technológiákat használják olyan nagyobb vállalatoknál, mint az Intel, és becslések szerint 2002 -ben az összes számítógép -architektúra 1% -át teszik ki:

  • Makroarchitektúra : az építészeti rétegek elvontabbak, mint a mikroarchitektúra
  • Összeszerelési utasításkészlet architektúra : Az intelligens összeszerelő átalakíthatja a gépcsoport egy közös absztrakt összeszerelési nyelvét kissé eltérő gépi nyelvre a különböző megvalósításokhoz .
  • Programozó által látható makroarchitektúra : a magasabb szintű nyelvi eszközök, például a fordítók, konzisztens felületet vagy szerződést határozhatnak meg az őket használó programozókkal , elvonva a különbségeket az alapul szolgáló ISA, UISA és mikroarchitektúrák között . Például a C , C ++ vagy Java szabványok különböző programozó által látható makroarchitektúrákat határoznak meg.
  • Mikrokód : A mikrokód olyan szoftver, amely lefordítja a chipen való futtatásra vonatkozó utasításokat. Úgy viselkedik, mint egy burkolat a hardver körül, bemutatva a hardver utasításkészlet -felületének előnyben részesített változatát. Ez az utasításfordító lehetőség rugalmas lehetőségeket kínál a chiptervezőknek: Pl. 1. A chip új, továbbfejlesztett változata a mikrokód segítségével pontosan ugyanazt az utasításkészletet tudja bemutatni, mint a régi chipverzió, így minden, az utasításkészletet célzó szoftver az új chipen is futni fog. változtatásokra van szükség. Pl. 2. A Microcode különféle utasításkészleteket tud bemutatni ugyanahhoz a chiphez, lehetővé téve számtalan szoftver futtatását.
  • UISA : User Instruction Set Architecture, a PowerPC RISC processzorok által biztosított RISC CPU utasítások három részhalmazának egyikére utal . Az UISA részhalmaz azok az RISC utasítások, amelyek az alkalmazásfejlesztők számára érdekesek. A másik két részhalmaz a virtualizációs rendszerfejlesztők által használt VEA (Virtual Environment Architecture) utasítások, és az Operation System fejlesztők által használt OEA (Operating Environment Architecture).
  • Tű architektúra : Azok a hardverfunkciók, amelyeket a mikroprocesszornak egy hardverplatformnak kell biztosítania, például az x86 -os A20M, FERR/IGNNE vagy FLUSH tűk. Továbbá az üzeneteket, amelyeket a processzornak ki kell küldenie, hogy a külső gyorsítótárak érvényteleníthetők (kiüríthetők). A tű -architektúra funkciók rugalmasabbak, mint az ISA -funkciók, mert a külső hardverek képesek alkalmazkodni az új kódolásokhoz, vagy tüskéről üzenetre válthatnak. Az "architektúra" kifejezés megfelel, mert a funkciókat kompatibilis rendszerekhez kell biztosítani, még akkor is, ha a részletes módszer megváltozik.

Szerepek

Meghatározás

A számítógépes architektúra a számítógépes rendszer teljesítményének, hatékonyságának, költségének és megbízhatóságának kiegyensúlyozásával foglalkozik. Az utasításkészlet -architektúra esete illusztrálhatja ezen versengő tényezők egyensúlyát. A bonyolultabb utasításkészletek lehetővé teszik a programozók számára, hogy több helytakarékos programot írjanak, mivel egyetlen utasítás kódolhat néhány magasabb szintű absztrakciót (például az x86 Loop utasítást). A hosszabb és összetettebb utasítások azonban hosszabb ideig tartanak a processzor dekódolásához, és költségesek lehetnek a hatékony végrehajtáshoz. A nagy utasításkészletből származó megnövekedett összetettség nagyobb teret teremt a megbízhatatlanságnak, amikor az utasítások váratlan módon kölcsönhatásba lépnek.

A megvalósítás magában foglalja az integrált áramkör tervezését, csomagolását, áramellátását és hűtését. A tervezés optimalizálása megköveteli a fordítók, az operációs rendszerek logikai tervezés és csomagolás ismereteit.

Utasításkészlet architektúra

Az utasításkészlet architektúra (ISA) az interfész a számítógép szoftvere és hardvere között, és úgy is tekinthető, mint a programozó nézete a gépről. A számítógépek nem értik a magas szintű programozási nyelveket , mint például a Java, a C ++ vagy a legtöbb használt programozási nyelv. A processzor csak valamilyen numerikus módon kódolt utasításokat ért, általában bináris számokként . A szoftvereszközök, például a fordítók lefordítják ezeket a magas szintű nyelveket a processzor által érthető utasításokra.

Az utasítások mellett az ISA meghatározza a számítógép olyan elemeit, amelyek a program rendelkezésére állnak - pl. Adattípusok , regiszterek , címzési módok és memória. Az utasítások ezeket a rendelkezésre álló elemeket regiszterindexekkel (vagy nevekkel) és memóriacímzési módokkal keresik.

A számítógép ISA -ját általában egy kis használati utasítás írja le, amely leírja az utasítások kódolását. Ezenkívül meghatározhat rövid (homályosan) mnemonikus neveket az utasításokhoz. A neveket az assembler nevű szoftverfejlesztő eszköz ismeri fel . Az assembler egy számítógépes program, amely az ISA ember által olvasható formáját számítógépre olvasható formává alakítja. A szétszerelők is széles körben elérhetők, általában hibakeresőkben és szoftverekben, hogy elkülönítsék és kijavítsák a bináris számítógépes programok hibáit.

Az ISA minősége és teljessége eltérő. A jó ISA kompromisszumot köt a programozói kényelem (mennyire könnyen érthető a kód), a kód mérete (mennyi kód szükséges egy adott művelet elvégzéséhez), az utasítások értelmezéséhez szükséges számítógép költségei között (a bonyolultabb működés több hardvert igényel dekódolni és végrehajtani az utasításokat), valamint a számítógép sebessége (a bonyolultabb dekódoló hardverrel hosszabb dekódolási idő). A memóriaszervezés határozza meg, hogy az utasítások hogyan lépnek kapcsolatba a memóriával, és hogyan működik a memória önmagával.

A tervezési emuláció során az emulátorok a javasolt utasításkészletben írt programokat futtathatják. A modern emulátorok mérhetik a méretet, a költségeket és a sebességet annak megállapítására, hogy egy adott ISA teljesíti -e céljait.

Számítógépes szervezet

A számítógépes szervezés segít optimalizálni a teljesítményalapú termékeket. Például a szoftverfejlesztőknek ismerniük kell a processzorok feldolgozási teljesítményét. Előfordulhat, hogy optimalizálniuk kell a szoftvert, hogy a legalacsonyabb áron a legtöbb teljesítményt érjék el. Ez a számítógép szervezetének meglehetősen részletes elemzését igényelheti. Például egy SD -kártyán a tervezőknek el kell rendezniük a kártyát, hogy a legtöbb adat a lehető leggyorsabban feldolgozható legyen.

A számítógépes szervezés segít egy adott projekthez tartozó processzor kiválasztásának megtervezésében is. A multimédiás projektekhez nagyon gyors adathozzáférésre, míg a virtuális gépekre gyors megszakításokra lehet szükség. Néha bizonyos feladatok további összetevőket is igényelnek. Például egy virtuális gépet futtató számítógépnek szüksége van virtuális memória hardverre, hogy a különböző virtuális számítógépek memóriája elkülönítve maradhasson. A számítógép szervezése és funkciói szintén befolyásolják az energiafogyasztást és a processzor költségeit.

Végrehajtás

Az utasításkészlet és a mikro-architektúra megtervezése után gyakorlati gépet kell kifejleszteni. Ez a kialakítás a folyamatot nevezzük végrehajtását . A megvalósítást általában nem építészeti tervezésnek, hanem inkább hardver tervezésnek tekintik . A megvalósítás további lépésekre bontható:

  • A logikai megvalósítás logikai kapu szinten tervezi meg a szükséges áramköröket .
  • Áramkör végrehajtása nem tranzisztor szintű minták alapvető elemek (pl, kapuk, multiplexerek , reteszek ), valamint az egyes nagyobb blokkok ( Alus , gyorsítótárak stb), hogy lehet végrehajtani a logikai-kapu szinten, vagy akár a fizikai szinten ha a dizájn ezt kéri.
  • A fizikai megvalósítás fizikai köröket rajzol. A különböző áramköri alkatrészeket egy chip alaprajzon vagy egy táblán helyezik el, és létrehozzák az őket összekötő vezetékeket.
  • A tervezési érvényesítés teszteli a számítógép egészét, hogy lássa, működik -e minden helyzetben és minden időpontban. A tervezési érvényesítési folyamat elindulása után a logikai szintű tervezést logikai emulátorok segítségével tesztelik. Ez azonban általában túl lassú ahhoz, hogy reális tesztet lehessen futtatni. Tehát az első teszt alapján elvégzett korrekciók után a prototípusok megalkothatók Field-Programmable Gate-Arrays ( FPGA ) segítségével. A legtöbb hobbiprojekt ebben a szakaszban megáll. Az utolsó lépés az prototípus integrált áramkörök tesztelése, amely több újratervezést igényelhet.

A CPU -k esetében a teljes megvalósítási folyamat másképpen van megszervezve, és gyakran CPU -tervezésnek nevezik .

Tervezési célok

A számítógépes rendszer pontos formája a korlátoktól és a céloktól függ. A számítógépes architektúrák általában kompatibilisek a szabványokkal, a teljesítmény és a teljesítmény, a költségek, a memóriakapacitás, a késleltetés (a késleltetés az az időtartam, amely alatt az egyik csomópontból származó információ a forráshoz jut) és az átviteli sebesség. Néha más szempontok is, mint a jellemzők, méret, súly, megbízhatóság és bővíthetőség, szintén tényezők.

A leggyakoribb séma mélyreható teljesítményelemzést végez, és kitalálja, hogyan lehet alacsonyan tartani az energiafogyasztást a megfelelő teljesítmény fenntartása mellett.

Teljesítmény

A modern számítógép teljesítményét gyakran leírják a ciklusonkénti utasítások (IPC), amelyek bármely órajel frekvencián mérik az architektúra hatékonyságát; a gyorsabb IPC arány azt jelenti, hogy a számítógép gyorsabb. A régebbi számítógépek IPC -értéke 0,1 volt, míg a modern processzorok könnyen megközelíthetik az 1 -es szintet.

A gépi nyelvű utasítások számlálása félrevezető lenne, mert különböző mennyiségű munkát végezhetnek különböző ISA-kban. Az "utasítás" a standard mérésekben nem az ISA gépi nyelvű utasításainak száma, hanem egy mértékegység, amely általában a VAX számítógépes architektúra sebességén alapul .

Sokan szokták a számítógép sebességét az órajel alapján mérni (általában MHz -ben vagy GHz -ben). Ez a CPU fő órájának másodpercenkénti ciklusaira vonatkozik. Ez a mutató azonban némileg félrevezető, mivel a magasabb órajelű gép nem feltétlenül rendelkezik nagyobb teljesítménnyel. Ennek eredményeként a gyártók a teljesítmény méréseként eltávolodtak az órajeltől.

Más tényezők is befolyásolják a sebességet, például a funkcionális egységek keveréke , a buszsebesség , a rendelkezésre álló memória, valamint a programok utasításainak típusa és sorrendje.

A sebességnek két fő típusa van: késleltetés és átviteli sebesség. A késleltetés a folyamat kezdete és befejezése közötti idő. Az áteresztés az időegységenként elvégzett munka mennyisége. A megszakítás késleltetése a rendszer garantált maximális válaszideje egy elektronikus eseményre (például amikor a lemezmeghajtó befejezi bizonyos adatok áthelyezését).

A teljesítményt a tervezési lehetőségek nagyon széles skálája befolyásolja - például a processzor csővezetékezése általában rontja a késleltetést, de javítja az átvitelt. A gépeket vezérlő számítógépeknek általában alacsony megszakítási késleltetésre van szükségük. Ezek a számítógépek valós idejű környezetben működnek, és meghibásodnak, ha egy műveletet nem fejeznek be meghatározott időn belül. Például a számítógéppel vezérelt blokkolásgátló fékeknek egy előre látható és korlátozott időn belül kell elkezdeniük a fékezést a fékpedál érzékelése után, különben a fék meghibásodik.

A benchmarking mindezeket a tényezőket figyelembe veszi azáltal, hogy méri azt az időt, amelyre a számítógépnek szüksége van egy tesztprogram végrehajtásához. Bár a benchmarking megmutatja az erősségeket, nem így kell választania a számítógépet. Gyakran a mért gépek különböző mértékekre osztódnak. Például az egyik rendszer gyorsan képes kezelni a tudományos alkalmazásokat, míg a másik gördülékenyebben jeleníti meg a videojátékokat. Ezenkívül a tervezők hardvert vagy szoftvert használva speciális funkciókat is megcélozhatnak és hozzáadhatnak termékeikhez, amelyek lehetővé teszik egy adott benchmark gyors végrehajtását, de nem kínálnak hasonló előnyöket az általános feladatokhoz.

Energia hatékonyság

Az energiahatékonyság egy másik fontos mérés a modern számítógépekben. A nagyobb energiahatékonyság gyakran cserélhető alacsonyabb sebesség vagy magasabb költségek mellett. A számítógépes architektúra energiafogyasztására vonatkozó tipikus mérés a MIPS/W (millió utasítás másodpercenként wattonként).

A modern áramköröknek kevesebb energiára van szükségük tranzisztoronként, ahogy növekszik a chipenkénti tranzisztorok száma. Ennek oka az, hogy minden tranzisztor, amelyet új chipbe helyeznek, saját tápegységet igényel, és új utakat kell létrehozni a táplálásához. Azonban a tranzisztorok száma chipenként lassabban növekszik. Ezért az energiahatékonyság kezd olyan fontossá válni, ha nem fontosabb, mint egyre több tranzisztor egyetlen chipbe való illesztése. A legújabb processzortervek ezt a hangsúlyt mutatják, mivel nagyobb hangsúlyt fektetnek az energiahatékonyságra, ahelyett, hogy a lehető legtöbb tranzisztorot egyetlen chipbe tömörítenék. A beágyazott számítógépek világában az energiahatékonyság régóta fontos cél az áteresztőképesség és a késleltetés mellett.

Változások a piaci keresletben

Az órajel gyakoriságának növekedése az elmúlt években lassabban nőtt, összehasonlítva a teljesítménycsökkentés fejlesztéseivel. Ennek oka a Moore -törvény vége, valamint a hosszabb akkumulátor -élettartam és a mobiltechnológia méretének csökkentése iránti igény. Ezt a fókuszváltozást a magasabb órajelektől az energiafogyasztásig és a miniatürizálásig mutatja az energiafogyasztás jelentős, akár 50%-os csökkenése, amelyet az Intel a Haswell mikroarchitektúra kiadásakor jelentett ; ahol az energiafogyasztási referenciaértéket 30-ról 40 wattra csökkentették 10-20 wattra. Ha összehasonlítjuk ezt a feldolgozási sebesség 3 GHz -ről 4 GHz -re történő növelésével (2002-2006), akkor látható, hogy a kutatás -fejlesztés középpontjában az órajel -frekvencia kerül, és az energiafogyasztás és a helyfoglalás felé fordul.

Lásd még

Hivatkozások

Források

Külső linkek