欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

調(diào)度方法和信息處理系統(tǒng)的制作方法

文檔序號(hào):6383942閱讀:169來源:國(guó)知局
專利名稱:調(diào)度方法和信息處理系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及調(diào)度用于執(zhí)行實(shí)時(shí)處理的線程群的調(diào)度方法和信息處理系統(tǒng)。
背景技術(shù)
以往,在服務(wù)器那樣的計(jì)算機(jī)系統(tǒng)中,為了謀求運(yùn)算處理能力的提高而利用多處理器、并行處理器那樣的系統(tǒng)結(jié)構(gòu)。多處理器和并行處理器都是通過利用多個(gè)處理器部件來實(shí)現(xiàn)運(yùn)算處理的并行化。
作為具有多個(gè)處理器部件的系統(tǒng),例如,眾所周知的是具有1個(gè)高速CPU、多個(gè)低速CPU以及共享存儲(chǔ)器的系統(tǒng)(例如,參照專利文獻(xiàn)1)。在該系統(tǒng)中,按照線程群的并行工作度的大小和處理時(shí)間的長(zhǎng)短來進(jìn)行處理程序的線程群對(duì)高速CPU以及多個(gè)低速CPU的分配。
另外,作為用于對(duì)多個(gè)處理器分配線程群的調(diào)度技術(shù),眾所周知的有使同一處理器執(zhí)行屬于同一進(jìn)程內(nèi)的線程的技術(shù)(例如參照專利文獻(xiàn)2)。
但是,最近不僅計(jì)算機(jī)系統(tǒng),例如在象實(shí)時(shí)地處理AV(音頻和視頻)數(shù)據(jù)那樣的大容量數(shù)據(jù)的內(nèi)部?jī)x器中,也為了提高其運(yùn)算處理能力而要求導(dǎo)入多處理器、并行處理器那樣的系統(tǒng)結(jié)構(gòu)。
專利文獻(xiàn)1-特開平10-143380號(hào)公報(bào)專利文獻(xiàn)2-特開平8-180025號(hào)公報(bào)但是,現(xiàn)實(shí)情況是幾乎沒有以多處理器、并行處理器那樣的系統(tǒng)結(jié)構(gòu)為前提的實(shí)時(shí)處理系統(tǒng)的報(bào)告。
在實(shí)時(shí)處理系統(tǒng)中,要求在某允許時(shí)間的限制內(nèi)完成各種處理。因此,當(dāng)生成用于執(zhí)行實(shí)時(shí)處理的程序時(shí),在程序的代碼中必須詳細(xì)記述各種處理的執(zhí)行開始定時(shí)、結(jié)束定時(shí)等的時(shí)間上的制約條件,在編程作業(yè)中需要大量的勞動(dòng)力和時(shí)間。而且,為了有效利用多個(gè)處理器部件,還需要在代碼中包含指定處理器的記述。

發(fā)明內(nèi)容
鑒于以上問題的存在,本發(fā)明目的在于提供即使在程序的代碼中沒有詳細(xì)地記述各種處理時(shí)間上的制約條件,也能高效地調(diào)度用于執(zhí)行實(shí)時(shí)處理的線程群的調(diào)度方法和信息處理系統(tǒng)。
為了解決上述的課題,本發(fā)明的調(diào)度方法,調(diào)度用于執(zhí)行由多個(gè)處理要素的組合構(gòu)成的實(shí)時(shí)處理的線程群,其特征在于包括輸入記述了與所述多個(gè)處理要素分別對(duì)應(yīng)的步驟的多個(gè)程序、表示所述多個(gè)程序之間的輸入輸出關(guān)系以及執(zhí)行所述各程序所需要的成本的構(gòu)成記述信息的步驟;通過根據(jù)所述構(gòu)成記述信息決定執(zhí)行所述多個(gè)程序的多個(gè)線程各自的執(zhí)行開始定時(shí)和執(zhí)行期間,來執(zhí)行分別將所述多個(gè)線程分配給一個(gè)以上處理器的調(diào)度處理的步驟。
根據(jù)該調(diào)度方法,根據(jù)構(gòu)成記述信息,決定執(zhí)行多個(gè)程序的多個(gè)線程各自的執(zhí)行開始定時(shí)和執(zhí)行時(shí)間。因此,在程序的代碼中即使不記述各自的處理時(shí)間的制約條件,也能高效地調(diào)度用于執(zhí)行實(shí)時(shí)處理的線程群。


