具有允许写入未预先加载的高速缓存行的高速缓存电路的多处理电路的制作方法

文档序号:6593360阅读:186来源:国知局
专利名称:具有允许写入未预先加载的高速缓存行的高速缓存电路的多处理电路的制作方法
技术领域
本发明涉及一种多处理系统以及一种处理多个任务的方法。
背景技术
已知在多处理电路的主存储器与各个处理器电路之间使用高速缓存存储器。高 速缓存存储来自主存储器的数据的拷贝,来自主存储器的数据可以通过主存储器地址来 进行寻址。因此,每个处理器电路可以访问其高速缓存存储器中的数据,而不直接访问 主存储器。在具有可以存储相同数据的拷贝的多个高速缓存存储器的多处理系统中,在修 改数据时数据的一致性是一个问题。如果一个处理器单元修改其高速缓存存储器中针对 主存储器地址的数据,在将修改后的数据写回主存储器之前,从该主存储器地址加载数 据会导致不一致性。同样其他处理器电路的高速缓存存储器中针对主存储器地址的先前 数据的拷贝会不一致。可以使用高速缓存协议来防止不一致性。一种已知的高速缓存协议是所谓的 “修改_排他-共享-无效”(MESI)协议。该协议基于高速缓存行来工作,高速缓存行
分别包含针对来自连续主存储器位置的数据的高速缓存存储器位置。根据MESI协议, 每个高速缓存行具有分配的状态,这种状态根据与高速缓存行有关的事件而改变。这样 的事件可以通过监控(监听)其他高速缓存存储器使用来访问主存储器的地址以及其他高 速缓存存储器广播的信号来检测。正如协议的名称所建议的,状态包括“修改”状态、“排他”状态、“共享”
状态以及“无效”状态。当从主存储器将数据加载到高速缓存行中且没有其他高速缓存 存储器高速缓存该数据时,将排他状态分配给该高速缓存行。当从主存储器将数据加载 到高速缓存行中且另一高速缓存存储器也存储了该高速缓存行时,将共享状态分配给高 速缓存行。如果在发生上述情况时其他高速缓存存储器中的高速缓存行处于排他状态, 则将其他高速缓存存储器中的高速缓存行改成共享状态。当高速缓存行被“损坏”时, 即,被从高速缓存中移除时,向高速缓存行分配“无效”状态。这可以为其他数据让出 空间,或者在需要避免不一致时进行。在MESI协议中,当来自关联的处理器电路的写入操作修改高速缓存行中的数据 时,将“修改”状态分配给高速缓存存储器的该高速缓存行。可以使用至修改状态的转 移来触发将无效状态分配给其他高速缓存存储器中的相应高速缓存行。在高速缓存存储 器已将高速缓存行写回主存储器之前,保持修改状态。当已执行了写回时,可以将高速缓存行从修改状态切换。然而,有利的是并不 使用立即写回,以避免在接收到高速缓存行中的多次数据修改情况下的多次写回。可以 在单次动作中写回这种多次修改的最后结果。在这种情况下,高速缓存行保持在修改状 态,直到写回为止。
修改状态具有以下效果防止其他高速缓存存储器独立地加载高速缓存行的针 对主存储器地址的数据。取而代之,当尝试将这样的数据加载到其他高速缓存存储器中 时,采取动作以确保一致性。一种解决方案是,通过将修改后的高速缓存行写回到主存 储器中,即,通过从修改状态中退出,来响应来自另一高速缓存的加载尝试。当上述已 经完成时,其他高速缓存可以从主存储器加载高速缓存行。更快速的解决方案是,从修 改状态的高速缓存行中将数据拷贝到尝试加载该数据的其他高速缓存存储器,而不是从 主存储器加载该数据。在这之后,稍后进行写回到主存储器。已经提出了 MESI协议的各种改进,其中,已经扩展了可以分配给高速缓存行的 状态的范围,以提高高速缓存效率。例如,美国专利申请2005/27946已经提出了添加
“增强修改”状态和“增强排他”状态。“增强修改”状态的分配对于高速缓存行表示 了与“修改”状态相同,同时加上以下事实修改后的高速缓存行的拷贝存储在另一高 速缓存存储器中。“增强排他”状态分配给高速缓存行表示了高速缓存行在另一高速缓 存存储器中处于“增强修改”状态。这些状态用于将写回高速缓存行的职责从一个高速 缓存传递给另一个高速缓存。MESI协议下的访问操作要求,包括针对所访问的主存储器地址的数据在内的高 速缓存行必须在高速缓存存储器中。如果数据没有存在于高速缓存中,则发生高速缓存 未命中,并且首先必须加载数据。这也可以应用在访问操作是写入操作时。这一点可以 是有利的,因为很可能以短时间距离来访问针对高速缓存行中相邻地址的数据,从而它 们在高速缓存中的可获得性会加速处理。在任何情况下,这在将MESI协议的修改状态 分配给高速缓存行之前是有必要的,这表示了高速缓存行包含最新数据。然而,仅需要使用来自高速缓存行的修改的数据。在这种情况下,在能够访问 数据之前将数据加载到高速缓存存储器中的这种需要在写入操作情况下降低了处理器效 率。

发明内容
本发明的目的是提高具有高速缓存存储器的多处理系统的效率。提供了一种根据权利要求1所述的多处理电路。该电路包括具有存储器的高速 缓存电路,所述存储器用于高速缓存行、定义存储器中高速缓存行的状态的状态信息、 以及存储器中至少一个高速缓存行内的各个可寻址位置的标志信息。当标志信息指示无 效状态时,响应于对未存储在存储器中的高速缓存行中的位置进行寻址的访问命令以及 响应于对存储在存储器中的所述至少一个高速缓存行内的位置进行寻址的读取命令,来 检测高速缓存未命中。当第一处理电路将数据写入位置的一部分时,第一高速缓存电路的控制电路选 择性地在第一高速缓存电路中将标志信息置位,而不预先从后台存储器中加载存储的至 少一个高速缓存行。第二高速缓存电路的高速缓存控制电路结合针对至少一个高速缓存 行的标志信息,从第一高速缓存电路中拷贝来自至少一个高速缓存行的数据,因此,在 不必从后台存储器中读取高速缓存行的情况下,无法为写入数据提供高速缓存一致性。在实施例中,通过首先迫使第一高速缓存电路将至少一个高速缓存行连同从标 志信息导出的信号一起写回至主存储器,以选择性地使能高速缓存行的一部分的写入,
5来执行拷贝。在这种情况下,第二高速缓存可以从该写回获得高速缓存行数据以及标志 信息。因此,不需要附加手段来实现高速缓存到高速缓存的拷贝。在实施例中,针对写入操作,响应于高速缓存未命中来为高速缓存行分配存储 空间,而不响应于高速缓存未命中来将数据从后台存储器加载到高速缓存中。然后将来 自写入操作的数据写入分配的存储空间,并且将标志信息置位以选择性地指示来自写入 命令的数据所写入的那个位置或那些位置有效。因此,由此避免了从后台存储器加载数 据的时间损失。在实施例中,当至少一个高速缓存行在存储器中但标志信息指示无效状态时, 通过产生针对该高速缓存行的无效信号,响应于针对读取命令的高速缓存未命中,产生 针对高速缓存未命中的无效信号。相反,其他高速缓存未命中(例如,由于高速缓存行 根本没有存储在高速缓存电路中这一事实引起的未命中)引起读取请求。这样,以简单 方式确保了针对读取操作的一致数据。在实施例中,当至少一个高速缓存行在存储器中但标志信息指示无效状态时, 针对读取命令,在高速缓存未命中的情况下使用特殊读取请求。第一和第二高速缓存电 路的控制电路选择性地将通过特殊读取请求所获得的后台存储器数据仅拷贝到标志信息 指示不处于无效状态的位置。因此,避免了首先将来自高速缓存行的数据写回至后台存 储器的需要。在实施例中,当无效和/或收回(evict)至少一个高速缓存行时,写回涉及到基 于标志信息的针对内容的相应部分的写入使能信号。因此,使后台存储器保持一致。在 实施例中,针对宽数据总线的相应部分的写选通脉冲(writestrobe)可以用于该目的。


图1示出了多处理器系统;图2示出了高速缓存电路的结构方面;图3示出了高速缓存操作的流程图。
具体实施例方式图1示出了多处理器系统,包括主存储器10、多个处理器电路12、以及分别 耦接在主存储器与各个处理器电路12之间的高速缓存电路14、14’、14”。诸如总线之 类的通信电路16可以用于将高速缓存电路14、14’、14”耦接至主存储器10,并将高 速缓存电路14、14’、14”彼此耦接。处理器电路12可以包括可编程电路,被配置 为通过执行指令程序来执行任务。备选地,处理器电路12可以被专门设计为执行任务。 尽管为了简要起见在处理器电路12与主存储器之间示出了具有一个高速缓存电路层的简 单结构,应当强调的是,实际上可以使用更大数量的高速缓存层。在操作中,当每个处理器电路12执行任务时,每个处理器电路12通过提供地 址、通知要执行读取还是写入操作(以及可选地,读取修改写入操作)、以及输入和/或 输出在操作中所涉及的数据,来访问其高速缓存电路14、14’、14”。高速缓存电路14、14’、14”可以具有类似结构,并因此在下文中当不存在区 别时使用附图标记14来指代每个高速缓存电路。更详细示出了高速缓存电路14中的一个。该高速缓存电路包括高速缓存存储器140、地址比较电路142以及控制电路144。高 速缓存存储器140耦接至处理器电路12的数据输入/输出接口。高速缓存存储器140包 括用于存储高速缓存行的存储地址。地址比较电路142耦接在处理器电路12的地址输出 与高速缓存存储器140的选择输入之间。此外,地址比较电路142具有耦接至来自通信 电路的连接的监听输入。控制电路144耦接在高速缓存存储器140与主存储器10之间, 其中,控制电路144经由通信电路16耦接至主存储器10。此外,控制电路144耦接至地 址比较电路142。可以将控制电路144实现为被编程以执行在下文中描述的动作的微处理 器电路。取而代之,可以使用被设计为执行这些动作的逻辑电路,或查找电路。在操作中,高速缓存存储器140存储具有来自主存储器10的数据的拷贝的高速 缓存行。地址比较电路142将来自处理器电路12的地址与存储的高速缓存行的地址信息 进行比较,并且如果检测到针对该地址的数据存储在高速缓存存储器140中,则产生选 择信号,以在高速缓存中选择存储位置。响应于此,高速缓存存储器140在所选位置中 读取和/或写入数据。当地址比较电路142检测到高速缓存存储器140没有存储针对该地址的数据时, 地址比较电路142将这一点通知给控制电路144。如果发生了上述情况,控制电路144在 高速缓存存储器140中选择存储位置,以存储具有针对该地址的数据的高速缓存行。控 制电路144将信息提供给地址比较电路142,使其能够将地址转换成对存储位置的选择。 如果访问是读取操作,则控制电路144首先访问主存储器10,以加载包含针对该地址的 数据在内的高速缓存行,并控制电路144将该高速缓存行存储在高速缓存存储器140中的 所选位置中。地址比较电路142还监控其他高速缓存电路14所发送的地址,并且将这些地址 与存储的高速缓存行的地址信息进行比较。当地址比较电路142检测到高速缓存存储器 140存储针对这样的地址的数据时,地址比较电路142将这一点通知给控制电路144。响 应于此,控制电路可以修改高速缓存行的状态、更新高速缓存行中的数据、或者使高速 缓存行无效。这可以根据MESI协议以及如下所述来进行。图2示出了高速缓存电路14的结构方面。示出了多个高速缓存行20,并且针对 每个高速缓存行,示出了针对地址标签22、高速缓存行状态信息24以及标志信息26的存 储位置。高速缓存行20存储在高速缓存存储器140中。地址标签22、高速缓存行状态 信息24以及标志信息26可以存储在地址比较电路142中,但是备选地,该信息的一部分 或全部可以存储在高速缓存存储器140中。地址标签22表示应用于相应高速缓存行20的地址的一部分或全部。应注意, 地址标签可以在复杂的地址比较方案起作用,例如在η向关联比较方案中,在这样的情 况下仅需要表示地址的一部分。在全关联方案中,可以使用更完整的地址。由于这与进 一步描述无关,因此不对比较方案的具体内容进行描述。高速缓存行状态信息24表示分配给高速缓存行20的状态。该状态信息至少在排 他状态、无效状态、修改状态以及共享状态之间进行区分。与标志信息相结合地或者通 过其自身,状态信息还可以区分部分有效修改状态与部分有效共享状态。可以使用更多 状态。当使用少于8个状态时,三个比特足以表示状态,但是可以使用任何状态表示。在高速缓存行20中提供针对各个可寻址位置(例如,字节或字)的标志信息
726。因此,例如,如果每个高速缓存行由8个可寻址位置组成,则针对每个高速缓存行 提供8个标志信息项,如果每个高速缓存行由16个可寻址位置组成,则针对每个高速缓 存行提供16个标志信息项。每个项可以由单个比特组成。标志信息项可以处于置位状态 或重置状态,在这样的情况下,可以将针对位置的标志信息分别描述为“置位”和“重 置”(或“未置位”)。在标志比特的情况下,置位可以对应于二进制值1,重置对应于 二进制值0。控制电路144被配置为使用高速缓存行状态信息24和标志信息26来控制高速缓 存操作。除了来自处理器电路12的写入操作的情况之外,当高速缓存行的状态信息24指 示排他状态、无效状态、修改状态或共享状态时,传统MESI协议可以用于高速缓存行。图3示出了高速缓存电路14的操作的流程图。在第一步骤31中,处理器电路 12发出具有地址的访问操作。在第二步骤32中,比较电路142检测具有该地址的高速缓 存行是否存储在高速缓存存储器140中。如果是,比较电路142执行第三步骤33,测试 操作是否是读取操作(第二步骤32和第三步骤33可以并行执行)。在读取操作的情况 下,高速缓存存储器140执行第四步骤34,读取并返回其所存储的针对该地址的数据。 如果操作是写入操作,则高速缓存存储器140在备选第四步骤34a中将数据写入针对该高 速缓存行的存储位置。同样,如果操作是至缓存的高速缓存行的写入操作,则控制电路 144执行第五步骤35,在高速缓存行处于共享状态情况下向其他高速缓存电路14发送针 对该高速缓存行的无效信号,并且执行第六步骤36,将高速缓存行的状态改变成修改状 态。当第二步骤32揭示了在高速缓存存储器140中没有存储具有数据的高速缓存行 时,控制电路144执行第七步骤37,在高速缓存存储器140中为包含该地址的高速缓存行 分配存储位置。这可以涉及另一高速缓存行的收回。随后,控制电路144测试操作是读 取操作还是写入操作。在读取操作的情况下,控制电路144执行第九步骤39,发出从主 存储器10加载高速缓存行的请求,或者如果已经提供了,则发出从另一高速缓存电路14 加载高速缓存行的请求。此外,在第九步骤39中,控制电路依据从中拷贝该高速缓存行 的源,将高速缓存行的状态置位为例如排他或共享。随后,高速缓存存储器140可以进 行第四步骤34 (在流程图中省略了连接)。因此,在从主存储器10中读取针对具体地址的高速缓存行时,控制电路114可 以在没有接收到其他高速缓存电路14缓存了针对该具体地址的高速缓存行的信号情况 下,将高速缓存行状态信息置位为表示排他状态,并且在一个或多个其他高速缓存电路 14缓存了处于共享或排他状态的、针对该具体地址的高速缓存行的情况下,将高速缓存 行状态信息置位为共享状态。类似的,当控制电路144检测到另一高速缓存电路14加载 了针对该地址的高速缓存行时,控制电路114可以将针对该具体地址的高速缓存行的排 他状态替换为共享状态。当高速缓存行被“收回”时,例如,为针对另一地址的高速缓存行让出空间, 或者在修改之后,控制电路将高速缓存行状态信息24置位为表示无效状态。地址比较电 路142测试高速缓存行状态信息24是否表示“无效状态”。如果是,则地址比较电路 142不选择该高速缓存行,从而对于相关地址发生高速缓存未命中。并行地,高速缓存电路14还监控来自其他高速缓存电路14的信号。如果比较电路142检测到来自另一高速缓存电路的、针对存储在高速缓存存储器140中的高速缓存 行中的地址的信号,则将这一点通知给控制电路144。依据该信号,控制电路144可以收 回高速缓存行或改变其状态。部分有效高速缓存行当处理器电路12通知针对写入地址的写入操作,并且地址比较电路142检测到 没有存储针对该写入地址的有效高速缓存行时,则执行特殊动作。地址比较电路142将 这一点通知给控制电路144。响应于此,控制电路144例如通过收回高速缓存存储器140 中的另一高速缓存行,来选择高速缓存存储位置,以存储具有与该写入地址相关联的数 据的高速缓存行。任何已知的策略,例如,LRU(最近最少使用)可以用于选择这样的 存储位置。随后,控制电路144将针对所选高速缓存行的高速缓存行状态信息24置位为表 示修改状态。备选地,可以将状态信息24置位为特殊的“部分有效修改”状态。当例 如通过将高速缓存行地址的一部分写入到针对分配的存储位置的标签信息来使用写入地 址时,控制电路144使得地址比较电路142能够选择该高速缓存行。将来自处理器电路 12的写入操作的写入数据存储在高速缓存行中。然而,不加载来自主存储器10的针对高 速缓存行的数据。应当认识到,这意味着高速缓存行中未写入处的数据实际上是无效的(即,不 确保与主存储器10中的数据相同,或者通过处理器电路12修改的),尽管并没有为高速 缓存行置位无效状态。取而代之,这可以通过标志信息来指示。将针对数据所写入的一 个或多个位置的标志位或标志信息置位。重置高速缓存行中针对所有其他可寻址位置的 标志信息。效果上,标志信息连同状态信息24 —起可以指示高速缓存行处于“部分有效 修改”状态。当将高速缓存行从主存储器10整体地读入到高速缓存存储器中时,针对高 速缓存行中的所有位置将标志信息26置位。备选地或附加地,可以将高速缓存行的状态 置位,以指示高速缓存行整体上是有效的。当处理器电路12随后将数据写入到与处于修改或部分有效修改状态中的高速缓 存行20相关联的地址时,将高速缓存行中一个或多个可寻址位置的标志信息置位,并且 将来自处理器电路12的写入数据存储在这些位置中。如可以注意到的,这可以意味着高 速缓存行中该部分数据是有效的,但是不知道等于主存储器中的相应数据。当将写入数据写入到高速缓存行中时,如果在分配之后或者随后,控制电路144 向其他高速缓存电路14发送具有该写入地址的高速缓存行的无效信号,使得这些高速缓 存电路在已经存储了该高速缓存行的情况下可以收回高速缓存行。可选地,如果高速缓 存行处于排他状态,则可以省略上述操作。响应于此,其他高速缓存电路如果已经存储 了该高速缓存行,则收回该高速缓存行。图3示出了该操作的示例的流程图。在第八步骤38之后,当检测到针对还没有 在高速缓存存储器140中的高速缓存行中的地址接收到写入操作时,控制电路144执行第 一附加步骤301,将针对该高速缓存行的状态信息置位为修改,或者如果可用,置位为部 分有效修改。随后,控制电路144执行第二附加步骤302,向其他高速缓存电路14针对 该高速缓存行的无效信号。接着,高速缓存存储器140执行第三附加步骤303,将写入操作的数据写入到针对该高速缓存行的分配位置的一部分中,并且将针对写入了数据的位置的标志信息26置 位。类似的,在备选第四步骤34a中,在检测到至先前存储的高速缓存行的写入之后, 高速缓存存储器140将写入了数据的位置的标志信息26置位。在写入期间已置位的标志信息用于控制针对处理器电路12的读取操作的控制执 行。当处理器电路12从与处于部分有效修改状态中的高速缓存行20相关联的地址中读 取数据时,地址比较电路142测试高速缓存行中针对该地址的标志比特(或者在读取操作 覆盖多个可寻址位置的情况下,测试针对地址序列的标志比特),并且在没有标志比特未 被置位(或者针对序列的标志信息中的任何一个未被置位)的情况下产生高速缓存未命中 信号。控制电路144通过以下操作响应针对部分有效修改状态的高速缓存行的高速缓 存未命中将数据从高速缓存行写回至主存储器10,仅针对来自高速缓存行中由标志比 特的置位值标记了的可寻址位置的数据,使能写入。不在主存储器10中更新标志比特处 于重置状态的位置。例如,可以使用具有针对主存储器的各个数据线的多个写选通脉冲 线的主存储器,在这种情况下,使用标志信息来控制写选通脉冲线。随后,控制电路144 将数据从高速缓存行读取回至主存储器10,并且将排他或共享状态分配给高速缓存行。在图3的流程图中,这可以通过第四步骤34来实现,第四步骤34包括子步骤 341,在从高速缓存存储器140中读取(或至少输出)数据的子步骤343之前,在子步骤 341中,控制电路144测试读取操作是否仅读取被标志信息26指示为有效的数据。如果 数据的任何部分或全部是无效的,则在使得高速缓存存储器140执行读取数据的子步骤 之前,控制电路144首先执行子步骤342,使得将数据从主存储器10读取到高速缓存存储 器140中。当控制电路144判定收回高速缓存行时,该控制电路144测试高速缓存行的分配 状态,并且根据针对传统MESI状态的MESI协议,执行写回。当测试揭示出高速缓存行 处于修改状态(或者如果可用,部分有效修改状态)时,控制电路144对收回执行写回, 选择性地使能对来自标志信息26已置位的位置的数据的写回,并禁用来自标志信息26未 置位的的位置的数据的写入。这可以通过使用被配置为依据标志信息来使能写入的主存 储器来进行,例如,主存储器具有写选通脉冲线,在这种情况下,控制电路144利用标 志信息来控制写选通脉冲线。备选地,控制电路144可以具体提供必须修改的主存储器 位置的地址。高速缓存行收回可以发生在例如控制电路144从另一高速缓存电路14接收到针 对高速缓存行的无效信号时。此外,控制电路144本身可以引起收回,例如当控制电路 144需要用于另一高速缓存行的存储空间时。具有收回的一些特性的动作也发生在针对高速缓存行中的特定位置检测到读取 高速缓存未命中时。这可以涉及首先选择性地使能来自主存储器的高速缓存行中修改 后的数据的写回读回,然后从主存储读回整个高速缓存行。在另一实施例中,控制电路 144可以执行从主存储器10读取高速缓存行,而不首先写回修改后的数据。在这种情况 下,控制电路144利用来自主存储器10的数据更新在高速缓存存储器中的所选位置处的 数据,在标志信息24指示数据不是有效的位置处。在这种情况下,控制电路144将高速 缓存行保持在修改状态。
10
与其他高速缓存电路的交互控制电路144监控来自其他高速缓存电路14的请求。当控制电路144检测到请 求与相关联的高速缓存存储器140中存储的高速缓存行有关时,控制电路可以响应该请 求。当高速缓存行处于部分有效修改状态(由标志信息或特殊部分有效修改状态值指示) 时,可以提供多种类型的请求。在实施例中,控制电路可以通过将高速缓存行的修改后 的数据写回至主存储器10来进行响应,以使其可用于其他高速缓存电路14。在这种情况 下,高速缓存行可以切换至共享状态。在另一实施例中,可以在高速缓存电路14之间直 接通信修改后的数据。在这些实施例中,当地址比较电路142检测到来自另一高速缓存电路14的读取 请求具有存储的高速缓存行中的地址,并且该高速缓存行具有修改状态(或部分有效修 改状态)时,控制电路144通过向主存储器10和/或其他高速缓存电路14传输已被分 配部分有效修改状态的高速缓存行,来响应针对该高速缓存行的读取请求。在这种情况 下,控制电路144还例如经由写选通脉冲线传输针对高速缓存行的标志信息26。可选 地,控制电路仅传输来自标志比特已置位的位置的数据。请求该高速缓存行的高速缓存电路14的控制电路144将数据加载到其高速缓存 存储器140中针对该高速缓存行的存储位置,并且根据接收到的标志信息,对针对该高 速缓存行的标志信息进行置位。在实施例中,在高速缓存行处于修改状态的情况下,这 可以通过拷贝数据以及从高速缓存电路14发送给主存储器的标志信息来进行。在这种情 况下,高速缓存行效果上处于在部分有效共享状态。这可以与共享状态的分配相结合地 通过标志信息来指示,或者可选地通过分配不同的部分有效共享状态值来指示。如将认识到的,高速缓存电路14之间的部分有效高速缓存行的拷贝具有以下 效果高速缓存存储器140可以包含修改后的数据的拷贝,但在其他位置中具有无效数 据,这由标志信息标记。如果来自高速缓存行的读取操作对由标志信息26标记为无效的位置进行寻址, 则控制电路144产生针对高速缓存行的无效信号。如所述,这会使持有高速缓存行在部 分有效修改状态的高速缓存电路14的控制电路144将高速缓存行的有效部分写回主存储 器10。之后,请求该读取的控制电路从主存储器10加载整个高速缓存行。类似地,对于 后续读取操作,如果涉及由标志信息26标记为无效的位置,则会产生高速缓存未命中。在备选实施例中,控制电路144响应于针对在高速缓存中但仅部分有效的高速 缓存行的这种类型的读取未命中,产生特殊类型的读取请求,而不是无效信号。这可以 避免首先写回高速缓存行。可以使用两种可检测类型的读取请求当高速缓存行根本没 有存储在高速缓存存储器时,正常类型的读取请求;以及当存储了高速缓存行但数据部 分无效时,特殊类型的读取请求。控制电路144监控是否发送了针对标志信息指示了数据的一部分无效的高速缓 存行的特殊类型的读取请求。如果是,控制电路144选择性地从主存储器10返回的数据 中拷贝标志信息未置位的位置处的数据。因此,将有效数据加载到不包含有效数据的位 置中。在这种情况下,可以针对高速缓存行中所有位置将标志信息置位。这可以在存 储了该高速缓存行的所有高速缓存电路中进行,其中为该高速缓存行部分地重置标志信 肩、o
存在多种可能性来确保在共享情况下的后续一致性以及向主存储器10最终写回 修改。原则上,将修改状态(或者部分有效修改状态)分配给高速缓存电路14中的高速 缓存行意味着,高速缓存电路具有将修改后的数据写回至主存储器10的职责。当已经履 行了该职责时,可以将高速缓存行切换至另一状态。在一个实施例中,完全职责始终保 持在首先将高速缓存行置于修改状态(或部分有效修改状态)的高速缓存电路14。在其他实施例中,用于确保一致性和/或写回的职责可以在高速缓存电路之间 部分或全部地转移。在转移针对高速缓存行的职责的实施例中,在高速缓存行处于修改 状态(或部分有效修改状态)时请求该高速缓存行并从高速缓存电路14接收该高速缓存 行的高速缓存电路14的控制电路144随后可以将该高速缓存行的状态置位为修改状态 (或部分有效修改状态)。在这种情况下,可以发通知原高速缓存电路将该高速缓存行从 修改状态切换。在实施例中,这可以通过将针对该高速缓存行的无效信号发送至原高速 缓存电路14来进行。例如,当检测到至共享状态并且数据部分有效的高速缓存行的、来 自处理器电路12的写入操作时,可以采用上述动作。因此,在高速缓存电路14之间可以转移一些权限和职责。例如,在检测到至 处于部分有效共享状态的高速缓存行的写入操作时,控制电路144可以允许写入,将写 入数据的位置的标志信息置位,并向其他高速缓存电路发送针对该高速缓存行的无效信 号。在这种情况下,伴随着上述操作,控制电路可以将高速缓存行切换至部分有效修改 状态。尽管已经从所采取的动作方面描述了高速缓存电路14的操作,但是应当理解, 可以将该方法操作直接转换成高速缓存电路14的配置,例如,转换成执行该动作的控制 电路144的计算机程序的指令,和/或转换成使在指定情况下执行动作的逻辑电路。应当认识到,各种备选实施例是可能的。尽管已经描述了针对所有存储的高速 缓存行保持标志信息的实施例,但是应当认识到,取而代之,也可以仅针对一个存储的 高速缓存行或高速缓存行的一部分来保持标志信息。在这种情况下,可以根据传统MESI 协议来处理其他高速缓存行,当必须从处理器电路12写入数据时,如果整个高速缓存行 不在高速缓存存储器140中,则将整个高速缓存行加载到高速缓存存储器140中。效果 上,这意味着,隐含地假定针对这种高速缓存行中的所有位置,标志信息是置位的。在 这种情况下,可以提供由在具有标志信息的高速缓存行的情况下的标志信息控制的任何 信号,就如同为不具有标志信息的高速缓存行设置了标志信息一样。在实施例中,状态信息24仅表示MESI状态值(修改、排他、共享和无效),在 这种情况下,控制电路144在依据所有数据是否有效而需要不同动作时执行针对高速缓 存行的标志信息的测试。备选地,附加的状态值可以用于指示部分有效数据的存在。在 这种情况下,控制电路144可以首先测试针对高速缓存行的状态信息是否指示这样的附 加状态。这可以去除对测试各个单独标志信息项的需要。附加状态的表示也可以是标志 信息的一部分,例如采取应用于整个高速缓存行的单个比特的形式。可以考虑该比特是 标志信息26和状态信息24中的一个或二者的一部分。标志信息26和状态信息24可以 交叠。在实施例中,在高速缓存电路之间已经拷贝了高速缓存行之后,可以在高速缓 存电路之间部分地转移写回部分有效高速缓存行的职责。在实施例中,这可以通过以下操作来实现提供附加信息来在高速缓存电路所修改的数据与其他高速缓存电路所修改 的数据之间进行区分,并随后进行拷贝。在这种情况下,每个高速缓存电路可以被配置 为使能仅针对因在高速缓存电路中的修改而被标记的数据至存储器的写回。在实施例中,这可以通过提供附加信息指示存储了部分有效高速缓存行的拷贝 的高速缓存电路的数目来实现。在这种情况下,控制电路144每次在检测到高速缓存 行被拷贝至另一高速缓存电路时以及每次在检测到从另一高速缓存电路收回高速缓存行 时,更新附加信息。在该实施例中,假定附加信息指示高速缓存电路是(仍)存储了高速 缓存行的唯一一个高速缓存电路,控制电路144在从高速缓存电路收回高速缓存行时, 写回该高速缓存行,选择性地使能了被修改的位置。在另一实施例中,附加信息可以仅指示高速缓存电路是否是存储高速缓存行的 唯一一个高速缓存电路。在该实施例中,写回的职责可以保持在存储了高速缓存行的拷 贝的前两个高速缓存电路。尽管已经描述了可应用于单层高速缓存的实施例,但是应认识到,类似的技术 可以应用于多层高速缓存。同样,尽管已经描述了具有主存储器10的实施例,但是应认 识到,取而代之可以使用任何公共的后台存储器。此外,尽管优选地针对所有处理电路使用相同设计的高速缓存电路,每一个均 允许部分有效高速缓存行,但是应当认识到,备选地,针对部分有效性,可以仅提供高 速缓存电路的一部分电路,其他部分的电路遵照正常MESI协议。因此,例如,一个高 速缓存电路可以允许伴随着标志设置来对不具有来自存储器的数据的高速缓存行进行写 入,而另一高速缓存电路可以提供用于拷贝标志信息以及使用标志信息检测高速缓存未 命中,即使这两个高速缓存不是都同时具有这两种能力。甚至可以将一些处理电路设置 为根本不具有高速缓存。如将注意的是,当通过这样的处理器电路访问数据时,有必要 将来自部分有效高速缓存行的数据写回至主存储器。根据对附图、本公开以及所附权利要求的研究,本领域技术人员在实践权利要 求所保护的本发明时可以理解和实现所公开的实施例的其他变体。在权利要求中,单词
“包括”不排除其他元件或步骤,不定冠词“a”或“an”不排除多个。单个处理器或 其他单元可以履行权利要求中所引述的若干项的功能。在彼此不同的独立权利要求中引 述特定手段的事实并不指示这些措施的组合不是有利的。计算机程序可以存储/分布在 适合介质上,例如,与其他硬件一起提供或作为其他硬件的一部分提供的光存储介质或 固态介质,但是也可以以其他形式分布,例如经由互联网或其他有线或无线电信系统。 权利要求中的附图标记不应视为限制本发明的范围。
权利要求
1.一种多处理电路,具有至后台存储器(10)的接口、第一和第二处理电路(12)、 以及分别耦接在所述接口与第一和第二处理电路(12)之间的第一和第二高速缓存电路 (14、14’),第一和第二高速缓存电路(14,14’)分别包括_存储器(140),用于高速缓存行、定义了存储器(140)中高速缓存行的状态的状态 信息、以及存储器(140)中至少一个高速缓存行内的各个可寻址位置的标志信息;-高速缓存命中和未命中检测电路(142),耦接至存储器(140)和处理电路(12), 用于接收访问命令,高速缓存命中和未命中检测电路(142)被配置为在标志信息指示无 效状态时,响应于对未存储在存储器(140)中的高速缓存行中的位置进行寻址的访问命 令以及对存储在存储器(140)中的所述至少一个高速缓存行内的位置进行寻址的读取命 令,来产生高速缓存未命中命令;-高速缓存控制电路(144),耦合至高速缓存命中和未命中检测电路(142)、存储器 (140)和后台存储器接口,其中,第一高速缓存电路(14)的高速缓存控制电路(144)被配 置为,在第一处理电路(12)向所述至少一个存储高速缓存行内的可寻址位置的一部分写 入数据时选择性地将第一高速缓存电路(14)中针对可寻址位置的所述一部分的标志信息 置位为有效状态,而不预先从后台存储器(10)加载所存储的所述至少一个高速缓存行, 第二高速缓存电路(14’ )的高速缓存控制电路(144)被配置为结合针对至少一个高速缓 存行的标志信息,从第一高速缓存电路(14)拷贝来自所述至少一个高速缓存行的数据。
2.根据权利要求1所述的多处理电路,其中,第二高速缓存电路(14’)的控制电路 (144)被配置为产生针对未命中的高速缓存行的读取请求,以及第一高速缓存电路(14) 被配置为检测所述读取请求并在检测到所述读取请求具有与所述至少一个高速缓存行的 地址匹配的请求地址时,使第一高速缓存电路(14)的控制电路(144)结合标志信息来产 生依据所述至少一个高速缓存行的信息的传输,第二高速缓存电路(14’)的控制电路 (144)被配置为根据所述传输导出高速缓存行和标志信息。
3.根据权利要求2所述的多处理电路,其中,第一高速缓存电路(14)的控制电路 (144)被配置为产生所述传输作为至后台存储器(10)的写入命令,其中所述至少一个高 速缓存行的内容作为写入数据,以及根据标志信息导出针对所述内容的相应部分的写入 使能信号。
4.根据权利要求1所述的多处理电路,其中,第一高速缓存电路(14)的控制电路 (144)被配置为当所述至少一个高速缓存行不在第一高速缓存电路(14)的存储器(14) 中时,响应于针对来自第一处理器电路(12)的写入命令的具有所述至少一个高速缓存行 中的地址的高速缓存未命中,在存储器(140)中为所述至少一个高速缓存行分配存储空 间;使能来自第一处理的至所分配的存储空间的写入,而不首先从后台存储器拷贝高速 缓存行的当前内容;以及将标志信息置位以选择性指示来自写入命令的数据所写入的那 个位置或那些位置为有效的。
5.根据权利要求1所述的多处理电路,其中,第二高速缓存电路(14’)的控制电路 (144)被配置为当所述至少一个高速缓存行在存储器(140)中但标志信息指示无效状态 时,通过产生针对高速缓存行的无效信号来响应针对读取命令的高速缓存未命中;以及 通过产生读取请求来响应于其他高速缓存未命中。
6.根据权利要求1所述的多处理电路,其中,第二高速缓存电路(14’)的控制电路(144)被配置为在所述至少一个高速缓存行在存储器(140)中但标志信息指示无效状态 时,通过产生与针对其他高速缓存未命中的正常读取请求有区别的针对该高速缓存行的 特殊读取请求,来响应针对读取命令的高速缓存未命中,第一和第二高速缓存电路(14, 14’ )的控制电路(144)被配置为,选择性地将通过特殊读取请求所获得的后台存储器数 据仅拷贝至标志信息指示不在无效状态的位置,并且将这些位置的标志信息置位。
7.根据权利要求1所述的多处理电路,其中,第一高速缓存电路(14)的控制电路 (144)被配置为当所述至少一个高速缓存行被无效和/或被收回时,将所述至少一个高速 缓存行写回,其中所述至少一个高速缓存行的内容作为写入数据,并根据标志信息导出 内容的相应部分的写入使能信号。
8.—种使用分别经由第一和第二高速缓存电路(14,14’)耦接至后台存储器(10)的 第一和第二处理电路(12)来处理数据的方法,所述方法包括-在每个高速缓存电路(14,14’)中存储高速缓存行、定义了存储的高速缓存行的 状态的状态信息、以及存储的至少一个高速缓存行内各个可寻址位置的标志信息;-当第一处理电路(12)将数据写入所述存储的至少一个高速缓存行内的可寻址位置 的一部分时,选择性将第一高速缓存电路(14)中针对可寻址位置的所述一部分的标志信 息置位成有效状态,而不预先从后台存储器(10)加载所述存储的至少一个高速缓存行;-结合所述至少一个高速缓存行内的位置的标志信息,从第一高速缓存电路(14)中 将来自所述至少一个高速缓存行的数据拷贝到第二高速缓存电路(14’ )中;-在标志信息未置位时,响应于对未存储在存储器中的高速缓存行中的位置进行寻址 的访问命令以及响应于对存储在存储器(140)中的所述至少一个高速缓存行内的位置进 行寻址的读取命令,来通知高速缓存未命中信号。
全文摘要
使用分别经由第一和第二高速缓存电路(14,14’)耦接至后台存储器(10)的第一和第二处理电路(12)来处理数据。每个高速缓存电路(14,14’)存储高速缓存行、定义了所存储的高速缓存行的状态的状态信息、以及至少一个存储的高速缓存行内针对各个可寻址位置的标志信息。第一高速缓存电路(14)的高速缓存控制电路被配置为当第一处理电路(12)将数据写入至少一个存储高速缓存行内的可寻址位置的一部分时,选择性地将针对可寻址位置的所述部分的标志信息置位为有效状态,而不预先从后台存储器(10)加载至少一个存储高速缓存行。结合针对至少一个高速缓存行内的位置的标志信息,从第一高速缓存电路(14)将来自至少一个高速缓存行的数据拷贝到第二高速缓存电路(14’)中。在标志信息未置位时,响应于对未存储在存储器中的高速缓存行中的位置进行寻址的访问命令和对存储在存储器(140)中的至少一个高速缓存行内的位置进行寻址的读取命令,来产生高速缓存未命中信号。
文档编号G06F12/08GK102016810SQ200980113959
公开日2011年4月13日 申请日期2009年4月22日 优先权日2008年4月22日
发明者特雷克·安德烈谢尔盖耶维奇, 简·胡格布鲁格 申请人:Nxp股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1