免费注册 查看新帖 |

Chinaunix

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

cache问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-05 17:45 |只看该作者 |倒序浏览
各位大侠!小弟现在说在的项目,要求通过将数据 load到cache中提升运算速度,求助了!
需求举例:所用cpu为powerpc8641D(L1为32K,L2为1M),做1024点的FFT,每次的1024点数据量为4K,
               要求并行计算中每次运算前这4K数据都在cache中了.请各位提供思路了!
当然,不针对具体情况了,欢迎类似经验,呵呵。。。。。。新注册,没什么积分啊,不好意思!

论坛徽章:
0
2 [报告]
发表于 2008-12-05 18:06 |只看该作者

回复 #1 hh0303b22 的帖子

这个你得看ppc的手册啊,有没有prefetch之类的指令。  

不知道ppc是否可以由软件干预流水线。

论坛徽章:
0
3 [报告]
发表于 2008-12-05 18:06 |只看该作者
不了解ppc。光知道ppc有硬件预取指令,预取进去不行吗?

论坛徽章:
0
4 [报告]
发表于 2008-12-06 10:48 |只看该作者
原帖由 hh0303b22 于 2008-12-5 17:45 发表
各位大侠!小弟现在说在的项目,要求通过将数据 load到cache中提升运算速度,求助了!
需求举例:所用cpu为powerpc8641D(L1为32K,L2为1M),做1024点的FFT,每次的1024点数据量为4K,
               要求并行计算 ...


为什么要求都在 cache 里面?

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
5 [报告]
发表于 2008-12-06 11:45 |只看该作者
查datasheet,看cache这一章节

论坛徽章:
0
6 [报告]
发表于 2008-12-06 13:16 |只看该作者

不针对具体情况了

并行计算优化要素:
CPU给定,即并行度给定,那么最关键就是提前计算。这就要求减少数据相关性。
另外
1.减少读内存次数,尽量增加cache命中率。现在CPU提供的prefetch指令给予用户人工干预cache的能力,有了更大的适应性。实际上就是一人工辅助cache预测
2.减少跳转数,跳转预测。配合提前计算,尽量化条件跳转为绝对跳转。多个跳转时,跳转路尽可能照发生概率合理安排。
3.专用指令,有的话尽量用。有多个备选指令,尽量选用消耗最少的。
4.。。。
5.。。

[ 本帖最后由 fineamy 于 2008-12-6 13:20 编辑 ]

论坛徽章:
0
7 [报告]
发表于 2008-12-07 15:25 |只看该作者

回复 #6 fineamy 的帖子

“CPU提供的prefetch指令给予用户人工干预cache的能力,有了更大的适应性。实际上就是一人工辅助cache预测”
我也是使用其预取指令来做的,CPU提供的prefetch指令每次通过指定的“effective address”load一行,我就load了data_len/line_len次,不知道是effective address没弄对还是什么,结果耗费的时间还和先前一样!
      linux下我在用户空间的数据地址就是段偏移地址吧,怎么得到其“effective address”,说法都不一样!
      感谢大家的回复,小弟弄出来了会把体会发上来的!

论坛徽章:
0
8 [报告]
发表于 2008-12-07 15:29 |只看该作者

回复 #2 albcamus 的帖子

prefetch指令是有的,“软件干预流水线”是指!???

论坛徽章:
0
9 [报告]
发表于 2008-12-07 16:40 |只看该作者

linux内核

源代码中有prefetch例子,
好像还有一类是人工填充cache之类的,都是由一堆数字串构成,可以找找参考下

论坛徽章:
0
10 [报告]
发表于 2008-12-07 16:45 |只看该作者

找了个x86的,

ppc也算高档cpu,应该也有吧
/* Prefetch instructions for Pentium III and AMD Athlon */
/* It's not worth to care about 3dnow! prefetches for the K6
   because they are microcoded there and very slow.
   However we don't do prefetches for pre XP Athlons currently
   That should be fixed. */
#define ARCH_HAS_PREFETCH
static inline void prefetch(const void *x)
{
        alternative_input(ASM_NOP4,
                          "prefetchnta (%1)",
                          X86_FEATURE_XMM,
                          "r" (x));
}


/*
* Alternative inline assembly with input.
*
* Pecularities:
* No memory clobber here.
* Argument numbers start with 1.
* Best is to use constraints that are fixed size (like (%1) ... "r")
* If you use variable sized constraints like "m" or "g" in the
* replacement maake sure to pad to the worst case length.
*/
#define alternative_input(oldinstr, newinstr, feature, input...)                \
        asm volatile ("661:\n\t" oldinstr "\n662:\n"                                \
                      ".section .altinstructions,\"a\"\n"                        \
                      "  .align 4\n"                                                \
                      "  .long 661b\n"            /* label */                        \
                      "  .long 663f\n"                  /* new instruction */         \
                      "  .byte %c0\n"             /* feature bit */                \
                      "  .byte 662b-661b\n"       /* sourcelen */                \
                      "  .byte 664f-663f\n"       /* replacementlen */                 \
                      ".previous\n"                                                \
                      ".section .altinstr_replacement,\"ax\"\n"                        \
                      "663:\n\t" newinstr "\n664:\n"   /* replacement */         \
                      ".previous" :: "i" (feature), ##input)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP