központi feldolgozó egység

Lásd még: Computer architecture and Digital Circuit.

Enteros Rangeedit

a CPU számainak ábrázolása olyan tervezési lehetőség, amely befolyásolja az eszköz működésének legalapvetőbb módjait. A korai digitális számológépek egy része a számok belső ábrázolására a közös tizedes számrendszer (tíz alap) elektromos modelljét használta. Néhány más számítógép egzotikusabb számozási rendszereket használt, például a hármas (harmadik alap). Szinte minden moderna CPU bináris formában képviseli a számokat, ahol minden számjegyet két érték bizonyos fizikai mennyisége képvisel, például “magas” vagy “alacsony”feszültség.

MOS 6502 mikroprocesszor kettős soros csomagban, rendkívül népszerű 8 bites kialakítás.

a numerikus ábrázolás a CPU által ábrázolható számok méretével és pontosságával függ össze. Bináris CPU esetén a bit egy jelentős pozícióra utal azokban a számokban, amelyekkel a CPU működik. A CPU által a számok ábrázolására használt bitek (vagy számpozíciók vagy számjegyek) számát gyakran “szóméretnek”, “bitszélességnek”, “adatútvonal-szélességnek” vagy “egész pontosságnak” nevezik, ha szigorúan egész számokkal foglalkozunk (szemben a lebegőpontos számokkal). Ez a szám különbözik az architektúrákon belül, és gyakran ugyanazon CPU különböző egységein belül. Például egy 8 bites CPU olyan számtartományt kezel, amelyet nyolc bináris számjegy képviselhet, mindegyik számjegy két lehetséges értékkel rendelkezik, a 8 Bit pedig 28 vagy 256 diszkrét számmal rendelkezik. Valójában az egész szám mérete hardverkorlátot határoz meg a szoftver által futtatott egész számok tartományára, amelyet a CPU közvetlenül használhat.

az egész tartomány befolyásolhatja a CPU által címezhető (lokalizálható) memóriapozíciók számát is. Például, ha egy bináris CPU 32 bitet használ egy memóriacím ábrázolására, és minden memóriacím egy bájtot (8 bitet) képvisel, akkor a CPU által megcímezhető memória maximális mennyisége 232 bájt vagy 4 GB. Ez egy nagyon egyszerű nézet a CPU címteréről, és sok moderna-terv sokkal összetettebb címmódszereket használ, mint például a lapozás, hogy több memóriát találjon, mint amennyit a teljes tartomány lehetővé tenné egy lapos címtér mellett.

az egész számtartomány magasabb szintjei több struktúrát igényelnek az extra számjegyek kezeléséhez, ezért nagyobb bonyolultságot, méretet, energiafelhasználást és általában költséget igényelnek. Ezért nem ritka, hogy a moderna alkalmazásokban 4 és 8 bites mikrovezérlőket használnak, annak ellenére, hogy sokkal nagyobb hatótávolságú (16, 32, 64, sőt 128 bites) CPU-k is rendelkezésre állnak. Az egyszerűbb mikrovezérlők általában olcsóbbak, kevesebb energiát fogyasztanak, így kevesebb hőt vezetnek el. Mindezek fontos tervezési szempontok lehetnek az elektronikus eszközök számára. A csúcskategóriás alkalmazásokban azonban a kiegészítő tartomány (gyakrabban a kiegészítő címtér) előnyei jelentősebbek, és gyakran befolyásolják a tervezési lehetőségeket. Az alacsonyabb és a magasabb bithossz által nyújtott előnyök megszerzése érdekében sok CPU-t különböző bitszélességgel terveztek a különböző eszközmeghajtókhoz. Például az IBM System / 370 többnyire 32 bites CPU-t használt, de lebegőpontos egységein belül 128 bites pontosságot használt, hogy megkönnyítse a nagyobb pontosságot és a lebegőpontos számok tartományát. Sok későbbi CPU-terv hasonló bitszélességű keveréket használ, különösen akkor, ha a processzort általános célú felhasználásra tervezték, ahol ésszerű egyensúlyra van szükség az egész és a lebegőpontos képesség között.

óra Frekvenciájaszerkesztés

fő cikk: Órajel frekvencia

a legtöbb CPU, sőt a legtöbb szekvenciális logikai eszköz szinkron jellegű. Ez azt jelenti, hogy szinkronizálási jel alapján tervezték és működnek. Ez az órajelként ismert jel általában periodikus négyzethullám formájában jelenik meg. Kiszámítva azt a maximális időt, amelyen az elektromos jelek mozoghatnak a CPU sok áramkörének különféle villáin, a tervezők kiválaszthatják az órajel megfelelő időszakát.

