1.先入先出,新写入的块取代最先存放到Cache中的旧块。
2.随机替代,新写入的块随机地取代Cache中的旧块。
3.最近、最不常用替代方式(LRU,Least Recent Used),新写入的块将取代Cache中最少被CPU访问的旧块。
不难看出,第三种方式的效率最高,能有效地降低失误率,因此这也是目前大多数Cache所采用的块替代方式。此外,在CPU的读取操作中,Cache中的数据与主内存上的数据是一致的。但是当CPU向Cache写入新的数据时,则会出现Cache与主内存之间数据不一致的情况。解决的方法有两种: 1.写通(Write through)当CPU向Cache写入数据时,同时也把数据写入主内存,或同时把数据写到一个缓冲器中,待CPU空闲时再把数据写入主内存。此方式简单可靠,但由于CPU每次写入数据时都要同时对主内存的相应数据进行刷新,因而速度较慢。
2.写回(Write back)
当CPU要进行写入操作时,只把数据写入Cache,而不直接写入主内存。这时,Cache与主内存之间会出现暂时不一致的数据块。当Cache中的不一致数据块将要被替代时,再把数据写回主内存,从而使Cache中的数据与主内存中的数据又再保持一致。在此方式下,需要在Cache中加入一个控制位(Dirty bit),若Cache中的某数据块是由CPU写入的,则控制位=1,否则控制位=0。发生块替代时,Cache先检查被替代块的控制位,若控制位=0,则无需把内容写回主内存,若控制位=1,则执行写回操作。这样做的好处是当CPU多次刷新同一数据块时,只需把最后的结果写回主内存即可,从而避免了重复写入,因而具有较高的效率。在早期版本的BIOS中,用户还可以对采用写通方式还是写回方式进行设置,但在新版本的BIOS中已取消了这一设置。
以上数据写入都是由CPU执行的,但若是DMA的系统,由于其它设备也可能向主内存写入数据,这时同样会造成Cache中的数据与主内存数据不一致。所以,目前个人计算机系统大多采用了一种称为Non-Cacheable Block(非可Cache块)的解决方法。其原理是在主内存中开辟一块专门的区域,所有对内存直接进行写入操作的设备都只能把数据写入该区域。同时,该区域中的内容不会被写入Cache中,因此Cache中的数据与Non-Cacheable Block 中的数据互不干扰,也就不会发生不一致的情况。
注:DMI(Desktop Management Interface桌面管理接口)是用来让系统保存自身及外围设备相关资料的应用程序。通过DMI可以在操作系统级查询系统配置信息,而不用进入BIOS,包括CPU、内存、I/O扩充插槽等。DMI可以将上述资料存储在BIOS中的特定位置,也可以利用DMI对资料库中系统配置情况作出修改以适应不同环境的系统需求。主板上的BIOS会尽可能地收集系统信息,将它存在主板上Flash EPROM中一个4K的小块中,DMI可以恢复数据库中的系统信息―这个数据库叫作MIFD(Management Information Format Database)。该BIOS允许动态实时更新DMI信息,DMI还允许在手工加入BIOS时不能探测到如使用者姓名、销售商、计算机编号等信息。Flash EPROM与Flash ROM的作用相类似。
上面说明了Cache的工作方式。在实际应用中,还有异步与同步Cache之分,这也是高速缓存的工作方式。在异步Cache工作方式下,CPU每次访问Cache的开始时都需要额外消耗一个时钟周期来查找特征位。同步Cache则是把按地址进行查找的过程分配到两个以上的时钟周期上完成。在第一个时钟周期内,Cache先将地址存放到一个寄存器中,而在第二个时钟周期内,Cache再把把数据传送给CPU。由于地址已被保存在一个寄存器中,所以同步Cache可以在CPU读取前一次数据的同时接收下一个数据地址,而不必另花时间来接收附加地址。目前大多数主板所采用的同步Cache称为管道突发式(Pipelined burst)Cache。能更加快速地访问从内存中读取的连续数据。
Cache可分为L1 Cache与L2 Cache两部分。这也就是BIOS设置中的Internal Cache(内部Cache)与External Cache(外部Cache)。L1 Cache介于CPU与L2 Cache 之间,而L2 Cache 则介于L1 Cache与主板之间,上面所述的Cache就是前面的L2 Cache。
注:过去L1Cache已集成到CPU内部,而L2 Cache则焊接在主板上,早期的奔腾CPU已把L2 Cache集成在芯片上,这样L2 Cache将与CPU工作在同一频率上,从而实现了真正的零等待。但在奔腾 II中,Intel采用了既兼顾成本,又考虑性能的折衷方案:将CPU与L2 Cache分开,但又焊接在同一块电路板上,并一起封装,L2 Cache的工作频率是CPU主频的一半。这就是有人把奔腾Pentium II称为奔腾pro加MMX的原因。而奔腾赛扬(Celeron)处理器为降低成本,取消了芯片上的L2 Cache,因此有人把赛扬称为简装奔腾II。而在赛杨300A中,又加入了128K L2
|