存储器是用来存储程序和数据的部件,有了存储器,计算机才有记忆功能,才能保证正常工作。它根据控制器指定的位置存进和取出信息。
除处理器之外,各种类型的存储器是微控制器中最重要的单元,它们用于存储程序代码和数据。由于智能卡微控制器是一个完整的计算机,因而其内部存储器根据其特性分类为RAM、ROM和EEPROM,更精确的划分参见图1。在任何情况下,总是努力把RAM和EEPROM做到尽可能小些。
图1 智能卡微控制存储器分类图(PROM和EPROM在现代微控制器里已不再使用;Flash EEPROM和PRAM是用于智能卡早期开发的存储器类型)
对于多应用智能卡,它可以同时管理几个应用。最常用的芯片中ROM容量约为EEPROM容量的两倍,以便提供足够的空间来存储非常复杂的操作系统代码。对于单应用智能卡来说,所选择的微控制器的EEPROM容量只是比应用数据的容量稍大一点。所有非固定的应用数据,连同操作系统的某些部分都可以存储在EEPROM中,所以,才需要优化EEPROM的使用。否则,EEPROM要占去芯片中较大的空间,因而相当昂贵。
从技术上来说,在单个硅晶片上集成三种不同类型的半导体存储器是相当复杂的,它要求有更多的生产步骤和曝光掩膜。每一类型存储器的结构和工作原理都不尽相同,所要求的空间量的差异也非常大。例如:1个RAM单元就需要占用大约4个EEPROM单元那样大的空间,而1个EEPROM单元又需要占用4个ROM单元那样大的空间。这也就是智能卡微控制器中只有很少RAM的原因。通常256字节的RAM已认为是相当大了。当你明白在相同的面积里可放人1 024字节的EEPROM或4 096字节ROM时,就弄明白这个原因了。图2说明芯片大小关系,各种存储器的性能比较见表1。
图2 各类型的存储器每一位单元所占用晶片面积的比较
图中所标示的尺寸是近似的,并且是用0.8μm技术制造,与之相比,1959年的第1个平面晶体管的直径是764μm[Buchmann 96,Stix 96]。本书每一句结尾的句号的直径是400μm,人眼的分辨极限是40μm,一个细菌的大小是0.4~2μm,而一个双螺旋DNA是0.1rtm。
表1 用于智能卡微控制中的备类存储器的比较
典型的激光打印机的打印分辨率为600dpi(每英寸的点数),这就意味着其墨点直径最小为42.6μm。本书句号的面积是125 660μm2,如果用分辨率等于0.8μm(半导体工艺标准)的设备来打印本书的句号(直径是400flm),就相当于需要一台具有32 000dpi分辨率的打印机!
的高性能硬盘驱动器其存储量可达每平方英寸11.66b。假设每位都占有一个方形面积,这就是说每一位单元的边缘长度为0.24rtm。如果智能卡微控制器的ROM单元用0.8ftm技术来制造的话,那么一个ROM单元就需要占用1 700位那么多的面积!
对于CD-ROM又有所不同。在这种情况下,存储密度是7.3MB/cm2,假设它是方形单元的话,这相当于每一位单元的边缘长度是1.4Pm。这也比用0.8μm技术制造的ROM单元所占面积小约ω倍。对于新的DVD(数字光盘),已经可以达到50.SMB/cm2的密度。这样的单个位仅占用了一个以0.5μm为边长的方形面积。要比用0.8μm技术制造的单个ROM单元所占面积还小400倍。
1 概述
单片机自问世以来,以其极高的性能价格比,日益受到为们的关注。目前,各种各样的单片机已在工业控制、仪器仪表以及智能化家用电器等方面得到了广泛应用。
单片机虽然在一块VLSI芯片上集成了CPU及一定数量的程序存储器、数据存储器和I/O接口,但由于封装及成本的限制,因而在片资源非常有限,往往难于满足实际应用的需要。以典型的MCS8051系列单片机为例,其片内ROM一般为4~8k,片内RAM一般为128~256B,而其ROM/RAM寻址能力则都高达64kB。事实上,如果需要,还可借助于通用的I/O接口线进一步扩展其寻址能力。因此,单片机应用系统在设计中不可避免地涉及到了ROM/RAM的扩展问题。目前市场上的 ROM/RAM种类敏多,容量不一,但其多数ROM/RAM的引脚是相似的,如果充分利用这一特点,便可使单片机系统更为灵活,扩展更为方便。
2 程序存储器的兼容性设计
程序存储器在单片机系统中通常用于存放系统等距离或固定资料(如汉字点阵库),图1所示是按兼容性要求设计的程序存储器电路,标有“***”的引脚将随所用存储器芯片的不同而具有不同的功能,可采用跳线的方式进行切换。按表1选择相应的跳线,即可使该电路适用于多种不同的EPROM芯片.
表1 EPROM跳线选择表
表2 常见EPROM引脚功能差异对照表
程序存储器一般多用紫外线擦除的EPROM芯片充任。常用的EPROM芯片及其引脚分配如图2所示,由图中可知,除个别引脚外,它们的多数引脚是相似的,有差异的引脚如表2所列。
3 数据存储器的兼容性设计
数据存储器在单片机系统中一般用于存放工作数据,通常用静态RAM(SRAM)芯片充任。在某些应用场合,如果希望数据在掉电后不丢失,可采用电擦除EEROM芯片。常用的RAM及EEROM芯片及其引脚分配如图3所示,各种芯片有差异的引脚如表3所列。
所示为数据存储器电路,根据所选用的静态RAM或EEROM芯片按表4选择相应位置的跳线可实现数据存储器芯片的兼容性设计。
表3 常见SRAM/EEROM引脚功能差异对照表
表4 SRAM/EEROM跳线选择表
4 结束语
常用的各种存储器芯片在引脚结构上均有较好的相似性。在应用系统设计中充分利用这些特点进行兼容性设计,可使存储器子系统适用多种不同的芯片选择,从而增强系统的灵活性与适用性。
存储器技术的发展使存储器系统的性能得到提高,尽管峰值速率依然是存储器技术最重要的参数之一,但其它结构参数也极大地影响存储器系统的性能。本文将重点介绍存储器架构对系统性能的影响。
存储器技术大多数根据其运行速度来命名。例如,PC100 SDRAM器件是指数据速率为100MHz的存储技术,PC133则表示数据速率为133MHz,等等。尽管这种命名的习惯随着时间发展而变化,但通常还是能给潜在买家提供关于存储器运行速度的信息。事实上,今天的主流存储技术都是按照其峰值数据速率来命名的,这将继续成为评估存储系统性能的要素之一。不过,在实际系统中,没有存储器能完全工作在其峰值速率下。
从写命令转换到读命令,在某个时间访问某个地址,以及刷新数据等操作都要求数据总线在一定时间内保持休止状态,这样就不能充分利用存储器通道。此外,宽并行总线和DRAM内核预取都经常导致不必要的大数据量存取。在指定的时间段内,存储器控制器能存取的有用数据称为有效数据速率,这很大程度上取决于系统的特定应用。有效数据速率随着时间而变化,常低于峰值数据速率。在某些系统中,有效数据速率可下降到峰值速率的10[%]以下。
表1:每百周期发生两个总线转换时的有效数据速率和峰值数据速率。
通常,这些系统受益于那些能产生更高有效数据速率的存储器技术的变化。在CPU方面存在类似的现象,最近几年诸如AMD和 Transmeta等公司已经指出,在测量基于CPU的系统的性能时,时钟频率不是的要素。存储器技术已经很成熟,峰值速率和有效数据速率或许并不比以前匹配的更好。尽管峰值速率依然是存储器技术最重要的参数之一,但其他结构参数也可以极大地影响存储器系统的性能。
影响有效数据速率的参数
有几类影响有效数据速率的参数,其一是导致数据总线进入若干周期的停止状态。在这类参数中,总线转换、行周期时间、CAS延时以及RAS到CAS的延时(tRCD)引发系统结构中的大部分延迟问题。
总线转换本身会在数据通道上产生非常长的停止时间。以GDDR3系统为例,该系统对存储器的开放页不断写入数据。在这期间,存储器系统的有效数据速率与其峰值速率相当。不过,假设100个时钟周期中,存储器控制器从读转换到写。由于这个转换需要6个时钟周期,有效的数据速率下降到峰值速率的 94[%]。在这100个时钟周期中,如果存储器控制器将总线从写转换到读的话,将会丢失更多的时钟周期。这种存储器技术在从写转换到读时需要15个空闲周期,这会将有效数据速率进一步降低到峰值速率的79[%]。表1显示出针几种高性能存储器技术类似的计算结果。
显然,所有的存储器技术并不相同。需要很多总线转换的系统设计师可以选用诸如XDR、RDRAM或者DDR2这些更高效的技术来提升性能。另一方面,如果系统能将处理事务分组成非常长的读写序列,那么总线转换对有效带宽的影响最小。不过,其他的增加延迟现象,例如库(bank)冲突会降低有效带宽,对性能产生负面影响。
DRAM技术要求库的页或行在存取之前开放。一旦开放,在一个最小周期时间,即行周期时间(tRC)结束之前,同一个库中的不同页不能开放。对存储器开放库的不同页存取被称为分页遗漏,这会导致与任何tRC间隔未满足部分相关的延迟。对于还没有开放足够周期以满足tRC间隙的库而言,分页遗漏被称为库冲突。而tRC决定了库冲突延迟时间的长短,在给定的DRAM上可用的库数量直接影响库冲突产生的频率。
表2:不同存储技术的总峰值带宽以及控制器管脚数的总线带宽。
大多数存储器技术有4个或者8个库,在数十个时钟周期具有tRC值。在随机负载情况下,那些具有8个库的内核比具有4个库的内核所发生的库冲突更少。尽管tRC与库数量之间的相互影响很复杂,但是其累计影响可用多种方法量化。
存储器读事务处理
考虑三种简单的存储器读事务处理情况。种情况,存储器控制器发出每个事务处理,该事务处理与前一个事务处理产生一个库冲突。控制器必须在打开一个页和打开后续页之间等待一个tRC时间,这样增加了与页循环相关的延迟时间。在这种情况下的有效数据速率很大程度上决定于I/O,并主要受限于DRAM内核电路。的库冲突频率将有效带宽削减到当前端存储器技术峰值的20[%]到30[%]。
在第二种情况下,每个事务处理都以随机产生的地址为目标。此时,产生库冲突的机会取决于很多因素,包括tRC和存储器内核中库数量之间的相互作用。tRC值越小,开放页循环地越快,导致库冲突的损失越小。此外,存储器技术具有的库越多,随机地址存取库冲突的机率就越小。
第三种情况,每个事务处理就是一次页命中,在开放页中寻址不同的列地址。控制器不必访问关闭页,允许完全利用总线,这样就得到一种理想的情况,即有效数据速率等于峰值速率。
种和第三种情况都涉及到简单的计算,随机情况受其他的特性影响,这些特性没有包括在DRAM或者存储器接口中。存储器控制器仲裁和排队会极大地改善库冲突频率,因为更有可能出现不产生冲突的事务处理,而不是那些导致库冲突的事务处理。
然而,增加存储器队列深度未必增加不同存储器技术之间的相对有效数据速率。例如,即使增加存储器控制队列深度,XDR的有效数据速率也比 GDDR3高20[%]。存在这种增量主要是因为XDR具有更高的库数量以及更低的tRC值。一般而言,更短的tRC间隔、更多的库数量以及更大的控制器队列能产生更高的有效带宽。
实际上,很多效率限制现象是与行存取粒度相关的问题。tRC约束本质上要求存储器控制器从新开放的行中存取一定量的数据,以确保数据管线保持充满。事实上,为保持数据总线无中断地运行,在开放一个行之后,只须读取很少量的数据,即使不需要额外的数据。
另外一种减少存储器系统有效带宽的主要特性被归类到列存取粒度范畴,它规定了每次读写操作必须传输的数据量。与之相反,行存取粒度规定每个行激活(一般指每个RAS的CAS操作)需要多少单独的读写操作。列存取粒度对有效数据速率具有不易于量化的巨大影响。因为它规定一个读或写操作中需要传输的最小数据量,列存取粒度给那些一次只需要很少数据量的系统带来了问题。例如,一个需要来自两列各8字节的16字节存取粒度系统,必须读取总共32字节以存取两个位置。因为只需要32个字节中的16个字节,系统的有效数据速率降低到峰值速率的50[%]。总线带宽和脉冲时间长度这两个结构参数规定了存储器系统的存取粒度。
表3:目前主流存储技术的存取粒度和总线带宽值。
总线带宽是指连接存储器控制器和存储器件之间的数据线数量。它设定最小的存取粒度,因为对于一个指定的存储器事务处理,每条数据线必须至少传递一个数据位。而脉冲时间长度则规定对于指定的事务处理,每条数据线必须传递的位数量。每个事务处理中的每条数据线只传一个数据位的存储技术,其脉冲时间长度为1。总的列存取粒度很简单:列存取粒度=总线宽度×脉冲时间长度。
很多系统架构仅仅通过增加DRAM器件和存储总线带宽就能增加存储系统的可用带宽。毕竟,如果4个400MHz数据速率的连接可实现 1.6GHz的总峰值带宽,那么8个连接将得到3.2GHz。增加一个DRAM器件,电路板上的连线以及ASIC的管脚就会增多,总峰值带宽相应地倍增。
首要的是,架构师希望完全利用峰值带宽,这已经达到他们通过物理设计存储器总线所能达到的值。具有256位甚或512位存储总线的图形控制器已并不鲜见,这种控制器需要1,000个,甚至更多的管脚。封装设计师、ASIC底层规划工程师以及电路板设计工程师不能找到采用便宜的、商业上可行的方法来对这么多信号进行布线的硅片区域。仅仅增加总线宽度来获得更高的峰值数据速率,会导致因为列存取粒度限制而降低有效带宽。
假设某个特定存储技术的脉冲时间长度等于1,对于一个存储器处理,512位宽系统的存取粒度为512位(或者64字节)。如果控制器只需要一小段数据,那么剩下的数据就被浪费掉,这就降低了系统的有效数据速率。例如,只需要存储系统32字节数据的控制器将浪费剩余的32字节,进而导致有效的数据速率等于50[%]的峰值速率。这些计算都假定脉冲时间长度为1。随着存储器接口数据速率增加的趋势,大多数新技术的脉冲时间长度都大于1。
内核预取
一种称为内核预取的功能主要负责增加最小的脉冲时间长度。DRAM内核电路不能跟上I/O电路速度的速增。由于数据不能再连续地从内核中取出以确保控制器需求,内核通常为I/O提供比DRAM总线宽度更大的数据集。
本质上,内核传输足够的数据到接口电路,或者从接口电路传输足够的数据,以使接口电路保持足够长时间的繁忙状态,以便让内核准备下一个操作。例如,假设DRAM内核每个纳秒才能对操作响应一次。不过,接口可以支持每纳秒两位的数据速率。
DRAM内核每次操作取两个数据位,而不是一个数据位,因而不必浪费接口一半的容量。在接口传输数据之后,内核已经准备好响应下一个请求,而不需增加延时。增加的内核预取导致最小脉冲时间长度增加为2,这将直接影响列存取粒度。
对于每个增加到总线宽度的额外信号,存储器接口将传输两个额外的数据位。因此具有最小脉冲时间长度为2的512位宽的存储系统,其取粒度为 1,024位(128字节)。很多系统对最小存取粒度的问题并不敏感,因为它们存储大量的数据。不过,某些系统依赖存储器系统提供小的数据单元,并获益于更窄、更有效的存储器技术。
小结
随着存储技术向峰值数据速率发展,有效的数据速率变的越来越重要。在选择存储器时,设计师必须深入了解已公布的存储器规范,并明白某个特定的技术特性将对应用设计产生怎样的影响。存储器系统设计师必须超越峰值数据速率规范,就像CPU设计师不再用千兆Hz作为的性能衡量标准一样。尽管对于存储器接口而言,峰值数据速率依然是最终要的性能规范,但有效的数据速率已开始为系统设计师和架构师提供更大的空间。未来产品的性能将极大地取决于其存储器系统的有效利用程度。