为什么“i586”代表奔腾1,而“i686”代表奔腾Pro?

5
"i486" 是指英特尔80486 (因为80486以 486 结尾)。
但是为什么 "i586" 指的是奔腾一代,而 "i686" 指的是奔腾Pro呢?

4
通常情况下,它没有影响。这是一个Linux惯例。详细信息可查看链接:https://vichhaiy.wordpress.com/2014/11/11/what-is-the-difference-between-i386-i486-i586-i686-i786/。 - Raymond Chen
1个回答

9

英特尔转而使用名称进行市场营销,因为您可以对名称进行商标注册,但不能对数字进行商标注册。 (显然是根据美国法院的决定)。

人们(特别是Linux和GCC开发人员)发现在接下来的两代微架构系列中继续使用编号方案非常方便、简洁和/或“聪明”。

这种做法有一定的合理性

  • 奔腾所使用的微架构系列的正式名称为P5,这是英特尔第五代x86微架构。第一代奔腾P5的产品号为80500,后续版本的代码类似于80501和80502,但不是80586,但数字5也出现在其中。

    但是数字5确实出现在微架构代码中。如今,微架构的名称为Nehalem或Skylake,但在此时期,我们有P5,然后是P54C(3.3伏特版本),其他一些版本,然后是P55C(Pentium MMX 80502),其中包括其他架构改进和更长的流水线(6个阶段对比5个阶段)。

  • PPro和PII/PIII基于P6微架构。 P6微架构家族的后续成员包括Pentium-M/Core和Core 2(令人困惑地称为“Core”微架构)。 Nehalem / Westmere是P6家族的最后一代,Sandybridge是一个新的、独立但相关的家族的开始。

    但关键点在于,英特尔在其手册和文件中正式使用术语P6,其中包含数字6,因此完全有理由创造术语i686来描述支持新指令(如cmov)和/或执行乱序操作的CPU,或者你想要谈论的任何相关i686特性。


从Pentium和晚期486开始,CPU使用CPUID指令进行标识。 EAX=1 / cpuid会在EAX中生成一个结果,告诉您CPU的家族、型号、步进

(EAX=0 / cpuid会给您提供一个供应商字符串:"GenuineIntel"表示英特尔.)

http://www.sandpile.org/x86/cpuid.htm#level_0000_0001h

  • 486报告家族=4
  • P5 uarches报告家族=5。
  • P6-family(以及sandybridge-family)uarches报告家族=6。英特尔在6个家族之后停止递增,“家族”仅适用于Pentium 4。因此,尽管SnB-family普遍被认为是一个不同的家族,当前英特尔CPU在CPUID中报告Fam 6,只是具有不同的模型代码。
  • 模拟x86的Itanium CPU报告Family=7。
  • Pentium 4(NetBurst微架构):Family=15 (+ extended family=0)

其他一些供应商对于与Pentium和PPro兼容的CPU报告了Family=4、5或6,例如AMD 5x86/k5/k6、NextGen、Centaur等。当然,它们有自己的供应商字符串,但通常将“家族”字段放入"i%d86" printf格式字符串或类似的东西中并不完全疯狂。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接