下面簡(jiǎn)要說明附圖。
圖1是表示構(gòu)成本發(fā)明一實(shí)施例的實(shí)時(shí)處理系統(tǒng)的計(jì)算機(jī)系統(tǒng)的例子的框圖。
圖2是表示設(shè)置在同一實(shí)施例的實(shí)時(shí)處理中的MPU和VPU各自結(jié)構(gòu)的框圖。
圖3是表示同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)中使用的虛擬地址變換機(jī)構(gòu)的例子的圖。
圖4是表示映射到同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)中的實(shí)際地址空間中的數(shù)據(jù)的例子的圖。
圖5是用于說明同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)中的有效地址空間、虛擬地址空間、實(shí)際地址空間的圖。
圖6是表示數(shù)字電視廣播系統(tǒng)的接收機(jī)結(jié)構(gòu)的框圖。
圖7是表示由同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)執(zhí)行的程序模塊的結(jié)構(gòu)的圖。
圖8是表示圖7的程序模塊內(nèi)包含的構(gòu)成記述的例子的圖。
圖9是表示與圖7的程序模塊對(duì)應(yīng)的程序之間的數(shù)據(jù)流的圖。
圖10是表示由2個(gè)VPU并行執(zhí)行圖7的程序模塊的狀態(tài)的圖。
圖11是表示由2個(gè)VPU以流水線形式執(zhí)行圖7的程序模塊的狀態(tài)的圖。
圖12是表示同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)的操作系統(tǒng)的實(shí)施例的例子的圖。
圖13是表示同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)的操作系統(tǒng)的實(shí)施例的其他例子的圖。
圖14是表示同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)的虛擬計(jì)算機(jī)OS和客戶OS的關(guān)系的圖。
圖15是表示在同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)中通過分時(shí)對(duì)多個(gè)客戶OS分配資源的狀態(tài)的圖。
圖16是表示在同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)中由某特定的客戶OS占有特定的資源的狀態(tài)的圖。
圖17是表示在同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)中作為調(diào)度器使用的VPU執(zhí)行環(huán)境的圖。
圖18是表示在同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)中使用的虛擬計(jì)算機(jī)OS中安裝VPU執(zhí)行環(huán)境的例子的圖。
圖19是表示作為同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)中使用的一個(gè)客戶OS,安裝VPU執(zhí)行環(huán)境的例子的圖。
圖20是表示在同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)中使用的多個(gè)客戶OS中分別安裝VPU執(zhí)行環(huán)境的例子的圖。
圖21是表示在同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)中使用的一個(gè)客戶OS中分別安裝VPU執(zhí)行環(huán)境的例子的圖。
圖22是用于說明同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)中使用的MPU一側(cè)VPU執(zhí)行環(huán)境和VPU一側(cè)VPU執(zhí)行環(huán)境的圖。
圖23是表示由同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)中使用的VPU一側(cè)VPU執(zhí)行環(huán)境執(zhí)行的處理步驟的程序框圖。
圖24是表示由同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)中使用的MPU一側(cè)VPU執(zhí)行環(huán)境執(zhí)行的處理步驟的程序框圖。
圖25是表示在同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)中,屬于密結(jié)合線程組的線程群分別由不同的處理器同時(shí)執(zhí)行的狀態(tài)的圖。
圖26是用于說明同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)中的密結(jié)合線程間的相互作用的圖。
圖27是表示在同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)中,向各密結(jié)合線程的有效地址空間映射執(zhí)行對(duì)象的線程的VPU的局部存儲(chǔ)器的狀態(tài)的圖。
圖28是用于說明對(duì)屬于同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)的疏結(jié)合線程組的線程群的處理器分配的圖。
圖29是用于說明同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)的疏結(jié)合線程組間的相互作用的圖。
圖30是用于說明同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)的進(jìn)程和線程的關(guān)系的圖。
圖31是表示同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)的調(diào)度處理步驟的程序框圖。
圖32是用于說明有關(guān)同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)的局部存儲(chǔ)器的第一問題的圖。
圖33是表示同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)的物理VPU和邏輯VPU的關(guān)系的圖。
圖34是用于說明有關(guān)同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)的局部存儲(chǔ)器的第二問題的圖。
圖35是表示同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)的有效地址空間共享模型的圖。
圖36是表示同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)的虛擬地址空間共享模型的圖。
圖37是表示同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)的非共享模型的圖。
圖38是用于說明同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)的局部存儲(chǔ)器映射變更的第一圖。
圖39是用于說明同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)的局部存儲(chǔ)器映射變更的第二圖。
圖40是用于說明同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)的局部存儲(chǔ)器映射變更的第三圖。
圖41是用于說明同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)的局部存儲(chǔ)器映射變更的第四圖。
圖42是用于說明同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)的局部存儲(chǔ)器映射變更的第五圖。
圖43是表示在同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)中為了進(jìn)行局部存儲(chǔ)器的映射變更而執(zhí)行的地址管理處理步驟的程序框圖。
圖44是用于說明在同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)中執(zhí)行的局部存儲(chǔ)器和存儲(chǔ)器之間的映射變更的圖。
圖45是表示在同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)中執(zhí)行的局部存儲(chǔ)器和存儲(chǔ)器之間的映射變更處理步驟的程序框圖。
圖46是表示同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)中的線程狀態(tài)轉(zhuǎn)變的圖。
圖47是用于說明同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)中的線程和執(zhí)行期間的關(guān)系的圖。
圖48是表示同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)中的密結(jié)合線程群在某有效期間中同時(shí)執(zhí)行的狀態(tài)的圖。
圖49是表示同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)的周期執(zhí)行模型的圖。
圖50是表示同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)的非周期執(zhí)行模型的圖。
圖51是用于說明任務(wù)圖表的圖。
圖52是用于說明同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)中使用的預(yù)約圖表的原理的圖。
圖53是用于說明同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)中使用的預(yù)約圖表的例子的圖。
圖54是用于說明同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)中使用的階層型調(diào)度器的圖。
圖55是說明同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)為了硬實(shí)時(shí)處理類而使用的參數(shù)的例子的圖。
圖56是說明同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)中使用的絕對(duì)定時(shí)制約的圖。
圖57是說明同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)中使用的相對(duì)定時(shí)制約的圖。
圖58是說明同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)中使用的互斥制約的圖。
圖59用于說明同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)中的同步機(jī)構(gòu)的圖。
圖60是表示同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)中分開使用同步機(jī)構(gòu)的步驟的程序框圖。
圖61是表示同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)中使用的預(yù)約圖表的例子的圖。
圖62是表示同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)中生成的預(yù)約請(qǐng)求的例子的圖。
圖63是表示同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)根據(jù)圖62的預(yù)約請(qǐng)求執(zhí)行的調(diào)度的例子的圖。
圖64是用于說明由同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)執(zhí)行的軟件流水線形式的調(diào)度的第一圖。
圖65是用于說明由同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)執(zhí)行的軟件流水線形式的調(diào)度的第二圖。
圖66是用于說明在同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)中執(zhí)行的考慮緩存量的調(diào)度的第一圖。
圖67是用于說明在同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)中執(zhí)行的考慮緩存量的調(diào)度的第二圖。
圖68是用于說明在同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)中執(zhí)行的考慮緩存量的調(diào)度的第三圖。
圖69是表示在同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)中執(zhí)行的考慮緩存量的調(diào)度處理的步驟的程序框圖。
圖70是表示同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)中使用的具有階層構(gòu)造的預(yù)約圖表的例子的圖。
圖71是表示由同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)生成的考慮密結(jié)合線程組的預(yù)約請(qǐng)求的例子的圖。
圖72是表示同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)根據(jù)圖71的預(yù)約請(qǐng)求進(jìn)行的調(diào)度的例子的圖。
圖73是表示同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)中使用的預(yù)約請(qǐng)求的例子的圖。
圖74是表示同一實(shí)施例的實(shí)時(shí)處理系統(tǒng)中的執(zhí)行期間預(yù)約處理的步驟的程序框圖。
下面,簡(jiǎn)要說明附圖符號(hào)。
11-MPU(Master Processing Unit);12-VPU(Slave ProcessingUnit);14-主存儲(chǔ)器;21-處理部件;22-存儲(chǔ)器管理部件;31-處理部件;32-局部存儲(chǔ)器;33-存儲(chǔ)器控制器;50-段表;60-頁表;100-程序模塊;111~116-程序;117-構(gòu)成記述;331-地址變換部件;401-VPU執(zhí)行環(huán)境。
具體實(shí)施例方式
下面,參照附圖來說明本發(fā)明的實(shí)施例。
圖1表示用于實(shí)現(xiàn)本發(fā)明一實(shí)施例的實(shí)時(shí)處理系統(tǒng)的計(jì)算機(jī)系統(tǒng)的構(gòu)成例。該計(jì)算機(jī)系統(tǒng)是在時(shí)間制約條件的范圍內(nèi)執(zhí)行要求實(shí)時(shí)性的各種處理的信息處理系統(tǒng),除了能作為通用計(jì)算機(jī)利用,還能作為用于執(zhí)行要求實(shí)時(shí)性的處理的各種電子儀器的嵌入系統(tǒng)利用。如圖1所示,在該計(jì)算機(jī)系統(tǒng)中,主處理部件(MPU11Master Processing Unit)11、多個(gè)通用處理部件(VPUVersatile Processing Unit)12、主存儲(chǔ)器14、輸入輸出控制裝置15通過連接裝置13相互連接。連接裝置13例如由縱橫開關(guān)那樣的相互結(jié)合網(wǎng)或總線構(gòu)成。也能使用環(huán)狀的總線構(gòu)造。MPU11是控制計(jì)算機(jī)系統(tǒng)的動(dòng)作的主處理器。操作系統(tǒng)(OSOperating System)主要由MPU11執(zhí)行。OS的一部分功能能由VPU12或輸入輸出控制裝置15分擔(dān)執(zhí)行。各VPU12是在MPU11的管理下執(zhí)行各種處理的處理器。MPU11進(jìn)行對(duì)多個(gè)VPU12分配處理,使之并行執(zhí)行的控制。據(jù)此,能以高速進(jìn)行高效的處理的執(zhí)行。主存儲(chǔ)器14是由MPU11、多個(gè)VPU12以及輸入輸出控制裝置15共享的存儲(chǔ)裝置(共享存儲(chǔ)器)。OS和應(yīng)用程序存儲(chǔ)在主存儲(chǔ)器14中。在輸入輸出控制裝置15上連接一個(gè)或多條輸入輸出總線(輸入輸出裝置)16。輸入輸出控制裝置15也稱作橋。
連接裝置15具有保證數(shù)據(jù)傳輸速度的QoS功能。該功能通過用預(yù)約的帶寬(傳輸速度)執(zhí)行通過連接裝置15的數(shù)據(jù)傳輸而實(shí)現(xiàn)。QoS功能例如在從VPU12向存儲(chǔ)器14以5Mbps發(fā)送寫入數(shù)據(jù)時(shí)、或VPU12與其它VPU12之間以100Mbps傳輸數(shù)據(jù)時(shí)利用。VPU12對(duì)連接裝置13指定(預(yù)約)帶寬(傳輸速度)。連接裝置13對(duì)要求的VPU12優(yōu)先分配執(zhí)行的帶寬。如果對(duì)某VPU12的數(shù)據(jù)傳輸預(yù)約了帶寬,在基于該VPU12的數(shù)據(jù)傳輸中,即使其他VPU12、MPU11或輸入輸出控制裝置15進(jìn)行大量的數(shù)據(jù)傳輸,也能確保預(yù)約的帶寬。該功能特別是對(duì)進(jìn)行實(shí)時(shí)處理的計(jì)算機(jī)是重要的功能。
在圖1的結(jié)構(gòu)中,MPU11是1個(gè),VPU12為4個(gè),存儲(chǔ)器14為1個(gè),輸入輸出控制裝置為1個(gè),但是未限制VPU12的個(gè)數(shù)。另外,也可以是不具有MPU11的結(jié)構(gòu)。此時(shí),某一個(gè)VPU12擔(dān)當(dāng)MPU11進(jìn)行的處理。即VPU兼任虛擬的MPU11的角色。
圖2表示MPU11和各VPU12的結(jié)構(gòu)。MPU11具有處理部件21和存儲(chǔ)器管理部件22。處理部件21通過存儲(chǔ)器管理部件22訪問存儲(chǔ)器14。存儲(chǔ)器管理部件22是進(jìn)行虛擬存儲(chǔ)管理、存儲(chǔ)器管理部件22內(nèi)的高速緩沖存儲(chǔ)器的管理的部件。各VPU12具有處理部件31、局部存儲(chǔ)器32、存儲(chǔ)器控制器33。各VPU12的處理部件31能直接訪問VPU內(nèi)部的局部存儲(chǔ)器32。存儲(chǔ)器控制器33具有進(jìn)行局部存儲(chǔ)器32和存儲(chǔ)器14之間的數(shù)據(jù)傳輸?shù)腄MA控制器的功能。該存儲(chǔ)器控制器33能利用連接裝置14的QoS功能,具有預(yù)約帶寬的功能和以預(yù)約的帶寬進(jìn)行數(shù)據(jù)的輸入輸出的功能。另外,存儲(chǔ)器控制器33具有與MPU11的存儲(chǔ)器管理部件22同樣的虛擬存儲(chǔ)管理功能。VPU12的處理部件31把局部存儲(chǔ)器32作為主存儲(chǔ)使用。處理部件31不直接訪問存儲(chǔ)器14,指示存儲(chǔ)器控制器33,把存儲(chǔ)器14的內(nèi)容向局部存儲(chǔ)器32傳輸,或把局部存儲(chǔ)器32的內(nèi)容寫入存儲(chǔ)器14。
由MPU11的存儲(chǔ)器管理部件22和VPU12的存儲(chǔ)器控制器33分貝執(zhí)行的虛擬存儲(chǔ)管理例如能象圖3那樣實(shí)施。從MPU11的處理部件21或VPU12的存儲(chǔ)器控制器33觀察的地址是圖3的上方部分所示的64位地址。該64位地址中,高位的36位為段編號(hào),中央的16位為頁編號(hào),低位的12位為頁偏移量。使用段表50和頁表60執(zhí)行從該地址向?qū)嶋H通過連接裝置13訪問的實(shí)際地址空間的變換。段表50和頁表60分別設(shè)置在存儲(chǔ)器管理部件22和存儲(chǔ)器控制器33中。
如圖4所示,把以下的數(shù)據(jù)映射到從MPU11和VPU12觀察的實(shí)際地址(RA)空間中。
1.存儲(chǔ)器(主存儲(chǔ)裝置)2.MPU11的各種控制寄存器3.各VPU12的各種寄存器4.各VPU12的局部存儲(chǔ)器5.各種輸入輸出設(shè)備(輸入輸出裝置)的控制寄存器(也包含輸入輸出控制裝置的控制寄存器)MPU11和VPU12通過訪問實(shí)際地址空間的相應(yīng)的地址,能讀寫1~5的各數(shù)據(jù)。重要的是通過訪問實(shí)際地址空間,從任意MPU11或從任意VPU12、從輸入輸出控制裝置15都能訪問任意的VPU12的局部存儲(chǔ)器32。另外,使用段表或頁表,也能保護(hù)VPU12的局部存儲(chǔ)器32的內(nèi)容不被自由讀寫。
使用圖3的虛擬存儲(chǔ)機(jī)制把從MPU11或VPU12觀察的地址空間映射為圖5所示那樣。從在MPU11或VPU12上執(zhí)行的程序能直接觀察到的是有效地址(EA;Efiective Address)空間。EA通過段表50映射到虛擬地址(VA;Virtual Address)空間。VA通過頁表60映射到實(shí)際地址(RA;Real Address)空間。該RA具有圖4中說明的構(gòu)造。
MPU11通過控制寄存器等硬件機(jī)構(gòu),進(jìn)行各VPU12的寄存器的讀寫、各VPU12的程序的執(zhí)行開始/停止等的VPU12的管理。另外,能通過郵箱或事件標(biāo)志等硬件機(jī)構(gòu)進(jìn)行MPU11和VPU12之間、或VPU12和其他VPU12之間的通信或同步。
本實(shí)施例的計(jì)算機(jī)系統(tǒng)能使用軟件實(shí)現(xiàn)以往由硬件實(shí)現(xiàn)的實(shí)時(shí)性要求嚴(yán)的儀器的動(dòng)作。例如,某VPU12執(zhí)行與構(gòu)成某硬件的幾個(gè)硬件組件對(duì)應(yīng)的運(yùn)算處理,與此并行,其他VPU12執(zhí)行與其它幾個(gè)硬件組件對(duì)應(yīng)的運(yùn)算處理。
圖6表示數(shù)字電視廣播的接收機(jī)的簡(jiǎn)化的硬件結(jié)構(gòu)。在圖6中,接收的廣播信號(hào)通過DEMUX(信號(hào)分離器)電路101分解為與聲音數(shù)據(jù)、圖象數(shù)據(jù)、字幕數(shù)據(jù)分別對(duì)應(yīng)的壓縮編碼的數(shù)據(jù)流。壓縮編碼的聲音數(shù)據(jù)流由A-DEC(聲音解碼器)電路102解碼。壓縮編碼的圖象數(shù)據(jù)流由V-DEC(圖象解碼器)電路103解碼。解碼的圖象數(shù)據(jù)流發(fā)送給PROG(順次變換)電路105,在那里進(jìn)行用于變換為順次圖象信號(hào)的順次變換處理。把順次變換的圖象數(shù)據(jù)流發(fā)送給BLEND(圖象合成)電路106。字幕數(shù)據(jù)流由TEXT(字幕處理)電路104變換為字幕的圖象后,發(fā)送給BLEND電路106。BLEND電路106把從PROG電路105發(fā)送來的圖象和從TEXT電路104發(fā)送來的字幕圖象合成,作為圖象流輸出。這一系列的處理根據(jù)圖象的幀頻(例如,1秒鐘30場(chǎng)景、32場(chǎng)景或60場(chǎng)景)重復(fù)執(zhí)行。
為了通過軟件執(zhí)行圖6那樣的硬件的動(dòng)作,在本實(shí)施例中,例如如圖7所示,準(zhǔn)備把各硬件的動(dòng)作作為軟件而實(shí)現(xiàn)的程序模塊100。該程序模塊100是使計(jì)算機(jī)系統(tǒng)執(zhí)行與圖6的DEMUX電路101、A-DEC電路102、V-DEC電路103、TEXT電路104、PROG電路105、BLEND電路106對(duì)應(yīng)的處理的應(yīng)用程序,使用多線程編程記述。該程序模塊100由分別作為線程執(zhí)行的多個(gè)程序(多個(gè)例行程序群)構(gòu)成。即在程序模塊100中包含DEMUX程序111、A-DEC程序112、V-DEC程序113、TEXT程序114、PROG程序115、BLEND程序116。DEMUX程序111、A-DEC程序112、V-DEC程序113、TEXT程序114、PROG程序115、BLEND程序116是記述分別與圖6的DEMUX電路101、A-DEC電路102、V-DEC電路103、TEXT電路104、PROG電路105、BLEND電路106對(duì)應(yīng)的處理要素所對(duì)應(yīng)的步驟的程序,分別作為線程執(zhí)行。即在程序模塊100的執(zhí)行時(shí),生成與DEMUX程序111、A-DEC程序112、V-DEC程序113、TEXT程序114、PROG程序115、BLEND程序116分別對(duì)應(yīng)的線程,生成的線程分別分配給1以上的VPU12,執(zhí)行。在VPU12的局部存儲(chǔ)器32中加載與分配到該VPU12的線程對(duì)應(yīng)的程序,線程執(zhí)行局部存儲(chǔ)器32上的程序。把與構(gòu)成數(shù)字電視廣播的接收機(jī)的硬件模塊群分別對(duì)應(yīng)的程序111~116、稱作構(gòu)成記述117的數(shù)據(jù)打包,變?yōu)閷?shí)現(xiàn)數(shù)字電視廣播的程序模塊100。
構(gòu)成記述117是表示應(yīng)該怎樣組合執(zhí)行程序模塊100內(nèi)的各程序(線程)的信息,表示程序111~116間的輸入輸出關(guān)系以及各程序的處理所需要的成本(時(shí)間)。圖8表示構(gòu)成記述117的例子。
在圖8的構(gòu)成記述117的例子中,對(duì)作為線程工作的各模塊(程序模塊100內(nèi)的各程序),記述與輸入有關(guān)的模塊、與輸出有關(guān)的模塊、模塊的執(zhí)行所需的成本、向與輸出有關(guān)的模塊的輸出所需要的緩存器尺寸。例如編號(hào)③的V-DEC程序把編號(hào)①的DEMUX程序的輸出作為輸入,其輸出向著編號(hào)⑤的PROG程序,其輸出所需要的緩存器為1MB,編號(hào)③的V-DEC程序自身的執(zhí)行成本為50。須指出的是,執(zhí)行所需要的成本能以執(zhí)行所需要的時(shí)間(執(zhí)行期間)或步驟數(shù)為單位記述。另外,也能把用任意的虛擬規(guī)格的VPU執(zhí)行時(shí)的時(shí)間作為單位。有時(shí)根據(jù)計(jì)算機(jī),VPU的規(guī)格或處理性能不同,所以這樣設(shè)置虛擬的單位,表現(xiàn)成本是希望的形態(tài)。根據(jù)圖8所示的構(gòu)成記述117執(zhí)行時(shí)的程序之間的數(shù)據(jù)流如圖9所述。
在構(gòu)成記述117中,把表示與程序111~116分別對(duì)應(yīng)的線程間的結(jié)合屬性的結(jié)合屬性信息作為線程參數(shù)記述。須指出的是,在線程參數(shù)也能作為代碼直接記述在程序111~116中。
下面,參照?qǐng)D10、圖11說明由本實(shí)施力計(jì)算機(jī)系統(tǒng)怎樣執(zhí)行程序111~116。在此,假定在計(jì)算機(jī)系統(tǒng)中設(shè)置有VPU0和VPU1等兩個(gè)VPU12的結(jié)構(gòu)。圖10是按照時(shí)間記述以每秒30幀顯示圖象時(shí)對(duì)各VPU12的程序的分配。在此,在周期1中,輸出1幀的聲音和圖象。首先,DEMUX程序用VPU0進(jìn)行處理,把結(jié)果的聲音、圖象和字幕的數(shù)據(jù)寫入緩存器中。然后,用VPU1依次執(zhí)行A-DEC程序和TEXT程序,把各種處理結(jié)果寫入緩存器中。在VPU0中,V-DEC程序進(jìn)行圖象數(shù)據(jù)的處理,把結(jié)果寫入緩存器中。在VPU0中,PROG程序接著進(jìn)行處理,把結(jié)果寫入緩存器中。此時(shí),因?yàn)樵赩PU1的TEXT處理結(jié)束,所以用VPU0進(jìn)行最后的BLEND程序的執(zhí)行,生成最終的圖象數(shù)據(jù)。每周期重復(fù)執(zhí)行該處理流。
如在此所述的那樣,把為了能不拖延地進(jìn)行所需的動(dòng)作,在各VPU12上決定何時(shí)執(zhí)行哪個(gè)程序的作業(yè)稱作調(diào)度。在本實(shí)施例中,把進(jìn)行調(diào)度的模塊稱作調(diào)度器。在本實(shí)施例中,根據(jù)程序模塊100中包含的上述的構(gòu)成記述117進(jìn)行調(diào)度。即在調(diào)度處理中,根據(jù)構(gòu)成記述117決定執(zhí)行多個(gè)程序111~116的多個(gè)線程的執(zhí)行開始定時(shí)和執(zhí)行期間,多個(gè)線程分別分配給1以上的VPU12。在程序模塊100的執(zhí)行時(shí)進(jìn)行以下處理。
1.VPU執(zhí)行環(huán)境401從存儲(chǔ)它的外部存儲(chǔ)裝置或存儲(chǔ)器13輸入程序模塊100,讀入構(gòu)成記述117。
2.VPU執(zhí)行環(huán)境401通過根據(jù)構(gòu)成記述117,決定用于執(zhí)行程序模塊100內(nèi)的多個(gè)程序111~116的多個(gè)線程(DEMUX、V-DEC、A-DEC、TEXT、PROG、BLEND)的各自的執(zhí)行開始定時(shí)和執(zhí)行期間,把多個(gè)線程(DEMUX、V-DEC、A-DEC、TEXT、PROG、BLEND)分配給1以上的VPU來執(zhí)行。
這樣,在本實(shí)施例的實(shí)時(shí)處理系統(tǒng)中,根據(jù)程序模塊100中包含的構(gòu)成記述117,決定執(zhí)行多個(gè)程序111~116的多個(gè)線程(DEMUX、V-DEC、A-DEC、TEXT、PROG、BLEND)各自的執(zhí)行開始定時(shí)和執(zhí)行期間,所以即使不在程序的代碼中詳細(xì)記述各種處理的時(shí)間制約條件,也能高效地調(diào)度用于執(zhí)行實(shí)時(shí)處理的線程群。
圖11表示以每秒60幀顯示時(shí)的執(zhí)行的樣子。與圖10的不同之處在于在圖10中是每秒30幀,所以1周期(1/30秒)中完成1幀的處理,而在圖11中,需要每秒60幀的處理。即在1周期(1/60秒)中,無法結(jié)束1幀的處理,所以在圖11中,跨多個(gè)(在此是2)周期進(jìn)行軟件流水線處理。例如,對(duì)在周期1的開始輸入的信號(hào),用VPU0進(jìn)行DEMUX處理和V-DEC處理。然后,在周期2中,用VPU1進(jìn)行A-DEC、TEXT、PROG、BLEND等各種處理,輸出最終的圖象數(shù)據(jù)。在周期2中,VPU0進(jìn)行下一幀的DEMUX處理和V-DEC處理。這樣,跨2周期以流水線形式執(zhí)行基于VPU0的DEMUX、V-DEC處理基于VPU1的A-DEC、TEXT、PROG、BLEND處理。
須指出的是,圖7所示的程序模塊100可以預(yù)先記錄在組入本實(shí)施例的計(jì)算機(jī)系統(tǒng)的儀器內(nèi)的閃存ROM或硬盤中,但是也可以通過網(wǎng)絡(luò)流通。此時(shí),按照通過網(wǎng)絡(luò)下載的程序模塊的種類,決定由本實(shí)施例的計(jì)算機(jī)系統(tǒng)執(zhí)行的處理的內(nèi)容。因此,例如在組入本實(shí)施例的計(jì)算機(jī)系統(tǒng)的儀器內(nèi),能執(zhí)行與各種專用硬件分別對(duì)應(yīng)的實(shí)時(shí)處理。例如,通過把新的內(nèi)容的再現(xiàn)所需要的新播放器軟件或解碼器軟件或加密軟件等作為本實(shí)施例的計(jì)算機(jī)系統(tǒng)能執(zhí)行的程序模塊與內(nèi)容一起發(fā)送,如果是搭載了本實(shí)施例的計(jì)算機(jī)系統(tǒng)的儀器,則在任意的儀器中,在其能力允許的范圍中,能再現(xiàn)該內(nèi)容。
(操作系統(tǒng))在本計(jì)算機(jī)系統(tǒng)中,在系統(tǒng)內(nèi)只安裝一個(gè)OS(操作系統(tǒng))時(shí),如圖12所示,OS201管理全部的安裝資源(例如,MPU11、VPU12、存儲(chǔ)器14、輸入輸出控制裝置15、輸入輸出裝置16等)。
而使用虛擬計(jì)算機(jī)方式,也能同時(shí)使多個(gè)OS工作。此時(shí),如圖13所示首先安裝虛擬計(jì)算機(jī)OS301,它管理全部的實(shí)際資源(例如,MPU11、VPU12、存儲(chǔ)器14、輸入輸出控制裝置15、輸入輸出裝置16等)。虛擬計(jì)算機(jī)OS301也稱作主機(jī)OS。在虛擬計(jì)算機(jī)OS301上安裝一個(gè)以上的OS(也稱作客戶OS)。各客戶OS302、303如圖14所示,在由虛擬計(jì)算機(jī)OS301提供的虛擬計(jì)算機(jī)資源構(gòu)成的計(jì)算機(jī)上工作,對(duì)客戶OS302、303管理的應(yīng)用程序提供各種服務(wù)。在圖14的例子中,認(rèn)為客戶OS302在由1個(gè)MPU11、2個(gè)VPU12、存儲(chǔ)器14構(gòu)成的計(jì)算機(jī)上工作,認(rèn)為客戶OS303在由1個(gè)MPU11、4個(gè)VPU12、存儲(chǔ)器14構(gòu)成的計(jì)算機(jī)上工作。虛擬計(jì)算機(jī)OS301管理從客戶OS302觀察的VPU12、從客戶OS303觀察的VPU12實(shí)際與實(shí)際資源的哪個(gè)VPU12對(duì)應(yīng)??蛻鬙S302、303沒必要意識(shí)到該對(duì)應(yīng)。
虛擬計(jì)算機(jī)OS301進(jìn)行客戶OS302、303的調(diào)度,以便用分時(shí)把計(jì)算機(jī)系統(tǒng)全體的資源分配給各客戶OS302、303。例如,客戶OS302為進(jìn)行實(shí)時(shí)處理的。例如,當(dāng)想在1秒鐘30次、以正確的速度進(jìn)行處理時(shí),各客戶OS302在虛擬計(jì)算機(jī)OS301中設(shè)定該參數(shù)。虛擬計(jì)算機(jī)OS301進(jìn)行調(diào)度,按1/30秒1次,可靠地對(duì)客戶OS301分配必要的處理時(shí)間。在進(jìn)行不要求實(shí)時(shí)性的處理的客戶OS中,進(jìn)行調(diào)度,以比要求實(shí)時(shí)性的客戶OS還低的優(yōu)先級(jí),進(jìn)行處理時(shí)間的分配。圖15表示以時(shí)間軸為橫軸,表示客戶OS302和客戶OS303一邊切換,一邊工作的樣子。當(dāng)客戶OS302工作時(shí),MPU11和全部VPU12作為客戶OS302的資源使用,當(dāng)客戶OS303工作時(shí),MPU11和全部VPU12作為客戶OS303的資源使用。
圖16表示其他工作模式。根據(jù)目標(biāo)應(yīng)用程序,有時(shí)想一直占有VPU12。例如,需要總監(jiān)視數(shù)據(jù)或事件的應(yīng)用程序相當(dāng)于此。此時(shí),虛擬計(jì)算機(jī)301的調(diào)度器進(jìn)行調(diào)度管理,以便由特定的客戶OS占有特定的VPU12。在圖16中,是把VPU4指定為客戶OS301的專用資源時(shí)的例子。虛擬計(jì)算機(jī)OS301即使切換客戶OS302(OS1)和客戶OS303(OS2),VPU4也總在客戶OS301(OS1)的管理下繼續(xù)工作。
為了使用多個(gè)VPU12使程序工作,在本實(shí)施例中使用包含用于調(diào)度分別分配給多個(gè)VPU12的線程的調(diào)度器的稱作VPU執(zhí)行環(huán)境的軟件模塊。當(dāng)在本計(jì)算機(jī)系統(tǒng)中只搭載一個(gè)OS時(shí),如圖17所示,在該OS201中安裝VPU執(zhí)行環(huán)境401。此時(shí),VPU執(zhí)行環(huán)境401也能安裝在OS201的內(nèi)核內(nèi),也能以用戶程序水平安裝,也能安裝為分割為兩者,協(xié)調(diào)工作。而當(dāng)在虛擬計(jì)算機(jī)OS上使一個(gè)或多個(gè)OS工作時(shí),在安裝VPU執(zhí)行環(huán)境401的方式中存在以下的方式。
1.在虛擬計(jì)算機(jī)OS301中安裝VPU執(zhí)行環(huán)境401的方式(圖18)。
2.把VPU執(zhí)行環(huán)境401作為虛擬計(jì)算機(jī)OS301管理的一個(gè)OS安裝的方式(圖19)。在圖19中,在虛擬計(jì)算機(jī)OS301上工作的客戶OS304自身是VPU執(zhí)行環(huán)境401。
3.在虛擬計(jì)算機(jī)OS301管理的各客戶OS中分別安裝專用的VPU執(zhí)行環(huán)境401的方式(圖20)。在圖20中,在客戶OS302、303中分別安裝VPU執(zhí)行環(huán)境401、402。VPU執(zhí)行環(huán)境401、402使用虛擬計(jì)算機(jī)OS301提供的客戶OS間的通信功能,根據(jù)需要,彼此聯(lián)合工作。
4.在虛擬計(jì)算機(jī)OS301管理的客戶OS中的一個(gè)上安裝VPU執(zhí)行環(huán)境401,不具有VPU執(zhí)行環(huán)境的客戶OS使用虛擬計(jì)算機(jī)OS301提供的客戶OS間的通信功能,利用具有VPU執(zhí)行環(huán)境401的客戶OS的VPU執(zhí)行環(huán)境401的方式(圖21)。
這些方式的優(yōu)點(diǎn)如下所述。
方式1的優(yōu)點(diǎn)因?yàn)槟馨烟摂M計(jì)算機(jī)OS具有的客戶OS(虛擬計(jì)算機(jī)OS管理的對(duì)象的OS)的調(diào)度、VPU12的調(diào)度一體化,所以能高效地進(jìn)行極細(xì)致的調(diào)度,能有效利用資源。
因?yàn)樵诙鄠€(gè)客戶OS間共享VPU執(zhí)行環(huán)境,所以當(dāng)導(dǎo)入新的客戶OS時(shí),可以不新生成VPU執(zhí)行環(huán)境。
方式2的優(yōu)點(diǎn)因?yàn)樵谖挥谔摂M計(jì)算機(jī)OS上的客戶OS間能共享VPU12的調(diào)度器,所以能高效地進(jìn)行極細(xì)致的調(diào)度,能有效利用資源。
因?yàn)樵诙鄠€(gè)客戶OS間共享VPU執(zhí)行環(huán)境,所以當(dāng)導(dǎo)入新的客戶時(shí),可以不新生成VPU執(zhí)行環(huán)境。
因?yàn)椴灰来嬗谔摂M計(jì)算機(jī)OS或特定的客戶OS生成VPU執(zhí)行環(huán)境,所以容易標(biāo)準(zhǔn)化,交換使用。生成適合于特定的內(nèi)部?jī)x器的VPU執(zhí)行環(huán)境,進(jìn)行充分利用該儀器特性的調(diào)度,能實(shí)現(xiàn)高效的執(zhí)行。
方式3的優(yōu)點(diǎn)對(duì)各客戶OS安裝最適合的VPU執(zhí)行環(huán)境,所以能高效地進(jìn)行極細(xì)致的調(diào)度,能有效利用資源。
方式4的優(yōu)點(diǎn)因?yàn)闆]必要全部客戶OS安裝VPU執(zhí)行環(huán)境,所以容易追加新的客戶OS。
這樣能用任意的方式安裝VPU執(zhí)行環(huán)境。另外,也能適當(dāng)實(shí)施。
(服務(wù)提供者)在本實(shí)施例的計(jì)算機(jī)系統(tǒng)中,VPU執(zhí)行環(huán)境401除了與各VPU12關(guān)聯(lián)的各種資源(各VPU的處理時(shí)間、存儲(chǔ)器、連接裝置的帶寬等)的管理和調(diào)度功能,還提供各種服務(wù)(使用網(wǎng)絡(luò)的通信功能、文件的輸入輸出功能、多媒體數(shù)字信號(hào)編解碼器等庫功能的調(diào)用、與用戶的界面處理、使用輸入輸出設(shè)備的輸入輸出處理、日期或時(shí)間的讀出)。這些服務(wù)由在VPU12上工作的應(yīng)用程序調(diào)用,當(dāng)為簡(jiǎn)單的服務(wù)時(shí),用VPU12上的服務(wù)程序處理。但是,有關(guān)通信或晚間的處理等只在VPU12中無法處理的服務(wù),通過MPU11上的服務(wù)程序處理。把提供這樣的服務(wù)的程序稱作服務(wù)提供者(SP)。
圖22表示VPU執(zhí)行環(huán)境的一個(gè)實(shí)施例。VPU執(zhí)行環(huán)境的主要部分存在于MPU11上。它是MPU一側(cè)VPU執(zhí)行環(huán)境501。在各VPU12上存在具有執(zhí)行在VPU12內(nèi)能處理的服務(wù)的最小限度的功能的VPU一側(cè)VPU執(zhí)行環(huán)境502。MPU一側(cè)VPU執(zhí)行環(huán)境501大致分為VPU控制511、服務(wù)代理512等兩個(gè)。VPU控制512主要提供與各VPU12關(guān)聯(lián)的各種資源(VPU的處理時(shí)間、存儲(chǔ)器、虛擬空間、連接裝置的帶寬等)的管理機(jī)構(gòu)、同步機(jī)構(gòu)、安全的管理機(jī)構(gòu)、調(diào)度功能。有關(guān)調(diào)度結(jié)果,進(jìn)行VPU12上的程序的分配的是該VPU控制511。服務(wù)代理512接收VPU12上的應(yīng)用程序調(diào)用的服務(wù)要求,調(diào)用適當(dāng)?shù)姆?wù)程序(服務(wù)提供者),提供服務(wù)。
VPU一側(cè)VPU執(zhí)行環(huán)境502主要接收VPU12上的應(yīng)用程序調(diào)用的服務(wù)要求,處理在VPU12內(nèi)能處理的,把不能處理的向MPU一側(cè)VPU執(zhí)行環(huán)境501的服務(wù)代理512委托處理。
圖23表示VPU一側(cè)VPU執(zhí)行環(huán)境502處理服務(wù)要求的步驟。VPU一側(cè)VPU執(zhí)行環(huán)境502如果接收來自應(yīng)用程序的服務(wù)調(diào)用(步驟S101),就判別是否為在VPU執(zhí)行環(huán)境502內(nèi)能處理的服務(wù)(步驟S102),如果是,就執(zhí)行對(duì)應(yīng)的服務(wù),把結(jié)果返回調(diào)用源(步驟S103、S107)。而如果不是在VPU執(zhí)行環(huán)境502內(nèi)能處理的服務(wù),判斷能執(zhí)行該服務(wù)的服務(wù)程序是否登記為VPU12上的能執(zhí)行的程序(步驟S104)。如果登記了,就執(zhí)行該服務(wù)程序,把結(jié)果返回調(diào)用源(步驟S105、S107)。如果未登記,就把處理委托給服務(wù)代理512,然后把從服務(wù)代理512返回的服務(wù)的結(jié)果發(fā)送給調(diào)用源(步驟S106、S107)。
圖24表示MPU一側(cè)VPU執(zhí)行環(huán)境501的服務(wù)代理512處理從VPU一側(cè)VPU執(zhí)行環(huán)境502要求的服務(wù)的步驟。服務(wù)代理512如果接收到來自VPU一側(cè)VPU執(zhí)行環(huán)境502的服務(wù)調(diào)用(步驟S111),就判別是否為在VPU執(zhí)行環(huán)境501內(nèi)能處理的服務(wù)(步驟S112),如果是,就執(zhí)行對(duì)應(yīng)的服務(wù),把結(jié)果發(fā)送給調(diào)用源的VPU一側(cè)VPU執(zhí)行環(huán)境502(步驟S113、S114)。而如果不是VPU執(zhí)行環(huán)境501內(nèi)能處理的服務(wù),就判斷能執(zhí)行該服務(wù)的服務(wù)程序是否登記為MPU11上的能執(zhí)行的程序(步驟S114)。如果登記了,就執(zhí)行該服務(wù)程序,把結(jié)果返回調(diào)用源的VPU一側(cè)VPU執(zhí)行環(huán)境502(步驟S116、S114)。如果未登記,就把錯(cuò)誤返回調(diào)用源的VPU一側(cè)VPU執(zhí)行環(huán)境502(步驟S117)。
須指出的是,在由VPU12執(zhí)行的程序發(fā)出的服務(wù)要求中既存在返回服務(wù)的執(zhí)行結(jié)果的應(yīng)答,也存在只發(fā)出要求,沒有應(yīng)答的。另外,應(yīng)答目標(biāo)通常為發(fā)出要求的線程,但是作為應(yīng)答目標(biāo),也能執(zhí)行其他線程、線程群、或進(jìn)程。因此,在服務(wù)要求的消息中,希望包含應(yīng)答目標(biāo)的指定。能使用廣泛應(yīng)用的對(duì)象要求代理實(shí)現(xiàn)服務(wù)代理512。
(實(shí)時(shí)處理)本實(shí)施例的計(jì)算機(jī)系統(tǒng)作為實(shí)時(shí)處理系統(tǒng)起作用。此時(shí),作為該實(shí)時(shí)處理系統(tǒng)的對(duì)象的處理大致能劃分為以下3種1.硬實(shí)時(shí)處理2.軟實(shí)時(shí)處理
3.最佳成果處理(非實(shí)時(shí)處理)1和2是所謂的實(shí)時(shí)處理。本實(shí)施例的實(shí)時(shí)處理系統(tǒng)與很多已經(jīng)存在的OS同樣,具有線程和進(jìn)程的概念。在此,首先就本實(shí)施例的實(shí)時(shí)處理系統(tǒng)中的線程和進(jìn)程加以說明。
在線程中存在以下3個(gè)類。
1.硬實(shí)時(shí)類該線程類在時(shí)間要求(timing requirements)非常重要,當(dāng)不滿足該要求時(shí)變?yōu)橹卮蟮臓顩r的重要的應(yīng)用程序中使用。
2.軟實(shí)時(shí)類該線程類在不滿足時(shí)間要求時(shí),質(zhì)量下降的應(yīng)用程序中使用。
3.最佳成果類該線程類在要求中不包含一切時(shí)間要求的應(yīng)用程序中使用。
線程是在本實(shí)時(shí)處理系統(tǒng)內(nèi)執(zhí)行處理的實(shí)體。在線程中與該線程執(zhí)行的程序關(guān)聯(lián)。各線程保持有稱作線程上下文的各線程中固有的信息。在線程上下文中包含處理器的寄存器的值或堆棧等的信息。
在本實(shí)時(shí)處理系統(tǒng)中,存在MPU線程和VPU線程等2種線程。這2個(gè)線程由執(zhí)行該線程的處理器(MPU11或VPU12)分類,作為線程的模型完全相同。在VPU線程的線程上下文中包含VPU12的局部存儲(chǔ)器32的內(nèi)容、存儲(chǔ)器控制器33具有的DMA控制器的狀態(tài)等。
把多個(gè)線程匯集為組,把它稱作線程組。線程組具有能使對(duì)組中包含的線程付與相同的屬性的處理高效并簡(jiǎn)單的優(yōu)點(diǎn)。硬實(shí)時(shí)類或軟實(shí)時(shí)類的線程組大致分為密結(jié)合線程組(tightly coupled thread group)和疏結(jié)合線程組(loosely coupled thread group)等兩種。密結(jié)合線程組(tightlycoupled thread group)和疏結(jié)合線程組(loosely coupled thread group)通過附加在線程組中的屬性信息(結(jié)合屬性信息)識(shí)別。通過應(yīng)用程序內(nèi)的代碼或上述的構(gòu)成記述,能明確指示線程組的結(jié)合屬性。
密結(jié)合線程組是由彼此協(xié)調(diào)工作的多個(gè)線程的集合構(gòu)成的線程組。即密結(jié)合線程組表示屬于該組的線程群彼此緊密聯(lián)合工作。緊密的聯(lián)合是指頻繁地在線程間進(jìn)行通信或同步處理等相互作用(interaction),或需要等待(latency)(延遲)小的相互作用時(shí)。而疏結(jié)合線程組與密結(jié)合線程組相比,是不需要屬于該組的線程間的緊密的聯(lián)合的線程組,線程群通過存儲(chǔ)器14上的緩存器進(jìn)行用于數(shù)據(jù)收發(fā)的通信。
(密結(jié)合線程組)如圖25所示,對(duì)屬于密結(jié)合線程組的各不同的線程群分配分別不同的VPU,同時(shí)執(zhí)行各線程。把屬于密結(jié)合線程組的線程稱作密結(jié)合線程(tightly coupled thread)。此時(shí),對(duì)與密結(jié)合線程的個(gè)數(shù)相同的VPU分別預(yù)約屬于密結(jié)合線程組的密結(jié)合線程各自的執(zhí)行期間,同時(shí)執(zhí)行這些密結(jié)合線程。在圖25中,表示在某密結(jié)合線程組中包含線程A、B等2個(gè)作為密結(jié)合線程,這些線程A、B分別由VPU0、VPU1同時(shí)執(zhí)行的樣子。通過保證由分別不同的VPU同時(shí)執(zhí)行線程A、B,各線程能通過執(zhí)行對(duì)方線程的VPU的局部存儲(chǔ)器或控制寄存器直接進(jìn)行與對(duì)方線程的通信。圖26表示通過分別執(zhí)行線程A、B的VPU0、VPU1的局部存儲(chǔ)器,執(zhí)行線程A、B間的通信的樣子。此時(shí),在執(zhí)行線程A的VPU0中,把與執(zhí)行通信對(duì)方線程B的VPU1的局部存儲(chǔ)器32對(duì)應(yīng)的RA空間映射到線程A的EA空間的一部分上。設(shè)置在VPU0的存儲(chǔ)器控制器33內(nèi)的地址變換部件331使用段表和頁表執(zhí)行用于該映射的地址變換。在執(zhí)行線程B的VPU1中,把與執(zhí)行通信對(duì)方線程A的VPU0的局部存儲(chǔ)器32對(duì)應(yīng)的RA空間映射到線程B的EA空間的一部分上。設(shè)置在VPU1的存儲(chǔ)器控制器33內(nèi)的地址變換部件331使用段表和頁表執(zhí)行用于該映射的地址變換。圖27表示在VPU0上執(zhí)行的線程A把執(zhí)行線程B的VPU1的局部存儲(chǔ)器32(LS1)映射到自身的EA空間上,在VPU1上執(zhí)行的線程B把執(zhí)行線程A的VPU0的局部存儲(chǔ)器32(LS0)映射到自身的EA空間上的樣子。例如,在線程A在局部存儲(chǔ)器LS0上準(zhǔn)備好應(yīng)該傳遞給線程B的數(shù)據(jù)的時(shí)刻,在局部存儲(chǔ)器LS0或執(zhí)行線程B的VPU1的存儲(chǔ)器控制器LS1上設(shè)置表示該事實(shí)的標(biāo)志。線程B響應(yīng)該標(biāo)志的設(shè)置,讀出局部存儲(chǔ)器LS0上的數(shù)據(jù)。
這樣,根據(jù)結(jié)合屬性信息不但能確定密結(jié)合關(guān)系中存在的線程,而且能保證分別由不同的VPU執(zhí)行密結(jié)合關(guān)系中存在的線程A、B的,能更輕量并且無延遲地進(jìn)行有關(guān)線程A、B間的通信、同步的交互作用。
(疏結(jié)合線程組)屬于疏結(jié)合線程組的線程群各自的執(zhí)行時(shí)間由這些線程群間的輸入輸出關(guān)系決定,即使是沒有執(zhí)行順序的制約的線程,也無法保證同時(shí)執(zhí)行它們。把屬于疏結(jié)合線程組的線程稱作疏結(jié)合線程(loosely coupledthread)。在圖28中,表示在某疏結(jié)合線程組中包含線程C、D等2個(gè)作為疏結(jié)合線程,這些線程C、D分別由VPU0、VPU1執(zhí)行的樣子。如圖28所示,各線程的執(zhí)行時(shí)間變?yōu)榉稚⒌?。線程C、D間的通信如圖29所示,通過主存儲(chǔ)器14上準(zhǔn)備的緩存器進(jìn)行。線程C通過DMA傳輸把局部存儲(chǔ)器LS0上準(zhǔn)備的數(shù)據(jù)寫入主存儲(chǔ)器14上準(zhǔn)備的緩存器中,線程D在開始時(shí)通過DMA傳輸從主存儲(chǔ)器14上的緩存器向局部存儲(chǔ)器LS1讀入數(shù)據(jù)。
(進(jìn)程和線程)進(jìn)程如圖30所示,由一個(gè)地址空間和一個(gè)以上線程構(gòu)成。一個(gè)進(jìn)程中包含的線程數(shù)和種類可以為任意的組合。例如能構(gòu)筑只有VPU線程構(gòu)成的進(jìn)程,也可以構(gòu)筑VPU線程和MPU線程混合存在的進(jìn)程。與線程保持作為線程固有信息的線程上下文同樣,進(jìn)程也保持進(jìn)程上下文作為進(jìn)程固有信息。在該進(jìn)程上下文中包含進(jìn)程固有的地址空間、進(jìn)程包含的全部線程的線程上下文。進(jìn)程的地址空間能在屬于進(jìn)程的全部線程間共享。一個(gè)進(jìn)程能包含多個(gè)線程組。但是,一個(gè)線程組不能屬于多個(gè)進(jìn)程。因此,屬于某進(jìn)程的線程組是該進(jìn)程中固有的。在本實(shí)施例的實(shí)時(shí)處理處理系統(tǒng)中,在新生成線程的方式中存在線程第一模式和地址空間第一模式等2種。地址空間第一模式(地址空間第一模式)與已經(jīng)存在的OS中采用的同樣,能應(yīng)用于MPU線程,也能應(yīng)用于VPU線程。而線程第一模式是只能應(yīng)用于VPU線程的方式,是本發(fā)明的實(shí)時(shí)處理處理系統(tǒng)中特有的方式。在線程第一模式(線程第一模式)中,已經(jīng)存在的線程(想新生成線程的一側(cè)的線程。成為新生成的線程之母的線程)首先指定新線程執(zhí)行的程序,使新線程開始程序的執(zhí)行。此時(shí),程序存儲(chǔ)在VPU12的局部存儲(chǔ)器中,從給定的執(zhí)行開始地址開始處理。在該時(shí)刻,地址空間未與該新線程關(guān)聯(lián),所以能訪問自身的局部存儲(chǔ)器,但是無法訪問主存儲(chǔ)器14。然后,新線程根據(jù)需要,自身調(diào)用VPU執(zhí)行環(huán)境的服務(wù),生成地址空間,產(chǎn)生關(guān)聯(lián),或通過MPU11一側(cè)的處理,把地址空間關(guān)聯(lián),從而能訪問存儲(chǔ)器14。在地址空間第一模式(地址空間第一模式)中,已經(jīng)存在的線程新生成地址空間,或指定已經(jīng)存在的地址空間,在該地址空間中配置新線程執(zhí)行的程序。然后,使新線程開始該程序的執(zhí)行。線程第一模式(線程第一模式)的優(yōu)點(diǎn)在于只用局部存儲(chǔ)器工作,所以能減小線程的生成、分配和結(jié)束處理等成本。
(線程群的調(diào)度)下面,參照?qǐng)D31的程序框圖,說明由VPU執(zhí)行環(huán)境401執(zhí)行的調(diào)度處理。VPU執(zhí)行環(huán)境401內(nèi)的調(diào)度器根據(jù)以線程組單位附加在調(diào)度對(duì)象的線程群中的結(jié)合屬性信息,檢查線程間的結(jié)合屬性(步驟S121),對(duì)各線程組判別該線程組是密結(jié)合線程組合疏結(jié)合線程組中的哪一個(gè)(步驟S122)。通過參照程序代碼中的有關(guān)線程的記述或上述的構(gòu)成記述117中的線程參數(shù),進(jìn)行結(jié)合屬性的檢查。這樣,通過分別決定密結(jié)合線程組和疏結(jié)合線程組,把調(diào)度對(duì)象的線程群分離為密結(jié)合線程組和疏結(jié)合線程組。
對(duì)屬于密結(jié)合線程組的線程群的調(diào)度按如下進(jìn)行。即VPU執(zhí)行環(huán)境401內(nèi)的調(diào)度器為了使從調(diào)度對(duì)象的線程群選擇的屬于密結(jié)合線程組的線程群同時(shí)由分別不同的VPU執(zhí)行,預(yù)約與屬于密結(jié)合線程組的線程群相同數(shù)量的VPU各自的執(zhí)行期間,同時(shí)把線程群分配給這些預(yù)約的VPU(步驟S123)。然后,調(diào)度器使用執(zhí)行各線程的VPU內(nèi)的地址變換部件331,把執(zhí)行成為進(jìn)行協(xié)調(diào)相互作用的對(duì)方的其他線程的VPU的局部存儲(chǔ)器所對(duì)應(yīng)的RA空間映射到各線程的EA空間的一部分上(步驟S124)。而有關(guān)從調(diào)度對(duì)象的線程群選擇的屬于疏結(jié)合線程組的疏結(jié)合線程群,調(diào)度器根據(jù)這些線程群間的輸入輸出關(guān)系,依次把這些線程群分配給1以上的VPU(步驟S125)。
(局部存儲(chǔ)器的映射)在本實(shí)施例的實(shí)時(shí)處理系統(tǒng)中,當(dāng)在MPU線程和VPU線程之間或VPU線程和其他VPU線程之間一邊進(jìn)行任意的通信或同步,一邊協(xié)調(diào)進(jìn)行工作時(shí),需要訪問協(xié)調(diào)對(duì)方的VPU線程的局部存儲(chǔ)器。例如,更輕量、高速的同步機(jī)構(gòu)向局部存儲(chǔ)器上分配安裝同步變量。因此,其他VPU12或MPU11的線程有表直接訪問某VPU12的局部存儲(chǔ)器。如圖4所示的例子那樣,當(dāng)各VPU12的局部存儲(chǔ)器分配給實(shí)際地址空間時(shí),如果適當(dāng)設(shè)定段表或頁表,就能直接訪問對(duì)方的VPU12的局部存儲(chǔ)器。但是此時(shí),產(chǎn)生2個(gè)問題。
第一問題是有關(guān)線程VPU線程的分配目標(biāo)VPU12的變更的問題。如圖32所示,存在VPU線程A和B,分別由VPU0和VPU1運(yùn)行。而且,該線程A和B想與彼此的線程協(xié)調(diào),所以把彼此的線程的LS(局部存儲(chǔ)器)映射到自己的EA空間上。另外,VPU0、1、2的LS0、1、2分別如圖32所示,存在于RA空間中。此時(shí),VPU線程A映射到自己的EA空間中的是VPU線程B工作的VPU的LS,即VPU1的LS即LS1。反之,VPU線程B映射到自己的EA空間中的是VPU線程A工作的VPU的LS,即VPU0的LS即LS0。然后,通過VPU執(zhí)行環(huán)境中的調(diào)度器分配執(zhí)行VPU線程A的VPU,VPU線程A在VPU2上運(yùn)行。此時(shí),VPU線程A已經(jīng)不在VPU0商工作,所以VPU線程B映射到自己的EA空間上的VPU0的LS變得沒有意義。此時(shí),線程B可以不知道線程A的分配目標(biāo)VPU產(chǎn)生了變更,系統(tǒng)需要以任意的方法把映射到LS0的EA空間的地址映射到LS2,從線程B能把VPU2的LS即LS2作為線程A的局部存儲(chǔ)器觀察到。
第二問題是物理VPU和邏輯VPU的對(duì)應(yīng)關(guān)系的問題。在把VPU分配給VPU線程時(shí),實(shí)際有兩個(gè)水平。一個(gè)是邏輯VPU向VPU線程的分配,另一個(gè)是物理VPU向邏輯VPU的分配。物理VPU是虛擬計(jì)算機(jī)OS301管理的物理VPU12。邏輯VPU是虛擬計(jì)算機(jī)OS301分配給客戶OS的邏輯上的VPU。圖14表示該關(guān)系。例如,VPU執(zhí)行環(huán)境401管理邏輯上的VPU時(shí),在圖32的例子中,成為VPU線程的分配對(duì)象的VPU是邏輯VPU。
圖33表示這兩個(gè)水平的分配的概念。之前說明的第一問題相當(dāng)于位于圖33上部的VPU線程向邏輯VPU的分配問題。第二問題即物理VPU向邏輯VPU的分配問題相當(dāng)于位于下部的分配。在圖33中,表示從4個(gè)物理VPU選擇3個(gè)VPU,分配給3個(gè)邏輯VPU。如果該物理VPU和邏輯VPU的對(duì)應(yīng)關(guān)系變化時(shí),即使VPU線程對(duì)邏輯VPU的分配不變更,適當(dāng)?shù)脑O(shè)定的變更也成為必要。例如,改變與LS對(duì)應(yīng)的頁表記錄,使對(duì)變更后的邏輯VPU的LS的訪問指向正確的物理VPU的LS。
在某一時(shí)刻,如圖34所示,物理VPU1、2、3分別分配給邏輯VPU0、1、2。然后,邏輯VPU1分配給VPU線程A,邏輯VPU2分配給VPU線程B。然后,VPU線程A和B分別彼此把對(duì)方工作的物理VPU的LS映射到自己的EA空間上。執(zhí)行VPU線程B的物理VPU3的LS3映射到VPU線程A的EA空間上,執(zhí)行VPU線程A的物理VPU2的LS2映射到VPU線程B的EA空間上。然后,在某一時(shí)刻,通過虛擬計(jì)算機(jī)OS301把邏輯VPU0、1再分配給物理VPU0、1。這樣一來,迄今為止VPU線程A工作的VPU1從物理VPU2向VPU1變化。邏輯VPU向VPU線程的分配未變化,但是物理VPU和邏輯VPU的對(duì)應(yīng)關(guān)系變化了。因此VPU線程B需要映射到EA空間上,VPU線程A工作的VPU的LS從LS2變更為L(zhǎng)S1,以便能正確訪問。
為了解決這兩個(gè)問題,在本實(shí)施例的實(shí)時(shí)處理系統(tǒng)中,控制虛擬存儲(chǔ)機(jī)構(gòu),以便把執(zhí)行對(duì)方的線程的VPU的局部存儲(chǔ)器映射到從線程觀察的EA空間的固定地址上,從而能觀察到。即在基于VPU調(diào)度器的邏輯VPU的分配時(shí)、基于虛擬計(jì)算機(jī)OS的物理VPU和邏輯VPU的對(duì)應(yīng)關(guān)系的切換時(shí),通過適當(dāng)改寫頁表或段表,從VPU上工作的線程總能觀察到在相同地址中執(zhí)行對(duì)方的線程的VPU的局部存儲(chǔ)器。
首先,說明2個(gè)線程的EA空間的關(guān)系,2個(gè)線程的EA空間用以下的3個(gè)中的任意模式共享或非共享。
1.共享EA型兩個(gè)線程1、2共享段表和頁表。(圖35)2.共享VA型兩個(gè)線程1、2共享頁表,但是不共享段表,分別具有段表(圖36)。
3.非共享型兩個(gè)線程1、2不共享段表和頁表。分別具有共享段表和頁表。(圖37)下面,以1的共享EA型為例,說明怎樣控制,怎樣映射VPU的局部存儲(chǔ)器。
首先,如圖38所示,在VA空間上設(shè)置與各邏輯VPU對(duì)應(yīng)的區(qū)域,設(shè)定頁表,把與邏輯VPU關(guān)聯(lián)的物理VPU的局部存儲(chǔ)器映射到那里。在本例子中,表示物理VPU0、1、2分別與邏輯VPU0、1、2關(guān)聯(lián)的狀態(tài)。接著設(shè)定段表,以便能從線程A在固定地址即段a的區(qū)域中觀察到執(zhí)行線程B的VPU的局部存儲(chǔ)器。另外,設(shè)定段表,以便能從線程B在固定地址即段b的區(qū)域中觀察到執(zhí)行線程A的VPU的局部存儲(chǔ)器。在本例子中,表示以邏輯VPU2執(zhí)行線程A、以邏輯VPU1執(zhí)行線程B的狀況。在此,VPU執(zhí)行環(huán)境401的調(diào)度器把線程B分配給邏輯VPU0。此時(shí),VPU執(zhí)行環(huán)境401自動(dòng)改寫段表,以便VPU執(zhí)行環(huán)境401如圖39所示,能從線程A通過固定地址即段a觀察到現(xiàn)在執(zhí)行線程B的邏輯VPU0的局部存儲(chǔ)器。
在此,因?yàn)樘摂M計(jì)算機(jī)OS301進(jìn)行客戶OS的分配,所以物理VPU和邏輯VPU的對(duì)應(yīng)變化。此時(shí),例如如圖40所示,VPU執(zhí)行環(huán)境401改寫頁表,固定在VA空間上的邏輯VPU的局部存儲(chǔ)器的區(qū)域指向正確的物理VPU的局部存儲(chǔ)器的區(qū)域。在圖40的例子中,變更為物理VPU1、2、3與邏輯VPU0、1、2對(duì)應(yīng),所以改寫頁表,變?yōu)楝F(xiàn)在的正確的映射。
這樣,通過VPU執(zhí)行環(huán)境401的調(diào)度器的分配,執(zhí)行線程的邏輯VPU產(chǎn)生變更時(shí),改寫進(jìn)行從EA空間到VA空間的映射的段表,解決第一問題。另外,通過虛擬計(jì)算機(jī)OS301,物理VPU和邏輯VPU的對(duì)應(yīng)產(chǎn)生變更時(shí),改寫從VA空間到RA空間的映射,解決第二問題。
這樣,按照?qǐng)?zhí)行進(jìn)行相互作用的對(duì)方的線程的處理器,自動(dòng)變更映射到有效地址空間的與對(duì)方線程對(duì)應(yīng)的處理的局部存儲(chǔ)器,各線程不用意識(shí)到分配了對(duì)方線程的處理器,就能高效進(jìn)行與對(duì)方線程的相互作用。因此,能以高效并行執(zhí)行多個(gè)線程。
以上說明了共享EA型的例子,但是有關(guān)2的共享VA型、3的非共享型,通過改寫段表或頁表,也同樣能解決第一問題和第二問題。
下面,描述解決所述第一和第二問題的其他方法。在此,以共享EA型為例進(jìn)行說明。如圖41所示,當(dāng)存在協(xié)調(diào)工作的多個(gè)VPU線程時(shí),設(shè)定頁表和段表,以便把執(zhí)行這些線程的VPU的局部存儲(chǔ)器連續(xù)映射到段上。當(dāng)以圖41為例子時(shí),以物理VPU2執(zhí)行線程A,以物理VPU0執(zhí)行線程B,設(shè)定頁表和段表,以便把各VPU的局部存儲(chǔ)器連續(xù)配置到同一段中。在此,由VPU執(zhí)行環(huán)境401的調(diào)度器分配執(zhí)行線程的邏輯VPU,或通過虛擬計(jì)算機(jī)OS301等,物理VPU和邏輯VPU的對(duì)應(yīng)產(chǎn)生變更時(shí),改寫頁表,變更VA空間和RA空間的映射,以對(duì)線程A和線程B隱蔽各個(gè)變更。例如圖42表示執(zhí)行線程A的VPU變更為物理VPU1,執(zhí)行線程B的變更為物理VPU3時(shí)的映射。進(jìn)行該變更,通過從線程A和線程B訪問具有固定地址的段內(nèi)的給定區(qū)域,總能訪問執(zhí)行對(duì)方線程的VPU的局部存儲(chǔ)器。
下面,參照?qǐng)D43的程序框圖,說明由VPU執(zhí)行環(huán)境401執(zhí)行的地址管理處理的步驟。VPU執(zhí)行環(huán)境401把與執(zhí)行對(duì)方線程的VPU的局部存儲(chǔ)器對(duì)應(yīng)的RA空間映射到各線程的EA空間上的固定地址中(步驟S201)。然后,VPU執(zhí)行環(huán)境401判別由于對(duì)方線程的分配目標(biāo)VPU的變更或邏輯VPU和物理VPU的對(duì)應(yīng)關(guān)系的變更,執(zhí)行對(duì)方線程的VPU是否變更(步驟S202)。如果執(zhí)行對(duì)方線程的VPU變更,則VPU執(zhí)行環(huán)境401改寫段表或頁表的內(nèi)容,配合執(zhí)行對(duì)方線程的VPU變更映射到各線程的EA空間上的固定地址中的局部存儲(chǔ)器(步驟S203)。
在此前的例子中,說明象密結(jié)合線程組那樣,在彼此通過VPU正在執(zhí)行的線程間,訪問執(zhí)行對(duì)方線程的VPU的局部存儲(chǔ)器的方式。但是,也存在疏結(jié)合線程組等協(xié)調(diào)工作的線程并不一定同時(shí)分配給VPU而執(zhí)行的情形。此時(shí),在EA空間上存在映射執(zhí)行對(duì)方線程的VPU12的局部存儲(chǔ)器的區(qū)域,所以按如下使用該區(qū)域。
第一方法當(dāng)對(duì)方線程不是正在執(zhí)行時(shí),如果訪問映射與該線程對(duì)應(yīng)的VPU的局部存儲(chǔ)器的區(qū)域,線程就等到對(duì)方線程開始執(zhí)行。
第二方法當(dāng)對(duì)方線程不是正在執(zhí)行時(shí),如果訪問映射與該線程對(duì)應(yīng)的VPU的局部存儲(chǔ)器的區(qū)域,線程就通過例外的產(chǎn)生或出錯(cuò)代碼知道該意思。
第三方法在線程的結(jié)束時(shí),把最后執(zhí)行該線程時(shí)的局部存儲(chǔ)器的內(nèi)容保持在存儲(chǔ)器中,控制映射,以便從執(zhí)行與該線程關(guān)聯(lián)的局部存儲(chǔ)器的頁表或段表的記錄指向該存儲(chǔ)器區(qū)域。通過該方式,即使對(duì)方不是正在執(zhí)行,也如同存在與對(duì)方線程關(guān)聯(lián)的局部存儲(chǔ)器那樣,能繼續(xù)線程的執(zhí)行。圖44和圖45表示具體例。
①現(xiàn)在,分別由VPU0、1執(zhí)行線程A、B,把執(zhí)行對(duì)方線程A的VPU0的局部存儲(chǔ)器LS0映射到線程B的EA空間上。
②在線程A的結(jié)束時(shí),線程A或VPU執(zhí)行環(huán)境401把執(zhí)行線程A的VPU0的局部存儲(chǔ)器LS0的內(nèi)容保存到存儲(chǔ)器14中(步驟S211)。
③VPU執(zhí)行環(huán)境401把映射到線程B的EA空間上的對(duì)方線程A的局部存儲(chǔ)器的地址空間從VPU0的LS0變更為保存LS0的內(nèi)容的存儲(chǔ)器14上的存儲(chǔ)器區(qū)域(步驟S212)。據(jù)此,線程B在對(duì)方線程A變?yōu)椴辉趫?zhí)行中后,也能繼續(xù)其動(dòng)作。
④當(dāng)對(duì)線程A再次分配了VPU時(shí),VPU執(zhí)行環(huán)境401使存儲(chǔ)器14上的存儲(chǔ)器區(qū)域回到執(zhí)行線程A的VPU的局部存儲(chǔ)器(步驟S213)。例如,當(dāng)再次把VPU0分配給線程A時(shí),存儲(chǔ)器14上的存儲(chǔ)器區(qū)域的內(nèi)容返回VPU0的局部存儲(chǔ)器LS0。
⑤VPU執(zhí)行環(huán)境401把映射到線程B的EA空間上的對(duì)方目標(biāo)線程A的局部存儲(chǔ)器的地址空間變更為執(zhí)行線程A的VPU的局部存儲(chǔ)器(步驟S214)。例如,當(dāng)對(duì)線程A再次分配了VPU0時(shí),映射到線程B的EA空間上的對(duì)方目標(biāo)線程A的局部存儲(chǔ)器的地址空間回到VPU0的局部存儲(chǔ)器LS0。
須指出的是,當(dāng)對(duì)線程A分配VPU2時(shí),存儲(chǔ)器14上的存儲(chǔ)器區(qū)域的內(nèi)容恢復(fù)為VPU2的局部存儲(chǔ)器LS2。然后,映射到線程B的EA空間上的對(duì)方目標(biāo)線程A的局部存儲(chǔ)器的地址空間回到VPU2的局部存儲(chǔ)器LS2。
(線程的狀態(tài)轉(zhuǎn)移)一般,線程從生成到消失進(jìn)行圖46所示的狀態(tài)轉(zhuǎn)移。在圖46的例子中,在以下的7種狀態(tài)間轉(zhuǎn)移。
1.NOT EXISTENT狀態(tài)是邏輯狀態(tài),在有效的線程中沒有該狀態(tài)。
2.DORMANT狀態(tài)雖然生成線程,但是還未開始執(zhí)行。
3.READY狀態(tài)線程完成開始其執(zhí)行的準(zhǔn)備的狀態(tài)。
4.WAITING狀態(tài)線程等待用于開始(重新開始)執(zhí)行的條件被滿足的狀態(tài)。
5.RUNNING狀態(tài)線程實(shí)際在VPU或MPU上執(zhí)行的狀態(tài)。
6.SUSPENDED狀態(tài)通過VPU執(zhí)行環(huán)境或其他線程,強(qiáng)制使線程中斷其執(zhí)行的狀態(tài)。
7.WAITING-SUSPENDED狀態(tài)WAITING狀態(tài)和SUSPENDED狀態(tài)重疊的狀態(tài)這7個(gè)狀態(tài)間的轉(zhuǎn)移條件、伴隨著該轉(zhuǎn)移的線程上下文的處理如下所述。
<從NOT EXISTENT狀態(tài)向DORMANT狀態(tài)的轉(zhuǎn)移>
·通過線程的生成而轉(zhuǎn)移。
·生成線程上下文。但是,上下文的內(nèi)容是初始狀態(tài)。
<從DORMANT狀態(tài)向NOT EXISTENT狀態(tài)的轉(zhuǎn)移>
通過線程的刪除而轉(zhuǎn)移。
設(shè)定線程以保存該線程上下文時(shí),通過轉(zhuǎn)移而放棄所保存的上下文。
<從DORMANT狀態(tài)向WAITING狀態(tài)的轉(zhuǎn)移>
·如果線程對(duì)執(zhí)行環(huán)境要求線程的調(diào)度,則線程的狀態(tài)從DORMANT狀態(tài)向WAITING狀態(tài)轉(zhuǎn)移。
<從WAITING狀態(tài)向READY狀態(tài)的轉(zhuǎn)移>
·當(dāng)?shù)却€程發(fā)生的事件(例如,同步或通信、定時(shí)器)發(fā)生時(shí),線程的狀態(tài)從WAITING狀態(tài)向READY狀態(tài)轉(zhuǎn)移。
<從READY狀態(tài)向RUNNING狀態(tài)的轉(zhuǎn)移>
·如果線程由執(zhí)行環(huán)境分配給MPU或VPU,則線程的狀態(tài)從READY狀態(tài)向RUNNING狀態(tài)轉(zhuǎn)移。
·加載線程上下文。另外,當(dāng)線程上下文退避時(shí),復(fù)原。
<從RUNNING狀態(tài)向READY狀態(tài)的轉(zhuǎn)移>
·如果線程被奪取線程的執(zhí)行,則線程的狀態(tài)從RUNNING狀態(tài)向READY狀態(tài)轉(zhuǎn)移。
<從RUNNING狀態(tài)向WAITING狀態(tài)的轉(zhuǎn)移>
·線程利用同步或通信等機(jī)構(gòu),為了等待事件而中斷自身的執(zhí)行時(shí),線程的狀態(tài)從RUNNING狀態(tài)向WAITING狀態(tài)轉(zhuǎn)移。
·全部類的線程能設(shè)定為保存線程上下文。線程設(shè)定為保存線程上下文時(shí),當(dāng)從RUNNING狀態(tài)向WAITING狀態(tài)轉(zhuǎn)移時(shí),通過執(zhí)行環(huán)境,線程的線程上下文退避。只要不轉(zhuǎn)移到DORMANT狀態(tài),就保持該線程上下文,在線程下次轉(zhuǎn)變?yōu)镽UNNING狀態(tài)時(shí)復(fù)原。
<從RUNNING狀態(tài)向SUSPENDED狀態(tài)的轉(zhuǎn)移>
·當(dāng)線程由來自執(zhí)行環(huán)境或其他線程的指示,強(qiáng)制中斷其執(zhí)行時(shí),線程的狀態(tài)從RUNNING狀態(tài)向SUSPENDED狀態(tài)轉(zhuǎn)移。
·全部類的線程能設(shè)定為保存線程上下文。當(dāng)線程設(shè)定為保存線程上下文時(shí),當(dāng)從RUNNING狀態(tài)向SUSPENDED狀態(tài)轉(zhuǎn)移時(shí),通過執(zhí)行環(huán)境,線程上下文退避。只要不轉(zhuǎn)移到DORMANT狀態(tài),該線程上下文就在線程下次轉(zhuǎn)變?yōu)镽UNNING狀態(tài)時(shí)復(fù)原。
<從RUNNING狀態(tài)向DORMANT狀態(tài)的轉(zhuǎn)移>
·當(dāng)線程由線程自身結(jié)束其執(zhí)行時(shí),從RUNNING狀態(tài)向DORMANT狀態(tài)轉(zhuǎn)移。
·當(dāng)線程設(shè)定為保存線程上下文時(shí),通過該轉(zhuǎn)移,上下文的內(nèi)容被刪除。
<從WAITING狀態(tài)向WAITING-SUSPENDED狀態(tài)的轉(zhuǎn)移>
·當(dāng)線程在WAITING狀態(tài)下正在等待事件等的發(fā)生時(shí),被強(qiáng)制中斷線程的執(zhí)行時(shí),線程的狀態(tài)從WAITING狀態(tài)向WAITING-SUSPENDED狀態(tài)轉(zhuǎn)移。
<從WAITING-SUSPENDED狀態(tài)向WAITING狀態(tài)的轉(zhuǎn)移>
·當(dāng)線程處于WAITING-SUSPENDED狀態(tài)時(shí),從外部重新開始線程的執(zhí)行時(shí),線程的狀態(tài)從WAITING-SUSPENDED狀態(tài)向WAITING狀態(tài)轉(zhuǎn)移。
<從WAITING-SUSPENDED狀態(tài)向SUSPENDED狀態(tài)的轉(zhuǎn)移>
·線程當(dāng)線程處于WAITING狀態(tài)時(shí)等待的事件發(fā)生時(shí),線程的狀態(tài)從WAITING-SUSPENDED狀態(tài)向SUSPENDED狀態(tài)轉(zhuǎn)移。
<從SUSPENDED狀態(tài)向READY狀態(tài)的轉(zhuǎn)移>
·當(dāng)線程從外部重新開始線程的執(zhí)行時(shí),線程的狀態(tài)從SUSPENDED狀態(tài)向READY狀態(tài)轉(zhuǎn)移。
<從READY狀態(tài)向SUSPENDED狀態(tài)的轉(zhuǎn)移>
·線程當(dāng)由外部環(huán)境中斷線程的執(zhí)行時(shí),線程的狀態(tài)從READY狀態(tài)向SUSPENDED狀態(tài)轉(zhuǎn)移。
(線程的執(zhí)行期間)把對(duì)線程實(shí)際分配VPU,執(zhí)行處理的RUNNING狀態(tài)的期間成為執(zhí)行期間(execution term)。一般,從線程生成到消失之間,線程具有多個(gè)執(zhí)行期間。圖47表示從某線程的生成到消失的沿著時(shí)間軸的狀態(tài)變化的例子,但是在該例子中,在生存周期中,表示2次的執(zhí)行期間。使用各種方法能實(shí)現(xiàn)執(zhí)行期間和執(zhí)行期間之間的上下文的保存(save)和復(fù)原(restore)。例如,很多通常的線程保存執(zhí)行期間結(jié)束的時(shí)刻的上下文,在接著的執(zhí)行期間的開始,復(fù)原該上下文。而在某種周期的(periodic)的處理中,在全部的周期(period)中,在執(zhí)行期間的開始時(shí),生成新的上下文,在執(zhí)行期間中,使用該上下文推進(jìn)執(zhí)行,在執(zhí)行期間的結(jié)束時(shí),刪除該上下文。
(屬于密結(jié)合線程組的線程的執(zhí)行期間)屬于密結(jié)合線程組的線程的執(zhí)行期間例如如圖48所示。即屬于密結(jié)合線程組的全部線程由VPU執(zhí)行環(huán)境401調(diào)度,在某一個(gè)執(zhí)行期間中同時(shí)執(zhí)行全部線程。這樣的密結(jié)合線程組主要對(duì)硬實(shí)時(shí)線程使用。因此,為了實(shí)現(xiàn)其動(dòng)作,VPU執(zhí)行環(huán)境401當(dāng)預(yù)約硬實(shí)時(shí)類的執(zhí)行期間時(shí),指定同時(shí)使用的處理器和它的數(shù)量。VPU執(zhí)行環(huán)境401對(duì)預(yù)約的各種處理器,使同時(shí)執(zhí)行的的線程的上下文一對(duì)一對(duì)應(yīng)。
須指出的是,在某期間中屬于密結(jié)合線程組的多個(gè)線程在其他執(zhí)行期間中解除密結(jié)合的關(guān)系,各線程能分別工作。此時(shí),各線程需要意識(shí)到現(xiàn)在作為密結(jié)合線程工作,或者分別工作,進(jìn)行與對(duì)方線程的通信或同步等處理。對(duì)各線程付與和表示的優(yōu)先權(quán)關(guān)聯(lián)的屬性。所謂Preemptive是在線程的執(zhí)行期間中允許優(yōu)先于該線程即停止執(zhí)行的屬性。所謂Non-preemptive是在線程的執(zhí)行期間中,保障該線程不被奪取的屬性。該不能奪取(non-preemptive)屬性的意義在線程的種類之間不同。在硬實(shí)時(shí)類中,意味著如果線程開始執(zhí)行,則在執(zhí)行期間結(jié)束前,除了該線程自身以外,誰也不能停止其執(zhí)行。在軟實(shí)時(shí)類中,對(duì)該種類,能奪取(preemptive-ness)是必不可少的,所以不支持不能奪取的屬性。在最佳成果類中,線程的執(zhí)行受到保護(hù),不被其他最佳成果類奪取,但是會(huì)被硬實(shí)時(shí)類或軟實(shí)時(shí)類等更高水平所奪取。
(線程的執(zhí)行模型)線程的執(zhí)行模型大致能分為如圖49所示的周期執(zhí)行模型和圖50所示的非周期執(zhí)行模型等2類。在周期執(zhí)行模型中,周期地(periodically)執(zhí)行線程。而在非周期執(zhí)行模型中,以事件為起點(diǎn),進(jìn)行該執(zhí)行。對(duì)周期執(zhí)行模型的安裝模式中存在使用軟件中斷的方式和使用同步機(jī)構(gòu)(synchronization primitives)的事件對(duì)象的方式。在硬實(shí)時(shí)類中,使用軟件中斷安裝。即VPU執(zhí)行環(huán)境401在開始周期處理的定時(shí),跳到以給定方法決定的線程的記錄點(diǎn),或者調(diào)用事先以給定步驟登記的回叫函數(shù)。在軟實(shí)時(shí)類中,使用事件對(duì)象安裝。即在各周期中,對(duì)預(yù)先登記的事件對(duì)象,VPU執(zhí)行環(huán)境401通知事件,所以通過構(gòu)成程序,使軟實(shí)時(shí)線程在各周期等待該事件對(duì)象,如果事件發(fā)生,就執(zhí)行給定處理,實(shí)現(xiàn)周期執(zhí)行模型。當(dāng)最佳成果類時(shí),無論使用應(yīng)用軟件中斷的方式,還是使用應(yīng)用事件中斷的方式,都能安裝周期執(zhí)行模型。須指出的是,實(shí)際的執(zhí)行并不局限于總在各周期的開頭開始,在制約條件(constrains)的范圍內(nèi),有時(shí)也按照狀態(tài)延遲。
非周期執(zhí)行模型如果使用事件模型,就與周期執(zhí)行模型能同樣實(shí)現(xiàn)。即在軟實(shí)時(shí)和最佳成果類中,非周期執(zhí)行模型只是通知事件的定時(shí)不同,安裝收發(fā)上與周期執(zhí)行模型相同。當(dāng)硬實(shí)時(shí)類時(shí),為了確保時(shí)間要求所需要的最小發(fā)生期間(minium inter-arrival time)或最終期限強(qiáng)制制約系統(tǒng)的動(dòng)作,所以限制非周期執(zhí)行。
(上下文的切換)在本實(shí)施例的實(shí)時(shí)處理系統(tǒng)中,伴隨著VPU線程的執(zhí)行期間結(jié)束的上下文切換能從多個(gè)方式選擇。因?yàn)閂PU的上下文切換的成本非常大,所以通過能選擇其方式,能提高上下文切換的效率。指定的上下文切換方式在線程的預(yù)約執(zhí)行期間結(jié)束時(shí)使用。執(zhí)行期間中的切換即所謂的先占時(shí),需要在任何時(shí)候都保存現(xiàn)在的線程的全部上下文,在下次重新開始執(zhí)行時(shí)復(fù)原。在由本實(shí)施例的實(shí)時(shí)處理系統(tǒng)提供的VPU上下文切換的方式中,例如有以下的方式。
1.上下文的刪除不保存任何上下文。
2.完全的上下文的保存。
保存包含VPU的寄存器、局部存儲(chǔ)器以及存儲(chǔ)器控制器內(nèi)的DMA控制器的狀態(tài)的VPU的完全上下文。
3.Graceful上下文的保存延遲上下文切換,直到VPU的存儲(chǔ)器控制器內(nèi)的DMA控制器在執(zhí)行中的全部動(dòng)作結(jié)束。然后,保存VPU的寄存器、局部存儲(chǔ)器的內(nèi)容。在該方式下,與完全的上下文保存同樣,保存VPU的上下文的全部。
進(jìn)行線程的調(diào)度的調(diào)度器能作為調(diào)度MPU線程和VPU線程雙方的一個(gè)調(diào)度器而安裝,也能分別安裝MPU線程用的調(diào)度器和VPU線程用的調(diào)度器。因?yàn)樵贛PU和VPU中,上下文切換的成本不同,所以安裝分別適合于各自的調(diào)度器時(shí)效率更高。
(硬實(shí)時(shí)類的調(diào)度)使用擴(kuò)展任務(wù)圖表的預(yù)約圖表進(jìn)行硬實(shí)時(shí)類的線程群的調(diào)度。圖51是任務(wù)圖表的例子。任務(wù)圖表表示任務(wù)間的關(guān)系。任務(wù)間的肩頭表示任務(wù)間的依存關(guān)系(輸入輸出關(guān)系)。在圖51的例子中,任務(wù)1和任務(wù)2表示能自由開始執(zhí)行。而任務(wù)3表示在任務(wù)1和任務(wù)2雙方的執(zhí)行結(jié)束后,能開始執(zhí)行。另外,任務(wù)4和任務(wù)5表示在任務(wù)3的執(zhí)行結(jié)束后,能開始執(zhí)行。在任務(wù)圖表中沒有上下文的概念。例如,當(dāng)想使用相同的上下文執(zhí)行任務(wù)1和任務(wù)4時(shí),無法記述它。因此,在本實(shí)施例的實(shí)時(shí)處理系統(tǒng)中,如下所述,使用擴(kuò)展任務(wù)圖表的預(yù)約圖表。
首先,任務(wù)圖表不是表示任務(wù),而是表示執(zhí)行期間的關(guān)系。而且,表示通過使上下文與各執(zhí)行期間關(guān)聯(lián),在該執(zhí)行期間中執(zhí)行與該上下文對(duì)應(yīng)的線程。表示如果使相同的上下文與多個(gè)執(zhí)行期間關(guān)聯(lián),則在全部的執(zhí)行期間中,執(zhí)行該線程。例如,在圖52中,表示線程1的上下文與執(zhí)行期間1和2關(guān)聯(lián),線程1在執(zhí)行期間1和2的期間中執(zhí)行。在圖表中使用的執(zhí)行期間之間的箭頭上附加表示由執(zhí)行環(huán)境保證的硬實(shí)時(shí)的制約條件的屬性。使用這樣生成的預(yù)約圖表,完全不修正實(shí)時(shí)系統(tǒng)應(yīng)用程序的模型,能記述處理模型和處理具有的事件要求等制約條件。圖53表示根據(jù)圖52生成的預(yù)約圖表的例子。在圖53中,上下文1、2、3分別表示圖52的線程1、2、3的上下文。
(軟實(shí)時(shí)類的調(diào)度)因?yàn)槟茴A(yù)測(cè)線程的執(zhí)行行臺(tái),所以使用固定優(yōu)先級(jí)的調(diào)度執(zhí)行軟實(shí)時(shí)類的調(diào)度。作為該調(diào)度方式,準(zhǔn)備固定優(yōu)先級(jí)FIFO調(diào)度和固定優(yōu)先級(jí)循環(huán)調(diào)度等2種調(diào)度算法。因?yàn)槭箖?yōu)先級(jí)高的線程的執(zhí)行優(yōu)先,所以即使低優(yōu)先級(jí)的線程是在執(zhí)行中,當(dāng)更高優(yōu)先級(jí)的線程變?yōu)槟軋?zhí)行時(shí),搶占低優(yōu)先級(jí)的線程的執(zhí)行,立刻開始高優(yōu)先級(jí)的線程的執(zhí)行。為了避免關(guān)鍵部分(critical section)的執(zhí)行時(shí)發(fā)生的優(yōu)先級(jí)逆轉(zhuǎn)問題,所以希望與優(yōu)先級(jí)繼承協(xié)議、優(yōu)先級(jí)極限協(xié)議等同步機(jī)構(gòu)一起實(shí)施。
(最佳成果類的調(diào)度)最佳成果類的調(diào)度例如使用動(dòng)態(tài)優(yōu)先級(jí)調(diào)度。
(階層型調(diào)度器)VPU執(zhí)行環(huán)境401內(nèi)的調(diào)度功能可作為圖54所示的階層型調(diào)度器實(shí)施。即線程水平的調(diào)度由線程類間(inter-class)調(diào)度、線程內(nèi)(intra-class)調(diào)度等2個(gè)階層構(gòu)成。因此,VPU執(zhí)行環(huán)境401內(nèi)的調(diào)度器具有線程類內(nèi)(intra-class)調(diào)度部601、線程類間(inter-class)調(diào)度部602。在線程類間的調(diào)度中,進(jìn)行跨線程間的調(diào)度。在線程類內(nèi)調(diào)度中,對(duì)各調(diào)度類進(jìn)行屬于該調(diào)度類的線程的調(diào)度。在線程類內(nèi)調(diào)度部601設(shè)置硬實(shí)時(shí)(硬RT)類調(diào)度部611、軟實(shí)時(shí)(軟RT)調(diào)度部612、最佳成果調(diào)度部613。
線程類間調(diào)度和線程類內(nèi)調(diào)度采用階層構(gòu)造,首先線程類間調(diào)度工作,決定執(zhí)行哪個(gè)線程類后,根據(jù)該線程類內(nèi)調(diào)度調(diào)度,決定執(zhí)行該線程類內(nèi)的哪個(gè)線程。線程類間調(diào)度使用能占先的固定優(yōu)先級(jí)調(diào)度。此時(shí),硬實(shí)時(shí)類具有最高優(yōu)先級(jí),按照軟實(shí)時(shí)類、最佳成果類的順序,優(yōu)先級(jí)降低。如果更高優(yōu)先級(jí)的類的線程變?yōu)榭蓤?zhí)行(ready),則低優(yōu)先級(jí)類的線程的執(zhí)行被取代。線程類間的同步通過由VPU執(zhí)行環(huán)境401提供的同步機(jī)構(gòu)實(shí)現(xiàn)。此時(shí),對(duì)硬實(shí)時(shí)類線程只能使用無阻斷的機(jī)構(gòu),從而不發(fā)生硬實(shí)時(shí)類線程的阻斷。另外,當(dāng)最佳成果類線程阻斷軟實(shí)時(shí)類線程時(shí),通過把該最佳成果類線程作為軟實(shí)時(shí)類線程處理,防止線程類間的優(yōu)先級(jí)逆轉(zhuǎn)的發(fā)生。該最佳成果類線程由其他軟實(shí)時(shí)類線程阻斷時(shí),使用優(yōu)先級(jí)繼承協(xié)議等方式,從而不被阻斷。
(線程參數(shù))在本實(shí)施例的實(shí)時(shí)處理系統(tǒng)中,使用各種參數(shù),進(jìn)行調(diào)度。各類的線程中,存在以下的公共參數(shù)。
·線程的類(硬實(shí)時(shí)、軟實(shí)時(shí)、最佳成果)·使用的資源(MPU或VPU的數(shù)、帶寬、物理存儲(chǔ)器尺寸、輸入輸出設(shè)備)·優(yōu)先級(jí)·能奪取(preemptive)或不能奪取(non-preemptive)有關(guān)硬實(shí)時(shí)類的線程,還存在以下參數(shù)。
·執(zhí)行期間·最終期限
·周期或最小發(fā)生期間(minimum inter-arrival time)·VPU的上下文切換方式圖55表示硬實(shí)時(shí)類的基本參數(shù)的例子。在圖57的最上方的例1的執(zhí)行期間的預(yù)約指定的例子中,在指定的執(zhí)行期間中,同時(shí)預(yù)約1個(gè)MPU、2個(gè)VPU,指定完全保存VPU的上下文。此時(shí),在3個(gè)處理器上同時(shí)執(zhí)行線程,在執(zhí)行期間結(jié)束后,除了MPU線程,還完全保存VPU線程的上下文。在位于右上的例2中,表示保障由VPU數(shù)和其執(zhí)行期間表現(xiàn)的處理在最終期限之前執(zhí)行時(shí)的最終期限的執(zhí)行方法。最終期限由從進(jìn)行預(yù)約要求的時(shí)刻(request time)開始的相對(duì)時(shí)刻指定。在位于最下方的例3中,執(zhí)行周期執(zhí)行。在本例子中,表示指定2個(gè)VPU12的執(zhí)行期間被周期執(zhí)行,另外在各周期的執(zhí)行后,拋棄VPU線程的上下文,全部處理由新的上下文處理。使用從周期的開頭開始的相對(duì)時(shí)刻指定最終期限。
作為硬實(shí)時(shí)類中使用的其他參數(shù),例如有以下所示的制約條件。
·定時(shí)制約(絕對(duì)定時(shí)制約、相對(duì)定時(shí)制約)·先行制約·互斥制約定時(shí)制約提供使執(zhí)行定時(shí)延遲的方法。絕對(duì)定時(shí)制約如圖56所示,是以周期的開始時(shí)刻那樣的某靜態(tài)定時(shí)為基準(zhǔn),指定延遲時(shí)間的制約條件。相對(duì)定時(shí)制約如圖57所示,例如以其他執(zhí)行期間的開始時(shí)刻或結(jié)束時(shí)刻那樣的動(dòng)態(tài)定時(shí)或事件為基準(zhǔn),指定能允許的延遲時(shí)間的制約條件。先行制約能通過使用相對(duì)定時(shí)制約,以其他執(zhí)行期間的結(jié)束時(shí)間為基準(zhǔn),把延遲時(shí)間指定為0以上而實(shí)現(xiàn),所以能認(rèn)為先行制約是相對(duì)定時(shí)制約的特殊情況。
互斥制約(mutual exclusive)如圖58所示,是保障各執(zhí)行期間在時(shí)間上不重疊的制約。通過使用互斥制約,能削減由于鎖定而產(chǎn)生的線程執(zhí)行期間的不可預(yù)測(cè)性。即不同時(shí)執(zhí)行共享某資源的全部線程,能消除有關(guān)該資源的鎖定。
(線程的同步機(jī)構(gòu))
在本實(shí)施例的實(shí)時(shí)處理系統(tǒng)中,作為線程的同步機(jī)構(gòu),例如使用以下的方法。
·信號(hào)機(jī)·信息排隊(duì)·信息緩存器·事件標(biāo)志·屏障·互斥其他同步機(jī)構(gòu)也能與它們同樣使用。作為實(shí)現(xiàn)這樣的同步機(jī)構(gòu)的方法,在本發(fā)明的實(shí)時(shí)處理系統(tǒng)中,存在以下三種方式。
在存儲(chǔ)器(主存儲(chǔ))13或VPU的局部存儲(chǔ)器32上,使用例如TEST&SET那樣的命令實(shí)現(xiàn)。
·使用郵箱或信號(hào)寄存器等硬件急驟實(shí)現(xiàn)。
·利用VPU執(zhí)行環(huán)境作為服務(wù)而提供的機(jī)構(gòu)。
這些實(shí)現(xiàn)方法不同的同步機(jī)構(gòu)分別具有得失,所以根據(jù)利用它的線程的屬性等,例如按圖59那樣分開使用。即使用MPU或VPU能共享訪問的存儲(chǔ)器13(主存儲(chǔ)MS)而安裝的同步機(jī)構(gòu)能在全部類的線程中使用。而安裝在VPU12的局部存儲(chǔ)器LS上的同步機(jī)構(gòu)只能由屬于密結(jié)合線程組(tightly coupled thread group)的線程使用。這是因?yàn)橹挥袑儆诿芙Y(jié)合線程組的線程保障同步對(duì)方的線程同時(shí)工作。例如,當(dāng)使用安裝在對(duì)方的線程工作的VPU的局部存儲(chǔ)器上的同步機(jī)構(gòu)時(shí),如果是密結(jié)合線程組的線程,則在使用同步機(jī)構(gòu)的時(shí)刻,保障對(duì)方的線程正在工作,所以在執(zhí)行該對(duì)方線程的VPU的局部存儲(chǔ)器中一定存在用于同步機(jī)構(gòu)的信息。
作為使用存儲(chǔ)器(主存儲(chǔ)MS)或存儲(chǔ)器控制器LS以外的部件安裝的同步機(jī)構(gòu),存在使用硬件機(jī)構(gòu)安裝的情況和使用VPU執(zhí)行環(huán)境401的服務(wù)的情況。屬于密結(jié)合線程組的線程或硬實(shí)時(shí)類的線程需要快速的同步機(jī)構(gòu),所以希望應(yīng)用使用硬件機(jī)構(gòu)安裝的同步機(jī)構(gòu)。而屬于疏結(jié)合線程組的線程或軟實(shí)時(shí)類和最佳成果類的線程希望利用執(zhí)行環(huán)境提供的機(jī)構(gòu)。
(同步機(jī)構(gòu)的自動(dòng)選擇)在本實(shí)施例的實(shí)時(shí)處理系統(tǒng)中,能配合線程的屬性或狀態(tài)自動(dòng)選擇和切換所述同步機(jī)構(gòu)。根據(jù)圖60所示的步驟,想進(jìn)行同步處理的線程屬于密結(jié)合線程組的狀態(tài)時(shí)(步驟S201的YES),應(yīng)用使用存儲(chǔ)器14或VPU12的局部存儲(chǔ)器32或硬件機(jī)構(gòu)安裝的同步機(jī)構(gòu),(步驟S202、S203、S204、S205),但是線程的狀態(tài)變化,變?yōu)椴皇敲芙Y(jié)合關(guān)系的狀態(tài)時(shí)(步驟S201的NO),切換同步機(jī)構(gòu),以便使用安裝在存儲(chǔ)器14上的同步機(jī)構(gòu)或作為VPU執(zhí)行環(huán)境401的服務(wù)而提供的同步機(jī)構(gòu)(步驟S206、S207、S208)。
該切換部件對(duì)在VPU12上工作的程序能以庫的形式提供,也能作為VPU12一側(cè)的VPU執(zhí)行環(huán)境502提供的服務(wù)提供。作為切換多個(gè)同步機(jī)構(gòu)的方式,預(yù)先確保多個(gè)同步機(jī)構(gòu),分開使用它,在進(jìn)行切換的時(shí)刻,能新確保同步機(jī)構(gòu)。
使用VPU12的局部存儲(chǔ)器的同步機(jī)構(gòu)象屬于密結(jié)合線程組的線程那樣,需要在進(jìn)行同步處理的時(shí)刻,安裝同步機(jī)構(gòu)的VPU12的局部存儲(chǔ)器必須變?yōu)橛行?。作為緩和這樣的限制的方式,當(dāng)線程不在執(zhí)行中(RUNNING狀態(tài))時(shí),把最后執(zhí)行該線程時(shí)的局部存儲(chǔ)器的內(nèi)容保存在存儲(chǔ)器中,從指向與該線程關(guān)聯(lián)的局部存儲(chǔ)器的頁表或段表的記錄控制映射,使其指向保存的存儲(chǔ)器區(qū)域。通過該方式,即使對(duì)方的線程不在執(zhí)行中,也如同存在與對(duì)方的線程關(guān)聯(lián)的局部存儲(chǔ)器那樣,能繼續(xù)線程的執(zhí)行。不在執(zhí)行中的線程被分配VPU12,開始執(zhí)行時(shí),把存儲(chǔ)器14中保存的內(nèi)容再次返回局部存儲(chǔ)器,變更對(duì)應(yīng)的頁表或段表的映射。這樣,通過安裝同步機(jī)構(gòu),使它對(duì)VPU12的局部存儲(chǔ)器的備份拷貝也能工作,即使不是屬于密結(jié)合線程組的線程,也能利用使用VPU12的局部存儲(chǔ)器安裝的同步機(jī)構(gòu)。
(預(yù)約圖表)圖61表示與在圖9中作為例子表示的處理流對(duì)應(yīng)的預(yù)約圖表。在圖61中,6個(gè)四邊形表示執(zhí)行期間(execution term)。各執(zhí)行期間的四角中的左上方編號(hào)是預(yù)約的執(zhí)行期間的ID,執(zhí)行期間的四角中的記號(hào)是與該執(zhí)行期間關(guān)聯(lián)的線程上下文的標(biāo)識(shí)符。執(zhí)行期間的四角的下方的數(shù)值表示該執(zhí)行期間的長(zhǎng)度(成本)。連接執(zhí)行期間的四角間的箭頭表示先行制約。即表示箭頭進(jìn)入的執(zhí)行期間一定在箭頭出來的執(zhí)行期間結(jié)束后開始執(zhí)行。另外,箭頭上的編號(hào)表示在由該箭頭連接的執(zhí)行期間之間交換數(shù)據(jù)時(shí)使用的緩存器的ID,與編號(hào)一起的數(shù)值表示緩存器的尺寸。根據(jù)圖61所示的預(yù)約圖表,用于執(zhí)行處理的步驟變?yōu)槿缦隆?br> 1.生成執(zhí)行DEMUX程序111的線程上下文,使它的標(biāo)識(shí)符為DEMUX。
2.生成執(zhí)行A-DEC程序112的線程上下文,使它的標(biāo)識(shí)符為A-DEC。
3.生成執(zhí)行V-DEC程序113的線程上下文,使它的標(biāo)識(shí)符為V-DEC。
4.生成執(zhí)行TEXT程序114的線程上下文,使它的標(biāo)識(shí)符為TEXT。
5.生成執(zhí)行PROG程序115的線程上下文,使它的標(biāo)識(shí)符為PROG。
6.生成執(zhí)行BLEND程序116的線程上下文,使它的標(biāo)識(shí)符為BLEND。
7.生成圖62所示的數(shù)據(jù)構(gòu)造的預(yù)約要求,傳遞給VPU執(zhí)行環(huán)境401,進(jìn)行預(yù)約。
在此,從步驟1~6的線程上下文的生成如果指定想執(zhí)行的程序作為線程,委托給VPU執(zhí)行環(huán)境401,則VPU執(zhí)行環(huán)境401分配必要的資源,生成線程上下文,返回其句柄,把它與標(biāo)識(shí)符關(guān)聯(lián)。
圖62的預(yù)約圖表由表示為BUFFER的緩存器數(shù)據(jù)、表示為TASK的執(zhí)行期間數(shù)據(jù)構(gòu)成。緩存器數(shù)據(jù)聲明在執(zhí)行期間中為了交換數(shù)據(jù)而使用的存儲(chǔ)器14上的緩存器,在Id中具有緩存器編號(hào),在Size中具有緩存器尺寸,在SrcTask中具有寫入數(shù)據(jù)的執(zhí)行期間的編號(hào),在DstTask中具有讀出數(shù)據(jù)的執(zhí)行期間的編號(hào)。執(zhí)行期間數(shù)據(jù)在Id中表示執(zhí)行期間編號(hào),在Class中具有線程類(VPU表示是VPU線程,HRT表示是硬實(shí)時(shí)類。另外還有表示MPU線程的MPU、表示軟實(shí)時(shí)類的SRT、表示最佳成果類的BST等),在ThreadContext中具有與該執(zhí)行期間關(guān)聯(lián)的線程上下文,在Cost中具有執(zhí)行期間的長(zhǎng)度或成本,在Constraint中具有以該執(zhí)行期間為基準(zhǔn)的各種制約,在Input Buffer中具有在該執(zhí)行期間中讀出的緩存器的標(biāo)識(shí)符的列表,在Output Buffer中具有在該執(zhí)行期間中寫入的緩存器的標(biāo)識(shí)符的列表。在Constraint中具有表示先行制約的Precedence、表示絕對(duì)定時(shí)制約的AbsoluteTiming、表示相對(duì)定時(shí)制約的RelativeTiming、表示互斥制約的Exclusive等,分別具有成為制約的對(duì)方的執(zhí)行期間編號(hào)的列表。
用圖62的預(yù)約要求預(yù)約的緩存器區(qū)域在VPU執(zhí)行環(huán)境401對(duì)緩存器寫入數(shù)據(jù)的線程的執(zhí)行開始時(shí)分配,在讀出數(shù)據(jù)的線程的執(zhí)行結(jié)束時(shí)釋放。分配的緩存器的地址使用在線程的起動(dòng)時(shí)預(yù)先決定的地址或變量或寄存器等,能對(duì)線程通知。在本實(shí)施例的實(shí)時(shí)處理系統(tǒng)中,當(dāng)提供圖7所示的程序模塊100時(shí),讀入位于其中的圖8所示的構(gòu)成記述117,根據(jù)它,用所述步驟進(jìn)行線程的生成和圖62的預(yù)約要求的生成、發(fā)出,提供進(jìn)行該程序模塊100的執(zhí)行的功能。根據(jù)該功能,通過基于多個(gè)處理器的軟件處理,能實(shí)現(xiàn)由圖7的程序模塊100記述的專用軟件的處理。對(duì)想實(shí)現(xiàn)的各軟件,生成具有圖7的構(gòu)造的程序模塊,通過用組入基于本實(shí)施例的實(shí)時(shí)處理系統(tǒng)的功能的儀器執(zhí)行它,能使該儀器作為所希望的硬件工作。
如果被提供圖62所示的預(yù)約要求,則VPU執(zhí)行環(huán)境401決定在周期內(nèi)的哪個(gè)定時(shí)用哪個(gè)VPU12執(zhí)行各執(zhí)行期間。這是調(diào)度。根據(jù)組入本實(shí)施例的實(shí)時(shí)處理系統(tǒng)的電子儀器的種類,實(shí)際上這樣的預(yù)約要求有時(shí)能同時(shí)提供多個(gè),所以為了它們不矛盾(不會(huì)不滿足提供的制約)而決定處理的定時(shí)。例如,如圖63所示,當(dāng)存在2個(gè)VPU12時(shí),如果只有圖62的預(yù)約要求,則進(jìn)行調(diào)度,用VPU0依次執(zhí)行DEMUX、V-DEC、PROG、BLEND的無法并行執(zhí)行的處理,用VPU1執(zhí)行在DEMUX的執(zhí)行后能并行工作的A-DEC和TEXT。
(軟件流水線)在此,當(dāng)沒有盡可能依次執(zhí)行DEMUX、V-DEC、PROG、BLEND的時(shí)間時(shí),跨多個(gè)周期進(jìn)行軟件流水線化。例如如圖64所示,在最初的周期1中,用VPU0進(jìn)行DEMUX和V-DEC,在接著的周期2中用VPU1進(jìn)行A-DEC、TEXT、PROG、BLEND的處理。在周期2中,與A-DEC、TEXT、PROG、BLEND的處理并行,由VPU0執(zhí)行下一幀的DEMUX和V-DEC。即如圖65所示,按照在VPU0執(zhí)行DEMUX和V-DEC時(shí),在VPU1中,接收以前的周期的DEMUX和V-DEC的輸出的A-DEC、TEXT、PROG、BLEND工作的方法,進(jìn)行流水線處理。用于實(shí)現(xiàn)軟件流水線的調(diào)度處理的步驟如下所述。
1.VPU執(zhí)行環(huán)境401把程序模塊100從存儲(chǔ)它的外部存儲(chǔ)裝置或存儲(chǔ)器13輸入,讀入構(gòu)成記述117。
2.VPU執(zhí)行環(huán)境401根據(jù)構(gòu)成記述117把用于執(zhí)行程序模塊100內(nèi)的多個(gè)程序111~116的多個(gè)線程(DEMUX、V-DEC、A-DEC、TEXT、PROG、BLEND)分割為第一線程組(例如DEMUX、V-DEC)和在它后續(xù)執(zhí)行的第二線程組(例如A-DEC、TEXT、PROG、BLEND)。
3.VPU執(zhí)行環(huán)境401把第一線程組(DEMUX、V-DEC)和第二線程組(A-DEC、TEXT、PROG、BLEND)分別分配給VPU0、1,從而由2個(gè)VPU0、1流水線處理第一線程組(DEMUX、V-DEC)和第二線程組(A-DEC、TEXT、PROG、BLEND)。
(考慮緩存量的調(diào)度)當(dāng)在某執(zhí)行期間中執(zhí)行的線程和在其他執(zhí)行期間中執(zhí)行的線程之間使用緩存器發(fā)送數(shù)據(jù)時(shí),從寫入數(shù)據(jù)的一側(cè)的執(zhí)行期間的開始到讀出數(shù)據(jù)的一側(cè)的執(zhí)行期間的最后專門占有該緩存器。例如,如圖66所示,當(dāng)在執(zhí)行期間A和執(zhí)行期間B之間使用緩存器發(fā)送數(shù)據(jù)時(shí),如圖66所示,從執(zhí)行期間A的開始到執(zhí)行期間B的最后的期間,占用存儲(chǔ)器14(主存儲(chǔ))上的緩存器。因此,當(dāng)從執(zhí)行期間A到執(zhí)行期間B使用緩存器發(fā)送數(shù)據(jù)時(shí),在軟件流水線化時(shí),以相鄰的不同周期進(jìn)行執(zhí)行期間A和B時(shí),根據(jù)執(zhí)行期間A和B的執(zhí)行定時(shí),改變必要的緩存器的量。例如如圖67所示,當(dāng)調(diào)度為在各周期內(nèi),比執(zhí)行期間A比B早執(zhí)行時(shí),來自執(zhí)行期間An(An表示周期n的A)的數(shù)據(jù)傳給下一周期的執(zhí)行期間Bn,來自執(zhí)行期間An+1的數(shù)據(jù)傳給下一周期的執(zhí)行期間Bn+1。此時(shí),執(zhí)行期間An+1夾在An和Bn之間,所以不使用An為了向Bn傳遞輸據(jù)而使用的緩存器,使用新的緩存器。即雙緩存器成為必要。而如圖68所示,如果在周期內(nèi),執(zhí)行期間A在B的結(jié)束后開始,則Bn讀出執(zhí)行期間An寫入數(shù)據(jù)的緩存器后,循環(huán)使用相同的緩存器,An+1寫入數(shù)據(jù),Bn+1讀出,用一個(gè)緩存器就可以了。
在本實(shí)施例的實(shí)時(shí)處理系統(tǒng)中,VPU執(zhí)行環(huán)境401的調(diào)度器調(diào)度預(yù)約的執(zhí)行期間,盡可能減少緩存器區(qū)域的使用量。即當(dāng)進(jìn)行軟件流水線時(shí),如圖69的程序框圖所示,VPU執(zhí)行環(huán)境401的調(diào)度器為了執(zhí)行基于VPU0、1的2個(gè)VPU軟件流水線,把一系列的處理分割為2部分處理(由VPU0先行執(zhí)行的部分處理和接著該部分處理而由VPU1執(zhí)行的部分處理)(步驟S211)。然后,VPU執(zhí)行環(huán)境401的調(diào)度器抽出在2部分處理間通過緩存器進(jìn)行輸入輸出的線程(例如,先行執(zhí)行的部分處理內(nèi)的線程A、后續(xù)執(zhí)行的部分處理內(nèi)的線程B)(步驟S212),調(diào)度線程A、B,使在各周期中,先行執(zhí)行的部分處理內(nèi)的線程A在后續(xù)的部分處理內(nèi)的線程B的執(zhí)行期間結(jié)束后開始(步驟S213)。
(具有階層構(gòu)造的預(yù)約標(biāo)志)圖61所示的預(yù)約標(biāo)志不具有階層構(gòu)造,但是如圖70所示,也能處理具有階層構(gòu)造的預(yù)約標(biāo)志。在圖70的例子中,執(zhí)行期間A先行于B,B先行于C。B之中,D先行于E和F。因此,如果解除階層,則A先行于D,E和F先行于C。
(考慮密結(jié)合線程組的預(yù)約要求)例如在圖61所示的預(yù)約標(biāo)志中,執(zhí)行V-DEC的線程和執(zhí)行PROG的線程屬于密結(jié)合線程組時(shí),象圖71那樣生成表示該結(jié)合屬性的預(yù)約要求。在圖71的例子中,在TightlyCoupled中記述與對(duì)方線程對(duì)應(yīng)的執(zhí)行期間的ID。據(jù)此,按圖72所示進(jìn)行調(diào)度,執(zhí)行V-DEC的線程和執(zhí)行PROG的線程通過不同的VPU同時(shí)執(zhí)行。此時(shí),執(zhí)行V-DEC的線程和執(zhí)行PROG的線程之間的通信通過局部存儲(chǔ)器進(jìn)行,所以沒必要在存儲(chǔ)器14上準(zhǔn)備緩存器。
(基于構(gòu)成記述的調(diào)度算法)
下面,說明根據(jù)組入程序模塊中的構(gòu)成記述,預(yù)約各線程的執(zhí)行期間的處理步驟。
圖7的程序模塊100內(nèi)的構(gòu)成記述117變?yōu)閳D8的例子那樣。如果被提供該構(gòu)成記述117,則VPU執(zhí)行環(huán)境401執(zhí)行以下的步驟。
1.加載寫在構(gòu)成記述117的模塊欄目中的各程序,生成執(zhí)行它的線程。此時(shí),在本實(shí)施例中,對(duì)構(gòu)成記述117的各記錄生成一個(gè)線程。在構(gòu)成記述117中,存在具有相同模塊名的多個(gè)記錄時(shí),與各記錄對(duì)應(yīng)生成執(zhí)行相同模塊的多個(gè)線程。須指出的是,在圖8的例子中,生成的全部線程處于一個(gè)進(jìn)程,但是也能實(shí)施為各線程屬于不同的進(jìn)程,或某組的線程屬于某進(jìn)程,其他組的線程屬于其他進(jìn)程。
2.從構(gòu)成記述117的信息生成在圖62中說明的預(yù)約要求的數(shù)據(jù)構(gòu)造。
3.把預(yù)約要求傳給VPU執(zhí)行環(huán)境,進(jìn)行處理的調(diào)度,開始執(zhí)行。
生成第二個(gè)預(yù)約要求的步驟按如下進(jìn)行。
首先,在構(gòu)成記述117的輸出欄目中,1對(duì)1對(duì)應(yīng),生成BUFFER記錄,加到預(yù)約要求中。例如,在圖8的構(gòu)成記述117的例子中,DEMUX模塊的第二個(gè)輸出使用1MB的緩存器,把數(shù)據(jù)傳給V-DEC,所以為了與此對(duì)應(yīng),生成圖62的Id為2的BUFFER記錄。在Id為2的BUFFER記錄中,在Size欄目中把該緩存器尺寸記錄為1MB,把對(duì)與向緩存器寫入數(shù)據(jù)的DEMUX模塊對(duì)應(yīng)的任務(wù)Id為1的TASK記錄的參照記錄到SrcTask欄目中,把對(duì)與讀出緩存器數(shù)據(jù)的V-DEC對(duì)應(yīng)的任務(wù)Id為3的TASK記錄的參照記錄到DstTask欄目中。
接著,在構(gòu)成記述117中,1對(duì)1對(duì)應(yīng),生成TASK記錄,加到預(yù)約要求中。例如在圖8的構(gòu)成記述117的例子中,作為與V-DEC某塊對(duì)應(yīng)的TASK記錄,生成圖62的Id為3的TASK記錄。在Id為3的TASK記錄中記錄以下的信息。
Class欄目表示用怎樣的屬性執(zhí)行該TASK記錄中指定的線程的標(biāo)志。VPU表示是在VPU上執(zhí)行的線程,HRT表示是硬實(shí)時(shí)類的線程。在圖8的例子中,根據(jù)記述在構(gòu)成記述117的線程參數(shù)中的信息,設(shè)定這些信息。
ThreadContext欄目指定想用該TASK記錄進(jìn)行執(zhí)行的預(yù)約的線程的線程上下文。具體而言,加載圖8的構(gòu)成記述117的模塊欄目中指定的程序模塊,通過VPU執(zhí)行環(huán)境401生成執(zhí)行它的線程,把線程的線程上下文的標(biāo)識(shí)符(或指針)記錄在ThreadContext欄目中。
Constrain欄目記錄有關(guān)該TASK記錄的制約條件。當(dāng)為先行制約時(shí),在Precede之后,按必要的數(shù)指定該TASK先行的其他TASK的Id。當(dāng)Id為3的TASK記錄時(shí),表示先行于Id為5的與PROG模塊對(duì)應(yīng)的TASK。
InputBuffer欄目按必要的數(shù)指定由該TASK記錄指定的線程讀出數(shù)據(jù)的緩存器的Buffer記錄的Id。
OutputBuffer欄目按必要的數(shù)指定由該TASK記錄指定的線程寫入數(shù)據(jù)的緩存器的Buffer記錄的Id。
如果這樣提供構(gòu)造記述,就生成與它對(duì)應(yīng)的預(yù)約要求。
接著,如果把該預(yù)約要求傳給VPU執(zhí)行環(huán)境401內(nèi)的調(diào)度器,調(diào)度器生成執(zhí)行指定的預(yù)約要求所需要的時(shí)間表。作為該調(diào)度處理的結(jié)果而生成的時(shí)間表表示圖63所示的在各周期的哪個(gè)定時(shí),把哪個(gè)VPU分配給哪個(gè)線程多長(zhǎng)時(shí)間。實(shí)際上能實(shí)施為由圖73的預(yù)約要求表現(xiàn)。
圖73的預(yù)約要求由與各VPU關(guān)聯(lián)的預(yù)約記錄構(gòu)成。在預(yù)約記錄中,在開始時(shí)間欄目中記錄對(duì)一個(gè)線程,在各周期內(nèi)的哪個(gè)定時(shí)分配VPU,開始執(zhí)行;在執(zhí)行期間欄目中記錄在多長(zhǎng)的時(shí)間中征用VPU;在執(zhí)行線程欄目中記錄該線程的標(biāo)識(shí)符。這些預(yù)約記錄按照?qǐng)?zhí)行的VPU,按開始時(shí)間的順序排序,與預(yù)約列表關(guān)聯(lián)。
從圖62或圖71所示的預(yù)約要求生成圖73所示的預(yù)約列表的步驟能用圖74的程序框圖所示的步驟實(shí)施。
基本上,考慮使用BUFFER的輸入輸出關(guān)系,把預(yù)約要求中的各TASK記錄排序,按數(shù)據(jù)的流動(dòng)順序分配VPU的執(zhí)行時(shí)間。此時(shí),對(duì)密結(jié)合線程組中指定的TASK群,需要對(duì)各TASK的線程同時(shí)分配VPU。
圖74表示該步驟。如果提供預(yù)約要求,則對(duì)由其中的TASK記錄指定的全部任務(wù)的集合,用以下的步驟進(jìn)行調(diào)度(換言之,時(shí)間表的分配、或預(yù)約列表的生成)。
步驟S301選擇全部輸入任務(wù)為分配完畢的任務(wù),沒有密結(jié)合指定的任務(wù)。即在未分配的任務(wù)(還未生成預(yù)約記錄,未與預(yù)約列表關(guān)聯(lián)的任務(wù))中,成為該任務(wù)的輸入的成為數(shù)據(jù)源的任務(wù)全部為分配完畢(預(yù)約記錄進(jìn)入預(yù)約列表),或該任務(wù)不具有數(shù)據(jù)的輸入時(shí),并且如果該任務(wù)是未指定密結(jié)合的,就選擇它,到步驟S302,如果不是,就到步驟S304。
步驟S302如果存在能預(yù)約選擇的任務(wù)的VPU(換言之,如果存在能預(yù)約滿足與其它任務(wù)間的制約的VPU),就到步驟S303,如果不是,因?yàn)椴荒苷{(diào)度,所以通知失敗。
步驟S303生成選擇的任務(wù)的預(yù)約請(qǐng)求,與預(yù)約列表關(guān)聯(lián)。
步驟S404選擇全部輸入任務(wù)為分配完畢的任務(wù),具有密結(jié)合關(guān)系的任務(wù)群。即如果在未分配的任務(wù)(還未生成預(yù)約記錄,未與預(yù)約列表關(guān)聯(lián)的任務(wù))中,成為該任務(wù)的輸入的成為數(shù)據(jù)源的任務(wù)全部為分配完畢(預(yù)約記錄進(jìn)入預(yù)約列表),或該任務(wù)是不具有數(shù)據(jù)輸入的集合,并且屬于該集合的任務(wù)間指定了密結(jié)合,就選擇任務(wù)集合(稱作任務(wù)群),到步驟S305,如果不是,就分配全部任務(wù),所以結(jié)束調(diào)度處理。
步驟S305如果存在能同時(shí)(在相同開始時(shí)可具有相同的執(zhí)行期間)預(yù)約選擇的任務(wù)集合中包含的全部任務(wù)的多個(gè)VPU,就到步驟S306,如果不是,就不能預(yù)約,所以通知失敗。
步驟S306生成選擇的任務(wù)集合的全部任務(wù)的預(yù)約記錄,與預(yù)約列表關(guān)聯(lián)。
在此的說明描述了一個(gè)預(yù)約要求的調(diào)度的步驟,但是如上所述,實(shí)際上,在一個(gè)系統(tǒng)中,多個(gè)預(yù)約要求同時(shí)存在是很普通的。此時(shí),能依次以所述步驟把多個(gè)預(yù)約要求調(diào)度,更希望同使用所述步驟調(diào)度多個(gè)預(yù)約要求。
以上以記述數(shù)字電視廣播接收機(jī)的動(dòng)作的程序模塊為例進(jìn)行說明,但是通過準(zhǔn)備記述其他各種硬件的動(dòng)作的程序模塊,能通過軟件實(shí)現(xiàn)數(shù)字電視廣播接收機(jī)以外的其他任意硬件的動(dòng)作。
須指出的是,設(shè)置在圖1的計(jì)算機(jī)系統(tǒng)中的MPU11和多個(gè)VPU12也能作為把它們混載在1芯片上的并行處理器實(shí)現(xiàn)。此時(shí),由MPU11執(zhí)行的VPU執(zhí)行環(huán)境、或由特定的一個(gè)VPU等執(zhí)行的VPU執(zhí)行環(huán)境能控制對(duì)多個(gè)VPU12的調(diào)度。
另外,通過把作為VPU執(zhí)行環(huán)境工作的程序或包含該VPU執(zhí)行環(huán)境的操作系統(tǒng)等的程序存儲(chǔ)在計(jì)算機(jī)可讀取存儲(chǔ)媒體中,通過該存儲(chǔ)媒體把該程序?qū)氚謩e具有局部處理器的多個(gè)處理器的計(jì)算機(jī)中來執(zhí)行,就能取得與本實(shí)施例同樣的效果。
而且,本發(fā)明并不局限于所述實(shí)施例,在不脫離本發(fā)明精神的范圍內(nèi)可以有各種各樣的實(shí)施例變形,另外,根據(jù)所述實(shí)施例中描述的多個(gè)構(gòu)成要素的適當(dāng)組合,可以形成各種發(fā)明。例如,可以從實(shí)施例表示的全部構(gòu)成要求中刪除幾個(gè)構(gòu)成要素。進(jìn)而,還可以適當(dāng)組合涉及不同實(shí)施例的構(gòu)成要素。
綜上所述,根據(jù)本發(fā)明,即使不在程序代碼中詳細(xì)地記述各種處理的時(shí)間性制約條件,也能高效地調(diào)度用于執(zhí)行實(shí)時(shí)處理的線程群。
權(quán)利要求
1.一種調(diào)度方法,調(diào)度用于執(zhí)行由多個(gè)處理要素的組合構(gòu)成的實(shí)時(shí)處理的線程群,其特征在于包括輸入記述了與所述多個(gè)處理要素分別對(duì)應(yīng)的步驟的多個(gè)程序和表示所述多個(gè)程序之間的輸入輸出關(guān)系及執(zhí)行所述各程序所需要的成本的構(gòu)成記述信息的步驟;和通過根據(jù)所述構(gòu)成記述信息決定執(zhí)行所述多個(gè)程序的多個(gè)線程各自的執(zhí)行開始定時(shí)和執(zhí)行期間,來執(zhí)行分別將所述多個(gè)線程分配給一個(gè)以上處理器的調(diào)度處理的步驟。
2.根據(jù)權(quán)利要求1所述的調(diào)度方法,其特征在于所述構(gòu)成記述信息還包含表示所述多個(gè)程序中的程序之間的結(jié)合屬性的結(jié)合屬性信息;執(zhí)行所述調(diào)度處理的步驟包括根據(jù)所述結(jié)合屬性信息,從所述多個(gè)線程中選擇彼此協(xié)調(diào)工作的線程的集合即密結(jié)合線程組的步驟;和為了分別通過不同的處理器來同時(shí)執(zhí)行屬于經(jīng)所述選擇的密結(jié)合線程組的線程群,而決定應(yīng)分配屬于所述密結(jié)合線程組的線程群的、與該線程群的個(gè)數(shù)相同的處理器的步驟。
3.根據(jù)權(quán)利要求2所述的調(diào)度方法,其特征在于分配屬于所述密結(jié)合線程組的線程群的所述處理器分別具有局部存儲(chǔ)器;還包括把執(zhí)行屬于所述密結(jié)合線程組的其他線程的處理器的局部存儲(chǔ)器映射到屬于所述密結(jié)合線程組的線程群的各自的有效地址空間的一部分上的步驟。
4.一種信息處理系統(tǒng),執(zhí)行由多個(gè)處理要素構(gòu)成的實(shí)時(shí)處理,其特征在于包括多個(gè)處理器;存儲(chǔ)記述了與所述多個(gè)處理要素分別對(duì)應(yīng)的步驟的多個(gè)程序和表示所述多個(gè)程序之間的輸入輸出關(guān)系及所述各程序的執(zhí)行所需的成本的構(gòu)成記述信息的部件;通過根據(jù)所述構(gòu)成記述信息決定執(zhí)行所述多個(gè)程序的多個(gè)線程各自的執(zhí)行開始定時(shí)和執(zhí)行期間,來執(zhí)行將所述多個(gè)線程分別分配給所述多個(gè)處理器內(nèi)的1以上處理器的調(diào)度處理的部件。
5.根據(jù)權(quán)利要求4所述的信息處理系統(tǒng),其特征在于所述構(gòu)成記述信息還包含表示所述多個(gè)程序中的程序之間的結(jié)合屬性的結(jié)合屬性信息;執(zhí)行所述調(diào)度處理的部件包含根據(jù)所述結(jié)合屬性信息,從所述多個(gè)線程中選擇彼此協(xié)調(diào)工作的線程的集合即密結(jié)合線程組的部件;和為了分別通過不同的處理器來同時(shí)執(zhí)行屬于經(jīng)所述選擇的密結(jié)合線程組的線程群,而從所述多個(gè)處理器中決定應(yīng)分配屬于所述密結(jié)合線程組的線程群的、與該線程群的個(gè)數(shù)相同的處理器的部件。
6.根據(jù)權(quán)利要求5所述的信息處理系統(tǒng),其特征在于所述多個(gè)處理器分別具有局部存儲(chǔ)器;還包括把執(zhí)行屬于所述密結(jié)合線程組的其他線程的處理器的局部存儲(chǔ)器映射到屬于所述密結(jié)合線程組的線程群各自的有效地址空間的一部分上的步驟。
7.一種程序,使包含多個(gè)處理器的計(jì)算機(jī)執(zhí)行用于對(duì)線程群進(jìn)行調(diào)度的處理,該線程群用于執(zhí)行由多個(gè)處理要素的組合構(gòu)成的實(shí)時(shí)處理,其特征在于包括使所述計(jì)算機(jī)執(zhí)行輸入記述了與所述多個(gè)處理要素分別對(duì)應(yīng)的步驟的多個(gè)程序和表示所述多個(gè)程序之間的輸入輸出關(guān)系及執(zhí)行所述各程序所需要的成本的構(gòu)成記述信息的處理的步驟;和使所述計(jì)算機(jī)執(zhí)行以下調(diào)度處理的步驟,該調(diào)度處理是通過根據(jù)所述構(gòu)成記述信息決定執(zhí)行所述多個(gè)程序的多個(gè)線程各自的執(zhí)行開始定時(shí)和執(zhí)行期間,來分別將所述多個(gè)線程分配給一個(gè)以上處理器。
8.根據(jù)權(quán)利要求7所述的程序,其特征在于所述構(gòu)成記述信息還包含表示所述多個(gè)程序中的程序之間的結(jié)合屬性的結(jié)合屬性信息;使所述計(jì)算機(jī)執(zhí)行所述調(diào)度處理的步驟包括使所述計(jì)算機(jī)執(zhí)行根據(jù)所述結(jié)合屬性信息從所述多個(gè)線程中選擇彼此協(xié)調(diào)工作的線程的集合即密結(jié)合線程組的處理的步驟;和使所述計(jì)算機(jī)執(zhí)行為了分別通過不同的處理器來同時(shí)執(zhí)行屬于經(jīng)所述選擇的密結(jié)合線程組的線程群,而決定應(yīng)分配屬于所述密結(jié)合線程組的線程群的、與該線程群的個(gè)數(shù)相同的處理器的處理的步驟。
9.根據(jù)權(quán)利要求8所述的程序,其特征在于分配屬于所述密結(jié)合線程組的線程群的所述處理器分別具有局部存儲(chǔ)器;還包括使所述計(jì)算機(jī)進(jìn)行以下處理把執(zhí)行屬于所述密結(jié)合線程組的其他線程的處理器的局部存儲(chǔ)器映射到屬于所述密結(jié)合線程組的線程群的各自的有效地址空間的一部分上。
全文摘要
本發(fā)明公開了一種調(diào)度方法,程序模塊(100)包含記錄與多個(gè)處理要素分別對(duì)應(yīng)的步驟的多個(gè)程序(111~116)、構(gòu)成記述信息(117)。構(gòu)成記述信息(117)表示多個(gè)程序(111~116)間的輸入輸出關(guān)系和各程序(111~116)的執(zhí)行所需的成本。在程序模塊(100)的執(zhí)行時(shí),通過根據(jù)構(gòu)成記述信息(117)決定執(zhí)行多個(gè)程序(111~116)的多個(gè)線程各自的執(zhí)行開始時(shí)刻和執(zhí)行期間,執(zhí)行把多個(gè)線程分別分配給1以上的處理器的調(diào)度處理。在程序的代碼中不詳細(xì)記述各種處理的時(shí)間制約條件,高效地調(diào)度用于實(shí)時(shí)處理的線程群。
文檔編號(hào)G06F15/173GK1577281SQ20041000730
公開日2005年2月9日 申請(qǐng)日期2004年2月27日 優(yōu)先權(quán)日2003年6月27日
發(fā)明者金井達(dá)德, 前田誠(chéng)司, 吉井謙一郎, 矢野浩邦 申請(qǐng)人:株式會(huì)社東芝
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
邯郸县| 长治县| 奉贤区| 光泽县| 利津县| 雷山县| 隆子县| 安多县| 海丰县| 治多县| 扶风县| 万州区| 海淀区| 佳木斯市| 蓬莱市| 康保县| 通海县| 北海市| 芜湖市| 高邑县| 克东县| 玉门市| 宁都县| 改则县| 天柱县| 视频| 辉南县| 雷州市| 广汉市| 马尔康县| 东乡族自治县| 河曲县| 孟津县| 阳高县| 蕉岭县| 洛扎县| 格尔木市| 新巴尔虎左旗| 阿勒泰市| 阜南县| 溆浦县|