当前位置: 首页 > article >正文

ARMv8高速缓存(Cache)和内存管理单元(MMU)

ARMv8高速缓存(Cache)和内存管理单元(MMU)

1 Cache

在这里插入图片描述

1.1 Cache概述
处理器的存储器的时钟频率的不一致导致了二者访存速率的差异,Cache则是用于在一定成本范围内弥补此种差异的高速缓存器件。

“…the frequency of external buses and of memory devices has not scaled
to the same extent…, A cache is a small, fast block of memory that
sits between the core and main memory.”

Cache的缓存工作方式由Cachde控制器(Cache Controller)控制,若Cache中存有处理器访问的地址上的数据/指令(即cache命中,称为hit),则将其提供给处理器,否则(即miss)向下一层次存储器请求补充处理器访问的数据/指令到Cache。

部分命中时,先向处理器提供已存有的数据,再向下一层次处理器请求补充。

“…the core first retrieves that part of the cache line that contains
the requested data…then read the rest of the cache line, in the
background.”

1.2 Cache策略
Cache策略(Cache Policies)即Cache的工作规则,规定Cache何时填充数据(即填充策略)、如何响应STR指令(即写策略)。填充策略有Write Allocation、Read Allocation两种。写策略有Write-back、Write-through两种。

Write Allocation指在Write Miss发生时填充新行(Cache填充的最小单位就是行)。

Read Allocation指在Read Miss发生时填充新行。

Write-back指仅在行被修改后并将被覆盖/清除时更新到下一级存储器,其余时候对数据的修只发生在处理器和Cache之间(会标记为dirty)。

Write-through指同时修改Cache和下一级存储器(不会标记为dirty)。

1.3 POC和POU
POC和POU是用于描述系统局部某个存储器的地位的概念。在不同的访问者(处理器、DMA等)能访问同一个存储器的时候,这个存储器就是Point of Coherency, POC。而Cache、TLB能访问的同一个存储器,则称为Point of Unification, POU。

详细记一下:有了POU这个概念,我们就能更方便地描述invalidation和cleaning等和Cache相关的操作了。在有这个概念之前,描述存储器和Cache的关系需要说“上级高速缓存关联的下级存储器“,现在我们可以直接说”这个Cache的POU“,如果限定了语境,直接说”POU“就知道是指的哪个存储器了。总之这就是一个存储层级体系概念,没有太多特别的。

1.4 Cache的Invalidation和Cleaning
Invalidation指通过清除Cache行的valid位。

Cleaning指把标记为dirty的Cache行写到下一层次存储器并清除dirty位。

相关操作指令见DEN0024A_v8_architecture_PG ARM® Cortex® -A Series Version: 1.0 Programmer’s Guide for ARMv8-A Table 11-1


2 MMU

在这里插入图片描述

2.1 架构特性
MMU用于控制内存的Cache策略、内存属性、访问权限并提供虚拟地址映射功能。

“…controls the cache policy, memory attributes, and access
permissions, and provides Virtual to Physical Address translation. “

ARMv8中与MMU关联的寄存器主要有映射控制寄存器(Translation Control Register,TCR_ELx)、用于存放一些预置的内存属性的内存属性间接寄存器(Memory Attribute Indirection Register,MAIR_ELx)、存放映射表基地址的映射表基地址寄存器(Translation Table Base Register,TTBR0_ELx)。

地址映射最大位宽48bits,支持4KB./16KB/64KB三种粒度(Granule Size),最深4级映射。
除ARMv7-A支持的ARMv7-A Long Descriptor format和Armv7-A Short Descriptor format之外,ARMv8新增一种映射表描述符ARMv8-A AArch64 Long Descriptor format。

2.2 访问权限控制
内存属性包含的访问权限属性需要特别关注,支持分别对EL0的非特权访问和EL1/2/3D的特权访问设置访问权限,如下表。

APUnprivileged(EL0)Privileged(EL1/2/3)
00No AccessR/W
010R/WR/W
10No AccessRO
11RORO

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dgrt.cn/a/391968.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章:

ARMv8高速缓存(Cache)和内存管理单元(MMU)

ARMv8高速缓存(Cache)和内存管理单元(MMU) 1 Cache 1.1 Cache概述 处理器的存储器的时钟频率的不一致导致了二者访存速率的差异,Cache则是用于在一定成本范围内弥补此种差异的高速缓存器件。 “…the frequency of ex…...

云业务贡献40.5%增长:亚马逊2022年财报亮点解读

中国农历春节已经进入尾声,又到了各大上市公司扎堆发布财报的季节。2023年2月2日,亚马逊正式对外公布2022年第4季度财报。其中,亚马逊在该季度的净销售收入增长1492亿美元,相比上年同期的1374亿美元,增长幅度为9%&…...

Learning C++ No.3【类和对象No.2】

引言: 北京时间:2023/2/4/9:52,起床时间8:55,今天为什么可以起这么早呢?原因就是我没有把我的闹钟给放在枕边,哈哈哈!但是好像导致一个8:20的闹钟闹了半个小时,哈哈哈!上…...

c++ 控制台应用程序静态库使用实例

1、新建工程: 之后点击【完成】即可 2、新建类TestHelper (1)头文件 #pragma once class TestHelper { public: TestHelper(); ~TestHelper(); int AddSum(); }; (2)cpp文件 #include "stdafx.h&qu…...

分享116个图片切换JS特效,总有一款适合您

