风雷 2008-6-4 21:25
扫盲贴--浅谈内存技术的发展
首先声明,此文为扫盲贴+八股稿,应另一论坛朋友之邀所写。内容很简单,适合电脑初哥。W9J6vug5r*{x{Vi
6qjV%Z#mm
jJ.j'nrv.b+x]]
计算机系统性能的改善,不仅仅取决于cpu主频的提升,还与cpu和内存之间的存取速度密切相关。在经常帮别人推荐电脑配置的时候,我常常会被别人问起,不同类型内存之间的区别。每一次我都很不耐烦告诉他们,自己去网上搜,网上很多这样的文章。可是很多人最后还是回来找我,说“看不懂那些文章”。然后我自己尝试着上网搜一搜,发现除了最经典的当初赵效民先生写那篇内存技术终极指南(但这篇文章一点都不适合新手),其他文章都是要不罗嗦半天不知所云,要不就是陷入技术名词的泥沼让初学者不知所云,或者就是对于历史和未来侃侃其谈完了不懂还是不懂懂的又觉得没意思。i+uW%^'ONGu
9K*V"^n%w8X5@P/S
我曾经读过一篇老外写的内存发展入门文章,觉得写得非常深入浅出,于是现在,我自己尝试着参考,看能不能写一篇让基础一般的计算机新手也能理解的内存文章,不追求把技术讲得多么出神入化,只求能让大多数人明白,现在你能看到,和听到的各种内存,基本差异在哪里。8a$hxA(k~kUx
8Fb|-~!?3}
好,由于我们不是要去回顾内存历史,所以什么快页,edo的内存统统都不说,直接从SDR开始。基本上,理解SDR是理解后面所有内存的基础,让我们看一个架构:e,h%c7f*NZZ
`E5}/|%N
[img]http://lh5.ggpht.com/likunarmstrong/SEF6V_Agi2I/AAAAAAAABSI/a7P3QgZuGsA/s400/%E8%A3%81%E5%89%AA.jpg[/img]%p5b*d?'\JK
@7|(uHzN9s
咱们这样来想,前面这个Cell Array呢,就是[b]存数据的地方,它的作用就是不断往内存的总线上输出它其中的内容[/b],当然这个Cell的数量肯定只有一个,不过这里我们就以一个举例子了。它传输的速度有多快呢?这个当然就取决于具体内存的型号,不过有一点是可以肯定的,那就是这个Cell的工作频率,和连接它的总线的数据传输频率是一样的(图中的f),也就是说,加入这个Cell以每秒30Mb的速度往外发数据,那么这个总线的传输速度就是30Mb,而且内存传输是同步的,也就是说,图中的每个时钟上升沿,就是数据传输的时刻,而数据也只在每个时钟上升沿才进行传输。b$qZ/?2w1n
4b6r}
L-[L'kW4M
SDR的结构很简单,所以思考也很简单,比如我们想提高SDR的速度,怎么弄?那就是提高频率呗,频率提高了,传输速度就上去了。但事实上,频率提高伴随的是能量消耗的提高,而且还需要提高工作电压来维持系统的稳定性。前面我们说到Cell不止一个,实际上Cell数量是很多的,这样的话,代价就太大了。怎么办?DDR就因此登场了。让我们看看DDR的示意图:
9s(U4_*F h7B
_ Fr/V
oT;OR vK
[img]http://lh6.ggpht.com/likunarmstrong/SEF6WPAgi3I/AAAAAAAABSQ/kJlWZo4yn-M/s400/%E8%A3%81%E5%89%AA_2.jpg[/img]&t6c:?MB/})C2TOH
bfE1~$UM
MK
CF
和SDR比多了一个什么?输入输出的缓冲,还有一个变化,就是时钟沿变了。其实从DDR的名称我们就可以知道,它的数据传输率应该是SDR的两倍。怎么做到的呢?那就是我们不仅在时钟上升沿传数据,还在时钟下降沿传数据。1HL$se,e3AH1_
%J
_acZ.wT
说起来貌似很简单,但肯定有朋友会想到一个问题:[b]你说变两倍就变两倍啊?工作频率f不变,哪里来的两倍的数据量呢?[/b]对了,所以图中才会多出来一个buffer。简单来说,在设计中用了一个小技巧:我们对两个Dram Cells使用相同的列地址线,这样就可以平行访问它们,并将数据从双行的数据总线中传出,这样,buffer得到的数据量就是两倍了。
"iP-Lh^W
这种设计的改变,代价是非常小的,却对内存的性能有很大的提升。
@qtZ.I&D*_W
1|M/V Wk0tU
接下来就该谈DDR2了。其实DDR2所做出来的改进,也不是什么革新性的东西,看图就明白了:
~w/Pl/O'Rh
o@w2@%qo|.s
[img]http://lh6.ggpht.com/likunarmstrong/SEF6WPAgi4I/AAAAAAAABSY/hl2zc38rNCI/s400/%E8%A3%81%E5%89%AA_3.jpg[/img]
~ B+ro
Q xC
q&F;}s1v1b+Id
就是把buffer和总线的工作频率提高了一倍。频率提高一倍,就意味着带宽提高一倍。有朋友有疑问了,你刚才不是说“[b]频率提高伴随的是能量消耗和工作电压的提高”,代价很大么[/b]?是的,但是请注意,带宽的提高,在这里是取决于buffer的频率提高,事实上,Cell array的频率是没变的,换句话说,我们只是提高了[b]内存中某个适合被提高频率的部件的频率,相对于内存模组来说,这只是一个小部件,提高它的频率不会消耗很大的能量,代价小得多。[/b]