论文部分内容阅读
从上个世纪50年代的真空管、磁芯内存再到70年代初兴起的DRAM,计算机的内存技术经历了三次重大变迁。
在计算机系统中,内存占有极其重要的地位,微处理器所处理的任何数据都必须首先从内存中获取,处理的结果也必须经由内存再形成指定的目标输出。倘若没有高效率的内存系统配合,那么处理器的速度再快也无济于事。在历史的发展中,我们可以看到,内存与处理器总是同步提升的,早期的FPM、EDO,再到后来的SDRAM、DDR,RDRAM,乃至今天的DDR2和XDR,内存技术在这十几年间发生了多次根本性的技术变革,而所有的变革都是为了实现同样的目标:更高的带宽、更短的延迟、更大的容量,这一切都是为了更有效率向处理器输出对方所需的巨量数据,以保证整机系统能拥有最理想的效能。今天,我们再度面临内存技术变革的临界点:DDR2即将取代DDR成为主流,Rambus公司的XDR内存将在PS3游戏机之类的高速系统中获得应用,DDR3技术未雨绸缪……
程序内存思想的提出与发展
对许多刚刚接触到计算机理论的初学者来说,要理解内存与外存之间的含义并不太容易,尽管几乎所有人都知道硬盘、软盘、光盘属于外存范畴,可永久性保存数据;而插在主板内存槽上带若干芯片的电路板就是内存,它只能在开机状态下暂时保存数据,若关机或重启,数据便会彻底丢失。但这些其实都只是表面现象,要理解内存的真正含义,我们有必要了解计算机的发明历程。
1946年2月,宾夕法尼亚大学研制成功世界上第一台全自动电子计算机,它就是著名的“ENIAC(Electronic Numerical Integrater And Calculator,电子数字积分计算机)”。ENIAC成功实现了用机器来代替人从事复杂繁琐计算工作的梦想,之于后世的伟大意义不言而喻。不过,ENIAC的操作相当不方便,它只有20个暂存器而没有真正的存储器,操作者必须用线路连接的方法手工编排程序然后连接电路。这种准备工作要花几小时甚至几天时间,而计算本身只需几分钟—计算的高速与程序的手工存在极大地反差。在深入研究ENIAC缺陷后,冯·诺伊曼(1903-1957)提出了革命性的“程序内存”思想—将计算机的运算程序存在专门的存储器中,程序设计员只要在存储器中寻找运算指令,机器就会自行计算,这样就不必为每个问题都进行重新编程,大大加快了运算进程。之后,冯·诺伊曼对这套思想进行完善并结合二进制,提出自己的“EDVAC(Electronic Discrete Variable Automatic Computer,电子离散变量自动计算机)”方案,该方案对计算机作出明确的结构定义:EDVAC计算机由运算器、控制器、存储器、输入装置和输出装置五大部分组成,其中运算器与存储器构成相互协同的运算组件,在计算机系统中占据核心地位,输入装置与输出装置负责计算机与人的信息交互,而控制器就负责整套系统的协调运作。最终,冯·诺伊曼的EDVAC思想获得伟大的成功,计算机从此朝向冯·诺伊曼所创造的体系发展,今天我们所见的任何计算机系统,也许形态各异、性能相差巨大,但在架构上都属于冯·诺伊曼计算机体系,而他本人也因此被誉为“计算机之父”。
内存的史前时代
EDVAC思想确定了存储器的核心地位(后来为与外存系统相区别,它便被称为“内存”,以下照此统称)。在冯·诺伊曼的计算机方案中,内存只是一个逻辑的概念,它可以是任何一种存储技术。事实上,内存技术在后来的发展中始终与计算机技术紧密相连。从上个世纪40年代至今,计算机经历了以下四个发展阶段:电子管计算机(1946-1957年)、晶体管计算机(1958-1964年)、中小规模集成电路计算机(1965-1970年)和大规模/超大规模集成电路计算机(1971到现在)。在电子管计算机时代,电子管、电容器、打孔机以及水银延迟线等都被作为内存,你可以想象出它们的简陋之处,但在逻辑上它们承担的任务与今天我们所见的内存没有什么不同。后来,磁芯内存(Magnetic core memory)成为这种简陋方案的终结者,它的诞生时间也是上个世纪50年代初,发明者是大名鼎鼎的王安(Dr. An Wang)和Jay Forrester。相比电子管和水银延迟线,磁芯内存具有体积小、稳定度高等优点,并采用随机存取的管理方式。在刚推出时,磁芯内存价格高昂,但随着批量生产的实现,价格出现大幅下滑,在上个世纪50-60年代间该技术被大量采用。1956年,IBM公司付给王安博士50万美金,取得磁芯内存的专利权,IBM公司从此扮演了领导者角色,而王安博士则拿着这笔专利费去扩展他自己的公司:王安实验室(Wang Laboratories)。

集成电路时代的到来也引发了内存技术的革命。1967年,R.Dennard发明一种可作为内存的逻辑电路技术:DRAM(Dynamic Random Access Memory,动态随机存取内存)。DRAM的基本结构就是一个电容器和一个场效应管(MOSFET)的组合,电容器用于存储电荷,电荷的状态就被作为二进制数的判定依据。如果电容器被充满电、保持一定量的电荷,那么这种状态就被定义为逻辑“1”,如果电容器中没有电荷,那么它表示的就是逻辑“0”,而场效应管就作为开关来决定电子是否应该进入到该电容器中—这样的基本存储单元也被称为一个“Cell”。DRAM发明后获得迅速发展,集成电路技术的来临让DRAM芯片制造简单、低成本且具有很高的存储密度,可谓是作为计算机内存的理想选择。1970年,Intel公司生产了第一颗DRAM芯片,它的线宽为8微米,拥有1Kbits的存储密度—Intel公司是DRAM技术的先行者,它的微处理器业务只不过是后来的事情。在这之后,DRAM技术与集成电路一块进入快速发展时期,著名的摩尔定律也适用于它:每隔18个月,DRAM芯片的存储提高一倍,价格则下降一半。到现在为止,DRAM芯片的存储密度已突破4Gbits(DDR2类型),预计到2010年,DRAM的存储密度可高达64Gbits。理所当然,DRAM在实用化之后很快就取代了磁芯内存,成为计算机内存的新标准,在随后的30余年间,DRAM自身也发展成为一个庞大的体系。今天,人们一提起内存,就认为肯定是DRAM,反之亦然,二者基本上就是同义词。
页面内存奠定基础
页面内存(Page Mode DRAM,简称PM DRAM)可以说是最早被投入实用的内存技术,作为第一代产品,PM DRAM成功构建了内存的逻辑结构,并为后来的技术发展打下坚实的基础。我们知道,一个DRAM芯片包含大量的基本存储单元,每个单元可存储1bit数据,而在使用中,CPU如何才能找到自己所要的数据呢?PM DRAM采用一种被称为“页面结构”的数据组织形式:PM DRAM在逻辑上可以看作是多个存储矩阵的组合,每个矩阵代表一个页面。而页面本身则是由大量的“方格”组成,每个方格对应一个基本存储单元,存放1bit数据,方格的数量越多,该页面的存储容量也就越大。这样,系统便可以根据“页面-行地址-列地址”三个坐标实现对数据的准确定位,进而完成数据的写入和读出操作。

PM DRAM在早期的计算机系统中盛极一时,但随着时间推移,人们发现它存在寻址效率低下的问题—每一个数据读写操作,都必须严格依照“页面-行地址-列地址”的流程来重新定位,即便连续两次操作的数据都位于同一个页面内的同一行。对页面内存的优化由此提上日程。1987年,FPM DRAM (Fast Page Mode,快页模式随机存储器)技术诞生,它其实就是在页面内存基础上改良而来。与PM DRAM相比,FPM DRAM在寻址效率方面有了明显的改进。如果CPU需要访问连续的内存地址,那么在指定页面和行地址后,只要不断地指定出列地址,即可连续读出想要的数据,而不必每一次都按照“页面-行地址-列地址”的流程来重新定位。FPM DRAM技术提出之后被迅速投入到实用中,它在286、386时代非常流行。在频率方面,FPM DRAM最高可达到20MHz(周期50纳秒),这与当时的CPU几乎保持一致,系统性能可获得充分保证。

FPM DRAM的生命力从286一直延续到486时代,而它对应的模组形式也发生数次变迁。最初,FPM DRAM模组采用30-pin接口、双排针脚,可提供1MB-2MB容量,尽管今天看来,这个数字少得可怜,但在当时已是很主流的配置,若能拥有4MB的内存,便称得上是“海量”了。而到486时代后,计算机的处理器、内部总线、操作系统、应用程序都进入快速发展阶段,对内存容量的需求也随之水涨船高,由于模组上的芯片数增多,所采用的接口也发生变化—先出台的是72-pin接口,带有4/8颗内存芯片的新型FPM DRAM,最高容量突破16MB。这种FPM DRAM也流行了一段时间,而到后期,甚至出现了168-pin、最高容量达32MB的FPM DRAM内存。但这个时候,FPM DRAM结构上的缺点也显露无遗:FPM DRAM使用同一电路进行数据存取,要隔3个时钟周期才能够传送一次数据,加之FPM DRAM的存储地址空间按页排列,当访问某一页面后,再切换到另一页面也会产生延迟,很难满足PC系统进一步发展需要。而EDO DRAM便在这样的背景下出现了。
与奔腾共生的EDO DRAM
在486时代,EDO DRAM(Extended Data Out,扩充数据输出随机存储器)开始获得流行。在技术上,EDO DRAM脱胎于FPM DRAM体系,两者的工作原理大体类似,不同之处在于,EDO DRAM在延迟方面有了明显的改观。前面提到,FPM DRAM在两个存取操作间必须要有3个周期的间隔,相当于每隔3个周期才能传输一次数据,而EDO DRAM则允许内存在传输数据的同时去执行下一步的访问操作,这样便将两次数据传输的延迟降低到只需2个时钟周期。这项改进让EDO DRAM获得15-30%的效率提升,对整机性能的影响非常明显。而在电路设计方面,EDO DRAM与FPM DRAM差别不大,前者只是在后者基础上增加了少量必需的EDO逻辑电路,芯片的制造成本当然相差无几—性能优秀加上成本不高,EDO DRAM很顺利取代了FPM DRAM,在486时代后期得到广泛支持,而进入586时代后EDO DRAM就相当流行了,等到Pentium时代,EDO DRAM就成为PC内存的唯一主宰。

早期的EDO DRAM模组采用的是72-pin结构的SIMM接口(Single In-Line Memory Module,单边接触内存模组,接口只有一面有金手指),后期则出现不少168-pin DIMM接口(Dual In-Line Memory Modules,双边接触内存模组,接口两面都有金手指)的版本,但它们均为32位结构。在Pentium以后的PC平台中,64位数据总线成为标准,这样,EDO DRAM模组必须以成对的方式同时安装才能够组成一条64位内存通道,这给用户带来相当大的困扰。再者,EDO DRAM仅是对FPM DRAM作简单的改良,总体技术特性没有本质性的提高,如它的时钟周期很难低于50纳秒,最高频率也是20MHz,速度远落后于同时代的CPU。而最致命的缺陷应该是EDO DRAM所采用的异步访问机制:工作时计算机的内存控制器先发出行地址选择信号(RAS)和列地址选择信号(CAS),以实现地址定位,之后FPM DRAM才能作出反应并将数据通过内存总线传送给CPU(或者将数据写入到内存)。这个步骤完全是由内存自身的速度来决定,而此时内存速度已开始落后于CPU的速度,系统为了让二者可同步工作,就需要在内存访问期间插入一些额外的等待状态,导致内存延迟时间大幅度增加。例如,一个速度为60纳秒的FPM DRAM需要40纳秒的循环时间,当系统速度为100MHz时(一个时钟周期为10纳秒),每当执行一次数据存取,CPU就需额外等待上4个时钟周期才能获取数据,严重影响了系统的整体性能。于是,当更优秀的SDRAM技术出现之后,EDO DRAM也就成为被淘汰的对象。

全新时代的领航者SDRAM
SDRAM(Synchronized DRAM,同步动态随机存储器)大约是1996年底开始在PC系统中出现,PC也是在这个时候开始实现广泛的普及,SDRAM因此广为人知。与EDO DRAM不同,SDRAM采用的是同步运作机制,它在EDO DRAM的基础上加入了同步控制逻辑,利用一个单一的系统时钟来同步所有的地址数据和控制信号。这样,内存与系统总线就工作在同样的频率上,有效消除了需要同步等待的问题。这样,CPU在访问内存时就无需额外的等待,其效率可比原先的EDO DRAM系统高出50%。SDRAM也改用双存储体结构,内含两个交错的存储阵列(EDO DRAM及之前的技术都是单存储体),当CPU访问一个存储体或存储阵列的数据时,另一个存储体或存储阵列就已经为数据访问做好了准备,这样两个存储体轮流切换,内存的读取效率可获得成倍的提高。
结构的优化让SDRAM拥有远高于EDO DRAM的读取效率,但在同时,它的工作频率也获得相当宽裕的提升空间。第一代的PC66标准SDRAM达到66MHz频率、传输周期为15纳秒,它被广泛用于Pentium、Pentium MMX平台;后来的PC100则达到100MHz频率,传输周期下降到10纳秒,它在Pentium Ⅱ、K6-2平台中广为应用;而PC133标准则将SDRAM的速度提高到133MHz、传输周期为7.5纳秒,它也是最为流行的SDRAM规格—从当初的Pentium Ⅲ、Athlon到Pentium 4平台都可见到它的踪影,乃至今天还有为数不少的PC133 SDRAM在市场上流通。SDRAM的频率潜力在200MHz,只是随着DDR SDRAM的出台,SDRAM也就失去了继续发展的价值。
模组方面,SDRAM均采用168-pin DIMM结构,位宽也从EDO DRAM的32位提高到64位,这样它就不用像EDO DRAM一样必须双条内存才可组成一个通道,只要单根模组即可正常使用。同时,它的工作电压也有了明显的下降—EDO DRAM必须工作于5V电压上,而SDRAM只要3.3V、功耗有了明显的下降。由于半导体工艺提升的关系,SDRAM的制造成本远低于EDO DRAM,价格相当平民化。凭借这一系列的优势,SDRAM很快就取代EDO DRAM成为新标准,而它所创下的体系也为随后的DDR、DDR2技术打下了基础。

也是在SDRAM时代,处理器外频的概念广为人知。在更早的一些时候,内存频率可与CPU的频率保持同步,但后来CPU的频率提升步伐远远超过内存,为了保持数据传输的同步进行,CPU就引入了外频与倍频的概念:外频代表前端总线的运行频率,而前端总线则是CPU的唯一数据传输通道,内存频率只有在与前端总线保持同步时才可发挥理想效能。在SDRAM时代,处理器的前端总线在66MHz-133MHz范围,但随后的Pentium 4与Athlon改变了这一切,前者拥有400MHz前端总线,后者也有266MHz。这样,SDRAM技术又开始落伍了,引入新技术势在必行。Intel与AMD作出截然不同的选择,前者与Rambus联手推广RDRAM,意图控制整个内存市场,而AMD则选择过渡平滑的DDR,后者成为最终的胜利者。
RDRAM:技术先进名声糟糕
RDRAM(Rambus DRAM,Rambus动态随机存储器)是一项挑战传统内存的革命性技术,这项技术由Rambus公司(成立于1990年)所开发,之前曾经历Base RDRAM、Concurrent RDRAM等两代技术,直到1999年才进入到成熟阶段。
在核心结构上,RDRAM与我们前面介绍过的所有DRAM技术都不同。我们知道,SDRAM模组都采用64位传输总线,每一个时钟周期可传送64位的数据,后来的DDR、DDR2模组也都是如此。即便是EDO DRAM,也拥有32位并行总线。而RDRAM却采用一种当时非常前卫的设计思想:RDRAM采用16位宽的传输总线,一个周期只能传输16位数据,仅仅是SDRAM的四分之一。但在同时,芯片的逻辑结构也得到大大简化,加上抗干扰能力增强,RDRAM可实现相当高的工作频率。再者,RDRAM率先采用DDR双沿触发技术,数据传输频率可达到芯片工作频率的两倍,通过这样的低位宽、高频率运作方式,RDRAM成功获得了惊人的高效能,大幅度超过同时代的SDRAM和DDR SDRAM技术。
第一代RDRAM共有PC600、PC700和PC800三个标准,数据频率分别为600MHz、700MHz和800MHz,RDRAM模组的位宽为16bit,这样三者便分别拥有1.2GBps、1.4GBps和1.6GBps的传输带宽,而借助双通道技术,RDRAM系统的最高带宽可达到3.2GBps。与之相比,PC-133 SDRAM仅有可怜的1.06GBps且后续提升乏力,PC2100标准的DDR也不过只有2.1GBps,在绝对性能上无法与RDRAM相匹敌。在频率提升潜力方面,RDRAM技术表现绝佳,芯片的最高物理频率可达到640MHz以上,与之对应的数据频率便是1280MHz,在当时来看,这样的效能无疑是非常惊人的。而除了这些,RDRAM技术还有其他的许多优点,如RDRAM内存芯片直接串联在一起,16bit宽度的总线具有很强的抗干扰能力,主板PCB布线较为容易,而SDRAM与DDR在高频时布线相对困难—当然,随着后来技术的发展,DDR系统最终也很好克服了这些问题。

单以技术论,RDRAM无疑大大优于SDRAM,Intel在挑选下一代内存技术时最终选择了RDRAM,当然它的另一个目的是希望通过Rambus公司来控制整个内存市场—RDRAM是一项受保护的专利技术,任何企业要生产RDRAM内存,都必须向Rambus公司缴纳高昂的专利费,而Intel也可从中获取高额利润。但Intel低估了推广RDRAM的巨大困难,RDRAM固然技术先进,但内存厂商若要生产RDRAM就必须购买全新的生产设备,所需投资极其惊人,最终,只有三星、HY等少数大厂进入该领域制造RDRAM芯片,加之不菲的授权费,让RDRAM内存的价格极其夸张。在初期,一条256MB容量的PC800 RDRAM模组居然需要600美金,几乎相当于一部整机的价格,这足以将99%的消费者拒之门外。更要命的是,如此高昂的代价竟然不能换来任何性能优势:一套由Pentium Ⅲ处理器、i820芯片组和RDRAM内存构成的“梦幻平台”,整体性能与当时的“440BX+PC133 SDRAM”平台处于同等水平,而随后的“i815E+PC133 SDRAM”的廉价组合更是将“i820+RDRAM”打得满地找牙。这样,RDRAM至少在Pentium Ⅲ平台中失去了存在的理由,Rambus公司也因此搞得声名狼藉。
进入Pentium 4时代后,RDRAM似乎找到了一些感觉,“i850+双通道RDRAM”多少挽回一些颜面。但很不幸,在这期间RDRAM的价格坚挺,Intel遭遇到前所未有的尴尬局面。此时,DDR内存已经声名鹊起了—DDR内存是SDRAM的平滑升级,它得到所有内存颗粒厂商、芯片组厂商和AMD公司的鼎力支持,Intel自知继续强推RDRAM很不现实,决定也对DDR提供支持,i845D芯片组就是在这样的背景下出台。果然,i845D与DDR的组合不负众望,尽管性能略逊于i850+RDRAM,但仍以明显的价格优势受到用户们的热烈欢迎,i850与RDRAM随之被不断边缘化,虽然此时Rambus公司推出了性能更高的PC1066标准及RIMM4200模组,但已是回天乏力,DDR很快就成为Pentium 4平台的主流。随后,Intel推出i865/i875P系列芯片组,i850与RDRAM被彻底忘记。到此为止,RDRAM在PC平台上寿终正寝,转为面向游戏机、路由器等需要高速内存的场合,而在渡过短暂的低谷之后,这家公司重现锐意进取精神,推出革命性的XDR内存,对此我们之前有很多的介绍,这里就不再重复。
DDR SDRAM: 平滑的技术跨越
当Intel如火如荼推广RDRAM内存的时候,产业界却对DDR SDRAM情有独钟。我们不难看出DDR SDRAM(Double Data Rate Synchronized DRAM,双数据率同步动态随机存储器)应该是在SDRAM基础上改良而来,两者的不同之处在于:DDR内存可以在时钟周期的上升沿和下降沿同时传输数据,这样就可以在芯片物理频率不变的前提下获得翻倍的数据传输效能。不妨举个例子,PC-133 SDRAM以133MHz的频率传输数据,64位模组共有1.06GBps带宽;而同样物理频率的DDR SDRAM以266MHz的频率来传输数据,内存带宽就达到2.1GBps。虽然还逊于双通道的RDRAM,但DDR SDRAM的优势在于,利用原有生产设备即可制造,芯片生产成本与SDRAM相差无几。尽管Intel转向RDRAM,但产业界还是自发走在了一起,联手推广DDR技术,在这其中,VIA、AMD、Micron(美光)等企业发挥了重要的作用。
DDR内存的工作电压只有2.5V,模组仍为64bit位宽,不过接口改用184-pin DIMM结构,在外观上同SDRAM模组非常相似。第一代DDR技术规范包括PC1600和PC2100,也就是人们所说的DDR200和DDR266,正式规范由JEDEC(Joint Electron Device Engineering Council,电子设备工程联合委员会)所掌管。不过,芯片组厂商和内存厂商很快就不满足,它们纷纷推出可支持DDR333标准的产品,在经过一番激烈争论后,JEDEC认可了带宽为2.7GBps的DDR333规范。而在这期间,VIA、SiS及少数内存厂商又向更快的DDR400进军,它们先推出相关产品,想故技重施令JEDEC认可DDR400为事实标准,但这一次JEDEC没有妥协,DDR400被“彻底否决”,DDR333将一直延续到2004年DDR 2到来为止,VIA等少数厂商虽然不服可也无可奈何。而极富戏剧性的是,因推广RDRAM被边缘化的Intel突然声称将支持DDR400标准,面对影响力巨大的Intel,JEDEC不得不低头,匆忙认可DDR400为官方规范,于是DDR400时代正式来临并一直持续至今。
在DDR发展的过程中,双通道技术也被成功引入,nVIDIA公司成为该领域的首创者,它设计的nForce芯片组率先支持双通道DDR266规格,一举成为当时的一大热点。尽管第一代nForce没有成功,但它对后来者影响深远,之后的nForce 2功成名就。而Intel也及时将这项技术引入到PC中,这样,双通道DDR就成为PC内存系统的标准方案,乃至现在DDR2、未来的DDR3系统也都会继续沿用这项设计。
总结
内存技术不断跃进的发展历程也见证了PC的历史:从幼年到成年、从孱弱到壮大,直至无处不在。在可见的将来,计算机都不会脱离冯·诺伊曼体系,内存技术将朝着新的高度继续前进。□
图1王安博士发明的磁芯内存
图2DRAM的基本存储单元:电容作为存储器件,场效应管作为控制器件。
图3页面内存的内部组织结构,采用“页面-行地址-列地址”的三维坐标方式实现地址定位。
图430-pin引脚的FPM DRAM模组,在286到486 PC中常见。
图5采用72-pin SIMM连接方式的EDO内存
图6SDRAM内存,在Pentium Ⅱ/K6-2、Pentium Ⅲ/Athlon时代盛极一时,目前仍可在市面上见到。
图7RDRAM采用芯片串联结构,与并联结构的SDRAM内存存在明显差异。
在计算机系统中,内存占有极其重要的地位,微处理器所处理的任何数据都必须首先从内存中获取,处理的结果也必须经由内存再形成指定的目标输出。倘若没有高效率的内存系统配合,那么处理器的速度再快也无济于事。在历史的发展中,我们可以看到,内存与处理器总是同步提升的,早期的FPM、EDO,再到后来的SDRAM、DDR,RDRAM,乃至今天的DDR2和XDR,内存技术在这十几年间发生了多次根本性的技术变革,而所有的变革都是为了实现同样的目标:更高的带宽、更短的延迟、更大的容量,这一切都是为了更有效率向处理器输出对方所需的巨量数据,以保证整机系统能拥有最理想的效能。今天,我们再度面临内存技术变革的临界点:DDR2即将取代DDR成为主流,Rambus公司的XDR内存将在PS3游戏机之类的高速系统中获得应用,DDR3技术未雨绸缪……
程序内存思想的提出与发展
对许多刚刚接触到计算机理论的初学者来说,要理解内存与外存之间的含义并不太容易,尽管几乎所有人都知道硬盘、软盘、光盘属于外存范畴,可永久性保存数据;而插在主板内存槽上带若干芯片的电路板就是内存,它只能在开机状态下暂时保存数据,若关机或重启,数据便会彻底丢失。但这些其实都只是表面现象,要理解内存的真正含义,我们有必要了解计算机的发明历程。
1946年2月,宾夕法尼亚大学研制成功世界上第一台全自动电子计算机,它就是著名的“ENIAC(Electronic Numerical Integrater And Calculator,电子数字积分计算机)”。ENIAC成功实现了用机器来代替人从事复杂繁琐计算工作的梦想,之于后世的伟大意义不言而喻。不过,ENIAC的操作相当不方便,它只有20个暂存器而没有真正的存储器,操作者必须用线路连接的方法手工编排程序然后连接电路。这种准备工作要花几小时甚至几天时间,而计算本身只需几分钟—计算的高速与程序的手工存在极大地反差。在深入研究ENIAC缺陷后,冯·诺伊曼(1903-1957)提出了革命性的“程序内存”思想—将计算机的运算程序存在专门的存储器中,程序设计员只要在存储器中寻找运算指令,机器就会自行计算,这样就不必为每个问题都进行重新编程,大大加快了运算进程。之后,冯·诺伊曼对这套思想进行完善并结合二进制,提出自己的“EDVAC(Electronic Discrete Variable Automatic Computer,电子离散变量自动计算机)”方案,该方案对计算机作出明确的结构定义:EDVAC计算机由运算器、控制器、存储器、输入装置和输出装置五大部分组成,其中运算器与存储器构成相互协同的运算组件,在计算机系统中占据核心地位,输入装置与输出装置负责计算机与人的信息交互,而控制器就负责整套系统的协调运作。最终,冯·诺伊曼的EDVAC思想获得伟大的成功,计算机从此朝向冯·诺伊曼所创造的体系发展,今天我们所见的任何计算机系统,也许形态各异、性能相差巨大,但在架构上都属于冯·诺伊曼计算机体系,而他本人也因此被誉为“计算机之父”。
内存的史前时代
EDVAC思想确定了存储器的核心地位(后来为与外存系统相区别,它便被称为“内存”,以下照此统称)。在冯·诺伊曼的计算机方案中,内存只是一个逻辑的概念,它可以是任何一种存储技术。事实上,内存技术在后来的发展中始终与计算机技术紧密相连。从上个世纪40年代至今,计算机经历了以下四个发展阶段:电子管计算机(1946-1957年)、晶体管计算机(1958-1964年)、中小规模集成电路计算机(1965-1970年)和大规模/超大规模集成电路计算机(1971到现在)。在电子管计算机时代,电子管、电容器、打孔机以及水银延迟线等都被作为内存,你可以想象出它们的简陋之处,但在逻辑上它们承担的任务与今天我们所见的内存没有什么不同。后来,磁芯内存(Magnetic core memory)成为这种简陋方案的终结者,它的诞生时间也是上个世纪50年代初,发明者是大名鼎鼎的王安(Dr. An Wang)和Jay Forrester。相比电子管和水银延迟线,磁芯内存具有体积小、稳定度高等优点,并采用随机存取的管理方式。在刚推出时,磁芯内存价格高昂,但随着批量生产的实现,价格出现大幅下滑,在上个世纪50-60年代间该技术被大量采用。1956年,IBM公司付给王安博士50万美金,取得磁芯内存的专利权,IBM公司从此扮演了领导者角色,而王安博士则拿着这笔专利费去扩展他自己的公司:王安实验室(Wang Laboratories)。

集成电路时代的到来也引发了内存技术的革命。1967年,R.Dennard发明一种可作为内存的逻辑电路技术:DRAM(Dynamic Random Access Memory,动态随机存取内存)。DRAM的基本结构就是一个电容器和一个场效应管(MOSFET)的组合,电容器用于存储电荷,电荷的状态就被作为二进制数的判定依据。如果电容器被充满电、保持一定量的电荷,那么这种状态就被定义为逻辑“1”,如果电容器中没有电荷,那么它表示的就是逻辑“0”,而场效应管就作为开关来决定电子是否应该进入到该电容器中—这样的基本存储单元也被称为一个“Cell”。DRAM发明后获得迅速发展,集成电路技术的来临让DRAM芯片制造简单、低成本且具有很高的存储密度,可谓是作为计算机内存的理想选择。1970年,Intel公司生产了第一颗DRAM芯片,它的线宽为8微米,拥有1Kbits的存储密度—Intel公司是DRAM技术的先行者,它的微处理器业务只不过是后来的事情。在这之后,DRAM技术与集成电路一块进入快速发展时期,著名的摩尔定律也适用于它:每隔18个月,DRAM芯片的存储提高一倍,价格则下降一半。到现在为止,DRAM芯片的存储密度已突破4Gbits(DDR2类型),预计到2010年,DRAM的存储密度可高达64Gbits。理所当然,DRAM在实用化之后很快就取代了磁芯内存,成为计算机内存的新标准,在随后的30余年间,DRAM自身也发展成为一个庞大的体系。今天,人们一提起内存,就认为肯定是DRAM,反之亦然,二者基本上就是同义词。
页面内存奠定基础
页面内存(Page Mode DRAM,简称PM DRAM)可以说是最早被投入实用的内存技术,作为第一代产品,PM DRAM成功构建了内存的逻辑结构,并为后来的技术发展打下坚实的基础。我们知道,一个DRAM芯片包含大量的基本存储单元,每个单元可存储1bit数据,而在使用中,CPU如何才能找到自己所要的数据呢?PM DRAM采用一种被称为“页面结构”的数据组织形式:PM DRAM在逻辑上可以看作是多个存储矩阵的组合,每个矩阵代表一个页面。而页面本身则是由大量的“方格”组成,每个方格对应一个基本存储单元,存放1bit数据,方格的数量越多,该页面的存储容量也就越大。这样,系统便可以根据“页面-行地址-列地址”三个坐标实现对数据的准确定位,进而完成数据的写入和读出操作。

PM DRAM在早期的计算机系统中盛极一时,但随着时间推移,人们发现它存在寻址效率低下的问题—每一个数据读写操作,都必须严格依照“页面-行地址-列地址”的流程来重新定位,即便连续两次操作的数据都位于同一个页面内的同一行。对页面内存的优化由此提上日程。1987年,FPM DRAM (Fast Page Mode,快页模式随机存储器)技术诞生,它其实就是在页面内存基础上改良而来。与PM DRAM相比,FPM DRAM在寻址效率方面有了明显的改进。如果CPU需要访问连续的内存地址,那么在指定页面和行地址后,只要不断地指定出列地址,即可连续读出想要的数据,而不必每一次都按照“页面-行地址-列地址”的流程来重新定位。FPM DRAM技术提出之后被迅速投入到实用中,它在286、386时代非常流行。在频率方面,FPM DRAM最高可达到20MHz(周期50纳秒),这与当时的CPU几乎保持一致,系统性能可获得充分保证。

FPM DRAM的生命力从286一直延续到486时代,而它对应的模组形式也发生数次变迁。最初,FPM DRAM模组采用30-pin接口、双排针脚,可提供1MB-2MB容量,尽管今天看来,这个数字少得可怜,但在当时已是很主流的配置,若能拥有4MB的内存,便称得上是“海量”了。而到486时代后,计算机的处理器、内部总线、操作系统、应用程序都进入快速发展阶段,对内存容量的需求也随之水涨船高,由于模组上的芯片数增多,所采用的接口也发生变化—先出台的是72-pin接口,带有4/8颗内存芯片的新型FPM DRAM,最高容量突破16MB。这种FPM DRAM也流行了一段时间,而到后期,甚至出现了168-pin、最高容量达32MB的FPM DRAM内存。但这个时候,FPM DRAM结构上的缺点也显露无遗:FPM DRAM使用同一电路进行数据存取,要隔3个时钟周期才能够传送一次数据,加之FPM DRAM的存储地址空间按页排列,当访问某一页面后,再切换到另一页面也会产生延迟,很难满足PC系统进一步发展需要。而EDO DRAM便在这样的背景下出现了。
与奔腾共生的EDO DRAM
在486时代,EDO DRAM(Extended Data Out,扩充数据输出随机存储器)开始获得流行。在技术上,EDO DRAM脱胎于FPM DRAM体系,两者的工作原理大体类似,不同之处在于,EDO DRAM在延迟方面有了明显的改观。前面提到,FPM DRAM在两个存取操作间必须要有3个周期的间隔,相当于每隔3个周期才能传输一次数据,而EDO DRAM则允许内存在传输数据的同时去执行下一步的访问操作,这样便将两次数据传输的延迟降低到只需2个时钟周期。这项改进让EDO DRAM获得15-30%的效率提升,对整机性能的影响非常明显。而在电路设计方面,EDO DRAM与FPM DRAM差别不大,前者只是在后者基础上增加了少量必需的EDO逻辑电路,芯片的制造成本当然相差无几—性能优秀加上成本不高,EDO DRAM很顺利取代了FPM DRAM,在486时代后期得到广泛支持,而进入586时代后EDO DRAM就相当流行了,等到Pentium时代,EDO DRAM就成为PC内存的唯一主宰。

早期的EDO DRAM模组采用的是72-pin结构的SIMM接口(Single In-Line Memory Module,单边接触内存模组,接口只有一面有金手指),后期则出现不少168-pin DIMM接口(Dual In-Line Memory Modules,双边接触内存模组,接口两面都有金手指)的版本,但它们均为32位结构。在Pentium以后的PC平台中,64位数据总线成为标准,这样,EDO DRAM模组必须以成对的方式同时安装才能够组成一条64位内存通道,这给用户带来相当大的困扰。再者,EDO DRAM仅是对FPM DRAM作简单的改良,总体技术特性没有本质性的提高,如它的时钟周期很难低于50纳秒,最高频率也是20MHz,速度远落后于同时代的CPU。而最致命的缺陷应该是EDO DRAM所采用的异步访问机制:工作时计算机的内存控制器先发出行地址选择信号(RAS)和列地址选择信号(CAS),以实现地址定位,之后FPM DRAM才能作出反应并将数据通过内存总线传送给CPU(或者将数据写入到内存)。这个步骤完全是由内存自身的速度来决定,而此时内存速度已开始落后于CPU的速度,系统为了让二者可同步工作,就需要在内存访问期间插入一些额外的等待状态,导致内存延迟时间大幅度增加。例如,一个速度为60纳秒的FPM DRAM需要40纳秒的循环时间,当系统速度为100MHz时(一个时钟周期为10纳秒),每当执行一次数据存取,CPU就需额外等待上4个时钟周期才能获取数据,严重影响了系统的整体性能。于是,当更优秀的SDRAM技术出现之后,EDO DRAM也就成为被淘汰的对象。

全新时代的领航者SDRAM
SDRAM(Synchronized DRAM,同步动态随机存储器)大约是1996年底开始在PC系统中出现,PC也是在这个时候开始实现广泛的普及,SDRAM因此广为人知。与EDO DRAM不同,SDRAM采用的是同步运作机制,它在EDO DRAM的基础上加入了同步控制逻辑,利用一个单一的系统时钟来同步所有的地址数据和控制信号。这样,内存与系统总线就工作在同样的频率上,有效消除了需要同步等待的问题。这样,CPU在访问内存时就无需额外的等待,其效率可比原先的EDO DRAM系统高出50%。SDRAM也改用双存储体结构,内含两个交错的存储阵列(EDO DRAM及之前的技术都是单存储体),当CPU访问一个存储体或存储阵列的数据时,另一个存储体或存储阵列就已经为数据访问做好了准备,这样两个存储体轮流切换,内存的读取效率可获得成倍的提高。
结构的优化让SDRAM拥有远高于EDO DRAM的读取效率,但在同时,它的工作频率也获得相当宽裕的提升空间。第一代的PC66标准SDRAM达到66MHz频率、传输周期为15纳秒,它被广泛用于Pentium、Pentium MMX平台;后来的PC100则达到100MHz频率,传输周期下降到10纳秒,它在Pentium Ⅱ、K6-2平台中广为应用;而PC133标准则将SDRAM的速度提高到133MHz、传输周期为7.5纳秒,它也是最为流行的SDRAM规格—从当初的Pentium Ⅲ、Athlon到Pentium 4平台都可见到它的踪影,乃至今天还有为数不少的PC133 SDRAM在市场上流通。SDRAM的频率潜力在200MHz,只是随着DDR SDRAM的出台,SDRAM也就失去了继续发展的价值。
模组方面,SDRAM均采用168-pin DIMM结构,位宽也从EDO DRAM的32位提高到64位,这样它就不用像EDO DRAM一样必须双条内存才可组成一个通道,只要单根模组即可正常使用。同时,它的工作电压也有了明显的下降—EDO DRAM必须工作于5V电压上,而SDRAM只要3.3V、功耗有了明显的下降。由于半导体工艺提升的关系,SDRAM的制造成本远低于EDO DRAM,价格相当平民化。凭借这一系列的优势,SDRAM很快就取代EDO DRAM成为新标准,而它所创下的体系也为随后的DDR、DDR2技术打下了基础。

也是在SDRAM时代,处理器外频的概念广为人知。在更早的一些时候,内存频率可与CPU的频率保持同步,但后来CPU的频率提升步伐远远超过内存,为了保持数据传输的同步进行,CPU就引入了外频与倍频的概念:外频代表前端总线的运行频率,而前端总线则是CPU的唯一数据传输通道,内存频率只有在与前端总线保持同步时才可发挥理想效能。在SDRAM时代,处理器的前端总线在66MHz-133MHz范围,但随后的Pentium 4与Athlon改变了这一切,前者拥有400MHz前端总线,后者也有266MHz。这样,SDRAM技术又开始落伍了,引入新技术势在必行。Intel与AMD作出截然不同的选择,前者与Rambus联手推广RDRAM,意图控制整个内存市场,而AMD则选择过渡平滑的DDR,后者成为最终的胜利者。
RDRAM:技术先进名声糟糕
RDRAM(Rambus DRAM,Rambus动态随机存储器)是一项挑战传统内存的革命性技术,这项技术由Rambus公司(成立于1990年)所开发,之前曾经历Base RDRAM、Concurrent RDRAM等两代技术,直到1999年才进入到成熟阶段。
在核心结构上,RDRAM与我们前面介绍过的所有DRAM技术都不同。我们知道,SDRAM模组都采用64位传输总线,每一个时钟周期可传送64位的数据,后来的DDR、DDR2模组也都是如此。即便是EDO DRAM,也拥有32位并行总线。而RDRAM却采用一种当时非常前卫的设计思想:RDRAM采用16位宽的传输总线,一个周期只能传输16位数据,仅仅是SDRAM的四分之一。但在同时,芯片的逻辑结构也得到大大简化,加上抗干扰能力增强,RDRAM可实现相当高的工作频率。再者,RDRAM率先采用DDR双沿触发技术,数据传输频率可达到芯片工作频率的两倍,通过这样的低位宽、高频率运作方式,RDRAM成功获得了惊人的高效能,大幅度超过同时代的SDRAM和DDR SDRAM技术。
第一代RDRAM共有PC600、PC700和PC800三个标准,数据频率分别为600MHz、700MHz和800MHz,RDRAM模组的位宽为16bit,这样三者便分别拥有1.2GBps、1.4GBps和1.6GBps的传输带宽,而借助双通道技术,RDRAM系统的最高带宽可达到3.2GBps。与之相比,PC-133 SDRAM仅有可怜的1.06GBps且后续提升乏力,PC2100标准的DDR也不过只有2.1GBps,在绝对性能上无法与RDRAM相匹敌。在频率提升潜力方面,RDRAM技术表现绝佳,芯片的最高物理频率可达到640MHz以上,与之对应的数据频率便是1280MHz,在当时来看,这样的效能无疑是非常惊人的。而除了这些,RDRAM技术还有其他的许多优点,如RDRAM内存芯片直接串联在一起,16bit宽度的总线具有很强的抗干扰能力,主板PCB布线较为容易,而SDRAM与DDR在高频时布线相对困难—当然,随着后来技术的发展,DDR系统最终也很好克服了这些问题。

单以技术论,RDRAM无疑大大优于SDRAM,Intel在挑选下一代内存技术时最终选择了RDRAM,当然它的另一个目的是希望通过Rambus公司来控制整个内存市场—RDRAM是一项受保护的专利技术,任何企业要生产RDRAM内存,都必须向Rambus公司缴纳高昂的专利费,而Intel也可从中获取高额利润。但Intel低估了推广RDRAM的巨大困难,RDRAM固然技术先进,但内存厂商若要生产RDRAM就必须购买全新的生产设备,所需投资极其惊人,最终,只有三星、HY等少数大厂进入该领域制造RDRAM芯片,加之不菲的授权费,让RDRAM内存的价格极其夸张。在初期,一条256MB容量的PC800 RDRAM模组居然需要600美金,几乎相当于一部整机的价格,这足以将99%的消费者拒之门外。更要命的是,如此高昂的代价竟然不能换来任何性能优势:一套由Pentium Ⅲ处理器、i820芯片组和RDRAM内存构成的“梦幻平台”,整体性能与当时的“440BX+PC133 SDRAM”平台处于同等水平,而随后的“i815E+PC133 SDRAM”的廉价组合更是将“i820+RDRAM”打得满地找牙。这样,RDRAM至少在Pentium Ⅲ平台中失去了存在的理由,Rambus公司也因此搞得声名狼藉。
进入Pentium 4时代后,RDRAM似乎找到了一些感觉,“i850+双通道RDRAM”多少挽回一些颜面。但很不幸,在这期间RDRAM的价格坚挺,Intel遭遇到前所未有的尴尬局面。此时,DDR内存已经声名鹊起了—DDR内存是SDRAM的平滑升级,它得到所有内存颗粒厂商、芯片组厂商和AMD公司的鼎力支持,Intel自知继续强推RDRAM很不现实,决定也对DDR提供支持,i845D芯片组就是在这样的背景下出台。果然,i845D与DDR的组合不负众望,尽管性能略逊于i850+RDRAM,但仍以明显的价格优势受到用户们的热烈欢迎,i850与RDRAM随之被不断边缘化,虽然此时Rambus公司推出了性能更高的PC1066标准及RIMM4200模组,但已是回天乏力,DDR很快就成为Pentium 4平台的主流。随后,Intel推出i865/i875P系列芯片组,i850与RDRAM被彻底忘记。到此为止,RDRAM在PC平台上寿终正寝,转为面向游戏机、路由器等需要高速内存的场合,而在渡过短暂的低谷之后,这家公司重现锐意进取精神,推出革命性的XDR内存,对此我们之前有很多的介绍,这里就不再重复。
DDR SDRAM: 平滑的技术跨越
当Intel如火如荼推广RDRAM内存的时候,产业界却对DDR SDRAM情有独钟。我们不难看出DDR SDRAM(Double Data Rate Synchronized DRAM,双数据率同步动态随机存储器)应该是在SDRAM基础上改良而来,两者的不同之处在于:DDR内存可以在时钟周期的上升沿和下降沿同时传输数据,这样就可以在芯片物理频率不变的前提下获得翻倍的数据传输效能。不妨举个例子,PC-133 SDRAM以133MHz的频率传输数据,64位模组共有1.06GBps带宽;而同样物理频率的DDR SDRAM以266MHz的频率来传输数据,内存带宽就达到2.1GBps。虽然还逊于双通道的RDRAM,但DDR SDRAM的优势在于,利用原有生产设备即可制造,芯片生产成本与SDRAM相差无几。尽管Intel转向RDRAM,但产业界还是自发走在了一起,联手推广DDR技术,在这其中,VIA、AMD、Micron(美光)等企业发挥了重要的作用。
DDR内存的工作电压只有2.5V,模组仍为64bit位宽,不过接口改用184-pin DIMM结构,在外观上同SDRAM模组非常相似。第一代DDR技术规范包括PC1600和PC2100,也就是人们所说的DDR200和DDR266,正式规范由JEDEC(Joint Electron Device Engineering Council,电子设备工程联合委员会)所掌管。不过,芯片组厂商和内存厂商很快就不满足,它们纷纷推出可支持DDR333标准的产品,在经过一番激烈争论后,JEDEC认可了带宽为2.7GBps的DDR333规范。而在这期间,VIA、SiS及少数内存厂商又向更快的DDR400进军,它们先推出相关产品,想故技重施令JEDEC认可DDR400为事实标准,但这一次JEDEC没有妥协,DDR400被“彻底否决”,DDR333将一直延续到2004年DDR 2到来为止,VIA等少数厂商虽然不服可也无可奈何。而极富戏剧性的是,因推广RDRAM被边缘化的Intel突然声称将支持DDR400标准,面对影响力巨大的Intel,JEDEC不得不低头,匆忙认可DDR400为官方规范,于是DDR400时代正式来临并一直持续至今。
在DDR发展的过程中,双通道技术也被成功引入,nVIDIA公司成为该领域的首创者,它设计的nForce芯片组率先支持双通道DDR266规格,一举成为当时的一大热点。尽管第一代nForce没有成功,但它对后来者影响深远,之后的nForce 2功成名就。而Intel也及时将这项技术引入到PC中,这样,双通道DDR就成为PC内存系统的标准方案,乃至现在DDR2、未来的DDR3系统也都会继续沿用这项设计。
总结
内存技术不断跃进的发展历程也见证了PC的历史:从幼年到成年、从孱弱到壮大,直至无处不在。在可见的将来,计算机都不会脱离冯·诺伊曼体系,内存技术将朝着新的高度继续前进。□
图1王安博士发明的磁芯内存
图2DRAM的基本存储单元:电容作为存储器件,场效应管作为控制器件。
图3页面内存的内部组织结构,采用“页面-行地址-列地址”的三维坐标方式实现地址定位。
图430-pin引脚的FPM DRAM模组,在286到486 PC中常见。
图5采用72-pin SIMM连接方式的EDO内存
图6SDRAM内存,在Pentium Ⅱ/K6-2、Pentium Ⅲ/Athlon时代盛极一时,目前仍可在市面上见到。
图7RDRAM采用芯片串联结构,与并联结构的SDRAM内存存在明显差异。