CN109074313B - 缓存和方法 - Google Patents

缓存和方法 Download PDF

Info

Publication number
CN109074313B
CN109074313B CN201780008604.2A CN201780008604A CN109074313B CN 109074313 B CN109074313 B CN 109074313B CN 201780008604 A CN201780008604 A CN 201780008604A CN 109074313 B CN109074313 B CN 109074313B
Authority
CN
China
Prior art keywords
cache
address
entry
data
chip
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
Application number
CN201780008604.2A
Other languages
English (en)
Other versions
CN109074313A (zh
Inventor
A·马丁内斯德拉托雷
E·利兰
T·里克特
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Swarm64 AS
Original Assignee
Swarm64 AS
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Swarm64 AS filed Critical Swarm64 AS
Publication of CN109074313A publication Critical patent/CN109074313A/zh
Application granted granted Critical
Publication of CN109074313B publication Critical patent/CN109074313B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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

公开了一种n级缓存和方法。n级缓存方法包括:响应于识别要访问的数据块的地址的数据访问请求,询问n级缓存的地址缓存,用于存储为存储在n级缓存的主缓存中的数据块子集而设的地址部分,以确定针对该地址在地址缓存内是否发生缓存命中。以这种方式,提供与主缓存分离的地址缓存,其中地址缓存存储与存储在主缓存中的数据块有关的地址部分,减少了需要存储在地址缓存中的数据量,并将地址缓存的大小与主缓存的大小分离,这使得地址缓存的大小可以与存储在主缓存中的数据块的大小无关。这提供了地址的缓存,该缓存可以明显更小、更快并且可以容易地与数据处理装置的其他部件定位,同时允许数据存储在主缓存中的其他位置,该主缓存可以更大、更慢并且更远离数据处理装置的其他部件定位。

Description

缓存和方法
技术领域
本发明涉及缓存、方法和计算机程序产品。
背景技术
缓存是已知的。缓存通常用于提供数据值的本地存储以供至少一个处理器内核使用;这些数据值可以是指令以及数据。已知提供缓存以便在执行指令序列时改善处理器内核的性能,因为缓存可以提供数据值的本地副本,使得这些数据值在需要时可由处理器内核使用,而不是必须访问较慢的存储器。
为了保持快速访问时间、最小化空间并降低功耗,缓存的大小通常是有限的。鉴于缓存的有限大小,很明显将会出现缓存变满并且需要覆盖写入缓存中的数据值的时候。
当提供的缓存是所谓的“n”路集关联缓存时,可以在“n”路中的任何一个中以适当的索引写入数据值。存在分配算法,其确定应该分配哪个“n”路来存储数据值。
尽管缓存可以帮助改善处理器内核的性能,但是在某些情况下难以提供为这种性能改进而提供的缓存布置。
因此,期望提供一种改进的缓存布置。
发明内容
根据第一方面,提供了一种n级缓存方法,包括:响应于识别要访问的数据块的地址的数据访问请求,询问n级缓存的地址缓存,用于存储为存储在n级缓存的主缓存中的数据块子集而设的地址部分,以确定为地址而设的地址缓存内是否发生缓存命中。
第一方面认识到可能出现这样的情况,即由缓存存储的数据块可能非常大。如果保持缓存的大小,则可以缓存的数据块的数量减少到缓存未命中率增加到不可接受的水平的程度。在一些情况下,数据块的大小(以及甚至地址所需的存储大小)可能非常大,以致甚至无法将那些数据块(或地址)存储在传统的架构缓存中。尽管可以将数据块存储在更大的存储器中,但是更大的存储器通常需要更远离处理器内核,因此访问该存储器将更慢,这又会导致性能下降。
因此,提供了一种方法。该方法可以用于n级缓存。也就是说,该方法可以由存储器***内的缓存级别之一来执行。该方法可以包括询问在n级缓存内提供的地址缓存的步骤,安排n级缓存的地址缓存来存储地址部分,例如完整地址的成分或一部分。地址缓存可以安排来存储用于存储在n级缓存的主缓存中的数据块的子集或完整数量的一部分的地址部分。询问可以响应于或在接收到数据访问请求后发生,或者在接收到数据访问请求时发生。数据访问请求可以标识要在n级缓存内待访问的数据块的地址。询问可以确定是否在针对该地址的地址缓存内发生缓存命中。也就是说,询问可以确定地址缓存是否具有针对该地址的匹配条目。以这种方式,提供与主缓存分离的地址缓存,其中地址缓存存储与存储在主缓存中的数据块有关的地址部分,减少了需要存储在地址缓存中的数据量,并将地址缓存的大小与主缓存的大小分离,这使得地址缓存的大小可以与存储在主缓存中的数据块的大小无关。这提供了地址的缓存,该缓存可以明显更小、更快并且可以容易地与数据处理装置的其他部件定位,同时允许数据存储在主缓存中的其他位置,该其他位置可以更大、更慢并且更远离数据处理装置的其他部件定位。
在一个实施例中,地址缓存在芯片上,主缓存在芯片外。因此,因为地址缓存很小,所以它可以是芯片上的,具有例如低级缓存和任何处理器内核或其他主机设备。相反,主缓存可以位于芯片外,位于较大的存储器中,该存储器能够存储比可能需要存储在片上存储器中的数据块更大的数据块。
在一个实施例中,数据块包括存储页面。因此,可以调整数据块的大小以匹配外部存储器单元内的存储页面的大小。例如,数据块可以大于大约64字节,优选地大约4kB并且高达32kB或更大。因此,可以看出,数据块可以比通常存储在现有缓存的缓存行具有多得多数量级。
在一个实施例中,该方法包括,当在地址缓存内发生缓存命中时,使用来自可以访问数据块的主缓存内的地址缓存的集合和路径的指示来访问主缓存内的数据块。因此,当数据访问请求导致地址缓存内的缓存命中时,意味着数据访问请求的一部分地址与存储在地址缓存内的地址的一部分匹配,可以使用同样存储在为该地址部分而设的地址缓存内的指示,在主缓存内直接访问数据块。存储在为该地址部分而设的地址缓存内的该指示可以标识主缓存内可以访问数据块的位置。通常,该指示将识别主缓存内的集合和路径,从该集合和路径可以导出数据块的位置。应当理解,即使数据块的访问发生在主缓存中(这可能更慢),当地址缓存包含主缓存中该数据块的位置的指示时,避免了主缓存中的初始查找(这可能也需要相对长的时间),而是在更快的地址缓存上执行查找,这显著改善了性能。
在一个实施例中,该方法包括,当在地址缓存内发生缓存未命中时,询问主缓存以确定在主缓存内针对该地址是否发生缓存命中。因此,当在地址缓存内发生缓存未命中时,意味着与数据访问请求相关联的地址部分与存储在地址缓存内的任何地址部分不匹配,则可以询问主缓存。该询问可以确定与数据访问请求相关联的地址部分是否匹配存储在主缓存内的任何地址部分。因此,当数据块的位置不能直接从地址缓存导出时,那么可以将访问请求传递到主缓存以查看实际上是否存储了数据块,但其地址部分当前未缓存在地址缓存中。应当理解,由于地址缓存将仅存储与主缓存内的所有条目相关的地址部分的子集,因此可能出现这种情况。
在一个实施例中,该方法包括,当在主缓存内发生缓存命中时,更新地址缓存中的条目以存储与数据访问请求相关联的地址部分以及可以访问数据块的主缓存内的集合和路径的指示。因此,当在主缓存内发生缓存命中时,意味着与数据访问相关联的地址部分与主缓存内的地址部分匹配,然后可以更新地址缓存中的条目。可以更新该条目,以存储与数据访问请求相关联的地址部分。还可以更新该条目,以包括主缓存内的集合和路径的指示,使得所有信息都可用于数据块,其中该数据块将要使用存储在地址缓存中的信息而从主缓存直接访问,而无需从较慢的主缓存中获取任何进一步的信息。这意味着如果需要再次访问该地址,则可以从地址缓存中获取所有信息,而无需再次访问较慢的主缓存。
在一个实施例中,地址缓存中的条目分组为条目组,每组条目可分配给相应的集合组,可以在该集合组和更新中以任何方式针对任何条目分配每组条目中的每个条目包括用地址部分以及主缓存内集合和路径的指示来替换与数据访问请求相关联的集合的一组条目内的地址缓存中的条目。因此,地址缓存内的条目可以组合在一起。每个组可以映射到主缓存中的多个集合。例如,如果地址缓存中有两个组,则一个组可以映射到主缓存内的奇数集,而另一个组可以映射到主缓存内的偶数集。这意味着主缓存内的许多不同集合可以共享地址缓存内的一组条目。当需要更新地址缓存时,可以选择与要访问的数据块的地址相关联的地址缓存集合内的条目组,并且可以更新组内的那些条目之一。例如,使用上述示例,如果数据访问请求与集合4中的数据块相关联,则可以选择第二组条目,并且可以选择该组内的条目之一进行更新。可以更新所选择的条目以存储数据访问请求的地址部分以及与所有偶数集中的哪个集合相关联的数据块以及主缓存中哪个路径存储该数据块的指示。这使得仅使用存储在地址缓存中的信息就可以在主缓存中访问数据块。
在一个实施例中,替换包括替换条目组内最近最少使用的条目。尽管最近最少使用的条目可能是要替换的最佳候选者,但是在其他实施例中,可以使用其他选择算法。
在一个实施例中,该方法包括,当在地址缓存内发生缓存命中时,为包含命中条目的该组条目设置待定指示符,直到已解析数据访问请求。因此,当在地址缓存内发生缓存命中时,意味着与数据访问请求相关联的地址部分与存储在地址缓存内的地址部分匹配,可以设置待定指示符。可以为发生缓存命中的条目组设置待定指示符。待定指示符可以保持设置,直到已解析或完成访问请求。设置待定指示符表示正在访问该组内的数据,因此可能是陈旧的。
在一个实施例中,该方法包括当为该组设置待定位元时,推迟对组做出的任何访问请求。因此,可以推迟对该集合组做出的任何后续访问请求,直到已经解析了待定访问请求。这意味着任何可能陈旧的数据都将更新或删除。
在一个实施例中,该方法包括当数据访问请求来自高优先级所有者时,忽视待定位元。因此,由于高优先级所有者最有可能控制该数据,因此允许执行那些有高优先级所有者作出的访问请求。
在一个实施例中,该方法包括,当在主缓存内发生缓存未命中时,从更高级别的存储器获得数据块。因此,当在主缓存内发生缓存未命中时,意味着访问请求的地址部分未能与主缓存内的任何地址部分匹配,然后,可以从更高级别的存储器获得数据块,以便由n级缓存进行缓存。
在一个实施例中,该方法包括,当已经获得数据块时,在与数据访问请求相关联的集合的一组条目内替换主缓存中的条目,条目由该组条目的干净索引指示,将地址部分存储在条目内并将数据块存储在与主缓存中的该条目相关联的位置。因此,当已经从较高级别的存储器获得数据块时,可以替换主缓存内的条目。可以从分配给与访问请求相关联的集合的条目中选择要替换的条目。所选择的条目可以是由该组条目的干净索引指示的条目。地址部分可以存储在该组内的干净索引所指示的条目内,并且数据块可以存储在与主缓存内的该条目相关联的位置。在实施例中,干净索引指示相关联的条目不是脏的,这意味着该条目与任何更高级别的存储器存储的条目匹配,因为该条目没有发生任何变化或者已经回写或连续写入。这使得干净索引指示的条目能够无延迟地被替换。
在一个实施例中,该方法包括将干净索引改变为指向条目组内的不同条目,并且当不同条目标记为脏时,对该条目执行回写。因此,当替换主缓存中的条目时,可以改变干净索引以指向刚刚替换的条目组内的不同条目。如果不同的条目指示为脏(意味着数据块的值已更改但此更改尚未回写到更高级别的存储器),然后可以对更高级别的存储器执行该条目的回写。这样就可以在需要进行此类更换时为将来的更换准备条目,并且与更换时必须进行回写相比,可以更快地进行更换。
在一个实施例中,基于循环选择不同的条目。尽管在许多情况下循环选择是足够的,但是应当理解,可以使用其他选择算法。
在一个实施例中,该方法包括,当回写已经完成时,在主缓存中将不同的条目标记为干净,并且设置与存储数据访问请求的地址部分的地址缓存内的条目相关联的is_clean指示。因此,当已经发生对较高级别的存储器的数据值的回写时,则可以在主缓存内指示不同的条目是干净的,并且可以在地址缓存内设置该条目现在是干净的指示。这意味着主缓存和地址缓存都包含与这些条目相关联的数据块不脏的指示,因此可以毫无延迟地替换。
在一个实施例中,该方法包括当在地址缓存内发生缓存命中时,数据访问请求是写入请求,并且设置与存储数据访问请求的地址部分的地址缓存内的条目相关联的is_clean指示,报告地址缓存中的缓存未命中,将主缓存中的干净索引更改为指向条目组内的不同条目,并且当不同条目标记为脏时,执行该条目的回写。因此,当在地址缓存内发生缓存命中时,意味着数据访问的地址部分与地址缓存内的地址部分匹配,并且当该数据访问是写入请求时,并且当设置与发生缓存命中的条目相关联的is-clean指示时,相比起报告缓存命中,实则是可以报告地址缓存内的缓存未命中。当发生这种情况时,可以改变或更改主缓存中的干净索引以指向该集合中的不同条目。如果该条目标记为脏,则可能发生针对该条目的回写。这有助于防止将要写入的数据块在主缓存内被选择用于替换,而是可以选择主缓存内的不同条目作为下一个被替换的候选。
在一个实施例中,该方法包括,当回写已完成时,在主缓存中将不同条目标记为干净,并设置与存储地址缓存内针对该条目的地址部分的条目相关联的is_clean指示。因此,当已经完成对更高级存储器的回写时,主缓存中的不同条目可以标记为干净以及可以设置地址缓存中相应的is-clean指示,以指示该数据块也是干净的,因此如果需要,可以无延迟地替换。
在一个实施例中,该方法包括报告主缓存内的缓存命中,并设置与存储数据访问请求的地址部分的地址缓存内的条目相关联的is_clean指示。因此,可以发生主缓存内的缓存命中,并且可以将地址缓存内的条目标记为干净。应当理解,在这些情况下,不需要向地址缓存提供地址部分或路径或设置指示,因为尽管地址缓存报告了缓存未命中,但该信息已经存储在地址缓存中。
在一个实施例中,地址缓存和主缓存中的每个条目具有指示针对该条目的所有者的所有者指示,并且包括在数据访问请求是独占读取时设置所有者指示。因此,可以为地址缓存内和主缓存内的每个条目提供所有者指示。可以通过在对该地址进行独占数据访问请求时指示所有者来设置这些所有者指示。如下面将更详细解释的,当设置所有者指示时,在某些情况下可能削弱对该地址的后续数据访问请求。
在一个实施例中,该方法包括,当地址缓存内的一组条目内的每个条目具有其所有者指示集时,选择条目之一以待无效。因此,如果地址缓存内的组内的所有条目都具有所有者指示集,则这可能防止任何这些条目被替换,因此可以选择至少一个条目以待无效。应当理解,这种无效可能要求与条目相关联的所有者解析任何未完成的访问请求。
在一个实施例中,选择包括选择最近最少使用的条目。
在一个实施例中,该方法包括,当在地址缓存内针对设置了所有者指示的条目发生缓存命中时,推迟对来自除所有者之外的访问请求的访问请求。在不再设置指示之前延迟或推迟访问请求,有助于防止使用任何陈旧数据。
根据第二方面,提供了一种n级缓存,包括:主缓存;地址缓存,可操作以存储主缓存中存储的数据块子集的地址部分;和控制逻辑,响应于识别要访问的数据块的地址的数据访问请求,可操作以询问地址缓存以确定是否在针对地址的地址缓存中发生缓存命中。
在一个实施例中,地址缓存在芯片上,主缓存在芯片外。
在一个实施例中,数据块包括存储页面。例如,数据块可以大于大约64字节,优选地大约4kB并且高达32kB或更大。因此,可以看出,数据块可以比通常存储在现有缓存的缓存行具有多得多的数量级。
在一个实施例中,当在地址缓存内发生缓存命中时,控制逻辑可操作以使用来自可以访问数据块的主缓存内的集合和路径的地址缓存指示来访问主缓存内的数据块。
在一个实施例中,当在地址缓存内发生缓存未命中时,控制逻辑可操作以询问主缓存,以确定缓存命中是否发生在针对地址的主缓存内。
在一个实施例中,当在主缓存内发生缓存命中时,控制逻辑可操作以更新地址缓存中的条目,以存储与数据访问请求相关联的地址部分以及可以访问数据块的主缓存内的集合和路径的指示。
在一个实施例中,地址缓存内的条目分组为条目组,每组条目可分配给相应的集合组,每组条目中的每个条目可以在该集合组中以任何方式分配给任何条目,并且控制逻辑可操作以用地址部分以及主缓存内集合和路径的指示替换与数据访问请求相关联的集合的一组条目内的地址缓存中的条目。
在一个实施例中,控制逻辑可操作以替换条目组内最近最少使用的条目。
在一个实施例中,当在地址缓存内发生缓存命中时,控制逻辑可操作以设置包含命中条目的该组条目的待定指示符,直到已解析数据访问请求。
在一个实施例中,控制逻辑可操作以用于在为该组设置待定位元时,推迟对组做出的任何访问请求。
在一个实施例中,控制逻辑可操作以在数据访问请求来自高优先级所有者时忽略待定位元。
在一个实施例中,当在主缓存内发生缓存未命中时,控制逻辑可操作以从更高级的存储器获得数据块。
在一个实施例中,当已经获得数据块时,控制逻辑可操作以在与数据访问请求相关联的集合的一组条目内替换主缓存中的条目,通过将地址部分存储在条目内并通过将数据块存储在与主缓存中的该条目相关联的位置处,条目由该组条目的干净索引指示。
在一个实施例中,控制逻辑可操作以将干净索引改变为指向条目组内的不同条目,并且当不同条目标记为脏时,以对该条目执行回写。
在一个实施例中,控制逻辑可操作以基于循环选择不同的条目。
在一个实施例中,当回写已经完成时,控制逻辑可操作以在主缓存中将不同条目标记为干净,并设置与存储数据访问请求的地址部分的地址缓存内的条目相关联的is_clean指示。
在一个实施例中,当在地址缓存内发生缓存命中,数据访问请求是写入请求并且设置与存储数据访问请求的地址部分的地址缓存内的条目相关联的is_clean指示时,控制逻辑可操作以报告地址缓存内的缓存未命中,以将主缓存中的干净索引改变为指向该组条目内的不同条目,以及当不同条目标记为脏时,控制逻辑可操作以对该条目执行回写。
在一个实施例中,当回写已经完成时,控制逻辑可操作以在主缓存中将不同条目标记为干净并且设置与存储该条目的地址部分的地址缓存内的条目相关联的is_clean指示。
在一个实施例中,控制逻辑可操作以报告主缓存内的缓存命中并设置与存储数据访问请求的地址部分的地址缓存内的条目相关联的is_clean指示。
在一个实施例中,地址缓存和主缓存中的每个条目具有指示针对该条目的所有者的所有者指示,并且控制逻辑可操作以用于当数据访问请求是独占读取时设置所有者指示。
在一个实施例中,当地址缓存内的一组条目内的每个条目具有其所有者指示集时,控制逻辑可操作以选择条目之一以待无效。
在一个实施例中,控制逻辑可操作以选择最近最少使用的条目。
在一个实施例中,当在地址缓存内针对设置了所有者指示的条目发生缓存命中时,控制逻辑可操作以推迟对来自除所有者之外的访问请求的访问请求。
根据第三方面,提供了一种计算机程序产品,当在计算机上执行时,可操作以执行第一方面的方法。
在所附独立和从属权利要求中阐述了进一步的特定和优选方面。从属权利要求的特征可以酌情与独立权利要求的特征组合,并且可以与权利要求中明确阐述的特征之外的特征组合。
在装置特征描述为可操作以提供功能的情况下,应当理解,这包括提供该功能的或者适于或配置为提供该功能的装置特征。
附图说明
现在将参考附图进一步描述本发明的实施例,其中:
图1示出了一个实施例的数据处理装置,总体为10;
图2示出了n级缓存中条目的布置;
图3是描述由缓存逻辑执行的与片上标签RAM有关的主要步骤的流程图;
图4是描述由缓存逻辑执行的与片外部分有关的主要步骤的流程图;以及
图5和6示出了缓存逻辑的流水线处理。
具体实施方式
在更详细地讨论实施例之前,首先将提供概述。实施例提供了n级缓存的架构布置。n级缓存同时利用更快、更小的存储器和更慢、更大的存储器。较慢的存储器用于存储地址信息和数据值。例如,较慢的存储器分区为标签RAM和数据RAM。标签RAM存储与存储在数据RAM中的数据值有关的地址信息。标签RAM和数据RAM可以是相同或不同的物理存储器设备(或者多个)。存储在数据RAM中的数据值通常是表示存储页面的数据块,这些存储页面通常大于可以存储在n级缓存的传统数据RAM中的存储页面。同样,用于存储地址的标签RAM通常大于n级缓存的传统标签RAM。较快的存储器存储与存储在较慢存储器的标签RAM中的所有地址信息的子集有关的地址信息。通常,较慢的存储器是芯片外的,而较快的存储器是与处理器内核和相关的控制逻辑一起在芯片上。通过这种架构布置,可以利用能够存储大量数据值和地址的片外的较慢存储器,但是通过具有存储与存储在较慢的片外存储器中的数据值的子集有关的地址信息的片上的更快存储器,使用这种较慢存储器的性能影响会降低。
当做出数据访问请求时,询问片上标签RAM,并且如果存在缓存命中,则可以直接从较慢的片外存储器的数据RAM部分检索数据值。通常,片上标签RAM为存储在数据RAM中的数据值的子集提供集合和路径信息。与否则必须首先检查较慢的片外标签RAM相比,这增加了数据访问的速度,以确定地址信息是否存在命中(可能需要数十个循环),然后在地址信息发生命中时检索数据值(也可能需要数十个循环)。相反,如果地址信息在较快的片上标签RAM中,则避免在较慢的片外标签RAM中进行地址查找。换句话说,片上标签RAM在片外标签RAM中提供标签的缓存。
架构布置
图1示出了一个实施例的数据处理装置,总体为10。数据处理装置10包括处理器内核20、n级缓存30和存储器40。已经省略了数据处理装置10的其他物品以提高清晰度。处理器内核20和n级缓存30的片上缓存部分30A共同位于芯片50上。n级缓存30的片外缓存部分30B位于芯片外,存储器40也是如此。
处理器内核20可操作以执行应用于提供给处理器内核20的数据值的指令序列。由处理器内核20处理的指令和数据存储在存储器40中。此后,术语“数据值”将用于指代指令和数据。
n级缓存
n级缓存30布置为存储数据值,使得当与对存储器40的等效访问相比时,处理器内核20随后可以使用减少数量的访问循环来容易地访问它们。n级缓存30存储与存储器地址相关联的数据值,直到它被处理器内核20所需的新存储器地址的数据值覆写。使用物理或虚拟存储器地址将数据值存储在n级缓存30中。
片上缓存部分30A包括片上标签RAM 37。片外缓存部分30B包括片外标签RAM 33和片外数据RAM 35。片外数据RAM 35存储数据值作为从存储器40检索得到的数据块或存储页面。这些存储页面的大小很大(通常为4千字节或更大),这比在片上缓存部分30A中可以合理地存储足够的量更大。而且,这些地址的大小通常大于可以在片上缓存部分30A中合理地存储足够的量。因此,地址信息和相关数据值(数据块)都存储在片外缓存部分30B中,而对于由片外缓存部分30B存储的一些数据块的地址信息(没有数据值本身)存储在片上标签RAM 37中。使片上缓存的地址信息改善了对存储在片外数据RAM 35中的数据块的访问时间。尽管在该实施例中片外标签RAM 33和片外数据RAM 35共享相同的物理RAM,但是它们可以作为单独的RAM和/或多个单独的RAM提供。
在该实施例中,处理器内核20具有1级缓存,n级缓存30是2级缓存以及存储器40是3级存储器。然而,应当理解,可以在处理器20和存储器40之间提供进一步的缓存。如果改变n级缓存30中的数据值,则通常确保在改变(连续写入)数据值时或者当覆写(回写)n级缓存30中的数据值时,将改变的数据值重写到存储器40。
缓存条目
图2示出了n级缓存30内的条目的布置。在片外标签RAM 33内提供了多个条目33A,每个条目存储片外标签TOF。在片外数据RAM 35内提供多个条目35A,每个条目存储数据块D(例如存储页面)。片外标签RAM 33内的每个条目33A对应于片外数据RAM 35中的条目35A。也就是说,存储在片外数据RAM 35内的条目35A中的数据块D的地址可以从片外标签RAM 33中的相应条目33A识别。
在该示例中,片外缓存部分30B是4路集关联缓存。然而,应当理解,可以使用多于或少于四种的路径。因此,当要将数据块存储在片外数据RAM 35中的条目35A中时,基于数据块的地址识别片外组。例如,可以从数据块的地址导出该数据块必须存储在片外集合S1中。在片外组S1内,标签RAM 33A中有四个条目33A,每个用于四个路径中一个,可用于存储片外标签TOF。如下面将更详细地解释的,选择这些中的一个并且该条目用于存储该数据块的片外标签TOF。同时,数据RAM 35内的相应条目35A存储数据块D本身。
如图2所示,片外标签TOF包含四个字段:标签字段、所有者字段、脏位元和有效位元。标签字段的大小为A-LOF,其中A是地址大小,LOF是Log 2(片外集合的数量)。所有者字段的大小为LOWN,其中LOWN是Log 2(数据块的可能所有者的数量)。脏位元的大小为1,有效位元的大小为1。标签字段与集合组合唯一地识别由片外缓存部分30B存储的每个数据块的地址。所有者识别数据值的所有者。脏位元指示自从数据块D的内容已经从存储器40中检索(因此可能需要回写到存储器40),它是否已经改变。清除脏位元将指示相应的数据块D是干净的,而设置脏位元将指示数据块中的至少一个数据值是脏的,因此需要回写到存储器40。有效位元用于指示存储在相应条目35A中的数据块D是否仍认为是有效的。设置有效位元将指示相应的数据块D有效,而清除有效位元将指示数据块内的至少一个数据值不再有效,因此可以自由地重写。
片上标签RAM 37内的每个条目37A提供存储在片外缓存部分30B中的数据值的子集的地址信息。也就是说,片上标签RAM 37缓存存储在片外数据RAM 35中的一些数据值的地址信息。特别地,每个片上标签TON包含片外标签TOF。片上标签TON还包含地址高字段,其指示该条目与该组内的可能集合中的哪一集合相关。片上标签TON还包含路径字段,其指示片外数据RAM 35中哪个路径存储了针对该地址的数据块。片上标签TON还包含is-clean指示符或索引,其指示存储在数据RAM 35中的相应数据值是否脏。
片上标签RAM 37内的每个片上集合与片外缓存部分30B内的一组片外集合相关联。例如,如果存在关联值4,则非片集合S0可以包含来自片外集合S0、S4、S8、S12等的条目。也就是说,这些片外集合中的每一个分组在一起,并且该组的片外标签存储在片上标签RAM37中的相关集合中。因此,片上标签TON内的地址高字段完全识别存储与数据RAM 35内的该地址相关联的数据值的片外集合组内的集合。假定片上条目组内的条目号不表示将数据块存储在数据RAM 35中的路径(因为来自任何片外集合的任何条目可以存储在片上集合中的任何条目中),那么路径字段指示存储数据块的片外数据RAM 35中的路径。
示例操作
图3是描述由缓存逻辑39执行的、与片上标签RAM 37有关的主要步骤的流程图。在步骤S10,接收数据访问请求。数据访问请求识别要访问的数据的地址和访问请求的类型。
在步骤S20,识别将存储该地址的片上标签RAM 37内的集合;例如,可以识别出片上集合S1将存储该地址,并且片上集合S1包含片外集合组G1的地址。
在步骤S30,将地址的标签部分与存储在该集合的每个条目中的片外标签字段进行比较。在该示例中,将片上集合S1中的四个条目中的每个条目的片外标签字段与访问请求相关联的地址的标签部分进行比较。如果标签部分与该集合中存储的任何条目的任何片外标签字段不匹配,则发生缓存未命中,并且处理进行到步骤S40,其中为该片上集合设置待定标志。在该示例中,片上集合S1的待定位元将设置为指示对该片上集合的待定访问是未完成的。此后,处理进行到步骤S50,其中存储访问请求并且因此保持待定,同时处理进行到步骤S60,其中访问片外缓存部分30B以确定在片外缓存部分30B内是否存在针对该数据访问请求的缓存命中。
如果步骤S30的比较导致缓存命中(意味着访问请求的标签部分与片上标签条目之一中的片外标签字段匹配),则处理进行到步骤S70。
在步骤S70,确定是否已经为已经命中的片上标签RAM 37中的条目设置了所有者字段。如果已设置所有者字段,则这意味着该数据块的独占读取请求待定,这表示数据可能很快就会更改。因此,如果设置了所有者字段,则处理进行到步骤S80,其中确定访问请求是否来自所有者。如果访问请求不是来自由所有者字段指示的所有者,则处理进行到步骤S90,其中为包含命中的条目的片上集合设置待定位元,然后处理进行到步骤S100,其中请求命中数据块无效,以便执行独占读取的数据块的所有者解析该独占读取。处理然后进行到步骤S110,其中延迟访问请求以使所有者能够解析未完成的独占读取。如果在步骤S80确定访问请求来自所有者,则处理进入步骤S120。
在步骤S70,当确定没有为片上标签RAM 37中的命中条目设置所有者字段时,处理进行到S120,其中确定是否已为该片上集合设置了待定位元(这意味着存在对该片上集合的待定数据访问请求,因此通常应该避免进一步的数据访问请求,直到解析该待定数据访问请求以防它是相同的数据块)。如果已经设置了待定位元,则处理进行到步骤S130,其中确定数据访问请求是否来自高优先级所有者。如果数据访问请求不是来自高优先级所有者,则处理进行到步骤S110,其中延迟访问请求。如果数据访问请求来自高优先级所有者,则处理进行到步骤S160。
在步骤S120,如果确定没有为该片上集合设置待定位元,则处理进入步骤S140,其中确定是否要对片外缓存部分30B中的条目执行写入操作,该条目由片上标签RAM 37中的is-clean指示符识别为必须保持干净的条目。如果要对一个标识为必须保持干净的条目执行写入(意味着当前不能进行写入,因为它会使该条目变脏),则处理进行到步骤S40,(通过选择新条目成为必须保持干净的条目)以便可以做出对is-clean指示符的改变以使得能够进行写入。如果访问请求不是对片外缓存部分30B中的条目的写入,该条目由片上标签RAM37中的is-clean指示符识别为必须保持干净的条目(意味着可以使条目变脏),则处理进入步骤S150。
在步骤S150,确定该请求是否取得片外缓存部分30B中的干净条目的所有权,该干净条目由片上标签RAM 37中的is-clean指示符识别为必须保持干净的条目。如果要对被识别为必须保持干净的条目取得所有权,则处理进行到步骤S40,(通过选择一个新条目成为必须保持清洁的条目)以便可以做出对is-clean指示符的改变以使得能够取得所有权。如果没有取得片外缓存部分30B中的条目的所有权,该条目由片上标签RAM 37中的is-clean指示符识别为必须保持干净的条目(意味着可以使条目变脏),则处理进入步骤S160。
在步骤S160,更新状态,处理进入步骤S170。
在步骤S170,确定访问请求是否为读取。如果访问请求不是读取,则处理进行到步骤S180,其中写入数据块至片外数据RAM 35。如果访问请求是读取,则处理进行到步骤S190,其中从片外数据RAM 35读取数据块,并且将读取的数据块返回到处理器20。
图4是描述由缓存逻辑39执行的、与片外缓存部分30B有关的主要步骤的流程图。从图3的步骤S60开始,处理进入图4中的步骤S200。
在步骤S200,识别将存储该地址的片外标签RAM 33A内的集合;例如,可以识别出片外集合S1将存储该地址。
在步骤S210,将地址的标签部分与存储在该集合的每个条目中的标签字段进行比较。在该示例中,将片外集合S1中的四个条目中的每个条目的标记字段与访问请求相关联的地址的标签部分进行比较。如果标签部分与该集合中存储的任何条目的任何标签字段都不匹配,则发生缓存未命中并且处理进行到步骤S220。在步骤S220,识别该集合中最旧的(最近最少使用的)标签,并且在步骤S230,替换该集合片上标签RAM 37中的最旧条目。
此后,处理进行到步骤S240,其中确定是否拥有跟随(基于循环)干净索引当前指向的条目的条目。如果拥有它,则处理进行到步骤S250,其中生成对该条目的无效请求,并且进行到步骤S260,其中延迟访问请求。
如果在步骤S240确定不拥有该条目,则处理进行到步骤S270,其中确定该条目是否是脏的。如果确定条目是脏的,则在步骤S280,将脏数据回写到存储器,并且一旦完成,该条目可以标记为干净,并且处理进行到步骤S290,其中干净索引递增以指向现在的干净条目。处理然后进行到步骤S300,其中确定是否发生该地址的缓存未命中。采取这个额外步骤是因为即使发生了缓存命中,也可以生成有效的缓存未命中。如果发生了缓存未命中,则处理进行到步骤S310,其中替换片上RAM中的最旧标签,如果尚未发生,则与干净索引所指向的片外RAM中的条目一起被替换。在步骤S320,当在片上和片外RAM中更新状态时,修改是固定的。在步骤S330,从存储器读取数据并将其写入适当的片外数据RAM条目。在步骤S340,清除待定位元,并且处理进入步骤S260。
在步骤S210,如果发生缓存命中,则处理进行到步骤S350,其中确定命中条目是否设置了其所有者字段。如果设置了所有者字段,则处理进行到步骤S360,其中确定数据访问请求是否来自该所有者。如果数据访问请求不是来自所有者,则处理进入步骤S250。如果数据访问请求来自所有者,则处理进行到步骤S370。
在步骤S350,确定该请求是否取得片外缓存部分30B中的干净条目的所有权,该干净条目由片上标签RAM 37中的is-clean指示符识别为必须保持干净的条目。如果取得识别为必须保持干净的条目的所有权,则处理进行到步骤S240,以便(通过选择一个新条目成为必须保持干净的条目)可以做出对is-clean指示符的更改,使得能够取得所有权。如果没有取得对片外缓存部分30B中的条目的所有权,该条目由片上标签RAM 37中的is-clean指示符识别为必须保持清洁的条目(意味着可以使条目变脏),则处理进入步骤S380。
在步骤S380,确定是否要对片外缓存部分30B中的干净条目执行写入操作,该干净条目由片上标签RAM 37中的is-clean指示符识别为必须保持干净的条目。如果要对一个标识为必须保持干净的条目执行写入(意味着当前不能进行写入,因为它会使该条目变脏),则处理进行到步骤S270,以便可以做出对is-clean指示符的更改(通过选择一个新条目成为必须保持干净的条目)使得写入能够发生。如果访问请求不是对片外缓存部分30B中的条目的写入,该条目由片上标签RAM 37中的is-clean指示符识别为必须保持清洁的条目(意味着可以使条目变脏),则处理进入步骤S390。
在步骤S390,确定片上RAM 37中最旧的标签(最近最少使用的),并且在步骤S400,更换片上RAM 37中的最旧标签。在步骤S410,更新状态。在步骤S420,为该集合清除待定位元。在步骤S430,确定数据访问请求是与读取还是写入相关。如果确定数据访问是写入,则处理进行到步骤S440,其中写入数据至片外数据RAM 35。如果数据访问请求是读取,则在步骤S450,从片外数据RAM 35读取数据并返回。
图5示出了缓存逻辑39的流水线处理。在第一次迭代中,阶段1接收访问请求的地址、数据和任何元数据。然后,阶段1从片上标签RAM 37读取适当的集合。然后,阶段2接收读取数据。在阶段3,评估检索到的标签是否与提供的地址匹配。在阶段4,确定最旧的条目,并确定所选地址是有效的、脏的、使用的、拥有的还是该集合是否设置了待定位元。然后评估是否发生了命中。如果发生命中,则在阶段5,执行命令,并且在阶段6,准备输出并更新片上标签RAM 37。如果确定发生了未命中,则在阶段5,确定是否可以访问并读取片外标签RAM33。在阶段6,准备输出,设置待定位元,并将地址提供给片外标签RAM 33和FIFO缓冲器。
图6示出了流水线缓存逻辑39的进一步操作。在该第二次迭代中,阶段1接收访问请求的地址、数据和任何元数据。阶段1从片外标签RAM 33接收地址和读取数据。阶段2为空,因为数据已被读取,并且在阶段3,评估所检索的标签是否与提供的地址匹配。在阶段4,确定干净索引指向的条目,并确定所选地址是有效的、脏的、使用的还是拥有的。然后评估是否发生了命中。如果发生命中,则在阶段5,执行命令,并且在阶段6,准备输出并更新片外标签RAM 33并清除待定位元。如果确定发生了未命中,则在阶段5,确定是否可以访问,分配新的并清理下一个。在阶段6,准备输出,设置待定位元,更新片外标签RAM 33并将地址提供给存储器40。
实施例提供了用于大缓存的性能增强器,允许它们使用更大且更便宜的RAM而不会由于停顿而大幅降低命中率。这是通过在片上引入标签的缓存来实现的,该标签能够为大多数请求提供命中,同时仅存储标签总量的子集。为了隐藏延迟,实施例还实现了请求缓冲器,其在丢失时避免缓存停顿。
在实施例中,外部的、大的和较慢的RAM称为片外RAM。内部的、小型的和更快的RAM称为片上RAM。缓存将区分两种类型的命令,可移除或不可移除,这取决于数据是否可以在使用时从片上RAM中移除。片外RAM中的这些组合成组。这些组的大小基于片外RAM/片上RAM的比例。通过在片外集合上使用该比率的模来进行关联。每个组都与片上集合相关联。任何第一次到达缓存的命令都将根据存储在片上RAM中的数据进行评估。第一次评估称为第一次迭代。如果未命中,则将存储命令并读取片外RAM。当收到来自片外RAM的应答时,将恢复命令并对其进行评估。第二次评估称为第二次迭代。在片外RAM中,将使用循环算法来选择必须逐出的路径。在片上RAM中,将使用最近最少使用的算法来选择在所有可移除标签中必须逐出的路径。在片外RAM上,与标签一起,存储索引,该索引是片外标签RAM上的路数的2的对数,并且将称为clean_index。这个干净索引将始终指向该集合上准备被替换的路径。在缓存使用回写方案的情况下,clean_index指向的路径必须保持干净。如果写入请求以这种方式修改,则必须增加clean_index并然后回写下一个路径。在片上RAM中,连同每个标签,将附加字段以识别片上集合所属的片外集合。该字段将称为addr_high。在片上RAM中,连同每个标签,如果该路径对应于干净索引指向的片外路径,则标记将附加到标志。该字段将称为is_clean。在片上RAM中,连同每个标签,还会附加一个标记,以标记该标签是否可移除。该字段将称为可移除的。来自属于组的任何片外集合的任何路径都有资格复制到相关的片上集合。对片外RAM的任何读取或写入将具有可变且非确定性的延迟。但是,执行顺序将是固定的,并且等于请求的顺序。片上RAM将是连续写入,这意味着对片上RAM的任何修改都将写入片外RAM。在片上RAM中,每个集合都有一个待定标志。如果一个集合设置了待定标志,那么该集合的任何命令都将停顿,除非它是对不可移除标签的写入。任何需要修改片外RAM中数据的命令都必须在相应的片上集合中设置待定位元,并在完成修改时清除该位元。如果片上集合中的所有路径都包含正在使用的不可移除的标签,则将发送请求以停止使用。由于大多数请求将在第一次迭代时命中,因此这种设计只需稍微增加大小就可以大幅提高总体性能。即使请求需要第二次迭代,缓存仍将继续提供请求,从而隐藏来自外部RAM的延迟。
简单的实施例假设双路关联缓存,片外有8集合,片上有4集合。在第一示例操作中,读取请求到达缓存的地址4。在第一次迭代时针对集合0评估请求并命中。使用片上存储的标签以及addr_high字段检索数据。在第二示例操作中,读取请求到达缓存的地址4。在第一次迭代时针对集合0评估请求并且未命中。它沿着最旧的路径存储在片上RAM中,从片外RAM请求集合4,并且缓存继续工作。它可能命中:当片外集合到来时,恢复和评估请求,然后在路径1上命中。然后,片外集合4的路径1上的信息与addr_high 1一起存储在片上集合0上最旧的路径上。它可能未命中:当片外集合到来时,恢复和评估请求,缺少第二次迭代。从存储器请求数据,并且为片上集合0设置待定位元。丢失的标签存储在片外集合4中,在clean_index指向的路径上。增加clean_index。如果缓存是回写,则检查增加的clean_index指向的路径的脏位元。如果它是脏的,则必须将其写回。标签与addr_high 1一起也存储在片上集0中,在最旧路径指向的路径上,在第一次迭代时计算。如果缓存是回写,并且设置了增加的clean_index所指向的路径的脏位元,并且该路径是片上RAM,则必须设置其is_clean标志。在第三个示例中,写入请求到达缓存的地址4。在第一次迭代时针对集合0评估请求并命中,但是命中路径具有is_clean标志集合。它被视为未命中,并且触发了第二次迭代。在第二次迭代时将命中请求。数据将写入缓存。clean_index将会增加。如果缓存是回写,则检查增加的clean_index指向的路径的脏位元。如果它是脏的,则必须将其写回。
尽管本文已经参考附图详细公开了本发明的示例性实施例,但是应当理解,本发明不限于精确的实施例,并且本领域技术人员可以在其中实现各种改变和修改而不脱离由所附权利要求及其等同物限定的本发明的范围。

Claims (14)

1.一种n级缓存方法,包括:
响应于识别要访问的数据块的地址的数据访问请求,询问n级缓存的地址缓存,以确定为所述地址而设的所述地址缓存内是否发生缓存命中,所述地址缓存设置为存储为存储在n级缓存的主缓存中的数据块子集而设的地址部分,其中在所述地址缓存和所述主缓存中的每个条目具有指示针对该条目的所有者的所有者指示,并且所述方法包括在所述数据访问请求是独占读取时,设置所述所有者指示。
2.根据权利要求1所述的方法,包括以下项中的至少一个:
当在所述地址缓存内发生缓存命中时,使用来自能够访问所述数据块的所述主缓存内的所述地址缓存的集合和路径来指示访问所述主缓存内的数据块;
当在所述地址缓存内发生缓存未命中时,询问所述主缓存以确定针对所述地址在所述主缓存内是否发生缓存命中;
当在所述主缓存内发生缓存命中时,在所述地址缓存中更新条目,以存储与所述数据访问请求以及能够访问所述数据块的所述主缓存内的集合和路径的指示相关联的地址部分;以及
其中所述地址缓存内的条目分组为条目组,每组条目能够分配给相应的集合组,每组条目中的每个条目能够在该组集合中以任何方式分配给任何条目,以及所述更新包括用所述地址部分以及所述主缓存内的所述集合和所述路径的所述指示来替换与所述数据访问请求相关联的集合的一组条目内的所述地址缓存中的条目。
3.根据权利要求2所述的方法,包括当在所述地址缓存内发生缓存命中时,为包含命中条目的那组条目设置待定位元,直到已解析所述数据访问请求。
4.根据权利要求3所述的方法,包括当为该组设置待定位元时,推迟对组进行的任何访问请求。
5.根据权利要求3或4所述的方法,包括当所述数据访问请求来自高优先级所有者时,忽略所述待定位元。
6.根据权利要求2所述的方法,包括当在所述主缓存内发生缓存未命中时,从存储器获得所述数据块,并且当已获得所述数据块时,替换在与所述数据访问请求相关联的集合的一组条目内的所述主缓存中的条目,所述条目由针对该组条目的干净索引指示,将所述地址部分存储在所述条目内并将所述数据块存储在与所述主缓存中的该条目相关联的位置。
7.根据权利要求6所述的方法,包括将所述干净索引改变为指向所述条目组内的不同条目,并且当所述不同条目标记为脏时,对该条目执行回写。
8.根据权利要求7所述的方法,包括当已完成所述回写时,在所述主缓存中将所述不同的条目标记为干净,并在所述地址缓存中设置与所述条目相关联的is_clean指示,其中所述地址缓存存储了所述数据访问请求的所述地址部分。
9.根据权利要求8所述的方法,包括当在所述地址缓存内发生缓存命中时,所述数据访问请求是写入请求,并且设置与存储所述数据访问请求的所述地址部分的所述地址缓存中的所述条目相关联的所述is_clean指示,报告所述地址缓存内的缓存未命中,改变所述主缓存中的所述干净索引以指向所述条目组内的不同条目,并且当所述不同条目标记为脏时,执行针对该条目的回写。
10.根据权利要求9所述的方法,包括当已完成所述回写时,在所述主缓存中将所述不同条目标记为干净,并在存储条目的地址部分的所述地址缓存中设置与该条目相关联的is_clean指示。
11.根据权利要求10所述的方法,包括在所述主缓存内报告缓存命中,并在存储所述数据访问请求的所述地址部分的所述地址缓存内设置与所述条目相关联的is_clean指示。
12.根据权利要求1所述的方法,包括当所述地址缓存中的一组条目内的每个条目都设置了它们的所有者指示时,选择所述条目之一以待无效。
13.根据权利要求1或12所述的方法,包括当在所述地址缓存内针对设置了所述所有者指示的条目发生缓存命中时,推迟对来自除所述所有者之外的访问请求的所述访问请求。
14.一种n级缓存,包括:
主缓存;
地址缓存,可操作以存储为存储在所述主缓存中的数据块子集而设的地址部分;以及
控制逻辑,响应于识别要访问的数据块的地址的数据访问请求,可操作以询问所述地址缓存以确定针对所述地址在所述地址缓存内是否发生缓存命中,其中在所述地址缓存和所述主缓存中的每个条目具有指示条目所有者的所有者指示,并且所述控制逻辑可操作以在所述数据访问请求是独占读取时,设置所述所有者指示。
CN201780008604.2A 2016-02-03 2017-02-03 缓存和方法 Active CN109074313B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1601942.4A GB2547189A (en) 2016-02-03 2016-02-03 Cache and method
GB1601942.4 2016-02-03
PCT/EP2017/052383 WO2017134224A1 (en) 2016-02-03 2017-02-03 Cache and method

Publications (2)

Publication Number Publication Date
CN109074313A CN109074313A (zh) 2018-12-21
CN109074313B true CN109074313B (zh) 2023-06-09

Family

ID=55590619

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780008604.2A Active CN109074313B (zh) 2016-02-03 2017-02-03 缓存和方法

Country Status (5)

Country Link
US (1) US20190034335A1 (zh)
EP (1) EP3411798B1 (zh)
CN (1) CN109074313B (zh)
GB (1) GB2547189A (zh)
WO (1) WO2017134224A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190057045A1 (en) * 2017-08-16 2019-02-21 Alibaba Group Holding Limited Methods and systems for caching based on service level agreement
US11874774B2 (en) * 2020-09-24 2024-01-16 Advanced Micro Devices, Inc. Mechanism to efficiently rinse memory-side cache of dirty data
US12028094B2 (en) 2020-12-23 2024-07-02 Intel Corporation Application programming interface for fine grained low latency decompression within processor core
US20220197813A1 (en) * 2020-12-23 2022-06-23 Intel Corporation Application programming interface for fine grained low latency decompression within processor core
CN115794673B (zh) * 2023-01-19 2023-05-23 北京象帝先计算技术有限公司 ***级芯片non-Cacheable数据的访问方法、装置及电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6981106B1 (en) * 2002-11-26 2005-12-27 Unisys Corporation System and method for accelerating ownership within a directory-based memory system
CN102880558A (zh) * 2011-06-09 2013-01-16 苹果公司 用于高速缓存块一致性的***、方法和设备

Family Cites Families (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4755930A (en) * 1985-06-27 1988-07-05 Encore Computer Corporation Hierarchical cache memory system and method
US5157774A (en) * 1987-09-28 1992-10-20 Compaq Computer Corporation System for fast selection of non-cacheable address ranges using programmed array logic
JPH01154261A (ja) * 1987-12-11 1989-06-16 Toshiba Corp 情報処理装置
GB9008145D0 (en) * 1989-05-31 1990-06-06 Ibm Microcomputer system employing address offset mechanism to increase the supported cache memory capacity
US5307477A (en) * 1989-12-01 1994-04-26 Mips Computer Systems, Inc. Two-level cache memory system
US5303362A (en) * 1991-03-20 1994-04-12 Digital Equipment Corporation Coupled memory multiprocessor computer system including cache coherency management protocols
JP2839060B2 (ja) * 1992-03-02 1998-12-16 インターナショナル・ビジネス・マシーンズ・コーポレイション データ処理システムおよびデータ処理方法
US5418922A (en) * 1992-04-30 1995-05-23 International Business Machines Corporation History table for set prediction for accessing a set associative cache
US5623628A (en) * 1994-03-02 1997-04-22 Intel Corporation Computer system and method for maintaining memory consistency in a pipelined, non-blocking caching bus request queue
US5835951A (en) * 1994-10-18 1998-11-10 National Semiconductor Branch processing unit with target cache read prioritization protocol for handling multiple hits
US5706491A (en) * 1994-10-18 1998-01-06 Cyrix Corporation Branch processing unit with a return stack including repair using pointers from different pipe stages
US5740416A (en) * 1994-10-18 1998-04-14 Cyrix Corporation Branch processing unit with a far target cache accessed by indirection from the target cache
US5732253A (en) * 1994-10-18 1998-03-24 Cyrix Corporation Branch processing unit with target cache storing history for predicted taken branches and history cache storing history for predicted not-taken branches
JPH08263370A (ja) * 1995-03-27 1996-10-11 Toshiba Microelectron Corp キャッシュメモリシステム
US5729712A (en) * 1996-01-26 1998-03-17 Unisys Corporation Smart fill system for multiple cache network
US6138209A (en) * 1997-09-05 2000-10-24 International Business Machines Corporation Data processing system and multi-way set associative cache utilizing class predict data structure and method thereof
US6427191B1 (en) * 1998-12-31 2002-07-30 Intel Corporation High performance fully dual-ported, pipelined cache design
US6442664B1 (en) * 1999-06-01 2002-08-27 International Business Machines Corporation Computer memory address translation system
US6374332B1 (en) * 1999-09-30 2002-04-16 Unisys Corporation Cache control system for performing multiple outstanding ownership requests
US6457101B1 (en) * 1999-12-20 2002-09-24 Unisys Corporation System and method for providing the speculative return of cached data within a hierarchical memory system
US6477620B1 (en) * 1999-12-20 2002-11-05 Unisys Corporation Cache-level return data by-pass system for a hierarchical memory
US6651142B1 (en) * 2000-05-05 2003-11-18 Sagent Technology Method and apparatus for processing data using multi-tier caching
US6751710B2 (en) * 2000-06-10 2004-06-15 Hewlett-Packard Development Company, L.P. Scalable multiprocessor system and cache coherence method
US6640287B2 (en) * 2000-06-10 2003-10-28 Hewlett-Packard Development Company, L.P. Scalable multiprocessor system and cache coherence method incorporating invalid-to-dirty requests
US6745291B1 (en) * 2000-08-08 2004-06-01 Unisys Corporation High speed LRU line replacement system for cache memories
KR100395756B1 (ko) * 2001-06-16 2003-08-21 삼성전자주식회사 캐쉬 메모리 및 이를 이용하는 마이크로 프로세서
JP4274710B2 (ja) * 2001-06-28 2009-06-10 株式会社日立製作所 通信中継装置
TW591526B (en) * 2002-04-09 2004-06-11 Via Tech Inc Data maintenance method of DSM system
US6915386B2 (en) * 2002-06-05 2005-07-05 Internation Business Machines Corporation Processing service level agreement (SLA) terms in a caching component of a storage system
JP3900025B2 (ja) * 2002-06-24 2007-04-04 日本電気株式会社 共有キャッシュメモリのヒット判定制御方法及び共有キャッシュメモリのヒット判定制御方式
US7117290B2 (en) * 2003-09-03 2006-10-03 Advanced Micro Devices, Inc. MicroTLB and micro tag for reducing power in a processor
US20050050278A1 (en) * 2003-09-03 2005-03-03 Advanced Micro Devices, Inc. Low power way-predicted cache
CN100517273C (zh) * 2003-12-22 2009-07-22 松下电器产业株式会社 高速缓冲存储器及其控制方法
JP4036206B2 (ja) * 2004-03-31 2008-01-23 日本電気株式会社 セットアソシアティブキャッシュシステム及びキャッシュメモリの制御方法
JPWO2006038258A1 (ja) * 2004-09-30 2008-05-15 株式会社ルネサステクノロジ データプロセッサ
US20060155934A1 (en) * 2005-01-11 2006-07-13 Ramakrishnan Rajamony System and method for reducing unnecessary cache operations
US20070083715A1 (en) * 2005-09-13 2007-04-12 International Business Machines Corporation Early return indication for return data prior to receiving all responses in shared memory architecture
US7536514B2 (en) * 2005-09-13 2009-05-19 International Business Machines Corporation Early return indication for read exclusive requests in shared memory architecture
US8631206B1 (en) * 2007-09-21 2014-01-14 Marvell International Ltd. Way-selecting translation lookaside buffer
JP2010033480A (ja) * 2008-07-31 2010-02-12 Sony Corp キャッシュメモリおよびキャッシュメモリ制御装置
US20120159080A1 (en) * 2010-12-15 2012-06-21 Advanced Micro Devices, Inc. Neighbor cache directory
WO2013148872A1 (en) * 2012-03-28 2013-10-03 Huawei Technologies Co., Ltd. Concurrently accessed set associative overflow cache
US9684601B2 (en) * 2012-05-10 2017-06-20 Arm Limited Data processing apparatus having cache and translation lookaside buffer
GB2503437A (en) * 2012-06-26 2014-01-01 Ibm Fetching cache lines into a plurality of caches with different states
US9311239B2 (en) * 2013-03-14 2016-04-12 Intel Corporation Power efficient level one data cache access with pre-validated tags
US9430386B2 (en) * 2013-03-15 2016-08-30 Bitmicro Networks, Inc. Multi-leveled cache management in a hybrid storage system
US20140289468A1 (en) * 2013-03-25 2014-09-25 International Business Machines Corporation Lightweight primary cache replacement scheme using associated cache
US9891916B2 (en) * 2014-10-20 2018-02-13 Via Technologies, Inc. Dynamically updating hardware prefetch trait to exclusive or shared in multi-memory access agent system
US9600360B2 (en) * 2014-11-21 2017-03-21 International Business Machines Corporation Dynamic partial blocking of a cache ECC bypass
US20170168957A1 (en) * 2015-12-10 2017-06-15 Ati Technologies Ulc Aware Cache Replacement Policy

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6981106B1 (en) * 2002-11-26 2005-12-27 Unisys Corporation System and method for accelerating ownership within a directory-based memory system
CN102880558A (zh) * 2011-06-09 2013-01-16 苹果公司 用于高速缓存块一致性的***、方法和设备

Also Published As

Publication number Publication date
EP3411798A1 (en) 2018-12-12
WO2017134224A1 (en) 2017-08-10
CN109074313A (zh) 2018-12-21
GB201601942D0 (en) 2016-03-16
US20190034335A1 (en) 2019-01-31
GB2547189A (en) 2017-08-16
EP3411798B1 (en) 2019-12-04

Similar Documents

Publication Publication Date Title
CN109074313B (zh) 缓存和方法
US7284096B2 (en) Systems and methods for data caching
US10019369B2 (en) Apparatuses and methods for pre-fetching and write-back for a segmented cache memory
CN111344684B (zh) 多层缓存安置机制
US5353426A (en) Cache miss buffer adapted to satisfy read requests to portions of a cache fill in progress without waiting for the cache fill to complete
US8909871B2 (en) Data processing system and method for reducing cache pollution by write stream memory access patterns
US9311246B2 (en) Cache memory system
US7844778B2 (en) Intelligent cache replacement mechanism with varying and adaptive temporal residency requirements
US9792221B2 (en) System and method for improving performance of read/write operations from a persistent memory device
US8131945B2 (en) Disowning cache entries on aging out of the entry
US20160140042A1 (en) Instruction cache translation management
US8621152B1 (en) Transparent level 2 cache that uses independent tag and valid random access memory arrays for cache access
CN112840331A (zh) 分层缓存***中的预取管理
US20080301372A1 (en) Memory access control apparatus and memory access control method
JP2007156821A (ja) キャッシュシステム及び共用2次キャッシュ
CN115617709A (zh) 缓存管理方法及装置、缓存装置、电子装置和介质
JP4009304B2 (ja) キャッシュメモリおよびキャッシュメモリ制御方法
EP0741356A1 (en) Cache architecture and method of operation
CN112840330A (zh) 指令高速缓存中的预取终止和恢复
KR101976320B1 (ko) 라스트 레벨 캐시 메모리 및 이의 데이터 관리 방법
US7143239B2 (en) Cache structure and methodology
CN117331854B (zh) 缓存处理方法、装置、电子设备及介质
CN117331853B (zh) 缓存处理方法、装置、电子设备及介质
US20120102271A1 (en) Cache memory system and cache memory control method
JPH0289145A (ja) キャッシュメモリ

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