TWI520056B - Virtual queue processing circuit and work processing device - Google Patents

Virtual queue processing circuit and work processing device Download PDF

Info

Publication number
TWI520056B
TWI520056B TW103103900A TW103103900A TWI520056B TW I520056 B TWI520056 B TW I520056B TW 103103900 A TW103103900 A TW 103103900A TW 103103900 A TW103103900 A TW 103103900A TW I520056 B TWI520056 B TW I520056B
Authority
TW
Taiwan
Prior art keywords
work
state
circuit
flag
register
Prior art date
Application number
TW103103900A
Other languages
English (en)
Other versions
TW201421357A (zh
Inventor
Naotaka Maruyama
Original Assignee
Renesas Electronics Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Renesas Electronics Corp filed Critical Renesas Electronics Corp
Publication of TW201421357A publication Critical patent/TW201421357A/zh
Application granted granted Critical
Publication of TWI520056B publication Critical patent/TWI520056B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/10Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using random access memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Multi Processors (AREA)
  • Hardware Redundancy (AREA)

Description

虛擬佇列處理電路及工作處理裝置
本發明係關於一種佇列處理技術。
在撰寫電腦程式時,「佇列(Queue)」是慣用且使用頻率高的演算法。因此,佇列處理之高速化有助於提昇電腦程式的處理速度。專利文獻1所揭示之發明,係藉由佇列之慣用演算法的硬體構裝來謀求佇列處理之高速化。
專利文獻1:日本特開平11-234302號公報
專利文獻2:日本特開平11-272480號公報
專利文獻3:日本特開2001-75820號公報
非專利文獻1:森久直、坂卷佳壽美、重松宏志「用於箝入式控制系統之即時OS的硬體化(Hardware implementation of a real-time operating system for embedded control system)」、東京都立產業技術研究所研究報告、日本、2005年8月4日、p.55-58
然而,即使是FIFO(先進先出:First-In First-Out)之佇列,視情形有時亦會有欲進行LIFO(後進先出:Last-In First-Out)之動作的情形。或者,有時亦會有以LIFO為基本而欲進行FIFO之動作的情形。本發明人, 想到藉由亦可對應LIFO之特殊佇列的演算法(以下,稱為「雙放入型佇列演算法」)的硬體構裝,來進一步提昇電腦程式的處理速度或開發產率。特別是,雙放入型佇列演算法,在藉由硬體邏輯實現OS(Operating System)之工作排程之點,認為是有效的。
本發明人根據上述著眼點而完成本發明,其主要目的在於提供一種用以將可對應FIFO與LIFO之兩者之雙放入型佇列演算法進行硬體構裝的技術。
本發明之形態為虛擬佇列處理電路。
此電路包含控制對複數種類之虛擬佇列進行複數個要素之放入與取出的佇列控制電路,及對應各要素而設置、使放入對象之虛擬佇列與其放入順序相對應而保持的複數個佇列暫存器。
佇列控制電路,當輸入順向放入指令時,將在虛擬佇列之末端放入要素之命令設定在該要素之佇列暫存器,當輸入逆向放入指令時,將在虛擬佇列之前端放入要素之命令設定在該要素之佇列暫存器,當輸入取出指令時,將從虛擬佇列之前端取出要素之命令設定在該要素之佇列暫存器。根據各佇列暫存器之設定資訊來管理複數種類之虛擬佇列。
本發明之另一形態為工作處理裝置。
此裝置具備處理暫存器,將資料從記憶體載入至處理暫存器、依處理暫存器之資料執行工作的執行控制電路,儲存各工作之狀態資料的複數個狀態暫存器,執行工作切換的工作切換電路,及根據既定選擇條件選擇工作的工作選擇電路。
狀態暫存器,使對應工作之執行狀態之虛擬佇列與對虛擬佇 列之放入順序相對應而保持。工作切換電路,藉由控制對複數種類之虛擬佇列進行工作之放入與取出,來執行工作切換。
執行中之第1工作執行系統呼叫指令時,工作選擇電路,將對應READY(準備)狀態之位於虛擬佇列之前端的第2工作選擇作為下一個執行對象。
工作切換電路,從第2工作之狀態暫存器清除虛擬佇列之設定,對第1工作之狀態暫存器,設定對應新的執行狀態的虛擬佇列與其放入順序。工作切換電路,使處理暫存器之資料保留在既定記憶區域,且藉由將第2工作相關之保留在記憶區域之資料載入至處理暫存器,以切換成為執行對象的工作。
此外,以上構成要素之任意組合,或以方法、系統表現本發明者,作為本發明之形態亦有效。
根據本發明,可藉由硬體邏輯實現可對應FIFO與LIFO之兩者之演算法。
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,250_0,250_1,250_2,250_3‧‧‧狀態暫存器
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‧‧‧中斷介面電路
400‧‧‧主電路
402‧‧‧寫入電路
404‧‧‧佇列控制電路
406‧‧‧最大值選擇電路
410_0,410_1,410_2,410_3‧‧‧工作ID暫存器
412_0,412_1,412_2,412_3‧‧‧工作優先順序暫存器
414_0,414_1,414_2,414_3‧‧‧佇列順序暫存器
416_0,416_1,416_2,416_3‧‧‧佇列辨別暫存器
420_0,420_1‧‧‧暫存器值產生電路
422a,422b‧‧‧第1比較電路
424a‧‧‧第2比較電路
426a~426d‧‧‧判定電路
430a,430b‧‧‧第1比較電路
432a‧‧‧第2比較電路
434a~434d‧‧‧判定電路
圖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之工作處理裝置中,未裝載儲存電路之工作處理裝置的電路圖。
圖18係改良例之工作處理裝置的電路圖。
圖19係改良例之工作控制電路之一部分的電路圖。
圖20係佇列控制電路的電路圖。
圖21係顯示虛擬佇列與工作之關係的概念圖。
圖22係對應圖21之狀態暫存器的資料結構圖。
圖23係將工作(E4)順向放入圖21之虛擬佇列時的概念圖。
圖24係對應圖23之狀態暫存器的資料結構圖。
圖25係將工作(E5)順向放入圖23之虛擬佇列時的概念圖。
圖26係對應圖25之狀態暫存器的資料結構圖。
圖27係顯示順向放入之處理過程的流程圖。
圖28係最大值選擇電路之一部分的電路圖。
圖29係將工作(E6)逆向放入圖25之虛擬佇列時的概念圖。
圖30係對應圖29之狀態暫存器的資料結構圖。
圖31係顯示逆向放入之處理過程的流程圖。
圖32係工作選擇電路之一部分的電路圖。
圖33係從圖29之虛擬佇列取出工作(E3)時的概念圖。
圖34係對應圖33之狀態暫存器的資料結構圖。
圖35係顯示取出之處理過程的流程圖。
圖36係顯示再執行優先型工作排程中之虛擬佇列與工作之關係的第1概念圖。
圖37係顯示再執行優先型工作排程中之虛擬佇列與工作之關係的第2概念圖。
不限於個人電腦等的汎用機器用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仍具有許多優點。
近年來,嚴格要求在一定時間內完成處理之即時OS(以下,稱為「RTOS(Real-Time Operating System)」)以箝入式系統(Embedded System)為中心逐漸普及。在此種時間要求嚴格的RTOS,工作切換時之酬載有可能對系統整體之效能造成大的影響。本實施例之工作處理裝置100,係藉由電子電路實現多工OS之工作排程,再者,藉由將可對應FIFO與LIFO之兩 者之雙放入型佇列演算法構裝為硬體邏輯,以提昇多工OS之處理效率。
首先,本實施例中,將藉由電子電路實現多工OS之工作排程之工作處理裝置100說明為「基本例」。之後,將藉由雙放入型演算法之構裝來實現與一般軟體之多工OS同等之工作排程之工作處理裝置100說明為「改良例」。以下,「本實施例」之敘述原則上表示「基本例」及「改良例」之兩者。
(基本例)
本實施例所示之工作處理裝置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種類之系統呼叫為對象進行說明,但除此以外當然亦可構裝各種系統呼叫。
(一般RTOS的設計思想)
圖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用的程式執行動作。其處理過程如下述。
(工作A之上下文資訊的儲存)
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。
(工作B之上下文資訊的載入)
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專用於工作選擇處理,實現更快速的工作切換。
(工作處理裝置100之RTOS的硬體化)
圖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之處理為中心,與一般技術比較並說明。
(RUN-工作選擇)
(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-工作之狀態遷移)
此處,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的暫存器儲存區。
(READY-工作之狀態遷移)
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-工作的狀態遷移)
此處,RUN-工作係以工作J說明。
A1.工作切換電路210將工作J之工作狀態暫存器258設定成「READY」。
A2.工作切換電路210設定工作J之計時器252開始測量READY經過時間。
以此方式,工作J從RUN狀態遷移至READY。如上述, 將處理資料儲存於工作J之保留暫存器110。由於連接處理暫存器154與保留暫存器110的匯流排可平行傳送處理資料,因此可在1個時脈時間執行A1與A2的處理。
(READY-工作的狀態遷移)
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倍的速度動作。
(改良例)
接著,作為改良例,說明將雙放入型佇列演算法進行硬體構裝之工作處理裝置100。基本例之工作處理裝置100,裝載根據計時器管理之工作排程功能。基本例之工作排程,係「只有在工作優先順序相同時,優先將執行權分配至等待時間長的工作」之演算法。以下,將此種工作排程稱為「公平型工作排程」。
圖11中,說明了根據公平型工作排程之概念之工作準備串列的管理方法。當RUN-工作之工作J返回READY狀態時,係連結至最後端之工作F之後。由於在工作J之後是工作A成為RUN-工作,因此各工作之TCB,依工作D、…、工作F、工作J之順序連結至工作優先順序「0」的優先順序指標280。工作J,至少在工作F之執行結束前不會被賦予執行權。公平型工作排程之處理方法,近似於FIFO,亦即佇列之演算法。由於 為時間管理之演算法,因此可藉由計時器管理將公平型工作排程進行硬體構裝。
另一方面,於軟體OS,亦大多採用「只有在工作優先順序相同時,優先將執行權分配至暫時成為RUN-工作的工作」的工作排程。以下,將此種工作排程稱為「再執行優先型工作排程」。於再執行優先型工作排程,當RUN-工作之工作J返回READY狀態時,不是連結至最後端,而是***至前端。由於在工作J之後是工作A成為RUN-工作,因此各工作之TCB,依工作J、工作D、…、工作F之順序連結至工作優先順序「0」的優先順序指標280。工作J,在工作A結束後,在工作D、工作F之前再次被賦予執行權。當存在有暫時被賦予執行權後,僅可能總合執行之類型的工作時,再執行優先型工作排程是有效的。再執行優先型工作排程,包含LIFO,亦即堆疊的演算法。於改良例,藉由以FIFO為基本、亦可對應LIFO之雙放入型佇列演算法之硬體構裝,來實現再執行優先型工作排程。
此外,不限於再執行優先型工作排程,雙放入型佇列演算法於一般應用程式亦有用。因此,雙放入型佇列演算法之硬體構裝,於提昇各種電腦程式之處理速度上是有效的。
圖18係改良例之工作處理裝置100的電路圖。
改良例之工作處理裝置100,亦包含CPU150、儲存電路120、及工作控電路200。然而,改良例之工作切換電路210,包含主電路400、寫入電路402、佇列控制電路404、及最大值選擇電路406。主電路400,係具備與基本例之工作切換電路210大致相同功能的電路。因此,改良例之工作切換電路210之構成,係作為基本例之工作切換電路210之主 電路400外追加寫入電路402、佇列控制電路404、及最大值選擇電路406。所有工作之所有狀態資料,從各狀態記憶部220不僅隨時輸出至工作選擇電路230,亦隨時輸出至最大值選擇電路406或佇列控制電路404。
圖19係改良例之工作控制電路200之一部分的電路圖。
工作控制電路200之基本構成,與圖10所示之電路構成大致相同。對應各工作之狀態暫存器250,包含工作ID暫存器410、工作優先順序暫存器412、佇列順序暫存器414、及佇列辨別暫存器416。狀態暫存器250亦可包含其他暫存器,但此處以雙放入型佇列演算法相關之暫存器群組為中心來說明。
(A)工作ID暫存器410:作為要素ID的一種,儲存工作ID。與基本例所示之工作ID暫存器254相同。從工作ID暫存器410隨時輸出表示工作ID的EID_S訊號。
(B)工作優先順序暫存器412:儲存工作優先順序(PR)。與基本例所示之工作優先順序暫存器256相同。隨時輸出PR_S訊號。
(C)佇列順序暫存器414:儲存表示對後述虛擬佇列之放入順序的「順序值(ODR)」。順序值愈大,表示放入至虛擬佇列愈深,詳細後述。順序值,係作為ODR_S訊號而隨時輸出。
(D)佇列辨別暫存器416:儲存用以辨別虛擬佇列之「佇列ID(QID)」。作為QID_S訊號而隨時輸出。
工作優先順序暫存器412、佇列順序暫存器414、及佇列辨別暫存器416,特別具有用以管理虛擬佇列之佇列暫存器的功能。
虛擬佇列係對應工作狀態之佇列。例如,QID=0之虛擬佇 列(以下,表記為「虛擬佇列(0)」)對應READY狀態,虛擬佇列(1)對應旗號等待狀態,虛擬佇列(2)對應互斥等待狀態。或者,虛擬佇列(1)對應旗號ID=0的旗號等待狀態,虛擬佇列(2)對應旗號ID=1的旗號等待狀態。QID與工作狀態之對應,以軟體任意設定即可。
當工作A為READY狀態時,在佇列辨別暫存器416_A設定對應READY狀態之虛擬佇列的QID。工作選擇電路230或佇列控制電路404,藉由參照各佇列辨別暫存器416,可判別各工作的工作狀態。因此,佇列辨別暫存器416,具有與基本例之工作狀態暫存器258、待機理由暫存器262、旗號ID暫存器264、及互斥ID暫存器265、事件ID暫存器266等相同的功能。
虛擬佇列並非物理上存在,係藉由佇列順序暫存器414或佇列辨別暫存器416之設定內容而想像之概念性佇列,此點非常重要。例如,對各佇列辨別暫存器416與佇列順序暫存器414進行下述設定時,
工作A:QID=0、ODR=0
工作B:QID=0、ODR=1
工作C:QID=0、ODR=2
工作D:QID=1、ODR=0
表示在虛擬佇列(0)依序放入工作C、B、A,在虛擬佇列(1)僅放入工作D。根據QID與ODR之數值範圍可彈性變更虛擬佇列之數量與尺寸。
工作選擇電路230,根據從狀態暫存器250輸出之狀態資料,選擇待狀態遷移之工作。主電路400將CND訊號輸入至工作選擇電路 230。CND係表示工作選擇條件的訊號,包含表示佇列ID之QID_C與表示工作優先順序之PR_C。例如,從虛擬佇列(0)欲取出工作時,主電路400在CND設定QID_C=0。工作選擇電路230,將指定之虛擬佇列(0)中成為取出對象之工作(以下,簡稱為「取出工作」)之工作ID輸出至EID_A1,傳送EID_A1_EN。又,在PR_A1、ODR_A1,輸出取出工作之工作優先順序與順序值。以此方式,主電路400,指定QID_C=Qn並詢問工作選擇電路230,藉此得知虛擬佇列(Qn)的取出工作。工作選擇電路230具有選擇取出工作之取出候補電路的功能。更詳細以圖32後述。
CND訊號從主電路400輸入至最大值選擇電路406。最大值選擇電路406,當以CND指定QID_C=Qn時,將虛擬佇列(Qn)之最大順序值輸出至ODR_A2,傳送EID_A2_EN。更詳細以圖28後述。
佇列控制電路404,藉由設定各狀態暫存器250的狀態資料,控制各工作之狀態遷移。從主電路400將CMD及EID_C輸入至佇列控制電路404,除此之外,亦輸入CND(QID_C、PR_C)、ODR_A1、ODR_A2、ODR_A2_EN與各狀態暫存器250的狀態資料。
CMD係表示用以操作虛擬佇列的指令。CMD之對象之虛擬佇列的佇列ID、工作的工作ID、工作優先順序,係分別藉由QID_C、EID_C、PR_C指定。指令係ENQ_TL、ENQ_TP、DEQ之3種類中的一種。
當輸入順向放入指令ENQ_TL時,從虛擬佇列之最後端放入EID_C訊號所指定之工作。以下,將從佇列之最後端之放入稱為「順向放入」。當輸入取出指令DEQ時,從虛擬佇列之前端取出工作。藉由ENQ_TL與DEQ,執行FIFO的佇列控制。當輸入逆向放入指令ENQ_TP時,從虛 擬佇列之前端放入EID_C訊號所指定之工作。以下,將此種從佇列之前端之放入稱為「逆向放入」。逆向放入,不是FIFO之放入,為特殊的放入方法。
從主電路400輸入CMD時,寫入電路402傳送WT,執行佇列控制電路404所輸出之各資料至狀態暫存器250的寫入。佇列控制電路404、寫入電路402、工作選擇電路230、最大值選擇電路406等,具有用以控制虛擬佇列之虛擬佇列處理電路的功能。
以接下來之圖20詳細說明佇列控制電路404之電路構成。
圖20係佇列控制電路404的電路圖。
佇列控制電路404,係複數個暫存器值產生電路420的集合體。各暫存器值產生電路420為相同電路。暫存器值產生電路420係對應各工作。亦可說為對應各狀態暫存器250。暫存器值產生電路420_EN,對應工作ID=En的工作(以下,表記為「工作(En)」)。該工作之工作ID係作為ELM_ID訊號而固定輸入至暫存器值產生電路420。
ODR_S、QID_S、PR_S,係從狀態暫存器250輸出之狀態資料,分別表示順序值、佇列ID、工作優先順序。工作(En)之順序值、佇列ID、工作優先順序分別作為ODR_S_En、QID_S_En、PR_S_En而輸入至對應工作(En)之暫存器值產生電路420_EN。CMD、EID_C係從主電路400輸入。ODR_A2_EN與ODR_A2係從最大值選擇電路406輸入。表示最大順序值之ODR_A2,當傳送ODR_A2_EN時成為有效的輸入。ODR_A1係從工作選擇電路230輸入。ODR_A1係表示取出工作的工作ID。QID_C與PR_C係從主電路400輸入之CND訊號,分別表示作為工作選擇條件的 QID與PR。
暫存器值產生電路420_EN,將工作(En)之順序值、佇列ID、工作優先順序分別輸出為QID_N_En、ODR_N_En、PR_N_En,當寫入電路402傳送WT時,寫入至狀態暫存器250_En。
當寫入電路402傳送WT時,所有暫存器值產生電路420之QID_N_En、ODR_N_En、PR_N_En係寫入至所有狀態暫存器250。因CMD而受到影響之工作相關之暫存器值產生電路420,將後述演算法所指定之新的資料寫入至狀態暫存器250。另一方面,不因CMD而受到影響之工作相關之暫存器值產生電路420,亦再次輸出與寫入至狀態暫存器250之資料相同的資料,以執行寫入。
此外,暫存器值產生電路420之WT,直接輸入佇列控制電路404而非各狀態暫存器250亦可。此時,內建於佇列控制電路404之暫存器值產生電路420之中,僅因CMD而待狀態變更之工作相關之暫存器值產生電路420,將新的資料寫入至狀態暫存器250亦可。
暫存器值產生電路420之具體處理內容於後述。
圖21係顯示虛擬佇列與工作之關係的概念圖。
此處,假設虛擬佇列(Q0)與虛擬佇列(Q1)的2個虛擬佇列。虛擬佇列(Q0),係用以放入工作優先順序PR=0之工作之優先佇列(以下,表記為「優先佇列(Q0:0)」)與用以放入工作優先順序PR=1之工作之優先佇列(Q0:1)之2個優先佇列的集合。虛擬佇列(Q1)亦相同,假設實質上有4個優先佇列。例如,虛擬佇列(Q0)對應READY狀態,虛擬佇列(Q1)對應WAIT狀態亦可。
各虛擬佇列,係面向圖示左側為放入口,右側為取出口的佇列。於順向放入從左側放入工作,於逆向放入從右側放入工作。取出工作則恆從右側。
同圖中,將工作ID=E0、E1、E2、E3之4個工作放入虛擬佇列。工作(E0)與工作(E2)、工作(E3)係放入虛擬佇列(Q0)。之中,由於工作(E0)與工作(E3)係工作優先順序PR=0之工作,因此放入優先佇列(Q0:0)。由於工作(E2)係PR=1之工作,因此放入優先佇列(Q0:1)。放入虛擬佇列(Q0)之工作(E3)、工作(E2)、工作(E0)之順序值ODR為2、1、0。工作優先順序PR=0之工作(E1),係放入虛擬佇列(Q1)。ODR為「0」。
圖22係對應圖21之狀態暫存器250的資料結構圖。
圖21所示之對虛擬佇列之各工作的放入狀態,係藉由狀態暫存器250之設定來表現。圖21所示之狀態,工作(E0)~工作(E7)之中,放入虛擬佇列者為工作(E0)~工作(E3)。因此,其他工作之佇列辨別暫存器416係設定成表示未放入的「Non」。放入虛擬佇列(Q0)之工作(E0)、工作(E3)、工作(E2)之佇列辨別暫存器416係設定成「Q0」。又,放入虛擬佇列(Q1)之工作(E1)之佇列辨別暫存器416係設定成「Q1」。藉由佇列辨別暫存器416的設定內容,表現哪個工作放入哪個虛擬佇列。
放入虛擬佇列(Q0)之3個工作(E0)、工作(E3)、工作(E2)之佇列順序暫存器414,分別設定0、2、1作為ODR。放入虛擬佇列(Q1)之工作,由於僅有工作(E1),因此順序值設定成最小的「0」。藉由佇列順序暫存器414的設定內容,表現各工作在虛擬佇列的位置。
工作(E0)、工作(E1)、工作(E3)之工作優先順序PR為「0」。 因此,在該等工作之工作優先順序暫存器412設定「0」。由於工作(E2)之工作優先順序PR為「1」,因此在工作優先順序暫存器412_E2設定「1」。藉由工作優先順序暫存器412的設定,表現各工作放入哪個優先佇列。
根據以上設定,詳細說明順向放入、逆向放入、取出之處理內容。
(順向放入)
圖23係將工作(E4)順向放入圖21之虛擬佇列時的概念圖。
此處,說明將工作優先順序PR=0之工作(E4)順向放入虛擬佇列(Q1)的情形。主電路400,CMD=ENQ_TL(順向放入指令),設定EID_C=E4、QID_C=Q1、PR_C=0。內建於佇列控制電路404之暫存器值產生電路420_E4,檢測到EID_C=ELM_ID=E4時,輸出QID_N_E4=QID_C=Q1、ODR_N_E4=0、PR_N_E4=PR_C=0。QID_N_E4係工作(E4)之放入對象之虛擬佇列的QID、ODR_N_E4係放入時的順序值、PR_N_E4係工作(E4)的工作優先順序。順向放入之工作相關之ODR_N,恆設定為「0」。此係表示對佇列之最新放入的順序值。
不僅暫存器值產生電路420_E4,亦會反應到QID_S_En=QID_C=Q1之暫存器值產生電路420_En。暫存器值產生電路420_En,輸出ODR_N_En=ODR_S_En+1。此處,暫存器值產生電路420_E1檢測到QID_S_E1=QID_C=Q1,輸出ODR_N_E1=0+1=1。ODR_N_E1係工作(E1)放入後的順序值。已經放入工作(E4)之順向放入對象之虛擬佇列(Q1)之工作,其順序值受到影響。經過此種處理過程,調整虛擬佇列(Q1)之要素之工作(E4)與工作(E1)的狀態資料。
圖24係對應圖23之狀態暫存器250的資料結構圖。
同圖中,附加底線之部分,為圖22所示之狀態暫存器250之設定內容改變的部位。由於工作(E4)對虛擬佇列(Q1)之順向放入,因此佇列辨別暫存器416_E4係藉由QID_N_E4設定成「Q1」。工作(E4)之ODR為「0」,PR為「0」。由於工作(E4)之順向放入,已放入虛擬佇列(Q1)之工作(E1)之ODR從「0」增加為「1」。藉由變更後之狀態暫存器250的設定內容,表現圖23所示之虛擬佇列(Q1)的狀態。
圖25係將工作(E5)順向放入圖23之虛擬佇列時的概念圖。
此處,說明將工作優先順序PR=1之工作(E5)順向放入虛擬佇列(Q0)的情形。主電路400,CMD=ENQ_TL(順向放入指令),設定EID_C=E5、QID_C=Q0、PR_C=1。暫存器值產生電路420_E5,輸出QID_N_E5=QID_C=Q0、ODR_N_E5=0、PR_N_E5=PR_C=1。
不僅暫存器值產生電路420_E5,QID_C=QID_S_En=Q0之暫存器值產生電路420_En,檢測到QID_C=QID_S_En時,輸出ODR_N_En=ODR_S_En+1。此例中,為對應工作(E0)、工作(E2)、工作(E3)之暫存器值產生電路420。如此,調整虛擬佇列(Q0)之要素之工作(E5)與工作(E0)、工作(E2)、工作(E3)的狀態資料。
圖26係對應圖25之狀態暫存器250的資料結構圖。
同圖中,附加底線之部分,為圖24所示之狀態暫存器250之設定內容改變的部位。首先,由於工作(E5)對虛擬佇列(Q0)之順向放入,因此佇列辨別暫存器416_E5係新設定成「Q0」。工作(E5)之ODR為「0」,PR為「1」。由於工作(E5)之順向放入,已放入虛擬佇列(Q0)之工作(E0)、 工作(E1)、工作(E3)之ODR分別增加。
圖27係顯示順向放入之處理過程的流程圖。
主電路400,設定順向放入之工作(以下,稱為「順向放入工作」)相關之放入條件(S10)。具體而言,CMD=ENQ_TL,設定EID_C、QID_C、PR_C。佇列控制電路404之中,對應順向放入工作之暫存器值產生電路420,將順向放入工作之工作優先順序暫存器412、佇列順序暫存器414、佇列辨別暫存器416分別設定成PR_C、0、QID_C(S12)。
虛擬佇列(QID_C)已放入其他工作時(S14之是),對已放入之各工作增加ODR(S16)。圖25所示之例之情形,對工作(E0)、工作(E2)、工作(E3)增加ODR。S12、S14、S16之處理在時間上大致同時執行。
(逆向放入)
圖28係最大值選擇電路406之一部分的電路圖。
最大值選擇電路406,係用以進行逆向放入處理而由主電路400驅動的電路。最大值選擇電路406,當輸入QID_C=Qn作為CND訊號時,將虛擬佇列(Qn)之最大順序值輸出至ODR_A2,傳送ODR_A2_EN。最大值選擇電路406,與基本例所示之執行選擇電路232與旗號選擇電路234相同,係由複數段之比較電路構成。最大值選擇電路406,包含4個第1比較電路422(422a,422b等)、2個第2比較電路424(424a等)、1個第3比較電路(未圖示)。又,包含8個判定電路426(426a,426b,426c,426d等)。
著眼於第1比較電路422a進行說明。第1比較電路422a比較工作0與工作1,兩者皆放入虛擬佇列(Qn)時,選擇順序值大的工作。工作0與工作1的工作ID與順序值作為EID_S、ODR_S而輸入至第1比 較電路422a。
第1判定:判定電路426a,若工作0已放入虛擬佇列(Qn),則傳送EID_11A_EN。判定電路426b,若工作1已放入虛擬佇列(Qn),則傳送EID_11B_EN。第1比較電路422a,首先,參照分別從判定電路426a與判定電路426b輸出之EID_11_EN訊號。其中一者為「1」時,僅其中一者之工作已放入虛擬佇列(Qn)。此時,第1比較電路422a,將已放入虛擬佇列(Qn)之工作之工作ID(EID_S)與順序值(ODR_S)分別輸出作為EID_21A、ODR_21A,傳送EID_21A_EN。
判定電路426a與判定電路426b皆輸出「0」時,兩個工作皆未放入虛擬佇列(Qn)。此時,停止傳送EID_21A_EN,以後,工作0與工作1皆不成為第2比較電路424a的考慮對象。
判定電路426a與判定電路426b皆輸出「1」時,兩個工作皆已放入虛擬佇列(Qn),此時,執行接下來的第2判定。
第2判定:比較工作0之ODR_S_0與工作1之ODR_S_1,選擇順序值大的工作。第1比較電路422a,將順序值大的工作的工作ID(EID_S)與順序值(ODR_S)分別輸出作為EID_21A、ODR_21A,傳送EID_21A_EN。
其他之第1比較電路422之處理內容亦相同,分別比較工作0與工作1、工作2與工作3、工作4與工作5、工作6與工作7。第2比較電路424,從來自2個第1比較電路422的輸出,進一步選擇順序值大的工作。著眼於第2比較電路424a進行說明。第2比較電路424a比較第1比較電路422a的輸出訊號與第1比較電路422b的輸出訊號,選擇順序值大的 工作。從第1比較電路422a與第1比較電路422b分別輸入EID_21、ODR_21、EID_EN至第2比較電路424a。第2比較電路424,選擇工作0~工作3之中,在虛擬佇列(Qn)之中順序值最大的工作。其他之第2比較電路424亦相同,最後,將虛擬佇列(Qn)之最大順序值輸出作為ODR_A2訊號。當選擇任一個工作時傳送ODR_A2_EN,當任一個工作皆不存在於虛擬佇列(Qn)時停止傳送ODR_A2_EN。
此外,用以使優先順序判定無效化之PR無效訊號亦可輸入至第1比較電路422、第2比較電路424、第3比較電路。當傳送PR無效訊號時,各比較電路將優先順序從判定條件除去來選擇工作。圖32所示之各比較電路亦相同。
圖29係將工作(E6)逆向放入圖25之虛擬佇列時的概念圖。
此處,說明將工作優先順序PR=1之工作(E6)逆向放入虛擬佇列(Q0)之情形。首先,主電路400,藉由QID_C訊號將放入對象之QID=Q0輸入至最大值選擇電路406。最大值選擇電路406,將虛擬佇列(Q0)之最大順序值作為ODR_A2輸出至佇列控制電路404,傳送ODR_A2_EN。如圖25所示,由於虛擬佇列(Q0)之最大順序值為工作(E3)的「3」,因此ODR_A2=3。
接著,主電路400,CMD=ENQ_TP(逆向放入指令),設定EID_C=E6、QID_C=Q0、PR_C=1。此時,內建於佇列控制電路404之暫存器值產生電路420_E6,檢測到EID_C=ELM_ID=E6時,輸出QID_N_E6=QID_C=Q0、ODR_N_E6=ODR_A2+1=3+1=4、PR_N_E6=PR_C=1。
CMD=ENQ_TP(逆向放入指令)時,僅對應EID_C所指定之工作之暫存器值產生電路420會動作。因此,僅逆向放入之工作(E6)之狀態資料會設定變更。
圖30係對應圖29之狀態暫存器250的資料結構圖。
同圖中,附加底線之部分,為圖26所示之狀態暫存器250之設定內容改變的部位。首先,由於工作(E6)對虛擬佇列(Q0)之逆向放入,因此佇列辨別暫存器416_E6係新設定成「Q0」。工作(E6)之ODR為「4」,PR為「1」。由於工作(E6)之逆向放入,其他工作之狀態資料不受影響。
圖31係顯示逆向放入之處理過程的流程圖。
主電路400,首先,將逆向放入對象之虛擬佇列之QID=Qn輸入至最大值選擇電路406(S20)。主電路400,將虛擬佇列(Qn)之最大順序值輸出至佇列控制電路404(S22)。主電路400,設定逆向放入之工作(以下,稱為「逆向放入工作」)相關之放入條件(S24)。具體而言,CMD=ENQ_TP(逆向放入指令),設定EID_C、QID_C、PR_C。佇列控制電路404之中,對應逆向放入工作之暫存器值產生電路420,分別在逆向放入工作之工作優先順序暫存器412、佇列順序暫存器414、佇列辨別暫存器416設定PR_C、最大順序值+1、QID_C(S26)。然而,當最大順序值=0、停止傳送ODR_A2_EN時,亦即,當工作未放入虛擬佇列(Qn)時,在佇列順序暫存器414設定表示初放入的順序值「0」。
如上述,在順向放入時,有可能產生其他工作之順序值的調整,但在逆向放入時不需要此種調整。以FIFO為前提觀察虛擬佇列時,愈早放入之工作設定愈大的順序值。亦即,放入虛擬佇列愈深的工作順序值 愈大。相反地,亦可設定為放入虛擬佇列愈深的工作順序值愈小。此時,在順向放入時,不需要其他工作之順序值的調整,但在逆向放入時有可能產生其他工作之順序值的調整。
(取出)
圖32係工作選擇電路230之一部分的電路圖。
工作選擇電路230之基本構成,如圖12說明之基本例。改良例之工作選擇電路230,當接受來自主電路400的詢問時,特定取出工作。此處,說明用以特定此取出工作之構造相關的電路構成。工作選擇電路230,當輸入QID_C=Qn作為CND訊號時,於虛擬佇列(Qn),從工作優先順序最高的優先佇列選擇取出工作,將取出工作之工作ID、工作優先順序、順序值分別輸出至EID_A1、PR_A1、ODR_A1,傳送EID_A1_EN。工作選擇電路230,與基本例所示之執行選擇電路232及旗號選擇電路234相同,係由複數段之比較電路構成。工作選擇電路230,包含4個第1比較電路430(430a,430b等)、2個第2比較電路432(432a等)、1個第3比較電路(未圖示)。又,包含8個判定電路434(434a,434b,434c,434d等)。
著眼於第1比較電路430a進行說明。第1比較電路430a比較工作0與工作1,兩者皆放入虛擬佇列(Qn)時,選擇工作優先順序高的工作。工作優先順序相同時,選擇順序值大的工作。工作0與工作1的工作ID、工作優先順序、順序值作為EID_S、PR_S、ODR_S而輸入至第1比較電路430a。
第1判定:判定電路434a,若工作0已放入虛擬佇列(Qn),則傳送EID_11A_EN。判定電路434b,若工作1已放入虛擬佇列(Qn),則 傳送EID_11B_EN。第1比較電路430a,首先,參照分別從判定電路434a與判定電路434b輸出之EID_11_EN訊號。其中一者為「1」時,僅其中一者之工作已放入虛擬佇列(Qn)。此時,第1比較電路430a,將已放入虛擬佇列(Qn)之工作之工作ID(EID_S)、工作優先順序(PR_S)、順序值(ODR_S)分別輸出作為EID_21A、PR_11A、ODR_21A,傳送EID_21A_EN。
判定電路434a與判定電路434b皆輸出「0」時,兩個工作皆未放入虛擬佇列(Qn)。此時,停止傳送EID_21A_EN,以後,工作0與工作1皆不成為第2比較電路432a的考慮對象。
判定電路434a與判定電路434b皆輸出「1」時,兩個工作皆已放入虛擬佇列(Qn),此時,執行接下來的第2判定。
第2判定:比較工作0之PR_S_0與工作1之PR_S_1,選擇工作優先順序高,亦即,PR_S小的工作。第1比較電路430a,將工作優先順序高之工作之工作ID(EID_S)、工作優先順序(PR_S)、順序值(ODR_S)分別輸出作為EID_21A、PR_21A、ODR_21A,傳送EID_21A_EN。兩個工作之工作優先順序相同時,執行接下來的第3判定。
第3判定:比較工作0之ODR_S_0與工作1之ODR_S_1,選擇順序值大的工作。第1比較電路430a,將順序值大的工作的工作ID(EID_S)、工作優先順序(PR_S)、順序值(ODR_S)分別輸出作為EID_21A、PR_21A、ODR_21A,傳送EID_21A_EN。
其他之第1比較電路430之處理內容亦相同,分別比較工作0與工作1、工作2與工作3、工作4與工作5、工作6與工作7。第2比較電路432,從來自2個第1比較電路430的輸出,進一步鎖定取出工作的候 補。最後,從虛擬佇列(Qn)中之工作優先順序最高的優先佇列,選擇取出工作。當選擇任一個工作時傳送EID_A1_EN,當任一個工作皆不存在於虛擬佇列(Qn)時停止傳送EID_A1_EN。
圖33係從圖29之虛擬佇列取出工作(E3)時的概念圖。
此處,以從虛擬佇列(Q0)取出1個工作之情形進行說明。主電路400,將QID_C=Q0輸入至工作選擇電路230。如圖29所示,在對應虛擬佇列(Q0)之中之最高優先順序的優先佇列(Q0:0),放入順序值「1」的工作(E0)與順序值「3」的工作(E3)。工作選擇電路230,選擇順序值大的工作(E3)作為取出工作。工作選擇電路230,設EID_A1=E3、PR_A1=0、ODR_A1=3,傳送EID_A1_EN。
接著,主電路400,CMD=DEQ(取出指令),設定EID_C=EID_A1=E3、QID_C=Q0。暫存器值產生電路420_E3,輸出QID_N_E3=Non、ODR_N_E3=0(重設)、PR_N_E3=0(重設)。以此方式,在狀態暫存器250解除工作(E3)與虛擬佇列(Q0)的關係。
不僅暫存器值產生電路420_E3,QID_S_En=QID_C=Q0之暫存器值產生電路420_En,當檢測出QID_C=QID_S_En時,判定為ODR_S_En>ODR_A1。此處,ODR_A1係取出工作(E3)之取出前的順序值。若ODR_S_En>ODR_A1,亦即,順序值較取出工作之順序值大之工作(En)的暫存器值產生電路420_En,輸出ODR_N_En=ODR_S_En-1。圖29所示之例,相當於工作(E6)之暫存器值產生電路420_E6。暫存器值產生電路420_E6,輸出ODR_N_E6=ODR_S_E6-1=4-1=3。以此方式,調整虛擬佇列(Q0)之要素之工作(E6)的狀態資料。
圖34係對應圖33之狀態暫存器250的資料結構圖。
同圖中,附加底線之部分,為圖30所示之狀態暫存器250之設定內容改變的部位。首先,由於從虛擬佇列(Q0)取出工作(E3),因此在佇列辨別暫存器416_E3新設定「Non」。又,在佇列順序暫存器414與工作優先順序暫存器412分別設定「0」作為重設值。由於取出工作(E3),因此原本放入虛擬佇列(Q0)之工作(E0)、工作(E2)、工作(E5)、工作(E6)之中,順序值較取出工作(E3)大的工作(E6)的ODR減少。
圖35係顯示取出之處理過程的流程圖。
主電路400,首先,將取出對象之虛擬佇列之QID=Qn輸入至工作選擇電路230(S30)。工作選擇電路230,從虛擬佇列(Qn)選擇取出工作(S32)。主電路400,將取出工作之工作ID=En輸入至佇列控制電路404時,佇列控制電路404,從取出工作(En)之狀態資料清除QID=Qn(S34)。此時,將PR與ODR重設成「0」,但亦可不重設。
在虛擬佇列(Qn)亦放入其他工作(S36之是),ODR_S_En>ODR_A1之工作存在時(S38之是),減少該工作的順序值(S40)。此外,從S30至S40所示之處理不一定要序列執行,在時間上並行執行亦可。
在構裝上,亦可從虛擬佇列之途中取出工作。例如,圖33中,產生要從虛擬佇列(Q0)之正中央取出工作(E2)的必要性。工作(E2),係以某旗標A設定為導通為條件而可動作的工作。此旗標A斷開時,產生要從虛擬佇列(Q0)之途中取出工作(E2)的必要性。或者,工作(E2)預先設定之等待時間暫停時,亦產生要從虛擬佇列(Q0)之途中取出工作(E2)的必要性。此時,清除工作(E2)的QID,藉由減少順序值較工作(E2)之順序值「2」大 的工作的ODR,亦可從虛擬佇列(Q0)之途中取出工作(E2)。圖33之情形,工作(E6)的ODR成為「2」。由於虛擬佇列係形成為不受硬體的物理性限制,因此亦可從佇列途中進行放入、取出處理。
根據以上所示虛擬佇列控制,可藉由硬體邏輯實現以FIFO為基本,且實現LIFO動作的特殊佇列。若以軟體構裝雙放入型佇列演算法,則通常為連結串列的構裝。然而,只要是軟體進行的處理,則必定會產生對記憶體之存取與位址之管理所伴隨的酬載。相對於此,改良例所示之虛擬佇列控制,由於藉由硬體邏輯實現,因此可實現特別簡單且高速的控制。特別是,於時間要求嚴格的RTOS,將雙放入型佇列演算法進行硬體構裝的意義非常大。接著,說明藉由上述虛擬佇列控制方法實現再執行優先型工作排程的形態。
圖36係顯示再執行優先型工作排程中之虛擬佇列與工作之關係的第1概念圖。
此處,假設對應READT狀態之虛擬佇列(Q0)與對應WAIT旗號狀態之虛擬佇列(Q1)的2個虛擬佇列。虛擬佇列(Q0),係用以放入工作優先順序PR=0之工作的優先佇列(以下,表記成「優先佇列(Q0:0)」)與用以放入工作優先順序PR=1之工作的優先佇列(Q0:1)之2個優先佇列的集合體。虛擬佇列(Q1)亦相同,假設實質上有4個優先佇列。
同圖中,PR=1之工作(E1)為RUN狀態,同樣PR=1之工作(E0)、工作(E2),在優先佇列(Q0:1)以READY狀態待機。又,PR=0之工作(E3)在優先佇列(Q1:0)以WAIT旗號狀態待機。此處,設工作(E1)為一執行後即集中優先執行的工作。
首先,RUN狀態之工作(E1)執行解除旗號系統呼叫,返回READY狀態(S1)。由於工作(E1)為僅快再執行的工作,因此「逆向放入」優先佇列(Q0:1)。另一方面,藉由解除旗號系統呼叫,工作(E3)之WAIT解除條件成立。從優先佇列(Q1:0)取出工作(E3),順向放入優先佇列(Q0:0)(S2)。接著,工作選擇電路230選擇新的RUN-工作。工作選擇電路230,從READY狀態之工作之中,選擇工作優先順序最高的工作(E3)作為取出工作。以此方式,從WAIT狀態移至READY狀態之工作(E3),從優先佇列(Q0:0)被取出而成為新的RUN-工作。根據此種工作排程,工作優先順序高的工作,WAIT解除條件成立時可較快取得執行權。
圖37係顯示再執行優先型工作排程中之虛擬佇列與工作之關係的第2概念圖。
工作(E3)執行待機旗號系統呼叫時,工作(E3)被順向放入優先佇列(Q1:0)(S4)。接著,工作選擇電路230選擇新的RUN-工作。工作選擇電路230,從READY狀態之工作之中,選擇工作優先順序最高的工作,但此處工作(E0)、工作(E2)、工作(E1)之工作優先順序相同。此時,從優先佇列(Q0:1)取出工作(E1)(S5)。工作(E1)成為新的RUN-工作。根據此種處理方法,雖不致像設定成工作優先順序PR=0,但可對應一執行後即僅可能連續執行的工作(E1)。
於再執行優先型工作排程,依據執行狀況與工作種類分別使用順向放入與逆向放入,藉此可控制工作的執行順序。因此,可維持基本例所示之工作處理裝置100的高速處理性能的特徵,並可實現更精緻的工作排程。
以上,根據實施例說明本發明。實施形態係例示,此等各構成要素與各處理步驟的組合能有各種變形例,且此等變形例亦在本發明的範圍內,此為本發明所屬技術領域中具有通常知識者應當理解之事。
根據本發明,能將可對應FIFO與LIFO之兩者之雙放入型演算法構裝為硬體邏輯。
200‧‧‧工作控制電路
230‧‧‧工作選擇電路
250_0,250_1,250_2,250_3‧‧‧狀態暫存器
400‧‧‧主電路
402‧‧‧寫入電路
404‧‧‧佇列控制電路
406‧‧‧最大值選擇電路
410_0,410_1,410_2,410_3‧‧‧工作ID暫存器
412_0,412_1,412_2,412_3‧‧‧工作優先順序暫存器
414_0,414_1,414_2,414_3‧‧‧佇列順序暫存器
416_0,416_1,416_2,416_3‧‧‧佇列辨別暫存器

Claims (13)

  1. 一種工作控制電路,其包括:狀態暫存器,其保持表示工作狀態之狀態資料,工作切換電路,其控制工作狀態,其中當自執行工作之執行控制電路接收系統呼叫訊號時,該工作切換電路根據該系統呼叫訊號執行既定系統呼叫程序並輸出起因於該系統呼叫程序之回傳值,當由於該系統呼叫程序而需要工作切換時,該工作切換電路產生儲存訊號用以指示儲存動作中工作之上下文資訊並且自RUN狀態設定該動作中工作之狀態資料,表示該工作正被執行至另一狀態。
  2. 如申請專利範圍第1項之工作控制電路,其中複數個狀態暫存器係分別對應複數個工作。
  3. 如申請專利範圍第1項之工作控制電路,其中該工作切換電路保持該傳回值於箝入於該執行控制電路中之暫存器。
  4. 如申請專利範圍第1項之工作控制電路,其中該工作切換電路自箝入於該執行控制電路中之暫存器讀取出用於該系統呼叫程序之參數。
  5. 如申請專利範圍第1項之工作控制電路,其中當需要該工作切換電路時,該工作切換電路進一步輸出下一個待執行之工作的工作ID。
  6. 如申請專利範圍第1項之工作控制電路,其中該上下文資訊係儲存於記憶體中。
  7. 如申請專利範圍第1項之工作控制電路,其中該上下文資訊係儲存於暫存器中。
  8. 如申請專利範圍第7項之工作控制電路,進一步包括:複數個儲存暫存器,分別對應複數個工作;以及當需要該工作切換時,該工作切換電路儲存該上下文資訊於對應於該動作中之工作的該儲存暫存器。
  9. 如申請專利範圍第1項之工作控制電路,進一步包括:工作選擇電路,其根據用於選擇之既定條件且基於該狀態資料選擇工作,其中該工作選擇電路自處於表示工作可執行且等待執行之READY狀態的工作當中選擇下一個待執行的工作,當需要工作切換時,該工作切換電路根據來自該工作選擇電路之輸出選擇下一個待執行的工作。
  10. 如申請專利範圍第1項之工作控制電路,進一步包括:旗號資訊記憶部,其保持相對應之旗號ID及旗號計數器,其中在該執行控制電路執行待機旗號指令的情況下,用於請求旗號之系統呼叫指定旗號ID,當該旗號計數器為1或更大時,該工作切換電路減少該指定旗號之該旗號計數器,並且當該旗號計數器為0或更小時,該工作切換電路設定該工作之該狀態資料以執行該待機旗號指令至WAIT狀態,在該執行控制電路執行解除旗號指令的情況下,用以解除旗號之系統呼叫指定旗號ID, 當存在待自WAIT狀態解除之工作時,該工作切換電路設定該工作之該狀態資料至READY狀態,並且當不存在待自WAIT狀態解除之工作時,減少該指定旗號之該旗號計數器。
  11. 如申請專利範圍第1項之工作控制電路,進一步包括:事件資訊記憶部,其保持相對應之事件ID及第一旗號型態,其中在該執行控制電路執行待機事件指令的情況下,用以等待事件之建立的系統呼叫指令指定事件ID及第二旗號型態,當介於對應該指定事件之該第一及第二旗號型態之間的既定算術條件不滿足時,該工作切換電路設定該工作之該狀態資料,其中該工作係執行該待機事件至WAIT狀態並且設定該指定事件ID及該對應狀態暫存器中之該第二旗號型態,在該執行控制電路執行設定事件指令的情況下,用以建立第一旗號型態之系統呼叫指定事件ID及第三旗號型態,該工作切換電路計算對應該指定事件之該第一旗號型態及該第三旗號型態之邏輯和,當存在處於該WAIT狀態中之工作而該WAIT狀態係等待具有該指定事件ID之該事件時,該工作切換電路在介於保持於該工作之該狀態暫存器的該第一及第二旗號型態之間的該既定算術條件滿足下,將該工作之該狀態自WAIT狀態設定至READY狀態。
  12. 如申請專利範圍第1項之工作控制電路,進一步包括:互斥資訊記憶部,其保持相對應之互斥ID及互斥之獲得狀態,其中在該執行控制電路執行待機互斥指令的情況下,用以請求互斥之系統 呼叫指定互斥ID,當該指定互斥原本係非佔有時,該工作切換電路設定該指定互斥即將被佔用,並且當該指定互斥係佔用時,設定該工作之該狀態以執行該待機互斥指令至WAIT狀態,在該執行控制電路執行解除互斥指令的情況下,用以解除互斥之系統呼叫指定互斥ID,該工作切換電路設定工作的狀態資料於WAIT狀態,其等待該指定互斥ID至READY狀態。
  13. 如申請專利範圍第9項之工作控制電路,其中複數個狀態暫存器係分別對應複數個工作,該工作切換電路藉由控制複數個工作之放入及取出以管理工作的狀態,其中該複數個工作係在分別對應該等狀態之虛擬佇列之複數個種類中藉由工作ID所特定;該等狀態暫存器之各者保持對應於工作狀態之虛擬佇列之佇列ID及表示該虛擬佇列中之放入的順序之順序值,以作為部分狀態資料,該工作選擇電路特定該狀態暫存器,其保持對應於該READY狀態之虛擬可執行佇列的該佇列ID,並且保持表示該可執行佇列之起始的起始順序值,並且特定對應於該狀態暫存器之第二工作,以特定作為下一個將執行的工作,當需要該工作切換電路時,該工作切換電路清除用於該第二工作之該狀態暫存器中的該佇列ID,並且在RUN狀態中之第一工作的該狀態暫存器中建立順序值及對應於不同於該RUN狀態之該狀態的該虛擬佇列之佇列 ID。
TW103103900A 2007-08-10 2008-04-01 Virtual queue processing circuit and work processing device TWI520056B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2007/000874 WO2009022369A1 (ja) 2007-08-10 2007-08-10 仮想キュー処理回路およびタスク処理装置

Publications (2)

Publication Number Publication Date
TW201421357A TW201421357A (zh) 2014-06-01
TWI520056B true TWI520056B (zh) 2016-02-01

Family

ID=39509544

Family Applications (3)

Application Number Title Priority Date Filing Date
TW103103900A TWI520056B (zh) 2007-08-10 2008-04-01 Virtual queue processing circuit and work processing device
TW097111803A TWI438679B (zh) 2007-08-10 2008-04-01 Virtual queue processing circuit and work processing device
TW103114180A TWI522907B (zh) 2007-08-10 2008-04-01 Virtual queue processing circuit and work processing device

Family Applications After (2)

Application Number Title Priority Date Filing Date
TW097111803A TWI438679B (zh) 2007-08-10 2008-04-01 Virtual queue processing circuit and work processing device
TW103114180A TWI522907B (zh) 2007-08-10 2008-04-01 Virtual queue processing circuit and work processing device

Country Status (5)

Country Link
US (2) US8996761B2 (zh)
JP (1) JP4088335B1 (zh)
CN (1) CN101796487B (zh)
TW (3) TWI520056B (zh)
WO (1) WO2009022369A1 (zh)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101796487B (zh) 2007-08-10 2013-10-09 科尼龙硅公司 虚拟队列处理电路以及任务处理器
US8689231B2 (en) * 2009-06-30 2014-04-01 Sap Ag System and method for ordering tasks with complex interrelationships
KR101859226B1 (ko) * 2009-12-28 2018-05-18 삼성전자주식회사 무선 통신 시스템에서 신호 송신 방법 및 장치
US20110185365A1 (en) * 2010-01-28 2011-07-28 International Business Machines Corporation Data processing system, method for processing data and computer program product
US8677361B2 (en) * 2010-09-30 2014-03-18 International Business Machines Corporation Scheduling threads based on an actual power consumption and a predicted new power consumption
JP2012173870A (ja) 2011-02-18 2012-09-10 Toshiba Corp 半導体装置及びメモリ保護方法
JP6153925B2 (ja) 2012-05-24 2017-06-28 ルネサスエレクトロニクス株式会社 タスク処理装置
US8930584B2 (en) * 2012-08-09 2015-01-06 Oracle International Corporation System and method for providing a linearizable request manager
US9342369B2 (en) * 2013-01-07 2016-05-17 Wal-Mart Stores, Inc. System and method for increasing throughput of a PaaS system
US9104455B2 (en) 2013-02-19 2015-08-11 International Business Machines Corporation Virtual machine-to-image affinity on a physical server
GB2552084B (en) 2014-01-29 2018-08-01 Illinois Tool Works A locker system
WO2016018399A1 (en) * 2014-07-31 2016-02-04 Hewlett-Packard Development Company, L.P. Prioritization processing
CN107111523B (zh) * 2014-11-11 2020-10-20 瑞萨电子株式会社 命令执行控制***和命令执行控制方法
US9405702B2 (en) * 2014-11-14 2016-08-02 Cavium, Inc. Caching TLB translations using a unified page table walker cache
US9720773B2 (en) * 2015-03-04 2017-08-01 Cavium, Inc. Managing reuse information in caches
US9898321B2 (en) * 2015-07-23 2018-02-20 At&T Intellectual Property I, L.P. Data-driven feedback control system for real-time application support in virtualized networks
US10298511B2 (en) * 2016-08-24 2019-05-21 Apple Inc. Communication queue management system
CN107870866B (zh) * 2016-09-28 2023-09-26 厦门鑫忆讯科技有限公司 Io命令调度方法与nvm接口控制器
CN117555598A (zh) * 2016-09-28 2024-02-13 北京忆芯科技有限公司 调度方法与装置
US10303575B2 (en) * 2017-01-10 2019-05-28 International Business Machines Corporation Time-slice-instrumentation facility
JP6570771B1 (ja) * 2018-03-29 2019-09-04 三菱電機株式会社 データ処理装置
CN111526172B (zh) * 2019-02-03 2022-11-29 杭州登临瀚海科技有限公司 一种多设备管理方法和管理***
CN113515516A (zh) * 2021-08-09 2021-10-19 北京字节跳动网络技术有限公司 一种数据处理方法、装置、计算机设备和计算机存储介质
CN117118924B (zh) * 2023-10-24 2024-02-09 苏州元脑智能科技有限公司 网络提交队列监测装置、方法、计算机设备及存储介质

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4497023A (en) * 1982-11-04 1985-01-29 Lucasfilm Ltd. Linked list of timed and untimed commands
US5410722A (en) * 1993-01-21 1995-04-25 Conner Peripherals, Inc. Queue system for dynamically allocating and moving memory registers between a plurality of pseudo queues
US6154826A (en) * 1994-11-16 2000-11-28 University Of Virginia Patent Foundation Method and device for maximizing memory system bandwidth by accessing data in a dynamically determined order
JPH11234302A (ja) 1998-02-18 1999-08-27 Net Kuriasu Systems Kk 待ち行列装置
US6128672A (en) * 1998-03-10 2000-10-03 Motorola, Inc. Data transfer using software interrupt service routine between host processor and external device with queue of host processor and hardware queue pointers on external device
JPH11272480A (ja) 1998-03-24 1999-10-08 Nippon Telegr & Teleph Corp <Ntt> オンチップリアルタイムos
JP3076303B2 (ja) * 1998-06-17 2000-08-14 茨城日本電気株式会社 情報処理装置
JP2000276362A (ja) * 1999-03-29 2000-10-06 Nec Kofu Ltd プロセス管理方式
JP2001075820A (ja) 1999-09-07 2001-03-23 Oki Electric Ind Co Ltd リアルタイムos装置
JP3938343B2 (ja) * 2002-08-09 2007-06-27 インターナショナル・ビジネス・マシーンズ・コーポレーション タスク管理システム、プログラム、及び制御方法
CN100367218C (zh) * 2006-08-03 2008-02-06 迈普(四川)通信技术有限公司 多核并行先进先出队列处理***及方法
CN101796487B (zh) 2007-08-10 2013-10-09 科尼龙硅公司 虚拟队列处理电路以及任务处理器

Also Published As

Publication number Publication date
US20120096472A1 (en) 2012-04-19
TW200907794A (en) 2009-02-16
US9047120B2 (en) 2015-06-02
US8996761B2 (en) 2015-03-31
TW201432562A (zh) 2014-08-16
TW201421357A (zh) 2014-06-01
CN101796487B (zh) 2013-10-09
WO2009022369A1 (ja) 2009-02-19
JPWO2009022369A1 (ja) 2010-11-04
US20110252428A1 (en) 2011-10-13
CN101796487A (zh) 2010-08-04
TWI438679B (zh) 2014-05-21
JP4088335B1 (ja) 2008-05-21
TWI522907B (zh) 2016-02-21

Similar Documents

Publication Publication Date Title
TWI520056B (zh) Virtual queue processing circuit and work processing device
TWI426452B (zh) Work processing device
TWI416413B (zh) Work processing device
TWI426451B (zh) Work processing device
JP6153925B2 (ja) タスク処理装置
TWI476696B (zh) Work processing device
TWI537831B (zh) 多核心處理器、用於執行處理程序切換之方法、用於保全一記憶體區塊之方法、用於致能使用一多核心裝置之異動處理之設備、以及用於執行記憶體異動處理之方法
CN101310257A (zh) 多处理器***和用于使计算机执行多处理器***的控制方法的程序
JP2018180768A (ja) 半導体装置
CN102436393A (zh) 任务处理装置
JP2017123190A (ja) タスク処理装置
TW200925999A (en) Task processing device
JP2007141155A (ja) マルチコアプロセッサにおけるマルチコア制御方法
JP5204740B2 (ja) タスク処理装置
KR100728899B1 (ko) 복수의 레지스터 집합과 하드웨어 작업 관리자를 가진고성능 멀티쓰레드 임베디드 프로세서
JP2008269597A (ja) タスク処理装置
JP2019003710A (ja) タスク処理装置