计算机组成原理哈工大期末_浅谈计算机组成原理(三)

1、

第二章:存储系统

通过下面的思维导图来依次分享「存储系统」里面重要知识点。

d91bcad07164a85df5d20f296e9d4179.png

2、

第一节:存储器的结构

1. 主存储器:简称主存,又称内存储器(内存),用来存放计算机运行期间所需的大量程序和数据,CPU可以直接随机地对其访问,也可以和高速缓冲存储器(Cache)以及辅助存储器交换数据。其特点是容量较小、存储速度较快、每位价格高。

2. 辅助存储器:简称辅存,又称外存储器(外存),是主存储器的后援存储器,用来存放当前暂时不用的数据和程序,以及一些需要永久性保存的信息,它不与CPU直接交换信息,其特点是容量极大、存储速度较慢、单位成本低。

3. 高速缓冲存储器:简称Cache,位于主存和CPU之间,用来存放正在执行的程序段和数据,以便CPU能够高速地使用它们。Cache的存储速度可以与CPU的存储速度相匹配,但存储容量小,价格高。

4. 随机存储器(RAM):存储器的任何一个存储单元的内容都可以随机存取,而且存取时间与存储单元的物理位置无关。同时RAM也是易失性存储器,即断电后存储信息即消失的存储器。其优点是读写方便、使用灵活,主要用作主存和高速缓冲存储器。

5. 只读存储器(ROM):存储器的内容只能随机读出而不能写入。信息一旦写入存储器就固定不变了,即使断电,内容也不会丢失。同时ROM也是非易失性存储器,即断电后信息仍保持的存储器。因此,通常用它存放固定不变的程序、常数和汉字字库,甚至用于操作系统的固化。它与随机存储器可共同作为主存的一部分,统一构成主存的地址域。

6. 串行访问存储器:对存储单元进行读/写操作时,需按其物理位置的先后顺序寻址,包括顺序存取存储器(如磁带)与直接存取存储器(如磁盘)。

7. 多级存储系统:主存与CPU直接相连,辅存与主存直接相连,同时Cache介于CPU与主存之间,分别于CPU和主存相连。其中“Cache—主存”层次主要是解决CPU与主存速度不匹配问题,“主存—辅存”层次主要的解决存储系统的容量的问题。在存储系统中,Cache、主存能与CPU直接交换信息,辅存则要通过主存与CPU交换信息。

补充:主存和Cache之间的数据调动是由硬件自动完成的,对所有程序员均是透明的(即不可见的),而主存和辅存之间的数据调动则是由硬件和操作系统共同完成的,对应用程序员的透明的(即不可见的)。

3、

第二节:半导体随机存储器

1. 半导体存储芯片的基本结构如下:

①存储矩阵:由大量相同的位存储单元阵列构成。

②译码驱动:将来自地址总线的地址信号翻译成对应存储单元的选通信号,该信号再读写电路的配合下完成对被选中单元的读/写操作。

③读写电路:包括读出放大器和写入电路,用来完成读/写操作。

④读/写控制线:决定芯片进行读/写操作。

⑤片选线:确定哪个存储芯片被选中。

⑥地址线:是单向输入的,其位数与存储字的个数有关。

⑦数据线:是双向的,其位数与读出或写入的数据位数有关,数据线数与地址线数共同反映存储芯片容量的大小。

2. 存储体的构成:把存放一个二进制的物理器件称为存储元,它是存储器的最基本构件;地址码相同的多个存储元构成一个存储单元,由若干存储单元的集合构成存储体。

3. 静态随机存储器(SRAM):其存储元是用双稳态触发器(六管MOS)来记忆信息的,因此即使信息被读出后,它仍保持其原状态而不需要再生(非破坏性读出)。但是只要电源被切断,原来保存的信息便会消失,故属于易失性半导体存储器。

SRAM的存取速度快,但集成度低,功耗较大,所以一般用来组成高速缓冲存储器。

4. 动态随机存储器(DRAM):是利用存储元电路中栅极电容上的电荷来存储信息的;DRAM采用地址复用技术,地址线是原来的1/2,且地址信号分行、列两次传递;DRAM电容上的电荷一般只能维持1~2ms,因此即使电源不掉电,信息也会自动消失,为此,每隔一定时间必须刷新,通常取2ms,这个时间称为刷新周期。

相对于SRAM来说,DRAM具有容易集成、价位低、容量大和功耗低等优点,但是DRAM的存取速度比SRAM慢,一般用来组成大容量主存系统。

5. 只读存储器(ROM):ROM和RAM都是支持随机存取的存储器,其中SRAM和DRAM均为易失性存储器,而ROM中一旦有了信息,就不能轻易改变,即使掉电也不会丢失,它在计算机系统中是只供读出的存储器。其优点为结构简单,所以位密度比可读写存储器高,具有非易失性,所以可靠性高。

6. ROM的类型:根据制造工艺的不同,ROM可分为掩膜式只读存储器(MROM)、一次可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、闪速存储器(Flash Memory)和固态硬盘(Solid State Drives)。

4、

第三节:主存储器与CPU的连接

1. 主存储器与CPU的连接图如下:

35c8a62dfc29ae9f2f51dd0c421eb377.png

连接原理为:

①主存储器通过数据总线、地址总线和控制总线与CPU连接

②数据总线的位数与工作频率的乘积正比于数据传输速率。

③地址总线的位数决定了可寻址的最大内容空间。

④控制总线(读/写)指出总线周期的类型和本次输入/输出操作完成的时刻。

2. 主存的扩容方法:

①位扩展法:用多个存储器件对字长进行补充,增加存储字长,使其数据位数与CPU的数据线数相等。位扩展的连接方式是将多个存储芯片的地址端、片选端和读写控制端相应并联,数据端分别引出。

②字扩展法:增加存储器中字的数量,而位数不变。字扩展将芯片的地址线、数据线、读写控制线相应并联,而由片选信号来区分各芯片的地址范围。

③字位同时扩展法:指既增加存储字的数量,又增加存储字长。

5、

第四节:双口RAM和多模块存储器

1. 双端口RAM:指同一个存储器有左、右两个独立的端口,分别具有两组相互独立的地址线、数据线和读写控制线,允许两个独立的控制器同时异步地访问存储单元。

2. 多模块存储器:为提高访问速度,常采用多模块存储器,常用的有单体多字存储器和多体并行存储器。

①单体多字存储器:指存储器中只有一个存储体,每个存储单元存储m个字,总线宽度也为m个字,一次并行读出m个字,地址必须顺序排列并处于同一存储单元。

②多体并行存储器:指由多体模块组成,每个模块都有相同的容量和存储速度,各模块都有独立的读写控制电路、地址寄存器和数据寄存器。它们既能并行工作,又能交叉工作。

6、

第五节:高速缓冲存储器

1. 时间局部性:指在最近的未来要用到的信息,很可能是现在正在使用的信息,这是因为程序存在循环。

2. 空间局部性:指在最近的未来要用到的信息,很可能与现在正在使用的信息在存储空间上是临近的,这是因为指令通常是顺序存放、顺序执行的,数据一般也是以向量、数组、表等形式簇聚地存储在一起的。

3. 高速缓冲技术:利用程序访问的局部性原理,把程序中正在使用的部分存放在一个高速的、容量较小的Cache中,使CPU的访存操作大多数针对Cache进行,从而使程序的执行速度大大提高。

4. 高速缓冲存储器(Cache)的工作原理:Cache位于存储器层次结构的顶层,通常由SRAM构成。Cache和主存被分成若干大小相等的快(Cache块又称为Cache行),每块由若干字节组成,块的长度称为长(Cache行长)。由于Cache的容量远小于主存的容量,所以Cache中的块数要远少于主存中的块数,它仅保存主存中最活跃的若干块的副本。故而Cache按照某种策略,预测CPU在未来一段时间内欲访存的数据,将其装入Cache。

当CPU发出读请求时,如果访存地址在Cache中命中,就将此地址转换成Cache地址,直接对Cache进行读操作,与主存无关;如果Cache不命中,则仍需访问主存,并把此字所在的块一次从主存调入Cache内。若此时Cache已满,则需根据某种替换算法,用这个快替换掉Cache中原来的某块信息。(注意:CPU与Cache之间的数据交换以字为单位,而Cache与主存之间的数据交换则是以Cache块为单位。)

5. Cache和主存的映射:指把主存地址空间映射到Cache地址空间,也就是把存放在主存中的程序按照某种规则装入Cache中。Cache和主存的映射方式有:

①直接映射:主存数据块只能装入Cache中的唯一位置。若这个位置已有内容,则产生冲突,原来的块将无条件地替换出去(无需使用替换算法)。直接映射实现简单,但不够灵活,直接映射的块冲突概率最高,空间利用率最低。

②全相联映射:可以把主存数据块装入Cache中的任何位置。全相联映射方式的优点是比较灵活,Cache块的冲突概率低,空间利用率高,命中率也高;缺点是地址变换速度慢,实现成本高。

③组相联映射:将Cache空间分成大小相同的组,主存的一个数据块可以装入到一组内的任何一个位置,即组间采用直接映射,而组内采用全相联映射。它是对直接映射和全相联映射的一种折中。

6. Cache中主存块的替换算法:在采用全相联映射和组相联映射方式时,从主存向Cache传送一个新快,当Cache中的空间已被占满时,就需要使用替换算法置换Cache行。替换算法有:

①随机算法(RAND):随机地确定替换的Cache块。它的实现比较简单,但没有依据程序访问的局部性原理,故可能命中率较低。

②先进先出(FIFO)算法:选择最早调入的行进行替换。但也没有依据程序访问的局部性原理,可能会把一些经常使用的程序块(如循环程序)也作为最早进入Cache的块替换掉。

③近期最少使用(LRU)算法:依据程序访问的局部性原理选择近期内长久未访问过的存储行作为替换的行,平均命中率要比FIFO要高,是堆栈类的算法。

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

④最不经常使用(LFU)算法:将一段时间内被访问次数最少的存储行换出。每行也设置一个计数器,新行建立后从0开始计数,每访问一次,被访问的行计数器加1,需要替换时比较各特定行的计数值,将计数值最小的行换出

7. Cache写策略:因Cache中的内容是主存块副本,当对Cache中的内容进行更新时,就需选用写操作策略使Cache内容和主存内容保持一致。此时有两种情况:

对于Cache写命中:

①全写法(也称写直通法、write-through):

当CPU对Cache写命中时,必须把数据同时写入Cache和主存。当某一块需要替换时,不必把这一块写回主存,将新调入的块直接覆盖即可。该方法实现简单,能随时保持主存数据的正确性。缺点是增加了访存次数,降低了Cache的效率。

②写回法(write-back):

当CPU对Cache写命中时,只修改Cache的内容,而不立即写入主存,只有当此块被换出时才写回主存。采用这种策略时,每个Cache行必须设置一个标志位(脏位),以反映此块是否被CPU修改过。

对于Cache写不命中:

①写分配法(write-allocate):加载主存中的块到Cache中,然后更新这个Cache块,它试图利用程序的空间局部性,但缺点是每次不命中都需要从主存中读取一块。

②非写分配法(not-write-allocate):只写入主存,不进行调块。

说明:非写分配法通常与全写法合用;写分配法通常和写回法合用。

7、

第六节:虚拟存储器

1. 虚拟存储器:主存和联机工作的辅存共同构成了虚拟存储器,二者在硬件和系统软件的共同管理下工作。对于应用程序员而言,虚拟存储器是透明的。虚拟存储器具有主存的速度和辅存的容量,提高了存储器的性能价格比。

2. 虚拟存储器的特点:虚拟存储器将主存或辅存的地址空间统一编址,形成一个庞大的地址空间,在这个空间内,用户可以自由编程,而不必在乎实际的主存容量和程序在主存中实际的存放位置。用户编程允许涉及的地址称为虚地址或者逻辑地址,虚地址对于的存储空间称为虚拟空间或程序空间。实际的主存单元地址称为实地址或者物理地址,实地址对应的是主存地址空间,也称为实地址空间。虚地址比实地址要大很多。

3. 页式虚拟存储器:以页为基本单位的虚拟存储器称为页式虚拟存储器。虚拟空间与主存空间都被划分成同样大小的页,主存的页称为实页,虚存的页称为虚页。把虚拟地址分为两个字段:虚页号和页内地址。虚地址到实地址之间的变换是由页表来实现的。页表是一张存放在主存中的虚页号和实页号的对照表,记录着程序的虚页调入主存时被安排在主存中的位置。页表一般长久地保存在内存中。

4. 段式虚拟存储器:段式虚拟存储器中的段是按程序的逻辑结构划分的,各个段的长度因程序而异。把虚拟地址分为两部分:段号和段内地址。虚拟地址到实地址之间的变换是由段表来实现的。段表是程序的逻辑段和在主存中存放位置的对照表。段表的每一行记录了与某个段对应的段号、装入位、段起点和段长等信息。由于段的长度可变,所以段表中要给出各段的起始地址与段的长度。

