TWI410866B - 排程方法、排程裝置、多工處理器系統及排程用程式 - Google Patents

排程方法、排程裝置、多工處理器系統及排程用程式 Download PDF

Info

Publication number
TWI410866B
TWI410866B TW094142287A TW94142287A TWI410866B TW I410866 B TWI410866 B TW I410866B TW 094142287 A TW094142287 A TW 094142287A TW 94142287 A TW94142287 A TW 94142287A TW I410866 B TWI410866 B TW I410866B
Authority
TW
Taiwan
Prior art keywords
group
execution
thread
processor
scheduling
Prior art date
Application number
TW094142287A
Other languages
English (en)
Other versions
TW200632743A (en
Inventor
西川尚宏
Original Assignee
新力電腦娛樂股份有限公司
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 新力電腦娛樂股份有限公司 filed Critical 新力電腦娛樂股份有限公司
Publication of TW200632743A publication Critical patent/TW200632743A/zh
Application granted granted Critical
Publication of TWI410866B publication Critical patent/TWI410866B/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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)

Description

排程方法、排程裝置、多工處理器系統及排程用程式
本發明係關於一種多工處理器系統中之平行處理之執行單位的排程方法與排程裝置、以及多工處理器系統。
先前支持多工之操作系統可實現同時執行複數個程序之多程序環境,並且,進而搭載有該等程序可於程序內部產生複數個線程且進行並行處理之多線程技術。程序於執行時分配固有之資源或位址空間,不可在其他程序之區域中進行存取。於此相應,線程係產生於程序內部之執行單位,各線程可於程序內之區域互相進行自由的存取。線程成為操作系統分配CPU執行時間之基本單位。
關於將線程分配至CPU之線程排程方式,可列舉出下列等方式:單純的循環方式,其係對於進入等待行列之線程每隔一定時間依序進行選擇而執行;或優先權方式,其係依照線程的優先度之順序依序執行。於循環方式中,係將位於等待行列之線程每隔一定時間公平地分配至CPU中而執行。於優先權方式中,針對每個優先度而設置之等待行列中,各優先度之線程已列隊,自優先度較高之等待行列開始依序選擇線程且將其分配至CPU執行。
[發明所欲解決之問題]
於一個系統內搭載有複數個處理器之多工處理器系統中,可平行進行處理從而使得處理全體實現高速化。多工處理器系統中,於實現多線程環境之情形下,將線程分配 至任一處理器中而執行,且程序之執行速度或記憶消耗量等性能會按照線程之執行順序而產生變化。於多工處理器系統中之線程排程中,亦需考慮到處理器資源利用之高效化、線程之間資料之傳輸、或通信之高效化等,需要採取與單處理器系統中之線程排程不同之排程方法。
本發明係鑒於如此之課題而形成者,其目的在於提供一種可控制將多工處理器系統中之平行處理之執行單位分配至處理器中的順序從而提高處理效率、且可提高處理器之利用效率的排程技術。
為解決上述之課題,本發明之某態樣下之排程方法係於多工處理器系統中,對於將平行處理之排程對象之執行單位分配至複數個處理器中之順序進行排程者,其使一個以上之上述排程對象之執行單位群組化,使藉由同一群組中所含的上述各執行單位所佔有之處理器內的空間可互相參照,以此方式,將上述資源映射至各執行單位參照之位址空間,且將同一群組中所含的所有執行單位同時分配至任一處理器,利用此規約,控制群群組向處理器之分配。
本發明之另外之態樣亦為排程方法。該方法係於多工處理器系統中,對於將平行處理之排程對象之執行單位分配至複數個處理器中之順序進行排程者,其使一個以上之上述排程對象之執行單位群組化,且以群群組為單位管理向處理器之分配,按照針對上述每個群群組所設定之優先度順序且根據同一優先度內上述群群組到達等待行列之順序 而決定上述群群組之優先順序,使同一群群組中所含的所有執行單位同時分配至任一處理器中,於此規約下,根據上述優先等級而將處於待執行以及執行中狀態下的群群組分配至處理器。
藉由該態樣,可依照優先等級將同一群群組所含的所有執行單位同時分配至處理器。該優先等級中,因已根據同一優先度內到達等待行列之順序而確定了等級,故而於同一優先度之群組之間可遵守到達順序。不僅是處於待執行狀態之群組,已處於執行中狀態之群組亦決定優先等級且將其分配至處理器,故而可統一且簡單地使應分配之群組向處理器進行分配處理。
本發明之進而另外之態樣亦為排程方法。該方法係於多工處理器系統中,對於將平行處理之排程對象之執行單位分配至複數個處理器中之順序進行排程者,其係於包含一個以上之上述排程對象之執行單位的群組內,自依照針對上述每個群組所設定的優先度順序且按照同一優先度內之到達順序而儲存有處於待執行狀態以及執行中狀態下之群組的待執行隊列的前端,依序取出上述群組,將所取出之群組中所含的所有執行單位同時分配至任一處理器,僅在此情形下,將該群組中所含的所有執行單位分配至處理器,而在該情形以外之情形下,使之後自上述待執行隊列取出之群組的分配優先。
藉由該態樣,因處理器之總數之規約,而無法將群組所含的所有執行單位同時分配至處理器之情形時,藉由向優 先等級較低之群組轉讓分配權,可提高多工處理器系統之處理器之利用效率。
當自上述待執行隊列之前端開始依序取出之群組中所含的各執行單位已分配至任一處理器中且處於執行狀態下之情形時,該處於執行狀態下之執行單位亦可確保該處於執行中之執行單位向對應處理器之分配,以免分配對象變更至其他處理器而再配置。藉此,對於已分配至處理器且處於執行中之群組所含的各執行單位,可維持向已分配之處理器的分配,可削減分配處理所需之成本。
本發明之進而之其他態樣係一種排程裝置。該裝置係於多工處理器系統中,對將平行處理之排程對象之執行單位分配至複數個處理器中的順序進行排程者,其包含下列部分:記憶控制部,其以使一個以上之上述排程對象之執行單位群組化,並使同一群組所含的上述各執行單位所佔有之處理器內的資源可互相參照的方式,將上述資源映射至各執行單位參照之位址空間並進行管理;待執行隊列,其儲存有處於待執行狀態以及執行中狀態之群組;及分配部,其僅於可自上述待執行隊列之前端依序取出群組,並將所取出之群組中所含的所有執行單位同時分配至任一處理器中的情形時,將該群組所含的所有執行單位分配至複數個處理器。
本發明之進而之其他態樣亦為排程裝置。該裝置係於多工處理器系統中,對將平行處理之排程對象之執行單位分配至複數個處理器的順序進行排程者,其包含下列之部 分:待執行隊列,其於包含一個以上之上述排程對象之執行單位之群組內,對於處於待執行狀態以及執行中狀態之群組依照針對上述每個群組所設定之優先度順序且於同一優先度內依照到達順序進行儲存;分配列表產生部,其僅於可自上述待執行隊列之前端依序取出群組,並將所取出之群組所含的所有執行單位同時分配至任一處理器之情形時,將該群組追加至分配列表中;及分配部,其將儲存於上述分配列表產生部所產生之上述分配列表中的群組所含的所有執行單位分配至複數個處理器中。
本發明之進而之其他態樣係一種多工處理器系統。該系統係將平行處理之排程對象之執行單位分配至複數個處理器而平行執行之多工處理器系統,1個處理器中包含排程器,該排程器將上述排程對象之執行單位分配至其他複數個處理器中。上述排程器包含下列部分:記憶控制部,其以使一個以上之上述排程對象之執行單位群組化,使同群組中所含的上述各執行單位所佔有之處理器內之資源可互相參照的方式,將上述資源映射至各執行單位所參照之位址空間並進行管理;待執行隊列,其儲存處於待執行狀態以及執行中狀態之群組;及分配部,其僅於可自上述待執行隊列之前端依序取出群組,並將所取出之群組所含的所有執行單位同時分配至任一處理器的情形時,將該群組所含的所有執行單位分配至複數個處理器。
本發明之進而之其他態樣亦為多工處理器系統。該系統係將平行處理之排程對象之執行單位分配至複數個處理器 而平行執行之多工處理器系統,1個處理器中包含排程器,該排程器將上述排程對象之執行單位分配至其他複數個處理器。上述排程器包含下列部分:待執行隊列,其於包含一個以上之上述排程對象之執行單位的群組內,將處於待執行狀態以及執行中狀態之群組依照針對上述每個群組所設定之優先度順序、且依據於同一優先度內之到達順序進行儲存;分配列表產生部,其僅於可自上述待執行隊列之前端依序取出群組,並將所取出之群組所含的所有執行單位同時分配之任一處理器之情形時,將該群組追加至分配列表;及分配部,其將儲存於上述分配列表產生部所產生之上述分配列表之群組所含的所有執行單位分配至複數個處理器。
本發明之進而之其他態樣亦為排程方法。該方法係於多工處理器系統中,對於將平行處理之排程對象之執行單位分配至複數個處理器之順序進行排程者,其自平行處理之排程對象之執行單位的分配對象至少除去複數個處理器中的一個處理器,並將並非為於非分配對象之處理器上動作之排程對象的執行單位所獨佔之該處理器內的資源可自上述排程對象之執行單位進行參照,以此方式於各執行單位參照之位址空間內映射上述資源後,控制上述執行單位之分配對象向處理器之分配。
本發明之進而之其他態樣亦為排程裝置。該裝置係於多工處理器系統中,對於將平行處理之排程對象之執行單位分配至複數個處理器之順序進行排程者,其包含下列部 分:記憶控制部,自平行處理之排程對象之執行單位的分配對象中至少除去複數個處理器中的一個處理器,且並非為於非分配對象之處理器上動作之排程對象的執行單位所獨佔之該處理器內的資源可自上述排程對象之執行單位進行參照,以此方式,將上述資源映射至各排程對象之執行單位參照的位址空間並進行管理;待執行隊列,其儲存有處於待執行以及執行中狀態之上述排程對象的執行單位;及分配部,其將自上述待執行隊列之前端依序取出上述排程對象之執行單位,並分配至任一處理器。
再者,對於以上構成要素之任意群組合、及本發明之表現於方法、裝置、系統、計算機程式、及資料結構等之間進行變化者,亦作為本發明之態樣而有效。
根據本發明,可有效利用多工處理器系統之資源,實現平行處理之高速化。
實施形態1
圖1係實施形態1之多工處理器系統之結構圖。多工處理器系統包含複數個處理元件(PE,processing element)100及主存儲器120,該等部件連接至主匯流排110。各處理元件100包含處理器130、區域記憶體140、及記憶控制部150。處理器130對於區域記憶體140可讀寫資料。記憶控制部150提供自其他處理元件100之處理器130參照區域記憶體140之資料時之介面,並且提供記憶之同步.排他控制 之功能。
於任意一個處理元件100之中,具有對平行處理之執行單位、即作為排程對象之執行實體(以下稱作線程)進行排程之功能。該排程功能根據特權等級執行動作。特權等級中,具有對於多工處理器系統之所有資源進行存取的權限。另一方面,不具有排程功能之、於其他處理元件100上動作之程式,在用戶等級下動作。用戶等級,與特權等級相比,可存取之資源受到限制。
藉由線程排程,於某一時刻,1個線程被分配至各處理器130,於多工處理器系統全體平行執行複數個線程。已分配至各處理器130中之線程,可佔有且使用處理元件100內之區域記憶體140或記憶控制部150內部之暫存器等中的所有資源。
當線程未分配至任一處理器130之情形時,線程之上下文被保存於主記憶體120。線程之上下文係該線程於分配位址之處理元件100(以下稱作分配地址PE)內所佔有之所有資源的狀態,係線程於處理器130上動作時為保持於各種暫存器內之值的集合、保持於區域記憶體140中之資料、及記憶控制部150之各種暫存器的內部狀態等。線程於處理器130上無動作時,將該線程之上下文複製至主記憶體120,且再度分配至處理器130之後,可讀取該上下文且繼續進行處理。
於本實施形態中,定義了包含一個以上作為要素之線程之線程群組,且以線程群組為單位進行排程,線程群組中 所含的所有線程同時分配至任一處理器130。並非成為線程群組內之一部分線程分配至處理器130,而剩餘線程留存於主記憶體120之狀態。故而,同一線程群組之所有線程共有待執行、及執行中等之轉換狀態。同一線程群組所含的線程可不使用核心之系統呼叫而直接參照互相之位址空間。
圖2係說明自分配至圖1之處理器130之線程所看到之位址空間170的圖式。於位址空間170中,包含下列部分:主記憶區域172,其映像有包含共有資料之主記憶體;及線程映像區域174,其映像有同一群組內之各線程的佔有資源。
於線程映像區域174中,對應於同一群組內之各線程而配置有線程映像#1至#n。因若將處理器數設為n,則同一群組內最多可設置n個線程,故而對於線程映像亦可確保n個區域。各線程映像#1至#n係已對於對應之各線程於分配位址PE內佔有之一部分資源進行記憶映像者,如符號175所示,包含區域記憶體、及用以自外部控制記憶控制部150之暫存器群,其中,用以自外部控制記憶控制部150之暫存器群並非全部都可進行存取,而是只限於下述之通信用暫存器可進行存取,不可對於斜線所示之其他暫存器進行存取。不僅是可存取之暫存器,亦包含不可存取之暫存器,皆映像整個暫存器群,藉此,可無論可存取之暫存器之種類,而使線程映像之尺寸固定,且使與線程映像之前端位址相應之偏移值成為固定值,進而便於程式之 管理。
各線程於分配位址PE內所佔有之資源之一部分映射至位址空間,藉此,同一群組內之各線程可不介以系統呼叫而對於其他線程所佔有之一部分資源互相進行存取操作。對於用以自外部控制記憶控制部150之暫存器,藉由將僅允許操作之暫存器映射至位址空間,從而可對自外部進行之操作加以一定的限制。
於第1個線程映像#1中,以線程基底位址為前端位址而分配有與線程映像之尺寸相應的區域。第2線程映像#2之前端位址係於線程基底位址上累加對應於線程映像之尺寸的偏移值後而得的位址。
於配置同一群組之線程時,藉由指定線程映像之編號#1至#n,決定該線程使用哪一線程映像。下述排程裝置200將同一群組內之各線程使用哪一線程映像作為線程映像之設定資訊而保持於記憶體中,於分配線程時,將線程映像之設定資訊設定於線程之分配位址PE的記憶控制部150。各處理元件100之記憶控制部150於線程被排程之後,根據線程映像之設定資訊可確認同一群組內之各線程之資源記憶映射至哪一線程映像中,且可基於位址空間170之線程映像、並藉由DMA而對於向其他線程之資源進行存取的要求加以處理。
再者,較詳細地說,下述排程裝置200之線程狀態管理部32對於線程群組之線程映像之設定資訊進行管理,將線程映像之設定資訊作為一例而儲存於線程狀態表34中且進 行保持。又,排程裝置200之線程分配部14進行將線程分配至處理器之處理,進行將線程群組之線程映像的設定資訊設定於記憶控制部150中之處理。被分配至處理器中之線程,係於線程群組之線程映像之設定資訊設定於記憶控制部150之後而開始執行。
例如,將2個線程A1與A2設為屬於同一群組A。藉由對群組A進行初始設定,設定第1線程A1之資源被記憶映像於群組A之位址空間的第1區域EA1中,而第2線程A2之資源被記憶映像於位址空間的第2區域EA2中。對群組A之各線程A1、A2進行排程,且將線程A1分配至第1處理器,將線程A2分配至第2處理器。
此時,若自於第1處理器中執行動作之第1線程A1向作為第2線程A2之線程映像之第2區域EA2進行存取時,則第2處理器之資源作為第2線程A2之資源而被參照。第1線程A1與第2線程A2向於處理器之分配與執行,因係於準備好資源之後而執行,故而自第1線程A1向作為第2線程A2之線程映像的第2區域EA2進行之存取,與第2線程A2分配至哪一處理器無關,而必定保證向第2線程A2之資源進行的存取。第2線程A2向作為第1線程A1之線程映像的第1區域EA1進行存取時亦相同。
如此,已分配至任一處理器130中之線程,藉由向設定於位址空間170內之線程映像之位址進行存取,從而可利用DMA對於同一群組內之其他線程所佔有之資源直接進行存取。
同一群組內之其他線程分配至任一個處理器130,然而分配至哪一處理器130於每一排程下均不同。但是,線程映像與線程分配至哪一處理器無關,而是被設定於位址空間170內之相同位址。故而,同一群組內之各線程與線程向處理器之分配狀態無關,而是藉由向位址空間170內之線程映像進行存取而保證可始終向其他線程之資源進行存取。
於各處理元件100之記憶控制部150內部,為使線程之間進行同步通信,而設置有可使用之通信用暫存器。該通信用暫存器之值可藉由特殊命令而自該處理元件100之處理器130中讀取,並且,於該值尚未被寫入通信用暫存器中時,該處理器130等待該值輸入通信用暫存器中。
又,該通信用暫存器可利用除自身以外之處理元件100之記憶控制部150進行寫入。記憶控制部150內部之通信用暫存器作為線程之佔有資源,作為線程映像而記憶映射至位址空間170內。故而,某線程可參照自身之位址空間170內之線程映像,而向其他處理元件100之記憶控制部150的通信用暫存器進行存取,且可寫入值。
當利用被記憶映射至位址空間170內之通信用暫存器時,記憶控制部150,至其他線程向自身線程之通信用暫存器寫入值為止,可實現硬體上處理器停滯的機構,且可使線程之間實現同步通信。
又,亦可利用記憶控制部150所具有之位址空間參照功能,根據記憶體中之輪詢進行排他處理或同步處理。藉由 利用記憶控制部150所具有之記憶同步化命令而對於介以記憶控制部150控制之主記憶體中的資料進行讀寫,從而可進行記憶之同步.排他控制。
如此,同一線程群組中所含的所有線程,因同時分配至任一處理器130而執行,故可靈活運用處理元件100之記憶控制部150之位址空間的參照功能、同步.排他控制機構,而可高效地進行資料傳輸、同步通信、記憶之排他處理.同步處理等,且可提高處理效率。
圖3(a)至(d)係說明線程群組的圖式。圖3(a)係表示包含3個線程th1a、th1b、th1c之第1線程群組。圖3(b)係表示包含1個線程th2a之第2線程群組。如此之線程即便為僅有1個之情形時,亦作為線程群組而處理。同樣,圖3(c)係表示包含2個線程th3a、th3b之第3線程群組。圖3(d)係表示包含1個線程th4a之第4線程群組。
於線程群組中所含的線程內,1個線程被指定為主線程,代表該線程群組。以線程群組為單位進行線程排程時,藉由操作主線程,可統一操作該線程群組中所含的所有線程。
圖4係說明線程以線程群組為單位被分配至處理器130之情形的圖式。該圖係表示於處理器總數為4之多工處理器系統中,如圖3所示之4個線程群組中所含的線程向處理器130分配的狀態。於某一時刻,第1線程群組中所含的3個線程th1a、th1b、th1c分別分配至第1處理器、第2處理器、第3處理器,且第2線程群組所含的1個線程th2a分配 至第4處理器。除此以外之第3線程群組所含的2個線程th3a、th3b、及第4線程群組所含的1個線程th4a保存於主記憶體120。
線程排程係以將同一線程群組中所含的所有線程同時分配至任一處理器130為條件而進行。第1執行群組被分配至處理器130時,僅限於第1線程群組所含的3個線程群組th1a、th1b、th1c可同時分配至任一處理器130之情形。而不會出現3個線程th1a、th1b、th1c中之1個或2個被分配至處理器130,而剩餘的保存於主記憶體120之狀況。
圖5係說明線程之狀態轉換的圖式。線程係藉由產生(create)命令而產生,成為未配置(not configured)狀態42。若對於位於未配置狀態42之線程執行設置命令,則會轉變為已配置(configured)狀態44。藉由向配置命令之參數指定主線程,可使該線程與主線程屬於同一線程群組。若對於處於已配置狀態44之線程執行刪除命令時(delete),則該線程被刪除,且該線程上使用之記憶區域被釋放。
未設置狀態42與已配置狀態44合稱為休眠(dormant)狀態40。若對於處於已配置狀態44之主線程執行開始命令時,則包含該主線程在內,該線程所含的所有線程亦轉換為待執行(ready)狀態52。以後,線程群組所含的所有線程於動作(operational)狀態50內一起進行狀態轉換。以下,對於動作狀態50內之狀態轉換進行說明時,簡單起見,稱為線程,此指同一線程群組所含的所有線程。再者,對應於線程群組之命令,藉由對主線程執行而作用於該線程群組所 含的所有線程。
處於待執行狀態52之線程藉由等待命令轉換為同步等待(waiting)狀態56,處於同步等待狀態56之線程接收到信號後返回至待執行狀態52。
處於待執行狀態52之線程藉由分配(dispatch)命令轉換為執行中(running)狀態54,處於執行中狀態54之線程藉由讓渡(yield)命令而返回至待執行狀態52,藉由等待命令而轉換為同步等待狀態56,藉由暫停(suspend)命令而轉換為中斷狀態60。
處於同步等待狀態56之線程藉由暫停命令而轉換至同步等待中斷(waiting and suspended)狀態58,處於同步等待中斷狀態58之線程藉由恢復(resume)命令而返回至同步等待狀態56。處於同步等待中斷狀態58之線程接收到信號後轉換為中斷(suspended)狀態60。
處於中斷狀態60之線程藉由恢復命令而轉換為待執行狀態52,處於待執行狀態52之線程藉由暫停命令而轉換為中斷狀態60。
當處於執行中狀態54之線程發生例外處理後,會轉換為中止(stopped)狀態62,處於中止狀態62之線程藉由重啟命令而轉換為執行中狀態54或待執行狀態52。
當處於待執行狀態52、執行中狀態54、中止狀態62以及中斷狀態60之線程分別結束(terminate)時,線程自動作狀態50轉移為休止狀態40,轉換為已配置狀態44。
於處於上述動作狀態50之線程內,處於執行中狀態54之 線程被分配至處理器130,處於除此以外之狀態下之線程保存於主記憶體120。
圖6係實施形態1之排程裝置200之結構圖。該圖係描述著眼於功能方面之方塊圖,該等功能區塊可僅藉由硬體、僅藉由軟體、或藉由該兩者之組合而以多種形式實現。排程裝置200設置於圖1之處理元件100中之任意一個中,使用處理器130、區域記憶體140以及記憶控制部150而實現。進而亦可使用主記憶體120而實現。以下,於說明圖6之結構時,適宜參照圖7至圖9。
線程狀態管理部32藉由線程狀態表34而對線程之產生與刪除、線程群組之設定、線程群組之優先度以及線程群組單位之狀態轉換進行管理。
圖7係說明線程狀態表34之圖式。線程狀態表34對於線程群組ID70、線程群組中所含的線程數72、線程群組之轉換狀態74、線程群組中所含的線程76、以及線程群組之優先度78進行相應的儲存。若有線程之產生與刪除、線程群組之設定與狀態變化、及優先度之設定等時,則線程狀態管理部32更新線程狀態表34。
於該圖之例中,群組ID1之第1線程群組中,線程數為3個,包含3個線程th1a、th1b、th1c,優先度設定為1,當前之轉換狀態為執行中。群組ID2之第2線程群組中,線程數為1個,包含1個線程th2a,優先度設定為2,當前之轉換狀態為執行中。群組ID3之第3線程群組中,線程數為2個,包含2個線程th3a、th3b,優先度設定為2,當前之轉 換狀態為待執行狀態。群組ID4之第4線程群組中,線程數為1個,包含1個線程th4a,優先度設定為4,當前之轉換狀態為待執行狀態。優先度之值越小則優先度越高,優先度於此設定為16等級,但具有設定為256等級等時之設計自由度。
線程狀態管理部32將於由線程狀態表34管理之線程群組內,處於待執行狀態或執行中狀態之線程群組列入待執行隊列30。待執行隊列30係對於處於待執行狀態或執行中狀態之線程群組依照針對每個線程群組所設定的優先度順序、且同一優先度內根據先取出先列入者之FIFO(First In First Out,先進先出)順序而決定優先等級且對其進行排列的等待行列。
圖8係說明待執行隊列30之圖式。於優先度1至16之列表之各條目中,具有該優先度之線程群組之主線程係依照FIFO順序列隊。
於該圖之示例中,於優先度1之條目中,列隊有第1線程群組之主線程pth1,於優先度2之條目中,依照此順序而列隊有第2線程群組之主線程pth2與第3線程群組之主線程pth3,於優先度4之條目中,列隊有第4線程群組之主線程pth4。因第2線程群組先於第3線程群組入列,故而第2線程群組之主線程pth2亦先於第3線程群組之主線程pth3而列隊。
自處於待執行隊列30前端位置之優先度1之主線程pth1至排列於優先度2之條目前端之主線程pth2之間設為相互 連接。進而,自優先度2之條目之最初之主線程pth2至同一優先度內下一個列隊之主線程pth3之間設為相互連接,進而,自該主線程pth3至優先度4之主線程pth4之間設為相互連接。藉此,可依照主線程pth1、pth2、pth3、pth4之順序取出,以此方式產生已決定優先等級的待執行隊列30。
線程狀態管理部32,於線程群組之狀態並非為待執行、執行中之任一狀態之情形時,自待執行隊列30中刪除該線程群組之主線程。又,將新產生的、藉由開始命令而變為待執行狀態之線程群組之主線程、或自同步等待狀態等恢復至待執行狀態之線程群組之主線程,按照FIFO順序插入該優先度之條目中,更新待執行隊列30。
排程器10係對將列隊於待執行隊列30中之線程群組自前端取出且分配至處理器中進行控制者,其包含分配列表產生部12及線程分配部14。線程狀態管理部32於因線程群組之狀態轉換為同步等待、中斷等狀態,或線程結束時而需要再次排程之情形時,通知分配列表產生部12。
分配列表產生部12自線程狀態管理部32接收再次排程之指示,執行下述之"標記處理"或"分配列表產生處理"。
分配列表產生部12利用分配線程數計數器16、線程分配列表18、以及排程排列20而進行線程排程。
分配線程數計數器16係對於分配至處理器130中之線程數進行計數者,以下簡稱為"計數器"。線程分配列表18係儲存分配至處理器130中之線程群組之主線程者,以下簡 稱為"分配列表"。排程排列20係保持線程向處理器130之分配狀態之排程表,係使用以指定各個處理器130之處理器編號與分配至該處理器130中之線程相對應之排列。
圖9係說明排程排列20之圖式。排程排列20中對應保存處理器編號80、分配至該處理器之線程82、以及標記84。處理器編號80係專門對應於處理器之識別編號。標記84於分配列表產生部12之標記處理時,係作為用以確保線程向處理器分配的標記而使用。於該圖之示例中,處理器總數為4,第1至第4處理器以1至4之編號進行識別。第1線程群組之3個線程th1a、th1b、th1c分別被分配於處理器編號1至3下,而第2線程群組之線程th2a被分配於處理器編號4下。
分配列表產生部12,於開始線程排程時,將計數器16初始化為零,並將分配列表18清空。
分配列表產生部12自待執行隊列30之前端依序取出主線程。以下,將所取出的主線程所屬的線程群組稱為"分配候補線程群組"。分配列表產生部12將分配候補線程群組中所含的線程個數累加至計數器16。計數器16之值超過多工處理器系統的處理器總數之情形時,分配列表產生部12將該分配候補線程群組排除於分配候補之對象之外,而將計數器16的值返回到累加前之值。
分配列表產生部12藉由參照排程排列20,檢查自待執行隊列30依序取出之分配候補線程群組是否已處於執行中之狀態。當分配候補線程群組中所含的各線程處於排程排列 20時,該分配候補線程群組所含的各線程處於執行中之狀態。該情形下,於排程排列20中,對分配執行中之線程之處理器編號添加標記。將此稱為"標記處理"。藉由標記處理,使得已分配至附有標記之處理器編號下之線程不向其他處理器變更分配位址進行再次配置,以此方式,確保向該處理器之分配。
分配列表產生部12,於分配候補線程群組所含的各線程不處於排程排列20之情形下,即,該分配候補線程群組並非處於執行中狀態之情形下,將該分配候補線程群組之主線程追加至分配列表18。將此稱為"分配列表產生處理"。藉由分配列表產生處理,分配列表18中,於此次排程中新分配至處理器130之線程群組被列入列表中。
分配列表產生部12反覆進行標記處理與分配列表產生處理中之任意一項處理,直至計數器16之值已達到處理器總數、或已自待執行隊列30末尾取出主線程群組為止。
當分配列表產生部12之處理結束後,線程分配部14自分配列表18取出主線程,將該線程群組中所含的所有線程分配至排程排列20中未標記之處理器編號下。此時,分配至未作標記之處理器編號且處於執行中狀態之線程被先占,且轉移為待執行狀態。線程分配部14向線程狀態管理部32通知被先占的線程,線程狀態管理部32更新線程狀態表34、且管理該線程之狀態變化。
依據保持線程之分配狀況之排程排列20,線程被實際分配至處理器130,且轉換為執行。藉此,已處於執行中狀 態之線程繼續於相同之處理器130上執行,處於待執行狀態之線程重新分配至處理器130中且變為執行中狀態。線程狀態管理部32更新線程狀態表34且管理各線程之狀態變化。
圖10係說明具有上述結構之排程裝置200之線程排程順序的流程圖。
線程狀態管理部32於線程之轉換狀態自執行中狀態變為同步等待狀態或中斷狀態,或者線程已結束之情形時,向分配列表產生部12指示線程之排程。分配列表產生部12將計數器16與分配列表18初始化(S10)。
分配列表產生部12自待執行隊列30之前端取出分配候補線程群組(S12)。分配列表產生部12藉由將分配候補線程群組中所含的線程之個數累加至計數器16,而計算分配線程數(S14)。
分配列表產生部12判斷計數器16之值是否為處理器總數以下(S16)。當計數器16之值超過處理器總數之情形時,該分配候補線程群組中所含的所有線程不可同時分配至任一處理器,故而,需自計數器16中減去該分配候補線程群組之線程數且使計數器值返回到原來的值(S18),進入步驟S26之處理。
當計數器16之值為處理器總數以下之情形時(S16之Y),分配列表產生部12檢查分配候補線程群組中所含的各線程是否儲存於排程排列20中(S20)。於排程排列20中,當分配候補線程群組所含的線程分配至任一處理器編號下時, 該線程於上次之排程中分配至該處理器中且已執行。
分配列表產生部12於分配候補線程群組所含的各線程存在於排程配列20中之情形下(S20之Y),於排程排列20中,對分配有該線程之處理器編號添加標記(S22)。分配至已添加有標記之處理器編號下之線程以不向其他處理器變更分配位址進行再次配置之方式,確保向該處理器之分配。
分配列表產生部12於分配候補線程群組所含的各線程不存在於排程排列20中之情形下(S20之N),分配列表產生部12將該分配候補線程群組追加至分配列表18(S23)。
分配列表產生部12於計數器16之值等於處理器總數之情形時(S24之Y),因不可分配該值以上之線程,故結束分配列表18之產生,進入步驟S30。又,分配列表產生部12當分配候補線程群組已自待執行隊列30之末尾取出之情形時(S26之Y),因已不存在需分配之線程,故而該情形下亦結束分配列表18之產生,進入步驟S30。
分配列表產生部12於計數器之值未達到處理器數(S24之N),分配候補線程群組並未自待執行隊列30之末尾取出之情形時(S26之N),取出待執行隊列30中之下一個線程群組(S28),反覆進行步驟S14以後之處理。
於步驟S30中,線程分配部14將儲存於分配列表18中之線程群組所含的各線程,分配至排程排列20中未作標記的處理器編號下。此時,已分配至未作標記之處理器編號下之線程向該處理器分配之次序被搶先。對於儲存於分配列表18中之所有線程群組,當向處理器編號之分配處理結束 時,結束一系列線程排程處理。
以下,以幾個示例說明上述線程排程順序。圖11至圖13係說明圖7之線程狀態表34中所示之條件下的線程排程順序的圖式。
設定多工處理器系統之處理器總數為4個。將4個線程群組設定為皆處於待執行狀態,且使任一線程亦處於未分配至處理器之初始狀態。將此時之時刻設定為t0。
圖11(a)表示待執行隊列30之初始狀態,第1線程群組之主線程pth1(以下稱為第1主線程)列隊於優先度1之條目下,第2線程群組之主線程pth2(以下稱為第2主線程)與第3線程群組之主線程pth3(以下稱為第3主線程)列隊於優先度2之條目下,第4線程群組之主線程pth4(以下稱為第4主線程)列隊於優先度4之條目下。
此處,第2主線程pth2先於第3主線程pth3而列隊。故而,待執行隊列30成為按照第1主線程pth1、第2主線程pth2、第3主線程pth3、第4主線程pth4之順序確定優先等級之等待行列。
圖11(b)係說明分配列表產生部12之標記處理與分配列表產生處理之過程的圖式。處理過程表15表示,對於分配列表產生部12自待執行隊列30之前端依序取出之主線程,執行標記處理與分配列表產生處理中之何種處理,又,顯示此時之計數器16之值。
分配列表產生部12自圖11(a)之待執行隊列30之前端取出第1主線程pth1,將第1線程群組之線程數3累加至計數器 16中。排程排列20為空狀態,任一線程皆並非為標記處理之對象,故而第1主線程pth1直接儲存於分配列表18中。
其次,分配列表產生部12取出圖11(a)之待執行隊列30中之下一個條目即第2主線程pth2,將第2線程群組之線程數1累加至計數器16中。第2主線程pth2同樣並非為標記處理之對象,被追加至分配列表18中。此時,計數器值為4,達到處理器總數,故而分配列表產生部12結束分配列表18之產生。
線程分配部14將於圖11(b)之分配列表18中得以列表追加之第1、第2線程群組所屬的所有線程分配至排程排列20之未作標記之處理器編號。
圖11(c)係表示已根據分配列表18而分配線程之排程排列20。任一處理器編號均未作標記,第1線程群組中之3個線程th1a、th1b、th1c分配至第1至第3處理器,第2線程群組中之1個線程th2a分配至第4處理器。藉此,當前時刻t0下之線程排程結束。
然後,設定為,於時刻t1,第1線程群組之各線程變為同步等待,或成為中斷或結束等既非執行中狀態亦非待執行狀態之狀態。圖12(a)係表示於時刻t1之待執行隊列30之圖式。因第1主線程pth1既非處於待執行狀態亦非處於執行中狀態,故線程狀態管理部32將第1主線程pth1排除於待執行隊列30之外。其結果係,於時刻t1,待執行隊列30之前端變為第2主線程pth2。
分配列表產生部12接收到線程狀態管理部32之通知之 後,將計數器16與分配列表18初始化,且開始排程。圖12(b)表示於時刻t1下分配列表產生部12之標記處理與分配列表產生處理之過程。
分配列表產生部12自待執行隊列30之前端取出第2主線程pth2,將第2主線程群組之線程數1累加至計數器16,使得計數器之值為1。
分配列表產生部12檢查第2線程群組之線程th2a是否位於排程排列20中。於此時,排程排列20成為前一個時刻t0之圖11(c)之狀態,第2線程群組之線程th2a分配至處理器編號4下,故而分配列表產生部12如圖12(c)所示,對排程排列20之處理器編號4添加標記。
其次,分配列表產生部12取出待執行隊列30之下一個條目即第3主線程pth3,將第3線程群組之線程數2累加至計數器16,使得計數器值為3。
分配列表產生部12檢查第3線程群組之線程th3a與th3b是否位於排程排列20中。因第3線程群組之線程th3a與th3b不存在於圖11(c)所示時刻t0下之排程排列20中,故分配列表產生部將第3主線程pth3追加至分配列表18。
分配列表產生部12將待執行隊列30之進而下一個條目即第4主線程pth4取出,將第4線程群組之線程數4累加至計數器16,使得計數器值為4。
分配列表產生部12同樣因第4線程群組之線程pth4不位於排程排列20中,故將第4主線程pth4追加至分配列表18中。分配列表產生部12因計數器16之值已達到處理器總數 4,故結束分配列表18之產生。
線程分配部14將已加入圖12(b)之分配列表18中中之第3與第4線程群組所含之所有線程分配至排程排列20中未作標記的處理器編號下。
圖12(c)係表示已根據分配列表18而分配線程之排程排列20之圖式。因處理器編號4上未作標記,故分配至該處理器編號下之第2線程群組之線程th2a保持原本的分配。第3線程群組之2個線程th3a與th3b、第4線程群組之1個線程th4a分別分配至未作標記之處理器編號1至3下。藉此,於當前時刻t1下之線程排程結束。
圖13係表示圖11及圖12中所說明之線程排程之線程之分配狀態的時間變化的圖式。於時刻t0下,第1線程群組之3個線程th1a至th1c分別分配至第1至第3處理器(PE1至PE3)而執行,第2線程群組之線程th2a分配至第4處理器(PE4)而執行。
於時刻t1下,第1線程群組之3個線程th1a至th1c藉由轉換為同步等待等而排除於待執行隊列30之外,故雖再次進行排程,然而於該時刻優先順序最高之第2線程群組之線程th2a分配至第4處理器且以此狀態繼續執行,第3線程群組之2個線程th3a、th3b及第4線程群組之1個線程th4a分別分配至狀態為空之第1至第3處理器中而執行。
圖14至圖16係說明其他線程排程例之圖式。於該例中,說明"優先等級之逆轉"之產生。
圖14係表示本例中之線程狀態表34。與圖7之例不同之 處僅在於,第3線程群組之線程數為4,其他條件皆與圖7中之示例相同。故而,於最初之時刻t0下之排程結果與圖11相同,因此省略相關說明。藉由使第1線程群組之各線程成為同步等待等,而對於排除於待執行隊列30之外之、時刻t1下之排程順序加以說明。
圖15(a)係說明於時刻t1下待執行隊列30之狀態的圖式。與圖12(a)相同,第1主線程pth1排除於待執行隊列30之外,其結果為,待執行隊列30之前端變為第2主線程pth2。
圖15(b)係說明於時刻t1下分配列表產生部12之標記處理與分配列表產生處理的過程之圖式。
分配列表產生部12自待執行隊列30之前端取出第2主線程pth2,將第2線程群組之線程數1累加至計數器16,使得計數器值為1。
分配列表產生部12因第2線程群組之線程th2a位於排程排列20,故而如圖15(c)所示,對於排程排列20中分配有線程th2a之處理器編號4下添加標記。
其次,分配列表產生部12取出待執行隊列30中之下一個條目即第3主線程pth3。當分配列表產生部12將第3線程群組之線程數4累加至計數器16之後,計數器值為5,故,判定不可對第3線程群組進行分配,對於第3線程群組,將其自分配候補中除去,皆不進行標記處理與分配列表產生處理。
分配列表產生部12取出待執行隊列30中之進而下一個條 目即第4主線程pth4。將第4線程群組之線程數1累加至計數器16,使得計數器值為2。分配列表產生部12因第4線程群組之線程th4a不存在於排程排列20中,故將第4主線程pth4追加於分配列表18中。因第4線程群組之線程th4a為待執行隊列30中最後之條目,故而分配列表產生部12結束分配列表18之產生。
線程分配部14將列入圖15(b)之分配列表18中之第4線程群組所含的所有線程,分配至排程排列20中未作標記之處理器編號下。
圖15(c)係表示已根據分配列表18分配線程的排程排列20。分配至已添加標記之處理器編號4下之第2線程群組的線程th2a保持原有之分配,第4線程群組之1個線程th4a分配至未作標記之處理器編號1下。藉此,於當前時刻t1下之線程之排程結束。
圖16係表示本例中線程之分配狀態之時間變化的圖式。於時刻t0下之線程之分配與圖13中相同。於時刻t1下,最應優先之第2線程群組之線程th2a保持執行中之狀態,該情形與圖13中相同,然而因應其次優先之第3線程群組之線程數為4,故而無法分配至空處理器,而優先等級低於第3線程群組之第4線程群組之線程th4a被分配至第1處理器而執行。
如此,因存在將同一線程群組所含的所有線程數同時分配至任一處理器中之規約,故而,按照遵守最大優先等級之排程策略進行排程時,為提高處理器資源之利用效率, 亦會有逆轉優先等級之情形。
如上述之示例,若將線程排程中產生優先等級之逆轉之條件定式化,具體如下所示。若將H、M、L設為線程群組,將P(X)設為線程群組X之優先度,將N(X)設為線程群組中所含的線程個數,將n設為處理器總數,則優先度具有以下關係P(H)≧P(M)>P(L),於此情形下,當線程數具有以下之關係時,會產生優先等級之逆轉。
N(H)+N(M)>n N(H)+N(L)≦n
上述關係式成立時,無法將線程群組M中所含的所有線程分配至處理器,然而因優先度低於其之線程群組N中所含的所有線程可分配至處理器,故於本實施形態之線程排程方式中,為提高處理器之使用效率,逆轉優先等級,且對優先等級較低之線程群組N進行分配。
圖17至圖22係說明進而另一線程排程例之圖。於該例中,就已分配之線程藉由其他優先等級較高之線程搶先向處理器分配之狀況加以說明。
圖17係說明線程狀態表34之圖式。存在自第1線程群組至第5線程群組為止之線程群組,線程數分別為2、3、1、1、3,優先度分別為1、2、3、4、5。
圖18(a)至(c)係說明於最初時刻t0下之排程之圖式。待執行隊列30如圖18(a)所示,第1至第5主線程pth1至pth5按照此順序列入隊列。
圖18(b)係表示分配列表產生部12之標記處理與分配列 表產生處理之過程。分配列表產生部12自待執行隊列30之前端取出第1主線程pth1,將線程數2累加至計數器16,使得計數器值為2,並且,將第1主線程pth1追加至分配列表18中。
分配列表產生部12取出待執行隊列30中之下一個條目即第2主線程pth2,然而,因第2線程群組之線程數為3,若將其累加至計數器16後則超過處理器總數4,故而無法分配第2線程群組。
於此,分配列表產生部12取出待執行隊列30中之進而下一個條目即第3主線程pth3,將第3線程群組之線程數1累加至計數器16,使得計數器值為3,將第3主線程pth3追加至分配列表18中。藉此,產生優先等級低於第2線程群組之第3線程群組被優先分配至處理器中之優先等級的逆轉。
進而,分配列表產生部12取出待執行隊列30中之下一個條目即第4主線程pth4,將第4線程群組之線程數1累加至計數器16,使得計數器值為4,將第4主線程pth4追加至分配列表18中。分配列表產生部12因計數器16的值達到處理器總數4,故結束分配列表18之產生。
線程分配部14將列入圖18(b)之分配列表18中之第1、第3以及第4線程群組所含的各線程,分配至排程排列20。如圖18(c)所示,第1線程群組之2個線程1a與線程1b分別分配至處理器編號1與2,第3線程群組之線程3a分配至處理器編號3,第4線程群組之線程th4a分配至處理器編號4。
然後,於時刻t1下,使得第1線程群組中之各線程成為同步等待。其結果如圖19(a)所示,待執行隊列30之前端變為第2主線程pth2。
分配列表產生部12如圖19(b)所示,自待執行隊列30之前端取出第2主線程pth2,將第2線程群組之線程數3累加至計數器16,使得計數器值為3。因第2線程群組中之線程不存在於前一個時刻t0下之排程排列20中,故分配列表產生部12將第2主線程pth2追加至分配列表18中。
其次,分配列表產生部12取出待執行隊列30中之下一個條目即第3主線程pth3,將第3線程群組中之線程數1累加至計數器16,使得計數器值為4。因第3線程群組中之線程th3a位於前一個時刻t0下之排程排列20中,故分配列表產生部12如圖19(c)所示,對於分配有排程排列20中第3線程群組之線程th3的處理器編號3添加標記。
因計數器16之值已達到處理器總數4,故線程分配部14如圖19(c)所示,將列入分配列表18中之第2線程群組所含的3個線程th2a、th2b、th2c,分配至排程排列20中未作標記之處理器編號1、2、4下。此時,分配至處理器編號4下之第4線程群組之線程th4a被第2線程群組之線程th2c搶先向處理器之分配。
於時刻t2下,使第3線程群組之線程th3a結束。藉此,如圖20(a)所示,自待執行隊列30中除去第3主線程pth3。
如圖20(b)所示,分配列表產生部12自待執行隊列30之前端取出第2主線程pth2,將第2線程群組之線程數3累加 至計數器16,使得計數器值為3。分配列表產生部12因第2線程群組之各線程已存在於排程排列20中,故而如圖20(c)所示,對於已分配有第2線程群組之線程th2a、th2b、th2c之處理器編號1、2與4添加標記。
其次,分配列表產生部12取出待執行隊列30中之下一個條目即第4主線程pth4,將第4線程群組之線程數1累加至計數器16,使得計數器值為4,因第4線程群組之線程不存在於排程排列20中,故將第4主線程pth4追加至分配列表18中。
因計數器16之值已達到處理器總數4,故線程分配部14如圖20(c)所示,將列入分配列表18中之第4線程群組之線程th4a,分配至排程排列20中未作標記之處理器編號3下。
於時刻t3下,使第2線程群組之線程th2a結束。藉此,如圖21(a)所示,自待執行隊列30中除去第2主線程pth2。
如圖21(b)所示,分配列表產生部12自待執行隊列30之前端取出第4主線程pth4,將第4線程群組之線程數1累加至計數器16,使得計數器值為1。分配列表產生部12因第4線程群組之各線程已存在於排程排列20中,故而如圖21(c)所示,對分配有第4線程群組之線程th4a之處理器編號3添加標記。
其次,分配列表產生部12取出待執行隊列30中下一個條目即第5主線程pth5,將第5線程群組之線程數3累加至計數器16,使得計數器值為4。因第5線程群組之線程不存在 於排程排列20中,故而將第5主線程pth5追加至分配列表18中。
因計數器16之值已達到處理器總數4,故而線程分配管理部14如圖21(c)所示,將已列入分配列表18中之第5線程群組之線程th5a、th5b、th5c,分別分配至排程排列20中未作標記之處理器編號1、2與4下。
圖22係表示本例中分配狀態之時間變化的圖式。於時刻t0下,第1線程群組之2個線程th1a與th1b被分配至第1處理器與第2處理器中而執行,第3線程群組之線程th3a被分配至第3處理器中而執行,第4線程群組之線程th4a分被配至第4處理器中而執行。
於時刻t1下,第1線程群組成為同步等待,進行再次排程。此時,因於該時刻優先等級最高之第2線程群組中之3個線程th2a、th2b、th2c被分配,故而分配至第4處理器之、優先等級較低之第4線程群組之線程th4a被先占。然而,於時刻t2下,若第3線程群組結束,則取而代之,第4線程之線程th4a分配至第3處理器。於時刻t3下,若第2線程群組結束,則取而代之,第5線程群組之線程th5a、th5b、th5c分別分配至第1、第2、第4處理器中。
如上述之說明,根據本實施形態之排程裝置200,使線程群組化,使得同一線程群組中所含的複數個線程同時分配至任一處理器而執行,藉此,利用多工處理器系統之同步.排他控制機構,可於線程群組內之線程之間以較高之效率參照互相之位址空間,且以較高之效率進行記憶之排 他處理。又,因於線程間通信,或共有記憶之情形下,線程群組內之線程亦同時分配至處理器,故而可高效地進行線程間之通信,或進行記憶之共有。
假定,同一線程群組所含的複數個線程中,若包含分配至處理器中之線程、及未分配至處理器而線程之上下文保存於主記憶體中之線程,則需要明確線程之實體當前處於何處,詢問核心且通過系統呼叫讀取資料,用以進行該等操作之處理機構較複雜且花費之成本較高。然而,於本實施形態中,當某一線程位於處理器之情形時,可確保同一線程群組中之其他線程亦位於其他處理器上,故而可提高處理效率。
於本實施形態之線程排程中,於將同一線程群組所含的所有線程同時分配至處理器之條件下,可使優先等級較高之線程儘量最優先,並且,可最大限度地提高多工處理器之資源之利用效率。為分配優先等級較高的線程群組之線程,使得與先分配之線程相比優先等級較低的線程先占。藉由先占可保持優先等級。又,由於處理器總數有規約,而無法分配某線程群組之情形時,亦會出現優先等級較低之線程群組被優先,優先等級產生逆轉之情形。藉由該優先等級之逆轉,可提高處理器之利用效率。
本實施形態中之待執行隊列30,不僅對處於待執行狀態之線程群組,亦對處於線程狀態之線程群組依照優先度順序且於同一優先度內根據FIFO之順序進行列隊。藉此,可按照線程群組之FIFO之順序而進行排隊。假定將處於執行 中狀態之線程群組排除於待執行隊列30之外時,為維持FIFO之順序,需要另外記憶FIFO之順序,則處理變得複雜且效率下降。然而,於本實施形態中,因處於執行中狀態之線程群組亦依照FIFO之順序保持於待執行隊列30中,故可維持FIFO之順序,並且可統一進行分配處理。因此,分配處理之效率較高,處理亦簡單。
另,於本實施形態中,分配列表產生部12於排程排列20中進行標記處理,藉此,可確保已分配之線程不會變更作為分配位址之處理器進行再配置。於處於執行中狀態之線程繼續被排程而執行之情形下,該線程於同一處理器中連續執行,故而可省略線程向處理器之分配處理,提高處理效率。
實施形態2
實施形態2中之多工處理器系統與圖1中之多工處理器系統的結構相同,藉由線程排程,於某一時刻,將1個線程分配至各處理器130,於多工處理器系統全體平行執行複數個線程。
本實施形態之多工處理器系統與實施形態1不同之處在於:本實施形態下,複數個處理器130內,至少有一個處理器130不為線程排程之對象,而線程藉由線程排程分配至剩餘之處理器130中。
又,於實施形態1中,係將線程群組定義為包含一個以上之線程,且以線程群組為單位進行排程,然而於本實施形態中,線程群組並無特別定義,且係以線程為單位進行 排程。線程排程方式可以實施形態1中說明之優先度順序、於同一優先度內根據FIFO之順序而控制線程向處理器之分配,亦可採用通常之循環方式或優先權方式。
於線程分配對象以外之處理元件100(以下稱為非分配對象PE)之處理器130上,單獨佔有該處理元件100內之資源之執行實體執行動作,該執行實體並非為排程之對象,故而,一旦分配至處理器後,不會被先占向該處理器之分配。以下,將並非為於該非分配對象PE上動作之排程對象之執行實體稱為"非排程對象執行實體"。
非排程對象執行實體可佔有並使用非分配對象PE內之區域記憶體140或記憶控制部150內部的暫存器等中的所有資源。此與藉由線程排程分配至處理元件100之線程可佔有且使用處理元件100內之區域記憶體140或記憶控制部150內部之暫存器等中的所有資源相同。又,關於非排程對象執行實體佔有之資源,為可自外側即其他處理元件100進行存取,而將除一部分未允許存取之關鍵性資源以外的幾乎所有資源映射至位址空間。
圖23係說明自分配至某處理器130中之線程所看到之位址空間170的圖式。於非分配對象PE上動作之非排程對象執行實體暫時佔有之資源,被記憶映射至於其他處理元件100上動作之各線程之位址空間170。於位址空間170內,包含下列部分:主記憶區域172,其映像有包含共有資料之主記憶體;非排程對象執行實體映像區域176,其映像有非排程對象執行實體之佔有資源。
非排程對象執行實體映像區域176中,於該例中,配置有2個非排程對象執行實體映像#1、#2。即,於本例中,2個處理元件100被選作為非分配對象PE,非排程對象執行實體於各非分配對象PE上動作。各非排程對象執行實體映像#1、#2係由將各非排程對象執行實體於非分配對象PE內所佔有之資源進行記憶映像後而成者,如符號177所示,其包含區域記憶體、及用以自外部控制記憶控制部150之暫存器群。於暫存器群中,除於實施形態1中說明之用於同步通信之通信用暫存器以外,還包含以下等部分:用以進行程式之執行或停止的程式控制用暫存器、暫存器用以控制DMA的DMA控制用暫存器,與於實施形態1中說明之圖2之線程映像之情形不同之處在於,皆可向該等所有暫存器進行存取。藉由向該等暫存器進行存取,可直接、細緻地對非排程對象執行實體所佔有的處理器資源進行操作。
於第1非排程對象執行實體映像#1中,以非排程對象執行實體基底位址為前端位址,而分配有大小為非排程對象執行實體映像之尺寸之區域。第2非排程對象執行實體#2之前端位址係於非排程對象執行實體基底位址上累加對應於非排程對象執行實體映像之尺寸之偏移值的位址。於該例中,僅配置有2個非排程對象執行實體映像#1、#2,然而,一般而言,對應於成為線程排程對象以外之、非排程對象執行實體動作之處理元件100之數量,而設定非排程對象執行實體映像。
於產生非排程對象執行實體時,根據作為產生函數之返回值而返回之ID而決定非排程對象執行實體映像之編號,該非排程對象執行實體以靜態的形式決定使用位址空間170內之哪一非排程對象執行實體映像。各處理元件100之記憶控制部150將各非排程對象執行實體使用哪一非排程對象執行實體映像作為非排程對象執行實體映像之設定資訊而保持。各處理元件100之記憶控制部150,可藉由非排程對象執行實體映像之設定資訊,來確認各非排程對象執行實體之資源被記憶映射至哪一非排程對象執行實體映像,且可基於位址空間170之非排程對象執行實體映像,利用DMA處理對於非排程對象執行實體之資源提出之存取要求。
例如,設定為,於系統初始化時,第1、第2處理器被排除於線程排程對象之外,第1非排程對象執行實體R1於第1處理器上動作,第2非排程對象執行實體R2於第2處理器上動作。又,設定線程被排程且分配至第3、第4處理器。
於產生第1、第2非排程對象執行實體R1、R2時,設定第1非排程對象執行實體R1之資源被記憶映射至線程之位址空間之第1區域ER1,第2非排程對象執行實體R2之資源被記憶映射至線程之位址空間之第2區域ER2。設定為,藉由線程排程,使得第1線程A1被分配至第3處理器,而第2線程A2被分配至第4處理器。
此時,若自於第3處理器上動作之第1線程A1,向作為第1非排程對象執行實體R1之非排程對象執行實體映像的第1 區域ER1進行存取,則第1處理器之資源作為第1非排程對象執行實體R1之資源而被參照。自第1線程A1向第1非排程對象執行實體R1之非排程對象執行實體映像即第1區域ER1進行的存取,與第1非排程對象執行實體R1於哪一處理器上動作無關,而必須確保其係向第1非排程對象執行實體R1之資源進行存取。第1線程A1向第2非排程對象執行實體R2之非排程對象執行實體映像即第2區域ER2進行存取之情形時亦相同。
當於第4處理器動作之第2線程A2向作為第1、第2非排程對象執行實體R1、R2之非排程對象執行實體映像之第1區域ER1、第2區域ER2進行存取情形時亦完全相同。
如此,分配至任一處理器130之線程,藉由向設定於位址空間170內之非排程對象執行實體映像之位址進行存取,可介以DMA直接向非排程對象執行實體所佔有之資源進行存取。
線程向被記憶映射至位址空間中之非排程對象執行實體所佔有資源進行存取,藉此,可不介以系統呼叫而直接對非排程對象執行實體動作之處理器的硬體資源進行操作,於線程參照之位址空間內,因非排程對象執行實體佔有的資源幾乎均被映像,故可將更多的硬體資源之控制委託給用戶管理。例如,亦可自外部對程式之執行、停止等進行操作。
又,於實施形態1中說明的同步機構於本實施形態中亦有效。線程向作為被記憶映射至位址空間內之非排程對象 執行實體之一個資源的記憶控制部150內之通信用暫存器寫入值,且非排程對象執行實體等待對於該通信用暫存器之輸入結束,藉此,可實現非排程對象執行實體與線程之間之同步。
作為非排程對象執行實體之其他使用方法,亦可將非排程對象執行實體所佔有的資源記憶映射至圖形顯示裝置等裝置之記憶空間內,於非排程對象執行實體動作之處理元件100與圖形顯示裝置之間亦可實現利用非排程對象執行實體之佔有資源的同步機構。
實施形態3
於實施形態2之多工處理器系統中,未定義線程群組,但亦可與實施形態1同樣使線程群組化,以線程群組為單位進行排程。實施形態3之多工處理器系統係採用,於實施形態1之多工處理器系統中,將實施形態2中所說明的非排程對象執行實體所佔有資源記憶映射至位址空間內之方法。
於本實施形態之多工處理器系統中,與實施形態2相同,於複數個處理器130內,至少有1個處理器130不為線程排程對象,線程藉由線程排程而分配至剩餘的處理器130中。又,於本實施形態之多工處理器系統中,與實施形態1相同,線程群組定義為包含1個以上之線程,以線程為單位進行排程。對於與實施形態1以及實施形態2共通之結構及動作,省略相關說明,僅就不同之結構及動作加以說明。
圖24係說明自分配至某一處理器130中之線程所看到的位址空間170之圖式。於位址空間170中,包含下列部分:主記憶區域172,其映像有包含共有資料之主記憶體;線程映像區域174,其映像有同一群組內之各線程所佔有的資源;及,非排程對象執行實體映像區域176,其映像有非排程對象執行實體所佔有之資源。
線程映像區域174如實施形態1中之說明,而非排程對象執行實體映像區域176則如實施形態2中之說明。再者,以符號175所示之各線程群組中所包含的資源與以符號177所示之各非排程對象執行實體映像中所包含的資源之不同之處在於,不允許向線程映像所包含的資源進行存取,但被映像之資源之種類相同,故而兩映像之尺寸相同,對應於前端位址之偏移值為同值。
線程映像區域174係對於同一群組所含的線程之位址空間而設定者,不可自不同群組所含的線程進行參照,然而非排程對象執行實體映像區域176與線程所屬的群組無關而被固定配置,可於相同位址進行參照。又,因非排程對象執行實體映像區域176未被保存於主記憶體中,故於任意時刻在線程之位址空間中進行參照。
圖25係表示本實施形態之線程排程之線程的分配狀態之時間變化的圖式。於該示例中,第1及第2處理器選作為非分配對象PE,因此線程被排程分配至其以外的第3至第6處理器。
第1非排程對象執行實體於第1處理器中執行,第2非排 程對象執行實體於第2處理器中執行。該等非排程對象執行實體因不為排程之對象,故將暫時繼續佔有各處理器直至非排程對象執行實體被刪除。
關於第3至第6處理器,線程以與圖22所說明的實施形態1之線程排程之示例相同的方法,以線程群組為單位進行排程、分配。
再者,於非排程對象執行實體被刪除,釋放向處理器之分配之情形下,該處理器亦可添加為線程之分配對象。例如,第2非排程對象執行實體被刪除,第2處理器被釋放之情形時,亦可於下一個排程之時序中,將第2處理器追加為線程之分配對象,對於第2至第6處理器將線程排程並進行分配。
以上,係基於實施形態對本發明加以說明。需要業者理解的是,實施形態僅為示例,對於該等各構成要素或各處理程序之組合可有各種變形例,且如此之變形例亦屬於本發明之範圍內。
於上述實行形態中,作為多工處理器系統,以所有處理元件均為同樣結構之對稱型多工處理器系統為示例進行了說明,任一處理元件都具有線程之管理.排程功能而構成。多工處理器系統可為包含管理用處理元件之非對稱型多工處理器系統,亦可使管理用處理元件具有線程之管理.排程功能。又,排程功能可作為操作系統(OS)中之一部分功能而實現,亦可作為於OS上動作之一個程序而實現。
於上述說明中,係關於以程序內部所產生的線程為平行處理單位之排程加以說明,然而本發明亦可同樣適用於以程序為平行處理單位之程序排程中。
[產業上之可利用性]
本發明可適用於多工處理器之排程技術中。
10‧‧‧排程器
12‧‧‧分配列表產生部
14‧‧‧線程分配部
16‧‧‧分配線程數計數器
18‧‧‧線程分配列表
20‧‧‧排程排列
30‧‧‧待執行隊列
32‧‧‧線程狀態管理部
34‧‧‧線程狀態表
100‧‧‧處理元件
110‧‧‧主匯流排
120‧‧‧主記憶體
130‧‧‧處理器
140‧‧‧區域記憶體
150‧‧‧記憶控制部
200‧‧‧排程裝置
圖1係實施形態1之多工處理器系統之結構圖。
圖2係說明自分配至圖1之處理器中之線程所看到的位址空間的圖式。
圖3(a)至(d)係說明於圖1之處理器中動作的線程及線程所屬的線程群組的圖式。
圖4係說明線程以圖3所示之線程群組單位而被分配至處理器之情形的圖式。
圖5係說明線程之狀態轉換的圖式。
圖6係實施形態1中之排程裝置之結構圖。
圖7係說明圖6之線程狀態表的圖式。
圖8係說明圖6之待執行隊列的圖式。
圖9係說明圖6之排程排列的圖式。
圖10係說明實施形態1中排程裝置之排程順序的流程圖。
圖11(a)至(c)係說明於某一時刻下線程的分配順序的圖式。
圖12(a)至(c)係說明於另一時刻下線程的分配順序的圖式。
圖13係表示圖11及圖12中線程排程之線程的分配狀態之時間變化的圖式。
圖14係說明圖6之線程狀態表之另一例的圖式。
圖15(a)至(c)係說明於某一時刻下線程的分配順序的圖式。
圖16係表示圖15中線程排程之線程的分配狀態之時間變化的圖式。
圖17係說明圖6中線程狀態表之進而另一例的圖式。
圖18(a)至(c)係說明於某一時刻下線程之分配順序的圖式。
圖19(a)至(c)係說明於另一時刻下線程之分配順序的圖式。
圖20(a)至(c)係說明於進而之另一時刻下線程之分配順序的圖式。
圖21(a)至(c)係說明於進而之另一時刻下線程之分配順序的圖式。
圖22表示圖18至圖21中線程排程之線程之分配狀態的時間變化的圖式。
圖23係說明自分配至實施形態2中之多工處理器系統的處理器之線程所看到的位址空間的圖式。
圖24係說明自分配至實施形態3之多工處理器系統的處理器之線程所看到的位址空間的圖式。
圖25係表示於實施形態3之多工處理器系統中之線程排程的線程之分配狀態的時間變化的圖式。
100‧‧‧處理元件
110‧‧‧主匯流排
120‧‧‧主記憶體
130‧‧‧處理器
140‧‧‧區域記憶體
150‧‧‧記憶控制部

