ARM MMU架构 -- CPU如何访问MMU及DRAM
《ARM Architecture Reference Manual ARMv8-A》里面有Memory层级框架图,从中可以看出L1、L2、DRAM、Disk、MMU之间的关系,以及他们在整个存储系统中扮演的角色。
涉及到的相关文档有:
- 《ARM Architecture Reference Manual ARMv8-A》:E2 The AArch32 Application Level Memory Model和G3 The AArch32 System Level Memory Model两个章节,从总体架构上介绍了ARMv8-A Memory系统。
- 《Cortex-A53 TRM》:6 Level 1 Memory System、5 Memory Management Unit、7 Level 2 Memory System三个章节介绍了MMU/L1/L2三个模块在A53上的实现。
具体到MMU:
- 《MMU-500 TRM》:MMU-500技术参考手册。
- 《ARM SMMUv2》:System MMU 架构规格 version 2.0。
具体到L2:
- 《L2C-310 TRM》:L2控制器技术参考手册。
在Linux内核中查看L1/L2/L3缓存:
1 lscpu
2 ...
3 L1d cache: 32K
4 L1i cache: 32K
5 L2 cache: 256K
6 L3 cache: 6144K
7 ...
或者读取节点:
1 cat /sys/devices/system/cpu/cpu0/cache/indexx/size
2 cat /sys/devices/system/cpu/cpu0/cache/indexx/level
MMU-500组成
- VA:Virtual Address
- PA:Physical Address
- IPA:Intermediate Physical Address
MMU-500是系统级的存储管理单元,它基于自身寄存器和转换表中的地址映射和存储器属性,将虚拟地址转换成物理地址。
将这个转换过程分为两个阶段:
- Stage 1 - 将输入的VA转换成PA或者IPA输出。
- Stage 2 - 将IPA转换成PA。
- 或者结合Stage 1和Stage 2将输入的VA->IPA->PA。
MMU-500可以将 转换表查找结果缓存到TLB中。
MMU-500包含一下主要部件:
- TBU(Translation Buffer Unit) - 包含缓存页表的TLB,MMU-500给每个Master配置了一个TBU,专属于Master。
- TCU(Translation Control Unit) - 控制和管理地址转换,一个MMU-500仅包含一个TCU。
- Interconnect - 多TBU到TCU之间的连接。
Master可能包括GPU、Video engines、DMA Controller、LCD Controller、Network Controller等。
参考
关于CPU Cache -- 程序猿需要知道的那些事 • cenalulu's Tech Blog
阅读ARM Memory(L1/L2/MMU)笔记_weixin_34174132的博客-CSDN博客
关于TCM
TCM(Tighyly Coupled Memory,紧耦合内存)是一个固定大小的RAM,紧密地耦合至处理器内核,提供与cache相当的性能。
相比于cache的有点是,程序代码可以精确地控制什么函数或什么代码放在哪儿。当然TCM永远不会被踢出主存储器,他会有一个用户预设性能,而不是cache那样是统计特性的提高。
TCM对于以下几种情况的代码是非常有用、也是需要的:可预见的实时处理(中断处理)、时间可预见(加密算法)、避免cache分析(加密算法)、或者只是要求高性能的代码(编解码功能)。
随着cache大小的增加以及总线性能的规模,TCM将会变得越来越不重要,但是他提供了一个让你权衡的机会。
如何使用TCM?
在支持TCM的处理上,包含头文件#include <asm/tcm.h>。
使用__tcmdata、__tcmconst、__tcmfunc、__tcmlocalfunc修饰符,将变量、函数放到特定的tcm段中。
还可以使用tcm_alloc/tcm_free申请释放内存。
《对ARM紧致内存TCM的理解》- 关于TCM的介绍,以及和Cache相比的优劣。
《内核中tcm(arm)与sram代码》- 如何使用TCM。
最新文章
- foreach
- php 验证(检查)日期格式是否正确
- 调试SQLSERVER (二)使用Windbg调试SQLSERVER的环境设置
- 【Alpha版本】 第五天 11.11
- Web前端相关
- The Datastore
- 17、手势(Gesture)
- 20151207jquery 学习笔记 Ajax
- asp.net mvc 通过修改路由规则来实现页面的URL多参数传递
- 【转】android UI进阶之实现listview中checkbox的多选与记录--不错
- javascript获取url地址问好后面的值,包括问号
- freemarker错误七
- [转载]Word直接发布新浪博客(以Word 2013为例)
- pgpool-II主备流复制的架设
- nginx服务器的作用与简单搭建(windows)
- spring boot 搭建
- Cesium 实践
- css3 flex布局结合transform生成一个3D骰子
- MySQL C API(23)
- python抓取内涵段子文章
热门文章
- 接口测试神器Apifox,亲测好用!
- Spring Boot2配置Swagger2生成API接口文档
- Openstack Neutron:二层技术和实现
- 《Java基础——选择语句》
- 2. 在 Kubernetes 上安装 Gitlab
- 跳转控制语句break
- Codeforces Round #708 (Div. 2)
- POJ1734 Sightseeing trip (Floyd求最小环)
- 记一次 .NET 某工控视觉软件 非托管泄漏分析
- [Android开发学iOS系列] ViewController