Központi feldolgozó egység

0 Comments
Lásd még: processzor tervezés

egy alapvető uniprocesszor-CPU számítógép blokkdiagramja. A fekete vonalak az adatáramlást jelzik, míg a piros vonalak a vezérlőáramot; a nyilak az áramlási irányokat jelzik.

Vezetékes a CPU áramkör egy sor alapvető műveleteket tud végrehajtani, az úgynevezett utasításkészlet. Az ilyen műveletek magukban foglalhatják például két szám hozzáadását vagy kivonását, két szám összehasonlítását vagy a program egy másik részéhez való ugrást., Minden alapvető műveletek képviseli egy adott kombinációja bit, ismert, mint a gépi nyelv órajelciklus alatt; míg a végrehajtó utasítások a gép nyelv program, a CPU eldönti, hogy melyik műveletet kell végrehajtani a “dekódolás”, a órajelciklus alatt. A teljes gépi nyelvi utasítás egy opkódból és sok esetben további bitekből áll, amelyek argumentumokat határoznak meg a művelethez (például összeadás esetén összegezendő számok). Megy fel a komplexitás skála, a gép nyelvi program gyűjteménye gép nyelvi utasításokat, hogy a CPU végrehajtja.,

a tényleges matematikai művelet minden utasítás által végzett kombinációs logikai áramkör a CPU processzor ismert aritmetikai logikai egység vagy ALU. Általánosságban elmondható, hogy a CPU végrehajtja az utasításokat a memóriából való lekéréssel, az ALU használatával egy művelet végrehajtásához, majd az eredményt a memóriába tárolja., Az integer matematikai és logikai műveletekre vonatkozó utasítások mellett számos más gépi utasítás is létezik, mint például a memóriából származó adatok betöltése és tárolása, elágazási műveletek, valamint a CPU lebegőpontos egysége (FPU) által végrehajtott lebegőpontos számokon végzett matematikai műveletek.

Control unitEdit

fő cikk: vezérlőegység

a vezérlőegység (CU) a processzor működését irányító CPU egyik összetevője., Azt mondja a számítógép memóriájában, számtani és logikai egység, valamint a bemeneti és kimeneti eszközök, hogyan kell reagálni az utasításokat, hogy küldtek a processzor.

vezérjelekkel irányítja a többi egység működését. A legtöbb számítógépes erőforrást a CU kezeli. Ez irányítja az adatáramlást a CPU és a többi eszköz között. John von Neumann a Von Neumann architektúra részeként a vezérlőegységet is magában foglalta., A modern számítógépes tervezésben a vezérlőegység jellemzően a CPU belső része, általános szerepe és működése változatlan a bevezetése óta.

Aritmetikai logikai unitEdit

Fő cikk: Aritmetikai logikai egység

Szimbolikus ábrázolása egy ALU, valamint a bemeneti, illetve kimeneti jelek

Az aritmetikai logikai egység (ALU) digitális áramkör belül a processzor végzi egész szám számtani, illetve bitenkénti logikai műveleteket., Az ALU bemenetei a működtetendő adatszavak( operandusok), a korábbi műveletek állapotinformációi, valamint a vezérlőegység kódja, amely jelzi, hogy melyik műveletet kell végrehajtani. A végrehajtandó utasítástól függően az operandusok belső CPU-regiszterekből vagy külső memóriából származhatnak, vagy maga az ALU által generált állandók lehetnek.

Ha az összes bemeneti jel az ALU áramkörön keresztül rendeződött és szaporodott, az elvégzett művelet eredménye az ALU kimenetein jelenik meg., Az eredmény egy adatszóból áll, amelyet egy regiszterben vagy memóriában lehet tárolni, valamint az állapotinformációkból, amelyeket általában egy erre a célra fenntartott speciális, belső CPU-regiszterben tárolnak.

Cím generációs unitEdit

Fő cikk: Cím generációs egység

Cím generációs egység (AGU), más néven cím számítási egység (ACU), kivégzés készülék belsejében a CPU, amely kiszámítja címeket használják a CPU-hozzáférés a fő memória., Azáltal, hogy a címszámításokat külön áramkörrel kezelik, amely a CPU többi részével párhuzamosan működik, csökkenthető a különböző gépi utasítások végrehajtásához szükséges CPU-ciklusok száma, így javítva a teljesítményt.

teljesítése Közben különböző műveletek, Cpu kell számítani memória címek szükséges elragadó adatokat a memória; például, memória pozíciók a tömb elemeit kell kiszámítani, mielőtt a CPU képes letölteni az adatokat általában a memória helyek., Ezek a címgenerációs számítások különböző egész számtani műveleteket foglalnak magukban, például összeadást, kivonást, modulo műveleteket vagy biteltolódásokat. A memória címének kiszámítása gyakran egynél több általános célú gépi utasítást foglal magában, amelyek nem feltétlenül dekódolják és hajtják végre gyorsan. Beépítésével egy AGU a CPU design, együtt bevezetése speciális utasításokat, hogy használja a AGU, különböző cím generációs számításokat rakomány érkezett, a többi a CPU, de gyakran kivégzik gyorsan, egyetlen CPU ciklus.,

az AGU képességei egy adott CPU-tól és annak architektúrájától függenek. Így néhány AGUs több címszámítási műveletet hajt végre és tesz ki, míg mások fejlettebb speciális utasításokat is tartalmaznak, amelyek egyszerre több operanduson is működhetnek. Ezenkívül egyes CPU-architektúrák több Agu-t is tartalmaznak, így egyszerre több címszámítási művelet is végrehajtható, további teljesítményjavításokat hozva a fejlett CPU-tervek szuperskaláris jellegének kihasználásával., Az Intel például több Agu-t is beépít a Sandy Bridge-be és a Haswell microarchitectures-be, amelyek növelik a CPU memória alrendszer sávszélességét azáltal, hogy lehetővé teszik a több memóriahozzáférési utasítás párhuzamos végrehajtását.

Memória kezelő egység (MMU)Edit

Fő cikk: Memory management unit

a Legtöbb high-end mikroprocesszorok (asztali, laptop, szerver számítógépek) a memória menedzsment egység, fordítás logikai cím fizikai RAM címek, feltéve, memória védelem, valamint személyhívó képességeit, hasznos a virtuális memória., Egyszerűbb processzorok, különösen mikrokontrollerek, általában nem tartalmaznak MMU.

CacheEdit

a CPU-gyorsítótár egy számítógép központi feldolgozóegysége (CPU) által használt hardver-gyorsítótár, amely csökkenti az átlagos költségeket (idő vagy energia) a fő memóriából származó adatok eléréséhez. A gyorsítótár egy kisebb, gyorsabb memória, közelebb a processzormaghoz, amely tárolja az adatok másolatait a gyakran használt fő memória helyekről. A legtöbb Cpu-k különböző független cache, beleértve a használati adatok cache, ahol az adatok cache általában szervezett, mint a hierarchia több cache szint (L1, L2, L3, L4, stb.,).

minden modern (gyors) CPU (kevés speciális kivétellel) több szintű CPU gyorsítótárral rendelkezik. Az első gyorsítótárat használó CPU-k csak egy szintű gyorsítótárral rendelkeztek; a későbbi 1. szintű gyorsítótárakkal ellentétben nem osztották fel L1d-re (adatokra) és L1i-re (utasításokra). Szinte az összes gyorsítótárral rendelkező jelenlegi CPU-nak van egy osztott L1 gyorsítótára. L2 gyorsítótárakkal is rendelkeznek, nagyobb processzorok esetében pedig L3 gyorsítótárakkal is. Az L2 gyorsítótár általában nem osztott, hanem a már megosztott L1 gyorsítótár közös tárolójaként működik. A többmagos processzor minden magjában van egy dedikált L2 gyorsítótár, amelyet általában nem osztanak meg a magok között., Az L3 gyorsítótár és a magasabb szintű gyorsítótárak megosztottak a magok között, és nem oszlanak meg. Az L4 gyorsítótár jelenleg nem gyakori, és általában dinamikus véletlen hozzáférésű memórián (DRAM), nem pedig statikus véletlen hozzáférésű memórián (SRAM), külön szerszámon vagy chipen található. Ugyanez volt a helyzet az L1 esetében is, míg a nagyobb chipek lehetővé tették az IT és általában az összes gyorsítótár-szint integrálását, az utolsó szint kivételével. A gyorsítótár minden további szintje általában nagyobb, és eltérő módon optimalizálható.,

léteznek más típusú gyorsítótárak (amelyek nem számítanak bele a fent említett legfontosabb gyorsítótárak “gyorsítótárának” méretébe), például a fordítási lookaside puffer (TLB), amely a legtöbb CPU-nak a memóriamenedzsment egység (MMU) része.

a gyorsítótárak általában két: 4, 8, 16 stb. KiB vagy MiB (nagyobb, nem L1) méretű, bár az IBM z13 96 KiB L1 utasítás-gyorsítótárral rendelkezik.

Clock rateEdit

fő cikk: órajel

a legtöbb CPU szinkron áramkör, ami azt jelenti, hogy órajelt alkalmaznak a szekvenciális műveletek ütemezéséhez., Az órajelt egy külső oszcillátor áramkör állítja elő, amely másodpercenként állandó számú impulzust generál periodikus négyzetes hullám formájában. Az óraimpulzusok frekvenciája határozza meg, hogy a CPU milyen sebességgel hajtja végre az utasításokat, következésképpen minél gyorsabb az óra, annál több utasítást hajt végre a CPU másodpercenként.

a CPU megfelelő működésének biztosítása érdekében az óraidőszak hosszabb, mint az összes jel CPU-n keresztüli terjesztéséhez (mozgatásához) szükséges maximális idő., Ha az óraidőszakot a legrosszabb esetben a késleltetés feletti értékre állítjuk, akkor lehetőség van a teljes CPU megtervezésére, valamint az adatok mozgatásának módjára az emelkedő és csökkenő órajel “szélei” körül. Ennek az az előnye, hogy jelentősen leegyszerűsíti a CPU-t, mind tervezési szempontból, mind pedig komponensszámlálási szempontból. Ugyanakkor azt a hátrányt is hordozza, hogy az egész CPU-nak meg kell várnia a leglassabb elemeit, annak ellenére, hogy egyes részei sokkal gyorsabbak. Ezt a korlátozást nagyrészt kompenzálták a CPU párhuzamosságának növelésére szolgáló különféle módszerek (lásd alább).,

azonban az építészeti fejlesztések önmagukban nem oldják meg a globális szinkron CPU-k összes hátrányát. Például egy órajel bármely más elektromos jel késésének van kitéve. Az egyre összetettebb CPU-k magasabb órajele megnehezíti az órajel fázisában (szinkronizálva) tartását az egész egységben. Ez vezetett sok modern CPU igényel több azonos órajel kell biztosítani, hogy ne késleltesse egyetlen jel jelentősen ahhoz, hogy a CPU hibás működését., Egy másik fontos kérdés, mivel az órajelek drámaian növekednek, a CPU által eloszlatott hőmennyiség. A folyamatosan változó óra sok alkatrész váltását okozza, függetlenül attól, hogy abban az időben használják-e őket. Általában egy kapcsoló komponens több energiát használ, mint egy statikus állapotban lévő elem. Ezért az órajel növekedésével az energiafogyasztás is növekszik, ami miatt a CPU több hőelvezetést igényel CPU hűtési megoldások formájában.,

a szükségtelen alkatrészek kapcsolásának egyik módját óraátállításnak nevezik, amely magában foglalja az órajel kikapcsolását szükségtelen alkatrészekre (hatékonyan letiltva őket). Ezt azonban gyakran nehéznek tekintik, ezért a nagyon alacsony fogyasztású kiviteleken kívül nem látja a közös felhasználást. Az egyik figyelemre méltó közelmúltbeli CPU-kialakítás, amely kiterjedt órajelet használ, az Xbox 360-ban használt IBM PowerPC-alapú Xenon; ily módon az Xbox 360 teljesítménykövetelményei jelentősen csökkentek., Egy másik módszer a globális órajellel kapcsolatos problémák megoldására az órajel teljes eltávolítása. Miközben eltávolítja a globális órajel teszi a tervezési folyamat lényegesen összetettebb, sok szempontból, aszinkron (vagy clockless) minták szállítására jelölt előnye, a fogyasztás pedig hőelvezetés összehasonlítva a hasonló szinkron tervez. Bár kissé ritka, teljes aszinkron CPU-k épültek globális órajel használata nélkül. Erre két figyelemre méltó példa az ARM kompatibilis amulett és a MIPS R3000 kompatibilis MiniMIPS.,

az órajel teljes eltávolítása helyett egyes CPU-tervek lehetővé teszik az eszköz bizonyos részeinek aszinkron használatát, például aszinkron ALUs használatát a szuperskalár csővezetékkel együtt, hogy aritmetikai teljesítménynövekedést érjenek el. Bár nem teljesen világos, hogy a teljesen aszinkron tervek hasonló vagy jobb szinten tudnak-e teljesíteni, mint a szinkron társaik, nyilvánvaló, hogy legalább az egyszerűbb matematikai műveletekben kiemelkednek., Ez, kombinálva a kiváló energiafogyasztás, hőelvezetés tulajdonságait, teszi őket nagyon alkalmas beágyazott számítógépek.

feszültségszabályozó moduleEdit

fő cikk: feszültségszabályozó modul

sok modern CPU-nak van egy die-integrált teljesítménykezelő modulja, amely szabályozza a CPU áramkör igény szerinti feszültségellátását, lehetővé téve, hogy egyensúlyt tartson a teljesítmény és az energiafogyasztás között.

integer rangeEdit

minden CPU numerikus értékeket képvisel egy adott módon., Például néhány korai digitális számítógép a számokat ismerős decimális (base 10) számrendszerértékként ábrázolta, mások pedig szokatlanabb ábrázolásokat alkalmaztak, mint például a ternary (base three). Szinte minden modern CPU számok bináris formában, minden számjegy által képviselt néhány kétértékű fizikai mennyiség, mint például a “magas” vagy “alacsony” feszültség.

egy hat bites szó, amely a 40 decimális érték bináris kódolt ábrázolását tartalmazza. A legtöbb modern CPU olyan szóméreteket alkalmaz, amelyek két, például 8, 16, 32 vagy 64 bit teljesítményűek.,

A numerikus ábrázoláshoz kapcsolódó egész számok mérete és pontossága, amelyeket a CPU képviselhet. Bináris CPU esetén ezt azon bitek számával mérik (egy bináris kódolt egész számjegy jelentős számjegye), amelyeket a CPU egy műveletben képes feldolgozni, amelyet általában szóméretnek, bitszélességnek, adatútszélességnek, egész pontosságnak vagy egész méretnek neveznek. A CPU egész mérete határozza meg a tartomány egész értékek közvetlenül működhet., Például egy 8 bites CPU közvetlenül manipulálhatja a nyolc bit által képviselt egész számokat, amelyek tartománya 256 (28) diszkrét egész érték.

az egész tartomány befolyásolhatja a CPU által közvetlenül címezhető memóriahelyek számát is (a cím egy egész szám, amely egy adott memória helyét jelöli). Például, ha egy bináris CPU használ 32 bit, hogy képviselje a memória címét, akkor közvetlenül cím 232 memória helyeken. E korlátozás megkerülése és más okok miatt egyes CPU-k olyan mechanizmusokat (például bankváltást) használnak, amelyek lehetővé teszik a további memória kezelését.,

a nagyobb szómérettel rendelkező CPU-k több áramkört igényelnek, következésképpen fizikailag nagyobbak, többet költenek, több energiát fogyasztanak (ezért több hőt termelnek). Ennek eredményeként a modern alkalmazásokban általában kisebb 4 vagy 8 bites mikrokontrollereket használnak, annak ellenére, hogy sokkal nagyobb szómérettel rendelkező CPU-k (például 16, 32, 64, akár 128 bites) is rendelkezésre állnak. Ha azonban nagyobb teljesítményre van szükség, a nagyobb szóméret (nagyobb Adattartományok és címterek) előnyei meghaladhatják a hátrányokat. A CPU lehet belső adat utak rövidebb, mint a szó méretét, hogy csökkentsék a méret és a költség., Például, bár az IBM System/360 utasításkészletet volt egy 32-bites utasításkészlet -, a System/360 Modell 30 Modell 40 volt, 8 bites adatok utak az aritmetikai logikai egység, úgy, hogy egy 32 bites hozzáadása szükséges négy ciklus, minden 8 bit az operandusok, valamint, annak ellenére, hogy a Motorola 68000-sorozat utasításkészletet volt egy 32-bites utasításkészlet, a Motorola 68000 valamint a Motorola 68010 16 bites adatok utak az aritmetikai logikai egység, szóval, hogy egy 32 bites hozzáadása szükséges két ciklus.,

