cache,dram,sram,磁盘,ssd,分布式存储ceph

cache,mesi

在这里插入图片描述
mmu:虚拟地址到物理地址的映射,一般是cpu的一部分。

tlb:缓存热页的物理页号和访问权限,一般集成在mmu中。

现场切换(context switch):需要保存cpu寄存器的内容,pc(程序计数器),堆栈指针,条件码,虚拟地址空间的映射关系。

线程切换:虚拟地址映射关系不需要切换,其他的和现场切换一样。

sbrk和brk:分配或者回收bss段空间。

mmap:在bss和堆栈之间的空间分配。

cache line:地址+标志有效位+修改位+数据。

cache索引:使用hash table实现,匹配索引还需要比较行的地址。

写入策略:写直通(要写到主存)和写回。

指令和数据分开:
在这里插入图片描述

dmb dsb isb

dmb:数据存储屏障,屏障前的存储操作完成后才能提交后面的存储指令,一般用在dma中
dsb:数据同步屏障,屏障前的访问和存储操作都完成才开始执行后面的指令,大部分场景都用这个等级的屏障
isb:指令同步屏障,屏障前的指令已经冲刷流水线和预取后才会预取后面的指令,上下文切换用到,因为上下文切换后的指令需要切换后才知道,无法提前预取。

barrier:编译屏障,生成的指令避免乱序,单核cpu下这个屏障指令就够用了,汇编实现asm volatile(“” : : : “memory”);有个volatile前缀

mb/rmb/wmb:多核cpu,每个核存在自己的cache,这个就需要用到dsb级别的屏障指令

映射策略

1.直接映射(单路组相联):
在这里插入图片描述
哈希算法硬件实现,一般直接取模,速度快。相同索引地址被认为有相同颜色。一段程序如果有多个引用地址容易发生高速缓存颠簸。

2.双路组相联
在这里插入图片描述
减少缓存颠簸。索引命中有可能需要比较两次地址。需要加一个标志位MRU表示最近使用的行。

3.n路组相联
伪随机替换每组两行以上的lru替换。

4.全相联
每行就是一路,只有一组。不需要索引,但是需要搜素所有行比较地址。TLB中会使用。

虚拟高速缓存

在这里插入图片描述

1.使用虚拟地址来索引和标记数据。优点是不用转换成物理地址。问题是多进程虚拟地址可能相同,需要避免手段。

2.虚拟地址标记多进程问题避免1:操作系统需要避免别名现象,就需要在发生切换的时候冲刷高速缓存,降低性能。

3.虚拟地址标记多进程问题避免2:使用标记字段扩充进程键。

4.tlb也带有标志键来区分不同进程。

5.存在的缺点:不能共享高速缓存中的共享数据。

带有物理标记的虚拟高速缓存

在这里插入图片描述
优点是消除几乎所有情况下的歧义问题,冲刷少,并且不需要额外的进程键。缺点是每次都需要经过mmu地址转换。

物理高速缓存

在这里插入图片描述
如果使用总线监视机制,不需要冲洗高速缓存。缺点是每次访问都需要mmu转换。可以通过和虚拟缓存组成的多级缓存来缓解(L1使用虚拟缓存,L2使用物理缓存)。
在这里插入图片描述

smp,numa,超线程

smp有独立L1 cache和L2 cache,共享L3 cache和主存。
numa有独立L1 cache和L2 cache,共享L3 cache,主存分成多块,每个cpu一块,每个cpu优先读写自己那块,需要时也可以访问其他块。
超线程共享L1cache。

注意:L1cache分为指令cache和数据cache,L2以后就不分了

mesi

在这里插入图片描述
在这里插入图片描述

sram dram/sdram/ddr

sram:性能好,功耗高,价格高,容量小,拥有cache
dram/sdram/ddr:用于主存

PCI/PCIE

在这里插入图片描述

在这里插入图片描述

磁盘,ssd,san,nas,nfs,分布式存储ceph

NAS(Network Attached Storage)
SAN(Storage Area Network)

ceph

提供块存储,文件存储,对象存储

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值