Claims (25)

  1. 一種排程方法,其特徵在於:其於多工處理器系統中,對將平行處理之排程對象之執行單位分配至複數個處理器的順序進行排程,並且使一個以上的上述排程對象之執行單位群組化,以使同一群組所含的上述各執行單位所佔有之處理器內的資源可互相參照之方式,將上述資源映射至各執行單位所參照之位址空間內,將同一群組所含的所有上述執行單位同時分配至處理器中之任一者,於此規約下,控制群組向處理器之分配。
  2. 一種排程方法,其特徵在於:其於多工處理器系統中,對將平行處理之執行對象之執行單位分配至複數個處理器的順序進行排程,並且使一個以上的上述排程對象之執行單位群組化而以群組為單位來管理向處理器之分配,以針對上述每個群組所設定之優先度順序並且於同一優先度內則以上述群組到達等待行列之順序而決定上述群組之優先等級,將屬於同一群組的所有執行單位同時分配至處理器中之任一者,於此規約下,將處於待執行以及執行中狀態之群組按照上述優先等級分配至處理器。
  3. 一種排程方法,其特徵在於:其於多工處理器系統中,對將平行處理之執行對象之執行單位分配至複數個處理器的順序進行排程,並且自將包含1個以上上述排程對象之執行單位的群組中 處於待執行以及執行中狀態之群組以針對上述每個群組所設定的優先度順序且於同一優先度內則以到達順序而加以儲存之待執行隊列的前端依序取出上述群組,並僅於可將所取出群組中所含的所有執行單位同時分配至處理器中之任一者之情形時,將該群組所含的所有執行單位分配至處理器,而於該情形以外之情形下,使得於其後自上述待執行隊列中取出之群組之分配優先。
  4. 如請求項3之排程方法,其中,反覆對於自上述待執行隊列依序取出之群組進行向處理器的分配處理,直至分配至處理器之上述執行單位之個數達到處理器總數、或自上述待執行隊列之末尾取出上述群組為止。
  5. 如請求項3或4之排程方法,其中,於自上述待執行隊列之前端依序取出之群組中所含的各執行單位已分配至任一處理器且處於執行中之情形下,該處於執行中之執行單位係確保該處於執行中之執行單位向該處理器的分配,以免分配對象變更至其他處理器而再配置。
  6. 一種排程裝置,其特徵在於:其於多工處理器系統中,對將平行處理之排程對象之執行單位分配至複數個處理器的順序進行排程,並且包含下列部分:記憶控制部,其係以使一個以上之上述排程對象之執行單位群組化,以使同一群組中所含的上述各執行單位所佔有之處理器內的資源可互相參照之方式,將上述資源映射至各執行單位參照之位址空間並進行管理;待執行隊列,其係儲存處於待執行以及執行中狀態之 群組;及分配部,其係自上述待執行隊列之前端依序取出群組,僅於可將所取出之群組所含的所有執行單位同時分配至任一處理器的情形下,將該群組中所含的所有執行單位分配至複數個處理器。
  7. 如請求項6之排程裝置,其中,該裝置於使執行單位群組化之初始設定時,決定向同一群組所含的各執行單位所佔有的上述資源之上述位址空間之映射處的區域,保持該資源之映射處的區域相關的設定資訊直至該群組被刪除為止。
  8. 如請求項6或7之排程裝置,其中,關於藉由上述分配部同時分配至任一處理器之同一群組所含的第1以及第2執行單位,上述第1執行單位進行向被映射至上述位址空間之同一群組內之上述第2執行單位的資源區域寫入資料之操作,藉此,將資料自同一群組內之上述第1執行單位傳送至上述第2執行單位。
  9. 如請求項6或7之排程裝置,其中,關於藉由上述分配部同時分配至任一處理器之同一群組所含的第1以及第2執行單位,上述第1執行單位進行向被映射至上述位址空間中之同一群組內之上述第2執行單位的資源區域寫入資料之操作,而上述第2執行單位等待對於該資源之資料寫入結束,藉此,於同一群組內上述第1執行單位與上述第2執行單位之間可取得同步。
  10. 一種排程裝置,其特徵在於:其於多工處理器系統中, 對將平行處理之排程對象之執行單位分配至複數個處理器的順序進行排程,並且包含下列部分:待執行隊列,其係將包含一個以上之上述排程對象之執行單位之群組中處於待執行以及執行中狀態之群組以針對上述每個群組所設定之優先度順序且於同一優先度內則以到達順序進行儲存;分配列表產生部,其自上述待執行隊列之前端依序取出群組,僅於可將所取出之群組所含的所有執行單位同時分配至任一處理器之情形時,將該群組追加至儲存作為向處理器之分配候補之群組的分配列表;及分配部,其將儲存於由上述分配列表產生部而產生之上述分配列表中之群組所含的所有執行單位分配至複數個處理器。
  11. 如請求項10之排程裝置,其中,上述分配列表產生部反覆進行上述分配列表之產生處理,直至分配至處理器之執行單位的個數達到處理器總數、或自上述待執行隊列之末尾取出上述群組為止。
  12. 如請求項10之排程裝置,其中,進而包括排程表,其保持處於執行中狀態之執行單位與分配有該執行單位之處理器之間的對應關係,且上述分配列表產生部,於自上述待執行隊列依序取出之群組中所含的各執行單位存在於上述排程表中之情形時,對分配有該執行單位之處理器設定標記,而於自上述待執行隊列依序取出之群組中所含的各執行單位不存 在於上述排程表中,且可將該群組所含的所有執行單位同時分配至任一處理器之情形時,將該群組追加至上述分配列表中,上述分配部,將儲存於上述分配列表中之群組所含的所有執行單位,分配至上述排程表上未設定有上述標記的處理器。
  13. 如請求項11之排程裝置,其中,進而包括排程表,其保持處於執行中狀態之執行單位與分配有該執行單位之處理器之間的對應關係,且上述分配列表產生部,於自上述待執行隊列依序取出之群組中所含的各執行單位存在於上述排程表中之情形時,對分配有該執行單位之處理器設定標記,而於自上述待執行隊列依序取出之群組中所含的各執行單位不存在於上述排程表中,且可將該群組所含的所有執行單位同時分配至任一處理器之情形時,將該群組追加至上述分配列表中,上述分配部,將儲存於上述分配列表中之群組所含的所有執行單位,分配至上述排程表上未設定有上述標記的處理器。
  14. 如請求項10至13中任一項之排程裝置,其中,以使得同一群組所含的各執行單位分別佔有的處理器內之資源可互相參照之方式,將上述資源映射至各執行單位所參照的位址空間內。
  15. 如請求項14之排程裝置,其中,由上述分配部同時分配 至任一處理器之群組所含的各執行單位係對於映射至上述位址空間之同一群組所含的各執行單位之資源區域進行資料讀取寫入,藉此,可於同一群組所含的複數個執行單位之間實現資料之共有。
  16. 如請求項14之排程裝置,其中,關於由上述分配部同時分配至任一處理器之同一群組所含的第1以及第2執行單位,上述第1執行單位進行向被映射至上述位址空間之同一群組內之上述第2執行單位的資源區域寫入資料操作,藉此,將資料自同一群組內之上述第1執行單位傳送至上述第2執行單位。
  17. 如請求項14之排程裝置,其中,關於由上述分配部同時分配至任一處理器之同一群組所含的第1以及第2執行單位,上述第1執行單位進行向被映射至上述位址空間之同一群組內之上述第2執行單位的資源區域寫入資料之操作,而上述第2執行單位等待對於該資源之寫入結束,藉此,於同一群組內之第1執行單位與第2執行單位之間可取得同步。
  18. 一種多工處理器系統,其特徵在於:其係將平行處理之排程對象之執行單位分配至複數個處理器而平行執行者,其中一個處理器係包含排程器,該排程器將上述排程對象之執行單位分配至其他複數個處理器;上述排程器包含:記憶控制部,其使一個以上之上述排程對象之執行單 位群組化,以使同一群組所含的上述各執行單位所佔有之處理器內之資源可互相參照之方式,將上述資源映射至各執行單位所參照之位址空間並進行管理;待執行隊列,其儲存處於待執行以及執行中狀態之群組;及分配部,其自上述待執行隊列之前端依序取出群組,僅於可將所取出之群組所含的所有執行單位同時分配至任一處理器的情形下,將該群組所含的所有執行單位分配至複數個處理器。
  19. 一種多工處理器系統,其特徵在於:其將平行處理之排程對象之執行單位分配至複數個處理器而平行執行者,其中一個處理器係包含排程器,該排程器將上述排程對象之執行單位分配至其他複數個處理器;上述排程器包含:待執行隊列,其將包含一個以上之上述排程對象之執行單位的群組中處於待執行以及執行中狀態之群組,以針對上述每個群組所設定之優先度順序且於同一優先度內則以到達順序進行儲存;分配列表產生部,其自上述待執行隊列之前端依序取出群組,僅於可將所取出之群組所含的所有執行單位同時分配之任一處理器之情形時,將該群組追加至分配列表中;及分配部,其將儲存於上述分配列表產生部所產生之上 述分配列表中之群組所含的所有執行單位分配至複數個處理器。
  20. 一種排程用程式,其特徵在於:使電腦執行以下步驟:自將包含一個以上之平行處理之排程對象的執行單位之群組中處於待執行及執行中狀態之群組,以針對上述每個群組所設定的優先度順序且於同一優先度內則以到達順序而加以儲存的待執行隊列之前端依序取出群組;參照保持處於執行中狀態之執行單位與分配有該執行單位的處理器之對應關係的排程表,於自上述待執行隊列中依序取出之群組所含的各執行單位存在於上述排程表中之情形下,對分配有該執行單位之處理器設定標記;於自上述待執行隊列依序取出之群組所含的各執行單位不存在於上述排程表中,且可將該群組所含的所有執行單位同時分配至任一處理器之情形下,將該群組追加至上述分配列表中;及將儲存於上述分配列表中之群組所含的所有執行單位,分配至上述排程表中未設定上述標記之處理器。
  21. 一種排程方法,其特徵在於:其係其於多工處理器系統中,對將平行處理之排程對象之執行單位分配至複數個處理器之順序進行排程者,其中於複數個處理器內,從平行處理之排程對象之執行單位的分配對象中至少除去一個處理器,且以可自上述排程對象之執行單位參照由不成為於非分配對象之處理器 上動作之排程對象的執行單位所獨佔之該處理器內的資源之方式,將上述資源映射於各執行單位參照之位址空間之後,控制上述執行單位之分配對象向處理器之分配。
  22. 一種排程裝置,其特徵在於:其係於多工處理器系統中,對將平行處理之排程對象之執行單位分配至複數個處理器的順序進行排程者,並且包含:記憶控制部,其從平行處理之排程對象之執行單位的分配對象至少除去複數個處理器中的一個處理器,且以可自上述排程對象之執行單位參照由不成為於非分配對象之處理器上動作之排程對象的執行單位所獨佔之該處理器內的資源之方式,將上述資源映射至各排程對象之執行單位參照之位址空間並進行管理;待執行隊列,其儲存處於待執行以及執行中狀態之上述排程對象之執行單位;及分配部,其自上述待執行隊列之前端依序取出上述排程對象之執行單位,且分配至任一處理器。
  23. 如請求項22之排程裝置,其中,向由非分配對象之處理器上動作之非排程對象的執行單位所獨佔的該處理器內之資源之對上述位址空間的映射處的區域係自任一排程對象之執行單位看時皆固定於同一位址。
  24. 如請求項22或23之排程裝置,其中,藉由上述分配部被分配至任一處理器之上述排程對象之執行單位係進行向映射至上述位址空間之非分配對象之處理器上動作的非 排程對象之執行單位的資源區域寫入資料之操作,藉此,直接控制非分配對象之處理器的資源。
  25. 如請求項22或23之排程裝置,其中,藉由上述分配部被分配至任一處理器之上述排程對象的執行單位係進行向映射至上述位址空間之非分配對象之處理器上動作的非排程對象之執行單位的資源區域寫入資料之操作,而上述非分配對象之處理器上動作的非排程對象之執行單位係等待對於該資源之資料寫入結束,藉此,於上述排程對象之執行單位與上述非排程對象之執行單位之間可取得同步。
