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

存储系统的基础知识 

 

微信打开的时候会有一个人站在地球上,这个过程就是把程序从辅存转移到主存,数据只有调入主存当中才可以被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.mzph.cn/news/589557.shtml

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

相关文章

Git 常用命令(从远程gitee/GitCode/GitHub下载项目到本地仓库)

​分布式项目控制管理gitGit 分布式版本控制系统(序章1)windows和linux操作Git(序章2) git在windows和ubuntu操作命令无异。本次举例平台:ubuntu18.04 查看是否安装和查看版本号 git --version # 仓库 # 在当前目录新建一个Git代码库$ git init​# 新建一个目录…

约翰瑟尔的故事

约翰瑟尔的故事 你即将看到的是“瑟尔效能机”创始者,约翰瑟尔的故事 据瑟尔原话,该装置会是通向自由能源的关键 “他”拥有“会飞”等不可思议的特性相关说法还有待证实,此记录篇仅为告知观者 制片方对瑟尔技术持中立态度 以下是我们所搜集…

【兔子王赠书第14期】《YOLO目标检测》涵盖众多目标检测框架,附赠源代码和全书彩图!

文章目录 写在前面YOLO目标检测推荐图书本书特色内容简介作者简介 推荐理由粉丝福利写在后面 写在前面 小伙伴们好久不见吖,本期博主给大家推荐一本关于YOLO目标检测的图书,该书侧重目标检测的基础知识,包含丰富的实践内容,是目标…

python编程从入门到实践(1)

文章目录 2.2.1命名的说明2.3字符串2.3.1使用方法修改字符串的大小写2.3.2 在字符串中使用变量2.3.3 制表符 和 换行符2.5.4删除空白2.5.5 删除前缀+后缀 2.2.1命名的说明 只能包含:字母,下划线,数字 必须:字母&#…

【LeetCode:34. 在排序数组中查找元素的第一个和最后一个位置 | 二分】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

Linux驱动学习—pinctl和gpio子系统

1、pinctl和gpio子系统&#xff08;一&#xff09; 1.1pinctrl 子系统主要工作内容 <1>获取设备树中 pin 信息&#xff0c;管理系统中所有的可以控制的 pin&#xff0c; 在系统初始化的时候&#xff0c; 枚举所有可以控制的 pin&#xff0c; 并标识这些 pin。 <2>…

【年度征文邀请,老题目新解法,描述我的一些编程心得】2023-12-30

缘由本论坛年度征文邀请 之前论坛给的一个笔耕不辍实体已经给后辈玩了&#xff0c;那波浪上的孙猴儿会随波逐流摇来晃去的&#xff0c;后辈挺喜欢的。 前几天回复了一个整数正序分解&#xff0c;虽说是老话题了&#xff0c;不过常有新想法&#xff0c;其实整数正序分解整合不…

计算机网络物理层 习题答案及解析

2-1 下列选项中&#xff0c;不属于物理层接口规范定义范畴的是&#xff08; D &#xff09;。 A. 引脚功能 B. 接口形状 C. 信号电平 D. 传输媒体 【答案】D 【解析】 2-2 某网络在物理层规定&#xff0c;信号的电平范围为- 15V~15V &#xff0c; 电线长…

js 对象

js 对象定义 <!DOCTYPE html> <html> <body><h1>JavaScript 对象创建</h1><p id"demo1"></p> <p>new</p> <p id"demo"></p><script> // 创建对象&#xff1a; var persona {fi…

CSS 丝带形状效果

CSS 丝带形状效果如图&#xff1a; 通过CSS创建折叠丝带形状 这里代码应该比较清晰易懂&#xff0c;clip-path 的值应该也容易理解。要注意的是&#xff0c;我们使用了 color-mix() 函数&#xff0c;这个属性允许创建主颜色的深色版本。现在如果我们将元素旋转相反的方向&#…

「Kafka」生产者篇

「Kafka」生产者篇 生产者发送消息流程 在消息发送的过程中&#xff0c;涉及到了 两个线程 ——main 线程和Sender 线程。 在 main 线程中创建了 一个 双端队列 RecordAccumulator。 main线程将消息发送给RecordAccumulator&#xff0c;Sender线程不断从 RecordAccumulator…

使用STM32 HAL库实现RS232串口通信的步骤和技巧

本文将介绍如何使用STM32 HAL库来实现RS232串口通信&#xff0c;包括步骤、API函数的调用方法和一些技巧。具体将讨论串口配置、发送和接收数据的方法&#xff0c;并提供相关示例代码。 引言&#xff1a; STM32 HAL库为嵌入式系统提供了简化和标准化的编程接口&#xff0c;方便…

什么是零日攻击?

1. 什么是零日漏洞 零日攻击是指利用零日漏洞对系统或软件应用发动的网络攻击。 零日漏洞也称零时差漏洞&#xff0c;通常是指还没有补丁的安全漏洞。由于零日漏洞的严重级别通常较高&#xff0c;所以零日攻击往往也具有很大的破坏性。目前&#xff0c;任何安全产品或解决方案…

chrome浏览器记录不住网站登录状态,退出后再打开就需要重新登陆的解决办法

chrome浏览器记录不住网站登录状态&#xff0c;退出后再打开就需要重新登陆&#xff0c;比较繁琐。 解决办法&#xff1a; 1、chrome浏览器右上角三个竖的点&#xff0c;然后进入“设置”&#xff08;Settings&#xff09;&#xff0c;选择“隐私与安全”&#xff08;Privacy…

【产品设计】信息建设三驾马车:PLM系统拆解

本篇文章将介绍PLM的基础信息、发展及模块功能等内容&#xff0c;让大家对PLM有一个全面、完整地了解&#xff0c;方便在后期的工作中能快速地使用其解决方案&#xff0c;希望本篇文章能对你有所帮助。 PLM系统主要实现产品模块业务&#xff0c;既包含产品的创意设计、样品打样…

vmware部署docker+springboot+MySQL(超详细)

一、前期准备 (一)安装jdk #docker search openjdk #docker pull openjdk:8 (二)确认网络 如果局域网其他终端(如手机访问),虚拟机网络连接需要选择《桥接》模式,而且,需要使用有线连接,不能使用Wi-Fi,切忌切忌! 并且要选择实际的那个有线连接。比如我这里是“R…

ArkTS - @Builder自定义构建函数

这个Builder作用就是可以把组件样式抽离出来&#xff0c;写成公共组件&#xff0c;下边记录下全局自定义构建函数用法及注意的地方。 官方文档&#xff1a;开发者可以将重复使用的UI元素抽象成一个方法&#xff0c;在build方法里调用。 一、用法 下边代码&#xff0c;我在Co…

5 个顶级的免费磁盘分区软件工具评测分享

磁盘分区可能是一个脆弱而复杂的过程&#xff0c;磁盘崩溃或用户设备受到病毒攻击的风险很高。因此&#xff0c;它们很难由用户单独或手动管理。本文详细介绍了可以帮助简化磁盘分区过程的不同软件工具、它们的功能和优点。那么让我们开始吧。 什么是磁盘分区工具&#xff1f;…

CSS 纵向顶部往下动画

<template><div class"container" mouseenter"startAnimation" mouseleave"stopAnimation"><!-- 旋方块 --><div class"box" :class"{ scale-up-ver-top: isAnimating }"><!-- 元素内容 -->&…

vue3(十)-基础入门之Swiper轮播与自定义指令

一、Swiper html : 注意&#xff1a; class“swiper-wrapper”、class“swiper-slide” 等类名不能写错 <body><!-- 导入下载好的包或通过 CDN 导入vue、swiper.js、swiper.css --><!-- <script src"https://unpkg.com/vue3/dist/vue.global.js"&…