计算机组成原理—储存器的层次结构

储存器的层次结构

首先众所周知,在主机中一个完整的储存系统应该包括了主储存器,cache,外储存器。
其实我们还可以把储存器分为随机储存器(RAM),只读储存器(ROM)。
RAM又可以分为静态RAM和动态RAM,即为SRAM和DRAM。
SRAM常用作cache,DRAM常用作内存。
RAM 的特点就是可以随机的存取,但是系统断电之后,RAM内保存的数据会丢失。而ROM内的数据只能随机读出,而不能进行写入,但是断电之后的内容可以保留下来。
RAM和ROM一起构成了构成了主存。
储存器的层次:
储存器的层次结构主要体现在内存和外存,内存和cache两个层次上。
内存和cache之间的数据交换是由硬件完成的。
内存和外存之间的数据交换是由硬件和操作系统完成的。
SRAM和DRAM 的介绍:
SRAM储存器主要是由触发器构成的,经常用作cache,它的数据的存取速度仅次于寄存器。
DRAM储存器主要使由电容构成的,常用作内存,因为是电容组成的,电容内部的电荷的保持时间很短暂,为了是数据能够保存下来,就必须进行刷新的操作。
因为储存体是一个举矩阵的形式,所以每次刷新都是按行进行刷新的。
刷新我们可以三种刷新方式:集中刷新,分散刷新,异步刷新
集中刷新:是把刷新操作集中到一段时间内进行,由于刷新的时候,是不能进行读写操作的,所以在刷新的这段时间会产生一个“死区”。
分散刷新:是把刷新操作分散地进行,周期性地进行。在分散刷新中,传统的储存周期已经不是,等于一个读写周期,而是储存周期=读写周期+刷新一行的时间。
异步刷新:异步刷新是集中刷新和分散刷新的集合版。
储存器的内容的扩充:
储存器主要有三种线,数据线,地址线,控制线
储存器内容的扩充主要有三种方式:位扩充,字扩充,字位扩充
储存器的大小的格式是:aK X b位
位扩充:增加的储存器的储存字长,也就是增加了b,同时数据线的个数也要增加,数据线的个数等于b。多个储存器的片选信号线是连接在一起的,每次就取出新增加的位数的数据。
字扩充:增加的是储存器的储存单元个数。在字扩充中需要片选信号线来区分不同的芯片,在字扩充中往往CPU的地址线会比储存器的地址线要多,多出来的地址线常用于片选信号线。字扩充中每个芯片都应该和所有的数据线相连接。
字位扩充:字位扩充是字扩充和位扩充的结合体。首先是将储存器之间进行位扩充,形成一个小组,再在每个小组之间进行字扩充。和字扩充一样,多出来的地址线依旧是用于作为片选信号线。
提高储存器的存取速度的方式:
有两种方式,双口RAM和多模块储存器
双口RAM是具有两组相互独立的数据线,地址线和控制线,分别连接两个不同的CPU,同时还加入一个BUSY标志,防止同时进行访问。由于这个BUSY标志的存在,两个CPU在访问的时候就不会发生冲突,可以同时进行读操作。
多模块储存器:又可以分为单体多字储存器,多体并行储存器,
单体多字储存器:就是把储存器的储存字长增加了n倍,随之数据线的宽度也要增加n倍。这个储存器的缺点是,指令和数据都要连续的存储在内存中,存取的效果才会比较好。如果遇见了转移指令和不能连续存放的操作数,这个方法就不是那么明显。
多体并行存储器:就是采用多个模块组成的储存器,每个模块有独立的数据寄存器,地址寄存器和地址译码器,都是独立的储存器。
还可以分为高位交叉编址和低位交叉编址
高位交叉编址:所谓的高位交叉编址就是将每个存储器的地址编码的高位地址当作是体号,地位地址当作是体内地址。在高位交叉编址中,各个模块是串行地工作着,虽然方便了扩充,但是储存器的带宽收到了限制。
低位交叉编址:将地址编码的低位地址当作是体号,高位地址是体内地址。每个模块是可以实现并行的运行的,因为CPU的速度要比主存快,所以可以实现同时取值,大大提高主存的访问速度。
cache:
当CPU和外部设备都需要访问主存的时候,由于外部设备的优先级比较高,所以CPU不得不等待外部设备访问的结束,这时,我们引进了cahe,cache里卖弄储存了内存的部分的内容。
cache时基于局部性原理的,局部性原理分为时间局部性和空间局部性。所谓的时间局部性就某个指令或者数据被使用后,果断时间依旧会被使用。空间局部性值得是一个指令和数据被使用后,接下俩它周围的指令和数据都有可能会被使用。
cache和主存的地址变换方式:
有三种直接映射,全相联映射和组相联映射
直接映射的方式:这个方式是将cache分一定的行数,然后将主存相同的块数看成一个轮回。内存中的每个块都对应了cache相应的固定的块数。可以采用取余数的方法。
过程:当CPU的访存指令取出地址码,该地址码包括了标记,块号,和字号。首先根据内存的块号找到cache的块号,就是使用取余数的方法。之后用得到的块号在cache中找到相应的块,从块里面取出标志和内存的标志进行对比,如果该cache块的标志相同而且有效位也是有效的,意味着就是命中了,之后就用内存地址的低地址位区读取cache俩面的字,如果标志位不符合或者是有效位为0,则需要从内存中读取相应的块,替换原来的旧的块,同时将信息送到CPU,并把cache相应的块的有效位置1.
全相联的映射:这个映射的方式允许了内存中的任意一字块可以映射到cache中的任意位置。
全相联的映射过程:cpu的访存指令,指出了一个内存地址,该内存地址包括了块号,字号等,然后将内存的地址的块号于cache的标志进行对比,如果块号命中,则利用内存地址的低地址位去命中的cache块里读取说需要的字。如果块号没有命中,就去内存地址中读取相应的字,并把内存块读入到cache中。
组相联的映射:组相联映射就是全相联映射和直接映射的结合。组与组之间是直接映射,组内是全相联的映射。
全相联映射的过程:首先CPU 的访存指令给出了一个内存地址,这个内存地址低地址位是块内地址,再高一点的地址位是组号,剩下的地址位是标记位。每个cache块里面都存有了标记位和组号。首先通过组号寻找到cache中对应的组,然后将cache里面的标记为和内存地址的标记为进行对比,如果命中,则利用内存地址的低地址位取读取相应cache块里的字。如果不命中,就要去内存中取相应的块,并放入到cache中。
cache中的主存块替换算法:
这个主存块替换算法类似于,请求页面管理方式的页面置换算法:
主要有先进先出,最近最少使用,时钟置换算法,改良时钟置换算法等
cache的写策略:
写回法:当cache里面的数据被修改,修改位会被置为1,当相应的cache块被置换出去以后,如果修改位是1,这需要写回内存
全写法:当cache的内容被修改了,就要立即的写回内存。
虚拟储存器和cache:
虚拟储存器是一个逻辑储存器,而cache是一个真实存在的物理储存器。
两个储存器都运用了局部性的原理。虚拟储存器的实现依靠了操作系统和硬件的方式实现。而cache完全由硬件实现的。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值