00. 目录

文章目录

  • 00. 目录
  • 01. 存储系统概述
  • 02. 协处理器(CP15)
  • 03. 存储管理单元(MMU)
  • 04. 高速缓冲存储器(Cache)
  • 05. 附录

01. 存储系统概述

ARM 存储系统有非常灵活的体系结构,可以适应不同的嵌入式应用系统的需要。ARM存储器系统可以使用简单的平板式地址映射机制

(就像一些简单的单片机一样,地址空间的分配方式是固定的,系统中各部分都使用物理地址),也可以使用其他技术提供功能更为强大

的存储系统。例如:
(1)系统可能提供多种类型的存储器件,如 Flash、ROM、SRAM 等。

(2)Cache 技术。

(3)写缓存技术(Write Buffers)。

(4)虚拟内存和 I/O 地址映射技术。

大多数系统通过下面的方法之一可实现对复杂存储系统的管理。

(1)使用 Cache,缩小处理器和存储系统速度差别,从而提高系统的整体性能。

(2)使用内存映射技术实现虚拟空间到物理空间的映射。这种映射机制对嵌入式系统非常重要。通常嵌入式系统程序存放在 ROM/Flash

中,这样系统断电后程序能够得到保存。但是,通常 ROM/Flash 与 SDRAM 相比,速度慢很多,而且基于 ARM 的嵌入式系统中通常把异

常中断向量表放在 RAM 中。利用内存映射机制可以满足这种需要。在系统加电时,将 ROM/Flash 映射为地址 0,这样可以进行一些初始

化处理;当这些初始化处理完成后将SDRAM 映射为地址 0,并把系统程序加载到 SDRAM 中运行,这样可以很好地满足嵌入式系统的需要。

(3)引入存储保护机制,增强系统的安全性。

(4)引入一些机制保证将 I/O 操作映射成内存操作后,各种 I/O 操作能够得到正确的结果。在简单存储系统中,不存在这样的问题。而

当系统引入了 Cache 和 write buffer 后,就需要一些特别的措施。

在 ARM 系统中,要实现对存储系统的管理通常使用协处理器 CP15,它通常也被称为系统控制协处理器(System Control

Coprocessor)。

ARM 的存储器系统是由多级构成的,可以分为内核级、芯片级、板卡级、外设级。下图 所示为存储器的层次结构。

每级都有特定的存储介质,下面对比各级系统中特定存储介质的存储性能。

(1)内核级的寄存器。处理器寄存器组可看做是存储器层次的顶层。这些寄存器被集成在处理器内核中,在系统中提供最快的存储器访

问。典型的 ARM 处理器有多个 32 位寄存器,其访问时间为 ns 量级。

(2)芯片级的紧耦合存储器(TCM)是为弥补 Cache 访问的不确定性增加的存储器。TCM 是一种快速 SDRAM,它紧挨内核,并且保证

取指和数据操作的时钟周期数,这一点对一些要求确定行为的实时算法是很重要的。TCM 位于存储器地址映射中,可作为快速存储器来

访问。

(3)芯片级的片上 Cache 存储器的容量在 8~32KB 之间,访问时间大约为 10ns。高性能的 ARM 结构中,可能存在第二级片外

Cache,容量为几百千字节(KB),访问时间为几十纳秒。

(4)板卡级的 DRAM。主存储器可能是几兆字节(MB)到几十兆字节(MB)的动态存储器,访问时间大约为 100ns。

(5)外设级的后援存储器,通常是硬盘,可能从几百兆字节(MB)到几个吉字节(GB),访问时间为几十毫秒。

02. 协处理器(CP15)

​ ARM 处理器支持 16 个协处理器。在程序执行过程中,每个协处理器忽略属于 ARM处理器和其他协处理器的指令。当一个协处理器硬

件不能执行属于它的协处理器指令时,将产生一个未定义指令异常中断,在该异常中断处理程序中,可以通过软件模拟该硬件操作。例

如,如果系统不包含向量浮点运算器,则可以选择浮点运算软件模拟包来支持向量浮点运算。CP15 即通常所说的系统控制协处理器

(System Control Coprocessor),它负责完成大部分的存储系统管理。除了 CP15 外,在具体的各种存储管理机制中可能还会用到其他

一些技术,如在 MMU 中除了 CP15 外,还使用了页表技术等。

在一些没有标准存储管理的系统中,CP15 是不存在的。在这种情况下,针对 CP15 的操作指令将被视为未定义指令,指令的执行结果不

可预知。CP15 包含 16 个 32 位寄存器,其编号为 0~15。实际上对于某些编号的寄存器可能对应多个物理寄存器,在指令中指定特定的

标志位来区分这些物理寄存器。这种机制有些类似于 ARM 中的寄存器,当处于不同的处理器模式时,某些相同编号的寄存器对应于不同

的物理寄存器。

CP15 中的寄存器可能是只读的,也可能是只写的,还有一些是可读/可写的。在对协处理器寄存器进行操作时,需要注意以下几个问题:

(1)寄存器的访问类型(只读/只写/可读可写)。

(2)不同的访问引发不同的功能。

(3)相同编号的寄存器是否对应不同的物理寄存器。

(4)寄存器的具体作用。

03. 存储管理单元(MMU)

​ 在创建多任务嵌入式系统时,最好用一个简单的方式来编写、装载及运行各自独立的任务。目前大多数的嵌入式系统不再使用自己定制

的控制系统,而使用操作系统来简化这个过程。较高级的操作系统采用基于硬件的存储管理单元(MMU)来实现上述操作。

​ MMU 提供的一个关键服务是使各个任务作为各自独立的程序在自己的私有存储空间中运行。在带 MMU 的操作系统控制下,运行的任

务无须知道其他与之无关的任务的存储需求情况,这就简化了各个任务的设计。

​ MMU 提供了一些资源以允许使用虚拟存储器(将系统物理存储器重新编址,可将其看成一个独立于系统物理存储器的存储空间)。

MMU 作为转换器,将程序和数据的虚拟地址(编译时的连接地址)转换成实际的物理地址,即在物理主存中的地址。这个转换过程允许

运行的多个程序使用相同的虚拟地址,而各自存储在物理存储器的不同位置。

​ 这样存储器就有两种类型的地址:虚拟地址和物理地址。虚拟地址由编译器和连接器在定位程序时分配;物理地址用来访问实际的主存

硬件模块(物理上程序存在的区域)。

04. 高速缓冲存储器(Cache)

​ Cache 是一个容量小但存取速度非常快的存储器,它保存最近用到的存储器数据副本。对于程序员来说,Cache 是透明的。它自动决定

保存哪些数据、覆盖哪些数据。现在 Cache通常与处理器在同一芯片上实现。Cache 能够发挥作用是因为程序具有局部性。所谓局部性就

是指在任何特定的时间,处理器趋于对相同区域的数据(如堆栈)多次执行相同的指令(如循环)。

​ Cache 经常与写缓存器(Write Buffer)一起使用。写缓存器是一个非常小的先进先出(FIFO)存储器,位于处理器核与主存之间。使

用写缓存的目的是,将处理器核和 Cache从较慢的主存写操作中解脱出来。当 CPU 向主存储器做写入操作时,它先将数据写入到写缓存

区中,由于写缓存器的速度很高,这种写入操作的速度也将很高。写缓存区在 CPU 空闲时,以较低的速度将数据写入到主存储器中相应

的位置。

​ 通过引入 Cache 和写缓存区,存储系统的性能得到了很大的提高,但同时也带来了一些问题。例如,由于数据将存在于系统中不同的

物理位置,可能造成数据的不一致性;由于写缓存区的优化作用,可能有些写操作的执行顺序不是用户期望的顺序,从而造成操作错误。

05. 附录

5.1 ARM处理器开发详解笔记

