新浪科技

沧海桑田话存贮 内存/显存发展编年史

泡泡网

关注

发布日期:2011年06月17日 作者:蒋尚文 编辑:蒋尚文


第1页:序言:合久必分:内存条的诞生

    泡泡网显卡频道6月17日 过去的十年是信息爆炸的时代,也许在座的各位还不能真正意识到信息爆炸的程度,曾经有人开玩笑说现在现在一份早报上记录的信息量相当于50年前一位法国农民终生需要的信息。这个说法虽然无法科学考证,但却从侧面反应了一个亘古未见的事实:电脑和互联网的快速发展让信息资讯空前爆发,回顾历史长河,我们可以为见证这个巨变而自豪。

    前面两期文章我们分别介绍了显卡的输出接口演变和核心架构进化,揭露了看似平静的产业背后的勾心斗角,而这一期我们则穿越时空回到20年前,见证这段存贮技术发展的传奇……

● 混沌未开:内存的前世

与现在一个指甲盖大小的芯片就能装下整个图书馆的信息不同,在计算机诞生初期存贮信息可是不折不扣的“体力活”,当时还不存在内存条的概念,最早的“内存”是以磁芯的形式排列在线路上,每个磁芯与晶体管组成的一个双稳态电路作为一比特(BIT)的存储器,每一比特都要有玉米粒大小,这意味着一间的机房只能容纳区区数百k字节的容量。

    大规模集成电路的出现让这种情况得到终结,随着制造工艺的科技化,出现了焊接在主板上集成内存芯片,以内存芯片的形式为计算机的运算提供直接支持。“内存”才有像现代的内存的影子了,但那时的内存芯片容量依然非常寒碜,最常见的莫过于256K×1bit、1M×4bit,虽然如此,这已然是划时代的进步了,相对于那时的运算任务来说也足堪重任了。

● 合久必分:内存条的诞生

   这种“内存芯片”一直沿用到286初期,鉴于它存在着无法拆卸更换的弊病,这对于计算机的发展造成了现实的阻碍。将内存芯片焊接到事先设计好的印刷线路板上,而电脑主板上也改用内存插槽,这样就把内存难以安装和更换的问题彻底解决了。这就是我们现在常见的“内存条”。

   在80286主板刚推出的时候,内存条采用了SIMM(Single In-lineMemory Modules,单边接触内存模组)接口,容量为30pin、256kb,必须是由8 片数据位和1 片校验位组成1 个bank,正因如此,我们见到的30pin SIMM一般是四条一起使用。自1982年PC进入民用市场一直到现在,搭配80286处理器的30pin SIMM 内存是内存领域的开山鼻祖。

 

30pin和72pin的SIMM内存

   随后,在1988 ~1990 年当中,PC 技术迎来另一个发展高峰,也就是386和486时代,此时CPU 已经向16bit 发展,所以30pin SIMM 内存再也无法满足需求,其较低的内存带宽已经成为急待解决的瓶颈,所以此时72pin SIMM 内存出现了,72pin SIMM支持32bit快速页模式内存,内存带宽得以大幅度提升。72pin SIMM内存单条容量一般为512KB ~2MB,而且仅要求两条同时使用,由于其与30pin SIMM 内存无法兼容,因此这个时候PC业界毅然将30pin SIMM 内存淘汰出局了。

不同规格的EDO DRAM

   EDO DRAM(Extended Date Out RAM 外扩充数据模式存储器)内存,这是1991 年到1995 年之间盛行的内存条,EDO DRAM同FPM DRAM(Fast Page Mode RAM 快速页面模式存储器)极其相似,它取消了扩展数据输出内存与传输内存两个存储周期之间的时间间隔,在把数据发送给CPU的同时去访问下一个页面,故而速度要比普通DRAM快15~30%。工作电压为一般为5V,带宽32bit,速度在40ns以上,其主要应用在当时的486及早期的Pentium电脑上。

   在1991 年到1995 年中,让我们看到一个尴尬的情况,那就是这几年内存技术发展比较缓慢,几乎停滞不前,所以我们看到此时EDO DRAM有72 pin和168 pin并存的情况,事实上EDO 内存也属于72pin SIMM 内存的范畴,不过它采用了全新的寻址方式。EDO 在成本和容量上有所突破,凭借着制作工艺的飞速发展,此时单条EDO 内存的容量已经达到4 ~16MB 。由于Pentium及更高级别的CPU数据总线宽度都是64bit甚至更高,所以EDO DRAM与FPM DRAM都必须成对使用。

第2页:昔日经典:SDRAM时代的悲喜剧

自Intel Celeron系列以及AMD K6处理器以及相关的主板芯片组推出后,EDO DRAM内存性能再也无法满足需要了,内存技术必须彻底得到个革新才能满足新一代CPU架构的需求,SDRAM应用而生,至此终于进入内存的近代史。

   第一代SDRAM内存为PC66规范,但很快由于Intel和AMD的频率之争将CPU外频提升到了100MHz,所以PC66内存很快就被PC100内存取代,接着133MHz 外频的PIII以及K7时代的来临,PC133规范也以相同的方式进一步提升SDRAM 的整体性能,带宽提高到1GB/sec以上。由于SDRAM 的带宽为64bit,正好对应CPU 的64bit 数据总线宽度,因此它只需要一条内存便可工作,便捷性进一步提高。在性能方面,由于其输入输出信号保持与系统外频同步,因此速度明显超越EDO 内存。

66MHz SDRAM

133MHz SDRAM

   不可否认的是,SDRAM 内存由早期的66MHz,发展后来的100MHz、133MHz,尽管没能彻底解决内存带宽的瓶颈问题,但此时CPU超频已经成为DIY用户永恒的话题,所以不少用户将品牌好的PC100品牌内存超频到133MHz使用以获得CPU超频成功,值得一提的是,为了方便一些超频用户需求,市场上出现了一些PC150、PC166规范的内存。

   尽管SDRAM PC133内存的带宽可提高带宽到1064MB/S,加上Intel已经开始着手最新的Pentium 4计划,所以SDRAM PC133内存不能满足日后的发展需求,此时,Intel为了达到独占市场的目的,与Rambus联合在PC市场推广Rambus DRAM内存(称为RDRAM内存)。与SDRAM不同的是,其采用了新一代高速简单内存架构,基于一种类RISC(Reduced Instruction Set Computing,精简指令集计算机)理论,这个理论可以减少数据的复杂性,使得整个系统性能得到提高。 在AMD与Intel的竞争中,这个时候是属于频率竞备时代,所以这个时候CPU的主频在不断提升,Intel为了盖过AMD,推出高频PentiumⅢ以及Pentium 4 处理器,因此Rambus DRAM内存是被Intel看着是未来自己的竞争杀手锏,Rambus DRAM内存以高时钟频率来简化每个时钟周期的数据量,因此内存带宽相当出色,如PC 1066 1066 MHz 32 bits带宽可达到4.2G Byte/sec,Rambus DRAM曾一度被认为是Pentium 4 的绝配。

Rambus RDRAM

   但历史的轨迹并没有按照Intel的规划前进,在当时,PC600、PC700的Rambus RDRAM 内存出现Intel820 芯片组“失误事件”,而PC800 Rambus RDRAM受制造工艺所累,成本居高不下不说,第一款Rambus内存甚至需要自带散热风扇……。祸不单行,Pentium 4平台自身高昂的价格并没有带来性能的飙升,却让功耗发热齐飞。Intel自顾不暇,命远多舛的Rambus RDRAM终于胎死腹中,Rambus曾希望用更高频率的PC1066规范RDRAM来力挽狂澜,但最终还是被蒸蒸日上的DDR终结,壮志未酬身先死,只怪生不逢时。

    他的陨落标志着DDR王朝的来临,也标志着内存拉开了现代史的序幕。

