CN109983536B - 响应标签匹配命令的存储电路 - Google Patents
响应标签匹配命令的存储电路 Download PDFInfo
- Publication number
- CN109983536B CN109983536B CN201780072335.6A CN201780072335A CN109983536B CN 109983536 B CN109983536 B CN 109983536B CN 201780072335 A CN201780072335 A CN 201780072335A CN 109983536 B CN109983536 B CN 109983536B
- Authority
- CN
- China
- Prior art keywords
- tag
- entry
- entries
- memory
- subset
- 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
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
-
- 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/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- 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/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
-
- 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/02—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
- G11C11/16—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect
- G11C11/165—Auxiliary circuits
- G11C11/1673—Reading or sensing circuits or methods
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/02—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
- G11C11/16—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect
- G11C11/165—Auxiliary circuits
- G11C11/1675—Writing or programming circuits or methods
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/406—Management or control of the refreshing or charge-regeneration cycles
- G11C11/40622—Partial refresh of memory arrays
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/4063—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
- G11C11/407—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
- G11C11/408—Address circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/4063—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
- G11C11/407—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
- G11C11/409—Read-write [R-W] circuits
- G11C11/4093—Input/output [I/O] data interface arrangements, e.g. data buffers
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/4063—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
- G11C11/407—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
- G11C11/409—Read-write [R-W] circuits
- G11C11/4096—Input/output [I/O] data management or control circuits, e.g. reading or writing circuits, I/O drivers or bit-line switches
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1051—Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
- G11C7/106—Data output latches
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1051—Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
- G11C7/1063—Control signal output circuits, e.g. status or busy flags, feedback command signals
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1051—Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
- G11C7/1066—Output synchronization
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/06—Address interface arrangements, e.g. address buffers
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/08—Word line control circuits, e.g. drivers, boosters, pull-up circuits, pull-down circuits, precharging circuits, for word lines
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/16—Multiple access memory array, e.g. addressing one storage element via at least two independent addressing line groups
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
存储电路64包括以行和列进行排列的存储位置34的阵列32、行缓冲器36、和比较电路70,行缓冲器36包括多个条目68,每个条目68用于存储来自阵列32的活动行46的相应列处的存储位置的信息,并且比较电路70响应于指定标签值72的标签匹配命令,将标签值与存储在行缓冲器36的两个或更多个条目68的子集的每个条目中的信息进行比较。比较电路70识别条目子集中的哪个条目(如果存在的话)是存储有与标签值相匹配的信息的匹配条目。这允许诸如DRAM的存储技术更有效地用作组相联缓存。
Description
技术领域
本技术涉及存储电路领域。
背景技术
有多种技术可用于实现数据处理系统的存储电路,包括例如SRAM(静态随机存取存储器)、DRAM(动态随机存取存储器)、PRAM(相变随机存取存储器)、MRAM(磁阻随机存取存储器)。某些类型的存储技术,例如DRAM,提供按行和列进行组织的存储位置阵列,并且对于给定存储位置的访问,需要激活阵列的特定行并将来自该行中每个位置的数据传送至行缓冲器。一旦激活了行,就可以通过读取或更新行缓冲器的内容来执行对行中不同位置的多次读取/写入。对行缓冲器的任何更新都可以传播到阵列中的相应存储位置,并且当不再需要该行时,可以使用预充电命令(precharge command)关闭该行。
发明内容
至少一些示例提供存储电路,包括:存储位置的阵列,该存储位置以行和列进行排列;行缓冲器,该行缓冲器包括多个条目,每个条目用于存储来自阵列的活动行的相应列处的存储位置的信息;以及比较电路,该比较电路响应于指定标签值的标签匹配命令,将标签值与存储在行缓冲器的条目子集中的每个条目中的信息进行比较,并且识别所述条目子集中的哪个条目(如果存在的话)是存储有与标签值相匹配的信息的匹配条目,所述子集包括行缓冲器的两个或更多个条目。
至少一些示例提供一种装置,包括:上述存储电路;和缓存控制器,缓存控制器用于控制对存储电路中存储的缓存数据的访问。
至少一些示例提供存储电路,包括:用于存储信息的装置的阵列,该用于存储信息的装置按行和列进行排列;用于缓冲来自阵列的活动行的信息的装置,用于缓冲的装置包括多个条目,每个条目用于存储来自阵列的活动行的相应列处的用于存储的装置的信息;以及用于比较的装置,该用于比较的装置响应于指定标签值的标签匹配命令,将标签值与存储在用于缓冲的装置的条目子集中的每个条目中的信息进行比较,并且识别所述条目子集中的哪个条目(如果存在的话)是存储有与标签值相匹配的信息的匹配条目,所述子集包括用于缓冲的装置的两个或更多个条目。
至少一些示例提供一种用于从存储电路访问信息的方法,存储电路包括按行和列进行排列的存储位置的阵列;该方法包括:将信息从阵列的活动行中的存储位置传送至行缓冲器,该行缓冲器包括多个条目,每个条目存储来自活动行的相应列处的存储位置的信息;以及响应于指定标签值的标签匹配命令,将标签值与存储在行缓冲器的条目子集中的每个条目中的信息进行比较,并且识别所述条目子集中的哪个条目(如果存在的话)是存储有与标签值相匹配的信息的匹配条目,所述子集包括行缓冲器的两个或更多个条目。
附图说明
本发明的其他方面、特征和优点将从以下结合附图阅读的示例的描述中变得显而易见,其中:
图1示意性地示出了用于组相联缓存(set-associative cache)的标签查找操作的逻辑功能的示例;
图2示意性地示出了基于DRAM的存储阵列的示例;
图3和图4示出了用于缓存控制器在使用DRAM实现的缓存中定位目标数据的两种可选方法;
图5示出了其中DRAM存储数据及其相关联的标签信息的示例,其中DRAM支持标签匹配(tag-matching)命令;
图6示出了包括比较电路的存储电路的示例,该比较电路用于将标签值与行缓冲器的条目子集进行比较;
图7示出了在一行存储单元中对标签和数据进行排列的不同示例;
图8示出了包括多个存储单元的存储体的数据存储电路的示例;
图9示出了其中标签数据(tag-data)对在不同存储体之间分割的示例;
图10是示出处理激活命令的方法的流程图;
图11是示出处理标签匹配命令的方法的流程图;
图12示出了错误检测码的使用;
图13是示出处理写入先前命中(write-to-previous-hit)命令的方法的流程图;以及
图14是示出处理标签-收集命令的方法的流程图。
具体实施方式
存储电路可以具有行缓冲器,以在读取或写入该行期间临时存储来自存储位置的活动行的信息。行缓冲器包括多个条目(entry),每个条目用于存储来自活动行的相应列处的存储位置的信息。存储电路可以配置有比较电路,该比较电路响应于指定标签值的标签匹配命令,将该标签值与存储在行缓冲器的条目子集中的每个条目中的信息进行比较(该子集包括至少两个条目),并且识别所述条目子集中的哪个条目(如果存在的话)是存储有与该标签值相匹配的信息的匹配条目。这允许更快地实施标签查找操作,因为可以在行缓冲器中直接对多个标签进行比较,而不是要求将每个条目单独地读出到外部电路以与该标签值进行比较。这意味着存储电路可以更有效地用作组相联缓存,因为一组位置可以响应于单个标签匹配命令而查找其标签,而不需要许多单独的读取操作。这很有用,因为对于给定数量的存储容量,使用行缓冲器的存储技术可以比替代存储技术更具面积效率,因此使得更有效地使用这种类型的存储电路作为组相联缓存可以实现将更大的缓存以较低的制造成本进行生产。
比较电路可以并行实施多个比较,每个比较将标签值与行缓冲器的所述条目子集中的相应一个条目中的信息进行比较。因此,与单独地顺序读取每个标签以与目标标签值进行比较相比,多个条目的标签查找可以更快。
在一些情况下,比较电路可以将与标签匹配命令相关联的标签值与行缓冲器的条目子集中的每个条目的全部内容进行比较。当存储电路用作缓存时,存储位置可以成对分配,其中每对包括用于存储缓存数据值的一个位置和用于存储相应标签值的另一存储位置,因此行缓冲器的条目子集可以是存储标签值而不是数据值的那些条目。通常,标签值可以标识该对的另一位置中的数据值的地址的一部分。然而,标签值还可以识别用于控制数据的缓存的其他控制信息,例如,指示相应数据值是干净还是脏的一致性状态信息、或用于控制从缓存中驱逐数据的驱逐控制信息(例如,最近最少使用(LRU)计数或用于跟踪存储数据的最近访问模式的其他信息)。因此,在一些实施例中,比较电路可以将由标签匹配命令指定的标签值与仅存储在行缓冲器的条目子集的每个条目中的信息的一部分进行比较。
可以提供配置存储元件以存储配置信息,该配置信息使用比较电路识别行缓冲器的哪些条目在待比较的条目子集内。这使得存储电路的物理存储容量能够被分配在不同的配置中,用于当存储电路被用作缓存时存储标签值和数据值,因为比较电路可以从配置存储元件确定行缓存器中的哪些条目旨在存储标签值而不是数据值。例如,配置信息可以指定控制信息,例如缓存使用的期望的相关性、缓存行大小、或标签大小,其中条目子集可以由比较电路确定。或者,配置信息可以明确地识别将行缓冲器的哪些条目与标签值进行比较(例如,使用位图,其中每一位标识相应的条目是否应被视为条目子集的一部分)。
当响应于标签匹配命令将所述条目子集的一个条目标识为匹配条目时(“命中条件”),可以触发读取或写入操作,用于读取或写入与根据行缓冲器的哪个条目是匹配条目而选择的目标存储位置相对应的信息。例如,目标存储位置可以是配对存储位置,该配对存储位置存储与标签值相关联的数据值,该标签值存储在其中检测到命中的存储位置中。对于读取操作,可以返回从目标存储位置读取的信息作为对标签匹配命令的响应。
在一些情况下,目标存储位置可以是阵列的与行缓冲器的所述匹配条目相对应的存储位置相同的行中的另一存储位置。利用这种方法,每个标签-数据对可以分配在存储电路的相同行中,这可以使得读取操作的控制不那么复杂。
或者,目标存储位置可以位于与其中检测到匹配的存储位置不同的行中。虽然可以提供包括存储位置的单个存储体(bank)的存储电路,但是在许多情况下可以提供存储位置的两个或多个存储体,每个存储体包括如上所述的按行和列进行排列的存储位置的阵列、行缓冲器和比较电路。实际上,在从一个存储体中的活动行进行读取之后,从不同存储体读取信息通常可以比在第一个存储体的相同行中执行另一读取更快。因此,在多存储体实施例中,为了提高性能,当将数据-标签对分配给存储电路时,将数据值写入一个存储体中的存储位置,并将相应的标签值写入不同存储体中的存储位置可能是有用的。因此,在处理标签-匹配命令时,当识别命中条件时,触发读取操作的目标存储位置可以与对应于行缓冲器的匹配条目的存储位置位于不同的存储体中。
在一些示例中,当识别命中条件时,比较电路可以将行缓冲器的哪个条目是所述匹配条目的指示存储到预定存储元件。存储电路可以具有支持写入先前命中命令的控制电路,其触发写入操作以将信息写入与行缓冲器中由所述预定存储元件标识的条目相关联的存储位置。通常在从缓存读取数据值之后,可能期望对相应标签值的一部分进行更新(例如,更新上述的一致性状态信息或驱逐控制信息)。因此,通过在预定存储元件中记录匹配条目,可以在没有缓存控制器或其他外部控制器需要知道标签的确切位置或重复标签查找操作的情况下,实施后续标签写入。
或者,可以响应于标签匹配命令本身来实施状态信息(例如,一致性状态信息或缓存替换策略信息)的更新。因此,当存在命中条件并且响应于标签匹配命令识别出匹配条目时,控制电路可以更新基于行缓冲器的哪个条目是匹配条目而选择的存储位置中的状态信息。通常,所选存储位置可以是存储阵列中与匹配条目本身对应的位置,但是所选存储位置也可以对应于相同活动行的另一条目。通过在响应于标签匹配命令的缓存命中时更新缓存状态信息,这避免了需要从缓存控制器向存储电路提供单独的写入命令以更新状态信息。
响应于标签匹配命令,如果行缓冲器的条目子集中没有一个条目存储有与标签值匹配的信息(“未命中条件”),则比较电路可以返回未命中指示。该未命中指示可以输出到缓存控制器以指示所需数据当前未存储在缓存中。在一些情况下,未命中指示可以是指示是否存在命中或未命中的显式信号。然而,这可能需要提供额外的输出引脚以将命中/未命中信号传送至其他电路。
然而,在某些情况下,可以通过使用错误检测码来保护存储在存储电路中的数据免于错误。某些类型的错误检测码可能仅允许对错误(例如,由粒子撞击或其他单个事件扰乱而引起的位翻转)进行检测,但不能进行校正。例如,奇偶校验码或校验和可以用于识别何时发生位翻转,但不识别哪个位是错误位。或者,错误检测码可以是纠错码,该纠错码还允许通过提供可用于识别正确数据值的一些冗余信息来纠正错误。例如,纠错码可以是卷积码或块码。错误检测码可以是与相应数据值分开的值,或者可选地,可以对数据进行编码以提供单个数据值,从该数据值可以确定原始数据值和标识是否存在错误的信息。
在使用错误检测码的示例中,当响应于标签匹配命令识别出未命中时,未命中指示可以包括与无效错误检测码相关联的预定模式的信息。虽然无效错误检测码通常会指示相应数据中出现错误,但是可以配置缓存控制器或接收未命中指示的其他电路,使得当数据具有预定模式时,无效错误检测码被解释为不指示错误,而是指示标签查找识别出未命中。这允许使用用于读取操作的数据信道来发送未命中条件,以避免需要提供额外的引脚以传送单独的命中/未命中信号。
存储电路的控制电路还可以响应于受害者读取命令,从行缓冲器中根据存储在行缓冲器中的缓存替换策略信息而选择的受害者条目中读取数据,并且使来自与所述受害者条目相关联的存储位置的数据无效。在缓存未命中时,如果在相关组中没有无效位置,则可能需要找到一个受害者块以驱逐数据并且将其替换为将从存储器中提取的新数据。识别选择哪个条目作为受害者条目可能需要从相关组中读取缓存替换策略信息(例如,指示哪个条目为最近最少使用的信息)。替代将替换策略信息读出到缓存控制器,并且然后缓存控制器确定选择哪个条目作为受害者条目并发出后续读取,控制电路可以支持在存储电路本身中本地(locally)分析替换策略信息。例如,如果替换策略是伪最近最少使用的,则受害者读取命令可以控制存储电路内的控制电路来遍历二叉树以找到最近最少使用的元素,返回块的数据以便可以将其写回到存储器,并使该块无效。这可以节省至少一个命令,因为替换策略信息的读取(和处理)以及受害者数据的读取都可以响应于一个命令而在存储电路内完成。
在从受害者存储位置逐出后,可以向存储电路发出后续写入命令,以将从存储器取出的数据写入到受害者存储位置。为了加速对该写入的处理,响应于受害者读取命令,控制电路可以将对行缓冲器的哪个条目是受害者条目的指示存储到预定存储元件。然后可以使用如上所述的写入先前命中命令将替换数据写入与由预定存储元件标识的条目相关联的存储位置。这避免了在将替换数据写入受害者条目时再次检查替换策略信息的需要。
还可以实现标签收集(tag-gather)命令,以触发控制电路来执行读取操作以便从行缓冲器的所述条目子集中的每个条目中读取信息。因此,响应于标签收集命令,与如果需要单独的读取操作以顺序地读取每个标签相比较,可以更快地收集和返回来自活动行的标签信息。这对于例如允许缓存控制器在将新数据分配给缓存时做出更好的替换决定是有用的。由于存储电路和缓存控制器之间的数据通道可能不像活动行中的所有标签信息的总大小那样宽,因此可以响应于标签收集命令顺序地执行多个数据传输,以便将块(chunk)中的标签信息传输至缓存控制器。
上面讨论的技术可以用于基于使用行缓冲器的任何存储技术的存储电路。但是,其对于基于DRAM的存储电路尤其有用。DRAM是一种相对面积有效的存储技术,但通常相对来说访问较慢,使得其难以有效地用作组相联缓存。因此,DRAM在传统上用于主存储器而不用于缓存。通过提供上述比较电路,DRAM对于用于缓存变得更具吸引力,使得与诸如SRAM的替代方案相比,能够以更少的电路面积实现更大的缓存,并因此降低制造成本。
一种装置(例如,数据处理系统)可以包括上述存储电路和缓存控制器,用于控制对存储在存储电路中的缓存数据的访问。响应于指定目标地址的缓存访问请求,缓存控制器和存储电路之一可以发出标签匹配命令,该标签匹配命令指定根据所述目标地址确定的标签值。在一些情况下,标签匹配命令的生成可以在缓存控制器处发生,并且缓存控制器然后可以将行地址和标签值发送至存储电路,其可以将标签值与行缓冲器的条目子集进行比较,触发对匹配条目的读取/写入,并且然后返回所需的数据或未命中指示,该未命中指示用于读取确认信号或用于针对写入的写入确认信号。或者,缓存控制器可以向存储电路发出存储地址,然后存储电路可以在内部对行地址和标签值进行解码,并且然后以与上面讨论的类似方式处理标签匹配命令。当响应于标签匹配命令识别出命中时,存储电路可以向缓存控制器输出以下各项中的至少一项:与除了与匹配条目相关联的存储位置之外的目标存储位置相对应的数据值、以及用于识别存储电路的哪个存储位置是目标存储位置的信息。实际上,如果存储电路本身输出数据值,则性能可以更快,从而除了标签匹配命令之外不需要后续的读取命令。
图1示出了组相联缓存2的标签查找操作的逻辑功能。缓存2具有多个缓存条目4,每个缓存条目4包括标签数据对,每个标签数据对包括数据值6和标签值8,标签值8指定与数据值相对应的存储地址的一部分,并且标签值8可选地指定其他信息,例如一致性状态信息或驱逐控制信息。缓存条目4在组10中为逻辑组织,每个组10包括一定数量的缓存条目(例如,图1示出了4路组相联缓存2,因此每个组10包括四个缓存条目4)。在每个组内的相应位置处的位置群组被称为“路”12,例如,路0包括每个组10的第一缓存条目4,路1包括每个组10的第二缓存条目4等。
当实施读取/写入操作时,提供所需的存储地址14,目标地址的索引部分16(或索引部分16的散列)用于选择访问哪个组10,将标签地址14的标签部分18与索引组10的每个条目4中的标签值8进行比较。针对包含匹配标签的路12确定命中信号,并且可以在索引组10的匹配路12中从缓存条目4中读出相应的数据值6。目标地址的偏移部分20可以识别返回的数据值6内的所需数据的位置。
虽然图1示出了组相联缓存所需的逻辑功能,但在物理硬件实施方式中,其可以通过不同方式实现,这取决于用于缓存的存储技术。将SRAM用于缓存是相对常见的,因为与诸如DRAM的替代方案相比,SRAM可以快速访问。然而,越来越需要相对大的缓存,并且SRAM可以相对电路面积密集,使得利用SRAM构建更大的缓存变得昂贵。
DRAM可以提供更便宜的技术用于更大的存储结构。图2示出了基于DRAM的存储电路30的示例。存储电路30包括以行和列布置的存储位置34的阵列32、行缓冲器36、列复用器38和行解码器40。对于DRAM,每个存储位置34包括一组位单元,每个位单元包括一个电容器,该电容器可以被选择性地充电或放电以表示与由相应存储位置34表示的总值的一个位相对应的1或0。对DRAM 30的访问分两个阶段执行。首先,发出指定行地址42的激活命令。行解码器40激活相应的行46,以将存储在相应行的每个存储位置34中的信息带入行缓冲器36中。其次,列地址44伴随实际的读取/写入命令,其控制列复用器38来选择行缓冲器36中与活动行内的指定列相对应的条目,并输出从该条目读取的信息作为读取数据,或基于写入命令提供的写入数据来更新该条目中的数据。对于写入,由于形成行缓冲器36的读出放大器和相应的DRAM存储位置34之间的连接可以保持打开,因此对行缓冲器36的写入也可以传播回相应的存储位置34。在使用预充电命令关闭行之前,可以在同一活动行内实施多个读取/写入操作,该预充电命令对行缓冲器36和活动行46之间的连接进行关闭,确保活动行46的存储位置已被更新以反映对行缓冲器36的任何写入,并且重置行缓冲器36准备用于将另一行选为活动行。
DRAM 30通常用作处理系统中的主存储器,因为它可以以低成本提供相对大的存储容量,并且对于主存储器,DRAM 30的相对慢的访问延迟不是问题,因为主存储器旨在用于批量备份存储而不是存储数据以便快速访问。
然而,越来越需要比构建SRAM更经济、更大的缓存存储。对于节省成本,DRAM具有吸引力,但是使用DRAM作为缓存存在一些性能问题。特别是,对于在缓存中提供性能和面积效率之间的适当平衡,如图1所示,通常需要将缓存实现为组相联缓存。但是,使用基于DRAM的存储技术来实现组相联缓存的标签查找可能很难。图3和图4示出了其中DRAM可用于实现组相联缓存的两种替代方式。
如图3所示,一种方法是将来自每个标签数据对的数据值存储在DRAM 30中,但是将标签值存储在单独的基于SRAM的存储结构50中。因此,在访问缓存以获取给定地址的数据时,缓存控制器52将该地址的标签部分输出至SRAM标签存储器50,SRAM标签存储器50将标签值与相应组的存储标签进行比较,识别是否存在命中或未命中,并且在命中时将列地址提供至DRAM 30,用于识别与匹配标签相对应的目标DRAM位置。同时,目标DRAM位置的行地址由缓存控制器52提供。因此,DRAM 30可以使用行地址和列地址来识别所需的存储位置并返回所需的数据。对于写入,可以实施SRAM标签存储器50的类似查找,但是这次,由缓存控制器52提供的写入数据被写入由行地址和列地址标识的存储位置。这种方法的问题在于,用于标签存储器50的SRAM在电路面积方面是昂贵的,这在缓存容量变大时尤其成为问题。
图4示出了其中每个标签数据对的数据和标签都存储在DRAM 30本身中的可选方法,避免了对附加的基于SRAM的标签存储的需要,从而减少了电路面积。但是,使用这种方法,标签查找需要缓存控制器来选择正在查找的组的特定方式,发出读取操作,指定存储该路的标签值的DRAM存储位置的行地址和列地址,读出标签值,并将读取的标签与目标地址的标签部分进行比较,以确定是否存在命中或未命中。如果存在命中,则后续读取访问可以指定匹配标签的相应数据值的行地址/列地址,并且然后返回数据。如果存在未命中,则必须发出另一读取访问以访问索引组的下一标签,此时对于下一个标签重复与第一个标签比较相同的过程,依此类推,直到识别出匹配的标签为止或者索引组中的所有标签被标识为未命中。可以提供路预测54以跟踪先前访问的路并增加第一次选择正确路的可能性。然而,路预测硬件54导致面积和功耗成本,并且即使路预测是相对准确的,仍然有很多时候需要连续执行多个顺序标签读取访问,随后是后续数据读取访问,这也是先前标签查找的顺序。因此,至少每个缓存访问需要至少两个命令连续执行(一个标签读取和一个读取/写入命令),但是如果读取的第一个标签与目标地址的标签不匹配,则有时可能需要三个或更多个命令。因此,这种方法在性能方面较差。
图5示出了用于解决这些问题的包括缓存控制器62和DRAM存储电路64的数据处理装置60。如图4所示,数据和相关标签都存储在DRAM 64中,因此不需要如图3所示的单独的基于SRAM的标签存储器50,从而节省了电路面积。然而,DRAM 64支持标签匹配命令,该标签匹配命令使得能够响应于由缓存控制器62发出的单个命令在DRAM 64中并行地比较多个标签,从而提高性能。对于读取操作,缓存控制器62发出标签匹配读取命令,并向DRAM 64提供行地址和标签值,所述行地址标识所需的DRAM行位置,所述标签值要与存储在该DRAM行位置中的标签进行比较。行地址和标签值都可以由缓存控制器62根据要访问的数据的目标存储地址生成。响应于标签匹配读取命令,DRAM 64将标签值与存储在由行地址标识的行中的每个标签值进行比较,在命中的情况下返回对应于匹配标签的数据值,以及在未命中的情况下返回未命中指示。对于写入操作,缓存控制器62发出行地址、标签值和写入数据,并且DRAM 64再次将标签值与存储在相应行中的每个标签值进行比较,在命中的情况下将数据值写入与匹配标签对应的位置,在未命中的情况下将数据值及其相应的标签分配给新的存储位置,并向缓存控制器62返回写入确认。这种方法在性能和电路面积之间提供了更好的平衡,并且特别适用于其中SRAM不具成本效益的较大缓存。
图6更详细地示出了图5的DRAM 64。如图2所示,DRAM 64包括存储位置34的阵列32、行缓冲器36、列复用器38和行解码器40。行缓冲器36包括多个条目68,每个条目68对应于存储阵列32的一列。支持非标签匹配的读和写命令、激活命令和预充电命令的方式与图2所述的相同。当接收到激活命令时,将存储在由行地址42标识的行的每个存储位置34中的信息传送至行缓冲器36,其中利用来自位于激活的行46的相应列处的存储位置34的信息对每个条目68进行更新。如图6所示,活动行46中的一些位置可以存储标签值(T),而其他位置存储数据值(D),因此行缓冲器68包括标签和数据的混合。
DRAM 64具有比较电路70,比较电路70用于基于标签匹配命令将行缓冲器36的条目68的内容与由缓存控制器62提供的标签值72进行比较。标签匹配命令可以是标签匹配读取命令或标签匹配写入命令,标签匹配读取命令触发标签查找和相关联的读取,标签匹配写入命令触发标签查找和相关联的写入。提供控制电路74以接收由缓存控制器62提供的命令并激活DRAM单元64的硬件中的适当控制路径,以控制行解码器40、列复用器38和比较器70来实施所需的操作。
因此,当接收到标签匹配命令时,控制电路74控制比较器70以将接收的标签值72与存储在行缓冲器的条目68的子集中的标签进行比较。接收的标签72和存储在行缓冲器36中的标签之间的比较是并行执行的,因此性能比图4中介绍的情况更快,在图4中标签按照顺序进行比较。如果行缓冲器36中的任何标签与接收的标签72相匹配,则确定命中信号,并且其可以触发读取操作,以从DRAM阵列32读取相应的数据值并将数据返回到缓存控制器62。例如,在图6所示的配置中,标签和数据值成对交错,并且使得当识别出对于给定标签的命中时,可以从行缓冲器36的相邻条目中读取相应的数据值。如果所比较的标签与指定的标签值72不匹配,则将未命中指示返回到缓存控制器62。
如图6所示,与标签值72匹配的行缓冲器条目68的列地址可以存储到DRAM单元64内的存储元件75。这允许后续命令(如下面针对图13所讨论的“写入先前命中”)来更新匹配标签,而不需要重复标签查找或使缓存控制器62知道哪个标签匹配。虽然存储元件75在图6中单独示出,但是识别先前命中标签的存储元件75也可以是行缓冲器36本身的一部分。
可以提供配置存储元件76以控制比较器70将行缓冲器36的哪些特定条目与标签值72进行比较。这允许根据所需的缓存配置在不同的分配中配置相同的DRAM硬件。如图7的部分A)和B)所示,标签和数据值可以在给定行中以不同的模式进行排列,其中示例A)示出了如图6中交错的标签和数据,而示例B)示出了所有连续存储的标签T后伴随有相应的数据值D。因此,配置数据76可以识别存储标签的条目并控制比较器70以将这些条目与标签值72进行比较。
不同的用户也可能希望使用不同大小的缓存行或不同的关联性。因此,数据和标签值的大小可能因不同的用例而异。例如,一个128MB的DRAM部件可以被配置为具有512字节缓存行(line)和40位标签的16路组相联缓存,并且如果有1字节的状态信息,则每个标签数据对可能需要516字节,因此大约需要8kB的DRAM行。然而,通过重新配置配置数据76,相同的部分可以用作具有1024字节缓存行的8路组相联缓存,以便比较器70与不同的元素组匹配。例如,随着缓存行变得更大,一行可以包括更少的标签,如图7的部分C)所示,因此比较器70可以不需要将标签值72与行缓冲器36的多个条目进行比较。
在许多情况下,配置缓存使得存储位置的一行对应于组相联缓存结构的一个组10可能是最方便的。然而,这不是必需的,并且在一些情况下,DRAM阵列32的一行可以对应于多个组10。在这种情况下,行地址42的一部分可以用于选择行缓冲器36的哪个部分与标签值72进行比较,并且配置数据76可以标识要被视为行缓冲器36的该部分内的条目子集的特定条目(或者,行地址中标识组的一部分可以在多个组的配置数据76之间进行选择,该多个组的配置数据76针对相同DRAM行内的每个组指定要进行比较的行缓冲器条目68的不同子集)。
如图8所示,DRAM单元64通常可以包括一个以上的存储位置的存储体,每个存储体包括如上所述的按行和列进行排列的存储位置的DRAM阵列32、行缓冲器36、列复用器38、行解码器40和比较电路70的单独实例。用于处理输入命令和激活适当信号路径的控制电路74可以在存储体之间共享。因此,从缓存控制器62接收的行地址42的一部分可以选择访问哪个存储体。虽然图8示出了具有两个DRAM的存储体的示例,但是通常可能存在更多的存储体,例如,4、8或16个存储体。因此,每个存储体可以使用上述比较电路来支持标签匹配。
在多存储体DRAM的实施方式中,如图9所示,在不同存储体的相应行中交错多个标签数据对的数据值和标签值可能是有用的。例如,对于标签数据对T0-D0,标签值T0可以存储在存储体0的行x中,但是其对应的数据值D0存储在存储体1的行x中。标签数据对T1-D1类似地在存储体之间分割,但这次标签T1存储在存储体1中,并且数据D1存储在存储体0中。这是有用的,因为当行激活并缓冲在行缓冲器36的读出放大器中时,对行缓冲器36的读取和写入可能暂时干扰在行缓冲器36中锁存的值,使得在可以执行对相同行的另一读取/写入访问之前,行缓冲器36的内容需要一些时间才能建立。这意味着在对一个存储体中的行实施一次读取/写入之后,相比较在与第一次读取/写入操作相同的存储体中执行下一个访问,可以更快地在不同存储体中执行下一个读取/写入访问。通过在存储体之间分割相同标签数据对的标签和数据值,这可以提供更好的性能,因为例如在标签访问存储体0中的标签T0之后,可以在存储体1中更快地执行数据值D0的读取/写入操作。因此,当在命中之后触发读取/写入时,目标存储位置实际上可能在不同的存储体中。
利用图9中所示的方法,标签查找可以分为两个阶段,一个用于搜索存储在存储体0的行缓冲器36-0中的索引组中的标签,并且另一个用于搜索存储在存储体1的行缓冲器36-1中的索引组中的标签。如果在存储体0中识别出匹配标签,则不需要第二阶段,并且接下来可以改为执行对存储有针对匹配标签的数据的条目的读取/写入。如果在存储体0中没有匹配标签,则使用存储体1执行第二标签匹配步骤,并且如果识别出命中,则对存储体0中的相应数据触发进一步的读取/写入操作。如果在存储体1中标签值72也未命中,然后返回未命中指示。因此,返回读取数据的时间可以取决于标签值72在第一存储体或第二存储体中是否匹配(或者,无论标签命中哪个存储体,可以在DRAM中缓冲在较早时刻处返回的读取数据,以便在同一时刻处将数据提供给缓存控制器62)。然而,无论是否需要一个或两个标签查找操作,通过使第二存储体能够在第一存储体中执行的操作之后启动后续操作而不必首先等待第一存储体的建立时间(settling time),可以提高性能。
图10示出了处理激活命令的方法。在步骤100处,DRAM 64从缓存控制器62接收指定行地址42的激活命令。在步骤102处,控制电路72控制行解码器40来选择存储位置34中与行地址42相对应的行作为活动行46,并控制行缓冲器36来捕获存储在活动行46的相应存储位置中的信息。
图11示出了处理标签匹配命令的方法。在步骤110处,DRAM 64从缓存控制器62接收指定行地址42和标签值72的标签匹配命令。标签匹配命令还可以指定标识其是读取命令还是写入命令的参数。在步骤112处,控制电路74控制比较电路70以将标签值72与行缓冲器36的条目68的子集中的每个条目进行比较(其中条目的子集由配置存储元件76标识)。在步骤114处,控制电路确定比较电路70是否已识别命中或未命中。在命中的情况下,在步骤116处,控制电路74触发对与匹配标签条目相关联的存储单元的读取或写入操作(其可以在如上所述的相同存储体或不同存储体中),并且将读取数据或写入确认返回至缓存控制器62。在步骤118处,将包含匹配标签的行缓冲器条目68的列地址存储到存储元件75以供后续标签更新操作使用。如果在步骤114处识别出未命中,则在步骤120处,将未命中指示返回到缓存控制器62。
在步骤120处返回的未命中指示可以是专用命中/未命中信号,该专用未命中信号被设置为与命中时发送的值相反的值。然而,这可能需要用于DRAM单元的附加输出端口,这可以通过改用数据信道发送未命中信号来避免(因为在发生缓存未命中时,数据信道在任何情况下都是未使用的)。通常,可以使用任何预定模式的位来表示缓存未命中,其中该模式是对于正常数据访问不会出现的模式。实现此目的的一种方式是利用错误检测码,可以提供错误检测码来防止错误。如图12所示,存储在DRAM 64中的每个数据值130可以与错误检测码132相关联。在从DRAM 64读取数据时,可以使用检查函数134对数据值130进行散列,并且可以将得到的散列与错误检测码132进行比较。如果散列与错误检测码相匹配,则确定数据是正确的,而不匹配可以表示已经发生错误。如果错误检测码是纠错码,那么也可以纠正错误,例如基于纠错码中包含的冗余信息来纠正错误。因此,可以通过返回预定模式的数据值130的位和无效错误检测码132,向缓存控制器62发送未命中指示,该无效错误检测码132与将检查函数134应用于预定模式的数据值130的位的结果不匹配。在响应于缓存查找接收数据时,缓存控制器62然后可以从预定模式的数据位130和无效错误检测码132的组合中识别出发生缓存未命中,而无需单独的信号路径来发送缓存未命中。
图13示出了处理写入先前命中命令的方法,该写入先前命中命令用于响应于先前的标签匹配命令来更新其中发生命中的标签值。在步骤140处,DRAM单元64接收写入先前命中命令,该写入先前命中命令指定待写入DRAM的更新标签值。在步骤142处,控制电路74从存储元件75读取列地址,该列地址先前存储在图11的步骤118处。在步骤144处,控制电路74触发对行缓冲器36中由步骤144处读取的列地址标识的条目68的写入操作,以将更新的标签值写入该条目。这也将触发DRAM阵列32中相应存储单元的相应更新。因此,通过将最近匹配的标签的列地址存储在存储元件75中,可以更有效地执行后续标签更新。这对于缓存是有用的,因为在一些实施方式中,每个缓存读取或写入操作可能需要更新相应的标签(尤其是在使用最近最少使用或其他受害者(victim)选择算法基于过去的缓存访问历史来选择在分配新数据时要驱逐哪个条目的缓存中)。
或者,替代在步骤118处在发生命中时存储列地址,在图11中控制电路可以在基于哪个条目是行缓冲器的匹配条目而选择的存储位置中更新缓存状态信息。因此,当访问在缓存中命中时,DRAM控制器74还更新对应于该组的信息并用于替换策略。替换策略位将与数据本身位于相同的DRAM行中,因此将出现在行缓冲器36中。例如,如果替换策略是伪LRU(最近最少使用),则在访问命中时,更新二叉树的相应位以反映所访问的元素在MRU中(最近使用的)。因此,针对该特征,DRAM缓存具有一些接近于DRAM行缓冲器的额外逻辑,其根据替换策略,在缓存命中时更新替换信息。
图11和图13中所示方法的优点在于DRAM存储器中的控制电路74无需知道使用哪个替换策略,并且可以支持能够由缓存控制器选择的两个或更多个不同的策略。另一方面,通过响应于标签匹配命令直接更新缓存状态信息,在缓存命中时需要更少的命令。
当没有备用无效条目时在缓存中未命中,在相关组中选择受害块,并且从该块中逐出数据,并用从下面的存储器中取出的新块进行替换。为了加速这种驱逐和替换,可以提供特殊类型的读取命令(受害者读取命令),其基于替换策略的信息来激活和读取数据。例如,如果替换策略是伪LRU,则受害者读取命令遍历二叉树以找到LRU元素。该命令返回该块的数据并使该块无效。可以将受害者条目的指示存储到先前命中的列位置75,并且用于写入先前读取的位置(受害者)的命令(以与图13的写入先前命中命令相同的方式)写入新插入的块。因此,利用这种方法,DRAM控制器74具有可以读取行缓冲器36的列(标签和数据)的额外命令,其中根据从存储在行缓冲器36中的活动行的相关位置子集读取的替换策略的信息,来选择读取列。
图14示出了处理标签收集命令的方法,该标签收集命令用于向缓存控制器62提供来自给定存储位置组的所有标签,这例如对于允许缓存控制器62在缓存分配和驱逐上做出更明智的决定是有用的。在步骤150处,DRAM单元64接收标签收集命令(由于该命令可以隐含地针对响应于较早的激活命令而激活的活动行,因此不必指定行地址)。响应于标签收集命令,在步骤152处,控制电路72控制列复用器38来读取存储在由配置数据76标识的条目子集中的所有标签,并将读取的标签返回到缓存控制器62。如果读取标签的组合大小大于数据通道的宽度,则可以在多次传输中将该标签推出到缓存控制器62,并且然后在缓存控制器62处进行组装。然后缓存控制器62可以使用读取标签来执行缓存管理操作。
虽然上面讨论的示例涉及基于DRAM的存储电路64,但是应当理解,相同的技术可以用于任何形式的存储技术,其中行缓冲器36用于缓冲来自活动行46中的存储位置的信息。
在本申请中,词语“被配置为......”用于表示装置的元件具有能够执行所定义的操作的配置。在此上下文中,“配置”表示硬件或软件的互连的布置或方式。例如,该装置可以具有提供所定义的操作的专用硬件,或者可以对处理器或其他处理设备进行编程以执行功能。“配置为”并不意味着需要以任何方式改变装置元件以便提供定义的操作。
尽管本文已经参考附图详细地描述了本发明的示例性实施例,但是应该理解,本发明并不限于那些精确的实施例,并且本领域技术人员可以在在不脱离由所附权利要求限定的本发明的范围和精神的情况下,在其中实现各种变化和修改。
Claims (21)
1.一种存储电路,包括:
存储位置的阵列,所述存储位置按行和列进行排列;
行缓冲器,所述行缓冲器包括多个条目,每个条目用于存储来自所述阵列的活动行的相应列处的存储位置的信息;
比较电路,所述比较电路响应于指定标签值的标签匹配命令,将所述标签值与存储在所述行缓冲器的条目子集中的每个条目中的信息进行比较,并且如果所述条目子集中存在作为存储有与所述标签值相匹配的信息的匹配条目的条目,识别所述条目子集中的哪个条目是存储有与所述标签值相匹配的信息的匹配条目,所述子集包括所述行缓冲器的两个或更多个条目;以及
控制电路,被配置为响应于在响应于所述标签匹配命令将所述条目子集中的一个条目识别为所述匹配条目时的命中条件,触发读取操作或写入操作以读取或写入存储在目标存储位置中的信息,所述目标存储位置是根据所述行缓冲器的哪个条目是所述匹配条目而选择的。
2.根据权利要求1所述的存储电路,其中,所述比较电路被配置为并行地执行多个比较,每个比较将所述标签值与所述行缓冲器的所述条目子集的相应一个条目中的信息进行比较。
3.根据权利要求1和2中任一项所述的存储电路,包括配置存储元件,所述配置存储元件用于存储配置信息,所述配置信息标识所述行缓冲器的所述多个条目中的哪个条目位于所述条目子集内。
4.根据权利要求1所述的存储电路,其中,所述目标存储位置是所述阵列的与所述行缓冲器的所述匹配条目相对应的存储位置相同的行中的另一存储位置。
5.根据权利要求1所述的存储电路,包括多个存储体,每个存储体包括所述阵列、所述行缓冲器和所述比较电路;
其中,所述目标存储位置是与包括与所述行缓冲器的所述匹配条目相对应的存储位置的存储体不同的存储体中的存储位置。
6.根据权利要求1至2中任一项所述的存储电路,包括多个存储体,每个存储体包括所述阵列、所述行缓冲器和所述比较电路;
包括控制电路,响应于写入命令,将数据值写入所述多个存储体中的一个存储体中的存储位置,并且将相应标签值写入所述多个存储体中的另一存储体中的存储位置。
7.根据权利要求1、2、4和5中任一项所述的存储电路,其中,响应于在响应于所述标签匹配命令将所述条目子集中的一个条目识别为所述匹配条目时的命中条件,所述比较电路被配置为将对所述行缓冲器的哪个条目是所述匹配条目的指示存储到预定存储元件。
8.根据权利要求7所述的存储电路,包括控制电路,响应于写入先前命中命令,触发写入操作以将信息写入与所述行缓冲器中由所述预定存储元件标识的条目相关联的存储位置。
9.根据权利要求1、2、4和5中任一项所述的存储电路,包括控制电路,响应于在响应于所述标签匹配命令将所述条目子集中的一个条目识别为所述匹配条目时的命中条件,更新基于所述行缓冲器的哪个条目是所述匹配条目而选择的存储位置中的状态信息。
10.根据权利要求1、2、4和5中任一项所述的存储电路,其中,响应于所述标签匹配命令,所述比较电路被配置为在所述行缓冲器的所述条目子集中的条目都不存储与所述标签值相匹配的信息时,返回未命中指示。
11.根据权利要求10所述的存储电路,其中,每个存储位置被配置为存储与错误检测码相关联的信息;并且
所述未命中指示包括与无效错误检测码相关联的预定模式的信息。
12.根据权利要求1、2、4和5中任一项所述的存储电路,包括控制电路,响应于受害者读取命令,从所述行缓冲器中根据存储在所述行缓冲器中的缓存替换策略信息而选择的受害者条目中读取数据,并且使来自与所述受害者条目相关联的存储位置的数据无效。
13.根据权利要求12所述的存储电路,其中,响应于所述受害者读取命令,所述控制电路被配置为将对所述行缓冲器的哪个条目是所述受害者条目的指示存储到预定存储元件。
14.根据权利要求13所述的存储电路,包括控制电路,响应于写入先前命中命令,触发写入操作以将信息写入与所述行缓冲器中由所述预定存储元件标识的条目相关联的存储位置。
15.根据权利要求1、2、4和5中任一项所述的存储电路,包括控制电路,响应于标签收集命令,触发读取操作以从所述行缓冲器的所述条目子集中的每个条目中读取信息。
16.根据权利要求1、2、4和5中任一项所述的存储电路,其中,所述存储位置包括DRAM存储位置。
17.一种存储装置,包括:
根据权利要求1、2、4和5中任一项所述的存储电路;以及
缓存控制器,所述缓存控制器用于控制对所述存储电路中存储的缓存数据的访问。
18.根据权利要求17所述的存储装置,其中,响应于指定目标地址的缓存访问请求,所述缓存控制器和所述存储电路中的一个被配置为触发所述标签匹配命令,所述标签匹配命令指定根据所述目标地址确定的标签值。
19.根据权利要求18所述的存储装置,其中,响应于在响应于所述标签匹配命令将所述条目子集中的一个条目识别为所述匹配条目时的命中条件,所述存储电路被配置为向所述缓存控制器输出以下各项中的至少一项:
与除了与所述匹配条目相关联的存储位置之外的目标存储位置相对应的数据值;以及
用于识别所述存储电路的哪个存储位置是所述目标存储位置的信息。
20.一种存储电路,包括:
用于存储信息的装置的阵列,所述用于存储信息的装置按行和列进行排列;
用于缓冲来自所述阵列的活动行的信息的装置,所述用于缓冲的装置包括多个条目,每个条目用于存储来自所述阵列的活动行的相应列处的用于存储的装置的信息;
用于比较的装置,所述用于比较的装置响应于指定标签值的标签匹配命令,将所述标签值与存储在所述用于缓冲的装置的条目子集中的每个条目中的信息进行比较,并且如果所述条目子集中存在作为存储有与所述标签值相匹配的信息的匹配条目的条目,识别所述条目子集中的哪个条目是存储有与所述标签值相匹配的信息的匹配条目,所述子集包括用于缓冲的装置的两个或更多个条目;以及
用于控制的装置,所述用于控制的装置响应于在响应于所述标签匹配命令将所述条目子集中的一个条目识别为所述匹配条目时的命中条件,触发读取操作或写入操作以读取或写入存储在目标存储位置中的信息,所述目标存储位置是根据行缓冲器的哪个条目是所述匹配条目而选择的。
21.一种用于从存储电路访问信息的方法,所述存储电路包括按行和列进行排列的存储位置的阵列,所述方法包括:
将信息从所述阵列的活动行中的存储位置传送至行缓冲器,所述行缓冲器包括多个条目,每个条目存储来自所述活动行的相应列处的存储位置的信息;
响应于指定标签值的标签匹配命令,将所述标签值与存储在所述行缓冲器的条目子集中的每个条目中的信息进行比较,并且如果所述条目子集中存在作为存储有与所述标签值相匹配的信息的匹配条目的条目,识别所述条目子集中的哪个条目是存储有与所述标签值相匹配的信息的匹配条目,所述子集包括所述行缓冲器的两个或更多个条目;以及
响应于在响应于所述标签匹配命令将所述条目子集中的一个条目识别为所述匹配条目时的命中条件,触发读取操作或写入操作以读取或写入存储在目标存储位置中的信息,所述目标存储位置是根据所述行缓冲器的哪个条目是所述匹配条目而选择的。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GR20160100608 | 2016-11-29 | ||
GR20160100608 | 2016-11-29 | ||
PCT/GB2017/052732 WO2018100331A1 (en) | 2016-11-29 | 2017-09-15 | Storage circuitry responsive to a tag-matching command |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109983536A CN109983536A (zh) | 2019-07-05 |
CN109983536B true CN109983536B (zh) | 2023-07-21 |
Family
ID=59930647
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780072335.6A Active CN109983536B (zh) | 2016-11-29 | 2017-09-15 | 响应标签匹配命令的存储电路 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10860495B2 (zh) |
EP (1) | EP3549129B1 (zh) |
JP (1) | JP7049338B2 (zh) |
KR (1) | KR102421311B1 (zh) |
CN (1) | CN109983536B (zh) |
WO (1) | WO2018100331A1 (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10545875B2 (en) * | 2017-12-27 | 2020-01-28 | Advanced Micro Devices, Inc. | Tag accelerator for low latency DRAM cache |
US11714760B2 (en) | 2019-05-24 | 2023-08-01 | Texas Instmments Incorporated | Methods and apparatus to reduce bank pressure using aggressive write merging |
US11935601B2 (en) | 2019-08-14 | 2024-03-19 | Supermem, Inc. | Bit line sensing circuit comprising a sample and hold circuit |
CN111124297B (zh) * | 2019-12-16 | 2022-05-06 | 浙江工商大学 | 一种堆叠dram缓存的性能提升方法 |
US11256569B2 (en) * | 2020-01-02 | 2022-02-22 | Arm Limited | Error correcting bits |
CN112631958A (zh) * | 2020-12-29 | 2021-04-09 | 浙江工商大学 | 基于过滤表的dram行缓冲器混合管理方法 |
US11972145B2 (en) * | 2021-01-21 | 2024-04-30 | Micron Technology, Inc. | Opportunistic data movement |
US11568932B2 (en) * | 2021-02-22 | 2023-01-31 | Micron Technology, Inc. | Read cache for reset read disturb mitigation |
US11893254B2 (en) * | 2021-06-04 | 2024-02-06 | International Business Machines Corporation | Dynamic permission management of storage blocks |
CN113641626B (zh) * | 2021-10-18 | 2022-02-18 | 睿思芯科(深圳)技术有限公司 | 一种sram读写控制方法及行缓冲控制器 |
US20240111425A1 (en) * | 2022-09-29 | 2024-04-04 | Advanced Micro Devices, Inc. | Tag and data configuration for fine-grained cache memory |
CN116932424B (zh) * | 2023-09-14 | 2023-12-15 | 上海芯联芯智能科技有限公司 | 一种基于ecc检测的缓存访问方法、装置、介质和设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB9912630D0 (en) * | 1998-12-08 | 1999-07-28 | Advanced Risc Mach Ltd | Cache memory |
US6215685B1 (en) * | 1997-11-26 | 2001-04-10 | Texas Instruments Incorporated | Sequentially comparing content addressable memory |
CN105320470A (zh) * | 2014-07-30 | 2016-02-10 | Arm有限公司 | 存储设备中的访问抑制 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05120133A (ja) * | 1991-10-29 | 1993-05-18 | Matsushita Electric Ind Co Ltd | キヤツシユ装置 |
US6697909B1 (en) * | 2000-09-12 | 2004-02-24 | International Business Machines Corporation | Method and apparatus for performing data access and refresh operations in different sub-arrays of a DRAM cache memory |
JP2002196981A (ja) * | 2000-12-22 | 2002-07-12 | Fujitsu Ltd | データ処理装置 |
US6622208B2 (en) * | 2001-03-30 | 2003-09-16 | Cirrus Logic, Inc. | System and methods using a system-on-a-chip with soft cache |
JP2003162448A (ja) * | 2001-11-27 | 2003-06-06 | Mitsubishi Electric Corp | 低消費電力キャッシュメモリ装置 |
US7965546B2 (en) * | 2007-04-26 | 2011-06-21 | Super Talent Electronics, Inc. | Synchronous page-mode phase-change memory with ECC and RAM cache |
US8549208B2 (en) * | 2008-12-08 | 2013-10-01 | Teleputers, Llc | Cache memory having enhanced performance and security features |
JP2011118469A (ja) * | 2009-11-30 | 2011-06-16 | Toshiba Corp | メモリ管理装置およびメモリ管理方法 |
US8612828B2 (en) * | 2009-12-22 | 2013-12-17 | Intel Corporation | Error correction mechanisms for 8-bit memory devices |
US8200902B2 (en) * | 2010-06-10 | 2012-06-12 | Arm Limited | Cache device for coupling to a memory device and a method of operation of such a cache device |
US8838897B2 (en) * | 2011-06-29 | 2014-09-16 | New Jersey Institute Of Technology | Replicating tag entries for reliability enhancement in cache tag arrays |
US9753858B2 (en) * | 2011-11-30 | 2017-09-05 | Advanced Micro Devices, Inc. | DRAM cache with tags and data jointly stored in physical rows |
US8966232B2 (en) * | 2012-02-10 | 2015-02-24 | Freescale Semiconductor, Inc. | Data processing system operable in single and multi-thread modes and having multiple caches and method of operation |
US8832376B2 (en) * | 2012-03-16 | 2014-09-09 | Infineon Technologies Ag | System and method for implementing a low-cost CPU cache using a single SRAM |
US9684601B2 (en) * | 2012-05-10 | 2017-06-20 | Arm Limited | Data processing apparatus having cache and translation lookaside buffer |
US9311239B2 (en) * | 2013-03-14 | 2016-04-12 | Intel Corporation | Power efficient level one data cache access with pre-validated tags |
JP6275427B2 (ja) * | 2013-09-06 | 2018-02-07 | 株式会社東芝 | メモリ制御回路およびキャッシュメモリ |
US9589606B2 (en) * | 2014-01-15 | 2017-03-07 | Samsung Electronics Co., Ltd. | Handling maximum activation count limit and target row refresh in DDR4 SDRAM |
-
2017
- 2017-09-15 WO PCT/GB2017/052732 patent/WO2018100331A1/en unknown
- 2017-09-15 CN CN201780072335.6A patent/CN109983536B/zh active Active
- 2017-09-15 KR KR1020197017549A patent/KR102421311B1/ko active IP Right Grant
- 2017-09-15 EP EP17771846.7A patent/EP3549129B1/en active Active
- 2017-09-15 JP JP2019527315A patent/JP7049338B2/ja active Active
- 2017-09-15 US US16/464,019 patent/US10860495B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6215685B1 (en) * | 1997-11-26 | 2001-04-10 | Texas Instruments Incorporated | Sequentially comparing content addressable memory |
GB9912630D0 (en) * | 1998-12-08 | 1999-07-28 | Advanced Risc Mach Ltd | Cache memory |
CN105320470A (zh) * | 2014-07-30 | 2016-02-10 | Arm有限公司 | 存储设备中的访问抑制 |
Non-Patent Citations (2)
Title |
---|
Low-power high-performance nand match line content addressable memories;V. Chaudhary 等;《Very Large Scale Integration Systems, IEEE Transactions on》;20061123;第14卷(第8期);895-905 * |
多核系统共享内存资源分配和管理研究;高珂 等;《计算机学报》;20141130;第38卷(第05期);1020-1034 * |
Also Published As
Publication number | Publication date |
---|---|
JP2019536165A (ja) | 2019-12-12 |
US20190384718A1 (en) | 2019-12-19 |
EP3549129B1 (en) | 2021-03-10 |
KR102421311B1 (ko) | 2022-07-18 |
WO2018100331A1 (en) | 2018-06-07 |
KR20190087499A (ko) | 2019-07-24 |
JP7049338B2 (ja) | 2022-04-06 |
US10860495B2 (en) | 2020-12-08 |
EP3549129A1 (en) | 2019-10-09 |
CN109983536A (zh) | 2019-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109983536B (zh) | 响应标签匹配命令的存储电路 | |
US10019369B2 (en) | Apparatuses and methods for pre-fetching and write-back for a segmented cache memory | |
US6339813B1 (en) | Memory system for permitting simultaneous processor access to a cache line and sub-cache line sectors fill and writeback to a system memory | |
US7689772B2 (en) | Power-performance modulation in caches using a smart least recently used scheme | |
US7380065B2 (en) | Performance of a cache by detecting cache lines that have been reused | |
US7962695B2 (en) | Method and system for integrating SRAM and DRAM architecture in set associative cache | |
US20170235681A1 (en) | Memory system and control method of the same | |
US8661179B2 (en) | Cache memory architecture having reduced tag memory size and method of operation thereof | |
US9424195B2 (en) | Dynamic remapping of cache lines | |
US20030149842A1 (en) | Method for controling cache system comprising direct-mapped cache and fully-associative buffer | |
EP2866148B1 (en) | Storage system having tag storage device with multiple tag entries associated with same data storage line for data recycling and related tag storage device | |
CN110727610B (zh) | 高速缓存存储器、存储系统和高速缓存存储器的逐出方法 | |
US11836089B2 (en) | Cache memory, memory system including the same and operating method thereof | |
KR102474288B1 (ko) | 쓰기 간섭 문제를 완화하는 상변화 메모리 모듈 | |
US20240054073A1 (en) | Circuitry and Method | |
US20240086325A1 (en) | DRAM Cache with Stacked, Heterogenous Tag and Data Dies | |
GR20170200059U (el) | Κυκλωμα αποθηκευσης | |
US20120102271A1 (en) | Cache memory system and cache memory control method | |
JPH01228036A (ja) | キャッシュメモリ | |
CN117609105A (zh) | 用于访问存储器页的版本中的数据的方法和设备 |
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 |