相关疑难解决方法(0)

SIMD 和 SSE 有什么区别?

我很困惑,SIMD 和 SSE、SSE2、SSE3、AVX 等有什么区别?

根据我的知识和研究,SIMD 是允许单个指令对多个数据进行操作的架构,而 SSE、AVX 是实现 SIMD 架构的指令集。

并且每种架构的向量大小之间是否存在差异,例如 SSE 有 128 位,而 AVX 有 256 位?如果底层的 SIMD 架构是相同的(我认为),那么不同的 ISA 如何具有不同的向量大小?

我不确定这是否属实,有人可以向我详细解释实际发生的情况吗?

x86 simd

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

perf报告显示此函数"__memset_avx2_unaligned_erms"有开销.这是否意味着内存未对齐?

我试图使用perf工具来分析我的C++代码.实现包含带有SSE/AVX/AVX2指令的代码.除了该代码使用-O3 -mavx2 -march=native标志编译.我相信__memset_avx2_unaligned_erms函数是一个libc实现memset.perf表明这个功能有相当大的开销.函数名称表示内存未对齐,但在代码中我使用GCC内置宏显式对齐内存__attribute__((aligned (x)))可能是此函数有明显开销的原因以及为什么虽然内存明确对齐但调用了未对齐版本?

我已将样本报告附在图片上.在此输入图像描述

c++ profiling avx avx2 perf

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

如果 AVX 可用,为什么 copy_user_enhanced_fast_string 不使用它?

在了解我的应用程序(I/O 密集型)的分析结果时,我面临copy_user_enhanced_fast_string成为最热门的区域之一。在用户空间和内核空间之间复制时调用它。x86 上的实现如下所示:

ENTRY(copy_user_enhanced_fast_string)
    ASM_STAC
    cmpl $64,%edx
    jb .L_copy_short_string /* less then 64 bytes, avoid the costly 'rep' */
    movl %edx,%ecx
1:  rep
    movsb
    xorl %eax,%eax
    ASM_CLAC
    ret

    .section .fixup,"ax"
12: movl %ecx,%edx      /* ecx is zerorest also */
    jmp .Lcopy_user_handle_tail
    .previous

    _ASM_EXTABLE_UA(1b, 12b)
ENDPROC(copy_user_enhanced_fast_string)
Run Code Online (Sandbox Code Playgroud)

为什么不vmovaps/vmovups用于那个?不是已经证明 AVX 在复制可用的地方没有性能优势吗?

linux assembly x86-64 linux-kernel

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

SIMD内在和内存总线大小 - CPU如何读取单个内存中的所有128/256位读取?

你好论坛 - 我有一些关于SIMD内在的类似/相关问题我在网上搜索了包括stackoverflow但没有找到好的答案所以请求你的帮助.

基本上我试图理解64位CPU如何在一次读取中获取所有128位,以及这种操作的要求是什么.

  1. CPU会在单个内存操作中从内存中获取所有128位还是会进行两次64位读取?
  2. CPU制造商是否需要一定大小的内存总线,例如,对于64位CPU,英特尔需要128位总线来进行SSE内存绑定操作吗?
  3. 这些操作是否依赖于内存总线大小,通道数和内存模块数量?

sse x86-64 simd cpu-architecture memory-bandwidth

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

使用RSI/RDI vs r8-r15(速度优化)

我想尽可能地优化我的函数,我做的一件事就是使用r8作为指针,因为这是指针在x64函数中被推入的寄存器.

但是推送RSI或RDI,将指针移动到它们并在循环中更快地使用它们?

例如,mov [RSI],DL;将编译为2个字节和:mov [r8],DL; 将编译为3个字节

所以,如果我做了100到200次循环,r8会因为要解码的额外字节而变慢吗?或推动RSI并移动指针消除任何可能的速度增加?显然push和mov会在循环外发生.

optimization assembly x86-64 masm micro-optimization

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