使用虚拟地址的缓存访问转让专利

申请号 : CN201580070399.3

文献号 : CN107111455A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 古林达尔·S·索希亨吉希尔·允

申请人 : 威斯康星校友研究基金会

摘要 :

计算机架构提供一种存储器缓存,该存储器缓存直接从运行的进程通过虚拟地址而非通过物理地址进行访问。通过动态地跟踪同义词并且将映射至同一物理地址的有限数目的虚拟同义词连接到专门用于缓存访问的单个关键虚拟地址来处理由于多个虚拟地址映射至单个物理地址导致的歧义。

权利要求 :

1.一种与以物理地址进行存储的存储器一起使用的电子处理器架构,包括:

处理器;

存储器缓存;

缓存控制电路,其通过虚拟地址来缓存物理地址的存储器数据;

转换电路,用于在来自所述处理器的虚拟地址与物理地址之间进行转换;以及同义词跟踪电路,其从所述处理器中接收用于访问所述缓存的给定虚拟地址,并且进行以下操作:(1)确定所述给定虚拟地址是否是映射至所述缓存中的数据的同一给定物理存储器地址的另一虚拟地址的同义词;并且(2)当所述给定虚拟存储器地址是同义词时,使用所述另一虚拟地址作为所述存储器缓存的访问地址来访问所述存储器缓存。

2.根据权利要求1所述的电子处理器,其中,所述存储器缓存保持仅通过虚拟地址就能够访问的物理地址的数据。

3.根据权利要求1所述的电子处理器,其中,每个另一虚拟地址是作为多个虚拟地址的同义词而非另一关键虚拟地址的同义词的关键虚拟地址。

4.根据权利要求1所述的电子处理器,其中,当所述给定虚拟地址不是其它虚拟地址的同义词时,所述同义词跟踪使用所述给定虚拟存储器地址作为所述存储器缓存的访问地址来访问所述存储器缓存。

5.根据权利要求1所述的电子处理器,其中,所述同义词跟踪电路包括链接为同义词的虚拟地址的第一表,以确定给定虚拟地址是否是同义词。

6.根据权利要求5所述的电子处理器,其中,当所述给定虚拟地址在所述第一表中时,链接为同义词的虚拟地址的第一表提供链接至所述给定虚拟地址的虚拟地址作为所述另一虚拟地址。

7.根据权利要求6所述的电子处理器,其中,所述第一表还包括与链接的一组虚拟地址相关联的一组存储器访问权限,并且其中,当所述另一虚拟地址用作访问指令时,对所述缓存存储器的访问受所述第一表的权限控制。

8.根据权利要求5所述的电子处理器,其中,所述同义词跟踪电路包括所述第一表中的至少一些虚拟地址的压缩签名,所述压缩签名指示所述给定虚拟地址是否有可能在所述第一表中,并且其中,所述同义词跟踪电路首先检查所述压缩签名,并且仅当所述压缩签名指示所述给定虚拟地址有可能在所述第一表中时,所述同义词跟踪电路才检查所述第一表。

9.根据权利要求5所述的电子处理器,其中,所述同义词跟踪电路通过以下操作来响应于所述存储器缓存的缓存缺失:确定与所述给定虚拟地址相关联的物理地址,并将所确定的物理地址应用于链接物理地址与虚拟地址的第二表;并且当所确定的虚拟地址链接至所述第二表中的虚拟地址时,使用所述第二表的虚拟地址作为所述存储器缓存的访问地址。

10.根据权利要求9所述的电子处理器,其中,所述第二表还将链接的物理地址和虚拟地址与存储器访问权限相关联,当使用链接的物理地址和虚拟地址时,所述存储器访问权限控制对所述存储器的访问。

11.根据权利要求9所述的电子处理器,其中,所述缓存存储器的行保持到所述第二表的链接至对应虚拟地址的对应条目的索引,并且其中,所述同义词跟踪电路接收所述索引以识别所述第二表中的条目,以当所述缓存存储器的行被驱逐或无效时进行更新。

12.根据权利要求9所述的电子处理器,其中,只有所述第二表中的单个关键虚拟地址链接至给定物理地址。

13.根据权利要求12所述的电子处理器,其中,所述处理器是使用加载队列和存储队列的无序处理器,并且其中,所述加载队列和所述存储队列中的数据链接至关键虚拟地址。

14.根据权利要求9所述的电子处理器,其中,所述同义词跟踪电路使用转换后备缓冲器和页表将给定虚拟地址变换成物理地址。

15.根据权利要求9所述的电子处理器,其中,第二表还能够识别所述缓存存储器中的物理地址的第二表数据子集的每个物理地址,并且所述缓存控制电路能够使用所述第二表来识别登记在所述缓存存储器中的第二表的物理地址的部分。

16.根据权利要求9所述的电子处理器,其中,所述第二表提供与物理地址相关联的计数器,所述计数器指示登记在所述缓存中的物理地址的子集的数目。

17.一种将数据缓存在一类型的电子处理器计算机系统中的方法,所述电子处理器计算机系统包括至少一个处理器以及存储器缓存和通过虚拟地址缓存物理地址的存储器数据的缓存控制电路,所述处理器还包括:转换电路,用于在来自所述处理器的虚拟地址与物理地址之间进行转换;以及同义词跟踪电路,其接收来自所述处理器的给定虚拟地址以确定所述给定虚拟地址是否是映射至所述缓存中的数据的同一给定物理存储器地址的另一虚拟地址的同义词,并且当给定虚拟存储器地址是同义词时,所述同义词跟踪电路使用所述另一虚拟地址作为所述存储器缓存的访问地址来访问所述存储器缓存,所述方法包括:(1)使用虚拟地址将数据保存在所述存储器缓存中,其中,所述缓存保持所述虚拟地址的至少一部分;以及(2)通过以下方式使用给定虚拟地址来访问所述存储器缓存的数据:首先确定所述给定虚拟地址是否具有用于访问所述存储器缓存的指定同义词虚拟地址,并且如果所述给定虚拟地址具有用于访问所述存储器缓存的指定同义词虚拟地址则使用所述指定同义词虚拟地址来访问所述存储器缓存。

18.根据权利要求17所述的方法,其中,使用虚拟地址将数据保存在所述存储器缓存中的步骤允许仅使用虚拟地址来访问所保存的数据。

19.根据权利要求17所述的方法,其中,指定虚拟地址是多个虚拟地址的同义词而非另一关键虚拟地址的同义词。

说明书 :

使用虚拟地址的缓存访问

[0001] 相关申请的交叉引用
[0002] 本申请要求2014年12月26日提交的美国临时申请62/096,962以及2014年12月29日提交的美国临时申请62/097,342的权益,并且其全部内容通过引用被合并到本文中。

背景技术

[0003] 本发明涉及计算机架构,并且具体地涉及提供允许通过虚拟地址而非物理地址访问缓存内容的存储器缓存的改进的计算机架构。
[0004] 缓存存储器用于通过靠近处理器提供相对紧凑的快速访问的存储器结构来使处理器访问存储器数据所需的时间最小化。主存储器的部分被加载到缓存存储器中,期望时间上接近的存储器访问会倾向于聚集在加载部分(引用位置)中,从而允许缓存存储器一旦被加载则在需要重新加载之前服务由处理器进行的多个存储器访问。通常,可以使用多级缓存(例如L1、L2、L3)来优化缓存结构中固有的快速访问与有限存储之间的折衷。
[0005] 为了访问缓存存储器中的数据,数据的第一组地址位的一组位——通常被称为索引位——用于索引到缓存中并在索引条目处选择一行。然后,将第二组地址位的一组位(通常被称为标签位)与选定条目对应的标签位组进行比较,并且如果第二组地址位的该组位与选定组的标签位匹配,则表明命中。
[0006] 在现代处理器上运行的程序通常使用与存储器中的数据的物理地址不同的虚拟地址来访问(读或写)存储器。虚拟地址的使用通过以下大大简化了运行多个程序:允许它们查看不受其他进程分配影响的连续内存空间;允许物理内存只分配给现用虚拟地址;并且如本领域已知的,防止一个进程的内存空间被其它进程的操作破坏。
[0007] 虚拟地址空间的使用尽管有其优点,但是通过要求从由程序使用的虚拟地址空间到计算机存储器所需要的物理地址空间的转换增加了访问存储器的延迟。通常,这种转换借助于具有将每个虚拟地址空间交叉引用到物理地址空间的条目的页表来完成。通常,页表条目也可以包含相应的虚拟页面中的数据的访问权限。页表可以通过转换后备缓冲器(TLB)来扩大,该转换后备缓冲器(TLB)用于缓存来自页表的最近访问的条目,以加速转换地址并检查必需的访问权限的进程。可以通过采用快速的高度相关联的结构来针对低访问延迟和低缺失率对TLB进行优化。
[0008] 在具有虚拟存储器的系统中,缓存存储器虽然通常通过物理存储器地址来访问,也就是说,用于访问缓存中的数据的第一组地址位和第二组地址位(例如索引和标签)是同一物理地址的两部分。虽然使用TLB和页表的地址转换的延迟对于主存储器而言能够容忍,但是这与旨在提供频繁和快速访问的缓存存储器一起使用时更加繁重,其中,访问会由于地址转换而显著地减慢。此外,使用高度相关联的TLB的转换将耗能多。
[0009] 理想地,可以使用来自程序的虚拟地址来直接访问缓存,也就是说,用于访问缓存中的数据的第一组位和第二组位(例如索引和标签)是同一虚拟地址的两部分。使用虚拟地址访问缓存的数据可以避免由于TLB查找引起的延迟和能量开销;然而,这由于同义词的可能性而复杂,同义词是映射至同一物理地址的一组不同的虚拟地址。这种混叠(或重叠)对于有效地管理(物理或主)存储器中的数据例如具有不同虚拟地址空间的跨不同进程的共享信息是可行和期望的。在这种情况下,使用缓存的虚拟编址可以许可多个不同的缓存条目映射至同一物理地址(同义词虚拟地址),即,在不同的虚拟地址下保持相同的数据。允许重复减少了缓存容量。这也呈现了它们之间的一致性问题。例如,如果一个进程使用第一缓存位置来更新与公共物理地址相关联的数据,则第二进程不能使用第二缓存位置来读取公共物理地址的最新值。
[0010] 在使用虚拟地址进行缓存访问的缓存中固有的这个问题的一个解决方案是在物理地址域中禁止虚拟地址混叠(或重叠)。例如,可以防止来自单个物理地址的数据以不同的虚拟地址而被缓存在缓存中。该解决方案大大降低了缓存利用数据的引用位置的能力。类似地,可以防止来自同一物理页面的数据被以不同的虚拟地址缓存在缓存中,特别是如果写入数据的话。可替代地,可以使用消除同义词本身的出现的单个全局虚拟地址空间。这些解决方案中的每一个都对软件提出了很高的要求,这极大地限制了其实用性。
[0011] 另一种常用的解决方案是现有技术中被称为虚拟索引物理标签(VIPT)缓存的技术方案。在此,用于索引到缓存中以选择条目的第一组位是虚拟地址的一部分,而用于与选定条目的标签位比较的第二组位是与该虚拟地址对应的物理地址的一部分。该解决方案利用了虚拟地址的一些低阶位(页面偏移位(page offset bit))不会由于地址转换而变化的观察。因此,可以使用虚拟地址的这些低阶位(其与对应的物理地址的低位相同)索引到缓存中并开始访问驻留在对应条目中的数据和标签位。并行访问TLB以获取物理地址。当这两个操作完成时,将从TLB访问获取的物理地址位与存储在缓存标签中的物理地址位进行比较,如果它们匹配则表明命中。由于与缓存访问并行地而不是在缓存访问之前访问TLB,所以这种方法会降低缓存访问的延迟。然而,仍然消耗了TLB访问能量,因此无法获得使用虚拟地址访问缓存的能量优势。此外,对用于索引缓存的位数的限制(这些位不应由于地址转换而变化)会限制缓存的组织,潜在要求比期望实现能量效率的关联度较高的关联度。
[0012] 期望具有可以利用虚拟地址进行访问的缓存,使得用于索引到缓存中并选择条目的第一地址和用于与选定标签位比较并表明命中的第二地址是同一虚拟地址的两部分。因此,可以仅使用虚拟地址来完成在缓存中命中的数据访问,而不需要访问TLB或执行虚拟地址到物理地址的转换。与使用物理地址来完成缓存访问的设计相比,这样的缓存将具有显著的访问延迟和/或能量消耗优势。此外,还希望这样的缓存的操作对软件透明,并且对软件没有要求以确保其正确操作。

