一、ARM和X86

X86 和 ARM 都是CPU设计的一个架构。X86 用的是复杂指令集。ARM用的是精简指令集。
指令集其实就是机器码,机器码上是汇编,汇编之上是程序语言例如java、c、c#。
复杂指令集是在硬件层面上设计了很多指令,所以编程会简单些。
精简指令集是在硬件层面上设计的指令比较少,所以编程会复杂些。
除了指令集的区别,X86 和 ARM的设计理念和应用场景也不同。
ARM的硬件框架更加耦合,没有’桥“的存在,所以可扩展性%不好,也就是说换个硬件平台就得重新设计,但它的功耗低,所以特别适合在手机上用。
X86体系庞大,设计完整,历史悠久,所以他有很多第三方软件%可以用,一个体系可以用在各种电脑上,可移植性强。主机一般都用它。
Intel是在X86的推动着,他和windows在一起,可以说称雄电脑市场。ARM以前和linux结盟,搞嵌入式,但现在因为,ANdroid的异军突起,ARM在移动端焕发新的生机。

二、x86和x64

x86和x64架构是指英特尔和AMD创建的两种使用最广泛的指令集架构(ISA)。ISA指定机器代码的行为,并定义软件如何控制CPU。ISA是硬件和软件接口,定义了CPU可以做什么以及如何做。

什么是x86架构?

x86是一种用于计算机处理器的ISA,最初由英特尔于1978年开发。x86架构基于英特尔的8086(因此得名)微处理器及其8088变体。起初,它是用于16位处理器的16位指令集,后来发展到32位指令集。

位数表示CPU每个周期可以处理多少信息。例如,32位CPU每个时钟周期最多可传输32位数据。

由于其能够在笔记本电脑、家用PC和服务器等几乎任何计算机上运行,x86架构在众多微处理器制造商中变得流行起来。
x86架构最大的限制是它最多可以处理4096MB的RAM。由于支持的组合总数为2^32(4,294,967,295),因此32位处理器具有42.9亿个内存位置。每个位置存储一个字节的数据,相当于大约4GB的可访问内存。今天,术语x86表示任何能够运行x86指令集的32位处理器。

什么是x64架构?

 x64(x86-64的缩写)是基于x86的指令集架构,扩展为启用64位代码。它于2000年首次发布,引入了两种操作模式-64位模式和兼容模式,允许用户运行16位和32位应用程序。
由于整个x86指令集仍然在x64指令集中实现,因此较旧的可执行文件运行几乎没有性能损失。

x64体系结构支持比x86体系结构更多的虚拟和物理内存,允许应用程序在内存中存储大量数据。此外,x64将通用寄存器的数量扩展到16个,从而提供了进一步的增强和功能。

x64体系结构总共可以使用2^64字节,相当于160亿千兆字节(16EB)的内存。更高的资源利用率使其适合为需要访问大量资源的超级计算机和机器供电。x64架构允许CPU每个时钟周期处理64位数据,远远超过x86。

x86与x64

虽然这两种体系结构类型都基于32位集,但一些关键差异使它们适用于不同的用途。它们之间的主要区别在于每个时钟周期可以处理的数据量和处理器的寄存器宽度。x86和x64指令集体系结构之间的主要区别。处理器将常用数据存储在寄存器中,以便快速访问。x86体系结构上的32位处理器具有32位寄存器,而64位处理器具有64位寄存器。因此,x64允许CPU存储更多数据并更快地访问它。寄存器宽度还决定了计算机可以使用的内存量。
下表概述了x86和x64体系结构集之间的主要区别:

x86架构 linux x86架构和arm架构_gpu

 x86与x64应用和局限性

由于它们的功能不同,并且在资源访问、速度和处理能力方面存在差异,因此每个体系结构集用于不同的目的:
x86
世界上许多PC仍然基于x86操作系统和CPU。
用于游戏机。
云计算段仍然使用x86架构。
较旧的应用程序和程序通常在32位体系结构上运行。
它更适合仿真。
32位仍然是音频制作中的首选,因为它与较旧的音频设备兼容。
x64
越来越多的PC使用64位CPU和基于x64体系结构的操作系统。
所有现代移动处理器都使用x64架构。
它用于为超级计算机提供动力。
用于视频游戏机。
虚拟化技术基于x64体系结构。
它更适合较新的游戏引擎,因为它速度更快,性能更好。

x86 还是 x64 更好?

尽管 x86 和 x64 都有优势,但未来不会容忍限制,这意味着 x86 最终将很少使用或完全丢弃。此外,x64 速度更快,可以分配更多 RAM 内存,并通过 64 位数据总线具有并行处理能力,使其成为两种架构类型之间的更好选择。
选择要安装的操作系统类型时,最好安装 64 位操作系统,因为它可以同时运行 32 位和 64 位软件。另一方面,基于 x86 的操作系统仅运行 32 位软件。
总体而言,x64 比 x86 功能强大得多,利用所有已安装的 RAM,提供更多的硬盘空间、更快的总线速度和整体更好的性能。

内容参考链接

三、Intel和AMD

amd和Intel这俩公司的渊源很深,早期时Intel先是自己搞了个x86架构,然后amd拿到了x86的授权也可以自己做x86了。接着intel向64位过渡的时候自己搞了个ia64(x64架构)但是因为和x86架构不兼容市场反应极差,amd率先搞了x86的64位兼容(32和64的混合架构)也就是后来的x86-64,后来Intel也拿到了生产这货的授权(i和a两家专利交叉的很严重),也搞了x86-64,因为amd先搞出来的所以x86-64也叫amd64

目前amd和Intel是世界上最大的两家x86和x86-64的cpu厂家(intel比较给力,四分天下有其三)。除了这两家还有几家小的公司也有x86的授权,比如via,不过技术水平真的很一般。

四CPU和GPU

CPU(Central Processing Unit-中央处理器),是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit)。它的功能主要是解释计算机指令以及处理计算机软件中的数据。

x86架构 linux x86架构和arm架构_x86架构 linux_02

GPU(Graphics Processing Unit-图形处理器),是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上图像运算工作的微处理器。

x86架构 linux x86架构和arm架构_x86架构 linux_03

gpu和cpu的区别

1、缓存
CPU有大量的缓存结构,目前主流的CPU芯片上都有四级缓存,这些缓存结构消耗了大量的晶体管,在运行的时候需要大量的电力。
GPU的缓存就很简单,目前主流的GPU芯片最多有两层缓存,而且GPU可以利用晶体管上的空间和能耗做成ALU单元,因此GPU比CPU的效率要高一些。

2、响应方式
CPU要求的是实时响应,对单任务的速度要求很高,所以就要用很多层缓存的办法来保证单任务的速度。
GPU是把所有的任务都排好,然后再批处理,对缓存的要求相对很低。

3、浮点运算方式
CPU除了负责浮点整形运算外,还有很多其他的指令集的负载,比如像多媒体解码,硬件解码等,因此CPU是多才多艺的。CPU注重的是单线程的性能,要保证指令流不中断,需要消耗更多的晶体管和能耗用在控制部分,于是CPU分配在浮点计算的功耗就会变少。
GPU基本上只做浮点运算的,设计结构简单,也就可以做的更快。GPU注重的是吞吐量,单指令能驱动更多的计算,相比较GPU消耗在控制部分的能耗就比较少,因此可以把电省下来的资源给浮点计算使用。

4、应用方向
CPU所擅长的像操作系统这一类应用,需要快速响应实时信息,需要针对延迟优化,所以晶体管数量和能耗都需要用在分支预测、乱序执行、低延迟缓存等控制部分。
GPU适合对于具有极高的可预测性和大量相似的运算以及高延迟、高吞吐的架构运算。

下面是一张芯片总览:

x86架构 linux x86架构和arm架构_gpu_04