Cache
cache以block的方式组织
1. 直接映射:block可以存放在cache的唯一一个块上。
block地址 mod cache的块数
2. 全相连映射:block可以存放在cache的任何块上。
3. 组相连:block存在于cache的唯一的一个组中。
block地址 mod cache的组数
一个组有n个块,称为n路组相连。
cache寻址
cache是4路组相连,有512组,块的大小为32字节。
一个32-bit CPU地址(物理地址),将该地址上数据放入cache。
高18-bit的物理地址,作为标志位。
中间9-bit是cache组的索引。
低5-bit是块内数据的索引。
用中间9-bit索引出一个组。
然后将高18-bit物理地址与组里保存的4个tag进行比较,命中,则找到了block。
最后用低5-bit地址索引出数据。
cache写的两种策略
写穿
写回
cache写缺失
写分配:将数据加载到cache,然后更改。
写不分配:直接修改内存,不加载数据。
两级cache:
第一级cache足够快,与CPU的频率相匹配。
第二级cache足够大,能覆盖大多数mem访问。
虚拟内存
CPU产生虚拟地址(虚拟页号+偏移量),经过内存地址映射,获得物理地址(物理页号+偏移量)。
页表:保存虚拟页到物理页的映射。
TLB:CPU中一个buffer,缓存虚拟页到物理页的映射。