Chinaunix首页 | 论坛 | 博客
  • 博客访问: 386430
  • 博文数量: 73
  • 博客积分: 2620
  • 博客等级: 少校
  • 技术积分: 1212
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-09 10:47
文章分类
文章存档

2011年(18)

2010年(50)

2009年(5)

我的朋友

分类: 嵌入式

2011-04-29 09:25:53

tile的L2 cache line为64字节,并可以使用编译器内建语句__insn_inv禁止该cache line的使用。
1 若驱动中使用dma_alloc_coherent申请dma buffer,则该函数内部通过禁止pte中的bit位将dma buffer设置为不可以cache的内存区,但是该buffer与应用程序申请的内存之间的数据拷贝需要大量的时间,在大数据量的情况下不满足时间的要求,原因未知;

2 如驱动中使用dma_alloc_coherent函数内部的子函数get_order和alloc_pages_node申请dma缓冲区,则满足应用与驱动之间内存数据拷贝的时间要求,但由于缺少了一步将该dma缓冲区设置为PAGE_HOME_UNCACHED,造成buffer的数据是可以cache的。所以可以在每次读取buffer之前将cache line禁止掉.这样做可以满足时间的要求。


参考MDE的UG101-USER-ARCHITECTURE-REFRENCE chapter 5
阅读(1629) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~