处理器、运算处理方法和优先度决定方法

文档序号:6380554阅读:209来源:国知局
专利名称:处理器、运算处理方法和优先度决定方法
技术领域
本发明涉及将对某数据处理进行时间分割而至少成为一个以上的处理作为执行单位,对每个该执行单位执行处理的处理器。
背景技术
在处理器通过分时执行多个线程的情况下,一般使用操作系统等软件进行线程的切换。
操作系统在每一定时间内检测是否能够执行各线程。可以根据例如成为处理对象的数据是否准备好来判断执行可否。
在操作系统执行这样的判断处理期间,必须中断线程的执行。在中断线程执行时,将通用寄存器、堆栈指针(SP)和程序计数器(PC)等的内容保存到处理器外部的主存储器等中。保存的各种信息与线程的识别信息(线程ID)一起由操作系统管理。
操作系统具有时间表,根据该时间表依照例如循环排队等方式,从能够执行的线程中决定实际执行的线程。
操作系统取得有关根据时间表被决定执行的线程的保存到主存储器等中的各种信息,将通用寄存器、堆栈指针(SP)和程序计数器(PC)等的内容从主存储器装置等中复原到各寄存器,然后开始线程的执行。
也提案出了使用基于硬件的多个数据处理单元,实现实时数据的并行处理的方法(参照特表2000-509528号公报)。但是为了进行并行处理,有以下问题要设置多个数据处理核心,进而设置它们的调整机构,结构自身变得复杂了。
在使用操作系统等软件进行的线程切换中,由于有基于操作系统自身动作的过载,所以有必要准备比本来的线程处理所需要的性能高的处理器。
另外,在使用操作系统进行的线程切换中,线程切换要花费时间,难以构筑具有实时性的系统。
进而,操作系统由于只在每一定时间判断线程是否可执行,所以线程能够执行后到操作系统判断出能够执行,并实际执行线程为止需要花费时间,响应性不好。该响应性的恶化使得更加难以构筑具有实时性的系统。
另外,在将成为处理对象的数据是否准备好作为条件判断线程可否启动的情况下,有不能将数据存储到存储处理结果的区域中的情况,在这样的情况下就会丢失数据。
另一方面,如果要将许多功能硬件化实现实时处理,则现有的结构具有复杂并且容易成为高成本的倾向。

发明内容
本发明就是鉴于这样的问题点提出的,其目的是提供一种能够有效地实时执行多个线程的处理器、运算处理方法和优先度决定方法。
为了达到上述目的,本发明的实施例相关处理器是执行包含多个执行单位的数据处理的处理器,其特征在于针对每个上述执行单位存储用于上述各执行单位的处理的数据、和上述各执行单位的处理结果的存储部件;从上述存储部件取得上述各执行单位的数据并进行处理,将处理结果输出到上述存储部件的数据处理部件;针对每个上述执行单位判断上述存储部件是否保存了用于该执行单位的处理的数据、以及上述存储部件是否还有存储该执行单位的处理结果的空区域的执行单位判断部件;根据上述执行单位判断部件的判断结果,从上述多个执行单位中决定下一个应该处理的执行单位的执行单位决定部件。
另外,本发明的实施例相关的处理器具备将对某数据处理进行分时而成为至少一个以上的处理作为执行单位,并针对该执行单位执行处理的数据处理部件;
存储在上述数据处理部件中应该执行的执行单位所使用的数据、或上述数据处理部件中的执行结果的多个存储部件;根据存储在上述多个存储部件中的数据量,决定使用存储在各存储部件中的数据的执行单位的优先度的优先度决定部件。


