现在的位置: 首页 > 综合 > 正文

SDRAM

2014年01月13日 ⁄ 综合 ⁄ 共 3212字 ⁄ 字号 评论关闭

出于本人工作的需要,和一些朋友的建议,我尝试对至今学到的内存知识进行简单的概
括。这一系列文章,将会描述SDRAM系列内存(SDRAM, DDR, DDR2等)的结构和工作原理,旨
在给一些对内存技术感兴趣的朋友提供一个交流的窗口。
        另外,此文章的内容来自网上搜罗或者一些资料整理,在此之上,有本人提供整理和加
工,本人只以交流与学习为用,若有兴趣转载,敬请保留文章中提到的内容出处和文章的作
者信息。

----

        和很多人一样,我开始对内存技术丝毫不敢兴趣,因为从原理上看,内存的运作似乎没
有什么深入的必要,当大家研究磁盘的时候,这样作会对文件系统概念,操作系统的磁盘管
理认识有较多帮助。而更不能像吃透CPU那样,从深层次影响软件设计,研究内存可能只会
如同认识光驱那样,将不会对非专业人士带来直观的好处。
        但是进入这个行业以后,我就觉得原先对内存测试的理解有着明显的误区,作为高级应
用程序来说,他们直接进行存取的对象就是内存,内存的硬件架构直接影响着计算机体系的
设计。内存测试又是如此的纷繁变幻,其间的头绪万千体现出了丰富的商业思想。
        经历过众多标准的洗礼,SDRAM从各种存储媒体中脱引而出,由此引出了DDR, DDRII,
这些耳熟能详的字眼已经成为计算机日常工作中无可避免的话题。因此本文就尝试从SDRAM
基本理论入手,来学习和交流其间用到的内存技术。如有理解错误之处,希望读者可以指出。

1. 简介

  SDRAM,Synchronous Dynamic Random Access Memory,中文译名是同步动态随机存储
器。这是一个复合的词语,我们尝试分开来解释。

    * Random,随机,指的就是RAM芯片具有随机存储特征,因此可以指定地址自由地进行
      读写。你可以想象一下磁带的工作方式,当前位置不能满足要求的时候,我们就需要
      倒带到目的地址来完成操作。

    * Dynamic,动态,相对于SRAM中的Static而言,DRAM是需要定时的刷新其存储阵列,
      以保证芯片上的数据不会丢失,这与DRAM的物理特性有关,我们在此不做探讨。

    * Synchronous,同步,指的是此类型RAM的时钟频率和CPU前端总线的频率是一致的,
      其实SDRAM潜藏的重要特征即是,内部命令的发送和数据传输频率都是以这个频率为
      基准的。