ennek az időszaknak hosszabbnak kell lennie, mint amennyi idő alatt a jel mozog, vagy a legrosszabb esetben terjed. Azáltal, hogy az órapontot sokkal nagyobb értékre állítja a legrosszabb esetben, lehetséges a teljes CPU megtervezése és az adatok mozgatásának módja az órajel emelkedésének és csökkenésének “szélei” körül. Ennek az az előnye, hogy jelentősen leegyszerűsíti a CPU-t, mind tervezési, mind komponensmennyiség szempontjából. Ennek azonban az a hátránya is, hogy a teljes CPU-nak meg kell várnia a lassabb elemeit, annak ellenére, hogy egyes egységei sokkal gyorsabbak. Ezt a korlátozást nagyrészt ellensúlyozta a CPU párhuzamosságának növelésére szolgáló számos módszer (lásd alább).

az építészeti fejlesztések azonban önmagukban nem oldják meg a globálisan szinkron CPU-k összes hátrányát. Például az órajel bármely más elektromos jel késleltetésének van kitéve. Az egyre összetettebb CPU-k nagyobb órajele megnehezíti az órajel fázisában (szinkronizálva) tartását az egész egységben. Ez sok moderna CPU-hoz vezetett, amelyek több azonos órajel megadását igényelték, hogy elkerüljék egyetlen jel elég lelassulását a CPU hibás működéséhez. Egy másik nagy probléma, amikor az órajel drámaian növekszik, az a hőmennyiség, amely eloszlik a CPU. Az órajel folyamatosan változik, aminek következtében sok alkatrész vált (állapotváltozás), függetlenül attól, hogy éppen használják-e őket. Általában egy állapotváltozó komponens több energiát használ fel, mint egy statikus állapotban lévő elem. Ezért az órajel sebességének növekedésével a hőelvezetés is növekszik, ami a CPU-nak hatékonyabb hűtési megoldásokat igényel.

a felesleges alkatrészek váltásának egyik módszerét órakapunak nevezzük, amely magában foglalja az órajel kikapcsolását a felesleges alkatrészekre, hatékonyan letiltva azokat. Ezt azonban gyakran nehezen megvalósíthatónak tekintik, ezért a nagyon alacsony teljesítményű kialakításokon kívül nem lát közös felhasználást. Figyelemre méltó késői CPU-kialakítás, amely széles órakaput használ a videojáték-konzol energiaigényének csökkentésére, az IBM PowerPC-jén alapuló Xbox 360. A globális órajel néhány problémájának kezelésének másik módja annak teljes eltávolítása. Míg a teljes jel eltávolítása az óráról sok szempontból jelentősen összetettebbé teszi a tervezési folyamatot, összehasonlítva a hasonló szinkron tervekkel, az aszinkron (vagy nem órás) tervek jelentős előnyökkel járnak az energiafogyasztás és a hőelvezetés terén. Bár ritka, a teljes CPU-kat globális órajel használata nélkül építették. Két figyelemre méltó példa erre az AMULET, amely megvalósítja az ARM architektúrát, és a MiniMIPS, amely támogatja a MIPS R3000-et. Az órajel teljes eltávolítása helyett egyes CPU-konstrukciók lehetővé teszik bizonyos eszközegységek aszinkron használatát, például az ALU használatát a szuperskalár csővezetékkel együtt, hogy bizonyos aritmetikai teljesítménynövekedést érjenek el. Bár nem teljesen világos, hogy a teljesen aszinkron minták összehasonlítható vagy jobb szinten teljesíthetnek-e, mint szinkron társaik, nyilvánvaló, hogy legalább a legegyszerűbb matematikai műveletekben kiemelkednek. Ez a kiváló energiafogyasztásukkal és hőelvezetési jellemzőikkel együtt kiválóan alkalmas a beágyazott rendszerekhez.

Párhuzamosságszerkesztés

fő cikk: párhuzamos számítás
modell egy subscalar CPU. Vegye figyelembe, hogy a három utasítás befejezéséhez tizenöt ciklus szükséges.

a CPU alapműveletének az előző szakaszban bemutatott leírása leírja a CPU legegyszerűbb formáját. Ez a fajta CPU, amelyet általában alskálának neveznek, egyetlen utasításon működik és hajt végre egyszerre egy vagy két adatot.

ez a folyamat eredendő hatástalanságot eredményez az alskála CPU-kban. Mivel egyszerre csak egy utasítás kerül végrehajtásra, a teljes CPU-nak meg kell várnia az utasítás befejezését, mielőtt folytatná a következő utasítást. Ennek eredményeként az alskaláris CPU” megbénul ” olyan utasításokban, amelyek egynél több óraciklust igényelnek a végrehajtás befejezéséhez. Még egy második végrehajtó egység hozzáadása (lásd alább) sem javítja jelentősen a teljesítményt. Ahelyett, hogy egy út befagyott volna, most két út megbénult, és a fel nem használt tranzisztorok száma növekszik. Ez a kialakítás, ahol a CPU végrehajtási erőforrásai egyszerre csak egy utasítással működhetnek, csak skaláris teljesítményt érhet el (órajelciklusonként egy utasítás). A teljesítmény azonban szinte mindig alskála (ciklusonként kevesebb, mint egy utasítás).

a skalár és a jobb teljesítmény elérésére tett kísérletek számos olyan tervezési módszert eredményeztek, amelyek miatt a CPU kevésbé lineárisan és inkább párhuzamosan viselkedik. Amikor a CPU-k párhuzamosságáról van szó, általában két kifejezést használnak e tervezési technikák osztályozására.

  • utasítás szintű párhuzamosság (ILP) arra törekszik, hogy növelje az utasítások végrehajtásának sebességét a CPU-n belül, azaz növelje a végrehajtási erőforrások kihasználását a táblagépen.
  • Szálszintű párhuzamosság (Thread level parallelism, TLP), amelynek célja, hogy növelje a CPU által egyidejűleg futtatható szálak (gyakorlatilag egyedi programok) számát.

mindegyik módszertan különbözik mind a megvalósítás módjától, mind az alkalmazás CPU-teljesítményének növelésében elért relatív hatékonyságától.

ILP: szegmentálás és szuperskalár architektúraszerkesztés

főbb cikkek: szegmentálás (elektronika) és szuperskalár.
alapvető ötlépcsős csővezeték. Legjobb esetben ez a cső ciklusonként egy utasítás befejezési arányát képes fenntartani.

a párhuzamosság növelésének egyik legegyszerűbb módja az utasítás olvasásának és dekódolásának első lépéseinek megkezdése,mielőtt az előző utasítás befejeződött. Ez az utasítás-csővezetékezés néven ismert technika legegyszerűbb formája, amelyet szinte az összes moderna általános célú CPU-ban használnak. A végrehajtási útvonal diszkrét szakaszokra osztásával a csővezeték lehetővé teszi egynél több utasítás végrehajtását egyszerre. Ez az elválasztás összehasonlítható egy futószalaggal, amelyben az utasítás minden szakaszban teljesebbé válik, amíg ki nem lép a végrehajtó csőből, és el nem távolítják belőle.

a folyamat azonban bevezeti egy olyan helyzet lehetőségét, amikor az előző művelet eredményét le kell állítani a következő művelet befejezéséhez; ezt a feltételt gyakran adatfüggőségi konfliktusnak nevezik. Ahhoz, hogy megbirkózzunk ezzel, különös figyelmet kell fordítani az ilyen jellegű feltételek ellenőrzésére, és ha ez megtörténik, Az utasításvezeték egy részét el kell halasztani. Természetesen ennek elérése további áramköröket igényel, a vezetékes processzorok összetettebbek, mint az alskálák, de nem sok. A vezetékes processzor szinte teljesen skaláris lehet, csak a hirtelen csőmegállások gátolják (egy szakaszban egynél több óraciklust tartó utasítás).

egyszerű szuperskalár szegmentálás. Két utasítás egyszerre történő felolvasásával és elküldésével ciklusonként legfeljebb két utasítás teljesíthető.

az utasítás-csővezeték ötletének további fejlesztése egy olyan módszer kifejlesztéséhez vezetett, amely tovább csökkenti a CPU-komponensek üresjárati idejét. A szuperskalároknak nevezett tervek egy hosszú utasítássort és több azonos végrehajtó egységet tartalmaznak. Egy szuperskalár csőben több utasítás olvasható és továbbítható egy diszpécsernek, amely eldönti, hogy az utasítások párhuzamosan (egyidejűleg) végrehajthatók-e vagy sem. Ha igen, akkor azokat a rendelkezésre álló végrehajtási egységekhez küldik, ami lehetővé teszi több utasítás egyidejű végrehajtását. Általánosságban elmondható, hogy minél több utasítást képes egy szuperskalár CPU egyszerre elküldeni a készenléti végrehajtó egységeknek, annál több utasítás lesz befejezve egy adott ciklusban.

