欢迎来真孝善网,为您提供真孝善正能量书籍故事!

深入解析:x86架构的演变与性能优化

时间:11-22 神话故事 提交错误

这篇文章给大家聊聊关于深入解析:x86架构的演变与性能优化,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

为什么软件版本标注为amd64版本,而不是intel64版本?

x86是指由Intel开发的32位指令集。从386时代开始,一直沿用至今。它是一个cisc指令集。所有早期的Intel CPU和早期的AMD CPU都支持该指令集。 Intel在官方文件中称为“IA-32”

x84_64是x86 CPU开始向64位迈进的时候。有2个选择:

1. 向后兼容x86。

2.完全重新设计指令集,不兼容x86。

AMD 抢先一步,率先在Intel 之前创建了商用x86 兼容CPU。 AMD称之为AMD64,抢到了64位PC的第一桶金,并获得了用户的认可。

Intel选择设计一套新的不兼容x86的64位指令集,叫做IA-64(这东西好像是安腾),不过比AMD晚了一步,而且IA-64也相当惨淡,因为它是一种全新设计的CPU,没有编译器,也不支持Windows(微软欺骗了Intel,承诺发布适用于Windows服务器的Itanium版本,但一直无法生产出任何东西)。后来由于时机落后,不得不开始支持AMD64指令集,不过名称改为x86_64,意思是它是x86指令集的64位扩展。大概是因为不愿意承认这个东西是AMD设计的吧。

其实x86_64、x64、AMD64基本上是一个东西。我们现在使用的Intel/AMD的桌面级CPU基本都是x86_64。相比之下,arm、ppc等都不是x86_64。

x86 和x86_64 之间的主要区别是32 位和64 位的问题。 x86中只有8个32位通用寄存器,eax、ebx、ecx、edx、ebp、esp、esi和edi。

x86_64将这8个通用寄存器扩展到64位,并且比x86多了几个寄存器(好像增加了8个,总共16个通用寄存器)。同一MMX中的位数和寄存器数量也得到了扩展。另外,CPU扩展到64位后,还可以支持更多的内存,还有很多其他的好处。

对于普通程序来说,CPU位的扩展和寄存器数量的增加不会带来明显的性能提升,例如IE浏览器和Office软件。特定的程序可以充分利用64位CPU和更多的寄存器。例如,MMX不仅可以提高多媒体程序的性能,还可以提高矩阵、多项式和向量计算。更多的MMX寄存器和更大的寄存器字长有利于SIMD指令的执行,并且可以提高CPU的数据吞吐量(RISC指令集的CPU往往有数百个寄存器,可以有效地缓存中间计算结果,而无需写入中间结果。内存,从而减少内存访问次数并显着提高性能)

x86

x86 架构是一种由微处理器执行的计算机语言指令集。它是指Intel通用计算机系列的标准编号缩写,也标识一组通用计算机指令。

1978年6月8日,Intel发布了新的16位微处理器“8086”,也迎来了一个新时代:x86架构诞生了。

在其40 年的发展历史中,x86 系列不断发展,从台式机转向笔记本、服务器、超级计算机和写入设备。在此期间,也挫败或限制了许多竞争对手的发展,使许多处理器制造商及其架构技术成为历史。名字,即使是那些封闭发展的名字也是不可持续的。例如,苹果已经放弃了PowerPC。

AMD64/x86-64

x86-64,有时也称为“x64”,是一种64位微处理器架构及其相应的指令集,也是Intel x86架构的扩展。

“x86-64”是AMD在1999年设计的,AMD首先公开了一个64位集合作为IA-32的扩展,称为x86-64(后来更名为AMD64)。 AMD64架构在IA-32的基础上增加了64位寄存器,并且兼容早期的16位和32位软件,可以轻松地将现有的x86目标编译器转换为AMD64版本。

由于AMD64和Intel64基本相同,因此许多软件和硬件产品都使用不利于任何一方的词汇来表明它们与这两种架构兼容。为此,AMD 时常使用该CPU 架构的原始名称“x86-64”以及变体“x86_64”。 Microsoft 和Sun 等其他公司在营销材料中使用“x64”作为“x86-64”的缩写。

