- 论坛徽章:
- 0
|
说明:来自培训讲稿,并隐去与公司系统软件相关部分内容。
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个选中的set中的Tag域与address中的Tag域相等的不知一个会出现什么情况? 本节是本次培训的重点。 ----
---- Cache的类型 write-back write-through
有人容易混淆cache和write-buffer两个概念。 write-through cache先将数据刷到write-buffer,再由write-buffer刷回下一级cache和内存,使cache不用等待数据刷新结束。 在一些体系中使用write-buffer这个名称做其它用途的一些缓冲,和本次培训中讲的write-buffer不同。
有些CPU由硬件保证cache数据一致,比如Cavim的CPU; 有些CPU没有,比如broadcom的低端CPU。 问题3:如何保证Cache和内存数据一致性?什么情况下会产生Cache和内存数据不一致的情况? 本问题为强制性问题,作为本次培训作业。 ----
---- Cache的替换策略 LRU(Least Recently Used)、伪LRU Random WLRU - 王大师发明的,有兴趣的可以google下。
LRU实现需要额外的硬件实现。 ----
---- 结合TLB阐述Cache的寻找过程。在这里提到TLB是为了展示MIPS特有的Cache别名问题。
教科书中的寻址过程如下(仅讨论TLB和Cache都命中的情况): 虚拟地址 -> 访问TLB -> TLB命中 -> 物理地址 -> 访问Cache -> Cache命中 -> CPU取得数据 从CPU给出虚拟地址到CPU取得数据经过了好几步,商用CPU要求Cache命中时间在1~2 CPU clock内。 MIPS架构针对上述情况做了优化。
问题4:MIPS做了哪些优化,优化之后会导致什么问题? 答案在参考文献《See MIPS RUN》中,本问题为进阶问题不强制完成。 ----
---- 回顾: Cache对于软件人员来说,大多数情况都是透明的。 但是平台有时候需要处理一些Cache不一致导致的问题, 因此了解Cache的原理,对写底层驱动和处理一些Cache不一致性的问题有帮助。
重点是:局部性原理、Cache逻辑结构、Cache一致性问题 The End. ----
>>>3.5上传PPT 本来只是想科普一下的,没想到大家有那么多问题、有些还很有深度,鸭梨不小O(∩_∩)O~ PPT还有锐捷网络的logo,也算给打个广告吧\(^o^)/~
cache.pdf
|
|