1.存储器分类
(1)按存储介质:
1)半导体存储器:用半导体器件(MOS管)组成的存储器;【系统主存、Cache】
2)磁表面存储器:用磁性材料(磁化作用)组成的存储器;【软盘、硬盘、磁带】
3)光盘存储器:用光介质(光学性质)构成的存储器;【光盘】
(2)按存取方式分:
1)随机存储器:存取时间和存储单元的物理位置无关;【半导体存储器】
2)顺序存储器:存取时间和存储单元和物理位置有关;【磁带】
3)半顺序存储器:存取时间部分地依赖于存储单元地物理位置【磁盘存储器】
(3)按存储内容可变性分:
1)只读存储器(ROM):只能读出而不能写入地半导体存储器;
2)随机读写存储器(RAM):既能读出又能写入地半导体存储器;
(4)按信息易失分:
1)易失性存储器:断电后信息即消失地存储器;【半导体存储器】
2)非易失性存储器:断电后仍能保存信息的存储器;【磁盘、光盘】
(5)按在计算机系统中的作用分:
1)主存储器:能够被CPU直接访问,速度较快,用于保存系统当前运行所需的所有程序和数据。【半导体存储器】
2)辅助存储器:不能被CPU直接访问,速度较慢,用于保存系统中的所有程序和数据。【磁盘、光盘存储器】
3)高速缓冲存储器:能够被CPU直接访问,速度快,用于保存系统当前运行中频繁使用的程序和数据【cache、半导体存储器】
4)控制存储器:CPU内部的存储单元。【半导体存储器】
(6)存储器的分级结构:
寄存器、cache | CPU内 |
cache、主存储器 | 主板内 |
磁盘、光盘 | 主板外 |
磁带 | 离线 |
(7)主存储器的技术指标
1)存储容量:指存储器能存放二进制代码的总数
2)存储器带宽:每秒从存储器进出信息的最大数量
3)存取时间:从启动一次访问操作到完成该操作为止所经历的时间
4)存取周期:存储器连续启动两次独立的访问操作所需要最小时间间隔
2.主存储器
(1)静态RAM(SRAM)
1)由MOS电路构成的双稳触发器保存二进制信息
2)访问速度快,只要不掉电可以永久保存信息
3)集成度低,功耗大,价格高
4)主要用于构成cache
(2)动态RAM(DRAM)
1)由MOS电路中的栅极电容保存二进制信息
2)集成度高,功耗约为SRAM的1/6,价格低
3)访问速度慢,电容的放电作用会使信息丢失,要长期保存数据必须定期刷新存储单元
4)主要用于构成系统主存
5)主要种类:SDRAM、DDR SDRAM
(3)SRAM存储器的组成
1)存储体:1.存储单元的集合,按位将各存储元组织成一个存储矩阵; 2.大容量存储器中,通常用双译码方式来选择存储单元。
2)地址译码器:将CPU发出的地址信息转换成存储元选通信号的电路。
3)译码驱动器:X选择线上用于增强驱动能力的电路。
4)I/O电路:一般包括读写电路和放大电路。
5)片选:用于决定当前芯片是否被CPU选中,进行访问。
6)读/写控制电路:决定对选中存储单元所要进行的类型(读/写)。
7)输出驱动电路:增强数据总线的驱动能力。
(4)SRAM存储器的读周期
1)CPU发出有效的地址信号
2)译码电路延迟产生有效的片选信号
3)在读信号的控制下,从存储单元中读出数据
4)各控制信号撤销,数据维持一段时间
5)读出时间:从地址有效到外部数据总线上的数据信息稳定所经历的时间。
(5)SRAM存储器的写周期
1)CPU发出有效的地址信号,并提供索要写入的数据
2)译码电路延迟产生有效的片选信号
3)在写信号控制下,将数据写入存储单元中
4)各控制信号撤销,数据维持一段时间。
5)写入时间:地址控制信号稳定后,到数据写入存储器所经历的时间
(6)DRAM芯片的逻辑结构
1)外部地址引脚比SRAM减少一半,存储芯片集成度高,体积小。
2)内部结构:比SRAM复杂,需要刷新电路,用于存储元的信息刷新。
3)DRAM的读写周期:与SRAM读写周期相似,只是地址总线上的信号有所不同
(7)DRAM控制电路构成
1)地址多路开关:刷新时需要提供刷新地址,非刷新时需要提供读写地址
2)刷新定时器:间隔固定的时间提供一次刷新请求
3)刷新地址计数器:刷新按行进行,用于提供对所要刷新的行进行计数
4)仲裁电路:对同时产生的来自CPU的访问存储器的请求和来自刷新定时器的刷新请求的优先权进行裁定。
5)定时发生器:提供行地址选通/RAS、列地址选通/CAS和写信号/WE。
(8)DRAM刷新
1)刷新的原因:1.DRAM的基本存储元电容,会随时间和温度而减少;2.必须定期地对所有存储元刷新,以保持原来的信息。
2)刷新:在固定时间内对所有存储单元,通过“读出——写入”的方式恢复信息的操作过程。【刷新过程中存储器不能进行正常的读写访问】
3)刷新方式:以存储矩阵的行为单位刷新【刷新计数器的长度与DRAM的行数相同】
4)刷新周期:从上一次对整个M刷新结束到下一次对整个M全部刷新一遍为止的时间。
(9)DRAM的刷新方式
1)集中式刷新:1.在一个刷新周期内,利用一段固定时间,依次对存储矩阵的所有行逐一刷新,在此期间停止对存储器的读/写操作。2.存在死区时间,会影响CPU的访存操作。
2)分散式刷新:将每个系统工作周期分为两部分,前半部分用于DRAM读/写/保持,后半部分用于刷新存储器一行。系统存取时间延长一倍,导致系统变慢
3)异步式刷新:在一个刷新周期内,分散的刷新存储器的所有行。既不会产生明显的读写停顿,也不会延长系统的存取周期。
(10)动态RAM和静态RAM的比较:
DRAM | SRAM | |
存储原理 | 电容 | 触发器 |
集成度 | 高 | 低 |
芯片引脚 | 少 | 多 |
功耗 | 小 | 大 |
价格 | 低 | 高 |
速度 | 慢 | 快 |
刷新 | 有 | 无 |
3.只读存储器、闪速存储器、高速存储器
(1)只读存储器
1)掩模式ROM:数据在芯片制造的过程中写入,不能更改;可靠性、集成度高,价格便宜;通用性差,不能改写内容;
2)一次编程ROM:用户第一次使用时写入确定内容;用户可根据需要对ROM编程;只能写入一次,不能更改。
3)多次编程ROM:可用紫外光照射或电擦除多次改写其中内容;通用性较好,可重复使用。
(2)闪速存储器:一种高密度,非易失性的读写半导体存储器,在EPROM功能基础上,增加了电路的电擦除和重新编程能力;U盘即为其中的一种形式。
(3)高速存储器:
1)双端口存储器:采用空间并行技术,同一个存储体使用两组相互独立的读写控制线路,可并行操作。
2)多模块交叉存储器:采用时间并行技术,模块化组织方式有:1.顺序方式:通过直接添加模块来扩充存储器容量比较方便,各模块串行工作,存储器的带宽受到了限制。【每个模块中的单元地址时连续的,某个模块进行存取时其他模块不工作,某一模块故障时,其他模块能照常工作】2.交叉方式:块数据传送时,可大大提高存储器的带宽;模块间依赖性强,且不易进行存储器的容量扩充。【每个模块的单元地址是不连续的,连续地址分布在相邻的不同模块内,对于数据的成块传送,各模块可以实现多模块流水式并行存取】
3)相联存储器:把存储单元所存内容的某一部分内容作为检索项,去检索存储器,并将存储器中与该检索项符合的存储单元内容进行读出或写入。
4.cache存储器
(1)cache基本原理
1)使用cache的原因:CPU速度越来越快,主存储器和CPU的速度差距越来越大,影响CPU的工作效率。
2)cache作用:1.在CPU和主存之间加一块高速的SRAM,2.主存中将要被访问的数据提前送到cache中,CPU访存式先访问cache,若没有再进行数据调度,
3)使用cache的依据:在一段时间内,CPU所执行的程序和访问的数据大部分都在某一段地址范围内,而该段范围外的地址访问很少。【程序访问的局部性原理】
4)CPU访问cache或主存时,以字为单位。cache和主存交换信息时,以块为单位,一次读入一块或多块内容。cache每行都设置有标记,CPU访问程序或数据时,先访问标记。
(2)cache的基本构成:
1)存储体:基本单位为字,若干个字构成一个数据块;
2)地址映射变换机构:用于将主存地址变换为cache,以利用CPU发送的主存地址访问cache。
3)替换机构:若要更新cache中数据时使用的机制;
4)相联存储器:cache的块表,快速指示所要访问的信息是否在cache中。
5)读写控制。
(3)cache的读操作:CPU发出有效的主存地址
1)经地址变换机构,变换为可能的cache地址
2)查找块表,判断所要访问的信息是否在cache中
3)若在,则CPU直接读取cache获取数据
4)若不在,则CPU访问主存,并判断cache是否已满。
1.若cache未满,将该数据所在块从主存中调入cache
2.若cache已满,使用某种替换机制,使用当前数据块替换掉cache中的某些块。
(4)cache的写操作:CPU发出有效的主存地址:
1)经过地址变换机构,变换为可能的cache地址;
2)查找对应的相联存储器,判断所要访问的信息是否在cache中
3)若不在,则使CPU直接写主存数据
4)若在,则使用某种写策略将数据写入cache
(5)cache的命中率:指CPU要访问的信息在cache中的比率;
影响命中率的因素:
1)cache的容量:过小时,局部信息装不完,命中率低。过大时,对提高效率不明显,成本高
2)cache中块的大小:一般用一个主存周期所能调出的单元数作为一个块的大小。
5.主存和cache的地址映射
(1)信息从主存到cache的过程中,因为cache的容量小于主存,所以需要采用某种算法确定主存和cache中块的对应关系。即地址映射:CPU访问内存时,将主存地址按某种映射函数关系变换成cache地址的过程。
(2)地址映射的方式:
1)全相联映射:主存中任意字块可调进cache的任一行中。灵活性好,成本高,速度太慢
2)直接映射:主存中的每一块数据只能调入cache的特定行中。映射函数实现简单,查找速度快,灵活性差。
3)组相联映射:将cache中的行等分为若干组,主存中的每一块只能映射到cache的特定组中,但是可调入到该组的任一行中。组间为直接映射,组内为全相联映射。
6.cache的替换策略
(1)最不经常使用(LFU)算法
1)替换原则:将一段时间内被访问次数最少的那行数据替换出去;
2)使用方法:每行设置一个计数器,从0开始,被访问计数器值+1,当需要替换时,将计数值最小的行换出,同时将这些行的计数器都清零。
3)特点:这种算法将计数周期限定在对这些特定行两次替换之间的间隔时间内,不能严格反映近期访问情况。
(2)近期最少使用(LRU)算法
1)替换原则:将近期内长久未被访问的行替换出去
2)使用方法:每行设置一个计数器,每访问一次,被访问行的计数器清零,其他行计数值+1,当需要替换时,将计数值最大的行换出
3)特点:这种算法保护刚拷贝到cache中的新数据行,使得cache的使用率较高。
(3)随机替换算法:
1)替换原则:从特定行位置中随机地选取一行换出。
2)特点:在硬件上容易实现,速度较快,但降低了命中率和工作效率。
7.cache的写策略
(1)写回法:
1)只修改cache的内容,而不立即写入主存
2)只有当此行被换出时才写回主存
3)减少了访问主存的次数
4)存在cache与主存不一致性的隐患
(2)全写式:
1)cache与主存同事发生写修改,较好的维护了cache与主存内容的一致性。
2)降低了cache的功效。
(3)写一次法:
1)基于写回法,并结合全写法的写策略
2)写命中与写未命中的处理方法与写回法基本相同,只是第一次写命中时要同时写入主存。
3)第一次写命中时,启动一个主存的写周期,其目的是使其他cache可以及时更新或废止该块内容,这便于维护系统全部cache的一致性。