分享116个图片切换JS特效,总有一款适合您 116个图片切换JS特效下载链接:https://pan.baidu.com/s/1aPAL2Ag_7U8kLcIqHIyxnw?pwdyqxe 提取码:yqxe Python采集代码下载链接:https://wwgn.lanzoul.com/iKGwb0kye3wj 咪咕音乐官…...

测试贵在坚持,看一名普通测试人员的经历

时光飞逝,物是人非,蓦然间,2022年已成为历史。 前言… 说实话,本来是不想写这篇总结的,因为我的2022年过得实在是糟心,从四月开始到年底,我的经历都是磕磕绊绊,总结起来无非就是…...

Grafana 系列文章(七):Grafana Explore 中的 Tracing

👉️URL: https://grafana.com/docs/grafana/latest/explore/trace-integration/ 📝Description: Tracing in Explore Explore 允许你将 tracing 数据源的痕迹可视化。这在 Grafana v7.0中可用。 支持的数据源有。 JaegerTempoX-RayZipkin 关于如何为…...

Windows常用小技巧集锦(持续更新ing...)

诸神缄默不语-个人CSDN博文目录 本文介绍一些在Windows系统的学习与使用过程中,会碰到的小问题和解决方案。 最近更新时间:2023.2.5 最早更新时间:2023.2.5 windows系统下使用cd命令_龙虾小兵的博客-CSDN博客_cd windows解决win10快速访问…...

JavaSE笔记总结02(Collection集合List、Set、Map)

7 常用API 7.1 Object类 toString方法 概念 常用方法:1.public String toString():--默认是返回当前对象在堆内存的地址信息-- 默认是地址信息格式:类的全限名内存地址-- 直接输出对象名称,默认会自动调用toString--开发中直接输出对象&am…...

Connext DDS开发指南(2)—发布/订阅

Connext DDS支持的最基本的通信模式是发布/订阅publish/subscribe模式。 发布/订阅是一种通信模式,数据生产者“发布”数据,数据消费者“订阅”数据。这些发布者和订阅者不需要提前了解彼此;它们在运行时动态地dynamically发现彼此。他们共享的数据用“主题Topic”来描述,发…...

深入理解Go语言中的slice【5】【切片】

文章目录切片Slice创建切片的各种方式切片初始化通过make来创建切片用append内置函数操作切片(切片追加)超出原 slice.cap 限制,就会重新分配底层数组,即便原数组并未填满。slice中cap重新分配规律:切片拷贝slice遍历&…...

ruoyi-vue版本(十六)权限认证,数据权限相关的知识

目录 1 岗位管理sys_post2 用户岗位表sys_user_post3 菜单管理sys_menu3.1 菜单的新增3.2 菜单的列表展示4 部门管理sys_dept4.1 部门列表展示4.1 部门树状图展示5 角色管理sys_role5.1 新增角色5.2 数据权限6 角色菜单表sys_role_menu7 角色部门表sys_role_dept8 用户角色表 s…...

基于html+css的图片放大展示

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…...

基于机智云智能宠物屋的APP控制系统

机智云物联网自主研发的开发板Gokit在智能家居系统管理方面起到了关键优势,集成多种通信,智能恒湿,风速调节,耗材管理,温湿度显示,手机APP或微信小程序控制,语音控制,缺水管理等等功…...

C#问题——Unity中 继承MonoBehaviour的类,Awake和构造函数的先后顺序,以及非继承类中构造函数实例化的时间.

声明:本文为个人笔记,用于学习研究使用非商用,内容为个人研究及综合整理所得,若有违规,请联系,违规必改。 Unity中 继承MonoBehaviour的类,Awake和构造函数的先后顺序,以及非继承类中构造函数实例化的时间.…...

Web3D工厂可视化,工厂三维可视化大屏,工厂模型展示,统计图表,人员定位,人车轨迹运动,电子围栏

前言随着物联网技术和WebGL技术的不断发展,工厂三维可视化大屏正在成为一个越来越受欢迎的解决方案。利用Three.js这一优秀的WebGL渲染引擎,可以帮助我们在Web端实现高质量的三维可视化效果,为工厂管理和生产优化提供重要的帮助。本文将介绍如…...

python3-算法刷题-字符串-更新中

459. 重复的子字符串 https://leetcode.cn/problems/repeated-substring-pattern/ 给定一个非空的字符串 s ,检查是否可以通过由它的一个子串重复多次构成。 示例 1: 输入: s “abab” 输出: true 解释: 可由子串 “ab” 重复两次构成。 思路: 如果…...

5级流水线ARM组织

所有的处理器都要满足对高性能的要求。指定ARM7为止,在ARM核中使用的3级流水线的性价比是很高的。但是,为了得到更高的性能,需要重新考虑处理器的组织结构。执行一个给定的程序需要的时间由下面公式决定: Tprog(NinstC…...

QJson详细介绍

QJson JSON(JavaScript Object Notation, JS对象简谱)是一种轻量级的数据交换格式。它基于 ECMAScript(European Computer Manufacturers Association, 欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言…...

ChatGPT 辅助编程

前言 总结一些在编程中使用 ChatGPT 的命令,以助力提升开发效率。 文章目录前言一、作用二、举例1. 写代码2. 解析程序3. 找 Bug4. 语言转换5. Python 实现人工智能相关代码一、作用 利用 ChatGPT 快速生成代码,程序员拿到代码后稍加修改完善实现自己的…...