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

文档序号:6499536阅读:187来源:国知局
专利名称:高速缓冲存储器及其控制方法
技术领域
本发明涉及用于提高处理器内存存取速度的高速缓冲存储器及其控制方法。
背景技术
近年来,为了缩短对主存储器的存取时间、提高处理器的处理能力,高速缓冲存储器被广泛应用。
当从处理器向高速缓冲存储器写入数据时,为了确保主存储器与高速缓冲存储器之间数据的一贯性,需要从高速缓冲存储器向主存储器写回。该写回的控制方式包括透写(Write Through)方式及回写(WriteBack)方式。
透写方式中,当执行从处理器向高速缓冲存储器的写入命令时,向高速缓冲存储器和主存储器两者写入。若采用该透写方式时,每次向高速缓冲存储器写入数据时都会发生回写损失,因此对存储器写入而言,缩短内存存取时间的效果不大。
另一方面,回写方式是,在执行写入命令时只向高速缓冲存储器写入,在因为高速缓存缺失而将脏行(dirty line)马上要重新置换为新的其它数据之前,从高速缓冲存储器回写到主存储器。这种回写方式,虽然不是在每次存储器写入时发生回写损失,但在存储器读取及存储器写入时发生高速缓存缺失的情况下,除了加载损失以外,还会发生回写损失,因此高速缓存缺失时的损失将增加。这里,加载损失是指从主存储器向高速缓冲存储器加载新数据而引起的损失。回写损失是指,从高速缓冲存储器向主存储器写回数据而引起的损失。
减少这样的高速缓存缺失损失的已有技术,例如在专利文献1等中被公开。
根据这种已有技术,在回写方式的高速缓冲存储器中,不同于从高速缓冲存储器中将数据逐出的对主存储器的通常的写回处理,而是进行仅将高速缓冲存储器的数据写回到主存储器的写回处理。后一种处理,首先判定高速缓冲存储器的一个项目的数据是否为脏,当该数据为脏时,则将该数据写回主存储器。然后,确认写回正常结束,且高速缓冲存储器上的数据没有变化,使高速缓存状态成为清洁。
这样,已有技术中的高速缓冲存储器就减少从高速缓冲存储器向主存储器的数据量,提高整体系统的性能。
专利文献1日本特开平6-309231号公报但是,上述已有技术存在如下问题即使在发生高速缓存缺失前将脏项目的数据回写到内存,然而,在刚回写后向该项目写入数据的情况下,反而会降低效率。

