最新存储金字塔架构
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200101153450545.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTEwMTE4Mjc=,size_16,color_FFFFFF,t_70)
存储金字塔v1及速度
Instruction cycle timings 在 TRM 中 有表述
Size of caches/TLBs 在 TRM 中 有表述
内存金字塔是按照 Ln 划分的
一开始没有 cache
L0 寄存器 访问速度 xns
L1 Main memory 访问速度 100ns
对于Cortex M0 M3 M4的我知道可以在其《技术参考手册》> 程序员模型 >指令集摘要里面查看,但是到了M7,他告诉我去ARM-V7-M的手册中找
为了给大家一个直观的印象,我们把CPU的一个时钟周期看作一秒。
那么,从L0 register 读信息就是1s
从L1 cache读取信息就好像是拿起桌上的一张草稿纸(3秒);
从L2 cache读取信息则是从身边的书架上取出一本书(14秒);
而从主存中读取信息则相当于走到办公楼下去买个零食(4分钟).
L1 L2 L3 cache 就是 On-chip-memory , 也就是 on-chip-ram
https://www.zhihu.com/question/20075426
DRAM DDR DDR3 DDR4 DDR5
存储金字塔v2及速度
以上很多资料里面对 write buffer 的描述 是 缓解 对 磁盘的 冲击,但是 arm核心架构中提到的 write buffer 是 环节 对 主存的冲击.
CPU register的速度一般小于1ns,主存的速度一般是65ns左右。速度差异近百倍。
因此,上面举例的3个步骤中,步骤1和步骤3实际上速度很慢。
当CPU试图从主存中load/store 操作时,由于主存的速度限制,CPU不得不等待这漫长的65ns时间。
如果我们可以提升主存的速度,那么系统将会获得很大的性能提升。
如今的DDR存储设备,动不动就是几个GB,容量很大。
如果我们采用更快材料制作更快速度的主存,并且拥有几乎差不多的容量。
其成本将会大幅度上升。我们试图提升主存的速度和容量,又期望其成本很低,这就有点难为人了。
因此,我们有一种折中的方法,那就是制作一块速度极快但是容量极小的存储设备。那么其成本也不会太高。这块存储设备我们称之为cache memory。
cache 并不是说 等待 cpu 获取主存数据时才去获取内存数据,而是根据一些策略去获取主存数据.
相当于 cache 一直从 主存拿数据与指令,然后cpu 一直从cache 拿数据与指令.
然后实际性能完全能够
Cache 的命中率除了与 Cache 的容量有关外,还与地址映象的方式有关。
目前, Cache 存储器容量主要有 256KB 和 512KB 等。这些大容量的 Cache
存储器,使 CPU 访问 Cache 的命中率高达 90 %,大大提高了 CPU 访问
数据的速度,提高了系统的性能。
在 register 和 主存中间 加一层cache ,命中率可达90%,形成了以下金字塔架构
register
L1 cache
Memory
在 cache 和 主存中间 再加一层cache ,命中率可达98%,形成了以下金字塔架构
register
L1 cache
L2 cache
Memory
现实情况
main memory是磁盘的缓存,cache是main memory的缓存,CPU寄存器是对cache的缓存。
我们读数据的时候,如果需要知道其位置,则可以从
register ,L1cache ,L2cache, ... ,main Memory, HardDisk
我们写数据的时候,如果需要知道其位置,则可以从
register ,write_buffer ,cache,main Memory, HardDisk