如何计算指令执行时间和指令周期计算方法?

如何计算指令执行时间和指令周期计算方法?,第1张

延时在单任务系统中一般是通过做无用的 *** 作来浪费这段时间,

也就是这个时间瞎执行一些没用的指令, 过了定时值后, 立刻执行所要求的代码.

延时就是做数学题, 如题可知

1) 8086 时钟周期 5MHz

可知, CPU执行一个周期是1/5000000= 0.2 微秒

2) 需要延时 1毫秒

即, 需要浪费x个周期, 0.2 * x = 1000 (1毫秒=1000微秒)

x = 5000.

3) 一个Nop(什么都不做指令)是3c (3个周期)

5000/3 = 1333

程序中写1333个NOP显然要累死你

于是一个聪明的办法就是写个什么也不做,

专门浪费时间的循环, 于是就有了题目中的样子

1次循环共多少指令周期呢? 加一下

mov 4个 [这个是循环之前的初始化, 浪费了4个周期]

---------------

nop 3个

nop 3个

loop 9个 (只有循环结束才不转移)

----------------

可知: 3+3+9 = 15

(5000-4) / 15 = 333

事实上这个延时并不是非常非常的精确,

因为5000除不尽15, 而且最后的loop是5个周期也不是9个

精确到2个微秒级, 这是后话

计算机中时钟周期是(主频的倒数),一个时钟周期cpu仅完成一个最基本的动作,完成一个基本 *** 作的时间为机器周期,一般由几个时钟周期组成;完成一条指令为指令周期。一般由几个机器周期组成,指令不同机器周期数也不同。\r\n以我的本本1.6G为例,机器周期由两个时钟周期组成,平均三个机器周期完成一条指令(这要假设,我看不到)\r\n时钟周期为1/(1.6*1024m)=0.61ns机器周期为0.61*2=1.22ns\r\n平均指令周期3*1.22ns=3.66ns\r\n平均指令执行速度为1/(3.66ns)=273.22MIPS(百万条指令每秒)\r\n这只是计算方法,条件也是假设的,晶振我不知。\r\n大致算法就这样,我数学不好。如有算错请多指教!

用定时器呀 ,系统定时器systick产生中断,设置1ms中断一次, 每中断一次变量加1

开始计算前将变量清0,运算结束时读取变量,可得到运算时间

当然,中断对程序运行时间也有影响,但如果是毫秒级的中断,每次花费时间只有1US左右,对时间精度影响不大。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8094934.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-13
下一篇2023-04-13

发表评论

登录后才能评论

评论列表(0条)

    保存