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

jak*_*gut 3 c c++ sse simd mmx

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

我认为这个设置有助于隐藏内存延迟,但我想在开始花时间之前确定它.

Soa*_*Box 8

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

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