存储系统

来源:互联网 发布:怎么制作视频软件 编辑:程序博客网 时间:2024/06/11 20:05

存储系统概述

一般计算机系统中主要有两种存储体系:
Cache存储体系:由Cache和主存储器构成;主要目的是提高存储器速度。Cache存储体系对系统程序员以上均透明
虚拟存储体系:由主存储器和磁盘存储器构成;主要目的是扩大存储器容量。虚拟存储器系统对应用程序员透明
存储系统存在层次结构
这里写图片描述
而存储系统的概念就是将两种或两种以上的存储器用硬件,软件,或硬件和软件相结合的方式联接在一起,并对它们进行管理。

内部存储器(主存储器)

随机读写存储器RAM

常规RAM芯片,其外部有地址引线,数据引线和控制信号引线。地址引线在芯片内部译码,可选中芯片内部的相应存储单元。例如:某静态RAM芯片上有n条地址线,这些地址线所能表示的地址编码有2^n种,这意味着该芯片内部有2^个存储单元。
为了对芯片内部的存储单元进行读写,就需要对地址信号进行译码。芯片内部的地址译码方式有两种:一维译码和二维译码。
一维译码适用于容量很小的芯片
这里写图片描述
二维译码就适用于容量大一点的芯片
这里写图片描述
而RAM又分为静态读写存储器SRAM和动态读写存储器DRAM

静态读写存储器SRAM


静态读写存储器的特点有以下:
1. n个这样的电路可构成n位存储单元。
2. 数据一旦写入就稳定地保存在电路中等待读出,只要不断电,信息一直保持。
3. 初始加电,状态随机。
4. 电路中总有晶体管导通,功耗大,集成度不高。

动态读写存储器DRAM

这里写图片描述
动态读写存储器的特点有以下:
1. n个这样的电路可构成n位存储单元。
2. 必须定时刷新,以保证所存储的信息不会丢失
3. 初始加电时,状态随机。
4. 在不进行读写及刷新时,电路中无晶体管导通

对比两种存储可以发现,动态存储器需要一直刷新以保持数据,同时不需要的时候也不会消耗功率,而且其集成度高,所以相对来说也会更常用一些。

只读存储器ROM

只读存储器ROM的重要特性是其存储信息的非易失性,存放在ROM中的信息不会因为去掉电源而丢失。当再次加电时,其存储的信息仍然存在。
1. 掩膜工艺ROM:这种ROM内的信息是厂商在出厂之前就根据要存储的信息利用半导体掩膜版进行生产的。一旦制出成品后,其存储的信息即可读出使用,但是却不可改变。这种ROM常用于批量生产。生产成本比较低
2. 可一次编程PROM:顾名思义,生产出来后只可以进行一次编程的ROM
3. 可擦写PROM:这种ROM最常用,可以多次编程。

高速缓冲存储器

存储体系的定义:两个或两个以上速度、容量和价格各不相同的存储器用硬件、软件、或软件与硬件相结合的方法连接起来成为一个存储系统。这个存储系统对应用程序员是透明的,并且,从应用程序员看,它是一个存储器,这个存储器的速度接近速度最快的那个存储器,存储容量与容量最大的那个存储器相等,单位容量的价格接近最便宜的那个存储器。

一般计算机系统中主要有两种存储体系:
Cache存储体系:由Cache和主存储器构成;主要目的是提高存储器速度。
虚拟存储体系:由主存储器和磁盘存储器构成;主要目的是扩大存储器容量。

高速缓冲存储器的工作原理建立在程序与数据访问的局部性原理上。
即在一段较短的时间间隔内程序集中在某一较小的主存地址空间上执行。这就是程序执行的局部性原理。而在程序运行的时候,不需要从慢速的主存中取指令和数据,而是直接访问这种高速且小容量的存储器,从而提高CPU的执行速度。

当CPU执行程序需从主存读指令或数据时,将存储器地址从地址线加到主存也加到地址映射与变换模块上。若在地址映射表中检索到要读写的数据在Cache中(命中),则通过地址映射表将地址转化成Cache的地址。若要读写的信息在Cache中找不到,那么这叫做未命中。此时,CPU从主存中读出指令或数据,同时将这个信息通过一定的规则替换掉Cache的某一存储块。注意的是Cache中的数据在未处理前和主存内是一样的,只是为了提高速度才将这部分数据放在Cache中的。

