TWI426451B - Work processing device - Google Patents
Work processing device Download PDFInfo
- Publication number
- TWI426451B TWI426451B TW096131160A TW96131160A TWI426451B TW I426451 B TWI426451 B TW I426451B TW 096131160 A TW096131160 A TW 096131160A TW 96131160 A TW96131160 A TW 96131160A TW I426451 B TWI426451 B TW I426451B
- Authority
- TW
- Taiwan
- Prior art keywords
- work
- state
- flag
- circuit
- register
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Description
本發明係關於一種OS(作業系統:Operating System)的功能,特別是關於一種工作(Task)排程技術。
不限於個人電腦等的汎用機器用OS,行動電話等的專用機器用OS亦要求具有高度的功能。特別是,能以1個CPU(Central Processing Unit)執行複數個工作的OS(以下,將此種類型之OS稱為「多工OS」)係裝載於大多電子機器。
多工OS將CPU之處理時間分割成單位時間(時間片段:Time Slice),將時間片段依序分配至複數個工作。各工作僅能在被OS賦予時間片段時使用CPU。在各時間片段執行一個工作。由於對使用者而言時間片段為非常短的時間,因此複數個工作感覺似乎是同時執行。根據此種處理方法,工作A成為輸入待機狀態而暫時不需要CPU之處理能力時,將執行權賦予另一個工作B以有效活用CPU之處理能力。此處,所謂執行權係與CPU之使用權同義。
將多工OS切換工作之執行權的動作稱為「工作切換」。工作切換,係在時間片段經過時、或在工作執行既定指令時產生。多工OS在工作切換之執行時序到達時,將執行中之工作之上下文資訊儲存於TCB(工作控制區塊:Task Control Block)。上下文資訊,係工作執行時儲存於CPU之暫存器的資料與工作執行狀態相關的資料。TCB係為了保持工作固有的資訊而由記憶體所確保的區域。多工OS將執行中之工作之上下文資訊儲存於TCB後,選擇下一個分配有執行權的工作,從該工作之TCB讀取上下文資訊,載入至CPU暫存器。以此方式,各工作以時間片段為單位逐漸執行本身的處理。
雖多工OS具有能高效率執行複數個工作的優點,但亦具有新產生上下文資訊之儲存、載入之酬載(Overhead)的缺點。一般而言,即使工作切換伴隨有酬載,多工OS仍具有許多優點。
專利文獻1:日本特開平11-272480號公報專利文獻2:日本特開2001-75820號公報
非專利文獻1:森久直、坂卷佳壽美、重松宏志「用於箝入式控制系統之即時OS的硬體化(Hardware implementation of a real-time operating system for embedded control system)」、東京都立產業技術研究所研究報告、日本、2005年8月4日、p.55-58
近年來,嚴格要求在一定時間內完成處理之即時OS(以下,稱為「RTOS(Real-Time Operating System)」)以箝入式系統(Embedded System)為中心逐漸普及。在此種時間要求嚴格的RTOS,工作切換時之酬載有可能對系統整體之效能造成大的影響。本發明人為了使多工處理更有效率,認知必須要抑制工作切換所伴隨的酬載。
本發明係有鑑於上述問題而構成,其主要目的在於提供一種可於多工處理以更高效率控制工作之執行的技術。
本發明之形態為工作處理裝置。
此裝置具備處理暫存器,將資料從記憶體載入至處理暫存器、依處理暫存器之資料執行工作的執行控制電路,保持各工作之狀態資料的複數個狀態暫存器,執行工作切換的工作切換電路,及以既定選擇條件選擇工作的工作選擇電路。
執行控制電路,當執行系統呼叫指令時,通知工作切換電路。工作選擇電路,不論是否有系統呼叫指令,從表示可執行之待機狀態之READY狀態之工作中選擇執行對象之工作。
工作切換電路,藉由系統呼叫指令執行時之來自工作選擇電路的輸出,選擇下一個執行對象之工作,將處理暫存器的資料儲存於既定記憶區域,且將與執行中之工作對應之狀態暫存器的狀態資料設定變更,就選擇之工作,將儲存於記憶區域之資料載入至處理暫存器,且將與該工作對應之狀態暫存器的狀態資料從READY狀態變更成RUN狀態,藉此切換執行對象之工作。
載入至處理暫存器之資料,可為指令(instruction)與運算元(Operand)、不具運算元的指令、或程式計數器與堆疊指標等單純的資料。由於以狀態暫存器管理工作的狀態,因此工作切換電路能以來自工作選擇電路的輸出執行工作切換處理。根據此種處理方法,可實現硬體邏輯之高速的工作切換。
此外,以上構成元件之任意組合,或以方法、系統、記錄媒體、電腦程式表現本發明者,作為本發明之形態亦有效。
根據本發明,於多工處理,可實現更高效率之工作的執行控制。
本實施例所示之工作處理裝置100,以電子電路實現多工OS之工作排程功能。在詳細說明工作處理裝置100前,首先以圖1說明工作的狀態遷移。此處,雖說明一般之多工OS之工作的狀態遷移,但工作處理裝置100之工作的狀態遷移亦相同。又,亦概要說明於工作處理裝置100所執行之系統呼叫。除了以圖2及圖3說明一般之多工OS的設計思想之外,亦以圖4至圖10詳細說明本實施例之工作處理裝置100的處理方法。再者,亦適當將旗號(Semaphore)、互斥(Mutex)、及事件等相關處理與一般技術比較來說明工作處理裝置100的特徵。
圖1係工作的狀態遷移圖。
在多工處理,各工作具有「狀態(State)」。各工作在後述複數個狀態間遷移,而恆成為任一狀態。狀態遷移之契機,係「系統呼叫之執行」與「中斷要求訊號之檢測」。系統呼叫係各工作執行之指令中的特別指令。中斷要求訊號係按下鍵盤、敲擊滑鼠、接收通訊資料等,從周邊機器接收既定資料時產生的訊號。當然,分配至各工作的時間片段經過後亦產生狀態遷移。
工作大致分為「一般工作」與「特殊工作」的2種類。一般工作係以系統呼叫為契機所執行之通常的工作。特殊工作係以中斷要求訊號之檢測為契機所執行的工作。即所謂中斷處理程式(Interrupt Handler)。首先,說明各工作狀態後,再說明各種系統呼叫指令。
(1)STOP狀態(停止狀態)表示工作為停止狀態。一般工作與特殊工作皆有可能成為STOP狀態。以下,將處於STOP狀態之工作稱為「STOP-工作」。
1-1.一般工作當工作執行指示另一個工作啟動之系統呼叫(以下,稱為「啟動系統呼叫」)時,處於STOP狀態之一般工作遷移至後述READY狀態。
1-2.特殊工作特殊工作通常處於STOP狀態。藉由後述工作切換電路210檢測出中斷要求訊號時,特殊工作從STOP狀態遷移至後述RUN狀態。此時,原本處於RUN狀態之工作遷移至READY狀態。
(2)RUN狀態(執行狀態)表示工作正在執行中。亦即,將時間片段分配給工作而取得CPU之使用權的狀態。一般工作與特殊工作皆有可能成為RUN狀態。以下,將處於RUN狀態之工作稱為「RUN-工作」。複數個工作中,能成為RUN狀態之工作恆僅有1個,2個工作無法同時成為RUN狀態。
2-1.一般工作處於RUN狀態之一般工作,當執行既定系統呼叫時從RUN狀態遷移至READY狀態或後述WAIT狀態。處於RUN狀態之一般工作,在時間片段經過後,亦遷移至READY狀態。不論是何種情形,處於READY狀態之一般工作遷移至RUN狀態以替換原本處於RUN狀態之一般工作。當檢測出中斷要求訊號時,RUN-工作遷移至READY狀態。此時,處於STOP狀態之特殊工作遷移至RUN狀態。
當RUN-工作執行使本身結束之系統呼叫(以下,稱為「結束系統呼叫」)時,RUN-工作遷移至STOP狀態。
2-2.特殊工作因中斷要求訊號而從STOP狀態遷移至RUN狀態的特殊工作,當結束本身處理時回到STOP狀態。特殊工作有可能成為的狀態僅為STOP狀態與RUN狀態。
(3)READY狀態(可執行狀態)表示工作為可執行狀態。處於READY狀態之工作,被OS賦予執行權時皆可遷移至RUN狀態。僅一般工作有可能成為READY狀態。以下,將處於READY狀態之工作稱為「READY-工作」。
處於RUN狀態之一般工作藉由系統呼叫之執行而遷移至RUN狀態以外的狀態時,或處於RUN狀態之特殊工作結束本身的處理而遷移至STOP狀態時,READY-工作遷移至RUN狀態。一般工作僅從READY狀態遷移至RUN狀態。當處於READY狀態之工作有複數個時,根據上下文資訊之一部分的工作優先順序,其中一個READY-工作遷移至RUN狀態。當工作優先順序相同之READY-工作有複數個時,最早移至READY狀態之工作遷移至RUN狀態。
(4)WAIT狀態(待機狀態)表示工作正在等待既定WAIT解除條件成立的狀態。當WAIT解除條件成立時,處於WAIT狀態之工作遷移至READY狀態。僅一般工作有可能成為WAIT狀態。以下,將處於WAIT狀態之工作稱為「WAIT-工作」。關於WAIT解除條件將在之後詳細說明。
綜合上述,各工作僅能在處於RUN狀態時使用CPU執行本身的處理。RTOS一邊管理複數個工作的狀態,一邊適當切換RUN-工作。據此,可實現CPU隨時執行任一工作的處理形態。
接著,說明系統呼叫。系統呼叫大致分為「啟動系統」、「WAIT系統」、「SET系統」的3種類。
(1)啟動系統系統呼叫STOP狀態與READY狀態之間之遷移相關的系統呼叫。
1-1.啟動系統呼叫RUN-工作之工作A使另一個一般工作B啟動的系統呼叫。此時,處於STOP狀態之一般工作B遷移至READY狀態。
1-2.結束系統呼叫執行此系統呼叫之工作,結束本身的處理,從RUN狀態遷移至STOP狀態。結束系統呼叫亦可為某個工作使另一個工作結束的指令。
(2)WAIT系統系統呼叫RUN狀態與WAIT狀態之間之遷移相關的系統呼叫。
2-1.待幾旗號系統呼叫要求獲得旗號(後述)的系統呼叫。
2-2.待幾互斥系統呼叫要求獲得互斥(後述)的系統呼叫。
2-3.待幾事件系統呼叫等待事件(後述)成立的系統呼叫。除了事件ID之外,待幾旗標類型(後述)與旗標條件(後述)亦作為變數執行。
不論是何種情形,均藉由WAIT系統系統呼叫設定各種WAIT解除條件。當WAIT系統系統呼叫執行時,在WAIT解除條件已成立之狀況下,執行系統呼叫之RUN-工作遷移至READY狀態。另一方面,當WAIT解除條件不成立時,RUN-工作遷移至等待WAIT解除條件成立的WAIT狀態。
(3)SET系統系統呼叫WAIT狀態與READY狀態之間之遷移相關的系統呼叫。SET系統系統呼叫之執行為WAIT解除條件的成立契機。
3-1.解除旗號系統呼叫解除旗號的系統呼叫。
3-2.解除互斥系統呼叫解除互斥的系統呼叫。
3-3.設定事件系統呼叫設定事件之現行旗標類型(後述)的系統呼叫。
3-4.清除旗標系統呼叫用以將現行旗標類型清除為零的系統呼叫。
於本實施例,以上述合計9種類之系統呼叫為對象進行說明,但除此以外當然亦可構裝各種系統呼叫。
圖2係一般RTOS的概念圖。
此RTOS係多工OS。一般RTOS係實現為軟體。以將RUN-工作從工作A切換至工作B之情形為例進行說明。由於工作A佔有CPU,因此RTOS對CPU發出中斷,從工作A拿回CPU之使用權。此外,將工作A之上下文資訊儲存於TCB。RTOS選擇工作B作為下一個RUN-工作,將上下文資訊從工作B之TCB載入至CPU的暫存器。當載入結束時,RTOS將CPU之使用權交給工作B。以此方式,藉由RTOS暫時取得CPU之使用權,執行工作A至工作B之工作切換。關於特殊工作的執行亦相同。此時,將RUN-工作之上下文資訊儲存於TCB後,將CPU之使用權交給特殊工作以實現工作切換。
由於RTOS係實現為軟體,因此為了執行本身之處理必須要CPU之使用權。亦即,RTOS與工作在CPU之使用上為競爭關係。以下,將以此方式藉由軟體實現之RTOS稱為「軟體RTOS」。
圖3係軟體RTOS所執行之一般CPU的電路圖。CPU84包含統括地控制記憶體存取與指令之執行等的執行控制電路90、儲存工作之上下文資訊等各種資料的處理暫存器92、及執行運算的運算電路94。處理暫存器92係複數種類之暫存器的集合,大致分為特殊暫存器88與汎用暫存器86。特殊暫存器88係保持程式計數器、堆疊指標、旗標等的暫存器。汎用暫存器86係保持作業用之資料的暫存器,包含R0~R15的合計16個暫存器。雖特殊暫存器88有使用者用與系統用的二種,但汎用暫存器86僅有一種。以下,將儲存於處理暫存器92的資料稱為「處理資料」。
執行控制電路90,藉由對輸出選擇器98的控制訊號(CTRL),將處理暫存器92中之所欲暫存器的處理資料輸出至運算電路94。運算電路94依處理資料、亦即指令與變數執行運算。運算結果係輸出至輸入選擇器96。執行控制電路90,藉由對輸入選擇器96的控制訊號(CTRL),將運算結果輸入至處理暫存器92中之所欲暫存器。
又,執行控制電路90,透過CPU資料匯流排從記憶體讀取資料,透過輸入選擇器96適當載入至處理暫存器92。執行控制電路90,同樣地透過CPU資料匯流排將處理資料適當紀錄於記憶體。執行控制電路90一邊更新特殊暫存器88的程式計數器一邊執行工作。
當產生工作切換時,執行控制電路90將處理資料儲存於記憶體上之區域的TCB。假設工作A執行系統呼叫,產生從工作A至工作B的工作切換。由於RTOS以系統呼叫執行為契機而取得CPU的使用權,因此CPU84暫時依RTOS用的程式執行動作。其處理過程如下述。
1.執行控制電路90,將特殊暫存器88從使用者用切換至系統用。RTOS處理用之處理資料係載入至系統用的特殊暫存器88。
2.執行控制電路90,將汎用暫存器86之資料儲存於未圖示的堆疊。
3.執行控制電路90,將RTOS用之處理資料從未圖示之記憶媒體、例如另一個暫存器載入至汎用暫存器86。在此階段,處理暫存器92之處理資料完全替換成RTOS用之處理資料。
4.RTOS自記憶體檢測工作A之TCB,將儲存於堆疊的處理資料寫入TCB。又,使用者用特殊暫存器88之處理資料亦作為上下文資訊的一部分而寫入TCB。以此方式,將工作A之處理資料儲存於TCB。RTOS將工作A從「RUN」狀態遷移至「READY(或WAIT)」的動作儲存於工作A之TCB。
1. RTOS自記憶體檢測工作B之TCB,將TCB之上下文資訊寫入堆疊與使用者用特殊暫存器88。RTOS將工作B從「READY」狀態遷移至「RUN」的動作記錄於工作B之TCB。
2. RTOS將RTOS處理用之資料從汎用暫存器86儲存至未圖示之記錄媒體。
3.執行控制電路90,將堆疊之上下文資訊載入至汎用暫存器86。執行控制電路90,將特殊暫存器88從系統用切換至使用者用。以此方式,將工作B之處理資料載入至處理暫存器92。
經由以上處理過程可實現工作切換。一般而言,由於汎用暫存器86僅有一種,因此為了切換工作用之處理資料與RTOS用之處理資料而使用堆疊。若汎用暫存器86亦具有二種,則不需透過堆疊儲存、載入,因此可執行更快速的工作切換。
於本實施例,藉由進一步依各工作設置保留暫存器110,可實現更快速的工作切換。以圖5詳細說明使用保留暫存器110的工作切換。可知在以圖3說明之CPU84與一般軟體RTOS之情形,當工作切換時,頻繁產生對TCB的存取。在上述假設例,雖以從工作A工作切換至工作B為前題進行說明,但實際上,RTOS為選擇下一個待執行之工作B,亦須執行多數指令。此時,RTOS頻繁地存取記憶體。本實施例之工作處理裝置100,為了使後述工作控制電路200專用於工作選擇處理,實現更快速的工作切換。
圖4係本實施例之RTOS的概念圖。
與一般軟體RTOS不同,本實施例之RTOS主要實現為與CPU不同之另一個硬體。以下,將藉由硬體實現之RTOS稱為「硬體RTOS」。由於本實施例之RTOS主要為與CPU不同之另一個硬體,因此執行本身的處理時實質上幾乎不需要CPU的使用權。亦即,RTOS與工作在CPU之使用上幾乎不會成為競爭關係。圖2所示之一般軟體RTOS之情形,CPU為工作執行用電路亦為RTOS執行用電路。相對於此,本實施例之硬體RTOS之情形,CPU明確地為工作執行用電路,工作排程功能能以後述儲存電路120與工作控制電路200為中心實現。
圖5係本實施例之工作處理裝置100的電路圖。
工作處理裝置100除了CPU150之外亦包含儲存電路120與工作控制電路200。CPU150係工作的執行主體,儲存電路120與工作控制電路200係具有圖4所示之RTOS之功能的電路。工作排程處理,係藉由工作控制電路200主導。
CPU150包含執行控制電路152、處理暫存器154、及運算電路160。CPU150亦可為以圖3說明之一般CPU。然而,本實施例之CPU150與圖3所示之CPU84,在訊號線之連接方法等有一些變更。以下一個圖6詳細說明具體電路構成。
工作控制電路200包含工作切換電路210、旗號表212、事件表214、工作選擇電路230、及狀態記憶部220。以圖13之後詳細說明旗號表212與事件表214。狀態記憶部220係與各工作相對應的單元。以下,將與工作A對應之狀態記憶部220表記為「狀態記憶部220_A」。各狀態記憶部220保持工作的狀態資料。狀態資料,係上下文資訊中,特別是表示工作優先順序與狀態等工作屬性的資訊。以圖10詳細說明具體資料的內容。所有工作之所有狀態資料係從各狀態記憶部220隨時輸出至工作選擇電路230。工作選擇電路230,係根據各工作的狀態資料執行RUN-工作之選擇等各種工作選擇的電路。亦以圖10之後詳細說明工作選擇電路230。工作切換電路210,當檢測出從執行控制電路152接收之系統呼叫訊號(SC)與來自外部裝置之中斷要求訊號(INTR)時,執行工作切換。
執行控制電路152,當系統呼叫執行時,將系統呼叫訊號(SC)傳至工作切換電路210。又,當工作切換電路210檢測出中斷要求訊號(INTR)時,工作切換電路210對執行控制電路152傳送停止要求訊號(HR)。執行控制電路152,當CPU150之動作停止時,將停止結束訊號(HC)傳至工作切換電路210。藉由此等3種類的訊號,CPU150與工作控制電路200產生連動動作。
儲存電路120包含載入選擇電路112及複數個保留暫存器110。保留暫存器110亦為與各工作相對應的單元,為用以儲存處理暫存器154之處理資料的暫存器。是以,保留暫存器110具有與處理暫存器154相同、或處理暫存器154以上的資料容量。以下,將與工作A對應之保留暫存器110表記為「保留暫存器110_A」。載入選擇電路112,當接受工作切換電路210的指示時,將任一個保留暫存器110的資料(以下,將保留暫存器110保持的資料稱為「儲存資料」)載入至處理暫存器154。
各保留暫存器110將個別之儲存資料隨時輸出至載入選擇電路112。當工作切換電路210將指定工作ID之工作選擇訊號(TS)輸入至載入選擇電路112時,載入選擇電路112將與指定之工作對應之保留暫存器110之儲存資料輸出至處理暫存器154。再者,當工作切換電路210對處理暫存器154輸入寫入訊號(WT)時,該儲存資料實際上載入至處理暫存器154。
另一方面,處理暫存器154之所有處理資料亦隨時輸出至所有保留暫存器110。當工作切換電路210對所欲保留暫存器110傳送寫入訊號(WT)時,處理資料儲存於該保留暫存器110。此處,連接處理暫存器154與各保留暫存器110之匯流排一次可傳送的位元數,係設定成可平行傳送處理資料。因此,工作切換電路210僅將寫入訊號傳至保留暫存器110一次,即可將處理資料一次寫入保留暫存器110。又,連接保留暫存器110與載入選擇電路112、及連接載入選擇電路112與CPU150之匯流排的位元數亦同樣地設定。
以下,分別對系統呼叫與中斷要求訊號說明工作切換的執行方法。
(1)系統呼叫執行當CPU150之執行控制電路152執行系統呼叫時,執行控制電路152使CPU150之時脈(以下,稱為「CPU時脈(CLK)」)停止。之後以圖7等詳細說明具體停止方法。執行控制電路152,將表示系統呼叫之執行的系統呼叫訊號(SC)傳至工作控制電路200的工作切換電路210。又,當CLK之停止結束時,執行控制電路152將停止結束訊號(HC)傳至工作切換電路210。
在CPU150與工作切換電路210之間連接有用以傳送系統呼叫訊號的9條訊號線。9條訊號線與上述9種類的系統呼叫對應。執行控制電路152,依執行之系統呼叫的種類,在任一條系統呼叫訊號線傳送數位脈衝。工作切換電路210,能依從9條系統呼叫訊號線中哪一條訊號線檢測出數位脈衝,立即檢測出執行之系統呼叫的種類。工作切換電路210,依系統呼叫的種類,從工作選擇電路230之輸出資料選擇必要的資料,執行系統呼叫所指示的處理。此處理係以HC被傳送為條件執行。以圖10詳細說明工作切換電路210與工作選擇電路230的關係。此外,系統呼叫之參數與回傳值,係寫入處理暫存器154中之既定汎用暫存器158。工作切換電路210能對汎用暫存器158執行參數讀取與回傳值寫入。此處,假設RUN-工作之工作A執行待機旗號系統呼叫。是以,首先,必需儲存工作A的處理資料。
(工作A之上下文資訊的儲存)執行控制電路152,將表示待機旗號系統呼叫之SC訊號輸入至工作切換電路210。執行控制電路152使CLK停止,停止結束時傳送HC。工作切換電路210,除了對工作選擇電路230所內建之各種選擇電路中之後述旗號選擇電路234輸出待機對象之旗號的旗號ID之外,亦選擇下一個待執行的工作B。工作切換電路210,對狀態記憶部220_A寫入既定資料。例如,將工作A之狀態從「RUN」變更設定成「READY」或「WAIT」。更具體而言,工作切換電路210,除了將「WAIT」輸出至所有狀態記憶部220以作為表示狀態資料中之工作狀態的資料外,亦將寫入訊號(WT_A)僅輸入至狀態記憶部220_A。以此方式,變更工作A之狀態設定。
接著,工作切換電路210,對保留暫存器110_A輸出寫入訊號(WT)。由於處理暫存器154之處理資料隨時輸出至各保留暫存器110,因此藉由此寫入訊號(WT)儲存於工作A的保留暫存器110_A。
(工作B之上下文資訊的載入)當工作切換電路210結束工作A之狀態資料的變更、處理資料的儲存時,將指定工作B之工作選擇訊號(TS_B)輸出至載入選擇電路112。據此,保留暫存器110_B之儲存資料係輸出至處理暫存器154。當工作切換電路210將寫入訊號(WT)輸出至處理暫存器154時,工作B之儲存資料係載入至處理暫存器154。又,工作切換電路210,對工作B之狀態記憶部220寫入既定資料。例如,將工作B之狀態從「READY」變更設定成「RUN」。當結束以上處理時,執行控制電路152再開始CPU時脈。CPU150係藉由再開始之CPU時脈開始工作B的執行。之後以圖8(b)說明處理方法之更進一步的細節。
(2)中斷要求訊號的產生工作切換電路210檢測來自周邊機器的中斷要求訊號(INTR)。更具體而言,中斷要求訊號(INTR),係從未圖示之中斷控制器傳至工作切換電路210。表示中斷要求訊號(INTR)之等級的參數,係紀錄於中斷控制器內建的暫存器。工作切換電路210將停止要求訊號(HR)傳至執行控制電路152,執行控制電路152使CPU時脈停止。與系統呼叫執行時相同,工作切換電路210將RUN-工作之處理資料儲存於保留暫存器110。接著,工作切換電路210啟動特殊工作。不論中斷要求訊號之參數如何,啟動之特殊工作為1種類。特殊工作從中斷控制器的內建暫存器讀取INTR的參數,依參數執行處理。特殊工作執行之處理有可能為設定事件系統呼叫或設定旗號系統呼叫的執行,亦有可能為一般工作的啟動。依據參數,特殊工作有可能未執行特殊的處理即結束。依據INTR的參數,執行何種處理係取決於特殊工作的構裝。當特殊工作之執行結束時,從READY-工作之中選擇下一個RUN-工作。
工作切換電路210將與特殊工作對應之保留暫存器110的處理資料載入至CPU150。此種從一般工作切換至特殊工作所需的時間,能依據工作控制電路200的動作時脈預測。將HR傳至執行控制電路152後,工作切換電路210之動作時脈經過既定時脈分時,工作切換電路210為了解除CPU時脈的停止而停止傳送HR。當執行控制電路152被停止傳送HR時,再開始CPU時脈。此時,結束工作切換電路210之從一般工作至特殊工作的工作切換。之後以圖8(a)說明處理方法的細節。
不論是何種情形,(A)處理資料之儲存、載入(B)工作的狀態遷移及RUN-工作的選擇
等工作切換的核心處理係藉由硬體實現。關於(A)及(B),即使不需要存取記憶體上之TCB亦有助於工作切換的高速化。又,為實現工作處理裝置100,對CPU150僅追加停止及再開始CPU時脈的功能即可。此外,此等功能皆藉由硬體實現,並未限定本發明的範圍。例如,藉由硬體實現(A)或(B)的主要功能,為了輔助硬體功能,亦能以軟體實現RTOS的一部分功能,此為本發明所屬技術領域中具有通常知識者所應理解之事。
圖6係圖5之CPU150的電路圖。
與圖3之CPU84不同,於處理暫存器154,特殊暫存器156與汎用暫存器158皆僅有一種。於處理暫存器154,分別追加來自載入選擇電路112的輸入匯流排、至保留暫存器110的輸出匯流排、及來自工作切換電路210之寫入訊號(WT)用的訊號線。執行控制電路152,藉由對輸出選擇器164的控制訊號(CTRL),將處理暫存器92中之所欲暫存器的資料輸入至運算電路160。運算結果成為至輸入選擇器162的輸入。執行控制電路152,藉由對輸入選擇器162的控制訊號(CTRL),將運算結果輸入至處理暫存器154中之所欲暫存器。執行控制電路152一邊更新特殊暫存器156的程式計數器一邊執行工作。
處理資料並非儲存於記憶體上之TCB,而是儲存於保留暫存器110。處理資料隨時從處理暫存器154輸出至各保留暫存器110。實際上,處理資料在何時序儲存於何保留暫存器110,如上述係藉由工作切換電路210所控制。
並非從記憶體上之TCB,而是從保留暫存器110將儲存資料載入至處理暫存器154。實際上,在何時序將何保留暫存器110的處理資料載入,如上述係藉由工作切換電路210所控制。
連接處理暫存器154與載入選擇電路112、及連接處理暫存器154與保留暫存器110的匯流排,係能一次平行傳送處理資料之位元數的匯流排。因此,藉由工作切換電路210之寫入訊號(WT),能一次讀取與寫入。一般軟體RTOS,當工作切換時,必須暫時佔有處理暫存器154,相對於此,本實施例之硬體RTOS,不需將用於工作切換處理的特別處理資料載入至處理暫存器154。當從工作A切換至工作B時,由於儲存工作A的處理資料後僅載入工作B的處理資料,因此不需要將處理暫存器154分成系統用與使用者用的2種、或執行透過堆疊之資料的替換處理。
圖7係顯示執行控制電路152使CPU時脈停止之構造的電路圖。
第2AND閘174的輸入係原時脈(CLK0)與第1AND閘172的輸出,後者係負邏輯。第1AND閘172的輸出係停止結束訊號(HC)。由於停止結束訊號(HC)通常為0,因此第2AND閘174將輸入之原時脈(CLK0)直接輸出以作為CPU時脈(CLK)。CPU150接收第2AND閘174輸出之CPU時脈而動作。當第1AND閘172的輸出為「1」時,亦即,當停止結束訊號(HC)=1時,第2AND閘174之輸出固定為0,CPU時脈(CLK)停止。
第1AND閘172的輸入係OR閘176的輸出與CPU忙碌訊號(CBUSY)的輸出,後者係負邏輯。CBUSY,係從產生CPU150之內部周期的既知狀態機器輸出的訊號,當CPU150為可停止之狀態時為「1」的訊號。例如,運算電路94使執行中之單一指令或被鎖定之複數個指令的最後指令結束,當CPU為可停止之狀態時、或CPU時脈之供應已停止時為「0」。
OR閘176的輸入,係指令解碼器170的輸出(SC_DETECT)與來自工作切換電路210的停止要求訊號(HR)。指令解碼器170內建有保持SC_DETECT的鎖存器電路。指令解碼器170,以從CPU150讀取的資料(FD)為輸入,當FD為系統呼叫指令時輸出SC_DETECT=1。藉由內建鎖存器電路,即使之後FD變化,指令解碼器170亦隨時輸出SC_DETECT=1。工作切換電路210對處理暫存器154之寫入訊號(WT)亦輸入至指令解碼器170。當WT從0變成1時,如上述執行將儲存資料載入至處理暫存器154的動作。此WT係在既定時間後從1回到0的脈衝訊號。當WT從1變成0時,指令解碼器170的鎖存器電路被重設,指令解碼器170停止傳送SC_DETECT。以圖8(b)詳細說明SC_DETECT與寫入訊號(WT)的關係。本實施例之指令解碼器170,係為了判定執行對象指令是否為系統呼叫而專門設在執行控制電路152的裝置。作為變形例,指令解碼器170與擔當CPU150之解碼步驟的CPU解碼器共通化亦可。此時,指令解碼器170,可藉由在CPU解碼器追加當解碼之資料為系統呼叫指令時輸出SC_DETECT=1的功能來實現。
當產生中斷要求訊號(INTR)時,工作切換電路210將停止要求訊號(HR)傳至執行控制電路152。亦即,當執行系統呼叫時、或傳送停止要求訊號(HR)時,OR閘176的輸出為「1」。
綜上所述,當執行系統呼叫或產生中斷要求訊號,且CPU忙碌訊號為「0」時,第1AND閘172的輸出為「1」,CPU時脈不會從第2AND閘174輸出。
圖8(a)係顯示中斷要求訊號產生時之各種訊號之關係的時序圖。
圖8(a)中,首先,在時刻t0,工作切換電路210檢測出來自外部的中斷要求訊號(INTR)。工作切換電路210,為執行特殊工作,將停止要求訊號(HR)傳至執行控制電路152。輸入時序t1,係與檢測時序t0大致同時。在時刻t1,CPU150之狀態機器係「工作執行中」、CBUSY=1。由於HR=1,因此OR閘176輸出「1」,但因CBUSY=1故CPU150不停止。因此,即使輸入HR=1,CPU時脈(CLK)亦暫時與原時脈(CLK)同步輸出。
時間經過後,在時刻t2變化成CBUSY=0。由於已HR=1,因此第1AND閘172輸出HC=1,從第2AND閘174輸出之CPU時脈固定為0。另一方面,工作切換電路210,以HC被傳送為契機,開始從一般工作至特殊工作的工作切換。其詳細後述,但此工作切換所需時間以工作控制電路200的動作時脈需數次。從HC被傳送起,以工作控制電路200的動作時脈變化既定次數為條件(時刻t3),工作控制電路200停止傳送停止要求訊號(HR)。由於HR=0,因此執行控制電路152使CPU時脈(CLK)再開始。當CPU150再開始處理時,CPU150使CBUSY從0變成1(時刻t4)。以此方式,從CPU時脈停止的時刻t2至時刻t3之間,執行從一般工作至特殊工作的工作切換。
此外,另一個處理方法,取代工作控制電路200的動作時脈變化既定次數的條件,以工作控制電路200結束工作切換為條件,停止傳送HR亦可。又,執行控制電路152,以HR被停止傳送為條件,停止傳送HC亦可。當HC=0時,執行控制電路152使CPU時脈(CLK)再開始。以此方式使工作的執行再開始亦可。
圖8(b)係顯示系統呼叫執行時之各種訊號之關係的時序圖。
圖8(b)中,首先,在時刻t0,指令解碼器170檢測出系統呼叫,使SC_DETECT從0變成1。在時刻t0,CPU150之狀態機器係「工作執行中」、CBUSY=1。由於SC_DETECT=1,因此OR閘176輸出「1」,但因CBUSY=1故CPU150不停止。因此,即使輸出SC_DETECT=1,CPU時脈(CLK)亦暫時與原時脈(CLK0)同步輸出。
時間經過後,在時刻t1變化成CBUSY=0。由於SC_DETECT=1且CBUSY=1,因此HC被停止傳送,CPU時脈停止。工作切換電路210,當輸入HC=0時,開始工作切換處理,將寫入訊號(WT)輸出至CPU150。在WT從0變成1之時刻t2,儲存資料係載入至處理暫存器154。寫入訊號(WT),因脈衝訊號在既定時間經過後的時刻t3變成WT=0。藉由此WT:1→0的下降檢測,鎖存於指令解碼器170之SC_DETECT被重設(時刻t4)。此時,CBUSY從0變成1。由於CBUSY=1,因此HC=0,再開始CPU時脈。從CPU時脈停止的時刻t1至時刻t4之間,執行工作切換。
此外,另一個處理方法,取代WT:1→0的下降檢測條件,以工作控制電路200結束工作切換,停止傳送HR為條件,執行控制電路152停止傳送HC亦可。以HC=0為條件,重設SC_DETECT。執行控制電路152使CPU時脈(CLK)再開始,CBUSY從0變成1。
不論是何種情形,CPU150皆不需在CPU時脈停止期間辨識RUN-工作之切換的執行。由於工作切換電路210,在CPU時脈停止,亦即CPU150凍結(Freeze)的期間執行工作切換處理,因此CPU150之處理與工作控制電路200之處理在程序控制上係分離。
圖9係用以說明管線處理之CPU時脈之停止時序的示意圖。
CPU150一邊將複數個指令從記憶體依序讀取至處理暫存器154一邊執行,以執行工作。此工作之執行單位的指令可分解成以下4個階段。
1. F(Fetch:讀取):從記憶體取出指令。
2. D(Decode:解碼):解釋指令。
3. E(Execution:執行):執行指令。
4. WB(Write Back:寫入):將執行結果寫入記憶體。
某個工作依序從指令1執行至指令5時,在執行指令1之F至WB之後,執行指令2之F亦可。然而,為了高效率執行,大多在指令1執行中即開始指令2的執行。此種處理方法稱為管線處理。例如,當指令1執行至D階段時,開始指令2之F階段。當指令1執行至E階段時,執行指令2之D階段、指令3之F階段。以此方式,藉由增加每單位時間所執行之指令數,可減少每個工作的執行時間。
再者,亦可將各階段細分成2個階段。例如,將F階段分離成F1:F2的2個階段。當指令1執行至F2階段時,開始指令2之F1階段。當指令1執行至D1階段時,執行指令2之F2階段、指令3之F1階段。藉由將階段細分,可更高效率地利用CPU150之計算資源。圖9係說明在將各階段細分成2個階段而執行之管線處理,產生系統呼叫時的CPU時脈停止時序。
圖9中,指令1在CPU時脈「0」的時序開始處理。在CPU時脈「4」的時序,結束指令1的解碼。假設指令1為系統呼叫。指令解碼器170使SC_DETECT從0變成1。接著,SC_DETECT從1回到0的條件,係從工作切換電路210至處理暫存器154的寫入訊號(WT)從1變成0。即使SC_DETECT=1,由於指令2~5已執行中或已執行開始,因此CBUSY=1。因此,第2AND閘174跟著CPU時脈開始輸出。然而,執行控制電路152,當SC_DETECT=1時,暫時停止程式計數器的更新以使新的指令不會被讀取。是以,指令6以後不會從記憶體讀取被讀取。
雖在CPU時脈「8」的時序指令1執行結束,但由於指令2~5在執行中,因此CPU忙碌訊號維持「1」。至CPU時脈「12」的時序時指令5執行結束。此時,CPU忙碌訊號為「0」。之後,依圖8(b)之處理,停止CPU時脈的供應。工作切換電路210,將指令5結束為止之階段的處理資料儲存於保留暫存器110。依據此種停止方法,可不浪費系統呼叫執行後之指令的執行結果執行工作切換。當工作切換結束時,CPU忙碌訊號再次被設定成「1」,指令解碼器170的處理亦再開始。以此方式,再次供應CPU時脈。
此外,另一個處理方法,在系統呼叫指令執行結束之時序,設CPU忙碌訊號為「0」,停止CPU時脈的供應亦可。此時,與系統呼叫指令同時執行之其他指令在執行途中即停止。將中途停止之指令的中間處理結果記錄於處理暫存器154後,儲存於保留暫存器110。此工作下一次成為RUN-工作時,執行中途停止之指令的後續處理。例如,某個指令在結束讀取之階段中途停止時,將從記憶體讀取之指令或運算元儲存於保留暫存器110。當工作再開始時,保留暫存器110的資料係載入至處理暫存器154,從解碼步驟執行後續處理。
圖10係顯示狀態記憶部220與工作切換電路210之關係的電路圖。
狀態記憶部220包含狀態暫存器250與計時器252,狀態記憶部220保持工作的狀態資料。又,計時器252,係工作遷移至READY狀態或WAIT狀態時開始的計時器。將工作遷移至READY狀態後經過的時間稱為「READY經過時間」,將工作遷移至WAIT狀態後經過的時間稱為「WAIT經過時間」。計時器252之值係作為TIM訊號而隨時輸出。工作切換電路210,當執行工作切換時,某個工作變成READY狀態或WAIT狀態時,驅動此工作之計時器252再開始時間測量。
狀態記憶部220係以下所示暫存器的集合。
(A)工作ID暫存器254:保持工作ID。表示工作ID之ID訊號係從工作ID暫存器254隨時輸出至工作選擇電路230。以下,將從工作A之工作ID暫存器254輸出至工作選擇電路230的ID訊號表記為「ID_A訊號」。從狀態記憶部220輸出之其他訊號亦相同。
(B)工作優先順序暫存器256:保持工作優先順序。表示工作優先順序之PR訊號係從工作優先順序暫存器256隨時輸出。「0」為最高優先順序,值愈大表示工作優先順序愈低。
(C)工作狀態暫存器258:表示工作狀態。STOP、READY、RUN、WAIT、IDLE其中之一係作為ST訊號而隨時輸出。此外,IDLE係工作初始化之前的狀態。
(D)工作啟動位址暫存器260:表示記憶體中工作之TCB位址。輸出為AD訊號。
(E)待機理由暫存器262:當工作為WAIT狀態時,表示WAIT解除條件之一部分的待機理由。待機理由為「旗號等待」、「事件等待」、「互斥等待」其中之一。輸出為WR訊號。
(F)旗號ID暫存器264:工作以旗號等待為理由處於WAIT狀態時,保持等待對象之旗號(以下,稱為「待機旗號」)的旗號ID。輸出為SID訊號。
(G)互斥ID暫存器265:工作以互斥等待為理由處於WAIT狀態時,保持等待對象之互斥(以下,稱為「待機互斥」)的互斥ID。輸出為MID訊號。
(H)事件ID暫存器266:工作以事件等待為理由處於WAIT狀態時,保持等待對象之事件(以下,稱為「待機事件」)的事件ID。輸出為EID訊號。
(I)待機旗標暫存器268:工作以事件等待為理由處於WAIT狀態時,保持待機旗標類型。輸出為FL訊號。
(J)旗標條件暫存器270:工作以事件等待為理由處於WAIT狀態時,保持旗標條件。輸出為FLC訊號。關於待機旗標類型與旗標條件將於後述。
(K)旗標初始化暫存器272:保持表示有無待機旗標類型的資料。輸出為FLI訊號。
(L)暫停計數器274:於WAIT系系統呼叫暫停值被指定為變數。暫停計數器274保持暫停值。工作切換電路210定期減少各暫停計數器274的暫停值。輸出為TO訊號。取代工作切換電路210減少暫停值,暫停計數器274本身自律地定期減少本身的暫停值亦可。
工作選擇電路230根據從各狀態記憶部220輸出的各種訊號,執行工作的選擇。工作選擇電路230包含以下所示電路。
(A)執行選擇電路232:當工作切換時,選擇下一個RUN-工作。執行選擇電路232,藉由從狀態記憶部220隨時輸出之狀態資料恆選擇任一個工作作為RUN-工作。執行選擇電路232之輸入訊號為ID、ST、PR、TIM的4種類。輸出為下一個RUN-工作的工作ID。以圖12詳細說明詳細的電路構成。
(B)旗號選擇電路234:藉由解除旗號系統呼叫的執行,選擇待從WAIT狀態遷移至READY狀態的工作。藉由解除旗號系統呼叫解除之旗號(以下,稱為「解除旗號」)的旗號ID係從工作切換電路210輸入。來自狀態記憶部220的輸入訊號為ID、ST、WR、PR、SID、TIM的6種類。輸出訊號為從WAIT狀態遷移至READY狀態之工作的工作ID。該工作不存在時,輸出-1等的既定值。以圖13詳細說明更具體的電路構成。
(C)事件選擇電路236:藉由設定事件系統呼叫的執行,選擇從WAIT狀態遷移至READY狀態的工作。藉由設定事件系統呼叫設定之事件(以下,稱為「設定事件」)的事件ID係從工作切換電路210輸入。來自狀態記憶部220的輸入訊號為ID、ST、WR、EID、FL、FLC的6種類。輸出訊號為從WAIT狀態遷移至READY狀態之工作的工作ID、及該工作的FL、FLC。
(D)暫停檢測電路238:檢測WAIT狀態之工作中、暫停計數器274之暫停值為0的工作。暫停檢測電路238每於更新暫停值時被驅動。暫停檢測電路238的輸入訊號為ID、ST、TO的3種類。輸出訊號為該工作的工作ID。該工作不存在時,輸出-1等的既定值。
(E)互斥電路240:藉由解除互斥系統呼叫的執行,選擇從WAIT狀態遷移至READY狀態的工作。藉由解除互斥系統呼叫解除之互斥(以下,稱為「解除互斥」)的互斥ID係從工作切換電路210輸入。來自狀態記憶部220的輸入訊號為ID、ST、WR、PR、SID、TIM的6種類。輸出訊號為從WAIT狀態遷移至READY狀態之工作的工作ID。該工作不存在時,輸出-1等的既定值。
(F)檢測電路242:當從工作切換電路210輸入工作ID時,輸出該工作的所有狀態資料。
以下,說明工作切換相關之RUN-工作選擇、旗號、事件、互斥、暫停,特別是以工作選擇電路230之處理為中心,與一般技術比較並說明。
(1)一般軟體RTOS之RUN-工作的選擇圖11係顯示一般RTOS之RUN-工作選擇時所利用之工作準備串列的圖。
工作準備串列,係形成於記憶體上、以指標連結各READY-工作之TCB的串列。優先順序指標280,係按各工作優先順序設置、表示該工作優先順序之工作之TCB的前端位址。圖11中之工作準備串列的情形,工作優先順序「0」之優先順序指標280指向工作A之TCB的位址,工作優先順序「1」之優先順序指標280指向工作B之TCB的位址。工作A之TCB進一步指向工作D之TCB的位址。
一般軟體RTOS一邊掃描此工作準備串列一邊選擇下一個RUN-工作。此時,RTOS執行下述2階段的處理。
A.將RUN-工作從RUN狀態遷移至READY。
B.選擇下一個RUN-工作,將此工作之工作狀態從READY狀態遷移至RUN。
若分解軟體RTOS之各處理則如下所示。
此處,RUN-工作係以工作J說明。
A1. RTOS將RUN-工作之工作ID保持於記憶體。根據此工作ID取得工作J之TCB的位址。
A2.存取TCB,取得工作J之工作優先順序。假設工作優先順序為「0」。
A3.取得圖11所示之工作準備串列中、與工作J之工作優先順序對應的優先順序指標280。
A4.檢測取得之優先順序指標280所表示的TCB。此處檢測出工作A之TCB。
A5.順著工作A之TCB具有的指標檢測最後端的TCB。圖11中,工作F為最後端。
A6.將工作F之TCB的指標設定成指向工作J之TCB的位址。以此方式,工作J之TCB追加至工作準備串列。
A7.將工作J之TCB設定成「READY」。又,將處理資料複製至TCB的暫存器儲存區。
B1. RTOS檢測工作優先順序「0」之優先順序指標280表示哪一個TCB。未找到TCB時,檢測工作優先順序「1」之優先順序指標280表示哪一個TCB。在找到TCB之前,一邊降低工作優先順序一邊特定任一個工作。圖11中,特定工作A。
B2.將工作A從工作準備串列移除。具體而言,將工作優先順序「0」之優先順序指標280覆寫成不是指向工作A而是指向工作D之TCB的位址。又,將工作A之指標設定成NULL以不指向工作D的位址。以此方式,將工作A之TCB從工作準備串列移除。
B3.將工作A之TCB設定成「RUN」。又,將儲存於工作A之TCB之暫存器儲存區的處理資料載入至處理暫存器。
一般軟體RTOS,藉由此種工作準備串列執行工作切換。亦即,RTOS從複數個READY-工作中選擇RUN-工作的規則如下。
1.為READY-工作(第1條件)。
2.為READY-工作中工作優先順序最高的工作(第2條件)。
3.當工作優先順序最高的工作存在複數個時,為變成READY狀態時間最早的工作(第3條件)。
將此等3個條件總稱為「RUN工作選擇條件」。工作處理裝置100之執行選擇電路232,藉由硬體實現此種RTOS之工作排程功能。
(2)本實施例之硬體RTOS之RUN-工作的選擇圖12係執行選擇電路232的電路圖。
此處,說明從工作0~工作7的8個工作選擇RUN-工作。執行選擇電路232包含4個第1比較電路290(290a~290d)、2個第2比較電路292(292a,292b)、1個第3比較電路294。又,亦包含8個判定電路296(296a~296h)。
判定電路296以表示工作狀態的ST訊號為輸入,輸出READY時表示「1」、READY以外時表示「0」的CID訊號。判定電路296根據上述RUN工作選擇條件中的第1條件進行判定。第1比較電路290以2個工作的ID、PR、TIM、及來自判定電路296的CID訊號為輸入。
著眼於第1比較電路290a來說明。第1比較電路290a比較工作0與工作1,根據上述RUN工作選擇條件選擇較佳的工作。
第1判定:首先,比較分別從判定電路296a與判定電路296b輸出的CID訊號。其中一者為「1」時,亦即,僅其中一者之工作為READY狀態時,第1比較電路290a輸出該工作之ID、PR、TIM。皆為「0」時,亦即,任一工作皆非READY狀態時,第1比較電路290a輸出ID=PR=TIM=NULL。此係表示任一工作皆未被選擇。皆為「1」時,亦即,任一工作皆為READY狀態時,進行接下來的第2判定。
第2判定:比較工作0的PR訊號與工作1的PR訊號,選擇工作優先順序高的工作。例如,工作0的工作優先順序為「1」、工作1的工作優先順序為「2」時,輸出工作0之ID、PR、TIM。藉由第2判定,可選擇工作優先順序高的工作作為RUN-工作的候補。工作0與工作1之工作優先順序相同時,進行接下來的第3判定。
第3判定:比較工作0的TIM訊號與工作1的TIM訊號,選擇READY經過時間長的工作。READY經過時間相同時,假設選擇工作0。由於僅比較經過時間的大小即可判定,因此不需要工作準備串列般的TCB順序管理。
以此方式,藉由RUN工作選擇條件分別比較工作0與工作1、工作2與工作3、工作4與工作5、工作6與工作7。第2比較電路292,藉由2個第1比較電路290的輸出進一步篩選RUN-工作的候補。第2比較電路292a,藉由第1比較電路290a與第1比較電路290b的輸出執行工作選擇。因此,第2比較電路292a輸出工作0~工作3中最適合RUN工作選擇條件之工作的ID、PR、TIM。第3比較電路294亦相同,第3比較電路294輸出工作0~工作7之任一工作的工作ID。
依據此種處理方法,能以硬體實現RUN工作選擇條件。雖一般軟體RTOS一邊存取工作準備串列一邊選擇RUN-工作,但本實施例之執行選擇電路232,藉由從狀態記憶部220隨時輸出之狀態資料選擇RUN-工作。綜合執行選擇電路232的處理則如下述。
此處,RUN-工作係以工作J說明。
A1.工作切換電路210將工作J之工作狀態暫存器258設定成「READY」。
A2.工作切換電路210設定工作J之計時器252開始測量READY經過時間。
以此方式,工作J從RUN狀態遷移至READY。如上述,將處理資料儲存於工作J之保留暫存器110。由於連接處理暫存器154與保留暫存器110的匯流排可平行傳送處理資料,因此可在1個時脈時間執行A1與A2的處理。
B1.工作切換電路210,當工作J之狀態遷移結束時,從執行選擇電路232輸出之工作ID特定RUN-工作。將此工作之工作狀態暫存器258設定成「RUN」。
以此方式,特定之工作從READY狀態遷移至RUN。將特定之工作之處理資料從保留暫存器110載入至處理暫存器154。由於連接保留暫存器110與處理暫存器154的匯流排亦為可平行傳送處理資料的位元數,因此可在1個時脈時間執行B1的處理。
軟體RTOS,當工作切換時,由於對工作準備串列的存取,消費較多CPU的CPU時脈時間。相對於此,本實施例之工作控制電路200,能以些微時間結束工作切換。由於狀態記憶部220將狀態資料隨時輸出至執行選擇電路232,因此執行選擇電路232隨時輸出任一工作之工作ID。並不是在產生工作切換後開始RUN-工作的選擇處理,而是在產生工作切換時以執行選擇電路232之輸出執行RUN-工作的選擇,此點亦有助於增加工作切換的速度。此處,雖說明工作為8個,但藉由增加比較電路的段數,亦可對應更多的工作。
圖13係顯示一般RTOS之旗號處理所利用之待機旗號串列的圖。
在說明待機旗號串列之前,先簡單說明旗號。在旗號表212,旗號ID與旗號計數器係相對應紀錄。旗號計數器之初始值係設定成有限數。例如,假設設定成旗號ID=4、旗號計數器=3。當任一工作以旗號ID=4之旗號作為待機旗號執行待機旗號系統呼叫時,工作切換電路210減少待機旗號的旗號計數器。旗號計數器,係每當因待機旗號系統呼叫而被要求獲得時減少,變成0時則無法獲得。以旗號計數器為0之旗號作為待機旗號執行待機旗號系統呼叫的工作,狀態遷移至WAIT狀態。
另一方面,當任一工作以旗號ID=4之旗號作為解除旗號執行解除旗號系統呼叫時,工作切換電路210增加旗號表212的旗號計數器。綜合來說,旗號計數器>0時:執行待機旗號系統呼叫的工作從RUN遷移至READY。此時,減少旗號計數器。
旗號計數器=0時:執行待機旗號系統呼叫的工作從RUN遷移至WAIT。不減少旗號計數器。
執行待機旗號系統呼叫的工作為了從WAIT狀態遷移至READY狀態,另一個工作必須執行解除旗號系統呼叫。
(1)一般軟體RTOS之旗號處理一般軟體RTOS藉由待機旗號串列管理以旗號等待為理由而處於WAIT狀態之工作(以下,特別稱為「旗號等待工作」)的TCB。待機旗號串列係與圖11之工作準備串列形狀相同的串列,形成於記憶體上。各旗號等待工作的TCB係藉由指標連結。優先順序指標280指向該工作優先順序之旗號等待工作之TCB的前端位址。
一般軟體RTOS,當執行解除旗號系統呼叫時,一邊掃描此待機旗號串列一邊選擇待從WAIT狀態遷移至READY狀態的旗號等待工作。待機旗號系統呼叫及解除旗號系統呼叫執行時之RTOS的處理係如下述。
(待機旗號系統呼叫的執行)此處,RUN-工作係以工作J說明。
A1. RTOS將RUN-工作的工作ID保持在記憶體。根據此工作ID取得工作J之TCB的位址。
A2.檢測於待機旗號系統呼叫指定之待機旗號的旗號計數器。以下,依旗號計數器的值處理產生分歧。
(旗號計數器>0時)A3. RTOS減少待機旗號的旗號計數器。
A4.將工作J之TCB設定成「READY」。此時,工作J之TCB追加至工作準備串列。
(旗號計數器=0時)A3.存取TCB以取得工作J的工作優先順序。假設工作優先順序為「0」。
A4.取得待機旗號串列中、與工作J的工作優先順序對應的優先順序指標。
A5.檢測取得之優先順序指標表示的TCB。此處,檢測出工作A的TCB。
A6.順著工作A之TCB具有的指標檢測最後端的TCB。圖13中,工作F為最後端。
A7.將工作F之TCB的指標設定成指向工作J之TCB的位址。以此方式,工作J之TCB追加至待機旗號串列。
A8.將工作J之TCB設定成「WAIT」。又,亦設定待機旗號的旗號ID。
(解除旗號系統的執行)B1. RTOS依序順著工作優先順序「0」的工作檢索以解除旗號為待機旗號的旗號等待工作。不存在時,以工作優先順序「1」的工作為檢索對象。依據是否檢測出以解除旗號為待機旗號的旗號等待工作,處理產生分歧。
(檢測出時)B2.以檢測出之工作為工作E來說明。將工作E之TCB設定成「READY」。又,清除待機旗號的旗號ID。
B3.將工作E之TCB從待機旗號串列移除。
B4.將解除旗號之工作的狀態從RUN狀態遷移至READY。將此工作之TCB追加至工作準備串列。
(未檢測出時)B2.增加旗號計數器。
B3.將解除旗號之工作的狀態從RUN狀態遷移至READY。將此工作之TCB追加至工作準備串列。
一般軟體RTOS,藉由管理此種待機旗號串列,執行旗號相關處理。當解除旗號時,RTOS從複數個WAIT-工作中選擇READY-工作的規則如下。
1.為WAIT-工作(第1條件)。
2.為WAIT-工作中以解除旗號為待機旗號的工作(第2條件)。
3.當此種工作存在複數個時,為工作優先順序最高的工作(第3條件)。
4.當工作優先順序最高的工作存在複數個時,為變成WAIT狀態時間最早的工作(第4條件)。
將此等4個條件總稱為「旗號待機解除條件」。工作處理裝置100之旗號選擇電路234,藉由硬體實現此種RTOS之工作排程功能。
(2)本實施例之硬體RTOS之旗號處理圖14係旗號選擇電路234的電路圖。
此處,亦說明工作0~工作7的8個工作。旗號選擇電路234包含4個第1比較電路300(300a~300d)、2個第2比較電路302(302a,302b)、1個第3比較電路304。又,亦包含8個判定電路306(306a~306h)。
判定電路306,係以來自狀態記憶部220之ST、WR、SID訊號與來自工作切換電路210之表示旗號ID之訊號為輸入的電路。此處輸入之旗號ID,係解除旗號的旗號ID。判定電路306輸出為以解除旗號為待機旗號的旗號等待工作時表示「1」、不是以解除旗號為待機旗號的旗號等待工作時表示「0」的CID訊號。判定電路306,係輸出上述旗號待機解除條件中之第1條件與第2條件相關之判定結果的電路。第1比較電路300以2個工作的ID、PR、TIM及來自判定電路306的CID訊號為輸入。
第1比較電路300,係執行旗號待機解除條件中之第3條件與第4條件相關之判定的電路。第2比較電路302與第3比較電路304亦相同。如上述,RUN工作選擇條件之第2條件及第3條件,與旗號待機解除條件之第3條件及第4條件相同。執行選擇電路232之各比較電路,係比較工作之狀態資料(PR、TIM)的電路。另一方面,旗號選擇電路234之各比較電路亦為比較工作之狀態資料(PR、TIM)的電路。是以,執行選擇電路232之第1比較電路290與旗號選擇電路234之第1比較電路300,係內建相同邏輯的電路,可加以共通化。各工作除了被判定電路306以第1條件與第2條件判定外,亦被傳至第1比較電路300的判定處理。之後,藉由與執行選擇電路232相同的判定處理,從第3比較電路304輸出任一工作ID。待機旗號系統呼叫與解除旗號系統呼叫執行時之處理如下述。
(待機旗號系統呼叫的執行)此處,RUN-工作係以工作J說明。
A1.工作切換電路210從旗號表212檢測於待機旗號系統呼叫指定之旗號的旗號計數器。以下,依旗號計數器的值,處理產生分歧。
(旗號計數器>0時)A2.工作切換電路210減少旗號表212的旗號計數器。
A3.將工作J之工作狀態暫存器258設定成「READY」。此時,工作切換電路210設定RUN-工作之計時器252,開始測量READY經過時間。
(旗號計數器=0時)A2.工作切換電路210,將工作J之工作狀態暫存器258設定成「WAIT」、待機理由暫存器262設定成「旗號等待」、旗號ID暫存器264設定成待機旗號的旗號ID,設定計時器252,開始測量WAIT經過時間。
以此方式,執行待機旗號系統呼叫的工作從RUN狀態遷移至READY或WAIT。
(解除旗號系統呼叫的執行)B1.工作切換電路210將解除旗號的旗號ID輸入至各判定電路306。各判定電路306以此旗號ID為對象判定旗號解除條件中之第1條件及第2條件是否成立。是以,各第1比較電路300根據第3條件及第4條件選擇工作。
(任一個判定電路306輸出「1」、第3比較電路304輸出任一個工作ID時)B2.將檢測出之工作之工作狀態暫存器258設定成「READY」,清除待機理由暫存器262與旗號ID暫存器264,以計時器252測量READY經過時間。
B3.將執行系統呼叫之工作之工作狀態暫存器258設定成「READY」,開始測量READY經過時間。
(任一個判定電路306皆未輸出「1」、第3比較電路304亦未輸出任一個工作ID時)B2.工作切換電路210增加旗號表212的旗號計數器。
B3.將執行系統呼叫之工作之狀態從RUN狀態遷移至READY。
由於狀態記憶部220將狀態資料隨時輸出至旗號選擇電路234,因此當工作切換電路210將旗號ID輸入至判定電路306時,旗號選擇電路234可立即執行選擇處理。
互斥亦與旗號相同,利用工作間之同步處理。互斥與旗號在以下幾點不同。
1.旗號計數器可設定成1以上的整數。相對於此,互斥係旗號計數器為1或0的特殊旗號。當旗號計數器為2以上時,2個以上的工作可獲得相同旗號。然而,當互斥時,可獲得某個互斥的工作恆僅有1個。
2.可藉由解除旗號系統呼叫解除旗號的工作,並不限於藉由待機旗號系統呼叫獲得旗號的工作。相對於此,可藉由解除互斥系統呼叫解除互斥的工作,僅為藉由待機互斥系統呼叫獲得互斥的工作。
當解除互斥時,從複數個WAIT-工作中選擇READY-工作的規則如下。
1.為WAIT-工作(第1條件)。
2.為WAIT-工作中以解除互斥為待機互斥的工作(第2條件)。
3.當此種工作存在複數個時,為工作優先順序最高的工作(第3條件)。
4.當工作優先順序最高的工作存在複數個時,為變成WAIT狀態時間最早的工作(第4條件)。
將此等4個條件總稱為「互斥待機解除條件」。
是以,待機互斥系統呼叫及解除互斥系統呼叫執行時之本實施例之硬體RTOS的處理如下述。在旗號表212,互斥ID與表示該互斥是否佔有任一個工作的佔有狀態資料係相對應保持。佔有狀態資料,當未佔有時為「0」、當佔有時為佔有互斥之工作的工作ID。
(待機互斥系統呼叫的執行)此處,RUN-工作係以工作J說明。A1.工作切換電路210檢測是否佔有於待機互斥系統呼叫指定的互斥。以下,依互斥的佔有狀態,處理產生分歧。
(未佔有互斥時)A2.工作切換電路210記錄執行系統呼叫之工作的工作ID以作為互斥的佔有資料。
A3.將工作J之工作狀態暫存器258設定成「READY」。此時,工作切換電路210設定RUN-工作之計時器252,開始測量READY經過時間。
(佔有互斥時)A2.工作切換電路210,將工作J之工作狀態暫存器258設定成「WAIT」、待機理由暫存器262設定成「互斥等待」、互斥ID暫存器265設定成待機互斥的互斥ID,設定計時器252,開始測量WAIT經過時間。
(解除互斥系統呼叫的執行)B1.工作切換電路210,以執行系統呼叫之工作佔有解除互斥為條件,將解除旗號ID輸入至互斥電路240。互斥電路240亦與圖14相同,包含多段連接的比較電路與判定互斥待機解除條件中之第1條件及第2條件是否成立的判定電路。此判定電路,以此互斥為對象,僅於互斥待機解除條件中之第1條件及第2條件皆成立時輸出「1」。此外,當未佔有解除互斥之工作執行解除互斥系統呼叫時,將該工作之狀態從RUN狀態遷移至READY。
(任一個判定電路輸出「1」、互斥電路240輸出任一個工作ID時)B2.將檢測出之工作之工作狀態暫存器258設定成「READY」,清除待機理由暫存器262與互斥ID暫存器265,以計時器252測量READY經過時間。
B3.將執行系統呼叫之工作之工作狀態暫存器258設定成「READY」,開始測量READY經過時間。
(任一個判定電路皆未輸出「1」、互斥電路240亦未輸出任一個工作ID時)B2.工作切換電路210於旗號表212,將互斥設定成非佔有狀態。
B3.將執行系統呼叫之工作之狀態從RUN狀態遷移至READY。
簡單說明本實施例之事件管理。在事件表214,事件ID與旗標類型(以下,稱為「現行旗標類型」)係相對應記錄。旗標類型係8位元的位元類型。
設定事件系統呼叫,係變更現行旗標類型之設定的系統呼叫,以事件ID與旗標類型(以下,稱為「設定旗標類型」)為參數。當執行設定事件系統呼叫時,就該事件,現行旗標類型變更成與設定旗標類型的邏輯和。例如,當現行旗標類型為「00001100」、設定旗標類型為「00000101」時,現行旗標類型變成「00001101」。以下,對各旗標類型,從左依序稱為第0位元、第1位元、…、第7位元。
待機事件系統呼叫,係用以等待待機事件之現行旗標類型滿足既定條件的系統呼叫,以事件ID、旗標類型(以下,稱為「待機旗標類型」)、旗標條件為參數。當執行待機事件系統呼叫時,判定在現行旗標類型與待機旗標類型之間旗標條件是否成立。旗標條件係邏輯和(OR)或邏輯積(AND)。當旗標條件為邏輯積(AND)時,WAIT解除條件,係就待機旗標類型為「1」的所有位元,現行旗標類型之該位元亦皆為「1」。當旗標條件為邏輯和(OR)時,WAIT解除條件,係就待機旗標類型為「1」的任一位元,現行旗標類型之該位元為「1」。例如,當現行旗標類型為「00001101」、待機旗標類型為「00000011」、旗標條件為「邏輯和(OR)」時,由於待機旗標類型之第6位元及第7位元中,現行旗標類型之第7位元為「1」,因此,此時待機事件系統呼叫之WAIT解除條件成立。另一方面,當旗標條件為「邏輯積(AND)」時,由於現行旗標類型之第6位元為「0」,因此WAIT解除條件不成立。
(1)一般軟體RTOS之事件處理待機事件系統呼叫及設定事件系統呼叫執行時之一般RTOS的處理如下述。一般RTOS為了管理事件,將事件表保持在記憶體上。於此事件表,不僅事件ID、現行旗標類型,通常,以此事件為待機事件之處於WAIT狀態之工作(以下,稱為「事件等待工作」)的工作ID、待機旗標類型、旗標條件係相對應保持。
(待機事件系統呼叫的執行)A1. RTOS從事件表讀取於系統呼叫指定之事件的現行旗標類型。
A2.依旗標條件比較現行旗標類型與待機旗標類型,判定WAIT解除條件是否成立。
(WAIT解除條件成立時)A3.將執行系統呼叫之工作之工作狀態從RUN狀態遷移至READY。
(WAIT解除條件不成立時)A3.在事件表記錄執行系統呼叫之工作的工作ID。
A4.在事件表記錄待機旗標類型。
A5.在事件表記錄旗標條件。
A6.將執行系統呼叫之工作之工作狀態從RUN狀態遷移至WAIT。
(設定事件系統呼叫的執行)B1. RTOS就系統呼叫指定之設定事件,從事件表讀取現行旗標類型、工作ID、待機旗標類型、旗標條件。
B2.將現行旗標類型與設定旗標類型的邏輯和記錄成新的現行旗標類型。
(設定事件不存在事件等待工作時,或即使存在、依據待機旗標類型與旗標條件WAIT解除條件亦不成立時)B3.將執行系統呼叫之工作之工作狀態從RUN狀態遷移至READY。
(設定事件存在事件等待工作、WAIT解除條件成立時)B3.將待機事件之工作之工作狀態從WAIT狀態遷移至READY。
B4.清除事件表之待機工作ID、待機旗標類型、旗標條件。
B5.將執行系統呼叫之工作之工作狀態從RUN狀態遷移至READY。且執行RUN-工作的選擇。
當執行設定事件系統呼叫時,從複數個WAIT-工作中選擇READY-工作的規則如下。
1.為WAIT-工作(第1條件)。
2.為WAIT-工作中以設定事件為待機事件的工作(第2條件)。
3.為比較待機旗標類型、現行旗標類型、旗標條件後,WAIT解除條件成立的工作(第3條件)。
將此等3個條件總稱為「事件待機解除條件」。
(2)本實施例之硬體RTOS之事件處理工作處理裝置100之待機事件系統呼叫及設定事件系統呼叫執行時之處理如下述。於工作處理裝置100內建之旗號表212,事件ID與現行旗標類型係相對應。待機工作ID與待機旗標類型等的資訊係儲存於狀態記憶部220。
(待機事件系統呼叫的執行)A1.工作切換電路210從事件表214讀取現行旗標類型。
A2.工作切換電路210依旗標條件比較現行旗標類型與待機旗標類型,判定WAIT解除條件是否成立。
(WAIT解除條件成立時)A3.將執行系統呼叫之工作之工作狀態暫存器258設定成「READY」。
(WAIT解除條件不成立時)A3.工作切換電路210,分別將執行系統呼叫之工作之工作狀態暫存器258設定成「WAIT」、待機理由暫存器262設定成「事件等待」、事件ID暫存器266設定成待機事件的事件ID、待機旗標暫存器268設定成待機旗標類型、旗標條件暫存器270設定成旗標條件。
(設定事件系統呼叫的執行)B1.工作切換電路210從事件表214讀取現行旗標類型,且將於系統呼叫指定之設定事件的事件ID輸入至事件選擇電路236。
B2.工作切換電路210,將設定旗標類型邏輯累加至事件表214的現行旗標類型。
B3.事件選擇電路236,就輸入之事件ID,選擇事件待機條件成立的工作。此時,不論工作優先順序與WAIT經過時間如何,選擇複數個工作亦可。
(滿足事件待機解除條件的工作存在時)B4.將事件等待工作之工作狀態暫存器258設定成「READY」,清除事件ID暫存器266、待機旗標暫存器268、旗標條件暫存器270。
B5.將執行系統呼叫之工作之工作狀態從RUN狀態遷移至READY。
(滿足事件待機解除條件的工作不存在時)B4.將執行系統呼叫之工作之工作狀態從RUN狀態遷移至READY。
移至WAIT狀態之工作,當WAIT解除條件成立時遷移至READY狀態。然而,由於某些外部因素或應用程式的錯誤(Bug),而妨礙WAIT解除條件成立時,工作無法離開WAIT狀態。因此,一般而言,將工作遷移至WAIT狀態時設定暫停值。暫停值係定期減少,當成為0時,即使WAIT解除條件不成立,工作亦可從WAIT狀態遷移至READY狀態。亦即,可防止工作停止在WAIT狀態暫停值以上的時間。
(1)一般軟體RTOS之暫停處理軟體構成之一般RTOS之情形,在WAIT狀態之工作的TCB設定暫停值,此暫停值係定期減少。RTOS周期性對CPU之處理發出中斷,檢查所有TCB,檢測出暫停值成為0的WAIT-工作。當檢測出此種工作時,RTOS將該工作之工作狀態從WAIT狀態遷移至READY。
(2)本實施例之硬體RTOS之暫停處理另一方面,本實施例之情形,工作切換電路210定期減少各暫停計數器274的暫停值。暫停值,當執行WAIT系系統呼叫時係設定為參數,工作切換電路210在執行該系統呼叫之工作的暫停計數器274設定暫停值。
由於CPU150不介入暫停值的減少處理,因此工作切換電路210能與工作執行處理獨立,更新暫停值。因此,即使CPU150正執行工作時,在工作控制電路200亦自律地執行暫停值的更新。由於狀態資料係隨時輸入至暫停檢測電路238,因此暫停檢測電路238,能以與暫停值更新時序大致相同的時序,檢測暫停值成為0的工作。暫停檢測電路238輸出此種工作的工作ID。工作切換電路210,當從暫停檢測電路238輸入工作ID時,認知產生暫停,傳送HC以停止供應CPU時脈。工作控制電路200將產生暫停之WAIT-工作遷移至READY狀態,且將RUN-工作遷移至READY狀態。工作切換電路210從READY-工作之中選擇下一個待執行工作。又,工作切換電路210再啟動產生暫停之工作的計時器252,測量READY經過時間。
依據此種處理方法,當工作執行中,亦即,當CPU時脈動作中產生暫停時,可即時對CPU150發出中斷,執行工作切換。又,在工作執行中,工作切換電路210不需借助CPU150的處理能力即可獨立執行暫停值的更新處理。
(有限狀態機器之工作切換電路210)圖15係工作切換電路210的狀態遷移圖。
於初始化處理(A1),所有工作處於IDLE狀態。當初始化處理結束時(S10),任一個工作成為RUN-工作、而成為工作執行狀態(A2)。當檢測出中斷要求訊號時(S12),特殊工作成為RUN-工作、執行中斷處理(A3)。當中斷處理結束時(S14),工作切換電路210從一般工作選擇RUN-工作,遷移至A2。
又,於工作執行中(A2),當執行系統呼叫時(S16),執行系統呼叫處理(A4)。當未產生工作切換、亦即RUN-工作的切換時(S18),返回A2。另一方面,當藉由系統呼叫處理(A4)產生工作切換時(S20),工作切換電路210根據執行選擇電路232的輸出執行RUN-工作的選擇(A5)。當工作切換結束時(S22),處理狀態移至A2。
最後,說明僅構裝工作處理裝置100之主要元件之儲存電路120與工作控制電路200之其中一者的情形。
(未裝載工作控制電路200之類型的工作處理裝置100)圖16係圖5之工作處理裝置100中,未裝載工作控制電路200之工作處理裝置100的電路圖。
替代未裝載工作控制電路200,追加暫存器切換控制電路322與處理資料保持部320。由於未裝載工作控制電路200,因此工作排程功能係藉由軟體RTOS實現。是以,當工作切換時,RTOS必須暫時取得CPU150的使用權。一般而言,處理資料保持部320保持RTOS用的處理資料。當RTOS取得CPU150的使用權時,處理資料保持部320替換處理資料保持部320之RTOS用的處理資料與特殊暫存器156之工作用的處理資料。以下,以從工作A至工作B的工作切換說明其處理過程。
A1.當工作A執行系統呼叫時,將系統呼叫之變數與系統呼叫之ID記錄於汎用暫存器158的一部分。
A2.暫存器切換控制電路322將工作A之處理資料移至處理資料保持部320,將處理資料保持部320之RTOS用處理資料載入至處理暫存器154。在此階段,RTOS取得CPU150的使用權。
A3.暫存器切換控制電路322將寫入訊號輸入至保留暫存器110a,將處理資料保持部320之工作A用處理資料儲存至保留暫存器110。
A4. RTOS根據記錄於汎用暫存器158之系統呼叫的變數與ID,執行對應於系統呼叫的處理。又,將工作A之TCB之工作狀態資料設定成「READY」,在工作準備串列追加工作A之TCB。
B1.接著,RTOS依據上述RUN工作選擇條件選擇RUN-工作,此處,選擇工作B。
B2. RTOS指示暫存器切換控制電路322,將指定工作B之工作選擇訊號輸入至載入選擇電路112。將處理資料從保留暫存器110b移至處理資料保持部320。
B3.暫存器切換控制電路322替換處理資料保持部320之工作B用處理資料與處理暫存器154之RTOS用處理資料。據此,工作B取得CPU150的使用權。
依據此種處理方法,相較於裝載工作控制電路200之圖5的工作處理裝置100,可縮小工作處理裝置100整體的電路尺寸。雖RTOS實現為軟體,但能以來自暫存器切換控制電路322之訊號硬體地控制處理資料的載入、儲存。將分別連接處理暫存器154、處理資料保持部320、載入選擇電路112、保留暫存器110之匯流排設定成可平行傳送處理資料的位元數時,相較於將處理資料儲存至TCB及從TCB載入處理資料,可實現高速的工作切換。
(未裝載儲存電路120之類型的工作處理裝置100)圖17係圖5之工作處理裝置100中,未裝載儲存電路120之工作處理裝置100的電路圖。
替代未裝載儲存電路120,追加中斷介面電路324。由於未裝載儲存電路120,處理資料係儲存於記憶體的TCB。處理資料的載入、儲存係藉由軟體庫的RTOS實現。是以,當工作切換時,RTOS必須暫時取得CPU150的使用權。以下,以從工作A至工作B的工作切換說明其處理過程。
當藉由執行系統呼叫產生工作切換時,首先,軟體RTOS將工作A的處理資料儲存於工作A的TCB。接著,將RTOS用的處理資料載入至處理暫存器154。此時的處理方法,與以圖3說明之內容相同。
軟體RTOS將系統呼叫之參數寫入中斷介面電路324。執行控制電路152停止CPU150之CPU時脈。中斷介面電路324使工作控制電路200執行工作切換。首先,工作切換電路210將工作A之工作狀態暫存器258設定成READY,藉由來自工作選擇電路230的輸出選擇下一個RUN-工作之工作B。工作切換電路210指示中斷介面電路324以載入工作B的處理資料。此處,中斷介面電路324使執行控制電路152再開始CPU時脈。又,中斷介面電路324通知軟體RTOS工作B已被選擇。軟體RTOS存取工作B的TCB,將工作B的處理資料載入至處理暫存器154。
依據此種處理方法,相較於裝載儲存電路120之圖5的工作處理裝置100,可縮小工作處理裝置100整體的電路尺寸。雖RTOS之功能的一部分係實現為軟體,但工作選擇處理能藉由工作控制電路200實現。
相較於圖2及圖3所說明之軟體RTOS,圖16及圖17之工作處理裝置100,皆能使RTOS之功能的一部分硬體化。如圖16所說明,由於存在儲存電路120,因此處理資料的儲存、載入不需存取TCB。因此,能藉由暫存器切換控制電路322執行處理資料的儲存、載入處理。又,如圖17所說明,由於存在工作控制電路200,因此軟體RTOS能將工作選擇功能讓給工作控制電路200。
如圖5所說明,裝載儲存電路120與工作控制電路200之工作處理裝置100的情形,可將RTOS之工作排程功能完全硬體化。由於當工作切換時不需存取記憶體的TCB,因此工作切換處理可更快速。依據本發明人的實驗,相較於圖3等所說明之一般軟體RTOS,確認本實施例之工作處理裝置100能以大約100倍的速度動作。
以上,根據實施例說明本發明。實施形態係例示,此等各構成元件與各處理步驟的組合能有各種變形例,且此等變形例亦在本發明的範圍內,此為本發明所屬技術領域中具有通常知識者應當理解之事。
除此之外,請求項記載之各構成元件應達成的功能,係藉由本實施例所示之各功能方塊的單體、或此等的連動而實現,此亦為本發明所屬技術領域中具有通常知識者應當理解之事。
依據本發明,可實現於多工處理更高效率之工作的執行控制。
84...CPU
86...汎用暫存器
88...特殊暫存器
90...執行控制電路
92...處理暫存器
94...運算電路
96...輸入選擇器
98...輸出選擇器
100...工作處理裝置
110...保留暫存器
110_0~110_n...保留暫存器
112...載入選擇電路
120...儲存電路
150...CPU
152...執行控制電路
154...處理暫存器
156...特殊暫存器
158...汎用暫存器
160...運算電路
162...輸入選擇器
164...輸出選擇器
170...指令解碼器
172...第1AND閘
174...第2AND閘
176...OR閘
200...工作控制電路
210...工作切換電路
212...旗號表
214...事件表
220...狀態記憶部
220_0~220_n...狀態記憶部
230...工作選擇電路
232...執行選擇電路
234...旗號選擇電路
236...事件選擇電路
238...暫停檢測電路
240...互斥電路
242...檢測電路
250...狀態暫存器
252...計時器
254...工作ID暫存器
256...工作優先順序暫存器
258...工作狀態暫存器
260...工作啟動位址暫存器
262...待機理由暫存器
264...旗號ID暫存器
265...互斥ID暫存器
266...事件ID暫存器
268...待機旗標暫存器
270...旗標條件暫存器
272...旗標初始化暫存器
274...暫停計數器
280...優先順序指標
290a~290d...第1比較電路
292a,292b...第2比較電路
294...第3比較電路
296a~296h...判定電路
300a~300d...第1比較電路
302a,302b...第2比較電路
304...第3比較電路
306a~306h...判定電路
320...處理資料保持部
322...暫存器切換控制電路
324...中斷介面電路
圖1係工作的狀態遷移圖。
圖2係一般RTOS的概念圖。
圖3係軟體RTOS所執行之一般CPU的電路圖。
圖4係本實施例之RTOS的概念圖。
圖5係本實施例之工作處理裝置的電路圖。
圖6係圖5之CPU的電路圖。
圖7係顯示執行控制電路152使CPU時脈停止之構造的電路圖。
圖8(a)係顯示中斷要求訊號產生時之各種訊號之關係的時序圖。
圖8(b)係顯示系統呼叫執行時之各種訊號之關係的時序圖。
圖9係用以說明管線處理之CPU時脈之停止時序的示意圖。
圖10係顯示狀態記憶部與工作切換電路之關係的電路圖。
圖11係顯示一般RTOS之RUN-工作選擇時所利用之工作準備串列的圖。
圖12係執行選擇電路的電路圖。
圖13係顯示一般RTOS之旗號處理所利用之待機旗號串列的圖。
圖14係旗號選擇電路的電路圖。
圖15係工作切換電路的狀態遷移圖。
圖16係圖5之工作處理裝置中,未裝載工作控制電路之工作處理裝置的電路圖。
圖17係圖5之工作處理裝置中,未裝載儲存電路之工作處理裝置的電路圖。
100...工作處理裝置
110...保留暫存器
110_0~110_n...保留暫存器
112...載入選擇電路
120...儲存電路
150...CPU
152...執行控制電路
154...處理暫存器
156...特殊暫存器
158...汎用暫存器
160...運算電路
200...工作控制電路
210...工作切換電路
212...旗號表
214...事件表
220...狀態記憶部
220_0~220_n...狀態記憶部
230...工作選擇電路
Claims (11)
- 一種工作處理裝置,其特徵在於,具備:處理暫存器,暫時保持用以執行工作的資料;執行控制電路,將指令及運算元從記憶體載入至該處理暫存器,依該處理暫存器之指令及運算元執行工作;複數個狀態暫存器,係用以保持用於工作排程之各工作之狀態資料的暫存器,與複數個工作分別相對應;工作切換電路,用以執行工作的切換;以及工作選擇電路,以從複數個該狀態暫存器平行輸出之狀態資料為輸入,藉由既定選擇條件選擇工作;該執行控制電路,藉由指令解碼器判定執行對象之指令是否為既定系統呼叫指令,為該既定系統呼叫指令時將既定系統呼叫訊號傳至該工作切換電路;該工作選擇電路,不論是否有該既定系統呼叫指令,從表示可執行之待機狀態之READY狀態之工作中選擇執行對象之工作;該工作切換電路,藉由接收該系統呼叫訊號時之來自該工作選擇電路的輸出,選擇下一個執行對象之工作,將該處理暫存器的資料儲存於既定記憶區域,且將與執行中之工作對應之該狀態暫存器的狀態資料從表示工作執行中的RUN狀態設定變更成其他狀態,就選擇之工作,將儲存於該記憶區域之資料載入至該處理暫存器,且將與該工作對應之該狀態暫存器的狀態資料從READY狀態變更成RUN狀態,藉此切換執行對象之工作。
- 如申請專利範圍第1項之工作處理裝置,其中,該工作選擇電路內建多階段連接的比較電路;第1段比較電路,根據該既定選擇條件比較2個以上工作的狀態資料,將任一個工作之狀態資料輸出至第2段比較電路;第n(n為2以上的自然數)段比較電路,根據該既定選擇條件比較從位於第(n-1)段之複數個比較電路輸出的狀態資料,輸出任一個工作之狀態資料;將最後段之比較電路所特定之工作選擇為執行對象。
- 如申請專利範圍第2項之工作處理裝置,其中,第k(k為自然數)段比較電路,在輸入之狀態資料皆不滿足該既定選擇條件時,不輸出任一個工作之狀態資料。
- 如申請專利範圍第1項之工作處理裝置,其中,該狀態暫存器保持工作優先度作為狀態資料的一部分;該工作選擇電路,當工作切換時READY狀態之工作有複數個時,選擇該等工作之中工作優先度最高的工作作為執行對象。
- 如申請專利範圍第4項之工作處理裝置,其中,該工作選擇電路,當工作切換時READY狀態之工作存在複數個、且該等工作之中工作優先度設定為最高的工作亦存在複數個時,選擇該等工作之中設定為READY狀態後之經過時間最長的工作作為執行對象。
- 如申請專利範圍第5項之工作處理裝置,其進一步具備與複數個工作分別相對應的複數個計時器; 該工作切換電路,當工作設定成READY狀態時,設定該工作相關之計時器,開始測量經過時間。
- 如申請專利範圍第1項之工作處理裝置,其進一步具備使旗號ID與旗號計數器相對應而保持的旗號資訊保持部;該執行控制電路,在指定旗號ID來執行用以要求旗號之系統呼叫指令之待機旗號指令之情形時:該工作切換電路,當指定之旗號之旗號計數器為1以上時,除了減少旗號計數器之外,亦將執行該待機旗號指令之工作的狀態資料設定成READY狀態,當旗號計數器為0以下時,將執行該待機旗號指令之工作設定成表示既定條件成立前無法執行狀態的WAIT狀態,且將該指定之旗號ID設定於該狀態暫存器以作為該工作之WAIT狀態解除條件;該執行控制電路,在指定旗號ID來執行用以解除旗號之系統呼叫指令之解除旗號指令之情形時:該工作選擇電路,就指定之旗號ID,以既定選擇條件選擇處於WAIT狀態之工作中之任一個工作;該工作切換電路,當該工作選擇電路選擇任一個工作時,將該工作之狀態資料設定成READY狀態,當未選擇任一個工作時,增加該指定之旗號的旗號計數器。
- 如申請專利範圍第1項之工作處理裝置,其進一步具備使事件ID與第1旗標類型相對應而保持的事件資訊保持部; 該執行控制電路,在指定事件ID與第2旗標類型來執行用以等待事件成立之系統呼叫指令之待機事件指令之情形時:該工作切換電路,就指定之事件,當在第1旗標類型與第2旗標類型之間既定運算條件成立時,將執行該待機事件指令之工作的狀態資料設定成READY狀態,當不成立時,將執行該待機事件指令之工作設定成表示既定條件成立前無法執行狀態的WAIT狀態,且將該指定之事件ID與第2旗標類型設定於該狀態暫存器以作為該工作之WAIT狀態解除條件;該執行控制電路,在指定事件ID與第3旗標類型來執行用以設定第1旗標類型之系統呼叫指令之設定事件指令之情形時:該工作切換電路,就指定之事件,將第3旗標類型邏輯累加至第1旗標類型;該工作選擇電路,就該指定之事件ID,選擇處於WAIT狀態的工作;該工作切換電路,當該工作選擇電路選擇任一個工作時,以在該工作之該狀態暫存器所保持之第2旗標類型與第1旗標類型之間之該既定運算條件成立為條件,將選擇之工作從WAIT狀態設定變更成READY狀態。
- 如申請專利範圍第1項之工作處理裝置,其中,該狀態暫存器保持暫停計數器作為狀態資料的一部分;在該執行控制電路執行帶有暫停條件的系統呼叫指令 之情形時:該工作切換電路,將執行帶有該暫停條件之系統呼叫指令之工作的狀態資料設定成WAIT狀態,且開始暫停計數器的更新;該工作選擇電路,檢測處於WAIT狀態之工作中之已暫停的工作;該工作切換電路,將已暫停工作的狀態資料從WAIT狀態設定變更成READY狀態。
- 如申請專利範圍第1項之工作處理裝置,其進一步具備使互斥ID與互斥之取得狀態相對應而保持的互斥資訊保持部;該執行控制電路,在指定互斥ID來執行用以要求互斥之系統呼叫指令之待機互斥指令之情形時:該工作切換電路,當指定之互斥為非佔有狀態時,設定變更成佔有狀態,將執行該待機互斥指令之工作的狀態資料設定成READY狀態,當為佔有狀態時,將執行該待機互斥指令之工作設定成表示既定條件成立前無法執行狀態的WAIT狀態,且將該指定之互斥ID設定於該狀態暫存器以作為該工作之WAIT狀態解除條件;該執行控制電路,在指定互斥ID來執行用以解除互斥之系統呼叫指令之解除互斥指令之情形時:該工作選擇電路,就指定之互斥ID,以既定選擇條件選擇處於WAIT狀態之工作中之任一個工作;該工作切換電路,當指定之互斥設定成非佔有狀態、該 工作選擇電路選擇任一個工作時,將選擇之工作的狀態資料設定成READY狀態。
- 如申請專利範圍第1項之工作處理裝置,其進一步具備用以儲存該處理暫存器之資料,與複數個工作分別相對應的複數個保留暫存器;該工作切換電路,當接收該既定系統呼叫訊號時,將該處理暫存器之資料儲存於與執行中工作相對應之該保留暫存器,將與該工作選擇電路選擇之工作相對應之該保留暫存器之資料載入至該處理暫存器。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2006/316656 WO2008023427A1 (fr) | 2006-08-24 | 2006-08-24 | Dispositif de traitement de tâche |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200825923A TW200825923A (en) | 2008-06-16 |
TWI426451B true TWI426451B (zh) | 2014-02-11 |
Family
ID=39106521
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW096131160A TWI426451B (zh) | 2006-08-24 | 2007-08-23 | Work processing device |
Country Status (4)
Country | Link |
---|---|
US (1) | US8327379B2 (zh) |
JP (1) | JP4127848B2 (zh) |
TW (1) | TWI426451B (zh) |
WO (1) | WO2008023427A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8106680B1 (en) * | 2008-07-11 | 2012-01-31 | Altera Corporation | Programmable logic device with a self-power down mechanism |
JP4965638B2 (ja) * | 2009-12-25 | 2012-07-04 | インターナショナル・ビジネス・マシーンズ・コーポレーション | タスクの切り換えを制御するシステムおよび方法 |
CN102122160B (zh) * | 2010-12-31 | 2012-11-28 | 重庆新媒农信科技有限公司 | 多业务状态控制、加载和卸载方法 |
EP2672341B1 (en) * | 2011-01-31 | 2015-09-09 | Toyota Jidosha Kabushiki Kaisha | Safety control device and safety control method |
JP6153925B2 (ja) * | 2012-05-24 | 2017-06-28 | ルネサスエレクトロニクス株式会社 | タスク処理装置 |
JP6214142B2 (ja) * | 2012-10-09 | 2017-10-18 | キヤノン株式会社 | 情報処理装置、情報処理方法およびプログラム |
KR20150128680A (ko) * | 2013-03-12 | 2015-11-18 | 마이크로칩 테크놀로지 인코포레이티드 | 프로그램 가능한 cpu 레지스터 하드웨어 컨텍스트 스왑 메커니즘 |
WO2016110954A1 (ja) * | 2015-01-07 | 2016-07-14 | 富士通株式会社 | タスク切替支援方法、タスク切替支援プログラム、及び情報処理装置 |
US10768984B2 (en) * | 2015-06-11 | 2020-09-08 | Honeywell International Inc. | Systems and methods for scheduling tasks using sliding time windows |
US10095541B2 (en) * | 2016-09-21 | 2018-10-09 | International Business Machines Corporation | Executing memory access while performing task switching |
JP2020144606A (ja) * | 2019-03-06 | 2020-09-10 | 株式会社リコー | 情報処理システム、情報処理方法、情報処理装置及びプログラム |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6021425A (en) * | 1992-04-03 | 2000-02-01 | International Business Machines Corporation | System and method for optimizing dispatch latency of tasks in a data processing system |
TW200522651A (en) * | 2003-12-24 | 2005-07-01 | Inst Information Industry | Multitasking system level method for Hw/Sw co-verification |
US20050149931A1 (en) * | 2003-11-14 | 2005-07-07 | Infineon Technologies Ag | Multithread processor architecture for triggered thread switching without any cycle time loss, and without any switching program command |
TW200530920A (en) * | 2003-10-23 | 2005-09-16 | Microchip Tech Inc | Microcontroller instruction set |
US20060155973A1 (en) * | 2005-01-13 | 2006-07-13 | Soltis Donald C Jr | Multithreaded hardware systems and methods |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0916409A (ja) | 1995-06-30 | 1997-01-17 | Matsushita Electric Ind Co Ltd | マイクロコンピュータ |
JPH1139171A (ja) * | 1997-07-18 | 1999-02-12 | Masaharu Imai | マルチタスク処理装置、マルチタスク処理制御方法及び制御プログラム記憶媒体 |
JPH11272480A (ja) | 1998-03-24 | 1999-10-08 | Nippon Telegr & Teleph Corp <Ntt> | オンチップリアルタイムos |
JP2001075820A (ja) | 1999-09-07 | 2001-03-23 | Oki Electric Ind Co Ltd | リアルタイムos装置 |
JP3813930B2 (ja) | 2002-01-09 | 2006-08-23 | 松下電器産業株式会社 | プロセッサ及びプログラム実行方法 |
JP2004220070A (ja) | 2003-01-09 | 2004-08-05 | Japan Science & Technology Agency | コンテキスト切り替え方法及び装置、中央演算装置、コンテキスト切り替えプログラム及びそれを記憶したコンピュータ読み取り可能な記憶媒体 |
JP2006092042A (ja) * | 2004-09-21 | 2006-04-06 | Sanyo Electric Co Ltd | 情報処理装置及びコンテキスト切り替え方法 |
-
2006
- 2006-08-24 US US12/281,331 patent/US8327379B2/en active Active
- 2006-08-24 JP JP2007538207A patent/JP4127848B2/ja active Active
- 2006-08-24 WO PCT/JP2006/316656 patent/WO2008023427A1/ja active Application Filing
-
2007
- 2007-08-23 TW TW096131160A patent/TWI426451B/zh active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6021425A (en) * | 1992-04-03 | 2000-02-01 | International Business Machines Corporation | System and method for optimizing dispatch latency of tasks in a data processing system |
TW200530920A (en) * | 2003-10-23 | 2005-09-16 | Microchip Tech Inc | Microcontroller instruction set |
US20050149931A1 (en) * | 2003-11-14 | 2005-07-07 | Infineon Technologies Ag | Multithread processor architecture for triggered thread switching without any cycle time loss, and without any switching program command |
TW200522651A (en) * | 2003-12-24 | 2005-07-01 | Inst Information Industry | Multitasking system level method for Hw/Sw co-verification |
US20060155973A1 (en) * | 2005-01-13 | 2006-07-13 | Soltis Donald C Jr | Multithreaded hardware systems and methods |
Also Published As
Publication number | Publication date |
---|---|
JP4127848B2 (ja) | 2008-07-30 |
US20090183163A1 (en) | 2009-07-16 |
JPWO2008023427A1 (ja) | 2010-01-07 |
TW200825923A (en) | 2008-06-16 |
WO2008023427A1 (fr) | 2008-02-28 |
US8327379B2 (en) | 2012-12-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI426452B (zh) | Work processing device | |
TWI416413B (zh) | Work processing device | |
TWI520056B (zh) | Virtual queue processing circuit and work processing device | |
TWI426451B (zh) | Work processing device | |
JP6153925B2 (ja) | タスク処理装置 | |
TWI476696B (zh) | Work processing device | |
CN102436393B (zh) | 任务处理装置 | |
JP2018180768A (ja) | 半導体装置 | |
JP2017123190A (ja) | タスク処理装置 | |
JP5204740B2 (ja) | タスク処理装置 | |
JP2008269597A (ja) | タスク処理装置 | |
JP2019003710A (ja) | タスク処理装置 |