高速缓冲存储器及其控制方法

文档序号:6499481阅读:209来源:国知局
专利名称:高速缓冲存储器及其控制方法
技术领域
本发明涉及用于提高处理器的内存存取速度的高速缓冲存储器及其控制方法。
背景技术
以往,高速缓冲存储器被广泛应用于缩短主存储装置的存取时间和提高处理器的处理能力。
例如(日本)特开平6-266620号公报等公开的高速缓冲存储器,将主内存中的块单位数据保存在各项目,并通过该项目,进行数据的传输控制和互斥控制,该数据对应于来自进行多任务处理的处理单元的存取。该高速缓冲存储器在结构上,根据对每个项目设置任务识别信息注册部,该任务识别信息注册部对处理单元的各任务的识别信息进行注册,该处理单元是将在项目中保存的块作为互斥控制的对象而设置的。该高速缓冲存储器以任务单位,进行项目中保存的块的互斥控制及该互斥控制的设置和解除。
根据该高速缓冲存储器,谋求高效进行多任务处理中的互斥控制、消除任务间共享的数据的矛盾。
但是,上述已有技术中的高速缓冲存储器中存在这样一个问题,即随着处理器的任务切换,高速缓冲存储器的命中率会受到不在运行中的其他任务的影响。
例如,在任务A的指令串(或数据)被存放在高速缓冲存储器的状态下,当从运行任务A被切换到运行任务B时,由于任务B的运行,高速缓冲存储器中的任务A的指令串(或数据)被逐出。而问题是,若任务A的指令串(或数据)从高速缓冲存储器被逐出,则再次运行任务A时,将发生高速缓存缺失。尤其是对于压缩声音数据及压缩图像数据的解码/编码处理等需要实时性的处理中,由于上述任务切换带来的其他任务的影响,导致任务切换后高速缓存的置换处理侵占任务的分配时间,无法确保所需的处理时间,从而造成损害实时性或无法确定处理时间的问题。

发明内容
本发明提供一种高速缓冲存储器,其目的在于防止高速缓冲存储器接受任务切换带来的其他任务的影响,并简便地确保任务的实质处理时间。
为了达到上述目的,根据本发明的高速缓冲存储器是N-路组联方式的高速缓冲存储器,其特征在于,包括控制寄存器,示出N个通路中的1个或多个通路;控制单元,使控制寄存器示出的通路激活;以及更新单元,对控制寄存器的内容进行更新。
根据该结构,只使由控制寄存器示出的通路激活,而且控制寄存器的内容是可以更新的,因此可以根据处理器执行的处理,动态设置激活通路。若任务和通路相对应,则可以消除这样一个现象,即,在任务切换后,所需要的数据被其他任务从高速缓冲存储器中逐出的现象。而且可以防止命中率受到任务切换带来的影响。结果,可以简便地确保任务所需要的实质处理时间。
在此,上述控制单元可以采取这样一个结构即对由控制寄存器示出的激活通路以外的通路(称为非激活通路),至少限制置换。
根据该结构,对于非激活通路,至少限制置换。即,对于非激活通路,可以设为完全禁用,也可以只将置换设为禁用。在后者的情况下,对高速缓冲存储器的读/写不受限制,因此能够防止命中率降低,并且能有效利用非激活通路。
这里,也可以采用这样一个结构上述高速缓冲存储器还包括标记保持单元,对每个通路设置,并将高速缓存数据的地址作为标记保持;以及N个比较单元,通过比较标记地址和N个标记,判定是命中还是非命中,该标记地址是由处理器输出的内存存取地址的高位部分,该N个标记是由标记保持单元输出的标记,上述控制单元将与控制寄存器示出的激活通路以外的通路对应的比较单元设为禁用。
根据该结构,由于将与非激活通路对应的比较单元设为禁用,所以能够减少比较单元的耗电量。
在此,也可以采用这样一个结构上述控制单元还对与控制寄存器示出的激活通路以外的通路对应的高速缓存地址保持单元,将向比较单元的标记输出设为禁用。
根据该结构,由于与非激活通路对应的标记输出和比较单元被设为禁用,所以能够减少标记保持单元的耗电量。
这里,可以采用这样一个结构上述控制单元当由处理器输出内存存取地址时,控制比较单元对该存取地址最多进行两次标记比较,在第一次标记比较中,将与由控制寄存器示出的激活通路以外的通路对应的比较单元设为禁用,当第一次标记比较中被判定为非命中时,不将与激活通路以外通路对应的比较单元设为禁用,使之进行第二次标记比较。
根据该结构,在第一次标记比较中的命中率越高,越能减少比较单元的耗电量,并且当第一次标记比较中非命中时进行第二次标记比较,所以也可以有效利用非激活通路的高速缓存数据。
这里,也可以采用这样一个结构上述控制单元在上述第二次标记比较中,将与激活通路对应的比较单元设为禁用。
根据该结构,由于在第二次比较中只有对应于非激活通路的比较单元进行标记比较,所以可以进一步减少耗电量。
在此,也可以采用这样一个结构上述控制单元对由控制寄存器示出的激活通路以外的通路,禁止其状态的更新。
根据该结构,例如禁止表示非激活通路状态的标志类的更新,从而能够防止对非激活通路的任务切换带来的影响。
这里,也可以采用这样一个结构上述控制单元对由控制寄存器示出的激活通路以外的通路,禁止表示其存取顺序信息的更新。
根据该结构,由于禁止表示存取顺序的信息的更新,所以在被分配到激活通路的任务非命中的情况下,置换顺序不能因更新单元的更新而变化。
在此,也可以采用这样一个结构上述高速缓冲存储器还包括重置单元,当控制寄存器的内容被上述更新单元更新时,将表示对通路的存取顺序的信息进行重置。再者,也可以采用这样一个结构上述表示存取顺序的信息是每个高速缓存项目的1位数据;上述高速缓冲存储器还包括寄存器,保持表示循环位置的数据,该循环位置用于以循环方式从可置换的多个通路中选择1个通路;上述重置单元,当由上述更新单元更新控制寄存器的内容时,重置上述寄存器。
根据该结构,可以在分配非激活通路的任务非命中的情况下,消除对置换顺序带来的影响。
这里,可以采用这样一个结构上述更新单元包括保持单元,保持每个任务的通路数据,该通路数据指定应激活的通路;以及改写单元,改写上述控制寄存器,以保持与正在运行的任务对应的通路数据。
根据该结构,由于在每次切换任务时,对控制寄存器进行动态改写,所以可以使其他每个任务与激活通路相对应。
在此,可以采用这样一个结构上述保持单元将上述通路数据作为内存中存储的每个任务的上下文数据的一部分而保持;上述改写单元在任务切换时,将控制寄存器中的当前任务的通路数据保留在内存,并将下一任务的通路数据从内存恢复到上述控制寄存器。
根据该结构,由于OS(Operating System;操作系统)的任务切换,可以简便地实现控制寄存器的更新,而不需要大量追加高速缓冲存储器的硬件。
在此,可以采用这样一个结构上述保持单元保持每个任务的上述通路数据,上述改写单元包括地址存储单元,存储内存中所存储的各任务的地址范围;判别单元,根据地址存储单元中所存储的地址范围和由处理器输出的读取指令地址,对正在运行的任务进行判别;选择单元,从上述保持单元中选择与被判别的正在运行的任务对应的通路数据;以及写入单元,将被选择的通路数据写入上述控制寄存器。
根据该结构,控制寄存器的更新是通过高速缓冲存储器本身主动判断来进行的,所以对任何处理器,都能使与每个任务对应的通路激活。
这里,可以采用这样一个结构上述保持单元保持每个任务的上述通路数据;上述改写单元包括选择单元,按照由处理器输出的任务编号,从上述保持单元选择与正在运行的任务对应的通路数据;以及写入单元,将被选择的通路数据写入上述控制寄存器。
根据该结构,由于使用处理器输出的任务编号,所以不需要大量追加硬件,而简便地更新控制寄存器,可使与每个任务对应的通路激活。
在此,也可以采用这样一个结构保持在上述保持单元的通路数据被操作系统分配给任务。
根据该结构,通过由操作系统将通路分配给任务,对各任务的通路分配的最优化变得容易。
这里,也可以采用这样一个结构上述高速缓冲存储器可以在高速缓存项目的行大小和行大小的2的n次方分之1之间切换各通路中的置换单位;上述控制寄存器还示出每个通路的置换大小;上述控制单元以控制寄存器示出的置换大小为单位进行置换控制。
再者,也可以采用这样一个结构上述控制单元对由控制寄存器示出的激活通路以外的通路至少限制置换;对由控制寄存器示出的激活通路,以控制寄存器示出的大小为单位进行置换。
在此,也可以采用这样一个结构上述更新单元包括保持单元,保持每个任务的通路数据和每个任务的置换大小,该通路数据指定应激活的通路;以及改写单元,改写上述控制寄存器,以保持与正在运行的任务对应的通路数据及置换大小。
根据该结构,在对每个任务切换激活通路的同时,也可以切换置换单位,所以能够根据任务处理内容来减少非命中。
这里,本发明的控制方法是N-路组联方式的高速缓冲存储器的控制方法,包括将通路数据设置到控制寄存器的步骤,该通路数据表示N个通路中的1个或多个通路;以及控制步骤,使控制寄存器示出的通路激活。
在此,上述控制步骤也可以对由控制寄存器示出的激活通路以外的通路,至少限制置换。
这里,也可以采用这样一个结构上述控制方法还包括更新步骤,从保持部读出与对正在运行的任务对应的通路数据,并将读出的通路数据写入上述控制寄存器,该保持部保持每个任务的通路数据,该通路数据指定应激活的通路。
如上所述,根据本发明的高速缓冲存储器,由于处理器根据所执行的处理动态设置激活通路,所以在任务和通路相对应的情况下,可以解除这样一个现状,即在任务切换后所需要的任务被其他任务从高速缓冲存储器逐出的现状,并能防止任务切换带来的其他任务给命中率的影响。


