高速缓存控制装置以及控制方法转让专利

申请号 : CN200780053201.6

文献号 : CN101681303B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 清田直宏

申请人 : 富士通株式会社

摘要 :

在采取如下构成,即具备以线程共享的方式而设置且具有多个入口并在这些入口保持访问请求的端口单元,并使用该端口单元来控制针对同时执行的多个线程所共享的高速缓存的访问请求时,进行如下的控制:将各线程发出的访问请求登记在分配给该线程的端口单元的端口部分,据此来结合线程构成分割使用端口单元。而且,在选择访问请求的情况下,对每个线程从端口单元保持的该线程已发出的访问请求之中,通过规定的优先控制来选择访问请求,并从该已选择的访问请求之中按照线程选择信号来选择最终的访问请求。根据这一构成就能够在抑制端口单元的资源量的同时有效地使用端口单元的资源,来执行高速缓存访问处理。

权利要求 :

1.一种高速缓存控制装置,控制针对同时执行的多个线程所共享的高速缓存的访问请求,其特征在于,具备:端口单元,以被线程共享的方式而设置,且具有多个入口并在这些入口保持访问请求;

控制单元,以如下方式进行控制,即通过将各线程发出的访问请求登记在分配给该线程的所述端口单元的端口部分,来结合线程构成分割使用所述端口单元;

第1选择单元,与各线程对应而被设置,并将所述端口单元保持的该线程已发出的访问请求作为输入,按照规定的优先控制来选择访问请求;

第2选择单元,将第1选择单元已选择的访问请求作为输入,并按照线程选择信号来选择最终的访问请求。

2.按照权利要求1所记载的高速缓存控制装置,其特征在于,还具备:切换单元,在线程的处理结束时,将所述线程选择信号所指的线程从该处理已结束的线程切换到另外的线程。

3.按照权利要求1所记载的高速缓存控制装置,其特征在于,还具备:测量单元,测量各线程发出的访问请求的频率;

决定单元,基于所述测量单元的测量结果,来决定分配给各线程的所述端口部分。

4.按照权利要求1所记载的高速缓存控制装置,其特征在于,还具备:检测单元,检测是否处于仅一个线程动作的动作模式;

第2决定单元,在所述检测单元检测到处于仅一个线程动作的动作模式的情况下,决定对该线程分配所述端口单元具有的全部的端口部分。

5.一种高速缓存控制方法,由高速缓存控制装置执行,该高速缓存控制装置具备以被线程共享的方式而设置,且具有多个入口并在这些入口保持访问请求的端口单元,并使用该端口单元来控制针对同时执行的多个线程所共享的高速缓存的访问请求,该高速缓存控制方法的特征在于:所述高速缓存控制装置,以如下方式进行控制,即,通过将各线程发出的访问请求登记在分配给该线程的所述端口单元的端口部分,来结合线程构成分割使用所述端口单元;

对每个线程从所述端口单元保持的该线程已发出的访问请求之中,按照规定的优先控制来选择访问请求;

从所述已选择的访问请求之中,按照线程选择信号来选择最终的访问请求。

6.按照权利要求5所记载的高速缓存控制方法,其特征在于:所述高速缓存控制装置,在线程的处理结束时,将所述线程选择信号所指的线程从该处理已结束的线程切换到另外的线程。

7.按照权利要求5所记载的高速缓存控制方法,其特征在于:所述高速缓存控制装置,测量各线程发出的访问请求的频率,并基于该测量结果来决定分配给各线程的所述端口部分。

8.按照权利要求5所记载的高速缓存控制方法,其特征在于:所述高速缓存控制装置,检测是否处于仅一个线程动作的动作模式,并在检测到处于仅一个线程动作的动作模式的情况下,决定对该线程分配所述端口单元具有的全部的端口部分。

说明书 :

高速缓存控制装置以及控制方法

技术领域

[0001] 本发明涉及在SMT(Simultaneous Multi Thread:同步多线程)方式的处理器上所用的高速缓存控制装置以及控制方法,特别是涉及在SMT方式的处理器中,不使高速缓存访问处理所需要的资源单纯地按线程数量增加而能够有效地利用该资源来执行高速缓存访问处理的高速缓存控制装置以及控制方法。

