[转帖]泡泡网的内存知识

Posted jinanxiaolaohu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[转帖]泡泡网的内存知识相关的知识,希望对你有一定的参考价值。

 如果您是一位求知欲很强的电脑爱好者,那么本文非常适合您,笔者特意搜集了大量官方技术文档,为大家献上内存和显存鲜为人知的奥秘……

http://www.pcpop.com/article/309766_all.shtml

技术分享图片

 

技术分享图片

 

    近年来CPU(中央处理器)和GPU(图形处理器)的发展速度之快让人目不暇接,新产品的运算能力成倍提升,此时就对内存子系统提出了严峻的需求,因为CPU/GPU运算所需的数据和生成的数据都是来自于内存/显存,如果存储速度跟不上,那么就会浪费很多时间在数据等待上面,从而影响CPU/GPU的性能发挥。

    为了让内存/显存不至于造成瓶颈,芯片厂商都在想方设法的提高带宽:AMD和Intel相继将内存控制器整合在了CPU内部,大大降低了延迟并提高存储效率,Intel旗舰级CPU能够支持三通道内存,带宽提升50%;ATI和NVIDIA也先后使用了512Bit的显存控制器,总带宽倍增。

    是何原因导致业界三大巨头如此大费周折呢?这是因为内存技术的发展速度,其实并不如大家想象中的那么快,受到很多技术难题和传统因素的制约,本文就对内存和显存的发展历程及相关技术进行详细分析。

 


 

 

 

 

技术分享图片

    为让评测文章更具参考价值,同时也让广大网友能够看到自己最感兴趣的内容,泡泡网DIY评测室特意开设了“You Think.I do”板块,您可以将最感兴趣的内容、甚至任何想法发送到邮箱“[email protected]”,或加QQ群40891155共同探讨,我们会有针对性地挑选网友关注的热点进行评测,一旦您的建议被采纳,我们会为您送出精美礼物一份!

    往日经典文章回顾:

技术分享图片   技术分享图片

● 内存的存取原理及难以逾越的频障:

    在半导体科技极为发达的台湾省,内存和显存被统称为记忆体(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):双倍速率同步动态随机存储器

    双倍是指在一个时钟周期内传输两次数据,在时钟的上升期和下降期各传输一次数据(通过差分时钟技术实现),在存储阵列频率不变的情况下,数据传输率达到了SDR的两倍,此时就需要I/O从存储阵列中预取2bit数据,因此I/O的工作频率是存储阵列频率的两倍。

    DQ频率和I/O频率是相同的,因为DQ在时钟上升和下降研能传输两次数据,也是两倍于存储阵列的频率。

● DDR2(DDR 2 SDRAM):第二代双倍速率同步动态随机存储器

    DDR2在DDR1的基础上,数据预取位数从2bit扩充至4bit,此时上下行同时传输数据(双倍)已经满足不了4bit预取的要求,因此I/O控制器频率必须加倍。

    至此,在存储单元频率保持133-200MHz不变的情况下,DDR2的实际频率达到了266-400MHz,而(等效)数据传输率达到了533-800MHz。

● DDR3(DDR 3 SDRAM):第三代双倍速率同步动态随机存储器

    DDR3就更容易理解了,数据预取位数再次翻倍到8bit,同理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并没有太大难度。

● 多通道内存——双通道/三通道

    既然实现高位宽内存条太难,那么就退而求其次,让两条内存并行传输数据,同样可以让位宽翻倍。目前流行的双通道技术就是如此,北桥或者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(通常是64bit),每条内存至少包含一个Bank,多数情况下拥有二个物理Bank。

    一个物理Bank不会造成带宽浪费,理论上是最合理的配置,但为了实现大容量内存,单条内存多物理Bank也是允许的,但内存控制器所能允许的最大Bank数存在上限,常见的是双物理Bank设计,只有特殊内存或者服务器内存才会使用四Bank以上的设计,因为这种内存兼容性不好,“挑”芯片组。

    事实上显卡上也存在双物理Bank设计,目的就是为了实现超大显存容量,比如1GB的9800GT,正反两面共有16颗16M×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:

技术分享图片
8M×16Bit 4.0ns TSOP II封装的GDDR,单颗16MB,理论频率500MHz
当年9550、FX5700等128Bit中端卡需要搭配8颗才能组成128Bit

    TSOP封装的GDDR颗粒,外观规格特性都与DDR内存颗粒没有什么区别,所以在很多人看来“GDDR”与“DDR”是可以“划等号”的。其实两者还是有些差别:

  • GDDR采用4K循环32ms的刷新周期,而DDR采用8K循环64ms的刷新周期;
  • GDDR为了追求频率在延迟方面放的更宽一些,毕竟GPU对延迟不太敏感;
  • GDDR颗粒的容量小、位宽大,一般是8×16Bit(16MB)的规格,而DDR颗粒的容量大、位宽小,虽然也有16Bit的颗粒,但最常见的还是8Bit和4Bit,单颗容量32MB或64MB。

    为了实现更大的位宽,并进一步提升GDDR的性能,后期很多厂商改用了电气性能更好的MBGA封装,当然也有内存颗粒使用MBGA封装,但规格已有了较大差异,主要是颗粒位宽不同。

  • MBGA封装的GDDR 32bit:

 

技术分享图片
4M×32Bit 2.2ns MBGA封装的GDDR,单颗16MB,理论频率900MHz
8颗组成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左右,但功耗发热出奇的大。

技术分享图片
4M×32Bit 2.0ns MBGA 144Ball封装的GDDR2,单颗16MB,理论频率1000MHz
GDDR2第一版只有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本身缓存很小,与显存之间的数据交换极其频繁,读写操作穿插进行,因此GDDR3点对点设计的DQS可以让显存存储效率大增。但对于CPU来说,读写切换并不如GPU那么频繁,而且CPU拥有大容量的二三级缓存,所以GDDR3这种设计并不能极大的提升内存带宽,也没有引入到下一代DDR3当中。

  • 改进I/O接口,简化数据处理,控制功耗

 

 

 

技术分享图片

技术分享图片

    同时GDDR3也对I/O控制电路和终结电阻进行了修改,它不再沿用GDDR2的“推式(Push Pull)”接收器,而将其改为虚拟开极逻辑方式(Pseudo Open Drain Logic),并且通过将所有的三相数据信号转移到本位电路上,来简化数据处理,将DC电流压至最小,只有当逻辑LOW移至总线上时才会消费电力,从而很好的控制了功耗和发热。

    GDDR3的频率能达到现在这么高,其实并没有什么诀窍,凭借的就是不断改进的工艺制程,来暴力拉升频率。资历稍老点的玩家应该知道,GDDR3于2004年初次登台亮相时,6600GT的显存频率仅为1GHz,并不比GDDR2高,5年过去了,GDDR3从1GHz一路攀升至2GHz甚至2.5GHz,生命力得到了延续。

    明白了GDDR3的原理技术后,再来看看实物。GDDR3和GDDR1类似,也有两种封装形式:

● 144Ball MBGA封装,为了向下兼容GDDR和GDDR2

    最初的GDDR3采用了144Ball MBGA封装,这与GDDR和GDDR2第一版完全相同,外观也是正方形,三者的电气性能相似,支持GDDR3的GPU也可使用GDDR显存,PCB和电路只需做少量调整。

技术分享图片
三星2.0ns 8M×32Bit GDDR3颗粒

    144Ball封装的GDDR3只有8M×32Bit一种规格,所以8颗显存组成256MB 256Bit、或者4颗显存组成128MB 128Bit是当时的主流。5700Ultra就首次使用了GDDR3取代了GDDR2。

    144Ball封装的GDDR3主要有2.0ns(1000MHz)和1.6ns(1250MHz)两种速度,1.4ns良率不高产量很小,最高频率止步于1400MHz。曾被7800GTX/GT、6800GS、6600GT、X850/X800/X700等显卡大量采用。由于144Ball封装及PCB电路限制了其频率的提升,很快GDDR3就改用了电气性能更好的136Ball FBGA封装。

● 136Ball FBGA封装,频率容量节节攀升

    为了提高电气性能和环保水平,从2005年开始,GDDR3开始采用全新的136Ball FBGA封装,并统一使用无铅封装工艺。新封装使得显卡PCB必须重新设计,但也为GDDR3的腾飞铺平了道路。

技术分享图片
三星0.8ns GDDR3显存 16M×32Bit规格

    136Ball封装GDDR3的优势如下:

  • 规格不再局限于8M×32Bit一种,16M×32Bit成为主流,目前32M×32Bit已大量采用;
  • 伴随着制造工艺的进步,额定电压从2.0V进一步降至1.8V,但一些高频颗粒可适当加压;
  • 速度从1.4ns起跳,经过1.2ns、1.1ns、1.0ns一路发展至0.8ns、0.7ns,最快速度可突破2500MHz,但这是以牺牲延迟为代价的,好在GPU对延迟不太敏感;

    当GDDR3的频率首次达到2000MHz时,很多人都认为离极限不远了,于是未雨绸缪的抓紧制定GDDR4规范,但没想到在DRAM厂商的努力及新工艺的支持下,GDDR3的生命得到了延续,0.8ns 0.7ns的型号相继量产,而且容量更大的32M×32Bit颗粒也成为主流,基本上能够满足高中低端所有显卡的需要。

技术分享图片
当前速度最快0.77ns GDDR3显存颗粒,理论频率可达2600MHz

    当年2.2ns GDDR最高可达900MHz,核心频率和I/O频率止步于450MHz。经过5年时间的发展,GDDR3凭借新工艺终于在核心频率和I/O频率方面取得突破,核心频率可达600MHz以上,I/O频率超过1200MHz,此时过高的I/O频率成为了新的瓶颈。

    GDDR3采用了DDR2的4bit预取技术,所以采用DDR3 8bit预取技术的显存只能按顺序命名为GDDR4。GDDR4是在GDDR3的基础上发展而来的,它继承了GDDR3的两大技术特性,但内核改用DDR3的8bit预取技术,并加入了一些新的技术来提升频率。

● GDDR4的技术特性:

  • 使用DDR3的8bit预取技术,以较低的核心频率达到更高带宽,但延迟增加;
     
  • 采用数据总线转位技术(DBI,Data Bus Inversion,下文做详细介绍),提高数据精度,降低功耗;
  • 地址线只有GDDR3的一半,多余线用于电源和接地,有利于提升频率,但导致延迟增加;
  • 采用多重同步码(Multi-Preamble)技术,解决了GDDR3存在的爆发限制(Burst Limitation),从连续地址读取少量数据时的性能大幅提升;
  • 电压从1.8V降至1.5V;
  • 同频功耗下降75%,2400MHz的GDDR4功耗只有2000MHz GDDR3的一半;
  • 采用136Ball FBGA封装,单颗32Bit,向下兼容GDDR3;

技术分享图片
GDDR4的确更好超,但性能提升有限

    由于采用了8bit预取技术,因此在相同频率下GDDR4的核心频率(即电容刷新频率)只有GDDR3的一半,理论上来讲GDDR4最高频率可达GDDR3的两倍。但值得注意的是,虽然核心频率通过8bit预取技术减半,但GDDR4与GDDR3的I/O频率是完全相同的,因此GDDR4频率提升的瓶颈在于I/O频率而不是核心频率。

    由于制造工艺和技术水平的限制,虽然三星官方宣称早已生产出3GHz以上的GDDR4,但实际出货的GDDR4只有2GHz-2.5GHz,此后改进工艺的GDDR3也追平了这一频率。在相同频率下,GDDR4比起GDDR3虽然功耗发热低,但延迟大性能稍弱,再加上成本高产量小,GDDR4遭受冷落并不意外。

● 导致GDDR4失败的非技术方面原因

    GDDR3是NVIDIA和ATI参与JEDEC组织后共同制定的显存标准,而GDDR4在标准制定过程中双方产生了较大的分歧。NVIDIA较为保守,认为应该保持DDR2 4bit预取技术不变,继续改进I/O控制器来提升频率;而ATI则比较激进,准备直接使用DDR3 8bit预取技术。

    双方争执的结果就是在JEDEC组织中德高望重的ATI获胜(据称ATI有位高层在JEDEC身居要职),而NVIDIA则明确表示不支持GDDR4。因此GDDR4其实就是ATI一手策划的,但得不到NVIDIA支持的话,GDDR4立马就失去了6成以上的市场,由此导致DRAM厂不敢贸然投产。

    最终只有三星一家生产了少量的GDDR4显存,其他家都在观望。当然其他DRAM厂商都没闲着,它们把精力都投在了深挖GDDR3的潜力当中,于是我们看到了GDDR3的频率节节攀升,GDDR4在没有成本优势的情况下,也没有频率优势,恰好当时的几代A卡更没有性能优势,GDDR4自然只有死路一条。

    只有ATI生产过搭载GDDR4的显卡,数量虽然不多但横跨了三代产品:X1950XTX、HD2600XT和HD3870(也包括对应的专业卡)——与当年NVIDIA使用GDDR2的显卡数量相等。NVIDIA在遭遇滑铁卢后果断放弃了GDDR2,而ATI对于GDDR4则是难以割舍,三年时间三代产品都有使用,但一直都是非主流。

    GDDR4的失败并不是技术原因,和当年的GDDR2相比它要成熟很多,没推起来的原因主要是对手太强:ATI的对手NVIDIA很强大,另外GDDR4的对手GDDR3生命力太顽强了。

● GDDR5:恐怖的频率是如何达成的

    和GDDR4一样,GDDR5采用了DDR3的8bit预取技术,核心频率显然不是瓶颈,如何提升I/O频率才是当务之急。但GDDR5并没有让I/O频率翻倍,而是使用了两条并行的DQ总线,从而实现双倍的接口带宽。

技术分享图片
GDDR5各项总线工作频率示意图

    双DQ总线的结果就是,GDDR5的针脚数从GDDR3/4的136Ball大幅增至170Ball,相应的GPU显存控制器也需要重新设计。GDDR5显存拥有多达16个物理Bank,这些Bank被分为四组,双DQ总线交叉控制四组Bank,达到了实时读写操作,一举将数据传输率提升至4GHz以上!

技术分享图片

    以往GDDR1/2/3/4和DDR1/2/3的数据总线都是DDR技术(通过差分时钟在上升沿和下降沿各传输一次数据),官方标称的频率X2就是数据传输率,也就是通常我们所说的等效频率。而GDDR5则不同,它有两条数据总线,相当于Rambus的QDR技术,所以官方标称频率X4才是数据传输率。比如HD4870官方显存频率是900MHz,而大家习惯称之为3600MHz。

