Cache之直接映射

@(组成原理)

直接映射的再次理解:
首先,理清楚这种映射下的主存物理地址位数的分配。

核心目的:加快主存和CPU之间的交换,目的在快。区别于虚拟地址的目的是扩大容量以及逻辑上容易编写程序等。

主存地址分为两个大的部分:高m位和低b位。
高m位又分为最高的t位,称之为主存字块标记,和次低c位,称之为Cache字块地址。
对应的Cache的地址结构是:高t位和低b位。

有一个问题,Cache字块地址它自己是不管的对吗?主存知道但是Cache自己是不知道的。

从二者的最低位都是b位,我们知道,因为字块的大小一样,因此位数也是一样的。

主存地址中,可以根据中间的c位计算出共计有2^c块Cache块,当然也可以根据Cache的总容量与字块的大小自行计算。

情景:
因此,现在给你一个主存块,根据它的地址结构,让你帮它找一个可用的Cache块。
脑海中要有一个印象,Cache块是比较宝贵的。主存块能以进入到Cacahe块为荣。主存块数远远大于Cache块数的。
毕竟,物以稀为贵。

直接映射中,一个主存块只能对应到一个Cache块。

根据主存的地址,当前块映射到的Cache块,和2^c块之后的主存块映射的是同一个Cache块。

这里我们来推导一下Cache块号的计算方式:
设i是Cache块号,j是主存块号。i的范围当然就是 [0,2c−12^c-1],j的范围是[0, 2m−12^m-1]

i=jmod2ci = j \mod 2^c

换成汉字就是取出主存地址中间的c位代表的数字,即为Cache块号。

这样就完了?

么有。

为什么要设计高t位呢?

因为要确定Cache心里装的到底是不是当下主存自以为的根据中间c位计算出来那个Cache块。
因为Cache还可能装着别人嘛。

所以要精确匹配是不是(有点像DNA那啥)。

这些就是直接映射的最核心的概念理解,其他的细节是比较容易理解的,比如在Cache存储中还加有效位的概念等。

Cache之直接映射相关推荐

  1. 直接映射Cache模拟器

    直接映射Cache模拟器 直接映射是Cache中结构最简单的一种. 一.Cache的大小和结构 直接映射Cache的结构如下:(因为每组只有一行,所以下文中行.组代表相同含义) 代码如下: 本实验采用 ...

  2. Cache相关基本概念理解

    Allocation          在CACHE中发现一个位置,并把新的cache数据存到这个位置的过程.这个处理过程可能包括evicting(驱逐)cache中已存在的数据,从而为新的数据腾出空 ...

  3. 计组—缓存Cache

    缓存 通过大量统计发现了一个访问规律:程序对存储空间90%的访问局限于存储空间的10%的区域中,另外10%的访问则分布在存储空间的90%区域中.(即:存储器10%的存储空间是高频访问区,90%的存储空 ...

  4. Linux内存之Cache

    一. Linux内存之Cache 1.1.Cache 1.1.1.什么是Cache? Cache存储器,是位于CPU和主存储器DRAM之间的一块高速缓冲存储器,规模较小,但是速度很快,通常由SRAM( ...

  5. Linux内存管理:ARM64体系结构与编程之cache(1)

    <Linux内存管理:ARM64体系结构与编程之cache(1)> <Linux内存管理:ARM64体系结构与编程之cache(2)> <ARM SMMU原理与IOMMU ...

  6. Cache缺失率的计算原理

    Cache缺失率的计算 @(组成原理) Cache缺失率的考察可以直接结合着直接映射知识点的考察,且综合性难度更大一些. 再次思考Cache的基本原理,要从读写两个角度深入思考. Cache和主存都被 ...

  7. Cache与主存的地址映像

    Cache与主存的地址映像 Cache 和主存都被分成若干个大小相等的块,每块由若干个字节组成,主存和 Cache 的数据交换是以块为单位. 地址映像 把主存地址空间映像到 Cache 地址空间,即按 ...

  8. C64+ cache资料集(更新中)

    1 CACHE的一些名词术语: Allocation          在CACHE中发现一个位置,并把新的cache数据存到这个位置的过程.这个处理过程可能包括evicting(驱逐)cache中已 ...

  9. Processor Microarchitecture(Mark D.Hill ):Cache

    一.Introduction(背景) 二.cache structure organization(缓存结构) 三.non-blocking cache(非阻塞缓存) 四.multiported ca ...

最新文章

  1. 18000 台服务器整整瘫痪了三天:因 BoltDB 糟糕的设计
  2. 年薪40-100万 | 北京思无界科技招聘三维重建算法工程师
  3. 重置MYSQL的root 密码
  4. 结对编程:黄金点小游戏
  5. 利用S_MEMORY_INSPECTOR分析内存泄漏问题
  6. 基于SharePoint革命性的大型企业协同门户产品
  7. mysql插入时unique字段重复插入失败
  8. 信用评分卡 (part 7 of 7)
  9. 295.数据流的中位数
  10. EDA第一次课<1117电路图的绘制>
  11. java ajax教程_JAVA AJAX教程第三章—AJAX详细讲解
  12. HTML5游戏引擎(十七)-egret引擎实战——踩格子游戏
  13. 第九届全国大学生GIS应用技能大赛下午(试题及参考答案)
  14. SDUT 2021 Spring Individual Contest(for 20) - 1
  15. 学习总结20-04-18:包装类
  16. 计算机网络知识点概括
  17. 微信接入服务器源码,经典论坛程序Discuz! Q 1.0 发布:完全开放源码,原生接入微信...
  18. mysql错误码 1068_服务启动报错----错误1068 的解决方法
  19. OC / Swift / Xcode - 怎么私有化init 方法(禁止调用init方法生成对象)
  20. 清华大学鲍橒计算机1999,《最强大脑》观察员学历:鲍橒清华,王峰武大,DR魏非211...

热门文章

  1. python拦截tcp数据包_发送低级原始tcp数据包python
  2. 接口怎么获取数组底下的数组_3分钟短文 | PHP数组获取最后一个元素,10个方式中哪个有错?...
  3. 正弦函数_傅里叶为什么会想到把函数展开为正弦波
  4. 计算机网络应用基础_2020年天津市成人高考 高起专 计算机基础题型总结
  5. python latex显示不出来_10 个加速Python数据分析的简单的小技巧
  6. 系统动力学建模工具_多体动力学:ANSYS Motion 2020R2
  7. java获取前台值_SpringMVC接收前台传递过来的值的实例
  8. ios uistepper_iOS UIStepper
  9. python元组_Python元组
  10. 使用Mongo Shell和Java驱动程序删除MongoDB的示例