CN101930344B - 确定链接数据储存器中存储和重写的项目的数据存储协议 - Google Patents

确定链接数据储存器中存储和重写的项目的数据存储协议 Download PDF

Info

Publication number
CN101930344B
CN101930344B CN201010212478.2A CN201010212478A CN101930344B CN 101930344 B CN101930344 B CN 101930344B CN 201010212478 A CN201010212478 A CN 201010212478A CN 101930344 B CN101930344 B CN 101930344B
Authority
CN
China
Prior art keywords
project
reservoir
access
reservoirs
omission
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
CN201010212478.2A
Other languages
English (en)
Other versions
CN101930344A (zh
Inventor
P·G·迈尔
D·J·威廉森
S·J·克拉斯克
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.)
ARM Ltd
Original Assignee
Advanced Risc Machines Ltd
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 Advanced Risc Machines Ltd filed Critical Advanced Risc Machines Ltd
Publication of CN101930344A publication Critical patent/CN101930344A/zh
Application granted granted Critical
Publication of CN101930344B publication Critical patent/CN101930344B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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/12Replacement control
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1054Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently physically addressed
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/682Multiprocessor TLB consistency

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)
  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及确定链接数据储存器中存储和重写的项目的数据存储协议。公开了存储多个项目的存储装置和方法。存储装置配置为在相同时钟周期内接收访问相应项目的第一和第二访问请求。存储装置包括:均存储多个项目的子集的两个储存器,第一访问请求路由到第一储存器且第二访问请求路由到第二储存器;遗漏检测电路,检测请求的项目未存储在被访问储存器中的遗漏;项目检索电路,从另外储存器中检索其访问产生遗漏的项目;更新电路,根据两个储存器的相应一个的访问历史选择在相应储存器中重写的项目,更新电路响应于遗漏检测电路在对第一储存器的访问中检测到遗漏和至少一个另外条件而通过重写所选项目用从另外储存器中检索的项目来更新两个储存器。

Description

确定链接数据储存器中存储和重写的项目的数据存储协议
技术领域
本发明的领域涉及数据存储装置,并且具体而言,涉及每时钟周期接收多个访问请求的数据存储装置。
背景技术
数据处理器处理要求相当大的存储容量的越来越大的数据量。访问诸如存储器的大型数据储存器耗费时间。因此,技术已演进至将处理器可能需要的数据的子集存储在比如低级高速缓存之类的易于访问的较小数据储存器中,如果需要不在该子集内的数据,则对诸如较高级高速缓存或存储器的一个或多个较大储存器进行访问。
使得较小数据储存器易于访问以改善处理器速度,然而,要实现它们在功率和面积方面成本高昂,并且因此,重要的是其存储处理器很可能将需要的项目(item)。如果其未存储所需数据,则其仅仅增加面积并消耗功率,而不增加益处。实际上,这些数据储存器的命中率对于处理器功率消耗和性能而言非常重要。
此类数据储存器的一个示例是转换旁视缓冲器(translationlookasidebuffer)或TLB。具有虚拟存储器的大多数现代微处理器具有被虚拟寻址、物理映射的数据高速缓存。因此,所有存储器读和写需要在能够访问寻址的存储位置之前使其虚拟地址转换成物理地址。此转换通常由称为TLB的小转换高速缓存进行。如果TLB不包含所请求的转换,则必须从后备的2级TLB或从访问存储器中的页表的存储器管理逻辑中检索转换信息。这些TLB中的命中率对于处理器性能而言非常重要。即便用后备L2TLB,TLB遗漏(miss)造成的损失仍对总体性能具有显著影响。
许多现代微处理器可以每周期发出两个存储器访问,一个加载且一个存储,并且因此,这些需要两个TLB或双端口TLB进行转换。双端口TLB具有与双TLB解决方案几乎相同的面积,并且实际上可以实现为两个TLB。双端口TLB具有实际上每个条目被存储两次的缺点。在每个能够存储不同条目的两个独立TLB正在访问存储器的不同区域的情况下,使用这两个TLB具有能够比双端口TLB存储更多的条目并因此能够提供更好性能的优点。
然而,存在加载和存储将是针对相同数据项目的若干情况,并且如果这些最近未被访问,则在该双TLB实施方式中,加载TLB和存储TLB中都将存在遗漏。因此,这两次访问都会遭受时间损失。在双端口TLB中,很明显,加载TLB将已经存储数据,使其可用于存储TLB。
因此,这两种实施方式都具有缺点。
期望的是能够提供一种具有双端口和独立存储机制两者的至少某些优点的系统。
发明内容
本发明的第一方面提供一种用于存储多个项目的存储装置,所述存储装置被配置为在相同时钟周期内接收用于访问相应项目的第一访问请求和第二访问请求,所述存储装置包括:两个储存器,每个储存器用于存储所述多个项目的子集,所述第一访问请求被路由到第一储存器且所述第二访问请求被路由到第二储存器;遗漏检测电路,其用于检测其中所请求的项目未被存储在所述被访问储存器中的遗漏;项目检索电路,其用于从另外的储存器中检索其访问产生遗漏的项目;更新电路,其用于根据所述两个储存器中的相应一个的访问历史选择要在所述相应储存器中重写的项目,所述更新电路响应于所述遗漏检测电路在对所述第一储存器的访问中检测到所述遗漏并响应于至少一个另外的条件而通过重写所述所选项目用从所述另外的储存器中检索的所述项目来更新所述两个储存器二者。
本发明认识到,当在相同时钟周期中发生两个访问请求时,它们可能是相关的,并且如此,在也允许每个数据储存器独立存储数据的同时提供它们正在访问的这两个数据储存器之间的某种关联可能是有利的。因此,本发明提供对遗漏和至少一个另外的条件进行响应而通过重写所选项目来用所检索的项目更新这两个储存器的更新电路。基于实际数据储存器的访问历史来选择这些项目,并且因此,可以在每个储存器中独立地重写最近未被访问的项目。因此,如果第一访问请求之一访问第二访问请求将不需要的项目,则此项目将被存储在第二数据储存器中但不会被使用,并且如此,更新电路不久将选择它以进行重写。然而,如果这两个访问请求正在访问共同的项目,则至少某些第二访问请求将需要被第一访问请求访问的项目,并且该项目在第二数据储存器中的存储将已提供某些益处。
在某些实施例中,所述更新电路被配置为识别产生所述遗漏的所述项目是否被存储在所述第二储存器中,所述至少一个另外的条件是检测到所述项目未被存储在所述第二储存器中。
更新电路可以识别在第一储存器中产生遗漏的项目是否被存储在第二储存器中。如果其未被存储在第二储存器中,则这是所述至少一个另外的条件,并且意味着所述更新电路将通过重写所选项目用所检索的项目来更新第一和第二储存器两者,所述项目是响应于其访问历史而选择的。
在其它实施例中,所述更新电路响应于检测到产生所述遗漏的所述项目存在于所述第二储存器中而从所述第二储存器检索所述项目并通过重写由所述更新电路选择的所述项目来将所述项目复制到所述第一储存器。
如果产生遗漏的项目存在于第二储存器中,则在某些实施例中,从第二储存器检索此项目并将其复制到第一储存器中的由更新电路所选的位置中。这在从另外的储存器取回该项目将需要许多时钟周期的情况下可能是有利的。这可以在所述另外的储存器是诸如片外存储器的难以访问的储存器的情况下发生。
在其它实施例中,所述更新电路响应于检测到产生所述遗漏的所述项目存在于所述第二储存器中而选择所述项目以用于重写并根据所述第一储存器的项目访问历史选择所述储存器中用于重写的项目,所述更新电路被配置为用从所述另外的储存器检索的所述项目重写所述所选项目。
如果该另外的储存器不是远程且难以访问的,则如在其它情况下执行的那样仅仅从所述另外的储存器取回数据项目并在第二储存器中用取回的值来重写此项目且将其写入第一储存器中的由更新电路基于访问历史所选的位置中可能更简单。虽然所取回的值应与存储在第二储存器中的值相同,但重写该值可能是有利的,因为这将保证这两个数据储存器永不包含用于相同项目的不同转换或属性。虽然软件应永远阻止这种情况发生,但在这种情况下可以通过始终重写该条目来减少确认工作。
在其它实施例中,在第二储存器中不重写此条目,仅仅使其保持原样且没有项目被写入第二储存器,并且所检索的项目被写入第一数据储存器中的由更新电路所选的地点处。
在某些实施例中,从所述另外的储存器检索的所述项目具有表示与之相关的所述数据的属性的属性数据,所述至少一个另外的条件包括所述属性数据,所述更新电路响应于所述属性数据不具有预定值而用所述检索的项目更新所述第二储存器和所述第一储存器以及响应于所述属性数据具有所述预定值而不用所述检索的项目更新所述第二储存器且用所述检索的项目更新所述第一储存器。
在某些情况下,所存储的项目可以具有与之相关的属性信息。在判定是否要更新项目时使用此信息可能是有利的。
例如,如果所述第一访问请求是加载(存储器读)请求且所述第二访问请求是存储(存储器写)请求,并且所述预定值是指示与所述值相关的所述数据是只读数据的值,则在这种情况下,很明显,绝不会在存储(存储器写)流水线中使用所检索的项目,并且如此,不应将其写入在此流水线中的第二储存器。因此,使用此进一步的信息可以通过不使用已知永不需要的项目重写第二储存器中可能需要的项目来提高设备的效率。
在某些实施例中,所述两个储存器包括两个1级(level1)高速缓存且所述存储装置还包括所述另外的储存器,所述另外的储存器包括2级高速缓存。
本发明的实施例对高速缓存特别有用,高速缓存是访问容易且廉价并且由于其面积和功率开销而只能存储少量数据的数据储存器。1级高速缓存访问起来最容易且最快,2级高速缓存通常较大且要花费更多的时间进行访问。因此,可能有利的是使作为1级高速缓存的储存器1和储存器2存储数据的子集并且使另外的数据项目存储在2级或L2高速缓存中。在不具有用于所述另外的数据的L2高速缓存的其它实施例中,所述另外的数据可以存储在存储器中,并且将需要存储器管理单元来访问该数据。
在某些实施例中,所述更新电路包括用于存储所述两个储存器中的每一个的访问历史的缓冲器且所述更新电路被配置为选择最近未被访问的项目以进行重写。
当选择要重写哪个项目时,更新电路依赖于该储存器的访问历史。因此,在某些实施例中,其包括存储这两个储存器中的每一个的访问历史的缓冲器且更新电路使用此数据来选择最近未被访问的项目进行重写。通过此方式,一段时间未被使用的项目被重写。因此,如果被写入储存器的项目是另一储存器所需的且在该储存器中不被使用的项目,则其将很快被重写,因为其访问历史指示其未被访问。
在某些实施例中,所述访问请求使用虚拟地址来识别所述项目的存储位置,并且所述两个储存器包括每个都存储有虚拟地址到物理地址的多个转换的转换旁视缓冲器。
本发明的实施例对转换旁视缓冲器特别有用。如引言中所述,转换旁视缓冲器用来将由处理器输出的虚拟地址转换成识别高速缓存和存储器中的存储位置的物理地址。这些转换旁视缓冲器通常是高速缓存并存储转换信息的子集。重要的是在其中尽可能少地发生遗漏,因为其在处理时间方面产生大的开销。本发明的实施例提供一种提供两个旁视缓冲器的方式,所述两个旁视缓冲器能够存储独立的项目但是相链接,使得如果它们之一需要项目,该项目也被写入另一个中。这意味着在处理器例如在相对接近的时间读取并写入相同页面的情况下,则对页面的第一加载将保证其被存储在位于准备好向该页面写入的写路径上的数据储存器中。由于所选择的要重写的项目是基于它们的访问历史而针对每个储存器独立地选择的,所以如果项目被写入数据储存器中不需要的那一个,则其将很快被重写。
应注意的是所存储的项目可以仅仅是虚拟地址到物理地址的转换,或者它们可以替换地包括附加信息,诸如与存储在物理地址处的项目的属性相关的属性数据。
在某些实施例中,所述存储装置包括至少一个附加储存器,所述存储装置被配置为在与所述第一和第二访问请求相同的时钟周期内接收至少一个附加访问请求,所述至少一个附加访问请求被路由到所述至少一个附加储存器,所述更新电路被配置为根据所述至少一个附加储存器的访问历史来选择要在所述至少一个附加储存器中重写的项目,所述更新电路响应于所述遗漏检测电路在对所述第一储存器的访问中检测到所述遗漏并响应于所述至少一个另外的条件而通过重写所述所选项目用从所述另外的储存器检索的所述项目更新所有所述储存器。
虽然已针对单个周期中的两个访问请求和两个数据储存器讨论了本发明的实施例,但技术人员应清楚,在使用附加数据储存器的情况下,其同样很好地适用于相同周期中更多的访问请求。在此类情况下,如果所述另外的条件也满足的话,则任何数据储存器中的任何遗漏都将导致所检索的数据被存储在所有数据储存器中。
本发明的第二方面提供一种包括用于处理数据的处理器和根据本发明的第一方面的存储装置的数据处理装置,其中,所述处理器被配置为在相同时钟周期期间生成数据加载请求和数据存储请求。
在两个访问请求是加载请求和存储请求的情况下,具有相链接的储存器是特别有利的,因为处理器常常可以在相对接近的时间对相同项目进行读和写。在这种情况下,如果储存器未被链接,则对项目的第一加载使得处理器停止,同时处理遗漏,并且在短时间之后,当发生对相同项目的第一存储时,处理器将再次停止。通过将在加载期间检索的数据存储在用于写流水线的数据储存器中,将避免第二次停止。
在某些实施例中,所述数据处理装置包括所述另外的储存器,所述另外的储存器被配置为存储与每个项目相关联的属性数据。
可以将项目存储在另外的储存器中的由物理地址识别的位置中。这些项目可以是例如将由处理器处理的数据项目或用于控制处理器的指令。这些物理地址可以具有与之相关的属性数据,此属性数据提供被存储在该地址中的项目的属性的指示。这些属性可以包括诸如项目是否可高速缓存、和/或其是否是只读或只写项目等事项。
本发明的第三方面提供一种更新存储在第一储存器和第二储存器中的项目的方法,包括步骤:在相同时钟周期中接收用于访问所述第一储存器中的第一项目的第一访问请求和用于访问第二储存器中的第二项目的第二访问请求;确定任一个访问请求是否产生其中所请求的项目未被存储在所述被访问储存器中的遗漏;从另外的储存器中检索其访问产生遗漏的项目;根据所述两个储存器中的相应一个的访问历史来选择要在所述相应储存器中重写的项目;响应于在对所述第一储存器的访问中检测到所述遗漏并响应于至少一个另外的条件,通过重写所述所选项目用从所述另外的储存器检索的所述项目更新所述两个储存器二者。
本发明的第四方面提供一种用于存储多个项目的存储设备,所述存储设备被配置为在相同时钟周期内接收用于访问相应项目的第一访问请求和第二访问请求,所述存储设备包括:两个储存器,每个储存器用于存储所述多个项目的子集,所述第一访问请求被路由到第一储存器且所述第二访问请求被路由到第二储存器;遗漏检测设备,其用于检测其中所请求的项目未被存储在所述被访问储存器中的遗漏;项目检索设备,其用于从另外的储存器中检索其访问产生遗漏的项目;更新设备,其用于根据所述两个储存器中的相应一个的访问历史选择要在所述相应储存器中重写的项目,所述更新设备响应于所述遗漏检测设备在对所述第一储存器的访问中检测到所述遗漏并响应于至少一个另外的条件而通过重写所述所选项目用从所述另外的储存器中检索的所述项目来更新所述两个储存器二者。
根据结合附图来阅读的说明性实施例的以下详细说明,将清楚本发明的以上及其它目的、特征和优点。
附图说明
图1示出根据本发明的实施例的数据存储装置;
图2示出根据本发明的实施例的具有使用TLB访问的高速缓存的数据处理装置;
图3示出其中在单个时钟周期中接收多个访问请求的存储装置;以及
图4示出举例说明根据本发明的实施例的方法的流程图。
具体实施方式
图1示出根据本发明的实施例的存储装置10。此存储装置包括两个数据储存器12和14,数据储存器12和14包括多个数据项目15及其对应地址16。这两个数据储存器被并行布置且每个在相同的时钟周期期间接收访问请求。这些访问请求是对于数据的访问请求并使用地址来指定此数据的存储位置。因此,将指定的地址与地址16相比较,并且如果匹配的话,则将数据输出。
除了输出数据之外,指示已存在对此存储位置的访问的命中数据也被发送到电路20。电路20包括用于每个数据储存器12和14的两个访问历史缓冲器22和24。这些存储数据储存器12和14的访问历史。如果访问请求中的一者或两者在访问的数据储存器12、14中未发现所需的数据,则使用遗漏检测器30检测到此。然后,遗漏检测器30在另一数据储存器14、12中寻找遗漏的项目。然后其用信号通知电路20内的更新逻辑在相应数据储存器中已存在遗漏,而且其还用信号通知遗漏项目是否在另一数据储存器中并且如果在的话用信号通知其位置。
然后,更新电路用信号通知取回电路28取回遗漏的数据项目,并且取回电路28然后向远程位置处的附加数据储存器发送信号并检索所需的数据项目。
在本实施例中,数据项目被存储在该远程数据储存器中的由地址识别的位置中。此存储位置具有与之相关的属性数据,指示存储在此地址处的项目的属性。可能与数据项目相关的属性的示例是许可,诸如读、写、或不可访问,这些许可可能具有进一步的限制,诸如允许谁访问数据项目,例如访问可以局限于用户或管理员。另外的属性可以包括诸如可高速缓存、从不执行或设备指示符等事项。因此,这些属性提供关于数据项目的进一步信息且可以被更新逻辑用来确定将数据项目存储在特定数据储存器中是否适合。此属性数据可以被检索并与数据项目一起存储在数据储存器中。
因此,更新逻辑26使用发生遗漏的数据储存器的访问历史确定最近未被访问的存储位置从而在该数据储存器中选择将存储此数据项目的位置。然后,更新电路26查看属性数据以了解其是否指示此数据项目在另一数据储存器中的存储是否很可能是有用的。例如,如果数据项目的属性指示该数据项目是只读数据,则如果另一数据储存器是写通道上的数据储存器,则最好不用此只读数据项目来重写存储在该数据储存器中的项目。如果属性数据不阻止数据项目到另一数据储存器的写入,则更新电路26选择将向其写入该数据项目的存储位置。首先,其将查看遗漏检测器向其发送的数据,以了解该数据项目之前是否被存储在该数据储存器中。如果是,则其将选择此位置写入该数据。如果不是,则其将根据存储在访问历史缓冲器中的访问历史来选择存储位置。应注意的是虽然在本实施例中,如果被遗漏的数据项目在另一数据储存器中,则其被重写,但在其它实施例中,可能的是在该数据储存器中仅仅将此数据保持原样,并且不将此数据项目写入该数据储存器。很明显,不将其写入数据储存器具有某些节能优点,而将其写入数据储存器将具有这样的优点,即如果出于某种原因,该数据项目的副本已以某种方式改变,则最新的值被写入。
图2示出根据本发明的实施例的数据处理装置100。其包括处理器110和作为物理寻址高速缓存的高速缓存112和114。应注意的是虽然这些被示为两个高速缓存,但在某些实施例中它们可以是具有读和写端口的单个高速缓存。该处理器具有并行地操作的加载和存储流水线,因此,存在在相同时钟周期期间发送的加载请求和存储请求。这些请求使用虚拟地址,并且因此,为了从高速缓存访问数据项目,需要将其转换成物理地址。这使用TLB122和124来执行。因此,同时向相应TLB发送加载请求和存储请求并确定指定的地址是否被存储在其中。如果不存储在其中,则使用遗漏检测器30检测到此且遗漏检测器30查看另一TLB以了解该项目是否被存储在其中。然而,如果存在指定的地址,则此命中信息被发送到电路20中的与每个TLB相关的访问历史缓冲器。同时,根据虚拟地址找到的物理地址被发送到高速缓存。
如果TLB中的一者或两者产生遗漏,则更新逻辑26根据从遗漏检测器接收到的信息来确定所需项目是否在另一TLB中。从存储附加地址转换信息的L2高速缓存126取回该项目。这返回所需信息且更新逻辑26然后根据遗漏检测器30来确定该项目是否在另一TLB中。如果是,则不更新此TLB,并且用所检索的项目更新产生遗漏的TLB,其中根据访问历史来选择用于重写的项目。如果不在,则更新逻辑根据相应访问历史缓冲器来确定应将此数据项目存储在TLB122和124两者中的位置。其选择最近用得最少的项目来重写。通过此方式,虽然数据项目被写入每个TLB中,但由于基于其访问历史来选择要重写的不同数据项目,所以这两个TLB不会同时包含相同的数据项目。然而,由于TLB之一中的遗漏将使得地址转换被存储在另一TLB中,所以如果处理器像时常发生的那样对相同页表进行读和写,则响应于遗漏的加载流水线中的停止之后将不会是存储流水线中的停止,因为所需页表将已被写入存储流水线上的TLB中。如果它们正在访问不同的页表,则响应于另一TLB中的遗漏而存储在一个TLB中的信息将不会被使用且很快被重写,因为重写算法使用访问历史来选择要重写的项目。
图3示出根据本发明的实施例的数据存储装置。在此装置中,存在对三个并行数据储存器222、224和226并行地发生的三个数据访问请求。以类似于前一电路的方式,遗漏检测器30检测在任何数据储存器中是否存在遗漏,并且如果存在,则确定该项目是否存在于任何其它数据储存器中。然后,其将此信息发送到更新逻辑26。如果不存在遗漏,则存在命中的信息被发送到电路20,在那里,其被存储在与相应数据储存器相关的历史缓冲器20中。然后,更新逻辑26根据来自遗漏电路30的信息来确定在任何其它数据储存器中是否存在所需数据项目。如果存在,则其将该数据从该数据储存器复制到其它数据储存器并根据相应历史缓冲器22中的信息来选择要在这些数据储存器中重写的位置。如果数据项目未存在于任何其它数据储存器中,则在本示例中其从存储器管理单元230取回数据。应注意的是在本实施例中,由于另外的数据储存器不是2级高速缓存,而是实际上由存储器管理单元管理的实体,于是检索数据会花费相当长的额外时间。因此,如果未存在于数据储存器之一中的数据项目存在于其它储存器之一中,则将其从此数据储存器复制到其它数据储存器会是有利的。如果数据项目未存在于任何数据储存器中,则使用存储器管理单元230来取回它并将其写入每个数据储存器中,根据从相应历史缓冲器22确定的访问历史来选择每个数据储存器中要重写的项目。
图4示出举例说明根据本发明的实施例的方法的流程图。最初,接收多个访问请求并确定所请求的项目是否存在于对应数据储存器中。如果是,则更新该数据储存器的访问历史,并确定是否已执行所有所请求的访问。
如果其不在对应数据储存器中,则确定所请求的项目是否在任何其它数据储存器中。如果是,则将此项目选择为该特定数据储存器中要重写的项目。然后从另外的数据储存器检索该项目。如果在先前的步骤中尚未对其选择,则根据它们的访问历史来选择每个数据储存器中的要重写的项目。然后重写所选项目并确定是否所有数据储存器已被更新。如果它们已被更新,则确定是否已执行了所有访问请求。如果没有,则返回确定所请求的项目是在对应数据储存器中。如果它们已被全部执行,则用于更新电路的过程结束。
这仅仅是执行数据访问的一种方法,并且因当清楚的是,如前所述,如果所请求的项目在其它数据储存器之一中,则不是将其选为要重写的项目,而是可以仅仅将其留下且不重写该数据储存器中的项目,或者可替换地可以将其从该数据储存器复制到其它数据储存器,而不是从另外的数据储存器进行检索。
虽然在本文中已参照附图详细地描述了本发明的说明性实施例,但应理解的是本发明并不仅限于那些精确的实施例,并且在不脱离所附权利要求定义的本发明的范围和精神的情况下,本领域的技术人员可以对其进行各种变更和修改。例如,在不脱离本发明的范围的情况下可以进行以下从属权利要求的特征与独立权利要求的特征的各种组合。

Claims (19)

1.一种用于存储多个项目的存储装置,所述存储装置被配置为在相同时钟周期内接收用于访问相应项目的第一访问请求和第二访问请求,所述存储装置包括:
第一和第二储存器,每个储存器用于存储所述多个项目的子集,所述第一访问请求被路由到所述第一储存器且所述第二访问请求被路由到所述第二储存器;
遗漏检测电路,其用于检测其中所请求的项目未被存储在被访问储存器中的遗漏;
项目检索电路,其用于从另外的储存器中检索其访问产生遗漏的项目;
更新电路,其用于根据所述第一和第二储存器中的相应一个的访问历史选择要在所述相应一个储存器中重写的项目,所述更新电路响应于:
所述遗漏检测电路在对所述第一储存器的访问中检测到所述遗漏并响应于至少一个另外的条件而通过重写所选项目用从所述另外的储存器中检索的所述项目来更新所述第一和第二储存器二者;以及
所述遗漏检测电路在对所述第二储存器的访问中检测到所述遗漏并响应于所述至少一个另外的条件而通过重写所述所选项目用从所述另外的储存器中检索的所述项目来更新所述第一和第二储存器二者。
2.如权利要求1所述的存储装置,其中,所述更新电路被配置为识别产生所述遗漏的所述项目是否被存储在所述第一和第二储存器中的另一个中,所述至少一个另外的条件是检测到所述项目未被存储在所述第一和第二储存器中的所述另一个中。
3.如权利要求2所述的存储装置,其中,所述更新电路响应于检测到产生所述遗漏的所述项目存在于所述第一和第二储存器中的所述另一个中而从所述第一和第二储存器中的所述另一个检索所述项目并通过重写由所述更新电路所选的所述项目来将所述项目复制到所述第一和第二储存器中的所述一个。
4.如权利要求2所述的存储装置,其中,所述更新电路响应于检测到产生所述遗漏的所述项目存在于所述第一和第二储存器中的所述另一个中而选择所述项目以用于重写并根据所述第一和第二储存器中的所述一个的项目访问历史选择所述储存器中用于重写的项目,所述更新电路被配置为用从所述另外的储存器检索的所述项目重写所述所选项目。
5.如权利要求2所述的存储装置,其中,所述更新电路响应于检测到产生所述遗漏的所述项目存在于所述第一和第二储存器中的所述另一个中而不重写所述第一和第二储存器中的所述另一个中的任何项目并根据所述第一和第二储存器中的所述一个的项目访问历史来选择所述第一和第二储存器中的所述一个中用于重写的项目且重写所述所选项目。
6.如权利要求1所述的存储装置,其中,从所述另外的储存器检索的所述项目具有表示与之相关的数据的属性的属性数据,所述至少一个另外的条件包括所述属性数据,所述更新电路响应于所述属性数据不具有预定值而用所述检索的项目更新所述第二储存器和所述第一储存器,以及响应于所述属性数据具有所述预定值而不用所述检索的项目更新所述第一和第二储存器中的另一个且用所述检索的项目更新所述第一和第二储存器中的所述一个。
7.如权利要求6所述的存储装置,其中,所述第一访问请求是存储请求且所述第二访问请求是加载请求,所述第一和第二储存器中的所述一个包括所述第一存储器,所述预定值是指示与所述值相关的所述数据是只读数据的值。
8.如权利要求1所述的存储装置,所述第一和第二储存器均包括一级高速缓存且所述存储装置还包括所述另外的储存器,所述另外的储存器包括二级高速缓存。
9.如权利要求1所述的存储装置,其中,所述更新电路包括用于存储所述第一和第二储存器中的每一个的访问历史的缓冲器且所述更新电路被配置为选择最近未被访问的项目以进行重写。
10.如权利要求1所述的存储装置,其中,所述访问请求使用虚拟地址来识别所述项目的存储位置,并且所述第一和第二储存器均包括存储有虚拟地址到物理地址的多个转换的转换旁视缓冲器。
11.如权利要求1所述的存储装置,所述存储装置包括至少一个附加储存器,所述存储装置被配置为在与所述第一和第二访问请求相同的时钟周期内接收至少一个附加访问请求,所述至少一个附加访问请求被路由到所述至少一个附加储存器,所述更新电路被配置为根据所述至少一个附加储存器的访问历史来选择要在所述至少一个附加储存器中重写的项目,所述更新电路响应于所述遗漏检测电路在对所述第一储存器的访问中检测到所述遗漏并响应于所述至少一个另外的条件而通过重写所述所选项目用从所述另外的储存器检索的所述项目更新所有所述储存器。
12.一种包括用于处理数据的处理器和如权利要求1所述的存储装置的数据处理装置,其中,所述处理器被配置为在相同的时钟周期期间生成数据加载请求和数据存储请求。
13.如权利要求12所述的数据处理装置,所述数据处理装置包括所述另外的储存器,所述另外的储存器被配置为存储与每个项目相关联的属性数据。
14.一种更新存储在第一储存器和第二储存器中的项目的方法,包括步骤:
在相同时钟周期中接收访问所述第一储存器中的第一项目的第一访问请求和访问所述第二储存器中的第二项目的第二访问请求;
确定任一个访问请求是否产生其中所请求的项目未被存储在被访问储存器中的遗漏;
从另外的储存器中检索其访问产生遗漏的项目;
根据所述第一和第二储存器中的相应一个的访问历史来选择要在所述相应一个储存器中重写的项目;
响应于在对所述第一储存器的访问中检测到所述遗漏并响应于至少一个另外的条件,通过重写所选项目用从所述另外的储存器检索的所述项目更新所述第一和第二储存器;以及
响应于在对所述第二储存器的访问中检测到所述遗漏并响应于所述至少一个另外的条件,通过重写所述所选项目用从所述另外的储存器检索的所述项目更新所述第一和第二储存器。
15.如权利要求14所述的方法,包括识别产生所述遗漏的所述项目是否被存储在所述第一和第二储存器中的另一个中的另外步骤,所述至少一个另外的条件是检测到所述第一项目未被存储在所述第一和第二储存器中的所述另一个中。
16.如权利要求14所述的方法,包括响应于检测到产生所述遗漏的所述项目存在于所述第一和第二储存器中的另一个中:
从所述第一和第二储存器中的所述另一个检索所述项目;以及
通过重写由所述更新电路选择的所述项目来将所述项目复制到所述第一储存器。
17.如权利要求15所述的方法,其中,响应于检测到产生所述遗漏的所述项目存在于所述第一和第二储存器中的所述另一个中:
选择所述项目以用于重写;
根据所述第一和第二储存器中的所述一个的项目访问历史来选择所述储存器中的用于重写的项目;以及
通过重写所述所选项目用从所述另外的储存器检索的所述项目来更新所述第一和第二储存器二者。
18.如权利要求15所述的方法,其中,响应于检测到产生所述遗漏的所述项目存在于所述第一和第二储存器中的所述另一个中:
不重写所述第一和第二储存器中的所述另一个中的任何项目;以及
根据所述第一和第二储存器的项目访问历史来选择所述储存器中用于重写的项目并重写所述第一和第二储存器中的所述一个中的所述所选项目。
19.一种用于存储多个项目的存储设备,所述存储设备被配置为在相同时钟周期内接收用于访问相应项目的第一访问请求和第二访问请求,所述存储设备包括:
第一和第二储存器,每个储存器用于存储所述多个项目的子集,所述第一访问请求被路由到所述第一储存器且所述第二访问请求被路由到所述第二储存器;
遗漏检测设备,其用于检测其中所请求的项目未被存储在被访问储存器中的遗漏;
项目检索设备,其用于从另外的储存器中检索其访问产生遗漏的项目;
更新设备,其用于根据所述第一和第二储存器中的相应一个的访问历史选择要在所述相应储存器中重写的项目,所述更新设备响应于:
所述遗漏检测设备在对所述第一储存器的访问中检测到所述遗漏并响应于至少一个另外的条件而通过重写所选项目用从所述另外的储存器中检索的所述项目来更新所述第一和第二储存器;以及
所述遗漏检测设备在对所述第二储存器的访问中检测到所述遗漏并响应于所述至少一个另外的条件而通过重写所述所选项目用从所述另外的储存器中检索的所述项目来更新所述第一和第二储存器。
CN201010212478.2A 2009-06-22 2010-06-22 确定链接数据储存器中存储和重写的项目的数据存储协议 Active CN101930344B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/457,812 US8255629B2 (en) 2009-06-22 2009-06-22 Method and apparatus with data storage protocols for maintaining consistencies in parallel translation lookaside buffers
US12/457812 2009-06-22

Publications (2)

Publication Number Publication Date
CN101930344A CN101930344A (zh) 2010-12-29
CN101930344B true CN101930344B (zh) 2016-01-20

Family

ID=42471623

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201010212478.2A Active CN101930344B (zh) 2009-06-22 2010-06-22 确定链接数据储存器中存储和重写的项目的数据存储协议

Country Status (4)

Country Link
US (1) US8255629B2 (zh)
JP (1) JP5635311B2 (zh)
CN (1) CN101930344B (zh)
GB (1) GB2471372B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2496798B (en) * 2010-07-27 2016-10-12 Ibm Logical to physical address mapping in storage systems comprising solid state memory devices
CN104331377B (zh) * 2014-11-12 2018-06-26 浪潮(北京)电子信息产业有限公司 一种多核处理器系统的目录缓存管理方法
WO2016121026A1 (ja) * 2015-01-28 2016-08-04 株式会社日立製作所 ストレージ装置、計算機システム、及び、方法
US11580031B2 (en) * 2019-07-31 2023-02-14 Intel Corporation Hardware for split data translation lookaside buffers
US11860780B2 (en) 2022-01-28 2024-01-02 Pure Storage, Inc. Storage cache management

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5440710A (en) * 1994-03-08 1995-08-08 Exponential Technology, Inc. Emulation of segment bounds checking using paging with sub-page validity
US6625714B1 (en) * 1999-12-17 2003-09-23 Hewlett-Packard Development Company, L.P. Parallel distributed function translation lookaside buffer
CN1846200A (zh) * 2003-09-03 2006-10-11 先进微装置公司 在处理器中用于减少功耗的微变换检测缓冲器及微标记符

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3015528B2 (ja) * 1991-08-20 2000-03-06 株式会社東芝 アドレス変換バッファ機構
JPH08137756A (ja) * 1994-11-07 1996-05-31 Fuji Xerox Co Ltd アドレス変換バッファ機構
US5737749A (en) * 1996-05-20 1998-04-07 International Business Machines Corporation Method and system for dynamically sharing cache capacity in a microprocessor
KR100263910B1 (ko) 1998-06-16 2000-09-01 윤종용 실리콘을 함유하는 감광성 폴리머 및 이를 포함하는 레지스트조성물
KR100486240B1 (ko) * 1998-09-21 2005-06-08 삼성전자주식회사 분리된 캐쉬 메모리를 구비한 마이크로프로세서 및 메모리 액세스 방법
KR100486259B1 (ko) * 2002-09-09 2005-05-03 삼성전자주식회사 컴퓨터 시스템의 동작 속도를 향상시키는 캐쉬 구조를 가지는 프로세서 및 캐쉬 관리 방법
GB2426082B (en) * 2005-05-09 2007-08-15 Sony Comp Entertainment Europe Memory caching in data processing
US7552283B2 (en) * 2006-01-20 2009-06-23 Qualcomm Incorporated Efficient memory hierarchy management

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5440710A (en) * 1994-03-08 1995-08-08 Exponential Technology, Inc. Emulation of segment bounds checking using paging with sub-page validity
US6625714B1 (en) * 1999-12-17 2003-09-23 Hewlett-Packard Development Company, L.P. Parallel distributed function translation lookaside buffer
CN1846200A (zh) * 2003-09-03 2006-10-11 先进微装置公司 在处理器中用于减少功耗的微变换检测缓冲器及微标记符