图1是展示软件无线机的处理内容的图。
图2是在任务间设置了FIFO的处理器的概要结构图。
图3是展示本发明相关的处理器的实施例1的概要结构的框图。
图4是展示本发明相关的处理器的实施例2的概要结构的框图。
图5是展示执行线程决定部件12和线程ID·优先顺序提供部件14的详细结构的框图。
图6是展示图5的执行线程决定部件12的处理步骤的流程图。
图7是展示本发明相关的处理器的实施例3的概要结构的框图。
图8是说明本发明相关的处理器的实施例4的动作的时序图。
图9是展示本发明相关的处理器的实施例5的概要结构的框图。
图10是展示图9的变形例子的处理器的框图。
图11是展示寄存器组ID线程ID对应部件24的数据结构的图。
图12是展示本发明相关的处理器的实施例6的概要结构的框图。
图13是展示寄存器组存储部件32的数据结构的图。
图14是展示选中判断部件31的处理步骤的流程图。
图15是展示本发明相关的处理器的实施例7的概要结构的框图。
图16是展示保存寄存器组决定部件35的处理步骤的流程图。
图17是展示本发明相关的处理器的实施例8的概要结构的框图。
图18是展示实施例8的寄存器组ID线程ID对应部件的数据结构的图。
图19是展示接收到错误时运转选中判断要求的情况下的选中判断部件的处理步骤的流程图。
图20是展示接收到选中判断要求的情况下的选中判断部件的处理步骤的流程图。
图21是说明在寄存器组ID线程ID对应部件24中存在设置了的标志的情况下的线程的执行形式的图。
图22是展示实施例9的寄存器组的数据结构的图。
图23是展示有寄存器的改写要求的情况下的处理步骤的流程图。
图24是展示有从外部寄存器组存储部件向寄存器组群的转送要求的情况下的处理步骤的流程图。
图25是展示有从寄存器组群向外部寄存器组存储部件的转送要求的情况下的处理步骤的流程图。
图26是展示外部寄存器组存储部件32的数据结构的图。
图27是展示线程启动时的处理步骤的流程图。
图28是展示有从寄存器组转送部件向外部寄存器组存储部件的寄存器转送要求的情况下的处理步骤的流程图。
图29是展示有从外部寄存器组存储部件向寄存器组群的转送要求的情况下的处理步骤的流程图。
图30是展示实施例11的外部寄存器组存储部件32的数据结构的图。
图31是展示有从外部寄存器组存储部件向寄存器组群的转送要求的情况下的处理步骤的流程图。
图32是展示有从寄存器组转送部件向外部寄存器组存储部件的寄存器转送要求的情况下的处理步骤的流程图。
图33是展示线程结束处理的流程图。
图34是展示本发明的实施例12相关的处理器的模块结构的一个例子的图。
图35是展示本发明的实施例12相关的处理器的线程处理的概要的图。
图36是展示本发明的实施例12相关的处理器对某线程与输入侧FIFO存储量对应地决定线程的启动优先度的方法的一个例子的图。
图37是展示本发明的实施例12相关的处理器对某线程与输出侧FIFO存储量对应地决定线程的启动优先度的方法的一个例子的图。
图38是展示本发明的实施例12相关的处理器决定下一个启动的线程的流程的一个例子的图。
图39是展示本发明的实施例13相关的处理器对某线程与输入侧FIFO存储量对应地决定线程的启动优先度的方法的一个例子的图。
图40是展示本发明的实施例13相关的处理器对某线程与输出侧FIFO存储量对应地决定线程的启动优先度的方法的一个例子的图。
具体实施例方式
以下,参照附图具体说明本发明相关的处理器、运算处理方法和优先度决定方法。
(实施例1)对分时地实时执行多个线程的要求正在提高。例如,图1是展示软件无线机的处理内容的图。在图1的软件无线机中,连续执行处理A~处理D。例如,处理B将处理A的输出作为输入,将执行了规定的运算处理的结果传送到处理C。
在图1中,各处理的输出数据量必须与启动下一个处理所必须的数据量一致。另外,根据处理内容各处理的处理量是各种各样的。进而,由于在处理期间数据传递的定时不同,所以在各处理的期间必须取得同步。
为了有效地实现图1的处理,大多作为一个以上的线程生成各处理。各线程有用软件实现的情况和用硬件实现的情况。在此,线程是指将处理器应该执行的一个处理分割并分配为多个时间间隔后的处理单位或该处理单位的执行。本实施例的处理器由于是数据流程型,所以通过使分割了的多个线程依次处理一个处理数据,来完成一个处理。线程是并行处理的,能够非同步地进行多个处理数据的数据流程型处理。这样,主要为了实现实时OS那样的多线程处理而对一个处理进行线程化。
在本实施例中,向线程间插入FIFO(先进先出),使得线程间不用取得严格的同步。FIFO一般是指数据的存储方法,但在以下所示的实施例中是指从过去存储的数据中顺序地取出存储的数据的方式,即FIFO型的存储装置。最新存储的数据就是最后取出的数据,例如被称为队列的数据结构就是该方式的存储装置。这种情况下的处理器的概要处理步骤如图2所示。
在图2中,FIFO1向线程1输出输入数据,FIFO2从线程1接收输出数据,同时向线程2输出输入数据。
在图2中,在各线程的输入侧和输出侧逐一设置FIFO,但也可以设置多个FIFO。
也可以用图2的结构实现软件无线机,但由于用来在各线程间取得同步的处理量多,所以即使利用了FIFO,通过软件取得同步处理器的过载也会变大,难以实现。
在此,如果着眼于各线程的启动条件,则各线程在不存在输入数据时没有必要启动。另外,在各线程的输出侧的FIFO中不存在存储各线程的处理结果的空区域的情况下,有可能丢失各线程的处理结果,在这种情况下也没有必要启动线程。
所以,以下说明的本发明的各实施例监视FIFO内的数据的存储状态,只在存在向各线程的输入数据,并且输出侧FIFO中存在空区域的情况下,启动线程。
图3是展示本发明相关的处理器的实施例1的概要结构的框图。图3的处理器具备控制线程的执行的执行控制部件1、执行线程的处理器核心2、存储用于线程的执行的数据和线程的执行结果的存储部件3、连接处理器核心2和存储部件3的总线4。
执行控制部件1具有判断多个线程各自能否启动的的线程启动部件11、根据线程启动部件11的判断结果决定应该启动的线程的执行线程决定部件12。处理器核心2执行在执行线程决定部件12决定的线程。
线程启动部件11与由多个FIFO10组成的存储部件3连接。在图3中展示了FIFO10由n个FIFO_0~FIFO_n构成的例子。各FIFO10对应于图2的FIFO1等,线程启动部件11决定下一个应该启动的线程。更具体地说,线程启动部件11保存应该输入到线程的FIFO10(例如FIFO_0)的输出数据,同时确认在应该存储线程的处理结果的其他FIFO10(例如FIFO_1)中是否存在空区域。然后,只在存在应该输入到线程的FIFO10(例如FIFO_0)的输出数据,并且在应该存储线程的处理结果的其他FIFO10(例如FIFO_1)中存在空区域的情况下,判断为应该启动线程。
执行线程决定部件12在存在多个能够启动的线程的情况下,从中选择任意一个线程。例如,执行用来识别各线程的线程ID最小的线程。
处理器核心2具有例如指令取得部件、指令解释部件、指令执行部件、存储指令执行结果的指令执行结果存储部件以及存储指令的执行状态的指令执行状态存储部件。
这样,在实施例1中,FIFO10保存应该输入到线程的数据,并且通过线程启动部件11判断在应该存储线程的执行结果的其他FIFO10中是否存在空区域,执行线程决定部件12根据该判断结果决定应该启动的线程,因而没有操作系统也能够进行线程的时序安排,不受操作系统的过载的影响,能够进行线程的实时处理。
(实施例2)实施例2对多个线程付与优先顺序,依照优先顺序进行线程的执行。
图4是展示本发明相关的处理器的实施例2的概要结构的框图。图4的处理器内的执行控制部件1在图3的结构的基础上,还具有提供多个线程各自的线程ID和优先顺序的线程ID·优先顺序提供部件14。
图5是展示执行线程决定部件12和线程ID·优先顺序提供部件14的详细结构的框图。如图示所示,线程ID·优先顺序提供部件14存储各线程的线程ID和优先顺序的对应关系。执行线程决定部件12具有登记了从线程启动部件11通知的能够执行的线程的一览的能够执行线程ID列表15、决定应该启动的线程的优先级编码器16。
优先级编码器16从线程ID·优先顺序提供部件14取得登记在线程ID列表中的线程的优先顺序,决定例如优先顺序最高的线程作为启动线程。
对于线程ID·优先顺序提供部件14提供的优先顺序的设置方法并没有特别的限制,但例如可以在生成新的线程时,设置该线程的优先顺序,也可以在事后变更优先顺序。
图6是展示图5的执行线程决定部件12的处理步骤的流程图。首先,参照登记在能够执行线程ID列表15上的线程的线程ID(步骤S1),从线程ID·优先顺序提供部件14取得与该线程ID对应的优先顺序(步骤S2)。
接着,判断在步骤S2取得的优先顺序是否高于线程启动候补的优先顺序(步骤S3),如果高于则设置具有在步骤S1中参照了的线程ID的线程为启动候补(步骤S4)。
在步骤S4的处理结束了的情况下,或在步骤S3中判断出不高于的情况下,判断在能够执行线程ID列表15中是否还剩下还没有比较优先顺序的线程(步骤S5),在剩下的情况下,循环进行步骤S1以后的处理,在没有剩下的情况下,结束处理。
这样,在实施例2中,由于预先决定线程的优先顺序,所以在将多个线程作为启动候补的情况下,能够优先执行优先顺序高的线程,使处理高效率化。另外,能够迅速地选择应该启动的线程。
(实施例3)实施例3能够动态地变更优先顺序。
图7是展示本发明相关的处理器的实施例3的概要结构的框图。图7的处理器在图4的结构的基础上,具备动态地变更线程的优先顺序的优先顺序变更部件30。
优先顺序变更部件30具有计测每个线程的执行时刻的时刻计测部件17、登记了各线程的线程ID和过去的启动时刻的对应关系的启动时刻表18、计算各线程的启动间隔的平均值的平均时间间隔计算部件19、根据在平均时间间隔计算部件19的计算结果决定各线程的优先顺序的优先顺序决定部件20。
平均时间间隔计算部件19的计算结果越小,则越表示出是更频繁启动的线程。因此,优先顺序决定部件20例如对平均时间间隔计算部件19的计算结果越小的线程则越提高优先顺序。
更具体地说,平均时间间隔计算部件19计算向各FIFO10的数据输入间隔,优先顺序决定部件20决定优先顺序,使与该间隔短的FIFO10对应的线程的优先顺序变高。或者,也可以由平均时间间隔计算部件19计算从处理器核心2通知的各线程的执行间隔,优先顺序决定部件20决定优先顺序,使该间隔短的线程的优先顺序变高。或者,也可以由平均时间间隔计算部件19监视向各线程提供数据的各FIFO10的空区域,优先顺序决定部件20决定优先顺序,使与空区域少的FIFO10对应的线程的优先顺序变高。或者,也可以由平均时间间隔计算部件19计算从各线程向各FIFO10的数据输出间隔,优先顺序决定部件20决定优先顺序,使与该间隔短的FIFO10对应的线程的优先顺序变高。
这样,在实施例3中,由于能够动态地变更各线程的优先顺序,所以能够参考过去的执行履历,进行线程的时序安排。
(实施例4)在实施例4中,如果比执行中的线程优先顺序高的线程的启动准备完成,则中断执行中的线程,启动优先顺序高的线程。
实施例4的模块结构与图4和图7相同。图8是说明本发明相关的处理的实施例4的动作的时序图。图8展示了存在3个线程A、B、C,线程A的优先顺序最高,其次线程B的优先顺序高,线程C的优先顺序最低的例子。
首先,在时刻t0启动了线程C。然后,在时刻t1线程B的启动准备完成。由此,执行线程决定部件12中断线程C的执行,代之而开始线程B的启动。
然后,在时刻t2线程A的启动准备完成。由此,执行线程决定部件12中断线程B的执行,代之而开始线程A的启动。
然后,在时刻t3线程A的执行结束,则接着再开始优先顺序高的线程B的执行,在时刻t4线程B的执行结束,则接着再开始优先顺序最低的线程C的执行。
这样,在实施例4中,如果优先顺序比执行中的线程高的线程的启动准备完成,则中断执行中的线程的处理,开始执行优先顺序高的线程,因而能够始终优先处理重要的线程,能够提高处理器整体的处理能力。
(实施例5)以下说明的实施例5~实施例11与迅速切换执行中的线程的方法有关。
图9是展示本发明相关的处理器的实施例5的概要结构的框图。图9处理器与图4一样具备线程启动部件11、执行线程决定部件12和线程ID·优先顺序提供部件14,其他还具备由多个计数器组构成的寄存器组群21、从寄存器组群21中选择任意一个寄存器组的寄存器组选择部件22、使用选择的寄存器组进行运算处理的运算部件23。这些寄存器组、寄存器组选择部件22和运算部件23构成了处理器核心2。
在寄存器组选择部件22的内部设置了从寄存器组群21中选择一个寄存器组的解码器22a。该解码器22a输出与来自执行线程决定部件12的线程ID对应的寄存器组的选择信号。
各寄存器组由包含所有各个线程的固有信息的一个以上的寄存器构成。构成寄存器组的各寄存器的种类依存于处理器的特性,例如是程序计数器(PC)、堆栈指针(SP)、或通用寄存器(R0、R1…)等。在本说明书中,设1个寄存器组内的寄存器的总数为r(r是1以上的整数)。
寄存器组的总数是能够分时执行的线程的个数n以上的m个(m是整数)。各寄存器组通过固有的识别编号(寄存器组ID)被识别。
执行中的线程使用一个寄存器组。在用于每个线程的寄存器的种类不同的情况下,可以针对各个线程设置专用的寄存器组。可以在处理器的设计时,决定构成寄存器组的寄存器的种类,也可以根据程序指令事后变更构成寄存器组的寄存器的种类。
在用于每个线程的寄存器的种类不同的情况下,可以根据需要,设置如图10所示的登记了线程ID和寄存器组ID的对应关系的寄存器组ID线程ID对应部件24,参照该表,决定各线程对应的寄存器组。
更详细地说,寄存器组ID线程ID对应部件24由图11那样的表构成。图11的表可以在处理器设计时作成然后不能变更,也可以在处理器启动后根据某种指令能够变更表的内容。
如果图9和图10的执行线程决定部件12切换线程,则将切换后的线程的线程ID从执行线程决定部件12通知到寄存器组选择部件22。寄存器组选择部件22使用图11的表等,取得与切换后的线程对应的寄存器组ID,并将与该ID对应的寄存器组的值提供给运算部件23。运算部件23将在寄存器组选择部件22选择的寄存器组的值设置到各寄存器进行运算处理,并将该运算处理结果存储到在寄存器组选择部件22选择了的寄存器组中。
这样,在实施例5中,如果进行线程的切换,则也切换寄存器组,因而能够缩短线程切换时的处理准备时间,能够实现线程的高速切换。另外,在线程的处理暂时中断后再开始的情况下,由于读入再开始前的寄存器组的值就可以,所以能够迅速再开始暂时中断了的线程的处理。
(实施例6)实施例6将寄存器组群21中的至少一部分寄存器组保存到外部。
图12是展示本发明相关的处理器的实施例6的概要结构的框图。图12的处理器在图10的结构的基础上,还具有选中判断部件31、外部寄存器组存储部件32、外部存储控制部件33、寄存器组转送部件34。
本实施例的寄存器组群21比分时执行的线程的个数n多或少都可以。
选中判断部件31判断应该执行的线程的寄存器组是否登记到寄存器组ID线程ID对应部件24中。寄存器组转送部件34将寄存器组群21中的至少一部分寄存器组的内容转送到外部寄存器组存储部件32,同时将从外部寄存器组存储部件32读出的寄存器组的内容转送到寄存器组群21。外部寄存器组存储部件32存储寄存器组群21中的至少一部分的寄存器组的内容。
图13是展示外部寄存器组存储部件32的数据结构的图。外部寄存器组存储部件32能够存储包含在寄存器组群21中的任意寄存器组的内容,另外还能够将存储的寄存器组的内容转送到寄存器组群21。存储在外部寄存器组存储部件32中的各寄存器组通过线程ID被管理,在调用暂时存储的寄存器组的内容时也指定线程ID。
这样,外部寄存器组存储部件32能够暂时保存寄存器组群21中的至少一部分寄存器组的内容,并根据需要转送到寄存器组群21。
外部寄存器组存储部件32可以由专用的硬件构成,也可以利用主存储器等预先设置的存储器的一部分区域。
图14是展示选中判断部件31的处理步骤的流程图。首先,判断与表示应该执行的线程的线程ID对应的寄存器组ID是否登记在寄存器组ID线程ID对应部件24中(步骤S1)。如果登记了,则判断为选中,取得与该线程ID对应的寄存器组ID(步骤S12)。在这种情况下,以与图5一样的步骤进行线程的切换。
另一方面,如果没有登记,则判断为未选中(步骤S13),从外部寄存器组存储部件32调用对应的寄存器组,进行寄存器组群21的一部分的替换处理。
更具体地说,首先,经由寄存器组转送部件34将寄存器组群21中的至少一部分寄存器组的内容转送到外部寄存器组存储部件32。同时,从外部寄存器组存储部件32读出应该执行的线程所利用的寄存器组的内容,并经由寄存器组转送部件34转送到寄存器组群21。
这样,在实施例6中,将寄存器组群21中的至少一部分寄存器组的内容保存到外部寄存器组存储部件32,根据需要从外部寄存器组存储部件32将寄存器组的内容恢复到寄存器组群21中,因而能够处理寄存器组群21中的寄存器组的总数以上的线程。所以,能够减少寄存器组群21中的寄存器组的个数,能够使处理器的尺寸小型化。
(实施例7)实施例7在通过选中判断部件31没有选中时,预先指定应该保存的寄存器组。
图15是展示本发明相关的处理器的实施例7的概要结构的框图。图15的处理器在图12的结构的基础上,还具备保存寄存器组决定部件35。
保存寄存器组决定部件35根据从线程ID·优先顺序提供部件14提供的优先顺序,从寄存器组群21中决定应该保存到外部寄存器组存储部件32的寄存器组。寄存器组转送部件34将由保存寄存器组决定部件35决定了的寄存器组的内容转送到外部寄存器组存储部件32,并将从外部寄存器组存储部件32读出的寄存器组的内容转送到寄存器组群21。
图16是展示保存寄存器组决定部件35的处理步骤的流程图。首先,判断在寄存器组群21中是否存在利用的寄存器组,并且与该寄存器组对应的线程是否不能够执行(步骤S21)。在判断是Yes的情况下,在对应的线程中选择优先顺序最低的线程(步骤S22)。
另一方面,在步骤S21的判断是No的情况下,选择与寄存器组群21中的各寄存器组对应的线程中的优先顺序最低的线程(步骤S23)。
如果步骤S22或S23的处理结束了,则取得选择的线程所利用的寄存器组的ID(寄存器组ID)(步骤S24),并向寄存器组转送部件34指定取得的ID(步骤S25)。
这样,在实施例7中,能够明确地指定应该保存到外部寄存器组存储部件32的寄存器组,因而能够替换使用频率低的寄存器组,能够防止由于寄存器的保存造成的处理效率的降低。
(实施例8)
上述实施例6和实施例7由于进行以下处理在选中判断部件31判断应该执行的线程所利用的寄存器组是否存在于寄存器组群21中,所以有可能不能迅速地切换线程。所以,以下说明的实施例8在选中判断部件31进行处理期间,进行不受选中判断部件31的判断结果的影响的线程的处理。
图17是展示本发明相关的处理器的实施例8的概要结构的框图。图17的执行线程决定部件12进行与图15的执行线程决定部件12不同的处理。即,图17的执行线程决定部件12向选中判断部件31要求发送判断结果,从选中判断部件31接收判断结果。
图17的寄存器组ID线程ID对应部件24如图18所示,具有使各个线程ID和寄存器组ID对应的标志。该标志要执行某线程,但在选中判断部件31未选中,进行从外部寄存器组存储部件32转送该线程所利用的寄存器的内容的处理过程中被设置。
执行线程决定部件12在切换执行的线程时,发出未选中时转送选中判断要求或选中判断要求的任意一个。未选中时转送选中判断要求是向选中判断部件31通知线程ID,在未选中的情况下,向寄存器组选择部件22发出指示,使得从外部寄存器转送装置将该线程所利用的寄存器组转送到寄存器组群21。
图19的流程图展示了接收到未选中时转送选中判断要求的情况下的选中判断部件31的处理步骤。首先,判断应该执行的线程的线程ID是否登记在寄存器组ID线程ID对应部件24中(步骤S31)。如果登记了,则取得与该线程ID对应的寄存器组ID(步骤S32),如果没有登记,则判断为未选中(步骤S33),向寄存器组转送部件34指示转送该线程所利用的寄存器组(步骤S34)。
另一方面,选中判断要求是向选中判断部件31通知线程ID,并将标志是有效的寄存器组除外进行判断。在未选中的情况下也不进行寄存器组的转送。
图20的流程图展示了接收到选中判断要求的情况下的选中判断部件31的处理步骤。首先,将设置了标志的线程ID除外,判断应该执行的线程的线程ID是否登记在寄存器组ID线程ID对应部件24中(步骤S41)。如果登记了,则取得与该线程ID对应的寄存器组ID(步骤S42),如果没有登记,则判断为未选中(步骤S43)。
在寄存器组ID线程ID对应部件24中不存在设置了的标志的情况下,执行线程决定部件12在切换执行的线程时,通过切换后的线程ID发出未选中时转送选中判断要求。在选中了的情况下,执行线程决定部件12从寄存器组ID线程ID对应部件24取得与选中的新的线程ID对应的寄存器组ID,并将该寄存器组ID通知寄存器组选择部件22,开始执行新的线程。在未选中的情况下,选中判断部件31向寄存器组转送部件34指示转送寄存器组,寄存器组ID线程ID对应部件24设置与进行转送的寄存器组对应的标志。
如果寄存器组的转送结束了,则寄存器组转送部件34向寄存器组ID线程ID对应部件24通知转送结束。依照该通知,寄存器组ID线程ID对应部件24使寄存器组的标志无效。
执行线程决定部件12从寄存器组ID线程ID对应部件24取得与应该执行的线程对应的寄存器组ID,向寄存器组选择部件22通知取得的寄存器组ID,开始该线程的执行。
在寄存器组ID线程ID对应部件24中存在被设置了的标志的情况下,执行线程决定部件12在切换执行的线程时,用切换后的线程ID发出选中判断要求。在选中了的情况下,执行线程决定部件12从寄存器组ID线程ID对应部件24取得与选中了的新线程ID对应的寄存器组ID,并将该寄存器组ID通知寄存器组选择部件22,开始执行新的线程。另一方面,在未选中的情况下,不进行线程的切换。
图21是说明在寄存器组ID线程ID对应部件24中存在设置了的标志的情况下的任务的执行形式的图。在该例子中,在执行线程ID5的线程过程中,在优先顺序比该线程高的线程ID1的线程变得能够执行时,执行线程决定部件12向选中判断部件31进行线程ID1的未选中时转送选中判断要求。
在该例子中,接收到该要求的选中判断部件31进行未选中判断,由此,寄存器组转送部件34在寄存器组群21中开始转送线程ID1所利用的寄存器。该转送花费到时刻t3为止的时间。
如果在时刻t1~t3间的时刻t2线程ID5的执行结束,则执行线程决定部件发出能够执行的线程中的优先顺序最高的线程(在图21的例子中是线程ID7)的选中判断要求。在选中了的情况下,执行线程ID7。
然后,如果到了时刻t3,则从寄存器组转送部件34通知转送结束,由此执行线程决定部件开始线程ID1的执行。
这样,在实施例8中,在某线程所利用的寄存器组的转送过程中不影响该线程的执行地执行其他线程,因而不等到寄存器组的转送结束就能够进行线程的处理,能够提高线程的处理效率。
(实施例9)实施例9在构成寄存器组的各寄存器中设置表示寄存器的内容是否被更新了的标志。
实施例9具有与图12一样的模块结构,但寄存器组群21的寄存器组的数据结构与图12不同。图22是展示实施例9的寄存器组的数据结构的图。如该图所示,与构成寄存器组的各寄存器对应地设置变更标志。在改写对应的寄存器的内容时设置该变更标志。这种情况下的处理步骤用图23那样的流程图表示。
在图23中,首先,设置与改写的寄存器对应的变更标志(步骤S51),然后改写寄存器(步骤S52)。
图22的变更标志在读入存储在外部寄存器组存储部件32中的寄存器组时被清除。图24的流程图展示了有从外部寄存器组存储部件32向寄存器组群21的转送要求的情况下的处理步骤。
在图24中,首先,清除所有的转送目的寄存器组内的变更标志(步骤S61),然后转送寄存器组(步骤S62)。
图25是展示有从寄存器组群21向外部寄存器组存储部件32的寄存器组内容的转送要求的情况下的寄存器组转送部件34的处理步骤的流程图。首先,着眼于转送的寄存器组内的一个寄存器(步骤S71),判断着眼的寄存器组的变更标志是否被设置了(步骤S72)。
在被设置了的情况下,将转送的寄存器转送到外部寄存器组存储部件32(步骤S73)。在没有设置的情况下或步骤S73的处理结束了的情况下,对所有的寄存器判断是否进行了处理(步骤S74),如果没有进行处理则返回步骤S71,在进行了处理的情况下结束。
这样,在实施例9中,在包含在寄存器组群21中的寄存器中,只将有变更的转送到外部寄存器组存储部件32,所以能够减少应该转送的数据量,并能够减少转送时间。
(实施例10)实施例10在外部寄存器组存储部件32中,具有表示各寄存器组的各寄存器是否被改写了的标志。
图26是展示外部寄存器组存储部件32的数据结构的图。如该图所示,与各寄存器组的各寄存器对应地设置有效标志。在对应的寄存器被改写了的情况下设置该有效标志。
图27是展示有效标志的初始化处理的的流程图,在启动线程时外部存储控制部件33进行处理。外部存储控制部件33清除与启动的线程对应的寄存器组内的所有有效标志(步骤S81)。
图28是展示有效标志的设置处理的流程图,在有从寄存器组转送部件34向外部寄存器组存储部件32的寄存器组转送要求时,外部存储控制部件33进行该处理。外部存储控制部件33设置与外部寄存器组存储部件32转送的寄存器对应的有效标志(步骤S91)。然后,从寄存器组群21向外部寄存器组存储部件32转送该寄存器(步骤S92)。
图29是展示有从外部寄存器组存储部件32向寄存器组群21的转送要求的情况下的外部存储控制部件33的处理步骤的流程图。首先,读入转送的寄存器组内的有效标志(步骤S101)。接着,着眼于转送的寄存器组内的一个寄存器(步骤S102)。
判断与该寄存器对应的有效标志是否被设置了(步骤S103),如果被设置了,则将寄存器转送到外部寄存器组存储部件32(步骤S104)。接着,判断是否对所有的寄存器进行了处理(步骤S105),如果还有没有进行处理的寄存器,则循环进行步骤S101以后的处理。
这样,在实施例10中,在外部寄存器组存储部件32中,设置表示寄存器是否被改写了的标志,因而可以只在寄存器的内容被改写了的情况下从外部寄存器组存储部件32向寄存器组群21转送寄存器的内容,能够减少转送次数,同时能够缩短转送时间。
(实施例11)实施例11将外部寄存器组存储部件32的各线程的寄存器组设置为列表结构。
图30是展示实施例11的外部寄存器组存储部件32的数据结构的图。外部寄存器组存储部件32成为列表结构,将存储有变更的寄存器的值的寄存器值存储区域和存储在寄存器值存储区域中的寄存器的识别编号(寄存器ID)作为一组进行存储。即,外部寄存器组存储部件32不存储内容没有变更的寄存器的值。
图31是展示有从外部寄存器组存储部件32向寄存器组群21的转送要求的情况下的外部存储控制部件33的处理步骤的流程图。首先,将指针移动到转送寄存器组的列表的先头(步骤S111)。接着,从外部寄存器组存储部件32的列表中读入寄存器ID和寄存器的值(步骤S112)。接着,将寄存器的值写入与寄存器ID对应的寄存器组群21的寄存器中(步骤S113)。接着,判断是否是列表的最后(步骤S114)。如果是列表的最后,则结束处理,如果不是列表的最后,则移动到列表的下一个项目,并循环进行步骤S111以后的处理。
图32是展示有从寄存器组转送部件34向外部寄存器组存储部件32的寄存器转送要求的情况下的外部存储控制部件33的处理步骤的流程图。首先,判断转送的寄存器ID是否在外部寄存器组存储部件32的对应的列表中(步骤S121)。如果不在列表中,则向列表追加转送的寄存器ID的项目(步骤S122)。
在步骤S121中判断出在列表中的情况下,或在步骤S122的处理结束了的情况下,将寄存器的值写入与列表的转送寄存器ID对应的寄存器值存储区域中(步骤S123)。
图33是展示线程结束时的外部存储控制部件33的处理步骤的流程图。废弃外部寄存器组存储部件32中的与结束了的线程对应的列表的内容(步骤S131)。
这样,在实施例11中,将外部寄存器组存储部件32设置为列表结构,只存储有变更的寄存器的值,因而能够减少外部寄存器组存储部件32的存储器容量,同时能够减少在与寄存器组群21之间的转送数据量。
(实施例12)实施例12对应于存储在输入侧FIFO和输出侧FIFO的数据量,决定线程的优先度。
图34是展示实施例12中的处理器的模块结构的一个例子的图。图34的处理器具备多个FIFO101、选择部件102、执行控制部件103、缓存104、切换部件105、多个寄存器组106、存储器总线107、存储部件108、运算处理部件109。缓存104、切换部件105、寄存器组106和运算处理部件109相当于处理器核心2。
FIFO101是能够从先存储的内容开始读出的存储装置。FIFO101设置有多个,以下,向各FIFO付与如FIFO101-1、…FIFO101-n那样的区别。
各FIFO101的存储容量并不必须一定是相同的,但为了简化说明而设置为相同的容量。
通过执行控制部件103进行的各部件的控制和在该控制下,由运算处理部件109执行预先付与的规定的程序代码,来实现线程的处理。
选择部件102从多个FIFO101中选择执行控制部件103指定的FIFO。选择的FIFO101通过运算处理部件109被读写。
执行控制部件103具有控制本实施例的处理器进行的所有处理的功能。在此,还包含保存表示优先执行哪个线程的优先度的表。执行控制部件103具有根据FIFO101等的信息设置该表,并依照表的内容向各部件指示处理哪个处理数据、执行哪个线程的功能。
为了在运算处理部件109执行与线程对应的程序代码时,避免依次访问读写速度慢的存储装置,而设置缓存104。一般,与运算处理部件109的处理速度相比,主存储器和磁盘装置等大容量存储装置的访问速度慢。缓存104使用没有大容量存储装置那样的存储容量的、访问速度快的存储装置。对于频繁访问的数据和程序代码,通过暂时存储到缓存104中,在读写时运算处理部件109能够不等待地,就尽量实现运算处理部件109的处理量。
切换部件105从多个寄存器组106中选择能够访问的处理所必需的一个以上的寄存器组。运算处理部件109经由该切换部件105访问存储了处理所必需的数据的寄存器组。
寄存器组106具有执行控制部件103执行程序代码所必需的各种寄存器(暂时存储装置)。在寄存器组106中,包含计算用寄存器、选址用寄存器、堆栈用寄存器。在本实施例中,设置了从1到m(m为任意)的多个该寄存器组106。各个寄存器组106并不必须是相同的结构,但为了使各个线程使用哪个寄存器组都能够进行处理,而理想的是具有相同的结构。
为了在多个寄存器组106和存储部件108之间进行数据的交换,而设置存储器总线107。缓存104、多个寄存器组106和存储部件108经由存储器总线107进行数据的传送。执行控制部件103进行数据传送控制。
存储部件108存储本实施例的处理器为了进行处理而执行的程序代码、成为处理对象的处理数据。根据情况,作为存储在缓存104和寄存器组106中的数据的暂时保存地点被使用。
运算处理部件109具有执行存储部件108或缓存104所存储的程序代码的功能。在执行程序代码时,根据执行控制部件103的指示,决定使用哪个FIFO101、哪个寄存器组106、处理哪个线程。
图35是说明本实施例中的处理器的线程处理的概要的图。本实施例的处理器由于是数据流程型,所以处理数据不论是什么样的输入形式,基本都经过一个路径(流程)被输出。运算处理部件109依照预先存储在存储部件108中的程序代码针对输入的处理数据,逐次对输入的处理数据执行线程201-1~201-x的处理。在有下一阶段的处理的情况下,输出的输出结果成为下一阶段的输入数据。
如果输入了作为输入数据的处理数据,则由执行控制部件103所指示了的多个FIFO101中的一个FIFO101-A存储它。FIFO101-A对应于来自执行控制部件103等的结果,或自发地将FIFO101-A内的FIFO存储量作为状态报告202-A通知执行控制部件103。
如果根据执行控制部件103的指示,运算处理部件109开始执行线程201-1,则将FIFO101-A内的数据作为输入数据进行处理。这时,FIFO101-A内的数据从先存储的数据开始依次被读出。根据执行控制部件103的指示,将执行该线程的处理结果存储在FIFO101-B中。与FIFO101-B或FIFO101-A一样,向执行控制部件103通知包含FIFO存储量的状态报告202-B。
如果从线程201-2到线程201-x(x为任意)的上述处理都结束了,则作为输出输出处理结果。
执行控制部件103根据执行指示203指示运算处理部件109将哪个线程作为执行状态。执行控制部件103根据FIFO101-A~FIFO101-n通知的状态报告202-A~202-n的信息,设置自己所具备的执行优先度表中的优先度,并根据该优先度决定执行指示203。在决定执行指示203时,可以只使用多个状态报告202中的一部分并依照决定了的优先度,也可以考虑所有的状态报告202并根据决定了的优先度,决定最优先的线程201。理想的是根据所有的状态报告202决定各个线程201的执行顺序,来谋求处理整体的高效率。
以下,说明执行控制部件103决定上述线程的执行顺序的方法。
图36是展示本实施例中的处理器的执行控制部件103对某线程与输入侧FIFO存储量对应地决定线程的启动优先度的方法的一个例子的图。由于图36所示的纵轴所对应的FIFO存储量是输入侧FIFO,所以例如成为图35所示的线程201-1所对应的FIFO101-A、线程201-2所对应的FIFO101-B。
在某线程的输入侧FIFO存储了大量等待处理的数据的情况下,则表示该线程的处理缓慢。所以有必要提高该线程的优先度,加快处理等待处理的数据。因此,如图36所示,依照FIFO存储量的增加进行设置,使得容易执行(提高优先度)。如交点302所示,FIFO存储量越高,则在表示执行控制部件103所保存的各线程的优先度的表中越设置为高优先度。
在图36所示的例子中,用正比直线301展示了FIFO存储量和线程执行优先度的关系,但并不必须是直线。例如,也可以是与FIFO存储量接近上限相关联地,使优先度上升量加大那样的比例曲线303。在该情况下,能够有效地防止FIFO溢出。另外,也可以与曲线或直线无关地,阶段性地或阶梯状地提高优先度,使得容易进行处理器的设计和安装。作为一个例子,可以进行以下操作设置FIFO存储量的阈值,到超过该阈值为止不执行线程,或到阈值为止持续执行。
图37是展示本实施例中的处理器对某线程与输出侧FIFO存储量对应地决定线程的优先度的方法的一个例子的图。由于图37所示的纵轴所对应的FIFO存储量是输出侧FIFO,所以例如成为图35所示的线程201-1所对应的FIFO101-B、线程201-2所对应的FIFO101-C。
在某线程的输出侧FIFO存储了大量等待处理的数据的情况下,则表示其后的线程的处理缓慢。如果保持不变地执行线程,则输出侧的FIFO有可能溢出。所以有必要降低该线程的优先度,抑制处理使得输出侧的FIFO不溢出。因此,如图37所示,依照FIFO存储量的增加进行设置,使得难以执行(降低优先度)。如交点402所示,FIFO存储量越高,则在表示执行控制部件103所保存的各线程的优先度的表中越设置为低优先度。
在图37所示的例子中,用正比直线401展示了FIFO存储量和线程执行优先度的关系,但并不必须是直线。例如,也可以是与输出侧FIFO存储量接近上限相关联地,使优先度下降量加大那样的比例曲线403。在该情况下,能够有效地防止输出侧FIFO溢出。另外,也可以与曲线或直线无关地,阶段性地或阶梯状地降低优先度,使得容易进行处理器的设计和安装。作为一个例子,可以进行以下操作设置FIFO存储量的阈值,到不达到该阈值为止不执行线程,或到超过阈值为止持续执行。
如上述那样,执行控制部件103依照综合了从输入侧FIFO得到的优先度和从输出侧FIFO得到的优先度的双方的优先度或基于输入侧FIFO的优先度,决定线程的优先度。
这时,可以考虑表示从输入侧FIFO存储量得到的优先度和从输出侧FIFO存储量得到的优先度相反的优先度的情况。例如,考虑输出侧和输出侧双方都接近了存储量的上限的情况。在该情况下,将在输出侧的FIFO存储量的空区域中有能够尽量存储对存储在输入侧FIFO中的处理数据进行了处理后的输出结果的区域作为条件,使基于输入侧FIFO存储量的优先度优先。除了该情况,为了防止输出侧FIFO溢出,而使基于输出FIFO存储量的优先度优先、或暂时禁止该线程的执行。
图38是展示本实施例中的处理器决定下一个执行的线程的一个例子的流程图。
首先,取得所有FIFO的存储量(步骤S141)。对于取得方法,可以向各FIFO查询,也可以由FIFO自主地报告。对于取得方法并没有限制。
接着,对各FIFO检查是否是超过了上限的存储量那样的FIFO(步骤S142)。在检查的结果是有超过的FIFO的情况下,对与该FIFO关联的线程进行紧急处理(步骤S143)。
紧急处理例如有以下这样的处理。其一是通过分配来最优先地处理输入侧具有该FIFO的线程。分配是指强制地变更通常的处理顺序的方法。通过使其他线程优先处理,能够减少该FIFO的存储量。另一个是暂时禁止输出侧具有该FIFO的线程的执行。通过禁止该线程的执行,能够停止向该FIFO追加数据,使存储量留出余地。
应该根据处理状况或处理数据的特性而灵活地决定紧急处理的内容,并不仅限于上述例子。
在没有要过载的FIFO时,接着判断是否求出了所有线程的优先度(步骤S144)。
在没有求出所有线程的优先度的情况下,选择处理中或待机中的一个线程(步骤S145)。然后根据选择了的线程所使用的输入侧和输出侧FIFO的存储量,用上述方法决定该线程的优先度(步骤S146)。在决定后,再次判断是否求出了所有线程的优先度(步骤S144)。
如果判断出对所有线程求出了优先度,则从求出了优先度的线程中选择具有最高优先度的线程(步骤S147)。
如果如上述那样进行处理,则能够从处理中或待机中的线程中选择下一个应该执行的线程。
如果如上述那样地构成,则能够高效率地将数据流程型处理器的处理能力分配给必要的处理,同时能够对应于输入侧和输出侧的FIFO存储量,选择应该执行的线程。
另外,还可以是安装了本实施例的处理器的、进行数据流程型处理的计算机。
这样,在实施例12中,输入侧FIFO的数据存储量越多则越提高使用该输入侧FIFO的数据的线程的优先度,因而能够加快处理输入侧FIFO的等待处理数据。另外,输出侧FIFO的数据存储量越多则越降低该输出侧FIFO的前阶段的线程的优先度,因而能够避免输出侧FIFO溢出。
(实施例13)实施例13在输入侧FIFO和输出侧FIFO的存储数据量增加和减少时,切换线程的优先度。
实施例13的处理器的模块结构和线程处理与图34和图35一样。
图39是展示本实施例的处理器对某线程与输入侧FIFO存储量对应地决定线程的优先度的方法的一个例子的图。图39所示的纵轴所对应的FIFO存储量是输入侧FIFO,因而成为例如图35所示的与线程201-1对应的FIFO101-A和与线程201-2对应的FIFO101-B。
在某线程的输入侧FIFO中存储了许多等待处理的数据的情况下,则表示该线程的处理缓慢。所以有必要提高该线程的优先度,加快处理等待处理的数据。因此,如图39所示,依照FIFO存储量的增加进行设置,使得容易执行(提高优先度)。
与实施例12不同的是,假设FIFO存储量增加和减少时为不同的线程执行优先度。即使是相同的FIFO存储量,例如与FIFO存储量增加时的交点601对应的优先度也比与FIFO存储量减少时的交点602对应的优先度低。
在研究输入侧FIFO的存储量和线程处理的关系时,如果执行线程则输入侧FIFO的存储量减少,相反如果不执行,则有增加的倾向。如果考虑这时具有交点601的FIFO存储量的减少时,则即使输入侧FIFO的存储量减少,该线程的优先度降低也很缓慢。相反,如果考虑具有交点601的FIFO存储量的增加时,则即使输入侧FIFO的存储量增加该线程的优先度上升也很缓慢。即即使输入侧FIFO的存储量变化,一旦开始了处理的线程也会保持原来的高优先度,因而很有可能连续被执行。相反,优先度变低而难以被执行的线程就意味着如果输入侧FIFO的存储量不更高,则难以被执行。
图34所示的缓存104如上述所示被设置为能够高速地访问线程处理所必需的处理数据的存储容量少的存储器。由于存储容量少,所以如果其他的线程被执行,则暂时被读入的某线程的处理数据就很有可能被覆盖而删除。必须再次从访问速度低的存储装置将删除的处理数据读入到缓存104上。如果根据输入侧FIFO的存储量的变动而频繁替换被执行的线程,则必须从其他的存储装置向缓存104读入的数据的量和次数必然会增加。
图34所示的寄存器组106也一样,在执行中和待机中的线程比寄存器组106的个数多的情况下,就有必要暂时保存到其他存储装置中。这是因为为了在某时刻执行不能分配到寄存器组106的线程,而有必要为了该线程而开放被其他线程占用了的寄存器组106。由于必须在存储装置之间移动寄存器组106的内容,所以频繁的线程切换会造成与缓存104一样的过载。
在本实施例的处理器中,实现了某线程容易被频繁执行的状态,而减少了向缓存104的数据读入的过载。所以,能够将处理器所具有的处理能力分配给本来的数据处理。
在图39所示的例子中,用椭圆表示了FIFO存储量和线程优先度的关系,但并不必须是椭圆。例如也可以为了处理器设计上的安装简单,而阶段性地或阶梯状地提高优先度。
图40展示了本实施例的处理器对某线程与输出侧FIFO存储量对应地决定线程的优先度的方法的一个例子。图40所示的纵轴所对应的FIFO存储量是输出侧FIFO,因而成为例如图35所示的与线程201-1对应的FIFO101-B和与线程201-2对应的FIFO101-C。
在某线程的输出侧FIFO中存储了许多等待处理的数据的情况下,则表示其后的线程的处理缓慢。如果保持原样地执行线程,则输出侧的FIFO有可能溢出。所以,有必要降低该线程的优先度,抑制处理使输出侧的FIFO不溢出。因此,如图40所示,依照输出侧的FIFO存储量的增加进行设置,使得难以被执行(降低优先度)。
与实施例12不同的是,假设FIFO存储量增加和减少时为不同的线程执行优先度。即使是相同的FIFO存储量,例如与FIFO的存储量增加时的交点702对应的优先度也比与FIFO的存储量减少时的交点701对应的优先度高。
在研究输出侧FIFO的存储量和线程处理的关系时,如果执行线程则输出侧FIFO的存储量增加,相反如果不执行,则有减少的倾向。如果考虑这时具有交点702的FIFO存储量的增加时,则即使输出侧FIFO的存储量增加,该线程的优先度降低也很缓慢。相反,如果考虑具有交点701的FIFO存储量的减少时,则即使输出侧FIFO的存储量减少,该线程的优先度的上升也很缓慢。即即使输出侧FIFO的存储量变化,一旦开始了处理的线程也会保持原来的高优先度,因而很有可能连续被执行。相反,优先度变低而难以被执行的线程就意味着如果输出侧FIFO的存储量不更低,则难以被执行。
因此,与具有图39的特性的输入侧FIFO一样,通过设置具有图40的特性的输出侧FIFO,能够实现线程容易被频繁执行的状态,能够减少向缓存104的数据读入的过载。
在图40所示的例子中,用椭圆表示了FIFO存储量和线程执行优先度的关系,但并不必须是椭圆。例如也可以为了处理器设计上的安装简单,而阶段性地或阶梯状地提高优先度。
如上所述,执行控制部件103依照综合了从输入侧FIFO得到的优先度和从输出侧FIFO得到的优先度双方的优先度、或基于输入侧FIFO的优先度,决定线程的优先度。
这时,可以考虑表现出从输入侧FIFO存储量得到的优先度和从输出侧FIFO存储量得到的优先度相反的优先度的情况。例如,是处理数据没有存储到输入侧FIFO和输出侧FIFO双方的时候。在这种情况下,由于没有必要优先执行线程,所以使基于输入侧FIFO的存储量的优先度优先。
另一方面,也可以考虑输入侧和输出侧双方都接近于存储量上限的情况。在这种情况下,将在输出侧的FIFO存储量的空区域中有能够尽量存储对存储在输入侧FIFO的处理数据进行了处理后的输出结果的区域作为条件,使基于输入侧FIFO存储量的优先度优先。除了该情况,为了防止输出侧FIFO溢出,而使基于输出侧FIFO存储量的优先度优先、或暂时禁止该线程的执行。
实施例12的图38同样是展示本实施例的处理器决定下一个执行的线程的流程的一个例子的图。
这样,在实施例13中,根据输入侧FIFO和输出侧FIFO的存储数据量是具有增加倾向还是具有减少倾向,来切换线程的优先度,因而能够减少向缓存104的数据读入的过载。
为了进一步减少向缓存104的数据读入的过载,可以使用以下这样的方法。首先,求出所有线程的优先度。接着,调查优先度最高的线程的输入侧FIFO的存储数据量和输出侧FIFO的存储数据量和它们的变化倾向。
根据它,判断是否是该线程的输入侧FIFO的存储数据量具有增加倾向并且输出侧FIFO的存储数据量具有减少倾向。在符合该条件的情况下,进而调查是否满足以下条件输出侧FIFO的存储量低于第1阈值,或者输入侧FIFO的存储量高于第2阈值中的任意一个条件。然后,在满足任意一个条件的情况下,抑制线程的启动。
另外,本发明并不只限于上述实施例的情况,在实施阶段可以在不脱离其宗旨的范围内变形并具体化构成要素。本技术领域的技术者可以通过研究在此揭示的发明的详细和研究在此揭示的发明的实施例,来了解本发明的其他实施例。说明书中记载的事项和实施例只不过是一个例子,本发明的真正范围及其精神由权利要求揭示。进而,也可以适当地组合不同实施例中的构成要素。
权利要求
1.一种处理器,是进行包含多个执行单位的数据处理的处理器,其特征在于包括针对每个上述执行单位,存储用于上述各执行单位的处理的数据、上述各执行单位的处理结果的存储部件;从上述存储部件取得上述各执行单位的数据进行处理,并将处理结果输出到上述存储部件的数据处理部件;针对每个上述执行单位判断上述存储部件是否保持了用于该执行单位的处理的数据、以及上述存储部件是否具有存储该执行单位的处理结果的空区域的执行单位判断部件;根据上述执行单位判断部件的判断结果,从上述多个执行单位中决定下一个应该处理的执行单位的执行单位决定部件。
2.根据权利要求1所述的处理器,其特征在于上述存储部件具有针对预先决定的执行单位,存储在该执行单位的处理中使用的数据的第1存储部件;存储使用从上述第1存储部件取得的数据执行了该执行单位的处理后的处理结果,同时在有使用该存储了的处理结果的其他执行单位的情况下,存储在该其他执行单位的处理中使用的数据的第2存储部件,其中上述执行单位判断部件判断上述第1存储部件是否保持了用于执行单位的处理的数据、上述第2存储部件是否具有存储执行单位的处理结果的空区域。
3.根据权利要求2所述的处理器,其特征在于还具备对各个上述多个执行单位设置优先顺序的优先顺序设置部件,上述执行单位决定部件根据由上述优先顺序设置部件设置的优先顺序,决定应该启动的执行单位。
4.根据权利要求3所述的处理器,其特征在于还具备计测上述多个执行单位各自的启动频率的启动频率计测部件,上述优先顺序设置部件根据通过上述启动频率计测部件计测的启动频率,设置上述优先顺序。
5.根据权利要求3所述的处理器,其特征在于上述执行单位决定部件在上述第1存储部件在第1执行单位的启动过程中保持了用于优先顺序比该第1执行单位高的第2执行单位的数据,并且上述第2存储部件具有应该存储上述第2执行单位的处理结果的空区域的情况下,中断上述第1执行单位的启动,启动上述第2执行单位。
6.根据权利要求2所述的处理器,其特征在于上述数据处理部件具备设置了多个包含所有的各个执行单位所固有的信息的寄存器组的寄存器组群;选择由上述执行单位决定部件决定的执行单位使用的上述寄存器组的寄存器组选择部件;使用通过上述寄存器组选择部件选择的寄存器组,进行由上述执行单位决定部件决定的执行单位的处理的运算处理部件。
7.根据权利要求2所述的处理器,其特征在于具备设置了多个包含所有的各个执行单位所固有的信息的寄存器组的寄存器组群;选择由上述执行单位决定部件决定的执行单位使用的上述寄存器组的寄存器组选择部件;使用通过上述寄存器组选择部件选择的寄存器组,进行由上述执行单位决定部件决定的执行单位的处理的运算处理部件;能够存储包含在上述寄存器组群中的任意的寄存器组的内容的外部寄存器组存储部件;在上述外部寄存器组存储部件存储了上述执行单位使用的寄存器的内容的情况下,将包含在上述寄存器组群中的、中断中或应该中断的执行单位所使用的寄存器组的内容转送到上述外部寄存器组存储部件,同时将数据从上述外部寄存器组存储部件转送到该寄存器组的存储控制部件。
8.根据权利要求7所述的处理器,其特征在于具备判断由上述执行单位决定部件决定的执行单位使用的上述寄存器组是否存在于上述寄存器组群中的选中判断部件,上述寄存器组选择部件在上述选中判断部件判断为存在的情况下,从上述寄存器组群中选择寄存器组,在上述选中判断部件判断为不存在的情况下,选择保持有从上述外部寄存器组存储部件转送的数据的寄存器组。
9.根据权利要求8所述的处理器,其特征在于具备在上述选中判断部件判断为不存在时,选择应该保存到上述外部寄存器组存储部件中的上述寄存器组群的寄存器组的保存寄存器组决定部件,上述存储控制部件将由上述保存寄存器组决定部件选择的寄存器组的内容转送到上述外部寄存器组存储部件。
10.根据权利要求6所述的处理器,其特征在于上述执行单位决定部件在考虑了基于上述执行单位判断部件的判断结果的同时,在上述存储控制部件在上述寄存器组群和上述外部寄存器组存储部件之间进行寄存器组的替换处理的过程中,也不受该替换处理的影响地决定能够执行的执行单位,使得能够进行其他执行单位的处理。
11.根据权利要求6所述的处理器,其特征在于上述存储控制部件在有必要更新上述外部寄存器组存储部件的存储内容的情况下,只将上述寄存器组群的有变更的寄存器的值转送到上述外部寄存器组存储部件。
12.根据权利要求6所述的处理器,其特征在于上述存储控制部件在有必要将数据从上述外部寄存器组存储部件转送到上述寄存器组群的情况下,只将通过其他执行单位的执行而改写了上述寄存器组群的寄存器的值的寄存器的内容从上述外部寄存器组存储部件转送到上述寄存器组群。
13.根据权利要求6所述的处理器,其特征在于上述存储控制部件只在与存储在上述外部寄存器组存储部件中的寄存器组相同的寄存器组不存在于上述寄存器组群的情况下,将该寄存器组的内容转送到上述外部寄存器组存储部件。
14.一种运算处理方法,其特征在于包括将对某数据处理进行了时间分割的处理作为执行单位,按每个该执行单位执行处理;针对预先决定的执行单位,将在该执行单位的处理中使用的数据存储到第1存储部件;将使用从上述第1存储部件取得的数据进行了该执行单位的处理后的处理结果存储到第2存储部件,同时在有使用该存储了的处理结果的其他执行单位的情况下,将在该其他执行单位的处理中使用的数据存储到上述第2存储部件;判断上述第1存储部件是否保持了用于执行单位的处理的数据、上述第2存储部件是否具有存储执行单位的处理结果的空区域;根据该判断的结果,从上述多个执行单位中决定下一个应该启动的执行单位。
15.一种处理器,其特征在于包括将对某数据处理进行了时间分割的处理作为执行单位,按每个该执行单位执行处理的数据处理部件;存储在上述数据处理部件中应该执行的执行单位所使用的数据、或上述数据处理部件中的执行结果的多个存储部件;根据存储在上述多个存储部件中的数据量,决定使用存储在各存储部件中的数据的执行单位的优先度的优先度决定部件。
16.根据权利要求15记载的处理器,其特征在于上述优先度决定部件进行决定,使得某存储部件存储的数据量越多,则从该存储部件接受应该处理的数据的执行单位的优先度越高。
17.根据权利要求15记载的处理器,其特征在于上述优先度决定部件进行决定,使得某存储部件存储的数据量越多,则将执行结果存储在该存储部件中的执行单位的优先度越低。
18.根据权利要求16记载的处理器,其特征在于上述优先度决定部件在某执行单位接受应该处理的数据的存储部件所存储的数据量有增加倾向的第1情况、和该执行单位接受应该处理的数据的存储部件所存储的数据量有减少倾向的第2情况下,即使上述第1情况下的存储部件所存储的数据量和上述第2情况下的存储部件所存储的数据量相同,也将上述第2情况下的从该存储部件接受应该处理的数据的执行单位的优先度设置为比上述第1情况下的该执行单位的优先度高。
19.根据权利要求17记载的处理器,其特征在于上述优先度决定部件在某执行单位存储执行结果的存储部件所存储的数据量有增加倾向的第1情况、和该执行单位存储执行结果的存储部件所存储的数据量有减少倾向的第2情况下,即使上述第1情况下的存储部件所存储的数据量和上述第2情况下的存储部件所存储的数据量相同,也将上述第1情况下的将执行结果存储到该存储部件的执行单位的优先度设置为比上述第2情况下的该执行单位的优先度高。
20.根据权利要求15记载的处理器,其特征在于上述优先度决定部件在判断出某存储部件所存储的数据量超过了该存储部件的存储容量的限度时,将从该存储部件接受应该处理的数据的执行单位设置为最高的优先度。
21.根据权利要求15记载的处理器,其特征在于上述优先度决定部件在判断出某存储部件所存储的数据量超过了该存储部件的存储容量的限度时,把将执行结果存储到该存储部件的执行单位设置为最低的优先度。
22.一种优先度决定方法,其特征在于包括将对某数据处理进行了时间分割的处理作为执行单位,对每个该执行单位执行处理;将应该被执行的执行单位使用的数据、或执行单位中的执行结果存储到多个存储装置中;根据存储在上述多个存储部件中的数据量,决定使用存储在各存储部件中的数据的执行单位的优先度。
23.根据权利要求16记载的处理器,其特征在于上述执行单位至少包含第1执行单位和第2执行单位,上述多个存储部件至少包含存储在上述第1执行单位中使用的数据的第1存储部件、存储在上述第2执行单位中使用的数据的第2存储部件,上述优先度决定部件在满足以下所有条件的情况下,将第1执行单位的优先度设置得比第2执行单位的优先度低(a)第1存储部件的数据量和第2存储部件的数据量相等;(b)第1存储部件的数据量有增加倾向;(c)第2存储部件的数据量有减少倾向。
24.根据权利要求17记载的处理器,其特征在于上述执行单位至少包含第1执行单位和第2执行单位,上述多个存储部件至少包含存储上述第1执行单位的处理结果的第1存储部件、存储上述第2执行单位的处理结果的第2存储部件,上述优先度决定部件在满足以下所有条件的情况下,将第1执行单位的优先度设置得比第2执行单位的优先度高(a)第1存储部件的数据量和第2存储部件的数据量相等;(b)第1存储部件的数据量有增加倾向;(c)第2存储部件的数据量有减少倾向。
全文摘要
本发明相关的处理器具备以下部件数据处理部件将对某数据时间分割为至少一个以上的处理作为执行单位,对每个该执行单位执行处理;第1存储部件针对预先决定的执行单位存储在该执行单位的处理中使用的数据;第2存储部件存储使用从第1存储部件取得的数据进行了该执行单位的处理后的处理结果,同时在有使用该存储的处理结果的其他执行单位的情况下,存储在该其他执行单位的处理中使用的数据;执行单位判断部件判断第1存储部件是否保持了用于执行单位的处理的数据、以及第2存储部件是否具有存储执行单位的处理结果的空区域;执行单位决定部件根据执行单位判断部件的判断结果,从多个执行单位中决定下一个应该启动的执行单位。
文档编号G06F9/30GK1517869SQ20041000207
公开日2004年8月4日 申请日期2004年1月9日 优先权日2003年1月9日
发明者镝木智, 宮本幸昌, 菅野伸一, 樽家昌也, 大根田拓, 一, 也, 拓, 昌 申请人:株式会社东芝
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1