Mi az a soron kívüli végrehajtás?

A számítógépek összetett gépek, amelyeknek nincs bonyolultabb alkatrésze, mint a CPU. Alapvetően úgy tűnik, hogy a CPU-nak viszonylag egyszerűnek kell lennie. Egy sor parancsot vesz fel, feldolgozza azokat, majd kiadja az adatokat. Ez azonban kevéssé hasonlít a modern CPU-k tényleges működéséhez.

Szub-skalártól szuperskalárig

A korai CPU-k pontosan olyanok voltak, mint amire számítottál. Egyénileg vették át az utasításokat, abban a sorrendben, ahogyan kapták őket, dolgozták fel teljesen, majd továbbléptek a következő utasításra. Az ilyen típusú CPU-k szubskalárisak voltak, órajelenként egy utasításnál kevesebbet tudtak végrehajtani. A CPU-tervezők megállapították, hogy egy utasítás végrehajtásának sok különböző szakasza van. Ezen szakaszok mindegyike más hardvert igényelt. Ez azt jelentette, hogy amikor egyetlen utasítást futtatunk a teljes sorozaton egyszerre, a hardver egyes részei tétlenül maradtak. Bármilyen processzorban a tétlen hardver haszontalan hardver.

Ennek a tétlen hardvernek a használatához a CPU-terveket a folyamatmenetes megközelítésre frissítették. Ez tovább különítette el a hardvereket az egyes szakaszokhoz, de lehetővé tette, hogy mindegyiket egyidejűleg egy utasítássorozattal használhassák. Bár még mindig eltartott néhány ciklusig, amíg minden utasítás áthalad a folyamaton, a teljes átviteli sebesség ciklusonként egy utasítás volt. Ez skalárossá tette a CPU-kat.

Ahhoz, hogy többet tudjunk csinálni, a processzorokat szuperskalárissá kellett tenni. Ennek érdekében több párhuzamos csővezetéket valósítottak meg.

A csővezetékek adatokkal való feltöltése

A számítógépek teljesítményével kapcsolatos fő probléma jellemzően a memória késleltetése. Sok utasítás adatokon működik, így az adatoknak rendelkezésre kell állniuk az utasítás végrehajtásához. A kérdés az, hogy mit tesz, ha várnia kell az adatokra, mert nem érhető el azonnal? Hagyományosan az volt a válasz, hogy el kell állni, és meg kell várni, amíg elérhetővé válik. Ez üresen hagyja az egész folyamatot, potenciálisan több száz CPU-ciklusra. A helyzet még rosszabbá válik, ha a párhuzamos folyamatban lévő két utasításnak várnia kell a memóriára, mivel az első még a második adatainak kérését is feltartja. Bár a CPU gyorsítótár segíthet megoldani ezt a problémát, mégsem tudja megoldani. A megoldáshoz új paradigmára volt szükség. Ez a paradigmaváltás az Out Of Order Execution vagy az OOO volt.

A folyamat első lépése az utasítás dekódolása. Ez azt jelenti, hogy ki kell dolgozni, hogy mit kell tenni, és ellenőrizni kell, hogy a művelethez szükséges adatok rendelkezésre állnak-e. Egy OOO CPU-ban a dekódolt utasítások egy sorba kerülnek. Csak akkor távolítják el őket a sorból, és csak akkor dolgozzák fel ténylegesen, ha a szükséges adatok rendelkezésre állnak. Kritikusan nem számít, milyen sorrendben kerültek az utasítások a sorba. Ha egy korai utasítás adatokra vár, egy újabb utasítás előre ugorhat, ha készen áll a használatra. Az OOO processzorok átrendezhetik a feldolgozni kívánt utasításokat a soron következő utasítások alapján, és a végrehajtásra kész utasítások alapján.

Kritikus függőségek

Ez a folyamat két dolgot feltételez. Először is, hogy a valódi függőségek megbízhatóan azonosíthatók és kezelhetők. Másodszor, hogy megbízhatóan kezelheti és azonosíthatja a hamis függőségeket. Mi a különbség? Nos, a valódi függőség olyan függőség, amelyet egyáltalán nem lehet enyhíteni egy OOO rendszerben. A legegyszerűbb példa az olvasás után-írás. Ha van egy utasítása, amely bizonyos adatokat ír, a másik pedig ezeket az adatokat olvassa be, akkor nincs mód az utasítások átrendezésére. Ezeket a bemutatás sorrendjében kell kitölteni, különben értelmetlen adatokat kapsz.

