更新时间:2023-04-14 11:32
主存储器(Main memory),简称主存。是计算机硬件的一个重要部件,其作用是存放指令和数据,并能由中央处理器(CPU)直接随机存取。现代计算机是为了提高性能,又能兼顾合理的造价,往往采用多级存储体系。即由存储容量小,存取速度高的高速缓冲存储器,存储容量和存取速度适中的主存储器是必不可少的。主存储器是按地址存放信息的,存取速度一般与地址无关。32位(比特)的地址最大能表达4GB的存储器地址。这对多数应用已经足够,但对于某些特大运算量的应用和特大型数据库已显得不够,从而对64位结构提出需求。
主存储器一般采用半导体存储器,与辅助存储器相比有容量小、读写速度快、价格高等特点。计算机中的主存储器主要由存储体、控制线路、地址寄存器、数据寄存器和地址译码电路五部分组成。
从70年代起,主存储器已逐步采用大规模集成电路构成。用得最普遍的也是最经济的动态随机存储器芯片(DRAM)。1995年集成度为64Mb(可存储400万个汉字)的DRAM芯片已经开始商业性生产,16MbDRAM芯片已成为市场主流产品。DRAM芯片的存取速度适中,一般为50~70ns。有一些改进型的DRAM,如EDO DRAM(即扩充数据输出的DRAM),其性能可较普通DRAM提高10%以上,又如SDRAM(即同步DRAM),其性能又可较EDO DRAM提高10%左右。1998年SDRAM的后继产品为SDRAMⅡ(或称DDR,即双倍数据速率)的品种已上市。在追求速度和可靠性的场合,通常采用价格较贵的静态随机存储器芯片(SRAM),其存取速度可以达到了1~15ns。无论主存采用DRAM还是SRAM芯片构成,在断电时存储的信息都会“丢失”,因此计算机设计者应考虑发生这种情况时,设法维持若干毫秒的供电以保存主存中的重要信息,以便供电恢复时计算机能恢复正常运行。鉴于上述情况,在某些应用中主存中存储重要而相对固定的程序和数据的部分采用“非易失性”存储器芯片(如EPROM,快闪存储芯片等)构成;对于完全固定的程序,数据区域甚至采用只读存储器(ROM)芯片构成;主存的这些部分就不怕暂时供电中断,还可以防止病毒侵入。
指标含义表现单位
存取时间启动到完成一次存储器操作所经历的时间 主存的速度 ns
存储周期连续启动两次操作所需间隔的最小时间 主存的速度 ns
存储器带宽单位时间里存储器所存取的信息量, 它是衡量数据传输速率的重要技术指标,单位是b∕s( 位/秒)或B∕S(字节/秒)。
存放一个机器字的存储单元,通常称为字存储单元,相应的单元地址叫字地址。而存放一个字节的单元,称为字节存储单元,相应的地址称为字节地址。如果计算机中可编址的最小单位是字存储单元,则该计算机称为按字编址的计算机。如果计算机中可编址的最小单
位是字节,则该计算机称为按字节编址的计算机。一个机器字可以包含数个字节,所以一个存储单元也可以包含数个能够单独编址的字节地址。例如,PDP-11系列计算机,一个16位二进制的字存储单元可存放两个字节,可以按字地址寻址,也可以按字节地址寻址。当用字节地址寻址时,16位的存储单元占两个字节地址。
在一个存储器中容纳的存储单元总数通常称为该存储器的存储容量。存储容量用字数或字节数(B)来表示,如64K字,512KB,10MB。外存中为了表示更大的存储容量,采用MB,GB,TB等单位。其中1KB=2^10B,1MB=2^20B,1GB=2^30B,1TB=2^40B。B表示字节,一个字节定义为8个二进制位,所以计算机中一个字的字长通常为8的倍数。存储容量这一概念反映了存储空间的大小。
又称存储器访问时间或读∕写时间,是指从启动一次存储器操作到完成该操作所经历的时间。具体讲,从一次读操作命令发出到该操作完成,将数据读入数据缓冲寄存器为止所经历的时间,即为存储器存取时间。
是指连续启动两次独立的存储器操作(如连续两次读操作)所需间隔的最小时间。通常,存储周期略大于存储时间,其时间单位为ns
RAM是构成内存的主要部分,其内容可以根据需要随时按地址读出或写入,以某种电触发器的状态存储,断电后信息无法保存,用于暂存数据,又可分为DRAM和SRAM两种。RAM一般使用动态半导体存储器件(DRAM)。因为CPU工作的速度比RAM的读写速度快,所以CPU读写RAM时需要花费时间等待,这样就使CPU的工作速度下降。人们为了提高CPU读写程序和数据的速度,在RAM和CPU之间增加了高速缓存(Cache)部件。Cache的内容是随机存储器(RAM)中部分存储单元内容的副本。
ROM是只读存储器,出厂时其内容由厂家用掩膜技术写好,只可读出,但无法改写。信息已固化在存储器中,一般用于存放系统程序BIOS和用于微程序控制。
PROM是可编程ROM,只能进行一次写入操作(与ROM相同),但是可以在出厂后,由用户使用特殊电子设备进行写入。
EPROM是可擦除的PROM,可以读出,也可以写入。但是在一次写操作之前必须用紫外线照射,以擦除所有信息,然后再用EPROM编程器写入,可以写多次。
EEPROM是电可擦除PROM,与EPROM相似,可以读出也可写入,而且在写操作之前,不需要把以前内容先擦去,能够直接对寻址的字节或块进行修改。
闪速存储器(Flash Memory),其特性介于EPROM与EEPROM之间。闪速存储器也可使用电信号进行快速删除操作,速度远快于EEPROM。但不能进行字节级别的删除操作,其集成度高于EEPROM。
由于存储芯片的容量有限,主存储器往往要是由一定数量的芯片构成的位扩展:位扩展是指只在位数方面扩展(加大字长),而芯片的字数和存储器的字数。位扩展的连接方式是将各存储芯片的地址线、片选线和读写线相应地并联起来,而将各芯片的数据线单独列出字扩展:字扩展是指仅在字数方面扩展,而位数不变。字扩展将芯片的地址线、数据线、读写控制线并联,而片选信号来区分各个芯片字和位同时扩展:当构成一个容量较大的容器时,往往需要在字数方向和位数方向上同时扩展。
CPU要实现对存储单元的访问,首先要选择存储芯片,即进行片选;然后再从选中的芯片中依地址码选择出相应的存储单元,以进行数据的存取,这称为字选。片内的字选是由CPU送出的N条低位地址线完成的,地址线直接接到所有存储芯片的地址输入端,而存储芯片的片选信号则大多是通过高位地址译码后产生的。
线选法:
线选法就是用除片内寻址外的高位地址线直接分别接至各个存储芯片的片选端,当某地址线信息为0时,就选中与之对应的存储芯片。这些片选地址线每次寻址时只能有一位有效,不允许同时有多位有效,这样才能保证每次只选中一个芯片。线选法不能充分利用系统的存储器空间,把地址空间分成了相互隔离的区域,给编程带来了一定困难。
全译码法:
全译码法将除片内寻址外的全部高位地址线都作为地址译码器的输入,译码器的输出作为各芯片的片选信号,将它们分别接到存储芯片的片选端,以实现对存储芯片的选择。全译码法的优点是每片芯片的地址范围是唯一确定的,而且是连续的,也便于扩展,不会产生地址重叠的存储区,但全译码法对译码电路要求较高。
部分译码法:所谓部分译码法即用除片内寻址外的高位地址的一部分来译码产生片选信号,部分译码法会产生地址重叠。
主存与CPU之间的硬连接:主存与CPU的硬连接有三组连线:地址总线(AB)、数据总线(DB)和控制总线(CB)。把主存看作一个黑盒子,存储器地址寄存器(MAR)和存储器数据寄存器(MDR)是主存和CPU之间的接口。MAR可以接收由程序计数器(PC)的指令地址或来自运算器的操作数的地址,以确定要访问的单元。MDR是向主存写入数据或从主存读出数据的缓冲部件。MAR和MDR从功能上看属于主存,但通常放在CPU内。
CPU对主存的基本操作:CPU对主存进行读写操作时,首先CPU在地址总线上给出地址信号,然后发出相应的读写命令,并在数据总线上交换信息。读写基本操作如下:
读:读操作是指从CPU送来的地址所指定的存储单元中取出信息,再送给CPU,其操作过程如下:
地址——>MAR——ABCPU将地址信号送至地址总线
WaitForMFC等待存储器工作完成信号
M(MAR)——>DB——>MDR读出信息经数据总线至CPU
写:写操作是指将要写入的信息存入CPU所指定的存储单元中,其操作过程是:
地址——>MAR——>ABCPU将地址信号送至地址总线
数据——>MDR——>DBCPU将要写入的数据送至数据总线
WaitForMFC等待存储器工作完成信号
CPU与主存之间的速度匹配:同步存储器读取和异步存储器读取。
异步存储器读取:CPU和主存间没有统一的时钟,由主存工作完成信号(MFC)通知CPU“主存工作已完成”。
同步存储器读取:CPU和主存采用统一时钟,同步工作,因为主存速度较慢,所以CPU与之配合必须放慢速度,在这种存储器中,不需要主存工作完成信号。
快速页式工作技术(动态存储器的快速读写技术):读写动态存储器同一行的数据时,其行地址第一次读写时锁定后保持不变,以后读写该行多列中的数据时,仅锁存列地址即可,省去了锁存行地址的时间,加快了主存储器的读写速度。
EDO(ExtendedDataOut)技术:在快速页式工作技术上,增加了数据输出部分的数据锁存线路,延长输出数据的有效保持时间,从而地址信号改变了,仍然能取得正确的读出数据,可以进一步缩短地址送入时间,更加快了主存储器的读写速度。
是指在主存储器的一个工作周期(或较长)可以读出多个主存字所采用的技术。
方案1:一体多字结构,即增加每个主存单元所包括的数据位,使其同时存储几个主存字,则每一次读操作就同时读出了几个主存字。
方案2:多体交叉编址技术,把主存储器分成几个能独立读写的、字长为一个主存字的主体,分别对每一个存储体进行读写;还可以使几个存储体协同运行,从而提供出比单个存储体更高的读写速度。
有两种方式进行读写:
1在同一个读写周期同时启动所有主存体读或写。
2让主存体顺序地进行读或写,即依次读出来的每一个存储字,可以通过数据总线依次传送走,而不必设置专门的数据缓冲寄存器;其次,就是采用交叉编址的方式,把连续地址的几个存储字依次分配在不同的存储体中,因为根据程序运行的局部性特性,短时间内读写地址相邻的主存字的概率更大。
所谓成组数据传送就是地址总线传送一次地址后,能连续在数据总线上传送多个数据。而原先是每传送一次数据要使用两个时钟周期:先送一次地址,后跟一次数据传送,即要传送N个数据,就要用2N个总线时钟周期,成组数据传送方式只用N+1个总线时钟周期。
实现成组数据传送方式,不仅CPU要支持这种运行方式,主存也能提供足够高的数据读写速度,这往往通过主存的多体结构、动态存储器的EDO支持等措施来实现。
教学计算机的内存储器组成与设计
(1)静态存储器的存储原理和芯片内部结构(P207)
(2)教学计算机内存储器的组成与设计
地址总线:记为AB15~AB0,统一由地址寄存器AR驱动,地址寄存器AR只接收ALU输出的信息。
控制总线:控制总线的信号由译码器74LS139给出,功能是指出总线周期的类型:
(2)内存读周期用MMR信号标记
(3)外设(接口)写周期用IOW信号标记
(4)外设(接口)读周期用IOR信号标记
(5)内存在工作用MMREQ信号标记
(6)外设在工作用IOREQ信号标记
(7)写控存周期用SWA信号标记
数据总线:分为内部数据总线IB与外部数据总线DB两部分。主要完成计算机各功能部件之间的数据传送。设计总线的核心技术是要保证在任何时刻只能把一组数据发送到总线上,却允许一个和多个部件同时接受总线上的信息。所用的电路通常为三态门电路。
系统时钟及时序:教学机晶振1.8432MHz,3分频后用614.4KHz的时钟作为系统主时钟,使CPU、内存、IO同步运行。CPU内部的有些寄存器用时钟结束时的上升沿完成接受数据,而通用寄存器是用低电平接收的。内存或I/O读写操作时,每个总线周期由两个时钟组成,第一个时钟,称为地址时间,用于传送地址;第二个时钟,称为数据时间,用于读写数据
静态存储器的字位扩展:
教学计算机的内存储器用静态存储器芯片实现,由2K字的ROM区和2K字RAM区组成。内存字长16位,按字寻址。ROM由74LS2716只读存储器ROM(每片2048个存储单元,每单元为8位二进制位)两片完成字长的扩展。地址分配在:0~2047RAM由74LS6116随机存储器RAM(每片2048个存储单元,每单元为8位二进制位)两片完成字长的扩展。地址分配在:2048~4095。
静态存储器地址分配:
为访问2048个存储单元,要用11位地址,把地址总线的低11位地址送到每个存储器芯片的地址引脚;对地址总线的高位进行译码,译码信号送到各存储器芯片的/CS引脚,在按字寻址的存储器系统中实现按字节读写。
动态存储器的定期刷新:在不进行读写操作时,DRAM存储器的各单元处于断电状态,由于漏电的存在,保存在电容CS上的电荷会慢慢地漏掉,为此必须定时予以补充,称为刷新操作。
(1)动态存储器的组成:由单个MOS管来存储一位二进制信息。信息存储在MOS管的源极的寄生电容CS中。
写“1”时,位线(数据线)为低电平,VDD(电源)将向电容充电
写“0时,位线(数据线)为高电平,若电容存储了电荷,则将会使电容完成放电,就表示存储了“0”。
读数据时:先使位线(数据线)变为高电平,当字线高电平到来时T导通,若电容原存储有电荷(是“1”),则电容就要放电,就会使数据线电位由高变低;若电容没有存储电荷(是“0”),则数据线电位不会变化。检测数据线上电位的变化就可以区分读出的数据是1还是0。
注意
①读操作使电容原存储的电荷丢失,因此是破坏性读出。为保持原记忆内容,必须在读操作后立刻跟随一次写入操作,称为预充电延迟。
②向动态存储器的存储单元提供地址,是先送行地址再送列地址。原因就是对动态存储器必须定时刷新(如2ms),刷新不是按字处理,而是每次刷新一行,即为连接在同一行上所有存储单元的电容补充一次能量。
③在动态存储器的位线上读出信号很小,必须接读出放大器,通常用触发器线路实现。
④存储器芯片内部的行地址和列地址锁存器分先后接受行、列地址。
⑤RAS、CAS、WE、Din、Dout时序关系
市场上并不缺少提高数据存储效率的新技术,然而这些新技术绝大多数都是关注备份和存档的,而非主存储。但是,当企业开始进行主存储数据缩减时,对他们来说,了解主存储优化所要求的必要条件十分重要。
主存储,常常被称为1级存储,其特征是存储活跃数据――即经常被存取并要求高性能、低时延和高可用性的数据。主存储一般用于支持关键任务应用,如数据库、电子邮件和交易处理。大多数关键应用具有随机的数据取存模式和不同的取存要求,但它们都生成机构用来运营它们的业务的大量的数据。因此,机构制作数据的许多份拷贝,复制数据供分布使用,库存数据,然后为安全保存备份和存档数据。
绝大多数数据是起源于主数据。随着数据存在的时间增加,它们通常被迁移到二级和三级存储保存。因此,如果机构可以减少主数据存储占用空间,将能够在数据生命期中利用这些节省下来的容量和费用。换句话说,更少的主存储占用空间意味着更少的数据复制、库存、存档和备份。
试图减少主存储占用空间存储管理人员可以考虑两种减少数据的方法:实时压缩和数据去重。
直到不久前,由于性能问题,数据压缩一直没有在主存储应用中得到广泛应用。然而,Storwize等厂商提供利用实时、随机存取压缩/解压技术将数据占用空间压缩15:1的解决方案。更高的压缩率和实时性能使压缩解决方案成为主存储数据缩减的可行的选择。
在备份应用中广泛采用的数据去重技术也在被应用到主存储。目前为止,数据去重面临着一大挑战,即数据去重处理是离线处理。这是因为确定数量可能多达数百万的文件中的多余的数据块需要大量的时间和存储处理器做大量的工作,因此非常活跃的数据可能受到影响。当前,推出数据去重技术的主要厂商包括NetApp、Data Domain和OcarinaNetworks。
与备份或存档存储不同,活跃数据集的性能比能够用某种形式的数据缩减技术节省的存储容量更为关键。因此,选择的数据缩减技术必须不影响到性能。它必须有效和简单;它必须等价于“拨动一个开关,就消耗更少的存储”。
活跃存储缩减解决方案只在需要去重的数据达到非活跃状态时才为活跃存储去重。换句话说,这意味着实际上只对不再被存取但仍保存在活跃存储池中的文件――近活跃存储级――进行去重。
去重技术通过建议只对轻I/O工作负载去重来避免性能瓶颈。因此,IT基础设施的关键组件的存储没有得到优化。数据库排在关键组件清单之首。由于它们是1级存储和极其活跃的组件并且几乎始终被排除在轻工作负载之外,去重处理从来不分析它们。因此,它们在主存储中占据的空间没有得到优化。
另一方面,实时压缩系统实时压缩所有流经压缩系统的数据。这导致节省存储容量之外的意外好处:存储性能的提高。当所有数据都被压缩时,每个I/O请求提交的数据量都有效地增加,硬盘空间增加了,每次写和读操作都变得效率更高。
实际结果是占用的硬盘容量减少,总体存储性能显著提高。
主存储去重的第二个好处是所有数据都被减少,这实现了包括数据库在内的所有数据的容量节省。尽管Oracle环境的实时数据压缩可能造成一些性能问题,但迄今为止的测试表明性能提高了。
另一个问题是对存储控制器本身的性能影响。人们要求今天的存储控制器除了做伺服硬盘外,还要做很多事情,包括管理不同的协议,执行复制和管理快照。再向这些功能增加另一个功能可能会超出控制器的承受能力――即使它能够处理额外的工作负载,它仍增加了一个存储管理人员必须意识到可能成为潜在I/O瓶颈的过程。将压缩工作交给外部专用设备去做,从性能问题中消除了一个变数,而且不会给存储控制器造成一点影响。
许多关注二级存储的数据缩减解决方案不是高可用的。这是由于它们必须立即恢复的备份或存档数据不像一级存储中那样关键。但是,甚至在二级存储中,这种概念也逐渐不再时兴,高可用性被作为一种选择添加到许多二级存储系统中。
可是,高可用性在主存储中并不是可选的选项。从数据缩减格式(被去重或被压缩)中读取数据的能力必须存在。在数据缩减解决方案中(其中去重被集成到存储阵列中),冗余性是几乎总是高可用的存储阵列的必然结果。
在配件市场去重系统中,解决方案的一个组件以数据的原始格式向客户机提供去重的数据。这个组件就叫做读出器(reader)。读出器也必须是高可用的,并且是无缝地高可用的。一些解决方案具有在发生故障时在标准服务器上加载读出器的能力。这类解决方案经常被用在近活跃的或更合适的存档数据上;它们不太适合非常活跃的数据集。
多数联机压缩系统被插入系统中和网络上,放置(逻辑上)在交换机与存储之间。因此,它们由于网络基础设施级上几乎总是设计具有的高可用性而取得冗余性。沿着这些路径插入联机专用设备实现了不需要IT管理人员付出额外努力的无缝的故障切换;它利用了已经在网络上所做的工作。
部署这些解决方案之一必须带来显著的容量节省。如果减少占用容量的主存储导致低于标准的用户性能,它没有价值。
主数据不具有备份数据通常具有的高冗余存储模式。这直接影响到总体容量节省。这里也有两种实现主数据缩减的方法:数据去重和压缩。
数据去重技术寻找近活跃文件中的冗余数据,而能取得什么水平的数据缩减将取决于环境。在具有高冗余水平的环境中,数据去重可以带来显著的ROI(投资回报),而另一些环境只能取得10%到20%的缩减。
压缩对所有可用数据都有效,并且它在可以为高冗余数据节省更多的存储容量的同时,还为主存储应用常见的更随机的数据模式始终带来更高的节省。
实际上,数据模式冗余度越高,去重带来的空间节省就越大。数据模式越随机,压缩带来的空间节省就越高。
真正的好处可能来自所有跨数据类型(不管产生这些数据是什么应用或数据有多活跃)的数据缩减。虽然实际的缩减率根据去重数据的水平或数据的压缩率的不同而不同,但所有数据都必须合格。
当涉及存档或备份时,应用特有的数据缩减具有明确的价值,并且有时间为这类数据集定制缩减过程。但是对于活跃数据集,应用的特殊性将造成性能瓶颈,不会带来显著的容量缩减的好处。
在混合的厂商IT基础设施中,跨所有平台使用同样的数据缩减工具的能力不仅将进一步增加数据缩减的ROI好处,而且还简化了部署和管理。每一个存储平台使用一种不同的数据缩减方法将需要进行大量的培训,并造成管理级上的混乱。
在完成上述所有优化主存储的工作后,当到了备份主存储时,最好让数据保持优化的格式(被压缩或去重)。如果数据在备份之前必须扩展恢复为原始格式,这将是浪费资源。
为备份扩展数据集将需要:
使用存储处理器或外部读出器资源解压数据;