一 x86与非x86

按照CPU体系架构,服务器主要分为两类:

  • 非x86服务器:使用RISC(精简指令集)或EPIC(并行指令代码)处理器,并且主要采用UNIX和其他专用操作系统的服务器,指令系统相对简单,它只要求硬件执行有限且常用的部分指令,CPU主要有Compaq的Alpha、HP的PA-RISC、IBM的Power PC、MIPS的MIPS和SUN的Sparc,Intel研发的EPIC安腾处理器等。这种服务器价格昂贵,体系封闭,但是稳定性好,性能强,主要用在金融、电信等大型企业的核心系统。
  • x86服务器:又称CISC(复杂指令集)架构服务器,即通常所讲的PC服务器,它是基于PC机的体系结构,使用Intel或其他兼容x86指令集的处理芯片的服务器。目前主要为Interl的E3、E5系列,价格相对便宜,兼容性好,稳定性较差,安全性不算太高。

二 x86与x86_64

x86是指Intek的开发的一种32位指令集,从386时代开始,一直沿用至今,是一种cisc指令集,所有Intel早期的cpu,以及amd早期的cpu都支持这种指令集,在Intel官方文档中称之为(IA-32)。

x86_64是x86 CPU开始迈向64位时面临两种选择:

  • 向下兼容x86
  • 完全重新设计指令集,不兼容x86

AMD先Intel制造出兼容x86的商用CPU,AMD称之为AMD64,且得到用户的认同。

Intel选择设计了一种不兼容x86的全新64位指令集,称之为IA-64(这个就是前面所说的安腾)。由于较AMD晚,同时由于是全新设计的CPU,没有编译器、不支持Windows后来不得不在时机落后的情况下也开始支持AMD64指令集。换了个名字叫x86_64。表示x86指令集的64扩展。

实际上,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个,具体数量有待考证),同样的MMX的寄存器的位数和数量也进行了扩展。此外cpu扩展到64位后,也能支持更多的内存以及其他的种种好处。

对于普通程序来说,CPU位数的扩展,寄存器数量的增加不会带来明显的性能提升,比如IE浏览器、Office办公软件这些。特定的程序才能够充分利用64位的CPU、以及更多寄存器带来的优势。比如MMX除了提升多媒体程序的性能,对矩阵、多项式、向量计算也能带来提升,更多的MMX寄存器、更大的寄存器都有利于SIMD指令的执行,能够提升CPU对数据的吞吐量(RISC指令集的CPU通常数百例,可以有效的缓存中间计算结果,不需要把中间结果写入内存,从而减少内存的访问次数。显著提升性能)

三 x86

x86架构(The x86 architecture)是微处理器执行的计算机语言指令集,指一个Intel通用计算机系列的标准编号缩写,也标识一套通用的计算机指令集合。

1978年6月8日,Intel发布新款16位微处理器“8086”,x86架构诞生。

四 AMD64、x86-64

x86-64有时会简称为x64,是64位微处理器机构及其相应指令集的一种,也是Intel x86架构的延伸产品。

x86-64是1999年由AMD设计,该64位集主要用于扩充IA-32,成为x86-64,后来改为AMD64。AMD64架构在IA-32基上新增64位寄存器,兼容早期的16位和32位软件,可使现有的以x86为对象的编译器转换为AMD64版本。

由于AMD64和Intel64基本上一致,很多软硬件产品都使用一种不倾向任何一方的词汇表达对两种架构的兼容。出于这个目的AMD对这种CPU架构的原始成为由x86_64变体为x86_64。其他公司也使用x64代表x86-64的缩写。

许多操作系统及产品,尤其是那些在Intel进入这块市场之前就引入x86-64支持的,使用amd64同时指代amd64和intel64。

现在的x86CPU在位数上由32/64bit之分,在ARCH上又有x86/x86_64/x64/i386/IA32/IA64/amd64

简单可按照下述理解:

  • x86=i386=IA32
  • amd64=x86_64=x64

64bit的CPU都做了向下兼容32bit的特殊设计,所以在64bit CPU上运行32bit的软件(kernel、app、driver)是没有问题的。反之则不行。

五 64位相比32位比较

  • 64bit拥有64bit的register和bus,在数据传输效率上比32位高很多,64bit的地址总线的寻址空间突破了4G限制,所以大于大内存、密集数据运算的应用场景,64bit的优势是非常明显的。
  • 对于小内存系统,64bit的CPU在某些情况下可能比32bit的CPU效率更低。因为64bit的CPU地址是64位的,指针是64位的,编译生成的二进制文件更大,运行时占用的内存更多;另一方面,因为64bit地址的问题,cache中能存放的指令更少,所以更容易导致cache的miss。

所以在某些应用场景下,64bitCPU的更大寻址空间,更快的数据传递,更快的浮点运算的特性,与其64bit地址的指针所导致的cache miss的特性始终并存。

为了充分利用64bit的优势,又避免64bit导致的cache miss的问题,Intel提出了x32 AB的概念。x32不是一个ARCH,是一个ABI。

x32可以充分使用64bit的寄存器,64bit的总线以及64bit新增的指令,从而获得更快的数据处理速度。同时x32又使用32位的地址指针,32bit的C数据类型,因此cache miss不会增加。

x32是一个BAI,其设计到的部分包括:kernel的支持、toolchain的支持、system lib的支持。

六 ARM、AMD、x86、AArch64概念

  • amd:超微半导体,是除了Intel以外最大的x86架构微处理器的供应商,也是除了英伟达以外仅有的独立图形处理供应商。

  • x86:泛指一系列由Intel公司开发的处理器架构。

    • 基于x86的32位架构(i386,x86)即IA-32。x86-64通常称为amd64或者Intel64。
  • arm:(advanced RISC machine或Acorn RISC machine) 适用于移动通信这种低成本、高性能、低耗电的领域。

  • aarch64:是armv8的一种执行状态。arrch64不是一个单纯的32位ARM架构的扩展,而是ARMv8内全新的架构,完全使用全新的A64指令集。这些都源自于多年对现代架构设计的深入研究。更重要的是,AArch64作为一个分离出的执行状态,意味着一些未来的处理器可能不支持旧的Arrch32状态。

    • ARMv8将64位架构支持引入ARM架构中,其中包括:

      • 64位通用寄存器、SP堆栈指针、PC程序计数器
      • 64位数据处理和扩展的虚拟寻址
    • 两种主要执行状态:

      • AArch64:64位执行状态,包括状态的异常模型、内存模型、程序员模型和指令集支持;
      • AArch32:32位执行状态,包括该状态的一场模型、程序员模型、和指令集支持;
    • 这些执行状态支持3个主要指令集:

      • A32(或ARM): 32位固定长度指令集,通过不同架构变体增强部分32位架构执行环境现在称为AArch32;
      • T32(Thumb):是以16位固定长度指令集的形式引入,随后在引入Thumb-2技术时增强为16位和32位混合长度指令集。部分32位架构执行环境现在称为AArch32;
      • A64:提供与ARM和Thumb指令集类似功能的32位固定长度指令集,随ARMv8-A一起引入,它是一种AArch64指令集。

