目录

1.页式存储系统

1.1.TLB

1.1.1.全相联映射

1.1.2.组相联映射

1.2.各组件存放位置

1.3.Cache

1.3.1.全相联映射

1.3.2.直接映射

1.3.3.组相联映射

1.4.页框和主存块的关系

1.5.真题

2.Cache行和TLB的构成

2.1.Cache行的构成

2.2.TLB的构成

3.真题

4.Cache硬件原理拓展


1.页式存储系统

1.进程以分页的方式存储在内存中,即将进程进行拆分,再将其放入内存的物理页框中(数据部分和指令部分)

2.指令的执行需要使用某些数据时,其地址通过逻辑地址(VA)的形式给出;PC指向的也是逻辑地址(VA);每个进程的部分相同的低地址(或者高地址)都会映射到同一些页框中(相当于页面共享),这些页框中存放的是执行系统调用的代码

即执行需要的数据和下一条指令都是逻辑地址,都要进行逻辑地址到物理地址的转换

3.虚拟内存地址位数由操作系统位数决定,36位操作系统,即36bit的虚拟地址

4.页内偏移量位数(页内地址)由页面大小决定,每个页面大小为4KB,即页内地址为12位(物理地址和虚拟地址的页面大小相等,即页内地址位数相同)

5.物理地址地址位数由物理地址空间大小决定,物理地址空间4GB,即32bit的物理地址(通常物理地址的位数小于虚拟地址的位数)

6.每个进程一张页表,页表始址存放在该进程的PCB中

1.1.TLB

1.1.1.全相联映射

1.页表存储在内存中;TLB由SRAM组成,当CPU访问某一页表项后,该页表项将会被复制到TLB中,下次访问同一地址时,就无需访存查页表,由TLB就可以得到其物理地址,加快地址转换速度

2.①没有TLB(需要访存):根据虚拟页号查询页表→页框号→将页框号和页内偏移量进行拼接→物理地址

②有TLB(不需要访存):TLB

(1)根据虚拟页号查询TLB→TLB命中→页框号→将页框号和页内偏移量进行拼接→物理地址(命中即跳过查询慢表的过程,直接进行拼接得到物理地址)

(2)根据虚拟页号查询TLB→TLB未命中→根据虚拟页号查询页表→页框号→将页框号和页内偏移量进行拼接→物理地址

3.①单级页表:通过页号 * 页表项单位大小的方式找到该页号所对应的页表项(CPU会存储当前进程的页表起始地址,即页表始址):页表项顺序存储(类似数组),且每个页表项的大小相等

②由于页表需要连续存储的特性,因此,单级页表可能过长的连续空间,通过多级页表的方式解决需要占用过大连续存储空间的问题,使其可以离散存放(二级页表):

将24bit的页目录号分成12bit页目录号(一级页表)和12bit页号(二级页表),先对比页目录号得到存放二级页表的页框号,再通过页号得到物理地址的页框号

即页目录表→二级页表→物理页框(TLB的存储形式不会发生改变)

4.TLB就是最近访问的页表中某行页表项的副本数据(TLB标记即虚拟页号)

5.TLB的查询方式:用虚拟页号和TLB中每行的TLB标记进行比较(同时比较),并且需要注意有效位是否为1

1.1.2.组相联映射

根据虚拟页号的末尾3bit查找对应的组号→依次对比剩余虚拟页号位(24 - 3 = 21位)是否和组内TLB标记匹配→对比有效位→拼接得到物理地址

1.2.各组件存放位置

1.PCB:抽象为一种数据结构,存放在主存的内核区

2.页表:存放在主存的内核区

3.页表始址:指明该进程的页表从哪开始存放,INT型变量,包含于PCB

4.页表始址寄存器(硬件):包含于MMU(内存管理单元)中;系统运行进程前(切换进程),CPU将会把页表始址复制到页表始址寄存器中(每个进程的页表始址不同)

5.MMU(硬件):集成在CPU中

6.TLB(硬件,当前进程页表项的副本):高速存储器,SRAM,包含于MMU,属于CPU;切换进程后,之前的TLB的有效位全部置为0(TLB是当前进程的页表项副本,故之前进程的TLB作废)

