音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

關于cpu 流水線

作者:telnet 欄目:MCU技術(shù)
關于cpu 流水線
ST Arm9 是否具有bypass功能?
比如下指令在擁有此功能的時候不會出現(xiàn)stall

ADD R2, R3, R1
DEC R4 , R2, R5
ADD R5 , R4 ,R2
跳轉(zhuǎn)延遲又是多少?是否有delay slot?



2樓: >>參與討論
centimetre
沒有跳轉(zhuǎn)延遲
 
3樓: >>參與討論
telnet
條件跳轉(zhuǎn)下,不可能沒有延遲。
 
4樓: >>參與討論
telnet
繼續(xù)補充幾句
條件跳轉(zhuǎn)下,不可能沒有延遲,除非它具有branch taget buffer, 但是即使如此,也只是減少延遲的可能性,況且這種功能不會再arm9這樣的產(chǎn)品中存在的。

5樓: >>參與討論
浪淘沙
顯然telnet是個高手,對高手先透露點內(nèi)幕消息,菜鳥免進
“除非它具有branch taget buffer,....,況且這種功能不會在arm9這樣的產(chǎn)品中存在的”,您說對了一半,在STR9中我們集成了這種功能,我們稱它為Branch Queue,明天的在線研討會上我們將談到這個問題,樓上的高手既然提出來了,我就先透露點內(nèi)部的東東,請看下圖:

6樓: >>參與討論
telnet
謝謝您的幫助
但是,我接下來的問題是,為了保證特定代碼的速度,是否能夠手工的對這片buffer進行倒入導出的操作?如果預測發(fā)生不準,我是否可以利用延遲槽(delay slot)

還有,能否告訴我arm9 是否有bypass的功能,這對我們很重要.

謝謝!

7樓: >>參與討論
浪淘沙
程序員不能對STR9的Branch Queue進行操作
telnet不用這么客氣嘛,在下非常愿意與您探討。

STR9的Branch Queue是集成在內(nèi)部,程序員只能啟動或關閉它,不能做其他操作,包括你說的“倒入導出的操作”。

“如果預測發(fā)生不準,我是否可以利用延遲槽(delay slot)”,首先不知你所說的延遲槽是否指“重新充填Pre-Fetch Queue的時間”?通常在預測發(fā)生不準的情況下指令的執(zhí)行是停止了,因為指令的預取隊列需要時間被重新充填,只有那些需要多個CPU周期的指令才有可能利用這段時間,如LDM、STM指令。

如果你想利用這段時間,不知想如何利用?我所看到的有兩種方式,一是在跳轉(zhuǎn)指令前使用LDM或STM指令,二是在跳轉(zhuǎn)指令前啟動DMA控制器,DMA操作剛好可以利用這個間隙;除此之外,我還沒有想出來,你知道還有什么技術(shù)嗎?

補充一點,Branch Queue的深度顯然是越大越好,但深度越大成本也越高,我們對Branch Queue的深度作了多方面的模擬,得出了一個合適的深度,既保證了多數(shù)情況下較高的效率,也有效地控制了成本。

另外,我不明白你說的bypass功能是指什么?請指教。

8樓: >>參與討論
telnet
bypass 就是中文翻譯的旁路。
謝謝!

延遲槽(delay slot)就是指當我們預測錯誤的時候,我們在更新buffer queue的同時,使取進來的指令繼續(xù)運行,而不是放棄,當然這條指令應該是可做,可不做的(比如對參數(shù)的付值運算,或者用來對隨機數(shù)進行更新,因為很難有真正的隨機數(shù))。

bypass就是如下面的兩條指令:

ADD R2, R3, R1
DEC R4 , R2, R5

在經(jīng)典的5級流水線中,我們必須等到WB 的同時進行ID操作但是由于有了bypass,我們可以在前條指令EXE之后,結(jié)果數(shù)據(jù)會立刻送到下面任何需要作為操作數(shù)的指令的每個階段鎖存器中 ,所以上面的指令之間沒有延遲。

如上面的第一條指令結(jié)束后會直接將EXE 執(zhí)行的結(jié)果傳遞到ID/EXE鎖存器中 中,而不需要再傳到MEM=>WB。

我想如果ARM9 具有了BRANCH TARGET BUFFER ,這個功能應該一定有了,但是因為這對我們很重要,所以我想得到確定的答復。
謝謝。

9樓: >>參與討論
telnet
對delay slot 的補充
delay slot,我最早是看到mips上使用的,他們沒有Branch target buffer,
所以在條件跳轉(zhuǎn)下一定會有一個時鐘的延遲(ID 結(jié)束才知道結(jié)果),它允許后面的指令在延遲的時間內(nèi)執(zhí)行,來補充這個缺陷。

對于arm9不知道是否會用類似的方法,我個人傾向于這樣做,有時候簡單流暢,會使性能更加提高,設計趨向簡單。


10樓: >>參與討論
twentyone
RE
個人看法:你們的討論里也提到了,如果有跳轉(zhuǎn)的話,不管采用什么技術(shù),肯定會引入延遲的。一跳轉(zhuǎn),流水線就有可能會被打斷。用Cache或者是Branch Queue,都只是用來降低概率的輔助方法。

另外,TELNET能否介紹一下,你是做什么的?感覺你對CPU構(gòu)架很熟悉。:-)

11樓: >>參與討論
浪淘沙
看來我是碰到真正的高手啦

首先我要聲明,對你的問題我目前還沒有一個準確地答復,我要查一下資料,同時請教一下專家;但我可以說的是,除了上述Pre-Fetch Queue和Branch Cache,在ARM966E的基礎上ST沒有其他的擴充了,也就是說,你的問題屬于ARM966結(jié)構(gòu)的范疇,我需要詳細地研究了ARM的文檔才能有準確地答復。

你所說的Delay slot功能,我記得在SUN的Sparc中也有,這個功能需要編譯器的配合或在匯編程序中有意識地使用。根據(jù)我的理解,ARM的核心中不具備這樣的功能,因為我至今沒有找到相應的資料證明這點;我想如果要有,ARM應把它當成一個要點來強調(diào)的,可惜沒見到。

我在寫這個帖子是,正在看ARM的文檔,剛好找到對Bypass功能的說明,在ARM的文檔里稱為“Result forwarding”,請看這個文檔的4.2節(jié)。

    Comparison between the ARM7 and ARM9
以上見解供你參考,我將在請教了ARM的工程師后再給你肯定的答復,也請知道上述問題答案的網(wǎng)友幫忙

閣下為什么要了解這個問題,莫非是要做ARM9的仿真器?應該不會是想用匯編寫程序吧?請賜教,謝謝!

12樓: >>參與討論
telnet
謝謝您的幫助
我的問題基本上沒有了。

To 浪淘沙, twentyone
很高興能認識各位,長知識了!

本人僅僅是個敲代碼的,過去對linux內(nèi)核和網(wǎng)絡協(xié)議有點了解,目前因為項目需要,現(xiàn)在要寫一個簡單的編譯器,對arm系列沒有詳細地知識,所以想知道些具體的問題,來加速我們的項目。


我也認識Johnson CAO :)

13樓: >>參與討論
gyt
確實高手
原來是做編譯器的,怪不得這么厲害:)


參與討論
昵稱:
討論內(nèi)容:
 
 
相關帖子
本人有一塊 str710 開發(fā)板可轉(zhuǎn)讓或者交換
請問各位!!  哪種鐵電存儲器性價比比較高!
h_jtag 支不支持STR9?
twentyone大俠,問個H-JTAG的問題
str7的軟件問題
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號