文/IT168评测室特约 Myddn
【IT168评测室】最近,假如你仔细的观察PC领域发生的变化,你就会注意的一个新鲜的术语“DDR2”频频出现。顾名思义,DDR2就是第二代双倍速率同步动态随机存储器,这个名字听上去很拗口,实际上我们只要知道它的缩写是DDR SDRAM就行了。就目前的发展看来,DDR2绝对不是纸上谈兵,它的平台已经准备好了,不出意外的话,Intel七月份就会发布支持DDR2的芯片组925X和915。明年,DDR2就会成为PC上普遍使用,甚至是主流的内存类型。
因此,我们应该了解DDR2和它的前一代产品有什么区别,它有什么优势和不足之处。换句话说,我们试图去领会,工业界为什么需要引入这种新的内存类型。
当前的处理器主频和I/O带宽都很高,需要内存提供很高的数据传输率来配合。要知道内存带宽至少要和前端总线带宽同步,这样才不至于影响处理器 性能的发挥。而且处理器的速度提升还在不断的进行中,内存需要每秒钟提供更多的数据来满足处理器的要求。目前的内存速度提升已经相当困难,这时候转变到 DDR2不失为合理的时机,它提供了一条提高内存带宽的康庄之道,可以缓解当前遇到的很多问题。
提高内存性能的两个途径
内存的性能通过下面的公式来计算:
速度=位宽×频率
速度用来表示内存的性能(MB/s),位宽是指内存总线的宽度(bit),频率当然就是指数据传输的频率,注意,这里说的是数据传输的频率,而不是内存的工作频率,在DDR时代,数据传输频率是内存工作频率的二倍。
因此,提高性能有两种方式,增加内存总线的位宽或者是提高内存工作的频率。好的,让我们来看看内存如今的状态是怎么样。
虽然内存发展出很多的类型,但是它们都是基于原始的DRAM单元,实际上,它是一个晶体管和一个电容的结合体,很简单但也很高效。有很多尝试希 望丢弃这种阵旧的以晶体管为基础的存储方式,出现了一些新的存储技术,如MRAM(Magnetoresistive RAM),FRAM (Ferroelectric RAM)等,但是它们都没有获得足够的成功。没有其它内存类型能够提供一个和DRAM相似的,结合了容量,价格和速度的解决方案。
当然还有很多快速的基本单元结构,象静态内存(SRAM),它不象动态内存那样需要刷新(预充电),但是它的每个存储单元耗用了大量的晶体管,它太贵太大了,因此内存芯片不能够达到足够大的容量,还有一些廉价的解决方案,但是它们的性能无法用于PC的主内存系统。
换句话说,基本的DRAM架构仍然是现代内存类型的基础,因此,所有的现代内存类型都继承了DRAM的优点和缺点:它需要刷新(预充电,不然随 着漏电,DRAM中的数据会消失),以及有操作频率的上限(这也是用电容充电来存储数据的弊病)。来谈谈最后的参数,你能够注意到时钟频率是很长时间以来 DRAM唯一改变的地方。当PC的其它子系统变得越来越快时,只有经典的内存单元组织结构很难提高它的时钟频率。实际上,时钟频率的提升完全要归功于半导 体工艺的进步,DRAM的结构没对频率提升做出贡献。
今天,只有那些特别挑选的内存存储阵列的工作频率能达到275MHz(如Hynix发布的DDR550),这些都是成本高昂的产品,无法达到大批量生产。需要注意的是内存存储阵列的频率是无法达到550MHz的,这里说的是内存的传输速度。
因此,我们只剩下一条路,那就是增加内存总线的宽度,但是,这个方法受到了很多限制:今天,标准平台使用双通道128bit内存总线,它的设 计,布线已经比原来64位内存通道的主板复杂了很多,几乎很难在合理的成本下再提高内存总线位数。继续增加总线宽度,不但成本高昂,而且带来的电磁干扰会 造成极大的负面影响。
看来,我们给自己制造了一个死锁,内存单元无法提高频率,内存总线位宽也不能轻易增加,我们该何去何从?
DDR2内存就是解决方案
SDRAM (Synchronous Dynamic Random-Access Memory)
首先,让我们回忆一下已经被放弃的SDRAM的工作原理,实际上,它内部包括了许多存储单元阵列,以及输入/输出缓存和电源/刷新电路,最后一 个单元(电源/刷新电路)和我们下面的描述没有关系。它的三个子系统(存储单元阵列,输入/输出缓存)都以相同的频率工作,这就是它为什么称为同步内存的 原因。举例来说,一个100MHz,64位总线宽度的SDRAM,内存的数据通过I/O缓存然后到达内存控制器。这个内存模组就是我们所熟知的PC100 内存,它的带宽为800MB/s(100MHz×8 bytes或64 bits),每个时钟周期传输一次数据,它在时钟的上升沿传输数据。
DDR (Double Data Rate SDRAM)
DDR之所以叫这个名字,是因为它能够以相同频率SDRAM的两倍来传输数据,也就是说,每时钟周期传输两次数据,它在时钟信号的上升沿和下降 沿传输数据。但是加倍的数据从何而来,设计人员使用了一个小小的诡计:内存的存储单元工作在相同的时钟频率下,但是内部总线加宽,以这种方式推进内存模组 的速度。换句话说,从内部阵列到缓存之间的总线宽度是外部总线(buffer到控制器)的两倍,结果就使得缓存到控制器的数据传输率达到内部存储单元工作 频率的两倍。也就是说,存储单元使用一个很宽但较慢的总线,但是当数据传输到控制器时使用了一个较窄但是快速的总线。
如果以实际的数字来衡量,SDRAM内部的存储阵列的总线是32位,工作频率为100MHz,缓存到外部控制器的总线也是32位,工作频率 100MHz。这里数据流没什么改变,内部和外部总线宽度与频率都没有变化,SDRAM模组通过同步读取两颗芯片达到64位的带宽。
DDR的情况有所不同,内部的存储阵列通过一条64位,100MHz的总线连接I/O缓存(或者叫信号放大器),但是数据到内存控制器需要两次 通过32位的总线。换句话说,每时钟周期传输两次数据,分别通过时钟的上升沿和下降沿传输信号。结果就是,数据传输率是内部存储阵列频率的两倍。我们可以 描绘一个明显的场景:数据流慢慢通过宽的管道,然后进入一个狭窄的管道,但是流动的速度更快。DDR内存模组也是64位,模组上的两颗芯片同步读写。
这样的内存被称为DDR200(通过数据传输率来命名)或者称为PC1600。实际上,内部的DRAM存储单元在DDR266内存中的工作频率 是133MHz,在DDR333中,存储阵列的工作频率是166MHz,DDR400中的存储阵列工作频率是200MHz,目前最快的DDR SDRAM的频率(这里不包括那些超频的内存)达到了550MHz,它的内部阵列工作频率达到275MHz,这个频率已经很难再继续提高。此时,就需要一 个新的内存标准可以在今后一段时间内保证内存频率和性能可以稳定的提高。
DDR2
通过上面对DDR SDRAM的讲解,DDR2的特性就很容易理解了,和DDR一样,它的内部存储阵列到I/O缓存之间通过一条宽敞的64位,100MHz总线,但是数据从 缓存传输到外部控制器通过一条快速而狭窄的总线(16位,200MHz),外部总线仍然使用双倍传输数据的策略,我们得到的数据传输率为400MHz。因 此,64位模组需要同时使用4个段(banks)。这个内存模组被称为DDR2-400,它的标记方法和DDR内存相同,都是以内存的数据传输率来标识。
图为各种内存工作原理对比图
因此,以同样100MHz频率工作的DRAM存储单元,我们使用不同的内存模组宽度,得到不同的内存带宽,SDRAM是800MB/s,DDR SDRAM是1600MB/s,DDR2 SDRAM则达到了3200MB/s的数据传输率!感谢多路复用技术,内存模组通过同时使用低速的内存阵列可以达到高带宽,哈哈,这不就是我们期盼的解决 之道吗。
下面会详细解析DDR2的多路复用技术,实际上就是prefetch(数据预取技术)
4-bit prefetch DDR 2提高带宽的关键技术
现在的DRAM内部都采用4个bank的结构,每个bank由存储单元(cell) 队列构成,存储单元队列通过行(row)和列(column)地址定位。让我们看看基本的内存读操作的工作流程:首先是命令和地址信息输入,经过地址解码 器分解成bank(段)和Word(字)选择,Word选择就是行选择,之后是对存储单元进行再存储(Restore)和预充电(Precharge)。 然后是Column(列)选择,到此为止存储单元(cell)已经被定位。存储单元的数据被输出到内部数据总线(Internal Data Bus),最后通过输出电路输出数据。
从内存的读操作中可以了解到内存工作的几个瓶颈,它们分别是内存单元的再存储和预充 电的延时,这个延迟属于bank内部的延迟,由于DRAM结构的限制这个延迟本身不太好解决。还有内部数据总线(Internal Data Bus)的频率限制,内部数据总线是连接DRAM颗粒中4个bank的总线,最后一个DRAM的瓶颈是输入/输出电路的延迟。
图为内存数据传输机理
对于内部数据总线频率较低的瓶颈,可以通过使用Prefetch(数据预取)架构来 解决,举例来说PC133 SDRAM采用了管线突发架构(Pipeline)或者说是1bit Prefetch,因此它内部数据总线的频率是133MHz和数据输出端的数据传输率是一样的。DDR内存采用了2bit Prefetch技术,因此它输出端的数据传输率是内部数据总线频率的2倍,以DDR400为例,它的内部数据总线的频率是200MHz,而输出端的数据 传输率达到了400MHz。
我们知道DRAM内部存储单元的频率提高比较困难且成本较高,DDR333的核心频 率已经达到了167MHz,为了解决外部数据传输率和核心速度之间的矛盾,DDR2采用了4bit Prefetch(数据预取架构),因此DDR2 400的核心频率仅为100MHz,DDR2 533的核心频率为133MHz,因此DDR2很好的解决了DRAM核心频率和外部数据传输频率之间的问题。
从SDRAM开始,内存就可以和时钟同步,最初的SDRAM采用了管线架构 (Pipeline architecture),首先是地址信号(Add)和时钟(CLK)同步,地址信号经过译码选取内存队列中相应的单元,内存队列中选中的数据通过内部 数据总线输出到信号放大电路。SDRAM的信号输出部分也是和时钟信号同步的,这就好象一条连续的管线一样。由于全部操作都和时钟同步,因此也叫同步内 存。
DDR采用了2位预取(2-bit prefetch),也就是2:1的数据预取,2bit预取架构允许内部的队列(column)工作频率仅仅为外部数据传输频率的一半。在SDRAM中数 据传输率完全参考时钟信号,因此数据传输率和时钟频率一样。DDR2采了4位预取(4-bit prefetch),这就是DDR2提高数据传输率的关键,可以在不提高内部存储阵列频率的情况下提高数据输出带宽,未来的DDR3还有现在的RDRAM 采用了8位数据预取。
相对于SDRAM,DDR扩展了原来SDRAM的设计。由于2bit Prefetch架构可以同存取两个bank的数据,使内部数据总线的带宽提高两倍,因此在内存的输出端可以在时钟信号的上升延和下降延传输数据,DDR 的数据传输率是实际工作频率的两倍。DDR2通过使用4-bit预取架构来提高数据传输率,降低对内部bank频率的要求。采用4-bit prefetch架构使DDR2仅能使用两种数据突发传输长度(burst length),BL=4或BL=8。这个比较容易理解,因为DDR2一次存取4bit数据,所以数据突发长度也就成了4或8。
下面是DDR2和DDR主要思想的区别,实际上,这两种内存的差别不仅仅在带宽上。
除了带宽,这里还有一个重要的参数是延迟,就象我前面所说的,存储单元不会一直处于 可用状态,因此它们要进行刷新操作。而且,即使存储单元可用,也不可能立即得到它的内存:这里还有其它类型的延迟,如设置行和列的地址,这此延迟都是不能 避免的,它们由DRAM单元的本质所决定。
让我们看看会有那些延迟,例如内存阵列工作的时钟组合是2-2-2,如果内存阵列在 所有的方案中以相同的频率工作,那么所有的模组都具有同样的延迟(我是说PC100,DDR200,DDR2-400)。它们仅仅是带宽的区别。顺便提一 下,2-2-2组合的含义是:CAS延迟,RAS到CAS的延迟和RAS预充电时间。第一个数字是取得列地址的延迟时间,第二个数字是行和列地址之间的延 迟,第三个数字是存储单元充电时间,预充电实际上是对行数据进行读操作。
但实际上,存储单元不会工作在相同的频率上,举例来说PC133就是一个使用非常普 遍的SDRAM,它的DRAM单元工作在133MHz上。因此,DDR200虽然有着比PC133更高的带宽,但是它的相应延迟却更慢(内部阵列的工作频 率仅100MHz),PC133的存储单元的频率要比DDR200存储单元的频率高33%。结果就是,DDR266才具有和PC133一样的延迟上的优 势。
今天我们也看到类似的情形,DDR200和DDR2-400具有相同的延迟,而后者 具有高一倍的带宽。实际上,DDR2-400和DDR400具有相同的带宽,它们都是3.2GB/s,但是,DDR400的存储阵列工作频率是 200MHz,而DDR2-400的存储阵列工作频率是100MHz,也就是说DDR2-400的延迟要高于DDR400。
让我们来比较一下数字,以DDR400为例,我们通常设置2或者2.5个时钟延迟, 有时是3。也就是10到15纳秒,对于DDR2-400,来计算一下它的延迟:核心工作在100MHz,具有2个时钟延迟,它意味着20ns的延迟,接口 部分占用4个时钟延迟(不过接口工作的频率更高),结果就是DDR2模组的延迟将会是4-4-4个时钟周期,考虑到这里使用很低的核心频率,我们希望看到 未来DDR2-400具有3-3-3的特征,但是即使如此,DDR2-400也是输给DDR400的。
情况看上去有些荒谬,DDR2虽然能提供更大的带宽,具有潜在的优势,但是,DDR2初期的产品在性能上甚至落后于DDR。我们都知道,一样产品需要有其优势才能吸引购买者,那DDR2还有那些优势呢。
速度之外
DDR内存通常采用TSOP芯片封装形式,这种封装形式可以很好的工作在200MHz上,当频率更高时,它过长的管脚就会产生很高的阻抗和寄生电容,这会影响它的稳定性和频率提升的难度。
这里就需要说到另一种封装—BGA或者Ball Grid Array,它可以适应更高的工作频率,如在显卡中已经使用了大量用BGA封装的高速显存。这种封装具有很低的阻抗和寄生电容,并且具有更小的几何尺寸, 允许更在效的散热。DDR2内存颗粒将采用BGA封装。不过,天下没有免费的午餐,BGA封装的成本要高于TSOP。
注意BGA封装并不是DDR2内存所独有的,其实很早以前,Kingmax就已经使用BGA封装的DDR内存,此外显卡上也大量使用BGA封装的显存颗粒。BGA封装可以工作在更高的时钟频率下。
封装上的差别仅仅是DDR和DDR2诸多差异中的一项,如果大家还记得信号终结,我 们知道在使用SCSI硬盘时也需要用到信号终结电路。简单的说,高频信号会在信号线的终点产生反射,这会影响信号品质,混淆有用的信号和反向信号。我们需 要防止这种现象的发生,通过在电路终点使用终结电阻来减少信号反射,保证信号的完事性。
在使用DDR SDRAM的主板上都有几百颗的信号终结电阻,只要你注意观察DIMM插槽下方那些大量的电阻器,它们就是所谓的终结电阻,大量的终结电阻会增加主板的制 造成本。DDR2把终结电路直接内建在核心中,因此就不再需要主板上提供终结电路。实际上,不同的内存模组对终结电路的要求是不一样的,终结电阻的大小决 定了数据线的信号比和反射率,终结电阻小则数据线信号反射低但是信噪比也较低;终结电阻高,则数据线的信噪比高,但是信号反射也会增加。因此主板上的终结 电阻并不能非常好的匹配内存模组,还会在一定程度上影响信号品质。DDR2可以根据自已的特点内建合适的终结电阻,这样可以保证最佳的信号波形。使用 DDR2不但可以降低主板成本,还得到了最佳的信号品质,这是DDR不能比拟的。
其它DDR2比DDR优越的地方——发热量,通常容量的DDR模组(256MB- 512MB)的发热量并不是很高,但是当模组的容量增加时,它的发热量就体现出来了。举例来说,安装4GB内存到插槽中,在峰值调用下内存的发热量将在 35-40W之间,这是个不小的数字了。虽然这样容量的内存在今天并不常见,但是明天呢。因此,需要预先解决这个问题,减少发热量最好就是使用新的内存标 准。而且内存的工作频率(往往发热量是和工作频率共同增长的)将会得到不断的增加,因此我们也需要尽快解决发热量的问题。
DDR2值得骄傲的地方,它的核心工作电压仅为1.8V,而DDR的核心工作电压在 2.5-2.6V(高电压意味着高发热),因此,DDR2产生的热量要小于DDR,估计可以减少30%。实际上,我们也注意到目前有许多DDR也工作在 1.8V,但由于DDR模组规格要求2.5V工作电压,因此它需要把2.5V的输入电压进行转换,这部分会变成热量散发,因此使用低电压DDR也不能减少 模组的发热量。
图为DDR内存工作机理
DDR2增加了posted CAS命令,它改变了以前对SDRAM延迟的理解。我们知道在SDRAM和DDR SDRAM的操作过程中存在许多延迟,如RAS到CAS的(行选择信号到列选择信号)的延迟tRCD(延迟也可称为潜伏周期)。在200MHz的频率下, tRCD延迟大约是20ns,这肯定会降低总线的利用效率。posted CAS命令通过使用附加延迟(additive latency)的概念来解决这个问题。简单说,设定整个读延迟为CAS延迟(CL)加上附加延迟,这样做的好处是能够使CAS命令紧接着RAS命令, tRCD被附加延迟取代。而DDR2的写延迟为读延迟周期减一个时钟周期,DDR2通过增加地址和命令的FIFO(先入先出)寄存器来实现posted CAS,通过寄存器保存CAS命令和地址直到附加延迟结束。在DDR2段交错操作(bank-interleaving operation)时使用4bit突发模式来提高总线利用率。
其它改进的地方,DDR2引入了一个被称为Additive Latency(附加延迟)的技术,理解这项技术我们需要知道真实的内存操作环境,数据并不是随时就能传输,甚至是在数据准备好的情况下也不可以,因为它还要受到内存控制器状态的限制。因此有时当内存控制器在读取早先初如化好的段(bank)时并不能同时发送命令去初始化下一个内存段(bank)。仅仅是 因为这里两个命令需要使用相同的总线来发送两个不同级别的信号,显然这会造成冲突。因此它的结果就是造成了数据流中出现了泡泡(bubble,这里的意思 就是数据流被打断),这是由于组织结构上的冲突。
DDR2引入了附加延迟(dditional latenc)去解决这个问题,它指向当传送自动读取下一个周期命令发生的冲突。因此,我们看到读取数据延迟了一个时钟周期,但是数据流中没有泡泡(bubbles)了,提高了内存子系统的效率。
下一个DDR2内存中的分歧就是可变读延迟(Variable Write Latency)的能力。DDR允许一个1T(一个时钟周期)的写延迟,而且这个时间规格是不能被改变的。到了DDR2,写延迟依赖于读延迟,而且等于读 延迟减一个时钟周期,举例来说,当读延迟是7个时钟周期,写延迟就是6个时钟周期。这看上去比DDR的1个时钟周期糟糕了许多,但实际上,它并没有那么 糟,因为在DDR中写处理需要经过一些特别的准备,但是DDR2中就不需要了。因此,它们虽然有差别,但是就我看来,差别并不大。最后的结果是,DDR2 的写延迟要比DDR高三倍。
DDR2技术总结
让我们来总结一下,DDR2内存将使用240pin的模组,但是它的长度和现在 184pin的DIMM一样,也就是说DDR2模组的pin之间更加紧密了。模组的特性可以让它适应更高的工作频率,而且,模组还能容纳更高容量的内存颗 粒。DDR2模组的优势是明显的,但也不能忽视它的缺点:首先,它在相同时钟速率接口上使用了更高的工作频率,第二,写延迟被增加了。第三,内存的价格会 更加昂贵,因为在封装上的成本增加了许多,DDR和DDR2的其它区别参见下表:
DDR |
DDR-II |
|
数据传输率 |
200/266/333/400 Mbps* |
400/533/(667) Mbps* |
总线频率 |
100/133/166/200 MHz |
200/266/(333) MHz |
内存频率 |
100/133/166/200 MHz |
100/133/(166) MHz |
Batch reading size |
2/4/8 |
4/8** |
Data Strobe |
Single DQS |
Differential Strobe: DQS, /DQS*** |
CAS Latency |
1.5, 2, 2.5 |
3+, 4, 5 |
Write Latency |
1T |
Read Latency-1 |