az alsó és a magasabb bithosszok által nyújtott előnyök kihasználásához számos utasításkészlet különböző bitszélességgel rendelkezik az egész és lebegőpontos adatokhoz, lehetővé téve az utasításkészletet végrehajtó CPU-k számára, hogy az eszköz különböző részeinek különböző bitszélességei legyenek. Például az IBM System/360 utasításkészlet elsősorban 32 bites volt, de 64 bites lebegőpontos értékeket támogatott, hogy megkönnyítse a lebegőpontos számok nagyobb pontosságát és hatótávolságát., A System / 360 Model 65 egy 8 bites Adder tizedes és fixpontos bináris számtani és egy 60 bites adder lebegőpontos számtani. Sok későbbi CPU-terv hasonló vegyes bitszélességet használ, különösen akkor, ha a processzort általános célú használatra szánják, ahol az egész és lebegőpontos képesség ésszerű egyensúlyára van szükség.,

ParallelismEdit

Fő cikk: Párhuzamos számítási

Modell egy subscalar CPU, ahol tart tizenöt óra ciklusok, hogy teljes három utasítás

A leírás az alapvető műveletek a CPU kínált az előző rész ismerteti a legegyszerűbb formában, hogy egy CPU-t lehet venni. Ez a típusú PROCESSZOR, általában a továbbiakban subscalar, működik, majd végrehajt egy utasítást egy vagy két darab adatok egy időben, hogy kevesebb, mint egy utasítás per óra ciklus (IPC < 1).,

Ez a folyamat a subscalar CPU-kban rejlő hatástalanságot eredményezi. Mivel egyszerre csak egy utasítás kerül végrehajtásra, a teljes CPU-nak meg kell várnia, amíg az utasítás befejeződik, mielőtt folytatná a következő utasítást. Ennek eredményeként, a subscalar CPU kap “letette” az utasításokat, amelyek több mint egy órajel ciklus teljes végrehajtását. Még egy második végrehajtási egység hozzáadása (lásd alább) sem sokat javítja a teljesítményt; ahelyett, hogy egy útvonalat letennénk, most két út van felfüggesztve, és a fel nem használt tranzisztorok száma növekszik., Ez a kialakítás, ahol a CPU végrehajtási erőforrások működhet csak egy utasítást egy időben, csak akkor lehet elérni skaláris teljesítmény (egy utasítás óránkénti ciklus, IPC = 1). A teljesítmény azonban szinte mindig subscalar (óránkénti ciklusonként kevesebb, mint egy utasítás, IPC < 1).

a skalár és a jobb teljesítmény elérésére tett kísérletek számos tervezési módszert eredményeztek, amelyek miatt a CPU kevésbé lineárisan és inkább párhuzamosan viselkedik., Amikor hivatkozva, hogy a párhuzamosság, a Cpu, a két kifejezés általánosan használatosak ezek a tervezési technikák:

  • utasítás-szintű párhuzamosság (ILP), amelynek célja, hogy növelje az arány, amely utasításokat hajtják végre a CPU-egységen belül (azaz, hogy növelje a használja az on-die végrehajtási erőforrások);
  • feladat-szintű párhuzamosság (maradnak akkor), amely a céllal, hogy növelje a szálak száma, vagy a folyamatok, amelyek a CPU hajtja végre egyszerre.,

minden módszer különbözik mind a megvalósításuk módjától, mind a relatív hatékonyságtól, amelyet megengednek egy alkalmazás CPU teljesítményének növelésében.

utasítás szintű párhuzamosságszerkesztés

fő cikk: utasítás szintű párhuzamosság

alapvető ötfokozatú csővezeték. A legjobb esetben ez a csővezeték fenntarthatja az órajel ciklusonként egy utasítás teljesítési sebességét.,

a megnövekedett párhuzamosság eléréséhez használt egyik legegyszerűbb módszer az utasítások lekérésének és dekódolásának első lépéseinek megkezdése, mielőtt az előzetes utasítás befejezi a végrehajtást. Ez a legegyszerűbb formája az oktatás pipelining néven ismert technikának, amelyet szinte minden modern általános célú CPU-ban használnak. Pipelining lehetővé teszi, hogy egynél több utasítást kell végrehajtani egy adott időpontban lebontásával a végrehajtási útvonal diszkrét szakaszaiban., Ez a szétválasztás lehet, mint egy futószalagon, amelyben egy utasítást több befejezni minden szakaszában, amíg kilép a kivégzés csővezeték, illetve nyugdíjas.

