WhyCan Forum

人过留名,雁过留声,感谢各位朋友不离不弃地支持。 QQ: 516333132, 微信: whycan_cn (哇酷网/挖坑网/填坑网) admin@whycan.cn

您尚未登录。

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

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

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
累计积分: 655

Re: ARM裸机的cache效率问题

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

离线

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

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

Re: ARM裸机的cache效率问题

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

离线

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

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

Re: ARM裸机的cache效率问题

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

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

离线

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

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

Re: ARM裸机的cache效率问题

tom 说:

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

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

离线

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

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

Re: ARM裸机的cache效率问题

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

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

离线

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

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

Re: ARM裸机的cache效率问题

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

离线

页脚