CN103729306B - 高速缓存块无效的方法和数据处理设备 - Google Patents
高速缓存块无效的方法和数据处理设备 Download PDFInfo
- Publication number
- CN103729306B CN103729306B CN201310472567.4A CN201310472567A CN103729306B CN 103729306 B CN103729306 B CN 103729306B CN 201310472567 A CN201310472567 A CN 201310472567A CN 103729306 B CN103729306 B CN 103729306B
- Authority
- CN
- China
- Prior art keywords
- cache
- address
- deactivated
- range
- data
- 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
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0808—Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
-
- 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/0891—Addressing 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
-
- 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
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/122—Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1021—Hit rate improvement
-
- 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/62—Details of cache specific to multiprocessor cache arrangements
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明涉及一种高速缓冲存储器系统和一种执行块无效操作的方法。实施例的方法旨在通过使多CPU环境中的块无效操作与正常CPU存取重叠从而使所述块无效操作的延迟变得透明而消除所述延迟。在块无效操作正在进行的同时对每一CPU存取执行范围检查,且将映射到所述块无效操作的地址范围内的存取看作为高速缓存未命中以确保正请求的CPU将接收到有效数据。
Description
技术领域
本发明的技术领域涉及用于数字数据处理器的高速缓冲存储器。
背景技术
在层次型高速缓存系统中,可能需要块无效操作以使高速缓存在存储器系统中的行块无效。在块一致性操作中,用户对需要从高速缓冲存储器移除的基址和字数编程。高速缓存控制器接着遍及整个高速缓冲存储器而迭代,且如果控制器找到在既定地址范围内的地址,那么其将特定设置和方式标记为无效(对应特征)。通常需要块无效操作以保持多处理器系统内的数据一致性。
图6中说明实例。在多核心环境中,CPU1 601正更新地址范围A内的数据。在CPU1完成后,其它CPU可开始过程603,且更新相同地址范围内的数据。如果在此时间期间CPU1需要存取此地址范围内的数据,那么其将需要从其它CPU获得数据的更新副本,然而所需数据中的一些仍可在CPU1中被高速缓存—因此,CPU1将获得旧的数据,除非将在相同地址范围A内的CPU1的高速缓冲存储器上执行块无效602操作。此接着将确保CPU1请求将导致高速缓存未命中,且正确的数据将从主存储器被供应。
发明内容
本发明中所描述的方法通过在块无效操作正在进行的同时在每一尝试CPU存取上进行范围检查而消除块无效操作中的延迟一致性。如果CPU存取导致高速缓存命中但高速缓存地址在块无效操作范围内,那么存取将被看作为高速缓存未命中,从而确保正确的数据将从主存储器存取但无需等待直到块无效操作完成。
附图说明
在图式中说明本发明的这些和其它方面,其中:
图1说明本发明可适用的典型数字信号处理器的组织(现有技术);
图2说明适合用于图1中的很长的指令字的数字信号处理器核心的细节(现有技术);
图3说明图2中所说明的很长的指令字的数字信号处理器核心的管线级(现有技术);
图4说明图2中所说明的很长的指令字的数字信号处理器核心的指令语法(现有技术);
图5说明一组典型现有技术高速缓存行的细节(现有技术);
图6说明以串行方式进行的块一致性操作;
图7说明以并行方式进行的块一致性操作;
图8说明在进行中的高速缓存无效操作。
具体实施方式
图1说明本发明可适用的典型数字信号处理器系统100的组织(现有技术)。数字信号处理器系统100包含中央处理单元核心110。中央处理单元核心110包含数字信号处理器系统100的数据处理部分。中央处理单元核心110可如所属领域中已知的经构造,且将通常包含寄存器堆、整数算术逻辑单元、整数乘法器和程序流控制单元。下文结合图2到4来描述适当的中央处理单元核心的实例。
数字信号处理器系统100包含数个高速缓冲存储器。图1说明一对第一等级高速缓冲存储器。一级指令高速缓冲存储器(L1I)121存储由中央处理单元核心110使用的指令。中央处理单元核心110首先尝试从一级指令高速缓冲存储器121存取任何指令。一级数据高速缓冲存储器(L1D)123存储由中央处理单元核心110使用的数据。中央处理单元核心110首先尝试从一级数据高速缓冲存储器123存取任何所需数据。两个一级高速缓冲存储器由二级统一高速缓冲存储器(L2)130支持。在高速缓存未命中一级指令高速缓冲存储器121或一级数据高速缓冲存储器123的情况下,从二级统一高速缓冲存储器130寻求所请求的指令或数据。如果将所请求的指令或数据存储在二级统一高速缓冲存储器130中,那么将其供应到正请求的一级高速缓冲存储器以用于供应到中央处理单元核心110。如所属领域中已知的,可将所请求的指令或数据同时供应到正请求的高速缓冲存储器和中央处理单元核心110两者以加速使用。
二级统一高速缓冲存储器130进一步耦合到高级存储器系统。数字信号处理器系统100可为多处理器系统的部分。多处理器系统的其它处理器经由传送请求总线141和数据传送总线143而耦合到二级统一高速缓冲存储器130。直接存储器存取单元150提供数字信号处理器系统100到外部存储器161和外部外围设备169的连接。
图1说明在数字信号处理器系统100内的若干数据/指令移动。这些移动包含:(1)响应于L1I高速缓存未命中,指令从L2高速缓冲存储器130移动到L1I高速缓冲存储器121以填充;(2)响应于L1D高速缓存未命中,数据从L2高速缓冲存储器130移动到L1D高速缓冲存储器123以填充;(3)响应于L1D高速缓冲存储器123中的写入未命中、响应于L1D高速缓冲存储器123受害逐出(victim eviction)且响应于来自L2高速缓冲存储器130的窥探,数据从L1D高速缓冲存储器123移动到L2高速缓冲存储器130;(4)响应于L2高速缓存未命中或直接存储器存取(DMA)数据传送到L2高速缓冲存储器130,数据从外部存储器161移动到L2高速缓冲存储器130以填充;(5)响应于L2高速缓冲存储器受害逐出或写回且响应于DMA传送出L2高速缓冲存储器130,数据从L2高速缓冲存储器130移动到外部存储器161;(6)响应于DMA传送到L2高速缓冲存储器130中,数据从外围设备169移动到L2高速缓冲存储器130;以及(7)响应于DMA传送出L2高速缓冲存储器130,数据从L2高速缓冲存储器130移动到外围设备169。
图2为说明适合但非必需用于本发明的数字信号处理器集成电路200的细节的框图(现有技术)。数字信号处理器集成电路200包含中央处理单元1,其为32位八路VLIW管线化处理器。中央处理单元1耦合到包含在数字信号处理器集成电路200中的一级指令高速缓冲存储器121。数字信号处理器集成电路200还包含一级数据高速缓冲存储器123。数字信号处理器集成电路200还包含外围设备4到9。这些外围设备优选包含外部存储器接口(EMIF)4和直接存储器存取(DMA)控制器5。外部存储器接口(EMIF)4优选支持存取同步和异步SRAM以及同步DRAM。直接存储器存取(DMA)控制器5优选提供2通道自启动加载直接存储器存取。这些外围设备包含断电逻辑6。断电逻辑6优选可停止中央处理单元活动、外围设备活动和锁相环路(PLL)时钟同步活动以减少功率消耗。这些外围设备还包含主机端口7、串行端口8和可编程计时器9。
中央处理单元1具有32位字节可寻址的地址空间。同一集成电路上的内部存储器优选被组织在包含一级数据高速缓冲存储器123的数据空间和包含一级指令高速缓冲存储器121的程序空间中。当使用芯片外存储器时,优选经由外部存储器接口(EMIF)4来将这两个空间统一为单个存储器空间。
一级数据高速缓冲存储器123可由中央处理单元1经由两个内部端口3a和3b在内部存取。每一内部端口3a和3b优选具有32位的数据和32位字节地址范围(reach)。一级指令高速缓冲存储器121可由中央处理单元1经由单个端口2a在内部存取。一级指令高速缓冲存储器121的端口2a优选具有256位的指令提取宽度和等效于32位字节地址的30位字(四字节)地址。
中央处理单元1包含程序提取单元10、指令分派单元11、指令解码单元12和两个数据路径20和30。第一数据路径20包含四个功能单元(表示为L1单元22、S1单元23、M1单元24和D1单元25)和形成寄存器堆21的16个32位A寄存器。第二数据路径30同样地包含四个功能单元(表示为L2单元32、S2单元33、M2单元34和D2单元35)和形成寄存器堆31的16个32位B寄存器。每一数据路径的功能单元针对其操作数而存取对应的寄存器堆。每一管线级存在准许存取相对寄存器堆中的一个寄存器的两个交叉路径27和37。中央处理单元1包含控制寄存器13、控制逻辑14、以及测试逻辑15、仿真逻辑16和中断逻辑17。
程序提取单元10、指令分派单元11和指令解码单元12在每个指令周期从一级指令高速缓冲存储器121撤销指令,且将八个32位指令向上递送到功能单元。处理在两个数据路径20和30中的每一者中同时发生。如先前描述,每一数据路径具有四个对应功能单元(L、S、M和D)和含有16个32位寄存器的对应寄存器堆。每一功能单元由32位指令控制。下文进一步描述数据路径。控制寄存器堆13提供用以配置且控制各种处理器操作的构件。
图3说明数字信号处理器核心110的管线级300(现有技术)。这些管线级分为三个群组:提取群组310;解码群组320;以及执行群组330。指令集中的所有指令流经管线的提取、解码和执行级。提取群组310具有用于所有指令的四阶段,且解码群组320具有用于所有指令的两阶段。执行群组330取决于指令的类型而需要变化数目个阶段。
提取群组310的提取阶段为:程序地址产生阶段311(PG);程序地址发送阶段312(PS);程序存取准备等待级313(PW);以及程序提取包接收级314(PR)。数字信号处理器核心110使用八个指令的提取包(FP)。所有八个指令一起前进经过提取群组310。在PG阶段311期间,在程序提取单元10中产生程序地址。在PS阶段312期间,将此程序地址发送到存储器。在PW阶段313期间,发生存储器读取。最后在PR阶段314期间,在CPU 1处接收提取包。
解码群组320的解码阶段为:指令分派(DP)321;以及指令解码(DC)322。在DP阶段321期间,提取包分裂为若干执行包。执行包由经译码以并行执行的一个或一个以上指令组成。在DP阶段322期间,将执行包中的指令指派到适当的功能单元。同样在DC阶段322期间,对源寄存器、目的地寄存器和相关联的路径解码以用于执行相应功能单元中的指令。
执行群组330的执行阶段为:执行1(E1)331;执行2(E2)332;执行3(E3)333;执行4(E4)334;以及执行5(E5)335。不同类型的指令需要不同数目个这些阶段来完成。管线的这些阶段在理解CPU周期边界处的装置状态方面起到重要作用。
在E1阶段331期间,估计指令的条件且读取所有指令类型的操作数。对于加载和存储指令,执行地址产生且将地址修改写入到寄存器堆。对于分支指令,PG阶段311中的分支提取包受到影响。对于所有单周期指令,将结果写入到寄存器堆。所有单周期指令在E1阶段331期间完成。
在E2阶段332期间,对于加载指令,将地址发送到存储器。对于存储指令,将地址和数据发送到存储器。使结果饱和的单周期指令在发生饱和的情况下设置控制状态寄存器(CSR)中的SAT位。对于单周期16乘16乘法指令,将结果写入到寄存器堆。对于M单位非乘法指令,将结果写入到寄存器堆。所有普通乘法单元指令在E2阶段322期间完成。
在E3阶段333期间,执行数据存储器存取。使结果饱和的任何乘法指令在发生饱和的情况下设置控制状态寄存器(CSR)中的SAT位。存储指令在E3阶段333期间完成。
在E4阶段334期间,对于加载指令,将数据带到CPU边界。对于乘法扩展指令,将结果写入到寄存器堆。乘法扩展指令在E4阶段334期间完成。
在E5阶段335期间,加载指令将数据写入到寄存器中。加载指令在E5阶段335期间完成。
图4说明由数字信号处理器核心110使用的指令的指令译码的实例(现有技术)。每一指令由32位组成,且控制八个功能单元中的一者的操作。如下定义位字段。Creg字段(位29到31)是条件寄存器字段。这些位识别指令是否为有条件的,且识别预测寄存器。z位(位28)指示预测是基于预测寄存器中的零还是非零。如果z=1,那么测试是针对零等同性。如果z=0,那么测试是针对非零。将creg=0和z=0的情况看作为总是成立的,以允许无条件指令执行。如表1中所示,在指令操作码中编码creg字段。
表1
注意,z位列中的“z”指代上文所述的零/非零比较选择,且“x”为不在乎状态。此译码可仅将每一寄存器堆中的32个寄存器子集指定为预测寄存器。进行此选择以保存指令译码中的位。
dst字段(位23到27)将对应寄存器堆中的32个寄存器中的一者指定为指令结果的目的地。
scr2字段(位18到22)将对应寄存器堆中的32个寄存器中的一者指定为第二源操作数。
scr1/cst字段(位13到17)取决于指令操作码字段(位3到12)而具有若干含义。第一含义将对应寄存器堆中的32个寄存器中的一者指定为第一操作数。第二含义为5位立即数常数。取决于指令类型,将此看作为扩展到32位的不带符号的整数和零或看作为扩展到32位的带符号的整数和符号。最后,如果指令调用寄存器堆交叉路径27或37中的一者,那么此字段可指定相对寄存器堆中的32个寄存器中的一者。
操作码字段(位3到12)指定指令的类型且表示适当的指令选项。此字段的详细解释除了下文细述的指令选项之外而超出本发明的范围。
s位(位1)表示数据路径20或30。如果s=0,那么选择数据路径20。此将功能单元限于L1单元22、S1单元23、M1单元24和D1单元25以及对应的寄存器堆A 21。类似地,s=1选择了数据路径20,从而将功能单元限于L2单元32、S2单元33、M2单元34和D2单元35以及对应的寄存器堆B 31。
p位(位0)标记执行包。p位确定指令是否与以下指令并行执行。从低地址到高地址扫描p个位。如果对于当前指令来说p=1,那么下一指令与当前指令并行执行。如果对于当前指令来说p=0,那么下一指令在当前指令之后的周期中执行。并行执行的所有指令构成执行包。执行包可含有多达八个指令。执行包中的每一指令必须使用不同的功能单元。
图5说明例如用于图1中所说明的L1I高速缓冲存储器121、L1D高速缓冲存储器123和L2高速缓冲存储器131中的多个高速缓存行的细节。图5中所说明的高速缓冲存储器500包含代表高速缓冲存储器500的内部结构的高速缓存行510、520和530。高速缓存行510、520和530中的每一者包含:各自的地址标签511、521和531;各自的有效位512、522和523;各自的修改数据标志位513、523和533;各种的最近最少使用(LRU)指示符514、524和534;以及各自的数据字515、525和535。每一高速缓存行510、520和530包含多个各自的数据字515、525和535。数据字515、525和535的位长度由CPU110的最小可寻址数据量来设置。此通常为8位/1字节。
高速缓冲存储器500存储来自例如外部存储器131等的较远的存储器的数据,所述存储器由多位地址存取。高速缓冲存储器500经组织以促进此存储以及促进找到所述高速缓冲存储器中的此类数据。每一高速缓存行510、520和530通常存储2N个各自的数据字515、525和535,其中N为整数。对应高速缓存行510、520和530内的数据字515、525和535的位置连同维度501充当地址的最低有效位的代理。
若干行内经高速缓存的数据的位置连同维度502充当地址的下一最高有效位的代理。对应地址标签511、521和531形成数据字地址的其余部分。为确定存储器存取是否是针对高速缓冲存储器500内经高速缓存的数据(高速缓存命中),高速缓冲存储器500比较所有缓存行的地址标签与经存取的存储器位置的最高有效位。在检测到匹配时,缓存行内的位置连同维度501对应于准许识别经存取点数据字的地址的最低有效位。
每一数据字510、520和530包含对应的有效位512、522和532。此有效位的第一状态指示对应的数据字515、525或535为有效的。此有效位的相反状态指示对应的数据字515、525或535为不有效的。存在存储在高速缓冲存储器500中的数据将为不有效的若干情况。在数字信号处理器系统100的初始激活时,L1I高速缓冲存储器121、L1D高速缓冲存储器123和L2高速缓冲存储器131将不经加载。因此其将不存储有效数据。因此,所有高速缓存行最初被标记为无效。在高速缓冲存储器存取期间,所请求地址与地址标签511、521或531的匹配将直到对应的有效位512、522或532指示数据有效才检测到匹配。
每一数据字510、520和530包含对应的修改数据标志位513、523和533。此有效位的第一状态指示对应的数据字515、525或535为脏(dirty)的。此有效位的相反状态指示对应的数据字515、525或535不为脏的(干净)。高速缓冲存储器通常用于读取存取和写入存取两者。在针对写入存取的高速缓存命中时,将写入数据写入到高速缓冲存储器500内对应的位置中。根据优选的写回技术,此写入数据未立即转发到外部存储器131。代替地,将各自的修改数据标志位513、523和533设置为指示为脏的。脏指示意味已存在对基本存储器中当前未反映的经高速缓存的数据的写入。根据写回技术,将此数据写入到基本存储器,并期望此写回可积累对同一高速缓存行内的存储器位置和附近存储器位置的多次写入,从而减少到外部存储器131的总线上的业务。
当替换高速缓存行时,使用最近最少使用(LRU)位514、524和534。因为高速缓冲存储器不能将所有数据保持存储在大的慢速存储器中,所以必须定期用新的数据来替换高速缓冲存储器内的数据。使用维度501和502内的数据字位置作为最低有效位的代理引入了定位高速缓冲存储器500内的数据的问题。如果仅存在单个高速缓存行在维度501和502上具有相同位置,那么来自大的慢速存储器的多个数据将对于高速缓冲存储器500中的相同高速缓存行混叠。这是因为数据对应于维度501和502而具有相同的最低有效地址位,但具有不同的最高有效地址位。对此类混叠数据的存取将要求所述高速缓存行处的先前数据被替换。这被认为是不利的。典型的现有技术高速缓冲存储器为组相联的。因此一组高速缓存行在维度501和502上具有相同位置。典型的组包含两个部件(两路组相联)或四个部件(四路组相联)。此类组的每一高速缓存行称作通路。对这些组中的一者混叠的对地址的高速缓存未命中仅需要逐出这些通路中的一者。将逐出哪一通路的确定通常基于这些通路的先前使用情况来进行。根据时间和空间位置原理,最近较多使用的高速缓存通路比最近较少使用的高速缓存通路更有可能重新使用。LRU位514、524和534追踪存取所述组内的高速缓存通路。当数据将要被替换时,LRU位指示最近最少使用的通路用于替换。维持高速缓存一致性需要在此类替换时对脏通路的写回。
图7说明根据本发明的确保高速缓存一致性所需的块无效操作。在多核心环境中,CPU1 701正更新其地址范围A内的数据。在CPU1完成后,其它CPU可开始过程702,且更新相同地址范围内的数据。如果在此时间期间CPU1需要存取相同地址范围内的数据,那么其将需要获得数据的更新副本,然而数据中的一些仍可在CPU1中被高速缓存,因此,CPU1可获得旧的数据,除非在相同地址范围内的CPU1的高速缓冲存储器上执行块无效操作703。为了消除CPU1等待直到块无效操作完成的需要,将在所述块无效操作正在进行的同时在每一CPU地址上执行范围检查。如果CPU存取请求导致高速缓存命中但地址在块无效操作的范围内,那么存取请求将被看作为高速缓存未命中,高速缓存控制器将行标记为无效,且发出读取未命中请求,此将确保即使CPU1不等待块无效操作完成,其仍将获得来自主存储器的更新数据。
图8进一步说明根据本发明的在进行中的块无效操作。如果CPU存取区0 803,那么其将被看作为正常存取,这是因为无效操作802已在地址范围的此部分上完成。如果CPU存取映射到区1 801,那么存取将被看作为高速缓存未命中,这是因为此区可具有无效数据,且行将被标记为无效。为了当块无效操作前进到此行时防止所述行二次无效,将有效/无效位添加到LRU。当CPU存取是针对所述块无效操作的地址范围内的区1 801时设置此位,表示所述行已经无效。
Claims (6)
1.一种高速缓存块无效的方法,其包括以下步骤:
接收指示被无效地址的范围的高速缓存块无效命令;
遍及高速缓存的所有高速缓存入口的地址标签来迭代所述高速缓存块无效命令,其包括:
比较每一个高速缓存入口的地址标签与所述被无效地址的范围,且
如果所述地址标签在所述被无效地址的范围内,针对与所述地址标签对应的数据设置无效位来指示无效状态;且
在所述迭代步骤期间,一旦收到高速缓存存取请求:
确定CPU存储器存取是否映射到被无效的地址范围内,其包括:
对于还未被所述高速缓存块无效命令迭代的高速缓存入口,比较被所述高速缓存存取请求存取的地址与所述被无效地址的范围,
如果被所述高速缓存存取请求存取的所述地址在所述无效地址的范围内,产生响应于所述高速缓存存取请求的高速缓存未命中,
如果被所述高速缓存存取请求存取的所述地址不在所述无效地址的范围内,正常处理所述高速缓存存取请求,且
对于已经被所述高速缓存块无效命令迭代的高速缓存入口,正常处理所述高速缓存存取请求。
2.根据权利要求l所述的高速缓存块无效的方法,其中
对于还未被所述高速缓存块无效命令迭代的高速缓存入口产生高速缓存未命中的步骤进一步包括,针对与所述地址标签对应的数据在最近最少使用的指示符内设置有效位来指示无效状态;且
遍及高速缓存的所有高速缓存入口的地址标签迭代所述高速缓存块无效命令的步骤进一步包括,
使用有效/无效位来确定如此标记的行是否需要通过正在进行的所述高速缓存块无效命令而无效。
3.根据权利要求l所述的高速缓存块无效的方法,其中
指示被无效地址的范围的步骤包括指示基址和被无效的字数。
4.一种数据处理设备,其包括:
中央处理单元,其可操作以响应十指令执行数据处理操作;
连接到所述中央处理单元的高速缓存,其在多个高速缓存行中暂时储存通过所述中央处理单元执行的程序指令与通过所述中央处理单元操作的数据中的至少一者,每一个高速缓存行包括地址标签与指示存储在其中的数据字是否有效或无效的至少一个有效位,所述高速缓存响应于指示被无效地址的范围的高速缓存块无效命令而可操作以:
遍及所述高速缓存的所有高速缓存行的地址标签迭代所述高速缓存块无效命令,其包括
比较每一个高速缓存行的地址标签与所述被无效地址的范围,且
如果所述地址标签在所述被无效地址的范围内,针对与所述地址标签对应的数据设置无效位以指示无效状态;且
其中在高速缓存块无效命令的所述迭代期间,所述高速缓存响应于高速缓存存取请求而进一步可操作以:
确定CPU存储器存取是否映射到被无效的地址范围内,其包括:
对于还未被所述高速缓存块无效命令迭代的高速缓存行,比较被所述高速缓存存取请求存取的地址与所述被无效地址的范围,
如果被所述高速缓存存取请求存取的所述地址在所述被无效地址的范围内,产生响应于所述高速缓存存取请求的高速缓存未命中,
如果被所述高速缓存存取请求存取的所述地址不在所述被无效地址的范围内,正常处理所述高速缓存存取请求,且
对于已经被所述高速缓存块无效命令迭代的高速缓存行,正常处理所述高速缓存存取请求。
5.根据权利要求4所述的数据处理设备,其中:
所述高速缓存配置于高速缓存组中,每一个高速缓存组混叠多个外部存储器地址,每一个高速缓存组有多个高速缓存通路,且高速缓存标签进一步包括最近最少使用标签,所述最近最少使用标签指示每一个高速缓存组中最近最少使用的高速缓存通路:
对于还未被所述高速缓存块无效命令迭代的高速缓存入口产生高速缓存未命中进一步包括,针对与所述地址标签对应的数据在最近最少使用的指示符内设置有效位来指示无效状态;且
响应于遍及高速缓存的所有高速缓存行的地址标签的高速缓存块无效命令,所述高速缓存进一步可操作以:
使用有效/无效位来确定如此标记的行是否需要通过正在进行的所述高速缓存块无效命令而无效。
6.根据权利要求4所述的数据处理设备,其中:
被无效地址的范围的所述指示包括指示基址和被无效的字数。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/649,269 US9244837B2 (en) | 2012-10-11 | 2012-10-11 | Zero cycle clock invalidate operation |
US13/649,269 | 2012-10-11 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103729306A CN103729306A (zh) | 2014-04-16 |
CN103729306B true CN103729306B (zh) | 2019-01-08 |
Family
ID=50453387
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310472567.4A Active CN103729306B (zh) | 2012-10-11 | 2013-10-11 | 高速缓存块无效的方法和数据处理设备 |
Country Status (2)
Country | Link |
---|---|
US (2) | US9244837B2 (zh) |
CN (1) | CN103729306B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2862063B1 (en) * | 2012-06-15 | 2022-09-14 | Intel Corporation | A lock-based and synch-based method for out of order loads in a memory consistency model using shared memory resources |
CN104583943B (zh) | 2012-06-15 | 2018-06-08 | 英特尔公司 | 拥有具有分布式结构的动态分派窗口的虚拟加载存储队列 |
EP2862084A4 (en) | 2012-06-15 | 2016-11-30 | Soft Machines Inc | METHOD AND SYSTEM FOR IMPLEMENTING RECOVERY FROM A SPECULATIVE TRANSMISSION OF FAULT FORECASTS / ERRORS DUE TO THE CHANGE AND OPTIMIZATION OF MEMORY LOADS |
KR101996351B1 (ko) | 2012-06-15 | 2019-07-05 | 인텔 코포레이션 | 통합된 구조를 갖는 동적 디스패치 윈도우를 가지는 가상 load store 큐 |
CN104583956B (zh) | 2012-06-15 | 2019-01-04 | 英特尔公司 | 用于实现加载存储重新排序和优化的指令定义 |
CN104583975B (zh) | 2012-06-15 | 2017-07-14 | 英特尔公司 | 无消歧乱序加载存储队列 |
KR101832574B1 (ko) * | 2012-06-15 | 2018-02-26 | 인텔 코포레이션 | 모든 store들이 캐시의 모든 워드들에 대한 검사를 스누핑해야만 하는 것을 방지하기 위해 store들을 필터링하는 방법 및 시스템 |
KR101996592B1 (ko) | 2012-06-15 | 2019-07-04 | 인텔 코포레이션 | 명확화 없는 비순차 load store 큐를 갖는 재정렬된 투기적 명령어 시퀀스들 |
CN104583936B (zh) * | 2012-06-15 | 2019-01-04 | 英特尔公司 | 具有组成按序从存储器进行读取的加载的存储器一致性模型中的乱序加载的信号量方法和系统 |
WO2013188311A1 (en) * | 2012-06-15 | 2013-12-19 | Soft Machines, Inc. | A load store buffer agnostic to threads implementing forwarding from different threads based on store seniority |
US20150363333A1 (en) * | 2014-06-16 | 2015-12-17 | Texas Instruments Incorporated | High performance autonomous hardware engine for inline cryptographic processing |
CN110532121B (zh) * | 2019-08-20 | 2022-08-26 | 新华三大数据技术有限公司 | 业务模块定位方法及装置 |
TWI719745B (zh) * | 2019-12-09 | 2021-02-21 | 瑞昱半導體股份有限公司 | 記憶體資料存取裝置及其方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7743217B2 (en) * | 2005-06-29 | 2010-06-22 | Stmicroelectronics S.A. | Cache consistency in a multiprocessor system with shared memory |
CN102016810A (zh) * | 2008-04-22 | 2011-04-13 | Nxp股份有限公司 | 具有允许写入未预先加载的高速缓存行的高速缓存电路的多处理电路 |
CN102662868A (zh) * | 2012-05-02 | 2012-09-12 | 中国科学院计算技术研究所 | 用于处理器的动态组相联高速缓存装置及其访问方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1182563B1 (en) * | 2000-08-21 | 2009-09-02 | Texas Instruments France | Cache with DMA and dirty bits |
US6651143B2 (en) * | 2000-12-21 | 2003-11-18 | International Business Machines Corporation | Cache management using a buffer for invalidation requests |
KR100532417B1 (ko) * | 2003-01-21 | 2005-11-30 | 삼성전자주식회사 | 디지털 신호 처리장치의 저전력 소비형 캐시 메모리 장치및 이에 대한 제어방법 |
US8037252B2 (en) * | 2007-08-28 | 2011-10-11 | International Business Machines Corporation | Method for reducing coherence enforcement by selective directory update on replacement of unmodified cache blocks in a directory-based coherent multiprocessor |
US7945739B2 (en) * | 2007-08-28 | 2011-05-17 | International Business Machines Corporation | Structure for reducing coherence enforcement by selective directory update on replacement of unmodified cache blocks in a directory-based coherent multiprocessor |
US8090984B2 (en) * | 2008-12-10 | 2012-01-03 | Freescale Semiconductor, Inc. | Error detection and communication of an error location in multi-processor data processing system having processors operating in Lockstep |
CN101989236B (zh) * | 2010-11-04 | 2012-05-09 | 浙江大学 | 一种指令缓存锁实现方法 |
-
2012
- 2012-10-11 US US13/649,269 patent/US9244837B2/en active Active
-
2013
- 2013-10-11 CN CN201310472567.4A patent/CN103729306B/zh active Active
-
2015
- 2015-10-06 US US14/875,801 patent/US9390011B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7743217B2 (en) * | 2005-06-29 | 2010-06-22 | Stmicroelectronics S.A. | Cache consistency in a multiprocessor system with shared memory |
CN102016810A (zh) * | 2008-04-22 | 2011-04-13 | Nxp股份有限公司 | 具有允许写入未预先加载的高速缓存行的高速缓存电路的多处理电路 |
CN102662868A (zh) * | 2012-05-02 | 2012-09-12 | 中国科学院计算技术研究所 | 用于处理器的动态组相联高速缓存装置及其访问方法 |
Also Published As
Publication number | Publication date |
---|---|
US20160026569A1 (en) | 2016-01-28 |
CN103729306A (zh) | 2014-04-16 |
US9244837B2 (en) | 2016-01-26 |
US9390011B2 (en) | 2016-07-12 |
US20140108737A1 (en) | 2014-04-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103729306B (zh) | 高速缓存块无效的方法和数据处理设备 | |
US9513904B2 (en) | Computer processor employing cache memory with per-byte valid bits | |
US9268708B2 (en) | Level one data cache line lock and enhanced snoop protocol during cache victims and writebacks to maintain level one data cache and level two cache coherence | |
US9129071B2 (en) | Coherence controller slot architecture allowing zero latency write commit | |
US7917699B2 (en) | Apparatus and method for controlling the exclusivity mode of a level-two cache | |
US8838906B2 (en) | Evict on write, a management strategy for a prefetch unit and/or first level cache in a multiprocessor system with speculative execution | |
US20140089602A1 (en) | System cache with partial write valid states | |
US11030108B2 (en) | System, apparatus and method for selective enabling of locality-based instruction handling | |
US20170185515A1 (en) | Cpu remote snoop filtering mechanism for field programmable gate array | |
CN103778070B (zh) | 多个块一致性操作的并行处理 | |
US20070288694A1 (en) | Data processing system, processor and method of data processing having controllable store gather windows | |
US9311251B2 (en) | System cache with sticky allocation | |
US10013352B2 (en) | Partner-aware virtual microsectoring for sectored cache architectures |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |