经由地址范围检查的多cpu块无效操作绕过的制作方法

文档序号:6515089阅读:166来源:国知局
经由地址范围检查的多cpu块无效操作绕过的制作方法
【专利摘要】本发明涉及一种高速缓冲存储器系统和一种执行块无效操作的方法。实施例的方法旨在通过使多CPU环境中的块无效操作与正常CPU存取重叠从而使所述块无效操作的延迟变得透明而消除所述延迟。在块无效操作正在进行的同时对每一CPU存取执行范围检查,且将映射到所述块无效操作的地址范围内的存取看作为高速缓存未命中以确保正请求的CPU将接收到有效数据。
【专利说明】经由地址范围检查的多CPU块无效操作绕过
【技术领域】
[0001]本发明的【技术领域】涉及用于数字数据处理器的高速缓冲存储器。
【背景技术】
[0002]在层次型高速缓存系统中,可能需要块无效操作以使高速缓存在存储器系统中的行块无效。在块一致性操作中,用户对需要从高速缓冲存储器移除的基址和字数编程。高速缓存控制器接着遍及整个高速缓冲存储器而迭代,且如果控制器找到在既定地址范围内的地址,那么其将特定设置和方式标记为无效。通常需要块无效操作以保持多处理器系统内的数据一致性。
[0003]图6中说明实例。在多核心环境中,CPU1601正更新地址范围A内的数据。在CPUl完成后,其它CPU可开始过程603,且更新相同地址范围内的数据。如果在此时间期间CPUl需要存取此地址范围内的数据,那么其将需要从其它CPU获得数据的更新副本,然而所需数据中的一些仍可在CPUl中被高速缓存-因此,CPUl将获得旧的数据,除非将在相同地址范围A内的CPUl的高速缓冲存储器上执行块无效602操作。此接着将确保CPUl请求将导致高速缓存未命中,且正确的数据将从主存储器被供应。

【发明内容】

[0004]本发明中所描述的方法通过在块无效操作正在进行的同时在每一尝试CPU存取上进行范围检查而消除块无效操作中的延迟一致性。如果CPU存取导致高速缓存命中但高速缓存地址在块无效操作范围内,那么存取将被看作为高速缓存未命中,从而确保正确的数据将从主存储器存取但无需等待直到块无效操作完成。
【专利附图】

【附图说明】
[0005]在图式中说明本发明的这些和其它方面,其中:
[0006]图1说明本发明可适用的典型数字信号处理器的组织(现有技术);
[0007]图2说明适合用于图1中的很长的指令字的数字信号处理器核心的细节(现有技术);
[0008]图3说明图2中所说明的很长的指令字的数字信号处理器核心的管线级(现有技术);
[0009]图4说明图2中所说明的很长的指令字的数字信号处理器核心的指令语法(现有技术);
[0010]图5说明一组典型现有技术高速缓存行的细节(现有技术);
[0011]图6说明以串行方式进行的块一致性操作;
[0012]图7说明以并行方式进行的块一致性操作;
[0013]图8说明在进行中的高速缓存无效操作。【具体实施方式】
[0014]图1说明本发明可适用的典型数字信号处理器系统100的组织(现有技术)。数字信号处理器系统100包含中央处理单兀核心110。中央处理单兀核心110包含数字信号处理器系统100的数据处理部分。中央处理单元核心110可如所属领域中已知的经构造,且将通常包含寄存器堆、整数算术逻辑单元、整数乘法器和程序流控制单元。下文结合图2到4来描述适当的中央处理单元核心的实例。
[0015]数字信号处理器系统100包含数个高速缓冲存储器。图1说明一对第一等级高速缓冲存储器。一级指令高速缓冲存储器(LlI) 121存储由中央处理单元核心110使用的指令。中央处理单元核心110首先尝试从一级指令高速缓冲存储器121存取任何指令。一级数据高速缓冲存储器(LlD) 123存储由中央处理单元核心110使用的数据。中央处理单元核心110首先尝试从一级数据高速缓冲存储器123存取任何所需数据。两个一级高速缓冲存储器由二级统一高速缓冲存储器(L2) 130支持。在高速缓存未命中一级指令高速缓冲存储器121或一级数据高速缓冲存储器123的情况下,从二级统一高速缓冲存储器130寻求所请求的指令或数据。如果将所请求的指令或数据存储在二级统一高速缓冲存储器130中,那么将其供应到正请求的一级高速缓冲存储器以用于供应到中央处理单元核心110。如所属领域中已知的,可将所请求的指令或数据同时供应到正请求的高速缓冲存储器和中央处理单元核心110两者以加速使用。
[0016]二级统一高速缓冲存储器130进一步耦合到高级存储器系统。数字信号处理器系统100可为多处理器系统的部分。多处理器系统的其它处理器经由传送请求总线141和数据传送总线143而耦合到二级统一高速缓冲存储器130。直接存储器存取单元150提供数字信号处理器系统100到外部存储器161和外部外围设备169的连接。
[0017]图1说明在数字信号处理器系统100内的若干数据/指令移动。这些移动包含:(I)响应于LlI高速缓存未命中,指令从L2高速缓冲存储器130移动到LlI高速缓冲存储器121以填充;(2)响应于LlD高速缓存未命中,数据从L2高速缓冲存储器130移动到LlD高速缓冲存储器123以填充;(3)响应于LlD高速缓冲存储器123中的写入未命中、响应于LlD高速缓冲存储器123受害逐出(victim eviction)且响应于来自L2高速缓冲存储器130的窥探,数据从LlD高速缓冲存储器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。
[0018]图2为说明适合但非必需用于本发明的数字信号处理器集成电路200的细节的框图(现有技术)。数字信号处理器集成电路200包含中央处理单元I,其为32位八路VLIW管线化处理器。中央处理单元I耦合到包含在数字信号处理器集成电路200中的一级指令高速缓冲存储器121。数字信号处理器集成电路200还包含一级数据高速缓冲存储器123。数字信号处理器集成电路200还包含外围设备4到9。这些外围设备优选包含外部存储器接口(EMIF) 4和直接存储器存取(DMA)控制器5。外部存储器接口(EMIF) 4优选支持存取同步和异步SRAM以及同步DRAM。直接存储器存取(DMA)控制器5优选提供2通道自启动加载直接存储器存取。这些外围设备包含断电逻辑6。断电逻辑6优选可停止中央处理单元活动、外围设备活动和锁相环路(PLL)时钟同步活动以减少功率消耗。这些外围设备还包含主机端口 7、串行端口 8和可编程计时器9。
[0019]中央处理单元I具有32位字节可寻址的地址空间。同一集成电路上的内部存储器优选被组织在包含一级数据高速缓冲存储器123的数据空间和包含一级指令高速缓冲存储器121的程序空间中。当使用芯片外存储器时,优选经由外部存储器接口(EMIF)4来将这两个空间统一为单个存储器空间。
[0020]一级数据高速缓冲存储器123可由中央处理单元I经由两个内部端口 3a和3b在内部存取。每一内部端口 3a和3b优选具有32位的数据和32位字节地址范围(reach)。一级指令高速缓冲存储器121可由中央处理单元I经由单个端口 2a在内部存取。一级指令高速缓冲存储器121的端口 2a优选具有256位的指令提取宽度和等效于32位字节地址的30位字(四字节)地址。
[0021]中央处理单元I包含程序提取单元10、指令分派单元11、指令解码单元12和两个数据路径20和30。第一数据路径20包含四个功能单元(表示为LI单元22、SI单元23、Ml单元24和Dl单元25)和形成寄存器堆21的16个32位A寄存器。第二数据路径30同样地包含四个功能单元(表示为L2单元32、S2单元33、M2单元34和D2单元35)和形成寄存器堆31的16个32位B寄存器。每一数据路径的功能单元针对其操作数而存取对应的寄存器堆。每一管线级存在准许存取相对寄存器堆中的一个寄存器的两个交叉路径27和37。中央处理单元I包含控制寄存器13、控制逻辑14、以及测试逻辑15、仿真逻辑16和中断逻辑17。
[0022]程序提取单元10、指令分派单元11和指令解码单元12在每个指令周期从一级指令高速缓冲存储器121撤销指令,且将八个32位指令向上递送到功能单元。处理在两个数据路径20和30中的每一者中同时发生。如先前描述,每一数据路径具有四个对应功能单元仏、3』和0)和含有16个32位寄存器的对应寄存器堆。每一功能单元由32位指令控制。下文进一步描述数据路径。控制寄存器堆13提供用以配置且控制各种处理器操作的构件。
[0023]图3说明数字信号处理器核心110的管线级300 (现有技术)。这些管线级分为三个群组:提取群组310 ;解码群组320 ;以及执行群组330。指令集中的所有指令流经管线的提取、解码和执行级。提取群组310具有用于所有指令的四阶段,且解码群组320具有用于所有指令的两阶段。执行群组330取决于指令的类型而需要变化数目个阶段。
[0024]提取群组310的提取阶段为:程序地址产生阶段311 (PG);程序地址发送阶段312 (PS);程序存取准备等待级313 (PW);以及程序提取包接收级314 (PR)。数字信号处理器核心110使用八个指令的提取包(FP)。所有八个指令一起前进经过提取群组310。在PG阶段311期间,在程序提取单元10中产生程序地址。在PS阶段312期间,将此程序地址发送到存储器。在PW阶段313期间,发生存储器读取。最后在PR阶段314期间,在CPUl处接收提取包。
[0025]解码群组320的解码阶段为:指令分派(DP) 321 ;以及指令解码(DC) 322。在DP阶段321期间,提取包分裂为若干执行包。执行包由经译码以并行执行的一个或一个以上指令组成。在DP阶段322期间,将执行包中的指令指派到适当的功能单元。同样在DC阶段322期间,对源寄存器、目的地寄存器和相关联的路径解码以用于执行相应功能单元中的指令。
[0026]执行群组330的执行阶段为:执行I (El) 331 ;执行2 (E2) 332 ;执行3 (E3) 333 ;执行4 (E4) 334;以及执行5 (E5) 335。不同类型的指令需要不同数目个这些阶段来完成。管线的这些阶段在理解CPU周期边界处的装置状态方面起到重要作用。
[0027]在El阶段331期间,估计指令的条件且读取所有指令类型的操作数。对于加载和存储指令,执行地址产生且将地址修改写入到寄存器堆。对于分支指令,PG阶段311中的分支提取包受到影响。对于所有单周期指令,将结果写入到寄存器堆。所有单周期指令在El阶段331期间完成。
[0028]在E2阶段332期间,对于加载指令,将地址发送到存储器。对于存储指令,将地址和数据发送到存储器。使结果饱和的单周期指令在发生饱和的情况下设置控制状态寄存器(CSR)中的SAT位。对于单周期16乘16乘法指令,将结果写入到寄存器堆。对于M单位非乘法指令,将结果写入到寄存器堆。所有普通乘法单元指令在E2阶段322期间完成。
[0029]在E3阶段333期间,执行数据存储器存取。使结果饱和的任何乘法指令在发生饱和的情况下设置控制状态寄存器(CSR)中的SAT位。存储指令在E3阶段333期间完成。
[0030]在E4阶段334期间,对于加载指令,将数据带到CPU边界。对于乘法扩展指令,将结果写入到寄存器堆。乘法扩展指令在E4阶段334期间完成。
[0031]在E5阶段335期间,加载指令将数据写入到寄存器中。加载指令在E5阶段335期间完成。
[0032]图4说明由数字信号处理器核心110使用的指令的指令译码的实例(现有技术)。每一指令由32位组成,且控制八个功能单元中的一者的操作。如下定义位字段。Creg字段(位29到31)是条件寄存器字段。这些位识别指令是否为有条件的,且识别预测寄存器。z位(位28)指示预测是基于预测寄存器中的零还是非零。如果z=l,那么测试是针对零等同性。如果z=0,那么测试是针对非零。将Creg=O和Z=O的情况看作为总是成立的,以允许无条件指令执行。如表1中所示,在指令操作码中编码creg字段。
条件寄存器 _creg__
__31 I 30 29 28

