cache是一种高速缓冲寄存器,是为解决CPU和主存之间速度不匹配而采用的一项重要技术。

主存与cache的地址映射方式有全相联方式、直接方式和组相联方式三种。

直接映射(directmapping):将一个主存块存储到唯一的一个Cache行。

全相联映射(fullyassociative mapping):可以将一个主存块存储到任意一个Cache行。

组相联映射(setassociative mapping):可以将一个主存块存储到唯一的一个Cache组中任意一个行。

1.直接映射

多对一的映射关系,但一个主存块只能拷贝到cache的一个特定行位置上去。
cache的行号i和主存的块号j有如下函数关系:i=j mod m  (m为cache中的总行数)
优点:硬件简单,容易实现
缺点:命中率低, Cache的存储空间利用率低

 

直接映射的cache检索过程

在直接映射方式中,首先用r位行号找到cache中的对应行,然后用地址中的s-r位标记部分与此行的标记在比较器中做比较。若符合命中,在cache中找到了对应的块,然后用地址中最低位w读取所需的字。若未命中,按内存地址从主存中读取这个字。

2.全相联映射

主存的一个块直接拷贝到cache中的任意一行上
优点:命中率较高,Cache的存储空间利用率高
缺点:线路复杂,成本高,速度低

全相联映射方式检索过程

在全相联映射方式中,将内存地址的s位块号与cache中所有行的标记同时在比较器中做比较。若块号命中,按w位字地址从cache中读取一个字;若未命中,则按内存地址从主存中读取这个字。

3.组相联映射

将cache分成u组,每组v行,主存块存放到哪个组是固定的,至于存到该组哪一行是灵活的,即有如下函数关系:cache总行数m=u×v       组号q=j mod u
组间采用直接映射,组内为全相联
硬件较简单,速度较快,命中率较高

 组相联cache的检索过程

在组相联映射方式中,首先用给定s位块号的低d位找到cache的相应组,然后将块号的高s-d位与该组v(=2d)行中的所有标记同时比较,哪一行的标记相符即该行命中。再以内存地址的低w位检索此行对应的字。

最新文章

  1. Scala - 隐式转换和隐式参数
  2. htmlFormat
  3. shell 脚本技巧
  4. flask笔记---url、变量规则
  5. C++ 高质量编程附录试题
  6. 十分钟了解分布式计算:GraphLab
  7. 第四篇 :微信公众平台开发实战Java版之完成消息接受与相应以及消息的处理
  8. IDE 集成开发环境
  9. MongoDB固定集合
  10. [HttpException (0x80004005): The current identity
  11. ActionBar官方教程(5)ActionBar的分裂模式(底部tab样式),隐藏标题,隐藏图标
  12. linux下源码安装软件
  13. 在sql语句中使用plsql变量
  14. HDU3966(树链剖分)
  15. 你真的懂ajax吗?
  16. 不同浏览器创建 ajax XMLHTTPRequest对象的方法及兼容性问题总结
  17. centos6.5 MySQL数据库的安装
  18. 随机生成&部门匹配
  19. SQL 、NoSQL数据库教程
  20. DataX介绍

热门文章

  1. Qt::FocusPolicy的使用
  2. 记一次JVM调优之旅(斗争full gc)
  3. Struts2学习-json
  4. 第五周 day5 python学习笔记
  5. mem系函数总结
  6. SharpZipLib压缩解压
  7. python UI自动化实战记录六:页面1用例编写
  8. iOS - CocoaPods 和 Carthage 的比较
  9. 如何设置活动监视器中的可见作业数能显示更长范围之内的作业(如何让bpdbjobs/Active Monitor显示更多作业信息)
  10. Lua脚本认知小结