● 失败乃成功之母,冒险使用GDDR5助RV770挑战GTX200

    GDDR4的失败并没有阻挡ATI前进的脚步,在意识到GDDR4频率提升的瓶颈之后,GDDR5草案的制定就被提上日程,ATI和NVIDIA技术人员重新聚首,开展第二次合作共商大计。GDDR5吸取了前辈们的诸多优点,可谓是取其精华弃其糟粕,在I/O改进方面双方也不再有太多矛盾。

    技术方面的问题不难解决,最难的是时间和进度。ATI在R600上面冒险使用512Bit显存控制器来提升显存带宽,结果输得一败涂地,于是RV670只好回归256Bit,导致性能原地踏步。而GDDR4相比GDDR3没有频率优势,因此ATI迫切的需要GDDR5迅速投产以满足新一代GPU的需要,RV770只有256Bit,急需高频显存的支持。

    对手NVIDIA对于GDDR5当然很感兴趣,但却一点都不着急,保守的NVIDIA决定坚守GDDR3,GTX200核心使用了512Bit显存控制器来提升带宽。比起R600的环形总线,NVIDIA从256Bit到384Bit再到512Bit一步一个脚印走出来的交叉总线显然更加成熟。

    以256Bit对抗512Bit,ATI只能将筹码全部押在GDDR5身上,于是在GDDR5标准尚未完全确立之前,ATI已经在紧锣密鼓的测试性能,并督促DRAM厂投产。可以说GDDR5和GDDR2/4一样也是个早产儿,但失败乃成功之母,有了完善的技术规格和制造工艺的支持,GDDR5一出世便令人刮目相看。

    凭借GDDR5翻倍的数据传输率,HD4870以256Bit将448Bit的GTX260挑落马下,迫使NVIDIA通过降价、提升规格、改进工艺等诸多手段来反击。128Bit的HD4770性能也完胜256Bit的9600GT并直逼9800GT。

    GDDR5在GDDR3/4优秀特性的基础上,还有诸多改进和新特性,下面就对它们进行详细分析。

技术分享图片

 

  • 数据和地址总线转位技术:信号质量高、功率消耗少

    在1Byte数据中的8个值中,如果超过一半的数值是0,那么GDDR5就会自动执行转位传输,把0变成1、1变成0,通过1个附加的DBI(数据总线转位值)来判定数据流是正位还是反位。GDDR5的这项技术是从GDDR4继承发展而来的。

技术分享图片

    DRAM在传输数据时,只有0会消耗电能,减少0的传输数量,既能保证信号质量,也能减少内部终结电阻和外部终结电路的功率消耗。GDDR5的地址总线也使用了类似的技术,通过额外的ABI通道来转位数据流,从而较少信号噪声,并降低功耗。

  • 智能的可编程I/O控制接口:简化PCB设计和成本

    GDDR5对I/O控制器做了很多改进,加入了全新的自动校准引擎,保证GDDR5显存颗粒更好的适应GPU显存控制器的需求,确保数据传输稳定可靠。

技术分享图片

    自动校准引擎可以监控电压和温度变化,通过校验数据输出驱动器导通电阻与ODT终结电阻值来作出补偿,数据、地址、指令终结电阻都可以被软件或驱动控制。

技术分享图片
GDDR5的针脚更多,但布线更简洁

    此外GDDR5还能支持时间延迟和信号强度调整,灵活的协调数据同步,以往通过“蛇形走线”平衡延迟的方法彻底成为历史,GDDR5没有这种顾虑,因此能极大的简化PCB布线和成本,并有利于冲击更高频率。

  • 数据遮盖技术:减轻数据总线压力

    GDDR5的Burst Length(对相邻存储单元连续进行数据传输的周期数)是8bit,也就是说GDDR5颗粒一次至少要传输256bit数据,但很多时候并不是所有的数据都需要被改写,导致无效的数据传输。

    为此,GDDR5使用了一项数据遮盖技术,通过地址线传输保护信息,所有被保护的数据在传输过程中就不会被改写,只有暴露的数据才会被写入新的数据。如此以来,GDDR5的数据线压力减轻不少,功耗发热也得到进一步控制。

  • 误差补偿技术:提高传输效率,避免灾难性错误

    为了保证数据在高速传输过程中的有效性,GDDR5新增一项错误侦测与修正技术。GDDR5使用了成熟的CRC(循环冗余校验),通过DQ和DBI总线,实时检查错误,第一时间重新发送数据。

    这项技术对于高频率传输数据尤为重要,它能有效的减少数据传输错误导致系统崩溃的概率,大幅减少了由超频或高温导致的一系列问题,而且能够一定程度上提升数据传输效率。

  • 折叠模式:32bit颗粒当作16bit用

    GDDR5作为高端显卡专用的显卡,只有32bit的颗粒。由于GDDR5拥有两条并行的数据总线,这就使得GDDR5的工作模式变得更加灵活,它既可以工作在32bit模式下也可以工作在16bit模式下。这样一个32bit显存控制器就可以控制两颗GDDR5显存,显存容量可以轻松翻倍。

技术分享图片

    其实,GDDR3/4都可以通过这种方式扩充显存容量,但原理则完全不同。此前必须GPU的显存控制器在设计时支持双Bank模式才能支持更多的显存颗粒。而现在,8颗GDDR5显存总计256bit可以直接被128bit的GPU使用,从而简化了显存控制器设计,HD4770就是很好的例子。

    之前我们分析过,TSOP封装的GDDR1还有gDDR2显存,其实在技术上与DDR1/2内存没有本质区别,高位宽(16bit)的内存颗粒可以直接当作显存使用。随着DDR3颗粒大量投产,成本接近DDR2,于是在DDR3内存取代DDR2的同时,也将顺便取代老旧的gDDR2。

● gDDR3:把内存颗粒改装成显存用

    以目前的情况来看,DDR3比gDDR2频率高很多,但成本比GDDR3要低,所以gDDR2被取代是板上钉钉的事。AMD率先将DDR3使用在了显卡上,随后得到了业界的一致认可。

技术分享图片

    为了和DDR3内存颗粒区分,DRAM厂将其称为Graphics DDR3 SDRAM,简写为gDDR3,和DDR3内存颗粒一样都是8bit预取技术,单颗16bit,定位中低端显卡;而传统的GDDR3则是Graphics GDDR3 SDRAM的简写,它和DDR2内存一样采用了4bit预取技术,单颗32bit,定位中高端显卡。

技术分享图片

    可以看出,在高端GDDR5将会取代GDDR3,而低端gDDR3将会取代gDDR2,中端则会出现三代共存的局面。虽然gDDR3单颗位宽只有GDDR3的一半,但存储密度却是GDDR3的两倍,而且在相同频率下(比如2000MHz),gDDR3的核心频率是GDDR3的一半,因此功耗发热要低很多。对于位宽不高的中低端显卡来说,gDDR3大容量、低成本、低功耗发热的特性简直相当完美!

技术分享图片

    上图就是现代官方网站列出的gDDR3和GDDR3两种显存的规格参数表,注意它们的全称,是否有"G",真的是差之毫厘谬以千里。

    gDDR3源于DDR3,技术特性上没有区别,主要在封装上面。gDDR3作为对显卡优化的版本,单颗16bit FBGA 96Ball封装;而DDR3多为单颗4/8bit,封装是78/82Ball。也有少数DDR3使用了16bit FBGA 96Ball封装,由于位宽太大仅用于特殊场合。

    在前文的内存部分,关于内存颗粒的位宽、通道、Bank等做了一些介绍,这些技术参数对于显存同样适用,但显存也有自己的一套规格定义,下面就逐一介绍:

● 规格:16M×32Bit是什么意思?

    当您浏览网站或者查看显卡规格时,往往都会看到类似“某某显卡使用了4颗16M×32Bit的GDDR3显存”这样的文字,这其中16M×32Bit就是该显存颗粒的主要规格,是国际统一的命名标准,可以到存储厂商官方网站上查到。

    16M×32Bit中,16M表示显存存储单元的容量为16Mbit,32Bit是单颗显存的数据位宽,这种标称不容易理解,需要经过换算才能得到符合我们使用习惯的规格。

● 容量:单颗显存容量=存储单元容量×数据位宽/8

    以最常见的16M×32bit GDDR3显存为例,16×32/8=64MB,一颗显存就是64MB的容量,那么这块显卡用了4颗显存就组成了256MB。

    很多人可能会纳闷上面的公式中为何要除以8,因为官方规格中的16M的单位是Megabit(兆位)而不是MegaByte(兆字节),它两之间的换算需要除以8。

● 速度:显存理论频率=1000/时钟周期×2

    大家常说某某显卡采用了1.4ns颗粒,另一个显卡用了更快的1.2ns颗粒,超频更猛等等……这个1.2ns就是显存的时钟周期,同样的我们需要换算成更容易理解的数字。

    套用以上公式,我们来算算主流规格显存的理论频率是多少:

    2.0ns颗粒=1000/2.0×2=1000MHz=1.00GHz
    1.6ns颗粒=1000/1.6×2=1250MHz=1.25GHz
    1.4ns颗粒=1000/1.4×2=1429MHz≈1.40GHz
    1.2ns颗粒=1000/1.2×2=1667MHz≈1.65GHz
    1.1ns颗粒=1000/1.1×2=1818MHz≈1.80GHz
    1.0ns颗粒=1000/1.0×2=2000MHz=2.00GHz
    0.8ns颗粒=1000/0.8×2=2500MHz=2.50GHz

    为什么要乘以2,因为DDR系列存储颗粒属于双倍传输,在工作频率和数据位宽相同的情况下,显存带宽是SDRAM的2倍,因此大家习惯于在基础频率上乘2,超高的频率确实比较好看。

● 位宽:显存位宽=单颗显存数据位宽×显存数量

    这个不难理解,比如显卡使用了4颗16M×32bit GDDR3显存,那么位宽就是32bit×4=128bit。需要注意的是,并非所有情况下这个公式都成立,除了显存数量之外,GPU显存控制器的位宽决定了显卡位宽上限。

    低端显卡核心拥有128Bit显存控制器,因此4颗GDDR3显存就能满足位宽需求,即便PCB上集成了8颗显存,显卡位宽依然是128bit。如果是中端显卡的话,8颗显存正好是256Bit,与核心相吻合。

● 带宽:显存带宽=显存位宽×显存工作频率/8

    单纯看显存位宽意义并不大,最终影响显卡性能的其实是带宽。我们可以把带宽比作是马路的车行流量,显然马路越宽(显存位宽),车速越高(显存频率),最终的带宽就越高。

    以GTX260为例,显存频率2GHz,位宽448bit,计算所得带宽就是112GB/s。除以8的原因还是因为bit和Byte之间的换算。

    带宽是显存速度的最终衡量,有些显卡的显存频率高,但是位宽低,最典型的就是使用GDDR5显存的HD4870,位宽256bit但频率高达3600MHz,最终计算得带宽就是115GB/s,和GTX260相当。

● SDR+DDR1/2/3和GDDR1/2/3/4/5全系列规格参数汇总:

技术分享图片

技术分享图片

● 显存引领DRAM发展,未来内存将以显存为蓝本开发

 

    纵观近年来内存与显存的发展,就会发现显存的发展速度已经远远超越了内存,显存带宽几乎达到了内存带宽的10倍之多,而且这个差距还在不断的加大。目前三通道DDR3已经足够桌面CPU用好一阵子了,而GPU对显存带宽的渴求似乎是个永远都填不满的无底洞。

技术分享图片

    正因为如此,显存逐渐脱离了内存的发展轨迹,在经过几次并不成功的尝试之后,从内存的配角/附属品,开始走向了反客为主的道路。GDDR2提前DDR2近两年、GDDR4提前DDR3一年多,虽然都以失败而告终,但却为GDDR5的成功打下了坚实的基础。

    在内存领域,如今DDR3才刚刚站稳脚跟,至少将统治PC两至三年,但DDR4的标准已经在积极制定当中,而其技术规格将会以GDDR5为蓝本——也就是说保持DDR3 8bit预取技术不变,改进I/O控制器,个中原因相信认真阅读了本文的朋友们应该知道吧。■





















以上是关于[转帖]泡泡网的内存知识的主要内容,如果未能解决你的问题,请参考以下文章

[转帖]程序员需要了解的硬核知识之内存

[转帖]精美图文带你掌握 JVM 内存布局

[转帖] 内存扫盲

[转帖]JVM 知识体系框架总结

[转帖]redis知识点总结

[转帖]程序员需要了解的硬核知识之磁盘