首页 专利交易 科技果 科技人才 科技服务 国际服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

相干性管理器 

买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!

申请/专利权人:畅想科技有限公司

摘要:本公开涉及相干性管理器。一种用于接收在物理地址空间中寻址的监听请求的相干性管理器,该监听请求与使用虚拟地址空间可寻址的缓存存储器有关,该缓存存储器具有多个相干缓存行,该相干性管理器包括:反向转换模块,被配置为维持针对保持在缓存存储器中的每个相干缓存行的从物理地址到虚拟地址的映射;以及监听处理器,被配置为:接收与物理地址有关的监听请求;响应于接收到的监听请求,确定物理地址是否在反向转换模块中被映射到虚拟地址;以及根据该确定来处理监听请求。

主权项:1.一种用于接收在物理地址空间中寻址的监听请求的相干性管理器,所述监听请求与使用虚拟地址空间可寻址的缓存存储器有关,所述缓存存储器具有多个相干缓存行,所述相干性管理器包括:反向转换模块,所述反向转换模块被配置为针对保持在所述缓存存储器中的每个相干缓存行维持从物理地址到虚拟地址的映射;以及监听处理器,所述监听处理器被配置为:接收与物理地址有关的监听请求;响应于接收到的监听请求,确定所述物理地址是否在所述反向转换模块中被映射到虚拟地址;以及根据该确定来处理所述监听请求;其中,所述相干性管理器被配置为在确定所述反向转换模块不包括从所述物理地址到所述虚拟地址空间的映射时,使得在不访问所述缓存存储器的情况下发送对所述监听请求的响应。

全文数据:相干性管理器技术领域本发明涉及相干性管理器,具体地,涉及用于接收在物理地址空间中寻址的监听snoop请求的相干性管理器,其中,例如,监听请求涉及使用虚拟地址空间可寻址的缓存存储器。背景技术现代计算系统期望能够处理各种任务,并且通常包括多个处理器,例如,中央处理单元CPU和图形处理单元GPU。每个处理器可以适于处理不同的处理任务,但可以对存储在主存储器处的相同数据进行操作。例如,一个处理器的处理任务的结果可以在另一处理器中使用。单独的缓存可以与每个处理器相关联。每个缓存可以存储定期或最近访问的数据,并且有助于减少对访问主存储器的需要,这否则可能增加延迟。一个处理器能够修改其本地缓存中的数据条目或缓存行,这可能不会反映在写回主存储器中。因此,该修改后的数据条目不会立即对另一处理器可用。这可能导致数据相干性问题。监听请求可以提供对存储在相干缓存处的数据的访问。然而,这可能导致从总线多次请求相干缓存,这可能增加系统延迟。需要一种管理数据相干性的高效方法。发明内容提供本发明内容是为了以简化形式介绍一些概念,这些概念将在下面的具体实施方式中进一步描述。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不意图用于限制所要求保护的主题的范围。根据本公开的方面,提供了一种用于接收在物理地址空间中寻址的监听请求的相干性管理器,该监听请求与使用虚拟地址空间可寻址的缓存存储器有关,该缓存存储器具有多个相干缓存行,该相干性管理器包括:反向转换模块,被配置为维持针对保持在缓存存储器中的每个相干缓存行的从物理地址到虚拟地址的映射;以及监听处理器,被配置为:接收与物理地址有关的监听请求;响应于接收到的监听请求,确定物理地址是否在反向转换模块中被映射到虚拟地址;以及根据该确定来处理监听请求。适当地,反向转换模块包括基于物理地址空间和虚拟地址空间之间的已知关系来根据物理地址计算虚拟地址的逻辑。适当地,反向转换模块包括反向转换数据结构,其被配置为维持从物理地址空间到虚拟地址空间的映射。适当地,反向转换数据结构包括将物理地址空间中的物理地址链接到虚拟地址空间中的相应虚拟地址的目录。适当地,相干性管理器被配置为在确定反向转换模块不包括从物理地址到虚拟地址空间的映射时,使得在不访问缓存存储器的情况下发送对监听请求的响应。适当地,相干性管理器被配置为在确定反向转换模块包括从物理地址到虚拟地址空间的映射时,访问被配置为将与缓存行有关的状态信息存储在缓存存储器处的缓存行状态数据结构,并且使得根据所存储的状态信息发送对监听请求的响应。适当地,在与缓存行有关的状态信息指示缓存行是下列项中的至少一项的情况下:不存在,处于无效状态正在经历溢出,以及正在进行写回或逐出eviction处理,相干性管理器被配置为确定监听请求导致缓存未命中,并且使得在总线上发送对监听请求的相应响应。适当地,相干性管理器被配置为通过访问缓存来处理监听请求。适当地,在与缓存行有关的状态信息指示缓存行存在并且处于清洁clean状态的情况下,相干性管理器被配置为使得缓存行被逐出,并且缓存不执行将该缓存行处的数据写回主存储器。适当地,相干性管理器被配置为在不访问缓存的情况下处理监听请求。适当地,在与缓存行有关的状态信息指示缓存行存在并且处于肮脏dirty状态的情况下,相干性管理器被配置为使得访问缓存以读取缓存行以便将缓存行写回主存储器,并使得从缓存中逐出缓存行。适当地,相干性管理器被配置为对缓存行进行排队以便逐出,并且使得在确定缓存行到主存储器的写回已经完成时继续进行逐出。适当地,反向转换数据结构被配置为以页面粒度存储数据。适当地,缓存行状态数据结构被配置为以缓存行粒度存储状态信息。适当地,缓存行状态数据结构包括多个RAM实例,并且相干性管理器被配置为同时访问多个RAM实例。适当地,缓存行状态数据结构包括用于至少一个相干缓存行的条目,该至少一个相干缓存行位于由反向转换数据结构映射的页面处。适当地,缓存行状态数据结构包括关于至少一个相干缓存行的多个状态位。适当地,监听处理器被配置为针对对于主存储器的读取请求监测耦合到相干性管理器的存储器总线,并且响应于监测到的读取请求使得更新缓存行状态数据结构中的状态信息。适当地,监听处理器包括用于存储所接收的监听请求的缓冲器。适当地,缓冲器包括先入先出缓冲器液。适当地,监听处理器被配置为以与接收监听请求的顺序不同的顺序来处理缓冲器上的监听请求。适当地,监听处理器被配置为使用缓冲器来以与接收监听请求的顺序相对应的顺序输出对监听请求的响应。适当地,监听处理器包括用于控制对缓存行状态数据结构的访问、访问缓存、向缓存发送命令、以及发布对监听请求的响应中的至少一项的控制逻辑。适当地,相干性管理器体现在集成电路上的硬件中。根据本公开的另一方面,提供了一种用于处理在物理地址空间中寻址的监听请求的方法,该监听请求与具有多个相干缓存行并且使用虚拟地址空间可寻址的缓存存储器有关,该方法包括:接收与物理地址有关的监听请求;根据保持在缓存存储器中的每个相干缓存行的从物理地址到虚拟地址的映射,确定物理地址是否映射到虚拟地址;以及根据该确定处理监听请求。适当地,处理监听请求包括在确定物理地址未被映射到虚拟地址时,使得在不访问缓存存储器的情况下发送对监听请求的响应。适当地,处理监听请求包括在确定物理地址被映射到虚拟地址时,访问被配置为将与缓存行有关的状态信息存储在缓存存储器处的缓存行状态数据结构,并且根据所存储的状态信息发送对监听请求的响应。适当地,在与缓存行有关的状态信息指示缓存行是下列项中的至少一项的情况下:不存在,处于无效状态正在经历溢出,以及正在进行写回或逐出处理,处理监听请求还包括确定监听请求导致缓存未命中,并且使得在总线上发送对监听请求的相应响应。适当地,处理监听请求包括访问缓存。适当地,在与缓存行有关的状态信息指示缓存行存在并且处于清洁状态的情况下,该方法还包括使得缓存行被逐出,并且缓存不执行将该缓存行处的数据写回主存储器。适当地,处理监听请求包括在不访问缓存的情况下处理监听请求。适当地,在与缓存行有关的状态信息指示缓存行存在并且处于肮脏状态的情况下,该方法还包括使得访问缓存以读取缓存行以便将缓存行写回主存储器,并使得从缓存中逐出缓存行。适当地,该方法还包括对缓存行进行排队以便逐出,并且使得在确定缓存行到主存储器的写回已经完成时继续进行逐出。适当地,该方法还包括监测存储器总线以读取对主存储器的请求,并且响应于所监测的读取请求,使得更新缓存行状态数据结构中的状态信息。适当地,处理监听请求包括以与接收监听请求的顺序不同的顺序来处理监听请求。适当地,处理监听请求包括以与接收监听请求的顺序相对应的顺序输出对监听请求的响应。根据本公开的另一方面,提供了一种使用集成电路制造系统来制造如本文所述的相干性管理器的方法。根据本公开的另一方面,提供了一种集成电路定义数据集,该集成电路定义数据集在集成电路制造系统中被处理时,配置系统来制造如本文所述的相干性管理器。根据本公开的另一方面,提供了一种非暂态计算机可读存储介质,在其上存储有集成电路的计算机可读描述,该计算机可读描述在集成电路制造系统中被处理时,使得集成电路制造系统能够制造如本文所述的相干性管理器。根据本公开的另一方面,提供了一种集成电路制造系统,被配置为制造如本文所述的相干性管理器。根据本公开的另一方面,提供了一种集成电路制造系统,包括:非暂态计算机可读存储介质,其上存储有计算机可读集成电路描述,其描述了如本文所述的相干性管理器;布局处理系统,被配置为处理集成电路描述以生成体现相干性管理器的集成电路的电路布局描述;以及集成电路生成系统,被配置为根据电路布局描述制造相干性管理器。根据本公开的另一方面,提供了用于执行如本文所述的方法的计算机程序代码。根据本公开的另一方面,提供了一种非暂态计算机可读存储介质,其上存储有计算机可读指令,该计算机可读指令在计算机系统处被执行时,使得计算机系统执行如本文所述的方法。以上任何方面的任何一个或多个特征可以与以上任何其他方面的任何一个或多个特征相组合。可以将任何装置特征重写为方法特征,并且在措辞中进行必要的改变。这些未被完全写出来仅是为了简洁起见。附图说明现在将参考附图以示例的方式描述本发明。在附图中:图1A示意性地示出了包括多个处理器和多个缓存的系统;图1B示意性地示出了主从系统;图2示出了用于接收存储器请求的过程;图3示意性地示出了包括多个处理器和多个缓存的另一系统;图4示意性地示出了包括多个处理器和多个缓存的另一系统;图5示意性地示出了图4的系统的一部分;图6A示意性地示出了监听处理器;图6B示意性地示出了示例监听缓冲器状态;图7示意性地示出了反向转换数据结构和缓存行状态数据结构;图8示意性地示出了示例缓存行状态;图9示意性地示出了存储器接口的组件;图10示意性地示出了缓存行状态模块架构;图11示意性地示出了缓存行状态的另一示例;图12示意性地示出了缓存库bank接口架构;图13示出了用于接收存储器事务请求的过程;以及图14是集成电路制造系统的示意图。具体实施方式通过示例的方式呈现以下描述以使得本领域技术人员能够制造和使用本发明。本发明不限于本文描述的实施例,并且对所公开的实施例的各种修改对于本领域技术人员来说是明显的。现在将仅通过示例的方式描述实施例。诸如计算系统100之类的计算系统包括第一处理器102、第一缓存存储器104和主存储器114。主存储器114适于比第一缓存存储器104更长期地存储数据。例如,主存储器114比第一缓存存储器104易失性更低。主存储器114通常还具有比第一缓存存储器104大得多的存储容量。主存储器114可以远离第一处理器102。第一缓存存储器104通常是在第一处理器102处提供,或者在数据路径中与第一处理器102相邻,以便在第一处理器102和主存储器114之间。第一缓存存储器和或主存储器处的数据可以例如由第一处理器经由读取事务来访问。数据可以经由写入事务来写入第一缓存存储器和或主存储器。例如,数据可以由第一处理器写入第一缓存存储器和或主存储器。缓存104被配置为存储数据以使得处理器102可以从缓存104检索该数据和或将经修改的数据写入缓存104,而不是需要直接从主存储器114检索该数据和或将经修改的数据写入主存储器114。对缓存的访问比对主存储器的相应访问更快,通常如此。这意味着缓存上的事务例如,读取或写入事务可以比主存储器上的相应事务快得多得完成。这有助于减少系统中的延迟。计算系统100可以在第一缓存104中没有数据的情况下初始化。所有相关数据可以替代地仅被存储在主存储器114中。在由处理器发布对主存储器中的特定物理地址处的数据或处理器处的指令的读取请求时,例如,作为读取事务的一部分,确定存在“缓存未命中”,即所需数据未包含在缓存中因为缓存中还没有数据。在确定缓存未命中时,例如,响应于读取请求,从主存储器获取所寻址的数据。通常,物理地址将指定存储器页面内的位置。适当地,获取整行数据例如,在一个示例中为64字节而不仅仅是指定位置处的数据。这是因为由于主存储器中的数据位置,在后续事务中也将需要在指定位置附近的位置处的数据的机会增加。所获取的数据将被存储在缓存中具有缓存地址的位置,该缓存地址与从其读取数据的主存储器物理地址相对应。这使得在对缓存中的数据进行后续请求时可以访问该数据。数据可以存储在称为“缓存行”的缓存的一部分中。访问缓存比访问主存储器更快。在处理器后续发布针对同一地址即存储数据的缓存地址的读取指令的情况下,缓存将返回“缓存命中”,即指示数据存在于缓存中,并将数据从缓存返回到处理器从相关缓存行,而不需要访问主存储器。因此,由于缓存具有比主存储器更低的延迟,因此该读取事务可以更快地完成。可以物理地寻址与系统总线相邻的缓存,这意味着主存储器数据条目的物理地址也用于寻址缓存。这减少了系统复杂性,因为可以使用同一地址来寻址缓存以寻址主存储器。在来自处理器的需要写入主存储器位置的事务中,写入可以立即应用于主存储器位置。由于主存储器的延迟,这可能需要相对长的时间来完成。替代地,写入可以发生于与该主存储器位置相关联的缓存中的缓存行。因此,在处理器发起写入事务的情况下,写入可以发生于缓存中的物理寻址位置。写入不需要立即发生于主存储器中的相应的物理寻址位置。写入缓存可以比写入主存储器快得多,从而减少完成写入事务所需的时间,减少系统中的延迟。写入事务可以以不同方式完成。在一种情况下,对主存储器的写入事务对应于完成的对缓存的写入事务可以排队,并且可以在稍后的某个时间发生。处理器不需要等待这种情况发生,但可以继续并行处理其他指令。在另一种情况下,写入事务可以在缓存处停止,即在主存储器上将不存在排队的写入事务。这意味着缓存中的经修改的数据将不会写入主存储器。然后,主存储器中的相应位置的数据是旧的或过时的。在这种情况下,标识缓存数据是最新版本并且主存储器不包含该最新版本可能很有用。例如,这可以使用与缓存数据相关联的标志来完成,该标志可以由位表示。该位可能位于缓存中。该位可以被称为“肮脏”位并且指示缓存行是“肮脏”的,即由于已经发生修改而缓存行中的数据尚未被写回主存储器。在该缓存行数据回到主存储器的后续写入这样的事务可以称为“写回”事务时,可以清除肮脏位或标志以指示该缓存行包含与主存储器中的相应地址处的数据相同的数据,即它是“清洁”的。这可以作为后续事务的一部分、或者作为关闭过程的一部分而发生,以在关闭缓存并丢失缓存内容之前在主存储器中复制经更新的缓存内容。在写回事务之后,该缓存行中的数据可以保留在其最初被写入的缓存的部分即缓存行中,允许后续访问缓存中的该缓存行中的该数据,或者可以将其从缓存行中逐出或刷新flush。当缓存行数据被从缓存行中逐出时,它将释放空间以便将其他数据存储在该缓存行中。缓存行状态在此阶段引入不同的缓存行状态是有用的。在系统初始化而缓存中没有数据的情况下,每个缓存行可能为空。这些缓存行的状态可以被认为“无效”,即缓存行中没有有效数据。缓存行可以处于“无效”状态,其中,它不包括来自主存储器的任何存储器行的副本或者其中,缓存行中包含的任何数据以适当的方式被标记为无效。缓存行可以处于“唯一”状态,其中,它包括存储器行的唯一有效副本,即存储器行的任何其他副本例如,在其他缓存处无效。如果缓存行中的数据是肮脏的,则该缓存行可以处于“肮脏”状态。关于缓存行的“肮脏”状态,耦合到包括该缓存行的缓存的相应处理器或更一般地,主处理器-见下文可以负责将缓存行中的数据写回存储器。如果缓存行中的数据是清洁的,则该缓存行可以处于“清洁”状态。关于缓存行的“清洁”状态,耦合到包括该缓存行的缓存的相应处理器或更一般地,主处理器-见下文不负责将数据写回缓存行。在缓存行中的数据被从该缓存行中逐出或刷新的情况下,该缓存行可被标记为无效,和或数据被重写和或以其他方式被删除,并且因此数据可能不可用于缓存中的后续访问。通常,系统将包括至少两个等级的缓存:处理器处的等级1L1缓存L1缓存可以是处理器的一部分,以及等级2L2缓存,通常在L1缓存和主存储器之间的数据路径中。通常,最低等级缓存是物理寻址的。最低等级缓存是到耦合到主存储器的总线的数据路径中的最近的缓存,例如,仅有仅两个缓存等级的系统中的L2缓存,或者具有三个缓存等级的系统中的3级缓存,以此类推。提供物理寻址的最低等级缓存可以避免地址别名的问题,并且还可以允许缓存和主存储器之间的增强的兼容性,因为将最低等级缓存耦合到主存储器的总线上的指令通常是物理寻址的。因此,利用物理寻址的缓存,缓存和总线二者都将在同一地址空间即物理地址空间中操作。现代系统包括多个处理器以提高性能。在这种系统中,在多个处理器和主存储器之间可以存在共享缓存,或者可以存在多个缓存,例如,每个处理器一个缓存,如图1A中示意性所示。参考图1A,第一处理器P1102具有与其相关联的第一缓存C1104。第二处理器P2106具有与其相关联的第二缓存C2108。缓存C1、C2经由接口110、111连接到总线112。总线112耦合到主存储器114。接口110、111可以包括存储器管理单元MMU。MMU能够从在较高等级缓存存储器层级中使用的虚拟地址转换为在较低等级缓存存储器层级和主存储器中使用的物理地址。为此,MMU可以包括或可以访问存储从虚拟地址空间到物理地址空间的映射的表。通常,MMU将整个虚拟地址空间映射到物理地址空间。更一般地,如图1B所示,计算系统150可以包括可耦合到多个从或辅助设备的多个主或主要设备。如图所示,三个主设备主设备A152、主设备B154和主设备C156被耦合到四个从设备从设备A160、从设备B162、从设备C164和从设备D166。主设备和从设备的数量可以相同,或者可以不同。主设备152、154、156经由总线、通信结构或片上网络NoC170耦合到从设备160、162、164。概念上,主设备是可以发起事务的设备;从设备是响应事务的设备。例如,主设备可以发布写入事务,该事务可以在写入数据信道上,以执行从主设备到从设备的数据写入。主设备可以发布读取事务,该事务可以在读取数据信道上,以执行由主设备读取从设备处的数据。一个或多个主设备可以是处理器。计算系统可以是多处理器系统。主设备可以是中央处理单元CPU。主设备可以是图形处理单元GPU。一个或多个主设备可以是外围设备。一个或多个从设备可以是存储器存储,例如,缓存存储器或主存储器。可以关于每个处理器提供缓存存储器。在诸如图1A和图1B所示的系统之类的系统中,应考虑数据相干性,因为多个主设备例如,处理器可能试图访问主存储器中的同一物理地址处的数据。例如,第一处理器P1102可以在读取事务中访问主存储器114中的位置L1116,并且可以将L1处的数据的副本在其本地缓存C1104中存储在位置LC1118处。然后第二处理器P2106可以在写入事务中访问L1116,并且可以修改存储在L1处的数据。第二处理器也可能修改存储在其本地缓存中的位置LC2120处的数据的本地副本,而不是修改或者也修改主存储器114中的位置L1处的数据。在任一情况下,存储在LC1处的数据都将是过时的。因此,第一处理器的后续读取将读取存储在LC1处的不正确数据。因此,该系统适当地具有用于标识不同处理器的事务并避免后续使用过时数据的方法。这样做的一种方法是通过监测总线上的所有事务来标识处理器何时发布已经缓存在与不同处理器相关联的缓存处的物理地址处的事务,即另一缓存是否“拥有”存储在缓存行中的特定数据。对总线上的流量的这种监测可以称为“监听”。监听可以标识主存储器中的物理地址何时被访问,其中,该数据的本地副本已经被存储在缓存行中。由于最低等级缓存通常是物理寻址的,因此监听可以监测在另一缓存中使用的物理地址上的事务。本发明人已经意识到期望提供虚拟寻址的最低等级缓存,这意味着最低等级缓存在虚拟地址空间而不是主存储器的物理地址空间中被寻址。虚拟地址空间可以大于物理地址空间。虚拟地址空间的一个优势是处理器指令例如,在处理器上运行的程序不需要关心系统下面的物理地址空间,而是可以完全在所需的虚拟地址空间内操作。这可以提供额外的缓存空间,其由程序指令仍在虚拟地址空间中操作的同时更容易地访问。当提供虚拟寻址的最低等级缓存时,还期望维持这种缓存与系统中的另一缓存之间的数据相干性。经由总线而不是从更高等级缓存在虚拟寻址的相干缓存处接收的事务,即被发送到缓存的总线上的监听事务或监听请求,将与例如在主存储器处使用的物理地址空间中的物理地址相关联。可以在MMU处的典型系统中执行的地址转换是从虚拟地址到物理地址。这使得在处理器处在虚拟地址空间中生成的读取和写入请求可以正确地寻址到主存储器在物理地址空间中。反向地址转换,即从物理地址空间到虚拟地址空间,通常不在MMU处执行。为了在MMU处获得反向地址转换,有必要对与缓存中的缓存行相对应的所有物理地址进行穷举搜索,以便能够标识哪个虚拟地址对应于所接收的物理地址。在一些情况下,缓存可以被提供为组关联缓存;然后,需要跨缓存中的每个组穷举地执行搜索。如上所述,通常MMU将整个虚拟地址空间映射到物理地址空间。搜索所有物理地址将是非常耗时的过程,并且极有可能导致系统中的较大延迟增加。反向转换本发明人已经确定在最低等级缓存和总线之间的接口中或与之关联地提供附加功能可以是有用的。该附加功能包括物理到虚拟地址转换“反向转换”,用于将通过总线接收的物理地址转换成与所接收的物理地址相对应的缓存中的虚拟地址。可以通过总线接收诸如监听请求之类的存储器请求。可以在物理地址空间中寻址存储器请求。存储器请求可以被转换成转换请求,其中,转换请求在虚拟地址空间中被寻址。总线和缓存存储器之间的存储器接口可以实现相干性管理器,该相干性管理器能够连续地跟踪设备的最低等级缓存内的已被标记为相干的缓存行。最低等级缓存可以被实现为虚拟索引和虚拟标记VIVT缓存。因此,存储器接口能够执行反向地址转换,因为例如经由ACE协议的传入监听请求将始终提供物理地址,并且这些物理地址被转换为虚拟地址以允许它们与最低等级缓存内的匹配缓存行相关联。反向转换功能可以由反向转换模块提供。反向转换模块被配置为基于物理地址空间和虚拟地址空间之间的已知关系,根据物理地址来计算虚拟地址。与针对缓存中的物理地址进行穷举搜索相比,这可以提供延迟减少。反向转换模块可以在软件、硬件、或软件和硬件的组合中实现。例如,反向转换模块可以在固定功能硬件中实现。反向转换模块可以包括基于物理地址空间和虚拟地址空间之间的已知关系,根据物理地址来计算虚拟地址的逻辑。此外或替代地,可以通过提供用于反向转换功能的数据结构来获得反向转换功能。数据结构可以是表或其他类似结构,如下面将更详细讨论的。数据结构可以位于诸如存储器接口之类的接口处,该存储器接口例如在逻辑上位于最低等级缓存和总线之间。数据结构可以包括将物理地址链接到相应的虚拟地址的目录。因此,当诸如存储器请求之类的事务标识物理地址时,可以在反向转换数据结构中查找与该物理地址相对应的虚拟地址。这允许以比其他情况更低的延迟来访问缓存中的相关虚拟地址。本方法允许接收在物理地址空间中寻址的存储器请求图2的步骤202。诸如监听请求之类的存储器请求可以是对来自总线的缓存的请求。所接收的存储器请求被转换为转换存储器请求204。转换存储器请求在虚拟地址空间中被寻址,例如,最低等级缓存的虚拟地址空间。由于转换请求在最低等级缓存的地址空间中被寻址即它在虚拟地址空间内被虚拟地寻址,因此转换请求然后将适当地寻址缓存中的虚拟寻址的存储器位置,并因此可以在虚拟地址空间中进行处理206。现在将参考图3和图4描述示例系统架构。图3示意性地示出了包括两个设备或主设备:设备1302和设备2304的系统300。如图所示,设备1是图形处理单元GPU并且设备2是中央处理单元CPU。然而,本文讨论的技术的应用不限于一个或多个CPU和一个或多个GPU,而可以扩展到任何多处理器系统,或者更一般地,具有多个主设备和从设备的主从系统。设备1包括处理器306和缓存308。类似地,设备2包括处理器310和缓存312。设备1缓存308和设备2缓存312通过存储器总线316耦合到主存储器314。设备1302包括存储器接口318。接口318被示为在缓存308和总线316之间,但并非在所有示例中都是这种情况。在一些示例中,接口318耦合到缓存308和总线316是足够的。接口318适当地直接耦合到缓存308和总线316即没有其他模块或处理单元用于转换在接口和缓存之间或接口和总线之间提供的地址。存储器接口318包括MMU320,用于将虚拟地址转换为物理地址。存储器接口318包括相干性管理器322。下面将更详细地解释相干性管理器的结构和操作。相干性管理器322被配置为维持设备1和设备2所使用的地址空间的相干性,例如,包含设备1缓存308、设备2缓存312和主存储器314的地址空间。相干性管理器被配置为执行反向转换,即将物理地址转换为虚拟地址。图4示意性地示出了包括两个设备或主设备的另一系统400。图4中示出的系统400类似于图3中示出的系统300。相同的附图标记用于表示相同的元件,并且省略对它们的描述的重复。以下将描述图3和图4的系统之间的差异。图4的设备1402包括两个处理器核:核1406和核2407。每个处理器核406、407耦合到相应的缓存408、409。核1缓存408可以为核1406提供本地缓存存储器。核2缓存409可以为核2407提供本地缓存存储器。设备1402包括最低等级缓存330,其至少在逻辑上位于核1和核2缓存408、409和存储器接口318之间。最低等级缓存可以包括多个缓存库。如图所示,最低等级缓存330包括缓存库1331、缓存库2332、缓存库3333和缓存库4334。可以提供其他数量的缓存库。最低等级缓存330内的缓存库331、332、333、334在缓存内提供单独的存储区域。每个缓存内的单独的缓存库是可单独寻址的。缓存库也可以是相同的。在图4所示的示例中,设备1402包括两个处理器核和四个缓存库。在其他示例中,处理器和缓存库的数量可以变化。存储器总线316包括到存储器接口318的两个访问路径316a和316b。这示意性地表示在存储器总线316和设备1402之间可以存在经由存储器接口318的多个访问路径或信道。访问路径的数量可以与缓存库的数量相同或者更少。例如,一个访问路径可以耦合到每个缓存库中,或者一个访问路径可以耦合到多个缓存库中。这将参考图5进一步解释。图5以一些额外的细节示意性地示出了如图4所示的系统400的一部分。图5示出了最低等级缓存330、存储器接口318和存储器总线316。这里,最低等级缓存330已被示为包括两个缓存库,缓存库1331和缓存库2332。为清楚起见,未示出缓存库3333和缓存库4334。然而,可以在图5所示的系统中提供额外的缓存库。存储器接口318适当地是层级内的模块,其允许一个处理器例如,GPU与另一处理器例如,CPU相干地通信。这可以意味着GPU能够作为相干总线互连内的例如,根据AXI-ACE协议的相干总线互连内的完全缓存相干主设备。存储器接口318包括两个总线接口:总线接口1502和总线接口2504。每个总线接口被配置为在存储器总线316和缓存存储器的一部分之间相接口。如图所示,总线接口1在总线316和缓存库1331之间相接口;总线接口2在总线316和缓存库2332之间相接口。尽管图5中未示出缓存库3333和缓存库4334,但总线接口1502可以额外地在总线316和缓存库3之间相接口,并且总线接口2504可以额外地在总线316和缓存库4之间相接口。替代地,可以提供两个另外的总线接口,各自被布置为在缓存库3和缓存库4之一中相接口。适当地,总线接口位于存储器接口中的相干性管理器旁边。除了总线和缓存库之间的接口之外,总线接口还耦合到相干性管理器322和MMU320。MMU320与总线接口502、504耦合,如530处示意性所示。MMU能够将缓存330所使用的虚拟地址转换为在存储器总线316上使用的物理地址空间中的物理地址。总线接口被适当地配置将虚拟地址发送到MMU并从MMU接收相应的物理地址。然后,总线接口可以使用那些相应的物理地址来寻址由总线接口通过存储器总线发送的事务。总线接口502、504可以是与最低等级缓存330相关联的接口转换器,例如,AXI转换器。可以在各个缓存库331、332和总线接口502、504之间提供缓存库接口图5中未示出。缓存库接口可以被提供为与缓存分离的模块,和或作为形成缓存的一部分的模块。在一个实现方式中,最低等级缓存330被配置为通过符合AMBA4.0的接口包括相干性扩展通常称为AXI-ACE向存储器发出请求。总线接口502、504可以帮助确保符合诸如AXI-ACE协议之类的协议。存储器接口318的相干性管理器322连接到与监听请求相关联的总线316上的信道。信道可以包括监听地址信道510、监听响应信道512和确认信道514。AXI协议规范中定义的其余信道的大部分将由与最低等级缓存330相关联的总线接口502、504直接驱动。总线接口502、504耦合到相干性管理器322在516、518处示出,使得相干性管理器可以监测传出相干事务例如,在地址响应AR接口上,例如,清洁唯一CleanUnique和读取唯一ReadUnique事务和传入响应例如,在读取R响应通道上,例如,对清洁唯一和读取唯一事务的响应,以便能够更新正在跟踪的相干缓存行的状态并驱动读取确认信号“RACK”514。相干性管理器322还可以监测地址写入AW接口上的传出相干事务例如,写回和逐出事务以及写入响应B信道上的传入响应例如,对写回和逐出事务的响应,以能够更新缓存行状态并驱动写入确认信号“WACK”514。监听地址“AC”信道510是到诸如设备1402处的处理器406之类的主设备的输入,具有相关联缓存330,其提供已经被发布到该处理器例如,GPU的监听请求的地址和控制信息。存储器接口318能够接受和处理不同的监听事务类型,例如,如AXI-ACE协议中所定义的,如本文所讨论的。监听响应“CR”信道512是来自诸如设备1402处的处理器406之类的主设备的输出,具有相关联缓存330,其提供对被发布盗该处理器例如,GPU的监听请求的响应。监听地址信道510上的每个监听请求在监听响应信道512上具有相应的响应。对监听请求的响应可以包括下列项中的一项或多项:·指示在接收到监听请求之前所监听的缓存行是否别保持在唯一状态,·指示所监听的缓存保留缓存行的副本,·指示缓存行是肮脏的并且将缓存行写回存储器的职责正被传输到主服务器,·指示缓存行是否损坏,以及·指示是否将传输数据的缓存行。监听响应可以包括缓存行不存在于缓存中、缓存行存在但已经无效、或者存在缓存行并且缓存行的副本被保留的指示。在缓存330处存在所监听的缓存行的情况下,最低等级缓存可以将缓存行写回到存储器如果它是肮脏的,或者简单地使其无效。因此,当响应被发送到监听请求时,响应可以指示缓存行存在但已经无效。例外情况可以是缓存行的副本如果是肮脏的在写回存储器之后被保留在缓存中,在这种情况下,响应可以指示缓存行存在并且缓存行的副本被保留。ACE扩展包括两个确认信号,用于指示主设备何时完成读取或写入事务。这些可以几乎立即断言,而不是被延迟以等待任何其他事务。存储器接口318可以使用确认信号来确保关于特定地址或缓存行的主设备的监听地址信道510上的事务不被发布,直到从主设备到同一地址同一缓存行的任何先前事务已完成为止。存储器接口318可以驱动该信号以表示与读取或写入事务完成相关联的任何状态转换已经被执行,并因此通过发布确认,存储器接口318从而保证它将能够准确地响应针对刚被更新的缓存行的监听请求。可以按照与接收到读取写入响应的顺序相同的顺序发布确认。为了使得存储器接口318能够正确响应传入监听请求,存储器接口可以被配置为监测内部接口并更新缓存行状态,例如,通过与缓存库进行交互。存储器接口还可以被配置为指示缓存何时刷新和或无效缓存行,例如,通过在相干性管理器322处生成的“刷新-无效”命令520。存储器接口318被配置为进行监测的内部接口包括:·命令接口,允许关于特定的缓存行地址发布刷新-无效flush-invalidate命令,·刷新-活跃flush_active掩码,允许设置和清除掩码中的位以实现对刷新过程的控制。例如,当向缓存库发布刷新时,可以通过刷新ID标识将刷新的缓存行,并且与刷新ID相对应的位在刷新-活跃掩码中可以被设置为高;然而,可以在处理刷新之前清除该位,指示应忽略针对该缓存行的刷新,·在处理或忽略刷新时,可以针对一个周期将与刷新ID相对应的刷新_处理flush_processed位设置为高,·更新接口,允许在相关事务完成时更新缓存行状态例如,是否相干,·读取信道请求接口。存储器接口可以被配置为监测将在地址读取“AR”接口522上输出的相干事务,例如,通过总线接口502、504。这允许存储器接口能够响应于传出请求改变缓存行状态和或创建新条目,·溢出掩码或逐出掩码,用于指示反向转换数据结构的哪些条目正在溢出。如果设置了该位,则可以防止地址读取总线上的事务前进到存储器,即不应正在溢出的反向转换数据结构中的条目上进行读取事务,·地址写入“AW”接口522。存储器接口可以被配置为监测将在地址写入接口“写回逐出”接口上输出的相干事务,例如,通过总线接口502、504。这允许存储器接口能够响应于传出请求更改缓存行状态,·多路复用接口。一旦准备好输出写回和或逐出事务,则还可以输出正被写回和或逐出的缓存行的相应的反向转换数据结构条目编号。这允许被存储在反向转换数据结构内的适当物理地址的组合多路复用器多路复用,因为这避免了依赖于存储器接口的其余部分来转换请求,并因此可以避免存储器接口的其余部分需要执行读取请求以响应监听,·声明信道响应接口。存储器接口可以被配置为监测声明信道响应接口以便能够更新缓存行状态,和或能够驱动读取确认信号“RACK”514,·写回信道响应接口。存储器接口可以被配置为监测写回信道响应接口以便能够更新缓存行状态,和或能够驱动写入确认信号“WACK”514。相干性管理器包括两个监听处理器:监听处理器1541和监听处理器2542。通常,相干性管理器包括关于每个总线接口502、504的监听处理器。每个监听处理器与相应的总线接口相关联。监听处理器被配置为处理在与它们相关联的总线接口处接收的监听请求,如本文其他地方更详细描述的。监听处理器参考图6A,监听处理器541、542被配置为接收监听请求例如,通过监听地址信道510接收的监听请求。监听处理器包括总线计算单元602。总线计算单元被配置为计算所接收的监听请求是否与和监听处理器相关联的总线接口有关见下文。总线计算单元602被耦合到缓冲器可以称为监听缓冲器604。缓冲器与控制逻辑606双向耦合。控制逻辑控制缓存行状态查找请求和响应608和对缓存520的刷新命令。控制逻辑被布置为向监听响应信道512发布监听响应。一个或多个指针可以允许包含在缓冲器内的监听以流水线方式同时经历不同的处理阶段。监听缓冲器可以是先进先出缓冲器。缓冲器可以允许无序地处理请求,但以与接收到这些请求的顺序相同的顺序输出对请求的响应。这将在本文其他地方更详细地讨论。当在监听请求接口上即在监听地址信道AC510上接收到监听请求时,查找反向转换数据结构条目例如,页面转换表PTT条目若存在。可以通过比较物理页面和保护位来执行查找。条目编号、反向转换数据结构命中未命中结果和虚拟地址被发送到监听处理器。监听处理器针对每个AC端口进行实例化,并负责处理和响应在该端口上接收到的监听请求。它实现了FIFO先进先出缓冲器。缓冲器可以包括寄存器。缓冲器可能包含当前正在处理的监听请求,以及那些监听请求的当前处理状态。如果缓冲器已满,则监听处理器541可以停止相应的AC接口使能。可以将接收到的监听请求的处理限制为它们被接收的顺序,但这可能是低效的。替代地,可以无序地处理监听请求。然而,可以以与接收到监听的顺序相同的顺序在监听响应CR信道512上发送响应例如,以满足诸如ACE协议之类的操作协议的要求。因此,如果在地址B的监听之后接收到地址A的监听,并且监听处理能够确定地址B是无效的,则可以立即以地址B的响应更新缓冲器,但它将仅一旦地址A的响应被发送之后即在监听响应总线上被输出。缓冲器604被配置为存储响应于所接收的请求而生成的一个或多个中间响应。即在上面的示例中,缓冲器可以存储对地址B的监听的响应。随后,在地址A上的监听请求完成时,监听处理器可以将对该请求的响应存储在缓冲器中和或直接输出响应。监听处理器可以被配置为根据所存储的一个或多个中间响应,响应于所接收的请求而发送输出。例如,一旦监听处理器确定已经发送了对地址A上的请求的响应,则可以发送存储在缓冲器中的对地址B上的请求的响应。以这种方式,监听处理器可以维持响应的顺序以匹配预期的顺序,例如,接收请求的顺序。现在将参考图6B描述监听缓冲器的状态。当接收到新的监听请求时,条目被写入监听缓冲器中,例如,使用写入指针。如果对应于监听地址的总线接口与和接收监听请求的监听处理器相关联的总线接口不同,或者监听地址在反向转换数据结构中没有匹配条目,则监听结果无效并且例如当前写入指针处的状态被更改为不存在NOTPRESENT652。注意,监听缓冲器被配置为使得仍将发送响应,而不管请求被发布到错误的总线接口和或重复监听被发布到同一地址。该方法允许存储器接口以相干方式处理请求甚至错误请求。在图6B所示的示例中,如果对应于监听地址的总线接口匹配与接收监听请求的监听处理器相关联的总线接口,并且监听地址在反向转换数据结构中具有匹配条目,则状态改变为RAM查找RAMLOOKUP654并且向缓存行状态单元906发出请求,该缓存行状态单元906随后将返回监听缓存行的状态。缓冲器写入指针可以与缓存行状态查找一起流水线化,并用于在返回缓存行状态读取数据时更新正确的缓冲器条目。当返回缓存行状态读取数据时,评估缓存行的状态。如果被监听的缓存行无效,则缓冲器条目中的状态可以从RAM查找654更新为不存在652。另一方面,如果缓存行状态不是无效,即它是唯一P0UniqueP0、唯一P1UniqueP1、或逐出Evicting之一,则缓冲器条目状态分别更新为逐出P0EVICTP0656、逐出P1EVICTP1658或等待逐出AWAITEVICTION660。然后可以选择处于逐出P0或逐出P1状态的缓冲器条目,例如,通过旋转“发送刷新”指针,并且发布相应的刷新请求例如,发布到缓存库接口模块910。一旦接受了刷新请求例如,由缓存库接口模块910,则状态被更新为等待逐出660。当处于等待逐出状态660时,条目对于将使得条目移动到逐出EVICTED状态662的传入写回逐出完成和匹配完成是敏感的。此外,为了防止在缓存库已经驱逐缓存行时发布刷新请求,缓冲器条目还对于写回逐出请求是敏感的。匹配请求将使得在返回缓存行状态读取数据的周期上处于逐出P0656或逐出P1658状态的条目例如,等待轮到其被发送到缓存库接口910的条目或处于RAM查找状态654的条目被移动到等待逐出状态660。一旦缓冲器条目处于不存在652或逐出662状态,则可以输出监听响应。可以例如通过旋转读取指针来选择这些缓冲器条目。可以按顺序选择缓冲器条目。在监听响应CR接口512上发布监听响应。在一些示例中,对于处于逐出状态662的条目,响应将是0x10唯一=1,或者对于处于不存在状态652的条目,响应将是0x0唯一=0。对于所有类型的监听请求,可以以同一方式驱动监听响应。监听缓冲器条目可以包括状态、反向转换数据结构条目编号和缓存行偏移地址例如,4KB页面内的64字节地址偏移。缓冲器的深度定义了在停止之前可以在总线上接收的未完成监听请求的数量。监听缓冲器深度例如可以设置为8。适当地,由无效INVALID状态暗示空缓冲器条目,因此不需要单独的有效位。存储器接口可以支持具有单组监听请求监听响应ACCR端口的配置。存储器接口可以支持具有多组监听请求监听响应ACCR端口的配置,其中,ACCR端口的数量与其他存储器端口的数量相同。即支持具有两个地址读取写入地址ARAW端口和一个或两个AC端口的配置。在存在多个AC端口的情况下,假设多个存储器总线被互连视为单独的主设备例如,ACE主设备,则在一个AC端口上发布的监听对应于相应总线接口上的请求。在具有单个AC端口的配置中,其中,单个AC端口与所有总线接口1个、2个、4个等相耦合,单个监听处理器实例对所有总线接口上的写回逐出请求和响应是敏感的。用于确定与监听地址相对应的正确总线接口的逻辑不需要被实例化。在具有多个AC端口的配置中,可能存在与总线接口相同数量的AC端口,在这种情况下,每个AC端口耦合到相应的总线接口。在其他示例中,AC端口和总线接口的数量可能不同。例如,可能存在四个总线接口和两个AC端口,两个总线接口耦合到每个AC端口。其他配置是可能的。可能存在与每个AC端口相对应的监听处理器实例。每个监听处理器实例可以仅对于写回逐出请求和来自相应的总线接口或多个总线接口即对应于该监听处理器的一个或多个总线接口的响应是敏感的。用于确定对应于监听地址的正确总线接口的逻辑可以被实例化。该逻辑可以被配置为在其上确定接收到请求例如,监听请求的总线接口。反向转换模块再次参考图5,相干性管理器322包括反向转换模块550。反向转换模块被配置为将物理地址转换为虚拟地址。例如,反向转换模块被配置为将通过总线316接收的物理地址转换为设备1402处的缓存330的虚拟地址空间中的相应虚拟地址。反向转换模块550可以包括反向转换数据结构552。反向转换数据结构552可以包括页面转换表PTT554。反向转换模块550适当地包括用于存储器接口端口和监听地址AC端口的寄存器阵列和相关联的查找逻辑。在接收到诸如与物理地址相关联的存储器请求例如,在物理地址空间中寻址的存储器请求之类的请求时,反向转换模块允许将物理地址转换为虚拟地址例如,存储器请求可以被转换为在虚拟地址空间中寻址的转换存储器请求。虚拟寻址的缓存然后可以处理经转换的请求。为了维持与例如AXI协议的相干性,对存储器请求的响应在物理寻址的总线上进行发送之前被转换回物理地址空间例如,由MMU。反向转换数据结构552的内容允许相干性管理器322使用物理地址来响应监听,同时使用相应的虚拟地址与ACE转换器和最低等级缓存库相接口。除了虚拟和物理地址信息之外,每个反向转换数据结构条目包含指示页面条目的整体状态的状态字段。状态字段可以指示:反向转换数据结构条目当前在使用中还是可以被分配、是否正在被溢出参见本文其他地方、在页面中使用的缓存行是否处于允许溢出的状态或表中的任何缓存行是否处于针对其监听请求将被响应为具有缓存行的所有权的状态。可以在不必查找各个缓存行状态或缓存行的情况下确定监听响应,如本文其他地方将解释的。更详细地,参考图7,反向转换数据结构552包括PTT,该PTT可以是包含4KB页面的完全关联表,在该4KB页面中缓存行由存储器接口跟踪。这些页面一起可以表示当前包含在最低等级别缓存库中的或具有ACE转换器内的飞行请求的所有相干页面,除了存储器接口或者,例如,存储器接口处的相干性管理器尚未意识到的新的缓存行分配。换句话说,反向转换数据结构552仅存储当前保持在缓存存储器中的相干缓存行的反向转换信息。这是因为仅需要针对相干缓存行而不是针对整个物理地址空间执行反向转换。这减少了在反向转换数据结构552处保持的数据量。每个PTT条目或更一般地,反向转换数据结构条目包含物理和虚拟页面的物理地址704和虚拟地址706。这允许存储器接口318响应使用物理地址的监听请求,同时使用相应的虚拟地址与系统例如,主从系统具有多个主设备和从设备的各个部分例如,最低等级缓存330相接口。可以通过使用相关页面内的偏移来更具体地寻址特定缓存行。在虚拟和物理页面各自沿着相同的页面边界对齐的情况下,例如,在虚拟和物理页面都被4KB对齐的情况下,给定缓存行的偏移在虚拟页面内可以与在物理页面内的相同。这可以简化反向转换。每个反向转换数据结构条目还可以包括保护“保护”;安全性指示符位和上下文PASID或进程地址空间ID。更一般地,可以针对或代替上下文PASID提供任何值。“上下文”与独立的地址空间相关,在CPU术语中通常称为PASID,它指的是处理器设计,其中,每个应用进程通常被分配新的独立地址空间,这意味着它将拥有自己的一组转换表,例如,MMU转换表。上下文PASID值可以包括可与进程、诸如PTT之类的页面表、或者页面表内的虚拟地址相关联的标识符。反向转换数据结构可以包括状态字段708,用于存储物理和虚拟页面之间的映射的状态。状态字段可以包括用于断言物理地址704和相应的虚拟地址706之间的映射有效的标志。在缓存中的虚拟页面包括与主存储器中的物理页面相关联的有效数据的情况下,映射可以是有效的。状态字段中的标志的断言可以指示物理页面中的每个缓存行的映射被有效地映射到虚拟页面中的每个缓存行。状态字段中的标志的断言可以指示物理页面中的至少一个缓存行的映射被有效地映射到虚拟页面中的相应缓存行。适当地,状态字段标志未被断言,其中,物理页面中的缓存行都没有被有效地映射到虚拟页面中的缓存行。因此,在未断言状态字段标志的情况下,相干性管理器可以确定存储在缓存处的缓存行中的数据都不是有效的。无需访问缓存即可进行此确定。因此,在这种情况下,相干性管理器322可以确定缓存行非有效而无需访问缓存本身。在一些示例中,状态字段708可以包括附加信息或数据。适当地,反向转换数据结构552与缓存行状态数据结构710相关联。缓存行状态数据结构可以是目录。反向转换数据结构可以包括缓存行状态数据结构。缓存行状态数据结构可以与反向转换数据结构分开提供。缓存行状态数据结构可以与缓存330一起提供,或作为缓存330的一部分提供。然而,优选地,缓存行数据结构在存储器接口318处提供,例如,在相干性管理器322处。相干性管理器被布置为访问缓存行状态数据结构。缓存行状态数据结构包括在由反向转换数据结构映射的页面中被跟踪的至少一个缓存行的状态指示符。缓存行状态数据结构可以指示缓存行的状态,如上所述,例如,该缓存行是“有效”、“无效”、“清洁”、“肮脏”、该缓存行处的数据是否正被写回主存储器在该状态下可以指示缓存行无效、该缓存行处的数据是否正从缓存中逐出在该状态下可以指示缓存行无效等。适当地,相干性管理器例如,相干性管理器处的监听处理器被配置为查询缓存行状态数据结构710。适当地,查询缓存行状态数据结构包括从缓存行状态数据结构例如,从包含在缓存行状态数据结构处的数据字段内的条目确定缓存存储器处的特定缓存行的状态。特定缓存行适当地是与监听请求中所标识的物理存储器地址相关联或相对应的缓存行。即特定缓存行适当地是存储例如,在缓存存储器拥有相关缓存行的情况下,或者将存储如果缓存存储器拥有相关缓存行与由物理存储器地址标识的存储器中的位置相对应的数据的缓存行。可以在单独的RAM中提供缓存行状态数据结构。适当地,缓存行状态数据结构例如,RAM位于设备1402处。例如,缓存行状态数据结构可以连接到设备1处的最低等级缓存330,或者可以形成其一部分。适当地,RAM耦合或连接到最低等级缓存,例如,在与最低等级缓存相邻的数据路径上提供。适当地,RAM耦合或连接到相应的缓存库。RAM被配置为存储被存储在相应的缓存库中的缓存行的状态。这将在下面更详细地讨论。在一些实现方式中,当确定期望数据存在于缓存处的缓存行中时,从缓存行状态数据结构例如,存储在RAM中的缓存行数据结构确定该缓存行的状态。可以在不需要访问缓存行和或存储该缓存行数据的缓存或缓存库的情况下完成对缓存行的状态的确定。可以缩放反向转换数据结构以根据在任何时间在最低等级缓存内可以跟踪的最大并发相干页面数量来获得面积和容量之间的折衷。反向转换数据结构条目反向转换数据结构可以用于以下列方式跟踪相干缓存行。当在相干性管理器的接口上呈现虚拟地址和4KB对齐的物理地址以及可选的,上下文PASID时,例如其中,相干性管理器监测到从处理器到主存储器的传出请求,相干性管理器查找反向转换数据结构中的物理地址和保护位,例如,在PTT中。如果传入地址保护位与在反向转换数据结构中使用的现有条目不匹配,则相干性管理器适当地分配当前无效的反向转换数据结构条目例如,PTT条目,而没有未完成请求声明该条目。如果当前不存在这样的无效条目,则该请求将在相干性管理器处停止,直到条目变为空闲为止。条目在循环的基础上被适当地分配在相干性管理器处的多个输入例如,来自多个总线接口502、504的输入之间。对于呈现在相干性管理器的接口上的写入请求,比较虚拟页面和上下文PASID以找到匹配条目,并且同样,在匹配标准中仅考虑正在使用的条目即处于有效状态或具有针对该条目的未完成请求。在反向转换数据结构命中标准中检查正在使用的条目防止命中其中虚拟到物理地址映射可能已改变的陈旧条目。相干性管理器被配置为响应于虚拟页面和上下文PASID在写回逐出信道上输出物理页面。因此,虚拟页面和上下文PASID适当地在反向转换数据结构寄存器中以及物理地址中。如果没有该要求,则仍可以仅基于物理地址和保护prot位来查找RAM条目。反向转换数据结构552或PTT554可以包括每条目以下字段。·“状态”字段,指示条目的整体状态,·“溢出”字段,指示条目是否正在经历溢出,·“请求计数器”字段,指示页面内的缓存行上未完成读取唯一和或清洁唯一请求的数量,·“有效计数器”字段,指示处于非无效状态的缓存行的数量,·“V页面Vpage”字段,包含虚拟4KB页面,·“上下文PASID”字段,包含上下文或PASID,·“P页面Ppage”字段,包括物理4KB页面,以及·“保护”字段,包括保护位,指示物理页面的安全地址空间。反向转换数据结构中的每个条目的状态字段可以处于两种状态之一:“无效”状态和“活跃”状态。这些状态指示条目是否可以被分配给新的页面映射、它是否是潜在的溢出候选者、和或是否值得在监听上从状态数据结构例如,从RAM读取缓存行状态。当处于无效状态时,该条目仅包含无效缓存行,并且如果在请求计数器字段中指示的任何这些缓存行上没有未完成的声明或读取请求,则可以具有分配给它的物理和虚拟之间的新映射。一旦条目被分配给新页面和或针对当前分配的页面接收到读取唯一或清洁唯一请求,则更新请求计数器字段例如,计数器可以递增以防止条目在移动到活跃状态之前被重新分配。一旦针对条目中缓存行接收到读取唯一或清洁唯一响应,则该条目移动到活跃状态。如果在其条目处于无效状态的缓存行上接收到监听,则不需要从缓存行状态数据结构读取缓存行状态,因为它也处于无效状态。因此,可以提供对监听的响应而不必访问缓存行状态数据结构。避免该步骤可以使得减少带宽和或延迟。处于活跃状态的条目包含可能不是无效的缓存行。即可能处于唯一或逐出状态的缓存行。当处于该状态时,如果请求计数器字段指示没有未完成的请求,则可以选择条目进行溢出。在读取缓存行状态数据结构时,如果确定所有缓存行已经返回无效状态,则不需要发生溢出并且条目本身移动到无效状态。一旦溢出完成,如果所有缓存行被逐出并返回无效状态,则该条目变为无效。如果溢出较早中止以便不是所有缓存行都被驱逐并保持在唯一状态,则该条目维持在活跃状态。如果针对其条目处于活跃状态的缓存行接收到监听,则读取缓存行状态数据结构以便找到缓存行的当前状态。该状态可以传递到存储器接口内的溢出控制单元和或监听处理器。存储器接口可以基于缓存行的状态处理传入请求。注意,请求计数器字段和有效计数器字段各自可以包括计数器。例如,请求计数器可以计算页面中的缓存行上的未完成读取唯一和清洁唯一请求。当在请求接口上接收到读取请求时,计数器可以递增,并且当在接口上接收到响应时,计数器可以递减。当请求计数器不为零即存在至少一个未完成请求时,反向转换数据结构条目不能溢出。与将空闲活跃位存储在状态数据结构中相比,以这种方式提供计数器可以提高功率效率和或减少端口之间的争用。例如,该方法可以允许减少缓存行状态数据结构中的状态转换的数量。有效计数器可以计算页面中处于非无效状态的缓存行的数量。具有非零有效计数器的反向转换数据结构条目是要溢出的候选者。当计数器的值减小到零时,可以认为溢出完成。在一个示例中,最低等级缓存可以是256KB缓存,具有64字节缓存行,给出总共4096个缓存行。如果页面中的所有可能的缓存行在任何时间都存在,则这将仅需要64个条目,但实际上,由于缓存行不会完全填充每个4KB页面,因此可能需要更多的条目例如,92-128个条目以避免不断溢出。条目的数量可以是96,其提供所需的存储空间占用硅面积和能够存储足够的条目以允许系统的平稳操作之间的适当平衡。溢出缓存330具有有限大小。同样,反向转换数据结构552具有有限大小。因此,监测例如,缓存和或反向转换数据结构的填充水平将是适当的,以确保系统的平稳操作。如果在系统中使用了足够的相干页面,则反向转换数据结构最终将变满。为了为新的相关页面制造空间,数据结构因此可以驱逐现有条目:这称为溢出。溢出可能涉及选择条目并指示缓存库刷新无效在这些条目中跟踪的缓存行,并且然后一旦所有所包含的缓存行已被逐出并且已收到它们相应的写回逐出响应,则将条目移回无效状态。这允许数据结构中的那些条目被重用于新的缓存行。不同于在溢出开始之前等待直到数据结构完全填满这将可能导致长时间的停止而条目被清除,存储器接口可以被配置为一旦剩余自由条目的数量达到阈值值,则预先开始溢出数据结构中的条目。一旦达到该阈值,则将依次溢出指定数量的条目。阈值以及一旦达到该阈值即溢出的指定数量的条目二者可以通过配置寄存器来配置。存储器接口318可以被配置为确定填充水平阈值。填充水平阈值可以包括缓存填充水平阈值和或反向转换数据结构填充水平阈值。填充水平阈值可以被预定。可以响应于系统操作改变填充水平阈值。填充水平阈值适当地小于最大填充水平即缓存的最大填充水平和或反向转换数据结构的最大填充水平。例如,填充水平阈值可以高达最大填充水平的90%,并且可以高达最大填充水平的80%。在一些示例中,填充水平阈值是最大填充水平的75%。填充水平阈值可以由在处理器处运行的程序和或由系统的用户来选择例如,通过修改系统配置文件中的相应值。当缓存和或反向转换数据结构的填充水平达到填充水平阈值时,相干性管理器332可以被配置为开始溢出过程。在溢出过程中,缓存行数据将从缓存中逐出或刷新。该过程可以继续直到所确定的填充水平降低到填充水平阈值以下、直到特定数量的缓存行中的数据已被逐出、或者直到相干性管理器确定溢出过程应停止。例如,可以提供逐出或试图逐出的缓存行的数量的值。该值“逐出量”值可以存储在相干性管理器中或与相干性管理器相关联。逐出量值可以是可配置的,例如,用户可配置的。因此,在达到使得溢出或逐出过程开始的阈值的情况下,相干性管理器可以被配置为逐出与逐出量值对应的多个缓存行。在一些示例中,在溢出过程中可能存在滞后,使得溢出在达到填充水平阈值时开始,但是直到达到低于填充水平阈值的第二阈值时才停止。例如,溢出可以在填充水平达到或超过最大填充水平的75%的填充水平阈值时开始,并且将在填充水平降低到或超过第二阈值例如,最大填充水平的60%时停止。该滞后可以减少在达到填充水平阈值时频繁开始和停止的溢出过程。当缓存行数据在溢出过程中从缓存中被逐出,并且反向转换数据结构中的相应条目被删除或无效时,空间被释放用于缓存和反向转换数据结构中的新条目。在溢出过程期间仍可以写入新条目。候选溢出条目是当前未溢出并具有零请求计数器和非零有效计数器的那些条目。可以基于逐出标准选择缓存和或反向转换数据结构中的条目以进行溢出。驱逐标准可以包括缓存行中的数据的年龄、缓存行的访问频率、缓存行的访问次数、缓存行的最后访问时间、以及随机缓存行选择中的一项或多项。选择最适当的缓存行数据以驱逐的其他方式对于技术人员将是清楚的。选择将逐出的缓存行数据的特定方式可以取决于系统、在处理器处运行的程序等。存储器接口或存储器接口处的相干性管理器可以被配置为确定在缓存行上是否存在未完成事务例如,读取请求,并且仅当确定在该缓存行上不存在未完成事务时选择缓存行数据进行逐出。一旦溢出开始,则依次选择候选条目并从缓存行状态RAM中读取。如果条目仍包含唯一缓存行,则针对该条目设置溢出状态位,并且由缓存库接口向缓存库发布刷新。一旦指定数量的条目例如,如由寄存器指定已经经历了该过程,或者通过缓存行驱逐达到所需的数据结构空间,则当前溢出过程结束,否则选择另一数据结构条目。一旦溢出条目中的所有缓存行已被逐出并接收到它们的响应,则清除溢出位并可以重新使用该条目。因此,一旦相干性管理器322处的反向转换数据结构552例如,PTT中的剩余可用条目数量达到预定阈值,则存储器接口318被配置为开始指示缓存库331、332逐出缓存行数据以释放更多可用条目。数据结构552中的剩余空间的阈值和一旦达到该阈值则将释放的条目的数量可以在一个或多个溢出控制寄存器中进行定义,该一个或多个溢出控制寄存器可以在溢出控制单元处实现,如下面更详细地讨论的。溢出控制寄存器可以包括溢出_阈值spill_threshold寄存器,其定义填充水平阈值,即存储器接口开始从反向转换数据结构溢出条目的剩余空间阈值。在一个示例中,溢出_阈值寄存器包括8位值,但其他大小的值是可能的。在一个示例中,溢出_阈值寄存器条目的默认值可以是16。溢出控制寄存器可以包括溢出_数量spill_amount寄存器,其定义一旦达到阈值即溢出的条目的数量。在一个示例中,溢出_数量寄存器包括8位值,但其他大小的值是可能的。在一个示例中,溢出_数量寄存器条目的默认值可以是4。存储器接口318可以提供允许性能分析的一个或多个状态寄存器。相干性管理器322可以提供一个或多个状态寄存器。例如,状态寄存器可以包括状态_溢出status_spilling寄存器,以指示溢出控制模块是否正在主动从存储器接口溢出缓存行。状态寄存器可以包括状态_溢出_条目status_spill_entries寄存器,以指示正在发生溢出的反向转换数据结构条目的数量。被指示为正在溢出的条目是针对其存储器接口为每个活跃缓存行已经发布刷新或处于发布刷新的过程的条目,并且处于等待所有这样的缓存行在可用于重新分配之前被写回存储器的状态。来自任何这些条目上的反向转换数据结构例如,转换表的地址读取AR事务将导致存储器接口停止。状态寄存器可以包括状态_活跃_条目status_active_entries寄存器,以指示处于活跃状态的数据结构例如,转换表条目的数量,即一个或多个缓存行处于非无效状态。这指示数据结构的完整性。状态寄存器可以包括状态_监听_数量status_snoop_count寄存器,以指示来自存储器接口内正在处理的监听地址AC信道510的未完成监听的数量。缓存行生命周期存储器接口318被配置为跟踪缓存330内的相干的缓存行,使得其能够在另一主设备试图在某个时间点访问这些相同地址的情况下响应由总线316发布的监听请求。缓存行的典型生命周期在图8中示意性地示出。引入一些类型的事务很有用。存储器行上的读取唯一事务使得其他缓存中的该存储器行的所有其他副本即与相干系统中的该存储器行相关的所有其他缓存行无效,并从存储器读取存储器行。因此,读取唯一事务用于声明相关缓存行的所有权。清洁唯一事务类似于读取唯一事务,但可以在不需要读取存储器行的情况下使用,即主设备处的缓存已经具有缓存行中的存储器行的副本。该事务确保如果主设备处的缓存行是肮脏的,则将缓存行数据的副本写回主存储器。该事务进一步确保缓存行的所有其他副本即相干系统中的其他缓存中的存储器行的副本无效。参考图8,初始地,由存储器接口318跟踪的所有缓存行将以无效状态802开始。一旦最低等级缓存330发布读取唯一事务804或清洁唯一事务806,则可以认为缓存行已经进入其中事务在总线316上待决的瞬态状态,这将最终使得缓存行进入唯一状态,其中,它仅存在于该缓存内。然而,值得注意,直到该请求完成为止,最低等级别缓存330将继续响应监听,就像缓存行不存在一样,因为从系统的角度来看,缓存不拥有缓存行直到其总线事务由互连处理和响应为止。因此,可以认为在中间时间段由最低等级缓存接收的任何监听请求被排序在最低等级缓存自己的请求之前。一旦最低等级缓存808、810接收到对事务的响应,则可用于更新存储器接口处的缓存行的状态,使得它现在被认为是由最低等级缓存所拥有。一旦记录了该状态改变,则存储器接口被配置为在ACE接口514上发布相应的读取写入确认信号,以便向互连表示现在可以安全地向最低等级缓存发布对同一物理地址的监听请求,因为最低等级缓存现在将正确地响应它拥有该特定缓存行。根据清洁唯一812或肮脏唯一DirtyUnique814状态之一,可以通过逐出或写回处理或事务816来逐出缓存行。与其他事务类型一样,一旦相应的事务在总线上完成818,则缓存行将仅返回无效或空闲状态802。此外,尽管可能由于内部缓存请求而自然地发生缓存逐出,但这也是相干性方案工作的非常期望的行为,因为检测到处于清洁唯一或肮脏唯一状态的缓存行的传入监听请求然后可以向有问题的最低等级缓存库发布请求,以便强行驱逐缓存行如果数据当前是肮脏的,则将包括写回数据。以这种方式,响应监听请求可以使得缓存行被强制进入逐出缓存行状态820,并且不能返回监听响应直到事务完成818并且缓存行返回无效状态802为止,否则互连可能未接受该阶段由缓存刷新的任何肮脏数据。如上所述,最低等级缓存是虚拟索引和虚拟标记VIVT缓存,即在虚拟存储器空间中寻址的缓存。然而,来自ACE协议的传入监听请求例如,在监听地址信道510上将始终被提供物理地址,因此这些请求被转换为虚拟地址以允许向最低等级缓存库发布针对特定缓存行的刷新。为此,存储器接口318被配置为维持从物理到虚拟地址的映射,例如,物理到虚拟地址映射的表。适当地,反向转换数据结构552包括物理到虚拟地址映射表。物理到虚拟地址映射可以以页面粒度或缓存行粒度完成。在一个示例中,存储器接口或者,例如,存储器接口处的MMU具有4KB的最小粒度。预计在CPU和GPU之间相关的变量或数据将在同一缓冲器内。因此存在高概率的数据局部性。因此,使用4KB粒度允许少得多的反向转换数据结构条目覆盖大得多的地址空间。因此,以4KB粒度或实际上大于最小值的任何其他粒度操作有助于使得该方法实现成本更低。在一个实现方式中,存储器接口例如,存储器接口处的反向转换数据结构包括4KB对齐的虚拟地址V页面的完全关联表和到物理地址P页面的相应映射。该表可以根据在任何一个时间点可以由最低等级缓存内的存储器接口跟踪的相关4KB页面的最大并发数量进行缩放,以包含可变数量的条目以权衡面积和容量。增加该地址映射表是一个或多个缓存行状态数据结构,例如,RAM,包含4KB页面内各个缓存行的状态。一旦表确认是否正在跟踪特定4KB页面,则可用于检查各个缓存行地址。在4KB页面内,通过各个状态编码来跟踪各个64字节缓存行但也可以跟踪其他长度的缓存行。状态编码可以包括有限状态机FSM或一个或多个状态位。状态编码可以存储在RAM内。这使得例如相干性管理器中所需的触发器的总数减少。每当缓存行的状态改变,可以更新对应于给定缓存行的RAM内的字段,以确保相干性管理器可以正确地决定如何响应对同一地址的后续监听请求。在一个实现方式中,RAM可以被分成若干实例,从而能够减少RAM访问功率并增加并行访问多个条目的能力。可以通过在寄存器中实现最近使用的条目的L0缓存来提供进一步的增强。存储器接口架构现在将参考图9描述存储器接口318的架构的一部分和相关联系统的示例。存储器接口318包括具有反向转换数据结构552的反向转换模块550,该反向转换数据结构552在所示示例中包括页面转换表PTT554。反向转换模块550耦合到溢出控制单元904、缓存行状态单元906其可包括或可访问缓存行状态数据结构和监听处理器单元908。溢出控制单元904耦合到缓存行状态单元906。缓存行状态单元906耦合到监听处理器单元908。存储器接口318可选地还包括缓存库接口910缓存库接口910可以与每个缓存库相接口,或者它可以包括多个缓存库接口模块,各自用于与至少一个缓存库相接口。缓存库接口910耦合到溢出控制单元904和监听处理器单元908。缓存库接口910还可以耦合到缓存行状态单元906。在缓存库接口910没有被提供在存储器接口318处的情况下例如,因为缓存包括用于与缓存库相接口的一个或多个接口模块,溢出控制单元904、缓存行状态单元906和监听处理器单元908可以各自与缓存直接耦合。溢出控制单元904被配置为发起和协调溢出操作。它被配置为监测传入写回逐出请求。缓存行状态单元906被配置为在每缓存行粒度上存储缓存行状态,可选地,存储在多个缓存行状态数据结构实例中,在输入和缓存行状态数据结构实例之间具有交叉开关和仲裁逻辑。缓存行状态数据结构实例可以是RAM实例。监听处理器单元908包括用于每个监听地址AC信道的监听处理器实例。例如,如图5所示,存储器接口318处的相干性管理器322可以包括两个监听处理器实例541、542,每个用于总线接口502、504中的每个。每个监听处理器被配置为处理监听监听请求并在监听响应CR接口512上发布响应。监听处理器单元908被配置为监测传入写回逐出请求和响应。相干性管理器322可选地在缓存库接口910处被配置为根据在溢出控制单元904和监听处理器单元908处生成的信号向缓存库331、332发布刷新命令520。在存在的情况下,缓存库接口910被配置为从溢出控制单元904和监听处理器单元908接收信号,并代表溢出控制单元和监听处理器发布刷新命令。在存在的情况下,缓存库接口910可以被配置为监测传入写回逐出请求。缓存行状态单元现在将更详细地讨论缓存行状态单元906。由反向转换模块例如在反向转换数据结构处跟踪的缓存行的缓存行状态可以存储在一个或多个缓存行状态数据结构实例中。在一个示例中,存在四个缓存行状态数据结构或RAM实例。每个缓存行状态数据结构可以包括单个端口。在针对每个反向转换数据结构条目使用4KB页面以及64字节缓存行大小的系统的示例中,四个缓存行状态数据结构中的每一个被配置为保持4KB页面内存在的64个缓存行偏移地址中的16个的状态。在使用4KB页面的系统的另一示例中,其中,存在四个缓存行状态数据结构实例并且缓存行大小为128字节,每个缓存行状态数据结构被配置为保持32个缓存行偏移地址中的8个的状态。每个反向转换数据结构条目可以直接指向缓存行状态数据结构实例中的相应地址。提供多个缓存行状态数据结构实例允许任何反向转换数据结构条目中的多个缓存行的状态由不同的输入同时访问。在该示例中,期望通过提供四个缓存行状态数据结构例如,四个RAM来获得多达两组总线接口的所需吞吐量。对于具有更多总线接口的配置,提供额外的并行RAM实例以便实现所需的吞吐量,但额外的RAM将不是在所有情况下都需要。例如,使用四个总线接口的实现方式可以包括四个或八个RAM实例。可以根据需要选择其他数量的RAM实例。在实际实现方式中,RAM实例的数量的选择尤其可以取决于性能测试的结果。缓存行状态单元906架构的示意图在图10中示出。交叉开关解码逻辑1004接收输入1002下面讨论。交叉开关解码逻辑耦合到RAM初始化逻辑1006,该RAM初始化逻辑1006耦合到四个RAM实例1008、1010、1012、1014:RAM0、RAM1、RAM2和RAM3。四个RAM实例耦合到溢出读取多路复用器1016,其被配置为接收溢出控制信号1018。溢出读取多路复用器1016耦合到读取数据解码逻辑1020,其被配置为提供输出1022。缓存行状态单元的输入1002可以包括:·相干读取响应,其可以使得写入特定缓存行的状态,例如,缓存行处于清洁唯一状态;·写回逐出请求,其可以使得写入特定缓存行的状态,例如,缓存行处于逐出状态即缓存行正在被逐出,但逐出尚未完成;·相干写回逐出响应,其可以使得写入特定缓存行的状态,例如,缓存行处于无效状态;·监听读取和或监听写入,允许每个监听处理器或监听处理器模块读取和或写入特定缓存行的状态。溢出控制单元904被配置为向缓存行状态单元906提供输入。输入1002包括来自溢出控制单元904的溢出控制写入。输入到溢出读取多路复用器1016的信号包括由溢出控制读取提供的溢出控制读取。将溢出控制单元耦合到缓存行状态单元允许溢出控制单元904能够读取特定反向转换数据结构条目内的所有缓存行的状态,并且能够写入特定缓存行的状态。适当地,每个缓存行状态需要2个位。因此,四个RAM实例中的每一个都是32位宽。每个RAM实例的深度适当地对应于反向转换数据结构条目的数量。交叉开关解码逻辑1004被配置为解码对所有输入的访问以确定向其引导访问除了溢出控制读取,其访问所有RAM实例的正确RAM或更一般地,正确缓存行状态数据结构实例。使用缓存行偏移的两个最低有效位LSB将访问映射到四个RAM实例。可以假设可能在同一时间附近接收到类似的缓存行地址例如,当跨缓存库划分较大突发时。因此,第一RAM实例1008可以包含缓存行偏移0、4、8等的状态对于四RAM配置,并且第二RAM实例1010包含缓存行偏移1、5、9等的状态。更一般地,缓存行偏移的状态可以顺序地包含在多个RAM实例中,并且多个缓存行偏移的状态大于循环通过可用RAM实例的RAM的数量。该配置允许并行访问相邻的缓存行地址。交叉开关解码逻辑1004驱动每个RAM实例的仲裁器的输入。在重置之后,RAM实例中的所有位置都可初始化为无效状态。初始化逻辑1006通过将零写入RAM实例中的每个位置来在重置之后执行该操作。这些写入被复用到仲裁器输入,并且所有其他输入在初始化期间保持关闭。来自交叉开关解码逻辑1004的输入访问被仲裁用于每个RAM实例。使用例如对所有输入具有相等优先级的循环仲裁来单独地仲裁读取和写入。写入可以优先于读取,以确保如果在同一周期中发生对同一缓存行的读取和写入,则访问以正确的顺序发生以便读取获取写入所做的更改。仲裁器还负责根据输入缓存行偏移创建用于RAM访问的完整写入掩码,以使得仅需要写入特定缓存行的状态。来自溢出控制单元904的读取读取反向转换数据结构条目中的所有缓存行的状态,并因此需要访问所有RAM实例。为了同步所有四个RAM的读取,并确保来自所有四个RAM的返回数据可以被同时返回到溢出控制单元而避免需要通过RAM流水线回到仲裁器的启用路径,当不存在从仲裁器到任何RAM实例的请求时,这些读取被多路复用在仲裁器之后。可以是单端口RAM实例的RAM实例包含注册流水线,边带数据通过该流水线被传递以用于读取请求。该边带包括用于标识读取请求的源、缓存行偏移、以及监听处理器用于将它们接收的状态数据写入其内部缓冲器中的正确位置的指针的字段。在一个实现方式中,在每个时钟周期中仅一个RAM实例可以输出特定源的读取数据。这可能是因为不存在通过RAM和仲裁器的启用路径,并且来自特定源的访问被同步。读数据解码逻辑1020使用通过RAM实例流水线传递的ID字段来确定要利用可用RAM读取数据驱动的正确输出。流水线化缓存行偏移用于复用来自针对所请求状态的RAM读取数据的正确的位,并将其返回给请求者。缓存行的每个状态可以被编码为四状态状态机。状态可以包括“无效”状态、“唯一P0”状态、“唯一P1”状态和“逐出”状态,如图11所示。每个缓存行状态可能需要2个位来编码这四个状态。因此,四个RAM实例中的每一个都是32位宽。每个RAM实例的深度对应于反向转换数据结构条目的数量。当缓存行尚未由GPU声明唯一所有权时发生无效状态1102。这可以在重置之后发生。当分别接收到读取唯一或清洁唯一响应时,缓存行可以移动到唯一P0状态1104或唯一P1状态1106。在唯一P0状态1104中,缓存行由GPU唯一地持有并且完全有效即部分Partial=0:“P0”。在存储在缓存行中的整个数据有效的情况下,可以说该缓存行完全有效。在唯一P1状态1106中,缓存行由GPU唯一地持有并且部分有效部分=1:“P1”。在存储在缓存行中的数据的仅一部分有效的情况下,可以说该缓存行部分有效。在部分有效缓存行上完成读取唯一事务将导致缓存行变为完全有效。因此,缓存行的状态将从唯一P1移动到唯一P0。如果接收到逐出或写回请求,则状态将从唯一P0状态1104或唯一P1状态1106移动到逐出状态1108。在逐出状态1108中,作为监听的结果,或者因为条目被选择用于溢出,缓存行正处于被逐出的过程中。一旦逐出完成,则缓存行回到无效状态1102。为了确保总线和相干主设备之间的相干事务和状态变化的正确排序,主设备通过在RACK和WACK接口上发布信号来确认接收到在R读取响应和B写入响应信道上发送的响应。这确保了总线可以维持在如R、B和AC监听请求信道之间的不同接口上发送的事务或响应的已知顺序。以这种方式,总线例如确保在总线和主设备之间的读取响应正在进行时不能接收监听。确认意味着由于接收到响应而需要的任何缓存行状态改变已经发生。确认可以以与在总线上接收到响应的顺序相同的顺序发送,例如,在每个监听地址信道上。因此,存储器接口将在作为读取或写入响应的结果而更新缓存行状态数据结构的同时发布确认信号RACK和或WACK。还可以针对CPU非相干读取和写入响应发送确认信号RACK和或WACK。为了从单个位置驱动这些输出,存储器接口还可以接收非相干响应并利用相干响应以正确顺序驱动确认信号输出。缓存库接口模块现在将参考图12描述缓存库接口模块910。缓存库接口模块可以管理从溢出控制和监听处理器到最低等级缓存库的刷新命令的发布。该模块包含交叉开关和仲裁逻辑以及每个缓存库的刷新缓冲器实例。这允许同时向每个缓存库发布刷新。缓存库接口还负责防止可能导致数据危害的重复刷新。图12示出了缓存库接口的示例,其中,提供了两个缓存库,缓存库1331和缓存库2332。交叉开关解码逻辑1203被配置为从监听处理器908例如,从监听处理器处的监听缓冲器接收信号1201,并从溢出控制模块904接收信号1202。交叉开关解码逻辑耦合到两个仲裁器:缓存库1仲裁器1204和缓存库2仲裁器1206。缓存库1仲裁器耦合到缓存库1刷新缓冲器1208,其耦合到缓存库1。缓存库2仲裁器耦合到缓存库2刷新缓冲器1210,其耦合到缓存库2。在所示示例中,缓存库接口910具有来自溢出控制的单个输入1202和来自每个监听处理器的一个输入在图12中示出为来自监听缓冲器的单个线1201。可以通过提供来自溢出控制单元的多个输入来减少发布多个刷新所花费的时间,允许溢出控制单元在同一周期发布多个刷新,只要该多个刷新指向不同的缓存库。交叉开关解码逻辑1203被配置为使用由交叉开关解码逻辑100所使用的相同的地址解码模式和散列函数来确定每个刷新输入的目的地缓存库。用于每个缓存库的刷新命令被仲裁,例如,使用循环策略,所有请求源的优先级相等。所选择的输入刷新被写入对应于该缓存库的刷新缓冲器实例1208、1210。刷新缓冲器包含去往特定缓存库的所有刷新的条目。当交叉开关仲裁逻辑1203选择刷新时,条目可以被添加到刷新缓冲器1208、1210,并且一旦缓存库设置相应的刷新处理位,则条目从刷新缓冲器中移除。对此的例外是检测到重复刷新危害,其中,刷新可以从刷新缓冲器中移除而不被发布到缓存库,或者根本不被添加到缓冲器。缓存库接口可以被配置为通过监测写入接口来检测这种重复刷新危害。可以通过使得刷新缓存器中具有与现有刷新相同的缓存行地址的任何条目非活跃来防止重复刷新。存储在刷新缓冲器1208、1210中的条目中的刷新可以基于FIFO被发送到缓存库。每个刷新缓冲器条目可以存储虚拟缓存行地址、上下文PASID和反向转换数据结构条目编号中的一个或多个。还可以提供控制位,例如,以指示刷新是否活跃和或刷新是否已被发送到相应的缓存库。刷新缓冲器深度可以是每缓存库4个条目。总线映射反向转换数据结构可以包括存储器地址的列表。额外地或替代地,反向转换数据结构可以包括一个或多个存储器地址范围的列表。例如,反向转换数据结构可以包括存储器地址范围的起始地址和结束地址或多个存储器地址范围的多个起始地址和多个结束地址。存储器地址范围可以包括奇数地址或偶数地址。一组或一套存储器地址可以包括存储器地址列表和或一个或多个存储器地址范围。可以提供多于多组或多套存储器地址。在一个实现方式中,可以通过将监听地址与该组或该套存储器地址进行比较来确定监听地址是否在反向转换数据结构中具有匹配条目。可以确定监听地址在反向转换数据结构中具有匹配条目,其中,监听地址被保持在反向中数据结构内或者在反向转换数据结构内所保持的地址范围内。参考图13,该组存储器地址可以与多个总线接口502、504中的每一个相关联1302,例如,在反向转换数据结构中。在一个总线接口处接收到诸如监听请求之类的存储器请求时1304,确定请求中所标识的存储器地址。该确定可以由存储器接口进行,例如,由诸如相干性管理器处的监听处理器之类的处理器。然后在存储器接口处例如,在相干性管理器处确定所标识的存储器地址是否与接收到请求的总线接口502、504相关联1306。可以参考反向转换数据结构来进行该确定。例如,可以根据反向转换数据结构来在存储器接口处例如,在相干性管理器处确定所标识的存储器地址是否与接收到请求的总线接口相关联。可以由存储器接口确定所标识的存储器地址与总线接口相关联,其中,所标识的存储器地址包含在反向转换数据结构的列表中,和或是与该总线接口相关联的反向转换数据结构中的一个或多个存储器地址范围的一部分或在该一个或多个存储器地址范围内。由于以下原因,确定请求中所标识的存储器地址是否与特定总线接口相关联是有用的。在存在多个总线接口并且可以通过任何总线接口接收存储器请求的情况下,期望避免处理重复请求。可以广播存储器请求,使得它通过所有总线接口被接收。也就是说,可以在每个总线接口处单独地接收同一存储器请求。这可以在例如总线不清楚哪个总线接口是通过其发送请求的正确总线接口的情况下完成,并因此通过所有总线接口发送请求以确保它被正确地处理。在这种情况下,期望仅在请求通过正确的总线接口被接收的情况下对其进行处理。这可以避免多次尝试访问同一数据,并可以减少浪费的处理。“正确”总线接口适当地是与存储器请求中所标识的存储器地址相关联的总线接口,例如,在反向转换数据结构处。以这种方式,例如,在监听处理器处,可以确定是否应处理存储器请求。如果所标识的存储器地址与和通过其接收到请求的总线接口相关联的该组存储器地址不对应,则适当地不处理该请求。例如,请求不会导致相干性管理器查询页面映射的状态、查询缓存行状态数据结构或访问缓存。在一些示例中,可以忽略该请求。然而,这可能导致数据冲突和或其他数据危害的发生。通常优选响应于每个请求,即使在该处理未被请求的情况下。因此,在存储器请求未被处理的情况下,仍可以例如由监听处理器发送响应。响应可以指示该请求尚未被处理。在存储器请求未被处理的情况下,监听处理器可以被配置为进行响应,如同所请求的存储器地址是无效缓存行。如果所标识的存储器地址与和通过其接收到请求的总线接口相关联的该组存储器地址相对应,则处理该请求1308。该请求可以在存储器接口处被处理,例如,在监听处理器处。处理请求可以涉及查询反向转换模块处的页面映射的状态、查询缓存行状态数据结构、或访问缓存中的一项或多项。这种仅处理通过正确总线接口接收到的请求的方法可以减少处理开销,例如,通过减少不必要地处理的请求的数量。传播到缓存的请求的数量可能减少,从而节省缓存处理开销。在一些示例中,可以在所有AC端口上发布监听请求,并且每个监听处理器被配置为确定与监听地址相对应的地址是否将在与该监听处理器相对应的总线接口上被发布,并将仅当实例数目即端口和或监听处理器的实例数目端口和监听处理器的实例数目可以相同与所确定的总线接口相对应时查找状态。否则,监听处理器被配置为将缓存行视为无效。表1给出了四个缓存库的总线接口编号的示例。库0库1库2库3单总线0000双总线0101四总线0123表1-每个库的总线接口编号在一些示例中,请求包括地址部分。存储器接口可以被配置为在第一映射中将地址部分映射到缓存库。存储器接口可以被配置为在第二映射中将缓存库映射到总线接口。存储器接口可以被配置为通过使用散列函数例如,单个散列函数来执行第一映射和第二映射中的至少一个。即在一个示例中,单个散列函数可以执行第一映射和第二映射二者。第一映射可以是地址部分和缓存库之间的一对一映射。第一映射可以允许单个地址部分映射到多个缓存库。第二映射可以是缓存库和总线接口之间的一对一映射。第二映射可以允许一个或多个缓存库映射到同一总线接口。该方法允许一个总线接口映射到一个缓存库,或单个总线接口映射到多个缓存库。特定缓存库可以映射到单个总线接口。存储器接口可以在反向转换模块处执行第一和或第二映射。反向转换数据结构可以包括第一和或第二映射。存储器接口处的处理器例如,监听处理器可以被配置为执行第一和或第二映射。适当地,存储器接口被配置为防止导致多个写入逐出请求的缓存行的重复刷新。由于缓存行状态可能对于针对其接收到刷新请求的完全有效缓存行保持有效,因此如果错误地发布多个这样的刷新,则可能导致多个写回和或逐出请求被错误地发布到存储器。因此,应避免重复刷新。监听处理器和溢出控制模块二者都可能向同一缓存行发布刷新,例如,如果在包含唯一缓存行的条目上开始溢出并然后收到针对同一缓存行的监听,或反之亦然。缓存库接口可以检测并移除与刷新缓冲器中的现有条目相匹配的传入刷新,但一旦条目离开刷新缓冲器,则缓存库接口就不再能够检测这种危害。因此,在除了对传入写入事务敏感之外,监听处理器和溢出缓冲器模块还可以被配置为能够检测它们中的另一个何时向针对其它们可能发布刷新本身的缓存行的缓存行接口发布刷新。此方法还在不存在缓存库接口的情况下维护该功能。如果溢出控制和监听处理器二者都试图在同一周期向缓存库接口模块发布刷新,则它们中的一个将被缓存库接口仲裁器选择,并且当被启用时,它们中的另一个将检测到这种情况并取消其自己的刷新。当监听处理器和溢出缓冲器模块中的一个已发布刷新但被缓存行状态模块停止时,两个模块可能仅在写入缓存行状态模块时或之后在同一周期上向缓存库接口发布刷新。这确保一个模块在读取缓存行状态RAM时可以丢失来自另一模块的刷新。监听请求的早期处理在具有特定缓存中的多个缓存库的系统中,反向转换模块或反向转换模块处的反向转换数据结构提供了不需要单独地搜索每个缓存库以确定与和所接收的存储器请求相关联的物理地址相对应的虚拟地址的优势。反向转换模块可以从与所接收的存储器请求相关联的物理地址中标识适当的缓存库。例如,反向转换模块可以维护将物理地址或物理地址范围映射到多个缓存库的表。以这种方式,当接收到存储器请求时,反向转换模块可以访问该表以确定物理地址映射到的多个缓存库中的哪一个。然后,仅需要访问多个缓存库中的相关缓存库。这可以通过避免不必要的访问其他缓存库来减少其他缓存库的负载,如果要搜索它们以标识正确的缓存库,则可能发生这种不必要的访问。因此,该方法可以在接收到存储器请求时减少缓存和或缓存库的操作中的干扰。因此,可以将访问限制于已知或更可能响应于存储器请求而返回缓存命中的缓存库。此外,反向转换模块可以确定缓存不包括来自存储器请求的物理地址的映射例如,没有缓存库包括来自存储器请求的物理地址的映射,例如,在所请求的缓存行尚未存储在缓存中时将发生。在这种情况下,存储器接口不需要访问缓存例如,缓存处的任何缓存库。这可以通过允许在不需要访问缓存本身的情况下确定存储器请求的物理地址未被映射到缓存来提高性能。因此,可以由存储器接口发送响应而不访问缓存。这可以减少发布响应所花费的时间,并且可以减少缓存上的负载。在反向转换模块的反向转换数据结构不包含特定物理地址的情况下,例如,因为处理器未访问主存储器中的该物理地址而因此在缓存中尚未提供缓存版本,不需要任何尝试访问缓存,否则将导致缓存未命中。替代地,可以省略缓存访问步骤,并且反向转换模块可以确定存在或将存在缓存未命中。响应于确定存在或将存在缓存未命中,可以访问主存储器中的该特定物理地址处的数据。这可以减少处理这种请求的延迟,其中,存在缓存未命中。该方法还可以减少不必要地处理缓存上的负载。本技术允许在相干性管理器处处理相干存储器空间中的存储器请求,以便能够更高效地处理存储器请求。例如,相干性管理器适当地能够处理存储器请求,使得存储器请求不需要全部在缓存存储器处或全部由缓存存储器处理。一些存储器请求,例如,如果在缓存存储器处处理则将导致缓存未命中的存储器请求,不需要被传递到缓存存储器。相反,这种存储器请求有利地由相干性管理器过滤掉,以便不占用缓存存储器的处理时间和或带宽。因此,相干性管理器可以被视为“预处理器”,其可以减少处理缓存存储器本身上的负载。适当地,相干性管理器可以以至少与缓存存储器相同的速度如果不是更快的话来操作。因此,在相干性管理器处处理存储器请求,而不是要求所有请求传递到缓存存储器,适当地提高了整个系统的速度和或效率。相干性管理器被适当地配置为确定所标识的存储器地址即在存储器请求中标识的存储器地址是否是与缓存存储器处的缓存行相关联的存储器地址。相干性管理器被适当地配置为根据缓存存储器是否包括与所标识的存储器地址相关联的缓存行和或缓存行的状态,如下面将进一步说明的来处理存储器请求。适当地,相干性管理器被配置为响应于确定存储器请求中所标识的存储器地址在反向转换数据结构中不与缓存存储器相关联来输出响应。适当地,监听处理器被配置为输出响应。适当地,响应在总线上被输出。适当地,相干性管理器被配置为直接输出响应。例如,相干性管理器被适当地配置为直接响应这样的存储器请求而无需访问缓存存储器。该方法的优势是允许处理存储器请求而不会产生访问缓存存储器的处理成本、不会产生由于缓存存储器处的延迟的时间成本、和或不会产生发送和接收去往和来自缓存存储器的信号的带宽成本。这有助于允许相干性管理器高效地处理存储器请求。相干性管理器被适当地配置为响应于在监听处理器处确定存储器请求中所标识的存储器地址在反向转换数据结构中与缓存存储器相关联来处理存储器请求。处理存储器请求可以涉及查询反向转换数据结构中与和存储器请求相关联的物理页面相对应的虚拟页面的状态。监听处理器被配置为根据反向转换数据结构中的虚拟页面的状态来处理存储器请求。在虚拟页面的状态无效的情况下,监听处理器被适当地配置为响应存储器请求而无需访问缓存行状态数据结构或缓存。在虚拟页面的状态有效的情况下,监听处理器适当地访问对应于所需缓存行的相关缓存行状态数据结构条目。监听处理器被配置为根据缓存行状态数据结构中的缓存行的状态来处理存储器请求。在缓存行的状态无效的情况下例如,该缓存行处未存储数据、存储在缓存行处的数据损坏、存储在该缓存行处的数据被逐出等,监听处理器是适当地配置为响应存储器请求而无需访问缓存处的缓存行。在缓存行的状态有效的情况下,监听处理器可以被配置为访问缓存处的缓存行,并且根据所访问的缓存行来响应存储器请求。上述方法可以帮助减少存储器请求所消耗的处理负荷和带宽。此外,该方法可以减少处理存储器请求所需的时间,因为访问或查询反向转换数据结构和或缓存行状态数据结构,并由相干性管理器根据该访问或查询的结果来输出响应可以比访问缓存存储器本身更快。在一些示例中,可能不需要在缓存存储器处理存储器请求,其中,缓存行的状态是等待逐出。在这种情况下,缓存行存在于缓存存储器中,但可以正在进行在该过程的某个阶段逐出,并且如果适当则还可以进行写回。在这种情况下,可能期望响应于存储器请求发送缓存未命中响应。无需访问缓存存储器便能够发送这样的响应。对于上述其他示例也是如此。可以确定将发生缓存未命中,并使得相干性管理器相应地输出响应。相干性管理器可以使得根据缓存行的状态的确定关于缓存行执行写回处理和逐出处理中的至少一个。在确定缓存行状态是清洁的即存储在缓存中的缓存行处的数据与存储在主存储器中的相应数据条目中的数据相同,并且存储在缓存行处的数据由另一缓存需要的情况下,存储在缓存行处的数据可以从缓存中逐出,使得当它可能不再是最新的时,它将不会在后续事务中被无意地读取。在缓存行清洁的情况下,不需要发生写回事务或写回处理。因此,该布置允许快速且高效地标识相关缓存行以及随后从缓存中驱逐存储在该缓存行处的数据。在其中的数据被逐出之前避免不必要的缓存行读取如果适当的话进一步有助于减少系统中的延迟。在确定缓存行状态为肮脏的情况下即在从主存储器读取以来缓存中缓存行中的数据已被修改,并且缓存中的版本是最新的,该缓存行中的数据在被从缓存中逐出之前可以被写回主存储器。这使得任何后续事务例如,与缓存行处的缓存数据相对应的存储器地址的读取事务能够访问相应数据条目的最新版本。如果写回处理是适当的,则反向转换模块例如,反向转换数据结构可以允许确定虚拟地址,以便可以访问缓存中的缓存行并且将该缓存行中的数据写回主存储器。在缓存行中的数据被从缓存中逐出而没有写回主存储器的情况下,可以指示缓存行无效。这提供了该缓存行不再持有有效数据的指示。指示缓存行无效意味着对该缓存行的后续读取请求将是缓存未命中。指示缓存行无效可以通过使用缓存中的标志或其他状态指示符、状态数据结构中的标志或其他状态指示符等来完成。因此,不需要在所有示例中都重写缓存中的现有数据条目,但可以这样做,例如,为了增加数据安全性。然后,存储被逐出的数据的缓存行可以变为立即可用于将新数据写入缓存。这不一定是需要写回事务的情况。在这种情况下,将读取来自该缓存行的数据以便可以将其写回主存储器。因此,缓存行可能不可用于存储新数据直到该读取事务完成为止,并且可能直到主存储器上的相应写回事务完成为止。通常,数据将保留在缓存行中直到接收到写回确认,表明写回事务确实已完成。接收到该写回确认指示由于写回事务已完成,不再需要将数据保留在缓存中的该缓存行中。然而,如上所述,由于主存储器通常比缓存慢得多,因此将由于需要在缓存可以继续完成逐出缓存行中的数据的过程之前等待主存储器完成事务而延迟增加。在一些实现方式中,可以重新分配缓存的一部分例如,缓存行用于在将已经存在于该缓存行中的数据写回存储器完成之前即在接收到写回确认之前存储新数据。分配缓存行以用于存储新数据例如,存储在主存储器中的新物理地址处的数据可以排队等待稍后的动作。队列可以在存储器接口处形成。与新分配有关的数据可以存储在反向转换模块处,例如,存储在反向转换数据结构处。这允许处理来自层级中在最低等级缓存之上或之下的后续读取事务,例如,来自与该缓存相关联的处理器或来自经由存储器接口耦合到该缓存的处理器。例如,甚至在完成对缓存行的新数据分配之前,可以在反向转换模块处例如,从反向转换数据结构确定针对排队分配请求,针对该新数据的缓存上的后续读取事务将是缓存未命中还是缓存命中。如果后续读取事务将是缓存未命中,则存储器接口可以使得响应被发送到请求以指示该请求导致缓存未命中。无需访问缓存本身。注意,无需立即发送该响应;响应可能需要根据特定顺序被输出,例如,以与传入存储器请求的顺序相对应的顺序。例如,这可能需要满足特定数据协议,如下所述。能够预先处理所接收的请求允许节省时间。响应可以排队,直到其以正确的顺序输出为止。如果后续读取事务将是缓存命中如果分配请求未被排队,则可能是缓存未命中,则缓存命中的结果可以在适当的时候排队以等待响应。注意,尽管对缓存命中的结果进行排队以等待响应存在一些延迟,但仍可能减少系统延迟,因为该过程可能比如果事务的结果是缓存未命中并后续从较慢主存储器读取数据更快。适当地,相干性管理器被配置为使得存储器请求被发送到缓存存储器以便在缓存存储器处进行处理。例如,在缓存存储器中存在缓存行,并且缓存行状态数据结构指示例如缓存行的状态是有效的情况下,存储器请求可以前进到缓存存储器。缓存存储器可以处理存储器请求。根据处理存储器请求或作为处理存储器请求的一部分,缓存存储器被适当地配置为使得关于缓存行执行写回处理和逐出处理中的至少一个。不是在所有示例中都需要缓存行状态数据结构。例如,在缓存存储器中存在缓存行的情况下,相干性管理器可以被配置为允许存储器请求传递到缓存存储器,即前进到缓存存储器以进行处理。不需要确定缓存存储器处的缓存行的状态。然而,在存在缓存行状态数据结构的情况下,可以有利地使用它来减少缓存存储器处理的存储器请求的数量,从而提高效率。适当地,允许存储器请求前进到缓存存储器包括确定缓存存储器处的多个缓存库中的哪个缓存库在反向转换数据结构中与所标识的存储器地址相关联,并根据该确定将存储器请求传递到相应的缓存库。该方法允许相干性管理器减少前进到任何缓存库的存储器请求的数量,和或允许存储器请求被引导至适当的缓存库。例如,在通过总线接收诸如广播存储器请求之类的存储器请求的情况下,相干性管理器被适当地配置为确定哪个缓存库如果有的话保持与所标识的存储器地址相关联的缓存行。如果特定缓存库持有相关缓存行,则相干性管理器可以适当地将存储器请求引导至该缓存库。在相干存储器系统中,共享存储器中的存储器位置适当地一次由一个缓存声明。因此,如果特定缓存库持有与所标识的存储器地址相关联的缓存行,则没有其他缓存库将持有与同一所标识的存储器地址相关联的缓存行。这意味着对那些其他缓存库的任何存储器请求都将是冗余的。任何这样的存储器请求都将浪费资源,例如,处理时间和或带宽。因此,期望存储器请求仅被引导至适当的缓存库。适当地,相干性管理器根据确定哪个缓存库在反向转换数据结构中与所标识的存储器地址相关联被配置为仅将存储器请求传递给所确定的缓存库。相干性管理器可以被配置为针对对存储器的读取请求来监测总线例如,通过监测总线接口,该读取请求标识读取请求的读取存储器地址和响应目的地,并且在反向转换数据结构中将读取存储器地址与对应于响应目的地的缓存存储器相关联。适当地,相干性管理器被配置为通过将读取存储器地址写入反向转换数据结构来将读取存储器地址与对应于响应目的地的缓存存储器相关联。以这种方式监测总线允许相干性管理器跟踪哪些缓存存储器或缓存库声明对缓存行的所有权。它允许相干性管理器自动更新反向转换数据结构中存储器地址和缓存存储器或缓存库之间的关联。以这种方式跟踪所声明的缓存行的存储器地址允许相干性管理器能够高效地处理后续接收到的存储器请求,例如,监听请求。响应目的地适当地指示发布读取请求的设备的缓存存储器或缓存库。响应于该读取请求,相干性管理器可以将读取存储器地址与所指示的缓存存储器或缓存库相关联。图1-13被示出为包括许多功能块。这仅是示意性的,并不旨在限定图中所示的实体的不同逻辑元件之间的严格划分。可以以任何适当的方式提供每个功能块。应理解,本文描述为由存储器接口和或相干性管理器形成的中间值不需要由存储器接口和或相干性管理器在任何点上物理地生成,并且可以仅代表方便地描述由存储器接口和或相干性管理器在其或它们的输入和输出之间执行的处理的逻辑值。本文描述的存储器接口和或相干性管理器可以在集成电路上的硬件中实现。本文描述的存储器接口和或相干性管理器可以被配置为执行本文描述的任何方法。通常,上述的功能、方法、技术、或组件中的任何一者可以用软件、固件、硬件例如,固定逻辑电路或其任何组合来实现。本文可以使用术语“模块”、“功能”、“组件”、“元件”、“单元”、“块”和“逻辑”来总体地表示软件、固件、硬件、或其任何组合。在软件实现方式的情况下,模块、功能、组件、元件、单元、块、或逻辑表示在处理器上执行时执行指定任务的程序代码。本文所描述的算法和方法可以由执行使得一个或多个处理器执行算法方法的代码的一个或多个处理器来执行。计算机可读存储介质的示例包括随机存取存储器RAM、只读存储器ROM、光盘、闪存、硬盘存储器、以及可以使用磁的、光学的、和其他技术来存储指令或其他数据并且可以被机器访问的其他存储器设备。本文所使用的术语计算机程序代码和计算机可读指令是指用于处理器的任何种类的可执行代码,包括以机器语言、解释型语言、或脚本语言表达的代码。可执行代码包括二进制代码、机器代码、字节代码、定义集成电路的代码例如,硬件描述语言或网表、以及以编程语言代码例如C、Java或OpenCL表达的代码。可执行代码例如可以是任何类型的软件、固件、脚本、模块、或库,它们当在虚拟机或其他软件环境中被适当地执行、处理、解释、编译、执行时使得在其处支持可执行代码的计算机系统的处理器执行由代码指定的任务。处理器、计算机、或计算机系统可以是具有使得其可以执行指令的处理能力的任何种类的设备、机器、或专用电路、或其集合或其一部分。处理器可以是任何种类的通用或专用处理器,诸如CPU、GPU、片上系统、状态机、媒体处理器、专用集成电路ASIC、可编程逻辑阵列、可编程门阵列、现场可编程门阵列FPGA等。计算机或计算机系统可以包括一个或多个处理器。还旨在包含定义本文所描述的硬件配置以用于设计集成电路或用于配置可编程芯片以执行期望功能的软件,例如,HDL硬件描述语言软件。也就是说,可以提供计算机可读存储介质,其上编码有集成电路定义数据集形式的计算机可读程序代码,其当在集成电路制造系统中被处理时将该系统配置为制造存储器接口和或相干性管理器,该存储器接口和或相干性管理器被配置为执行本文所描述的方法中的任一者,或者制造包括本文所描述的任何装置的存储器接口和或相干性管理器。集成电路定义数据集例如可以是集成电路描述。可以提供一种在集成电路制造系统中制造如本文所述的存储器接口和或相干性管理器的方法。可以提供一种集成电路定义数据集,当在集成电路制造系统中被处理时,该集成电路定义数据集使得执行制造存储器接口和或相干性管理器的方法。集成电路定义数据集可以是计算机代码的形式,例如,作为网表、用于配置可编程芯片的代码、作为定义任何等级的集成电路的硬件描述语言、包括作为寄存器传输级RTL代码、诸如Verilog或VHDL之类的高级电路表示、以及诸如OASISRTM和GDSII之类的低级电路表示。逻辑上定义集成电路的较高级表示例如,RTL可以在被配置用于在软件环境的上下文中生成集成电路的制造定义的计算机系统处被处理,其中该软件环境包括电路元件的定义和用于将这些元件进行组合以便生成由该表示定义的集成电路的制造定义的规则。如通常在计算机系统处执行以定义机器的软件的情况那样,可能需要一个或多个中间用户步骤例如,提供命令、变量等以用于被配置用于生成集成电路的制造定义的计算机系统,以执行定义集成电路的代码从而生成该集成电路的制造定义。现将参考图14描述在集成电路制造系统中处理集成电路定义数据集以便将系统配置为制造存储器接口和或相干性管理器的示例。图14示出了被配置为制造如本文的任何示例中描述的存储器接口和或相干性管理器的集成电路IC制造系统1402的示例。具体地,IC制造系统1402包括布局处理系统1404和集成电路生成系统1406。IC制造系统1402被配置为接收IC定义数据集例如,将存储器接口和或相干性管理器定义为在本文的任何示例中描述的那样、处理IC定义数据集、并且根据IC定义数据集来生成IC例如,其实现本文的任何示例中描述的存储器接口和或相干性管理器。IC定义数据集的处理将IC制造系统1402配置为制造实现本文的任何示例中所描述的存储器接口和或相干性管理器的集成电路。布局处理系统1404被配置为接收并处理IC定义数据集以确定电路布局。从IC定义数据集确定电路布局的方法是本领域中已知的,并且例如可以涉及合成RTL代码以确定要生成的电路的门级gatelevel表示,例如,就逻辑组件例如,NAND、NOR、AND、OR、MUX和FLIP-FLOP组件而言。通过确定逻辑组件的定位信息,可以从电路的门级表示来确定电路布局。这可以自动完成或者在用户参与下完成,以优化电路布局。当布局处理系统1404确定了电路布局时,它可以将电路布局定义输出到IC生成系统1406。电路布局定义可以是例如电路布局描述。如现有技术中已知的,IC生成系统1406根据电路布局定义生成IC。例如,IC生成系统1406可以实施半导体器件制造工艺以生成IC,半导体器件制造工艺可以涉及光刻和化学处理步骤的多步骤序列,在此期间,在由半导体材料制成的晶片上逐渐形成电子电路。电路布局定义可以是掩模的形式的,其可以在用于根据电路定义生成IC的光刻工艺中使用。替代地,提供给IC生成系统1406的电路布局定义可以是IC生成系统1406可用来形成用于生成IC的适当的掩模的计算机可读代码的形式。由IC制造系统1402执行的不同处理可以全部在一个位置例如,由一方实现。替代地,IC制造系统1402可以是分布式系统,使得一些处理可以在不同位置执行,并且可以由不同方来执行。例如,可以在不同位置和或由不同方来执行以下阶段中的一些:i合成表示IC定义数据集的RTL代码以形成要生成的电路的门级表示,ii基于门级表示生成电路布局,iii根据电路布局形成掩模,以及iv使用该掩模来制造集成电路。在其他示例中,在集成电路制造系统处对集成电路定义数据集的处理可以将系统配置为在不需要对IC定义数据集进行处理以确定电路布局的情况下制造存储器接口和或相干性管理器。例如,集成电路定义数据集可以定义对诸如FPGA之类的可重新配置处理器的配置,并且对该数据集的处理可以将IC制造系统配置为生成具有该定义的配置的可重新配置处理器例如,通过将配置数据加载到FPGA。在一些实施例中,集成电路制造定义数据集当在集成电路制造系统中被处理时可以使得集成电路制造系统生成本文所描述的设备。例如,以上文关于图14所描述的方式通过集成电路制造定义数据集进行的对集成电路制造系统的配置可使得本文所描述的设备被制造。在一些示例中,集成电路定义数据集可以包括在数据集中定义的硬件上运行的软件或者与数据集中定义的硬件相结合的软件。在图14所示的示例中,IC生成系统还可以由集成电路定义数据集配置为在制造集成电路时根据在集成电路定义数据集中定义的程序代码将固件加载到集成电路上,或者以其他方式向集成电路提供程序代码以供与集成电路一起使用。与已知实现方式相比,本申请中在设备、装置、模块和或系统以及本文实现的方法中阐述的概念的实现方式可以产生性能改进。性能改进可以包括增加的计算性能、减少的延迟、增加的吞吐量、和或降低的功耗中的一个或多个。在这种设备、装置、模块和系统例如集成电路的制造期间,可以针对物理实现方式权衡性能改进,从而改进制造方法。例如,可以针对布局区域权衡性能改进,从而匹配已知实现方式的性能但使用较少的硅。例如,这可以通过以串行方式再使用功能块或在设备、装置、模块和或系统的元件之间共享功能块来完成。相反,本申请中阐述的产生设备、装置、模块和系统的物理实现方式中的改进例如减小的硅面积的概念可以被权衡以提高性能。例如,这可以通过在预定义的区域预算内制造模块的多个实例来完成。申请人在此独立地公开了本文所描述的每个单独的特征以及两个或更多个这样的特征的任何组合,使得这样的特征或组合能够基于本说明书整体地、根据本领域技术人员的公知常识被执行,而无论这样的特征或特征组合是否解决了本文所公开的任何问题。鉴于上文的描述,明显的是本领域技术人员可以在本发明的范围内进行各种修改。

权利要求:1.一种用于接收在物理地址空间中寻址的监听请求的相干性管理器,所述监听请求与使用虚拟地址空间可寻址的缓存存储器有关,所述缓存存储器具有多个相干缓存行,所述相干性管理器包括:反向转换模块,所述反向转换模块被配置为维持针对保持在所述缓存存储器中的每个相干缓存行的从物理地址到虚拟地址的映射;以及监听处理器,所述监听处理器被配置为:接收与物理地址有关的监听请求;响应于接收到的监听请求,确定所述物理地址是否在所述反向转换模块中被映射到虚拟地址;以及根据该确定来处理所述监听请求;其中,所述相干性管理器被配置为在确定所述反向转换模块不包括从所述物理地址到所述虚拟地址空间的映射时,使得在不访问所述缓存存储器的情况下发送对所述监听请求的响应。2.根据权利要求1所述的相干性管理器,其中,所述反向转换模块包括基于所述物理地址空间和所述虚拟地址空间之间的已知关系来根据所述物理地址计算所述虚拟地址的逻辑。3.根据权利要求1或2所述的相干性管理器,其中,所述反向转换模块包括反向转换数据结构,所述反向转换数据结构被配置为维持从所述物理地址空间到所述虚拟地址空间的映射。4.根据权利要求3所述的相干性管理器,其中,所述反向转换数据结构包括将所述物理地址空间中的物理地址链接到所述虚拟地址空间中的相应虚拟地址的目录。5.根据权利要求1或2所述的相干性管理器,其中,所述相干性管理器被配置为在确定所述反向转换模块包括从所述物理地址到所述虚拟地址空间的映射时,访问被配置为将与缓存行有关的状态信息存储在所述缓存存储器处的缓存行状态数据结构,并且使得根据所存储的状态信息来发送对所述监听请求的响应。6.根据权利要求5所述的相干性管理器,其中,在与所述缓存行有关的所述状态信息指示所述缓存行是下列项中的至少一项的情况下:不存在,处于无效状态正在经历溢出,以及正在进行写回或逐出处理,所述相干性管理器被配置为确定所述监听请求导致缓存未命中,并且使得对所述监听请求的相应响应在所述总线上被发送。7.根据权利要求5所述的相干性管理器,其中,在与所述缓存行有关的所述状态信息指示所述缓存行存在并且处于清洁状态的情况下,所述相干性管理器被配置为使得所述缓存行被逐出,并且所述缓存不执行将该缓存行处的数据写回主存储器,所述相干性管理器被配置为在不访问所述缓存的情况下处理所述监听请求。8.根据权利要求5所述的相干性管理器,其中,在与所述缓存行有关的所述状态信息指示所述缓存行存在并且处于肮脏状态的情况下,所述相干性管理器被配置为使得访问所述缓存以读取所述缓存行以用于将所述缓存行写回主存储器,并且使得从所述缓存中逐出所述缓存行。9.根据权利要求3所述的相干性管理器,其中,所述反向转换数据结构被配置为以页面粒度存储数据。10.根据权利要求5所述的相干性管理器,其中,所述缓存行状态数据结构被配置为以缓存行粒度存储所述状态信息。11.根据权利要求5所述的相干性管理器,其中,所述缓存行状态数据结构包括多个RAM实例,并且所述相干性管理器被配置为同时访问不止一个所述RAM实例。12.根据权利要求5所述的相干性管理器,其中,所述缓存行状态数据结构包括用于至少一个相干缓存行的条目,所述至少一个相干缓存行位于由所述反向转换数据结构映射的页面处。13.根据权利要求12所述的相干性管理器,其中,所述缓存行状态数据结构包括关于所述至少一个相干缓存行的多个状态位。14.根据权利要求1或2所述的相干性管理器,其中,所述监听处理器被配置为针对对主存储器的读取请求来监测耦合到所述相干性管理器的存储器总线,并且使得响应于监测到的读取请求来更新所述缓存行状态数据结构中的状态信息。15.根据权利要求1或2所述的相干性管理器,其中,所述监听处理器包括用于存储所接收的监听请求的缓冲器。16.根据权利要求15所述的相干性管理器,其中,所述监听处理器被配置为以与接收到所述监听请求的顺序不同的顺序来处理所述缓冲器上的监听请求。17.根据权利要求1或2所述的相干性管理器,其中,所述监听处理器包括用于下列项中的至少一项的控制逻辑:控制对所述缓存行状态数据结构的访问、访问所述缓存、向所述缓存发送命令、以及发布对监听请求的响应。18.一种用于处理在物理地址空间中寻址的监听请求的方法,所述监听请求与具有多个相干缓存行并且使用虚拟地址空间可寻址的缓存存储器有关,所述方法包括:接收与物理地址有关的监听请求;根据保持在所述缓存存储器中的每个相干缓存行的从物理地址到虚拟地址的映射,来确定所述物理地址是否被映射到虚拟地址;以及根据该确定来处理所述监听请求;其中,处理所述监听请求包括在确定所述物理地址未被映射到虚拟地址时,使得在不访问所述缓存存储器的情况下发送对所述监听请求的响应。19.一种计算机可读存储介质,在其上存储有集成电路的计算机可读描述,所述计算机可读描述在集成电路制造系统中被处理时,使得所述集成电路制造系统制造用于接收在物理地址空间中寻址的监听请求的相干性管理器,所述监听请求与使用虚拟地址空间可寻址的缓存存储器有关,所述缓存存储器具有多个相干缓存行,所述相干性管理器包括:反向转换模块,所述反向转换模块被配置为维持针对保持在所述缓存存储器中的每个相干缓存行的从物理地址到虚拟地址的映射;以及监听处理器,所述监听处理器被配置为:接收与物理地址有关的监听请求;响应于接收到的监听请求,确定所述物理地址是否在所述反向转换模块中被映射到虚拟地址;以及根据该确定来处理所述监听请求;其中,所述相干性管理器被配置为在确定所述反向转换模块不包括从所述物理地址到所述虚拟地址空间的映射时,使得在不访问所述缓存存储器的情况下发送对所述监听请求的响应。

百度查询: 畅想科技有限公司 相干性管理器

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。