日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

【Verilog语法】分支延迟槽

發(fā)布時(shí)間:2024/2/28 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Verilog语法】分支延迟槽 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

參考:MIPS中的跳轉(zhuǎn)/分支指令

關(guān)于跳轉(zhuǎn)指令

Branch delay slot 分支延遲槽

第一次看見分支延遲槽是在這里

查了一下解釋:


以下內(nèi)容摘自:MIPS中的分支延遲槽和存儲(chǔ)延時(shí)槽

在最初的MIPS五級(jí)流水線中,一條指令被分成了5個(gè)階段:取指,從源寄存器讀取內(nèi)容,邏輯運(yùn)算,內(nèi)存讀取,寫回到寄存器。

當(dāng)?shù)谝粭l指令的ALU結(jié)束時(shí),第二條指令的RD階段也已經(jīng)結(jié)束了。

那么如果第一條指令是分支跳轉(zhuǎn)指令,那么在ALU階段才會(huì)知道要不要跳轉(zhuǎn),以及跳轉(zhuǎn)的目標(biāo)指令地址是多少。而此時(shí),第二條指令已經(jīng)剛好結(jié)束RD,第三條指令 已經(jīng)到了IF階段。如果這個(gè)時(shí)候CPU直接跳轉(zhuǎn)到目標(biāo)指令地址去執(zhí)行,那么就需要清空現(xiàn)有流水線,從新的指令地址開始IF,RD。因?yàn)榉种D(zhuǎn)后面的指令 不能被執(zhí)行啊,程序已經(jīng)跳轉(zhuǎn)了呀。這樣就相當(dāng)于原先第2條指令的IF和RD操作,第3條指令的IF操作,這些CPU已經(jīng)做過的工作,都白做了。因?yàn)镃PU 此時(shí)是從的新的地址重新開始嘛!這叫流水線“冒泡”。

做這些工作也是需要耗費(fèi)CPU時(shí)間的呀,MIPS設(shè)計(jì)者們,覺得十分浪費(fèi)。于是就發(fā)明了一個(gè)叫分支延遲槽的東西。

這樣,如果第一條指令是分支跳轉(zhuǎn)指令,那么不用經(jīng)歷整個(gè)ALU階段才能得到要不要跳轉(zhuǎn)的結(jié)果,以及跳轉(zhuǎn)到哪里去?,F(xiàn)在只 需要半個(gè)ALU的時(shí)間就得到了結(jié)果和目標(biāo)地址。這時(shí),第二條指令才剛剛開始RD階段,而CPU就已經(jīng)知道要跳到哪里去了,并且第3條指令就可以從新的地址 去取指令來執(zhí)行。也就是說這個(gè)時(shí)候CPU的流水線是連貫的,不需要臨時(shí)清空一下。不過這樣做帶來了一個(gè)新的問題,那就是在目標(biāo)指令(也就是圖中的第3條指令)執(zhí)行的前面,第2條指令就執(zhí)行完畢了。

也就是說在CPU知道要跳轉(zhuǎn)的地址了(上圖的第一條指令),到執(zhí)行目標(biāo)地址指令(上圖的第3條指令)之間,會(huì)執(zhí)行第2條指令,也就是說緊跟著分支跳轉(zhuǎn)指令的那條指令。這條指令通常叫做“分支延遲槽”里面的指令。

所以要注意幾件事情:

“分支延遲槽”里面的指令,在目標(biāo)跳轉(zhuǎn)指令前面執(zhí)行,所以“分支延遲槽”里面的指令不能修改目標(biāo)跳轉(zhuǎn)指令會(huì)用到的寄存器或者變量的內(nèi)容,否則程序很容易搞錯(cuò)。
“分支延遲槽”里面的指令,通??梢员患右岳脮?huì)做一些比較意義的事情,例如清零內(nèi)存之類的。

總結(jié)

以上是生活随笔為你收集整理的【Verilog语法】分支延迟槽的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。