第6章 存储器和高速缓存技术
第一节 存储器概述 存储器用来存放程序和数据,是计算机各种信息的存储和交流中心。存储器可与CPU、输入输出设备交换信息,起存储、缓冲、传递信息的作用。
6.1.1 存储器的分类 1.按存储器根据用途和特点分类 (1)内部存储器。 (2)外部存储器。 2.按所用材料分类 (1)内部存储器。 (2)外部存储器。 2.按所用材料分类 (1) 半导体存储器 :由半导体器件及超大规模集成电路工艺制成。 (2) 磁存储器 :由磁性材料做成的存储器。 (3) 光存储器 :由光材料做成的存储器。
3.按照工作方式的不同来分类 (1) RAM (Random Access Memory,随机存储器):存储器任何单元的信息,都可按其地址随机地读取或写入,存取时间与单元地址无关。(2)ROM (Read Only Memory,只读存储器):ROM 只能读取存储体中的数据而不能被改写。 三种分类可以归结为图6-1所示:
图6-1 存储器的分类
6.1.2 存储器的性能指标 1.存储容量 通常以允许存放的字数×位数或用字节数来表示存储器的容量。如某存储器的容量为32M×16,表示该存储器有32M字节,每个字长为16位,存储容量越大,能存储的信息就越多。 1KB=210B=1024B 1MB=210KB=1024KB 1GB=210MB=1024MB 1TB=210GB=1024GB
现阶段,实际的硬盘容量是采用十进制换算,换算关系为: 1KB=1000B 1MB=1000KB 1GB=1000MB 1TB=1000GB 所以标为500G的硬盘,实际容量<500G。
2.存取速度 衡量存储器的存取速度常采用存取周期来表示。 存取时间:存储器存取时间(读/写时间),是指读、写命令有效地读、写完成操作所经历的时间,大约是纳秒级,存取时间越短表示存取速度越快。 (2) 存取周期:存取周期时间,是指连续两次独立的存储器读/写操作所需要的最小时间间隔。
3.可靠性 通常指存储器对温度、电磁场等环境变化的抵抗能力和工作寿命。 4.存储器的带宽 存储器的带宽B (Bandwidth),表示存储器被连续访问时,可提供的数据传输速率(单位时间内传输数据的个数),是单位时间里存储器所存取的信息量。通常用每秒钟传送信息的位数(或字节数)来表示。
6.1.3 微机系统中存储器的体系结构 小 快 存储容量 存取速度 大 慢 图6-2 存储系统的分级结构
第二节 半导体存储器 6.2.1 半导体存储器芯片的功能结构和工作过程
由许多存储单元排列而成。每个单元能存放1位二值代码(0或1),而每一个或一组存储单元有一个相应的地址代码。 将输入的地址代码译成相应的控制信号,利用这个控制信号从存储矩阵中把指定的存储单元选出。 控制芯片的工作状态及读写状态等 图6-3 存储器芯片的一般结构
6.2.2 随机存取存储器RAM(读、写) 1.SRAM SRAM 的基本存储单元是采用双稳态触发器,利用双稳态触发器的某一种稳定状态来表示一位二进制数据(1或0)。只要不对触发器进行新的触发或者不断电,它的这种稳定状态将得到保持,故称为静态RAM。
1 1 1 图6-4 六管静态RAM基本存储电路
2.DRAM DRAM 的基本存储单元,是由电容器C 及控制它充、放电的电路组成。它是一种以电荷充、放电来存储信息的存储器,每一位存储单元存储信息由电容C上存储电荷状态决定,如果对电容充电到高电平,则表示存储信息为1;如果对电容放电到低电平,则表示存储信息为0。
6.2.3 只读存储器ROM 1.掩模式ROM 这类ROM所存的数据,在芯片制造过程中就确定了,因而使用时只能读出,不能再进行改变。
2.一次编程ROM(PROM) 用户根据需要可自行将其中某些存储位元改为“0”)。它们只能进行一次性改写,一旦编程完毕,其内容便是永久性的,无法进行更改。
3.多次可编程ROM (1)紫外光擦除可编程EPROM。
3.多次可编程ROM (2)电可擦除的可编程EEPROM。
4.闪速存储器(Flash) 尽管EEPROM有按页编程功能,但仍感编程时间长得无法忍受,尤其是在编程大容量芯片时更是这样。为此,人们研制出新型的闪速(Flash) EEPROM。它的存储位元电路是在CMOS单晶体管EPROM存储位元基础上制造的,因此它具有非易失性。在断电时它也能保留存储内容,这使它优于需要持续供电来存储信息的易失性存储器,如静态和动态RAM。
第三节 CPU与存储器的连接 连接时,应考虑以下几个问题: CPU 总线的负载能力。 (2)存储器与CPU 的速度匹配问题。 (3)存储器地址分配及译码。
6.3.1 存储器地址分配 在进行地址分配时,一定要将ROM和RAM分区域安排。IBM PC/XT的地址内存地址分配情况如图6-6所示。它是将ROM安排在高端,而把RAM安排在低端。在多芯片组成的微机内存中,往往通过地址译码器实现地址分配。
图6-6 IBM PC/XT存储器地址分配
6.3.2 存储器地址译码 地址译码器将CPU的地址信号按一定的规则译码成某些芯片的片选信号和地址输入信号,被选中的芯片即CPU寻址的芯片。译码器在CPU寻址时所起的作用十分重要,常见的地址译码器是74LS138,如图6-7所示。 图6-7 地址译码器74LS138
6.3.3 存储器与CPU的连接 CPU与存储器的连接就是指地址线、数据线和控制线的连接。CPU对存储器的读写操作首先是向其地址线发出地址信号,然后向控制线发出读写信号,最后在数据线上传送数据信息。 通过地址译码实现片选的方法通常有三种:线选译码;全译码;部分译码。
片选信号由地址线中所有不在存储器上的地址线译码产生,存储器芯片中的每一个存储单元只对应内存空间的一个地址 1.全地址译码 片选信号由地址线中所有不在存储器上的地址线译码产生,存储器芯片中的每一个存储单元只对应内存空间的一个地址 特点:寻址范围大,地址连续,不会发生因高位地址不确定而产生的地址重复现象 图6-8 全译码法示意图
2.部分地址译码 也称局部地址译码。片选信号不是由地址线中所有不在存储器上的地址线译码产生,而是只有部分高位地址线被送入译码电路产生片选信号。 特点:某些高位地址线被省略而不参加地址译码,简化了地址译码电路,但地址空间有重叠。 图6-9 部分地址译码方式示意图
2.线性译码 线性译码是没有使用地址译码器的译码,把片外(高位)地址线直接与对应的片选信号相连。这种译码方式的地址重叠严重(来自CPU的一个地址信号选中两个以上的存储单元),适合于小的存储系统。
第四节 存储器扩展技术 若干存储芯片和系统进行连接扩展,通常有三种方式: 位扩展 字扩展 字位扩展
6.4.1 存储容量的位扩展 位扩展:字数不变,增加存储器的位数 位扩展的连接方法归纳如下: (1) 芯片的地址线全部并联且与地址总线相应连接。 (2) 片选信号线并联,连接到地址译码器的输出端。 (3) 读写控制信号并联,连接到控制总线的存储器读写控制线上。 (4) 不同芯片的数据线连接到数据总线不同位上。
6.4.2 存储容量的字扩展 字扩展:增加存储器字的数量,位数不变。 字扩展的方法如下:求出组成存储器模块所需芯片数,然后按下列步骤连接有关信号线。 (1)各芯片的数据线并联,连至相应的系统数据总线。 (2)芯片的地址线并联到地址总线对应位上,地址总线高位连接译码器,译码器输出用作各个芯片的片选信号。 (3)读写控制信号并联后与控制总线中相应的信号连接。
6.4.3 存储容量的字位扩展 进行字位扩展时,一般先进行位扩展,使构成字长满足要求的内存模块,然后再用若干这样的模块进行字扩展,使总存储容量满足要求。 一个存储器的容量为M×N位,若使用P×K位存储器芯片,那么,这个存储器共需要(M/P)×(N/K)个存储器芯片。
存储器容量的扩展可以分为3步: (1)选择合适的芯片。 (2)根据要求将芯片“多片并联”进行位扩展,设计出满足字长要求的存储模块。 (3)将多组串联,对存储模块进行字扩展,构成符合的存储器系统。
【例1】用256 x 1的RAM→ 256 x 4位的存储系统
【例2】用256 x 8位RAM→1024 x 8位 存储器 1024 x 8 RAM
RAM标号 地址分配A9A8(A7…A0) (1) 00(00000000)~00(11111111) 0~255 (2) 01(00000000)~01(11111111) 256~511 (3) 10(00000000)~10(11111111) 512~767 (4) 11(00000000)~11(11111111) 768~1023
每一片256×8的A0~ A7可提供28=256个地址,为0~0到1~1,用扩展的字A8、 A9构成的两位代码区别四片256×8的RAM,即将A8、 A9译成四个低电平信号,分别接到四片256×8RAM的CS ,如下表 A9 A8 CS1 CS2 CS3 CS4 1
第五节 高速缓存技术 6.5.1 Cache概述 高速缓存Cache是一种存储空间较小而存取速度却很高的存储器,是为了解决CPU和主存之间速度不匹配而采用的一项重要技术,以使CPU 访问Cache/主存系统的平均速度接近(略大)于Cache的速度。由于使用高速缓存后可以减少存储器的访问时间,所以对提高整个处理机的性能非常有益。
6.5.2 Cache的工作原理 CPU工作时,首先在第一级Cache(微处理器内的Cache)中查找数据,如果找不到,则在第二级Cache(主机板上的Cache)中查找,若数据在第二级Cache中,Cache控制器在传输数据的同时,修改第一级Cache;如果数据既不在第一级Cache 也不在第二级Cache中,Cache控制器则从主存中获取数据,同时将数据提供给CPU并修改两级Cache。
6.5.3 Cache 的地址映射 Cache的地址映射是指利用某种地址变换机制把主存地址映射到Cache 中定位。其实现方法是将主存和Cache 都分为大小相等的若干块(或称页),设主存容量为2,Cache 容量为2,块的大小为2。
1.全相联映射 全相联映射允许主存的每一块都可以映射到Cache 的任意一块上,也允许从已被占满的Cache 存储器中替换出任何一个旧块。 全相联映射方式的冲突概率最小,Cache利用率高,但查找速度慢,实现结构复杂,由于Cache的速度要求高,因此全部比较和替换策略都要用硬件实现,控制复杂,硬件价格昂贵。
直接映射是指主存中的每个块只能映射到某个固定的Cache块中,如图6-16所示。 2.直接映射 直接映射是指主存中的每个块只能映射到某个固定的Cache块中,如图6-16所示。 图6-16 直接映射
组相联映射是全相关映射和直接映射的折中方案,如图6-17所示。 3.组相联映射 组相联映射是全相关映射和直接映射的折中方案,如图6-17所示。 图6-17 组相连映射
6.5.4 Cache 的置换算法 1.先进先出(FIFO)算法 FIFO(First In First Out)算法是把最先调入的Cache块置换掉。该算法的优点是不需要随时记录各个块的使用情况,容易实现,系统开销小;缺点是一些经常使用的块由于是最早的块而被置换掉。
2.近期最少使用(LRU)算法 LRU(Least Recently Used)算法是把当前Cache中近期最少使用的那些块置换掉。这种置换算法考虑了程序的运行特性,但要随时记录Cache中各块的使用情况,以确定哪个块是近期最少使用的块。
本章 复习思考题 见书