TW094142287A 2004-12-01 2005-12-01 排程方法、排程裝置、多工處理器系統及排程用程式 TWI410866B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004348479A JP4606142B2 (ja) 2004-12-01 2004-12-01 スケジューリング方法、スケジューリング装置およびマルチプロセッサシステム

Publications (2)

Publication Number Publication Date
TW200632743A TW200632743A (en) 2006-09-16
TWI410866B true TWI410866B (zh) 2013-10-01

Family

ID=36564977

Family Applications (1)

Application Number Title Priority Date Filing Date
TW094142287A TWI410866B (zh) 2004-12-01 2005-12-01 排程方法、排程裝置、多工處理器系統及排程用程式

Country Status (6)

Country Link
US (2) US7913257B2 (zh)
EP (1) EP1837762B1 (zh)
JP (1) JP4606142B2 (zh)
CN (1) CN101069161B (zh)
TW (1) TWI410866B (zh)
WO (1) WO2006059543A1 (zh)

Families Citing this family (88)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7913206B1 (en) * 2004-09-16 2011-03-22 Cadence Design Systems, Inc. Method and mechanism for performing partitioning of DRC operations
DE102005001025A1 (de) * 2005-01-07 2006-07-27 Infineon Technologies Ag Multithread-Prozessor mit Kontext-Umschaltung ohne Einschränkungen und/oder Zyklenverlust und Verfahren zum Betreiben eines solchen
US7664936B2 (en) * 2005-02-04 2010-02-16 Mips Technologies, Inc. Prioritizing thread selection partly based on stall likelihood providing status information of instruction operand register usage at pipeline stages
US7853777B2 (en) * 2005-02-04 2010-12-14 Mips Technologies, Inc. Instruction/skid buffers in a multithreading microprocessor that store dispatched instructions to avoid re-fetching flushed instructions
US7613904B2 (en) * 2005-02-04 2009-11-03 Mips Technologies, Inc. Interfacing external thread prioritizing policy enforcing logic with customer modifiable register to processor internal scheduler
US7657883B2 (en) * 2005-02-04 2010-02-02 Mips Technologies, Inc. Instruction dispatch scheduler employing round-robin apparatus supporting multiple thread priorities for use in multithreading microprocessor
US7752627B2 (en) * 2005-02-04 2010-07-06 Mips Technologies, Inc. Leaky-bucket thread scheduler in a multithreading microprocessor
US7631130B2 (en) * 2005-02-04 2009-12-08 Mips Technologies, Inc Barrel-incrementer-based round-robin apparatus and instruction dispatch scheduler employing same for use in multithreading microprocessor
US7490230B2 (en) * 2005-02-04 2009-02-10 Mips Technologies, Inc. Fetch director employing barrel-incrementer-based round-robin apparatus for use in multithreading microprocessor
US7506140B2 (en) * 2005-02-04 2009-03-17 Mips Technologies, Inc. Return data selector employing barrel-incrementer-based round-robin apparatus
US7657891B2 (en) 2005-02-04 2010-02-02 Mips Technologies, Inc. Multithreading microprocessor with optimized thread scheduler for increasing pipeline utilization efficiency
US7681014B2 (en) * 2005-02-04 2010-03-16 Mips Technologies, Inc. Multithreading instruction scheduler employing thread group priorities
US7904852B1 (en) 2005-09-12 2011-03-08 Cadence Design Systems, Inc. Method and system for implementing parallel processing of electronic design automation tools
JP4388518B2 (ja) * 2005-11-01 2009-12-24 株式会社ソニー・コンピュータエンタテインメント スレッドデバッグ装置、スレッドデバッグ方法及びプログラム
US20070150895A1 (en) * 2005-12-06 2007-06-28 Kurland Aaron S Methods and apparatus for multi-core processing with dedicated thread management
US8448096B1 (en) 2006-06-30 2013-05-21 Cadence Design Systems, Inc. Method and system for parallel processing of IC design layouts
US7657856B1 (en) 2006-09-12 2010-02-02 Cadence Design Systems, Inc. Method and system for parallel processing of IC design layouts
US7990989B2 (en) * 2006-09-16 2011-08-02 Mips Technologies, Inc. Transaction selector employing transaction queue group priorities in multi-port switch
US7773621B2 (en) * 2006-09-16 2010-08-10 Mips Technologies, Inc. Transaction selector employing round-robin apparatus supporting dynamic priorities in multi-port switch
US7961745B2 (en) * 2006-09-16 2011-06-14 Mips Technologies, Inc. Bifurcated transaction selector supporting dynamic priorities in multi-port switch
US7760748B2 (en) * 2006-09-16 2010-07-20 Mips Technologies, Inc. Transaction selector employing barrel-incrementer-based round-robin apparatus supporting dynamic priorities in multi-port switch
JP5050601B2 (ja) * 2007-03-23 2012-10-17 日本電気株式会社 ジョブへの資源割当方式、ジョブへの資源割当方法およびプログラム
US20080271027A1 (en) * 2007-04-27 2008-10-30 Norton Scott J Fair share scheduling with hardware multithreading
US9384159B2 (en) * 2007-05-24 2016-07-05 International Business Machines Corporation Creating a checkpoint for a software partition in an asynchronous input/output environment
JP2009020692A (ja) * 2007-07-11 2009-01-29 Toshiba Corp タスク管理装置、タスク管理方法及びタスク管理プログラム
TWI386851B (zh) * 2007-09-14 2013-02-21 Hon Hai Prec Ind Co Ltd 排程任務更新系統及方法
JP4907488B2 (ja) * 2007-10-24 2012-03-28 株式会社リコー 画像処理装置、画像処理方法及び該方法を実行させるためのプログラムを格納したコンピュータ読み取り可能な記録媒体
TWI462011B (zh) * 2007-12-28 2014-11-21 Accton Technology Corp 程序之執行緒群組管理方法
CN101494636B (zh) * 2008-01-23 2013-01-16 中兴通讯股份有限公司 一种基于快速io互连技术的数据排序方法及装置
US8566830B2 (en) * 2008-05-16 2013-10-22 Microsoft Corporation Local collections of tasks in a scheduler
US8561072B2 (en) * 2008-05-16 2013-10-15 Microsoft Corporation Scheduling collections in a scheduler
US8769048B2 (en) * 2008-06-18 2014-07-01 Commvault Systems, Inc. Data protection scheduling, such as providing a flexible backup window in a data protection system
US8296773B2 (en) 2008-06-30 2012-10-23 International Business Machines Corporation Systems and methods for thread assignment and core turn-off for integrated circuit energy efficiency and high-performance
JP5510322B2 (ja) 2008-07-04 2014-06-04 日本電気株式会社 マルチプロセッサシステム、マルチスレッド処理方法、及びプログラム
JP5173712B2 (ja) 2008-09-30 2013-04-03 ルネサスエレクトロニクス株式会社 マルチスレッドプロセッサ
JP5173713B2 (ja) 2008-09-30 2013-04-03 ルネサスエレクトロニクス株式会社 マルチスレッドプロセッサ及びそのハードウェアスレッドのスケジュール方法
JP5173711B2 (ja) 2008-09-30 2013-04-03 ルネサスエレクトロニクス株式会社 マルチスレッドプロセッサ及びそのハードウェアスレッドのスケジュール方法
GB0820920D0 (en) * 2008-11-14 2008-12-24 Wolfson Microelectronics Plc Codec apparatus
WO2010089900A1 (en) * 2009-02-05 2010-08-12 Nec Corporation Method, system and program for deadline constrained task admission control and scheduling using genetic approach
JP5241550B2 (ja) * 2009-02-12 2013-07-17 株式会社日立製作所 ファイル入出力方法
WO2010092483A1 (en) * 2009-02-13 2010-08-19 Alexey Raevsky Devices and methods for optimizing data-parallel processing in multi-core computing systems
US20110010716A1 (en) * 2009-06-12 2011-01-13 Arvind Raghuraman Domain Bounding for Symmetric Multiprocessing Systems
JP5447807B2 (ja) * 2009-08-07 2014-03-19 株式会社日立製作所 バリア同期方法及び計算機
US8352946B2 (en) * 2009-08-11 2013-01-08 International Business Machines Corporation Managing migration ready queue associated with each processor based on the migration ready status of the tasks
US8832712B2 (en) * 2009-09-09 2014-09-09 Ati Technologies Ulc System and method for synchronizing threads using shared memory having different buffer portions for local and remote cores in a multi-processor system
CN101673223B (zh) * 2009-10-22 2012-03-21 同济大学 基于片上多处理器的线程调度实现方法
JP5526748B2 (ja) * 2009-12-09 2014-06-18 日本電気株式会社 パケット処理装置、パケット振り分け装置、制御プログラム及びパケット分散方法
CN101788908B (zh) * 2010-01-26 2014-11-05 浪潮(山东)电子信息有限公司 一种支持断点续航的批量数据处理方法
JP5429363B2 (ja) * 2010-03-25 2014-02-26 富士通株式会社 マルチコアプロセッサシステム、制御プログラム、および制御方法
US9886315B2 (en) * 2010-08-27 2018-02-06 Ebay Inc. Identity and semaphore-based quality of service
US20130117168A1 (en) * 2011-11-04 2013-05-09 Mark Henrik Sandstrom Maximizing Throughput of Multi-user Parallel Data Processing Systems
US8789065B2 (en) 2012-06-08 2014-07-22 Throughputer, Inc. System and method for input data load adaptive parallel processing
US9158592B2 (en) 2011-05-02 2015-10-13 Green Hills Software, Inc. System and method for time variant scheduling of affinity groups comprising processor core and address spaces on a synchronized multicore processor
RU2011117765A (ru) * 2011-05-05 2012-11-10 ЭлЭсАй Корпорейшн (US) Устройство (варианты) и способ реализации двухпроходного планировщика задач линейной сложности
US9262181B2 (en) * 2011-05-10 2016-02-16 International Business Machines Corporation Process grouping for improved cache and memory affinity
WO2012157906A2 (en) * 2011-05-13 2012-11-22 Samsung Electronics Co., Ltd. Method and apparatus for improving application processing speed in digital device
KR101897598B1 (ko) * 2011-05-13 2018-09-13 삼성전자 주식회사 디지털 디바이스의 어플리케이션 처리 속도 향상 방법 및 장치
CN102193779A (zh) * 2011-05-16 2011-09-21 武汉科技大学 一种面向MPSoC的多线程调度方法
US8745626B1 (en) * 2012-12-17 2014-06-03 Throughputer, Inc. Scheduling application instances to configurable processing cores based on application requirements and resource specification
US9448847B2 (en) 2011-07-15 2016-09-20 Throughputer, Inc. Concurrent program execution optimization
US9158587B2 (en) * 2012-01-19 2015-10-13 International Business Machines Corporation Flexible task and thread binding with preferred processors based on thread layout
US9069564B1 (en) * 2012-02-14 2015-06-30 Netlogic Microsystems, Inc. Weighted instruction count scheduling
US9286115B2 (en) * 2012-06-21 2016-03-15 Microsoft Technology Licensing, Llc Performant runtime pause with no CPU utilization
CN102929707B (zh) * 2012-11-06 2015-10-07 无锡江南计算技术研究所 并行任务动态分配方法
JP5676664B2 (ja) * 2013-02-27 2015-02-25 Necプラットフォームズ株式会社 リソース管理装置、リソースの管理方法、及びプログラム
CN104422694A (zh) * 2013-09-11 2015-03-18 法国圣戈班玻璃公司 测量数据的处理装置及处理方法、光学测量系统
GB2521151B (en) * 2013-12-10 2021-06-02 Advanced Risc Mach Ltd Configurable thread ordering for a data processing apparatus
GB2521155B (en) 2013-12-10 2021-06-02 Advanced Risc Mach Ltd Configuring thread scheduling on a multi-threaded data processing apparatus
US10169121B2 (en) 2014-02-27 2019-01-01 Commvault Systems, Inc. Work flow management for an information management system
JP6364827B2 (ja) * 2014-03-10 2018-08-01 日本電気株式会社 情報処理装置、及び、そのリソースアクセス方法、並びに、リソースアクセスプログラム
JP6442947B2 (ja) * 2014-09-19 2018-12-26 日本電気株式会社 情報処理装置、情報処理方法及びそのプログラム
CN105656973B (zh) * 2014-11-25 2018-11-13 中国科学院声学研究所 一种分布式节点组内任务调度方法及系统
US10297347B2 (en) * 2015-04-06 2019-05-21 Preventice Solutions, Inc. Adverse event prioritization and handling
US9727944B2 (en) 2015-06-22 2017-08-08 Apple Inc. GPU instruction storage
US20180032376A1 (en) * 2016-07-27 2018-02-01 Samsung Electronics Co .. Ltd. Apparatus and method for group-based scheduling in multi-core processor system
CN106445675B (zh) * 2016-10-20 2019-12-31 焦点科技股份有限公司 一种b2b平台分布式应用调度与资源分配方法
US10789240B2 (en) * 2017-11-06 2020-09-29 Google Llc Duplicative data detection
JP7042105B2 (ja) 2018-02-16 2022-03-25 日立Astemo株式会社 プログラム実行制御方法および車両制御装置
US10761942B2 (en) 2018-03-12 2020-09-01 Commvault Systems, Inc. Recovery point objective (RPO) driven backup scheduling in a data storage management system using an enhanced data agent
US11048656B2 (en) * 2018-03-31 2021-06-29 Micron Technology, Inc. Multi-threaded, self-scheduling reconfigurable computing fabric
US10754706B1 (en) 2018-04-16 2020-08-25 Microstrategy Incorporated Task scheduling for multiprocessor systems
CN108595366A (zh) * 2018-04-16 2018-09-28 哈尔滨工业大学(威海) 一种实时的容错的多处理器系统结构模型
US10860443B2 (en) 2018-12-10 2020-12-08 Commvault Systems, Inc. Evaluation and reporting of recovery readiness in a data storage management system
CN113365557B (zh) * 2019-01-30 2024-05-14 富士胶片株式会社 医用图像分析装置、方法及计算机可读存储介质
CN112667369A (zh) * 2020-06-08 2021-04-16 宸芯科技有限公司 一种线程调度方法、装置、存储介质及电子设备
CN114237274B (zh) * 2021-09-28 2024-04-19 航天时代飞鸿技术有限公司 融合imu的旋翼无人机环境障碍物快速感知方法及系统
US20230135951A1 (en) * 2021-10-29 2023-05-04 Blackberry Limited Scheduling of threads for clusters of processors
US20240303111A1 (en) * 2023-03-06 2024-09-12 Electronics And Telecommunications Research Institute Apparatus and method for offloading parallel computation task

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6675191B1 (en) * 1999-05-24 2004-01-06 Nec Corporation Method of starting execution of threads simultaneously at a plurality of processors and device therefor
TWI221250B (en) * 2002-03-07 2004-09-21 Toshiba Corp Multi-processor system

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06187312A (ja) * 1992-12-18 1994-07-08 Omron Corp マルチcpuシステムにおける処理方法および装置
JP3259620B2 (ja) * 1995-12-21 2002-02-25 株式会社日立製作所 資源割り当て方法
JPH09179834A (ja) * 1995-12-25 1997-07-11 Hitachi Ltd 並列システムにおけるプロセスのスケジューリング方法
JPH09274608A (ja) * 1996-04-04 1997-10-21 Hitachi Ltd マルチプロセッサシステムにおけるプロセッサ間の負荷配分制御方法
JPH1063525A (ja) * 1996-08-23 1998-03-06 Canon Inc 情報処理装置、情報処理システム及びその制御方法
GB2334116A (en) * 1998-02-04 1999-08-11 Ibm Scheduling and dispatching queued client requests within a server computer
US6601146B2 (en) * 1998-06-16 2003-07-29 International Business Machines Corporation Technique for efficiently transferring moderate amounts of data across address space boundary
US6314501B1 (en) * 1998-07-23 2001-11-06 Unisys Corporation Computer system and method for operating multiple operating systems in different partitions of the computer system and for allowing the different partitions to communicate with one another through shared memory
US6910210B1 (en) * 1998-11-24 2005-06-21 Microsoft Corp. System and method for terminating applications
US6526491B2 (en) * 2001-03-22 2003-02-25 Sony Corporation Entertainment Inc. Memory protection system and method for computer architecture for broadband networks
US7360219B2 (en) * 2002-12-13 2008-04-15 Hewlett-Packard Development Company, L.P. Systems and methods for facilitating fair and efficient scheduling of processes among multiple resources in a computer system
US20040237087A1 (en) * 2003-05-08 2004-11-25 Nong Ye Job scheduling techniques to reduce the variance of waiting time
JP3892829B2 (ja) * 2003-06-27 2007-03-14 株式会社東芝 情報処理システムおよびメモリ管理方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6675191B1 (en) * 1999-05-24 2004-01-06 Nec Corporation Method of starting execution of threads simultaneously at a plurality of processors and device therefor
TWI221250B (en) * 2002-03-07 2004-09-21 Toshiba Corp Multi-processor system

