Processzor következetessége - Processor consistency

A processzor konzisztenciája az egyidejű számítás területén alkalmazott konzisztencia modellek (pl. Elosztott megosztott memória , elosztott tranzakciók stb.).

A rendszer akkor mutat processzor-konzisztenciát, ha az a sorrend, ahogyan más processzorok látják az egyes processzorok írásait, megegyezik a kiadásuk sorrendjével. Emiatt a processzorkonzisztencia csak a több processzorral rendelkező rendszerekre alkalmazható. Gyengébb, mint az okozati konzisztencia modell, mivel nem követeli meg, hogy az összes processzor írásait ugyanabban a sorrendben lássa , de erősebb, mint a PRAM konzisztencia modell, mert megköveteli a gyorsítótár koherenciáját . Az ok-okozati konzisztencia és a processzor-konzisztencia másik különbsége az, hogy a processzor-konzisztencia megszünteti a rakományokra vonatkozó követelményeket, hogy várjanak az üzletek teljesítését, és az írási atomitást . A processzor konzisztenciája is erősebb, mint a gyorsítótár konzisztencia, mivel a processzor konzisztenciája megköveteli, hogy a processzor minden írását rendben láthassa, és ne csak ugyanahhoz a memóriahelyhez írjon.

Példák a processzor konzisztenciájára

1. példa: A processzor konzisztens
P 1 W (x) 1 W (x) 3
P 2 R (x) 1 R (x) 3
P 3 W (y) 1 W (y) 2
P 4 R (y) 1 R (y) 2
2. példa: A processzor nem konzisztens
P 1 W (x) 1 W (x) 3
P 2 R (x) 3 R (x) 1
P 3 W (y) 1 W (y) 2
P 4 R (y) 2 R (y) 1

A jobb oldali 1. példában az egyszerű rendszer a processzor konzisztenciáját követi, mivel az egyes processzorok minden írását abban a sorrendben tekintik, amelyben a többi processzor végrehajtotta, és a tranzakciók koherensek. A 2. példa NEM a folyamatos konzisztencia, mivel a P1 és a P3 írásai P2 és P4 szerint nem láthatóak.

Az alábbi 3. példában a legerősebb alkalmazható konzisztenciamodell a Processor következetesség. Ez triviális a meghatározáshoz, mert processzoronként csak egy írási lehetőség van. Ez a példa azonban nem okozati szempontból következetes, mivel R (x) 1 előfordulásakor a W (x) 2 előtt előfordulhat, hogy a W (x) 2 -be írt érték eltérhet, feltételezve, hogy W (x) 2 R (x) 1-től függ .

A 4. példában szereplő rendszer nem egyezik meg a processzorral, mivel ugyanazon processzor egyes írásait más processzorok nem látják rendben. Pontosabban, az egyetlen helyre történő írást sorrendben láthatjuk, de a P1 által x-re írt írást P2 nem látja az y írása előtt. Az a tény, hogy az egyetlen, rendben látott írás ugyanabba a memóriahelybe írja, korlátozza ezt a példát a gyorsítótár-konzisztenciára.

3. példa: Oko: Nem; Processzor: Igen
P 1 W (x) 1
P 2 R (x) 1 W (x) 2
P 3 R (x) 1 R (x) 2
P 4 R (x) 1 R (x) 2
4. példa: Processzor: Nem; Gyorsítótár: Igen
P 1 W (x) 2 W (y) 4 W (x) 3 W (y) 1
P 2 R (y) 4 R (x) 1 R (y) 2 R (x) 2

A processzor konzisztenciája a szekvenciális konzisztencia között

A processzor konzisztenciája (PC) megkönnyíti az idősebb áruházak és a fiatalabb rakományok közötti megrendelést, amelyet szekvenciális konzisztenciában (SC) hajtanak végre . Ez lehetővé teszi a rakományok kiadását a gyorsítótárba, és potenciálisan befejezhetők a régebbi tárolások előtt, vagyis a tárolók sorban állhatnak egy írópufferben anélkül, hogy szükség lenne rakomány-spekulációra (a betöltések szabadon folytatódhatnak). Ebben a tekintetben a PC jobban teljesít, mint az SC, mivel a sikertelen spekulációk helyreállítási technikái nem szükségesek, ami kevesebb csővezeték-kiöblítést jelent. Az SC rendszerek által alkalmazott előre letöltési optimalizálás a PC rendszerekre is alkalmazható. Az előzetes letöltés az adatok előzetes beolvasása a közelgő rakományokról és tárolásokról, mielőtt ténylegesen szükséges lenne, a terhelés / tárolási késés csökkentése érdekében. Mivel a PC csökkenti a terhelés késleltetését azáltal, hogy lehetővé teszi a rakományok újrarendelését a megfelelő tárolók előtt, az előhúzás szükségessége némileg csökkent, mivel az előre töltött adatokat inkább tárolókra, mint rakományokra használják.

A programozó intuíciója

Annak szempontjából, hogy a PC-rendszer milyen jól követi a programozó intuícióját, kiderül, hogy a megfelelően szinkronizált rendszerekben a PC és az SC eredménye ugyanaz. A programozó intuíciója alapvetően az, ahogyan a programozó elvárja az utasítások végrehajtását, általában az úgynevezett „program sorrendben”. A program sorrendje egy többprocesszoros rendszerben az utasítások végrehajtása, amely ugyanazt az eredményt adja, mint a szekvenciális végrehajtás. Az a tény, hogy a PC és az SC egyaránt követik ezt az elvárást, annak közvetlen következménye, hogy a PC rendszerekben a megfelelő rakományokat és tárolóeszközöket továbbra is egymáshoz viszonyítva rendezzük. Például a zár szinkronizálásában az egyetlen művelet, amelynek viselkedését a PC nem határozza meg teljesen, a zár-szerzés tároló, ahol a következő terhelések a kritikus szakaszban vannak, és sorrendjük befolyásolja az eredményt. Ezt a műveletet azonban rendszerint tároló feltételes vagy atomi utasításokkal hajtják végre, úgy hogy ha a művelet kudarcot vall, később megismétlődik, és az összes fiatalabb terhelés is megismétlődik. Az ezen áruház előtt felmerülő összes rakományt továbbra is megrendeljük a kritikus szakaszban fellépő rakományok vonatkozásában, és mint ilyen, az összes régebbi rakománynak be kell fejeződnie, mielőtt a kritikus szakaszban lévő rakományok futni tudnának.

Processzor konzisztencia vs más nyugodt konzisztencia modellek

A processzor konzisztenciája, bár gyengébb, mint a szekvenciális konzisztencia, a legtöbb esetben továbbra is erősebb konzisztencia modell, mint amire szükség van. Ennek oka a multiprocesszoros rendszereken futó programokhoz társított szinkronizálási pontok száma. Ez azt jelenti, hogy nem lehet adatverseny (adatsor több egyidejű hozzáférés a memóriahelyhez, ahol legalább egy hozzáférés írás). Ezt szem előtt tartva egyértelmű látni, hogy egy modell lehetővé teheti az összes memóriaművelet átszervezését, mindaddig, amíg egyetlen művelet sem keresztezi a szinkronizációs pontot, és egy, a Gyenge Rendezés néven működik. A gyenge megrendelés ugyanakkor korlátozza a processzor konzisztenciáját, nevezetesen azt, hogy a rendszernek koherensnek kell maradnia, és így az összes memóriahelyre írást minden processzornak azonos sorrendben kell látnia. A gyenge megrendeléshez hasonlóan a kiadási konzisztencia modell lehetővé teszi az összes memóriaművelet átrendezését, de még pontosabbá válik, és lebontja a szinkronizálási műveleteket, hogy az átrendezések jobban ellazuljanak. Meg kell azonban jegyezni, hogy mindkét modell feltételezi a kód megfelelő szinkronizálását és egyes esetekben a hardveres szinkronizálást is, és ezért a processzor konzisztenciája biztonságosabb modell, amelyet be kell tartani, ha bizonytalan a programok megbízhatóságában. futtatni kell a modell segítségével.

Hasonló a SPARC V8 TSO, az IBM-370 és az x86-TSO memória modellekhez

A processzor konzisztenciájának egyik fő alkotóeleme az, hogy ha az írást, majd az olvasást követi, akkor a program sorrendjétől eltérő módon hajtható végre. Ez alapvetően az írási késés elrejtését eredményezi, amikor a rakományok hagyják elmenni az üzletek előtt. Mivel sok alkalmazás helyesen működik ezzel a szerkezettel, az ilyen típusú nyugodt rendezést végrehajtó rendszerek általában egymás után következetesnek tűnnek. Két további modell, amely megfelel ennek a specifikációnak, a SPARC V8 TSO (teljes áruházrendelés) és az IBM-370.

Az IBM-370 modell a specifikációt követi, amely lehetővé teszi az írást, majd az olvasást, a program sorrenden kívüli végrehajtására, néhány kivétellel. Az első az, hogy ha a műveletek ugyanazon a helyen történnek, akkor azoknak a programrendben kell lenniük. A második az, hogy ha mindkét művelet egy sorosítási utasítás része, vagy ha a két művelet között van egy sorosítási utasítás, akkor a műveleteket program sorrendben kell végrehajtani. Ez a modell talán a legszigorúbb a figyelembe vett három modell közül, mivel az átvitelirendszer-üzemeltetői modell eltörli az említett kivételek egyikét.

A SPARC V8 TSO modell nagyon hasonlít az IBM-370 modellhez, azzal a különbséggel, hogy lehetővé teszi, hogy az ugyanazon a helyen végzett műveletek végrehajthassák a programrendet. Ezzel lehetséges, hogy a betöltés olyan tárolót ad vissza, amely a program sorrendjét tekintve „elavult”. Ezek a modellek hasonlóak a processzor konzisztenciájához, de noha ezeknek a modelleknek csak egy memóriája van, a processzor konzisztenciájának nincs ilyen korlátozása. Ez egy olyan rendszerre utal, amelyben minden processzornak megvan a saját memóriája, amely a processzor konzisztenciájára hangsúlyozza a „koherencia követelményét”.

Az x86-TSO modellnek számos különféle meghatározása van. A teljes üzlet modell, ahogy a neve is sugallja, nagyon hasonlít a SPARC V8-hoz. A másik meghatározás a helyi írási puffereken alapul. Az x86 és a SPARC TSO modellekben tapasztalható különbségek bizonyos utasítások elhagyásával és mások bevonásával kapcsolatosak, ám maguk a modellek nagyon hasonlóak. Az írási puffer meghatározása különféle állapotokat és zárakat használ fel annak meghatározására, hogy lehet-e egy adott értéket olvasni / megírni. Ezen túlmenően, az x86 architektúrának ezt a különleges modelljét nem sújtja a korábbi (gyengébb konzisztenciájú) modellek kérdése, és intuitívabb alapot nyújt a programozók számára az építkezésre.

Lásd még

Irodalom