a futószalagos működést azonban a lehetőségről, egy olyan helyzetet, ahol az eredmény az előző művelet befejezéséhez szükséges a következő művelet; feltétel gyakran nevezik adatok függőség konfliktus. Ahhoz, hogy megbirkózzunk ezzel, további gondossággal kell eljárni, hogy ellenőrizze az ilyen típusú feltételeket, és késleltesse egy részét az utasítás csővezeték, ha ez bekövetkezik., Természetesen ennek megvalósítása további áramkört igényel, így a vezetékes processzorok összetettebbek, mint az alcsaládok (bár nem nagyon jelentősen). A pipelined processzor válhat nagyon közel skalár, gátolta csak csővezeték standokon (utasítás kiadások több mint egy órajel ciklus egy szakaszban).

egy egyszerű szuperskalár csővezeték. A két utasítás egyszerre történő lekérésével és elküldésével óránkénti ciklusonként legfeljebb két utasítás teljesíthető.,

az utasításvezetékezés ötletének további javítása olyan módszer kifejlesztéséhez vezetett, amely még tovább csökkenti a CPU komponensek alapjárati idejét. A superscalarnak mondott tervek között szerepel egy hosszú utasításvezeték és több azonos végrehajtási egység, mint például a terheléstároló egységek, aritmetikai-logikai egységek, lebegőpontos egységek és címgeneráló egységek. Egy szuperskalár csővezetékben több utasítás olvasható és továbbadódik egy diszpécsernek, amely eldönti, hogy az utasítások párhuzamosan (egyidejűleg) végrehajthatók-e vagy sem., Ha igen, akkor a rendelkezésre álló végrehajtási egységekbe kerülnek, ami több utasítás egyidejű végrehajtását teszi lehetővé. Általánosságban elmondható, hogy minél több utasítást képes egy szuperskalár CPU egyszerre küldeni a várakozó végrehajtási egységekre, annál több utasítás fejeződik be egy adott ciklusban.

a superscalar CPU architektúra tervezésének legnagyobb nehézsége egy hatékony diszpécser létrehozásában rejlik., A diszpécsernek képesnek kell lennie arra, hogy gyorsan és helyesen határozza meg, hogy az utasítások párhuzamosan végrehajthatók-e, valamint hogy azokat oly módon küldje el, hogy a lehető legtöbb végrehajtó egységet elfoglalja. Ez megköveteli, hogy az utasításvezeték a lehető leggyakrabban legyen kitöltve, ami szükségessé teszi a szuperskalár architektúrákban a jelentős mennyiségű CPU-gyorsítótár használatát. Emellett a magas szintű teljesítmény fenntartásához elengedhetetlenné teszi az olyan veszélyelhárítási technikákat, mint a fióktelep-előrejelzés, a spekulatív végrehajtás, a regiszter átnevezés, a rendelésen kívüli végrehajtás és a tranzakciós memória., Ha megpróbálja megjósolni, hogy melyik ág (vagy útvonal) egy feltételes utasítás kerül, a CPU minimalizálhatja azt a hányszor, hogy a teljes csővezetéknek meg kell várnia, amíg egy feltételes utasítás befejeződik. A spekulatív végrehajtás gyakran szerény teljesítménynövekedést biztosít a kód olyan részeinek végrehajtásával, amelyekre szükség lehet A feltételes művelet befejezése után. A rendelésen kívüli végrehajtás némileg átrendezi azt a sorrendet, amelyben az utasításokat végrehajtják az adatfüggőség miatti késések csökkentése érdekében., Esetén is az egyedi utasítás stream multiple data stream—egy eset, amikor egy csomó adat, hogy az azonos típusú legyen feldolgozott—, modern processzorok letilthatja részei a csővezeték így, amikor egy utasítás végrehajtása sokszor, a CPU ugrik a fetch, majd dekódolni fázisok, így jelentősen növeli a teljesítményt bizonyos esetekben, különösen, ha szigorúan monoton program motorok, mint a videót készítő szoftver, fotó feldolgozás.,

abban az esetben, ha a CPU egy része szuperskála, egy része pedig nem, az a rész, amely nem szenved teljesítménybüntetést az ütemezési standok miatt. Az Intel P5 Pentium volt két superscalar ALUs, amely képes elfogadni egy utasítás óránkénti ciklusonként, de a FPU nem tudta elfogadni egy utasítás óránkénti ciklusonként. Így a P5 egész szuperskalár volt, de nem lebegőpontos szuperskalár. Az Intel utódja a P5 architektúra, P6, hozzáadott superscalar képességeit a lebegőpontos funkciók, így lehetővé tette jelentős növekedése lebegőpontos utasítás teljesítményét.,

mind az egyszerű pipelining, mind a superscalar kialakítás növeli a CPU ILP-jét azáltal, hogy egyetlen processzor számára lehetővé teszi az utasítások teljes végrehajtását órajel-ciklusonként egy utasítást meghaladó sebességgel. A legtöbb modern CPU-konstrukció legalább kissé szuperskalár, az elmúlt évtizedben tervezett szinte minden általános célú CPU szuperskalár. A későbbi években néhány hangsúlyt tervezésekor nagy ILP számítógépek költözött ki a CPU hardver, valamint a szoftver interfész, vagy utasításkészlet architektúra (ISA)., A stratégia a nagyon hosszú utasítás szó (VLIW) okoz némi ILP lesz hallgatólagos közvetlenül a szoftver, csökkentve a munka mennyiségét a CPU kell végezni, hogy növeljék ILP, ezáltal csökkentve a tervezés összetettségét.

Task-level parallelismEdit

főbb cikkek: többszálú és többmagos processzor

a teljesítmény elérésének másik stratégiája több szál vagy folyamat párhuzamos végrehajtása. Ezt a kutatási területet párhuzamos számítástechnikának nevezik. A Flynn taxonómia, ez a stratégia az úgynevezett több utasítás patak, több adatfolyam (MIMD).,

az erre a célra használt egyik technológia a multiprocessing (MP) volt. Ennek a technológiának a kezdeti ízét szimmetrikus többprocesszornak (SMP) nevezik, ahol kis számú CPU-nak koherens nézete van a memóriarendszerükről. Ebben a sémában minden CPU-nak további hardvere van a memória folyamatosan naprakész nézetének fenntartásához. A memória elavult nézeteinek elkerülésével a CPU-k ugyanazon a programon működhetnek együtt, a programok pedig áttérhetnek az egyik CPU-ról a másikra., Az 1990-es években bevezették az olyan rendszereket, mint a nem egységes memory access (NUMA) és a könyvtár alapú koherencia protokollok, hogy növeljék az együttműködő CPU-k számát. az SMP rendszerek kis számú CPU-ra korlátozódnak, míg a NUMA rendszerek több ezer processzorral épültek. A processzorok közötti összeköttetés megvalósításához kezdetben több különálló CPU-t és deszkát használtunk., Amikor a processzorokat és azok összekapcsolását egyetlen chipen valósítják meg, a technológiát chip szintű többprocesszorként (CMP), az egyetlen chipet pedig többmagos processzorként ismerik.

később felismerték, hogy a finomabb szemcsés párhuzamosság egyetlen programmal létezik. EGY program lehet, hogy több szál (vagy funkciók), hogy lehet végrehajtani külön vagy párhuzamosan. A technológia legkorábbi példái közül néhány beviteli/kimeneti feldolgozást hajtott végre, például a közvetlen memória-hozzáférést, mint egy külön szálat a számítási szálból., Ennek a technológiának az általánosabb megközelítését az 1970-es években vezették be, amikor a rendszereket több számítási szál párhuzamos futtatására tervezték. Ez a technológia az úgynevezett multi-threading (MT). Ez a megközelítés költséghatékonyabb, mint a többfeldolgozás, mivel a CPU-n belül csak kis számú komponenst replikálnak az MT támogatására, szemben az MP esetében a teljes CPU-val. Az Mt-ben a végrehajtó egységek és a memóriaegység, beleértve a gyorsítótárakat is, több szál között oszlanak meg., Az Mt hátránya, hogy a többszálú hardver támogatása jobban látható a szoftver számára, mint az MP, így a felügyeleti szoftvereknek, például az operációs rendszereknek nagyobb változásokon kell átesniük az MT támogatásához. Az egyik megvalósított MT típus időbeli többszálú, ahol egy szálat hajtanak végre, amíg meg nem áll, várva, hogy az adatok visszatérjenek a külső memóriából. Ebben a sémában a CPU ezután gyorsan kontextusba vált egy másik szálra, amely készen áll a futtatásra, a kapcsoló gyakran egy CPU órajelciklusban történik, például az UltraSPARC T1., Egy másik típusú MT egyidejű többszálú, ahol a több szálból származó utasításokat párhuzamosan hajtják végre egy CPU órajelcikluson belül.

az 1970-es évektől a 2000-es évek elejéig több évtizeden keresztül a nagy teljesítményű általános célú CPU-k tervezésének középpontjában nagyrészt a magas ILP elérése állt olyan technológiákon keresztül, mint a pipelining, a gyorsítótárak, a szuperskála végrehajtása, a rendelésen kívüli végrehajtás stb. Ez a tendencia csúcspontja a nagy, hataloméhes CPU-k, mint például az Intel Pentium 4., A 2000-es évek elejére a CPU tervezői megakadályozták, hogy az ILP technikák nagyobb teljesítményt érjenek el a CPU működési frekvenciái és a fő memória működési frekvenciái közötti növekvő különbség, valamint az ezoterikus ILP technikák miatt a CPU teljesítményeloszlása.

A CPU tervezői ezután ötleteket kölcsönöztek a kereskedelmi számítástechnikai piacokról, például a tranzakciós feldolgozásról, ahol több program, más néven átviteli Számítástechnika összesített teljesítménye fontosabb volt, mint egy szál vagy folyamat teljesítménye.,

Ez a fordított hangsúly bizonyítja elterjedése kettős és több core processzor tervez, nevezetesen, az Intel újabb tervez hasonlít a kevésbé superscalar P6 architektúra. Késő minták több processzor család kiállítás CMP, beleértve az x86-64-es Opteron, valamint Athlon 64 X2, a SPARC UltraSPARC T1, IBM POWER4, valamint POWER5, valamint több videojáték-konzol Cpu-k, mint az Xbox 360″s tripla-core PowerPC tervezés, valamint a PlayStation 3″s 7-core Sejt mikroprocesszor.,

adat párhuzamosságszerkesztés

főbb cikkek: Vektorprocesszor és SIMD

a processzorok (sőt, általában a számítástechnika) kevésbé gyakori, de egyre fontosabb paradigmája az adat párhuzamosságával foglalkozik. A korábban tárgyalt processzorokat mind valamilyen skaláris eszköznek nevezik. Ahogy a neve is sugallja, a vektorprocesszorok több adatdarabot kezelnek egy utasítás összefüggésében. Ez ellentétben áll a skalár processzorokkal, amelyek minden utasításhoz egy adatdarabbal foglalkoznak., A Flynn taxonómiáját használva az adatok kezelésének e két rendszerét általában egyetlen utasításfolyamnak, több adatfolyamnak (SIMD) és egyetlen utasításfolyamnak, egyetlen adatfolyamnak (SISD) nevezik. Az adatvektorokkal foglalkozó processzorok létrehozásának nagy hasznossága abban rejlik, hogy optimalizálják azokat a feladatokat, amelyek általában ugyanazt a műveletet (például egy összeget vagy egy pontterméket) igénylik nagy adatkészleten. Az ilyen típusú feladatok klasszikus példái közé tartoznak a multimédiás alkalmazások (képek, videó és hang), valamint számos tudományos és mérnöki feladat., Mivel egy skalár processzor kell a teljes folyamat elragadó, dekódolás, mind a végrehajtó minden utasításokat érték adatok halmaza, egy vektor processzor lehet végre egy műveletet egy viszonylag nagy adathalmazban egy utasítás. Ez csak akkor lehetséges, ha az alkalmazás általában sok lépést igényel, amelyek egy műveletet alkalmaznak egy nagy adatkészletre.

a legtöbb korai vektorprocesszor, mint például a Cray-1, szinte kizárólag tudományos kutatási és kriptográfiai alkalmazásokhoz kapcsolódott., Mivel azonban a multimédia nagyrészt átkerült a digitális médiára, a SIMD valamilyen formájának szükségessége az általános célú processzorokban jelentősvé vált. Röviddel azután, hogy a lebegőpontos egységek elterjedtek az általános célú processzorokban, a SIMD végrehajtó egységek specifikációi és implementációi is megjelentek az általános célú processzorok számára. Néhány ilyen korai SIMD specifikációk – mint a HP Multimedia Acceleration eXtensions (MAX), Intel”s MMX-voltak integer-csak., Ez jelentős akadálynak bizonyult egyes szoftverfejlesztők számára, mivel a SIMD előnyeit élvező alkalmazások közül sok elsősorban a lebegőpontos számokkal foglalkozik. A fejlesztők fokozatosan finomították és átalakították ezeket a korai terveket a közös modern SIMD specifikációkba, amelyek általában egy utasításkészlet-architektúrához (ISA) kapcsolódnak. Néhány figyelemre méltó modern példa az Intel Streaming SIMD kiterjesztések (SSE), valamint a PowerPC kapcsolatos AltiVec (más néven VMX).


Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük