欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

主板不支持单条大容量内存的原因详解

程序员文章站 2022-09-23 14:02:41
主板不支持单条大容量内存的原因详解增大内存容量不但可以提高读写速度,而且会适当的提高系统性能;单条大容量内存在一些主板上是无法识别的,那么是为什么呢?下面为大家详细介绍下... 14-04-10...

  随着内存价格的下调,不少网友都为自己的机器配置了高容量内存,增大内存容量不但可以提高读写速度,而且会适当的提高系统性能;但是,单条大容量内存在一些主板上(时间比较长的主板)不是无法识别,就是识别错误(容量识别错误)。具体是什么原因造成的呢?首先我们了解一些内存的知识,相信网友会在其中找到答案的。

  一.内存芯片的逻辑bank

  我们知道主板上使用的32mb/64mb/128mb的内存条都是由若干内存芯片焊接在4层或6层电路板上组成的,因此首先我们必须对内存芯片的内部结构有个清楚的认识,见下图:

主板不支持单条大容量内存的原因详解
主板不支持单条大容量内存的原因详解
主板不支持单条大容量内存的原因详解

  在芯片的内部,内存的数据是以位(bit)为单位写入一张大的矩阵中,每个单元我们称为cell,只要指定一个行(row),再指定一个列(column),就可以准确地定位到某个cell,这就是内存芯片寻址的基本原理。这个阵列我们就称为内存芯片的bank,也称之为逻辑bank(logical bank)。由于工艺上的原因,这个阵列不可能做得太大,所以一般内存芯片中都是将内存容量分成几个阵列来制造,也就是说存在内存芯片中存在多个逻辑bank,随着芯片容量的不断增加,逻辑bank数量也在不断增加,目前从32mb到1gb的芯片基本都是4个,只有早期的16mbit和32mbit的芯片采用的还是2个逻辑bank的设计,譬如三星的两种16mb芯片:k4s161622d (512k x 16bit x 2 bank)和k4s160822dt(1m x 8bit x 2 bank)。芯片组本身设计时在一个时钟周期内只允许对一个逻辑bank进行操作(实际上芯片的位宽就是逻辑bank的位宽),而不是芯片组对内存芯片内所有逻辑bank同时操作。逻辑bank的地址线是通用的,只要再有一个逻辑bank编号加以区别就可以了(bank0到bank3)。但是这个芯片的位宽决定了一次能从它那里读出多少数据,并不是内存芯片里所有单元的数据一次全部能够读出,下图就是一个容量为32mb(256mbit)内存芯片内部逻辑bank结构示意图,从中你可以更清楚逻辑bank的结构。

主板不支持单条大容量内存的原因详解

  图中可以看出,dq数据输入/输出线只有8根而不是32根,可以发现4个bank是分时工作的,任一时刻只可能有一个bank的数据被存取,0-3是它们的编号。每个逻辑bank有8m个单元格(cell),一些厂商(比如现代/三星)就把每个逻辑bank的单元格数称为数据深度(data depth),每个单元由8bit组成,那么一个逻辑bank的总容量就是64mbit(8m×8bit),4个逻辑bank就是256mbit,因此这颗芯片的总容量就是256mbit(32mb)。

  内存芯片的容量是一般以bit为单位的。比如说32mbit的芯片,就是说它的容量是32mb(b=bit=位),注意位(bit)与字节(byte)区别,这个芯片换算成字节就是4mb(b=byte=字节=8个bit),一般内存芯片厂家在芯片上是标明容量的,我们可以芯片上的标识知道,这个芯片有几个逻辑bank,每个逻辑bank的位宽是多少,每个逻辑bank内有多少单元格(cell),比如目前目前64mb和128mb内存条常用的64mbit的芯片就有如下三种结构形式:

  ①16 meg x 4 (4 meg x 4 x 4 banks) [16m╳4]

  ②8 meg x 8 (2 meg x 8 x 4 banks) [8m╳8]

  ③4 meg x 16 (1 meg x 16 x 4 banks) [4m╳16]

  表示方法是:每个逻辑bank的单元格数×逻辑bank数量×每个单元格的位数(芯片的位宽)。芯片逻辑bank位宽目前的工艺水平只能最多做到16位,因此大家看到几乎所有的芯片逻辑bank位宽只可能4/8/16三者之一。以前16mbit的芯片基本采用的单个芯片两个逻辑bank,但是到了64mbit基本就都是4个逻辑bank设计了,今后随着生产工艺水平的提高估计单个芯片8个甚至16个逻辑bank的出现也不是没有可能.

  二.内存条的物理bank

  通常主板上的每个内存插槽分为两段,这个大家从via主板bios设置中的bank 0/1 dram timing选项很容易推理得到,实际上也就是两个bank,不过这里的bank概念与我们前面分析芯片内部结构时提到的bank可不一样。简单地说这个bank就是内存和主板上的北桥芯片之间用来交换数据的通道,目前以sdram系统为例,cpu与内存之间(就是cpu到dimm槽)的接口位宽是64bit,也就意味着cpu一次会向内存发送或从内存读取64bit的数据,那么这一个64bit的数据集合就是一个内存条bank,很多厂家的产品说明里称之为物理bank(physical bank),目前绝大多数的芯片组都只能支持一根内存包含两个物理bank,但是针对某个具体的条子,很多人想当然,认为每个dimm插槽使用内存条的面数来区分占用几个bank通道,单面的(16m,64m)只占用一个物理bank,而双面的(32m,128m)则需占用两个物理bank。实际上物理bank与面数是无关的,pcb电路可以设计成双面和单面,也可把全部芯片(16颗)放在一面上(至少从理论上是完全可能)。有些内存条单面就是一个物理bank,但有些双面才是一个物理bank,所以不能一概而论。前一阵闹得沸沸扬扬的大度256mb内存条就是一个典型的例子,虽然是双面并多达16枚芯片,但仍然是单个物理bank的。要准确知道内存条实际物理bank数量,我们只要要将单个芯片的逻辑bank数量和位宽以及内存条上芯片个数搞清楚。各个芯片位宽之和为64就是单物理bank,如果是128就是双物理bank。目前的芯片组最多支持2个物理bank。所以内存厂家生产的内存条都不可能超过2个物理bank。