【ARM】Cortex存储系统相关推荐

  1. i.MX6UL: i.MX 6UltraLite处理器 - 低功耗,安全,Arm® Cortex®-A7内核

    i.MX6UL: i.MX 6UltraLite处理器 - 低功耗,安全,Arm® Cortex®-A7内核 概述 i. MX6UltraLite作为i.MX6系列的扩展,一系列高性能.超高效的处理器 ...

  2. iar升级芯片库_IAR 发布支持ARM Cortex系列的开发工具包

    2009年9月, 瑞典乌普萨拉,IAR Systems正式推出支持Cortex-M系列芯片的IAR Embedded Workbench.IAR Embedded Workbench for Cort ...

  3. 关于ARM Cortex系列产品

    ARM Cortex系列的三款产品全都集成了Thumb®-2 指令集,可满足各种不同的日益增长的市场需求.ARM Cortex系列的三款处理器: • ARM Cortex-A 系列:针对复杂操作系统以 ...

  4. 意法半导体STM32 ARM Cortex 32位微控制器

    STM32系列32位微控制器基于Arm® Cortex®-M处理器,旨在为MCU用户提供新的开发自由度.它包括一系列产品,集高性能.实时功能.数字信号处理.低功耗/低电压操作.连接性等特性于一身,同时 ...

  5. ​ ARM Cortex系列那么多处理器,该怎么区分?

    关注.星标公众号,直达精彩内容 来源:嵌入式资讯精选 最近因为要为芯片选定核,所以就在了解哪些核合适且性价比好,这是一个需要结合产品各类技术.市场分析的活,看似简单却还是需要一些储备的,今天选了一篇A ...

  6. linux 返回非法指令,linux – ARM Cortex A7在内核模式下返回PMCCNTR = 0,在用户模式下返回非法指令(即使在PMUSERENR = 1之后)...

    我想在Raspberry Pi 2上读取循环计数寄存器(PMCCNTR),它有一个ARM Cortex A7内核.我为它编译了一个内核模块,如下所示: #include #include int in ...

  7. STM32MP157C-DK2->Develop on Arm® Cortex®-A7之 C语言开发uart例程

    编写C代码开启STM32MP157C-DK2开发板上的uart7的接收功能,并将收到的数据打印到控制台,并通过uart7发送出"uart"字符串. STM32MP157C-DK2的 ...

  8. ARM® Cortex®-M内核单片机STM32家族介绍,覆盖STM32F、STM32H、STM32L全系列

     STM32是ARM®Cortex®-M内核单片机.目前提供10大产品线(F0, F1, F2, F3, F4, F7, H7, L0, L1, L4),超过700个型号.STM32产品广泛应用于 ...

  9. 32 位 ARM® Cortex®-M0+内核 单片机

    PY32F003 系列微控制器采用高性能的 32 位 ARM® Cortex®-M0+内核,宽电压工作范围的 MCU.嵌入高达 32Kbytes flash 和 4Kbytes SRAM 存储器,最高 ...

  10. 2021-07-13 ARM cortex三个版本A、R、M简单介绍

    ARM cortex三个版本A.R.M简单介绍 一.Cortex系列组合大体上分为三种类别.        1. Cortex-A 面向性能密集型系统的应用处理器内核 Application Proc ...

最新文章

  1. 从JSON数据中取出相关数据
  2. sql中常用的几种连接
  3. 有向图的广度优先遍历_图的两种遍历方式
  4. ASP.NET Core MVC I\/O编程模型
  5. C#LeetCode刷题之#645-错误的集合(Set Mismatch)
  6. python中copytree的用法_python复制文件的方法实例详解
  7. python读取身份证照片信息_Python身份证照片识别信息,python
  8. windows 使用 tree 命令显示目录和文件
  9. Onvif协议:IPC客户端开发之图像抓拍
  10. 大数据行业最顶尖明星人才TOP20
  11. 缺省的linux系统中,linux缺省的文件系统是
  12. linux热迁移137error VMware vCenter Converter 问题小结
  13. java生命游戏_生命游戏
  14. BZOJ1135: [POI2009]Lyz
  15. PC端QQ用某个账号登陆未响应情况解决
  16. 2022-2027年中国电动汽车充电站及充电桩行业市场调研及未来发展趋势预测报告
  17. 计算机网络——常考的面试题
  18. MongoDB的可视化工具Robo 3T安装
  19. 查看HDFS文件系统数据的三种方法
  20. 生成 HashCode 一致的字符串

热门文章

  1. JQ 为未来元素添加事件处理器—事件委托
  2. http post,get,put,delete区别(收集整理)
  3. oracle主备库查询,oracle11g dataguard 备库数据同步的检查方法
  4. python数据库模糊查询_原创:Python编写通讯录,支持模糊查询,利用数据库存储...
  5. python论文格式检查系统_论文格式检查软件
  6. 【C语言练习】将100~200之间的素数输出
  7. 7-26 有重复的数据I (10 分)
  8. python小结_python简单小结
  9. C语言学习之输出4X5的矩阵
  10. php7 imagick安装,php扩展imagick安装for windows7