缓存器 的引入:

【王道计组笔记】高速缓存器:局部性原理及性能分析_muse_age的博客-CSDN博客


1.主存的块放到Cache中哪个位置?CPU向缓存中读取一个数据过程?

(1)空位随意放:全相联映射

(2)对号入座:直接映射

(3)按号分组,组内随意放:组相联映射

地址映射:

全相联映射:

主存一块数据存放到Cache单元时,不仅要存放数据,还要存放有效位(1个二进制数)和主存的高位(上例为22位),所以用23个二进制数来确定主存地址与Cache地址的映射

优点:空位利用率高

缺点:存放标记项多

(极少用)

直接映射:

主存中的某一块通过固定的计算方法放在Cache中的某一块

缺点:空位利用率低

优点:存放标记项少

(极少用)

组相联映射:

存和Cache都分组,主存中一个组内的块数与Cache中的分组数相同,组间采用直接映射,组内采用全相联映射。主存块存放到哪个组是固定的,至于存到该组哪一块则是灵活的


2.问题:对于(1)如果Cache满了应该怎么办,对于(2)(3),对于位置被占用怎么办?

替换算法:

(了解)

1、随机算法(RAND)

了解:

随机地确定替换的Cache块。实现简单,但没有依据程序访问的局部性原理,故可能命中率低。

2、先进先出算法(FIFO):

选择最早进入的行进行替换。比较容易实现,但没有依据程序访问的局部性原理,可能会把一些需要经常使用的程序块(循环程序)也作为最早进入Cache块替换掉

3、近期最少使用算法(LRU):

依据程序访问的局部性原理选择近期长久未访问过的存储行作为替换的行,平均命中率要比FIFO高,是堆栈类算法

LRU算法对每行设置一个计数器,Cache每命中一次,命中行计数器请0,而其他各行计数器均+1,需要替换时比较各特定行计数值,将计数值最大的行换出

4、最不经常使用算法(LFU):

将一段时间内被访问次数最少的存储行换出。每行也设置一个计数器,新行建立后从0开始计数,每访问一次,被访问的计数器+1,需要替换时比较各特定行的计数值,将计数值最小的行换出


虚拟存储器:

存储器的层次结构:

为什么要设立虚拟存储器:

不同辅存提供的地址形式不一样,访问的数据块的大小也不一样,cache也可以有不同的层次(一级缓存,二级缓存),如果要用户去掌握硬件上的细节很麻烦。-

>引入虚拟存储器:整个硬件和软件搭配起来提供给用户的逻辑模型。(逻辑模型更关注逻辑上的实现,不关注细节)

功能:用户给出一个地址,叫做虚地址或逻辑地址,虚拟存储器要给出该地址对应的数据

*逻辑地址与物理地址由软件实时控制,而不是一一对应。

实现:由辅助硬件将虚地址映射到主存当中的某个单元,主存单元地址成为实地址或物理地址

分类:

页式虚拟存储器:

虚拟空间与主存空间都被划分成同样大小的页

实页:主存的页

虚页:虚存的页

由于页的大小是相同的,所以只需处理虚页号到实页号的映射。把虚页号到实页号的映射关系存到页表中

页表:存放实页号和装入位。

装入位表示虚拟的地址对应的数据是否放在主存中,如果放在主存中直接访问Cache-主存,否则把辅存中的数据放入到主存中。

虚页号与实页号的映射:

页表基址寄存器:存放页表起始地址,和虚页号拼接会得到一个完整的地址。

理解:告诉页表的起始地址,虚页号相当于页表的偏移地址,就可以映射到对应的实页号

段式虚拟存储器

按程序的逻辑结构划分,各个段的长度因程序而异。

虚拟地址分为:段号和段内地址

段表:每一行记录了某个段对应的段号,装入位,段起点和段长等信息。由于段的长度可变,所以段表中要给出各段的起始地址与段的长度。

段页式虚拟存储器

把程序按逻辑结构分段,每段再划分为固定大小的页。主存空间也划分为大小相等的页,程序对主存的调入,调出仍以页为基本传送单位。每个程序对应一个段表,每段对应一个页表。

虚拟地址:段号+段内页号+页内地址


页表和段表存放在主存中,收到虚拟地址后要先访问主存,查询页表,段表,进行虚实地址转换。放在主存中的页表称为慢表

快表(TLB):用高速缓冲存储器存放常用的页表项

【王道计组笔记】Cache高速缓存基本工作原理相关推荐

  1. 【王道计组笔记】高速缓存器:局部性原理及性能分析

    背景: 随着CPU的工作速度成指数级增长,但是主存速度跟不上,所以要提升主存速度非常重要. m个模块采用低位交叉编址的方式可以基本上将主存的带宽提升m倍,但是这依旧与CPU差距很大. [王道计组笔记] ...

  2. 王道计组笔记: 3.6高速缓冲存储器

    目录 高速缓冲存储器 1. Cache的工作原理 2.局部性原理 3.性能分析 4.映射(类比哈希) 5.Cache替换算法 6.Cache块写策略 高速缓冲存储器 1. Cache的工作原理 当在手 ...

  3. 【王道计组笔记】输入/输出设备磁盘

    外部设备:除了主机(CPU和主存)之外的,能直接或间接与计算机交换信息的装置 输入设备:用于向计算机系统输入命令和文本.数据等信息的部件. 鼠标(了解) 键盘(了解) 键盘是最常用的输入设备,通过它可 ...

  4. 【王道计组笔记】储存系统(1):基本概念

    储存器的分类: 层次(离CPU的距离): 高速缓存存储器(cache),主存储器(主存.内存),辅助存储器(构成三级存储系统) 设立缓存目的:提高访问速度(硬件自动完成) 设立辅存目的:扩大存储容量( ...

  5. 【王道计组笔记】总线(1):总线的概念和分类

    总线:一组能为多个部件分时共享的公共信息传送线路 共享:总线上可以挂接多个部件,多个部件之间互相交换信息可以通过这组线路分时共享 分时:同一时刻只允许有一个部件向总线发出信息,如果系统中有多个部件,则 ...

  6. 【王道计组笔记】I/O查询方式

    程序查询方式: CPU一旦启动I/O,必须停止现行程序的运行,并在现行程序中插入一段程序. CPU有"踏步"等待现象,CPU与I/O串行工作 优点:接口设计简单.设备量少 缺点: ...

  7. 【王道计组笔记】主存与CPU的连接

    存储器芯片: 存储器芯片与CPU的连接: 主存容量拓展: 位拓展: 8个8k*1并行的效果,相当于1个8k*8的芯片工作,所以叫位拓展 字拓展:  例题: 学完数字电路后过来回顾!

  8. 【王道计组笔记】半导体存储器RAM ROM

    知识回顾: 存储器芯片的逻辑结构: 存储矩阵:    由大量相同的位储存单元阵列构成 译码驱动: 将来自地址总线的地址信号翻译成对应存储单元的选通信号,该信号在读写电路的配合下完成对选中单元的读/写操 ...

  9. 【王道计组笔记】数制、编码、校验

    数制: 主要为计数进位制:常用有二进制,八进制,十六进制,十进制 其中二进制位计算机内部的编码方法,八进制和十六进制作为二进制的缩写形式. 原因: ①物理:用两种稳定状态的物理器件表示二进制数比较容易 ...

最新文章

  1. GoLand配置数据库、远程host以及远程调试
  2. box_sizing
  3. 一键装机linux_linux系统安装,怎样安装linux系统制作步骤
  4. PyTorch基础(11)----- torch.sum()方法
  5. ios开发 热搜词demo_一场比赛16个热搜,uzi因焕烽躺枪,阿bin评价赛后太揪心
  6. 了解计算机PS,2017年计算机等考一级PS辅导:了解Photoshop7.0中十大快捷操作
  7. [Java基础]Lambda表达式的注意事项
  8. python编写数据库连接工具_详解使用Python写一个向数据库填充数据的小工具(推荐)...
  9. Bailian2952 循环数【数学】
  10. Exadata中最有用的功能-存储索引
  11. SecureCRT在linux与windows本地互传文件之SFTP
  12. cox回归模型python实现_Python用Cox比例风险模型进行生存分析-基于lifelines库
  13. vnc远程控制软件怎么用,vnc远程控制软件到底该怎么用,使用教程
  14. Qt 之 QSS(白色靓丽)
  15. 连连看核心算法与基本思想(附全部项目代码链接与代码详细注释)
  16. 儿童学python第一课_初学Python(第一课)
  17. 初学Simcenter Flotherm XT划分网格和气流
  18. teradata 查看 表定义_Teradata表类型
  19. 硬盘分区整数G计算小公式
  20. python电化学cv曲线怎么画_我如何使用参数自动绘制翼型

热门文章

  1. Bailian3470 整理扑克牌【贪心+二分】
  2. Bailian4149 课程大作业【DP】
  3. 51NOD-1027 大数乘法【大数】
  4. UVA10200 Prime Time【素数判定】
  5. PBS 作业调度应用
  6. 计算机的组成 —— VGA
  7. 战争论 —— 蓝田之战
  8. Python Flask Web 第七课 —— 使用 flask-moment 本地化日期和时间
  9. java excel 合并两个单元格内容 无法换行_12个简单高效的EXCEL小技巧,让你秒变职场达人!...
  10. python有道-Python调用有道词典翻译