存储器的意义
现代的计算机不仅能做运算,更能够自动执行某些既定的程序来实现一些控制或操作。计算机要能自动执行程序,所以程序——也就是既定的指令和数据,就必须有存储器来保存。
存储器必须能够被处理器不经人工控制就能读取到指令和数据。PC指针能从存储器中自动的取到可执行的单条指令,术语叫寻址。
如果想上电就能自动执行程序(计算机的程序包括指令和数据),就必须有掉电不丢失数据的存储器(术语叫非易失性存储器)来存储程序,并且能有一套机制在上电后把该存储器里的程序自动读出来给微处理器。
有了大容量的存储器,人们就可以存储许多有用的数据和信息了。基于海量的存储容量,强大的数据库及检索算法,人们就可以以电子化形式保存、查阅并研究分析数据或信息。
存储器实现简介
存储器的简单定义是可稳定的保持某些状态的器件,而这些状态一定有快捷低成本的条件来转换为电压值,最终转换为数字电路意义上的0或1,常常也可以用电压来控制存储状态的改变。
存储器种类很多,特性有多种差异,有能只能读,不能写;有的能写,但不能掉电保持;有的能掉电保持,但读写控制等有讲究。不同种类的存储器,实现方法各不相同,读写控制也各不相同。有利用磁原理做的磁带磁盘,目前也是主流的大容量低价格掉电不丢失数据的存储器。目前基于电原理的,用MOS管搭的静态内存SRAM最先被设计出来;再然后基于电容和控制电路的DRAM被设计出来;利用浮栅封存电子来达到掉电保持数据的Flash(中文叫闪存)是有望取代磁盘的掉电不丢失数据的存储器。各种新型的存储器仍然不断的在被研制出来,各种类型的存储器的基本原理也各有不同,即便原理类似,具体实现也有很多种,细节也各有繁简。单就某一小类存储器的细节都可以写成一本厚厚的书了。在存储器领域,专业设计或制造的公司都很多,有些小公司专攻某一小类存储器设计而做的风生水起的,也有某些大公司能制造各种存储器但常年亏本的。对一类如此博大精深的器件,显然在此只能简而言之以供了解。如果有兴趣看这方面的专业书籍,推荐《VLSI-Design of Non-Volatile Memories》。
存储器基本概念
存储器是被动器件,只能由微处理器这种主动器件来控制。现代的微处理器(泛指拥有8位、16位、32位、64位能力运算器的微处理器)最小可寻址单位是字节,换句话说就是一个地址存储的数据就是一个字节(1Byte即8bit),读写某个地址必须以字节为最小存储单位。存储器作为被动器件,最小寻址单位只能大于或等于一个字节。若有的存储器最小寻址单位小于一个字节,则浪费了微处理器的读写效率,事实上也没有这种存储器。
存储器有两类常见概念:RAM(Random Access Memory)和 ROM(Read Only Memory),最早的两类存储器确实名如其实,但现在很多种的存储器早已模糊了或者说是扩展这两类概念。RAM引申为内存,可由微处理器自由读写,掉电即丢失数据。ROM引申为掉电保持数据存储器,不可由微处理器自由读或写。
严格来说,RAM是可以对每个存储单元随意读读写0或读写1的存储器,除此之外,任何不能对每个存储单元随意读写0或读写1的存储器都要归类到ROM。比如NORFlash虽然可以随意读到某个存储单元,但只能对某个存储单元写0,而从0写成1在NORFlash来看叫擦(erase),擦的最小单位是块,块大小要远远大于最小可读的存储单位,并且掉电能保持数据,所以NORFlash要归类到ROM,关于NORFlash请另外参见闪存的介绍。
一般而言,RAM是掉电丢失数据,ROM是掉电不丢失数据,但以此为概念又失之严谨。目前已经有种新型的存储器叫相变存储器(Phase Change Memory,简称PCM),既能随意按最小寻址单位读写,也能掉电保持数据,这种存储器更应该归类到RAM,但掉电保持的特性又与传统的RAM不同,在RAM或ROM的归类上使人困惑。相变存储器利用硫化物在通电后的结晶态与非晶态的原理来实现,现在已有小规模应用。
存储系统简介
当存储器相对较小的时候,用起来就相对简单。当存储器相对较大的时候,用起来就相对复杂,多了很多需要考虑的问题,比如使用效率等。效率、性能、功耗这三点是现代先进存储系统的提升重点,为此计算机系统设计了更多的软硬件来管理存储器。
在人类社会中,数据和信息的控制权限是个重要的社会问题。在现代计算机中,为了多任务、多应用和多用户的需要,毫无疑问需要对计算机存储空间划分访问权限。
为了实现内存(RAM)空间的访问权限功能,是在计算机的微处理器中设计了一套专用数字逻辑电路,并且设计了相应的软件来实现的。此类专用数字逻辑电路根据功能的不同可称为MMU(Memory ManagerUnit,内存管理单元)或MPU(Memory ProtectionUnit,内存保护单元)。在计算机软件系统中会开发一套MMU或MPU的驱动,以及基于MMU或MPU的内存管理算法程序。基于MMU,就有了虚拟地址和物理地址之概念,这提升了物理内存的使用效率。为了提升内存的使用效率,在软件范围内还开发了很多内存分配与内存回收、内存碎片整理的内存管理算法。
而为了实现ROM空间的访问权限功能,是在计算机软件系统中实现了一套文件系统,其中对上层用户能实现各个文件的保存及读写擦,各个文件内容及各种路径的检索算法,屏蔽下层ROM存储器的物理属性,对下层ROM存储器能优化擦写寿命,加强数据存储的可靠性和稳定性。
提升存储器的性能和降低存储器的功耗在一定程度上有些矛盾,但并非不可调和。
在提升存储系统的读写性能方面,主要有三个常用手段:1、提高时钟频率;2、提高总线宽度;3、增加高速缓存Cache。
存储器的频率越高,性能越好,但功耗也越高。但存储器仍有大部分间隙时间没有读写需求,所以可以趁此时进入低功耗模式。即使在存储器有读写需求时,也并非所有的读写需求都是同样的负载,只要存储器在一定的时钟频率上可以满足系统的读写性能需求,就没必要运行在最高时钟频率上。因此软硬件可以实时监控存储器的读写流量,从而对存储器时钟频率进行相应的动态频率调整。
对存储器的理解和管理是件费功夫且要求极深的事情,如果做的不好会有许多难缠的问题。内存管理问题中可能最难查的问题如内存覆盖,被覆盖的内存在很久之后被运行到可能导致死机,但要调查当初是哪里的代码造成的覆盖却不是件容易的事情。而文件管理则涉及ROM的读写擦特性,如在flash上没有做好擦写均衡和断掉保护,一旦出现文件中数据被破坏就导致文件不可读,倘若ROM上的翻转数据刚好是软件中重要的指令或数据,就会引起严重的软件问题。