- 1、本文档共19页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第五章systemcache
第五章 system cache 5.1 cache 的定义 cache 用于保留最近被使用过的有效的数据,这将加快对数据的访问速度。 cpu 、I/O 子系统有硬件cache,软件cache主要是文件系统信息。 cache 通常只保留有效数据的很小的一部分,有时小于0.1%,因此,Cache包含关键、有效的可能被运用的数据。 5.2 硬件cache 最为常见的cache是CPU cache,现在的CPU cache 都包含至少两级Cache,即一级cache 和二级cache. 一级cache,也叫内部cache,通常大小为32k bytes 。二级cache,也叫外部cache,大小从0.5M 到8M。 CPU包含虚拟地址转换cache,也叫做TLB(translation lookaside buffer),DLAT(dynamic lookaside table),PDC(page descriptor cache)。 硬件I/O子系统有不同的cache,它所保留的是系统与各种外围设备之间传输的数据。 5.3 SRAM 和DRAM 大部分的cache是SRAM(static random access memory),而系统的内存是DRAM(dynamic RAM)。SRAM每个bit用4个晶体管,而DRAM每个bit用1个晶体管。 DRAM存在一个问题,它的电荷会随时间而衰减,通常每隔10个系统时间周期DRAM的内容就需要刷新(重写)。重写包括把数据读到memory控制器然后再写回DRAM。 当DRAM开始刷新时,这个过程将非常忙碌,数据将不能读出,也不能写入。 SRAM 没有刷新的需要,数据放置在SRAM里永远有效。它通常用于需要高性能访问的地方,如cache. 5.4 CPU cache CPU有两种级别的cache,一级cache和二级cache. 一级cache的大小一般为4-40K bytes ,它是CPU的一部分,UltraSPARC II CPU 芯片有3 百万个晶体管,有2百万个晶体管用于cache。 二级cache的大小一般为0.5-8M,它不在CPU芯片上。 一级cache以CPU的速度运转,迅速地为CPU提供数据。数据在被CPU处理之前,必须被调到一级cache里。 5.5 Cache的操作 所有的cache,包括已硬件cache和软件cache,它们的工作方式是类似的。请求信息传递给cache 控制器或者是特殊的数据片管理。 数据通过它的tag 来识别的,tag 可能是它的地址或者是能唯一标记它的属性。 如果数据在cache里被找到,它会被返回给请求者。这就是cache hit(cache 捕获)。 如果数据在cache里没有被找到,它必须向下一级cache发出请求。这就是cache miss (cache 未捕获)。 当cache miss 时,请求者必须等待,或者处理其它的工作,直到被请求的数据被找到。 5.6 cache miss 的过程 因为效率的原因,cache 通常100%用于保存数据。当cache miss 发生时,新的数据必须补充到cache里,这个过程叫“move in”。这时需要替换cache里已经存在的数据。 替换发生时,必须为进来的数据寻找位置。数据的花销已经在Cache里出现了。根据cache的设计,cache里或许只有一个位置能存放新数据,或者有多个。如果有多个,对性能损害更少的位置将被选择。 用于寻找位置的运算法则为旧的、很长时间不用的位置赋上最小值并选择它作为进来数据的新位置。这种算法叫LRU( least recontly Used) 5.7 cache 的交换 当进来的数据的位置被找到以后,系统并不马上将新数据拷贝到这个位置。在进来的数据放置之前,当前的数据必须被移出(moved out),或flushed.并将其备份到下一级的cache上。如果在下一级已经有此数据存在,则数据将被丢弃。然后新进来的数据才被拷贝到这个位置上。 在moved out 结束之后, move in开始进行。 被移动的数据的总量叫cache line.在cpu cache当中,cache line 的 大小为64 bytes,其它类型的cache 中,最小1 byte ,最大1k bytes. 5.8 cache 的操作流程 当数
文档评论(0)