CN1581023A - 实现实时操作的方法和系统 - Google Patents
实现实时操作的方法和系统 Download PDFInfo
- Publication number
- CN1581023A CN1581023A CNA2004100574958A CN200410057495A CN1581023A CN 1581023 A CN1581023 A CN 1581023A CN A2004100574958 A CNA2004100574958 A CN A2004100574958A CN 200410057495 A CN200410057495 A CN 200410057495A CN 1581023 A CN1581023 A CN 1581023A
- Authority
- CN
- China
- Prior art keywords
- time
- task
- arithmetic speed
- thread
- vpu
- 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
Links
- 238000000034 method Methods 0.000 title claims description 77
- 238000004364 calculation method Methods 0.000 claims description 2
- 230000010365 information processing Effects 0.000 abstract 1
- 238000012545 processing Methods 0.000 description 100
- 238000003860 storage Methods 0.000 description 59
- 230000007246 mechanism Effects 0.000 description 45
- 230000008569 process Effects 0.000 description 40
- 239000000203 mixture Substances 0.000 description 37
- 230000009466 transformation Effects 0.000 description 30
- 239000000872 buffer Substances 0.000 description 26
- 230000006870 function Effects 0.000 description 20
- 230000006854 communication Effects 0.000 description 16
- 238000004891 communication Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 13
- 230000008878 coupling Effects 0.000 description 11
- 238000010168 coupling process Methods 0.000 description 11
- 238000005859 coupling reaction Methods 0.000 description 11
- 230000008901 benefit Effects 0.000 description 9
- 238000013507 mapping Methods 0.000 description 8
- 230000001360 synchronised effect Effects 0.000 description 8
- 238000004321 preservation Methods 0.000 description 7
- 238000006243 chemical reaction Methods 0.000 description 6
- 230000007717 exclusion Effects 0.000 description 6
- 238000011079 streamline operation Methods 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 230000003111 delayed effect Effects 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 230000001788 irregular Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000000717 retained effect Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 238000004134 energy conservation Methods 0.000 description 2
- 238000005265 energy consumption Methods 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 239000007799 cork Substances 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4887—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/324—Power saving characterised by the action undertaken by lowering clock frequency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/325—Power saving in peripheral device
- G06F1/3275—Power saving in memory, e.g. RAM, cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3287—Power saving characterised by the action undertaken by switching off individual functional units in the computer system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/329—Power saving characterised by the action undertaken by task scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3296—Power saving characterised by the action undertaken by lowering the supply or operating voltage
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Power Sources (AREA)
- Multi Processors (AREA)
- Debugging And Monitoring (AREA)
- Executing Machine-Instructions (AREA)
Abstract
一种以特定时间间隔定期执行实时操作的信息处理系统。所述系统包括执行把实时操作分配给一个处理器,以便该处理器以特定时间间隔定期执行实时操作的调度操作的单元;根据特定的时间间隔和关于处理器以第一运算速度执行实时操作所需时间的成本信息,计算处理器以第一运算速度执行实时操作的执行时间与每个特定时间间隔的比值的单元;和执行运算速度控制操作,以低于第一运算速度的第二运算速度运转处理器的单元,根据计算的比值,确定所述第二运算速度。
Description
技术领域
本发明涉及以特定的时间间隔,定期执行实时操作的调度方法和信息处理系统。
背景技术
按照惯例,诸如服务器计算机之类计算机系统利用诸如多处理器和并行处理器之类系统结构,以便提高总处理能力。这两种处理器都通过利用多个处理单元,实现并行计算操作。
日本专利申请KOKAI公开No.10-143380公开一种具有多个处理单元的系统。该系统包括一个高速CPU,多个低速CPU和一个共享存储器。考虑到每个进程的并行性和执行时间,进程被分配给高速CPU和低速CPU。
日本专利申请KOKAI公开No.8-180025公开一种调度线程,以致相同的处理器执行属于相同进程的线程。
不仅计算机系统,而且实时地处理大量数据,例如AV(音频视频)数据的嵌入式设备最近已需要引入诸如多处理器和并行处理器之类系统结构,以便提高总处理能力。
但是,在目前的环境下,几乎未报道基于上述系统结构的实时处理系统。
在实时处理系统中,每个操作需要在许可时间的范围内完成。为了以特定的时间间隔,定期完成包括多个链接任务的组合的实时操作,所有链接任务必需在每个周期的时间间隔内完成。
由于实时处理系统通常被用作嵌入式系统,因此其需慎重考虑的问题是降低能耗。系统中包括的处理单元的数目越大,能耗就越高。当诸如多处理器和并行处理器之类系统结构被应用于实时处理系统时,在给定的时段内完成实时操作的同时,需要一种节省处理器的能量的新机制。
在非实时处理系统中,通常通过降低处理器的运算频率,节省计算机系统的能量。但是,在实时处理系统中,如果运算频率降低,那么在给定的计时限制条件内,不能完成需要执行的操作,从而导致妨害实时操作的问题。
发明内容
本发明的目的是提供一种能够在不影响任何实时操作的情况下,节省处理器能量的方法和信息处理系统。
根据本发明的一个实施例,提供一种以特定的时间间隔,定期执行实时操作的方法,所述方法包括:执行调度操作,把实时操作分配给处理器,以便处理器以特定的时间间隔,定期执行实时操作;根据特定的时间间隔和关于处理器以第一运算速度执行实时操作所需时间的成本信息,计算处理器以第一运算速度执行实时操作的执行时间与每个特定时间间隔的比值;和执行运算速度控制操作,以便以低于第一运算速度的第二运算速度运转处理器,所述第二运算速度根据计算的比值确定。
根据本发明的另一实施例,提供一种利用多个处理器,以特定的时间间隔定期执行包括多个链接任务的实时操作的方法,所述方法包括:根据任务间,任务执行顺序的关系,把链接的任务分成可并行执行的多个任务组;执行调度操作,确定对应于特定时间间隔的时间周期中的每个时间周期中,每个任务组的执行开始计时,和在每个时间周期中执行对应的一个任务组的处理器之一;根据每个任务组的执行开始计时和关于对应一个处理器以第一运算速度执行每个任务组所需时间的成本信息,选择从每个时间周期的开始到每个时间周期中执行时间的结束的时间间隔最长的一个任务组;计算对应于选择的一个任务组的时间间隔与每个特定时间间隔的比值;并执行运算速度控制操作,以便以低于第一运算速度的第二运算速度运转每个处理器,所述第二运算速度根据计算的比值确定。
附图说明
图1是表示根据本发明一个实施例,配置实时处理系统的计算机系统的例子的方框图。
图2是在根据本发明一个实施例的实时处理系统中设置的MPU(主处理单元)和VPU(通用处理单元)的方框图。
图3表示在根据本发明一个实施例的实时处理系统中使用的虚拟地址转换机制的例子。
图4表示在根据本发明一个实施例的实时处理系统中的真实地址空间中映射的数据的例子。
图5表示根据本发明一个实施例的实时处理系统中的有效地址空间,虚拟地址空间和真实地址空间。
图6是数字TV广播用接收器的方框图。
图7表示根据本发明一个实施例的实时处理系统执行的程序模块的例子。
图8是表示包括在图7中所示的程序模块中的结构描述的例子的表格。
图9表示对应于图7中所示程序模块的程序之间的数据的流动。
图10表示由两个VPU执行的图7中所示程序模块的并行操作。
图11表示由两个VPU执行的图7中所示程序模块的流水线操作。
图12是定期执行实时操作的线程的调度表。
图13是基于图12中所示的调度结果,VPU降低运算速度的例子。
图14是表示由根据本发明实施例的实时处理系统执行的节能控制操作的步骤的例子的流程图。
图15是两个VPU定期执行实时操作的线程的调度。
图16是其中基于图15中所示的调度结果,两个VPU降低运算速度的例子。
图17是表示由根据本发明实施例的实时处理系统执行的节能控制操作的步骤的另一例子的流程图。
图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表示四个VPU根据图61中所示的调度结果,降低运算速度。
图63表示在根据本发明实施例的实时处理系统中使用的具有分层结构的预约图的例子。
图64表示由根据本发明实施例的实时处理系统产生的,并且考虑到紧密耦接的线程组的预约请求的例子。
图65表示根据图64中所示的预约请求,根据本发明实施例的实时处理系统执行的调度的例子。
图66表示在根据本发明实施例的实时处理系统中使用的预约列表的例子。
图67是表示在根据本发明实施例的实时处理系统中,预约执行期的程序的流程图。
具体实施方式
下面参考附图,说明本发明的一个实施例。
图1表示用于实现根据本发明实施例的实时处理系统的计算机系统的结构的例子。该计算机系统是按照计时约束,执行需要实时完成的各项操作的信息处理系统。该计算机系统不仅可被用作通用计算机,而且还可被用作各种电子设备用嵌入式系统,以便执行需要实时完成的操作。参见图1,计算机系统包括一个MPU(主处理单元)11,多个VPU(通用处理单元)12,连接设备13,主存储器14和I/O(输入/输出)控制器15。MPU 11、VPU 12、主存储器14和I/O控制器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、VPU12和I/O控制器15共享的存储设备(共享存储器)。主存储器14保存OS和应用程序。I/O控制器15与一个或多个I/O设备16连接。控制器15也被称为桥接设备。
连接设备13具有保证数据传送速率的QoS(服务质量)功能。通过以预约带宽(传送速率)通过连接设备13传送数据,完成QoS功能。当以5Mbps从一个VPU 12向存储器14传送写入数据时,或者当以100Mbps在一个VPU 12和另一VPU 12之间传送写入数据时,使用QoS功能。每个VPU 12指定(预约)连接设备13的带宽(传送速率)。连接设备13依据优先级把指定的带宽分配给VPU 12。如果某一带宽专供某一VPU 12的数据传送之用,那么在该VPU 12的数据传送过程中,即使另一VPU 12,MPU 11或IO控制器15传送大量的数据,也要保证该带宽。对进行实时操作的计算机来说,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中的超高速缓冲存储器。每个VPU 12包括一个处理单元31,一个本地存储器和一个存储器控制器33。处理单元31能够直接访问同一VPU 12中的本地存储器32。存储器控制器33用作在本地存储器32和存储器14之间传送数据的DMA(直接存储器存取)控制器。存储器控制器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或者VPU 12的存储器控制器33观察的地址是如图3的上部中所示的64位地址。在该64位地址中,前36位部分表示段号,中间16位部分表示页号,后面12位部分表示页偏移量。存储器管理单元22和存储器控制器33均包括段表50和页表60。段表50和页表60把该64位地址转换成通过连接设备13实际访问的真实地址空间。
例如,下述数据项被映射到从MPU 11和每个VPU 12观察的真实地址(RA)空间中,如图4中所示。
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能够管理VPU12。例如,MPU 11能够从每个VPU 12的寄存器读取数据,或者把数据写入每个VPU 12的寄存器,以及启动/停止每个VPU 12执行程序。如同VPU 12之间的通信和同步那样,借助诸如邮箱和事件标记之类硬件机构,能够执行MPU 11和每个VPU 12之间的通信和同步。
根据本实施例的计算机系统允许软件实现按照惯例实现的对实时操作提出严格要求的电子设备的操作。例如,一个VPU 12执行和构成电子设备的一些硬件组件对应的计算,同时另一VPU 12执行和构成该电子设备的其它硬件组件对应的计算。
图6简单表示了数字TV广播用接收器的硬件结构。在该接收器中,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的线程被产生,并被分配给一个或多个VPU 12,并在所述VPU 12上执行。对应于分配给VPU 12的线程的程序被装入VPU 12的本地存储器32中,线程执行该本地存储器32上的程序。通过把对应于用于配置数字TV广播用接收器的硬件模块的程序111-116和称为结构描述117的数据包装在一起,获得程序模块100。
结构描述117是表示如何组合和执行程序模块100中的程序(线程)的信息。结构描述117包括表示链接程序111-116之间的输入/输出(链接)关系,以及执行每个程序111-116所需的成本(时间)的信息。图8表示结构描述117的一个例子。
结构描述117表示分别作为一个线程执行的模块(程序模块100中的程序)和它们对应的输入、输出、执行成本,以及输出所需的缓冲器大小。例如,No.(3)的V-DEC程序接收No.(1)的DEMUX程序的输出作为输入,并把它的输出传送给NO.(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。这里假定计算机系统包括两个VPU:VPU0和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进行调度。在调度操作中,根据结构描述117,确定执行程序111-116的每个线程的执行开始计时和执行期限,从而把每个线程分配给一个或多个VPU 12。当要执行程序模块100时,执行下述操作。
1.操作系统从外部存储器或存储器14接收程序模块,并从程序模块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。
如上所述,在实时处理系统中,根据结构描述117,确定程序模块100中,执行链接程序111-116的每个线程(DEMUX、V-DEC、A-DEC、TEXT、PROG和BLEND)的执行开始计时和执行期限。从而,能够在不用程序代码描述每个操作的计时约束条件的情况下,有效地调度实现实时操作的线程。
图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,确定程序模块100中的程序111-116执行多个任务DEMUX、V-DEC、A-DEC、TEXT、PROG和BLEND的顺序。调度程序随后把任务分成第一任务组和第二任务组。第二任务组在第一任务组之后。例如,任务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的运算速度被降至最小。图12表示了关于VPU0定期执行包括三个任务A、B和C的实时操作的调度的例子。在该调度中,按照VPU0以特定的时间间隔,定期执行实时操作的方式,根据表示执行任务所需时间(执行期限)的成本信息和按照任务执行顺序的任务间的关系,关于对应于每个特定时间间隔的每个周期中每个任务A、B和C,确定执行开始计时。调度中考虑到的每个任务的执行期限被应用于VPU0以最大(100%)速度工作的情况。
从周期1中,任务A、B和C的执行期限A1、B1和C1的结束到周期2的开始,VPU0不执行任务操作。该剩余时间被用于降低VPU0的运算速度,而不会影响实时操作。换句话说,VPU0降低运算速度,从而从周期1的开始到任务A、B和C的结束的时期被延长为每个周期的时间间隔,如图13中所示。如果时期T1是周期1的一半,那么执行运算速度控制操作,以便把VPU0的运算速度减半。VPU0以50%的运算速度工作,从而降低能耗。从而通过确保实时操作以特定的时间间隔,定期执行任务A、B和C,能够降低能耗。
下面参考图14中所示的流程图,说明节能控制操作的程序。
步骤S1:操作系统执行调度操作,以特定的时间间隔定期把实时操作分配给VPU0。这种情况下,操作系统对应于每个特定时间间隔的每个周期中,多个任务中每个任务的执行开始计时,以致VPU0以特定的时间间隔,定期执行包括所述任务的实时操作。
步骤2:操作系统根据关于VPU0以最大(100%)运算速度,执行实时操作所需时间的成本信息,计算从每个周期的开始到实时操作的执行期限结束的时间间隔T。如果实时操作开始于每个周期的开始计时,那么时间间隔T和实时操作的执行时间(执行期限)一致。成本信息由前述结构描述117提供。如果实时操作包括多个任务,那么实时操作的执行期限是各个任务的执行期限的总和。从而能够根据结构描述117提供的执行任务的成本,确定实时操作的执行期限。
步骤S3:操作系统计算时间间隔T和对应于一个周期的时间间隔的比值,或者时间间隔T和定义一个周期的特定时间间隔的比值。
步骤S4和S5:操作系统根据在步骤S3中计算的比值,执行运算速度控制操作,以便以低于最大运算速度(100%)的运算速度,操纵VPU0。
在步骤S4中,操作系统确定VPU0的运算速度。根据时间间隔T和对应于一个周期的时间间隔的比值,操作系统确定VPU0的运算速度(时钟频率),以便最迟在下一周期开始之前,完成每个周期中实时操作的执行期限,并把时间间隔T1从每个周期的开始延长到实时操作的执行期限的结束。通过把VPU0的最大速度(100%)乘以计算的比值,能够计算VPU0的运算速度(时钟频率)。如果时间间隔T是对应于一个周期的时间间隔的一半,那么VPU0的可设置的最低速度为其最大速度(100%)的一半(50%)。在步骤S5中,通过连接设备13,操作系统把表示VPU0的时钟频率的命令传送给节能控制器17。控制器17包括控制供给每个VPU的时钟信号的频率的电路,并把供给由来自操作系统的命令指定的VPU的时钟信号的频率设置成该命令指定的频率。从而,VPU0的运算速度被设置成在步骤S4确定的运算速度。从而,慢慢地执行实时操作,时间间隔T被延长到周期间的边界。
节能控制的特征在于通过调度,以确保VPU的更长的剩余时间,能够提高节能效果。从而最好通过把实时操作的任务的执行期限平分给尽可能多的VPU,使一个周期内实时操作的执行期限降至最小。图15表示VPU0和VPU1执行三个链接任务A、B和C的调度例子。现在假定任务A、B和C存在必须在任务B和C之前执行任务A的约束条件。这三个任务A、B和C被分成可在每个周期中并行执行的第一任务组和第二任务组。第一任务组包括任务A和B,第二任务组包括任务C。第一任务组(A、B)被分配给VPU0,从而它可每隔特定的时间被执行,而第二任务组(C)被分配给VPU1,从而它可每隔特定的时间被执行。确定VPU1上任务的执行开始计时,以致VPU1上任务C在VPU0上的任务A之后开始。
从每个周期的开始到完成第一任务组(A、B)的执行的时间间隔T1大于从每个周期的开始到完成第二任务组(C)的执行的时间间隔T2。这种情况下,如图16中所示,VPU0和VPU1以相同的比率降低运算速度,以致时间间隔T1被延长到周期之间的边界。如果时间间隔T1是每个周期的时间间隔的1/3,那么每个VPU0和VPU1的运算速度降低到1/3。由于VPU0和VPU1以33%的运算速度工作,因此它们能够降低能耗。由于它们以相同的比率降低运算速度,因此决不会破坏VPU1上的任务C在VPU0中的任务A之后开始的约束条件。
下面参考图17中所示的流程图,说明对多个VPU执行的实时操作应用的节能控制操作的程序。下面,上述任务被称为线程。
步骤S11:操作系统根据按照任务执行顺序的任务间的关系,把实时操作的多个链接线程分成可并行执行的多个线程组,以便以尽可能短的时间,完成每个周期内的实时操作。假定链接的线程被分成三个线程组,即第一、第二和第三线程组。
步骤S12:操作系统执行调度操作,以便按照对于和特定时间间隔之一对应的每个周期,第一~第三线程组由不同的VPU并行执行的方式,确定每个周期中,第一~第三线程组中每一个的执行开始计时,和执行每个周期中,第一~第三线程组中每一个的VPU。例如,第一线程组被调度,以致第一线程组由VPU0定期执行,第二线程组被调度,以致第二线程组由VPU1定期执行,第三线程组被调度,以致第三线程组由VPU2定期执行。
步骤S13:操作系统根据第一~第三线程组中每一个的执行开始计时,和表示VPU以最大(100%)运算速度,执行第一~第三线程组中的每个线程组所需的时间的成本信息,计算从每个周期的开始到完成每个线程组的时间间隔T。
步骤S14:操作系统从第一~第三线程组中选择每个周期中,执行期限的结束最迟,或者每个周期中,时间间隔T最大的一个线程组。
步骤S15:操作系统计算对应于选择的一个线程组的时间间隔T和对应于一个周期的时间间隔的比值。
步骤S16:操作系统根据计算的比值,确定每个VPU0、VPU1和VPU2执行第一、第二和第三线程组的运算速度(时钟频率)。确定运算速度,以满足最迟在开始下一周期之前,结束选择的一个线程组的执行期限的条件,并且以相同的比率延长从每个周期的开始到结束第一线程组的执行期限的时间间隔,从每个周期的开始到结束第二线程组的执行期限的时间间隔,和从每个周期的开始到结束第三线程组的执行期限的时间间隔。
步骤S17:操作系统把表示VPU0、VPU1和VPU2的时钟频率的命令传送给节能控制器17。控制器17包括控制供给VPU的时钟的频率的电路。控制器17把分别对应于VPU0、VPU1和VPU2的时钟频率设置成由来自操作系统的命令指定的时钟频率。
操作系统
当只有一个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指定的虚拟机资源的计算机上运行,并向客户OS302和303管理的应用程序提供各种服务。在图20的例子中,客户OS 302仿佛在包括一个MPU 11、两个VPU 12和一个存储器14的计算机上运行,客户OS 303仿佛在包括一个MPU 11、四个VPU12和一个存储器14的计算机上运行。虚拟机OS 301管理真实资源中的哪个VPU 12实际对应于从客户OS 302看来的VPU 12,真实资源中的哪个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。图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时,如图23中所示,在OS 201上实现VPU运行时间环境401。VPU运行时间环境401还包括降低每个VPU的运算速度的节能例程。可在OS 201的内核中,或者在用户程序中实现VPU运行时间环境401。它也可被分成用于内核程序和用户程序的两部分,以便彼此协同运行。当一个或多个客户OS在虚拟机OS 301上运行时,提供下述模式,实现VPU运行时间环境401:
1.在虚拟机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中,在它们相应的客户OS 302和303中实现VPU运行时间环境401和402。如果需要,通过利用虚拟机OS 301提供的客户OS之间的通信功能,VPU运行时间环境401和402彼此相结合地运行。
4.在虚拟机OS 301管理的客户OS之一中实现VPU运行时间环境401的模式(图27)。通过利用虚拟机OS 301提供的客户OS之间的通信功能,不具有VPU运行时间环境的客户OS 303利用客户OS 302的VPU运行时间环境401。
上述模式具有下述优点:
模式1的优点
虚拟机OS 301管理的客户OS的调度和VPU的调度可被结合成一个。从而,能够有效并且细致地完成调度,能够有效地利用资源;并且
由于可在多个客户OS之间共享VPU运行时间环境,因此当引入新的客户OS时,不必产生新的VPU运行时间环境。
模式2的优点
由于可在虚拟机OS上的客户OS之间共享VPU的调度程序,因此能够有效并且细致地完成调度,并且能够有效地利用资源;
由于可在多个客户OS之间共享VPU运行时间环境,因此当引入新的客户OS时,不必产生新的VPU运行时间环境;和
由于可在不依赖于虚拟机OS或特定的客户OS的情况下,产生VPU运行时间环境,因此易于使之标准化,并且另一VPU运行时间环境代替。如果产生适用于特定嵌入式设备的VPU运行时间环境,以便利用该设备的特性进行调度,那么能够高效地完成所述调度。
模式3的优点
由于能够在每个客户OS中最佳地实现VPU运行时间环境,因此能够有效并且细致地完成调度,并且能够有效地利用资源。
模式4的优点
由于不必在所有客户OS中实现VPU运行时间环境,因此易于增加新的客户OS。
根据上面所述,显然所有模式1-4可被用于实现VPU运行时间环境。当需要时,也可使用任意其它模式。
服务提供者
在根据本实施例的计算机系统中,VPU运行时间环境401提供各种服务(利用网络的通信功能,输入/输出文件的功能,调用诸如编译码器之类库函数,面接用户,利用I/O设备的输入/输出操作,日期和时间的读取等),以及管理和调度与VPU 12相关的各种资源(每个VPU的操作时间,存储器,连接设备的带宽等)的功能。从在VPU12上运行的应用程序调用这些服务。如果调用简单服务,那么所述简单服务必须由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控制器511根据调度结果,把程序分配给VPU 12。当收到每个VPU 12上的应用程序发出的服务请求时,服务代理程序512调用恰当的服务程序(服务提供者),提供服务。
当收到每个VPU 12上的应用程序发出的服务请求时,VPU方VPU运行时间环境502只处理可在VPU 12中处理的服务,并请求服务代理程序512处理不能在VPU 12中处理的服务。
图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的服务代理程序512处理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.尽力类别
这种线程类别被用于不包括任何计时要求的应用程序。
本实施例中,线程是实时操作的执行单位。线程具有它们的将由线程执行的相关程序。每个线程保持其固有信息,所述固有信息被称为线程语境(context)。线程语境包括,例如堆栈信息和保存在处理器的寄存器中的数值。
在实时处理系统中,存在两种不同的线程: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空间,从而把对应于VPU0的本地存储器32的RA空间映射到线程B的部分EA空间中。
图33表示把执行线程B的VPU1的本地存储器(LS1)32映射到VPU0执行的线程A的EA空间中,和把执行线程A的VPU0的本地存储器(LS0)32映射到VPU1执行的线程B的EA空间中的情况。例如,当在本地存储器LS0上准备将被传送给线程B的数据时,线程A在VPU0的本地存储器LS0中,或者在执行线程B的VPU1的本地存储器LS1中,设置表示所述准备的标记。响应所述标记的设置,线程B从本地存储器LS0读取数据。
根据上面描述的本实施例,紧密耦接的线程可由耦接属性信息规定,紧密耦接的线程A和B被确保分别由不同的VPU同时执行。从而,能够更轻松地无延迟执行线程A和B之间的通信和同步的交互作用。
松散耦接线程组
属于松散耦接线程组的每个线程的执行期限取决于线程之间的输入/输出关系。即使线程不存在任何执行顺序的约束条件,也不能保证它们被同时执行。属于松散耦接线程组的线程被称为松散耦接的线程。图34表示包括作为松散耦接线程的两个线程C和D的松散耦接线程组,线程C和D由它们相应的VPU0和VPU1执行。从图34显然可看出,线程C和D的执行期限不同。线程C和D之间的通信由在主存储器14上准备的缓冲器执行,如图35中所示。通过DMA传送,VPU0执行的线程C把在本地存储器LS0中准备的数据写入在主存储器14上准备的缓冲器中。当VPU1执行的线程D开始运行时,通过DMA传送,线程D从主存储器14上的缓冲器读取数据,并将其写入本地存储器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.DORMANT状态:线程被产生,并且还未开始运行。
3.READY状态:线程准备好开始运行。
4.WAITING状态:线程等待满足开始(恢复)运行的条件。
5.RUNNING状态:线程实际正在VPU或MPU上运行。
6.SUSPENDED状态:线程被VPU运行时间环境和其它线程强制暂停。
7.WAITING-SUSPENDED状态:WAITING和SUSPENDED状态相互重叠。
上述七种状态之间的转变条件和转换中涉及的线程语境如下所述。
[从NOT EXISTENT状态到DORMANT状态的转变]
通过产生线程,实现这种转变。
产生线程语境,但是其内容处于初始状态。
[从DORMANT状态到NOT EXISTENT状态的转变]
通过删除线程,实现这种转变。
如果线程被设置成保存其线程语境,那么所述转变丢弃保存的线程语境。
[从DORMANT状态到WAITING状态的转变]
当线程请求运行时间环境调度该线程时,产生这种转变。
[从WAITING状态到READY状态的转变]
当产生线程等待的事件(例如同步,通信,计时器中断)时,实现这种转变。
[从READY状态到RUNNING状态的转变]
当运行时间环境把线程分配给MPU或VPU时,实现这种转变。
线程语境被加载。当线程语境被保存时,它被恢复。
[从RUNNING状态到READY状态的转变]
当线程的运行被抢先时,实现这种转变。
[从RUNNING状态到WAITING状态的转变]
当线程暂停它自己的运行,等待利用同步机制,通信机制等的事件时,实现这种转变。
每种类别中的线程可被设置成保存其线程语境。当线程被设置成保存其线程语境时,当线程从RUNNING状态转变成WAITING状态时,线程语境由运行时间环境保存。保存的线程语境被保持,除非线程转变成DORMANT状态,并且当线程转变成RUNNING状态时,保存的线程语境被恢复。
[从RUNNING状态到SUSPENDED状态的转变]
当响应来自运行时间环境或者其它线程的指令,强制暂停线程的运行时,实现这种转变。
每种类别中的线程可被设置成保存其线程语境。当线程被设置成保存其线程语境时,当线程从RUNNING状态转变成SUSPENDED状态时,线程语境由运行时间环境保存。保存的线程语境被保持,除非线程转变成DORMANT状态,并且当线程转变成RUNNING状态时,保存的线程语境被恢复。
[从RUNNING状态到DORMANT状态的转变]
当线程本身退出它自己的运行时,发生这种转变。
当线程被设置成保存其线程语境时,所述转变丢弃线程语境的内容。
[从WAITING状态到WAITING-SUSPENDED状态的转变]
在线程在WAITING状态下等待某一事件发生的时候,当来自外部的指令强制停止该线程时,产生这种转变。
[从WAITING-SUSPENDED状态到WAITING状态的转变]
在线程处于WAITING-SUSPENDED状态的时候,当线程依据来自外部的指令恢复运行时,产生这种转变。
[从WAITING-SUSPENDED状态到SUSPENDED状态的转变]
当产生线程在WAITING状态下等待的事件时,发生这种转变。
[从SUSPENDED状态到READY状态的转变]
当线程依据来自外部的指令恢复运行时,发生这种转变。
[从READY状态到SUSPENDED状态的转变]
当线程依据外部环境停止运行时,产生这种转变。
线程的执行期限
向其分配VPU的线程的运行状态的期限被称为执行期限。通常,从线程的产生到删除的期限包括线程的多个执行期限。图39表示从产生到删除变成的线程状态的一个例子。该例子包括在线程的存在期间的两个执行期限。利用各种方法,能够保存和恢复线程语境。多数正常线程运行,以便在执行期限结束时保存语境,并在开始下一执行期限时恢复所述语境。在某一周期操作中,线程运行,以便在每个周期中,在开始执行期限时产生新的语境,在执行期限内利用该语境,并在执行期限结束时丢弃该语境。
属于紧密耦接线程组的线程的执行期限
图40表示属于相同紧密耦接线程组的线程的执行期限。属于某一紧密耦接线程组的所有线程由VPU运行时间环境401调度,从而它们可在一个执行期限中同时运行。这种紧密耦接线程组主要用于硬实时线程。于是,为了实现该操作,当为硬实时类别预约执行期限时,VPU运行时间环境401指定同时使用的处理器以及它们的数目。此外,VPU运行时间环境401产生分别对应于处理器,同时运行的线程的语境。
通过取消它们的紧密耦接关系,在某一执行期限中,属于紧密耦接线程组的线程能够在其它执行期限中,彼此独立地运行。每个线程必须检测它是作为紧密耦接线程运行,还是独立于另一线程单独运行,并执行与其伙伴线程的通信和同步操作。每个线程具备指示抢先或非抢先的属性。抢先属性允许线程在其执行期限内被抢先,换句话说,允许该线程停止运行。非抢先属性保证在其执行期限内,线程不能被抢先。非抢先属性的含义因线程类别而异。就硬实时类别来说,当线程开始运行时,除了线程本身之外,在其执行期限结束之前,没有什么能够停止其运行。就软实时类别来说,优先是必需的,从而不支持非抢先属性。就尽力类别来说,能够防止线程被另一尽力类别抢先,但是线程可被从更高级的类别,例如硬实时类别和软实时类别抢先。
线程的执行模型
线程的执行模型可被粗略分成两种模型:如图41中所示的定期执行模型和如图42中所示的不定期执行模型。在定期执行模型中,定期执行线程。在不定期运行模型中,基于事件执行线程。利用软件中断或诸如同步基元(primitive)之类事件对象,能够实现定期执行模型。就硬实时类别来说,利用软件中断实现定期执行模型。换句话说,在开始定期操作的时刻,VPU运行时间环境401跳转到指定方法确定的线程的入口点,或者调用指定程序事先登记的回叫功能。就软实时类别来说,利用事件对象实现定期执行模型。换句话说,由于VPU运行时间环境401通知每个周期中先前登记的事件对象的产生,因此软实时线程在每个周期中等待事件对象,并执行当产生所述事件时的指定操作,从而实现定期执行模型。就尽力类别来说,或者利用软件中断或者利用事件对象,可实现定期执行模型。实际的执行并不总是开始于每个周期的起点,而是可在约束条件内被延迟。
通过利用事件模型,不定期执行模型可被实现成定期执行模型。就软实时类别和尽力类别来说,不定期执行模型和定期执行模型的区别只是通报事件的时刻,就实现方法来说,这些模型相同。就硬实时类别来说,确保时间要求所必需的最小到达间时间和截止时间严格限制系统的操作;因此,不定期执行被限制。
语境交换
在根据本实施例的实时处理系统中,能够选择在VPU线程的执行期限结束时交换语境的方法之一。由于交换语境的成本非常高,因此一种方法的选择提高了交换的效率。在线程的预期执行期限结束时,使用选择的方法。当在执行期限内或者在抢先的时间交换语境,那么不论在何种情况下都需要保存当前线程的所有语境,当随后该线程恢复运行时,恢复所述当前线程的所有语境。例如,交换VPU语境的方法有下述几种。
1.内容的丢弃
不保存任何内容。
2.完成内容的保存
保存VPU的所有语境,包括VPU的寄存器和本地存储器的状态,和存储器控制器中DMA控制器的状态。
3.语境的适度保存(graceful saving)
语境交换被延迟,直到VPU中的存储器控制器中的DMA控制器的所有操作完成为止。之后,保存VPU中的寄存器和本地存储器的内容。在这种方法中,VPU的所有内容,以及完整存储被保存。
可实现一种调度程序来调度MPU和VPU线程,并且可以执行不同的调度程序来调度它们相应的MPU和VPU线程。由于MPU和VPU线程在交换语境的成本方面不同,因此不同调度程序的实现变得更有效。
硬实时类别方面的调度
利用扩展的任务图的预约图,执行硬实时类别线程的调度。图43表示任务图的一个例子。任务图代表任务之间的关系。图43中,任务之间的箭头表示任务的相依性(任务之间的输入/输出关系)。根据图43的例子,任务1和2能够自由开始运行,在任务1和2都停止运行之后,任务3能够开始运行,在任务3停止运行之后,任务4和5能够开始运行。任务图没有任何语境概念。例如,当应利用相同语境处理任务1和4时,在任务图中不能对此进行描述。于是在本实施例的实时处理系统中使用扩展任务图的下述预约图。
首先,考虑不是代表任务之间,而是执行期限之间的关系的任务图。通过把语境和每个执行期限相联系,对应于该语境的线程在该执行期限中运行。如果相同的语境与多个执行期限相联系,那么其对应线程在每个执行期限中运行。在图44中所示的例子中,线程1的语境与执行期限1和2相关,线程1在每个执行期限1和2中运行。表示运行时间环境确保的硬实时的约束的属性被加入执行期限之间的每个箭头中。利用这样产生的预约图,能够在不对实时应用的模型进行任何修改的情况下,描述操作模型和诸如实时应用的时间要求之类的约束条件。图45表示了根据图44中所示的图,产生的预约图的一个例子。图45中的语境1、2和3分别对应于图44中线程1、2和3的语境。
软实时类别方面的调度
利用固定优先级调度方法执行软实时类别线程的调度,以便允许预测线程的运行模式。为该调度方法准备两种不同的调度算法:一种是固定优先级FIFO调度,另一种是固定优先级循环调度。为了依据优先级执行较高优先级的线程,即使在低优先级线程正在运行的时候,低优先级线程被抢先,高优先级线程立即开始运行。为了避免在关键部分中发生优先级倒置问题,最好执行同步机制,例如优先级继承协议和优先级最高限度协议。
尽力类别(Best Effort Class)方面的调度
利用动态优先级调度等执行尽力类别线程的调度。
分层调度程序
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线程的语境被完整保存。在图55的左上部,例2表示了指定截止时间,以保证在该截止时间之前,由VPU的数目和它们的执行期限代表的操作被执行的方法。截止时间由始于发出预约请求的请求时间的相对时间指定。在图41的最下部,例3表示指定周期执行的方法。在该例子中,指定两个VPU 12的执行期限被定期重复,在每个周期的执行期限之后,VPU线程的语境被丢弃,其结果是所有操作由新的语境执行。此外,截止时间由始于周期起点的相对时间指定。
例如,作为在硬实时类别中使用的其它参数,存在下述约束:
计时约束(绝对计时约束和相对计时约束);
程序约束(Precedence constraint);和
互斥约束。
计时约束提供延迟执行计时的单元。绝对计时约束是相对于静态计时,例如周期的起始时间,指定延迟时间的条件,如图48中所示。相对计时约束是相对于动态计时和事件,例如某一的起始时间和终止时间,指定许可的延迟时间的条件,如图49中所示。由于通过利用相对计时约束,相对于某一执行期限的终止时间,把延迟时间指定为0或更长,能够实现程序约束,因此程序约束可被认为是特殊的相对计时约束。
互斥约束是确保执行期限不会相互重叠的条件,如图50中所示。互斥约束使得能够降低由锁定导致的执行期限的不可预测性。换句话说,防止为某些资源所共有的全部线程同时运行,以避免关于资源的锁定。
线程的同步机制
在根据本实施例的实时处理系统中,下述同步基元被用作线程的同步机制:
旗语;
消息队列;
消息缓冲器;
事件标记;
屏障;和
互斥(Mutex)。
可以使用其它同步基元。本实施例的实时处理系统提供下述三种方法实现上面的同步机制。
利用诸如TEST&SET之类指令,在存储器(主存储器)14或VPU的本地存储器32上实现同步机制;
由诸如邮箱和信号寄存器之类硬件机构实现同步机制;和
利用VPU运行时间环境作为服务提供的机制,实现同步机制。
由于同步机制具有优点和缺点,因此最好根据如图51中所示的线程的属性,有选择地使用它们。换句话说,利用由MPU和VPU共享和访问的存储器(主存储器MS)14实现的同步机制可被用于所有类别中的线程。相反,在VPU 12的本地存储器LS上实现的同步机制只能用于属于紧密耦接线程组的线程。这是因为只有属于紧密耦接线程组的线程才能保证它们的同步伙伴线程同时运行。例如,如果属于紧密耦接线程组的线程被用于在执行伙伴线程的VPU的本地存储器上实现的同步机制,当使用同步机制时,伙伴线程的执行得到保证。从而,执行伙伴线程的VPU的本地存储器总是保存关于同步机制的信息。
使用除存储器(主存储器MS)和本地存储器LS之外的单元的同步机制可由硬件机构或者VPU运行时间环境401的服务实现。由于属于紧密耦接线程组的线程,或者硬实时类别中的线程需要高速同步机制,因此在这些线程中,最好使用由硬件结构实现的同步机制。相反,在属于松散耦接线程组中的线程,或者属于软实时类别和尽力类别的那些线程中,最好使用运行时间环境提供的同步机制。
同步机制的自动选择
在根据本实施例的实时处理系统中,根据线程的属性和状态,能够自动选择或者转换上述同步机制。该操作由如图52中所示的程序实现。在同步线程属于紧密耦接线程组的时候(步骤S201中YES),使用由存储器14,每个VPU 12的本地存储器32或者硬件机构实现的高速同步机制(步骤S202、S204、S205)。当线程状态发生变化,取消它们的紧密耦接关系时(步骤S201中NO),高速同步机制被转换成实现成存储器14上的同步机制或者VPU运行时间环境401的服务的同步机制(步骤S206、S207、S208)。
可以库的形式,或者作为每个VPU 12中VPU运行时间环境502的服务,向在VPU 12上运行的程序提供上述转换。可如下转换多个同步机制。同步机制可被预先确保并有选择地被使用,或者当进行转换时,能够确保新的同步机制。
对于利用VPU 12的本地存储器的同步机制来说,类似于属于紧密耦接线程组的线程,线程需要由VPU同时执行。这种约束条件被如下所述放松。在线程未运行的时候,当该线程最后运行时,本地存储器的内容被保存在存储器14中,并且这样控制映射,以致保存的内容由指示本地存储器的页表或段表的条目指示。根据该方法,虽然伙伴线程未运行,该线程能够继续运行,如同存在与伙伴线程相关的本地存储器一样。当通过向线程分配VPU 12,该线程开始运行时,保存在存储器14中的内容被恢复到VPU 12的本地存储器中,以便改变对应页表或段表的映射。通过利用VPU 12的本地存储器的备份副本,即使对于不属于紧密耦接线程组的线程,也能使用利用VPU 12的本地存储器的同步机制。
预约图
图53表示对应于图9中所示的数据流的预约图。在图53中,6个方框代表执行期限。每个方框左上方的数字指示要预约的执行期限的ID。每个方框中的符号指示和该执行期限相关的线程语境的标识符。每个方框右下方的数字指示该执行期限的长度(成本)。连接方框的箭头都表示位次约束。换句话说,从一个方框延伸到另一方框的箭头表示在前一方框的执行期中的操作结束之后,开始后一方框的执行期中的操作。从而能够表示一系列的执行期。每个箭头上的数字表示用于该箭头连接的执行期之间的数据传送的缓冲器的ID,和每个数字在一起的数值表示缓冲器的大小。下面是根据图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的线程语境,并调用其标识符BLEND。
7.产生具有如图54中所示数据结构的预约请求,并将其发送给VPU运行时间环境401,以便完成预约。
根据每个上述程序1-6,如果指定某一程序作为线程运行,那么VPU运行时间环境401向该程序分配必需的资源,从而产生线程语境。线程语境的句柄被返回,从而被称为标识符。
图54表示包含作为BUFFER写入的缓冲器数据和作为TASK写入的执行期数据的预约请求。缓冲器数据被用于宣布存储器14上用于执行期之间的数据传送的存储器。在缓冲器数据中,“Id”表示缓冲器编号,“Size”表示缓冲器大小,“SrcTask”表示写入数据的执行期编号,“DstTask”表示读取数据的执行期编号。在执行期数据中,“Id”表示执行期编号,“Class”表示线程类别(VPU表示VPU线程,HRT表示硬实时类别。除了这些之外,还存在表示MPU线程的MPU,表示软实时类别的SRT,表示尽力类别的BST等等),“ThreadContext”表示对应于该执行期的线程语境,“Cost”表示执行期的长度或成本,“Constraint”代表基于执行期的各种约束,“InputBuffer”表示在该执行期中读取的缓冲器的标识符列表,“OutputBuffer”表示在该执行期中写入的缓冲器的标识符列表。“Constraint”还包括表示位次约束的“Precedence”,表示绝对计时约束的“Absolute Timing”,表示相对计时约束的“Relative Timing”,和表示互斥约束的“Exclusive”。“Constraint”具有关于约束的伙伴线程的执行期的数目的列表。
由图54中所示的预约请求预约的缓冲区被分配给主存储器14,并由VPU运行时间环境401从主存储器14释放。当把数据写入缓冲区的线程开始运行时,执行缓冲区的分配。当从缓冲区读取数据的线程退出时,执行缓冲区的释放。当线程开始运行时,利用预先确定的地址、变量或寄存器,可把分配的缓冲器的地址通知线程。在本实施例的实时处理系统中,当提供图7中所示的程序模块100时,图8中所示的结构描述117被读出程序模块110,并且根据结构描述117,线程语境由上述程序产生,并且如图54中所示的预约请求被产生并被发出,从而提供执行程序模块100的功能。通过由多个处理器处理软件,该功能允许执行由如图7中所示的程序模块100描述的专用硬件的操作。为要实现的每个硬件产生具有如图7中所示结构的程序模块,所述程序模块随后由具有和本实施例的实时处理系统相符功能的设备执行,其结果是该设备能够如同所需硬件那样被操纵。作为另一例子,在应用程序中描述产生图54中所示预约请求的操作,该应用程序能够独自产生预约请求,并将其传送给VPU运行时间环境401。
通过提供图54中所示的预约请求,VPU运行时间环境401确定哪个VPU 12在一个周期中的哪个时刻执行每个任务。这就是调度。实际上,能够同时提供多个预约请求;于是,确定操作计时,以防止它们相互抵触(防止不能满足给定约束条件)。假定当如图55中所示,存在两个VPU 12时,只产生图54中所示的预约请求,那么进行调度,以致VPU0顺序执行不能并行进行的DEMUX、V-DEC、PROG和BLEND操作,并在DEMUX操作之后,VPU1执行能够并行进行的A-DEC和TEXT操作。
软件流水线
如果在一个周期内,不存在足以顺序执行DEMUX、V-DEC、PROG和BLEND操作的时间,那么在多个周期内,执行软件流水线处理。例如,如图56中所示,在第一周期中,VPU0执行DEMUX和V-DEC操作,在第二周期中,VPU1执行A-DEC、TEXT、PROG和BLEND操作。在第二周期中,并行于A-DEC、TEXT、PROG和BLEND操作,VPU0执行下一帧中的DEMUX和V-DEC操作。换句话说,如图57中所示,执行流水线处理,其中在VPU0执行DEMUX和V-DEC操作的时候,当收到前一周期中,DEMUX和V-DEC操作的输出时,VPU1执行A-DEC、TEXT、PROG和BLEND操作。采用流水线操作允许在较短的时间内,在每个周期中完成实时操作。
图58是实现软件流水线操作的调度程序的流程图。
VPU运行时间环境401确定在一个周期内,是否能够完成需要顺序执行的线程DEMUX、V-DEC、PROG和BLEND的全部(步骤401)。作为程序模块100的执行条件,一个周期的长度被预置到VPU运行时间环境401中。在结构描述117中,能够明确地描述该长度。在步骤S401中,根据这些线程的成本,预测线程DEMUX、V-DEC、PROG和BLEND的总的执行期。比较预测的总执行期和一个周期的长度。
如果VPU运行时间环境401确定在一个周期中不能执行线程DEMUX、V-DEC、PROG和BLEND(步骤S401中NO),那么它根据线程DEMUX、V-DEC、A-DEC、TEXT、PROG和BLEND的执行顺序,把执行程序模块100的所有线程DEMUX、V-DEC、A-DEC、TEXT、PROG和BLEND分成能够顺序执行的两组(下面称为第一线程组和第二线程组)(步骤402)。第一线程组是在第二线程组之前执行的一组一个或多个线程,第二线程组是在第一线程组之后执行的一组一个或多个线程。在本实施例中,线程DEMUX和V-DEC属于第一线程组,线程A-DEC、TEXT、PROG和BLEND属于第二线程组,以满足线程之间的位次约束条件,并使每个线程组的总执行期不大于对应于一个周期的时间间隔。
VPU运行时间环境401执行调度操作,以便定期地把属于第一线程组的每个线程(DEMUX和V-DEC)的执行期分配给VPU0,从而VPU0以1/60秒的时间间隔,定期执行第一线程组(步骤403)。在步骤403中,每个线程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中所示,可进行调度,以便定期地替换向其分配第一线程组的处理器,和向其分配第二线程组的处理器。在调度操作中,关于每个周期,确定第一和第二线程组的执行开始计时,以及执行第一和第二线程组的不同处理器,以便并行地执行第一和第二线程组,同时第二线程组相对于第一线程组被延迟一个周期。
利用流水线操作的节能控制
利用如上所述的流水线操作,实时操作能够有效地被分配给多个VPU,以便用尽可能短的时间,在每个周期中完成实时操作。从而能够以较低的运算速度运转VPU。
图60表示其中执行由图53中的预约图指示的数字广播接收操作的两个程序由VPU0和VPU1同时执行的例子。在图60中,D1-1,V1-1,P1-1,A1-1,T1-1和B1-1分别代表第一程序中,周期1的线程DEMUX、V-DEC、PROG、A-DEC、TEXT和BLEND,D2-1,V2-1,P2-1,A2-1,T2-1和B2-1分别代表第二程序中,周期1的线程DEMUX、V-DEC、PROG、A-DEC、TEXT和BLEND。
如果存在四个VPU(VPU0、VPU1、VPU2和VPU4),那么利用软件流水线操作,在四个VPU上调度线程DEMUX、V-DEC、PROG、A-DEC、TEXT和BLEND,以致分配给一个周期的执行期尽可能相同地结束,如图61中所示。在图61中,两个VPU VPU0和VPU1并行执行第一程序中的线程DEMUX和V-DEC,以及第一程序中一个周期前的线程PROG、A-DEC、TEXT和BLEND。此外,两个VPU VPU2和VPU3并行执行第二程序中的线程DEMUX和V-DEC,以及第二程序中一个周期前的线程PROG、A-DEC、TEXT和BLEND。借助这种调度,任何VPU都不在每个周期的后半段中执行它们对应的线程。利用该剩余空间,能够降低所有VPU的运算速度。
每个VPU0、VPU1、VPU2和VPU3的运算速度的控制由下述程序实现。首先,根据通过调度确定每个线程组的每个周期的执行开始计时和表示VPU以最大(100%)运算速度执行线程组所需的成本的信息,选择其中从每个周期的开始到周期中执行期结束的时间间隔最长的线程组之一。随后,计算从每个周期的开始到每个周期中选择的线程组的执行期结束的时间间隔T与对应于一个周期的时间间隔的比值。根据计算的比值,用于软件流水线的每个VPU的运算速度被设置成低于最大(100%)运算速度的运算速度。
具有分层结构的预约图
虽然图53中所示的预约图不具有分层结构,不过可如图63中所示使用具有分层结构的预约图。在图63中,执行期A在执行期B之前,执行期B在执行期C之前。在执行期B中,执行期D在执行期E和F之前。通过分解该层次,执行期A在执行期D之前,执行期E和F在执行期C之前。
考虑到紧密耦接线程组产生的预约请求
在图53中所示的预约图中,当执行V-DEC的线程和执行PROG的线程属于紧密耦接线程组时,如图64中所示,产生表示耦接属性的预约请求。在该预约请求中,“TightlyCoupled”表示对应于伙伴线程的执行期的ID。于是如图65中所示调度上述线程,以致它们可由不同的VPU同时执行。这种情况下,线程能够通过本地存储器相互通信,从而不需要在存储器14中提供任何缓冲器。在图65中所示的调度中,最后完成DEMUX、V-DEC和BLEND线程组。于是,以相同的比率降低VPU0、VPU1和VPU2的运算速度,以致从每个周期的开始到完成DEMUX、V-DEC和BLEND线程组的执行的时间间隔被延长到对应于一个周期的时间间隔。从而,呈紧密耦接关系的V-DEC和PROG的执行期彼此一致。
基于结构描述的调度算法
下面说明根据包含在程序模块中的结构描述,预约每个线程的执行期的程序。
图8表示包含在图7中所示的程序模块100中的结构描述117的例子。借助结构描述117,VPU运行时间环境401执行下述操作。
1.加载写入结构描述117的模块字段中的程序,以便产生执行该程序的线程。在本实施例中,关于结构描述117的每个条目产生一个线程。如果结构描述117包括具有相同模块名称的条目,那么产生执行相同模块的多个线程,以便对应于它们相应的条目。在图8的例子中,产生的所有线程属于一个进程;但是,线程可属于不同的进程或者线程组可属于不同的进程。
2.根据结构描述117的信息,产生具有如图54中所示数据结构的预约请求。
3.预约请求被发送给VPU运行时间环境,以便调度线程,并开始运行线程。
如下进行产生预约请求的上述步骤2。
首先,产生BUFFER记录,以便一一对应于结构描述117的输出字段,并被加入预约请求中。例如,在图8的例子中,DEMUX模块的第二输出数据通过1-MB缓冲器,被提供给V-DEC,以致产生如图54中所示的其Id为2的BUFFER记录。在该BUFFER记录中,在Size字段中,缓冲器大小被描述成1MB,在SrcTask字段中描述关于其Id为1,并且对应于把数据写入缓冲器的DEMUX模块的TASK记录的索引,在DstTask字段中描述关于其Id为3,并且对应于从缓冲器读取数据的V-DEC模块的TASK记录的索引。
随后,产生TASK记录,以便一一对应于结构描述117的模块字段,并被加入预约请求中。例如,在图8的例子中,作为对应于V-DEC模块的一个TASK记录,产生如图54中所示的其Id为3的TASK记录。该TASK记录具有下述信息。
Class字段:指示什么属性被用于执行在TASK记录中指定的线程的标记。
在该字段中,“VPU”代表在VPU上运行的线程,“HRT”表示硬实时类别中的线程。根据在图8中所示的结构描述117的线程参数中描述的信息,设置这些信息项。
ThreadContext字段:指定其运行将被保存在TASK记录中的线程的线程语境的标记。更具体地说,在结构描述117的模块字段中指定的程序模块被加载,执行该程序模块的线程由VPU运行时间环境401产生,该线程的线程语境的标识符(指示符或类似物)被记录到“ThreadContext”字段中。
Constraint字段:记录TASK记录的约束的标记。当约束是位次约束时,在“Precede”字段之后指定TASK记录之后的另一TASK记录的所需Id号。例如,其Id为3的TASK记录在对应于其Id为5的PROG模块的TASK记录之前。
InputBuffer字段:指定TASK记录指定的线程从其读取数据的缓冲器的Buffer记录的所需Id号的标记。
OutputBuffer字段:指定TASK记录指定的线程把数据写入其中的缓冲器的Buffer记录的所需Id号的标记。
如果如上所述那样提供结构描述,那么产生其对应的预约请求。
当预约请求被发送给VPU运行时间环境401中的调度程序时,调度程序产生执行预约请求所需的时间表。该时间表代表在什么时刻,哪个VPU被分配给哪个线程,以及在一个周期中,该VPU被分配多长时间,如图55中所示。实际上,时间表可由如图66中所示的预约列表表示。
图66中所示的预约列表包括和相应的VPU相关的预约项。每个预约项包括指示在每个周期中,VPU何时执行线程(线程的执行开始计时)的开始时间字段,指示VPU被分配给该线程多长时间(线程的执行期)的执行期字段,和指示线程的标识符的运行线程字段。按照VPU以开始时间的顺序,预约项被分类,并与预约列表链接。
图67中所示的流程图能够执行根据图54或图64中所示的预约请求,产生如图66中所示的预约列表的程序。
本质上,预约请求中的TASK记录只需考虑到使用BUFFER的输入/输出关系被排序,VPU的运行时间只需按照数据流的顺序,被分配给每个TASK记录。随后必须同时把VPU分配给属于紧密耦接线程组的任务。
图67中表示了该程序。当收到预约请求时,VPU运行时间环境401依据下述步骤,调度由预约请求中TASK记录指定的所有任务(换句话说,VPU运行时间环境401产生预约列表,以便保存向其分配每个任务的VPU,和任务的执行开始计时及执行期)。
步骤S301:VPU运行时间环境401从未被调度的任务中,选择其所有在先任务(输入任务)已被调度,并且不具有紧密耦接属性的任务。如果某一任务前面没有任何输入任务,那么所述某一任务被确定为其输入任务已被调度的任务。
如果存在其输入任务已被调度,并且不具有紧密耦接属性的任务,那么VPU运行时间环境401选择该任务,并进入步骤S302。如果否,那么VPU运行时间环境401进入步骤S304。
步骤S302:如果存在能够按照满意的约束条件,分配选择的任务的执行开始计时和执行期的VPU,那么VPU运行时间环境401进入步骤S303。如果否,那么VPU运行时间环境401调度失败,并通告所述失败。
步骤S303:VPU运行时间环境401产生选择任务的预约项,并把它们与预约列表链接。
步骤S304:VPU运行时间环境401从未被调度的任务中,选择其所有输入任务已被调度,并且属于紧密耦接组的任务。如果任务之前没有任何输入任务,那么它们被确定为其输入任务已被调度的任务。
如果存在其输入任务已被调度,并且属于紧密耦接组的任务,那么VPU运行时间环境401选择这些任务,并进入步骤305。如果否,那么VPU运行时间环境401结束调度。
步骤S305:如果存在能够同时预约包含在选择任务中的所有任务的VPU(具有相同的执行开始计时和相同的执行期),那么VPU运行时间环境401进入步骤S306。如果否,那么VPU运行时间环境401调度失败,并通告所述失败。
步骤S306:产生选择的一组任务中的所有任务的预约项,并将其与预约列表链接。
上面说明了关于一个预约请求的调度步骤。实际上,在一个系统中,通常同时存在多个预约请求。这种情况下,可通过上述步骤调度预约请求,最好可通过上述步骤同时进行所述预约请求。
通过把描述数字TV广播接收器的操作的程序模块作为例子,说明了本实施例。但是,如果准备描述各种硬件的操作的程序模块,那么硬件的操作可由软件实现。
在图1中所示的计算机系统中设置的MPU 11和VPU 12可被实现成混合在一个芯片上的并行处理器。这种情况下,MPU 11执行的VPU运行时间环境或特定VPU等执行的VPU运行时间环境同样能够控制VPU 12的调度。
软件流水线操作可由三个VPU实现。执行实时操作的多个链接任务被分成第一~第三任务组,以便顺序被处理。每个任务组被定期分配给至少一个VPU,从而三个VPU按照流水线方式,定期执行这三个任务组。如果使用VPU1、VPU2和VPU3,那么VPU0定期执行第一任务组,VPU1定期执行相对于第一任务组延迟一个周期的第二任务组,VPU2定期执行相对于第二任务组延迟一个周期的第三任务组。从第一~第三任务组中选出在每个周期中,其执行最后完成的任务组。根据从每个周期的开始到该周期中,完成选择的任务组的执行期的时间间隔与对应于一个周期的时间间隔的比值,VPU0、VPU1和VPU2降低运算速度。
多个VPU能够并行执行任务组的任务。如果任务组包括多个任务,那么多个VPU能够并行执行所述任务。
如果作为VPU运行时间环境运行的程序或者包括VPU运行时间环境的操作系统的程序保存在计算机可读存储介质上,并且随后被引入并在包括多个处理器(每个处理器具有一个本地存储器)的计算机中执行,能够获得和本发明的前述实施例相同的优点。
本领域的技术人员易于想到其它优点和修改。于是,本发明的范围并不局限于这里表示和描述的具体细节和典型实施例。因此,在不脱离由附加权利要求及其等同物限定的一般发明原理的精神或范围的情况下,能够做出各种修改。
Claims (17)
1、一种以特定的时间间隔,定期执行实时操作的方法,所述方法包括:
执行调度操作,把实时操作分配给处理器,以便处理器以特定的时间间隔,定期执行实时操作;
根据特定的时间间隔和关于处理器以第一运算速度执行实时操作所需时间的成本信息,计算处理器以第一运算速度执行实时操作的执行时间与每个特定时间间隔的比值;和
执行运算速度控制操作,以便以低于第一运算速度的第二运算速度运转处理器,所述第二运算速度根据计算的比值确定。
2、按照权利要求1所述的方法,其中执行运算速度控制操作包括根据第一运算速度和计算的比值确定第二运算速度,第二运算速度被确定成满足在开始下一时间周期之前,完成在对应于特定时间间隔的每个时间周期中实时操作的执行的条件。
3、按照权利要求1所述的方法,其中执行运算速度控制操作包括控制供给处理器的时钟信号的频率,以便以第二运算速度运转该处理器。
4、一种利用多个处理器,以特定的时间间隔定期执行包括多个链接任务的实时操作的方法,所述方法包括:
根据任务之间的任务执行顺序的关系,把链接的任务分成可并行执行的多个任务组;
执行调度操作,确定对应于特定时间间隔的时间周期中的每个时间周期中,每个任务组的执行开始计时,和在每个时间周期中执行对应的一个任务组的处理器之一;
根据每个任务组的执行开始计时和关于对应一个处理器以第一运算速度执行每个任务组所需时间的成本信息,选择从每个时间周期的开始到每个时间周期中执行时间的结束的时间间隔最长的一个任务组;
计算对应于选择的一个任务组的时间间隔与每个特定时间间隔的比值;和
执行运算速度控制操作,以便以低于第一运算速度的第二运算速度运转每个处理器,所述第二运算速度根据计算的比值确定。
5、按照权利要求4所述的方法,其中执行运算速度控制操作包括根据第一运算速度和计算的比值,确定第二运算速度,第二运算速度被确定成满足在开始下一时间周期之前,完成在对应于特定时间间隔的每个时间周期中选择的一个任务组的执行的条件。
6、按照权利要求4所述的方法,其中执行运算速度控制操作包括控制供给每个处理器的时钟信号的频率,以便以第二运算速度运转每个处理器。
7、按照权利要求4所述的方法,其中划分包括根据任务之间的任务执行顺序的关系,把链接的任务分成第一任务组和第二任务组,第二任务组在第一任务组之后执行,执行调度操作包括确定每个时间周期中,第一任务组和第二任务组中每一个的执行开始计时,以便以特定的时间间隔定期执行第一任务组,并且相对于第一任务组延迟一个周期,以特定的时间间隔定期执行第二任务组。
8、一种以特定的时间间隔定期执行实时操作的信息处理系统,所述系统包括:
一个处理器;
执行调度操作的装置,用于把实时操作分配给处理器,以便处理器以特定的时间间隔定期执行实时操作;
根据特定的时间间隔和关于处理器以第一运算速度执行实时操作所需时间的成本信息,计算处理器以第一运算速度执行实时操作的执行时间与每个特定时间间隔的比值的装置;和
执行运算速度控制操作,以便以低于第一运算速度的第二运算速度运转处理器的装置,所述第二运算速度根据计算的比值确定。
9、按照权利要求8所述的信息处理系统,其中执行运算速度控制操作的装置包括根据第一运算速度和计算的比值,确定第二运算速度的装置,第二运算速度被确定成满足在开始下一时间周期之前,完成在对应于特定时间间隔的每个时间周期中实时操作的执行的条件。
10、按照权利要求8所述的信息处理系统,其中执行运算速度控制操作的装置包括控制供给处理器的时钟信号的频率,以便以第二运算速度运转该处理器的装置。
11、一种以特定时间间隔,定期执行包括多个链接任务的实时操作的信息处理系统,所述系统包括:
多个处理器;
根据任务之间的任务执行顺序的关系,把链接的任务分成可并行执行的多个任务组的装置;
执行调度操作的装置,用于确定对应于特定时间间隔的时间周期中的每个时间周期中,每个任务组的执行开始计时,和在每个时间周期中执行对应的一个任务组的处理器之一;
根据每个任务组的执行开始计时和关于对应一个处理器以第一运算速度执行每个任务组所需时间的成本信息,选择从每个时间周期的开始到每个时间周期中执行时间的结束的时间间隔最长的一个任务组的装置;
计算对应于选择的一个任务组的时间间隔与每个特定时间间隔的比值的装置;和
执行运算速度控制操作,以便以低于第一运算速度的第二运算速度运转每个处理器的装置,所述第二运算速度根据计算的比值确定。
12、按照权利要求11所述的信息处理系统,其中执行运算速度控制操作的装置包括根据第一运算速度和计算的比值,确定第二运算速度的装置,第二运算速度被确定成满足在开始下一时间周期之前,完成在对应于特定时间间隔的每个时间周期中,选择的一个任务组的执行的条件。
13、按照权利要求11所述的信息处理系统,其中执行运算速度控制操作的装置包括控制供给每个处理器的时钟信号的频率,以便以第二运算速度运转每个处理器的装置。
14、按照权利要求11所述的信息处理系统,其中划分装置包括根据任务之间的任务执行顺序的关系,把链接的任务分成第一任务组和第二任务组的装置,第二任务组在第一任务组之后执行,执行调度操作的装置包括确定每个时间周期中,第一任务组和第二任务组中每一个的执行开始计时,以便以特定的时间间隔定期执行第一任务组,并且相对于第一任务组延迟一个周期,以特定的时间间隔定期执行第二任务组的装置。
15、一种保存在计算机可读介质中,使计算机以特定时间间隔定期执行实时操作的程序,所述程序包括:
使计算机执行调度操作,把实时操作分配给处理器,以便处理器以特定时间间隔定期执行实时操作;
使计算机根据特定的时间间隔和关于处理器以第一运算速度执行实时操作所需时间的成本信息,计算处理器以第一运算速度执行实时操作的执行时间与每个特定时间间隔的比值;和
使计算机执行运算速度控制操作,以便以低于第一运算速度的第二运算速度运转处理器的装置,所述第二运算速度根据计算的比值确定。
16、一种保存在计算机可读介质中,使计算机利用多个处理器,以特定的时间间隔定期执行包括多个链接任务的实时操作的程序,所述程序包括:
使计算机根据任务之间的任务执行顺序的关系,把链接的任务分成可并行执行的多个任务组;
使计算机执行调度操作,确定对应于特定时间间隔的时间周期中的每个时间周期中,每个任务组的执行开始计时,和在每个时间周期中执行对应的一个任务组的处理器之一;
使计算机根据每个任务组的执行开始计时和关于对应一个处理器以第一运算速度执行每个任务组所需时间的成本信息,选择从每个时间周期的开始到每个时间周期中执行时间的结束的时间间隔最长的一个任务组;
使计算机计算对应于选择的一个任务组的时间间隔与每个特定时间间隔的比值;和
使计算机执行运算速度控制操作,以便以低于第一运算速度的第二运算速度运转每个处理器,所述第二运算速度根据计算的比值确定。
17、按照权利要求16所述的程序,其中使计算机进行划分包括使计算机根据任务之间的任务执行顺序的关系,把链接的任务分成第一任务组和第二任务组,第二任务组在第一任务组之后执行,并且使计算机执行调度操作包括使计算机确定每个时间周期中,第一任务组和第二任务组中每一个的执行开始计时,以便以特定的时间间隔定期执行第一任务组,并相对于第一任务组延迟一个周期,以特定的时间间隔定期执行第二任务组。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003207572A JP4025260B2 (ja) | 2003-08-14 | 2003-08-14 | スケジューリング方法および情報処理システム |
JP207572/2003 | 2003-08-14 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1581023A true CN1581023A (zh) | 2005-02-16 |
CN1295583C CN1295583C (zh) | 2007-01-17 |
Family
ID=34308329
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004100574958A Active CN1295583C (zh) | 2003-08-14 | 2004-08-13 | 实现实时操作的方法和系统 |
Country Status (5)
Country | Link |
---|---|
US (2) | US7464379B2 (zh) |
EP (1) | EP1622015A3 (zh) |
JP (1) | JP4025260B2 (zh) |
KR (1) | KR20050016170A (zh) |
CN (1) | CN1295583C (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100462924C (zh) * | 2005-03-25 | 2009-02-18 | 株式会社东芝 | 可调度性确定方法和实时系统 |
US7895453B2 (en) | 2005-04-12 | 2011-02-22 | Waseda University | Multiprocessor system and multigrain parallelizing compiler |
CN107153626A (zh) * | 2017-04-14 | 2017-09-12 | 河南思维轨道交通技术研究院有限公司 | 一种低速总线器件的访问方法 |
CN109215714A (zh) * | 2017-06-30 | 2019-01-15 | 希捷科技有限公司 | 用于增强存储设备的服务质量的存储系统、方法和非暂态计算机可读介质 |
CN112506152A (zh) * | 2020-12-02 | 2021-03-16 | 三一重型装备有限公司 | 一种采煤机及其控制器、控制方法 |
WO2021093248A1 (zh) * | 2019-11-13 | 2021-05-20 | 上海商汤智能科技有限公司 | 调度方法及装置、电子设备和存储介质 |
CN114902159A (zh) * | 2020-01-06 | 2022-08-12 | Arm有限公司 | 功率管理系统和方法 |
Families Citing this family (67)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 | 株式会社東芝 | マルチプロセッサ計算機及びプログラム |
US9361156B2 (en) | 2005-03-14 | 2016-06-07 | 2236008 Ontario Inc. | Adaptive partitioning for operating system |
US8387052B2 (en) | 2005-03-14 | 2013-02-26 | Qnx Software Systems Limited | Adaptive partitioning for operating system |
CA2538503C (en) * | 2005-03-14 | 2014-05-13 | Attilla Danko | Process scheduler employing adaptive partitioning of process threads |
US8245230B2 (en) * | 2005-03-14 | 2012-08-14 | Qnx Software Systems Limited | Adaptive partitioning scheduler for multiprocessing system |
US8156500B2 (en) * | 2005-07-01 | 2012-04-10 | Microsoft Corporation | Real-time self tuning of planned actions in a distributed environment |
US7483327B2 (en) * | 2006-03-02 | 2009-01-27 | Freescale Semiconductor, Inc. | Apparatus and method for adjusting an operating parameter of an integrated circuit |
US8584122B2 (en) | 2006-03-31 | 2013-11-12 | Ebay Inc. | Batch scheduling |
JP4936517B2 (ja) * | 2006-06-06 | 2012-05-23 | 学校法人早稲田大学 | ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ |
US8116314B2 (en) * | 2007-03-29 | 2012-02-14 | Nec Corporation | Apparatus for processing packets and method of doing the same |
JP2007305148A (ja) * | 2007-06-25 | 2007-11-22 | Univ Waseda | マルチプロセッサシステム |
WO2009021160A1 (en) * | 2007-08-08 | 2009-02-12 | Redcom Laboratories, Inc. | A user co-routine interface for customizing sip and sdp protocols |
US8234652B2 (en) | 2007-08-28 | 2012-07-31 | International Business Machines Corporation | Performing setup operations for receiving different amounts of data while processors are performing message passing interface tasks |
US8108876B2 (en) * | 2007-08-28 | 2012-01-31 | International Business Machines Corporation | Modifying an operation of one or more processors executing message passing interface tasks |
US8312464B2 (en) * | 2007-08-28 | 2012-11-13 | International Business Machines Corporation | Hardware based dynamic load balancing of message passing interface tasks by modifying tasks |
US8127300B2 (en) * | 2007-08-28 | 2012-02-28 | International Business Machines Corporation | Hardware based dynamic load balancing of message passing interface tasks |
US8452999B2 (en) * | 2007-12-28 | 2013-05-28 | Freescale Semiconductor, Inc. | Performance estimation for adjusting processor parameter to execute a task taking account of resource available task inactive period |
JP2009301500A (ja) * | 2008-06-17 | 2009-12-24 | Nec Electronics Corp | タスク処理システム及びタスク処理方法 |
WO2010028028A1 (en) | 2008-09-08 | 2010-03-11 | Virginia Tech Intellectual Properties | Systems, devices, and methods for managing energy usage |
US8910169B2 (en) * | 2008-09-30 | 2014-12-09 | Intel Corporation | Methods and systems to perform a computer task in a reduced power consumption state |
US8776066B2 (en) * | 2009-11-30 | 2014-07-08 | International Business Machines Corporation | Managing task execution on accelerators |
US8479026B2 (en) * | 2009-12-09 | 2013-07-02 | Texas Instruments Incorporated | Processor power management |
US8595721B2 (en) * | 2009-12-22 | 2013-11-26 | International Business Machines Corporation | Preserving a dedicated temporary allocation virtualization function in a power management environment |
US9021046B2 (en) * | 2010-01-15 | 2015-04-28 | Joyent, Inc | Provisioning server resources in a cloud resource |
US8782653B2 (en) * | 2010-03-26 | 2014-07-15 | Virtualmetrix, Inc. | Fine grain performance resource management of computer systems |
US9098612B2 (en) | 2010-12-30 | 2015-08-04 | Qwest Communications International Inc. | End-to-end application tracking framework |
US8555276B2 (en) | 2011-03-11 | 2013-10-08 | Joyent, Inc. | Systems and methods for transparently optimizing workloads |
US8650577B2 (en) * | 2011-05-30 | 2014-02-11 | Lg Electronics Inc. | Mobile terminal and controlling method thereof |
US9411636B1 (en) * | 2011-07-07 | 2016-08-09 | Emc Corporation | Multi-tasking real-time kernel threads used in multi-threaded network processing |
US8782224B2 (en) | 2011-12-29 | 2014-07-15 | Joyent, Inc. | Systems and methods for time-based dynamic allocation of resource management |
US9207977B2 (en) * | 2012-02-06 | 2015-12-08 | Honeywell International Inc. | Systems and methods for task grouping on multi-processors |
US20130208786A1 (en) * | 2012-02-15 | 2013-08-15 | Wei Xiong | Content Adaptive Video Processing |
US9286115B2 (en) * | 2012-06-21 | 2016-03-15 | Microsoft Technology Licensing, Llc | Performant runtime pause with no CPU utilization |
JP5646560B2 (ja) * | 2012-08-15 | 2014-12-24 | 株式会社東芝 | 仮想os制御装置、システム、方法およびプログラム |
US9373074B2 (en) * | 2012-10-09 | 2016-06-21 | Qualcomm Incorporated | Method and apparatus for time management and scheduling for sychronous processing on a cluster of processing nodes |
US9612868B2 (en) | 2012-10-31 | 2017-04-04 | Honeywell International Inc. | Systems and methods generating inter-group and intra-group execution schedules for instruction entity allocation and scheduling on multi-processors |
US8826279B1 (en) | 2013-03-14 | 2014-09-02 | Joyent, Inc. | Instruction set architecture for compute-based object stores |
US8677359B1 (en) | 2013-03-14 | 2014-03-18 | Joyent, Inc. | Compute-centric object stores and methods of use |
US8943284B2 (en) | 2013-03-14 | 2015-01-27 | Joyent, Inc. | Systems and methods for integrating compute resources in a storage area network |
US9104456B2 (en) * | 2013-03-14 | 2015-08-11 | Joyent, Inc. | Zone management of compute-centric object stores |
US8881279B2 (en) | 2013-03-14 | 2014-11-04 | Joyent, Inc. | Systems and methods for zone-based intrusion detection |
US8793688B1 (en) | 2013-03-15 | 2014-07-29 | Joyent, Inc. | Systems and methods for double hulled virtualization operations |
US8775485B1 (en) | 2013-03-15 | 2014-07-08 | Joyent, Inc. | Object store management operations within compute-centric object stores |
US9092238B2 (en) | 2013-03-15 | 2015-07-28 | Joyent, Inc. | Versioning schemes for compute-centric object stores |
JP6191301B2 (ja) * | 2013-07-22 | 2017-09-06 | 富士通株式会社 | 情報処理装置、ジョブスケジューリング方法およびジョブスケジューリングプログラム |
DE102013224702A1 (de) * | 2013-12-03 | 2015-06-03 | Robert Bosch Gmbh | Steuergerät für ein Kraftfahrzeug |
US20150234449A1 (en) * | 2014-02-14 | 2015-08-20 | Qualcomm Incorporated | Fast power gating of vector processors |
JP6223224B2 (ja) * | 2014-02-21 | 2017-11-01 | ルネサスエレクトロニクス株式会社 | 画像処理装置、及びその制御方法 |
JP6299429B2 (ja) * | 2014-05-26 | 2018-03-28 | 富士通株式会社 | 情報処理装置、クロック制御プログラムおよびクロック制御方法 |
KR102285749B1 (ko) | 2014-11-10 | 2021-08-05 | 삼성전자주식회사 | 세마포어 기능을 갖는 시스템 온 칩 및 그것의 세마포어 구현 방법 |
CN104598311A (zh) * | 2015-01-26 | 2015-05-06 | 上海卓悠网络科技有限公司 | 一种面向Hadoop的实时作业公平调度的方法和装置 |
US9977762B2 (en) * | 2015-04-22 | 2018-05-22 | International Microsystems, Inc. | Disjoint array computer |
US11093878B2 (en) * | 2015-07-01 | 2021-08-17 | Oracle International Corporation | System and method for providing temporal dependencies between tasks |
US9778951B2 (en) * | 2015-10-16 | 2017-10-03 | Qualcomm Incorporated | Task signaling off a critical path of execution |
CN105611409B (zh) * | 2016-01-04 | 2019-12-27 | 京东方科技集团股份有限公司 | 一种广告机控制系统及其控制方法和广告机 |
US9965220B2 (en) * | 2016-02-05 | 2018-05-08 | Qualcomm Incorporated | Forced idling of memory subsystems |
US10296380B1 (en) * | 2016-09-19 | 2019-05-21 | Amazon Technologies, Inc. | Distributed computing with adaptive parallelization |
US20190072987A1 (en) * | 2017-11-02 | 2019-03-07 | Nri R&D Patent Licensing, Llc | Valve configurations facilitating clearing, cleaning, drying, and burst formation for microfluidic devices, fluidic arrangements, and other systems |
US11194800B2 (en) * | 2018-04-26 | 2021-12-07 | Microsoft Technology Licensing, Llc | Parallel search in program synthesis |
KR102184136B1 (ko) * | 2019-05-08 | 2020-11-27 | 국방과학연구소 | 계층적 스케줄링 시스템에서 자원 공급 모델의 주기를 결정하는 방법 및 장치 |
US11263114B2 (en) * | 2019-09-24 | 2022-03-01 | International Business Machines Corporation | Method and technique to find timing window problems |
WO2021100900A1 (ko) * | 2019-11-20 | 2021-05-27 | 전자부품연구원 | 적응형 딥러닝 가속 장치 및 방법 |
US11726823B2 (en) * | 2020-02-06 | 2023-08-15 | Samsung Electronics Co., Ltd. | Electronic device having heterogeneous processors and method of processing task using the heterogeneous processors |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08180025A (ja) | 1994-12-21 | 1996-07-12 | Toshiba Corp | スケジューリング装置 |
JPH10143380A (ja) | 1996-11-07 | 1998-05-29 | Hitachi Ltd | マルチプロセッサシステム |
US5974439A (en) * | 1997-11-21 | 1999-10-26 | International Business Machines Corporation | Resource sharing between real-time and general purpose programs |
JP3573957B2 (ja) * | 1998-05-20 | 2004-10-06 | インターナショナル・ビジネス・マシーンズ・コーポレーション | コンピュータ内のプロセッサの動作速度制御方法及びコンピュータ |
JP2000122747A (ja) | 1998-10-12 | 2000-04-28 | Nec Corp | ディジタル信号演算処理部の制御装置および方法 |
US6430694B1 (en) * | 1998-12-31 | 2002-08-06 | At&T Corp. | Method and apparatus for synchronizing the provision of data among geographically distributed databases |
JP4123640B2 (ja) * | 1999-06-16 | 2008-07-23 | ソニー株式会社 | 情報処理システム及びその制御方法、タスク割当て制御方法及び制御装置、並びにプログラム提供媒体 |
KR100487543B1 (ko) * | 2000-09-01 | 2005-05-03 | 엘지전자 주식회사 | 시피유 스케쥴링 방법 |
JP2002099432A (ja) * | 2000-09-22 | 2002-04-05 | Sony Corp | 演算処理システム及び演算処理制御方法、タスク管理システム及びタスク管理方法、並びに記憶媒体 |
JP2002215599A (ja) | 2001-01-18 | 2002-08-02 | Mitsubishi Electric Corp | マルチプロセッサシステムおよびその制御方法 |
US6622253B2 (en) * | 2001-08-02 | 2003-09-16 | Scientific-Atlanta, Inc. | Controlling processor clock rate based on thread priority |
JP2003099148A (ja) | 2001-09-19 | 2003-04-04 | Sanyo Electric Co Ltd | データ処理装置とこれに利用可能なシステム制御装置およびデータ変換方法 |
CN100485605C (zh) * | 2001-09-24 | 2009-05-06 | 中兴通讯股份有限公司 | 一种多任务实时操作系统的实现方法 |
JP3889726B2 (ja) | 2003-06-27 | 2007-03-07 | 株式会社東芝 | スケジューリング方法および情報処理システム |
JP3892829B2 (ja) | 2003-06-27 | 2007-03-14 | 株式会社東芝 | 情報処理システムおよびメモリ管理方法 |
JP4028444B2 (ja) | 2003-06-27 | 2007-12-26 | 株式会社東芝 | スケジューリング方法およびリアルタイム処理システム |
JP3920818B2 (ja) | 2003-07-22 | 2007-05-30 | 株式会社東芝 | スケジューリング方法および情報処理システム |
JP4025260B2 (ja) | 2003-08-14 | 2007-12-19 | 株式会社東芝 | スケジューリング方法および情報処理システム |
JP4057989B2 (ja) | 2003-09-26 | 2008-03-05 | 株式会社東芝 | スケジューリング方法および情報処理システム |
JP4197672B2 (ja) | 2004-09-30 | 2008-12-17 | 株式会社東芝 | マルチプロセッサ計算機及びプログラム |
JP4197673B2 (ja) | 2004-09-30 | 2008-12-17 | 株式会社東芝 | マルチプロセッサ計算機及びタスク実行方法 |
-
2003
- 2003-08-14 JP JP2003207572A patent/JP4025260B2/ja not_active Expired - Fee Related
-
2004
- 2004-07-08 EP EP04016114A patent/EP1622015A3/en not_active Withdrawn
- 2004-08-02 US US10/902,938 patent/US7464379B2/en active Active
- 2004-08-05 KR KR1020040061752A patent/KR20050016170A/ko not_active Application Discontinuation
- 2004-08-13 CN CNB2004100574958A patent/CN1295583C/zh active Active
-
2008
- 2008-10-08 US US12/247,509 patent/US8087020B2/en active Active
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100462924C (zh) * | 2005-03-25 | 2009-02-18 | 株式会社东芝 | 可调度性确定方法和实时系统 |
US7895453B2 (en) | 2005-04-12 | 2011-02-22 | Waseda University | Multiprocessor system and multigrain parallelizing compiler |
CN101504619B (zh) * | 2005-04-12 | 2012-08-08 | 学校法人早稻田大学 | 多粒度并行化编译方法 |
US8812880B2 (en) | 2005-04-12 | 2014-08-19 | Waseda University | Multiprocessor system and multigrain parallelizing compiler |
CN107153626A (zh) * | 2017-04-14 | 2017-09-12 | 河南思维轨道交通技术研究院有限公司 | 一种低速总线器件的访问方法 |
CN109215714A (zh) * | 2017-06-30 | 2019-01-15 | 希捷科技有限公司 | 用于增强存储设备的服务质量的存储系统、方法和非暂态计算机可读介质 |
WO2021093248A1 (zh) * | 2019-11-13 | 2021-05-20 | 上海商汤智能科技有限公司 | 调度方法及装置、电子设备和存储介质 |
CN114902159A (zh) * | 2020-01-06 | 2022-08-12 | Arm有限公司 | 功率管理系统和方法 |
CN112506152A (zh) * | 2020-12-02 | 2021-03-16 | 三一重型装备有限公司 | 一种采煤机及其控制器、控制方法 |
CN112506152B (zh) * | 2020-12-02 | 2022-03-22 | 三一重型装备有限公司 | 一种采煤机及其控制器、控制方法 |
Also Published As
Publication number | Publication date |
---|---|
KR20050016170A (ko) | 2005-02-21 |
US8087020B2 (en) | 2011-12-27 |
JP2005062956A (ja) | 2005-03-10 |
JP4025260B2 (ja) | 2007-12-19 |
US7464379B2 (en) | 2008-12-09 |
EP1622015A2 (en) | 2006-02-01 |
US20090044188A1 (en) | 2009-02-12 |
EP1622015A3 (en) | 2007-10-17 |
US20050066330A1 (en) | 2005-03-24 |
CN1295583C (zh) | 2007-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1295583C (zh) | 实现实时操作的方法和系统 | |
CN1287282C (zh) | 执行实时操作的方法和系统 | |
CN1287283C (zh) | 调度方法和信息处理系统 | |
CN1601474A (zh) | 执行实时操作的方法和系统 | |
CN1577311A (zh) | 调度方法和实时处理系统 | |
CN1113289C (zh) | 能执行多异步运行任务中的异步事件任务的处理器 | |
CN1280714C (zh) | 独立处理多个指令流、软式控制各指令流的处理功能的多线程处理器 | |
CN1156171C (zh) | 提高处理效率的图象声音处理装置 | |
CN100347671C (zh) | 程序接收执行装置及用于它的程序发送装置 | |
CN101036393A (zh) | 信息处理系统、信息处理方法和计算机程序 | |
CN1123838C (zh) | 群集控制系统 | |
CN1534504A (zh) | 利用单处理器操作系统的并行处理系统及并行处理程序 | |
CN1573656A (zh) | 并行处理系统中的电源管理系统及电源管理程序 | |
CN1734438A (zh) | 信息处理设备、信息处理方法和程序 | |
CN1427335A (zh) | 电路组控制系统 | |
CN1218565A (zh) | 多路径fifo库缓冲器以及总线传送控制系统 | |
CN1670721A (zh) | 应用单处理器操作系统的并行处理系统中的处理器间通信系统及其程序 | |
CN1916961A (zh) | 可中断图形处理单元及其控制方法 | |
CN1156862A (zh) | 文件系统 | |
CN1846194A (zh) | 一种在处理器中执行的计算线程的暂停与解除分配的整合机制 | |
CN1577316A (zh) | 单处理器操作系统并行处理系统中的安全管理系统 | |
CN1436333A (zh) | 支持无线手持多媒体设备的集成处理器平台 | |
CN1175034A (zh) | 存储器控制器和存储器控制系统 | |
CN1522006A (zh) | 数字传送网上不同的数据帧接入和传送的系统和方法 | |
CN1260643C (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 |