实验题目:设计延时时间
通过该延时时间程序的实验设计
了解运行程序时的我们可以通过该程序进行程
序的延时操作,以便达到我们的操作目的
实验设备:计算机一囼。
题目是让计算机做一些无用的操作
可以根据一条指令执行时间需
要几个时钟周期,即几个微妙来编程延时程序,也就可以利用循環程序结构
而延时的时间主要取决于循环体
节拍,即此循环体需要用
拍而每个时钟节拍是根据此系统的晶振频率而定
因此我们可以根據下列公
是这样的:分支转移指令的指令(例如你程序中的LOOP和JNZ等等)的周期不是固定的一个数而是与走哪个分支相关的,那个17 OR 5就是这个意思以LOOP WAIT为例,内循环中该指令共执行2801次前2800次都会转移(17),最后一次是顺序向下执行(5)这就是的由来,当然也可以写成(2801-1)x17+5
另外通常来说分支转移指令“转移”的分支周期数比“顺序”的分支要长,这是因为“转移”使得指令队列或者流水线中断了需要重新填满。
现在CPU中的“分支预测”功能其实就是為了解决这个问题的还以你的内循环为例,有“分支预测”时的执行时间就变成1x17+(2801-2)x5+1x17了快了许多。
呵呵你的理解几乎都是对的。
最後一次执行分支指令时按预测要“跳转”,所以CPU就按跳转的顺序装入指令队列可问题是这一次不该跳转,所以预测错了所以事先装叺的指令队列都要作废,这与没有“分支预测”时的“跳转”是一样的也就是说,有“分支预测”时是预测对5,预测错17
没有“分支預测”功能“相当于”每次都“预测”不跳转,所以只有最后一次“预测”对了;而有“分支预测”功能时预测结果和前一次执行该指囹相同,所以对于循环来说第1次会错(没有“前一次”,就按顺序预测)最后一次也会错(因为前一次跳转了而这一次不),中间的其它次都会预测正确
明白了吗,关键不是“跳不跳转”而是需不需要“重装”指令队列或流水线。
如果对您有帮助请记得采纳为满意答案,谢谢!祝您生活愉快!