a szuperskalár 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 meghatározza, hogy az utasítások párhuzamosan végrehajthatók-e, valamint olyan módon küldje el őket, hogy a lehető legtöbb végrehajtási egységet elfoglalja. Ez megköveteli, hogy az utasításfolyamatot a lehető leggyakrabban töltsék ki, és növeli a szuperskalár architektúrákban a jelentős mennyiségű CPU-gyorsítótár szükségességét. Ez olyan technikákat is létrehoz, amelyek elkerülik az olyan veszélyeket, mint a fork prediction, a spekulatív végrehajtás és az Out-of-order végrehajtás, amelyek kulcsfontosságúak a magas szintű teljesítmény fenntartásához. Ha megpróbálja megjósolni, hogy a feltételes utasítás melyik ágat (vagy útvonalat) veszi igénybe, a CPU minimalizálhatja, hogy a teljes csatornának hányszor kell várnia a feltételes utasítás befejezéséig. A spekulatív végrehajtás gyakran szerény teljesítménynövekedést eredményez a kód olyan részeinek végrehajtásával, amelyekre a feltételes művelet befejezése után nem feltétlenül van szükség. A végrehajtási megbízáson kívül valahogy megváltoztatja az utasítások végrehajtásának sorrendjét, hogy csökkentse az adatfüggőség miatti késéseket. Szintén abban az esetben, egyedi utasításokat több adat — a modern processzorok, abban az esetben, ha már feldolgozott nagy mennyiségű adat az azonos típusú, letilthatja részei a csővezeték úgy, hogy ha fut egy mondat sokszor, a CPU kihagyja a rögzítés és dekódolás fázisok, és így nagyban növeli a teljesítményt bizonyos alkalmakkor, különösen a motorok programok rendkívül monoton, mint a szoftver létrehozására videó és fotó feldolgozás.

abban az esetben, ha a CPU egy része szuperskalár, egy része pedig nem, akkor az a rész, amely nem szuperskalár, az idő leállása miatt szenved a teljesítményben. Az eredeti Intel Pentium (P5) két szuperskalár Alu-val rendelkezett, amelyek órajelciklusonként egy utasítást tudtak elfogadni, de FPU-ja nem tudott elfogadni egy utasítást órajelciklusonként. Így a P5 szuperskalár volt az egész számok részében, de nem volt lebegőpontos számok szuperskalárja. Az Intel Pentium architektúrájának utódja, a P6 szuperskalár képességekkel egészítette ki lebegőpontos funkcióit, így jelentősen megnövelte az ilyen utasítások teljesítményét.

mind a szuperskalár kialakítás, mind az egy burkolat növeli a CPU ILP-jét azáltal, hogy lehetővé teszi egyetlen processzor számára az utasítások végrehajtásának befejezését olyan arányok mellett, amelyek meghaladják az egy utasítást ciklusonként (IPC). A legtöbb moderna CPU-terv legalább kissé szuperskalár, és az elmúlt évtizedben szinte minden általános célú CPU-terv szuperskalár. Az elmúlt években a magas ILP számítógép-tervezés hangsúlyának egy része a CPU hardveréről a szoftver felületére vagy az ISA-ra költözött. A nagyon hosszú utasítás szó stratégia, vagy VLIW, néhány ILP-t közvetlenül a szoftver implikál, csökkentve a CPU által elvégzendő munka mennyiségét, hogy jelentős lendületet adjon az ILP-nek, és ezáltal csökkentse a tervezés összetettségét.

Szálszintű Parallelismedit

a teljesítmény elérésének másik stratégiája több program vagy szál párhuzamos futtatása. Ezt a kutatási területet párhuzamos számításnak nevezik. Flynn taxonómiájában ezt a stratégiát több Multi-data utasításnak vagy MIMD-nek nevezik.

az egyik erre a célra használt technológia a multiprocessing (MP) volt. Ennek a technológiának a beindítása szimmetrikus multiprocesszoros (SMP) néven ismert, ahol kis számú CPU koherens képet alkot a memóriarendszeréről. Ebben a sémában minden CPU további hardverrel rendelkezik a memória folyamatosan frissített nézetének fenntartásához. Az elavult memórialátogatások elkerülése érdekében a CPU-k együttműködhetnek ugyanabban a programban, és a programok áttelepülhetnek egyik CPU-ról a másikra. Az együttműködő CPU-k számának néhány fölé történő növelése érdekében 1990-ben olyan sémákat vezettek be, mint a nem egységes memória-hozzáférés (numa) és a könyvtár alapú koherencia protokollok. Az SMP rendszerek csak kis számú CPU-ra korlátozódnak, míg a NUMA rendszereket több ezer processzorral építették. Kezdetben a többprocesszoros processzorokat több különálló CPU és tábla felhasználásával építették fel, hogy megvalósítsák a processzorok közötti összekapcsolást. Amikor a processzorokat és azok összekapcsolását egyetlen szilícium chipen valósítják meg, a technológiát többmagos processzornak nevezik.

később felismerték, hogy nagyon szoros párhuzamosság van egyetlen programmal. Egyetlen programnak több szála (vagy funkciója) lehet, amelyek külön-külön vagy párhuzamosan futtathatók. Ennek a technológiának néhány korai példája megvalósította a bemeneti / kimeneti feldolgozást, például a közvetlen memóriahozzáférést a számított száltól külön szálként. Az 1970-es években ennek a technológiának egy általánosabb megközelítését vezették be, amikor a rendszereket úgy tervezték, hogy több számítási szálat párhuzamosan futtassanak. Ez a technológia multithreading (MT) néven ismert.

ezt a megközelítést költséghatékonyabbnak tekintik, mint a többprocesszoros, mivel a CPU-n belül csak kis számú komponens replikálódik az MT támogatására, szemben az MP esetében a teljes CPU-val. Az MT-ben a végrehajtási egységek és a memóriarendszer, beleértve a gyorsítótárakat is, több szál között vannak megosztva. Az MT hátránya, hogy a többszálas hardveres támogatás jobban látható a szoftverek számára, mint az MP, ezért a felügyeleti szoftvereknek és operációs rendszereknek nagyobb változásokon kell átesniük az MT támogatásához. A megvalósított MT egyik típusa a többszálú blokk, ahol egy szálat addig futtatnak, amíg megbénul, várva, hogy az adatok visszatérjenek a külső memóriából. Ebben a sémában a CPU-nak gyorsan át kell váltania egy másik szálra, amely készen áll a futtatásra, a kapcsoló sokszor CPU órajelet hajt végre, mint például az UltraSPARC technológia. Az MT másik típusát szimultán többszálúnak nevezzük, ahol a többszálú utasításokat párhuzamosan hajtják végre egy CPU órajelcikluson belül.

Data Parallelismedit

fő cikkek: Vektorprocesszor és SIMD.

egy kevésbé gyakori, de egyre fontosabb CPU-paradigma (sőt, általában a számítástechnika) a vektorokkal foglalkozik. A fent tárgyalt processzorokat mind egy bizonyos típusú skaláris eszköznek nevezik. Ahogy a neve is mutatja, a vektorprocesszorok több adatot kezelnek egy utasítás összefüggésében, ellentétben a skaláris processzorokkal, amelyek minden utasításhoz egy adatot kezelnek. Ezt a két adatkezelési rendszert általában SISD-nek (single instruction, single data) és SIMD-nek (single instruction, multiple data) nevezik. Az adatvektorokkal foglalkozó CPU-k létrehozásának nagy hasznossága abban rejlik, hogy optimalizálja azokat a feladatokat, amelyek általában ugyanazt a műveletet igénylik, például egy összeget vagy skaláris terméket, amelyet nagy adathalmazon kell végrehajtani. Az ilyen típusú feladatok klasszikus példái a multimédiás alkalmazások (képek, videó és hang), valamint számos tudományos és mérnöki feladat. Míg a skaláris CPU-nak be kell fejeznie az adatkészlet minden utasításának és értékének olvasását, dekódolását és végrehajtását, a vektor CPU egy egyszerű műveletet hajthat végre egy viszonylag nagy adatkészleten egyetlen utasítással. Természetesen 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 Vektor CPU, mint például a Cray-1, szinte kizárólag tudományos kutatásokhoz és kriptográfiai alkalmazásokhoz kapcsolódott. Mivel azonban a multimédia nagyrészt a digitális médiára tolódott el, az általános célú CPU-kban a SIMD valamilyen formájának szükségessége jelentősvé vált. Nem sokkal azután, hogy általánossá vált a lebegőpontos egységek beépítése az általános célú processzorokba, megjelentek az általános célú CPU-k SIMD végrehajtó egységeinek specifikációi és implementációi is. Néhány ilyen korai SIMD specifikáció, például az Intel MMX, csak egész számokra vonatkozott. Ez jelentős akadálynak bizonyult egyes szoftverfejlesztők számára, mivel a SIMD-ben részesülő alkalmazások közül sok többnyire lebegőpontos számokkal foglalkozott. Ezeket a korai terveket fokozatosan finomították és átalakították néhány közös, moderna SIMD specifikációvá, amelyek általában az ISA-hoz kapcsolódnak. Figyelemre méltó moderna példák közé tartozik az Intel SSE és a PowerPC-hez kapcsolódó AltiVec (más néven VMX).

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

Az e-mail-címet nem tesszük közzé.