CN104272279A - 具有缓存和转换后备缓冲器的数据处理装置 - Google Patents
具有缓存和转换后备缓冲器的数据处理装置 Download PDFInfo
- Publication number
- CN104272279A CN104272279A CN201380023344.8A CN201380023344A CN104272279A CN 104272279 A CN104272279 A CN 104272279A CN 201380023344 A CN201380023344 A CN 201380023344A CN 104272279 A CN104272279 A CN 104272279A
- Authority
- CN
- China
- Prior art keywords
- access
- data
- request
- road
- tlb
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1054—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently physically addressed
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1028—Power efficiency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/608—Details relating to cache mapping
- G06F2212/6082—Way prediction in set-associative cache
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一种具有缓存和转换后备缓冲器(TLB)的数据处理装置。路表被提供用于标识多个缓存路中的哪一个存储着所需数据。每个路表条目对应于TLB的TLB条目中的一个,并且针对与相应的TLB条目相关联的页面的每个存储位置,标识哪个缓存路存储着与该存储位置相关联的数据。同样,缓存能够在同一处理周期中服务M个访问请求。仲裁器以确保所选择的待定访问请求指定最多N个不同虚拟页面地址的方式,来选择待定访问请求以用于被缓存服务,其中N<M。
Description
技术领域
本发明涉及数据处理领域。更特别地,本发明涉及具有缓存和转换后备缓冲器(translation lookaside buffer)的数据处理装置。
背景技术
数据处理装置可具有用于存储数据的缓存。该缓存提供了对存储于存储器的数据的一部分的更快的访问。数据处理装置还可包括转换后备缓冲器(TLB),该转换后备缓冲器用于在由处理器指定的虚拟地址和被缓存和/或存储器使用的物理地址之间进行转换。如果缓存是物理索引或物理标签缓存,则在进行缓存访问之前,需要使用TLB进行地址转换。即使缓存是虚拟索引的或虚拟标签的,仍然可以需要TLB转换来对存储器进行访问。
本技术试图在具有转换后备缓冲器的系统中提高执行缓存访问的能量效率。
发明内容
从一个方面看,本发明提供了一种数据处理装置,包括:
处理电路,所述处理电路被配置为处理数据;
缓存,所述缓存包括用于存储数据的多个缓存路;
转换后备缓冲器TLB,所述转换后备缓冲器TLB被配置为存储多个TLB条目,每个TLB条目标识存储位置的关联页面的虚拟到物理地址映射;以及
路表,所述路表被配置为存储多个路表条目,每个路表条目对应于所述多个TLB条目中的一个;其中:
每个路表条目包括路信息,所述路信息用于针对与相应的TLB条目相关联的页面的每个存储位置,标识所述缓存的所述缓存路中的哪一个存储着与存储位置相关联的数据,如果该缓存路存在的话;并且
响应于来自所述处理电路的、对于对应于目标虚拟地址的目标数据的数据访问请求,所述TLB被配置为访问对应于所述目标虚拟地址的目标TLB条目,并且所述路表被配置为访问对应于所述目标TLB条目的路表条目,并且所述缓存被配置为基于路信息来执行缓存访问,所述路信息包括在与目标数据相关联的存储位置的所述相应的路表条目中。
缓存可具有用于存储数据的多个缓存路。例如,组相关缓存可存储与在任意缓存路中的相应位置中的特定存储位置相关联的数据。当进行缓存访问时,缓存确定哪个路存储着所需数据。为辅助该操作,路表可被提供用于存储包括路信息的路表条目,每条路信息标识哪个缓存路存储着与给定存储位置相关联的数据。因此,缓存可提前获知执行哪个路将存储所需数据的缓存查找,因此基于路信息,缓存能够执行更高效的缓存访问。
路表与用于存储虚拟到物理地址映射的转换后备缓冲器(TLB)耦合。路表的每个路表条目可对应于TLB的TLB条目中的一个。包括在每个路表条目中的路信息可针对与相应的TLB条目相关联的页面的每个存储位置,标识哪个缓存路存储着与该存储位置相关联的数据,如果该缓存路存在的话。通过将路信息分组到对应于存储器的页面的条目中,并且将每个路表条目与相应的TLB条目耦合,路表和TLB的检索变得更加高效,因为基于目标虚拟地址的单个表检索可标识目标TLB条目和相应的路表条目二者。因此,不需要在TLB和路表二者中进行分离的地址检索来定位所需条目。因为针对特定值对表进行检索会消耗能量,本技术通过重复使用已被要求过的、还用于标识正确的路表条目的对于TLB的检索,使得TLB和路表以更加高效的方式实现。
同样,对于多个连续的数据访问请求以与存储器的同一页面相关联的数据为目标是常见的。通过将路信息分组到路表条目中,每个路表条目与存储器的相应页面相关联,该数据访问请求可使用单个路表条目来处理,从而避免了执行多个路表访问的需要。这也提高了路信息访问的效率。
每个缓存的缓存位置可具有相应的标签数据,该标签数据用于标识与存储在该缓存位置中的数据相关联的存储地址的一部分。该标签数据可被用于确定哪个缓存路存储着所需数据值。
如果响应于数据访问请求,包括在与所请求的地址相关路表条目中的路信息指示哪个缓存路存储着目标数据,则缓存可从路信息中指示的缓存路中访问目标数据,而不访问标签数据。通过避免查找标签数据的需要,能量消耗可降低。
同样,如果路信息指示哪个缓存路存储着目标数据,则不需要访问未在路信息中指示的其他缓存路。因此,通过不访问不包含目标数据的这样的缓存路,能量消耗可进一步降低。
路信息可能不标识哪个路存储着目标数据。例如,路表可能只具有有限数量的表条目,因此,当需要新条目时如果路表已满,先前的条目可能需要被逐出,即使缓存仍然包含对应于与被逐出的条目相关联的页面中的地址的数据。如果数据访问请求被发布,目标为对应于被逐出的路表条目的页面中的存储位置,并且路表条目被恢复到路表中,则路表可能不标识哪个缓存路存储着目标数据。
因此,在对于目标数据的路信息未指示哪个缓存存储着该目标数据的情况下,缓存可从每个缓存路中并行访问数据,并且可以从标签数据中确定任意访问的数据是否对应于该目标数据。因此,即使路表被提供来标识哪个缓存路存储着数据,标签数据仍然对处理路信息未指示哪个路存储着所需数据的情况是有用的。
为了确保路表中的路信息精确地反应缓存的状态,路信息可以响应于缓存数据的分配改变而被更新。响应于数据被分配给缓存,缓存可控制路表以更新对应于关联的存储位置的路信息以指示哪个缓存路存储着该数据。因此,在随后对该数据进行缓存访问时,缓存可基于路信息确定哪个路存储着该数据。
除了标识哪个缓存路存储着相应的数据的路信息,每个路表条目还可包括有效性信息,该有效性信息用于针对与相应的TLB条目相关联的页面的每个存储位置,标识与该存储位置相关联的数据是否存储在缓存中。有效性信息可被缓存在执行缓存访问时,确定是否考虑相应的路信息。
当与存储位置相关联的数据被分配给缓存时,缓存可控制路表更新对应于该存储位置的有效性信息以指示该数据存储在缓存中。另一方面,当与存储位置相关联的数据被逐出缓存时,则缓存可控制路表更新对应于该存储位置的有效性信息以指示该数据未存储在缓存中。当发生缓存逐出时,不需要更新相应的路信息,因为更新的有效性信息现在指示该数据未存储在缓存中,因此该存储位置的路信息应被忽略。
路信息和有效性信息可针对对应于路表条目的页面的每个存储位置以不同方式来表示。在一些实施例中,路信息和有效性信息可能针对相应页面中的每个存储位置分开指示。在其他实施例中,结合的有效性/路信息值可被提供给每个存储位置。在其他实施例中,路信息可针对一组存储位置联合设置,使得来自同一组中的每个位置的数据必须放置在缓存的同一路中。
可选地,有效性信息还可被用于预测数据是否将在缓存中。如果有效性信息能够确保是正确的,则如果有效性信息指示该数据未存储在缓存中,则这表示缓存访问将导致缓存未命中,因此数据可从更低级别的缓存或存储器中获取,而不访问该缓存本身。为了确保即使相应的路表条目被逐出路表,有效性信息也是正确的,则存储设备可被提供以缓冲被逐出的路表条目直到它们返回到路表中。
本技术可被用于具有虚拟标签缓存的系统。虽然由TLB提供的虚拟到物理地址映射对于执行对虚拟标签缓存的缓存访问不是必需的,但是,TLB可为其他原因而执行地址转换,例如,在需要存储器访问的情况下。因此,在这样的系统中,路表可利用TLB转换被执行并重复使用TLB的检索作为进入路表的索引的事实。
但是,本技术特别用于具有物理标签缓存的系统,在该系统中,标签数据标识与存储在相应的缓存位置中的数据相关联的物理地址的一部分。在该系统中,需要由TLB执行的转换用于访问缓存,因为缓存使用物理地址来标识存储在缓存中的数据的地址,而不使用虚拟地址。因此,当需要缓存访问时,TLB转换将已使用目标TLB条目而被执行,因此基于虚拟地址的TLB的检索可被重复使用,以便还用于标识相应的路表条目,而不需要路表的进一步检索。
TLB通常包括内容可寻址存储器,该内容可寻址存储器包括若干条目,每个条目存储虚拟地址和物理地址之间的映射。通常,TLB可通过虚拟地址检索。但是,本技术认识到,改变TLB使得其也能够通过物理地址检索是有用的。这是因为使用物理标签缓存,缓存会使用物理地址的一部分来标识数据。当路表条目响应于缓存分配或缓存逐出而要被更新时,因此,缓存将向TLB和路表提供分配的或逐出的数据的物理地址的一部分。通过改变TLB为可通过物理地址检索,这允许路表条目被TLB的检索来标识。
如上所述,由于路表的有限的容量,路表条目可能被逐出路表以给其他路表条目让出空间。当被逐出的路表条目在后来的阶段被加载回路表中时,则该路表条目可能不指示有效性或路信息,即使缓存中相应的数据可能保留在缓存中。因此,如果相应的路信息后来没有被更新,后面对该数据的访问将需要使用所有缓存路和标签阵列的完全缓存访问,以标识哪个路存储着该数据。虽然与使用路信息的简化访问相比,这引发了能量消耗损害,但是这不是很大的问题,因为被逐出,然后稍后在对应的缓存数据被逐出之前又被请求的路表条目的数量是相当低的。因此,不需要提供用于更新恢复到路表而相应的缓存数据没有被分配或逐出的条目的路信息的机制。
但是,为了提高能够使用路信息来提高能量效率的缓存访问的比例,更新机制可被提供用于更新这种情况的路表条目。因此,如果在服务数据访问请求时,确定所需数据的路信息未指示哪个缓存路存储着目标数据(“路表未命中”),但是缓存根据标签数据确定从缓存路中的一个访问的数据确实对应于目标数据(“缓存命中”),则缓存可控制路表以更新路信息从而标识该缓存路存储着目标数据。采用这种方式,即使路表条目已被逐出路表稍后又被放回路表中,每个存储位置的路表信息可在另一个缓存访问访问对应于该位置的数据时被再创建。因此,虽然当需要完全缓存访问和路表更新时,将会存在原始能量损耗,但是对与路信息已被更新的存储位置相关联的数据的任意进一步的访问将能够使用更新的路信息,从而能量消耗可通过只访问目标缓存路而降低。
当响应于路表未命中或缓存命中而更新路信息时,路表将需要标识哪个路表条目应被更新。检索TLB或路表以标识正确的路表条目来更新可能是能量密集的。为了降低执行更新中消耗的能量,路表可设有存储元件,该存储元件存储标识最近访问的路表条目的路表条目标识符。如果路信息需要响应于路表未命中或缓存命中而被更新,则路表能够从路表条目中标识要被更新的条目,而不执行完全表检索。这提高了更新的能量效率。
TLB可以是TLB分级结构中的一种。例如,TLB可以是第一级别TLB,并且该装置可包括至少一个更深级别TLB。通常,第一级别TLB相对较小,并且能够被快速且能量高效地访问,虽然更深级别TLB较大且能够存储更多条目,但消耗更多能量并且在访问TLB条目时具有较大的延迟,因为较大的结构通常需要更多数量的晶体管来被激活以便访问条目。响应于对于对应于目标虚拟地址的目标数据的数据访问请求,第一级别TLB可查找对应于目标虚拟地址的目标TLB条目。如果第一级别存储着目标TLB条目,则转换可被快速执行,几乎没有能量消耗。但是,如果第一级别TLB未存储目标TLB条目,则目标TLB条目可从更深级别TLB访问,并且第一级别TLB可被更新以存储目标TLB条目。该TLB的分级结构类似于多级缓存分级结构。
路表可至少提供给第一级别TLB。因此,第一级别TLB的每个TLB条目可具有路表中的相应的路表条目。任意更深级别TLB具有相应的路表条目不是必须的。如果TLB条目不存在于第一级别TLB中,则它将需要从更低级别中获取。提供至少一个更深级别TLB能够大大减低与将TLB条目获取到第一级别TLB中相关联的延迟,因为这避免了从存储器的页面表中获取页面条目的需要。相反,如果所需的路表条目不存在于路表中,与路表未命中相关联的损耗大大小于与TLB未命中相关联的损耗。与TLB条目不同(对于TLB条目,虚拟到物理地址映射通过参引更低级别TLB条目或页表条目来确定),路表的路信息可以从头再建,因为当作出缓存访问时,路信息可响应于如上所述的路表未命中和缓存命中的情况而被更新。因此,提供更深级别TLB比提供更深级别路表更重要,因此,为了节约电路面积和功率消耗,提供对应于第一级别TLB的第一级别路表,而不提供对应于更深级别TLB的更深级别路表是足够的。
另一方面,为了提高路表信息的覆盖范围,并且降低需要响应于路表未命中/缓存命中情况而更新路信息的可能性,路表还可被提供于具有对应于至少更深级别TLB的至少一个更深级别路表的多级分级结构中。因此,当对应于目标TLB条目的路表条目未在第一级别路表中发现,则其可从更深级别路表中访问。第一级别路表也可用新访问的条目进行更新。通过提供TLB和路表的多级分级结构,可获得快速能量高效的访问和增加的路表覆盖范围之间更好的平衡。经常需要的条目可被存储在第一级别TLB和路表中以实现以能量更高效的方式更快地进行访问,而更深级别TLB和更深级别路表可被提供作为备用存储以允许存储更多数量的不太经常使用的条目。
第一级别TLB和第一级别路表还可被称为“微TLB”和“微路表”,并且更深级别TLB和更深级别路表可被简单地称为TLB和路表,或称为“更低级别”TLB和路表。
TLB和路表可以不同方式配置。在一个实施例中,TLB和路表可被数据处理装置分开存储。例如,可使用分离的存储器。在这种情况下,为了访问路表,TLB可定位目标TLB条目,并可提供路表索引,该索引标识对应于目标TLB条目的路表条目。或者,路表可被检索需要的路表条目,并且可向TLB提供目标TLB条目的标识符。因此,即使路表和TLB被分开提供,TLB或路表的单个检索足够在两个表中定位相关的条目,而不需要进行其他表的进一步检索。
或者,TLB和路表可包括存储多个条目的公用存储器。每个条目可具有对应于TLB条目的一部分和对应于路表条目的另一部分。在这种情况下,公用存储器可简单地基于数据访问请求的虚拟地址来检索相应的条目,并可返回相应的TLB条目的映射的物理地址和相应的路表条目的路信息二者。
从另一方面看,本发明提供了一种数据处理装置,包括:
处理装置,所述处理装置用于处理数据;
缓存装置,所述缓存装置用于存储数据,所述缓存装置包括多个缓存路;
转换后备缓冲器TLB装置,所述转换后备缓冲器TLB装置用于存储多个TLB条目,每个TLB条目标识存储位置的关联页面的虚拟到物理地址映射;以及
路表装置,所述路表装置用于存储多个路表条目,每个路表条目对应于所述多个TLB条目中的一个;其中:
每个路表条目包括路信息,所述路信息用于针对与相应的TLB条目相关联的页面的每个存储位置,标识所述缓存装置的所述缓存路中的哪一个存储着与存储位置相关联的数据,如果该缓存路存在的话;并且
响应于来自所述处理装置的、对于对应于目标虚拟地址的目标数据的数据访问请求,所述TLB装置被配置为访问对应于所述目标虚拟地址的目标TLB条目,并且所述路表装置被配置为访问对应于所述目标TLB条目的路表条目,并且所述缓存装置被配置为基于路信息来执行缓存访问,所述路信息包括在与目标数据相关联的存储位置的所述相应的路表条目中。
从另一方面看,本发明提供了一种用于数据处理装置的方法,数据处理装置包括:缓存,所述缓存包括用于存储数据的多个缓存路;转换后备缓冲器TLB,所述转换后备缓冲器TLB被配置为存储多个TLB条目,每个TLB条目标识存储位置的关联页面的虚拟到物理地址映射;以及路表,所述路表被配置为存储多个路表条目,每个路表条目对应于所述多个TLB条目中的一个;其中,每个路表条目包括路信息,所述路信息用于针对与相应的TLB条目相关联的页面的每个存储位置,标识所述缓存的所述缓存路中的哪一个存储着与存储位置相关联的数据,如果该缓存路存在的话;
所述方法包括:
响应于对于对应于目标虚拟地址的目标数据的数据访问请求,所述TLB访问对应于所述目标虚拟地址的目标TLB条目,并且所述路表访问对应于所述目标TLB条目的路表条目;并且
所述缓存基于路信息来执行缓存访问,所述路信息包括在与目标数据相关联的存储位置的所述相应的路表条目中。
从另一方面看,本发明提供了一种数据处理装置,包括:
处理电路,所述处理电路被配置为发布数据的访问请求;
缓存,所述缓存被配置为响应于所述访问请求,而提供对数据的访问;
转换后备缓冲器TLB,所述转换后备缓冲器TLB被配置为在所述访问请求中指定的虚拟页面地址与所述缓存使用的物理页面地址之间进行转换;
输入缓冲器,所述输入缓冲器被配置为缓冲由所述处理电路发布的待定的访问请求;以及
仲裁器,所述仲裁器被配置为在每个处理周期中,选择来自所述输入缓冲器的所述待定的访问请求中的哪一个应被所述缓存服务;其中:
所述缓存能够在同一处理周期中服务M个访问请求,其中M是整数;以及
所述仲裁器被配置为选择所述待定的访问请求以确保所选择的待定访问请求指定最多N个不同的虚拟页面地址,其中N是整数,并且N<M。
可在具有转换后备缓冲器的系统中提高缓存访问的效率的另一个方法涉及缓存在同一处理周期中服务多个访问请求的方法。缓存能够在同一处理周期中服务M个访问请求,其中M是大于一的整数。例如,一些缓存可被分组使得每个组能够同时独立地服务缓存请求。
在给定周期中,可能存在比能够被缓存服务的访问请求更多的待定访问请求。因此,本技术提供了用于缓冲处理周期之间的待定访问请求的输入缓冲器,以及用于在每个处理周期中选择哪个待定访问请求应被缓存服务的仲裁器。仲裁器被配置为选择待定访问请求以确保被选择用于由缓存进行服务的请求指定最多N个不同的虚拟页面地址,其中N是小于M的整数。虚拟页面地址是虚拟地址的一部分,其对于所有共享同一虚拟到物理地址映射的地址是相同的,即,共享同一虚拟页面地址的地址能够使用TLB的同一TLB条目进行转换。
限制能够在同一周期中被服务的不同虚拟页面地址的数量为小于能够被缓存在同一处理周期中进行处理的访问请求的总数量看似是反直观的。人们可能认为这将导致缓存容量没有被充分利用的情况出现,因为一些使用不同虚拟页面地址的请求被禁止被选择。但是,本技术认识到,处理电路发布彼此非常接近的多个待定访问请求,每个待定访问请求的目标是同一虚拟页面地址,这是相当常见的。例如,很多程序应用需要对同一数据或与同一页面中的相邻地址相关联的数据的连续访问。因此,在给定周期中待定的访问请求的目标是相当有限的一组不同虚拟页面地址,这是常见的。
本技术认识到,通过限制在同一周期中可被处理的不同虚拟页面地址的数量,系统的元件(例如,转换后备缓冲器(TLB)和仲裁器)可被更有效地实现。如果缓存在同一周期中不得不服务目标是很多不同虚拟页面地址的访问请求,则TLB需要在同一周期中使用多个不同的TLB条目执行很多地址转换,并且这在能量消耗方面是昂贵的。转换后备缓冲器可具有若干个端口,该端口用于接收虚拟页面地址以进行转换。同样,仲裁器或缓存可具有用于对比数据访问请求的物理页面地址的比较器。如果很多不同页面地址需要在同一周期中进行处理,则很多这样的TLB端口和比较器需要被提供。每个端口和比较器将遭受动态和静态泄漏,从而增加了数据处理装置的能量消耗。
因此,通过限制在同一周期中可被处理的不同虚拟页面地址的数量,可获得效率的整体提高,因为即使存在由于一些访问请求可能不得不等待额外的周期而导致的性能上的少量下降,但是这是很少见的,并且通过降低TLB、仲裁器和缓存的复杂度而获得的能量消耗上的降低多于对其的补偿。
TLB能够在同一处理周期中转换N个不同的虚拟页面地址。因此,TLB不需要具有用于转换可由缓存进行服务的所有M个访问请求的电路。例如,TLB具有的、用于接收虚拟页面寻址的端口的数量和所需的表查找的数量可被减低以降低系统中的静态和动态泄漏。
当选择访问请求来被缓存服务时,仲裁器可选择指定了N个不同虚拟页面地址中的一个的那些待定访问请求作为候选访问请求。然后,仲裁器可在候选访问请求中进行选择来确定哪个请求实际上应被缓存服务。
在一个实施例中,N=2,因此在每个周期中,缓存可只处理在待定访问请求之间指定最多两个不同虚拟页面地址的待定访问请求。这可能是有用的,因为可能存在一些需要从第一存储位置读取然后写到第二存储位置的数据的操作,例如,存储器复制操作。这样的操作经常需要两个不同的页面地址,一个与第一存储位置相关联,另一个与第二存储位置相关联。通过使访问请求能够指定两个不同的页面地址来在同一周期中进行处理,这样的复制操作能够更高效地执行。但是,通过限制能够同时处理的不同页面地址的数量为两个,TLB、仲裁器和缓存能够以能量更高效的方式实现。
但是,在很多实施例中,N=1是足够的,使得在每个周期中,被选择用于被缓存服务的所有待定的访问请求指定同一虚拟页面地址。虽然这是所想要的看似反直观,但是实际上,同一周期中的很多访问请求访问同一页面,因此这没有表现出在性能上的明显损失。通过只允许单个虚拟页面地址被用于同一周期中,TLB每个周期只需要执行一次地址转换,并且用于对比仲裁器或缓存中的物理页面地址的任意比较器可假设要在该周期中被服务的所有待定请求具有相同的页面地址。这是有用的,因为这意味着存储器地址的更少地址位需要被对比以标识所需数据,因为可假设对应于页面地址的地址位对于每个请求将是相同的。因此,将系统限制为每个周期单个页面地址提供了用于访问缓存的更高效的系统。
为了确保在同一周期中服务的所有访问请求的目标是同一虚拟页面地址,仲裁器可执行在不同待定访问请求之间的对比操作。例如,在每个处理周期中,待定请求中的一个可被选为基本访问请求,并且基本访问请求的虚拟页面地址可由TLB进行转换。只有与基本访问请求指定相同的虚拟页面地址的其他访问请求可以是在该周期中被缓存服务的候选,并且仲裁器可在这些候选中选择以确定那个请求实际上应被服务。在下一周期中,不同请求可被选为基本请求,因此不同页面地址可被处理。
基本访问请求可以是输入缓冲器中的任意待定访问请求。例如,基本访问请求可以是最老的待定访问请求。采用这种方式,在输入缓冲器中待定访问请求无限期地保持停滞的可能性降低。或者,每个访问请求可具有分配给它的优先级,并且基本访问请求可以是请求中具有最高优先级的一个请求。同样,访问请求可具有不同类型,并且一些类型可被授予在其他类型之前的优先级,因此基本访问请求可以是访问请求中具有最高优先级的访问类型的一个访问请求。
如果存在被允许在同一周期中进行处理的多于一个的虚拟页面地址(即,N=2或更多),则仲裁器可针对在同一周期中被处理的每个其他虚拟页面地址执行类似的对比。
如果存在目标是存储在缓存的同一缓存行中的数据的多个候选访问请求,则仲裁器可合并多个访问请求,并且缓存可服务对应于结合的数据(即,结合的如果每个独立的请求被依次处理被写或读的数据)的单个合并的请求。这使得更多待定请求在同一周期中被服务。
仲裁器可限制能够被合并为单个请求的请求的数量。例如,如果输入缓冲器能够缓冲X个待定访问请求,则仲裁器可从最多Y个候选访问请求中进行合并,其中X和Y是整数,并且Y≤X。Y<X的情况是有用的,因为用于对比与每个请求相关联的地址以便确定该请求是否访问同一缓存行的电路会实现很小的面积和功率损耗花销。所有X个待定请求访问同一缓存行是不太可能的。因此,为了节约面积和功率损耗,能够被合并的候选访问请求的数量可被限制为Y。
缓存可被分组以使得存在用于存储数据的M组缓存行,并且每个组可独立于其他组被访问。这意味着缓存能够在同一处理周期中服务指向不同组的多达M个访问请求。在这种情况下,则选择了指定给定周期允许的N个不同虚拟页面地址中的一个的候选请求,然后仲裁器可确定是否存在组候选访问请求以每个组为目标。
对于确实具有至少一个组候选访问请求的每个组,仲裁器可选择组候选访问请求中的一个作为第一组候选访问请求,并确定是否存在一个或多个其他组候选访问请求与第一组候选访问请求以相同的缓存行为目标。如果存在其他组候选访问请求以同一缓存为目标,则这些请求可与第一组候选访问请求合并,并且合并的请求可被选择用于由缓存的该组服务。否则,第一组候选访问请求可被选择用于服务。该技术使缓存的使用更有效并提高了性能,因为目标为同一缓存行的多个请求可在一个周期中被服务,同时缓存访问遍及可能利用缓存的分组结构的组。
此外,仲裁器可选择第一组候选访问请求作为对于该组待定的任意候选请求。例如,第一组候选访问请求可以是以下各项中的一项:
最老的组候选访问请求;
具有最高优先级的组候选访问请求;以及
具有最高优先级的访问类型的组候选访问请求。
因为仲裁器限制了能够在一个周期中被处理的虚拟页面地址的数量,因此可能存在一些待定访问请求不能在该周期中被处理。为了容纳这些请求,输入缓冲器可具有存储电路,该存储电路存储在当前处理周期中未被仲裁器选择的待定访问请求,因此其可在下一处理周期中被仲裁器选择。同样,在下一处理周期中,仲裁器可被配置为对来自存储电路的老的请求优先于较新的请求,以确保请求向前进行。
从另一方面看,本发明提供了一种数据处理装置,包括:
处理装置,所述处理装置用于发布数据的访问请求;
缓存装置,所述缓存装置用于响应于所述访问请求,提供对数据的访问;
转换后备缓冲器TLB装置,所述转换后备缓冲器TLB装置用于在所述访问请求中指定的虚拟页面地址与所述缓存装置使用的物理页面地址之间进行转换;
输入缓冲器装置,所述输入缓冲器装置用于缓冲由所述处理装置发布的待定的访问请求;以及
仲裁装置,所述仲裁装置用于在每个处理周期中,选择来自所述输入缓冲器的所述待定的访问请求中的哪一个应被所述缓存装置服务;其中:
所述缓存装置能够在同一处理周期中服务M个访问请求,其中M是整数;以及
所述仲裁装置被配置为选择所述待定的访问请求以确保所选择的待定访问请求指定最多N个不同的虚拟页面地址,其中N是整数,并且N<M。
从另一方面看,本发明提供了一种用于数据处理装置的方法,所述数据处理装置包括:处理电路,所述处理电路被配置为发布数据的访问请求;缓存,所述缓存被配置为响应于所述访问请求,提供对数据的访问;转换后备缓冲器TLB,所述转换后备缓冲器TLB被配置为在所述访问请求中指定的虚拟页面地址与所述缓存使用的物理页面地址之间进行转换;
所述方法包括以下步骤:
在输入缓冲器中缓冲由所述处理电路发布的待定的访问请求;以及
在每个处理周期中,选择来自所述输入缓冲器的所述待定的访问请求中的哪一个应被所述缓存服务;其中:
所述缓存能够在同一处理周期中服务M个访问请求,其中M是整数;以及
所述选择步骤选择所述待定的访问请求以确保所选择的待定访问请求指定最多N个不同的虚拟页面地址,其中N是整数,并且N<M。
综上所述,本发明的其他目的、特征和优势将从以下对结合附图的示意性实施例的具体描述明显看出。
附图说明
图1示意性地示出了具有转换后备缓冲器和缓存的数据处理装置的示例;
图2是具有组和路的缓存结构的示例;
图3示出了包括页面的地址空间,每个页面包括若干存储位置;
图4示出在地址转换期间和被缓存使用时解释存储地址的方式的示例;
图5示出了TLB和路表之间的关系,以及表示路表条目中的路信息和有效性信息的多个示例;
图6示出了使用存储在路表中的路信息来执行缓存访问的方法;
图7示出了更新存储在路表中的路信息的第一示例;
图8示出了更新路表中的路信息的另一示例;
图9示出了响应于缓存行填充而更新路信息的方法;
图10示出了响应于缓存行逐出而更新路信息的方法;
图11示出了当路信息是未知的而相应的数据在缓存中找到时更新路信息的方法;
图12示出了具有能够在同一周期中处理多个访问的缓存的数据处理装置的另一示例;
图13示出了用于缓冲等待被缓存服务的待定访问请求的输入矢量的示例;
图14概要地示出了用于选择哪个待定访问请求应被缓存服务的仲裁单元的示例;
图15示出了使用图12的装置来执行缓存访问的方法;
图16示出了仿真结果,仿真结果显示(i)目标是同一存储器页面的连续访问的典型数量,(ii)目标是同一页面、允许对不同页面进行一次中间访问的典型访问数量,以及(iii)目标是同一缓存行的访问的数量;
图17示出了典型的高性能无序处理器-缓存接口,以及存储器地址位字段的命名规则;
图18示出了使用本技术获得的性能的仿真结果;
图19示出了使用本技术获得的标准化能量消耗的仿真结果;
图20示出了在加载之间共享L1数据的效果;
图21比较了不使用路确定的系统、使用本技术的路表的系统、使用具有8、16或32个条目的小路表的系统的能量消耗;
图22示出了被路确定覆盖的L1访问相对于整体访问计数的比例。
具体实施方式
图1示意性示出了数据处理装置2,该数据处理装置2包括用于处理数据的处理器4。缓存6被提供用于为处理器4存储数据。该缓存6是1级(L1)缓存,该L1缓存是包括至少一个更深级别缓存(L2缓存)的缓存分级结构的成员。L1缓存6通过L2-缓存接口8与L2缓存且与(未示于图1中的)存储器通信。如果处理器4需要的数据不在L1缓存6中,则L1缓存6从L2缓存或存储器中请求该数据,并将该数据分配给缓存6行。缓存一致性策略(例如,回写或直写策略)可被用于保持L1缓存6、L2缓存和存储器中的数据的一致性。总线9被提供用于向处理器4返回提供服务的缓存访问的结果。
处理器4可发布对于从缓存6访问数据的数据访问请求。地址计算级10被提供用于计算具体数据访问请求所需的数据的虚拟地址。在此示例中,L1缓存6是使用物理地址来标识存储于缓存中的数据的物理索引、物理标签(PIPT)缓存。L2缓存(以及可被提供的任意更深级别的缓存)和存储器也使用物理地址。转换后备缓冲器(TLB)12被提供以将由地址计算级10计算的虚拟地址转换为由缓存6和存储器使用的物理地址。对应于TLB 12,路表(way table)14也被提供用于存储指示缓存6的哪个缓存路存储着所需数据的路信息。下面将详细说明该路表。
该装置2还包括存储缓冲器(SB)15和合并缓冲器(16)。存储缓冲器15被用于处理由处理器4推测发布的存储请求。为了提升性能,存储请求可在实际获知该存储请求是否应被执行之前,由处理器4推测发布。例如,在发生故障的处理器中,或跟随分支指令,在前面的指令完成前可能不知道与存储请求相关的指令实际上是否需要,但是,为了提升性能,该指令可被提前执行,然后只有证明该指令实际上是需要的,才提交该指令的结果。与加载请求不同,存储请求会改变缓存的结构状态,因此,执行推测发布的存储请求是不可取的,除非提交了该存储请求。因此,推测发布的存储请求可被放置在存储缓冲器15中,直到获知该推测发布的存储请求应被实际执行。应该认识到的是,如果处理器4不允许指令的推测执行,则存储缓冲器15可被省去。
当存储请求被提交时,其被发送到合并缓冲器16。如果多个提交的存储请求对应于缓存6的同一缓存行是待定的,则为了提升性能且避免能量密集的存储器访问(例如,对于L1缓存),合并缓冲器16可合并这些请求来形成可由缓存6在一个操作中执行的单个请求。然后,在合并缓冲器16中合并的请求由缓存提供服务来将合并的数据写到缓存6中。
图2示出了缓存6的结构的示例。缓存6具有多个缓存组(cachebank)20。缓存6的每个组20可独立于其他组被访问,从而可在处理周期中,对不同组进行并行访问。但是,对于每个组,在一个周期中只有一个缓存行可被访问。缓存6可根据存储器地址的一部分确定哪个组20存储了相应的数据——例如,具有两个组的情况下,最低有效位可标识该数据应被存储在组0还是组1中。
缓存6是n路组相关缓存。这意味着每个缓存组提供了n个可能的位置来存储缓存行,相当于每个缓存路24中存储一个具体地址。在图2的示例中,n=4,因此,每个组具有4个缓存路24,每个缓存路24包括若干缓存行,缓存行包括标签数据22和数据23。缓存的标签数据22可总体被称为“标签阵列”。对于每个缓存行,标签数据22存储与相应的数据23相关联的存储器地址的一部分,以允许缓存6标识每个缓存行中存储哪个数据。注意,虽然存在n个可能的位置可存储具体数据,但是缓存一次只保存数据值的一个副本,而其他(n-1)个可能的位置可用于存储其他数据值。应该认识到的是,图2中所示的缓存结构只是示例,其他配置是可能的,例如,具有n个缓存组,每个缓存组表示一个缓存路的缓存。本技术可针对不同的缓存结构进行相应的调整。
图4的下面部分示出了缓存6如何解释存储器地址的示例。该地址包括标签部分50、索引部分52和行偏移部分54。索引部分52标识在每个缓存路24中的、可存储相应的数据值的位置。当数据值被存储在缓存中时,相应地址的标签部分50被存储作为对应于存储数据的缓存行的标签数据22。当从缓存中访问数据时,所请求的地址的标签部分50可与每个路24中的、由索引部分52标识的缓存行的标签数据进行对比,并且如果存在匹配,则对应于匹配的标签部分的缓存行存储着所需数据。如果不存在标签匹配,则该数据未存储在缓存中,因此,从较低等级的缓存或从存储器请求该数据。地址的行偏移部分54标识所需数据在缓存行中存储的位置。
图3示出了被分成若干页面30,每个页面包括若干存储位置40的存储器地址空间的示例。页面30是存储位置的单元,同样的虚拟到物理地址映射被应用于该单元。图4的上面部分示出了TLB 12如何解释存储器地址的示例。每个存储器地址包括页面ID部分44和页面偏移部分46。页面ID部分44标识包含该地址的地址空间的页面30。页面ID部分44对于虚拟地址和其相应的物理地址可以是不同的。因此,TLB采用页面ID部分44来标识用于将虚拟地址的虚拟页面ID转换为相应的物理地址的物理页面ID的相应的TLB条目。另一方面,地址的页面偏移部分46标识页面30内的具体存储位置40。页面偏移部分46在由TLB从虚拟地址到物理地址的转换过程中保持不变。
图4示出了页面大小为4KB,且缓存6是在64字节宽的缓存行中存储32KB的数据的4路组相关缓存的具体示例。应该认识到的是,可以使用不同的页面大小和缓存行大小,以及不同数量的缓存路。在此示例中,页面ID部分44、页面偏移部分46、标签部分50、索引部分52和行偏移部分54的比特数可不同于图4中所示的示例。
缓存6具有两种缓存访问模式:标准缓存访问模式和简化缓存访问模式。在标准访问模式中,每个数据路24被访问且标签数据22被用于标识哪个数据路存储所需数据,如上所述。
缓存6还具有简化缓存访问模式,该简化缓存访问模式与标准访问模式相比,可被用于节约能量。路表14包含表示缓存路24中的哪一个存储与给定存储器地址相关联的数据的路信息。因此,路信息可被用于标识所需的数据路24,因此不需要访问其他数据路24或标签阵列22。
图5示出了路表的结构。路表14具有若干路表条目60。每个路表条目60对应于TLB 12中的相应的TLB条目62。每个TLB条目62指示相关的存储器单元页面30的虚拟到物理地址映射。例如,如图5所示,TLB条目#0指示第一页面30-0的虚拟到物理地址映射,而TLB条目#1指示相关页面30-1的虚拟到物理地址映射。
路表14的每个路表条目60存储着与相应的TLB条目62相关联的页面内的每个存储位置的路信息。该路信息指示缓存路24中的哪一个存储着与相应的存储位置相关联的数据,如果该缓存路存在的话。例如,路表条目#0指示页面30-0内的每个存储位置的路信息,而路表条目#1指示页面30-1内的每个存储位置的路信息。TLB 12和路表14的大小是有限的,因此在给定时刻,只有页面的子集可具有相应的路表条目60和TLB条目62。如果针对给定页面,需要新的TLB条目62和路表条目60,则已存在的TLB条目62和路表条目60可被驱逐来为新的条目让路。
路表条目60还维护指示与相应页面中每个存储位置相关联的数据是否存储在缓存中的有效性信息。图5示出了有效性信息和路信息在每个路表条目60内如何被表示的三个示例。
在第一个示例(A)中,路表条目60包括对应于该路表条目60的页面30中的每个存储位置(行)的有效字段70和路字段72。在此示例中,有效字段70包括单个比特,如果来自相应存储位置的数据存储在缓存6中,则该单个比特具有第一值(例如,比特值1),而如果来自相应存储位置的数据未存储在缓存6中,则该单个比特具有第二值(例如,比特值0)。路字段72包括2比特的值,该2比特的值指示四个数据路24中的哪一个存储着来自相应存储位置的数据。在示例(A)中,每个数据值可被放置在四个路中的任意一个中。
在第二个示例(B)中,有效性信息和路信息被结合为单个字段74,并且可放置来自具体存储位置的数据的路24的数量被减少一个。结合的2比特有效性/路字段74被提供给相应页面30中的每个存储位置。结合字段74的四个可能值中的一个(例如,0b00)被用于指示数据未存储在缓存中(即,有效性信息)。其他三个可能值(例如,0b01、0b10、0b11)被分配给缓存路24中的三个来指示数据存储在该缓存路中(即,路消息)。因此,与相应的存储位置相关联的数据可以不放置在不被路信息的该三个可能值表示的第四个缓存路中。与示例(A)相比,该方法减少了每个路表条目所需的比特数,并且由于比特数减少,每个路表访问的能量损耗降低。该方法对缓存未命中率的影响是最小的,因为由处理器4执行的大部分线程没有使用L1缓存6的所有四个路。此外,即便使用示例(B)中的路表表示方式,缓存仍然可以被实现为四路组相关缓存。特别地,具有四个组20的缓存可在分离的组中保存行0-3,而在同一组中保存行0、4、8、……、60。通过视为路0对行0到3无效,路1对行4到7无效等等,展示一些具体位置形式的传统线程将最可能看出该缓存是4路组相关的。
图5还示出了表示每个路表条目中的路和有效性信息的第三个示例(C),在该示例中,有效性和路信息针对若干连续的存储位置(行)被分组到一起。例如,四个存储位置的每个组(0……3、4……7、等等)具有相应的有效性字段76,该有效性字段包括用于该组中的每个存储位置的比特,标识与该存储位置相关联的数据是否存储在缓存中。存储位置的每个组还具有路字段78,该路字段78包括标识4个数据路24中的哪一个存储着与该组中的存储位置相关联的数据的2比特的值。在此示例中,缓存6被限制为存储与同一缓存路24中的同一组的每个存储位置相关联的数据。该方法显著地减少了每个路表条目60所需的比特数,因此降低了每个路表访问的能量损耗。
应该认识到的是,示于图5中的示例只是示意性的,并且存在很多在路表条目内表示有效性信息和路信息的不同方式。无论使用哪种表示方式,如图5所示,通过耦合路表14和TLB 12,当执行缓存访问时,不需要检索TLB 12和路表14二者以寻找相应的条目。而是对于给定的存储器访问请求,TLB 12和路表14中的一个可被检索以标识对应于存储器访问请求的虚拟地址的条目,然后其他表在不执行进一步检索的情况下,可被控制以访问相应的条目。例如,如图5所示,TLB 12可通过将所请求的虚拟地址的虚拟页面ID部分44与每个TLB条目62中的虚拟页面ID相匹配,来检索相应的TLB条目62,一旦目标TLB条目已被标识,TLB可控制路表14返回相应的路表条目60。通过避免重复检索两个表12、14,能量损耗可被降低。
在图5的示例中,TLB 12和路表14被分开示出。例如,TLB 12和路表14可作为分离的存储器而被提供。当TLB 12定位了所需要的TLB条目62时,TLB 12可向路表14提供索引值,该索引值标识了将要用于访问缓存6的相应的路表条目。
另一方面,还可以将TLB 12和路表14作为具有若干条目的公用存储器来实现。公用存储器的每个条目可包括相应的TLB条目62和相应的路表条目60二者。在该实施例中,公用存储器将检索具有对应于当前数据访问请求的地址的虚拟页面ID的虚拟页面ID 44的条目,然后将从该公用存储器条目返回物理页面ID和相应的路和有效性信息。
图6示出了基于存储在路表14上的信息来执行简化的缓存访问的方法。在步骤100,处理器4发布数据访问请求,并且地址计算级10计算数据访问请求的虚拟地址。在步骤102,TLB 12查找相应的TLB条目(即,该TLB条目12的虚拟页面ID与数据访问请求中的虚拟地址的虚拟页面ID 44匹配)。TLB 12返回对应于由TLB条目指定的虚拟页面ID的物理页面ID 44。在步骤104,路表14访问对应于由TLB 12访问的TLB条目62的路表条目60。在步骤106,缓存6基于路表条目中的路信息来执行缓存访问。如果路表条目的有效性信息指示数据存储在缓存中,则缓存执行简化的缓存访问,在该简化的缓存访问中,只有在路信息中指示的缓存路24被访问,而不访问标签阵列22或其他缓存路24。另一方面,如果有效性信息指示数据未存储在缓存中,则缓存执行标准的缓存访问,在该标准的缓存访问中,所有数据路24被访问,并且标签阵列22被用于标识哪个数据路24存储着所需数据,如果该数据路存在的话。
用这种方式,路表允许当可以执行简化的缓存访问的时候,执行简化的缓存访问,而当路表未提供所需信息时,使用标准的缓存访问。因为标准的访问模式仍然可能被需要,因此标签阵列22仍然被提供,尽管事实上标签阵列22对于简化的访问模式是不必要的。
如图7和图8所示,TLB 12和路表14可具有包括多个级别的TLB和路表的分级结构。该装置可包括微TLB(uTLB)12-u和更深级别TLB 12-f,并且路表可包括微路表(uWT)14-u和更深级别路表(WT)14-f。微TLB 12-u和微路表14-u是小的、快速访问的结构,与更深级别TLB 12-f或更深级别路表14-f相比,从微TLB 12-u和微路表14-u中,TLB条目或路表条目可被快速检索且为能量高效的。另一方面,更深级别TLB和更深级别路表允许更多数量的TLB条目和路表条目,但能量开销增加。因此,如果数据访问请求指定了对应于不具有相应的微TLB条目和微路表条目的页面的地址,则TLB和路表条目可从更深级别TLB/路表引入到微TLB和微路表。如果微TLB 12-u和微路表14-u已满,则另一条目(例如,最近最少使用的条目或最近最少分配的条目)可从每个表逐出。通过提供这样的分级表结构,可实现能量高效、快速访问和提升TLB/路表覆盖范围之间的改进的平衡,与多级缓存分级结构类似。
为了维护路表信息,路信息响应于改变缓存6中的数据分配的操作而被更新。如图7所示,当数据被分配给缓存6的缓存行(L1行填充)时或当数据从缓存6被逐出时,路信息可被更新。当发生缓存行填充或缓存逐出时,缓存6向TLB 12和路表14提供与被分配的或被逐出的数据相关联的物理地址。TLB可基于物理页面ID检索,并且标识对应于由缓存6标识的物理地址的TLB条目。然后,TLB控制路表14更新相应的路表条目。路表14基于由缓存6提供的物理地址的页面偏移部分的一部分来标识要被更新的路/有效性字段。
在缓存行填充时,微路表14-u或路表14-f中的路表条目60的相应字段被更新,使得有效性信息现在指示该信息被存储在缓存中并且路信息现在指示哪个路存储着该数据。另一方面,当数据从缓存中被逐出时,则有效性信息被更新以指示该数据不再存储在缓存中,并指示对应于该存储位置的路信息在后面的缓存访问时不应被使用。
如果微路表条目被更新,则更深级别路表14-f中相应的条目直到相应的微路表条目从微路表14-u中被逐出才被更新。推迟更深级别路表14-f的更新节约能量,因为即使微路表14-u中的条目在被逐出之前被更新多次,但是更深级别路表条目只需要被更新一次。
更深级别TLB 12-f和更深级别路表14-f的容量是有限的,因此这些表可不存储对应于地址空间的所有页面的条目。因此,当需要的时候,来自TLB或路表的条目可被逐出来为对应于不同页面的另一条目让出空间。相应的TLB条目将从与存储器相关联的页表取出,而路表条目会被分配给路表,其将首先处于重置状态,在该重置状态,有效性信息指示相应页面内与所有存储器地址相关联的数据未存储在缓存中。
因此,以下情况是可能的:存储在缓存中的数据可使得其相应的路表条目从更深级别路表14-f中被逐出,虽然数据还在缓存中。当相应的路表条目被恢复到路表14-f时,其将首先处于重置状态,即使相应的数据存储在缓存中。因此,缓存6可能不能假设有效性信息指示未存储在缓存中的数据实际上未存储在缓存中。因此,即使当有效性信息指示该数据未存储在缓存中时,缓存仍然要采用标签阵列22执行正常的缓存访问来标识该数据实际上是否存储在缓存中。采用图7的配置,其中路信息只在缓存行填充或缓存逐出时进行更新,不可能一旦针对已经存在于缓存中的数据而被恢复到路表中便更新路信息。如果缓存访问相对本地化,使得在访问具体的值几次之后,该值不太可能再次被需求(例如,流应用可加载数据到缓存中,重复使用该数据,然后移到使用其他数据,因此首先被加载的数据可能不会再次被需求),则这不会是问题。
但是,对于其他应用,缓存的数据可能在一段时间内不时地被访问。在这种情况下,使用图8所示的更新策略是有用的,在该更新策略中,除了如图7所示的在行填充和缓存逐出时更新路信息之外,当相应的路表条目指示数据访问所需的数据不在缓存6中(“路表未命中”),但当检查标签阵列22时发现该数据在缓存6中(“缓存命中”)时,也更新路信息。该情况可能在首次访问相应的路表条目不久前被恢复到路表14中的页面的每个存储位置时出现。因此,当路表未命中/缓存命中被检测到时,缓存可向路表发送信号,并且可指示哪个实际上存储着该数据。作为响应,路表可更新相应的路表条目,从而有效性信息现在指示该数据存储在缓存中,并且路信息现在指示哪个路存储着该数据。同一路表条目可能需要被更新多次,每当针对对应于该路表条目的页面内的不同地址检测到路表未命中/缓存命中时均需更新该路表条目。
为了标识哪个路表条目14应响应于路表未命中/缓存命中而被更新,路表14或TLB 12可基于数据的地址执行检索。但是,这可能消耗额外的能量。因此,为了避免不得不执行进一步的检索,图8的路表设有存储元件110,该存储元件110存储最近访问的路表条目的索引值。因此,当缓存发出信号表示响应于路表未命中/缓存命中,需要进行更新时,路表14可以只更新在上一条目存储元件110中指示的条目,不需要基于所访问的数据的地址来检索该表。基于存储元件110的更新可能只对于微路表14-u是需要的,因为在从更深级别路表14-f访问条目时,该条目可被分配给微路表14-u,并且在微路表14-u中执行路信息更新可比在更深级别路表14-f更高效。相应的更深级别路表14-f的更新可被推迟直到条目从微路表14-u中被逐出。
可选地,路表14还可被用于预测针对所需数据是否会发生L1缓存未命中。如果给定存储器地址的有效性信息指示相应的数据未存储在缓存中,则这可被解释为L1缓存未命中,并且L2缓存访问或存储器访问可在不需要访问L1缓存6的数据路24或标签阵列22的情况下被发起,释放这些数据路24和标签阵列22用于服务其他缓存访问,或允许数据路24和标签阵列22保持空闲以节省能量。但是,该方法需要有效性信息保证是正确的。如上所述,如果路表条目从路表14被逐出,然后后来又被恢复到路表14,而相应的数据仍在缓存中,这可能不是上述情况。为了解决这一问题,被逐出的路表条目可被存储在单独的存储器中或额外的更深级别路表中,或被恢复到路表的、处于重置状态中的条目可被标记为L1缓存未命中预测不应被执行的条目。但是,这可能需要用于存储被逐出的条目或额外的“未命中预测”位的额外的电路,并且该额外的电路消耗的能量可能不合理,因为多数L1缓存显示出很低的未命中率,因此L1未命中预测的优势不会经常出现。因此,基于有效性信息的未命中预测是可选的。
图9到图11示出了基于缓存访问来更新路表条目的方法。图9示出了响应于缓存行填充的路表的更新。在步骤120,缓存行填充被检测到。缓存提供了与分配给TLB 12和路表14的数据相关联的物理地址,并且还提供了缓存路24被分配有数据的指示。TLB 12或路表标识要基于物理页面ID 44进行更新的路表条目。在步骤122,路表14使用地址的页面偏移部分46的一部分来标识对应于该数据的路表条目的有效性字段和路信息字段,更新有效性信息来指示该数据存储在缓存中并更新路信息来指示哪个缓存路24存储着该数据。
图10示出了响应于缓存行逐出而更新路表的方法。在步骤130,来自缓存行的数据从缓存中被逐出,并返回到存储器分级结构的较低级别(例如,L2缓存、L3缓存或存储器)。缓存向TLB 12和路表14提供与被逐出的数据相关联的物理地址。TLB或路表使用该地址的物理页面ID 44来定位要更新的路表条目。路表14使用该地址的页面偏移部分46来定位路中相应的有效性字段。在步骤132,路表14更新有效性字段来指示相应的数据未存储在缓存中。
图11示出了示出了响应于路表未命中/缓存命中而更新路表条目的方法。在步骤140,在检测到该情况时,缓存向路表14发送信号表示该路表条目需要被更新,并指示路24存储被访问的数据。在步骤142,最近访问的路表条目的索引从存储元件110中被读出。在步骤144,路表14更新存储元件中指示的微路表条目,从而有效性信息现在指示该数据被缓存了,并且路信息指示存储该数据的路。更深级别路表中相应的路表条目直到微路表条目随后从微路表14-u中被逐出才进行更新。
下面将讨论缓存6可在同一处理周期中向指向不同组的多个请求提供服务。如果是这样,则可能需要在同一处理周期中,更新同一路表条目或多个路表条目内的多个字段。因此,图9到图11的方法可针对要被更新的每个信息进行重复。
总之,通过提供用于存储路信息的路表,并通过只访问路信息中指示的路而不访问其他路24或标签阵列22,功率消耗可被降低。通过提供将对应于存储器的页面的路信息分组到一起的路表条目,并将每个路表条目链接到相应的TLB条目,检索TLB和路表变得更加高效,因为这些表中的一个的单个检索足够定位相应的TLB条目和路表条目二者。
图12详细地示出了装置2,特别示出了装置2可并行处理多个数据访问请求的方法。处理器4具有用于决定何时向缓存6发布数据访问请求的发布级202和调度级200。加载队列204也可被用于存储待定的加载请求。处理器4包括用于计算与由处理器4发布的数据访问请求相关联的虚拟地址的地址计算级10-0到10-3。
输入矢量210被提供用于缓冲等待由缓存提供服务的待定请求。仲裁器230被提供用于选择输入矢量210中指示的待定请求中的哪一个应在给定处理周期中被服务。来自地址计算级10-0到10-3的加载请求直接被放置在输入矢量210中,以等待由缓存来服务。同时,推测发布的存储请求被发送给存储缓冲器15以等待该存储请求要被执行的确认。一旦提交,存储请求被转移到合并缓冲器16以等待由缓存6来服务。合并缓冲器16可合并来自存储缓冲器15的多个存储请求以形成合并缓冲器条目。然后,合并缓冲器条目被提供给输入矢量210以等待被仲裁器230选择。
通常,合并缓冲器16会延迟向输入矢量210发送合并缓冲器条目,直到其接收到新的请求,并且除非其向输入矢量210发布合并缓冲器条目,否则会溢出。也就是说,如果合并缓冲器16从存储缓冲器15接收存储请求(该存储请求寻址未被任意当前合并缓冲器条目表示的区域),并且不存在空闲的合并缓冲器条目,则合并缓冲器16会逐出当前合并缓冲器条目并将其发送给输入矢量210。通过尽可能长地延迟合并缓冲器条目的逐出,这提高了多个存储请求可被合并且在同一周期内处理的可能性,因此使得缓存的使用更高效。
图13示出了输入矢量的示例。输入矢量210包括用于接收待定的访问请求的若干矢量条目212。矢量条目212具有预先确定的优先级顺序,从而仲裁器230可例如,从条目#0选择数据访问请求的概率比选择条目#7中的数据访问请求的概率高。在此示例中,来自合并缓冲器16的合并缓冲器条目被放置在矢量条目#0中,从地址计算级10-0到10-3接收的读取访问请求被放置在矢量条目#4到#7,而3个矢量条目#1到#3被用于存储从前面的时钟周期起未被处理的剩余的待定访问请求。因此,在图13的示例中,合并缓冲器条目(MBE)被授予先于来自前面周期的老的读取访问请求的优先权,而老的读取访问请求被授予先于较新的读取访问请求的优先权。在其他示例中,优先权顺序可能不同,从而例如,老的读取访问请求可能具有高于合并缓冲器条目的优先权。
每个矢量条目包括有效字段232,该有效字段232指示该条目是否表示有效请求。例如,地址计算级10-0到10-3中的一些在给定周期中可能不是活动的,或可能不存在待定合并缓冲器条目#0或可能不存在从上一周期起剩下的足够的请求,因此一些矢量条目可能是无效的。每个矢量条目还具有地址字段234以及类型字段236,该地址字段234用于存储与数据访问请求相关联的虚拟地址,该类型字段236指示该条目的类型(例如,该条目是对应于加载请求还是合并缓冲器条目)。每个矢量条目还具有年龄标识符字段238(例如,重排缓冲器标识符或ROB ID字段),该年龄标识符字段238存储区别同一类型的不同访问请求的年龄标识符。年龄标识符可被顺序分配并可被用于,例如,允许确定一个请求是否比另一请求老。应该认识到的是,其他信息或其他年龄标识符也可被存储在矢量条目中。
注意,输入缓冲器210不需要包括所有矢量条目212的存储位置。例如,合并缓冲器条目和新的请求可直接从从合并缓冲器16和地址计算级10接收的线中读取,因此,输入缓冲器210不需要实际存储这些请求的任意数据。另一方面,存储设备可被提供用于存储在上一周期中未被服务的较老的请求。或者,在其他示例中,所有请求可在输入缓冲器210中提供的存储设备中进行缓冲。
转回到图12,在每个周期中,输入矢量210的第一有效矢量条目的虚拟地址的虚拟页面ID被提供给TLB 12以被转换为物理页面ID。因此,如果在矢量条目#0中存在待定的合并缓冲器条目,则合并缓冲器条目的虚拟页面ID被提供给TLB 12,然而如果不存在待定的合并缓冲器条目,则来自条目#1的地址被提供(如果该条目包含有效请求),以此类推,直到找到有效矢量条目。存储在第一有效矢量条目中的请求可被称为“基本”请求。TLB 12将基本请求的虚拟页面ID转换为物理页面ID,并将该物理页面ID提供给仲裁单元230。同样,TLB以上述方式控制路表14来查找相应的路表条目并将该路表条目提供给仲裁单元230。仲裁单元230向缓存6提供物理页面ID和路信息(如果有效的话),以供其在向选定的请求提供服务时使用。
图14示出了仲裁单元230的一部分的示例。仲裁单元230接收输入矢量210并具有比较器240,该比较器240用于将基本访问请求的虚拟页面ID(即,发送给TLB的虚拟页面ID)与输入矢量210中的其他请求的虚拟页面ID进行对比。其虚拟页面ID与基本请求的虚拟页面ID相匹配的任意待定的请求(包括基本请求自身)被仲裁器230选为候选请求并被发送给对应于缓存的四个组20的四个组比较器250-0到250-3。不具有与基本请求相同的虚拟页面ID的请求不被选为候选,因此必须等待直到后面的周期来被服务。
每个组比较器250具有组鉴别器252和缓存行鉴别器254。组鉴别器252-0检查由比较器240选择的每个候选请求的地址,并根据该地址的一部分(通常是页面偏移部分46的一部分)确定该地址是否对应于组0。如果存在对应于组0的任意候选访问请求,则这些请求中的第一(例如,在最高优先级矢量条目中的请求)被选择,并且以组0为目标的任意其他请求被提供给缓存行鉴别器254。如果以组0为目标第一候选请求是加载请求,则缓存行鉴别器254检查以组0为目标的其他候选请求是否与以组0为目标的第一候选请求以同一缓存行为目标。如果是,则这些请求与组0的第一候选请求合并,并且合并的请求被提供给选择器260。如果不存在组0的其他候选请求与组0的第一候选请求以同一缓存行为目标,或第一候选请求是合并缓冲器条目,则为组0选择的第一候选请求被提供给选择器260(合并缓冲器条目不能与加载请求合并)。
同时,其他组比较器250-1到250-3对于组1、2和3执行与组比较器250-0同样的操作。选择器260接收由每个组比较器250-0到250-3选择的请求(可以是单个请求或合并的请求),然后发布以由缓存为每个组20的最多一个请求提供服务。然后,选定的请求被提供给服务该请求的缓存6,要么响应于加载请求返回一个值,要么响应于合并缓冲器条目中指示的存储请求向缓存写入值。然后,访问请求的结果通过总线280被写回到处理器,如图12所示。当执行缓存访问时,在可能的情况下,缓存6以上述方式使用从路表14中提供的路信息来执行简化的缓存访问。
因此,如图12和图14所示,仲裁器230只将与从输入矢量10中选择的基本访问请求访问相同页面的那些请求选为候选请求。基本请求可以是,例如,最老的请求,最高优先级的请求或给定类型的最高优先级的请求。然后,仲裁器230在候选请求中选择请求来以使得访问遍及缓存6的四个组20且以同一缓存行为目标的请求被合并的方式进行服务。采用这种方式,在候选请求中,可实现缓存的最高效的利用。
注意,选择器260可限制在同一周期内可被提供给缓存6的请求的总数量。将缓存6连接到处理器4的结果总线280的数量可被限制,因此,即使很多请求可以被仲裁器230合并。但是选择器260可能不得不限制服务的请求的总数量为结果总线280的数量。例如,在图12中,存在4个结果总线,因此,选择器260每个周期可最多选择四个读取请求。不需要结果总线280的一个或多个合并缓冲器条目也可基于在同一周期内可被缓存6服务的请求的数量而被选择。要被服务的请求的选择可以不同方式作出。例如,选择器260可根据加载在输入矢量210中的位置来授予其优先权。
虽然每个组比较器250的缓存行鉴别器254可以将每个组选定的第一候选请求与以同一组为目标的所有其他候选请求进行对比,但是在图14的示例中,组比较器250只将其他三个候选请求与该组的第一候选请求进行对比。通过限制对比的次数(所述对比用于标识要被合并的请求),可减少对比电路的数量。实际上,在同一周期中,不太可能出现多于四个来自输入矢量的访问请求以同一组且同一缓存行作为目标的情况,因此,整体面积和能量效率可通过降低比较器的数量而提升。在非常少见的情况下,多于四个访问请求在同一周期内以同一组且同一缓存行作为目标,一些请求可被延迟直到下一个周期。此外,随着对同一缓存行的大多数访问趋向于连续,通过只对比有限数量的连续的请求来标识要被合并的请求,可有效地实现对比。因此,比较器250可在不对比任意其他请求的情况下,将后面三个连续的请求与第一候选请求进行对比。
图12到图14示出了在同一周期内,只有以单个页面为目标的访问请求可被服务的示例。但是,在同一周期内也可以允许多于一个页面被处理,例如,两个页面地址。因此,在同一周期内,TLB 12和路表14将需要访问两个TLB条目和路表条目。因此,额外的TLB端口可被提供来接收第二虚拟页面地址,并且允许两个同时的TLB表检索。仲裁器230将并行执行由页面比较器240和组比较器250-0到250-3执行的操作的多个实例,每个虚拟页面ID的一个实例同时被处理。选择器260将从每个组比较器250-0到250-3接收为每个虚拟页面ID发布的请求,然后将在这些请求中进行选择并且每个组20发布一个请求来被缓存6服务。
提供电路以在同一周期中处理两个不同的页面地址可以是有用的,因为一些应用可能需要存储器复制操作,在该存储器复制操作中,数据从一个存储位置读出并写到不同存储位置。这样的操作可能经常需要针对两个不同存储器页面执行数据访问请求,因此,通过实现以不同存储页面为目标的同时访问请求以允许这些操作在同一周期中并行发生可能是更高效的。但是,通过限制在单个周期中能够被处理的不同页面的最大数量为两个,电路仍然可以比访问请求指定任意数量的不同页面地址被同时处理的情况效率更高。总之,本技术可应用于能够在同一周期中被处理的不同页面地址的最大数量少于能够被缓存并行处理的访问请求的总数的任意情况。
图15示出了使用图12所示的装置来处理数据的方法。在步骤300,下一个处理周期开始。在步骤302,来自地址计算级10-0到10-3的任意新的请求被输入到输入矢量210中。同样,如果合并缓冲器16中存在准备从合并缓冲器16中被逐出的合并缓冲器条目,则该合并缓冲器条目也被输入到输入矢量210中。同样,由处理器发布的任意新的存储被写到存储缓冲器15,在存储缓冲器15,这些存储可稍后被合并以形成合并缓冲器条目16。
在步骤304,由第一有效矢量条目(包含基本访问请求)指定的虚拟页面ID被发送给TLB 12。在步骤306,TLB 12接收第一有效矢量条目的虚拟页面ID,并定位相应的TLB条目。TLB使用TLB条目将虚拟页面ID转换为物理页面ID,并向仲裁单元230返回该物理页面ID。同样,在步骤308,路表14访问相应的路表条目,并且路表14向仲裁单元230发送包含在路表条目中的路信息。当请求被发送给缓存6以进行服务时,仲裁单元230向缓存6提供相应的物理页面ID和路信息以供其在服务请求时使用。因为同一周期中被服务的所有请求共享同一页面ID,因此同一物理页面ID和路表条目可被用于所有请求。
同时,在步骤310,仲裁单元230将输入矢量210中具有同一虚拟页面ID作为发送给TLB 12的虚拟页面ID的加载请求或合并缓冲器条目选为候选访问请求。
在步骤320,组比较器250-0检查在步骤310选择的任意候选访问请求是否需要访问组0(这些请求被称为“组0候选访问请求”)。如果存在至少一个组0候选访问请求,则在步骤322,组比较器250-0检查这些请求中一个是否是合并缓冲器条目。如果是,则在步骤324,该合并缓冲器条目被选以由缓存进行服务。如果不存在组0候选合并缓冲器条目,则在步骤324,组比较器250-0选择以组0为目标的第一有效候选加载请求。在步骤326,缓存行鉴别器250-0检查目标为组0的其他候选加载,并检查是否存在目标为与在步骤324选择的第一组0候选加载相同的缓存行的任意其他组0候选加载。如果存在这样的其他加载,则在步骤328,目标为同一缓存行的加载被合并,并且选择器260选择合并的请求以由缓存进行服务。如果不存在目标为与第一组0候选加载相同的缓存行的其他组0候选加载请求,则在步骤330,第一组0候选加载被选择用于由缓存进行服务。
同时,在步骤340、350和360,其他组比较器250-1、250-2和250-3对于在步骤310选择的、目标分别为组1、2和3的候选请求执行与步骤322到330相同的步骤。因此,对于每个组,如果存在至少一个候选请求以该组为目标,则请求将针对该组而被选择。所有选定的请求被发送给缓存6,并且在步骤380,由缓存6使用在步骤306、308获得的物理页面ID和路表条目进行服务。在步骤382,缓存6向路表14发送信号表示是否需要更新路表信息(缓存访问中的一个是否导致缓存行填充、逐出、或微路表未命中/缓存命中,如先前所述),并且路表14相应地更新路表条目的相应字段。在步骤384,输入矢量210中剩余的、在该周期中未被缓存6服务的任意访问请求被存储在矢量条目#1、#2或#3用于在下一周期中选择,如图13所示。因此,这些请求将被授予在新的请求之前的优先级。在步骤300,下一个周期开始,并且图15的方法再次开始。
存储缓冲器15和合并缓冲器16在同一周期中只允许一个虚拟页面地址被处理的实施例的环境下可被进一步优化。为了允许每个周期多达四个加载的完全关联检索,用于检索存储缓冲器15和合并缓冲器16的相应的比较器阵列通常需要被重复四次。但是,如果一个周期内被服务的所有请求不得不访问同一页面,则负责地址对比的比较器阵列可被分离为用于虚拟页面地址的一个公用比较器和用于剩余的地址字段的四个独立的比较器。对于使用32位地址和4千字节页面的系统,这种方法节约了三次20位比较,从而节约了能量。
总之,本技术能够只用有限数量的TLB端口来执行TLB转换以及在系统的其他部分中的有限数量的比较器(例如,在仲裁器230或缓存6中)来彼此并行地服务多个缓存访问。这种方法使得系统效率更高且能量消耗更低。
下面将提供关于本技术的进一步的信息。
1.简介
现代无序超标量处理器基于推测执行、宽发布窗和多数据路径来开发指令级并行(ILP),并基于包括快速片上SRAM缓存的存储器分级结构来提升存储器访问延迟和吞吐量。由于所有指令中很高比例的指令是存储器参引(对于运行在ARMv7上的SPEC CPU2000,平均为40%),第一级别数据缓存并行支持多个访问(见第2部分)是至关重要的。新一代微处理器中常见的先进的存储器推测和消歧技术,以及向SIMD计算范式提供支持并且能够引入对存储器子系统的更多要求条件的矢量扩展(如IntelAVX和ARM NEON)使这一问题恶化。
但是,有限的能源和半导体技术缩放中的限制导致移动设备的固定的能量预算;此外,在台式机和服务器部分中,散热和电量成本正变得越来越重要。作为结果,能量效率已变成微处理器设计的决定性因素,以及性能提升的主要障碍之一。由于缓存是片上功率消耗的主要贡献者之一,因此缓存级优化需要将性能的提升与能量效率的下降进行权衡。
本技术解决了以能量高效的方式实现多访问L1数据缓存的问题。现有高端微体系结构(例如,Intel的Sandy Bridge和AMD的Bulldozer)每个周期允许多达两个128位的加载和一个128位的存储。二者均基于物理多端口和缓存分组。前面的技术基于具有多个端口的改变的SRAM单元;其允许低的访问延迟,但是引入了大的能量和面积损耗。相反,通过利用多个较小的结构,每个保存缓存行的子集,分组有效地降低了每个访问的能量消耗。虽然组能够被独立访问以服务多个存储器参引,但是映射到同一组的访问需要被序列化(组冲突)。即将到来的一代处理器需要更复杂的缓存接口来处理激进(aggressive)的存储器推测和消歧技术以及先进的矢量扩展(例如,支持非单元步幅加载的Intel的AVX2)。
处理多个同时的存储器访问的问题已经在矢量机器的环境中被分析了。Tarantula、CODE和VT体系结构是专用矢量体系结构的示例。但是,这些设计需要大量的专用硬件,并且虽然使用充足的数据级并行实现了高效的工作负载,但是实现的解决方案不适合通用微处理器。现代缓存的关键特征是高容量和组相关以分别容纳大的工作组和降低未命中率。然而,虽然具体数据只可被放置在一个路中,但是n路组相关缓存的查找需要n个标签对比和n个数据阵列访问。试图通过避免多余访问来节约能量的技术可分类为“路预测”、“路评估”和“路确定”策略。第一组基于MRU统计来预测路。虽然这一概念实现起来简单,但是错误预测需要第二次缓存访问来找到先前被丢弃的路中的想要的数据。其他策略试图通过基于选择性直接映射和路预测的结合来提高预测精度来缓解这一问题。路评估技术传递一组路而不是单个路。如果想要的数据存在于缓存中,则其保证在那里找到。因此,缓存访问需要不多于一个周期,但是可能为多个冗余标签对比消耗能量。可选的一组技术确定而不是预测路。路确定单元(WDU)在小的缓冲器中存储一组最近使用的缓存行的路信息。每个行精确地与一个路相关联,并且保证在那里命中或未命中整个缓存。WDU需要完全关联查找结构,该完全关联查找结构每个并行访问包括一个端口,并导致反比于其大小的能量效率。因此,其限于具有被设计为并行服务低数量的加载和存储的缓存访问的高的暂时局域性的系统。
本技术中提出的多路访问低能量缓存(MALEC)是基于连续存储器参引非常可能访问同一页面的发现的。因此,其在多个访问之间共享存储地址转换结果,并且简化超标量无序处理器中公用的某些组件(即,存储和合并缓冲器)的查找结构。基于页面的访问分组还允许应用一小组比较器来标识访问同一缓存行的加载。在这些加载中共享从单个缓存访问接收的数据有效地降低了组冲突的数量。此外,MALEC引入了新的路确定策略,该路确定策略同时向访问同一页面的加载和存储提供了路信息。其能够再使用TLB查找需要的地址对比来简化其自身的查找机制。增加了路确定的有效性信息,其使得大多数存储器参引完全避免了标签对比并且直接访问想访问的缓存行。这一特征将MALEC与需要用至少一个标签对比来核实其结果的、D-缓存的其他预测策略区分开。
2.动机
超标量处理器的基本性能度量是每个周期执行的指令的数量。我们对SPEC CPU2000和MediaBench2基准测试套件(benchmark suite)的分析显示出存储器参引对该度量有严重影响。实际上,它们构成了所有指令的40%(加载∶存储比例=2∶1)。在矢量而不是标量上操作的SIMD扩展进一步加剧了对强大的缓存接口的需求。
图16(i)示出了对L1D-缓存的连续读取访问之间的关系。结果使用二进制仪表工具获取,以分析对于十亿指令区间的由Simpoint v3.0标识的每个基准测试的最具代表性的执行阶段。特别地,图16(i)示出了总体上67%的连续的读取,随后是至少一个对同一页面的读取;即,15%、14%、12%、6%和20%的读取之后分别是1、2到3、4到7、8到15和多于15个对同一页面的读取。图16(ii)通过允许对不同页面的一个中间访问来扩展该分析,结果导致83%的读取之后是至少一个对同一页面的访问。允许两个和三个中间访问进一步将该数值分别提高到90%和95%(未示于图16中)。因此,大多数加载适合于第4部分介绍的基于页面的存储器访问分组。对于存储的类似的分析显示了更高等级的地址局域性。但是,因为存储和合并缓冲器(在第3部分中说明)显著改变了相应的缓存访问模式,因此其在这里不作进一步讨论。
图16(iii)调研了基于行而不是基于页面的存储器访问分组的时机。其显示46%的加载之后是至少一个访问同一缓存行的其他加载。MALEC通过允许多达四个加载分享从一个具体缓存行读取的结果来利用该发现。第6部分针对特定MALEC配置,分析了基于页面的存储器访问分组和D-缓存行共享的性能影响。
3.基本处理器缓存接口
因为MALEC的目标是无序超标量处理器,因此考虑与这些设计相关的各种复杂组件是很重要的。图17以简化形式示出了复杂L1缓存接口。由处理器发布的每个加载和存储经历地址计算、地址转换、数据访问和,如果需要的话,较低等级缓存访问。地址计算电路生成应用专用虚拟地址,该专用虚拟地址在存储器分级结构访问之前,需要被转换为物理地址。注意,MALEC假设物理索引、物理标签的L1数据缓存,因为这在今天的微处理器中是常用的设计选择。地址转换基于页面粒度(例如,4千字节存储器地址空间)而被执行。它们包含转换后备缓冲器(TLB)和页表的分级结构。TLB是离处理器最近的,并且在一小组最近访问的页面上保存信息以降低转换延迟和能量消耗。微TLB(uTLB)通过只包括TLB条目的一个子集来进一步利用数据局域性。同样,图17的一部分采用本示例中使用的存储器地址位字段的命名规范。位字段大小对应于第6部分中说明的设计参数;即,32位系统总线,4千字节页面和在64字节宽的行中保存32千字节的数据的4路组相关缓存。虽然这些参数中的多数对于高性能处理器是可行的,但是32位系统总线的选择是由使用的仿真结构指定的。然而,具有较大物理地址空间(40-48地址位)的体系结构从MALEC(见第4部分)引入的能量优化中获得更多好处。
示于图17中的存储缓冲器(SB)被用于无序机器中以允许存储的推测执行。它保存关于飞行存储的信息,并允许向从属的加载转发数据。不是图17的一部分但后面会相关的是SB对于加载的等效物。加载队列保存飞行加载,并且被用于检测数据相关性破坏。当存储被提交时,相应的SB条目被逐出,并发送给合并缓冲器(MB)。MB是小的存储器结构,它试图通过合并来自对同一地址区字段的多个存储的数据来降低L1缓存访问的数量。只有最新提交的存储不会被合并或分配给空闲的条目,最老的MB条目被逐出并写到L1缓存。加载通常并行访问SB、MB和L1缓存来避免额外的延迟。多路复用器结合从所有三个源接收到的结果,并授予SB优先权高于MB,MB高于L1缓存。
图2示出了4路组相关缓存的示例。该设计使用了两个独立的缓存组,每个缓存组保存对应于特定地址区域的数据;例如,组0偶数行,组1奇数行。因为组比整个缓存小,因此它们可被更快速地访问且为能量更高效的。组由存储地址的索引字段中的最低有效位标识(见图17)。索引字段的剩余部分被用于选择具体组的缓存行。每行由标签阵列条目和数据阵列条目组成,标签阵列条目清楚地标识其存储位置。图2中的组还是4路组相关的,其允许每行缓存在四个不同位置。这显著改进了命中率,但是四个可能的位置的查找增加了每个访问所需的能量。传统的缓存需要并行访问所有四个标签和数据阵列对来匹配标签并选择相应的数据。
4.基于页面的访问分组
图12示出了所提出的、设计为并行服务多达四个存储器请求的多路访问低能量缓存接口的示例。注意,WT和uWT将在第5部分中作为路确定策略的一部分而被说明。它们对于MALEC的操作不是必需的。该装置支持多达四个并行的存储器访问。实现该容量的直觉的方法是简单地增加相应队列的端口的数量,并且重复地址计算的电路和优先级多路复用。
结束地址计算的存储直接被发送给SB以降低每个周期的地址转换的数量。这不会造成明显的性能损害,因为存储被提交到MB而不是L1。相反,结束地址计算的加载表示所谓的输入矢量的八个条目中的四个。剩下的条目是在先前的周期中没有被服务的多达三个加载和多达一个合并缓冲器条目(MBE)。条目按照以下顺序授予优先级:老加载、新加载和被逐出的MBE。被逐出的MBE的低优先级的原因是以下事实:即,由MBE表示的存储已经被提交,因此时间不再重要。每个周期的开始,最高优先级输入矢量条目的虚拟页面ID(vPageID,见图17)被传递给uTLB用于传统地址转换。同时,该vPageID与所有剩余的、当前有效的条目进行对比。然后,所有匹配的条目被传递给仲裁单元,在仲裁单元,对于每个组,具有最高优先级的访问被标识,并且(在加载的情况下)用它后面多达三个连续的加载进行分组。分离vPageID与剩余地址位的对比降低了仲裁单元的比较器的复杂度。通过只对比三个连续的加载而不是所有输入矢量条目来进一步降低该复杂度的方法覆盖了大多数可分组的加载,如第2部分所示。接着,通过选择四个最高优先级加载,仲裁单元限制了加载的数量为可用结果总线的数量。替换的系统可确定需要最少数量的缓存访问的加载的组合。但是,该电路增加的复杂度在每个周期将需要更多能量和时间。
由仲裁单元选定的存储器访问被发送到L1缓存,并且在加载的情况下,还发送到SB和MB。缓存本身未改变为允许高度优化的设计的实现。特殊情况是子组的缓存试图通过将数据阵列分割为更小的独立的组(通常是128位宽)来节约能量。MALEC需要这些设计从两个子组返回每个读取访问的数据,而不只是那些超出一个子组的。这有效地加倍了加载能够共享从缓存读取的结果的可能性。SB和MB的设计略有改变以降低并行服务多达四个加载所需的额外端口的能量影响。特别地,它们的查找结构被分为两个部分。一个用于查找对应于在所有四个加载之间共享的vPageID的地址位。第二个用于对比标识访问专用地址区域(即,缓存行/子组)的剩余位。由于两个部分同时被查找,因此,在没有引入额外延迟的情况下,MB和SB能量需求降低。注意,由于SB和MB与L1缓存不同,是虚拟标签的,因此,vPage查找实际上可在地址转换之前执行。但是,这将使在分离的流水线级中的地址转换和数据访问的执行复杂化,因为它对于高性能处理器是常见的。
总之,MALEC试图通过利用像缓存分组和合并缓冲器技术来并行服务多个指令。此外,它允许加载共享从L1缓存行读取的数据,并引入机制来提升能量效率。基于页面的存储器访问分组被用于重复使用页面转换结果,并简化仲裁单元、SB和MB中的地址对比。仲裁单元通过对于具体的组限制最高优先级加载后面三个连续的访问而被进一步简化。
MALEC的一个关键问题是由其组件引入的延迟。为解决这一问题,输入矢量通过与uTLB/TLB访问同时执行vPageID对比来掩盖vPageID对比的延迟。剩余地址位之间的、标识访问同一缓存行的加载的对比在仲裁单元中并行完成。因此,单元总体延迟相当于一个窄比较器和一些额外的控制电路。另一个问题是MALEC的可扩展性。实际上,效率与处理器生成的并行存储器请求的数量成正比。其原因是在输入矢量中具有可以共享地址转换、路信息和从L1读取的数据(对于针对同一缓存行的加载的情况)的多个访问的可能性增加。此外,MALEC会给具有40比特或80比特地址空间甚至更多地址空间的的系统带来好处,因为地址转换数量的降低以及SB和MB查找的简化所节约的能量超出了输入矢量中的vPage对比所需的额外的能量。此外,更大的L1标签阵列进一步提升了MALEC的路确定策略(见第5部分)的效率。最后,无序处理器的主要问题是精确的异常处理。由MALEC自身保存的推测状态的数量被限制为输入矢量和仲裁单元中的加载。所有其他信息(例如,以uWT/WT条目或被逐出的MB条目的形式)是非推测的,因此对于任意恢复机制是无关紧要的。
5.基于页面的路确定
在本技术中提出的路确定策略的关键组件是所谓的路表(WT)和微路表(uWT)(见图12)。它们与TLB和uTLB严重交织。实际上TLB和WT与缓存的标签阵列和数据阵列的表现类似。TLB命中除返回地址转换结果之外,还返回相应的WT条目。因此,页面大小的地址查找的能量被分在这两个组件上。每个WT条目包含一个页面中的所有缓存行的路和有效性信息。对于具有4千字节页面和64字节缓存行的系统,每个WT条目在4096/64=64行上保存信息。WT条目中的数据的位置无疑会对与其相关联的行地址进行编码;即,第一位字段和最后位字段分别标识行0和63。每行存储的比特数正比于L1缓存相关性;即,每4路2比特。注意,由四个组组成的缓存可在分离的组中保存行0…3,而在同一组中保存行0、4、8、…60(见第3部分)。通过视为路0对于行0…3无效,路1对于行4…7无效,以此类推,MALEC将与每行相关联的2比特中的有效性信息进行合并。因此,每个WT条目的大小结果为64*2比特=128比特。这不会显著影响L1置换策略的性能。特别地,基于所述的缓存接口的仿真,LRU置换策略和在第6部分中介绍的基准测试套件没有表现出L1命中率的任何可测量的减少。
仲裁单元通过将路关联到想要的缓存行的分组,并且将它们转发给相应的缓存组来评估WT条目。MALEC通过支持先前介绍的图17的缓存设计的两种不同的访问模式来利用路信息:
传统的缓存访问(路未知):
·并行访问所有标签阵列和所有数据阵列
·选择与匹配的标签相关联的数据
简化的缓存访问(已知且有效的路):
·没有标签阵列被访问
·只访问一个特定数据阵列
简化的缓存访问的前提是路信息的准确。uWT和WT的更新在每个缓存行填充和逐出时被执行,因此,WT只在如果没有发现uWT条目的情况下被访问。uWT和WT的同步基于在uTLB更新期间传递的全部条目。因为由缓存生成的更新信息是物理地址的,因此uTLB和TLB需要被改变以允许除基于虚拟PageID的查找之外还有基于物理PageID的查找。此外,有限数量的TLB条目可能需要在缓存中仍然具有相应的行的页面的逐出。如果这些行中的一个后来又被访问,则新的WT条目被分配且所有路信息是无效的。为了补偿信息的丢失,最后读取的uWT条目保持活动并且如果需要的话,路信息在后面的缓存命中时被更新。
路确定策略的重要参数是能量消耗、延迟和可扩展性。由于仲裁单元中的地址对比和uWT/WT访问被并行处理,因此由两个组件引入的延迟可重叠。该策略被设计用于同时为一个页面内的所有行传递路预测,因此,该策略独立于MELAC的实际计算性能。该策略对于更宽的L1缓存行和地址总线(例如,48比特)表现的能量效率更高,因为WT条目由于重复使用的TLB地址查找增加而分别在大小和结余上减小。虽然更高的缓存相关性将需要更宽的WT条目,但是由于路确定实际上提高了该策略的效率,从而节约了额外的能量。最后,由于大的页面(例如,64K)将显著增加每个WT条目保存的行的数量,因此当进入uTLB时,该策略需要TLB条目被量化为4千字节的片段。WT本身可被分成很少数量的块,每个块表示对应于4千字节地址空间的数据。通过以FIFO或LRU方式分配和置换块,它们的数量可以比表示整个页面所需的数量要小。
6.评估和结果
为了评估MALEC在性能和能量消耗上的影响并将其与已存在的策略进行比较,gem5模拟器系统被扩展以支持能够对本研究涉及的微体系结构方面以周期级精度进行建模的增强的处理器-缓存接口。从gem5获取的访问统计数据,然后与使用CACTI v.6.5计算的能量估计相结合以确定数据缓存子系统(包括静态和动态组件二者)的能量消耗。特别地,该评估包括以下结构的能量贡献:L1数据缓存(包括标签和数据SRAM阵列和控制逻辑),uTLB+uWT和TLB+WT。虽然建模的L1缓存接口包括其他结构,像LQ、SB和MB,但是这些结构对于整体能量消耗的贡献未被考虑在内,原因有两个:第一,L1、uWT和WT负责L1接口的大多数晶体管,因此负责其泄漏功率;第二,由其他组件(像LQ、SB和MB)贡献的能量在MALEC和分析的基线之间很相似。我们的仿真显示,对于更低的存储器级别,即,L2缓存和主存储器,也是这样的情况,因为MALEC改变L2访问的时间,但没有显著影响其数量或未命中率。
表1:
每个周期的地址计算 | uTLB/TLB端口 | 每个组的缓存端口 | |
Base1ldst | 1ld/st | 1rd/wt | 1rd/wt |
Base2ld1st | 2ld+1st | 1rd/wt+2rd | 1rd/wt+1rd |
MALEC | 1ld+2ld/st | 1rd/wt | 1rd/wt |
表1在以下方面展示了所分析的基线和选择的MALEC配置的特征:每个周期可能的地址计算(ld…加载(load),st…存储(store),ld/st…加载或存储),以及uTLB、TLB和缓存端口的数量(rd…读(read),wt…写(write),rd/wt…读或写)。虽然Base1ldst被限制为每个周期单个加载或存储,但Base2ld1st表示允许并行多达两个加载和一个存储的高性能配置。由于仿真的处理器对Base2ld1st进行了优化,因此在第4部分中介绍的MALEC配置按比例缩小以获得类似的性能。这允许了特别是在Base2ld1st和MALEC之间公平的比较。
表2:
仿真系统的配置基于兼容ARMv7、单核、无序的处理器,并在1GHz下操作。分析的处理器-缓存接口的相关的配置参数总结在表2中。本研究中使用的基准测试套件、MediaBench 2(MB2)、SPEC CPU2000Int和FP表示具有大量不同的存储器访问行为的一组工作负载。在MB2的情况下,我们使用NEON SIMD引擎实现自动矢量化,以通过这些基准测试增加它们对L1接口的压力。为了减少仿真时间,SimPoint v.3.1被用于标识每个基准测试的最具代表性的执行阶段。每个阶段包括相应的参考工作组的十亿指令。
6.1性能评估
图18示出了Base2ld1st和MALEC相对于Base1ldst在每个基准测试需要的CPU周期方面的性能。该图还包括每个套件以及整个分析的基准测试的算术平均值。可以看出,虽然MALEC使用与Base1ldst类似的单个端口的uTLB、TLB和L1,但其获得了9%的平均性能提升。这只比Base2ld1st少1%,而Base2ld1st需要这些组件为多端口的。与SPEC-Int、SPEC-FP和MB2相比,平均产量性能提升7%、10%和16%。SPEC-FP比SPEC-Int增加了收益的原因是与存储器参引相比,控制指令的数量减少;即,SPEC-FP基准测试是更多数据而不是控制强度。MB2收益更多,因为其媒体核心程序依赖频繁的、高度结构化的存储器访问来在大量数据组上计算基本操作。特别地,mcf和art显示与Base1ldst相比几乎没有提升。其原因是与低局域性相结合的大的工作组导致高的未命中率,该高的未命中率并不得益于较快的L1访问。相反,djpeg和h263dec显示出高的访问局域性,并且趋向于并行执行存储器访问,从而导致MALEC大约30%的提速。
MALEC高于Base1ldst的性能收益源于两个机制:对同一缓存行的加载的分组和并行访问多个缓存组。图20示出了MALEC的结果和不具有对加载进行分组的能力的配置(MALEC NoLd-Grouping)。平均而言,加载的分组对MALEC的整体性能提升贡献了大约20%。但是,对于特殊基准测试,该值更高出很多;例如,gap的56%和mpeg4enc的45%。最后,图18中MALEC和Base2ld1st之间的仅为1%的整体性能区别证实了第2部分中获得的结果,该结果暗示在一个周期中只处理那些访问同一页面的指令是足够的。
6.2能量评估
图19示出了在先前的部分中分析的基线的动态的和整体的能量消耗。Base2ld1st的41%的动态能量消耗的增长是由访问其uTLB、TLB和L1的额外的端口所需的能量导致的。相反,MALEC与Base1ldst相比,通过使用基于页面的访问分组和路确定来在单端口的组件上操作并执行较少能量强度的“简化的缓存访问”(见第5部分)而节约了33%的动态能量。注意,MALEC对于mcf通常很高的结余源于基准测试的异常高的未命中率(整体平均大约7次)。由于MALEC试图在对同一缓存行的加载中共享L1数据,因此访问和未命中缓存的加载的有效数量降低。在不具有此能力的情况下,MALEC对于mcf将实际消耗高出5%而不是降低51%的动态能量。
在分析的32nm技术库中,由于泄漏贡献了整体能量消耗的大约50%,因此考虑它是重要的。图19示出了Base2ld1st的平均能量消耗实际上比Base1ldst高出52%。其原因是由其额外的uTLB、TLB和L1端口引入的泄漏功率,该泄漏功率超过的由于计算次数的减少而节约的功率;例如:额外的读取端口将L1的泄漏功率增加了大约80%,但是平均计算次数只降低了10%(见第6.1部分)。对于MALEC也可发现类似的效果。虽然它具有与Base1ldst同样数量的uTLB、TLB和L1端口,但是它是改变的缓存模型,并且新引入的uWT和WT引起了额外的泄漏功率。因此,它的整体能量节约降低到22%。但是,和与MALEC获得了类似性能的Base2ld1st相比,节约了48%。
替换的路确定策略可被考虑来减低MALEC的泄漏功率。与这里提出的路表类似,路确定单元(WDU)(见第1部分)可被实现以支持如第5部分中介绍的“简化的缓存访问”。它在小的缓冲器结构中保存最近访问的缓存行的路信息。图21将没有路确定情况下(左列)、具有路表(左第二列)以及具有保存8、16和32个条目的WDU(从左到右其余3列)的MALEC实现进行了比较。最好WDU设置(16条目)的平均动态能量消耗比提出的路表策略高出大约2%。其原因有两个。第一,与单个端口的路表不同,WDU需要三个端口来服务由分析的MALEC实现并行处理的多达三个请求。因为它执行标签大小的地址字段的完全相关查找,因此每个WDU访问的能量与uWT访问类似(对于16个条目的WDU,只减少40%)。第二,所有WDU配置覆盖的存储器访问大大少于路表(见图22),因此,承受了“传统的”而不是“简化的缓存访问”所增加的数量的能量损耗(见第5部分)。相反,考虑该策略源自其小的尺寸的低泄漏功率,其整体能量消耗非常接近默认MALEC配置(在图21中,小于1%的区别)。但是,虽然路表的能量消耗很大程度上不受并行存储器访问的期望数量的影响,但是WDU不能很好地测量。因此,更多激进的超标量处理器或复杂矢量扩展将明显偏爱路表多于WDU。
一种直接提高MALEC的泄漏功率消耗的方法是降低uTLB条目的数量从而减低uWT的大小。但是,这种方法有效降低了uWT的覆盖范围,从而增加了由于更多WT访问而导致的动态能量消耗。我们的仿真显示出对于分析的MALEC实现,该权衡(trade-off)导致整体能量消耗很大程度上独立于uTLB的大小;即,4、8、16和32条目之间的能量区别不超过1%。放弃完全有利于较低泄漏的WT显著降低了由路确定覆盖的L1访问的数量。使用16条目uWT而不使用WT的仿真获得近似70%的平均覆盖,并提高MALEC 5%的能量消耗。
7.结论
本技术提出了到高性能无序超标量处理器的L1缓存接口中高能量消耗的问题。多路访问低能量缓存(MALEC)是基于连续存储器参引非常可能访问同一页面这一发现的。其在多个加载和存储之间共享存储器地址转换结果,简化存储和合并缓冲器的查找结构,并且在访问同一缓存行的加载之间共享L1数据。此外,其引入了新的路确定策略,该策略同时向映射到单一页面的所有缓存行提供路信息。MALEC基于32nm实现的仿真被评估,该32nm实现使用32K字节、具有64字节行的4路组相关L1数据缓存和激进无序处理器来执行SPEC CPU2000和Media-Bench2的基准测试。与每个周期能够服务1个加载或存储的简单缓存接口相比,选择的MALEC配置获得9%的提速,使用减少12%的能量。相反,只获得稍高于MALEC的性能的传统接口消耗比基线高出51%而不是减少12%的能量。
虽然本发明的示意性实施例这里已结合附图进行了具体说明,但是应该理解的是,本发明不限于这些具体的实施例,并且在不偏离由所附权利要求限定的本发明的范围和精神的情况下,本领域技术人员可在其中实现各种改变和改进。
Claims (34)
1.一种数据处理装置,包括:
处理电路,所述处理电路被配置为处理数据;
缓存,所述缓存包括用于存储数据的多个缓存路;
转换后备缓冲器TLB,所述转换后备缓冲器TLB被配置为存储多个TLB条目,每个TLB条目标识存储位置的关联页面的虚拟到物理地址映射;以及
路表,所述路表被配置为存储多个路表条目,每个路表条目对应于所述多个TLB条目中的一个;其中:
每个路表条目包括路信息,所述路信息用于针对与对应的TLB条目相关联的页面的每个存储位置,标识所述缓存的所述缓存路中的哪一个存储着与存储位置相关联的数据,如果该缓存路存在的话;并且
响应于来自所述处理电路的、对于对应于目标虚拟地址的目标数据的数据访问请求,所述TLB被配置为访问对应于所述目标虚拟地址的目标TLB条目,并且所述路表被配置为访问对应于所述目标TLB条目的路表条目,并且所述缓存被配置为基于包括在与目标数据相关联的存储位置的所述对应的路表条目中的路信息来执行缓存访问。
2.如权利要求1所述的数据处理装置,其中所述缓存的每个缓存位置具有对应的标签数据,所述标签数据用于标识与存储在缓存位置中的数据相关联的存储器地址的一部分。
3.如权利要求2所述的数据处理装置,其中如果包括在与目标数据相关联的存储位置的所述对应的路表条目中的所述路信息指示哪个缓存路存储着目标数据,则所述缓存被配置为通过从路信息中指示的缓存路访问目标数据来执行所述缓存访问,而不访问所述标签数据。
4.如权利要求3所述的数据处理装置,其中如果所述路信息指示哪个缓存路存储着目标数据,则所述缓存还被配置为除了路信息中指示的所述缓存路之外,不访问其他缓存路,来执行所述缓存访问。
5.如权利要求2到4中的任一项所述的数据处理装置,其中如果包括在与目标数据相关联的存储位置的所述对应的路表条目中的所述路信息未指示哪个缓存路存储着目标数据,则所述缓存被配置为通过从每个所述缓存路中并行访问数据并根据所述标签数据确定所述被访问的数据中的任意数据是否对应于所述所述目标数据,来执行所述缓存访问。
6.如前述权利要求中的任一项所述的数据处理装置,其中响应于与分配给所述缓存的存储位置相关联的数据,所述缓存被配置为控制所述路表以更新对应于所述存储位置的路信息以指示哪个缓存路存储着所述数据。
7.如前述权利要求中的任一项所述的数据处理装置,其中每个路表条目包括有效性信息,所述有效性信息用于针对与对应的TLB条目相关联的页面的每个存储位置,标识与该存储位置相关联的数据是否存储在所述缓存中。
8.如权利要求7所述的数据处理装置,其中响应于与分配给所述缓存的存储位置相关联的数据,所述缓存被配置为控制所述路表以更新对应于所述存储位置的所述有效性信息以指示所述数据存储在所述缓存中;并且
响应于与从所述缓存中逐出的存储位置相关联的数据,所述缓存被配置为控制所述路表以更新对应于所述存储位置的所述有效性信息以指示所述数据未存储在所述缓存中。
9.如权利要求2到8中的任一项所述的数据处理装置,其中所述标签数据标识与存储在对应的缓存位置中的数据相关联的物理地址的一部分。
10.如权利要求9所述的数据处理装置,其中所述TLB包括内容可寻址存储器,并且所述TLB条目能够通过物理地址和虚拟地址二者来检索。
11.如权利要求5所述的数据处理装置,其中如果所述路信息未指示哪个缓存路存储着所述目标数据,并且所述缓存根据所述标签数据确定从所述缓存路中的一个访问的数据对应于所述目标数据,则所述缓存被配置为控制所述路表以更新所述路信息以标识该缓存路存储着所述目标数据。
12.如权利要求11所述的数据处理装置,包括存储元件,所述存储元件被配置为存储标识最近访问的路表条目的路表条目标识符;
其中如果所述路信息未指示哪个缓存路存储着所述目标数据,并且所述缓存根据所述标签数据确定从所述缓存路中的一个访问的数据对应于所述目标数据,则所述缓存被配置为控制所述路表以更新由所述路表条目标识符标识的路表条目的路信息。
13.如前述权利要求中的任一项所述的数据处理装置,其中所述TLB是第一级别TLB,并且所述装置包括至少一个更深级别TLB;
其中响应于对于对应于所述目标虚拟地址的所述目标数据的所述数据访问请求,所述第一级别TLB被配置为查找对应于所述目标虚拟地址的目标TLB条目;并且
如果所述第一级别TLB未存储所述目标TLB条目,则所述第一级别TLB被配置为从所述至少一个更深级别TLB访问所述目标TLB条目。
14.如权利要求13所述的数据处理装置,其中所述第一级别TLB的每个TLB条目在所述路表中具有对应的路表条目。
15.如权利要求14所述的数据处理装置,其中所述路表包括第一级别路表,并且所述装置包括至少一个更深级别路表;
其中所述至少一个更深级别TLB的每个TLB条目在所述至少一个更深级别路表中具有对应的路表条目;并且
如果所述第一级别路表未存储对应于所述目标TLB条目的路表条目,则所述第一级别路表被配置为从所述至少一个更深级别路表访问对应于所述目标TLB条目的路表条目。
16.如前述权利要求中的任一项所述的数据处理装置,其中所述TLB和所述路表被所述数据处理装置分开存储。
17.如权利要求1到15中的任一项所述的数据处理装置,其中所述TLB和所述路表包括公用存储器,所述公用存储器被配置为存储多个条目,所述公用存储器的每个条目包括所述TLB的TLB条目和所述路表的对应的路表条目。
18.一种数据处理装置,包括:
处理装置,所述处理装置用于处理数据;
缓存装置,所述缓存装置用于存储数据,所述缓存装置包括多个缓存行;
转换后备缓冲TLB装置,所述转换后备缓冲TLB装置用于存储多个TLB条目,每个TLB条目标识存储位置的关联页面的虚拟到物理地址映射;以及
路表装置,所述路表装置用于存储多个路表条目,每个路表条目对应于所述多个TLB条目中的一个;其中:
每个路表条目包括路信息,所述路信息用于针对与对应的TLB条目相关联的页面的每个存储位置,标识所述缓存装置的所述缓存路中的哪一个存储着与存储位置相关联的数据,如果该缓存路存在的话;并且
响应于来自所述处理装置的、对于对应于目标虚拟地址的目标数据的数据访问请求,所述TLB装置被配置为访问对应于所述目标虚拟地址的目标TLB条目,并且所述路表装置被配置为访问对应于所述目标TLB条目的路表条目,并且所述缓存装置被配置为基于包括在与目标数据相关联的存储位置的所述对应的路表条目中的路信息来执行缓存访问。
19.一种用于数据处理装置的方法,所述数据处理装置包括:缓存,所述缓存包括用于存储数据的多个缓存路;转换后备缓冲器TLB,所述转换后备缓冲器TLB被配置为存储多个TLB条目,每个TLB条目标识存储位置的关联页面的虚拟到物理地址映射;以及路表,所述路表被配置为存储多个路表条目,每个路表条目对应于所述多个TLB条目中的一个;其中,每个路表条目包括路信息,所述路信息用于针对与对应的TLB条目相关联的页面的每个存储位置,标识所述缓存的所述缓存路中的哪一个存储着与存储位置相关联的数据,如果该缓存路存在的话;
所述方法包括:
响应于对于对应于目标虚拟地址的目标数据的数据访问请求,所述TLB访问对应于所述目标虚拟地址的目标TLB条目,并且所述路表访问对应于所述目标TLB条目的路表条目;并且
所述缓存基于包括在与目标数据相关联的存储位置的所述对应的路表条目中的路信息来执行缓存访问。
20.一种数据处理装置,包括:
处理电路,所述处理电路被配置为发布数据的访问请求;
缓存,所述缓存被配置为响应于所述访问请求,而提供对数据的访问;
转换后备缓冲器TLB,所述转换后备缓冲器TLB被配置为在所述访问请求中指定的虚拟页面地址与所述缓存使用的物理页面地址之间进行转换;
输入缓冲器,所述输入缓冲器被配置为缓冲由所述处理电路发布的待定的访问请求;以及
仲裁器,所述仲裁器被配置为在每个处理周期中,选择来自所述输入缓冲器的所述待定的访问请求中的哪一个应被所述缓存服务;其中:
所述缓存能够在同一处理周期中服务M个访问请求,其中M是整数;以及
所述仲裁器被配置为选择所述待定的访问请求以确保所选择的待定访问请求指定最多N个不同的虚拟页面地址,其中N是整数,并且N<M。
21.如权利要求20所述的数据处理装置,其中所述TLB在同一处理周期中能够转换N个不同的虚拟页面地址。
22.如权利要求20和21中的任一项所述的数据处理装置,其中所述仲裁器被配置为选择指定所述N个不同的虚拟页面地址中的一个虚拟页面地址的待定访问请求作为候选访问请求,并且选择所述候选访问请求中的至少一个用于由所述缓存进行服务。
23.如权利要求20到22中的任一项所述的数据处理装置,其中N=2。
24.如权利要求20到22中的任一项所述的数据处理装置,其中N=1。
25.如权利要求24所述的数据处理装置,其中在每个处理周期中:
(i)所述TLB被配置为将由基本访问请求指定的虚拟页面地址转换为物理页面地址,所述基本访问请求包括来自所述输入缓冲器的所述待定访问请求中的一个;
(ii)所述仲裁器被配置为选择所述基本访问请求作为候选访问请求,并且选择来自所述输入缓冲器的、指定同一虚拟页面地址的待定访问请求作为所述基本访问请求;并且
(iii)所述仲裁器被配置为选择所述候选访问请求中的至少一个来由所述缓存使用由所述TLB转换的物理页面地址进行服务。
26.如权利要求25所述的数据处理装置,其中所述基本访问请求是以下各项中的一项:
所述待定访问请求中最老的那个;
所述待定访问请求中具有最高优先级的一个;以及
所述待定访问请求中具有最高优先级的访问类型的一个。
27.如权利要求22所述的数据处理装置,其中所述缓存具有多个缓存行,并且如果多个候选访问请求目标为存储在同一缓存行中的数据,则所述仲裁器被配置为合并所述多个候选访问请求以形成单个合并的访问请求。
28.如权利要求27所述的数据处理装置,其中所述输入缓冲器被配置为缓冲X个待定访问请求,并且所述仲裁器被配置为合并最多Y个候选访问请求为单个合并的访问请求,其中X和Y是整数,并且Y≤X。
29.如权利要求20-28中的任一项所述的数据处理装置,其中所述缓存包括M组缓存行用于存储数据,其中每个组可被独立访问,并且所述缓存在同一处理周期中能够服务指向不同组的多达M个访问请求。
30.如权利要求29所述的数据处理装置,其中对于缓存行的每个组,具有指定所述N个不同虚拟页面地址中的一个并且目标为所述组中的缓存行的至少一个组候选访问请求,所述仲裁器被配置为:
(i)选择所述至少一个组候选访问请求中的第一组候选访问请求;
(ii)如果存在目标为与所述第一组候选访问请求相同的缓存行的一个或多个其他组候选访问请求,则将所述一个或多个其他组候选访问请求与第一组候选访问请求合并,以形成合并的访问请求,并且选择所述合并的访问请求用于由所述组进行服务;并且
(iii)如果不存在目标为与所述第一组候选访问请求相同的缓存行的其他组候选访问请求,则选择所述第一组候选访问请求用于由所述组进行服务。
31.如权利要求30所述的数据处理装置,其中所述第一组访问请求是以下各项中的一项:
所述至少一个组候选访问请求中最老的那个;
所述至少一个组候选访问请求中具有最高优先级的一个;以及
所述至少一个组候选访问请求中具有最高优先级的访问类型的一个。
32.如权利要求20-31中的任一项所述的数据处理装置,其中所述输入缓冲器包括存储电路,所述存储电路被配置为存储在当前处理周期中未被所述仲裁器选择的待定访问请求,存储在所述存储电路中的所述待定访问请求可用于由所述仲裁器在下一处理周期中进行选择。
33.一种数据处理装置,包括:
处理装置,所述处理装置用于发布数据的访问请求;
缓存装置,所述缓存装置用于响应于所述访问请求,而提供对数据的访问;
转换后备缓冲器TLB装置,所述转换后备缓冲器TLB装置用于在所述访问请求中指定的虚拟页面地址与所述缓存装置使用的物理页面地址之间进行转换;
输入缓冲器装置,所述输入缓冲器装置用于缓冲由所述处理装置发布的待定的访问请求;以及
仲裁装置,所述仲裁装置用于在每个处理周期中,选择来自所述输入缓冲器的所述待定的访问请求中的哪一个应被所述缓存装置服务;其中:
所述缓存装置能够在同一处理周期中服务M个访问请求,其中M是整数;以及
所述仲裁装置被配置为选择所述待定的访问请求以确保所选择的待定访问请求指定最多N个不同的虚拟页面地址,其中N是整数,并且N<M。
34.一种用于数据处理装置的方法,所述数据处理装置包括:处理电路,所述处理电路被配置为发布数据的访问请求;缓存,所述缓存被配置为响应于所述访问请求,而提供对数据的访问;转换后备缓冲器TLB,所述转换后备缓冲器TLB被配置为在所述访问请求中指定的虚拟页面地址与所述缓存使用的物理页面地址之间进行转换;
所述方法包括以下步骤:
在输入缓冲器中缓冲由所述处理电路发布的待定的访问请求;以及
在每个处理周期中,选择来自所述输入缓冲器的所述待定的访问请求中的哪一个应被所述缓存服务;其中:
所述缓存能够在同一处理周期中服务M个访问请求,其中M是整数;以及
所述选择步骤选择所述待定的访问请求以确保所选择的待定访问请求指定最多N个不同的虚拟页面地址,其中N是整数,并且N<M。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/468,548 | 2012-05-10 | ||
US13/468,548 US9684601B2 (en) | 2012-05-10 | 2012-05-10 | Data processing apparatus having cache and translation lookaside buffer |
PCT/GB2013/051186 WO2013167886A2 (en) | 2012-05-10 | 2013-05-08 | Data processing apparatus having cache and translation lookaside buffer |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104272279A true CN104272279A (zh) | 2015-01-07 |
CN104272279B CN104272279B (zh) | 2018-01-19 |
Family
ID=48446399
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380023344.8A Active CN104272279B (zh) | 2012-05-10 | 2013-05-08 | 具有缓存和转换后备缓冲器的数据处理装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9684601B2 (zh) |
KR (1) | KR102244191B1 (zh) |
CN (1) | CN104272279B (zh) |
GB (1) | GB2515432B (zh) |
WO (1) | WO2013167886A2 (zh) |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106126441A (zh) * | 2015-05-04 | 2016-11-16 | Arm 有限公司 | 追踪缓存的内容 |
WO2016206421A1 (zh) * | 2015-06-26 | 2016-12-29 | 中兴通讯股份有限公司 | 内存访问处理方法、装置和存储介质 |
CN107066396A (zh) * | 2015-10-15 | 2017-08-18 | Arm 有限公司 | 用于操作虚拟索引的物理标记的缓存的装置及方法 |
CN107278298A (zh) * | 2015-03-03 | 2017-10-20 | Arm 有限公司 | 缓存器维护指令 |
CN107533513A (zh) * | 2015-04-15 | 2018-01-02 | 高通股份有限公司 | 突发转换后备缓冲器 |
CN109074313A (zh) * | 2016-02-03 | 2018-12-21 | 斯瓦姆64有限责任公司 | 缓存和方法 |
CN109426624A (zh) * | 2017-08-24 | 2019-03-05 | Arm有限公司 | 用于高效利用地址转换缓存的装置和方法 |
CN110023916A (zh) * | 2016-12-16 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 一种减少缓存中读/写竞争的方法和装置 |
CN110046107A (zh) * | 2017-11-22 | 2019-07-23 | Arm有限公司 | 存储器地址转换 |
CN110178124A (zh) * | 2017-01-13 | 2019-08-27 | Arm有限公司 | 划分tlb或缓存分配 |
CN110235101A (zh) * | 2017-01-13 | 2019-09-13 | 优创半导体科技有限公司 | 可变转换后备缓冲器(tlb)编索引 |
CN111352865A (zh) * | 2018-12-24 | 2020-06-30 | 北京忆芯科技有限公司 | 存储控制器的写缓存 |
CN111868700A (zh) * | 2018-02-28 | 2020-10-30 | 索尼公司 | 存储器管理系统、存储器管理方法以及信息处理设备 |
CN112052074A (zh) * | 2020-09-29 | 2020-12-08 | 上海兆芯集成电路有限公司 | 处理器建模系统及处理器建模方法 |
CN112540939A (zh) * | 2019-09-23 | 2021-03-23 | 阿里巴巴集团控股有限公司 | 存储管理装置、存储管理方法、处理器和计算机系统 |
CN114138685A (zh) * | 2021-12-06 | 2022-03-04 | 海光信息技术股份有限公司 | 缓存的资源分配方法及装置、电子装置和存储介质 |
CN114528229A (zh) * | 2022-04-21 | 2022-05-24 | 飞腾信息技术有限公司 | 一种缓存数据访问方法、装置及电子设备 |
Families Citing this family (74)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8327115B2 (en) | 2006-04-12 | 2012-12-04 | Soft Machines, Inc. | Plural matrices of execution units for processing matrices of row dependent instructions in single clock cycle in super or separate mode |
EP2527972A3 (en) | 2006-11-14 | 2014-08-06 | Soft Machines, Inc. | Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes |
WO2012015766A2 (en) | 2010-07-28 | 2012-02-02 | Rambus Inc. | Cache memory that supports tagless addressing |
KR101685247B1 (ko) | 2010-09-17 | 2016-12-09 | 소프트 머신즈, 인크. | 조기 원거리 분기 예측을 위한 섀도우 캐시를 포함하는 단일 사이클 다중 분기 예측 |
CN103547993B (zh) | 2011-03-25 | 2018-06-26 | 英特尔公司 | 通过使用由可分割引擎实例化的虚拟核来执行指令序列代码块 |
CN108376097B (zh) | 2011-03-25 | 2022-04-15 | 英特尔公司 | 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段 |
EP2689326B1 (en) | 2011-03-25 | 2022-11-16 | Intel Corporation | Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines |
WO2012162189A1 (en) | 2011-05-20 | 2012-11-29 | Soft Machines, Inc. | An interconnect structure to support the execution of instruction sequences by a plurality of engines |
TWI603198B (zh) | 2011-05-20 | 2017-10-21 | 英特爾股份有限公司 | 以複數個引擎作資源與互連結構的分散式分配以支援指令序列的執行 |
WO2013077876A1 (en) | 2011-11-22 | 2013-05-30 | Soft Machines, Inc. | A microprocessor accelerated code optimizer |
EP2783280B1 (en) | 2011-11-22 | 2019-09-11 | Intel Corporation | An accelerated code optimizer for a multiengine microprocessor |
US8930674B2 (en) | 2012-03-07 | 2015-01-06 | Soft Machines, Inc. | Systems and methods for accessing a unified translation lookaside buffer |
US9916253B2 (en) * | 2012-07-30 | 2018-03-13 | Intel Corporation | Method and apparatus for supporting a plurality of load accesses of a cache in a single cycle to maintain throughput |
US9710399B2 (en) | 2012-07-30 | 2017-07-18 | Intel Corporation | Systems and methods for flushing a cache with modified data |
US9740612B2 (en) | 2012-07-30 | 2017-08-22 | Intel Corporation | Systems and methods for maintaining the coherency of a store coalescing cache and a load cache |
US9229873B2 (en) | 2012-07-30 | 2016-01-05 | Soft Machines, Inc. | Systems and methods for supporting a plurality of load and store accesses of a cache |
US9678882B2 (en) | 2012-10-11 | 2017-06-13 | Intel Corporation | Systems and methods for non-blocking implementation of cache flush instructions |
US9021207B2 (en) * | 2012-12-20 | 2015-04-28 | Advanced Micro Devices, Inc. | Management of cache size |
WO2014150991A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for implementing a reduced size register view data structure in a microprocessor |
US9891924B2 (en) | 2013-03-15 | 2018-02-13 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
US9886279B2 (en) | 2013-03-15 | 2018-02-06 | Intel Corporation | Method for populating and instruction view data structure by using register template snapshots |
US9569216B2 (en) | 2013-03-15 | 2017-02-14 | Soft Machines, Inc. | Method for populating a source view data structure by using register template snapshots |
WO2014150971A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for dependency broadcasting through a block organized source view data structure |
US10275255B2 (en) | 2013-03-15 | 2019-04-30 | Intel Corporation | Method for dependency broadcasting through a source organized source view data structure |
EP2972845B1 (en) | 2013-03-15 | 2021-07-07 | Intel Corporation | A method for executing multithreaded instructions grouped onto blocks |
US10140138B2 (en) | 2013-03-15 | 2018-11-27 | Intel Corporation | Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation |
US9811342B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for performing dual dispatch of blocks and half blocks |
CN105247484B (zh) | 2013-03-15 | 2021-02-23 | 英特尔公司 | 利用本地分布式标志体系架构来仿真访客集中式标志体系架构的方法 |
WO2014150806A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for populating register view data structure by using register template snapshots |
US9904625B2 (en) | 2013-03-15 | 2018-02-27 | Intel Corporation | Methods, systems and apparatus for predicting the way of a set associative cache |
TWI493342B (zh) * | 2013-04-12 | 2015-07-21 | Faraday Tech Corp | 記憶體管理裝置及管理方法 |
US10402344B2 (en) | 2013-11-21 | 2019-09-03 | Samsung Electronics Co., Ltd. | Systems and methods for direct data access in multi-level cache memory hierarchies |
KR20150093004A (ko) * | 2014-02-06 | 2015-08-17 | 삼성전자주식회사 | 불휘발성 저장 장치의 동작 방법 및 불휘발성 저장 장치를 액세스하는 컴퓨팅 장치의 동작 방법 |
US9513805B2 (en) * | 2014-04-15 | 2016-12-06 | International Business Machines Corporation | Page table including data fetch width indicator |
US10402331B2 (en) | 2014-05-29 | 2019-09-03 | Samsung Electronics Co., Ltd. | Systems and methods for implementing a tag-less shared cache and a larger backing cache |
US20160124859A1 (en) * | 2014-10-30 | 2016-05-05 | Samsung Electronics Co., Ltd. | Computing system with tiered fetch mechanism and method of operation thereof |
CN105704724B (zh) * | 2014-11-28 | 2021-01-15 | 索尼公司 | 用于支持认知无线电的无线通信系统的控制设备和方法 |
GB2537357A (en) * | 2015-04-09 | 2016-10-19 | Imagination Tech Ltd | Cache operation in a multi-threaded processor |
US10877901B2 (en) * | 2015-09-25 | 2020-12-29 | Arm Limited | Method and apparatus for utilizing proxy identifiers for merging of store operations |
US10002076B2 (en) | 2015-09-29 | 2018-06-19 | Nxp Usa, Inc. | Shared cache protocol for parallel search and replacement |
KR102526147B1 (ko) | 2016-01-19 | 2023-04-26 | 엘에스일렉트릭(주) | 전력시스템에서의 감시장치 |
CN108595371B (zh) * | 2016-01-20 | 2019-11-19 | 北京中科寒武纪科技有限公司 | 用于向量运算的数据读取、写入及读写调度器及保留站 |
GB2546731B (en) * | 2016-01-20 | 2019-02-20 | Advanced Risc Mach Ltd | Recording set indicator |
US11237758B2 (en) * | 2016-08-06 | 2022-02-01 | Wolley Inc. | Apparatus and method of wear leveling for storage class memory using address cache |
JP7049338B2 (ja) * | 2016-11-29 | 2022-04-06 | アーム・リミテッド | タグマッチングコマンドに応答する記憶回路 |
US10866902B2 (en) * | 2016-12-28 | 2020-12-15 | Intel Corporation | Memory aware reordered source |
GB2560336B (en) * | 2017-03-07 | 2020-05-06 | Imagination Tech Ltd | Address generators for verifying integrated circuit hardware designs for cache memory |
US10654632B2 (en) | 2017-03-08 | 2020-05-19 | B. Braun Medical Inc. | Flexible containers and related methods |
US10474587B1 (en) | 2017-04-27 | 2019-11-12 | EMC IP Holding Company LLC | Smart weighted container data cache eviction |
US10423533B1 (en) * | 2017-04-28 | 2019-09-24 | EMC IP Holding Company LLC | Filtered data cache eviction |
US10402337B2 (en) * | 2017-08-03 | 2019-09-03 | Micron Technology, Inc. | Cache filter |
GB2565338B (en) | 2017-08-10 | 2020-06-03 | Mips Tech Llc | Fault detecting and fault tolerant multi-threaded processors |
US10579535B2 (en) * | 2017-12-15 | 2020-03-03 | Intel Corporation | Defragmented and efficient micro-operation cache |
US11144457B2 (en) * | 2018-02-22 | 2021-10-12 | Netspeed Systems, Inc. | Enhanced page locality in network-on-chip (NoC) architectures |
US20190303037A1 (en) * | 2018-03-30 | 2019-10-03 | Ca, Inc. | Using sequential read intention to increase data buffer reuse |
US11645178B2 (en) | 2018-07-27 | 2023-05-09 | MIPS Tech, LLC | Fail-safe semi-autonomous or autonomous vehicle processor array redundancy which permits an agent to perform a function based on comparing valid output from sets of redundant processors |
US11068612B2 (en) | 2018-08-01 | 2021-07-20 | International Business Machines Corporation | Microarchitectural techniques to mitigate cache-based data security vulnerabilities |
US11210232B2 (en) * | 2019-02-08 | 2021-12-28 | Samsung Electronics Co., Ltd. | Processor to detect redundancy of page table walk |
KR20200112435A (ko) * | 2019-03-22 | 2020-10-05 | 에스케이하이닉스 주식회사 | 캐시 메모리, 이를 포함하는 메모리 시스템, 및 그의 동작 방법 |
US11226904B2 (en) * | 2019-04-26 | 2022-01-18 | Hewlett Packard Enterprise Development Lp | Cache data location system |
US11556513B2 (en) | 2020-06-30 | 2023-01-17 | Hewlett Packard Enterprise Development Lp | Generating snapshots of a key-value index |
US11461299B2 (en) | 2020-06-30 | 2022-10-04 | Hewlett Packard Enterprise Development Lp | Key-value index with node buffers |
US11169806B1 (en) * | 2020-08-10 | 2021-11-09 | Arm Limited | Data processing systems |
US11461240B2 (en) | 2020-10-01 | 2022-10-04 | Hewlett Packard Enterprise Development Lp | Metadata cache for storing manifest portion |
US11989286B2 (en) | 2021-05-07 | 2024-05-21 | Ventana Micro Systems Inc. | Conditioning store-to-load forwarding (STLF) on past observations of STLF propriety |
US12073220B2 (en) | 2021-05-07 | 2024-08-27 | Ventana Micro Systems Inc. | Store-to-load forwarding correctness checks at store instruction commit |
US12099448B2 (en) | 2021-05-07 | 2024-09-24 | Ventana Micro Systems Inc. | Virtually-indexed cache coherency using physical address proxies |
US12093179B2 (en) | 2021-05-07 | 2024-09-17 | Ventana Micro Systems Inc. | Store-to-load forwarding correctness checks using physical address proxies stored in load queue entries |
US11989285B2 (en) | 2021-05-07 | 2024-05-21 | Ventana Micro Systems Inc. | Thwarting store-to-load forwarding side channel attacks by pre-forwarding matching of physical address proxies and/or permission checking |
US11868263B2 (en) | 2021-05-07 | 2024-01-09 | Ventana Micro Systems Inc. | Using physical address proxies to handle synonyms when writing store data to a virtually-indexed cache |
US12079126B2 (en) | 2021-05-07 | 2024-09-03 | Ventana Micro Systems Inc. | Unforwardable load instruction re-execution eligibility based on cache update by identified store instruction |
US12086063B2 (en) | 2021-05-07 | 2024-09-10 | Ventana Micro Systems Inc. | Physical address proxy reuse management |
US12079129B2 (en) * | 2021-05-07 | 2024-09-03 | Ventana Micro Systems Inc. | Using physical address proxies to accomplish penalty-less processing of load/store instructions whose data straddles cache line address boundaries |
US11768599B2 (en) | 2021-07-13 | 2023-09-26 | Saudi Arabian Oil Company | Managing an enterprise data storage system |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080114939A1 (en) * | 2006-11-15 | 2008-05-15 | Arm Limited | Cache accessing using muTAGs |
US20100138611A1 (en) * | 2008-12-02 | 2010-06-03 | Lihu Rappoport | Method and apparatus for pipeline inclusion and instruction restarts in a micro-op cache of a processor |
US20100268895A1 (en) * | 2009-04-15 | 2010-10-21 | International Business Machines Corporation | Information handling system with immediate scheduling of load operations |
US20110231593A1 (en) * | 2010-03-19 | 2011-09-22 | Kabushiki Kaisha Toshiba | Virtual address cache memory, processor and multiprocessor |
US20110238941A1 (en) * | 2010-03-29 | 2011-09-29 | Freescale Semiconductor, Inc. | Scheduling memory access requests using predicted memory timing and state information |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0813709B1 (en) | 1995-03-03 | 2007-10-17 | Fujitsu Limited | Parallel access micro-tlb to speed up address translation |
US5778427A (en) * | 1995-07-07 | 1998-07-07 | Sun Microsystems, Inc. | Method and apparatus for selecting a way of a multi-way associative cache by storing waylets in a translation structure |
US5845323A (en) * | 1995-08-31 | 1998-12-01 | Advanced Micro Devices, Inc. | Way prediction structure for predicting the way of a cache in which an access hits, thereby speeding cache access time |
US5918245A (en) * | 1996-03-13 | 1999-06-29 | Sun Microsystems, Inc. | Microprocessor having a cache memory system using multi-level cache set prediction |
US6092124A (en) * | 1998-04-17 | 2000-07-18 | Nvidia Corporation | Method and apparatus for accelerating the rendering of images |
US6591343B1 (en) * | 2000-02-22 | 2003-07-08 | Ip-First, Llc | Predecode in parallel with TLB compare |
US6549997B2 (en) * | 2001-03-16 | 2003-04-15 | Fujitsu Limited | Dynamic variable page size translation of addresses |
US20060195677A1 (en) | 2005-02-28 | 2006-08-31 | Texas Instruments Incorporated | Bank conflict avoidance in a multi-banked cache system |
US20070067567A1 (en) * | 2005-09-19 | 2007-03-22 | Via Technologies, Inc. | Merging entries in processor caches |
US20080282034A1 (en) * | 2005-09-19 | 2008-11-13 | Via Technologies, Inc. | Memory Subsystem having a Multipurpose Cache for a Stream Graphics Multiprocessor |
US7409516B2 (en) * | 2006-03-30 | 2008-08-05 | Intel Corporation | Pending request scoreboard for out-of-order memory scheduler |
US8001338B2 (en) * | 2007-08-21 | 2011-08-16 | Microsoft Corporation | Multi-level DRAM controller to manage access to DRAM |
US8015386B1 (en) * | 2008-03-31 | 2011-09-06 | Xilinx, Inc. | Configurable memory manager |
US7934080B2 (en) * | 2008-05-28 | 2011-04-26 | Oracle America, Inc. | Aggressive store merging in a processor that supports checkpointing |
US9009414B2 (en) * | 2010-09-21 | 2015-04-14 | Texas Instruments Incorporated | Prefetch address hit prediction to reduce memory access latency |
-
2012
- 2012-05-10 US US13/468,548 patent/US9684601B2/en active Active
-
2013
- 2013-05-08 WO PCT/GB2013/051186 patent/WO2013167886A2/en active Application Filing
- 2013-05-08 KR KR1020147033343A patent/KR102244191B1/ko active IP Right Grant
- 2013-05-08 GB GB1418116.8A patent/GB2515432B/en active Active
- 2013-05-08 CN CN201380023344.8A patent/CN104272279B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080114939A1 (en) * | 2006-11-15 | 2008-05-15 | Arm Limited | Cache accessing using muTAGs |
US20100138611A1 (en) * | 2008-12-02 | 2010-06-03 | Lihu Rappoport | Method and apparatus for pipeline inclusion and instruction restarts in a micro-op cache of a processor |
US20100268895A1 (en) * | 2009-04-15 | 2010-10-21 | International Business Machines Corporation | Information handling system with immediate scheduling of load operations |
US20110231593A1 (en) * | 2010-03-19 | 2011-09-22 | Kabushiki Kaisha Toshiba | Virtual address cache memory, processor and multiprocessor |
US20110238941A1 (en) * | 2010-03-29 | 2011-09-29 | Freescale Semiconductor, Inc. | Scheduling memory access requests using predicted memory timing and state information |
Cited By (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107278298A (zh) * | 2015-03-03 | 2017-10-20 | Arm 有限公司 | 缓存器维护指令 |
CN107278298B (zh) * | 2015-03-03 | 2021-10-22 | Arm 有限公司 | 缓存器维护指令 |
US11144458B2 (en) | 2015-03-03 | 2021-10-12 | Arm Limited | Apparatus and method for performing cache maintenance over a virtual page |
CN107533513A (zh) * | 2015-04-15 | 2018-01-02 | 高通股份有限公司 | 突发转换后备缓冲器 |
CN107533513B (zh) * | 2015-04-15 | 2021-06-04 | 高通股份有限公司 | 突发转换后备缓冲器 |
CN106126441A (zh) * | 2015-05-04 | 2016-11-16 | Arm 有限公司 | 追踪缓存的内容 |
CN106126441B (zh) * | 2015-05-04 | 2021-10-01 | Arm 有限公司 | 缓存、缓存数据项的方法 |
WO2016206421A1 (zh) * | 2015-06-26 | 2016-12-29 | 中兴通讯股份有限公司 | 内存访问处理方法、装置和存储介质 |
CN107066396A (zh) * | 2015-10-15 | 2017-08-18 | Arm 有限公司 | 用于操作虚拟索引的物理标记的缓存的装置及方法 |
CN107066396B (zh) * | 2015-10-15 | 2021-12-24 | Arm 有限公司 | 用于操作虚拟索引的物理标记的缓存的装置及方法 |
CN109074313A (zh) * | 2016-02-03 | 2018-12-21 | 斯瓦姆64有限责任公司 | 缓存和方法 |
CN110023916A (zh) * | 2016-12-16 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 一种减少缓存中读/写竞争的方法和装置 |
CN110023916B (zh) * | 2016-12-16 | 2023-07-28 | 阿里巴巴集团控股有限公司 | 一种减少缓存中读/写竞争的方法和装置 |
CN110235101A (zh) * | 2017-01-13 | 2019-09-13 | 优创半导体科技有限公司 | 可变转换后备缓冲器(tlb)编索引 |
CN110178124A (zh) * | 2017-01-13 | 2019-08-27 | Arm有限公司 | 划分tlb或缓存分配 |
CN110178124B (zh) * | 2017-01-13 | 2023-08-04 | Arm有限公司 | 用于划分tlb或缓存分配的方法和装置 |
CN109426624A (zh) * | 2017-08-24 | 2019-03-05 | Arm有限公司 | 用于高效利用地址转换缓存的装置和方法 |
CN109426624B (zh) * | 2017-08-24 | 2023-11-28 | Arm有限公司 | 用于高效利用地址转换缓存的装置和方法 |
CN110046107B (zh) * | 2017-11-22 | 2024-08-02 | Arm有限公司 | 存储器地址转换装置和方法 |
CN110046107A (zh) * | 2017-11-22 | 2019-07-23 | Arm有限公司 | 存储器地址转换 |
CN111868700A (zh) * | 2018-02-28 | 2020-10-30 | 索尼公司 | 存储器管理系统、存储器管理方法以及信息处理设备 |
CN111868700B (zh) * | 2018-02-28 | 2024-04-19 | 索尼公司 | 存储器管理系统、存储器管理方法以及信息处理设备 |
CN111352865A (zh) * | 2018-12-24 | 2020-06-30 | 北京忆芯科技有限公司 | 存储控制器的写缓存 |
CN112540939A (zh) * | 2019-09-23 | 2021-03-23 | 阿里巴巴集团控股有限公司 | 存储管理装置、存储管理方法、处理器和计算机系统 |
CN112052074B (zh) * | 2020-09-29 | 2024-05-03 | 上海兆芯集成电路股份有限公司 | 处理器建模系统及处理器建模方法 |
CN112052074A (zh) * | 2020-09-29 | 2020-12-08 | 上海兆芯集成电路有限公司 | 处理器建模系统及处理器建模方法 |
CN114138685B (zh) * | 2021-12-06 | 2023-03-10 | 海光信息技术股份有限公司 | 缓存的资源分配方法及装置、电子装置和存储介质 |
CN114138685A (zh) * | 2021-12-06 | 2022-03-04 | 海光信息技术股份有限公司 | 缓存的资源分配方法及装置、电子装置和存储介质 |
CN114528229A (zh) * | 2022-04-21 | 2022-05-24 | 飞腾信息技术有限公司 | 一种缓存数据访问方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
WO2013167886A3 (en) | 2014-02-27 |
US20130304991A1 (en) | 2013-11-14 |
GB2515432A (en) | 2014-12-24 |
WO2013167886A2 (en) | 2013-11-14 |
KR20150016278A (ko) | 2015-02-11 |
KR102244191B1 (ko) | 2021-04-27 |
US9684601B2 (en) | 2017-06-20 |
GB201418116D0 (en) | 2014-11-26 |
CN104272279B (zh) | 2018-01-19 |
GB2515432B (en) | 2020-05-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104272279A (zh) | 具有缓存和转换后备缓冲器的数据处理装置 | |
CN102498477B (zh) | Tlb预取 | |
US7562191B2 (en) | Microprocessor having a power-saving instruction cache way predictor and instruction replacement scheme | |
Jevdjic et al. | Die-stacked dram caches for servers: Hit ratio, latency, or bandwidth? have it all with footprint cache | |
US8392651B2 (en) | Data cache way prediction | |
US6247094B1 (en) | Cache memory architecture with on-chip tag array and off-chip data array | |
EP3055774B1 (en) | Multi-mode set associative cache memory dynamically configurable to selectively allocate into all or a subset of its ways depending on the mode | |
KR100747127B1 (ko) | 경로 예측 실패시 조회를 지시하도록 비예측 경로들로부터부분적인 태그들을 제공하는 캐쉬 | |
EP3129886B1 (en) | Dynamic cache replacement way selection based on address tag bits | |
US9798668B2 (en) | Multi-mode set associative cache memory dynamically configurable to selectively select one or a plurality of its sets depending upon the mode | |
US9286221B1 (en) | Heterogeneous memory system | |
US8595443B2 (en) | Varying a data prefetch size based upon data usage | |
US8327121B2 (en) | Data cache receive flop bypass | |
KR102543675B1 (ko) | 변환 색인 버퍼 내 구성 가능한 스큐된 연관성 | |
US6560676B1 (en) | Cache memory system having a replace way limitation circuit and a processor | |
US8266381B2 (en) | Varying an amount of data retrieved from memory based upon an instruction hint | |
CN101833517B (zh) | 快取存储器系统及其存取方法 | |
US11048637B2 (en) | High-frequency and low-power L1 cache and associated access technique | |
CN101833518B (zh) | 微处理器及微处理器的数据快取存取方法 | |
KR20240056765A (ko) | 레지스터 이름 어드레싱 및 동적 로드 크기 조정을 이용한 컴퓨터 아키텍처 | |
Volos | Die-Stacked DRAM Caches for Servers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |