免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
0
31 [报告]
发表于 2010-11-06 12:17 |只看该作者
回复  duanius


    这个挺麻烦.
你只要在内核读完再在内核全部写不正确数据,然后用户再写.循环执行
...
smalloc 发表于 2010-11-06 11:51



28楼回复错了 重新编辑下
你这个也许行 但两边都写 还带刷缓存 太复杂太乱了 我看的晕晕乎乎的  
其实我这个代码实现很简单  而且逻辑也很清晰   内核只是读,不写 只有app写  居然都能把内存改掉  这还不够说明问题么?  别两边都写 ,还带flush,逻辑太复杂了。

这个问题到这应该就可以结束了,都通通透透的了

论坛徽章:
7
丑牛
日期:2013-10-18 14:43:21技术图书徽章
日期:2013-11-03 09:58:03辰龙
日期:2014-01-15 22:57:50午马
日期:2014-09-15 07:04:39丑牛
日期:2014-10-16 14:25:222015年亚洲杯之伊朗
日期:2015-03-16 10:24:352015亚冠之城南
日期:2015-05-31 09:52:32
32 [报告]
发表于 2010-11-06 13:20 |只看该作者
本帖最后由 smalloc 于 2010-11-06 13:25 编辑

回复 28# duanius


    app写前flush而不是写后flush
这个有问题,这要看flush到底做了什么.
如果是写回, 而cache内容依然有效. 这样可以验证不同步性
如果是写回, 且cache内容失效. 则无法验证不同步性.因为同步或者不同步, 读总是对的.


我上面的不复杂.你仅仅需要在读后直接用一个memset之类函数的就可以了


我认为没结束,如果是同步的.则刚开始解释的flush_all后成功是缓存影响的解释就不成立.而应该有别的解释

论坛徽章:
7
丑牛
日期:2013-10-18 14:43:21技术图书徽章
日期:2013-11-03 09:58:03辰龙
日期:2014-01-15 22:57:50午马
日期:2014-09-15 07:04:39丑牛
日期:2014-10-16 14:25:222015年亚洲杯之伊朗
日期:2015-03-16 10:24:352015亚冠之城南
日期:2015-05-31 09:52:32
33 [报告]
发表于 2010-11-06 13:47 |只看该作者
回复 31# smalloc


    为什么我这么在意这个.因为我认为这个不一致性违背了cache对处理器端隐藏的初衷.
而你前面的: x86随便你整 不管有没有cache都不用care(如果没记错的话) 人家拍胸脯担保了

这个care指的什么?如果不是我们上面待验证的不一致性,就应该是指
"其总线监听技术使当某片被cache的内存被其他请求操作时"

也许这2句是同一个意思.

如果ARM被验证是一致的.那么大多数时候我们就不必在不必要的地方care了

并且可能对于一个新的解释中提到的地方要care.

论坛徽章:
0
34 [报告]
发表于 2010-11-06 14:57 |只看该作者
回复 32# smalloc


    说x86不存在cache一致性有点过了.只限于通过pci bus访问memory时才会监听哈.典型的反例就是显卡访问显存和cpu访问显存,因为显卡访问显存不通过pci的.

论坛徽章:
7
丑牛
日期:2013-10-18 14:43:21技术图书徽章
日期:2013-11-03 09:58:03辰龙
日期:2014-01-15 22:57:50午马
日期:2014-09-15 07:04:39丑牛
日期:2014-10-16 14:25:222015年亚洲杯之伊朗
日期:2015-03-16 10:24:352015亚冠之城南
日期:2015-05-31 09:52:32
35 [报告]
发表于 2010-11-06 19:51 |只看该作者
回复 32# smalloc


    x86只是要求软件不能这样做,并没有说到实现效果.看来只能暂时相信不同步了.
3A 10.11.6

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
36 [报告]
发表于 2011-02-11 16:28 |只看该作者
多谢 smalloc 兄的提醒和建议,本帖加精。
smalloc 兄的评价如下:
我觉得这个帖子很重要 不仅说明了虚实映射类型 还说明了多映射带来的CACHE问题 有很多隐含问题可能都来源于此

论坛徽章:
0
37 [报告]
发表于 2011-04-23 00:36 |只看该作者
本帖最后由 zhanglong71 于 2011-04-23 00:45 编辑
“意味着对于我们的cpu(v5),当应用层用其地址空间的地址把共享区从内存加到cache后,内核同样访问这片区域的时候,也可以按照其kmalloc分配的地址将同一片内存中的数据加载到cache的另一行中,这就意味着一个内存块会有2个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
38 [报告]
发表于 2013-03-26 07:16 来自手机 |只看该作者
本帖最后由 chishanmingshen 于 2013-03-26 09:59 编辑

回复 6# smalloc

这个地方写错了吧,“却是读cache”吧?

这里怎么理解啊,请指点,谢谢。

另外,怎么最后又绕到了多映射的cache了?是说app和内核both cache的情况?

1楼提到的错误产生的原因:

”所以有时候,某些加载共享内存的cache块没有被替换,而相应的内存块又被内核加载到cache形成别名,错误就自然产生了。“

这里为何为何有多个映射的cache?一个是内核的,一个是app的?

有点晕。。。

论坛徽章:
0
39 [报告]
发表于 2013-03-27 16:30 |只看该作者
回复 1# duanius

这个是典型的dcache aliasing问题。

考虑一个vipt的dcache, NumSets=256, Associativity=4, LineSize=32B,这样每个way的大小是8KB,总大小是32KB。
假设现在kmalloc关联到的一个page,并且mmap映射到了用户空间,就是说两段地址x和y都映射到了这个page。那么x和y关联到的numset号可能相同也可能不同,
相同的话没有关系,如果不同的话就麻烦了,假设x关联到numset 0,但是y关联到numset 0 + 128(偏移4KB)。这样,访问x和y的时候都会创建一个cache line,
但是互相不知道这种关系,这个问题是一般是留给软件来处理的。
很明显的如果way<=4KB则不会出现alias问题。

参考:http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=1972593

不过在armv7中,dcache默认是vipt noaliasing的,虽然它默认way=8KB,硬件应该自己处理好了。
参考:http://bbs.chinaunix.net/thread-4065587-1-1.html

不过你当时用的arm应该存在dcache alasing的问题。

内核中通过flush_dcache_page处理alias问题的。
典型的场景,写文件,写page,调用flush_dcache_page,发现page被mmap用户映射过了,然后处理alias。
参考:http://bbs.chinaunix.net/thread-4063721-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
40 [报告]
发表于 2013-03-27 20:39 |只看该作者
本帖最后由 chishanmingshen 于 2013-03-27 21:04 编辑

回复 39# blake326


有道理,向你学习!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP