用于存储分配高速缓存缺失的错误恢复的存储缓冲器的利用的制作方法

文档序号:6593709阅读:164来源:国知局
专利名称:用于存储分配高速缓存缺失的错误恢复的存储缓冲器的利用的制作方法
技术领域
本公开通常涉及一种数据处理系统,并且更具体而言,涉及用于存储分配高速缓存缺失(cache miss)的错误恢复的存储缓冲器的利用。
背景技术
在当今的许多数据处理系统中,当在用于回写式(copyback)存储的高速缓存中支持写分配时,在存储的高速缓存缺失时,将存储数据放置在行填充缓冲器中,并且对该高速缓存的数据行启动提取以便与存储数据合并,然后通过新修改的高速缓存行,来更新该高速缓存。存储数据不写入到存储器中。如果由于例如系统错误或来自提供高速缓存行的存储器的不可校正的存储器错误,导致当提取高速缓存行时出现错误,不能够使行填充缓冲器中的行被有效并放置在高速缓存中,以及会丢失来自临时存储到等待从初始高速缓存行的存储器返回的行填充缓冲器中的同一行的初始存储和任何后续存储的存储数据。由于在这些系统中,不可能易于恢复,因此,这些错误可能导致性能损失。


通过示例来说明本发明,并且不受附图的限制,其中,相同的附图标记表示类似的元素。为简化和清楚起见,示例说明图中的元素并且不必按比例绘制。图1以框图的形式示出根据本发明的一个实施例的数据处理系统。图2以框图的形式示出根据本发明的一个实施例的、图1的数据处理系统的高速缓存和缓冲器电路的一部分。图3以流程图的形式示出根据本发明的一个实施例的图2的高速缓存和缓冲器电路的操作。图4和5示出根据不同示例情形的、图2的高速缓存和缓冲器电路内的各个信号的时序图。图6和7示出根据不同示例情形的、图2的高速缓存和缓冲器电路的存储缓冲队列的一部分。图8以框图的形式示出根据本发明的一个实施例的、图1的数据处理系统的高速缓存和缓冲器电路的一部分。图9示出根据一个示例情形的图8的高速缓存和缓冲器电路的存储缓冲队列的一部分。
具体实施例方式在数据处理系统内的高速缓存行提取期间出现的错误可能对性能和可靠性不利。在一个实施例中,在高速缓存中缺失时,在高速缓存中缺失的非写通式 (non-writethrough)存储存取被存储在多个位置中。例如,其被存储在行填充缓冲区项中(或直接存储在所分配的高速缓存项中,如果无行填充缓冲器存在的话),以及存储在存储缓冲(SB)队列中,存储缓冲(SB)队列通常用于在将写通式存储存取放置到用于存储到系统存储器中系统互联上之前缓冲它们。用这种方式,在与用于高速缓存中的存储的存储数据合并的相应的高速缓存行提取期间出现错误的情况下,不会丢失高速缓存中缺失的、来自非写通式存储存取的存储数据。由于来自非写通式存储存取的存储数据作为有条件存储存取也被存储在SB队列中,因此在用于高速缓存项分配的相应高速缓存行提取期间出现任何错误时,能够使SB队列中的项从有条件存储存取转换成无条件存储存取,在其转变时,将被写入到存储器13。即,此后将其处理为写通式存储存取。在一个实施例中,通过将位(S)包括在SB队列的每一个项中来实现,表示该项(如果有效,使其V位设置成1)是写通式存储存取(无条件存储存取)还是非写通式存储存取(有条件存储存取)。此外,在一个实施例中,任意数量的S位能够存在于每一个项中,由行填充缓冲器中的项数来决定。用这种方式,可以实现改进的错误恢复,由此可能导致改进和更可靠的性能。如在此所使用的,术语“总线”用于指多个信号或导体,其可以用于传送一个或多个不同类型的信息,诸如数据、地址、控制或状态。可以参考单个导体、多个导体、单向导体或双向导体,示出或描述如在此所述的导体。然而,不同实施例可以改变导体的实现。例如, 可以使用单独的单向导体,而不是双向导体,反之亦然。此外,可以用连续地或以时分方式传送多个信号的单一导体来代替多个导体。同样地,携带多个信号的单一导体可以被分成携带这些信号的子集的多个不同的导体。因此,对传送信号,存在许多选择。当指将信号、状态位或类似装置分别变成其逻辑真或逻辑假状态时,在此使用术语“断言(assert)”或“置位(set) ”和“否定”(或“取消断言”或“清零”)。如果逻辑真状态是逻辑电平1,那么逻辑假状态是逻辑电平0。以及如果逻辑真状态是逻辑电平0,那么逻辑假状态是逻辑电平1。在此所描述的每个信号可以设计为正或负逻辑,其中,能够由信号名上方的横号或名后的星号(*)表示负逻辑。在负逻辑信号的情况下,该信号是低有效,其中,在逻辑真状态对应于逻辑电平0。在正逻辑信号的情况下,信号是高有效,其中,逻辑真状态对应于逻辑电平1。注意在此所述的任何信号能够被设计成负或正逻辑信号。因此,在另外的实施例中,描述为正逻辑信号的那些信号可以实现为负逻辑信号,以及描述为负逻辑信号的那些信号可以实现为正逻辑信号。在此使用括号来表示总线导体或值的位位置。例如,“总线60[7:0]”或“总线60 的导体[7:0]”表示总线60的8个较低次序导体,“地址位[7:0]”或“ADDRESS[7:0]”表示地址值的8个较低位,以及“信号W :1]”表示信号的两个单独值(例如信号
和信号 [1])。在数字之前的符号“$”表示以十六进制或基数16形式表示的数字。数字之前的符号“ % ”表示以其二进制或基数2形式的数字。图1示出数据处理系统10,其利用存储缓冲器进行存储分配高速缓存缺失时的错误恢复。系统互连12用于在数据处理系统10内传送数据。在一个实施例中,系统互连12 可以实现为多位系统总线。可替选地,可以实现为纵横开关,或点对点或其他互连机制。系统存储器13被连接到系统互连12,用于数据处理系统10中的信息存储。总线接口单元 (BIU) 14具有连接到系统互连12的第一输入/输出。数据处理系统10还包括一个或多个执行单元16、指令解码器18、指令提取单元20、寄存器文件22、全局控制M、异常逻辑26、 加载/存储单元28和高速缓存和缓冲电路30。BIU 14的第二输入/输出连接到指令提取单元20的第一输入/输出。BIU 14的输出连接到全局控制M的第一输入。BIU 14的第三输入/输出连接到加载/存储单元观的第一输入/输出。BIU 14的第四输入/输出连接到高速缓存30的第一输入/输出。指令提取单元20的第二输入/输出连接到全局控制 M的第一输入/输出。指令提取单元20的第一输出连接到全局控制M的第二输入。指令提取单元20的第二输出连接到指令解码器18的输入。指令解码器18的输入/输出连接到全局控制M的第二输入/输出。指令解码器18的第一输出连接到全局控制M的第三输入。执行单元16的输出连接到全局控制M的第四输入。指令解码器18的第二输出连接到执行单元16的第一输入。全局控制M的第三输入/输出连接到执行单元16的第一输入/输出。执行单元16的第二输入/输出连接到寄存器文件22的第一输入/输出。 全局控制M的第四输入/输出连接到异常逻辑沈的输入/输出。异常逻辑沈还具有用于接收异常请求的输入。全局控制M的第五输入/输出连接到高速缓存30的第二输入/ 输出。全局控制M的第六输入/输出连接到加载/存储单元观的第二输入/输出。加载 /存储单元观的第三输入/输出连接到寄存器文件22的第二输入/输出。加载/存储单元观的第四输入/输出连接到高速缓存30的第三输入/输出。全局控制M的第七输入 /输出连接到BIU 14的第五输入/输出。应理解到数据处理系统10内的控制电路的位置是实现特定的。例如,对于比全局控制M更有限的控制,各个控制电路将位于指令提取单元20、指令解码器18、执行单元16和寄存器文件22的功能单元中的每个内。作为多位导体的所示导体和总线利用通过导体或总线的斜线号表示。在操作中,全局控制M、指令提取单元20、指令解码器18、执行单元16、异常逻辑 26、寄存器文件22、加载/存储单元观』贝14、系统互连12和存储器13均如本领域公知的那样操作,以及将在此不再更详细地描述,除非描述高速缓存和缓冲电路30的操作需要。 将参考图2至9,提供高速缓存和缓冲电路30的细节。注意,系统10的全部位于单一集成电路上或可以位于多个集成电路上。此外,注意,可以使用各种不同的体系结构,包括高速缓存和缓冲电路,诸如高速缓存和缓冲电路30。图2以框图的形式示出根据本发明的一个实施例的数据处理系统10的高速缓存和缓冲电路30的一部分。高速缓存和缓冲电路30包括高速缓存40、行填充缓冲器44(也称为第一缓冲器或重新加载缓冲器)和存储缓冲(SB)电路50。高速缓存40包括高速缓存控制电路42并且双向耦合到加载/存储单元^、SB电路50、行填充缓冲器44和BIU14中的每一个。尽管所有输入和输出被示为到达或来自高速缓存40,但是这些中的一些或全部也可以直接到达或直接来自高速缓存40内的高速缓存控制电路42。高速缓存40从加载/存储单元观接收加载和存储请求。因此,高速缓存40经由导体56来接收请求类型(表示例如存储或加载类型)和相应的请求地址。高速缓存40还经由导体58来接收与每一加载和存储请求相对应的写通式(WT)属性和写分配(WA)属性。 可以经由双向导体60,在加载/存储单元观和高速缓存40之间传送其他信号。例如,可以经由高速缓存40的数据端口传送数据。因此,能够将与存储请求有关的存储数据通过导体 60,经由数据端口提供给高速缓存40。高速缓存40经由导体66将来自加载/存储单元观的存储数据(可以例如经由导体60来接收)提供给行填充缓冲器44并且从行填充缓冲器44接收高速缓存行数据。注意,因此,导体66可以耦合到高速缓存40的数据端口。此夕卜,当需要时,可以经由导体66,在高速缓存40和行填充缓冲器44之间传送其他信号。高速缓存40还经由导体64,从BIU 14接收读数据(从系统互连12提供给BIU 14),并且经由导体68,从BIU 14接收读准备信号、读错误信号和行填充完成信号(BIU 14从系统互连12接收这些信号)。当需要时,高速缓存控制电路42可以例如经由导体60,将读数据提供回加载/存储单元观。还经由导体 64,将读数据从BIU 14提供给行填充缓冲器44。高速缓存40将待写入到存储器13的存储数据提供给SB电路50,用于存储在存储缓冲(SB)队列M的项中。SB电路50还包括存储缓冲(SB)控制电路52,其经由导体82 耦合到SB列队M的每一个项,使得根据需要,SB控制电路52能够更新被选项的适当字段, 以及能够将下一项输出到BIU 14。尽管所有输入和输出均示出为进入或来自SB电路50, 但这些中的一些或全部可以直接进入或来自SB控制电路52或SB队列M。高速缓存40经由导体72,将存储分配错误信号提供给SB电路50,以及经由导体74,将存储分配完成信号提供给SB电路50。根据需要,可以经由导体70,在高速缓存40和SB电路50之间传送其他信号。SB电路50经由导体76,向BIU 14提供写地址、写数据、写请求和写控制,然后通过BIU 14,传送到系统互连12。SB电路50还经由导体78,从BIU 14接收通过BIU 14从系统互连12传送的写准备信号。根据需要,经由BIU 14,经由导体80,在系统互连12(以及例如存储器13)和SB电路50之间传送其他信号。在所示的实施例中,行填充缓冲器44包括单一项,项46,其对应于在项46有效时, 将存储到高速缓存40的新高速缓存行。项46包括高速缓存行的地址、高速缓存行数据的四个双字(DWO、DW1、DW2和DW3)、有效标志和合并标志。在所示的实施例中,一个字包括4 字节以及一个双字包括8字节。然而,在另外的实施例中,字可以定义为2字节以及双字为 4字节。此外,在另外的实施例中,行填充缓冲器44可以包括多个项,以及每一个项可以包括多个双字。在所示的实施例中,合并标志包括用于DW0-3的每一字节的标志,以表示在行填充缓冲器项的高速缓存行填充时,通过从存储器13提取的值,将更新哪些字节。因此,这些合并标志用于将来自加载/存储单元观的存储请求的写入到行填充缓冲器项中的存储数据与从存储器13提取的全高速缓存行数据合并。有效标志表示该项是否有效。在确认后(当置位项46中的V时,S卩,V = 1),项46中的高速缓存行能够存储到高速缓存40。SB队列M能够用硬件实现为循环队列。SB队列M中的每一个项包括有效位(V)、 存储类型位( 、地址字段、数据字段和相关状态信息。在所示的实施例中,每一数据字段为双字以及状态信息包括数据字段内的存储数据的大小信息。在一个实施例中,SB队列M的项的S位表示那一项对应于写通式存储存取(即,为写通式项)还是对应于回写式存储存取(即,回写式项)。在所示的实施例中,每一个项包括单个S位,因为在行填充缓冲器44 中仅单一项。然而,注意,根据行填充缓冲器44中的行填充缓冲器项的数量,在SB队列M 的每一个项中,可以包括不止一个S位,如在下文更详细所述。注意,另外的电路可以包括在高速缓存和缓冲电路30中,但从图2省去,以便不复杂化该描述。例如,高速缓存和缓冲电路30还可以包括回写式缓冲器(未示出),如本领域公知的操作。此外,除所示的那些以外的其他信号也可以存在于高速缓存和缓冲电路30中。在操作中,高速缓存控制电路42从加载/存储单元观接收加载和存储请求。注意在此仅论述存储请求,并由此的存储存取(即写存储),其中,加载请求的处理可以如本领域公知的那样发生。每一存储请求具有相应的存储地址(由导体56提供)和相关的属性,以及也可以称为存储存取或写存取。在此将论述的相关属性是WT和WA属性。能够如本领域所公知的那样,以各种不同的方式,为每一存储请求提供这些属性。例如,对每一存储请求,可以从加载/存储单元观提供。可替选地,可以通过存储管理单元(MMU)(未示出) 来提供,其中,每一存储器页具有特定属性集。在这种情况下,存储请求正在存取的存储器页表示WT和WA的值。在另一示例中,高速缓存控制电路42本身可以生成或提供WT和WA 属性。此外,在一个示例中,每一存储请求或存储存取可以具有其自己的属性说明符。在一个实施例中,当WT属性具有值1时,存储存取是写通式存储存取(执行到存储器13的写通的存储存取),以及当WT属性具有值0时,其是回写式存储存取或非写通式存储存取(即不执行写通的存储存取)。如下文更详细所述,任何写通式存储存取被写出到存储器13。这通过对SB电路50执行写通式存储存取,用于存储到SB队列M的项中来完成。SB队列M可以实现为例如队列或循环队列(即循环缓冲器),其中,最早的存储项提供有每一存储缓冲请求,以(经由BIU 14)将数据写入到存储器13。当将写通式存储存取 (具有WT= 1的存储存取)存储到SB队列M的项时,其相应的V位被设置成1,以表示其是有效位以及其相应的S位清零以表示其是写通式存储存取,并由此将无条件地写入到存储器13。在一个实施例中,当WA属性具有值1时,在高速缓存40中存储存取缺失时,将执行对高速缓存40的写分配。即,在对应于存储存取的地址的高速缓存40中,将分配新的高速缓存行,其中,从存储器13提取高速缓存行,并与存储存取的存储数据合并,以及将新合并的高速缓存行放置在高速缓存40中。当WA属性具有值0时,对于存储存取,不执行对高速缓存40的写分配。当存储存取为具有写分配的存储存取(具有WA = 1的存储存取)而不是写通式存储存取(WT = 0),在高速缓存40中缺失时,存储存取被存储到行填充缓冲器 44的项(例如项46)中以及SB队列M的项中。在这种情况下,SB队列M的项中的相应 V位设置成1以表示它是有效项,以及其相应的S位也设置成1以表示它不是写通式存储存取(即,它是回写式存储存取),并由此将根据行填充缓冲器44的项46中的相应的高速缓存行提取是否导致错误,有条件地写入到存储器13。即,在高速缓存40中的该存储存取缺失时,将高速缓存行从存储器提取到行填充缓冲器44中(例如项46),以与存储存取的存储数据合并,以及如果成功地完成到项46中的相应高速缓存行提取(即,没有错误),那么通过清零其相应的S和V位,刷新SB队列M中的非写通式存储存取的相应项(即无效)。 (注意,在项46的成功加载后,使它有效,并且项46中的高速缓存行,包括基于合并标志的置位而合并到项46中的与存储存取相对应的存储数据,项46中的高速缓存行被存储到高速缓存40中,以及在稍后的一些时间点,使其与存储器13 —致)。然而,如果未成功地完成到项46中的相应高速缓存行提取(例如,在从存储器13 提取行时发生错误),那么通过使S位清零以及使V位设置成1,将SB队列M中的非写通式存储存取的相应项转换成写通式存储存取。用这种方式,使非写通式存储存取的相应项为无条件的,就像它是写通式存储存取一样,使得该存储存取将导致将存储数据写入到存储器13而不是被丢失。即,如果到项46中的高速缓存行提取未成功地完成,那么没有高速缓存行(即,没有项46),包括与所提取的高速缓存行合并的任何新存储数据,诸如存储数据48被重写回到高速缓存40,由此丢失。因此,能够使用SB队列M来存储写通式存储存取以及非写通式存储存取(即,回写式存储存取),其中,写通式存储存取无条件地写入到存储器13,以及,基于到行填充缓冲器44中的高速缓存行提取的结果,非写通式存储存取有条件地写入到存储器13。即,可以在用于执行写通式存储的存储缓冲器的项(例如,SB 列队中临时缓冲非写通式存储存取,以产生临时缓冲的非写通式存储缓冲项。注意,SB队列M通常用于执行写通式存储;然而,在本发明的一个实施例中,该同一 SB队列M还用于临时缓冲或存储非写通式存储存取,其中,项的S位可以用于区分写通式和非写通式存储存取。此外,在替选的实施例中,注意,可以不存在行填充缓冲器44。在这种情况下,在高速缓存缺失时,具有写分配(WA= 1)的存储存取的新存储数据直接写入到高速缓存40的分配项中(以及SB队列M的项)中,并且对那一分配项所提取的高速缓存项与新数据合并,并且直接存储在高速缓存40的分配项中。在这种情况下,高速缓存40 的每一个项可以包括合并标志,或通过高速缓存控制电路42,与该项无关地存储合并标志。 因此,对该实施例,上述相对于项46和行填充缓冲器44提供的说明将适用于将新存储数据直接写入到高速缓存40的情形,其中,基于直接对高速缓存40中的高速缓存行提取成功完成与否,SB队列M中的非写通式存储存取有条件地写入到存储器13。此外,注意,与行填充缓冲器是否存在无关,本领域已知的任何写分配方法可以用于标识用于分配的高速缓存 40的替换项,并且使用于替换的所标识的项的当前数据与存储器一致。在下文中,将参考图3-6,更详细地描述图2的操作。此外,在图2的所示实施例中,在DWl的最后两个字节中存储的存储数据48对应于由高速缓存控制电路从加载/存储单元观接收的存储请求提供的存储数据,并且提供为示例。图3以流程图的形式,示出根据本发明的一个实施例的、从高速缓存40的观点看的、高速缓存和缓冲电路30的操作。流程100从开始102开始并且进入框104,其中,高速缓存40接收存储请求(其也称为存储存取请求或存储存取)。可以从加载/存储单元观接收该存储请求,其如本领域公知的那样操作。流程进入框106,其中,检查存储请求的属性。例如,在一个实施例,检查存储请求的WT和WA属性。流程进入判定框108,其中,确定是否WT = 0。如果不是(即,如果WT= 1),那么存储请求是写通式请求,并且流程进入框 110,其中,将存储请求的存储地址和存储数据存储到SB列队M的项中,对该项,清零相应的S位(S = 0),以及置位相应的V位(V= 1)。在一个实施例中,将存储请求存储在由SB 控制电路52选择的SB队列M的下一项中(在一个实施例中,其对应于得出的最近一项后的项)。因此,将写通式存储请求(即,写通式存储存取)存储在SB缓冲电路50中。然后, 流程进入判定框112,其中,在WA = 1的情况下,确定存储请求是否产生高速缓存缺失。如果是,流程进入框116,其中,操作继续高速缓存缺失处理,然后流程进入完成132。如果在判定框112,确定存储请求未在WA = 1的情况下导致高速缓存缺失,流程进入判定框114, 其中,确定存储请求是否导致高速缓存命中。如果是,流程进入框118,其中,通过存储请求更新高速缓存40,然后流程进入完成132。否则,流程进入完成132。因此,如果存储请求导致高速缓存缺失,但WA = 0,不执行高速缓存写分配,并由此高速缓存40仍然保持原样。在一个实施例中,在WA= 1情况下的高速缓存缺失处理包括执行对高速缓存40 的写分配。在写分配期间,高速缓存控制电路42使用替换算法来选择待替换的高速缓存40 中的项(其中,可以使用任何已知的替换算法,诸如最近使用的或循环法)。如果被选项的数据脏(即已经被修改,并由此不同于存储器13中存储的数据),则经由BIU 14写入或刷新到存储器13。在一个实施例中,在其被提供给BIU 14之前,首先保存到缓冲器(例如,回写式缓冲器)中。用这种方式,使存储器13与该项一致,并且可以使用任何已知的刷新方法。在从被选项刷新数据的一些或全部后,如果需要,能够将高速缓存40中缺失的新存储请求存储到被选项中。在一个实施例中,将与存储请求有关的存储数据存储到行填充缓冲器44的项46中,其中,新存储数据48位于DWl的第二个2字节中。此外,对来自存储器13 的高速缓存行的数据的行,启动提取,其中,合并标志用于将来自存储请求的新存储数据48 适当地与从存储器提取的高速缓存行数据合并。即,当从存储器13提取新高速缓存行时, 从存储器13提取的新高速缓存行的仅DWO,DW1、DW2和DW3的前两个字节存储在项46中, 使得不覆盖新数据48。假定在填充行填充缓冲器项中未出现错误,使项46 (V设置成1)有效,然后能够存储到高速缓存40的被选项,以完成写分配。注意,通过由高速缓存控制电路 42从BIU 14接收的行填充完成信号的有效性,表示项46的填充的完成,以及通过使由高速缓存控制电路42从BIU 14接收的读错误信号否定,表示无错误的指示。在替选的实施例中,从高速缓存40的被选项刷新数据的一些或全部后,如果需要,能够将在高速缓存40中缺失的新存储请求直接存储在被选项中而不是首先存储在行填充缓冲器(可能不存在)中。在该另一实施例中,将与存储请求有关的存储数据存储在为替换而标识的高速缓存40的项中,其中,对该示例,新存储数据将仍然位于DWl的第二个二字节中。此外,从存储器13启动对高速缓存行的数据行的提取,其中,合并标志用于将来自存储请求的新存储数据适当地与从存储器提取的高速缓存行直接合并到高速缓存40的标识替换项中。此外,假定在填充高速缓存40的标识项中没有错误发生,使高速缓存40的标识项有效(其相应的V位设置成1),并且标记为脏或已修改,因为新值现在不同于存储器 13中的那个值。注意,如果在用于高速缓存缺失处理的高速缓存行提取期间出现错误,那么不使项46或高速缓存40的标识项有效。然而,未丢失新存储数据,因为其还已经存储在存储缓冲电路50中(在框110中)以及从有条件(S = 1)改变成无条件地写入到存储器13 (S = 0)。通过存储请求更新高速缓存40 (框118)可以包括将新存储数据写入到导致高速缓存命中的高速缓存40中的现有项。此外,还可以更新适当的高速缓存项状态信息。可以使用执行这种高速缓存更新的任何已知方法。再参考判定框108,如果对于存储请求,WT = 0(即,存储请求是非写通式存储请求),那么流程进入到判定框120,其中,确定存储请求是否导致高速缓存缺失。如果没有 (即,存储请求导致高速缓存命中),那么流程进入到框118,其中,通过存储请求更新高速缓存40。如果是,流程进入到判定框122,其中,确定是否WA= 1。如果是(表示存储请求是写分配存储存取),那么流程进入到框124,其中,存储请求的存储地址和存储数据被存储到SB队列M的项中,以及对那一项,置位相应的S位和V位(S = 1,V = 1)。在一个实施例中,将存储请求存储在由SB控制电路52选择的SB队列M的下一项中(在一个实施例中,其对应于在得出的最近项后的项)。因此,非写通式存储请求(即,非写通式存储存取) 被存储在SB缓冲电路50中,SB缓冲电路50通常用于存储写通式存储请求。如上所述,注意,根据是否成功地完成用于存储请求的写分配的高速缓存行提取,具有所置位的S和V位的SB列队M中存储的存储请求将有条件地存储到存储器13。然而,在写通式存储请求的情况下,存储请求通过清零的S位被存储到SB队列M,将无条件地被存储到存储器13。在框IM后,流程进入到框126,其中,高速缓存缺失处理继续,与参考框116所述的高速缓存缺失处理类似。然而,框126的高速缓存缺失处理包括用于到项46中的高速缓存行提取的另外错误处理(或者如果未使用行填充缓冲器,直接到为替换而标识的高速缓存40的项中)。即,如上所述,通过行填充完成信号的断言,能够表示完成对项46的高速缓存行提取,以及通过读错误信号的断言,能够表示该高速缓存行提取中的错误。用这种方式,高速缓存控制电路42已知高速缓存行提取何时已经结束以及提取成功(完全完成而没有错误)还是未成功(具有错误)。然后,高速缓存控制电路42可以基于读错误信号和行填充完成信号,分别生成存储分配错误信号和存储分配完成信号,其提供给SB控制电路 52。当在高速缓存行提取期间出现错误时,行46(或为替换而标识的高速缓存40的行)无效时,即,相应的V位仍然清零(V = 0)。此外,当SB控制电路52明白在高速缓存行提取期间出现错误时(通过由高速缓存控制电路42提供的存储分配错误信号的断言),SB控制电路52清零任何断言的S位,使得标记有效(V= 1)并且曾使其S位设置成“1”的任何项表示其作为非写通式存储存取转换成将写入到存储器I3的有效写通式存储存取。再参考判定框122,如果WA不等于1( S卩,WA = 0,表示将不执行写分配),那么即使对该存储请求,WT = 0(再在判定框108确定),流程也进入到框128,其中,存储请求被视为写通式存储请求。即,在框128,存储请求的存储地址和存储数据被存储到SB队列M的项,以及对那一项,清零相应的S位(S = 0),以及置位相应的V位(V = 1),就像对写通式存储请求,框110所做的。在一个实施例中,如上参考框110所述,存储请求被存储在由SB 控制电路52选择的SB队列M的下一项中(在一个实施例中,其对应于在得出的最近项后的项)。因此,非写通式存储请求(即,非写通式存储存取)被存储在SB缓冲电路50中,就像它是写通式请求。由于清零其S位(S = O),将无条件地写入到存储器13。(注意,由于 WA = 0,该存储请求将不分配给高速缓存40。)。在框1 后,流程进入到完成132。图4和5示出根据不同的示例情形,高速缓存和缓冲电路30中的各个信号的时序图。在图4中,假定在高速缓存行提取期间出现行填充错误,以及在图5中,假定在高速缓存行提取期间未出现行填充错误。在图4和5的每一个上,为方便说明,用顶上的0-10编号时钟周期,其中,在所示的实施例中,每一时钟周期包括高时钟相位和低时钟相位。注意, 在图4和5所示的实施例中,BIU读端口是指从系统互连12接收信号的输入,以及可以包括例如读数据(经由导体64从BIU 14提供的)和读准备、读错误和行填充完成(经由导体 68从BIU14提供的)。BIU写端口是指向系统互连12提供信号的输出,以及可以包括例如写数据(经由导体76提供给BIU 14)以及写准备(经由导体78提供给BIU 14)。注意,可以经由BIU读和写端口传送其他信号,然而,那些不参考图4和5论述。图4和5还包括存储分配完成信号(经由导体72,从例如高速缓存控制电路42提供给SB控制电路5 、存储分配错误信号(经由导体74,从例如高速缓存控制电路42提供给SB控制电路5 、行填充请求信号(经由导体62,从例如高速缓存控制电路42经由BIU 14提供给系统互连12),以及存储缓冲请求(可以经由导体80,从SB控制电路52经由BIU 14提供给系统互连12)。 存储缓冲请求信号可以向存储器13表示来自SB队列M的下一存储缓冲请求(经由导体 76输出)将写入到存储器。图4还包括有效有条件存储缓冲项信号,其可以是从高速缓存控制电路42提供给SB控制电路52的信号,或可以是响应于存储分配错误和存储分配完成
12信号,由SB控制电路52内部生成的信号。图5还包括刷新有条件SB项(其S位被置位、 S=I的项),其可以是从高速缓存控制电路42提供给SB控制电路52的信号,或可以是响应于存储分配错误和存储分配完成信号,由SB控制电路52内部生成的信号。首先参考图4,假定在高速缓存行提取期间出现行填充错误。因此,从时钟周期0 开始,行填充请求信号被断言,以表示响应与对存储N在写分配情况下的存储缺失,需要从存储器13提取高速缓存行。因此,将该请求信号经由BIU 14和系统互连12发送到存储器 13。当响应于高速缓存40内的存储请求缺失,执行写分配时,能够由高速缓存控制电路42 生成该行填充请求信号,如上所述。因此,在时钟周期1,与所请求的高速缓存行填充(存储N行填充)相对应的存储地址经由BIU14,放置在地址总线上。(注意,在图4和5所示的示例中,假定系统互连12包括单独的数据和地址总线,以及公用地址总线用于数据读和数据写端口)。用于高速缓存行填充的数据不开始返回到BIU 14直到时钟周期4为止,在时钟周期4期间,接收到DW0。在周期4中,还断言读准备信号,由此,能够由高速缓存控制电路42接受双字DW0,以在周期4结束时,提供给行填充缓冲器44。在每一后续周期期间, 将接收高速缓存行提取的下一双字,直到理论上接收到所有4个双字(DW0-DW;3)为止。在高速缓存控制电路42发出高速缓存行填充地址和相应的数据返回期间,SB控制电路52断言存储缓冲请求信号,使得SB队列M中的无条件项可以写入到存储器13。因此,在时钟周期2期间,存储缓冲请求信号被断言,并且SB电路50将与待写入到存储器的 SB队列M的下一项(SB X,其中,“X”是指下一项)相对应的地址提供给BIU 14,以在随后的时钟周期,周期3中,放置在系统互连12的地址总线上(该下一项可以由SB控制电路52 选择)。在时钟周期3期间,SB电路50将与SB队列M的该下一项(SB X)相对应的存储数据提供给BIU 14,以在时钟周期4中,放置在系统互连12的数据总线上。S卩,在当前的示例中,假定SB电路50首先将地址提供给BIU 14,以及在后续的时钟周期中,将相应的数据提供给BIU 14。在由BIU 14从SB电路50接收后,通过在该时钟周期中提供的地址和数据,驱动系统互连12。此外,在时钟周期3期间,由于存储缓冲请求信号仍然被断言,SB电路50将与SB队列的下一项(SB X+1)相对应的地址提供给BIU 14,以在时钟周期4中放置在系统互连12的地址总线上。然而,在时钟周期4期间,由于系统互连12还未完成与SB Xr的地址有关的存储的事实,仍然还未通过BIU 14断言写准备信号。因此,BIU电路14继续在周期5期间,提供与SB X相对应的存储数据,并继续提供下一存储请求的地址,SB X+1的地址。在时钟周期 5中,完成第一写请求,以及写准备信号被断言,并且由存储器13俘获提供给系统互连12的 SB X+1的地址。类似地,在时钟周期6期间,由BIU 14,将与SB X+1相对应的存储数据提供给系统互连12,该周期在成功地呈现和俘获地址之后。由于在周期6结束时写准备信号被断言,已经由存储器13成功地俘获位于系统互连12上的存储数据,以及SB X+1的写周期完成。此外,在时钟周期5期间,存储缓冲请求信号被否定,使得由于该项通过S = 1和 V= 1标记为有条件存储,下一项(SB X+2,对应于存储N,其的高速缓存缺失在周期0中启动行填充)还未提供给BIU 14,并且在周期0中由高速缓存启动的行填充请求还未完成。再参考高速缓存行提取,注意,在时钟周期4中,经由系统互连12从存储器13接收的DWO从BIU 14返回给高速缓存控制电路42。注意,读准备信号被断言,向高速缓存控制电路42表示BIU 14正提供读数据,以及读错误信号被否定,表示在DWO的返回期间,无错误发生。填充完成信号也被否定,因为4个双字节的高速缓存行提取还未完成。分别在周期5和6的每一个中,通过断言的读准备、否定的读错误和否定的行填充完成,以类似的方式返回DWl和DW2。然而,在周期7中,读错误信号被断言,表示在DW3的存储器提取期间出现错误。该错误可以是例如由于系统错误或来自正提供高速缓存行的存储器13的不可校正的存储器错误。此外,在周期7中,行填充完成信号被断言,因为行填充请求正在完成。响应于由BIU 14提供给高速缓存控制电路42的读错误信号和行填充完成信号的断言,也在时钟周期7中,高速缓存控制电路42还使存储分配错误信号和存储分配完成信号断言。用这种方式,SB控制电路52已知将使有条件存储缓冲项有效,由此将有条件存储缓冲项(其V位和S位设置成1),如果有的话,转换成无条件存储缓冲项,其V位仍然设置成 1,但其S位清零,如上所述)。这通过例如在图4的时钟周期7中有效有条件存储缓冲项信号的断言来表示。响应于在时钟周期7中,有效有条件存储缓冲项信号被断言,由于对初始存储(存储N)的写分配的未成功的行填充,使项SB X+2有效,以及将状态从有条件存储改变成无条件存储,以写入到存储器13。SB项X+2包含存储地址、数据和相关状态信息,以允许存储N 写入到存储器,而不是简单地丢失或丢弃,因为行填充缓冲器44未成功地填充,并因此,不对存储到高速缓存有效。注意,由于响应于在时钟周期7中,有效有条件存储缓冲项信号被断言,使存储缓冲项X+2有效,其的S = 1、V = 1状态信息改变成S = 0、V = 1,在时钟周期7中存储缓冲请求信号再次被断言。然后,在时钟周期8中,由BIU 14将与下一项(SB X+2)相对应的地址提供给系统互连12,以及在时钟周期9中,由BIU 14提供与该下一项 (SB X+2)相对应的存储数据。在时钟周期9中,对存储器的存储完成,以及在时钟周期9 中,写准备信号再次被断言。注意,在周期5中,由SB控制电路52否定存储缓冲请求,因为由S = i和V = i标记队列头的存储缓冲项,并基于分配行填充的成功完成,正在等待有效或无效。即使有效项存在于SB队列M中,可以还未使存储缓冲请求断言,因为通常,对存储器13不执行该存储,因为它是非写通式存储。然而,由于行填充请求未成功地完成,该存储数据最终被写入。再参考图5,假定在高速缓存行提取期间,未出现行填充错误。上面提供的图4的时钟周期0-6的描述也适用于图5的时钟周期0-6,并因此,将不重复。由此,现在参考图5 的时钟周期7,注意,由BIU 14将DW3,高速缓存行提取的最后双字提供给高速缓存控制电路42。此外,在时钟周期7,由BIU 14断言行填充完成信号,以表示该高速缓存行提取完成。 然而,与图4的示例不同,在此,在时钟周期7中(或在时钟周期4-7的任何一个中),不使读错误信号断言,来表示无错误发生。因此,同样在时钟周期7中,高速缓存控制电路42仅断言存储分配完成信号,但不必断言时钟周期4-7的任何一个中的存储分配错误信号。用这种方式,SB控制电路52已知,如果有的话,有条件的存储缓冲项(其的V位和S位设置成1)将通过清零V和S位(V = 0和S = 0)被刷新(无效)。这通过例如在图5的时钟周期8中的刷新有条件存储缓冲项的断言来表示。在该示例中,由于成功行填充分配出现,因此,在行填充缓冲器中,将用于存储N的存储数据与从存储器13返回的行填充数据合并,然后将该行存储在高速缓存40中。此时,不执行用于存储的向存储器13的写入,因为存储N 是非写通式存储。图6和7示出根据不同的示例情形的SB队列M的一部分。首先参考图6,图6示出SB队列M的一部分,其包括两个无条件存储存取(项X和X+1中),置位其有效位(V = 1),但清零其S位(S = 0),由此表示有效的写通式存储存取。下一项(X+2,S卩,时间上的最近的一项)包括有条件存储存取,其有效V位和S位被置位(V = 1和S = 1),由此表示,如果相应的高速缓存行填充无错误地结束,将有效非写通式存储从SB队列M刷新,或如果相应的高速缓存行填充产生错误,则将有效非写通式存储转换成写通式存储存取(通过清零 S位)。注意,尽管响应于高速缓存行填充请求,高速缓存行提取发生,但可以处理对同一高速缓存行的后续存储存取。例如,图6中的SB队列M的时间瞬态图可以对应于行填充请求的开始,而图7中的SB队列M的时间瞬态图可以示出当高速缓存行提取正在进行时,什么增加到SB队列54。例如,参考图7,假定响应于存储存取的高速缓存缺失执行的高速缓存行提取仍然正发生,通过该存储存取相应的存储数据存储到项X+2中。S卩,还未完成DW0-DW3的提取。 然而,在DW0-DW3的提取期间,在高速缓存40中,对同一高速缓存行的随后的存储存取缺失,并且尽管DW0-DW3的提取仍然正在发生,但还是写入SB队列M的下一项X+3。因此, 注意项X+2和X+3的每一个对应于同一高速缓存行,但对应于高速缓存行的不同双字。例如,X+2可以在地址ADDRY处的高速缓存行的DWl中,而X+3可以在同一高速缓存行的DWO 中(在ADDRY)。此外,尽管DW0-DW3的提取仍然正在发生,但通过高速缓存控制电路42,仍然可以处理另一存储存取,其中,该存储存取是对地址ADDRZ的写通式存储存取。这也使得放置到SB队列M的下一项X+4中。然而,与项X+3和X+2不同,不置位X+4的S位(即, S = 0),因为它是写通式存储。因此,注意,在高速缓存行提取期间,多个条件、非写通式项, 诸如X+3和X+2的项可以进入到SB队列M中。此外,仍然参考图7,通过经由BIU 14,从SB队列M对存储器13的写入下一项的每一存储缓冲请求,如参考图4所述,SB控制电路52选择时间上的最早项以输出到BIU 14。在图7所示的示例中,将项X看做是时间的最早项(按此顺序,其后是Χ+1、Χ+2、Χ+3、 X+4)。即,图6和7中的SB队列M可以描述为环形缓冲器(或环形队列)。因此,在存储缓冲请求信号的断言时,且假定写准备信号也被断言之后,将项X的地址提供给BIU 14,在下一时钟周期中,紧接项X的存储数据。然后,将提供的下一项对应于项X+1。因此,假定存储缓冲请求信号仍然是断言的,或在下次其被断言时,将项X+1的地址和X+1的存储数据提供给BIU 14。然后,待提供的下一项对应于项X+2。然而,仍然可以不使项X+2和X+3有效或不刷新项X+2和X+3,因为高速缓存行提取可能仍然在发生。在这种情况下,即使存储缓冲器具有有效项,存储缓冲请求信号被否定,以及存储存取不从SB队列M提供给BIU 14。 即,停止SB队列M的清空,直到待输出的下一项对应于V = 1和S = 0的有效、无条件存储存取为止。因此,只要高速缓存行提取完成,并且无错误地完成,那么从SB队列M刷新项X+2和X+3中的每一个,即无效。S卩,清零项X+2和X+3的V和S位中的每一个。因此, 如果存储缓冲请求信号被断言,那么,由SB控制电路52选择对应于该示例中的项X+4的下一有效无条件项(时间上最早的有效项),以便提供给BIU 14。然而,如果高速缓存行提取以错误结束,通过清零这些项的S位,将项X+2和X+3中的每一个转换成写通式项。然后, 当存储缓冲请求信号被断言时,将下一无条件有效项,有效项X+2提供给BIU 14,依次是有效项X+3,然后是项X+4。在另一实施例中,不是当下一有效项是其S位被置位的有条件项时,停止清空SB队列M,而是SB控制电路52可以搜索下一有效无条件项,由此次序颠倒地清空SB队列M。图8以框图的形式示出根据本发明实施例的数据处理系统10的高速缓存和缓冲电路30的一部分,其中,行填充缓冲器包括多个项,并由此SB队列中的每一个项包括多个 S位,一个对应于每一个行填充缓冲器项。参考图8,其中,参考图2的相同附图标记表示相同的元件,高速缓存和缓冲电路30包括行填充缓冲器144(与图2的行填充缓冲器44类似),包括两项,项0146和项1。由于这两项,高速缓存控制电器42同时地处理两个写分配存储请求,这导致两个不同的高速缓存行的高速缓存行提取。此外,由于行填充缓冲器144 中的两个项的存在,高速缓存控制电路42向SB控制电路152 (与SB控制电路52类似)提供两个存储分配错误信号,存储分配错误
和两个存储分配完成信号,存储分配完成
, 一个对应于行填充缓冲器144的每一个项。SB电路150 (与SB电路50类似)包括与SB队列M类似的SB队列154,除每一个项包括两个S位,SO位对应于行填充缓冲器144 的项0以及Sl位对应于行填充缓冲器144的项1。因此,SO表示项0的高速缓存行填充对应的存储存取是写通式存取还是非写通式存取,而Sl表示项1的高速缓存行填充对应的存储存取是写通式存取或非写通式存取。行填充缓冲器144和SB电路150的操作与上述关于行填充缓冲器44和SB电路 50所述类似。然而,当对高速缓存40的写分配存储存取导致缺失,以及高速缓存控制电路 42请求对行填充缓冲器144的项0的高速缓存行填充时,存储数据写入到项0和SB队列 154的项,其中,该项的V位被置位(V = 1),该项的SO位被置位(SO = 1),但该项的Sl位被清零(Si = 0),因为该项对应于项0的高速缓存行填充。以与SB队列M中相同的方式, 更新SB队列154的项的剩余字段。此外,将行填充缓冲器144的项0的存储数据与高速缓存行提取数据合并,如上所述。因此,当项0的高速缓存行填充导致错误时,那么通过保持所置位的V位并且清零SO位(SO = 1),其中,Sl位应当还是0,将对应于项0(其的V位和 S位被置位,V = 1和SO = 1)的SB队列154中的每一有条件项转换成无条件存储存取,即写通式存储存取。因此,对项0的高速缓存行填充,当用于项0的行填充结束时,其是在SB 队列154中检查的SO位。类似地,当对高速缓存40的写分配存储存取导致缺失,并且高速缓存控制电路42 请求对行填充缓冲器144的项1的高速缓存行填充时,存储数据开始写入到项1和SB队列 154的项,其中,置位SB队列项的V位(V= 1),置位该项的Sl位(Si = 1),但清零该项的 SO位(SO = 0),因为该项对应于项1的高速缓存行填充。以与SB队列M中相同的方式,更新SB队列154的项的剩余字段。此外,将项1中的存储数据与高速缓存行提取数据合并, 如上所述。因此,当项1的高速缓存行填充导致错误时,那么通过保持所置位的V位和清零 Sl位(Si = 0),其中,SO位应当还是0,对应于项1(其V位和Sl位被置位,V= 1和Sl = 1)的SB队列154中的每一有条件项转换成无条件存储存取,即写通式存储存取。因此,对项1的高速缓存行填充,当用于行填充缓冲器144的项1的行填充结束时,其是在SB队列 154中检查的Sl位。例如,图9示出SB队列154的一部分,其中,项X+2和X+3对应于非写通式项。此外,在图9所示的示例中,S字段的第一位,即最左位是SO位,以及S字段的第二位,即最右位为Sl位。在图9的示例中,假定行填充缓冲器144的项0中执行对地址ADDRY的高速缓存行提取,以及在行填充缓冲器144的项1中执行对地址ADDRW的高速缓存行提取,在项的情况下,与存储存取相对应的存储数据为从ADDRY提取的高速缓存行的DW1,以及置位项 X+2的相应V和SO位(V = 1和SO = 1,其中,Sl仍然清零为0)。在项1的情况下,对应于导致那个高速缓存行填充的存储存取的存储数据为从ADDRW提取的高速缓存行的DW1,以及置位项X+3的相应的V和Sl位(V = 1以及Sl = 1,其中,SO仍然清零为0)。根据项0 的高速缓存行填充如何结束,使项X+2有效或刷新项X+2(然而,项0的高速缓存行填充的结果将不影响项X+3,其的SO位被清零)。类似地,根据项1的高速缓存行填充如何结束, 有效化或刷新项X+3(然而,项1的高速缓存行填充的结果将不影响项X+2,其的Sl位被清零)。如上所述,在对行填充缓冲器144的高速缓存行提取正在进行时,可以清空SB队列154。在一个实施例中,如果响应于存储缓冲请求信号的断言而提供的下一项是项X+2, 那么停止清空SB队列154,因为具有所置位的SO位的项X+2仍然是有条件存储存取项。即, 在一个实施例中,如果待从SB队列IM输出的下一项的SO或S 1位被置位,那么停止清空该队列。到现在为止,应意识到已经提供了在高速缓存缺失时,用于在两个不同位置中存储非写通式存储存取的机制。即,存储在行填充缓冲项(或直接存储到所分配的高速缓存项,如果无行填充缓冲器存在的话)以及SB列队(其通常仅用于存储写通式存储存取)中。 用这种方式,在与为存储在高速缓存中的存储数据合并的相应高速缓存行提取期间出现错误的情况下,不丢失来自高速缓存缺失的非写通式存储存取的存储数据。由于来自非写通式存储存取的存储数据也存储在SB列队中,作为有条件存储存取,在相应的高速缓存行提取的任何错误的情况下,能够将SB队列中的项从有条件存储存取转换成无条件存储存取, 依其顺序,将写入到存储器13中。即,此后将其视为写通式存储存取。在一个实施例中, 这通过将位( 包括在SB队列的每一个项中来实现,表示该项9(如果有效的话,使其V位设置成1)是写通式存储存取(无条件存储存取)还是非写通式存储存取(有条件存储存取)。此外,在一个实施例中,根据行填充缓冲器中的项的数量,任意数目S位能够存在于每一个项中。用这种方式,可以实现改进的错误恢复,由此可能导致改进的和更可靠的性能。因为实现本发明的装置大部分来说,由本领域的技术人员公知的电子部件和电路组成,为理解和了解本发明的原理以及为不模糊或分散本发明的教导,将不会比上述所需的那样,更大程度地说明电路细节。当应用时,可以使用各种不同的信息处理系统来实现上述实施例中的一些。例如, 尽管图1,2和8及其论述描述了示例性信息处理体系结构,但仅为提供论述本发明的各个方面的有用参考而提出了该示例性体系结构。当然,为论述目的,简化了该体系结构的描述,以及其仅是根据本发明可使用的许多种适用的体系结构中的一种。本领域的技术人员将意识到逻辑块之间的界限仅是示例性的,另外的实施例可以合并逻辑块或电路元件或将功能性的替选的分解施加在各个逻辑块或电路元件上。因此,应理解到在此所述的体系结构仅是示例性的,以及事实上,能够实现许多其他的体系结构来实现相同的功能性。抽象但仍然明确意义上,有效地“关联”实现同一功能性的部件的任何布置,以便实现所需的功能性。因此,能够将在此实现特定功能性而组合的任何两个部件看作彼此“关联”,使得实现所需的功能性,与体系结构或中间部件无关。同样地,如此关联的任何两个部件也能够看作彼此“操作地连接”,或“操作地耦合”来实现所需的功能性。例如,在一个实施例中,系统10的所示部件是位于单一集成电路上或同一设备内的电路。可替选地,系统10可以包括彼此互连的多个单独的集成电路或单独的设备。另外例如,系统10或其一部分可以是物理电路的软件或代码表示或可转换成物理电路的逻辑表示。同样地,系统10或其一部分可以用任何适当类型的硬件描述语言来实现。此外,本领域的技术人员将意识到上述操作的功能性之间的边界仅是示例性的。 多个操作的功能性可以组合成单一操作,和/或单一操作的功能性可以分布在另外的操作中。此外,另外的实施例可以包括特定操作的多个例子,以及在多个其他实施例中,操作的顺序可以修改。在一个实施例中,系统10是计算机系统,诸如个人计算机系统。其他实施例可以包括不同类型的计算机系统。计算机系统是信息处理系统,能够设置成向一个或多个用户提供独立的计算能力。可以以许多形式找到计算机系统,包括但不限于大型机、微型计算机、服务器、工作站、个人计算机、笔记本、个人数字助理、电子游戏机、车载和其他嵌入式系统、蜂窝电话和各种其他无线设备。典型的计算机系统包括至少一个处理单元、相关存储器和多个输入/输出(I/O)设备。计算机系统根据程序处理信息并经由I/O设备生成最终输出信息。程序是指令列表,诸如特定应用程序和/或操作系统。计算机程通常内部地存储在计算机可读存储介质上,或经由计算机可读传输介质传送到计算机系统。计算机程序通常包括执行(运行)程序或程序的一部分、当前程序值和状态信息,以及由操作系统用于管理进程的执行的资源。 父进程可以产生其他的子进程来帮助执行父进程的整体功能性。因为父进程特定地生成子进程来执行父进程的整体功能性的一部分,因此,由子进程(以及孙子进程等等)执行的功能性有时可以描述为由父进程执行。尽管参考特定的实施例描述了本发明,但在不背离如在所附的权利要求中所述的本发明的范围的情况下,可以做出各种改进和改变。例如,行填充缓冲器可以或可以不存在于高速缓存和缓冲电路内。相应地,说明书和附图应当视为示例性的而不是限制意义,以及所有这些改进意图包括在本发明的范围内。对参考特定实施例,在此所述的任何好处、优点或问题解决方案不意欲解释为任一或所有权利要求的关键的、必要的或主要的特定或元
ο在此所使用的术语“耦合”不意欲限制到直接耦合或机械耦合。此外,在此所使用的术语“一”限定为一个或多于一个。此外,即使当同一权利要求包括引入语“一个或多个”或“至少一个”,以及不定冠词,诸如“一”,在权利要求中使用引入语,诸如“至少一个”和“一个或多个”也不应当解释为意指由不定冠词“一”引入的另一权利要求元素将包含这种引入权利要求元素的任何特定权利要求限定到仅包含一个这种元素的发明。对定冠词的使用也是如此。除非具体说明,术语,诸如“第一”和“第二”用于任意地区分这些术语所述的元素。 因此,这些术语不一定意欲表示这些元素的时间或其他优先次序。附加的文本1. 一种数据处理系统,包括处理器,所述处理器经由系统互连,被耦合到系统存储器;
高速缓存,所述高速缓存被耦合到所述处理器,所述高速缓存存储数据并且具有第一数据端口以及用于接收控制信息的一个或多个控制输入;第一缓冲电路,所述第一缓冲电路被耦合到所述高速缓存,用于从所述系统互连接收一个或多个数据字,所述第一缓冲电路将一个或多个数据字存储在一个或多个项的每一个中,响应于来自所述系统互连的一个或多个数据字的无错误接收,所述一个或多个项的第一项的一个或多个数据字被写入到所述高速缓存; 第二缓冲电路,所述第二缓冲电路被耦合到所述高速缓存,所述第二缓冲电路具有用于存储存储请求的一个或多个项,每一个项具有相关控制位,所述相关控制位确定从第一存储请求形成的项是否是将从所述第二缓冲电路写入到所述系统存储器的有效项;以及控制电路,所述控制电路被耦合到所述高速缓存和第二缓冲电路,所述控制电路提供一个或多个数据字的无错误接收是否发生的错误确定并且基于所述错误确定来有选择地将相关控制位设置成无效第二缓冲电路中的项的值。2.如声明1所述的数据处理系统,其中,所述第一缓冲电路包括行填充缓冲器以及所述第二缓冲电路包括用于写通式存储的存储缓冲器。3.如声明2所述的数据处理系统,进一步包括与预定存储请求有关的有效位,用于与所述相关控制位分离的确立第二缓冲电路中的预定存储请求的有效性,如果错误确定表示在填充所述第一缓冲电路的相关项时无错误发生,所述相关控制位无效所述第二缓冲电路中的预定存储请求。4.如声明3所述的数据处理系统,进一步包括与所述第二缓冲电路中的预定存储请求相关的多个控制位,所述多个控制位中的每一个与所述第一缓冲电路中的不同项关联,所述控制电路使用多个控制位中的仅一个来表示所述第二缓冲电路中的预定存储请求的无效。5.如声明3所述的数据处理系统,其中,所述第二缓冲电路进一步包括与所述第一存储缓冲器的第一项的不同部分有关的多个项。6.如声明1所述的数据处理系统,其中,当所述错误确定表示无错误并且所述相关控制位被断言时,所述控制电路使所述相关控制位和与所述第一存储请求有关的所述第二缓冲电路中的项的有效位取消断言来无效所述第一存储请求,以及当错误确定表示错误并且所述相关控制位被断言时,所述控制电路使所述相关控制位取消断言并使与所述第一存储请求有关的所述第二缓冲电路中的项的有效位断言,以使所述第一存储请求有效。7. —种方法,包括提供具有多个高速缓存项的高速缓存,用于由经由数据处理系统中的互连被耦合到系统存储器的数据处理器使用;确定对所述高速缓存的非写通式写存取,高速缓存缺失是否已经发生;确定是否要求针对所述高速缓存缺失分配多个高速缓存项中的一个;以及如果要求针对高速缓存缺失分配多个高速缓存项中的一个,那么启动对应于分配项的数据提取;在用于执行写通式存储的存储缓冲器的项中临时缓冲所述非写通式存储存取,以在所述存储缓冲器中产生临时缓冲的非写通式存储缓冲项;
确定用于分配的数据提取是否已经无错误地完成;响应于确定完成无错误地发生,无效所述临时缓冲的非写通式存储缓冲项;以及响应于确定用于分配的数据提取的完成未无错误地发生,将所述临时缓冲的非写通式存储缓冲项随后存储到所述系统存储器中。8.如声明7所述的方法,进一步包括将所述非写通式存储存取也临时缓冲在被耦合到所述高速缓存的行填充缓冲器中,其中,当提取数据时,所述非写通式存储存取被存储在两个位置中,以及,基于所检测的错误的确定,来有选择地无效所述两个位置中的一个。9.如声明8所述的方法,进一步包括响应于用于分配的数据提取的完成未无错误地发生的确定,在随后将所述有效项存储到所述系统存储器之前,使所述临时缓冲的非写通式存储缓冲项有效。10.如声明9所述的方法,进一步包括通过更新所述存储缓冲器的所述临时缓冲非写通式存储缓冲项中的有效位,无效所述临时缓冲的非写通式存储缓冲项,以及通过使用将每一个项标识为写通式项或非写通式项的控制位,标识所述存储缓冲器中的项。11.如声明10所述的方法,进一步包括响应于确定在提取用于分配到所述高速缓存的数据时是否有错误发生,来有选择地启用或禁止所述控制位。12.如声明11所述的方法,进一步包括在所述存储缓冲器的每一个项中提供多个控制位,所述多个控制位与所述行填充缓冲器中的不同项相关联。13.如声明11所述的方法,进一步包括将所述存储缓冲器中的项与所述行填充缓冲器中的单一项的不同部分相关联。14. 一种方法,包括经由系统互连,将处理器耦合到系统存储器;耦合与所述处理器耦合的高速缓存,所述高速缓存存储数据并具有第一数据端口以及用于接收控制信息的一个或多个控制输入;将第一缓冲电路耦合到所述高速缓存,用于从所述系统互连接收一个或多个数据字,所述第一缓冲电路将一个或多个数据字存储在一个或多个项的每一个中,响应于从所述系统互连无错误地接收所述一个或多个数据字,所述一个或多个项的第一项的一个或多个数据字被写入到所述高速缓存;将第二缓冲电路耦合到所述高速缓存,所述第二缓冲电路具有用于存储存储请求的一个或多个项,每一个项具有相关控制位,所述相关控制位确定从第一存储请求形成的项是否是将从所述第二缓冲电路写入到所述系统存储器的有效项;以及将控制电路耦合到所述高速缓存和第二缓冲电路,所述控制电路提供所述一个或多个数据字的无错误接收是否发生的错误确定,并且基于所述错误确定,来有选择地将相关控制位设置成无效所述第二缓冲电路中的项的值。15.如声明14所述的方法,进一步包括
将所述第一缓冲电路实现为行填充缓冲器;以及将所述第二缓冲电路实现为用于写通式存储的存储缓冲器。16.如声明15所述的方法,进一步包括提供与预定存储请求有关的有效位,用于与所述相关控制位分离的确立第二缓冲电路中的预定存储请求的有效性;如果所述错误确定表示在填充所述第一缓冲电路的相关项时无错误发生,通过相关控制位来无效所述第二缓冲电路中的预定存储请求。17.如声明16所述的方法,进一步包括提供与所述第二缓冲电路中的预定存储请求相关联的多个控制位,所述多个控制位中的每一个与所述第一缓冲电路中的不同项相关联,所述控制电路使用多个控制位中的仅一个来表示所述第二缓冲电路中的预定存储请求的无效。18.如声明16所述的方法,进一步包括提供与所述第一缓冲电路的第一项的不同部分关联的所述第二缓冲电路中的多个项。19.如声明14所述的方法,进一步包括当所述错误确定表示无错误并且所述相关控制位被断言时,使所述相关控制位和与所述第一存储请求有关的所述第二缓冲电路中的项的有效位取消断言来无效所述第一存储请求;以及当所述错误确定表示错误时,使所述相关控制位取消断言并使与所述第一存储请求有关的所述第二缓冲电路中的项的有效位断言来使所述第一存储请求有效。20.如声明14所述的方法,进一步包括利用耦合到所述高速缓存的加载/存储单元的存储数据,填充所述第一缓冲电路的所述一个或多个项的所述第一项的第一部分;以及利用来自所述系统互连的数据,来填充所述第一缓冲电路的所述一个或多个项的所述第一项的第二部分,其中,所述错误确定确定来自所述系统互连的所述一个或多个数据字是否有错误。
2权利要求
1.一种数据处理系统,包括处理器,所述处理器经由系统互连被耦合到系统存储器;高速缓存,所述高速缓存被耦合到所述处理器,所述高速缓存存储数据并具有第一数据端口以及用于接收控制信息的一个或多个控制输入;第一缓冲电路,所述第一缓冲电路被耦合到所述高速缓存,用于从所述系统互连接收一个或多个数据字,所述第一缓冲电路将所述一个或多个数据字存储在一个或多个项的每一个中,响应于来自所述系统互连的所述一个或多个数据字的无错误接收,所述一个或多个项中的第一项的所述一个或多个数据字被写入到所述高速缓存;第二缓冲电路,所述第二缓冲电路被耦合到所述高速缓存,所述第二缓冲电路具有用于存储存储请求的一个或多个项,每一个项具有相关控制位,所述相关控制位确定从第一存储请求形成的项是否是将从所述第二缓冲电路写入到所述系统存储器的有效项;以及控制电路,所述控制电路被耦合到所述高速缓存和第二缓冲电路,所述控制电路提供所述一个或多个数据字的无错误接收是否发生的错误确定,并且基于所述错误确定,来有选择地将所述相关控制位设置成无效所述第二缓冲电路中的项的值。
2.如权利要求1所述的数据处理系统,其中,所述第一缓冲电路包括行填充缓冲器,以及所述第二缓冲电路包括用于写通式存储的存储缓冲器。
3.如权利要求2所述的数据处理系统,进一步包括与预定存储请求有关的有效位,用于与所述相关控制位分离的确立所述第二缓冲电路中的预定存储请求的有效性,如果所述错误确定表示在填充所述第一缓冲电路的相关项时无错误发生,所述相关控制位无效所述第二缓冲电路中的预定存储请求。
4.如权利要求3所述的数据处理系统,进一步包括与所述第二缓冲电路中的预定存储请求相关的多个控制位,所述多个控制位的每一个与所述第一缓冲电路中的不同项相关联,所述控制电路使用多个控制位中的仅一个来表示所述第二缓冲电路中的预定存储请求的无效。
5.如权利要求3所述的数据处理系统,其中,所述第二缓冲电路进一步包括与所述第一存储缓冲器的所述第一项的不同部分有关的多个项。
6.如权利要求1所述的数据处理系统,其中,当所述错误确定表示无错误并且所述相关控制位被断言时,所述控制电路使所述相关控制位和与所述第一存储请求有关的所述第二缓冲电路中的项的有效位取消断言来无效所述第一存储请求,以及当所述错误确定表示错误并且所述相关控制位被断言时,所述控制电路使所述相关控制位取消断言并使与所述第一存储请求有关的所述第二缓冲电路中的项的有效位断言来使所述第一存储请求有效。
7.一种方法,包括提供具有多个高速缓存项的高速缓存,用于由经由数据处理系统中的互连被耦合到系统存储器的数据处理器使用;确定对所述高速缓存的非写通式写存取,高速缓存缺失是否已经发生; 确定是否要求针对所述高速缓存缺失分配多个高速缓存项中的一个;以及如果要求针对所述高速缓存缺失分配多个高速缓存项中的一个,那么 启动对应于分配项的数据提取;在用于执行写通式存储的存储缓冲器的项中临时缓冲所述非写通式存储存取,以在所述存储缓冲器中产生临时缓冲的非写通式存储缓冲项;确定用于分配的数据提取是否已经无错误地完成;响应于确定完成无错误地发生,无效所述临时缓冲的非写通式存储缓冲项;以及响应于确定用于分配的数据提取的完成未无错误地发生,随后将所述临时缓冲的非写通式存储缓冲项存储到所述系统存储器中。
8.如权利要求7所述的方法,进一步包括将所述非写通式存储存取也临时缓冲在被耦合到所述高速缓存的行填充缓冲器中,其中,当提取数据时,所述非写通式存储存取被存储在两个位置中,以及,基于所检测的错误的确定,来有选择地无效所述两个位置中的一个。
9.如权利要求8所述的方法,进一步包括响应于用于分配的数据提取的完成未无错误地发生的确定,在随后将所述有效项存储到所述系统存储器之前,使所述临时缓冲的非写通式存储缓冲项有效。
10.如权利要求9所述的方法,进一步包括通过更新所述存储缓冲器的所述临时缓冲非写通式存储缓冲项中的有效位,无效所述临时缓冲的非写通式存储缓冲项,以及通过使用将每一个项标识为写通式项或非写通式项的控制位,来标识所述存储缓冲器中的项。
11.如权利要求10所述的方法,进一步包括响应于确定在提取用于分配到所述高速缓存的数据时是否有错误发生,来有选择地启用或禁止所述控制位。
12.如权利要求11所述的方法,进一步包括在所述存储缓冲器的每一个项中提供多个控制位,所述多个控制位与所述行填充缓冲器中的不同项相关联。
13.如权利要求11所述的方法,进一步包括将所述存储缓冲器中的多个项与所述行填充缓冲器中的单一项的不同部分相关联。
14.一种方法,包括经由系统互连,将处理器耦合到系统存储器;耦合与所述处理器耦合的高速缓存,所述高速缓存存储数据并具有第一数据端口以及用于接收控制信息的一个或多个控制输入;将第一缓冲电路耦合到所述高速缓存,用于从所述系统互连接收一个或多个数据字, 所述第一缓冲电路将所述一个或多个数据字存储在一个或多个项的每一个中,响应于从所述系统互连无错误地接收所述一个或多个数据字,所述一个或多个项的第一项的所述一个或多个数据字被写入到所述高速缓存;将第二缓冲电路耦合到所述高速缓存,所述第二缓冲电路具有用于存储存储请求的一个或多个项,每一个项具有相关控制位,所述相关控制位确定从第一存储请求形成的项是否是将从所述第二缓冲电路写入到所述系统存储器的有效项;以及将控制电路耦合到所述高速缓存和第二缓冲电路,所述控制电路提供一个或多个数据字的无错误接收是否发生的错误确定,并且基于所述错误确定,来有选择地将所述相关控制位设置成无效所述第二缓冲电路中的项的值。
15.如权利要求14所述的方法,进一步包括 将所述第一缓冲电路实现为行填充缓冲器;以及将所述第二缓冲电路实现为用于写通式存储的存储缓冲器。
16.如权利要求15所述的方法,进一步包括提供与预定存储请求有关的有效位,用于与所述相关控制位分离的确立所述第二缓冲电路中的所述预定存储请求的有效性;如果所述错误确定表示在填充所述第一缓冲电路的相关项中无错误发生,则通过所述相关控制位来无效所述第二缓冲电路中的预定存储请求。
17.如权利要求16所述的方法,进一步包括提供与所述第二缓冲电路中的预定存储请求相关的多个控制位,所述多个控制位中的每一个与所述第一缓冲电路中的不同项相关联,所述控制电路使用所述多个控制位中的仅一个来表示所述第二缓冲电路中的预定存储请求的无效。
18.如权利要求16所述的方法,进一步包括提供与所述第一缓冲电路的第一项的不同部分相关联的所述第二缓冲电路中的多个项。
19.如权利要求14所述的方法,进一步包括当所述错误确定表示无错误并且所述相关控制位被断言时,使所述相关控制位和与所述第一存储请求有关的所述第二缓冲电路中的项的有效位取消断言来无效所述第一存储请求;以及当所述错误确定表示错误时,使所述相关控制位取消断言并使与所述第一存储请求有关的所述第二缓冲电路中的项的所述有效位断言来使所述第一存储请求有效。
20.如权利要求14所述的方法,进一步包括利用耦合到所述高速缓存的加载/存储单元的存储数据,填充所述第一缓冲电路的所述一个或多个项的所述第一项的第一部分;以及利用来自所述系统互连的数据,填充所述第一缓冲电路的所述一个或多个项的所述第一项的第二部分,其中,所述错误确定确定来自所述系统互连的所述一个或多个数据字是否有错误。
全文摘要
处理器(16)和高速缓存(40)经由系统互连(12)耦合到系统存储器(13)。耦合到高速缓存的第一缓冲电路(44)接收一个或多个数据字并将一个或多个数据字存储在一个或多个项(46)的每一个中。响应于无错误接收,第一项的一个或多个数据字被写入到高速缓存。耦合到高速缓存的第二缓冲电路(50)具有用于存储存储请求的一个或多个项。每一个项具有相关控制位(S),确定从第一存储请求形成的项是否是将从第二缓冲电路写入到系统存储器的有效项。基于一个或多个数据字的无错误接收,基于错误确定,将相关控制位设置成无效第二缓冲电路中的项的值。
文档编号G06F12/00GK102216898SQ200980120007
公开日2011年10月12日 申请日期2009年3月27日 优先权日2008年5月30日
发明者威廉·C·莫耶, 库延·普 申请人:飞思卡尔半导体公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1