分享

显卡显存的前世今生终极剖析——高手进阶必知

 漫步之心情 2020-02-03

目前CPU用的内存正在从DDR3向DDR4过渡,而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%; 和 也先后使用了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):双倍速率同步动态随机存储器

双倍是指在一个时钟周期内传输两次数据,在时钟的上升期和下降期各传输一次数据(通过差分时钟技术实现),在存储阵列频率不变的情况下,数据传输率达到了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(电脑系统与内存之间数据总线的基本工作单位)都有一种误解,认为单面内存就是单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的容量,这里是4096×2048×4 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位总线,在一个时钟周期内可以在上升沿和下降沿同时传输数据,实际操作频率为400MHz×2=800MHz,理论带宽为16bit×2×400MHz/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(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设计了

二.内存条的物理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位(32Mbit×4),所以必须要有4×16=64才能达到系统所要求的位宽。这时由于芯片大小的限制,不可能将16颗芯片都放在一面上,所以只能设计成双面。对于64Mbit芯片(4M*16)来说,芯片带宽16bit,8颗芯片带宽=16*8=128bit(即两个BANK),4颗芯片带宽=16*4=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×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:

显卡显存的前世今生终极剖析——高手进阶必知

128M×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颗粒的容量小、位宽大,一般是128Mbit×16Bit(16MB)的规格,而DDR颗粒的容量大、位宽小,虽然也有16Bit的颗粒,但最常见的还是8Bit和4Bit,单颗容量32MB或64MB。

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

· MBGA封装的GDDR 32bit:

显卡显存的前世今生终极剖析——高手进阶必知

128Mbit×32Bit 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年初发布,但早产儿往往是短命的。

在设计NV30芯片时依然保持128Bit显存位宽,为了提高带宽必须使用高频显存,700MHz的GDDR已经无法满足需求了,于是冒险尝试GDDR2。第一代GDDR2受制造工艺限制,电压规格还是和DDR/GDDR一样的2.5V,虽然勉强将频率提升至1GHz左右,但功耗发热出奇的大。

显卡显存的前世今生终极剖析——高手进阶必知

128Mbit×32Bit 2.0ns MBGA 144Ball封装的GDDR2,单颗16MB,理论频率1000MHzGDDR2第一版只有2.2ns和2.0ns两种速度

GDDR2第一版只在FX5800/Ultra和FX5600Ultra这三款显卡上出现过(也包括对应的专业卡及个别非公版显卡), 也有极少数9800Pro使用了GDDR2。高电压、高发热、高功耗、高成本给人的印象非常差。随着FX5900改用GDDR及256Bit,GDDR2很快被人遗忘。

显卡显存的前世今生终极剖析——高手进阶必知

FX5800Ultra需要为显存专门安装厚重的散热片

GDDR2失败的主要原因是 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的失败之后,两大图形巨头 和 对JEDEC组织慢如蜗牛般的标准制订流程感到越来越失望,认为他们制定的显存不能适应GPU快节奏的产品更新换代周期,于是 和 的工作人员积极参与到了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 256M×32Bit GDDR3颗粒

144Ball封装的GDDR3只有256M×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显存 512M×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 Limit on),从连续地址读取少量数据时的性能大幅提升;

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

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

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

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

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

即便使用了8bit预取技术,可GDDR4还是没有与GDDR3拉开频率差距,因为瓶颈在I/O控制器上面而不是内核,而GDDR5就是用来解决这一瓶颈的。

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

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

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

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

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

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控制器,个中原因相信认真阅读了本文的朋友们应该知道吧。

【3C168 中关村湖南】显卡界近期新技术不断,除了40nm普及、AMD的DirectX 11 Radeon HD 5000系列发布外,还有一个与显卡性能息息相关的技术迅速普及,那就是GDDR5显存颗粒。从第一款采用GDDR5显存的Radeon HD 4770开始,GDDR5显存就成为了AMD高端显卡的标配,如今,AMD中端Radeon HD 5700/4700系列也开始采用GDDR5显存,NVIDIA方面最新的GeForce GT 240也搭上了GDDR5显存的快车!由此可见,GDDR5显存时代将迅速来临,用来取代服役已久的GDDR3显存颗粒。 华硕作为全球为数不多同时兼AIC/AIB为一身的公司,对GDDR5显存的支持自然不遗余力,走在业界的前列,如今GDDR5大军全面来袭!包括:华硕EAH5870/2DIS/1GD5、华硕EAH5850/2DIS/1GD5、华硕EAH5770/2DIS/1GD5、华硕EAH5750/2DIS/1GD5、华硕EAH4750 F1/DI/512MD5、华硕ENGT240/DI/512MD5等多款产品。那么GDDR5显存颗粒到底有什么优势,能够取代称霸显存颗粒多年的GDDR3显存颗粒,下面我们将会大家揭开谜团?

显卡显存的前世今生终极剖析——高手进阶必知

上面这张图清楚的反应了带宽与显存频率位宽之间的关系!假设有一批货物(数据)要从仓库(显存)运到工厂(GPU)处理,怎么样才能更快的完成这件工作?我们有两种方式:第一,在只有驴车运输的情况下,可行的方法拓宽工厂与仓库之间的车道数,这样一次可以跑更多的驴车,也就是增加显存位宽,第二种就是在道路不变下,把驴车换成汽车,这样同样可以更快的完成任务。

其实近几年来,显卡的发展一直都是两种方式同步进行,显卡从几年前的64Bit已经发展到了512Bit,显存速度也从原来的500MHz发展到GDDR3显存最高的2600MHz(GDDR5出现以前),但是增加显存位宽这条路径已经出现了瓶颈,512Bit已经是目前GPU位宽设计的极限,且不论失败的Radeon HD 2900 XT,即使是看起来风光无限的GT200系列,由于显存控制器占据了大量的晶体管,芯片设计太过复杂,导致GT200系列无论功耗还是发热量都不尽人意, 因此NVIDIA已经决定在GT300中采用384Bit位宽,而AMD早就在Radeon HD 3870就已经恢复到了256Bit位宽,可见想增加带宽,采用拓宽道路数已经不太现实,那么就只有将驴车换成法拉利跑车了!

将驴车换成法拉利跑车需要几步?答:三步!

最早的驴车可以视为GDDR显存,最早的频率为400MHz,到后期随着工艺的发展到了900MHz,之后出现了GDDR2显存颗粒,这应该算是第一步,尽管最初的GDDR2显存由于工艺和电压问题,并不成功。

第二步是GDDR3显存颗粒,这也是近几年显卡采用最普遍的显存颗粒,在这期间GDDR2显存颗粒才由于制程提升且电压由2.5V降低到1.8V才开始普遍采用在低端显卡上,GDDR3显存最初只有1000MHz,到现在发展到了最快的0.77ns的2600MHz,此时可以视为将驴车换成了宝马,速度提升了非常明显,但是这看要和谁比!因为和GDDR5相比,GDDR3能够达到最高频率还不及GDDR5的起跳频率。

第三步就是GDDR5显存颗粒,当然也许有的玩家会说第三步不是GDDR4显存颗粒吗?这是要说的是,GDDR4确实也是非常优秀的产品,不过其致命点是虽然频率够高,最高可达3000MHz,但是延迟也同样过高,同频率下性能无法抗衡GDDR3显存颗粒,目前GDDR4显存颗粒大部分徘徊在2400MHz左右,实际上性能与2000MHz的GDDR3显存性能相差无几,尽管功耗等方面仍有优势,但是没有得到NVIDIA的支持,且生产成本与GDDR3相比过高,于是并没有大面积普及。而GDDR5显存颗粒就不同了,他不但得到了AMD与NVIDIA的全力支持,且最低起跳频率为3600MHz,目前最高默认频率达到了4800MHz,通过超频甚至已经达到6000MHz的超高频率。

那么GDDR5是如何实现法拉利的速度的?