许多操作系统和产品,尤其是那些在Intel 进入市场之前引入“x86-64”支持的操作系统和产品,使用“AMD64”或“amd64”来指代AMD64 和Intel64。

目前的x86 CPU有32/64bit位,ARCH有x86/x86_64/x64/i386/IA32/IA64/amd64。

最近,新的x32已经发布。幸运的是,它不是ARCH,而只是ABI,这并不那么令人困惑。

我们先来谈谈x86 的这些架构。如果要求不是很严格的话,基本上可以用下面的公式来表达:

x86=i386=IA32

amd64=x86_64=x64!=IA64

事实上,这两个方程很多都是别名。严格来说,x86世界里只有三种架构:x86/x86_64/IA64。

当时AMD先于Intel推出了向后兼容的amd64 CPU,但Intel的不兼容32位系统的IA64结局很惨(被MS放走了)。后来Intel在指令上支持了amd64,但不愿意称其为amd64。命名为x86_64。

先说一下64位/32位的兼容性问题:

现在的64位CPU其实是专门为了兼容32位而设计的,所以在64位CPU上运行32位软件(包括内核/应用程序,驱动程序除外)是没有问题的。相反,在32 位CPU 上运行64 位软件是不可能的。

最后说一下重点,64bit相比32bit的性能优势:

这里不考虑在64位硬件上运行32位软件的过度方式。

从架构上来说,64bit有64bit寄存器和64bit总线,在数据传输上比32bit高效很多;另外,64bit地址总线的寻址空间突破了4G的限制。

因此,对于内存大、数据运算密集的应用场景,64bit的优势非常明显。互联网上有一些基准测试,但这里没有发布。

然而,对于内存较小的系统,在某些情况下64位CPU的效率可能低于32位CPU。

由于64位CPU的地址是64位,指针也是64位,所以编译生成的二进制文件较大,运行时占用内存较多;另一方面,由于64位地址的问题,缓存中可以存储的数据量指令较少,因此更容易导致缓存未命中。

因此,在某些应用场景中,64位CPU更大的寻址空间、更快的数据传输、更快的浮点运算总是与其64位地址/指针导致的缓存未命中特性并存。

为了充分利用64的优势,避免64位地址带来的缓存未命中问题,Intel提出了x32 ABI的概念。

x32 不是ARCH,而是ABI。

x32可以充分利用64位硬件的64位寄存器、64位总线以及64位新指令,以获得更快的数据处理速度。

同时,x32使用32位地址/指针和32位C数据类型,因此缓存未命中不会增加。

x32是一个ABI,其设计包括:内核支持、工具链支持、系统lib支持。现在内核(从3.4开始)和工具链的支持已经可以了。

ARM、AMD、X86、AArch64 概念

AMD,中文名(超微)先进半导体,是除英特尔之外最大的x86架构微处理器供应商,也是除Nvidia之外唯一的独立图形处理供应商。

x86一般是指Intel公司开发的一系列处理器的架构,最早的是1978年发布的“Intel 8086”CPU。早期的处理器就是以此格式命名的,如Intel 8086、80186、80286、80386、80486。这些架构统称为x86。由于数字不能注册为商标,因此该公司为新处理器使用可注册的名称,例如Pentium。

基于x86(常称为i386、x86)、IA-32的32位架构,基于x86、x86-64的64位架构常称为AMD64或Intel64。 AMD首先生产了基于x86架构的64位处理器。但由于竞争,Intel不愿意承认AMD64,直到近几年才推出Intel64。

ARM(英文Advanced RISC Machine,即Acorn RISC Machine)也是一种非常适合移动通信等低成本、高性能、低功耗领域的架构。 ARM的公司是ARM Holding plc,也称为ARM,是一家总部位于剑桥的设计和软件公司。目前已被日本软银收购,软银也是国内互联网巨头阿里巴巴的最大股东。

AArch64是ARMv8的一种执行状态。

为了更广泛地进入企业,需要引入64位架构,并且需要在ARMv8架构中引入新的AArch64执行状态。

AArch64并不是简单的32位ARM架构扩展,而是ARMv8内部的全新架构,完全采用新的A64指令集。这些都源于多年来对现代建筑设计的深入研究。更重要的是,AArch64 是一个单独的执行状态,这意味着某些未来的处理器可能不支持较旧的AArch32 执行状态。

虽然原始64 位ARM 处理器将完全向后兼容,但我们大胆且主动地使AArch64 成为ARMv8 处理器中的唯一执行状态。我们不会在这些系统中支持32 位执行状态,这将牺牲许多有益的实现,例如默认使用更大的64K 页面大小,并使纯64 位ARM 服务器系统免受遗留代码的影响。现在进行这种划分很重要,因为在未来几年内可能会出现仅支持64 位的服务器系统。无需在新的64位架构中实现完整的32位流水线,这将提高未来ARM服务器系统的能源效率。

回想起来,AArch64 成为Fedora ARM 项目中支持的ARM 架构是一个自然的过程:armv5tel、armv7hl、aarch64。新架构命名为:aarch64,与ARM自己选择的主线命名方式一致,同时也考虑到了ARM架构名称与ARM商标分离的愿望。

ARMv8-A 为ARM 架构带来了64 位架构支持,包括:

64位通用寄存器、SP(堆栈指针)和PC(程序计数器)

64位数据处理和扩展虚拟寻址

两种主要的执行状态:

AArch64 - 64 位执行状态,包括异常模型、内存模型、程序员模型以及对该状态的指令集支持

AArch32 — 32 位执行状态,包括异常模型、内存模型、程序员模型以及对该状态的指令集支持

这些执行状态支持三种主要指令集:

A32(或ARM):32 位固定长度指令集,通过不同的架构变体进行增强。 32 位架构执行环境的一部分现在称为AArch32。

T32 (Thumb) 作为16 位固定长度指令集引入,后来在引入Thumb-2 技术时增强为16 位和32 位混合长度指令集。一些32 位架构执行环境现在称为AArch32。

用户评论

一个人的荒凉

x86架构一直是桌面电脑的主力选择吧!

    有10位网友表示赞同!

终究会走-

终于有机会学习一下x86架构了!

    有10位网友表示赞同!

铁树不曾开花

想知道最新的X86有什么进步?

    有17位网友表示赞同!

幸好是你

x86和其他的架构相比优缺点是什么?

    有12位网友表示赞同!

回到你身边

是不是很多应用都是为了x86设计的?

    有15位网友表示赞同!

全网暗恋者

CPU的发展是不是越来越复杂了?

    有15位网友表示赞同!

疲倦了

将来还是x86会一直主宰吗?

    有18位网友表示赞同!

眉黛如画

看这标题,应该是探讨一下x86架构的改进吧!

    有7位网友表示赞同!

念旧情i

最近想换电脑,不知道选哪个架构比较好。

    有19位网友表示赞同!

ok绷遮不住我颓废的伤あ

希望这篇文章能介绍一些架构之间的差异点。

    有17位网友表示赞同!

回忆未来

对CPU的发展历史也很感兴趣啊。

    有11位网友表示赞同!

遗憾最汹涌

学习一下x86架构,可以帮我在编程上更深入了解吗?

    有10位网友表示赞同!

凉凉凉”凉但是人心

听说ARM架构现在也越来越强了是不是?

    有5位网友表示赞同!

浮殇年华

希望这篇文章能让我更理解处理器的工作原理!

    有11位网友表示赞同!

迁心

对新兴的CPU架构也很想去了解一下。

    有10位网友表示赞同!

入骨相思

学习x86架构可以让我自己组建电脑吗?

    有14位网友表示赞同!

安陌醉生

X86是哪个公司发明的呢?

    有13位网友表示赞同!

金橙橙。-

文章会对比不同代数的x86架构吗?

    有12位网友表示赞同!

男神大妈

期待作者深入分析x86架构未来的发展方向!

    有6位网友表示赞同!

【深入解析:x86架构的演变与性能优化】相关文章:

1.蛤蟆讨媳妇【哈尼族民间故事】

2.米颠拜石

3.王羲之临池学书

4.清代敢于创新的“浓墨宰相”——刘墉

5.“巧取豪夺”的由来--米芾逸事

6.荒唐洁癖 惜砚如身(米芾逸事)

7.拜石为兄--米芾逸事

8.郑板桥轶事十则

9.王献之被公主抢亲后的悲惨人生

10.史上真实张三丰:在棺材中竟神奇复活