多核处理器系统、控制程序以及控制方法

文档序号:6352206阅读:139来源:国知局
专利名称:多核处理器系统、控制程序以及控制方法
技术领域
本发明涉及控制任务的分配的多核处理器系统、控制程序以及控制方法。
背景技术
以往,CPU (Central Processing Unit :中央处理器)具有高速缓存,在高速缓存中储存有使用频度高的数据、执行频度高的程序的执行代码(例如,参照下述专利文献I)。所谓使用频度高的数据例如是指在执行中的程序内被多次参照的数据。所谓的执行频度高的程序是指例如每隔一定时间执行的多个步骤的程序(以下,称为“周期执行程序”)。
另外,公知有在多核处理器系统中,在执行被中断的任务被再次执行的情况下,在与中断前执行的CPU相同的CPU中调度该任务的技术(例如,参照下述专利文献2)。由此, 能够减少高速缓存未命中。并且,公知有在具有本地存储器的多核处理器系统中,基于本地存储器的有效活用程度确定在哪个本地存储器上捆绑哪个任务的技术(例如,参照下述专利文献3)。由此,能够防止数据转送引起的系统开销的增加。
专利文献I :日本特开2004 - 192403号公报
专利文献2 日本特开平08 - 30562号公报
专利文献3 日本特开平04 - 338837号公报
但若数据加载增加,则很多储存在高速缓存的数据、程序的执行代码被移出。例如,在不具有本地存储器的多核处理器系统中,在较多进行I / OCInput / Output:输入/ 输出)处理的任务被分配到一个CPU的情况下,来自共享存储器的数据加载增加。另外,若一个CPU执行多个任务,则储存在指令高速缓存的指令被频繁移出。
在向与分配了指令代码大小较大的任务的CPU、执行多个任务的CPU相同的CPU分配了周期执行程序的情况下,存在周期执行程序的执行代码被从高速缓存移出的概率增加这样的问题点。即、存在CPU将周期执行程序的执行代码从共享存储器向高速缓存再次加载的次数增加的问题点。
另外,由于CPU从共享存储器读出该执行代码的时间比该CPU从高速缓存读出执行代码的时间长,所以在该CPU不将该执行代码再次加载到高速缓存而执行的情况下,存在系统开销增加的问题点。
因此,例如,通过锁定储存有周期执行程序的执行代码的高速缓存的区域,能够使该执行代码不被从高速缓存移出。但若分配到执行该周期执行程序的CPU的其它任务是高速缓存未命中较大的任务,则由于能够由该其它的任务使用的高速缓存的区域减少,因此该其它的任务的高速缓存未命中增大。其结果,存在CPU的性能降低这样的问题点。发明内容
为了消除上述现有技术的问题点,本发明的目的在于提供能够不使特定的程序从高速缓存移出,从而能够减小对被分配到与周期执行程序相同的CPU的任务的执行带来的影响的多核处理器系统、控制程序以及控制方法。
根据本发明的一个观点,提供具备以下单元的多核处理器系统确定单元,其基于分配到各核的任务的信息量,从多核处理器中确定出与将特定的程序储存到高速缓存的一个核相比高速缓存未命中率低的其它核;移动单元,其将上述特定的程序从上述一个核的高速缓存移动到通过上述确定单元确定出的其它核的高速缓存;设定单元,其在通过上述移动单元将上述特定的程序移动到了上述其它核的高速缓存后,将上述其它核的高速缓存中储存了上述特定的程序的区域设定为写入禁止区域。
根据本多核处理器系统、控制程序、以及控制方法,实现了能够使特定的程序不从高速缓存移出,使对分配到与周期执行程序相同的CPU的任务的执行的影响减小的效果。


图I是表示多核处理器系统的硬件的框图。
图2是表不大小表152的一个例子的说明图。
图3是表不识别信息153的一个例子的说明图。
图4是多核处理器系统100的功能框图。
图5是表示锁定加载了周期执行程序的执行代码502的区域的例子的说明图。
图6是表示执行周期执行程序的例子的说明图。
图7是表示不是周期执行程序的任务的分配的说明图。
图8是表示指令代码大小的合计值的计算例的说明图。
图9是表示执行代码502的移动例的说明图。
图10是表示使储存有执行代码502的区域锁定的例子的说明图。
图11是表示0S141的控制处理顺序的流程图(其I)。
图12是表示0S141的控制处理顺序的流程图(其2)。
图13是表示基于监测控制器105的移动处理的流程图。
图14是表示基于下一个指定目标CPU的写入禁止设定处理的流程图。
图15是表示基于当前指定目标CPU的暂时停止处理的流程图。
具体实施方式
以下对本多核处理器系统、控制程序以及控制方法的优选实施方式进行详细说明。首先,此处,对上述的周期执行程序进行说明。周期执行程序是每隔一定时间执行的程序,并且不是通过其它的事件起动的程序。在一般的任务中执行的定时和执行时间不确定, 但在周期执行程序中执行的定时和执行时间没有变化。作为周期执行程序例如举出移动电话的通信待接程序。无论移动电话正在进行何种任务处理,移动电话的通信待接程序都定期地向基站询问通信来检测通信。
另外,在本实施方式的多核处理器系统中,所谓的多核处理器是指安装了多个核的处理器。若安装多个核,则可以是安装了多个核的单一的处理器,也可以是单核处理器并行处理的处理器组。此外,在本实施方式中,为了使说明简单化,以单核处理器并行处理的处理器组为例进行说明。
多核处理器系统的硬件
图I是表示多核处理器系统的硬件的框图。在图I中,多核处理器系统100具有CN 102934095 A书明说3/7页主CPUlOl、协CPU102 协CPU104、共享存储器107、和监测控制器105。另外,各CPU和共享存储器107分别经由总线106连接。各CPU和监测控制器105分别经由与总线106不同的总线连接。
此处,在主CPUlOl和协CPU102 协CPU104中,例如分别具有核、寄存器和高速缓存。主CPUlOl执行OS (Operating System :操作系统),管理多核处理器系统100的整体的控制。0S141具有对将软件的各进程分配到哪个CPU进行控制的控制程序,具有对分配到主CPUlOl的任务的切换进行控制的功能。
协CPU102 协CPU104分别执行0S142 0S144。0S142 0S144具有对分配到各CPU的任务的切换进行控制的功能。
各CPU的高速缓存具有指令高速缓存和数据高速缓存的两种高速缓存。指令高速缓存是保持程序的高速缓存,数据高速缓存是对程序执行中使用的数据进行保持的高速缓存。
主CPUlOl作为高速缓存具有指令高速缓存111和数据高速缓存121,协CPU102作为高速缓存具有指令高速缓存112和数据高速缓存122。协CPU103作为高速缓存具有指令高速缓存113和数据高速缓存123,协CPU104作为高速缓存具有指令高速缓存114和数据高速缓存124。
各CPU的高速缓存把握以及管理更新状态,通过与其它的高速缓存交换更新状态的信息,各CPU的高速缓存能够把握在哪个高速缓存存在最新的数据。监测控制器(snoop controller) 105进行该信息交换。
另外,各CPU具有寄存器。主CPU101具有寄存器131,协CPU102具有寄存器132。 协CPU103具有寄存器133,协CPU104具有寄存器134。
另外,监测控制器105若例如接受包含与移动源的高速缓存、移动目标的高速缓存、和移动对象相关的信息的移动指示,则从移动源的高速缓存复制移动对象,将复制的移动对象储存到移动目标的高速缓存。由此,监测控制器105从移动源的高速缓存向移动目标的高速缓存移动移动对象。
另外,在本实施方式中,储存周期执行程序的执行代码的高速缓存的区域无论是哪个CPU的高速缓存都设为相同地址的区域。例如,使用者可以预先决定将周期执行程序的执行代码储存在高速缓存的前端的区域。
共享存储器107例如是被主CPU101和协CPU102 协CPU104共享的存储器。共享存储器107例如存储有进程管理表151、大小表152、识别信息153、和0S141 0S144的启动程序等程序。共享存储器107例如具有ROM (Read Only Memory :只读存储器)、RAM (Random Access Memory :随机存取存储器)、和快闪 ROM (Flash ROM)等。
例如,ROM或者快闪ROM存储该程序等,RAM被作为主CPU101和协CPU102 协 CPU104的工作区域使用。存储在共享存储器107的该程序被加载到各CPU,从而使各CPU 执行被编码的处理。
所谓的进程管理表151例如是表示各任务被分配到哪个CPU,或被分配的CPU是否正在执行该任务的信息。各CPU读出进程管理表151存储到各CPU的高速缓存。若0S141 将任务分配到主CPU101以及协CPU102 协CPU104中的任意一个CPU,则向进程管理表151 登记该任务被分配到哪个CPU。5
并且,若产生任务的切换,则各CPU向进程管理表151登记哪个任务成为了执行状态。另外,若任务的执行结束,则各CPU从进程管理表151删除该结束了的任务的信息。
图2是表不大小表152的一个例子的说明图。大小表152是表不各任务的指令代码大小的表。大小表152具有任务名称的项目201和指令代码大小的项目202。在任务名称的项目201保持有任务名称,在指令代码大小的项目202保持有任务的指令代码大小。所谓的指令代码大小例如是指任务的步骤数。
例如,在大小表152中,在任务名称的项目201的值为任务A的情况下,指令代码大小的项目202的值为300。
图3是表示识别信息153的一个例子的说明图。识别信息153是表示哪个任务是周期执行程序的任务的信息。识别信息153具有任务名称的项目301。例如,通过识别信息 153判别出任务G是周期执行程序的任务。
多核处理器系统100的功能模块
图4是多核处理器系统100的功能框图。多核处理器系统100例如具有确定部 401、移动部402、和设定部403 设定部406。确定部401和设定部403由被主CPUlOl执行的0S141具有。移动部402由监测控制器105具有。设定部404由被协CPU102执行的 0S142具有。设定部405由被协CPU103执行的0S143具有。设定部406由被协CPU104执行的0S144具有。
确定部401基于分配到各CPU的任务的信息量,从多核处理器中确定出与在高速缓存中储存特定的程序的一个CPU相比高速缓存未命中率低的其它CPU。
在本实施方式中,将各任务的信息量称为指令代码大小,将指令代码大小设为任务的步骤数,但并不限于此,例如,也可以设为任务的数据大小。若指令代码大小、数据大小小,则使用指令高速缓存的区域较少,所以高速缓存未命中率变小。另外,在本实施方式中, 列举周期执行程序作为特定的程序,但并不限于此,也可以将使用者选择的程序作为特定的程序。
接下来,移动部402将特定的程序从上述一个核的高速缓存移动到通过确定部 401确定出的其它核的高速缓存。
在确定出的CPU中动作的OS具有的设定部在通过移动部402使特定的程序移动到其它的CPU的高速缓存后,将其它的CPU的高速缓存中储存了特定的程序的区域设定为写入禁止区域。并且,移动源的设定部在特定程序移动后,解除设定为写入禁止区域的特定程序的区域的禁止设定。
根据以上所述,使用附图对实施例进行说明。在实施例中,将一个核作为当前指定目标CPU,将其它的核作为下一个指定目标CPU。
图5是表示锁定加载了周期执行程序的执行代码502的区域的例子的说明图。首先,0S141将周期执行程序的执行代码502加载至主CPUlOl的指令高速缓存111。并且, 0S141通过寄存器设定锁定加载了该执行代码502的区域。所谓锁定被加载的区域表示将被加载的区域设定为写入禁止区域。
各CPU的寄存器具有与高速缓存相关的寄存器,能够在与高速缓存相关的寄存器中设定高速缓存的工作区域。因此,通过将该被加载的区域从高速缓存的工作区域分离,该被加载的区域被锁定。另外,0S141将当前指定目标CPU和下一个指定目标CPU设定为主CPUlOl。
图6是表示执行周期执行程序的例子的说明图。若锁定周期执行程序的执行代码 502,则0S141监视执行等待队列501,若在执行等待队列501中任务被累积,则0S141执行 Cl):取出任务G。
此处,所谓的执行等待队列501是作为主0S141的0S141具有的队列。例如,通过用户操作而产生了分配指示的任务进入执行等待队列501,0S141从执行等待队列501取出任务,0S141决定向哪个CPU分配。
并且,0S141基于识别信息153判断任务G是否是周期执行程序。由于任务G是周期执行程序,所以0S141向当前指定目标CPU分配任务G,0S141执行(2):执行任务G。
图7是表示不是周期执行程序的任务的分配的说明图。在图7中,任务A被分配到主CPUlOl,任务B和任务E被分配到协CPU102,任务C被分配到协CPU103,任务D被分配到协CPU104。并且,0S141执行(I):从执行等待队列501取出任务,基于识别信息153判断取出的任务是否是周期执行程序。此处,取出的任务是任务F,任务F不是周期执行程序。 0S141将任务F分配到任意的CPU。此处,执行(2):任务F被分配到主CPU101。
图8是表示指令代码大小的合计值的计算例的说明图。接下来,0S141执行(3) 基于大小表152计算各CPU的合计指令代码大小。任务A的指令代码大小是300,任务F的指令代码大小是250,所以主CPUlOl的合计指令代码大小是550。任务B的指令代码大小是300,任务E的指令代码大小是150,所以协CPU102的合计指令代码大小是450。
任务C的指令代码大小是400,所以协CPU103的合计指令代码大小是400。任务 D的指令代码大小是450,所以协CPU104的合计指令代码大小是450。
接下来,0S141确定合计指令代码大小比当前指定目标CPU小的CPU。S卩、0S141 能够确定高速缓存未命中率比当前指定目标CPU小的CPU。此处,确定出协CPU102 协 CPUI04。
确定出的CPU是多个,所以例如0S141选择合计指令代码大小最低的协CPU103。 即、0S141能够在高速缓存未命中率比当前指定目标CPU小的CPU中,确定出高速缓存未命中率最小的协CPU103。0S141执行(4):将确定出的协CPU103设定为下一个指定目标CPU。
图9是表示执行代码502的移动例的说明图。接下来,0S141执行(5):向作为下一个指定目标CPU的协CPU103指示暂时停止执行。并且,0S143 (在作为下一个指定目标 CPU的协CPU103上动作的OS)暂时停止任务C的执行。
0S141执行(6):向监测控制器105通知使周期执行程序的执行代码502从当前指定目标CPU的指令高速缓存移动到下一个指定目标CPU的指令高速缓存的移动指示。在该移动指示中,移动源是当前指定目标CPU的指令高速缓存,移动目标是下一个指定目标CPU 的指令高速缓存,移动对象是执行代码502。
并且,若监测控制器105接受移动指示,则监测控制器105执行(7):将周期执行程序的执行代码502从当前指定目标CPU的指令高速缓存移动到下一个指定目标CPU的指令高速缓存。监测控制器105执行(8):向0S141通知移动完成。
图10是表示锁定储存有执行代码502的区域的例子的说明图。接下来,0S141执行(9):向下一个指定目标CPU通知锁定下一个指定目标CPU的指令高速缓存的区域中储存有执行代码502的区域的锁定指示。0S143执行(10):通过寄存器设定锁定执行对象,0S143执行(11):向0S141通知锁定结束。
0S141若接受锁定结束,则执行(12):向下一个指定目标CPU通知暂时停止解除指示。并且,0S143解除任务C的暂时停止。0S141执行(13):通过寄存器设定解除主CPUlOl 的指令高速缓存111的锁定。0S141执行(14):将当前指定目标CPU设定为协CPU103。
0S141的控制处理顺序
图11以及图12是表示0S141的控制处理顺序的流程图。首先,0S141获取大小表152和识别信息153 (步骤SI 101),将主CPUlOl设定为当前指定目标CPU以及下一个指定目标CPU (步骤S1102)。接下来,0S141向主CPUlOl的指令高速缓存111加载周期执行程序的执行代码(步骤S1103),锁定加载的执行代码的区域(步骤S1104)。
接下来,0S141判断主OS的执行等待队列501是否为空(步骤S1105),在主OS的执行等待队列501为空的情况下(步骤S1105 是”),返回到步骤S1105。此外,主OS是 0S141o另一方面,在判断为主OS的执行等待队列501非空的情况下(步骤S1105 否”), 0S141从主OS的执行等待队列501获取任务(步骤S1106)。
接下来,0S141判断取出的任务是否是周期执行程序(步骤S1107)。在0S141判断为取出的任务是周期执行程序的情况下(步骤S1107 是”),向当前指定目标CPU分配取出的任务(步骤SI 108),移至步骤SI 105。
另一方面,在0S141判断为取出的任务不是周期执行程序的情况下(步骤S1107 “否”),将取出的任务分配到任意的CPU (步骤S1109)。并且,0S141计算按照每个CPU分配的任务的指令代码大小的合计值(步骤S1110)。
0S141确定计算结果比当前指定目标CPU小的CPU(步骤S1111)。即、确定高速缓存未命中率比当前指定目标CPU低的CPU。并且,0S141判断是否确定出了计算结果比当前指定目标CPU小的CPU(步骤S1112),在判断为未确定出该小的CPU的情况下(步骤S1112 “否”),返回步骤S1105。
另一方面,在0S141判断为确定出了该小的CPU的情况下(步骤S1112 是”),将确定出的CPU设定为下一个指定目标CPU (步骤S1113)。例如,在确定了多个CPU的情况下,将计算结果最小的CPU指定为下一个指定目标CPU。由此,能够将周期执行程序储存到高速缓存使用量最少的CPU。由此,能够使对其它任务的执行的影响为最小限。
并且,0S141向下一个指定目标CPU通知执行暂时停止指示(步骤S1114)。接下来,0S141将从当前指定目标CPU的指令高速缓存到下一个指定目标CPU的指令高速缓存的周期执行程序的移动指示通知给监测控制器105 (步骤S1115),判断是否从监测控制器 105接受了移动结束的通知(步骤S1116)。在0S141判断为未从监测控制器105接受移动结束的通知的情况下(步骤S1116 否”),返回到步骤S1116。
在0S141判断为从监测控制器105接受了移动结束的通知的情况下(步骤S1116 “是”),向下一个指定目标CPU通知锁定加载了周期执行程序的区域的指示(步骤S1117)。 并且,0S141判断是否从下一个指定目标CPU接受了锁定结束(步骤SI 118)。在0S141判断为未从下一个指定目标CPU接受到锁定结束的情况下(步骤S1118:“否”),返回步骤S1118。
在0S141判断为从下一个指定目标CPU接受了锁定结束的情况下(步骤S1118 : “是”),向下一个指定目标CPU通知暂时停止解除指示(步骤S1119)。并且,0S141将解除当前指定目标CPU的指令高速缓存的锁定的解除指示通知给当前指定目标CPU(步骤S1120)。8
接下来,0S141判断是否从下一个指定目标CPU接受了锁定结束(步骤S1121)。在 0S141判断为未从下一个指定目标CPU接受到锁定结束的情况下(步骤S1121 否”),返回步骤S112 1。在OS 141判断为从下一个指定目标CPU接受了锁定结束的情况下(步骤S1121 : “是”),将当前指定目标CPU设定为下一个指定目标CPU (步骤S1122),返回步骤S1105。
基于监测控制器105的移动处理
图13是表示基于监测控制器105的移动处理的流程图。首先,监测控制器105 判断是否接受了移动指示(步骤S1301),在判断为未接受移动指示的情况下(步骤S1301 “否”),返回步骤S1301。
监测控制器105在判断为接受了移动指示的情况下(步骤S1301 是”),将周期执行程序的执行代码从当前指定目标CPU的指令高速缓存移动到下一个指定目标CPU的指令高速缓存(步骤S1302)。接下来,监测控制器105向主OS通知移动结束(步骤S1303),返回步骤S1301。
基于下一个指定目标CPU的写入禁止设定处理
图14是表示基于下一个指定目标CPU的写入禁止设定处理的流程图。首先,下一个指定目标CPU判断是否接受了锁定指示(步骤S1401)。在下一个指定目标CPU判断为未接受锁定指示的情况下(步骤S1401 否”),返回步骤S1401。
另一方面,在下一个指定目标CPU判断为接受了锁定指示的情况下(步骤S1401 “是”),通过设定与高速缓存相关的寄存器来锁定指定区域(步骤S1402)。而且,下一个指定目标CPU向主OS通知锁定结束(步骤S1403)。此外,主OS是0S141。
基于当前指定目标CPU的暂时停止处理
图15是表示基于当前指定目标CPU的暂时停止处理的流程图。首先,当前指定目标CPU判断是否接受了锁定解除指示(步骤S1501)。在当前指定目标CPU判断为未接受锁定解除指示的情况下(步骤S1501 否”),返回步骤S1501。
另一方面,在当前指定目标CPU判断为接受了锁定解除指示的情况下(步骤 S1501 是”),通过设定与高速缓存相关的寄存器来解除指定区域的锁定(步骤S1502)。并且,当前指定目标CPU向主OS通知解除结束(步骤S1503)。
如以上说明所示,根据多核处理器系统、控制程序以及控制方法,将周期执行程序移动到与储存有周期执行程序的CPU相比高速缓存未命中率低的CPU的高速缓存。并且,将该低的CPU的高速缓存中储存了周期执行程序的区域设定为写入禁止区域。由此,由于周期执行程序常驻于高速缓存,不会从高速缓存移出,所以能够防止再次加载周期执行程序。 并且,即使周期执行程序常驻于CPU的高速缓存,也能够使对分配到该CPU的其它任务的执行的影响减小。即、能够抑制在与分配到各CPU的周期执行程序不同的其它任务的执行时产生高速缓存未命中,能够防止CPU的性能降低。
附图标记说明
100…多核处理器系统
105…监测控制器
111、112、113、114…指令高速缓存
权利要求
1.一种多核处理器系统,其特征在于,具备确定单元,其基于分配给各核的任务的信息量,来从多核处理器中确定与将特定的程序储存到高速缓存的一个核相比高速缓存未命中率较低的其它核;移动单元,其将所述特定的程序从所述一个核的高速缓存移动到由所述确定单元确定出的其它核的高速缓存;和设定单元,在由所述移动单元将所述特定的程序移动到所述其它核的高速缓存后,该设定单元将所述其它核的高速缓存中储存了所述特定的程序的区域设定为写入禁止区域。
2.一种控制程序,其特征在于,使能够访问如下控制电路、即若接受移动目标核的高速缓存、移动源核的高速缓存、和移动对象程序的移动通知,则将所述移动对象程序从该移动目标核的高速缓存移动到该移动源核的高速缓存的控制电路的多核处理器执行如下步骤确定步骤,基于分配给各核的任务的信息量,来从所述多核处理器中确定与将特定的程序储存到高速缓存的一个核相比高速缓存未命中率较低的其它核;移动处理步骤,使所述控制电路将所述特定的程序从所述一个核的高速缓存移动到由所述确定步骤确定出的其它核的高速缓存;和设定步骤,在由所述移动处理步骤使所述特定的程序移动到所述其它核的高速缓存后,将所述其它核的高速缓存中储存了所述特定的程序的区域设定为写入禁止区域。
3.—种控制方法,其特征在于,由能够访问如下控制电路、即若接受移动目标核的高速缓存、移动源核的高速缓存、和移动对象程序的移动通知,则使所述移动对象程序从该移动目标核的高速缓存移动到该移动源核的高速缓存的控制电路的多核处理器执行如下步骤确定步骤,基于分配给各核的任务的信息量,来从所述多核处理器中确定与将特定的程序储存到高速缓存的一个核相比高速缓存未命中率较低的其它核;移动处理步骤,使所述控制电路将所述特定的程序从所述一个核的高速缓存移动到由所述确定步骤确定出的其它核的高速缓存;和设定步骤,在由所述移动处理步骤使所述特定的程序移动到所述其它核的高速缓存后,将所述其它核的高速缓存中储存了所述特定的程序的区域设定为写入禁止区域。全文摘要
本发明涉及多核处理器系统、控制程序以及控制方法。其中,OS(141)从多核处理器计算分配到各CPU的任务的指令代码大小的合计值,确定与储存有执行代码(502)的主CPU(101)相比计算结果小的CPU。确定协CPU(103)。监测控制器(105)将执行代码(502)从协CPU(103)的指令高速缓存(111)移动到协CPU(103)的指令高速缓存(113)。OS(143)在将执行代码(502)移动到协CPU(103)的指令高速缓存(113)后,将指令高速缓存(113)中储存了执行代码的区域设定为写入禁止区域,从而使执行代码(502)常驻于指令高速缓存(113)。
文档编号G06F12/08GK102934095SQ20108006727
公开日2013年2月13日 申请日期2010年6月10日 优先权日2010年6月10日
发明者栗原康志, 山下浩一郎, 山内宏真 申请人:富士通株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1