图1是表示本发明的实施方式1中包括处理器、高速缓冲存储器、内存在内的系统大致结构的方框图。
图2是表示高速缓冲存储器结构例的方框图。
图3是表示通路寄存器的位结构的示意图。
图4是表示通路寄存器与通路之间对应关系的示意图。
图5是表示控制部中的置换处理的流程图。
图6是表示任务切换处理的流程图。
图7是表示任务区域的上下文中包含的每个任务的通路数据的示意图。
图8是表示本发明的实施方式2中的高速缓冲存储器的结构的方框图。
图9是表示高速缓存项目的位结构的示意图。
图10是表示设置部结构的方框图。
图11是表示标志更新例的示意图。
图12是表示标志更新处理流程的示意图。
图13是表示置换处理流程的示意图。
图14是表示本发明的实施方式3中高速缓冲存储器的结构的方框图。
图15是表示高速缓存项目的位结构的示意图。
图16是表示置换大小寄存器的位结构的示意图。
图17是表示12基本(base)标志的更新例的示意图。
图18是表示基本(base)置换处理的流程图。
图19是表示本发明的实施方式4中的比较控制部及各通路关键部分的结构的方框图。
图20是表示启用电路控制逻辑的真值表。
具体实施例方式
(实施方式1)图1是表示本发明的实施方式1中包括处理器1、高速缓冲存储器3、内存2的系统大致结构的方框图。如图1所示,本发明的高速缓冲存储器3位于具有处理器1及内存2的系统中。处理器1是进行多任务控制的处理器,切换并运行内存2中的任务1~4等。高速缓冲存储器3是N-路组联方式的高速缓冲存储器,其结构是使N个通路中的一个或多个通路对应于每个任务,并使该任务运行中相应的通路激活。各个任务可以对激活通路使用作为高速缓冲存储器的所有功能。并且,各个任务对于未激活的通路(称为非激活通路),作为高速缓冲存储器的所有功能中可利用的功能受限制。本实施方式中,对非激活通路,置换的功能受限制,除此以外的读写等不受限制。
下面,作为高速缓冲存储器3的具体例,说明对8路组联方式的高速缓冲存储器适用本发明时的结构。
图2是表示高速缓冲存储器3结构例的方框图。如图2所示,高速缓冲存储器3具备地址寄存器20、解码器30、8个通路31a~31h(以下简称为通路0~7)、8个比较器32a~32h、8个与门电路33a~33h、或门电路34、选择器35、选择器36、多路复用器37、控制部38。
地址寄存器20是保持对内存2的存取地址的寄存器。该存取地址为32位。如图2所示,存取地址从最高位起,依次包括21位的标记地址、4位的组索引(图中的SI)、5位的字索引(图中的WI)。
这里,标记地址指映射到通路的内存中区域(其大小为组数×块)。该区域的大小是由比标记地址低位的地址位(A10~A0)来规定大小,即2k字节,也是1个通路的大小。组索引(SI)指跨通路0~3的多个组的1个。这个组数,因为组索引为4位,所以是16组。由标记地址及组索引所确定的块是置换单位,保存在高速缓冲存储器中时被称为行数据或行。行数据的大小由比组索引低位的地址位来规定,即128字节。假定1个字为4字节,则1个行数据为32个字。字索引(WI)指构成行数据的多个字中的1个字。地址寄存器20中最低的两位(A1、A0)在字存取时被忽略。
解码器30对组索引的4位进行解码,从16个组中选择1个组,这些16个组由高速缓存项目组成,该高速缓存项目按8个通路0~7相同顺序排列。
通路0~7为具有相同结构的8个通路,具有8×2k字节的容量。通路0具有16个高速缓存项目。1个高速缓存项目保持有效标志V、21位的标记、128字节的行数据。有效标志V表示该高速缓存项目是否有效。标记是21位的标记地址的拷贝。行数据是由标记地址及组索引来确定的块中的128字节数据的拷贝。另外,通路1~7也与通路0相同。经解码器30,由组索引的4位来选择的跨4个通路的4个高速缓存项目被称为组。此外,在图2中省略了表示曾有过写入的脏标志。
比较器32a比较地址寄存器20中的标记地址与由组索引所选择的组中包含的4个标记中的通路0的标记是否一致。比较器32b~32h也一样,只是它们分别对应于通路31b~31h。
与门电路33a对有效标志与比较器32a的比较结果是否一致进行比较。假设该比较结果为h0。当比较结果h0为1时,意味着与地址寄存器20中的标记地址及组索引对应的行数据存在,即意味着在通路0中命中。比较结果h0为0时,则意味着非命中。与门电路33b~33h也一样,只是它们分别对应于通路31b~31h。其比较结果h1~h7表示在通路1~7中命中了还是非命中。
或门电路34对比较结果h0~h3进行或运算。假设该或运算的结果为hit。hit表示是否被高速缓冲存储器命中。
选择器35从被选择的组中的通路0~7的行数据中,选择命中的通路的行数据。
选择器36从由选择器35选择的32字的行数据中,选择由字索引所表示的1个字。
多路复用器37在将数据写入高速缓存项目时,向通路0~7中的1个输出写入的数据。该写入数据可以以字为单位。
控制部38在内部具有通路寄存器371,对整个高速缓冲存储器3进行控制。通路寄存器371是用于保持数据的寄存器,该数据表示通路0~7中的激活通路。控制部38对由通路寄存器371所示出的激活通路,无限制地控制作为高速缓冲存储器的所有功能,对非激活通路限制置换的功能。
图3是表示通路寄存器371的位结构的示意图。如图3所示,通路寄存器371是32位寄存器,它的最低8位保持对应于通路0~7的W0标志~W7标志。例如,W0标志为1时,表示通路0是激活通路,为0时,表示通路0是非激活通路。W1标志~W7标志也相同。以下将W0标志~W7标志的集合称为激活通路数据。该通路寄存器371可以从处理器1直接读写,成为各任务的上下文的一部分。即每个任务具有激活通路数据,通过任务切换,通路寄存器371的内容被改写为对应于正在运行的任务的激活通路数据。
图4是表示通路寄存器371与通路之间的对应关系的示意图。在图4左侧,由通路寄存器371中所保持的激活通路数据为“00111000”,因此通路2、3、4为激活通路,通路0、1、5、6、7成为非激活。在任务切换时,通路寄存器371例如被改写为图4右侧所示的激活通路数据。图4右侧中,通路5~7为激活通路,0~4为非激活通路。
图5是表示控制部38中的置换处理的流程图。在图5中,控制部38对是否发生了非命中进行判定(S51),当判定为发生非命中时,则从由组索引所选择的组中的4个通路的高速缓存项目中选择一个置换对象(步骤S52)。该置换对象的选择可以采用LRU方式。
而且,控制部38还参照通路寄存器371,判定被选择的通路是否激活(S53),当没有激活时,则返回步骤S52,重新选择其他通路的高速缓存项目。控制部38对被选择的激活通路的高速缓存项目进行置换(S54)。
这样,控制部38对通路寄存器371示出的非激活通路限制置换;控制部38对激活通路不限制置换,而对作为高速缓冲存储器的所有功能进行控制。这里,限制置换就相当于禁止置换。
图6是表示处理器1中的任务切换处理的流程图。任务切换处理因时间的经过及事件的发生而被启动。在图6中,处理器1将当前正在运行的任务的上下文保留在内存2中的例如堆栈区(步骤S61),接着使下面应该运行的任务的上下文从堆栈区恢复(步骤S62)。这里,如图7所示,堆栈区被确保在内存2,是用于存储各任务的上下文的区域。各任务的上下文包括处理器的通用寄存器的数据、各种控制寄存器的数据,并在本实施方式中还包括保存在通路寄存器中的激活通路数据。
这样,通路寄存器371在进行任务切换时被改写,因此总是保持与正在运行的任务对应的激活通路数据。
如上所述,根据本实施方式的高速缓冲存储器,从被处理器1运行的任务来看,无论是对激活通路还是非激活通路,都可以向高速缓冲存储器进行读及写,但对于非命中时成为置换对象的通路,只限于激活通路。
例如,在图4中,假设该图左侧为任务1运行时的激活通路,右侧为任务2运行时的激活通路。随着任务运行的经过,任务1的高速缓存数据将被逐渐保存到通路2~3,任务2的高速缓存数据将被逐渐存放到通路4~7。换句话说,通路2~3中保存的任务1的高速缓存数据不会因任务2的运行而被逐出(不被置换)。通路4~7中保存的任务2的高速缓存数据也不会因任务1的运行而被逐出(不被置换)。这样,就可以消除这样一个问题,即随着任务的切换,任务1中所需要的高速缓存数据被其他任务置换,而再次运行任务1时又将被逐出的数据置换到高速缓冲存储器的问题。从而可以减少任务切换引起的置换的发生,抑制其他任务造成的影响。
<变形例>
另外,根据本发明的高速缓冲存储器不限于上述实施方式的结构,而还可以有各种变化。下面,对几个变形例进行说明。
(1)对于多个任务与多个通路的对应关系,可以让由1个任务独占的通路与由多个任务共享的通路混合存在。例如,图4中,假设任务1独占通路2~4,任务2独占通路5~7,其他任务共享通路0、1。此时,因为任务1及2独占通路,可以减少任务切换造成的高速缓存缺失,所以适合需要实时性的处理。任务1及2以外的任务,则适合不需要实时性的处理等。
(2)在上述实施方式中,控制部38对激活通路控制高速缓冲存储器的所有功能,对非激活通路禁止置换,但并不只限于此。
例如,控制部38也可以采用这样一个结构对通路寄存器371示出的非激活通路,禁止更新其状态的结构。例如,可以通过禁止表示通路状态的标志类的更新,防止任务切换对非激活通路的影响。
此外,控制部38还可以采用这样一个结构对由通路寄存器371所示出的非激活通路,禁止更新表示其存取顺序信息的结构。这样,由于禁止更新表示存取顺序的信息,置换顺序将不会受其他任务的运行的影响。
或者,控制部38也可以对非激活通路禁止所有功能。此时,可以使输出启用信号变为禁用,以禁止非激活通路的标记输出。这样,可以减少非激活通路的耗电量。此外,当禁止所有功能时,最好让任务与通路对应起来,以使各任务独占通路,而不是共享。这样,可以防止内存与高速缓冲存储器之间数据发生矛盾。
再有,控制部38除了禁止置换外,还可以采用这样一个结构不更新用于表示存取顺序的LRU的顺序数据。
(3)也可以采用这样一个结构当通路寄存器371的内容被更新时,重置LRU方式中使用的存取顺序信息。
(4)此外,控制部38还可以采用这样一个结构限制置换次数,以取代禁止置换的结构;禁止对通路中确定的高速缓存项目的置换,而对其他高速缓存项目进行置换。
(5)上述实施方式中,以8路组联的高速缓冲存储器为例进行了说明,但通路数既可以是4路也可以是16路,无论几路都可以。同时,上述实施方式中以组数16为例进行说明,但组数也是无论几组都可以。
(6)上述实施方式中,以组联的高速缓冲存储器为例进行了说明,但也可以是全联方式的高速缓冲存储器。当全联方式时,可以说组是一个套。
(7)图4所示的激活通路数据,也可以由操作系统来分配到各个任务。即操作系统生成运行对象的任务时,对该任务分配应该使其激活的通路,并根据分配的结果生成该任务的激活通路数据。而且,如图7所示,操作系统可以将所生成的激活通路数据设置为该任务的上下文数据的一部分。
(8)当多个任务共享内存数据时,这些任务应该共享完全相同的通路。例如,当任务A与任务B共享内存数据时,如果对任务A分配了通路5、6、7,则操作系统可以对任务B也分配通路5、6、7。
(实施方式2)通过实施方式1,说明了通过任务切换来改写通路寄存器371的结构。下面,通过本实施方式,对高速缓冲存储器中判别任务并根据判别结果改写通路寄存器371的结构进行说明。此外,实施方式1中置换算法采用众所周知的LRU方式,而本实施方式中则对进行伪LRU方式的结构进行说明,该伪LRU方式采用1位标志取代表示存取顺序的数据。
图8是表示本发明的实施方式2中的高速缓冲存储器的结构的方框图。图8所示的高速缓冲存储器与图2所示的结构相比,不同之处在于包括通路131a~131d通路,取代了31a~31d;包括控制部138,取代了控制部38。下面,省略相同点的说明,以不同点为主进行说明。
通路131a与通路31a相比,不同之处在于各高速缓存项目中,增加了使用标志和新标志。高速缓存项目的位结构如图9所示。1个高速缓存项目保持有效标志V、21位的标记、128字节的行数据、使用标志U、新标志N及脏标志D。其中,使用标志U表示是否有过对该高速缓存项目的存取,在非命中引起的置换时,被用于代替组内8个高速缓存项目中的存取顺序。更准确地说,使用标志U为1意味着曾有过存取,为0则意味着未曾有过存取。若组内的8个使用标志全部变为1,则就被重置为0,因此是表示组内8个高速缓存项目中有无使用的相对值。换句话说,使用标志U表示被存取的时间是旧还是新的两种相对状态。即,使用标志U为1的高速缓存项目意味着,与使用标志为0的高速缓存项目相比,它是新被存取的。此外,新标志N在刚置换后(或刚填充后)被设置为初始值1,当有了对该高速缓存项目的存取后,则被重置为0。即新标志N的1意味着该高速缓存项目被置换(或填充)后一次也没有被存取,处于新的状态。
控制部138与控制部38相比,不同之处在于增加了设置部372,以及进行使用标志U及新标志N的设置及更新。
设置部372对处理器1中运行的任务进行判别,并将对应于已判别的任务的激活通路数据设置到通路寄存器371。
<设置部的结构>
图10是表示设置部372结构例的方框图。如图10所示,设置部372具有判别部100a~100d、激活通路数据保持部110a~110d和选择器111。
判别部100a具有起始地址保持部101、结束地址保保持部102、比较器103、104和与门电路105,对正在运行的任务是否是任务1进行判别。
起始地址保持部101、结束地址保持部102可以由处理器1进行读写,分别保持内存2中所保存的任务1的起始地址和结束地址。该起始地址及结束地址,事先被处理器1写入,并可以进行动态更改。
比较器103将从处理器1输出的读取指令地址(IF地址)和从起始地址保持部101输出的起始地址进行比较,在IF地址比起始地址大的情况下,输出1。
比较器104将从处理器1输出的IF地址和从结束地址保持部102输出的结束地址进行比较,在结束地址比IF地址大的情况下,输出1。
与门电路105再比较器103及104的比较结果均为1时,即IF地址读取到任务1的指令时,表示正在运行的任务为任务1。
判别部100b~100d也一样,对正在运行的任务是否为任务2~3进行判别。
激活通路数据保持部110a~110d可以从处理器1读写,保持对应于判别部100a~100d的任务的激活通路数据。该激活通路数据可以事先由处理器1写入,并可动态更改。
选择器111按照判别部100a~100d的判别结果,选择对应于正在运行的任务的激活通路数据,输出到通路寄存器371。这样,通路寄存器371保持对应于正在运行的任务的激活通路数据。
<使用标志的更新例>
图11是表示由控制部138更新使用标志U的更新例的示意图。图11中,为说明方便起见,以4路而不是8路为例进行说明。图11的上段、中段、下段表示构成跨通路0~3的组N的4个高速缓存项目。4个高速缓存项目右端的1或0分别为使用标志的值。将该4个使用标志U记为U0~U3。
图11的上段中,(U0~U3)=(1、0、1、0),意味着通路0、2的高速缓存项目曾被存取过、通路1、3的高速缓存项目没有被存取过。
在此状态下,当内存存取命中组N内的通路1的高速缓存项目时,如图11中段所示,被更新为(U0~U3)=(1、1、1、0)。即如实线所示,通路1的使用标志U1从0更新为1。
而在图11中段的状态下,内存存取命中组N内的通路3的高速缓存项目时,如图11下段所示,被更新为(U0~U3)=(0、0、0、1)。即如实线所示,通路3的使用标志U1从0被更新为1。并且,如虚线所示,除通路3以外的使用标志U0~U2从1被更新为0。这样,就意味着,与通路0~2的各高速缓存项目相比,通路3的高速缓存项目是新被存取的的情况。
控制部138在高速缓存缺失时,根据使用标志,决定置换对象的高速缓存项目,来进行置换。例如,控制部138在图11上段中,将通路1与通路3中的谋一个决定为置换对象,在图11中段,将通路3决定为置换对象,在图11下段,将通路0~2中的谋一个决定为置换对象。
<使用标志、新标志的更新处理>
图12是表示控制部138的使用标志及新标志的标志更新处理的流程图。图12中,假设有效标志为0(无效)的高速缓存项目的使用标志U被初始化为0。
图12中,当高速缓存命中时(步骤S61),控制部138将由组索引所选择的组中命中的通路的使用标志U设置为1(步骤S62),若被选择的组内命中的通路的高速缓存项目的新标志为1,则重置为0(步骤S171)。
并且,控制部138读出该组内其他通路的使用标志U(步骤S63),对所读出的使用标志U是否均为1进行判定(步骤S64),如果不均为1,则结束;如果均为1,则将其他通路的所有的使用标志U都重置为0(步骤S65)。
这样,控制部138如图11所示的更新例那样更新使用标志。并且,新标志N在高速缓存项目的置换后,在第一次被存取时被重置。
<置换处理>
图13是表示控制部138的置换处理流程的示意图。图13中,控制部138载内存存取错误时(步骤S91),读出由组索引所选择的组中的8个通路的使用标志U和8个新标志N0~N7(步骤S92),并判定所读出的8个新标志N0~N7是否均为1(步骤S 161),在均为1时,前进到步骤S93,在不均为1(有0)时,从使用标志U为0的通路中剔除新标志N为1的通路(步骤S162)。
而且,控制部138选择使用标志U为0的一个通路(步骤S93)。此时,当有多个使用标志U为0的通路时,则控制部138随机选择1个,或以循环方式选择1个。进而,控制部138以该组中被选择的通路的高速缓存项目为对象进行置换(步骤S94),置换后将该高速缓存项目的使用标志U初始化为1,将新标志初始化为1(步骤S95)。另外,此时,有效标志V、脏标志D分别被初始化为1、0。此外,为了以循环方式来从使用标志U为0的多个通路中选择1个通路,采用以下方式即可控制部138将表示循环位置(所选择的通路的位置)的数据保持在寄存器,并更新,从使用标志U为0的通路中选择下一个循环位置。
这样,置换对象通过选择新标志为0且使用标志为0的一个高速缓存项目而确定。但8个新标志均为1时,将从新标志为1且使用标志U为0的通路中选择1个置换对象。由于这种置换算法,采用1位的使用标志,取代以往的LRU方式中表示存取顺序的数据,所以因此可以称为伪LRU方式。
如上所述,根据本实施方式的高速缓冲存储器,通过具备设置部372,高速缓冲存储器本身可以判别正在运行的任务,将对应于所判别的任务的激活通路数据设置到通路寄存器371,并根据各个任务进行激活通路的切换。这样,与实施方式1同样,可以减少任务切换引起的无用的置换的发生,提高命中率。
此外,根据本实施方式的高速缓冲存储器,对每个高速缓存项目设置1位的使用标志,来取代以往的LRU方式中对各高速缓存项目设置表示存取顺序的数据。这样,就可以用更新使用标志的简单的标志更新电路(标志更新部39)替换以往的更新存取顺序数据的复杂的电路。同时,在置换部40,可以通过选择使用标志为0的1个高速缓存项目,简便地确定置换对象。这样,根据本实施方式的高速缓冲存储器,可以在很大程度上缩减硬件规模。并且,获得与以往的LRU几乎同等的命中率。
而且,当新标志为1时,本实施方式中的控制部138将该高速缓存项目从置换对象中剔除。其理由如下所示。即,即使使用标志U的初始值为1,但在其他通路的使用标志依次变为1的情况下,则将被重置为0。也就是说,即使是使用标志U为0的高速缓存项目,置换后也可能一次也没有被存取。当使用标志如此变为0时,由于发生高速缓存缺失,则置换后一次也没有被存取的高速缓存项目可能再次被选择为置换对象。因此,通过设置新标志N,可以防止置换后一次也没有被存取的高速缓存项目被置换。
<变形例>
另外,本发明的高速缓冲存储器不限于上述实施方式的结构,而且还可以有各种变化。下面,对几个变形例进行说明。
(1)实施方式1的变形例(1)~(6)也可以适用于本实施方式。
(2)当由处理器1输出表示正在运行的任务的任务编号(或线程编号、进程编号等)时,也可以采用这样一个结构具备保持及更新任务编号的任务编号保持部,取代上述判别部100a~100d。此时,选择器111只要选择对应于任务编号的激活通路数据即可。
(3)控制部138如图11下段所示,组内其他通路的使用标志U如果均为1则置为0,将命中的通路本身的使用标志U更新为1,但也可以采用这样一个结构,取代该结构,所述这样的一个结构是命中的通路本身的使用标志也更新为0。
(4)也可以采用这样一个结构,即,当通路寄存器371的内容被更新时,控制部138重置所有的使用标志。而且,在使用标志重置的同时,控制部138还可以重置上述循环方式中表示循环位置的信息,上述循环方式是用于从使用标志U为0的多个通路中选择1个的方式。
(5)也可以采用这样一个结构不具备上述实施方式中的新标志。
(实施方式3)实施方式1、2中公开了高速缓存项目的置换单位是以行(128字节)单位构成的结构,而本实施方式对这样一个结构进行说明,即,置换单位按各个任务,可在行单位和子行(32字节)单位之间可以进行切换。
图14是表示本发明的实施方式3中高速缓冲存储器的结构的方框图。图14所示的高速缓冲存储器与图8所示的结构相比,不同之处在于包括通路231a~231h,来取代了通路131a~131h;增加了选择器233a~233h;包括控制部238,来取代了控制部138。下面,省略相同点的说明,以不同点为主进行说明。
通路231a~231h与图8的通路131a~131h相比,不同之处在于在高速缓存项目内按各子行保持有效标志和脏标志,而不是按每1位保持。高速缓存项目的位结构如图15所示。如图15所示,1个高速缓存项目保持有效标志V0~V3、标记、行数据、使用标志U、新标志N、脏标志D0~D3。关于使用标志U及新标志前面已经说明,这里省略。行数据(128字节)由4个子行(32字节)组成。有效标志V0~V3对应于4个子行0~3,表示对应的子行是否有效。脏标志D0~D3对应于4个子行0~3,表示是否曾经向对应的子行写入。有效标志及脏标志按子行单位配置,这是为了使置换也可以按子行单位进行。此外,回写(或直写)也可以按子行单位进行。
对于选择器233a,由通路231a输入与由源索引SI所选择的组对应的有效标志V0~V3和字索引WI的最高2位,并选择与由该最高2位所指定的子行对应的有效标志。选择器233b~233h也一样,只是分别对应于通路231b~231h。这样,使选择器233a~233h可以按子行单位判定是否命中。
控制部238与控制部138相比,不同之处在于,删除了设置部372以及增加了RS(置换大小)寄存器373。
删除设置部372是因为通路寄存器371与实施方式1同样,在任务切换时被改写。
RS寄存器373按每个通路保持表示置换大小的置换大小数据。RS寄存器373的位结构例如图16所示。图16中,RS寄存器373保持由RS0~RS7组成的置换大小数据。在RS0~RS7的各位为1时,向控制部238指示置换大小为子行(32字节);在为0时,向控制部238指示置换大小为行(128字节)。该RS寄存器373与通路寄存器371同样,可以由处理器1读写,作为上下文的一部分在任务切换时被改写。这样,就可以按每个通路且按各个任务设置置换大小是行还是子行。
图17是表示控制部238的标志更新处理的流程图。图17与图12所示的流程图相比,不同之处在于,增加了用于按子行单位设置脏标志的步骤S175~S177。即控制部238在曾经发生对高速缓冲存储器的写入时(步骤S175),对写入的子行进行判别(步骤S176),并将对应于被判别的子行的脏标志设置为1(步骤S177)。步骤S175~S177的处理,例如在控制部238按每个通路配备1个输入4个输出的多路复用器,从而能简单地实现。该多路复用器可以采用以下结构被输入逻辑“1”,使4个输出对应于高速缓存项目中的脏标志D0~D3,由字索引WI的最高2位来控制输出目的地。
这样,控制部238根据高速缓存写对以子行为单位配置的脏标志D0~D3进行更新。
图18是表示控制部238中的置换处理的流程图。图18与图13所示的流程图相比,不同之处在于具有步骤S181~183,来取代了步骤S94;具有步骤S95a,来取代了步骤S95。
控制部238从RS寄存器373读出与由步骤S93所选择的通路对应的RS标志,判定作为置换大小被指定了子行还是行(步骤S181),并在指定子行的情况下,置换该通路的子行(步骤S182);在指定行的情况下,置换该通路的行(步骤S182)。而且,控制部238对与被置换的子行或行对应的有效标志及脏标志进行初期化(步骤S95a)。即把与被置换的子行对应的有效标志、脏标志分别设置为1、0。当按行单位置换时,将与4个子行对应的4个有效标志、脏标志分别设置为1、0。
如上所述,根据本实施方式的高速缓冲存储器,在实施方式1或2的基础上,还可以按每个通路及每个任务设置行置换单位和子行置换单位,因此可以根据任务所需要的数据大小切换置换单位,由此可以进一步减少高速缓存缺失。例如,假设任务1执行音频数据的解码/编码处理,任务2执行视频数据的解码/编码处理。此时,任务1可以以行大小为置换单位,任务2可以以子行为置换单位。这样,可以提高任务1、2的高速缓存利用效率。这是因为任务1序列存取的数据的长度比较长,任务2序列存取的数据的长度比较短。
<变形例>
另外,本发明的高速缓冲存储器不限于上述实施方式的结构,还可以有各种变形。下面,对几个变形例进行说明。
(1)实施方式2中的变形例(1)、(3)、(4)、(5)也可以适用于本实施方式。
(2)上述实施方式中,假定子行的大小为行的大小的1/4,但也可以是1/2、1/8、1/16等其他大小。此时,各高速缓存项目分别保持与子行相同数量的有效标志及脏标志即可。
(实施方式4)实施方式1~3说明了对非激活通路至少限制置换的实例,而本实施方式中,进一步说明以下结构禁止在比较器中比较、和禁止从高速缓存项目输出标记的结构,该比较器是比较器32a~32h中对应于非激活通路的比较器,该高速缓存项目对应于非激活通路。
为此,本实施方式的高速缓冲存储器的结构是在如图14所示的控制部238内部增加了比较控制部372。
图19是表示比较控制部372及通路231a~231h关键部分的结构的方框图。
在图19中,高速缓存地址项目300a~300h被包含在高速缓冲存储器中的通路0~8中,分别保持与组数相同数量(实施方式中为16)的标记。高速缓存地址项目300a被包含在通路0中,包括16个标记保持部301~316和16个与门电路321~336。其他高速缓存地址项目300b~300h也相同。
与门电路321对应于16个组中的组0,通过对组索引进行解码的解码器30,组0对选择信号(set0)与启用信号E0进行与运算。这样,与门电路321只有在选择信号set0=1、且启用信号E0=1时,将从标记保持部301的标记输出和比较器32a设为启用。
比较器32a~32h分别具有启用端子EN,当启用端子的输入为1时,执行地址寄存器20中的标记地址与来自高速缓存地址项目301的标记的比较。
比较控制部372的结构,具备对应于8个通路的8个启用电路381a~381h和次数计数器382,在比较器32a~32h中进行控制,使得最多进行两次标记比较,第一次标记比较中,将与由通路寄存器371示出的激活通路对应的的比较器设为启用,且将与非激活通路对应的比较器设为禁用,由此将激活通路的标记作为比较对象,并且,当第一次标记比较中被判定为非命中时,将与激活通路对应的比较器设为禁用,通过将与激活通路对应的比较器设为启用,由此将非激活通路的标记作为比较对象,进行第二次标记比较。此外,在控制各比较器的启用/禁用的同时,来自通路231a~231h的标记输出也控制启用/禁用。由此减少被禁用的比较器及标记输出的耗电量。
启用电路381a~381h对应于通路231a~231h,按照通路寄存器371中保持的激活通路数据,在第一次标记比较中,只将比较器32a~32h中与激活通路对应的比较器设为启用,在第二次标记比较中,只将与非激活通路对应的比较器设为启用。
即启用电路381a~381h生成启用信号E0~E7,由该启用信号E0~E7,将标记输出和8个比较器32a~32h设置为启用/禁用,该标记输出来自与高速缓冲存储器中通路0~8对应的8个高速缓存地址项目。例如,启用电路381a由互斥性逻辑和电路,生成表示通路0是否激活的W0位、和按照次数计数器382的计数值生成启用信号E0。
次数计数器382是计数比较次数的计数器,按0(第一次)、1(第二次)计数。但当第一次命中时,不予计数。
图20所示为以次数计数器382的计数值和激活通路数据Wn(n=0~7)为输入、以启用信号En为输出的启用电路控制逻辑的真值表。在图20中,例如,在通路0~2激活、通路3~7非激活(W0=1)的情况下,在第一次的比较中,启用信号E0~E2为1(启用),启用信号E3~E7为禁用。当第一次比较中命中时,次数计数器不计数,因此不进行第二次比较。当第一次比较中没有命中时,次数计数器计数,所以进行第二次比较。此时,在第二次的比较中,启用信号E0~E2设为0(禁用),启用信号E3~E7为1(启用)。
根据上述结构,在第一次标记比较中,不将非激活通路作为比较对象,因此可以减少比较器的耗电量及标记输出的耗电量。而且,当第一次标记比较中没有命中时,则只以非激活通路为比较对象进行第二次标记比较,因此可以有效利用所有通路的高速缓存数据。
另外,在第二次的比较中,也可以将所有的比较器设为启用。此时,在第一次比较中命中的情况下,不进行第二次比较,因而可以减少耗电量。即,对每个任务分配激活通路,因此在第一次比较中可以获得较高的命中率。
此外,也可以采用不进行第二次比较的结构。由于第一次的比较中可以获得较高的命中率,因而具有减少耗电量的效果。
产业上的可利用性本发明适用于用于提高内存存取速度的高速缓冲存储器及其控制方法,例如,可适用于单片高速缓冲存储器、芯片外高速缓冲存储器、数据高速缓冲存储器、指令高速缓冲存储器等。
权利要求
1.一种N-路组联方式的高速缓冲存储器,其特征在于,包括控制寄存器,示出N个通路中的1个或多个通路;控制单元,使控制寄存器示出的通路激活;以及更新单元,对控制寄存器的内容进行更新。
2.如权利要求1所述的高速缓冲存储器,其特征在于上述控制单元对控制寄存器示出的激活通路以外的通路,至少限制置换。
3.如权利要求1所述的高速缓冲存储器,其特征在于,还包括标记保持单元,对每个通路设置,并将高速缓存数据的地址作为标记保持;以及N个比较单元,通过比较标记地址和N个标记,判定是命中还是非命中,该标记地址是由处理器输出的内存存取地址的高位部分,该N个标记是由标记保持单元输出的标记,上述控制单元将与控制寄存器示出的激活通路以外的通路对应的比较单元设为禁用。
4.如权利要求3所述的高速缓冲存储器,其特征在于上述控制单元还对与控制寄存器示出的激活通路以外的通路对应的高速缓存地址保持单元,将向比较单元的标记输出设为禁用。
5.如权利要求3所述的高速缓冲存储器,其特征在于上述控制单元当由处理器输出内存存取地址时,控制比较单元对该存取地址最多进行两次标记比较,在第一次标记比较中,将与由控制寄存器示出的激活通路以外的通路对应的比较单元设为禁用,当第一次标记比较中被判定为非命中时,不将与激活通路以外通路对应的比较单元设为禁用,使之进行第二次标记比较。
6.如权利要求5所述的高速缓冲存储器,其特征在于上述控制单元在上述第二次标记比较中,将与激活通路对应的比较单元设为禁用。
7.如权利要求2所述的高速缓冲存储器,其特征在于上述控制单元对由控制寄存器示出的激活通路以外的通路,禁止其状态的更新。
8.如权利要求2所述的高速缓冲存储器,其特征在于上述控制单元对由控制寄存器示出的激活通路以外的通路,禁止表示其存取顺序信息的更新。
9.如权利要求2所述的高速缓冲存储器,其特征在于,上述高速缓冲存储器还包括重置单元,当控制寄存器的内容被上述更新单元更新时,将表示对通路的存取顺序的信息进行重置。
10.如权利要求9所述的高速缓冲存储器,其特征在于上述表示存取顺序的信息是每个高速缓存项目的1位数据;上述高速缓冲存储器还包括寄存器,保持表示循环位置的数据,该循环位置用于以循环方式从可置换的多个通路中选择1个通路;上述重置单元,当由上述更新单元更新控制寄存器的内容时,重置上述寄存器。
11.如权利要求2所述的高速缓冲存储器,其特征在于,上述更新单元包括保持单元,保持每个任务的通路数据,该通路数据指定应激活的通路;以及改写单元,改写上述控制寄存器,以保持与正在运行的任务对应的通路数据。
12.如权利要求11所述的高速缓冲存储器,其特征在于上述保持单元将上述通路数据作为内存中存储的每个任务的上下文数据的一部分而保持;上述改写单元在任务切换时,将控制寄存器中的当前任务的通路数据保留在内存,并将下一任务的通路数据从内存恢复到上述控制寄存器。
13.如权利要求12所述的高速缓冲存储器,其特征在于上述保持单元保持每个任务的上述通路数据,上述改写单元包括地址存储单元,存储内存中所存储的各任务的地址范围;判别单元,根据地址存储单元中所存储的地址范围和由处理器输出的读取指令地址,对正在运行的任务进行判别;选择单元,从上述保持单元中选择与被判别的正在运行的任务对应的通路数据;以及写入单元,将被选择的通路数据写入上述控制寄存器。
14.如权利要求12所述的高速缓冲存储器,其特征在于上述保持单元保持每个任务的上述通路数据;上述改写单元包括选择单元,按照由处理器输出的任务编号,从上述保持单元选择与正在运行的任务对应的通路数据;以及写入单元,将被选择的通路数据写入上述控制寄存器。
15.如权利要求11所述的高速缓冲存储器,其特征在于保持在上述保持单元的通路数据被操作系统分配给任务。
16.如权利要求1所述的高速缓冲存储器,其特征在于上述高速缓冲存储器可以在高速缓存项目的行大小和行大小的2的n次方分之1大小之间切换各通路中的置换单位;上述控制寄存器还示出每个通路的置换大小;上述控制单元以控制寄存器示出的置换大小为单位进行置换控制。
17.如权利要求16所述的高速缓冲存储器,其特征在于上述控制单元对由控制寄存器示出的激活通路以外的通路至少限制置换;对由控制寄存器示出的激活通路,以控制寄存器示出的大小为单位进行置换。
18.如权利要求17所述的高速缓冲存储器,其特征在于,上述更新单元包括保持单元,保持每个任务的通路数据和每个任务的置换大小,该通路数据指定应激活的通路;以及改写单元,改写上述控制寄存器,以保持与正在运行的任务对应的通路数据及置换大小。
19.如权利要求1所述的高速缓冲存储器,其特征在于,还包括存储单元,对保持作为高速缓存单位的数据的每个高速缓存项目,存储表示有无存取的1位的存取信息;以及选择单元,从与表示无存取的存取信息对应的高速缓存项目中,选择置换对象的高速缓存项目。
20.如权利要求19所述的高速缓冲存储器,其特征在于上述高速缓冲存储器还包括寄存器,保持表示循环位置的数据,该循环位置用于以循环方式从可置换的多个通路中选择1个通路;以及重置单元,当控制寄存器的内容被上述更新单元更新时,将表示对通路的存取顺序的信息和上述寄存器中表示循环位置的数据进行重置。
21.一种控制N-路组联方式的高速缓冲存储器的控制方法,其特征在于,包括将通路数据设置到控制寄存器的步骤,该通路数据表示N个通路中的1个或多个通路;以及控制步骤,使控制寄存器示出的通路激活。
22.如权利要求21所述的控制方法,其特征在于上述控制步骤中,对控制寄存器示出的激活通路以外的通路,至少限制置换。
23.如权利要求22所述的控制方法,其特征在于,还包括更新步骤,从保持部读出与正在运行的任务对应的通路数据,并将读出的通路数据写入上述控制寄存器,该保持部保持每个任务的通路数据,该通路数据指定应激活的通路。
全文摘要
本发明的高速缓冲存储器为N-路组联方式的高速缓冲存储器,包括控制寄存器,示出N个通路中的1个或多个通路;控制单元,使控制寄存器示出的通路激活;以及更新单元,对控制寄存器的内容进行更新,上述控制单元对由控制寄存器所示出的激活通路以外的通路至少限制置换。
文档编号G06F12/12GK1879092SQ20048003337
公开日2006年12月13日 申请日期2004年9月8日 优先权日2003年11月12日
发明者田中哲也, 冈林叶月, 中西龙太, 清原督三, 山本崇夫, 金子圭介 申请人:松下电器产业株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1