CN107278298B - 缓存器维护指令 - Google Patents
缓存器维护指令 Download PDFInfo
- Publication number
- CN107278298B CN107278298B CN201680012407.3A CN201680012407A CN107278298B CN 107278298 B CN107278298 B CN 107278298B CN 201680012407 A CN201680012407 A CN 201680012407A CN 107278298 B CN107278298 B CN 107278298B
- Authority
- CN
- China
- Prior art keywords
- buffer
- cache
- address
- data
- maintenance
- 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.)
- Active
Links
Images
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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
- G06F12/0833—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
-
- 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
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- 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/1009—Address translation using page tables, e.g. page table structures
-
- 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/1016—Performance improvement
-
- 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/65—Details of virtual memory and virtual address translation
- G06F2212/655—Same page detection
-
- 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
装置2包括响应于指令执行数据处理的处理电路4。处理电路4支持指定识别虚拟地址空间的虚拟页面的虚拟页面地址52的缓存器维护指令50。响应于缓存器维护指令,处理电路4触发至少一个缓存器18、20、22,对一个或多个这样的缓存器行执行缓存器维护操作:由这种缓存器换行所存储的数据的物理地址位于与由缓存器维护指令所提供的虚拟地址标识的虚拟页面相对应的物理页面内。
Description
技术领域
本技术涉及数据处理领域。更具体地,涉及缓存器维护操作。
发明内容
装置可以具有用于存储来自存储器的数据的缓存版本的一个或多个缓存器,从而可以通过处理电路以相较数据必须从存储器获取的情况更快的速度访问缓存器的数据。在装置内可能存在多个缓存器,并且有时可以执行缓存器维护操作,从而例如使得与相同地址对应的不同版本的数据保持一致性。
至少一些实施例提供一种装置,包括:处理电路,响应于指令执行数据处理;其中响应于指定标识虚拟地址空间的虚拟页面的虚拟页面地址的缓存器维护指令,所述处理电路触发至少一个缓存器对下述一个或多个缓存器行执行缓存器维护操作:由所述缓存器行所存储的数据的物理地址位于与由所述虚拟页面地址所标识的虚拟页面相对应的物理页面中;其中所述缓存器维护指令指定多个虚拟页面大小中的一个虚拟页面大小,并且所述处理电路响应于所述缓存器维护指令来触发所述至少一个缓存器对具有由所述缓存器维护指令指定的虚拟页面大小的所述虚拟页面执行所述缓存器维护操作。
至少一些实施例提供一种装置,包括:用于响应于指令执行数据处理的处理装置;其中响应于指定标识虚拟地址空间的虚拟页面的虚拟页面地址的缓存器维护指令,所述处理装置触发至少一个缓存器对下述一个或多个缓存器行执行缓存器维护操作:由所述缓存器行所存储的数据的物理地址位于与由所述虚拟页面地址所标识的虚拟页面相对应的物理页面中;其中所述缓存器维护指令指定多个虚拟页面大小中的一个虚拟页面大小,并且所述处理装置响应于所述缓存器维护指令来触发所述至少一个缓存器对具有由所述缓存器维护指令指定的虚拟页面大小的所述虚拟页面执行所述缓存器维护操作。
至少一些实施例提供了一种数据处理方法,包括:接收指定标识虚拟地址空间的虚拟页面的虚拟页面地址的缓存器维护指令;以及响应于所述缓存器维护指令,触发至少一个缓存器对下述一个或多个缓存器行执行缓存器维护操作:由所述缓存器行所存储的数据的物理地址位于与由所述虚拟页面地址所标识的虚拟页面相对应的物理页面中;其中所述缓存器维护指令指定多个虚拟页面大小中的一个虚拟页面大小,并且响应于所述缓存器维护指令来触发所述至少一个缓存器对具有由所述缓存器维护指令指定的虚拟页面大小的所述虚拟页面执行所述缓存器维护操作。
附图说明
下面将结合附图描述进一步的实施例、示例和特征,其中:
图1示意性地示出了具有处理电路和缓存器的数据处理装置;
图2示出了存器的示例;
图3示出了缓存器维护指令的示例;
图4示出了虚拟页面地址和物理页面地址之间的转换的示例;
图5至图7示出了响应于指定虚拟页面地址的缓存器维护指令执行缓存器维护操作的三个示例;
图8和图9示出了标识哪些缓存器行存储具有位于与由缓存器维护指令指定的虚拟页面对应的物理页面内的物理地址的数据的示例;
图10示出了包括具有跟踪在每个缓存器中存储的数据的探听过滤器的多个缓存器的装置的示例;并且
图11示出了数据处理的方法。
具体实施方式
装置可以具有用于响应于指令执行数据处理的处理电路。处理电路可以访问至少一个缓存器,相较从存储器访问相应数据,从缓存器访问数据速度更快。例如,缓存器层次结构中可能存在多个级别的缓存器。有时可能需要在一个或多个缓存器内的某些缓存器行上执行缓存器维护操作。例如,可以执行缓存器维护操作以保持缓存器的数据与存储器或另一缓存器中的相应数据之间的一致性。
处理电路支持缓存器维护指令,其指定标识虚拟地址空间的虚拟页面的虚拟页面地址。虚拟地址是处理电路用于引用数据的地址,而不是由存储器使用的物理地址。响应于缓存器维护指令,处理电路可以触发至少一个缓存器在任何缓存器行上执行缓存器维护操作,其中由该缓存器行存储的数据的物理地址位于对应于由指令中指定的虚拟页面地址所标识的虚拟物理页面内。在包括多于一个缓存器的系统中,针对其执行缓存器维护的缓存器行全部可以在相同的缓存器内,或者可以在两个或更多个缓存器之内——这将取决于每个缓存器中数据存储于哪个地址上。
通过提供触发对整个地址虚拟页执行缓存器维护的缓存器维护指令,这可以提供优于替代方法的优点,例如针对要进行缓存器维护的每个虚拟地址执行单独的缓存器维护指令。首先,可以减少执行的指令数量,减少处理电路的负担,并允许其它指令的更大吞吐量。此外,它允许将较高级别的系统软件对设备内的结构和组件的展示意图,这可以允许在对每个地址执行单独的缓存器维护指令的情况下可能不可行的性能优化,因为基于地址的方法系统不能从各个指令中得知更大范围的地址将需要缓存器维护。此外,通过使用单个指令来触发虚拟地址空间的整个页面上的缓存器维护,可以以原子级执行维护操作而不需要由处理电路执行锁定或其它状态跟踪操作,从而减少维护数据一致性的开销。缓存器操作期间的操作系统抢占(pre-emption)还可以对软件透明地处理。
缓存器维护指令可以指定多个虚拟页面大小中的一个,使得当被执行时处理电路控制缓存器执行针对指定页面大小的地址块的缓存器维护操作。这允许编程器或编译器选择指定与所要求的地址范围最匹配的虚拟页面大小的缓存器维护指令,以避免不必要地将缓存器维护应用于比真正需要的更大的地址范围,从而减少维护缓存器的开销。可以通过指令以不同的方式指定虚拟页面大小。在一些示例中,页面大小可以隐含在指令操作码中(从而为每个页面大小提供基本不同的指令)。替代地,可以使用公共操作码,但是立即字段可以指定要使用的虚拟页面大小,或者指令可以指定存储指示要使用的虚拟页面大小的值的寄存器。
处理电路可以具有转换电路,例如转换后备缓冲器(TLB)或存储器管理单元(MMU)),用于将虚拟页面地址转换成物理页面地址。例如,转换电路可以具有多个转换条目,其中每个条目对应于特定虚拟页面地址并且标识该虚拟页面地址的对应的物理页面地址。换言之,存储器的“页面”可以指对应于一个转换条目的存储器地址空间的单位,从而相同的虚拟到物理地址转换被应用于同一页面内的所有地址,而不同的虚拟-物理地址转换可用于不同页面中的地址。因此,提供使用虚拟页面地址来标识需要缓存器维护的地址的缓存器维护指令的另一个优点是,可能仅需要转换电路的单个查找而不是需要对每个地址进行多次查找(如果为每个地址执行了单独的缓存器维护指令的话)。转换表查找可能相对较慢(特别是如果需要转换表移动(walk)以找到所需的虚拟到物理地址映射的情况下),则通过减少地址转换的开销,基于虚拟页面地址的缓存器维护指令可以提高性能。
响应于缓存器维护指令,可以对指定虚拟页面内的地址执行各种缓存器维护操作。例如,缓存器维护操作通常可以包括用于改变缓存器数据的一致性状态的操作,以确保系统内的不同版本的数据之间的一致性,或者将缓存器的一部分放置于某种已知状态从而其它操作可以继续可预测的操作。例如,缓存器维护操作可以包括以下任一项:
●清理操作,将脏数据(dirty data)写入至少一个其它数据存储(其可以是缓存器层级的另一级的缓存器或存储器)。脏数据可以是在不更新另一位置的数据的相应副本的情况下被修改的数据。在清理操作期间要写入脏数据的另外的(一个或多个)数据存储区可以是预定的或硬编码的,或者可以是可变的,例如使用控制寄存器中的控制参数来定义。
●无效操作。使来自指定地址的数据无效(例如通过将数据标记为无效和/或从缓存器中删除数据)。如果尚未写入另一个数据存储区,则无效操作可能导致脏数据丢失。
●清理无效的操作,其相当于执行清理操作随后执行无效操作。这允许缓存器中的数据无效,同时通过首先将这个脏数据写入存储器或另一数据存储区而仍保留任何先前修改过的脏数据。
●设置操作,将所需地址处的数据设置为预定值(例如零)。
一些系统可能仅实现一种类型的缓存器维护操作,而其它系统可以实现几种类型。例如,可以为每种类型的缓存器维护操作提供几个不同版本的缓存器维护指令,每个版本使用虚拟页面地址来标识要执行缓存器维护的地址。要执行的特定缓存器维护操作可以由指令操作码或指令编码内的字段来标识。
虚拟页面地址可能不是处理电路允许识别缓存器维护地址的唯一方式。例如,处理电路还可以支持缓存器维护指令,其指定要对其应用缓存器维护操作的单独虚拟地址,或者指定应对整个缓存器执行缓存器维护。
存在很多种实现设备内的缓存器维护指令的处理的方法。在一个示例中,响应于缓存器维护指令,处理电路可以触发向缓存器发出缓存器维护命令,其中每个命令指定物理页面内对应于由缓存器维护指令指定的虚拟页面地址的物理地址。响应于每个单独的缓存器维护命令,缓存器随后可以对指定的物理地址执行缓存器维护操作。这可以简化缓存器设计,使得可以处理各个地址的缓存器维护命令的标准缓存器不需要任何硬件修改来处理基于虚拟页面的缓存器维护。例如,处理电路内的小状态机可将缓存器维护指令转换成针对每个地址的单独微操作。
替代地,缓存器可以被发出有至少一个缓存器维护命令,其指定与由缓存器维护指令指定的虚拟页地址相对应的物理页内的物理地址块。响应于每个命令,缓存器可以标识哪些缓存器行存储指定的地址块内的物理地址的数据,并且对所标识的缓存器行执行缓存器维护操作。这种方法可以减少需要发送到缓存器的命令数量,节省命令带宽,并且减轻处理电路的负担。
在某些情况下,由缓存器维护命令所标识的物理地址块可以是整个页面,从而缓存器维护指令触发单个缓存器维护命令来控制缓存器在整个页面上应用维护。
或者,对于至少一些缓存器维护指令,可以向缓存器发出几个命令,每个命令指定小于总页面大小的地址块。如上所述,当处理电路支持不同页面大小时,该方法可能特别有助于简化缓存器硬件。例如,无论缓存器维护指令选择的页面大小如何,该指令都可以被映射到对应于某个基本单元地址的缓存器维护命令,使得缓存器不需要考虑特定页面大小并且简单地处理某些固定大小的地址块的一个或多个命令。
存在缓存器可以响应指定地址块的缓存器维护命令的不同方法。一种方法可能是通过对每个地址的缓存器的单独查找来迭代指定块内的每个地址,以检查是否存在存储对应于该地址的数据的缓存器行。然而,该方法可能具有相对较高的开销,因为通常页面大小可能显着地大于缓存器内的位置数量,因此重复查找每个地址的缓存器可能是缓慢且耗能的。
因此,对于缓存器下述方案可能是有效率的:可以通过缓存器的每个缓存器行进行迭代,并且针对每个缓存器行检查缓存器行是否存储由缓存器维护命令指定的块内的任何物理地址的数据。由于同一页面或同一地址块内的物理页面地址通常会对一定数量的地址位共享相同的值,实践中可能不需要为范围内的每个地址执行单独的地址比较。相反,缓存器可以简单地查找每个缓存器行一次,以将缓存器行的标签的至少一部分与所需块中的地址的公共部分进行比较,以标识该缓存器行是否存储来自该块内的任何地址的数据。可以记录找到匹配的缓存器行,并且可以针对匹配的缓存器行启动缓存器维护操作。
有时缓存器可能会被发送几个缓存器维护命令。这可能是因为一个缓存器维护指令被分成若干个指定同一页面内的不同地址块的命令,或者因为不同页面的处理电路执行了几个不同的指令。为了减少缓存器标签被查找的次数,几个缓存器维护命令可以由缓存器一起处理,使得通过对缓存器标签的单次查找可以将标签与多个缓存器维护命令中指定的地址进行比较,从而确定哪些缓存器行存储由多个命令指定的任何地址块的数据。通过减少标签查找的次数,可以降低能耗并提高性能。
当查找缓存器行以确定它们是否存储与指定页面相对应的数据时,在某些情况下,缓存器可能不需要查找所有缓存器行。例如,一些系统可以维护一些信息以跟踪哪些数据被存储在哪些缓存器中,在这种情况下,对于已知不存储对应于所需的地址页的数据的行,可能不需要进行查找。
例如,一些具有多个缓存器的系统可以提供探听过滤器,探听过滤器存储数据,该数据标识哪些缓存器存储相应物理地址的数据。在这种情况下,探听过滤器可用于识别哪些缓存器存储所需的虚拟页面地址的数据,并且控制电路可以防止将缓存器维护命令发送到除了由探听过滤器所标识的缓存器之外的缓存器。这有助于通过避免对已知不存储来自所需地址的数据的缓存器的不必要的缓存器查找,以及通过减少由互连结构路由的缓存器维护命令的数量,来降低能耗并提高性能,从而释放带宽用于其它命令。
在某些情况下,与存储器相关联的存储器控制器可以能够本地处理一些缓存器维护命令。例如,在将地址页设置为预定值(例如,零)的情况下,存储器可能能够处理零设置命令本身(与发送到缓存器的命令并行地处理以将缓存器中的任何相应值归零)。通过处理存储器控制器内的一些缓存器维护命令,这可以允许执行缓存器维护操作相较命令仅被送往缓存器的情况得以更快地执行,其中执行后续回写以更新存储器中的相应数据。
图1示意性地示出了包括处理器4的数据处理装置2,处理器4包括用于使用存储在寄存器8中的数据值进行数据处理操作的处理电路6。例如,处理电路6可以包括包括各种加法器移位器、乘法器等的算术逻辑单元(ALU),用于对存储在寄存器8中的值执行算术运算以生成写回到寄存器8的结果值。响应于由指令获取单元12从存储器系统获取的程序指令,指令流水线10控制处理电路6执行数据处理。所获取指令进行到流水线10的各个阶段。例如,流水线阶段可以包括用于解码指令以生成用于控制处理电路6的控制信号的解码级,以及用于控制何时向处理发出指令供电路6执行的发出阶段。在一些示例中,流水线可以支持乱序处理,并且可以包括用于执行注册重命名的重命名阶段。流水线还可以响应于加载/存储指令,来控制加载/存储单元14将值从存储器系统加载到寄存器8中、或将数据值从寄存器8存储到存储器系统。应当理解,处理器4可以包括图1中未示出的其它元件。
存储器系统包括主存储器16以及以分层结构布置的多个缓存器。存储器16具有用于控制存储器访问操作的存储器控制器17。在该示例中,缓存器包括用于缓存要由提取单元12获取的指令的级一(L1)指令缓存器18,以及用于缓存数据和指令的共享级二(L2)缓存器。L2缓存器22提供对来自存储器16的数据或指令的特定子集的更快的访问,但是具有比主存储器16更小的容量。L1缓存器18、20提供对来自L2缓存器22或存储器16的数据或指令的子集的更快访问,但是具有比L2缓存器22更小的容量。可以使用各种缓存策略来根据由处理器4的数据使用情况来确定应该在L1和L2缓存器18、20、22中放置什么数据或指令。一些策略可能要求L1缓存器18、20内的所有数据或指令也应被缓存在L2缓存器22中,而其它策略可以允许不在L2缓存器22中的数据或指令存在于L1缓存器中。重申,图1所示的布置仅仅是示例,其它系统也可以具有其它布置或数量的缓存器级。
由流水线10执行的指令指定虚拟地址,而存储器系统的至少存储器16使用物理地址来标识数据(缓存器18、20、22可以物理寻址或虚拟寻址)。这允许使用相同虚拟地址编写的程序与每个程序用于映射到不同物理地址范围的虚拟地址共存。提供存储器管理单元(MMU)24用于将虚拟地址转换成物理地址。存储器管理单元24包括包括多个转换条目26的表。每个转换条目26标识虚拟页面地址(VPA)、相应的物理页面地址(PPA)、以及定义对地址空间的相应页面的访问许可的数据27。为了提供不同的虚拟到物理地址映射活着对不同的程序或上下文的许可,在某些情况下MMU 24可以为每个程序或上下文维护多个表,或者当存在程序或上下文改变时可以加载到表的不同条目中。当由加载/存储单元14执行指定虚拟地址的加载/存储指令或其它指令时,随后MMU 24检查访问许可27以确定访问是否被允许,如果被允许则返回对应于由指令指定的虚拟页面地址的物理页面地址26,随后可以使用该物理页面地址来执行对缓存器或存储器的访问。
例如,图4示出了由MMU 24执行的地址转换的示例。由处理器4执行的软件所看到的虚拟地址空间包括多个虚拟页面28,每个虚拟页面28分别对应于一定范围的虚拟地址。如图4的底部所示,虚拟页面地址29对应于虚拟地址的最重要部分。虚拟地址的最不重要的部分标识指定页面28内的特定地址的页面偏移(offset)30。可以通过分别为虚拟页面地址29和页面偏移30提供不同数量的位来实现不同的页面大小。相比之下,存储器系统使用包括多个物理页31的物理地址空间内的地址。为了将虚拟地址转换为物理地址,MMU 24查找对应于虚拟页地址29的转换表的条目26并返回对应的物理页地址32,但地址的页偏移30保持不变。因此如图4所示,转换有效地将地址的虚拟页面映射到对应的地址物理页面——“页面”是指转换表应用地址转换的粒度。在某些情况下,MMU 24可能只有一些页面的条目空间。如果处理器4访问表中没有页面条目的地址,则可以通过执行例如页表行进来从存储器16或从另外的页表中加载条目。
图2示出了缓存器34的示例,其可以是图1所示的缓存器18、20、22中的任一个。缓存器可以包括称为缓存器行35的多个存储位置。在该示例中,每个缓存器行35存储数据值36(其可以是指令缓存器18的情况下的指令),标签值37,脏标志38(指示该缓存器行中的数据是干净还是脏的),以及无效标志39(指示该缓存器行中的数据有效或无效)。在该示例中,缓存器具有集合关联结构(尽管可以理解,也可以提供完全关联或直接映射的缓存器)。这意味着每个数据值可以被置于基于数据值的地址所选择的缓存器行35的对应的集合42之一中,并且不能被放置在其它缓存器行35中。在该示例中,缓存器34是双向集合关联,这意味着存在可以放置每个数据值的两个可能的位置,尽管其它缓存器可能具有更大的关联性。每个物理地址包括用于选择相应的缓存器行集合42的索引部分40,并且如果数据36被存储到特定缓存器行35则地址的标签部分41被记录为该缓存器行35的标签值37从而标识哪个数据值被存储在缓存器行35中。当在缓存器中搜索特定地址时,地址的标签部分41与对应的集合42的每个缓存器行35的标签37进行比较,以检查所需数据是否存储在缓存器中。如果数据尚未存储,并且相应的缓存器行集合42中的一个具有指示无效数据的有效标志39,则可以分配该缓存器行用于存储所需数据,并且如果从较高级缓存器或存储器取出数据时则数据被放置在新分配的缓存器行中。如果不存在包含无效数据的空闲缓存器行,则可以使用任何已知的受害者选择策略(例如轮循、最近最少使用)来选择受害者缓存器行,并且有效数据可以从受害者缓存器行中被驱逐,并且如果脏标志38指示数据是脏的则将数据写回到较高级的缓存器或存储器从而为新数据让路。应当理解除了图2所示的信息之外,一些缓存器可以存储其它信息——例如对数据的一致性状态的指示,或示出数据是安全还是不安全的标志。
可以对缓存器内的数据执行缓存器维护操作。例如,缓存器维护操作可以确保不同级的缓存器之间或缓存器和存储器之间的一致性。可以支持许多不同类型的缓存器维护操作,包括例如将一个或多个缓存器行内的任何脏数据值写入存储器或更高级的缓存器的清理操作,将一个或多个缓存器行标记为无效从而它们现在就绪用于重新使用(破坏那些缓存器行中的任何脏数据)的无效操作,在无效选定的缓存器行之前将脏数据从这些缓存器行写入存储器的清理且无效的操作,以及将缓存器行设置到预定值(例如零)的设置操作。
可能存在识别应执行缓存器维护操作的缓存器行的不同方法。例如:
对整个缓存器的操作:
缓存器维护操作应用于特定缓存器中的每个位置。通常,这只能应用于指令缓存器,因为通常指令缓存器数据是只读的,并且可以被安全地和原子地丢弃。
逐缓存器行操作:
缓存器维护操作应用于由缓存器维护指令指定的一个缓存器行。缓存器行的操作在多处理器一致的存储器系统中通常是优选的,因为它们直接集成到诸如MESI之类的一致性协议中。对于通过缓存器行的操作,有几种标识缓存器行的方法:
设置/路线(Set-Way)——在缓存器结构内的物理线路上运行。
Set-Way操作通常由软件用来遍历整个缓存器进行迭代操作。在多处理器相干系统中,缓存器可能需要从一致性机制中移除,以确保在此过程中不会自动更改缓存器行。这些缓存器清理操作主要用于CPU初始化和关闭(电源管理)代码路径,但也可用于其它目的。
VA(虚拟地址)——响应于指定单个虚拟地址的指令,在由虚拟地址确定的物理地址转换的单个物理地寻址缓存器行操作。VA操作在相干共享虚拟存储器的上下文中使用,以确保一致性系统的所有代理正确地观察对存储器的所有更改。
除了这些类型的缓存器维护操作之外或者代替这些类型的缓存器维护操作,本技术还提供了指定缓存器维护操作应在地址的整个虚拟页面28上执行的能力。如图3所示,缓存器维护指令50可以指定虚拟页面地址52,虚拟页面地址52标识要应用缓存器维护的虚拟页面28。响应于指令50,处理电路6可以触发缓存器18、20、22中的任何一个或多个对任意下述缓存器行执行缓存器维护操作:针对这样的缓存器行,数据的物理地址位于由指令指定的虚拟页面地址52所标识的虚拟页面相对应的物理页面中。如图3所示,基于虚拟地址的缓存器维护指令50包括识别要执行的操作的类型的操作码54,标识要使用的特定页面大小的页面大小参数56,以及指定要对其应用操作的虚拟页面的虚拟页面地址52。页面大小56可以包括指定页面大小的立即值,或者可以引用存储页面大小值或虚拟页面地址52的寄存器8。在一些情况下,页面大小56可以替代地被指示为指令操作码的一部分。对于虚拟页面地址52,指令可以包括寄存器说明符,其标识存储虚拟页面地址的寄存器。在页面地址可以适合于指令编码(取决于页面大小)的实施例中,页面地址也可以被编码为立即值。然而,虚拟页面地址通常可能大于地址指定字段52的指令编码中可用的空间,在这种情况下可以使用寄存器说明符。
这允许提供一整套缓存器维护操作,这些操作可以在整个实际寻址的页面而不是缓存器行上工作。下表列出了可提供的一些操作示例:
左侧列示出指定要提供缓存器维护的单个虚拟地址(VA)的指令。接下来的三列显示对应于不同页面大小的对应指令,每个页面大小指定虚拟页面地址以触发该页面中每个地址的缓存器维护。最后一列描述要执行的缓存器维护操作。
统一性点、一致性点和内部可共享点是指要执行清理或无效操作的存储器系统的级别。一些操作可能只需要将缓存器层级的特定级的数据做成一致的,而另一些可能需要直到存储器的更深的一致性统一性点、一致性点和内部可共享点可以由例如控制寄存器内的控制参数来定义,以允许对实现的一致性点的一些配置。
特定虚拟地址的一致性点是在该点处可以访问存储器的所有代理都能保证看到存储器位置的相同副本的点。在许多情况下,这可能有效地是主系统存储器,尽管其它系统可以实现超出一致性点的缓存器,其不对存储器系统代理之间的一致性产生影响,在这种情况下,一致性点可以是缓存器。一致性点是响应于上文所示的一致性点缓存维护指令中的一个而被清理或无效的缓存器/存储器的最后级别。
特定处理元件(例如处理器4)的统一性点是在该点处指示和数据缓存器以及该处理元件的转换表都能保证看到存储器位置的相同副本的点。在许多情况下,统一性点可能是单处理器存储器系统中的指令和数据缓存器以及转换表行走已经合并的点。统一性点是响应于上文所示的点统一缓存维护指令中的一个而被清除或无效的缓存器或存储器的最后级别。
内部可共享点适用于指定在多处理器系统内被指定为“内部共享可共享域”的特定处理元件组,并且内部可共享点是指内部共享可共享域内的所有处理元件的指令和数据缓存以及转换表能保证看到存储器位置的相同副本的点。内部可共享点是响应于上文示出的内部可共享指令缓存器无效指令而无效的缓存器的最后一级。
存在许多可能非常有用的、用于在整个虚拟页面上执行缓存器维护的指令的用例。例如:
非相干DMA(直接存储器访问)
DMA操作前后可能需要使存储器缓冲区和缓存器一致。这可能需要在DMA之前进行缓存器清理,随后在DMA完成之后缓存器无效。目前的现实世界的示例是将1080p高清图像传输到GPU并进行OpenCL图像处理,每个图像帧的大小可能是8M字节。在最坏的情况下,将会有很少的图像在任何缓存器中,因为缓冲区比所有缓存器大很多倍。通过指定单个虚拟地址的缓存器维护指令,这将导致128Kx64字节缓存器行操作。使用基于页面的操作,CPU工作可以减少数量级,并可以在缓存器和存储器系统内优化缓存器维护。根据使用的页面大小,可以使用2048x4K缓存器页面操作,512x16K缓存器页面操作或128x64K缓存器页面操作来处理8M字节缓冲区。
零填充存储器
许多操作系统和虚拟机管理程序在将其映射到客户端之前,为了安全起见,用零填充存储器页。基于页面的存储器零可以最终直接发生在存储器设备中,并且广播页面无效。
动态代码加载
当代码被加载到RAM中时,指令缓存器可能必须与数据缓存器和存储器同步。可以通过VA线路操作进行小更新,但是当前的大变化导致整个指令缓存器无效。页面无效将从独立执行的代码中消除总指令缓存器无效的影响。
因此,在这些用例和其它情况下,基于虚拟页面地址的缓存器维护指令可以提供超过基于虚拟地址的缓存器维护指令或专用定制冲洗引擎的许多优点,包括:
●对SoC架构和组件表示较高级别的系统软件意图,以允许优化的实现方式
●未来的操作系统内核代码将使用架构化指令
●指定页面只需要一次MMU转换和许可检查
●原子页面操作不需要锁定或状态跟踪(关于存储器排序和障碍,操作可能需要及时完成)
●缓存器操作中的操作系统抢占将被透明地处理
●无异步错误
●专为多处理器和一致的存储器系统而设计
●硬件或结构可能会消耗多个无效,并通过缓存器进行一次扫描(参见下面的图9)。
存在在特定系统中实现上述类型的缓存器维护指令的几个选项。
图5示出了其中基于页面的缓存器维护操作被处理器4分解成对应于各个地址的多个单独的微操作的第一示例。处理器4接收基于虚拟页地址(VPA)的缓存器维护指令,并触发MMU 24将虚拟页地址转换为物理页地址(PPA)。处理器4将页面操作映射到多个单独的缓存器维护命令60,每个缓存器维护命令60对应于由MMU标识的页面内的相应物理地址(PA0、PA1、...、PAN),并将命令60发送到缓存器34。缓存器34通过查找指定物理地址的缓存器来响应每个命令60,并且如果找到匹配的缓存器行则执行所需的缓存器维护操作。即使缓存器本身只能处理指定单个地址的命令,这种方法也可以允许对VPA缓存器维护指令的体系结构布置的支持。例如,CPU内的小型状态机可以生成顺序的缓存器行操作。或者,在生成单独命令60之前,处理器4不执行地址转换而是可以通过虚拟地址生成顺序的缓存器行操作,随后这些操作中的每一个可以触发MMU中的转换以确定要发送到缓存器的物理地址。
图6示出了将整个页面的命令发送到缓存器的另一示例。在这种情况下,处理器4执行指定VPA的缓存器维护指令,并且使用MMU将VPA转换为PPA,随后将指定PPA的命令62发送到缓存器。随后,缓存器可以确定哪些缓存器行存储具有指定页面内的物理地址的数据,并且可以针对所识别的每个缓存器行启动缓存器维护操作。与图5相比,该方法具有几个优点。首先,减少命令带宽从而在处理器和缓存器之间需要传送更少的命令。此外,该方法可以允许通过每个缓存器行的标签的单次扫描来标识缓存器是否包含指定的物理页地址内的任何数据,而不是如图5所示地为每个地址单独查找,这有助于降低功耗和响应时间。
替代地,如图7所示,可以将页面操作解码和分派为多个较小的缓存器微操作。例如,一个实现方式可以将64K页面操作转换成16个4K操作,或将4K页面操作转换为64个操作,每个操作64个字节。因此在图7中,缓存器维护指令被映射到指定与指令中指定的虚拟页面相对应的物理页面内的物理地址块(例如子页地址)的多个命令64,随后每个命令触发缓存器34标识与指定的地址块相对应的缓存器行,并对所标识的缓存器行执行缓存器维护。
而、图5至图7示出了向一个缓存器发送命令的示例,在包括多个缓存器的系统中,可以将命令广播到每个缓存器或缓存器的子集,并且每个缓存器可以通过检查是否具有所需的地址作为响应,并且执行缓存器维护(如果需要的话)。
图8示出了如何确定哪些缓存器行存储对应于指定的物理地址(PA-图5)、指定的物理页地址(PPA-图6)或、指定的物理子页地址(PSPA-图7)的示例。缓存器34可以扫描每个缓存器行并且将缓存器行的标签37与在命令60、62、64中接收的PA,PPA或PSPA进行比较。对于图6和7中的示例,可以应用掩码72到标签以屏蔽标签的比页面地址或子页面地址的最低有效位更不重要的任何位。例如,可以使用大小参数来标识哪些位应该被掩蔽。如果掩蔽的标签与指定的地址、页面地址或子页面地址匹配,则可以生成命中信号,并且控制电路70可触发针对发现命中的任何行执行缓存器维护。
有时缓存器可能会接收到几个缓存器维护命令。为了减少缓存器查找的开销,可以将与相同类型的缓存器维护操作相对应的多个命令分组在一起,随后使用通过缓存器的单次扫描进行处理。例如如图9所示,可以将每个缓存器行的(被掩蔽的)标签值与几个缓存器维护命令的地址、页面地址或子页面地址并行地进行比较,并且每个命令的命中信号可以是ORed以标识是否应对相应的缓存器行执行缓存器维护操作。虽然图9示出了一次对两个命令执行比较,但是将会意识到可以进行更多的操作。以这种方式,通过对每个缓存器行的单次查找,可以同时处理两个或更多个缓存器维护命令。
在某些情况下,存储器系统16可以包括存储器控制器17,存储器控制器17可以能够本地处理诸如数据零操作之类的一些命令。在这种情况下,除了缓存器之外还可以向存储器发送命令。
在某些情况下,缓存器只能以一定的速率处理命令,并且只能具有用于存储缓存器维护命令的有限缓冲区。因此,处理器4可以应用一些背压来将缓存器维护操作的发布限制为比缓存器或存储器系统可以处理它们的速度更快。
图10示出了包括可以各自具有缓存器的多个处理元件的数据处理装置100的另一示例。例如,处理元件可以包括两个中央处理单元(CPU)和图形处理单元(GPU)106,图形处理单元(GPU)106可以以与图1所示的处理器4类似的方式配置。装置还可以包括存储器控制器108(例如DMA单元),用于与诸如以太网接口之类的外围设备或外部设备进行通信的输入/输出单元110,以及用于控制显示设备上的数据显示的显示控制器112。应当理解可以连接许多其它类型的设备。互连结构连接设备并维护每个设备存储的不同数据版本之间的一致性。
CPU和GPU中的每个都具有本地缓存器120,并且互连结构114可以包括一致性控制电路130,用于维持缓存器120中的数据之间的一致性。可以在互连结构114内提供探听过滤器132以跟踪哪个数据由每个缓存器120所存储。当处理元件中的一个发起对特定地址的访问时,探听过滤器132可以确定其它缓存器中的任何一个是否存储该地址的数据,如果是这样,则启动检查其它缓存器中的数据的相关性状态的探听操作。可以使用任何已知的一致性协议来维护一致性,例如由有限公司提供的ACE协议。
当如上所讨论地执行由虚拟页面地址标识的缓存器维护操作时,探听过滤器132可以用于减少所需的缓存器搜索量。一般而言,当发出缓存器维护操作随后这可以在整个一致性结构中广播,使得数据在可以存储数据的任何缓存器中被清除或无效。然而,通常页面大小可能相对较大,并且缓存器可能相对较小,因此存在某种缓存器可能不存储来自指令中指定的页面的任何数据的合理概率。为了减少搜索的开销,可以使用探听过滤器132来确定是否需要将缓存器维护命令转发到每个缓存器,而仅有被标识为存储来自指定页面的数据的缓存器被查找。一致性控制器130可以防止缓存器维护命令发送到未在探听过滤器132中指示为存储来自该页面的数据的缓存器,从而与发送和跟踪命令相关联的带宽和控制开销以及搜索缓存器来确定它是否保存所需的数据的开销可得以减少。
图11示出了数据处理的方法。在步骤200,处理电路确定是否已经遇到指定虚拟页地址的缓存器维护指令。如果是,则在步骤202,虚拟页面地址被MMU 24转换成物理页面的物理页面地址。在步骤204,一个或多个缓存器维护命令被发布到该物理页面内的地址的缓存器(这可以是用图5至图7所示的任何示例完成)。在步骤206,缓存器在被标识为存储数据(数据具有依赖与缓存器维护指令的指定虚拟页地址相对应的物理页面内的物理地址)的任何缓存器行上执行缓存器维护。
在本申请中,词语“配置为...”用于表示装置的元件具有能够执行定义的操作的配置。在这种情况下,“配置”是指硬件或软件的互连的布置或方式。例如,装置可以具有提供所定义的操作的专用硬件,或者可以对处理器或其它处理设备进行编程以执行功能。“配置为”并不意味着装置元件需要以任何方式进行更改才能提供定义的操作。
虽然本文参考附图已经详细描述了本发明的说明性实施例,但应理解本发明不限于这些精确实施例,并且本领域技术人员可以在其中实现各种改变和修改而不脱离由所附权利要求限定的本发明的范围和精神。
Claims (15)
1.一种数据处理装置,包括:
处理电路,所述处理电路响应于指令执行数据处理;以及
至少一个缓存器,用于存储来自存储器的数据的缓存版本;
其中响应于指定标识虚拟地址空间的虚拟页面的虚拟页面地址的缓存器维护指令,所述处理电路触发所述至少一个缓存器对一个或多个缓存器行执行缓存器维护操作,其中所述一个或多个缓存器行中的每个缓存器行存储具有位于与由所述虚拟页面地址所标识的虚拟页面相对应的物理页面中的物理地址的数据;
其中所述数据的物理地址是在其处储存相应数据的所述存储器中的所述物理地址,存储在所述缓存器行中的数据是所述相应数据的缓存版本;
其中所述缓存器维护指令指定多个虚拟页面大小中的一个虚拟页面大小,并且所述处理电路响应于所述缓存器维护指令,触发所述至少一个缓存器对具有由所述缓存器维护指令指定的虚拟页面大小的所述虚拟页面执行所述缓存器维护操作。
2.如权利要求1所述的装置,其中,所述缓存器维护操作包括下述项中的一个:
清理操作,所述清理操作将由所述一个或多个缓存器行存储的脏数据写入至少一个其它数据存储器;
无效操作,所述无效操作使得由所述一个或多个缓存器行存储的数据无效;
清理和无效操作,所述清理和无效操作将由所述一个或多个缓存器行存储的脏数据写入至少一个其它数据存储器并且使得由所述一个或多个缓存器行存储的数据无效;以及
设置操作,所述设置操作将由所述一个或多个缓存器行存储的数据设置为预定值。
3.如权利要求1和2中任一项所述的装置,包括转换电路,用于将所述虚拟页面地址转换成所述物理页面的物理页面地址。
4.如权利要求3所述的装置,其中所述转换电路包括多个转换条目,每个转换条目对应于虚拟页面地址并且标识所述虚拟页面地址的所对应的物理页面地址。
5.如权利要求1和2中任一项所述的装置,其中,响应于所述缓存器维护指令,所述处理电路被配置为触发向所述至少一个缓存器发出多个缓存器维护命令,其中每个缓存器维护命令指定位于与由所述虚拟页面地址所标识的虚拟页面相对应的物理页面中的物理地址,并且用于控制所述至少一个缓存器以对存储具有指定物理地址的数据的缓存器行执行所述缓存器维护操作。
6.如权利要求1和2中任一项所述的装置,其中,响应于所述缓存器维护指令,所述处理电路被配置为触发向所述至少一个缓存器发出至少一个缓存器维护命令,每个缓存器维护命令指定位于与由所述虚拟页面地址所标识的虚拟页面相对应的物理页面中的物理地址块。
7.如权利要求6所述的装置,其中,对于至少一些缓存器维护指令,所述处理电路被配置为触发发出多个所述缓存器维护命令,每个缓存器维护命令对应于位于与由所述虚拟页面地址所标识的虚拟页面相对应的物理页面中的不同的物理地址块。
8.如权利要求6所述的装置,其中,所述至少一个缓存器响应于缓存器维护命令来标识哪些缓存器行存储由所述缓存器维护命令指定的块内的物理地址的数据,并且对所标识的缓存器行执行所述缓存器维护操作。
9.如权利要求8所述的装置,其中,所述至少一个缓存器被配置为针对多个缓存器行中的每个缓存器行检查所述缓存器行是否存储由所述缓存器维护命令指定的块内的物理地址的数据。
10.如权利要求8和9中任一项所述的装置,其中,响应于多个缓存器维护命令,所述至少一个缓存器被配置为针对多个缓存器行中的每个缓存器行检查所述缓存器行是否存储由所述多个缓存器维护命令指定的任何物理地址块内的物理地址的数据。
11.如权利要求1和2中任一项所述的装置,包括多个缓存器,其中所述处理电路响应所述缓存器维护指令来触发所述多个缓存器中的至少一些缓存器执行所述缓存器维护操作。
12.如权利要求11所述的装置,包括:
探听过滤器,用于存储数据,该数据标识哪些缓存器存储对应的物理地址的数据,其中响应于所述缓存器维护指令,所述探听过滤器将标识一个或多个缓存器,其存储位于与由所述缓存器维护指令指定的虚拟页面地址所标识的虚拟页面相对应的物理页面中的物理地址的数据;以及
控制电路,被配置为禁止将缓存器维护命令发送到除了由所述探听过滤器所标识的所述一个或多个缓存器之外的缓存器。
13.如权利要求1和2中任一项所述的装置,其中,所述处理电路响应于至少一些缓存器维护指令将命令发送到用于控制至少一个存储器的存储器控制器,并且所述存储器控制器响应于所述命令来控制由所述至少一个缓存器执行所述缓存器维护操作。
14.一种数据处理装置,包括:
用于响应于指令执行数据处理的处理装置;以及
至少一个缓存器,用于存储来自存储器的数据的缓存版本;
其中响应于指定标识虚拟地址空间的虚拟页面的虚拟页面地址的缓存器维护指令,所述处理装置触发所述至少一个缓存器对一个或多个缓存器行执行缓存器维护操作,其中所述一个或多个缓存器行中的每个缓存器行存储具有位于与由所述虚拟页面地址所标识的虚拟页面相对应的物理页面中的物理地址的数据;
其中所述数据的物理地址是在其处储存相应数据的所述存储器中的所述物理地址,存储在所述缓存器行中的数据是所述相应数据的缓存版本;
其中所述缓存器维护指令指定多个虚拟页面大小中的一个虚拟页面大小,并且所述处理装置响应于所述缓存器维护指令,触发所述至少一个缓存器对具有由所述缓存器维护指令指定的虚拟页面大小的所述虚拟页面执行所述缓存器维护操作。
15.一种数据处理方法,包括:
接收指定标识虚拟地址空间的虚拟页面的虚拟页面地址的缓存器维护指令;以及
响应于所述缓存器维护指令,触发至少一个缓存器对一个或多个缓存器行执行缓存器维护操作,其中所述一个或多个缓存器行中的每个缓存器行存储具有位于与由所述虚拟页面地址所标识的虚拟页面相对应的物理页面中的物理地址的数据;
其中由所述缓存器行存储的数据的物理地址是在其处储存相应数据的存储器中的所述物理地址,存储在所述缓存器行中的数据是所述相应数据的缓存版本;并且
其中所述缓存器维护指令指定多个虚拟页面大小中的一个虚拟页面大小,并且响应于所述缓存器维护指令来触发所述至少一个缓存器对具有由所述缓存器维护指令指定的虚拟页面大小的所述虚拟页面执行所述缓存器维护操作。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1503580.1 | 2015-03-03 | ||
GB1503580.1A GB2536205A (en) | 2015-03-03 | 2015-03-03 | Cache maintenance instruction |
PCT/GB2016/050064 WO2016139444A1 (en) | 2015-03-03 | 2016-01-12 | Cache maintenance instruction |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107278298A CN107278298A (zh) | 2017-10-20 |
CN107278298B true CN107278298B (zh) | 2021-10-22 |
Family
ID=52876431
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680012407.3A Active CN107278298B (zh) | 2015-03-03 | 2016-01-12 | 缓存器维护指令 |
Country Status (7)
Country | Link |
---|---|
US (1) | US11144458B2 (zh) |
EP (1) | EP3265917B1 (zh) |
JP (1) | JP6831788B2 (zh) |
KR (1) | KR102531261B1 (zh) |
CN (1) | CN107278298B (zh) |
GB (1) | GB2536205A (zh) |
WO (1) | WO2016139444A1 (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9898226B2 (en) | 2015-10-28 | 2018-02-20 | International Business Machines Corporation | Reducing page invalidation broadcasts in virtual storage management |
US10942683B2 (en) | 2015-10-28 | 2021-03-09 | International Business Machines Corporation | Reducing page invalidation broadcasts |
US10255181B2 (en) | 2016-09-19 | 2019-04-09 | Qualcomm Incorporated | Dynamic input/output coherency |
US11687460B2 (en) * | 2017-04-26 | 2023-06-27 | Advanced Micro Devices, Inc. | Network cache injection for coherent GPUs |
US10831673B2 (en) * | 2017-11-22 | 2020-11-10 | Arm Limited | Memory address translation |
GB2571539B (en) * | 2018-02-28 | 2020-08-19 | Imagination Tech Ltd | Memory interface |
CN109308270B (zh) * | 2018-09-04 | 2021-07-23 | 飞腾技术(长沙)有限公司 | 一种加速虚实地址转换的方法及装置 |
US10656881B1 (en) * | 2018-11-21 | 2020-05-19 | Kyocera Document Solutions Inc. | System for printing a document using a PDF converter based on page size value |
CN109684238A (zh) * | 2018-12-19 | 2019-04-26 | 湖南国科微电子股份有限公司 | 一种固态硬盘映射关系的存储方法、读取方法及固态硬盘 |
US11055250B2 (en) * | 2019-10-04 | 2021-07-06 | Arm Limited | Non-forwardable transfers |
CN112764668A (zh) * | 2019-11-01 | 2021-05-07 | 伊姆西Ip控股有限责任公司 | 扩展gpu存储器的方法、电子设备和计算机程序产品 |
US11681624B2 (en) * | 2020-07-17 | 2023-06-20 | Qualcomm Incorporated | Space and time cache coherency |
US11972145B2 (en) * | 2021-01-21 | 2024-04-30 | Micron Technology, Inc. | Opportunistic data movement |
US11960403B2 (en) * | 2022-08-30 | 2024-04-16 | Micron Technology, Inc. | Variable execution time atomic operations |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101421706A (zh) * | 2006-04-19 | 2009-04-29 | 高通股份有限公司 | 具有经物理标记的行为的经虚拟标记的指令高速缓存器 |
CN102117247A (zh) * | 2009-12-22 | 2011-07-06 | 英特尔公司 | 用于一系列页面的高速缓存刷新和一系列条目的tlb无效的系统、方法和设备 |
CN103455443A (zh) * | 2013-09-04 | 2013-12-18 | 华为技术有限公司 | 一种缓存管理方法和装置 |
CN104272279A (zh) * | 2012-05-10 | 2015-01-07 | Arm有限公司 | 具有缓存和转换后备缓冲器的数据处理装置 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03231345A (ja) * | 1990-02-06 | 1991-10-15 | Fujitsu Ltd | キャッシュ装置 |
US6978357B1 (en) * | 1998-07-24 | 2005-12-20 | Intel Corporation | Method and apparatus for performing cache segment flush and cache segment invalidation operations |
JP2001134490A (ja) * | 1999-11-01 | 2001-05-18 | Fujitsu Ltd | キャッシュメモリの制御方法及びその方法を実現する計算機 |
EP1182566B1 (en) * | 2000-08-21 | 2013-05-15 | Texas Instruments France | Cache operation based on range of addresses |
US6757784B2 (en) * | 2001-09-28 | 2004-06-29 | Intel Corporation | Hiding refresh of memory and refresh-hidden memory |
US7000081B2 (en) * | 2002-02-12 | 2006-02-14 | Ip-First, Llc | Write back and invalidate mechanism for multiple cache lines |
US20070005932A1 (en) * | 2005-06-29 | 2007-01-04 | Intel Corporation | Memory management in a multiprocessor system |
US20090019232A1 (en) * | 2007-07-11 | 2009-01-15 | Freescale Semiconductor, Inc. | Specification of coherence domain during address translation |
US20090083496A1 (en) * | 2007-09-26 | 2009-03-26 | Stevens Jr David L | Method for Improved Performance With New Buffers on NUMA Systems |
JP2009140376A (ja) * | 2007-12-10 | 2009-06-25 | Hitachi Ltd | 特定アドレス範囲に分割されたスヌープフィルタを持つマルチプロセッサコンピュータシステム |
US8392663B2 (en) * | 2007-12-12 | 2013-03-05 | Mips Technologies, Inc. | Coherent instruction cache utilizing cache-op execution resources |
CN101615133A (zh) * | 2008-06-27 | 2009-12-30 | 国际商业机器公司 | 用于细粒度延迟写拷贝的装置和方法 |
US9672019B2 (en) * | 2008-11-24 | 2017-06-06 | Intel Corporation | Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads |
CN101944068A (zh) * | 2010-08-23 | 2011-01-12 | 中国科学技术大学苏州研究院 | 一种共享高速缓存的性能优化方法 |
US9069684B2 (en) * | 2012-07-16 | 2015-06-30 | Nvidia Corporation | System, method, and computer program product for invalidatng cache lines |
US9208102B2 (en) * | 2013-01-15 | 2015-12-08 | Qualcomm Incorporated | Overlap checking for a translation lookaside buffer (TLB) |
GB2516477A (en) * | 2013-07-24 | 2015-01-28 | Ibm | Method and system for handling virtual memory address synonyms in a multi-level cache hierarchy structure |
CN104346295B (zh) * | 2013-08-09 | 2017-08-11 | 华为技术有限公司 | 一种缓存刷新方法和装置 |
US20170192886A1 (en) * | 2014-07-31 | 2017-07-06 | Hewlett Packard Enterprise Development Lp | Cache management for nonvolatile main memory |
-
2015
- 2015-03-03 GB GB1503580.1A patent/GB2536205A/en not_active Withdrawn
-
2016
- 2016-01-12 US US15/549,284 patent/US11144458B2/en active Active
- 2016-01-12 KR KR1020177026340A patent/KR102531261B1/ko active IP Right Grant
- 2016-01-12 WO PCT/GB2016/050064 patent/WO2016139444A1/en active Application Filing
- 2016-01-12 JP JP2017545291A patent/JP6831788B2/ja active Active
- 2016-01-12 EP EP16701195.6A patent/EP3265917B1/en active Active
- 2016-01-12 CN CN201680012407.3A patent/CN107278298B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101421706A (zh) * | 2006-04-19 | 2009-04-29 | 高通股份有限公司 | 具有经物理标记的行为的经虚拟标记的指令高速缓存器 |
CN102117247A (zh) * | 2009-12-22 | 2011-07-06 | 英特尔公司 | 用于一系列页面的高速缓存刷新和一系列条目的tlb无效的系统、方法和设备 |
CN104272279A (zh) * | 2012-05-10 | 2015-01-07 | Arm有限公司 | 具有缓存和转换后备缓冲器的数据处理装置 |
CN103455443A (zh) * | 2013-09-04 | 2013-12-18 | 华为技术有限公司 | 一种缓存管理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
US11144458B2 (en) | 2021-10-12 |
KR102531261B1 (ko) | 2023-05-11 |
US20180032435A1 (en) | 2018-02-01 |
EP3265917B1 (en) | 2021-05-19 |
WO2016139444A1 (en) | 2016-09-09 |
EP3265917A1 (en) | 2018-01-10 |
GB201503580D0 (en) | 2015-04-15 |
JP2018511120A (ja) | 2018-04-19 |
GB2536205A (en) | 2016-09-14 |
JP6831788B2 (ja) | 2021-02-17 |
CN107278298A (zh) | 2017-10-20 |
KR20170120635A (ko) | 2017-10-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107278298B (zh) | 缓存器维护指令 | |
US10802987B2 (en) | Computer processor employing cache memory storing backless cache lines | |
US8949572B2 (en) | Effective address cache memory, processor and effective address caching method | |
KR102448124B1 (ko) | 가상 주소들을 사용하여 액세스된 캐시 | |
US10552339B2 (en) | Dynamically adapting mechanism for translation lookaside buffer shootdowns | |
US8417915B2 (en) | Alias management within a virtually indexed and physically tagged cache memory | |
US6370622B1 (en) | Method and apparatus for curious and column caching | |
US7389402B2 (en) | Microprocessor including a configurable translation lookaside buffer | |
US5915262A (en) | Cache system and method using tagged cache lines for matching cache strategy to I/O application | |
JP5414912B2 (ja) | キャッシュコヒーレンシ制御の方法、システムおよびプログラム | |
US9058284B1 (en) | Method and apparatus for performing table lookup | |
US11720495B2 (en) | Multi-level cache security | |
WO2018231898A1 (en) | Cache devices with configurable access policies and control methods thereof | |
US8108621B2 (en) | Data cache with modified bit array | |
US8108624B2 (en) | Data cache with modified bit array | |
TWI782754B (zh) | 微處理器和在微處理器中實現的方法 | |
US11822652B1 (en) | Prime and probe attack mitigation | |
WO2023239671A1 (en) | Virtual memory paging system and translation lookaside buffer with pagelets |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |