免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3895 | 回复: 10
打印 上一主题 下一主题

CACHE颠簸的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-04-01 16:49 |只看该作者 |倒序浏览
#include <stdlib.h>
#define TIMES 50
char buf1[128][40960];
char buf2[128][40960];
int main(int argc,char *argv[])
{
    int i,j;
    int times = 0;
    int fine = 1;
    if (argc == 2)
        fine = atoi(argv[1]);
    if(fine) {
        while(times++ < TIMES)
            for(i=0;i<sizeof(buf1)/sizeof(buf1[0]);++i)
                for(j=0;j<sizeof(buf1[0]);++j) {
                    buf1[j] = buf2[j];
                }
    } else {
        while(times++ < TIMES)
            for(j=0;j<sizeof(buf1[0]);++j)
                for(i=0;i<sizeof(buf1)/sizeof(buf1[0]);++i) {
                    buf1[j] = buf2[j];
                }
    }
    return 0;
}
在FLW2的BOLG上看的  有点不太理解  
为什么else后面那段会颠簸呢?假设cache_line_size为128字节
cache是缓存从内存中读取的数据的  那么指令预取放在说明中?
sizeof(buf)访问内存吗?呵呵 因为电脑没在身边  不好GCC -S看
希望指教

论坛徽章:
0
2 [报告]
发表于 2008-04-01 20:07 |只看该作者
自己顶一下

论坛徽章:
0
3 [报告]
发表于 2008-04-01 20:26 |只看该作者
LZ看一下《深入理解计算机系统》第6章。
这种问题在论坛上要讲清楚很难的。
另外你的程序抄错了。

论坛徽章:
0
4 [报告]
发表于 2008-04-01 20:28 |只看该作者
由访问地址不连续引起

论坛徽章:
0
5 [报告]
发表于 2008-04-01 20:43 |只看该作者

回复 #3 zx_wing 的帖子

谢谢,呵呵 书不在身边  明天仔细看看
大侠可以和你交个朋友吗?呵呵我刚毕业。
546891791

论坛徽章:
0
6 [报告]
发表于 2008-04-01 20:51 |只看该作者
现在cpu一般使用2-way或者4-way associated的cache,这种现象应该不算太明显。

论坛徽章:
0
7 [报告]
发表于 2008-04-01 20:56 |只看该作者

回复 #6 lllaaa 的帖子

你测试一下  呵呵  时间也相差很多的

论坛徽章:
0
8 [报告]
发表于 2008-04-02 14:09 |只看该作者
乖乖,颠簸这个词谁想起来的

论坛徽章:
0
9 [报告]
发表于 2008-04-02 21:09 |只看该作者

回复 #8 redspider 的帖子

哈哈  这是一个充满智慧的词啊   

论坛徽章:
0
10 [报告]
发表于 2008-04-03 08:50 |只看该作者
看到有些地方叫 cache乒乓现象。反正意思都一样。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP