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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【Verilog语法】分支延迟槽

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

參考:MIPS中的跳轉/分支指令

關于跳轉指令

Branch delay slot 分支延遲槽

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

查了一下解釋:


以下內容摘自:MIPS中的分支延遲槽和存儲延時槽

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

當第一條指令的ALU結束時,第二條指令的RD階段也已經結束了。

那么如果第一條指令是分支跳轉指令,那么在ALU階段才會知道要不要跳轉,以及跳轉的目標指令地址是多少。而此時,第二條指令已經剛好結束RD,第三條指令 已經到了IF階段。如果這個時候CPU直接跳轉到目標指令地址去執行,那么就需要清空現有流水線,從新的指令地址開始IF,RD。因為分支跳轉后面的指令 不能被執行啊,程序已經跳轉了呀。這樣就相當于原先第2條指令的IF和RD操作,第3條指令的IF操作,這些CPU已經做過的工作,都白做了。因為CPU 此時是從的新的地址重新開始嘛!這叫流水線“冒泡”。

做這些工作也是需要耗費CPU時間的呀,MIPS設計者們,覺得十分浪費。于是就發明了一個叫分支延遲槽的東西。

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

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

所以要注意幾件事情:

“分支延遲槽”里面的指令,在目標跳轉指令前面執行,所以“分支延遲槽”里面的指令不能修改目標跳轉指令會用到的寄存器或者變量的內容,否則程序很容易搞錯。
“分支延遲槽”里面的指令,通常可以被加以利用會做一些比較意義的事情,例如清零內存之類的。

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。