计算机系统性能的提高不仅依赖于CPU主频的提高,还与CPU与内存之间的访问速度密切相关。 当我经常为别人推荐电脑配置时,经常会被问到不同类型内存之间的区别。 每次我都很不耐烦的跟他们说我自己上网查,网上有很多这样的文章。 但是最后还是有很多人回我说“我看不懂那些文章”。 然后自己尝试上网搜索了一下,发现除了内存技术终极指南开头赵晓敏老师写的最经典的一篇文章(不过这篇文章完全不适合新手),其他文章都是要么罗嗦难懂半天。 要么是陷入专业术语的泥潭,让初学者一头雾水,要么是讲历史讲未来,听不懂,讲不明白,无聊。
看过老外写的介绍性文章,感觉很多都非常深入浅显,所以现在尽量写一些基本的东西,即使是新手也能轻松看懂。 明白了,现在你能看到和听到各种记忆,基本的区别在哪里?
好吧内存北桥频率是什么意思,既然我们不去回顾内存历史,那我们就不说fast pages或者edo memory了,直接从SDR说起。 基本上理解SDR是理解所有后续内存的基础,我们来看一个架构:
我们这样想,之前的Cell Array就是存放数据的地方,它的作用就是不断的向内存总线输出它的内容。 当然,Cell肯定不止一个,这里我们以一个为例。 例子。 它的传输速度有多快? 这当然要看具体的内存型号,但是有一点是可以确定的,就是Cell的工作频率和它所连接的总线的数据传输频率是一样的(图中f),也就是说,如果Cell以每秒30Mb的速度发出数据,那么这条总线的传输速度就是30Mb,内存传输是同步的,也就是说图中时钟的每个上升沿,就是数据传输时刻,数据只在每个时钟的上升沿传输。
SDR的结构很简单,所以思路也很简单。 比如我们想提高SDR的速度,我们应该怎么做呢? 那就是增加频率。 如果频率增加,传输速度将增加。 但实际上,频率的提高伴随着能耗的增加,也需要提高工作电压来维持系统的稳定性。 前面我们提到了不止一个Cell,但实际上有很多个Cell。 这样一来,成本就太高了。 我应该怎么办? DDR 来了。 我们来看一下DDR的原理图:
比 SDR 多 1 是多少? 输入输出缓冲还有一个变化,就是时钟边沿发生了变化。 其实从DDR的名字我们就可以知道,它的数据传输速率应该是SDR的两倍。 怎么做? 即我们不仅要在时钟的上升沿传输数据,还要在时钟的下降沿传输数据。
说起来好像很简单,但是肯定有一个问题,有些朋友会想到:你说你翻一倍,你就翻一倍? 工作频率f保持不变,那两倍的数据量从何而来呢? 顺便说一句,这样图中就会多一个buffer。 简单来说,设计上用了一个小技巧:我们对两个Dram Cell使用同一条列地址线,这样可以并行访问,数据从双排的数据总线传输,这样缓冲区得到的数据量就翻倍了。
这种设计改变的代价很小,但却大大提高了内存的性能。
接下来,该说说DDR2了。 其实DDR2所做的改进并没有什么创新,从图中可以看出:
就是将缓冲器和总线的工作频率提高一倍。 频率加倍意味着带宽加倍。 有朋友问个问题。 刚才不是说“频率的提升伴随着能耗和工作电压的提升”,成本很高吗? 是的,但请注意,带宽的增加取决于缓冲区频率的增加。 ,实际上Cell阵列的频率并没有发生变化。 也就是说,我们只是提高了内存中适合提高频率的一个元件的频率。 与内存模块相比,这只是一个很小的部件。 增加它的频率并不会消耗很多能量,成本要小得多。
接下来的DDR3好分析(这里是标准的DDR3,不是显卡上用的GDDR3)看同一张图
我们还是操作IO buffer的那条线,这次把它的频率提高到4倍,带宽也提高到4倍。 请注意,此时Cell阵列的频率(核心频率)保持不变。
当然,DDR3的提升比DDR2更大。 例如,它把工作电压从1.8V降低到1.5V,所以功耗相对降低了。 此外,核心裸片尺寸的缩小也为DDR3的功耗带来了可观的节省。 也就是说,我们可以用同样的功耗获得更高的频率。
嗯,说到这里,估计很多朋友都会有这样的印象:提高,也就是提高弯道附近的频率,不就是加buffer提高频率的原因吗?更好的成本”? 是的,这是因为带宽的大小本质上是由频率决定的。 但这并不意味着可以无限制地提高频率,因为总线频率越高,我们可以使用的总线并行度就越低。 我们以 DDR2 为例。 DDR2内存有240pin针脚。 所有连接到数据和地址总线的引脚在PCB上的布线长度必须几乎相同,这无疑大大增加了设计难度。 更糟糕的是,DDR2 规范规定每个通道只能有两个模块。 DDR3呢? 这东西的数据传输率实在是太高了,所以每条通道的内存模块数量都被限制在了一个。
这对系统的直接影响就是减少了我们可以使用的最大内存容量。 要知道内存控制器(多在北桥)所能处理的内存通道数是有限的,多了就会控制不住。 许多主板最多只支持 4 个 DDR2 或 DDR3 模块。 想一想,4条内存(假设都是单模),能得到多少容量? 要知道理论上32位的处理器也可以支持64G的内存,64位就更不用说了(先不说操作系统的影响,反正至少linux是无限的)。
当然我们也可以添加一个外部内存控制器——如果你能忍受巨大的延迟——所以通常这是不现实的。 还有其他解决办法吗? 是的,比如像AMD已经做的,或者Intel打算在CSI总线上做的——将内存控制器集成到CPU中,这样,由于CPU直接和内存相连,我们的内存rank数量能不能用其实和CPU数量直接相关。 CPU越多,内存带宽就越高,形成类似于多核系统的NUMA架构。 这个过程与北桥的复杂性完全无关。
问题解决了? 没有。 NUMA架构不是万能的,它有它的缺陷,但我们这里暂时不关心它。 更有什者,信号干扰等各种问题潜伏着,随时准备出来耍花样。
事实上,当前学术界仍在努力解决“如何更好地扩展内存带宽”。 比较有效的是Intel推出的FB-DRAM。 在这里,我尽量用比较通俗易懂的语言来解释一下FB-DRAM。
首先,FB-DRAM的内存芯片和现在最流行的DDR2、3是一样的。那么具体有什么区别呢? 我们不要研究AMB之类的东西。 说白了,主要是和内存控制器的连接。 关系。 在DDR系列内存中内存北桥频率是什么意思,我们使用的是并行总线来传输数据,这里改成了串行总线。 有什么好处? 每个人都是电子爱好者。 想想SATA和PCI Express的改进,再想想当时号称内存技术之王的Rambus……囧。 直接讲的话,串行总线最大的优点就是可以把频率提高到一个很高的水平,这似乎有点格格不入,我来说说一些具体的优点:
1个
每个通道可以有更多模块
2个
北桥或内存控制器可以使用更多通道
3个
可两线全双工
4个
设计成差分总线,成本很低,可以进一步降低干扰
如果还是难以理解,我再解释清楚一点:FB-DRAM引脚只有69个引脚,使用它,每个内存通道允许存在8个内存模块。 由于管脚数的减少,北桥现在可以连接6个内存通道,每个通道对主板走线的要求和复杂度也大大降低。
现在计算最大内存容量? 它增加了12倍。 带宽呢? 与DDR2-800相比提升了4倍。 付出的代价? 即因为串行频率太高,驱动总线的能量消耗比较大。
我们快到了。 文章中没有难懂的专业术语,也没有绕来绕去的新概念。 尽量用最流行的词汇来介绍我们目前最常接触到的记忆类型。 由于水平有限,文章中如有错误,欢迎评论指正。
如果您觉得上面的内容不错,相信下面公众号的内容也会对您的生活和事业有所帮助,推荐关注! !
半导体产业观察(icbank)
半导体行业观察:半导体行业第一垂直媒体【】
半导体圈(icquan)
半导体圈是由半导体行业领军企业家、创业者、投资人、ICT技术人才组成的人脉圈。
半导体产业联盟(icunion)
半导体产业联盟:打造国内半导体产业垂直俱乐部【】
IC商店(icstore),国内首家电子元器件采购、销售微商城