c++ - 同时使用多个 SIMD 指令集的好处

标签 c++ c sse simd mmx

我正在编写一个高度并行的多线程应用程序。我已经编写了一个 SSE 加速线程类。如果我要编写一个 MMX 加速线程类,然后同时运行两者(每个核心一个 SSE 线程和一个 MMX 线程),性能会显着提高吗?

我认为此设置有助于隐藏内存延迟,但我想在开始投入时间之前先确定一下。

最佳答案

SSE和MMX指令集在CPU中共享同一组 vector 处理执行单元。因此,运行一个 SSE 线程和一个 MMX 线程时,每个线程将拥有相同的可用资源,就像运行两个 SSE 线程(或两个 MMX 线程)一样。唯一的区别是存在于 SSE 而不是 MMX 中的指令(因为 SSE 是 MMX 的扩展)。但在那种情况下,MMX 可能会变慢,因为它没有可用的更高级指令。

所以答案是:不,与运行两个 SSE 线程相比,您不会看到性能提升。

关于c++ - 同时使用多个 SIMD 指令集的好处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2840342/

相关文章:

c++ - 在 C++ 中连接两个大文件

c++ - 是否有任何 native gtkmm 类可以从小部件的信号处理函数中排队命令/数据?

c - 在 c 中的消息队列上进行类型转换

c - 尝试使用指针转置 C 中的矩阵

assembly - 将一个字广播到 xmm 寄存器

c++ - 使用此代码的“特定”双缓冲?

c++ - 如何使用 Bazel 获得 C++ 代码覆盖率?

C 直方图错误数字

c++ - 如何在结构内对齐 __m256d?

c++ - AVX 的乘加矢量化比 SSE 慢