无条件 O I O I O I O
保留~O~OO I
r n BOOOI 1.1 ζ
B1.丨I O I 7,
Β2~ OII
AlIOO ζ
Α2IOIζ
AOIIO ζ
___II I X
[0034]表1
[0035]注意,ζ位列中的“ζ”指代上文所述的零/非零比较选择,且“X”为不在乎状态。此译码可仅将每一寄存器堆中的32个寄存器子集指定为预测寄存器。进行此选择以保存指令译码中的位。
[0036]dst字段(位23到27)将对应寄存器堆中的32个寄存器中的一者指定为指令结果的目的地。
[0037]scr2字段(位18到22)将对应寄存器堆中的32个寄存器中的一者指定为第二源操作数。
[0038]scrl / cst字段(位13到17)取决于指令操作码字段(位3到12)而具有若干含义。第一含义将对应寄存器堆中的32个寄存器中的一者指定为第一操作数。第二含义为5位立即数常数。取决于指令类型,将此看作为扩展到32位的不带符号的整数和零或看作为扩展到32位的带符号的整数和符号。最后,如果指令调用寄存器堆交叉路径27或37中的一者,那么此字段可指定相对寄存器堆中的32个寄存器中的一者。
[0039]操作码字段(位3到12)指定指令的类型且表示适当的指令选项。此字段的详细解释除了下文细述的指令选项之外而超出本发明的范围。
[0040]s位(位I)表示数据路径20或30。如果s=0,那么选择数据路径20。此将功能单元限于LI单元22、S1单元23、M1单元24和Dl单元25以及对应的寄存器堆A21。类似地,s=l选择了数据路径20,从而将功能单元限于L2单元32、S2单元33、M2单元34和D2单元35以及对应的寄存器堆B31。
[0041]P位(位O)标记执行包。P位确定指令是否与以下指令并行执行。从低地址到高地址扫描P个位。如果对于当前指令来说p=l,那么下一指令与当前指令并行执行。如果对于当前指令来说P=0,那么下一指令在当前指令之后的周期中执行。并行执行的所有指令构成执行包。执行包可含有多达八个指令。执行包中的每一指令必须使用不同的功能单元。
[0042]图5说明例如用于图1中所说明的LlI高速缓冲存储器121、LlD高速缓冲存储器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的位长度由CPUllO的最小可寻址数据量来设置。此通常为8位/ I字节。
[0043]高速缓冲存储器500存储来自例如外部存储器131等的较远的存储器的数据,所述存储器由多位地址存取。高速缓冲存储器500经组织以促进此存储以及促进找到所述高速缓冲存储器中的此类数据。每一高速缓存行510、520和530通常存储2N个各自的数据字515,525和535,其中N为整数。对应高速缓存行510,520和530内的数据字515,525和535的位置连同维度501充当地址的最低有效位的代理。
[0044]若干行内经高速缓存的数据的位置连同维度502充当地址的下一最高有效位的代理。对应地址标签511、521和531形成数据字地址的其余部分。为确定存储器存取是否是针对高速缓冲存储器500内经高速缓存的数据(高速缓存命中),高速缓冲存储器500比较所有缓存行的地址标签与经存取的存储器位置的最高有效位。在检测到匹配时,缓存行内的位置连同维度501对应于准许识别经存取点数据字的地址的最低有效位。
[0045]每一数据字510、520和530包含对应的有效位512、522和532。此有效位的第一状态指示对应的数据字515、525或535为有效的。此有效位的相反状态指示对应的数据字515,525或535为不有效的。存在存储在高速缓冲存储器500中的数据将为不有效的若干情况。在数字信号处理器系统100的初始激活时,LlI高速缓冲存储器121、LlD高速缓冲存储器123和L2高速缓冲存储器131将不经加载。因此其将不存储有效数据。因此,所有高速缓存行最初被标记为无效。在高速缓冲存储器存取期间,所请求地址与地址标签511、521或531的匹配将直到对应的有效位512、522或532指示数据有效才检测到匹配。
[0046]每一数据字510、520和530包含对应的修改数据标志位513、523和533。此有效位的第一状态指示对应的数据字515、525或535为脏(dirty)的。此有效位的相反状态指示对应的数据字515、525或535不为脏的(干净)。高速缓冲存储器通常用于读取存取和写入存取两者。在针对写入存取的高速缓存命中时,将写入数据写入到高速缓冲存储器500内对应的位置中。根据优选的写回技术,此写入数据未立即转发到外部存储器131。代替地,将各自的修改数据标志位513、523和533设置为指示为脏的。脏指示意味已存在对基本存储器中当前未反映的经高速缓存的数据的写入。根据写回技术,将此数据写入到基本存储器,并期望此写回可积累对同一高速缓存行内的存储器位置和附近存储器位置的多次写入,从而减少到外部存储器131的总线上的业务。
[0047]当替换高速缓存行时,使用最近最少使用(LRU)位514、524和534。因为高速缓冲存储器不能将所有数据保持存储在大的慢速存储器中,所以必须定期用新的数据来替换高速缓冲存储器内的数据。使用维度501和502内的数据字位置作为最低有效位的代理引入了定位高速缓冲存储器500内的数据的问题。如果仅存在单个高速缓存行在维度501和502上具有相同位置,那么来自大的慢速存储器的多个数据将对于高速缓冲存储器500中的相同高速缓存行混叠。这是因为数据对应于维度501和502而具有相同的最低有效地址位,但具有不同的最高有效地址位。对此类混叠数据的存取将要求所述高速缓存行处的先前数据被替换。这被认为是不利的。典型的现有技术高速缓冲存储器为组相联的。因此一组高速缓存行在维度501和502上具有相同位置。典型的组包含两个部件(两路组相联)或四个部件(四路组相联)。此类组的每一高速缓存行称作通路。对这些组中的一者混叠的对地址的高速缓存未命中仅需要逐出这些通路中的一者。将逐出哪一通路的确定通常基于这些通路的先前使用情况来进行。根据时间和空间位置原理,最近较多使用的高速缓存通路比最近较少使用的高速缓存通路更有可能重新使用。LRU位514、524和534追踪存取所述组内的高速缓存通路。当数据将要被替换时,LRU位指示最近最少使用的通路用于替换。维持高速缓存一致性需要在此类替换时对脏通路的写回。
[0048]图7说明根据本发明的确保高速缓存一致性所需的块无效操作。在多核心环境中,CPU1701正更新其地址范围A内的数据。在CPUl完成后,其它CPU可开始过程702,且更新相同地址范围内的数据。如果在此时间期间CPUl需要存取相同地址范围内的数据,那么其将需要获得数据的更新副本,然而数据中的一些仍可在CPUl中被高速缓存,因此,CPUl可获得旧的数据,除非在相同地址范围内的CPUl的高速缓冲存储器上执行块无效操作703。为了消除CPUl等待直到块无效操作完成的需要,将在所述块无效操作正在进行的同时在每一 CPU地址上执行范围检查。如果CPU存取请求导致高速缓存命中但地址在块无效操作的范围内,那么存取请求将被看作为高速缓存未命中,高速缓存控制器将行标记为无效,且发出读取未命中请求,此将确保即使CPUl不等待块无效操作完成,其仍将获得来自主存储器的更新数据。
[0049]图8进一步说明根据本发明的在进行中的块无效操作。如果CPU存取区O 803,那么其将被看作为正常存取,这是因为无效操作802已在地址范围的此部分上完成。如果(PU存取映射到区I 801,那么存取将被看作为高速缓存未命中,这是因为此区可具有无效数据,且行将被标记为无效。为了当块无效操作前进到此行时防止所述行二次无效,将有效/无效位添加到LRU。当CPU存取是针对所述块无效操作的地址范围内的区I 801时设置此位,表示所述行已经无效。
【权利要求】
1.一种执行块无效操作的方法,其包括以下步骤: 确定CPU存储器存取是否映射到块无效操作的地址范围内; 强制所述范围内存储器存取的高速缓存未命中; 将经存取的高速缓存行标记为无效; 发出针对所述存取的读取未命中请求; 在LRU中将有效/无效位设置为无效; 使用所述有效/无效位来确定如此标记的所述行是否需要通过正在进行的所述块无效操作而无效。
2.一种在多CPU环境中的高速缓冲存储器系统,其中: 当多个CPU存取高速缓冲存储器中的数据时,通过块无效操作来确保高速缓存一致性; 在块无效操作期间监视CPU存储器存取请求,以确定所述CPU存储器存取请求是否映射到所述块无效操作的地址范围内的位置,且所述范围内的存取被看作为高速缓存未命中; 针对所述高速缓存未命中而发出读取未命中请求,因此确保发出所述存储器存取请求的所述CPU将接收到来自主存储器的有效数据。
【文档编号】G06F13/28GK103729306SQ201310472567
【公开日】2014年4月16日 申请日期:2013年10月11日 优先权日:2012年10月11日
【发明者】纳韦恩·布霍里亚, 拉古拉姆·达莫达兰, 阿比吉特·阿肖克·查查德 申请人:德州仪器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1