CN103729306A - 经由地址范围检查的多cpu块无效操作绕过 - Google Patents

经由地址范围检查的多cpu块无效操作绕过 Download PDF

Info

Publication number
CN103729306A
CN103729306A CN201310472567.4A CN201310472567A CN103729306A CN 103729306 A CN103729306 A CN 103729306A CN 201310472567 A CN201310472567 A CN 201310472567A CN 103729306 A CN103729306 A CN 103729306A
Authority
CN
China
Prior art keywords
cache
data
access
cpu
instruction
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
CN201310472567.4A
Other languages
English (en)
Other versions
CN103729306B (zh
Inventor
纳韦恩·布霍里亚
拉古拉姆·达莫达兰
阿比吉特·阿肖克·查查德
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.)
Texas Instruments Inc
Original Assignee
Texas Instruments Inc
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 Texas Instruments Inc filed Critical Texas Instruments Inc
Publication of CN103729306A publication Critical patent/CN103729306A/zh
Application granted granted Critical
Publication of CN103729306B publication Critical patent/CN103729306B/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
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0808Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating 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/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
    • 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/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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
    • G06F2212/1021Hit rate 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/62Details of cache specific to multiprocessor cache arrangements
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明涉及一种高速缓冲存储器系统和一种执行块无效操作的方法。实施例的方法旨在通过使多CPU环境中的块无效操作与正常CPU存取重叠从而使所述块无效操作的延迟变得透明而消除所述延迟。在块无效操作正在进行的同时对每一CPU存取执行范围检查,且将映射到所述块无效操作的地址范围内的存取看作为高速缓存未命中以确保正请求的CPU将接收到有效数据。

Description

经由地址范围检查的多CPU块无效操作绕过
技术领域
本发明的技术领域涉及用于数字数据处理器的高速缓冲存储器。
背景技术
在层次型高速缓存系统中,可能需要块无效操作以使高速缓存在存储器系统中的行块无效。在块一致性操作中,用户对需要从高速缓冲存储器移除的基址和字数编程。高速缓存控制器接着遍及整个高速缓冲存储器而迭代,且如果控制器找到在既定地址范围内的地址,那么其将特定设置和方式标记为无效。通常需要块无效操作以保持多处理器系统内的数据一致性。
图6中说明实例。在多核心环境中,CPU1601正更新地址范围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期间,在CPU1处接收提取包。
解码群组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字段。
Figure BDA0000393808930000051
表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以及对应的寄存器堆A21。类似地,s=1选择了数据路径20,从而将功能单元限于L2单元32、S2单元33、M2单元34和D2单元35以及对应的寄存器堆B31。
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说明根据本发明的确保高速缓存一致性所需的块无效操作。在多核心环境中,CPU1701正更新其地址范围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 (2)

1.一种执行块无效操作的方法,其包括以下步骤:
确定CPU存储器存取是否映射到块无效操作的地址范围内;
强制所述范围内存储器存取的高速缓存未命中;
将经存取的高速缓存行标记为无效;
发出针对所述存取的读取未命中请求;
在LRU中将有效/无效位设置为无效;
使用所述有效/无效位来确定如此标记的所述行是否需要通过正在进行的所述块无效操作而无效。
2.一种在多CPU环境中的高速缓冲存储器系统,其中:
当多个CPU存取高速缓冲存储器中的数据时,通过块无效操作来确保高速缓存一致性;
在块无效操作期间监视CPU存储器存取请求,以确定所述CPU存储器存取请求是否映射到所述块无效操作的地址范围内的位置,且所述范围内的存取被看作为高速缓存未命中;
针对所述高速缓存未命中而发出读取未命中请求,因此确保发出所述存储器存取请求的所述CPU将接收到来自主存储器的有效数据。
CN201310472567.4A 2012-10-11 2013-10-11 高速缓存块无效的方法和数据处理设备 Active CN103729306B (zh)

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 true CN103729306A (zh) 2014-04-16
CN103729306B 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)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110825672A (zh) * 2014-06-16 2020-02-21 德州仪器公司 用于联机加密处理的高性能自主硬件引擎

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2862069A4 (en) 2012-06-15 2016-12-28 Soft Machines Inc DEFINING INSTRUCTIONS TO REORDER AND OPTIMIZE LOADING AND STORAGE
KR101818967B1 (ko) 2012-06-15 2018-01-16 인텔 코포레이션 명확화 없는 비순차 load store 큐
WO2013188306A1 (en) 2012-06-15 2013-12-19 Soft Machines, Inc. Reordered speculative instruction sequences with a disambiguation-free out of order load store queue
KR101745640B1 (ko) * 2012-06-15 2017-06-09 인텔 코포레이션 공유 메모리 자원들을 사용하는 메모리 일관성 모델에서 비순차 load들에 대한 로크 기반 및 동기화 기반 방법
EP2862058B1 (en) * 2012-06-15 2021-05-19 Intel Corporation A semaphore method and system with out of order loads in a memory consistency model that constitutes loads reading from memory in order
CN104583939B (zh) * 2012-06-15 2018-02-23 英特尔公司 用于选择指令的系统和方法
CN104823154B (zh) 2012-06-15 2017-12-29 英特尔公司 包括虚拟加载存储队列的处理器和系统
KR101702788B1 (ko) * 2012-06-15 2017-02-03 소프트 머신즈, 인크. 스토어 상위 서열에 기초하여 상이한 스레드들로부터의 포워딩을 구현하는 스레드에 무관한 로드 스토어 버퍼
EP2862062B1 (en) 2012-06-15 2024-03-06 Intel Corporation A virtual load store queue having a dynamic dispatch window with a distributed structure
WO2013188701A1 (en) 2012-06-15 2013-12-19 Soft Machines, Inc. A method and system for implementing recovery from speculative forwarding miss-predictions/errors resulting from load store reordering and optimization
CN110532121B (zh) * 2019-08-20 2022-08-26 新华三大数据技术有限公司 业务模块定位方法及装置
TWI719745B (zh) * 2019-12-09 2021-02-21 瑞昱半導體股份有限公司 記憶體資料存取裝置及其方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090063771A1 (en) * 2007-08-28 2009-03-05 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
US7743217B2 (en) * 2005-06-29 2010-06-22 Stmicroelectronics S.A. Cache consistency in a multiprocessor system with shared memory
CN101989236A (zh) * 2010-11-04 2011-03-23 浙江大学 一种指令缓存锁实现方法
CN102016810A (zh) * 2008-04-22 2011-04-13 Nxp股份有限公司 具有允许写入未预先加载的高速缓存行的高速缓存电路的多处理电路
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
CN102662868A (zh) * 2012-05-02 2012-09-12 中国科学院计算技术研究所 用于处理器的动态组相联高速缓存装置及其访问方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
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 삼성전자주식회사 디지털 신호 처리장치의 저전력 소비형 캐시 메모리 장치및 이에 대한 제어방법
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

Patent Citations (6)

* Cited by examiner, † Cited by third party
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
US20090063771A1 (en) * 2007-08-28 2009-03-05 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
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
CN102016810A (zh) * 2008-04-22 2011-04-13 Nxp股份有限公司 具有允许写入未预先加载的高速缓存行的高速缓存电路的多处理电路
CN101989236A (zh) * 2010-11-04 2011-03-23 浙江大学 一种指令缓存锁实现方法
CN102662868A (zh) * 2012-05-02 2012-09-12 中国科学院计算技术研究所 用于处理器的动态组相联高速缓存装置及其访问方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110825672A (zh) * 2014-06-16 2020-02-21 德州仪器公司 用于联机加密处理的高性能自主硬件引擎
CN110825672B (zh) * 2014-06-16 2023-11-28 德州仪器公司 用于联机加密处理的高性能自主硬件引擎

Also Published As

Publication number Publication date
US20160026569A1 (en) 2016-01-28
US9390011B2 (en) 2016-07-12
US9244837B2 (en) 2016-01-26
US20140108737A1 (en) 2014-04-17
CN103729306B (zh) 2019-01-08

Similar Documents

Publication Publication Date Title
CN103729306A (zh) 经由地址范围检查的多cpu块无效操作绕过
US10802987B2 (en) Computer processor employing cache memory storing backless cache lines
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
CN101770429B (zh) 用于在硬件中保存有损失的元数据的元物理地址空间
US7899993B2 (en) Microprocessor having a power-saving instruction cache way predictor and instruction replacement scheme
EP0734553B1 (en) Split level cache
KR101626533B1 (ko) 가비지 콜렉션을 위한 gpu 서포트
KR102611813B1 (ko) 바이패스 최적화, 가변 그리드 아키텍처 및 융합된 벡터 동작들을 갖는 코프로세서들
CN109558168A (zh) 低等待时间加速器
EP1278125A2 (en) Indexing and multiplexing of interleaved cache memory arrays
CN104813278B (zh) 对二进制转换的自修改代码以及交叉修改代码的处理
CN103778070A (zh) 多个块一致性操作的并行处理
CN103198026A (zh) 指令高速缓存功耗降低
CN112631961A (zh) 一种内存管理单元、地址转译方法以及处理器
US11726920B2 (en) Tag processing for external caches
CN115098409A (zh) 进行阶层式高速缓存系统回存且无效的处理器以及方法
WO2009156920A1 (en) Method, register file system, and processing unit device enabling substantially direct cache memory access

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