请教mips上pref指令的用法

发布于 2022-09-18 10:52:44 字数 113 浏览 18 评论 0

我的程序要对一个大小为16的short数组进行操作,然后将结果在写回这个数组。我现在想用pref指令进行数据预取,我在lh语句前加入pref语句,hint值选用4,可性能没有提高。我想请教各位如何高效的运用pref指令。。。。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

画骨成沙 2022-09-25 10:52:44

预取指令要在实际内存操作之前一点才能有效隐藏内存访问的延迟。你可以把 pref 再提前放一点。另外,过多的 pref 也可能影响性能;理想的情况下为每条 cache line 只需要用一条 pref。再者,如果 CPU 支持硬件预取而你的内存操作样式会触发它,pref 是根本不必要的。

赢得她心 2022-09-25 10:52:44

原帖由 zuxy 于 2009-12-18 14:52 发表
预取指令要在实际内存操作之前一点才能有效隐藏内存访问的延迟。你可以把 pref 再提前放一点。另外,过多的 pref 也可能影响性能;理想的情况下为每条 cache line 只需要用一条 pref。再者,如果 CPU 支持硬件预 ...

谢谢你的回答。
我现在对pref的hint不是很理解,我把load streamed换成了load retained好像效果更好一点。还有那个reserved,文档上说为以后使用,好像和cache锁定还不同吧,能解释一下嘛???

温柔女人霸气范 2022-09-25 10:52:44

Streamed 和 retained 对应两种应用的情况。Streamed 适用于串行化一过性的处理,比如 memcpy、在文本流中进行字符替换等等,预取会尽量减少缓存污染,因为将处理过的东西继续放在缓存里会恶化性能。Retained 适用于需要用满缓存的复杂操作,也是计算机默认的使用缓存的方式。

举个例子,如果要实现一个数字滤波器,输入的数据应当用 load streamed,而滤波器的各项系数则应当用 load retained。

另外,这只是针对预取指令的 hint,CPU 有选取不同实现的自由。某些 CPU 可能对两种 hint 使用同样的实现,甚至都视作 nop,反正不会影响程序的正确性。

澜川若宁 2022-09-25 10:52:44

原帖由 zuxy 于 2009-12-18 16:23 发表
Streamed 和 retained 对应两种应用的情况。Streamed 适用于串行化一过性的处理,比如 memcpy、在文本流中进行字符替换等等,预取会尽量减少缓存污染,因为将处理过的东西继续放在缓存里会恶化性能。Retained 适 ...

恩,我输入的数组就是通过一个滤波公式来处理的,一共处理4次,所以我选择了streamed。我的数组大小为16个short,我只要把数组的首地址传进去就可以把整个全部数据预取到一个cache line了。那么d-cache每次都会从新的cache line添数据吗。比如一行cache line 大小为32B,它一次取了33B,那就占用了两行cache line。那以后再有数据要cache的时候它就会从第三行开始填数据,还是接着填满第二行数据呢

终陌 2022-09-25 10:52:44

这可说来话长了,要牵涉到缓存对内存的映射方式,你可以参考体系结构的教材。不过,缓存的单位从来都是一整条 cache line,不会出现缓存了 33 字节的情况;要么 32 字节,要么 64 字节。

幸福丶如此 2022-09-25 10:52:44

原帖由 zuxy 于 2009-12-18 17:16 发表
这可说来话长了,要牵涉到缓存对内存的映射方式,你可以参考体系结构的教材。不过,缓存的单位从来都是一整条 cache line,不会出现缓存了 33 字节的情况;要么 32 字节,要么 64 字节。

哦,了解
那我能用reserved来达到cache锁定的功能吗。我有一个数组,从头到尾都会用到,如果能锁定在cache里那就好了···

为你拒绝所有暧昧 2022-09-25 10:52:44

如果我有一个512大小的char数组,并且有一个循环随机取其中的数据,那样的话是不是cache miss会增加?如果要提高效率是否得将整个数组全部预取到cache里呢

[ 本帖最后由 RUNONMIPS 于 2009-12-21 15:23 编辑 ]

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文