2013-07-19 66 views
-1

就像一个例子,我想知道哪些x86处理器系列支持fisttp指令。我非常肯定它在Pentium 4及更高版本上得到了支持,但我想对此进行官方验证。更重要的是,我想知道它是否会得到更进一步的支持:是否可以在Pentium III上使用?如何确定哪些英特尔处理器系​​列支持哪些指令?

我尝试了所有显而易见的Google搜索术语,但几乎没有任何关于此特定指令的在线可用信息。即使有,这也不是一个好的通用解决方案。

我了解英特尔IA-32体系结构手册,可在线获取here。看看Instruction Set Reference, A–Z,我可以找到我感兴趣的说明以及大量关于它的有趣信息。但手册中没有任何地方告诉我哪些处理器系列支持每条指令,甚至是何时首次引入。

我试图找到本手册的旧版本(即Pentium III系列),但是我空了 - 所有链接都指向当前版本手册的上述链接页面。此外,为每个家庭挖掘手册并查看我所关心的指导是否存在,这是很多工作。

当然这些信息是其他人经常查看的东西......他们使用什么资源?

注:对于粗心的读者,请注意,我不问如何确定此信息编程在运行时。我想坐在我的办公桌前。

+1

我使用维基百科。例如,对于'fisttp'我看看SSE3的维基百科文章,它有一个非常方便的“支持SSE3的处理器”列表。并不总是很好。对于不属于明显指令集扩展的指令,有时看[这里](http://en.wikipedia.org/wiki/X86_instruction_listings)工作 – harold

+0

@harold啊,坚果。维基百科!所有的事情!我也应该在那里检查。但我仍然想知道人们在维基百科前的时代做了什么... –

+0

http://ref.x86asm.net/也是一个很好的地方看看 –

回答

3

实际上,您已经有了答案:找到这些信息的最佳资源位于CPU制造商的文档中。

如果你仔细看,英特尔手动你(几乎)链接到了你需要在你的例子FISTTP的所有信息:它被明确列为SSE3指令(见here:第1卷,第5.7节。英特尔64和IA-32架构软件开发人员手册,2013年6月)。这意味着任何支持SSE3指令集的CPU都应支持FISTTP。英特尔手册在现代指令集(SSE,AVX,BMI,...,你的名字)方面做得很好,详细说明了任何指令所属的指令集(和相关的CPUID特征标志)几乎可以回到引入CPUID时的指令(后期的80486 CPU)。有了这些信息,就很容易找出哪个CPU模型支持给定的指令。

我不确定英特尔手册在推出真正古老的东西时的工作效果如何(对于高达486的CPU,我有一个从1992年开始的详细介绍这些东西的Microsoft MASM参考手册)。但是如果这些信息不能谷歌搜索,我会感到惊讶 - 无论如何,这些真正旧的变化(如在386上引入BT指令)现在可能只是从学术角度而言只是有趣的。

+0

非常好...这是我一直在寻找的信息!我认为这将是按字母顺序排列的参考文献,第1卷只是背景/一般信息。是的,我能够在网上找到真正的旧东西,但不是新东西。谢谢! –

4

一般来说,这里实际上不可能有一个整齐的答案。尽管“更大”的指令集扩展(SSE,SSE2,...,AVX)往往是增值的(从某种意义上说,一旦它们被添加,它们不会消失),但是有很多更小的ISA扩展(英国电信公司想到的就像TSX一样),Intel认为它是可选的;在最初添加之后,家庭中的单个处理器可能会根据您支付多少钱包含或排除该功能。

以AESNI为例;这些说明是在Westmere/Clarkdale/Arrandale增加的,但只有i5和i7变体有它们(IIRC,它们在一些i5 SKU中也被禁用)。在下一代(桑迪布里奇),他们只是i5和i7,根据维基百科,有时在BIOS中也被禁用。在Ivybridge,他们仍然是i5/i7,除了一个或两个高端i3 SKU。因此,虽然人们可以对SSE,SSE2,...,SSE4.x,AVX,AVX2进行广泛的陈述,这些陈述“大部分”是正确的(甚至对所有迄今为止发布的CPU都是正确的),但唯一真正正确的答案是通过查看英特尔建议的相应功能位来检查运行时是否有指令。这正是你不想要的答案。抱歉。

对于“我如何近似回答这个问题”这个更一般的问题,维基百科是一个很好的参考。对于特定处理器型号而不是系列,请使用ark.intel.com

+0

这是很好的信息要知道。这确实比我想象的更复杂。我接受PhiS的答案,因为它给了我确切的东西,尽管你的答案确实指出了一些限制,但你的答案仍然值得赞赏。 –