循環(huán)展開(kāi)及指令調(diào)度_第1頁(yè)
循環(huán)展開(kāi)及指令調(diào)度_第2頁(yè)
循環(huán)展開(kāi)及指令調(diào)度_第3頁(yè)
循環(huán)展開(kāi)及指令調(diào)度_第4頁(yè)
循環(huán)展開(kāi)及指令調(diào)度_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

實(shí)驗(yàn)項(xiàng)

循功展開(kāi)及指令調(diào)度

名稱(chēng)

實(shí)驗(yàn)1.加深對(duì)循環(huán)級(jí)并行性、指令調(diào)度技術(shù)、循環(huán)展開(kāi)技術(shù)以及寄存器換名技術(shù)的理解;

目的及2.熟悉用指令調(diào)度技術(shù)來(lái)解決流水線中的數(shù)據(jù)相關(guān)的方法;

要求3.了解循環(huán)展開(kāi)、指令調(diào)度等技術(shù)對(duì)CPU性能的改進(jìn)。

實(shí)驗(yàn)(1)I.用指令調(diào)度技術(shù)解決流水線中的結(jié)構(gòu)相關(guān)與數(shù)據(jù)相關(guān)

內(nèi)容(2)用MIPS匯編語(yǔ)言編寫(xiě)代碼文件*§程序中應(yīng)包括數(shù)據(jù)相關(guān)與結(jié)構(gòu)相關(guān)(假設(shè):加

法、乘法、除法部件各有2個(gè),延遲時(shí)間都是3個(gè)時(shí)鐘周期)

(3)通過(guò)Configuration菜單中的^Floatingpointstagesw選項(xiàng),把加法、乘法、除法

部件的個(gè)數(shù)設(shè)置為2個(gè),把延遲都設(shè)置為3個(gè)時(shí)鐘周期;

(4)用winMIPS64運(yùn)行程序。記錄程序執(zhí)行過(guò)程中各種相關(guān)發(fā)生的次數(shù)、發(fā)生相關(guān)的

指令組合,以及程序執(zhí)行的總時(shí)鐘周期數(shù):

(5)采用指令調(diào)度技術(shù)對(duì)程序進(jìn)行指令調(diào)度,消除相關(guān);

(6)用winMIPS64運(yùn)行調(diào)度后的程序,觀察程序在流水線中的執(zhí)行情況,記錄程序執(zhí)

行的總時(shí)鐘周期數(shù);

根據(jù)記錄結(jié)果,比較調(diào)度前和調(diào)度后的性能。論述指令調(diào)度對(duì)于提高CPU性能的意義。

(1)2.用循環(huán)展開(kāi)、寄存器換名以及指令調(diào)度提高性能

(2)用MIPS匯編語(yǔ)言編寫(xiě)代碼文件*.s,程序中包含一個(gè)循環(huán)次數(shù)為4的整數(shù)倍的簡(jiǎn)

單循環(huán);

(3)用winMIPS64運(yùn)行該程序。記錄執(zhí)行過(guò)程中各種相關(guān)發(fā)生的次數(shù)以及程序執(zhí)行的

總時(shí)鐘周期數(shù);

(4)將循環(huán)展開(kāi)3次,將4個(gè)循環(huán)體組成的代碼代替原來(lái)的循環(huán)體,并對(duì)程序做相應(yīng)的

修改。然后對(duì)新的循環(huán)體進(jìn)行寄存器換名和指令調(diào)度;

(5)用winMIPS64運(yùn)行修改后的程序,記錄執(zhí)行過(guò)程中各種相關(guān)發(fā)生的次數(shù)以及程序

執(zhí)行的總時(shí)鐘周期數(shù);

根據(jù)記錄結(jié)果,比較循環(huán)展開(kāi)、指令調(diào)度前后的性能。

1.用指令調(diào)度技術(shù)解決流水線中的結(jié)構(gòu)相關(guān)與數(shù)據(jù)相關(guān)

1)代碼:

divff2,f5,f6

divffl,f2,f6

divff3,fi,f5

divffO,f4,f7

addffl4,fO,f6

實(shí)驗(yàn)步addffl5,f5,f7

驟muitff20,f4,f6

multff21,f5,f7

2)設(shè)置運(yùn)算部件個(gè)數(shù)以及運(yùn)算時(shí)鐘周期數(shù)

FloatingPointStageConfigura...

Count:Delay:

AdditionUnits:e

MultiplicationUnits:2

DivisionUnits:2

圖i

。ClockCycleDx“raa

FdpniQ

c^nzni

c^tzni

2

(S4OJ1/5

gffUJOJS

gfnmn

i⑶乂JS

圖2.Pipeline圖

以下為出現(xiàn)的數(shù)據(jù)相關(guān)

由于只有兩個(gè)除法部件,所以出現(xiàn)了功能部件的沖突??偟膱?zhí)行周期是38指令調(diào)度后代碼:

將無(wú)關(guān)指令放在一起執(zhí)行,相關(guān)指令分開(kāi)盡量避免數(shù)據(jù)相關(guān)

divff2,f5.f6

multff20,f4,f6

multff21,f5,f7

divffl,f2,f6

addffl5,f5,f7

divffi,fkf5

addffl4,fO,f6

NClockCys&vt&Mi

0

mari

—ar:

ww*JD

VUUHMH

圖5.Pipeline圖

X

Total:

35Cycle(s)executed.

IDexecutedby26Instruction⑸.

2Instruction(s)currentlyinPipeline.

Hardwareconfiguiraition:

Memorysize:32768Bytes

faddEX-Stages:2,requiredCycles:3

fmulEX-Stages:2,requiredCycles:3

fdivEX-Stages:2,requiredCycles:3

Forwardingenabled.

StalIs:

RAWstalls:318.57%ofallCycles),thereof:

LDstalls:010.00?ofRAWstalls)

8ranchZJumpsfalls'0(0erfRAWstalls)

Floatingpointstalls:3(10000^ofRAWstalls)

WAWstalls:0(0.00^?ofallCycles)

Structuralstalls:0(0.00%ofallCycles)

Controlstalls:0(0.00^ofallCycles)

Trapstalls:7(2000^ofallCycles)

Total:10Stall⑸(2857NofallCycles)

Conditionai1Biramches):

Total:0(0.00^ofallInstructions),thereof:

taken:0(0.00^ofallcondBranches)

nottaken:0(O.OOz^ofallcond.Branches)

圖6.Statistics圖

總執(zhí)行時(shí)鐘周期為35個(gè)。

指令調(diào)度后,數(shù)據(jù)相關(guān)減少了,總時(shí)鐘周期數(shù)減少了,效能提高了。調(diào)度前的時(shí)鐘周期數(shù)為

38,調(diào)度后的時(shí)鐘周期數(shù)減少為35,加速比=38/35=1.08

2.用循環(huán)展開(kāi)、寄存器換名以及指令調(diào)度提高性能

帶循環(huán)指令

代碼:求四個(gè)1相加的和,結(jié)果存在r2中

.text

.globalmain

main:addirl,rO,#4

addir2,rO,#0

Loop:sgtr3,rl,rO

bnezr3,Subl

trap0Subl:

addir2,r2,#1

subirl,rl,#1

jLoop

結(jié)果:總時(shí)鐘周期是42個(gè),5rawstalls,循環(huán)了4次,結(jié)果

r2=4

IKAJi-OxOOOCOUC

(VOockCyd?

1R-0x20420001

oxaoocwuo

Inmjdow/CycbtAHI?OxOOOCOOOO

B-OxOOOCOOOO

OxOOOCOOOO

8TA-OiOOOCOOOO

■ILEDALU-OxQOOCOOOO

ALUMI-OxOOOCOOUO

yMFPSR-OxOOOCOOOO

OxODOCOOOO

SDR-0mMe0000

SXfOil-OkOOOCPUQO

aAiil/V.OklLDR,OxODOCQOOO

LI?<I?Ox330COOOO

|L?POxODOCQOOO

QMOOOCOOOO

Z

UxUJQCWOO

"如1川DxQOOCOOQO

DxOOOCOOOO

tms,159

Tot?l

FX

?3d>256~ctEi】

2cwwiljFnP^ifinv

Hardvarccom!igur?tice

UdcFX-StagH1requmjC>cbc?

iaufX$M0?t1.CyOtot5

kMX5即ieBCwtei13

ForwoR>^crated

Stella后r,r

SIHtttcf^CfdHlIhsecf

92Qeootgw…

J"i"lOOgaRA^…

r?-Af—rsa>>>i-4-*

圖7

循環(huán)展開(kāi):

代碼:

.text

.globalmain

main:

addiikr0,#4

addir2,r(),#()

addir2,r2.#1

subirl,rl,#l

addir2,r2,#l

subirl,rl,#l

addi22#I

subirl,rl,#l

addir2,r2,#l

subirl,rl,#l

trap0

結(jié)果:總時(shí)鐘周期是15個(gè),0rawstalls,執(zhí)行了4次,結(jié)果r2=4

XJUkK*UXUUUUU1ZC

0x00000000

0x00000000

ln?huc*oi??/C>c*MAKI-0x00000000

B?0x00000000

i2iO(hOBK1-0x00000000

BTi-0x03000000

Mr2j2Q>1ALU-0x09000000

ALUKI-OxOOOOOOOO

(ubif1j1.0KlFPSR-oxooooaooo

DKAR?0x00000000

r272Ai1I',:■MJSDR-oxooooaooo

SORHI>OxOOOOOOOO

i,1,L0k1UIOKL;U>R?OxOQOQQOOO

LDRKT-OxOOOOaOQO

0x00000000

OxODOSOOC

?ubiUlOkl

R■■OxO3CC:CDC

血,212&10x00000000

-1□1doxoaoooooc

Tot,】

>T4P<M)15CycM?l?NVCsMd

IDmoMd》11kuiMcacr(i|

2lrt?*wc*q?<r|nRo>?trw□a

H?rdv?r?ccnfiguration:

32766BVM

UddEKSU0M1teqjiedCyciKZ

twUEX-S-m^IwQiMdC*dw5

t*?<XStagestrwxcdCjKbi19

Forwaw^enabled

Stalls

RAWil0|D00*daCydMl

?4.-AA*?一一?.■?

圖8

原因的對(duì)比:

是因?yàn)長(zhǎng)OOP指令執(zhí)行完后會(huì)有一個(gè)nop指令的延遲。

addir2j20x1

zmaaFW1

subir1j1,0x1

iLoopIF

nopIF(aborted

圖9

多Cache一致性:

實(shí)驗(yàn)?zāi)康?/p>

1.加深對(duì)多CACHE一致性的理解。

2.進(jìn)一步掌握解決多CACHE一致性的目錄協(xié)議和監(jiān)聽(tīng)協(xié)議的基本思想。

3、掌握在各種情況下,目錄協(xié)議和監(jiān)聽(tīng)協(xié)議是如何工作的。給出進(jìn)行操作的類(lèi)

型以及CACHE決狀態(tài)的變化情況

模擬器使用方法簡(jiǎn)介(目錄式)

該模擬器模抵4個(gè)CPU(A.B.C.D)訪存的工作過(guò)程。每個(gè)CPU中都有一

個(gè)Cache,該Cache包含有4個(gè)塊,其塊地址為0-3。分布式存儲(chǔ)器中有32個(gè)塊,

其塊地址為0-31。每個(gè)塊狀態(tài)用色塊表示,其中灰色為“無(wú)效”狀態(tài),淡青色為

“共享”狀態(tài),橘紅色為“獨(dú)占”。主存中塊的狀態(tài)由其右邊的目錄項(xiàng)的顏色

來(lái)表示,未緩沖狀態(tài)由黃色來(lái)表示,其他兩種狀態(tài)同Cache塊。

對(duì)于每一個(gè)CPU都可以指定所要進(jìn)行的訪問(wèn)是讀還是寫(xiě)(從列表中選),并在輸入框

中輸入所要訪問(wèn)的主存塊號(hào),然后用鼠標(biāo)單擊在其右邊的標(biāo)有“I”的按鈕,模抵器就將開(kāi)

始演示該訪問(wèn)的工作過(guò)程。

|___1...

多CuchQ一致性梗依器——目錄法

5“加

圖10

模擬器簡(jiǎn)介(監(jiān)聽(tīng)協(xié)議)

該模擬器模抵4個(gè)CPU(A.B.C.D)訪存的工作過(guò)程。每個(gè)CPU中都有一

個(gè)Cache,該Cache包含有4個(gè)塊,其塊地址為0-3。集中共享存儲(chǔ)器中有32個(gè)

塊,其塊地址為0-31。每個(gè)塊狀態(tài)用色塊表示,其中灰色為“無(wú)效”狀態(tài),淡青

色為“共享”狀態(tài),橘紅色為“獨(dú)占”。

對(duì)于每一個(gè)CPU都可以指定所要進(jìn)行的訪問(wèn)是讀還是寫(xiě)(從列表中選),并在輸入框

中輸入所要訪問(wèn)的主存塊號(hào),然后用鼠標(biāo)單擊在其右邊的標(biāo)有“I”的按鈕,模抵器就將開(kāi)

始演示該訪問(wèn)的工作過(guò)程。

二忙”

圖11

實(shí)驗(yàn)步驟(目錄協(xié)議)

對(duì)于以下訪問(wèn)序目錄協(xié)議所進(jìn)行的操作

1.讀2不命中;3本地:向宿主結(jié)點(diǎn)發(fā)讀不命中(A,6)消息;4.宿主:

CPUA讀第6塊把數(shù)據(jù)塊送給本地結(jié)點(diǎn);5.共享集合為:{A}

讀;2.不命中;3.本地:向宿主結(jié)點(diǎn)發(fā)讀不命中(B,6)消息;

CPUB讀第6塊4.宿主:把數(shù)據(jù)塊發(fā)送給本地結(jié)點(diǎn);5.共享集合為:{A}+{B}

4.宿主:把數(shù)據(jù)塊發(fā)送給本地結(jié)點(diǎn);5.共享集合為:{A}+{B}

A-4--|?Yt4^4471I4?、工ZAA-1-nf.Z,-|-1-=-M-A_.,▲、,c、

1.讀;2.不命中;3.本地:向宿主結(jié)點(diǎn)發(fā)讀不命中(D,6)消息;

CPUD讀第6塊4.宿主:把數(shù)據(jù)塊發(fā)送給本地結(jié)點(diǎn);5.共享集合為:{A,B)+{D}

4.宿主:把數(shù)據(jù)塊發(fā)送給本地結(jié)點(diǎn);5.共享集合為:{A,B}+{D}

44fn4-T314-<4/-^./,人.X*111.,八?l44-人、1一,▲.

1.寫(xiě);2.命中;3.本地:向定主結(jié)點(diǎn)發(fā)寫(xiě)命中(

,6)消息,宿主:向遠(yuǎn)程結(jié)點(diǎn)A發(fā)作廢(6)消息,宿主:向遠(yuǎn)程

CPUB寫(xiě)第6塊

結(jié)點(diǎn)D發(fā)作廢(6)消息:4.共享集合為:{B}

1讀;2.不命中;3.本地:向宿主結(jié)點(diǎn)發(fā)讀不命中(C,6)消息;

4.宿主:給遠(yuǎn)程結(jié)點(diǎn)發(fā)取數(shù)據(jù)塊(6)的消息;5.遠(yuǎn)程:把數(shù)據(jù)塊

CPUC讀第6塊

送給宿主結(jié)點(diǎn);6.宿主:把數(shù)據(jù)塊送給本地結(jié)點(diǎn);7.共享集合為:

iRi-i-iri

1.寫(xiě);2.不命中;3.本地:向宿主結(jié)點(diǎn)發(fā)寫(xiě)不命中(D,20)消息;4.宿

CPUD寫(xiě)第20塊主:把數(shù)據(jù)塊發(fā)送給本地結(jié)點(diǎn);5.共享集合為:{D}

1.寫(xiě);2.不命中;3.本地:向宿主結(jié)點(diǎn)發(fā)寫(xiě)不命中(A,20)消息;4

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論