【发布时间】:2010-06-14 16:33:01
【问题描述】:
我们喜欢认为内存访问是快速且持续的,但在现代架构/操作系统上,这不一定是正确的。
考虑以下 C 代码:
int i = 34;
int *p = &i;
// do something that may or may not involve i and p
{...}
// 3 days later:
*p = 643;
如果在 CPU 指令中最后一次分配的估计成本是多少
-
i在一级缓存中, -
i在二级缓存中, -
i在三级缓存中, -
i在 RAM 中, -
i被调出到 SSD 磁盘, -
i被调出到传统磁盘?
i 还能在哪里?
当然数字不是绝对的,但我只对数量级感兴趣。我试着在网上搜索,但这次谷歌并没有祝福我。
【问题讨论】:
-
呃,如果它被调出,访问成本是不确定的......
-
老兄,如果你的程序需要三天才能运行,那么你的问题比担心要花多长时间才能进入 p:) -
Where else can i be?在网络上的某个地方?半个地球?
标签: language-agnostic memory hardware