内存的程序模型

瀏覽次數:119 次
跳到第一則未讀訊息

none_nobody

未讀,
2014年4月15日 凌晨1:09:112014/4/15
收件者:sh...@googlegroups.com
作为一个只会写 fprintf("Hello there!\n") 的代码狗,想起个疑问

各种其他的高级语言能显式的控制程序中数据所处的位置么?
我的位置是说在不在cpu cache   中,或者说如何提高程序中数据、对象被cpu cache命中。

很好奇 python  java  lua  lisp schema  erlang 等语种。

各路神仙都出来说说,你们那里的地方话中啥么情况。

Liu Cheng

未讀,
2014年4月15日 凌晨1:10:312014/4/15
收件者:sh...@googlegroups.com
好像汇编都控制不了在不在cpu cache中?
> --
> -- You received this message because you are subscribed to the Google Groups
> Shanghai Linux User Group group. To post to this group, send email to
> sh...@googlegroups.com. To unsubscribe from this group, send email to
> shlug+un...@googlegroups.com. For more options, visit this group at
> https://groups.google.com/d/forum/shlug?hl=zh-CN
> ---
> 您收到此邮件是因为您订阅了Google网上论坛中的“Shanghai Linux User Group”论坛。
> 要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到shlug+un...@googlegroups.com
> 要查看更多选项,请访问https://groups.google.com/d/optout

liyaoshi

未讀,
2014年4月15日 凌晨1:15:152014/4/15
收件者:sh...@googlegroups.com
这个问题我好像问过

当年去张江那家无线网卡芯片厂面试被鄙视了

问我怎么把代码段和数据段在cpu里分开

我擦,哈佛结构的cpu不分的唉,分毛,风诺依曼的才分



您收到此邮件是因为您订阅了 Google 网上论坛的“Shanghai Linux User Group”论坛。

Grissiom

未讀,
2014年4月15日 凌晨1:56:422014/4/15
收件者:sh...@googlegroups.com
2014-04-15 13:15 GMT+08:00 liyaoshi <liya...@gmail.com>:
这个问题我好像问过

当年去张江那家无线网卡芯片厂面试被鄙视了

问我怎么把代码段和数据段在cpu里分开


这事是链接器干的吧……
 
我擦,哈佛结构的cpu不分的唉,分毛,风诺依曼的才分


反了吧……



--
Cheers,
Grissiom

liyaoshi

未讀,
2014年4月15日 凌晨2:07:092014/4/15
收件者:sh...@googlegroups.com
擦,反了,丢人了

Yu Changyuan

未讀,
2014年4月15日 凌晨2:26:422014/4/15
收件者:shlug

C里面写linker script吧, 只要可以寻址,应该可控。 还有就是自己写程序的载入器,想载到哪就载到哪,不过这个有os的时候不太好搞。

除了asm, 其他我知道的语言都不可控。

Grissiom

未讀,
2014年4月15日 凌晨2:32:262014/4/15
收件者:sh...@googlegroups.com
2014-04-15 13:09 GMT+08:00 none_nobody <lyx...@gmail.com>:
作为一个只会写 fprintf("Hello there!\n") 的代码狗,想起个疑问

各种其他的高级语言能显式的控制程序中数据所处的位置么?
我的位置是说在不在cpu cache   中,或者说如何提高程序中数据、对象被cpu cache命中。


只要是代码执行了,它就在 ICache 里;只要是数据被访问了,他就在 DCache 里,除非 MMU 指定那块内存不 cache。这个是任何语言都控制不了的……

提高命中率是另一回事了,是门技术……
 
很好奇 python  java  lua  lisp schema  erlang 等语种。

各路神仙都出来说说,你们那里的地方话中啥么情况。

--
-- You received this message because you are subscribed to the Google Groups Shanghai Linux User Group group. To post to this group, send email to sh...@googlegroups.com. To unsubscribe from this group, send email to shlug+un...@googlegroups.com. For more options, visit this group at https://groups.google.com/d/forum/shlug?hl=zh-CN
---
您收到此邮件是因为您订阅了Google网上论坛中的“Shanghai Linux User Group”论坛。
要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到shlug+un...@googlegroups.com
要查看更多选项,请访问https://groups.google.com/d/optout



--
Cheers,
Grissiom

bladesilent

未讀,
2014年4月15日 凌晨4:53:142014/4/15
收件者:sh...@googlegroups.com
有个古老的关于java的故事,印象中这个改进使用的手段就是提高了命中率
https://blogs.oracle.com/dagastine/entry/apache_harmony_thanks_for_the

馒头簸箕

未讀,
2014年4月15日 清晨6:02:222014/4/15
收件者:sh...@googlegroups.com
哥是写链接脚本达人

发自我的 iPad

none_nobody

未讀,
2014年4月15日 清晨6:13:402014/4/15
收件者:sh...@googlegroups.com
就是想知道那些方言怎么控制连续分配对象的?确保这些对象在内存中是连续地摆放在一起的?


 

提高命中率是另一回事了,是门技术……
 

Yu Changyuan

未讀,
2014年4月15日 清晨7:42:582014/4/15
收件者:shlug

语言本身不会干这种事情吧,感觉一般都是编译器的提供扩展或其他手段实现的。

On Apr 15, 2014 6:13 PM, "none_nobody" <lyx...@gmail.com> wrote:
就是想知道那些方言怎么控制连续分配对象的?确保这些对象在内存中是连续地摆放在一起的?


 

提高命中率是另一回事了,是门技术……
 

Chaos Eternal

未讀,
2014年4月15日 上午11:14:532014/4/15
收件者:sh...@googlegroups.com
http://www.memorymanagement.org/

2014-04-15 18:13 GMT+08:00 none_nobody <lyx...@gmail.com>:
> 就是想知道那些方言怎么控制连续分配对象的?确保这些对象在内存中是连续地摆放在一起的?
>
>
>
>>
>>
>> 提高命中率是另一回事了,是门技术……

liyaoshi

未讀,
2014年4月15日 晚上9:05:572014/4/15
收件者:sh...@googlegroups.com
任何高级语言,最后多逃不掉glibc.so (Windows 换个马甲名)
我理解当中,所有的高级语言只是对底下函数库的马甲操作
以前看到过一个论点,说,所有的操作,基本上基于read/write/ioctl就行了
可能有点偏颇,大概就那个意思,高级语言的实现多少多是基于低级语言(其实就tm C/asm)
malloc()怎么做到,上面才能怎么做到

malloc 怎么map page,上面才能怎么连续

个人见解,如有错误,敬请指正,我还是很好学的好海子


您收到此邮件是因为您订阅了 Google 网上论坛的“Shanghai Linux User Group”论坛。

liyaoshi

未讀,
2014年4月15日 晚上9:52:312014/4/15
收件者:sh...@googlegroups.com
http://lists.linaro.org/pipermail/linaro-dev/2011-May/004220.html

对cache line 的对齐可以有效提高速度

Shell Xu

未讀,
2014年4月15日 晚上10:06:512014/4/15
收件者:shlug
golang好像逃掉了,导致proxychain的钩子根本无法工作。
其实还有open和close。


在 2014年4月16日 上午9:05,liyaoshi <liya...@gmail.com>写道:



--
彼節者有間,而刀刃者無厚;以無厚入有間,恢恢乎其於游刃必有餘地矣。
blog: http://shell909090.org/blog/

Liu Cheng

未讀,
2014年4月15日 晚上10:27:232014/4/15
收件者:sh...@googlegroups.com
大部分语言都不怎么依赖malloc来分配空间的,目前可知的大部分gc的语言的分配,除了lua外基本上都是自行实现的分配和回收,最多用malloc分配一段连续的大块内存.....

liyaoshi

未讀,
2014年4月15日 晚上11:15:262014/4/15
收件者:sh...@googlegroups.com
窃以为,大部分语言为了自己实现buddy system,所以不用malloc (我很好奇,现在能用mmu的系统,哪个会不带buddy 啊)
但是请看Python/dtoa.c

 326
 327    XXX: it would be easy to bypass this memory-management system and
 328    translate each call to Balloc into a call to PyMem_Malloc, and each
 329    Bfree to PyMem_Free.  Investigate whether this has any significant
 330    performance on impact. */

用私有内存池的好处是,他们在所有的平台出现的效果是一样的

不过,这个内存池本身还是通过malloc出来的

看 include/pymem.h

 68 /* PyMem_MALLOC(0) means malloc(1). Some systems would return NULL
 69    for malloc(0), which would be treated as an error. Some platforms
 70    would return a pointer with no memory behind it, which would break
 71    pymalloc. To solve these problems, allocate an extra byte. */
 72 /* Returns NULL to indicate error if a negative size or size larger than
 73    Py_ssize_t can represent is supplied.  Helps prevents security holes. */
 74 #define PyMem_MALLOC(n)         ((size_t)(n) > (size_t)PY_SSIZE_T_MAX ? NULL \
 75                                 : malloc((n) ? (n) : 1))



none_nobody

未讀,
2014年4月16日 凌晨2:26:222014/4/16
收件者:sh...@googlegroups.com
前面所列出的那些高级方言,都是有私有内存池的?

熟悉的出来说说他们的内存池的测试情况。

liyaoshi

未讀,
2014年4月16日 凌晨3:22:362014/4/16
收件者:sh...@googlegroups.com
ruby 1.9

3124 VP_EXPORT void *
3125 VpMemAlloc(size_t mb)
3126 {
3127     void *p = xmalloc(mb);
3128     if (!p) {
3129         VpException(VP_EXCEPTION_MEMORY, "failed to allocate memory", 1);
3130     }
3131     memset(p, 0, mb);
3132 #ifdef BIGDECIMAL_DEBUG
3133     gnAlloc++; /* Count allocation call */
3134 #endif /* BIGDECIMAL_DEBUG */
3135     return p;
3136 }


我不知道是不是这个


Grissiom

未讀,
2014年4月16日 凌晨3:30:012014/4/16
收件者:sh...@googlegroups.com
malloc  只是一方面,还有很多是 cache 友好的算法和数据结构。比如说 http://en.wikipedia.org/wiki/Unrolled_linked_list
--
Cheers,
Grissiom

单栋

未讀,
2014年4月16日 上午8:57:592014/4/16
收件者:sh...@googlegroups.com
不是哈佛结构才是分的么,代码和数据放在两个内存中?冯诺依曼是不分的……

单栋

未讀,
2014年4月16日 上午9:00:132014/4/16
收件者:sh...@googlegroups.com
X86 CPU中数据段和代码段的cache不是同一块么?数据和代码分别对待?

单栋

未讀,
2014年4月16日 上午9:02:302014/4/16
收件者:sh...@googlegroups.com
私有内存池也会分配大对象么?我还以为大对象都是直接找系统要的呢……那如果自己分配大对象的话,不是要开始就申请一大块内存了么?

Chaos Eternal

未讀,
2014年4月16日 上午11:23:542014/4/16
收件者:sh...@googlegroups.com
这个事情吧,malloc只是解决如何向kernel申请内存的问题。从app的角度来说,可以用malloc也可以不用,比如 void*
mp[10*1024*1024*1024]也可以。
至于libc, 也只是posix这一层对内核所提供的服务的一个封装。
如果内核不是个linux, 而是个mach之类的微内核,那封装的服务和提供的借口就完全不一样了。

问题在于,你malloc了一段内存,你打算什么时候释放它:你如何知道对一段内存的使用已经结束?对于进程的私有内存来说,进程的结束是一个确定的时间点。但是如果进程本身不结束呢?然后,如果是共享内存呢?即使你不用malloc,
你还是会遇到上面的问题。
这就是memorymanagement的问题。

GC嘛,大体上就是提供一些手段,帮助程序猿确定某段内存在某个时刻可以释放。GC的活也可以很高大上,比如各种GC算法;也可以很脏很累,比如提供各种实现、各种workaround、各种钩子。有的时候你就会觉得posix的模型简直脏到令人发指。

胡瀚森

未讀,
2014年4月17日 晚上8:39:512014/4/17
收件者:sh...@googlegroups.com
链接器负责把数据段和代码段在内存中分开。
至于在CPU中分开。。。其实CPU没有代码段和数据段的概念,非要说的话就是NX bit呗。
在内核态做物理地址映射的时候可以指定是不是会进cache,那些不进cache的页就永远不会进CPU cache,但是正常进cache的页,就没有办法控制CPU的换页行为,但是可以大致按照LRU算法来推断CPU的换页行为,并借此来优化程序的数据访问顺序。对于SMP,则还要考虑cache sync的问题。
对于性能要求高的程序,cache命中率的提高对性能提升非常可观。而越是高级的语言,对于虚拟内存访问的控制能力就越差,就越难对cache hit做优化。

liyaoshi

未讀,
2014年4月17日 晚上8:43:362014/4/17
收件者:sh...@googlegroups.com
"那些不进cache的页就永远不会进CPU cache"

求代码出处


--

胡瀚森

未讀,
2014年4月17日 晚上8:59:522014/4/17
收件者:sh...@googlegroups.com
可以参考一下ioremap_nocache

胡瀚森

未讀,
2014年4月17日 晚上9:04:182014/4/17
收件者:sh...@googlegroups.com
就是说如果CPU的PTE结构支持cache_disabled,这个就可以做的,比如x86


2014-04-18 8:43 GMT+08:00 liyaoshi <liya...@gmail.com>:

Grissiom

未讀,
2014年4月17日 晚上9:07:382014/4/17
收件者:sh...@googlegroups.com
2014-04-18 8:43 GMT+08:00 liyaoshi <liya...@gmail.com>:
"那些不进cache的页就永远不会进CPU cache"

求代码出处


如果页表里配置了不 cache,那么就不会进 cache。当然,如果更改页表配置除外,所以这里说“永远”或许绝对了些……



--
Cheers,
Grissiom

liyaoshi

未讀,
2014年4月17日 晚上9:29:462014/4/17
收件者:sh...@googlegroups.com
我理解当中,这个是说因为io是没有cache的,所以才用ioremap_nocache 


liyaoshi

未讀,
2014年4月17日 晚上9:32:132014/4/17
收件者:sh...@googlegroups.com
如果页表里配置了不 cache,那么就不会进 cache

再求出处,

我理解当中,进不进cache,不是页表能够配置的,只是如果不cache 需要每次访问的时候,做cache回写,保证一致性

胡瀚森

未讀,
2014年4月17日 晚上9:45:272014/4/17
收件者:sh...@googlegroups.com

可以在e820表里把一个range的物理内存变成reserved,然后再通过这种方式map到虚拟地址空间,这个是不限于一定是对IO设备的映射的

Grissiom

未讀,
2014年4月17日 晚上9:45:222014/4/17
收件者:sh...@googlegroups.com
2014-04-18 9:32 GMT+08:00 liyaoshi <liya...@gmail.com>:
如果页表里配置了不 cache,那么就不会进 cache

再求出处,

我理解当中,进不进cache,不是页表能够配置的,只是如果不cache 需要每次访问的时候,做cache回写,保证一致性


x86 的不懂,ARM 看 ARM ARM B3.8。

如果需要,也可以把 io memory 配置成 cacheable 而把一些 RAM 区域配置成 non-cacheable 的。当然,系统有可能崩溃。人们总是能搬石头砸自己的脚,不是么?



--
Cheers,
Grissiom

胡瀚森

未讀,
2014年4月17日 晚上9:47:002014/4/17
收件者:sh...@googlegroups.com

额。。。纠正得对。。。如果一定要加上一个期限的话,我希望是到cache_disabled位被清除为止

none_nobody

未讀,
2014年4月17日 晚上10:05:512014/4/17
收件者:sh...@googlegroups.com
歪楼了。

我想知道的不是CPU体系结构里面发生的事,而是各种方言,贴近GC那块的事。

都是自己管理一个内存池么?把各种对象放在一起提高访问效率?

On Friday, April 18, 2014 9:47:00 AM UTC+8, SoftRank.net wrote:

额。。。纠正得对。。。如果一定要加上一个期限的话,我希望是到cache_disabled位被清除为止


胡瀚森

未讀,
2014年4月17日 晚上10:22:582014/4/17
收件者:sh...@googlegroups.com

哦,这个我看到上面已经有很多讨论了。关于内存池和buddy。

liyaoshi

未讀,
2014年4月17日 晚上10:42:092014/4/17
收件者:sh...@googlegroups.com
唉,这里成EMC内网聊天室了

none_nobody

未讀,
2014年4月17日 晚上10:53:492014/4/17
收件者:sh...@googlegroups.com
钥匙你造么?神经团交互的主要模式之一就是声音。聊天就是让各个神经团进行合作的方法。文字也是会转换成声音。

总之,人生的意义就是聊天,不然难道做一日囚啊?

On Friday, April 18, 2014 10:42:09 AM UTC+8, liyaoshi wrote:
唉,这里成EMC内网聊天室了


liyaoshi

未讀,
2014年4月17日 晚上11:01:102014/4/17
收件者:sh...@googlegroups.com



1E3.gif

Shell Xu

未讀,
2014年4月17日 晚上11:16:082014/4/17
收件者:shlug
不用麻烦了不用麻烦了。来来来让我把你们俩的神经打个结。。。


在 2014年4月18日 上午10:53,none_nobody <lyx...@gmail.com>写道:

--
-- You received this message because you are subscribed to the Google Groups Shanghai Linux User Group group. To post to this group, send email to sh...@googlegroups.com. To unsubscribe from this group, send email to shlug+un...@googlegroups.com. For more options, visit this group at https://groups.google.com/d/forum/shlug?hl=zh-CN
---
您收到此邮件是因为您订阅了Google网上论坛中的“Shanghai Linux User Group”论坛。
要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到shlug+un...@googlegroups.com
要查看更多选项,请访问https://groups.google.com/d/optout



--

Chaos Eternal

未讀,
2014年4月18日 晚上8:59:552014/4/18
收件者:sh...@googlegroups.com
一句话,都有。

Chaos Eternal

未讀,
2014年4月18日 晚上9:01:112014/4/18
收件者:sh...@googlegroups.com
阻抗很高的。

Li Haifeng

未讀,
2014年4月25日 晚上10:55:362014/4/25
收件者:sh...@googlegroups.com
在 2014年4月18日 上午9:45,Grissiom <chaos....@gmail.com>写道:
2014-04-18 9:32 GMT+08:00 liyaoshi <liya...@gmail.com>:

如果页表里配置了不 cache,那么就不会进 cache

再求出处,

我理解当中,进不进cache,不是页表能够配置的,只是如果不cache 需要每次访问的时候,做cache回写,保证一致性


x86 的不懂,ARM 看 ARM ARM B3.8。

 
ARM的哪个文档?能否给个链接。

我的理解同liyaoshi。 硬件一定会保证在读写时候的cache一致性,但数据到底进不进cache,这个不好说。

Grissiom

未讀,
2014年4月26日 上午8:37:442014/4/26
收件者:sh...@googlegroups.com
2014-04-26 10:55 GMT+08:00 Li Haifeng <omy...@gmail.com>:
在 2014年4月18日 上午9:45,Grissiom <chaos....@gmail.com>写道:

2014-04-18 9:32 GMT+08:00 liyaoshi <liya...@gmail.com>:

如果页表里配置了不 cache,那么就不会进 cache

再求出处,

我理解当中,进不进cache,不是页表能够配置的,只是如果不cache 需要每次访问的时候,做cache回写,保证一致性


