zoukankan      html  css  js  c++  java
  • 嵌入式成长轨迹29 【嵌入式学习阶段】【中嵌第三阶段】【ARM技术概述】

    一 ARM体系结构的发展历史和技术特征
    1 ARM发展的历程
    最近10多年来ARM技术的突出成果表现在:
    使用“Thumb”的新型压缩指令格式,使得应用系统开发可降低系统成本和功耗;
    ARM9、ARM10、Strong-ARM和ARM11等系列处理器的开发,显著地提高了ARM的性能,使得ARM技术在面向高端数字音、视频处理等多媒体产品的应用中更加广泛;
    更好的软件开发和调试环境,加快用户产品开发;
    更为广泛的产业联盟使得基于ARM的嵌入式应用领域更加广阔;
    嵌入在复杂SoC中、基于ARM核的调试系统代表着当今片上调试技术的前沿。

    第一片ARM处理器是1983年10月到1985年4月间在位于英国剑桥的Acorn Computer公司开发 。
    1990年,为广泛推广ARM技术而成立了独立的公司 。
    20世纪90年代, ARM快速进入世界市场

    在ARM的发展历程中,从ARM7开始,ARM核被普遍认可和广泛使用 。
    1995年 StrongARM 问世 。
    XScale是下一代StrongARM芯片的发展基础 。
    ARM10TDMI是ARM处理器核中的高端产品 。
    ARM11是ARM家族中性能最强的一个系列 。

    ARM技术还将不断发展。在嵌入式领域,ARM已取得了极大的成功,造就了IP核商业化、市场化的神话,迄今为止,还没有任何商业化的IP核交易和使用达到ARM的规模。据最新统计,全球有103家巨型IT公司在采用ARM技术,20家最大的半导体厂商中有19家是ARM的用户,包括德州仪器,意法半导体,Philips,Intel等。ARM系列芯片已经被广泛的应用于移动电话、手持式计算机以及各种各样的嵌入式应用领域,成为世界上销量最大的32位微处理器。

    2 ARM体系结构的技术特征
    ARM的体系结构采用了若干Berkeley RISC处理器设计中的特征
     Load/store体系结构
    固定的32位指令
    3地址指令格式
    也放弃了其它若干Berkeley RISC特征
    寄存器窗口
    延迟转移
    所有的指令单周期执行

    二 ARM体系结构不同版本的发展概述
    1 ARM体系结构的基本版本
    版本1,本版本包括下列指令:
    乘法指令之外的基本数据处理指令;
    基于字节,字和多字的存储器访问操作指令(Load/Store);
    子程序调用指令BL在内的跳转指令;
    完成系统调用的软件中断指令SWI。

    版本2 ,与版本1相比版本2(2a)增加了下列指令:
    乘和乘加指令;
    支持协处理器的指令;
    对于FIQ模式,提供了额外的影子寄存器;
    SWP指令及SWPB指令。

    版本3较以前的版本发生了大的变化
    地址空间扩展到了32位,但除了版本3G外的其他版本是向前兼容的,也支持26位的地址空间;
    分开的当前程序状态寄存器CPSR(Current Program Status Register)和备份的程序状态寄存器SPSR(Saved Program Status Register),SPSR用于在程序异常中断时保存被中断的程序状态;
    增加了两种异常模式,使操作系统代码可以方便地使用数据访问中止异常、指令预取中止异常和未定义指令异常;
    增加了MRS指令和MSR指令用于完成对CPSR和SPSR寄存器的读写。
    修改了原来的从异常中返回的指令。

    版本4。与版本3相比,版本4增加了下列指令
    有符号、无符号的半字和有符号字节的load和store指令。
    增加了T变种,处理器可以工作于Thumb状态,在该状态下的指令集是16位的Thumb指令集。
    增加了处理器的特权模式。在该模式下,使用的是用户模式下的寄存器。

    版本5主要由两个变型版本5T、5TE组成
    相比与版本4,版本5的指令集有了如下的变化:
    提高了T变种中ARM/Thumb混合使用的效率。
    增加前导零记数(CLZ)指令,该指令可使整数除法和中断优先级排队操作更为有效;
    增加了BKPT(软件断点)指令;
    为协处理器设计提供了更多的可供选择的指令;
    更加严格地定义了乘法指令对条件码标志位的影响。

    ARM体系版本6是2001年发布的。新架构v6在降低耗电量的同时还强化了图形处理性能。通过追加有效进行多媒体处理的SIMD功能,将语音及图像的处理功能提高到了原机型的4倍。ARM体系版本6首先在2002年春季发布的ARM11处理器中使用。除此之外,v6还支持多微处理器内核。

    2 ARM体系结构的演变
    1)Thumb指令集(T变种)
    Thumb指令集是把32位的ARM指令集的一个子集重新编码后而形成的一个特殊的16位的指令集
    2)长乘指令(M变种)
    长乘指令是一种生成64位相乘结果的乘法指令(此指令为ARM指令),M变种增加了两条长乘指令
    3)增强型DSP指令(E变种)
    E变种的ARM体系增加了一些增强处理器对典型的DSP算法处理能力的附加指令。
    4)Java加速器Jazelle(J变种)
     ARM的Jazelle技术是Java语言和先进的32位RISC芯片完美结合的产物 。
    5)ARM媒体功能扩展(SIMD变种)

    3 ARM体系结构的命名规则

    表示ARM/Thumb体系版本的命名格式的ARM/Thumb体系版本由下面几部分组成的:
    基本字符串ARMv。
    基本字符串后为ARM指令集版本号,目前是1-6的数字字符。
    ARM指令集版本号后为表示所含变种的字符。由于在ARM体系版本4以后,M变种成为系统的标准部件,所以字符M通常也不单独列出来。
    最后使用的字符x表示排除某种功能。

    三 Thumb技术介绍
    ARM的RISC体系结构的发展中已经提供了低功耗、小体积、高性能的方案。而为了解决代码长度的问题,ARM体系结构又增加了T变种,开发了一种新的指令体系,这就是Thumb指令集,它是ARM技术的一大特色

    1 Thumb的技术概述
    Thumb是ARM体系结构的扩展。它有从标准32位ARM指令集抽出来的36条指令格式,可以重新编成16位的操作码。这能带来很高的代码密度
    ARM7TDMI是第一个支持Thumb的核,支持Thumb的核仅仅是ARM体系结构的一种发展的扩展,所以编译器既可以编译Thumb代码,又可以编译ARM代码
    支持Thumb的ARM体系结构的处理器状态可以方便的切换、运行到Thumb状态,在该状态下指令集是16位的Thumb指令集 。

    2 Thumb技术的特点
    在性能和代码大小之间取得平衡,在需要较低的存储代码时采用Thumb指令系统,但有比纯粹的16位系统有较高的实现性能,因为实际执行的是32位指令,用Thumb指令编写最小代码量的程序,却取得以ARM代码执行的最好性能

    与ARM指令集相比.Thumb指令集具有以下局限
    完成相同的操作,Thumb指令通常需要更多的指令,因此在对系统运行时间要求苛刻的应用场合ARM指令集更为适合;
    Thumb指令集没有包含进行异常处理时需要的一些指令,因此在异常中断时,还是需要使用ARM指令,这种限制决定了Thumb指令需要和ARM指令配合使用。

    四 ARM处理器工作状态
    ARM处理器核可以工作在以下2种状态
    1) ARM状态
    32位,ARM状态下执行字对准的32位ARM指令;
    2)Thumb状态
    16位,Thumb状态下执行半字对准的16位Thumb指令。在Thumb状态下,程序计数器PC使用位1选择另一个半字。

    在程序执行的过程中,处理器可以在两种状态下切换 。
    ARM和Thumb之间状态的切换不影响处理器的模式或寄存器的内容。
    ARM指令集和Thumb指令集都有相应的状态切换命令。
    ARM处理器在开始执行代码时,只能处于ARM状态。

    ARM处理器在两种工作状态之间切换方法:
    进入Thumb状态:
    当操作数寄存器Rm的状态位bit[0]为1时,执行BX Rm指令进入Thumb状态(指令详细介绍见第三章)。如果处理器在Thumb状态进入异常,则当异常处理(IRQ,FIQ,Undef,Abort和SWI)返回时,自动切换到Thumb状态。
    进入ARM状态:
    当操作数寄存器Rm的状态位bit[0]为0时,执行BX Rm指令进入ARM状态。如果处理器进行异常处理(IRQ,FIQ,Undef,Abort和SWI),在此情况下,把PC放入异常模式链接寄存器LR中,从异常向量地址开始执行也可以进入ARM状态。

    五 ARM处理器工作模式
    CPSR(当前程序状态寄存器)的低5位用于定义当前操作模式

    除用户模式外的其他6种模式称为特权模式 。
    特权模式中除系统模式以外的5种模式又称为异常模式,即 :
    FIQ(Fast Interrupt Request)
    IRQ(Interrupt ReQuest)
    SVC(Supervisor)
    中止(Abort)
    未定义(Undefined)

  • 相关阅读:
    layui2.5 修改layuicms
    linux ubuntu安装node npm cnpm nvm nrm yarn vue-cli vue-router
    浅析微信支付:(余额提现)企业付款到微信用户零钱或银行卡账户
    pdo类的使用
    生成url的二维码图片
    点击提交按钮后 禁用提交按钮3秒后 再启用
    Maven项目Update Project后JRE System Library自动变回1.5解决办法
    一步步搭建 Spring Boot maven 框架的工程
    AspectJ报错:error at ::0 can't find referenced pointcut XXX
    SpringBoot 文件上传实践
  • 原文地址:https://www.cnblogs.com/zeedmood/p/2633896.html
Copyright © 2011-2022 走看看