我正在写多线程的真实高度并行的应用程序。我已经有书面的SSE加速线程类。如果我写的MMX加速线程类,然后同时运行在同一时间(一个SSE线程,每个核心一个MMX线程)将业绩显着改善?

我认为这种设置有助于隐藏存储器延迟,但我想,以确保之前,我开始浇注时间到了。

有帮助吗?

解决方案

在SSE和MMX指令集共享同一组的CPU在矢量处理执行单元。因此,运行的线程SSE和MMX线程将具有相同的可用资源的每个线程仿佛运行两个线程SSE(或两个MMX线程)。唯一的区别是在存在于SSE但不MMX(因为SSE是MMX的扩展)的指令。但是,在这种情况下,MMX很可能将是慢,因为它没有提供这些高级指令给它。

因此,答案是:不,你不会看到的性能改进相比,运行两个线程SSE

其他提示

SSE和MMX使用相同的寄存器,所以也没有无论使用其中两个的(除了MMX吸吮和SSE是有用的,当然)

在更好的问题是SSE是如何在目标CPU上。它有每核心SSE单元? (可能)如果是这样,每个线程,那么你不妨运行SSE指令。

如果它具有芯然后不同的线程将争取在它之间的共享SSE单元所以不会有太大通过在多个线程中执行SSE指令获得的。 (我不知道是否有任何实际的CPU,虽然线程之间共享的SSE单元,所以以此为假设情况)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top