发明内容

[0013] 发明人已经认识到,在很多重要的计算任务中,虽然在程序的持续时间上存在同义词,但是在与数据驻留在缓存中的时间相比的较短时间段内:(1)存在非常少的映射至同一物理地址的同义词,并且(2)对缓存的访问中的很少是对同义词的数据(to data with synoyms)。本发明通过以给定的虚拟地址直接访问缓存并然后在缓存访问之前检测同义词虚拟地址并将同义词虚拟地址有效地转换成选定的关键虚拟地址来利用这些观察。跟踪具有适度大小的数据结构的同义词是实用的,因为在缓存数据的生命周期内,同义词相对稀缺。
[0014] 具体地,本发明提供一种与以物理地址进行存储的存储器一起使用的电子处理器架构。该架构包括处理器、存储器缓存、通过虚拟地址将物理地址的存储器数据缓存在存储器缓存中的缓存控制电路以及用于在来自处理器的虚拟地址与物理地址之间进行转换的转换电路。另外,该架构包括同义词跟踪电路,同义词跟踪电路接收来自处理器的访问缓存的给定虚拟地址,并且:(1)确定该给定虚拟地址是否是映射至缓存中的数据的同一给定物理存储器地址的另一虚拟地址的同义词;并且(2)当该给定虚拟地址是同义词时,使用另一虚拟地址作为存储器缓存的访问地址来访问存储器缓存。
[0015] 因此,本发明的至少一个实施方式的特征是:通过跟踪同义词并使用单个指定(关键)虚拟地址进行所有缓存请求,适应(accommodate)使用虚拟地址访问的缓存中的虚拟地址的可能的混叠或重叠。
[0016] 当给定虚拟地址不是其它虚拟地址的同义词时,同义词跟踪可以使用给定虚拟地址作为存储器缓存的访问地址来访问存储器缓存。
[0017] 因此,本发明的至少一个实施方式的特征是:许可在没有同义词的主导(dominant)情况下,使用虚拟存储器地址来较快速地直接访问缓存。
[0018] 缓存控制器可以与同义词跟踪电路确定给定虚拟地址是否是其它虚拟地址的同义词并行地准备使用给定虚拟地址来访问存储器缓存。
[0019] 因此,本发明的至少一个实施方式的特征是:当没有同义词时,减少伴随同义词跟踪的延迟。
[0020] 同义词跟踪电路可以包括为同义词的虚拟地址的第一表(称为ART),以确定给定虚拟地址是否是映射至数据的同一物理存储器地址的其它虚拟地址的同义词。
[0021] 因此,本发明的至少一个实施方式的特征是:提供一种在短时间范围内监测与预期小数目的现用同义词一致的同义词的简单且简洁的方法。
[0022] 同义词跟踪电路可以包括第一表的压缩签名,第一表的压缩签名指示给定虚拟地址是否有可能在第一表中,并且同义词跟踪电路可以首先检查压缩签名并且可以仅在压缩签名指示给定虚拟地址有可能在第一表中时才检查第一表。
[0023] 因此,本发明的至少一个实施方式的特征是:在没有同义词的常见情况下,快速完成对第一表的审查。
[0024] 同义词跟踪电路可以通过以下操作来响应于存储器缓存的缓存缺失:确定与给定虚拟地址相关联的物理地址,并将所确定的物理地址应用于链接物理地址与指定(关键)虚拟地址的第二表;并且当所确定的物理地址链接至第二表中的(关键)虚拟地址时,使用第二表的虚拟地址作为存储器缓存的访问地址。
[0025] 因此,本发明的至少一个实施方式的特征是:在同义词不通过虚拟地址链接至第一表时,也许可通过公共物理地址来识别“隐藏”的同义词。
[0026] 同义词跟踪电路可以使用转换后备缓冲器和页表来将访问地址变换成物理地址。
[0027] 因此,本发明的至少一个实施方式的特征是:利用现有的转换电路(例如TLB)来确定同义词。
[0028] 第一表、第二表和缓存行可以包括链接至虚拟地址的存储器访问权限。
[0029] 因此,本发明的至少一个实施方式的特征是:如本发明可行的,处理通过虚拟地址访问的缓存的存储器访问权限,而不需要咨询页表信息。
[0030] 电子处理器可以是使用加载队列和存储队列的无序处理器,并且加载队列和存储队列可以存储链接至关键虚拟地址的数据。
[0031] 因此,本发明的至少一个实施方式的特征是:许可在加载队列和存储队列中使用虚拟地址,而不会在程序执行中出现潜在错误的风险。缓存存储器的行可以保持到第二表的链接至对应虚拟地址的对应的条目的索引,并且同义词跟踪电路可以接收该索引以在驱逐缓存存储器的行时更新第二表中的条目。
[0032] 因此,本发明的至少一个实施方式的特征是:消除将虚拟地址转换成物理地址的需要,以便协调第二表中的条目的更新。
[0033] 这些特定的目的和优点可以仅适用于落入权利要求中的一些实施方式,因此不限定本发明的范围。

附图说明

[0034] 图1是根据本发明的利用响应于虚拟地址的缓存的计算机架构的框图,示出了利用缓存控制器、转换后备缓冲器和同义词跟踪电路的存储器管理单元;
[0035] 图2是响应于存储器访问请求并具有虚拟地址的存储器管理单元的操作的流程图;
[0036] 图3是在同义词跟踪电路中使用的同义词签名的图;
[0037] 图4是在同义词跟踪电路中使用的地址重映射表的图;
[0038] 图5是在同义词跟踪电路中使用的现用同义词检测表的图;
[0039] 图6是缓存中的单个缓存行条目的图;以及
[0040] 图7a至图7d示出了在流水线处理器中分配对同义词跟踪电路和地址重映射表的访问的多个实施方式。

具体实施方式

[0041] 现在参照图1,计算机处理系统10可以提供一个或更多个处理器系统12,一个或更多个处理器系统12与由下面将描述的各种元件组成的存储器系统16以及诸如网络、终端等的其他设备15进行通信。
[0042] 每个处理器系统12可以包括处理器13,处理器13通过存储器管理单元(MMU)14与存储器系统16以及具体地与一个或更多个缓存18例如L1缓存18a和L2缓存18b进行通信。处理器系统12可以具有低级缓存(例如L3缓存18c),其又与包括随机存取存储器磁盘驱动器等的物理存储器20进行通信。处理器13可以提供以下能力:执行标准的计算机指令,包括算术和逻辑运算、存储器访问操作以及包括条件分支等的流控制操作。处理器13可以包括下面将描述的提供本领域中通常理解的功能的加载队列17和存储队列19。
[0043] MMU 14可以包括:缓存控制器22,其提供对物理存储器20的缓存18的更新,包括根据本领域中通常理解的技术来驱逐和加载缓存18的行。如下面将更详细地论述的,MMU 14将数据存储在缓存18a中,使得数据可以通过虚拟地址而非物理地址被访问。可以将数据存储在例如其他缓存18b和18c中,使得数据可以通过虚拟地址或者通过物理地址被访问。在这一点上,缓存控制器22可以与能够确定从虚拟地址Vb的虚拟地址空间到物理存储器20的物理地址空间的映射的转换后备缓冲器(TLB)26进行通信以提供物理地址Pb。如果在缓存18处存在缓存缺失,则该物理地址Pb将最终用于通过线30访问物理存储器20。在下面的论述中,虚拟地址(例如Vb)将用于指以下两者:唯一地识别存储数据必要的整个虚拟地址;以及用于索引诸如缓存18的结构的虚拟地址的子集。该特定用途将根据上下文而明显。
[0044] 如本领域将会理解的,TLB 26给缓存提供虚拟地址空间与物理地址空间之间的最新转换。如果在TLB 26中没有找到特定虚拟地址Vb的映射,则缓存控制器22可以咨询一个或更多个页表28,并且通过进行“页面行走(page walk)”,可以获得必要的转换。访问TLB 26或页表28耗费时间和能量,并且期望避免访问TLB 26或页表28。页表28可以部分地存储在缓存18中以及部分地存储在通常由标记20、18的虚线框指示的物理存储器20中。
[0045] MMU 14还包括同义词电路35,在一个实施方式中,同义词电路35可以包括现用同义词签名(SS)32、提供地址重映射表(ART)34的第一表以及提供现用同义词检测表(ASDT)36的第二表,将在下面详细地论述这些。
[0046] 使用虚拟地址的缓存访问的概述
[0047] MMU 14通过地址线24接收来自处理器13的存储器访问请求,该请求包括要访问的数据的虚拟地址(Vb)。这些请求可以被发送至同义词电路35的SS 32和ART 34,SS 32和ART 34确定Vb实际上是否是其它现用虚拟地址(关键虚拟地址)的现用同义词,该现用虚拟地址正用于访问缓存18中的同一数据。术语“现用(active)”是指当前映射至缓存18中的数据的虚拟地址。
[0048] 如果SS 32指示没有现用同义词,则在期望虚拟地址Vb是关键虚拟地址的情况下,使用虚拟地址Vb来直接访问缓存18。
[0049] 另一方面,如果SS 32指示Vb可以是现用同义词,则将虚拟地址Vb传递到地址重映射表(ART)34,这确认该关系并且识别Vb是其同义词的关键虚拟地址(例如Va)。
[0050] 在识别现用关键虚拟地址时,替代地使用Va来访问存储器缓存18。
[0051] 在包括Vb是其它现用虚拟地址(关键虚拟地址)的同义词或Vb是关键虚拟地址的情况的大多数情况下,上述过程允许处理器13使用虚拟地址直接访问缓存18,而不由TLB 26进行处理或者不需要贯穿页表28行走(walk)。
[0052] 如果在存储器缓存18处存在缓存缺失,则缓存控制器22参照ASDT36来确定是否存在当前未被SS 32或ART 34识别但是通过将给定虚拟地址(Vb)与映射至同一物理地址Px的已知现用关键虚拟地址比较而能够检测到的Vb的未知同义词。如果检测到这样的隐藏的同义词并且必要的缓存行71经ASDT 36可用,则使用关键虚拟地址Va再次访问存储器缓存18。否则,将访问提交到缓存的其他级或物理存储器20,并且当完成该访问时,将所获取的数据存储在索引至虚拟地址Va的缓存18中。在任一情况下,根据需要更新SS 32、ART 34和ASDT 
36。
[0053] 虚拟缓存操作的详细论述
[0054] 参照图2,MMU 14可以接收用于由处理框40指示的存储器访问的给定虚拟地址Vb。在优选实施方式中,经判定框52针对SS 32检查该给定虚拟地址Vb。
[0055] 参照图3,在接收到给定虚拟地址Vb时,SS 32例如通过使用散列编码器44对给定虚拟地址Vb进行散列来对给定虚拟地址Vb进行处理,以生成指向SS 32中的位向量48的特定位46的指针。如果Vb很有可能是现用同义词虚拟地址,则将对指向的位46进行设置。这指示在ART 34中很有可能存在该给定虚拟地址Vb的条目。散列索引非常快,但仅提供ART 34成功的可能性,而不指示要求审查ART 34的同义词,这将在下面论述。
[0056] 在SS 32中,位向量48的每个位46可以与指示ART 34中的相关联的条目(或ART 34中的映射至该位46的虚拟地址)的数目的位计数器50相关联。计数器50的该计数器值允许更新位向量48以使不再是ART 34中的有效同义词数据的散列的位46复位。在散列编码器44将多个同义词映射至同一位46的情况下,在从ART 34中驱逐出所有同义词之前,计数器50还防止位46复位。
[0057] 在判定框52处,如果SS 32中的相关位46指示Vb不是现用同义词虚拟地址,则使用Vb在如箭头41所指示的处理框42处直接访问缓存18。
[0058] 在判定框52处,如果SS 32中的相关位46指示Vb是同义词虚拟地址的可能性,则MMU 14行进到处理框54,并且ART 34用于识别同义词虚拟地址Vb所关联的关键虚拟地址。
[0059] 现在还参照图4,ART 34可以提供被表示为排(row)的多个条目,每个对应于通过(图1的)地址线24接收到的虚拟地址将会与其比较的同义词虚拟地址56。任何“已知的”现用同义词虚拟地址56(例如Vb)将在ART 34中被列出,并且将会映射至也在ART 34中的单个关键虚拟地址58(例如Va)。ART 34还可以保持存储器访问“权限”59,操作以控制是否可以读取或写入特定存储器地址(例如Vb),并且是本领域中已知的存储器管理标准。
[0060] 当将虚拟地址Vb应用于ART 34时,评估ART 34的权限59以确认存储器访问适当。如本领域中所理解的,如果不适当,则生成错误,导致将该请求处理为存储器访问冲突异常(violation exception)。
[0061] 如果权限59允许期望的访问,则在判定框61处,根据ART 34中的同义词虚拟地址56中之一确定是否存在虚拟地址Vb与同义词Va的匹配。如果存在这样的匹配,则经箭头55将对应的关键虚拟地址58(例如Va)直接应用于缓存18。
[0062] 如果在决策框61处在ART 34中不存在与虚拟地址Vb匹配的同义词,则经箭头57将虚拟地址Vb直接提供给缓存18。
[0063] 现在参照图6,缓存18中的每个缓存行71可以提供该缓存行71的数据65所关联的虚拟地址63的一组标签位。也就是说,与虚拟地索引但物理地标记并且对于正确运行要求TLB访问的缓存结构相反,虚拟地索引和虚拟地标记缓存18。缓存行71还可以为ASDT 36提供权限数据62和条目识别索引值69,这将在下面论述。
[0064] 在完成处理框42的缓存访问处理之后,如在判定框60处所检测到的,存在成功的缓存命中(无缓存缺失)。在于ART 34中发现同义词的情况下,鉴于(in favor of)ART 34中的权限59忽略缓存行71中的权限数据62。在在ART 34中没有发现同义词的情况下,使用权限数据62来确定是否应该允许访问。如本领域中所理解的,如果在这种情况下访问权限不许可期望的访问,则生成错误,导致将请求处理为存储器访问冲突异常。否则,如处理框64所指示,访问数据65并且完成访问过程。
[0065] 如果在判定框60处检测到缓存缺失,意味着在缓存18中没有条目被索引至Vb(或Va),则缓存控制器22行进到处理框67。在处理框67处,将给定虚拟地址Vb应用于TLB 26(以及可能地应用于页表28),以获得与该给定虚拟地址Vb相关联的对应的物理地址(例如Pb)。然后,将该物理地址Pb应用于ASDT 36以查找“隐藏”的同义词。
[0066] 现在还参照图5,ASDT 36可以提供以下逻辑表,该逻辑表具有已知在缓存18中的与现用物理地址68(Px)对应的被表示为排的多个条目。该物理地址68的单个关键虚拟地址58也在ASDT 36的每一排中,并由此链接至物理地址Px。ASDT 36还可以包括类似于上述的提供对与关键虚拟地址58相关联的数据的访问权限的权限73。
[0067] ASDT 36的每一排还可以包括位向量72,位向量72与每个物理地址Px相关联地指示缓存器18中的物理地址的特定行。因此,位向量72在缓存18中的数据的识别中提供行级分辨率。例如,在物理地址68为页面(例如四千字节)的情况下,当在缓存18中登记页面的对应行(64字节)时,将对位向量72的每个位74进行设置。
[0068] 计数器76可以提供位向量72中设置的位74的数目的和,使得当缓存18中的所有行已经被驱逐并且计数器的值对于特定物理地址Px为零时,可以使ASDT 36的排的条目无效。因此,当下面将描述的更新ASDT36时,计数器76的作用就像有效位,当ASDT 36的排不再有用时,该有效位可以用于驱逐ASDT 36的排。ASDT 36还可以包括现用同义词检测位79,这将在下面描述。
[0069] 当不存在必须存储的新行的可用条目时,还必须驱逐ASDT 36的有效行。页面信息变化(例如物理地址68或权限59的变化)或缓存18的刷新(flushing)也可以以其他方式触发ASDT 36的有效行的无效,要求缓存18中的所有对应的行必须被驱逐。ART 34和SS 32中的相关现用同义词也必须被驱逐。可以通过使用上面关于ASDT 36论述的现用同义词检测位79来辅助该处理。在替代实施方式中,此时可以完全刷新ART/SS。
[0070] 在判定框78处,如果来自处理框67的物理地址Pb当应用于ASDT 36时与和缓存18中的数据相关联的现用物理地址68中之一不匹配,则将会需要将新数据添加至缓存18,并且经处理框80更新缓存18以及ASDT36,这将在下面进一步描述。
[0071] 另一方面,在判定框78中,如果在ASDT 36中找到物理地址Pb,则确定给定虚拟地址Vb是否与ASDT 36中的与Pb相关联的关键虚拟地址58相同。
[0072] 如果在判定框84处给定虚拟地址Vb在ASDT 36中,则必须假设缓存缺失是由物理地址Pb的适当行在缓存18中的故障引起的。这需要将新数据添加至缓存18,并且经处理框80更新缓存18以及ASDT 36。
[0073] 另一方面,如果在判定框84处给定虚拟地址Vb不在ASDT 36中,则通过在处理框85处适当地更新ART 34和SS 32来记录Vb作为ASDT36中的关键虚拟地址(例如Ve)的同义词的角色。此时,可以设置ASDT36中的现用同义词检测位79。然后,检查ASDT 36以查看给定虚拟地址Vb所需的必要缓存行71是否在存储器缓存18中(例如通过检查在ASDT36中是否设置了位向量72的相应位74)。如果是,如线89所指示,可以由处理框42使用在ASDT 36中发现的关键虚拟地址Ve提供对缓存18的访问。
[0074] 如果在判定框88处所需要的行不在ASDT 36中,则经处理框80更新缓存18和ASDT 36。
[0075] 在处理框80处,允许缓存控制器22更新缓存18,并且如果该更新成功则适当地更新ASDT 36。当ASDT 36在任何虚拟地址下不具有所期望的数据(在判定框78处为“否”)时,该更新将与该更新(其现在是关键虚拟地址58)相关联的第一列中的物理地址Pb和第二列中的给定虚拟地址Vb添加至ASDT 36,以及设置位向量72的适当的位74并使计数器76递增。可以从能够从给定虚拟地址Vb导出的偏移值推导适当的位74。当ASDT 36具有给定物理地址(Pb)的页面的条目但不包含必要的数据线(在判定框84处为“是”)时,设置缓存18中新登记的数据的位向量72的适当的位74并使计数器76递增。当ASDT 36具有给定物理地址(Pb)但是链接至不同的虚拟地址(Ve)的页面的条目并且不具有必要的数据线(在判定框88处为“否”)时,则设置缓存18中新登记的数据的位向量72的适当的位74并使计数器76递增,并且适当地调整ART 34和SS 32以反映该新的同义词。
[0076] 可以通过查看ASDT 36来确定ASDT 36的受害条目,以选择与ASDT36的无效排(即计数器76等于零)或具有非零计数器值的排相关联的物理地址68。在前一种情况下,计数器为零的无效排指示不存在仍然依赖在缓存18中的有效行。在后一种情况下,可以使用本领域已知的任何数目的各种政策来执行确定要被驱逐的受害条目。当具有非零计数器值的条目被选择从ASDT中驱逐时,该条目跟踪的仍然驻留在缓存中的行(其可以由位向量72的相应位74中的非零值指示)首先从缓存器18中被驱逐,由此使计数器值降至零,从而允许ASDT条目不困难地被驱逐。当ASDT中的条目被驱逐时,ART和SS中的相关条目也需要根据需要被无效和/或更新。
[0077] 通常,缓存18与普通缓存大致相同,但是通过虚拟地址来访问。虚拟地址可以与本领域中通常理解的地址空间标识符(ASID)组合以解决同义词问题。
[0078] 现在参照图1、图2、图5和图6,当必须更新缓存18并且驱逐缓存行71时,必须识别与被驱逐的行对应的ASDT 36条目,以便可以更新位向量72中的相应位74,并使相应的计数器76递减。识别ASDT 36中的相应行可能由于由虚拟地址58识别要被驱逐的行同时使ASDT最容易通过物理地址68访问的事实而变得复杂。因此,缓存行71可以包括ASDT索引值69,从而允许快速识别ASDT 36中的要更新的必要条目。在一个实施方式中,也可以将ASDT索引值69存储在用于处理标准计算机架构中的缓存缺失请求的缺失状态处理寄存器(MSHR)中,使得可以更新被放置在缓存18中的与针对缓存缺失返回的缓存行对应的ASDT 36条目。
[0079] 与其他处理器的缓存相干
[0080] 参照图1,其他处理器系统12可以将数据写入其缓存中,这使给定处理器系统12a的缓存中的缓存行71无效。这将会生成通常使用物理地址描述要被无效的数据的无效信息。识别要无效的必要的缓存行71的一种方法是将无效消息的物理地址应用于ASDT 36以获得关键虚拟地址58,并使用该关键虚拟地址58来识别必要的缓存行71。在除了无效消息之外还存在其他类型的相干事件的实施方式中,可以采用类似的过程来查询ASDT 36以及识别必要的缓存行71。本发明通常在L1缓存18a上得到最大的利用,L2缓存和L1缓存之间的相干很少,从而使该开销最小化。
[0081] 加载队列和存储队列
[0082] 现在参照图1,在无序处理器中使用加载队列17和存储队列19来管理存储器读取和写入。如果稍后的加载由于同义词而无法识别匹配的存储,则对于存储队列19使用虚拟地址会产生问题,反之亦然。在这种情况下,可以从缓存18返回过期数据。类似地,当缓存18中存在基于相干的无效或驱逐并且针对该驱逐的数据已经(推测性地)进行加载时,对于加载队列使用虚拟地址会产生问题。本发明可以通过借助于关键虚拟地址58而非同义词识别加载队列17和存储队列19中的数据来解决这个问题。当(推测性地)执行加载或存储时,其关键虚拟地址58被识别并保存在加载或存储队列中。因此,利用同义词(而非关键虚拟地址58)使用加载队列17和存储队列19进行访问导致缓存18中的缓存缺失,从而最终导致通过处理框54的ART 34查找(或通过处理框84的ASDT 36查找)利用关键虚拟地址58重新执行操作(加载或存储)。
[0083] 可以通过将较小的存储保持在单独的队列中直到解决了TLB缺失为止来适当地解决存储队列19中的存储的TLB缺失。一个替代方案是从违规存储重新启动程序,以有效地延迟存储指令从存储队列的释放。
[0084] 大页面尺寸
[0085] 对于大页面尺寸,ASDT 36的位向量72可能变得笨拙。在这种情况下,可以消除位向量72,而是贯穿缓存器18的行“行走”,以从与要从ASDT 36驱逐的期望行相关的给定页面中搜索行。可以通过优选地从与小页面而非大页面相关联的ASDT 36行驱逐,尤其是如果需要驱逐计数器76为非零值的条目,来避免此昂贵的操作。通常,大页面的驱逐也会是不太可能的事件。
[0086] SS和ART的访问
[0087] 现在参照图7a至图7d,可以以各种方式实现对流水线处理器中的SS 32和ART 34的访问。如图6a所指示,可以在地址生成之后但消除歧义之前发生对SS 32和ART 34的访问。这方法实现了使用虚拟缓存的大部分功率效率优势,但并未充分利用潜在的延迟优势。
[0088] 如图6b所示,在替代方案中,在消除歧义阶段期间可以并行访问SS32和ART 34。消除歧义需要通过在ART 34中命中的关键虚拟地址58来完成,尽管它们是罕见的。这可能增加功耗,但会降低延迟。
[0089] 如图6c所示,可以在基于基址(或段)寄存器的地址生成之前发生对SS 32的访问,并且可以在地址生成之后和消除歧义之前发生对ART 34的访问。这方法可以应用于指令和数据缓存两者,并且获得虚拟缓存可能的大部分能量和延迟优势。
[0090] 可替代地,如图6d所示,如果地址生成是多步骤过程,则可以在地址生成的中间步骤之后但在地址生成完成之前访问SS 32。
[0091] 优化
[0092] 可以通过利用连续的引用通常在同一页(特别是对于指令)的事实来减少对ART 34的访问。在一个实施方式中,最后的LVA(LLVA)寄存器100(图4所示)可以与维持被访问的最后一个关键虚拟地址58的ART34相关联。当被访问的下一虚拟地址与LLVA 100中所包含的虚拟地址相同时,不需要访问ART 34,并且可以跳过图2的处理框54而直接使用LLVA 100中的该值。
[0093] 每个进程可以与不同的虚拟地址存储器空间相关联,虚拟地址存储器空间由用户和内核空间组成。内核空间跨不同的进程被共享,因此访问内核空间可以被视为同义词,因为虽然内核空间中被访问的虚拟地址相同,但是不同的进程具有不同的ASID。当通过多个进程以时间接近的方式访问内核空间时,这可以在ART 34中创建多个条目。为了避免相关联的开销,一个实施方式可以使用ASID到仅用于访问内核空间的单个唯一值的运行时间重映射。这种访问的识别基于访问具有与内核访问相关联的地址范围的现有知识。例如,如果内核空间(或操作系统)位于地址空间的上半部分,则该重映射可以仅查看最高阶地址位来触发重映射过程。
[0094] 对于上述所有实施方式,应当注意,上述结构可以完全以硬件来实现,以提供与缓存数据传输的必要的高速一致的高性能。
[0095] 虽然上述描述已经集中于L1缓存上,但是应当理解,这些原理可以扩展到其他缓存,这有利于减少存储器访问延迟。
[0096] 本发明设想,包括ART 34、ASDT 36和缓存行71的每个数据存储结构可以将虚拟地址与地址空间标识符(ASID)一起存储,地址空间标识符(ASID)唯一地识别每个虚拟地址空间并因此有效地成为虚拟地址的一部分。
[0097] 在一个实施方式中,鉴于使用同义词Vb直接访问缓存18并且期望如果同义词Vb不是关键虚拟地址,则将产生缓存缺失并且在缓存缺失之后经处理框60访问ASDT 36来解决的适当的关键同义词,可以消除SS 32和ART 34。
[0098] 根据上面的描述可以理解,提供由同义词跟踪电路35采用的数据的SS 32、ART 34和ASDT 36的数据存储功能以及同义词跟踪电路35本身可以以各种方式被分布在计算机处理器系统10的电路或处理器间电路之间。具体地,SS 32、ART 34和ASDT 36的数据可以自由地存储在各种不同位置,包括存储在缓存18本身中。在后一种情况下,物理缓存应被理解为具有常规缓存部件和同义词跟踪部件,每个部件可以是单独的权利要求元素的主题。
[0099] 某些术语在本文中仅用于参考,因此不旨在限制。例如,诸如“上”、“下”、“之上”和“之下”的术语是指参考的附图中的方向。术语诸如“前”、“后”、“后面”、“底”和“侧”描述了通过参考文本和描述正在讨论的部件的相关联的图而清楚的一致任意的参考系中的部件的部分的取向。这样的术语可以包括上面具体提及的词、其衍生词和类似的导入词。类似地,除非上下文清楚地指示以外,否则术语“第一”、“第二”以及涉及结构的其他这样的数字术语并不意味着序列或顺序。
[0100] 当介绍本公开内容的元件或特征以及示例性实施方式时,冠词“一”、“一个”、“该”和“所述”旨在表示存在一个或更多个这样的元件或特征。术语“包括”、“包含”和“具有”旨在是包容性的,并且意味着除了具体指出的那些元件或特征之外还可以存在另外的元件或特征。还应当理解,除非特别地被标识为执行顺序以外,否则本文所述的方法步骤、处理和操作不应被解释为必须要求它们以所讨论或示出的特定顺序执行。还应当理解,可以采用另外的或替代的步骤。
[0101] 提及“处理器”应当理解为包括一个或更多个微处理器,其可以在独立的和/或(一个或多个)分布式环境中进行通信,并且因此可以被配置成经由有线或无线通信与其他处理器进行通信,其中这样的一个或更多个处理器可以被配置成在可以是相似或不同的设备的一个或更多个处理器控制的设备上进行操作。还应当理解,处理器可以是通用处理器、处理核、多线程处理器的上下文、图形处理单元、专用处理器或如本领域所理解的执行访问存储器的操作的任何其他形式的处理器。此外,除非另有说明,提及存储器可以包括一个或更多个处理器可读和可访问的在处理器控制的设备内部、在处理器控制的设备外部以及可以经由有线或无线网络访问的存储器元件和/或部件。
[0102] 另外,应当理解,所表示的数据结构,包括表和签名,旨在提供数据的逻辑描述,并且所公开的发明应被认为包括也提供所指示的功能的数据的其他物理布置。
[0103] 本文所使用的术语“索引”、“索引的”等应当被理解成通常指代使用值以图书索引的方式定位和访问与该值有关的信息的过程,而不意在被限于缓存存储器的背景下的索引的技术含义。
[0104] 具体意在本发明不限于本文包含的实施方式和例示,并且权利要求应被理解为包括这些实施方式的修改形式,包括实施方式的部分以及落入权利要求的范围内的不同实施方式的元件的组合。本文所描述的所有出版物,包括专利和非专利出版物,其全部内容通过引用并入本文中。