• Welcome to the world's largest Chinese hacker forum

    Welcome to the world's largest Chinese hacker forum, our forum registration is open! You can now register for technical communication with us, this is a free and open to the world of the BBS, we founded the purpose for the study of network security, please don't release business of black/grey, or on the BBS posts, to seek help hacker if violations, we will permanently frozen your IP and account, thank you for your cooperation. Hacker attack and defense cracking or network Security

    business please click here: Creation Security  From CNHACKTEAM

X86、X86_64、amd64、i386和i686指令集之间的差�


Recommended Posts

iudkdmym2tz3678.jpg

x86

intel开发的32位指令集,从386时代就开始使用,是cisc指令集。intel和amd的早期CPU都支持这个指令集。

x84_64/amd64

其实x86 _ 64,x64,AMD64基本是一回事。

当x86 CPU开始走向64位时,AMD牵头Intel制造商用x86兼容CPU,AMD称之为AMD64。

然后Intel开始支持AMD64的指令集,改名为x86_64,也就是说是x86指令集的64扩展。

i386

I386适用于intel和AMD的所有32位CPU。

英特尔平台包括8086、80286、80386、80486、奔腾系列(1.2.3.4)、赛扬系列、奔腾D系列、迅驰P-M、酷睿双核等。

i686

I686仍然属于i386系统,但是相对于386 CPU的特点,指令进行了优化。

i686的软件包可以在奔腾II以上的cpu上执行,但是不能在486等以前的cpu上执行。i386的软件包可以在i386的电脑上执行,也可以在所有以下的CPU上执行(但无法发挥CPU的最佳性能)。

I386=英特尔80386 i386通常用作英特尔32位微处理器的通称。AMD64也称为“x86-64”或“x64”,是一种64位计算机处理器架构。它基于现有的32位x86架构,由AMD开发。

x86架构最早出现在1978年推出的Intel 8086 CPU中,它是由Intel 8008处理器发展而来,而8008则是由Intel 4004发展而来。

英特尔4004 -英特尔8008 -英特尔8086 -英特尔8088

之后,英特尔推出了包括80186、80286、80386和80486在内的软件。

在设计上,这些后续处理器所使用的指令集都是在8086的基础上增加新的支持指令而改进的,所以可以说都是向后兼容的,也就是能在8086上运行的程序都能在80486上运行。因为都是以86结尾的(虽然8088是x86),所以这一系列的指令集被称为x86指令集(架构)。准确的说,x86这个术语并不是指一个特定的指令集(由特定的CPU使用),而是在8086基础上发展起来的所有指令集的统称。

事实上,在80486之后,英特尔推出的大部分CPU都是“x86”,包括奔腾、奔腾Pro、奔腾MMX、奔腾2,其次是奔腾3、奔腾4、奔腾D、酷睿、至强(x86系列)。另外,采用x86架构的处理器厂商和Intel相差甚远,最著名的是AMD,其他还有威盛和Cyrix。

可以说x86架构是桌面CPU的标准。你能买到的几乎没有不是x86 CPU的品牌或者组装的PC。虽然都是x86,但只是说明使用的指令集兼容8086,除了8086指令集之外其他指令的支持都不一样。其内部微架构微架构明显不同,就像Linux和Unix都是兼容POSIX的OS,都有fork系统调用,但是这个调用的实现确实不同。

从1985年80386开始,intel通过对x86架构进行32位扩展,实现了32位CPU,而之前的都是16位。英特尔将支持32位的x86指令集架构命名为ia-32(英特尔架构32位)。实际上,由于32位x86处理器的优势,“x86”一词几乎等于IA-32,即32位x86或x86-32。例如,Windows和Linux发行版的32位名称是x86(而不是x86-32或ia-32)。后来的“x86-64”名称也继续强化了这一约定。这里需要强调的是,x86是一系列架构的通称,支持16位、32位、64位指令。

未来会到来。1999年,AMD宣布了x86-64架构。现在的模式其实和之前的80386思路是一致的,继续扩展IA-32,增加了64位通用寄存器、整数预算单元和逻辑运算,支持64位虚拟地址;兼容正向ia-32。首款x86-64处理器发布于2003年,AMD Operon。同时AMD官方将x86-64命名为AMD64。这是英特尔彻底的2B(原因将在后面解释)。曾经是AMD的小弟,英特尔的大哥的脚步。现在AMD已经率先实现了64位民用桌面CPU。事实上,英特尔也有其64位计划,这是在2

004年的IDF上,Intel承认其64 位计划,命名为ia-32e,即ia-32 extension,之后又改成EM64T,Extended Memory 64 Technology,最终命名为Intel64。 实际上EM64T与AMD64几乎相同。早期EM64T不兼容AMD64的少量指令,但是由于AMD在64位技术中的领先地位,Intel2005年不得 不宣布将完全兼容AMD64。所以现在装的64位版本操作系统从没有说是面向Intel还是AMD的。不过在称谓上,大多数厂商还是使用 x86-64(x86_64,或者就是x64)来称呼此架构,从而保持中立。
  “i386“和”i486″作为Intel 80386和80486处理器的别名是比较显然的。由于不能使用数字作为注册商标,而且也需要一个正式的名称命名,从586开始就变为Pentium了, 这时候i586就作为了最原始Pentium的微处理架构“P5”的别名,同样的i686对P6(Pentium Pro使用),i786对应P68,或NetBurst架构。
      在我看来,在软件包的命名上使用“i某86”时应该是说适用于使用这一代微架构的CPU。但微架构是硬件上事,因此还是在说明适用对应CPU使用的 指令集。比如,i386对应IA-32,并且由于兼容性肯定适用于i486~i686;i686不仅适用Pentium Pro,也适用K7架构的Athlon。
  前文提到Intel在AMD推出民用64位技术后很被动。其实Intel也有64位x86 CPU的计划,但是由于对于这个市场的不重视,认为需求不足,一直不见面世。而在对64位需求更加强劲的企业服务器和高性能计算市场上,1994年HP就 和 Intel合作开始开发一款与x86架构完全没关系的全新的IA-64架构。显然IA-64不兼容x86-64更别说IA32,IA64天生就是64位,基于显式并行指令运算(EPIC)。 2001年第一款IA-64架构的处理器Itanium安腾发布。可见,IA-64跟IA-32在实现上没有什么关系,跟x86-64也是完全并行的两种 架构,x86架构的Intel的Xeon就是Intel Itanium的竞争对手之一。后来Intel把IA-64也干脆改称为Intel Itanium架构。
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now