A hamis függőség az, amit egy másik ügyes trükkel el lehet rejteni. Vegyük például az írás utáni olvasást. Első pillantásra azt gondolhatja, hogy nem írhatja felül az adatokat, amíg el nem olvasta azokat. Azért a dolgok nem ilyen egyszerűek. Mi van, ha van egy másik hely, ahol beírhatja az új adatokat, majd a régi adatok beolvasása után felcserélheti az új és a régi adatokat? Ez a regiszter átnevezésének folyamata, és kritikus az OOO feldolgozáshoz.

Általában egy utasításkészlet meghatározza a rendszerben használt architekturális regiszterek meghatározott számát. Szó szerint nem szólíthatsz meg másokat. De mi van akkor, ha túlellátási nyilvántartásokat vezet? Legtöbbször csak elrejtheti őket, tárolhatja azokat az adatokat, amelyeket még nem kellett volna feldolgozni, majd egyszerűen felcserélheti a rejtett és az építészeti regiszterek címkéit, amikor az idővonal ismét megfelelő. Bármikor van pontosan megfelelő mennyiségű építészeti regiszter, csak nem feltétlenül mindig ugyanazon a helyen. Egy valós hasonlat a forró íróasztal lenne.

Következtetés

A soron kívüli végrehajtás egy feldolgozási paradigma, ahol az utasításokat a CPU végrehajtási időben dinamikusan átrendezheti. Ez a rendelkezésre álló adatokkal rendelkező legkorábbi utasítások alapján történik. Ez azt jelenti, hogy a folyamatba betöltött utasítások mindig készen állnak a végrehajtásra, és nincs késés az adatokra való várakozás során. Természetesen elég hosszú sorra van szükség ahhoz, hogy ne legyen tele adatra váró utasításokkal, de ez megvalósítási kihívás. Az OOO végrehajtása a regiszter átnevezésére támaszkodik a hamis függőségek elrejtése érdekében. Még akkor is, ha ezeket az utasításokat nem megfelelően hajtják végre, a regisztereket úgy nevezik át, hogy ezt a tényt elrejtse a számítógép többi része elől.


Merevlemez klónozása

Merevlemez klónozása

A modern digitális korban, ahol az adatok értékes eszközök, a merevlemez klónozása Windows rendszeren sokak számára döntő fontosságú folyamat lehet. Ez az átfogó útmutató

Hogyan javítható a WUDFRd illesztőprogram betöltése a Windows 10 rendszeren?

Hogyan javítható a WUDFRd illesztőprogram betöltése a Windows 10 rendszeren?

A számítógép indításakor a hibaüzenet azt jelzi, hogy nem sikerült betölteni a WUDFRd illesztőprogramot a számítógépére?

Az NVIDIA GeForce Experience hibakód 0x0003 kijavítása

Az NVIDIA GeForce Experience hibakód 0x0003 kijavítása

Az NVIDIA GeForce tapasztalati hibakód 0x0003 az asztalon? Ha igen, olvassa el a blogot, hogy megtudja, hogyan javíthatja ki ezt a hibát gyorsan és egyszerűen.

Mi az SMPS?

Mi az SMPS?

Mielőtt SMPS-t választana számítógépéhez, ismerje meg, mi az SMPS és mit jelent a különböző hatékonysági besorolások.

Miért nem kapcsol be a Chromebookom?

Miért nem kapcsol be a Chromebookom?

Válaszokat kaphat a következő kérdésre: Miért nem kapcsol be a Chromebookom? Ebben a Chromebook-felhasználóknak szóló hasznos útmutatóban.

Az adathalász csalások bejelentése a Google-nak

Az adathalász csalások bejelentése a Google-nak

Ebből az útmutatóból megtudhatja, hogyan jelentheti be a csalókat a Google-nak, hogy megakadályozza, hogy átverjenek másokat.

A Roomba megáll, kiáll és megfordul – Javítás

A Roomba megáll, kiáll és megfordul – Javítás

Javítsa ki azt a problémát, amikor a Roomba robotporszívója leáll, beragad, és folyamatosan megfordul.

Grafikai beállítások módosítása a Steam Decken

Grafikai beállítások módosítása a Steam Decken

A Steam Deck robusztus és sokoldalú játékélményt kínál az Ön keze ügyében. Azonban a játék optimalizálása és a lehető legjobb biztosítása érdekében

Mi az elszigetelésen alapuló biztonság?

Mi az elszigetelésen alapuló biztonság?

Egy olyan témában készültek elmélyülni, amely egyre fontosabbá válik a kiberbiztonság világában: az elszigeteltségen alapuló biztonsággal. Ez a megközelítés a

Az Auto Clicker használata Chromebookhoz

Az Auto Clicker használata Chromebookhoz

Ma egy olyan eszközzel készültünk, amely képes automatizálni az ismétlődő kattintási feladatokat a Chromebookon: az Automatikus klikkelőt. Ezzel az eszközzel időt takaríthat meg és