WhyCan Forum(哇酷开发者社区)

我们习惯了"有问题百度一下", 感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信: whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn

您尚未登录。

#1 2019-11-22 11:24:01

tom
会员
注册时间: 2018-03-14
累计积分: 113

ARM裸机的cache效率问题

arm (arm9 A9 之类)裸机或者跑rtos,
最简单的避免cache一致性的方法就是粗暴的禁止data cache,这样会极大的影响效率。

如果使能cache,
像gui之类的应用,最底层会频繁访问DDR,并且一般不是连续访问,这样反复的刷cache,也会导致效率非常低。

这种情况一般怎么做比较好? 
如果不配置mmu,是不是无法做到直接写通到DDR?


//
linux下的fb,一般配置该区域内存是非cache的,app可以直接访问,无需关心cache问题,这个是mmu保证的吗?

离线

#2 2019-11-22 12:55:54

达克罗德
会员
注册时间: 2018-04-10
累计积分: 892

Re: ARM裸机的cache效率问题

裸机我是切显存的时候显式更新cache到ddr,平常画UI的时候是不用管cache

离线

#3 2019-11-22 14:00:43

tom
会员
注册时间: 2018-03-14
累计积分: 113

Re: ARM裸机的cache效率问题

是做双缓存吗?  双缓存的话,如果分辨率比较高,执行一次memcpy,然后再刷新cache,消耗也比较大吧

离线

#4 2019-11-22 14:32:01

yongxiang
会员
注册时间: 2019-10-22
累计积分: 3

Re: ARM裸机的cache效率问题

没理解gui和性能问题有关?
用GUI基于frame buffer的方式,你就需要更新,这里没有cache,那就每一次都需要写透。有cache就可以减少,在合适的时候flush cache一次就好。

cache的本意就是将频繁访问的数据加速啊

离线

#5 2019-11-22 14:57:15

达克罗德
会员
注册时间: 2018-04-10
累计积分: 892

Re: ARM裸机的cache效率问题

tom 说:

是做双缓存吗?  双缓存的话,如果分辨率比较高,执行一次memcpy,然后再刷新cache,消耗也比较大吧

如果你是全屏刷就可以直接写显存然后切换就可以,不需要memcpy。

离线

#6 2019-11-23 13:02:49

tom
会员
注册时间: 2018-03-14
累计积分: 113

Re: ARM裸机的cache效率问题

全屏幕刷新,一般场合也不可能,除非是较小的屏幕。其实我考虑就是大屏幕这样情况,小屏幕怎么搞都差不多。

看到本站一些演示的移植gui效果,视觉效果还可以,但是响应速度较差,影响体验。

离线

#7 2019-12-01 14:26:04

armstrong
会员
注册时间: 2019-04-10
累计积分: 104

Re: ARM裸机的cache效率问题

我是这么处理的:显存也在cache区域的内存中,在帧同步中断里把显存对应的cache清理一遍就可以了。
这样,所有cache带来的便利和性能加持都用上了。

离线

#8 2020-03-02 05:10:39

chenjm
会员
注册时间: 2020-02-07
累计积分: 15

Re: ARM裸机的cache效率问题

达克罗德 说:

裸机我是切显存的时候显式更新cache到ddr,平常画UI的时候是不用管cache

大神,你好,你这个是切换显存的时候,显式更新cache到ddr。这个为什么要cache更新到ddr?不是很懂。请指教。谢谢

离线

#9 2020-03-02 08:23:24

达克罗德
会员
注册时间: 2018-04-10
累计积分: 892

Re: ARM裸机的cache效率问题

chenjm 说:

大神,你好,你这个是切换显存的时候,显式更新cache到ddr。这个为什么要cache更新到ddr?不是很懂。请指教。谢谢

因为LCD控制器从ddr读数据时是绕过了了cache直接读ddr的。这时候ddr的内容并不是最新的数据

离线

#10 2020-03-02 17:33:51

szchen2006
会员
注册时间: 2019-10-09
累计积分: 150

Re: ARM裸机的cache效率问题

学习了。

离线

#11 2020-05-21 22:09:22

xsxusen05
会员
注册时间: 2020-03-08
累计积分: 22

Re: ARM裸机的cache效率问题


直接写显存的象素,用的是720MHzCPU频率,代码基于达克罗德大神的minimal_f1c100s_framebuff,屏幕是4.3寸480*272。
看这个刷新速度一点也不正常哇。

最近编辑记录 xsxusen05 (2020-05-21 22:14:58)

离线

#12 2020-05-22 12:26:06

armstrong
会员
注册时间: 2019-04-10
累计积分: 104

Re: ARM裸机的cache效率问题

xsxusen05 说:


直接写显存的象素,用的是720MHzCPU频率,代码基于达克罗德大神的minimal_f1c100s_framebuff,屏幕是4.3寸480*272。
看这个刷新速度一点也不正常哇。

做个双缓存帧同步切换,就不会这样了。

离线

#13 2020-05-22 12:29:00

hameyou
会员
注册时间: 2018-04-15
累计积分: 46

Re: ARM裸机的cache效率问题

xsxusen05 说:


直接写显存的象素,用的是720MHzCPU频率,代码基于达克罗德大神的minimal_f1c100s_framebuff,屏幕是4.3寸480*272。
看这个刷新速度一点也不正常哇。

用双缓冲了吗?

离线

#14 2020-05-23 10:39:48

xsxusen05
会员
注册时间: 2020-03-08
累计积分: 22

Re: ARM裸机的cache效率问题

没有用,只是测试一下而已。

离线

#15 2020-05-23 11:17:43

armstrong
会员
注册时间: 2019-04-10
累计积分: 104

Re: ARM裸机的cache效率问题

xsxusen05 说:

没有用,只是测试一下而已。

如果没用双缓冲,这个现象就是正常的。无法说明CPU慢之类的。

离线

页脚

工信部备案:粤ICP备20025096号-1 Powered by FluxBB