关于x86、x86_64、x64、amd64和arm64、aarch64相关推荐

  1. 关于x86、x86_64/x64、amd64和arm64/aarch64

    关于x86.x86_64/x64.amd64和arm64/aarch64 转自:https://www.jianshu.com/p/2753c45af9bf 为什么叫x86和x86_64和AMD64? ...

  2. 【CPU】关于x86、x86_64/x64、amd64和arm64/aarch64

    为什么叫x86和x86_64和AMD64? 为什么大家叫x86为32位系统? 为什么软件版本会注明 for amd64版本,不是intel64呢? x86是指intel的开发的一种32位指令集,从38 ...

  3. x86、x86_64/x64、amd64和arm64/aarch64 linux-aarch64 linux-x86-64系统查看,硬件和底层软件,应用软件的理解

    参考: 各种架构整体理解介绍 https://www.jianshu.com/p/2753c45af9bf x86是指intel的开发的一种32位指令集,从386开始时代开始的,一直沿用至今,是一种c ...

  4. x86、x86_64/x64、amd64和arm64/aarch64 linux-aarch64 linux-x86-64

    AMD64=linux-64bit=X86 ARM64=linux-Aarch64=ARM windows 64bit指代的是X86_64=X86 Aarch指的就是ARM architecture. ...

  5. CPU关于x86、x86_64x64、amd64和arm64以及aarch64的区别

    为什么叫x86和x86_64和amd64? 为什么大家叫x86为32为系统? 为什么软件版本会注明for amd64版本,不是intel64呢? ** CPU类型 x86 X64(CISC) ARM( ...

  6. X86和X86_64和AMD64的由来

    为什么叫X86和X86_64和AMD64 为什么大家叫x86为32位系统呢 相信大家在大学里面有很多人都玩过8086(微处理器),这是一个可编程的系统,他是由intel开发的,英特尔出了划时代的808 ...

  7. 【自问自答】armhf/arm64/aarch64异同学习

    问题及解答 armhf/arm64/aarch64 armhf与arm64的不同 arm64 vs. aarch64 ARM,AMD,X86,AArch64的概念 AMD x86 ARM AArch6 ...

  8. X86,x86_64(AMD64),ppc64,i386,ppc64le,ARM,AMD,,AArch64的概念

    x86 泛指一系列由英特尔公司开发的处理器的架构,最早为1978年面世的"Intel 8086"CPU.早期的处理器均是以此格式来命名,如Intel 8086,80186,8028 ...

  9. 概念整理ia32/x86/amd64/ia64/arm64

    x86 早期,1980s年代,x86一般指当时的处理器8088和80286,不过这两个处理器都是16位的.如今,x86通常指32位指令集架构的处理器,比如80386.80386处理器是intel在19 ...

  10. x86_64(intel64、amd64)和ARM64的区别以及发展

    文章目录 区别 引用 区别 ARM64架构 ARM 公司研发的,用的是精简指令集(追求节能,低功耗).通常用于手机.平板等CPU,目前笔记本电脑也会采用ARM64构架的CPU,比如mac m1就是ar ...

最新文章

  1. 在公共区块链中通过加密保护数据
  2. java list有序还是无序_牛批!2w字的Java集合框架面试题精华集(2020最新版),赶紧收藏。...
  3. Silverlight 导入数据时读取txt文件乱码
  4. 【ThinkPHP系列篇】Thinkphp框架的CURD操作(三)
  5. 通过数组名遍历整个数组
  6. 全球及中国太阳能光伏发电产业规模容量调研及投资可行性研究报告2021-2027年
  7. stm32f767中文手册_ALIENTEK 阿波罗 STM32F767 开发板资料连载第五章 SYSTEM 文件夹
  8. 佳士得于5月19日至27日以NFT形式拍卖安迪·沃霍尔作品
  9. ios- uitextview的详细使用方法
  10. C#姓名与机构名称生成专用类
  11. html项目符号正方形,css如何添加列表项目符号
  12. 小结大学计算机基础课程内容报告,WORD制作新年贺卡和个人简历大学计算机基础课程设计报告书...
  13. MySQL参数 之 innodb_buffer_pool_size
  14. 沙箱支付宝支付 前后端分离项目 实战
  15. 【总结】最全1.5万字长文解读7大方向人脸数据集v2.0版,搞计算机视觉怎能不懂人脸...
  16. [转]将Android变成一个网络摄像机:spydroid-ipcamera;能实时传输,几乎没有延迟...
  17. python外星人入侵游戏代码_python外星人入侵 游戏源码
  18. 建设网站-个人电子图书馆
  19. MAC ARM 虚拟机 安装visual studio 2019
  20. WEBRTC音视频实时互动技术

热门文章

  1. 物联网嵌入式STM32资料大全,超100G
  2. 电脑键盘部分按键失灵_键盘按键失灵,教您电脑键盘失灵怎么办
  3. vue项目实现权限控制的几种思路
  4. 那些逃离北上广的人后悔吗,有过遗憾吗?
  5. 计算机远程控制阀门开启,阀门远程控制系统
  6. 混合移动应用中地图导航功能开发与应用
  7. java解析project mpp文件_Java解析Project mpp文件
  8. 全球国家经纬度坐标数据-MySQL
  9. windows下使用命令行禁用笔记本自带键盘
  10. xposed修改手机屏幕分辨率