jeni duke lexuar...
Ushtrime

Pipeline…ushtrim no.1

Merrni në konsideratë kodin e mëposhtëm :

Loop:

                LOAD R1, 0(R2)                  ; ngarko R1 nga adresa 0+R2

                ADI R1,R1,#1                      ; R1=R1+1

                STORE 0(R2),R1                 ; ruaj R1 ne adresen 0+R2

                ADI R2,R2,#4                      ;R2=R2+4

                SUB R4,R3,R2                     ; R4=R3-R2

                JNZ R4,Loop                       ; Jump to Loop if R4=0

Supozoni se vlera fillestare e R2 është R2+396. Supozoni gjithashtu se « structural hazards » nuk janë eleminuar, prandaj instruksionet që janë tashmë në pipeline kanë prioritet ndaj atyre që hyjnë, rrjedhimisht këta të fundit « ngecin ».

Kërkohet të gjenden:

a.       Paraqisni ekzekutimin në kohë (timing) të kësaj sekuence instruksionesh në një pipeline klasike me 5 stade (F-D-Ex-M-W), e cila nuk ka hardware për « forwarding » dhe « bypassing ». Supozoni se instrukioni « branch=JNZ » trajtohet duke bërë « flush » pipelinën.

b.      Në qoftë se të gjitha operandat që kërkohen në kujtesë gjenden në kashé dhe në mungesë të hardware për  « forwarding » dhe « bypassing », sa sikle clocku do të nevojiten për të ekzekutuar  këtë kod ?

c.       Paraqisni ekzekutimin në kohë (timing) të kësaj sekuence instruksionesh në një pipeline klasike me 5 stade (F-D-Ex-M-W), e cila ka tashmë hardware për « forwarding » dhe « bypassing ».

d.      Në qoftë se të gjitha operandat që kërkohen në kujtesë gjenden në kashé dhe tashmë në prezencë të hardware për « forwarding » dhe « bypassing », sa sikle clocku do të nevojiten për të ekzekutuar  këtë kod ? 

Zgjidhje :

a.        

« Timing » i ekzekutimit të një sekuence të « loop “ është paraqitur këtu më poshtë. Me « » janë shënuar ciklet në të cilat avancimi në pipeline ngec (S=Stop=Stall), të cilat shkatohen prej “data hazards ose data dependency”. Meqenëse “structuaral  hazards” nuk janë shmangur, atëherë “fetch” e instruksioneve nuk mund të kryhet kur përdoret kujtesa (cikli M i instruksionit). Kjo ndodh për instruksionet  STORE 0(R2),R1, ADI R2,R2,#4 dhe JNZ R4,Loop. Instruksioni JNZ vonohet deri në njohjen përfundimtare të adresës së kërcimit.  Cikli pasardhës i loop fillon në përfundim të ekzekutimit të instruksionin JNZ.


b.

Vlera fillesatre e R3=R2+396 dhe çdo kalim ne « loop » shton +4 në R2. Prandaj,  « loop» do të ekzekutohet gjithsej 396/4 = 99 herë.

Nga diagrama e mësipërme e cikleve të clockut, llagaritet se një kalim në loop « konsumon » 16 cikle clocku. Kjo vlen për 98 ciklet e ezekutimit të « loop ». Cikli i fundit, pra i 99-ti, nga po kjo diagramë vihet re se ai do të “konsumohet” plotësisht, pra do të kërkojë 18 cikle clocku.

Pra, numri total i cikleve të clocku do të ishte :  98*16+18=1584.

c.

« Timing » i ekzekutimit të një sekuence të « loop “, në rastin kur shtohet hardware për  “data forwarding ose baypass”  është paraqitur këtu më poshtë. Këtu është patur parasysh se “struktural hazards” janë përsëri prezente.

d.

Nga diagrama e mësipërme e cikleve të clockut, llagritet se një kalim në loop « konsumon » 13 cikle clocku. Kjo vlen për 98 ciklet e ezekutimit të « loop ». Cikli i fundit, pra i 99-ti, nga po kjo diagramë vihet re se ai do të “konsumohet” plotësisht, pra do të kërkojë 15 cikle clocku.

Pra, numri total i cikleve të clocku do të ishte :  98*13+15=1289.

Diskutim

Ende pa komente.

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: