发布于 2018-03-08 20:18:19
这个答案只适用于英特尔处理器。
首先,从最早的到最近的所有英特尔Atom处理器都支持SSSE3。英特尔手册第1.2.14节规定:
最初的Intel Atom处理器系列和随后的几代包括Intel Atom处理器D2000、N2000、E2000、Z2000、C1000系列提供了以下特性:
此外,手册的表5-1规定:
SSSE3扩展:英特尔Xeon处理器3 3xxx,5100,5200,5300,5400,5500,5600,7300,7400,7500系列,英特尔核心2极限处理器QX6000系列,Intel Core 2四处理器,英特尔奔腾双核处理器,英特尔Atom处理器。
这与维基百科也是一致的。
我不确定手册是否明确声明如果支持SSE4,那么支持SSSE3,但我们可以导出它。
12.7.3节讨论了如何检查SSSE3支持:
在应用程序尝试使用SSSE3扩展之前,应用程序应该按照11.6.2节中的步骤“检查SSE/SSE 2支持”。接下来,使用下面提供的附加步骤:
此外,12.12.2节还讨论了如何检查SSE4.1支持:
检查处理器是否支持SSE4.1 (如果CPUID.01H:ECX.SSE4_1bit 19 = 1)、SSE3 (如果CPUID.01H:ECX.SSE3bit 0= 1)、和SSSE3 (如果CPUID.01H:ECX.SSSE3bit 9= 1)。
最后,第12.12.3节讨论了如何检查SSE4.2支持:
检查处理器是否支持SSE4.2 (如果CPUID.01H:ECX.SSE4_2bit 20 = 1)、SSE4.1 (如果CPUID.01H:ECX.SSE4_1bit 19 = 1)、和SSSE3 (如果CPUID.01H:ECX.SSSE3bit 9= 1)。
如您所见,SSE4.1和SSE4.1都需要对SSSE3的支持。我们还可以得出结论,SSSE3需要对SSE2的支持。
警告:尽管很难100%确定,但这很有可能在未来继续保持下去。
然而,一个有趣的观察是,当比较支持SSSE3的处理器列表与支持SSE4.1和SSE4.2的处理器列表(表5-1和表5-2)时,只有一个处理器,英特尔核心i7 965处理器,它在the 4.2的列表中,而不是SSSE3中,然而处理器实际上支持SSSE3。不确定这是否是手册中的错误,或者更可怕的是,它是不完整的。
另一个有趣的观察是,对于除了Atom之外的处理器(参见上面1.2.14节的引用),似乎对SSSE3、SSE4.1或SSE3 4.2的支持并不一定意味着支持SSE3。我没有在手册中找到任何能让我得出这个结论的东西。同时,我不知道有任何处理器支持SSSE3、SSE4.1或SSE4.2,但不支持SSE3。
第12.1.1节指定了在SSSE3中可用的寄存器:
在兼容性模式下,SSE3、SSSE3和SSE4功能就像它们在保护模式下所做的那样。在64位模式下,可以访问另外8个XMM寄存器.通过使用REX前缀访问寄存器XMM8-XMM 15。
12.7.1节讨论了对SSSE3的操作系统支持:
确保您的操作系统支持SSE/SSE 2/SSE3/SSE 3扩展。(操作系统对SSE扩展的支持意味着对SSE2、SSE3和SSSE3.的充分支持)
因此,任何需要SSE的操作系统都会自动支持SSSE3。
发布于 2018-09-08 03:52:47
我认为新处理器中的“支持”意味着“新的”东西,而向后兼容性是强制性的,至少在英特尔领域是这样的--对于AMD来说几乎没有什么不同,那么操作系统代码中使用的是最低的公分母,只有低级别的内核变体/路径才能被优化,如果它真的有价值的话。专用/科学/实验/媒体软件可以状态处理器ISA所需(视频渲染,音频DSP FX等)
https://stackoverflow.com/questions/49157522
复制相似问题