cache是一个高速的内存块,它包含了很多entries,每一个entrie中都包含: memory地址信息(如tag)、associated data cache的设计考虑了两大原则:空间域(spatial locality): 访问了一个位置后,可能还会访问相邻区域, 如顺序执行的指令、访问一个结构体数据 时间域(Temporal locality):内存区域的访问很可能在短时间内重复,...
cache的大小称之为cahe size,代表cache可以缓存最大数据的大小。我们将cache平均分成相等的很多块,每一个块大小称之为cache line,其大小是cache line size。例如一个64 Bytes大小的cache。如果我们将64 Bytes平均分成64块,那么cache line就是1字节,总共64行cache line。如果我们将64 Bytes平均分成8块,那么cache lin...
Cache:处理器和存储器之间的缓存机制,用于提高访问速率,在ARMv8上会存在多级Cache,其中L1 Cache分为指令Cache和数据Cache,在CPU Core的内部,支持虚拟地址寻址;L2 Cache容量更大,同时存储指令和数据,为多个CPU Core共用,这多个CPU Core也就组成了一个Cluster。 下图浅黄色部分描述的就是一个地址转换的过程。 由于上图...
TLB 又叫做快表或者相联存储器。 TLB 可以放在 CPU 和 CPU 缓存(CPU cache)之间,用于缓存虚拟地址,TLB 可以放在 CPU 和 内存之间,用于缓存物理地址,但是一般缓存虚拟地址比较常见,由此可见,TLB 相当于是又多加了一个缓存层。 虚拟页面在 TLB 中 当一个数据的虚拟地址交由 MMU 进行转换时,MMU 首先会将这个虚...
Bootloader主要是装载内核镜像,镜像数据必须真实写回SDRAM中,所以数据cache必须关闭,而对于指令cache,不存在强制性的规定,但在一般情况下,推荐关闭cache。关于MMU :似乎没什么太大影响。将飞凌提供的UBOOT源码关闭MMU时也能正常运行,只是要将地址修改成物理地址(似乎是用宏和偏移的方式控制的,不必...
arm中又把cache分为指令cache,又称(icache),和数据cache,又称(dcache)。 其中icache可以随时开启,随时关闭,但dcache必须在开启了MMU后,才能启动。 在启动cache后,arm其实才可以称为哈佛结构(数据指令分开) 否则,在不开启的情况下,其实还是冯洛伊曼结构。
1. 什么是MMU? MMU是Memory Management Unit的缩写,中文名称为内存管理单元。MMU是负责处理器(CPU)的内存访问请求的计算机硬件,其功能包括虚拟地址到物理地址的转换(即虚拟内存管理)、内存保护、缓存cache的控制等。 MMU是一个与软件密切相关的硬件部件,也是运行linux等依赖MMU内存管理单元操作系统内核机制的最大部件之...
因为程序1管理者程序1的页表,它不可能去管理程序2的页表。在刚进入程序2的时候,跳转指向的是物理地址,所以也就要求在进入程序2时,需要disable MMU. 再回答第二个问题,什么也要关闭i-cache呢?因为如果是仅仅MMU,i-cache依然也可以推测,它缓存的可能是已经过时了的指令。跳转到程序2后再指向时,可能会崩溃。
l关闭MMU和cache 1.什么是MMU: MMU就是负责虚拟地址(virtual address)转化成物理地址(physical address)。 在这里肯定有人跟我一样的疑惑,既然有物理地址我们访问的时候访问物理地址不就完事了吗?为什么要有虚拟地址的存在,然后还要加个专门的硬件去转换,这就是多此一举吗?