背景技术

[0002] SMT方式的处理器是同时执行多个线程的处理器。在此SMT方式的处理器中,由于多个线程共享高速缓存,所以就需要构筑其构成不同于在单线程方式的处理器中所用的高速缓存控制的构成的高速缓存控制。
[0003] 图12中图示在单线程方式的处理器中所用的高速缓存控制之构成。
[0004] 在这里,图中所示的100是命令控制部,200是高速缓存控制部,201是高速缓存RAM,202是取指端口(Fetch Port),203是TOQ(Top-Of-Queue:队列顶端)控制电路,204是优先顺序控制电路。
[0005] 如图12所示那样,来自命令控制部100的高速缓存访问的请求暂且被高速缓存控制部200中的具有多个入口(entry)的取指端口202所保持。
[0006] 各个访问请求按着程序上的顺序被依次分配给取指端口202,取指端口202的各入口被循环使用。例如,在取指端口202具有16个入口(FP#0~FP#15)的情况下,从FP#0起被依次分配各访问请求,在FP#15之后分配给FP#0。
[0007] 取指端口202的各入口保持访问请求直到所请求的高速缓存访问处理完成为止,并在所请求的高速缓存访问处理已完成的时刻开放访问请求。由TOQ控制电路203输出的FP-TOQ(Fetch-Port-Top-Of-Queue)指示处理尚未完成的最旧的取指端口202的入口编号。
[0008] 为了高速缓存访问处理而读出的取指端口202的入口选择,在不按顺序处理高速缓存访问的情况下,虽然没有必要一定依赖于取指端口202的分配顺序,基本上选择任意入口的访问请求来进行处理也无妨,但实际上是通过优先顺序控制电路204设置优先顺序来进行选择。
[0009] 图13中表示由优先顺序控制电路204执行的优先顺序控制处理。
[0010] 亦即、优先顺序控制电路204,第一,在尚未进行过一次高速缓存访问的入口、或者因高速缓存未命中及数据的顺序性保证等而指示了针对在取指端口202使其待机的访问请求的再处理的入口存在一个以上的情况下,在这些入口之中优先选择最靠近FP-TOQ的入口。
[0011] 然后,第二,在虽然不适用第一优先顺序的条件但被分配了访问请求的情况,也就是说有效的入口存在一个以上的情况下,优先选择在这些入口之中最靠近FP-TOQ的入口。
[0012] 以往的SMT方式的处理器中使用的高速缓存控制,以原封不动地利用这样构成的单线程方式的处理器中使用的高速缓存控制的方式来实现。
[0013] 亦即,在以往的SMT方式的处理器中使用的高速缓存控制,对每个线程设置具有规定的入口数的取指端口,通过如图13所示那样的优先顺序控制对每个线程选择优先顺序最高的访问请求,并通过进行线程间的优先顺序控制从其中选择最终的访问请求。
[0014] 在这里,作为与本发明相关联的技术,在下记专利文献1中记载有如下发明,即在SMT方式的处理器中,实现保证线程间的共享数据的读出以及写入的执行顺序的一致性。
[0015] 专利文献1:WO2004/068361号公报
[0016] 如上述那样,以往的SMT方式的处理器中使用的高速缓存控制,以原封不动地利用在单线程方式的处理器中使用的高速缓存控制的方式来实现,对每个线程设置具有规定的入口数的取指端口,通过图13所示那样的优先顺序控制对每个线程选择优先顺序最高的访问请求,通过进行线程间的优先顺序控制来从其中选择最终的访问请求。
[0017] 但是,若根据这样的现有技术,就有不可避免地增加高速缓存访问处理所需要的资源这种问题。
[0018] 亦即、在以往的SMT方式的处理器中使用的高速缓存控制,当在单线程方式的处理器中使用的高速缓存控制中使用例如16个入口的取指端口,且线程为n个的情况下,就要准备n个该具有16个入口的取指端口,由此不可避免地增加资源。
[0019] 进而,在现有技术中,还有未有效率地利用高速缓存访问处理所需要的资源这种问题。
[0020] 亦即、如果用线程为2的情况来进行说明,则会发生一方的线程发出的访问请求的频率大于另一方的线程发出的访问请求的频率的情况。
[0021] 即便在从最初就得知这种情况将会发生的情况下,在现有技术中也是为一方的线程例如准备具有16个入口的取指端口,并为另一方的线程准备具有与其相同的16个入口的取指端口。
[0022] 这样,为发出较少的访问请求的线程而准备的取指端口就具有超过需要的较多的入口,因此,未有效地利用取指端口。
[0023] 而且,线程发出的访问请求的频率会伴随于数据处理的推进而变化。
[0024] 即便在这种情况将会发生的情况下,在现有技术中也是对2个线程准备例如具有16个入口的取指端口那样准备具有被固定的入口数的取指端口。
[0025] 这样,即便在一方的线程发出的访问请求的频率大于另一方的线程发出的访问请求的频率的情况下,也与其没有关系地使用相同入口数的取指端口,因此,未有效地利用取指端口。

发明内容

[0026] 本发明就是鉴于这种情况而完成的,其目的是提供一种能够在SMT方式的处理器中,不使高速缓存访问处理所需要的资源增加而能够有效地利用该资源来执行高速缓存访问处理的新的高速缓存控制技术。
[0027] 为了实现此目的,本发明的高速缓存控制装置,为了控制针对同时执行的多个线程所共享的高速缓存的访问请求,而构成为具备:(1)端口单元,以被线程共享的方式而设置,且具有多个入口并在这些入口保持访问请求;(2)控制单元,以如下方式进行控制,即通过将各线程发出的访问请求登记在分配给该线程的端口单元的端口部分,来结合线程构成分割使用端口单元;(3)第1选择单元,与各线程对应而被设置,并将端口单元保持的该线程已发出的访问请求作为输入,根据规定的优先控制来选择访问请求;(4)第2选择单元,将第1选择单元已选择的访问请求作为输入,并按照线程选择信号来选择最终的访问请求;(5)切换单元,在线程的处理结束时,将线程选择信号所指的线程从该处理已结束的线程切换到另外的线程;(6)测量单元,测量各线程发出的访问请求的频率;(7)第1决定单元,基于测量单元的测量结果来决定分配给各线程的端口部分;(8)检测单元,检测是否处于仅一个线程动作的动作模式;(9)第2决定单元,在检测单元检测出处于仅一个线程动作的动作模式的情况下决定对该线程分配端口单元具有的全部的端口部分。
[0028] 这样构成的本发明的高速缓存控制装置,以如下方式进行控制,即,在将访问请求登记在端口单元的情况下,将各线程发出的访问请求登记在分配给该线程的端口单元的端口部分,据此来结合线程构成分割使用端口单元。
[0029] 而且,在选择端口单元上所登记的访问请求的情况下,对每个线程从端口单元保持的该线程已发出的访问请求之中根据规定的优先控制来选择访问请求,并从该已选择的访问请求之中按照线程选择信号来选择最终的访问请求。
[0030] 这样,本发明的高速缓存控制装置,在被用于SMT方式的处理器时以如下方式进行控制,即,若不是对每个线程准备端口单元,例如是以准备一个具有16个入口的端口单元,线程为两个的情况进行说明,则,例如根据两个线程的访问请求的频率之比例,对两个线程分别分配8个入口,或者对一方的线程分配10个入口,同时对另一方的线程分配6个入口,如此来结合线程构成分割使用端口单元。
[0031] 按照这一构成,根据本发明就能够以较少的资源执行SMT方式的处理器中的高速缓存访问处理。
[0032] 在采取此构成时,本发明的高速缓存控制装置,在线程的处理结束时,将线程选择信号所指的线程从该处理已结束的线程切换到另外的线程。
[0033] 据此,就能够防止仅特定的线程所发出的访问请求被持续选择这种不理想情况的发生。
[0034] 而且,在采取此构成时,本发明的高速缓存控制装置,测量各线程发出的访问请求的频率,并基于该测量结果来决定分配给各线程的端口部分。
[0035] 据此,就能够对访问请求的频率较大的线程较多地分配入口数,由此就能够有效地使用端口单元。
[0036] 而且,在采取此构成时,本发明的高速缓存控制装置,检测是否处于仅一个线程动作的动作模式,在检测出处于仅一个线程动作的动作模式的情况下,决定对该线程分配端口单元所具有的全部的端口部分。
[0037] 据此,就能够在处于仅一个线程动作的动作模式的情况下对该线程分配全部入口,由此就能够有效地使用端口单元。
[0038] 如以上所说明的那样,根据本发明,就能够在SMT方式的处理器中不使高速缓存访问处理所需要的资源增加而能够有效地利用该资源来执行高速缓存访问处理。
[0039] 而且,根据本发明,由于能够有效地利用资源来执行高速缓存访问处理,所以就能够提高线程的数据处理效率。

附图说明

[0040] 图1是应用本实施例的CPU的构成图。
[0041] 图2是具备本实施例的一级高速缓存控制部的一实施例。
[0042] 图3是线程选择信号控制电路的构成图。
[0043] 图4是输入到线程选择信号控制电路的线程处理完成报告的说明图。
[0044] 图5是线程内优先顺序控制电路执行的流程图。
[0045] 图6是线程内优先顺序控制电路执行的流程图。
[0046] 图7是线程间优先顺序控制电路执行的流程图。
[0047] 图8是负荷监视电路的说明图。
[0048] 图9是具备负荷监视电路时的取指端口的使用状态的说明图。
[0049] 图10是线程模式检测电路的说明图。
[0050] 图11是具备线程模式检测电路时的取指端口的使用状态的说明图。
[0051] 图12是单线程方式的处理器中使用的高速缓存控制的构成图。
[0052] 图13是单线程方式的处理器中使用的取指端口的入口选择的优先顺序控制的流程图。
[0053] 附图标记说明:
[0054] 1CPU
[0055] 2系统控制总线
[0056] 10命令/运算控制部
[0057] 20一级高速缓存控制部
[0058] 21高速缓存RAM
[0059] 22取指端口
[0060] 23TOQ控制电路
[0061] 24FP分割方式设定电路
[0062] 25线程内优先顺序控制电路
[0063] 26线程选择信号控制电路
[0064] 27线程间优先顺序控制电路
[0065] 28负荷监视电路
[0066] 29线程模式检测电路
[0067] 30二级高速缓存控制部
[0068] 31高速缓存RAM

具体实施方式

[0069] 下面利用实施方式详细地说明本实施例。
[0070] 在图1中图示应用本实施例的CPU1的构成。
[0071] 应用本实施例的CPU1具备:命令/运算控制部10,发出命令的取出请求及运算数据的反映请求;一级高速缓存控制部20,具有高速/小容量的高速缓存RAM21,并执行如下处理,即,接受命令/运算控制部10发出的访问请求,在该访问请求的数据已保存在高速缓存RAM21中的情况下,将该数据返回到命令/运算控制部10;二级高速缓存控制部30,具有低速/大容量的高速缓存RAM31,并执行如下处理,即,在命令/运算控制部10发出的访问请求的数据已保存在高速缓存RAM31中的情况下,将该数据返回到命令/运算控制部10并且登记在高速缓存RAM21中,而在未保存在高速缓存RAM31中的情况下,经由系统控制总线2请求未图示的存储器转送数据。
[0072] 在图2中图示具备本实施例的一级高速缓存控制部20的一实施例。
[0073] 在这里,假设本实施例的一级高速缓存控制部20,被安装在线程0和线程1这2个线程进行动作的SMT方式的处理器中,并且假设使用具有16个入口的取指端口。
[0074] 本实施例的一级高速缓存控制部20如图2所示那样具备:高速缓存RAM21、取指端口22、TOQ控制电路23、FP分割方式设定电路24、线程内优先顺序控制电路25-0、线程内优先顺序控制电路25-1、线程选择信号控制电路26和线程间优先顺序控制电路27。
[0075] 取指端口22具有多个入口,按照FP分割方式设定电路24设定的分割方式,通过TOQ控制电路23将这些入口分割成2方而使用,在其一方的入口部分保持线程0发出的访问请求,并且在另一方的入口部分保持线程1发出的访问请求。
[0076] 例如,在取指端口22具有16个入口(FP#0~FP#15),并且FP分割方式设定电路24将16个入口分割成FP#0~FP#7和FP#8~FP#15这两方的情况下,线程0发出的访问请求沿着程序的顺序被依次分配给FP#0~FP#7,该8个入口被循环使用,而且,线程1发出的访问请求沿着程序的顺序被依次分配给FP#8~FP#15,该8个入口被循环使用。
[0077] 在这里,取指端口22的各入口保持访问请求直到所请求的高速缓存访问处理完成为止,并在所请求的高速缓存访问处理已完成的时刻开放访问请求。
[0078] TOQ控制电路23以线程0和线程1共用的方式而设置,并对如下处理进行控制:按照FP分割方式设定电路24设定的分割方式将取指端口22的入口分割成两方而使用,TOQ控制电路23利用FP-TOQ-TH0指示保持线程0发出的访问请求之中的处理尚未完成的最旧的访问请求的取指端口22的入口编号,并且利用FP-TOQ-TH1指示保持线程1发出的访问请求之中的处理尚未完成的最旧的访问请求的取指端口22的入口编号。
[0079] FP分割方式设定电路24,例如在动作开始以前,依照线程0、1发出的访问请求的负荷的比例(访问请求的频率的比例)来决定取指端口22的分割方式,并通知给TOQ控制电路23。例如,决定将取指端口22的入口分割成FP#0~FP#7和FP#8~FP#15这两方,并通知给TOQ控制电路23。
[0080] 线程内优先顺序控制电路25-0,与线程0对应而设置,并为线程0请求的高速缓存访问处理选择取指端口22的入口,并从该入口取出访问请求。
[0081] 线程内优先顺序控制电路25-1,与线程1对应而设置,并为线程1请求的高速缓存访问处理选择取指端口22的入口,并从该入口取出访问请求。
[0082] 线程选择信号控制电路26生成在使线程0优先时显示“0”,在使线程1优先时显示“1”的线程选择信号(thread-select)。
[0083] 线程间优先顺序控制电路27,当必须在线程间决定优先顺序时,按照线程选择信号控制电路26生成的线程选择信号,选择线程内优先顺序控制电路25-0输出的访问请求,或者选择线程内优先顺序控制电路25-1输出的访问请求,并按照该选择的访问请求对高速缓存RAM21进行索引。
[0084] 在图3中图示线程选择信号控制电路26之构成例。
[0085] 线程选择信号控制电路26如图3所示那样具备:保持并输出线程选择信号的闩锁电路260;第1逻辑电路261,由两个与(AND)门和一个或(OR)门构成,并且在闩锁电路260输出“0”时并且通知了线程0的处理完成报告(具有“1”的值)时输出“1”,而在闩锁电路260输出“1”时并且通知了线程1的处理完成报告(具有“1”的值)时输出“0”;第
2逻辑电路262,由异或(EOR)门构成,并且计算闩锁电路260的输出信号与第1逻辑电路
261的输出信号的“异或”值并提供给闩锁电路260。
[0086] 按照这一构成,线程选择信号控制电路26以如下方式进行控制:在线程0的处理结束时,将线程选择信号所指的线程从线程0切换到线程1,在线程1的处理结束时,将线程选择信号所指的线程从线程1切换到线程0,据此,在基于线程间竞争决定优先顺序时,能够以防止任意一个线程的高速缓存访问处理持续输掉的情况的方式进行控制。
[0087] 在这里,如图4所示那样,向线程选择信号控制电路26,输入从取指端口22通知给命令/运算控制部10的线程0的处理完成报告,并且输入从取指端口22通知给命令/运算控制部10的线程1的处理完成报告。
[0088] 线程选择信号控制电路26生成的线程选择信号是用于在线程间发生了同时进行访问请求处理及资源获得这种竞争时,决定处理对象的线程的信号。在此例子中,使用分配给取指端口22的存储器访问处理的完成信号、也就是取指端口22的入口的开放信号来进行控制。例如若是下载命令则以向命令/运算控制部10传送对象数据为前提完成处理,若是存储命令则以保证顺序控制为前提完成处理。
[0089] 在图5中以流程图的形式来图示线程内优先顺序控制电路25-0执行的处理,在图6中以流程图的形式来图示线程内优先顺序控制电路25-1执行的处理,在图7中以流程图的形式来图示线程间优先顺序控制电路27执行的处理。
[0090] 接着,按照这些流程图,就如图2那样所构成的一级高速缓存控制部20执行的处理详细地进行说明。
[0091] 若开始了取指端口22所保持的线程0发出的访问请求的优先控制处理,线程内优先顺序控制电路25-0,则如图5的流程图所示那样,首先最初在步骤S100确认与线程0相关的取指端口22的端口部分的全部的入口状态。
[0092] 接下来,在步骤S101中根据这一确认处理,判断尚未进行过一次高速缓存访问的入口、或者因高速缓存未命中及数据的顺序性保证等而指示了针对在取指端口22使其待机的访问请求的再处理的入口是否存在一个以上。
[0093] 在通过此步骤S101的判断处理,判断为符合要求的入口存在一个以上时,进入步骤S102,在这些入口之中,选择与TOQ控制电路23输出的FP-TOQ-TH0所指的入口最靠近的入口,并在后续的步骤S103中,对有关线程0的条件1这个变量设定“1”,并结束优先控制处理。
[0094] 另一方面,在通过步骤S101的判断处理,判断为符合要求的入口不存在一个以上时,进入步骤S104,判断有效的入口(被分配有访问请求的入口)是否存在一个以上。
[0095] 在通过此步骤S104的判断处理,判断为符合要求的入口存在一个以上时,进入步骤S105,在这些入口之中选择与TOQ控制电路23输出的FP-TOQ-TH0所指的入口最靠近的入口,并在后续的步骤S106中,对有关线程0的条件2这个变量设定“1”,并结束优先控制处理。
[0096] 另一方面,在通过步骤S104的判断处理,判断为有效的入口不存在一个以上时,进入步骤S107,什么都不选择,在后续的步骤S108中,对有关线程0的条件1这个变量设定“0”,同时对有关线程0的条件2这个变量设定“0”,并结束优先控制处理。
[0097] 这样,线程内优先顺序控制电路25-0,将取指端口22所保持的线程0发出的访问请求作为处理对象,在尚未进行过一次高速缓存访问的入口、或者因高速缓存未命中及数据的顺序性保证等而指示了针对在取指端口22使其待机的访问请求的再处理的入口存在一个以上的情况下,在其中优先选择与FP-TOQ-TH0所指的入口最近的入口,而且,在虽然不适用此优先顺序的条件但被分配了访问请求的情况,也就是说有效的入口存在一个以上的情况下,在其中优先选择与FP-TOQ-TH0所指的入口最近的入口。
[0098] 另一方面,若开始了取指端口22所保持的线程1发出的访问请求的优先控制处理,线程内优先顺序控制电路25-1则如图6的流程图所示那样,首先最初在步骤S200中确认与线程1相关的取指端口22的端口部分的全部的入口状态。
[0099] 接下来,在步骤S201中根据这一确认处理,判断尚未进行过一次高速缓存访问的入口、或者因高速缓存未命中及数据的顺序性保证等而指示了针对在取指端口22使其待机的访问请求的再处理的入口是否存在一个以上。
[0100] 在通过此步骤S201的判断处理,判断为符合要求的入口存在一个以上存在时,进入步骤S202,在这些入口之中,选择与TOQ控制电路23输出的FP-TOQ-TH1所指的入口最靠近的入口,并在后续的步骤S203中,对有关线程1的条件1这个变量设定“1”,并结束优先控制处理。
[0101] 另一方面,在通过步骤S201的判断处理,判断为符合要求的入口不存在一个以上时,进入步骤S204,判断有效的入口(被分配了访问请求的入口)是否存在一个以上。
[0102] 在通过此步骤S204的判断处理,判断为符合要求的入口存在一个以上时,进入步骤S205,在这些入口之中选择与TOQ控制电路23输出的FP-TOQ-TH1所指的入口最靠近的入口,并在后续的步骤S206中,对有关线程1的条件2这个变量设定“1”,并结束优先控制处理。
[0103] 另一方面,在通过步骤S204的判断处理,判断为有效的入口不存在一个以上时,进入步骤S207,什么都不选择,在后续的步骤S208中,对有关线程1的条件1这个变量设定“0”,同时对有关线程1的条件2这个变量设定“0”,并结束优先控制处理。
[0104] 这样,线程内优先顺序控制电路25-1,将取指端口22所保持的线程1发出的访问请求作为处理对象,在尚未进行过一次高速缓存访问的入口、或者因高速缓存未命中及数据的顺序性保证等而指示了针对在取指端口22使其待机的访问请求的再处理的入口存在一个以上的情况下,在其中优先选择与FP-TOQ-TH1所指的入口最近的入口,而且,在虽然不适用此优先顺序的条件但被分配了访问请求的情况,也就是说有效的入口存在一个以上的情况下,在其中优先选择与FP-TOQ-TH1所指的入口最近的入口。
[0105] 接着,对线程间优先顺序控制电路27执行的处理进行说明。
[0106] 若通过线程内优先顺序控制电路25-0、1结束了优先控制处理而开始了线程间的优先控制处理,线程间优先顺序控制电路27则如图7的流程图所示那样,首先最初在步骤S300中判断是否对有关线程0的条件1这个变量设定了“1”、且对有关线程1的条件1这个变量设定了“1”。
[0107] 在通过此步骤S300的判断处理,判断为对有关线程0的条件1这个变量设定了“1”、且对有关线程1的条件1这个变量设定了“1”时,进入步骤S301,判断线程选择信号控制电路26生成的线程选择信号是否已显示“0”,并在判断为线程选择信号已显示“0”时,进入步骤S302,通过选择线程内优先顺序控制电路25-0输出的入口,来选择线程0的入口,并结束线程间的优先控制处理。
[0108] 另一方面,在通过步骤S301的判断处理,判断为线程选择信号显示了“1”而不是“0”时,进入步骤S303,通过选择线程内优先顺序控制电路25-1输出的入口,来选择线程1的入口,并结束线程间的优先控制处理。
[0109] 另一方面,在通过步骤S300的判断处理,判断为对有关线程0的条件1这个变量设定了“1”的条件、和对有关线程1的条件1这个变量设定了“1”的条件两个不同时成立时,进入步骤S304判断该两个条件的任意一方是否成立。
[0110] 在通过此步骤S304的判断处理,判断为对有关线程0的条件1这个变量设定了“1”的条件、和对有关线程1的条件1这个变量设定了“1”的条件之中的任意一方成立时,进入步骤S305,通过选择对该条件1这个变量设定了“1”的一方的线程内优先顺序控制电路25-0、1输出的入口,来选择线程0或者线程1的入口,并结束线程间的优先控制处理。
[0111] 另一方面,在通过步骤S304的判断处理,判断为对有关线程0的条件1这个变量设定了“1”的条件、和对有关线程1的条件1这个变量设定了“1”的条件均不成立时,进入步骤S306,判断是否对有关线程0的条件2这个变量设定了“1”、且对有关线程1的条件2这个变量设定了“1”。
[0112] 在通过此步骤S306的判断处理,判断为对有关线程0的条件2这个变量设定了“1”、且对有关线程1的条件2这个变量设定了“1”时,进入步骤S307,判断线程选择信号控制电路26生成的线程选择信号是否已显示“0”,并在判断为线程选择信号已显示“0”时,进入步骤S308,通过选择线程内优先顺序控制电路25-0输出的入口,来选择线程0的入口,并结束线程间的优先控制处理。
[0113] 另一方面,在通过步骤S307的判断处理,判断为线程选择信号显示了“1”而不是“0”时,进入步骤S309,通过选择线程内优先顺序控制电路25-1输出的入口,来选择线程1的入口,并结束线程间的优先控制处理。
[0114] 另一方面,在通过步骤S306的判断处理,判断为对有关线程0的条件2这个变量设定了“1”的条件、和对有关线程1的条件2这个变量设定了“1”的条件两个不同时成立时,进入步骤S310,判断该两个条件的任意一方是否成立。
[0115] 在通过此步骤S310的判断处理,判断为对有关线程0的条件2这个变量设定了“1”的条件、和对有关线程1的条件2这个变量设定了“1”的条件之中的任意一方成立时,进入步骤S311,通过选择对该条件2这个变量设定了“1”的一方的线程内优先顺序控制电路25-0、1输出的入口,来选择线程0或者线程1的入口,并结束线程间的优先控制处理。
[0116] 另一方面,在通过步骤S310的判断处理,判断为对有关线程0的条件2这个变量设定了“1”的条件、和对有关线程1的条件2这个变量设定了“1”的条件均不成立时,进入步骤S312,什么都不选择,结束线程间的优先控制处理。
[0117] 这样,如图2那样构成的本实施例的一级高速缓存控制部20,在被用于SMT方式的处理器时以如下方式进行控制,即,不是对每个线程0、1准备取指端口22,而是例如准备一个具有16个入口的取指端口22,并对两个线程分别分配8个入口,或者对一方的线程分配10个入口同时对另一方的线程分配6个入口,如此来结合线程构成分割使用取指端口22。
[0118] 按照这一构成,根据本实施例,能够以较少的资源执行SMT方式的处理器中的高速缓存访问处理。
[0119] 在如图2那样构成的一级高速缓存控制部20中,FP分割方式设定电路24例如在动作开始以前,根据线程0、1发出的访问请求的负荷的比例(访问请求的频率的比例)来决定取指端口22的分割方式,并通知给TOQ控制电路23。
[0120] 在采取这一构成的情况下,取指端口22的分割方式一旦被决定,在其后就不会变更。
[0121] 但是,在线程0、1所发出的访问请求的负荷的比例伴随数据处理的进展而与时间的经过一起发生变化的情况下,优选,使取指端口22的分割方式与此结合动态地进行变更,以使各线程能够使用的最大入口数可变。
[0122] 为了将其实现,如图8所示那样,具备对线程0发出的访问请求的负荷和线程1发出的访问请求的负荷进行监视的负荷监视电路28,使用此负荷监视电路28,例如以规定的时间T为单位连续地测量两个线程0、1的访问请求的负荷,基于其来决定下一时间T的取指端口22的分割方式,并通知给TOQ控制电路23。
[0123] 若采取这一构成,则如图9所示那样,对访问请求的负荷较大的一方的线程(在此图的例子中为线程0),分配更多的入口,因此,能够有效地使用取指端口22。
[0124] 例如,在线程0和线程1中访问请求的负荷的比例为3∶1的情况下,将线程0的访问请求分配给FP#0~FP#11合计12个入口,将线程1的访问请求分配给FP#12~FP#15合计4个入口,据此,就能够在负荷较重的线程中使用在负荷较轻的线程中使用不完的入口,因此,能够提高取指端口22的入口的使用效率。
[0125] 另外,虽然在图2没有进行说明,但是,在SMT方式的处理器中,有时候仅单一线程进行动作。在这种情况下,命令/运算控制部10发送出单一线程模式信号(single thread mode信号)。
[0126] 由此,如图10所示那样,具备用于检测单一线程模式信号的发送的线程模式检测电路29,在使用此线程模式检测电路29检测出从命令/运算控制部10发送出单一线程模式信号的情况下,决定不分割取指端口22,并通知给TOQ控制电路23。
[0127] 若采取这一构成,如图11所示那样,在仅单一线程进行动作的情况下,由于一个线程能够使用取指端口22的全部入口,所以就能够提高取指端口22的入口的使用效率。
[0128] 虽然按照图示实施例对本高速缓存控制装置以及控制方法进行了说明,但是本高速缓存控制装置以及控制方法并不限定于此。例如,虽然在实施例中假设了被安装在两个线程动作的SMT方式的处理器中这一情况,但是否在3个以上的线程动作的情况下也能够原封不动地应用。
[0129] 工业上的可利用性
[0130] 本发明能够应用于SMT方式的处理器中的高速缓存控制,通过应用本发明就能够在SMT方式的处理器中,不使高速缓存访问处理所需要的资源增加而能够有效地利用该资源来执行高速缓存访问处理。