Also Published As

Publication number Publication date
US8255629B2 (en) 2012-08-28
GB2471372B (en) 2014-07-23
GB201009937D0 (en) 2010-07-21
US20100325358A1 (en) 2010-12-23
CN101930344A (zh) 2010-12-29
JP5635311B2 (ja) 2014-12-03
GB2471372A (en) 2010-12-29
JP2011008783A (ja) 2011-01-13

Similar Documents

Publication Publication Date Title
KR102448124B1 (ko) 가상 주소들을 사용하여 액세스된 캐시
CN102498477B (zh) Tlb预取
CN100485638C (zh) 在处理器中用于减少功耗的微变换检测缓冲器及微标记符
CN108628772A (zh) 用于管理数据存储设备中的映射数据的装置和方法
US6023747A (en) Method and system for handling conflicts between cache operation requests in a data processing system
US9286221B1 (en) Heterogeneous memory system
JPH0668735B2 (ja) キヤツシユメモリ−
CN103198026A (zh) 指令高速缓存功耗降低
KR20100053540A (ko) 캐시 로킹 디바이스 및 그 방법들
US20180157601A1 (en) Apparatus and method for avoiding conflicting entries in a storage structure
US10545879B2 (en) Apparatus and method for handling access requests
CN100377117C (zh) 用于虚实地址变换及读写高速缓冲存储器的方法及装置
CN101930344B (zh) 确定链接数据储存器中存储和重写的项目的数据存储协议
CN109074313B (zh) 缓存和方法
CN103729306A (zh) 经由地址范围检查的多cpu块无效操作绕过
CN109219804A (zh) 非易失内存访问方法、装置和系统
US6606687B1 (en) Optimized hardware cleaning function for VIVT data cache
JP2007156821A (ja) キャッシュシステム及び共用2次キャッシュ
US5535360A (en) Digital computer system having an improved direct-mapped cache controller (with flag modification) for a CPU with address pipelining and method therefor
US20070266199A1 (en) Virtual Address Cache and Method for Sharing Data Stored in a Virtual Address Cache
US20110004730A1 (en) Cache memory device, processor, and control method for cache memory device
WO2006040689A1 (en) Implementation and management of moveable buffers in cache system
US6839806B2 (en) Cache system with a cache tag memory and a cache tag buffer
CN104077237A (zh) 缓冲存储器、缓冲存储器控制单元和缓冲存储器的控制方法
US7865691B2 (en) Virtual address cache and method for sharing data using a unique task identifier

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant