其他分享
首页 > 其他分享> > ARM MMU架构 -- CPU如何访问MMU及DRAM

ARM MMU架构 -- CPU如何访问MMU及DRAM

作者:互联网

《ARM Architecture Reference Manual ARMv8-A》里面有Memory层级框架图,从中可以看出L1、L2、DRAM、Disk、MMU之间的关系,以及他们在整个存储系统中扮演的角色。

 

 

涉及到的相关文档有:

具体到MMU:

具体到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组成

MMU-500是系统级的存储管理单元,它基于自身寄存器和转换表中的地址映射和存储器属性,将虚拟地址转换成物理地址。
将这个转换过程分为两个阶段:

MMU-500可以将 转换表查找结果缓存到TLB中。
MMU-500包含一下主要部件:

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。

 

标签:MMU,cache,--,TCM,L2,Memory,CPU,500
来源: https://www.cnblogs.com/vaughnhuang/p/15784230.html