在 STC32F系列的单片机中, 设置了 ICACHE 功能, 也就是高速指令缓冲功能。 这样可以解决内部 指令存储器速度低的问题。 ·下面通过自制的单片机测试版, 测试一下 ICACHE的功能。 测试中,单片机的 IRC频率设置为 56MHz。
这里利用了NOP命令序列进行测试。 利用 ON,OFF 宏指令, 对P1.0管脚电平进行改变, 通过示波器测量 P1.0 高电平时间便可以测量中间 四十个 NOP 指令执行时间。 需要说明的, 这个时间还应该包括对 P1.0 赋值的时间。 示波器测量的波形为一个方波脉冲, 利用光标测量时间, 可以看到高电平时间为 737 纳秒。 因此对应的指令周期为 18.425纳秒, 相当于54.27 MHz。这与单片机工作频率非常接近了。 如果考虑到 ON,OFF 指令, 可以说,此时内部指令执行速度就是 56MHz。
▲ 图1.2.1 打开ICACHE功能
(资料图片)
下面关闭 ICACHE 功能, 在工程文件中将相应功能宏定义设置为 0。 那么在单片机初始化程序中, 这一段打开 ICAHCE 功能的函数就被禁止掉。 这是测量相同 四十个 NOP 指令对应的执行时间。 可以看到时间增加到915纳秒。 这比起 开启 ICACHE功能之后时间增加了 24% 左右。 这是因为其中取指序列中插入了等待时间所致。 由此可见, ICACHE 预取指缓存的功能可以减少取指过程所带来的执行时间延长。
▲ 图1.2.2 关闭ICACHE功能
上面的对比是在MCU时钟为 56MHz, WTST 设置为 1的情况下测量的, 下面为了突出 ICACHE的功能, 有意将 WTST 的时间设置为 10, 这样是否存在 ICACHE的加速效果就会增加。 这是在 ICACHE关闭的情况下, 执行四十个 NOP 指令所消耗的时间。执行时间为 3.59微秒。 将 ICACHE 打开之后, 执行时间就只有 0.737微秒了。 可以看到 ICAHCE 提速的效果非常明显了。
▲ 图1.2.3 设置WTST等于10,ICACHE关闭对应的NOP(40)执行时间
▲ 图1.2.4 设置WTST等于 10, ICACHE打开对应的NOP(40)执行时间
下面测量一下更复杂程序执行的时间, 这里在原来的 NOP 指令基础之上, 增加了浮点与三角函数运算。注意, 这里并没有利用 STC32F12内部的硬件浮点和三角函数运算功能。 这是在 ICACHE打开的情况下, WTST等于1, 对应的执行时间, 大约为 7.46微秒。 在 ICACHE打开的情况下, 执行时间为 6.90微秒。·速度大约提高了 8%左右。
由此可见, 对于复杂的算术运算, ICACHE的功能并不那么明显。 对于 NOP 等普通的命令, ICACHE提升速度明显。
ON(LED);NOP(40);f1=nSendCount;f2=1.2334;f3=atan(f1*f2);OFF(LED);
▲ 图1.2.5 ICACHE打开情况下执行时间
▲ 图1.2.6 ICACHE关闭情况下执行时间
本文测试了 STC32F12 中的指令高速缓冲功能, 可以看到在 WTST 不等于 0 的情况下, 它对于普通指令序列存在明显的提速功能。
关键词:
相关的文章>>
热门搜索:
资讯
更多图说健康
更多疏风解毒胶囊的作用与功效是什么?疏风解毒胶囊可以起到解毒利咽...
艾叶的功效与作用有哪些?1、散寒止痛艾叶为菊科蒿属植物艾的叶...
治疗白发的偏方有哪些?1 桑白皮30克,五倍子15克,青葙子60...
紫癜性肾炎是什么病?所谓的紫癜性肾炎,就是由于患者对于某些东...
维生素ad是什么?维生素AD是指维生素A和D的混合制剂,是两种脂溶...
乙肝小三阳严重吗?乙肝小三阳有些比较严重,也有些不太严重的,...
常见疾病
更多体育健身
更多博尔顿俱乐部宣布,南安普顿前锋丹-恩伦杜卢已经以三年的合同正...
启航新征程,奋进新时代。建设银行黑龙江省分行将进一步发挥国...
2023毕业歌串烧|给我一首歌的时间
《别叫我“赌神”》上映至今,票房寥寥不过3600余万。影片是演...
半岛全媒体记者王媛端午假期结束,全国各地“亮”出消费账单,...
来源|都市现场未经授权请勿转载6月25日记者从南昌车站了解到端...