CN107506315B - 存储控制器 - Google Patents

存储控制器 Download PDF

Info

Publication number
CN107506315B
CN107506315B CN201710445774.9A CN201710445774A CN107506315B CN 107506315 B CN107506315 B CN 107506315B CN 201710445774 A CN201710445774 A CN 201710445774A CN 107506315 B CN107506315 B CN 107506315B
Authority
CN
China
Prior art keywords
policy
partition
controller
entry
victim
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
CN201710445774.9A
Other languages
English (en)
Other versions
CN107506315A (zh
Inventor
A·D·图恩
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
ARM 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 ARM Ltd filed Critical ARM Ltd
Publication of CN107506315A publication Critical patent/CN107506315A/zh
Application granted granted Critical
Publication of CN107506315B publication Critical patent/CN107506315B/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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • 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/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/122Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
    • 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
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • 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
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • G06F12/127Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning using additional replacement algorithms
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/70Details relating to dynamic memory management

Abstract

描述了一种存储控制器,该存储控制器具有条目的阵列,每个条目与一个或多个分区中的分区相关联,其中该控制器包括被配置为识别条目的分区标识符并基于或响应于分区标识符而对条目应用策略的逻辑。

Description

存储控制器
技术领域
本技术涉及存储中的替换。更具体地,本技术涉及在分区(partitioned)存储中的替换(诸如在分区高速缓存中的高速缓存替换)。
背景技术
高速缓存随机存取存储器(RAM)是硅芯片上的昂贵资源,并且共享高速缓存通常提供RAM的最佳利用。如果在多个同时运行的应用或线程之间共享高速缓存,则分区限制了破坏性干扰、提供了服务质量的保证并且使效用最大化。
需要灵活的分区或重新分区来支持多个使用情况或系统模式。例如,在移动平台中,异质(heterogeneous)半导体知识产权核心可以共享高速缓存,但具有不同的服务质量要求,并且,如果高速缓存没有被分区,那么将会相互干扰。受益于高速缓存分区的系统的示例是:联网应用中的实时线程和尽力(best effort)线程;服务器应用中的虚拟机;汽车应用中的实时线程和安全关键线程;以及包括中央处理器单元(CPU)和图形处理器单元(GPU)的那些系统。
高速缓存分区有利于使高速缓存的效用最大化。传统上,高速缓存分区是通过约束放置来完成的,例如路分区。
基于控制高速缓存行替换的分区对于通过约束放置的分区而言是优选的,因为它允许对分区尺寸的细粒度控制、不需要降低关联性,并且允许更容易的重新调整尺寸。
一些高速缓存替换策略试图通过在颠簸和重用行之间插入处于不同优先级的行来对高速缓存进行分区。它们不能以服务质量和无干扰为目的而对高速缓存进行分区。
发明内容
本技术寻求提供相对于现有技术的改进。
根据第一种技术,提供了存储控制器,该控制器具有条目的阵列,每个条目与一个或多个分区中的分区相关联,其中该控制器包括被配置为识别条目的分区标识符并基于或响应于分区标识符而对条目应用策略的逻辑。
根据第二种技术,提供了一种用于控制分区的存储阵列的方法,该分区的存储阵列包括一条或多条路,每一路包括一个或多个条目,每个条目与分区相关联,该方法包括:从条目的集合中确定与该集合中的每个条目相关联的相应分区;对该集合中的每个条目应用对应于与每个条目相关联的分区的相应策略;基于或响应于对于每个条目所应用的相应策略从该集合中选择受害者。
附图说明
将参考附图描述实施例,其中:
图1是实施例的包括受害者选择单元的控制器的示意图;
图2是实施例的包括分区策略单元的图1的受害者选择单元的示意图;
图3是根据实施例的图2的分区策略单元的示意图;以及
图4是实施例的高速缓存控制器处理的方法图。
具体实施方式
图1示意性地示出了示例控制器10,该控制器在本说明性示例中是具有相关联的标签阵列18的高速缓存控制器,标签阵列18包括多条路,其中每条路包括用于存储标签字的被索引条目(行或块)。
在本说明性示例中,标签阵列18被描绘为具有路0-路3的四路结构,但是可以实现为两个、三个或任何数量的路。因此,还将理解的是,标签阵列可以具有某些关联性,并且可以是例如集合关联,或者可以由其它合适的布置(诸如,在标签阵列中的多个探针)来提供关联性。
标签阵列18中的每个标签字包括标识符(例如,位)、标签值(标签)、分区ID值(P)和替换权重值(wt)。标签字可以具有其它标识符,诸如“脏”位或有效位。
标签值被用于验证具有传入请求的标签值的标签字。
替换权重值被用于确定标签字是应当被保持在高速缓存中还是应当被驱逐(即,变成受害者)。
分区ID值对应于与标签字相关联的分区。分区对于本领域技术人员是已知的。特别是在标签和数据被去耦合的高速缓存中,分区可以被定义为仅在标签上工作,而不具有相关联的数据。这些示例是监视器分区(诸如实用监视器),它估计不同策略或不同旁路比的功效,而不需要消耗大量标签。重新编程这些策略的参数来帮助找到最佳设置或者当被监视的策略变成真正的策略时可能是有用的。
高速缓存控制器10还包括:更新队列12;更新队列多路复用器14;读取/写入多路复用器16;比较器20;受害者选择单元22;以及数据阵列控制器25。
更新队列12用于接收用于写入标签阵列18的RAM写入请求S1。更新队列12包括多个条目,每个条目包括对应于标签阵列18中的标签的标签字段(标签)、对应于标签阵列18的索引的索引字段(索引),对应于标签阵列18的路之一的路字段(路)。每个条目还可以包括分区ID(未示出)或替换权重或要写回到标签的任何其它信息。
提供更新队列多路复用器14是为了从更新队列12中选择条目,例如通过被示为“路0/1/2/3/arb”的仲裁器,选择响应于RAM写入请求S1而写入哪一路。
在本说明性示例中,S2是RAM读取请求信号,该信号被用来将索引值(描绘为H1)提供给前两路路0和路1并将索引值(描绘为H2)提供给另外两路路2和路3。在一些实施例中,H1和H2可以包括从RAM读取请求的索引导出的散列值。
在本说明性实施例中,提供了对应于每一路的读取/写入多路复用器16,用于基于接收到RAM读取还是写入请求信号选择(例如使用被示为“R/W arb”的仲裁器)是将标签字从更新队列12写入到标签阵列18中的被索引位置,还是从标签阵列18中的被索引位置读取标签字。在替代实施例中,可以为所有路提供单个多路复用器。
当所选择的路中的标签与读取请求标签匹配(高速缓存命中)时,比较器20被用于为RAM读取请求选择其中一路。如果没有匹配,那么发生缺失,并且将由传入的请求中的索引引用的集合中的条目作为替换候补标签字(下文中称为“替换候补”)提供给受害者选择单元22。
因此,将看到多路复用器16和比较器20是用于从标签阵列18中被索引位置集合中选择替换候补集合的访问逻辑。
受害者选择单元22基于例如如下讨论的替换候补的分区ID和其它信息从一个或多个替换候补中选择条目(下文中称为“受害者标签字”)。
在说明性示例中,受害者选择单元22具有相关联的编程接口23,该接口可以被配置为生成用于配置受害者选择单元22的一个或多个配置输入S3,例如为了修改其受害者选择功能(例如,参数/策略)。
将认识到,高速缓存控制器10可以包括相关联的数据阵列(未示出),数据阵列具有对应于标签阵列18中的标签字条目的数据条目。因此,提供数据阵列控制器25来与这样的相关联的数据阵列进行通信(S4),以适当地将数据写回到存储器(例如,如果是脏的话)或者从更高级存储器提取数据用于写入相关联的数据阵列。
图2更详细地描绘了受害者选择单元22,其中受害者选择单元22包括:多个分区策略单元24#N(其中N是整数);全局策略单元26(可以没有或有多个);受害者选择器28;以及附加的受害者/提取队列29,以允许例如预取。每个分区策略单元24#N与特定分区(从对其提供的替换候补的分区ID确定的分区)相关联。
此外,每个分区策略单元24#N被配置为对具有对应分区ID的替换候补应用一个或多个高速缓存策略,然后用于针对属于该分区的每个替换候补确定调整后的替换权重S24。
在图2中描绘了三个分区策略单元24#0、24#1和24#2,但是在其它实施例中可以针对多至N个分区或多至M个高速缓存策略(其中M也是整数)实现更少或更多数量的分区单元。
去往在图2中描绘的每个分区策略单元24#N的所选择的输入信号包括:来自所有替换候补的分区ID S6和替换权重S7;命中路S8(如果有的话);以及请求S9(可以是总线上的命令(诸如特定类型的相干读取或写入),或者是其起源的信息(诸如请求地址、请求类型输入和请求逻辑处理器ID(LPID)输入))。
来自在图2中描绘的分区策略单元24#N的所选择的输出信号包括:调整后的替换权重S24;更新后的分区S5B;以及更新后的权重S5C。
将注意到,虽然一些高速缓存策略(例如,高速缓存替换策略)仅调整关于“缺失”的替换权重,但是当存在命中时可以更新这样的策略(例如,在最近最少使用策略中),由此向更新队列(图2中未示出)提供更新后的权重S5C,来自该更新队列的更新后的权重将被用来更新标签阵列(图2中未示出)中对应的替换权重值。
更新后的分区信号S5B可以被用来更新更新队列12中所选择的条目的分区。例如,当第一处理器将标签字写入标签阵列时,第二处理器开始使用该标签字,S5B可以被用来更新标签字的分区,使其与第二处理器的分区相关联。一旦与更新后的分区相关联,它就将开始以更新后的分区的策略运行。
全局策略单元26用于根据一个或多个全局策略(例如,节能策略,从而全局策略与选择写入存储器的最功率高效的条目相关)应用全局权重S26来使用调整功能27(例如,乘法器)进一步调整调整后的替换权重S24。
因此,虽然分区策略单元24#N仅调整与特定分区相关联的替换候补的权重,但是全局策略单元26可选地调整与一个或多个分区和/或分区子集相关联的替换候补的权重。
全局权重S26被馈送到调整功能27,以进一步调整来自每个分区策略单元24#N的调整后的替换权重,以便于向受害者选择器28提供第二调整后的权重S27(下文中称为“受害者权重”)。在实施例中,可以存在对调整后的替换权重S24的零调整,因此S27可以与S24完全一致或基本相同。
如将理解的,全局策略单元26可以是可编程的,并且可以适当地修改它的被用来调整调整后的替换权重的相关联的一个或多个策略。
受害者选择器28从替换候补的集合中选择受害者标签字。例如,受害者选择器28比较来自每个分区策略单元24#N的受害者权重S27,以确定受害者标签字,并且还识别具有该受害者标签字的路(受害者路)。
在一个示例中,将具有拥有最低受害者权重S27的受害者标签字的路作为受害者路。受害者选择器28将受害者路作为S5A馈送回到更新队列12,使得更新队列12中新标签的具体位置将得到由受害者路和索引确定的标签阵列18中的位置(如图1中所示)。
在一些示例中,受害者选择器28还将受害者标签、索引和路馈送到数据阵列控制器(图1),以相应地更新数据阵列。
分区策略单元24#N可以采取由一个或多个进一步的策略定义的进一步的动作,以及基于或响应于高速缓存替换策略而调整权重。这样的进一步的策略可以包括预取器策略,从而分区策略单元24#N请求多个附加字(例如,作为预取器策略)或选择要写入主存储器的多个条目的写入缓冲器策略。高速缓存控制器将设置有适当的元件/逻辑/功能,以响应于分区策略单元24#N的这样的进一步的动作。
以预取器策略为例,在受害者选择单元22中提供附加的受害者/提取队列29,以响应来自分区策略单元24#N的附加字的请求S21生成附加请求S2。
图3更详细地示出了(属于分区N的)分区策略单元24#N的示意性示例。
在本说明性示例中,分区策略单元24#N包括:旁路控制装置32;插入/删除控制装置34;分区匹配控制装置40;具有策略逻辑元件42#M的策略逻辑42;多路复用器44;策略选择控制装置46;调整功能48;以及尺寸反馈控制装置50。
分区匹配控制装置40是可编程控制装置,它得到在受害者选择单元处接收的所有替换候补的分区ID(S6),并且输出识别属于特定分区的零个或多个替换候补的匹配的分区ID S40。
策略逻辑42包括一个或多个可编程策略逻辑元件42#M。图3中描绘了两个策略逻辑元件42#0和42#1,但可以部署任何数量的策略逻辑元件。
每个策略逻辑元件42#M包括高速缓存策略,该策略例如确定替换候补应当是什么权重(例如,最近最少使用策略(LRU))或请求多个附加字(例如,预取器策略)。
策略逻辑元件是可编程的,因为高速缓存策略或参数可以被编程(例如经由可编程接口)。例如,LRU策略可以被最不常用(LFU)策略替代,或者根据需要增加或减少待请求的附加字的数量。
在本说明性示例中,每个策略逻辑元件42#M接收输入,该输入包括:来自所有替换候补的替换权重S7;命中路信息S8(如果有的话);匹配的分区ID S40和S43(在下面描述)。
每个策略逻辑元件42#M向具有由分区匹配控制装置40确定的匹配的分区ID的零个或多个替换候补的替换权重S7应用特定的高速缓存策略。
策略选择控制装置46控制多路复用器44根据对应的高速缓存策略来选择适当的输出S44A和S44B。
所选择的策略逻辑元件输出被馈送到更新队列的用于受害者路的权重和/或用于的其余路S44A的更新后的权重(如图1所示),并且它还可以输出被馈送到受害者选择器(图2)的插入权重S44B,从而受害者选择器将插入权重与所有分区中的所有受害者权重进行比较,然后确定是否存在受害者。作为说明性示例,当插入权重小于用于所有分区的第二调整权重时,将不存在受害者并且不插入。
将认识到,策略选择控制装置46所使用的高速缓存策略可以在任何时间被可编程地修改,例如经由与受害者选择单元相关联的编程接口。
在实施例中,信号S40还被用作用于调整后的权重和更新后的权重的输出信号选通。选通被用来指示由分区策略单元24N输出的(集合中每个标签条目)权重中哪一个是有效的–因为每个策略单元24N可以提供用于所有权重的一些值。然后,选通可以被用作到受害者选择单元(图2)中的多路复用器(未示出)的选择输入,以选择要使用(来自每个策略单元的)每个新权重的哪个版本。然后,任何选通S40的存在还被用来确定是否需要更新条目,即,是否需要将其发送到更新队列(也未示出)。
在一些高速缓存中,当数据集大于高速缓存并且做出将数据集写入高速缓存的尝试时,高速缓存将不断地重写其中的条目,导致高速缓存颠簸。可以选择要写入标签阵列的地址的百分比以便于避免不断重写其中的条目。因此,旁路控制装置32接收请求S9A(例如,包含请求地址)并输出对应于期望旁路比的旁路信号S32,以避免颠簸。
插入/删除控制装置34用于响应于策略而确定应当在高速缓存中分配和解除分配哪些条目。插入/删除控制装置34是可编程的(例如经由编程接口),因为可以修改与其相关联的策略或策略的参数来确定是否插入/删除条目。
在本说明性示例中,响应于请求中的信息(诸如请求类型输入S9B和LPID输入S9C),生成插入类型信号S34和删除类型信号S35。
删除类型信号S35被用于在更新队列(如图1所示)中解除分配条目,例如,为了预测处理器当不再需要标签阵列中的特定条目时,该条目可以被解除分配(并且相关联的数据阵列中的条目也可以被删除)。
在示例中,插入类型信号S34作为到AND门38的一个输入提供,同时旁路信号S32作为第二个输入。当需要将条目插入到标签阵列中时,AND门38提供旁路信号S42。
一些高速缓存策略仅在需要插入时才更新替换权重。因此,信号S43可以被策略逻辑元件用来适当地终止处理,从而,例如,如果S43指示没有插入,则策略逻辑元件42#M将终止处理和/或可以相应地更新其内部状态(例如,以指示没有发生插入)。虽然旁路信号S42被示意性地示为被NOT门43反相以便生成S43,但是可以使用任何合适的逻辑、元件或功能来生成S43。
尺寸反馈控制装置50基于(或响应于)输入S52,生成尺寸值S50,该尺寸值提供与特定分区中的任何插入、删除、改变相关的信息。
调整功能48用替换权重S7对尺寸值S50执行操作(例如,相乘)来提供调整后的替换权重(S24),其被用来确定分区平均应当多大,以便允许对分区进行软控制,由此在使用软分区时针对每个分区维护目标尺寸。
分区匹配控制装置40、策略逻辑控制装置46、旁路控制装置32、插入/删除控制装置34和尺寸反馈控制装置50全都是可以独立于策略逻辑42选择,根据策略和/或经由编程接口被修改/编程的可编程控制装置/逻辑/功能。
可能使用的示例策略如下所述:
锁定高速缓存策略确保高速缓存条目只能对同一个分区受害。
伪随机高速缓存策略是替换策略,它在不考虑加权或者从高速缓存条目被使用起经过了多久的情况下以伪随机方式选择标签字条目。
伪最近最少使用(pLRU)高速缓存策略是替换策略,其中如果标签字是最近最少使用的高速缓存条目之一,则选择该标签字。这样的高速缓存策略使用替换权重来确定条目多近被使用。
预取器高速缓存策略是将经预取的线插入高速缓存的插入策略。
写入缓冲器高速缓存策略是将高速缓存条目清理到存储器的高速缓存策略,例如,当确定这么做是高效的时候。
侦听过滤器策略处理与不同处理器相关联的高速缓存之间的高速缓存相干性。
驱逐策略可以优先选择使条目受害,并且可以被用来释放缓冲器(例如,数据的临时缓冲器)并释放存储以用于重用。附加地或替代地,驱逐策略可以被用来清空特定的路以用于电源管理。
失效策略可以在下一次接触(touched)时使条目无效并且防止写回,并且可以被用来立即释放缓冲器(例如,数据的临时缓冲器)并释放存储以用于重用。
可以包括在分区策略单元中的可编程控制装置的示例包括:
区域解码控制装置确定如何解码事务属于特定的分区。旁路感测控制装置反转对于分区的旁路部分(fraction)的感测。分配掩码控制装置确定哪些事务类型和逻辑处理器ID(LPID)导致了插入。解除分配掩码控制装置确定哪些事务类型和LPID导致了解除分配。路掩码控制装置允许对某些路的插入。路限制控制装置限制允许被分区使用的最大路的数量。“是监视器(is-monitor)控制装置”关闭数据阵列中的插入。带宽限制控制装置将限制分区允许使用的主存储器带宽的量。
参考图4,描述根据实施例的高速缓存替换方法,该方法包括逻辑处理步骤402至418。
步骤402是当微处理器系统是可操作的并且对存储阵列执行读取和写入操作是方法的开始,存储阵列包括多条路,每一路包括被索引位置。
在每一路中的标签字条目与特定分区相关联,并且其中每个标签字条目包括标签值、替换权重值和分区ID,分区ID对应于与标签字相关联的分区。
在步骤404,当以读取缺失开始时,所选择的集合的每个标签字条目的分区ID和替换权重作为替换候补被提供给受害者选择单元。
在步骤406,基于例如旁路策略或除地址以外的属性来确定是否要插入请求。如果不要,那么对于当前请求没有选择受害者标签字。
在步骤408,当确定要插入请求时,(例如,从其相关联的分区ID)识别被索引集合中的标签字的分区。
在410,对于特定分区中的替换候补,由对应的分区策略单元应用当前被编程的策略,从而根据尺寸功能调整替换候补权重(例如,当大时,则更有可能成为被替换的候选,以及当小时,则不太可能)。
在步骤411,将全局策略可选地应用到一个或多个不同分区的替换候补,或应用到其子集。
在步骤412,对来自所有分区的替换候补的调整后的权重进行比较,并且在步骤414a,基于或响应于该比较而识别受害者。例如,具有最高调整后权重的替换候补可以被认为是受害者标签字。
在步骤416,当识别出受害者标签字时,受害者标签字的索引和受害者路与传入的地址的标签部分一起被馈送到更新队列。
在步骤418,该方法结束。
将认识到,当识别出受害者时,可以在必要处执行数据操作。例如,当执行驱逐时,如果已经修改了对应的数据,那么修改后的数据必须被写回更高级别的存储器。在更新更新队列以在其中写入新标签之前,可以适当地从存储器中提取新数据。
此外,在实施例中,受害者选择单元可以在写入信息之前检查在更新队列中存在可用条目,并且,如果不存在,那么可以等待直到存在可用条目。
本技术允许每个分区使用通过在配置寄存器的集合中查找其分区ID(其也可以根据放置确定)确定的策略和其它设置。每个分区不被锁定于特定的策略。
这具有很多优点:首先,这提供了灵活性,因为广泛的策略可以用于任何分区。例如,用于高速缓存本身的分区可以由流量源确定,而针对该源的策略不一定总是相同,例如,在该源的不同使用情况中。
可以通过更高级别的高速缓存控制框架(其可以在硬件、在微控制器上运行的固件或者驱动软件或OS软件中实现)、通过对平台使用情况的了解、对当前系统模式的了解或要使用的最佳策略的自动控制来改变高速缓存策略。
给出了特殊优点的重新编程分区的策略类型的一类使用是当处理高速缓存中的缓冲器时。一旦知道要被完成(finished with),数据缓冲器就可以被标记以用于优先驱逐。如果读取整个数据缓冲器,但是随后随机访问但是不保证读取所有条目,则简单地将策略类型重新编程为“清理和驱逐”或仅为“失效”,使得用于分区的所有高速缓存条目都可以可用于一次性重用而无需全部单独访问它们,这可以具有优于例如ROMI(读取一次,使其无效)的优点。双缓冲是另一种情况,其中改变分区的策略给出了特定的优点。
如本领域技术人员将认识到的,本技术可以作为系统、方法或计算机程序产品实施。因此,本技术可以采取完全硬件实施例、完全软件实施例或组合软件和硬件的实施例的形式。
此外,本技术可以采用在具有在其上实施的计算机可读程序代码的计算机可读介质中实施的计算机程序产品的形式。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读介质可以是例如但不限于电子、磁性、光学、电磁、红外或半导体系统、装置或设备,或者前述的任何合适组合。
用于执行本技术的操作的计算机程序代码可以用一种或多种编程语言的任何组合来编写,包括面向对象的编程语言和常规的程序性编程语言。
例如,用于执行本技术的操作的程序代码可以包括常规编程语言(解释或编译)(诸如C或汇编代码)中的源、对象或可执行代码,用于设置或控制ASIC(专用集成电路)或FPGA(现场可编程门阵列)的代码,或者用于硬件描述语言(诸如VerilogTM或VHDL(超高速集成电路硬件描述语言))的代码。
程序代码可以完全在用户的计算机上、部分地在用户的计算机上、部分地在远程计算机上或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机。代码组件可以被实施为过程、方法等,并且可以包括可以采取任何抽象级别的指令或指令序列形式(从原生指令集的直接机器指令到高级编译或解释语言构造)的子组件。
对于本领域技术人员还将清楚的是,根据本技术优选实施例的逻辑方法的全部或部分可以适当地在包括用于执行方法的步骤的逻辑元件的逻辑装置中实施,并且这样的逻辑元件可以包括在例如可编程逻辑阵列或专用集成电路中的组件(诸如逻辑门)。这样的逻辑布置还可以在使用例如虚拟硬件描述符语言在这种阵列或电路中临时或永久地建立逻辑结构的使能(enabling)组件中实施,其中可以使用固定或可发送载体介质来存储和发送虚拟硬件描述符语言。
在一个替代例中,本技术的实施例可以以部署服务的计算机实现的方法的形式实现,该服务包括步骤:部署计算机程序代码,当被部署到计算机基础设施或网络中并在其上执行时,该代码可操作为使所述计算机系统或网络执行方法的所有步骤。
在另一个替代例中,本技术的优选实施例可以以其上具有功能数据的数据载体的形式实现,所述功能数据包括功能计算机数据结构,当其被加载到计算机系统或网络中并由此被操作时,使所述计算机系统能够执行方法的所有步骤。
对于本领域技术人员将清楚的是,在不背离本技术的范围的情况下,可以对前述示例性实施例进行许多改进和修改。

Claims (17)

1.一种存储控制器,所述控制器具有条目的阵列,每个条目与一个或多个分区中的分区相关联,其中控制器包括被配置为识别条目的分区标识符并且基于或响应于所述分区标识符而对条目应用策略的逻辑。
2.根据权利要求1所述的控制器,还包括用于响应于接收到的请求从阵列中选择条目集合的访问逻辑。
3.根据权利要求2所述的控制器,还包括用于每个分区的分区策略单元,每个分区策略单元被配置为向具有对应分区标识符的每个条目应用分区策略,以确定第一调整后的权重。
4.根据权利要求3所述的控制器,其中分区策略单元能够用分区策略编程。
5.根据权利要求3或4中任一项所述的控制器,还包括被配置为基于第一调整后的权重从所述条目集合中选择受害者条目的受害者选择器。
6.根据权利要求5所述的控制器,还包括用于生成全局权重的全局策略单元。
7.根据权利要求6所述的控制器,包括调整功能,用于应用全局权重来根据相关联的策略调整第一调整后的权重,以生成第二调整后的权重。
8.根据权利要求7所述的控制器,其中调整功能包括乘法器。
9.根据权利要求8所述的控制器,其中受害者选择器基于第二调整后的权重从所述条目集合中选择受害者条目。
10.根据权利要求3或4中任一项所述的控制器,其中每个分区策略单元包括一个或多个可选择的策略逻辑元件,从而第一策略逻辑元件能被选择用于根据第一策略确定调整后的权重。
11.根据权利要求10所述的控制器,其中第一策略逻辑元件能被选择用于根据第一策略确定插入权重。
12.根据权利要求1至4中任一项所述的控制器,其中每个分区策略单元被配置为根据高速缓存策略和请求中的信息生成插入类型信号和删除类型信号。
13.根据权利要求1至4中任一项所述的控制器,其中策略包括替换策略或插入策略。
14.根据权利要求3或4中任一项所述的控制器,其中每个分区策略单元包括用于根据高速缓存策略来调节受害者标签字确定的旁路的可编程控制装置。
15.根据权利要求1至4中任一项所述的控制器,还包括用于存储与受害者条目相关的信息的更新队列。
16.一种用于控制被分区的存储阵列的方法,所述被分区的存储阵列包括一条或多条路,每一路具有一个或多个条目,每个条目与分区相关联,所述方法包括:
从条目的集合中确定与所述集合中的每个条目相关联的相应分区;
对所述集合中的每个条目应用对应于与每个条目相关联的分区的相应策略;
基于或响应于对于每个条目所应用的相应策略,从所述集合中选择受害者。
17.一种存储至少一个计算机程序的计算机可读存储介质,所述计算机程序被配置为控制数据处理装置来执行如权利要求16所述的方法。
CN201710445774.9A 2016-06-14 2017-06-14 存储控制器 Active CN107506315B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP16174467.7A EP3258382B1 (en) 2016-06-14 2016-06-14 A storage controller
EP16174467.7 2016-06-14

Publications (2)

Publication Number Publication Date
CN107506315A CN107506315A (zh) 2017-12-22
CN107506315B true CN107506315B (zh) 2023-08-04

Family

ID=56178256

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710445774.9A Active CN107506315B (zh) 2016-06-14 2017-06-14 存储控制器

Country Status (3)

Country Link
US (1) US10185667B2 (zh)
EP (1) EP3258382B1 (zh)
CN (1) CN107506315B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109710563B (zh) * 2018-11-19 2020-11-10 西安交通大学 一种可重构系统的缓存分区划分方法
US10884959B2 (en) 2019-02-13 2021-01-05 Google Llc Way partitioning for a system-level cache
US11163688B2 (en) * 2019-09-24 2021-11-02 Advanced Micro Devices, Inc. System probe aware last level cache insertion bypassing
US20240054073A1 (en) * 2022-08-11 2024-02-15 Arm Limited Circuitry and Method

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7925756B1 (en) * 2005-09-30 2011-04-12 Packeteer, Inc. Partition configuration and creation mechanisms for network traffic management devices
CN102483718A (zh) * 2009-08-25 2012-05-30 国际商业机器公司 虚拟化环境中的高速缓存分区

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63257853A (ja) * 1987-04-03 1988-10-25 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン キヤツシユ・メモリ・システム
US7856633B1 (en) * 2000-03-24 2010-12-21 Intel Corporation LRU cache replacement for a partitioned set associative cache
US6799241B2 (en) * 2002-01-03 2004-09-28 Intel Corporation Method for dynamically adjusting a memory page closing policy
US7076609B2 (en) * 2002-09-20 2006-07-11 Intel Corporation Cache sharing for a chip multiprocessor or multiprocessing system
US20120042268A1 (en) * 2004-04-03 2012-02-16 Frank Edughom Ekpar Processing user interfaces
CN100440170C (zh) * 2004-05-26 2008-12-03 英特尔公司 网络应用内的自动高速缓存生成
US7558920B2 (en) * 2004-06-30 2009-07-07 Intel Corporation Apparatus and method for partitioning a shared cache of a chip multi-processor
US7689767B2 (en) * 2004-09-30 2010-03-30 Symantec Operating Corporation Method to detect and suggest corrective actions when performance and availability rules are violated in an environment deploying virtualization at multiple levels
US20070143546A1 (en) * 2005-12-21 2007-06-21 Intel Corporation Partitioned shared cache
US7506119B2 (en) * 2006-05-04 2009-03-17 International Business Machines Corporation Complier assisted victim cache bypassing
US20080052467A1 (en) * 2006-08-25 2008-02-28 Advanced Micro Devices, Inc. System for restricted cache access during information transfers and method thereof
US7895409B2 (en) * 2007-07-30 2011-02-22 Hewlett-Packard Development Company, L.P. Application inspection tool for determining a security partition
US8185691B2 (en) * 2008-06-30 2012-05-22 Netapp, Inc. Optimized cache coherency in a dual-controller storage array
US20100115246A1 (en) * 2008-10-31 2010-05-06 Yahoo! Inc. System and method of data partitioning for parallel processing of dynamically generated application data
US8364898B2 (en) * 2009-01-23 2013-01-29 International Business Machines Corporation Optimizing a cache back invalidation policy
US8176282B2 (en) * 2009-03-11 2012-05-08 Applied Micro Circuits Corporation Multi-domain management of a cache in a processor system
CN101876983B (zh) * 2009-04-30 2012-11-28 国际商业机器公司 数据库分区方法与系统
US8195879B2 (en) * 2009-05-08 2012-06-05 International Business Machines Corporation Demand based partitioning of microprocessor caches
US8250332B2 (en) * 2009-06-11 2012-08-21 Qualcomm Incorporated Partitioned replacement for cache memory
US8392658B2 (en) * 2009-07-10 2013-03-05 Apple Inc. Cache implementing multiple replacement policies
US8966184B2 (en) * 2011-01-31 2015-02-24 Intelligent Intellectual Property Holdings 2, LLC. Apparatus, system, and method for managing eviction of data
US9208036B2 (en) * 2011-04-19 2015-12-08 Freescale Semiconductor, Inc. Dynamic lockstep cache memory replacement logic
US9195409B2 (en) * 2012-05-01 2015-11-24 Enmotus, Inc. Storage system with load balancing mechanism and method of operation thereof
US9824013B2 (en) * 2012-05-08 2017-11-21 Qualcomm Incorporated Per thread cacheline allocation mechanism in shared partitioned caches in multi-threaded processors
US9277869B2 (en) * 2012-11-28 2016-03-08 Tdk Corporation Thin-film piezoelectric element, thin-film piezoelectric actuator, thin-film piezoelectric sensor, hard disk drive, and inkjet printer apparatus
US9372811B2 (en) * 2012-12-13 2016-06-21 Arm Limited Retention priority based cache replacement policy
US9223710B2 (en) * 2013-03-16 2015-12-29 Intel Corporation Read-write partitioning of cache memory
US9361236B2 (en) * 2013-06-18 2016-06-07 Arm Limited Handling write requests for a data array
CN105493053B (zh) * 2013-08-29 2019-06-11 英派尔科技开发有限公司 多核处理器及更新多核处理器中的高速缓存的方法
US9645938B2 (en) * 2013-09-27 2017-05-09 Intel Corporation Cache operations for memory management
US10033647B2 (en) * 2015-10-13 2018-07-24 Oracle International Corporation System and method for efficient network isolation and load balancing in a multi-tenant cluster environment
KR102181640B1 (ko) * 2016-05-17 2020-11-23 아브 이니티오 테크놀로지 엘엘시 재구성가능한 분산 처리
US10628424B2 (en) * 2016-09-15 2020-04-21 Oracle International Corporation Graph generation for a distributed event processing system
US20180203807A1 (en) * 2017-01-13 2018-07-19 Arm Limited Partitioning tlb or cache allocation

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7925756B1 (en) * 2005-09-30 2011-04-12 Packeteer, Inc. Partition configuration and creation mechanisms for network traffic management devices
CN102483718A (zh) * 2009-08-25 2012-05-30 国际商业机器公司 虚拟化环境中的高速缓存分区

Also Published As

Publication number Publication date
EP3258382B1 (en) 2021-08-11
EP3258382A1 (en) 2017-12-20
US10185667B2 (en) 2019-01-22
CN107506315A (zh) 2017-12-22
US20170357597A1 (en) 2017-12-14

Similar Documents

Publication Publication Date Title
US8250332B2 (en) Partitioned replacement for cache memory
US6356980B1 (en) Method and system for bypassing cache levels when casting out from an upper level cache
CN107506315B (zh) 存储控制器
US7991956B2 (en) Providing application-level information for use in cache management
CN103870394B (zh) 基于保留优先级的缓存替换策略
US9645945B2 (en) Fill partitioning of a shared cache
US7975107B2 (en) Processor cache management with software input via an intermediary
US7502890B2 (en) Method and apparatus for dynamic priority-based cache replacement
US6430656B1 (en) Cache and management method using combined software and hardware congruence class selectors
KR101245823B1 (ko) 데이터 전송동안 제한된 캐시 엑세스를 위한 시스템 및방법
US9286221B1 (en) Heterogeneous memory system
US20070156963A1 (en) Method and system for proximity caching in a multiple-core system
US6385695B1 (en) Method and system for maintaining allocation information on data castout from an upper level cache
US8595443B2 (en) Varying a data prefetch size based upon data usage
US11740930B2 (en) Global coherence operations
US9639470B2 (en) Coherency checking of invalidate transactions caused by snoop filter eviction in an integrated circuit
US8364904B2 (en) Horizontal cache persistence in a multi-compute node, symmetric multiprocessing computer
US20070079070A1 (en) Cache controller
US8874853B2 (en) Local and global memory request predictor
US6421761B1 (en) Partitioned cache and management method for selectively caching data by type
JP2019096309A (ja) メンテナンス動作の実行
US20080052467A1 (en) System for restricted cache access during information transfers and method thereof
US5920889A (en) Apparatus and method for write miss processing in a copy-back data cache with an allocating load buffer and a non-allocating store buffer
US20090216952A1 (en) Method, system, and computer program product for managing cache memory
KR20240023642A (ko) 메모리-로컬 컴퓨팅을 위한 아토믹 메모리 동작들의 동적 병합

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