?? 00000002.htm
字號:
<?xml version="1.0" encoding="gb2312"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"/><title>關于指令預取,有誰比較了解嗎???? turbolinux </title></head><body><center><h1>BBS 水木清華站∶精華區</h1></center><a name="top"></a>發信人: flew (游泳的魚), 信區: Embedded <br />標 題: 關于指令預取,有誰比較了解嗎???? <br />發信站: BBS 水木清華站 (Fri Jan 18 13:36:09 2002) <br /> <br /> <br /> 指令預取技術在很多處理器里都有體現,它極大程度提高了處理器的效率。 <br /> 但是,也帶來了一些問題。 <br /> <br /> 在進行軟件軟件測試的時候,一個很基本的需要了解的測試結果就是程序分支 <br /> 覆蓋率。如果對處理器的所有狀態(地址,數據,控制總線)進行跟蹤,會發現 <br /> 一些沒有實際執行的代碼也被檢測到,這就是因為指令預取的緣故。 <br /> <br /> 目前常用的方法是在所有的分支點進行插樁處理,處理器通知外界是否 <br /> 真正執行了某個分支的代碼。但這不可避免的修改了目標代碼,使得目標代碼 <br /> 無法完全在真實環境下執行,影響目標程序的效率和實時性。 <br /> <br /> 如何解決這個問題吶?有興趣的朋友不妨討論一下這個有意思的話題。 <br /> 解釋一下我的疑惑。//bow <br /> <br /> 哪位有什么指點或也對這個問題感興趣,可以和我聯系<a href="mailto:SmartZJ@263.net">SmartZJ@263.net</a> <br />-- <br /> <br />※ 修改:·flew 於 Jan 18 13:41:01 修改本文·[FROM: 202.112.137.7] <br />※ 來源:·BBS 水木清華站 smth.org·[FROM: 202.112.137.7] <br />發信人: flew (游泳的魚), 信區: Embedded <br />標 題: Re: 關于指令預取,有誰比較了解嗎???? <br />發信站: BBS 水木清華站 (Fri Jan 18 13:39:56 2002) <br /> <br /> <br /> 斑竹如果覺得我這個問題提的不算離開本版的主旨,請給m或g一下 <br /> 興許有一天有熟悉這類問題的朋友可以解釋一下,謝謝!//bow <br /> <br />-- <br /> <br />※ 來源:·BBS 水木清華站 smth.org·[FROM: 202.112.137.7] <br />發信人: neuronlee (機械化神經元), 信區: Embedded <br />標 題: Re: 關于指令預取,有誰比較了解嗎???? <br />發信站: BBS 水木清華站 (Fri Jan 18 13:50:52 2002) <br /> <br />如果能監視CPU中的PC寄存器就不會有問題了罷? 因為pc總是保存下 <br />一條要實際執行的指令. 或者利用陷阱中斷, 每執行一條指令就跳 <br />到陷阱中斷中, 而中斷服務程序保存現場到一個日志中. 調式后通過 <br />分析記錄來獲得覆蓋率. 這樣你就不用修改目標代碼了. <br />其實在軟件中加入測試代碼是很正常的, 當然是在系統資源允許的情況 <br />下. <br />【 在 flew (游泳的魚) 的大作中提到: 】 <br />∶<i> 指令預取技術在很多處理器里都有體現,它極大程度提高了處理器的效率。 </i><br />∶<i> 但是,也帶來了一些問題。 </i><br />∶<i> 在進行軟件軟件測試的時候,一個很基本的需要了解的測試結果就是程序分支 </i><br />∶<i> 覆蓋率。如果對處理器的所有狀態(地址,數據,控制總線)進行跟蹤,會發現 </i><br />∶<i> 一些沒有實際執行的代碼也被檢測到,這就是因為指令預取的緣故。 </i><br />∶<i> 目前常用的方法是在所有的分支點進行插樁處理,處理器通知外界是否 </i><br />∶<i> 真正執行了某個分支的代碼。但這不可避免的修改了目標代碼,使得目標代碼 </i><br />∶<i> 無法完全在真實環境下執行,影響目標程序的效率和實時性。 </i><br />∶<i> 如何解決這個問題吶?有興趣的朋友不妨討論一下這個有意思的話題。 </i><br />∶<i> 解釋一下我的疑惑。//bow </i><br />∶<i> 哪位有什么指點或也對這個問題感興趣,可以和我聯系<a href="mailto:SmartZJ@263.net">SmartZJ@263.net</a> </i><br />∶<i> ................... </i><br /> <br />-- <br />According to the system log, windows had already started, but <br />it seems to be murdered mysteriously! :-DDDDDDDD <br /> <br /> <br />※ 來源:·BBS 水木清華站 smth.org·[FROM: 66.75.17.82] <br />發信人: flew (游泳的魚), 信區: Embedded <br />標 題: Re: 關于指令預取,有誰比較了解嗎???? <br />發信站: BBS 水木清華站 (Fri Jan 18 14:19:02 2002) <br /> <br /> <br />【 在 neuronlee (機械化神經元) 的大作中提到: 】 <br />∶<i> 如果能監視CPU中的PC寄存器就不會有問題了罷? 因為pc總是保存下 </i><br /> 但是PC好象無法從處理器外直接訪問啊,如果可以,這個辦法最簡潔了 <br /> <br />∶<i> 一條要實際執行的指令. 或者利用陷阱中斷, 每執行一條指令就跳 </i><br />∶<i> 到陷阱中斷中, 而中斷服務程序保存現場到一個日志中. 調式后通過 </i><br />∶<i> 分析記錄來獲得覆蓋率. 這樣你就不用修改目標代碼了. </i><br /> 這樣會干涉目標程序的運行,影響實時性,從而也有可能影響分支覆蓋率 <br /> 的真實性。比如,平時調程序的時候,單步可以正確執行,可是全速運行就 <br /> 出問題,是不是也就是一個類似的情況。 <br /> <br />∶<i> 其實在軟件中加入測試代碼是很正常的, 當然是在系統資源允許的情況 </i><br />∶<i> 下. </i><br /> 我是在設想,如何對目標程序和目標系統不進行任何干涉,只是采樣其外部 <br /> 信號狀態來解決這個問題。大俠認為有可能嗎?比如把所有的狀態都采集 <br /> 下來,然后進行事后分析?有類似的前人經驗嗎? <br /> <br /> 謝謝! <br /> <br />-- <br /> <br />※ 來源:·BBS 水木清華站 smth.org·[FROM: 202.112.137.7] <br />發信人: psun (sam), 信區: Embedded <br />標 題: Re: 關于指令預取,有誰比較了解嗎???? <br />發信站: BBS 水木清華站 (Fri Jan 18 15:36:39 2002) <br /> <br />我對這個東西就一知半解,智能把從wangyyff和ornot兩位大俠那里 <br />聽來的一些只言片語從我理解的角度來說一說了。而且也只是基于ARM處理器的。 <br />【 在 flew (游泳的魚) 的大作中提到: 】 <br />∶<i> 但是PC好象無法從處理器外直接訪問啊,如果可以,這個辦法最簡潔了 </i><br />ARM的JTAG調試可以把指令插入到指令流水線里面,這樣要訪問PC也就不是什么困難了。 <br />這種情況下,所有CPU的內部狀態都是可以檢測的。 <br />∶<i> 這樣會干涉目標程序的運行,影響實時性,從而也有可能影響分支覆蓋率 </i><br />∶<i> 的真實性。比如,平時調程序的時候,單步可以正確執行,可是全速運行就 </i><br />∶<i> 出問題,是不是也就是一個類似的情況。 </i><br />在需要的時候,調試器給出一個中斷,停止CPU的運行,然后可以監測CPU內部的狀態, <br />然后可以給出一個運行指令,讓CPU進行全速運行。這樣的話,就不會有這種問題出現 <br />了。 <br />∶<i> 我是在設想,如何對目標程序和目標系統不進行任何干涉,只是采樣其外部 </i><br />∶<i> 信號狀態來解決這個問題。大俠認為有可能嗎?比如把所有的狀態都采集 </i><br />∶<i> 下來,然后進行事后分析?有類似的前人經驗嗎? </i><br />這個想法很好,事實上JTAG調試也是基于這種想法的,只是它所采集的信號不是從 <br />CPU外部,而是在CPU core與外圍的接口處。 <br />∶<i> 謝謝! </i><br /> <br /> <br />-- <br /> <br />※ 來源:·BBS 水木清華站 smth.org·[FROM: 203.93.105.208] <br />發信人: flew (游泳的魚), 信區: Embedded <br />標 題: Re: 關于指令預取,有誰比較了解嗎???? <br />發信站: BBS 水木清華站 (Fri Jan 18 17:21:53 2002) <br /> <br /> <br /> 感謝psun大俠的提示,看你的ID就很熟,,原來已經列為好友,肯定是 <br /> 之前也向你請教過,可惜在水木請教、討論的問題太多,記不得什么問題了, <br /> 真是不好意思!:) <br /> <br />【 在 psun (sam) 的大作中提到: 】 <br />∶<i> 我對這個東西就一知半解,智能把從wangyyff和ornot兩位大俠那里 </i><br /> 這兩位還在水木嗎?我一定要跟他們請教一下。 <br /> <br />∶<i> 聽來的一些只言片語從我理解的角度來說一說了。而且也只是基于ARM處理器的。 </i><br />∶<i> ARM的JTAG調試可以把指令插入到指令流水線里面,這樣要訪問PC也就不是什么困難了
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -