计算机组成原理-储存系统和结构

储存系统和结构

目录

  • 储存器的分类
  • 随机储存器
  • 高速储存缓冲器
  • 虚拟储存器

储存器的分类

下面针对常见的储存器分类进行讨论

按储存器在计算机系统中的作用分类

高速缓冲储存器

位于CPU和主储存器之间, 用来缓存正在执行的程序段和数据,以便CPU能高速使用它们.高速缓冲器的速度与CPU匹配.

主储存器

用来存放正在运行的程序和数据,CPU可以直接随机地进行访问主存.由于访问主存的速度与CPU运算的速度差别很大,因此,主存的性能一定程度上影响了整个计算机的性能.

辅助储存器

用来存放当前暂不参与运行的程序和数据以及一些需要永久性保存的数据.辅助储存器的存取速度很慢并且CPU不能直接访问它.辅助储存器中的信息需要先读入主存后,才能被CPU访问.

按存取分类

随机存取储存器(RAM)

随机储存指的是CPU能够随机对储存器中的内容进行操作, CPU对任何一个储存单元的操作时间都一样,与储存单元的物理位置无关.

只读储存器(ROM)

ROM可以看做是RAM的一种特殊形式, 其特殊在:储存器的内容只能随机读取而不能写入.这类储存器常用来储存那些不需要改变的信息.

按信息的可保存性分类

非易失性储存器

断电后信息仍然能够保存的储存器称为非易失性储存器.

易失储存器

断电后信息不能够保存的储存器称为易失性储存器.

随机储存器RAM

RAM细分为静态RAM(SRAM)和动态RAM(DRAM).

SRAM

SRAM的记忆单元为双稳态触发器.由于双稳态触发器的工作特性,SRAM中保存的信息一直处于充电状态,这使得SRAM不像DRAM那样需要定时刷新电路来保存信息.因此,SRAM的存取速度要比DRAM快.但SRAM的集成度较低,功耗也较大,所以一般用来组成高速缓冲储存器.

DRAM

DRAM的记忆单元为3个MOS管组成的记忆单元.DRAM中的信息是靠MOS管中的栅极电容保存的,因此需要定时给电容充电,以保证信息不丢失.DRAM虽然储存速度没有SRAM快,但是其集成度高,功耗较小.

高速缓冲器

由于主存的存取速度跟不上CPU的运算速度,主存的速度影响了计算机的整体性能.出于各个方面的考虑,计算机的设计者在主存和CPU之间架设由SRAM组成的高速缓冲器,利用高速缓冲器的运行速度接近CPU的特点,来解决主存的性能瓶颈.

高速缓冲器的工作原理

首先介绍一下程序局部性原理这个概念. 程序局部性包含两个方面:时间局部性和空间局部性.

时间局部性指的是如果一个储存单元被访问,则可能该储存单元很快会被访问到,这是因此程序中存在循环.

空间局部性指的是如果一个储存单元被访问,则该储存单元邻近的单元很可能很快就被访问, 这是因此程序中大部分指令是顺序储存,顺序执行,数据一般也是以数组,向量,树,表等形式簇聚在一起.

高速缓冲技术就是利用程序局部性原理,把程序中正在使用的部分存放在一个高速但容量较小的Cache中,使得CPU的访存操作大部分都针对Cache进行,从而提高程序的执行速度.

Cache的读写操作

Cache的读操作

当CPU发出读请求时,如果请求的数据存在Cache时,就直接对Cache进行操作.否则访问主存,并把该块信息一次从主存调入Cache内.若此时Cache的容量已满的话,则需要根据某些替换算法来替换.

Cache的写操作

当CPU发出写请求时, 如果要写入的数据存在Cache中的话,需要进行一定的写处理,比如:写直达法和写回法.如果写Cache不命中的话,就直接把信息写入主存,并有两种处理方法:

  • 不按写分配法,即只把要写的信息写入主存.
  • 按写分配法,即把要写的信息写入主存后还需要写入Cache中.

替换算法

当Cache的空间被占满后,就需要进行数据的替换.常用的替换算法有如下三种:

随机算法

简单的根据一个随机数来进行替换

先进先出算法

按照调入Cache的顺序来决定替换的顺序.先Cache的数据会先被替换掉.这种方法容易实现并且系统开销小.其缺点是当遇到循环程序块时,效率会不高.

近期最少使用算法(LRU)

LRU算法是把CPU近期最少使用的块作为被替换的目标.LRU算法相对上面两种方法合理,但是实现起来比较复杂,系统开销也大.

更新策略

为了保证Cache与主存的内容一致,必须选择合适的更新策略.

写直达法

在CPU执行写操作时,必须同时把数据写入Cache和主存中.这种方法实现简单,而且能够随时保证主存数据的正确性.但是由于每次进行写操作时,都得写入主存,这一定程度上会降低存取速度.

虚拟储存器

概念

虚拟储存器是将主存或者辅助储存的地址空间进行统一的编址,形成一个庞大的储存空间.这样一来,可以不必考虑程序在主存中是否装得下以及这些程序在主存中的存放位置.

虚拟地址:通常程序员编写程序用到的地址称为虚拟地址.

物理地址:实际主存单元地址称为物理地址.

虚地址和物理地址是一一对应的关系,实现这个一一映射的关系需要硬件和操作系统的协助.在操作系统的管理下,程序和数据会先存放在磁盘,然后操作系统将当前需要的程序和数据调入主存中,供CPU使用,还没使用到的程序和数据都存放在磁盘中.

当程序运行时,CPU以虚地址来访问主存,在硬件找出虚地址和物理地址之间对应的关系后,判断该虚地址对应的内容是否已经调入主存.如果已经装入主存的话,则通过CPU变址来访问主存中的内容.如果不存在主存中,则将虚拟地址对应的数据从磁盘中装入内存,再由CPU访问.如果此时主存已满,根据替换算法将主存中暂时不需要的数据调回辅存中,再从辅存中调入需要的数据.

页式虚拟储存器

以页为基本单位的虚拟储存器称为页式虚拟储存器.主存空间和虚拟空间都被分为若干个大小相等的页.主存的页称为实页,虚存的页称为虚页.

上图为虚拟地址到物理地址的映射过程.

虚地址是由虚页号和页内地址所组成的.虚页号为页表中的索引号,页表是用于虚地址到物理地址的转换,简单的说就是虚页号的集合.每个虚页号和储存在页面基址寄存器的页表起始地址组成一个页表地址,页表地址指向页表中的一项,项目中含有装入位和实页号.如果装入位1为的话,说明该页面已经被调入主存,实页号和虚地址中的页内地址组成物理地址.如果装入位为0的话,证明该页面还没有被调入主存,需要启动IO系统,将该页从辅存中主存后再拱CPU使用.

段式虚拟储存

段式虚拟储存中的段是按照程序中的逻辑结构划分的,各个段的长度是因程序而异.在页式虚拟储存中,虚地址到物理地址的映射需要一个页表,同样的,在段式储存中,虚地址到物理地址的转换也需要一个段表.段表中的每一个项目记录了段号,装入位,段起点和段长度等.

上图为段式虚拟储存中,虚地址到物理地址的映射过程,原理跟虚拟地址差不多,这里不多做记录.

段页式虚拟储存

结合段式和页式虚拟储存的特点,这种虚拟储存方式为段页式虚拟储存.段页式将程序其逻辑结构分段,每段再划分为若干个大小相同的页,主存空间也划分为若干同样大小的页.

虚存和实存之间以页为基本单位进行传送,每个程序对应一个段表,每段对应一个页表.

CPU访问时,虚地址包括段号,段内页号,页内地址3部分.

首先将段表起始地址和段号合成,得到页表地址,然后从段表中取出该段的页表起始地址,与段内页号合成,得到页表地址.最后从页表中得到实页号,与页内地址拼接成主存的实地址.

段页式虚拟储存整合了前面两种结构的优点.但是要经过两级查询才能完成地址转换,费时自然也会增多.

参考资料

计算机组成原理

分享到