执行实时操作的方法和系统的制作方法

文档序号:6411696阅读:135来源:国知局
专利名称:执行实时操作的方法和系统的制作方法
技术领域
本发明涉及一个时序安排方法,以及一个信息处理系统,用于周期性地执行一个实时操作,该操作包括多个链接的任务的结合。
背景技术
通常诸如服务器计算机这样的计算机系统已经使用了诸如一个多处理器和一个并行处理器的系统结构,以便提高吞吐量。所述两种处理器都用多个处理单元实现一个并行计算操作。
日本专利申请KOKAI出版物10-143380号提出了一种具有多个处理单元的系统。此系统包括一个高速CPU,多个低速CPU以及一个共享的存储器。根据每个进程的并行性和执行时间将进程指定给高速和低速CPU。
日本专利申请KOKAI出版物8-180025号提出一种安排技术,该技术对线程进行安排,以使得相同的处理器执行属于相同的进程的线程。
最近,不仅计算机系统,需要实时处理大量诸如AV(音频视频)数据这样的数据的嵌入式设备也要求引入诸如一个多处理器和一个并行处理器的系统结构也提高吞吐量。
但是,在当前的情况下,以上系统结构所宣称的实时处理系统几乎未见报道。
在实时处理系统中,每个操作需要在允许的时间限制内完成。为了在不变的时间间隔中周期性地执行一个包括多个链接的任务的结合的实时操作,所有链接的任务需要在每个周期的时间间隔内完成。但是,如果实时操作的链接的任务较长,则它们不能被完成。

发明内容
本发明的一个目标是提供一种方法和一个信息处理系统,它们能够有效利用多个处理器来执行一个包括多个链接的任务的组合的实时操作。
根据本发明的一个实施方式,提供了一种方法,它能够利用多个处理器周期性地执行一个包括多个链接的任务的实时操作,该方法包括根据任务的执行顺序关系将链接的任务分成一个第一任务群组和一个第二任务群组,第二任务群组在第一任务群组之后执行;执行一个时序安排操作,将第一任务群组和第二任务群组的每一个分配给至少一个处理器,以便以规则的时间间隔周期性地执行第一任务群组,以及以相对于第一任务群组一个周期的延迟以规则的时间间隔周期性地执行第二任务群组。


图1是显示配置根据本发明的一个实施方式的一个实时处理系统的一个计算机系统的一个例子的框图。
图2是根据本发明的实施方式的实时处理系统中提供的一个MPU(主处理单元)和多个VPU(通用处理单元)的框图。
图3是显示用于根据本发明的实施方式的实时处理系统中的一个虚拟地址翻译机制的一个例子的图。
图4是显示映射在根据本发明的实施方式的实时处理系统的实际地址空间中的数据的一个例子的图。
图5描述了根据本发明的实施方式的实时处理系统中的有效地址空间、虚拟地址空间和实际地址空间。
图6是数字电视广播的一个接收机的框图。
图7是显示由根据本发明的实施方式的u实时处理系统执行的一个程序模块的一个例子的图。
图8显示包括在图7所示的程序模块中的一个结构描述的一个例子的表。
图9是显示根据图7所示的程序模块的程序之间的数据流动的图。
图10是显示图7所示的程序模块中的由两个VPU执行的一个并行操作的图。
图11是显示图7所示的程序模块中由两个VPU执行的一个流水线操作的图。
图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是描述根据本发明的实施方式的实时处理系统中的一个线程及其执行期之间的一个关系的图。
图34是在根据本发明的实施方式的实时处理系统中的一个执行期中同时运行的紧密耦合线程的图。
图35是显示根据本发明的实施方式的实时处理系统中的一个周期性执行模型的图。
图36是显示根据本发明的实施方式的实时处理系统中的一个非周期性执行模型的图。
图37描述了一个任务图。
图38描述了用于根据本发明的实施方式的实时处理系统中的一个预订图的原理。
图39描述了用于根据本发明的实施方式的实时处理系统中的一个预订图的一个例子。
图40是描述用于根据本发明的实施方式的实时处理系统的一个分级时序安排器的图。
图41是描述由根据本发明的实施方式的实时处理系统用于硬实时类中的时序安排的参数的例子的图。
图42描述了用于根据本发明的实施方式的实时处理系统中的绝对时间限制。
图43描述了用于根据本发明的实施方式的实时处理系统中的相对时间限制。
图44描述了用于根据本发明的实施方式的实时处理系统中的互斥限制。
图45是描述根据本发明的实施方式的实时处理系统中的同步机制的表。
图46是显示用于选择性地使用根据本发明的实施方式的实时处理系统中的同步机制的一个程序的流程图。
图47是显示用于根据本发明的实施方式的实时处理系统中的一个预订表的一个例子的图。
图48是显示根据本发明的实施方式的实时处理系统生成的一个预订请求的一个例子的图。
图49是显示由根据本发明的实施方式的实时处理系统根据图48所示的预订请求执行的时序安排的一个例子的图。
图50是描述由根据本发明的实施方式的实时处理系统执行的软件流水线类型的时序安排的一个第一例子的图。
图51是描述根据本发明的实施方式的实时处理系统执行的软件流水线类型的时序安排的一个第二例子的图。
图52是用于由根据本发明的实施方式的实时处理系统执行的软件流水线类型的时序安排的程序的流程图。
图53是描述根据本发明的实施方式的实时处理系统执行的软件流水线类型的时序安排的一个第三例子的图。
图54是描述由根据本发明的实施方式的实时处理系统考虑到缓冲器数目执行的时序安排的一个第一例子的图。
图55是描述由根据本发明的实施方式的实时处理系统考虑到缓冲器数目执行的时序安排的一个第二例子的图。
图56是描述由根据本发明的实施方式的实时处理系统考虑到缓冲器数目执行的时序安排的一个第三例子的图。
图57是用于由根据本发明的实施方式的实时处理系统考虑到缓冲器数目执行的时序安排的程序的流程图。
图58是描述由根据本发明的实施方式的实时处理系统考虑到缓冲器数目执行的时序安排的一个第四例子的图。
图59是显示用于根据本发明的实施方式的实时处理系统中的具有一个分级结构的一个预订图的一个例子的图。
图60是显示由根据本发明的实施方式的实时处理系统生成的并且考虑到紧密耦合线程群组的一个预订请求的一个例子的图。
图61是显示由根据本发明的实施方式的实时处理系统根据图60所示的预订请求执行的时序安排的一个例子的图。
图62是显示用于根据本发明的实施方式的实时处理系统中的一个预订列表的一个例子的图。
图63是显示用于在根据本发明的实施方式的实时处理系统中预订一个执行期的一个程序的图。
具体实施例方式
现将参照

本发明的一个实施方式。
图1是显示用于实现根据本发明的一个实施方式的实时处理系统的计算机系统的配置的一个例子的框图。该计算机系统是一个处理多种操作的信息处理系统,这些操作需要在时间限制下实时完成。该计算机系统不仅可用作一个通用计算机,也可用作多种电子设备的一个嵌入式系统,以执行需要实时完成的操作。参见图1,该计算机系统包括一个MPU(主处理单元)11,多个VPU(通用处理单元)12,一个连接设备13,一个主存储器14和一个I/O(输入/输出)控制器15。MPU 11、VPU 12、主存储器14和IO控制器15通过连接设备13彼此连接。连接设备13由一条总线或一个互连网络(例如一个纵横交换机)构成。如果一条总线用于连接设备13,则其形状可为一个环。MPU 11是控制计算机系统的一个操作的一个主处理器。MPU 11主要运行一个OS(操作系统)。VPU 12和IO控制器15可执行OS的某些功能。每个VPU 12是用于在MPU 11的控制下执行多种操作的一个处理器。MPU 11将操作(任务)分配给VPU 12,以便并行执行这些操作(任务)。从而能够高速并高效地执行操作。主存储器14是被MPU 11、VPU 12和I/O控制器15共享的一个存储设备(共享存储器)。主存储器14存储OS和应用程序。I/O控制器15连接到一个或多个I/O设备16。控制器15也被称为一个桥接设备。
连接设备13具有一个QoS(服务质量)功能,它保证一个数据传输速率。QoS功能是通过以一个预订的带宽(传输速率)经过连接设备13传输数据来实现的。当写数据以5Mbps的速率从一个VPU 12传输到存储器14或当其以100Mbps的速率从一个VPU 12传输到另一个VPU 12时,使用Qos功能。每个VPU 12指定(预订)连接设备13的一个带宽(传输速率)。连接设备13按优先级将指定的带宽分配给VPU 12。如果为一个VPU 12的数据传输预订了一个带宽,则即使另一个VPU 12、MPU 11或IO控制器15在前一VPU 12的数据传输期间传输大量数据,该带宽也会被保证。QoS功能对于执行实时操作的计算机尤其重要。
图1所示的计算机系统包括一个MPU 11,四个VPU 12,一个存储器14和一个IO控制器15。VPU 12的数目不受限制。系统不需要包括MPU,在此情况下,一个VPU 12执行MPU 11的操作。换句话说,一个VPU 12用作一个虚拟MPU 11。
图2显示了一个MPU 11和多个VPU 12。MPU 11包括一个处理单元21和一个存储器管理单元22。处理单元21通过存储器管理单元22访问存储器14。存储器管理单元22执行一个虚拟存储器管理功能,并且管理存储器管理单元22中的一个高速缓冲存储器。每个VPU12包括一个处理单元31,一个本地存储(本地存储器)32和一个存储器控制器33。处理单元31可具有对相同VPU 12中的本地存储32的直接访问权限。存储器控制器33用作一个DMA(直接存储器访问)控制器,它在本地存储32和存储器14之间传输数据。存储器控制器33利用连接设备13的Qos功能,并且具有指定一个带宽的功能以及以指定的带宽输入/输出数据的功能。存储器控制器33也具有与MPU11的存储器管理单元22同样的虚拟存储器管理功能。处理单元31将本地存储32用作一个主存储器。处理单元31不具有对存储器14的直接访问权限,而是指示存储器控制器33将存储器14的内容传输给本地存储32。处理单元31访问本地存储32以读/写数据。此外,处理单元31指示存储器控制器33将本地存储32的内容写到存储器14。
MPU 11的存储器控制单元22以及VPU 12的存储器控制器33执行如图3所示的虚拟存储器管理。由MPU 11的处理单元21或VPU12的存储器控制器33所见的地址是一个64位的地址,如图3的上部所示。在64位地址中,较高的36位部分表示一个段号,中间的16位部分表示一个页号,而较低的12位部分表示一个页偏置。存储器管理单元22和存储器控制器33均包括一个段表50和一个页表60。段表50和页表60将64位地址转换为通过连接设备13实际寻址的实际地址空间。
例如,如图4所示,以下数据映射在由MPU 11和每个VPU 12所见的实际地址(RA)中。
1.存储器14(主存储设备)2.MPU 11的控制寄存器3.VPU 12的控制寄存器4.VPU 12的本地存储5.I/O设备的控制寄存器(包括I/O控制器15的控制存储器)MPU 11和VPU 12可访问实际地址空间中的任何地址以读/写数据项1至5。能够从MPU 11和VPU 12甚至从I/O控制器15访问实际地址空间,进而访问本地存储32是尤其重要的。此外,段表50或页表60可防止每个VPU 12的本地存储32的内容被任意读或写。
图5显示了由图3所示的虚拟存储管理功能所管理的存储器地址空间。由MPU 11或VPU 12上执行的程序直接看到的是EA(有效地址)。一个有效地址由段表50映射到VA(虚拟地址)空间中。一个虚拟地址由页表60映射到RA(实际地址)空间中。RA空间具有如图4所示的结构。
MPU 11可使用诸如一个控制寄存器的硬件机制来管理VPU 12。例如,MPU 11可从/向每个VPU 12的寄存器读/写数据,并启动/停止每个VPU 12执行程序。正如VPU 12之间的通信处同步那样,MPU 11和每个VPU 12之间的通信和同步可通过一个硬件机制(例如一个邮箱和一个事件标记)执行。
根据本实施方式的计算机系统允许软件执行电子设备的这样一个操作,该操作以传统方式实现对实时操作的迫切需求。例如,一个VPU 12执行对应于组成电子设备的某些硬件元件的一个计算,同时另一个VPU 12执行对应于组成电子设备的其他硬件元件的一个计算。
图6简单显示了数字电视广播的一个接收机的一个硬件结构。在此接收机中,一个DEMUX(多路输出选择器)电路101将一个接收到的广播信号分成对应于音频数据、视频数据和字幕数据的压缩编码的数据。一个A-DEC(音频解码器)电路102对压缩编码的音频数据流进行解码。一个V-DEC(视频解码器)电路103对压缩编码的视频数据流进行解码。解码后的视频数据流被发送到PROG(顺序转换)电路105,并被转换为一个顺序视频信号。顺序视频信号被发送到一个BLEND(图像混合)电路106。一个TEXT(字幕数据处理)电路104将压缩编码的字幕数据转换为一个字幕视频信号,并将它发送给BLEND电路106。BLEND电路106混合PROG电路105发送的视频信号和TEXT电路104发送的字幕视频信号,并将混合后的信号作为一个视频流输出。一系列上述操作按照一个视频帧速率(例如,每秒30、32或60帧)重复。
为了通过软件执行图6所示的硬件的操作,本实施方式提供了如图7所示的一个程序模块100。程序模块100是一个应用程序,用于使得计算机系统执行图6所示的DEMUX电路和01,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。这些程序111至116是描述对应于电路101至106的操作(DMUX操作,A-DEC操作,V-DEC操作,TEXT操作,PROG操作,BLEND操作)的任务的程序的程序。更具体地,当程序模块100运行时,对应于程序111至116的中每个程序的线程被生成,并被分配给一个或多个VPU12,并在其上被执行。对应于分配给VPU 12的线程的一个程序被加载到VPU 12的本地存储32,并且所述线程在本地存储32上执行所述程序。程序模块100是通过以称为一个结构描述117的数据来封装程序111至116得到的,其中程序111至116对应于配置一个数据电视广播的接收机的硬件模块。
结构描述117是指示程序模块100中的程序(线程)是如何被结合并执行的信息。结构描述117包括指示被链接的程序111至116之间的输入/输出(链接的)的关系以及执行程序111至116中的每一个所需的花费(时间)的信息。图8显示了结构描述117的一个例子。
结构描述117显示了多个模块(程序模块100中的程序),每个模块被执行为一个线程及其对应的输入、输出、执行花费以及输出所需的缓冲器大小。例如,(3)的V-DEC程序接收(1)的DEMUX程序的输出,将其作为一个输入,并将其输出发送到(5)的PROG程序。V-DEC程序的输出所需的缓冲器是1MB,执行V-DEC程序本身的花费是50。也可以以由一个具有某些虚拟规格的虚拟处理器执行程序所需的时间单位来描述它。由于不同计算机的VPU规格和性能可能不同,因此需要以这样的虚拟单元来描述花费。如果根据图8所示的结构描述117执行程序,则程序之间的数据流动如图9所示。
结构描述117还显示了作为线程参数的耦合属性信息,它表示了对应于程序111至116的线程之间的一个耦合属性。耦合属性包括两个不同的属性一个紧密耦合属性和一个松散耦合属性。具有紧密耦合属性的多个线程彼此协作地被执行,并被称为一个紧密耦合线程群组。本实施方式的计算机系统对属于每个紧密耦合线程群组的线程进行时序安排,以便属于相同紧密耦合线程群组的线程能够被不同的VPU同时执行。具有松散耦合属性的多个线程被称为一个松散耦合线程群组。编程者可使用线程参数指定对应于程序11至16的线程之间的耦合属性。将参考图25及其以下的图详细说明紧密和松散耦合线程群组。包括耦合属性信息的线程参数可被直接描述为程序111至116中的代码,而不是结构描述117。
参见图10和11,以下将说明本实施方式的计算机系统如何执行程序111至116。此处假设计算机系统包括两个VPUVPU0和VPU1。图10显示了当每秒显示30帧视频数据时将程序分配给每个VPU的时间。一帧的音频和视频数据在对应于一个周期的时间间隔中输出。首先,VPU0执行DEMUX程序,以执行DEMUX操作,并将其得到的音频、视频和字幕数据写入缓冲器。此后,VPU1执行A-DEC程序和TEXT程序,以便顺序执行A-DEC操作和TEXT操作,并将其结果写入缓冲器。然后,VPU0执行V-DEC程序,以执行V-DEC操作,并将其结果写入缓冲器。VPU0执行PROG程序以执行PROG操作,并将其结果写入缓冲器。由于此时VPU1已完成了TEXT程序,因此VPU0执行最后的BLEND程序以执行BLEND操作,以便生成最终的视频数据。每个周期都重复以上处理。
确定每个VPU执行哪个程序,以及程序何时完成以便无延迟地执行一个所需操作的操作被称为时序安排。一个实现时序安排的模块被称为一个时序安排器。在本实施方式中,时序安排是根据以上包括在程序模块100中的结构描述117实现的。在时序安排操作中,执行程序111至116的每个线程的执行开始时间和执行期均是根据结构描述117确定的,从而将每个线程分配给一个或多个VPU 12。以下操作在程序模块100将要被执行时执行。
1.操作系统从一个外部存储或存储器13接收程序模块100,并从程序模块100读取多个程序111至116以及结构描述117。
2.根据结构描述117,操作系统中的时序安排器确定用于执行程序模块100中的程序111至116的每个线程(DEMUX、V-DEC、A-DEC、TEXT、PROG和BLEND)的执行开始时间和执行期,以便将线程(DEMUX、V-DEC、A-DEC、TEXT、PROG和BLEND)分配给一个或多个VPU。
如上所述,在实时处理系统中,执行程序模块100中的被链接的程序111至116的每个线程(DEMUX、V-DEC、A-DEC、TEXT、PROG和BLEND)的执行开始时间和执行期是根据结构描述117确定的。从而,可以不在程序代码中描述每个操作的时间限制条件并对执行实时操作的多个线程进行时序安排。
图11显示了当每秒显示60帧视频数据时执行的程序。图11与图10的不同之处如下。在图11中,每秒需处理60帧数据,而在图10中,每秒处理30帧数据,从而一帧的数据处理可在一个周期(1/30秒)中完成。换句话说,一帧数据处理不能在一个周期(1/60秒)中完成,从而在图11中执行一个跨多个(两个)周期的软件流水线操作。例如,在周期1中,VPU0对于输入信号执行DEMUX程序和V-DEC程序。此后,在周期2中,VPU1执行A-DEC、TEXT、PROG和BLEND程序,并输出最终的视频数据。在周期2中,VPU0在下一帧中执行DEMUX和V-DEC程序。VPU0的DEMUX和V-DEC程序和VPU1的A-DEC、TEXT、PROG和BLEND程序跨两个周期以流水线模式执行。
为实现上述流水线操作,在执行程序模块100时执行以下操作1.操作系统从外部存储或存储器13接收程序模块100,并从程序模块100读取结构描述117。
2.操作系统中的时序安排器根据结构描述117确定多个任务DEMUX、V-DEC、A-DEC、TEXT、PROG和BLEND被程序模块100中的程序111至116执行的顺序。然后时序安排器将任务分成一个第一任务群组和一个第二任务群组。第二任务群组跟随在第一任务群组之后。例如,任务DEMUX和V-DEC属于第一任务群组,而任务A-DEC、TEXT、PROG和BLEND属于第二任务群组。
3.时序安排器使用至少两个处理器VPU0和VPU1,并且周期性地将至少一个处理器分配给第一和第二群组中的每一个,以便以流水线模式周期性地执行第一任务群组(DEMUX和V-DEC)和第二任务群组(A-DEC、TEXT、PROG和BLEND)。如果时序安排器用两个处理器VPU0和VPU1执行一个流水线操作,它周期性地将第一任务群组(DEMUX和V-DEC)分配给VPU0,以便VPU0以1/60秒的时间间隔周期性地执行第一任务群组。时序安排器周期性地将第二任务群组(A-DEC、TEXT、PROG和BLEND)分配给VPU1,以便VPU1相对于第一任务群组延迟一个周期以1/60秒的时间间隔周期性地执行第二群组。
两个处理器VPU1和VPU2可并行执行第二任务群组。例如,当VPU1执行第二任务群组的任务A-DEC和TEXT时,VPU2执行第二任务群组的任务PROG和BLEND。
在图7所示的程序模块100中,多个任务DEMUX、V-DEC、A-DEC、TEXT、PROG和BLEND由不同的线程执行。从而以上任务群组可被称为线程群组。
图7所示的程序模块100可被预先记录在结合了本发明的计算机系统的设备的闪速ROM和硬盘中,或者通过网络流通。在此情况下,计算机系统执行的操作的内容根据通过网络下载的程序模块的类型而变化。从而,结合了计算机系统的设备可执行对应于每一个不同的专用硬件的实时操作。如果再现新的内容所需的新的播放器软件、解码器软件和加密软件作为由计算机系统可执行的程序模块与内容一起被发送,则结合了计算机系统的设备可在可接受的能力限制范围内再现内容。
操作系统当只有一个OS(操作系统)201被加载到本实施方式的计算机系统时,它管理所有实际资源(MPU 11、VPU 12、存储器14、I/O控制器15、I/O设备16等),如图12所示。
另一方面,一个虚拟机系统可同时执行多个OS。在此情况下,如图13所示,一个虚拟机OS 301被加载到计算机系统中,以管理所有的实际资源(MPU 11、VPU 12、存储器14、I/O控制器15、I/O设备16等)。虚拟机OS 301也被称为一个主OS。也被称为客户OS的一个或多个OS 302和303被加载到虚拟机OS 301上。参见图14,客户OS 302和303各在一台包括由虚拟机OS 301提供的虚拟机资源的计算机上运行,并向由客户OS 302和303管理的应用程序提供多种服务。在图14的例子中,客户OS 302看起来像是运行在一台包括一个MPU 11、两个VPU 12和一个存储器14的计算机上,而子OS 303看起来像是运行在一台包括一个MPU 11、四个VPU 12和一个存储器14的计算机上。虚拟机OS 301管理实际资源中的哪一个VPU 12实际上对应于客户OS 302所见到的一个VPU 12和客户OS 303所见到的一个VPU 12。客户OS 302和303不必知道此对应关系。
虚拟机OS 301对客户OS 302和303进行时序安排,以便在时分的基础上将计算机系统中的所有资源分配给客户OS 302和303。假设客户OS 302执行一个实时操作。为了以严格的速度每秒三十次执行操作,客户OS 302将其参数设置到虚拟机OS 301。虚拟机OS 301对客户OS 302进行时序安排,以便可靠地每1/30秒将必要的操作时间分配给客户OS 302一次。操作时间分配给一个不要求实时操作的客户OS的优先级低于分配给一个要求实时操作的客户OS的优先级。图15显示客户OS 302和303交替运行,由水平轴表示时间。当客户OS 302(OS1)在运行时,MPU 11和所有的VPU 12被用作客户OS 302(OS1)的资源。而当客户OS 303(OS2)在运行时,MPU 11和所有的VPU 12被用作客户OS 303(OS2)的资源。
图16显示了一个不同于图15的操作模式。有这样的情况希望根据目标应用程序连续使用一个VPU 12。此情况对应于,例如,一个需要始终不间断的监控数据和事件的应用程序。虚拟机OS 301的时序安排器管理一个特定客户OS的时序安排,以便该客户OS占用一个特定的VPU 12。在图16中,一个VPU 3被指定为一个客户OS 302(OS1)专用的资源。即使虚拟机OS 301将客户OS 302(OS1)和客户OS 303(OS2)彼此交换,VPU 3还是继续在客户OS 302(OS1)的控制下运行。
为了在本实施方式中使用多个VPU 12执行程序,使用了一个软件模块,它被称为一个VPU运行环境。该软件模块包括一个时序安排器,用于对要分配给VPU 12的线程进行时序安排。当本实施方式的计算机系统上只实现一个OS 201时,在OS 201上实现了一个VPU运行环境401,如图17所示。VPU运行环境401可实现在OS 201的内核中或实现在一个用户程序中。它也可以一分为二,用于内核和用户程序,以便彼此协作地运行。当一个或多个客户OS运行在虚拟机OS 301上时,提供以下模式以实现VPU运行环境4011.在虚拟机OS 301中实现VPU运行环境401的模式(图18)。
2.将VPU运行环境401作为一个由虚拟机OS 301管理的OS的实现模式(图19)。在图19中,运行在虚拟机OS 301上的客户OS 304是VPU运行环境401。
3.在每个由虚拟机OS 301管理的客户OS中实现一个专用VPU运行环境的模式(图20)。在图20中,VPU运行环境401和402被实现在各自的客户OS 302和303中。如果必要的话,VPU运行环境401和402联合运行,使用由虚拟机OS 301提供的客户OS之间的一个通信功能。
4.在由虚拟机OS 301管理的客户OS之一中实现VPU运行环境401的模式(图21)。一个没有VPU运行环境的客户OS 303通过一个由虚拟机OS 301提供的客户OS之间的通信功能来利用一个客户OS 302的VPU运行环境。
以上模式具有以下优点模式1的优点由虚拟机OS 301管理的客户OS的时序安排和VPU的时序安排可合并成一个。从而,可以有效地并且精细地完成时序安排,并且有效地使用资源;以及由于VPU运行环境可在多个客户OS之间共享,因此当引入一个新的客户OS时不必创建一个新的VPU运行环境。
模式2的优点由于VPU的一个时序安排器可在虚拟机OS上的客户OS之间共享,因此可有效地并且精细地执行时序安排,并能有效地使用资源。
由于VPU运行环境可在多个客户OS之间共享,因此当引入一个新的客户OS时不必创建一个新的VPU运行环境。
由于可在不依赖于虚拟机OS或一个特定的客户OS的情况下创建VPU运行环境,因此它易被标准化,以及被替换。如果创建一个适合某个特定的嵌入式设备的VPU运行环境以便利用该设备的特征来执行时序安排,则可以有效地完成时序安排。
模式3的优点由于可在每个客户OS中最优地实现VPU运行环境,因此可以有效地并且精细地执行时序安排,并且能够有效地使用资源。
模式4的优点由于不需要在所有客户OS上实现VPU运行环境,因此易于添加一个新的客户OS。
由上可见,模式1至4均可被用于实现VPU运行环境。需要时可使用任何其他的模式。
服务提供者在根据本实施方式的计算机系统中,VPU运行环境401提供多种服务(使用网络的通信功能、一个输入/输出文件的功能、调用一个库函数(例如一个编解码器)、与用户接口、一个使用一个I/O设备进行的输入/输出操作、读取日期和时间等),以及管理与VPU 12相关的多种资源(每个VPU的操作时间、存储器、连接设备的带宽等)并对其进行时序安排的功能。这些服务是从运行在VPU 12上的应用程序调用的。如果一个简单的服务被调用,则它被VPU 12上的服务程序处理。一个不能仅由VPU 12处理的服务,例如通信处理和文件处理,则由MPU 11上的服务程序处理。提供这些服务的程序被称为一个服务提供者(SP)。
图22显示VPU运行环境的一个例子。VPU运行环境的主要部分位于MPU 11上,并且对应于一个MPU侧的VPU运行环境501。一个VPU侧的VPU运行环境502位于每个VPU 12上,只具有执行可由VPU 12处理的服务的最小功能。MPU侧的VPU运行环境501的功能大体上可分为一个VPU控制器511和一个服务代理512。VPU控制器511主要提供对与VPU 12相关的多种资源(每个VPU的操作时间、存储器、虚拟空间、连接设备的带宽等)的管理机制、同步机制、安全管理机制和时序安排机制。根据时序安排的结果将程序分派给VPU 12的是VPU控制器511。在接收到一个由每个VPU 12上的应用程序调用的服务请求时,服务代理512调用一个适当的服务程序(服务提供者),并且提供服务。
在接收到一个由每个VPU 12上的应用程序调用的服务请求时,VPU侧的VPU运行环境502只处理可在VPU 12中提供的服务,并且请求服务代理512处理其中不可能提供的服务。
图23显示了由VPU侧的VPU运行环境502处理一个服务请求的一个程序。在接收到来自一个应用程序的一个服务调用时(步骤S101),VPU侧的VPU运行环境502确定是否能在其中处理该服务(步骤S102)。如果该服务能被处理,则VPU运行环境502执行该服务,并把其结果返回给调用的部分(步骤S103和S107)。如果不能,则VPU运行环境502确定是否存在一个可执行该服务的服务程序作为每个VPU 12上的一个可执行程序(步骤S104)被注册。如果该服务程序已被注册,则VPU运行环境502执行服务程序并将其结果返回给调用的部分(步骤S105和S107)。如果没有,则VPU运行环境502请求服务代理512执行该服务程序,并将服务的一个结果从服务代理512返回给调用部分(步骤S106和S107)。
图24显示了由MPU侧的VPU运行环境501的服务代理处理由VPU侧的VPU运行环境502请求的一个服务的程序。在接收到来自VPU侧的VPU运行环境502的一个服务调用时(步骤S111),服务代理512确定VPU运行环境501是否能够处理该服务(步骤S112)。如果能够处理该服务,则服务代理512执行该服务并将其结果返回给调用部分的VPU侧的VPU运行时间环境502(步骤S113和S114)。如果不能,则服务代理512确定是否存在一个能够执行该服务的服务程序作为MPU 11上的一个可执行程序被注册(步骤S114)。如果该服务程序已被注册,则服务代理512执行该服务程序,并将其结果返回给调用的部分的VPU侧的VPU运行环境502(步骤S116和S114)。如果没有,则服务代理512将一个错误返回给调用部分的VPU侧的VPU运行环境502(步骤S117)。
结果回复给从由各个VPU 12执行的程序发出的某些服务请求,并且没有结果回复给其他服务请求。回复的目标通常是一个发出服务请求的线程;但是,另一个线程、一个线程群组或一个进程可以被指定为回复的目标。因此希望目标被包括在请求服务的消息中。可用一个广泛使用的对象请求代理来实现服务代理512。
实时操作根据本实施方式的计算机系统用作一个实时处理系统。由实时处理系统执行的操作大体上分为以下三种类型
1.硬实时操作2.软实时操作3.尽力操作(非实时操作)硬和软实时操作是所谓的实时操作。本实施方式的实时处理系统具有与多个现有的OS相同的线程和进程概念。首先将说明实时处理系统中的线程和进程。
线程具有以下三类1.硬实时类时间要求非常重要。此线程类是用于那种当要求没被满足时,会引起非常危险的情况的重要应用。
2.软实时类此线程类是用于那种即使时间要求没被满足质量也只是降低的应用。
3.尽力类此线程类是用于一个不包括时间要求的应用。
在本实施方式中,线程是实时操作的一个执行单位。线程具有其相关程序,这些程序将被线程执行。每个线程保存其固有的信息,称为一个线程环境。线程环境包括,例如,一个栈的信息以及存储在处理器寄存器中的值。
在实时处理系统中,有两个不同的线程MPU和VPU线程。这两个线程是按执行线程的处理器(MPU 11和VPU 12)分类的,它们的模型是彼此相同的。VPU线程的线程环境包括VPU 12的本地存储32的内容,以及存储器控制器33的DMA控制器的条件。
一组线程被称为一个线程群组。线程群组具有有效并且容易执行一个例如赋予群组的线程相同属性的操作的优点。硬或软实时类中的线程群组大体上分为一个紧密耦合线程群组和一个松散耦合线程群组。紧密耦合线程群组和松散耦合线程群组是通过添加到线程群组的属性信息(耦合属性信息)来彼此区别的。线程群组的耦合属性可由应用程序或上述结构描述中的代码明确指定。
紧密耦合线程群组是一个由彼此协作运行的线程组成的线程群组。换句话说,属于紧密耦合线程群组的线程彼此紧密协作。紧密协作是指诸如线程间的频繁通信和同步或者为减少等待时间的交互作用。属于同一紧密耦合线程群组的线程总是同时被执行。另一方面,松散耦合线程群组是除了属于该群组的线程之间的紧密协作的线程群组。属于松散耦合线程群组的线程执行用于通过存储器14上的缓冲器传输数据的通信。
紧密耦合线程群组如图25所示,不同的VPU被分配紧密耦合线程群组的线程,这些线程被同时执行。这些线程被称为紧密耦合线程。紧密耦合线程的执行期在其各自的VPU中预订,并且紧密耦合线程被同时执行。在图25中,一个紧密耦合线程群组包括两个紧密耦合线程A和B,并且线程A和B分别被VPU0和VPU1同时执行。本实施方式的实时处理系统确保线程A和B被不同的VPU同时执行。一个线程可通过执行另一线程的VPU的本地存储或控制寄存器与另一线程通信。
图26描述了线程A和B之间的通信,该通信是通过分别执行线程A和线程B的VPU0和VPU1的本地存储执行的。在执行线程A的VPU0中,对应于执行线程B的VPU1的本地存储32的一个RA空间被映射在线程A的一个EA空间中的一部分。为进行此映射,VPU0的存储器控制器33中提供的一个地址翻译单元331使用一个段表和页表执行地址翻译。地址翻译单元331将线程A的EA空间的一部分转换(翻译)为对应于VPU1的本地存储32的RA空间,从而将对应于VPU1的本地存储32的RA空间映射在线程A的EA空间的一部分中。
在执行线程B的VPU1中,对应于执行线程A的VPU0的本地存储32的一个RA空间被映射在线程B的一个EA空间中。为进行此映射,VPU1的存储器控制器33中提供的一个地址翻译单元331使用一个段表和页表执行地址翻译。地址翻译单元331将线程B的EA空间的一部分转换(翻译)为对应于VPU0的本地存储32的RA空间,从而将对应于VPU 0的本地存储32的RA空间映射在线程B的EA空间的一部分中。
图27显示了将执行线程B的VPU1的本地存储(LS1)32映射到由VPU0执行的线程A的EA空间中,以及将执行线程A的VPU0的本地存储(LS0)32映射到由VPU1执行的线程B的EA空间中。例如,当要传输到线程B的数据在本地存储LS0中准备好时,线程A在VPU0的本地存储LS0或执行线程B的VPU1的本地存储LS1中设置一个标记,表示此准备好状态。线程B响应该标记的设置,从本地存储LS0读取数据。
根据上述本实施方式,紧密耦合线程可由耦合属性信息指定,并且紧密耦合线程A和B一定分别由不同的VPU同时执行。从而,线程A和B之间的通信和同步的交互作用可在无延迟的情况下更紧密地被执行。
松散耦合线程群组属于松散耦合线程群组的每个线程的执行期取决于线程之间的输入/输出的关系。即使线程不受执行顺序的限制,也不保证它们被同时执行。属于松散耦合线程群组的线程被称为松散耦合线程。图28显示了一个松散耦合线程群组,它包括两个松散耦合线程线程C和D,这两个线程由各自的VPU0和VPU1执行。如图28所示,线程C和D的执行期不同。线程C和D之间的通信是由主存储器14中准备的缓冲器实现的,如图29所示。由VPU0执行的线程C将准备在本地存储LS0中的数据通过DAM传输写入在主存储器14上准备的缓冲器。VPU1执行的线程D从主存储器14上的缓冲器读取数据,并在线程D开始运行时通过DMA传输将其写入本地存储LS1。
进程和线程如图30所示,一个进程包括一个地址空间和一个或多个线程。线程可被包括在进程中,不论其数目和类型为何。例如,进程中可只包括VPU线程,也可包括VPU和MPU线程的混合。正如一个线程保存一个线程环境作为其固有信息那样,一个进程保存一个进程环境作为其固有信息。进程环境包括进程固有的一个地址空间以及包括在进程中的所有线程的线程环境。地址空间可在进程的所有线程之间共享。一个进程可包括多个线程群组,但是一个线程群组不能属于多个进程。从而,属于一个进程的一个线程群组是该进程所固有的。
在本实施方式的实时处理系统中,有两种模型作为创建一个新线程的方法一个线程优先模型和一个地址空间优先模型。地址空间优先模型与现有OS中采用的相同,从而可被应用到MPU和VPU线程。另一方面,线程优先模型只能被用到VPU线程,并且是本实施方式的实时处理系统所特有的。在线程优先模型中,现有的线程(它是用于创建一个新线程的线程,即新线程的一个父线程)首先指定将被一个新线程执行的一个程序,并且使得新线程开始执行该程序。然后该程序被存储在VPU的本地存储中,并且从一个指定的地址开始运行。由于此时没有地址空间与新线程相关联,因此新线程可获得对VPU的本地存储而不是存储器14的访问权限。此后,当需要时,新线程本身调用VPU运行环境的一个服务,并创建一个地址空间。地址空间与新线程相关联,并且新的线程可获得对存储器14的访问权限。在地址空间优先模型中,现有的线程创建一个新的地址空间或指定现有的地址空间,并且在地址空间中安排要被新线程执行的程序。然后,新线程开始运行程序。线程优先模型的优点是一个线程只能被本地存储执行,因而减少了生成、分派和退出线程所需的开销。
对线程进行时序安排现将参考图31中的流程图说明由VPU运行环境401执行的一个时序安排操作。VPU运行环境401中的时序安排器根据添加到每个将被进行时序安排的线程群组的耦合属性信息来检查线程之间的耦合属性(步骤S121)。时序安排器确定每个线程群组是一个紧密耦合线程群组还是一个松散耦合线程群组(步骤S122)。参考程序代码中的线程描述或以上结构描述117中的线程参数来检查耦合属性。如果紧密和松散耦合线程群组被各自指定,则要对其进行时序安排的线程被分成紧密和松散耦合线程群组。
属于紧密耦合线程群组的线程的时序安排如下执行。为了由其各自的VPU同时执行从将被时序安排的线程中选出的一个紧密耦合线程群组的线程,VPU运行环境401中的时序安排器为每个VPU预订一个运行期,VPU的数目等于线程数目,并且同时将线程分派给VPU(步骤S123)。时序安排器使用执行某个线程的VPU中的地址翻译单元331将一个RA空间映射到该线程的EA空间的一部分(步骤S124),该RA空间对应于执行与前述线程交互作用的一个伙伴线程的VPU的本地存储。对于从要被时序安排的线程中选出的属于松散耦合线程群组的线程,时序安排器根据线程之间的输入/输出的关系按顺序将线程分派给一个或多个VPU(步骤S125)。
如果根据耦合属性信息选择了一个紧密耦合线程群组,即彼此协作运行的线程的一个集合,则可确保属于紧密耦合线程群组的线程被不同的处理器同时执行。因此,线程之间的通信可通过彼此获得对执行其伙伴线程的处理器的寄存器的直接访问权限的一个易实现的机制实现。从而可容易并迅速地执行通信。
线程的状态转换一个线程一般进行从其被创建直至其被删除的一个状态转换。如图32所示,一个线程进行以下七个状态转换。
1.不存在状态此状态是逻辑的,并且不存在于一个有效的线程中。
2.休眠状态一个线程被创建并且尚未开始运行。
3.准备好状态线程准备好开始运行。
4.等待状态线程等待条件以符合开始(重新开始)运行。
5.运行状态线程在VPU或MPU上实际运行。
6.暂停状态线程被VPU运行环境和其他线程强制暂停。
7.等待-暂停状态等待和暂停状态彼此重叠。
以上七个状态之间的转换条件和转换涉及的线程环境如下。
此转换是通过创建一个线程完成的。
一个线程环境被创建,但其内容处于初始状态。
此转换是通过删除一个线程完成的。
如果线程被设置为存储其线程环境,则存储的线程环境被转换丢弃。
此转换在线程请求运行环境对线程进行时序安排时完成。
此转换在线程等待的一个事件(例如,同步、通信、计时器中断)被生成时完成。
此转换在线程被运行环境分派给MPU或VPU时完成。
线程环境被加载。当线程环境被保存时,它被恢复。
此转换在线程的运行被先占时完成。
此转换在线程暂停其自身的运行以等待一个使用同步机制、通信机制等的事件时完成。
每个类中的线程可被设置为存储其线程环境。当一个线程被设置为存储其线程环境时,当线程从运行状态转换到等待状态时,线程环境被运行环境保存。被保存的线程环境被一直保存,除非线程转换到休眠状态,并且在线程转换到运行状态时被恢复。
此转换在响应来自运行环境或其他线程的指令强制暂停线程的运行时完成。
每个类中的线程可被设置为存储其线程环境。当一个线程被设置为存储其线程环境时,当线程从运行状态转换到暂停状态时,线程环境被运行环境保存。被保存的线程环境被一直保存,除非线程转换到休眠状态,并且在线程转换到运行状态时被恢复。
此转换在线程本身退出其自己的运行时完成。
当线程被设置为存储其线程环境时,线程环境的内容被转换丢弃。
此转换在线程在等待状态中等待生成一个事件时被来自外部的指令强制停止时完成。
此转换在线程处于等待-暂停状态时被来自外部的指令重新开始运行时完成。
此转换在线程在等待状态中等待的事件被生成时完成。
此转换在线程被来自外部的指令重新开始运行时完成。
此转换在线程被外部环境停止运行时完成。
线程的执行期向一个VPU分配的一个线程的运行状态的期间被称为一个执行期。一般地,从一个线程的创建到删除的一个期间包括线程的多个执行期。图33显示了从创建到删除的不同的线程状态的一个例子。此例子包括线程存在期间的两个执行期。可使用不同的方法保存和恢复线程环境。多数正常的线程运行,使得在一个执行期结束时保存一个环境,并且在下一个执行期开始时恢复该环境。在一个特定的周期性操作中,线程运行使得在每个周期中,在一个执行期开始时创建一个新的环境,在该执行期期间使用该环境,并且在该执行期结束时丢弃该环境。
属于紧密耦合线程群组的线程的执行期图34显示了属于同一个紧密耦合线程群组的线程的执行期。所有属于一个特定的紧密耦合线程群组的线程由VPU运行环境401进行时序安排,以便它们能在一个执行期中同时运行。此紧密耦合线程群组主要用于硬实时线程。因此,为实现该操作,当为硬实时类预订了一个执行期时,VPU运行环境401指定同时使用的处理器及其数目。此外,VPU运行环境401使得与处理器对应的线程的环境各自同时运行。
属于一个特定的执行期中的紧密耦合线程群组的线程,可通过取消其紧密耦合关系在其它执行期中彼此分离地运行。每个线程必须认识到它是作为一个紧密耦合线程运行或是与另一线程分开运行的,并且执行一个与其伙伴线程通信和同步的操作。每个线程具有一个属性,指示是可被先占的或不可被先占的。可被先占的属性允许线程在其执行期被先占,即允许线程停止运行。不可先占的属性确保一个线程在其执行期不能被先占。不同线程类的不能被先占属性的意义不同。在硬实时类中,当一个线程开始运行时,直到其执行期结束,除线程本身外没有什么能停止运行。在软实时类中,可被先占性是基本的,从而不支持不可被先占的属性。在尽力类型中,一个线程可被保护,以便不被其它尽力类先占,但它可被一个诸如硬实时类和软实时类的更高级别的类先占。
线程的执行模型线程的执行模型大体上可分为两个模型一个如图35所示的周期性执行模型和一个如图36所示的非周期性执行模型。在周期性执行模型中,一个线程被周期性地执行。在非周期性运行模型中,一个线程是根据一个事件执行的。周期性执行模型可用一个软件中断或一个诸如同步基元(primitive)的事件对象实现。在硬实时类中,周期性执行模型是用一个软件中断实现的。换句话说,VPU运行环境401按时序跳转到由一个指定的方法确定的线程的入口点以开始周期操作,或者调用由一个指定程序预先注册的一个回调函数。在软实时类中,周期性模型是用一个事件对象实现的。换句话说,由于VPU运行环境401在每个周期中通知一个预先注册的事件对象的生成,因此一个软实时线程等待每个周期中的一个事件对象,并且在生成事件时执行一个指定的操作,从而实现一个周期性的执行模型。在尽力类中,周期性的执行模型可用一个软件中断或一个事件对象中的任何一个实现。实际执行不总在每个周期开始时开始,而是可在有限范围内延迟。
通过使用一个事件模型,非周期性的执行模型可被实现为周期性的执行模型。在软实时类和尽力类中,非周期执行模型与周期性执行模型的区别仅在于一个事件被通知的时间,并且这些模型在实现方法上是相同的。在硬实时类中,对于确保时间要求所必需的最小到达间隔时间和绝限强烈限制着系统的操作;因此,非周期性的执行是受限的。
环境转换在根据本实施方式的实时处理系统中,可选择在一个VPU线程的执行期结束时转换一个环境的方法。由于转换环境的花费是非常高的,因此选择一种方法提高了转换效率。被选中的方法用在一个线程的预订的执行期结束时。当在执行期期间或在先占时转换环境时,在任何情况下,当前线程的所有环境均需要被保存,并且在线程下次重新开始运行时被恢复。例如,有以下转换一个VPU环境的方法。
1.丢弃环境不保存环境。
2.完全保存环境保存一个VPU的所有环境,包括VPU的寄存器和本地存储的状态,以及存储器控制器中的DMA控制器的状态。
3.适度保存环境环境转换被延迟,直到VPU的存储器控制器的DMA控制器的所有操作均完成。此后,VPU中的寄存器和本地存储的内容被保存。在此方法中,VPU的所有环境和完全保存均被保存。
可实现一个时序安排器对MPU和VPU线程进行时序安排,也可完成不同的时序安排器以对其各自的MPU和VPU线程进行时序安排。由于MPU和VPU线程转换环境花费不同,因此实现不同的时序安排变得更加有效。
硬实时类中的时序安排硬实时类中的线程的时序安排是用一个扩展的任务图的预订图执行的。图37显示了任务图的一个例子。任务图表示了任务之间的一个关系。在图37中,任务之间的箭头表示任务的依存关系(任务之间的输入/输出的关系)。根据图37的例子,任务1和2可随意开始运行,一个任务3只能在任务1和2均停止运行后才能开始运行,而任务4和5只能在任务3停止运行后才能开始运行。任务图没有环境的概念。例如,当应该使用相同的环境处理任务1和4时,不能在任务图中描述这一点。因此以下扩展任务表的预订表被用于本实施方式的实时处理系统中。
首先,考虑任务图不是任务之间而是执行期之间的一个关系。通过将一个环境关联到每个执行期,对应于环境的一个线程在执行期中运行。如果相同的环境被关联到多个执行期,则其对应的线程在每个执行期中运行。在图38所示的例子中,线程1的环境被关联到执行期1和2,并且线程1在执行期1和2中的每一个中运行。一个指示由运行环境确保的硬实时限制的属性被添加到图52的执行期之间的每个箭头上。通过这样创建的一个预订表,可在不修改实时应用的模型的情况下描述操作模型和诸如对一个实时应用的时间要求的限制。图39显示了根据图38所示的图创建的预订图的一个例子。图39中的环境1、2和3分别对应于图38中的线程1、2和3。
软实时类的时序安排软实时类中的线程的时序安排是用一个固定优先级的时序安排方法来执行的,以便能够预测线程的运行模式。为时序安排方法准备了两个不同的时序安排算法一个是固定优先级的FIFO时序安排,而另一个固定优先级的循环时序安排。为了优先执行一个较高优先级的线程,即使当一个较低优先级的线程在运行时,较低优先级的线程也被先占,并且较高优先级的线程立即开始运行。为了避免在一个关键部分中出现优先级颠倒问题,需要执行一个同步机制,例如一个优先级继承协议和一个优先级上限协议。
尽力类中的时序安排尽力类中的线程的时序安排是用动态优先级时序安排或者类似的时序安排执行的。
分级时序安排器VPU运行环境401中的时序安排功能可由如图40所示的一个分级时序安排器实现。换句话说,线程级的时序安排具有两个等级线程类之间的时序安排和线程类之内的时序安排。从而,VPU运行环境401中的时序安排器具有一个线程类之内的时序安排部件601和一个线程类之间的时序安排部件602。线程类之间的时序安排部件602为分布在不同线程类的线程进行时序安排。线程类之内的时序安排部件601对属于每个线程类的线程进行时序安排。部件601包括一个硬实时(硬RT)类时序安排部件611、一个软实时(软RT)类时序安排部件612和一个尽力类时序安排部件613。
线程类之间的时序安排和线程类之内的时序安排具有一个分级结构。首先,线程类之间的时序安排运行,以确定执行哪个线程类,然后确定执行线程类中的哪个线程。线程类之间的时序安排采用可先占的固定优先级时序安排。硬实时类具有最高优先级,接下来按顺序是软实时类和尽力类。当一个较高优先级类中的一个线程准备好运行时,一个最低优先级的线程被先占。线程类之间的同步是由一个由VPU运行环境401提供的同步基元(primitive)实现的。尤其地,只有基元能被用于一个硬实时线程中以防止在硬实时线程中发生阻塞。当一个尽力线程阻塞一个软实时线程时,它被当作一个软实时线程处理,以防止发生线程类之间的优先级颠倒。此外,例如,优先级继承协议的使用防止另一个软实时线程阻塞该尽力线程。
线程参数在根据本实施方式的实时处理系统中,是用多种参数对线程进行时序安排的。各类中的线程公共的参数如下线程类(硬实时、软实时、尽力);使用资源(MPU或VPU的数目、带宽、物理存储器大小、I/O设备);优先级;以及可被先占的或不可被先占的。
以下是硬实时类中的线程的参数执行期;绝限;周期或最小到达间隔时间;以及VPU环境转换方法。
图41显示了硬实时类的基本参数的例子。在图41的上部分所示的指定一个执行期的例1中,在指定的执行期中同时预订了一个MPU和两个VPU,并且每个VPU的环境被完全保存。在此情况中,线程在三个处理器上同时运行,并且在执行期之后,VPU线程的环境以及MPU线程的环境被完全保存。在图55的右上角,例2显示了一种方法,它指定一个绝限以确保由VPU的数目及其执行期所表示的一个操作在绝限之前执行。绝限是在做出一个预订请求时由在请求时间处开始的相对时间指定的。在图41的下部分,例3显示了一种指定一个周期性执行的方法。在此例中,指定两个VPU 12的执行期被周期性地重复,并且VPU线程的环境在每个周期的执行期之后被丢弃,使得所有操作由新的环境执行。此外,绝限是由在周期开始处开始的相对时间指定的。
例如,有以下限制作为其他参数用于硬实时类中时间限制(绝对时间限制和相对时间限制);优先顺序(precedence)限制;以及互斥限制。
时间限制提供了延迟执行时间的一个单位。绝对时间限制是指定相对于静止时间(例如一个周期的开始时间)的延迟时间的一种情况,如图42所示。相对时间限制是指定相对于动态时间和一个事件(例如一个特定的开始时间和结束时间)的允许的延迟时间的一种情况,如图43所示。由于优先顺序限制可通过用相对时间限制指定相对于一个特定执行期的结束时间的延迟时间为0或更长来实现,因此它可被视为一个特殊的相对时间限制。
互斥限制是确保执行期彼此不重叠的一种情况,如图44所示。互斥限制使得能够减少执行期的不可预计性,这是由一个锁定引起的。即防止了共用某些资源的所有线程同时运行,以便避免对资源的锁定。
线程的同步机制在根据本实施方式的实时处理系统中,以下同步基元被用作线程的同步机制旗语;消息队列;消息缓冲器;事件标记;屏障;以及互斥体。
可使用其他同步基元。本实施方式的实时处理系统提供以下三种方法来实现以上同步机制同步机制在一个VPU的存储器(主存储)14或本地存储32上用一个诸如一个TEST&SET的指令实现;同步机制由诸如一个邮箱和一个信号寄存器的硬件机制实现;以及同频机制用作为VPU运行环境提供的一个服务机制实现。
由于同步机制具有优点和缺点,因此需要根据线程的属性选择性地使用它们,如图45所示。换句话说,一个用由MPU和VPU共享和访问的存储器(主存储MS)14实现的同步机制可用于所有类中的线程。相反,一个实现在一个VPU 12的本地存储LS上的同步机制只能被属于紧密耦合线程群组的线程使用。这是因为只有属于紧密耦合线程群组的线程确保其同步的伙伴线程同时运行。例如,如果一个属于紧密耦合线程群组的线程被用于实现在执行其伙伴线程的一个VPU的本地存储上的同步机制,则当使用同步机制时确保了其伙伴线程的执行。从而,执行伙伴线程的VPU的本地存储始终存储同步机制的信息。
使用单元而不是存储器(主存储MS)和本地存储LS的同步机制可由一个硬件机制或者VPU运行环境401的一个服务实现。由于属于紧密耦合线程或硬实时类中的线程要求高速同步机制,因此需要在线程中使用由硬件机制实现的同步机制。相反,由运行环境提供的同步机制需要用在属于松散耦合线程群组的线程中或属于软实时类和尽力类的线程中。
同步机制的自动选择在根据本实施方式的实时处理系统中,可根据线程的属性和状态自动选择或转换以上同步机制。此操作由如图46所示的一个程序执行。当同步的线程属于紧密耦合线程群组中(步骤S201中的“是”),采用由存储器14、每个VPU12的本地存储32或硬件机制实现的一个高速同步机制(步骤S202、S203、S204、S205)。当线程改变状态以取消其紧密耦合关系时(步骤S201中的“否”),则高速同步机制被转换为实现在存储器14上的同步机制或VPU运行环境401的服务的一个同步机制(步骤S206、S207、S208)。
以上转换可以一个库的形式或者作为每个VPU12中的VPU运行环境502中的一个服务提供给运行在VPU12上的程序。多个同步机制可如下转换。可预先取得并且选择性地使用同步机制,或者在执行转换时取得新的同步机制。
对于一个使用VPU12的本地存储的同步机制,线程需要像属于紧密耦合线程群组的线程那样被VPU同时执行。此限制可以如下放松。当一个线程未在运行时,本地存储的内容在线程最后运行时被存储在存储器14中,并且控制映射使得存储的内容由指示本地存储的页表或段表的条目指示。根据此方法,当伙伴线程未在运行时,线程可继续运行,好像有一个与伙伴线程关联的本地存储一样。当通过向线程分配一个VPU 12使之开始运行时,存储器14中的内容被恢复到VPU 12的本地存储,以改变一个对应的页表或段表的映射。使用VPU12的本地存储的备份复本,使用VPU 12的本地存储的同步机制甚至可用于不属于紧密耦合线程群组的线程。
预订47显示了对应于图9所示的数据流动的一个预订图。在图47中,六个框表示执行期。每个框上左上的数字表示要预订的一个执行期的标识。每个框中的符号表示与执行期相关联的一个线程环境的标识符。每个框的右下的数字表示执行期的长度(花费)。连接框的箭头都表示优先顺序限制。换句话说,从一个框指到另一个框的一个箭头表示后一框的执行期中的操作在前一框的执行期的操作完成后开始。从而表示一个执行期的链。每个箭头旁的数字表示由箭头连接的执行期之间的数据传输所用的一个缓冲器的标识,而每个数字旁的值表示一个缓冲器的大小。以下是执行根据图47所示的预订图的操作的程序1至7。
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的线程环境,并将其标识符称为BLEND7.创建一个具有如图48所示的一个数据结构的预订请求,并将其发送给VPU运行环境401以做出一个预订。
根据以上程序1至6中的每一个,如果一个程序被指定为作为一个线程运行,则VPU运行环境401向该程序分配必要的资源以创建一个线程环境。该线程环境的句柄被返回,并且从而被作为一个标识符。
图48显示一个预订请求,它包括写为“缓冲器”的缓冲器数据和写为“任务”的执行期。缓冲器数据用于在存储器14上宣称一个缓冲器,用于执行期之间的数据传输。在缓冲器数据中,“标识”表示缓冲器号,“大小”表示缓冲器大小,“源任务”表示写数据的执行期号,而“目标任务”表示读数据的执行期号。在执行期数据中,“标识”代表执行期号,“类”表示线程类(VPU表示VPU线程以及HRT表示硬实时类。此外,有MPU表示MPU线程,SRT表示软实时类,BST表示尽力类等),“线程环境”表示对应于执行期的线程环境,“花费”表示执行期的长度或花费,“限制”表示基于执行期的多种限制,“输入缓冲器”表示在执行期中读取的缓冲器的标识符的一个列表,而“输出缓冲器”表示执行期中写入的缓冲器的标识符的一个列表。“限制”还可包括表示优先顺序限制的“优先顺序”,表示绝对时间限制的“绝对时间”,表示相对时间限制的“相对时间”以及表示互斥限制的“排斥”。“限制”具有限制的伙伴线程的执行期号的一个列表。
被图48所示的预订请求预订的缓冲器区域被分配给主存储器14,并被VPU运行环境401从中释放出来。缓冲器区域的分配在一个向缓冲器区域写数据的线程开始运行时执行。缓冲器区域的释放在一个从缓冲器区域读数据的线程退出时执行。当线程开始运行时用预订的一个地址、一个变量或一个寄存器来通知线程被分配的缓冲器的地址。在本实施方式的实时处理系统中,当提供如图7所示的程序模块100时,如图8所示的结构描述117从程序模块100被读出,并且根据结构描述117,一个线程环境被以上程序创建,并且如图48所示的预订请求被创建并发布,从而提供了个执行程序模块100的功能。从而使如图7所示的程序模块100所描述的专用硬件的操作被多个处理器的处理软件执行。为要实施的各个硬件创建具有如图7所示的结构的程序模块,然后被一个具有符合本实施方式的实时处理系统的功能的设备执行,使得设备能够如需要的硬件那样被操作。
在提供图48所示的预订请求的同时,VPU运行环境401确定哪个VPU在一个周期中的哪个时间执行各个任务。这就是时序安排。实际上,可同时提供多个预订请求;因此确定操作时间以防止其彼此冲突(防止给定的限制未得到满足)。假设当有如图49所示的两个VPU12时,只做出了图48所示的预订请求,则执行时序安排,以使得VPU 0顺序执行不能并行完成的DEMUX、V-DEC、PROG和BLEND操作,并且在DEMUX操作后,VPU1执行可并行完成的A-DEC和TEXT操作。
软件流水线如果在一个周期内没有足够的时间顺序执行DEMUX、V-DEC、PROG和BLEND操作,则跨多个周期实现软件流水线处理。例如,如图50所示,VPU 0在第一周期中执行DEMUX和V-DEC操作,而VPU 1在第二周期中执行A-DEC、TEXT、PROG和BLEND操作。在第二周期中,VPU 0执行下一帧中的DEMUX和V-DEC操作,这与A-DEC、TEXT、PROG和BLEND操作是并行的。换句话说,如图51所示,流水线处理是这样执行的在VPU 0执行DEMUX和V-DEC操作的同时,VPU 1在接收到来自前一周期中的DEMUX和V-DEC操作的输出时执行A-DEC、TEXT、PROG和BLEND操作。
图52是用于时序安排以实现一个软件流水线操作的程序的流程图。
VPU运行环境401确定是否所有需要顺序执行的线程DEMUX、V-DEC、PROG和BLEND能在一个周期内完成(步骤S401)。
一个周期的长度作为程序模块100的一个执行条件被预设到VPU运行环境401。长度可在结构描述117中明确描述。在步骤S401中,根据线程DEMUX、V-DEC、PROG和BLEND的花费预计这些线程的总执行期。预计的总执行期与一个周期的长度相比较。
如果VPU运行环境401确定线程DEMUX、V-DEC、PROG和BLEND不能在一个周期内执行(步骤S401中的“否”),则它根据线程DEMUX、V-DEC、A-DEC、TEXT、PROG和BLEND的执行顺序将用于执行程序模块100的所有线程DEMUX、V-DEC、A-DEC、TEXT、PROG和BLEND分成两个可顺序执行的群组(以下称为第一和第二线程群组)(步骤S402)。第一线程群组是在第二线程群组之前执行的一个或多个线程的集合,而第二线程群组是在第一线程群组之后执行的一个或多个线程的集合。在本实施方式中,线程DEMUX和V-DEC属于第一线程群组,而线程A-DEC、TEXT、PROG和BLEND属于第二线程群组,以满足线程之间的优先顺序限制,并且使得群组中每个线程的总执行期不长于对应于一个周期的时间间隔。
VPU运行环境401执行时序安排操作,以便周期性地将属于第一线程群组的每个线程(DEMUX和V-DEC)的执行期分配给VPU0,使得VPU0以1/60秒的时间间隔周期性地执行第一线程群组(步骤S403)。在步骤S403中,每个线程DEMUX和V-DEC的周期性的执行是为VPU0预订的。然后,VPU运行环境401执行时序安排操作,以便周期性地将属于第二线程群组的每个线程(A-DEC、TEXT、PROG和BLEND)分配给VPU1,使得VPU1以相对于第一线程群组一个周期的延迟以1/60秒的时间间隔周期性地执行第二线程群组(步骤S404)。在步骤S404中,每个线程A-DEC、TEXT、PROG和BLEND的周期性的执行是为VPU1预订的。
两个处理器VPU0和VPU1以流水线模式处理第一线程群组(DEMUX和V-DEC)和第二线程群组(A-DEC、TEXT、PROG和BLEND)。因此,在第二线程群组相对于第一线程群组延迟一个周期的同时,第一线程群组和第二线程群组被并行执行,从而每个1/60秒的周期输出帧数据的处理结果。
在以上例子中,VPU0始终执行第一线程群组(DEMUX和V-DEC),而VPU1始终执行第二线程群组(A-DEC、TEXT、PROG和BLEND)。但是,如图53所示,可执行时序安排,以便周期性地替换第一线程群组所分配的一个处理器和第二线程群组所分配的一个处理器。
考虑缓冲器数目的时序安排当一个缓冲器被用于运行在一个执行期中的一个线程和运行在另一执行期中的一个线程之间传输数据时,从写数据侧的执行期开始直到读数据侧的执行期结束,缓冲器被占用。例如,如图54所示,当存储器14(主存储)上的一个缓冲器被用于在执行期A和B之间传输数据时,从执行期A的开始到执行期B的结束它被占用。因此,当一个缓冲器被用于从执行期A到执行期B传输数据时,并且执行期A和B属于软件流水线处理中彼此相邻的周期时,缓冲器的数目根据执行期A和B中的执行时间变化。例如,如图55所示,当对线程进行时序安排,以使得每个周期中它们在执行期A中比在执行期B中早运行,则数据从执行期An(An表示周期n中的执行期A)传输到下一周期的执行期Bn,并且数据从执行期An+1传输到下一周期中的执行期Bn+1。由于执行期An+1介于An和Bn之间,因此用于从An至Bn传输数据的缓冲器不能用于从An+1至Bn+1传输数据,而是必须使用一个新的缓冲器。换句话说,需要两个缓冲器。另一方面,如图56所示,当对线程进行时序安排,使得在一个周期中在执行期B结束后它们才开始在执行期A中运行,则在执行期An中写入一个缓冲器的数据在执行期Bn中从缓冲器读出。然后,在执行期An+1中数据写入同一缓冲器,并在执行期Bn+1中从中读出。即,只需使用一个缓冲器。
在根据本实施方式的实时处理系统中,VPU运行环境401中的时序安排器对执行期进行时序安排,使其被预订,以便缓冲器存储器区域的使用量变得尽量小。更具体地,为执行两个VPU 0和1的软件流水线处理,VPU运行环境401中的时序安排器将一个操作分成两个部分操作(一个由VPU 0首先执行,另一个由VPU 1接下来执行),如图57中的流程图所示(步骤S211)。然后,时序安排器提取通过缓冲器在两个VPU之间的输入/输出数据的线程(部分操作中的线程A先被执行,部分操作中的线程B接下来被执行)。线程A和B被进行时序安排,以使得每个周期中线程A在线程B的执行期结束后开始运行(步骤S213)。
从而线程B的执行期可以介于线程A对应于两个连续周期的两个执行期之间。
图58显示了考虑缓冲器数目执行的时序安排的一个特定例子。如上所述,第一线程群组中的线程DEMUX是一个向一个缓冲器写入数据的线程,这些数据将被传输到第二线程群组的A-DEC。为了在线程DEMUX和A-DEC之间用一个缓冲器传输数据,在图58的例子中,每个线程A-DEC和DEMUX的执行开始时间被控制为使得每个周期中线程DEMUX在线程A-DEC完成运行后开始运行。VPU运行环境401在周期1中线程DEMUX开始运行时预订存储器14上的一个缓冲器区域1,并且当在下一周期2中线程A-DEC完成运行时释放该缓冲器区域。然后,VPU运行环境401在周期2中线程DEMUX开始运行时预订存储器14上的缓冲器区域1,并且当在下一周期3中线程A-DEC完成运行时释放该缓冲器区域。
具有分层结构的预订图虽然图47所示的预订图不具有分层结构,但也可以使用一个具有分层结构的预订图,如图59所示。在图59中,执行期A先于执行期B,而执行期B先于执行期C。在执行期B中,执行期D先于执行期E和F。解析此分层结构可得,执行期A先于执行期D,而执行期E和F先于执行期C。
考虑紧密耦合线程群组做出的预订请求在图47所示的预订图中,当执行V-DEC的一个线程和执行PROG的一个线程属于紧密耦合线程群组时,创建一个表示紧密耦合属性的预订请求,如图60所示。在此预订请求中,“紧密耦合”表示对应于伙伴线程的执行期的一个ID。因此以上线程如图61所示被进行时序安排,以便它们能被不同的VPU同时执行。在此情况下,线程可通过一个本地存储彼此通信,因此存储器14上不需要提供缓冲器。
基于结构描述的时序安排算法以下说明了一个用于根据包含在程序模块中的结构描述预订每个线程的执行期的程序。
图8显示了包含在图7所示的程序模块100中的结构描述117的一个例子。利用结构描述117,VPU运行环境401执行以下步骤。
1.写在结构描述117的模块域中的程序被加载以生成执行程序的线程。
在本实施方式中,为结构描述117的每个条目生成一个线程。如果结构描述117包括具有相同模块名称的多个条目,则生成执行相同模块的多个线程,以便对应于其各自的条目。在图8的例子中,所有的线程被生成以属于一个进程;但是,线程可属于不同的进程,或者线程群组可属于不同的进程。
2.根据结构描述117的信息创建具有如图48所示的数据结构的预订请求。
3.预订请求被发送给VPU运行环境,以便对线程进行时序安排,并且开始运行线程。
以上创建预订请求的步骤2按以下方式执行。
首先,“缓冲器”记录被创建以便一对一地对应于结构描述117的输出域,并且被添加到预订请求。例如,在图8的例子中,DEMUX模块的第二输出数据通过一个1MB的缓冲器被提供给V-DEC,以使得如图48所示的一个标识符为2的“缓冲器”记录被创建。在此“缓冲器”记录中,缓冲器大小在“大小”域中被描述为1MB,标识为1并且对应于向缓冲器写数据的一个DEMUX模块的“任务”记录的参照在“源任务”域中描述,标识为3并且对应于从缓冲器读数据的一个V-DEC模块的“任务”记录的参照在“目标任务”域中描述。
然后,“任务”记录被创建以一对一地对应于结构描述117的模块域,并且被添加到预订请求。例如,在图8的例子中,如图48所示的一个标识为3的“任务”记录被创建为对应于V-DEC模块。此“任务”记录具有以下信息Class域指示哪个属性被用于执行“任务”记录中指定的一个线程的标记。
在此域中,“VPU”表示一个在VPU上运行的线程,而“HRT”表示硬实时类中的一个线程。这些信息项目是根据图8所示的结构描述117的线程参数中描述的信息设置的。
线程环境域指定一个线程的线程环境,该线程的运行将在“任务”记录中被预订。更具体地,结构描述117的模块域中指定的一个程序模块被加载,一个执行程序模块的线程被VPU运行环境401生成,线程的线程环境的一个标识符(一个指针之类的)被记录在“线程环境”域中。
限制域记录“任务”记录的限制的标记。当限制为优先顺序限制时,该“任务”记录之后的另一个“任务”记录的必需的标识数目被指定在“优先顺序”域之后。例如,一个标识为3的“任务”记录先于一个对应于PROG模块的标识为5的“任务”记录。
输入缓冲器域指定被由“任务”记录指定的线程从中读取数据的一个缓冲器的“缓冲器”记录的必需的标识数目的标记。
输出缓冲器域指定被由“任务”记录指定的线程向其写入数据的一个缓冲器的“缓冲器”记录的必需的标识数目的标记。
如果结构描述按照上述方式被提供,则其对应的预订请求被创建。
当预订请求被发送给VPU运行环境401中的时序安排器时,时序安排器创建一个执行预订请求所必需的时序安排。此时序安排表示哪个VPU在哪个时间被分配给哪个线程,并且在一个周期中VPU被分配多长时间,如图49所示。实际上,时序安排可被图62所示的一个预订列表所表示。
图62所示的预订列表包括与各VPU相关的预订条目。每个预订条目包括一个开始时间域,表示每个周期中一个线程何时被VPU执行(线程的执行开始时间),一个执行期域,表示VPU被分配给线程多长时间(线程的执行期),以及一个运行线程域,表示线程的一个标识符。预订条目按照VPU的开始时间的顺序排序,并被链接到预订列表。
从图48或图60所示的预订请求创建一个如图62所示的预订例的程序可由图63所示的流程图实现。
基本上,预订请求中的“任务”记录只需要按照使用“缓冲器”输入/输出的关系被排序,而VPU的运行时间只需要按照数据流顺序分配给每个“任务”记录。然后需要将VPU同时分配给属于紧密耦合线程群组的任务。
程序如图63所示。在接收到一个预订请求时,VPU运行环境401通过以下步骤对由预订请求中的“任务”记录指定的所有任务进行时序安排(换句话说,VPU运行环境401创建一个预订列表,用于预订每个任务被分配的VPU,以及任务的执行开始时间和执行期)。
步骤S301VPU运行环境401从尚未进行时序安排的任务中选择一个任务,它之前的所有任务(输入任务)已经被进行了时序安排,并且它没有紧密耦合属性。如果一个任务之前没有输入任务,则它被确定为一个输入任务已经被进行了时序安排的任务。
如果有一个任务,其输入任务已经被进行了时序安排,并且它没有紧密耦合属性,则VPU运行环境401选择它并转至步骤S302。如果没有,则转至步骤S304。
步骤S302如果有一个VPU能在符合要求的限制下分配选定的任务的执行开始时间和执行期,则VPU运行环境401转至步骤S303。如果没有,则VPU运行环境401的时序安排失败,并且做出一个失败通知。
步骤S303VPU运行环境401创建选定的任务的预订条目,并且把它们链接到预订列表。
步骤S304VPU运行环境401从尚未被进行时序安排的任务中选择其所有输入任务已经被进行了时序安排,并且属于一个紧密耦合群组的任务。如果任务之前没有输入任务,则它们被确定为输入任务已经被进行了时序安排的任务。
如果有这样任务,其输入任务已经被进行了时序安排,并且属于紧密耦合群组,则VPU运行环境401选择它们并转至步骤S305。如果没有,则结束时序安排。
步骤S305如果有VPU能够同时预订包括在选中的任务中的所有任务(具有相同的执行开始时间和相同的执行期),则VPU运行环境401转至步骤S306。如果没有,则VPU运行环境401的时序安排失败,并且做出一个失败通知。
步骤S306选中的任务集合的所有任务的预订条目被创建,并被链接到预订列表。
已说明了对一个预订请求进行时序安排的步骤。实际上,通常一个系统中会同时出现多个预订请求。在此情况下,可通过上述步骤对预订请求进行时序安排,更有利地是,可通过上述步骤同时完成它们。
现在已经以描述一个数字电视广播接收机的操作的程序模块为例说明了本实施方式。但是,如果准备了描述多种类型的硬件的操作的一个程序描述,则可由软件执行硬件的操作。
图1所示的计算机系统中提供的MPU 11和VPU 12可实现为混合在一个芯片上的并行处理器。在此情况下,同样,由MPU 11执行的VPU运行环境或者由一个特定的VPU执行的VPU运行环境或者类似物可控制VPU 12的时序安排。
软件流水线操作可由三个VPU执行。用于执行一个实时操作的多个链接的任务被分成要顺序处理的第一至三个任务群组。每个任务群组被周期性地分配给至少一个VPU,使得三个VPU以流水线模式周期性地执行三个任务群组。如果VPU1、VPU2和VPU3被使用,则VPU0周期性地执行第一任务群组,VPU1以相对于第一任务群组一个周期的延迟周期性地执行第二任务群组,而VPU2以相对于第二任务群组一个周期的延迟周期性地执行第三任务群组。
多个VPU可并行执行一个任务群组的任务。如果一个任务群组包括多个可并行运行的任务,则多个VPU可并行执行任务群组的任务。
如果作为VPU运行环境运行的程序或者包括VPU运行环境的操作系统的程序被存储在一个计算机可读存储介质中,然后被引入到一个包括多个处理器的计算机中,其中每个处理器包括一个本地存储器,并且在该计算机中执行,则可获得与本发明的前述实施方式相同的优点。
本领域技术熟练者易实现其他优点和修改。因此,在更广泛的方面中的本发明并不限于特定的细节和此处显示和说明的代表性实施方式。因此,可以在不背离附录的权利要求书或其等价物所定义的一般发明概念的精神或范围的情况下做出多种修改。
权利要求
1.一种利用多个处理器(12)周期性地执行一个包括多个被链接的任务的实时操作的方法,该方法的特征在于包括以下步骤根据任务的执行顺序的关系将被链接的任务分成一个第一任务群组和一个第二任务群组,第二任务群组在第一任务群组之后执行;以及执行一个时序安排操作,周期性地将第一任务群组和第二任务群组的每一个分配给至少一个处理器(12),以便以规则的时间间隔周期性地执行第一任务群组,以及以相对于第一任务群组一个周期的延迟以规则的时间间隔周期性地执行第二任务群组。
2.根据权利要求1的方法,其特征在于第一任务群组包括被链接的任务中的一个第一任务,它将要传输给包括在第二任务群组中的被链接的任务中的一个第二任务的数据写入一个缓冲器,并且该方法进一步包括以下步骤在第一任务开始运行时预订由所述多个处理器共享的一个存储器(14)上的缓冲器;以及当第二任务完成运行时释放该缓冲器。
3.根据权利要求1的方法,其特征在于第一任务群组包括被链接的任务中的一个第一任务,它将要传输给包括在第二任务群组中的被链接的任务中的一个第二任务的数据写入一个缓冲器,并且该方法进一步包括如下步骤,控制第一任务和第二任务中每一个的执行开始时间,以使得在每个周期中对应于每个规则的时间间隔并在所述的每个周期中第二任务的执行完成之后开始执行所述第一任务。
4.根据权利要求1的方法,其特征在于分割步骤包括根据任务的执行顺序关系将链接的任务分成第一任务群组、第二任务群组和一个第三任务群组,第三任务群组在第二任务群组之后执行;并且执行步骤包括执行一个时序安排操作,以便周期性地将第一任务群组、第二任务群组和第三任务群组中的每一个分配给至少一个处理器(12),以便以规则的时间间隔周期性地执行第一任务群组,以相对于第一任务群组一个周期的延迟以规则的时间间隔周期性地执行第二任务群组,以及以相对于第二任务群组一个周期的延迟以规则的时间间隔周期性地执行第三任务群组。
5.一种周期性地执行一个包括多个被链接的任务的实时操作的信息处理系统,该系统的特征在于包括多个处理器(12);用于根据任务的执行顺序关系将链接的任务分成一个第一任务群组和一个第二任务群组的装置,第二任务群组在第一任务群组之后执行;以及用于执行一个时序安排操作的装置,该操作周期性地将第一任务群组和第二任务群组的每一个分配给至少一个处理器(12),以便以规则的时间间隔周期性地执行第一任务群组,以及以相对于第一任务群组一个周期的延迟以规则的时间间隔周期性地执行第二任务群组。
6.根据权利要求5的信息处理系统,其特征在于第一任务群组包括链接的任务中的一个第一任务,它将要传输给包括在第二任务群组中的链接的任务中的一个第二任务的数据写入一个缓冲器,并且该系统进一步包括由多个处理器(12)共享的一个缓冲器;用于在第一任务开始运行时预订存储器(14)上的缓冲器的装置;以及用于当第二任务完成运行时释放该缓冲器的装置。
7.根据权利要求5的信息处理系统,其特征在于第一任务群组包括链接的任务中的一个第一任务,它将要传输给包括在第二任务群组中的链接的任务中的一个第二任务的数据写入一个缓冲器,并且该系统进一步包括,用于控制第一任务和第二任务中每一个的执行开始时间,以使得在每个周期中对应于每个规则的时间间隔并在所述的每个周期中第二任务的执行完成之后开始执行所述第一任务。
8.根据权利要求5的信息处理系统,其特征在于分割装置包括用于根据任务的执行顺序关系将链接的任务分成第一任务群组、第二任务群组和一个第三任务群组的装置,第三任务群组在第二任务群组之后执行;以及用于执行时序安排操作的装置包括,用于执行一个时序安排操作,以便周期性地将第一任务群组、第二任务群组和第三任务群组中的每一个分配给至少一个处理器(12),以便以规则的时间间隔周期性地执行第一任务群组,以相对于第一任务群组一个周期的延迟以规则的时间间隔周期性地执行第二任务群组,以及以相对于第二任务群组一个周期的延迟以规则的时间间隔周期性地执行第三任务群组的装置。
9.存储在一个计算机可读介质中并且使一个包括多个处理器(12)的计算机周期性地执行一个包括多个链接的任务的实时操作的程序,该程序的特征在于包括使计算机根据任务的执行顺序关系将链接的任务分成一个第一任务群组和一个第二任务群组,第二任务群组在第一任务群组之后执行;以及使计算机执行一个时序安排操作,周期性地将第一任务群组和第二任务群组的每一个分配给至少一个处理器(12),以便以规则的时间间隔周期性地执行第一任务群组,以及以相对于第一任务群组一个周期的延迟以规则的时间间隔周期性地执行第二任务群组。
10.根据权利要求9的程序,其特征在于第一任务群组包括被链接的任务中的一个第一任务,它将要传输给包括在第二任务群组中的链接的任务中的一个第二任务的数据写入一个缓冲器(1),并且该程序进一步包括使计算机在第一任务开始运行时预订由多个处理器共享的一个存储器(14)上的缓冲器(1);以及使计算机当第二任务完成运行时释放该缓冲器(1)。
11.根据权利要求9的程序,其特征在于第一任务群组包括被链接的任务中的一个第一任务,它将要传输给包括在第二任务群组中的链接的任务中的一个第二任务的数据写入一个缓冲器(1),并且该程序进一步包括,使计算机控制第一任务和第二任务中每一个的执行开始时间,以使得在每个周期中对应于每个规则的时间间隔并在所述的每个周期中第二任务的执行完成之后开始执行所述第一任务。
12.根据权利要求9的程序,其特征在于使计算机根据任务的执行顺序关系将链接的任务分成第一任务群组、第二任务群组和一个第三任务群组,第三任务群组在第二任务群组之后执行;并且使计算机执行一个时序安排操作,以便周期性地将第一任务群组、第二任务群组和第三任务群组中的每一个分配给至少一个处理器(12),以便以规则的时间间隔周期性地执行第一任务群组,以相对于第一任务群组一个周期的延迟以规则的时间间隔周期性地执行第二任务群组,以及以相对于第二任务群组一个周期的延迟以规则的时间间隔周期性地执行第三任务群组。
13.一种周期性地执行一个包括多个链接的任务的实时操作的实时系统,该系统包括多个第一处理器;以及一个第二处理器,它执行一个时序安排操作,用于对多个第一处理器上的被链接的任务进行时序安排,时序安排操作包括一个第一进程,该进程根据任务的执行顺序关系将链接的任务分成一个第一任务群组和一个第二任务群组,第二任务群组在第一任务群组之后执行;以及一个第二进程,该进程周期性地将第一任务群组和第二任务群组的每一个分配给至少一个第一处理器,以便以规则的时间间隔周期性地执行第一任务群组,以及以相对于第一任务群组一个周期的延迟以规则的时间间隔周期性地执行第二任务群组。
14.根据权利要求13的实时系统,其中第一任务群组包括被链接的任务中的一个第一任务,它将要传输给包括在第二任务群组中的链接的任务中的一个第二任务的数据写入一个缓冲器,并且该系统进一步包括一个由多个第一处理器共享的存储器;一个单元,该单元被配置为在第一任务开始运行时预订所述存储器(14)上的缓冲器;以及被配置为当第二任务完成运行时释放该缓冲器。
15.根据权利要求13的实时系统,其中第一任务群组包括链接的任务中的一个第一任务,它将要传输给包括在第二任务群组中的链接的任务中的一个第二任务的数据写入一个缓冲器,并且时序安排操作进一步包括一个第三进程,用于控制第一任务和第二任务中每一个的执行开始时间,以使得在每个周期中对应于每个不变的时间间隔并在所述的每个周期中第二任务的执行完成之后开始执行所述第一任务。
16.根据权利要求13的实时系统,其中第一进程包括一个进程,用于根据任务的执行顺序关系将链接的任务分成第一任务群组、第二任务群组和一个第三任务群组,第三任务群组在第二任务群组之后执行;并且第二进程包括一个进程,用于周期性地将第一任务群组、第二任务群组和第三任务群组中的每一个分配给至少一个第一处理器,以便以规则的时间间隔周期性地执行第一任务群组,以相对于第一任务群组一个周期的延迟以规则的时间间隔周期性地执行第二任务群组,以及以相对于第二任务群组一个周期的延迟以规则的时间间隔周期性地执行第三任务群组。
全文摘要
一个周期性地执行一个包括多个链接的任务的实时操作的实时系统,该系统包括多个处理器(12),一个用于根据任务的执行顺序的关系将链接的任务分成一个第一任务群组和一个第二任务群组的单元,第二任务群组在第一任务群组之后执行;以及一个用于执行一个时序安排操作的单元,该时序安排操作周期性地将第一任务群组和第二任务群组的每一个分配给至少一个第一处理器,以便以不变的时间间隔周期性地执行第一任务群组,以及以相对于第一任务群组一个周期的延迟以不变的时间间隔周期性地执行第二任务群组。
文档编号G06F9/455GK1577278SQ20041005445
公开日2005年2月9日 申请日期2004年7月22日 优先权日2003年7月22日
发明者金井达德, 前田诚司, 矢野浩邦, 吉井谦一郎 申请人:株式会社东芝
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1