专利名称:多处理器系统的制作方法
技术领域:
本发明涉及在多处理器系统中高效率地并行执行多个程序的技术。
背景技术:
在以往的多处理器系统中,有如下方法程序或任务的切换由OS (Operating System 操作系统)执行,作为任务所固有的信息、且执行任务所需要的程序计数器及堆栈 等的上下文的切换由OS管理(例如参照专利文献1)。此外,在处理器中,也有通过硬件进行上下文的切换的方法(例如参照专利文献 2)。专利文献1 日本特开2005-043959号公报专利文献2 日本特开2003-271399号公报但是,在由OS执行上下文的切换的情况下,会发生因上下文的保存及恢复造成的 开销,成为性能变差的原因。此外,在按照多个处理器执行基于硬件的上下文切换的情况 下,如果对指定的处理器进行由非固定执行的程序的执行请求带来的中断,则仅在该处理 器中发生因非固定执行的程序的中断带来的调度的妨碍。因此,不能取得多个处理器间的 平衡,除了对于指定的处理器的固定执行的多个程序的需要性能以外,单单非固定执行的 程序的需要性能(对其添加了发生频率)也成为处理器的要求性能。
发明内容
所以,目的是解决上述问题,不会发生因上下文保存恢复带来的开销,并且通过取 得多个处理器中的性能平衡,在使各处理器中的需要性能为最小的同时,作为系统整体得 到较高的性能。为了解决上述问题,有关本发明的多处理器系统具备多个处理器,将多个程序一 边切换一边执行;第一上下文存储器,存储由上述多个处理器中的某一个处理器非固定执 行的程序的上下文数据,该第一上下文存储器由上述多个处理器共享;第二上下文存储器, 设有与上述多个处理器的个数相同的个数,分别存储对应的上述处理器固定执行的程序的 上下文数据,该第二上下文存储器由相关处理器专用;保存恢复控制部,同样设有与上述多 个处理器的个数相同的个数,分别在对于对应的上述处理器有程序的执行请求的情况下, 如果该程序是上述非固定执行的程序,则选择上述第一上下文存储器,并且如果是上述固 定执行的程序,则选择上述第二上下文存储器,在所选择的上下文存储器与该处理器之间 进行该程序的上下文数据的保存及恢复,该保存恢复控制部由相关处理器专用;以及选择 请求部,每当发生上述非固定执行的程序的执行请求时,选择上述多个处理器中的某一个 处理器,对所选择的处理器进行该程序的执行请求。另外,将“多个A中的各个A进行B (为 B),,称作“多个A分别进行B (为B) ”。多个第二上下文存储器中的各个第二上下文存储器 存储与该第二上下文存储器对应的处理器固定执行的程序的上下文数据。该第二上下文存 储器由该处理器专用。
根据该结构,多个处理器能够分别使用该处理器专用的第二上下文存储器,与其 他处理器的动作无关地、自由地执行固定执行的程序。例如,能够不受其他处理器的动作妨 碍而自由地进行选择在固定执行的多个程序中执行哪一个的调度,或不需要从其他处理器 的该程序的数据传送等的大量的数据传送。另一方面,例如通过用户输入带来的中断等的 非固定中断而由多个处理器中的某一个处理器非固定执行的程序等的、由多个处理器中的 某一个处理器非固定执行的程序,通过由执行该程序的处理器使用第二上下文存储器,不 论是哪个处理器都能够执行。由此,每当发生执行请求时,由在该发生时选择的处理器执 行,能够防止执行的处理器集中于例如1个处理器等的少数处理器而多处理器系统的性能 下降的情况。此外,通过将执行非固定执行的程序的处理器充分分散到多个处理器,能够减 少例如因非固定执行的程序的执行而阻碍上述固定执行的程序的执行的情况,相反能够阻 碍因固定执行的程序的执行而阻碍非固定执行的程序的执行。因此,能够防止多处理器系 统的性能下降、提高多处理器系统的性能。另外,固定执行的程序例如可以是所谓的服务程序,也可以是所谓的守护 (daemon)程序,也可以是HTTP (HyperText Transfer Protocol 超文本传输协议)服务器 等的服务器用程序,也可以是常时监视对象的监视程序。另一方面,非固定执行的程序也可以是处理键输入等的用户输入、基于通信的输 入、对发生0的除法等的各种事件进行处理的事件处理用的程序。这里,该多处理器也可以是具备由上述多个处理器共享的主存储器;上述多个处 理器分别使用该主存储器,分别执行上述非固定执行的程序及上述固定执行的程序。根据该结构,例如上述多个处理器分别使用该处理器专用的专用存储器执行程 序。由此,与所选择的处理器从该处理器以外的其他处理器的其专用存储器花费较长时间 取得非固定执行的程序的处理过程中的中间数据等的数据的情况等相比,使非固定执行的 程序的处理过程中的数据的取得的延迟变少,多处理器系统能够更高速地动作。这里,该多处理器也可以是,上述多个处理器分别具备多个寄存器组;以及寄存 器组选择部,在上述多个寄存器组中选择某一个寄存器组,作为该处理器在程序的执行中 利用的执行用的寄存器组,并且将所选择的寄存器组以外的其他某一个寄存器组选择为上 下文数据的保存恢复用的寄存器组;上述多个处理器分别使用相关处理器的相关寄存器组 选择部选择为上述执行用的寄存器的寄存器组执行程序;在相关处理器使用所选择的上述 执行用的寄存器组来执行程序的同时,上述保存恢复控制部对所选择的上述保存恢复用的 寄存器组,进行上下文数据的保存及恢复。根据该结构,通过例如与使用执行用寄存器组的程序的执行并行地进行上下文数 据的保存恢复等、与该执行同时进行上下文数据的保存恢复,防止在保存及恢复的处理、程 序的执行的处理中发生开销(延迟时间),能够使多处理器系统高速化。这里,该多处理器系统也可以是上述多个处理器分别具有本地高速缓冲存储器的 共享存储器型多处理器系统。根据该结构,能够避免使固定执行的程序的处理在执行该程序的处理器的外部产 生无用的动作,并能够防止因为外部的动作、为了该程序的处理而在该处理器中发生无用 的动作,能够使多处理器系统的动作高速化。这里,也可以是,上述选择请求部在每当发生上述非固定执行的程序的执行请求时,在上述多个处理器之中,选择与上次发生上述非固定执行的程序的执行请求时选择的 处理器不同的处理器。根据该结构,不论哪个处理器都能够将非固定执行的程序的处理各进行相同的处 理量,能够可靠且充分地将非固定执行的程序的处理分散到多个处理器中,能够充分且可 靠地提高多处理器系统的性能。另外,例如选择请求部也可以保持确定多个处理器中的1个处理器的确定数据, 选择由所保持的确定数据确定的处理器,并且在每当进行该选择时,将保持的确定数据更 新为确定所选择的上述处理器以外的其他处理器的确定数据。这里,也可以是,上述选择请求部检测上述多个处理器的动作状态,选择对于所检 测到的动作状态具有预先设定的对应关系的处理器。如果是该结构,则能够检测例如在各处理器中哪个是睡眠状态(空闲状态)等的 动作状态,即检测哪个处理器处于有用来执行非固定执行的程序的富余的预先设定的状态 等的各处理器的动作状态。并且,能够基于该检测选择处于睡眠状态的处理器等、对应于动 作状态的适当的处理器,能够可靠地选择适合于选择时的动作状态的实际情况的处理器, 能够充分且可靠地提高多处理器系统的性能。此外,在解决上述问题时,有关本发明的他的多处理器系统也可以采用以下的结 构。即,(a)具有多个处理器,将多个程序一边切换一边执行;主存储器,由上述多个处理 器共享;第二上下文存储器,由上述多个处理器分别专用,用来存储固定执行的1个以上的 程序的上下文数据;第一上下文存储器,由上述多个处理器共享,用来存储由上述多个处理 器中的某一个处理器非固定执行的1个以上的程序的上下文数据;选择目标切换单元,在 每当发生上述非固定执行的1个以上的程序的执行请求时,决定选择上述多个处理器中的 哪一个处理器,将上述执行请求对所选择的处理器请求执行;以及处理控制单元,由上述多 个处理器分别专用,根据规定的程序切换定时、或来自上述选择目标切换单元的上述执行 请求,选择上述第二上下文存储器或上述第一上下文存储器中的某一个,对所连接的处理 器进行上下文数据的保存恢复。由此,能够使非固定执行的程序的处理分散到多个处理器中,并且固定执行的程 序能够按照处理器作为本地任务独立地调度。由此,能够维持调度的容易性,并且通过高效 率的程序执行而贡献于处理器系统的性能提高。进而,也可以是,(b)上述多个处理器分别具备多个寄存器组;以及寄存器组选 择单元,选择多个寄存器组的某一个作为程序执行对象,选择没有被选择为上述程序执行 对象的寄存器组的某一个作为上下文保存恢复对象;上述处理器使用上述寄存器组选择单 元选择的寄存器组执行程序,对被选择为上述上下文保存恢复对象的寄存器组,与程序的 执行平行地进行上下文数据的保存恢复。由此,没有保存恢复带来的处理的开销,能够在维持调度的容易性的同时贡献于 高效率的程序执行。进而,也可以是,(C)上述多处理器系统是多个处理器分别具有本地高速缓冲存储 器的共享存储器型多处理器系统。由此,固定执行的程序不会在处理器间移动,所以能够不产生用于保持放置在本 地高速缓冲中的程序的命令及数据的一贯性的探测(snoop)动作等带来开销而进行程序的执行,有利于处理器系统的性能提高。进而,也可以是,(d)上述选择目标切换单元按照预先设定的顺序,每当发生上述 非固定执行的1个以上的程序的执行请求时,切换上述多个处理器的选择目标。由此,能够使非固定执行的程序的处理器的分配次数均等化,能够进行高效率的 程序执行,有利于处理器系统的性能提高。或者,也可以是,(e)上述选择目标切换单元基于上述多个处理器的动作状态决定 选择目标。由此,能够将非固定执行的程序的处理器的分配向在该时点为空闲状态等的有富 余的处理器分配,有利于处理器系统的性能提高。或者,也可以是,(f)上述多个处理器分别具备事件检测单元,该事件检测单元检 测将上述固定执行的1个以上的程序的执行中断的事由的发生及中断的事由消除的情况, 控制程序执行的停止/再开始;上述选择目标切换单元基于来自上述事件检测单元的事件 信息决定选择目标。由此,能够将非固定执行的程序的处理器的分配按照各处理器的事件信息灵活地 分配给处理器,有利于处理器系统的性能提高。或者,也可以是,(g)上述多个处理器分别具备事件检测单元,该事件检测单元检 测将上述固定执行的1个以上的程序的执行中断的事由的发生及中断的事由消除的情况, 控制程序执行的停止/再开始;上述选择目标切换单元基于来自上述事件检测单元的事件 信息的规定期间内的履历来决定选择目标。由此,能够将非固定执行的程序的处理器的分配,将各处理器的过去的事件信息 也包括在内而灵活地分配给处理器,有利于处理器系统的性能提高。另外,也可以采用以下结构。即,采用一种多处理器系统,具有本地上下文存储 器,多个处理器分别专用,存储固定执行的程序的上下文数据;以及共享上下文存储器,多 个处理器共享,存储非固定执行的程序的上下文数据;通过将固定执行的程序作为各处理 器的本地线程来执行、非固定执行的程序分配给多个处理器中的某一个处理器执行,能够 在维持实时性的同时高速地执行事件处理。发明效果根据本发明,通过将固定执行的程序用指定的处理器执行,不会发生用于高速缓 冲的一贯性保持的开销,并且通过可将非固定执行的程序分配给多个处理器,能够使非固 定执行的程序请求的性能分散到多个处理器中,有利于处理器系统的性能提高。
图1是表示实施方式1的多处理器系统的结构的模块图。图2是表示实施方式1的处理控制部的结构的模块图。图3是表示实施方式1的选择目标切换部的结构的模块图。图4是说明实施方式1的上下文切换的时间图。图5是说明实施方式1的程序的执行的时间图。图6是说明实施方式1的程序的执行的时间图。图7是表示实施方式2的多处理器系统的结构的模块图。
图8是表示实施方式2的选择目标切换部的结构的模块图。图9是表示实施方式2的选择目标切换部的结构的模块图。图10是说明实施方式2的程序的执行的时间图。图11是表示实施方式3的多处理器系统的结构的模块图。图12是表示实施方式3的选择目标切换部的结构的模块图。图13是说明实施方式3的程序的执行的时间图。
具体实施例方式(实施方式1)以下,参照附图,对有关本发明的实施方式1进行说明。图1是表示有关本发明的实施方式1的多处理器系统100的结构的模块图。多处理器系统100如图1所示,具备两个处理器元件101、选择目标切换部109、共 享上下文存储器110、上下文数据选择器111、共享总线150、和主存储器151。两个处理器元件101分别具备CPU102、处理控制部103、本地上下文存储器104、 寄存器组105、寄存器组106、上下文数据选择器107、上下文数据选择器108、和本地高速缓 冲存储器152。另外,“多个A中的各个A是B (进行B),,称作“多个A分别是B (进行B) ”。 各个处理器元件101具备该处理器元件101的CPU102(参照图1)。多个处理器元件101具 备与包含在多个处理器元件101中的处理器元件101的个数(两个)相同的个数(两个) 的 CPU102。以下,将图1中左侧的处理器元件101称作左侧的处理器元件101,将图1中右侧 的处理器元件101称作右侧的处理器元件101。图2是表示有关本发明的实施方式1的各处理控制部103(图1)的内部结构的模 块图。以下说明的处理控制部103的内部结构例如是左侧的处理器元件101的内部结构, 另一个右侧的处理器元件101具有与以下说明的左侧的处理器元件101的内部结构相同的 内部结构。处理控制部103如图2所示,具备上下文切换控制部120、周期计数器121、和本地 事件检测部122。图3是表示有关本发明的实施方式1的选择目标切换部109(图1)的内部结构的 模块图。选择目标切换部109如图3所示,具备CPU选择状态123、和执行请求目标选择部 124。图4是说明处理器元件101中的、由选择寄存器组105及寄存器组106中的某一 个的数据的上下文数据选择器107及上下文数据选择器108构成的选择器的动作、和使用 由该选择器选择的数据的、CPU102中的程序A C的执行的处理的时间图。另外,在图4的说明中,程序A C例如是由左侧的处理器元件101的CPU102执 行的多个程序,另一个右侧的处理器元件101的CPU102通过与图4的说明同样的多个程序 的执行的处理同样的处理,执行多个程序。在到时刻t3为止的期间,CPU102执行程序A。在图4中,在时刻t3为止的期间,由上下文数据选择器107及上下文数据选择器108构成的选择器关于通过CPU102中的程序执行进行的读出及写入访问,选择在图1中在 上侧表示的寄存器组105作为程序执行对象的寄存器组,关于处理控制部103进行的上下 文数据的读出(保存)及写入(恢复)访问,选择另一个下侧的寄存器组106作为上下文 保存恢复对象寄存器组。另外,该寄存器如图1所示,在多处理器系统100不是仅具有寄存 器组105和寄存器组106这两个寄存器组、而具有3个以上的寄存器组的情况下,从各寄存 器组中,选择作为程序执行对象的寄存器组以外的他的寄存器组,作为上下文保存恢复对 象寄存器组。在到时刻t3为止的期间,CPU102使用在上下文数据选择器107及上下文数据选 择器108选择为执行对象的寄存器组的寄存器组105中保持的、程序A的上下文,执行程序 A0并且,在从时刻tl到时刻t2的期间,处理控制部103通过调度而将CPU102接着计 划执行的程序B的上下文数据恢复,所以在从时刻tl到时刻t2的期间,对于由选择器选择 为上下文保存恢复对象寄存器组的、不是程序执行对象的下侧的寄存器组106,与CPU102 中的程序执行并行地进行存储在该保存恢复对象寄存器组中的已有的程序N的上下文数 据的保存、以及向该保存恢复对象寄存器组的、程序B的上下文数据的恢复。在时刻t3,上下文数据选择器107及上下文数据选择器108切换选择目标,以使得 对于来自CPU102的访问选择下侧的寄存器组106、对于来自处理控制部的访问选择上侧的 寄存器组105。由此,CPU102不产生上下文的保存及恢复的处理带来的开销,而从时刻t3起迅速 开始程序B的执行。图5是说明CPU102执行固定执行的多个程序的情况下的多处理器系统100的动 作的时间图。如图5所示,各CPU102分别在多处理器系统100中没有非固定执行的程序的执行 请求的情况下,执行存储在有两个的本地上下文存储器104中的、对应于该CPU102的本地 上下文存储器104中的固定执行的多个程序,以独立的调度周期,在这些固定执行的多个 程序之中切换所执行的程序。作为这里的例子,表示了在一个CPU102(例如左侧的处理器元件101的CPU102) 中将固定执行的程序A、B、C 一边依次切换一边模拟并行地执行、在另一个CPU102 (例如右 侧的处理器元件101的CPU1(^)中将固定执行的程序D、E、F —边依次切换一边模拟并行地 执行的情况。如果成为将执行的程序从执行中的程序切换为别的程序的定时,则上下文切换控 制部120基于存储在本地上下文存储器104中的各程序的上下文数据所包含的调度顺序, 决定下一个执行对象程序(例如程序B),开始上下文数据的保存恢复。并且,处理控制部103在该保存恢复完成后,切换由上下文数据选择器107及上下 文数据选择器108构成的选择器的选择目标。处理控制部103具体而言,作为上述的程序 执行对象的寄存器组而选择在该切换紧前进行了上下文数据的保存恢复的寄存器组、即在 紧前被选择为上下文保存恢复对象寄存器组的寄存器组,由此,使CPU102开始执行在紧前 进行了保存恢复的上下文数据的程序(程序B)的执行。并且,上下文切换控制部120(图2)在发生了这样的执行的程序的切换时,将通过切换而新开始执行的程序(例如程序B)的上下文数据所包含的计数器初始值向周期计数 器121(图2)通知。周期计数器121如果接收到该通知,则将被通知的计数器初始值设定在自己中, 并且在设定之后,按照时钟周期进行递减计数,如果计数值成为0,则将成为0的情况通知 给上下文切换控制部120,从而使上下文切换控制部120(处理控制部10 开始向下一个程 序(例如程序C)切换。上述的例如从程序A向程序B的切换、或从程序B向程序C的切换 等的、执行的程序的切换的定时是有该通知的定时。如果有该通知,则处理控制部103切换 执行的程序。另外,通过上述说明的、将上下文数据的保存恢复与程序执行并行地执行,能够没 有保存恢复的开销而进行程序执行,也可以将关于各种各样的调度方法的技术的各种公知 的技术应用到多处理器系统100中。关于与公知的技术相关的点,为了说明的方便而省略 详细的说明。图6是说明发生了非固定执行的程序的执行请求的情况下的CPU102的动作的时 间图。在图6中,表示在一个CPU102(例如左侧的处理器元件101的CPU102)中将固定 执行的程序A、B、C 一边依次切换一边模拟并行地执行、在另一个CPU102 (例如右侧的处理 器元件101的CPU102)中将固定执行的程序D、E、F—边依次切换一边模拟并行地执行、作 为非固定执行的程序的执行请求的原因而发生了不依存于各程序的共通的中断请求的情 况的例子。例如,该共享的中断请求包括通过用户输入发生的中断请求、以及通过通信的来 信而发生的中断请求。在时刻tl,表示共享的中断请求(图1的共通中断请求信号112)发生的时刻。如果在时刻tl发生共享的中断请求,则执行请求目标选择部IM基于CPU选择状 态123(图幻的选择信息,向对应的处理控制部103传递程序执行请求,以使多个CPU102 中的一个进行非固定执行的程序的执行。这里,CPU选择状态123由保持将寄存器组105、寄存器组106中的某一个确定为 选择目标切换部109的选择的选择目标的数据的寄存器构成,每当接受到共通中断请求, 就将保持的数据确定的CPU102的选择目标更新,更新为依次指定各CPU102。另外,例如CPU 选择状态123具有如果接收到共通中断请求则进行更新的更新用的电路,使用该更新用的 电路等,在接收到共通中断请求的情况下进行更新。处理控制部103如果接收到程序执行用请求,即,如果发生上述共享中断、选择目 标切换部109对该处理控制部103进行执行请求,则中断固定执行的程序的调度,将非固定 执行的程序I作为下一个执行的程序,将已有的固定执行的程序的上下文数据从程序执行 对象的寄存器组向本地上下文存储器104保存,从共享上下文存储器110将该下一个执行 的程序的、非固定执行的程序的上下文数据恢复到上下文保存恢复对象寄存器组中。上下文切换控制部120(图2~)在如上述那样由处理控制部103将上下文数据从共 享上下文存储器110恢复之后,切换上下文数据选择器107及上下文数据选择器108的选 择目标,通过进行该切换,被写入了已恢复的上下文数据的寄存器组被选择为程序执行对 象的寄存器组,CPU102使用该上下文数据开始程序I的执行。这样,CPU102在由图6的“I 执行”的标记表示的期间执行程序I。
另外,周期计数器121在像这样执行非固定执行的程序的过程中停止,即,不进行 递减计数而维持相同的计数值,下一个切换定时通过程序I的执行结束来决定。即,在本实 施方式的例子中,被中断的程序C在程序I结束之后被分配为下一个CPU102的执行对象 (参照图6的“I执行”之后的“C执行”)。处理控制部103在程序I的执行结束之后,在将存储在作为程序执行对象外的寄 存器组、即上下文保存恢复对象寄存器组中的程序I的上下文数据恢复的情况下,向共享 上下文存储器110恢复。两个处理器元件101分别都进行如以上说明的处理。由此,在t2的时刻发生了共 通中断请求的情况下,由于CPU选择状态123在基于tl时刻发生的共通中断请求的程序执 行时、被预先更新为与进行了该程序执行的CPU102(例如图1的左侧的CPU1(^)不同的另 一个CPU102(例如图1的右侧的CPU102),所以通过该另一个CPU102、即与有关时刻tl时 的执行的CPU102不同的CPU102,进行非固定执行的程序的执行。以上,根据本实施方式的多处理器系统100,固定执行的程序被各处理器(图1的 左侧的处理器元件101及右侧的处理器元件101)分别单独地调度而执行。因此,能够按照 处理器进行独立的调度,而且没有处理器间的固定执行的程序的移动(数据)。因此,也没 有经由共享总线150的用于高速缓冲的一贯性保持的高速缓冲探测动作等带来的开销,能 够进行高效率的程序执行。进而,关于事件处理等的非固定执行的程序的执行,能够使多个 CPU将其处理负荷分散平均化,与使指定的处理器进行事件处理的情况相比,能够降低处理 器的需要最大处理性能。另外,在本实施方式中,表示了两个处理器的结构,但本发明并不限定于具有两个 处理器的多处理器系统,在具有3个以上的处理器的多处理器系统中也能够采用。此外,在本实施方式中,表示了两个寄存器组(寄存器组105、寄存器组106 参照 图1)的结构,但根据切换执行多个程序的调度方法等,对于由3个以上的寄存器组构成的 结构更能够减少保存恢复的次数的情况,也能够采用本发明。这样,构成如下的多处理器系统(多处理器系统100),具备多个处理器(左侧的 处理器元件101、右侧的处理器元件101 图1),将多个程序一边切换一边执行;第一上下文 存储器(共享上下文存储器110),存储由上述多个处理器中的某一个处理器非固定执行的 程序的上下文数据,由上述多个处理器共享;第二上下文存储器(左侧的处理器元件101具 有的本地上下文存储器104、以及右侧的处理器元件101具有的本地上下文存储器104),设 有与上述多个处理器的个数相同的个数,分别存储对应的上述处理器固定执行的程序的上 下文数据,由该处理器专用;保存恢复控制部(左侧的处理器元件101具有的处理控制部 103、以及右侧的处理器元件101具有的处理控制部10 ,同样设有与上述多个处理器的个 数相同的个数,分别在对于对应的上述处理器有程序的执行请求的情况下,如果该程序是 上述非固定执行的程序,则选择上述第一上下文存储器,并且如果是上述固定执行的程序, 则选择上述第二上下文存储器,在所选择的上下文存储器与该处理器之间进行该程序的上 下文数据的保存及恢复,由该处理器专用;以及选择请求部(选择目标切换部109),每当发 生上述非固定执行的程序的执行请求时,选择上述多个处理器中的某一个处理器,对所选 择的处理器进行该程序的执行请求。由此,多个处理器能够分别自由地执行固定执行的程序,由多个处理器中的某一个处理器非固定执行的程序通过任何一个处理器都能够执行,执行非固定执行的程序的处 理器被充分分散为多个处理器,减少了例如因非固定执行的程序的执行而阻碍固定执行的 程序的执行的情况,相反防止因固定执行的程序的执行而阻碍非固定执行的程序的执行的 情况,能够提高性能。这里,该多处理器具备由上述多个处理器共享的主存储器(主存储器151),上述 多个处理器分别使用该主存储器分别执行上述非固定执行的程序及上述固定执行的程序。这里,在该多处理器中,上述多个处理器分别具备多个寄存器组(寄存器组105 和寄存器组106);以及寄存器组选择部(由上下文数据选择器107及上下文数据选择器 108构成的选择器),将上述多个寄存器组中的某一个寄存器组选择为该处理器在程序的 执行中利用的执行用的寄存器组,并且将所选择的寄存器组以外的其他某一个寄存器组选 择为上下文数据的保存恢复用的寄存器组;上述多个处理器分别使用该处理器的该寄存器 组选择部选择为上述执行用的寄存器的寄存器组执行程序;在该处理器使用所选择的上述 执行用的寄存器组执行程序的同时,上述保存恢复控制部对所选择的上述保存恢复用的寄 存器组进行上下文数据的保存及恢复。这里,该多处理器系统是上述多个处理器分别具有本地高速缓冲存储器(左侧的 处理器元件101具有的本地高速缓冲存储器152、以及右侧的处理器元件101具有的本地高 速缓冲存储器15 的共享存储器型多处理器系统。这里,上述选择请求部每当发生上述非固定执行的程序的执行请求时,在上述多 个处理器之中,选择与发生上次的上述非固定执行的程序的执行请求时选择的处理器不同 的处理器。另外,选择请求部保持确定多个处理器中的1个处理器的确定数据(CPU选择状态 123(图幻的选择信息),选择根据保持的确定数据进行确定的处理器(例如,在图6的时 刻tl选择的图6上段的处理器元件101),并且每当进行该选择时,将保持的确定数据更新 为确定所选择的上述处理器以外的其他处理器(例如在图6的时刻t2选择的图6下段的 处理器元件101)的确定数据。(实施方式2)以下,参照附图对有关本发明的实施方式2进行说明。图7是表示有关本发明的实施方式2的多处理器系统200的结构的模块图。另外, 对于与有关本发明的实施方式1相同的结构,赋予相同的标号而省略说明。多处理器系统200如图7所示,具备两个处理器元件201、选择目标切换部209、共 享上下文存储器110、上下文数据选择器111、共享总线150、和主存储器151。并且,处理器元件201具备CPU102、处理控制部203、本地上下文存储器104、寄存 器组105、寄存器组106、上下文数据选择器107、上下文数据选择器108、和本地高速缓冲存 储器152。图8是表示有关本发明的实施方式2的处理控制部203(图7)的内部结构的模块 图。处理控制部203如图8所示,具备上下文切换控制部120、周期计数器121、和本地 事件检测部222。图9是表示有关本发明的实施方式2的选择目标切换部209(图7参照)的结构的模块图。选择目标切换部209如图9所示,具备CPU选择状态223、和执行请求目标选择部 224。图10是说明发生了非固定执行的程序的执行请求的情况下的CPU102的动作的时 间图。在图10中,表示在一个CPU102(例如图7的左侧的处理器元件201)中将固定执 行的程序A、B、C 一边依次切换一边模拟并行地执行、在另一个CPU102(例如图7的右侧的 处理器元件201)中将固定执行的程序D、E、F—边依次切换一边模拟并行地执行、作为非固 定执行的程序的执行请求的原因、而发生了不依存于各程序的共通的中断请求的情况的例子。这里,各CPU102分别在执行程序时,如果执行中的程序成为睡眠状态,则在该程 序执行中设定的计数值的剩余量成为空闲状态,设为在计数值成为0之前、不进行除了成 为睡眠状态的程序以外的其他程序的调度。例如,图10所示的在程序A的执行中设定的计 数值的剩余量成为空闲状态,在计数值成为0之前不进行其他程序的调度。时刻tl表示发生了共享的中断请求的第1时刻。此外,时刻t2表示发生了共享 的中断请求的第2时刻。时刻tl是在两个CPU102都不是睡眠状态的期间、发生了共享的中断请求的时刻。如果在时刻tl发生共享的中断请求,则执行请求目标选择部2 基于CPU选择状 态223的选择信息,对于多个CPU102中的1个,向对应于该CPU102的处理控制部203传递 程序执行请求,以使其进行非固定执行的程序的执行。另外,CPU选择状态223每当接收到共通中断请求时,将CPU102的选择目标更新, 更新为依次指定各CPU102。处理控制部203如果接收到程序执行用请求,则中断固定执行的程序的调度,将 非固定执行的程序I作为下一个执行的程序,将已有的固定执行的程序的上下文数据保存 到本地上下文存储器104中,从共享上下文存储器110恢复上下文数据。上下文切换控制部120在从共享上下文存储器110的上下文数据恢复后,切换上 下文数据选择器107及上下文数据选择器108的选择目标,由此,CPU102开始程序I的执 行。另外,在非固定执行的程序的执行中,周期计数器121停止,下一个切换定时由程 序I的执行结束来决定。即,在本实施方式的例子中,被中断的程序C在程序I结束后被分 配为下一个CPU102执行对象。处理控制部103在程序I的执行结束之后,在将存储在作为程序执行对象外的寄 存器组中的程序I的上下文数据恢复的情况下,向共享上下文存储器110恢复。另一方面,时刻t2是在一个CPU102为睡眠状态的期间发生了共享的中断请求的 时刻。在t2的时刻,在共通中断请求中,在该时点一个CPU102为睡眠状态,从本地事件 检测部222(图8)被通知了包括睡眠状态的事件检测信号(参照图8)的执行请求目标选 择部224(参照图9)向与睡眠状态的CPU102对应的处理控制部203传递程序执行请求,以 使得比CPU选择状态123的状态更优先而基于事件检测,由睡眠状态的CPU102进行非固定执行的程序的执行。另外,CPU选择状态223在执行请求目标选择部2M接收到事件检测 信号、对通过事件检测信号确定的CPU102传递了执行请求的情况下不被更新。以上,根据本实施方式的多处理器系统200,由于固定执行的程序被向各处理器单 独调度而执行,所以能够按照各个处理器进行独立的调度,而且由于没有处理器间的固定 执行的程序的移动,所以也没有经由共享总线150的用于高速缓冲的一贯性保持的高速缓 冲探测动作等带来的开销,能够进行高效率的程序执行。进而,关于事件处理等的非固定执 行的程序的执行,能够使多个CPU将其处理负荷分散平均化,与使指定的处理器进行事件 处理的情况相比,能够降低处理器的需要最大处理性能。并且,如在多个CPU中的某一个有空闲状态的情况下,通过由该CPU执行事件处 理,能够进行更高效率的程序执行。这样,构成了选择请求部(选择目标切换部209)检测多个处理器的动作状态、选 择对于检测到的动作状态具有预先设定的对应关系的处理器的多处理器系统200。这里,构成了如下的多处理器系统,S卩,多个处理器分别具备停止再开始控制部 (处理控制部20 ,该停止再开始控制部分别检测固定执行的程序发生了将该处理器的执 行中断的事由的情况、以及该事由消除的情况,在检测到上述发生的情况下使该执行停止, 在检测到上述消除的情况下使已停止的该执行再开始;上述选择请求部从上述停止再开始 控制部取得上述停止及再开始的信息,在由取得的信息表示处于具备该停止再开始控制部 的处理器使上述执行停止之后、并且使该执行再开始之前的情况下,选择该处理器。(实施方式3)以下,参照附图对有关本发明的实施方式3进行说明。图11是表示有关本发明的实施方式3的多处理器系统300的结构的模块图。另 外,对于与有关本发明的实施方式1或者有关本发明的实施方式2相同的结构赋予相同的 标号而省略说明。多处理器系统300如图11所示,具备两个处理器元件201、选择目标切换部309、 共享上下文存储器110、上下文数据选择器111、共享总线150、和主存储器151。图12是表示有关本发明的实施方式3的选择目标切换部309的结构的模块图。选择目标切换部309如图12所示,具备执行请求目标选择部324、两个事件计数器 325以及定时器326。事件计数器325分别对事件检测信号进行递增计数,此外,通过来自定时器3 的 溢出通知或共通中断请求而将计数值复位,上述事件检测信号是来自各处理控制部203分 别具备的各本地事件检测部(参照图8的本地事件检测部22 中的、与该事件计数器325 连接的本地事件检测部的信号。图13是说明发生了非固定执行的程序的执行请求的情况下的CPU102的动作的时 间图。在图13中,在一个CPU102(例如图11的左侧的处理器元件201)中将固定执行的 程序A、B、C、G —边依次切换一边模拟并行地执行。并且,在图13中,在另一个CPU102(例 如图11的右侧的处理器元件201)中将固定执行的程序D、E、F、H —边依次切换一边模拟 并行地执行。并且,在图13中,表示作为非固定执行的程序的执行请求的原因而发生了不 依存于各程序的共通的中断请求的情况的例子。
这里,如果程序成为睡眠状态,则执行该程序中的CPU102开始执行的该程序以外 的其他程序的调度,转移到下一个程序执行。例如,在图13中,表示一个CPU102在程序A 成为睡眠状态的情况下、发生开始作为其他程序的程序B、C、G的调度、向程序B的执行的转 移等的动作的情况。时刻tl是发生了共享的中断请求的时刻。事件计数器325将各CPU102的事件检测的履历递增计数,对时刻tl为止的由事 件检测信号通知的向睡眠状态的转移进行计数。并且,如果在时刻tl发生了共享的中断请求,则执行请求目标选择部3M按照该 事件计数器325中的计数的值的大小,向对应的处理控制部203传递程序执行请求,以使多 个CPU102中的一个进行非固定执行的程序的执行。在这里的例子中,执行请求目标选择部 324对与计数值大的事件计数器325对应的处理控制部203传递程序执行请求。以上,根据本实施方式的多处理器系统300,固定执行的程序被各处理器单独调度 而执行。因此,能够按照处理器进行独立的调度,而且,由于没有处理器间的固定执行的程 序的移动,所以也没有经由共享总线150的用于高速缓冲的一贯性保持的高速缓冲探测动 作等带来的开销,能够进行高效率的程序执行。进而,关于事件处理等的非固定执行的程序 的执行,能够根据多个CPU的状况更灵活地分配其处理负荷。并且,能够将非固定执行的程序的处理器的分配,将各处理器的过去的事件信息 也包括在内、灵活地向处理器分配。另外,在本实施方式中,表示了对处理器的本地事件的计数值大的处理器进行选 择的例子,但根据本地事件的种类,也可以决定计数值小的处理器,或也可以根据情况的组 合来决定分配事件处理的处理器。(其他方式)也可以构成以下说明的其他方式的多处理器系统。既可以对上述各实施方式中的 某个实施方式的多处理器系统附加其他方式的多处理器系统的一部分,也可以对其他方式 的多处理器系统附加上述实施方式中的某个多处理器系统的一部分。(1)其他方式的多处理器系统是如下多处理器系统(多处理器系统100),具备第 1处理器及第2处理器(左侧的处理器元件101、右侧的处理器元件101 图1);共享的上下 文数据存储部(共享上下文存储器110),存储通过例如用户输入带来的中断等的非固定中 断、由上述第1处理器及第2处理器中的某一个执行的程序等的非固定执行的程序的上下 文数据,由上述第1处理器及第2处理器共享;并且具备两个上下文数据存储部(左侧的 处理器元件101具有的本地上下文存储器104及右侧的处理器元件101具有的本地上下文 存储器104),分别对应于上述第1处理器及第2处理器,存储对应的上述处理器固定执行 的程序的上下文数据,由对应的该处理器专用;保存恢复控制部(左侧的处理器元件101具 有的处理控制部103及右侧的处理器元件101具有的处理控制部10 ,分别对应于上述第 1处理器及第2处理器,在对应的上述处理器与上述共享的上下文数据存储部之间,保存及 恢复上述非固定执行的程序的上下文数据,并且将对应的该处理器的上述固定执行的程序 的上下文数据在该处理器与对应于该处理器的上述专用的上下文数据存储部之间保存及 恢复;非固定执行处理器选择部(选择目标切换部109),如果满足预先设定的条件,则使上 述第1处理器执行上述非固定执行的程序,另一方面如果不满足该条件,则使上述第2处理器执行该非固定执行的程序。另外,固定执行的程序既可以是所谓的服务程序,也可以是所谓的守护(daemon) 程序,也可以是HTTP (HyperText Transfer Protocol)服务器等的服务器用程序。另一方面,非固定执行的程序也可以是处理键输入等的用户输入、基于通信的输 入、处理发生0的除法等的各种例外的发生等的各种事件的事件处理用的程序。(2)并且,其他方式的多处理器系统是如下多处理器系统,即,如果由对应于保存 恢复控制部的处理器执行的程序是上述非固定执行的程序,则上述保存恢复控制部分别在 开始该非固定执行的程序的执行时,将由上述共享的上下文数据存储部存储的该非固定执 行的程序的上下文数据,向存储该处理器执行的程序的上下文数据的、预先设定的执行时 存储部(寄存器组105和寄存器组106中的程序执行对象的寄存器组)恢复,并且在该执 行结束时,将该执行结束后的该非固定执行的程序的上下文数据从该执行时存储部保存到 上述共享的上下文数据存储部中;如果执行的程序是上述固定执行的程序,则在开始该固 定执行的程序的执行时,将由该处理器的上述专用的上下文数据存储部存储的、该固定执 行的程序的上下文数据向上述执行时存储部恢复,并且在该执行结束时,将该执行结束后 的该固定执行的程序的上下文数据从该执行时存储部保存到上述上下文数据存储部中。工业实用性本发明能够作为执行实时处理及事件处理两者的、由多个处理器构成的多处理器 系统等使用。标号说明100,200,300多处理器系统101、201处理器元件102 CPU103、203处理控制部104本地上下文存储器105、106 寄存器组107,108上下文数据选择器109、209选择目标切换部110共享上下文存储器111上下文数据选择器112共通中断请求信号113程序执行请求信号120上下文切换控制部121周期计数器122本地事件检测部123 CPU选择状态124执行请求目标选择部150共享总线151主存储器213,214 信号
325事件计数器326定时器
权利要求
1.一种多处理器系统,具备多个处理器,将多个程序一边切换一边执行;第一上下文存储器,存储由上述多个处理器中的某一个处理器非固定执行的程序的上 下文数据,该第一上下文存储器由上述多个处理器共享;第二上下文存储器,设有与上述多个处理器的个数相同的个数,分别存储对应的上述 处理器固定执行的程序的上下文数据,该第二上下文存储器由相关处理器专用;保存恢复控制部,同样设有与上述多个处理器的个数相同的个数,分别在对于对应的 上述处理器有程序的执行请求的情况下,如果该程序是上述非固定执行的程序,则选择上 述第一上下文存储器,并且如果是上述固定执行的程序,则选择上述第二上下文存储器,在 所选择的上下文存储器与该处理器之间进行该程序的上下文数据的保存及恢复,该保存恢 复控制部由相关处理器专用;以及选择请求部,每当发生上述非固定执行的程序的执行请求时,选择上述多个处理器中 的某一个处理器,对所选择的处理器进行该程序的执行请求。
2.如权利要求1所述的多处理器系统,其中, 具备由上述多个处理器共享的主存储器;上述多个处理器分别使用该主存储器,分别执行上述非固定执行的程序及上述固定执 行的程序。
3.如权利要求2所述的多处理器系统,其中, 上述多个处理器分别具备多个寄存器组;以及寄存器组选择部,在上述多个寄存器组中选择某一个寄存器组,作为该处理器在程序 的执行中利用的执行用的寄存器组,并且将所选择的寄存器组以外的其他某一个寄存器组 选择为上下文数据的保存恢复用的寄存器组;上述多个处理器分别使用相关处理器的相关寄存器组选择部选择为上述执行用的寄 存器的寄存器组执行程序;在相关处理器使用所选择的上述执行用的寄存器组来执行程序的同时,上述保存恢复 控制部对所选择的上述保存恢复用的寄存器组,进行上下文数据的保存及恢复。
4.如权利要求2所述的多处理器系统,其中,该多处理器系统是上述多个处理器分别具有本地高速缓冲存储器的共享存储器型多 处理器系统。
5.如权利要求2所述的多处理器系统,其中,上述选择请求部在每当发生上述非固定执行的程序的执行请求时,在上述多个处理器 之中,选择与上次发生上述非固定执行的程序的执行请求时选择的处理器不同的处理器。
6.如权利要求2所述的多处理器系统,其中,上述选择请求部检测上述多个处理器的动作状态,选择对于所检测到的动作状态具有 预先设定的对应关系的处理器。
7.如权利要求6所述的多处理器系统,其中,上述多个处理器分别具备停止再开始控制部,该停止再开始控制部分别检测上述固 定执行的程序发生了将该处理器的执行中断的事由的情况、以及该事由消除的情况,在检测到上述发生的情况下使该执行停止,在检测到上述消除的情况下使已停止的该执行再开 始;上述选择请求部从上述停止再开始控制部取得上述停止及再开始的信息,在由取得的 信息表示处于具备该停止再开始控制部的处理器使上述执行停止之后、并且使该执行再开 始之前的情况下,选择该处理器。
8.如权利要求6所述的多处理器系统,其中,上述多个处理器分别具备停止再开始控制部,该停止再开始控制部分别检测上述固定 执行的程序发生了将该处理器的执行中断的事由的情况、以及该事由消除的情况,在检测 到上述发生的情况下使该程序的执行停止,在检测到上述消除的情况下使已停止的该执行 再开始;上述选择请求部从上述停止再开始控制部取得上述停止及再开始的信息,基于所取得 的上述信息的履历,决定是否选择取得了该信息的上述处理器。
全文摘要
抑制执行事件处理等的非固定执行的程序的处理器集中,提高多处理器系统的性能。为此,多处理器系统(100)具备第一上下文存储器(110),存储由多个处理器中的某一个处理器非固定执行的程序的上下文数据,该第一上下文存储器(110)被共享;保存恢复控制部(103),设有与上述多个处理器的个数相同的个数,分别在对应的处理器有程序的执行请求的情况下,如果该程序是上述非固定执行的程序,则进行与上述第一上下文存储器之间的上下文数据的保存及恢复;以及选择请求部(109),每当发生上述非固定执行的程序的执行请求时,对所选择的处理器进行该程序的执行请求。
文档编号G06F9/48GK102057357SQ20098012181
公开日2011年5月11日 申请日期2009年6月8日 优先权日2008年6月11日
发明者细木哲 申请人:松下电器产业株式会社