小编Fan*_*ang的帖子

关于i7的分支预测

我想知道英特尔i7处理器的分支预测是如何工作的?

Currenly,我知道预测器称为"动态分支预测".

对于1位预测器:硬件始终预测分支指令采取与上次执行时相同的方向.

在实践中更好地工作的精炼版本是2位预测器.为了进一步提高预测精度,引入了2比特预测方案.在这些方案中,预测在改变之前必须是错误的两次.

i7是否具有与上述相同的预测值?

architecture branch cpu-architecture

9
推荐指数
2
解决办法
3527
查看次数

关于warp投票功能

CUDA编程指南介绍了warp投票功能的概念,"_ all"," _ any"和"__ballot".

我的问题是:哪些应用程序将使用这3个功能?

cuda gpu gpgpu

7
推荐指数
2
解决办法
5251
查看次数

关于减少分支未命中预测

我在一篇论文中看到了一句话:"将分支转换为数据依赖关系以避免错误预测的分支".(第6页)

我想知道如何将代码从分支更改为数据依赖项.

这是一篇论文:http://www.adms-conf.org/p1-SCHLEGEL.pdf

更新:如何在二进制搜索中转换分支?

algorithm optimization

4
推荐指数
1
解决办法
877
查看次数

关于无分支二分搜索

我问了一个关于减少未命中预测的问题。

Jerry Coffin 给了我一个令人印象深刻的答案。

关于减少分支未命中预测

二分搜索是无分支的,但是当我在我的集​​合交集算法中使用它时,我发现它比原始二分搜索慢得多。什么原因?

更新:

我使用以下事件来测试 i7 处理器的分支未命中预测数:BR_MISS_PRED_RETIRED。我发现无分支版本比原始版本少了大约一半的分支缺失。

对于缓存未命中:我使用 LLC_MISSES 来测试最后一级缓存未命中的次数,也是一半。

但时间是原来的2.5倍左右。

algorithm branch

4
推荐指数
2
解决办法
1731
查看次数

SSE指令需要对齐数据

数据必须是16字节对齐的,以便SSE指令可以处理它而不会出现分段错误吗?我试过的编译器是带有选项的gcc -msse2.我想_mm_cmpgt_epi32用来比较一个大的int数组.我发现它不能在数组的任何位置执行,除了下标为4的倍数的位置.

x86 sse simd

1
推荐指数
1
解决办法
929
查看次数

标签 统计

algorithm ×2

branch ×2

architecture ×1

cpu-architecture ×1

cuda ×1

gpgpu ×1

gpu ×1

optimization ×1

simd ×1

sse ×1

x86 ×1