第一章 SDRAM 基础
等级:初级
2007.8.17
Wick
关于此篇文章:
出于本人工作的需要,和一些朋友的建议,我尝试对至今学到的内存知识进行简单的概
括。这一系列文章,将会描述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数量
下一章章节,我们将简单介绍内存的封装技术。
分享到:
相关推荐
内容概要:本文详细介绍了基于MATLAB GUI界面和卷积神经网络(CNN)的模糊车牌识别系统。该系统旨在解决现实中车牌因模糊不清导致识别困难的问题。文中阐述了整个流程的关键步骤,包括图像的模糊还原、灰度化、阈值化、边缘检测、孔洞填充、形态学操作、滤波操作、车牌定位、字符分割以及最终的字符识别。通过使用维纳滤波或最小二乘法约束滤波进行模糊还原,再利用CNN的强大特征提取能力完成字符分类。此外,还特别强调了MATLAB GUI界面的设计,使得用户能直观便捷地操作整个系统。 适合人群:对图像处理和深度学习感兴趣的科研人员、高校学生及从事相关领域的工程师。 使用场景及目标:适用于交通管理、智能停车场等领域,用于提升车牌识别的准确性和效率,特别是在面对模糊车牌时的表现。 其他说明:文中提供了部分关键代码片段作为参考,并对实验结果进行了详细的分析,展示了系统在不同环境下的表现情况及其潜在的应用前景。
嵌入式八股文面试题库资料知识宝典-计算机专业试题.zip
嵌入式八股文面试题库资料知识宝典-C and C++ normal interview_3.zip
内容概要:本文深入探讨了一款额定功率为4kW的开关磁阻电机,详细介绍了其性能参数如额定功率、转速、效率、输出转矩和脉动率等。同时,文章还展示了利用RMxprt、Maxwell 2D和3D模型对该电机进行仿真的方法和技术,通过外电路分析进一步研究其电气性能和动态响应特性。最后,文章提供了基于RMxprt模型的MATLAB仿真代码示例,帮助读者理解电机的工作原理及其性能特点。 适合人群:从事电机设计、工业自动化领域的工程师和技术人员,尤其是对开关磁阻电机感兴趣的科研工作者。 使用场景及目标:适用于希望深入了解开关磁阻电机特性和建模技术的研究人员,在新产品开发或现有产品改进时作为参考资料。 其他说明:文中提供的代码示例仅用于演示目的,实际操作时需根据所用软件的具体情况进行适当修改。
少儿编程scratch项目源代码文件案例素材-剑客冲刺.zip
少儿编程scratch项目源代码文件案例素材-几何冲刺 转瞬即逝.zip
内容概要:本文详细介绍了基于PID控制器的四象限直流电机速度驱动控制系统仿真模型及其永磁直流电机(PMDC)转速控制模型。首先阐述了PID控制器的工作原理,即通过对系统误差的比例、积分和微分运算来调整电机的驱动信号,从而实现转速的精确控制。接着讨论了如何利用PID控制器使有刷PMDC电机在四个象限中精确跟踪参考速度,并展示了仿真模型在应对快速负载扰动时的有效性和稳定性。最后,提供了Simulink仿真模型和详细的Word模型说明文档,帮助读者理解和调整PID控制器参数,以达到最佳控制效果。 适合人群:从事电力电子与电机控制领域的研究人员和技术人员,尤其是对四象限直流电机速度驱动控制系统感兴趣的读者。 使用场景及目标:适用于需要深入了解和掌握四象限直流电机速度驱动控制系统设计与实现的研究人员和技术人员。目标是在实际项目中能够运用PID控制器实现电机转速的精确控制,并提高系统的稳定性和抗干扰能力。 其他说明:文中引用了多篇相关领域的权威文献,确保了理论依据的可靠性和实用性。此外,提供的Simulink模型和Word文档有助于读者更好地理解和实践所介绍的内容。
嵌入式八股文面试题库资料知识宝典-2013年海康威视校园招聘嵌入式开发笔试题.zip
少儿编程scratch项目源代码文件案例素材-驾驶通关.zip
小区开放对周边道路通行能力影响的研究.pdf
内容概要:本文探讨了冷链物流车辆路径优化问题,特别是如何通过NSGA-2遗传算法和软硬时间窗策略来实现高效、环保和高客户满意度的路径规划。文中介绍了冷链物流的特点及其重要性,提出了软时间窗概念,允许一定的配送时间弹性,同时考虑碳排放成本,以达到绿色物流的目的。此外,还讨论了如何将客户满意度作为路径优化的重要评价标准之一。最后,通过一段简化的Python代码展示了遗传算法的应用。 适合人群:从事物流管理、冷链物流运营的专业人士,以及对遗传算法和路径优化感兴趣的科研人员和技术开发者。 使用场景及目标:适用于冷链物流企业,旨在优化配送路线,降低运营成本,减少碳排放,提升客户满意度。目标是帮助企业实现绿色、高效的物流配送系统。 其他说明:文中提供的代码仅为示意,实际应用需根据具体情况调整参数设置和模型构建。
少儿编程scratch项目源代码文件案例素材-恐怖矿井.zip
内容概要:本文详细介绍了基于STM32F030的无刷电机控制方案,重点在于高压FOC(磁场定向控制)技术和滑膜无感FOC的应用。该方案实现了过载、过欠压、堵转等多种保护机制,并提供了完整的源码、原理图和PCB设计。文中展示了关键代码片段,如滑膜观测器和电流环处理,以及保护机制的具体实现方法。此外,还提到了方案的移植要点和实际测试效果,确保系统的稳定性和高效性。 适合人群:嵌入式系统开发者、电机控制系统工程师、硬件工程师。 使用场景及目标:适用于需要高性能无刷电机控制的应用场景,如工业自动化设备、无人机、电动工具等。目标是提供一种成熟的、经过验证的无刷电机控制方案,帮助开发者快速实现并优化电机控制性能。 其他说明:提供的资料包括详细的原理图、PCB设计文件、源码及测试视频,方便开发者进行学习和应用。
基于有限体积法Godunov格式的管道泄漏检测模型研究.pdf
嵌入式八股文面试题库资料知识宝典-CC++笔试题-深圳有为(2019.2.28)1.zip
少儿编程scratch项目源代码文件案例素材-几何冲刺 V1.5.zip
Android系统开发_Linux内核配置_USB-HID设备模拟_通过root权限将Android设备转换为全功能USB键盘的项目实现_该项目需要内核支持configFS文件系统
C# WPF - LiveCharts Project
少儿编程scratch项目源代码文件案例素材-恐怖叉子 动画.zip
嵌入式八股文面试题库资料知识宝典-嵌⼊式⼯程师⾯试⾼频问题.zip