【汇编语言】【ARM扩展资料】硬件组成

【ARM扩展资料】硬件组成

在这里插入图片描述

一、ARM处理器

Arm是英文“臂膀”的意思。在信息技术领域,ARM是先进精简指令集计算机机器(Advanced RISC Machines)的缩写,具有多重含义。

  • (1)ARM公司

    ARM是一家著名的处理器设计公司,成立于1990年,由Apple电脑、Acorn电脑集团和VLSI Technology合资创建,总部位于英国剑桥。

  • (2)ARM处理器

    ARM表示由ARM公司设计的处理器核心。但是ARM公司本身并不制作和销售处理器芯片,而是授权转让设计许可,由与之商业合作的公司开发生产芯片。这种商业模式被称为知识产权(Intellectually Property,IP)许可。ARM合作公司基于ARM处理器核心生产各具特色的芯片,使其获得广泛应用,几乎成为移动通信、便携计算、多媒体数字消费等嵌入式产品的标准解决方案。除了处理器设计,ARM公司也提供外设、存储器控制器等系统级IP许可(授权),还为使用ARM产品的用户提供开发工具、软硬件支持。

  • (3)ARM技术

    ARM处理器基于精简指令集计算机RISC思想,使用32位固定长度的指令格式,指令编码简洁、高效。ARM公司专注于设计,其ARM处理器核心具有体积小、功耗少、成本低、性能高等优点。这些就是富有特色的ARM技术。

1. ARM体系结构

体系结构(Architecture)也称系统结构,可简称为结构或架构,是低级语言程序员所看到的计算机属性,主要是指其指令集结构(ISA,Instruction Set Architecture)。体系结构定义了处理器的编程模型,给出了指令集(指令系统)、寄存器和存储器结构等。同样的体系结构可以有不同实现的多种处理器,每种处理器性能不尽相同,面对的应用领域也就不同,开发人员需要针对具体的项目需求选择最适合的处理器产品。但是,相同体系结构的应用软件是兼容的。

ARM体系结构可以追溯到1985年,已广泛应用于嵌入式设备、智能手机、微型计算机、甚至服务器等。至今,ARM公司共推出8个版本(Version)的体系结构。版本v1和v2只是原型机,没有商品化,也没有产生大的影响。1991年,基于版本v3推出的ARM6处理器得到了普遍应用,版本v4则是被广泛应用的ARM体系结构,目前主要使用v7和v8结构。除了版本号外,还有一些扩展(变种、变型,Variant)版本。例如,版本4的扩展版本v4T,在原来仅使用32位ARM指令集基础上,引入了16位Thumb指令集。再如,版本v5E增加了数字信号处理(DSP)指令。

基于ARM体系结构的不同版本,ARM授权厂商生产了多种系列(Family)的ARM处理器,但是版本号与处理器系列(数字)并不一致。主要的ARM处理器系列有:ARM7系列、ARM9/9E系列、ARM10/10E系列、ARM11系列、SecureCore系列,Intel公司的StrongARM和Xcale系列,最新的Cortex系列等。

2. Cortex系列处理器

2007年,随着采用ARMv7版本体系结构,ARM公司不再使用复杂的数字命名方案,统一使用Cortex作为整个ARM系列处理器商标,其体系结构面向不同应用领域划分成3个分支(Profile)。

  • (1)Cortex-A系列:
    基于ARMv7-A体系结构,A表示应用(Application)。Cortex-A处理器设计用于高性能开放应用程序平台,支持嵌入式操作系统。这些复杂的应用程序需要强大的处理性能,具有MMU单元用于支持虚拟存储器,可选增强的Java支持和安全程序运行环境。产品包括高端智能手机、平板电脑、智能电视、甚至服务器。如Cortex-A8、Cortex-A9、Cortex-A15和Cortex-A17处理器等。

  • (2)Cortex-R系列:
    基于ARMv7-R体系结构,R表示实时(Real-time)。Cortex-R处理器设计用于实时性要求的高端嵌入式系统,例如硬盘驱动器、移动通信的基带控制器、汽车控制系统,它们需要高处理能力、高可靠性和低延迟。如Cortex-R5和Cortex-R8处理器等。

  • (3)Cortex-M系列:
    基于ARMv7-M和ARMv6-M体系结构,M表示微控制器(Microcontroller)。Cortex-M处理器设计用于运行实时控制系统的小规模应用程序,它们需要成本低、能耗少、中断延迟短等特点。如Cortex-M3、Cortex-M4和Cortex-M7处理器等。

2011年,ARM宣布了ARMv8体系结构。所以,目前的Cortex系列处理器包括ARMv7和ARMv8两种版本的体系结构。

  • (1)ARMv8-A体系结构支持32位(AArch32)和64位(AArch64)两种执行状态。其中,32位执行状态使用32位ARM指令集(A32)和32位Thumb指令集(T32),兼容ARMv7-A软件。64位执行状态提供全新的64位指令集(A64),使得ARM技术进入了64位时代。例如,基于ARMv8-A体系结构的处理器有Cortex-A53、Cortex-A57和Cortex-A72等。

  • (2)ARMv8-R体系结构继承了ARMv7-R结构的丰富资源,最新还加入了64位结构。例如,Cortex-R52处理器基于ARMv8-R体系结构,而Cortex-R82则是第一个实现64位ARMv8-R体系结构(兼容ARMv8.4-A扩展)的处理器。

  • (3)ARMv8-M体系结构则是ARMv7-M的改进版,仍然是32位结构,仅支持混合了16位和32位的Thumb指令集(现称为T32指令集)。ARMv8-M体系结构最主要的改进是增加了可选的安全机制,在一个处理器中允许多个安全区域,被称为ARM TrustZone技术。例如,采用ARMv8-M体系结构的有Cortex-M23、Cortex-M33和Cortex-M55等处理器。

3. ARMv8-A处理器

ARM体系结构只是给出了处理器的功能指标,规范了处理器的运行机制,并没有说明处理器如何实现和具体操作。处理器的设计和实现被称为微结构(Micro-architecture),包括采用的高速缓存Cache的个数和容量、流水线技术、可选特性等。

基于ARMv8-A体系结构,ARM公司至今已推出十多种各具特色的Cortex-A处理器。例如,树莓派(Raspberry Pi)是一个只有信用卡大小的微型电脑主板,其4B型号就采用ARM Cortex-A72处理器。

中国华为(Huawei)公司购买了ARMv8的架构授权,自行研制了多种处理器。例如,用于华为泰山(TaiShan)服务器200的华为鲲鹏(Kunpeng)920处理器。

鲲鹏920处理器采用片上系统(SoC,System-on-Chip)形式,集成有两个超级CPU单元和一个超级I/O单元。每个超级CPU单元有6~8个CPU簇(Cluster),每个CPU簇由4个泰山核(Core)和第3级Cache标签存储器组成,每个泰山核由ARM核、分离结构的第1级Cache和共享结构的第2级Cache组成,而ARM核就基于完全知识产权的ARMv8体系结构,仅支持64位执行状态。所以,鲲鹏920最多支持64核。超级I/O单元集成有网络控制器、辅存接口控制器和外设互连接口控制器,提供丰富且强大的I/O能力。

二、结构基础

开发应用程序需要了解的体系结构信息,ARM文档称之为应用层(Application Level)体系结构。

1. 异常

异常(Exception)是处理器正常执行指令时发生了意外情况,需要处理器暂停当前程序的执行,转入异常处理程序进行处理,然后返回继续原来的程序流程。

ARMv8体系结构支持多层次执行特权,称为异常层(EL,Exception Level),共4层、层级向上依次标记为EL0、EL1、EL2和EL3,数字越大特权级别越高。其中,EL0对应最低特权级别,常被称为非特权层,也就是应用程序运行的层次。高于EL0特权级别的异常层也常被称为特权层。

ARMv8体系结构利用4个异常层(级),控制存储系统和处理器资源的访问权限,为软件提供层次化的保护。

在ARMv8体系结构中,根据是否与当前执行的指令相关,将异常分成两种类型:

  • (1)同步异常(Synchronous Exception)

    同步异常是由刚被执行过的指令引起,或者与其有关,是与当前执行的指令流同步发生的异常事件,其返回地址也指示了异常的指令位置。

  • (2)异步异常(Asynchronous Exception)

    有些异常不是因为执行指令引起,而是产生于外部,因此不与当前指令流同步,也意味着无法确定何时发生,这就是异步异常。而且异步异常可以被暂时屏蔽(被禁止、不被允许),即在响应前可处于悬挂状态。

2. 执行状态

执行状态(Execution state)定义了执行环境,包括支持的寄存器字长、支持的指令集,以及异常模型、程序员模型和虚拟存储系统结构等方面。

ARMv8体系结构支持两种执行状态(或称工作模式):64位执行状态(AArch64)和32位执行状态(AArch32)。

  • (1)AArch64:64位执行状态,地址和指令可以使用64位寄存器进行处理,支持64位指令集A64,仍采用32位字长的定长指令编码。

  • (2)AArch32:32位执行状态,地址和指令使用32位寄存器进行处理,支持A32和T32指令集。32位AArch32状态允许向后兼容ARMv7(和更早)的代码。

ARMv8体系结构定义的AArch64执行状态,为ARM处理器引入了全新的64位结构(在绝大多数Linux文档中,AArch64执行状态常被称为ARM64,表示64位ARM结构)。但需要注意,ARM从32位结构转向64位结构时,完全进行了重新设计。因此,两种处理状态具有不同的指令集。

三、寄存器

ARMv8体系结构设计了整数通用寄存器和浮点寄存器,同时配置有若干专用寄存器和大量系统寄存器。

1. 通用寄存器

64位ARM执行状态AArch64提供31个64位通用寄存器。每个寄存器可以作为64位访问,名为X0~X30;也可以只进行低32位的访问,名为W0~W30。其中X30用于过程调用的连接寄存器LR(Link Register)。

数据处理指令中,使用64位寄存器Xn表示进行64位操作,而用Wn表示进行32位操作。读取32位Wn寄存器时,对应64位Xn寄存器高32位被丢弃,也没有改变。写入32位Wn寄存器时,对应64位Xn寄存器高32位被设置为0。整数通用寄存器支持对8、16、32和64位整数(地址)进行操作。

2. 专用寄存器

AArch64并没有一个称为X31(W31)的寄存器。这个“31”编码在许多指令中代表是零值寄存器ZR(Zero register),对应有64位零值寄存器XZR和32位零值寄存器WZR。当ZR作为来源操作数,读得数值零;当ZR作为目的寄存器,写入的结果被丢弃。大部分(不是所有)指令都可以使用零值寄存器。

AArch64有一个64位的程序计数器PC,保存当前指令的主存地址。

堆栈指针SP在AArch64执行状态是一个64位寄存器,其低32位可以通过WSP名称访问。每个异常层有对应的堆栈指针寄存器,加_ELn(n=0~3)区别。

3. 处理状态PSTATE

AArch64的各个处理器状态字段分散保存,可以独立访问,但集中在一起被称为处理状态PSTATE(Process State)。AArch64状态的EL0层下,主要访问4个条件标志位,利用条件标志进行条件分支。条件标志位有负数N、零Z、进位C和溢出V标志。

4. 系统寄存器

系统寄存器保存系统配置和程序状态,提供对系统监控、处理器控制等的支持,主要有系统控制寄存器、调试寄存器、基准定时寄存器、性能监控寄存器等等。大多数系统寄存器在EL0层不能访问。

5. SIMD和浮点寄存器

SIMD和浮点寄存器有32个128位寄存器,取名V0~V31,每个都可以多种形式访问,具有多种形式的名称。

四、存储器组织

ARM处理器定义32位(4个字节)为一个字(Word),所以16位(2个字节)为半字(Halfword),64位(8个字节)为双字(Doubleword),128位(16个字节)为4字(Quadword)。

1. 字节存储顺序

ARMv8-A体系结构既支持小端方式、也支持大端方式。但是,4字节的A64指令字总是采用小端方式存储,所有存储器映射的外设必须也采用小端方式。多数ARM处理器默认采用小端方式,Linux操作系统也默认ARM处理器采用小端方式。

2. 地址边界对齐

A64指令必须字(4字节)对齐,如果从未对齐地址读取指令将导致PC未对齐失效。访问外设地址也要求对齐地址,否则也导致未对齐失效。对存储器的一般数据访问没有要求必须对齐,但如果未对齐访问,仍会产生未对齐失效。有些数据访问则要求地址边界对齐,否则产生未对齐失效。

3. 外设统一编址

ARM处理器采用统一编址方式,将存储器和外设统一编排成一个地址空间。ARMv8体系结构为此提供两种互斥的存储器类型:

  • 正常(Normal)——用于存储器操作,由半导体随机存储器RAM、半导体只读存储器ROM或者闪存构成,支持读写或者只读、执行操作。程序代码只能在正常类型的地址空间存放。

  • 设备(Device)——用于外设操作,外设地址空间通常被配置为设备类型,具有附加的属性。例如,禁止不安全读操作、防止频繁的读写、保持访问顺序和同步需求等。

4. 存储管理

ARMv8-A配合存储管理单元MMU实现了虚拟存储系统,逻辑地址也就是虚拟地址。A64指令集支持64位虚拟地址。对应用程序来说,面对的都是一样的虚拟存储空间。

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BkbK-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值