【计算机组成原理】存储系统

一、存储系统的基本概念

1.1 存储器的分类:

1.1.1 按在计算机中的作用(层次)分类

主存储器:主存,又称内存储器(内存),用来存放计算机运行期间所需的程序和数据,CPU可以直接随机地对其进行访问,也可以和高速缓冲存储器及辅助存储器交换数据。

辅助存储器:辅存,又称外存储器(外存),用来存放当前暂时不用的程序和数据,以及一些永久性保存的信息。

高速缓冲存储器:简称Cache,介于主存和CPU之间,用来存放当前CPU经常使用的指令和数据,以便CPU可以高速访问他们。

1.1.2 按存储介质分类

磁表面存储器:磁盘,磁带

磁芯存储器

半导体存储器:MOS型存储器,双极性存储器

光存储器:光盘

1.1.3 按存取方式分类

随机存储器:存储器中的任何一个存储单元都可以随机存取,而且存取时间与存储位置无关。

只读存储器:存储器的内容只能随机读出而不能随机写入。信息一旦写入存储器就固定不变,即使断电,内容也不会丢失。

串行访问存储器:对存储单元进行读/写操作,需要按照物理地址去寻址。

1.1.4 按信息的可保存性分类

易失性存储器

非易失性存储器

1.2 存储器的性能指标

  • 存储容量 = 存储字数 X 字长
  • 单位成本:每位价格 = 总成本 / 总容量
  • 存储速度:数据传输率 = 数据的宽度 / 存取周期
  • 存取时间:存取时间是指从启动一次存储器操作到完成该操作所经历的时间,分为读出时间和写入时间
  • 存储周期:存取周期又称读写周期或访问周期。
  • 主存带宽:表示每秒从主存进出信息的最大数量,单位为字/秒。

1.3 多级层次的存储系统

二、主存储器

2.1 DRAM芯片和SRAM芯片

2.1.1 DRAM的工作原理(动态RAM)

       动态随机存储器(DRAM)是利用存储元电路中的栅极电容上的电荷来存储信息的(读出1:MOS管接通,电容放电,数据线上产生电流;读出0:MOS管接通后,数据线上无电流),DRAM的基本存储元通常只使用一个晶体管,所以他比SRAM的密度要高的。(破坏性读出)

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

       DRAM上的电荷一般只能存储2ms,因此即使电源不断电,信息也会自动消失,因此,每隔一定时间必须刷新。每次刷新一行存储单元,利用行列地址来减少选通线的数量。

        假如DRAM内部结构排列成128 X 128的形式,读/写周期0.5us(2ms一共4000个周期) 

常用的刷新方式有三种:

  • 刷新方式一:每次读写完都刷新一行,系统的存取周期变为1us,前0.5us时间用于正常读写,后0.5us时间用于刷新某行。
  • 刷新方式二:2ms内集中安排时间全部刷新,系统的存取周期还是0.5us,有一段时间专门用于刷新,无法访问存储器,称为访存死区。
  • 刷新方式三:2ms内需要产生128次刷新请求,每个2ms / 128 = 15.6us一次,每15.6us中有0.5us的死时间。

2.1.2 SRAM的工作原理(静态RAM)

       通常把存放一个二进制位的物理器件称为存储元,他是存储器的最基本的构件。地址码相同的多个存储元构成了一个存储单元,若干个存储单元的集合构成了存储体。

       静态随机存储器的存储元是用双稳态触发器来记忆信息的,因此即使信息被读出后,它仍保持其原状态而不需要再生(非破坏性读出)。

       SRAM的存取速度快,但集成度低,功耗较大,价格昂贵,一般用于高速缓冲存储器。

2.1.3 SRAM和DRAM的比较

类型特点SRAM(静态RAM)DRAM(动态RAM)
存储信息触发器电容
破坏性读出
读出后需要重写?(再生)不用需要
运行速度
集成度
发热量
存储成本
易失/非易失存储器易失(断电后信息消失)易失(断电后信息消失)
需要“刷新”不需要需要
送行列地址同时送分两次送
主要用途高速缓存主机内存

2.1.4 DRAM的地址线复用技术

2.2 只读存储器(*ROM)

2.2.1 只读存储器(ROM)的特点

       ROM和RAM都是支持随机访问的存储器,其中SRAM和DRAM都是易失性半导体存储器,而ROM中一旦有了信息,就不能轻易改变,即使掉电也不丢失。

ROM器件有两个显著的优点:

  1. 结构简单,所以位密度比可读写存储器的高
  2. 具有非易失性,所以可靠性高

2.2.2 ROM的类型

  • 掩模式只读存储器(MROM)
  • 一次可编程存储器(PROM)
  • 可擦除可编程只读存储器(EPROM)
  • Flash存储器
  • 固态硬盘(SSD)

2.2.3 总结

  • 很多芯片虽然名字是"Read-Only",但很多ROM也可以"写"
  • 闪存的写速度一般比读速度更慢,因为写入前要先擦除
  • RAM芯片是易失性的,ROM芯片是非易失性的。很多ROM也具有“随机存取“的特性

三、主存储器和CPU之间的连接

想要扩展主存子树怎么办?——字扩展

数据总线宽度 > 存储芯片字长怎么办?——位扩展

       现在的计算机MAR、MDR通常集成在CPU内部。存储芯片内只需要一个普通的寄存器(暂存输入、输出数据)

3.1 单块存储芯片与CPU之间的连接

3.2 多块存储芯片与CPU之间的连接

增加主存的存储字长——位扩展

增加主存的存储字数——字扩展

线选法译码器选法
n条线——n个选片信号n条线——2^n个选片信号
电路简单电路复杂
地址空间不连续地址空间可连续

主存容量扩展——字位同时扩展

3.3 译码器

四、外存储器

4.1 磁盘存储器

计算机的外存储器又称为辅助存储器,目前主要适用磁表面存储器。

4.1.1 磁盘设备的组成

磁盘设备的组成:

磁盘驱动器:核心部件是磁头组件和盘片组件,

磁盘控制器:硬盘存储器和主机的接口

盘片:一块硬盘含有若干记录面,每个记录面划分为若干磁道,而每条磁道又划分为若干扇区,扇区是磁盘的最小单位,即磁盘按块存取。

磁头数:记录面数 

柱面数:有多少条磁道

扇区数:表示每条磁道上有多少个扇区

4.1.2 磁盘的性能指标

磁盘的容量:一个磁盘所能存储的字节总数称为磁盘容量。磁盘容量有非格式化容量和格式化容量之分。

非格式化容量是指磁记录表面可以利用的磁化单元总数。

记录密度:记录密度是指盘片单位面积上记录的二进制的信息量,通常以道密度、位密度和面密度表示。

平均存取时间 = 寻道时间(磁头移动到目的磁道)+旋转延迟时间(磁头定位到所在扇区)+ 传输时间(传输数据所花费的时间)

数据传输率:磁盘存储器在单位时间内向主机传送数据的字节数,称为数据传输率。

假如磁盘的转数为r(转/秒),每条磁道容量为N个字节,则数据传输率为Dr = r * N

4.1.3 磁盘的地址

主机向磁盘控制器发送寻址信息,磁盘的地址一般如图所示:

4.1.4 磁盘的工作过程

       磁盘的主要操作是寻址,读盘,写盘。每一个操作都对应一个控制字,硬盘工作时,第一步是取控制字,第二步是执行控制字。

       硬盘属于机械式部件,其读写操作是串行的,不可能在同一时刻即读又写,也不可能在同一时刻读两组数据或写两组数据。

4.1.5 磁盘阵列

       RAID(廉价冗余磁盘阵列)是将多个独立的物理磁盘组成一个独立的逻辑盘,数据在多个物理盘上分割交叉存储,并行访问,具有更好的存储性能、可靠性和安全性。

4.2 固态硬盘SSD

原理:基于闪存技术Flash Memory,属于电可擦除ROM,即EEPROM

组成:闪存翻译层——负责翻译逻辑块号,找到对应的页。存储介质:多个闪存芯片。

五、高速缓冲存储器

       由于程序的转移概率不会很低,数据分布的离散性较大,所以单纯依靠并行主存系统提高主存系统的。这就必须从系统结构上进行改进,即采用存储体系。通常将存储系统分为Cache——主存层次和主存——辅存层次。

5.1 程序访问的局部性原理

       程序访问的局部性原理包括时间局部性和空间局部性。时间局部性是指在最近的未来要用到的信息,很可能是现在正在使用的信息,因为程序中存在循环。空间局部性是指在最近的未来要用到的信息,很可能与现在正在使用的信息在存储空间上是临近的,因为指令通常是顺序存放、顺序执行的,数据一般也是以向量、数组等形式存储在一起的。

5.2 Cache的基本工作原理

       Cache位于存储器层次结构的顶层,通常由SRAM构成。为了便于Cache和主存间交换信息,Cache和生存都被划为相等的块,由于Cache的容量远小于主存的容量,所以Cache仅仅保存主存中最活跃的若干块的副本。

命中率的计算:

设一个程序执行期间,Cache的总命中次数为Nc,访问主存的总次数为Nm,则命中率为:H = Nc(Nc + Nm)。

平均访问时间的计算:

设tc为命中时的Cache访问时间,tm为未命中时的访问时间,1 - H表示未命中率,则Cache——主存系统的平均访问时间Ta为:Ta = Htc + (1 - H)tm 或 Ta = Htc + (1 - H)(tm + tc)

5.3 Cache和主存的映射关系

直接映射

主存中的每一块只能装入Cache中的唯一位置,如果这个位置已经有内容,则产生块冲突,原来的块将无条件地被替换出去。直接映射的块冲突最高,空间利用率最低。

Cache行号 = 主存块号 mod Cache总行数

全相联映射

主存中的每一块可以装入Cache中的任何位置,每行的标记用于指出该行取自主存中的那一块,所以CPU访问时需要与所有Cache行的标记进行比较。全相联映射的优点是:Cache的冲突概率低,空间利用率高,命中率高。

组相联映射

将Cache分为Q个大小相等的组,每个主存块可以固定装入组中的任意一行,

Cache组号 = 主存块号  mod  Cache组数

5.4 Cache替换算法

随机算法

随机地确定替换的Cache块。它的实现比较简单,但未依据程序访问的局部性原理,因此命中率较低。

先进先出算法

选择最早调入的行进行替换。它比较容易实现,但未依据程序访问的局部性原理

近期最少使用算法

依据程序访问的局部性原理,选择近期内长久没被访问的Cache行作为替换的行。

计数器变换规则:

命中时,所命中的行的计数器清零,比其低的计数器加1,其余不变;

未命中且还有空闲行时,新装入的行的计数器置为0,其余全部加1;

未命中其无空闲行时,计数值最大的块被淘汰,新装的块的计数器置为0,其余全部加1。

最不经常使用算法

将一段时间内被访问次数最少的存储行换出,每行设置一个计数器,新行建立后从0开始计数,每访问一次,被访问的行计数器加1,将最小值进行替换。

5.5 Cache写策略

写命中

全写法:当CPU对Cache写命中时,必须把数据同时写入Cache和主存。当某一块需要替换时,不必将这一块写会主存,用新调用的块直接覆盖即可。

回写法:当CPU对Cache写命中时,只把数据写入Cache,而不立即写入主存,只有当此块被换出时才写回主存。

写不命中

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

六、虚拟存储器

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

6.1 虚拟存储器的基本概念

       虚拟存储器将主存或辅存的地址空间统一编址,形成了一个庞大的地址空间,在这个空间内,用户可以自由编程,而不必在乎实际上的主存容量个程序在主存中实际的存放位置。

6.1 页式存储器(存储在主存中)

       页式虚拟存储器以页为基本单位。虚拟空间与主存空间都被划分为同样大小的页,主存的页被称为实页,虚存的页被称为虚页。把虚拟地址分为两个字段,虚页号和页内地址。

6.1.1 页表

6.1.2 快表

       根据局部性原理,如果我们在一个页表中,找到了一个页表框,我们需要将该页表项复制到快表(TLB)中,在之后的查找中,我们会进行查看是否TLB命中。逻辑地址 = 逻辑页号 + 页内地址(虚地址 = 虚页号 + 页内地址);物理地址 = 主存块号 + 页内地址(实地址 = 实页号 + 页内地址)

6.2 虚拟存储器

6.2.1 对页表进行更一步地理解

6.2.2 存储器的层次结构

段式虚拟存储器——按照功能模块拆分,拆分的页面大小不相等。虚拟地址 = 段号 + 段内地址。

段页式虚拟存储器——按照功能模块分段,再讲各个段分页。

把程序按逻辑结构进行分段,每段再划分为固定大小的页,主存空间也划分为大小相等的页,程序对主存的调入、调出仍以页为基本传送单位。每个程序对应一个段表,每段对应一个页表。

虚拟地址 = 段号 + 段内页号 + 页内地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

加油,旭杏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值