http://www.eefocus.com/embedded/323223

16.2  ARMv6增加的系统支持

为了满足目前无线网络、汽车电子和消费类电子产品不断增长的市场需要,ARM公司在ARMv6中引入新的技术和结构组成,包括增强的DSP支持和对多处理器环境的支持。

16.2.1  存储管理

由于在ARMv6体系结构中引入新的存储管理机制,处理器的整体性能得到提高。在新的体系结构中,平均指令预取和数据等待时间大幅度减少,存取过程中Cache命中率显著提高。由于存储机制的改善,系统整体性能的提高达到30%。

另外,存储系统的改善使系统总线(BUS)使用更加合理,从而减少了系统总线使用频度,降低了系统功耗。

图16.2显示了ARMv6体系结构存储系统示意图。

图16.2  ARMv6存储系统示意图

1.ARMv6 L1 Cache

ARMv6采用“分层”的存储管理,存储层次的最顶层在处理器内核中。该存储器被称为寄存器文件(register file)。这些寄存器被集成在处理器内核中,在系统中提供最快的存储访问。

ARMv6体系结构处理器使用物理索引Cache(Physically tagged caches),即地址转换在CPU和Cache之间,这样就减少了CPU在运行大的操作系统时由于上下文切换而带来的系统开销。使用这种物理Cache,可以使CPU的整体性能提高近20%。

为了减少在内容转换时,刷新Cache的CPU开销,ARMv6将L1 Cache构建为使用物理寻址的存储系统。系统中设有TCM作为物理可寻址的快速访问内存,存在于存储系统中,作为Cache的补充。无论Cache还是TCM,都可以配置为指令和数据分离的Harvard架构或指令和数据统一的冯·诺依曼架构。另外,L1 DMA子系统可以使数据在没有CPU参与的情况下,直接和TCM进行数据传输。

2.页表格式

在ARMv6体系结构中,页表格式也发生了变化。图16.3显示了新的一级页表格式。

图16.3  ARMv6页表格式

协处理器CP15中的XP-bit可以指定是否使用这种新的页表格式。如果不设置该位,则系统继续使用ARMv5架构的页表格式。

从图16.3可以看出,新的页表格式增加了以下特性:

·  XN:从不执行位(execute never bit)。

·  nG:非全局地址映射位(not Global bit for address matching)。

应用程序空间指示ASID(Application Space Identifier)是ARMv6体系中增加的又一关键特性。当nG位置位时,地址转换使用虚拟地址和ASID相结合的方法以减少上下文切换的时间。同时,应用程序空间指示提供了一种任务可知调试方法(task-aware debugging)。

有关ARMv6存储系统的详细内容请参阅ARM相关文档。

3.增加的页表基地址寄存器

为了提高地址转换的处理速度,ARMv6体系结构中增加了一个新的页表基地址寄存器,以存储二级页表的基地址。CP15同时支持TTBR0和TTBR1。专门的控制寄存器用来保存用户设定的整数N,N的取值范围为0~7。当N的值不等于0时,0~232-N的地址空间使用TTBR0,而其他空间使用TTBR1进行传输控制。一级页表根据N取值的不同,占有128bytes~16KB存储空间。

16.2.2  多处理单元支持

由于片上系统Soc结构的复杂化,ARM内核现在经常被用于有多个处理单元的设备,这些处理单元竞争使用系统的共享资源。为了满足多处理单元任务间同步的需要,Load/Store互斥指令引入到新的ARMv6体系结构中来。新指令包括:

·  LDREX:加载互斥指令。

·  STREX:存储互斥指令。

LDREX指令从存储器中装载一个值到寄存器,在处理这个数据时,不会有任何其他因素改变该值。STREX指令存储一个值到寄存器,并返回一个指示值。

16.2.3  异常处理和中断

ARMv6体系结构提供了对向量中断(vectored Interrupt)的支持。向量中断控制器(VIC,Vectored Interrupt Controller)由CP15的寄存器1中的VE – bit来控制。当向量中断控制器使能时,该控制器可以向CPU提供发生中断的向量。

另外,在ARMv6的体系结构中,程序状态寄存器CPSR扩展了A位来控制Abort异常。这种机制类似于程序状态寄存器CPSR中I和F bit对IRQ和FIQ的控制。

操作系统通常在堆栈中保存一次中断或异常处理的返回状态。ARMv6增加了新的指令来提高这类操作的效率。这种操作在中断/调度程序驱动系统中,出现的频率是很高的。这些新增加的指令包括:

·  SRS:保存返回状态在特定模式的堆栈中。

·  RFE:异常返回。

·  CPSID/CPSIE:改变处理器状态,开中断或关中断。

16.2.4  混和大小端支持

AMRv6体系结构中增加了同时处理大端和小端数据的能力。新增加了指令SETEND来设置一段代码处理数据的字节排列方式,另外还增加了一些单独的处理指令来提高在混和大小端环境下的处理效率。

指令SETEND的标准格式如下:

SETEND<endian_specifier>

该指令根据参数<endian_specifier>的值来改变默认的数据端格式。

SETEND指令的设置直接和程序状态寄存器CPSR中新增加的E位相对应。E位对数据大小端的控制如图16.4所示。

16.2.5  对媒体处理的支持

为了进一步提高体系结构的DSP和媒体处理能力,单指令流多数据流(SIMD)技术被引入到ARMv6体系结构中。这种技术对于处理大量复杂运算和并行地存储大流量数据十分有效。

图16.4  E位对数据大小端的控制

ARMv6对SIMD的实现简单而又不失其灵活性。它将现存的32位ARM数据通道划分成4个8位或2个16位的片段,为SIMD操作增加了独立的数据总线。这种实现方法硬件代价小,遵循了ARM低功耗、高计算效率的设计原则。

为了支持SIMD算法,ARMv6中引入一些新的指令,有关这些指令的详细信息请参阅ARM的相关文档

ARM体系结构的发展之:ARMv6增加的系统支持相关推荐

  1. Linux驱动(2)--ARM的架构发展以及如何评价处理器

    ARM的架构发展以及如何评价处理器 1. 如何评价一个处理器 2.ARM处理器的架构发展 1. 如何评价一个处理器 评价一个处理器需要从以下四个方面来考虑: ① 频率 一个处理器的主频和处理速度有关, ...

  2. 尝试梳理下ARM处理器的发展历史

    大家好,这篇文章是我的朋友Michael Yao写的,我觉得非常不错,分享给大家. 1. 前言 本文尝试简单梳理下ARM处理器的发展历史.架构的演进,包括不同处理器的应用方向,但我们重点还是围绕Cor ...

  3. 看看这篇ARM体系结构你就都明白了

    1.arm 体系结构 -- 简介 ARM 处理器是 Acorn 计算机有限公司面向低预算市场设计的第一款 RISC 微处理器.ARM 体系结构从最初开发到现在有了很大的改进,并仍在完善和发展. 为了清 ...

  4. 计算机组成原理 — ARM 体系结构

    目录 文章目录 目录 ARM ARM 的架构 x86 架构与 ARM 架构的区别 ARM 的技术实现 ARM ARM 架构过去称作进阶精简指令集机器(Advanced RISC Machine,更早称 ...

  5. 最全ARM体系结构知识:汇编、架构、异常级别和安全状态

    关注.星标公众号,直达精彩内容 来源:智能软件研究中心 | 直接来源:华为开发者社区 作者:罗宇哲 01 ARM汇编指令 操作系统中硬件相关的部分集中体现在汇编指令和对寄存器的操作中,因此我们对ARM ...

  6. 嵌入式:ARM体系结构详解

    文章目录 指令集与指令集架构 主要计算机指令集架构 PC及服务器领域 嵌入式领域 新生代 ARM体系结构的演变 ARM发展的历程 指令集与指令集架构 指令:就是指挥计算机工作的命令,程序就是一系列按一 ...

  7. 01 ARM体系结构与汇编指令

    注:本文章是由笔者学习朱有鹏arm的学习笔记,特此感谢朱老师. 关于汇编: 1.汇编的实质是机器指令(机器码)的 助记符,是一款CPU的本质特征. 2.不同CPU的机器指令集设计不同,因此 汇编程序不 ...

  8. ARM简介及其发展历史

    前言 ARM名声很大,最近在学习STM32,也借机梳理一下关于ARM的各种概念和信息. 本文主要内容:ARM一词的含义,ARM的发展历史,ARM cortex系列处理器简介与ARM在不同市场的应用情况 ...

  9. 【华为云技术分享】ARM体系结构基础(1)

    鲲鹏处理器采用ARM架构,欧拉系统可以运行在鲲鹏架构的服务器上,想要了解欧拉操作系统对硬件的支持,首先需要了解一些ARM架构的基础知识.操作系统中硬件相关的部分集中体现在汇编指令和对寄存器的操作中,因 ...

  10. arm体系结构与编程_ARM体系结构基础(1)

    本文转载自:智能软件研究中心 鲲鹏处理器兼容ARM架构,openEuler操作系统可以运行在鲲鹏架构的服务器上,想要了解openEuler对硬件的支持,首先需要了解一些ARM架构的基础知识.操作系统中 ...

最新文章

  1. live555源码分析----RSTPServer创建过程分析
  2. 动作分析 姿态估计_关于大片人物特效少不了的人体姿态估计,这里有一份综述文章...
  3. 分块试水--CODEVS5037 线段树练习4加强版
  4. 《梦断代码》读书笔记
  5. 搜索学习(ing...)
  6. 《Linux内核设计与实现》读书笔记(十六)- 页高速缓存和页回写
  7. pip指定包的安装路径
  8. cmd c语言 文件,DSP,如何编写CMD文件!(转)
  9. IOZONE测试工具使用方法(转载)
  10. python print format
  11. php cli输出百分比,CLI模式。能不能修改已经输出的内容?
  12. 华为路由器防火墙配置命令总结(上)
  13. 开源应自由!Apache、OpenStack 基金会权威回应美国出口管制
  14. Python3中.whl文件介绍
  15. TCP/IP网络编程项目式教程(微课版)
  16. win8计算机休眠的区别,win8系统的休眠和睡眠有什么区别?如何用?
  17. 计算机作业SHOP,面向Job-shop车间最优作业切换的成组调度研究
  18. 联想y430p黑苹果之自定义屏幕亮度
  19. Elasticsearch 7.9 之 Frozen indices
  20. 3D目标检测-BEVFormer、BEVDepth

热门文章

  1. 软件产品测试报告模板
  2. 原生JS实现登录功能,本地Cookie保存登录信息---【调用网易云API接口】---超详细讲解
  3. idea的导包快捷键+自动导包设置
  4. Python win32com模块安装
  5. 基于java网上商城源码设计
  6. AMESim2020MATLAB2020b联合仿真设置
  7. 【LeetCode】题解合集(JavaScript版)
  8. 微动探测原理及仪器介绍
  9. robocode java_如何建造你的第一个Java Robocode?
  10. SQK Server实现 LeetCode 175 组合两个表