system888net 发表于 2008-07-16 23:04

回复 #10 zx_wing 的帖子

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

system888net 发表于 2008-07-16 23:12

原帖由 scutan 于 2008-7-16 19:34 发表 http://linux.chinaunix.net/bbs/images/common/back.gif


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

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

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

zx_wing 发表于 2008-07-16 23:23

原帖由 system888net 于 2008-7-16 23:04 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
能否再详细说一下你的看法?
简单的说就是SSE2指令还是使用了cache,只是这块cache不是我们通常说的L1、L2、L3 cache而已。

mik 发表于 2008-07-16 23:42

原帖由 zx_wing 于 2008-7-16 23:23 发表 http://linux.chinaunix.net/bbs/images/common/back.gif

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

说得不错,赞成

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

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

system888net 发表于 2008-07-16 23:45

原帖由 zx_wing 于 2008-7-16 23:23 发表 http://linux.chinaunix.net/bbs/images/common/back.gif

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

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

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

scutan 发表于 2008-07-16 23:47

谢谢楼上各位,明白了。

zx_wing 发表于 2008-07-17 00:05

原帖由 scutan 于 2008-7-16 14:46 发表 http://linux.chinaunix.net/bbs/images/common/back.gif


根据文档我是这样理解的,如果有两组数据,A, B,A是经常被用到,而B中的元素则是偶尔被用到,即使用到也只用一次。
那么如果在对A中数据进行操作的时候,需要B,则将B读取进来,但是这样的话 ...
顺便说一下scutan同学这里的正题。
这是不可能的,因为读必须经过cache,也就是说没有直接从内存读到寄存器的说法,都是先读到cache,再到寄存器。
是否绕开cache,是针对写的情况。还没有听说过绕开CPU cache导致性能提高的情况,intel手册明确强调,绕开cache将导致显著的性能下降。

system888net 发表于 2008-07-17 00:08

原帖由 zx_wing 于 2008-7-17 00:05 发表 http://linux.chinaunix.net/bbs/images/common/back.gif

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

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

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

mik 发表于 2008-07-17 00:13

绕开 cache 去写,不但效率得不到保证,还会出现错误
写操作一般都要经过 cachecontroler 的过滤,,
绕开cache,等于,下次再读取memory的时候得不到保证,cachecontroler可能不认为cache里面的是脏数据

scutan 发表于 2008-07-17 00:17

原帖由 mik 于 2008-7-17 00:13 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
绕开 cache 去写,不但效率得不到保证,还会出现错误
写操作一般都要经过 cachecontroler 的过滤,,
绕开cache,等于,下次再读取memory的时候得不到保证,cachecontroler可能不认为cache里面的是脏数据

嗯,想了一下,确实是这个道理。
页: 1 [2] 3 4 5
查看完整版本: 请教关于CPU直接读写内存的问题