免费注册 查看新帖 |

Chinaunix

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

请教关于CPU直接读写内存的问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2008-07-16 23:04 |只看该作者

回复 #10 zx_wing 的帖子

能否再详细说一下你的看法?

论坛徽章:
0
12 [报告]
发表于 2008-07-16 23:12 |只看该作者
原帖由 scutan 于 2008-7-16 19:34 发表


嗯,是的,我在1楼给出的函数汇编之后就是您说的这些指令。
那您对于这样使用之后的性能有没有研究过呢?
谢谢


使用之后性能是有一些变化,但是基本不变,变好还是变差就要看具体的情况了, 有很多情况下没有变化,还不如不用.
而且同样的任务算法单CPU和多CPU也有一些区别.

你自己写一些比较典型的程序测试一下就感受很具体了.
1. 简单计算,如y=x1+x2;
2. 需要读的计算,如
   y=x1+x2;
   z=y*x1;
   z=z+x2;
2. ...

论坛徽章:
0
13 [报告]
发表于 2008-07-16 23:23 |只看该作者
原帖由 system888net 于 2008-7-16 23:04 发表
能否再详细说一下你的看法?

简单的说就是SSE2指令还是使用了cache,只是这块cache不是我们通常说的L1、L2、L3 cache而已。

论坛徽章:
0
14 [报告]
发表于 2008-07-16 23:42 |只看该作者
原帖由 zx_wing 于 2008-7-16 23:23 发表

简单的说就是SSE2指令还是使用了cache,只是这块cache不是我们通常说的L1、L2、L3 cache而已。


说得不错,赞成

除了L1,L2,L3 外,现在的 processor 还多了个 write buffer, 再来缓冲了一下
write combining 就是利用了 write buffer

我看除了浮点数指令真正实现 registers 写 memory 外, 如:fst, fstp 等指令,  其它貌似做不到

论坛徽章:
0
15 [报告]
发表于 2008-07-16 23:45 |只看该作者
原帖由 zx_wing 于 2008-7-16 23:23 发表

简单的说就是SSE2指令还是使用了cache,只是这块cache不是我们通常说的L1、L2、L3 cache而已。


我理解LZ所说的绕开的cache应该是指L1、L2、L3 cache.
与你的观点是相符的.

你的观点也是一个有益的补充,不同角度看问题.

论坛徽章:
0
16 [报告]
发表于 2008-07-16 23:47 |只看该作者
谢谢楼上各位,明白了。

论坛徽章:
0
17 [报告]
发表于 2008-07-17 00:05 |只看该作者
原帖由 scutan 于 2008-7-16 14:46 发表


根据文档我是这样理解的,如果有两组数据,A[N], B[N],A是经常被用到,而B中的元素则是偶尔被用到,即使用到也只用一次。
那么如果在对A中数据进行操作的时候,需要B[j],则将B[j]读取进来,但是这样的话 ...

顺便说一下scutan同学这里的正题。
这是不可能的,因为读必须经过cache,也就是说没有直接从内存读到寄存器的说法,都是先读到cache,再到寄存器。
是否绕开cache,是针对写的情况。还没有听说过绕开CPU cache导致性能提高的情况,intel手册明确强调,绕开cache将导致显著的性能下降。

论坛徽章:
0
18 [报告]
发表于 2008-07-17 00:08 |只看该作者
原帖由 zx_wing 于 2008-7-17 00:05 发表

顺便说一下scutan同学这里的正题。
这是不可能的,因为读必须经过cache,也就是说没有直接从内存读到寄存器的说法,都是先读到cache,再到寄存器。
是否绕开cache,是针对写的情况。还没有听说过绕开CPU ca ...


正确,绕开cache是针对写的情况而言的.
但不排除CPU的一些机制在未来的发展中有其它的变化.
毕竟这个主动权在AMD,INTEL等手中.

[ 本帖最后由 system888net 于 2008-7-17 00:11 编辑 ]

论坛徽章:
0
19 [报告]
发表于 2008-07-17 00:13 |只看该作者
绕开 cache 去写,不但效率得不到保证,还会出现错误
写操作一般都要经过 cache  controler 的过滤,,
绕开cache,等于,下次再读取memory的时候得不到保证,cache  controler可能不认为cache里面的是脏数据

论坛徽章:
0
20 [报告]
发表于 2008-07-17 00:17 |只看该作者
原帖由 mik 于 2008-7-17 00:13 发表
绕开 cache 去写,不但效率得不到保证,还会出现错误
写操作一般都要经过 cache  controler 的过滤,,
绕开cache,等于,下次再读取memory的时候得不到保证,cache  controler可能不认为cache里面的是脏数据


嗯,想了一下,确实是这个道理。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP