说明:来自培训讲稿,并隐去与公司系统软件相关部分内容。
MIPS架构培训之Cache原理
目的: 了解Cache原理、注意Cache一致性问题
----
直观影响:展示计算机系统存储层次结构图
介绍局部性原理:
时间局部性:for() i
空间局部性:buf[i] buf[i+1]
for (i = 0; i < 10; i++) {
sum += buf[i++];
}
sum具有良好的时间局部性;
buf[]具有良好的空间局部性
问题1:为什么访问cache比访问内存速度快,快多少?
----
----
回到存储层次图上来。计算机系统设计的一个折中,成本和性能的折中。
32位windows程序支持0~4GB地址空间,实际物理内存可能只有1GB或更小。
因为windows使用磁盘为虚拟内存,当访问到的虚拟内存不在物理内存中式OS将所需要的虚拟内存从磁盘调入
物理内存中。这时如果没有可用的物理内存,OS将部分内存保存到虚拟内存(磁盘)中、腾出这部分物理内存给新虚拟内存使用。
上述只是随便提一下,不是培训的重点。
内存的类型:SRAM和DRAM
SRAM:基本电路单元是双稳态电路,6个晶体管实现,die面积大、成本高、;延时极小(门级延时),纯逻辑工艺方便集成到芯片内部。
DRAM:基本电路单元是单稳态电路,1个晶体管+1电容,die面积小、成本低;延时大,工艺复杂很难集成到芯片内存。
Cache要求访问速度快,所以Cache的存储单元通常是SRAM。
因为单位SRAM消耗的die面积较大,现在CPU L1/L2 Cache很难做得太大。Intel现在一般CPU L2 Cache是2MB?
问题:现在CPU顺便都是多少亿个晶体,2MB L2 Cache需要多少个晶体管呢?
IBM的Power7 CPU的L3 Cache使用DRAM,做到32MB L3 Cache。IBM工艺果然牛逼,现在普天之下也就只有IBM可以做到。
介绍性内容End。
----
----
介绍Cache的逻辑结构,以32KB L1 Cache为例、用图展示。
Total cache size = 32KB = 4-ways * 256-sets * 32Byte-cache_line
说明cache的寻址过程:
32bit address被分成Tag | Index | Offset三段。
使用Index选择4-sets(每way中选出一个set),4个选中的set中的Tag域与address中的Tag域比较。
如果有相等则cache命中,根据address中Offset域的从命中的cache line中取出数据给CPU。
否则cache不命中,需要从下一级cache或内存中调入数据。
问题2:如果4