CN101180609A - 调度方法以及调度装置 - Google Patents
调度方法以及调度装置 Download PDFInfo
- Publication number
- CN101180609A CN101180609A CNA2006800179477A CN200680017947A CN101180609A CN 101180609 A CN101180609 A CN 101180609A CN A2006800179477 A CNA2006800179477 A CN A2006800179477A CN 200680017947 A CN200680017947 A CN 200680017947A CN 101180609 A CN101180609 A CN 101180609A
- Authority
- CN
- China
- Prior art keywords
- information
- executable unit
- executable
- unit
- identifier
- 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
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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- 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/461—Saving or restoring of program or task context
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
图1中,在主存储器(30)中保存线程信息。线程信息包括比特串和最近执行信息。比特串的每个比特分别分配给一个线程,比特的号码和值分别表示线程的号码和线程是否为可执行的状态。最近执行信息是最近执行的线程的号码。处理器(12)使比特串旋转,使得表示最近执行的线程的比特成为比特串的末尾,从被旋转的比特串的开头开始依次检索与可执行状态的线程对应的比特,选择最先得到的比特的号码作为下次执行的线程的号码。而且,变更该号码的比特值使其表示不可执行,同时将最近执行信息设置为该比特的号码并更新线程信息。该操作使用原子命令来执行。
Description
技术领域
本发明涉及多处理器系统中的并行处理的执行单位的调度方法以及装置。
背景技术
现在的支持多任务的操作系统搭载了多线程(multi thread)技术,该多线程技术实现可同时执行多个进程(process)的多任务环境,同时这些进程在进程内部生成多个线程来进行并行处理。进程在执行时被分配固有的资源或地址空间,无法访问到其他进程的区域。相对于此,线程是在进程内部中生成的执行单位,各个线程可以互相自由地访问进程内的区域。线程成为操作系统分配CPU(Central Processing Unit)的执行时间的基本的执行单位。在本说明书中,将线程的分配称为调度。
在一个系统中搭载了多个处理器的多处理器系统中,可并行地或者协调地执行处理,从而可实现处理整体的高速化。通常,在多处理器系统中,在共享存储器中的被称为任务队列的等待队列中保存可执行的线程。这些线程分配给任一个处理器而被执行。根据分配线程的方法,进程的运行速度或存储器消耗量等的性能改变,所以在多处理器系统中,需要与单处理器系统中的调度有所不同的方法。
对于多处理器系统中的调度,可考虑以下方法:例如,担任管理线程的作用的管理单元与各个处理器进行通信,调度对各个处理器所分配的线程。
在通过管理单元进行调度的这个方法中,存在以下问题:在管理单元和处理器之间的通信中产生消息的延迟的情况较多,从而延迟线程的执行。为了解决这个问题,可考虑由各个处理器自己支配地进行调度的方法。在该方法中,在各个处理器中执行各自的调度器,访问到位于共享存储器中的任务队列,选择要执行的线程。
在该方法中,为了防止在各个处理器执行调度的期间、即在调度中,共享存储器中的任务队列被其他的处理器修改,调度器锁定任务队列。在这个期间,是否禁止中断是由系统的设计者左右。
在调度中不禁止中断的情况下,在调度器锁定了任务队列的期间也接受中断。此时,至中断处理结束、并解除锁定为止,无法执行调度的结果,导致系统的效率降低。
另一方面,在调度中禁止中断的情况下,产生系统的中断响应性能降低的问题。这些问题并不仅仅是在这里叙述的多处理器上动作的核心调度器的问题,在多处理器/多线程的环境下的用户等级调度器(即、通过在各处理器中动作的线程上执行调度器,从而实现在用户等级中的多线程的方式)的情况也是相同的。
特别是,执行用户等级调度器的核心线程通过各个处理器上的核心等级调度器而被调度,有产生被其他的核心线程抢占的可能性,所以任务队列的锁定有可能产生更严重的问题。此时,在被抢占时该核心线程中动作的用户等级调度器取得锁定的情况下,直到其他的处理器的线程上动作的用户等级调度器被解除锁定为止,无法进行调度。
发明内容
发明要解决的课题
本发明鉴于上述课题而完成,其目的在于,提供一种调度技术,控制将多处理器系统中的并行处理的执行单位对处理器分配的顺序,从而提高处理效率。
解决课题的方法
本发明的方式涉及在多处理器系统中,对成为处理器的执行对象的执行单位进行调度的方法。该调度方法对成为多处理器系统中所包括的多个处理器的执行对象的各个执行单位赋予识别符,保存包括可否执行信息和最近执行信息的执行单位信息,上述可否执行信息与执行单位的识别符相关联地表示各个执行单位的每个执行单位是否为可执行的状态,上述最近执行信息表示在各个执行单位中最近执行的执行单位的识别符。而且,基于执行单位信息,在优先地选择最近执行的执行单位的识别符以外的识别符的制约下,选择任一个可执行的执行单位的识别符作为由处理器执行的执行单位的识别符,同时更新执行单位信息。
本发明的这个方式也可以适用于通过管理单元所调度的系统中,也可以适用于通过各个处理器本身进行调度的系统中。
此外,本发明的这个方式不仅仅适用于直接在各个处理器上动作的调度器,也可以适用于在各个处理器中的调度器所提供的线程上动作的用户等级调度的系统中。
这里,可否执行信息也可以作为对各个执行单位分配一比特作为识别符的比特串而被保存,比特的选择以及执行单位信息的更新是通过不可分操作、即原子(atomic)操作来进行。
“不可分操作”表示不能再进一步分割的最小单位的操作,在多处理器系统中,被保证了没有与其他处理器进行的操作的相互作用而执行的操作。
另外,以上结构元件的任意组合、将本发明作为系统、程序、存储了程序的存储介质所表现的方式,作为本发明的方式也是有效的。
发明效果
本发明有利于调度多处理器系统中的并行处理的执行单位。
附图说明
图1是表示本发明实施方式的多处理器系统的图。
图2是表示图1所示多处理器系统的任务队列的图。
图3是表示图2所示任务队列中所包含的线程信息的结构的图。
图4是用于说明图3所示线程信息的细节的图。
图5是表示通过处理器选择线程的处理的流程图。
图6是表示伴随图5所示处理的线程信息的变化的图。
图7是表示通过处理器追加线程的处理的流程图。
图8是表示伴随图7所示处理的线程信息变化的图。
图9是表示使用了用户等级调度器的多处理器系统的例子的图。
图10是表示图9所示多处理器系统中线程组合的例子的图。
图11是表示图9所示多处理器系统中线程调度的例子的图。
标号说明
10处理单元、12处理器、14本地存储器、16存储器控制单元、20主总线、30主存储器、40线程信息、50线程地址信息、60线程实体、100多处理器系统、110处理单元、112处理器、114存储器控制单元、120主总线、130主存储器
具体实施方式
在多处理器系统中,为了防止在各处理器的执行单位例如线程的调度中,存储了线程的任务队列被其他处理器修改,需要锁定任务队列。
通过这个锁定,如果在调度中禁止中断,则系统的中断响应性能降低,如果在调度中不禁止中断,则产生至中断处理结束、并解除锁定为止,无法执行调度的顾虑。
为了解决上述的问题,本发明者提出以下的技术。
对各线程赋予识别符,保存包括可否执行信息和最近执行信息的执行单位信息,上述可否执行信息与线程的识别符相关联地表示这些线程的每个线程是否为可执行的状态,上述最近执行信息表示在各个线程中最近执行的线程的识别符。而且,基于线程信息,在优选地选择最近执行的线程的识别符以外的识别符的制约下,选择任一个可执行的线程的识别符作为对处理器分配的线程的识别符。
这里,可以将线程的实体(以下,称为线程实体)通过基于处理器所选择的识别符而可取得的所有方法来保存。例如,可以将线程实体与识别符相关联地保存,也可以将各线程实体保存到存储器的各个规定的区域,同时将线程实体被保存的区域的开始地址和该识别符相关联地保存在存储器中。
该技术是,将线程实体和用于选择要执行哪一个线程所需的线程信息分别保存到存储器中。因此,在调度时,无需锁定存储了线程实体的区域,可以消除在调度中是否禁止中断的顾虑。
该技术在执行用户等级调度器的系统中,也能够消除上述顾虑,同时也还可以解决用户等级调度器所引起的问题。
例如,在多处理器系统,特别是仅限于可执行OS(操作系统)功能的处理器的非对称的多处理器系统中,认为以下方法是提高多处理器系统的处理效率的有效方法:在各处理器中动作的OS所提供的核心线程上生成用户等级线程,自己支配地进行调度的方法、即使用用户等级调度器的方法。在该方法中,存在由使用用户等级调度器所引起的调度失败的问题。
例如,执行用户等级调度器的线程通过各处理器中的核心调度器而被调度,因为有被其他的核心调度器抢占的可能性。因此,在被抢占时,在该线程中动作的用户等级调度器取得锁定的情况下,直到其他处理器的线程上动作的用户等级调度器被解除为止,无法进行调度,从而导致处理器的处理效率降低。而且,直到被解除锁定为止的时间均依赖于状况,难以估计,所以也可能成为引起系统的不稳定的原因。
这里,考虑执行在多处理器系统中的各处理器能够自主地动作的核心调度器的以往的系统。在任务队列中有线程1、线程2、线程3,假设多个处理器中的处理器A成为可执行任务队列中的线程的状态。
处理器A为了选择要执行的线程,临时将任务队列复制到自己的本地存储器中,在从任务队列中选择了例如线程1之后,进行从任务队列中删除线程1的更新处理,并将被更新的任务队列重写到主存储器中。从开始任务队列的复制到结束任务队列的重写为止的期间,为了防止共享存储器上的任务队列被其他的处理器修改,将任务队列锁定。在任务队列被锁定的期间,即使其他的处理器成为了可执行位于任务队列的线程的状态,也无法使用任务队列,所以锁定的期间越长则系统的处理效率就降低。
此外,在处理器A中动作的调度器也有如上所述地通过中断而被抢占的可能性。当在处理器A锁定了任务队列的状态下被抢占,则其他的处理器无法进行调度,无法执行线程2、3,直到处理器A从中断处理返回,被解除锁定为止。这样导致系统的处理效率降低,同时还有可能引起不稳定。
另外,如果将处理器A、…替换为执行在处理器A、…上动作的用户等级调度器的线程(例如线程a、…),上述说明也可以适用于执行用户等级调度器的系统中。具体地说,在执行用户等级调度器的系统中,例如执行处理器A上动作的用户等级调度器的线程a也有通过中断而被抢占的可能性。当线程a在任务队列被锁定的状态下抢占,则其他的线程无法进行调度,直到线程a从中断处理返回,被解除锁定为止。即,在使用用户等级调度器的系统中也相同地,起因于任务队列的锁定,存在系统的处理效率降低,可能引起不稳定的问题。
此外,在多处理器系统中,各个处理器以包含在各自的处理单元的形式存在。这些处理单元可分为PPU(Power Processing Unit)和SPU(SynergisticProcessing Unit)。可以是所有SPU使用同一个结构来实现,也可以是分别具有不同的结构。PPU也可以相对于SPU而在本地位于例如与SPU同一个芯片、同一个包、同一个电路板、同一个产品中,也可以相对于SPU而在远程位于例如通过总线或因特网等的通信网络而可连接的不同的产品中。同样地,SPU也可以分别位于本地或者远程。
调度禁止期间的存在和禁止时间的估计难度成为多处理器系统的处理效率降低的主要原因。如果执行用户等级调度器的所有线程是SPU的线程(以下,称为SPU线程),则作为解决该问题的方法,可考虑将线程分组以组为单位进行调度的方法。这里,以图9所示多处理器系统为例进行说明。
图9所示的多处理器系统具有多个处理单元110和主存储器130,它们连接到主总线120。各处理单元110具有处理器112、本地存储器114、存储器控制单元116。处理器112可对本地存储器114读写数据。存储器控制单元116提供从其他的处理单元110的处理器112参照本地存储器114的数据时的接口,同时提供存储器的同步、排他控制等功能。
这里,考虑在主存储器130中设置的任务队列中仅存储有SPU线程的情况。此时,任务队列中的线程被如图10所示地调度。在图10中,线程组1包括三个线程th1a、th1b、th1c。线程组2包括一个线程th2a。这样的只有一个线程的情况也作为线程组来处理。同样地,线程组3包括两个线程th3a、th3b。线程组4包括一个线程th4a。
这些线程的调度以属于同一个线程组的所有线程同时分配给某一个处理器112为条件进行。在第1线程组分配给处理器112时,仅限于属于第1线程组的三个线程th1a、th1b、th1c同时被分配给某一个处理器112的情况。不会进行将三个线程th1a、th1b、th1c中的一个或两个分配给处理器112,剩余的转移到主存储器130的情况。
图11是用于说明线程以线程组为单位被分配给处理器112的情况的图。图11表示在处理器总数为四个的多处理器系统中,属于图10所示的四个线程组的线程分配给处理器112的情况。在某一时刻,属于第1线程组的三个线程th1a、th1b、th1c被分别分配给第1处理器、第2处理器、第3处理器,属于第2线程组的一个线程th2a被分配给第4处理器,除此之外的属于第3线程组的两个线程th3a、th3b和属于线程组4的一个线程th4a转移到主存储器130。
根据这样的系统,使得属于一个线程组的多个线程必需同时分配给任一处理器。在线程组中,因只有取得锁定的线程不会被抢占,所以可限定调度的禁止期间。
但是,在PPU的线程(以下,称为PPU线程)和SPU线程非同步地进行调度的环境中,在PPU线程和SPU线程共有相同的任务队列的情况下,产生以下问题。当某一PPU线程取得任务队列的锁定后直接被其他的PPU线程抢占,则因SPU线程必需等到该PPU线程被重新执行为止,所以无法限定调度的禁止期间。
本发明人所提案的调度技术是将线程信息和线程实体分开保存,处理器在进行要执行哪一个线程的选择时,只下载线程信息即可。如果结束选择、结束线程信息的更新(具体地说,将最近执行的线程的识别符变更为选择的线程的识别符的处理、和将选择的线程的识别符修改为表示与该识别符对应的线程不可执行的处理),将更新的线程信息存储在主存储器中。之后,处理器复制与所选择的识别符对应的线程实体,但复制的期间,其他处理器可以使用线程信息。这样,线程信息被一个处理器占用的时间短,所以即使锁定了线程信息,也可以减轻系统整体的处理效率的降低。
而且,本发明人提出将可否执行信息作为对各线程分配一比特作为识别符的比特串来保存。这样,可使用原子操作或原子命令来进行线程的选择、线程信息的更新等,可实现不会随着锁定操作的、即无锁定的任务队列。如果没有锁定操作,则上述的起因于任务队列的锁定的各种问题也被解除。
图1表示成为本发明的实施方式的多处理器系统100的结构。多处理器系统100具有多个处理单元10和主存储器30,它们连接到主总线20。各处理单元10包括处理器12、本地存储器14、存储器控制单元16。处理器12可对本地存储器14读写数据。存储器控制单元16提供从其他的处理单元10的处理器12参照本地存储器14的数据时的接口,同时提供存储器的同步、排他控制等功能。
处理单元10中的任一个处理单元担任关于线程的调度对其他的处理单元的服务单元的作用。作为服务单元的作用,例如是主存储器30的分配,或有关主存储器30中的关于线程的最初的存储的情况等。主存储器30的分配,例如可以是决定分配给线程信息的区域,区域的大小或应对线程的实体分配的存储器大小等。
另外,该服务器单元也可以由任一个处理单元10来担任。
在某一时刻,各处理器12中一个线程动作,多处理器系统100整体并行执行多个线程。在各处理器12中动作的线程可占有并使用处理单元10内的本地存储器14或存储器控制单元16内的寄存器等所有资源。
在该状态中,等待处理的线程的内容被保存在主存储器30中。线程的内容是该线程在被执行的处理单元10中所占有的所有资源的状态,在线程在处理器12中动作时,各种寄存器中所保存的值的集合、本地存储器14中所保存的数据、存储器控制单元16的各种寄存器的内部状态等。在线程不在处理器12中动作时,将该线程的内容复制到主存储器30中,在重新成为可由处理器12处理时,可以从主存储器30读出其内容,继续处理。线程的内容相当于线程实体。
图2表示由主存储器30所存储的有关线程的信息。这些信息是线程信息40、线程地址信息50、线程实体60,担任多处理器系统100中的任务队列的作用。另外,这些被存储信息的区域是由服务单元分配,并通知到其他的处理单元10。
线程信息40包括可否执行信息和最近执行信息。上述可否执行信息将对各线程分别赋予的识别符与表示每个线程是否为可执行的状态的信息相关联。图3表示线程信息40的细节。
比特串(isSchedulable)是可否执行信息,它所包含的1比特表示一个线程,比特号码对应于线程的号码。另外,多处理器系统100将比特号码直接作为线程的号码,所以可实现处理的简化。
比特串isSchedulable的各比特值表示与该比特对应的线程是否为可执行的状态。这里,比特值“1”表示可执行,“0”表示不可执行。比特串isSchedulable所包含的比特的数目相当于用于可否执行信息的保存所分配的区域的大小,这里设为128比特。
lastScheduled是取比特串isSchedulable所包含的各比特中表示最近执行的比特的号码的整数值的变数。
如图4的例子那样,由isSchedulable和lastScheduled表示可执行的线程的号码、最近执行的线程的号码。在图4的例子中,比特串isSchedulable中,值为“1”的比特(图中,箭头B、C、D所示的比特)为三个,与这三个比特号码对应的线程为可执行线程。对于值为“0”的其他比特,与它们对应的线程为不可执行。此外,和与lastScheduled的值相等的比特号码(图中,箭头A所示的比特号码)对应的线程是最近执行的线程,其状态为不可执行。
线程地址信息50是,将各线程的号码这里是比特串isSchedulable中所包含的比特的号码和与该号码对应的线程的实体所保存的区域的开始地址相关联的信息。对于将哪个号码的线程实体保存到哪个地址的区域由服务单元决定。
在没有等待处理的线程的状态下,线程信息40的比特串isSchedulable的各比特的值为“0”。
进行处理单元10的处理,线程被生成。被生成的线程由某一处理单元10执行。在产生等待处理的线程时,任务队列被利用。这里,作为例子以图4所示的任务队列的状态为起点,使用图5的流程图来说明处理单元10选择接下来要执行的线程的处理,以及伴随该选择的线程信息的更新处理。
在图4所示的状态下,多处理器系统100的各处理单元10分别有处理中的线程,等待处理的可执行的线程有三个,这三个线程的各个实体存储在主存储器30中。
在该状态下,当在某一处理单元10中,结束处理中的线程的处理,则该处理单元10的处理器12为了选择接下来要执行的线程,将包含在线程信息40中的比特串isSchedulable和lastScheduled下载到本地存储器14中(S10)。在多处理器系统100中,处理单元10使用原子命令来进行有关线程信息40的处理,这里,使用例如“lwarx”或“getllar”作为用于下载线程信息40的命令。另外,图6的A栏所示的比特串isSchedulable是图4所示的比特串isSchedulable。
处理器12将下载的比特串isSchedulable(图6的A栏所示的比特串)沿着箭头L所示的方向、即向左旋转(rotates),使得与lastScheduled的值相等的号码的比特(图6的箭头A1所示的比特)成为末尾。这样,图6的A栏的比特串isSchedulable成为图6的B栏的比特串isSchedulable。如图所示,(lastScheduled+1)号的比特(箭头B1所示的比特)位于比特串isSchedulable的开头,lastScheduled号的比特(箭头B3所示的比特)成为比特串isSchedulable的末尾。
处理器12接着对于被旋转的比特串isSchedulable从开头开始依次检索值为“1”的比特,取得最先检测的比特(箭头B2所示的比特)的号码作为接下来执行的线程的号码(S18)。作为用于比特的检索的命令,例如可使用对从比特串isSchedulable的开头连续的具有“0”的值的比特的数目进行计数的“Count Leading Zero”。选择对通过“Count Leading Zero”所得到的值(图6所示的B栏的比特串isSchedulable的例子中是4)相加(lastScheduled+1)得到的值作为接下来要执行的线程的号。
而且,处理器12将所选择的号码的比特值设置为“0”,同时将lastScheduled设置为这个号码,进行线程信息40的更新(S20)。被更新的线程信息40被存储到主存储器30中(S24)。这里,比特值的更新使用图6的C栏所示的128比特的比特串来进行。C栏的比特串具有128比特,只有与在步骤S18中所选择号码相同的号码的比特(箭头C1所示的比特)具有“1”值。处理器12通过“AtomicAndc”命令对图6的B栏的比特串isSchedulable和C栏的比特串进行运算,更新B栏的比特串isSchedulable。此外,用于存储被更新的比特串isSchedulable的命令可以作为例如“stwcx”或“putllc”。
图6的D栏表示被更新的线程信息40。这里,作为接下来要执行的线程所选择的比特(箭头D1所示的比特)成为表示最近被执行的线程的比特,其值从“1”成为“0”。
之后,处理器12参照线程地址信息50,取得与所选择的号码的线程对应的线程实体60的开始地址,同时将线程实体60从该开始地址所示的区域下载到本地存储器14进行处理。
接下来,使用图7的流程图,说明对任务队列追加成为可执行的线程的处理。
处理单元10的处理器12为了将新成为可执行的线程追加到任务队列,将线程信息40中所包含的比特串isSchedulable下载到本地存储器14(S50)。该比特串isSchedulable是例如图8的A栏所示的比特串isSchedulable。处理器12选择A栏的比特串isSchedulable的各比特中的值为“0”的任一比特(例如箭头A1所示的比特)的号码作为追加的线程的比特号码。而且,处理器12通过“AtomicOr”命令对A栏的比特串isSchedulable和B栏所示的比特串进行运算,得到C栏所示的比特串isSchedulable(S54)。图8的B栏所示的比特串具有128比特,只有与由处理器12所选择的号码相同的号码的比特(箭头B1所示的比特)具有“1”值。
接着,处理器12将通过步骤S54所得到的比特串isSchedulable(图8的C栏的比特串)存储到主存储器30,结束用于追加线程的线程信息40的更新(S58)。
之后,处理器12将追加的线程的实体复制到对于在步骤S54中选择的比特号码所分配的区域,结束追加线程的处理。
这样,根据图1所示的多处理器系统100,通过各处理器12本身进行从任务队列选择线程的处理、更新任务队列的处理,所以可以提高系统整体的处理效率。
此外,在构成任务队列时,可以将线程信息和线程实体分开保存,线程的选择、更新可以仅使用线程信息来进行,所以实现了更高效率的多处理器系统。
而且,作为线程信息而使用比特串isSchedulable和lastScheduled的两个变数,所以可以由原子命令进行线程的选择和更新。因此,实现无锁定的任务队列。
通过实现无锁定的任务队列,可以消除在调度中是否接受中断的顾虑。
此外,最近执行的线程的信息被保存,在选择线程时,优选地选择最近执行的线程之外的线程,同时更新伴随这个选择的对应信息。由此,即使最近执行的线程再成为可执行,也优先地执行其他可执行的线程,所以可以保持在线程的调度中重要的公平性。
这里,图1所示的多处理器系统100是只使用核心调度器的多处理器系统,但用于多处理器系统100的调度方法也可以适用于使用了在各处理器中动作的线程上所实现的用户等级调度器的系统中。此时,可以消除在调度中是否接受中断的顾虑,同时可以解除上述的起因于使用了用户等级调度器的问题。
以上,基于实施方式说明了本发明。但本领域的技术人员应该理解实施方式只是例子,这些各结构元件或各处理进程的组合可以有各种变形例,而且,这样的变形例也属于本发明的范围。
此外,图1所示的实施方式是各处理器自主地进行调度的系统,本发明的调度方法并不限于这样的系统,例如也可以适用于由一个管理单元进行调度的系统。
此外,使用了本发明的设备也属于本发明的范围。这些设备并不限于个人计算机或服务器等,还包括携带电话、游戏机、可移动计算机、个人携带信息设备(PDA)、数字电视等。
产业上的可利用性
如上所述的本发明可用于并行处理多个进程的计算机、携带电话、游戏设备等的电子设备。
权利要求书(按照条约第19条的修改)
1. 一种调度方法,其特征在于,
对成为多处理器系统中所包括的多个处理器的执行对象的各个执行单位赋予识别号码,
保存包括可否执行信息和最近执行信息的执行单位信息,上述可否执行信息与所有执行单位的识别号码相关联地表示各个执行单位是否为等待处理的状态,上述最近执行信息表示在各个执行单位中最近执行的执行单位的识别号码,
按照将最近执行的执行单位的识别号码作为起点的所述识别号码的顺序,基于所述执行单位信息,检索下一个处于等待处理的状态的执行单位的识别号码,并选择其作为由处理器执行的执行单位的识别号码,同时更新执行单位信息。
2. 如权利要求1所述的调度方法,其特征在于,
所述执行单位信息保存在各个处理器可访问的存储器中,
所述选择以及更新是由执行与所选择的识别号码对应的执行单位的处理器本身来进行。
3. 如权利要求1或2所述的调度方法,其特征在于,
可否执行信息作为与按照号码顺序排列的所述识别号码对应地分配一比特的比特串而被保存,
所述选择以及更新通过不可分操作来进行。
4. 如权利要求3所述的调度方法,其特征在于,
旋转比特串,使得与最近执行的执行单位对应的比特成为末尾,
通过从被旋转的比特串的开头开始依次检索可执行的执行单位的比特,进行所述选择。
5. 如权利要求2所述的调度方法,其特征在于,
所述选择以及更新基于在与处理器对应的本地存储器中下载所述执行单位信息而进行,上述处理器执行与所选择的识别号码对应的执行单位,
而且,在所述更新结束之后,将所述执行单位信息存储在所述存储器中。
6. 如权利要求5所述的调度方法,其特征在于,
在所述存储器中还保存地址信息,所述地址信息将所述识别号码和与该识别号码对应的执行单位的内容的所述存储器中的存储目的地的地址相关联,
将所述执行单位信息存储在所述存储器之后,参照所述地址信息,从所述存储器中读出与所选择的识别号码对应的执行单位的内容,执行该执行单位。
7. 一种调度装置,其特征在于,包括:
执行单位信息保存单元,保存包括可否执行信息和最近执行信息的执行单位信息,上述可否执行信息与对每个执行单位赋予的所有识别号码相关联地表示成为多处理器系统中所包含的多个处理器的执行对象的各个执行单位的每个执行单位是否为等待处理的状态,上述最近执行信息表示各执行单位中最近执行的执行单位的识别号码;
执行单位选择单元,按照将最近执行的执行单位的识别号码作为起点的所述识别号码的顺序,基于所述执行单位信息,检索下一个处于等待处理的状态的执行单位的识别号码,并选择其作为由处理器执行的执行单位的识别号码;以及
执行单位信息更新单元,随着所述选择,更新所述执行单位信息。
8. 如权利要求7所述的调度装置,其特征在于,
所述执行单位信息保存单元在各个处理器可访问的存储器中保存所述执行单位信息,
所述执行单位选择单元以及所述执行单位信息更新单元由执行与所选择的识别号码对应的执行单位的处理器本身构成。
9. 如权利要求7或8所述的调度装置,其特征在于,
所述执行单位信息保存单元将可否执行信息作为与按照号码顺序排列的所述识别号码对应地分配一比特的比特串来保存,
所述执行单位选择单元以及所述执行单位信息更新单元通过不可分操作,进行所述选择以及所述更新。
10. 如权利要求9所述的调度装置,其特征在于,
所述执行单位选择单元旋转比特串,使得与最近执行的执行单位对应的比特成为末尾,
通过从被旋转的比特串的开头开始依次检索可执行的执行单位的比特,进行所述选择。
11. 一种程序,其特征在于,
使计算机执行以下功能:
保存包括可否执行信息和最近执行信息的执行单位信息的功能,上述可否执行信息与对每个执行单位赋予的所有识别号码相关联地表示成为多处理器系统中所包含的多个处理器的执行对象的各个执行单位是否为等待处理的状态,上述最近执行信息表示各个执行单位中最近执行的执行单位的识别号码;
按照将最近执行的执行单位的识别号码作为起点的所述识别号码的顺序,基于所述执行单位信息,检索下一个处于等待处理的状态的执行单位的识别号码,并选择其作为由处理器执行的执行单位的识别号码,同时更新所述执行单位信息的功能。
12. 一种存储介质,是存储了程序的存储介质,其特征在于,
所述程序使计算机执行以下功能:
保存包括可否执行信息和最近执行信息的执行单位信息的功能,上述可否执行信息与对每个执行单位赋予的所有识别号码相关联地表示成为多处理器系统中所包含的多个处理器的执行对象的各个执行单位是否为等待处理的状态,上述最近执行信息表示各个执行单位中最近执行的执行单位的识别号码;
按照将最近执行的执行单位的识别号码作为起点的所述识别号码的顺序,基于所述执行单位信息,检索下一个处于等待处理的状态的执行单位的识别号码,并选择其作为由处理器执行的执行单位的识别号码,同时更新所述执行单位信息的功能。
Claims (12)
1.一种调度方法,其特征在于,
对成为多处理器系统中所包括的多个处理器的执行对象的各个执行单位赋予识别符,
保存包括可否执行信息和最近执行信息的执行单位信息,上述可否执行信息与执行单位的识别符相关联地表示各个执行单位的每个执行单位是否为可执行的状态,上述最近执行信息表示在各个执行单位中最近执行的执行单位的识别符,
基于执行单位信息,在优选地选择最近执行的执行单位的识别符以外的识别符的制约下,选择任一个可执行的执行单位的识别符作为由处理器执行的执行单位的识别符,同时更新执行单位信息。
2.如权利要求1所述的调度方法,其特征在于,
所述执行单位信息保存在各个处理器可访问的存储器中,
所述选择以及更新是由执行与所选择的识别符对应的执行单位的处理器本身来进行。
3.如权利要求1或2所述的调度方法,其特征在于,
可否执行信息作为对各个执行单位分配一比特作为识别符的比特串而被保存,
所述选择以及更新通过不可分操作来进行。
4.如权利要求3所述的调度方法,其特征在于,
旋转比特串,使得与最近执行的执行单位对应的比特成为末尾,
通过从被旋转的比特串的开头开始依次检索可执行的执行单位的比特,进行所述选择。
5.如权利要求2所述的调度方法,其特征在于,
所述选择以及更新基于在与处理器对应的本地存储器中下载所述执行单位信息而进行,上述处理器执行与所选择的识别符对应的执行单位,
而且,在所述更新结束之后,将所述执行单位信息存储在所述存储器中。
6.如权利要求5所述的调度方法,其特征在于,
在所述存储器中还保存地址信息,所述地址信息将所述识别符和与该识别符对应的执行单位的内容的所述存储器中的存储目的地的地址相关联,
将所述执行单位信息存储在所述存储器之后,参照所述地址信息,从所述存储器中读出与所选择的识别符对应的执行单位的内容,执行该执行单位。
7.一种调度装置,其特征在于,包括:
执行单位信息保存单元,保存包括可否执行信息和最近执行信息的执行单位信息,上述可否执行信息与对每个执行单位赋予的识别符相关联地表示成为多处理器系统中所包含的多个处理器的执行对象的各个执行单位的每个执行单位是否为可执行的状态,上述最近执行信息表示各执行单位中最近执行的执行单位的识别符;
执行单位选择单元,基于所述执行单位信息,在优选地选择最近执行的执行单位的识别符以外的识别符的制约下,选择任一个可执行的执行单位的识别符作为由处理器执行的执行单位的识别符;以及
执行单位信息更新单元,随着所述选择,更新所述执行单位信息。
8.如权利要求7所述的调度装置,其特征在于,
所述执行单位信息保存单元在各个处理器可访问的存储器中保存所述执行单位信息,
所述执行单位选择单元以及所述执行单位信息更新单元由执行与所选择的识别符对应的执行单位的处理器本身构成。
9.如权利要求7或8所述的调度装置,其特征在于,
所述执行单位信息保存单元将可否执行信息作为对各个执行单位分配一比特作为识别符的比特串来保存,
所述执行单位选择单元以及所述执行单位信息更新单元通过不可分操作,进行所述选择以及所述更新。
10.如权利要求9所述的调度装置,其特征在于,
所述执行单位选择单元旋转比特串,使得与最近执行的执行单位对应的比特成为末尾,
通过从被旋转的比特串的开头开始依次检索可执行的执行单位的比特,进行所述选择。
11.一种程序,其特征在于,
使计算机执行以下功能:
保存包括可否执行信息和最近执行信息的执行单位信息的功能,上述可否执行信息与对每个执行单位赋予的识别符相关联地表示成为多处理器系统中所包含的多个处理器的执行对象的各个执行单位的每个执行单位是否为可执行的状态,上述最近执行信息表示各个执行单位中最近执行的执行单位的识别符;
基于所述执行单位信息,在优先地选择最近执行的执行单位的识别符以外的识别符的制约下,选择任一个可执行的执行单位的识别符作为由处理器执行的执行单位的识别符,同时更新所述执行单位信息的功能。
12.一种存储介质,是存储了程序的存储介质,其特征在于,
所述程序使计算机执行以下功能:
保存包括可否执行信息和最近执行信息的执行单位信息的功能,上述可否执行信息与对每个执行单位赋予的识别符相关联地表示成为多处理器系统中所包含的多个处理器的执行对象的各个执行单位的每个执行单位是否为可执行的状态,上述最近执行信息表示各个执行单位中最近执行的执行单位的识别符;
基于所述执行单位信息,在优先地选择最近执行的执行单位的识别符以外的识别符的制约下,选择任一个可执行的执行单位的识别符作为由处理器执行的执行单位的识别符,同时更新所述执行单位信息的功能。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP235582/2005 | 2005-08-15 | ||
JP2005235582A JP4963018B2 (ja) | 2005-08-15 | 2005-08-15 | スケジューリング方法およびスケジューリング装置 |
PCT/JP2006/310907 WO2007020739A1 (ja) | 2005-08-15 | 2006-05-31 | スケジューリング方法およびスケジューリング装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101180609A true CN101180609A (zh) | 2008-05-14 |
CN101180609B CN101180609B (zh) | 2011-06-08 |
Family
ID=37757408
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006800179477A Active CN101180609B (zh) | 2005-08-15 | 2006-05-31 | 调度方法以及调度装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8375390B2 (zh) |
EP (1) | EP1923784A4 (zh) |
JP (1) | JP4963018B2 (zh) |
CN (1) | CN101180609B (zh) |
WO (1) | WO2007020739A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102282543A (zh) * | 2009-01-16 | 2011-12-14 | 索尼计算机娱乐公司 | 信息处理装置和信息处理方法 |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7647483B2 (en) | 2007-02-20 | 2010-01-12 | Sony Computer Entertainment Inc. | Multi-threaded parallel processor methods and apparatus |
US8589943B2 (en) | 2007-08-15 | 2013-11-19 | Sony Computer Entertainment Inc. | Multi-threaded processing with reduced context switching |
US8352946B2 (en) * | 2009-08-11 | 2013-01-08 | International Business Machines Corporation | Managing migration ready queue associated with each processor based on the migration ready status of the tasks |
CN101996082B (zh) * | 2009-08-28 | 2014-06-11 | 国际商业机器公司 | 协处理器系统和在本地存储器上加载应用程序的方法 |
US8056080B2 (en) * | 2009-08-31 | 2011-11-08 | International Business Machines Corporation | Multi-core/thread work-group computation scheduler |
US9594660B2 (en) | 2014-03-27 | 2017-03-14 | International Business Machines Corporation | Multithreading computer system and program product for executing a query instruction for idle time accumulation among cores |
US9921848B2 (en) | 2014-03-27 | 2018-03-20 | International Business Machines Corporation | Address expansion and contraction in a multithreading computer system |
US9804846B2 (en) | 2014-03-27 | 2017-10-31 | International Business Machines Corporation | Thread context preservation in a multithreading computer system |
US9417876B2 (en) | 2014-03-27 | 2016-08-16 | International Business Machines Corporation | Thread context restoration in a multithreading computer system |
US9218185B2 (en) | 2014-03-27 | 2015-12-22 | International Business Machines Corporation | Multithreading capability information retrieval |
US10102004B2 (en) | 2014-03-27 | 2018-10-16 | International Business Machines Corporation | Hardware counters to track utilization in a multithreading computer system |
US9354883B2 (en) | 2014-03-27 | 2016-05-31 | International Business Machines Corporation | Dynamic enablement of multithreading |
US10101963B2 (en) * | 2016-08-16 | 2018-10-16 | Hewlett Packard Enterprise Development Lp | Sending and receiving data between processing units |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2253428A5 (zh) * | 1973-11-30 | 1975-06-27 | Honeywell Bull Soc Ind | |
US4796178A (en) * | 1985-10-15 | 1989-01-03 | Unisys Corporation | Special purpose processor for off-loading many operating system functions in a large data processing system |
JP2505526B2 (ja) * | 1988-04-11 | 1996-06-12 | 沖電気工業株式会社 | タスクのビットマップ管理方法 |
JP2804478B2 (ja) * | 1988-05-26 | 1998-09-24 | 株式会社日立製作所 | タスク制御方式及びオンライン・トランザクション・システム |
JPH02242434A (ja) * | 1989-03-16 | 1990-09-26 | Hitachi Ltd | タスクのスケジューリング方法 |
JPH0424828A (ja) * | 1990-05-21 | 1992-01-28 | Fuji Xerox Co Ltd | マルチタスク管理方式 |
JPH07146799A (ja) | 1993-11-22 | 1995-06-06 | Hitachi Ltd | マルチタスク・システムにおけるタスク切り換え方法 |
US20030110204A1 (en) * | 2000-02-17 | 2003-06-12 | Brenner Larry Bert | Apparatus and method for dispatching fixed priority threads using a global run queue in a multiple run queue system |
CN1152306C (zh) * | 2001-01-23 | 2004-06-02 | 英业达股份有限公司 | 防止多处理器计算机中各处理器间进程发生冲突的方法 |
US8566828B2 (en) | 2003-12-19 | 2013-10-22 | Stmicroelectronics, Inc. | Accelerator for multi-processing system and method |
US7802255B2 (en) * | 2003-12-19 | 2010-09-21 | Stmicroelectronics, Inc. | Thread execution scheduler for multi-processing system and method |
-
2005
- 2005-08-15 JP JP2005235582A patent/JP4963018B2/ja active Active
-
2006
- 2006-05-31 WO PCT/JP2006/310907 patent/WO2007020739A1/ja active Application Filing
- 2006-05-31 US US11/996,361 patent/US8375390B2/en active Active
- 2006-05-31 EP EP06756827A patent/EP1923784A4/en not_active Ceased
- 2006-05-31 CN CN2006800179477A patent/CN101180609B/zh active Active
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102282543A (zh) * | 2009-01-16 | 2011-12-14 | 索尼计算机娱乐公司 | 信息处理装置和信息处理方法 |
US8793695B2 (en) | 2009-01-16 | 2014-07-29 | Sony Corporation | Information processing device and information processing method |
CN102282543B (zh) * | 2009-01-16 | 2014-12-17 | 索尼电脑娱乐公司 | 信息处理装置和信息处理方法 |
Also Published As
Publication number | Publication date |
---|---|
JP4963018B2 (ja) | 2012-06-27 |
JP2007052511A (ja) | 2007-03-01 |
US8375390B2 (en) | 2013-02-12 |
EP1923784A4 (en) | 2010-02-17 |
US20090031315A1 (en) | 2009-01-29 |
EP1923784A1 (en) | 2008-05-21 |
WO2007020739A1 (ja) | 2007-02-22 |
CN101180609B (zh) | 2011-06-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101180609B (zh) | 调度方法以及调度装置 | |
CN103559014B (zh) | 用于处理嵌套流事件的方法和系统 | |
US9442760B2 (en) | Job scheduling using expected server performance information | |
CN103425533B (zh) | 用于管理嵌套执行流的方法和系统 | |
CN105579959B (zh) | 硬件加速器虚拟化 | |
He et al. | Matchmaking: A new mapreduce scheduling technique | |
JP4526412B2 (ja) | マルチプロセッサシステムにおけるタスク管理方法および装置 | |
EP1696318B1 (en) | Methods and apparatus for segmented stack management in a processor system | |
US5010482A (en) | Multi-event mechanism for queuing happened events for a large data processing system | |
US10942824B2 (en) | Programming model and framework for providing resilient parallel tasks | |
WO2018096316A1 (en) | Data processing | |
CN102483718A (zh) | 虚拟化环境中的高速缓存分区 | |
JPH04270421A (ja) | プロセサアーキテクチャ | |
JPH05508043A (ja) | 効率的な非仮想主メモリ管理のための方法 | |
JP2005235229A (ja) | マルチプロセッサシステムにおけるプロセッサタスクの移動方法および装置 | |
US6973650B1 (en) | Method of pipelined processing of program data | |
CN103197955A (zh) | 处理系统中动态生成的任务的信令、排序和执行 | |
Lou et al. | Efficient container assignment and layer sequencing in edge computing | |
US20140156959A1 (en) | Concurrent array-based queue | |
CN110245024A (zh) | 静态存储块的动态分配系统及其方法 | |
US20100251250A1 (en) | Lock-free scheduler with priority support | |
CN103197917A (zh) | 计算线程阵列粒度执行抢占 | |
Rolf et al. | Parallel consistency in constraint programming | |
CN109189506A (zh) | 一种基于php异步处理任务的方法及装置 | |
Swanson | Matchmaking: A new mapreduce scheduling |
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 |