清空高速缓冲存储器内容的装置的制作方法

文档序号:6410337阅读:181来源:国知局
专利名称:清空高速缓冲存储器内容的装置的制作方法
技术领域
本发明涉及带有高速缓冲存储器的计算机系统,更具体地说涉及对高速缓冲存储器内容的清空。
暂存处理器用的数据的高速缓冲存储器被广泛地用来提高计算机系统的速度。当前的高速处理器采用大容量的转复制(copy-back)型高速缓冲存储器。
转复制型高速缓冲存储器的特征在于以下方面。当处理器执行存储指令时,被更新的数据并不写入主存储器,而是仅保存在高速缓冲存储器中。有时在下面的三种情况下被更新的数据写回主存储器。
一种情况是新数据必须存储在被更新数据的高速缓冲存储器的高速缓冲块中,这称为替换。另一种情况是在与另一高速缓冲存储器或I/O设备相连的系统总线上发布相关的读命令。第三种情况是由于某些原因必须回写被更新的数据。回写操作也叫作高速缓冲存储器清空操作。
例如,有许多I/O设备不支持相关的读命令。这些I/O设备仅使用非相关的读命令,它们只可以从主存储器中读数据,即使被更新的数据可能存在于高速缓冲存储器中。因此,在处理器使这种I/O设备读适当的数据之前,处理器必须将被更新的数据从高速缓冲存储器中写回主存储器中。
一些检查点/重算计算机系统也需要第三种回写操作。这些系统周期性地在主存储器中写检查点。检查点是这样一种状态,当出现故障时,计算机系统可以从上述状态重新开始数据处理。
当出现故障时,计算机系统将主存储器返回到上一个检查点,并利用记录在主存储器中的信息重新开始处理数据。对这种计算机而言,高速缓冲存储器中所有的被更新数据在每个检查点必须写回到主存储器中。
第三种回写操作在现有技术中是通过影响高速缓冲存储器的处理器指令完成的。
例如,

图1表示在MIPS R4000处理器情况下回写操作的主循环。执行循环一次使高速缓冲存储器的一个高速缓冲块无效。被更新数据(如果有的话)写回到主存储器中,然后高速缓冲块的状态变为无效。
如果高速缓冲块不包含被更新数据时,那么执行循环一次需要六个处理器周期或三个总线周期,如果高速缓冲块包含被更新数据时,需要更多的周期。
由于高速缓冲存储器的容量非常大,所以对高速缓冲存储器的全部高速缓冲块的高速缓冲存储器清空操作需要很长的时间。在这一高速缓冲存储器清空操作期间,处理器不能对任何数据进行处理。
本发明的一个目的是缩短计算机系统的处理器进行高速缓冲存储器清空操作所需的时间。
本发明的再一个目的是提供一种改进了系统性能的高速缓冲存储器清空设备。
本发明的上述目的是通过提供一种清空高速缓冲存储器的内容的计算机系统达到的,该系统包括带有转复制型高速缓冲存储器的处理器,该处理器具有总线窥探功能;主存储器;将处理器与主存储器相连的系统总线;与系统总线相连的监视器装置,用于监视系统总线上的总线命令;对监视器装置作出响应的存储装置,用于当高速缓冲存储器的数据更新时存储对应于被更新数据的物理地址和表示高速缓冲存储器中的数据处于更新状态的状态信息;读出装置,用于当高速缓冲存储器的被更新数据存储在主存储器中时读出存储在存储装置中的状态信息;以及与系统总线相连的命令输出装置,如果状态信息表示高速缓冲存储器中的数据已经被处理器修改,那么该输出装置输出无效总线命令,请求被更新数据从高速缓冲存储器传输到主存储器中。
根据本发明的另一方面提供了一种清空高速缓冲存储器的内容的方法,该方法包括以下步骤监视系统总线上的总线命令;当高速缓冲存储器的数据更新时,在存储装置中存储对应于被更新数据的物理地址和表示高速缓冲存储器中的数据处于更新状态的状态信息;当高速缓冲存储器的被更新数据存储在主存储器中时读出存储的状态信息;以及如果高速缓冲存储器中的数据已经被处理器修改,那么向系统总线输出无效总线命令,请求被更新数据从高速缓冲存储器传输到主存储器中。
从以下详细描述中,本发明的其它目的、特征和优点将变得一目了然。然而应理解,由于本发明的精神和范围内的各种改变和修改对本领域的一般技术人员来说通过阅读以下的详细描述将是显而易见的,所以虽然详细描述和具体例子表示本发明的最佳实施例,但是它们只是为了说明的目的。
图1是说明现有技术的高速缓冲存储器清空操作的程序的一个实施例;图2是根据本发明的一个实施例的计算机系统的框图;图3是说明当计算机系统正常运行时本发明的高速缓冲存储器清空设备的操作的流程图;图4是说明根据处理器的指令本发明的高速缓冲存储器清空设备的操作的流程图;图5是说明本发明的高速缓冲存储器清空设备的操作的流程图;图6是说明本发明的高速缓冲存储器清空设备中的流水线操作的框图;图7是根据本发明的另一个实施例的计算机系统的框图;图8是说明根据本发明的另一个实施例当计算机系统正常运行时高速缓冲存储器清空设备的操作的流程图;图9是根据本发明的再一个实施例的计算机系统的框图;图10是计算机系统的主要部分的框图;图11和12是说明根据本发明的再一个实施例,当计算机系统正常运行时高速缓冲存储器清空设备的操作的流程图。
下面参照附图描述本发明的一个实施例。图2所示的计算机系统具有一个处理器。处理器10具有用于对主存储器12的特定部分内容进行暂时存储的高速缓冲存储器16,高速缓冲存储器16包括多个高速缓冲块17和存储表示高速缓冲存储器16的全部高速缓冲块17的状态信息的高速缓冲存储器标记14,处理器10还具有高速缓冲存储器控制器11,用于控制高速缓冲存储器和高速缓冲存储器标记,并将不干净的高速缓冲块写回到主存储器中。在本申请中,术语“不干净”是指包含已经改变了的数据的高速缓冲块。
包括高速缓冲存储器标记14、高速缓冲存储器16和高速缓冲存储器控制器11的处理器10通过系统总线18与主存储器12相连。高速缓冲存储器清空设备与系统总线相连18。
当处理器10改变高速缓冲存储器16中的数据状态时,处理器10将高速缓冲存储器16中数据改变的状态和物理地址通知与系统总线18相连的其它设备。此外,当从其它设备报告在另一高速缓冲存储器中数据的改变状态,并且存在符合通知的地址的被高速缓冲存储的数据时,处理器10对高速缓冲存储的数据执行任何所需的操作。例如,利用窥探功能可以保持高速缓冲存储器的数据的相关性。
处理器10具有转复制型的窥探(snoop)功能。当存储在高速缓冲存储器16中的数据已经由处理器10改变时,处理器10产生总线命令,使存储在其它处理器的高速缓冲存储器中的共享数据无效。
当处理器10从另一处理器接收无效总线命令并且目标数据存在于高速缓冲存储器16中时,如果处理器10包含对应于目标地址的数据,那么处理器10使存储在高速缓冲存储器16中的共享数据无效。此处所用的术语“目标”数据是指由另一处理器指明的共享数据。另外,如果对应于目标地址的高速缓冲存储器数据由处理器10改变的话,则处理器10向其它处理器或主存储器12输出数据。
如图2所示,本发明的高速缓冲存储器清空设备20具有主控制器38、总线接口电路22、外部标记控制器24、外部标记存储部件26、外部标记读部件28、多路转接器30、外部标记检查部件32、无效总线命令产生部件34和FIFO 36。
高速缓冲存储器清空设备20中的总线接口电路22是系统总线18的一个接口,并具有以下三个功能。第一,总线接口电路22接收系统总线18上的使高速缓存的数据的状态变化无效的无效总线命令,并将该无效总线命令发送给外部标记控制器24。无效总线命令包括目标数据的物理地址和执行处理的命令。第二,总线接口电路22接收来自高速缓冲存储器清空设备20的命令,并将其发送给主控制器38。来自高速缓冲存储器清空设备20的总线命令包括用来读或写主控制器38的内部寄存器的访问命令。例如,内部寄存器包括起始地址寄存器和循环计数寄存器。第三,总线接口电路22接收经过FIFO 36的由无效总线命令产生部件34产生的无效总线命令(fsh-cmd),并将该无效总线命令输出到系统总线18上。
外部标记控制器24具有以下模拟高速缓冲存储器16的高速缓冲标记的三个功能。第一,外部标记控制器24将标记地址(w-addr)经多路转接器30送至外部标记存储部件26,并从外部标记存储部件26读相应的标记。第二,外部标记控制器24解释通过总线接口22提供的总线命令。外部标记控制器24根据从外部标记存储部件26读出的老的标记和解释,产生一个新的标记。第三,外部标记控制器24将标记地址(w-addr)输出至外部标记存储部件26,并将新的标记(w-tag)存储在该外部标记存储部件中。这一新的标记与存储在和处理器10相连的高速缓冲存储器标记14中的标记相同。外部标记控制器24根据处理器高速缓冲存储器从总线命令的内容和外部标记存储部件26的内容产生一个新的标记,以便在外部高速缓冲存储器标记存储部件26中保持与高速缓冲存储器标记14中的标记相同的标记信息。
外部标记存储部件26存储由外部标记控制器24产生的标记(w-tag)。标记的内容根据处理器高速缓冲存储器控制结构而改变。例如,标记的内容可以包括物理地址,代表误差检测和校正的(修改/排它/共享/无效)和ECC(误差校正码)。
由于ECC与本发明无关,所以此处省略对它的描述。在本发明中,高速缓冲块是否具有不干净的状态(修改)是重要的。因此,外部标记存储部件26可以只存储一位来表示不干净状态。以后为了使对本实施例的描述简单,假定在外部标记存储部件26中只存储表示不干净状态的一位。然而,在外部标记存储部件26中可以存储几位的全部状态。
当采用MESI协议时,处理器10不发布通知从E(排它)状态到M(修改)状态的状态信息的总线命令。这是因为在与系统总线18相连的其它高速缓冲存储器中不存在带有相同地址的高速缓冲块。在这种情况下,高速缓冲存储器清空设备20不知道高速缓冲块的标记已经改变。为了避免这种情况,当来自处理器10的读总线命令被输出到系统总线18上时,总线接口电路22作出响应,表示数据正被另一高速缓冲存储器共享。处理器10根据这一响应将高速缓冲块放在共享状态(S)。结果,当处理器改变高速缓冲块时(从S(共享)状态变到M(修改)状态),处理器10将无效总线命令输出到系统总线18上。高速缓冲存储器清空设备20接收该无效总线命令,了解到高速缓冲数据的状态已经从S(共享)变到M(修改),该状态记录在外部标记存储部件26中。
外部标记存储部件26主要进行以下两种操作。第一,外部标记存储部件26接收来自外部标记控制器24的地址(w-addr)和标记(w-tag),它们被写入外部标记存储部件26。第二,外部标记存储部件26接收经多路转接器30的来自外部标记读部件28的地址(r-addr),读来自外部标记存储部件26的标记(r-tag),并将其输出至外部标记检查部件32。
外部标记存储部件26的存储量是与系统总线18相连的高速缓冲存储器的全部标记的总和。由于高速缓冲存储器清空设备20不需要存储高速缓冲数据,所以外部标记存储部件26的存储量与高速缓冲存储器16的容量相比小许多。
外部标记读部件28产生标记地址(r-addr),以便从外部标记存储部件26读标记,并将它经多路转接器30输出至外部标记存储部件26。外部标记读部件28经主控制器38接收高速缓冲存储器清空操作的起始地址和循环计数。
外部标记读部件28进行以下操作。第一,外部标记读部件28读起始地址和循环计数。如果读出的循环地址是零,那么外部标记读部件28将零存储在主控制器38的清空起始位,并且高速缓冲存储器清空操作结束。如果循环计数值不是零,那么外部标记读部件28将起始地址(r-addr)经多路转接器30输出至外部标记存储部件26。外部标记读部件28根据高速缓冲块的大小使起始地址增加,并将地址写入主控制器38的起始地址寄存器。起始地址是作为外部标记存储部件26的高速缓冲块的数目的模数给出的。这就是说,当起始地址从外部标记存储部件26的最大地址增加时,起始地址返回到外部标记存储部件26的最小地址。外部标记读部件28减小循环计数值。如果循环计数变为零,那么开始操作前的原始循环计数写入循环计数寄存器,而零写入清空起始位。然后高速缓冲存储器清空操作结束。如果递减的循环计数不是零,那么外部标记读部件28将递减的循环计数写入主控制器38的循环计数寄存器。
多路转接器30选择外部标记控制器24的写标记的请求和外部标记读部件28的读标记的请求。如果同时产生这两个请求,那么多路转接器30将优先选择外部标记控制器24的标记写请求。
外部标记检查部件32参照从外部标记存储部件26读出的标记(r-tag)判断相应的高速缓冲块是否为不干净。外部标记检查部件32输出高速缓冲存储器清空命令产生请求(r-fsh)和对应于从外部标记存储部件26中读出的标记(r-tag)中的不干净状态的标记的物理地址。如果标记不表示不干净,那么外部标记检查部件32不输出高速缓冲存储器清空命令产生请求(r-fsh)。
无效总线命令产生部件34接收带有从外部标记检查部件32输出的物理地址tag(r-fsh)的高速缓冲存储器清空命令请求,并输出利用接收的物理地址tag清空相应的高速缓冲块的高速缓冲存储器清空命令(flush)。例如,高速缓冲存储器清空命令可以是相关的总线无效命令。
FIFO 36用来消除由于流水线操作引起的、在几乎每个周期从无效总线命令产生部件34输入的高速缓冲存储器清空命令(flush)之间的时间差,并在每几个周期将高速缓冲存储器清空命令(fsh-cmd)输出到系统总线18上。当积累的高速缓冲存储器清空命令超过FIFO 36的恒定的容量时,FIFO0 36暂时停止外部标记读部件28的操作,以便控制高速缓冲存储器清空命令的产生。如果积累的高速缓冲存储器清空命令降到FIFO 36的恒定容量以下,那么FIFO 36重新开始外部标记读部件28的操作。
主控制器38根据由处理器10经系统总线18给出的命令(cmd)控制高速缓冲存储器清空设备20的每一部分。主控制器38包括起始地址寄存器、循环计数寄存器和清空开始位(未示出)。主控制器38具有以下功能。第一,主控制器38对外部标记读部件28、外部标记检查部件32以及无效总线命令产生部件34和FIFO 36进行初始化。第二,主控制器38设置给外部标记读部件28的标记地址(r-addr)的初始值(起始地址),并将循环计数分别置入起始地址寄存器和循环计数寄存器。第三,当清空起始位由处理器10设置为“1”时,主控制器38启动外部标记读部件28,以便开始高速缓冲存储器清空操作。第四,主控制器38控制外部标记读部件28,以便停止产生高速缓冲存储器清空命令。在这种情况下,在外部标记读部件28停止操作之前,由外部标记读部件28将清空起始位设置为“0”。第五,主控制器38从起始地址寄存器和循环计数寄存器读起始地址和循环计数。读出的值被送至处理器10。除了以上功能,主控制器38还能将产生的清空命令的数目传给处理器10,以及通过采用总线时钟分频器在每几个周期启动外部标记读部件28。
接下来参照图3说明本实施例的操作情况。当计算机系统正常工作时,总线接口电路22窥探系统总线18上的总线命令,并将窥探的结果送至外部标记控制器24(步骤A1)。
外部标记控制器24识别总线接口电路22给出的总线命令的种类(步骤A2)。当它是表示高速缓冲存储器已经变化的状态的总线命令时(步骤A3),外部标记控制器24产生一个新的标记(w-tag)。根据标记地址(w-addr),外部标记控制器24将新的标记存储在外部标记存储部件26中(步骤A4)。外部标记控制器24将对应于高速缓冲块和高速缓冲存储器的状态的物理地址存储在外部标记存储部件26中。根据处理器的结构,高速缓冲存储器的状态的变化是不同的。然而,例如可以如下来确定R4000中的高速缓冲存储器的状态。
(表1)
相关读无效=如果当处理器将数据写入高速缓冲块中时最初在高速缓冲块中没有相应的数据,那么处理器从主存储器中读数据,将该数据存入高速缓冲存储器中,并改变高速缓冲块中的数据。该处理器通知其它处理器相关的无效命令。如果其它处理器在其它高速缓冲存储器中保持相应的数据,那么其它处理器使高速缓冲块的数据无效。
相关无效=如果处理器改变高速缓冲存储器中的数据,那么该处理器通知其它处理器,于是其它处理器将放弃它们的高速缓冲存储器中响应的数据。
相关读=如果在带有改变状态的高速缓冲存储器中存储相应的数据,那么处理器从主存储器或从其它处理器的高速缓冲存储器中读数据。
相关无效(从高速缓冲存储器清空设备)=以R4000为例,本发明的高速缓冲存储器清空设备向处理器的高速缓冲存储器的控制器输出高速缓冲存储器清空命令。如果高速缓冲存储器将相应的数据保持在修改状态,那么该数据被写回到主存储器。
写(带有写强制的读)=将高速缓冲存储器的内容写回到存储器中。
下面参照图4说明高速缓冲存储器清空设备20执行高速缓冲存储器清空的操作。
首先,当高速缓冲存储器清空设备20复位时,主控制器38将系统预置值设置在起始地址寄存器和循环计数寄存器中。这样,主控制器38将高速缓冲块的一个最小地址设置为起始地址,并将高速缓冲块的数目设置为循环计数。
处理器10输出总线命令,用于设置主控制器38的内部寄存器中的值。如果总线接口电路22接收的总线命令是用于设置主控制器38中内部寄存器的设置操作(步骤A5),那么主控制器38根据总线命令的内容,将该值存储在内部寄存器中(步骤A7)。于是,主控制器38根据来自处理器10的总线命令,设置起始地址寄存器和循环计数寄存器(步骤B1-B2)。
另一方面,如果接收的总线命令是针对高速缓冲存储器清空设备的,而不是在步骤A5中对内部寄存器的设置操作,那么从主控制器38的内部寄存器中读出的数据输出至系统总线18。
处理器10将“1”存储在主控制器38的清空起始位中,以表示高速缓冲存储器清空操作(步骤B3)。如果“1”存储在清空起始位中,那么主控制器38开始高速缓冲存储器清空操作(步骤B4和A8-A9)。
如果需要中断高速缓冲存储器清空操作,那么处理器10将零存储在清空起始位中。对高速缓冲存储器清空设备20的处理返回到图3的步骤A1(步骤B5-B7)。
图5是说明本发明的高速缓冲存储器清空操作的流程图。高速缓冲存储器清空操作按以下方式重复。
为了加速高速缓冲存储器清空操作,本实施例采用流水线处理。即并行执行图6所示的四种操作。
首先,主控制器38确定是否准备流水线操作(步骤C1)。
如果流水线操作准备好,那么外部标记读部件28读清空起始位的值,并将值设置在主控制器38的循环计数寄存器和起始地址寄存器中(步骤C2、C3和C4)。
外部标记读部件28判断清空起始位是否设为“1”(步骤C4、C16)。如果清空起始位设为“1”,那么继续进行高速缓冲存储器清空操作。
此外,外部标记读部件28将起始地址(r-addr)输出至外部标记存储部件26。外部标记读部件28将增加的起始地址存储在主控制器38的起始地址寄存器中(步骤C5)。
再者,外部标记读部件28将减小的循环计数存储在循环计数寄存器中(步骤C3和C13)。如果减小的循环计数不是“0”,那么继续进行高速缓冲存储器清空操作(步骤C14)。
另一方面,外部标记存储部件26读对应于从外部标记读部件28输出的地址(r-addr)的标记(r-tag)。读出的值被输出至外部标记检查部件32(步骤C6-C7)。如果不准备读标记,那么流水线操作暂时停止。
外部标记检查部件32判断对应于标记的高速缓冲块的状态是否为不干净(步骤C8)。如果是的话,那么外部标记检查部件32向无效总线命令产生部件34输出r-fsh命令。
无效总线命令产生部件34产生带有标记物理地址的相关无效命令(高速缓冲存储器清空命令flush),清空相应的高速缓冲块,并将该命令输出至FIFO 36(步骤C9)。如果此时FIFO 36已满,那么停止流水线操作,直到FIfO 36具有空间(步骤C10)。
当高速缓冲存储器清空命令被存储在FIFO 36中时,总线接口电路22获取系统总线18(步骤C11),并将存储在FIFO 36中的高速缓冲存储器清空命令输出至系统总线18(步骤C12)。
上述过程是从高速缓冲存储器清空设备20发布一个高速缓冲存储器清空命令的操作。该过程的重复次数是由循环计数寄存器表示的次数。如果循环计数寄存器减小到“0”(步骤C14),那么外部标记读部件28将主控制器38的清空起始位复位(步骤C15)。结果,主控制器38停止高速缓冲存储器清空操作。
图6表示高速缓冲存储器清空设备20的流水线操作的每一阶段处理。这一操作的过程如下(1)由外部标记读部件28读高速缓冲存储器标记地址(步骤C2);(2)从外部标记存储部件26读r-tag;确定高速缓冲存储器的状态(步骤C7和C8);(3)如果高速缓冲存储器的状态为不干净,那么由无效总线命令产生部件34产生高速缓冲存储器清空命令(步骤C9);以及(4)输出高速缓冲存储器清空命令(步骤C11)。
总之,总线命令占用几个总线周期。如果在一个总线周期可以访问外部标记存储部件26,那么在每个总线周期都可以执行从外部标记读部件28到无效总线命令产生部件34的流水线操作。
这样,当高速缓冲存储器清空命令占用几个总线周期时,流水线操作能够在每个总线周期读出高速缓冲块标记。
由FIFO 36减少所需的总线周期的差异。如果不干净的块的数目小,那么由于FIFO 36未满,所以高速缓冲存储器清空操作所需时间变得等于标记读出时间。
高速缓冲存储器清空时间=高速缓冲块的数目(总线周期)。
因此,与重复高速缓冲存储器清空指令的处理器相比,本发明的第一实施例可以节省许多执行高速缓冲存储器清空操作的时间。在本发明的第一实施例中,通过控制与系统总线18相连的高速缓冲存储器清空设备20,执行上述高速缓冲存储器清空操作。正常操作时,发布到系统总线18上的总线命令由高速缓冲存储器清空设备20监视。高速缓冲存储器清空设备20存储与存储在外部标记存储部件26中的高速缓冲存储器标记14相同的标记。
当进行高速缓冲存储器清空操作时,高速缓冲存储器清空设备20检查标记的状态,并向高速缓冲存储器控制器发布高速缓冲存储器清空命令,以便将高速缓冲存储器16的不干净的块写回到主存储器12中。
本发明的最有效的用途之一是获得主存储器中的检查点。检查点是这样一种状态,当出现错误时,计算机系统可以在该状态下开始数据处理。为了得到主存储器中的检查点,高速缓冲存储器将被清空。当通过处理器10在计算机系统的检查点开始运行高速缓冲存储器清空设备20时,处理器不需要自身执行高速缓冲存储器清空指令。
此外,当进行高速缓冲存储器清空时,高速缓冲存储器清空设备20可以同时执行高速缓冲存储器清空操作、增加地址和减小计数器。通过流水线操作可以执行连续的高速缓冲块的高速缓冲存储器清空操作。因此,可以大大缩短高速缓冲存储器清空操作所需的时间。
下面说明本发明的第二实施例。
图7表示计算机系统的主要部分。除了第一实施例中的部件,第二实施例还包括同时检查两个或多个标记的装置。增加了外部标记检查部件46、48和用于选择两个外部标记检查部件46、48的输出(r-fsh1,r-fsh2)的多路转接器49(mux)。外部标记检查部件的数目可以任意选择(2-4个)。然而,由于高速缓冲块的地址通常是用二进制数表示的,所以外部标记检查部件的数目可以是二次幂。
由于总线接口电路(总线I/F)22、外部标记控制器24、多路转接器(mux)30、无效总线命令产生部件34、主控制器38和FIFO 36执行与第一实施例相同的操作,所以对相应的部分给予相同的符号,并省略对它们的说明。外部标记检查部件46、48与图2中的外部标记检查部件32的功能相同。
外部标记读部件42接收起始地址、循环计数和来自第一实施例中的主控制器38的清空起始位的值。外部标记读部件42将起始地址经多路转接器30输出至外部标记存储部件26,并计算下一个起始地址和减小的循环计数。此处,起始地址的增量是高速缓冲块的数目×外部标记检查部件的数目。循环计数的减小量是外部标记检查部件的数目。
根据从外部标记读部件42接收的地址(r-addr),外部标记存储部件26同时向两个外部标记检查部件46、48输出标记(r-tag1,r-tag2)。
例如,如图7所示,如果外部标记检查部件的数目是二,那么外部标记存储部件26删去高速缓冲块地址的最低的有效位。外部标记存储部件26同时读偶数地址和奇数地址,并将它们输出至外部标记检查部件46、48。
多路转接器(mux)49接收外部标记检查部件46、48的输出。如果多路转接器(mux)49同时接收两个或多个高速缓冲存储器清空命令,那么它选择任意的一个,在下一个循环,多路转接器输出另一个高速缓冲存储器清空命令。
多路转接器49最好具有一个缓冲器(未示出),用于暂时存储输入值。如果缓冲器已满,那么多路转接器49暂时停止外部标记读部件42的处理。
下面说明第二实施例的操作情况。由于总线接口电路22、外部标记控制器24和外部标记存储部件26与正常操作时的第一实施例类似,所以省略对它们的进一步的详细说明。
图8和图9是说明高速缓冲存储器清空的第二实施例的操作的流程图。高速缓冲存储器清空操作按如下方式重复。图8所示步骤D1-D7和D17-D21与图5所示步骤C1-C7和C13-C17相同。高速缓冲存储器清空设备40可以向第一实施例那样进行流水线操作。
当处理器10将“1”写入主控制器38的清空起始位时,高速缓冲存储器清空设备40开始高速缓冲存储器清空操作。
外部标记读部件42读循环计数寄存器和起始地址寄存器的内容,以便执行流水线操作。外部标记读部件42将起始地址(r-addr)经多路转接器30输出至外部标记存储部件26。增加的起始地址同时写入起始地址寄存器。减小的循环计数写入循环计数寄存器(步骤D1-D5)。
外部标记存储部件26无视标记读地址(r-addr)的最低有效位。同时在偶数地址和奇数地址读标记(r-tag1,r-tag2)。读出的标记输出至外部标记检查部件46、48(步骤D6-D7)。
现在说明具有两个外部标记检查部件46、48的情况。如果安装了四个外部标记检查部件,那么外部标记存储部件26忽略标记读地址(r-addr)的最低有效位。同时读四个标记。读出的值输出至外部标记检查部件。
外部标记检查部件46、48判断从外部标记存储部件26读出的标记是否为不干净(步骤D8-D9)。如果它们表示不干净状态,那么这些标记输出至多路转接器49。
多路转接器49将接收的标记输出至无效总线命令产生部件34。如果多路转接器49同时接收两个或多个标记,那么由多路转接器49选择其中接收的一个标记。在下一个总线周期将其余的标记输出至无效总线命令产生部件34(步骤D10-D12)。
无效总线命令产生部件34采用标记的物理地址部分产生高速缓冲存储器清空命令。它被输出至FIFO 36(步骤D13-D14)。
当高速缓冲存储器清空命令存储在FIFO 36中时,总线接口电路22获取系统总线18(步骤D15)。存储在FIFO 36中的高速缓冲存储器清空命令输出至系统总线18(步骤D16)。
重复这一过程,直到循环计数变为“0”(步骤D17-D21)。
如上所述,在第二实施例中进行高速缓冲存储器清空操作时,同时从外部标记存储部件26中读两个或多个标记。两个或多个外部标记检查部件46、48可以在每个总线周期检查多个高速缓冲块的不干净状态。因此,可以极大地缩短高速缓冲存储器标记检查的时间。例如,与第一实施例相比,高速缓冲块的标记读出时间可以缩短一半。
在不干净的高速缓冲块的数目小的情况下,高速缓冲存储器清空操作时间几乎等于标记读出时间。
高速缓冲存储器清空时间=高速缓冲块的数目/外部标记检查部件的数目(总线周期)。
图7中说明了外部标记检查部件46、48。然而,本发明不限于这种结构。例如,可以使高速缓冲存储器清空设备具有的无效总线命令产生部件的数目与外部标记检查部件的数目相等。两个或多个无效总线命令产生部件的输出可由一个多路转接器选择。此外,FIFO的数目可以与外部标记检查部件的数目相等。从FIFO输出的值由一个多路转接器选择。
下面说明本发明的第三实施例。
图10是计算机系统的主要部分的框图。在第三实施例中,在第二实施例的部件的基础上增加了外部标记高速存储部件58、FIFO 62和多路转接器63。第三实施例表示了这些部件与两个外部标记检查部件46、48。然而,本发明不限于这种结构。
在第三实施例中,由于外部标记读部件42、主控制器38、FIFO36、总线接口电路(总线I/F)22、无效总线命令产生部件60和多路转接器49与第二实施例中相应的部件相同,所以省略对它们的说明。
多路转接器49选择两个外部标记检查部件46、48的输出。选择的结果输出至FIFO 62。多路转接器64与结合第二实施例说明的多路转接器30的功能相同。所选择的输出被输出至外部标记高速存储部件58。
外部标记控制器54把根据经系统总线接口电路22的系统总线18的窥视状态得到的标记分成对应于物理地址的部分(w-tag-a)和表示高速缓冲块的状态的部分(w-tag-d)。外部标记存储部件56外部标记存储部件56接收物理地址的w-tag-a,该物理地址指示由外部标记控制器54输出的标记的高速缓冲块。这被存储在外部标记存储部件56中。此外,外部标记存储部件56接收来自FIFO 62经多路转接器63得到的不干净状态的高速缓冲块地址(r-addr-f)。外部标记存储部件56读指示相应的高速缓冲块的物理地址(r-data-f),并将它输出至无效总线命令产生部件60。
外部标记高速存储部件58接收w-tag-d,它是代表高速缓冲块的状态的标记。这一值存储在外部标记高速存储部件58中。由外部标记高速存储部件58存储的高速缓冲块的数目等于外部标记存储部件56的高速缓冲块的数目。在第三实施例中,外部标记高速存储部件58存储表示高速缓冲块是否为不干净的一位,作为高速缓冲存储器的状态。这已在第一和第二实施例中描述过了。外部标记高速存储部件58进行以下两种操作。首先,外部标记高速存储部件58存储根据由外部标记控制器54输出的标记地址(w-addr)指示的标记(w-addr-d)。然后,外部标记高速存储部件58根据从外部标记读部件42输出的地址(r-addr)同时读两个标记(r-tag1,r-tag2)。读出的标记输出至外部标记检查部件46、48。
外部标记检查部件46、48判断从外部标记高速存储部件58读出的标记(r-tag1,r-tag2)是否为不干净。如果读出的标记为不干净,那么外部标记检查部件46、48从主控制器38中的起始地址寄存器的值产生高速缓冲块地址和较低部分的地址,这由r-tag1或r-tag2决定。例如,如果r-tag1是标记的奇数侧,起始地址寄存器的值是10,r-tag2是标记的偶数侧并且两个读出的标记都是不干净,那么从外部标记检查部件46输出(r-fsh1)11作为高速缓冲块地址,从外部标记检查部件48输出(r-fsh2)10作为高速缓冲块地址。
FIFO 62是这样的部件,它缓冲了访问外部标记存储部件56的循环时间与多路转接器49输出一个地址(r-flush)的时间之间的差。当进行清空操作时,FIFO 62接收高速缓冲块的地址(r-flush)。根据外部标记存储部件56能够接收这一信息的时序,高速缓冲块地址(r-addr-f)经多路转接器63被输出至外部标记存储部件56。
多路转接器63选择r-addr-f和w-addr中的一个地址。r-addr-f是从外部标记存储部件56读r-data-f的地址。w-addr是将标记(w-tag-a)写入外部标记存储部件56的地址。被选择的高速缓冲块地址输出至外部标记存储部件56。如果多路转接器63同时接收两个请求,那么它优先选择外部标记存储部件56的高速缓冲块地址(w-addr),并将该地址输出至外部标记存储部件56。
接下来描述本发明的第三实施例。由于总线接口电路22的操作与上述第一实施例的类似,所以略去详细的说明。外部标记控制器54接收由总线接口电路22窥视到的总线命令。外部标记控制器54向外部标记存储部件56输出一个物理地址(w-tag-a),并向外部标记高速存储部件58输出高速缓冲存储器的状态(w-tag-d)。外部标记高速存储部件58在地址(w-addr)存储这一状态。
图11和图12是说明第三实施例中的高速缓冲存储器清空操作的流程图。高速缓冲存储器清空操作进行以下的循环。图11所示的步骤E1-E6和E18-E22与图5所示的步骤C1-C6和C13-C17相同。此外,高速缓冲存储器清空设备50以与第一实施例相同的方式进行流水线操作。
当处理器10在主控制器38的清空起始位中存储“1”时,高速缓冲存储器清空设备50开始高速缓冲存储器清空操作。
如果准备流水线操作,那么外部标记读部件42读循环计数寄存器和起始地址寄存器的内容。在经多路转接器64向外部标记高速存储部件58输出读出的起始地址(r-addr)的同时,外部标记读部件42将增加的起始地址存储在起始地址寄存器中。减小的循环计数被存储在循环计数寄存器中(步骤E1-E5)。
外部标记高速存储部件58无视标记读地址(r-addr)的最低有效位。由外部标记高速存储部件58同时读奇数地址(r-tag1)(最低指令位是“1”)和偶数地址(r-tag2)(最低指令位是“0”)。读出的标记输出至外部标记检查部件46、48(步骤E6-E7)。
外部标记检查部件46、48判断从外部标记高速存储部件58读出的标记是否为不干净(步骤E8-E9)。如果标记是不干净,那么外部标记检查部件46、48产生该标记的高速缓冲块的地址,并将它们输出至多路转接器49。
多路转接器49将接收的高速缓冲块的地址输出至FIFO 62。如果同时接收两个或多个高速缓冲块地址,那么由多路转接器49先选择其中的一个。在下一个总线周期将其余的地址输出至FIFO 62(步骤E10-E12)。
根据外部标记存储部件56读出的时序,FIFO 62经多路转接器63将高速缓冲块地址输出至外部标记存储部件56(步骤E13)。
如果从FIFO 62接收高速缓冲块地址,那么外部标记存储部件56读高速缓冲块物理地址(r-data-f),并将它输出至无效总线命令产生部件60。无效总线命令产生部件60从高速缓冲块物理地址产生高速缓冲存储器清空命令,并将它输出至FIFO 36(步骤E14-E15)。
如果高速缓冲存储器清空命令存储在FIFO 36中,那么总线接口电路22获取系统总线18(步骤E16)。存储在FIFO 36中的高速缓冲存储器清空命令输出至系统总线18(步骤E17)。
重复这一过程,直到循环计数变为“0”(步骤E18-E22)。
如上所述,在本发明的第三实施例中,高速缓冲存储器清空设备50中存储高速缓冲存储器标记的部件分成用于存储物理地址的外部标记存储部件56和用于存储高速缓冲存储器状态的外部标记高速存储部件58。结果,由于每个部件可以具有不同的容量和不同的访问存储部件的时间,所以硬件设计变得更灵活了。
这就是说,外部标记高速存储部件的容量非常小(每个高速缓冲块一位),但是整个部件将被检验。相反,外部标记存储部件的容量大(一般每个高速缓冲块20位),但是仅当相应的高速缓冲块的状态是不干净时才需要读它。
对某一特定的物理范围进行高速缓冲存储器清空操作也是可行的。例如,很容易把产生具有特定范围的命令这一功能加到无效总线命令产生部件60上。
权利要求
1.一种清空高速缓冲存储器的内容的计算机系统,包括带有返回复制型高速缓冲存储器的处理器,该处理器具有总线窥探功能;主存储器;将处理器与主存储器相连的系统总线;与系统总线相连的监视器装置,用于监视系统总线上的总线命令;对监视器装置作出响应的存储装置,用于当高速缓冲存储器的数据更新时存储对应于被更新数据的物理地址和表示高速缓冲存储器中的数据处于更新状态的状态信息;读出装置,用于当高速缓冲存储器的被更新数据存储在主存储器中时读出存储在存储装置中的状态信息;以及与系统总线相连的命令输出装置,如果状态信息表示高速缓冲存储器中的数据已经被处理器修改,那么该输出装置输出无效总线命令,请求被更新数据从高速缓冲存储器传输到主存储器中。
2.权利要求1的计算机系统,进一步包括检测是否从主存储器向高速缓冲存储器产生了数据传输的装置,这种数据传输是通过相关读命令完成的,以便保持存储在一个高速缓冲存储器中的由一个处理器输出的数据与存储在另一个高速缓冲存储器中的由另一个处理器输出的数据之间的相关性;以及根据检测装置的检测结果作出响应的装置,该响应表示由相关读命令指定的数据处于共享状态。
3.权利要求1的计算机系统,其中读出装置包括用于从存储装置读出几个状态信息的第二读出装置,进一步包括根据第二读出装置读出的几个状态信息,判断读出的数据是否处于更新状态的装置;以及根据对应于由判断装置判断的状态信息的物理地址,向系统总线产生高速缓冲存储器清空命令的命令产生装置。
4.权利要求3的计算机系统,进一步包括发布高速缓冲存储器清空请求的装置,该请求产生处于更新状态的读出数据的高速缓冲存储器清空命令,以及选择一个高速缓冲存储器清空请求并将选择的请求输出至命令产生装置的多路转接器装置。
5.权利要求3的计算机系统,进一步包括对由命令产生装置产生的高速缓冲存储器清空命令进行存储和输出的缓冲装置。
6.权利要求5的计算机系统,其中缓冲装置包括先入先出缓冲器。
7.权利要求1的计算机系统,其中存储装置包括用于存储对应于更新数据的物理地址的第一存储装置,和用于存储表示高速缓冲存储器中的数据处于更新状态的状态信息的第二存储装置,包括用于从第二存储装置读出几个状态信息的装置的读出装置,进一步包括根据读出装置读出的状态信息,判断读出的数据是否处于更新状态的装置,以及命令产生装置,用于根据由判断装置判断的状态信息,如果状态信息表示高速缓冲存储器中的数据已经改变,那么向系统总线产生高速缓冲存储器清空命令。
8.权利要求7的计算机系统,其中判断装置包括当从第二存储装置读出的状态信息表示高速缓冲存储器中的数据处于更新状态时产生两个或多个高速缓冲存储器清空请求的装置,进一步包括选择一个产生的高速缓冲存储器清空请求的多路转接器装置,以及第一缓冲器装置,用于存储所选择的高速缓冲存储器清空请求并输出读地址,以便读对应于由判断装置判断的状态信息的物理地址。
9.权利要求8的计算机系统,其中第一存储装置包括读对应于输出的读地址的物理地址的装置,以便由命令产生装置产生高速缓冲存储器清空命令。
10.权利要求1的计算机系统,进一步包括根据读出装置读出的状态信息,判断读出的数据是否处于更新状态的装置;以及根据对应于由判断装置判断的状态信息的物理地址,向系统总线产生高速缓冲存储器清空命令的命令产生装置。
11.权利要求1的计算机系统,其中监视器装置包括输出写地址以便将物理地址和状态信息存储在存储装置中的装置。
12.权利要求11的计算机系统,其中读出装置包括输出读地址以便从存储装置中读出状态信息的装置。
13.权利要求12的计算机系统,进一步包括用于选择读地址和写地址中的一个的多路转接器装置,该多路转接器装置包括如果同时接收写地址和读地址,那么将优先选择写地址的装置。
14权利要求12的计算机系统,其中监视器装置包括将发布的总线命令送至系统总线的总线接口,进一步包括与总线接口相连的主控制器装置,用于当由处理器设置进行高速缓冲存储器清空操作的控制数据时,存储进行高速缓冲存储器清空操作的清空起始位的值和对应于读地址的重复时间的循环计数值。
15.一种清空高速缓冲存储器的内容的方法,该方法包括以下步骤监视系统总线上的总线命令;当高速缓冲存储器的数据更新时,在存储装置中存储对应于被更新数据的物理地址和表示高速缓冲存储器中的数据处于更新状态的状态信息;当高速缓冲存储器的被更新数据存储在主存储器中时读出存储的状态信息;以及如果高速缓冲存储器中的数据已经被处理器修改,那么向系统总线输出无效总线命令,请求被更新数据从高速缓冲存储器传输到主存储器中。
16.权利要求15的方法,进一步包括以下步骤根据监视步骤,当由处理器设置控制数据时,将进行高速缓冲存储器清空操作的清空起始位和对应于读地址的重复时间的循环计数存储在控制寄存器中。
17.权利要求16的方法,进一步包括以下步骤根据设置在控制寄存器中的循环计数和清空起始位,产生标记读地址;以及根据循环计数,从存储装置中读出对应于标记读地址的状态信息。
18.权利要求15的方法,进一步包括以下步骤产生标记写地址,以便将物理地址和状态信息存储在存储装置中。
19.权利要求16的方法,进一步包括以下步骤在控制寄存器中设置停止高速缓冲存储器清空操作的位。
20.权利要求17的方法,进一步包括以下步骤当产生标记读地址时,减小从控制寄存器中读出的循环计数;以及增加标记读地址的起始地址。
全文摘要
总线接口与系统总线相连,监视表示处理器的高速缓冲存储器中数据更新的总线命令。如果高速缓冲存储器中数据更新,那么外部附加的存储设备存储表示数据更新的状态信息和对应于被更新数据的物理地址。当高速缓冲存储器中被更新数据存储在主存储器中时,外部附加的读出设备读出存储在外部附加存储设备中的状态信息。根据该状态产生从高速缓冲存储器向主存储器清空的总线命令。无效总线命令产生装置通过FIFO向系统总线输出无效总线命令。
文档编号G06F11/14GK1142634SQ96107629
公开日1997年2月12日 申请日期1996年6月17日 优先权日1995年6月19日
发明者野末浩志, 增渊美生 申请人:株式会社东芝
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1