CN1577281A - 调度方法和信息处理系统 - Google Patents

调度方法和信息处理系统 Download PDF

Info

Publication number
CN1577281A
CN1577281A CNA2004100073013A CN200410007301A CN1577281A CN 1577281 A CN1577281 A CN 1577281A CN A2004100073013 A CNA2004100073013 A CN A2004100073013A CN 200410007301 A CN200410007301 A CN 200410007301A CN 1577281 A CN1577281 A CN 1577281A
Authority
CN
China
Prior art keywords
thread
threads
execution
vpu
conjunction
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
Application number
CNA2004100073013A
Other languages
English (en)
Other versions
CN1287283C (zh
Inventor
金井达德
前田诚司
吉井谦一郎
矢野浩邦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Publication of CN1577281A publication Critical patent/CN1577281A/zh
Application granted granted Critical
Publication of CN1287283C publication Critical patent/CN1287283C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs

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)
  • Debugging And Monitoring (AREA)
  • Advance Control (AREA)

Abstract

本发明公开了一种调度方法,程序模块(100)包含记录与多个处理要素分别对应的步骤的多个程序(111~116)、构成记述信息(117)。构成记述信息(117)表示多个程序(111~116)间的输入输出关系和各程序(111~116)的执行所需的成本。在程序模块(100)的执行时,通过根据构成记述信息(117)决定执行多个程序(111~116)的多个线程各自的执行开始时刻和执行期间,执行把多个线程分别分配给1以上的处理器的调度处理。在程序的代码中不详细记述各种处理的时间制约条件,高效地调度用于实时处理的线程群。

Description

调度方法和信息处理系统
技术领域
本发明涉及调度用于执行实时处理的线程群的调度方法和信息处理系统。
背景技术
以往,在服务器那样的计算机系统中,为了谋求运算处理能力的提高而利用多处理器、并行处理器那样的系统结构。多处理器和并行处理器都是通过利用多个处理器部件来实现运算处理的并行化。
作为具有多个处理器部件的系统,例如,众所周知的是具有1个高速CPU、多个低速CPU以及共享存储器的系统(例如,参照专利文献1)。在该系统中,按照线程群的并行工作度的大小和处理时间的长短来进行处理程序的线程群对高速CPU以及多个低速CPU的分配。
另外,作为用于对多个处理器分配线程群的调度技术,众所周知的有使同一处理器执行属于同一进程内的线程的技术(例如参照专利文献2)。
但是,最近不仅计算机系统,例如在象实时地处理AV(音频和视频)数据那样的大容量数据的内部仪器中,也为了提高其运算处理能力而要求导入多处理器、并行处理器那样的系统结构。
专利文献1-特开平10-143380号公报
专利文献2-特开平8-180025号公报
但是,现实情况是几乎没有以多处理器、并行处理器那样的系统结构为前提的实时处理系统的报告。
在实时处理系统中,要求在某允许时间的限制内完成各种处理。因此,当生成用于执行实时处理的程序时,在程序的代码中必须详细记述各种处理的执行开始定时、结束定时等的时间上的制约条件,在编程作业中需要大量的劳动力和时间。而且,为了有效利用多个处理器部件,还需要在代码中包含指定处理器的记述。
发明内容
鉴于以上问题的存在,本发明目的在于:提供即使在程序的代码中没有详细地记述各种处理时间上的制约条件,也能高效地调度用于执行实时处理的线程群的调度方法和信息处理系统。
为了解决上述的课题,本发明的调度方法,调度用于执行由多个处理要素的组合构成的实时处理的线程群,其特征在于:包括:输入记述了与所述多个处理要素分别对应的步骤的多个程序、表示所述多个程序之间的输入输出关系以及执行所述各程序所需要的成本的构成记述信息的步骤;通过根据所述构成记述信息决定执行所述多个程序的多个线程各自的执行开始定时和执行期间,来执行分别将所述多个线程分配给一个以上处理器的调度处理的步骤。
根据该调度方法,根据构成记述信息,决定执行多个程序的多个线程各自的执行开始定时和执行时间。因此,在程序的代码中即使不记述各自的处理时间的制约条件,也能高效地调度用于执行实时处理的线程群。
附图说明
下面简要说明附图。
图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是表示在同一实施例的实时处理系统中执行的局部存储器和存储器之间的映射变更处理步骤的程序框图。
图46是表示同一实施例的实时处理系统中的线程状态转变的图。
图47是用于说明同一实施例的实时处理系统中的线程和执行期间的关系的图。
图48是表示同一实施例的实时处理系统中的密结合线程群在某有效期间中同时执行的状态的图。
图49是表示同一实施例的实时处理系统的周期执行模型的图。
图50是表示同一实施例的实时处理系统的非周期执行模型的图。
图51是用于说明任务图表的图。
图52是用于说明同一实施例的实时处理系统中使用的预约图表的原理的图。
图53是用于说明同一实施例的实时处理系统中使用的预约图表的例子的图。
图54是用于说明同一实施例的实时处理系统中使用的阶层型调度器的图。
图55是说明同一实施例的实时处理系统为了硬实时处理类而使用的参数的例子的图。
图56是说明同一实施例的实时处理系统中使用的绝对定时制约的图。
图57是说明同一实施例的实时处理系统中使用的相对定时制约的图。
图58是说明同一实施例的实时处理系统中使用的互斥制约的图。
图59用于说明同一实施例的实时处理系统中的同步机构的图。
图60是表示同一实施例的实时处理系统中分开使用同步机构的步骤的程序框图。
图61是表示同一实施例的实时处理系统中使用的预约图表的例子的图。
图62是表示同一实施例的实时处理系统中生成的预约请求的例子的图。
图63是表示同一实施例的实时处理系统根据图62的预约请求执行的调度的例子的图。
图64是用于说明由同一实施例的实时处理系统执行的软件流水线形式的调度的第一图。
图65是用于说明由同一实施例的实时处理系统执行的软件流水线形式的调度的第二图。
图66是用于说明在同一实施例的实时处理系统中执行的考虑缓存量的调度的第一图。
图67是用于说明在同一实施例的实时处理系统中执行的考虑缓存量的调度的第二图。
图68是用于说明在同一实施例的实时处理系统中执行的考虑缓存量的调度的第三图。
图69是表示在同一实施例的实时处理系统中执行的考虑缓存量的调度处理的步骤的程序框图。
图70是表示同一实施例的实时处理系统中使用的具有阶层构造的预约图表的例子的图。
图71是表示由同一实施例的实时处理系统生成的考虑密结合线程组的预约请求的例子的图。
图72是表示同一实施例的实时处理系统根据图71的预约请求进行的调度的例子的图。
图73是表示同一实施例的实时处理系统中使用的预约请求的例子的图。
图74是表示同一实施例的实时处理系统中的执行期间预约处理的步骤的程序框图。
下面,简要说明附图符号。
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:Operating System)主要由MPU11执行。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;Efiective 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所示,准备把各硬件的动作作为软件而实现的程序模块100。该程序模块100是使计算机系统执行与图6的DEMUX电路101、A-DEC电路102、V-DEC电路103、TEXT电路104、PROG电路105、BLEND电路106对应的处理的应用程序,使用多线程编程记述。该程序模块100由分别作为线程执行的多个程序(多个例行程序群)构成。即在程序模块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进行调度。即在调度处理中,根据构成记述117决定执行多个程序111~116的多个线程的执行开始定时和执行期间,多个线程分别分配给1以上的VPU12。在程序模块100的执行时进行以下处理。
1.VPU执行环境401从存储它的外部存储装置或存储器13输入程序模块100,读入构成记述117。
2.VPU执行环境401通过根据构成记述117,决定用于执行程序模块100内的多个程序111~116的多个线程(DEMUX、V-DEC、A-DEC、TEXT、PROG、BLEND)的各自的执行开始定时和执行期间,把多个线程(DEMUX、V-DEC、A-DEC、TEXT、PROG、BLEND)分配给1以上的VPU来执行。
这样,在本实施例的实时处理系统中,根据程序模块100中包含的构成记述117,决定执行多个程序111~116的多个线程(DEMUX、V-DEC、A-DEC、TEXT、PROG、BLEND)各自的执行开始定时和执行期间,所以即使不在程序的代码中详细记述各种处理的时间制约条件,也能高效地调度用于执行实时处理的线程群。
图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的方式(图18)。
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),或需要等待(latency)(延迟)小的相互作用时。而疏结合线程组与密结合线程组相比,是不需要属于该组的线程间的紧密的联合的线程组,线程群通过存储器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。在地址空间第一模式(地址空间第一模式)中,已经存在的线程新生成地址空间,或指定已经存在的地址空间,在该地址空间中配置新线程执行的程序。然后,使新线程开始该程序的执行。线程第一模式(线程第一模式)的优点在于:只用局部存储器工作,所以能减小线程的生成、分配和结束处理等成本。
(线程群的调度)
下面,参照图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线程的局部存储器。例如,更轻量、高速的同步机构向局部存储器上分配安装同步变量。因此,其他VPU12或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。
(线程的状态转移)
一般,线程从生成到消失进行图46所示的状态转移。在图46的例子中,在以下的7种状态间转移。
1.NOT EXISTENT状态
是逻辑状态,在有效的线程中没有该状态。
2.DORMANT状态
虽然生成线程,但是还未开始执行。
3.READY状态
线程完成开始其执行的准备的状态。
4.WAITING状态
线程等待用于开始(重新开始)执行的条件被满足的状态。
5.RUNNING状态
线程实际在VPU或MPU上执行的状态。
6.SUSPENDED状态
通过VPU执行环境或其他线程,强制使线程中断其执行的状态。
7.WAITING-SUSPENDED状态
WAITING状态和SUSPENDED状态重叠的状态
这7个状态间的转移条件、伴随着该转移的线程上下文的处理如下所述。
<从NOT EXISTENT状态向DORMANT状态的转移>
·通过线程的生成而转移。
·生成线程上下文。但是,上下文的内容是初始状态。
<从DORMANT状态向NOT EXISTENT状态的转移>
通过线程的删除而转移。
设定线程以保存该线程上下文时,通过转移而放弃所保存的上下文。
<从DORMANT状态向WAITING状态的转移>
·如果线程对执行环境要求线程的调度,则线程的状态从DORMANT状态向WAITING状态转移。
<从WAITING状态向READY状态的转移>
·当等待线程发生的事件(例如,同步或通信、定时器)发生时,线程的状态从WAITING状态向READY状态转移。
<从READY状态向RUNNING状态的转移>
·如果线程由执行环境分配给MPU或VPU,则线程的状态从READY状态向RUNNING状态转移。
·加载线程上下文。另外,当线程上下文退避时,复原。
<从RUNNING状态向READY状态的转移>
·如果线程被夺取线程的执行,则线程的状态从RUNNING状态向READY状态转移。
<从RUNNING状态向WAITING状态的转移>
·线程利用同步或通信等机构,为了等待事件而中断自身的执行时,线程的状态从RUNNING状态向WAITING状态转移。
·全部类的线程能设定为保存线程上下文。线程设定为保存线程上下文时,当从RUNNING状态向WAITING状态转移时,通过执行环境,线程的线程上下文退避。只要不转移到DORMANT状态,就保持该线程上下文,在线程下次转变为RUNNING状态时复原。
<从RUNNING状态向SUSPENDED状态的转移>
·当线程由来自执行环境或其他线程的指示,强制中断其执行时,线程的状态从RUNNING状态向SUSPENDED状态转移。
·全部类的线程能设定为保存线程上下文。当线程设定为保存线程上下文时,当从RUNNING状态向SUSPENDED状态转移时,通过执行环境,线程上下文退避。只要不转移到DORMANT状态,该线程上下文就在线程下次转变为RUNNING状态时复原。
<从RUNNING状态向DORMANT状态的转移>
·当线程由线程自身结束其执行时,从RUNNING状态向DORMANT状态转移。
·当线程设定为保存线程上下文时,通过该转移,上下文的内容被删除。
<从WAITING状态向WAITING-SUSPENDED状态的转移>
·当线程在WAITING状态下正在等待事件等的发生时,被强制中断线程的执行时,线程的状态从WAITING状态向WAITING-SUSPENDED状态转移。
<从WAITING-SUSPENDED状态向WAITING状态的转移>
·当线程处于WAITING-SUSPENDED状态时,从外部重新开始线程的执行时,线程的状态从WAITING-SUSPENDED状态向WAITING状态转移。
<从WAITING-SUSPENDED状态向SUSPENDED状态的转移>
·线程当线程处于WAITING状态时等待的事件发生时,线程的状态从WAITING-SUSPENDED状态向SUSPENDED状态转移。
<从SUSPENDED状态向READY状态的转移>
·当线程从外部重新开始线程的执行时,线程的状态从SUSPENDED状态向READY状态转移。
<从READY状态向SUSPENDED状态的转移>
·线程当由外部环境中断线程的执行时,线程的状态从READY状态向SUSPENDED状态转移。
(线程的执行期间)
把对线程实际分配VPU,执行处理的RUNNING状态的期间成为执行期间(execution term)。一般,从线程生成到消失之间,线程具有多个执行期间。图47表示从某线程的生成到消失的沿着时间轴的状态变化的例子,但是在该例子中,在生存周期中,表示2次的执行期间。使用各种方法能实现执行期间和执行期间之间的上下文的保存(save)和复原(restore)。例如,很多通常的线程保存执行期间结束的时刻的上下文,在接着的执行期间的开始,复原该上下文。而在某种周期的(periodic)的处理中,在全部的周期(period)中,在执行期间的开始时,生成新的上下文,在执行期间中,使用该上下文推进执行,在执行期间的结束时,删除该上下文。
(属于密结合线程组的线程的执行期间)
属于密结合线程组的线程的执行期间例如如图48所示。即属于密结合线程组的全部线程由VPU执行环境401调度,在某一个执行期间中同时执行全部线程。这样的密结合线程组主要对硬实时线程使用。因此,为了实现其动作,VPU执行环境401当预约硬实时类的执行期间时,指定同时使用的处理器和它的数量。VPU执行环境401对预约的各种处理器,使同时执行的的线程的上下文一对一对应。
须指出的是,在某期间中属于密结合线程组的多个线程在其他执行期间中解除密结合的关系,各线程能分别工作。此时,各线程需要意识到现在作为密结合线程工作,或者分别工作,进行与对方线程的通信或同步等处理。对各线程付与和表示的优先权关联的属性。所谓Preemptive是在线程的执行期间中允许优先于该线程即停止执行的属性。所谓Non-preemptive是在线程的执行期间中,保障该线程不被夺取的属性。该不能夺取(non-preemptive)属性的意义在线程的种类之间不同。在硬实时类中,意味着如果线程开始执行,则在执行期间结束前,除了该线程自身以外,谁也不能停止其执行。在软实时类中,对该种类,能夺取(preemptive-ness)是必不可少的,所以不支持不能夺取的属性。在最佳成果类中,线程的执行受到保护,不被其他最佳成果类夺取,但是会被硬实时类或软实时类等更高水平所夺取。
(线程的执行模型)
线程的执行模型大致能分为如图49所示的周期执行模型和图50所示的非周期执行模型等2类。在周期执行模型中,周期地(periodically)执行线程。而在非周期执行模型中,以事件为起点,进行该执行。对周期执行模型的安装模式中存在使用软件中断的方式和使用同步机构(synchronization primitives)的事件对象的方式。在硬实时类中,使用软件中断安装。即VPU执行环境401在开始周期处理的定时,跳到以给定方法决定的线程的记录点,或者调用事先以给定步骤登记的回叫函数。在软实时类中,使用事件对象安装。即在各周期中,对预先登记的事件对象,VPU执行环境401通知事件,所以通过构成程序,使软实时线程在各周期等待该事件对象,如果事件发生,就执行给定处理,实现周期执行模型。当最佳成果类时,无论使用应用软件中断的方式,还是使用应用事件中断的方式,都能安装周期执行模型。须指出的是,实际的执行并不局限于总在各周期的开头开始,在制约条件(constrains)的范围内,有时也按照状态延迟。
非周期执行模型如果使用事件模型,就与周期执行模型能同样实现。即在软实时和最佳成果类中,非周期执行模型只是通知事件的定时不同,安装收发上与周期执行模型相同。当硬实时类时,为了确保时间要求所需要的最小发生期间(minium inter-arrival time)或最终期限强制制约系统的动作,所以限制非周期执行。
(上下文的切换)
在本实施例的实时处理系统中,伴随着VPU线程的执行期间结束的上下文切换能从多个方式选择。因为VPU的上下文切换的成本非常大,所以通过能选择其方式,能提高上下文切换的效率。指定的上下文切换方式在线程的预约执行期间结束时使用。执行期间中的切换即所谓的先占时,需要在任何时候都保存现在的线程的全部上下文,在下次重新开始执行时复原。在由本实施例的实时处理系统提供的VPU上下文切换的方式中,例如有以下的方式。
1.上下文的删除
不保存任何上下文。
2.完全的上下文的保存。
保存包含VPU的寄存器、局部存储器以及存储器控制器内的DMA控制器的状态的VPU的完全上下文。
3.Graceful上下文的保存
延迟上下文切换,直到VPU的存储器控制器内的DMA控制器在执行中的全部动作结束。然后,保存VPU的寄存器、局部存储器的内容。在该方式下,与完全的上下文保存同样,保存VPU的上下文的全部。
进行线程的调度的调度器能作为调度MPU线程和VPU线程双方的一个调度器而安装,也能分别安装MPU线程用的调度器和VPU线程用的调度器。因为在MPU和VPU中,上下文切换的成本不同,所以安装分别适合于各自的调度器时效率更高。
(硬实时类的调度)
使用扩展任务图表的预约图表进行硬实时类的线程群的调度。图51是任务图表的例子。任务图表表示任务间的关系。任务间的肩头表示任务间的依存关系(输入输出关系)。在图51的例子中,任务1和任务2表示能自由开始执行。而任务3表示在任务1和任务2双方的执行结束后,能开始执行。另外,任务4和任务5表示在任务3的执行结束后,能开始执行。在任务图表中没有上下文的概念。例如,当想使用相同的上下文执行任务1和任务4时,无法记述它。因此,在本实施例的实时处理系统中,如下所述,使用扩展任务图表的预约图表。
首先,任务图表不是表示任务,而是表示执行期间的关系。而且,表示通过使上下文与各执行期间关联,在该执行期间中执行与该上下文对应的线程。表示如果使相同的上下文与多个执行期间关联,则在全部的执行期间中,执行该线程。例如,在图52中,表示线程1的上下文与执行期间1和2关联,线程1在执行期间1和2的期间中执行。在图表中使用的执行期间之间的箭头上附加表示由执行环境保证的硬实时的制约条件的属性。使用这样生成的预约图表,完全不修正实时系统应用程序的模型,能记述处理模型和处理具有的事件要求等制约条件。图53表示根据图52生成的预约图表的例子。在图53中,上下文1、2、3分别表示图52的线程1、2、3的上下文。
(软实时类的调度)
因为能预测线程的执行行台,所以使用固定优先级的调度执行软实时类的调度。作为该调度方式,准备固定优先级FIFO调度和固定优先级循环调度等2种调度算法。因为使优先级高的线程的执行优先,所以即使低优先级的线程是在执行中,当更高优先级的线程变为能执行时,抢占低优先级的线程的执行,立刻开始高优先级的线程的执行。为了避免关键部分(critical section)的执行时发生的优先级逆转问题,所以希望与优先级继承协议、优先级极限协议等同步机构一起实施。
(最佳成果类的调度)
最佳成果类的调度例如使用动态优先级调度。
(阶层型调度器)
VPU执行环境401内的调度功能可作为图54所示的阶层型调度器实施。即线程水平的调度由线程类间(inter-class)调度、线程内(intra-class)调度等2个阶层构成。因此,VPU执行环境401内的调度器具有线程类内(intra-class)调度部601、线程类间(inter-class)调度部602。在线程类间的调度中,进行跨线程间的调度。在线程类内调度中,对各调度类进行属于该调度类的线程的调度。在线程类内调度部601设置硬实时(硬RT)类调度部611、软实时(软RT)调度部612、最佳成果调度部613。
线程类间调度和线程类内调度采用阶层构造,首先线程类间调度工作,决定执行哪个线程类后,根据该线程类内调度调度,决定执行该线程类内的哪个线程。线程类间调度使用能占先的固定优先级调度。此时,硬实时类具有最高优先级,按照软实时类、最佳成果类的顺序,优先级降低。如果更高优先级的类的线程变为可执行(ready),则低优先级类的线程的执行被取代。线程类间的同步通过由VPU执行环境401提供的同步机构实现。此时,对硬实时类线程只能使用无阻断的机构,从而不发生硬实时类线程的阻断。另外,当最佳成果类线程阻断软实时类线程时,通过把该最佳成果类线程作为软实时类线程处理,防止线程类间的优先级逆转的发生。该最佳成果类线程由其他软实时类线程阻断时,使用优先级继承协议等方式,从而不被阻断。
(线程参数)
在本实施例的实时处理系统中,使用各种参数,进行调度。各类的线程中,存在以下的公共参数。
·线程的类(硬实时、软实时、最佳成果)
·使用的资源(MPU或VPU的数、带宽、物理存储器尺寸、输入输出设备)
·优先级
·能夺取(preemptive)或不能夺取(non-preemptive)
有关硬实时类的线程,还存在以下参数。
·执行期间
·最终期限
·周期或最小发生期间(minimum inter-arrival time)
·VPU的上下文切换方式
图55表示硬实时类的基本参数的例子。在图57的最上方的例1的执行期间的预约指定的例子中,在指定的执行期间中,同时预约1个MPU、2个VPU,指定完全保存VPU的上下文。此时,在3个处理器上同时执行线程,在执行期间结束后,除了MPU线程,还完全保存VPU线程的上下文。在位于右上的例2中,表示保障由VPU数和其执行期间表现的处理在最终期限之前执行时的最终期限的执行方法。最终期限由从进行预约要求的时刻(request time)开始的相对时刻指定。在位于最下方的例3中,执行周期执行。在本例子中,表示指定2个VPU12的执行期间被周期执行,另外在各周期的执行后,抛弃VPU线程的上下文,全部处理由新的上下文处理。使用从周期的开头开始的相对时刻指定最终期限。
作为硬实时类中使用的其他参数,例如有以下所示的制约条件。
·定时制约(绝对定时制约、相对定时制约)
·先行制约
·互斥制约
定时制约提供使执行定时延迟的方法。绝对定时制约如图56所示,是以周期的开始时刻那样的某静态定时为基准,指定延迟时间的制约条件。相对定时制约如图57所示,例如以其他执行期间的开始时刻或结束时刻那样的动态定时或事件为基准,指定能允许的延迟时间的制约条件。先行制约能通过使用相对定时制约,以其他执行期间的结束时间为基准,把延迟时间指定为0以上而实现,所以能认为先行制约是相对定时制约的特殊情况。
互斥制约(mutual exclusive)如图58所示,是保障各执行期间在时间上不重叠的制约。通过使用互斥制约,能削减由于锁定而产生的线程执行期间的不可预测性。即不同时执行共享某资源的全部线程,能消除有关该资源的锁定。
(线程的同步机构)
在本实施例的实时处理系统中,作为线程的同步机构,例如使用以下的方法。
·信号机
·信息排队
·信息缓存器
·事件标志
·屏障
·互斥
其他同步机构也能与它们同样使用。作为实现这样的同步机构的方法,在本发明的实时处理系统中,存在以下三种方式。
在存储器(主存储)13或VPU的局部存储器32上,使用例如TEST&SET那样的命令实现。
·使用邮箱或信号寄存器等硬件急骤实现。
·利用VPU执行环境作为服务而提供的机构。
这些实现方法不同的同步机构分别具有得失,所以根据利用它的线程的属性等,例如按图59那样分开使用。即使用MPU或VPU能共享访问的存储器13(主存储MS)而安装的同步机构能在全部类的线程中使用。而安装在VPU12的局部存储器LS上的同步机构只能由属于密结合线程组(tightly coupled thread group)的线程使用。这是因为只有属于密结合线程组的线程保障同步对方的线程同时工作。例如,当使用安装在对方的线程工作的VPU的局部存储器上的同步机构时,如果是密结合线程组的线程,则在使用同步机构的时刻,保障对方的线程正在工作,所以在执行该对方线程的VPU的局部存储器中一定存在用于同步机构的信息。
作为使用存储器(主存储MS)或存储器控制器LS以外的部件安装的同步机构,存在使用硬件机构安装的情况和使用VPU执行环境401的服务的情况。属于密结合线程组的线程或硬实时类的线程需要快速的同步机构,所以希望应用使用硬件机构安装的同步机构。而属于疏结合线程组的线程或软实时类和最佳成果类的线程希望利用执行环境提供的机构。
(同步机构的自动选择)
在本实施例的实时处理系统中,能配合线程的属性或状态自动选择和切换所述同步机构。根据图60所示的步骤,想进行同步处理的线程属于密结合线程组的状态时(步骤S201的YES),应用使用存储器14或VPU12的局部存储器32或硬件机构安装的同步机构,(步骤S202、S203、S204、S205),但是线程的状态变化,变为不是密结合关系的状态时(步骤S201的NO),切换同步机构,以便使用安装在存储器14上的同步机构或作为VPU执行环境401的服务而提供的同步机构(步骤S206、S207、S208)。
该切换部件对在VPU12上工作的程序能以库的形式提供,也能作为VPU12一侧的VPU执行环境502提供的服务提供。作为切换多个同步机构的方式,预先确保多个同步机构,分开使用它,在进行切换的时刻,能新确保同步机构。
使用VPU12的局部存储器的同步机构象属于密结合线程组的线程那样,需要在进行同步处理的时刻,安装同步机构的VPU12的局部存储器必须变为有效。作为缓和这样的限制的方式,当线程不在执行中(RUNNING状态)时,把最后执行该线程时的局部存储器的内容保存在存储器中,从指向与该线程关联的局部存储器的页表或段表的记录控制映射,使其指向保存的存储器区域。通过该方式,即使对方的线程不在执行中,也如同存在与对方的线程关联的局部存储器那样,能继续线程的执行。不在执行中的线程被分配VPU12,开始执行时,把存储器14中保存的内容再次返回局部存储器,变更对应的页表或段表的映射。这样,通过安装同步机构,使它对VPU12的局部存储器的备份拷贝也能工作,即使不是属于密结合线程组的线程,也能利用使用VPU12的局部存储器安装的同步机构。
(预约图表)
图61表示与在图9中作为例子表示的处理流对应的预约图表。在图61中,6个四边形表示执行期间(execution term)。各执行期间的四角中的左上方编号是预约的执行期间的ID,执行期间的四角中的记号是与该执行期间关联的线程上下文的标识符。执行期间的四角的下方的数值表示该执行期间的长度(成本)。连接执行期间的四角间的箭头表示先行制约。即表示箭头进入的执行期间一定在箭头出来的执行期间结束后开始执行。另外,箭头上的编号表示在由该箭头连接的执行期间之间交换数据时使用的缓存器的ID,与编号一起的数值表示缓存器的尺寸。根据图61所示的预约图表,用于执行处理的步骤变为如下。
1.生成执行DEMUX程序111的线程上下文,使它的标识符为DEMUX。
2.生成执行A-DEC程序112的线程上下文,使它的标识符为A-DEC。
3.生成执行V-DEC程序113的线程上下文,使它的标识符为V-DEC。
4.生成执行TEXT程序114的线程上下文,使它的标识符为TEXT。
5.生成执行PROG程序115的线程上下文,使它的标识符为PROG。
6.生成执行BLEND程序116的线程上下文,使它的标识符为BLEND。
7.生成图62所示的数据构造的预约要求,传递给VPU执行环境401,进行预约。
在此,从步骤1~6的线程上下文的生成如果指定想执行的程序作为线程,委托给VPU执行环境401,则VPU执行环境401分配必要的资源,生成线程上下文,返回其句柄,把它与标识符关联。
图62的预约图表由表示为BUFFER的缓存器数据、表示为TASK的执行期间数据构成。缓存器数据声明在执行期间中为了交换数据而使用的存储器14上的缓存器,在Id中具有缓存器编号,在Size中具有缓存器尺寸,在SrcTask中具有写入数据的执行期间的编号,在DstTask中具有读出数据的执行期间的编号。执行期间数据在Id中表示执行期间编号,在Class中:具有线程类(VPU表示是VPU线程,HRT表示是硬实时类。另外还有表示MPU线程的MPU、表示软实时类的SRT、表示最佳成果类的BST等),在ThreadContext中具有与该执行期间关联的线程上下文,在Cost中:具有执行期间的长度或成本,在Constraint中:具有以该执行期间为基准的各种制约,在Input Buffer中:具有在该执行期间中读出的缓存器的标识符的列表,在Output Buffer中:具有在该执行期间中写入的缓存器的标识符的列表。在Constraint中:具有表示先行制约的Precedence、表示绝对定时制约的AbsoluteTiming、表示相对定时制约的RelativeTiming、表示互斥制约的Exclusive等,分别具有成为制约的对方的执行期间编号的列表。
用图62的预约要求预约的缓存器区域在VPU执行环境401对缓存器写入数据的线程的执行开始时分配,在读出数据的线程的执行结束时释放。分配的缓存器的地址使用在线程的起动时预先决定的地址或变量或寄存器等,能对线程通知。在本实施例的实时处理系统中,当提供图7所示的程序模块100时,读入位于其中的图8所示的构成记述117,根据它,用所述步骤进行线程的生成和图62的预约要求的生成、发出,提供进行该程序模块100的执行的功能。根据该功能,通过基于多个处理器的软件处理,能实现由图7的程序模块100记述的专用软件的处理。对想实现的各软件,生成具有图7的构造的程序模块,通过用组入基于本实施例的实时处理系统的功能的仪器执行它,能使该仪器作为所希望的硬件工作。
如果被提供图62所示的预约要求,则VPU执行环境401决定在周期内的哪个定时用哪个VPU12执行各执行期间。这是调度。根据组入本实施例的实时处理系统的电子仪器的种类,实际上这样的预约要求有时能同时提供多个,所以为了它们不矛盾(不会不满足提供的制约)而决定处理的定时。例如,如图63所示,当存在2个VPU12时,如果只有图62的预约要求,则进行调度,用VPU0依次执行DEMUX、V-DEC、PROG、BLEND的无法并行执行的处理,用VPU1执行在DEMUX的执行后能并行工作的A-DEC和TEXT。
(软件流水线)
在此,当没有尽可能依次执行DEMUX、V-DEC、PROG、BLEND的时间时,跨多个周期进行软件流水线化。例如如图64所示,在最初的周期1中,用VPU0进行DEMUX和V-DEC,在接着的周期2中用VPU1进行A-DEC、TEXT、PROG、BLEND的处理。在周期2中,与A-DEC、TEXT、PROG、BLEND的处理并行,由VPU0执行下一帧的DEMUX和V-DEC。即如图65所示,按照在VPU0执行DEMUX和V-DEC时,在VPU1中,接收以前的周期的DEMUX和V-DEC的输出的A-DEC、TEXT、PROG、BLEND工作的方法,进行流水线处理。用于实现软件流水线的调度处理的步骤如下所述。
1.VPU执行环境401把程序模块100从存储它的外部存储装置或存储器13输入,读入构成记述117。
2.VPU执行环境401根据构成记述117把用于执行程序模块100内的多个程序111~116的多个线程(DEMUX、V-DEC、A-DEC、TEXT、PROG、BLEND)分割为第一线程组(例如DEMUX、V-DEC)和在它后续执行的第二线程组(例如A-DEC、TEXT、PROG、BLEND)。
3.VPU执行环境401把第一线程组(DEMUX、V-DEC)和第二线程组(A-DEC、TEXT、PROG、BLEND)分别分配给VPU0、1,从而由2个VPU0、1流水线处理第一线程组(DEMUX、V-DEC)和第二线程组(A-DEC、TEXT、PROG、BLEND)。
(考虑缓存量的调度)
当在某执行期间中执行的线程和在其他执行期间中执行的线程之间使用缓存器发送数据时,从写入数据的一侧的执行期间的开始到读出数据的一侧的执行期间的最后专门占有该缓存器。例如,如图66所示,当在执行期间A和执行期间B之间使用缓存器发送数据时,如图66所示,从执行期间A的开始到执行期间B的最后的期间,占用存储器14(主存储)上的缓存器。因此,当从执行期间A到执行期间B使用缓存器发送数据时,在软件流水线化时,以相邻的不同周期进行执行期间A和B时,根据执行期间A和B的执行定时,改变必要的缓存器的量。例如如图67所示,当调度为在各周期内,比执行期间A比B早执行时,来自执行期间An(An表示周期n的A)的数据传给下一周期的执行期间Bn,来自执行期间An+1的数据传给下一周期的执行期间Bn+1。此时,执行期间An+1夹在An和Bn之间,所以不使用An为了向Bn传递输据而使用的缓存器,使用新的缓存器。即双缓存器成为必要。而如图68所示,如果在周期内,执行期间A在B的结束后开始,则Bn读出执行期间An写入数据的缓存器后,循环使用相同的缓存器,An+1写入数据,Bn+1读出,用一个缓存器就可以了。
在本实施例的实时处理系统中,VPU执行环境401的调度器调度预约的执行期间,尽可能减少缓存器区域的使用量。即当进行软件流水线时,如图69的程序框图所示,VPU执行环境401的调度器为了执行基于VPU0、1的2个VPU软件流水线,把一系列的处理分割为2部分处理(由VPU0先行执行的部分处理和接着该部分处理而由VPU1执行的部分处理)(步骤S211)。然后,VPU执行环境401的调度器抽出在2部分处理间通过缓存器进行输入输出的线程(例如,先行执行的部分处理内的线程A、后续执行的部分处理内的线程B)(步骤S212),调度线程A、B,使在各周期中,先行执行的部分处理内的线程A在后续的部分处理内的线程B的执行期间结束后开始(步骤S213)。
(具有阶层构造的预约标志)
图61所示的预约标志不具有阶层构造,但是如图70所示,也能处理具有阶层构造的预约标志。在图70的例子中,执行期间A先行于B,B先行于C。B之中,D先行于E和F。因此,如果解除阶层,则A先行于D,E和F先行于C。
(考虑密结合线程组的预约要求)
例如在图61所示的预约标志中,执行V-DEC的线程和执行PROG的线程属于密结合线程组时,象图71那样生成表示该结合属性的预约要求。在图71的例子中,在TightlyCoupled中记述与对方线程对应的执行期间的ID。据此,按图72所示进行调度,执行V-DEC的线程和执行PROG的线程通过不同的VPU同时执行。此时,执行V-DEC的线程和执行PROG的线程之间的通信通过局部存储器进行,所以没必要在存储器14上准备缓存器。
(基于构成记述的调度算法)
下面,说明根据组入程序模块中的构成记述,预约各线程的执行期间的处理步骤。
图7的程序模块100内的构成记述117变为图8的例子那样。如果被提供该构成记述117,则VPU执行环境401执行以下的步骤。
1.加载写在构成记述117的模块栏目中的各程序,生成执行它的线程。此时,在本实施例中,对构成记述117的各记录生成一个线程。在构成记述117中,存在具有相同模块名的多个记录时,与各记录对应生成执行相同模块的多个线程。须指出的是,在图8的例子中,生成的全部线程处于一个进程,但是也能实施为各线程属于不同的进程,或某组的线程属于某进程,其他组的线程属于其他进程。
2.从构成记述117的信息生成在图62中说明的预约要求的数据构造。
3.把预约要求传给VPU执行环境,进行处理的调度,开始执行。
生成第二个预约要求的步骤按如下进行。
首先,在构成记述117的输出栏目中,1对1对应,生成BUFFER记录,加到预约要求中。例如,在图8的构成记述117的例子中,DEMUX模块的第二个输出使用1MB的缓存器,把数据传给V-DEC,所以为了与此对应,生成图62的Id为2的BUFFER记录。在Id为2的BUFFER记录中,在Size栏目中把该缓存器尺寸记录为1MB,把对与向缓存器写入数据的DEMUX模块对应的任务Id为1的TASK记录的参照记录到SrcTask栏目中,把对与读出缓存器数据的V-DEC对应的任务Id为3的TASK记录的参照记录到DstTask栏目中。
接着,在构成记述117中,1对1对应,生成TASK记录,加到预约要求中。例如在图8的构成记述117的例子中,作为与V-DEC某块对应的TASK记录,生成图62的Id为3的TASK记录。在Id为3的TASK记录中记录以下的信息。
Class栏目:表示用怎样的属性执行该TASK记录中指定的线程的标志。VPU表示是在VPU上执行的线程,HRT表示是硬实时类的线程。在图8的例子中,根据记述在构成记述117的线程参数中的信息,设定这些信息。
ThreadContext栏目:指定想用该TASK记录进行执行的预约的线程的线程上下文。具体而言,加载图8的构成记述117的模块栏目中指定的程序模块,通过VPU执行环境401生成执行它的线程,把线程的线程上下文的标识符(或指针)记录在ThreadContext栏目中。
Constrain栏目:记录有关该TASK记录的制约条件。当为先行制约时,在Precede之后,按必要的数指定该TASK先行的其他TASK的Id。当Id为3的TASK记录时,表示先行于Id为5的与PROG模块对应的TASK。
InputBuffer栏目:按必要的数指定由该TASK记录指定的线程读出数据的缓存器的Buffer记录的Id。
OutputBuffer栏目:按必要的数指定由该TASK记录指定的线程写入数据的缓存器的Buffer记录的Id。
如果这样提供构造记述,就生成与它对应的预约要求。
接着,如果把该预约要求传给VPU执行环境401内的调度器,调度器生成执行指定的预约要求所需要的时间表。作为该调度处理的结果而生成的时间表表示图63所示的在各周期的哪个定时,把哪个VPU分配给哪个线程多长时间。实际上能实施为由图73的预约要求表现。
图73的预约要求由与各VPU关联的预约记录构成。在预约记录中,在开始时间栏目中记录对一个线程,在各周期内的哪个定时分配VPU,开始执行;在执行期间栏目中记录在多长的时间中征用VPU;在执行线程栏目中记录该线程的标识符。这些预约记录按照执行的VPU,按开始时间的顺序排序,与预约列表关联。
从图62或图71所示的预约要求生成图73所示的预约列表的步骤能用图74的程序框图所示的步骤实施。
基本上,考虑使用BUFFER的输入输出关系,把预约要求中的各TASK记录排序,按数据的流动顺序分配VPU的执行时间。此时,对密结合线程组中指定的TASK群,需要对各TASK的线程同时分配VPU。
图74表示该步骤。如果提供预约要求,则对由其中的TASK记录指定的全部任务的集合,用以下的步骤进行调度(换言之,时间表的分配、或预约列表的生成)。
步骤S301:选择全部输入任务为分配完毕的任务,没有密结合指定的任务。即在未分配的任务(还未生成预约记录,未与预约列表关联的任务)中,成为该任务的输入的成为数据源的任务全部为分配完毕(预约记录进入预约列表),或该任务不具有数据的输入时,并且如果该任务是未指定密结合的,就选择它,到步骤S302,如果不是,就到步骤S304。
步骤S302:如果存在能预约选择的任务的VPU(换言之,如果存在能预约满足与其它任务间的制约的VPU),就到步骤S303,如果不是,因为不能调度,所以通知失败。
步骤S303:生成选择的任务的预约请求,与预约列表关联。
步骤S404:选择全部输入任务为分配完毕的任务,具有密结合关系的任务群。即如果在未分配的任务(还未生成预约记录,未与预约列表关联的任务)中,成为该任务的输入的成为数据源的任务全部为分配完毕(预约记录进入预约列表),或该任务是不具有数据输入的集合,并且属于该集合的任务间指定了密结合,就选择任务集合(称作任务群),到步骤S305,如果不是,就分配全部任务,所以结束调度处理。
步骤S305:如果存在能同时(在相同开始时可具有相同的执行期间)预约选择的任务集合中包含的全部任务的多个VPU,就到步骤S306,如果不是,就不能预约,所以通知失败。
步骤S306:生成选择的任务集合的全部任务的预约记录,与预约列表关联。
在此的说明描述了一个预约要求的调度的步骤,但是如上所述,实际上,在一个系统中,多个预约要求同时存在是很普通的。此时,能依次以所述步骤把多个预约要求调度,更希望同使用所述步骤调度多个预约要求。
以上以记述数字电视广播接收机的动作的程序模块为例进行说明,但是通过准备记述其他各种硬件的动作的程序模块,能通过软件实现数字电视广播接收机以外的其他任意硬件的动作。
须指出的是,设置在图1的计算机系统中的MPU11和多个VPU12也能作为把它们混载在1芯片上的并行处理器实现。此时,由MPU11执行的VPU执行环境、或由特定的一个VPU等执行的VPU执行环境能控制对多个VPU12的调度。
另外,通过把作为VPU执行环境工作的程序或包含该VPU执行环境的操作系统等的程序存储在计算机可读取存储媒体中,通过该存储媒体把该程序导入包含分别具有局部处理器的多个处理器的计算机中来执行,就能取得与本实施例同样的效果。
而且,本发明并不局限于所述实施例,在不脱离本发明精神的范围内可以有各种各样的实施例变形,另外,根据所述实施例中描述的多个构成要素的适当组合,可以形成各种发明。例如,可以从实施例表示的全部构成要求中删除几个构成要素。进而,还可以适当组合涉及不同实施例的构成要素。
综上所述,根据本发明,即使不在程序代码中详细地记述各种处理的时间性制约条件,也能高效地调度用于执行实时处理的线程群。

Claims (9)

1.一种调度方法,调度用于执行由多个处理要素的组合构成的实时处理的线程群,其特征在于:包括:
输入记述了与所述多个处理要素分别对应的步骤的多个程序和表示所述多个程序之间的输入输出关系及执行所述各程序所需要的成本的构成记述信息的步骤;和
通过根据所述构成记述信息决定执行所述多个程序的多个线程各自的执行开始定时和执行期间,来执行分别将所述多个线程分配给一个以上处理器的调度处理的步骤。
2.根据权利要求1所述的调度方法,其特征在于:
所述构成记述信息还包含表示所述多个程序中的程序之间的结合属性的结合属性信息;
执行所述调度处理的步骤包括:
根据所述结合属性信息,从所述多个线程中选择彼此协调工作的线程的集合即密结合线程组的步骤;和
为了分别通过不同的处理器来同时执行属于经所述选择的密结合线程组的线程群,而决定应分配属于所述密结合线程组的线程群的、与该线程群的个数相同的处理器的步骤。
3.根据权利要求2所述的调度方法,其特征在于:
分配属于所述密结合线程组的线程群的所述处理器分别具有局部存储器;
还包括:把执行属于所述密结合线程组的其他线程的处理器的局部存储器映射到属于所述密结合线程组的线程群的各自的有效地址空间的一部分上的步骤。
4.一种信息处理系统,执行由多个处理要素构成的实时处理,其特征在于:包括:
多个处理器;
存储记述了与所述多个处理要素分别对应的步骤的多个程序和表示所述多个程序之间的输入输出关系及所述各程序的执行所需的成本的构成记述信息的部件;
通过根据所述构成记述信息决定执行所述多个程序的多个线程各自的执行开始定时和执行期间,来执行将所述多个线程分别分配给所述多个处理器内的1以上处理器的调度处理的部件。
5.根据权利要求4所述的信息处理系统,其特征在于:
所述构成记述信息还包含表示所述多个程序中的程序之间的结合属性的结合属性信息;
执行所述调度处理的部件包含:
根据所述结合属性信息,从所述多个线程中选择彼此协调工作的线程的集合即密结合线程组的部件;和
为了分别通过不同的处理器来同时执行属于经所述选择的密结合线程组的线程群,而从所述多个处理器中决定应分配属于所述密结合线程组的线程群的、与该线程群的个数相同的处理器的部件。
6.根据权利要求5所述的信息处理系统,其特征在于:
所述多个处理器分别具有局部存储器;
还包括:把执行属于所述密结合线程组的其他线程的处理器的局部存储器映射到属于所述密结合线程组的线程群各自的有效地址空间的一部分上的步骤。
7.一种程序,使包含多个处理器的计算机执行用于对线程群进行调度的处理,该线程群用于执行由多个处理要素的组合构成的实时处理,其特征在于:包括:
使所述计算机执行输入记述了与所述多个处理要素分别对应的步骤的多个程序和表示所述多个程序之间的输入输出关系及执行所述各程序所需要的成本的构成记述信息的处理的步骤;和
使所述计算机执行以下调度处理的步骤,该调度处理是:通过根据所述构成记述信息决定执行所述多个程序的多个线程各自的执行开始定时和执行期间,来分别将所述多个线程分配给一个以上处理器。
8.根据权利要求7所述的程序,其特征在于:
所述构成记述信息还包含表示所述多个程序中的程序之间的结合属性的结合属性信息;
使所述计算机执行所述调度处理的步骤包括:
使所述计算机执行根据所述结合属性信息从所述多个线程中选择彼此协调工作的线程的集合即密结合线程组的处理的步骤;和
使所述计算机执行为了分别通过不同的处理器来同时执行属于经所述选择的密结合线程组的线程群,而决定应分配属于所述密结合线程组的线程群的、与该线程群的个数相同的处理器的处理的步骤。
9.根据权利要求8所述的程序,其特征在于:
分配属于所述密结合线程组的线程群的所述处理器分别具有局部存储器;
还包括:使所述计算机进行以下处理:把执行属于所述密结合线程组的其他线程的处理器的局部存储器映射到属于所述密结合线程组的线程群的各自的有效地址空间的一部分上。
CNB2004100073013A 2003-06-27 2004-02-27 调度方法和信息处理系统 Expired - Fee Related CN1287283C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP185277/2003 2003-06-27
JP2003185277A JP3889726B2 (ja) 2003-06-27 2003-06-27 スケジューリング方法および情報処理システム

