⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000002.htm

📁 水木社区 embeded 版精华区 下载
💻 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>发信人:&nbsp;flew&nbsp;(游泳的鱼),&nbsp;信区:&nbsp;Embedded&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />标&nbsp;&nbsp;题:&nbsp;关于指令预取,有谁比较了解吗????&nbsp;<br />发信站:&nbsp;BBS&nbsp;水木清华站&nbsp;(Fri&nbsp;Jan&nbsp;18&nbsp;13:36:09&nbsp;2002)&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指令预取技术在很多处理器里都有体现,它极大程度提高了处理器的效率。&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;但是,也带来了一些问题。&nbsp;<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在进行软件软件测试的时候,一个很基本的需要了解的测试结果就是程序分支&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;覆盖率。如果对处理器的所有状态(地址,数据,控制总线)进行跟踪,会发现&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;一些没有实际执行的代码也被检测到,这就是因为指令预取的缘故。&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;目前常用的方法是在所有的分支点进行插桩处理,处理器通知外界是否&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;真正执行了某个分支的代码。但这不可避免的修改了目标代码,使得目标代码&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;无法完全在真实环境下执行,影响目标程序的效率和实时性。&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如何解决这个问题呐?有兴趣的朋友不妨讨论一下这个有意思的话题。&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;解释一下我的疑惑。//bow&nbsp;<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;哪位有什么指点或也对这个问题感兴趣,可以和我联系<a href="mailto:SmartZJ@263.net">SmartZJ@263.net</a>&nbsp;<br />--&nbsp;<br />&nbsp;<br />※&nbsp;修改:·flew&nbsp;於&nbsp;Jan&nbsp;18&nbsp;13:41:01&nbsp;修改本文·[FROM:&nbsp;&nbsp;&nbsp;202.112.137.7]&nbsp;<br />※&nbsp;来源:·BBS&nbsp;水木清华站&nbsp;smth.org·[FROM:&nbsp;202.112.137.7]&nbsp;<br />发信人:&nbsp;flew&nbsp;(游泳的鱼),&nbsp;信区:&nbsp;Embedded&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />标&nbsp;&nbsp;题:&nbsp;Re:&nbsp;关于指令预取,有谁比较了解吗????&nbsp;<br />发信站:&nbsp;BBS&nbsp;水木清华站&nbsp;(Fri&nbsp;Jan&nbsp;18&nbsp;13:39:56&nbsp;2002)&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;斑竹如果觉得我这个问题提的不算离开本版的主旨,请给m或g一下&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;兴许有一天有熟悉这类问题的朋友可以解释一下,谢谢!//bow&nbsp;<br />&nbsp;<br />--&nbsp;<br />&nbsp;<br />※&nbsp;来源:·BBS&nbsp;水木清华站&nbsp;smth.org·[FROM:&nbsp;202.112.137.7]&nbsp;<br />发信人:&nbsp;neuronlee&nbsp;(机械化神经元),&nbsp;信区:&nbsp;Embedded&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />标&nbsp;&nbsp;题:&nbsp;Re:&nbsp;关于指令预取,有谁比较了解吗????&nbsp;<br />发信站:&nbsp;BBS&nbsp;水木清华站&nbsp;(Fri&nbsp;Jan&nbsp;18&nbsp;13:50:52&nbsp;2002)&nbsp;<br />&nbsp;<br />如果能监视CPU中的PC寄存器就不会有问题了罢?&nbsp;因为pc总是保存下&nbsp;<br />一条要实际执行的指令.&nbsp;或者利用陷阱中断,&nbsp;每执行一条指令就跳&nbsp;<br />到陷阱中断中,&nbsp;而中断服务程序保存现场到一个日志中.&nbsp;调式后通过&nbsp;<br />分析记录来获得覆盖率.&nbsp;这样你就不用修改目标代码了.&nbsp;<br />其实在软件中加入测试代码是很正常的,&nbsp;当然是在系统资源允许的情况&nbsp;<br />下.&nbsp;<br />【&nbsp;在&nbsp;flew&nbsp;(游泳的鱼)&nbsp;的大作中提到:&nbsp;】&nbsp;<br />∶<i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指令预取技术在很多处理器里都有体现,它极大程度提高了处理器的效率。&nbsp;</i><br />∶<i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;但是,也带来了一些问题。&nbsp;</i><br />∶<i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在进行软件软件测试的时候,一个很基本的需要了解的测试结果就是程序分支&nbsp;</i><br />∶<i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;覆盖率。如果对处理器的所有状态(地址,数据,控制总线)进行跟踪,会发现&nbsp;</i><br />∶<i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;一些没有实际执行的代码也被检测到,这就是因为指令预取的缘故。&nbsp;</i><br />∶<i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;目前常用的方法是在所有的分支点进行插桩处理,处理器通知外界是否&nbsp;</i><br />∶<i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;真正执行了某个分支的代码。但这不可避免的修改了目标代码,使得目标代码&nbsp;</i><br />∶<i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;无法完全在真实环境下执行,影响目标程序的效率和实时性。&nbsp;</i><br />∶<i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如何解决这个问题呐?有兴趣的朋友不妨讨论一下这个有意思的话题。&nbsp;</i><br />∶<i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;解释一下我的疑惑。//bow&nbsp;</i><br />∶<i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;哪位有什么指点或也对这个问题感兴趣,可以和我联系<a href="mailto:SmartZJ@263.net">SmartZJ@263.net</a>&nbsp;</i><br />∶<i>&nbsp;...................&nbsp;</i><br />&nbsp;<br />--&nbsp;<br />According&nbsp;to&nbsp;the&nbsp;system&nbsp;log,&nbsp;windows&nbsp;had&nbsp;already&nbsp;started,&nbsp;but&nbsp;<br />it&nbsp;seems&nbsp;to&nbsp;be&nbsp;murdered&nbsp;mysteriously!&nbsp;:-DDDDDDDD&nbsp;<br />&nbsp;<br />&nbsp;<br />※&nbsp;来源:·BBS&nbsp;水木清华站&nbsp;smth.org·[FROM:&nbsp;66.75.17.82]&nbsp;<br />发信人:&nbsp;flew&nbsp;(游泳的鱼),&nbsp;信区:&nbsp;Embedded&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />标&nbsp;&nbsp;题:&nbsp;Re:&nbsp;关于指令预取,有谁比较了解吗????&nbsp;<br />发信站:&nbsp;BBS&nbsp;水木清华站&nbsp;(Fri&nbsp;Jan&nbsp;18&nbsp;14:19:02&nbsp;2002)&nbsp;<br />&nbsp;<br />&nbsp;<br />【&nbsp;在&nbsp;neuronlee&nbsp;(机械化神经元)&nbsp;的大作中提到:&nbsp;】&nbsp;<br />∶<i>&nbsp;如果能监视CPU中的PC寄存器就不会有问题了罢?&nbsp;因为pc总是保存下&nbsp;</i><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;但是PC好象无法从处理器外直接访问啊,如果可以,这个办法最简洁了&nbsp;<br />&nbsp;<br />∶<i>&nbsp;一条要实际执行的指令.&nbsp;或者利用陷阱中断,&nbsp;每执行一条指令就跳&nbsp;</i><br />∶<i>&nbsp;到陷阱中断中,&nbsp;而中断服务程序保存现场到一个日志中.&nbsp;调式后通过&nbsp;</i><br />∶<i>&nbsp;分析记录来获得覆盖率.&nbsp;这样你就不用修改目标代码了.&nbsp;</i><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这样会干涉目标程序的运行,影响实时性,从而也有可能影响分支覆盖率&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;的真实性。比如,平时调程序的时候,单步可以正确执行,可是全速运行就&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;出问题,是不是也就是一个类似的情况。&nbsp;<br />&nbsp;<br />∶<i>&nbsp;其实在软件中加入测试代码是很正常的,&nbsp;当然是在系统资源允许的情况&nbsp;</i><br />∶<i>&nbsp;下.&nbsp;</i><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;我是在设想,如何对目标程序和目标系统不进行任何干涉,只是采样其外部&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;信号状态来解决这个问题。大侠认为有可能吗?比如把所有的状态都采集&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;下来,然后进行事后分析?有类似的前人经验吗?&nbsp;<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;谢谢!&nbsp;<br />&nbsp;<br />--&nbsp;<br />&nbsp;<br />※&nbsp;来源:·BBS&nbsp;水木清华站&nbsp;smth.org·[FROM:&nbsp;202.112.137.7]&nbsp;<br />发信人:&nbsp;psun&nbsp;(sam),&nbsp;信区:&nbsp;Embedded&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />标&nbsp;&nbsp;题:&nbsp;Re:&nbsp;关于指令预取,有谁比较了解吗????&nbsp;<br />发信站:&nbsp;BBS&nbsp;水木清华站&nbsp;(Fri&nbsp;Jan&nbsp;18&nbsp;15:36:39&nbsp;2002)&nbsp;<br />&nbsp;<br />我对这个东西就一知半解,智能把从wangyyff和ornot两位大侠那里&nbsp;<br />听来的一些只言片语从我理解的角度来说一说了。而且也只是基于ARM处理器的。&nbsp;<br />【&nbsp;在&nbsp;flew&nbsp;(游泳的鱼)&nbsp;的大作中提到:&nbsp;】&nbsp;<br />∶<i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;但是PC好象无法从处理器外直接访问啊,如果可以,这个办法最简洁了&nbsp;</i><br />ARM的JTAG调试可以把指令插入到指令流水线里面,这样要访问PC也就不是什么困难了。&nbsp;<br />这种情况下,所有CPU的内部状态都是可以检测的。&nbsp;<br />∶<i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这样会干涉目标程序的运行,影响实时性,从而也有可能影响分支覆盖率&nbsp;</i><br />∶<i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;的真实性。比如,平时调程序的时候,单步可以正确执行,可是全速运行就&nbsp;</i><br />∶<i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;出问题,是不是也就是一个类似的情况。&nbsp;</i><br />在需要的时候,调试器给出一个中断,停止CPU的运行,然后可以监测CPU内部的状态,&nbsp;<br />然后可以给出一个运行指令,让CPU进行全速运行。这样的话,就不会有这种问题出现&nbsp;<br />了。&nbsp;<br />∶<i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;我是在设想,如何对目标程序和目标系统不进行任何干涉,只是采样其外部&nbsp;</i><br />∶<i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;信号状态来解决这个问题。大侠认为有可能吗?比如把所有的状态都采集&nbsp;</i><br />∶<i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;下来,然后进行事后分析?有类似的前人经验吗?&nbsp;</i><br />这个想法很好,事实上JTAG调试也是基于这种想法的,只是它所采集的信号不是从&nbsp;<br />CPU外部,而是在CPU&nbsp;core与外围的接口处。&nbsp;<br />∶<i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;谢谢!&nbsp;</i><br />&nbsp;<br />&nbsp;<br />--&nbsp;<br />&nbsp;<br />※&nbsp;来源:·BBS&nbsp;水木清华站&nbsp;smth.org·[FROM:&nbsp;203.93.105.208]&nbsp;<br />发信人:&nbsp;flew&nbsp;(游泳的鱼),&nbsp;信区:&nbsp;Embedded&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />标&nbsp;&nbsp;题:&nbsp;Re:&nbsp;关于指令预取,有谁比较了解吗????&nbsp;<br />发信站:&nbsp;BBS&nbsp;水木清华站&nbsp;(Fri&nbsp;Jan&nbsp;18&nbsp;17:21:53&nbsp;2002)&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;感谢psun大侠的提示,看你的ID就很熟,,原来已经列为好友,肯定是&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;之前也向你请教过,可惜在水木请教、讨论的问题太多,记不得什么问题了,&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;真是不好意思!:)&nbsp;<br />&nbsp;<br />【&nbsp;在&nbsp;psun&nbsp;(sam)&nbsp;的大作中提到:&nbsp;】&nbsp;<br />∶<i>&nbsp;我对这个东西就一知半解,智能把从wangyyff和ornot两位大侠那里&nbsp;</i><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这两位还在水木吗?我一定要跟他们请教一下。&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />∶<i>&nbsp;听来的一些只言片语从我理解的角度来说一说了。而且也只是基于ARM处理器的。&nbsp;</i><br />∶<i>&nbsp;ARM的JTAG调试可以把指令插入到指令流水线里面,这样要访问PC也就不是什么困难了

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -