我正在编写一个高度并行的多线程应用程序。我已经编写了一个支持SSE加速的线程类。如果我再编写一个支持MMX加速的线程类,然后同时运行两个线程(每个核心一个SSE线程和一个MMX线程),是否会显著提高性能?
我认为这种设置可以帮助隐藏内存延迟,但在开始投入时间之前,我想确认一下。
我认为这种设置可以帮助隐藏内存延迟,但在开始投入时间之前,我想确认一下。
SSE和MMX使用相同的寄存器,因此你使用其中之一都无所谓(当然除了MMX很差而SSE很有用的情况下)
更好的问题是SSE在目标CPU上如何实现。它是否每个核心都有一个SSE单元?(很可能)如果是这样,那么你可以在每个线程上运行SSE指令。
如果它在多个核心之间共享SSE单元,则不同的线程将会争夺它,因此在多个线程中执行SSE指令不会带来太多收益。(我不知道是否有任何CPU实际上在线程之间共享SSE单元,因此请将其视为假设情况)