Also Published As

Publication number Publication date
EP1837762A4 (en) 2014-09-17
CN101069161A (zh) 2007-11-07
CN101069161B (zh) 2010-10-06
WO2006059543A1 (ja) 2006-06-08
JP2006155480A (ja) 2006-06-15
EP1837762B1 (en) 2017-03-01
US20060123420A1 (en) 2006-06-08
JP4606142B2 (ja) 2011-01-05
EP1837762A1 (en) 2007-09-26
TW200632743A (en) 2006-09-16
US20110119674A1 (en) 2011-05-19
US8166482B2 (en) 2012-04-24
US7913257B2 (en) 2011-03-22

Similar Documents

Publication Publication Date Title
TWI410866B (zh) 排程方法、排程裝置、多工處理器系統及排程用程式
US11550627B2 (en) Hardware accelerated dynamic work creation on a graphics processing unit
US7647483B2 (en) Multi-threaded parallel processor methods and apparatus
KR100649107B1 (ko) 실시간 동작 수행방법 및 시스템
KR100623217B1 (ko) 스케줄링 방법과 이 방법을 실행하기 위한 프로그램을 기록한 기록매체 및 실시간 처리시스템
KR100591727B1 (ko) 스케줄링 방법과 이 방법을 실행하기 위한 프로그램을 기록한 기록매체 및 정보처리시스템
JP4057989B2 (ja) スケジューリング方法および情報処理システム
US8307053B1 (en) Partitioned packet processing in a multiprocessor environment
US7373640B1 (en) Technique for dynamically restricting thread concurrency without rewriting thread code
US9836334B2 (en) Scheduling application tasks only on logical processors of a first set and operating system interferences in logical processors of a second set
EP1622015A2 (en) Method and system for performing real-time operation
US20060130062A1 (en) Scheduling threads in a multi-threaded computer
US8769543B2 (en) System and method for maximizing data processing throughput via application load adaptive scheduling and context switching
US11347546B2 (en) Task scheduling method and device, and computer storage medium
JP2010044784A (ja) システムにおける要求のスケジューリング
WO2022160628A1 (zh) 命令处理装置、方法、电子设备以及计算机可读存储介质
KR20010080468A (ko) 다중 처리 시스템에서 개선된 결과 처리 방법 및 장치
CN113296957B (zh) 一种用于动态分配片上网络带宽的方法及装置
JPH11249917A (ja) 並列型計算機及びそのバッチ処理方法及び記録媒体
US9141438B2 (en) Logic for synchronizing multiple tasks
JP2009211604A (ja) 情報処理装置、情報処理方法、プログラム、及び、記憶媒体
JPH1063517A (ja) リアルタイム情報処理方法およびその装置