句子大全

句子大全 > 句子大全

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

句子大全 2010-08-23 23:52:37
相关推荐

泡泡网显卡频道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都必须成对使用。

自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

133MHzSDRAM

不可否认的是,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王朝的来临,也标志着内存拉开了现代史的序幕。

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

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

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

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

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

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的生命。

上文说的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信号永远也不会产生碰撞冲突。

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必须是绿色封装,不能含有任何有害物质。

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

● 内存位宽——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芯片组以后全部都提供了此功能。

使用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,那么这时操作系统就要权衡压缩程序和系统中的其他程序,把多出来的那一部分数据放进交换文件。

严格意义上说,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同时混插是绝对不行的。

作为显示卡的重要组成部分,显存一直随着显示芯片的发展而逐步改变着。从早期的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。

● GDDR——显存和内存正式分家

GDDR作为第一代专用的显存芯片,其实在技术方面与DDR没有任何区别,同样采用了2bit预取技术,理论频率GDDR并不比DDR高多少。不过后期改进工艺的GDDR有了优秀PCB的显卡支持之后,GDDR显存最高冲刺至900MHz,而DDR内存只能达到600MHz左右,显存和内存的差距从此逐渐拉开。

阅读剩余内容
网友评论
相关内容
拓展阅读
最近更新