CN101154169A - 多处理器系统 - Google Patents
多处理器系统 Download PDFInfo
- Publication number
- CN101154169A CN101154169A CNA2007101618904A CN200710161890A CN101154169A CN 101154169 A CN101154169 A CN 101154169A CN A2007101618904 A CNA2007101618904 A CN A2007101618904A CN 200710161890 A CN200710161890 A CN 200710161890A CN 101154169 A CN101154169 A CN 101154169A
- Authority
- CN
- China
- Prior art keywords
- task
- processor cores
- kernel
- processor
- scheduler
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000007246 mechanism Effects 0.000 claims abstract description 82
- 238000012545 processing Methods 0.000 claims abstract description 42
- 230000006872 improvement Effects 0.000 claims description 7
- 238000000034 method Methods 0.000 abstract description 35
- 230000008569 process Effects 0.000 abstract description 29
- 238000009826 distribution Methods 0.000 description 31
- 238000010586 diagram Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 8
- 230000008676 import Effects 0.000 description 5
- 238000003860 storage Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000010276 construction Methods 0.000 description 4
- 230000015572 biosynthetic process Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 238000000151 deposition Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000005755 formation reaction Methods 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 238000010923 batch production Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- 230000000052 comparative effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000003179 granulation Effects 0.000 description 1
- 238000005469 granulation Methods 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5044—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Multi Processors (AREA)
- Hardware Redundancy (AREA)
- Stored Programmes (AREA)
Abstract
一种包括处理器单元和调度器的多处理器系统,该处理器单元包括:内核A,其包括用于改进数据处理的处理性能的第一处理机制和用于收集该数据处理中正在使用的或已使用的硬件资源的使用信息的PM单元;以及内核B,其具有与该第一处理机制采用相同处理系统并且在处理性能上次于该第一处理机制的第二处理机制;该调度器将以前未被执行过的任务提供给内核A并且将将要重新执行的任务提供给处理器内核(A和B)之一以便执行该任务,通过参考在包括具有相同任务的多个任务的应用软件的执行时间、在PM单元中以前收集的该任务的硬件资源的使用信息,选择处理器单元。
Description
技术领域
本发明涉及异构多处理器系统,并且涉及用于对多个处理器内核分配任务的多处理器系统。
背景技术
通常,为了加速处理器,提出了各种机制,例如高速缓冲存储器机制、分支预测机制、超级标量机制、无序机制以及SIMD机制。通过采样这些机制,改进了指令级并行程度,避免了各种延迟造成的不利结果,并且有效地使用了数据级并行,从而改进了处理器的处理能力。以上列出的机制有助于处理器的处理能力的改进,但是可能需要大的分组区域以及功率消耗作为该改进的折衷。这些机制是否有助于加速处理器取决于软件,并且还有可能出现一些完全不能提供任何处理速度改进的情况。
提出了对多个上述的处理器并行地进行操作的多处理器系统,作为用于改进系统计算能力的工具。并且近年来,由于工艺的小型化,已经实现了将多个处理器内核安装在一个芯片上的多核处理器系统。多核处理器系统在一个芯片上并行地执行软件的多个独立处理单元的多个任务。
此外,存在包括不同类型处理器内核的多核处理器,称为异构多核处理器。异构多核处理器中所提供的处理器内核包括多种类型的内核,例如通用处理器内核、DSP内核以及专用硬件处理引擎。例如,包括两个不同通用处理器内核例如CELL处理器的多核处理器也称为异构多核处理器。
在异构多核处理器中,提供了不同类型的处理器内核,并且将最适于对每个任务进行处理的处理器内核用来实现高效处理。例如,CELL处理器所具有的多核构造包括:八个最适于媒体处理的处理器内核(SPE),以及一个最适于对诸如涉及操作系统(OS)的执行过程的通用处理进行处理的处理器内核(PPE)。
在以下相关技术文献中详细描述了CELL处理器。
相关技术文献:“10.2 The Design and Implementation ofFirst-Generation CELL Processor”D.Pham et a1.,2005IEEEInternational Solid-State Circuits Conference(ISSCC)。
在异构构造的多核处理器中,关于由哪个处理器来执行哪个任务的任务分配很重要。在相关技术的异构多核处理器中,通过软件开发者或者工具来预先统计地确定应该由哪个处理器来执行哪个任务。
然而,对于“如果存在两类仅高速缓冲存储器容量不同的处理器内核,应该把任务分配给哪个处理器内核”或者“如果一个处理器内核具有无序机制并且一个处理器内核不具有无序机制,应该把任务分配给哪个处理器内核”的选择,没有必要引入最佳统计分析。这意味着在依赖于多核处理器所提供的处理器内核类型的静态任务分配中有可能不能得到最佳解决方案。
随着在一个芯片中可能安装的处理器内核的数量由于工艺的小型化而增加,并且随着在多核处理器中提供了越来越多种内核类型,越来越难以统计地分配任务。
发明内容
本发明的一个目的是为了提供用于动态地并且高效地将任务分配给异构多核处理器中的处理器内核的多处理器系统。
根据本发明的第一方面,提供了一种包括多处理器内核和调度器的多处理器系统,该多处理器内核包括:
第一处理器内核,其具有:第一处理机制,用于改进该第一处理器内核中的数据处理的处理性能;以及性能监视器,用于收集在该数据处理中正在使用的或者已使用的硬件资源的使用信息;
第二处理器内核,其具有与该第一处理机制采用相同处理系统并且在改进性能上次于该第一处理机制的的第二处理机制。
当执行包括多个任务的应用软件并且该多个任务包括彼此相同的任务时,该调度器用于:确定将要执行的任务是否以前被执行过;当确定该任务以前未被执行过时,将该任务提供给该第一处理器内核;当确定该任务以前被执行过时,通过参考当以前执行该任务时所收集的使用信息来从该处理器内核中选择一个处理器内核;并且将该任务提供给所选择的处理器内核。
根据本发明的第二方面,提供了一种包括多处理器内核和调度器的多处理器系统,该多处理器内核包括:
第一处理器内核,其具有:多个第一处理机制,用于改进该第一处理器内核中的数据处理的处理性能,该多个第一处理机制彼此不同;以及性能监视器,用于收集数据处理中正在使用的或者已使用的硬件资源的使用信息;以及
第二处理器内核,将其配置为具有比该第一处理器内核中的所有处理机制所提供的处理性能更低的处理性能,该第二处理器内核具有至少一个第二处理机制,每个第二处理机制具有与该第一处理器内核中所提供的各个第一处理机制相等或更低的改进性能。
当执行包括多个任务的应用软件并且该多个任务包括彼此相同的任务时,该调度器用于:确定将要执行的任务是否以前被执行过;当确定该任务以前未被执行过时,将该任务提供给该第一处理器内核;当确定该任务以前被执行过时,通过参考当以前执行该任务时所收集的使用信息来从该处理器内核中选择一个处理器内核;并且将该任务提供给所选择的处理器内核。
根据本发明的第三方面,提供了一种包括多处理器内核和调度器的多处理器系统,该多处理器内核包括:
第一处理器内核,其具有:第一和第二处理机制,用于改进数据处理的处理性能,该第一和第二处理机制彼此不同;以及第一性能监视器,用于收集数据处理中正在使用的或者已使用的硬件资源的使用信息;
第二处理器内核,其具有:第三和第四处理机制,用于改进数据处理的处理性能,该第三和第四处理机制彼此不同并且与该第一和第二处理机制不同;以及第二性能监视器,用于收集数据处理中正在使用的或者已使用的硬件资源的使用信息;以及
第三处理器内核,其具有该第一和第三处理机制。
当执行包括多个任务的应用软件并且该多个任务包括彼此相同的任务时,该调度器用于:确定将要执行的任务是否以前被执行过;当确定该任务以前未被执行过时,将该任务提供给该第一处理器内核和第二处理器内核之一;当确定该任务以前被执行过时,通过参考当以前执行该任务时所收集的使用信息来从该处理器内核中选择一个处理器内核;并且将该任务提供给所选择的处理器内核。
附图说明
图1是用于显示根据本发明的实施例的系统的一般构造的框图;
图2是用于显示处理器单元的一般构造的框图;
图3是用于显示整个处理单元的示意性操作的流程图;
图4是用于显示内核中所包括的处理机制的实例的图;
图5是用于显示PM信息的实例的图;
图6是调度器辅助部分的功能性框图;
图7是用于显示一个状态中的消息队列的实例的图;
图8是用于显示任务状态转移的图;
图9是用于显示一个状态中的内核管理表的实例的图;
图10是用于显示一个状态中的内核信息表的实例的图;
图11是用于显示一个状态中的任务信息表的实例的图
图12是用于显示任务信息表中的更新流程的流程图;
图13是用于显示门限值表的实例的图;
图14是用于显示与每个门限值的比较结果的实例的图;
图15是用于显示得分计算结果的实例图;
图16是任务管理部分的功能性框图;
图17是用于显示任务管理部分的操作的示意性流程的流程图;
图18是用于显示任务分配确定部分的详细操作流程的流程图;
图19是用于显示内核类型分配使能/禁止表的内核类型的实例的图;
图20是用于显示分配候选者TID表的实例图;
图21是用于显示反映内核状态的任务得分表的任务的实例图;
图22是用于显示可执行的任务内核表的实例的图;
图23是用于显示内核中所包括的处理机制的实例的图;
图24是调度器辅助部分的功能性框图;
图25是用于显示任务信息表的实例的图;
图26是用于显示任务信息表的更新流程的流程图;
图27是用于显示反映内核状态的任务得分表的任务的实例图。
具体实施方式
现在参考附图,将详细描述本发明的实施例。
图1显示了根据本发明的实施例的系统的一般构造。该系统包括处理器单元1、主存储器2、磁盘单元3以及外部输入/输出单元4,并且将每个组件经由系统总线连接。处理器单元1包括多个处理器内核5和调度器辅助部分6(稍后详细描述处理器单元1)。将外部输入/输出单元4连接到诸如键盘、鼠标和显示器的输入和输出设备(未显示)。
磁盘单元3存储系统中将要执行的各种类型的软件,包括操作系统(OS)和应用程序(第一应用程序和第二应用程序)。
每个应用程序包括一个或者多个精细粒度执行单元的任务。例如,图1显示第一应用程序包括任务1、2和3三个任务,并且第二应用程序包括任务4和5两个任务。通过执行所需的应用程序中所包括的任务来实现应用程序的执行。例如,在第一应用程序的执行中,不仅执行每个任务,而且在一些情况下将相同的任务执行多次,或者在相同的时间执行多个任务。在该实施例中,假设每个任务是一个称作线程的执行单元。然而,该任务可以是通过调度来分配给处理器内核部分5的软件单元;例如,还包括诸如进程的软件单元。
在其中一个处理器内核5中执行OS,从而对整个系统进行管理。该OS还包括用于与调度器辅助部分6共同对任务进行调度的调度器。
当用户通过外部输入/输出单元4来指示OS执行一个应用程序时,该OS的调度器通知调度器辅助部分6需要从该应用程序所包括的任务中执行的任务,并且把该任务分配给可以执行该任务的处理器内核部分5,处理器内核部分5处理所分配的任务,从而继续进行应用程序的执行。如果在该应用程序的执行期间给出了用于执行不同的应用程序的指令,则调度器把在该不同应用程序中所包括的任务添加为需要调度的任务,从而并行地执行多个程序。
图2显示了处理器单元1的一般构造。
这里,处理器单元1是包括N+1个处理器内核5(内核A-N和内核Z)的多处理器,这些内核经由内部总线彼此连接。
内核Z是保留给OS执行的处理器内核部分5。剩余的处理器内核5即内核A-N中的每一个包括多个处理机制。该处理机制是指旨在加速处理器的处理功能;例如,其是指高速缓冲存储器机制、分支预测机制、超级标量机制、无序机制以及SIMD机制等等。这意味着将处理器单元1配置为异构多核处理器,其中每个处理器内核部分5包括不同的处理器机制。
内核A包括具有与内核B-N中所包括的处理机制相同的或者比其更高性能的功能块。内核A还包括性能监视器单元(PM单元),用于对当在执行任务或者已经执行了任务时对内核A所具有的硬件资源的使用信息进行收集。
另一方面,将内核B-N中的每一个配置为具有比内核A中所提供的所有处理机制所提供的处理性能更低的处理性能。内核B-N中的每一个具有多个处理机制,每个该处理机制具有与内核A中所提供的处理机制分别相等或者更低的改进性能。
处理器单元1还包括调度器辅助部分6。当执行包括多个任务的应用程序,其中该多个任务包括相同任务的执行时,调度器辅助部分6把每个任务分配给任意用于处理该任务的处理器内核部分5(任意内核A-N)。如果该任务不是以前执行过的任务,调度器辅助部分6总是将该任务分配给内核A。一旦再次执行已执行过的任务,调度器辅助部分6参考在性能监视器单元中以前收集的任务的硬件资源的使用信息,选择一个处理器内核5(内核A-N)来处理该任务,并且把该任务提供给所选择的处理器内核部分5(任意内核A-N)。
处理器单元1还包括系统总线I/F部分7,作为用于连接内部总线和系统总线的接口。
图3显示了上述整个处理器单元1的示意性操作。
随着用户输入应用程序的执行请求,内核Z中的OS将该应用程序的任务按照执行顺序提供给调度器辅助部分6,调度器辅助部分6在暂时保持所提供的任务的同时,按照执行顺序取出这些任务(S11)。
调度器辅助部分6确定所取出的任务是不是以前没有执行的任务(S12)。如果该任务是以前没有执行的任务,调度器辅助部分6将该任务提供给内核A(S13)。一旦完成了该任务的执行,调度器辅助部分6就对在性能监视器单元(PM单元)中所收集的该任务的硬件资源的使用信息(PM信息)进行接收(S14)。调度器辅助部分6将该使用信息与用于指示该任务的信息相关联地进行保存(S15)。
另一方面,如果该任务是已执行过的任务,调度器辅助部分6参考在性能监视器单元(PM单元)中以前收集的该任务的硬件资源的使用信息,选择一个处理器内核5(内核A-N)来执行该任务,并且把该任务提供给所选择的处理器内核部分5(S16)。
在所提供的和所暂时保留的任务运行完成之前(S17),调度器辅助部分6取出任务(S18)并且重复步骤S12以及以后的步骤。当这些任务运行完成时,应用程序的执行就完成了。
如果从用户接收到对不同应用程序的执行请求并且该不同应用程序包含正在执行的那个应用程序中所包含的任务,则该任务可以使用在该应用程序任务的执行中以前所收集的使用信息。
根据如上所述的本发明的实施例,当异构多处理器再次执行任务时,有可能选择适合于该任务执行的处理器内核部分,并且使所选择的处理器内核部分执行该任务。
接下来,将描述上述实施例的详细实例。
第一实例
在第一实例中,假设处理器单元1的处理器内核5数量是四。图4显示了在四个处理器内核5之中,除了用于执行OS的内核Z之外的内核A到C中所包括的处理机制的实例。
内核A包括的处理机制有:分支预测机制(分支预测)、无序机制(无序)、三个相同的流水线机制(处理流水线1到3)、以及512KB的次级高速缓冲存储器机制(L2:512KB)。内核A还包括用于监视内核A的硬件资源的使用状态的性能监视器单元(PM单元)。内核B包括与内核A相同的一个流水线机制,以及存储区域为内核A容量一半的256KB的次级高速缓冲存储器机制。内核C包括与内核A相同的分支预测机制、两个与内核A相同的流水线机制、以及存储区域为内核A容量四分之一的128KB的次级高速缓冲存储器机制。因此,内核B和C中的每一个都是处理器内核部分A的功能子集。处理器内核部分Z是专用于OS的处理器内核,并且将不描述。内核A、B和C中的每一个都可以执行实现为相同ISA的目标代码(用二进制数操作代码集的指令格式来表示)。
接下来,将描述内核A中所包括的性能监视器单元(PM单元)。
PM单元收集在内核A的一个任务的执行中硬件的使用状态的信息,通过计算等生成多条数据,并且把它们输出到调度器辅助部分6作为使用信息(PM信息)。尽管考虑到PM信息中包括了各条信息,在该实施例中,如图5所示,该PM信息由高速缓冲存储器性能低下率、分支预测有效度、IPC、无序有效度、以及与任务ID相关联的执行时间(TID=6)这些项组成。
以下将描述这些项及其生成方法。
“高速缓冲存储器性能低下率”:对高速缓冲存储器大小为512KB的次级高速缓冲存储器机制提供了多少速度改进进行测量,并且指示在改变(减小)该高速缓冲存储器大小的情况下对性能有多少负面影响的值就是高速缓冲存储器性能低下率。PM单元对于每个高速缓冲存储器条目测量“命中次数”和“丢失次数”,基于该命中次数和丢失次数,将“高速缓冲存储器丢失代价循环数”与“在512KB的命中中的丢失次数”相乘,并且将所得的结果除以“任务处理所需的循环总数”,以计算对于每个高速缓冲存储器大小在性能上的负面影响。
如下获得“在512KB的命中中的丢失次数”:(1)对于每个高速缓冲存储器条目计算命中次数和丢失次数,(2)对当高速缓冲存储器大小发生改变的情况下变成相同条目的条目之间进行比较,并且找到具有最大命中次数的条目,以及(3)将当高速缓冲存储器大小发生改变的情况下变成相同条目的条目中、除了具有最大命中次数的条目之外的所有条目的命中次数加在一起,并且将总值乘以“字大小÷高速缓冲存储器线大小”。将所获得的值用作当高速缓冲存储器大小改变的情况下命中中丢失次数的预测值,并且(4)最后将它们加在一起。
“分支预测有效度”:对分支预测机制提供了多少速度改进进行测量,并且用于指示有效度的值是分支预测有效度。使用在现有PM单元中所采样的性能指标事件的“分支被采用”以及“分支预测的命中”,将由处理器唯一确定的常数“分支丢失代价循环数”乘以“分支被采用以及分支预测命中的次数”,并且将所得的结果除以“任务处理所需的循环总数”,以提供分支预测有效度,其中该“任务处理所需的循环总数”指示该任务实质需要的处理时间,其不包括由于与另一个任务进行同步处理而发生的延迟。
“IPC”:对每个循环所处理的指令数的平均值进行测量,并且必要的流水线数是IPC。通过将在现有PM单元中也采样的性能指标事件的“已执行指令数”除以上述“任务处理所需的循环总数”,来提供IPC。
“无序有效度”:对无序机制可以实现多少指令传递进行测量,并且用于指示该有效度的值是无序有效度。通过将“先行指令之前所发出的指令数”除以“已执行指令数”来得到该无序有效性。
“执行时间”:对于任务执行时间所采用的循环数的测量值。这里,执行时间以循环数为单位。
将在PM单元中得到的“高速缓冲存储器性能低下率”、“分支预测有效度”、“IPC”、“无序有效度”以及“任务执行时间”提供给调度器辅助部分6。
接下来,将详细描述调度器辅助部分6。图6显示了调度器辅助部分6的内部模块以及它们的关系。
调度器辅助部分6主要包括四个实现为寄存器文件的表,即任务队列21、内核管理表22、任务信息表24,以及内核信息表23,以及两个实现为硬件电路的执行部分,即任务管理部分11和内核选择部分12。
将描述这些表。每个表中的N/A指示没有分配,其表示“无”。
任务队列21对在每个处理器内核部分5中所执行的每个任务的状态进行管理。图7显示了在一个状态中的任务队列21的实例。任务队列21由有限数量的条目(在该实例中,10个条目)组成,并且每个条目具有TID、T#、状态、依赖关系、参数以及顺序这些项。TID是目前在调度器辅助部分6中所管理的每个任务的唯一的内部ID,T#是分配给TID的任务的每个开始地址的适当ID,状态是TID中所指示的任务的状态,依赖关系是为了允许执行该任务而必须先终止执行的任务的TID列表,参数是当执行该任务时所使用的参数,并且顺序是用于保持将任务输入到任务队列中的输入顺序的项。在该实例中,T#是该任务的每个开始地址的适当ID;然而,事实上,如果操作模式随环境而改变,尽管开始地址相同,也可能得出不同的ID。
提供了五个状态,空、等待、就绪、运行和完成,作为由状态项所指示的任务状态,并且如图8所示做出状态转移,从而实现任务管理。首先,当从调度器输入新任务时,将该任务登记在一个具有空状态的TID中。如果对于该输入任务设置了在先依赖任务,将状态设置为等待;否则将状态设置为就绪。一旦完成了所有在前任务,就将处于等待状态的任务的状态设置为就绪。将处于就绪状态的任务分配给任意内核,并且当将该任务的执行分配到内核时,该任务进行状态转移以便运行,并且进一步当该状态执行终止时,该任务进行状态转移以完成执行。最后,当调度器得到任务终止通知时,将任务状态恢复为空,并且再次使得其可以接受新任务。
内核管理表22是用于存储每个处理器内核部分5的当前状态的表。图9显示了一个状态中的内核管理表22的实例。内核管理表22具有与处理器单元1中所包括的内核数一样多的条目。每个条目具有四项,即CID、C#、状态以及用于指示处理器单元1中的唯一内部ID的运行TID,内核类型、内核状态以及任务TID是分别执行的。内核状态有忙、空闲和保留,并且分别指示正在执行任务的状态、等待任务执行分配的状态、没包括在任务分配中的状态。
内核信息表23是用于描述在处理器单元1中所安装的每种内核的特征的表,并且用作内核选择标准。图10显示了一个状态中的内核信息表的实例。内核特征是L2高速缓冲存储器大小(L2高速缓冲存储器大小)、分支预测器的存在或者缺少(分支预测可用)、指令执行流水线的数量(流水线数)以及无序执行的使能/禁止(OOO可用)。如果指示出一个功能的存在或者缺少,如果包括该功能则输入“是”,如果不包括该功能则输入“否”;否则将条目中所指示的处理机制的量包括为参数。内核信息表23是每个内核(A到C)的适当的表,并且不被重写。被保留来用于执行OS的内核Z不包括在任务分配中,并且因此不包括内核Z的项。
任务信息表24指示当在每个处理器内核部分5中执行任务时的合适程度。图11显示了一个状态中的任务信息表的实例。
任务信息表24包括:得分项,用于指示在哪种内核中可以最佳地执行T#中所示任务的程度(得分A是内核A的适合性、得分B是内核B的适合性、得分C是内核C的适合性,10是最大值,并且值越大所指示的适合性越高);执行时间项,用于保存当在内核A中执行任务时的执行时间(循环数);以及开始地址项,用于指示该任务的执行开始地址。寄存在任务队列21中的每个任务的T#具有任务信息表24的条目。对于在得分项中具有N/A的任务,不检查每个得分类型的适合性。如稍后所详述,通过内核选择部分12的得分计算来获得得分值。
内核选择部分12从处理器内核部分5接收任务终止通知,并且参考任务队列21、内核管理表22以及内核信息表23来更新任务信息表24。图12显示了任务信息表的更新流程,并且以下将给出详述。
当一个任务终止时,处理器内核部分5把终止通知经由内部总线发送到调度器辅助部分6。在调度器辅助部分6中,内核选择部分12接收该终止通知(S21)。该终止通知包括所执行的任务的TID、发送该终止通知的处理器内核部分5的CID、该任务执行所需的时间、以及在内核A中执行该任务的情况下的PM数据。内核选择部分12基于所发送的TID和CID来参考任务队列21以及内核管理表22,并且找到用于执行该任务的处理器内核部分5的C#和TID的T#。
接下来,内核选择部分12关于在步骤S21所找到的T#参考任务信息表24,并且确定是否已经计算了每种内核类型的得分(S22)。如果得分项是N/A,确定该得分是尚未计算的,并且该过程前进到步骤S23。另一方面,如果该得分已经包括了一个值,该过程前进到步骤S26。
内核选择部分12根据在步骤S21所找到的C#确定是否在内核A中已执行了该任务(S23)。如果在内核A中已执行了该任务,该过程前进到步骤S24;否则该过程终止。
内核选择部分12基于作为终止通知的一部分发送的PM信息,计算对应于该任务的T#的针对每种内核类型的得分(S24)。内核选择部分12在任务信息表24的对应项中记录在S24中所计算的每种内核类型的得分值。其还在执行时间项中记录该任务的执行时间(S25)并且终止处理。
如果在步骤S22的确定为“否”,则内核选择部分12根据在步骤S21所获得的T#和C#,检查用于执行该任务的处理器内核部分5的得分值的任务信息表24。只有得分为10时,该过程才前进到步骤S27;否则处理终止。只有得分为10时才执行步骤S27的原因是,将具有得分=10的内核确定为对于对于该任务的最佳内核,并且对在这种内核中执行该任务的执行时间与在内核A中执行该任务的执行时间之间做出比较,从而可以再次证实该最优性确定的有效性。反之,很难对在使得得分<10的内核中执行该任务的执行时间与在内核A中执行该任务的执行时间之间做出比较,从而在该实例中不在S27中执行重新证实处理。
内核选择部分12对在该任务的当前执行时间与寄存在任务信息表24中的内核A的执行时间进行比较(S27)。考虑到测量误差,该任务的执行时间可以与通过把该表中所寄存的执行时间加上给定值所得的值(或者通过用给定值来乘以该表中所寄存的执行时间所得的值)(该给定值可以是外部设置的)进行比较。该比较的结果是,如果该任务的当前执行时间不超过寄存在任务信息表24中的执行时间,则处理终止。另一方面,如果该任务的当前执行时间超过寄存在任务信息表24中的执行时间,则内核选择部分12将任务信息表24中关于该任务的信息设置为N/A,即,清除该信息(S28)。随着步骤S28的执行,当稍后再次执行相同的任务时,重新选择最佳的处理器内核部分5。
以下给出了任务信息表24中所记录的得分的计算方法。
内核选择部分12包括用于估计PM信息的门限值表。图13显示了门限值表的实例。该使用门限值表的得分计算方法如下执行:
首先,参考门限值表和PM信息,并且确定每个处理器内核部分5的硬件资源是否满足用于无延迟地执行该任务的条件。具体地确定,如果该PM数据值小于门限值,则不满足该条件(X),并且如果PM数据值等于或者大于该门限值,则满足该条件(O)。例如,处理结果变得如图14所示。
接下来,计算每个处理器内核部分5的每个硬件资源的得分。如果在以前的确定中确定了不满足用于无延迟地执行该任务的条件(X),给出“0”分;如果确定了满足该条件(O),则执行对应于必要性的进一步的得分计算。如果用必要的最少硬件资源满足了需求,则该对应于必要性的进一步的得分计算在概念上给出“1”分,如果包括了多于必要的硬件资源,则给出缺点标记并且给出小于“1”分。更具体地,对于用“是”或者“否”来指示的每个硬件资源,如果尽管不需要但是包括了该资源,则给出“0.5”分;对于用数量来指示的每个硬件资源,将必要数量除以实际拥有的数量所得的值用来作为得分。该处理结果变成,例如图15的六个项中的左边四项。
接下来,对于每个处理器内核,找到了对硬件资源所计算的值的总值。该处理结果变成,例如图15的六个项中从左边开始的第五项“中间得分(和)”。
接下来,把“10”分给予具有最大值的内核,并且对于任何其它处理器内核,将通过将所找到的作为中间值的值乘以2.5所得的结果上舍入为最靠近的整数,作为最终得分。该处理结果变成,例如,图15中的六个项中的第六项“最终得分”,其为最右边的项。
从而找到了将要被记录到任务信息表24中的得分。
参考回图6,继续该详细描述。
任务管理部分11与用于执行OS的内核Z进行通信,并且还把任务执行分配的通知发送到该任务将要被分配到的处理器内核部分5,并且从该任务被分配到的处理器内核部分5接收执行终止通知。
图16显示了任务管理部分11的构造。虚线所包围的区域指示任务管理部分11。任务管理部分11包括用于更新任务队列21的任务队列管理部分31,用于确定将要被分配给处理器内核部分5的任务的任务分配确定部分32,用于管理在处理器内核部分5中所分配任务的执行的任务执行管理部分33,以及用于更新内核管理表22的内核管理表管理部分34。任务队列管理部分31和任务执行管理部分33可以经由内部总线与处理器每个内核部分5进行通信。
接下来,将基于图17的流程图来描述任务管理部分11的操作。该操作包括三个除了访问公共表以外独立地执行的流程,即“寄存新任务”、“将任务分配给内核处理器单元”以及“任务执行终止”。通过图中的虚线箭头来指示在对公共表的访问中所包括的排他关系。在通过虚线箭头所连接的处理级之间应用排他的执行。
首先,将描述新任务寄存。
任务队列管理部分31经由内部总线,从调度器接收新任务的执行请求(S31)。
任务队列管理部分31参考任务信息表24,并且从由调度器所请求的任务的开始地址中找到T#。如果该任务的开始地址寄存在任务信息表24中,任务队列管理部分31采用该T#作为新任务的T#;如果还没有寄存开始地址,任务队列管理部分31在任务信息表24中生成新T#条目,并且将该开始地址作为该任务的T#寄存在开始地址项中(S32)。
任务队列管理部分31将新任务寄存在任务队列21的空条目中(空状态下的条目)。任务队列管理部分31基于在步骤S32所获得的T#、依赖关系、以及从调度器所发送的请求中所包含的参数信息,对任务队列21的对应项进行寄存(S33),并且对顺序项的值进行设置,从而使得该任务在顺序关系上在现有任务之后。如果依赖关系非空,则将状态设置为等待,否则将状态设置为就绪。
任务队列管理部分31将用于寄存新任务的TID经由内部总线返回给调度器(S34)。
接下来将描述该任务到处理器内核部分5的分配。
任务分配确定部分32参考任务队列21、任务信息表24以及内核信息表23,确定将要分配的新任务和该任务将要被分配到的处理器内核部分5,并且发送通知给任务执行管理部分33(S41)。所提供的信息包括:指示将要分配的任务的TID、该任务的执行开始地址和执行参数、以及指示该任务将要被分配到的处理器内核部分5的CID。稍后将描述任务分配确定部分32的任务确定处理。
任务执行管理部分33基于所提供的信息,经由内部总线,请求由CID所指示的处理器内核部分5执行由TID所指示的任务。具体地,任务执行管理部分33基于接收的TID参考任务队列21,读取对应的T#和参数,并且把该信息发送到由CID所指示的处理器内核部分5,作为执行请求。任务执行管理部分33还在任务执行期间存储CID和DID对,作为信息(S42)。
任务执行管理部分33将该CID和TID与执行开始标志符一起发送到内核管理表管理部分34。内核管理表管理部分34基于该信息,更新内核管理表。具体地,其将由CID所指示的条目的状态项设置成忙碌,并且将TID寄存在运行TID项中(S43)。
任务执行管理部分33将该TID与执行开始标志符一起发送到任务队列管理部分31。任务队列管理部分31基于该信息,更新任务队列。具体地,其将由TID所指示的条目的状态项设置成运行(S44)。
该过程返回到步骤S41,并且分配另一个任务。
接下来,将讨论任务执行终止。
当执行该任务的处理器内核部分5经由内部总线来将任务终止的通知发送到调度器辅助部分6时,任务执行管理部分33接收该信息。所提供的信息包括用于识别对任务的执行进行终止的处理器内核部分5的ID(CID)(S51)。
任务队列管理部分31将该CID与终止标志符一起发送到内核管理表管理部分34。内核管理表管理部分34基于该信息更新内核管理表。具体地,将由CID所指定的条目的状态项设置为空闲,并且在运行TID项中输入N/A。
任务执行管理部分33将TID与终止标志符一起发送到任务队列管理部分31。任务队列管理部分31基于该信息更新任务队列21。具体地,将由TID所指示的条目的状态项设置成完成,并且进一步从其它TID条目的依赖关系项中删除该TID(S53)。
任务执行管理部分33经由内部总线,将任务终止的通知发送到调度器。所提供的信息包括执行终止的任务的TID。此外,在发送了该任务终止通知之后,任务执行管理部分33更新任务队列21。具体地,将由TID所指示的条目的状态项设置为空,并且在T#、参数和顺序项中输入N/A。此外,将任务队列21中的条目的所有比该任务的顺序值大的顺序值减一(S54)。
任务管理部分11如上所述进行操作。
接下来,将根据图18来描述用于分配任务的任务分配确定部分32的详细操作。任务分配确定部分32具有在调度器辅助部分6中参考任务队列21、任务信息表24和内核信息表23这三个表,并且对将要由处理器内核部分5所执行的任务以及该任务将要被分配到的处理器内核部分5进行确定的功能。
首先,任务分配确定部分32生成内核类型分配使能/禁止表的内核类型(S61)。图19显示了内核类型分配使能/禁止表的内核类型的实例。内核类型分配使能/禁止表的内核类型是可以基于内核管理表22来生成的中间表,并且该表具有关于每个内核类型的条目(C#),用于指示新任务分配的使能/禁止(状态)以及如果有可能可以分配哪个CID(可分配的CID)。只有当在内核管理表中的对应内核(C#)中至少一个的状态为空闲时,才可以将状态项设置为空闲;否则将状态项设置为忙碌。在可分配的CID项中,只有在前的项是空闲时,将在内核管理表22中具有C#的多个CID中的最小CID设置为空闲状态。
接下来,确定在内核类型分配使能/禁止表的内核类型中是否存在具有空闲状态的内核(S62)。如果存在这种内核,则创建分配候选TID表(S63)。
图20显示了分配候选TID表的实例。分配候选TID表是可以从任务队列21生成的中间表,并且通过仅提取T#和每个可分配TID的顺序来提供该表。仅在任务队列21中提取具有就绪状态的TID,并且抽出T#和顺序。从而可以生成该表。
接下来,确定在分配候选TID表中确定是否存在可分配的TID(S64),并且如果其存在,那么创建用于反映内核状态的任务得分表的任务。
图21显示了反映内核状态的任务得分表的任务。反映内核状态的任务得分表的任务是可以基于内核类型分配使能/禁止表的内核类型以及任务信息表来创建的中间表,并且是对于当前不能分配为0的内核的内核类型的得分值的屏蔽表。基于任务信息表24,如果可以根据内核类型分配使能/禁止表的内核类型来分配内核类型,得分值保持不改变;如果不能分配内核类型,将得分重写为0,从而生成反映内核状态的任务得分表的任务。添加了“其它”条目,以便对在任务信息表24中没有寄存得分的所有任务进行处理,从而仅将内核A设置为得分10,并且将其它内核设置为得分0,并且随后执行上述类似的屏蔽处理,以便对于每个内核类型设置得分。
接下来,生成可执行的任务内核表(S66)。图22显示了可执行的任务内核表的实例。可执行的任务内核表是可以根据以前生成的反映内核状态的任务得分表的任务和分配候选TID表来生成的中间表,该表的每个可分配的任务条目具有项TID、T#、最大得分、顺序以及C#。C#和最大得分是基于对应的T#,从反映内核状态的任务得分表的任务所计算的值,并且其指示内核类型(C#)采用最大得分以及当把该任务分配给该内核时的得分值。对应的TID的值,即T#和顺序项,原封不动地从分配候选TID表进行寄存。
当生成了这四个中间表时,任务分配确定部分32确定将要分配的任务(S67)。具体地,确定最适于将由具有最大得分值的TID所指示的任务,分配给由对应的C#所指示的内核类型的处理器内核部分5。如果存在多个具有该最大得分值的任务,就选择具有最小顺序值的TID。
接下来,任务分配确定部分32通过使用可执行任务内核表中所指示的C#来参考内核类型分配使能/禁止表的内核类型的对应条目的CID项,选择处理器内核部分5来执行所选择的TID(S68)。
此外,任务分配确定部分32基于可执行任务内核表中所指示的T#来参考任务信息表24,确定该任务的执行开始地址,并且基于TID来参考任务队列,确定该任务的执行参数(S69)。任务分配确定部分32把信息(TID、CID、执行开始地址、以及参数)发送到任务执行管理部分33(S70)。在该实例中,确定将由TID=6(开始地址=0x10000,执行参数=参数6)所指示的任务分配到由CID=2所指示的处理器内核部分5。
如果在步骤S62不存在空闲的内核,或者如果在步骤S64中不存在可分配的TID,就执行间歇处理(S71),并且随后再次在步骤S61开始处理。在间歇处理期间,允许伴随着新任务的输入、任务的终止等等,更新调度器辅助单元中的表。
如上所述,根据第一实例,当在内核A的最短处理时间内实现了对以前未执行的任务的执行时,PM单元同时测量该任务的执行特性,并且在执行终止时对不同类型内核的适用性进行打分,从而使得如果当下次执行该任务的时候包括更少资源,则可以选择能够以与内核A相同的处理速度来执行的内核。如果这种内核在执行另一个任务并且不可用,则可以根据得分值从可用内核中选择最合适的内核。另外,如果得分确定是不恰当的,还可以在内核A中的执行时间与其它内核中的执行时间之间进行比较来进行检测,并且通过在内核A中再次执行来再次做出得分确定。
第二实例
在第一实例中,在包括了三种类型的处理器内核5即内核A、B和C的处理器单元1中,内核A包括所有其它内核的功能。第二实例同样可应用于不存在这种绝对内核的处理器1。第二实例在许多点上与第一实例重叠,并且因此将描述它们之间的差别。
在第二实例中,处理器单元1具有五个处理器内核5。图23显示了除了用于在五个处理器内核5之间执行OS的内核Z之外的内核A到D的处理机制。
从图中可以看出,就指令流水线的数量、分支预测、无序机制而言,内核B、C和D中的每一个都是内核A的子集,就L2高速缓冲存储器大小而言,内核A、B和C中的每一个都是内核D的子集。
因此,在内核D以及内核A中安装了性能监视器单元(PM)。
接下来,将根据图24,描述调度器辅助部分6’。从图中可以看出,调度器辅助部分6’与第一实例中的调度器辅助部分6的差别在于添加了PM数据缓冲器25。尽管在该图中不能直接看出,但还是变得有必要将第一实例中的任务信息表24、任务管理部分11以及内核选择部分12局部地改变(扩展)为任务信息表24’、任务管理部分11’以及内核选择部分12’。
因为PM信息是从两个内核A和D在不同时间发送的,所以PM数据缓冲器25暂时存储一个任务(T#),直到来自内核A和D的PM信息都完成为止。当来自内核A和D的PM信息都完成了,内核选择部分12’计算该任务(T#)的每种内核类型的得分,并且一旦该得分的计算完成,将PM数据缓冲器中该任务(T#)的条目删除。
如图25所示,将“将要运行”项添加到任务信息表24’,其中寄存了为了计算该任务的得分而必须执行的处理器内核5的类型(C#)列表。每当对应的任务在由该C#所指示的处理器内核部分5中终止时,从该列表中移除此处所寄存的C#值,并且当把N/A输入该项时,其指示已经计算了该值。在该实例中,可以看出仅在内核A中已执行了T#=3的任务,仅在内核D中已执行了T#=6的任务,并且在内核A和内核D中都执行了其它任务1、4和5。
内核选择部分12’根据如图26所示的流程来操作。用相同的步骤标号来表示与第一实例(图12)中的内核选择部分12的操作流程相同的步骤,并且仅将单引号(’)添加到已改变的步骤中,并且用100以上的步骤标号来表示新添加的步骤。
首先,步骤S21和S22与第一实例的相同。
当从步骤S22返回“是”时,内核选择部分12’则根据在S21所找到的C#和T#确定是否在内核A和D中已经执行过该任务(S23’)。具体地,如果将C#列入了由任务信息表24’中的T#所指示的条目中的“将要运行”项,则确定在内核A和D中已经执行过该任务。如果在步骤S23’中确定在内核A和D中都没有执行该任务,则终止操作流程;如果确定在内核A和D中已经执行了该任务,该过程前进到步骤S101。
内核选择部分12’把作为终止通知的一部分来发送的PM消息寄存到PM数据缓冲器25中(S101)。如果在该PM数据缓冲器中已经存在了对应的T#,则将该PM信息添加到该条目中;否则,添加新的条目,并且将该PM数据记录在对应项中,并且不存在PM数据的每个项保持为N/A。为了寄存执行时间列,如果输入了已经存在的值,只有在该PM数据所指示的值小于那个值时,才执行覆盖写入。此外,内核选择部分12’将任务信息表24’中对应的“将要运行”项中所寄存的C#移除。
内核选择部分12’确定除了C#外,由在步骤23’所参考的任务信息表24’中的T#所指示的条目中的“将要运行”项所列出的任意内核类型是否存在(S102)。如果没有列出除了C#之外的任意内核类型,该过程进行到步骤S24’;否则,终止该过程。
接下来,内核选择部分12’基于PM数据缓冲器25中所记录的PM数据,计算该任务所对应的T#的每种内核类型的得分。(S24’)
内核选择部分12’将所计算出的每种内核类型的得分值记录在任务信息表24’的对应项中。还将PM数据缓冲器25中所记录的执行时间记录在任务信息表24’的执行时间项中(S25’)。
接下来,内核选择部分12’在PM数据缓冲器25中删除对应的条目,并且终止该处理。
另一方面,如果从步骤S22返回了“否”,该过程进行到步骤S26,并且执行与第一实例相同的处理,直到步骤S28为止。在步骤S28之后,内核选择部分12’再次将具有PM单元的处理器内核5的内核类型,寄存在任务信息表24’中对应于T#的条目中的“将要运行”项中(S104)。从而再次测量了该任务。
接下来,将描述任务管理部分11’。
任务管理部分11’具有与第一实例中的任务管理部分11类似的硬件改造,它们的区别在于图17中的处理流程的步骤S32和图18中的任务分配确定流程的步骤S65。
将步骤S32改成如下:
任务管理部分11’参考任务信息表24’,并且根据由(OS)调度器所请求的任务的开始地址找到T#。如果已经寄存了该任务开始地址,任务管理部分11’采用该T#作为新任务的T#;如果没有寄存该任务开始地址,任务管理部分11’在任务信息表24’中生成新的T#条目,并且将开始地址项中的开始地址寄存为该任务的T#。任务管理部分11’将对应于内核A和D(本例中,是A和D)的内核类型的C#寄存到由该T#所指示的条目的“将要运行”项中。
将步骤65改成如下:
反映内核状态的任务得分表的任务是可以基于内核类型分配使能/禁止表的内核类型和任务信息表24’来生成的表,该表是当前不能被分配为0的内核的内核类型得分值的屏蔽表。基于任务信息表24’,如果可以根据内核类型分配使能/禁止信息的内核类型来分配内核类型,则得分值保持不变;如果不能分配该内核类型,则将得分重写为0,从而生成反映内核状态的任务得分表的任务。对于在任务信息表24’中没有寄存得分的任务,当参考任务信息表24’时,仅将尚未执行(列在“将要运行”项中)的大内核设置为得分10,并且把其它设置为0,并且随后执行上述屏蔽处理,以便设置每种内核类型的得分。由于这种改变,从反映内核状态的任务得分表的任务中排除了“其它”条目,并且改为如图27中所示,提供任务信息表中所包括的所有T#的条目。
根据上述第二实例,还可以将发明应用到不存在绝对内核A的处理器单元1。还有可能通过在不存在绝对内核A的处理器单元中的执行最小次数,来对于处理器单元中的任务和所有内核确定得分。
在实例描述中,PM单元将PM信息与任务终止通知一起发送,但是该PM单元即使在该任务没有终止的情况下也可以在一个时间将PM信息与TID一起发送,并且还可以在步骤S24、S24’仅独立地执行得分计算处理,并且在步骤S25、S25’更新任务信息表24、24’的处理。然而,在此情况下,没有更新该任务的执行时间的执行时间项,或者将其更新为可以寄存的最大值。
在实例描述中,尽管PM单元对关于从执行开始到任务终止的任务的执行状态进行收集,在任务执行终止之前将所收集的PM信息与TID一起发送到调度器辅助部分6、6’的功能变得有必要。在此情况下,作为传输触发器,可以使用定时器在给定的时间间隔执行传输处理,在PM信息的一个数据超过所建立的门限值的情况下执行传输处理,等等。此外,可以应用用调度辅助部分6、6’来主动请求PM单元发送所收集的PM信息等等的方法。
在实例描述中,每个处理器内核5可以执行实现为相同的ISA的目标代码(用二进制数操作代码集的指令格式来表示),但是如果每个处理器内核5仅能执行部分实现为不同ISA类型的目标代码,也可以应用本发明。在此情况下,例如,可以提供对应于可以在每个ISA中执行的任务的目标代码,当确定了被分配了该任务的处理器内核部分5时,可以将用于存储与处理器内核部分5的类型对应的目标代码的地址发送到处理器内核部分5,该处理器内核部分5然后从该地址获得目标代码。可以采用另一种方法,动态地执行二进制转化,从而生成可以在被分配了该任务的内核中执行的目标代码,等等。
在实例描述中,每个处理器内核5可以执行实现为相同ISA的目标代码,但是内核B和内核C中的每一个可以仅执行实现为内核A的ISA的目标代码的一部分。
在此情况下,可执行的目标代码是受限的,并且从而对内核B、C的任务分配当然也是受限的。
在实例描述中,将调度器辅助部分6、6’实现为硬件,但是可以将一些或者全部功能模块实现为软件。在此情况下,当仅可以将一些功能模块实现为软件时,就变得有必要允许从执行该软件的处理器内核单元读出和写入实例中所指示的表。
在上述实例中,对于OS和应用软件,可以直接读出和写入任务信息表24、24’,从而例如还可以实现以下功能:在处理器单元1断电之前在磁盘单元3上保存任务信息表24、24’,随后当处理器单元1通电时,将该保存的任务信息表24、24’寄存在调度辅助部分6、6’中的任务信息表24、24’中。此外,每个应用软件具有所提供的任务信息表24、24’,并且在执行之前,将任务信息表24、24’寄存在调度器辅助部分6、6’的任务信息表24、24’中,使得还可以实现高效率处理,而不用从应用软件的初始执行中测量任务特性。
为了说明和描述的目的而给出了前述实施例的描述。并不旨在详尽描述,或者把本发明限制在所公开的精确形式,并且根据以上教义可以做出或者根据发明实践可能需要修改或者变体。选择并描述了该实施例,以便解释本发明的原理及其实际应用程序,从而使得本领域的技术人员可以通过各种实施例,并且通过适于特殊使用考虑的各种修改来使用本发明。本发明的保护范围仅由所附权利要求及其等价物来定义。
Claims (16)
1.一种多处理器系统,包括:
多处理器内核,其包括:
第一处理器内核,其具有:第一处理机制,用于改进所述第一处理器内核中的数据处理的处理性能;以及性能监视器,用于收集在所述数据处理中正在使用的或者已使用的硬件资源的使用信息;
第二处理器内核,其具有:与所述第一处理机制采用相同处理系统并且在改进性能上次于所述第一处理机制的第二处理机制;以及
调度器,当执行包括多个任务的应用软件并且所述多个任务包括彼此相同的任务时,所述调度器用于:
确定将要执行的任务是否以前被执行过;
当确定所述任务以前未被执行过时,将所述任务提供给所述第一处理器内核;
当确定所述任务以前被执行过时,通过参考当以前执行所述任务时所收集的使用信息,从所述处理器内核中选择一个处理器内核;以及
将所述任务提供给所选择的处理器内核。
2.如权利要求1所述的多处理器系统,其中,将所述第二处理器内核配置为能够执行所述第一处理器内核可执行的指令集。
3.如权利要求2所述的多处理器系统,其中,将所述第二处理器内核配置为能够执行所述第一处理器内核可执行的指令集的至少一部分。
4.如权利要求1所述的多处理器系统,其中,将所述第一处理器内核配置为能够执行第一指令集,以及
其中,将所述第二处理器内核配置为能够执行与所述第一指令集不同的第二指令集。
5.如权利要求1所述的多处理器系统,其中,将所述调度器配置为能够将从所述性能监视器输入的所述使用信息输出到外部设备,并且能够从所述外部设备接收所述使用信息。
6.一种多处理器系统,包括:
多处理器内核,其包括
第一处理器内核,其具有:多个第一处理机制,用于改进所述第一处理器内核中的数据处理的处理性能,所述多个第一处理机制彼此不同;以及性能监视器,用于收集所述数据处理中正在使用的或者已使用的硬件资源的使用信息;以及
第二处理器内核,将其配置为具有比所述第一处理器内核中的所有处理机制所提供的处理性能更低的处理性能,所述第二处理器内核具有至少一个第二处理机制,每个所述第二处理机制具有与所述第一处理器内核中所提供的各个第一处理机制相等或更低的改进性能;以及
调度器,当执行包括多个任务的应用软件并且所述多个任务包括彼此相同的任务时,所述调度器用于:
确定将要执行的任务是否以前被执行过;
当确定所述任务以前未被执行过时,将所述任务提供给所述第一处理器内核;
当确定所述任务以前被执行过时,通过参考当以前执行所述任务时所收集的使用信息,从所述处理器内核中选择一个处理器内核;以及
将所述任务提供给所选择的处理器内核。
7.如权利要求6所述的多处理器系统,其中,所述多处理器内核进一步包括第三处理器内核,将其配置为具有比所述第一处理器内核中的所有处理机制所提供的处理性能更低的处理性能,所述第三处理器内核具有至少一个第三处理机制,每个所述第三处理机制具有与所述第一处理器内核中所提供的各个处理机制相等或更低的改进性能。
8.如权利要求6所述的多处理器系统,其中,将所述第二处理器内核配置为能够执行所述第一处理器内核可执行的指令集。
9.如权利要求8所述的多处理器系统,其中,将所述第二处理器内核配置为能够执行所述第一处理器内核可执行的指令集的至少一部分。
10.如权利要求6所述的多处理器系统,其中,将所述第一处理器内核配置为能够执行第一指令集,以及
其中,将所述第二处理器内核配置为能够执行与所述第一指令集不同的第二指令集。
11.如权利要求6所述的多处理器系统,其中,将所述调度器配置为能够将从所述性能监视器输入的所述使用信息输出到外部设备,并且能够从所述外部设备接收所述使用信息。
12.一种多处理器系统,包括:
多处理器内核,其包括:
第一处理器内核,其具有:第一和第二处理机制,用于改进数据处理的处理性能,所述第一和第二处理机制彼此不同;以及第一性能监视器,用于收集所述数据处理中正在使用的或者已使用的硬件资源的使用信息;
第二处理器内核,其具有:第三和第四处理机制,用于改进数据处理的处理性能,所述第三和第四处理机制彼此不同并且与所述第一和第二处理机制不同;以及第二性能监视器,用于收集所述数据处理中正在使用的或者已使用的硬件资源的使用信息;以及
第三处理器内核,其具有所述第一和第三处理机制;以及调度器,当执行包括多个任务的应用软件并且所述多个任务包括彼此相同的任务时,所述调度器用于:
确定将要执行的任务是否以前被执行过;
当确定所述任务以前未被执行过时,将所述任务提供给所述第一处理器内核和所述第二处理器内核之一;
当确定所述任务以前被执行过时,通过参考当以前执行所述任务时所收集的使用信息,从所述处理器内核中选择一个处理器内核;以及
将所述任务提供给所选择的处理器内核。
13.如权利要求12所述的多处理器系统,其中,将所述第二和所述第三处理器内核配置为能够执行所述第一处理器内核可执行的指令集。
14.如权利要求13所述的多处理器系统,其中,将所述第二和所述第三处理器内核配置为能够执行所述第一处理器内核可执行的指令集的至少一部分。
15.如权利要求12所述的多处理器系统,其中,将所述第一处理器内核配置为能够执行第一指令集,以及
其中,将所述第二处理器内核配置为能够执行与所述第一指令集不同的第二指令集。
16.如权利要求12所述的多处理器系统,其中,将所述调度器配置为能够将从所述性能监视器输入的所述使用信息输出到外部设备,并且能够从所述外部设备接收所述使用信息。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP263303/2006 | 2006-09-27 | ||
JP2006263303A JP2008084009A (ja) | 2006-09-27 | 2006-09-27 | マルチプロセッサシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101154169A true CN101154169A (zh) | 2008-04-02 |
CN100557570C CN100557570C (zh) | 2009-11-04 |
Family
ID=39167825
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2007101618904A Expired - Fee Related CN100557570C (zh) | 2006-09-27 | 2007-09-27 | 多处理器系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20080077928A1 (zh) |
EP (1) | EP1916601A3 (zh) |
JP (1) | JP2008084009A (zh) |
CN (1) | CN100557570C (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010060289A1 (zh) * | 2008-11-03 | 2010-06-03 | 华为技术有限公司 | 一种多核处理器的任务分配方法、系统及设备 |
CN102591703A (zh) * | 2011-01-10 | 2012-07-18 | 中兴通讯股份有限公司 | 操作系统的任务调度方法、装置及计算机 |
CN104850209A (zh) * | 2009-12-03 | 2015-08-19 | 英特尔公司 | 用于提高事件处理的涡轮加速性能的方法和装置 |
CN105474176A (zh) * | 2013-08-06 | 2016-04-06 | 微软技术许可有限责任公司 | 分配执行具有可配置复杂度的多媒体数据处理组件的处理器的资源 |
CN106980492A (zh) * | 2016-01-15 | 2017-07-25 | 英特尔公司 | 用于确定处理器核上的工作布置的系统、方法和设备 |
CN107634916A (zh) * | 2016-07-19 | 2018-01-26 | 大唐移动通信设备有限公司 | 一种数据通信方法和装置 |
CN107885585A (zh) * | 2016-09-30 | 2018-04-06 | 罗伯特·博世有限公司 | 一种在多核电子控制单元中的动态任务调度器 |
CN107918557A (zh) * | 2016-10-05 | 2018-04-17 | 联发科技股份有限公司 | 一种运行多核系统的装置和方法及多核系统 |
CN108713190A (zh) * | 2016-03-31 | 2018-10-26 | 英特尔公司 | 用于加速安全存储能力的技术 |
CN110908797A (zh) * | 2019-11-07 | 2020-03-24 | 浪潮电子信息产业股份有限公司 | 调用请求数据处理方法、装置、设备、存储介质及系统 |
WO2020073938A1 (zh) * | 2018-10-10 | 2020-04-16 | 上海寒武纪信息科技有限公司 | 任务调度器、任务处理系统及任务处理方法 |
Families Citing this family (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080270653A1 (en) * | 2007-04-26 | 2008-10-30 | Balle Susanne M | Intelligent resource management in multiprocessor computer systems |
US20090165004A1 (en) * | 2007-12-21 | 2009-06-25 | Jaideep Moses | Resource-aware application scheduling |
US8473956B2 (en) * | 2008-01-15 | 2013-06-25 | Microsoft Corporation | Priority based scheduling system for server |
US8615647B2 (en) | 2008-02-29 | 2013-12-24 | Intel Corporation | Migrating execution of thread between cores of different instruction set architecture in multi-core processor and transitioning each core to respective on / off power state |
US8141084B2 (en) * | 2008-04-07 | 2012-03-20 | International Business Machines Corporation | Managing preemption in a parallel computing system |
US9417914B2 (en) | 2008-06-02 | 2016-08-16 | Microsoft Technology Licensing, Llc | Regaining control of a processing resource that executes an external execution context |
JP5439753B2 (ja) * | 2008-06-20 | 2014-03-12 | 富士ゼロックス株式会社 | 粒子挙動解析装置 |
JP4934113B2 (ja) * | 2008-08-01 | 2012-05-16 | 株式会社オートネットワーク技術研究所 | 制御装置及びコンピュータプログラム |
JP4691153B2 (ja) | 2008-12-10 | 2011-06-01 | 富士通株式会社 | マルチコアプロセッサ,制御方法および情報処理装置 |
US8495342B2 (en) | 2008-12-16 | 2013-07-23 | International Business Machines Corporation | Configuring plural cores to perform an instruction having a multi-core characteristic |
GB2466984B (en) * | 2009-01-16 | 2011-07-27 | Imagination Tech Ltd | Multi-threaded data processing system |
US8949582B2 (en) | 2009-04-27 | 2015-02-03 | Lsi Corporation | Changing a flow identifier of a packet in a multi-thread, multi-flow network processor |
US9461930B2 (en) | 2009-04-27 | 2016-10-04 | Intel Corporation | Modifying data streams without reordering in a multi-thread, multi-flow network processor |
US8255644B2 (en) * | 2009-05-18 | 2012-08-28 | Lsi Corporation | Network communications processor architecture with memory load balancing |
US9152564B2 (en) | 2010-05-18 | 2015-10-06 | Intel Corporation | Early cache eviction in a multi-flow network processor architecture |
US9444757B2 (en) | 2009-04-27 | 2016-09-13 | Intel Corporation | Dynamic configuration of processing modules in a network communications processor architecture |
US9727508B2 (en) | 2009-04-27 | 2017-08-08 | Intel Corporation | Address learning and aging for network bridging in a network processor |
US8873550B2 (en) | 2010-05-18 | 2014-10-28 | Lsi Corporation | Task queuing in a multi-flow network processor architecture |
US8874878B2 (en) | 2010-05-18 | 2014-10-28 | Lsi Corporation | Thread synchronization in a multi-thread, multi-flow network communications processor architecture |
US8910168B2 (en) | 2009-04-27 | 2014-12-09 | Lsi Corporation | Task backpressure and deletion in a multi-flow network processor architecture |
US8949578B2 (en) | 2009-04-27 | 2015-02-03 | Lsi Corporation | Sharing of internal pipeline resources of a network processor with external devices |
KR101651871B1 (ko) * | 2009-12-28 | 2016-09-09 | 삼성전자주식회사 | 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치 |
KR101640848B1 (ko) * | 2009-12-28 | 2016-07-29 | 삼성전자주식회사 | 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치 |
WO2011118012A1 (ja) * | 2010-03-25 | 2011-09-29 | 富士通株式会社 | マルチコアプロセッサシステム、制御プログラム、および制御方法 |
US8949431B2 (en) * | 2011-08-24 | 2015-02-03 | Radware, Ltd. | Method for live migration of virtual machines |
US8688883B2 (en) * | 2011-09-08 | 2014-04-01 | Intel Corporation | Increasing turbo mode residency of a processor |
US8887160B2 (en) * | 2011-11-21 | 2014-11-11 | Hewlett-Packard Development Company, L.P. | Mapping tasks to execution threads |
WO2013094156A1 (ja) * | 2011-12-19 | 2013-06-27 | 日本電気株式会社 | タスク配置最適化システム、タスク配置最適化方法、及びタスク配置最適化プログラム |
KR20130115574A (ko) * | 2012-04-12 | 2013-10-22 | 삼성전자주식회사 | 단말기에서 태스크 스케줄링을 수행하는 방법 및 장치 |
US9619282B2 (en) | 2012-08-21 | 2017-04-11 | Lenovo (Singapore) Pte. Ltd. | Task scheduling in big and little cores |
US8984200B2 (en) | 2012-08-21 | 2015-03-17 | Lenovo (Singapore) Pte. Ltd. | Task scheduling in big and little cores |
US9979609B2 (en) | 2012-08-22 | 2018-05-22 | Empire Technology Development Llc | Cloud process management |
WO2014104912A1 (en) * | 2012-12-26 | 2014-07-03 | Huawei Technologies Co., Ltd | Processing method for a multicore processor and milticore processor |
CN103150217B (zh) * | 2013-03-27 | 2016-08-10 | 无锡江南计算技术研究所 | 多核处理器操作系统设计方法 |
US9886072B1 (en) * | 2013-06-19 | 2018-02-06 | Altera Corporation | Network processor FPGA (npFPGA): multi-die FPGA chip for scalable multi-gigabit network processing |
US9612879B2 (en) * | 2013-08-01 | 2017-04-04 | Texas Instruments Incorporated | System constraints-aware scheduler for heterogeneous computing architecture |
WO2015050474A1 (en) | 2013-10-03 | 2015-04-09 | Huawei Technologies Co., Ltd | Method and system for assigning a computational block of a software program to cores of a multi-processor system |
JP6252140B2 (ja) | 2013-11-29 | 2017-12-27 | 富士通株式会社 | タスク割り付けプログラム及びタスク割り付け方法 |
CN104915224B (zh) * | 2015-04-24 | 2019-01-04 | 青岛海信电器股份有限公司 | 一种关联应用程序的处理方法及装置 |
CN105938440A (zh) * | 2015-12-28 | 2016-09-14 | 乐视移动智能信息技术(北京)有限公司 | 一种移动终端图片显示方法及系统 |
US10579350B2 (en) * | 2016-02-18 | 2020-03-03 | International Business Machines Corporation | Heterogeneous computer system optimization |
US10552205B2 (en) * | 2016-04-02 | 2020-02-04 | Intel Corporation | Work conserving, load balancing, and scheduling |
JP6965798B2 (ja) * | 2018-03-12 | 2021-11-10 | オムロン株式会社 | 制御システムおよび制御方法 |
JP2019179415A (ja) * | 2018-03-30 | 2019-10-17 | 株式会社デンソー | マルチコアシステム |
JP6842447B2 (ja) * | 2018-09-12 | 2021-03-17 | 株式会社日立製作所 | リソース割当ての最適化を支援するシステム及び方法 |
CN110058931B (zh) * | 2019-04-19 | 2022-03-22 | 上海兆芯集成电路有限公司 | 用以任务调度的处理系统及其加速方法 |
US11269651B2 (en) * | 2019-09-10 | 2022-03-08 | International Business Machines Corporation | Reusing adjacent SIMD unit for fast wide result generation |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4638427A (en) * | 1984-04-16 | 1987-01-20 | International Business Machines Corporation | Performance evaluation for an asymmetric multiprocessor system |
US5031089A (en) * | 1988-12-30 | 1991-07-09 | United States Of America As Represented By The Administrator, National Aeronautics And Space Administration | Dynamic resource allocation scheme for distributed heterogeneous computer systems |
US5437032A (en) * | 1993-11-04 | 1995-07-25 | International Business Machines Corporation | Task scheduler for a miltiprocessor system |
JP3658420B2 (ja) * | 1994-04-14 | 2005-06-08 | 株式会社日立製作所 | 分散処理システム |
JP3881739B2 (ja) * | 1996-02-14 | 2007-02-14 | 株式会社日立製作所 | 計算機システムの性能モニタリング方法およびシステム |
US5872972A (en) * | 1996-07-05 | 1999-02-16 | Ncr Corporation | Method for load balancing a per processor affinity scheduler wherein processes are strictly affinitized to processors and the migration of a process from an affinitized processor to another available processor is limited |
US6513057B1 (en) * | 1996-10-28 | 2003-01-28 | Unisys Corporation | Heterogeneous symmetric multi-processing system |
US6269390B1 (en) * | 1996-12-17 | 2001-07-31 | Ncr Corporation | Affinity scheduling of data within multi-processor computer systems |
US6289369B1 (en) * | 1998-08-25 | 2001-09-11 | International Business Machines Corporation | Affinity, locality, and load balancing in scheduling user program-level threads for execution by a computer system |
US6631474B1 (en) * | 1999-12-31 | 2003-10-07 | Intel Corporation | System to coordinate switching between first and second processors and to coordinate cache coherency between first and second processors during switching |
JP2003006175A (ja) * | 2001-06-26 | 2003-01-10 | Hitachi Ltd | プロセス実行時のプログラム動作特性に基づくプロセススケジューリング方法及びこれを用いたプログラム及びデータ処理装置 |
US6804632B2 (en) * | 2001-12-06 | 2004-10-12 | Intel Corporation | Distribution of processing activity across processing hardware based on power consumption considerations |
US7100060B2 (en) * | 2002-06-26 | 2006-08-29 | Intel Corporation | Techniques for utilization of asymmetric secondary processing resources |
JP2004171234A (ja) * | 2002-11-19 | 2004-06-17 | Toshiba Corp | マルチプロセッサシステムにおけるタスク割り付け方法、タスク割り付けプログラム及びマルチプロセッサシステム |
US7093147B2 (en) * | 2003-04-25 | 2006-08-15 | Hewlett-Packard Development Company, L.P. | Dynamically selecting processor cores for overall power efficiency |
US7996839B2 (en) * | 2003-07-16 | 2011-08-09 | Hewlett-Packard Development Company, L.P. | Heterogeneous processor core systems for improved throughput |
US20050132239A1 (en) * | 2003-12-16 | 2005-06-16 | Athas William C. | Almost-symmetric multiprocessor that supports high-performance and energy-efficient execution |
US8028292B2 (en) * | 2004-02-20 | 2011-09-27 | Sony Computer Entertainment Inc. | Processor task migration over a network in a multi-processor system |
JP3914230B2 (ja) * | 2004-11-04 | 2007-05-16 | 株式会社東芝 | プロセッサシステム及びその制御方法 |
-
2006
- 2006-09-27 JP JP2006263303A patent/JP2008084009A/ja active Pending
-
2007
- 2007-09-05 EP EP07253516A patent/EP1916601A3/en not_active Withdrawn
- 2007-09-17 US US11/898,881 patent/US20080077928A1/en not_active Abandoned
- 2007-09-27 CN CNB2007101618904A patent/CN100557570C/zh not_active Expired - Fee Related
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8763002B2 (en) | 2008-11-03 | 2014-06-24 | Huawei Technologies Co., Ltd. | Method, system, and apparatus for task allocation of multi-core processor |
WO2010060289A1 (zh) * | 2008-11-03 | 2010-06-03 | 华为技术有限公司 | 一种多核处理器的任务分配方法、系统及设备 |
CN104850209A (zh) * | 2009-12-03 | 2015-08-19 | 英特尔公司 | 用于提高事件处理的涡轮加速性能的方法和装置 |
CN104850209B (zh) * | 2009-12-03 | 2018-03-13 | 英特尔公司 | 用于提高事件处理的涡轮加速性能的方法和装置 |
CN102591703A (zh) * | 2011-01-10 | 2012-07-18 | 中兴通讯股份有限公司 | 操作系统的任务调度方法、装置及计算机 |
CN105474176A (zh) * | 2013-08-06 | 2016-04-06 | 微软技术许可有限责任公司 | 分配执行具有可配置复杂度的多媒体数据处理组件的处理器的资源 |
CN106980492B (zh) * | 2016-01-15 | 2019-07-26 | 英特尔公司 | 用于计算的装置、系统、方法、机器可读存储介质和设备 |
CN106980492A (zh) * | 2016-01-15 | 2017-07-25 | 英特尔公司 | 用于确定处理器核上的工作布置的系统、方法和设备 |
CN108713190B (zh) * | 2016-03-31 | 2024-03-01 | 英特尔公司 | 用于加速安全存储能力的技术 |
CN108713190A (zh) * | 2016-03-31 | 2018-10-26 | 英特尔公司 | 用于加速安全存储能力的技术 |
CN107634916A (zh) * | 2016-07-19 | 2018-01-26 | 大唐移动通信设备有限公司 | 一种数据通信方法和装置 |
CN107885585A (zh) * | 2016-09-30 | 2018-04-06 | 罗伯特·博世有限公司 | 一种在多核电子控制单元中的动态任务调度器 |
CN107918557A (zh) * | 2016-10-05 | 2018-04-17 | 联发科技股份有限公司 | 一种运行多核系统的装置和方法及多核系统 |
WO2020073938A1 (zh) * | 2018-10-10 | 2020-04-16 | 上海寒武纪信息科技有限公司 | 任务调度器、任务处理系统及任务处理方法 |
CN110908797A (zh) * | 2019-11-07 | 2020-03-24 | 浪潮电子信息产业股份有限公司 | 调用请求数据处理方法、装置、设备、存储介质及系统 |
CN110908797B (zh) * | 2019-11-07 | 2023-09-15 | 浪潮电子信息产业股份有限公司 | 调用请求数据处理方法、装置、设备、存储介质及系统 |
Also Published As
Publication number | Publication date |
---|---|
EP1916601A3 (en) | 2009-01-21 |
US20080077928A1 (en) | 2008-03-27 |
JP2008084009A (ja) | 2008-04-10 |
EP1916601A2 (en) | 2008-04-30 |
CN100557570C (zh) | 2009-11-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100557570C (zh) | 多处理器系统 | |
US9281026B2 (en) | Parallel processing computer systems with reduced power consumption and methods for providing the same | |
Agarwal | Performance tradeoffs in multithreaded processors | |
US6266745B1 (en) | Method and system in a distributed shared-memory data processing system for determining utilization of nodes by each executed thread | |
US20060037017A1 (en) | System, apparatus and method of reducing adverse performance impact due to migration of processes from one CPU to another | |
CN100492282C (zh) | 处理系统、通信系统及在处理系统中处理作业的方法 | |
US20050188177A1 (en) | Method and apparatus for real-time multithreading | |
US20080155197A1 (en) | Locality optimization in multiprocessor systems | |
Jeffrey et al. | Unlocking ordered parallelism with the Swarm architecture | |
Racunas et al. | Partitioned first-level cache design for clustered microarchitectures | |
EP1131704B1 (en) | Processing system scheduling | |
Montesano et al. | Spatial/temporal locality-based load-sharing in speculative discrete event simulation on multi-core machines | |
US20230367604A1 (en) | Method of interleaved processing on a general-purpose computing core | |
Shrivastava et al. | Supporting transaction predictability in replicated DRTDBS | |
Aggarwal et al. | Instruction replication for reducing delays due to inter-PE communication latency | |
Jesshope et al. | Evaluating CMPs and their memory architecture | |
Subramanian | Architectural techniques to unlock ordered and nested speculative parallelism. | |
Xiang et al. | MSpec: A design pattern for concurrent data structures | |
El-Moursy et al. | Adaptive TB‐LMI: An efficient memory controller and scheduler design | |
Golla et al. | A dynamic scheduling logic for exploiting multiple functional units in single chip multithreaded architectures | |
El-Kharashi et al. | Multithreaded processors: The upcoming generation for multimedia chips | |
Kimbrel | Interleaved prefetching | |
Lai et al. | A pipeline bubbles reduction technique for the Monsoon dataflow architecture | |
Theobald | Definition of the EARTH model | |
Agarwal | PERFORMANCE TRADEOFFS IN MULTITHREADED |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20091104 Termination date: 20120927 |