【实用干货:关于处理器ARM知识汇总】

linux 徐 自远 709℃

【实用干货:关于处理器ARM知识汇总】

基于鼎易鸿基&万酷电子的扫描枪产品采用的处理器都是ARM32-bit,所以今天我们来简单探讨下关于ARM处理器的相关知识,欢迎各路大神指点交流。

【ARM处理器简介】

ARM处理器是一种低能耗高性能的32位RISC(精简指令系统)处理器,它共有31个32位寄存器,而其中16个可以在任何模式下看到;它的指令为简单的加载和存储指令(从内存加载某个值,执行完操作后再将其放回内存)。一般来讲比等价32位代码节省到35%,却能保留32位系统的所有优势。

【ARM处理器的特点】

1.体积小、低功耗、低成本、高性能

2.之处Thunb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件

3.大量使用寄存器,指令执行速度更快

4.大多数数据操作都在寄存器中完成

5.寻址方式灵活简单,执行效率高

6.指令长度固定

【ARM体系结构】

ARM架构是构建每个ARM处理器的基础。ARM架构支持跨越多个性能点的实现,并已在许多细分市场中成为主导的架构。ARM架构支持非常广泛的性能点,因而可以和最新的微架构技术获得极小的ARM处理器实现和极有效的高级设计实现。实现规模、性能和低功耗是ARM架构的关键特性。

ARM已经开发了架构扩展,从而为JAVA加速(JAZELLE@)、安全性(TruseZone®)、SIMD和高级SIMD(NEON™)技术提供支持。

因为ARM架构与精简指令集计算(RISC)架构类似,所以我们先来说说RISC架构。

RISC是一种设计思想,其目标是设计出一套能够在高时钟频率下单周期执行、简单而有效的指令集。它的设计重点是在于降低由硬件执行的指令的复杂度,因为软件比硬件更容易提供更大的灵活性和跟高的智能。因此,RICS设计对编译器有更高的要求。

RISC是在CISC指令系统基础上大战起来的,因为对CISC机进行测试表明,各种指令的使用频率相当悬殊,最常使用的一些比较简单的指令,他它们本身只占指令总数的20%,但在程序中出现的频度却占80%,复杂的指令系统必然增加未处理器的复杂性,使处理器的研制时间长、成本高,并且复杂的指令需要复杂的操作,必然会降低计算机的速度,所以RISC诞生了。

【RISC和CISC之间的主要区别】

因为ARM架构与精简指令集计算(RISC)架构类似,随意ARM架构包含了RISC的特性:

1.读取/储存 架构

2.不支援地址不对齐内存存取(ARMv6内核现已支援)

3.正交指令集(任意存取指令可以任意的寻址方式存取数据Orthogonal instruction set)

4.大量的16 × 32-bit 暂存器档案(寄存器阵列register file)

5.固定的32 bits 操作码宽(opcode),降低编码数量所产生的耗费,减轻解码和管线化的负担。

6.大多均为一个CPU周期执行。

为了补强这种简单的设计方式,相较于同时期的处理器,还多加了一些特殊设计:

1.大部分指令可以条件式地执行,降低在分支时产生的负重,弥补分支预测器(branch predictor)的不足。

2.算数指令只会在要求时更改条件编码(condition code)

3.32-bit筒型位移器(barrel shifter)可用来执行大部分的算数指令和寻址计算而不会损失效能

4.强大的索引寻址模式(addressing mode)

5.精简但快速的双优先级中断子系统,具有可切换的暂存器组

有个附加在ARM设计中好玩的东西,就是使用一个4-bit 条件编码 在每个指令前头,表示每支指令的执行是否为有条件式的

【ARM体系结构的命名规则】

ARM产品通常以ARM[x][y][z][T][D][M][I][E][J][F][-S]形式出现

【ARM体系的变种】

在ARM体系中增加的某些特定功能称为ARM体系的某种变种(Variant)。

1.Thumb指令集(T变种)

Thumb指令集是将ARM指令集的一个子集重新编码而形成的的一个指令集。ARM指令长度为32位,Thumb指令长度为16位。与ARM指令集相比,Thumb指令集具有一定的局限性,即完成相同的操作,Thunmb指令通常需要更多的指令。因此在对系统运行时间要求苛刻的应用场合,ARM指令集更为合适。

Thumb指令集没有包含进行异常处理时需要的一些指令,所以在异常中断的低级处理时,还是需要使用ARM指令。这种限制决定了Thumb指令需要和ARM指令配合使用。

2.长乘法指令(M变种)

M变种增加了两条用于进行长乘法操作的ARM指令:其中一条指令用于实现32位整数乘以32位整数,生成64位整数的长乘法操作,另一条指令用于实现32位整数乘以32位整数,然后再加上32位整数,生成64位整数长乘操作。

在需要这种长乘法的应用场合,使用M变种比较合适,然而,在有些应用场合中,乘法操作的性能并不重要,在系统实现时就不适合增加M变种的功能。

3.增强型DSP指令(E变种)

E变种包含了一些附加的指令,这些指令用于增强处理器对一些典型DSP算法的处理性能,主要包括:几条新的实现16位数据乘法和乘加操作的指令,实现饱和的带符号数的加减法操作指令。

所谓饱和的带符号数的加减法操作是在加减法操作溢出时,结果并不进行卷绕,而是使用最大的正数或最小的负数来表示。进行数字数据操作的指令,包括双字数读取指令LDRD、双字写入指令STRD和协助处理器的寄存器传输指令MCRR/MRRC、Cache预取指令PLD。

4.JAVA加速器Jazelle(J变种)

ARM的Jazelle技术将Java的优势和先进的32位RISC芯片完美地结合在一起。Jazelle技术提供了Java加速功能,可以得到比普通Java虚拟机高得多的性能。与普通的Java虚拟机相比,Jazelle使Java代码运行速度提高了3倍,而功耗降低了80%

Jazelle技术使得程序员可以在一个单独对的处理器上同时运行Java应用程序、已经建立好的操作系统、中间件以及其他应用程序。与使用协处理器和双处理器相比,使用单独的处理器可以在提供高性能的同时,保证低功耗和低成本。

5.ARM媒体功能扩展(SIMD变种)

ARM媒体功能扩展为嵌入式应用系统提供了高性能的音频/视频处理技术。这就要求处理器能够提供很强的数字信号处理能力,同时还必须保持低功耗,以延长电池的使用时间。ARMd的SIMD媒体功能扩展为这些应用需要提供了解决方案。

SIMD变种的主要特点:可以同时进行两个16位操作数或者4个8位操作数的运算,提供了小数算数运算,用户可以定义饱和运算的模式,两套16位操作数的乘加/乘减运算,32位乘以32位的小数MAC,同时8位/16位选择操作。

https://m.toutiao.com/group/6413149447778468098/?iid=9840790019&app=news_article&tt_from=android_share&utm_medium=toutiao_android&utm_campaign=client_share

 

转载请注明:徐自远的乱七八糟小站 » 【实用干货:关于处理器ARM知识汇总】

喜欢 (0)

苏ICP备18041234号-1 bei_an 苏公网安备 32021402001397号