发明内容
鉴于上述问题,本发明的目的在于提供一种高速缓冲存储器,能够高效率地减少高速缓存缺失时的回写损失。
为了达到上述目的,本发明的高速缓冲存储器包括赋予单元,对保持行数据的每个高速缓存项目,赋予表示对该高速缓存项目是否可以结束高速缓存的高速缓存结束属性;选择单元,选择被赋予表示可以结束高速缓存的高速缓存结束属性、且被设置了表示已被写入的脏标志的高速缓存项目;以及回写单元,与高速缓存缺失的发生无关地,将被选择的高速缓存项目的行数据回写到内存。
根据该结构,由于在发生高速缓存缺失前对可以结束高速缓存的高速缓存项目进行回写,所以在发生高速缓存缺失时,只发生加载损失,能减少回写损失的发生。由此,能够提高高速缓冲存储器的效率,并能提高存取速度。
这里,上述赋予单元也可以采用如下结构,其包括保持单元,保持由处理器指定的地址范围;搜索单元,搜索保持行数据的高速缓存项目,该行数据属于由保持单元保持的地址范围;以及设置单元,对被搜索到的高速缓存项目设置表示可以结束高速缓存的高速缓存结束属性。
在此,上述搜索单元也可以采用如下结构,其包括第1转换单元,当由保持单元保持的地址范围的开头地址指向行数据的中途时,则将该开头地址转换为指向被包含在上述地址范围内的开头行的起始行地址;第2转换单元,当由保持单元保持的地址范围的末尾地址指向行数据的中途时,则将该末尾地址转换为指向被包含在上述地址范围内的末尾行的结束行地址;以及判定单元,判定是否有保持与从上述起始行地址到结束行地址的各行地址相对应的数据的高速缓存项目。
根据该结构,处理器可以与高速缓冲存储器的行大小、行边界无关系地,指定任意地址作为应设置高速缓存结束属性的地址范围,该高速缓存结束属性表示可以结束高速缓存。换句话说,由于编程人员和编译程序就不必考虑行大小及行边界,因而也无须进行用于回写的行地址管理,更容易编制程序。
这里,上述高速缓冲存储器也可以采用如下结构,上述高速缓冲存储器还包括置换单元,该置换单元在发生高速缓存缺失时,将被赋予了表示可以结束高速缓存的高速缓存结束属性的高速缓存项目,作为置换对象进行选择。
根据该结构,由于在保持存取频率低的数据的高速缓存项目中设置表示可以结束的高速缓存结束属性,该高速缓存项目最先被设置,因此可以减少因存取频率低的数据保留在高速缓冲存储器而引发的高速缓存缺失。
在此,上述赋予单元也可以采用如下结构,其包括命令检测单元,检测在处理器中执行了将表示可以结束高速缓存的高速缓存结束属性的赋予、和数据的写入作为命令内容的存储命令;以及设置单元,在所检测出的按照该命令进行了写入的高速缓存项目设置高速缓存结束属性。
根据该结构,可以利用命令高速缓存结束属性的赋予和写入数据的存储命令,来简便地设置表示可以结束高速缓存的高速缓存结束。
这里,上述回写单元也可以采用如下结构当内存总线处于空周期时,上述回写单元向内存回写高速缓存项目的数据。
根据该结构,可以进行利用空周期的高效率回写。
在此,上述高速缓存项目也可以采用如下结构,即上述高速缓存项目中,按构成1个行的多个子行的每个具有脏标志;对于由选择单元选择的高速缓存项目,上述回写单元只回写脏子行。
根据该结构,只回写脏子行,因此能高效率地进行回写。再者,对于本发明的高速缓冲存储器的控制方法,也包括与上述相同的单元和作用。
发明效果如上所述,根据本发明的高速缓冲存储器,对以后不会再被写入的高速缓存项目赋予表示可以结束高速缓存的高速缓存结束属性,并与高速缓存缺失的发生无关系,即在发生高速缓存缺失前,可以将该高速缓存项目回写。其结果,在发生高速缓存缺失的情况下,只发生加载损失,而能减少回写损失的发生。由此,能够提高高速缓冲存储器的效率,并能提高存取速度。
处理器无需管理用于回写的行地址,并与高速缓冲存储器的行大小、行边界无关系,可以指定任意的地址范围。


