什么是高速跟踪缓存?
1,缓存的原因。
Cache的出现主要是为了解决CPU运行速度和内存读写速度的矛盾,因为CPU运行速度比内存读写速度快很多,会让CPU花费很长时间等待数据到达或者将数据写入内存。为了减少这种情况,人们想到了使用Cache,它使用一种特殊的静态内存,读写速度比系统内存快得多。当系统工作时,一些运行时频繁访问的数据会从系统内存读入缓存,CPU会先读取或写入数据到缓存中。如果缓存中没有需要的数据(或者缓存已满,无法再写入),就会读写系统内存,缓存空闲时也会和内存交换数据。其本质是在慢速DRAM和快速CPU之间插入一个速度更快、容量更小的SRAM,起到缓冲的作用,让CPU以更快的速度访问SRAM中的数据,提高系统的整体性能,而不会把系统成本抬得太高。
2.缓存的工作原理
缓存的工作原理是基于计算机程序访问的局部性。对大量典型程序的分析表明,在很短的时间间隔内,程序产生的地址往往集中在很小范围的内存逻辑地址空间内。对这些地址的访问往往集中在时间上。数据分布和工作单元的选择可以使内存地址相对集中。这种频繁访问本地内存地址而很少访问这个范围之外的地址的现象叫做程序访问局部性。根据程序局部性原理,为缓存的存在提供了理论依据。基于这一原理,系统不断从内存中读取与当前指令集相关联的后续小指令集到缓存中,然后高速传输到CPU,从而实现速度匹配。
3.高速缓存的层次结构
CPU cache是分层结构的,一般由L1和L2组成。一般L1缓存最快,最接近CPU核,但容量较小,而L2缓存稍慢,但容量较大。高速缓存的分层结构的主要原因是,在典型的一级高速缓存系统中,80%的内存应用程序在CPU内部,只有20%的内存应用程序在处理外部内存。这20%的外部存储器应用中的80%处理二级高速缓存。因此,采用层级结构将更有利于效率的提高和成本的合理分配。
这种分层高速缓存布局有助于缩小处理器和系统内存速度之间不断增长的差距。处理器速度每年提升50%左右,而DRAM访问速度每年只提升5%。由于性能不匹配的加剧,CPU会增加三级甚至四级缓存。
4、缓存的组成
目前Cache基本都是用SRAM内存,是英文Static RAM的缩写。它是一种具有静态存储器访问功能的存储器,不需要刷新电路就可以保存存储在其中的数据。不像DRAM存储器不需要刷新电路,DRAM必须每隔一段时间刷新充电一次,否则内部数据就会消失,所以SRAM性能高,但也有缺点,就是集成度低,同样容量的DRAM存储器可以设计成小体积,但SRAM需要大体积,这也是目前缓存容量不能做得太大的重要原因。其特点总结如下:优点,节能,速度快,不需要配合存储器刷新电路,可以提高整体工作效率。缺点:集成度低,同等容量体积大,价格高,少量用于关键系统提高效率。
二、CPU缓存的发展历史
缓存最初是用在CPU领域,现在也是CPU领域应用最广泛最深入的。先简单说一下缓存随着CPU的发展而变化的历史过程。
1,80486开始出现内部缓存。
缓存的概念在PC诞生初期是不存在的。因为CPU的主频很低,DRAM的访问时间甚至比CPU还要快,所以不需要缓存。80386时代开始出现外部缓存。Cache正式出现在CPU中是在80486时代。80486实际上是由80386加80387数字协处理器组成,频率更高,内部有8kB缓存。80486芯片包含8kB缓存,用于存储指令和数据。同时,80486还可以使用处理器外的二级缓存,提高系统性能,降低80486所需的总线带宽。
2.缓存技术在前朝时代发展迅速。
Pentium不仅将L1缓存与L2缓存分离,而且由于Pentium处理器采用了具有两条并行整数流水线的超标量结构,因此需要对命令和数据进行双重访问。为了防止这些访问相互干扰,Intel将486上使用的内部缓存分为两个独立的8kB代码缓存和8kB数据缓存,可以同时访问。这种双通道高速缓存结构减少了因争用高速缓存而导致的冲突,并提高了处理器效率。奔腾的缓存也采用回写的写入方式,相比486的直通写入方式可以提高缓存的命中率。此外,采用了一种称为MESI的缓存一致性协议,保证了多处理器环境下的数据一致性。奔腾MMX增加了L1的容量,改进了相关算法。
3.嵌入式L2缓存出现在奔腾Pro中。
要想让奔腾Pro的性能超越奔腾,就要用创新的设计方法。奔腾Pro使用大小为512kB的嵌入式L2高速缓存。此时,L2已经通过导线直接连接到CPU,这样做的好处是减少了对L1缓存的需求。L2缓存与CPU同步运行。当L1缓存未命中时,将立即访问L2缓存,不会有额外的延迟。当要访问的信息不在缓存中时,为了进一步降低性能损失,奔腾Pro的L1和L2都被设计为解锁。即当任何缓存中没有CPU需要的信息时,不妨碍后续访问缓存的处理。但由于当时的CPU制造工艺,奔腾Pro的嵌入式L2缓存良品率太低,生产成本太高,奔腾Pro成为了昙花一现的过渡产品。
4.奔腾ⅱ的双独立总线
奔腾ⅱ是奔腾Pro的改进版本,具有MMX指令、动态执行技术和双独立总线结构。奔腾ⅱ也有两级缓存,L1为32kB(指令缓存和数据缓存各为16kB),是奔腾Pro的两倍。L2为512kB。
奔腾II与奔腾Pro在L2缓存上的主要区别在于,L2缓存不再在嵌入式芯片上,而是通过专用的64位缓存总线与CPU相连,与其他部件组装在同一基板上,即“单面接触盒”。从处理器到主存储器的双独立总线结构是L2高速缓存总线和系统总线。奔腾ⅱII处理器可以同时使用这两条总线,与单总线结构的处理器相比,处理器可以访问两倍以上的数据。
5.奔腾ⅲL2缓存的进一步改进。
Pentiumⅲ也是基于Pentium Pro结构,在原MMX多媒体指令的基础上增加了70多条多媒体指令。它使用动态执行技术,采用双独立总线结构。奔腾ⅲ有32kB未锁定的L1高速缓存和512kB未锁定的L2高速缓存。L2可扩展至1 ~ 2MB,内存管理更加合理,能够有效处理大于L2缓存的数据块,使CPU、缓存、主存访问更加合理,提升系统整体性能。在执行高数据流程序时,高效的缓存管理使得Pⅲ避免了对L2缓存的不必要访问。由于消除了缓冲失败,多媒体和其他时间敏感操作具有更高的性能。对于可缓存的内容,P ⅲ通过提前将期望的数据读入缓存来提高速度,提高了缓存的命中率,减少了访问时间。
第三,缓存在其他配件中
本质上,Cache是一种针对高速设备和低速设备的速度匹配技术,不仅用于提高CPU读写内存的速度,还广泛应用于其他计算机配件中。在其他外围设备与内存的慢速数据交换中,甚至在网络通信中,都需要用到缓存技术。推而广之,Cache的速度匹配技术可以用在传输速度差异很大的设备之间。
1,主板缓存
在奔腾II推出之前,CPU只有内部集成的L1缓存,L2Cache放在主板上。奔腾时代,高速大容量的同步PB SRAM(流水线突发SRAM)多用于主板上,一般为256KB或512KB。那时候主板上还有Tag SRAM的概念。
标签SRAM,即标记静态随机存取存储器,是在缓存系统中与缓存配合使用的附加SRAM。它也是一个缓存,只在缓存电路中用来记录地址数据。当CPU要读取主存储器中某个地址的数据时,会先在缓存电路中寻找,搜索并比较缓存系统中标签SRAM记录的地址数据。当具有该地址的数据也存储在高速缓存中时,高速缓存总线的仲裁控制电路将把数据读回到CPU。如果通过比较标签SRAM记录的地址数据无法找到该数据的地址,则CPU将从主存储器中读取数据。所以Tag SRAM和cache的命中率有很大的关系。由于L2缓存现在集成在CPU中,在PII之后,主板上将没有集成的缓存。
2.CPU缓存的应用
至于CPU缓存的发展历史,我们已经讲过了。本文主要介绍主流CPU使用cache的现状。
像最新的诺斯伍德P4处理器,不仅采用0.13微米工艺生产,架构也有所改变,提高了运算效率(指令周期)。L2缓存的容量从旧P4的256K增加到512K。性能提高了约10%。
图拉丁赛扬的二级缓存采用了全速256KB(8路)的二级缓存,大小与奔腾III相当,对CPU性能的提升非常有帮助。图拉丁酷睿赛扬的性能非常好,很大程度上得益于256KB的全速缓存。这也充分体现了缓存对电脑配件性能的影响。
AMD的Morgan实际上与Palomino的duron具有相同的规格,但CPU内部的L2缓存是不同的。最引人注目的一点是对缓存算法的改进。Morgan包含一个基于硬件的数据预读规则。这个功能是CPU处理完数据后,预读设备可以猜测CPU需要哪些数据。如果这些数据不在缓存中,那么预读设备会自动到主内存中检索这些数据;如果这些数据已经存在于缓存中,那么CPU将更快地获取这些数据。
Athlon XP无疑是AMD今年最成功的产品。它采用类似于奔腾4的硬件预读技术——执行trace cache,将处理器可能需要的数据提前从主存读入缓存。这个过程可以明显提高系统总线和内存带宽的利用率,进而提高系统性能。
主要用于服务器的Merced对缓存的要求更高。因此,lntel在芯片中开发了新的缓存,并增加了L1缓存的容量,以平衡CPU和DRAM之间的速度。因此,在Merced芯片上的执行单元旁边设置了另一个高速缓存,称为L0高速缓存,它属于指令/数据分离类型。由于L0Cache在物理上比L1更靠近执行单元,布线距离缩短,所以L0Cache与执行单元之间的数据交换速度比L1更快,可以进一步提高工作频率。同时芯片内部要配置1MB以上的大容量L1缓存。芯片内部缓存比外部缓存更容易提高与执行单元的数据传输速度。
3.硬盘缓存
在PC机的磁盘系统中,缓存也得到了广泛的应用。为了提高内存对硬盘的读写速度,需要建立磁盘缓存,但硬盘缓存不需要昂贵的SRAM,普通DRAM即可,因为DRAM内存的访问速度对CPU来说慢,对磁盘来说快。这是因为磁盘存储系统包含了磁头的机械运动,而机械运动无法与传输电信号的电子速度相比。以前硬盘集成的缓存只有512K左右,现在硬盘普遍把缓存容量提高到2M以上,有的产品甚至达到8M。由于硬盘缓存不需要使用高速SRAM,所以除了内部集成SDRAM之外,我们还可以在系统主存中划出一块区域作为专门的磁盘缓冲区,采用一定的数据结构来实现磁盘访问的二级缓存技术。硬盘缓存的工作过程和原理和CPU缓存类似,都是把要访问的数据整块复制到缓存区,然后内存去缓存逐个读取数据。由于RAM空间中的数据传输比RAM与磁盘之间的数据传输要快得多,因此提高了系统的访问速度。
下面介绍WD1000BB-SE 8MB缓存硬盘。由于存储器的读写速度远高于硬盘,大容量缓存可以有效提高存储器的数据传输速度。但目前市面上卖的硬盘大多只有512K - 2MB 2MB缓存。西数前段时间推出的7200 rpm,100G硬盘特别版WD1000BB-SE,每盘存储33G,接口类型ATA100,平均寻道时间8.9ms,这个参数相比其他硬盘并不特别,但是WD1000BB-SE直接从2MB提升了硬盘的缓存容量。引起了业内的广泛关注。经过多次评测,由于缓存容量的增加,这款IDE接口硬盘的实际性能已经接近或超过了很多10000 rpm SCSI接口硬盘,成为IDE硬盘中的速度王。这也充分体现了缓存对电脑配件性能的影响。
4、刻录机缓存
缓存容量的大小是衡量光盘刻录机性能的重要技术指标之一。录制时,必须先将数据写入缓存,然后录制软件从缓存中调用要录制的数据,后续数据同时写入缓存,以保持要写入的数据组织良好,连续传输。如果后续数据没有及时写入缓冲区,传输中断会导致记录失败。所以缓冲容量越大,录制成功率越高。市面上的CD刻录机缓存容量一般在1mb到4mb之间,最大的是8M缓存。尤其对于带IDE接口的刻录机,缓存容量非常重要。增加缓存不仅有利于记录仪的稳定工作,也有利于降低CPU占用率。简而言之,缓存大小对于刻录机来说非常重要,缓存越大,刻录时就越稳定。目前市面上有多种8M缓存的刻录机,配合其他防刻字技术,有效防止“缓存欠载”导致的刻录失败问题。
普通光驱也有内置缓存。当然它的作用没有刻录机里那么重要,主要是提高读盘效率,降低CPU占用率,所以容量比较小,一般只有512K。
5.其他设备的缓存
其他PC配件中也有缓存应用。例如,在显示系统中,由于3D应用的快速发展,现在显卡上的显示内存普遍达到32M以上,甚至高达128M,所以缓存技术,如前台缓存、后台缓存、深度缓存、纹理缓存等被广泛使用。
现在有了所谓的带缓存的CDRAM(Cache DRAM),它是集成在内存芯片上的专门构造的SRAM。如果发展得好,可能几年后会成为主流内存。此外,即使在声卡、RAID卡和SCSI卡中,也有缓存。
第四,缓存的调整和应用
1.BIOS中与缓存相关的选项
视频光盘的阴影
ShadowRAM(或ROMShadow)是一种提高系统效率的特殊缓存技术。它将系统主板上的系统ROMBIOS和适配卡上的显卡ROMBIOS复制到系统RAM内存中运行,其地址仍然使用它们在上层内存中占用的原始地址。更确切地说,是从扩展内存中取出一部分物理存储空间,并赋予rom的原始地址,这部分扩展RAM代替了原来的ROM。因为ROM采用静态CMOS电路,存取速度在200ns左右,而系统内存RAM采用动态CMOS电路,存取速度几十ns,快了好几倍。将存储在ROM(基本输入输出例程,在系统运行时调用非常频繁)中的BIOS代码复制到系统RAM中,可以提高系统运行和显示的速度和效率。
2)CPU内部缓存
CPU内部快取是否开启,一般设置为启用。Enternal Cache:是否使用主板缓存,一般设置为Enable。CPU L2缓存ECC检查:CPU的L2缓存Ecc检查,可以设置为禁用。
从字面上看,“CPU内部缓存”和“外部缓存”分别指CPU的内部缓存和外部缓存,但更准确的说应该是一级缓存和二级缓存。Socket/Super 7架构的CPU中只有一级缓存,二级缓存放在主板上,这就是“内部”和“外部”这两种表述的由来。对于Pⅱ、Pⅲ、K6-ⅲ等CPU来说,二级缓存也是集成在CPU中的,内外表述都不太准确,所以一些Slot 1主板对其进行了修改,改名为“CPU级”。除非打开后系统崩溃,否则这两个选项应该设置为Enabled,以加快CPU的内存读取速度。
3)L2缓存的延迟
在BIOS中,我们还可以调整二级缓存的延迟,其中二级缓存延迟有16个值(1~15)。理论上,该值越小,延迟时间越短,性能越高。如果该值设置过小,二级缓存可能会停止工作,不仅系统性能会急剧下降,还会发生崩溃。L2缓存对内存带宽有很大的影响。就算CPU频率再高,其他设备跟不上也没用。增加缓存延迟可以使机器更加稳定,避免上述情况。
4)系统BIOS可缓存
“系统BIOS可缓存”、“视频BIOS可缓存”和“视频RAM可缓存”分别指定是否可以使用二级缓存来缓存系统BIOS、图形BIOS和显示内存。缓存后,BIOS调用的执行速度和访问显示内存的速度都会加快,最好设置为Enabled。但是,当显示内存可以缓存时,少数显卡可能会出现兼容性问题。此时,考虑将第三项设置为禁用。
2.调整缓存优化系统
如果您的应用程序需要频繁访问硬盘,您可以在扩展或扩展内存中建立一个“直写”磁盘缓存。用户可以在autoexec.bat文件中添加命令行:c:\dos\smartdrv.exe,驱动会自动加载到高端内存中。其磁盘缓冲区的默认值是256KB,您可以更改该值的大小。一般设置为物理内存的1/8左右比较合适。SMARTDRV.EXE,外部设备驱动程序。使用此程序启动或设置磁盘缓存。与Cache不同的是,Cache充分发挥了CPU的速度,而SMARTDRV加快了磁盘的读写速度。在实际应用中。每次应用程序使用磁盘的磁盘扇区数据时,EXT cache驱动程序都会记住这些数据,而不是访问磁盘驱动器,而是访问内存中已经包含这些数据的区域。
一般来说,PC中的Cache主要是为了解决高速设备和低速设备的速度匹配问题,是为了提高系统性能,降低系统成本而采用的技术。随着计算机技术的飞速发展,高速缓存已经成为PC中大多数附件不可缺少的一部分,是衡量系统性能的重要指标。考虑到系统的性价比,缓存的配置在很长一段时间内仍将是PC中的重要技术之一。