x86 的不懂,ARM 看 ARM ARM B3.8。

 
ARM的哪个文档?能否给个链接。


ARM ARM 的全称是 ARM Architecture Reference Manual



--
Cheers,
Grissiom

Li Haifeng

未讀,
2014年4月26日 晚上9:44:162014/4/26
收件者:sh...@googlegroups.com
在 2014年4月26日 下午8:37,Grissiom <chaos....@gmail.com>写道:
2014-04-26 10:55 GMT+08:00 Li Haifeng <omy...@gmail.com>:

在 2014年4月18日 上午9:45,Grissiom <chaos....@gmail.com>写道:

2014-04-18 9:32 GMT+08:00 liyaoshi <liya...@gmail.com>:

如果页表里配置了不 cache,那么就不会进 cache

再求出处,

我理解当中,进不进cache,不是页表能够配置的,只是如果不cache 需要每次访问的时候,做cache回写,保证一致性


x86 的不懂,ARM 看 ARM ARM B3.8。

 
ARM的哪个文档?能否给个链接。


ARM ARM 的全称是 ARM Architecture Reference Manual

ARM的ARM文档挺多的,V7-AR V7-M V6 ...
我在DDI 0100I 和 0406B中都没有找到,能说一下你看的具体是哪个版本吗?非常感谢。

liyaoshi

未讀,
2014年4月26日 晚上10:45:362014/4/26
收件者:sh...@googlegroups.com
我好像被曲解了
我的意思是,cache 不能保证一致性,进不进cache是LRU算法决定的
所以要在很多类似smp_spin_lock 这种函数里面对cache强制回写 mb()
类似的场景
1 smp
2 dma
3 iommu
4 dsp


Grissiom

未讀,
2014年4月27日 凌晨2:00:582014/4/27
收件者:sh...@googlegroups.com
2014-04-27 10:45 GMT+08:00 liyaoshi <liya...@gmail.com>:
我好像被曲解了
我的意思是,cache 不能保证一致性,进不进cache是LRU算法决定的

LRU 决定的是那个 cache 被换出,而不是进来



--
Cheers,
Grissiom

Grissiom

未讀,
2014年4月27日 凌晨2:01:472014/4/27
收件者:sh...@googlegroups.com
2014-04-27 9:44 GMT+08:00 Li Haifeng <omy...@gmail.com>:

在 2014年4月26日 下午8:37,Grissiom <chaos....@gmail.com>写道:

2014-04-26 10:55 GMT+08:00 Li Haifeng <omy...@gmail.com>:

在 2014年4月18日 上午9:45,Grissiom <chaos....@gmail.com>写道:

2014-04-18 9:32 GMT+08:00 liyaoshi <liya...@gmail.com>:

如果页表里配置了不 cache,那么就不会进 cache

再求出处,

我理解当中,进不进cache,不是页表能够配置的,只是如果不cache 需要每次访问的时候,做cache回写,保证一致性


x86 的不懂,ARM 看 ARM ARM B3.8。

 
ARM的哪个文档?能否给个链接。


ARM ARM 的全称是 ARM Architecture Reference Manual

ARM的ARM文档挺多的,V7-AR V7-M V6 ...
我在DDI 0100I 和 0406B中都没有找到,能说一下你看的具体是哪个版本吗?非常感谢。

0406B 太老了,看 0406C



--
Cheers,
Grissiom

xilz...@gmail.com

未讀,
2014年4月30日 上午9:59:392014/4/30
收件者:sh...@googlegroups.com
高速缓存不是说是对开发人员透明吗?这没法控制的。

在 2014年4月15日星期二UTC+8下午1时09分11秒,none_nobody写道:
作为一个只会写 fprintf("Hello there!\n") 的代码狗,想起个疑问

各种其他的高级语言能显式的控制程序中数据所处的位置么?
我的位置是说在不在cpu cache   中,或者说如何提高程序中数据、对象被cpu cache命中。

很好奇 python  java  lua  lisp schema  erlang 等语种。

