当前位置: 首页 > news >正文

计算机组成原理(存储器)

1、“821.2016T1(1)”,表示821真题,2016年的题,T1是 选择题/填空题/大题 的第一题,其他类似标记也是相通

2、个人小白总结自用,不一定适用于其他人,请自行甄别

3、有任何疑问,欢迎私信探讨,看到后会及时回复

4、另外,想要获取 NUDT 计算机免费的相关资料,建议加官方QQ群756084430,资料全部都是免费的,收费的都是骗纸

选择题

  1. 双极型RAM同SRAM比较,最突出的优点:速度更快大概因为数据和地址线都不能复用
  2. 随机存取方式:

    不采用随机存取方式:CDROM

    采用随机存取方式:EPROM、“RAM、ROM都采用“

  3. Cache失效开销 = 将主存一块加载到Cache所需的时钟周期数
  4. 地址映射:

    Cache和主存的地址映射:由硬件自动完成的

    Cache缺失:只用访问主存,由硬件处理

    页面缺失:需要访问磁盘,由 “OS,操作系统,软件“ 处理

    主存与虚存的地址映射:OS,操作系统,软件

  5. 利用程序局部性:Cache、快表、虚存页表X
  6. 页表未命中,TLB快表绝对不会命中,因为TLB的数据是页表的复制(Cache的数据是主存的复制一样
  7. 半导体存储器并不采用随机存取方式(按地址随机存取)进行读写操作,也有按内容存取的

填空题

  1. 主存的4个主要组成:存储矩阵、选址系统(地址总线) 、读写系统(数据总线) 、时序控制线路(控制总线)
  2. SRAM,双稳态触发器

    速度快,但集成度低、功耗大

  3. DRAM,栅极电容
  4. DMAR刷新的方式:

    集中

    分离

    透明

  5. 计算出虚拟地址的位数x后,有2x个页面(不要直接填x啦
  6. 虚存只是一个的概念,是一种存储管理机制,实际上是不存在的,虚拟空间的大小与逻辑地址的位数有关
  7. 光盘/CD

    存取方式/读写特性有3种:只读型、可擦写型、追记型

    按存储介质有3种:形变型、相变型、磁光型

  8. 磁性材料的磁头具有3个特性:留磁少、导磁率高、软磁
  9. RAID盘阵由多个小容量廉价磁盘构成,被操作系统当作一个整体的大容量磁盘。校验盘用于保存备份冗余的信息

简答题(Cache)

直接映射:标记位数 + 号位数 + 块内地址位数

全相联映射:标记位数 + 块内地址位数

组相联映射:标记位数 + 号位数 + 块内地址位数

--------------------------------------------------------------------

注:全相联映射,是Cache中的任意空闲位置都可以放,不一定非得按照顺序的空位放

块大小设置为1字节的影响(2点)[袁主教材P259]

  1. 没有利用空间局部性,只有可能有时间局部性
  2. 块太小导致映射到同一个cache行的主存块数增加,导致冲突概率增加

块大小越大的缺点:

  1. 块越大,缺失损失也就越大,需要花费更多的时间从主存复制一个块
  2. 在Cache空间一定的情况下,块越大,Cache行就会越少,触发替换的可能性就越大,导致命中率降低 

简述全相联映射的访问过程

1、全相联映射:标记位数(20-9=11位) + 块内地址位数(9位)

2、0240CH = 0000 0010 0100 0000 1100

标记位数

块内地址位数

0000 0010 010

0 0000 1100

3、访问过程:

①命中时:

  • 用高11位0000 0010 010与Cache的每一行的标记位进行一一比较,若有一个相等且有效位为1,则命中
  • 此时CPU根据后9位块内地址位0 0000 1100取出块内的数据

②反之,则不命中:

  • 将高11位0000 0010 010(在主存中为第18块)复制到Cache中任何一个空闲的行中
  • 置该行有效位为1,标记位设置为0000 0010 010

简述组相联映射的访问过程

1、组相联映射:

Cache:13 = 3+1(2块一组,占1位)+9

主存:标记位数(20-9-3=8位)+ 号位数(3位) + 块内地址位数(9位)

2、0240CH = 0000 0010 0100 0000 1100

标记位数

号位数

块内地址位数

0000 0010

010

0 0000 1100

3、访问过程:

①命中时:

  • 先用中间3位010,找到Cache第2组
  • 再用高8位0000 0010该组Cache的每一行的标记位进行一一比较,若有一个相等且有效位为1,则命中
  • 此时CPU根据后9位块内地址位0 0000 1100取出块内的数据

②反之,则不命中:

  • 将高11位0000 0010 010(在主存中为第18块)复制到Cache第010组(即第2组)的任意空闲行
  • 置该行有效位为1,标记位设置为0000 0010

简述CPU从主存地址067A H,取出的数据值是多少?并描述过程。(TLB、页表、Cache、虚存、分页《袁春风解答P222T25》

其中位数:

  1. 虚拟页号,简称虚页号,该TLB项对应哪个虚页的页表项
  2. 虚存地址的页内偏移量 = 物理地址的页内偏移量
  3. 虚存地址的虚拟页号 = TLB标记 + TLB组索引
  4. 物理地址的位数 = Cache的位数

访问内存地址067A H过程描述

①(见以下对比)

  • CPU根据TLB组索引00,在TLB的第0组中,匹配所有TLB标记字段0000 011 B = 03H的页表项,有相等的但是有效位不等于1,所以在TLB未命中
  • CPU继续在主存的页表中查找,虚拟页号为0000 0110 0 B = 0C H 的页表项,有效位为1,取出页框号19H(注意,不是十进制,因为表中有ABCDEF,明显是十六进制),与页内偏移量组成物理地址:1 1001B + 111 1010B = 1100 1111 1010B

②组相联映射的访问过程

命中时:

  1. 先用中间4位1110,找到Cache第E组
  2. 再用高6位1100 11B = 33 H该组Cache的每一行的标记位进行一一比较,若有一个相等且有效位为1,则命中
  3. 此时CPU根据后2位块内地址位10取出块内的数据的值,为4A H = 0100 1010 B

虚拟地址、页目录号、页号、页目录物理地址、页表项物理地址

821.2018.T4(1))例如:

已知,页大小4KB,页表项4B,虚拟地址42位

30,虚拟页号

12,页内偏移量

可知:页表大小 = 2^{30} x 4B

----------------------------------------------------------

408.2020

预备知识:

  • 数组可以随机存取

    虚拟地址空间所占的区域必须连续

    物理地址空间所占的区域可以不连续

题目所给条件梳理:

  1. C程序:

    数组下标从0开始

    按行优先方式存储

  2. 页目录项 = 4B
  3. 页表长度 = 4B
  4. 数组元素 = 4B
  5. 字节编址
  6. 页内偏移量 = 12位

    一个页面大小 = 212B

    一个数据4B,所以,一个页面有 212B / 4B = 210个数据

  7. 数组起始的虚拟地址:1080 0000 H
  8. 页目录起始物理地址:0020 1000 H

分析

1、因为数组a 一行是1024个数据,起始虚拟地址10800 H 刚好存下 a[0] 的所有数据,a[1][2]的虚拟地址是

1080 0 H + 1 H = 1080 1 H,这就是a[1]的页号

1080 1 H + (3-1)x 4B  = 1080 0000 H + 8 H = 1080 1008 H,这就是a[1][2]的虚拟地址

其中4B,一个数据的大小,按字节编址,1B占一个地址

1080 1008 H

10位,页目录号

10位,页号

12位,页内偏移量

0001 0000 10

00 0000 0001

0000 0000 1000

64+2 = 66

1

042 H

001 H

2、页目录的物理地址 = 页目录起始物理地址 + 页目录项 x 页目录号

页目录的物理地址 = 0020 1000 H + 4B  x 66 = 0020 1000 H + 108 H = 0020 1108 H

3、页表项的物理地址 = 目录项种存放的页框号 + 页表长度 x 页号

页表项的物理地址 = 0030 1000 H + 4B  x 1 = 0030 1004 H

大题

存储器扩展

存储空间的容量(请务必引起重视!!!直接关系到后面的问答

需要的存储芯片数量

哪几位作为字扩展控制CS

主存字段的划分(Cache与存储器的映射方式)
Cache的总容量
Cache命中率

CPU访存时钟周期

Cache命中率x命中时钟周期开销 + (1-Cache命中率)x失效时钟周期开销

画存储芯片的片选逻辑电路

磁盘:(边读题边在草稿纸写下有效信息)

虚拟地址、物理地址、Cache、主存,字段划分,与数据的读取过程(821.15.T3、袁春风解析.P222T25

补充知识点

Cache 高速缓冲存储器

地址映射直接映射 (1路组相联映射)全相联映射(N路)组相联映射
主存地址结构 Tag | Cache块号位 - 0 | 块位(B)
其中,1=2
0
 Tag | 0 | 块位(B) Tag | Cache块号位 - 组号位 | 块位(B)
例子
 - 主存:32位
 - 块大小:16B
 - Cache总大小:4K块
主存:
 Tag | 12 | 4
Tag = 32-12-4 = 16
 Tag | 4
Tag = 32 - 4 = 28
(假设 2路组相联)
Tag+1 | 12-1 | 4
Tag = 32 - (12-1) -4 = 17
关联度1(唯一)Cache的行数N
备注1、不需要使用替换算法按内容寻址的相联存储器 
共同点0、Cache 标记容量:(Tag + 1 + 1 + 1) · 行数
1、只占 Cache 空间:有效位(1bit)、一致性维护位/脏位/修改位(1bit)、替换算法控制位(1bit)
2、关于Tag:
  ①一定是由主存地址结构推导出的
  ②Tag 是 Cache 和主存之间的唯一标识 ∴Tag占Cache和主存的位数
3、Cache命中的2个条件:①有效位为1;且②Tag 相同

 替换算法

替换算法随机算法 RAND先进先出算法 FIFO近期最少使用算法 LRU最不经常使用算法 LFU
原理//唯一遵循,程序局部性原理/
操作方式  被访问置0,其他+1,替换掉计数器最高的被访问的+1,最小的替换
备注 最容易发生抖动现象堆栈类算法 

 写策略

写策略写命中写不命中
方式全写法/写直达回写法写分配写不分配
操作CPU同时写数据到Cache和写缓冲中,由写缓冲写入主存Cache块被替换时才写入主存,修改时脏位置1主存加载块到Cache,然后只在Cache中更新直接修改主存数据
备注1、主存和Cache全都修改
2、解决”写缓冲“溢出,增加一个L2级Cache
3、能保证数据的一致性
1、计算Cache位数时,要算:1bit有效位+1bit脏位
2、可减少访存次数
  

Cache-主存-辅存

 Cache-主存主存-辅存
位置不同Cache靠近CPU辅存远离CPU
目的不同加快CPU访问信息的速度采用虚拟存储器机制,扩大系统的存储器容量
交换信息块的不同主存块block,8-128B页page,4KB-64KB
缺失处理(处理器)硬件(操作系统)软件
映射方式不同直接、全相联、组相联
由(处理器)硬件实现
只有全相联
由(操作系统)软件实现
写策略不同写直达、写回2种策略只采用写回策略
∵每次都写直达的开销巨大,无法容忍
相同点1、都用到了程序访问局部性,把相邻的局部信息,从慢速存储器复制到快速存储器
2、都需要考虑:映射方式、替换策略
3、在快速存储器找不到数据时,都需要从慢速存储器装入整个信息所在的块到快速存储器

相关文章:

  • 全量知识系统 程序详细设计 之 先验逻辑-实现:从“平凡”回到“平凡” (QA 百度搜索)
  • Echarts-实现地图并轮播地图信息
  • WebView的使用与后退键处理
  • CRMEB多商户商城系统,不止B2B2C
  • 【RISC-V 指令集】RISC-V 向量V扩展指令集介绍(八)- 向量整数算术指令
  • 【c++】string类常见接口函数
  • SpringMVC项目入门
  • python 读取文件内容每一行,写入另一个文件内
  • 微服务-7 Docker
  • 【Java基础题型】遍历1000以内的完数
  • 未来驾驶的革命:自动驾驶技术与智能交通系统的崛起
  • centos安装使用elasticsearch
  • python统计分析——一般线性回归模型
  • 从零开始的LeetCode刷题日记:28. 实现 strStr()
  • 【Java】Java使用Swing实现一个模拟计算器(有源码)
  • centos安装java运行环境jdk+tomcat
  • Django 博客开发教程 8 - 博客文章详情页
  • JavaScript HTML DOM
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • MobX
  • mockjs让前端开发独立于后端
  • MQ框架的比较
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • tweak 支持第三方库
  • ubuntu 下nginx安装 并支持https协议
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • 阿里云应用高可用服务公测发布
  • 闭包,sync使用细节
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 使用parted解决大于2T的磁盘分区
  • 微信公众号开发小记——5.python微信红包
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 小程序测试方案初探
  • 一个项目push到多个远程Git仓库
  •  一套莫尔斯电报听写、翻译系统
  • #define、const、typedef的差别
  • ()、[]、{}、(())、[[]]命令替换
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (论文阅读40-45)图像描述1
  • (强烈推荐)移动端音视频从零到上手(下)
  • (一)kafka实战——kafka源码编译启动
  • (一)插入排序
  • (原)Matlab的svmtrain和svmclassify
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (转)mysql使用Navicat 导出和导入数据库
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • **PHP二维数组遍历时同时赋值
  • .NET MVC 验证码
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .netcore如何运行环境安装到Linux服务器
  • .Net小白的大学四年,内含面经
  • /etc/sudoer文件配置简析
  • [ vulhub漏洞复现篇 ] Grafana任意文件读取漏洞CVE-2021-43798