Chinaunix首页 | 论坛 | 博客
  • 博客访问: 456813
  • 博文数量: 73
  • 博客积分: 3593
  • 博客等级: 中校
  • 技术积分: 912
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-14 11:32
文章分类

全部博文(73)

文章存档

2013年(2)

2012年(20)

2011年(25)

2010年(12)

2009年(14)

分类: 嵌入式

2011-02-27 23:35:16


说明:来自培训讲稿,并隐去与公司系统软件相关部分内容。

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  

阅读(4349) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

nizqsut2011-03-02 12:35:14

beyondfly: MIPS架构是个好东西.....
Just for funny

beyondfly2011-03-01 09:33:33

MIPS架构是个好东西