CN102612685A - 经由存储器高速缓存操纵的无阻碍数据传送 - Google Patents

经由存储器高速缓存操纵的无阻碍数据传送 Download PDF

Info

Publication number
CN102612685A
CN102612685A CN2010800518684A CN201080051868A CN102612685A CN 102612685 A CN102612685 A CN 102612685A CN 2010800518684 A CN2010800518684 A CN 2010800518684A CN 201080051868 A CN201080051868 A CN 201080051868A CN 102612685 A CN102612685 A CN 102612685A
Authority
CN
China
Prior art keywords
address
data
cache
speed cache
mapping
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2010800518684A
Other languages
English (en)
Other versions
CN102612685B (zh
Inventor
J.C.富勒
T.J.奥特耶斯
B.L.沃尔兴顿
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of CN102612685A publication Critical patent/CN102612685A/zh
Application granted granted Critical
Publication of CN102612685B publication Critical patent/CN102612685B/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
    • 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
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement

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

计算机系统中的高速缓存控制器被配置成管理高速缓存以便减少总线带宽的使用。高速缓存控制器从处理器接收命令。作为响应,维持高速缓存中每个块的信息的高速缓存映射被修改。高速缓存映射可以包括用于每个高速缓存块的地址、脏位、零位和优先级。地址表明主存储器中的如下地址:高速缓存块针对该地址对数据进行高速缓存。脏位表明高速缓存块中的数据是否与主存储器中在该地址的数据一致。零位表明在该地址的数据是否应当读取为默认值,而优先级指定用于驱除高速缓存块的优先级。通过操控这一映射信息,可以实施诸如移动、复制、交换、归零、去优先级化和去激活等命令。

Description

经由存储器高速缓存操纵的无阻碍数据传送
背景技术
如今的高速处理器可以执行程序代码并且可以按照比数据可从主存储器获取或存储于其中快得多的速率来处理数据。为了减少处理器等待访问存储器而花费的时间,高速存储器“高速缓存”充当在处理器与主存储器之间的媒介。高速缓存可以具有控制器和存储器部件。高速缓存存储器包含主存储器中的数据子集的副本。高速缓存控制器响应于来自处理器的存储器访问操作,并且根据何种数据在高速缓存存储器中,可以快速访问高速缓存存储器以便完成存储器操作。如果高速缓存正在维持响应存储器访问操作所必需的数据,那么相比需要直接访问主存储器的情况,高速缓存能够更快地响应于操作。
高速缓存控制器除了响应于存储器访问操作之外还维持高速缓存中的数据(有时将数据从主存储器复制到高速缓存中或者将数据从高速缓存写回到主存储器中)。高速缓存控制器使用映射来跟踪主存储器的哪些地址被“高速缓存”。例如高速缓存块(高速缓存的存储器单元)可以与主存储器中的地址关联。高速缓存控制器可以维持如下映射,该映射标识在高速缓存的块与主存储器中的地址之间的关联。当处理器发出用来识别主存储器中的地址的存储器访问操作时,高速缓存控制器可以基于映射确定是否存在与包含该地址的主存储器的一部分相关联的高速缓存存储器的块。
由于高速缓存几乎总是小于主存储器,所以高速缓存算法用来选择在高速缓存中维持主存储器的什么子集。已知各种高速缓存算法,但是每个算法通常都以增加可以使用高速缓存中的数据来完成存储器访问操作的可能性为目标。然而在实践中,高速缓存算法并不完美,并且针对非高速缓存地址的操作被接收。当接收到对非高速缓存地址的操作时,高速缓存控制器可以将数据从主存储器地址复制到高速缓存中。如果所有高速缓存存储器块已满,则高速缓存控制器可以视为通过将与那些地址关联的块中的数据改写为来自其它地址的数据来将一些地址从高速缓存去除。然后控制器可以改变映射以示出与该块中的数据对应的新地址。高速缓存算法可以设置优先级,该优先级在与高速缓存中用于容纳数据的空闲块(free blocks)相比更多数据要被高速缓存的情况下,用于确定哪些地址要保持或从高速缓存中去除。当高速缓存中的数据以这一方式替换为在主存储器中的另一地址的数据时,高速缓存视为驱除更低优先级的高速缓存地址。
存储器传送操作常规地涉及高速缓存、处理器和主存储器。存储器访问操作通常涉及到通过一个或者多个通信总线在处理器、高速缓存和主存储器之间传输数据。传送操作可以在执行软件的过程中由处理器发起。常见存储器传送操作包括复制、移动、交换和归零。
用于提高存储器传送操作的效率的其它技术同样是已知用来减少处理器的负荷的。编程输入/输出(PIO)是一种处理器可以用来控制为了完成存储器传送所需要的读取和写入操作的技术。另一技术是直接存储器访问(DMA)。DMA允许除了处理器之外的硬件控制存储器传送操作。在PIO和DMA操作中,可以通过处理器连接其上的总线传递数据,这可减缓处理器的操作,因为它的一些操作也可能需要访问处理器总线并且将争用总线带宽。
发明内容
高速缓存控制器可以提高计算机系统性能,该高速缓存控制器可以实施由来自处理器的命令发起的一个或者多个存储器操作。在一些实施例中,可以通过更改在高速缓存块与主存储器块之间的映射和/或在高速缓存之间交换数据来实施这些存储器操作。可以以使用很少或者未使用总线带宽和处理器周期的方式实施这样的存储器操作。高速缓存控制器可以执行的存储器操作可以包括移动、复制、归零、去优先级化和/或无效化。
在一些实施例中并且对于一些存储器操作,高速缓存控制器独立于高速缓存数据的操纵而操纵高速缓存映射。例如高速缓存控制器可以接收将数据从源地址移向目的地地址的命令。如果在高速缓存块中维持源地址处的数据,则可以改变映射使得高速缓存块与目的地地址而不是源地址关联。在高速缓存中维持的数据的副本可以传播到主存储器作为移动操作的部分或者可以在以后时间(比如在驱除目的地地址时或者作为惰性写入)传播到主存储器。
在一些实施例中并且对于一些存储器操作,高速缓存控制器执行命令而未将高速缓存中的块重新映射到主存储器中的地址,而是更改维持高速缓存中数据的方式以求提高效率。例如“无效化”命令可以向高速缓存控制器指示随后将不访问在特定主存储器地址存储的数据,从而无需执行用于维持在该数据的高速缓存版本与数据在主存储器中的副本之间的一致性(coherency)的操作。“无效化”命令也可以指示为了维持该数据的副本而分配的任何高速缓存存储器块可以用于其它数据。
前文是所附权利要求限定的本发明的非限制概述。
附图说明
附图并非意于按比例绘制。在附图中,在各种图中图示的每个相同或者接近相同的部件由相似标号表示。为求简洁,可以不在每幅图中标注每个部件。在附图中:
图1A是根据本发明一些实施例的计算机系统的框图;
图1B是根据本发明一些实施例的计算机系统的框图;
图1C是根据本发明一些实施例的计算机系统的框图;
图2A是用于管理计算机系统中的存储器的方法的流程图;
图2B是用于处理计算机系统中的复制命令的方法的流程图;
图2C是用于处理计算机系统中的交换命令的方法的流程图;
图3A-3D图示高速缓存、总线和主存储器在处理示例复制命令期间的状态序列;
图4A-4D图示高速缓存、总线和主存储器在处理示例交换命令期间的状态序列;
图5A是用于处理计算机系统中的去优先级化命令的方法的流程图;
图5B和5C图示高速缓存在处理示例去优先级化命令期间的状态序列;
图6A是用于处理计算机系统中的无效化命令的方法的流程图;
图6B-6D图示高速缓存在处理示例无效化命令期间的状态序列;
图7A是用于处理计算机系统中的归零命令的方法的流程图;
图7B是用于处理计算机系统中的归零命令的替代方法的流程图;
图7C是用于处理计算机系统中的归零命令的替代方法的流程图;并且
图8A-8C图示高速缓存、总线和主存储器在根据图7C中所示方法处理示例归零命令期间的状态序列。
具体实施方式
发明人已经认识和理解可以用改进的高速缓存控制器和高速缓存操作方法来避免用于执行存储器传送操作的可用机制的弊端。除了向处理器施加负荷之外,使用编程输入/输出(PIO)的常规架构还通常消耗可以连接处理器的总线上的总线带宽。消耗处理器总线带宽限制了处理器总线可用于传送针对处理器将执行的其它操作的数据,从而以根据这里描述的部件和技术可以避免的方式导致延迟并且降低性能。
直接存储器访问(DMA)也具有可以避免的若干限制和缺点。DMA传送也可以消耗总线带宽。此外,当传送跨越某地址范围的数据时,在那些地址的数据可以处于不一致状态直至整个传送完成,从而需要针对整个传送的等待时间。因而,可以通过减少对DMA操作的需要来提高性能。
发明人已经认识和理解对高速缓存映射的适当操纵可以减少在计算机系统中执行的常规存储器操作(比如DMA传送)的次数。可以实现时间、处理器负荷和/或处理器总线带宽利用率的相应减少。在一些方面中,对高速缓存映射的操纵可以涉及到重新映射与主存储器中的第一地址范围关联的高速缓存块以与主存储器中的第二地址范围关联。重新映射可以减少、消除或者延迟总线带宽的使用。高速缓存控制器可以用对于处理器而言透明的方式来管理这样的操纵,使得处理器周期的使用也被减少或者消除。
因而高速缓存控制器可以设置有接口,通过该接口其可以从处理器接收命令。这些命令可以由在处理器上执行的程序生成并且可以用信号通知将执行的更高级存储器操作(包括可能另外已经作为DMA操作而执行的类型的存储器操作)。高速缓存控制器可适于通过操纵高速缓存映射来执行这些命令。这样的命令可以在命令的执行未直接阻碍在其上执行操作的处理器执行进一步指令这一意义上“无阻碍”。这些操作也无需间接阻碍处理器的进一步操作,因为它们在被执行时无需消耗处理器总线上的带宽。
可以用这一方式实施的命令的实例包括将数据块从主存储器中的一个块移动或者复制到另一主存储器块。这样的命令的另一实例是“归零”命令。
发明人已经进一步认识和理解被提供用于接收执行重新映射操作的命令的高速缓存控制器附加地或者可选地还可以接收如下命令,这些命令以也实现计算机系统的更高效操作的方式更改高速缓存控制器的操作。在处理器上执行的软件部件有能力表明不再处理或者不可能访问主存储器中的某些地址范围可以增强用于优先级化高速缓存数据的高速缓存算法。高速缓存控制器可以配置有用于从处理器接收命令(比如用于无效化或者去优先级化(deprioritize)一个或者多个地址的命令)的接口。
图1A示出计算机系统100的示例框图,其中可以使用改进的存储器管理技术。计算机系统100包括一组处理器110、主存储器120和高速缓存130。处理器110和高速缓存130可以由处理器总线160连通耦合。存储器总线165可以连通耦合高速缓存130和主存储器120。存储器总线165被图示为与处理器总线160分离,从而表明可以在存储器总线165上传送数据而并不消耗处理器总线160上的带宽。然而可以用任何适当方式连通耦合处理器110、主存储器120和高速缓存130。
处理器110可以包括任何适当数目的处理器。例如处理器110可以包括一个或者两个或者更多处理器。这里示出N个处理器;即处理器111、112、…和113。处理器110可以包括本领域已知的任何处理器或者任何适当处理设备。例如而非限制,处理器110可以包括中央处理单元(CPU)、数字信号处理器(DSP)、控制器、可寻址控制器、通用或者专用微处理器、微控制器、可寻址微处理器、可编程处理器、可编程控制器、专用处理器、专用控制器或者任何其它适当的处理设备中的任一个。
主存储器120可以存储数据,且将基于在处理器110上执行的程序对该数据进行一个或多个存储操作。主存储器120可以是如本领域已知的计算机可读存储介质或者任何适当类型的计算机可读存储介质。例如而非限制,主存储器120可以是任何适当类型的随机存取存储器(RAM)。
存储器120中的数据的用途或者意义对于本发明而言并不关键,并且无论主存储器120中的数据的用途或者意义如何都可以对它进行本文所描述的存储器操作。例如主存储器120中的数据可以构成如下软件模块,这些软件模块包含由处理器执行时执行所需功能的计算机可执行指令。然而主存储器120中的数据可以可选地或者附加地代表在执行计算机可执行指令时访问的参数或者其它信息。在这一情况下,计算机系统100可以包含附加存储器(包括用于存储计算机可执行指令的其它存储器)。
主存储器120具有用于存储由存储器地址121索引的数据的存储器块122。每个存储器块可以存储多个信息位。存储器块存储的信息位的数量对于本发明而言并不关键。块可以是称为字或者页面的位组。不过,块可以是任何适当大小并且可以用任何适当方式来标识。例如块可以由起始地址和块大小或者由起始地址和结束地址标识。在一些实施例中,计算机系统可以对预定大小的存储器块操作。在这一情况下,当将对存储器块执行操作时,单个地址可足以标识块。另外应当理解主存储器块无需以任何方式对应于用来实施主存储器120的部件的结构。
在所示实例中,主存储器具有P个地址121,这些地址标识可以对其进行如本文所描述的操作的P个块122。P可以是任何适当值。在一些实施例中,可以在主存储器120上存储的数据总量可以是可以维持于高速缓存130中的数量的十倍到一百倍。然而可以使用任何适当大小的高速缓存和主存储器。
高速缓存130充当在处理器110与主存储器120之间的媒介。处理器110发出的访问存储器位置的指令可以使用维持在高速缓存130中的数据来实施或者可以更改维持在高速缓存130中的数据。因而高速缓存130可以执行如本领域已知的一个或者多个数据高速缓存功能。附加地,高速缓存130还可以包括如下文更具体描述的响应于附加命令的控制器。
这里高速缓存130被图示为通过处理器总线160可由处理器110访问的共享高速缓存。然而高速缓存130可以是用于具体处理器的高速缓存。尽管将计算机系统100图示为具有一个高速缓存,但是一些实施例可以具有多个高速缓存。例如每个处理器110也可以包括专用处理器高速缓存。下文参照图1B中所示计算机系统101讨论具有多个高速缓存的一些实施例。
高速缓存130包括高速缓存控制器140和高速缓存存储器150。这些部件的实施对于本发明而言并不关键。例如高速缓存控制器140和高速缓存存储器150可以集成在相同集成电路(IC)上或者在通过适当通信介质连接的单独IC上。
高速缓存控制器140管理包括高速缓存存储器150的高速缓存130。高速缓存控制器140可以是执行用于管理高速缓存130的计算机可执行指令的处理器形式。这些命令可以烧制为高速缓存控制器140中的微代码或者在任何其它适当位置或者以任何其它适当格式存储。高速缓存控制器140对指令的执行可以响应于通过总线160或者总线165接收的命令。例如高速缓存控制器140可以响应于从处理器110发出且通过处理器总线160接收的存储器传送命令。
高速缓存控制器140执行的计算机可执行指令可以包括用于响应于接收的命令执行功能的一个或者多个软件模块。模块可以包括映射模块141、替换模块143和归零模块145。映射模块141可以配置成控制高速缓存存储器150的高速缓存块151到主存储器120的地址121的映射。替换模块143可以实施用于确定高速缓存地址的替换优先级的高速缓存算法。归零模块145可以用来将在一个或者多个地址的数据设置成默认值。模块可以附加地或者可选地包括用于执行管理高速缓存130的方法的任何适当模块。在一些实施例中,模块可以实施为微代码。
高速缓存存储器150包括用于存储数据的适当数目的高速缓存块151。高速缓存控制器140可以管理这些块中存储的数据使得高速缓存块151可以各自包含来自主存储器某部分的数据的高速缓存版本。在所示实例中,高速缓存存储器150包括M个高速缓存块151。M可以是任何适当值。
高速缓存130也可以包括用于维持高速缓存中的数据与主存储器120中的位置之间的关联的映射156。为了简化示例,高速缓存中的每个块视为包含与主存储器块中相同数量的数据。在这一实施例中,通过标识主存储器中的与高速缓存块关联的块来表明关联。然而应当认识到高速缓存块与主存储器块之间无需具有一对一关系并且任何适当机制可以用来形成高速缓存中的数据与主存储器中的数据之间的关联。
映射156可以由高速缓存控制器140管理。在所示实例中示出映射器156作为高速缓存存储器150的部分。然而构成映射156的信息存储于何处并不关键。例如这一信息可以存储于高速缓存130内的集中数据结构中或者可以用任何适当方式分布于一个或者多个存储器设备中存储的多个数据结构。
对于高速缓存存储器150中的每个高速缓存块,映射156可以包含块ID 152、映射地址153、脏位(dirty bit)154、零位155和驱除优先级157。块ID 152标识其它参数对应的在高速缓存中的块。块ID 152可以存储于可写存储器、只读存储器中或者可以根据高速缓存存储器150的硬件设计来推断。
映射地址153将高速缓存块与主存储器120中的存储器块关联。映射地址153可以通过块地址或者以任何其它适当方式标识主存储器120中的对应块。为了简化示例,假设每个高速缓存块可以存储的数据量等于每个存储器块存储的大小。本领域技术人员将理解可以在高速缓存块在大小上不同于主存储器120中的存储器块时使用已知映射技术。
映射156也可以包括用于每个高速缓存块的一致性标记或者“脏位”154。脏位154表明高速缓存块中存储的数据与主存储器120中的对应块中的数据一致(“未脏”)或者不一致(“脏”)。当修改高速缓存中的数据而不是通过从主存储器120中的对应存储器块复制时,脏位154可以设置用来表明“脏”数据,而在向主存储器120中的对应存储器块中写入高速缓存中的数据时可以清除脏位154。映射156中的用于所有高速缓存块151的脏位可以统称为一致性存储器。
映射156也可以包括用于每个高速缓存块的归零标记或者“零位”155。当主存储器120中的对应块将被设置成默认值(比如零)时可以设置零位155。映射156中的用于所有高速缓存块151的归零标记可以统称为归零存储器。
映射156也可以包括用于每个高速缓存块的驱除优先级157。驱除优先级157可以指定用于在来自主存储器120的非高速缓存块将被高速缓存时从高速缓存块驱除数据的优先级。低优先级表明高速缓存块存储的数据更可能被存储器控制器140驱除并且替换为由不同地址索引的主存储器块中存储的数据。在一些实施例中,仅针对如下那些高速缓存块显式指明驱除优先级157:这些高速缓存块高速缓存在待驱除的地址的数据。
计算机系统100也可以包括在图1A中未示出的任何其它适当计算机部件。例如而非限制,计算机系统100可以包括外设、其它处理器和存储器、输入/输出设备(比如显示器)、键盘和鼠标以及任何其它类型的适当计算机部件。
图1B示出计算机系统101的示例框图,该框图图示本文所描述的技术可以应用于无论何种架构的计算机系统。在这一实例中,处理器110A通过高速缓存130A访问主存储器120,而处理器110B通过高速缓存130B访问主存储器120。高速缓存一致性部件170维持高速缓存130A与130B之间的一致性。例如当处理器110A进行写入操作时,高速缓存一致性部件170向高速缓存130B传达操作。高速缓存130B然后可以更新在写入地址的数据的任何高速缓存版本以维持数据一致性。在一些实施例中,处理器110A是高速缓存130A集成到其中的单个处理器。
图1C是计算机系统102的示例框图,该框图图示本文所描述的技术可以应用于无论何种架构的计算机系统。计算机系统102包括处理器110、高速缓存130和主存储器120。处理器110和高速缓存130由处理器总线160连通耦合。然而总线160可以由计算机系统102中的其它设备(比如DMA控制器180和设备181)共享。存储器总线165连通耦合高速缓存130和主存储器120。
处理器110可以执行软件应用114和操作系统(OS)115。OS 115可以管理计算机系统102的活动和资源共享。OS 115可以提供各种功能并且通过各种部件管理计算机系统102。例如而非限制,这些部件可以包括动态链接库(例如动态链接库)、编程接口、部件对象模型(COM)、全局唯一标识符、注册表项或者OS 115的任何唯一可标识部分。
OS 115可以例如通过从在计算机系统102上执行的软件应用114的功能调用来为应用114提供功能。在一些实施例中,OS 115包括编程接口116。编程接口116可以允许软件应用114请求存储器传送和高速缓存管理操作。在一些实施例中,本文所描述的存储器操作可以作为操作系统的部分被实施,但是在操作系统内的实施方式并非本发明的要求。
在一些实施例中,向软件应用114分配虚拟地址空间。虚拟地址空间可以由OS 115映射到主存储器120的物理地址。编程接口116可以配置成从软件应用114接收按照虚拟地址指定对存储器的操纵的命令并且将虚拟地址转译成主存储器120的物理地址。然而逻辑到物理地址的转译在系统内出现的点并非本发明的限制。在一些实施例中,例如高速缓存控制器140可以管理虚拟到物理地址的转换。在一些实施例中,编程接口116是应用编程接口(API)。
高速缓存控制器130接收和执行代表软件应用114发送的来自编程接口116的命令。高速缓存控制器140使用映射156确定在物理地址的数据是否存储于高速缓存存储器150的块中以及存储于何处。例如高速缓存控制器140可以搜索映射156中的映射地址以寻找物理地址。如果在映射156中发现物理地址,则高速缓存控制器140可以确定在物理地址的数据由对应的高速缓存块来高速缓存。
已经描述了示例计算机系统,参照以下方法和实例描述根据一些实施例的计算机系统的操作。这里取存储器地址为物理地址。本领域技术人员将理解在指定虚拟地址时可以例如用本领域已知的方式执行向物理地址的转换。
图2A是用于管理计算机系统中的存储器的方法的流程图。例如可以通过操作图1A中所示计算机系统100的高速缓存控制器140来执行方法200。然而可以用任何适当方式实施方法200。
在步骤201,高速缓存控制器建立从计算机系统的高速缓存中的存储器块和计算机系统的主存储器中的存储器地址的映射。在一些实施例中,通过将如下映射地址与每个高速缓存块一起存储来建立映射,该映射地址标识存储器中的与该块对应的地址。映射地址可以用任何适当方式标识主存储器中的地址。例如在全相联的高速缓存中,当主存储器的每个地址可以映射到高速缓存中的任何块时,高速缓存可以存储全地址作为映射地址。在直接映射的高速缓存中,当每个地址仅可以映射到高速缓存中的确切一个块时,该映射仅可以存储足够的位以区分那些映射到高速缓存中具体块的地址。例如当地址的最低有效位为可以写入到高速缓存块的所有地址所共用时可以漏掉(drop)这些位。相似技术可以用来将高速缓存块映射到X路集合相联高速缓存中的地址,其中主存储器的每个地址可以映射到X个高速缓存块,其中X是任何正整数。本文的讨论适用于全相联高速缓存,但是本领域技术人员将理解实施例可以用任何适当类型的高速缓存来实施。
在步骤201建立映射可以包括建立用于每个高速缓存块的脏位、零位和驱除优先级中的任一个。在一些实施例中,建立如下映射,该映射针对每个高速缓存块维持映射地址、脏位、零位和驱除优先级。然而建立的映射可以具有任何适当条目。在一些实施例中,高速缓存控制器使用如本领域已知的技术在一段时间内响应于存储器访问操作,因而可以建立映射。
在步骤202,高速缓存控制器接收表明修改映射的命令。例如,这样的命令可以由操作系统响应于专门调用功能的应用程序而生成或者由操作系统通过一个或者多个应用采取的一个或者多个动作检测高速缓存控制器可以高效执行操作而生成。接收的命令可以是任何适当类型的命令。例如而非限制,接收的命令可以是存储器传送操作命令(比如复制、移动、交换命令或者归零命令)。作为另一实例,接收的命令可以是如下操作提示:该操作提示允许高速缓存控制器更高效地管理它的映射(比如去优先级化或者无效化命令)。然而可以接收任何适当类型的命令。在一些实施例中,从计算机系统的处理器接收命令。例如命令可以作为软件在处理器上执行的结果而被接收。
在步骤203,响应于命令,高速缓存控制器修改高速缓存映射。例如在建立的映射包括映射地址的一个实施例中,可以在步骤203更新起初映射到主存储器中的第一地址的高速缓存块以将其映射到主存储器中的第二地址而未改变高速缓存块中存储的数据。作为另一实例,在建立的映射包括驱除优先级的实施例中,可以修改高速缓存块的驱除优先级以去优先级化高速缓存数据。在步骤203之后,方法200结束。
图2B是用于在接收复制命令时管理计算机系统中的存储器的方法220的流程图。复制命令指示将数据从在源地址的块复制到在目的地地址的块。在一些实施例中,方法220是方法200的步骤202和203的一个具体实施例。可以通过操作高速缓存控制器(如例如图1A中所示计算机系统100的高速缓存控制器140)在计算机系统中执行方法220。
在步骤221,高速缓存控制器接收复制命令。复制命令可以用任何适当方式(比如通过指定其中存储待复制的数据的源地址、源地址集或者源地址范围)指定用于复制的数据源。也可以用任何适当方式(比如目的地地址、目的地地址集或者目的地地址范围可以指定数据的目的地)指定用于复制的目的地。
针对每个源和目的地地址对执行步骤222至225。可以针对每个地址对同时、依次或者以任何适当方式执行这些步骤。
在步骤222,高速缓存控制器确定在源地址的数据当前是否映射到高速缓存的块。高速缓存控制器可以例如通过校验高速缓存中的任何块是否具有与源地址对应的映射地址来做出确定。
如果在步骤222的确定为否,则方法220继续步骤223,其中在源地址的数据从主存储器加载到高速缓存的块中。在将源数据加载到高速缓存块中时,可以设置用于块的映射地址以标识源地址。任何适当高速缓存算法可以用来标识应当向高速缓存中的哪个块写入源数据。然而在一些实施例中,如果块已经映射到目的地地址,则可以选择该块用于替换。如果选择,则可以无效化该块。当无效化而不是驱除高速缓存中的块时,高速缓存块中的数据即使为“脏”也不被回写到主存储器。随后参照图6A-6D讨论无效化地址。
如果在步骤222的确定为是,则方法220继续步骤224。在步骤224,方法220预备高速缓存以更新映射地址。当在源地址对数据进行高速缓存的高速缓存块为脏时,该方法将脏数据从高速缓存块回写到主存储器中的在源地址的块。如果数据未脏,则在步骤224不执行回写。
该方法也可以校验目的地地址是否映射到高速缓存的块。如果是这样,则可以更新映射以表明该块不再与目的地地址关联。以这一方式清除映射防止两个单独高速缓存块映射到相同目的地地址。无论源数据是否加载在块223都可以从映射清除目的地块。
方法220从步骤223和224继续步骤225。在步骤225,该方法改变映射使得起初映射到源地址的块被映射到目的地地址。在更新映射地址之后,高速缓存的正常操作将造成对高速缓存中的复制数据执行针对与目的地地址相关联的位置的存储器访问指令。
在步骤226可以任选地执行附加的更新步骤。在完成步骤225时,高速缓存可以包含如下块,该块包含用于主存储器中的目的地地址的数据。然而主存储器中的数据可能与高速缓存中的数据不匹配。相反地,正确数据可以存储于与源地址关联的主存储器中,但是该数据可能不被高速缓存。因而更新后操作可以将数据从高速缓存写入到目的地地址或者将数据从主存储器中的源地址复制到高速缓存中。
这些步骤可以在任何适当时间执行并且可以使用存储器总线165(图1)在高速缓存控制器的指引之下执行。因而,完成这些步骤无需通过需要处理器操作或者处理器总线带宽来阻碍处理器。
在一些实施例中,可以将数据作为复制操作的部分从高速缓存块写入到主存储器的目的地地址。然而在一些实施例中,可以推迟回写直至回写将另外作为高速缓存操作的部分而出现。在这样的场景中,可以针对与目的地地址关联的高速缓存块设置脏位以表明数据为脏。在这样的实施例中,可以例如在从高速缓存驱除目的地块时或者作为惰性写入而执行向主存储器的回写。惰性写入是从高速缓存向主存储器的异步写入。在一些实施例中,在高速缓存和/或存储器总线另外空闲之时执行惰性写入。因此可以在复制命令在功能上完成之后执行惰性写入若干秒。在另一实施例中,未保持脏位,并且总是在驱除时执行回写。
类似地,如果希望在高速缓存中重新加载源数据,则可以在任何适当时间向高速缓存中加载来自源地址的数据。在高速缓存控制器的控制之下可以使用存储器总线重新加载,使得无需阻碍处理器。然而来自源目的地的数据直至再次访问该数据才可以重新加载到高速缓存中。
本领域技术人员将理解方法220的变化可以用于处理移动命令。由于移动命令不同于复制,意味着在源地址的数据不再有效。因而在步骤226的更新后操作无需要求向高速缓存中重新加载源数据。相反而言,就数据保持于高速缓存中这一方面而言,在步骤226的更新后操作可能需要无效化保持该数据的高速缓存块。在一些实施例中,在发出移动命令的处理器上或者另外在计算机系统100内执行的存储器管理软件可以保证在源地址的数据并未被随后访问。
可以在一些系统中被支持的另一无阻碍操作是交换命令。图2C是用于在接收交换命令时管理计算机系统中的存储器的方法240的流程图。顾名思义,在处理交换命令时,在第一地址存储的数据与在第二地址存储的数据交换。在一些实施例中,方法240是方法200的步骤202和203的一个具体实施例。可以通过操作高速缓存控制器(如例如图1A中所示计算机系统100的高速缓存控制器140)在计算机系统中执行方法240。
在步骤241,高速缓存控制器接收交换命令。交换命令指定地址、地址集或者地址范围作为其中存储待交换的第一数据的第一源(“源A”)。类似地,地址、地址集或者地址范围可以指定其中存储待交换的第二数据的第二源(“源B”)。然而可以用任何适当方式指定源A和源B地址。当命令指定多于一个的源A和源B地址时,可以用任何适当方式确定待交换的地址对。
针对待交换的每对源地址执行步骤242至247。可以针对每个地址对同时、依次或者以任何适当方式执行这些步骤。
在步骤242,高速缓存控制器确定高速缓存当前是否映射源A地址。高速缓存控制器可以例如通过校验高速缓存中的任何块是否具有与源A地址对应的映射地址来做出确定。在步骤243针对源B地址做出相似确定。
如果在步骤242的确定为否,则方法240继续步骤244。在步骤244,将在源A地址的数据从主存储器加载到高速缓存的块中。在将在源A地址的数据加载到高速缓存块时,设置用于高速缓存块的映射地址以标识源A地址。
类似地,如果在步骤243的确定为否,则方法240继续步骤245,其中将在源B地址的数据从主存储器加载到高速缓存的块中。在将在源B地址的数据加载到高速缓存块中时,设置用于高速缓存块的映射地址以标识源B地址。
一旦确认来自源A和源B的数据在高速缓存中,方法240就继续步骤246,其中改变高速缓存映射使得针对相应高速缓存块的映射地址被交换。具体而言,针对在源A地址存储数据的高速缓存块的映射地址从源A地址改变成源B地址。类似地,针对在源B地址存储数据的块的映射地址从源B地址改变成源A地址。映射地址的交换可以同时进行或者作为原子操作的部分而进行以防止单个地址(即源A或者源B地址)会被两个高速缓存块有歧义地映射的可能性。
在步骤247可以任选地执行附加更新步骤。如上文结合步骤226(图2B)描述的那样,更新后操作可以涉及到将数据从高速缓存回写到主存储器。这里可以回写与源A和源B关联的块。然而这些块中的零个、一个或者两个可以作为交换操作的部分被回写。可以推迟这些回写操作中的一些或者所有操作直至驱除或者其它适当时间。因而,在步骤247的处理可以简单地需要设置用于一个或者两个块的脏位。然而在一些实施例中,如果回写将另外作为高速缓存的部分正常操作而出现,则可以采取非明确步骤以控制回写。
已经分别描述用于处理复制和交换命令的方法220和240,与每个操作关联的映射的操纵实例各参照图3A-3D和图4A-4D给出。
图3A-3D示出高速缓存130、存储器总线165和主存储器120在示例复制操作期间的状态序列。在每幅图中,高速缓存存储器由包含三列的表表示。应当理解映射被概念性地图示并且任何适当组织都可以用来存储所示信息。
在这一实例中,列301和302表示高速缓存映射的部分中的条目。具体而言,映射的列301标识高速缓存块,而列302标识相应块被映射至的主存储器120地址。列303图示在与标识的高速缓存块对应的每个高速缓存块中存储的数据。高速缓存映射也可以存储未示出的附加信息(例如脏位)。
主存储器120也由列状表表示。列304标识主存储器中的地址,而列305提供在与该地址对应的存储器块中存储的数据。
图3A图示高速缓存130、存储器总线165和主存储器120的初始状态。在这一实例中,高速缓存130的块0被映射到主存储器120的地址6并且存储数据“TUV”;块1映射到主存储器120的地址4并且存储数据“MNO”;块2映射到主存储器120的地址5并且存储数据“PQR”;而块3映射到主存储器120的地址3并且存储数据“JKL”。在所示实例中,高速缓存块未脏。
在这一实例中,高速缓存控制器接收指示将数据从地址2复制到地址5的复制命令(见图2B中步骤221)。在这一实例中,源地址(地址2)并非存储于高速缓存130中(见步骤222)。
如图3B中所示,从高速缓存驱除地址5以腾出空间用于从源地址复制的数据。可以用任何适当方式选择待驱除的地址。例如高速缓存算法可以用来优先级化高速缓存块并且指明用于驱除的块。在这一实例中,选择地址5用于从块2的驱除。由于块2未脏,所以未执行向主存储器120的回写。源数据通过总线165复制到高速缓存130的块2中(见步骤223)。用于块2的映射地址设置成地址2,但是可以不在所有实施例中执行这一步骤。
图3C图示更新高速缓存映射。具体而言,块2从地址2重新映射到地址5(见步骤225)。
在更新映射时,也可以执行任选步骤(比如在步骤226中描述的步骤)。图3D图示将数据从块2写入到块映射至的主存储器120中的存储器地址(即地址5)的任选步骤。可以例如在驱除时或者作为惰性写入的部分而完成回写。
图4A-4D示出高速缓存130、存储器总线165和主存储器120在示例交换操作期间的状态序列。以与图3A-3D中相似的方式将高速缓存存储器和主存储器120的状态用表格表示。
图4A图示高速缓存130、存储器总线165和主存储器120的初始状态。在这一实例中,高速缓存130的块0映射到主存储器120的地址2并且存储数据“GHI”;块1映射到主存储器120的地址4并且存储数据“MNO”;块2映射到主存储器120的地址5并且存储数据“PQR”;而块3映射到主存储器120的地址3并且存储数据“JKL”。在所示实例中,高速缓存块未脏。
在这一实例中,高速缓存控制器接收指示将在地址0的数据与在地址6的数据交换的交换命令(见图2C中步骤241)。如图4A中所示,两个源地址起初均未存储于高速缓存130中。
如图4B中所示,一旦确定高速缓存130未映射源地址0(见步骤242),就将在地址0的数据从主存储器120复制到高速缓存130中(见步骤244)。类似地,一旦确定高速缓存130未映射源地址6(见步骤243),就将在地址6的数据从主存储器120复制到高速缓存130中(见步骤245)。可以用任何适当方式选择在源地址的数据被复制到的高速缓存130的块。例如高速缓存算法可以已经将块1和2标识为在高速缓存中具有最低优先级。图4B图示数据通过存储器总线165从主存储器移向高速缓存。
图4C图示更新高速缓存映射(见步骤246)。具体而言,块1从地址0重新映射到地址6。类似地,块2从地址6重新映射到地址0。
在更新映射时,也可以执行任选步骤(比如在方法240的步骤247中描述的步骤)。图4D图示将数据从高速缓存130回写到主存储器120的任选步骤。具体而言,根据重新映射,将高速缓存块1中的数据复制到主存储器120中的具有地址6的块,而将块2复制到主存储器120中的具有地址0的块。
除了复制和交换命令之外,高速缓存控制器还可以配置成接收“去优先级化”命令。去优先级化命令表明作为驱除候选的一个或者多个地址。例如当新地址将被高速缓存时,高速缓存算法可以选择去优先级化的地址用于驱除以腾出高速缓存中的空间。当处理完成并且预计不再访问在特定地址或者地址集的数据时,软件应用可以使用去优先级化。一些标准高速缓存算法的试探法可以另外将这些地址视为具有高优先级,因为它们表示最近使用的地址。去优先级化命令允许硬件更智能地使用高速缓存空间。
图5A是高速缓存控制器执行的用于处理去优先级化命令的方法500的流程图。可以通过操作高速缓存控制器(如例如图1A中所示计算机系统100的高速缓存控制器140)在计算机系统中执行方法500。
在步骤501接收去优先级化命令。去优先级化命令可以指定地址、地址集或者地址范围为待去优先级化的地址。然而可以用任何适当方式指定待去优先级化的地址。
在步骤503,去优先级化由去优先级化命令表明的地址。去优先级化地址可以用任何适当方式来去优先级化。在一些实施例中与映射到去优先级化地址的高速缓存块关联的驱除优先级被更新以反映地址的去优先级化状态。高速缓存算法可以管理如何去优先级化地址。例如在一些实施例中,映射到去优先级化地址的高速缓存块在高速缓存中的其它块之前被驱除。可以用任何适当方式选择驱除去优先级化地址的顺序。在一些实施例中,在映射到去优先级化地址的脏块之前驱除映射到去优先级化地址的块且未脏的块。在步骤503之后,方法500结束。
图5B和5C图示在根据方法500处理去优先级化命令之前和之后在高速缓存130内的映射。如图5B中所示,在这一实例中,映射156由包含四列的表表示。在列510中给出驱除优先级,在列511中标识高速缓存块,在列512中示出映射地址,而在列513中示出块是否为脏。在这一实例中,高速缓存算法用优先级号对每个块排序。具有最低优先级号的块映射的地址是第一个被驱除的地址。然而应当理解可以用任何适当方式指定优先级。例如优先级可以简单地是二进制(例如优先级化、去优先级化)。
如图5B中所示,在这一实例中,块0起初具有优先级“1”并且包含映射到地址5的未脏数据;块1具有优先级“2”并且包含映射到地址3的脏数据;块2具有优先级“0”并且包含映射到地址4的脏数据;而块3具有优先级“3”并且包含映射到地址2的未脏数据。
假设高速缓存控制器接收用于指定范围为0至3的去优先级化地址的去优先级化命令(见图5A的步骤501)。回顾高速缓存哪些地址一般对于在计算机系统的处理器上执行的软件而言透明。从列512可见,在地址范围0-3中,在这一实例中实际上仅地址2和3被高速缓存。
图5C图示高速缓存算法在处理去优先级化命令之后的高速缓存130。分别高速缓存地址2和3的块1和3已经移向最低优先级。在这一实例中,向脏的块1给予比未脏的块3更高的优先级。首先驱除未脏的地址可以进一步推迟向高速缓存回写。在这一实例中,高速缓存算法维持非去优先级化地址的相对优先级。具体而言,块0具有比块2更高的优先级。
高速缓存控制器可以接收的另一命令是无效化命令。无效化命令表明在命令指定的地址的数据过时了并且可以被驱除而无回写。软件应用可以使用无效化命令以避免消耗总线带宽以及用于短寿命数据的高速缓存空间。
图6A是高速缓存控制器执行的用于处理无效化命令的方法600的流程图。可以通过操作高速缓存控制器(如例如图1A中所示计算机系统100的高速缓存控制器140)在计算机系统中执行方法600。
在步骤601,高速缓存控制器接收无效化命令。无效化命令可以指定待无效化的一个或者多个地址。可以用与在去优先级化命令中相似的方式表明地址。然而可以用任何适当方式指定地址。
在步骤603,将无效化命令表明的地址标记为“未脏”。如上文讨论的那样,未脏的地址未回写到主存储器。因此,无效化命令可以减少使用存储器总线带宽和/或处理延迟。
在步骤605,任选地对地址进行去优先级化。可以用与在方法500的步骤503(图5A)描述的方式相似的方式完成去优先级化。例如可以向无效化的块给予最低可能优先级,使得在高速缓存控制器接下来需要块用于高速缓存新数据时将它们驱除。然而在一些可选实施例中,无效化的块可以立即被无效化。在步骤605,方法600结束。
图6B-6D图示高速缓存130在接收无效化命令时的实例操作。如图6B中所示,在这一实例中,映射156由包含四列的表表示。在列610中给出优先级,在列611中标识高速缓存块,在列612中示出映射地址,而在列613中示出块是否为脏。
图6B图示高速缓存130在接收无效化命令之前的状态。如图6B中所示,块0具有优先级“3”并且包含映射到地址2的脏数据,块1具有优先级“2”并且包含映射到地址4的脏数据,块2具有优先级“1”并且包含映射到地址5的未脏数据,而块3具有优先级“0”并且包含映射到地址3的未脏数据。
假设接收到指定地址2将被无效化的无效化命令(见图6A中步骤601)。如图6C中所示,更新映射到地址2的高速缓存块(即块0)以表明该块未脏(见步骤603)。
图6D图示地址2被去优先级化之后的高速缓存130。具体而言,地址2已经重新优先级化成最低优先级(在这一实例中为优先级0)。也已经相应改变其它高速缓存地址的优先级。
高速缓存控制器可以接收的另一命令是归零命令。归零命令将指定地址范围的数据设置成默认值,例如零。可以用任何适当方式实施归零命令。
图7A是根据一些实施例的用于处理归零命令的由高速缓存控制器执行的方法700的流程图。可以通过操作高速缓存控制器(如例如图1A中所示计算机系统100的高速缓存控制器140)在计算机系统中执行方法700。
在步骤701,接收归零命令。归零命令可以指定在一个或者多个地址的数据设置成默认值。在一些实施例中,该值可以由归零命令、另一命令指定或者可以固定。
在步骤703,将归零命令指定的地址标记为“归零”。可以用任何适当方式将地址标记为归零。在一些实施例中,地址可以映射到高速缓存块,并且可以标记与每个地址对应的零位(见图1A中的零位155)。零位可以表明在该地址的数据应当读取为具有默认值而不是高速缓存块存储的实际值。在这样的实施例中,高速缓存控制器可以在访问归零值时提供零值,无论该访问是从处理器的读取的部分还是向主存储器的回写的部分。
在步骤705,可以任选地执行附加更新步骤。例如如果从高速缓存驱除包含归零地址的块,则可以将默认值写入到主存储器中的在映射地址的块。
图7B是根据一些可选实施例的用于处理归零命令的由高速缓存控制器执行的方法740的流程图。使用地址零列表来归零的高速缓存可以执行方法740。高速缓存控制器可以响应于对在零列表中的地址的数据的读取操作来供应默认值。
具体而言,高速缓存用于映射的信息可以包括全局零列表而不是用于每个高速缓存块的零位。零列表可以包括高速缓存块并未另外高速缓存的地址。如果随后向零列表中的地址写入,则可以从零列表去除它。在地址可以在零列表中并且还映射到高速缓存块的实施例中,高速缓存控制器可以在确定是否在搜索映射地址之前对地址进行高速缓存时搜索零列表。
在步骤741,高速缓存控制器接收归零命令。归零命令指定待归零的一个或者多个地址。例如地址可以指定为范围。
在步骤742,任选地对映射到待归零的地址的任何高速缓存块无效化。
在步骤743,向零列表添加地址。地址可以在零列表中被个别指定、由一个或者多个范围指定或者以任何适当方式或者方式组合来指定。
在步骤726,可以任选地执行任何附加更新后步骤(比如将零惰性写入到零列表上的主存储器位置)。在步骤726之后,方法740结束。
图7C是根据一些可选实施例的用于处理归零命令的方法720的流程图。方法720设置用于映射到归零地址的高速缓存块的归零位。随后读取在该地址的数据将返回默认值直至向该地址写入并且重置归零位。
在步骤721,接收归零命令。归零命令可以指定数据将被归零的一个或者多个地址。在一些实施例中,归零命令还指定默认值。针对数据将被归零的每个地址执行步骤722-726。可以同时、依次或者以任何适当方式针对每个地址执行步骤。
在步骤722,确定数据将被归零的地址是否被高速缓存。
当地址被高速缓存时,方法720继续下文描述的步骤725。
当地址未被高速缓存时,方法720继续步骤723,其中如果无可用高速缓存块,则从高速缓存驱除最低优先级地址。
在步骤724,在步骤723驱除的高速缓存块的映射地址被更新为数据将被归零的地址。
在步骤725,映射到数据将被归零的地址的高速缓存块中的所有位置可以设置成默认值(比如零)。可以通过将数据实际写入到块中来执行这一步骤。可选地,可以与移动操作相似地执行这一步骤。然而数据源可能是先前填充有零值的高速缓存块,而不是与主存储器中源地址相关联的移动数据。例如由高速缓存控制器可以在另外空闲之时创建这样的预归零高速缓存块。
在步骤726,可以任选地执行任何附加更新步骤(比如上文在移动操作之后讨论的步骤)。方法720在数据将被归零的所有地址被处理之后结束。
图8A-8C图示高速缓存130、存储器总线165和主存储器120在根据方法700已经接收和处理归零命令时的状态实例。
图8A图示高速缓存130和主存储器120的初始状态。在每幅图中,高速缓存存储器由包含五列的表表示。列801至804表示高速缓存映射的部分中的条目。具体而言,列801标识高速缓存块,列802指定是否设置归零位,列803指定块是否为脏,而列804指定映射地址。列805提供在与标识的高速缓存块对应的每个高速缓存块中存储的数据。主存储器120由地址列806和数据列807表示。默认值808也由高速缓存130存储。默认值808可以“硬接线”到高速缓存130中或者可以是通过命令可设置的。默认值808是在读取列802中标记为归零的任何块时读取的值。
如图8A中所示,起初高速缓存块0映射到地址2、为脏并且存储数据“ADG”;块1映射到地址4、为脏并且存储数据“BEH”;块2映射到地址5、未脏并且存储数据“PQR”;而块3映射到地址3、未脏并且存储数据“JKL”。在这一实例中,默认值808固定为数据“000”。
假设高速缓存130接收指定地址1-3作为数据将被归零的地址的归零命令。如图8A中所示,仅地址2和3被高速缓存。
因而地址1被加载到高速缓存130中。图8B示出根据适当高速缓存算法从块2驱除地址5。块2重新映射到地址1。注意无需从主存储器120实际读取来自地址1的数据,因为,无论如何,归零操作改写数据。
在高速缓存当前映射每个地址1-3时,为块0、2和3(分别映射到地址2、1和3)设置零位。在一些实施例中,块如图8B中所示也标记为脏。然而在一些实施例中,可以根据归零位的用途理解“脏”。
图8C图示从高速缓存130向主存储器120的回写。这可以例如在从高速缓存驱除地址或者执行惰性写入操作时执行。这里假设尚未随后向地址1-3写入。默认值808(即“000”)被写入到主存储器120中的与相应地址对应的存储器块。例如如果向地址1-3之一写入,则将重置零位、设置脏位(如果先前未设置)并且将数据写入到映射的高速缓存块。
已经这样描述了本发明至少一个实施例的若干方面,将理解本领域技术人员将容易想到各种变更、修改和改进。
这样的更改、修改和改进旨在作为本公开内容的部分并且旨在在本发明的精神实质和范围内。因而前文描述和附图仅为举例。
可以用诸多方式中的任何方式实施本发明的上述实施例。例如实施例可以使用硬件、软件或者其组合来实施。当用软件实施时,可以在任何适当处理器或者无论是在单个计算机中提供还是分布于多个计算机之间的处理器汇集上执行软件代码。
另外应当理解可以用诸多形式中的任何形式(比如架装型计算机、桌面型计算机、膝上型计算机或者写字板计算机)实施计算机。此外,计算机可以嵌入于一般不被视为计算机而是具有适当处理能力的设备(包括个人数字助理(PDA)、智能电话或者任何其它适当便携或者固定电子设备)中。
计算机也可以具有一个或者多个输入和输出设备。这些设备可以用来呈现用户界面以及其它用途。可以用来提供用户界面的输出设备的实例包括用于可视呈现输出的打印机或者显示屏以及用于可听呈现输出的扬声器或者其它声音生成设备。可以用于用户界面的输入设备的实例包括键盘和指示设备(比如鼠标、触板和数字化写字板)。作为另一实例,计算机可以通过语音识别或者以其它可听形式接收输入信息。
这样的计算机可以以任何适当形式由一个或者多个网络(包括局域网或者广域网(比如企业网或者因特网))互连。这样的网络可以基于任何适当技术并且可以根据任何适当协议操作并且可以包括无线网络、有线网络或者光纤网络。
这里概括的各种方法或者过程也可以编码为可在运用多种操作系统或者平台中的任一操作系统或者平台的一个或者多个处理器上执行的软件。此外,这样的软件还可以使用多个适当编程语言和/或编程或者脚本工具中的任一种来编写,并且也可以编译为在主机或者虚拟机上执行的可执行机器语言代码或者中间代码。
就这一点而言,本发明可以实施为用一个或者多个如下程序编码的一种计算机可读介质(或者多种计算机可读介质)(例如计算机存储器、一个或者多个软盘、压缩盘、光盘、磁带、闪存、在现场可编程门阵列或者其它半导体器件中的电路配置或者其它有形计算机存储介质),所述程序在一个或者多个计算机或者其它处理器上执行时执行实施上文讨论的本发明各种实施例的方法。该一种或者多种计算机可读介质可以是可移植的,从而使得存储于其上的一个或者多个程序可以加载到一个或者多个不同计算机或者其它处理器上以实施如上文讨论的本发明的各种方面。
术语“程序”或者“软件”这里在一般意义上用来指代任何类型的如下计算机代码或者计算机可执行指令集,该计算机代码或者计算机可执行指令集可以用来对计算机或者其它处理器编程以实施如上文讨论的本发明的各种方面。此外还应当理解,根据这一实施例的一个方面,在被执行时执行本发明方法的一个或者多个计算机程序无需驻留于单个计算机或者处理器上,而是可以以模块方式分布于多个不同计算机或者处理器之中以实施本发明的各种方面。
计算机可执行指令可以是以诸多形式(比如一个或者多个计算机或者其它设备执行的程序模块)。一般而言,程序模块包括执行特定任务或者实施特定抽象数据类型的例程、程序、对象、部件、数据结构等。通常可以在各种实施例中随意地组合或者分布程序模块的功能。
数据结构也可以用任何适当形式存储于计算机可读介质中。为了简化示例,可以示出数据结构具有通过在数据结构中的位置来相关的字段。同样可以通过向用于字段的存储分配传达字段之间关系的计算机可读介质中的位置来实现这样的关系。然而任何适当机制都可以用来在数据结构的字段中的信息之间建立关系(包括通过使用指针、标签或者在数据元素之间建立关系的其它机制)。
可以单独、组合或者在未在前文中描述的实施例中具体讨论的多种布置中使用本发明的各种方面,因此它的应用并不限于在前文描述中阐述或者在附图中图示的细节和部件布置。例如在一个实施例中描述的方面可以用任何方式与在其它实施例中描述的方面组合。
本发明也可以具体化为一种方法(已经提供该方法的实例)。可以用任何适当方式对作为该方法的部分而执行的动作进行排序。因而可以构造如下实施例,在这些实施例中按照与所示顺序不同的如下顺序执行动作,该顺序可以包括同时执行即使在示例实施例中表示为依次动作的一些动作。
在权利要求中使用诸如“第一”、“第二”、“第三”等序数术语来修饰权利要求要素本身并未意味着一个权利要求要素较另一权利要求要素而言的任何优先级、优越性或者顺序或者执行方法动作的时间顺序,而是仅用作如下标记,这些标记用于区分具有某个名称的一个权利要求要素与具有相同名称(若非使用序数术语)的另一要素以区分权利要求要素。
这里使用的措词和术语也用于描述而不应视为限制。这里使用“包括”或者“具有”、“包含”、“涉及到”及其变体意味着涵盖后文列举的项目及其等效项目以及附加项目。

Claims (15)

1. 一种管理计算机系统中的存储器的方法,所述方法包括:
操作高速缓存控制器以执行以下动作:
    为高速缓存中的多个高速缓存块建立映射;
    从处理器接收表明所述映射的修改的命令;并且
    响应于所述命令修改所述映射。
2. 根据权利要求1所述的方法,其中:
对于所述多个高速缓存块中的每个高速缓存块,所述映射包括表明主存储器中的与所述高速缓存块关联的地址的映射地址;
所述命令是指示将第一数据从所述主存储器中的第一地址复制到所述主存储器中的第二地址的复制命令;并且
响应于所述命令修改所述映射包括:改变用于存储所述第一数据的高速缓存块的映射地址,所述映射地址从所述第一地址改变成所述第二地址。
3. 根据权利要求2所述的方法,其中操作所述高速缓存控制器还包括:确定所述第一数据当前未存储于所述高速缓存中,并且响应于所述复制命令将所述第一数据从所述主存储器的具有所述第一地址的存储器块复制到所述高速缓存块。
4. 根据权利要求2所述的方法,其中操作所述高速缓存控制器还包括将所述第一数据从所述高速缓存块回写到所述主存储器的具有所述第二地址的存储器块。
5. 根据权利要求1所述的方法,其中:
对于所述多个高速缓存块中的每个高速缓存块,所述映射包括映射地址,所述映射地址表明主存储器中的与所述高速缓存块关联的地址;
所述命令是存储器交换命令,并且响应于所述命令修改所述映射包括:
    首先将用于第一高速缓存块的第一映射地址从第一地址改变成第二地址;并且
    其次将用于第二高速缓存块的第二映射地址从所述第二地址改变成所述第一地址。
6. 根据权利要求5所述的方法,其中在所述高速缓存的相同操作周期期间执行所述第一改变和所述第二改变。
7. 一种用于计算机系统的高速缓存,所述高速缓存包括:
高速缓存存储器,其具有用于存储数据的多个高速缓存块,所述多个高速缓存块包括第一高速缓存块;
高速缓存映射存储器,其用于存储从所述高速缓存块到所述计算机系统的主存储器的地址的多个关联,每个关联标识相应高速缓存块映射至的地址;以及
高速缓存控制器,其具有映射模块,所述映射模块适于响应于接收的命令通过将用于所述第一高速缓存块的第一关联从标识所述主存储器中的第一地址改变成标识所述主存储器中的第二地址来修改所述高速缓存映射存储器中存储的所述关联,所述第一高速缓存块存储第一数据。
8. 根据权利要求7所述的高速缓存,其中所述高速缓存控制器包括处理单元和计算机可执行指令,并且所述映射模块包括所述处理单元可执行的微代码。
9. 根据权利要求8所述的高速缓存,其中所述高速缓存控制器还包括替换模块,其适于响应于第二接收命令来指定用于多个高速缓存块之中的第二高速缓存块的替换优先级。
10. 根据权利要求9所述的高速缓存,还包括:
一致性存储器,用于存储多个一致性标记,每个一致性标记表明相应高速缓存块中存储的数据是否与存储在所述主存储器中由所述高速缓存块的相应关联所表明的地址的数据一致,并且
当所述第二接收命令是无效化命令时,所述替换模块还配置成设置用于所述第二高速缓存块的表明所述第二个块中的数据一致的一致性标记。
11. 根据权利要求7所述的高速缓存,其中所述高速缓存控制器还包括:归零模块,其配置成响应于归零命令来指定第二高速缓存块中的数据设置成默认值。
12. 根据权利要求11所述的高速缓存,还包括:
归零存储器,其用于存储多个归零标记,每个归零标记表明相应高速缓存块中存储的数据是否将被读取为由所述块存储或者所述默认值,
其中响应于所述归零命令,所述归零模块设置用于所述第二高速缓存块的归零标记以表明所述第二高速缓存块中的所述数据应当被读取为所述默认值。
13. 根据权利要求8所述的高速缓存,其中:
所述高速缓存控制器接收的所述命令是复制命令,其指示将所述第一数据从所述主存储器中具有所述第一地址的存储器块复制到所述主存储器中具有所述第二地址的存储器块;并且
所述高速缓存控制器还配置成:当所述高速缓存存储器未存储所述第一数据时,将所述第一数据从所述主存储器中具有所述第一地址的所述存储器块加载到所述第一高速缓存块中。
14. 根据权利要求7所述的高速缓存,其被集成到还包括通信总线和处理器的计算机系统中,其中所述高速缓存控制器所接收的命令是通过所述通信总线从所述处理器接收的。
15. 根据权利要求7所述的高速缓存,其中所述高速缓存控制器还适于执行以下动作:
从处理器接收命令,所述命令表明所述主存储器的第二地址引用的第二数据将被复制以便由所述主存储器的第三地址引用;
确定所述第二地址引用的所述第二数据是否存储于所述高速缓存的块中;
当确定所述第二数据未存储于所述高速缓存中时,将所述第二数据从所述主存储器的所述第二地址加载到所述高速缓存中;并且
将所述高速缓存中存储所述第二数据的块重新映射到所述主存储器的所述第三地址。
CN201080051868.4A 2009-11-16 2010-10-18 经由存储器高速缓存操纵的无阻碍数据传送 Active CN102612685B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US12/619,571 US8495299B2 (en) 2009-11-16 2009-11-16 Non-blocking data transfer via memory cache manipulation
US12/619,571 2009-11-16
US12/619571 2009-11-16
PCT/US2010/053050 WO2011059638A2 (en) 2009-11-16 2010-10-18 Non-blocking data transfer via memory cache manipulation

Publications (2)

Publication Number Publication Date
CN102612685A true CN102612685A (zh) 2012-07-25
CN102612685B CN102612685B (zh) 2013-11-06

Family

ID=43992296

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201080051868.4A Active CN102612685B (zh) 2009-11-16 2010-10-18 经由存储器高速缓存操纵的无阻碍数据传送

Country Status (3)

Country Link
US (2) US8495299B2 (zh)
CN (1) CN102612685B (zh)
WO (1) WO2011059638A2 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103714034A (zh) * 2013-12-26 2014-04-09 中国船舶重工集团公司第七0九研究所 片上系统(soc)应用于个人计算机(pc)系统
CN105612499A (zh) * 2013-10-29 2016-05-25 华中科技大学 混合高速缓存管理
CN107250995A (zh) * 2014-11-25 2017-10-13 领特投资两合有限公司 存储器管理设备
CN109313605A (zh) * 2016-06-24 2019-02-05 高通股份有限公司 基于处理器的系统中的存储器中的经压缩的存储器行的基于优先级的存储和存取
CN110322979A (zh) * 2019-07-25 2019-10-11 美核电气(济南)股份有限公司 基于fpga的核电站数字控制计算机系统核心处理单元

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8799553B2 (en) 2010-04-13 2014-08-05 Apple Inc. Memory controller mapping on-the-fly
US9385915B2 (en) 2012-11-30 2016-07-05 Netapp, Inc. Dynamic caching technique for adaptively controlling data block copies in a distributed data processing system
US20140165197A1 (en) * 2012-12-06 2014-06-12 Empire Technology Development, Llc Malware attack prevention using block code permutation
US9390010B2 (en) * 2012-12-14 2016-07-12 Intel Corporation Cache management
KR101567134B1 (ko) * 2013-03-29 2015-11-09 이화여자대학교 산학협력단 비휘발성 메모리에 기반하여 저널링 기능을 통합한 버퍼 캐시 장치, 저널링 파일 시스템 및 저널링 방법
US9684603B2 (en) * 2015-01-22 2017-06-20 Empire Technology Development Llc Memory initialization using cache state
US9356602B1 (en) * 2015-05-14 2016-05-31 Xilinx, Inc. Management of memory resources in a programmable integrated circuit
KR102384344B1 (ko) * 2015-06-03 2022-04-07 삼성전자주식회사 모바일 장치 및 모바일 장치의 동작 방법
US10203888B2 (en) 2015-12-18 2019-02-12 Intel Corporation Technologies for performing a data copy operation on a data storage device with a power-fail-safe data structure
US10169232B2 (en) 2016-02-19 2019-01-01 Seagate Technology Llc Associative and atomic write-back caching system and method for storage subsystem
US10120806B2 (en) * 2016-06-27 2018-11-06 Intel Corporation Multi-level system memory with near memory scrubbing based on predicted far memory idle time
CN108388524A (zh) * 2016-12-21 2018-08-10 伊姆西Ip控股有限责任公司 用于缓存数据的方法和设备
US10126964B2 (en) 2017-03-24 2018-11-13 Seagate Technology Llc Hardware based map acceleration using forward and reverse cache tables
US10140215B1 (en) 2017-05-26 2018-11-27 Seagate Technology Llc Low overhead mapping for highly sequential data
US10140027B1 (en) 2017-05-26 2018-11-27 Seagate Technology Llc Data transfers with adaptively adjusted polling times
US10613985B2 (en) 2017-07-06 2020-04-07 Seagate Technology Llc Buffer management in a data storage device wherein a bit indicating whether data is in cache is reset after updating forward table with physical address of non-volatile memory and jettisoning the data from the cache
US10620870B2 (en) 2017-12-08 2020-04-14 Intel Corporation Data storage device with bytewise copy
US10956070B2 (en) 2018-12-11 2021-03-23 International Business Machines Corporation Zeroing a memory block without processor caching
US11360704B2 (en) 2018-12-21 2022-06-14 Micron Technology, Inc. Multiplexed signal development in a memory device
US11176042B2 (en) 2019-05-21 2021-11-16 Arm Limited Method and apparatus for architectural cache transaction logging
US11237960B2 (en) * 2019-05-21 2022-02-01 Arm Limited Method and apparatus for asynchronous memory write-back in a data processing system

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4819154A (en) * 1982-12-09 1989-04-04 Sequoia Systems, Inc. Memory back up system with one cache memory and two physically separated main memories
US20020087815A1 (en) * 2000-12-30 2002-07-04 Arimilli Ravi Kumar Microprocessor reservation mechanism for a hashed address system
US20020161972A1 (en) * 2001-04-30 2002-10-31 Talagala Nisha D. Data storage array employing block checksums and dynamic striping
US20030227801A1 (en) * 2002-03-11 2003-12-11 Stmicroelectronics S.R.L. Semiconductor memory with self-refresh capability
US20050015658A1 (en) * 2003-07-15 2005-01-20 Ofir Zohar Redundant manager for a storage system
CN1617113A (zh) * 2003-11-13 2005-05-18 国际商业机器公司 向物理内存分配虚拟内存的方法、存储控制器和计算机系统
US20070271416A1 (en) * 2006-05-17 2007-11-22 Muhammad Ahmed Method and system for maximum residency replacement of cache memory
US7356647B1 (en) * 2005-08-23 2008-04-08 Unisys Corporation Cache with integrated capability to write out entire cache

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0435475B1 (en) 1989-12-22 1996-02-07 Digital Equipment Corporation High-performance frame buffer and cache memory system
US5502828A (en) 1992-12-18 1996-03-26 Advanced Micro Devices, Inc. Reducing memory access in a multi-cache multiprocessing environment with each cache mapped into different areas of main memory to avoid contention
US5781923A (en) 1996-05-28 1998-07-14 Hewlett-Packard Company Adding a field to the cache tag in a computer system to indicate byte ordering
US5809548A (en) 1996-08-30 1998-09-15 International Business Machines Corporation System and method for zeroing pages with cache line invalidate instructions in an LRU system having data cache with time tags
US6598128B1 (en) 1999-10-01 2003-07-22 Hitachi, Ltd. Microprocessor having improved memory management unit and cache memory
US6546453B1 (en) 2000-08-31 2003-04-08 Compaq Information Technologies Group, L.P. Proprammable DRAM address mapping mechanism
US6711650B1 (en) 2002-11-07 2004-03-23 International Business Machines Corporation Method and apparatus for accelerating input/output processing using cache injections

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4819154A (en) * 1982-12-09 1989-04-04 Sequoia Systems, Inc. Memory back up system with one cache memory and two physically separated main memories
US20020087815A1 (en) * 2000-12-30 2002-07-04 Arimilli Ravi Kumar Microprocessor reservation mechanism for a hashed address system
US20020161972A1 (en) * 2001-04-30 2002-10-31 Talagala Nisha D. Data storage array employing block checksums and dynamic striping
US20030227801A1 (en) * 2002-03-11 2003-12-11 Stmicroelectronics S.R.L. Semiconductor memory with self-refresh capability
US20050015658A1 (en) * 2003-07-15 2005-01-20 Ofir Zohar Redundant manager for a storage system
CN1617113A (zh) * 2003-11-13 2005-05-18 国际商业机器公司 向物理内存分配虚拟内存的方法、存储控制器和计算机系统
US7356647B1 (en) * 2005-08-23 2008-04-08 Unisys Corporation Cache with integrated capability to write out entire cache
US20070271416A1 (en) * 2006-05-17 2007-11-22 Muhammad Ahmed Method and system for maximum residency replacement of cache memory

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105612499A (zh) * 2013-10-29 2016-05-25 华中科技大学 混合高速缓存管理
CN105612499B (zh) * 2013-10-29 2018-11-13 华中科技大学 混合高速缓存管理
CN103714034A (zh) * 2013-12-26 2014-04-09 中国船舶重工集团公司第七0九研究所 片上系统(soc)应用于个人计算机(pc)系统
CN107250995A (zh) * 2014-11-25 2017-10-13 领特投资两合有限公司 存储器管理设备
CN107250995B (zh) * 2014-11-25 2021-11-16 领特投资两合有限公司 存储器管理设备
CN109313605A (zh) * 2016-06-24 2019-02-05 高通股份有限公司 基于处理器的系统中的存储器中的经压缩的存储器行的基于优先级的存储和存取
CN110322979A (zh) * 2019-07-25 2019-10-11 美核电气(济南)股份有限公司 基于fpga的核电站数字控制计算机系统核心处理单元
CN110322979B (zh) * 2019-07-25 2024-01-30 美核电气(济南)股份有限公司 基于fpga的核电站数字控制计算机系统核心处理单元

Also Published As

Publication number Publication date
US20110119451A1 (en) 2011-05-19
US20130346692A1 (en) 2013-12-26
US8495299B2 (en) 2013-07-23
WO2011059638A3 (en) 2011-08-18
WO2011059638A2 (en) 2011-05-19
CN102612685B (zh) 2013-11-06
US8812817B2 (en) 2014-08-19

Similar Documents

Publication Publication Date Title
CN102612685B (zh) 经由存储器高速缓存操纵的无阻碍数据传送
CN101784993B (zh) 使用闪存作为存储器的设备及其操作方法
CN102483719B (zh) 基于块的非透明高速缓存
CN103597451B (zh) 用于高可用性的存储器镜像和冗余生成
EP3382557B1 (en) Method and apparatus for persistently caching storage data in a page cache
CN101243396B (zh) 用于在虚拟化环境中支持通用串行总线装置的方法和设备
CN104050112A (zh) 用于标记需要写回持久存储的非事务代码区的开头和结束的指令
CN1227594C (zh) 管理多处理器系统中虚拟化的物理存储器的方法和系统
CN102332290A (zh) 用来管理和存取闪存模块的控制器
CN102985910A (zh) 对无用存储单元收集的gpu支持
WO2004046920A2 (en) Processor cache memory as ram for execution of boot code
CN103946812A (zh) 用于实现多级别存储器分级体系的设备和方法
KR20050079210A (ko) 메모리 카드 및 반도체 장치
CN109952567B (zh) 用于旁通高级dram存储器控制器的内部高速缓存的方法和装置
KR20070075640A (ko) 요구 페이징 기법을 적용한 시스템에서 페이지 교체 수행시간을 단축시키는 방법 및 장치
US20080126683A1 (en) Memory system
CN1489057A (zh) 存储控制器和处理器中管理虚拟化物理存储器方法和系统
US11500572B2 (en) Method of optimizing performance of a data storage system
US11016904B2 (en) Storage device for performing map scheduling and electronic device including the same
Davis Modern DRAM architectures
US11947821B2 (en) Methods and systems for managing an accelerator's primary storage unit
US20050268026A1 (en) Memory card, semiconductor device, and method of controlling semiconductor memory
CN100405295C (zh) 用于提供原地执行功能的系统和方法
CN113805791A (zh) 由存储设备向主机传送数据重定位信息以提高系统性能
US20190324868A1 (en) Backup portion of persistent memory

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
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150507

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150507

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.