在这个话题之前我们要先明白显存的的三个频率:核心频率、I/O频率、等效频率。核心频率是内部电容的刷新频率,它是内存的真实运行频率;时钟频率即I/O(输入/输出缓冲)的传输频率;而有效数据传输频率就是指数据传送的频率(即等效频率)。其中显存的核心频率现在很少被人提起,大家提到最多的是I/O传输频率(也就是官方标称的频率)及等效频率,等效频率就是我们谈论显卡时所说的频率,举个例子,比如我们说Radeon HD 5870的频率是4800MHz,官方则称其为1200MHz,其中4800MHz就是等效频率,1200MHz为I/O频率,而实际显存的核心频率仅为150MHz。那么这150MHz是如何得来的呢?

其实这个问题并不复杂,首先我们要了解一个名字——数据预取技术,顾名思义就是预先/提前存取数据,GDDR/GDDR2/GDDR3/GDDR4/GDDR5分别采用了2Bit/4Bit/4Bit/8bit/8it数据预取技术,也就是说I/O控制器在发出请求之前,它们会分别准备好2Bit/4Bit/4Bit/8bit/8it数据。

显卡显存的前世今生终极剖析——高手进阶必知

那么我们可以得出一个结论,那就是如果核心频率同为200MHz的话,那么GDDR/GDDR2/GDDR3/GDDR4/GDDR5的I/O频率分别是400Mz/800MHz/800MHz/1600MHz/1600MHz,等效频率是800MHz/1600MHz/1600MHz/3200MHz/3200MHz,其中I/O频率五种显存都是正确的,而等效频率只有GDDR/GDDR2/GDDR3/GDDR4是正确的,因为GDDR5的等效频率并不是3200MHz,而是6400MHz。这又是为什么呢?

显卡显存的前世今生终极剖析——高手进阶必知

因为GDDR/GDDR2/GDDR3/GDDR4的数据总线都是DDR技术(通过差分时钟在上升沿和下降沿各传输一次数据),I/O频率X2就是等效频率,而GDDR5两条并行的DQ总线,从而实现双倍的接口带宽,相当于Rambus的QDR技术,所以I/O频率X4才是等效频率,说到这里相信大家都可以理解为什么GDDR5显存可以拥有那么高的速度了吧!

上面的表是否正确?正确!?显存的计算不同于内存的计算?

使用内存计算方法的结论 ????

同时我们也注意到,上文我们提到GDDR5中达到4800MHz频率也只需要150MHz的核心频率,所以GDDR5显存的电压可以更低,仅有1.5V,比GDDR3可节省17%的电量,更低的电压意味着更低的功耗和发热量,对于显卡工作的稳定至关重要。

有了GDDR5显存颗粒的帮助,上述华硕显卡自然会在性能上更具优势,根据显存带宽=显存位宽×显存工作频率/8的公式,即使是只有128Bit的华硕EAH5770/2DIS/1GD5,通过4800MHz的频率也可以达到4800MHz×128bit/8=76.8GB/s,而采用256Bit的GeForce GTS 250的带宽也仅为2200MHz×256Bit/8=70.4GB/s。又例如同一芯片GeForce GT 240如果分别采用GDDR3和GDDR5显存颗粒,他们性能会相差10%以上,足见GDDR5在性能上可提供更大的发挥空间!

GDDR5等效频率=物理频率×8(GDDR5为8bit预读取)×4(双总线上下延传输)因为,标称频率=物理频率×8(GDDR5为8bit预读取)所以GDDR5等效频率也等于 标称频率×4。

一起来认识GDDR5显存

频率是存储器最为显著的特征。目前GDDR3的数据传输频率最高可以达到2600MHz,相比之下,目前GDDR5可以达到5000MHz。不过这依旧不是终点,GDDR5最高数据传输频率将达到6000MHz。和之前几代GDDR显存一样,GDDR5也是建立在多倍数据预取技术上的产品。根据显存发展的历史来看,GDDR1显存采用2bit数据预取技术,GDDR2、GDDR3和GDDR4都采用了4bit数据预取技术,GDDR5正是新一代8bit数据取技术的产物,达到了令人惊异的高性能。

优秀的双总线设计—高速传输无忧