5. 段页式虚拟存储器:

把程序按逻辑结构分段,每段再划分为固定大小的页,主存空间也划分为大小相等的页,程序对主存的调入、调出仍以页为基本传送单位,这样的虚拟存储器称为段页式虚拟存储器。在段页式虚拟存储器中,每个程序对应一个段表,每段对应一个页表,段的长度必须是页长的整数倍,段的起点必须是某一页的起点。

此时虚地址分为段号、段内页号、页内地址三部分。CPU根据虚地址访存时,首先根据段号得到段表地址:然后从段表中取出该段的页表起始地址,与虚地址段内页号合成, 得到页表地址:最后从页表中取出实页号,与页内地址拼接形成主存实地址。

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

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

相关文章

网页中竖的目录怎么改成横的_怎么学习手绘插画?小白也能入门哦

怎么学习手绘插画?小白也能入门哦!在回答这个问题之前,我们先来认识一下什么插画?相信很多人对插画这个概念是很笼统的。插画在中国被人们俗称为插图。发展至今其应用范围很是广泛包括;出版物配图、卡通吉祥物、广告、…

python自动测试v_python下selenium自动化测试自我实践

周末实验自动化提交数据时,本来没打算写记录的,不过遇到一些问题,觉得可以提提。基本操作就不用写了,搜索过程中都发现了两个博客都出了seleniumpython的书,说明操作一搜一大把。 1. 等待页面加载完成 本来用的sleep()…

graphpad细胞增殖曲线_肿瘤干细胞?居然被这两个新加坡人轻松干掉了?

近日,著名医学期刊《自然•医学》上发表了一篇关于肿瘤干细胞的文章。来自新加坡的研究团队发现,人类非小细胞肺癌的肿瘤干细胞需要大量的蛋氨酸,以维持自身组蛋白的甲基化,这对于肿瘤干细胞的生长和致瘤作用至关重要。同时&#…

isight参数优化理论与实例详解_案例1(ISIGHT集成ADAMS CAR方法实现)

本文字数1304字25图,建议阅读时间7分钟强调一下是ISIGHT,不是INSIGHTINSIGHT是ADAMS内置的一个试验设计模块,它提供了一组统计工具,用于分析仿真结果,辅助优化和改进系统ISIGHT是功能强大的计算机辅助优化平台&#xf…

修改图片src_【学习园地】企业SRC搭建

xSRC-企业SRC搭建腾讯xSRC 开源版是腾讯安全应急响应中心(TSRC)面向合作伙伴推出的安全应急响应中心(SRC)建站软件,软件源代码开放,可支持合作伙伴轻松构建SRC平台,省去大量开发运维工作,并支持个性化功能及页面设置,企…

2 数据源配置_论多数据源(读写分离)的实现方案

好的,作为一个合格的bug生产者,我们直接进入主题,多数据源和读写分离实现方案。首先多数据源和读写分离什么时候我们才需要呢?多数据源:一个单体项目过于复杂,需要操作多个业务库的时候,就需要多…

docker安装gitlab_docker 安装部署gitlab

下载镜像并且启动//下载镜像(镜像较大,如果网速不行可以切换阿里云镜像仓库) docker pull gitlab/gitlab-ce:latest //启动镜像 docker run --name gitlab -d -p 18080:80 -p 1443:443 -p 2222:22 -v /data/gitlab/config:/etc/gitlab -v /data/gitlab/logs:/var/lo…

easyexcel导出百万级数据_百万级别数据Excel导出优化

这篇文章不是标题党,下文会通过一个仿真例子分析如何优化百万级别数据Excel导出。笔者负责维护的一个数据查询和数据导出服务是一个相对远古的单点应用,在上一次云迁移之后扩展为双节点部署,但是发现了服务经常因为大数据量的数据导出频繁Ful…

运行catia_CATIA清除错误目录及防串链接

清除错误目录大家好今天我来教大家如何清除CATIA错误目录,由于我们在日常工作中经常会互相发送数据,而CATIA的缓存功能通常会记录这些文件的路径,所以我们打开别人发的数据时在桌面的右下角通常会有警告的提醒,那我们如何来清除缓…

python 键盘输入数字_九宫格键盘输入

九宫格键盘输入 Letter Combinations of a Phone Number 给定一个数字字符串,返回数字可能代表的所有可能的字母组合。 数字到字母的映射(就像九宫格电话按钮一样)如下图。 Given a digit string, return all possible letter combinations t…

java2组随机数的共通数_java随机数产生-指数分布 正态分布 等

1 指数分布指数分布的概率密度函数:ylamda*exp(-lamda*x)x>0由此可以计算概率分布函数:y1-exp(-lamda*x)x>0y是 X首先,把y当作是在(0,1)区间的均匀分布的随机变量。然后,求y1-exp(-lamda*x)的逆函数&#xff0c…

c# combobox集合数据不显示_excel打开数据时显示乱码/问号amp;看起来一样却v不出来怎么办...

1、乱码问题:今天正好碰到这种情况,想起来写一写。有时从客户那里拿到的CSV等文件,直接用excel打开是这样的:其实观察一下会发现?的地方一般就是中文,实质上是中文字符显示不出来。有小伙伴一直是单独下个W…

if嵌套while循环语句_Python学习笔记015--while循环嵌套

while循环嵌套前面学习过if的嵌套了&#xff0c;想一想if嵌套是什么样子的&#xff1f;类似if的嵌套&#xff0c;while嵌套就是&#xff1a;while里面还有while<1>while嵌套的格式while 条件1:条件1满足时&#xff0c;做的事情1条件1满足时&#xff0c;做的事情2条件1满足…

long类型怎么转换成string_Python知识点-Python变量类型有哪些?

Python的内置变量类型是非常基础的知识点&#xff0c;善用变量类型转换在日常的工作学习中会给我们带来非常大的帮助。相对于其他语言&#xff0c;Python的变量类型既有自己的特色方法&#xff0c;也有借鉴前辈的优秀之处。今天酷仔整理总结了关于Python内置变量类型一文&#…

mysql连接服务密码_Hydra爆破常见服务密码

Hydra是一款专业的服务密码探测工具&#xff0c;支持FTP、LDAP、MYSQL、Oracle、POP3、SMB、SSH等网络服务&#xff0c;多用于信息安全检查工作中弱口令登陆测试。实验环境操作系统&#xff1a;Kali 2019.4目标网络&#xff1a;192.168.168.0/24爆破教程第一步 升级系统、软件版…

矩阵求逆c语言实现_[V-SLAM] Bundle Adjustment 实现

SLAM问题的后端有主要有滤波和优化两种方案。目前&#xff0c;普遍认为优化的方法在精度上要超过滤波方法&#xff0c;因为它可以进行多次的线性化。近年来出现的SLAM算法也大都是基于优化的算法&#xff08;如ORB-SLAM、DSO等&#xff09;。优化问题的核心便是Bundle Adjustme…

centos安装 mysql_Linux centos 安装 mysql 5.6

一、mysql下载1、方式一(简单粗暴)直接在linux 目录下wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.43-linux-glibc2.12-x86_64.tar.gz2、方式二(官方下载)浏览器打开网址&#xff1a;https://www.mysql.com如下图依次点击1、2、3、4步如下图设置对应版本点击…

tracepro杂散光分析例子_光刻机的蜕变过程及专利分析

来源&#xff1a;芯通社近两年&#xff0c;中国芯片产业受到了严重打击&#xff0c;痛定思痛之余也让国人意识到芯片自主研发的重要性。从2008年以来&#xff0c;十年间&#xff0c;芯片都是我国第一大宗进口商品&#xff0c;进口额远超于排名第二的石油。2018年我国进口集成电…

docker mysql日志_面试官问:了解Mysql主从复制原理么?我呵呵一笑

搭建Mysql主从同步之前&#xff0c;我们先来说他们之间同步的过程与原理&#xff1a;同步复制过程献上一张图&#xff0c;这张图诠释了整个同步过程主从复制过程&#xff1a;slave节点与主节点进行连接&#xff0c;建立主从关系&#xff0c;并把从哪开始同步&#xff0c;及哪个…

查看socket缓冲区数据_什么是socket缓冲区?

Socket 就是发送和接收网络数据&#xff0c;Socket 有发送缓冲也有接收缓冲&#xff0c;这些缓冲区有什么作用&#xff1f;1、什么是Socket缓冲区&#xff1f;熟悉 Socket 的读者都知道&#xff0c;Socket 的发送和接收&#xff0c;就是调用 send 和 recv 函数。实际操作中&…