2. SDRAM的基本概念介绍


   
    一个简单的 64Mx8的SDRAM芯片,采用DIMM插口标准(图片来自wikipedia.org)

    * 模组(Module)
      这就是我们常说的内存条。用这样的专业术语,是为了和另一中专用设备Socket区分
      开来,Socket是内存厂家为测试而设计的内存设备,最大的区别就是,Socket具有可
      插拔的内存芯片接口,上面的内存芯片可以任意拆卸。
      在以下的说明中,笔者尝试用Module来取代内存条的说法,需要读者予以注意。

    * 单/双列内存模组SIMM/DIMM(Single/Double In-Line Memory Module)
      单列是说,模组只有一侧与主板的内存插槽实现通信,即便单列模组的接口部分有两
      列金手指。而双列就容易明白了,双列的内存模组用到了两侧的金手指,各边对应一
      排引脚。
     
    * 内存芯片(Chip)
      当我们拿到内存条的时候,一个直观的感受就是,在内存条上面可以看到一颗颗黑色
      的矩形芯片,它就是内存芯片,在香港或台湾的市面上,厂商们称之为“晶片”。

    * 芯片的数据宽度
      每个芯片存放了大量的存储单元,这里一块存储单元的长度,就是芯片的数据宽度。
      如果要让内存和CPU通信,那么一定要使内存一次性提供了CPU需要的数据。我们提到
      过SDRAM的时钟频率与前端总线频率是一致的,那么SDRAM就要在一个时钟周期内提供
      CPU数据宽度等大小的数据。此时,内存上面的芯片来分担了数据的组合。
      一个重要的概念就是,SDRAM提供一个物理Bank(Physical Bank, P-Bank)来与CPU
      通信,而SDRAM就需要通过对具有数据宽度的芯片分配,组合成P-Bank来达成这一条
      件。

    * 物理Bank(P-Bank)
      注意:在一些厂家口中,物理Bank又称之为Rank。

      既然P-Bank实现CPU对等长度的通信,那么P-Bank的长度自然也就等于CPU数据宽度。
      比如说Intel32构架下的数据宽度是64Bits,那么通用的SDRAM一个P-Bank的宽度就是
      64Bits。
      那么内存芯片怎么构成一个P-Bank呢,我们可不可以只作一个内存芯片来嵌入到内存
      条上?P-Bank在一个内存条上也是只有一个的?
      答案不是如此的。
      首先,做成一个64Bits的芯片技术上完全可行,但是技术成本和实用性来说都是划不
      来的,比如以笔者所处的行业来说,如果这样的芯片测试不通过,那么给予其降级是
      非常麻烦的。通常情况下,SDRAM的芯片大小是8Bits,最大也不过16Bits,假设来拿
      8Bits的SDRAM芯片来焊接成一个使用在Pentium之上的内存条,他就需要使用64/8 =
      8个芯片来组成一个P-Bank。

      P-Bank在一个内存条上也未必只有一个的,这是考虑到一个P-Bank的内存条其容量受
      限,导致内存条空间严重浪费了,当然也不能满足其现在日益增长的内存容量需求。

      在如今的市面上,SDRAM最多包含两个P-Bank,这同样是技术和成本等因素的折中考
      虑。但是一定要澄清一个观点:金手指排数,不等于P-Bank数量。

3. 进入到芯片的世界


   
    一个L-Bank,一块内存存储阵列(图片来自www.stor-age.com)

3.1 RAM使用存储阵列来实现随机存取

      这是很简单的道理,就如同数据结构中数组和链表的概念类似,通过提供数组的各维
的索引来自由读写数组元素,RAM也是如此。
      RAM提供了二维的存储阵列,在其之上分布了一块块的内存单元,这里的的一个二维
的存储阵列,就是一个逻辑Bank(Logic Bank, L-Bank)。
      而这些内存单元的容量将被分为一个个Bit,每一个bit被存放在一个单独的内存体之
中,这里的内存体,就是内存中最小的存储单元。
     

3.2 逻辑Bank (L-Bank)

      上面我们说过,SDRAM一次传输的数据量就是芯片数据宽度,那么很显然,存储单元
的容量就是芯片的数据宽度,L-Bank一次提供了芯片的数据宽度,也就是相当于存储单元
的容量了。
      L-Bank数量同样不是单一的,因为单一的逻辑Bank会造成非常严重的地址冲突,这在
以后会详述。最普遍的情况下,SDRAM大多拥有4个L-Bank。

4. 小小的总结

4.1 简单看内存寻址

      我们整理一下现在学到的知识,拿内存读操作来简单的说明寻址这一过程。
      首先,需要确定L-Bank,然后在选定的L-Bank上确定行数和列数,找到L-Bank之上的
满足要求的存储单元,我们在将从各个芯片上取到的数据来组合成一个P-Bank,传递给
北桥芯片上的内存控制器。

4.2 一些简单的计算,来巩固学到的知识。

      内存芯片容量 = L-Bank行数 * L-Bank列数 * L-Bank数量 * 芯片数据宽度
      单个P-Bank容量 = 内存芯片容量 * (CPU数据宽度 / 内存数据宽度)
      模组容量 = 单个P-Bank容量 * P-Bank数量

下一章章节,我们将简单介绍内存的封装技术。

抱歉!评论已关闭.