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