search.png
关于我
menu.png
汇编语言-CPU架构

汇编语言-CPU架构

1、什么是 CPU 架构?

CPU架构是CPU厂商给属于同一系列的CPU产品定的一个规范,主要目的是为了区分不同类型CPU的重要标示。市面上的CPU分类主要分有两大阵营,一个是intel、AMD为首的复杂指令集CPU,另一个是以IBM、ARM为首的精简指令集CPU。两个不同品牌的CPU,其产品的架构也不相同,例如,Intel、AMD的CPU是X86架构的,而IBM公司的CPU是PowerPC架构,ARM公司是ARM架构。

X86系列架构,包括 IA-32IA-64x86-32x86-64IA-32x86-32都属于x86,即英特尔的32位x86架构,x86-64是AMD在其最新的Athlon 64处理器系列中采用的新架构,但这一处理器基础架构还是IA-32(因为intel的产品是市场上的主流,其他厂商需要兼容其32位CPU来最大程度降低用户升级的成本);如Intel的32位服务器Xeon(至强)处理器系列、AMD的全系列,还有VIA的全系列处理器产品都属于x86架构的。

RISC 系列
其中最早的为 MIPS:
MIPS技术公司是美国著名的芯片设计公司,它采用精简指令系统计算结构(RISC)来设计芯片。和英特尔采用的复杂指令系统计算结构(CISC)相比,RISC具有设计更简单、设计周期更短等优点,并可以应用更多先进的技术,开发更快的下一代处理器。MIPS是出现最早的商业RISC架构芯片之一,新的架构集成了所有原来MIPS指令集,并增加了许多更强大的功能。
MIPS处理器是八十年代中期RISC CPU设计的一大热点。MIPS是卖的最好的RISC CPU,可以从任何地方,如Sony, Nintendo的游戏机,Cisco的路由器和SGI超级计算机,看见MIPS产品在销售。随着RISC体系结构遭到x86芯片的竞争,MIPS有可能是起初RISC CPU设计中唯一的一个在本世纪盈利的。和英特尔相比,MIPS的授权费用比较低,也就为除英特尔外的大多数芯片厂商所采用。
MIPS的系统结构及设计理念比较先进,其指令系统经过通用处理器指令体系MIPS I、MIPS II、MIPS III、MIPS IV到MIPS V,嵌入式指令体系MIPS16、MIPS32到MIPS64的发展已经十分成熟。在设计理念上MIPS强调软硬件协同提高性能,同时简化硬件设计。
英国ARM公司是全球领先的半导体知识产权(IP)提供商。全世界超过95%的智能手机和平板电脑都采用ARM架构。ARM设计了大量高性价比、耗能低的RISC处理器、相关技术及软件。2014年基于ARM技术的全年全球出货量是120亿颗,从诞生到现在为止基于ARM技术的芯片有600亿颗。技术具有性能高、成本低和能耗省的特点。在智能机、平板电脑、嵌入控制、多媒体数字等处理器领域拥有主导地位。
ARM处理器是英国Acorn有限公司设计的低功耗成本的第一款RISC微处理器。全称为Advanced RISC Machine。ARM处理器本身是32位设计,但也配备16位指令集,一般来讲比等价32位代码节省达35%,却能保留32位系统的所有优势。
ARM 公司是专门从事基于RISC 技术芯片设计开发的公司,作为知识产权供应商,本身不直接从事芯片生产靠转让设计许可由合作公司生产各具特色的芯片,世界各大半导体生产商从ARM公司购买其设计的ARM微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的ARM微处理器芯片进入市场。全世界有几十家大的半导体公司都使用ARM公司的授权,因此既使得ARM 技术获得更多的第三方工具、制造、软件的支持,又使整个系统成本降低,使产品更容易进入市场被消费者所接受,更具有竞争力。
苹果的M1、M2系列芯片,也是基于Arm架构开发,和此前基于X86的CPU架构相比,功耗更低,被广泛用在了Mac book air系列上。

苹果采取了很多措施,来解决M1版MacBook的兼容性问题。首先,对于现有的X86软件,苹果推出了X86-ARM的指令翻译方案“Rosetta 2”,它可以让ARM平台的macOS,直接运行绝大部分的X86软件。
从苹果的介绍来看,Rosetta 2并不是在软件运行的时候,才翻译指令的,而是在软件安装时就做好了转换,因此它的性能还相当不错。

ARM微处理器的在较新的体系结构中支持两种指令集:ARM指令集Thumb指令集。其中,ARM指令为32位的长度,Thumb指令为16位长度。Thumb指令集为ARM指令集的功能子集,但与等价的ARM代码相比较,可节省30%~40%以上的存储空间,同时具备32位代码的所有优点。

SOC(片上系统)是智能手机的大脑,主要由:中央处理器(CPU)、图形处理单元(GPU)、图像处理单元(ISP)、数字信号处理器(DSP)、神经处理单元(NPU)、视频编码器/解码器、调制解调器等多个组件组合到一台芯片中以节省空间、成本和功耗。现今在智能手机芯片领域高通、三星半导体,华为海思和联发科技是该行业的四大牌子。

ARM设计微处理器内核和其他IP,并将其出售给苹果、高通、华为等公司,ARM实际上并不制造任何东西,他们只是验证设计并将其出售给第三方公司,ARM是CPU的体系结构样式,但是不要将样式与实际的架构混淆。就如所有英特尔CPU都采用x86的体系结构样式,但是每一代都使用不同的体系结构。高通设计、生产、销售智能手机的和核心——SOC移动设备的片上系统半导体产品,然后把SoC卖给小米、OPPO 等手机厂家,从中获取利润。
ARM公司提供CPU的设计标准,授权给其他厂家,所以它是一家CPU设计公司;高通公司是SOC厂商,使用ARM公司的授权,设计集成多种处理器(可以理解为包括CPU)、内存、基带和各种接口模块等,连同系统一起封装成一台整体,这就是我们熟悉的手机芯片,然后转卖给手机生产厂商。

ARM相当于设计公司,高通相当于开发商,台积电相当于建筑公司,手机厂商就是房奴了。高通从ARM拿到图纸,自个改改交给台积电制造CPU,再卖给手机厂商。

主流的手机半导体下游厂商有:美国高通(骁龙),台湾联发科(天玑),三星半导体,华为海思(麒麟)

2、精简指令集和复杂指令集。

计算机指令就是指挥机器工作的指示和命令,程序就是一系列按一定顺序排列的指令,执行程序的过程就是计算机的工作过程。指令集,就是CPU中用来计算和控制计算机系统的一套指令的集合,而每一种新型的CPU在设计时就规定了一系列与其他硬件电路相配合的指令系统。而指令集的先进与否,也关系到CPU的性能发挥,它也是CPU性能体现的一个重要标志。指令的强弱也是CPU的重要指标,指令集是提高微处理器效率的最有效的工具之一。从现阶段的主流体系结构讲,指令集可分为复杂指令集和精简指令集两部分。

复杂指令集计算机,Complex Instruction Set Computer。简称CISC

计算机处理器包含有实现各种功能的指令或微指令,指令集越丰富,为微处理器编写程序就越容易,但是丰富的微指令集会影响其性能。复杂指令集计算机(CISC)体系结构的设计策略是使用大量的指令,包括复杂指令。与其他设计相比,在CISC中进行程序设计要比在其他设计中容易,因为每一项简单或复杂的任务都有一条对应的指令。程序设计者不需要写一大堆指令去完成一项复杂的任务。 但指令集的复杂性使得CPU和控制单元的电路非常复杂。
CISC包括一个丰富的微指令集,这些微指令简化了在处理器上运行的程序的创建。指令由汇编语言所组成,把一些原来由软件实现的常用的功能改用硬件的指令系统实现,编程者的工作因而减少许多,在每个指令期同时处理一些低阶的操作或运算,以提高计算机的执行速度,这种系统就被称为复杂指令系统。
在CISC指令集的各种指令中,其使用频率却相差悬殊,大约有20%的指令会被反复使用,占整个程序代码的80%。而余下的80%的指令却不经常使用,在程序设计中只占20%。

RISC的英文全称为“Reduced Instruction Set Computer”,中文即“精简指令集计算机”。

RISC构架的指令格式和长度通常是固定的(如ARM是32位的指令)、且指令和寻址方式少而简单、大多数指令在一个周期内就可以执行完毕。

RISC体系结构应具有如下特点:
1 采用固定长度的指令格式,指令归整、简单、基本寻址方式有2~3种。
2 使用单周期指令,便于流水线操作执行。
3 大量使用寄存器,数据处理指令只对寄存器进行操作,只有加载/存储指令可以访问存储器,以提高指令的执行效率。
除此以外,ARM体系结构还采用了一些特别的技术,在保证高性能的前提下尽量缩小芯片的面积,并降低功耗:
4 所有的指令都可根据前面的执行结果决定是否被执行,从而提高指令的执行效率。
5 可用加载/存储指令批量传输数据,以提高数据的传输效率。
6 可在一条数据处理指令中同时完成逻辑处理和移位处理。
7 在循环处理中使用地址的自动增减来提高运行效率。

ARM处理器的三大特点是:耗电少功能强、16位/32位双指令集和合作伙伴众多。
1、体积小、低功耗、低成本、高性能;
2、支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件;
3、大量使用寄存器,指令执行速度更快;
4、大多数数据操作都在寄存器中完成;
5、寻址方式灵活简单,执行效率高;
6、指令长度固定。

RISC 和 CISC 的应用

RISC vs CISC==ARM vs X86。Arm基于RISC(精简指令集计算),而Intel(x86)则基于CISC(复杂指令集计算)。Arm的CPU指令是原子的,在指令数和微操作之间有非常紧密的联系。相比之下,CISC提供了更多指令,其中许多指令执行多项操作(例如优化的数学和数据移动)。这将导致更好的性能,但解码这些复杂指令会消耗更多功率。简而言之,基于RISC的ARM体系结构不需要承担CISC处理器执行复杂指令所需的大量负担。x86传统上以峰值性能,Arm能源效率为目标。
ARM处理器广泛用于智能手机等消费电子设备中,平板电脑,多媒体播放器和其他移动设备(例如可穿戴设备)。由于减少了指令集,它们需要更少的晶体管,这使得集成电路——ARM处理器较小的尺寸,降低的复杂性和较低的功耗使其适合于日益小型化的设备。
在Arm与x86竞争的过去十年中,Arm已经赢得了智能手机等低功耗设备的战争。目前,该架构也正在步入需要提高电源效率的笔记本电脑和服务器等设备中。尽管在手机上输了很多钱,但英特尔多年来在低功耗方面的努力也有所改善,Lakefield目前与手机中的传统Arm处理器共享更多的共同点。
就是说,从工程的角度来看,Arm和x86仍然有明显的不同,并且它们继续具有各自的优势和劣势。但是,随着生态系统越来越多地支持这两种架构,两者之间的消费者使用案例变得越来越模糊。
尽管Arm与x86的比较存在交叉之处,肯定是Arm仍然是智能手机行业的首选架构。

3、汇编语言和CPU架构的关系。

汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植

汇编器
典型的现代汇编器(Assembler)建造目标代码,由解译组语指令集的易记码(Mnemonics)到操作码(OpCode),并解析符号名称(Symbolic Names)成为存储器地址以及其它的实体。使用符号参考是汇编器的一个重要特征,它可以节省修改程序后人工转址的乏味耗时计算。基本就是把机器码变成一些字母而已,编译的时候再把输入的指令字母替换成为晦涩难懂机器码。

常见的指令集有:Intel的x86,EM64T,MMX,SSE,SSE2,SSE3,SSSE3 (Super SSE3),SSE4A,SSE4.1,SSE4.2,AVX,AVX2,AVX-512,VMX等指令集;和AMD的x86,x86-64,3D-Now!指令集。
此外还有 Arm、Thump 代表的精简指令集。

各类CPU架构

1、X86

x86泛指一系列基于Intel 8086且向后兼容的中央处理器指令集架构。
Intel从8086开始,286、386、486、586、P1、P2、P3、P4都用的同一种CPU架构,统称X86。
另外除Intel公司之外,AMD和Cyrix等厂家也相继生产出能使用X86指令集的CPU,由于这些CPU能运行所有的为Intel CPU所开发的各种软件,所以电脑业内人士就将这些CPU列为Intel的CPU兼容产品。由于Intel X86系列及其兼容CPU都使用X86指令集,所以就形成了今天庞大的X86系列及兼容CPU阵容。当然在台式(便携式)电脑中并不都是使用X86系列CPU,部分服务器和苹果(Macintosh)机中还使用美国DIGITAL(数字)公司的Alpha 61164和PowerPC 604e系列CPU。
x86架构是重要地可变指令长度的CISC(复杂指令集计算机,Complex Instruction Set Computer)。字组(word, 4字节)长度的存储器访问允许不对齐存储器地址,字组是以低位字节在前的顺序储存在存储器中。向前兼容性一直都是在x86架构的发展背后一股驱动力量(设计的需要决定了这项因素而常常导致批评,尤其是来自对手处理器的拥护者和理论界,他们对于一个被广泛认为是是落后设计的架构的持续成功感到不解)。但在较新的微架构中,x86处理器会把x86指令转换为更像RISC的微指令再予执行,从而获得可与RISC比拟的超标量性能,而仍然保持向前兼容。x86架构的处理器一共有四种执行模式,分别是真实模式,保护模式,系统管理模式以及虚拟V86模式。

2、ARM

ARM公司设计了许多处理器,它们可以根据使用内核的不同划分到各个系列中。系列划分是基于ARM7、ARM9、ARM10、ARM11内核的。后缀数字7、9、10、11表示不同的内核设计。数字升序说明性能和复杂度的提高。ARM8开发出来以后很快就被取代了。

ARM架构包含了下述RISC特性:
读取/储存 架构不支援地址不对齐内存存取(ARMv6内核现已支援)正交指令集(任意存取指令可以任意的寻址方式存取数据Orthogonal instruction set)大量的16 × 32-bit 寄存器阵列(register file)固定的32 bits 操作码(opcode)长度,降低编码数量所产生的耗费,减轻解码和流水线化的负担。大多均为一个CPU周期执行。为了补强这种简单的设计方式,相较于同时期的处理器如Intel 80286和Motorola 68020,还多加了一些特殊设计:
大部分指令可以条件式地执行,降低在分支时产生的负重,弥补分支预测器(branch predictor)的不足。算数指令只会在要求时更改条件编码(condition code)32-bit筒型位移器(barrel shifter)可用来执行大部分的算数指令和寻址计算而不会损失效能强大的索引寻址模式(addressing mode)精简但快速的双优先级中断子系统,具有可切换的暂存器组有个附加在ARM设计中好玩的东西,就是使用一个4-bit 条件编码 在每个指令前头,表示每支指令的执行是否为有条件式的

3、MIPS

MIPS架构(英语:MIPS architecture,为Microprocessor without interlocked piped stages architecture的缩写,亦为Millions of Instructions Per Second的双关语),是一种采取精简指令集(RISC)的处理器架构,1981年出现,由MIPS科技公司开发并授权,广泛被使用在许多电子产品、网络设备、个人娱乐装置与商业装置上。最早的MIPS架构是32位,最新的版本已经变成64位。

MIPS架构20多年前由斯坦福大学开发,是一种简洁、优化、具有高度扩展性的RISC架构。它的基本特点是:包含大量的寄存器、指令数和字符、可视的管道延时时隙,这些特性使MIPS架构能够提供最高的每平方毫米性能和当今SoC设计中最低的能耗。

2002年,中国科学院计算所开始研发龙芯处理器,采用MIPS架构,但未经MIPS公司的授权,遭到侵权的控告。
2009年,中国科学院与MIPS公司达成和解,得到正式授权。

4、RISC-V

RISC-V(发音为“risk-five”)是一个基于精简指令集(RISC)原则的开源指令集架构(ISA)。
与大多数指令集相比,RISC-V指令集可以自由地用于任何目的,允许任何人设计、制造和销售RISC-V芯片和软件。虽然这不是第一个开源指令集,但它具有重要意义,因为其设计使其适用于现代计算设备(如仓库规模云计算机、高端移动电话和微小嵌入式系统)。设计者考虑到了这些用途中的性能与功率效率。该指令集还具有众多支持的软件,这解决了新指令集通常的弱点。

该项目2010年始于加州大学伯克利分校,但许多贡献者是该大学以外的志愿者和行业工作者。
RISC-V指令集的设计考虑了小型、快速、低功耗的现实情况来实做,但并没有对特定的微架构做过度的设计。

版权声明

知识共享许可协议 本文章由作者“衡于墨”创作,转载请注明出处,未经允许禁止用于商业用途

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。
发布时间:2023年01月25日 10:47:37

评论区#

还没有评论哦,期待您的评论!

关闭特效