7.Cache(硬件,内存的副本):高速存储器,包含于CPU,但不属于MMU的一部分;切换进程,Cache进程不作废,不同进程可能共享同一页框

(1)TLB和Cache在底层硬件原理上相同,但作用不同

(2)切换进程:页表始址寄存器更新;TLB作废;Cache不需要全部作废,但是会经常出现Cache未命中

1.3.Cache

1.主存块大小 = Cache块大小;页框大小 >Cache块大小:主存块和页框是不同概念

2.字块内地址位数决定Cache块的大小,字块内地址6bit即Cache块大小为64B

3.根据Cache映射方式和Cache块大小确定物理地址的格式结构

4.根据字块内地址确定访问该Cache块中的具体字节 / 字

1.3.1.全相联映射

用标记对比Cache中的每一行,且有效位为1,根据字块内地址找到某个字 / 字节

1.3.2.直接映射

1.根据Cache中有几行,确定行号的位数

2.Cache标记位数 = 物理地址总位数 - 字块内地址位数

3.根据物理地址中行号所对应的位数唯一确定该数据块在Cache中出现的位置

4.查询顺序:对比行号→对比Cache标记→对比有效位→根据字块内地址访问Cache块中的某一字 / 字节

5.Cache中的行号隐含(顺序存储,类似数组)

1.3.3.组相联映射

1.每组中Cache块的行数决定是几路组相联映射,每组2行即2路组相联映射

2.组个数决定组号的位数,8组即组号3bit(0 - 7)

3.查询顺序:对比组号→对比Cache标记→对比有效位→根据字块内地址访问Cache块中的某一字 / 字节

4.路数代表每组多少个,而不是分为多少组;总个数 / 路数 = 组数

1.4.页框和主存块的关系

设主存大小为4KB

(1)①每个页框为1KB → 共4个页框 → 页框号为2bit,页内偏移量为10bit

②主存大小为4KB,每个主存块为64B → 共4KB / 64B = 64块,即主存块号为6bit,字块内地址为6bit

③主存若以页框为单位,被分为4个页框;若以主存块为单位,被分为64个主存块

(2)逻辑地址转换为物理地址:以页框为单位;使用物理地址通过Cache找数据时,以块为单位

(3)磁盘和主存以页框为单位进行数据交换,容量大方便进行数据交互;主存和Cache以主存块为单位,基于局部性原理,保证Cache的效率

1.5.真题

(1)①按字节编址:每个地址对应一个字节

②虚拟地址为32位→VA = 32bit;物理地址为24位→PA = 24bit;页大小为8KB→页内地址 = 13bit;Cache数据块大小为64KB→Cache所有块容量之和为64KB

③页内地址13 bit,且虚拟地址为 32bit → A(虚拟页号)地址为 32 - 13 = 19 bit

④TLB采用全相联映射 → TLB标记位 = 虚拟页号位 → B = A = 19 bit

⑤页内地址13 bit → 页内偏移量 = 13bit → D = 13bit

⑥物理地址24 bit,页内偏移量13 bit → C = 页框号 = 24 - 13 = 11 bit

⑦Cache采用二路组相联映射方式 → 物理地址被分为三部分:Cache标记位(Tag) + 组号 + 字块内地址

⑧Cache块大小 = 主存块大小 = 64B → 字块内地址 = 6 bit

⑨Cache数据块大小为64KB → 共有64KB / 64B = 1K 个Cache块 → Cache采用二路组相联映射方式 → 每组两行Cache → 共有 1K / 2 = 512个组 → 组号 9bit

⑩Cache标记位 = 物理地址总位数24 bit - 字块内地址6 bit - 组号9 bit = 9 bit

(2)①将4099转换为18bit的二进制数 → 00 0001 0000 0000 0011 → 组号为末尾9 bit → 0 0000 0011 = 3→ 组号为3

②H为Cache标记位,即4099的前9bit →00 0001 000

(3)Cache缺失处理将主存块调入Cache中;缺页处理从外存调入一个页进入主存;磁盘I/O速度低于主存读写速度,故缺页处理时间开销更大

(4)①直写策略:Cache中内存块被修改的时候同步写回主存的内存块

回写策略:只有Cache中该主存块被淘汰时,才将修改内容写回块中

②磁盘I/O(写回磁盘)的速度和读写主存的速度差异过大