图1是表示本发明的第一实施方式的包括处理器、高速缓冲存储器、内存的系统大致结构的方框图。
图2是表示高速缓冲存储器结构例的方框图。
图3是表示高速缓存项目的详细的位结构的示意图。
图4是表示控制部结构的方框图。
图5是表示C标志设置部结构例的方框图。
图6A表示向起始地址寄存器写入起始地址的命令的一个例子。
图6B表示向大小寄存器写入大小的命令的一个例子。
图6C表示向指令寄存器写入指令的命令的一个例子。
图6D表示指令的一个例子。
图7表示起始调整器及结束调整器的示意图。
图8是表示标志改写部的C标志设置处理的一个例子的流程图。
图9是表示清洁处理部的清洁处理的一个例子的流程图。
图10是表示本发明的第二实施方式的高速缓冲存储器结构的方框图。
图11是表示高速缓存项目的位结构的示意图。
图12是表示控制部结构的方框图。
图13表示由置换部更新使用标志的例子。
图14A是表示在弱标志不存在的情况下高速缓存项目被置换的情形的示意图。
图14B是表示置换处理中的弱标志W的作用的示意图。
图15是表示W标志设置部的W标志设置处理的流程图。
图16是表示清洁处理部的清洁处理的流程图。
图17是表示置换部的U标志更新处理的流程图。
图18是表示置换部的置换处理的流程图。
符号说明1 处理器2 内存3 高速缓冲存储器20地址寄存器21内存I/F30解码器
31a~31d 通路32a~32d 比较器33a~33d 与门电路34 或门电路35 选择器36 选择器37 多路分解器38 控制部39 清洁处理部40 C标志设置部41 置换部131b~131d 通路138控制部139清洁处理部140W标志设置部401指令寄存器402起始地址寄存器403大小寄存器404加法器405起始调整器406结束调整器407标志改写部具体实施方式
(第一实施方式)<总体结构>
图1是表示本发明的第一实施方式的包括处理器1、高速缓冲存储器3、内存2的系统大致结构的方框图。如图1所示,本发明的高速缓冲存储器3配备在具有处理器1及内存2的系统中。
高速缓冲存储器3的结构是,按保持高速缓存的单位数据(称为行数据)的各个高速缓存项目,在该高速缓存项目中保持表示是否可以结束高速缓存的高速缓存结束属性,并且,与高速缓存缺失是否发生无关地选择具有表示可以结束高速缓存的高速缓存结束属性、且设置有脏标志的高速缓存项目,并将所选择的高速缓存项目的数据回写到内存,该脏标志表示从处理器写入。这里,表示可以结束高速缓存的高速缓存结束属性,被赋予给例如以后可能不进行写入的高速缓存项目、和以后可能不被读写的高速缓存项目等。
<高速缓冲存储器的结构>
下面,作为高速缓冲存储器3的具体例子,说明在四路组联方式的高速缓冲存储器中使用了本发明时的结构。
图2是表示高速缓冲存储器3的结构例的方框图。如该图所示,高速缓冲存储器3包括地址寄存器20、内存I/F21、解码器30、4个通路31a~31d(以下简称为通路0~3)、4个比较器32a~32d、4个与门电路33a~33d、或门电路34、选择器35、36、多路分解器37和控制部38。
地址寄存器20是保持对内存2的存取地址的寄存器。该存取地址是32位。如该图所示,存取地址从最高位起,依次包括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)在字存取时被忽略。
内存I/F21是用于从高速缓冲存储器3向内存2回写数据、或者从内存2向高速缓冲存储器3加载数据等,从高速缓冲存储器3对内存2进行存取的I/F解码器30对组索引的4位进行解码,从跨4个通路0~3的16个组中选择1个组。
4个通路0~3是具有相同结构的4个通路,具有4×2k字节的容量。各通路具有16个高速缓存项目。
图3表示一个高速缓存项目的详细位结构。如该图所示,1个高速缓存项目具有有效标志V0~V3、21位的标签、128字节的行数据、高速缓存结束属性(图中的C标志)和脏标志D0~D3。
标签是21位的标签地址的复制。
行数据是由标签地址及组索引确定的块中的128字节数据的复制,由32字节的4个子行组成。
有效标志V0~V3对应于4个子行,表示子行是否有效。
高速缓存结束属性(清洁标志C)表示是否可以结束高速缓存。例如,意味着以后对该高速缓存项目是否还进行写入。C=0意味着以后可能进行写入。C=1意味着以后不进行写入,即意味着如果为脏则应该进行清洁(回写)。
脏标志D0~D3对应于4个子行,表示是否从处理器向该子行有过写入,即,虽然子行中存在被高速缓存的数据,但通过写入该数据与内存中的数据不同,因此是否需要写回到内存。
比较器32a比较地址寄存器20中的标签地址和由组索引选择的组中包含的4个标签中的通路0的标签是否一致。关于比较器32b~32c,除了对应于通路31b~31d这点以外,其它都相同。
与门电路33a比较有效标志与比较器32a的比较结果是否一致。设该比较结果为h0。比较结果h0为1时,意味着地址寄存器20中的标签地址及对应于组索引的行数据存在,即在通路0中命中。比较结果h0为0时,意味着非命中。关于与门电路33b~33d,除了对应于通路31b~31d这点以外,其它都相同。其比较结果h1~h3表示在通路1~3是命中还是非命中。
或门电路34对比较结果h0~h3进行或运算。设该或运算的结果为hit。hit表示是否命中了高速缓冲存储器。
选择器35从被选择的组中的通路0~3的行数据中,选择命中的通路的行数据。
选择器36从由选择器35选择的32字的行数据中,选择字索引所表示的1个字。
多路分解器37在将数据写入高速缓存项目时,向通路0~3中的1个输出写入数据。该写入数据可以以字为单位。
控制部38进行高速缓冲存储器3整体的控制。尤其是进行C标志的设置和按照C标志的清洁(回写)。
<控制部的结构>
图4是表示控制部38结构的方框图。如该图所示,控制部38包括清洁处理部39和C标志设置部40。
清洁处理部39搜索被设置为C=1的高速缓存项目,当该高速缓存项目为脏时,进行回写。
C标志设置部40根据来自处理器1的指令,设置清洁标志C。处理器1向高速缓冲存储器3发出指令,该指令指示对已不再进行写入的高速缓存项目设置清洁标志。
<C标志设置部的构成>
图5是表示C标志设置部40的结构例的方框图。如该图所示,C标志设置部40具有指令寄存器401、起始地址寄存器402、大小寄存器403、加法器404、起始调整器405、结束调整器406、标志改写部407。
指令寄存器401是可以从处理器1直接存取的寄存器,保持由处理器1写入的C标志设置指令。在图6(c)示出向指令寄存器401写入指令的命令的一个例子。该命令为通常的传输指令(mov命令),作为源操作数指定了指令,作为目的操作数指定了指令寄存器(CR)401。在图6(d)示出指令的一个例子。该指令是表示C标志设置指令的特定代码。C标志设置指令是,指示向保持与地址范围对应的数据的高速缓存项目设置C标志的指令,该地址范围是从被保持在起始地址寄存器402中的开始地址起的、被保持在大小寄存器403中的大小的地址范围。
起始地址寄存器402是可以从处理器1直接存取的寄存器,保持由处理器1写入的起始地址。该起始地址表示应设置C标志的地址范围的起始位置。在图6(a)示出向起始地址寄存器402写入起始地址的命令的一个例子。该命令与图6(c)一样,也是通常的传输指令(mov命令)。
大小寄存器403是可以从处理器1直接存取的寄存器,保持由处理器1写入的大小。该大小表示从起始地址起的地址范围。在图6(b)示出向大小寄存器403写入大小的命令的一个例子。该命令也与图6(c)一样,是通常的传输指令(mov命令)。另外,大小的单位可以是字节数,也可以是行数(高速缓存项目数),只要是预先规定的单位即可。
加法器404对保持在起始地址寄存器402中的起始地址和保持在大小寄存器403中的大小进行加法运算。运算结果是指向地址范围结束位置的结束地址。当大小指定为字节数时,加法器404可将其作为字节地址进行加法运算,大小指定为行数时,作为行地址进行加法运算即可。
起始调整器405将起始地址调整到行边界的位置。通过该调整,处理器1可以与行大小及行边界无关地,指定任意的地址作为起始地址。
结束调整器406将结束地址调整到行边界的位置。通过该调整,处理器1可以与行大小及行边界无关地,指定任意的大小作为上述大小。
在图7示出起始调整器405及结束调整器406的说明图。该图中,由处理器1指定的起始地址指向行N的中间任意位置。起始调整器405进行调整,以便指向下一行(N+1)的开头,并将调整后的地址作为调整起始地址输出。调整起始地址所指的行称为起始行。
再者,结束地址指向行M的中间任意位置。结束调整器406进行调整,以便指向上一行(M-1)的开头,并将调整后的地址作为调整结束地址输出。调整结束地址所指的行称为结束行。
此时,从起始行(行(N+1))到结束行(行(M-1))的各行(高速缓存项目)中设置C标志。这样,起始调整器405及结束调整器406调整到比由处理器1指定的起始地址到结束地址的地址范围更靠内侧,这是因为,在行N与行M的外侧部分存在发生从处理器1写入的可能。
从调整起始地址所指的行到调整结束地址所指的行(在图7的例子中是行(N+1)到行(M-1)),如果被登录到了高速缓冲存储器3,则标志改写部407将C标志设置为1。
<C标志设置处理>
图8是表示标志改写部407的C标志设置处理的一个例子的流程图。在指令寄存器401中保持有C标志设置指令的情况下,标志改写部407一边依次输出从起始行到结束行的各行地址,一边进行循环1的处理(S82~S86)。标志改写部407对各行进行相同的处理,因此这里只对1行的处理进行说明。
即,在高速缓冲存储器3没有被处理器1存取的期间,标志改写部407向地址寄存器20输出行地址(S83),并且使比较器32a~32d比较地址寄存器20的标签地址与高速缓存项目的标签,判定是否命中(S84)。进一步,在命中的情况下,标志改写部407对命中的高速缓存项目把C标志设置为1(S85),在非命中的情况下,由于没有被登录到高速缓冲存储器,不执行任何工作。
由此,对于从起始行到结束行的各行,当被登录到高速缓冲存储器3的情况下,C标志被设置为1。
<清洁处理>
图9是表示清洁处理部39的清洁处理的一个例子的流程图。
如该图所示,清洁处理部39在循环1的处理(S900~S913)中,通过依次指定组索引(SI)0~15(S901),对所有16个组进行循环2的处理。在循环2的处理(S900~S913)中,清洁处理部39通过读取组内的通路0~3的C标志(S903),搜索C=1的高速缓存项目(S904)。在循环3的处理(S905~910)中,清洁处理部39对C=1的高速缓存项目读取以子行为单位的脏标志(S906),如果是脏(S907),则将该子行的数据写回内存2(S908),并将该脏标志复位为0(S909)。在该子行数据的写回中,如循环4的处理(S920~S923),清洁处理部39在空周期中(S920)逐字写回(S922)。
这样,清洁处理部39依次检验所有高速缓存项目的C标志,搜索C=1的高速缓存项目,如果是脏,则从高速缓冲存储器3写回到内存2。
如上所述,根据本实施方式的高速缓冲存储器,对属于由处理器1指定的地址范围内的高速缓存项目,赋予表示是否可以结束高速缓存的高速缓存结束属性(C标志),并在发生高速缓存缺失之前,回写不会再被写入的高速缓存项目,因此在高速缓存缺失时,只发生加载损失,可以减少回写损失的发生。由此可以提高高速缓冲存储器的效率,提高存取速度。
而且,处理器1可以与高速缓冲存储器的行大小及行边界无关地指定任意的地址,作为应设置高速缓存结束属性的地址范围。由此,编程人员和编译程序就不必考虑行大小及行边界,因而也无须进行用于清洁的高速缓存地址管理,更容易编制程序。
而且,在清洁处理中,由于以子行为单位只回写脏子行,所以与以行为单位回写相比,可以提高回写速度。
<变形例>
另外,本发明的高速缓冲存储器不限于上述实施方式的结构,还可以有各种变形。下面,对几个变形例进行说明。
(1)图5中,C标志设置部40可以采用具有结束地址寄存器的结构,来取代大小寄存器403及加法器404。此时,结束地址寄存器保持由处理器1写入的结束地址。
(2)也可以采用这样结构,即处理器1一边赋予高速缓存结束属性,一边执行写入数据的存储命令;控制部38还具有命令检测部,一边赋予高速缓存结束属性,一边检测写入数据的存储命令;和标志设置部,进行按照该存储命令的写入时,设置C=1。
(3)图6(a)、6(b)、6(c)所示的各命令,可以通过编译程序插入程序中。此时,编译程序在不再进行写入的程序位置插入上述各命令即可,例如数组的写入、对压缩动画数据进行解码时的块数据的写入等。
(4)也可以采用在高速缓存项目不保持C标志的结构。换句话说,可以采用同时进行图8所示的C标志设置处理和图9所示的清洁处理的结构。此时,采用执行图9中的循环3(S905~S910)的结构即可,来取代在图8的S85中对高速缓存项目设置C标志的操作。
(5)上述实施方式中,以4路组联的高速缓冲存储器为例进行了说明,但通路数既可以是8路也可以是16路,无论几路都可以。同时,上述实施方式以组数16为例进行了说明,但组数无论几组都可以。
(6)上述实施方式中,以组相联的高速缓冲存储器为例进行了说明,但也可以是全组联方式的高速缓冲存储器。
(第二实施方式)第一实施方式说明了使用表示是否还进行写入的C标志的结构。本实施方式中,说明取代C标志而采用表示是否还使用(是否进行写入及读出)的W(弱)标志的结构。
<高速缓冲存储器的结构>
图10是表示本发明的第二实施方式的高速缓冲存储器结构的方框图。该图的高速缓冲存储器与图2的结构相比,不同之处在于具有通路131a~131d,取代了通路31a~31d;具有控制部138,取代了控制部38。下面,省略相同点的说明,以不同点为主进行说明。
通路131a与通路31a相比,不同之处在于,各高速缓存项目中删除了C标志,增加了W标志和U标志。通路131b~131d也相同。
图11表示高速缓存项目的位结构。1个高速缓存项目保持有效标志V0~V3、21位的标签、128字节的行数据、弱标志W、使用标志U及脏标志D0~D3。
其中,弱标志W,对于来自处理器的存取,意味着是否还会使用,对于高速缓冲存储器的置换控制,意味着可以比其他高速缓存项目更先逐出的最弱的置换对象。由于弱标志W有这两种含义,在清洁处理和置换处理的两个处理中都会被参照。
使用标志U表示对该高速缓存项目是否有过存取,在LRU方式的非命中引起的置换时,用于代替4个通路的高速缓存项目中的存取顺序数据。更准确地说,使用标志U为1,意味着有过存取;为0,则意味着未有过存取。但1个组内的4个通路的使用标志全部变为1后,将复位为0。换句话说,使用标志U表示存取的时期是旧还是新的两个相对的状态。即,使用标志U为1的高速缓存项目,意味着与使用标志为0的高速缓存项目相比,它是新受到存取的。
控制部138与控制部38相比,不同之处在于设置W标志,而不是C标志;采用使用标志U,来取代LRU方式中的存取顺序信息。
<控制部的构成>
图12是表示控制部138的结构的方框图。该图的控制部138与控制部38相比,不同之处在于具有清洁处理部139和W标志设置部140,来取代清洁处理部39和C标志设置部40,以及增加了置换部41。
清洁处理部139与清洁处理部39相比,不同之处在于参照W标志,而不是参照C标志。其结果,将回写W=1且脏的高速缓存行。
W标志设置部140根据来自处理器1的指令设置弱标志W。对于已不再进行使用(写入及读出)的高速缓存项目,处理器1向高速缓冲存储器3发出要求设置弱标志的指令。如果W=1的高速缓存项目是脏,则成为清洁处理的对象,同时,高速缓存缺失时将最先成为置换对象。
置换部41采用以使用标志U为存取顺序的伪LRU方式,在高速缓存缺失时进行置换处理,在高速缓冲存储器被存取时进行使用标志U的更新处理。置换处理时,选择W=1的高速缓存项目作为最先的置换对象<使用标志U的说明>
图13表示置换部41的更新使用标志的例子。图13的上段、中段、下段表示构成跨通路0~3的组N的4个高速缓存项目。4个高速缓存项目右端的1或0分别为使用标志的值。这4个使用标志U记为U0~U3。
在该图的上段,(U0~U3)=(1、0、1、0),意味着通路0、2的高速缓存项目已被存取,通路1、3的高速缓存项目没有被存取。
在此状态下,在内存存取命中了组N内的通路1的高速缓存项目时,如该图13的中段所示,被更新为(U0~U3)=(1、1、1、0)。即如实线所示,通路1的使用标志U1被从0更新为1。
而在该图中段的状态下,在内存存取命中了组N内的通路3的高速缓存项目时,如该图下段所示,被更新为(U0~U3)=(0、0、0、1)。即如实线所示,通路3的使用标志U1被从0更新为1。再者,如虚线所示,除通路3以外的使用标志U0~U2从1更新为0。这样,就意味着与通路0~2的各高速缓存项目相比,通路3的高速缓存项目是新被存取的。
在高速缓存缺失时不存在W=1的高速缓存项目的情况下,置换部41根据使用标志决定置换对象的高速缓存项目,进行置换。例如,在图5的上段,置换部41决定以通路1和通路3中的某一个为置换对象,在图5的中段,决定通路3为置换对象,在图5的下段,决定通路0~2中的某一个为置换对象。
<弱标志W的说明>
图14(a)是假定弱标志不存在时的比较例,是表示高速缓存项目被置换的情形的示意图。在该图中,与图13同样地给出了构成跨通路0~3的组N的4个高速缓存项目。4个高速缓存项目右端的1或0,分别为使用标志的值。同时,只有数据E为存取频率低的数据,数据A、B、C、D为存取频率高的数据。
在图14(a)的第1段的状态下,如果处理器1存取数据E,将发生高速缓存缺失。由于该高速缓存缺失,例如,U=0的高速缓存项目中存取频率高的数据C的高速缓存项目被置换为存取频率低的数据E,变为第2段的状态。
在第2段的状态下,处理器1存取数据C时,将发生高速缓存缺失。由于该高速缓存缺失,U=0的高速缓存项目中存取频率高的数据D的高速缓存项目被置换为存取频率高的数据C,变为第3段的状态。
在第3段的状态下,处理器1存取数据D时,将发生高速缓存缺失。由于该高速缓存缺失,例如,存取频率高的数据C的高速缓存项目被置换为存取频率高的数据D,变为第3段的状态。
同样,在第4段的状态下,使用频率低的数据E不作为置换对象被选择,而是保留在高速缓冲存储器中。
在第5段的状态下,使用频率低的数据E是最旧的(U=0),因此被选择为置换对象而被逐出。
这样,在伪LRU方式下(通常的LRU方式也是这样),根据存取频率低的数据E,4通路时,最坏会引发4次高速缓存缺失。
图14(b)是表示置换处理中的弱标志W的作用的示意图。
在该图(b)的第1段的状态(与该图(a)的第1段相同)下,处理器1存取数据E时,发生高速缓存缺失。由于该高速缓存缺失,例如,从U=0的高速缓存项目中,存取频率高的数据C的高速缓存项目被置换为存取频率低的数据E。此时,处理器1在数据E的高速缓存项目中将弱标志W设置为1。这样,在下次高速缓存缺失时,数据E的高速缓存项目将最先被逐出,成为第2段的状态。
在第2段的状态下,如果处理器1存取数据C,发生高速缓存缺失。由于该高速缓存缺失,W=1的高速缓存项目、即存取频率低的数据E的高速缓存项目被选择为置换对象,被置换为存取频率高的数据C,成为第3段的状态。
这样,通过配置弱标志W,可以减少存取频率低的数据引发高速缓存缺失的情况。
<W标志设置处理>
图15是表示W标志设置部140的W标志设置处理的流程图。W标志设置部140的结构与图5所示的C标志设置部相同,而且来自处理器1的W标志设置指令也与图6(a)~6(d)相同。只是,处理器1在W标志设置指令的同时,还指定不再使用(既不写入也不读出)的数据的地址范围。
图15与图8相比,不同之处在于具有步骤S 185,取代步骤S85。此外均与图8的C标志设置处理相同,因此不再重复说明。
步骤S185中,W标志设置部140对S84中命中的高速缓存项目中设置W=1。
<清洁处理>
图16是表示清洁处理部139的清洁处理的流程图。该图与图9相比,不同之处在于具有S903a、S904a、S911a,取代S903、S904、S911。S903a、S904a、S911a都是只在用W标志替代C标志这一点上不同,除此以外的处理内容均相同,因此不再重复说明。
<U标志更新处理>
图17是表示置换部41的U标志更新处理的流程图。该图中,有效标志为0(无效)的高速缓存项目的使用标志U被初始化为0。
图17中,置换部41在高速缓存命中的情况下(步骤S61),将在由组索引选择的组中命中的通路的使用标志U设置为1(步骤S62),读取该组内的其他通路的使用标志U(步骤S63),并判定读取的使用标志U是否均为1(步骤S64),如果都不是1则结束,均为1则将其他通路的所有使用标志U均重置为0(步骤S65)。
这样,置换部41如图13、图14(a)(b)中的更新例子那样地更新使用标志U。
<置换处理>
图18是表示置换部41的置换处理的流程图。该图中,置换部41在内存存取不命中的情况下(步骤S91),读取由组索引选择的组中的4个通路的使用标志U及弱标志W(步骤S92),并判定是否存在W=1的通路(步骤S93)。当判定W=1的通路不存在时,则选择1个U=0的通路(步骤S94)。此时,当有多个使用标志U为0的通路存在时,置换部41将随机选择1个。当判定W=1的通路存在时,与U标志的值无关地选择1个W=1的通路(步骤S95)。此时,当有多个弱标志W为1的通路存在时,置换部41随机选择1个。
而且,置换部41以该组中被选择的通路的高速缓存项目为对象进行置换(步骤S96),置换后将该高速缓存项目的使用标志U初始化为1,弱标志W初始化为0(步骤S97)。另外,此时有效标志V、脏标志D分别被初始化为1、0。
这样,当W=1的通路不存在时,从使用标志U为0的高速缓存项目中选择1个置换对象。
而且,当W=1的通路存在时,与使用标志U为0还是1无关地,从W=1的通路的高速缓存项目中选择1个置换对象。这样,如图14(a)、14(b)所示,可以减少因存取频率低的数据保留在高速缓冲存储器而引发的高速缓存缺失。
如以上说明,根据本实施方式的高速缓冲存储器,通过将弱标志W=1的行作为不再由处理器写入的行进行清洁,可以减少高速缓存缺失时的回写损失。
此外,在不再使用的高速缓存项目中设置W=1,W=1的高速缓存项目将被最先选择为置换对象,因而可以减少因存取频率低的数据保留在高速缓冲存储器中而引发的高速缓存缺失的情况。
同时,由于采用使用1位使用标志的伪LRU方式,取代已有的LRU方式的表示存取顺序的数据,作为存取顺序数据只需1位标志,因此存取顺序数据的数据量小、更新简便,从而可以缩减硬件规模。
<变形例>
另外,本发明的高速缓冲存储器不限于上述实施方式的结构形式,还可以有各种变形。下面,对几个变形例进行说明。
(1)还可以采用这样结构,即不采用使用了使用标志U的伪LRU,而是按每个高速缓存项目对表示4个通路的存取顺序的顺序数据进行保持及更新,按已有的LRU方式选择置换对象。此时,与存取顺序无关,将W=1的高速缓存项目作为置换对象最先选择即可。
(2)也可以采用同时具备第一实施方式所示的C标志和本实施方式中的W标志两者的结构。此时,C标志在清洁处理中使用,W标志则只用于置换对象的选择即可。这样,通过C标志,可以让有可能被读出且不再被写入的高速缓存项目,在被清洁后仍保留在高速缓冲存储器中。不再读取也不再写入的高速缓存项目将被清洁,且被选择为最先的置换对象。通过同时使用C标志和W标志,可以进行更为细致的控制。
(3)上述实施方式中,假定子行的大小为行的大小的1/4,但也可以是1/2、1/8、1/16等其他大小。此时,各高速缓存项目分别保持与子行相同数量的有效标志及脏标志即可。
产业上利用的可能性本发明可适用于提高内存存取速度的高速缓冲存储器及其控制方法,例如,可适用于片内高速缓冲存储器、片外高速缓冲存储器、数据高速缓冲存储器、命令高速缓冲存储器等。
权利要求
1.一种高速缓冲存储器,其特征在于,包括赋予单元,对保持行数据的每个高速缓存项目,赋予表示对该高速缓存项目是否可以结束高速缓存的高速缓存结束属性;选择单元,选择被赋予表示可以结束高速缓存的高速缓存结束属性、且被设置了表示已被写入的脏标志的高速缓存项目;以及回写单元,与高速缓存缺失的发生无关地,将被选择的高速缓存项目的行数据回写到内存。
2.如权利要求1所述的高速缓冲存储器,其特征在于,上述赋予单元包括保持单元,保持由处理器指定的地址范围;搜索单元,搜索保持行数据的高速缓存项目,该行数据属于由保持单元保持的地址范围;以及设置单元,对被搜索到的高速缓存项目设置表示可以结束高速缓存的高速缓存结束属性。
3.如权利要求2所述的高速缓冲存储器,其特征在于,上述搜索单元包括第1转换单元,当由保持单元保持的地址范围的开头地址指向行数据的中途时,将该开头地址转换为指向被包含在上述地址范围内的开头行的起始行地址;第2转换单元,当由保持单元保持的地址范围的末尾地址指向行数据的中途时,将该末尾地址转换为指向被包含在上述地址范围内的末尾行的结束行地址;以及判定单元,判定是否有保持与从上述起始行地址到结束行地址的各行地址相对应的数据的高速缓存项目。
4.如权利要求2所述的高速缓冲存储器,其特征在于,上述高速缓冲存储器还包括置换单元,该置换单元在发生高速缓存缺失时,将被赋予了表示可以结束高速缓存的高速缓存结束属性的高速缓存项目,作为置换对象进行选择。
5.如权利要求1所述的高速缓冲存储器,其特征在于,上述赋予单元包括命令检测单元,对在处理器中执行了存储命令的情况进行检测,该存储命令以表示可以结束高速缓存的高速缓存结束属性的赋予、和数据的写入作为命令内容;以及设置单元,在所检测出的按照该命令进行了写入的高速缓存项目设置高速缓存结束属性。
6.如权利要求1所述的高速缓冲存储器,其特征在于当内存总线处于空周期时,上述回写单元向内存回写高速缓存项目的数据。
7.如权利要求1所述的高速缓冲存储器,其特征在于上述高速缓存项目中,构成1行的多个子行的每个具有脏标志;对于由选择单元选择的高速缓存项目,上述回写单元只回写脏子行。
8.一种高速缓冲存储器的控制方法,其特征在于,包括赋予步骤,对保持行数据的各个高速缓存项目,赋予表示是否可以结束高速缓存的高速缓存结束属性;选择步骤,选择被赋予表示可以结束高速缓存的高速缓存结束属性、且被设置了表示已被写入的脏标志的高速缓存项目;以及,回写步骤,与高速缓存缺失的发生无关地,将被选择的高速缓存项目的行数据回写到内存。
全文摘要
本发明的高速缓冲存储器包括C标志设置部(40),对保持行数据的各个高速缓存项目,赋予表示在该高速缓存项目中以后是否不进行写入的清洁标志C;清洁处理部(39),将被赋予表示不进行写入的清洁标志C、且设置有表示已被写入的脏标志D的高速缓存项目的行数据回写到内存。
文档编号G06F12/12GK1882923SQ20048003410
公开日2006年12月20日 申请日期2004年11月2日 优先权日2003年11月18日
发明者冈林叶月, 中西龙太, 田中哲也 申请人:松下电器产业株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1