各路神仙都出来说说,你们那里的地方话中啥么情况。

none_nobody

未讀,
2014年5月2日 上午9:42:462014/5/2
收件者:sh...@googlegroups.com
A:
blockMemoryPtr = (double **)malloc(numObjects * sizeof(double *));
 
blockMemoryPtr[0] = (double *)malloc(numObjects * SizeOfObject * sizeof(double));

   for (i = 1; i < numObjects; i++)
        blockMemoryPtr[i] = blockMemoryPtr[i - 1] + SizeOfObject;


B:
blockMemoryPtr = (double **)malloc(numObjects * sizeof(double *));
 
for (i = 0; i < numObjects; i++)
    blockMemoryPtr[i] = (double *)malloc(SizeOfObject * sizeof(double));


Yuankuns Shi

未讀,
2014年5月2日 晚上7:16:542014/5/2
收件者:sh...@googlegroups.com
如果只是为了增加cache命中率,这是可以的,有很多技巧,但高级语言不清楚

none_nobody

未讀,
2014年5月3日 上午11:06:412014/5/3
收件者:sh...@googlegroups.com
刚测试了一把,
AMD 605e  cache size      : 512 KB   800MHz
AMD FX4100  4核  2048KB     1400Mhz

速度差别很小。

Cache 全命中,和大多数不命中,至少差10倍运算时间。




 
On Saturday, May 3, 2014 7:16:54 AM UTC+8, Yuankuns Shi wrote:
如果只是为了增加cache命中率,这是可以的,有很多技巧,但高级语言不清楚


shi yuankun

未讀,
2014年5月3日 晚上8:27:082014/5/3
收件者:sh...@googlegroups.com
你不应该比l3 cache,应该比l1 cache,cpu直接读的是l1 cache,l1是否命中对速度影响最大,典型不命中就是矩阵转置,拿一个1024*1024的矩阵做一下转置试试看。再拿一个1025*1025的矩阵 做一下转置试试看。
--
-- You received this message because you are subscribed to the Google Groups Shanghai Linux User Group group. To post to this group, send email to sh...@googlegroups.com. To unsubscribe from this group, send email to shlug+un...@googlegroups.com. For more options, visit this group at https://groups.google.com/d/forum/shlug?hl=zh-CN
---
您收到此邮件是因为您订阅了Google网上论坛“Shanghai Linux User Group”中的主题。
要退订此主题,请访问https://groups.google.com/d/topic/shlug/GsMSZH_vV-M/unsubscribe
要退订此论坛及其所有主题,请发送电子邮件到shlug+un...@googlegroups.com
要查看更多选项,请访问https://groups.google.com/d/optout

none_nobody

未讀,
2014年5月3日 晚上10:20:552014/5/3
收件者:sh...@googlegroups.com
有道理啊。代码也会占cache 的么?还是代码一块,数据一块cache , 准备测试远程函数反复调用。

Liu Cheng

未讀,
2014年5月3日 晚上10:24:582014/5/3
收件者:sh...@googlegroups.com
代码和数据的cache是分开的
> --
> -- You received this message because you are subscribed to the Google Groups
> Shanghai Linux User Group group. To post to this group, send email to
> sh...@googlegroups.com. To unsubscribe from this group, send email to
> shlug+un...@googlegroups.com. For more options, visit this group at
> https://groups.google.com/d/forum/shlug?hl=zh-CN
> ---

Xidorn Quan

未讀,
2014年5月3日 晚上11:06:032014/5/3
收件者:sh...@googlegroups.com
我印象中在 L1 里是分开的,代码一个数据一个,L2 和 L3 里代码和数据都是共享的
> 您收到此邮件是因为您订阅了 Google 网上论坛的“Shanghai Linux User Group”论坛。

none_nobody

未讀,
2014年5月4日 凌晨12:11:092014/5/4
收件者:sh...@googlegroups.com
确定了:传函数指针执行会变慢
回覆所有人
回覆作者
轉寄
0 則新訊息