專利名稱:微控制器、數(shù)據(jù)處理系統(tǒng)及任務(wù)切換控制方法
技術(shù)領(lǐng)域:
本發(fā)明涉及具有多任務(wù)功能的微控制器、由控制多個硬件驅(qū)動器的該微控制器而構(gòu)成的數(shù)據(jù)處理系統(tǒng)以及任務(wù)切換控制方法。
具有多任務(wù)功能的微控制器已被我們所知曉。藏在這種微控制器內(nèi)的單一處理器順序執(zhí)行多個任務(wù)。為此,任務(wù)定時器定期發(fā)出要求任務(wù)切換的定時器中斷信號。每次處理器接收該定時器中斷信號,操作系統(tǒng)(OS)中的中斷處理程序被啟動,從而該中斷處理程序進行任務(wù)調(diào)度和資源的保存及恢復(fù)。
上述以往的微控制器由于在中斷處理程序中進行任務(wù)調(diào)度,所以存在著任務(wù)切換時的開銷(overhead)大,微控制器實質(zhì)上的工作率下降的問題。此問題在圖像數(shù)據(jù)編碼等重視實時性的應(yīng)用中特別嚴(yán)重。
本發(fā)明的目的是實現(xiàn)微控制器的高速任務(wù)切換。
本發(fā)明的另一目的是在由控制多個硬件驅(qū)動器的微控制器構(gòu)成的數(shù)據(jù)處理系統(tǒng)中,實現(xiàn)該微控制器的高速任務(wù)切換。
本發(fā)明的其他目的在于提供為實現(xiàn)高速任務(wù)切換的任務(wù)切換控制方法。
為達(dá)到上述目的,本發(fā)明的微控制器采用的做法是不在中斷處理程序中控制任務(wù)切換而在多個任務(wù)被分配到與之相對應(yīng)的硬件驅(qū)動器的環(huán)境下,根據(jù)表示該分配的信息用硬件調(diào)度程序(hardware scheduler,以下稱“調(diào)度器”)控制任務(wù)切換。在多個硬件驅(qū)動器當(dāng)中,有的執(zhí)行時間上關(guān)鍵的處理,又有的不執(zhí)行那種處理。若按照本發(fā)明,這種多個硬件驅(qū)動器彼此之間的關(guān)系反映到多個任務(wù)各自的執(zhí)行優(yōu)先順序,因此不須在任務(wù)切換時重新判定哪個硬件驅(qū)動器執(zhí)行時間上關(guān)鍵的處理,就能在短時間里選擇下一個應(yīng)該執(zhí)行的任務(wù)。就是說,任務(wù)切換時的開銷變小,高速的任務(wù)切換得以實現(xiàn)。
另外,鑒于在響應(yīng)從任務(wù)定時器定期發(fā)出的中斷信號來進行任務(wù)切換的分時操作方式中會發(fā)生時間損耗,本發(fā)明的微控制器采用立即響應(yīng)各硬件驅(qū)動器的執(zhí)行結(jié)束這事件發(fā)生而進行任務(wù)切換的事件驅(qū)動方式。多個任務(wù)分別包括表示等待執(zhí)行的第1狀態(tài)(READY state)、表示正在執(zhí)行的第2狀態(tài)(ACTIVE state)以及表示等待所分配的硬件驅(qū)動器結(jié)束執(zhí)行的第3狀態(tài)(SLEEP state)。ACTIVE狀態(tài)是任務(wù)正在使用微控制器的狀態(tài),其中對被分配到該任務(wù)的硬件驅(qū)動器進行控制。READY狀態(tài)雖是任務(wù)能使用微控制器的狀態(tài),但是該任務(wù)還沒被選擇而正在等待被選擇的狀態(tài)。SLEEP狀態(tài)是等待被分配的硬件驅(qū)動器結(jié)束執(zhí)行,即不能使用微控制器的狀態(tài)。啟動了所分配的硬件驅(qū)動器的任務(wù)響應(yīng)特定的指令(task_sleep指令)從ACTIVE狀態(tài)轉(zhuǎn)移到SLEEP狀態(tài)。在某一硬件驅(qū)動器執(zhí)行結(jié)束時,分配到該硬件驅(qū)動器的任務(wù)從SLEEP狀態(tài)轉(zhuǎn)移到READY狀態(tài),正在執(zhí)行中的任務(wù)從ACTIVE狀態(tài)轉(zhuǎn)移到READY狀態(tài)。之后,處于READY狀態(tài)的任務(wù)當(dāng)中執(zhí)行優(yōu)先權(quán)最高的任務(wù)被選擇為下一個應(yīng)執(zhí)行的任務(wù),從而該被選擇的任務(wù)從READY狀態(tài)轉(zhuǎn)移到ACTIVE狀態(tài)。
如果在微控制器中準(zhǔn)備好多個寄存器文件以作為多個硬件驅(qū)動器分別互相獨立的工作區(qū),那么在任務(wù)切換時只要保存程序計數(shù)器等處理器資源即可,因此任務(wù)切換時的開銷能更小。在微控制器中準(zhǔn)備好存儲多個硬件驅(qū)動器共用的設(shè)定參數(shù)的寄存器文件也可。
附圖的簡要說明
圖1是本發(fā)明所涉及的MPEG圖像編碼器的結(jié)構(gòu)示例方框圖。
圖2是表示圖1中的微控制器的詳細(xì)結(jié)構(gòu)的方框圖。
圖3是表示圖2中的任務(wù)控制器的詳細(xì)結(jié)構(gòu)的方框圖。
圖4是表示圖1中的編碼器的核心和任務(wù)的對應(yīng)關(guān)系的概念圖。
圖5是表示圖1中的編碼器的任務(wù)狀態(tài)轉(zhuǎn)移情況的概念圖。
圖6是表示由圖1中的5個核心進行的宏塊流水線處理的時序圖。
圖7是在圖6的部分期間內(nèi)3個任務(wù)的各狀態(tài)轉(zhuǎn)移的具體示例時序圖。
下面,參照附圖詳細(xì)說明本發(fā)明。
圖1示出本發(fā)明所涉及的數(shù)據(jù)處理系統(tǒng)之一的MPEG(MovingPicture Experts Group)圖像編碼器的結(jié)構(gòu)例。圖1的編碼器由一個微控制器101、構(gòu)成宏塊流水線的5個硬件驅(qū)動器(以下稱“核心”)111~115和3個緩沖存儲器116~118構(gòu)成。5個核心則是動態(tài)檢測器(MotionDetector:MD)111、動態(tài)補償器(Motion Compensator:MC)112、離散余弦變換器(Discrete Cosine Transformer:DCT)113、量化器(Quantizer:Q)114以及可變長度編碼器(Variable Length Coder:VLC)115,分別由具有多任務(wù)功能的微控制器101控制。121是要被編碼的圖像數(shù)據(jù),122是表示編碼結(jié)果的符號化數(shù)據(jù)。微控制器101將啟動信號123分別提供給5個核心111~115,并從5個核心111~115中分別接收結(jié)束信號124。另外,微控制器101的構(gòu)成為能通過信號線131~135分別與5個核心111~115傳送信號,又能通過信號線136將共用參數(shù)提供給5個核心111~115。
圖2示出微控制器101的詳細(xì)結(jié)構(gòu)。微控制器101包括用來實現(xiàn)多任務(wù)功能的任務(wù)控制器201、分別作為上述5個核心111~115的互相獨立的工作區(qū)的5個核心寄存器文件211~215、一個用來存儲上述5個核心111~115當(dāng)中至少有2個核心所共用的設(shè)定參數(shù)的共用寄存器文件216、一個作為任務(wù)控制器201工作區(qū)而被使用的通用寄存器文件217、乘法器221、移位器222、算術(shù)邏輯運算單元(Arithmetic and Logic Unit:ALU)223以及數(shù)據(jù)存儲器224。241是A總線,242是B總線,243是C總線,231是將這些總線和任務(wù)控制器201連接的信號線。任務(wù)控制器201提供上述啟動信號123并接收上述結(jié)束信號124。寄存器文件211~216分別介于C總線243和上述與之相對應(yīng)的信號線131~136之間,并且其各兩個輸出分別與A總線241和B總線242相連。通用寄存器文件217和數(shù)據(jù)存儲器224的各輸入與C總線243相連,其各兩個輸出與A總線241和B總線242相連。乘法器221、移位器222和ALU223的各兩個輸入與A總線241和B總線242相連,其各輸出與C總線243相連。另外,不設(shè)5個核心寄存器文件211~215和共用寄存器文件216而從C總線243直接引出上述信號線131~136也可。
若按照圖1的MPEG圖像編碼器,以16×16像素構(gòu)成的宏塊為單位進行圖像數(shù)據(jù)處理。首先,在MD核心111中對所輸入的圖像數(shù)據(jù)121求出備選的動態(tài)向量。在MC核心112中使用這些動態(tài)向量求出圖像的差分?jǐn)?shù)據(jù),并選出最佳動態(tài)向量。在DCT核心113中對被選出的動態(tài)向量的差分?jǐn)?shù)據(jù)進行離散余弦變換,經(jīng)過Q核心114被量化,并在VLC核心115中和求得的動態(tài)向量等附屬信息一起被編成可變長度代碼之后,作為符號化數(shù)據(jù)122被輸出。
下面,參照圖2詳細(xì)說明。首先,任務(wù)控制器201通過信號線231、ALU223和C總線243將工作參數(shù)設(shè)定在MD核心寄存器文件211中,由啟動信號123啟動MD核心111。 MD核心111從MD核心寄存器文件211中通過信號線131讀入工作參數(shù),同時輸入圖像數(shù)據(jù)121。MD核心111的執(zhí)行結(jié)束之后,求得的備選動態(tài)向量通過信號線131被寫入MD核心寄存器文件211,從MD核心111輸出結(jié)束信號124。任務(wù)控制器201接收該結(jié)束信號124之后,從MD核心寄存器文件211讀出備選動態(tài)向量,并根據(jù)它使用乘法器221、移位器222、ALU223和通用寄存器文件217求出MC核心112所用的工作參數(shù)。該工作參數(shù)被設(shè)定于MC核心寄存器文件212,從而由啟動信號123啟動MC核心112。MC核心112從MC核心寄存器文件212中通過信號線132讀入工作參數(shù)之后,求出圖像的差分?jǐn)?shù)據(jù)。MC核心112的執(zhí)行結(jié)束后,差分?jǐn)?shù)據(jù)的總和通過信號線132被寫入MC核心寄存器文件212,圖像的差分?jǐn)?shù)據(jù)被寫入緩沖存儲器116,并從MC核心112輸出結(jié)束信號124。任務(wù)控制器201接收該結(jié)束信號124后,從MC核心寄存器文件212讀出差分?jǐn)?shù)據(jù)的總和,并根據(jù)它使用乘法器221、移位器222、ALU223和通用寄存器文件217從上述備選向量中選出最佳動態(tài)向量。與求得的動態(tài)向量對應(yīng)的差分?jǐn)?shù)據(jù)的地址被設(shè)定在DCT核心寄存器文件213中,由啟動信號123啟動DCT核心113。DCT磁心113根據(jù)設(shè)定于DCT核心寄存器文件213的地址從緩沖存儲器116讀出差分?jǐn)?shù)據(jù),并對此進行離散余弦變換。DCT核心113的執(zhí)行結(jié)束后,離散余弦變換的結(jié)果被寫入緩沖存儲器117,從DCT核心113輸出結(jié)束信號124。然后,在Q核心114中進行量化處理,其結(jié)果被寫入緩沖存儲器118中,并在VLC核心115中進行可變長度編碼處理,其結(jié)果作為符號化數(shù)據(jù)122被輸出。另外,在1個宏塊的處理期間,上述5個核心111~115中有幾個核心與微控制器101之間多次進行啟動信號123和結(jié)束信號124的傳輸。共用寄存器文件216被用于預(yù)先向5個核心111~115提供切換MPEG1和MPEG2時所需的共用參數(shù),并預(yù)先向MD核心111和MC核心112提供用來指定動態(tài)評價模式的共用參數(shù)。
圖3示出任務(wù)控制器201的詳細(xì)結(jié)構(gòu)。任務(wù)控制器201由處理器300、任務(wù)管理表310和調(diào)度器330構(gòu)成。處理器300是最多能順序執(zhí)行8個任務(wù)的RISC(Reduced Instruction Set Computer)型處理器,具有用來生成指令地址的程序計數(shù)器(PC)301、用來存儲由一連串指令構(gòu)成的程序的指令存儲器302和用來譯碼指令的指令譯碼器303。要提供給各核心的啟動信號123由指令譯碼器303提供。指令譯碼器303通過信號線231與指令執(zhí)行用資源即上述乘法器221、移位器222、ALU223等相連。任務(wù)管理表310是用來存儲任務(wù)管理信息的電路塊,具有分別對應(yīng)于從任務(wù)0到任務(wù)7的8個任務(wù)的8個任務(wù)管理寄存器文件320~327。在此,任務(wù)管理信息包括表示多個任務(wù)的各執(zhí)行情況的狀態(tài)信息(ST信息)、表示該多個任務(wù)的各執(zhí)行優(yōu)先權(quán)的優(yōu)先權(quán)信息(PRI信息)和表示該多個任務(wù)分別被分配到5個核心111~115中的哪一核心的核心ID信息(CID信息)。此外,在任務(wù)管理表310中每一個任務(wù)都包括為保存處理器300的資源即PC301的內(nèi)容的區(qū)域。在此保存區(qū)域中也能保存有關(guān)ALU223(參照圖2)的運算結(jié)果的標(biāo)記(flag)等。調(diào)度器330是根據(jù)任務(wù)管理表310所存儲的任務(wù)管理信息使處理器300進行任務(wù)切換所用的電路塊,具有狀態(tài)控制器331、結(jié)束核心判定單元332、優(yōu)先權(quán)編碼器333和選擇器334。結(jié)束核心判定單元332是在從5個核心111~115中的任一核心接收結(jié)束信號124時,為判定被分配到該執(zhí)行結(jié)束了的核心中的任務(wù)的單元。該判定參照任務(wù)管理表310而進行,表示判定結(jié)果的任務(wù)號碼362被通知給狀態(tài)控制器331。優(yōu)先權(quán)編碼器333是用來選擇其次應(yīng)該執(zhí)行的任務(wù)的電路塊。該選擇參照任務(wù)管理表310而進行,表示選擇結(jié)果的任務(wù)號碼361被通知給狀態(tài)控制器331和選擇器334。狀態(tài)控制器331是用來更新任務(wù)管理表310中的ST信息的電路塊。選擇器334控制向處理器300的資源恢復(fù)。
圖4示出圖1的MPEG圖像編碼器中的核心和任務(wù)的對應(yīng)關(guān)系。在此,微控制器101執(zhí)行6個任務(wù)400~405。任務(wù)400是用來控制低位階層的5個任務(wù)401~405且管理整個編碼處理的主任務(wù)(任務(wù)0)。不存在應(yīng)被分配到該主任務(wù)400的核心。任務(wù)401是對被分配的MD核心111進行控制的動態(tài)檢測任務(wù)(任務(wù)1)。任務(wù)402是對被分配的MC核心112進行控制的動態(tài)補償任務(wù)(任務(wù)2)。任務(wù)403是對被分配的DCT核心113進行控制的離散余弦變換任務(wù)(任務(wù)3)。任務(wù)404是對被分配的Q核心114進行控制的量化任務(wù)(任務(wù)4)。任務(wù)405是對被分配的VLC核心115進行控制的可變長度編碼任務(wù)(任務(wù)5)。
在此,假設(shè)有關(guān)圖4所示的至少6個任務(wù)400~405的任務(wù)管理信息被存儲在圖3中的任務(wù)管理表310中。如圖3所示,PRI信息響應(yīng)優(yōu)先權(quán)設(shè)定信號342而被設(shè)定,CID信息響應(yīng)核心設(shè)定信號343而被設(shè)定。在指令譯碼器303譯碼優(yōu)先權(quán)設(shè)定指令時,優(yōu)先權(quán)設(shè)定信號342從指令譯碼器303被提供給任務(wù)管理表310。在指令譯碼器303譯碼核心設(shè)定指令時,核心設(shè)定信號343從指令譯碼器303被提供給任務(wù)管理表310。
圖5是表示各任務(wù)的狀態(tài)轉(zhuǎn)移情況的概念圖。任務(wù)具有表示停止的STOP狀態(tài)、表示等待執(zhí)行的READY狀態(tài)、表示執(zhí)行中的ACTIVE狀態(tài)以及表示等待所被分配的核心結(jié)束執(zhí)行的SLEEP狀態(tài)。但,在任務(wù)O中不存在SLEEP狀態(tài)。剛復(fù)位了的任務(wù)處于STOP狀態(tài)。處于STOP狀態(tài)的任務(wù)由task_ready指令被轉(zhuǎn)移到READY狀態(tài)(轉(zhuǎn)移501)。如果在要求任務(wù)切換的事件發(fā)生時由調(diào)度器330選擇處于READY狀態(tài)的任務(wù),該任務(wù)被轉(zhuǎn)移到ACTIVE狀態(tài)(轉(zhuǎn)移511)。此時,到此刻為止處于ACTIVE狀態(tài)的任務(wù)由調(diào)度器330被轉(zhuǎn)移到READY狀態(tài)(轉(zhuǎn)移522)。處于ACTIVE狀態(tài)的任務(wù)由處理器300執(zhí)行,該任務(wù)能由task_sleep指令被轉(zhuǎn)移到SLEEP狀態(tài)(轉(zhuǎn)移521),又能由task_stop指令被轉(zhuǎn)移到STOP狀態(tài)(轉(zhuǎn)移523)。處于SLEEP狀態(tài)的任務(wù)在所分配的核心結(jié)束執(zhí)行時,被轉(zhuǎn)移到READY狀態(tài)(轉(zhuǎn)移531)。
下面,詳細(xì)說明圖3的任務(wù)控制器201的動作。指令譯碼器303譯碼task_ready指令、task_sleep指令或者task_stop指令時,就發(fā)生任務(wù)切換。比方說,在正在執(zhí)行的任務(wù)中完成了被分配到該任務(wù)的核心的工作參數(shù)的設(shè)定并完成了該核心的啟動的任務(wù),由task_sleep指令從ACTIVE狀態(tài)被轉(zhuǎn)移到SLEEP狀態(tài)。另外,在5個核心111~115中的任一核心結(jié)束執(zhí)行時也發(fā)生任務(wù)切換。任務(wù)切換時的任務(wù)控制器201的動作順序為(1)啟動調(diào)度器、(2)保存正在執(zhí)行的任務(wù)資源、(3)選擇其次應(yīng)執(zhí)行的任務(wù)、(4)恢復(fù)所保存的資源。
首先,說明根據(jù)指令的任務(wù)切換順序。
(A-1)啟動調(diào)度器task_ready指令、task_sleep指令或者task_stop指令被譯碼時,指令譯碼器303輸出狀態(tài)變更信號341。狀態(tài)變更信號341被輸入狀態(tài)控制器331。結(jié)果,調(diào)度器330被啟動。
(A-2)保存正在執(zhí)行的任務(wù)資源狀態(tài)變更信號341又被輸入到任務(wù)管理表310中,ST信息被更新。同時,到此時為止被執(zhí)行了的任務(wù)的PC301值通過信號線344被保存在任務(wù)管理表310中。
(A-3)選擇其次應(yīng)執(zhí)行的任務(wù)優(yōu)先權(quán)編碼器333從任務(wù)管理表310通過信號線351接收ST信息,并通過信號線352接收PRI信息,從而將處于READY狀態(tài)的任務(wù)當(dāng)中執(zhí)行優(yōu)先權(quán)級別最高的任務(wù)作為其次應(yīng)執(zhí)行的任務(wù)選擇。表示該選擇結(jié)果的任務(wù)號碼361被通知給狀態(tài)控制器331和選擇器334。
(A-4)恢復(fù)所保存的資源狀態(tài)控制器331將對應(yīng)于任務(wù)號碼361的狀態(tài)變更信號364提供給任務(wù)管理表310。結(jié)果,由優(yōu)先權(quán)編碼器333選出的任務(wù)的ST信息被從READY狀態(tài)更新為ACTIVE狀態(tài)。選擇器334從任務(wù)管理表310通過信號線353讀出由任務(wù)號碼361指定的任務(wù)的PC,然后將該PC提供給信號線363。結(jié)果,其次應(yīng)執(zhí)行的任務(wù)的PC值被設(shè)定在處理器300中,從而開始執(zhí)行該任務(wù)。
其次,說明核心結(jié)束執(zhí)行時而發(fā)生的任務(wù)切換的順序。
(B-1)啟動調(diào)度器任一核心結(jié)束執(zhí)行時,結(jié)束信號124被輸入到結(jié)束核心判定單元332。結(jié)束核心判定單元332根據(jù)結(jié)束信號124判定哪個核心結(jié)束執(zhí)行。此外,結(jié)束核心判定單元332通過信號線354讀出任務(wù)管理表310中的CID信息,并判定哪個任務(wù)被分配到執(zhí)行結(jié)束了的核心。在從ST信息能確認(rèn)出該任務(wù)處于SLEEP狀態(tài)時,表示該判定結(jié)果的任務(wù)號碼362被通知給狀態(tài)控制器331。結(jié)果,調(diào)度器330被啟動。狀態(tài)控制器331將對應(yīng)于任務(wù)號碼362的狀態(tài)變更信號364提供給任務(wù)管理表310。結(jié)果,執(zhí)行結(jié)束了的任務(wù)的ST信息被從SLEEP狀態(tài)更新為READY狀態(tài)。另外,沒有任務(wù)分配給結(jié)束了執(zhí)行的核心時,調(diào)度器330不被啟動。
(B-2)保存執(zhí)行中的任務(wù)資源并且,狀態(tài)控制器331將狀態(tài)變更信號364提供給任務(wù)管理表310以便在這以前執(zhí)行了的任務(wù)的ST信息能被從ACTIVE狀態(tài)更新為READY狀態(tài)。同時,在這以前執(zhí)行了的任務(wù)的PC301值被保存在任務(wù)管理表310中。
(B-3)選擇其次應(yīng)執(zhí)行的任務(wù)優(yōu)先權(quán)編碼器333從任務(wù)管理表310接收ST信息和PRI信息,并將處于READY狀態(tài)的任務(wù)當(dāng)中執(zhí)行優(yōu)先權(quán)級別最高的任務(wù)作為其次應(yīng)執(zhí)行的任務(wù)選擇。表示該選擇結(jié)果的任務(wù)號碼361被通知給狀態(tài)控制器331和選擇器334。
(B-4)恢復(fù)所保存的資源狀態(tài)控制器331將對應(yīng)于任務(wù)號碼361的狀態(tài)變更信號364提供給任務(wù)管理表310。結(jié)果,由優(yōu)先權(quán)編碼器333選擇了的任務(wù)的ST信息被從READY狀態(tài)更新為ACTIVE狀態(tài)。選擇器334從任務(wù)管理表310中讀出由任務(wù)號碼361指定的任務(wù)的PC,并將該PC提供給處理器300。結(jié)果,其次應(yīng)執(zhí)行的任務(wù)的PC值被設(shè)定在處理器300中,從而開始執(zhí)行該任務(wù)。
圖6示出由圖1中的5個核心111~115進行的宏塊流水線處理的情況。流水線間距被設(shè)定為在各核心中1個宏塊的處理所需的時間的最大值。于是,其特性為在各流水線間距期間中都存在著比其他核心早結(jié)束執(zhí)行的核心。在此,產(chǎn)生閑置時間。并且,還有閑置時間依據(jù)圖像數(shù)據(jù)而發(fā)生變化的特性。在圖1的示例中,通過采用事件驅(qū)動方式的任務(wù)切換,適合這些特性的MPEG圖像編碼器得以實現(xiàn)。另外,各流水線間距期間的核心的啟動次數(shù)依在該核心中進行的處理的內(nèi)容和數(shù)據(jù)而異。比方說,DCT核心113在1個流水線間距期間被啟動1次。另一方面,由于MC核心112將1個宏塊數(shù)據(jù)分成亮度成分和色差成分并對每個成分執(zhí)行細(xì)分化處理,因此其在1個流水線間距期間中響應(yīng)數(shù)據(jù)而被啟動多次。
圖7示出在圖6中由虛線所特定的部分期間的3個任務(wù)各自的狀態(tài)轉(zhuǎn)移具體例。任務(wù)0是為管理整個編碼處理的主任務(wù),任務(wù)1是分配到MD核心111的任務(wù),任務(wù)2是分配到MC核心112的任務(wù)(參照圖4)。假設(shè)這3個任務(wù)當(dāng)中任務(wù)1的執(zhí)行優(yōu)先權(quán)級別最高,任務(wù)2的執(zhí)行優(yōu)先權(quán)級別僅次于任務(wù)1,任務(wù)0的執(zhí)行優(yōu)先權(quán)級別最低。另外,在時刻t0,假設(shè)任務(wù)1處于ACTIVE狀態(tài),任務(wù)0和任務(wù)2分別處于READY狀態(tài)。
如圖7所示,在時刻t1~t7分別發(fā)生任務(wù)切換。該圖中的Δt表示在一次任務(wù)切換中的開銷。下面,按順序進行說明。到時刻t1之前,任務(wù)1啟動MD核心111。之后,在時刻t1收到task_sleep指令,任務(wù)1從ACTIVE狀態(tài)轉(zhuǎn)移到SLEEP狀態(tài)。此時,由于任務(wù)0和任務(wù)2都處于READY狀態(tài),而且任務(wù)2的執(zhí)行優(yōu)先權(quán)級別比任務(wù)0高,所以任務(wù)2從READY狀態(tài)轉(zhuǎn)移到ACTIVE狀態(tài)。任務(wù)2啟動MC核心112。然后,在時刻t2收到task_sleep指令,任務(wù)2從ACTIVE狀態(tài)轉(zhuǎn)移到SLEEP狀態(tài)。此時,只有任務(wù)0處于READY狀態(tài),因此任務(wù)0從READY狀態(tài)轉(zhuǎn)移到ACTIVE狀態(tài)。在時刻t3,由于MC核心112執(zhí)行結(jié)束,任務(wù)2從SLEEP狀態(tài)轉(zhuǎn)移到READY狀態(tài)。與此同時,在這以前處于ACTIVE狀態(tài)的任務(wù)0轉(zhuǎn)移到READY狀態(tài)。此時,由于任務(wù)0和任務(wù)2都處于READY狀態(tài),而且任務(wù)2的執(zhí)行優(yōu)先權(quán)級別此任務(wù)0高,所以任務(wù)2從READY狀態(tài)轉(zhuǎn)移到ACTIVE狀態(tài)。任務(wù)2重新啟動MC核心112。在時刻t4,收到task_sleep指令的任務(wù)2從ACTIVE狀態(tài)轉(zhuǎn)移到SLEEP狀態(tài)。此時,只有任務(wù)0處于READY狀態(tài),因此任務(wù)0從READY狀態(tài)轉(zhuǎn)移到ACTIVE狀態(tài)。在時刻t5,由于MD核心111執(zhí)行結(jié)束,任務(wù)1從SLEEP狀態(tài)轉(zhuǎn)移到READY狀態(tài)。與此同時,在這以前處于ACTIVE狀態(tài)的任務(wù)0轉(zhuǎn)移到READY狀態(tài)。此時,由于任務(wù)0和任務(wù)1處于READY狀態(tài),而且任務(wù)1的執(zhí)行優(yōu)先權(quán)級別比任務(wù)0高,所以任務(wù)1從READY狀態(tài)轉(zhuǎn)移到ACTIVE狀態(tài)。在時刻t6,由于MC核心112執(zhí)行結(jié)束,任務(wù)2從SLEEP狀態(tài)轉(zhuǎn)移到READY狀態(tài)。與此同時,在這以前處于ACTIVE狀態(tài)的任務(wù)1轉(zhuǎn)移到READY狀態(tài)。此時,由于任務(wù)0、任務(wù)1和任務(wù)2都處于READY狀態(tài),而且任務(wù)1的執(zhí)行優(yōu)先權(quán)級別比任務(wù)0和任務(wù)2的各執(zhí)行優(yōu)先權(quán)級別高,所以任務(wù)1從READY狀態(tài)返回到ACTIVE狀態(tài)。任務(wù)1重新啟動MD核心111。然后,在時刻t7受到task_sleep指令,任務(wù)1從ACTIVE狀態(tài)轉(zhuǎn)移到SLEEP狀態(tài)。此時,由于任務(wù)0和任務(wù)2處于READY狀態(tài),而且任務(wù)2的執(zhí)行優(yōu)先權(quán)級別比任務(wù)0高,所以任務(wù)2從READY狀態(tài)轉(zhuǎn)移到ACTIVE狀態(tài)。
在采用以往的使用中斷處理程序的分時操作方式進行任務(wù)切換時,在一次任務(wù)切換中的開銷要十幾個機器周期,但采用本發(fā)明所涉及的事件驅(qū)動方式進行任務(wù)切換時,能將圖7中所示的開銷Δt抑制為幾個機器周期。若考慮到在圖6中的各宏塊流水線間距期間中最多發(fā)生20幾次任務(wù)切換,上述兩種方式之間的開銷差會更大。由本發(fā)明而實現(xiàn)的開銷縮小也能使流水線間距縮小。即能達(dá)成圖像數(shù)據(jù)的高速編碼處理。
綜上所述,圖1的MPEG圖像編碼器能實現(xiàn)高速的任務(wù)切換。另外,通過將高執(zhí)行優(yōu)先權(quán)設(shè)定在將要執(zhí)行時間上關(guān)鍵處理的任務(wù)中,能保證正常的圖像編碼處理。并且,由于所采用的構(gòu)成為在任一核心結(jié)束執(zhí)行時,將被分配到該結(jié)束了執(zhí)行的核心的任務(wù)的狀態(tài)和在此刻以前處于執(zhí)行中的任務(wù)的狀態(tài)都變更為READY狀態(tài),然后,將處于READY狀態(tài)的所有的任務(wù)當(dāng)中執(zhí)行優(yōu)先權(quán)最高的任務(wù)作為其次該執(zhí)行的任務(wù)選擇,因此能簡化優(yōu)先權(quán)編碼器333的內(nèi)部結(jié)構(gòu)。并且,對每個任務(wù)都能獨立地描述程序,所以能提高編程效率,又有利于調(diào)試。
另外,本發(fā)明也能適用于圖像譯碼器等其他的數(shù)據(jù)處理系統(tǒng)。在上述示例中,對所有的硬件驅(qū)動器(核心)各分配了一個任務(wù)??墒?,有分配不到任務(wù)的核心也可,將多個任務(wù)分配給1個核心也可。但,沒有同時將1個任務(wù)分配給多個核心的情況。
權(quán)利要求
1.一種微控制器,其特征在于包括用來順序執(zhí)行多個任務(wù)的處理器;和為存儲包括表示上述多個任務(wù)的各執(zhí)行情況的狀態(tài)信息、表示上述多個任務(wù)的各執(zhí)行優(yōu)先權(quán)級別的優(yōu)先權(quán)信息、以及表示上述多個任務(wù)分別被分配到哪一個硬件驅(qū)動器的分配信息的任務(wù)管理信息的任務(wù)管理表;和根據(jù)上述任務(wù)管理信息使上述處理器進行任務(wù)切換的調(diào)度器。
2.根據(jù)權(quán)利要求1所述的微控制器,其特征在于上述多個任務(wù)分別具有表示等待執(zhí)行的第1狀態(tài)、表示正在執(zhí)行的第2狀態(tài)和表示等待被分配的硬件驅(qū)動器結(jié)束執(zhí)行的第3狀態(tài)。
3.根據(jù)權(quán)利要求2所述的微控制器,其特征在于上述處理器具有以下功能,即在執(zhí)行中的任務(wù)當(dāng)中將被分配到該任務(wù)的硬件驅(qū)動器啟動之后對特定的指令進行解碼時,更新上述狀態(tài)信息以使該任務(wù)的狀態(tài)從上述第2狀態(tài)變更為上述第3狀態(tài)。
4.根據(jù)權(quán)利要求2所述的微控制器,其特征在于上述調(diào)度器包括判定單元和狀態(tài)控制器,上述判定單元在任一個硬件驅(qū)動器結(jié)束執(zhí)行時,根據(jù)上述任務(wù)管理信息判定被分配到該硬件驅(qū)動器的任務(wù);上述狀態(tài)控制器在被上述判定單元啟動時,具有更新上述狀態(tài)信息以使上述被判定的任務(wù)的狀態(tài)從上述第3狀態(tài)變更為上述第1狀態(tài)的功能。
5.根據(jù)權(quán)利要求4所述的微控制器,其特征在于上述狀態(tài)控制器還具有以下功能在被上述判定單元啟動時,更新上述狀態(tài)信息以使正在執(zhí)行的任務(wù)的狀態(tài)從上述第2狀態(tài)變更為上述第1狀態(tài)。
6.根據(jù)權(quán)利要求2所述的微控制器,其特征在于上述調(diào)度器還包括優(yōu)先權(quán)編碼器,該優(yōu)先權(quán)編碼器能根據(jù)上述任務(wù)管理信息,選擇上述處于第1狀態(tài)的任務(wù)當(dāng)中執(zhí)行優(yōu)先權(quán)級別最高的任務(wù)作下一個應(yīng)執(zhí)行的任務(wù)。
7.根據(jù)權(quán)利要求6所述的微控制器,其特征在于上述狀態(tài)控制器還具有以下功能更新上述狀態(tài)信息以使由上述優(yōu)先權(quán)編碼器選出的任務(wù)的狀態(tài)從上述第1狀態(tài)變更為上述第2狀態(tài)。
8.根據(jù)權(quán)利要求1所述的微控制器,其特征在于上述任務(wù)管理表包括用來保存與在上述任務(wù)切換時刻之前所執(zhí)行的任務(wù)有關(guān)的上述處理器的資源的區(qū)域。
9.根據(jù)權(quán)利要求1所述的微控制器,其特征在于還包括上述多個硬件驅(qū)動器分別作為互相獨立的工作區(qū)而使用的多個寄存器文件。
10.根據(jù)權(quán)利要求1所述的微控制器,其特征在于還包括用來存儲上述多個硬件驅(qū)動器當(dāng)中至少2個硬件驅(qū)動器所共用的設(shè)定參數(shù)的寄存器文件。
11.一種數(shù)據(jù)處理系統(tǒng),包括分別用來執(zhí)行數(shù)據(jù)處理的多個硬件驅(qū)動器和用來控制上述多個硬件驅(qū)動器的微控制器,其特征在于上述微控制器包括處理器、任務(wù)管理表和調(diào)度器上述處理器順序執(zhí)行多個任務(wù);上述任務(wù)管理表存儲任務(wù)管理信息,該信息包括表示上述多個任務(wù)的各執(zhí)行情況的狀態(tài)信息、表示上述多個任務(wù)的各執(zhí)行優(yōu)先權(quán)的優(yōu)先權(quán)信息、以及表示上述多個任務(wù)分別被分配到哪個硬件驅(qū)動器的分配信息;上述調(diào)度器根據(jù)上述任務(wù)管理信息使上述處理器進行任務(wù)切換。
12.根據(jù)權(quán)利要求11所述的數(shù)據(jù)處理系統(tǒng),其特征在于上述多個任務(wù)分別具有表示等待執(zhí)行的第1狀態(tài)、表示正在執(zhí)行的第2狀態(tài)和表示等待被分配的硬件驅(qū)動器結(jié)束執(zhí)行的第3狀態(tài)。
13.根據(jù)權(quán)利要求11所述的數(shù)據(jù)處理系統(tǒng),其特征在于上述多個硬件驅(qū)動器分別是用來編碼MPEG圖像數(shù)據(jù)的部分處理核心。
14.一種任務(wù)切換控制方法,至少將1個任務(wù)分配到各對應(yīng)的硬件驅(qū)動器,由調(diào)度器根據(jù)表示該分配情況的信息控制任務(wù)切換,其特征在于上述任務(wù)具有表示等待執(zhí)行的第1狀態(tài)、表示正在執(zhí)行的第2狀態(tài)、和表示等待被分配的硬件驅(qū)動器結(jié)束執(zhí)行的第3狀態(tài),在硬件驅(qū)動器結(jié)束執(zhí)行時,將被分配到該硬件驅(qū)動器的任務(wù)的狀態(tài)從上述第3狀態(tài)變更為上述第1狀態(tài)。
15.根據(jù)權(quán)利要求14所述的任務(wù)切換控制方法,其特征在于在硬件驅(qū)動器結(jié)束執(zhí)行時,將執(zhí)行中的任務(wù)的狀態(tài)從上述第2狀態(tài)變更為上述第1狀態(tài)。
全文摘要
一種微控制器,設(shè)置有處理器、任務(wù)管理表和調(diào)度器。處理器順序執(zhí)行用來控制被分配的各硬件驅(qū)動器(核心)的多個任務(wù)。任務(wù)管理表存儲任務(wù)管理信息,包括表示多個任務(wù)的各執(zhí)行狀態(tài)的狀態(tài)信息、表示該多個任務(wù)的各執(zhí)行優(yōu)先順序的優(yōu)先權(quán)信息以及表示該多個任務(wù)分別分配到哪個核心的核心ID信息。在特定的指令被譯碼或者任一核心的執(zhí)行結(jié)束時,調(diào)度器根據(jù)任務(wù)管理信息使處理器進行任務(wù)切換。
文檔編號G06F9/38GK1210306SQ9811766
公開日1999年3月10日 申請日期1998年9月1日 優(yōu)先權(quán)日1997年9月1日
發(fā)明者今西浩, 荒木敏之 申請人:松下電器產(chǎn)業(yè)株式會社