CN100416540C - 信息处理***和存储器管理方法 - Google Patents
信息处理***和存储器管理方法 Download PDFInfo
- Publication number
- CN100416540C CN100416540C CNB2004100073028A CN200410007302A CN100416540C CN 100416540 C CN100416540 C CN 100416540C CN B2004100073028 A CNB2004100073028 A CN B2004100073028A CN 200410007302 A CN200410007302 A CN 200410007302A CN 100416540 C CN100416540 C CN 100416540C
- Authority
- CN
- China
- Prior art keywords
- thread
- local storage
- processor
- vpu
- storage
- 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
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- 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/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- 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/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Multi Processors (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种信息处理***,在多个处理器(LS0、LS1、LS2)中分别设置局部存储器(LS0、LS1、LS2),各线程即使不访问共享存储器,只通过访问处理器内的局部存储器就能执行程序。另外,按照执行进行相互作用的对方线程的处理器,自动变更映射到有效地址EA空间上的与对方线程对应的处理器的局部存储器,所以各线程不用考虑分配对方线程的处理器就能高效地进行与对方线程的相互作用。因此,能高效地并行执行多个线程,实现使用多个处理器来高效地并行执行多个线程的***。
Description
技术领域
本发明涉及包含多个处理器的信息处理***和同一***中使用的存储器管理方法。
背景技术
以往,在服务器那样的计算机***中,为了谋求运算处理能力的提高而利用如多处理器、并行处理器那样的***结构。多处理器和并行处理器都是通过利用多个处理器部件来实现运算处理的并行化。
作为具有多个处理器部件的***,众所周知的是具有1个高速CPU、多个低速CPU以及共享存储器的***(例如,参照专利文献1)。在该***中,按照线程群的并行工作度的大小和处理时间的长短来进行处理程序的线程群对高速CPU和多个低速CPU的分配。
但是,最近不仅计算机***,例如在实时处理AV(音频和视频)数据那样的大容量数据的组入仪器中,也为了提高运算处理能力而要求导入多处理器、并行处理器那样的***结构。
专利文献1-特开平10-143380号公报
但是,现在的实际情况是几乎没有以包含个多处理器的***结构为前提的实时处理***的报告。
在实时处理***中,要求在某允许时间的限制内完成各处理。但是当把多处理器、并行处理器那样的***结构应用于实时处理***中时,由于对共享存储器的访问的冲突、存储器总线的带宽的制约等,产生无法充分利用多个处理器各自的性能的问题。另外,用于在由彼此不同的处理器执行的线程间交换数据的通信也通过共享存储器上的缓存器进行,所以在频繁进行相互作用的线程间,有关通信的等待就成了大问题。
发明内容
鉴于上述问题的存在,本发明的目的在于:提供能使用多个处理器来高效地并行执行多个线程的信息处理***和存储器管理方法。
为了解决上述的课题,本发明的信息处理***的特征在于:包括:一种信息处理***,其特征在于:包括:具有第一局部存储器的第一处理器;具有第二局部存储器的第二处理器; 具有第三局部存储器的第三处理器;把执行与第一线程有相互作用的第二线程的所述第二和第三处理器中一方的处理器的、所述第二和第三局部存储器中一方的局部存储器映射到由所述第一处理器执行的第一线程的有效地址空间的一部分上的部件;和当执行所述第二线程的处理器从所述第二和第三处理器中一方的处理器变更为另一方的处理器时,把映射到所述第一线程的有效地址空间的一部分上的局部存储器从所述第二和第三局部存储器中一方的局部存储器变更为另一方的局部存储器的部件。
本发明还提供一种存储器管理方法,在包含具有第一局部存储器的第一处理器、具有第二局部存储器的第二处理器和具有第三局部存储器的第三处理器的信息处理***中,对在线程之间的通信中使用的局部存储器进行管理,其特征在于:包括:把执行与第一线程有相互作用的第二线程的所述第二和第三处理器中一方的处理器的、所述第二和第三局部存储器中一方的局部存储器映射到由所述第一处理器执行的第一线程的有效地址空间的一部分上的步骤;和当执行所述第二线程的处理器从所述第二和第三处理器中一方的处理器变更为另一方的处理器时,把映射到所述第一线程的有效地址空间的一部分上的局部存储器从所述第二和第三局部存储器中一方的局部存储器变更为另一方的局部存储器的步骤。
在该信息处理***中,在各处理器中设置有局部存储器,所以各线程不访问共享存储器,只访问处理器内的局部存储器,就能执行程序。另外,按照执行进行相互作用的对方线程的处理器,自动变更映射到有效地址空间上的与对方线程对应的处理器的局部存储器,所以各线程不用考虑分配对方线程的处理器,就能高效地进行与对方线程的相互作用。因此,能高效地并行执行多个线程。
附图说明
下面简要说明附图。
图1是表示构成本发明一实施例的实时处理***的计算机***的例子的框图。
图2是表示设置在同一实施例的实时处理中的MPU和VPU各自结构的框图。
图3是表示同一实施例的实时处理***中使用的虚拟地址变换机构的例子的图。
图4是表示映射到同一实施例的实时处理***中的实际地址空间中的数据的例子的图。
图5是用于说明同一实施例的实时处理***中的有效地址空间、虚拟地址空间、实际地址空间的图。
图6是表示数字电视广播***的接收机结构的框图。
图7是表示由同一实施例的实时处理***执行的程序模块的结构的图。
图8是表示图7的程序模块内包含的构成记述的例子的图。
图9是表示与图7的程序模块对应的程序之间的数据流的图。
图10是表示由2个VPU并行执行图7的程序模块的状态的图。
图11是表示由2个VPU以流水线形式执行图7的程序模块的状态的图。
图12是表示同一实施例的实时处理***的操作***的实施例的例子的图。
图13是表示同一实施例的实时处理***的操作***的实施例的其他例子的图。
图14是表示同一实施例的实时处理***的虚拟计算机OS和客户OS的关系的图。
图15是表示在同一实施例的实时处理***中通过分时对多个客户OS分配资源的状态的图。
图16是表示在同一实施例的实时处理***中由某特定的客户OS占有特定的资源的状态的图。
图17是表示在同一实施例的实时处理***中作为调度器使用的VPU执行环境的图。
图18是表示在同一实施例的实时处理***中使用的虚拟计算机OS中安装VPU执行环境的例子的图。
图19是表示作为同一实施例的实时处理***中使用的一个客户OS,安装VPU执行环境的例子的图。
图20是表示在同一实施例的实时处理***中使用的多个客户OS中分别安装VPU执行环境的例子的图。
图21是表示在同一实施例的实时处理***中使用的一个客户OS中分别安装VPU执行环境的例子的图。
图22是用于说明同一实施例的实时处理***中使用的MPU一侧VPU执行环境和VPU一侧VPU执行环境的图。
图23是表示由同一实施例的实时处理***中使用的VPU一侧VPU执行环境执行的处理步骤的程序框图。
图24是表示由同一实施例的实时处理***中使用的MPU一侧VPU执行环境执行的处理步骤的程序框图。
图25是表示在同一实施例的实时处理***中,属于密结合线程组的线程群分别由不同的处理器同时执行的状态的图。
图26是用于说明同一实施例的实时处理***中的密结合线程间的相互作用的图。
图27是表示在同一实施例的实时处理***中,向各密结合线程的有效地址空间映射执行对象的线程的VPU的局部存储器的状态的图。
图28是用于说明对属于同一实施例的实时处理***的疏结合线程组的线程群的处理器分配的图。
图29是用于说明同一实施例的实时处理***的疏结合线程组问的相互作用的图。
图30是用于说明同一实施例的实时处理***的进程和线程的关系的图。
图31是表示同一实施例的实时处理***的调度处理步骤的程序框图。
图32是用于说明有关同一实施例的实时处理***的局部存储器的第一问题的图。
图33是表示同一实施例的实时处理***的物理VPU和逻辑VPU的关系的图。
图34是用于说明有关同一实施例的实时处理***的局部存储器的第二问题的图。
图35是表示同一实施例的实时处理***的有效地址空间共享模型的图。
图36是表示同一实施例的实时处理***的虚拟地址空间共享模型的图。
图37是表示同一实施例的实时处理***的非共享模型的图。
图38是用于说明同一实施例的实时处理***的局部存储器映射变更的第一图。
图39是用于说明同一实施例的实时处理***的局部存储器映射变更的第二图。
图40是用于说明同一实施例的实时处理***的局部存储器映射变更的第三图。
图41是用于说明同一实施例的实时处理***的局部存储器映射变更的第四图。
图42是用于说明同一实施例的实时处理***的局部存储器映射变更的第五图。
图43是表示在同一实施例的实时处理***中为了进行局部存储器的映射变更而执行的地址管理处理步骤的程序框图。
图44是用于说明在同一实施例的实时处理***中执行的局部存储器和存储器之间的映射变更的图。
图45是表示在同一实施例的实时处理***中执行的局部存储器和存储器之间的映射变更处理步骤的程序框图。
下面,简要说明附图符号。
11-MPU(Master Processing Unit)、12 VPU(Slave ProcessingUnit);14-主存储器;21-处理部件;22-存储器管理部件;31-处理部件;32-局部存储器;33-存储器控制器;50-段表;60-页表;100-程序模块;111~116-程序;117-构成记述;331-地址变换部件;401-VPU执行环境。
具体实施方式
下面,参照附图说明本发明实施例。
图1表示用于实现本发明一实施例的实时处理***的计算机***的构成例。该计算机***是在时间制约条件的范围内执行要求实时性的各种处理的信息处理***,除了能作为通用计算机利用,还能作为用于执行要求实时性的处理的各种电子仪器的嵌入***利用。如图1所示,在该计算机***中,主处理部件(MPU11:Master Processing Unit)11、多个通用处理部件(VPU:Versatile Processing Unit)12、主存储器14、输入输出控制装置15通过连接装置13相互连接。连接装置13例如由纵横开关那样的相互结合网或总线构成。也能使用环状的总线构造。MPU11是控制计算机***的动作的主处理器。操作***OS(OS:OperatingSystem)主要由MPU1执行。OS的一部分功能能由VPU12或输入输出控制装置15分担执行。各VPU12是在MPU11的管理下执行各种处理的处理器。MPU11进行对多个VPU12分配处理,使之并行执行的控制。据此,能以高速进行高效的处理的执行。主存储器14是由MPU11、多个VPU12以及输入输出控制装置15共享的存储装置(共享存储器)。OS和应用程序存储在主存储器14中。在输入输出控制装置15上连接一个或多条输入输出总线(输入输出装置)16。输入输出控制装置15也称作桥。
连接装置15具有保证数据传输速度的QoS功能。该功能通过用预约的带宽(传输速度)执行通过连接装置15的数据传输而实现。QoS功能例如在从VPU12向存储器14以5Mbps发送写入数据时、或VPU12与其它VPU12之间以100Mbps传输数据时利用。VPU12对连接装置13指定(预约)带宽(传输速度)。连接装置13对要求的VPU12优先分配执行的带宽。如果对某VPU12的数据传输预约了带宽,在基于该VPU12的数据传输中,即使其他VPU12、MPU11或输入输出控制装置15进行大量的数据传输,也能确保预约的带宽。该功能特别是对进行实时处理的计算机是重要的功能。
在图1的结构中,MPU11是1个,VPU12为4个,存储器14为1个,输入输出控制装置为1个,但是未限制VPU12的个数。另外,也可以是不具有MPU11的结构。此时,某一个VPU12担当MPU11进行的处理。即VPU兼任虚拟的MPU11的角色。
图2表示MPU11和各VPU12的结构。MPU11具有处理部件21和存储器管理部件22。处理部件21通过存储器管理部件22访问存储器14。存储器管理部件22是进行虚拟存储管理、存储器管理部件22内的高速缓冲存储器的管理的部件。各VPU12具有处理部件31、局部存储器32、存储器控制器33。各VPU12的处理部件31能直接访问VPU内部的局部存储器32。存储器控制器33具有进行局部存储器32和存储器14之间的数据传输的DMA控制器的功能。该存储器控制器33能利用连接装置14的QoS功能,具有预约带宽的功能和以预约的带宽进行数据的输入输出的功能。另外,存储器控制器33具有与MPU11的存储器管理部件22同样的虚拟存储管理功能。VPU12的处理部件31把局部存储器32作为主存储使用。处理部件31不直接访问存储器14,指示存储器控制器33,把存储器14的内容向局部存储器32传输,或把局部存储器32的内容写入存储器14。
由MPU11的存储器管理部件22和VPU12的存储器控制器33分贝执行的虚拟存储管理例如能象图3那样实施。从MPU11的处理部件21或VPU12的存储器控制器33观察的地址是图3的上方部分所示的64位地址。该64位地址中,高位的36位为段编号,中央的16位为页编号,低位的12位为页偏移量。使用段表50和页表60执行从该地址向实际通过连接装置13访问的实际地址空间的变换。段表50和页表60分别设置在存储器管理部件22和存储器控制器33中。
如图4所示,把以下的数据映射到从MPU11和VPU12观察的实际地址(RA)空间中。
1.存储器(主存储装置)
2.MPU11的各种控制寄存器
3.各VPU12的各种寄存器
4.各VPU12的局部存储器
5.各种输入输出设备(输入输出装置)的控制寄存器(也包含输入输出控制装置的控制寄存器)
MPU11和VPU12通过访问实际地址空间的相应的地址,能读写1~5的各数据。重要的是通过访问实际地址空间,从任意MPU11或从任意VPU12、从输入输出控制装置15都能访问任意的VPU12的局部存储器32。另外,使用段表或页表,也能保护VPU12的局部存储器32的内容不被自由读写。
使用图3的虚拟存储机制把从MPU11或VPU12观察的地址空间映射为图5所示那样。从在MPU11或VPU12上执行的程序能直接观察到的是有效地址(EA;Effective Address)空间。EA通过段表50映射到虚拟地址(VA;Virtual Address)空间。VA通过页表60映射到实际地址(RA;Real Address)空间。该RA具有图4中说明的构造。
MPU11通过控制寄存器等硬件机构,进行各VPU12的寄存器的读写、各VPU12的程序的执行开始/停止等的VPU12的管理。另外,能通过邮箱或事件标志等硬件机构进行MPU11和VPU12之间、或VPU12和其他VPU12之间的通信或同步。
本实施例的计算机***能使用软件实现以往由硬件实现的实时性要求严的仪器的动作。例如,某VPU12执行与构成某硬件的几个硬件组件对应的运算处理,与此并行,其他VPU12执行与其它几个硬件组件对应的运算处理。
图6表示数字电视广播的接收机的简化的硬件结构。在图6中,接收的广播信号通过DEMUX(信号分离器)电路101分解为与声音数据、图象数据、字幕数据分别对应的压缩编码的数据流。压缩编码的声音数据流由A-DEC(声音解码器)电路102解码。压缩编码的图象数据流由V-DEC(图象解码器)电路103解码。解码的图象数据流发送给PROG(顺次变换)电路105,在那里进行用于变换为顺次图象信号的顺次变换处理。把顺次变换的图象数据流发送给BLEND(图象合成)电路106。字幕数据流由TEXT(字幕处理)电路104变换为字幕的图象后,发送给BLEND电路106。BLEND电路106把从PROG电路105发送来的图象和从TEXT电路104发送来的字幕图象合成,作为图象流输出。这一系列的处理根据图象的帧频(例如,1秒钟30场景、32场景或60场景)重复执行。
为了通过软件执行图6那样的硬件的动作,在本实施例中,例如如图7所示,准备把图6那样的硬件的动作作为软件而实现的程序模块100。该程序模块100是使计算机***执行由多个处理要素的组合构成的实时处理的应用程序,使用多线程编程记述。该程序模块100包含记述与图6的硬件元件群对应的多个处理要素所对应的步骤的多个程序111~116。即在程序模块100中包含DEMUX程序111、A-DEC程序112、V-DEC程序113、TEXT程序114、PROG程序115、BLEND程序116。DEMUX程序111、A-DEC程序112、V-DEC程序113、TEXT程序114、PROG程序115、BLEND程序116分别是用于执行与图6的DEMUX电路101、A-DEC电路102、V-DEC电路103、TEXT电路104、PROG电路105、BLEND电路106对应的处理的程序,分别作为线程执行。即在程序模块100的执行时,生成与DEMUX程序111、A-DEC程序112、V-DEC程序113、TEXT程序114、PROG程序115、BLEND程序116分别对应的线程,生成的线程分别分配给1以上的VPU12,执行。在VPU12的局部存储器32中加载与分配到该VPU12的线程对应的程序,线程执行局部存储器32上的程序。把与构成数字电视广播的接收机的硬件模块群分别对应的程序111~116、称作构成记述117的数据打包,变为实现数字电视广播的程序模块100。
构成记述117是表示应该怎样组合执行程序模块100内的各程序(线程)的信息,表示程序111~116间的输入输出关系以及各程序的处理所必要的开销(时间)。图8表示构成记述117的例子。
在图8的构成记述117的例子中,对作为线程工作的各模块(程序模块100内的各程序),记述与输入有关的模块、与输出有关的模块、模块的执行所需的开销、向与输出有关的模块的输出所必要的缓存器尺寸。例如编号③的V-DEC程序把编号①的DEMUX程序的输出作为输入,其输出向着编号⑤的PROG程序,其输出所必要的缓存器为1MB,编号③的V-DEC程序自身的执行开销为50。须指出的是,执行所必要的开销能以执行所必要的时间(执行期间)或步骤数为单位记述。另外,也能把用任意的虚拟规格的VPU执行时的时间作为单位。有时根据计算机,VPU的规格或处理性能不同,所以这样设置虚拟的单位,表现开销是希望的形态。根据图8所示的构成记述117执行时的程序间的数据流如图9所述。
在构成记述117中,把表示与程序111~116分别对应的线程间的结合属性的结合属性信息作为线程参数记述。须指出的是,在线程参数也能作为代码直接记述在程序111~116中。
下面,参照图10、图11说明由本实施力计算机***怎样执行程序111~116。在此,假定在计算机***中设置有VPU0和VPU1等两个VPU12的结构。图10是按照时间记述以每秒30帧显示图象时对各VPU12的程序的分配。在此,在周期1中,输出1帧的声音和图象。首先,DEMUX程序用VPU0进行处理,把结果的声音、图象和字幕的数据写入缓存器中。然后,用VPU1依次执行A-DEC程序和TEXT程序,把各处理结果写入缓存器中。在VPU0中,V-DEC程序进行图象数据的处理,把结果写入缓存器中。在VPU0中,PROG程序接着进行处理,把结果写入缓存器中。此时,因为在VPU1的TEXT处理结束,所以用VPU0进行最后的BLEND程序的执行,生成最终的图象数据。每周期重复执行该处理流。
如在此所述,把为了能不拖延地进行所需的动作,在各VPU12上决定何时执行哪个程序的作业称作调度。在本实施例中,把进行调度的模块称作调度器。在本实施例中,根据程序模块100中包含的上述的构成记述117进行调度。
图11表示以每秒60帧显示时的执行的样子。与图10的不同之处在于:在图10中是每秒30帧,所以1周期(1/30秒)中完成1帧的处理,而在图11中,需要每秒60帧的处理。即在1周期(1/60秒)中,无法结束1帧的处理,所以在图11中,跨多个(在此是2)周期进行软件流水线处理。例如,对在周期1的开始输入的信号,用VPU0进行DEMUX处理和V-DEC处理。然后,在周期2中,用VPU1进行A-DEC、TEXT、PROG、BLEND等各处理,输出最终的图象数据。在周期2中,VPU0进行下一帧的DEMUX处理和V-DEC处理。这样,跨2周期以流水线形式执行基于VPU0的DEMUX、V-DEC处理基于VPU1的A-DEC、TEXT、PROG、BLEND处理。
须指出的是,图7所示的程序模块100可以预先记录在组入本实施例的计算机***的仪器内的闪存ROM或硬盘中,但是也可以通过网络流通。此时,按照通过网络下载的程序模块的种类,决定由本实施例的计算机***执行的处理的内容。因此,例如在组入本实施例的计算机***的仪器内,能执行与各种专用硬件分别对应的实时处理。例如,通过把新的内容的再现所必要的新播放器软件或解码器软件或加密软件等作为本实施例的计算机***能执行的程序模块与内容一起发送,如果是搭载了本实施例的计算机***的仪器,则在任意的仪器中,在其能力允许的范围中,能再现该内容。
(操作***)
在本计算机***中,在***内只安装一个OS(操作***)时,如图12所示,OS201管理全部的安装资源(例如,MPU11、VPU12、存储器14、输入输出控制装置15、输入输出装置16等)。
而使用虚拟计算机方式,也能同时使多个OS工作。此时,如图13所示首先安装虚拟计算机OS301,它管理全部的实际资源(例如,MPU11、VPU12、存储器14、输入输出控制装置15、输入输出装置16等)。虚拟计算机OS301也称作主机OS。在虚拟计算机OS301上安装一个以上的OS(也称作客户OS)。各客户OS302、303如图14所示,在由虚拟计算机OS301提供的虚拟计算机资源构成的计算机上工作,对客户OS302、303管理的应用程序提供各种服务。在图14的例子中,认为客户OS302在由1个MPU11、2个VPU12、存储器14构成的计算机上工作,认为客户OS303在由1个MPU11、4个VPU12、存储器14构成的计算机上工作。虚拟计算机OS301管理从客户OS302观察的VPU12、从客户OS303观察的VPU12实际与实际资源的哪个VPU12对应。客户OS302、303没必要意识到该对应。
虚拟计算机OS301进行客户OS302、303的调度,以便用分时把计算机***全体的资源分配给各客户OS302、303。例如,客户OS302为进行实时处理的。例如,当想在1秒钟30次、以正确的速度进行处理时,各客户OS302在虚拟计算机OS301中设定该参数。虚拟计算机OS301进行调度,按1/30秒1次,可靠地对客户OS301分配必要的处理时间。在进行不要求实时性的处理的客户OS中,进行调度,以比要求实时性的客户OS还低的优先级,进行处理时间的分配。图15表示以时间轴为横轴,表示客户OS302和客户OS303一边切换,一边工作的样子。当客户OS302工作时,MPU11和全部VPU12作为客户OS302的资源使用,当客户OS303工作时,MPU11和全部VPU12作为客户OS303的资源使用。
图16表示其他工作模式。根据目标应用程序,有时想一直占有VPU12。例如,有必要总监视数据或事件的应用程序相当于此。此时,虚拟计算机301的调度器进行调度管理,以便由特定的客户OS占有特定的VPU12。在图16中,是把VPU4指定为客户OS301的专用资源时的例子。虚拟计算机OS301即使切换客户OS302(OS1)和客户OS303(OS2),VPU4也总在客户OS301(OS1)的管理下继续工作。
为了使用多个VPU12使程序工作,在本实施例中使用包含用于调度分别分配给多个VPU12的线程的调度器的称作VPU执行环境的软件模块。当在本计算机***中只搭载一个OS时,如图17所示,在该OS201中安装VPU执行环境401。此时,VPU执行环境401也能安装在OS201的内核内,也能以用户程序水平安装,也能安装为分割为两者,协调工作。而当在虚拟计算机OS上使一个或多个OS工作时,在安装VPU执行环境401的方式中存在以下的方式。
1.在虚拟计算机OS301中安装VPU执行环境401的方式(图1 8)。
2.把VPU执行环境401作为虚拟计算机OS301管理的一个OS安装的方式(图19)。在图19中,在虚拟计算机OS301上工作的客户OS304自身是VPU执行环境401。
3.在虚拟计算机OS301管理的各客户OS中分别安装专用的VPU执行环境401的方式(图20)。在图20中,在客户OS302、303中分别安装VPU执行环境401、402。VPU执行环境401、402使用虚拟计算机OS301提供的客户OS间的通信功能,根据需要,彼此联合工作。
4.在虚拟计算机OS301管理的客户OS中的一个上安装VPU执行环境401,不具有VPU执行环境的客户OS使用虚拟计算机OS301提供的客户OS间的通信功能,利用具有VPU执行环境401的客户OS的VPU执行环境401的方式(图21)。
这些方式的优点如下所述。
方式1的优点
因为能把虚拟计算机OS具有的客户OS(虚拟计算机OS管理的对象的OS)的调度、VPU12的调度一体化,所以能高效地进行极细致的调度,能有效利用资源。
因为在多个客户OS间共享VPU执行环境,所以当导入新的客户OS时,可以不新生成VPU执行环境。
方式2的优点
因为在位于虚拟计算机OS上的客户OS间能共享VPU12的调度器,所以能高效地进行极细致的调度,能有效利用资源。
因为在多个客户OS间共享VPU执行环境,所以当导入新的客户时,可以不新生成VPU执行环境。
因为不依存于虚拟计算机OS或特定的客户OS生成VPU执行环境,所以容易标准化,交换使用。生成适合于特定的组入仪器的VPU执行环境,进行充分利用该仪器特性的调度,能实现高效的执行。
方式3的优点
对各客户OS安装最适合的VPU执行环境,所以能高效地进行极细致的调度,能有效利用资源。
方式4的优点
因为没必要全部客户OS安装VPU执行环境,所以容易追加新的客户OS。
这样能用任意的方式安装VPU执行环境。另外,也能适当实施。
(服务提供者)
在本实施例的计算机***中,VPU执行环境401除了与各VPU12关联的各种资源(各VPU的处理时间、存储器、连接装置的带宽等)的管理和调度功能,还提供各种服务(使用网络的通信功能、文件的输入输出功能、多媒体数字信号编解码器等库功能的调用、与用户的界面处理、使用输入输出设备的输入输出处理、日期或时间的读出)。这些服务由在VPU12上工作的应用程序调用,当为简单的服务时,用VPU12上的服务程序处理。但是,有关通信或晚间的处理等只在VPU12中无法处理的服务,通过MPU11上的服务程序处理。把提供这样的服务的程序称作服务提供者(SP)。
图22表示VPU执行环境的一个实施例。VPU执行环境的主要部分存在于MPU11上。它是MPU一侧VPU执行环境501。在各VPU12上存在具有执行在VPU12内能处理的服务的最小限度的功能的VPU一侧VPU执行环境502。MPU一侧VPU执行环境501大致分为VPU控制511、服务代理512等两个。VPU控制512主要提供与各VPU12关联的各种资源(VPU的处理时间、存储器、虚拟空间、连接装置的带宽等)的管理机构、同步机构、安全的管理机构、调度功能。有关调度结果,进行VPU12上的程序的分配的是该VPU控制511。服务代理512接收VPU12上的应用程序调用的服务要求,调用适当的服务程序(服务提供者),提供服务。
VPU一侧VPU执行环境502主要接收VPU12上的应用程序调用的服务要求,处理在VPU12内能处理的,把不能处理的向MPU一侧VPU执行环境501的服务代理512委托处理。
图23表示VPU一侧VPU执行环境502处理服务要求的步骤。VPU一侧VPU执行环境502如果接收来自应用程序的服务调用(步骤S101),就判别是否为在VPU执行环境502内能处理的服务(步骤S102),如果是,就执行对应的服务,把结果返回调用源(步骤S103、S107)。而如果不是在VPU执行环境502内能处理的服务,判断能执行该服务的服务程序是否登记为VPU12上的能执行的程序(步骤S104)。如果登记了,就执行该服务程序,把结果返回调用源(步骤S105、S107)。如果未登记,就把处理委托给服务代理512,然后把从服务代理512返回的服务的结果发送给调用源(步骤S106、S107)。
图24表示MPU一侧VPU执行环境501的服务代理512处理从VPU一侧VPU执行环境502要求的服务的步骤。服务代理512如果接收到来自VPU一侧VPU执行环境502的服务调用(步骤S111),就判别是否为在VPU执行环境501内能处理的服务(步骤S112),如果是,就执行对应的服务,把结果发送给调用源的VPU一侧VPU执行环境502(步骤S113、S114)。而如果不是VPU执行环境501内能处理的服务,就判断能执行该服务的服务程序是否登记为MPU11上的能执行的程序(步骤S114)。如果登记了,就执行该服务程序,把结果返回调用源的VPU一侧VPU执行环境502(步骤S116、S114)。如果未登记,就把错误返回调用源的VPU一侧VPU执行环境502(步骤S117)。
须指出的是,在由VPU12执行的程序发出的服务要求中既存在返回服务的执行结果的应答,也存在只发出要求,没有应答的。另外,应答目标通常为发出要求的线程,但是作为应答目标,也能执行其他线程、线程群、或进程。因此,在服务要求的消息中,希望包含应答目标的指定。能使用广泛应用的对象要求代理实现服务代理512。
(实时处理)
本实施例的计算机***作为实时处理***起作用。此时,作为该实时处理***的对象的处理大致能划分为以下3种:
1.硬实时处理
2.软实时处理
3.最佳成果处理(非实时处理)
1和2是所谓的实时处理。本实施例的实时处理***与很多已经存在的OS同样,具有线程和进程的概念。在此,首先就本实施例的实时处理***中的线程和进程加以说明。
在线程中存在以下3个类。
1.硬实时类
该线程类在时间要求(timing requirementS)非常重要,当不满足该要求时变为重大的状况的重要的应用程序中使用。
2.软实时类
该线程类在不满足时间要求时,质量下降的应用程序中使用。
3.最佳成果类
该线程类在要求中不包含一切时间要求的应用程序中使用。
线程是在本实时处理***内执行处理的实体。在线程中与该线程执行的程序关联。各线程保持有称作线程上下文的各线程中固有的信息。在线程上下文中包含处理器的寄存器的值或堆栈等的信息。
在本实时处理***中,存在MPU线程和VPU线程等2种线程。这2个线程由执行该线程的处理器(MPU11或VPU12)分类,作为线程的模型完全相同。在VPU线程的线程上下文中包含VPU12的局部存储器32的内容、存储器控制器33具有的DMA控制器的状态等。
把多个线程汇集为组,把它称作线程组。线程组具有能使对组中包含的线程付与相同的属性的处理高效并简单的优点。硬实时类或软实时类的线程组大致分为密结合线程组(tightly coupled thread group)和疏结合线程组(loosely coupled thread group)等两种。密结合线程组(tightlycoupled thread group)和疏结合线程组(loosely coupled thread group)通过附加在线程组中的属性信息(结合属性信息)识别。通过应用程序内的代码或上述的构成记述,能明确指示线程组的结合属性。
密结合线程组是由彼此协调工作的多个线程的集合构成的线程组。即密结合线程组表示属于该组的线程群彼此紧密联合工作。紧密的联合是指频繁地在线程间进行通信或同步处理等相互作用(interaction),或需要等待(latenc y)(延迟)小的相互作用时。而疏结合线程组与密结合线程组相比,是不需要属于该组的线程间的紧密的联合的线程组,线程群通过存储器14上的缓存器进行用于数据收发的通信。
(密结合线程组)
如图25所示,对属于密结合线程组的各不同的线程群分配分别不同的VPU,同时执行各线程。把属于密结合线程组的线程称作密结合线程(tightly coupled thread)。此时,对与密结合线程的个数相同的VPU分别预约属于密结合线程组的密结合线程各自的执行期间,同时执行这些密结合线程。在图25中,表示在某密结合线程组中包含线程A、B等2个作为密结合线程,这些线程A、B分别由VPU0、VPU1同时执行的样子。通过保证由分别不同的VPU同时执行线程A、B,各线程能通过执行对方线程的VPU的局部存储器或控制寄存器直接进行与对方线程的通信。图26表示通过分别执行线程A、B的VPU0、VPU1的局部存储器,执行线程A、B间的通信的样子。此时,在执行线程A的VPU0中,把与执行通信对方线程B的VPU1的局部存储器32对应的RA空间映射到线程A的EA空间的一部分上。设置在VPU0的存储器控制器33内的地址变换部件331使用段表和页表执行用于该映射的地址变换。在执行线程B的VPU1中,把与执行通信对方线程A的VPU0的局部存储器32对应的RA空间映射到线程B的EA空间的一部分上。设置在VPU1的存储器控制器33内的地址变换部件331使用段表和页表执行用于该映射的地址变换。图27表示在VPU0上执行的线程A把执行线程B的VPU1的局部存储器32(LS1)映射到自身的EA空间上,在VPU1上执行的线程B把执行线程A的VPU0的局部存储器32(LS0)映射到自身的EA空间上的样子。例如,在线程A在局部存储器LS0上准备好应该传递给线程B的数据的时刻,在局部存储器LS0或执行线程B的VPU1的存储器控制器LS1上设置表示该事实的标志。线程B响应该标志的设置,读出局部存储器LS0上的数据。
这样,根据结合属性信息不但能确定密结合关系中存在的线程,而且能保证分别由不同的VPU执行密结合关系中存在的线程A、B的,能更轻量并且无延迟地进行有关线程A、B间的通信、同步的交互作用。
(疏结合线程组)
属于疏结合线程组的线程群各自的执行时间由这些线程群间的输入输出关系决定,即使是没有执行顺序的制约的线程,也无法保证同时执行它们。把属于疏结合线程组的线程称作疏结合线程(loosely coupledthread)。在图28中,表示在某疏结合线程组中包含线程C、D等2个作为疏结合线程,这些线程C、D分别由VPU0、VPU1执行的样子。如图28所示,各线程的执行时间变为分散的。线程C、D间的通信如图29所示,通过主存储器14上准备的缓存器进行。线程C通过DMA传输把局部存储器LS0上准备的数据写入主存储器14上准备的缓存器中,线程D在开始时通过DMA传输从主存储器14上的缓存器向局部存储器LS1读入数据。
(进程和线程)
进程如图30所示,由一个地址空间和一个以上线程构成。一个进程中包含的线程数和种类可以为任意的组合。例如能构筑只有VPU线程构成的进程,也可以构筑VPU线程和MPU线程混合存在的进程。与线程保持作为线程固有信息的线程上下文同样,进程也保持进程上下文作为进程固有信息。在该进程上下文中包含进程固有的地址空间、进程包含的全部线程的线程上下文。进程的地址空间能在属于进程的全部线程间共享。一个进程能包含多个线程组。但是,一个线程组不能属于多个进程。因此,属于某进程的线程组是该进程中固有的。在本实施例的实时处理处理***中,在新生成线程的方式中存在线程第一模式和地址空间第一模式等2种。地址空间第一模式与已经存在的OS中采用的同样,能应用于MPU线程,也能应用于VPU线程。而线程第一模式是只能应用于VPU线程的方式,是本发明的实时处理处理***中特有的方式。在线程第一模式中,已经存在的线程(想新生成线程的一侧的线程。成为新生成的线程之母的线程)首先指定新线程执行的程序,使新线程开始程序的执行。此时,程序存储在VPU12的局部存储器中,从给定的执行开始地址开始处理。在该时刻,地址空间未与该新线程关联,所以能访问自身的局部存储器,但是无法访问主存储器14。然后,新线程根据需要,自身调用VPU执行环境的服务,生成地址空间,产生关联,或通过MPU11一侧的处理,把地址空间关联,从而能访问存储器14。在地址空间第一模式中,已经存在的线程新生成地址空间,或指定已经存在的地址空间,在该地址空间中配置新线程执行的程序。然后,使新线程开始该程序的执行。线程第一模式(Thread first model)的优点在于:只用局部存储器工作,所以能减小线程的生成、分配或结束处理等开销。
(线程群的调度)
下面,参照图31的程序流程图,说明由VPU执行环境401执行的调度处理。VPU执行环境401内的调度器根据以线程组单位附加在调度对象的线程群中的结合属性信息,检查线程间的结合属性(步骤S121),对各线程组判别该线程组是密结合线程组合疏结合线程组中的哪一个(步骤S122)。通过参照程序代码中的有关线程的记述或上述的构成记述117中的线程参数,进行结合属性的检查。这样,通过分别决定密结合线程组和疏结合线程组,把调度对象的线程群分离为密结合线程组和疏结合线程组。
对属于密结合线程组的线程群的调度按如下进行。即VPU执行环境401内的调度器为了使从调度对象的线程群选择的属于密结合线程组的线程群同时由分别不同的VPU执行,预约与属于密结合线程组的线程群相同数量的VPU各自的执行期间,同时把线程群分配给这些预约的VPU(步骤S123)。然后,调度器使用执行各线程的VPU内的地址变换部件331,把执行成为进行协调相互作用的对方的其他线程的VPU的局部存储器所对应的RA空间映射到各线程的EA空间的一部分上(步骤S124)。而有关从调度对象的线程群选择的属于疏结合线程组的疏结合线程群,调度器根据这些线程群间的输入输出关系,依次把这些线程群分配给1以上的VPU(步骤S125)。
(局部存储器的映射)
在本实施例的实时处理***中,当在MPU线程和VPU线程之间或VPU线程和其他VPU线程之间一边进行任意的通信或同步,一边协调进行工作时,有必要访问协调对方的VPU线程的局部存储器。例如,更轻量、高速的同步机构向局部存储器上分配安装同步变量。因此,其他VPU1 2或MPU11的线程有表直接访问某VPU12的局部存储器。如图4所示的例子那样,当各VPU12的局部存储器分配给实际地址空间时,如果适当设定段表或页表,就能直接访问对方的VPU12的局部存储器。但是此时,产生2个问题。
第一问题是有关线程VPU线程的分配目标VPU12的变更的问题。如图32所示,存在VPU线程A和B,分别由VPU0和VPU1运行。而且,该线程A和B想与彼此的线程协调,所以把彼此的线程的LS(局部存储器)映射到自己的EA空间上。另外,VPU0、1、2的LS0、1、2分别如图32所示,存在于RA空间中。此时,VPU线程A映射到自己的EA空间中的是VPU线程B工作的VPU的LS,即VPU1的LS即LS1。反之,VPU线程B映射到自己的EA空间中的是VPU线程A工作的VPU的LS,即VPU0的LS即LS0。然后,通过VPU执行环境中的调度器分配执行VPU线程A的VPU,VPU线程A在VPU2上运行。此时,VPU线程A已经不在VPU0商工作,所以VPU线程B映射到自己的EA空间上的VPU0的LS变得没有意义。此时,线程B可以不知道线程A的分配目标VPU产生了变更,***有必要以任意的方法把映射到LS0的EA空间的地址映射到LS2,从线程B能把VPU2的LS即LS2作为线程A的局部存储器观察到。
第二问题是物理VPU和逻辑VPU的对应关系的问题。在把VPU分配给VPU线程时,实际有两个水平。一个是逻辑VPU向VPU线程的分配,另一个是物理VPU向逻辑VPU的分配。物理VPU是虚拟计算机OS301管理的物理VPU12。逻辑VPU是虚拟计算机OS301分配给客户OS的逻辑上的VPU。图14表示该关系。例如,VPU执行环境401管理逻辑上的VPU时,在图32的例子中,成为VPU线程的分配对象的VPU是逻辑VPU。
图33表示这两个水平的分配的概念。之前说明的第一问题相当于位于图33上部的VPU线程向逻辑VPU的分配问题。第二问题即物理VPU向逻辑VPU的分配问题相当于位于下部的分配。在图33中,表示从4个物理VPU选择3个VPU,分配给3个逻辑VPU。如果该物理VPU和逻辑VPU的对应关系变化时,即使VPU线程对逻辑VPU的分配不变更,适当的设定的变更也成为必要。例如,改变与LS对应的页表记录,使对变更后的逻辑VPU的LS的访问指向正确的物理VPU的LS。
在某一时刻,如图34所示,物理VPU1、2、3分别分配给逻辑VPU0、1、2。然后,逻辑VPU1分配给VPU线程A,逻辑VPU2分配给VPU线程B。然后,VPU线程A和B分别彼此把对方工作的物理VPU的LS映射到自己的EA空间上。执行VPU线程B的物理VPU3的LS3映射到VPU线程A的EA空间上,执行VPU线程A的物理VPU2的LS2映射到VPU线程B的EA空间上。然后,在某一时刻,通过虚拟计算机OS301把逻辑VPU0、1再分配给物理VPU0、1。这样一来,迄今为止VPU线程A工作的VPU1从物理VPU2向VPU1变化。逻辑VPU向VPU线程的分配未变化,但是物理VPU和逻辑VPU的对应关系变化了。因此VPU线程B需要映射到EA空间上,VPU线程A工作的VPU的LS从LS2变更为LS1,以便能正确访问。
为了解决这两个问题,在本实施例的实时处理***中,控制虚拟存储机构,以便把执行对方的线程的VPU的局部存储器映射到从线程观察的EA空间的固定地址上,从而能观察到。即在基于VPU调度器的逻辑VPU的分配时、基于虚拟计算机OS的物理VPU和逻辑VPU的对应关系的切换时,通过适当改写页表或段表,从VPU上工作的线程总能观察到在相同地址中执行对方的线程的VPU的局部存储器。
首先,说明2个线程的EA空间的关系,2个线程的EA空间用以下的3个中的任意模式共享或非共享。
1.共享EA型:两个线程1、2共享段表和页表。(图35)
2.共享VA型:两个线程1、2共享页表,但是不共享段表,分别具有段表(图36)。
3.非共享型:两个线程1、2不共享段表和页表。分别具有共享段表和页表。(图37)
下面,以1的共享EA型为例,说明怎样控制,怎样映射VPU的局部存储器。
首先,如图38所示,在VA空间上设置与各逻辑VPU对应的区域,设定页表,把与逻辑VPU关联的物理VPU的局部存储器映射到那里。在本例子中,表示物理VPU0、1、2分别与逻辑VPU0、1、2关联的状态。接着设定段表,以便能从线程A在固定地址即段a的区域中观察到执行线程B的VPU的局部存储器。另外,设定段表,以便能从线程B在固定地址即段b的区域中观察到执行线程A的VPU的局部存储器。在本例子中,表示以逻辑VPU2执行线程A、以逻辑VPU1执行线程B的状况。在此,VPU执行环境401的调度器把线程B分配给逻辑VPU0。此时,VPU执行环境401自动改写段表,以便VPU执行环境401如图39所示,能从线程A通过固定地址即段a观察到现在执行线程B的逻辑VPU0的局部存储器。
在此,因为虚拟计算机OS301进行客户OS的分配,所以物理VPU和逻辑VPU的对应变化。此时,例如如图40所示,VPU执行环境401改写页表,固定在VA空间上的逻辑VPU的局部存储器的区域指向正确的物理VPU的局部存储器的区域。在图40的例子中,变更为物理VPU1、2、3与逻辑VPU0、1、2对应,所以改写页表,变为现在的正确的映射。
这样,通过VPU执行环境401的调度器的分配,执行线程的逻辑VPU产生变更时,改写进行从EA空间到VA空间的映射的段表,解决第一问题。另外,通过虚拟计算机OS301,物理VPU和逻辑VPU的对应产生变更时,改写从VA空间到RA空间的映射,解决第二问题。
这样,按照执行进行相互作用的对方的线程的处理器,自动变更映射到有效地址空间的与对方线程对应的处理的局部存储器,各线程不用意识到分配了对方线程的处理器,就能高效地进行与对方线程的相互作用。因此,能以高效地并行执行多个线程。
以上说明了共享EA型的例子,但是有关2的共享VA型、3的非共享型,通过改写段表或页表,也同样能解决第一问题和第二问题。
下面,描述解决所述第一和第二问题的其他方法。在此,以共享EA型为例进行说明。如图41所示,当存在协调工作的多个VPU线程时,设定页表和段表,以便把执行这些线程的VPU的局部存储器连续映射到段上。当以图41为例子时,以物理VPU2执行线程A,以物理VPU0执行线程B,设定页表和段表,以便把各VPU的局部存储器连续配置到同一段中。在此,由VPU执行环境401的调度器分配执行线程的逻辑VPU,或通过虚拟计算机OS301等,物理VPU和逻辑VPU的对应产生变更时,改写页表,变更VA空间和RA空间的映射,以对线程A和线程B隐蔽各个变更。例如图42表示执行线程A的VPU变更为物理VPU1,执行线程B的变更为物理VPU3时的映射。进行该变更,通过从线程A和线程B访问具有固定地址的段内的给定区域,总能访问执行对方线程的VPU的局部存储器。
下面,参照图43的程序流程图,说明由VPU执行环境401执行的地址管理处理的步骤。VPU执行环境401把与执行对方线程的VPU的局部存储器对应的RA空间映射到各线程的EA空间上的固定地址中(步骤S201)。然后,VPU执行环境401判别由于对方线程的分配目标VPU的变更或逻辑VPU和物理VPU的对应关系的变更,执行对方线程的VPU是否变更(步骤S202)。如果执行对方线程的VPU变更,则VPU执行环境401改写段表或页表的内容,配合执行对方线程的VPU变更映射到各线程的EA空间上的固定地址中的局部存储器(步骤S203)。
在此前的例子中,说明象密结合线程组那样,在彼此通过VPU正在执行的线程间,访问执行对方线程的VPU的局部存储器的方式。但是,也存在疏结合线程组等协调工作的线程并不一定同时分配给VPU而执行的情形。此时,在EA空间上存在映射执行对方线程的VPU12的局部存储器的区域,所以按如下使用该区域。
第一方法:当对方线程不是正在执行时,如果访问映射与该线程对应的VPU的局部存储器的区域,线程就等到对方线程开始执行。
第二方法:当对方线程不是正在执行时,如果访问映射与该线程对应的VPU的局部存储器的区域,线程就通过例外的产生或出错代码知道该意思。
第三方法:在线程的结束时,把最后执行该线程时的局部存储器的内容保持在存储器中,控制映射,以便从执行与该线程关联的局部存储器的页表或段表的记录指向该存储器区域。通过该方式,即使对方不是正在执行,也如同存在与对方线程关联的局部存储器那样,能继续线程的执行。图44和图45表示具体例。
①现在,分别由VPU0、1执行线程A、B,把执行对方线程A的VPU0的局部存储器LS0映射到线程B的EA空间上。
②在线程A的结束时,线程A或VPU执行环境401把执行线程A的VPU0的局部存储器LS0的内容保存到存储器14中(步骤S211)。
③VPU执行环境401把映射到线程B的EA空间上的对方线程A的局部存储器的地址空间从VPU0的LS0变更为保存LS0的内容的存储器14上的存储器区域(步骤S212)。据此,线程B在对方线程A变为不在执行中后,也能继续其动作。
④当对线程A再次分配了VPU时,VPU执行环境401使存储器14上的存储器区域回到执行线程A的VPU的局部存储器(步骤S213)。例如,当再次把VPU0分配给线程A时,存储器14上的存储器区域的内容返回VPU0的局部存储器LS0。
⑤VPU执行环境401把映射到线程B的EA空间上的对方目标线程A的局部存储器的地址空间变更为执行线程A的VPU的局部存储器(步骤S214)。例如,当对线程A再次分配了VPU0时,映射到线程B的EA空间上的对方目标线程A的局部存储器的地址空间回到VPU0的局部存储器LS0。
须指出的是,当对线程A分配VPU2时,存储器14上的存储器区域的内容恢复为VPU2的局部存储器LS2。然后,映射到线程B的EA空间上的对方目标线程A的局部存储器的地址空间变更为VPU2的局部存储器LS2。
须指出的是,设置在图1的计算机***中的MPU11和多个VPU12也能作为把它们混载在1芯片上的并行处理器实现。此时,由MPU11执行的VPU执行环境、或由特定的一个VPU等执行的VPU执行环境能进行对多个VPU12的调度和地址管理。
另外,通过把作为VPU执行环境工作的程序或包含该VPU执行环境的操作***等的程序存储在计算机可读取存储媒体中,通过该存储媒体把该程序导入包含分别具有局部处理器的多个处理器的计算机中,执行,就能取得与本实施例同样的效果。
而且,本发明并不局限于所述实施例,在不脱离本发明精神的范围内可以有各种各样的实施例变形,另外,根据所述实施例中描述的多个构成要素的适当组合,就能形成各种发明。例如,可以从实施例表示的全部构成要求删除几个构成要素。还可以适当组合涉及不同实施例的构成要素。
综上所述,根据本发明,就能使用多个处理器来高效地并行执行多个线程。
Claims (8)
1. 一种信息处理***,其特征在于:包括:
具有第一局部存储器的第一处理器;
具有第二局部存储器的第二处理器;
具有第三局部存储器的第三处理器;
把执行与第一线程有相互作用的第二线程的所述第二和第三处理器中一方的处理器的、所述第二和第三局部存储器中一方的局部存储器映射到由所述第一处理器执行的第一线程的有效地址空间的一部分上的部件;和
当执行所述第二线程的处理器从所述第二和第三处理器中一方的处理器变更为另一方的处理器时,把映射到所述第一线程的有效地址空间的一部分上的局部存储器从所述第二和第三局部存储器中一方的局部存储器变更为另一方的局部存储器的部件。
2. 根据权利要求1所述的信息处理***,其特征在于:还包括:
由所述第一处理器、所述第二处理器和所述第三处理器共享的共享存储器;
当停止执行所述第二线程时,把与执行了所述第二线程的所述第二和第三处理器中一方的处理器对应的所述第二和第三局部存储器中一方的局部存储器的内容保存到所述共享存储器的存储器区域中的部件;和
把映射到所述第一线程的有效地址空间的一部分上的局部存储器从所述第二和第三局部存储器中一方的局部存储器变更为所述共享存储器上的存储器区域的部件。
3. 根据权利要求2所述的信息处理***,其特征在于:还包括:
当由所述第二和第三处理器中一方的处理器重新开始执行所述第二线程时,把所述共享存储器上的所述存储器区域的内容复原到与所述第二和第三处理器中一方的处理器对应的所述第二和第三局部存储器中一方的局部存储器中的部件;和
把映射到所述第一线程的有效地址空间的一部分上的局部存储器从所述共享存储器的所述存储器区域变更为所述第二和第三局部存储器中一方的局部存储器的部件。
4. 根据权利要求2所述的信息处理***,其特征在于:还包括:
当由所述第二和第三处理器中另一方的处理器重新开始执行所述第二线程时,把所述共享存储器上的所述存储器区域的内容复原到与所述第二和第三处理器中另一方的处理器对应的所述第二和第三局部存储器中另一方的局部存储器中的部件;和
把映射到所述第一线程的有效地址空间的一部分上的局部存储器从所述共享存储器上的所述存储器区域变更为所述第二和第三局部存储器中另一方的局部存储器的部件。
5. 一种存储器管理方法,在包含具有第一局部存储器的第一处理器、具有第二局部存储器的第二处理器和具有第三局部存储器的第三处理器的信息处理***中,对在线程之间的通信中使用的局部存储器进行管理,其特征在于:包括:
把执行与第一线程有相互作用的第二线程的所述第二和第三处理器中一方的处理器的、所述第二和第三局部存储器中一方的局部存储器映射到由所述第一处理器执行的第一线程的有效地址空间的一部分上的步骤;和
当执行所述第二线程的处理器从所述第二和第三处理器中一方的处理器变更为另一方的处理器时,把映射到所述第一线程的有效地址空间的一部分上的局部存储器从所述第二和第三局部存储器中一方的局部存储器变更为另一方的局部存储器的步骤。
6. 根据权利要求5所述的存储器管理方法,其特征在于:还包括:
当停止执行所述第二线程时,把与执行了所述第二线程的所述第二和第三处理器中一方的处理器对应的所述第二和第三局部存储器中一方的局部存储器的内容保存到由所述第一处理器、所述第二处理器和所述第三处理器共享的共享存储器上的存储器区域中的步骤;和
把映射到所述第一线程的有效地址空间的一部分上的局部存储器从所述第二和第三局部存储器中一方的局部存储器变更为所述共享存储器上的所述存储器区域的步骤。
7. 根据权利要求6所述的存储器管理方法,其特征在于:还包括:
当由所述第二和第三处理器中一方的处理器重新开始执行所述第二线程时,把所述共享存储器上的所述存储器区域的内容复原到与所述第二和第三处理器中一方的处理器对应的所述第二和第三局部存储器中一方的局部存储器中的步骤;和
把映射到所述第一线程的有效地址空间的一部分上的局部存储器从所述共享存储器上的所述存储器区域变更为所述第二和第三局部存储器中一方的局部存储器的步骤。
8. 根据权利要求6所述的存储器管理方法,其特征在于:还包括:
当由所述第二和第三处理器中另一方的处理器重新开始执行所述第二线程时,把所述共享存储器上的所述存储器区域的内容复原到与所述第二和第三处理器中另一方的处理器对应的所述第二和第三局部存储器中另一方的局部存储器中的步骤;和
把映射到所述第一线程的有效地址空间的一部分上的局部存储器从所述共享存储器上的所述存储器区域变更为所述第二和第三局部存储器中另一方的局部存储器的步骤。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003185416A JP3892829B2 (ja) | 2003-06-27 | 2003-06-27 | 情報処理システムおよびメモリ管理方法 |
JP185416/2003 | 2003-06-27 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1577310A CN1577310A (zh) | 2005-02-09 |
CN100416540C true CN100416540C (zh) | 2008-09-03 |
Family
ID=33411151
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004100073028A Expired - Fee Related CN100416540C (zh) | 2003-06-27 | 2004-02-27 | 信息处理***和存储器管理方法 |
Country Status (5)
Country | Link |
---|---|
US (2) | US7356666B2 (zh) |
EP (1) | EP1492015A3 (zh) |
JP (1) | JP3892829B2 (zh) |
KR (1) | KR100608220B1 (zh) |
CN (1) | CN100416540C (zh) |
Families Citing this family (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3889726B2 (ja) * | 2003-06-27 | 2007-03-07 | 株式会社東芝 | スケジューリング方法および情報処理システム |
JP3892829B2 (ja) * | 2003-06-27 | 2007-03-14 | 株式会社東芝 | 情報処理システムおよびメモリ管理方法 |
JP4025260B2 (ja) | 2003-08-14 | 2007-12-19 | 株式会社東芝 | スケジューリング方法および情報処理システム |
JP4197673B2 (ja) * | 2004-09-30 | 2008-12-17 | 株式会社東芝 | マルチプロセッサ計算機及びタスク実行方法 |
JP4197672B2 (ja) * | 2004-09-30 | 2008-12-17 | 株式会社東芝 | マルチプロセッサ計算機及びプログラム |
JP4606142B2 (ja) * | 2004-12-01 | 2011-01-05 | 株式会社ソニー・コンピュータエンタテインメント | スケジューリング方法、スケジューリング装置およびマルチプロセッサシステム |
EP1883045A4 (en) * | 2005-05-20 | 2016-10-05 | Sony Corp | SIGNAL PROCESSOR |
US7526634B1 (en) * | 2005-12-19 | 2009-04-28 | Nvidia Corporation | Counter-based delay of dependent thread group execution |
CN100454899C (zh) * | 2006-01-25 | 2009-01-21 | 华为技术有限公司 | 一种网络处理装置及方法 |
US8578347B1 (en) * | 2006-12-28 | 2013-11-05 | The Mathworks, Inc. | Determining stack usage of generated code from a model |
US20080244538A1 (en) * | 2007-03-26 | 2008-10-02 | Nair Sreekumar R | Multi-core processor virtualization based on dynamic binary translation |
US8014136B2 (en) * | 2007-04-26 | 2011-09-06 | Jupiter IP, LLC | Modular computer system |
JP4903092B2 (ja) * | 2007-07-05 | 2012-03-21 | 株式会社リコー | 画像処理装置、画像処理制御方法、及び画像処理制御プログラム |
US20090125706A1 (en) * | 2007-11-08 | 2009-05-14 | Hoover Russell D | Software Pipelining on a Network on Chip |
US8261025B2 (en) | 2007-11-12 | 2012-09-04 | International Business Machines Corporation | Software pipelining on a network on chip |
US7873701B2 (en) * | 2007-11-27 | 2011-01-18 | International Business Machines Corporation | Network on chip with partitions |
US8255913B2 (en) | 2008-02-01 | 2012-08-28 | International Business Machines Corporation | Notification to task of completion of GSM operations by initiator node |
US7873879B2 (en) * | 2008-02-01 | 2011-01-18 | International Business Machines Corporation | Mechanism to perform debugging of global shared memory (GSM) operations |
US8239879B2 (en) | 2008-02-01 | 2012-08-07 | International Business Machines Corporation | Notification by task of completion of GSM operations at target node |
US8484307B2 (en) | 2008-02-01 | 2013-07-09 | International Business Machines Corporation | Host fabric interface (HFI) to perform global shared memory (GSM) operations |
US8200910B2 (en) | 2008-02-01 | 2012-06-12 | International Business Machines Corporation | Generating and issuing global shared memory operations via a send FIFO |
US8275947B2 (en) * | 2008-02-01 | 2012-09-25 | International Business Machines Corporation | Mechanism to prevent illegal access to task address space by unauthorized tasks |
US8146094B2 (en) * | 2008-02-01 | 2012-03-27 | International Business Machines Corporation | Guaranteeing delivery of multi-packet GSM messages |
US8214604B2 (en) | 2008-02-01 | 2012-07-03 | International Business Machines Corporation | Mechanisms to order global shared memory operations |
US8423715B2 (en) | 2008-05-01 | 2013-04-16 | International Business Machines Corporation | Memory management among levels of cache in a memory hierarchy |
US8438578B2 (en) | 2008-06-09 | 2013-05-07 | International Business Machines Corporation | Network on chip with an I/O accelerator |
US9086913B2 (en) * | 2008-12-31 | 2015-07-21 | Intel Corporation | Processor extensions for execution of secure embedded containers |
EP2450135B1 (en) | 2009-06-29 | 2019-05-01 | Kyocera Corporation | Cutting tool with insert and holder |
JP2011095852A (ja) * | 2009-10-27 | 2011-05-12 | Toshiba Corp | キャッシュメモリ制御回路 |
JP2012173870A (ja) * | 2011-02-18 | 2012-09-10 | Toshiba Corp | 半導体装置及びメモリ保護方法 |
US8719464B2 (en) * | 2011-11-30 | 2014-05-06 | Advanced Micro Device, Inc. | Efficient memory and resource management |
WO2014188643A1 (ja) * | 2013-05-24 | 2014-11-27 | 日本電気株式会社 | スケジュールシステム、スケジュール方法、及び、記録媒体 |
JP2014078214A (ja) * | 2012-09-20 | 2014-05-01 | Nec Corp | スケジュールシステム、スケジュール方法、スケジュールプログラム、及び、オペレーティングシステム |
JP6582367B2 (ja) * | 2014-07-18 | 2019-10-02 | 富士通株式会社 | 情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム |
JP2016115253A (ja) * | 2014-12-17 | 2016-06-23 | 富士通株式会社 | 情報処理装置、メモリ管理方法およびメモリ管理プログラム |
JP6859755B2 (ja) * | 2017-03-02 | 2021-04-14 | 富士通株式会社 | 情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム |
US11438414B2 (en) | 2019-05-28 | 2022-09-06 | Micron Technology, Inc. | Inter operating system memory services over communication network connections |
US11100007B2 (en) | 2019-05-28 | 2021-08-24 | Micron Technology, Inc. | Memory management unit (MMU) for accessing borrowed memory |
US11256624B2 (en) | 2019-05-28 | 2022-02-22 | Micron Technology, Inc. | Intelligent content migration with borrowed memory |
US11334387B2 (en) * | 2019-05-28 | 2022-05-17 | Micron Technology, Inc. | Throttle memory as a service based on connectivity bandwidth |
US11061819B2 (en) | 2019-05-28 | 2021-07-13 | Micron Technology, Inc. | Distributed computing based on memory as a service |
US11231963B2 (en) * | 2019-08-15 | 2022-01-25 | Intel Corporation | Methods and apparatus to enable out-of-order pipelined execution of static mapping of a workload |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10143380A (ja) * | 1996-11-07 | 1998-05-29 | Hitachi Ltd | マルチプロセッサシステム |
CN1276890A (zh) * | 1997-10-23 | 2000-12-13 | 国际商业机器公司 | 在多线程处理器中改变线程优先级的方法和装置 |
US20020199088A1 (en) * | 2001-06-22 | 2002-12-26 | Burns David W. | Method and apparatus for assigning thread priority in a processor or the like |
EP1290560A2 (en) * | 2000-05-19 | 2003-03-12 | Neale Bremner Smith | Distributed processing multi-processor computer |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4539637A (en) | 1982-08-26 | 1985-09-03 | At&T Bell Laboratories | Method and apparatus for handling interprocessor calls in a multiprocessor system |
JPH02242434A (ja) | 1989-03-16 | 1990-09-26 | Hitachi Ltd | タスクのスケジューリング方法 |
JPH04245745A (ja) | 1991-01-30 | 1992-09-02 | Nec Corp | サービス速度設定回路 |
JPH04246745A (ja) * | 1991-02-01 | 1992-09-02 | Canon Inc | 情報処理装置及びその方法 |
US5269013A (en) * | 1991-03-20 | 1993-12-07 | Digital Equipment Corporation | Adaptive memory management method for coupled memory multiprocessor systems |
JPH07302246A (ja) * | 1994-05-09 | 1995-11-14 | Toshiba Corp | スケジューリング方式 |
JPH08180025A (ja) * | 1994-12-21 | 1996-07-12 | Toshiba Corp | スケジューリング装置 |
US6289424B1 (en) * | 1997-09-19 | 2001-09-11 | Silicon Graphics, Inc. | Method, system and computer program product for managing memory in a non-uniform memory access system |
JPH11316691A (ja) | 1998-05-06 | 1999-11-16 | Sega Enterp Ltd | オペレーティングシステムの実行方法及び、これを用いた情報処理装置 |
US6314501B1 (en) | 1998-07-23 | 2001-11-06 | Unisys Corporation | Computer system and method for operating multiple operating systems in different partitions of the computer system and for allowing the different partitions to communicate with one another through shared memory |
US6622155B1 (en) * | 1998-11-24 | 2003-09-16 | Sun Microsystems, Inc. | Distributed monitor concurrency control |
JP3557947B2 (ja) | 1999-05-24 | 2004-08-25 | 日本電気株式会社 | 複数のプロセッサで同時にスレッドの実行を開始させる方法及びその装置並びにコンピュータ可読記録媒体 |
JP2002163239A (ja) * | 2000-11-22 | 2002-06-07 | Toshiba Corp | マルチプロセッサシステムおよびその制御方法 |
JP3892829B2 (ja) * | 2003-06-27 | 2007-03-14 | 株式会社東芝 | 情報処理システムおよびメモリ管理方法 |
US7380039B2 (en) * | 2003-12-30 | 2008-05-27 | 3Tera, Inc. | Apparatus, method and system for aggregrating computing resources |
JP4246745B2 (ja) | 2006-03-06 | 2009-04-02 | イー・アイ・デュポン・ドウ・ヌムール・アンド・カンパニー | ブラシ用モノフィラメント及びブラシ用モノフィラメントの製造方法 |
-
2003
- 2003-06-27 JP JP2003185416A patent/JP3892829B2/ja not_active Expired - Fee Related
-
2004
- 2004-02-26 KR KR1020040013136A patent/KR100608220B1/ko not_active IP Right Cessation
- 2004-02-27 CN CNB2004100073028A patent/CN100416540C/zh not_active Expired - Fee Related
- 2004-03-25 US US10/808,320 patent/US7356666B2/en not_active Expired - Fee Related
- 2004-03-26 EP EP04251822A patent/EP1492015A3/en not_active Withdrawn
-
2007
- 2007-05-22 US US11/751,728 patent/US7739457B2/en not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10143380A (ja) * | 1996-11-07 | 1998-05-29 | Hitachi Ltd | マルチプロセッサシステム |
CN1276890A (zh) * | 1997-10-23 | 2000-12-13 | 国际商业机器公司 | 在多线程处理器中改变线程优先级的方法和装置 |
EP1290560A2 (en) * | 2000-05-19 | 2003-03-12 | Neale Bremner Smith | Distributed processing multi-processor computer |
US20020199088A1 (en) * | 2001-06-22 | 2002-12-26 | Burns David W. | Method and apparatus for assigning thread priority in a processor or the like |
Also Published As
Publication number | Publication date |
---|---|
EP1492015A2 (en) | 2004-12-29 |
JP3892829B2 (ja) | 2007-03-14 |
KR20050000488A (ko) | 2005-01-05 |
KR100608220B1 (ko) | 2006-08-08 |
CN1577310A (zh) | 2005-02-09 |
US20070220230A1 (en) | 2007-09-20 |
US7356666B2 (en) | 2008-04-08 |
US7739457B2 (en) | 2010-06-15 |
EP1492015A3 (en) | 2007-08-15 |
JP2005018620A (ja) | 2005-01-20 |
US20040268083A1 (en) | 2004-12-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100416540C (zh) | 信息处理***和存储器管理方法 | |
CN100594487C (zh) | 调度方法和实时处理*** | |
US7418705B2 (en) | Method and system for performing real-time operation | |
US8087020B2 (en) | Method and system for performing real-time operation | |
EP1501013A2 (en) | Method and system for scheduling real-time periodic tasks | |
Kolovson et al. | Indexing techniques for historical databases | |
KR100628492B1 (ko) | 실시간 동작 수행방법 및 시스템 | |
US9098918B2 (en) | Graphics processor with non-blocking concurrent architecture | |
CN115904617A (zh) | 一种基于sr-iov技术的gpu虚拟化实现方法 | |
Odendahl et al. | Split-cost communication model for improved MPSoC application mapping | |
Latif et al. | Application development flow for on-chip distributed architectures | |
Zhou | Predictable GPGPU Computing in DNN-Driven Autonomous Systems | |
Kanellopoulos et al. | A novel user-to-user protocol for the establishment of multimedia associations adopting a comprehensive QoS approach |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20080903 Termination date: 20170227 |