王道考研计算机组成原理——存储系统

存储系统的基础知识 

 

微信打开的时候会有一个人站在地球上,这个过程就是把程序从辅存转移到主存,数据只有调入主存当中才可以被CPU访问

cache:主存速度还是慢,为了进一步缓解CPU和主存之间的速度矛盾

在微信打视频聊天的时候,在这一段比较长的时间内可能会频繁地访问和打视频电话有关的代码和数据,就可以把这部分数据放到cache当中

虚拟存储:应用程序员可以看到的主存容量要比实际容量大得多的

其中主存和cache都可以和CPU直接数据交换

主存——辅存:解决了主存容量不足的问题

主存——cache:解决了主存和CPU的速度不匹配的问题

现在的辅存基本都采用的固态硬盘

m.2接口的SD读写速度可达4GB/s

各种存储器类型

光盘:CD-ROM VCD DVD;磁带》顺序存储

机械硬盘:磁盘

磁带不支持随机访问,当你读写某个存储单元当中的数据的时候,显然是和这个存储单元所在的物理位置是有关的,因此磁带只能顺序访问

随机访问指的是你随便指定一个地址,它访问的速度是一样的

磁盘驱动器:两种的结合体,光盘貌似也是?

其他三种是指定地址,然后去访问该地址,相联存储器是根据数据内容查找它的存储位置在哪

MAR反应的是存储字数,MDR反应的是存储字长 

主存储器的基本组成 

MOS管:电压达到一定条件成为导体,否则不导电,所以它是一个半导体元器件

电容:下方接地,当上面给了5V之后,电荷移动给电容充电,进而保存一个bit的电荷

电容带电荷表示的是一个二进制的1,否则不带电就是0

mos管决定了电容的充/放电(数据的写入/读出)

一次读写都是以存储字为单位的

每个地址对应的是译码器的一条输出线,一条输出线一次性读取/写入一整个存储字的内容

红色的线选通之后,通过绿色的线把每一位的信息传送到MDR当中,然后CPU通过数据总线从MDR当中取走一整个的数据

红色的线叫字选线,绿色的叫数据线(位线);地址总线和数据总线都是连CPU的

控制电路:检测当电信号稳定的时候才放入MAR或者取走MDR当中的数据

为了让译码器输出的电信号稳定可靠,通常会在译码器的后面接一个驱动器来对电信号进行放大

读写电路:红色、绿色的线+控制电路

片选线:有很多块小芯片,应该选哪个使用呢?

8×8位的芯片:2^8个存储单元(8位地址)×每个存储单元的存储字长

按字节编址,但是支持按字寻址

SRAM与DRAM的区别 

只有行和列的选通线同时接通,该存储单元才被选中

刷新一行:先把对应行的MOS管置1让他接通,然后进行读/写(有硬件支持:先读出一行的信息,然后再重新写入)

为了让DRAM的地址线更少:地址线复用技术

地址线指的是传入译码器的,当然DRAM内存里面还是(2^n)*(2^n)的布局;以前是n/2位地址线同时传输行和列地址然后进行译码,一共2^n根地址线,现在是行地址译码器和列地址译码器共用n/2根地址线,先翻译行,再翻译列,从而达到减少地址线的目的

DDR3 DDR4都是SDRAM芯片

重写需要消耗一定的时间,使得CPU连续访问同一个内存的时间变长

只读存储器ROM 

各种ROM都是支持随机访问的 

因为需要先擦除再写入,所以写比读要慢

固态硬盘=flash闪存芯片+控制单元组成

多体并行存储器 

恢复时间:你把电容里面的电荷都读走了,不得再往里面重新写入电荷吗?所以不得安排个恢复时间? 

双端口RAM:双核的CPU通过RAM的两个端口来对内存进行并行的访问 

总线设计(在电脑主板)就会更加复杂

CPU从存储单元当中读/写一个字实际只需要r的时间,后面3r的时间由硬件自动处理,剩下的3r的时间里CPU都是处于空闲的,但是对于这个存储体却并不能进行操作

宏观上n->∞的时候,采用低位交叉编址的内存,CPU连续读写的时间接近r

低位交叉编址,可以理解为四个内存条同时工作

当m>T/r的时候有一个存储体就会"偷懒",所以设置m=T/r就最好!发挥最大的效率!

双通道内存:低位交叉的2体(多体)存储器

多体交叉存储器

不对称双通道,更大的内存条那里无法低位交叉变址,使得打游戏的时候性能不稳定,所以需要两块主频、容量都相同的内存条插在颜色相同的卡槽上来组成双通道

主存与CPU的连接 

多块存储芯片如何与CPU连接?

1、增加主存的存储字长(位扩展):每个芯片地址线都连上,数据线各引出一位

位扩展:增加数据的位数

2、字扩展

字扩展:增加存储单元的总数

存储芯片的字长已经有8位了,所以不需要进行位扩展了,数据总线的传输能力已经被使用到极致了,但是CPU的寻址能力并没有被发挥到极致 

线选法:如果两块芯片的片选信号都置1的话,两块芯片的数据都会从数据总线读出,为了区分是哪块芯片,可以让他们的片选线接CPU不同的地址引脚,1代表第一块芯片,0代表第2块芯片

如何避免11 00的情况:译码器编码法

CPU的地址线和每个芯片都是相连的(A0-A12) 

A13-A15:片选线,A0-A12:地址线(每个芯片的地址线都要和CPU直接相连),但是整个字扩展的芯片对外暴露的地址引脚只有A0-A12(在芯片内部共接)

小结:位扩展可以使存储字长更长,从而更好地发挥数据总线的数据传输能力

字扩展可以增加存储器的存储字数,可以更好地利用CPU的寻址能力(范围)

二者可以从不同维度扩展主存的总容量

每两块芯片为一组实现了位扩展(4位->8位)

3-8译码器的硬件组成

使能端类似于片选线,使芯片激活

CPU确定收到稳定的数据信号之后,才会撤销刚刚发出的地址信号

外存 

   

格式化:扇区A损坏了,就用扇区B来顶替 

固态硬盘 

Cache的工作原理 

局部性原理 

命中率H:CPU欲访问的信息已经在cache当中的比率

缺失(未命中)率M=1-H 

Cache和主存的映射关系

解决的问题就是主存块应当放到cache的什么位置

最终的目的就是我给你一个物理地址,怎样找到它在cache当中对应的位置!

全相联映射、组相联映射、直接映射

组相联映射:映射到特定的组之后就不管了(组内哪个空闲就把哪一块分配出去) 

使用硬件实现:cache块的"标记",用于记录存储的主存块号;cache的有效位,表示是否存储主存块号

根据主存地址的块号来匹配cache的标记位

有效位:不能用标记为0来代表没有映射关系,所以要加一位有效位

全相联映射

随意放到cache的任意位置

直接相联映射

什么是标记?》标记就是主存的"短号",你标记匹配了,主存块号也就匹配了

通过物理地址里面的行号直接找到cache对应的行,然后只需要通过比较一次"标记",就可以访问对应的内容了 

组相联映射

每2个cache块为一组,总共8个cache块,一共分成4组

2路组相联映射:2块为一组,一组有2块

组相联是组号,直接映射是行号

Cache替换算法 

颠簸现象:刚换出的块又被换入

cache的总块数为2^n,则只需要n位用于计数器即可

如果是组相连映射:肯定是从组内淘汰一个cache块呀!  

LFU:微信视频结束之后,对应的块的计数器已经很大了,在很长的时间内不会被淘汰

了解即可:

cache的写策略:CPU修改了cache当中的内容如何同步到主存当中?

当cache行被淘汰的时候才会把修改后的整个cache行写回到主存:减少了访存次数,但是存在数据不一致的隐患(由于主存的数据没有及时和cache同步,而导致主存《》磁盘交换错误的信息)

使用脏位来表示cache块的内容有没有被修改过,没有修改的块就不需要写回了

回写:

类似消息队列

直写:


 

逻辑地址转换

程序员能看到的地址都是虚拟地址,都是假的

快表和cache起作用的阶段也不一样,快表TLB是在地址变换的过程中起到了加速的作用,而cache是在最终得到物理地址并访问地址的时候起到了加速的作用

所有的程序只需要调用一部分数据就可以了

打游戏的时候loading比较慢:需要将游戏地图等数据加载到内存当中

 段表要添加一个段长度字段,因为每个段的长度是不一样的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/313535.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Apalis_iMX6_eMMC常驻ToradexEasyInstaller

By Toradex胡珊逢 简介 Toradex Easy Installer 是 Toradex 计算机模块上出厂预装的软件,可以令开发人员首次安装不同的操作系统,同时也适生产线上模块的批量烧写作业。通常在安装系统后,Toradex Easy Installer 将被从模块的存储上擦除。本…

第 378 场周赛 解题报告 | 珂学家 | 分类讨论场

前言 整体评价 感觉是分类讨论场,t3用二分,是因为二分不会错,直接分类讨论容易WA. t4一开始看错题了,T_T, 看成翻转,写了半天StringHash, 还用上双hash,共8个StringHash。 重排的话,其实统计…

【算法提升—力扣每日一刷】五日总结【12/25--12/29】

文章目录 LeetCode每五日一总结【12/25--12/29】2023/12/25今日数据结构:双锁实现阻塞队列 2023/12/26每日力扣:[215. 数组中的第K个最大元素(堆实现)](https://leetcode.cn/problems/kth-largest-element-in-an-array/) 2023/12/…

Dungeon Scrawl——在线虚拟世界地图制作器

今天带来一款十分有趣的地图应用,同样也是在线地图工具,如果我们想要制作此类风格的地图,这款工具定能助我们一臂之力。 按照惯例先给出网址: Dungeon Scrawl | Free Online D&D Map Maker 进入网站,点击Start S…

2022年全国职业院校技能大赛(高职组)“云计算”赛项赛卷①第一场次:私有云

2022年全国职业院校技能大赛(高职组) “云计算”赛项赛卷1 第一场次:私有云(30分) 目录 2022年全国职业院校技能大赛(高职组) “云计算”赛项赛卷1 第一场次:私有云&#xff0…

英飞凌TC3xx之一起认识GTM系列(一)先来认识GTM架构

英飞凌TC3xx之一起认识GTM系列(一)先来认识GTM架构 1 先来认识GTM的通用架构2 概览2.1 架构的简要说明2.2 架构概述1 先来认识GTM的通用架构 GTM系统使用GTM全局时钟fGTM 运行(本文称为SYS_CLK)。 特点如下: GTM模块由两个主要部分组成: 由博世设计的GTM IP v3.1.5.1 …

Spring Boot日志:从Logger到@Slf4j的探秘

写在前面 Hello大家好,今日是2024年的第一天,祝大家元旦快乐🎉 2024第一篇文章从SpringBoot日志开始 文章目录 一、前言二、日志有什么用?三、日志怎么用?四、自定义日志打印💬 常见日志框架说明4.1 在程序…

【嵌入式】飞凌嵌入式ELF1开发板 初体验 | 嵌入式Linux开发

文章目录 前言一、开机初体验1.1、开机1.2、连接WIFI 二、基本功能测试2.1、主板命令行测试2.1.1、TF卡热插拔测试2.1.2、LED命令行测试2.1.3、数据库测试 三、基础编程实战3.1、交叉编译链部署3.2、温湿度传感器程序3.3、看门狗程序3.4、六轴传感器程序3.5、MQTT物联网 bug记录…

CMake入门教程【基础篇】CMake是什么?为什么学习CMake

文章目录 1.CMake简介2.为什么要学习CMake3.什么样的项目需要用CMake3.1大型或复杂项目3.2跨平台项目3.3需要高度定制化构建的项目3.4 研究和开源项目3.5小型或简单项目 4.CMake的作用5.支持的编译器5.1Windows平台5.2Unix/Linux平台5.3macOS平台5.4其他编译器5.5支持的平台 CM…

PostgreSQL16.1(Windows版本)

1、卸载原有的PostgreSQL   点击Next即可。  点击OK即可。 卸载完成。 2、安装 (1) 前两部直接Next,第二部可以换成自己想要安装的路径。 (2) 直接点击Next。…

【2023年度总结】 何其有幸 年岁并进 一元复始 万象更新

🌙 新年将至,万物更新,旧疾当愈。 今年极度焦虑。发生太多事情,做出很多改变。 自律。早起、拍照、运动、读书、学习、认识了很多厉害的朋友,尝试影响周围的人。这是我生活正向能量的来源。 学习。今年依然是把大量…

仿网易云音乐网站PHP源码,可运营的原创音乐分享平台源码,在线音乐库系统

源码介绍 使用PHP和MYSQL开发的原创音乐分享平台源码,仿网易云音乐网站。用户可以在网站上注册并上传自己的音乐作品,系统内置广告系统,为网站创造收入来源。 安装教程 1.导入sql.sql 2.修改 includes\config.php 数据库信息和网址都改成…