内存知识详解:CL设置和ECC校验
内存知识详解:CL设醅呓择锗置和ECC校验
1、CL 设置
内存负责向 CPU 提供运算所需的原始数据,而目前 CPU 运行速度超过内存数据传输速度很多。因此,很多情况下,CPU 都需要等待内存提供数据,这就是常说的“CPU 等待时间”。内存传输速度越慢,CPU 等待时间就会越长,系统整体性能受到的影响就越大。因此,快速的内存,是有效提升 CPU 效率和整机性能的关键之一。
在实际工作时,无论什么类型的内存,在数据被传输之前,传送方必须花费一定时间去等待传输请求的响应,通俗点说,就是传输前,传输双方必须要进行必要的通信,而这样就会造成传输的一定延迟时间。CL 设置一定程度上反映出了该内存在 CPU 接到读取内存数据的指令后,到正式开始读取数据所需的等待时间。不难看出,同频率的内存,CL 设置低的,更具有速度优势。
上面只是给大家建立一个基本的 CL 概念。而实际上,内存延迟的基本因素,绝对不止这些。内存延迟时间,有个专门的术语叫“Latency”。要形象的了解延迟,我们不妨把内存当成一个存储着数据的数组,或者一个 EXCEL 表格,要确定每个数据的位置,每个数据都是以行和列编排序号来标示,在确定了行、列序号之后,该数据就唯一了。内存工作时,在要读取或写入某数据,内存控制芯片会先把数据的列地址传送过去,这个 RAS 信号(Row Address Strobe,行地址信号)就被激活,而在转化到行数据前,需要经过几个执行周期,然后接下来 CAS 信号(Column Address Strobe,列地址信号)被激活。在 RAS 信号和 CAS 信号之间的几个执行周期,就是 RAS-to-CAS 延迟时间。在 CAS 信号被执行之后,同样也需要几个执行周期。此执行周期在使用标准 PC133 的 SDRAM 大约是 2—3 个周期;而 DDR RAM 则是 4—5 个周期。在DDR 中,真正的 CAS 延迟时间则是 2—2.5 个执行周期。RAS-to-CAS 的时间,则视技术而定,大约是 5—7 个周期,这也是延迟的基本因素。
CL 设置较低的内存,具备更高的优势,这可以从总的延迟时间来表现。内存总的延迟时间有一个计算公式,总延迟时间=系统时钟周期×CL模式数+存取时间(tAC)。首先,来了解一下存取时间(tAC)的概念。tAC 是 Access Time from CLK 的缩写,是指最大 CAS 延迟时的最大数输入时钟,是以纳秒为单位的,与内存时钟周期是完全不同的概念,虽然都是以纳秒为单位。存取时间(tAC)代表着读取、写入的时间,而时钟频率则代表内存的速度。
举个例子,来计算一下总延迟时间。比如,一条 DDR333 内存,其存取时间为 6ns,其内存时钟周期为 6ns(DDR内存时钟周期=1X2/内存频率,DDR333 内存频率为 333,则可计算出其时钟周期为 6ns)。我们在主板的 BIOS 中,将其 CL 设置为 2.5,则总的延迟时间=6ns X2.5+6ns=21ns。而如果 CL 设置为 2,那么总的延迟时间=6ns X2+6ns=18ns,就减少了 3ns 的时间
从总的延迟时间来看,CL 值的大小起到了很关键的作用。所以,对系统要求高和喜欢超频的用户,通常喜欢购买 CL 值较低的内存。目前,各内存颗粒厂商除了从提高内存时钟频率来提高 DDR 的性能之外,已经考虑通过更进一步的降低 CAS 延迟时间,来提高内存性能。不同类型内存的典型 CL 值并不相同。例如,目前典型 DDR 的 CL 值为 2.5 或者 2,而大部分 DDR2 533 的延迟参数都是 4 或者 5,少量高端 DDR2 的CL 值可以达到 3。
不过,并不是说 CL 值越低性能就越好,因为其它的因素会影响这个数据。例如,新一代处理器的高速缓存较有效率,这表示处理器比较少地直接从内存读取数据。再者,列的数据会比较常被存取,所以 RAS-to-CAS 的发生几率也大,读取的时间也会增多。最后,有时会发生同时读取大量数据的情形,在这种情形下,相邻的内存数据会一次被读取出来,CAS 延迟时间只会发生一次。
选择购买内存时,最好选择同样 CL 设置的内存。因为不同速度的内存,混插在系统内,系统会以较慢的速度来运行,也就是当 CL 2.5 和CL 2 的内存同时插在主机内,系统会自动让两条内存都工作在 CL 2.5 状态,造成资源浪费。
2、ECC 校验
ECC 内存即纠错内存,简单的说,其具有发现错误,纠正错误的功能,一般多应用在高档台式电脑/服务器及图形工作站上,这将使整个电脑系统在工作时更趋于安全稳定。
内存是一种电子器件,在其工作过程中难免会出现错误,而对于稳定性要求高的用户来说,内存错误可能会引起致命性的问题。内存错误根据其原因,还可分为硬错误和软错误。硬件错误是由于硬件的损害或缺陷造成的,因此数据总是不正确,此类错误是无法纠正的;软错误是随机出现的,例如在内存附近突然出现电子干扰等因素,都可能造成内存软错误的发生。
为了能检测和纠正内存软错误,首先出现的是内存“奇偶校验”。内存中最小的单位是比特,也称为“位”,位有只有两种状态,分别以 1和 0 来标示,每 8 个连续的比特叫做一个字节(byte)。不带奇偶校验的内存,每个字节只有 8 位,如果其某一位存储了错误的值,就会导致其存储的相应数据发生变化,进而导致应用程序发生错误。而奇偶校验就是在每一字节(8 位)之外又增加了一位作为错误检测位。在某字节中存储数据之后,在其 8 个位上存储的数据是固定的,因为位只能有两种状态 1 或 0,假设存储的数据用位标示为 1、1、1、0、0、1、0、1,那么把每个位相加(1+1+1+0+0+1+0+1=5),结果是奇数。对于偶校验,校验位就定义为 1,反之则为 0。对于奇校验,则相反。当 CPU 读取存储的数据时,它会再次把前 8 位中存储的数据相加,计算结果是否与校验位相一致。从而,一定程度上能检测出内存错误。奇偶校验只能检
测出错误,而无法对其进行修正,同时,虽然双位同时发生错误的概率相当低,但奇偶校验却无法检测出双位错误。
ECC(Error Checking and Correcting,错误检查和纠正)内存,它同样也是在数据位上额外的位存储一个用数据加密的代码。当数据被写入内存,相应的 ECC 代码与此同时也被保存下来。当重新读回刚才存储的数据时,保存下来的 ECC 代码就会和读数据时产生的 ECC 代码做比较。如果两个代码不相同,他们则会被解码,以确定数据中的那一位是不正确的。然后这一错误位会被抛弃,内存控制器则会释放出正确的数据。
被纠正的数据很少会被放回内存。假如相同的错误数据再次被读出,则纠正过程再次被执行。重写数据会增加处理过程的开销,这样,则会导致系统性能的明显降低。如果是随机事件而非内存的缺点产生的错误,则这一内存地址的错误数据会被再次写入的其他数据所取代。
使用 ECC 校验的内存,会对系统的性能造成不小的影响。不过,这种纠错对服务器等应用而言,是十分重要的。带 ECC 校验的内存价格,比普通内存要昂贵许多。