專利名稱:任務(wù)處理裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種OS (Operating System,操作系統(tǒng))的功能,特別是涉及一種任務(wù)調(diào)度技術(shù)。
背景技術(shù):
不僅是如個(gè)人計(jì)算機(jī)一樣的通用設(shè)備用0S,就連如移動(dòng)電話一樣的專用設(shè)備用 OS中也逐漸要求高級(jí)功能。特別是能夠用一個(gè)CPU (Central Processing Unit,中央處理器)執(zhí)行多個(gè)任務(wù)的0S(以下將這種類型的OS稱作“多任務(wù)OS”)現(xiàn)已經(jīng)被配置在很多的電子裝置中。多任務(wù)OS將CPU的處理時(shí)間分割為單位時(shí)間(時(shí)間片),并為多個(gè)任務(wù)順序分配時(shí)間片。只有當(dāng)從OS獲得時(shí)間片時(shí),各任務(wù)才能夠使用CPU。在一個(gè)時(shí)間片中執(zhí)行一個(gè)任務(wù)。由于時(shí)間片是非常短的時(shí)間,對(duì)于用戶而言,多個(gè)任務(wù)看似是同時(shí)執(zhí)行的。根據(jù)這種處理方法,通過在任務(wù)A到達(dá)等待輸入的狀態(tài)因而不需要用到CPU的處理能力時(shí),將執(zhí)行權(quán)交給其它任務(wù)B,能夠有效利用CPU的處理能力。這里所說的執(zhí)行權(quán)等同于使用CPU的權(quán)利。多任務(wù)OS進(jìn)行的執(zhí)行權(quán)轉(zhuǎn)移被稱作“任務(wù)切換”。任務(wù)切換是在時(shí)間片已經(jīng)屆滿、 或任務(wù)執(zhí)行規(guī)定命令時(shí)發(fā)生。當(dāng)?shù)竭_(dá)任務(wù)切換的執(zhí)行時(shí)刻時(shí),多任務(wù)OS將執(zhí)行中的任務(wù)的上下文信息保存到TCB (Task Control Block 任務(wù)控制塊)中。上下文信息是指任務(wù)執(zhí)行時(shí)存儲(chǔ)在CPU的寄存器中的數(shù)據(jù)、或與任務(wù)執(zhí)行狀態(tài)有關(guān)的數(shù)據(jù)。TCB是指為了存儲(chǔ)只有任務(wù)才有的信息而在存儲(chǔ)器中預(yù)留的區(qū)域。多任務(wù)OS將執(zhí)行中的任務(wù)的上下文信息保存到 TCB中后,選擇將分配給執(zhí)行權(quán)的任務(wù),從TCB中讀出上下文信息,并將該信息加載到CPU寄存器中。由此,各任務(wù)以時(shí)間片為單位一點(diǎn)點(diǎn)地執(zhí)行自身的處理。多任務(wù)OS具有能夠高效地執(zhí)行多個(gè)任務(wù)的優(yōu)點(diǎn),但是也具有產(chǎn)生與上下文信息保存/加載相對(duì)應(yīng)的開銷的缺點(diǎn)。通常多任務(wù)OS的優(yōu)點(diǎn)遠(yuǎn)遠(yuǎn)大于與任務(wù)切換有關(guān)的開銷。[專利文獻(xiàn)1]日本特開平11-272480號(hào)公報(bào)[專利文獻(xiàn)2]日本特開2001-75820號(hào)公報(bào)[非專利文獻(xiàn)1]森久直,坂卷佳壽美,重松宏志,“用于嵌入式控制系統(tǒng)的實(shí)時(shí)OS 的硬件實(shí)現(xiàn)”(“組込辦制御〉7于A向什,J 了義夕4 A OS乃八一卜·、々工7化(Hardware implementation of a read-time operating system for embedded control system)”), 東京都立產(chǎn)業(yè)技術(shù)研究所研究報(bào)告,日本,2005年8月4日(收稿),8,p. 55-58。
發(fā)明內(nèi)容
本發(fā)明要解決的問題近年來,嚴(yán)格要求在規(guī)定時(shí)間內(nèi)完成處理的實(shí)時(shí)OS (以下稱作“RT0S (Real-TimeOperating System)”)被特別廣泛地應(yīng)用于嵌入式系統(tǒng)(Embedded System)中。在這種時(shí)間要求嚴(yán)格的RTOS中,存在任務(wù)切換時(shí)的開銷大大影響系統(tǒng)整體性能的情況。本發(fā)明人意識(shí)到為了進(jìn)一步提高多任務(wù)處理的效率,需要降低與任務(wù)切換有關(guān)的開銷。本發(fā)明是鑒于上述問題而作出的,其主要目的在于提供一種用于在多任務(wù)處理中更高效地控制任務(wù)執(zhí)行的技術(shù)。用于解決問題的手段本發(fā)明的一個(gè)方面涉及一種任務(wù)處理裝置。所述任務(wù)處理裝置包括處理寄存器、將數(shù)據(jù)從存儲(chǔ)器加載到所述處理寄存器中并按照該處理寄存器中的所述數(shù)據(jù)執(zhí)行任務(wù)的執(zhí)行控制電路、分別與多個(gè)任務(wù)對(duì)應(yīng)的多個(gè)保存寄存器、以及任務(wù)控制電路;當(dāng)執(zhí)行規(guī)定的系統(tǒng)調(diào)用命令時(shí),執(zhí)行控制電路將通知所述任務(wù)控制電路;當(dāng)收到系統(tǒng)調(diào)用命令執(zhí)行通知時(shí),任務(wù)控制電路將所述處理寄存器中的所述數(shù)據(jù)保存到與執(zhí)行中的任務(wù)相對(duì)應(yīng)的保存寄存器中,接著選擇下一個(gè)應(yīng)被執(zhí)行的任務(wù),并將與所選擇任務(wù)相對(duì)應(yīng)的保存寄存器中的數(shù)據(jù)加載到所述處理寄存器中,從而切換執(zhí)行對(duì)象的任務(wù)。加載到所述處理寄存器中的數(shù)據(jù)可以包括命令(instruction)和操作數(shù)、不具有操作數(shù)的命令、或者諸如程序計(jì)數(shù)器或堆棧指針的簡(jiǎn)單數(shù)據(jù)。根據(jù)這種處理方法,通過在對(duì)應(yīng)每個(gè)任務(wù)的保存寄存器和執(zhí)行用處理寄存器之間適當(dāng)調(diào)換上下文信息,能夠?qū)崿F(xiàn)上下文信息的保存及加載。由于這樣實(shí)質(zhì)上不需要為了處理寄存器中數(shù)據(jù)的保存/加載而訪問 TCB,因此實(shí)現(xiàn)了高速的任務(wù)切換。此外,以上結(jié)構(gòu)要素的任意組合、以及通過方法、系統(tǒng)、記錄介質(zhì)、計(jì)算機(jī)程序來表現(xiàn)本發(fā)明的實(shí)現(xiàn)方式,也可以作為本發(fā)明的有效方式。本發(fā)明的有益效果根據(jù)本發(fā)明,能夠在多任務(wù)處理中更高效地控制任務(wù)執(zhí)行。
圖1為任務(wù)的狀態(tài)轉(zhuǎn)換圖;圖2為普通RTOS的概念圖;圖3為執(zhí)行軟件RTOS的普通CPU的電路圖;圖4為一個(gè)實(shí)施例中的RTOS的概念圖;圖5為本實(shí)施例中的任務(wù)處理裝置的電路圖;圖6為圖5所示CPU的電路圖;圖7為表示執(zhí)行控制電路152使CPU時(shí)鐘停止的構(gòu)造的電路圖;圖8(a)為表示中斷請(qǐng)求信號(hào)發(fā)生時(shí)各種信號(hào)之間關(guān)系的時(shí)序圖;圖8(b)為表示執(zhí)行系統(tǒng)調(diào)用時(shí)各種信號(hào)之間關(guān)系的時(shí)序圖;圖9為用于說明流水線(pipeline)處理中CPU時(shí)鐘停止時(shí)刻的示意圖;圖10為表示狀態(tài)存儲(chǔ)單元和任務(wù)切換電路之間關(guān)系的電路圖;圖11為表示普通RTOS進(jìn)行RUN-任務(wù)選擇時(shí)所采用的任務(wù)就緒表的圖;圖12為執(zhí)行選擇電路的電路圖13為表示普通RTOS進(jìn)行信號(hào)量(Semaphore)處理時(shí)所采用的等待信號(hào)量表 (wait semaphore list)的圖;圖14為信號(hào)量選擇電路的電路圖;圖15為任務(wù)切換電路的狀態(tài)轉(zhuǎn)換圖;圖16為圖5所示的任務(wù)處理裝置中未配置任務(wù)控制電路時(shí)的任務(wù)處理裝置的電路圖;圖17為圖5所示的任務(wù)處理裝置中未配置保存電路時(shí)的任務(wù)處理裝置的電路圖。
具體實(shí)施例方式本發(fā)明實(shí)施例所示的任務(wù)處理裝置100由電子電路來實(shí)現(xiàn)多任務(wù)OS的任務(wù)調(diào)度功能。在詳細(xì)說明任務(wù)處理裝置100之前,首先參照?qǐng)D1說明任務(wù)的狀態(tài)轉(zhuǎn)換。這里雖然是對(duì)普通多任務(wù)OS中的任務(wù)狀態(tài)轉(zhuǎn)換進(jìn)行說明,但是這些說明對(duì)于任務(wù)處理裝置100中的任務(wù)狀態(tài)轉(zhuǎn)換同樣適用。另外,還對(duì)在任務(wù)處理裝置100中執(zhí)行的系統(tǒng)調(diào)用進(jìn)行概述。在參照?qǐng)D2和圖3描述普通多任務(wù)OS的設(shè)計(jì)思想的基礎(chǔ)上,參照?qǐng)D4至圖10詳細(xì)描述本實(shí)施例中的任務(wù)處理裝置100的處理方法。并且,對(duì)于與信號(hào)量或互斥(Mutex)、事件等有關(guān)的處理,也適當(dāng)通過與一般技術(shù)進(jìn)行比較來說明任務(wù)處理裝置100的特征。任務(wù)的狀態(tài)轉(zhuǎn)換圖1是任務(wù)的狀態(tài)轉(zhuǎn)換圖。在多任務(wù)處理中,各任務(wù)都具有“狀態(tài)(State) ”。各任務(wù)在多個(gè)狀態(tài)之間轉(zhuǎn)換,通常是處于某一個(gè)狀態(tài)。狀態(tài)轉(zhuǎn)換由“系統(tǒng)調(diào)用的執(zhí)行”和“檢測(cè)出中斷請(qǐng)求信號(hào)”來觸發(fā)。系統(tǒng)調(diào)用是各任務(wù)執(zhí)行的命令中的特殊命令。中斷請(qǐng)求信號(hào)是在按下鍵盤或點(diǎn)擊鼠標(biāo)、接收通信數(shù)據(jù)等從外圍設(shè)備接收規(guī)定數(shù)據(jù)時(shí)發(fā)生的信號(hào)。當(dāng)然, 當(dāng)分配給各任務(wù)的時(shí)間片耗盡時(shí)也發(fā)生狀態(tài)轉(zhuǎn)換。任務(wù)大致分為“常規(guī)任務(wù)”和“特殊任務(wù)”。常規(guī)任務(wù)是響應(yīng)系統(tǒng)調(diào)用而執(zhí)行的非特殊任務(wù)。特殊任務(wù)是響應(yīng)檢測(cè)出中斷請(qǐng)求信號(hào)而執(zhí)行的任務(wù),即所謂的中斷處理程序。首先描述各個(gè)任務(wù)狀態(tài),然后說明各種系統(tǒng)調(diào)用命令。(1) STOP狀態(tài)(休眠狀態(tài))表示任務(wù)處于休眠狀態(tài)。常規(guī)任務(wù)和特殊任務(wù)都能夠處于STOP狀態(tài)。以下將處于STOP狀態(tài)的任務(wù)稱作“STOP-任務(wù)”。1-1.常規(guī)任務(wù)當(dāng)其它任務(wù)執(zhí)行指示啟動(dòng)另一項(xiàng)任務(wù)的系統(tǒng)調(diào)用(以下稱作“啟動(dòng)系統(tǒng)調(diào)用”) 時(shí),處于STOP狀態(tài)的常規(guī)任務(wù)轉(zhuǎn)換到后述的READY狀態(tài)。1-2.特殊任務(wù)特殊任務(wù)通常處于STOP狀態(tài)。當(dāng)通過后述的任務(wù)切換電路210檢測(cè)出中斷請(qǐng)求信號(hào)時(shí),特殊任務(wù)從STOP狀態(tài)轉(zhuǎn)換到后述的RUN狀態(tài)。此時(shí)原來處于RUN狀態(tài)的任務(wù)轉(zhuǎn)換到READY狀態(tài)。(2) RUN狀態(tài)(執(zhí)行狀態(tài))表示任務(wù)正在執(zhí)行中,即任務(wù)被分配了時(shí)間片,獲得了 CPU的使用權(quán)的狀態(tài)。常規(guī)任務(wù)和特殊任務(wù)都能夠處于RUN狀態(tài)。以下將處于RUN狀態(tài)的任務(wù)稱作“RUN-任務(wù)”。多個(gè)任務(wù)中處于RUN狀態(tài)的任務(wù)始終只能有一個(gè),而不能有兩個(gè)任務(wù)同時(shí)處于RUN狀態(tài)。
2-1.常規(guī)任務(wù)當(dāng)執(zhí)行規(guī)定的系統(tǒng)調(diào)用時(shí),處于RUN狀態(tài)的常規(guī)任務(wù)從RUN狀態(tài)轉(zhuǎn)換到READY狀態(tài)或者后述的WAIT狀態(tài)。處于RUN狀態(tài)的常規(guī)任務(wù)在耗盡時(shí)間片時(shí),也轉(zhuǎn)換到READY狀態(tài)。 在任意一種情況下,原來處于READY狀態(tài)的常規(guī)任務(wù)轉(zhuǎn)換到RUN狀態(tài),來替代原來處于RUN 狀態(tài)的常規(guī)任務(wù)。當(dāng)檢測(cè)出中斷請(qǐng)求信號(hào)時(shí),RUN-任務(wù)轉(zhuǎn)換到READY狀態(tài)。此時(shí),原先處于STOP狀態(tài)的特殊任務(wù)轉(zhuǎn)換到RUN狀態(tài)。當(dāng)RUN-任務(wù)執(zhí)行使自身結(jié)束的系統(tǒng)調(diào)用(以下稱作“結(jié)束系統(tǒng)調(diào)用”)時(shí),該 RUN-任務(wù)轉(zhuǎn)換到STOP狀態(tài)。2-2.特殊任務(wù)當(dāng)根據(jù)中斷請(qǐng)求信號(hào)從STOP狀態(tài)轉(zhuǎn)換到RUN狀態(tài)的特殊任務(wù)完成自身處理時(shí),返回到STOP狀態(tài)。特殊任務(wù)只能夠處于STOP狀態(tài)和RUN狀態(tài)。(3) READY狀態(tài)(可執(zhí)行狀態(tài))表示任務(wù)處于可被執(zhí)行的狀態(tài)。如果處于READY狀態(tài)的任務(wù)從OS得到執(zhí)行權(quán),則隨時(shí)都能夠轉(zhuǎn)換到RUN狀態(tài)。只有常規(guī)任務(wù)可以處于READY狀態(tài)。以下將處于READY狀態(tài)的任務(wù)稱作“READY-任務(wù)”。當(dāng)原先處于RUN狀態(tài)的常規(guī)任務(wù)由于系統(tǒng)調(diào)用的執(zhí)行而轉(zhuǎn)換到RUN狀態(tài)以外的狀態(tài)時(shí),或者當(dāng)處于RUN狀態(tài)的特殊任務(wù)完成自身處理而轉(zhuǎn)換到STOP狀態(tài)時(shí),READY-任務(wù)進(jìn)而轉(zhuǎn)換到RUN狀態(tài)。常規(guī)任務(wù)只能從READY狀態(tài)來轉(zhuǎn)換到RUN狀態(tài)。當(dāng)有多個(gè)處于READY 狀態(tài)的任務(wù)時(shí),根據(jù)作為上下文信息的一部分的任務(wù)優(yōu)先級(jí),使某一個(gè)READY-任務(wù)轉(zhuǎn)換到 RUN狀態(tài)。當(dāng)有多個(gè)任務(wù)優(yōu)先級(jí)相同的READY-任務(wù)時(shí),最先轉(zhuǎn)換到READY狀態(tài)的任務(wù)轉(zhuǎn)換到RUN狀態(tài)。(4) WAIT狀態(tài)(待機(jī)狀態(tài))表示等待規(guī)定的WAIT解除條件滿足的狀態(tài)。當(dāng)WAIT解除條件滿足時(shí),處于WAIT 狀態(tài)的任務(wù)轉(zhuǎn)換到READY狀態(tài)。只有常規(guī)任務(wù)能夠處于WAIT狀態(tài)。以下將處于WAIT狀態(tài)的任務(wù)稱作“WAIT-任務(wù)”。關(guān)于WAIT解除條件將在后面詳述。綜上所述,只有當(dāng)任務(wù)處于RUN狀態(tài)時(shí),才能夠使用CPU來執(zhí)行其處理。RTOS 一邊管理多個(gè)任務(wù)的狀態(tài)一邊適當(dāng)切換RUN-任務(wù)。由此,實(shí)現(xiàn)CPU總是執(zhí)行某個(gè)任務(wù)的處理方式。系統(tǒng)調(diào)用下面附帶說明一下系統(tǒng)調(diào)用。系統(tǒng)調(diào)用大致分為“啟動(dòng)系列”、“WAIT系列”和“SET 系列”三種。(1)啟動(dòng)系列系統(tǒng)調(diào)用啟動(dòng)系列系統(tǒng)調(diào)用是與在STOP狀態(tài)和READY狀態(tài)之間進(jìn)行的轉(zhuǎn)換相關(guān)聯(lián)的系統(tǒng)調(diào)用。1-1.啟動(dòng)系統(tǒng)調(diào)用啟動(dòng)系統(tǒng)調(diào)用是作為RUN-任務(wù)的任務(wù)A使另一項(xiàng)常規(guī)任務(wù)B啟動(dòng)的系統(tǒng)調(diào)用。此時(shí),處于STOP狀態(tài)的常規(guī)任務(wù)B轉(zhuǎn)換到READY狀態(tài)。1-2.結(jié)束系統(tǒng)調(diào)用執(zhí)行該系統(tǒng)調(diào)用的任務(wù)結(jié)束自身處理,并從RUN狀態(tài)轉(zhuǎn)換到STOP狀態(tài)。結(jié)束系統(tǒng)調(diào)用也可以是某項(xiàng)任務(wù)使另一項(xiàng)任務(wù)結(jié)束的命令。(2) WAIT系列系統(tǒng)調(diào)用WAIT系列系統(tǒng)調(diào)用是與在RUN狀態(tài)和WAIT狀態(tài)之間進(jìn)行的轉(zhuǎn)換相關(guān)聯(lián)的系統(tǒng)調(diào)用。2-1.等待信號(hào)量系統(tǒng)調(diào)用等待信號(hào)量系統(tǒng)調(diào)用是請(qǐng)求獲得信號(hào)量(后述)的系統(tǒng)調(diào)用。2-2.等待互斥系統(tǒng)調(diào)用等待互斥系統(tǒng)調(diào)用是請(qǐng)求獲得互斥(后述)的系統(tǒng)調(diào)用。2-3.等待事件系統(tǒng)調(diào)用等待事件系統(tǒng)調(diào)用是等待建立事件(后述)的系統(tǒng)調(diào)用。為了執(zhí)行,等待事件系統(tǒng)調(diào)用接收事件ID、等待標(biāo)記模式(后述)和標(biāo)記條件(后述)作為參數(shù)。在任何一種情況下,WAIT系列系統(tǒng)調(diào)用都設(shè)定各種WAIT解除條件。如果在執(zhí)行 WAIT系列系統(tǒng)調(diào)用時(shí)已經(jīng)滿足WAIT解除條件,已執(zhí)行所述系統(tǒng)調(diào)用的RUN-任務(wù)轉(zhuǎn)換到 READY狀態(tài)。同時(shí),當(dāng)不滿足WAIT解除條件時(shí),RUN-任務(wù)轉(zhuǎn)換到等待滿足WAIT解除條件的 WAIT狀態(tài)。(3) SET系列系統(tǒng)調(diào)用SET系列系統(tǒng)調(diào)用是與在WAIT狀態(tài)和READY狀態(tài)之間進(jìn)行的轉(zhuǎn)換相關(guān)聯(lián)的系統(tǒng)調(diào)用。SET系列系統(tǒng)調(diào)用的執(zhí)行觸發(fā)WAIT解除條件的建立。3-1.釋放(release)信號(hào)量系統(tǒng)調(diào)用其是釋放信號(hào)量的系統(tǒng)調(diào)用。3-2.釋放互斥系統(tǒng)調(diào)用其是釋放互斥的系統(tǒng)調(diào)用。3-3.設(shè)定事件(Set Event)系統(tǒng)調(diào)用其是建立事件的當(dāng)前標(biāo)記模式(后述)的系統(tǒng)調(diào)用。
3-4.清除標(biāo)記系統(tǒng)調(diào)用其是用于將當(dāng)前標(biāo)記模式清零的系統(tǒng)調(diào)用。在對(duì)本實(shí)施例進(jìn)行說明時(shí),假設(shè)采用了以上9種系統(tǒng)調(diào)用。除此之外,當(dāng)然還能夠?qū)崿F(xiàn)其他的各種系統(tǒng)調(diào)用。普通RTOS的設(shè)計(jì)思想圖2是普通RTOS的概念圖。圖示的RTOS是多任務(wù)OS。普通RTOS是以軟件實(shí)現(xiàn)的。下面以從任務(wù)A向任務(wù)B 切換RUN-任務(wù)的情況為例進(jìn)行說明。由于任務(wù)A占用著CPU,因此RTOS向CPU申請(qǐng)中斷, 以從任務(wù)A取得CPU的使用權(quán)。在此基礎(chǔ)上,RTOS將任務(wù)A的上下文信息保存到TCB中。 RTOS選擇任務(wù)B作為下一個(gè)RUN-任務(wù),并將上下文信息從任務(wù)B的TCB加載到CPU的寄存器中。當(dāng)加載完成時(shí),RTOS將CPU的使用權(quán)移交給任務(wù)B。由此,通過暫時(shí)獲取CPU的使用權(quán),RTOS執(zhí)行從任務(wù)A向任務(wù)B的任務(wù)切換。對(duì)于特殊任務(wù)的執(zhí)行也是相同的,這種情況下,也是通過將RUN-任務(wù)的上下文信息保存到TCB中后,將CPU的使用權(quán)移交給特殊任務(wù)來實(shí)現(xiàn)任務(wù)切換。因?yàn)镽TOS是以軟件實(shí)現(xiàn)的,因此為了執(zhí)行自身處理,RTOS需要CPU的使用權(quán)。換句話說,RTOS和任務(wù)在CPU的使用權(quán)上是競(jìng)爭(zhēng)關(guān)系。以下將這樣通過軟件實(shí)現(xiàn)的RTOS稱作“軟件RTOS ”。圖3是執(zhí)行軟件RTOS的普通CPU的電路圖。CPU 84包括執(zhí)行控制電路90,用于總體地控制存儲(chǔ)器訪問、命令執(zhí)行等;處理寄存器組92,用于存儲(chǔ)如任務(wù)的上下文信息等的各種數(shù)據(jù);以及運(yùn)算電路94,用于執(zhí)行運(yùn)算。 處理寄存器組92是多種寄存器的組合,大致分為特殊寄存器88和通用寄存器86。特殊寄存器88是存儲(chǔ)程序計(jì)數(shù)器、堆棧指針以及標(biāo)記等的寄存器。通用寄存器86是存儲(chǔ)作業(yè)用數(shù)據(jù)的寄存器,包括RO R15共16個(gè)寄存器。特殊寄存器88存在用戶用和系統(tǒng)用兩面, 但是通用寄存器86只有一面。以下將存儲(chǔ)在處理寄存器組92中的數(shù)據(jù)稱作“處理數(shù)據(jù)”。執(zhí)行控制電路90利用指示輸出選擇器98的控制信號(hào)(CTRL),將處理寄存器組92 中所期望的寄存器的處理數(shù)據(jù)輸出到運(yùn)算電路94中。運(yùn)算電路94按照該處理數(shù)據(jù),即命令和變量,來執(zhí)行運(yùn)算。運(yùn)算結(jié)果向輸入選擇器96輸出。執(zhí)行控制電路90利用指示輸入選擇器96的控制信號(hào)(CTRL),向處理寄存器組92中所期望的寄存器輸入運(yùn)算結(jié)果。另外,執(zhí)行控制電路90通過CPU數(shù)據(jù)總線從存儲(chǔ)器中讀出數(shù)據(jù),并通過輸入選擇器96將該數(shù)據(jù)適時(shí)加載到處理寄存器組92中。執(zhí)行控制電路90同樣通過該CPU數(shù)據(jù)總線將處理數(shù)據(jù)適時(shí)記錄到存儲(chǔ)器中。執(zhí)行控制電路90—邊更新特殊寄存器88中的程序計(jì)數(shù)器,一邊執(zhí)行任務(wù)。當(dāng)發(fā)生任務(wù)切換時(shí),執(zhí)行控制電路90將處理數(shù)據(jù)保存到存儲(chǔ)器中預(yù)留的區(qū)域即 TCB中。如果任務(wù)A執(zhí)行系統(tǒng)調(diào)用,則認(rèn)為發(fā)生了從任務(wù)A到任務(wù)B的任務(wù)切換。系統(tǒng)調(diào)用的執(zhí)行觸發(fā)RTOS獲取CPU的使用權(quán),因此CPU 84將暫時(shí)按照RTOS的程序來運(yùn)行,其處理過程如下<任務(wù)A的上下文信息的保存>1.執(zhí)行控制電路90將特殊寄存器88從用戶用切換到系統(tǒng)用。向系統(tǒng)用特殊寄存器88中加載RTOS處理用的處理數(shù)據(jù)。2.執(zhí)行控制電路90將通用寄存器86中的數(shù)據(jù)保存到未示出的堆棧中。3.執(zhí)行控制電路90將用于RTOS的處理數(shù)據(jù)從未示出的記錄介質(zhì)中,例如其它寄存器中,加載到通用寄存器86中。在該階段,處理寄存器組92中的處理數(shù)據(jù)被完全替換為 RTOS用的處理數(shù)據(jù)。4. RTOS從存儲(chǔ)器中識(shí)別出任務(wù)A的TCB,并將保存在堆棧中的處理數(shù)據(jù)寫入該TCB 中。另外,用戶用特殊寄存器88中的處理數(shù)據(jù)也作為上下文信息的一部分寫入該TCB中。由此,任務(wù)A的處理數(shù)據(jù)被保存到該TCB中。RTOS將任務(wù)A已從“RUN”狀態(tài)轉(zhuǎn)換到“READY (或者WAIT),,狀態(tài)的情況記錄在任務(wù)A的TCB中。<任務(wù)B的上下文信息的加載>1. RTOS從存儲(chǔ)器中識(shí)別出任務(wù)B的TCB,并將該TCB中的上下文信息寫入堆棧和用戶用特殊寄存器88中。RTOS將任務(wù)B已從“READY”狀態(tài)轉(zhuǎn)換到“RUN”狀態(tài)的情況記錄在任務(wù)B的TCB中。2. RTOS將RTOS處理用數(shù)據(jù)從通用寄存器86保存到未示出的記錄介質(zhì)中。3.執(zhí)行控制電路90將堆棧中的上下文信息加載到通用寄存器86中。執(zhí)行控制電路90將特殊寄存器88從系統(tǒng)用切換到用戶用。由此,任務(wù)B的處理數(shù)據(jù)被加載到處理寄存器組92中。經(jīng)過如上所述的處理過程,實(shí)現(xiàn)了任務(wù)切換。通常通用寄存器86是一面結(jié)構(gòu),因此為了切換任務(wù)用的處理數(shù)據(jù)和RTOS用的處理數(shù)據(jù)而使用堆棧。如果通用寄存器86也是兩面,則將無需通過堆棧來保存/加載數(shù)據(jù),因此能夠?qū)崿F(xiàn)更高速的任務(wù)切換。在本實(shí)施例中,還通過為每個(gè)任務(wù)設(shè)置保存寄存器110,來實(shí)現(xiàn)更高速的任務(wù)切換。使用保存寄存器110的任務(wù)切換,將參照?qǐng)D5進(jìn)行詳述。在參照?qǐng)D3說明的CPU 84和普通軟件RTOS中,在進(jìn)行任務(wù)切換時(shí)頻繁地訪問TCB。在上述例子中,是以從任務(wù)A向任務(wù) B進(jìn)行任務(wù)切換為例進(jìn)行的說明,但是實(shí)際上,RTOS為了選擇下面應(yīng)執(zhí)行的任務(wù)B也需要執(zhí)行很多命令。此時(shí),RTOS將頻繁地訪問存儲(chǔ)器。通過采用后述的專門用于任務(wù)選擇的任務(wù)控制電路200,本實(shí)施例中的任務(wù)處理裝置100實(shí)現(xiàn)了更高速的任務(wù)切換。根據(jù)任務(wù)處理裝置100的RTOS硬件實(shí)現(xiàn)圖4是本實(shí)施例中的RTOS的概念圖。與普通軟件RTOS不同,本實(shí)施例中的RTOS主要是以與CPU分離的硬件來實(shí)現(xiàn)的。 以下將由硬件實(shí)現(xiàn)的RTOS稱作“硬件RT0S”。由于本實(shí)施例的RTOS主要是與CPU分離的硬件,因此為了執(zhí)行自身處理,則實(shí)質(zhì)上基本不需要CPU的使用權(quán)。換句話說,RTOS和任務(wù)在CPU的使用權(quán)上基本不是競(jìng)爭(zhēng)關(guān)系。在圖2所示的普通軟件RTOS中,CPU既是任務(wù)執(zhí)行用電路,還是RTOS執(zhí)行用電路。相反地,在本實(shí)施例的硬件RTOS中,CPU明確為任務(wù)執(zhí)行電路。任務(wù)調(diào)度功能主要由后述的保存電路120和任務(wù)控制電路200來實(shí)現(xiàn)。圖5是本實(shí)施例中的任務(wù)處理裝置100的電路圖。除了 CPU 150之外,任務(wù)處理裝置100還包括保存電路120和任務(wù)控制電路200。 CPU 150是任務(wù)的執(zhí)行主體。保存電路120和任務(wù)控制電路200是起到圖4所示的RTOS的作用的電路。任務(wù)調(diào)度處理是由任務(wù)控制電路200來主導(dǎo)的。CPU 150包括執(zhí)行控制電路152、處理寄存器組154以及運(yùn)算電路160。CPU 150 可以是參照?qǐng)D3說明的普通CPU。但是,本實(shí)施例中的CPU 150的信號(hào)線連接方式與圖3所示的CPU 84的信號(hào)線連接方式不同。對(duì)于具體的電路結(jié)構(gòu),將參照下面的圖6進(jìn)行詳述。任務(wù)控制電路200包括任務(wù)切換電路210、信號(hào)量表212、事件表214、任務(wù)選擇電路230以及狀態(tài)存儲(chǔ)單元220。對(duì)于信號(hào)量表212和事件表214,將參照?qǐng)D13及其后圖進(jìn)行詳述。狀態(tài)存儲(chǔ)單元220是與每個(gè)任務(wù)相對(duì)應(yīng)的單元。以下將與任務(wù)A對(duì)應(yīng)的狀態(tài)存儲(chǔ)單元220表示為“狀態(tài)存儲(chǔ)單元220_A”。各狀態(tài)存儲(chǔ)單元220存儲(chǔ)對(duì)應(yīng)任務(wù)的狀態(tài)數(shù)據(jù)。 狀態(tài)數(shù)據(jù)是指上下文信息中的特別是任務(wù)優(yōu)先級(jí)或任務(wù)狀態(tài)等表示任務(wù)屬性的信息。對(duì)于具體的數(shù)據(jù)內(nèi)容,將在后面參照?qǐng)D10進(jìn)行說明。全部任務(wù)的全部狀態(tài)數(shù)據(jù)從各狀態(tài)存儲(chǔ)單元220中不斷地輸出到任務(wù)選擇電路230中。任務(wù)選擇電路230是根據(jù)各任務(wù)的狀態(tài)數(shù)據(jù)進(jìn)行如RUN-任務(wù)選擇等的各種任務(wù)選擇的電路。對(duì)于任務(wù)選擇電路230,將參照?qǐng)D10及其后圖進(jìn)行詳述。當(dāng)檢測(cè)出從執(zhí)行控制電路152接收的系統(tǒng)調(diào)用信號(hào)(SC)或來自外部設(shè)備的中斷請(qǐng)求信號(hào)(INTR)時(shí),任務(wù)切換電路210執(zhí)行任務(wù)切換。執(zhí)行控制電路152在執(zhí)行系統(tǒng)調(diào)用時(shí),將系統(tǒng)調(diào)用信號(hào)(SC)發(fā)送到任務(wù)切換電路 210。另外,當(dāng)任務(wù)切換電路210檢測(cè)出中斷請(qǐng)求信號(hào)(INTR)時(shí),任務(wù)切換電路210向執(zhí)行控制電路152申請(qǐng)停止請(qǐng)求信號(hào)(HR)。當(dāng)CPU 150的操作停止時(shí),執(zhí)行控制電路152向任務(wù)切換電路210申請(qǐng)停止完成信號(hào)(HC)。通過這三種信號(hào),CPU 150和任務(wù)控制電路200將能夠進(jìn)行配合操作。保存電路120包括加載選擇電路112以及多個(gè)保存寄存器110。保存寄存器110也是與每個(gè)任務(wù)相對(duì)應(yīng)的單元,是用于保存處理寄存器組154中的處理數(shù)據(jù)的寄存器組。因而,保存寄存器110具有與處理寄存器組154相等以上的數(shù)據(jù)容量。以下將與任務(wù)A對(duì)應(yīng)的保存寄存器110表示為“保存寄存器110_A”。加載選擇電路112接受任務(wù)切換電路210 的指示,將某個(gè)保存寄存器110中的數(shù)據(jù)(以下將保存寄存器110所存儲(chǔ)的數(shù)據(jù)稱作“保存數(shù)據(jù)”)加載到處理寄存器組154中。各保存寄存器110不斷地將各自的保存數(shù)據(jù)輸出到加載選擇電路112中。當(dāng)任務(wù)切換電路210向加載選擇電路112輸入用于指定任務(wù)ID的任務(wù)選擇信號(hào)(TS)時(shí),加載選擇電路112將與所指定任務(wù)對(duì)應(yīng)的保存寄存器110中的保存數(shù)據(jù)輸出到處理寄存器組154 中。并且,當(dāng)任務(wù)切換電路210向處理寄存器組154輸入寫入信號(hào)(WT)時(shí),該保存數(shù)據(jù)實(shí)際上被加載到處理寄存器組154中。另一方面,處理寄存器組154中的全部處理數(shù)據(jù)也不斷地被輸出到全部的保存寄存器110中。當(dāng)任務(wù)切換電路210確認(rèn)向期望的保存寄存器110發(fā)送了寫入信號(hào)(WT)時(shí), 處理數(shù)據(jù)被保存到該保存寄存器Iio中。這里,連接處理寄存器組154和各保存寄存器110 的總線能夠一次傳輸?shù)奈粩?shù)設(shè)定為能夠并行傳輸處理數(shù)據(jù)。因此,任務(wù)切換電路210通過向保存寄存器110僅發(fā)送一次寫入信號(hào),就能夠?qū)⑻幚頂?shù)據(jù)一次寫入保存寄存器110中。另外,連接保存寄存器110和加載選擇電路112的總線以及連接加載選擇電路112和CPU 150 的總線的位數(shù)也同樣地設(shè)定。下面分別對(duì)系統(tǒng)調(diào)用和中斷請(qǐng)求信號(hào)引起的任務(wù)切換的執(zhí)行方法進(jìn)行描述。[1]系統(tǒng)調(diào)用的執(zhí)行當(dāng)CPU 150的執(zhí)行控制電路152執(zhí)行系統(tǒng)調(diào)用時(shí),執(zhí)行控制電路152使CPU 150 的時(shí)鐘(以下稱作“CPU時(shí)鐘(CLK) ”)停止。對(duì)于具體的停止方法,將參照?qǐng)D7等在后面詳述。執(zhí)行控制電路152將表示系統(tǒng)調(diào)用的執(zhí)行的系統(tǒng)調(diào)用信號(hào)(SC)發(fā)送給任務(wù)控制電路 200的任務(wù)切換電路210。另外,當(dāng)CLK的停止完成時(shí),執(zhí)行控制電路152向任務(wù)切換電路 210申請(qǐng)停止完成信號(hào)(HC)。在CPU 150和任務(wù)切換電路210之間,為了系統(tǒng)調(diào)用信號(hào)的傳輸而連接有9根信號(hào)線。這9根信號(hào)線與前述9種系統(tǒng)調(diào)用相對(duì)應(yīng)。執(zhí)行控制電路152根據(jù)所執(zhí)行的系統(tǒng)調(diào)用種類,用對(duì)應(yīng)的某根系統(tǒng)信號(hào)線傳輸數(shù)字脈沖。任務(wù)切換電路210通過判斷是從9根系統(tǒng)信號(hào)線中的哪根信號(hào)線中檢測(cè)出數(shù)字脈沖,來立即檢測(cè)出所執(zhí)行的系統(tǒng)調(diào)用種類。任務(wù)切換電路210根據(jù)系統(tǒng)調(diào)用種類,從任務(wù)選擇電路230輸出的數(shù)據(jù)中選擇所需數(shù)據(jù),執(zhí)行由系統(tǒng)調(diào)用所指定的處理。該處理是以申請(qǐng)HC為條件來執(zhí)行的。對(duì)于任務(wù)切換電路210和任務(wù)選擇電路230之間的關(guān)系,將參照?qǐng)D10進(jìn)行詳述。此外,該系統(tǒng)調(diào)用的參數(shù)和返回值寫入處理寄存器組154中規(guī)定的通用寄存器158中。任務(wù)切換電路210能夠?qū)νㄓ眉拇嫫?158執(zhí)行參數(shù)的讀出和返回值的寫入。這里,假設(shè)作為RUN-任務(wù)的任務(wù)A執(zhí)行等待信號(hào)量系統(tǒng)調(diào)用。因而,首先需要將任務(wù)A的處理數(shù)據(jù)保存。<任務(wù)A的上下文信息的保存>執(zhí)行控制電路152將表示等待信號(hào)量系統(tǒng)調(diào)用的SC信號(hào)輸入到任務(wù)切換電路210 中。執(zhí)行控制電路152使CLK停止,當(dāng)停止完成時(shí)申請(qǐng)HC。任務(wù)切換電路210在向內(nèi)置于任務(wù)選擇電路230的各種選擇電路中后述的信號(hào)量選擇電路234輸出成為待機(jī)對(duì)象的信號(hào)量的信號(hào)量ID后,選擇下一個(gè)應(yīng)執(zhí)行的任務(wù)B。任務(wù)切換電路210向狀態(tài)存儲(chǔ)單元220_A 寫入規(guī)定數(shù)據(jù)。例如,作為任務(wù)A的狀態(tài),從“RUN”更新為“READY”或“WAIT”。更具體地說,任務(wù)切換電路210在將表示任務(wù)狀態(tài)“WAIT”的狀態(tài)數(shù)據(jù)輸出到全部狀態(tài)存儲(chǔ)單元220 的基礎(chǔ)上,只向狀態(tài)存儲(chǔ)單元220_A輸入寫入信號(hào)(WT_A)。由此,任務(wù)A的狀態(tài)被更新。接著,任務(wù)切換電路210向保存寄存器110_A輸出寫入信號(hào)(WT)。由于處理寄存器組154中的處理數(shù)據(jù)不斷地被輸出到各保存寄存器110中,因此該寫入信號(hào)(WT)使得任務(wù)A的處理數(shù)據(jù)被保存到任務(wù)A的保存寄存器110_A中。<任務(wù)B的上下文信息的加載>當(dāng)任務(wù)A的狀態(tài)數(shù)據(jù)更新、處理數(shù)據(jù)保存完成時(shí),任務(wù)切換電路210將指定任務(wù)B 的任務(wù)選擇信號(hào)(TS_B)輸出到加載選擇電路112中。由此,保存寄存器110_B中的保存數(shù)據(jù)輸出到處理寄存器組154中。當(dāng)任務(wù)切換電路210向處理寄存器組154輸出寫入信號(hào) (WT)時(shí),任務(wù)B的保存數(shù)據(jù)被加載到處理寄存器組154中。另外,任務(wù)切換電路210還向任務(wù)B的狀態(tài)存儲(chǔ)單元220中寫入規(guī)定數(shù)據(jù)。例如,任務(wù)B的狀態(tài)從“READY”更新為“RUN”。 當(dāng)以上處理完成時(shí),執(zhí)行控制電路152使CPU時(shí)鐘恢復(fù)。CPU 150根據(jù)所恢復(fù)的CPU時(shí)鐘來開始執(zhí)行任務(wù)B。關(guān)于該處理方法的更具體細(xì)節(jié),將在后面參照?qǐng)D8(b)進(jìn)行描述。[2]中斷請(qǐng)求信號(hào)的產(chǎn)生任務(wù)切換電路210檢測(cè)來自外圍設(shè)備的中斷請(qǐng)求信號(hào)(INTR)。更具體地說,中斷請(qǐng)求信號(hào)(INTR)從未示出的中斷控制器發(fā)送到任務(wù)切換電路210。表示中斷請(qǐng)求信號(hào) (INTR)等級(jí)的參數(shù)被記錄在內(nèi)置于該中斷控制器的寄存器中。任務(wù)切換電路210向執(zhí)行控制電路152申請(qǐng)停止請(qǐng)求信號(hào)(HR)后,執(zhí)行控制電路152使CPU時(shí)鐘停止。與系統(tǒng)調(diào)用執(zhí)行時(shí)相同,任務(wù)切換電路210將RUN-任務(wù)的處理數(shù)據(jù)保存到保存寄存器110中。接著,任務(wù)切換電路210啟動(dòng)特殊任務(wù)。與中斷請(qǐng)求信號(hào)的參數(shù)無關(guān)而啟動(dòng)的特殊任務(wù)只有1種。 該特殊任務(wù)從中斷控制器的內(nèi)置寄存器中讀出INTR的參數(shù),并執(zhí)行與該參數(shù)相應(yīng)的處理。 該特殊任務(wù)所執(zhí)行的處理,可以是設(shè)定事件系統(tǒng)調(diào)用或設(shè)定信號(hào)量系統(tǒng)調(diào)用的執(zhí)行,可以是常規(guī)任務(wù)的啟動(dòng)。根據(jù)該參數(shù),該特殊任務(wù)可以不執(zhí)行任何特別處理就結(jié)束。根據(jù)INTR 的參數(shù)執(zhí)行何種處理,是由特殊任務(wù)的實(shí)現(xiàn)方式來決定的。當(dāng)該特殊任務(wù)的執(zhí)行結(jié)束時(shí),從 READY-任務(wù)中選擇出下一個(gè)RUN-任務(wù)。任務(wù)切換電路210將與該特殊任務(wù)對(duì)應(yīng)的保存寄存器110中的處理數(shù)據(jù)加載到 CPU 150中。這種從常規(guī)任務(wù)切換到特殊任務(wù)所需的時(shí)間,能夠根據(jù)任務(wù)控制電路200的工作時(shí)鐘來預(yù)先估計(jì)。當(dāng)向執(zhí)行控制電路152申請(qǐng)HR后,任務(wù)切換電路210的工作時(shí)鐘經(jīng)過規(guī)定的時(shí)間時(shí),任務(wù)切換電路210為了解除CPU時(shí)鐘的停止而取消(negate) HR。當(dāng)HR被取消時(shí),執(zhí)行控制電路152使CPU時(shí)鐘恢復(fù)。此時(shí),任務(wù)切換電路210完成了從常規(guī)任務(wù)到特殊任務(wù)的任務(wù)切換。關(guān)于該處理方法的具體細(xì)節(jié),將在后面參照?qǐng)D8(a)進(jìn)行描述。在任何情況下,任務(wù)切換的核心處理,即(A)處理數(shù)據(jù)的保存/加載,以及(B)任務(wù)狀態(tài)轉(zhuǎn)換和RUN-任務(wù)的選擇,都是通過硬件來實(shí)現(xiàn)的。在(A)和(B)中,無需訪問存儲(chǔ)器上的TCB,這對(duì)任務(wù)切換的高速化也有貢獻(xiàn)。任務(wù)處理裝置100的CPU 150中所要求的只是追加使CPU時(shí)鐘停止和恢復(fù)的功能。此外,這些功能全部由硬件來實(shí)現(xiàn),這并非是要限定本發(fā)明的范圍。例如,本領(lǐng)域技術(shù)人員可以理解,(A)或者(B)的主要功能可以由硬件來實(shí)現(xiàn),而為了輔助硬件功能,RTOS的一部分功能可以由軟件來實(shí)現(xiàn)。圖6是圖5所示的CPU 150的電路圖。與圖3所示的CPU 84不同,處理寄存器組154的特殊寄存器156和通用寄存器 158都是一面的結(jié)構(gòu)。處理寄存器組154中分別引入了來自加載選擇電路112的輸入總線、 到保存寄存器110的輸出總線、以及來自任務(wù)切換電路210的寫入信號(hào)(WT)用信號(hào)線。執(zhí)行控制電路152根據(jù)對(duì)輸出選擇器164的控制信號(hào)(CTRL),將處理寄存器組154中所期望的寄存器中的數(shù)據(jù)輸入到運(yùn)算電路160中。運(yùn)算結(jié)果成為輸入選擇器162的輸入。執(zhí)行控制電路152根據(jù)對(duì)輸入選擇器162的控制信號(hào)(CTRL),向處理寄存器組154中所期望的寄存器輸入運(yùn)算結(jié)果。執(zhí)行控制電路152 —邊更新特殊寄存器156中的程序計(jì)數(shù)器,一邊執(zhí)行任務(wù)。處理數(shù)據(jù)保存到保存寄存器110中而不是存儲(chǔ)器上的TCB中。處理寄存器組154 不斷地向各保存寄存器110輸出處理數(shù)據(jù)。實(shí)際上,如前所述,何時(shí)將處理數(shù)據(jù)保存到保存寄存器110中,是由任務(wù)切換電路210來控制的。保存數(shù)據(jù)是從保存寄存器110而不是從存儲(chǔ)器上的TCB加載到處理寄存器組154 中的。實(shí)際上,如前所述,加載哪個(gè)保存寄存器110中的處理數(shù)據(jù)以及何時(shí)加載,是由任務(wù)切換電路210來控制的。連接處理寄存器組154和加載選擇電路112、以及處理寄存器組154和保存寄存器 110的總線能夠傳輸?shù)奈粩?shù),設(shè)定為能夠在一次處理中并行傳輸處理數(shù)據(jù)。因此,根據(jù)任務(wù)切換電路210發(fā)送的寫入信號(hào)(WT),能夠?qū)崿F(xiàn)一次讀出或?qū)懭霐?shù)據(jù)。普通軟件RTOS在任務(wù)切換時(shí),需要暫時(shí)占用處理寄存器組154。與此相反,本實(shí)施例中的硬件RTOS沒有必要將用于任務(wù)切換處理的特殊處理數(shù)據(jù)加載到處理寄存器組154中。當(dāng)從任務(wù)A切換到任務(wù)B 時(shí),只需要將任務(wù)A的處理數(shù)據(jù)保存,然后加載任務(wù)B的處理數(shù)據(jù),因此,處理寄存器組154 無需配置系統(tǒng)用和用戶用兩面及通過堆棧執(zhí)行數(shù)據(jù)替換處理。圖7是執(zhí)行控制電路152使CPU時(shí)鐘停止的構(gòu)造的電路圖。第二 AND門174的輸入是原始時(shí)鐘(CLKO)和第一 AND門172的輸出,第一 AND門 172的輸出被反相。第一 AND門172的輸出是停止完成信號(hào)(HC)。由于停止完成信號(hào)(HC) 通常是0,因此第二 AND門174直接輸出所輸入的原始時(shí)鐘(CLKO)作為CPU時(shí)鐘(CLK)。 CPU 150接收到第二 AND門174所輸出的CPU時(shí)鐘時(shí)進(jìn)行操作。當(dāng)?shù)谝?AND門172的輸出是“1”時(shí),換句話說,當(dāng)停止完成信號(hào)(HC) =1時(shí),第二 AND門174的輸出固定為零,以使 CPU時(shí)鐘(CLK)停止。第一 AND門172的輸入是OR門176的輸出和CPU忙信號(hào)(CBUSY),該CPU忙信號(hào)是負(fù)邏輯。CBUSY是從產(chǎn)生CPU 150內(nèi)部循環(huán)的已知狀態(tài)機(jī)中輸出的信號(hào)。當(dāng)CPU 150處于可停止?fàn)顟B(tài)時(shí),CBUSY變成“1”。例如,當(dāng)運(yùn)算電路160完成執(zhí)行單一命令或者被鎖定的多個(gè)命令的最后命令從而CPU處于可停止?fàn)顟B(tài)時(shí),或者當(dāng)已經(jīng)停止提供CPU時(shí)鐘時(shí),CBUSY 變成“0”。OR門176的輸入是命令解碼器170的輸出(SC_DETECT)和來自任務(wù)切換電路210 的停止請(qǐng)求信號(hào)(HR)。命令解碼器170內(nèi)置有保持SC_DETECT的鎖存電路。命令解碼器 170接收從CPU 150提取(fetch)的數(shù)據(jù)(FD)。當(dāng)FD是系統(tǒng)調(diào)用命令時(shí),命令解碼器170 輸出SC_DETECT = 1。通過內(nèi)置鎖存電路,即使在這之后FD變化,命令解碼器170也繼續(xù)輸出SC_DETECT = 1。命令解碼器170中,還輸入任務(wù)切換電路210發(fā)送給處理寄存器組154 的寫入信號(hào)(WT)。如前所述,當(dāng)WT從0變?yōu)?時(shí),保存數(shù)據(jù)被加載到處理寄存器組154中。 該WT是在規(guī)定時(shí)間后從1返回到0的脈沖信號(hào)。當(dāng)WT從1變?yōu)?時(shí),命令解碼器170的鎖存電路被復(fù)位,命令解碼器170取消SC_DETECT。SC_DETECT和寫入信號(hào)(WT)之間的關(guān)系,將參照?qǐng)D8(b)進(jìn)行詳述。本實(shí)施例中的命令解碼器170,是為了判定執(zhí)行對(duì)象命令是否是系統(tǒng)調(diào)用而專門設(shè)置在執(zhí)行控制電路152中的裝置。作為變型例,命令解碼器170可以與負(fù)責(zé)CPU 150的解碼階段的CPU解碼器共用。這種情況下,可通過向CPU解碼器追加當(dāng)被解碼的數(shù)據(jù)是系統(tǒng)調(diào)用命令時(shí)輸出SC_DETECT = 1的功能來實(shí)現(xiàn)命令解碼器170。當(dāng)中斷請(qǐng)求信號(hào)(INTR)發(fā)生時(shí),任務(wù)切換電路210向執(zhí)行控制電路152申請(qǐng)停止請(qǐng)求信號(hào)(HR),即當(dāng)執(zhí)行系統(tǒng)調(diào)用、或當(dāng)申請(qǐng)停止請(qǐng)求信號(hào)(HR)時(shí),OR門176的輸出變成 “1”。綜上所述,當(dāng)執(zhí)行系統(tǒng)調(diào)用或發(fā)生中斷請(qǐng)求信號(hào)、且當(dāng)CPU忙信號(hào)變成“0”時(shí),第一 AND門172的輸出變成“1”,且第二 AND門174不輸出CPU時(shí)鐘。圖8(a)是表示中斷請(qǐng)求信號(hào)發(fā)生時(shí)各種信號(hào)之間關(guān)系的時(shí)序圖。在圖8(a)中,首先,在時(shí)刻t0,任務(wù)切換電路210檢測(cè)出來自外部的中斷請(qǐng)求信號(hào)(INTR)。任務(wù)切換電路210為了執(zhí)行特殊任務(wù),向執(zhí)行控制電路152申請(qǐng)停止請(qǐng)求信號(hào) (HR)。輸入時(shí)刻tl與檢測(cè)時(shí)刻t0幾乎是同時(shí)的。在時(shí)刻tl,CPU 150的狀態(tài)機(jī)處于“任務(wù)執(zhí)行中”,CBUSY = 1。由于HR = 1,所以O(shè)R門176輸出“1”。但是由于CBUSY = 1,因此 CPU 150不停止。因此,即使輸入HR= 1,CPU時(shí)鐘(CLK)也暫且與原始時(shí)鐘(CLKO)同步輸出。經(jīng)過一定時(shí)間,在時(shí)刻t2處,CBUSY = 0。由于已經(jīng)是HR = 1,所以第一 AND門172 輸出HC= 1,從第二 AND門174輸出的CPU時(shí)鐘維持為0。另一方面,任務(wù)切換電路210以申請(qǐng)HC為契機(jī),開始從常規(guī)任務(wù)到特殊任務(wù)的任務(wù)切換。細(xì)節(jié)將在后面描述。任務(wù)切換所需時(shí)間是任務(wù)控制電路200的工作時(shí)鐘的數(shù)倍。在申請(qǐng)HC后,任務(wù)控制電路200的工作時(shí)鐘變化了規(guī)定次數(shù)(時(shí)刻t3)的條件下,任務(wù)控制電路200取消停止請(qǐng)求信號(hào)(HR)。由于 HR = 0,因此執(zhí)行控制電路152恢復(fù)CPU時(shí)鐘(CLK)。當(dāng)CPU 150恢復(fù)處理時(shí),CPU 150使 CBUSY從0變?yōu)? (時(shí)刻t4)。由此,在CPU時(shí)鐘停止的時(shí)刻t2至?xí)r刻t3期間,執(zhí)行從常規(guī)任務(wù)到特殊任務(wù)的任務(wù)切換。作為另一種處理方法,代替以任務(wù)控制電路200的工作時(shí)鐘變化了規(guī)定次數(shù)為條件,而以任務(wù)控制電路200已完成任務(wù)切換為條件來取消HR。而且,執(zhí)行控制電路152可以以取消HR為條件來取消HC。當(dāng)HC = 0時(shí),執(zhí)行控制電路152恢復(fù)CPU時(shí)鐘(CLK)。由此, 可以恢復(fù)任務(wù)的執(zhí)行。圖8(b)是表示執(zhí)行系統(tǒng)調(diào)用時(shí)各種信號(hào)之間關(guān)系的時(shí)序圖。在圖8(b)中,首先,在時(shí)刻t0,命令解碼器170檢測(cè)出系統(tǒng)調(diào)用,并使SC_DETECT 從0變?yōu)?。在時(shí)刻to,CPU 150的狀態(tài)機(jī)處于“任務(wù)執(zhí)行中”,CBUSY = 1。由于SC_DETECT =1,所以O(shè)R門176輸出“1”。但是由于CBUSY = 1,因此CPU 150不停止。因此,即使輸出 SC_DETECT = 1,CPU時(shí)鐘(CLK)也暫且與原始時(shí)鐘(CLKO)同步輸出。經(jīng)過一定時(shí)間,在時(shí)刻tl,CBUSY = 0。由于SC_DETECT = 1、且CBUSY = 1,因此取消HC,并停止CPU時(shí)鐘。當(dāng)輸入HC = 0時(shí),任務(wù)切換電路210開始任務(wù)切換處理,并將寫入信號(hào)(WT)輸出到CPU 150。在WT從0變?yōu)?的時(shí)刻t2,保存數(shù)據(jù)被加載到處理寄存器組154中。由于寫入信號(hào)(WT)是脈沖信號(hào),因此在經(jīng)過規(guī)定時(shí)間后的時(shí)刻t3,變成WT = 0。根據(jù)檢測(cè)出的WT :1 — 0的下降沿,鎖存在命令解碼器170中的SC_DETECT被復(fù)位(時(shí)刻t4)。此時(shí),CBUSY從0變?yōu)?。由于CBUSY = 1,因此HC = 0,從而恢復(fù)CPU時(shí)鐘。在CPU 時(shí)鐘停止的時(shí)刻tl至?xí)r刻t4期間,執(zhí)行任務(wù)切換。此外,作為其它處理方法,代替以檢測(cè)出WT :1 — 0的下降沿為條件,而以任務(wù)控制電路200完成任務(wù)切換并取消HR為條件,執(zhí)行控制電路152取消HC。而且,以HC = 0為條件,復(fù)位SC_DETECT。執(zhí)行控制電路152恢復(fù)CPU時(shí)鐘(CLK),CBUSY從0變?yōu)?。在任何情況下,CPU 150都無需知道在CPU時(shí)鐘停止期間進(jìn)行RUN-任務(wù)切換的情況。任務(wù)切換電路210在CPU時(shí)鐘停止而使CPU 150處于凍結(jié)期間進(jìn)行任務(wù)切換處理,因此CPU 150的處理和任務(wù)控制電路200的處理在事件序列中是分離的。圖9是用于說明流水線處理中CPU時(shí)鐘停止時(shí)刻的示意圖。CPU 150通過從存儲(chǔ)器中順序讀出多個(gè)命令到處理寄存器組154中并執(zhí)行這些命令,來執(zhí)行任務(wù)。作為任務(wù)執(zhí)行單位的命令,分解為如下四個(gè)階段(phase)。1.F(提取(fetch))從存儲(chǔ)器中提取命令。2. D(解碼(decode))解釋命令。3. E(執(zhí)行(execution))執(zhí)行命令。4. WB(回寫(write back))將執(zhí)行結(jié)果寫入存儲(chǔ)器中。 當(dāng)一個(gè)任務(wù)順次執(zhí)行命令1至命令5時(shí),可以是命令1被執(zhí)行完從F到WB階段后, 才執(zhí)行命令2的F階段。但是,為了更高效地執(zhí)行,大多是在命令1的執(zhí)行過程中就開始執(zhí)行命令2。這種處理方法被稱作流水線處理。例如,當(dāng)命令1到達(dá)D階段時(shí),就開始命令2 的F階段。當(dāng)命令1到達(dá)E階段時(shí),就執(zhí)行命令2的D階段和命令3的F階段。由此,通過增加單位時(shí)間內(nèi)執(zhí)行的命令數(shù),能夠減少每個(gè)任務(wù)的執(zhí)行時(shí)間。并且,各階段可以進(jìn)一步細(xì)分為兩個(gè)階段。例如,F(xiàn)階段可以分為Fl和F2兩個(gè)階段。當(dāng)命令1到達(dá)F2階段時(shí),開始命令2的Fl階段。當(dāng)命令1到達(dá)Dl階段時(shí),執(zhí)行命令 2的F2階段和命令3的Fl階段。通過細(xì)分階段,能夠進(jìn)一步有效利用CPU 150的計(jì)算資源。在圖9中,說明了在將各階段細(xì)分為兩個(gè)階段來執(zhí)行的流水線處理中發(fā)生系統(tǒng)調(diào)用時(shí)的CPU時(shí)鐘停止時(shí)刻。在圖9中,命令1在CPU時(shí)鐘為“0”的時(shí)刻開始處理。在CPU時(shí)鐘為“4”的時(shí)刻, 命令1的解碼完成。假設(shè)命令1為系統(tǒng)調(diào)用。命令解碼器170使SC_DETECT從0變?yōu)?。 接著,SC_DETECT從1返回到0的條件是從任務(wù)切換電路210到處理寄存器組154的寫入信號(hào)(WT)從1變?yōu)?。即使輸出的是SC_DETECT = 1,由于命令2 5已經(jīng)在執(zhí)行中或者執(zhí)行啟動(dòng)完,因此還是CBUSY = 1。因此,第二 AND門174繼續(xù)輸出CPU時(shí)鐘。但是,當(dāng)SC_ DETECT= 1時(shí),執(zhí)行控制電路152暫時(shí)停止程序計(jì)數(shù)器的更新,使得新的命令不被提取。因而,命令6及其后續(xù)命令不會(huì)從存儲(chǔ)器中被提取。在CPU時(shí)鐘為“8”的時(shí)刻,命令1執(zhí)行完成,但是命令2 5正在執(zhí)行中,因此CPU 忙信號(hào)還是“1”。當(dāng)?shù)竭_(dá)CPU時(shí)鐘為“12”的時(shí)刻時(shí),命令5執(zhí)行完成。此時(shí),CPU忙信號(hào)變成“0”。之后,按照參照?qǐng)D8(b)所述的流程,停止提供CPU時(shí)鐘。任務(wù)切換電路210將直到命令5的執(zhí)行結(jié)束為止產(chǎn)生的處理數(shù)據(jù)保存到保存寄存器110中。根據(jù)這種停止方法,任務(wù)切換能夠以不浪費(fèi)執(zhí)行系統(tǒng)調(diào)用后的命令執(zhí)行結(jié)果的方式實(shí)現(xiàn)。當(dāng)任務(wù)切換完成時(shí),CPU 忙信號(hào)再次設(shè)為“ 1 ”,命令解碼器170的處理也得到恢復(fù)。由此,將再次提供CPU時(shí)鐘。作為另一種處理方法,也可以在系統(tǒng)調(diào)用命令執(zhí)行完成的時(shí)刻,將CPU忙信號(hào)設(shè)為“0”,以停止提供CPU時(shí)鐘。這種情況下,與系統(tǒng)調(diào)用命令同時(shí)執(zhí)行的其它命令在執(zhí)行過程中停止。中途停止的命令的中間處理結(jié)果記錄在處理寄存器組154中后,保存到保存寄存器110中。當(dāng)下次該任務(wù)變成RUN-任務(wù)時(shí),接著執(zhí)行中途停止的命令。例如,當(dāng)某個(gè)命令在讀取結(jié)束階段被中途停止時(shí),將從存儲(chǔ)器中讀出的命令和操作數(shù)保存到保存寄存器110 中。當(dāng)該任務(wù)恢復(fù)時(shí),保存寄存器110中的數(shù)據(jù)被加載到處理寄存器組154中,以執(zhí)行解碼階段及后續(xù)階段。圖10是表示狀態(tài)存儲(chǔ)單元220和任務(wù)切換電路210之間關(guān)系的電路圖。狀態(tài)存儲(chǔ)單元220包括狀態(tài)寄存器250和定時(shí)器252。狀態(tài)存儲(chǔ)單元220存儲(chǔ)任務(wù)的狀態(tài)數(shù)據(jù)。另外,定時(shí)器252是在任務(wù)轉(zhuǎn)換到READY狀態(tài)或者WAIT狀態(tài)時(shí)開始的定時(shí)器。任務(wù)轉(zhuǎn)換到READY狀態(tài)后所經(jīng)過的時(shí)間稱作“READY經(jīng)過時(shí)間”,任務(wù)轉(zhuǎn)換到WAIT狀態(tài)后所經(jīng)過的時(shí)間稱作“WAIT經(jīng)過時(shí)間”。定時(shí)器252以TIM信號(hào)方式不斷地輸出經(jīng)過時(shí)間的值。在任務(wù)切換時(shí),當(dāng)任務(wù)轉(zhuǎn)換到READY狀態(tài)或者WAIT狀態(tài)時(shí),任務(wù)切換電路210驅(qū)動(dòng)該任務(wù)的定時(shí)器252來開始測(cè)量時(shí)間。狀態(tài)存儲(chǔ)單元220是如下所述的寄存器組。(A)任務(wù)ID寄存器254 用于存儲(chǔ)任務(wù)ID。任務(wù)ID寄存器254不斷地向任務(wù)選擇電路230輸出表示任務(wù)ID的ID信號(hào)。以下將任務(wù)A的任務(wù)ID寄存器254向任務(wù)選擇電路230輸出的ID信號(hào)表示為“10_々信號(hào)”。從狀態(tài)存儲(chǔ)單元220輸出的所有其它信號(hào)也采用同樣的表示方法。(B)任務(wù)優(yōu)先級(jí)寄存器256 用于存儲(chǔ)任務(wù)優(yōu)先級(jí)。任務(wù)優(yōu)先級(jí)寄存器256不斷地輸出表示任務(wù)優(yōu)先級(jí)的I3R信號(hào)?!?”表示最高優(yōu)先級(jí),值越大表示任務(wù)優(yōu)先級(jí)越低。(C)任務(wù)狀態(tài)寄存器258 用于存儲(chǔ)任務(wù)狀態(tài)。任務(wù)狀態(tài)寄存器258不斷地輸出表示STOP、READY、RUN、WAIT、IDLE中的某一個(gè)的ST信號(hào)。此外,IDLE是指任務(wù)初始化之前的狀態(tài)。(D)任務(wù)啟動(dòng)地址寄存器260 用于存儲(chǔ)存儲(chǔ)器中的任務(wù)的TCB地址。任務(wù)啟動(dòng)地址寄存器輸出AD信號(hào)。(E)待機(jī)理由寄存器262 用于在任務(wù)處于WAIT狀態(tài)時(shí),存儲(chǔ)構(gòu)成WAIT解除條件的待機(jī)理由。待機(jī)理由是“信號(hào)量等待”、“事件等待”和“互斥等待”中的某一個(gè)。待機(jī)理由寄存器262輸出WR信號(hào)。(F)信號(hào)量ID寄存器264:用于在任務(wù)以信號(hào)量等待為理由處于WAIT狀態(tài)時(shí),存儲(chǔ)等待對(duì)象的信號(hào)量(以下簡(jiǎn)稱為“待機(jī)信號(hào)量”)的信號(hào)量ID。信號(hào)量ID寄存器264輸出SID信號(hào)。(G)互斥ID寄存器265 用于在任務(wù)以互斥等待為理由處于WAIT狀態(tài)時(shí),存儲(chǔ)等待對(duì)象的互斥(以下簡(jiǎn)稱為“待機(jī)互斥”)的互斥ID?;コ釯D輸出MID信號(hào)。(H)事件ID寄存器266 用于在任務(wù)以事件等待為理由處于WAIT狀態(tài)時(shí),存儲(chǔ)等待對(duì)象的事件(以下簡(jiǎn)稱為“待機(jī)事件”)的事件ID。事件ID寄存器266輸出EID信號(hào)。(I)待機(jī)標(biāo)記寄存器268 用于在任務(wù)以事件等待為理由處于WAIT狀態(tài)時(shí),存儲(chǔ)待機(jī)標(biāo)記模式。待機(jī)標(biāo)記寄存器268輸出FL信號(hào)。(J)標(biāo)記條件寄存器270 用于在任務(wù)以事件等待為理由處于WAIT狀態(tài)時(shí),存儲(chǔ)標(biāo)記條件。標(biāo)記條件寄存器270輸出FLC信號(hào)。待機(jī)標(biāo)記模式和標(biāo)記條件將在后面詳述。(K)標(biāo)記初始化寄存器272 用于存儲(chǔ)表示是否有待機(jī)標(biāo)記模式的數(shù)據(jù)。標(biāo)記初始化寄存器272輸出FLI信號(hào)。(L)超時(shí)計(jì)數(shù)器274 超時(shí)值是在WAIT系列系統(tǒng)調(diào)用中指定的變量。超時(shí)計(jì)數(shù)器 274存儲(chǔ)超時(shí)值。任務(wù)切換電路210定期對(duì)各超時(shí)計(jì)數(shù)器274的超時(shí)值進(jìn)行遞減。超時(shí)計(jì)數(shù)器274輸出TO信號(hào)。代替任務(wù)切換電路210對(duì)超時(shí)值進(jìn)行遞減,也可以是超時(shí)計(jì)數(shù)器 274本身定期對(duì)其超時(shí)值自動(dòng)地進(jìn)行遞減。任務(wù)選擇電路230根據(jù)各狀態(tài)存儲(chǔ)單元220輸出的各種信號(hào)來選擇任務(wù)。任務(wù)選擇電路230包括以下電路。(A)執(zhí)行選擇電路232:用于在任務(wù)切換時(shí),選擇下一個(gè)RUN-任務(wù)。執(zhí)行選擇電路232通常根據(jù)狀態(tài)存儲(chǔ)單元220不斷輸出的狀態(tài)數(shù)據(jù),來選擇某一個(gè)任務(wù)作為RUN-任務(wù)。執(zhí)行選擇電路232的輸入信號(hào)有ID、STJR和TIM四種。執(zhí)行選擇電路232輸出下一個(gè)RUN-任務(wù)的任務(wù)ID。關(guān)于詳細(xì)的電路結(jié)構(gòu),將參照?qǐng)D12進(jìn)行詳述。(B)信號(hào)量選擇電路234 用于通過釋放信號(hào)量系統(tǒng)調(diào)用的執(zhí)行,選擇應(yīng)該從WAIT 狀態(tài)轉(zhuǎn)換到READY狀態(tài)的任務(wù)。信號(hào)量選擇電路234的輸入為來自任務(wù)切換電路210的釋放信號(hào)量系統(tǒng)調(diào)用釋放的信號(hào)量(以下簡(jiǎn)稱為“釋放信號(hào)量”)的信號(hào)量ID。來自狀態(tài)存儲(chǔ)單元220的輸入信號(hào)有ID、ST、WR、PR、SID和TIM六種。信號(hào)量選擇電路234的輸出信號(hào)是從WAIT狀態(tài)轉(zhuǎn)換到READY狀態(tài)的任務(wù)的任務(wù)ID。如果不存在該任務(wù),則輸出如_1等的規(guī)定值。關(guān)于更具體的電路結(jié)構(gòu),將參照?qǐng)D13進(jìn)行詳述。(C)事件選擇電路236 用于通過設(shè)定事件系統(tǒng)調(diào)用的執(zhí)行,選擇從WAIT狀態(tài)轉(zhuǎn)換到READY狀態(tài)的任務(wù)。事件選擇電路236的輸入為來自任務(wù)切換電路210的由設(shè)定事件系統(tǒng)調(diào)用設(shè)定的事件(以下簡(jiǎn)稱為“設(shè)定事件”)的事件ID。來自狀態(tài)存儲(chǔ)單元220的輸入信號(hào)有ID、ST、WR、EID、FL和FLC六種。事件選擇電路236的輸出信號(hào)為從WAIT狀態(tài)轉(zhuǎn)換到READY狀態(tài)的任務(wù)的任務(wù)ID、以及該任務(wù)的FL、FLC0(D)超時(shí)檢測(cè)電路238 用于檢測(cè)出處于WAIT狀態(tài)的任務(wù)中超時(shí)計(jì)數(shù)器274的超時(shí)值變成零的任務(wù)。每當(dāng)更新超時(shí)值時(shí),驅(qū)動(dòng)超時(shí)檢測(cè)電路238。超時(shí)檢測(cè)電路238的輸入信號(hào)有ID、ST和TO三種,輸出信號(hào)是該任務(wù)的任務(wù)ID。如果不存在該任務(wù),則輸出如-1 等的規(guī)定值。(E)互斥電路240 用于通過釋放互斥系統(tǒng)調(diào)用的執(zhí)行,選擇從WAIT狀態(tài)轉(zhuǎn)換到 READY狀態(tài)的任務(wù)?;コ怆娐?40的輸入信號(hào)為來自任務(wù)切換電路210的由釋放互斥系統(tǒng)調(diào)用釋放的互斥(以下簡(jiǎn)稱為“釋放互斥”)的互斥ID。來自狀態(tài)存儲(chǔ)單元220的輸入信號(hào)有ID、ST、WR、PR、SID和TIM六種。互斥電路240輸出從WAIT狀態(tài)轉(zhuǎn)換到READY狀態(tài)的任務(wù)的任務(wù)ID。如果不存在該任務(wù),則輸出如-1等的規(guī)定值。(F)檢索電路242 當(dāng)任務(wù)切換電路210輸入任務(wù)ID時(shí),檢索電路242輸出該任務(wù)的全部狀態(tài)數(shù)據(jù)。下面通過關(guān)于任務(wù)切換的描述,對(duì)RUN-任務(wù)的選擇、信號(hào)量、事件、互斥和超時(shí), 特別是任務(wù)選擇電路230的處理,與通用技術(shù)進(jìn)行比較說明。
RUN-任務(wù)的選擇[1]通過普通軟件RTOS進(jìn)行RUN-任務(wù)的選擇圖11是表示普通RTOS進(jìn)行RUN-任務(wù)選擇時(shí)所采用的任務(wù)就緒表的圖。任務(wù)就緒表形成在存儲(chǔ)器上,將各READY-任務(wù)的TCB用指針連接。優(yōu)先級(jí)指針280 設(shè)置在每個(gè)任務(wù)優(yōu)先級(jí)上,指出對(duì)應(yīng)任務(wù)優(yōu)先級(jí)的任務(wù)的TCB的開始地址。在圖11的任務(wù)就緒表中,任務(wù)優(yōu)先級(jí)“0”的優(yōu)先級(jí)指針280指向任務(wù)A的TCB的地址,任務(wù)優(yōu)先級(jí)“1”的優(yōu)先級(jí)指針280指向任務(wù)B的TCB的地址。任務(wù)A的TCB指向任務(wù)D的TCB的地址。普通軟件RTOS—邊掃描該任務(wù)就緒表一邊選擇出下一個(gè)RUN-任務(wù)。在這個(gè)處理過程中,RTOS進(jìn)行如下兩個(gè)階段的處理A.使RUN-任務(wù)從RUN狀態(tài)轉(zhuǎn)換到READY狀態(tài)。B.選擇下一個(gè)RUN-任務(wù),并使該選擇出的任務(wù)的任務(wù)狀態(tài)從READY狀態(tài)轉(zhuǎn)換到 RUN狀態(tài)。將軟件RTOS進(jìn)行的處理分解成如下各處理?!碦UN-任務(wù)的狀態(tài)轉(zhuǎn)換>這里,以任務(wù)J為RUN-任務(wù)來進(jìn)行說明。Al. RTOS將RUN-任務(wù)的任務(wù)ID存儲(chǔ)在存儲(chǔ)器中。RTOS根據(jù)該任務(wù)ID,獲取任務(wù) J的TCB的地址。A2.訪問該TCB,獲取任務(wù)J的任務(wù)優(yōu)先級(jí)。假設(shè)該任務(wù)優(yōu)先級(jí)為“0”。A3.參考圖11所示的任務(wù)就緒表,獲取與任務(wù)J的任務(wù)優(yōu)先級(jí)對(duì)應(yīng)的優(yōu)先級(jí)指針 280。A4.檢測(cè)所獲取的優(yōu)先級(jí)指針280所指的TCB。這里檢測(cè)出任務(wù)A的TCB。A5.跟蹤任務(wù)A的TCB所具有的指針,以檢測(cè)出任務(wù)就緒表最末尾的TCB。圖11 中,任務(wù)就緒表的最末尾是任務(wù)F。A6.配置任務(wù)F的TCB的指針指向任務(wù)J的TCB的地址。由此,任務(wù)J的TCB被追加到任務(wù)就緒表中。A7.在任務(wù)J的TCB中設(shè)定“READY”。另外,處理數(shù)據(jù)被復(fù)制到該TCB的寄存器存儲(chǔ)區(qū)域?!碦EADY-任務(wù)的狀態(tài)轉(zhuǎn)換>Bi. RTOS檢測(cè)任務(wù)優(yōu)先級(jí)“0”的優(yōu)先級(jí)指針280指向哪個(gè)TCB。如果沒有指向任何TCB,則檢測(cè)任務(wù)優(yōu)先級(jí)“1”的優(yōu)先級(jí)指針280指向哪個(gè)TCB。RTOS —邊以降低的任務(wù)優(yōu)先級(jí)順序檢測(cè)該任務(wù)就緒表,一邊試圖確定任務(wù)直到發(fā)現(xiàn)指向的TCB為止。該圖中,將指定任務(wù)A。B2.將任務(wù)A從任務(wù)就緒表中移除。具體地說,重寫任務(wù)優(yōu)先級(jí)“0”的優(yōu)先級(jí)指針 280,以取代任務(wù)A來指向任務(wù)D的TCB的地址。另外,通過設(shè)定NULL使得任務(wù)A的指針不指向任務(wù)D的地址。由此,任務(wù)A的TCB從任務(wù)就緒表中移除。B3.在任務(wù)A的TCB中設(shè)定“RUN”。另外,保存在任務(wù)A的TCB的寄存器存儲(chǔ)區(qū)域中的處理數(shù)據(jù)被加載到處理寄存器組中。如上所述,普通軟件RTOS采用該任務(wù)就緒表進(jìn)行任務(wù)切換,即RTOS根據(jù)下述策略,從多個(gè)READY-任務(wù)中選擇RUN-任務(wù)。
19
1.所選擇的任務(wù)為READY-任務(wù)(第一條件)。2.所選擇的任務(wù)為READY-任務(wù)中任務(wù)優(yōu)先級(jí)最高的任務(wù)(第二條件)。3.當(dāng)存在多個(gè)任務(wù)優(yōu)先級(jí)最高的任務(wù)時(shí),所選擇的任務(wù)是轉(zhuǎn)換為READY狀態(tài)的時(shí)間最久的任務(wù)(第三條件)。這三個(gè)條件統(tǒng)稱為“RUN任務(wù)選擇條件”。任務(wù)處理裝置100的執(zhí)行選擇電路232 通過硬件來實(shí)現(xiàn)這種RTOS的任務(wù)調(diào)度功能。[2]通過本實(shí)施例的硬件RTOS所進(jìn)行的RUN-任務(wù)的選擇圖12是執(zhí)行選擇電路232的電路圖。這里,假設(shè)從任務(wù)0 任務(wù)7共八個(gè)任務(wù)中選擇出RUN-任務(wù)。執(zhí)行選擇電路232 包括四個(gè)第一比較電路290 (290a 290d)、兩個(gè)第二比較電路292 (292a,292b)、以及一個(gè)第三比較電路四4。另外,還包括八個(gè)判定電路四6(四6£1 。判定電路296的輸入信號(hào)為表示任務(wù)狀態(tài)的ST信號(hào)。當(dāng)該ST信號(hào)表示READY時(shí), 判定電路296輸出的CID信號(hào)為“1” ;當(dāng)該ST信號(hào)表示READY之外的任務(wù)狀態(tài)時(shí),則輸出的CID信號(hào)為“0”。判定電路296根據(jù)上述RUN-任務(wù)選擇條件中的第一條件進(jìn)行判定。第一比較電路四0的輸入為兩個(gè)任務(wù)的ID、I3R和TIM、以及來自判定電路四6的CID信號(hào)。以第一比較電路^Oa為例進(jìn)行說明。第一比較電路^Oa比較任務(wù)0和任務(wù)1,以根據(jù)上述的RUN任務(wù)選擇條件選擇出更適合的任務(wù)。第一判定首先,比較分別從判定電路和判定電路輸出的CID信號(hào)。如果某一個(gè)CID信號(hào)是“1”,換句話說,如果只有一個(gè)任務(wù)處于READY狀態(tài),則第一比較電路 290a輸出該任務(wù)的IDJR和TIM。如果兩個(gè)CID信號(hào)都是“0”,即哪個(gè)任務(wù)都不處于READY 狀態(tài),則第一比較電路^Oa輸出ID = I3R = TIM = NULL。這表示哪個(gè)任務(wù)都沒有被選擇。 如果兩個(gè)CID信號(hào)都是“1”,即兩個(gè)任務(wù)都處于READY狀態(tài),則執(zhí)行下面的第二判定。第二判定比較任務(wù)ο的ra信號(hào)和任務(wù)ι的ra信號(hào),以選擇出任務(wù)優(yōu)先級(jí)較高的任務(wù)。例如,如果任務(wù)0的任務(wù)優(yōu)先級(jí)是“1”、任務(wù)1的任務(wù)優(yōu)先級(jí)是“2”,則第一比較電路 290a輸出任務(wù)0的ID、PR和TIM。通過第二判定,能夠選擇出任務(wù)優(yōu)先級(jí)最高的任務(wù)作為 RUN-任務(wù)的候選。如果任務(wù)0和任務(wù)1的任務(wù)優(yōu)先級(jí)相同,則執(zhí)行下面的第三判定。第三判定比較任務(wù)0的TIM信號(hào)和任務(wù)1的TIM信號(hào),以選擇出READY經(jīng)過時(shí)間較長的任務(wù)。如果對(duì)應(yīng)的READY經(jīng)過時(shí)間相同,則選擇任務(wù)0。由于僅通過比較經(jīng)過時(shí)間的大小就能夠進(jìn)行判定,因此將無需進(jìn)行如任務(wù)就緒表一樣的TCB順序管理。由此,任務(wù)0和任務(wù)1、任務(wù)2和任務(wù)3、任務(wù)4和任務(wù)5、以及任務(wù)6和任務(wù)7,分別根據(jù)RUN-任務(wù)選擇條件進(jìn)行比較。第二比較電路292通過測(cè)試來自兩個(gè)第一比較電路 290的輸出,來進(jìn)一步篩選RUN-任務(wù)的候選。第二比較電路四加根據(jù)第一比較電路^Oa 和第一比較電路^Ob的輸出來執(zhí)行任務(wù)選擇。因此,第二比較電路四加輸出任務(wù)0 任務(wù)3中最符合RUN-任務(wù)選擇條件的任務(wù)的ID、PR和TIM。第三比較電路四4也以相同的方式進(jìn)行操作,第三比較電路294輸出任務(wù)0 任務(wù)7中某一個(gè)任務(wù)的任務(wù)ID。根據(jù)這種處理方法,能夠通過硬件來實(shí)現(xiàn)RUN-任務(wù)選擇條件。普通軟件RTOS — 邊訪問任務(wù)就緒表一邊選擇RUN-任務(wù)。但是本實(shí)施例中的執(zhí)行選擇電路232根據(jù)從狀態(tài)存儲(chǔ)單元220不斷輸出的狀態(tài)數(shù)據(jù),選擇RUN-任務(wù)。由執(zhí)行選擇電路232執(zhí)行的處理總結(jié)如下。
20
〈RUN-任務(wù)的狀態(tài)轉(zhuǎn)換>這里,假設(shè)任務(wù)J為該RUN-任務(wù)。Al.任務(wù)切換電路210在任務(wù)J的任務(wù)狀態(tài)寄存器258中設(shè)定“READY”。A2.任務(wù)切換電路210設(shè)置任務(wù)J的定時(shí)器252,以開始測(cè)量READY經(jīng)過時(shí)間。由此,任務(wù)J從RUN狀態(tài)轉(zhuǎn)換到READY狀態(tài)。如前所述,處理數(shù)據(jù)保存在任務(wù)J的保存寄存器110中。連接處理寄存器組巧4和保存寄存器110的總線,能夠并行傳輸處理數(shù)據(jù),從而Al和A2的處理能夠在一個(gè)時(shí)鐘時(shí)間內(nèi)執(zhí)行?!碦EADY-任務(wù)的狀態(tài)轉(zhuǎn)換> Bi.當(dāng)任務(wù)J的狀態(tài)轉(zhuǎn)換完成時(shí),任務(wù)切換電路210根據(jù)執(zhí)行選擇電路232所輸出的任務(wù)ID確定RUN-任務(wù),并在該確定的任務(wù)的任務(wù)狀態(tài)寄存器258中設(shè)定“RUN”。由此,所確定的任務(wù)從READY狀態(tài)轉(zhuǎn)換到RUN狀態(tài)。所確定的任務(wù)的處理數(shù)據(jù)從保存寄存器Iio加載到處理寄存器組巧4中。連接保存寄存器110和處理寄存器組154的總線,也能夠并行傳輸處理數(shù)據(jù),從而Bl的處理能夠在一個(gè)時(shí)鐘時(shí)間內(nèi)執(zhí)行。軟件RTOS在任務(wù)切換時(shí),由于例如訪問任務(wù)就緒表等原因會(huì)消耗CPU的很多CPU 時(shí)鐘時(shí)間。與此相反,本實(shí)施例中的任務(wù)控制電路200能夠在很短的時(shí)間內(nèi)完成任務(wù)切換。 由于狀態(tài)存儲(chǔ)單元220不斷地將狀態(tài)數(shù)據(jù)輸出給執(zhí)行選擇電路232,因此執(zhí)行選擇電路232 不斷地輸出某一個(gè)任務(wù)的任務(wù)ID。不是在任務(wù)切換發(fā)生后才開始RUN-任務(wù)的選擇處理,而是根據(jù)任務(wù)切換發(fā)生時(shí)的執(zhí)行選擇電路232的輸出來執(zhí)行RUN-任務(wù)的選擇,這對(duì)任務(wù)切換高速化也有貢獻(xiàn)。以上說明假設(shè)有八個(gè)任務(wù),但是通過增加比較電路的階段數(shù),能夠?qū)Ω嗟娜蝿?wù)進(jìn)行尋址。[信號(hào)量處理]圖13是表示由普通RTOS進(jìn)行的信號(hào)量處理中所采用的等待信號(hào)量表的圖。在說明等待信號(hào)量表之前,先簡(jiǎn)單說明信號(hào)量。信號(hào)量表212中對(duì)應(yīng)記錄信號(hào)量 ID和信號(hào)量計(jì)數(shù)器。在信號(hào)量計(jì)數(shù)器中將初始值設(shè)定為有限數(shù)。例如,假設(shè)設(shè)定為信號(hào)量 ID = 4,信號(hào)量計(jì)數(shù)器=3。當(dāng)某一個(gè)任務(wù)執(zhí)行將信號(hào)量ID = 4的信號(hào)量作為待機(jī)信號(hào)量的等待信號(hào)量系統(tǒng)調(diào)用時(shí),任務(wù)切換電路210使待機(jī)信號(hào)量的信號(hào)量計(jì)數(shù)器遞減。每當(dāng)通過等待信號(hào)量事件調(diào)用來請(qǐng)求獲取時(shí),遞減信號(hào)量計(jì)數(shù)器,當(dāng)信號(hào)量計(jì)數(shù)器變成0時(shí),無法再獲取信號(hào)量。執(zhí)行將信號(hào)量計(jì)數(shù)器為0的信號(hào)量作為待機(jī)信號(hào)量的等待信號(hào)量系統(tǒng)調(diào)用的任務(wù),狀態(tài)轉(zhuǎn)換到WAIT狀態(tài)。另一方面,當(dāng)某一個(gè)任務(wù)執(zhí)行將信號(hào)量ID = 4的信號(hào)量作為釋放信號(hào)量的釋放信號(hào)量系統(tǒng)調(diào)用時(shí),任務(wù)切換電路210使信號(hào)量表212的信號(hào)量計(jì)數(shù)器遞增。綜上所述當(dāng)信號(hào)量計(jì)數(shù)器> 0時(shí)執(zhí)行等待信號(hào)量系統(tǒng)調(diào)用的任務(wù),從RUN轉(zhuǎn)換到READY。 此時(shí)遞減信號(hào)量計(jì)數(shù)器。當(dāng)信號(hào)量計(jì)數(shù)器=0時(shí)執(zhí)行等待信號(hào)量系統(tǒng)調(diào)用的任務(wù),從RUN轉(zhuǎn)換到WAIT。不遞減信號(hào)量計(jì)數(shù)器。為了使執(zhí)行等待信號(hào)量系統(tǒng)調(diào)用的任務(wù)從WAIT狀態(tài)轉(zhuǎn)換到READY狀態(tài),其它任務(wù)需要執(zhí)行釋放信號(hào)量系統(tǒng)調(diào)用。[1]由普通軟件RTOS進(jìn)行的信號(hào)量處理普通軟件RTOS通過采用等待信號(hào)量表來管理以信號(hào)量等待為理由處于WAIT狀態(tài)
21的任務(wù)(以下特別稱作“信號(hào)量等待任務(wù)”)的TCB。等待信號(hào)量表是具有與圖11所示的任務(wù)就緒表類似構(gòu)造的列表,形成在存儲(chǔ)器上。各信號(hào)量等待任務(wù)的TCB由指針連接。優(yōu)先級(jí)指針280指向?qū)?yīng)任務(wù)優(yōu)先級(jí)的信號(hào)量等待任務(wù)的TCB的開始地址。當(dāng)執(zhí)行釋放信號(hào)量系統(tǒng)調(diào)用時(shí),普通軟件RTOS —邊掃描該等待信號(hào)量表一邊選擇應(yīng)從WAIT狀態(tài)轉(zhuǎn)換到READY狀態(tài)的信號(hào)量等待任務(wù)。執(zhí)行等待信號(hào)量系統(tǒng)調(diào)用以及執(zhí)行釋放信號(hào)量系統(tǒng)調(diào)用時(shí),RTOS執(zhí)行的處理如下。<等待信號(hào)量系統(tǒng)調(diào)用的執(zhí)行>這里,假設(shè)任務(wù)J為RUN-任務(wù)。Al. RTOS將RUN-任務(wù)的任務(wù)ID存儲(chǔ)在存儲(chǔ)器中。根據(jù)該任務(wù)ID,獲取任務(wù)J的 TCB的地址。A2.檢測(cè)在等待信號(hào)量系統(tǒng)調(diào)用中所指定的待機(jī)信號(hào)量的信號(hào)量計(jì)數(shù)器。以下根據(jù)信號(hào)量計(jì)數(shù)器的值,處理被分別說明。(當(dāng)信號(hào)量計(jì)數(shù)器>0時(shí))A3. RTOS使待機(jī)信號(hào)量的信號(hào)量計(jì)數(shù)器遞減。A4.在任務(wù)J的TCB中設(shè)定“READY”。這種情況下,任務(wù)J的TCB被追加到任務(wù)就
緒表中。(當(dāng)信號(hào)量計(jì)數(shù)器=0時(shí))A3. RTOS訪問該TCB,以獲取任務(wù)J的任務(wù)優(yōu)先級(jí)。假設(shè)任務(wù)優(yōu)先級(jí)為“0”。A4.根據(jù)等待信號(hào)量表,獲取與任務(wù)J的任務(wù)優(yōu)先級(jí)對(duì)應(yīng)的優(yōu)先級(jí)指針。A5.檢測(cè)所獲取的優(yōu)先級(jí)指針?biāo)傅腡CB。這里,檢測(cè)到任務(wù)A的TCB。A6.跟蹤任務(wù)A的TCB所具有的指針,以檢測(cè)出該等待信號(hào)量表中最末尾的TCB。 如圖13所示,任務(wù)F在該等待信號(hào)量表的最末尾。A7.配置任務(wù)F的TCB的指針指向任務(wù)J的TCB的地址。由此,任務(wù)J的TCB被追加到等待信號(hào)量表中。A8.在任務(wù)J的TCB中設(shè)定“WAIT”。另外,還設(shè)定待機(jī)信號(hào)量的信號(hào)量ID。<釋放信號(hào)量系統(tǒng)調(diào)用的執(zhí)行>Bi. RTOS 一邊按順序跟蹤任務(wù)優(yōu)先級(jí)為“0”的任務(wù),一邊搜索以釋放信號(hào)量為待機(jī)信號(hào)量的信號(hào)量等待任務(wù)。如果不存在這樣的任務(wù),則將任務(wù)優(yōu)先級(jí)為“1”的任務(wù)設(shè)為搜索對(duì)象。根據(jù)是否搜索到以釋放信號(hào)量為待機(jī)信號(hào)量的信號(hào)量等待任務(wù),分別執(zhí)行不同的處理。(搜索到時(shí))B2.以搜索到的任務(wù)是任務(wù)E來進(jìn)行說明。RTOS在任務(wù)E的TCB中設(shè)定“READY”。 另外,清除待機(jī)信號(hào)量的信號(hào)量ID。B3.將任務(wù)E的TCB從等待信號(hào)量表中移除。B4.使釋放信號(hào)量的任務(wù)的狀態(tài)從RUN狀態(tài)轉(zhuǎn)換到READY狀態(tài)。該任務(wù)的TCB被追加到任務(wù)就緒表中。(未搜索到時(shí))B2. RTOS使信號(hào)量計(jì)數(shù)器遞增。B3.使釋放信號(hào)量的任務(wù)的狀態(tài)從RUN狀態(tài)轉(zhuǎn)換到READY狀態(tài)。該任務(wù)的TCB被
22追加到任務(wù)就緒表中。普通軟件RTOS通過管理上述等待信號(hào)量表,進(jìn)行與信號(hào)量相關(guān)的處理。在釋放信號(hào)量時(shí),RTOS根據(jù)以下策略從多個(gè)WAIT-任務(wù)中選擇READY-任務(wù)。1.所選擇的任務(wù)應(yīng)該為WAIT-任務(wù)(第一條件)。2.所選擇的任務(wù)應(yīng)該為WAIT-任務(wù)中將釋放信號(hào)量作為待機(jī)信號(hào)量的任務(wù)(第二條件)。3.當(dāng)存在多個(gè)這種任務(wù)時(shí),所選擇的任務(wù)應(yīng)該具有最高的任務(wù)優(yōu)先級(jí)(第三條件)。4.如果存在多個(gè)任務(wù)優(yōu)先級(jí)最高的任務(wù),所選擇的任務(wù)應(yīng)該是轉(zhuǎn)換為WAIT狀態(tài)的時(shí)間最久的任務(wù)(第四條件)。這四個(gè)條件統(tǒng)稱為“信號(hào)量待機(jī)解除條件”。任務(wù)處理裝置100的信號(hào)量選擇電路 234通過硬件來實(shí)現(xiàn)這種RTOS的任務(wù)調(diào)度功能。[2]由本實(shí)施例的硬件RTOS進(jìn)行的信號(hào)量處理圖14是信號(hào)量選擇電路234的電路圖。這里,也是以任務(wù)0 任務(wù)7共八個(gè)任務(wù)為例進(jìn)行說明。信號(hào)量選擇電路234包括四個(gè)第一比較電路300 (300a 300d)、兩個(gè)第二比較電路302 (302a,302b)、以及一個(gè)第三比較電路304。另外,還包括八個(gè)判定電路306 (306a 306h)。判定電路306的輸入信號(hào)為來自狀態(tài)存儲(chǔ)單元220的ST、WR、SID信號(hào)和來自任務(wù)切換電路210的表示信號(hào)量ID的信號(hào)。這里所輸入的信號(hào)量ID是釋放信號(hào)量的信號(hào)量 ID。如果對(duì)應(yīng)的任務(wù)是以釋放信號(hào)量為待機(jī)信號(hào)量的信號(hào)量等待任務(wù),則判定電路306輸出的CID信號(hào)為“1”,如果不是,則輸出的CID信號(hào)為“0”。判定電路306輸出基于上述信號(hào)量待機(jī)解除條件中的第一條件和第二條件的判定結(jié)果。第一比較電路300的輸入信號(hào)為兩個(gè)任務(wù)的ID、I3R和TIM、以及來自判定電路306的CID信號(hào)。第一比較電路300是根據(jù)信號(hào)量待機(jī)解除條件中的第三條件和第四條件進(jìn)行判定的電路。第二比較電路302和第三比較電路304也同樣。以上已經(jīng)說明,RUN-任務(wù)選擇條件的第二條件和第三條件,與信號(hào)量待機(jī)解除條件的第三條件和第四條件相同。執(zhí)行選擇電路232的各比較電路是比較任務(wù)的狀態(tài)數(shù)據(jù)(PR、TIM)的電路。另一方面,信號(hào)量選擇電路234的各比較電路也是比較任務(wù)的狀態(tài)數(shù)據(jù)(PR、TIM)的電路。因而,執(zhí)行選擇電路 232的第一比較電路290和信號(hào)量選擇電路234的第一比較電路300是內(nèi)置有相同邏輯的電路,能夠共用。各任務(wù)在通過判定電路306基于第一條件和第二條件進(jìn)行判定的基礎(chǔ)上, 通過第一比較電路300進(jìn)行判定處理。之后通過與執(zhí)行選擇電路232相同的判定處理,第三比較電路304輸出某一個(gè)任務(wù)ID。當(dāng)執(zhí)行等待信號(hào)量系統(tǒng)調(diào)用以及當(dāng)執(zhí)行釋放信號(hào)量系統(tǒng)調(diào)用時(shí)進(jìn)行如下處理。<等待信號(hào)量系統(tǒng)調(diào)用的執(zhí)行>這里,假設(shè)任務(wù)J為RUN-任務(wù)。Al.任務(wù)切換電路210從信號(hào)量表212中檢測(cè)在等待信號(hào)量系統(tǒng)調(diào)用中所指定的信號(hào)量的信號(hào)量計(jì)數(shù)器。以下根據(jù)信號(hào)量計(jì)數(shù)器的值,處理被分別說明。(當(dāng)信號(hào)量計(jì)數(shù)器>0時(shí))A2.任務(wù)切換電路210使信號(hào)量表212的信號(hào)量計(jì)數(shù)器遞減。
23
A3.在任務(wù)J的任務(wù)狀態(tài)寄存器258中設(shè)定“READY”。此時(shí),任務(wù)切換電路210設(shè)置RUN-任務(wù)的定時(shí)器252,以開始測(cè)量READY經(jīng)過時(shí)間。(當(dāng)信號(hào)量計(jì)數(shù)器=0時(shí))A2.任務(wù)切換電路210在任務(wù)J的任務(wù)狀態(tài)寄存器258中設(shè)定“WAIT”,在待機(jī)理由寄存器沈2中設(shè)定“信號(hào)量等待”,在信號(hào)量ID寄存器沈4中設(shè)定待機(jī)信號(hào)量的信號(hào)量 ID,并設(shè)定定時(shí)器252以開始測(cè)量WAIT經(jīng)過時(shí)間。由此,執(zhí)行等待信號(hào)量系統(tǒng)調(diào)用的任務(wù),從RUN狀態(tài)轉(zhuǎn)換到READY狀態(tài)或者WAIT 狀態(tài)。<釋放信號(hào)量系統(tǒng)調(diào)用的執(zhí)行>Bi.任務(wù)切換電路210將釋放信號(hào)量的信號(hào)量ID輸入到各判定電路306中。各判定電路306根據(jù)該信號(hào)量ID,判定是否滿足信號(hào)量待機(jī)解除條件中的第一條件以及第二條件。因而,各個(gè)第一比較電路300根據(jù)第三條件以及第四條件選擇任務(wù)。(當(dāng)某一個(gè)判定電路306輸出“1”,第三比較電路304輸出某一個(gè)任務(wù)ID時(shí))B2.任務(wù)切換電路210在所檢測(cè)出的任務(wù)的任務(wù)狀態(tài)寄存器258中設(shè)定“READY”, 清除待機(jī)理由寄存器262和信號(hào)量ID寄存器沈4,并使定時(shí)器252開始測(cè)量READY經(jīng)過時(shí)間。B3.在執(zhí)行系統(tǒng)調(diào)用的任務(wù)的任務(wù)狀態(tài)寄存器258中設(shè)定“READY”,并開始測(cè)量 READY經(jīng)過時(shí)間。(當(dāng)沒有判定電路306輸出“1”,第三比較電路304不輸出任何一個(gè)任務(wù)ID時(shí))B2.任務(wù)切換電路210使信號(hào)量表212的信號(hào)量計(jì)數(shù)器遞增。B3.使執(zhí)行系統(tǒng)調(diào)用的任務(wù)的狀態(tài)從RUN狀態(tài)轉(zhuǎn)換到READY狀態(tài)。由于狀態(tài)存儲(chǔ)單元220不斷地將狀態(tài)數(shù)據(jù)輸出給信號(hào)量選擇電路234,因此當(dāng)任務(wù)切換電路210將信號(hào)量ID輸入給判定電路306時(shí),信號(hào)量選擇電路234能夠立即執(zhí)行選擇處理。[互斥處理]互斥也與信號(hào)量相同,用于任務(wù)之間的同步處理。互斥和信號(hào)量存在以下幾點(diǎn)不同。1.信號(hào)量計(jì)數(shù)器可設(shè)定為1以上的整數(shù)。與此相對(duì),互斥是信號(hào)量計(jì)數(shù)器為1或者0的特殊信號(hào)量。當(dāng)信號(hào)量計(jì)數(shù)器為2以上時(shí),能夠有2個(gè)以上的任務(wù)獲得相同的信號(hào)量。但是,在互斥的情況下,能夠獲得某互斥的任務(wù)通常只有一個(gè)。2.能夠通過釋放信號(hào)量系統(tǒng)調(diào)用釋放信號(hào)量的任務(wù),不限于通過等待信號(hào)量系統(tǒng)調(diào)用來獲得信號(hào)量的任務(wù)。與此相對(duì),能夠通過釋放互斥系統(tǒng)調(diào)用釋放互斥的任務(wù),只能是通過等待互斥系統(tǒng)調(diào)用來獲得互斥的任務(wù)。在釋放互斥時(shí),任務(wù)切換電路210從多個(gè)WAIT-任務(wù)中選擇READY-任務(wù)的策略如下。1.所選擇的任務(wù)應(yīng)該是WAIT-任務(wù)(第一條件)。2.所選擇的任務(wù)應(yīng)該是WAIT-任務(wù)中以釋放互斥為待機(jī)互斥的任務(wù)(第二條件)。3.當(dāng)存在多個(gè)這種任務(wù)時(shí),所選擇的任務(wù)應(yīng)該是任務(wù)優(yōu)先級(jí)最高的任務(wù)(第三條
24件)。4.當(dāng)存在多個(gè)任務(wù)優(yōu)先級(jí)最高的任務(wù)時(shí),所選擇的任務(wù)應(yīng)該是轉(zhuǎn)換為WAIT狀態(tài)時(shí)間最久的任務(wù)(第四條件)。這四個(gè)條件統(tǒng)稱為“互斥待機(jī)解除條件”。因而,當(dāng)執(zhí)行等待互斥系統(tǒng)調(diào)用以及當(dāng)執(zhí)行釋放互斥系統(tǒng)調(diào)用時(shí),本實(shí)施例的硬件RTOS執(zhí)行如下處理。信號(hào)量表212中對(duì)應(yīng)存儲(chǔ)互斥ID和表示該互斥是否被哪一個(gè)任務(wù)占用的占用狀態(tài)數(shù)據(jù)。當(dāng)該互斥沒有被占用時(shí),占用狀態(tài)數(shù)據(jù)為“0”,當(dāng)該互斥被占用時(shí),占用狀態(tài)數(shù)據(jù)為占用該互斥的任務(wù)的任務(wù)ID。<等待互斥系統(tǒng)調(diào)用的執(zhí)行>這里,假設(shè)任務(wù)J為RUN-任務(wù)。Al.任務(wù)切換電路210檢測(cè)在等待互斥系統(tǒng)調(diào)用中指定的互斥是否被占用。以下根據(jù)該互斥的占用狀態(tài),處理被分別說明。(當(dāng)互斥沒有被占用時(shí))A2.任務(wù)切換電路210將執(zhí)行系統(tǒng)調(diào)用的任務(wù)的任務(wù)ID作為互斥占用狀態(tài)數(shù)據(jù)記錄。A3.在任務(wù)J的任務(wù)狀態(tài)寄存器258中設(shè)定“READY”。此時(shí),任務(wù)切換電路210設(shè)置RUN-任務(wù)的定時(shí)器252,以開始測(cè)量READY經(jīng)過時(shí)間。(當(dāng)互斥被占用時(shí))A2.任務(wù)切換電路210在任務(wù)J的任務(wù)狀態(tài)寄存器258中設(shè)置“WAIT”,在待機(jī)理由寄存器262中設(shè)置“互斥等待”,在互斥ID寄存器沈5中設(shè)定待機(jī)互斥的互斥ID,并設(shè)定定時(shí)器252以開始測(cè)量WAIT經(jīng)過時(shí)間。<釋放互斥系統(tǒng)調(diào)用的執(zhí)行>Bi.任務(wù)切換電路210在執(zhí)行系統(tǒng)調(diào)用的任務(wù)占用釋放互斥的條件下,將釋放信號(hào)量ID輸入給互斥電路M0。互斥電路240也包括如圖14所示的多階段連接的比較電路、 以及判定是否滿足互斥待機(jī)解除條件中第一條件以及第二條件的判定電路。該判定電路以該互斥為對(duì)象,只有當(dāng)互斥待機(jī)條件中的第一條件以及第二條件同時(shí)滿足時(shí)才輸出“1”。此外,當(dāng)沒有占用釋放互斥的任務(wù)執(zhí)行釋放互斥系統(tǒng)調(diào)用時(shí),使該任務(wù)的狀態(tài)從RUN狀態(tài)轉(zhuǎn)換到READY狀態(tài)。(當(dāng)某一個(gè)判定電路輸出“1”,互斥電路240輸出某一個(gè)任務(wù)ID時(shí))B2.任務(wù)切換電路210在所檢測(cè)出的任務(wù)的任務(wù)狀態(tài)寄存器258中設(shè)定“READY”, 清除待機(jī)理由寄存器262和互斥ID寄存器沈5,并使定時(shí)器252開始測(cè)量READY經(jīng)過時(shí)間。B3.在執(zhí)行系統(tǒng)調(diào)用的任務(wù)的任務(wù)狀態(tài)寄存器258中設(shè)定“READY”,并開始測(cè)量 READY經(jīng)過時(shí)間。(當(dāng)沒有判定電路輸出“1”,互斥電路240不輸出任何一個(gè)任務(wù)ID時(shí))B2.任務(wù)切換電路210在信號(hào)量表212中將互斥設(shè)定為非占用狀態(tài)。B3.使執(zhí)行系統(tǒng)調(diào)用的任務(wù)的狀態(tài)從RUN狀態(tài)轉(zhuǎn)換到READY狀態(tài)。[事件處理]下面簡(jiǎn)單說明本實(shí)施例中的事件管理。事件表214對(duì)應(yīng)記錄事件ID和標(biāo)記模式 (以下稱作“當(dāng)前標(biāo)記模式”)。標(biāo)記模式是8位的位模式。
25
設(shè)定事件系統(tǒng)調(diào)用是以事件ID和標(biāo)記模式(以下稱作“設(shè)定標(biāo)記模式”)為參數(shù)來更新當(dāng)前標(biāo)記模式的系統(tǒng)調(diào)用。當(dāng)執(zhí)行設(shè)定事件系統(tǒng)調(diào)用時(shí),對(duì)應(yīng)該事件的當(dāng)前標(biāo)記模式更新為與設(shè)定標(biāo)記模式的邏輯或。例如,假如當(dāng)前標(biāo)記模式為“00001100”、設(shè)定標(biāo)記模式為“00000101”,則當(dāng)前標(biāo)記模式變?yōu)椤?0001101”。以下關(guān)于各標(biāo)記模式,從左至右依次稱作第0位,第1位,…,和第7位。等待事件系統(tǒng)調(diào)用是用于等待待機(jī)事件的當(dāng)前標(biāo)記模式滿足規(guī)定條件的系統(tǒng)調(diào)用,以事件ID、標(biāo)記模式(以下稱作“待機(jī)標(biāo)記模式”)、和標(biāo)記條件作為參數(shù)。當(dāng)執(zhí)行等待事件系統(tǒng)調(diào)用時(shí),判定當(dāng)前標(biāo)記模式和待機(jī)標(biāo)記模式之間是否滿足標(biāo)記條件。標(biāo)記條件是邏輯或(OR)或者邏輯與(AND)。在標(biāo)記條件是邏輯與(AND)的情況下,WAIT解除條件是指對(duì)在待機(jī)標(biāo)記模式中為“ 1,,的全部位,當(dāng)前標(biāo)記模式中的對(duì)應(yīng)位也全部是“ 1 ”。在標(biāo)記條件是邏輯或(OR)的情況下,WAIT解除條件是指對(duì)在待機(jī)標(biāo)記模式中為“1”的至少一位, 當(dāng)前標(biāo)記模式的對(duì)應(yīng)位也是“1”。例如,在當(dāng)前標(biāo)記模式為“00001101”、待機(jī)標(biāo)記模式為 “00000011”、標(biāo)記條件是“邏輯或(OR) ”的情況下,待機(jī)標(biāo)記模式的第6位以及第7位是1, 當(dāng)前標(biāo)記模式的第7位是1,因此這種情況下,在等待事件系統(tǒng)調(diào)用中指定的WAIT解除條件滿足。另一方面,在標(biāo)記條件是“邏輯與(AND)”的情況下,由于當(dāng)前標(biāo)記模式的第6位是 “0”,因此WAIT解除條件不滿足。[1]由普通軟件RTOS所進(jìn)行的事件處理當(dāng)執(zhí)行等待事件系統(tǒng)調(diào)用以及當(dāng)執(zhí)行設(shè)定事件系統(tǒng)調(diào)用時(shí),普通RTOS執(zhí)行如下處理。在普通RTOS中,為了管理事件,在存儲(chǔ)器上保持著事件表。在該事件表中,不僅存儲(chǔ)有事件ID、當(dāng)前標(biāo)記模式,通常還對(duì)應(yīng)存儲(chǔ)有以該事件為待機(jī)事件而處于WAIT狀態(tài)的任務(wù) (以下稱作“事件等待任務(wù)”)的任務(wù)ID、待機(jī)標(biāo)記模式、和標(biāo)記條件。<等待事件系統(tǒng)調(diào)用的執(zhí)行>Al. RTOS從事件表中讀出由系統(tǒng)調(diào)用指定的事件的當(dāng)前標(biāo)記模式。A2.按照標(biāo)記條件比較當(dāng)前標(biāo)記模式和待機(jī)標(biāo)記模式,以判定WAIT解除條件是否 兩足。(當(dāng)WAIT解除條件滿足時(shí))A3.使執(zhí)行系統(tǒng)調(diào)用的任務(wù)的任務(wù)狀態(tài)從RUN狀態(tài)轉(zhuǎn)換到READY狀態(tài)。(當(dāng)WAIT解除條件不滿足時(shí))A3.在事件表中記錄執(zhí)行系統(tǒng)調(diào)用的任務(wù)的任務(wù)ID。A4.在事件表中記錄待機(jī)標(biāo)記模式。A5.在事件表中記錄標(biāo)記條件。A6.使執(zhí)行系統(tǒng)調(diào)用的任務(wù)的任務(wù)狀態(tài)從RUN狀態(tài)轉(zhuǎn)換到WAIT狀態(tài)。<設(shè)定事件系統(tǒng)調(diào)用的執(zhí)行>Bi. RTOS從事件表中讀出與系統(tǒng)調(diào)用中指定的事件對(duì)應(yīng)的當(dāng)前標(biāo)記模式、任務(wù) ID、待機(jī)標(biāo)記模式、以及標(biāo)記條件。B2.將當(dāng)前標(biāo)記模式和設(shè)定標(biāo)記模式的邏輯或作為新的當(dāng)前標(biāo)記模式進(jìn)行記錄。(當(dāng)不存在關(guān)于指定事件的事件等待任務(wù)時(shí),或者當(dāng)即使存在關(guān)于指定事件的事件等待任務(wù),而根據(jù)待機(jī)標(biāo)記模式和標(biāo)記條件,WAIT解除條件不滿足時(shí))B3.使執(zhí)行系統(tǒng)調(diào)用的任務(wù)的任務(wù)狀態(tài)從RUN狀態(tài)轉(zhuǎn)換到READY狀態(tài)。
26
(當(dāng)存在關(guān)于指定事件的事件等待任務(wù),且WAIT解除條件滿足時(shí))B3.使事件等待任務(wù)的任務(wù)狀態(tài)從WAIT狀態(tài)轉(zhuǎn)換到READY狀態(tài)。B4.清除串件表中的待機(jī)任務(wù)ID、待機(jī)標(biāo)記模式和標(biāo)記條件。B5.使執(zhí)行系統(tǒng)調(diào)用的任務(wù)的任務(wù)狀態(tài)從RUN狀態(tài)轉(zhuǎn)換到READY狀態(tài)。另外,進(jìn)行 RUN-任務(wù)的選擇。當(dāng)執(zhí)行設(shè)定事件系統(tǒng)調(diào)用時(shí),RTOS從多個(gè)WAIT-任務(wù)中選擇READY-任務(wù)的策略如下。1.所選擇的任務(wù)應(yīng)該是WAIT-任務(wù)(第一條件)。2.所選擇的任務(wù)應(yīng)該是WAIT-任務(wù)中以指定事件為待機(jī)事件的任務(wù)(第二條件)。3.所選擇的任務(wù)應(yīng)該是對(duì)待機(jī)標(biāo)記模式、當(dāng)前標(biāo)記模式和標(biāo)記條件進(jìn)行比較, WAIT解除條件滿足的任務(wù)(第三條件)。這三個(gè)條件統(tǒng)稱為“事件待機(jī)解除條件”。[2]由本實(shí)施例的硬件RTOS所進(jìn)行的事件處理當(dāng)任務(wù)處理裝置100執(zhí)行等待事件系統(tǒng)調(diào)用以及執(zhí)行設(shè)定事件系統(tǒng)調(diào)用時(shí),RTOS 執(zhí)行如下處理。內(nèi)置于任務(wù)處理裝置100的信號(hào)量表212對(duì)應(yīng)存儲(chǔ)事件ID和當(dāng)前標(biāo)記模式。待機(jī)任務(wù)ID和待機(jī)標(biāo)記模式等信息,存儲(chǔ)在狀態(tài)存儲(chǔ)單元220中。<等待事件系統(tǒng)調(diào)用的執(zhí)行>Al.任務(wù)切換電路210從事件表214中讀出當(dāng)前標(biāo)記模式。A2.任務(wù)切換電路210根據(jù)標(biāo)記條件比較當(dāng)前標(biāo)記模式和待機(jī)標(biāo)記模式,以判定 WAIT解除條件是否滿足。(當(dāng)WAIT解除條件滿足時(shí))A3.在執(zhí)行系統(tǒng)調(diào)用的任務(wù)的任務(wù)狀態(tài)寄存器258中設(shè)定“READY”。(當(dāng)WAIT解除條件不滿足時(shí))A3.任務(wù)切換電路210在執(zhí)行系統(tǒng)調(diào)用的任務(wù)的任務(wù)狀態(tài)寄存器258中設(shè)定 “WAIT”,在待機(jī)理由寄存器沈2中設(shè)定“事件等待”,在事件ID寄存器沈6中設(shè)定待機(jī)事件的事件ID,在待機(jī)標(biāo)記寄存器268中設(shè)定待機(jī)標(biāo)記模式,以及在標(biāo)記條件寄存器270中設(shè)定標(biāo)記條件。<設(shè)定事件系統(tǒng)調(diào)用的執(zhí)行>Bi.任務(wù)切換電路210從事件表214中讀出當(dāng)前標(biāo)記模式,并且將系統(tǒng)調(diào)用中指定的事件的事件ID輸入給事件選擇電路236。B2.任務(wù)切換電路210對(duì)設(shè)定標(biāo)記模式和來自事件表214的當(dāng)前標(biāo)記模式進(jìn)行邏
輯或運(yùn)算。B3.事件選擇電路236根據(jù)所輸入的事件ID選擇滿足事件待機(jī)條件的任務(wù)。此時(shí),也可以不考慮任務(wù)優(yōu)先級(jí)和WAIT經(jīng)過時(shí)間來選擇多個(gè)任務(wù)。(當(dāng)存在滿足事件待機(jī)解除條件的任務(wù)時(shí))B4.任務(wù)切換電路210在事件等待任務(wù)的任務(wù)狀態(tài)寄存器258中設(shè)定“READY”,清除事件ID寄存器沈6、待機(jī)標(biāo)記寄存器沈8、和標(biāo)記條件寄存器270。B5.使執(zhí)行系統(tǒng)調(diào)用的任務(wù)的任務(wù)狀態(tài)從RUN狀態(tài)轉(zhuǎn)換到READY狀態(tài)。
27
(當(dāng)不存在滿足事件待機(jī)解除條件的任務(wù)時(shí))B4.任務(wù)切換電路210使執(zhí)行系統(tǒng)調(diào)用的任務(wù)的任務(wù)狀態(tài)從RUN狀態(tài)轉(zhuǎn)換到 READY狀態(tài)。[超時(shí)處理]當(dāng)WAIT解除條件滿足時(shí),轉(zhuǎn)換到WAIT狀態(tài)的任務(wù)轉(zhuǎn)換到READY狀態(tài)。但是,如果因?yàn)槟撤N外因或應(yīng)用程序故障而阻礙WAIT解除條件滿足時(shí),該任務(wù)將不能從WAIT狀態(tài)離開。因此,通常在任務(wù)轉(zhuǎn)換到WAIT狀態(tài)時(shí)設(shè)定超時(shí)值。超時(shí)值定期遞減,當(dāng)變成零時(shí),即使 WAIT解除條件不滿足,任務(wù)也從WAIT狀態(tài)轉(zhuǎn)換到READY狀態(tài),即防止任務(wù)在WAIT狀態(tài)停留的時(shí)間超過超時(shí)值。[1]由普通軟件RTOS所進(jìn)行的超時(shí)處理對(duì)于普通軟件RT0S,在處于WAIT狀態(tài)的任務(wù)的TCB中設(shè)定超時(shí)值,該超時(shí)值周期性地遞減。RTOS周期性地向CPU處理申請(qǐng)中斷,以檢查全部TCB,以及檢測(cè)出超時(shí)值到達(dá)0 的WAIT-任務(wù)。當(dāng)檢測(cè)出這種任務(wù)時(shí),RTOS使該任務(wù)的任務(wù)狀態(tài)從WAIT狀態(tài)轉(zhuǎn)換到READY 狀態(tài)。[2]由本實(shí)施例的硬件RTOS所進(jìn)行的超時(shí)處理另一方面,在本實(shí)施例中,任務(wù)切換電路210周期性地遞減各超時(shí)計(jì)數(shù)器274的超時(shí)值。當(dāng)執(zhí)行WAIT系列系統(tǒng)調(diào)用時(shí),超時(shí)值設(shè)定為參數(shù)。任務(wù)切換電路210在執(zhí)行該系統(tǒng)調(diào)用的任務(wù)的超時(shí)計(jì)數(shù)器274中設(shè)定超時(shí)值。由于超時(shí)值的遞減處理不需要CPU 150參與,因此任務(wù)切換電路210能夠不依賴于任務(wù)執(zhí)行處理進(jìn)行超時(shí)值的更新。因此,即使在CPU 150執(zhí)行任務(wù)的過程中,任務(wù)控制電路200也能夠自動(dòng)地更新超時(shí)值。由于狀態(tài)數(shù)據(jù)不斷地被輸入到超時(shí)檢測(cè)電路238中,因此超時(shí)檢測(cè)電路238能夠在更新超時(shí)值的同時(shí),檢測(cè)出超時(shí)值到達(dá)0的任務(wù)。超時(shí)檢測(cè)電路238輸出檢測(cè)出的這種任務(wù)的任務(wù)ID。當(dāng)從超時(shí)檢測(cè)電路238獲得該任務(wù)ID時(shí),任務(wù)切換電路210便確定發(fā)生了超時(shí),隨后申請(qǐng)HC以停止提供CPU時(shí)鐘。任務(wù)控制電路200使發(fā)生超時(shí)的WAIT-任務(wù)轉(zhuǎn)換到READY狀態(tài),并且使RUN-任務(wù)轉(zhuǎn)換到READY狀態(tài)。任務(wù)切換電路210從READY-任務(wù)中選擇下一個(gè)應(yīng)執(zhí)行的任務(wù)。另外,任務(wù)切換電路210重啟已發(fā)生超時(shí)的任務(wù)的定時(shí)器252,以測(cè)量READY經(jīng)過時(shí)間。根據(jù)這種處理方法,在任務(wù)執(zhí)行過程中,即CPU時(shí)鐘運(yùn)行過程中發(fā)生超時(shí)時(shí),能夠通過立即向CPU 150申請(qǐng)中斷,來執(zhí)行任務(wù)切換。另外,在任務(wù)執(zhí)行過程中,任務(wù)切換電路 210能夠不依賴CPU 150的處理能力獨(dú)立地執(zhí)行超時(shí)值的更新處理。[作為有限狀態(tài)機(jī)的任務(wù)切換電路210]圖15是任務(wù)切換電路210的狀態(tài)轉(zhuǎn)換圖。在初始化處理(Al)之前,全部任務(wù)都處于IDLE狀態(tài)。當(dāng)初始化處理完成時(shí)(SlO), 某一個(gè)任務(wù)成為RUN-任務(wù),任務(wù)切換電路210處于任務(wù)執(zhí)行狀態(tài)(A2)。當(dāng)檢測(cè)出中斷請(qǐng)求信號(hào)時(shí)(S12),特殊任務(wù)成為RUN-任務(wù),執(zhí)行中斷處理(A3)。當(dāng)中斷處理完成時(shí)(S14),任務(wù)切換電路210從常規(guī)任務(wù)中選擇RUN-任務(wù),并轉(zhuǎn)換到A2。另外,在任務(wù)執(zhí)行過程中(A2),執(zhí)行系統(tǒng)調(diào)用時(shí)(S16),執(zhí)行系統(tǒng)調(diào)用處理(A4)。 在未發(fā)生任務(wù)切換即RUN-任務(wù)切換的情況下(S18),任務(wù)切換電路210返回到A2。另一方面,在由于系統(tǒng)調(diào)用處理(A4)而發(fā)生任務(wù)切換的情況下(S20),任務(wù)切換電路210根據(jù)執(zhí)行
28選擇電路232的輸出來進(jìn)行RUN-任務(wù)的選擇腳。當(dāng)任務(wù)切換完成時(shí)(S22),處理狀態(tài)轉(zhuǎn)換到A2。最后,附帶說明一下只安裝作為任務(wù)處理裝置100的主要部件的保存電路120和任務(wù)控制電路200中的一個(gè)的情況。[未配置任務(wù)控制電路200的類型的任務(wù)處理裝置100]圖16是圖5所示的任務(wù)處理裝置100中未配置任務(wù)控制電路200的任務(wù)處理裝置100的電路圖。代替配置任務(wù)控制電路200,追加有寄存器切換控制電路322和處理數(shù)據(jù)存儲(chǔ)單元320。由于未配置任務(wù)控制電路200,因此任務(wù)調(diào)度功能由軟件RTOS來實(shí)現(xiàn)。因而,RTOS 在任務(wù)切換時(shí),需要暫時(shí)取得CPU 150的使用權(quán)。處理數(shù)據(jù)存儲(chǔ)單元320通常存儲(chǔ)用于RTOS 的處理數(shù)據(jù)。當(dāng)RTOS取得CPU 150的使用權(quán)時(shí),處理數(shù)據(jù)存儲(chǔ)單元320調(diào)換存儲(chǔ)在處理數(shù)據(jù)存儲(chǔ)單元320中的RTOS用處理數(shù)據(jù)和存儲(chǔ)在特殊寄存器156中的任務(wù)用處理數(shù)據(jù)。以下以從任務(wù)A向任務(wù)B切換來說明該處理過程。Al.當(dāng)任務(wù)A執(zhí)行系統(tǒng)調(diào)用時(shí),將系統(tǒng)調(diào)用中的變量以及系統(tǒng)調(diào)用ID記錄在某些通用寄存器158內(nèi)。A2.寄存器切換控制電路322將任務(wù)A的處理數(shù)據(jù)移動(dòng)到處理數(shù)據(jù)存儲(chǔ)單元320 中,并將處理數(shù)據(jù)存儲(chǔ)單元320中的RTOS用處理數(shù)據(jù)加載到處理寄存器組巧4中。在該階段,RTOS取得CPU 150的使用權(quán)。A3.寄存器切換控制電路322向保存寄存器IlOa輸入寫入信號(hào),以將處理數(shù)據(jù)存儲(chǔ)單元320中存儲(chǔ)的任務(wù)A用處理數(shù)據(jù)保存到保存寄存器110中。A4. RTOS根據(jù)記錄在通用寄存器158中的系統(tǒng)調(diào)用變量和ID,執(zhí)行與系統(tǒng)調(diào)用相對(duì)應(yīng)的處理。另外,將任務(wù)A的TCB中的任務(wù)狀態(tài)數(shù)據(jù)設(shè)定為“READY”,并向任務(wù)就緒表中追加任務(wù)A的TCB。Bi.接著,RTOS按照前述的RUN-任務(wù)選擇條件,選擇RUN-任務(wù),這里是選擇任務(wù) B0B2. RTOS指示寄存器切換控制電路322將指定任務(wù)B的任務(wù)選擇信號(hào)輸入到加載選擇電路112中。由此,處理數(shù)據(jù)從保存寄存器IlOb移動(dòng)到處理數(shù)據(jù)存儲(chǔ)單元320中。B3.寄存器切換控制電路322調(diào)換處理數(shù)據(jù)存儲(chǔ)單元320中的任務(wù)B用處理數(shù)據(jù)和處理寄存器組154中的RTOS用處理數(shù)據(jù)。由此,任務(wù)B取得CPU 150的使用權(quán)。根據(jù)這種處理方法,與配置任務(wù)控制電路200的圖5所示的任務(wù)處理裝置100相比,能夠使任務(wù)處理裝置100整體電路小型化。RTOS是以軟件實(shí)現(xiàn)的,但是處理數(shù)據(jù)的加載 /保存是能夠由來自寄存器切換控制電路322的信號(hào)來硬件控制的。如果將分別連接處理寄存器組154、處理數(shù)據(jù)存儲(chǔ)單元320、加載選擇電路112、和保存寄存器110的總線設(shè)定為能夠并行傳輸處理數(shù)據(jù)的位數(shù),則與將處理數(shù)據(jù)保存到TCB中和從TCB加載處理數(shù)據(jù)相比, 能夠?qū)崿F(xiàn)更高速的任務(wù)切換。[未配置保存電路120的類型的任務(wù)處理裝置100]圖17是圖5所示的任務(wù)處理裝置100中未配置保存電路120的任務(wù)處理裝置100 的電路圖。代替配置保存電路120,追加有中斷接口電路324。由于未配置保存電路120,因此
29處理數(shù)據(jù)保存到存儲(chǔ)器的TCB中。處理數(shù)據(jù)的保存/加載由基于軟件的RTOS來實(shí)現(xiàn)。因而,在任務(wù)切換時(shí),RTOS需要暫時(shí)取得CPU 150的使用權(quán)。以下以從任務(wù)A向任務(wù)B切換來說明該處理過程。當(dāng)通過執(zhí)行系統(tǒng)調(diào)用來啟動(dòng)任務(wù)切換時(shí),首先軟件RTOS將任務(wù)A的處理數(shù)據(jù)保存到任務(wù)A的TCB中。而且,將RTOS用處理數(shù)據(jù)加載到處理寄存器組154中。此時(shí)的處理方法與參照?qǐng)D3說明的內(nèi)容相似。軟件RTOS向中斷接口電路3M中寫入系統(tǒng)調(diào)用的參數(shù)。執(zhí)行控制電路152使CPU 150的CPU時(shí)鐘停止。中斷接口電路3 使任務(wù)控制電路200執(zhí)行任務(wù)切換。任務(wù)切換電路210,首先將任務(wù)A的任務(wù)狀態(tài)寄存器258設(shè)定為READY,并根據(jù)來自任務(wù)選擇電路230 的輸出選擇作為下一個(gè)RUN-任務(wù)的任務(wù)B。任務(wù)切換電路210指示中斷接口電路3 加載任務(wù)B的處理數(shù)據(jù)。這時(shí),中斷接口電路3M使執(zhí)行控制電路152恢復(fù)CPU時(shí)鐘。另外,中斷接口電路3M通知軟件RTOS已經(jīng)選擇了任務(wù)B。軟件RTOS訪問任務(wù)B的TCB,以將任務(wù) B的處理數(shù)據(jù)加載到處理寄存器組154中。根據(jù)這種處理方法,與配置保存電路120的圖5所示任務(wù)處理裝置100相比,能夠使任務(wù)處理裝置100整體電路小型化。RTOS功能的一部分是以軟件實(shí)現(xiàn)的,但是任務(wù)選擇處理由任務(wù)控制電路200來實(shí)現(xiàn)。與參照?qǐng)D2以及圖3說明的軟件RTOS不同,圖16以及圖17所示的任務(wù)處理裝置 100,能夠任意地將RTOS功能的一部分硬件化。如參照?qǐng)D16所述,由于配置了保存電路120, 而無需訪問用于處理數(shù)據(jù)保存/加載的TCB。因此,能夠通過寄存器切換控制電路322來執(zhí)行處理數(shù)據(jù)的保存/加載處理。另外,如參照?qǐng)D17所述,由于配置了任務(wù)控制電路200,因此軟件RTOS能夠?qū)⑷蝿?wù)選擇功能轉(zhuǎn)移給任務(wù)控制電路200。如參照?qǐng)D5所述,在配置了保存電路120和任務(wù)控制電路200的任務(wù)處理裝置100 的情況下,能夠?qū)TOS的任務(wù)調(diào)度功能完全硬件化。由于在任務(wù)轉(zhuǎn)換時(shí)沒有必要訪問存儲(chǔ)器中的TCB,因此使任務(wù)切換處理的速度進(jìn)一步提高。本發(fā)明人等的實(shí)驗(yàn)表明與參照?qǐng)D3 說明的普通軟件RTOS相比,本實(shí)施例中的任務(wù)處理裝置100以約100倍的速度進(jìn)行操作。以上,參照實(shí)施例說明了本發(fā)明。這些實(shí)施例只是示例,本領(lǐng)域技術(shù)人員能夠理解,能夠?qū)@些結(jié)構(gòu)要素、處理流程的組合進(jìn)行各種變型,而這些變型也屬于本發(fā)明的范圍。權(quán)利要求中所述的選擇電路的功能,由本實(shí)施例中的加載選擇電路112來實(shí)現(xiàn)。除此之外,本領(lǐng)域技術(shù)人員還能夠理解,由權(quán)利要求中所述的各結(jié)構(gòu)要素實(shí)現(xiàn)的其他功能,也能夠由本實(shí)施例中所述的各功能模塊單獨(dú)或者它們的結(jié)合來實(shí)現(xiàn)。能夠通過以上實(shí)施例以及其變型例包括的本發(fā)明的各種方式,已經(jīng)以包括權(quán)利要求范圍中所述內(nèi)容的形式,在下面列出。參照任務(wù)控制電路200的特征,理解以下發(fā)明。Cl. 一種任務(wù)處理裝置,該任務(wù)處理裝置包括處理寄存器,用于暫時(shí)存儲(chǔ)用于執(zhí)行任務(wù)的數(shù)據(jù);執(zhí)行控制電路,用于將命令 (instruction)和操作數(shù)從存儲(chǔ)器加載到所述處理寄存器中,并按照所述處理寄存器中的命令和操作數(shù)執(zhí)行任務(wù);多個(gè)狀態(tài)寄存器,用于存儲(chǔ)用于任務(wù)調(diào)度的每個(gè)任務(wù)的狀態(tài)數(shù)據(jù),分別與多個(gè)任務(wù)相對(duì)應(yīng);
30
任務(wù)切換電路,用于執(zhí)行任務(wù)的切換;以及任務(wù)選擇電路,用于以從多個(gè)所述狀態(tài)寄存器中并行輸出的狀態(tài)數(shù)據(jù)為輸入,并根據(jù)規(guī)定的選擇條件來選擇任務(wù);其中當(dāng)所述執(zhí)行控制電路執(zhí)行規(guī)定的系統(tǒng)調(diào)用命令時(shí),將規(guī)定的系統(tǒng)調(diào)用信號(hào)發(fā)送給所述任務(wù)切換電路;所述任務(wù)選擇電路不依賴于是否有所述規(guī)定的系統(tǒng)調(diào)用命令,從表示能夠執(zhí)行和等待執(zhí)行的處于READY (就緒)狀態(tài)的任務(wù)中,選擇成為執(zhí)行對(duì)象的任務(wù);所述任務(wù)切換電路通過根據(jù)接收到所述系統(tǒng)調(diào)用信號(hào)時(shí)來自所述任務(wù)選擇電路的輸出,選擇成為下一個(gè)執(zhí)行對(duì)象的任務(wù),將所述處理寄存器中的數(shù)據(jù)保存到規(guī)定的存儲(chǔ)區(qū)域,并將與執(zhí)行中的任務(wù)對(duì)應(yīng)的所述狀態(tài)寄存器中的狀態(tài)數(shù)據(jù)從表示任務(wù)執(zhí)行中的 RUN (運(yùn)行)狀態(tài)更新為READY狀態(tài),將與所選擇的任務(wù)對(duì)應(yīng)的并保存在所述存儲(chǔ)區(qū)域中的數(shù)據(jù)加載到所述處理寄存器中,并將與該選擇的任務(wù)對(duì)應(yīng)的所述狀態(tài)寄存器中的狀態(tài)數(shù)據(jù)從READY狀態(tài)更新為RUN狀態(tài),來切換成為執(zhí)行對(duì)象的任務(wù)。C2.根據(jù)Cl所述的任務(wù)處理裝置,其中,所述任務(wù)選擇電路內(nèi)置有多階段連接的比較電路;第1階段的比較電路根據(jù)所述規(guī)定的選擇條件來比較兩個(gè)以上任務(wù)的狀態(tài)數(shù)據(jù), 以將某一個(gè)任務(wù)的狀態(tài)數(shù)據(jù)輸出給第2階段的比較電路;第n(n是2以上的自然數(shù))階段的比較電路根據(jù)所述規(guī)定的選擇條件來比較第 (n-1)階段的多個(gè)比較電路所輸出的狀態(tài)數(shù)據(jù),以輸出某一個(gè)任務(wù)的狀態(tài)數(shù)據(jù),從而選擇最后階段的比較電路所指定的任務(wù)作為執(zhí)行對(duì)象。C3.根據(jù)C2所述的任務(wù)處理裝置,其中,第k(k是自然數(shù))階段的比較電路在所輸入的狀態(tài)數(shù)據(jù)都不滿足所述規(guī)定的選擇條件時(shí),不輸出任何任務(wù)的狀態(tài)數(shù)據(jù)。C4.根據(jù)Cl所述的任務(wù)處理裝置,其中,所述狀態(tài)寄存器將任務(wù)優(yōu)先級(jí)作為狀態(tài)數(shù)據(jù)的一部分存儲(chǔ);當(dāng)任務(wù)切換時(shí)有多個(gè)處于READY狀態(tài)的任務(wù)時(shí),所述任務(wù)選擇電路選擇這些任務(wù)中任務(wù)優(yōu)先級(jí)最高的任務(wù)作為執(zhí)行對(duì)象。C5.根據(jù)C4所述的任務(wù)處理裝置,其中,當(dāng)任務(wù)切換時(shí)存在多個(gè)處于READY狀態(tài)的任務(wù)、且這些任務(wù)中任務(wù)優(yōu)先級(jí)最高的任務(wù)也存在多個(gè)時(shí),任務(wù)選擇電路選擇轉(zhuǎn)換為READY 狀態(tài)后經(jīng)過時(shí)間最長的任務(wù)作為執(zhí)行對(duì)象。C6.根據(jù)C5所述的任務(wù)處理裝置,該任務(wù)處理裝置還包括分別與多個(gè)任務(wù)相對(duì)應(yīng)的多個(gè)定時(shí)器;其中當(dāng)所述任務(wù)切換電路設(shè)定任務(wù)為READY狀態(tài)時(shí),所述任務(wù)切換電路通過設(shè)置與該任務(wù)對(duì)應(yīng)的定時(shí)器,開始測(cè)量經(jīng)過時(shí)間。C7.根據(jù)Cl所述的任務(wù)處理裝置,該任務(wù)處理裝置還包括用于對(duì)應(yīng)存儲(chǔ)信號(hào)量ID 和信號(hào)量計(jì)數(shù)器的信號(hào)量信息存儲(chǔ)單元;其中在所述執(zhí)行控制電路執(zhí)行指定信號(hào)量ID的作為用于請(qǐng)求信號(hào)量的系統(tǒng)調(diào)用的等待信號(hào)量命令的情況下,所述任務(wù)切換電路在所指定的信號(hào)量的信號(hào)量計(jì)數(shù)器是1以上時(shí),使該信號(hào)量計(jì)數(shù)器遞減,并將執(zhí)行所述等待信號(hào)量命令的任務(wù)的狀態(tài)數(shù)據(jù)更新為READY狀態(tài),以及,當(dāng)該
31信號(hào)量計(jì)數(shù)器是0以下時(shí),所述任務(wù)切換電路將執(zhí)行所述等待信號(hào)量命令的任務(wù)的狀態(tài)數(shù)據(jù)設(shè)定為表示在滿足規(guī)定條件之前不能執(zhí)行該任務(wù)的WAIT (等待)狀態(tài),并將所述所指定的信號(hào)量ID設(shè)定在對(duì)應(yīng)的所述狀態(tài)寄存器中,表示以該ID作為該任務(wù)的WAIT狀態(tài)解除條件;以及在所述執(zhí)行控制電路執(zhí)行指定信號(hào)量ID的作為用于釋放信號(hào)量的系統(tǒng)調(diào)用的釋放信號(hào)量命令的情況下,所述任務(wù)選擇電路按照規(guī)定的選擇條件,從處于等待具有指定信號(hào)量ID的信號(hào)量的WAIT狀態(tài)的任務(wù)中選擇某一個(gè)任務(wù),并且當(dāng)所述任務(wù)選擇電路選擇出某一個(gè)任務(wù)時(shí),所述任務(wù)切換電路更新該所選任務(wù)的狀態(tài)數(shù)據(jù)為READY狀態(tài),而當(dāng)沒有選擇出任何任務(wù)時(shí),使所述所指定的信號(hào)量的信號(hào)量計(jì)數(shù)器遞增。C8.根據(jù)Cl所述的任務(wù)處理裝置,該任務(wù)處理裝置還包括用于對(duì)應(yīng)存儲(chǔ)事件ID和第一標(biāo)記模式的事件信息存儲(chǔ)單元;其中在所述執(zhí)行控制電路執(zhí)行指定事件ID和第二標(biāo)記模式的作為用于等待事件設(shè)定的系統(tǒng)調(diào)用的等待事件命令的情況下,當(dāng)通過對(duì)與所指定的事件對(duì)應(yīng)的第一標(biāo)記模式和第二標(biāo)記模式進(jìn)行運(yùn)算操作,滿足規(guī)定的運(yùn)算條件時(shí),所述任務(wù)切換電路將執(zhí)行所述等待事件命令的任務(wù)的狀態(tài)數(shù)據(jù)更新為READY狀態(tài),以及,當(dāng)不滿足所述規(guī)定的運(yùn)算條件時(shí),所述任務(wù)切換電路將執(zhí)行所述等待事件命令的任務(wù)設(shè)定為表示在滿足規(guī)定的條件之前不能執(zhí)行該任務(wù)的狀態(tài)的WAIT狀態(tài), 并且將所指定的事件ID和第二標(biāo)記模式設(shè)定在對(duì)應(yīng)的所述狀態(tài)寄存器中,表示以該事件 ID和該第二標(biāo)記模式作為該任務(wù)的WAIT狀態(tài)解除條件;以及在所述執(zhí)行控制電路執(zhí)行指定事件ID和第三標(biāo)記模式的作為用于設(shè)定第一標(biāo)記模式的系統(tǒng)調(diào)用的設(shè)定事件命令的情況下,所述任務(wù)切換電路對(duì)與所指定的事件對(duì)應(yīng)的第三標(biāo)記模式和第一標(biāo)記模式進(jìn)行邏輯或運(yùn)算;所述任務(wù)選擇電路選擇處于等待該指定的事件ID的事件的WAIT狀態(tài)的任務(wù);當(dāng)所述任務(wù)選擇電路選擇出某一個(gè)任務(wù)時(shí),所述任務(wù)切換電路在存儲(chǔ)于所選擇出的任務(wù)的所述狀態(tài)寄存器中的第二標(biāo)記模式和第一標(biāo)記模式之間滿足規(guī)定的運(yùn)算條件的情況下,將所選擇的任務(wù)從WAIT狀態(tài)更新為READY狀態(tài)。C9.根據(jù)Cl所述的任務(wù)處理裝置,其中,所述狀態(tài)寄存器將超時(shí)計(jì)數(shù)器作為狀態(tài)數(shù)據(jù)的一部分存儲(chǔ);在所述執(zhí)行控制電路執(zhí)行附帶超時(shí)條件的系統(tǒng)調(diào)用命令的情況下,所述任務(wù)切換電路將執(zhí)行所述附帶超時(shí)條件的系統(tǒng)調(diào)用命令的任務(wù)的狀態(tài)數(shù)據(jù)更新為WAIT狀態(tài),并且開始更新超時(shí)計(jì)數(shù)器;所述任務(wù)選擇電路檢測(cè)處于WAIT狀態(tài)中已超時(shí)的任務(wù);所述任務(wù)切換電路將所述已超時(shí)的任務(wù)的狀態(tài)數(shù)據(jù)從WAIT狀態(tài)更新為READY狀態(tài)。C10.根據(jù)Cl所述的任務(wù)處理裝置,該任務(wù)處理裝置還包括用于對(duì)應(yīng)存儲(chǔ)互斥ID 和互斥獲取狀態(tài)的互斥信息存儲(chǔ)單元;其中
32
在所述執(zhí)行控制電路執(zhí)行指定互斥ID的作為用于請(qǐng)求互斥的系統(tǒng)調(diào)用命令的等待互斥命令的情況下,所述任務(wù)切換電路在所指定的互斥原來是非占用狀態(tài)時(shí),設(shè)定該所指定的互斥為占用狀態(tài),并將執(zhí)行所述等待互斥命令的任務(wù)的狀態(tài)數(shù)據(jù)更新為READY狀態(tài),以及,在該所指定的互斥是占用狀態(tài)時(shí),將執(zhí)行所述等待互斥命令的任務(wù)設(shè)定為表示在滿足規(guī)定條件之前不能執(zhí)行該任務(wù)的狀態(tài)的WAIT狀態(tài),并且將所述所指定的互斥ID設(shè)定在對(duì)應(yīng)的所述狀態(tài)寄存器中,表示以所述互斥ID作為該任務(wù)的WAIT狀態(tài)解除條件;以及當(dāng)所述執(zhí)行控制電路執(zhí)行指示互斥ID的作為用于釋放互斥的系統(tǒng)調(diào)用命令的釋放互斥命令的情況下,所述任務(wù)選擇電路按照規(guī)定的選擇條件,選擇處于等待所指定的互斥ID的互斥的WAIT狀態(tài)的任務(wù)中的某一個(gè)任務(wù);所述任務(wù)切換電路將所指定的互斥設(shè)定為非占用狀態(tài),當(dāng)所述任務(wù)選擇電路選擇出某一個(gè)任務(wù)時(shí),將所選擇的任務(wù)的狀態(tài)數(shù)據(jù)更新為READY狀態(tài)。Cll.根據(jù)Cl所述的任務(wù)處理裝置,該任務(wù)處理裝置還包括多個(gè)保存寄存器,用于在所述處理寄存器中保存數(shù)據(jù),分別與多個(gè)任務(wù)相對(duì)應(yīng);其中,當(dāng)所述任務(wù)切換電路接收到所述規(guī)定的系統(tǒng)調(diào)用信號(hào)時(shí),將所述處理寄存器中的數(shù)據(jù)保存到與執(zhí)行中的任務(wù)對(duì)應(yīng)的所述保存寄存器中,并將與通過所述任務(wù)選擇電路所選擇的任務(wù)對(duì)應(yīng)的所述保存寄存器中的數(shù)據(jù)加載到所述處理寄存器中。工業(yè)實(shí)用性根據(jù)本發(fā)明,能夠在多任務(wù)處理中實(shí)現(xiàn)更高效的任務(wù)執(zhí)行控制。
3權(quán)利要求
1.一種任務(wù)處理裝置,該任務(wù)處理裝置包括處理寄存器,用于暫時(shí)存儲(chǔ)用于執(zhí)行任務(wù)的數(shù)據(jù);執(zhí)行控制電路,用于將命令和操作數(shù)從存儲(chǔ)器加載到所述處理寄存器中,并按照所述處理寄存器中的命令和操作數(shù)執(zhí)行任務(wù);多個(gè)狀態(tài)寄存器,用于存儲(chǔ)用于任務(wù)調(diào)度的每個(gè)任務(wù)的狀態(tài)數(shù)據(jù),分別與多個(gè)任務(wù)相對(duì)應(yīng);任務(wù)切換電路,用于執(zhí)行任務(wù)的切換;任務(wù)選擇電路,用于以從多個(gè)所述狀態(tài)寄存器中并行輸出的狀態(tài)數(shù)據(jù)為輸入,并根據(jù)規(guī)定的選擇條件來選擇任務(wù);其中當(dāng)所述執(zhí)行控制電路執(zhí)行規(guī)定的系統(tǒng)調(diào)用命令時(shí),將規(guī)定的系統(tǒng)調(diào)用信號(hào)發(fā)送給所述任務(wù)切換電路;所述任務(wù)選擇電路不依賴于是否有所述規(guī)定的系統(tǒng)調(diào)用命令,從表示能夠執(zhí)行和等待執(zhí)行的處于就緒狀態(tài)的任務(wù)中,選擇成為執(zhí)行對(duì)象的任務(wù);以及所述任務(wù)切換電路通過根據(jù)接收到所述系統(tǒng)調(diào)用信號(hào)時(shí)來自所述任務(wù)選擇電路的輸出,選擇成為下一個(gè)執(zhí)行對(duì)象的任務(wù),并將與執(zhí)行中的任務(wù)對(duì)應(yīng)的所述狀態(tài)寄存器中的狀態(tài)數(shù)據(jù)從表示任務(wù)執(zhí)行中的運(yùn)行狀態(tài)更新為其他狀態(tài),并將與該選擇的任務(wù)對(duì)應(yīng)的所述狀態(tài)寄存器中的狀態(tài)數(shù)據(jù)從就緒狀態(tài)更新為運(yùn)行狀態(tài),來切換成為執(zhí)行對(duì)象的任務(wù)。
2.根據(jù)權(quán)利要求1所述的任務(wù)處理裝置,其中,所述任務(wù)選擇電路內(nèi)置有多階段連接的比較電路;第1階段的比較電路根據(jù)所述規(guī)定的選擇條件來比較兩個(gè)以上任務(wù)的狀態(tài)數(shù)據(jù),以將某一個(gè)任務(wù)的狀態(tài)數(shù)據(jù)輸出給第2階段的比較電路;第η階段的比較電路根據(jù)所述規(guī)定的選擇條件來比較第η-1階段的多個(gè)比較電路所輸出的狀態(tài)數(shù)據(jù),其中η是2以上的自然數(shù),以輸出某一個(gè)任務(wù)的狀態(tài)數(shù)據(jù),從而選擇最后階段的比較電路所指定的任務(wù)作為執(zhí)行對(duì)象。
3.根據(jù)權(quán)利要求2所述的任務(wù)處理裝置,其中,第k階段的比較電路在所輸入的狀態(tài)數(shù)據(jù)都不滿足所述規(guī)定的選擇條件時(shí),不輸出任何任務(wù)的狀態(tài)數(shù)據(jù),其中k是自然數(shù)。
4.根據(jù)權(quán)利要求1所述的任務(wù)處理裝置,其中,所述狀態(tài)寄存器將任務(wù)優(yōu)先級(jí)作為狀態(tài)數(shù)據(jù)的一部分存儲(chǔ);當(dāng)任務(wù)切換時(shí)有多個(gè)處于就緒狀態(tài)的任務(wù)時(shí),所述任務(wù)選擇電路選擇這些任務(wù)中任務(wù)優(yōu)先級(jí)最高的任務(wù)作為執(zhí)行對(duì)象。
5.根據(jù)權(quán)利要求4所述的任務(wù)處理裝置,其中,當(dāng)任務(wù)切換時(shí)存在多個(gè)處于就緒狀態(tài)的任務(wù)、且這些任務(wù)中任務(wù)優(yōu)先級(jí)最高的任務(wù)也存在多個(gè)時(shí),任務(wù)選擇電路選擇轉(zhuǎn)換為就緒狀態(tài)后經(jīng)過時(shí)間最長的任務(wù)作為執(zhí)行對(duì)象。
6.根據(jù)權(quán)利要求5所述的任務(wù)處理裝置,該任務(wù)處理裝置還包括分別與多個(gè)任務(wù)相對(duì)應(yīng)的多個(gè)定時(shí)器;其中當(dāng)所述任務(wù)切換電路設(shè)定任務(wù)為就緒狀態(tài)時(shí),所述任務(wù)切換電路通過設(shè)置與該任務(wù)對(duì)應(yīng)的定時(shí)器,開始測(cè)量經(jīng)過時(shí)間。
7.根據(jù)權(quán)利要求1所述的任務(wù)處理裝置,該任務(wù)處理裝置還包括用于對(duì)應(yīng)存儲(chǔ)信號(hào)量 ID和信號(hào)量計(jì)數(shù)器的信號(hào)量信息存儲(chǔ)單元;其中在所述執(zhí)行控制電路執(zhí)行指定信號(hào)量ID的作為用于請(qǐng)求信號(hào)量的系統(tǒng)調(diào)用的等待信號(hào)量命令的情況下,所述任務(wù)切換電路在所指定的信號(hào)量的信號(hào)量計(jì)數(shù)器是1以上時(shí),使該信號(hào)量計(jì)數(shù)器遞減,并將執(zhí)行所述等待信號(hào)量命令的任務(wù)的狀態(tài)數(shù)據(jù)更新為就緒狀態(tài),以及,當(dāng)該信號(hào)量計(jì)數(shù)器是0以下時(shí),所述任務(wù)切換電路將執(zhí)行所述等待信號(hào)量命令的任務(wù)的狀態(tài)數(shù)據(jù)設(shè)定為表示在滿足規(guī)定條件之前不能執(zhí)行該任務(wù)的等待狀態(tài),并將所述所指定的信號(hào)量ID設(shè)定在對(duì)應(yīng)的所述狀態(tài)寄存器中,表示以該ID作為該任務(wù)的等待狀態(tài)解除條件;以及在所述執(zhí)行控制電路執(zhí)行指定信號(hào)量ID的作為用于釋放信號(hào)量的系統(tǒng)調(diào)用的釋放信號(hào)量命令的情況下,所述任務(wù)選擇電路按照規(guī)定的選擇條件,從處于等待具有指定信號(hào)量ID的信號(hào)量的等待狀態(tài)的任務(wù)中選擇某一個(gè)任務(wù),并且當(dāng)所述任務(wù)選擇電路選擇出某一個(gè)任務(wù)時(shí),所述任務(wù)切換電路更新該所選任務(wù)的狀態(tài)數(shù)據(jù)為就緒狀態(tài),而當(dāng)沒有選擇出任何任務(wù)時(shí),使所述所指定的信號(hào)量的信號(hào)量計(jì)數(shù)器遞+飽+曰ο
8.根據(jù)權(quán)利要求1所述的任務(wù)處理裝置,該任務(wù)處理裝置還包括用于對(duì)應(yīng)存儲(chǔ)事件ID 和第一標(biāo)記模式的事件信息存儲(chǔ)單元;其中在所述執(zhí)行控制電路執(zhí)行指定事件ID和第二標(biāo)記模式的作為用于等待事件設(shè)定的系統(tǒng)調(diào)用的等待事件命令的情況下,當(dāng)通過對(duì)與所指定的事件對(duì)應(yīng)的第一標(biāo)記模式和第二標(biāo)記模式進(jìn)行運(yùn)算操作,滿足規(guī)定的運(yùn)算條件時(shí),所述任務(wù)切換電路將執(zhí)行所述等待事件命令的任務(wù)的狀態(tài)數(shù)據(jù)更新為就緒狀態(tài),以及,當(dāng)不滿足所述規(guī)定的運(yùn)算條件時(shí),所述任務(wù)切換電路將執(zhí)行所述等待事件命令的任務(wù)設(shè)定為表示在滿足規(guī)定的條件之前不能執(zhí)行該任務(wù)的狀態(tài)的等待狀態(tài),并且將所指定的事件ID和第二標(biāo)記模式設(shè)定在對(duì)應(yīng)的所述狀態(tài)寄存器中,表示以該事件ID和該第二標(biāo)記模式作為該任務(wù)的等待狀態(tài)解除條件;以及在所述執(zhí)行控制電路執(zhí)行指定事件ID和第三標(biāo)記模式的作為用于設(shè)定第一標(biāo)記模式的系統(tǒng)調(diào)用的設(shè)定事件命令的情況下,所述任務(wù)切換電路對(duì)與所指定的事件對(duì)應(yīng)的第三標(biāo)記模式和第一標(biāo)記模式進(jìn)行邏輯或運(yùn)算;所述任務(wù)選擇電路選擇處于等待該指定的事件ID的事件的等待狀態(tài)的任務(wù);當(dāng)所述任務(wù)選擇電路選擇出某一個(gè)任務(wù)時(shí),所述任務(wù)切換電路在存儲(chǔ)于所選擇出的任務(wù)的所述狀態(tài)寄存器中的第二標(biāo)記模式和第一標(biāo)記模式之間滿足規(guī)定的運(yùn)算條件的情況下,將所選擇的任務(wù)從等待狀態(tài)更新為就緒狀態(tài)。
9.根據(jù)權(quán)利要求1所述的任務(wù)處理裝置,其中,所述狀態(tài)寄存器將超時(shí)計(jì)數(shù)器作為狀態(tài)數(shù)據(jù)的一部分存儲(chǔ);在所述執(zhí)行控制電路執(zhí)行附帶超時(shí)條件的系統(tǒng)調(diào)用命令的情況下, 所述任務(wù)切換電路將執(zhí)行所述附帶超時(shí)條件的系統(tǒng)調(diào)用命令的任務(wù)的狀態(tài)數(shù)據(jù)更新為等待狀態(tài),并且開始更新超時(shí)計(jì)數(shù)器;所述任務(wù)選擇電路檢測(cè)處于等待狀態(tài)中已超時(shí)的任務(wù);以及所述任務(wù)切換電路將所述已超時(shí)的任務(wù)的狀態(tài)數(shù)據(jù)從等待狀態(tài)更新為就緒狀態(tài)。
10.根據(jù)權(quán)利要求1所述的任務(wù)處理裝置,該任務(wù)處理裝置還包括用于對(duì)應(yīng)存儲(chǔ)互斥ID和互斥獲取狀態(tài)的互斥信息存儲(chǔ)單元;其中在所述執(zhí)行控制電路執(zhí)行指定互斥ID的作為用于請(qǐng)求互斥的系統(tǒng)調(diào)用命令的等待互斥命令的情況下,所述任務(wù)切換電路在所指定的互斥原來是非占用狀態(tài)時(shí),設(shè)定該所指定的互斥為占用狀態(tài),并將執(zhí)行所述等待互斥命令的任務(wù)的狀態(tài)數(shù)據(jù)更新為就緒狀態(tài),以及,在該所指定的互斥是占用狀態(tài)時(shí),將執(zhí)行所述等待互斥命令的任務(wù)設(shè)定為表示在滿足規(guī)定條件之前不能執(zhí)行該任務(wù)的狀態(tài)的等待狀態(tài),并且將所述所指定的互斥ID設(shè)定在對(duì)應(yīng)的所述狀態(tài)寄存器中,表示以所述互斥ID作為該任務(wù)的等待狀態(tài)解除條件;以及當(dāng)所述執(zhí)行控制電路執(zhí)行指示互斥ID的作為用于釋放互斥的系統(tǒng)調(diào)用命令的釋放互斥命令的情況下,所述任務(wù)選擇電路按照規(guī)定的選擇條件,選擇處于等待所指定的互斥ID 的互斥的等待狀態(tài)的任務(wù)中的某一個(gè)任務(wù);所述任務(wù)切換電路將所指定的互斥設(shè)定為非占用狀態(tài),當(dāng)所述任務(wù)選擇電路選擇出某一個(gè)任務(wù)時(shí),將所選擇的任務(wù)的狀態(tài)數(shù)據(jù)更新為就緒狀態(tài)。
11.根據(jù)權(quán)利要求1所述的任務(wù)處理裝置,該任務(wù)處理裝置還包括多個(gè)保存寄存器,用于在所述處理寄存器中保存數(shù)據(jù),分別與多個(gè)任務(wù)相對(duì)應(yīng);其中,當(dāng)所述任務(wù)切換電路接收到所述規(guī)定的系統(tǒng)調(diào)用信號(hào)時(shí),將所述處理寄存器中的數(shù)據(jù)保存到與執(zhí)行中的任務(wù)對(duì)應(yīng)的所述保存寄存器中,并將與通過所述任務(wù)選擇電路所選擇的任務(wù)對(duì)應(yīng)的所述保存寄存器中的數(shù)據(jù)加載到所述處理寄存器中。
全文摘要
一種任務(wù)處理裝置(100),包括CPU(150)、保存電路(120)以及任務(wù)控制電路(200)。CPU(150)配置有處理寄存器、和將數(shù)據(jù)從存儲(chǔ)器加載到處理寄存器中并按照處理寄存器中的數(shù)據(jù)來執(zhí)行任務(wù)的執(zhí)行控制電路(152)。保存電路(120)配置有分別對(duì)應(yīng)多個(gè)任務(wù)的多個(gè)保存寄存器(110)。當(dāng)執(zhí)行規(guī)定的系統(tǒng)調(diào)用命令時(shí),執(zhí)行控制電路(152)將通知任務(wù)控制電路(200)。當(dāng)收到系統(tǒng)調(diào)用命令執(zhí)行通知時(shí),任務(wù)控制電路(200)將處理寄存器中的數(shù)據(jù)保存到與執(zhí)行中的任務(wù)相對(duì)應(yīng)的保存寄存器(110)中,接著選擇下一個(gè)應(yīng)被執(zhí)行的任務(wù),并將與所選擇任務(wù)相對(duì)應(yīng)的保存寄存器(110)中的數(shù)據(jù)加載到處理寄存器(154)中,從而切換執(zhí)行對(duì)象的任務(wù)。
文檔編號(hào)G06F9/46GK102436393SQ201110345010
公開日2012年5月2日 申請(qǐng)日期2006年8月24日 優(yōu)先權(quán)日2006年8月24日
發(fā)明者丸山修孝 申請(qǐng)人:科尼龍硅公司