( apal | 2023. 08. 02., sze – 23:11 )

Ennel sokkal egyszerubb. Nezz elso korben egy fetch -> decode -> execute -> writeback pipeline-t. Hogy a felteteles ugras az elore vagy hatrafele mutat, az a decode szakasznal a relativ offset legfolso bitjebol mar azonnal kiderul:

  • Ha ez a bit 0, akkor az ugras elorefele mutat majd, az az "unlikely" eset, tehat nem csinalsz semmit, mert a fetch altal behozott utasitast nagy valoszinuseggel ugyis fel kell dolgoznod. Tehat itt ez a preferalt. 
  • Ha ez a bit az 1, akkor pedig egy sima offset aritmetikanak (az egy darab offset szelessegu full adderrel vett) eredmenyet vizsgalva le tudsz szolni a cache modulnak hogy "jaj, barmi is legyen, ne urits ki semmi cache-t mert ugyis kellni fog majd onnan valami." Mivel ez nem a pipeline resze, ezert az elektronikanak a kritikus uthosszat nem fogja novelni mert parhuzamosan tortenik ez az osszeadas magaval a pipeline-nal. Szoval megintcsak jol ki tudja hasznalni a mikroarchitektura a dolgot.

Es akkor gondolj bele abba hogy egy ennel hosszabb instruction pipeline eseteben a decode elotti reszt nyugodtan tekintheted egy L(-1) cache-nak is akar, vagy abba hogy pl egy szelesebb instruction busz eseten a busz kimeneti regiszteret pedig akar egy L0-s cachekent is felfoghatod. Ezek a fenti dolgok pl mar egy 16bites ISA szelesseg es egy 32bit szeles instruction bus eseten is megjelennek mar azonnal (tehat 50% hogy mar ezzel is nyersz egy orajelet, ha keveset kell visszaugranod... oke, ez a gyakorlatban busy wait-es eseteket leszamitva nem gyakori, de ugye ki hasznal mar elesben 32 bites ISA buszokat).