测试 STC32F12 的 ICACHE 功能

文章通过测试STC32F系列单片机的ICACHE功能,展示了开启ICACHE如何显著减少指令执行时间,特别是在执行NOP指令序列时。当WTST设置较大时,ICACHE加速效果更为明显。然而,对于包含浮点和三角函数运算的复杂程序,ICACHE的性能提升相对较小。
摘要由CSDN通过智能技术生成

STC32F的ICACHE功能

 

01 ICACHE功能


一、前言

  在 STC32F系列的单片机中, 设置了 ICACHE 功能, 也就是高速指令缓冲功能。  这样可以解决内部 指令存储器速度低的问题。 ·下面通过自制的单片机测试版, 测试一下 ICACHE的功能。 测试中,单片机的 IRC频率设置为 56MHz。

GM1687574857_1280_800.MPG|_-2

二、测量结果

  这里利用了NOP命令序列进行测试。 利用 ON,OFF 宏指令,  对P1.0管脚电平进行改变,  通过示波器测量 P1.0 高电平时间便可以测量中间 四十个 NOP 指令执行时间。 需要说明的, 这个时间还应该包括对 P1.0 赋值的时间。  示波器测量的波形为一个方波脉冲,  利用光标测量时间, 可以看到高电平时间为 737 纳秒。 因此对应的指令周期为 18.425纳秒, 相当于54.27 MHz。 这与单片机工作频率非常接近了。 如果考虑到 ON,OFF 指令, 可以说,此时内部指令执行速度就是 56MHz。

GM1687572894_1280_800.MPG|_-9

▲ 图1.2.1 打开ICACHE功能

▲ 图1.2.1 打开ICACHE功能

  下面关闭 ICACHE 功能, 在工程文件中将相应功能宏定义设置为 0。 那么在单片机初始化程序中,  这一段打开 ICAHCE 功能的函数就被禁止掉。 这是测量相同 四十个 NOP 指令对应的执行时间。 可以看到时间增加到915纳秒。 这比起 开启 ICACHE功能之后时间增加了 24% 左右。 这是因为其中取指序列中插入了等待时间所致。 由此可见, ICACHE 预取指缓存的功能可以减少取指过程所带来的执行时间延长。
GM1687573501_1280_800.MPG|_-9

▲ 图1.2.2 关闭ICACHE功能

▲ 图1.2.2 关闭ICACHE功能

  上面的对比是在MCU时钟为 56MHz, WTST 设置为 1的情况下测量的,  下面为了突出 ICACHE的功能, 有意将 WTST 的时间设置为 10, 这样是否存在 ICACHE的加速效果就会增加。  这是在 ICACHE关闭的情况下, 执行四十个 NOP 指令所消耗的时间。 执行时间为 3.59微秒。  将 ICACHE 打开之后, 执行时间就只有 0.737微秒了。  可以看到 ICAHCE 提速的效果非常明显了。
GM1687573967_1280_800.MPG|_-5

▲ 图1.2.3 设置WTST等于10,ICACHE关闭对应的NOP(40)执行时间

▲ 图1.2.3 设置WTST等于10,ICACHE关闭对应的NOP(40)执行时间

▲ 图1.2.4 设置WTST等于 10, ICACHE打开对应的NOP(40)执行时间

▲ 图1.2.4 设置WTST等于 10, ICACHE打开对应的NOP(40)执行时间

  下面测量一下更复杂程序执行的时间,  这里在原来的 NOP 指令基础之上, 增加了浮点与三角函数运算。 注意, 这里并没有利用 STC32F12内部的硬件浮点和三角函数运算功能。 这是在 ICACHE打开的情况下, WTST等于1, 对应的执行时间, 大约为 7.46微秒。 在 ICACHE打开的情况下, 执行时间为 6.90微秒。 ·速度大约提高了 8%左右。
GM1687574395_1280_800.MPG|_-4

  由此可见, 对于复杂的算术运算, ICACHE的功能并不那么明显。  对于 NOP 等普通的命令, ICACHE提升速度明显。
GM1687574537_1280_800.MPG|_-2

ON(LED);
NOP(40);
f1 = nSendCount;
f2 = 1.2334;
f3 = atan(f1*f2);            
OFF(LED);            

▲ 图1.2.5 ICACHE打开情况下执行时间

▲ 图1.2.5 ICACHE打开情况下执行时间

▲ 图1.2.6 ICACHE关闭情况下执行时间
▲ 图1.2.6 ICACHE关闭情况下执行时间

 

  结 ※


  文测试了 STC32F12 中的指令高速缓冲功能, 可以看到在 WTST 不等于 0 的情况下, 它对于普通指令序列存在明显的提速功能。
GM1687574610_1280_800.MPG|_-2


● 相关图表链接:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卓晴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值