地址映射的方式

全相联

主存的任何一块可以拷贝到Cache中的任何一块中。每次调用数据时,先用给出的主存地址在相联存储器中找到Cache的块号,看是否能命中。然后Cache中这个数据的地址就是Cache的块号加上之前给的主存地址中的块内地址信息就可以得到该数据在Cache中的地址。
这里写图片描述

直接映射

对比与全映射中主存中的每一个数据都可以装入Cache中的任何一个位置,这种方式就是不同地址的数据只能放入一个特定的块内。就像把中国人按照不同的省份的人来区别一样,同一个省的人只能在某一个特定的存储块内。
这里写图片描述

组相联

上面的两种方式各有优缺点。把二者的优点结合起来就是组相联了。方式就是将Cache先分组,组内再分块。
这里写图片描述

替换算法

  1. 随机算法(RAND, Random Algorithm)
  2. 先进先出算法 (FIFO, First-in First-out Algorithm)
  3. 最不经常使用算法(LFU, Least Frequently Used Algorithm):计数器数多,实现困难。
  4. 近期最少使用算法(LRU, Least Recently Used Algorithm):
    多/少有/无。替换近期最久未用的块。
  5. 最佳替换算法(OPT, Optimal replacement algorithm)

主存与Cache中内容的一致性问题

需要注意到的是Cache中的数据被操作后要写回到主存中。一般有以下几种方法。
写回法

  • Cache命中 → 只修改Cache →
  • Cache中该块需替换,则写回主存。
  • Cache不命中 → 该块从主存拷贝至Cache

全写法(写直达法)

  • Cache命中 → 写Cache,同时写主存。
  • Cache不命中 → 直接写主存 →
  • Cache、主存一致性好;速度慢。

Cache的性能分析

Cache的访问周期为TC,主存的访问周期为TM,数据块调入Cache的块传输时间为TB ,Cache的命中率为H。当命中率很高时,Cache系统的平均访问周期就接近于Cache的访问周期TC。
Cache-主存系统的平均访问周期T:
T=H×TC+(1-H)×TM
T=H×TC+(1-H)×(TB+TC)
Cache-主存系统的加速比SP:SP=TM/T
例如某计算机:
H=95%,TM=100ns,TC=10ns,则
T=14.5ns,SP=6.9
由上我们可以得出命中率愈高,加速比愈大。但是最大也只能接近TM / TC。
注:Cache容量S与命中率H的关系H=1-S^(-0.5)
为了提高命中率我们设计了两级和多级Cache
对于两级Cache
两级Cache的总未命中率(总失效率):
总失效率=(失效率)第一级×(失效率)第二级
:10000次访存,第一级Cache失效400次,第二级Cache失效4次。
(失效率)第一级=400/10000=4%
(失效率)第二级=4/400=1%
利用两级Cache后总的失效率=0.04%。

虚拟存储器

虚拟存储器是由价格比较贵,容量不太大,速度相对比较高的主存储器和价格很低,容量非常大,速度慢的外部存储器,在操作系统及辅助硬件的管理下,所构成的像一个单一的,可直接访问的超大容量的主存储器。虚拟存储器有点类似于高速缓冲存储器,它的主存储器相当于高速缓冲存储器中的Cache,他的外部存储器相当于高速缓冲存储器中的主存储器。

虚拟存储器的管理方法主要分为三种:

  1. 页式虚拟存储器
    通过虚拟地址中的虚页号在页表中找到对应的实页号,然后实页号和原来的虚拟地址中的页内地址组合就构成了主存的物理地址
  2. 段式虚拟存储器
    将完成某种独立功能的程序模块定义为一段,例如主程序,子程序,数据块,表格等单独定义成一段。每一段包含段号,段起始地址(该段装入主存的起始地址),段长度(该段在主存中所占的地址空间)和状态(0或者1代表是否装入)等组成。查询时根据相应的段中的这些信息即可以得到想要的结果。
  3. 段页式虚拟存储器
    将程序按逻辑意义先分成段,再让各段和实主存都机械等分成相同大小的页面。每道程序通过一个段表和相应的一组页表来进行程序在主存空间中的定位。

对于多用户工作支持,由于虚拟空间是海量的,所以可以在虚拟存储管理的过程中为不同的用户编号,而各用户在编程时可自由使用整个虚拟存储空间。

0 0
原创粉丝点击