Publications (2)

Publication Number Publication Date
CN1577281A true CN1577281A (zh) 2005-02-09
CN1287283C CN1287283C (zh) 2006-11-29

Family

ID=33411149

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004100073013A Expired - Fee Related CN1287283C (zh) 2003-06-27 2004-02-27 调度方法和信息处理系统

Country Status (5)

Country Link
US (2) US7418705B2 (zh)
EP (1) EP1492005A3 (zh)
JP (1) JP3889726B2 (zh)
KR (1) KR100591727B1 (zh)
CN (1) CN1287283C (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103299280A (zh) * 2010-11-15 2013-09-11 高通股份有限公司 对用于多处理器移动通信设备的应用程序的资源获取进行仲裁
WO2015070789A1 (en) * 2013-11-14 2015-05-21 Mediatek Inc. Task scheduling method and related non-transitory computer readable medium for dispatching task in multi-core processor system based at least partly on distribution of tasks sharing same data and/or accessing same memory address (es)
WO2019102287A1 (en) * 2017-11-21 2019-05-31 International Business Machines Corporation Prioritizing applications for diagonal scaling in a distributed computing environment
CN110958215A (zh) * 2018-09-26 2020-04-03 马维尔国际贸易有限公司 安全的在线接收的网络分组处理
US10635501B2 (en) 2017-11-21 2020-04-28 International Business Machines Corporation Adaptive scaling of workloads in a distributed computing environment
US10721179B2 (en) 2017-11-21 2020-07-21 International Business Machines Corporation Adaptive resource allocation operations based on historical data in a distributed computing environment
CN111752711A (zh) * 2020-06-24 2020-10-09 浪潮(北京)电子信息产业有限公司 基于numa的线程处理方法、装置、设备及存储介质
US10812407B2 (en) 2017-11-21 2020-10-20 International Business Machines Corporation Automatic diagonal scaling of workloads in a distributed computing environment
US10887250B2 (en) 2017-11-21 2021-01-05 International Business Machines Corporation Reducing resource allocations and application instances in diagonal scaling in a distributed computing environment
US10893000B2 (en) 2017-11-21 2021-01-12 International Business Machines Corporation Diagonal scaling of resource allocations and application instances in a distributed computing environment

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7725897B2 (en) * 2004-11-24 2010-05-25 Kabushiki Kaisha Toshiba Systems and methods for performing real-time processing using multiple processors
JP4028444B2 (ja) * 2003-06-27 2007-12-26 株式会社東芝 スケジューリング方法およびリアルタイム処理システム
JP3889726B2 (ja) 2003-06-27 2007-03-07 株式会社東芝 スケジューリング方法および情報処理システム
JP4025260B2 (ja) 2003-08-14 2007-12-19 株式会社東芝 スケジューリング方法および情報処理システム
JP4057989B2 (ja) * 2003-09-26 2008-03-05 株式会社東芝 スケジューリング方法および情報処理システム
JP4197673B2 (ja) * 2004-09-30 2008-12-17 株式会社東芝 マルチプロセッサ計算機及びタスク実行方法
JP4197672B2 (ja) * 2004-09-30 2008-12-17 株式会社東芝 マルチプロセッサ計算機及びプログラム
US7930700B1 (en) * 2005-05-23 2011-04-19 Hewlett-Packard Development Company, L.P. Method of ordering operations
JP2007026095A (ja) * 2005-07-15 2007-02-01 Matsushita Electric Ind Co Ltd 並列演算装置
US20070050774A1 (en) * 2005-08-24 2007-03-01 Eldson John C Time-aware systems
US8887133B2 (en) * 2006-04-28 2014-11-11 Bmc Software, Inc. Bi-directional communication between change management tool and implementation tools
JP4358224B2 (ja) * 2006-12-27 2009-11-04 株式会社東芝 ゲストosスケジューリング方法及び仮想計算機モニタ
WO2009021539A1 (de) * 2007-08-16 2009-02-19 Siemens Aktiengesellschaft Kompilieren von computerprogrammen für multicore-prozessoren und deren ausführung
KR100962531B1 (ko) * 2007-12-11 2010-06-15 한국전자통신연구원 동적 로드 밸런싱을 지원하는 멀티 쓰레딩 프레임워크를 수행하는 장치 및 이를 이용한 프로세싱 방법
GB2454996B (en) * 2008-01-23 2011-12-07 Ibm Method for balanced handling of initiative in a non-uniform multiprocessor computing system
US20110067015A1 (en) * 2008-02-15 2011-03-17 Masamichi Takagi Program parallelization apparatus, program parallelization method, and program parallelization program
JP2010033437A (ja) 2008-07-30 2010-02-12 Autonetworks Technologies Ltd 制御装置、制御方法及びコンピュータプログラム
US8286172B2 (en) * 2008-10-02 2012-10-09 Nec Laboratories America, Inc. Systems and methods for implementing best-effort parallel computing frameworks
KR101513505B1 (ko) 2008-11-04 2015-04-20 삼성전자주식회사 프로세서 및 인터럽트 처리 방법
JP5047139B2 (ja) * 2008-11-27 2012-10-10 富士ゼロックス株式会社 画像処理装置及びプログラム
US10534644B2 (en) * 2009-06-25 2020-01-14 Wind River Systems, Inc. Method and system for a CPU-local storage mechanism
JP2010231808A (ja) * 2010-06-16 2010-10-14 Autonetworks Technologies Ltd プログラム変更方法及びコンピュータプログラム
JP5644307B2 (ja) 2010-09-17 2014-12-24 富士通株式会社 情報処理装置、情報処理装置の制御方法及び制御プログラム
JP2012128645A (ja) 2010-12-15 2012-07-05 Toshiba Corp メモリシステム
US9703723B2 (en) * 2011-08-29 2017-07-11 International Business Machines Corporation Method and apparatus for performing mapping within a data processing system having virtual machines
KR101880452B1 (ko) * 2012-02-06 2018-08-17 삼성전자주식회사 커널 수행 순서 스케줄링 방법 및 장치
US9898348B2 (en) * 2014-10-22 2018-02-20 International Business Machines Corporation Resource mapping in multi-threaded central processor units
US10019292B2 (en) * 2015-12-02 2018-07-10 Fts Computertechnik Gmbh Method for executing a comprehensive real-time computer application by exchanging time-triggered messages among real-time software components
US11353868B2 (en) * 2017-04-24 2022-06-07 Intel Corporation Barriers and synchronization for machine learning at autonomous machines
US10817310B2 (en) * 2017-09-01 2020-10-27 Ab Initio Technology Llc Executing graph-based program specifications
CN117667345B (zh) * 2023-12-05 2024-07-19 成都正扬博创电子技术有限公司 一种基于多余度飞控计算机的任务调度系统及方法

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2836902B2 (ja) 1989-05-10 1998-12-14 三菱電機株式会社 マルチプロセッサ型動画像符号化装置及びバス制御方法
US5471622A (en) * 1989-10-04 1995-11-28 Paralogic, Inc. Run-time system having nodes for identifying parallel tasks in a logic program and searching for available nodes to execute the parallel tasks
US5339415A (en) * 1990-06-11 1994-08-16 Cray Research, Inc. Dual level scheduling of processes to multiple parallel regions of a multi-threaded program on a tightly coupled multiprocessor computer system
JP3312362B2 (ja) 1994-08-26 2002-08-05 日本電信電話株式会社 マルチプロセッサシステム
US5590323A (en) * 1994-05-13 1996-12-31 Lucent Technologies Inc. Optimal parallel processor architecture for real time multitasking
JPH08180025A (ja) 1994-12-21 1996-07-12 Toshiba Corp スケジューリング装置
JPH09218861A (ja) * 1996-02-08 1997-08-19 Fuji Xerox Co Ltd スケジューラ
US5826081A (en) * 1996-05-06 1998-10-20 Sun Microsystems, Inc. Real time thread dispatcher for multiprocessor applications
JPH10143380A (ja) 1996-11-07 1998-05-29 Hitachi Ltd マルチプロセッサシステム
JP3733678B2 (ja) 1997-02-18 2006-01-11 ブラザー工業株式会社 並列処理方式
JP3053797B2 (ja) 1998-06-12 2000-06-19 三菱電機株式会社 制御装置の制御ソフトウエア実行システム
US6205465B1 (en) * 1998-07-22 2001-03-20 Cisco Technology, Inc. Component extensible parallel execution of multiple threads assembled from program components specified with partial inter-component sequence information
JP3205985B2 (ja) 1998-09-18 2001-09-04 日本電気株式会社 拡散層の形成方法
JP2000250841A (ja) * 1999-03-02 2000-09-14 Hitachi Ltd ページ生成方法及び装置並びにページ生成プログラムを記録した記憶媒体および電子モールシステム
JP2003006175A (ja) * 2001-06-26 2003-01-10 Hitachi Ltd プロセス実行時のプログラム動作特性に基づくプロセススケジューリング方法及びこれを用いたプログラム及びデータ処理装置
JP3632635B2 (ja) * 2001-07-18 2005-03-23 日本電気株式会社 マルチスレッド実行方法及び並列プロセッサシステム
JP2004171234A (ja) 2002-11-19 2004-06-17 Toshiba Corp マルチプロセッサシステムにおけるタスク割り付け方法、タスク割り付けプログラム及びマルチプロセッサシステム
JP4028444B2 (ja) * 2003-06-27 2007-12-26 株式会社東芝 スケジューリング方法およびリアルタイム処理システム
JP3892829B2 (ja) * 2003-06-27 2007-03-14 株式会社東芝 情報処理システムおよびメモリ管理方法
JP3889726B2 (ja) 2003-06-27 2007-03-07 株式会社東芝 スケジューリング方法および情報処理システム
JP3920818B2 (ja) * 2003-07-22 2007-05-30 株式会社東芝 スケジューリング方法および情報処理システム
JP4025260B2 (ja) * 2003-08-14 2007-12-19 株式会社東芝 スケジューリング方法および情報処理システム
US7117389B2 (en) * 2003-09-18 2006-10-03 International Business Machines Corporation Multiple processor core device having shareable functional units for self-repairing capability
JP4057989B2 (ja) * 2003-09-26 2008-03-05 株式会社東芝 スケジューリング方法および情報処理システム
JP4197672B2 (ja) * 2004-09-30 2008-12-17 株式会社東芝 マルチプロセッサ計算機及びプログラム
JP4197673B2 (ja) * 2004-09-30 2008-12-17 株式会社東芝 マルチプロセッサ計算機及びタスク実行方法

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103299280A (zh) * 2010-11-15 2013-09-11 高通股份有限公司 对用于多处理器移动通信设备的应用程序的资源获取进行仲裁
US9317329B2 (en) 2010-11-15 2016-04-19 Qualcomm Incorporated Arbitrating resource acquisition for applications of a multi-processor mobile communications device
CN103299280B (zh) * 2010-11-15 2017-02-15 高通股份有限公司 对用于多处理器移动通信设备的应用程序的资源获取进行仲裁
WO2015070789A1 (en) * 2013-11-14 2015-05-21 Mediatek Inc. Task scheduling method and related non-transitory computer readable medium for dispatching task in multi-core processor system based at least partly on distribution of tasks sharing same data and/or accessing same memory address (es)
CN104995603A (zh) * 2013-11-14 2015-10-21 联发科技股份有限公司 至少部分基于共享相同数据及/或存取相同存储地址的任务分布的任务调度方法以及多核处理器系统中用于分配任务的相关非暂时性计算机可读介质
US10721179B2 (en) 2017-11-21 2020-07-21 International Business Machines Corporation Adaptive resource allocation operations based on historical data in a distributed computing environment
US10635501B2 (en) 2017-11-21 2020-04-28 International Business Machines Corporation Adaptive scaling of workloads in a distributed computing environment
WO2019102287A1 (en) * 2017-11-21 2019-05-31 International Business Machines Corporation Prioritizing applications for diagonal scaling in a distributed computing environment
US10733015B2 (en) 2017-11-21 2020-08-04 International Business Machines Corporation Prioritizing applications for diagonal scaling in a distributed computing environment
GB2581754A (en) * 2017-11-21 2020-08-26 Ibm Prioritizing applications for diagonal scaling in a distributed computing environment
US10812407B2 (en) 2017-11-21 2020-10-20 International Business Machines Corporation Automatic diagonal scaling of workloads in a distributed computing environment
US10887250B2 (en) 2017-11-21 2021-01-05 International Business Machines Corporation Reducing resource allocations and application instances in diagonal scaling in a distributed computing environment
US10893000B2 (en) 2017-11-21 2021-01-12 International Business Machines Corporation Diagonal scaling of resource allocations and application instances in a distributed computing environment
CN110958215A (zh) * 2018-09-26 2020-04-03 马维尔国际贸易有限公司 安全的在线接收的网络分组处理
CN110958215B (zh) * 2018-09-26 2023-05-30 马维尔国际贸易有限公司 安全的在线接收的网络分组处理
CN111752711A (zh) * 2020-06-24 2020-10-09 浪潮(北京)电子信息产业有限公司 基于numa的线程处理方法、装置、设备及存储介质

Also Published As

Publication number Publication date
KR20050004688A (ko) 2005-01-12
EP1492005A2 (en) 2004-12-29
US7418705B2 (en) 2008-08-26
US20040268353A1 (en) 2004-12-30
CN1287283C (zh) 2006-11-29
US20080282249A1 (en) 2008-11-13
KR100591727B1 (ko) 2006-06-22
JP2005018610A (ja) 2005-01-20
US8171477B2 (en) 2012-05-01
JP3889726B2 (ja) 2007-03-07
EP1492005A3 (en) 2006-08-30

Similar Documents

Publication Publication Date Title
CN1287283C (zh) 调度方法和信息处理系统
CN1577311A (zh) 调度方法和实时处理系统
CN1287282C (zh) 执行实时操作的方法和系统
CN1295583C (zh) 实现实时操作的方法和系统
CN1601474A (zh) 执行实时操作的方法和系统
CN1280714C (zh) 独立处理多个指令流、软式控制各指令流的处理功能的多线程处理器
CN1113289C (zh) 能执行多异步运行任务中的异步事件任务的处理器
CN1534504A (zh) 利用单处理器操作系统的并行处理系统及并行处理程序
CN1577310A (zh) 信息处理系统和存储器管理方法
CN1284095C (zh) 多处理器系统中的任务分配方法和多处理器系统
CN1573656A (zh) 并行处理系统中的电源管理系统及电源管理程序
CN101036393A (zh) 信息处理系统、信息处理方法和计算机程序
CN1538296A (zh) 图形处理单元的多线程内核
CN101052949A (zh) 操作系统
CN1670721A (zh) 应用单处理器操作系统的并行处理系统中的处理器间通信系统及其程序
CN1577316A (zh) 单处理器操作系统并行处理系统中的安全管理系统
CN1846194A (zh) 一种在处理器中执行的计算线程的暂停与解除分配的整合机制
CN1669018A (zh) 手持终端框架系统
CN1734438A (zh) 信息处理设备、信息处理方法和程序
CN1298521A (zh) 具有二维或多维可编程序的单元结构(fpgas、dpgas等)的数据流处理器和模块的无死锁配置方法
CN1916962A (zh) 存储和回存状态上下文在图形处理单元的方法和装置
CN1993674A (zh) 多芯架构中的资源管理
CN1916961A (zh) 可中断图形处理单元及其控制方法
CN1609812A (zh) 用于增强协处理器性能的系统和方法
CN1906583A (zh) 信息处理设备、中断处理控制方法、以及计算机程序

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: 20061129

Termination date: 20160227

CF01 Termination of patent right due to non-payment of annual fee