2.Cache行和TLB的构成

2.1.Cache行的构成

1.Cache数据区总大小 = Cache总行数 * Cache块大小

2.Cache总大小 = Cache数据区总大小 + Cache标志位总大小

3.Cache行构成 = Tag + 有效位 + 替换信息位 + 脏位 + 块内数据

①Tag:Cache标签;由物理地址位数 + Cache总行数 + Cache块大小 + Cache映射方式共同决定位数

(1)直接映射:Tag = 物理地址位数 - 行号位数 - 块内地址位数(行号 = Cache总行数)

(2)组相联映射:Tag = 物理地址位数 - 组号位数 - 块内地址位数(组号 = Cache总行数 / 几路组相联)

(3)全相联映射:Tag = 物理地址位数 - 块内地址位数

②有效位:该Cache行的数据是否有效,固定存在且固定为 1 bit

③替换信息位:反映当Cache行满需要进行替换时,该Cache的被替换优先级;由映射方式 + 替换算法 + Cache总行数决定位数

(1)直接映射:每个主存块唯一确定在Cache中的映射位置,故不需要替换信息位,即 0 bit

(2)全相联映射:随机替换算法 → 0 bit;FIFO、LRU → log 行数(以2位底)bit

(3)组相联映射:随机替换算法 → 0 bit;FIFO、LRU → lod 路数(以2位底)bit

④脏位(修改位):在该行Cache被替换时,根据脏位判断该Cache是否被修改过,即是否需要写回内存

写回法(write - back):只有淘汰某个Cache块时才将被修改过的Cache写回主存,故需要脏位来表示Cache是否被修改过;脏位为 1 bit

直接法(write - through):Cache被修改时直接写回主存,即Cache内数据和主存中数据保持一致,故不需要脏位;脏位为 0 bit

⑤块内数据:Cache块大小决定位数

⑥行号(直接映射):Cache总行数决定位数

组号(组相联映射):Cache总行数 + 几路组相联映射决定位数(总行数 / 路数)

行号和组号是被隐含的,不会额外占用标志位

2.2.TLB的构成

1.Tag:①全相联映射:位数 = 虚拟页号位数

②组相联映射:位数 = 虚拟页号位数 - 组号位数

2.有效位:一定存在,且固定为1bit

3.页框号:由页大小决定(注意区别于主存块大小)

4.替换信息位:与Cache同理

3.真题

(1)①总块数 = 数据区容量 / 主存块大小 = 32KB / 64B = 512块

②组数 = 总块数 / 8路 = 512 / 8 = 64 → 6bit

③块内地址: 主存块大小 = 64B → 6bit

④Tag = 32bit(物理地址位数) - 6 bit(组号)- 6 bit(块内地址)= 20 bit

⑤直写法:Cache数据和对应的主存块数据保持一致,不需要修改位

⑥LRU:8路组相联映射,每组8个,故3 bit(0 - 7)

(1)物理地址为28bit(右侧20 + 3 + 5,即是物理地址分成三个部分)

(2)TLB采用全相联映射,SRAM

(3)①组相联映射(每次都判断左右tag是否匹配,故是组相联映射,且为二路组相联)

②LRU → 替换信息位;二路组相联映射 → 每组2个Cache行 →1bit

③写回法 → 脏位:1 bit

④Cache总行数:组号3bit → 分为8组;二路组相联映射 → 每组2行Cache;8 * 2 = 16行

⑤Tag = 20bit

⑥总容量 = (20 + 1 + 1 + 1 + 32 * 8)* 16b,即(Tag + 脏位 + 有效位 + LRU + 数据)* 行数

⑦有效位说明该Cache的数据是否有效

(4)①0008 C040H的虚拟页号位0008 C得到实页号为0040

②实页号0040与页内地址040进行拼接得到物理地址→0040 040H

③0040 040H的末尾8bit为40H,即0100 0000,得到组号为010,即2

④对比组号为2的Cache,有0040 0的Cache标签,但是有效位为0,故Cache未命中

⑤0007 C260H的页内地址为260H,取末尾8bit,即0110 0000,组号为011,即3

1.45题中的第一列为行号,第二列为指令的虚拟地址,第三列为机器指令,第四列为汇编指令

2.主存地址32位,即物理地址为32位

3.页大小为4KB,按字节编址,即页内偏移量为12位

4.push指令的虚拟地址为0040 1000H,即虚拟页号为0040 1;ret指令的虚拟地址为0040 104AH,即虚拟页号为0040 1;两者的虚拟页号相等,故两个指令在同一页中

5.主存块大小为64B,即块内地址为6位

6.指令Cache有64行;采用四路组相联映射,即每组4行Cache;组数 = 64 / 4 = 16,即组号4bit

7.Tag标记位 = 32位(物理地址)- 6位(块内地址)- 4位(组号)= 22位

8.Call指令的虚拟地址为0040 1025H,转换成二进制后,相应的组号位为0000,即0号组

虚拟地址分为虚拟页号和页内偏移量,虚拟地址转换为物理地址时,将会使用对应的页框号拼接上页内偏移量形成物理地址,故页内偏移量就是物理地址的一部分,且为物理地址的低地址部分

4.Cache硬件原理拓展

1.通过中间3位找到对应的组,通过比较器同时比较组内两个Cache行的Tag是否与物理地址的Tag标记位匹配:通过电路分别将物理地址的Tag标记位和Cache的Tag输入到比较器中(物理地址来自MAR),如果两者相等,比较器输出1;如果两者不相等,比较器输出0

2.通过比较器上面的与门控制多路选择器是否接通:当且仅当比较器输出1(即Cache的Tag和物理地址的Tag相等)且有效位的电路输出1(即Cache数据有效)时,与门输出1给多路选择器,即多路选择器连通(但是仅连通左半边或者右半边,即将左边的Cache行的Data输入到多路选择器中或者将右边的Cache行的Data输入到多路选择器中,二者只会发生一个),然后多路选择器将输入的Data输出到数据中

3.将物理地址末尾的5位输入到数据中与2中输入的Tag位拼接,形成访问数据的具体字节的地址

①虚拟地址→物理地址:虚拟地址48位由36位VPN(虚拟页号)和12位VPO(页内偏移量)组成

1.左上角:VA即虚拟地址:由36位虚拟页号(VPN)和12位页内偏移量(VPO)组成

2.36位虚拟页号(VPN):由32位TLB标签(TLBT,Tag)和4位组号(TLBI,INDEX)组成;即说明采用的是组相联映射方式

3.组号4位:分为16个分组(16sets)

4.每组4个:四路组相联映射(4entries / set),每个的标志位由PPN(physical page number,物理页号)、Valid(有效位)和Tag(TLB标签)组成

5.通过进行前32位(虚拟页号36位 - 组号4位)和组内各行TLB标签(同32位)进行匹配后,若命中(TLB - hit),则将PPN和PPO(physical page offset,页内偏移量)进行拼接得到物理地址PA

6.左下角:如果TLB miss(TLB未命中),则前36位虚拟页号将会被拆分为4个9位的虚拟页号(VPN),说明采用的是4级页表;CR3是CPU中的寄存器,指向第一级页表的起始地址,然后逐级寻找下一级页表的页表项位置,最终得到PPN,再进行拼接得到物理地址

②物理地址→Cache:物理地址42位由40位CT(Tag)+ 6位CI(Index,组号)+ 6位CO(offset,块内偏移量)组成

1.Cache共64个分组(64 sets),每组8行Cache → 8路组相联映射

2.用物理地址的前40位Tag和组内各行Cache的Tag进行匹配,Cache Hit则得到具体块号,通过块内偏移量在相应位置读出32/64bit

1.TLBT(Tag): TLB标签位,6bit

2.TLBI(Index):TLB组号位,Set为组号,0 - 3,即4组,2bit

3.TLBT + TLBI = VPN(虚拟页号),8bit

4.VPO(页内偏移量),6bit

5.每个Set中有4行Cache → 四路组相联映射

四路组相联映射

408王道计算机组成原理强化——存储系统大题相关推荐

  1. 408王道计算机组成原理强化——数据的运算及大题

    目录 1.大纲要求 1.1.定点数的编码表示 1.2.运算方法和运算电路 1.3.整数的表示和运算 1.4.浮点数的表示和运算 1.6.小结 2.无符号数的加/减 3.加法器电路 3.1.无符号数加法 ...

  2. 计算机组成原理常考大题合集

    计算机组成原理常考大题合集 1.在"Cache-主存-辅存"三级存储体系中,"Cache-主存"结构与"主存-辅存"结构的引入为了解决什么问 ...

  3. 【考研计算机组成原理】强化 存储系统大题

    文章目录: 一:影响Cache组成的因素 二:常见题型 三:补充知识点 四:存储系统硬件图示

  4. 【向题看齐】408之计算机组成原理概念记忆总结

    408之计算机组成原理概念记忆总结 1.计算机系统概述 2.数据的表示和运算 2.1.进位计数制 2.3.定点数的表示 2.3.1.表示范围 2.4.定点数的计算 2.4.1.算数移位 2.4.2.逻 ...

  5. 24考研王道计算机组成原理笔记

    24考研王道计算机组成原理笔记 文章目录 24考研王道计算机组成原理笔记 前言 一.计算机系统概述 1.1 计算机的发展 1.2 计算机硬件 1.2.1 计算机硬件的基本组成 1.2.2 各个硬件的工 ...

  6. 王道计算机组成原理:完整笔记

    王道计算机组成原理:完整笔记 第一章 计算机系统概述 [复习提示] 本章是组成原理的概述,考查时易针对有关概念或性能指标出选择题,也可能综合后续章节的内容出有关性能分析的综合题.掌握本章的基本概念,是 ...

  7. 《王道计算机组成原理》学习笔记和总目录导航

    <王道计算机组成原理>学习笔记和总目录导读 本篇文章是阅读和学习<王道计算机组成原理>后总结的理论知识笔记导航,专门用于遗忘后复习 下面的文章是我在学习了<王道计算机组成 ...

  8. 2012浙大878计算机专业基础综合大题答案解析

    整理了2012浙大878计算机专业基础综合大题的解析 其中数据结构中用到的两个难点: 1. 优先队列的最大堆的实现    参阅文章<最大堆MaxHeap和最小堆MinHeap的实现(转)> ...

  9. 计算机组成原理往届的试题,【历年真题】全国2019年10月自考《计算机组成原理》试题真题与答案02318...

    [历年真题]全国2019年10月自考<计算机组成原理>试题真题与答案02318 时间:2020-08-09 17:33 来源:江苏成考网 阅读:94 全国2019年10月高等教育自学考试 ...

最新文章

  1. 别让SSL证书暴露了你的网站服务器IP
  2. python命名空间更改_在Python中使用ElementTree改变命名空间前缀
  3. 全世界都认为汉语是婴儿语(转载)
  4. java服务端的 极光推送
  5. arch模型的思路_ARCH模型
  6. 优秀工程师应该具备哪些素质_一名优秀工程师所需要具备的条件和素质[1]
  7. android 发短信 调到联系人
  8. 怎样给oracle表设置序列,Oracle的sequence序列在hibernate中的配置方法
  9. 数据库系列学习(三)-数据的增、删、改
  10. 机器人时代已来!推荐几本机器人学硬核好书
  11. Unity针对文件进行MD5码校验
  12. php随机产生六位数密码
  13. 知乎周源微信_每周源代码41-搜索代码,共享代码和阅读代码(和注释)
  14. HTML5游戏实战 1 50行代码实现正面跑酷游戏
  15. Microsoft 提供的 USB 驱动程序
  16. ESP8266+1.3“ or 0.96“ OLED两个太空人动画(胖子和瘦子)
  17. wordpress社交系统_如何将您的WordPress网站变成社交网络
  18. 学习笔记(41):决胜AI-深度学习系列实战150讲-完成预测分类任务
  19. ESP32_micropython学习(一):点亮一盏灯
  20. linux创建用户组和用户

热门文章

  1. 最小二乘、加权最小二乘(WLS)、迭代加权最小二乘(迭代重加全最小二乘)(IRLS)
  2. 行政能力测试,数字规律
  3. 用小牛翻译API让ChatGPT给我做个在线翻译网站
  4. springboot实现长链接转短链接
  5. 如何使用python批量修改txt文档
  6. 微信小程序按钮大小修改,字体修改
  7. 11.29 android入门开发
  8. 使用ElasticSearch完成百万级数据查询附近的人功能
  9. 设计模式作业 — 3
  10. MongoDB中$redact操作符的使用