Chinaunix首页 | 论坛 | 博客
  • 博客访问: 15531409
  • 博文数量: 2005
  • 博客积分: 11986
  • 博客等级: 上将
  • 技术积分: 22535
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-17 13:56
文章分类

全部博文(2005)

文章存档

2014年(2)

2013年(2)

2012年(16)

2011年(66)

2010年(368)

2009年(743)

2008年(491)

2007年(317)

分类: LINUX

2009-03-19 14:18:47

为什么DMA情况下的SDRAM不能使能dcache,但可以使能icache

如果使用了DMA,比如USB试用了DMA,那么就不能开dcache,因为这样会导致SDRAM中的数据与dcache中的数据存在不匹配的风险,
比如:
1.cpu从SDRAM中读取若干cache线大小数据到cpu内部dcache空间,而后
2.DMA从usb总线回写了数据到SDRAM中,那么位于dcache中的数据将不能获知SDRAM中由DMA接收到的新数据,
3.直到cpu操作相应cache线数据,使cache线invalid失效,这样cpu才会从SDRAM再次取出数据存到cpu内部的相应失效的cache线上,
4.所以DMA的SDRAM空间,是不允许使能dcache的,也就有了linux进入schedule之后,invalid所有dcache和icache的不须性[luther.gliethttp]
而icache指令cache,因为其存在只读性,所以不会存在由ROM加载到SDRAM后,SDRAM中的程序指令和icache线上的数据不一致现象,
所以icache是可以安全使用的[luther.gliethttp]
阅读(3135) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~