CN1175732A - 检查点处理加速装置 - Google Patents
检查点处理加速装置 Download PDFInfo
- Publication number
- CN1175732A CN1175732A CN97113166A CN97113166A CN1175732A CN 1175732 A CN1175732 A CN 1175732A CN 97113166 A CN97113166 A CN 97113166A CN 97113166 A CN97113166 A CN 97113166A CN 1175732 A CN1175732 A CN 1175732A
- Authority
- CN
- China
- Prior art keywords
- mentioned
- image
- address
- data
- order
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1405—Saving, restoring, recovering or retrying at machine instruction level
- G06F11/1407—Checkpointing the instruction stream
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/16—Protection against loss of memory contents
Abstract
高速缓存进行数据更新时前象获取部分获取更新地址及更新前的数据并存放到前象存储部分中。高速缓存清仓执行部分利用此前象存储部分中存放的所有地址在系统总线上发出将更新状态的高速缓存块的内容反写到主存储器的命令。另一方面,主存储器状态恢复部分则向系统总线发出对前象存储部分中所存放的所有的更新前的数据按照重新所存放的开始顺序地更新反写到主存储器。
Description
本发明涉及应用安装了具有保证数据一贯性的窥探机构的高速缓存的计算机的合适的检查点加速装置及应用同一装置的检查点及恢复方式的计算机系统。
提高计算机系统的可靠性的方式之一是在正常的数据处理过程中间周期地在主存储器中生成检查点,而当计算机发生某种故障时可以恢复到前面最近的一个检查点重新进行处理。因而此种方式称为检查点及恢复方式,大致分为以下三种。
(1)主要用于数据库管理系统等,采用两台计算机,在一台计算机发生停机时,为防止数据本身丢失及维持数据间的逻辑一致性,由另一台计算机接替数据库。
(2)一个应用程序作为主处理过程和阴影处理过程在分开的计算机中进行双重配置而执行,并且在执行主处理过程的计算机发生停机时阴影处理过程会在保持一致性的状态下接替执行该过程。从用户看来,应用程序执行中间并未发生中断而是连续执行。
(3)可在计算机发生某种故障时事先防止该计算机停机。从用户或应用程序看来,与未发生故障时相比几乎看不出差别。
其中的(3)这种检查点和恢复方式,因为是在发生某种故障时由前面最近一个检查点重新进行处理,所以检查点本身必须存放在即使发生故障也不会受到破坏的存储装置中。这种存储装置称为稳定存储器,比如可使用双重主存储装置等。
在(3)这种检查点和恢复方式的计算机中,如图1所示,各处理器会周期地临时中断正常的数据处理而进行检查点处理(t1),在其处理结束时再从中断的时刻重新恢复正常的数据处理(t2)。于是,在发生某种故障时(t3),处理器会进行恢复处理。在此恢复处理中,在使主存储器返回(t2)的状态之后,重新恢复正常的数据处理(t4)。也即在时刻t4,由于从与时刻t2相同的状态恢复处理而可以做到不受事故发生的影响继续对数据进行处理。
其次,在这种检查点和恢复方式中,高速缓存、主存储器及检查点间的关系如下述。
(正常的数据处理normal data processing)
为了在发生故障时使主存储器返回检查点时的状态,在主存储器更新时必须采取某种对策。
(检查点处理)
将高速缓存中所保存的更新数据全部反写到主存储器(writtenback into main memory)。
(发生故障时的复原处理)
至少必须使前面最近一个检查点处理以后在主存储器中更新过的部分返回检查点时刻的状态。
采用检查点和恢复方式的容错计算机的具体实例公开于Philip ABernstein,“Sequoia:用于事务处理的容错紧密连接多处理器”,IEEEComputer,Vol.21,No.2,1988中。
在此Sequoia计算机中,在正常的数据处理期间内,如处理器更新数据,则将该数据保存于高速缓存之中而根本不反写到主存储器。而如果开始检查点处理,则将保存于高速缓存中的更新数据反写到主存储器。因而,在计算机发生某种故障时,通过使高速缓存失效即可从前面最近的检查点的时刻的主存储器的状态重新开始正常的数据处理。上述高速缓存、主存储器及检查点与此的对应关系如下述。
(正常的数据处理)
由处理器更新的数据在开始检查点处理之前不反写到主存储器。
(检查点处理)
将高速缓存中保持的更新数据全部反写到主存储器。
(发生故障时的复原处理)
只要使高速缓存无效即可。
此外,在此Sequoia计算机中,为实现检查点和恢复方式备有特别的高速缓存。之所以如此,是因为如果使用通常的直写型或者回写型的高速缓存,则无法做到“在正常的数据处理期间由处理器更新的数据在开始检查点处理之前不反写到主存储器”这种控制。因此,必须具备可以做到“在正常的数据处理期间由处理器更新的数据在开始检查点处理之前不反写到主存储器”这种控制的高速缓存。
另外,采用检查点和恢复方式的容错计算机的第2个具体实例公开于USP4,740,969“由硬件故障中恢复的方法和设备”中。在此具体实例中实行下述处理。
(正常的数据处理)
在由主存储器向高速缓存装入数据之际保持其地址及数据内容。
(检查点处理)
未谈及。
(发生故障时的复原处理)
利用上述地址和数据使主存储器返回检查点时刻的状态。
如此,在Sequoia计算机的场合,存在必须备有用于检查点和恢复的特别的高速缓存并紧跟处理器的急剧的技术革新这一困难问题。即Sequoia计算机的高速缓存,在处理器将数据在高速缓存上重写的情况下,直到处理器发出开始检查点处理的要求,必须决不将之反写到主存储器。如要求开始检查点处理,则检查各高速缓存线并由高速缓存的硬体执行反写操作。另一方面,对普通的高速缓存,处理器将数据反写到主存储器不能由处理器控制,而由适当的定时进行。
另外,在USP4,740,969公开的方式中,由于主存储器向高速缓存转送数据时保持地址和数据,存在的问题是在正常的数据处理中取得的数据量很大。
本发明的目的是提供一种利用无需特别的高速缓存而只需装载标准的单处理器或多处理器的计算机就能很容易地实现检查点和恢复功能的检查点处理加速装置及检查点和恢复方式。
此外,另一目的是可以提高标准计算机的性能。
另外,还有一个目的是提供一种与USP4,740,969中所公开的方法相比较在正常数据处理中取得的数据量要少得多的检查点处理加速装置及检查点和恢复方式。
本发明的检查点处理加速装置是一种在具备至少一个以上的带有总线窥探机构的回写型高速缓存的处理器、主存储器及将上述处理器和上述主存储器连接起来的系统总线的计算机中使用的检查点处理加速装置,其特征是包括将数据更新发生的地址及其更新前的数据按组构成的多个前象进行存储的前象存储手段;通过对上述系统总线的监视来检测可显示在上述高速缓存上发生了数据更新的命令(command)及对它的应答, 当包含更新地址及更新前数据时则将该地址及更新前的数据存放于上述前象存储手段中,而当包含发生更新的地址但不包含更新前的数据时则将用来读出该更新前的数据的命令利用上述命令所包含的地址在上述系统总线上发出并将上述地址及读出的更新前的数据存放于上述的前象存储手段中的前象获取手段;在上述处理器有指示发出时,对于存放于上述前象存储手段中的所有地址在上述系统总线上发出要求将各该地址所指示的更新状态的数据反写到主存储器的高速缓存清仓执行手段;以及在上述处理器有指示发出时,对于存放于上述前象存储手段中的所有更新前数据在上述系统总线上发出要求从新存放的开始顺序地更新写入主存储器的命令的主存储器状态恢复手段。
在本发明的检查点处理加速装置中,如处理器对高速缓存进行数据更新,则前象获取手段获取该更新地址和更新前数据而存放于前象存储手段中。高速缓存清仓执行手段,根据发自处理器的指示,通过在系统总线上发出的要求使用前象存储手段中存放的所有地址将具有各该地址的更新状态的高速缓存块的内容反写到主存储器的命令执行高速缓存清仓。另一方面,主存储器状态恢复手段,根据发自处理器的指示,通过在系统总线上发出的要求将存放在前象存储手段中的所有更新前数据从新存放的开始顺序地更新写入主存储器的命令使主存储器成为在前象存储手段中无任何存储内容时的状态。
也即如采用本发明的检查点处理加速装置,则不需要特殊的高速缓存,并且,与过去的通过处理器执行高速缓存清仓用的软件实施高速缓存清仓相比较可以预期速度能大幅度地提高。因此,考虑到花费在检查点处理上的操作大部分是高速缓存清仓,检查点和恢复方式计算机整体性能可以得到提高。
另外,在连续的检查点之间处理器对同一地址的数据进行多次更新这一点也予以充分考虑。因此将主存储器用高速缓存中可保证的高速缓存块的大小进行分割,对应于由这种分割所定义的区域设置分配有开和关两种状态的标志存储器是可取的。于是,在高速缓存块内的数据更新之时,在与其地址对应的标志存储器为关的场合,将把其更新前的数据存放到前象存储手段中,同时将标志存储器设置为开。另外,当处理器再次对此数据更新时,由于该标志存储器已经是开的状态,可以了解到更新前的数据已经存放过,所以就不再将更新前的数据存放到前象存储手段内。如此,由于可以削减不需要的操作,可以进一步提高其性能。此标志存储器也不必一定与所有的区域对应设置,即使只与一部分区域对应设置也很有效。
另外,也可以采用使其相互间没有共同部分的方式设置地址范围,并对如此设定的地址范围分别对应设置标志计数器。在这种情况下,对块计数器进行管理使之指示在其对应的地址范围内所包含的高速缓存块中有多少个更新状态的高速缓存块。于是,在此块计数器的显示为初始值(比如为0)时,立即可以了解到对此地址范围不需要进行高速缓存清仓,因此可以大幅度缩短检查点处理所需时间。
另外,本发明的计算机系统是一种具备了拥有带有总线窥探机构的回写型高速缓存的至少一个以上的处理器、主存储器及连接上述处理器和上述主存储器的系统总线并且一边定期地形成用于使中断的处理重新开始的检查点一边进行数据处理的计算机系统,其特征为具备权利要求1~19所述的任何一种检查点处理加速装置、一边操作上述检查点处理加速装置的前象获取手段一边执行正常的数据处理的数据处理手段、包括将所有的处理器同步执行的数据处理中的设备场境存放到主存储器及将上述检查点处理加速装置的高速缓存执行手段执行的所有更新状态的块的内容反写到上述主存储器的检查点生成手段以及在发生故障时使所有高不觉缓存块失效和通过上述检查点处理加速装置的主存储器恢复手段使主存储器恢复到前面选取的一个检查点时刻的状态并且利用该恢复后的主存储器中所存放的信息重新开始数据处理的返回(Rollback)和恢复手段。
在定期选取检查点以便重新开始中断了的处理的计算机系统中如何能使选取检查点所花费的时间缩短是很重要的。也即如果上述的这种检查点处理加速装置能应用于这种计算机系统,则可以提高系统的整体性能。
下面简略介绍附图的内容。
图1是现有的检查及恢复方式的操作步骤的说明图。
图2是本发明的第一实施例的计算机系统的系统构成图。
图3是显示同一实施例的前象存储部分的构造的概念图。
图4是同一实施例的前象获取部分的处理流程示图。
图5是同一实施例的高速缓存清仓执行部分的处理流程示图。
图6是同一实施例的主存储器状态恢复部分的处理流程示图。
图7是同一实施例的依靠处理器的检查点处理加速装置的控制方式示图。
图8是同一实施例的伴随由处理器进行的数据更新的操作说明图。
图9是同一实施例的由高速缓存清仓执行部分发出的读出·行(Read-Line)命令的说明图。
图10是同一实施例的在检查点处理开始前发生故障的场合的操作说明图。
图11是本发明的第2实施例的计算机系统的系统构成图。
图12是同一实施例的前象获取部分的处理流程示图。
图13是同一实施例的高速缓存清仓执行部分的处理流程示图。
图14是同一实施例的伴随由处理器进行的数据更新的操作说明图。
图15是同一实施例的由高速缓存清仓执行部分发出的读出·行(Read-Line)命令的说明图。
图16是同一实施例的在检查点处理开始前发生故障的场合的操作说明图。
图17是本发明的第3实施例的计算机系统的系统构成图。
图18是同一实施例的高速缓存清仓执行部分的处理流程示图。
图19是同一实施例的伴随由处理器进行的数据更新的操作说明图。
图20是同一实施例的由高速缓存清仓执行部分发出的读出·行(Read-Line)命令的说明图。
图21是同一实施例的在检查点处理开始前发生故障的场合的操作说明图。
图22是同一实施例的判断是否获取前象的机构图。
图23是本发明的第4实施例的处理器、前象获取部分及高速缓存执行部分的操作的时间关系的说明图。
图24是同一实施例的提前清仓方式的处理器的处理流程示图。
图25A、图25B为同一实施例的提前清仓方式的效果与原来的控制方式的对比典型示图。
图26是同一实施例的处理器、前象获取部分及高速缓存清仓执行部分的操作例示图。
图27是同一实施例的前象存储部分的项目构成及其使用法的说明图。
图28是同一实施例的高速缓存清仓执行部分的处理流程示图。
图29是本发明的第5实施例的处理器使用检查点处理加速装置实现检查点/返回方式情况下正常的数据处理及检查点处理的处理流程示图。
以下参照附图对根据本发明的检查点处理加速装置的实施例进行说明。
图2示出本发明第1实施例的计算机系统的系统构成。其中的多个(此处为3个)处理器10连接于系统总线40,各处理器分别具有具备高速缓存一致性的回写型高速缓存20。但是,在高速缓存是由主高速缓存和二级高速缓存两级或更多级构成时,本实施例中所说的高速缓存20指的是靠近系统总线40的高速缓存。另外,高速缓存也有分为存放命令的高速缓存和存放数据的高速缓存的场合,在该种场合,本实施例中所说的高速缓存20指的是存放数据的高速缓存。另外,本系统中的系统总线40上的地址是以32位进行说明。主存储器51通过存储器控制器50连接于系统总线40,同时检查点处理加速装置30也连接于其上。检查点处理加速装置30由总线接口31、前象获取部分(before-image acquiringsection)32、主存储器状态恢复部分(main memory restoringsection)33、高速缓存清仓执行部分(cache flush executingsection)34及前象存储部分(before-image storing section)组成。
首先,联系控制本装置的软件对本检查点处理加速装置30的功能进行说明。
(初始化)
处理器10在某一适当的时刻作成修改(Modified)状态(见下述)的高速缓存块不存在的状态。
(正常的数据处理时)
处理器10在开始正常的数据处理的时刻起动前象获取部分32。在处理器10执行应用程序等的期间检查点处理加速装置30监视系统总线40,每当检测到处理器10对高速缓存20上的数据进行了更新时就将更新地址及更新前数据存储。
(检查点处理)
处理器10在执行一定时间,比如数毫秒~数十毫秒的正常的数据处理时,就定期地进行检查点处理。在检查点处理中,在将此前刚执行的应用程序的设备场境(处理器的寄存器内容等)存放到主存储器51的同时,把所有的修改状态的高速缓存块的内容反写到主存储器51(下面将把这种反写称为“高速缓存清仓”)。本检查点处理加速装置30,对于所有修改状态的高速缓存块,根据在系统总线40上发出要求将其内容反写到主存储器51的命令实施高速缓存清仓。如此利用专用的硬件进行的高速缓存清仓处理与由处理器10执行高速缓存清仓用软件相比较具有高速的优点。如检查点处理结束,则处理器10重新开始正常的数据处理。
(发生故障时的恢复处理)
在计算机系统发生某种故障时,处理器10识别故障地点,如果需要则在断开发生故障的装置的同时使所有的高速缓存块20失效(invalidate)。于是检查点处理加速装置30使用其内部存储的前象,根据发出的将更新前的数据反写到主存储器51的命令,使主存储器51的状态返回到紧前面一个检查点处理时的状态。之后,处理器10再重新开始正常的数据处理。
也即本实施例的检查点处理加速装置30具有下述三种功能。
(1)正常的数据处理时
检测到处理器10进行了数据更新时将其前象获取并存储。
(2)检查点处理
根据来自处理器10的指示发出命令要求利用存储的前象修改状态的高速缓存块的内容反写(高速缓存清仓)到主存储器51。
(3)发生故障时的恢复处理
根据来自处理器10的指示发出利用存储的前象将更新前的数据反写到主存储器51中的命令。
还有,存储前象是为了实现(2)及(3)的功能,所以没有必要一定要获取所有的数据更新的前象。例如,在检查点之后对某一地址首次发生更新时必须获取前象,在第二次以后的场合则不需要获取前象。
本检查点处理加速装置30,因为是根据对系统总线40上的命令和其应答(response)进行监视或是主动地发出命令,所以这里就高速缓存20及系统总线40的构造以及命令和对其应答进行说明。不过此处的叙述为应用本实施例的状态恢复部分33的可能的计算机之一例。例如,对下面所示的高速缓存所取的状态及系统总线40上的命令及应答就分别存在几种不同形式,对任何一个都可尊循本实施例的要点而构成检查点处理加速装置30,此点自不待言。
(系统总线的构造)
系统总线40,除地址/数据线外,还包含作为控制用信号线的命令信号线、修改应答信号线及共享应答信号线。地址/数据信号线为发送命令的地址及数据的信号线,有地址/数据公用信号线时分使用方式及地址/数据分别独立设置信号线的方式,哪一种都可以。命令信号线不仅是发送指示命令的种类的信息而且是发送有关命令各种信息的信号线。共享应答信号线用于对由其他处理器/高速缓存发出的命令发出共享高速缓存块的通知。而修改应答信号则用于对由其他处理器/高速缓存发出的命令发出保存有高速缓存块的更新数据的通知。
(高速缓存块的状态)
高速缓存块所取的状态如下述。
(1)无效状态
在该高速缓冲块中不存在有效数据。
(2)修改状态
在该高速缓冲块中存在更新数据。另外,在另外的处理器10的高速缓冲块中不存在同样的数据。高速缓存清仓所利用的数据就是此数据。
(3)完全共享(Clean-Shared)状态
在该高速缓存块中存在与主存储器51同样内容的数据。另外,在另外的处理器10的高速缓存块中也可能存在同样的数据。
(4)完全互斥(Clean-Exclusive)状态
在该高速缓存块中存在与主存储器51同样内容的数据。另外,在另外的高速缓存20时高速缓存块中不存在同样的数据。
(命令及应答的方法)
系统总线40上的5种命令及高速缓存20或主存储器51对其发出的应答如下所述。不过其中的读出·行·非相关(Read-Line-Non-Coherent)命令虽然为系统总线40所支持,但不是高速缓存20发出的命令。
(1)读出·行(Rean-Line)(高速缓存块数据的读出请求)
发出状况-处理器10准备读入数据而在高速缓存20中无该数据的场合。
应答(情况1)-如果有具有修改状态的高速缓存块的高速缓存20存在,该高速缓存20确认(assert)修改应答信号线而向发出读出·行命令的高速缓存20和主存储器51传输数据。两者的高速缓存块的状态变为完全共享(Clean-Shared)。
应答(情况2)-如果没有具有修改状态的高速缓存块的高速缓存20存在,但如果有具有完全共享或完全互斥状态的高速缓存块的高速缓存存在,该高速缓存20确认共享应答信号线。主存储器51或保有该数据的高速缓存20向发出读出·行命令的高速缓存20传输数据。由何者传输数据则依计算机而定。两者的高速缓存块的状态为完全共享(Clean-Shared)。
应答(情况3)-在非上述任何一种的场合,对修改应答信号线和共享应答信号线均不确认,由主存储器51向发出读出·行命令的高速缓存20传输数据。高速缓存块的状态变为完全互斥(Clean-Exclusive)。
(2)读出·行·带失效(Read-Line-with-Invalidate)(高速缓存块数据读出并使另外的高速缓存块失效的请求)
发出状况-处理器10准备更新数据而在高速缓存20中无该数据的场合。
应答(情况1)-如果有具有修改状态的高速缓存块的高速缓存20存在,该高速缓存20确认修改应答信号线而向发出读出·行·带失效命令的高速缓存20和主存储器51传输数据。由于计算机不同也有具有修改状态的高速缓存块的高速缓存20以重试(Retry)应答、将数据反写到主存储器51而由发出读出·行、带失效(Read-Line-with-Invalidate)命令的高速缓存20会再次发出同样命令并且此次由主存储器51发出应答的情况(下述情况3)。在本实施例中是假定为前一种情况而进行说明。发出请求一方的高速缓存块的状态变为修改状态,而应答一方变为无效状态。
应答-(情况2)-如果有具有完全共享或完全互斥状态的高速缓存块的高速缓存20存在,该高速缓存20确认共享应答信号线。主存储器51或保有该数据的高速缓存20向发出读出·行·带失效命令的高速缓存20传输数据。由何者传输数据则依计算机而定。发出请求一方的高速缓存块的状态变为修改状态,而应答一方变为无效状态。
应答(情况3)-在非上述任何一种的场合,对修改应答信号线和共享应答线均不确认,由主存储器51向发出读出·行·带失效命令的高速缓存20传输数据。高速缓存块的状态变为修改状态。
(3)写入·行(Write-Line)(高速缓存块数据向主存储器的写入)
发出状况-由于修改状态的高速缓存块中不会不存放另一地址的数据而将修改状态的高速缓存块的内容反写到主存储器51的场合。
应答-主存储器51在通过此命令中包含的数据更新。高速缓存块的内容变为完全共享(Clean-Shared)。
(4)失效(Invalidate)(使另外的高速缓存的数据失效的请求。仅传输地址)
发出状况-处理器10准备更新完全共享状态的高速缓存块的数据的场合。
应答-发出本命令的一方变为修改状态,而接收一方变为无效状态。
(5)读出·行·非相关(Read-Line-Non-Coherent)(主存储器数据的读出请求)
发出状况-用于从主存储器51向I/O装置进行DMA传输等。
应答-不论高速缓存20的状态如何,永远将主存储器51所要求的地址的内容作为应答回送。高速缓存块的状态不变。
以上对本实施例的高速缓存20及系统及系统总线40等进行了说明。
(检查点处理加速装置的构成)
检查点处理加速装置30由前象存储部分35、前象获取部分32、高速缓存清仓执行部分34及主存储器状态恢复部分33构成。
前象存储部分35,如图3所示,由存储更新地址(updateaddress)及更新前数据(previous data)的组合(前象)的多个项目、高速缓存清仓执行部分34使用的F指针、前象获取部分32及主存储器状态恢复部分33使用的W指针构成。
在前象存储部分35中存储的更新前的数据与高速缓存块的大小(此处设为B位)相同。这是为了使在高速缓存20之间或在高速缓存20和主存储器51之间 的数据传输的单位相同。地址是3位。
W指针指向存储前象获取部分32新获取的前象的项目。如前象获取部分32按照处理器10的指示起动,W指针将初始化为指向最初的项目。于是,如果前象获取部分32新获取的前象存放于W指针指向的项目内,则通过控制使W指针增加+1并指向下一个项目。另外,如果主存储器状态恢复部分33根据处理器10的指示起动,在W指针依次减少-1的同时,利用W指针指向的项目中所存储的更新地址及更新前数据的组合,主存储器51的内容返回更新前的状态。
F指针指向存储有高速缓存清仓执行部分34接着要当作处理对象的前象的项目。如果高速缓存清仓执行部分34依照处理器10的指示起动,F指针初始化为指向最初的项目。于是,高速缓存清仓执行部分34对存储在F指针指向的项目中的更新地址发出读出·行(Read-Line)命令,从而控制F指针指向下一个项目。于是,当F指针的值和W指针的值一致时,高速缓存清仓执行部分34结束。
前象获取部32通过对系统总线40上的命令及应答进行监视或通过在必要时发出命令可在处理器10在高速缓存20上更新数据之际将其前象存储于前象存储部分35内。前象获取部分32检测到上述命令时的操作如下所述。
(1)读出·行(Read-Line)
确定共享应答信号线。
(2)读出·行·带失效(Read-Line-with-Invalidate)
假如确定修改应答信号线,则不进行任何操作。否则将命令中所包含的更新地址及由高速缓存20或主存储器51发出的应答中所包含的更新前的数据存储到前象存储部分35中。
(3)失效(Invalidate)
利用命令中所包含的更新地址发出读出·行·非相关(Read-Line-Non-Coherent)命令。于是将上述更新地址及来自存储器51的应答中所包含的更新前的数据存储于前象存储部分中。
图4中示出此前象获取部分32的处理流程图。
在步骤A1设置W指针为O,在步骤A成为事件待机状态。在此状态下,相应于总线线路发送的命令进入步骤A3、A5、A7中的一个。
如步骤A3所示,如检测出读出·行(Read-Line)命令,则在步骤A4确认共享应答信号线而返回步骤A2。其原因是因为读出·行(Read-Line)命令并非是处理器10在更新数据时所发出的命令,不会按此命令获取前象。因此有必要对共享应答信号线确认而防止高速缓存块变为完全互斥(Clean-Exclusive)状态。其原因是在处理器10更新完全互斥(Clean-Exclusive)状态的高速缓存块的数据的场合,另外的高速缓存20由于不保存该数据,系统总线40中不会有任何命令发出,将由完全互斥状态转移到修改状态。因此,前象获取部分32不能获取前象。在这一点上本发明通过使前象获取部分32对共享应答信号线确认而使高速缓存块变成完全共享(Clean-Shared)状态,通过由处理器10进行的数据更新在系统总线40中发送失效(Invalidate)命令而可以获取前象。
如步骤A5所示,如检测到读出·行·带失效(Read-Line-with-Invalidate)命令,在步骤A6判断修改应答信号线是否已确认,在修改应答信号线确认的场合,因为另外的高速缓存20将该数据保存在修改状态(因而与该地址对应的前象已经存储于前象存储部分35之中),在此情况下不对前象进行存储而返回步骤A2。在未确认的场合,因为有来自高速缓存20或主存储器51的包含更新前的数据的应答存在,在步骤A9前象获取部分32将其抽出。之后,在步骤A10将前象写入W指针指向的项目,在步骤A11W指针增加+1。然后返回步骤A2。
这样一来,与过去的每当由主存储器向高速缓存传送数据时都获取前象的情况相比,因为在本发明中只有在发出表示高速缓存数据变更的命令的场合才获取前象,可以提高前象存储部分32的利用效率和缩短高速缓存的清仓时间。
如步骤A7所示,在检测出失效(Invalidate)命令的场合,因为此命令及应答不包含数据,在步骤A8前象获取部分32发出读出·行·非相关(Read-Line-Non-Coherent)命令而获取包含在来自主存储器51的应答中的更新前数据。在此处,假如发出读出·行(Read-Line)命令,因为保存更新过的数据的高速缓存块会发出应答,不会得到更新前的数据。也即必须要发出读出·行、非相关(Read-Line-Non-Coherent)命令。
其后执行步骤A9~A11。
下面参照图5说明高速缓存清仓执行部分34的操作。
高速缓存清仓执行部分34根据处理器10的指示,如步骤B1所示在使F指针指向最初的项目之后,在步骤B2判断F指针与W指针是否一致。如F指针等于W指针,则高速缓存清仓处理结束。此时高速缓存块的状态全部变为无效或完全共享(Clean-Shared)。
在两者不相等的场合,在步骤B3利用F指针指向的项目中的更新地址发出读出·行命令,而在步骤B4使F指针前进。发出读出·行(Read-Line)命令,假如有将该地址的数据保存在修改状态的高速缓存块存在,也会将该数据传送到主存储器51,这是由于利用了该高速缓存块的状态由修改变化为完全共享状态的所谓读出·行(Read-Line)和其应答性之故。在使F指针前进+1之后返回B2。
这样一来,高速缓存清仓执行部分34虽然可对于存储在前象存储部分35中的所有地址发送读出·行(Read-Line)命令,但此中也有徒劳无益之外。之所以如此,是因为在正常的数据处理中,比如将a号地区的数据以修改状态保存的高速缓存块为了然后存储B号地区的数据而将a号地区的数据反写到主存储器51时,尽管a号地区的修改状态的高速缓存块实际不存在,但由于a号地区的前象的存在,高速缓存清仓执行部分34对a号地区发出读出·行(Read-Line)命令的事很多。关于其改善方法将在另外的实施例中说明。
参照图6对主存储器状态恢复部分33的操作进行说明。首先,在步骤C1判断W指针是否为0,如W指针为0,操作结束。如不为0,主存储器状态恢复部分33根据处理器10的指示在步骤C2将W指针减去-1,在步骤C3利用写入·行(Write-Line)命令将W指针指向的项目中的前象反写到主存储器。其中在对a号地区存在有两个以上的前象的场合,为了返回检查点时的状态,必须将在较早时刻获取的前象在较迟的时刻反写到主存储器51。因而,将W指针由现在指向的项目向着最初的项目减少-1就是满足上述限制的最容易的办法。
下面,根据图7对藉助处理器10对检查点处理加速装置30进行控制的方式予以说明。
在正常的数据处理中,在步骤J1前象获取部分32起动之后,在步骤J2执行应用程序及操作系统(正常的数据处理)。于是,在步骤J3判断正常的数据处理是否继续了一定时间,如判断是经过了一定时间,则中断正常的数据处理而开始检查点处理。
在检查点处理中,首先在步骤J4使处理器10成为禁止中断状态而不能受理外部机器等发出的中断。这是为了在检查点处理中间完全停止执行正常的数据处理。但是,对于通知计算机发生故障的中断却必须采取将其优先级设置高于通常的中断而使之即使处于上述禁止中断的状态也可以受到处理。在步骤J4,处理器10起动高速缓存清仓执行部分34,将正常数据处理中断时刻的设备场境,即寄存器的内容,也写入主存储器51的适当地址。但是,在本实施例中,因为使用的是回写型高速缓存,在此时刻与正常的数据更新一样使高速缓存保持修改状态,在前象存储部分35中已存储该地址的前象。
此后,在步骤J5处理器10停止前象获取部分32的操作,在步骤J6高速缓存清仓执行部34,等待利用前象存储部分35内的前象将所有的修改状态的高速缓存块的数据反写到主存储器51。处理器10的设备场境此时也反写到主存储器51。当高速缓存清仓执行部分34执行结束时,在步骤J7将存放在主存储器51中的设备场境送回对应的寄存器并通过解除禁止中断而重新开始正常的数据处理。
下面说明检查点处理加速装置30的操作。
(初始化)
处理器10藉助执行软件使所有的高速缓存块变成修改状态以外的状态。
(正常的数据处理时)
处理器10在开始正常的数据处理的时刻起动前象获取部分32。此处参照图8,假设是进行正常的数据处理,处理器10依a号地区的数据由A0转为A1、b号地区的数据由B0转为B1、a号地区的数据由A1转为A2的顺序进行更新的场合予以说明。但是a号地区和b号地区共同对应于高速缓存块BLKO,并假设BLKO在初始状态时将a号地区的数据AO保存在完全共享(Clean-Shred)状态。
1:示出初始状态。
2:处理器10准备将a号地区的数据更新为A1,由于高速缓存块BLKO将a号地区的数据保存在完全共享(Clean-Shared)状态,对a号地区发出失效(Invalidate)命令。
3:具有该数据的另外的高速缓存20如具有a号地区的高速缓存块则使之失效并返回指示结束的应答。在高速缓存20上的数据由A0更新为A1。
4:前象获取部分32对a地区发出读出·行·非相关(Read-Line-Non-Coherent)命令。
5:主存储器51对数据A0应答。前象获取部分32将a地址和数据A0的组合存放到前象存储部分35。
6:处理器10准备将b地址的数据更新为B1,由于高速缓存块BLKO将a地址的数据A1保存在修改状态,将用于把a地址的数据反写的写入·行(write-Line)命令临时保存在写入缓冲区,先对b地址发送读出·行·带失效(Read-Line-with-Invalidate)命令。
7:主存储器51返回包含数据BO的应答。在本操作例中,因为是紧跟在初始化之后,修改应答信号线未确认。此时,前象获取部分32将b地址和数据BO的组合存放到前象存储部35。
8:对保存于写入缓冲区的a地址发出写入·行(Write-Line)命令。
9:主存储器51的a地址的数据变为A1。
10:处理器10准备将a地址的数据更新为A2,由于高速缓存块BLKO将b地址的数据B1保存在修改状态,将用于把b地址的数据反写的写入·行(Write-Line)命令临时保存在写入缓冲区,先对a地址发送读出·行·带失效(Read-Line-with-Invalidate)命令。
11:主存储器51返回包含数据A1的应答。前象获取部分32将a地址和数据A1的组合存放到前象存储部分35。
12.对保存于写入缓冲区的b地址发出写入·行(Write-Line)命令。
13.主存储器51的b地址的数据变为B1。
以上对处理器10、主存储器51及前象获取部分的32的正常的数据处理时的操作例进行了说明。
(检查点处理时)
在上述的状态中,如处理器10起动高速缓存清仓执行部分34,则高速缓存清仓执行部分34依a地址、b地址、a地址的顺序发出读出·行(Read-Line)命令。其情况如图9所示。其中,前象一栏中的下划线表示F指针指向的位置。
1:示出初始状态。
2:高速缓存清仓执行部分34首先利用获取的前象a地址和数据A0的组合对a地址发出读出·行(Read-Line)命令。
3:因为BLKO将a地址的数据A2保存在修改状态,修改应答信号线受到确认,对主存储器51进行反写,主存储器51的a地址变为A2。BLKO的状态变为完全共享(Clean-Shared)。
4:高速缓存清仓执行部分34利用前象b地址和数据B0的组合对b地址发出读出·行(Read-Line)命令。
5:因为BLKO将a地址的数据保存在完全共享(Clean-Shared)状态,修改应答信号线和共享应答信号线都未受到确认。主存储器51对B1作出应答。BLKO状态不变。
6:高速缓存清仓执行部分34使用前象a地址和数据A1的组合对a地址发出读出·行(Read-Line)命令。
7:因为BLKO是完全共享(Clean-Shared)状态,共享应答信号线受到确认。主存储器51对A2作出应答。BLKO状态不变。
高速缓存清仓执行部分34的操作结束时,曾经是修改状态的所有高速缓存块的内容在反写到主存储器51有同时,那些高速缓存块的状态变成完全共享(Clean-Shared)状态。这与刚初始化后的状态相同,因而,如果高速缓存清仓执行部分34结束,处理器10可立即开始正常的数据处理。
以上对利用前象的高速缓存清仓执行部分34的检查点处理时的操作例进行了说明。
(发生故障时的恢复处理)
当计算机发生什么故障时,处理器10识别故障的所在,如有必要,在将发生故障的装置分离的同时使所有的高速缓存块失效。然后,检查点处理加速装置30的主存储器状态恢复部分33利用前象并藉助发出写入·行(Write-Line)命令使主存储器51的状态返回到紧前面的检查点处理时的状态。
对这种方式,下面以先前说明过的检查点处理开始前发生故障的情况为例,参照图10进行说明。
1:示出初始状态。
2:处理器10执行使所有的高速缓存块失效的命令。
3:执行此命令的结果是BLKO变为无效状态。
4:主存储器状态恢复部分33以最后获取的前象a地址和数据A1的组合为基础发出写入·行(Write-Line)命令。
5:主存储器51的a地址中可写入A1,但原本就是A1之故,所以无变化。
6:主存储器状态恢复部分33以其前面获取的前象b地址和数据B0的组合为基础发出写入·行(Write-Line)命令。
7:主存储器51的b地址变为B0。
8:主存储器状态恢复部分33以其前面获取的前象a地址和数据A0的组合为基础发出写入·行(Write-Line)命令。
9:主存储器51的a地址变为A0。
结果主存储器51返回检查点处理结束时刻的状态。
以上所示为主存储器状态恢复部分33的操作例。
这样,如果采用本实施例的检查点处理加速装置30,则可以不需要特殊的高速缓存等等就在具有标准构成的计算机系统中实现高效的高速缓存清仓并可构造高性能的检查点恢复方式的计算机系统。
(第2实施例)
下面对本发明的第2实施例进行说明。在图11中示出本实施例的计算机系统的系统构成。使用检查点处理加速装置30A的计算机构成与第1实施例相同。
本实施例的检查点处理加速装置30A是在第1实施例的构成上添加了标志存储器36。标志存储器36和前象存储部分35A一起作为一个硬件实现。
标志存储器36是作为主存储器51的单位的高速缓存块单位的每个各保存1位信息的区域。还有,仅对实际设置的主存储器51的一部分安排标志存储器36的这种构成也很好。标志存储器36通过控制使与其地址相对的前象存放于前象存储部分35A并且只有在高速缓存清仓执行部分34A尚未对该地址发出读出·行(Read-Line)命令之时才处于开的状态。因而,所谓对于某个地址的标志存储器36变成开就是表示高速缓存执行部分34A将来可以对该地址发出读出·行(Read-Line)命令。另外,在初始化结束时以及在检查点处理结束时所有的标志存储器36的值均变为关。
前象获取部分32A,就其前象获取部分而论,与第1实施例相同。但是,由于附加了上述的标志存储器36的参照/更新的处理并且根据标志存储器36的值的不同有时不存放前象这两点与第1实施例有别。前象获取部分32A的处理流程图如图12所示。
在步骤D01,将W指针设置为0,在步骤D02变成事件等待状态。在此状态中,相应于在总线线路发出的命令转向D1、D3和D7中的某一步骤。
如果如D1所示检测到读出·行(Read-Line)命令,则与第1实施例一样在步骤D2对共享应答信号线确认,返回步骤D02。
如果如步骤D3所示检测到读出·行·带失效(Read-Line-with-Invalidate)命令,则在步骤D4前象获取部分32A参考与更新地址对应的标志存储器36的值。如是开,因为不需要将前象获取和存放,就返回步骤D02。
当标志存储器为开时不需要获取和存储前象的理由如下。
(1)只有在前象获取部分32A获取到前象并存放于前象存储部分35A中时标志存储器36才会成为开。因而,标志存储器36为开时,因为与其地址相对的前象已经存放,主存储器状态恢复部分33A可以正确操作。
(2)另外,标志存储器36为开表示高速缓存清仓执行部分34A将来可对该地址发出读出·行(Read-Line)命令。因而,即使对高速缓存清仓执行部分34A而言,在标志存储器36为开时也没有必要存放前象。
假如标志存储器是关,在步骤D5将其改变为开之后,可用与第1实施例相同的方法获取前象。也即在步骤D6判断修改应答信号线是否已经确认。在修改应答信号线已经确认的场合,因为另外的高速缓存20将该数据保存在修改状态(因而与该地址对应的前象已经存储于前象存储部分35A),此种场合不需存储前象而返回步骤D02。在未确认的场合,因为存在有来自高速缓存20或主存储器51的包含更新前的数据的应答,在步骤D11前象获取部分32A将它们抽出。之后在步骤D12将前象写入W指针指向的项目,在步骤D13W指针增加+1。然后返回步骤D02。
另外,在不存在与某一地址对应的标志存储器36的场合最好对与该地址对应前象永远是获取并存储。总之,对该种地址的操作与第1实施例的情况相同。
如果如步骤D7所示检测到失效(Invalidate)命令,在步骤D8前象获取部分32A参照与更新地址相对应的标志存储器36的值。如果是开,因为无须获取和存储前象,就返回步骤D02。如果标志存储器是关,在步骤D9将其改变为开之后利用与第1实施例相同的方法获取前象。也即因为本命令及应答不包含数据,在步骤D10前象获取部分32A发出读出·行·非相关(Read-Line-Non-Coherent)命令并获取包含在来自主存储器51的应答中的更新前数据。在此处如果发出读出·行(Read-Line)命令,因为保存更新数据的高速缓存块会发出应答,不能得到更新前的数据。也即必须发出读出·行·非相关(Read-Line-Non-Coherent)命令。
然后执行步骤D11~D13。
图13示出高速缓存清仓执行部分34A处理过程的流程图。高速缓存清仓执行部分34A是在第1实施例的高速缓存清仓执行部分34的处理中在发出读出·行(Read-Line)命令之际附加上使标志存储器36成为关的机构而构成。
高速缓存清仓执行部分34A,根据处理器10的指示,如步骤E1所示在使F指针指向最初的项目之后,在步骤E2判断F指针与W指针是否一致。例如F指针与W指针相等,则高速缓存清仓处理结束。此时高速缓存块的状态全部变为无效或完全共享(Cldan-Shared)。
在两者不等的场合,在步骤E3利用F指针指向的项目中的更新地址发出读出·行(Read-Line)命令,在步骤E4中F指针加1。发出读出·行(Read-Line)命令的目的是利用读出·行(Read-Line)及其应答的性质,如果存在有使该地址的数据保存在修改状态的高速缓存块,则将该数据也向主存储器51传送,并使该高速缓存块的状态由修改状态变为完全共享状态。F指针加1后在步骤E5使标志存储器变为关之后返回步骤E2。
另外,在不存在与某一地址对应的标志存储器36的场合,在图13所示的处理流程中也可以省略步骤E5。
主存储器状态恢复部分33A与第1实施例的主存储器状态恢复部分33相同。
下面说明第2实施例的检查点处理加速装置30A的操作。
(初始化)
处理器10使所有的标志存储器36变为关。与此同时,处理器10通过执行软件使所有的高速缓存块变成修改状态以外的状态。
(正常的数据处理时)
处理器10在开始正常的数据处理的时刻起动前象获取部分32A。在此参照图14,作为正常的数据处理,对处理器10依a地址的数据由A0变为A1、b地址的数据由B0变为B1和a地址的数据由A1变为A2的这一顺序进行更新的场合予以说明。不过a地址与b地址共同对应于高速缓存块BLKO,而BLKO在初始状态规定为将a地址的数据A0保存在完全共享(Clean-Shared)状态。
1:示出初始状态。
2:处理器10准备将a地址的数据更新为A1,由于高速缓存块BLKO将a地址的数据保存在完全共享状态,对a地址发出失效命令。
3.具有该数据的另外的高速缓存20如具有a地址的高速缓存块,则使之失效并返回表示结束的应答。
4:前象获取部分32A,由于与a地址对应的标志存储器36是关,使之变为开,并对a地址发出读出·行·非相关(Read-Line-Non-Coherent)命令。
5:主存储器51对为数据A0应答。前象获取部分32A将a地址和数据A0的组合存放到前象存储部分35A。
6:处理器10准备将b地址的数据更新为B1,由于高速缓存块BLKO将a地址的数据A1保存在修改状态,将用于把a地址的数据反写的写入·行(Write-Line)命令临时保存在写入缓冲区,先对b地址发出读出·行·带失效(Read-Line-with-Invalidate)命令。
7:主存储器51对数据B0应答。前象获取部分32A,由于与b地址对应的标志存储器36为关,使之变为开,并将b地址和数据B0的组合存放到前象存储部分35A。
8:对保存于写入缓冲区的a地址发出写入·行(Write-Line)命令。
9:主存储器51的a地址变为A1。
10:处理器10准备将a地址的数据更新为A2,由于高速缓存块BLKO将b地址的数据B1保存在修改状态,将用于把b地址的数据反写的写入·行(Write-Line)命令临时保存在写入缓冲区,先对a地址发出读出·行·带失效(Read-Line-with-Invalidate)命令。
11:主存储器51对数据A1应答。前象获取部分32A,由于与a地址对应的标志存储器36为开,不存放前象。
12:对保存于写入缓冲区的b地址发出写入·行(Write-Line)命令。
13:主存储器51的a地址变为A1。
以上对处理器10、主存储器51及前象获取部分32A的正常的数据处理时的操作例进行了说明。
(检查点处理时)
在上述状态中,如处理器10起动高速缓存清仓执行部分34A,则高速缓存清仓部分34A依a地址、b地址的顺序发出读出·行(Read-Line)命令。其情况如图15所示。其中,前象一栏中的下划线表示F指针指向的位置。
1:示出初始状态。
2:高速缓存清仓执行部分34A首先利用前象a地址和数据A0的组合,在使与a地址对应的标志存储器36变为关的同时对a地址发出读出·行(Read-Line)命令。
3:因为BLKO将a地址的数据A2保存在修改状态,修改应答信号线受到确认,并对主存储器51进行反写,主存储器51的a地址变为A2。BLKO的状态变为完全共享(Clean-Shared)。
4:高速缓存清仓执行部分34a利用前象b地址和数据B0的组合,在使与b地址对应的标志存储器36变为关的同时对b地址发出读出·行(Read-Line)命令。
5:因为BLKO将a地址的数据保存在完全共享(Clean-Shared)状态,修改应答信号线和共享信号线都未受到确认。主存储器51对B1应答。BLKO状态不变。
高速缓存清仓执行部分34A的操作结束时,曾经是修改状态的所有高速缓存块的内容在反写到主存储器51的同时,那些高速缓存块的状态变成完全共享(Clean-Shared)状态。另外,所有的标志存储器36的值成为关。这与刚初始化后的状态相同,因而,如果高速缓存清仓执行部分34A的操作结束,处理器10可立即开始正常的数据处理。
以上对利用前象的高速缓存清仓执行部分34A的检查点处理时的操作例进行了说明。
(发生故障时的恢复处理)
当计算机发生什么故障时,处理器10识别故障的所在,如有必要,在将发生故障的装置分离的同时使所有的高速缓存块失效。然后,检查点处理加速装置30A的主存储器状态恢复部分33A利用前象并藉助发出写入·行(Write-Line)命令使主存储器51的状态返回到紧前面的检查点处理时的状态。
对这种方式,下面以先前说明过的检查点处理开始前发生故障的情况为例,参照图16进行说明。
1:示出初始状态。
2:处理器10执行使所有的高速缓存块失效的命令。
3:执行此命令的结果是BLKO变为无效状态。
4:主存储器恢复部分33A以最后获取的前象b地址和数据B0的组合为基础发出写入·行(Write-Line)命令。
5:主存储器51的b地址变为B0。
6:主存储器状态恢复部分33A以前象a地址和数据A0的组合为基础发出写入·行(Write-Line)命令。
7:主存储器51的a地址变为A0。
8:处理器10使所有的标志存储器36变为关。
9.结果主存储器51返回检查点处理结束时刻的状态。
以上对主存储器状态恢复部分33A的故障恢复时的操作例进行了说明。
另外,标志存储器36也不一定必须对所有的地址设定。在某一个地址没有对应的标志存储器36的场合,前象获取部分32A获取与该地址相对的前象并存放到前象存储部分35A中也可以。
这样一来,在本实施例的检查点处理加速装置30A中,通过设置标志存储器36可以避免将相对同一地址的前象在前象存储部分35A中存放2次。另外,在高速缓存清仓执行部分34A执行结束时,由于通过控制使所有的标志存储器36变为关,处理器10可立即开始正常的数据处理。
(第3实施例)
下面对本发明的第3实施例进行说明。在图17中示出本实施例的计算机系统的系统构成。使用检查点处理加速装置30B的计算机的构成与第1实施例相同。
本实施例的检查点处理加速装置30B是对第1实施例的构成添加了块计数器38和块计数器控制部分37而成。
块计数器38是对1个以上的地址范围分别设置的计数器的集合, 用于保存在各地址范围中包含的修改状态的高速缓存块的个数。不过各地址范围要设置成没有互相共同的部分。下面就这种地址范围的设置一个例子进行说明,其中的高速缓存20是直接映射方式。
设与一个高速缓存块对应的地址集合为一个地址范围。在这种情况下,属于块计数器的一个计数器保存有在对应的高速缓存块中处于修改状态的个数。在处理器数为P时,计数器可以取0~P+α止的值。式中α为正整数,根据最近的高速处理器具有的写入缓冲区的效果,从监视系统总线的检查点处理加速装置来看,虽然是暂时性的,但似乎是对应于一个高速缓存块有多个地址的数据保存于修改状态的对应装置。α的值大到P的程度已足够。另外,构成块计数器的各个计数器可通过块计数器控制部分37而增减。另外,可借助高速缓存清仓执行部分34A进行查看。
块计数器控制部分37对系统总线40上的命令及其应答进行监视,在检测到高速缓存块变为修改状态时,如果存在有与该地址对应的上述计数器,使其增加+1。另一方面,如检测到高速缓存块由修改状态变为其以外的状态时,则在有与该地址对应的上述计数器存在的场合,使其减少-1。
块计数器控制部分37检测到在系统总线40上的命令及其应答时的操作如下所示。
(1)读出·行(Read-Line)命令
假如修改应答信号线已受到确认,则将与命令中所包含的地址相对应的计数器减少-1。否则无任何操作。
(2)读出·行·带失效(Read-Line-with-Invalidate)命令
假如修改应答信号线已受到确认,则无任何操作。否则将与命令中所包含的更新地址相对应的计数器增加+1。
(3)失效(Invalidate)命令
将与命令中所包含的更新地址相对应的计数器增加+1。
(4)写入·行(Write-Line)命令
将与命令中所包含的地址相对应的计数器减少-1。
另外,在由读出·行(Read-Line)命令对修改应答信号线确认的场合,因为显示出状态由修改状态变化为完全共享状态,所以计数器减少-1。另外,在由读出·行·带失效(Read-Line-with-Invalidate)命令对修改应答信号线确认的场合,因为修改状态的高速缓存块是由一个高速缓存转移到另一个高速缓存,所以计数器的值不变。
前象获取部分32B与第1实施例的前象获取部分32相同。
下面参照图18对高速缓存清仓执行部分34B的操作予以说明。高速缓存清仓执行部分34B根据处理器10的指示,如步骤F1所示,在使F指针指向初始项目之后,在步骤F2判断F指针与W指针是否一致。如F指针与W指针相等,高速缓存清仓处理结束。此时高速缓存块的状态全部成为无效或完全·共享。
如两者不等,在步骤3判断与F指针指向的项目中的地址相对的计数器是否为0。是0时,则在步骤F5使F指针增加+1;不是0时,则在步骤F4利用F指针指向的项目中的更新地址发出读出·行(Read-Line)命令,并在步骤F5中使F指针前进。发出读出·行(Read-Line)命令的目的是为了利用读出·行及其应答的性质使得如果存在有使该地址的数据保存在修改状态的高速缓存块则将该数据也向主存储器51传送并使该高速缓存块的状态由修改状态变为完全·共享(Clean-Shared)状态。F指针进+1后返回步骤F2。
如上所述,本实施例的高速缓存清仓执行部分34B就是在第1实施例的高速缓存清仓执行部分34之上附加了一个在发出读出·行(Read-Line)命令之际参考对应的计数器的值,并且如果该值为0则不发出读出·行(Read-Line)命令的机构的装置。
主存储器状态恢复部分33A与第1实施例的主存储器状态恢复部分33相同。
下面对检查点处理加速装置30B的操作进行说明。
(初始化)
处理器10使构成块计数器38的所有计数器的值为0。与此同时处理器10通过执行软件使所有的高速缓存块变成修改状态以外的状态。
(正常的数据处理时)
处理器10在开始正常的数据处理的时刻起动前象获取部分32B。在此参照图19,作为正常的数据处理,对处理器10依a地址的数据由A0、变为A1、b地址的数据由B0变为B1、a地址的数据由A1变为A2的这一顺序进行更新的场合予以说明。不过a地址与b地址共同对应于高速缓存块BLKO,而BLKO在初始状态规定为将a地址的数据A0保存在完全·共享(Clean-Shared)状态。另外,假设对应于高速缓存块BLKO只设置一个计数器。
1:示出初始状态。
2:处理器10准备将a地址的数据更新为A1,由于高速缓存块BLKO将a地址的数据保存在完全·共享(Clean-Shared)状态,对a地址发出失效(Invalidate)命令。
3:具有该数据的另外的高速缓存20如具有a地址的高速缓存块,则使之失效并返回表示结束的应答。高速缓存20上的数据由A0更新为A1。块计数器控制部分37使计数器增加+1而成为1。
4:前象获取部分32B对a地址发出读出·行·非相关(Read-Line-Non-Coherent)命令。
5:主存储器对数据A0应答。前象获取部分32B将a地址和数据A0的组合存放到前象存储部分35B。
6:处理器10准备将b地址的数据更新为B1,由于高速缓存块BLKO将a地址的数据A1保存在修改状态,将用于把a地址的数据反写的写入·行(Write-Line)命令临时保存在写入缓冲区,先对b地址发出读出·行·带失效(Read-Line-With-Invalidate)命令。
7:主存储器51返回包含数据B0的应答。块计数器控制部分37使计数器增加+1而成为2。前象获取部分32B将b地址和数据B0的组合存放到前象存储部分35B。
8:对保存于写入缓冲区的a地址发出写入·行(Write-Line)命令。
9:主存储器51的a地址的数据变为A1。块计数器控制部分37使计数器减小-1而成为1。
10:处理器10准备将a地址的数据更新为A2,由于高速缓存块BLKO将b地址的数据B1保存在修改状态,将用于把b地址的数据反写的写入·行(Write-Line)命令临时保存在写入缓冲区,先对a地址发出读出·行·带失效(Read-Line-With-Invalidate)命令。
11:主存储器对数据A1应答。块计数器控制部分37使计数器增加+1成为2。前象获取部分32B将a地址和数据A1的组合存放到前象存储部分35B。
12:对保存于写入缓冲区的b地址发出写入·行(Write-Line)命令。
13:主存储器51的b地址的数据变为B1。此时块计数器控制部分37使计数器减小-1而成为1。
以上对处理器10、主存储器51、块计数器控制部分37及前象获取部分32B的正常的数据处理时的操作例进行了说明。
(检查点处理时)
在上述状态中,如处理器10起动高速缓存清仓执行部分34B,则高速缓存清仓部分34B依a地址、b地址、a地址的顺序发出读出·行(Read-Line)命令。其情况如图20所示。其中,前象一栏中的下划线表示F指针指向的位置。
1:示出初始状态。
2:高速缓存清仓执行部分34B首先利用获取的前象a地址和数据A0的组合。因为对应于a地址的计数器为1,所以对a地址发出读出·行(Read-Line)命令。
3:因为BLKO将a地址的数据A2保存在修改状态,修改应答信号线受到确认并对主存储器51进行反写,主存储器51的a地址变为A2。BLKO的状态变为完全·共享(Clean-Shared)。因为块计数器控制部分37对于读出·行(Read-Line)命令使修改应答信号线被确认,所以计数器减小-1而成为0。
4:高速缓存清仓执行部分34B准备使用前象b地址和数据B0的组合,但因为与b地址对应的计数器为0,不发出读出·行(Read-Line)命令。
5:高速缓存清仓执行部分34B准备使用前象a地址和数据A1的组合,但因为与a地址对应的计数器为0,不发出读出·行(Read-Line)命令。
高速缓存清仓执行部分34B的操作结束时,曾经是修改状态的所有高速缓存块的内容在反写到主存储器51的同时,那些高速缓存块的状态变成完全·共享(Clean-Shared)状态。另外,所有的计数器的值变为0。这与刚初始化后的状态相同,因而,如果高速缓存清仓执行部分34B的操作结束,处理器10可立即开始正常的数据处理。
以上对利用前象的高速缓存清仓执行部分34B的检查点处理时的操作例进行了说明。
如上所述,在本实施例中,由于通过设置块计数器38可以使高速缓存清仓执行部分34B发出的读出·行(Read-Line)命令的数目减小,就可以在同样程度缩短检查点处理所需时间。
(发生故障时的恢复处理)
下面参照图21对前面说明过的在检查点处理开始前发生故障的场合为例进行说明。在发生故障时处理器10使所有高速缓存块失效,所以高速缓存块BLKO的状态也变为无效。
1:示出初始状态。
2:处理器10执行使所有的高速缓存块失效的命令。
3:执行此命令的结果是BLKO变为无效状态。
4:主存储器状态恢复部分33B以最后获取的前象a地址和数据A1的组合为基础发出写入·行(Write-Line)命令。
5:主存储器51的a地址中可写入A1,但因原本就是A1之故,所以无变化。
6:主存储器状态恢复部分33B以其前面获取的前象b地址和数据B0的组合为基础发出写入·行(Write-Line)命令。
7:主存储器51的b地址变为B0。
8:主存储器状态恢复部分33B以其前面获取的前象a地址和数据A0的组合为基础发出写入·行(Write-Line)命令。
9:主存储器51的a地址变为A0。
10:处理器11使所有的计数器的值为0。
11:结果主存储器51返回检查点处理结束时刻的状态。
以上对主存储器状态恢复部分33B的故障恢复时的操作例进行了说明。
另外,块计数器38不一定必须对所有的地址设置。在某一地址不存在对应的计数器的场合高速缓存清仓执行部分34B随时向该地址发出读出·行(Read-Line)命令即可。
如上所述,在本实施例的检查点处理加速装置30B中,通过设置块计数器38可以在一定程度上减轻高速缓存清仓执行部分34B向实际上不存在的修改状态的高速缓存块的地址发出读出·行(Read-Line)命令的浪费程度。另外,在高速缓存清仓执行部分34B执行中间通过块计数器控制部分37对计数器38适当地增加+1/减少-1,在高速缓存清仓执行部分34B结束执行时所有的块计数器的值都变成了0。因此,在高速缓存清仓执行部分34B一结束执行,处理器10可立即开始正常的数据处理。
另外,在上述的实施例中示出对直接映射方式的高速缓存20对应于各个高速缓存块设置块计数器38的方式。
下面对高速缓存20是n路的组相联方式的场合进行说明。
在n路的组相联方式的高速缓存的场合,某一地址的数据存放于形成一路的n个高速缓存块的任何一个中,存放于其中的哪一个高速缓存块之中则每次可变。
因此,对形成一路的n个高速缓存块设置一个计数器。也即某个计数器保存对应路中修改状态的高速缓存块的个数。在处理器数为P的场合计数器取值可为o~p×n+α。α如在直接映射方式的场合所说明那样是用于与处理器的写入缓冲区对应的界限。
另外,也可以不采用与形成高速缓存块或一路的高速缓存块的集合对应方法设置而代之以将主存储器按高速缓存块的大小分割并分别对它们设置计数器。在这种场合,因为不管计算机的处理器数目如何,对一个地址的修改状态的高速缓存块的个数或是0或是1,两者都可以分别用1位来表示,块计数器控制部分37可以简化。
这一点,在将主存储器按高速缓存块的大小分割使其保存1位信息这一点上,与第2实施例类似,但有下述几点差别。
即借助1位信息的开/关定时以及其开/关控制的对象不同。具体而言,在第2实施例中使用的是前象是否获取的判断,而在本实施例中使用的是高速缓存清仓执行部分34B是否发出读出·行(Read-Line)的命令的判断。
另外,在检查点方式的计算机发生故障的情况下并非全部主存储况器都返回前面最近的检查点,主存储器的一部分区域,比如保存故障发生及恢复处理历史过程的区域、执行恢复处理的程序的作业区域等是不可返回的区域。
在本检查点处理加速装置30B中,该点的实现方式有下述两种。
(1)为前象获取部分32B设置判断是否获取前象的机构(与第2实施例中的标志不同)。这一方法虽然有获取的前象变少的优点,但是如果其判断不能高速完成,则有跟不上处理器10和系统总线40的操作的危险。
(2)使主存储器状态恢复部分33B具有同样的判断机构,用来判断是否发出将前象写入主存储器51的写入·行(Write-Line)命令。在这一方法中不必太关心执行速度。另外,如果使高速缓存清仓执行部分34B具有同样的判断机构,则检查点处理所需时间可缩短若干。
这里介绍的一种方式是以用于状态不可恢复的区域是控制软件方面的,在物理上是连续的区域、加之区域的初始地址可以有某种程度的自由来设定为前提并且也适用于(1)的方式的判断的速度很高而且不太需要硬件容量。
如图22所示,此方式具有由保存作为判断对象的更新地址的地址寄存器61、用于屏蔽地址寄存器的一部分位的屏蔽寄存器62和32位的AND(“与”)电路63、用于比较其结果的比较参考寄存器64和32位比较器65组成的机构。于是,在比较判断为一致时,就不获取前象。另外,在利用这一机构判断过慢的场合,比如先发出对失效(Invalidate)命令的读出·行·非相关(Read-Line-Non-Coherent)命令并在将要存放前象之前利用此机构的结果即可。
迄今介绍的是在高速缓存20上发生数据更新的场合,观测到在系统总线40上发出的失效(Invalidate)命令及读出·行·带失效(Read-Line-With-Invalidate)命令时前象获取部分32B获取更新地址和更新前数据的方法。但是,因为计算机的不同有时会出现由I/O设备向主存储器51传送数据或由处理器10不通过高速缓存20向主存储器51写入的情况,所以下面对适用于该种计算机的前象获取部分32B和主存储器状态恢复部分33B的改型例进行说明。
(改型例1)
在此例中下面的前提是必需的。
(1)向主存储器51的写入利用的是与写入·行(Write-Line)命令不同的命令(本例中称之为写入·非相关(Write-Non-Coherent)命令)。
(2)作为系统总线40的规格设置有称作重试(Retry)应答信号线的控制信号线,在向系统总线发出写入·非相关(Write-Non-Coherent)命令时,通过使重试信号线被确认可请求中止执行该命令。此时,经过一短暂时间被中止的命令可再一次发出。
前象获取部分32B,如果检测到写入·非相关(Write-Non-Coherent)命令,则使重试信号线被确认。然后紧跟其后,利用包含在写入·非相关(Write-Non-Coherent)命令中的更新地址发出读出·行·非相关(Read-Line-Non-Coherent)命令。之后将包含在来自主存储器51的应答中的数据和上述更新地址的组合作为前象存放于前象存储部分35B。另一方面,前象获取部分32B,在检测到包含有与刚才相同的地址的写入·非相关(Write-Non-Coherent)命令时则将重试信号确认。
(改型例2)
由I/O设备向主存储器51传送数据、或由处理器10不通过高速缓存20向主存储器51写入等是在处理器10的控制下进行。因此,在发出写入·非相关(Write-Non-Coherent)命令之前通过处理器10经由高速缓存20对该地址进行数据更新而使前象获取部分32B获取前象。其次,处理器10使保存有更新数据的高速缓存块失效,之后起动由I/O设备向主存储器51的数据传送。
(改型例3)
前象获取部分32B,对于处理器10指定的地址范围,增加前象获取和存放功能。一般在由I/O设备向主存储器51传送数据时是对连续地址传送,所以由处理器10发出一次指示就可以获取多个前象。因此其处理速度较改型例2为高。
上面说明的第1~第3实施例是硬件有所改变的实施例,下面说明对第1~第3实施例任何一个都适用的处理操作有改变的实施例。
(第4实施例)
在第1~第3实施例中对操作的说明是根据如下的控制方式,即在正常的数据处理时使前象获取部分32、32A和32B工作而获取前象,而在检查点处理时处理器10起动高速缓存清仓部分34、34A和34B,等到其操作结束再重新开始正常的数据处理。第4实施例示出的是可缩短检查点处理所需时间、经过最优化的检查点处理加速装置30、30A和30B的控制方法以及适合该控制方法的检查点处理加速装置的功能和构成法。另外,这种控制方式将称为提前清仓(Early flush)方式。
在采用本发明的检查点处理加速装置30、30A和30B的检查点和恢复方式的计算机中正常的数据处理的持续时间典型值为数毫秒~数十毫秒。在检查点处理结束的时刻,所有的高速缓存块为无效状态或完全·共享(Clean-Shared)状态,不是修改状态。然后,如果再重新开始正常的数据处理,修改状态的高速缓存块逐渐增加,在下一个检查点处理开始时典型情况是有10%-50%的高速缓存块变成修改状态。
检查点处理所需时间的大部分花费在向存放在前象存储部分35中前象的地址发出读出·行(Read-Line)命令的处理上。作为加快这种处理的方法介绍了第2实施例中使用的标志存储器36及第3实施例中所使用的块计数器38方法。而其目的是减少发出多余的读出·行(Read-Line)命令。
在第4实施例中对高速缓存清仓执行部分34的起动及在检查点处理开始前,即正常的数据处理中的进行方法进行说明。另外,还对在第1~第3实施例中说明的检查点处理加速装置30、30A和30B中的任何一种都是以这种控制方式为基础而正确工作这一点以及根据这种控制方式构成合适的检查点处理加速装置的方法进行了说明。
首先根据图23对处理器10、前象获取部分32(或32A、32B)以及高速缓存清仓执行部分34(或34A、34B)的操作的时间关系进行说明。
处理器10在正常的数据处理中和检查点处理(前象处理)的前半个过程中使前象获取部分32执行。另外,处理器10在正常的数据处理中间起动高速缓存清仓执行部分34。而其后处理器10在正常的数据处理的同时对数据进行更新,由前象获取部分32将其存放到前象存储部分35的W指针(在第1实施例中说明)指向的项目中,在进行上述处理时并行进行F述处理,即高速缓存清仓执行部分34通过向存放在前象存储部分35的F指针指向的项目中的地址发出读出·行(Read-Line)命令将修改状态的高速缓存块的内容反写到主存储器。
这样,如果处理器10开始检查点处理,首先,在将正常的数据处理中断时的设备场境写入主存储器51(实际上是高速缓存20)之后就等待高速缓存清仓执行部分34处理结束。
其次,根据图24对这种提前清仓方式的处理器的处理流程图进行说明。
在正常的数据处理中,在步骤G1起动前景获取部分32后,在步骤G2执行应用程序和操作系统(正常的数据处理)。之后在步骤G3判断高速缓存清仓执行部分34起动时间是否已到。关于此高速缓存清仓执行部分34的起动定时见下述。如检测到应该起动的定时,则在步骤G4起动高速缓存清仓执行部分34。在步骤G5执行应用程序和操作系统(正常的数据处理)。之后在步骤G6判断正常的数据处理是否已继续了一定时间,如判断已经过了一段时间,则中断正常的数据处理开始检查点处理。
在检查点处理中,首先在步骤G7使处理器10成为禁止中断状态而不能接受外部设备等的中断。其目的是为了使在检查点处理中完全停止执行正常的数据处理。但是,对于通知计算机发生故障的中断,则必须将其优先级设置为高于普通的中断使得即使在禁止中断状态也能够被受理。在步骤G7处理器10将正常的数据处理中断时刻的设备场镜,即寄存器的内容写入主存储器51的适当地址。不过在本实施例中,因为使用的是回写型高速缓存,在此时刻与正常的数据更新同样,高速缓存块保持修改状态,在前象存储部分35储存该地址的前象。
之后,处理器10在步骤G8停止前象获取部分32的操作,在步骤G9等待高速缓存清仓执行部分34利用前象存储部分35内的前象把所有修改状态的高速缓存块的数据反写到主存储器51。当高速缓存清仓执行部分34的执行结束时,在步骤G10通过将保存在主存储器51中的设备场境送回对应的寄存器并解除禁止中断状态而重新开始正常的数据处理。
提前清仓方式的效果与第1~第3实施例中的普通清仓方式的对比图示于图25A和图25B中。图中的纵坐标轴为高速缓存清仓执行部分应处理的前象量,横坐标轴为时间。
无论是通常的控制方式(图25A)还是提前清仓方式(图25B),在正常的数据处理一开始之后新获取的前象量几乎是直线上升。
在通常的控制方式中这种状态一直持续到检查点处理之前为止,与此相反,在提前清仓方式中,由于在正常的数据处理半中间起动高速缓存清仓执行部分34,一方面前象获取部分32获取新的前象,另一方面高速缓存清仓执行部分34发出读出·行(Read-Line)命令,结果高速缓存清仓执行部分34应处理的前象景(W指针与F指针之差)的增加减缓,或者减少。图中所示为减少的场合。高速缓存清仓执行部分34应处理的前象量是否会减少可由高速缓存清仓执行部分34的构成方式控制,见下面的说明。
采用这种检查点处理加速装置30时检查点处理所需要的时间几乎与高速缓存清仓执行部分应处理的前象量成正比,而提前清仓方式可以大幅度减少检查点处理所需时间。正常的数据处理的持续时间,如前所述,为数毫秒~数十毫秒,在通常的控制方式时检查点处理所需时间为1毫秒~10毫秒左右。这期间,不能受理来自外部设备的中断可成为本检查点和恢复方式的计算机的应用范围的限制要因。所以,借助提前清仓方式能使检查点处理所需时间减少到原来的,比如说,数分之一就十分有意义了。
但是,提前清仓方式也有使性能劣化的一面。那就是将来在修改状态使用的高速缓存块(主存储器上设置的计数器就是其典型)成为完全·共享(Clean-Shared)状态时,而其后处理器要对该数据更新时必须发出失效(Invalidate)命令这一点。减轻这一性能劣化的方法见后。
下面对检查点处理加速装置30的操作进行说明。
在提前清仓方式的基础上第1~第3实施例的检查点处理加速装置30、30A和30B可以正确工作。由于其工作情况相似,此处只限于对图11所示的第2实施例的场合进行说明。
(初始化)
处理器10将所有标志存储器设置为关。与此同时,处理器10通过执行软件使所有的高速缓存块变为修改状态以外的状态。
(正常的数据处理及检查点处理时)
处理器10在正常的数据处理开始的时刻起动前象获取部分32。此处对按下列顺序进行处理的场合予以说明。
(1)处理器10依a地址的数据由A0变为A1、b地址的数据由B0变为B1的顺序进行数据更新。
(2)处理器10起动高速缓存清仓执行部分34A。
(3)高速缓存清仓执行部分34A向a地地址发出读出·行(Read-Line)命令。
(4)处理器10将a地址的数据由A1更新为A2。其中的a地址、b地址共同对应于高速缓存块BLKO,并假设在初始状态BLKO使a地址的数据A0保存在完全·共享(Clean-Shared)状态。
对这种情况下的操作参照图26予以详细说明。
1:示出初始状态。
2:处理器10准备将a地址的数据更新为A1,由于高速缓存块BLKO将a地址的数据保存在完全·共享(Clean-Shared)状态,对a地址发出失效(Invalidate)命令。
3:具有该数据的高速缓存20如具有a地址的高速缓存块,则使之失效并返回表示结束的应答。
4:前象获取部分32A,由于与a地址对应的标志存储器36是关,使之变为开,并对a地址发出读出·行·非相关(Read-Line-Non-Coherent)命令。
5:主存储器51对数据A0应答。前象获取部分32A将a地址和数据A0的组合存放到前象存储部分35A。
6:处理器10准备将b地址的数据更新为B1,由于高速缓存块BLKO将a地址的数据A1保存在修改状态,将用于把a地址的数据反写的写入·行(Write-Line)命令临时保存在写入缓冲区,先对b地址发出读出·行·带失效(Read-Line-with-Invalidate)命令。
7:主存储器51对数据B0应答。前象获取部分32A,由于与b地址对应的标志存储器36为关,使之变为开,并将b地址和数据B0的组合存放到前象存储部分35A。
8:对保存于写入缓冲区的a地址发出写入·行(Write-Line)命令。
9:主存储器51的a地址变为A1。
10:处理器10在此时刻起动高速缓存清仓执行部分34A。
11:高速缓存清仓执行部分34A利用前象a地址和数据A0的组合在使与a地址对应的标志存储器36变为关的同时对a地址发出读出·行(Read-Line)命令。
12:因为BLKO将b地址的数据B1保存在修改状态下,对修改应答信号线和共享应答信号线都不确认。主存储器51对A1应答。BLKO的状态不变。
13:高速缓存清仓执行部分34A利用前象b地址和数据B0的组合,在使与b地址对应的标志存储器36变为关的同时对b地址发出读出·行(Read-Line)命令。
14:由于BLKO将b地址的数据B1保存在修改状态下,对修改应答信号线确认,向主存储器51反写,主存储器51的b地址变为B1。BLKO的状态变为完全·共享(Clean-Shared)。
15:处理器10准备将a地址的数据更新为A2,由于高速缓存块BLKO将b地址的数据B1保存在完全·共享(Clean-Shared)状态,对a地址发出读出·行·带失效(Read-Line-with-Invalidate)命令。
16:主存储器51返回包含数据A1的应答。前象获取部分32A,由于与a地址对应的标志存储器36为关,使之变为开,将a地址和数据A1的组合存放到前象存储部分35A。
17:高速缓存清仓执行部分34A利用前象a地址和数据A1的组合使与a地址对应的标志存储器36变为关,对a地址发出读出·行(Read-Line)命令。
18:由于BLKO将a地址的数据A2保存在修改状态下,对修改应答信号线确认,向主存储器51反写,主存储器51的a地址变为A2。BLKO的状态变为完全·共享(Clean-Shared)。
上面对本控制方法中的处理器10、主存储器51、前象获取部分32A及高速缓存清仓执行部分34A的正常的数据处理以及检查点处理时的操作例进行了说明。
(发生故障时的恢复处理)
主存储器状态恢复部分33A的操作只不过是向前象存储部35A中所存储的前象按后存放为先的顺序发出写入·行(Write-Line)命令,所以对基于操作例的说明予以割爱。
以上根据提前清仓方式对本发明的第2实施例的检查点处理加速装置的正确工作进行了说明。
下面对检查点处理加速装置30(30A、30B)的功能及构成进行说明。
在第1~第3实施例中示出高速缓存清仓执行部分34(34A、34B)利用F指针将存放在前象存储部分35中的前象按从最初存放的前象起按顺序进行处理的方式。在通常的控制方式的情况下,对前象采用何种顺序处理都无太大变化,而在提前清仓方式的场合这种处理方式有两个优点。
第一个优点是将来在修改状态使用的高速缓存块成为完全·共享(Clean-Shared)状态时,而其后处理器要更新该数据时必须发出失效(Invalidate)命令的这样性能劣化的要因可以得到减轻。
其原因就是获取前象的时刻越早,则在高速缓存清仓执行部分34(34A、34B)准备处理的时刻处于已经修改的状态的高速缓存块实际不存在的可能性就越大,即使高速缓存清仓执行部分34(34A、34B)发出读出·行(Read-Line)命令,因之而变为完全·共享(Clean-Shared)的可能性也很小。
第二个优点是硬件控制容易实现。首先,由于前象获取部分32(32A、32B)利用W指针从最初的项目按顺序写入受到高速缓存清仓执行部分34(34A、34B)利用F指针的追赶,对高速缓存清仓执行部分34(34A、34B)的结束的判断很简单。
另外,在提前清仓方式中,前象获取部分32(32A、32B)和高速缓存清仓执行部分34(34A、34B)间发生对前象存储部分35(35A、35B)的访问竞争。如果对一个存储体的读访问和写访问交互出现的话,由于读访问很慢,最好尽量避免这种状况。特别是在用于具有多个处理器的多处理器系统的场合避免访问竞争很重要。
下面介绍以使用在第1实施例中所述的W指针和F指针为前提很少发生访问竞争的前象存储部分35(35A、35B)的项目的构成及其使用法。
首先,将前半部的n个项目和后半部的n个项目按图27所示分为存储体A和存储体B。之所以分成两个存储体是为了可以同时分别访问各存储体和,如下面所示,不要产生对一个存储体交互出现读访问和写访问的情况。
在正常的数据处理的前半个过程中,即前象获取部分32(32A、32B)工作而高速缓存清仓执行部分34(34A、34B)不工作时,获取的前象存放于存储体A。此时对存储体A只能进行写访问。
之后,当处理器10起动高速缓存清仓执行部分34(34A、34B)时,前象获取部分32(32A、32B)将获取的前象存放于存储体B中。然后高速缓存清仓执行部分34(34A、34B)从存储体A中取出前象。此时,对存储体A只能进行读访问,对存储体B只能进行写访问。
之后,处理器10就在高速缓存清仓对存储体A内的前象全部处理之前开始检查点处理,不久使前象获取部分32(32A、32B)停止工作。此时对存储体B几乎只能进行写访问。
如上所述,通过将存储体的使用状况和高速缓存清仓执行部分34(34A、34B)的起动以及检查点处理的开始连接起来使各存储体几乎永远处于读访问或写访问中的某一种模式,前象的存取可以做到高速化。
另外,在上述的说明中,高速缓存清仓执行部分34(34、34B)是假设由处理器10起动,如果是这种控制方式,前象获取部分32(32A、32B)也可以在将前象存放到存储体A的全部项目中的时刻使高速缓存清仓执行部分34(34A、34B)起动,在该场合,处理器10除了可以省去起动高速缓存清仓执行部分34(34A、34B)的处理外,还有可以充分使用存储体A的容量的优点。
另外,高速缓存清仓执行部分34(34A、34B)可以控制发出读出·行(Read-Line)命令的频度。根据通常的控制方式,因为高速缓存清仓执行部分34(34A、34B)是在处理器10几乎停止操作的状况下工作,所以只有利用存放在前象存储部分35(35A,35B)中的更新地址能以多高的速度发出读出·行(Read-Line)命令是重要的。
但是,根据提前清仓方式,在数据处理过程中间,如果高速缓存清仓执行部分34(34A、34B)产生的读出·行(Read-Line)命令的发生频度过高时,会出现几乎无法进行正常的数据处理的情况。
因此,高速缓存清仓执行部分34(34A、34B)最好具有可使读出·行(Read-Line)命令发出频度减少的模式和使之增加的模式。其实现方法的例子可根据图28中所示的高速缓存清仓执行部分34(34A、34B)的处理流程图进行说明。
此处理流程图是图5中所示的第1实施例的流程图加了一些修正的结果。也即高速缓存清仓执行部分34(34A、34B),根据处理器10的指示,如在步骤H1所示,在使F指针指向初始项目之后,在步骤H2判断F指针与W指针是否一致。如F指针与W指针相等,高速缓存清仓处理结束。此时高速缓存块的状态全部为无效或完全·共享(Clean-Shared)。
在两者不等时,在步骤H3中利用F指针指向的项目中的更新地址发出读出·行(Read-Line)命令,在步骤H4中F指针进1。之所以发出读出·行命令,其目的是为了利用读出·行(Read-Line)及其应答的性质以便使假如存在有将该地址的数据保存在修改状态的高速缓存块,则也将该数据传送给主存储器51并使该高速缓存块的状态由修改状态变为完全·共享(Clean-Shared)状态。F指针进+1后,如步骤H5、H6所示,如前象获取部分32(32A、32B)正在执行中则等待C个周期,否则返回步骤H2,立即发出利用下一个前象的读出·行(Read-Line)命令。
作为此方式的改型,例如前象获取部分32(32A、32B)在最近的数十个周期中,在获取了前象的场合,等待C个周期的方式也可能。
(第5实施例)
下面,说明本发明的第5实施例。在上述的第4实施例中,处理器10在生成检查点时,仅在等待高速缓存清仓执行部分34(34A、34B)结束上(图24中的步骤G9)就要耗费不少时间。作为其改善方法可以采用在生成检查点时由处理器用软件方式执行将高速缓存块的内容反写到主存储器51的高速缓存命令的方法,下面进行说明。另外,在第1~第4实施例中也同时并行使用硬件进行高速缓存清仓。
图29示出了本实施例的处理器10利用检查点加速装置30(30A、30B)执行检查点和返回方式时正常的数据处理及检查点处理的处理流程图。
正常的数据处理与第4实施例的提前清仓方式完全相同,所以略去其说明。
在检查点处理中首先在步骤17使处理器进入禁止中断状态不受理来自外部设备的中断。其目的是为了在检查点处理中不执行正常的数据处理。但是,对通知计算机发生故障的中断必须将其优先级设置为高于通常的中断以便即使处于禁止中断状态也能受到处理。在步骤17处理器10将中断正常的数据处理时刻的设备场境,即寄存器内容,写入主存储器51的适当地址。但是,在本实施例中,因为是使用回写型高速缓存,在此时刻与正常的数据更新同样,在高速缓存块中保持修改状态,其地址的前象存储在前象存储部分35中。
下面,在步骤I9、I10、I12中处理器10执行读出一个高速缓存块标记的高速缓存命令,假如是在修改状态,通过反复执行N次将该高速缓存块的内容反写到主存储器51的高速缓存命令的这种处理,就对N个高速缓存块进行高速缓存清仓处理。
于是,在此时刻,根据清仓命令进行的高速缓存清仓处理到达最后一个块而结束时(步骤I10)、在步骤I11中使高速缓存清仓执行部分34(34A、34B)停止之后,在步骤I13通过将保存在主存储器51中的设备场境送回对应的寄存器和解除禁止中断状态而重新开始正常的数据处理。
在步骤I10如果根据清仓命令进行的高速缓存清仓处理未到达最后一个块,因为在此处理期间高速缓存清仓执行部分34(34A、34B)的操作还在继续,处理器10在步骤I12判断高速缓存清仓执行部分34(34A、34B)的执行是否结束。如执行已结束,在步骤I13通过将保存在主存储器51中的设备场境送回对应的寄存器并解除禁止中断状态而重新开始正常的数据处理。
本方式的效果是可以缩短检查点处理所需的时间。特别是在系统总线40的传送能力非常大,以至于仅就高速缓存清仓执行部分34(34A、34B)而言系统总线的传送能力有余的情况下,通过同时并行使用根据高速缓存命令进行的高速缓存清仓,可使检查点处理所需时间缩短。
另外,也研究出了这种方式的改型,即在检查点处理开始的时刻使高速缓存清仓执行部分34(34A、34B)的操作中途停止而仅仅进行利用高速缓存命令的高速缓存清仓处理。原本根据高速缓存命令的软件方式的高速缓存清仓处理与高速缓存清仓执行部分34(34A、34B)不同,具有不在系统总线40上发送无用的总线命令的优点。因而在处理器数目有一定程度增加、所有处理器一起处理根据高速缓存命令进行的高速缓存清仓处理时要充分利用系统总线40的传送能力的场合本方式很有效。
此外,也可以以提前清仓方式为基础,以通过仅仅进行高速缓存操作命令的高速令缓存清仓处理的方法(此方法称为单独高速缓存命令式)执行检查点处理为前提,可以对检查点处理加速装置做如下改良。
在第4实施例中所说明的检查点处理加速装置30(30A、30B)中高速缓存清仓执行部分34(34A、34B)是从最初获取的前象开始顺序使用的装置。但是,在单独高速缓存命令方式的场合,检查点处理加速装置30(30A、30B)的高速缓存清仓执行部分34(34A、34B)使用哪一个前象都没什么关系。于是,为了使系统性能不受损失,对于多次反复写入的那种高速缓存块,其内容最好不要反写入主存储器。
作为实现这一点的手段,研究出了一种使高速缓存清仓执行部分34(34A、34B)不是从最初获取的前象开始而是使用中间获取的前象的方法。其原因是包含在最初获取的前象中的地址在其后频繁使用的可能性比包含在中间获取的前象中的地址要高的情况很多之故。
本发明并不仅限于上述实施例,其实施也可以有种种改型。例如,第4和第5实施例除了可分别应用于第1~第3实施例中任何一个之外,还可以将第4和第5实施例组合起来应用于第1~第3实施例的任何一个。
如以上所说明的,根据本发明,在处理器对高速缓存上的数据更新时,前象获取部分获取该更新地址和更新前数据并存储于前象存储部分。之后,高速缓存清仓执行部分,在处理器发出指示时,利用存放在前象存储部分中的所有地址,通过向系统发出要求将具有该地址的更新状态的高速缓存块的内容反写到主存储器的命令而执行高速缓存清仓。另一方面,主存储器状态恢复部分在处理器发出指示时,通过向系统发出要求将前象存储部分中所存放的所有更新前数据从新存放的开始按顺序写入主存储器进行更新的命令而使主存储器恢复到前象存储部分中什么都不存储的状态。
也就是说,如采用本检查点处理加速装置,就可以不需要具备特殊的高速缓存而在配置标准处理器的计算机系统中实现高效的检查点和恢复功能。另外,由于与过去那种通过处理器执行高速缓存清仓用软件而实施高速缓存清仓的情况相比可以大幅度提高速度,所以检查点和恢复方式的计算机整体性能可以提高。
另外,如果对应于在高速缓存上确保的高速缓存块设置标志存储器而避免重复存放前象,或者设定互相间没有共通部分的地址范围、对应此设定的地址范围分别设置块计数器而避免不需要的高速缓存清仓操作,则可以更进一步提高性能自不待言。
Claims (42)
1.一种检查点处理加速装置,用于具备至少一个以上的带有总线窥探机构的回写型高速缓存存储器的处理器、主存储器和将上述处理器和上述主存储器连接起来的系统总线的计算机中,其特征在于包括:
将发生数据更新的更新地址及其更新前的数据构成组的多个前象进行存储的前象存储装置、
通过对上述系统总线的监视来检测指示了在上述高速缓存上发生了数据更新的命令及对它的应答、
在它们包含更新地址及更新前数据的场合,将该地地址及更新前的数据存放于上述前象存储装置、
在包含发生更新的地址但不包含更新前的数据的场合,则利用上述命令所包含的地址,在上述总线上发出将用来读出该更新前的数据的命令并将上述地址及读出的更新前的数据存放于上述的前象存储装置的前象获取装置、
在上述处理器有指示发出时,对于存放于上述前象存储装置中的所有地址,在上述系统总线上发出要求将各该地址所指示的更新状态的数据反写到主存储器的高速缓存清仓执行装置以及
在上述处理器有指示发出时对于存放于上述前象存储装置中的所有更新前数据,在上述系统总线上发出要求从新存放的开始,顺序地更新写入主存储器的命令的主存储器状态恢复装置。
2.如权利要求1中所述的检查点处理加速装置,其特征在于还包括:
将上述主存储器用上述高速缓存中可保证的高速缓存块的大小进行分割,分别对应于由这一分割所定义的多个区域中的至少一个以上的区域、分配有开和关两种状态的标志存储器,其中,
上述前象获取装置在获取上述前象之际、
在设置有与该更新地址对应的标志存储器并且该标志存储器为“关”的时候,在将上述标志存储器设定为“开”的同时将上述前象存放到上述前象存储装置中、
在设置有与该更新地址对应的标志存储器并且该标志存储器为开的时候,不将上述前象存放到上述前象存储装置中、
在没有设置与该更新地址对应的标志存储器的时候,具备将上述前象存储到前象存储装置中的装置、
上述高速缓存清仓执行装置,在发出命令要求由上述前象存储装置中取出前象、将更新状态的高速缓存块的反内容写到上述主存储器之际、
在设置有与该地址对应的标志存储器之时,具备将该标志存储器设定为关的装置。
3.如权利要求1中所述的检查点处理加速装置,其特征在于还包括:
分别对应于采用使其相互间没有共同部分的一个以上的地址范围而设置的保存属于上述地址范围的更新状态的高速缓存块数的块计数器和、
监视上述系统总线上的命令及其应答、在检测到上述高速缓存块转移到更新状态之际、当存在有与该地址对应的上述块计数器时、使该块计数器增加+1、
在检测到上述高速缓存块更新状态转移到其以外的状态之际、在存在有与该地址对应的上述块计数器时,使该块计数器减少-1的计数器控制装置,其中,
上述高速缓存清仓执行装置具备在系统总线上对上述前象存储装置中存放的所有地址发出命令要求在对应该地址的上述块计数器不存在或是块计数器即使存在但该值不是其初始值之时,将该地址的更新状态的高速缓存块的内容反写到主存储器的装置。
4.如权利要求3中所述的检查点处理加速装置,其特征在于:
上述高速缓存是直接映射方式的高速缓存,并且上述的块计数器是和高速缓存块一对一地对应设置。
5.如权利要求3中所述的检查点处理加速装置,其特征在于:
上述高速缓存是n路的组相联方式的高速缓存,并且上述的块计数器是和由n个高速缓存块形成的组一对一地对应设置。
6.如权利要求1中所述的检查点处理加速装置,其特征在于还包括:
将上述主存储器用上述高速缓存中可保证的高速缓存块的大小进行分割,分别对应于由这一分割所定义的多个区域中的至少一个以上的区域、分配有“开”和“关”两种状态的标志存储器和
监视上述系统总线上的命令及其应答、
在检测到上述高速缓存块转移到更新状态之际,当设置有与该地址对应的上述标志存储器时将该标志存储器设定为“开”、
在检测到上述高速缓存块由更新状态转移到其以外的状态之际, 当设置有与该地址对应的上述标志寄存器时将该标志存储器设定为“关”的标志存储器控制装置,其中,
上述高速缓存清仓执行装置具备在系统总线上对上述前象存储装置中存放的所有地址发出命令要求在对应该地址的上述标志存储器未设置时或是即使设置但其状态是“开”的时候,将该地址的更新状态高速缓存块的内容写回到主存储器的装置。
7:如权利要求1、2、3、4、5或6中所述的检查点处理加速装置,其构成还包括:
在上述前象获取装置检测到显示在上述高速缓存上发生了数据更新的命令或对它的应答时根据该更新地址来判断是否将该前象存放到上述前象存储装置的地址判定装置。
8.如权利要求1、2、3、4、5或6中所述的检查点处理加速装置,其构成还包括:
对存放在上述前象存储装置中的上述前象是否应由上述主存储器状态恢复装置写回到上述主存储器一点根据其更新地址进行判断的地址判定装置。
9.如权利要求1、2、3、4、5或6中所述的检查点处理加速装置,其特征在于:上述前象获取装置在上述高速缓存上的数据更新之际,当该更新对象的数据是在另外的高速缓存上更新并保持的数据时,不将上述前象存放到上述前象存储装置中。
10.如权利要求1、2、3、4、5或6中所述的检查点处理加速装置,其构成还包括:
在上述高速缓存块分配到多个管理状态之中,该高速缓存块保持的数据在另外的处理器的高速缓存中不保持并且包含说明和主存储器上是相同数据的完全互斥状态时,对任何一个高速缓存发出的读入主存储器数据的要求命令发出保持有该数据的应答、上述高速缓存块变成完全·互斥状态的防止应答装置。
11.如权利要求1、2、3、4、5或6中所述的检查点处理加速装置,其特征在于,上述前象获取装置的构成包括:
在检测到更新上述主存储器内容的命令时(不借助上述高速缓存机构),中止该命令的执行、向上述系统总线发出利用上述命令中所包含的更新地址从上述主存储器读出更新前的数据的命令、将上述地址和读出的更新前数据存放到上述前象存储装置中的装置和
在再次发出使上述执行中止的命令时不使该命令执行中止的装置。
12.如权利要求1、2、3、4、5或6中所述的检查点处理加速装置,其特征在于:上述前象获取装置的构成包括对上述处理器指示的地址范围、对上述系统总线发出由上述主存储器读出更新前数据命令、将上述地址和读出的该更新前数据形成组合的前象存放到上述前象存放装置中的装置。
13.如权利要求1、2或3中所述的检查点处理加速装置,其特征在于上述前象获取装置和上述高速缓存清仓执行装置可以并行执行。
14.如权利要求13中所述的检查点处理加速装置,其特征在于上述高速缓存清仓执行装置是从上述前象存储装置中存储的前象中的在最早的时刻获取的前象开始顺序地进行处理。
15.如权利要求13中所述的检查点处理加速装置,其特征在于上述前象存储装置是由互相独立的多个存储器构成。
16.如权利要求13中所述的检查点处理加速装置,其特征在于上述前象存储装置具有互相独立的第1和第2存储器、
上述前象获取装置具有在上述高速缓存清仓执行装置不操作时将获取的前象存放到上述第1存储器、而在上述高速缓存清仓执行装置操作开始时将获取的前象存放到第2存储器的装置、
上述高速缓存清仓执行装置具有从上述第1存储器存放的前象开始处理的装置。
17.如权利要求16中所述的检查点处理加速装置,其特征在于上述高速缓存清仓执行装置在由上述前象获取装置在上述第1存储器的全体内将上述前象存放时起动。
18.如权利要求1、2、3、4、5或6中所述的检查点处理加速装置,其特征在于将上述前象存储装置的乘余容量少于予先确定的量通知给处理器的通知装置。
19.如权利要求18中所述的检查点处理加速装置,其特征在于上述高速缓存清仓执行装置具备在上述前象获取装置处于执行中时把要求将更新状态的高速缓存块的内容反写到主存储器的命令的发出频度抑制在预定数值以内、而在上述前象获取装置停止工作时提高上述命令发出频度的装置。
20.一种计算机系统,具备至少一个以上的带有总线窥探机构的回写型高速缓存处理器的处理器、主存储器及将上述处理器和上述主存储器连接起来的系统总线,定期地获取用于重新开始被中断了的处理的检查点,同时进行数据处理,其特征在于包括:
由将发生数据更新的地址及其更新前的数据构成组的多个前象进行存储的前象存储装置、
通过对上述系统总线的监视来检测表示了在上述高速缓存上发生了数据更新的命令及对它的应答、
在它们包含更新地址及更新前的数据的场合,将该地址及更新前的数据存放于上述前象存储装置、
在包含发生更新的地址但不包含更新前的数据的场合,则利用上述命令所包含的地址,在上述总线上发出用来读出该更新前的数据的命令并将上述地址及读出的更新前的数据存放于上述的前象存储装置的前象获取装置、
在上述处理器有指示发出时,对于存放于上述前象存储装置中的所有地址,在上述系统总线上发出要求将各该地址所指示的更新状态的数据反写到主存储器的高速缓存清仓执行装置以及
在上述处理器有指示发出时,对于存放于上述前象存储装置中的所有更新前数据,在上述系统总线上发出要求从新存放的开始,顺序地更新写入主存储器的命令的主存储器状态恢复装置构成的检查点处理加速装置、
使上述检查点处理加速装置的前象获取装置工作的同时执行正常的数据处理的数据处理装置、
将所有处理器同步执行的数据处理中的设置场境存放到主存储器及将前述检查点处理加速装置的高速缓存清仓执行装置执行的所有更新状态的块的内容反写到上述主存储器的检查点生成装置和
在故障发生时使所有高速缓存块失效、利用上述检查点处理加速装置的主存储器恢复装置使主存储器恢复到最靠近的一个检查点时刻的状态、并利用这一恢复后的主存储器中所存放的信息重新开始数据处理的返回和恢复装置。
21.如权利要求20中所述的计算机系统,其特征在于还包括:
将上述主存储器用上述高速缓存中可保证的高速缓存块的大小进行分割,分别对应于由这一分割所定义的多个区域中至少一个以上的区域、分配有开和关两种状态的标志存储器,
上述前象获取装置在获取上述前象之际、
在设置有与该更新地址对应的标志存储器并且该标志存储器为关的时候,在将上述标志存储器设定为开的同时将上述前象存放到上述前象存储装置中、
在设置有与该更新地址对应的标志存储器并且该标志存储器为开的时候,不将上述前象存放到上述前象存储装置中、
在没有设置与该更新地址对应的标志存储器的时候,具备将上述前象存储到前象存储装置中的存储装置、
上述高速缓存清仓执行装置,在发出命令要求由上述前象存储装置中取出前象、将更新状态的高速缓存块的内容反写到上述主存储器之际、
在设置有与该地址对应的标志存储器之时,具备将该标志存储器设定为关的装置。
22.如权利要求20中所述的计算机系统,其特征在于还包括:
分别对应于采用使其相互间没有共同部分的一个以上的地址范围而设置的保存属于上述地址范围的更新状态的高速缓存块数的块计数器和、
监视上述系统总线上的命令及其应答、在检测到上述高速缓存块转移到更新状态之际、当存在有与该地址对应的上述块计数器时、使该块计数器增加+1、
在检测到上述高速缓存块更新状态转移到其以外的状态之际、在存在有与该地址对应的上述块计数器时使该块计数器减少-1的计数器控制装置,其中,
上述高速缓存清仓执行装置具备在系统总线上对上述前象存储装置中存放的所有地址发出命令要求在对应该地址的上述块计数器不存在或是块计数器即使存在但该值不是其初始值之时,将该地址的更新状态的高速缓存块的内容反写到主存储器的装置。
23.如权利要求22中所述的计算机系统,其特征在于:
上述高速缓存是以直接映射方式的高速缓存,并且上述的块计数器是和高速缓存块一对一地对应设置。
24.如权利要求22中所述的计算机系统,其特征在于:
上述高速缓存是n路的组相联方式的高速缓存,并且上述的计数器是和由n个高速缓存块形成的组一对一地设置。
25.如权利要求20中所述的计算机系统,其特征在于还包括:
将上述主存储器用上述高速缓存中可保证的高速缓存块的大小进行分割,分别对应于由这一分割所定义的多个区域中的至少一个以上的区域、分配有开和关两种状态的标志存储器和
监视上述系统总线上的命令及其应答、
在检测到上述高速缓存块转移到更新状态之际,当设置有与该地址对应的上述标志存储器时将该标志存储器设定为开、
在检测到上述高速缓存块由更新状态转移到其以外的状态之际,当设置有与该地址对应的上述标志寄存器时将该标志存储器设定为关的标志存储器控制装置,其中,
上述高速缓存清仓执行装置具备在系统总线上对上述前象存储装置中存放的所有地址发出命令要求在对应该地址的上述标志存储器未设置时或是即使设置但其状态是开的时候,将该地址的更新状态高速缓存块的内容反写到主存储器的装置。
26.如权利要求20、21、22、23、24或25中所述的计算机系统,其构成还包括:
在上述前象获取装置检测到显示在上述高速缓存上发生了数据更新的命令或对它的应答时根据该更新地址来判断是否将该前象存放到上述前象存储装置的地址判定装置。
27.如权利要求20、21、22、23、24或25中所述的计算机系统,其构成还包括:
对存放在上述前象存储装置中的上述前象是否应由上述主存储器状态恢复装置回写到上述主存储器一点根据其更新地址进行判断的地址判定装置。
28.如权利要求20、21、22、23、24或25中所述的计算机系统,其构成还包括:
上述前象获取装置在上述高速缓存上的数据更新之际,当该更新对象的数据是在另外的高速缓存上更新并保持的数据时,不将上述前象存放到上述前象存储装置中。
29.如权利要求20、21、22、23、24或25中所述的计算机系统,其构成还包括:
在上述高速缓存块分配到多个管理状态之中,该高速缓存块保持的数据在另外的处理器的高速缓存中不保持并且包含说明和主存储器上是相同数据的完全互斥状态时,对任何一个高速缓存发出的读入主存储器数据的要求命令发出保持有该数据的应答、上述高速缓存块变成完全·互斥状态的防止应答装置。
30.如权利要求20、21、22、23、24或25中所述的计算机系统,其特征在于上述前象获取装置的构成包括:
在不借助上述高速缓存机构,检测到更新上述主存储器内容的命令时中止该命令的执行、向上述系统总线发出利用上述命令中所包含的更新地址从上述主存储器读出更新前的数据的命令、将上述地址和读出的更新前数据存放到上述前象存储装置中的装置和
在再次发出使上述执行中止的命令时不使该命令执行中止的装置。
31.如权利要求20、21、22、23、24或25中所述的计算机系统,其特征在于:
上述前象获取装置的构成包括对上述处理器指示的地址范围、对上述系统总线发出由上述主存储器读出更新前数据命令、将上述地址和读出的该更新前数据形成组合的前象存放到上述前象存放装置中的装置。
32.如权利要求20、21或22中所述的计算机系统,其特征在于上述前象获取装置和上述高速缓存清仓执行装置可以并行执行。
33.如权利要求32中所述的计算机系统,其特征在于,上述高速缓存清仓执行装置是从上述前象存储装置中存储的前象中的在最早的时刻获取的前象开始顺序地进行处理。
34.如权利要求32中所述的计算机系统,其特征在于,上述前象存储装置是由互相独立的多个存储器构成。
35.如权利要求32中所述的计算机系统,其特征在于上述前象存储装置具有互相独立的第1和第2存储器、
上述前象获取装置具有在上述高速缓存清仓执行装置不操作时将获取的前象存放到上述第1存储器、而在上述高速缓存清仓执行装置操作开始时将获取的前象存放到第2存储器的装置、
上述高速缓存清仓执行装置具有从上述第1存储器存放的前象开始处理的装置。
36.如权利要求35中所述的计算机系统,其特征在于,上述高速缓存清仓执行装置在由上述前象获取装置在上述第1存储器的全体内将上述前象存放时起动。
37.如权利要求20、21、22、23、24或25中所述的计算机系统,其特征在于,将上述前象存储装置的残余量按予先确定的量减少一事先通知处理器的通知装置。
38.如权利要求37中所述的计算机系统,其特征在于上述高速缓存清仓执行装置具备在上述前象获取装置处于执行中把要求将更新状态的高速缓存块的内容反写到主存储器的命令的发出频度抑制在预定数值以内、而在上述前象获取装置停止工作时提高上述命令发出频度的装置。
39.如权利要求20中所述的计算机系统,其特征在于,上述的高速缓存清仓起动装置的起动在操作上是由在检查点获取装置之前动作的数据处理装置进行的。
40.如权利要求39中所述的计算机系统,其特征在于上述检查点形成装置可以并行利用上述检查点处理加速装置的高速缓存清仓执行装置的高速缓存清仓操作和执行清仓操作命令的高速缓存清仓操作。
41.如权利要求39中所述的计算机系统,其特征在于,上述检查点形成装置使上述检查点处理加速装置的高速缓存清仓执行装置停止工作而执行根据执行清仓操作命令而执行的高速缓存清仓。
42.如权利要求41中所述的计算机系统,其特征在于,上述检查点处理加速装置的高速缓存清仓执行装置可由在中间获取的前象开始使用之。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP234321/96 | 1996-09-04 | ||
JP234321/1996 | 1996-09-04 | ||
JP8234321A JP2916420B2 (ja) | 1996-09-04 | 1996-09-04 | チェックポイント処理加速装置およびデータ処理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1175732A true CN1175732A (zh) | 1998-03-11 |
CN1111790C CN1111790C (zh) | 2003-06-18 |
Family
ID=16969185
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN97113166A Expired - Fee Related CN1111790C (zh) | 1996-09-04 | 1997-05-30 | 检查点处理加速装置及具有该装置的计算机 |
Country Status (7)
Country | Link |
---|---|
US (1) | US6088773A (zh) |
EP (1) | EP0834811B1 (zh) |
JP (1) | JP2916420B2 (zh) |
KR (1) | KR100233205B1 (zh) |
CN (1) | CN1111790C (zh) |
DE (1) | DE69703574T2 (zh) |
TW (1) | TW384427B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100449499C (zh) * | 2005-06-23 | 2009-01-07 | 国际商业机器公司 | 在微处理器恢复单元中进行写队列读数据的方法和装置 |
CN104657229A (zh) * | 2015-03-19 | 2015-05-27 | 哈尔滨工业大学 | 基于高可用性硬件检查点的多核处理器卷回恢复系统及其卷回恢复方法 |
CN104699574A (zh) * | 2013-12-09 | 2015-06-10 | 华为技术有限公司 | 一种建立处理器Cache检查点的方法、装置及系统 |
Families Citing this family (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2916421B2 (ja) * | 1996-09-09 | 1999-07-05 | 株式会社東芝 | キャッシュフラッシュ装置およびデータ処理方法 |
TW379298B (en) * | 1996-09-30 | 2000-01-11 | Toshiba Corp | Memory updating history saving device and memory updating history saving method |
JPH10320274A (ja) * | 1997-03-19 | 1998-12-04 | Toshiba Corp | キャッシュフラッシュ装置及び同装置を備えた計算機システム、記録媒体 |
FR2778254B1 (fr) * | 1998-04-29 | 2002-02-15 | Texas Instruments France | Circuits,systemes et procedes d'ordinateur utilisant un nettoyage partiel d'une memoire cache |
US6332199B1 (en) * | 1998-10-29 | 2001-12-18 | International Business Machines Corporation | Restoring checkpointed processes including adjusting environment variables of the processes |
JP2002123479A (ja) | 2000-10-17 | 2002-04-26 | Hitachi Ltd | ディスク制御装置およびそのキャッシュ制御方法 |
US6779087B2 (en) * | 2001-04-06 | 2004-08-17 | Sun Microsystems, Inc. | Method and apparatus for checkpointing to facilitate reliable execution |
US6766428B2 (en) * | 2001-04-06 | 2004-07-20 | Sun Microsystems, Inc. | Method and apparatus for storing prior versions of modified values to facilitate reliable execution |
JP3804823B2 (ja) * | 2001-07-03 | 2006-08-02 | 日本電気株式会社 | 障害回復機能を備えたキャッシュシステムとそのキャッシュ制御方法 |
US7472230B2 (en) * | 2001-09-14 | 2008-12-30 | Hewlett-Packard Development Company, L.P. | Preemptive write back controller |
GB2381088B (en) * | 2001-10-15 | 2006-02-08 | Jacobs Rimell Ltd | State recovery |
US6993630B1 (en) * | 2002-09-26 | 2006-01-31 | Unisys Corporation | Data pre-fetch system and method for a cache memory |
US6976128B1 (en) * | 2002-09-26 | 2005-12-13 | Unisys Corporation | Cache flush system and method |
US6934810B1 (en) * | 2002-09-26 | 2005-08-23 | Unisys Corporation | Delayed leaky write system and method for a cache memory |
US6973541B1 (en) * | 2002-09-26 | 2005-12-06 | Unisys Corporation | System and method for initializing memory within a data processing system |
KR100856626B1 (ko) * | 2002-12-24 | 2008-09-03 | 엘지노텔 주식회사 | 캐시 플러시 시스템 및 방법 |
US7440884B2 (en) * | 2003-01-23 | 2008-10-21 | Quickturn Design Systems, Inc. | Memory rewind and reconstruction for hardware emulator |
CA2435148A1 (en) * | 2003-07-15 | 2005-01-15 | Robert J. Blainey | System and method for lock caching for compound atomic operations on shared memory |
US9213609B2 (en) * | 2003-12-16 | 2015-12-15 | Hewlett-Packard Development Company, L.P. | Persistent memory device for backup process checkpoint states |
US20050216552A1 (en) * | 2004-03-24 | 2005-09-29 | Samuel Fineberg | Communication-link-attached persistent memory system |
JP4892812B2 (ja) * | 2004-04-28 | 2012-03-07 | 株式会社日立製作所 | キャッシュ制御およびデータ処理システム並びにその処理プログラム |
US7290166B2 (en) * | 2004-07-28 | 2007-10-30 | Intel Corporation | Rollback of data |
US7496787B2 (en) * | 2004-12-27 | 2009-02-24 | Stratus Technologies Bermuda Ltd. | Systems and methods for checkpointing |
US7506132B2 (en) * | 2005-12-22 | 2009-03-17 | International Business Machines Corporation | Validity of address ranges used in semi-synchronous memory copy operations |
US7555424B2 (en) * | 2006-03-16 | 2009-06-30 | Quickturn Design Systems, Inc. | Method and apparatus for rewinding emulated memory circuits |
US8001342B2 (en) * | 2006-03-29 | 2011-08-16 | International Business Machines Corporation | Method for storing and restoring persistent memory content and virtual machine state information |
JP4479743B2 (ja) * | 2007-04-24 | 2010-06-09 | 株式会社デンソー | ロールバック方法及び情報処理装置 |
JP5251002B2 (ja) * | 2007-05-25 | 2013-07-31 | 富士通株式会社 | 分散処理プログラム、分散処理方法、分散処理装置、および分散処理システム |
US9131240B2 (en) * | 2007-08-23 | 2015-09-08 | Samsung Electronics Co., Ltd. | Video decoding method and apparatus which uses double buffering |
US8615678B1 (en) * | 2008-06-30 | 2013-12-24 | Emc Corporation | Auto-adapting multi-tier cache |
JP5300407B2 (ja) | 2008-10-20 | 2013-09-25 | 株式会社東芝 | 仮想アドレスキャッシュメモリ及び仮想アドレスキャッシュ方法 |
JP2010097557A (ja) * | 2008-10-20 | 2010-04-30 | Toshiba Corp | セットアソシアティブ方式のキャッシュ装置及びキャッシュ方法 |
JP2011198091A (ja) | 2010-03-19 | 2011-10-06 | Toshiba Corp | 仮想アドレスキャッシュメモリ、プロセッサ及びマルチプロセッサシステム |
WO2013101201A1 (en) * | 2011-12-30 | 2013-07-04 | Intel Corporation | Home agent multi-level nvm memory architecture |
US9251002B2 (en) | 2013-01-15 | 2016-02-02 | Stratus Technologies Bermuda Ltd. | System and method for writing checkpointing data |
US9251003B1 (en) * | 2013-08-14 | 2016-02-02 | Amazon Technologies, Inc. | Database cache survivability across database failures |
WO2015102874A2 (en) | 2013-12-30 | 2015-07-09 | Stratus Technologies Bermuda Ltd. | Method of delaying checkpoints by inspecting network packets |
US9588844B2 (en) | 2013-12-30 | 2017-03-07 | Stratus Technologies Bermuda Ltd. | Checkpointing systems and methods using data forwarding |
WO2015102873A2 (en) | 2013-12-30 | 2015-07-09 | Stratus Technologies Bermuda Ltd. | Dynamic checkpointing systems and methods |
US10394641B2 (en) * | 2017-04-10 | 2019-08-27 | Arm Limited | Apparatus and method for handling memory access operations |
US11550485B2 (en) * | 2018-04-23 | 2023-01-10 | Sap Se | Paging and disk storage for document store |
US20220269614A1 (en) * | 2021-02-22 | 2022-08-25 | Microsoft Technology Licensing, Llc | Treating main memory as a collection of tagged cache lines for trace logging |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4740969A (en) * | 1986-06-27 | 1988-04-26 | Hewlett-Packard Company | Method and apparatus for recovering from hardware faults |
JPH0752399B2 (ja) * | 1988-06-30 | 1995-06-05 | インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン | 記憶システム |
US5408651A (en) * | 1993-09-27 | 1995-04-18 | Bull Hn Information Systems Inc. | Store "undo" for cache store error recovery |
JP3086779B2 (ja) * | 1995-06-19 | 2000-09-11 | 株式会社東芝 | メモリ状態復元装置 |
JP2902976B2 (ja) * | 1995-06-19 | 1999-06-07 | 株式会社東芝 | キャッシュフラッシュ装置 |
-
1996
- 1996-09-04 JP JP8234321A patent/JP2916420B2/ja not_active Expired - Fee Related
-
1997
- 1997-03-03 TW TW086102499A patent/TW384427B/zh not_active IP Right Cessation
- 1997-04-18 KR KR1019970014318A patent/KR100233205B1/ko not_active IP Right Cessation
- 1997-05-30 CN CN97113166A patent/CN1111790C/zh not_active Expired - Fee Related
- 1997-08-27 US US08/917,923 patent/US6088773A/en not_active Expired - Lifetime
- 1997-08-29 DE DE69703574T patent/DE69703574T2/de not_active Expired - Fee Related
- 1997-08-29 EP EP97115030A patent/EP0834811B1/en not_active Expired - Lifetime
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100449499C (zh) * | 2005-06-23 | 2009-01-07 | 国际商业机器公司 | 在微处理器恢复单元中进行写队列读数据的方法和装置 |
CN104699574A (zh) * | 2013-12-09 | 2015-06-10 | 华为技术有限公司 | 一种建立处理器Cache检查点的方法、装置及系统 |
CN104699574B (zh) * | 2013-12-09 | 2018-04-20 | 华为技术有限公司 | 一种建立处理器Cache检查点的方法、装置及系统 |
CN104657229A (zh) * | 2015-03-19 | 2015-05-27 | 哈尔滨工业大学 | 基于高可用性硬件检查点的多核处理器卷回恢复系统及其卷回恢复方法 |
Also Published As
Publication number | Publication date |
---|---|
EP0834811B1 (en) | 2000-11-22 |
CN1111790C (zh) | 2003-06-18 |
JPH1078918A (ja) | 1998-03-24 |
DE69703574D1 (de) | 2000-12-28 |
US6088773A (en) | 2000-07-11 |
EP0834811A1 (en) | 1998-04-08 |
TW384427B (en) | 2000-03-11 |
JP2916420B2 (ja) | 1999-07-05 |
KR100233205B1 (ko) | 1999-12-01 |
DE69703574T2 (de) | 2001-06-13 |
KR19980024007A (ko) | 1998-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1111790C (zh) | 检查点处理加速装置及具有该装置的计算机 | |
CN1192315C (zh) | 高速缓存清理装置以及具备该装置的计算机系统 | |
CN1130644C (zh) | 一种在具有多系统总线的计算机系统中保持存储器相关性的系统和方法 | |
CN1303536C (zh) | 执行自高速缓存的快速推测式加载运算的微处理器及方法 | |
CN1225709C (zh) | 分散存储型多处理机系统及故障恢复方法 | |
CN1282929C (zh) | 高速缓存一致性协议的非随机分布式冲突解决 | |
CN1286117C (zh) | 半导体存储装置 | |
CN1021380C (zh) | 计算系统的命令传递 | |
CN1195276C (zh) | 用于维护链接表的方法和装置 | |
CN101052949A (zh) | 操作系统 | |
CN1298521A (zh) | 具有二维或多维可编程序的单元结构(fpgas、dpgas等)的数据流处理器和模块的无死锁配置方法 | |
CN1866399A (zh) | 存储器控制器、非易失性存储器、非易失性存储系统和数据写入方法 | |
CN1916877A (zh) | 在处理器与存储器流控制器间传送命令参数的系统和方法 | |
CN1573656A (zh) | 并行处理系统中的电源管理系统及电源管理程序 | |
CN1427335A (zh) | 电路组控制系统 | |
CN101034381A (zh) | 多主机系统和数据传送系统 | |
CN1498367A (zh) | 信息处理装置、存储器管理装置、存储器管理方法及信息处理方法 | |
CN1702634A (zh) | 便利无环境主机干预下的可分页模式虚拟环境存储管理 | |
CN1240005C (zh) | 将生产测试接口接至全局串行总线的方法和装置 | |
CN1934543A (zh) | 高速缓冲存储器及其控制方法 | |
CN1728685A (zh) | 促进可分页模式虚拟环境中的数据传输的方法和系统 | |
CN1378665A (zh) | 编程概念 | |
CN1641567A (zh) | 自堆栈快取存储器进行快速推测性弹出操作方法及装置 | |
CN1175034A (zh) | 存储器控制器和存储器控制系统 | |
CN1632877A (zh) | 可变延滞时间堆栈快取存储器及提供资料的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C06 | Publication | ||
PB01 | Publication | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20030618 Termination date: 20150530 |
|
EXPY | Termination of patent right or utility model |