jeni duke lexuar...
Leksione

“Control hazards” – shembull si optimizohen dhe detektohen

“Control hazards” ose të papriturat e kontrollit, ndodhin kur rrjedha e instruksione në një pipeline ndërpritet nga instruksione “të ndërprerjes së sekuencës”, siç janë p.sh. jump, branch, loop, call/ret etj.

Më poshtë trajtohet një rast i tillë.

Në një procesor MIPS ekzekutohet kodi i mëposhtëm :

36        sub  $10, $4, $8

40        beq $1, $3, 72

44        and $12, $2, $5

48        or $13, $6, $2

52        add $14, $2, $2

—–

72        lw $4, 50 ($7)

Me supozimin se instruksioni beq $1,$3,72 nuk do të kryhet, në pipeline do të hyjnë instruksionet në vijim (and .. or.. etj.). Në se kërcimi ndodh, pra kur përmbajtja e regjistrave $1 dhe $3 është e njëjtë, atëherë tre instruksionet që gjenden tashmë në pipeline duhet të fshihen (“flush”). Grafikisht është paraqitur në dy figurat e mëposhtëme. Kjo pasi adresa e kërcimit do të mësohet vetëm në në stadin M = Memory access.

Sa më herët të mësohet adresa e kërcimit të një branch, aq më i vogël do të rezultojë penalizimi nga “control hazards”. Kështu nëpërmjet shtimit të hardware arrihet që gjatë fazës së D=Dekodim të pipeline të testohen regjistrat, të llogaritet adresa e kërcimit dhe të vendoset adresa në regjistrin PC. Kjo situatë paraqitet në figurën e mëposhtëme. Në këtë rast, për çdo instruksion branch,  avancimi në pipeline bllokohet për një cikël clocku.

Kështu në stadin e dyte (D=Dekodim)  shtohet një ALU specifike vetëm për llogaritjen e adresës së kërcimit si dhe një operator XOR bit për bit të registrave $x dhe $y.

Le të shikojmë tani se s i do të ekzekutohej i njejti kod, me supozimin se kërcimi në adresën 72 ndodh.

36        sub  $10, $4, $8

40        beq $1, $3, 72

44        and $12, $2, $5

48        or $13, $6, $2

—–

72        lw $4, 50 ($7)

Në këtë moment detektohet se ($1) = ($3) dhe ALU e llogaritjes së adresës gjeneron adresën 72. Njëkohësisht instruksioni and $12,$2,$5 fshihet (IF.Flush) prej regjistrit IF/ID. Vazhdimi në figurën më poshtë

Tashmë instruksioni lw $4, 50 ($7) futet në pipeline, duke gjeneruar kështu vetëm një “flluskë”, si në fig. e mëposhtëme.

Diskutim

Pasgjurmime/Pingback-e

  1. Pingback: Plotësime për Kapitullin 3 « agimcami - 21 Prill 2012

Lini një Përgjigje

Ju lutemi, bëni hyrjen me një nga këto metoda që të postoni komentin tuaj:

Stema e WordPress.com-it

Po komentoni duke përdorur llogarinë tuaj WordPress.com. Dilni / Ndryshojeni )

Foto Twitter-i

Po komentoni duke përdorur llogarinë tuaj Twitter. Dilni / Ndryshojeni )

Foto Facebook-u

Po komentoni duke përdorur llogarinë tuaj Facebook. Dilni / Ndryshojeni )

Foto Google+

Po komentoni duke përdorur llogarinë tuaj Google+. Dilni / Ndryshojeni )

Po lidhet me %s

Këtë e pëlqejnë %d blogues: