3.4.2. A pipelining működés során fellépő problémák

A pipeline szervezésben megoldandó fontosabb problémák a gyakorlatban a következők:

  • az utasítások elemi fázisainak végrehajtásához szükséges idő igen eltérő lehet (például ha az operandus egy regiszterben található, akkor innen kb. tízszer gyorsabban lehívható, mint a főtár memóriájából),

  • az utasítás soros végrehajtását a vezérlésátadó utasítások megzavarhatják, mivel ekkor nem a soron következő utasításokat kell betölteni a „futószalagra”,

  • a megszakítások, kivételek kezelése is megszakíthatja a futószalag folyamatos feltöltését,

  • az utasításvégrehajtás során sokszor előfordul, hogy egy utasítás a megelőző utasítás eredményadatára hivatkozik. Így például jelöljön R1, R2, R3 három regisztert és végezzék a sorban következő utasítások a következőt:

R1 + R2 Þ R1

R1 + 10 Þ R3

Nyilvánvaló, hogy ebben az esetben R1 értékét a 2. utasítás csak akkor használhatja fel, ha azt az 1. utasítás már előállította. Ezt az esetet adatütközésnek, vagy ún. „hazard”-nak (veszélyhelyzet) nevezzük.

  • hardver erőforrások igénybevétele során is előfordulhatnak ütközések, például buszkonfliktusok. Erre példát az előző lap második ábrája alapján fogunk mutatni. Tegyük fel, hogy az ábrán látható n, n+1, n+2-vel jelölt utasítások és ezek operandusai a főtárban vannak. Ekkor az n-ik utasítás operandus kiolvasásához (R) és az n+2-ik, utasítás utasításkiolvasásához (F) egyaránt szükség van a memóriabuszra. E két buszművelet azonos időben nyilván nem hajtható végre.

tartalomjegyzék almenü fogalomszótár jelölésrendszer ellenõrzõ kérdések fejezet eleje elõzõ lap következõ lap következõ fejezet