已阅读5页,还剩34页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
编者按:目前CPU用的内存正在从DDR2向DDR3过渡,而GPU用的显存则是以GDDR2/3为主、跳过GDDR4、直奔GDDR5而去。或许很多朋友一时还难以接受GDDR5那夸张的频率、不明白GDDR相比DDR发展速度为何如此“超前”、甚至搞不清楚GDDR1/2/3/4/5和DDR1/2/3之间“说不清道不明”的关系。 如果您是一位求知欲很强的电脑爱好者,那么本文非常适合您,笔者特意搜集了大量官方技术文档,为大家献上内存和显存鲜为人知的奥秘近年来CPU(中央处理器)和GPU(图形处理器)的发展速度之快让人目不暇接,新产品的运算能力成倍提升,此时就对内存子系统提出了严峻的需求,因为CPU/GPU运算所需的数据和生成的数据都是来自于内存/显存,如果存储速度存取速度更准确跟不上,那么就会浪费很多时间在数据等待上面,从而影响CPU/GPU的性能发挥。为了让内存/显存不至于造成瓶颈,芯片厂商都在想方设法的提高带宽:AMD和Intel相继将内存控制器整合在了CPU内部,大大降低了延迟并提高存储效率,Intel旗舰级CPU能够支持三通道内存,带宽提升50%;ATI 和NVIDIA 也先后使用了512Bit的显存控制器,总带宽倍增。是何原因导致业界三大巨头如此大费周折呢?这是因为内存技术的发展速度,其实并不如大家想象中的那么快,受到很多技术难题和传统因素的制约,本文就对内存和显存的发展历程及相关技术进行详细分析。 内存的存取原理及难以逾越的频障:在半导体科技极为发达的台湾省,内存和显存被统称为记忆体(Memory),全名是动态随机存取记忆体(Dynamic Random Access Memory,DRAM)。基本原理就是利用电容内存储电荷的多寡来代表0和1,这就是一个二进制位元(bit),内存的最小单位。DRAM的存储单元结构图DRAM的结构可谓是简单高效,每一个bit只需要一个晶体管加一个电容。但是电容不可避免的存在漏电现象,如果电荷不足会导致数据出错,因此电容必须被周期性的刷新(预充电),这也是DRAM的一大特点。而且电容的充放电需要一个过程,刷新频率不可能无限提升(频障),这就导致DRAM的频率很容易达到上限,即便有先进工艺的支持也收效甚微。“上古”时代的FP/EDO内存,由于半导体工艺的限制,频率只有25MHz/50MHz,自SDR以后频率从66MHz一路飙升至133MHz,终于遇到了难以逾越的障碍。此后所诞生的DDR1/2/3系列,它们存储单元官方频率(JEDEC制定)始终在100MHz-200MHz之间徘徊,非官方(超频)频率也顶多在250MHz左右,很难突破300MHz。事实上高频内存的出错率很高、稳定性也得不到保证,除了超频跑简单测试外并无实际应用价值。既然存储单元的频率(简称内核频率,也就是电容的刷新频率名词解释)不能无限提升,那么就只有在I/O(输入输出)方面做文章,通过改进I/O单元,这就诞生了DDR1/2/3、GDDR1/2/3/4/5等形形色色的内存种类,首先来详细介绍下DDR1/2/3之间的关系及特色。通常大家所说的DDR-400、DDR2-800、DDR3-1600等,其实并非是内存的真正频率,而是业界约定俗成的等效频率,这些DDR1/2/3内存相当于老牌SDR内存运行在400MHz、800MHz、1600MHz时的带宽,因此频率看上去很夸张,其实真正的内核频率都只有200MHz而已! 内存有三种不同的频率指标,它们分别是核心频率电容刷新频率、时钟频率和有效数据传输频率。核心频率即为内存Cell阵列(Memory Cell Array,即内部电容)的刷新频率,它是内存的真实运行频率;时钟频率即I/O Buffer(输入/输出缓冲)的传输频率;而有效数据传输频率就是指数据传送的频率(即等效频率)。 SDR和DDR1/2/3全系列频率对照表: 常见DDR内存频率对照表通过上表就能非常直观的看出,近年来内存的频率虽然在成倍增长,可实际上真正存储单元的频率一直在133MHz-200MHz之间徘徊,这是因为电容的刷新频率受制于制造工艺而很难取得突破。而每一代DDR的推出,都能够以较低的存储单元频率,实现更大的带宽,并且为将来频率和带宽的提升留下了一定的空间。 SDR和DDR1/2/3存储原理示意图:虽然存储单元的频率一直都没变,但内存颗粒的I/O频率却一直在增长,再加上DDR是双倍数据传输,因此内存的数据传输率可以达到核心频率的8倍之多!通过下面的示意图就能略知一二:那么,内存IO频率为什么能达到数倍于核心频率呢?相信很多人都知道,DDR1/2/3内存最关键的技术就是分别采用了2/4/8bit数据预取技术(Prefetch),由此得以将带宽翻倍,与此同时I/O控制器也必须做相应的改进。 DDR1/2/3数据预取技术原理:预取,顾名思义就是预先/提前存取数据,也就是说在I/O控制器发出请求之前,存储单元已经事先准备好了2/4/8bit数据。简单来说这就是把并行传输的数据转换为串行数据流,我们可以把它认为是存储单元内部的Raid/多通道技术,可以说是以电容矩阵为单位的。内存数据预取技术示意图:并行转串行这种存储阵列内部的实际位宽较大,但是数据输出位宽却比较小的设计,就是所谓的数据预取技术,它可以让内存的数据传输频率倍增。试想如果我们把一条细水管安装在粗水管之上,那么水流的喷射速度就会翻几倍。明白了数据预取技术的原理之后,再来看看DDR1/2/3内存的定义,以及三种频率之间的关系,就豁然开朗了: SDRAM(Synchronous DRAM):同步动态随机存储器之所以被称为“同步”,因为SDR内存的存储单元频率、I/O频率及数据传输率都是相同的,比如经典的PC133,三种频率都是133MHz。SDR在一个时钟周期内只能读/写一次,只在时钟上升期读/写数据,当同时需要读取和写入时,就得等待其中一个动作完成之后才能继续进行下一个动作。 DDR(Double Date Rate SDRAM):双倍速率同步动态随机存储器双倍是指在一个时钟周期内传输谁做了传输?显然是 I/O缓冲区 在周期的上下沿都做了数据传输!这样就解释了DDR1的I/O频率能和核心频率一致。存储阵列通过预存取技术(怎么实现的不管!)在一个时钟周期内扔过来2bit数据,I/O缓冲区接住了,使用上下沿都发送数据的方式(仅I/O缓冲区能这样干)也在同一个时钟周期内将2bit数据仍出去,在外面看来就等于是在原来的一个时钟周期内发送了2个短时钟周期的数据(一个时钟周期只能发送一个数据!)换言之就是频率提高成原来核心频率的2倍!两次数据,在时钟的上升期和下降期各传输一次数据(通过差分时钟技术实现),在存储阵列频率不变的情况下,数据传输率达到了SDR的两倍,此时就需要I/O从存储阵列中预取2bit数据,因此I/O的工作频率是存储阵列频率的两倍。?结论有误!DQ频率和I/O频率是相同的,因为DQ在时钟上升和下降研能传输两次数据,也是两倍于存储阵列的频率。?结论有误! DDR2(DDR 2SDRAM):第二代双倍速率同步动态随机存储器DDR2在DDR1的基础上,数据预取位数从2bit扩充至4bit存储阵列通过预存取技术(怎么实现的不管!)在一个时钟周期内扔过来4bit数据,I/O缓冲区接住了,通过上下沿各发送1bit数据的方式(仅I/O缓冲区能这样干)在同一个时钟周期内只能将2bit数据仍出去,无法满足要求,只好将原来的一个时钟周期内划分成2个短时钟周期,这样才能传送4bit的数据,在外面看来就等于是在原来的一个时钟周期内发送了4个短时钟周期的数据(一个时钟周期只能发送一个数据!)换言之就是频率提高成原来核心频率的4倍!,此时上下行同时传输数据(双倍)已经满足不了4bit预取的要求,因此I/O控制器频率必须加倍。至此,在存储单元频率保持133-200MHz不变的情况下,DDR2的实际频率达到了266-400MHz,而(等效)数据传输率达到了533-800MHz。 DDR3(DDR3SDRAM):第三代双倍速率同步动态随机存储器DDR3就更容易理解了,数据预取位数再次翻倍到8bit存储阵列通过预存取技术(怎么实现的不管!)在一个时钟周期内扔过来8bit数据,I/O缓冲区接住了,通过上下沿各发送1bit数据的方式(仅I/O缓冲区能这样干)在同一个时钟周期内只能将2bit数据仍出去,无法满足要求,只好将原来的一个时钟周期内划分成4个短时钟周期,这样才能传送8bit的数据,在外面看来就等于是在原来的一个时钟周期内发送了8个短时钟周期的数据(一个时钟周期只能发送一个数据!)换言之就是频率提高成原来核心频率的8倍!,同理I/O控制器频率也加倍。此时,在存储单元频率保持133-200MHz不变的情况下,DDR3的实际频率达到了533-800MHz,而(等效)数据传输率高达1066-1600MHz。综上可以看出,DDR1/2/3的发展是围绕着数据预取而进行的,同时也给I/O控制器造成了不小的压力,虽然存储单元的工作频率保持不变,但I/O频率以级数增长,我们可以看到DDR3的I/O频率已逼近1GHz大关,此时I/O频率成为了新的瓶颈,如果继续推出DDR4(注意不是GDDR4,两者完全不是同一概念,后文会有详细解释)的话,将会受到很多未知因素的制约,必须等待更先进的工艺或者新解决方案的出现才有可能延续DDR的生命。前面介绍的是关于历代内存的技术原理,可以说是比较微观的东西,反映在宏观上,就是常见的内存颗粒及内存条了,这都是些看得见摸得着的东西,但有些概念还是不容易理解,这里一一进行说明: 内存位宽SDR/DDR1/2/3单条内存都是64bit 内存模组的设计取决于内存控制器(集成在北桥或者CPU内部),理论上位宽可以无限提升,但受制因素较多:高位宽将会让芯片组变得十分复杂,对主板布线提出严格要求,内存PCB更是丝毫马虎不得,内存颗粒及芯片设计也必须作相应的调整。可谓是牵一发而动全身,所以多年来业界都是墨守成规,维持64bit的设计不变。 相比之下,显卡作为一个整体就没有那么多的顾忌,只需重新设计GPU内部的显存控制器,然后PCB按照位宽要求布线,焊更多的显存颗粒上去就行了,虽然成本也很高但实现512bit并没有太大难度。显存位宽与内存位宽区别大的根本原因! 多通道内存双通道/三通道既然实现高位宽内存条太难,那么就退而求其次,让两条内存并行传输数据,同样可以让位宽翻倍。目前流行的双通道技术2条内存一起用,不支持双通道的主板只起到内存容量X2的效果,位宽不变!就是如此,北桥或者CPU内部整合了两个独立的64bit内存控制器,同时传输数据等效位宽就相当于128bit。Intel Nehalem核心CPU直接整合三通道内存控制器,位宽高达192bit。但由于CPU、主板、内存方面成本都增加不少,因此在主流Lynnfield核心CPU上面又回归了双通道设计。事实上服务器芯片组已经能够支持四通道内存,对服务器来说成本方面不是问题,只是对稳定性和容错性要求很高。 内存颗粒位宽:4/8/16/32bit理论上,完全可以制造出一颗位宽为64bit的芯片来满足一条内存使用,但这种设计对技术要求很高,良品率很低导致成本无法控制,应用范围很窄。所以内存芯片的位宽一般都很小,台式机内存颗粒的位宽最高仅16bit,常见的则是4/8bit。这样为了组成64bit内存的需要,至少需要4颗16bit的芯片、8颗8bit的芯片或者16颗4bit的芯片这就是内存颗粒这么多的原因!。而显卡对位宽要求很高,容量反而退居其次,所以显存颗粒的位宽普遍比内存颗粒大(这就是显存和内存主要区别之一),比如GDDR3/4/5颗粒都是32bit,4颗就能满足低端卡128bit的需要,8颗可以满足高端卡256bit的需要;而低端GDDR2颗粒为16bit,需要8颗才能组成低端卡128bit的需要。 内存芯片的逻辑Bank在芯片的内部,内存的数据是以bit为单位写入一张大的矩阵中,每个单元称为CELL阵列,只要指定一个行一个列,就可以准确地定位到某个CELL,这就是内存芯片寻址的基本原理。这个阵列我们就称为内存芯片的BANK,也称之为逻辑BANK(Logical BANK)。不可能只做一个全容量的逻辑Bank,因为单一的逻辑Bank将会造成非常严重的寻址冲突为什么?,大幅降低内存效率。所以大容量内存颗粒都是由多个逻辑Bank叠加而成的。简单来说,我们可以把一个Bank看作是一片平面的矩阵纸,而内存颗粒是由多片这样的纸叠起来的。一个Bank的位宽就是内存颗粒的位宽注意!,内存控制器一次只允许对一个Bank进行操作,由于逻辑Bank的地址线是公用的,所以在读写时需要加一个逻辑Bank的编号,这个动作被称为片选。补充内容:内存Bank的探讨 目前很多人对内存Bank(电脑系统与内存之间数据总线的基本工作单位)都有一种误解,认为单面内存就是单Bank,双面内存就是双Bank的。其实这种观念是不对的,内存的Bank(指物理Bank)数和内存颗粒的面无关,它们之间有什么联系呢? 要讲清这个问题,就要提到内存的逻辑Bank,下面就给大家介绍一下物理Bank和逻辑Bank的概念。在介绍之前,我们先简单看一下现在市场上的DRAM内存产品.现在市场上的内存主要有:SDRAM、DDR SDRAM及Rambus。其中Rambus内存的控制器和前两者不同,且内部Bank和前两者也不同,将在后面单独介绍。先主要介绍SDRAM和DDR SDRAM的Bank问题,因为SDRAM就内核、Bank结构而言,和DDR SDRAM没有什么区别,这里作为一个整体来讲。逻辑Bank及其结构内存芯片存储数据的基本单位是bit(位),而进行寻址的基本单位则是Byte(字节),一个Byte就等于8bit。大家知道,在平面坐标系中,要确定一个点就要先找到它的横坐标和纵坐标。而在内存中数据的定位也很相似,内存中的数据结构就是一个大的数据阵列,为了便于理解,我们把它假想成一个大的表格,前面我们提到的平面坐标系中的点,在这里我们可以理解为经过定位后的单元格,当然在一个单元格中不是只有1bit的数据,而是由多个bit组成一个组放在单元格内,这里一个单元格我们可以称作一个组,这个单元格的位数也就是内存逻辑Bank的位宽。在进行数据读取时,先进行行的选定,再进行列的选定,最后再从这个单元格中读取出所需要的数据。而这由许许多多的单元格组成的大表我们就可以理解成逻辑Bank,当然因为制造工艺及数据寻址的原因,不可能让这个表格无限大,一般内存芯片中都是将内存容量分成几个阵列来制造,即多逻辑Bank。随着内存芯片容量的不断增加,逻辑Bank数量也在不断增加,早期的16Mbit之类的芯片采用的还是两个逻辑Bank的设计,现阶段常见内存芯片的Bank一般为4个(不包括Rambus),这点大家可通过内存条的编码进行识别。内存芯片设计时在一个时钟周期内只允许对一个逻辑Bank进行操作(实际上内存芯片的位宽就是逻辑Bank的位宽),而不能对所有逻辑Bank同时操作。所以逻辑Bank的地址线是通用的,只要再有一个逻辑Bank编号加以区别就可以了。内存芯片的位宽决定了一次能从它那里读出多少数据,并不是内存芯片里所有单元的数据能够一次全部读出。为了加深大家对逻辑Bank的理解,我们来看看一个单芯片的逻辑Bank示意图这里不用过于注意结构细节,只需要看看4个内存阵列。从图中可以很清楚地看到这个芯片是一个Bank数为4的芯片,其列和行分别为4096和2048,而逻辑位宽是4bit,将这三者相乘就是这个逻辑Bank的容量,这里是409620484 bit =32Mb。再乘以Bank的数量,则芯片的容量就可以算出来了,这里很显然是4个Bank,那么芯片的容量就是128Mb了。用虚线框起来的就是一个完整的逻辑Bank。可见一个Bank由内存阵列、传感放大器、一个行解码器、一个列解码器组成。接下来我们简单看看物理Bank,物理Bank的含义就是指内存和主板北桥芯片之间传递数据的通道,自586以后的CPU数据总线均为64bit位宽,而CPU一次只能对一个物理Bank进行访问,所以一般情况下我们就把64bit作为一个物理Bank(Physical Bank),在前面我们已经讲过了逻辑Bank,所以在这里我给大家讲一下如何自己算出物理Bank,大家就会非常好理解了。由于CPU一次只能打开一个物理Bank,在单芯片上也只能打开一个逻辑Bank,这样我们就知道逻辑Bank的位宽也就是单芯片的位宽了,我们把芯片的数据宽度和芯片的数量相乘再除以64就得到了内存条的物理Bank数了,即内存的Bank数=数据宽度芯片数量/64。现在大家初步明白了内存的物理Bank和内存的面数无关了吧?后面我还会举例说明。在大概了解了SDRAM和DDR内存的物理Bank及逻辑Bank之后。 下面我们来简单了解一下Rambus的Bank情况。Rambus的Bank为了讲解方便,下面以PC800 Rambus为例。Rambus不再采用SDRAM和DDR内存的并联技术,而是采用了更先进的串联技术。就现阶段而言,PC800 Rambus使用400MHz的16位总线,在一个时钟周期内可以在上升沿和下降沿同时传输数据,实际操作频率为400MHz2=800MHz,理论带宽为16bit2400MHz/8=1.6GB/s,再配合850主板芯片的双通道模式,可以达到3.2GB/s的数据带宽。这也是大家熟知的高带宽,而它最重要的优势在于其逻辑Bank上,就现阶段的主流 Rambus来说,其逻辑Bank数高达32个,拥有更多的Bank数则意味着具有较少的Bank冲突,寻址流更加短暂随意。另外还可以提高寻址命中率和降低潜伏周期。当然,更多的Bank也使Rambus的制作模具制造更复杂,也就增加了成本。于是RAMBUS随后又推出了4i 架构的DRDRAM在每个颗粒芯片上只有4个Bank。一内存芯片的逻辑BANK 在芯片的内部,内存的数据是以位(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(1Mx 8Bit x 2 BANK)。芯片组本身设计时在一个时钟周期内只允许对一个逻辑BANK进行操作(实际上芯片的位宽就是逻辑BANK的位宽),而不是芯片组对内存芯片内所有逻辑BANK同时操作。逻辑BANK的地址线是通用的,只要再有一个逻辑BANK编号加以区别就可以了(BANK0到BANK3)。但是这个芯片的位宽决定了一次能从它那里读出多少数据,并不是内存芯片里所有单元的数据一次全部能够读出 每个逻辑BANK有8M个单元格(CELL),一些厂商(比如现代/三星)就把每个逻辑BANK的单元格数称为数据深度(Data Depth),每个单元由8bit组成,那么一个逻辑BANK的总容量就是64Mbit(8M8bit),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) 16M48 Meg x 8 (2 Meg x 8 x 4 banks) 8M84 Meg x 16 (1 Meg x 16 x 4 banks) 4M16 表示方法是:每个逻辑BANK的单元格数以M计逻辑BANK数量每个单元格的位数(芯片的位宽)。芯片逻辑BANK位宽目前的工艺水平只能最多做到16位,因此大家看到几乎所有的芯片逻辑BANK位宽只可能4/8/16三者之一。以前16Mbit的芯片基本采用的单个芯片两个逻辑BANK,但是到了64Mbit基本就都是4个逻辑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。CPU一次只能对一个物理BANK进行访问和操作(因为一个物理BANK是64bit的位宽),那么内存条要保证一个周期内向数据总线提供或接收64bit的数据,而这些数据都是分别存储在内存条的芯片中。那么内存条中有多个内存芯片,这64位数据到底是有一个芯片提供还是由所有芯片每个提供一部分呢?我们还是以上面的那颗256Mbit的芯片为例,根据芯片组的工作原理,目前还没有那家芯片生产厂家做出位宽16位以上的芯片,所以现在的芯片组设计时都是要求内存条上每个芯片均承担提供数据的任务,也就是说内存条上的每个芯片都要要对这64位数据做贡献,而那颗内存芯片的位宽是8位,因此用这个芯片组成内存条只需要8颗芯片即完成了64位数据并发任务,算下来,内存条的容量就是32 MB (256Mbit)8=256MB的容量,假如是内存芯片的位宽是4位,那么需要的芯片数量必须是16颗,这时假如使用八颗位宽还是8位的64MB(512Mbit)芯片(单个芯片的总容量翻了一番)组装,尽管内存条上的总容量达到了256MB的要求,还是由于位宽不够是不能正常工作。要能工作就必须采用16位位宽的64MB(512Mbit)芯片。 586以上电脑的数据总线宽度都是64bit,即每次读取内存为64bit,SDRAM内存条的设计带宽也是64bit,内存条的带宽为条上各个内存芯片的带宽之和,基本条件为带宽之和应等于64bit或其倍数。假如出现了各个芯片位宽之和等于128。则分成两个64位,当读取一个64位部分时,另一个64位部分就不能读取,通常很多厂家就分别将这两部分放在内存的两面上。这就造成了许多人的错觉:双面是两个BANK的,单面是一个BANK的。实际根本不能这样认识,比如大度256MB内存,尽管两面16个芯片,但是由于内存芯片的位宽是4位(32Mbit4),所以必须要有416=64才能达到系统所要求的位宽。这时由于芯片大小的限制,不可能将16颗芯片都放在一面上,所以只能设计成双面。对于64Mbit芯片(4M*16)来说,芯片带宽16bit,8颗芯片带宽=168=128bit(即两个BANK),4颗芯片带宽=164=64bit(即一个BANK)。两个物理BANK的情况只有出现在位宽超出了64位的情况下(即位宽出现了富余),由于芯片组任一时刻只能处理一个64位,所以才分成两个物理BANK。今后随着新一代数据总线位宽的提高,也许CPU的胃口就不是一次只能64位数据了,可能是128位甚至更多。 另外我们常说的内存交错设置并不是指的物理BANK的交错。也就是说不是内存条双面的交错,而是指内存芯片内部逻辑BANK的交错,如果芯片有4个BANK,那么就可以进行4路交错,如果只有两个BANK就只能是二路交错。很多资料介绍的以内存条的单面或双面来决定交错是错误的,实际上就是混淆了物理BANK和逻辑BANK的区别。.逻辑Bank逻辑Bank的英文全称为Logical Bank,简称L-Bank。如果将物理Bank说成是内存颗粒阵列的话,那么逻辑Bank可以看做是数据存储阵列。不过与物理Bank不同,SDRAM与DDR内存的逻辑Bank并不完全一样,所以我将分开来简单介绍一下。简单地说,SDRAM的内部是一个存储阵列(图1),因为如果是管道式存储,就很难做到随机访问了。阵列就如同表格一样,将数据“填”进去。因此逻辑Bank我们可以看成是一张逻辑二维表,在此表中内存的数据是以位(bit)为单位写入一个大的矩阵中,每个单元我们称为CELL,只要指定一个行(Row),再指定一个列(Column),就可以准确地定位到某个CELL,里面每个单元都可以存储数据,而且每个单元的存储空间相同因为实际上与物理Bank每个单元具体存储数据量相同。这个具体的单元存储数据量即为逻辑Bank的位宽(实际上内存芯片的位宽就是逻辑Bank的位宽),一般有4bit、8bit和16bit等几种。如果你认为不好理解的话,那么你可以用硬盘操作中的簇与扇区的关系来理解内存中的存储形式扇区是硬盘中的最小存储单元相当于内存中的存储体而一个簇则包含多个扇区相当于逻辑Bank中的存储单元数据的交换都是以一个簇为单位进行。由于工艺上的原因,这个阵列不可能做得太大,所以一般内存芯片中都是将内存容量分成几个阵列来制造,也就是说内存芯片中存在多个逻辑Bank,随着芯片容量的不断增加,逻辑Bank数量也在不断增加。主板芯片组本身设计时在一个时钟周期内只允许对一个逻辑Bank进行操作,而不是主板芯片组对内存芯片内所有逻辑Bank同时操作。逻辑Bank的地址线是通用的,只要再有一个逻辑Bank编号加以区别就可以了(Bank0到Bank3)。但是这个芯片的位宽决定了一次能从它那里读出多少数据,并不是内存芯片里所有单元的数据能够一次全部读出。 对于DDR内存,逻辑Bank的作用、原理与在SDRAM中是一样的,区别主要是在逻辑Bank容量、规格之上。从上面大家已经知道,SDRAM中逻辑Bank存储单元的容量与芯片位宽相同,但DDR中并不是这样。DDR的逻辑存储单元的容量是芯片位宽的一倍:即“芯片位宽2=存储单元容量”,同时DDR中的真正行、列地址数量也与同规格SDRAM不一样了。这主要是由于DDR的工作原理所决定的。DDR这种内部存储单元容量的设计,就是常说的两位预取(2-bit Prefetch),也称为2-n Prefetch(n代表芯片位宽)。注:目前品牌内存大都在包装和说明书中标明逻辑Bank,对于兼容条,你可以根据内存颗粒上的编号标志进行计算。至于物理Bank,大家可以根据以上介绍的原理计算出来,在这里我就不多说了。另外我们常说的内存交错设置并不是指的物理Bank的交错,也就是说不是内存条双面的交错,而是指内存芯片内部逻辑Bank的交错。如果芯片有4个Bank,那么就可以进行4路交错,如果只有两个Bank就只能是2路交错。很多资料介绍的以内存条的单面或双面来决定交错是错误的,实际上就是混淆了物理Bank和逻辑Bank的区别。物理Bank传统内存系统为了保证CPU的正常工作,必须一次传输完CPU在一个传输周期内所需要的数据。而CPU在一个传输周期能接收的数据容量就是CPU数据总线的位宽,单位是bit(位)。内存与CPU之间的数据交换通过主板上的北桥芯片进行,内存总线的数据位宽等同于CPU数据总线的位宽,这个位宽就称之为物理Bank(Physical Bank,简称P-Bank)的位宽。以目前主流的DDR系统为例,CPU与内存之间的接口位宽是64bit,也就意味着CPU在一个周期内会向内存发送或从内存读取64bit的数据,那么这一个64bit的数据集合就是一个内存条Bank。目前绝大多数的芯片组都只能支持一条内存包含两个物理Bank。不过以前有不少朋友都认为,内存的物理Bank是由面数决定的:即单面内存条则包含一个物理Bank,双面内存则包含两个。其实这个看法是错误的!一条内存条的物理Bank是由所采用的内存颗粒的位宽决定的,各个芯片位宽之和为64bit就是单物理Bank;如果是128bit就是双物理Bank。读到这里,大家也应该知道,我们可以通过两种方式来增加这种类型内存的容量。第一种就是通过增加每一个独立模块的容量来增加Bank的容量,第二种方法就是增加Bank的数目。由于目前内存颗粒位宽的限制,一个系统只有一个物理Bank已经不能满足容量的需要。所以,目前新一代芯片组可以支持多个物理Bank,最少的也能支持4个物理Bank。对于像Intel i845D这种支持4个Bank的芯片组来说,我们在选购内存时就要考虑一下插槽数与内存Bank 的分配问题了。因为如果选购双Bank的内存,这意味着在Intel i845D芯片组上我们最多只能使用两条这样的内存,多了的话芯片组将无法识别。这里我建议大家最好根据自己的主板所提供的内存插槽数目来选购内存,如果主板只提供了两个内存插槽,那就不必为内存是单Bank还是双Bank而担心了。而如果主板提供了4个内存插槽(同一种规格),那么应该尽量购买单Bank或大容量双Bank的内存,以免给日后升级留下不必要的麻烦。注:SDRAM与DDR内存的物理Bank是一样的,不过在RDRAM内存规格中,物理Bank被通道(Channel)取代。 内存条的物理Bank内存控制器的位宽必须与内存条的位宽相等,这样才能在一个时钟周期内传输所有数据,这个位宽就被成为一个物理Bank(通常是64bit),每条内存至少包含一个Bank,多数情况下拥有二个物理Bank。一个物理Bank不会造成带宽浪费,理论上是最合理的配置,但为了实现大容量内存,单条内存多物理Bank也是允许的,但内存控制器所能允许的最大Bank数存在上限,常见的是双物理Bank设计,只有特殊内存或者服务器内存才会使用四Bank以上的设计,因为这种内存兼容性不好,“挑”芯片组。事实上显卡上也存在双物理Bank设计,目的就是为了实现超大显存容量,比如1GB的9800GT,正反两面共有16颗16M单颗容量16Mbit如何计算出来的(呵呵,看外观可以看出来)16Mbit=逻辑BANK数量X显存位宽X单元格数量32bit的GDDR3显存,总位宽达512bit,实际上显存控制器只支持256bit,这样就是双物理Bank。早在SDRAM时代,显卡上用的“显存颗粒”与内存条上的“内存颗粒”是完全相同的。在那个时候,GPU本身的运算能力有限,对数据带宽的要求自然也不高,所以高频的SDRAM颗粒就可以满足要求。 某TNT2显卡,使用的是PC166的SDR内存颗粒 内存满足不了显卡的需求,显存应运而生本是同根生的状况一直持续到SDR和DDR交接的时代,其实最早用在显卡上的DDR颗粒与用在内存上的DDR颗粒仍然是一样的。后来由于GPU特殊的需要,显存颗粒与内存颗粒开始分道扬镳,这其中包括了几方面的因素:1. GPU需要比CPU更高的带宽。GPU不像CPU那样有大容量二三级缓存,GPU与显存之间的数据交换远比CPU频繁,而且大多都是突发性的数据流,因此GPU比CPU更加渴望得到更高的显存带宽支持。位宽频率=带宽,因此提高带宽的方法就是增加位宽和提高频率,但GPU对于位宽和频率的需求还有其它的因素。2显卡需要高位宽的显存。显卡PCB空间是有限的,在有限的空间内如何合理的安排显存颗粒,无论高中低端显卡都面临这个问题。从布线、成本、性能等多种角度来看,显存都需要达到更高的位宽。最早的显存是单颗16bit的芯片,后来升级到32bit,将来甚至还会有更高的规格出现。而内存则没有那么多要求,多年来内存条都是64bit,所以单颗内存颗粒没必要设计成高位宽,只要提高容量就行了,所以(内存芯片颗粒的)位宽一直维持在4/8bit。3显卡能让显存达到更高的频率。显存颗粒与GPU配套使用时,一般都经过专门的设计和优化,而不像内存那样有太多顾忌。GPU的显存控制器比CPU或北桥内存控制器性能优异,而且显卡PCB可以随意的进行优化,因此显存一般都能达到更高的频率。而内存受到内存PCB、主板走线、北桥CPU得诸多因素的限制很难冲击高频率由此算来,显存与内存“分家”既是意料之外,又是情理之中的事情了。为了更好地满足显卡GPU的特殊要求,一些厂商(如三星等)推出了专门为图形系统设计的高速DDR显存,称为“Graphics Double Data Rate DRAM”,也就是我们现在常见的GDDR。GDDR显存和内存正式分家GDDR作为第一代专用的显存芯片,其实在技术方面与DDR没有任何区别,同样采用了2bit预取技术,理论频率GDDR并不比DDR高多少。不过后期改进工艺的GDDR有了优秀PCB的显卡支持之后,GDDR显存最高冲刺至900MHz,而DDR内存只能达到600MHz左右,显存和内存的差距从此逐渐拉开。 TSOP封装的GDDR 16bit:128M16Bit 4.0ns TSOP II封装的GDDR,单颗16MB,理论频率500MHz当年9550、FX5700等128Bit中端卡需要搭配8颗才能组成128BitTSOP封装的GDDR颗粒,外观规格特性都与DDR内存颗粒没有什么区别,所以在很多人看来“GDDR”与“DDR”是可以“划等号”的。其实两者还是有些差别: GDDR采用4K循环32ms的刷新周期,而DDR采用8K循环64ms的刷新周期; GDDR为了追求频率在延迟方面放的更宽一些,毕竟GPU对延迟不太敏感; GDDR颗粒的容量小、位宽大,一般是128Mbit16Bit(16MB)的规格,而DDR颗粒的容量大、位宽小,虽然也有16Bit的颗粒,但最常见的还是8Bit和4Bit,单颗容量32MB或64MB。 为了实现更大的位宽,并进一步提升GDDR的性能,后期很多厂商改用了电气性能更好的MBGA封装,当然也有内存颗粒使用MBGA封装,但规格已有了较大差异,主要是颗粒位宽不同。 MBGA封装的GDDR 32bit:128Mbit32Bit 2.2ns MBGA封装的GDDR,单颗16MB,理论频率900MHz8颗组成128MB 256Bit规格,是GDDR1最后的辉煌MBGA封装GDDR的单颗位宽首次达到了32Bit,从此就标志着GDDR与DDR正式分道扬镳,32Bit的规格被GDDR2/3/4/5一直沿用至今。GDDR显存的这两种封装:MBGA与TSOP构成的高低配,曾一度一统显卡市场。虽然GDDR已经退出历史舞台,但32Bit主攻中高端、16Bit主攻低端的局面,时至今日依然得到了延续。GDDR2第一版:短命的早产儿 高压高发热GDDR2源于DDR2技术,也就是采用了4Bit预取,相比DDR1代可以将频率翻倍。虽然技术原理相同,但GDDR2要比DDR2早了将近两年时间,首次支持DDR2内存的915P主板于2004年中发布,而首次搭载GDDR2显存的FX5800Ultra于2003年初发布,但早产儿往往是短命的。NVIDIA 在设计NV30芯片时依然保持128Bit显存位宽总位宽能达到多少由芯片决定,为了提高带宽必须使用高频显存,700MHz的GDDR已经无法满足需求了,于是冒险尝试GDDR2。第一代GDDR2受制造工艺限制,电压规格还是和DDR/GDDR一样的2.5V,虽然勉强将频率提升至1GHz左右,但功耗发热出奇的大。128Mbit32Bit 2.0ns MBGA 144Ball封装的GDDR2,单颗16MB,理论频率1000MHzGDDR2第一版只有2.2ns和2.0ns两种速度GDDR2第一版只在FX5800/Ultra和FX5600Ultra这三款显卡上出现过(也包括对应的专业卡及个别非公版显卡),ATI 也有极少数9800Pro使用了GDDR2。高电压、高发热、高功耗、高成本给人的印象非常差。随着FX5900改用GDDR及256Bit,GDDR2很快被人遗忘。FX5800Ultra需要为显存专门安装厚重的散热片GDDR2失败的主要原因是NVIDIA GeForce FX系列架构和性能的问题,之后即便改用了256Bit高频GDDR(此时GDDR的频率已被提升至850-900MHz,直逼GDDR2),FX5950Ultra依然不是9800XT的对手。当然GDDR2自身规格的不完善也造成了它无法入住中低端显卡,被时代所遗弃。GDDR2虽然坏毛病一大堆,但它也拥有一些新的特性,比如首次使用片内终结电阻,PCB设计比GDDR更加简洁,这个特性被后来的gDDR2和GDDR3继承。gDDR2第二版:统一低端显卡 永远的配角由于第一代GDDR2的失败,高端显卡的显存是直接从GDDR跳至GDDR3的,但GDDR2并未消亡,而是开始转型。几大DRAM大厂有针对性的对GDDR2的规格和特性做了更改(说白了就是DDR2的显存版),由此gDDR2第二版正式登上显卡舞台,时至今日依然活跃在低端显卡之上。gDDR2第二版相对于第一版的改进主要有: 工作电压从2.5V降至1.8V,功耗发热大降; 制造工艺有所进步,功耗发热进一步下降,成本降低,同时良率和容量有所提升; 颗粒位宽从32Bit降至16Bit,只适合低端显卡使用; 封装形式从144Ball MBGA改为84Ball FBGA,外观上来看从正方形变成长方形或者长条形; 各大厂商均有gDDR2颗粒由于电压的下降,第二代gDDR2的频率要比第一代GDDR2低,主要以2.5ns(800MHz)和2.2ns(900MHz)的规格为主,当然也有2.8ns(700MHz)的型号。直到后期制造工艺上去之后,第二代gDDR2才以1.8V电压突破了1000MHz,最高可达1200MHz,赶超了第一代高压GDDR2的记录。采用gDDR2显存的经典显卡有:7300GT、7600GS、X1600Pro、8500GT一大堆低端显卡。注意三星官方网站对于显存的分类相信很多朋友也注意到了,本页gDDR2的第一个字母为小写,几大DRAM厂商在其官方网站和PDF中就都是这么写的,以示区分。我们可以这么认为:大写G表示显卡专用,32bit定位高端的版本;而小写g表示为显卡优化,16bit定位低端的版本,本质上与内存颗粒并无区别。事实上,GDDR3和gDDR3之间也是这种关系,稍后我们会做详细介绍。GDDR源于DDR,GDDR2源于DDR2,而GDDR3在频率方面的表现又与DDR3比较相似,于是很多人认为GDDR3就是显存版的DDR3,这可是个天大的误区。 GDDR3:一代王者GDDR3源于DDR2技术无论GDDR还是GDDR2,由于在技术方面与DDR/DDR2并无太大差别,因此最终在频率方面GDDR并不比DDR高太多。在经历了GDDR2的失败之后,两大图形巨头NVIDIA 和ATI 对JEDEC组织慢如蜗牛般的标准制订流程感到越来越失望,认为他们制定的显存不能适应GPU快节奏的产品更新换代周期,于是NVIDIA 和ATI 的工作人员积极参与到了JEDEC组织当中,以加速显存标准的起草及制定。双方一致认为,显存与内存在数据存储的应用方面完全不同,在内存核心频率(电容刷新频率)无法提升的情况下,单纯提高I/O频率来获得高带宽很不现实。因此,必须要有一种针对高速点对点环境而重新定义的I/O接口。于是GDDR3诞生了,这是第一款真正完全为GPU设计的存储器。GDDR3和GDDR2/DDR2一样,都是4Bit预取架构,GDDR3主要针对GDDR2高功耗高发热的缺点进行改进,并提升传输效率来缓解高延迟的负面影响。 点对点DQS,读写无需等待GDDR2只有一条数据选择脉冲(DQS),是单一双向的,而GDDR3则拥有读与写两条独立的DQS,而且是点对点设计。这样做的好处在于,在读取之后如果马上进行写入时,不必再等DQS的方向转变,由此实现读写操作的快速切换。相比GDDR2/DDR2,GDDR3的读写切换动作可以少一个时钟周期,如果需要对某一个连续的区块同时读写数据时,GDDR3的速度就要比GDDR2快一倍。由于存储单元自身的特性,内存颗粒的逻辑Bank是无法同时读写数据的,并不存在“全双工”一说,但GDDR3的这项改进让顺序读写成为可能。GPU本身缓存很小,与显存之间的数据交换极其频繁,读写操作穿
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论