第3页:内存工作原理和先天频障

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

    在半导体科技极为发达的台湾省,内存和显存被统称为记忆体(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之间的关系及特色。

第4页:一条内存三频率:“核心/IO/等效”

    通常大家所说的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频率为什么能达到数倍于核心频率呢?

第5页:DDR1/2/3:数据预取技术的革命

    相信很多人都知道,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的生命。

第6页:探索与发现:DDR2发迹史背后的真相

    上文说的DDR1-3代技术固然没错,但事实远远不是那么简单,如果仅仅依靠I/O或者数据预取位数翻倍就能造出DDR3来,那DDR2还能执内存市场之牛耳数年之久么?下面我们就来探索一下这几年中内存产业发生的那些并不为人关注的事儿。

事实上DDR2内存技术最大的突破点其实不在于用户们所认为的两倍于DDR的传输能力,而是在采用更低发热量、更低功耗的情况下,DDR2可以获得更快的频率提升,突破标准DDR的400MHZ限制。

  DDR内存通常采用TSOP芯片封装形式,这种封装形式可以很好的工作在200MHz上,当频率更高时,它过长的管脚就会产生很高的阻抗和寄生电容,这会影响它的稳定性和频率提升的难度。这也就是DDR的核心频率很难突破275MHZ的根本原因。而DDR2内存均采用FBGA封装形式,不同于曾经广泛应用的TSOP封装形式,FBGA封装提供了更好的电气性能与散热性,为DDR2内存的稳定工作与未来频率的发展提供了良好的保障。

   封装和工艺的改进让DDR2内存用1.8V电压即可驱动,相对于DDR标准的2.5V,功耗和发热量大大降低,为冲击更高频率扫清了障碍。

除了以上所说的区别外,DDR2还引入了三项新的技术,它们是OCD、ODT和Post CAS。

 OCD(Off-Chip Driver):也就是所谓的离线驱动调整,DDR II通过OCD可以提高信号的完整性。DDR II通过调整上拉(pull-up)/下拉(pull-down)的电阻值使两者电压相等。使用OCD通过减少DQ-DQS的倾斜来提高信号的完整性;通过控制电压来提高信号品质。

 ODT:ODT是内建核心的终结电阻器。我们知道使用DDR SDRAM的主板上面为了防止数据线终端反射信号需要大量的终结电阻。它大大增加了主板的制造成本。实际上,不同的内存模组对终结电路的要求是不一样的,终结电阻的大小决定了数据线的信号比和反射率,终结电阻小则数据线信号反射低但是信噪比也较低;终结电阻高,则数据线的信噪比高,但是信号反射也会增加。因此主板上的终结电阻并不能非常好的匹配内存模组,还会在一定程度上影响信号品质。DDR2可以根据自己的特点内建合适的终结电阻,这样可以保证最佳的信号波形。使用DDR2不但可以降低主板成本,还得到了最佳的信号品质,这是DDR不能比拟的。

 Post CAS:它是为了提高DDR II内存的利用效率而设定的。在Post CAS操作中,CAS信号(读写/命令)能够被插到RAS信号后面的一个时钟周期,CAS命令可以在附加延迟(Additive Latency)后面保持有效。原来的tRCD(RAS到CAS和延迟)被AL(Additive Latency)所取代,AL可以在0,1,2,3,4中进行设置。由于CAS信号放在了RAS信号后面一个时钟周期,因此ACT和CAS信号永远也不会产生碰撞冲突。

第7页:DDR3相对于DDR2的十大改进

1.突发长度(Burst Length,BL)

 由于DDR3的预取为8bit,所以突发传输周期(Burst Length,BL)也固定为8,而对于DDR2和早期的DDR架构系统,BL=4也是常用的,DDR3为此增加了一个4bit Burst Chop(突发突变)模式,即由一个BL=4的读取操作加上一个BL=4的写入操作来合成一个BL=8的数据突发传输,届时可通过A12地址线来控制这一突发模式。而且需要指出的是,任何突发中断操作都将在DDR3内存中予以禁止,且不予支持,取而代之的是更灵活的突发传输控制(如4bit顺序突发)。  

2.寻址时序(Timing)

 就像DDR2从DDR转变而来后延迟周期数增加一样,DDR3的CL周期也将比DDR2有所提高。DDR2的CL范围一般在2~5之间,而DDR3则在5~11之间,且附加延迟(AL)的设计也有所变化。DDR2时AL的范围是0~4,而DDR3时AL有三种选项,分别是0、CL-1和CL-2。另外,DDR3还新增加了一个时序参数——写入延迟(CWD),这一参数将根据具体的工作频率而定。

3.DDR3新增的重置(Reset)功能

 重置是DDR3新增的一项重要功能,并为此专门准备了一个引脚。DRAM业界很早以前就要求增加这一功能,如今终于在DDR3上实现了。这一引脚将使DDR3的初始化处理变得简单。当Reset命令有效时,DDR3内存将停止所有操作,并切换至最少量活动状态,以节约电力。

在Reset期间,DDR3内存将关闭内在的大部分功能,所有数据接收与发送器都将关闭,所有内部的程序装置将复位,DLL(延迟锁相环路)与时钟电路将停止工作,而且不理睬数据总线上的任何动静。这样一来,将使DDR3达到最节省电力的目的。

4.DDR3新增ZQ校准功能

 ZQ也是一个新增的脚,在这个引脚上接有一个240欧姆的低公差参考电阻。这个引脚通过一个命令集,通过片上校准引擎(On-Die Calibration Engine,ODCE)来自动校验数据输出驱动器导通电阻与ODT的终结电阻值。当系统发出这一指令后,将用相应的时钟周期(在加电与初始化之后用512个时钟周期,在退出自刷新操作后用256个时钟周期、在其他情况下用64个时钟周期)对导通电阻和ODT电阻进行重新校准。

5.参考电压分成两个

 在DDR3系统中,对于内存系统工作非常重要的参考电压信号VREF将分为两个信号,即为命令与地址信号服务的VREFCA和为数据总线服务的VREFDQ,这将有效地提高系统数据总线的信噪等级。

6.点对点连接(Point-to-Point,P2P)

 这是为了提高系统性能而进行的重要改动,也是DDR3与DDR2的一个关键区别。在DDR3系统中,一个内存控制器只与一个内存通道打交道,而且这个内存通道只能有一个插槽,因此,内存控制器与DDR3内存模组之间是点对点(P2P)的关系(单物理Bank的模组),或者是点对双点(Point-to-two-Point,P22P)的关系(双物理Bank的模组),从而大大地减轻了地址/命令/控制与数据总线的负载。而在内存模组方面,与DDR2的类别相类似,也有标准DIMM(台式PC)、SO-DIMM/Micro-DIMM(笔记本电脑)、FB-DIMM2(服务器)之分,其中第二代FB-DIMM将采用规格更高的AMB2(高级内存缓冲器)。

7.逻辑Bank数量

 DDR2 SDRAM中有4Bank和8Bank的设计,目的就是为了应对未来大容量芯片的需求。而DDR3很可能将从2Gb容量起步,因此起始的逻辑Bank就是8个,另外还为未来的16个逻辑Bank做好了准备。

8.根据温度自动自刷新(SRT,Self-Refresh Temperature)

 为了保证所保存的数据不丢失,DRAM必须定时进行刷新,DDR3也不例外。不过,为了最大的节省电力,DDR3采用了一种新型的自动自刷新设计(ASR,Automatic Self-Refresh)。当开始ASR之后,将通过一个内置于DRAM芯片的温度传感器来控制刷新的频率,因为刷新频率高的话,消电就大,温度也随之升高。而温度传感器则在保证数据不丢失的情况下,尽量减少刷新频率,降低工作温度。不过DDR3的ASR是可选设计,并不见得市场上的DDR3内存都支持这一功能,因此还有一个附加的功能就是自刷新温度范围(SRT,Self-Refresh Temperature)。通过模式寄存器,可以选择两个温度范围,一个是普通的的温度范围(例如0℃至85℃),另一个是扩展温度范围,比如最高到95℃。对于DRAM内部设定的这两种温度范围,DRAM将以恒定的频率和电流进行刷新操作。

9.局部自刷新(RASR,Partial Array Self-Refresh)

 这是DDR3的一个可选项,通过这一功能,DDR3内存芯片可以只刷新部分逻辑Bank,而不是全部刷新,从而最大限度的减少因自刷新产生的电力消耗。这一点与移动型内存(Mobile DRAM)的设计很相似。

10.封装(Packages)

 DDR3由于新增了一些功能,所以在引脚方面会有所增加,8bit芯片采用78球FBGA封装,16bit芯片采用96球FBGA封装,而DDR2则有60/68/84球FBGA封装三种规格。并且DDR3必须是绿色封装,不能含有任何有害物质。 

第8页:关于内存的相关技术和名词解释

    前面介绍的是关于历代内存的技术原理,可以说是比较微观的东西,反映在宏观上,就是常见的内存颗粒及内存条了,这都是些看得见摸得着的东西,但有些概念还是不容易理解,这里逐一进行说明:

● 内存位宽——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。

● 内存异步工作模式

    包含多种意义,在广义上凡是内存工作频率与CPU的外频不一致时都可以称为内存异步工作模式。首先,最早的内存异步工作模式出现在早期的主板芯片组中,可以使内存工作在比CPU外频高33MHz或者低33MHz的模式下(注意只是简单相差33MHz),从而可以提高系统内存性能或者使老内存继续发挥余热。其次,在正常的工作模式(CPU不超频)下,目前不少主板芯片组也支持内存异步工作模式,例如Intel 910GL芯片组,仅仅只支持533MHz FSB即133MHz的CPU外频,但却可以搭配工作频率为133MHz的DDR 266、工作频率为166MHz的DDR 333和工作频率为200MHz的DDR 400正常工作(注意此时其CPU外频133MHz与DDR 400的工作频率200MHz已经相差66MHz了),只不过搭配不同的内存其性能有差异罢了。再次,在CPU超频的情况下,为了不使内存拖CPU超频能力的后腿,此时可以调低内存的工作频率以便于超频,例如AMD的Socket 939接口的Opteron 144非常容易超频,不少产品的外频都可以轻松超上300MHz,而此如果在内存同步的工作模式下,此时内存的等效频率将高达DDR 600,这显然是不可能的,为了顺利超上300MHz外频,我们可以在超频前在主板BIOS中把内存设置为DDR 333或DDR 266,在超上300MHz外频之后,前者也不过才DDR 500(某些极品内存可以达到),而后者更是只有DDR 400(完全是正常的标准频率),由此可见,正确设置内存异步模式有助于超频成功。

 目前的主板芯片组几乎都支持内存异步,英特尔公司从810系列之后都支持,而威盛公司则从693芯片组以后全部都提供了此功能。

第9页:虚拟内存是什么?有什么用?

使用Windows的人都知道虚拟内存,简而言之,虚拟内存技术事实上是用硬盘来代替内存的一种做法,如果计算机缺少运行程序或操作所需的随机存取内存 (RAM),则Windows 使用虚拟内存进行补偿。

虚拟内存将计算机的RAM和硬盘上的临时空间组合在一起。当 RAM 运行速度缓慢时,虚拟内存将数据从 RAM 移动到称为“分页文件”的空间中。将数据移入与移出分页文件可以释放 RAM,以便完成工作。

一般而言,计算机的 RAM 越多,程序运行得越快。如果计算机的速度由于缺少 RAM 而降低,则可以尝试增加虚拟内存来进行补偿。但是,计算机从 RAM 读取数据的速度要比从硬盘读取数据的速度快得多,因此增加 RAM 是更好的方法。

不知大家有没有发现,在Windows目录下有一个名为pagefile.sys的系统文件(Windows98下为Win386.swp),它的大小经常自己发生变动,小的时候可能只有几十兆,大的时候则有数百兆,这种毫无规律的变化实在让很多人摸不着头脑。其实,pagefile.sys是Windows下的一个虚拟内存,它的作用与物理内存基本相似,但它是作为物理内存的“后备力量”而存在的,但是,它并不是在只有物理内存不够用时才发挥作用的,也就是说在物理内存够用时也有可能使用虚拟内存,如果你虚拟内存设置过小则会提示“虚拟内存不足”。

我们都知道,虽然在运行速度上硬盘不如内存,但在容量上内存是无法与硬盘相提并论的。当运行一个程序需要大量数据、占用大量内存时,内存就会被“塞满”,并将那些暂时不用的数据放到硬盘中,而这些数据所占的空间就是虚拟内存。现在我们也明白为什么pagefile.sys的大小会经常变化了。

内存在计算机中的作用很大,电脑中所有运行的程序都需要经过内存来执行,如果执行的程序分配的内存的总量超过了内存大小,就会导致内存消耗殆尽。为了解决这个问题,Windows中运用了虚拟内存技术,即拿出一部分硬盘空间来充当内存使用,当内存占用完时,电脑就会自动调用硬盘来充当内存,以缓解内存的紧张。

举个例子来说,压缩程序在压缩时有时候需要读取文件的很大一部分并保存在内存中作反复的搜索。假设内存大小是128MB,而要压缩的文件有 200MB,且压缩软件需要保存在内存中的大小也是 200MB,那么这时操作系统就要权衡压缩程序和系统中的其他程序,把多出来的那一部分数据放进交换文件。

第10页:全面揭秘内存控制器

    严格意义上说,CPU是不能和内存直接对话的,而连接它们的桥梁就是内存控制器。可能一些朋友对这个集成在主板上或者CPU里的这个玩意不太熟悉,这里就详细介绍一下。

● 传统型和CPU整合型

内存控制器分为传统型和整合型两种。传统的计算机系统其内存控制器位于主板芯片组的北桥芯片内部,CPU要和内存进行数据交换,需要经过“CPU--北桥--内存--北桥--CPU”五个步骤。

    26个数据A~Z,要传送到CPU,这时候CPU就向北桥发出指令(因为内存控制器是集成在北桥上,说所以要经过北桥),内存通过内存控制器接受到了指令,这个指令就是把内存上b单元的A~Z数据传送到CPU,内存这个时候开始取数据,也就是平常所说的寻址。当内存找到了这个数据,而这26个数据每个数据为500MB,所有数据总和就约为12GB,假设内存为双通道R2 800,数据传输率就为800MHZ乘以128BIT除以8比特每字节=12GB每秒,通过分析,认为只需一秒就能传送到CPU,此时的数据在一秒的时间内只传送到了北桥,内存控制器在北桥,在北桥的数据如何传送到CPU呢,这就要通过FSB前端总线了,假设FSB的频率为800MHZ,那么数据传输率就为800MHZ乘以64BIT除以8比特每秒=6.4GB每秒,从北桥到CPU要2秒,所以数据传送到CPU的总时间为3秒。

集成内存控制器,就是在CPU的基板上内置一个内存控制器,CPU集成内存控制器的时候,数据从内存传输到控制器同样为1秒,所不同的是这个时候不用再通过慢吞吞的前端总线了,CPU直接从内存控制器读取数据就行了,因为内存控制器就和CPU集成在一起,所用时间短到几乎可以忽略。打个比方,一件东西在你旁边的时候,顺手就拿了,而不用跑去取,这样集成内存控制器的CPU读取12GB的数据仅仅用了1秒的时间,大大节省了数据传输时间,CPU也不会因为等待数据而窝工。

   总而言之,内存控制器在北桥时,数据以内存控制器---北桥----CPU的方式传输。CPU集成内存控制器时:数据以内存控制器------CPU的方式传输,不用绕道北桥,一步到位。

DDR3内存控制器

将内存控制器整合到CPU内部显然是今后的发展方向,而且其技术也会越来越完善。AMD的在K8系列CPU及其之后的产品(包括Socket 754/939/940等接口的各种处理器),CPU的内部则整合了内存控制器。Intel在酷睿i5、酷睿i7 系列CPU中,也引入了整合内存控制器的方案。

● 内存控制器的计算

以AMD CPU为例:Socket 939时代CPU主频与倍频直接相除就是CPU内存控制器所支持的内存频率。到了DDR2时代的AM2处理器,虽然核心方面同样内置了DDR2的内存控制器, 但与过去的Socket 939接口不同的是,它所支持的内存频率被更新至DDR2-800的水平。CPU主频和倍频直接相除结果和内存频率也不一定要是1:1,可以有多种比值可选。

● CPU内存集成内存控制器是否存在缺点?

CPU内部整合内存控制器的优点显而易见,就是可以有效控制内存控制器工作在与CPU核心同样的频率上,而且由于内存与CPU之间的数据交换无需经过北桥,可以有效降低传输延迟。这就如同将货物仓库直接搬到了加工车间旁边,大大减少了原材料和制成品在货物仓库和加工车间之间往返运输所需要的时间,极大地提高了生产效率。这样一来系统的整体性能也得到了提升。有人说集成内存控制器的CPU也有缺点,以Intel的酷睿i系列为例,只能支持DDR3内存,而之前的北桥集成内存控制器的时候可以兼容DDR2内存。其实这是一个误区,因为之前北桥之所以兼容DDR2是因为北桥中同时集成DDR2和DDR3的内存控制器,而新一代的i系列Intel放弃了DDR2控制器,所以造成了向下不兼容的情况。而AMD的CPU就没有这种情况,只要主板上有DDR2插槽,插上都能用。当然,DDR2和DDR3同时混插是绝对不行的。

第11页:追忆SDRAM时代:曾经通用的显存内存颗粒

作为显示卡的重要组成部分,显存一直随着显示芯片的发展而逐步改变着。从早期的EDORAM、MDRAM、SDRAM、SGRAM、VRAM、WRAM、GDDR历代到今天广泛采用的GDDR5显存经历了很多代的进步。

● FPM DRAM

FPM DRAM(Fast Page Mode RAM): 快速页面模式内存。是一种在486时期被普遍应用的内存(也曾应用为显存)。72线、5V电压、带宽32bit、基本速度60ns以上。它的读取周期是从DRAM阵列中某一行的触发开始,然后移至内存地址所指位置,即包含所需要的数据。第一条信息必须被证实有效后存至系统,才能为下一个周期作好准备。这样就引入了“等待状态”,因为CPU必须傻傻的等待内存完成一个周期。FPM之所以被广泛应用,一个重要原因就是它是种标准而且安全的产品,而且很便宜。但其性能上的缺陷导致其不久就被EDO DRAM所取代。

● EDO

EDO (Extended Data Out) DRAM,与FPM相比EDO DRAM的速度要快5%,这是因为EDO内设置了一个逻辑电路,借此EDO可以在上一个内存数据读取结束前将下一个数据读入内存。设计为系统内存的EDO DRAM原本是非常昂贵的,只是因为PC市场急需一种替代FPM DRAM的产品,所以被广泛应用在第五代PC上。EDO显存可以工作在75MHz或更高,但是其标准工作频率为66 MHz,不过其速度还是无法满足显示芯片的需要,也早成为“古董级”产品上才有的显存。

    SDRAM,即Synchronous DRAM(同步动态随机存储器),曾经是PC电脑上最为广泛应用的一种内存类型。既然是“同步动态随机存储器”,那就代表着它的工作速度是与系统总线速度同步的。SDRAM内存又分为PC66、PC100、PC133等不同规格,比如PC100,那就说明此内存可以在系统总线为100MHz的电脑中同步工作。与系统总线速度同步,也就是与系统时钟同步,这样就避免了不必要的等待周期,减少数据存储时间。SDRAM采用3.3伏工作电压,168Pin的DIMM接口,带宽为64位。

    SDRAM时代之前,显卡上用的“显存颗粒”与内存条上的“内存颗粒”是完全相同的。在那个时候,GPU本身的运算能力有限,对数据带宽的要求自然也不高,所以内存颗粒就可以满足要求。

某TNT2显卡,使用的是PC166的SDR内存颗粒

● SGRAM

SGRAM是Synchronous Graphics DRAM的缩写,意思是同步图形RAM是种专为显卡设计的显存,是一种图形读写能力较强的显存,由SDRAM改良而成。它改进了过去低效能显存传输率较低的缺点,为显示卡性能的提高创造了条件。SGRAM读写数据时不是一一读取,而是以"块"(Block)为单位,从而减少了内存整体读写的次数,提高了图形控制器的效率。但其设计制造成本较高,更多的是应用于当时较为高端的显卡,后被GDDR显存所取代。

● 内存满足不了显卡的需求,显存应运而生

    本是同根生的状况一直持续到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。

第12页:GDDR1洗牌:显存另立门户,内存一统江湖

● 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主攻低端的局面,时至今日依然得到了延续。

第13页:GDDR2第一版:NVIDIA的梦魇

    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,理论频率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继承。

第14页: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之间也是这种关系,稍后我们会做详细介绍。

第15页:GDDR3:完美显存GDDR3竟是DDR2所生

    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移至总线上时才会消费电力,从而很好的控制了功耗和发热。

第16页:GDDR3:工艺提升才是王道

    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频率成为了新的瓶颈。

第17页:GDDR4:ATI孤芳自赏的独角戏

    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生命力太顽强了。

第18页:GDDR5:ATI以攻为守背水一战

    即便使用了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的失败并没有阻挡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。

第19页:GDDR5:存贮技术巅峰之作

    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就是很好的例子。

第20页:gDDR3:低端显存的生存之道

    之前我们分析过,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封装,由于位宽太大仅用于特殊场合。

第21页:玩转显存之进阶修炼

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

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

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

    不少资料中含糊不清的表述16M×32Bit中,16M表示显存存储单元的容量为16Mbit,小编经过查证发现这种说法是翻译错误,事实上16M是指显存(内存)颗粒中拥有的Bank数量。这样一来显存颗粒的容量算法就很好理解了。

● 容量:单颗显存容量=存储单元数量×每电源数据位宽/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相当。

第22页:“虚拟显存”动态显存划分技术之功与过

    对于一块几十美元的低端显卡来说,物理成本的构成一般会有3个主要方面,包括核心芯片、显存芯片和PCB。三者的成本比重不同,其中核心芯片和显存芯片的比例最大,大概都要占到30%以上,而PCB和其它元件一般只占到15%左右。

    那么降低成本的方法也就几种途径:那就是分别降低各个部分的成本。对于图形核心来讲,一款显卡的核心选定,那么基本就无法简单降低核心的成本,只能随着生产工艺的改进和批量生产慢慢降低价格;而对于一款完整的独立显卡来讲,PCB是不可能节省掉的,即使对元件进行尽量的压缩,成本也不会造成太大的下降,反而会造成显卡品质的下降。
 
    整合系统是这种构思的极端方式,显示核心完全融合到了芯片组或者CPU当中,极大的节约了成本,甚至也包括PCB和显存的成本,但由于目前主板的工艺限制,整合图形核心的性能始终受到了很大的制约。整合芯片组更多的应用在对3D游戏不热衷的用户,而即使是一个比较初级的3D玩家,也更需要一款“独立完整”的显卡。
 
    这样一来,问题就集中在了搭配比较灵活的显存上。相对于整块显卡来讲,显存所占的成本比例很高,如果能压缩容量,在价格上会表现的比较明显。这一点在零售市场上也有体现,目前市场上中低端显卡的零售产品常见512MB和1024MB两种容量,价格往往相差100元,因此很多用户选择了512MB显存的产品。
 
    不过直接减少显存容量并不是最终的解决办法,毕竟显存的容量很大程度上左右了显卡的性能,一味降低显存容量只会导致性能的下降。于是芯片厂商把目光放在了硬件系统的其它快速存储器——也就是内存上,既然目前系统内存的价格比较低廉,而且内存是每套系统必须配置的部件,我们为什么不能让它也起到显存的作用呢?

在BIOS里可以设置“虚拟显存”的大小

    NVIDIA的TurboCache(简称TC)技术可支持GPU直接利用系统内存进行渲染,而不需要使用本地显存。NVIDIA TurboCache技术降低了系统对板载显存的要求,借助这项技术,系统制造商能够在PC中配置更具特性的GPU,利用 PCI Express 的额外带宽达到了比传统视频内存解决方案更高的图形性能。

 TurboCache 共享专用视频内存的容量和带宽及系统内存,取得了增强的性能和更多的图形总内存。TurboCache Manager 分配系统内存来取得最大系统性能,允许该卡就像在本机上一样也使用系统内存。利用高速双向 PCI Express 总线,TurboCache 使内存带宽双倍增长。TCM 在本机或 TurboCache 内存中分配缓冲区,以最大化图形性能和最小化对系统性能的影响。

  双向 PCI Express 带宽配合 TurboCache 架构,提升了图形性价比。既然是利用系统内存,这和以前的集成显卡又有什么区别呢?

  在NVIDIA的官方技术说明中,内存管理技术可以“允许GPU在分配和不分配系统内存时无缝切换,并且高效的读写内存”。这个工作由驱动程序中名叫TC的管理部分执行,以分配和平衡系统及本地显存,而且它的操作级别非常高。TC技术新引入了内存管理单元(Memory Manage Unit,MMU),能够让GPU透过PCI-E总线直接对系统内存进行读取和写操作,自动把渲染结果和纹理分配在本地内存或者系统内存上。这就类似于把CPU的内存管理器搬到了GPU里,能够把本地缓存和系统内存浑然视作一体,突破两者的物理地址,以虚拟寻址方式自由地分配帧缓存以及纹理缓存。

 比如有一台使用集成显卡的电脑有512M系统内存,如果划给集成显卡8M容量作为显存,则系统中会显示仅有504M系统内存,但使用TC技术不会导致这种情况,它不会固定的分出一块内存当作显存,它的作用主要反映在两方面: 第一、TC技术仅仅是需要占用主内存的时候才占用,MMU具有一个智能的算法来决定使用主内存和使用板载缓存的最佳途径。

 其次,2D显示输出是使用板载高速缓存,因此在这种情况下不会和CPU争抢内存的控制权。

 即使显卡需要占用一部分内存,但BIOS与Windows都会认为系统仍具有512M内存。还有比起集成显卡完全依赖于系统内存的情况,TC却可以通过显卡板载的显存作为Cache来加快对系统内存的读取调用速度,为显卡性能带来明显的提升。

 所以Turbo Cache技术完全不会像整合显卡一样影响系统内存。由于 TurboCache 是集成到GPU中的,因此不能关闭它。

HyperMemory是ATI提出的解决本地显存容量与显卡成本之间矛盾的一种解决方案,最先出现在其RS480芯片组中,随后推出的低成本版X300 HyperMemory中也有其身影。

 HyperMemory和Turbo Cache一样是一种动态划分内存的技术,在HyperMemory出现之前,由于PCI-Express总线没有很明显的类似AGP DIME的设计,PCI-Express接口的显卡无法直接地对内存进行利用,所以往往需要通过搭配更大的本地显存来满足图形应用中对存储空间的需求。这大大增加了PCI-Express接口显卡的制造成本,同时,大容量本地显存的解决方案也并非适用于所有用户,中低端及入门级用户需要更低成本的解决方案。

    而HyperMemory技术出现后,ATI可通过它来大幅削减其PCI- Express接口显卡的本地显存容量以达到控制成本的目的,同时可通过对系统内存的调用来解决存储空间和存储性能的需求问题。

    通过HyperMemory技术的应用,核心在完成数据吞吐时将不必受空间因素的影响。同时,在所调用内存空间的分布方面,HyperMemory采用事先扫描内存并寻找合适空间的方式,这样做能最大限度保证内存空间的利用率,很有“见缝插针”的味道。一言以蔽之, HyperMemory的特点在于“分立”和“自由”,和Turbo Cache技术没有本质区别,可以理解为它们和虚拟内存一样,是一种“虚拟显存”技术。

   当然HyperMemory和Turbo Cache并非解决问题的万金油,系统内存本身的带宽无法和显卡板载显存相提并论,绕道产生的系统总线拥挤和延迟也是无法避免,只能算是权宜之计,不得已而为之。之前的多数测试也表明明这些技术并不能达到化腐朽为神奇的作用。总的来说HyperMemory和Turbo Cache不失为一个十分优秀的显示数据存储解决方案。它在强调成本的前提下最大限度地保留并发挥了核心的性能。其次用户在购买显卡的时候不能只看显卡标号,现在不少中低端显卡利用这两样技术鱼目混珠。XXX 1G版,往往只有512M甚至更少的板载显存!

第23页:游戏画面日趋精美对显存提出挑战

    在过去的十几年时间里,DirectX已经稳步成为微软Windows平台上进行游戏开发首选API。每一代DirectX都带来对新的图形硬件特性的支持,每次版本变更都能帮助游戏开发者们迈出惊人的一步。就拿近几年来说,DX9C、DX10及相关显卡的发布都带来了令人惊讶的游戏画面,给与玩家无与伦比的游戏体验。

    尤其是Microsoft发布的DirectX 10、11代表了自从可编程Shader出现以来在3D API方面的最巨大的进步。通过一番脱胎换骨般的重建,DirectX 10、11展现出一系列非常醒目的新特性,包括高度优化的运行时,强大的Geometry Shader,纹理数组,曲面细分等等;这些特性将引领PC实时三维图形进入一个全新的世界。Crysis惊艳的画面让玩家耳目一新,而新的DX11游戏更是达到了画面的巅峰,显卡实时渲染出来的人物及风景效果足以媲美照片、CG动画甚至电影,让人叹为观止!

    与此同时,这些新游戏的要求自然也不低,就拿DirectX 10 Shader model 4.0来说,新版本的临时寄存器由DX9C的32个扩充到了4096个,将常量寄存器由原来的256个扩充到了65536个!在每个纹理阵列中,最多可以保存512张同样大小的纹理,而且每张贴图的分辨率被扩展到了8192×8192。更大的分辨率意味着画面中更丰富的纹理细节,也意味着要占用更多的显存空间。

    而在3D游戏中不同分辨率和画质设定所产生的纹理数据变化非常大,在使用高分辨率、全屏抗锯齿、各项异性过滤以及HDR的情况下,超大的纹理数据会占用大量的显存空间,假如纹理缓存不够用,要么重新清空显存后继续加载数据,要么调用速度较慢的系统内存充当显存,不管怎样都会对3D性能造成很大影响,出现FPS下降甚至画面停顿的现象。显存的速度和容量对显卡性能影响非常大。

    从去年起,有很多显卡厂商就在打着普及大容量显存的旗号,推出了一些超高容量的显卡。比如目前的高端显卡基本已经标配1GB显存了,甚至有一些显卡厂商还推出非公版的2GB容量的显卡。而现在市场上的显卡容量也非常多,256MB、384MB、512MB、768MB、896MB、1GB甚至2GB容量的显卡都有。那么,显存到底多少才够用,相信这是每一位打算买显卡的朋友都十分想了解的问题。越来越多中低端显卡,都标配1GB容量的显存,这不禁让我们心存疑虑,想开大分辨率家高AA,现在高端显卡的1G显存还够用吗?

第24页:多大才够用?细数显存里的那些东西

    显存和内存的功能其实十分相似,内存服务于CPU,系统进程和常用资源都是暂存在内存中,因为速度带宽快于其他存储介质,可以最快的和CPU交换数据提高整机性能,显存也一样,不同的是它服务于GPU,而且比内存速度更快,一般来说,显存中所存储的数据主要由以下5部分组成:帧缓存(Frame buffer)、后台缓存(Back buffer)、Z轴缓存(Z-buffer)、纹理数据和几何数据。

    简单的说帧缓存里存放的就是我们实际将在屏幕上看到的内容,这部分的容量计算方式大致为:屏幕宽度方向上的像素数目×屏幕高度方向上的像素数目×每个像素所用的字节数量,也就是显示分辨率的大小。

    后台缓存顾名思义,就是第2帧缓存。当屏幕上显示出当前帧缓存的内容时,下一帧的显示内容已经被存放在后台缓存里了。而当后台缓存的内容显示时,帧缓存则写入第3幅画面……如此交替工作。因此,后台缓存的计算方式与帧缓存完全相同。但是后台缓存使用量可能会比帧缓存还要大,尤其是在游戏中FPS很高时!

    Z轴缓存用来记录像素到屏幕的距离,这样当两个显示区域中的像素在屏幕上重叠时,如果新绘制的像素其Z值比Z值缓存中记录的数据小,那么就不必重新绘制此像素。这可以减轻GPU的计算量。类似于帧缓存,Z轴缓存其容量计算公式为:屏幕宽度方向上的像素数目×屏幕高度方向上的像素数目×每个像素Z值缓存所用的字节数量。

    纹理数据以及几何数据因程序而异,涉及的方方面面非常复杂,无法定量计算。

● 显存在游戏中的使用情况更加复杂:

   以上几项分析都是在没有打开FSAA(全屏抗锯齿)的情况下做的原理解析。实际上FSAA由于要进行多倍取样,因此程序所需的显存容量理论上将成倍增长。只有更高的显存容量和传输位宽,才能够满足GPU的需要。另外,近几年3D图形技术发展迅猛,HDR、Tessellation、各种阴影渲染成了游戏必备,DX10/11这些新的特性将显存的需求拉至顶峰!

   总而言之,显存容量决定存储图形数据信息的多少,构成显存容量的几大部分当中,帧缓冲数据和Z缓冲数据的大小在同一款游戏中一般是固定的,所占用的显存容量并不是很多,而纹理数据大小占据了相当大的一部分,而且随着渲染画面的复杂程度和抗锯齿多倍取样等特效,GPU对显存的需求会大幅波动!

    ▲ 12款游戏显存占用率总结

    测了一大堆游戏,笔者根据经验谈一谈游戏对显存的需求到底体现在哪,也顺便揭露几个误区:

1. 像Crysis和FarCry2这种画面很华丽的游戏,由于大量使用了高精度纹理贴图,显存消耗十分可观,但开发商也会比较收敛的将显存使用控制在高端显卡的物理显存容量范围内,所以大部分游戏的显存用量不会超过主流的1GB;

2. 像星际2这种屏幕内拥有大量物体,景物模型太多导致显存用量大增。由于这些单位都是由玩家亲手建造出来的,并不在开发商的控制范围内,因此显存消耗急剧膨胀。大容量显存是必须的,通过我们的测试来看,GTX460 768MB玩星际2时,场景稍微复杂一点就会很卡(特效全开+AA),而1GB版本也会在多人大混战时出现掉帧情况,所以拥有1GB+显存的GTX470/480还有特殊版本的显卡很适合追求完美画质的星际2玩家。

3. 抗锯齿毫无疑问是最消耗显存的图形技术。noAA和4xAA相比,在所有游戏中显存使用量都会增加20%左右,大概是100MB-200MB甚至更多。

4. 理论上来说提高分辨率会多消耗一些显存,但实际上并非绝对的,因为提高分辨率之后,由于游戏FPS的降低,显存内的数据更新频率放缓,使用量会有一定程度的减少,此消彼涨之后,其实显存使用量不一定会增加。除非由于CPU的限制提高分辨率后FPS并没有降低多少,或者分辨率增加好几倍,那么就会消耗不少的显存。

5. 本次测试最高分辨率定格在1920x1080,如果大家使用更高的2560x1600(分辨率是1080p的两倍以上),或者是组建三屏(三倍分辨率)还有3D系统(双倍运算量)的话,那么显存消耗量就另当别论了。事实上2GB版本的显卡正是为这些有特殊需要的用户而定制的。

    在过去的十几年时间里,DirectX已经稳步成为微软Windows平台上进行游戏开发首选API。每一代DirectX都带来对新的图形硬件特性的支持,每次版本变更都能帮助游戏开发者们迈出惊人的一步,而从主流游戏内存占用测试来看,显存512M已经越来越落伍了,很多游戏的流畅运行都需要768M乃至更高容量显存的支持。当然显存胃口超过1G显存的游戏还是凤毛麟角,作为普通消费者多花选择些许预算选择1G的产品绝对是物有所值,但是目前没有必要为了一两款游戏而去追求更大容量显存。

第25页:未来展望:显存引领内存发展趋势

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

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

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

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

即将到来的DDR4时代

    在内存领域,如今DDR3才刚刚站稳脚跟,至少将统治PC两至三年,但DDR4的标准已经在积极制定当中,起步频率降至1.2V,而频率提升至2133MHz,次年进一步将电压降至1.0V,频率则实现2667MHz。在内存带宽并不紧张的情况下,成本控制和低碳节能应该是DDR4的首要目标。

   而据此前消息透露,新一代的DDR4内存可能会拥有两种规格。根据多位半导体业界相关人员的介绍,DDR4内存将会是Single-endedSignaling( 传统SE信号)方式DifferentialSignaling( 差分信号技术 )方式并存。其中AMD公司的PhilHester先生也对此表示了确认。预计这两个标准将会推出不同的芯片产品,因此在DDR4内存时代我们可能会看到两个互不兼容的内存产品。■


加载中...