相比GDDR3采用的4bit预取数据而言,GDDR5的优势在于将预取数据增加到了8bit,因此GDDR5就能够在同样的物理时钟频率下达到更高的数据传输速度。不仅如此,GDDR5显存采用了双数据总线,能够同时在数据总线的上升和下降阶段传输数据。同时,每条总线都独立配备了完整的DBI,可以独立传输、校验数据,是完整的双总线规格。以往单数据总线的GDDR2、GDDR3等显存标称频率是等效工作频率的1/2(比如标称频率为900MHz的GDDR3显存,等效工作频率为1800MHz),而GDDR5显存由于双总线技术的存在,每条总线都可以在上升和下降阶段传输数据,因此标称频率是等效工作频率的1/4。以4000MHz等效工作频率的GDDR5显存为例,它的标称频率为1000MHz。由于采用了8bit的预取技术,因此它的实际物理运行频率为125MHz。

GDDR显存几种频率的差别

物理运行频率:是指GDDR显存实际运行的物理频率,这个频率可以在主板上用仪器实际测得。在通常的使用中,物理运行频率是极少被提及的。

标称频率:由于采用了多倍预取技术,因此GDDR显存的标称频率远远高于物理运行频率。以GDDR3为例,它采用4bit预取,因此物理运行频率为250MHz的GDDR3显存,标称频率就为1000MHz。在GPU-Z、Rivatuner等软件的截图中,看到的显存频率就是标称频率。

等效工作频率:等效工作频率是GDDR显存衡量实际传输数据能力的频率。一般GDDR2、GDDR3、GDDR4等单总线显存的等效工作频率是标称频率的2倍。而GDDR5采用了双总线技术,因此等效工作频率是标称频率的4倍。我们经常看到厂商和大部分媒体宣传的显存频率实际就是等效工作频率,这也是大家使用最广泛、认知度最高的GDDR显存频率。另外,等效工作频率可以直接和显存位宽相乘进行计算。比如等效工作频率为2000MHz的GDDR3显存,如果显存的位宽为128bit,那么总显存带宽就是2000MHz×128bit÷8=32GB/s。

稳定+节能,其实很简单—Data eye optimization数据核心优化

对于数据的优化是存储器最为重要的方面,GDDR5重点采用了四项技术来保证数据的稳定性和安全性。Data/address bit inversion,即数据/地址位反演是指在传输过程中,数据或者地址位内的信息被按照一定的规则做了反演处理。数据/地址位反演技术的作用在于有效地改善了噪音对数据信号的影响,保证了数据在传输和存储过程中的稳定性。不难看出,数据/地址位反演技术是GDDR5在传输中最重要的处理技术,也是降低功耗和提高数据稳定性的首要法宝。

除了数据/地址位反演技术外,三项动态调节技术:adjustable driver strengths、adjustable voltages和adjustable terminations也是GDDR5数据核心优化的重要组成部分。它们分别针对驱动器、电压和终止装置进行自动调节。在传统的显存数据传输过程中,由于显存并行传输的特性,对线长和外界干扰有着严格的规定。因此我们常常在显存周围看到大量的密密麻麻的终结电阻(减少反射损耗)等元件,显卡不得不在显存周围采用蛇形走线来尽可能做到信号线等长。但在GDDR5上这些严格的要求被弱化了,GDDR5自带的调节系统可以在一定范围内保证数据信号在高速运行时不出错,甚至信号线都可以不用严格等长。除了更宽松的信号传输空间外,GDDR5对电压和温度的动态调节和实时监控,也使得整个信号在传输过程中的安全性更高。另外,工程人员可以在BIOS中写入设定好的调整信息,避免在PCB已经正式出样(layout)之后由于信号稳定性问题导致返工。

如何识别GDDR5显存

目前已经上市的GDDR5显存拥有两种速度规格和两种容量规格,可选择余地并不多。以市场常见的奇梦达GDDR5显存为例,分为-40X和-50X两种,分别对应4.0Gbps和5.0Gbps的传输速率,即理论上它们的等效工作频率为4000MHz和5000MHz。尚未上市的现代和三星GDDR5显存分类则更细,拥有3500MHz、4000MHz、4500MHz和5000MHz等多种频率规格。

显卡显存的前世今生终极剖析——高手进阶必知

编号为奇梦达IDGV51-05A1F1C-40X的GDDR5显存

显卡显存的前世今生终极剖析——高手进阶必知

奇梦达GDDR5显存规格列表

安全+自由,放心传数据—Adaptive interface timing时钟自适应技术

信号线和时钟稳定性是高速显存设计中最重要的部分。GDDR5显存拥有多达5条需要校准的时钟信号,分别是Clock、Command Clock、ADDR、Write Clock、DATA Clock时钟信号。在高速运行的情况下(诸如高达2GHz),任何一点微小的差距都会带来整个系统的数据错误、崩溃。因此,GDDR5在时序自动校准、自适应技术上已经有了一套非常完整的方案,能够带来非常高的数据运行效率。

首先,GDDR5会要求地址时钟和总线时钟(ADDR和CK#)进行对照并对齐。实际上这是在进行一次芯片的初始化,在此阶段控制器可以找到最佳的相位设置。接下来就需要校准Write Clock(WCK)和基准Clock(CK#)之间的数据,这个过程被称为'WCK-to-CK'。在这个过程中,控制器可以找出WCK和CK#之间相位的差距,是'早'还是'迟',然后为每一个DRAM给出相应的调节数据。最后,控制器会调整数据总线(DATA和WCK)。由于数据总线DATA的频率是WCK写入时钟的2倍,因此每次校准会涉及到两个字节。

GDDR5的这种校准方法,使得整个数据线环环相扣,降低了由于时钟不同步带来的数据错误或系统延迟,也在很大程度上降低了PCB设计的难度。由于有内部校准机制的存在,工程师们在PCB布线的一致性方面就有了更宽松的空间,这让整个PCB的布线更为自由和宽松。

另外,更为自由的数据预取技术也让GDDR5在图形应用中充满了优势。在图形计算中存在大量密集而微小的数据,这些数据甚至会小于GDDR5每次预取的最低数据。如果采用固定的预取值的设计方法,即每次无论数据大小(甚至使用空位)都一定要完全占据传输总线,无疑会耗费很多能量。因此,GDDR5允许小于预取数量的数据传输,即采用低预取方式。这种灵活的设计,让GDDR5在传输大量小数据量运作时,功耗有明显的降低。

GDDR5的折叠模式

大多数的单颗GDDR显存位宽均为32bit,GPU如果是128bit的显存位宽,就需要4颗显存就可以使位宽相互匹配。但如果显卡要使用8颗显存形成更大容量的话,就需要相应的GPU显存控制器支持双BANK读写才可完成,灵活度不够高。而GDDR5显存内置双数据总线,32bit的显存可以轻松拆分为16bit颗粒使用,不需要GPU的额外支持也可以使显存容量翻倍。这种设计简化了GPU的显存控制器,增加了用户选择的自由度。

纠错+校验,完美保传输—Error compensation误差补偿技术

由于电磁环境或者传输中温度、电压等复杂因素的影响,显存在数据传输和存储过程中可能会产生少量的错误——一个简单的显存数据错误除了导致渲染失败以外,还可能导致显卡彻底失去响应、蓝屏和系统崩溃等严重问题。因此对错误数据的校验和补偿,成为GDDR5瞄准的又一个重要目标。

GDDR5的数据校验采用了CRC(Cycle Redundancy Check循环冗余校验)方式。CRC校验是建立在GDDR5的DATA I/O和DBI的基础上,如 果出现错误,则触发数据传输总线,然后快速重新读取数据,或者利用如Data Mask(数据掩蔽)等功能修改数据并重新传输。这种校验方式的优势在于能够100%检测出所有单、双数据误差。

Data Mask(数据掩蔽)是这样一项技术:GDDR5显存在每次读写数据时,并不是改写所有的数据,大部分数据都不需要修改。因此GDDR5利用地址总线对一部分数据进行掩蔽,在下一次数据读写到来时,仅仅对没有掩蔽的数据进行更改。这样就能在最快的时间内完成数据读写。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多