免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12345
最近访问板块 发新帖
楼主: duanius
打印 上一主题 下一主题

一个cache相关的问题 [复制链接]

论坛徽章:
0
41 [报告]
发表于 2013-03-28 08:58 |只看该作者
这个问题不应该叫cache一致性问题吧。cache一致性一般指的是smp的cache一致性。
目前的问题完全单cpu上出现的cache问题。
参考:http://bbs.chinaunix.net/thread-4070329-1-1.html

论坛徽章:
4
酉鸡
日期:2014-03-21 23:19:50狮子座
日期:2014-08-01 22:11:40酉鸡
日期:2015-01-10 21:31:442015年辞旧岁徽章
日期:2015-03-03 16:54:15
42 [报告]
发表于 2013-03-28 09:32 |只看该作者
回复 41# blake326

alias问题我了解了。问下,为何此帖说使用nocache属性还出问题?

如果是一个用nocache,一个用cache,那么就没有alias的问题啊?


   

论坛徽章:
0
43 [报告]
发表于 2013-03-28 10:21 |只看该作者
本帖最后由 blake326 于 2013-03-28 10:22 编辑

回复 42# chishanmingshen


    一个cache,一个nocache访问。nocache访问的都是真实的ddr。cache的访问的是cache。
  如果你写了cache,当cache中的值没有clean到ddr的时候,问题不就来了嘛。
  如果nocache写了ddr。但是cache中的值没有inv的话,问题也来了。

  这个问题跟磁盘驱动要处理的,在交给dma读写之前,必须要先clean或者inv一下相关的cache。
  

论坛徽章:
4
酉鸡
日期:2014-03-21 23:19:50狮子座
日期:2014-08-01 22:11:40酉鸡
日期:2015-01-10 21:31:442015年辞旧岁徽章
日期:2015-03-03 16:54:15
44 [报告]
发表于 2013-03-28 11:46 |只看该作者
明白了,谢谢,看来还是x86舒服些。。。

回复 43# blake326


   

论坛徽章:
0
45 [报告]
发表于 2013-04-03 20:41 |只看该作者
本帖最后由 image_z 于 2013-04-07 09:48 编辑
duanius 发表于 2010-11-04 21:47
这周碰到的一个问题,在解决的过程中得到不少高手的热心帮助,把一些总结贴出来,欢迎大家指点。

写一个 ...
好吧,我挖个坟,看看楼主还常来cu不?
应用层读取这片vma的时候是根据其指定的nocache属性去读内存,而内核访问kmalloc的时候却是读内存(这里应该是笔误,原意是cache)。如何让内核也读内存呢,

楼主认为kernel层,读取内存时,读到的是cache中的数据(多次读取后,系统已cache了相关的数据),而内存中真正的数据被应用层更新掉了。
我的问题是:为什么通过copy_to_user这类函数进行内存数据的拷贝,内核层面读取kmalloc的内存数据时(应该也出现多次读取,cache住相关内存数据的情况),没有出现这种情况,copy_to_user中有相关刷cache的操作吗?
==============================================================
看了ls的帖子,是不是copy_to_user这类函数,会同时更新掉cache里的内容。内核读kmalloc的内存,直接读的更新后的内容。

论坛徽章:
0
46 [报告]
发表于 2013-04-06 13:48 |只看该作者
不需要吧,又不是mmap的内存

论坛徽章:
0
47 [报告]
发表于 2013-04-13 16:28 |只看该作者
在这里例子里,我们是通过内核和应用都nocache的方式来进行内存共享的。那么双方能不能通过cache的方式来访问呢?我们必须知道,有两种cache:物理cache和逻辑cache,对于armv6以下的arm芯片,采用的是逻辑cache的方式,即cache在mmu之前,而armv6及以上的cpu,cache在mmu之后,cpu送出的要访问的地址先通过mmu进行虚拟/物理的转换,再送到cache。这意味着什么呢?意味着对于我们的cpu(v5),当应用层用其地址空间的地址把共享区从内存加到cache后,内核同样访问这片区域的时候,也可以按照其kmalloc分配的地址将同一片内存中的数据加载到cache的另一行中,这就意味着一个内存块会有2个cache拷贝,也就是传说中的别名。简单地说,如果你用arm11,由于使用物理cache,所以不会有问题,而arm9的话,就很麻烦了。
----------------------
   从这段中学到了,以前只模糊知道arm的cache寻址是使用线性地址和物理地址一起匹配的,当时使用的armV7架构,没想到里面arm不同架构区分这么精细,多谢楼主指点!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP