计算机组成原理_存储器

1. 存储器的分类

2. 存储器的层次结构

一般来说,存储器的速度越快,价格越昂贵,相应的容量越小。

存储器的层次结构主要体现在缓存-主存和主存-辅存这两个存储层次上。

① CPU和缓存、主存能够直接交换信息;

② 缓存能直接和CPU、主存交换信息;

③ 主存可以和CPU、缓存、辅存直接交换信息;

④ 辅存只能和主存直接交换信息。

缓存-主存层次主要解决CPU与主存速度不匹配的问题。由于缓存的速度比主存的速度高,只要将CPU近期要用到的信息调入缓存,CPU就可以直接从缓存中获取信息,从而提高了访存速度。

主存-辅存层次主要解决存储系统的容量问题。辅存的速度很低,不能直接与CPU进行信息交换,但其容量很大,可以用来存放大量暂时不需要信息。

缓存、主存、辅存的关系。缓存、主存、辅存为当前计算机的三级存储系统,CPU首先访问速度最快的缓存Cache,而缓存中的数据由主存提供,称缓存中的数据为主存中数据的映射,主存中的数据是由速度最慢的辅存中获得的。采用三级存储系统后,可以大大提高CPU工作效率。

3. 存储器的主要技术指标

存储容量

存储容量是指存储器中能存放二进制代码的总位数。

存储容量 = 存储单元个数 × 存储字长 (单位为bit)

存储容量 = 存储单元个数 × 存储字长 / 8 (单位为Byte)

若MDR的位数为n,MAR的位数为m,则最大存储容量为 2^n × m

存储速度

存储速度是由存取时间和存取周期来表示的。

存取时间是指启动一次存储器读/写操作到完成该操作所需的全部时间。

存储周期是指存储器进行连续两次独立的存储器操作所需的最小时间间隔。通常存取周期大于存取时间,存取周期 = 存取时间 + 恢复时间

存储器带宽

存储器带宽指单位时间内存取的信息量,单位可以是Byte/s,bit/s等。

存储器的带宽决定了以存储器为中心的机器获得信息的速率。

4. 存储器的扩展

由于单片存储芯片的容量总是有限的,很难满足实际的需要,因此必须将若干存储芯片连在一起,以扩展存储容量。

1)位扩展

位扩展是指增加存储字长,比如用2片1K × 4位的存储芯片可组成一个1K × 8位的存储器。

位扩展是将两片相同存储器的地址并接在一起,让它们公用地址码(即字不变),片选线接在一起,读/写控制线也接在一起,两片的数据线并行输出,一片作为高位,一片作为低位。两片存储器芯片同时工作。

2)字扩展

字扩展是指增加存储字的数量,比如用2片1K × 8位的存储芯片可组成一个2K × 8位的存储器。

字扩展将两片相同存储器的数据线并接在一起作为公用输入输出端(即位不变),读/写控制前也接在一起,把地址线加以扩展,用扩展的地址线去控制两片存储器的片选线。两片存储器芯片不能同时工作,任一时间只有一片存储器被选通。

5. 随机存取存储器RAM

RAM可以随时从任一指定单元中读出数据,也可以随时向任一指定单元中写入数据。

它是一种易失性半导体存储器,即当电源掉电时,存储的信息会丢失。

按照存储信息原理的不同,RAM可以分为静态RAM和动态RAM。

1)静态RAM

静态RAM是用触发器工作的原理来存储信息,即使信息被读出后,它仍然会保持原始状态,不需要再生。

2)动态RAM

动态RAM依赖于电容存储电荷的原理来进保存数据。如果电容上有足够多的电荷表示存“1”,电容上无电荷表示存“0”。但是电容上的电荷一般只能维持1~2ms,其上存储的信息就不能长时间的维持。为了避免存储信息的丢失,必须在2ms之内对其所有存储单元进行一下重写,也就是给电容补充电荷,这种操作称为刷新

通常有三种方式对动态RAM进行刷新。

① 集中刷新

集中刷新是在规定的一个刷新周期内,对全部存储单元集中一段时间进行刷新,但是此时必须停止读/写操作,这个时间称为“死区”。这种方式的优点是速度高,缺点是死时间长。

② 分散刷新

分散刷新是对每行存储单元的刷新分散到每个存取周期内完成。其中,把机器的存取周期分成两段,前半段用来读/写或维持信息,后半段用来刷新。这种方式的优点是没有死时间,缺点是速度慢。

③ 异步刷新

异步刷新是前两种方式的结合,它既可以缩短“死时间”,也能充分利用最大刷新间隔为2ms的特点。它每隔一个固定的时间(大约是刷新时间/存取时间)去刷新一行,保证在2ms内每一行都得到刷新,刷新一行只停止一个存取周期,所以其死区时间为0.5μs。如果将刷新安排在指令译码阶段,则不会有死区时间。

3)静态RAM和动态RAM对比

① 静态RAM的速度更高。

② 动态RAM的集成度更高,芯片尺寸更低,功耗更低,价格也更便宜。

③ 静态RAM常用于Cache,而动态RAM常用于主存。

6. 只读存储器ROM

只读存储器用于存放固定不变的信息,它在正常工作时只能按给定的地址去读出信息,而不能写入信息。

但随着用户的需要,总希望能够任意修改ROM中的信息,所以就出现了PROM、EPROM、EEPROM、闪存等。

7. 主存储器

主存储器的基本组成

译码驱动能把地址总线送来的地址信号翻译成对应存储单元的选择信号,该信号在读/写电路的配合下完成对被选中单元的读/写操作。

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

地址线和数据线的位数共同反映存储芯片的容量。

控制线主要有读/写控制线和片选线。读/写控制线决定芯片进行读/写信号,片选线用来选择存储芯片。

主存储器与CPU的联系

当要从存储器读出某一信息字时,首先CPU将该字的地址送到MAR,经地址总线送至内存,并发出读命令。接着主存收到读命令后,将该地址单元的内容读出,送到数据总线上交由MDR处理。

当要从存储器写入某一信息字时,首先CPU将该字所在地址经MAR送到地址总线,并将要写入的字放入MDR,然后向主存发出写命令。主存收到写命令后,便将数据线上的信息写入到对应地址线指出的主存单元中。

8. Cache

局部性原理

时间局部性:某个数据项在被访问之后可能很快被再次访问。

空间局部性:某个数据项在被访问之后,与其地址相近的数据项可能很快被访问。

Cache的作用:为了解决主存与CPU之间速度的不匹配问题,CPU可以不直接与速度较慢的主存直接交换信息,而与高速缓冲Cache进行数据交换。

Cache的基本思想:根据局部性原理,可以将CPU近期要用到的程序和数据提前从主存送到Cache,那么就可以做到CPU在一定时间内只访问Cache。

CPU与cache之间通常一次传送一个字,而cache与主存之间通常一次传送一个块。其中一个块由若干字组成。

命中率:CPU要访问的信息在Cache内的比率。

  1. 怎么将CPU送来的主存地址转换成Cache地址?(一个块可以放在Cache的哪里?)

    由主存地址映射到Cache地址称为地址映射,一共有三种方式。

    ① 直接映射

    每一个存储器地址仅仅对应到Cache中的一个位置。映射方法是:

    (缓存块号) = (内存块号)mod(Cache中的块数)

    优点:硬件简单,成本低。

    缺点:利用率低,不够灵活,因每个主存块只能固定地对应某个缓存块,即使缓存内还空着许多位置也不能占用,使缓存的存储空间得不到充分的利用。

    ② 全相联映射

    每一个主存块可以放置到Cache中的任意位置。

    缺点:硬件复杂,成本高,在全相联Cache中要找一个指定的块,由于该块可以在Cache中的任意位置,因此需要检索Cache中所有的项。为了使检索更加有效,它是由一个与Cache中每个项都相关的比较器并行完成的。

    优点:冲突率小,利用率高。

    ③ 组相联映射

    组相联映射是对直接映射和全相联映射的一种折中,内存中的每个块可以放置到Cache中的部分位置。它把Cache分为Q组,每组有R块,映射关系为:

    (缓存组号 )= (内存块号)mod(Cache中的组数Q)

    每个块可被放置的位置数是固定的,每个块有R个位置可放,则称为是R路组相联Cache。主存中的每个块对应唯一的一个组,并且可以放在这个组的任意位置上。

    组相联映射的利用率和复杂度介于直接映射和全相联映射之间,而且有当R=1时,为直接映射方式,当Q=1时,为全相联映射方式。

  2. 如何在Cache中找到一个块?

  3. 当Cache已满或缺失时替换哪一块?

    当Cache内容已满或者是缺失时,我们必须决定替换哪一块,直接映射的替换很简单,因为只有一个替换的候选者,而组相联映射和全相联映射由于候选者比较多,所以需要采用一定的替换策略。

    ● 先进先出(FIFO)算法:选择最早调入Cache的块进行替换,不需要随时记录各字块的使用情况,比较容易实现,开销小。但不能提高Cache的命中率,可能会把一些经常使用的程序(如循环程序)也作为最早的cache块而替换出去。

    ● 近期最少使用(LRU)算法:比较好地利用访问局部性原理,替换出近期用的最少的字块,能够提高命中率,但电路较为复杂,成本高。

    ● 随机法:采用一个随机数产生器产生一个随机的被替换的块,不能提高Cache的命中率,电路简单。

  4. 写操作如何处理?

    Cache的读操作具体过程是:当CPU发出主存地址后,首先判断该存储字是否在Cache中,若命中,直接访问Cache,将该字送至CPU;若未命中,一方面要访问内存,将该字送至CPU,另一方面,要将该字所在的主存地址转入CPU,这时需要处理上述三个问题。

    写操作比较复杂,因为对Cache块内写入的信息,必须与被映射的主存块内地信息完全一致。当程序运行过程中需对某个单元进行写操作时,会出现如何使Cache中的内容与主存内容保持一致的问题,常用到两种基本方法。

    ● 写直达法:在写操作时数据既写入Cache又同时写入内存。

    优点:能够保证主存和Cache的数据始终保持一致,并且电路更容易实现。

    缺点:增加了访存次数。

    ● 写回发:只修改Cache的内容,而不立即写入主存;只有当此数据块被替换出时才写回主存。

    优点:减少了访问主存的次数。

    缺点:存在不一致性的隐患,并且电路较为复杂。

    解决问题:每个Cache行必须配置一个修改位,以反映此行是否被CPU修改过。

9. 辅助存储器

辅助存储器作为主存的后援设备又称为外部存储器。与主存相比,它的容量大、价格低、速度慢,属于非易失性存储器。

目前常用的辅助存储器有磁盘、磁带、光盘等。

posted on 2020-05-28 18:04  CrushOnJava  阅读(1395)  评论(0编辑  收藏  举报

导航