新手上路:内存带宽和延时分析 本文共 1 页
对于内存性能而言,最关键的莫过于“内存延时”和“带宽”两项指标。如今,当用户购买内存时,往往会被“双通道”,“低延时”此类术语所迷惑,对于普通用户而言,并不能明白这些术语意味着什么,以及对系统的性能有如何的影响。本文,就用通俗易懂的词语解释内存带宽和延时对系统性能的影响。
内存基本概念
“什么是内存,它到底有什么作用?”这是许多初学者的疑惑。就我们平时所谈的内存而言,通常是指“随机访问内存”(Random Access Memory,RAM),它以插槽的方式和主板相连。它给CPU和应用程序之间提供了一个高速的缓存区,是Cache(速度快,容量小)和硬盘(速度慢,容量大)之间过渡的桥梁。程序运行时,所需读写的数据并不能完全在缓存中装载下,因此在价格和容量的限制下,就形成了寄存器,缓存(Cache),内存,硬盘这样架构的内存子系统。硬盘可以永久的保存数据,但是相比而言,访问和读写数据的速度较慢。
在程序的整个运行过程中,首先CPU会从程序计数器中读取一条指令,然后对指令进行解码,完成一个操作,最后再读取一条指令。整个过程周而复始。在很多程序中,都会重复下述的几个步骤。
----->读取一条指令
----->获得数据A
----->获得数据B
----->把B加至A
----->把A存入C
在这样一个过程中,会多次产生读写操作,其中最有效的方法是在Cach中处理指令,数据A,B和C。但是往往由于Cache容量的限制,部分数据会保存在内存中,甚至可能保存在硬盘上。如果数据在Cache中,那么CPU在处理的过程中就称为“命中”,所需的数据可以从Cache中读入,并且存入速度更高的寄存器内进行下一步处理。如果数据不在Cache中,那么称为“失效”。CPU就不得不从内存(或硬盘)中,把所需的数据读入Cache中,然后再由Cache装入寄存器中。简单而言,内存以相对较低的价格和较高的速度提供一个存储数据的空间。
“数据是如何从内存装入CPU的呢?”这常常是用户会问的另外一个问题。简单而言,通过“总线”来完成这样一个过程。总线由许多数据线路所组成,每一条数据线路只传送1比特数据,用来表示0和1两个状态。对于800MHz频率的互联总线,那就意味着在一秒钟之内,内存和CPU之间可以进行800M次的数据交换。这样一个过程通常通过北桥芯片来控制。总线一般是半双工的,即同时只能进行数据的“发送”或者“接收”。这里的总线也就是我们常说的“前端总线”(FSB)。
DDR(双倍传输速率)技术是这几年兴起的内存技术,并且在内存市场取得成功。DDR内存和普通的SDR内存不同。对于前几年主流的SDRAM内存模块,数据只能在系统的每个时钟周期的下降沿(或者上升沿)传输,内存模块的电压为3.3V左右;而DDR SDRAM内存模块可以在每个时钟周期的上升沿和下降沿同时进行数据传输,DDR也因此而得名。
DDR内存模块的电压为2.5V左右。
“内存是如何安排地址的?”简单的说,内存地址的安排模式和矩阵非常相似。每一个内存的模块(bank)都有“行”和“列”构成,“行”和“列”的交叉点便是存储数据的位置,一般保存0或者1。早期的I845芯片组只有4个bank,最大只能支持2GB的内存容量。新型的Springdale和Canterwood芯片组有8个bank,能够支持高达4GB的内存容量。
双通道内存架构
“双通道内存”是目前主流的内存芯片。在理论上,在双通道内存控制器的协调下,内存数据的传输速率是普通内存的2倍。为了解释其工作原理,我们不妨用高速公路来打个比方。为了增加高速公路的交通吞吐量,在不提高车辆运行速度的前提下,只有扩展道路的宽度。双通道内存正式如此,通过在北桥芯片中增加一个内存控制器,来提高内存的峰值带宽。DDR SDRAM 64位总线宽度的内存在双通道内存的工作模式下,实际的总线宽度为128位。
继续考虑上述例子,双通道DDR内存的架构相当于高速公路有4个车道,上行和下行分别占有两个车道。当车辆从一座高速公路开往另一个高速公路时,如果连接的桥梁的宽度也有4个车道,那就不会发生瓶颈,所有的车辆(数据)均可以高速的通往另一座高速公路;在系统中,这座连接的桥梁就是前端总线(FSB)。Intel使用了“quad pumped”(四泵)总线,它达到128位的带宽,因此所有的数据均可以高速的在内存和缓存之间传输。Quad pumed总线技术是Intel足以傲视群雄的主要原因。早期的i845芯片组使用单通道的内存架构,因此传输效率不是很高。
对于Athlon XP芯片而言,其FSB并不能达到128位的带宽,连接内存和缓存的通路只有2个“车道”,因此“4车道”的数据量必须分为2次进行传输。对AMD的双通道内存架构而言,其中一个通道往往处于闲置状态。在一种情况下,如果RAM的延时和FSB的处理速度相等时,才能能够发挥其双通道内存优势。
延时
如果要增加内存的带宽,那么我们就可以采用上述简单的方法,即增加内存的通道;使得在每一个时钟周期内,可以处理的数据量随着通道的增加而增加。由于目前的FSB技术的限制,双通道的内存架构已经戳戳有余。如果FSB能够达到256位或者更高的位宽,那么4通道,8通道的内存架构一定会得到使用。对于内存的性能,还有一个关键的因素:延迟。
延迟定义为:CPU读取指令和执行指令之间的一段时间。如果内存需要读写数据,那么这个过程会产生大量的延迟。整体而言,延迟越低,系统的性能就越出色。但是降低延时的方法却并不是很容易。有时往往为了降低1个周期的延时,所花费的费用要高上一个数量级。
如果FSB和内存控制器并不运行在相同的时钟速度,那么它们之间传输数据时,必须进行同步。例如,如果FSB频率和内存控制器频率为5:4,那么FSB经过5个时钟周期时,内存控制器才运行了4个周期。即FSB每经过5个周期才能和内存控制器同步一次。如果在第2个时钟周期CPU发出读写命令,那么FSB必须等待3个周期和内存控制器同步后,才能进行数据传输。这就是为什么大部分FSB和内存控制器之间使用1:1分频的原因。
除了FSB和内存控制器之间由分频比所产生延时之外,更主要的是由内存模块本身产生的。当北桥的内存控制器发出读取请求时,一个“ACTIVE”命令会发送到内存中,随后内存的“行”和“列”被激活,这段时间为tRP ,并且可以通过BIOS来调节设置,通常需要2~4个时钟周期。随后,进行“行刷新(RAS)”和“列刷新(CAS)”,这段延时tRCD 是由内存模块本身的特性所决定,一般为2~4个时钟周期。在数据的读写过程中还会产生行延时(tRAS)和列延时(tCL);如果下一步的内存读写操作在同一行内操作,那么只增加CAS延时;如果下一步的内存在不同的模块内完成,那么整个读写过程就必须重新从tRP开始。 tRAS 通常需要5~8个时钟周期。下图是内存读写的完整过程。
由于这些延时在读写的过程中不得不产生,因此降低读写过程中的延时是一个比较困难的任务。尽管如此,在过去的10年终,内存的延时已经从120ns降低到如今的50ns左右。而内存的峰值带宽也从原先的1GB/s(理论上,PC133)提升到如今的8GB/s(理论上,双通道PC4000)。
Springdale/Canterwood 分频比相关问题
如上文所述,为了避免内存控制器和FSB之间的延时,它们的时钟分频通常设为1:1。但是许多用户为了获得更高的性能往往对CPU或者内存进行超频。对于P4而言,超频后,CPU最高的频率可以达到250MHz的FSB,但是在市场上几乎没有几款内存可以匹配此频率。通常用户使用的是PC3200内存模块,因此分频比一般为4:5或者3:4。在许多实际的产品中,可能还会产生内存和芯片组不兼容的情况,对于Springdale/Canterwood的芯片组问题尤为严重。例如,比较有名的ABIT IC7/IS 7系列主板,就拒绝内存使用1:1的分频比。在Soltek 86SPE-L的主板中也会产生这样的问题。一般制造商会通过更新BIOS来解决此类问题。
因篇幅问题不能全部显示,请点此查看更多更全内容