CN100573458C - 进程控制装置以及进程控制方法 - Google Patents
进程控制装置以及进程控制方法 Download PDFInfo
- Publication number
- CN100573458C CN100573458C CNB200580051287XA CN200580051287A CN100573458C CN 100573458 C CN100573458 C CN 100573458C CN B200580051287X A CNB200580051287X A CN B200580051287XA CN 200580051287 A CN200580051287 A CN 200580051287A CN 100573458 C CN100573458 C CN 100573458C
- Authority
- CN
- China
- Prior art keywords
- thread
- mentioned
- processor device
- cpu
- cache memory
- 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.)
- Expired - Fee Related
Links
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/505—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 the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- 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
-
- 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/5033—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 data affinity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
以能够高效率地使用高速缓存的方式向CPU分配线程。在执行线程(20)时,存储执行开始时刻以及所运行的CPU(10a)的CPU编号,在给下一次要运行的CPU(10a~10d)分配中断中的线程(20)时,计算从执行开始时刻起的经过时间t,对于CPU(10a~10d)所使用的高速缓存,若其次数越高就设定越大的时间参数(T1、T2、T3)(T1<T2<T3),并且,在经过时间t小于n(n为大于等于2的自然数)次高速缓存中所设定的时间参数且大于等于(n-1)次高速缓存中所设定的时间参数的情况下,在与上一次所运行的CPU(10a)一起共用n次高速缓存的CPU(10a~10d)中,给负担最小的CPU分配线程(20)。
Description
技术领域
本发明涉及一种进程控制(schedule control)装置以及进程控制方法,尤其是涉及使计算机发挥给多个处理器装置分配所执行的线程(thread)的处理的功能的进程控制装置、以及给多个处理器装置分配所执行的线程的进程控制方法。
背景技术
在对应于由多个CPU(Central Processing Unit:中央处理器)来执行程序的多处理器系统(mult-processor system)的OS(Operating System:操作系统)中,将所执行的程序分割为多个执行单位(下面,称之为线程),并通过OS的调度程序(Scheduler)来给各个CPU分配线程,从而执行程序。由此,通过多个CPU来同时处理一个程序,从而能够节约程序的处理时间,并能够分散CPU所承受的负担。
针对每个CPU,调度程序从待执行的线程所连接的等待队列(下面,称之为就绪队列(run queue))选出优先级最高的线程,并使选出该线程的就绪队列所对应的CPU执行该线程。另外,针对每个线程记录执行开始时刻。
图7是示意性地示出了以往通过调度程序来分配线程的情形的图,(A)示出了执行某一线程时在高速缓冲存储器(cache memory)中的数据,(B)是示出了经过一定时间之后重新分配该线程时在高速缓冲存储器中的数据的情形的图。
在此,示出了以下计算机的局部结构:在该计算机中,在CPU500a、500b、500c、500d上分别连接有一次高速缓冲存储器(下面,称之为一次高速缓存)501a、501b、501c、501d,而且,CPU500a和500b共用二次高速缓冲存储器(下面,称之为二次高速缓存)502a,CPU500c和500d共用二次高速缓存502b。此外,阴影部分表示数据。
在图7(A)中,CPU500a执行线程510。此时,在一次高速缓存501a以及二次高速缓存502a中,存储有用于线程510中的数据,该数据是例如从未图示的主存储器中读出的。此外,线程511、512、513连接至就绪队列上,处于待执行的状态。
然而,在多处理器系统中与单处理器系统的情形不同,线程并非始终通过同一个CPU来执行,而例如在一定时间中断,并使该CPU执行另外的线程,从而实现多任务(Multi-Task)。而且,例如在重新启动所中断的线程510时,如图7(B)所示,调度程序通过如下的方法选择具有连接该线程510的就绪队列的CPU。
(1)若从线程510在上一次取得了执行权的时刻(执行开始时刻)开始到这次连接到就绪队列的时刻为止的经过时间在某一定时间以内,则选择上一次执行了线程510的CPU500a。
(2)若不在某一定时间内,则在所有的CPU500a~500d中选择负担最小的CPU。
这是因为,若在某一定时间以内,则如图7B所示,在上一次执行了线程510的CPU500a所使用的高速缓存中,可能会还残留有上一次线程510使用过的数据。通过该控制,能够提高高速缓存命中率(cache hit ratio),从而能够提高性能。此外,根据连接至就绪队列的线程514、515、516的数目及其优先级,决定各CPU的负担。
另外,作为在多处理器系统中用于减少高速缓存的未命中的技术公知有如下技术:对各线程(任务)在各处理器的高速缓存中所确保的区块(Block)数目进行计数,并将其计数结果存储在多个处理器所共用的存储器中,并且在重新启动线程时,基于该计数结果,使在高速缓存中具有更多区块数目的处理器执行该线程(例如,参照专利文献1)。
另外,作为用于减少二次高速缓存的未命中的技术还具有如下技术:在连接有多个CPU组的多处理器系统中,使处理始终在特定的CPU组执行,其中,上述CPU组共用二次高速缓存(例如,参照专利文献2)。
专利文献1:JP特开平8-30562号公报(第0020~0039段,图1~图5)
专利文献2:JP特开平10-143382号公报
发明内容
发明所要解决的问题
然而,以往的进程控制方法中具有如下的问题,而且在上述以往的进程控制方法中,以从上一次的执行开始时刻所经过的一定时间为基准,向CPU分配所中断的线程。
如图7(B)所示,根据经过时间,有时会有这样的情形,即,虽然在一次高速缓存501a中没有残留有上一次执行线程510时所存储的数据,但在二次高速缓存502a中存储有该数据。另外,也会有这样的情形,即,虽然在二次高速缓存502a中未残留有数据,但在未图示的三次高速缓存中残留有数据。也就是说,越是次数高的高速缓存,即使其经过时间更长,残留有数据的可能性也越高。然而,在以往的进程控制中,并未考虑这样的情形,而在经过时间不在某一定时间内的情况下,从所有的CPU中选择负担最小的CPU,因此可能会浪费残留在高速缓存中的数据,从而存在无法高效率地使用高速缓存的问题。
本发明是鉴于这样的问题而提出的,其目的在于,提供一种将线程以能够有效地使用高速缓存的方式分配给CPU的进程控制装置。
另外,本发明的其他目的在于,提供一种将线程以能够高效率使用高速缓存的方式分配给CPU的进程控制方法。
用于解决的问题的方法
为了解决上述问题,本发明提供一种进程控制装置,给多个处理器装置分配所要执行的线程,其特征在于,如图1所示,具有:线程信息存储装置1,其在执行线程20时,存储执行开始时刻以及所运行的处理器装置(在图1中例如为CPU10a)的识别信息(CPU编号);经过时间计算装置2,其在给下一次要运行的处理器装置(CPU10a、10b、10c、10d)分配中断中的线程20时,计算从执行开始时刻起的经过时间t;线程分配装置3,其对于处理器装置(CPU10a、10b、10c、10d)所使用的高速缓冲存储器(一次高速缓存11a、11b、11c、11d、二次高速缓存12a、12b、三次高速缓存13),若其次数越高就设定越大的时间参数T1、T2、T3(T1<T2<T3),而且,在经过时间t小对n(n为大于等于2的自然数)次高速缓冲存储器所设定的时间参数且大于等于对(n-1)次高速缓冲存储器所设定的时间参数的情况下,在上一次所运行的处理器装置(CPU10a)以及与上一次所运行的处理器装置(CPU10a)一起共用n次高速缓冲存储器的处理器装置中,给负担最小的处理器装置分配线程20。
若采用上述结构,则在执行线程20时,线程信息存储装置1存储执行开始时刻以及所运行的处理器装置(在图1中例如为CPU10a)的识别信息(CPU编号),在给下一次要运行的处理器装置(CPU10a、10b、10c、10d)分配中断中的线程20时,经过时间计算装置2计算从执行开始时刻起的经过时间t,线程分配装置3对于处理器装置(CPU10a、10b、10c、10d)所使用的高速缓冲存储器(一次高速缓存11a、11b、11c、11d、二次高速缓存12a、12b、三次高速缓存13),若其次数越高就设定越大的时间参数(T1<T2<T3),并且,在经过时间t小于对n(n为大于等于2的自然数)次高速缓冲存储器所设定的时间参数、且大于等于对(n-1)次高速缓冲存储器所设定的时间参数的情况下,在上一次所运行的处理器装置(CPU10a)以及与上一次所运行的处理器装置(CPU10a)一起共用n次高速缓冲存储器的处理器装置中,给负担最小的处理器装置分配线程20。
发明的效果
本发明在执行线程时,存储执行开始时刻以及所运行的处理器装置的识别信息,在给下一次要运行的处理器装置分配中断中的线程时,计算从执行开始时刻起的经过时间,并对于处理器装置所使用的高速缓存,若其次数越高就设定越大的时间参数,并且,在经过时间小于对n(n为大于等于2的自然数)次高速缓存所设定的时间参数、且大于等于对(n-1)次高速缓存所设定的时间参数的情况下,在上一次所运行的处理器装置以及与上一次所运行的处理器装置一起共用n次高速缓存的处理器装置中,给负担最小的处理器装置分配线程,因此,根据经过时间,能够选择使用着残留有上一次执行时所存储的数据的可能性高的高速缓存的处理器装置而作为中断中的线程的分配对象。由此,高速缓存的命中率变高,从而能够高效率地使用高速缓存。
另外,由于给共用高速缓存的处理器装置中负担最小的处理器装置进行分配的处理,因此,能够在分配中断中的线程的同时进行负担分散处理。由此,能够防止以下问题,即,由于分配线程后进行负担分散处理,因此存储在高速缓存中的线程数据被挤出,从而高速缓存命中率下降。
本发明的上述以及其他目的、特征以及优点,相信通过所附的附图以及相关的以下内容会变得更加明确,其中,上述所附的附图以及以下内容表示作为本发明例子的最佳实施方式。
附图说明
图1是说明用于分配多个CPU所执行的线程的进程控制的概略的图。
图2是执行本实施方式的进程控制的计算机的一例的硬件结构图。
图3是示出了硬件结构信息的图。
图4是示意性地示出了本实施方式的进程控制的OS功能的图。
图5是说明执行线程时的处理流程的流程图。
图6是用于说明将中断中的线程连接到CPU中的其中之一的就绪队列上的处理流程的图。
图7是示意性地示出了通过以往的调度程序分配线程的情形的图,其中,(A)示出了执行某一线程时在高速缓冲存储器中的数据,(B)是示出了经过了一定时间之后重新分配该线程时在高速缓冲存储器中的数据情形的图。
附图标记的说明
1线程信息存储装置
2经过时间计算装置
3线程分配装置
10a、10b、10c、10d CPU
11a、11b、11c、11d一次高速缓存
12a、12b二次高速缓存
13三高速缓存
20、21、22、23、24、25、26线程
T1、T2、T3时间参数
t经过时间
具体实施方式
下面,参照附图,具体说明本发明的实施方式。
首先,说明一下本发明的实施方式的概略。
图1是用于说明进程控制的概略的图,该进程控制用于分配多个CPU所执行的线程。
此外,在此举例说明在以下计算机中的进程控制,在该计算机中,在多个CPU10a、10b、10c、10d上分别连接有一次高速缓存11a、11b、11c、11d,而且,CPU10a和10b共用二次高速缓存12a,而CPU10c和10d共用二次高速缓存12b,还有,CPU10a~10d共用三次高速缓存13。另外,示意性地示出了各CPU10a~10d所执行的线程20、21、22、23、24、25、26。
用于分配多个CPU10a~10d所执行的线程的进程控制是,通过线程信息存储装置1、经过时间计算装置2、线程分配装置3来执行的。
下面,说明一下各处理装置的功能。
在执行线程20~26的每一个时,线程信息存储装置1存储执行开始时刻以及所运行的CPU10a~10d的识别信息(下面,称之为CPU编号)。
在将中断中的线程(例如为线程20)分配给下一次执行该线程的CPU10a~10d时,经过时间计算装置2计算从存储在线程信息存储装置1中的执行开始时刻起的经过时间t。
线程分配装置3用于给CPU10a~10d分配线程20~26。此时,对于CPU10a~10d所使用的高速缓冲存储器(一次高速缓存11a、11b、11c、11d、二次高速缓存12a、12b、三次高速缓存13),以次数越高就设定越大的时间参数的方式设定时间参数T1、T2、T3(T1<T2<T3)。以基于残留有上一次执行中断中的线程时所使用的数据的可能性的时间,设定该时间参数。由于越是次数高的高速缓存容量越大,所以即使经过时间t长,残留有数据的可能性也会很高。因此,若次数越高,就设定越大的时间参数。具体而言,根据高速缓存的容量以及基准值(Benchmark)等来决定时间参数。而且,线程分配装置3的特征在于,在中断中的线程的经过时间t,小于设定在n次(n为大于等于2的自然数)高速缓存中的时间参数,而且大于等于设定在(n-1)次高速缓存中的时间参数的情况下,在上一次所运行的CPU、以及与上一次所运行的CPU一起共用n次高速缓存的CPU中,给负担最小的CPU分配中断中的线程。
下面,以将中断中的线程20重新分配给CPU10a~10d中的其中之一的情形为例,说明一下本实施方式的进程控制方法的概略。
在将中断中的线程20分配给CPU10a~10d中的其中之一时,经过时间计算装置2参照存储于线程信息存储装置1中的上一次执行线程20时的执行开始时刻,计算到当前时刻为止的经过时间t。线程分配装置3基于计算出的经过时间t,对线程20进行如下的分配。
首先,在经过时间t为t<T1的情况下,参照线程信息存储装置1所存储的CPU编号,选择上一次执行了线程20的CPU10a,重新分配线程20(连接至CPU10a的就绪队列)。
在T1≤t<T2的情况下,在上一次所运行的CPU10a、以及与CPU10a一起共用二次高速缓存12a的CPU10b中,给负担小的CPU分配线程20。在图1所示的情况下,CPU10a的就绪队列中存在三个线程21、22、23。另一方面,CPU10b的就绪队列中存在两个线程24、26。因此,线程分配装置3将线程20连接至负担小的CPU10b的就绪队列。
在T2≤t<T3的情况下,在上一次所运行的CPU10a、以及与CPU10a一起共用三次高速缓存13的CPU10b、10c、10d中,给负担最小的CPU分配线程20。在图1所示的情况下,CPU10c中不存在线程,而CPU10d中存在一个线程26,因此将线程20分配给CPU10c。
此外,在t≥T3的情况下,与以往同样,在所有的CPU10a、10b、10c、10d中,给负担最小的CPU分配线程20。在图1所示的情况下,被选择的是CPU10c,从而给CPU10c分配线程20。
若通过执行上述方法,则根据经过时间,能够选择使用着残留有上一次执行时所存储的数据的可能性高的高速缓存的CPU10a~10d来作为中断中的线程20的分配对象,因此高速缓存的命中率变高,从而能够有效地使用高速缓存。
另外,由于实行给共用高速缓存的CPU10a~10d中负担最小的CPU进行分配的处理,因此,能够在分配线程20的同时进行负担分散处理。由此,能够防止以下问题,即,由于分配线程后进行负担分散处理,因此存储在高速缓存中的线程数据被挤出,从而高速缓存命中率下降。
接着,具体说明一下实施方式。
图2是执行本实施方式的进程控制的计算机的一例的硬件结构图。
在此所示出的计算机30例如为UNIX(注册商标)的服务器。
计算机30由分别内置有一次高速缓存的8个CPU31a、31b、31c、31d、31e、31f、31g、31h、二次高速缓存32a、32b、32c、32d、三次高速缓存33a、33b、以及经由三次高速缓存33a、33b和系统总线34来连接的存储器35、I/O36等构成。
另外,二次高速缓存32a被CPU31a、31b共用,二次高速缓存32b被CPU31c、31d共用,二次高速缓存32c被CPU31e、31f共用,二次高速缓存32d被CPU31g、31h共用。进而,三次高速缓存33a被CPU31a、31b、31c、31d共用,三次高速缓存33b被CPU31e、31f、31g、31h共用。
通过如下的固件(firmware)来记述这种硬件结构信息。
图3是示出了硬件结构信息的图。
例如,针对CPU(cpu node),记述有各自的识别信息“id:~”,进而,按照高速缓存的次数记述该CPU所使用的高速缓存的识别信息。例如,图2中的CPU31a的识别信息被记述为“id=0”,内置于CPU31a中的一次高速缓存被记述为“level 1 cache id:0”,CPU31a所使用的二次高速缓存32a被记述为“level 2 cache id:0”,三次高速缓存33a被记述为“level 3 cache id:0”。另外,例如CPU31h的识别信息被记述为“id=7”,内置于CPU31h中的一次高速缓存的识别信息被记述为“level 1 cache id:7”,CPU31h所使用的二次高速缓存32d的识别信息被记述为“level 2 cache id:3”,三次高速缓存33b的识别信息被记述为“level 3 cache id:1”。另外,在硬件结构信息中还包括用于表示省略图示的存储器35以及I/O36等结构的记述。将这种硬件结构信息提供给OS。
图4是示意性地示出了本实施方式的进程控制的OS功能的图。
根据来自固件的硬件结构信息,生成CPU管理结构体40-1、40-2、40-3、...、40-8,这些CPU管理结构体表示图2中的CPU31a~31h的信息。通过线程管理结构体来示出线程41,并且存储该线程41的执行开始时刻“disp_time”和执行了该线程41的CPU编号“cpu”。通过调度程序42,将线程41分配给CPU31a~31h中的其中之一。
OS的调度程序42参照线程管理结构体,基于经过时间选择要分配中断中的线程的CPU。另外,如上所述那样,基于高速缓存的次数,设定时间参数T1、T2、T3。
通过具有这种功能的OS,在具有图2所示的硬件的计算机30上能够实现图1所示的各装置。
下面,利用图2、图3、图4,说明一下本实施方式的进程控制方法。
首先,说明一下执行线程时的处理。
图5是用于说明执行线程时的处理流程的流程图。
线程执行处理一开始,则调度程序42确认各CPU31a~31h的就绪队列,并确认等待中的线程41的存在。在存在线程41的情况下,进入到步骤S2的处理,而在不存在线程41的情况下,反复执行步骤S1的处理,直到线程41出现在就绪队列中为止(步骤S1)。
在就绪队列中存在有线程41的情况下,调度程序42从就绪队列中选取线程41,并将其设定为执行状态。下面,如图4所示,以连接在可由CPU管理结构体40-2来示出的CPU31b的就绪队列中的线程41a为例进行说明。如图4中的箭头A所示,从可由CPU管理结构体40-2示出的CPU31b的就绪队列中选取线程41a,从而使线程41a取得在CPU31b上的执行权(步骤S2)。
进而,向取得了执行权的线程41a的线程管理结构体中存储:作为执行开始时刻“disp_time”的当前时刻;要运行的CPU31b的CPU编号(例如为CPU31b的识别信息“id=1”)(步骤S3)。
然后,CPU31b执行取得了执行权的线程41a(步骤S4)。
这种线程41a处理一结束就清除,但在经由I/O36而等待来自外部设备的响应或等待另外线程获取中的专用资源的情况下,或者,在线程41a的处理超过了一定时间时等,可能会在处理结束之前中断(图4中的箭头B)。在此情况下,调度程序42一旦使线程41a处于中断状态,就将执行权赋予给位于CPU31b的就绪队列中的另外线程。在经由I/O36而接受到来自外部设备的响应时,或在另外线程获取中的专用资源被释放时,除此之外,在线程41a的处理超过了一定时间一旦将执行权转让给另外线程之后等,若要重新开始执行线程41,则进行重新给CPU31a~31h中的其中之一分配线程41a的处理。
图6是用于说明将中断中的线程连接到CPU中的其中之一的就绪队列上的处理流程的图。
此外,下面也利用图4中所示的线程41a来进行说明。
首先,调度程序42根据记录在中断中的线程41a的线程管理结构体中的执行开始时刻“disp_time”和当前时刻之差,计算经过时间t(步骤S5)。
然后,在经过时间t为t<T1的情况下,选择与上一次相同的CPU31b(步骤S6)。
在T1≤t<T2的情况下,从与上一次运行的CPU31b共用二次高速缓存32a的CPU31a、31b中选择负担最小的CPU。在图4的例子中,连接在可由CPU管理结构体40-1来示出的CPU31a的就绪队列上的线程41的数目,大于连接在可由CPU管理结构体40-2来示出的CPU31b的就绪队列上的线程41的数目,而且负担也大,因此选择CPU31b(步骤S7)。
在T2≤t<T3的情况下,从与上一次运行的CPU31b共用三次高速缓存33a的CPU31a、31b、31c、31d中选择负担最小的CPU。在图4的例子中,示出了选择可由CPU管理结构体40-3来示出的CPU31c的情形(步骤S8)。
在t≥T3的情况下,从所有CPU31a~31h中选择负担最小的CPU。在图4的例子中,示出了选择可由CPU管理结构体40-8来示出的CPU31h的情形(步骤S9)。
最后,调度程序42将线程41a连接至所选择的CPU的就绪队列上(步骤S10)。
如上所述,若采用本实施方式的进程控制方法,则根据经过时间,能够选择使用着残留有上一次执行时所存储的数据的可能性高的高速缓存的CPU而作为中断中的线程的分配对象,因此高速缓存的命中率变高,从而能够有高效地使用高速缓存。
另外,由于给共用高速缓存的CPU中负担最小的CPU进行分配的处理,因此,能够在分配中断中的线程的同时进行负担分散处理。由此,能够防止这样的问题,即,由于在分配线程后进行负担分散处理,存储在高速缓存中的线程数据被挤出,从而高速缓存命中率下降。
此外,如上所述那样,在上述处理内容可以通过计算机来实现。在该情况下,提供记述了计算机必备功能的处理内容的程序。通过在计算机上执行该程序,能够在计算机上实现上述处理功能。能够将记述了处理内容的程序存储在计算机可读取的记录介质中。作为计算机可读取的记录介质都包括磁记录装置、光盘、光磁记录介质、半导体存储器等。磁记录装置包括硬盘装置(HDD)、软盘(FD)、磁带等。光盘包括DVD(Digital Versatile Disc:数字通用光盘)、DVD-RAM、CD-ROM、CD-R(Recordable:一次写入)/RW(ReWritable:多次写入)等。光磁记录介质包括MO(Magneto-Optical disk:磁光盘)等。
在使程序流通的情况下,例如销售记录有该程序的DVD、CD-ROM等便携式记录介质。另外,也可以将程序存储在服务器的存储装置中,并通过网络将该程序从服务器传输到另外的计算机中。
执行程序的计算机例如将记录于便携式记录介质中的程序或者从服务器所接收的程序,存储在自身的存储装置中。然后,计算机从自身的存储装置中读取程序,并按照程序进行处理。此外,计算机也可以从便携式记录介质直接读取程序,并按照该程序进行处理。另外,计算机也可以每当从服务器接收到程序时,逐次按照所接收的程序来进行处理。
上面基于实施例说明本发明,但本发明并不限定于上述内容,而能够在后述技术方案的记载范围内进行各种各样的变形。例如,在上面举例说明了只具有三次以下高速缓存的计算机,但也同样适用于具有三次以上高速缓存的计算机中。
在上述内容中只示出了本发明的原理。进而,本领域的技术人员能够进行多种变形以及变更,因此本发明并不仅限定于在上面示出并说明的正确结构以及应用例,而能够将所对应的所有变形例以及均等方案均视为基于后述的技术方案及其均等方案的本发明的范围。
Claims (4)
1.一种进程控制装置,给多个处理器装置分配所要执行的线程,其特征在于,具有:
线程信息存储装置,其在执行线程时,存储执行开始时刻以及所运行的处理器装置的识别信息;
经过时间计算装置,其在给下一次要运行的处理器装置分配中断中的上述线程时,计算从上述执行开始时刻起的经过时间;
线程分配装置,其对于上述处理器装置所使用的高速缓冲存储器,若高速缓冲存储器的次数越高就设定越大的时间参数,而且,在上述经过时间小于对n次高速缓冲存储器所设定的上述时间参数、且大于等于对(n-1)次高速缓冲存储器所设定的上述时间参数的情况下,在上一次所运行的处理器装置以及与上述上一次所运行的处理器装置一起共用上述n次高速缓冲存储器的处理器装置中,给负担最小的处理器装置分配上述线程,其中,上述n为大于等于2的自然数。
2.如权利要求1所述的进程控制装置,其特征在于,上述时间参数是根据上述高速缓冲存储器的容量来设定的。
3.一种进程控制方法,给多个处理器装置分配所要执行的线程,其特征在于,包括:
在执行线程时,在线程信息存储装置中存储执行开始时刻以及所运行的处理器装置的识别信息的步骤;
在给下一次要运行的处理器装置分配中断中的上述线程时,通过经过时间计算装置计算从上述执行开始时刻起的经过时间的步骤;
通过线程分配装置,对于上述处理器装置所使用的高速缓冲存储器,若高速缓冲存储器的次数越高就设定越大的时间参数,并且,在上述经过时间小于对n次高速缓冲存储器所设定的上述时间参数、且大于等于对(n-1)次高速缓冲存储器所设定的上述时间参数的情况下,在上一次所运行的处理器装置以及与上述上一次所运行的处理器装置一起共用上述n次高速缓冲存储器的处理器装置中,给负担最小的处理器装置分配上述线程的步骤,其中,上述n为大于等于2的自然数。
4.如权利要求3所述的进程控制方法,其特征在于,上述时间参数是根据上述高速缓冲存储器的容量来设定的。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2005/014590 WO2007017932A1 (ja) | 2005-08-09 | 2005-08-09 | スケジュール制御プログラム及びスケジュール制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101238442A CN101238442A (zh) | 2008-08-06 |
CN100573458C true CN100573458C (zh) | 2009-12-23 |
Family
ID=37727128
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB200580051287XA Expired - Fee Related CN100573458C (zh) | 2005-08-09 | 2005-08-09 | 进程控制装置以及进程控制方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8479205B2 (zh) |
EP (1) | EP1914632B1 (zh) |
JP (1) | JP4651671B2 (zh) |
KR (1) | KR100942740B1 (zh) |
CN (1) | CN100573458C (zh) |
WO (1) | WO2007017932A1 (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8356284B2 (en) * | 2006-12-28 | 2013-01-15 | International Business Machines Corporation | Threading model analysis system and method |
JP4872818B2 (ja) * | 2007-06-14 | 2012-02-08 | ムラテックオートメーション株式会社 | プロセス状態監視装置 |
US8453146B2 (en) * | 2009-12-23 | 2013-05-28 | Intel Corporation | Apportioning a counted value to a task executed on a multi-core processor |
US8756585B2 (en) * | 2009-12-29 | 2014-06-17 | International Business Machines Corporation | Efficient monitoring in a software system |
WO2012095982A1 (ja) * | 2011-01-13 | 2012-07-19 | 富士通株式会社 | マルチコアプロセッサシステム、およびスケジューリング方法 |
WO2012098684A1 (ja) * | 2011-01-21 | 2012-07-26 | 富士通株式会社 | スケジューリング方法およびスケジューリングシステム |
CN102402220B (zh) * | 2011-01-21 | 2013-10-23 | 南京航空航天大学 | 基于负荷分担式的容错飞行控制系统的故障检测方法 |
US20120267423A1 (en) * | 2011-04-19 | 2012-10-25 | Taiwan Semiconductor Manufacturing Company, Ltd. | Methods and Apparatus for Thin Die Processing |
WO2013021441A1 (ja) | 2011-08-05 | 2013-02-14 | 富士通株式会社 | データ処理システム、およびデータ処理方法 |
US9274854B2 (en) * | 2012-07-27 | 2016-03-01 | International Business Machines Corporation | Contamination based workload management |
US9571329B2 (en) * | 2013-03-11 | 2017-02-14 | International Business Machines Corporation | Collective operation management in a parallel computer |
US10140210B2 (en) | 2013-09-24 | 2018-11-27 | Intel Corporation | Method and apparatus for cache occupancy determination and instruction scheduling |
JP5808450B1 (ja) | 2014-04-04 | 2015-11-10 | ファナック株式会社 | マルチコアプロセッサを使用して逐次プログラムを実行する制御装置 |
CN106484537B (zh) * | 2016-09-30 | 2019-07-19 | 网易(杭州)网络有限公司 | 一种cpu核资源的分配方法和设备 |
CN116521351B (zh) * | 2023-07-03 | 2023-09-05 | 建信金融科技有限责任公司 | 多线程任务调度方法、装置、存储介质及处理器 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2815095B2 (ja) * | 1989-07-12 | 1998-10-27 | 日本電信電話株式会社 | マルチプロセッサにおけるタスク割り当て制御方法 |
JPH04283849A (ja) * | 1991-03-13 | 1992-10-08 | Toshiba Corp | マルチプロセッサシステム |
US5185861A (en) * | 1991-08-19 | 1993-02-09 | Sequent Computer Systems, Inc. | Cache affinity scheduler |
JPH05151064A (ja) * | 1991-11-29 | 1993-06-18 | Yokogawa Electric Corp | 密結合マルチプロセツサシステム |
US5287508A (en) * | 1992-04-07 | 1994-02-15 | Sun Microsystems, Inc. | Method and apparatus for efficient scheduling in a multiprocessor system |
JPH0830562A (ja) | 1994-07-19 | 1996-02-02 | Nec Corp | マルチプロセッサシステム |
US5784614A (en) * | 1995-07-27 | 1998-07-21 | Ncr Corporation | Cache affinity scheduling method for multi-processor nodes in a split transaction bus architecture |
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 |
US5875469A (en) * | 1996-08-26 | 1999-02-23 | International Business Machines Corporation | Apparatus and method of snooping processors and look-aside caches |
JPH10143382A (ja) | 1996-11-08 | 1998-05-29 | Hitachi Ltd | 共有メモリ型マルチプロセッサシステムの資源管理方法 |
US5974438A (en) | 1996-12-31 | 1999-10-26 | Compaq Computer Corporation | Scoreboard for cached multi-thread processes |
JPH11259318A (ja) * | 1998-03-13 | 1999-09-24 | Hitachi Ltd | ディスパッチ方式 |
US6665699B1 (en) * | 1999-09-23 | 2003-12-16 | Bull Hn Information Systems Inc. | Method and data processing system providing processor affinity dispatching |
JP3535795B2 (ja) * | 2000-02-21 | 2004-06-07 | 博 和泉 | コンピュータ、並びに、コンピュータ読み取り可能な記録媒体 |
-
2005
- 2005-08-09 WO PCT/JP2005/014590 patent/WO2007017932A1/ja active Application Filing
- 2005-08-09 EP EP05770421A patent/EP1914632B1/en not_active Ceased
- 2005-08-09 KR KR1020087002269A patent/KR100942740B1/ko not_active IP Right Cessation
- 2005-08-09 CN CNB200580051287XA patent/CN100573458C/zh not_active Expired - Fee Related
- 2005-08-09 JP JP2007529429A patent/JP4651671B2/ja not_active Expired - Fee Related
-
2007
- 2007-12-28 US US12/006,028 patent/US8479205B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP4651671B2 (ja) | 2011-03-16 |
US8479205B2 (en) | 2013-07-02 |
CN101238442A (zh) | 2008-08-06 |
EP1914632B1 (en) | 2012-06-27 |
US20080109817A1 (en) | 2008-05-08 |
KR100942740B1 (ko) | 2010-02-17 |
JPWO2007017932A1 (ja) | 2009-02-19 |
KR20080023358A (ko) | 2008-03-13 |
EP1914632A4 (en) | 2009-07-29 |
EP1914632A1 (en) | 2008-04-23 |
WO2007017932A1 (ja) | 2007-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100573458C (zh) | 进程控制装置以及进程控制方法 | |
CN100576170C (zh) | 连续流程处理器流水线 | |
US6996821B1 (en) | Data processing systems and method for batching tasks of the same type in an instruction cache | |
US8171267B2 (en) | Method and apparatus for migrating task in multi-processor system | |
JP3871458B2 (ja) | コンピュータ・システム | |
JP5104855B2 (ja) | 負荷分散プログラム、負荷分散方法、及びストレージ管理装置 | |
JP5697195B2 (ja) | アクセス予測に基づいてテーブルのミラーリングを制御する管理システム、プログラムおよび方法 | |
US11321097B2 (en) | Super-thread processor | |
US8108662B2 (en) | Checkpointing a hybrid architecture computing system | |
US8549261B2 (en) | Parallel computing apparatus and parallel computing method | |
CN111708812A (zh) | 一种分布式数据处理方法 | |
JP2006031525A (ja) | 情報処理装置および情報処理方法、並びに、プログラム | |
US8930680B2 (en) | Sync-ID for multiple concurrent sync dependencies in an out-of-order store queue | |
JP7145094B2 (ja) | 制御装置、コンピュータプログラム及び情報処理方法 | |
US10489218B2 (en) | Suppression of speculative accesses to shared memory locations at a processor | |
US20210064575A1 (en) | Data storage method and method for executing an application with reduced access time to the stored data | |
US20220229662A1 (en) | Super-thread processor | |
US20240160451A1 (en) | Dynamic thread count optimizations | |
WO2012119290A1 (zh) | 分布式计算方法和分布式计算系统 | |
WO2015004570A1 (en) | Method and system for implementing a dynamic array data structure in a cache line | |
JP2024042360A (ja) | データ処理プログラム、データ処理方法およびデータ処理装置 | |
JP2625238B2 (ja) | バックアップ方式および情報処理装置 | |
CN111752700A (zh) | 一种处理器上的硬件选择方法和装置 | |
JP2017134645A (ja) | 情報処理装置およびプログラマブルデバイス処理方法 | |
JP2001350627A (ja) | ディジタル信号プロセッサ、並列処理方法および記録媒体 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20091223 Termination date: 20150809 |
|
EXPY | Termination of patent right or utility model |