Valaki eltudná magyarázni ezt?
előre fele irányuló, és visszafele irányuló dolgot nem értem. Ha lehet példával
Első tippre erről lehet szó:
Spekulatív végrehajtás.
A futószalagos adatösvény a leggyakrabban használt tervezési mód a jelenlegi mikroarchitektúrákban. Ezt a technikát a legtöbb modern mikroprocesszorban, mikrovezérlőben és DSP-ben használják. A futószalagos architektúra lehetővé teszi, hogy több utasítás átfedje egymást végrehajtás közben, kb. úgy mint egy összeszerelő szalagon.
Egy probléma egy utasítás-futószalaggal az, hogy vannak olyan típusú utasítások, aminek teljesen végig kell haladnia a futószalagon, mielőtt a végrehajtás folytatódhat. Különösen feltételes elágazásoknak kell tudniuk egy előzetes utasítás eredményét eldönthető, hogy melyik ágat kell választani. Például, egy olyan utasításban, ami azt mondja „ha x nagyobb mint 5, akkor tedd ezt, különben tedd azt” először meg kell várni, amíg az x változó konkrét értéket kap, mielőtt eldönthető lenne, hogy ezután melyik ágon kell folytatni a végrehajtást.
Egy kisebb, négy ciklus mély futószalag esetében ez akár három ciklus késedelmet is jelenthet – a dekódolás még megtörténhet. De az órajelek növekedésével nő a futószalag nagysága, fokozatainak száma is, modern processzorokban a futószalagoknak 20 vagy több fokozata is lehet. Ebben az esetben a CPU-t minden alkalommal késleltetik a ciklusai nagy többségében, mikor ilyen utasítással találkozik.
A megoldás, vagy az egyik megoldás a spekulatív végrehajtás, amit szintén elágazás jövendölésként van nyilvántartva. Valóságban, az elágazás egyik oldala sokkal gyakrabban lesz meghívva, mint a másik, így sok esetben helyes ha egyszerűen azt mondjuk: „x valószínűleg kisebb lesz ötnél, kezdd el annak a végrehajtását”. Ha a jóslatról kiderül, hogy helyes, hatalmas mennyiségű időt meg tudunk spórolni. A modern processzorkialakításokban már meglehetősen összetett jósló-előrejelző rendszereket alkalmaznak, amik figyelembe veszik a korábban végrehajtott elágazások eredményeit, hogy nagyobb pontossággal jósolják meg a jövőt (például: „ez a feltétel eddig már 5-ször teljesült, tegyük fel, hogy most is teljesül”).
Dióhélyban a ciklusok általában 0-tól többször iterálnak. Ha arra tippelsz hogy a ciklusfeltétel a következő iterációban is igaz lesz, akkor nagy valószínűséggel találtál.
Ez azért lényeges mert a programkódot is be kell tölteni, értelmezni és végrehajtani. Ha a feltétel mégsem teljesűl akkor csak kidobod a feltétel után lévő kódot és az estleg általa használt regisztereket.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!