是否SSE寄存器共享或逻辑处理器(超线程)之间重复? 我可以期待相同种类的加速比从并行化了SSE重程序作为一个正常的程序(Intel声称30%与超线程处理器)?

有帮助吗?

解决方案

这是我不清楚英特尔的文档,如果超线程处理器的线程之间共享寄存器文件或将有两个不同的人(我猜想,他们实际上是不同的,因为否则HT线程之间的上下文切换时间会相当高,但这纯粹是猜测)。

至于加速 - 这是要依赖于你的指令组合和调度。请记住,HT CPU没有任何额外的执行资源(算术逻辑单元,加载/存储单元等),性能改善是由于更好地利用这些资源,因为典型的代码,尤其是在现代的处理器,花费合理的量时间阻塞等待内存加载和存储完成才可以继续执行。 HT允许这些加载和存储进行交错,使得在读操作一个一个线程停止,其他的都可以在切换,并开始使用它以前一直闲置的执行资源。

我猜是什么样的性能提升,你会用多线程一个小型企业方案将取决于内存OPS算术OPS的比例看。如果,例如,你的SSE程序加载4 SSE从内存寄存器,不会对他们的万个SSE操作,然后写入4个寄存器回来了,你可能不会看到太大的优势,从HT能够重叠内存访问,因为你的程序运行时的99%会在SIMD ALU的,而不是在内存访问中度过。

在另一方面,如果你的程序是非常计算为重,那么多线程程序可以在多核处理器大大提高性能,并可能给你,因为在这种情况下,你的代码可以访问完整的超过30%的改善好得多一次为多个内核执行资源。

其他提示

他们逻辑复制 - 每个线程都有自己的状态。物理上,它们可以被共享 - 取决于你超线程实施

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