转CalmBright兄的博文:http://www.cnblogs.com/CalmBright/archive/2009/07/19/1526569.html
Abstract
在用NIos II 调试sdram遇到了其容量计算的问题,现介绍如下
Introduction
问题1:什么是DRAM、SRAM、SDRAM?
答:名词解释如下
DRAM--------动态随即存取器,需要不断的刷新,才能保存数据,而且是行列地址复用的,许多都有页模式
SRAM--------静态的随机存储器,加电情况下,不需要刷新,数据不会丢失,而且一般不是行列地址复用的
SDRAM-------同步的DRAM,即数据的读写需要时钟来同步
问题2:为什么DRAM要刷新,SRAM则不需要?
答:这是由RAM的设计类型决定的,DRAM用了一个T和一个RC电路,导致电容会漏电和缓慢放电,所以需要经常刷新来保存数据
问题3:我们通常所说的内存用的是什么呢?这三个产品跟我们实际使用有什么关系?
答:内存(即随机存贮器RAM)可分为静态随机存储器SRAM,和动态随机存储器DRAM两种。我们经常说的“
内存”是指DRAM。而SRAM大家却接触的很少。
问题4:为什么使用DRAM比较多、而使用SRAM却很少?
答:1)因为制造相同容量的SRAM比DRAM的成本高的多,正因为如此,才使其发展受到了限制。因此目前SRAM基本上只用于CPU内部的一级缓存以及内置的二级缓存。仅有少量的网络服务器以及路由器上能够使用SRAM。
2)存储单元结构不同导致了容量的不同:一个DRAM存储单元大约需要一个晶体管和一个电容(不
包括行读出放大器等),而一个SRAM存储单元大约需要六个晶体管。DRAM和SDRAM由于实现工艺问题,容量
较SRAM大,但是读写速度不如SRAM。
问题5:用得最多的DRAM有什么特点呢?它的工艺是什么情况?(通常所说的内存就是DRAM)
答:1)DRAM需要进行周期性的刷新操作,我们不应将SRAM与只读存储器(ROM)和Flash Memory相混淆,因为SRAM是一种易失性存储器,它只有在电源保持连续供应的情况下才能够保持数据。“随机访问”是指存储器的内容可以以任何顺序访问,而不管前一次访问的是哪一个位置。
2)DRAM和SDRAM由于实现工艺问题,容量较SRAM大。但是读写速度不如SRAM,但是现在,SDRAM的速度也已经很快了,时钟好像已经有150兆的了。那么就是读写周期小于10ns了。
3)SDRAM虽然工作频率高,但是实际吞吐率要打折扣。以PC133为例,它的时钟周期是7.5ns,当CAS latency=2 时,它需要12个周期完成8个突发读操作,10个周期完成8个突发写操作。不过,如果以交替方式访问Bank,SDRAM可以在每个周期完成一个读写操作(当然除去刷新操作)。
4)其实现在的主流高速存储器是SSRAM(同步SRAM)和SDRAM(同步DRAM)。目前可以方便买到的SSRAM最大容量是8Mb/片,最大工作速度是166MHz;可以方便买到的SDRAM最大容量是128Mb/片,最大工作速度是133MHz。
问题6:用得比较少但速度很快,通常用于服务器cache的SRAM有什么特点呢?
答:1)SRAM是静态的,DRAM或SDRAM是动态的,静态的是用的双稳态触发器来保存信息,而动态的是用电子,要不时的刷新来保持。SRAM是Static Random Access Memory的缩写,中文含义为静态随机访问存储器,它是一种类型的半导体存储器。“静态”是指只要不掉电,存储在SRAM中的数据就不会丢失。
2)SRAM其实是一种非常重要的存储器,它的用途广泛。SRAM的速度非常快,在快速读取和刷新时能够保持数据完整性。SRAM内部采用的是双稳态电路的形式来存储数据。所以SRAM的电路结构非常复杂。
3)从晶体管的类型分,SRAM可以分为双极性与CMOS两种。从功能上分,SRAM可以分为异步SRAM和同步SRAM(SSRAM)。异步SRAM的访问独立于时钟,数据输入和输出都由地址的变化控制。同步SRAM的所有访问都在时钟的上升/下降沿启动。地址、数据输入和其它控制信号均于时钟信号相关。
最后要说明的一点:
SRAM不应该与SDRAM相混淆,SDRAM代表的是同步DRAM(Synchronous DRAM),这与SRAM是完全不同的。SRAM也不应该与PSRAM相混淆,PSRAM是一种伪装成SRAM的DRAM。
SDRAM的逻辑Bank与芯片容量表示方法
1、逻辑Bank与芯片位宽
讲完SDRAM的外在形式,就该深入了解SDRAM的内部结构了。这里主要的概念就是逻辑Bank。简单地说,SDRAM的内部是一个存储阵列。因为如果是管道式存储(就如排队买票),就很难做到随机访问了。
阵列就如同表格一样,将数据“填”进去,你可以把它想象成一张表格。和表格的检索原理一样,先指定一个行(Row),再指定一个列(Column),我们就可以准确地找到所需要的单元格,这就是内存芯片寻址的基本原理。对于内存,这个单元格可称为存储单元,那么这个表格(存储阵列)叫什么呢?它就是逻辑Bank(Logical Bank,下文简称L-Bank)。
L-Bank存储阵列示意图
由于技术、成本等原因,不可能只做一个全容量的L-Bank,而且最重要的是,由于SDRAM的工作原理限制,单一的L-Bank将会造成非常严重的寻址冲突,大幅降低内存效率(在后文中将详细讲述)。所以人们在SDRAM内部分割成多个L-Bank,较早以前是两个,目前基本都是4个,这也是SDRAM规范中的最高L-Bank数量。到了RDRAM则最多达到了32个,在最新DDR-Ⅱ的标准中,L-Bank的数量也提高到了8个。
这样,在进行寻址时就要先确定是哪个L-Bank,然后再在这个选定的L-Bank中选择相应的行与列进行寻址。可见对内存的访问,一次只能是一个L-Bank工作,而每次与北桥交换的数据就是L-Bank存储阵列中一个“存储单元”的容量。在某些厂商的表述中,将L-Bank中的存储单元称为Word(此处代表位的集合而不是字节的集合)。
从前文可知,SDRAM内存芯片一次传输率的数据量就是芯片位宽,那么这个存储单元的容量就是芯片的位宽(也是L-Bank的位宽),但要注意,这种关系也仅对SDRAM有效,原因将在下文中说明。
2、内存芯片的容量
现在我们应该清楚内存芯片的基本组织结构了。那么内存的容量怎么计算呢?显然,内存芯片的容量就是所有L-Bank中的存储单元的容量总合。计算有多少个存储单元和计算表格中的单元数量的方法一样:
存储单元数量=行数×列数(得到一个L-Bank的存储单元数量)×L-Bank的数量
由上图可以看到 row=13 column=9 bank=4 data width=32
在计算存储单元数量,我犯了一个很荒唐的错误,计算结果可想而之,根本和上面显示的容量大相径庭:
468(存储单元数量)=13(行数)×9(列数)(得到一个L-Bank的存储单元数量)×4(L-Bank的数量)
其得出的容量和64Bytes差的太多了
正确的计算应该是如下:
行数=2^13 列数=2^9
容量=2^13x2^9x4x32/1024/1024/8=512MBits=64MBytes
在很多内存产品介绍文档中,都会用M×W的方式来表示芯片的容量(或者说是芯片的规格/组织结构)。M是该芯片中存储单元的总数,单位是兆(英文简写M,精确值是1048576,而不是1000000),W代表每个存储单元的容量,也就是SDRAM芯片的位宽(Width),单位是bit。计算出来的芯片容量也是以bit为单位,但用户可以采用除以8的方法换算为字节(Byte)。比如8M×8,这是一个8bit位宽芯片,有8M个存储单元,总容量是64Mbit(8MB)。
不过,M×W是最简单的表示方法。下图则是某公司对自己内存芯片的容量表示方法,这可以说是最正规的形式之一。
业界正规的内存芯片容量表示方法
我们可以计算一下,结果可以发现这三个规格的容量都是128Mbits,只是由于位宽的变化引起了存储单元的数量变化。从这个例子就也可以看出,在相同的总容量下,位宽可以采用多种不同的设计。
3、与芯片位宽相关的DIMM设计
为什么在相同的总容量下,位宽会有多种不同的设计呢?这主要是为了满足不同领域的需要。现在大家已经知道P-Bank的位宽是固定的,也就是说当芯片位宽确定下来后,一个P-Bank中芯片的个数也就自然确定了,而前文讲过P-Bank对芯片集合的位宽有要求,对芯片集合的容量则没有任何限制。高位宽的芯片可以让DIMM的设计简单一些(因为所用的芯片少),但在芯片容量相同时,这种DIMM的容量就肯定比不上采用低位宽芯片的模组,因为后者在一个P-Bank中可以容纳更多的芯片。比如上文中那个内存芯片容量标识图,容量都是128Mbit,合16MB。如果DIMM采用双P-Bank+16bit芯片设计,那么只能容纳8颗芯片,计128MB。但如果采用4bit位宽芯片,则可容纳32颗芯片,计512MB。DIMM容量前后相差出4倍,可见芯片位宽对DIMM设计的重要性。因此,8bit位宽芯片是桌面台式机上容量与成本之间平衡性较好的选择,所以在市场上也最为普及,而高于16bit位宽的芯片一般用在需要更大位宽的场合,如显卡等,至于4bit位宽芯片很明显非常适用于大容量内存应用领域,基本不会在标准的Unbuffered 模组设计中出现。
DownLoad
SDRAM工作原理.pdf
Declaration
以上大部分内容均来自网络,只有一小部分作者添加