接下来,为了顺应Linux Kernel的学习,在操作系统方面首先学习的是内存管理。首先主要讲解物理内存的相关知识。本节主要讲解存储器的基础硬件知识,下一节讲解存储器的层次结构。
存储器是计算机系统的重要组成部分,它在计算机系统中的作用是存放程序和数据。存储器不仅使计算机具有记忆功能,而且是计算机高速自动运行的基础。
作为计算机的核心部件之一,存储器直接关系到整个计算机系统性能的高低。如何以合理的成本搭建出容量和速度都满足要求的存储器系统,始终是计算机体系结构设计中的关键问题之一:一方面,人们不断采用新的高速器件来提高存储器的存取速度,另一方面,则通过改进其组织形式来改善存储系统的整体性能。
1、存储器的分类:
存储器有存储介质(如半导体、磁和光等)和读写数据的控制部件组成。不同的存储介质采用了不同的存储原理,而不同的读写控制部件则决定了数据的存取方式。
A、按存储介质分类
*半导体存储器:
#易失性存储器(Volatile Memory)
易失性存储器是指需要维持电源供应,才能确保存储内容不变化丢失的存储器。也就是,一旦电源供应终止,易失性存储器存储的内容就会改变。
易失性存储器有两种基本类型:静态RAM(Static RAM, SRAM)和动态RAM(Dynamic RAM, DRAM)。
其中,SRAM完全由晶体管实现,其基本存储单元是双稳态电路,存储的信息由双稳态电路的逻辑状态表征。DRAM则使用晶体管和电容实现,存储的信息由电容上的电位来表征。由于电容存在充放电过程,所以DRAM需要定期刷新。DRAM的密度高于SRAM,但由于不能在刷新操作的同时执行读写操作,存取速度低于SRAM。
在计算机系统中,一般采用速度较快但成本较高的SRAM构成高速缓冲存储器(Cache),而主存一般采用成本较低、速度较慢的DRAM构成。
现代计算机采用以下几种技术来提高DRAM主存的读写速度:同步动态随机存储器(SDRAM)、双数据速率同步动态随机存储器(DDR SDRAM)、接口动态随机存储器(DR DRAM)、带高速缓存动态随机存储器(CDRAM)、虚拟通道存储器(VCM)。
#非易失性存储器(No-Volatile Memory)
非易失性存储器写速度较慢,且重写次数有限,一般用作辅助存储器,如手机中程序和数据的存储。主要包括ROM(EPROM、EEPROM)和Flash存储器等。
*磁介质存储器:
磁性存储器价格低,容量大,读写方便,信息可长时间保存,通常用来作为辅助存储器。由磁性材料生产的存储器主要有磁带、软盘和硬盘(RAID)。
*光介质存储器:光盘。
B、按读写策略分类
*按数据访问方式分类
#并行存储器(Parallel Memory)
#串行存储器(Serial Memory)
*按数据存取顺序分类
#随机存取存储器
随机存取又称为直接存取。随机存取有两层含义:可按地址访问任意存储单元;访问存储单元所需的时间与数据存储的位置(地址)无关。计算机系统中CPU直接寻址的存储器采用随机存取方式。
#顺序存取存储器
在顺序存取方式下,数据按照特定的线性或时序顺序写入存储介质,并且可以按照完全相同的顺序读回。顺序存取也称为“先进先出”,非常适合作为缓冲存储器。磁带就是典型的顺序存取存储器。
#堆栈存取存储器
采用“后进先出”的存取原则。堆栈通常一端固定(栈底),一端浮动(栈顶),压入数据(进栈)和取出数据(出栈)的操作都是针对栈顶单元。堆栈分为向下生成和向上生成。
2、半导体存储芯片的性能指标:
*存储容量:
存储芯片的容量表示该芯片能存储多少个用二进制表示的信息位。
*存取速度:
存取时间——启动一次存储器操作(读或写)到完成该操作所需的时间。
存取周期——连续启动两次独立的存储器操作所需间隔的最小时间。
带宽——存储器在连续访问时的数据吞吐量,用bps表示。
*功耗:
功耗有两种定义方法:一种是存储芯片中存储单元的功耗,单位是微瓦每单元;另一种是存储芯片的功耗,单位是毫瓦每芯片。
功耗是便携式系统的关键性指标之一,它不仅表示存储芯片所需的能量,还影响系统的散热。功耗与速度通常成正比。
*可靠性:
可靠性指在规定时间内存储器无故障读写的概率,通常用平均故障时间(MTBF)来衡量。可靠性一般指存储器对电磁场的抗干扰性和对温度变化的抗干扰性。
存储器的其他性能指标包括工作电源电压、工作温度范围、可编程存储器的编程次数等。
3、主存储器设计技术:
A、存储芯片选型:存储器扩展
B、存储芯片的组织形式
*存储模块结构——存储芯片互连
计算机系统通常需要将多个存储芯片按照一定规则互连扩充为主存。与存储芯片以bit为容量单位不同,主存的容量通常以字节为单位。多个容量为N*M的存储芯片互连时通常有以下两种策略。
#若M<8,则应先对存储芯片进行位扩展,即把多个存储芯片互连成字节模块,以实现按字节编址。
#若N<主存容量,则应进行字扩展,即把多组字节模块互连,增加可寻址单元的数量,达到主存容量要求。
*存储系统组织形式——存储模块互连
#并行存储器
并行存储器允许在一个存取周期内并行存取多个字,从而提高整体信息的吞吐量。
#多体交叉存储器
#双端口存储器
双端口存储器具有两组读写操作电路和数据输入输出电路。
#相联存储器
根据信息的特征进行存取。
C、地址译码技术
*固定地址译码:
#全译码
系统所有地址线全部都应该参与译码;
低段地址线应直接接在模块上,寻址模块内单元;
中段地址线译码后产生片选信号区分不同模块;
高段地址线可用作片选信号有效的使能控制。
#部分译码
高段地址信号不参与译码,会造成地址空间的重叠及不连续。
#线译码
电路结构简单,但系统必须保证参与片选的地址线不能同时为有效电平;
同部分译码法一样,因为有地址信号不参与译码,也存在地址重叠及不连续的问题。
*可变地址译码。
D、存储器接口设计
*存储总线
数据线:如果考虑总线负载问题,可加接数据收发器。
读写控制线:考虑有效电平。
地址线:字选+片选。
字选:系统地址总线中的低位地址线直接与各存储芯片的地址线连接。所需低位地址线的数目N与存储芯片容量L的关系:L=2N。
片选:系统地址总线中余下的高位地址线经译码后用做不同存储芯片的片选。通常IO//M信号也参与片选译码。
*总线隔离:驱动器和缓冲器,输出端增强驱动能力,在输入端减轻负载。