專利名稱:多線程處理器、編譯器裝置及操作系統(tǒng)裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及并行執(zhí)行多個線程(thread)的多線程處理器等,尤其涉及通過控制各個線程所包含的命令的執(zhí)行定時來提高各個線程的執(zhí)行效率的多線程處理器等。
背景技術(shù):
近年來,在AV(Audio/Visual)處理的領(lǐng)域中,連續(xù)發(fā)表了新的編解碼器(codec) 或新規(guī)格等,基于軟件的AV處理的需求日益提高。因此,在AV系統(tǒng)等中要求的處理器性能也飛躍性提高。并且,對應(yīng)于所執(zhí)行的軟件的多任務(wù)化,開發(fā)了許多采用同時執(zhí)行多個線程的多線程技術(shù)的多線程處理器。在現(xiàn)有的多線程處理器中,公知有以下技術(shù),即按照處理器的每個執(zhí)行周期來切換執(zhí)行的線程的細(xì)粒度多線程(Fine-Grained Multithreading)(例如,參照專利文獻(xiàn)1), 或者以Intel公司的超線程技術(shù)為代表的、在執(zhí)行周期內(nèi)同時執(zhí)行多個線程的同步多線程 (Simultaneous Multithreading :SMT)(例如,參照非專利文獻(xiàn) 1)等?,F(xiàn)有技術(shù)文獻(xiàn)專利文獻(xiàn)專利文獻(xiàn)1 日本特開2008-123045號公報(圖6等)非專利文獻(xiàn)非專利文獻(xiàn)1 Intel社"4 “一 7 > 7 fM >夕’· ”)α夕一(平成21年2 月 16 日檢索)、網(wǎng)址 <URL :http://www. intel. com/jp/technology/hyperthread/>
發(fā)明概要發(fā)明要解決的問題但是,在現(xiàn)有的多線程處理器中,當(dāng)在線程之間競爭運(yùn)算資源的情況下,用戶指定或處理器實(shí)施方面的線程的優(yōu)先度中處于劣勢的其它線程的執(zhí)行效率存在局部明顯下降的情況。并且,在各個線程的命令數(shù)與運(yùn)算器資源數(shù)的平衡較差的情況下,有可能不能得到在多線程動作中期待的那樣的執(zhí)行效率。例如,針對具有能夠同時執(zhí)行4個命令的運(yùn)算器資源的處理器、想要連續(xù)發(fā)行分別包含在兩個線程中的2個命令和3個命令時,兩個線程的合計命令數(shù)是5。因此,不能同時執(zhí)行這兩個線程而只執(zhí)行某一個線程的命令。因此,導(dǎo)致一個或兩個運(yùn)算器資源不被使用而造成浪費(fèi),存在線程的執(zhí)行效率降低的問題。
發(fā)明內(nèi)容
本發(fā)明是為了解決上述問題而提出的,其目的在于,提供線程的執(zhí)行效率高的多線程處理器、以及適合于該多重處理器的編譯器裝置和操作系統(tǒng)裝置。用于解決問題的手段本發(fā)明的某個方面的多線程處理器,并行執(zhí)行多個線程的命令,具有分別執(zhí)行命令的多個運(yùn)算器;分組部,按照每個線程,將該線程所包含的命令分組為由能夠由上述多個運(yùn)算器同時執(zhí)行的命令構(gòu)成的組;線程選擇部,通過控制上述多個線程的命令的執(zhí)行頻度, 從而按照上述多線程處理器的每個執(zhí)行周期,從上述多個線程中選擇含有對上述多個運(yùn)算器發(fā)行的命令的線程;以及命令發(fā)行部,按照上述多線程處理器的每個執(zhí)行周期,對上述多個運(yùn)算器發(fā)行如下命令,即由上述線程選擇部選擇的上述線程所包含的命令中、由上述分組部進(jìn)行分組而得到的組的命令。根據(jù)這種結(jié)構(gòu),通過控制多個線程的執(zhí)行頻度,能夠防止在用戶指定或處理器實(shí)施方面的線程之間的優(yōu)先度中處于劣勢的線程的執(zhí)行效率局部明顯下降。此外,能夠控制多個線程的執(zhí)行頻度以使得運(yùn)算器資源能夠有效利用,能夠獲得各個線程的命令數(shù)和運(yùn)算器資源數(shù)的平衡,高效率地使用運(yùn)算器資源。由此,能夠提供線程的執(zhí)行效率高的多線程處理器。優(yōu)選為,上述多線程處理器還具有命令數(shù)指定部,該命令數(shù)指定部按照每個線程來指定由上述分組部進(jìn)行分組的上述組所包含的命令的最大個數(shù),上述分組部以不超過由上述命令數(shù)指定部指定的上述命令的最大個數(shù)的方式對命令進(jìn)行分組。根據(jù)這種結(jié)構(gòu),能夠獲得各個線程的命令數(shù)和運(yùn)算器資源數(shù)的平衡,高效率地使用運(yùn)算器資源。另外,優(yōu)選為,上述命令數(shù)指定部按照在寄存器中設(shè)定的值來指定上述最大個數(shù)。根據(jù)這種結(jié)構(gòu),通過在維持命令集體系的狀態(tài)下利用程序來更新寄存器的設(shè)定值,能夠按程序的每個任意的范圍來控制上述最大個數(shù),優(yōu)化執(zhí)行效率。并且,也可以是,上述命令數(shù)指定部按照上述多個線程所包含的用于指定上述最大個數(shù)的命令來指定上述最大個數(shù)。根據(jù)這種結(jié)構(gòu),與按照在寄存器中設(shè)定的值來指定最大個數(shù)的情況相比,能夠與能夠削減的地址設(shè)定和存儲器訪問相應(yīng)地更高速地變更設(shè)定。此外,能夠不必在意開銷損耗而與能夠高速地變更設(shè)定相應(yīng)地按程序的更詳細(xì)的每個任意的范圍來控制上述最大個數(shù),優(yōu)化執(zhí)行效率。另外,優(yōu)選為,上述線程選擇部具有執(zhí)行間隔指定部,該執(zhí)行間隔指定部對上述多個線程分別指定在上述多個運(yùn)算器中的命令的執(zhí)行周期間隔,上述線程選擇部按照由上述執(zhí)行間隔指定部指定的執(zhí)行周期間隔來選擇上述線程。根據(jù)這種結(jié)構(gòu),能夠抑制優(yōu)先度較高的線程長時間占用資源,能夠防止優(yōu)先度較低的線程的執(zhí)行局部停止。另外,優(yōu)選為,上述執(zhí)行間隔指定部按照在寄存器中設(shè)定的值來指定上述執(zhí)行周期間隔。根據(jù)這種結(jié)構(gòu),通過在維持命令集體系的狀態(tài)下利用程序來更新寄存器的設(shè)定值,能夠按程序的每個任意的范圍來抑制資源占用,提高其它線程的執(zhí)行效率。并且,也可以是,上述執(zhí)行間隔指定部按照上述多個線程所包含的用于指定上述執(zhí)行周期間隔的命令來指定上述執(zhí)行周期間隔。根據(jù)這種結(jié)構(gòu),與按照在寄存器中設(shè)定的值來指定執(zhí)行周期間隔的情況相比,能夠與能夠削減的地址設(shè)定、存儲器訪問相應(yīng)地更高速地變更設(shè)定。此外,能夠不必在意開銷損耗而與能夠高速地變更設(shè)定相應(yīng)地按程序的更詳細(xì)的每個任意的范圍來抑制資源占用,提高其它線程的執(zhí)行效率。另外,優(yōu)選為,上述線程選擇部具有發(fā)行間隔抑制部,該發(fā)行間隔抑制部針對發(fā)行了在多個線程之間引起運(yùn)算器競爭的命令的線程來進(jìn)行抑制,以使得引起上述競爭的命令在固定的執(zhí)行周期數(shù)內(nèi)無法執(zhí)行。根據(jù)這種結(jié)構(gòu),與唯一地抑制執(zhí)行周期的方法不同,能夠只對最小必要限度的命令進(jìn)行抑制。因此,能夠不降低執(zhí)行效率并高效率地向其它線程讓出資源。本發(fā)明的另一個方面的編譯器裝置,將源程序轉(zhuǎn)換為可執(zhí)行代碼,適合于將多個線程的命令并行執(zhí)行的多線程處理器,該編譯器裝置具有指示取得部,取得與多線程控制相關(guān)的編程員的指示;以及控制代碼生成部,根據(jù)上述指示來生成對處理器的執(zhí)行模式進(jìn)行控制的代碼。根據(jù)這種結(jié)構(gòu),能夠按照與多線程控制相關(guān)的編程員的指示來控制處理器的執(zhí)行模式。因此,能夠生成適合于線程執(zhí)行效率高的多線程處理器的代碼。本發(fā)明的另一個方面的操作系統(tǒng)裝置,適合于將多個線程的命令并行執(zhí)行的多線程處理器,該操作系統(tǒng)裝置具有系統(tǒng)代碼處理部,該系統(tǒng)代碼處理部根據(jù)與多線程控制相關(guān)的編程員的指示來處理系統(tǒng)調(diào)用,該系統(tǒng)調(diào)用使得處理器的執(zhí)行模式能夠控制。根據(jù)這種結(jié)構(gòu),能夠按照與多線程控制相關(guān)的編程員的指示來控制處理器的執(zhí)行模式。因此,能夠處理適合于線程執(zhí)行效率高的多線程處理器的系統(tǒng)調(diào)用。另外,本發(fā)明不僅能夠?qū)崿F(xiàn)為這樣的具有特征性的處理部的多線程處理器,而且也能夠?qū)崿F(xiàn)為將多線程處理器所包含的特征性的處理部作為步驟的信息處理方法。此外, 還能夠?qū)崿F(xiàn)為使計算機(jī)執(zhí)行信息處理方法所包含的特征性步驟的程序。并且,這種程序當(dāng)然能夠通過CD-ROM (Compact Disc-Read Only Memory)等非易失性記錄介質(zhì)、因特網(wǎng)等通信網(wǎng)絡(luò)而進(jìn)行流通。發(fā)明效果根據(jù)本發(fā)明的多線程處理器等,即使是在線程之間競爭運(yùn)算資源的情況下,也能夠防止在用戶指定及處理器實(shí)施方面的線程之間的優(yōu)先度中處于劣勢的線程的執(zhí)行效率局部明顯下降。此外,能夠得到各個線程的命令數(shù)和運(yùn)算器資源數(shù)的平衡,高效率地使用運(yùn)算器資源。由此,能夠提供線程的執(zhí)行效率高的多線程處理器。
圖1是本發(fā)明的實(shí)施方式1的多線程處理器的框圖。圖2是本發(fā)明的實(shí)施方式1的線程選擇部的框圖。圖3是表示本發(fā)明的實(shí)施方式1的多線程處理器的動作的流程圖。圖4是本發(fā)明的實(shí)施方式1的線程選擇處理的流程圖。圖5是表示本發(fā)明的實(shí)施方式2的編譯器的結(jié)構(gòu)的框圖。圖6是表示本發(fā)明的實(shí)施方式2的編譯器能夠受理的用于多線程的控制的指示的一覽的圖。圖7是表示使用了“關(guān)注區(qū)間指示”的源程序的一例的圖。圖8是表示使用了 “非關(guān)注區(qū)間指示”的源程序的一例的圖。圖9是表示使用了 “命令并行度指示”的源程序的一例的圖。
圖10是表示使用了“多線程執(zhí)行模式指示”的源程序的一例的圖。圖11是表示使用了“響應(yīng)性確保區(qū)間指示”的源程序的一例的圖。圖12是表示使用了“停頓插入頻度指示”的源程序的一例的圖。圖13是表示使用了“運(yùn)算器釋放頻度指示”的源程序的一例的圖。圖14是表示使用了 “緊迫度檢測指示”的源程序的一例的圖。圖15是表示使用了“執(zhí)行周期期待值指示”的源程序的一例的圖。圖16是表示本發(fā)明的實(shí)施方式2的操作系統(tǒng)的結(jié)構(gòu)的框圖。
具體實(shí)施例方式下面,參照
多線程處理器等的實(shí)施方式。另外,在實(shí)施方式中標(biāo)注了相同標(biāo)號的構(gòu)成要素進(jìn)行同樣的動作,因而有時省略重復(fù)說明。(實(shí)施方式1)在本實(shí)施方式中,說明通過命令執(zhí)行控制來提高命令執(zhí)行效率的多線程處理器、 命令數(shù)的限制、限制的命令數(shù)的基于寄存器的指定、限制的命令數(shù)的基于命令的指定、執(zhí)行周期數(shù)間隔的指定、執(zhí)行周期數(shù)間隔的基于寄存器的指定、執(zhí)行周期數(shù)間隔的基于命令的指定、存在資源制約的命令的發(fā)行間隔的抑制。圖1是表示本實(shí)施方式的多線程處理器的結(jié)構(gòu)的框圖。另外,在本實(shí)施方式中,假定是能夠并行執(zhí)行3個線程的多線程處理器。多線程處理器1具備命令存儲器101、第1命令解碼器102、第2命令解碼器103、 第3命令解碼器104、第1命令數(shù)指定部105、第2命令數(shù)指定部106、第3命令數(shù)指定部 107、第1命令分組部108、第2命令分組部109、第3命令分組部110、第1寄存器111、第 2寄存器112、第3寄存器113、線程選擇部114、命令發(fā)行控制部115、線程選擇器(thread selector) 116、線程用寄存器選擇器117 118、以及運(yùn)算器組119。命令存儲器101是對在多線程處理器1中執(zhí)行的命令進(jìn)行保持的存儲器,保持3 個獨(dú)立執(zhí)行的線程的命令流。第1命令解碼器102、第2命令解碼器103和第3命令解碼器104從命令存儲器 101讀出彼此不同的線程的命令,并對讀出的命令進(jìn)行解碼。第1命令數(shù)指定部105、第2命令數(shù)指定部106和第3命令數(shù)指定部107分別指定如下命令數(shù),即將由第1命令解碼器102、第2命令解碼器103和第3命令解碼器104解碼后的命令分組為能夠同時執(zhí)行的命令組時的、能夠同時執(zhí)行的命令數(shù)。在本實(shí)施方式中,將命令數(shù)的上限設(shè)為3來進(jìn)行說明。關(guān)于指定命令數(shù)的方法,可以是,將用于指定命令數(shù)的專用命令包含在各個線程的命令流中,通過執(zhí)行該專用命令來指定命令數(shù)。或者,也可以是, 設(shè)置對命令數(shù)進(jìn)行設(shè)定的專用寄存器,由各個線程的命令流而變更專用寄存器的值來指定命令數(shù)。在通過執(zhí)行專用命令來指定命令數(shù)的情況下,不存在因地址設(shè)定、寄存器訪問而引起的開銷損耗(overhead loss)。因此,能夠高速地實(shí)現(xiàn)命令數(shù)的變更。此外,通過預(yù)先在線程的多個位置插入上述專用命令,能夠在線程內(nèi)的多個命令范圍中指定不同的命令數(shù)。對專用寄存器來設(shè)定命令數(shù)的情況下,能夠在維持命令集(instruction set)的體系的狀態(tài)下對同時執(zhí)行的命令數(shù)進(jìn)行控制。
通過與運(yùn)算器資源的數(shù)量、能夠同時執(zhí)行的線程數(shù)的平衡相應(yīng)地變更命令數(shù)的指定,能夠提高命令執(zhí)行效率。例如,在運(yùn)算器是4個、能夠同時執(zhí)行的線程數(shù)是2個的情況下,如果預(yù)先將命令數(shù)的上限設(shè)為2,則兩個線程各使用兩個運(yùn)算器。但是,如果預(yù)先將命令數(shù)的上限設(shè)為3,則對于各個線程,最大將3個命令分組到一個命令組。因此,例如,在兩個線程中、一個線程的命令組所包含的命令數(shù)是3而另一個線程的命令組所包含的命令數(shù)是 2的情況下,則只能執(zhí)行某一個線程,產(chǎn)生未使用的運(yùn)算器,因此導(dǎo)致線程的執(zhí)行效率下降。第1命令分組部108、第2命令分組部109和第3命令分組部110將由第1命令解碼器102、第2命令解碼器103和第3命令解碼器104分別解碼后的命令分組為能夠同時執(zhí)行的命令組。另外,在進(jìn)行分組時,以不超過由第1命令數(shù)指定部105、第2命令數(shù)指定部 106和第3命令數(shù)指定部107設(shè)定的命令數(shù)的方式進(jìn)行命令的分組。第1寄存器111、第2寄存器112和第3寄存器113是在基于各個線程的命令的運(yùn)算時使用的寄存器堆(register file)。線程選擇部114保持與線程優(yōu)先度相關(guān)的設(shè)定信息,根據(jù)線程的執(zhí)行狀況來選擇執(zhí)行的線程。假設(shè)線程優(yōu)先度是預(yù)先設(shè)定的。命令發(fā)行控制部115控制線程選擇器116、線程用寄存器選擇器117和118,以便對運(yùn)算器組119發(fā)行由線程選擇部114選擇的線程。此外,命令發(fā)行控制部115將與已對運(yùn)算器組119發(fā)行的線程相關(guān)的發(fā)行命令信息通知線程選擇部114。另外,本實(shí)施方式中將能夠同時執(zhí)行的線程數(shù)設(shè)為2。線程選擇器116是按照命令發(fā)行控制部115的指示來選擇執(zhí)行線程(由運(yùn)算器組 119執(zhí)行命令的線程)的選擇器。線程用寄存器選擇器117 118是與線程選擇器116同樣地按照命令發(fā)行控制部 115的指示來選擇與執(zhí)行線程成套的寄存器的選擇器。運(yùn)算器組119包含加法器或乘法器等多個運(yùn)算器。在本實(shí)施方式中,將能夠同時執(zhí)行的運(yùn)算器數(shù)量設(shè)為4。圖2是表示圖1所示的線程選擇部114的具體結(jié)構(gòu)的框圖。線程選擇部114具有第1發(fā)行間隔抑制部201、第2發(fā)行間隔抑制部202、第3發(fā)行間隔抑制部203、第1執(zhí)行間隔指定部204、第2執(zhí)行間隔指定部205和第3執(zhí)行間隔指定部206。第1發(fā)行間隔抑制部201、第2發(fā)行間隔抑制部202和第3發(fā)行間隔抑制部203分別進(jìn)行控制,以使得在從所分配的線程發(fā)行了由于運(yùn)算器組119的運(yùn)算器數(shù)量限制等而不能同時執(zhí)行的命令的情況下,在此后的固定期間中不對該線程發(fā)行該命令。第1執(zhí)行間隔指定部204、第2執(zhí)行間隔指定部205和第3執(zhí)行間隔指定部206分別指定線程的執(zhí)行間隔,以使得按照固定間隔來執(zhí)行所分配的線程。關(guān)于指定執(zhí)行間隔的方法,可以是,將用于指定執(zhí)行間隔的專用命令包含在各個線程的命令流中,通過執(zhí)行該專用命令來指定執(zhí)行間隔?;蛘撸部梢允?,設(shè)置對執(zhí)行間隔進(jìn)行設(shè)定的專用寄存器,由各個線程的命令流而變更專用寄存器的值來指定執(zhí)行間隔。通過指定執(zhí)行間隔,能夠抑制優(yōu)先度高的線程長時間占用資源,能夠防止低優(yōu)先度的線程的執(zhí)行發(fā)生局部停止。在通過執(zhí)行專用命令來指定執(zhí)行間隔的情況下,不存在因地址設(shè)定、寄存器訪問而引起的開銷損耗。并且,通過預(yù)先在線程的多個位置插入上述專用命令,能夠在線程內(nèi)的多個命令范圍中指定不同的執(zhí)行間隔。對專用寄存器設(shè)定執(zhí)行間隔的情況下,能夠在維持命令集的體系的狀態(tài)下對執(zhí)行間隔進(jìn)行控制。另外,在本實(shí)施方式中,第1發(fā)行間隔抑制部201、第2發(fā)行間隔抑制部202、第3 發(fā)行間隔抑制部203、第1執(zhí)行間隔指定部204、第2執(zhí)行間隔指定部205以及第3執(zhí)行間隔指定部206分別包含減計數(shù)器,該減計數(shù)器在每當(dāng)執(zhí)行周期經(jīng)過時使值減1。下面,為了方便而將3個線程稱為線程A、線程B、線程C。利用第1命令解碼器102、 第1命令數(shù)指定部105、第1命令分組部108、第1寄存器111、第1發(fā)行間隔抑制部201和第1執(zhí)行間隔指定部204來執(zhí)行線程A。利用第2命令解碼器103、第2命令數(shù)指定部106、 第2命令分組部109、第2寄存器112、第2發(fā)行間隔抑制部202和第2執(zhí)行間隔指定部205 來執(zhí)行線程B。利用第3命令解碼器104、第3命令數(shù)指定部107、第3命令分組部110、第 3寄存器113、第3發(fā)行間隔抑制部203和第3執(zhí)行間隔指定部206來執(zhí)行線程C。下面,說明多線程處理器1的動作。圖3是表示多線程處理器1的動作的流程圖。第1命令解碼器102、第2命令解碼器103和第3命令解碼器104分別對在命令存儲器101中存儲的線程A、B和C的命令流進(jìn)行解碼(步驟S001)。第1命令分組部108將由第1命令數(shù)指定部105指定的命令數(shù)作為上限,將在第 1命令解碼器102中識別出的線程A的命令流分組為由能夠被運(yùn)算器組119同時執(zhí)行的命令構(gòu)成的命令組。同樣,第2命令分組部109將由第2命令數(shù)指定部106指定的命令數(shù)作為上限,將在第2命令解碼器103中識別出的線程B的命令流分組為由能夠被運(yùn)算器組119 同時執(zhí)行的命令構(gòu)成的命令組。并且,第3命令分組部110將由第3命令數(shù)指定部107指定的命令數(shù)作為上限,將在第3命令解碼器104中識別出的線程C的命令流分組為由能夠被運(yùn)算器組119同時執(zhí)行的命令構(gòu)成的命令組(步驟S002)。命令發(fā)行控制部115根據(jù)與線程選擇部114保持的線程優(yōu)先度相關(guān)的設(shè)定信息、 和通過步驟S002的處理而被分組后的命令的信息,確定兩個能夠執(zhí)行的線程(步驟S003)。 在此,假設(shè)線程A和C是被確定為能夠執(zhí)行的線程來進(jìn)行以后的說明。線程選擇器116選擇線程A和C作為執(zhí)行線程。此外,線程用寄存器選擇器117 選擇與線程A和C對應(yīng)的第1寄存器111和第3寄存器113。運(yùn)算器組119利用在由線程用寄存器選擇器117選擇的寄存器(第1寄存器111和第3寄存器11 中存儲的數(shù)據(jù),執(zhí)行由線程選擇器116選擇的線程(線程A和C)的運(yùn)算(步驟S004)。線程用寄存器選擇器118選擇與線程用寄存器選擇器117選擇的寄存器相同的寄存器(第1寄存器111和第3寄存器113)。運(yùn)算器組119將線程(線程A和C)的運(yùn)算結(jié)果寫入到線程用寄存器選擇器118選擇的寄存器(第1寄存器111和第3寄存器113)中 (步驟 S005)。接著,使用圖4的流程圖說明基于線程選擇部114和命令發(fā)行控制部115的線程選擇處理。另外,在本說明中,在從線程A發(fā)行了后述的發(fā)行間隔抑制命令的情況下,第1發(fā)行間隔抑制部201在這之后抑制(禁止)在兩個機(jī)器周期(machine cycle)之間發(fā)行該發(fā)行間隔抑制命令。在此,發(fā)行間隔抑制命令是指在多個線程之間引起運(yùn)算器的競爭的命令。 同樣,在從線程B發(fā)行了發(fā)行間隔抑制命令的情況下,第2發(fā)行間隔抑制部202在這之后抑制(禁止)在兩個機(jī)器周期之間發(fā)行該發(fā)行間隔抑制命令。并且,在從線程C發(fā)行了發(fā)行間隔抑制命令的情況下,第3發(fā)行間隔抑制部203在這之后抑制(禁止)在兩個機(jī)器周期之間發(fā)行該發(fā)行間隔抑制命令。這樣,能夠只對必要最小限度的命令進(jìn)行抑制。因此,能夠不降低執(zhí)行效率而高效率地向其它線程讓出資源。此外,假定為,第1執(zhí)行間隔指定部204指定執(zhí)行周期間隔,以使得運(yùn)算器組119 能夠在兩個機(jī)器周期中執(zhí)行一次線程A的命令。同樣,假設(shè)為,第2執(zhí)行間隔指定部205指定執(zhí)行周期間隔,以使得運(yùn)算器組119能夠在兩個機(jī)器周期中執(zhí)行一次線程B的命令。并且,假設(shè)為,第3執(zhí)行間隔指定部206指定執(zhí)行周期間隔,以使得運(yùn)算器組119能夠在兩個機(jī)器周期中執(zhí)行一次線程C的命令。此外,關(guān)于線程的優(yōu)先度,假設(shè)線程A最高,其次線程B較高,線程C最低。下面,假設(shè)在關(guān)注的機(jī)器周期的前一個機(jī)器周期中執(zhí)行線程A和C、且利用線程A 發(fā)行了發(fā)行間隔抑制命令,來對關(guān)注的機(jī)器周期的動作進(jìn)行說明。另外,將要說明的動作是第1回的動作,為了與后面敘述的第2回的動作進(jìn)行區(qū)分,對各個步驟的步驟序號賦予表示第1回的“-1”。在第1回開始時,假設(shè)對第1發(fā)行間隔抑制部201、第2發(fā)行間隔抑制部202 和第3發(fā)行間隔抑制部203的減計數(shù)器設(shè)定了 0。此外,假設(shè)對第1執(zhí)行間隔指定部204、 第2執(zhí)行間隔指定部205和第3執(zhí)行間隔指定部206的減計數(shù)器設(shè)定了 0。線程選擇部114從命令發(fā)行控制部115取得在之前的機(jī)器周期中執(zhí)行的線程A和 C的執(zhí)行狀況(步驟S101-1)。即,取得如下信息,該信息表示線程A和C的已執(zhí)行(已發(fā)行)的命令是否是發(fā)行間隔抑制命令。在此,假設(shè)線程選擇部114取得了表示線程A的已執(zhí)行的命令是發(fā)行間隔抑制命令這一情況的信息。由于執(zhí)行了線程A的發(fā)行間隔抑制命令,因而第1發(fā)行間隔抑制部201對其減計數(shù)器設(shè)定2,以作為對該發(fā)行間隔抑制命令的發(fā)行進(jìn)行抑制的周期數(shù)(步驟S102-1)。此外,由于執(zhí)行了線程A和C,因而第1執(zhí)行間隔指定部204和第3執(zhí)行間隔指定部206對各自的減計數(shù)器的值設(shè)定1。由于第1執(zhí)行間隔指定部204和第3執(zhí)行間隔指定部206的減計數(shù)器的值是1不是0,因而線程選擇部114判定為不能執(zhí)行線程A和C。并且,由于第2執(zhí)行間隔指定部205 的減計數(shù)器的值是0,因而線程選擇部114判定為能夠執(zhí)行線程B。因此,線程選擇部114 只選擇線程B作為執(zhí)行對象線程,并通知命令發(fā)行控制部115。此外,線程選擇部114將選擇出的線程B的優(yōu)先度最高這一情況一并進(jìn)行通知(步驟S103-1)。命令發(fā)行控制部115根據(jù)從線程選擇部114接收到的線程B的優(yōu)先度信息、和表示由第2命令分組部109進(jìn)行的線程B的命令的分組結(jié)果的信息,將線程B確定為執(zhí)行線程(步驟S104-1)。命令發(fā)行控制部115通過對線程選擇器116以及線程用寄存器選擇器117和118 進(jìn)行操作,從第2命令分組部109向運(yùn)算器組119發(fā)送線程B的命令,從而運(yùn)算器組119執(zhí)行線程B的命令(步驟S105-1)。第1發(fā)行間隔抑制部201、第2發(fā)行間隔抑制部202、第3發(fā)行間隔抑制部203、第 1執(zhí)行間隔指定部204、第2執(zhí)行間隔指定部205和第3執(zhí)行間隔指定部206將各自的減計數(shù)器的值分別減1(步驟S106-1)。此時,在減計數(shù)器的值是0的情況下,不進(jìn)行減法而保持設(shè)定為0的狀態(tài)。
在每個機(jī)器周期實(shí)施以上的步驟SlOl S106的處理。對上述說明的下一個機(jī)器周期說明后續(xù)步驟。另外,對各個步驟的步驟序號賦予表示第2回的“_2”。另外,假設(shè)線程 A要再次執(zhí)行發(fā)行間隔抑制命令來進(jìn)行說明。線程選擇部114從命令發(fā)行控制部115取得在之前的機(jī)器周期中執(zhí)行的線程B的執(zhí)行狀況(步驟S101-2)。即,假設(shè)取得如下信息,該信息表示在線程B的已執(zhí)行的命令中不包含發(fā)行間隔抑制命令。由于執(zhí)行了線程B,因而第2執(zhí)行間隔指定部205對減計數(shù)器設(shè)定1(步驟 S102-2)。由于第2執(zhí)行間隔指定部205的減計數(shù)器的值是1不是0,因而線程選擇部114判定為不能執(zhí)行線程B。此外,由于第1執(zhí)行間隔指定部204和第3執(zhí)行間隔指定部206的減計數(shù)器的值是0,因而線程選擇部114判定為能夠執(zhí)行線程A和C。因此,線程選擇部114選擇線程A和C作為執(zhí)行對象線程,并通知命令發(fā)行控制部115。此外,線程選擇部114將線程A的優(yōu)先度比線程B的優(yōu)先度高這一情況一并通知命令發(fā)行控制部115。此外,第1發(fā)行間隔抑制部201的減計數(shù)器的值是1。因此,為了使線程A的發(fā)行間隔抑制命令不被發(fā)行, 線程選擇部114除了優(yōu)先度信息以外、還將線程A沒有發(fā)行間隔抑制命令的執(zhí)行權(quán)這一情況通知命令發(fā)行控制部115(步驟S103-2)。命令發(fā)行控制部115根據(jù)從線程選擇部114接收到的線程A和C的優(yōu)先度信息以及發(fā)行間隔抑制命令的信息、和表示由第1命令分組部108和第3命令分組部110進(jìn)行的線程A和C的命令的分組結(jié)果的信息,判斷為線程A是由于發(fā)行間隔抑制命令的限制而不能執(zhí)行的線程,將線程C確定為執(zhí)行線程(步驟S104-2)。命令發(fā)行控制部115通過對線程選擇器116、線程用寄存器選擇器117和118進(jìn)行操作,從第3命令分組部110向運(yùn)算器組119發(fā)送線程C的命令,從而運(yùn)算器組119執(zhí)行線程C的命令(步驟S105-2)。第1發(fā)行間隔抑制部201、第2發(fā)行間隔抑制部202、第3發(fā)行間隔抑制部203、第 1執(zhí)行間隔指定部204、第2執(zhí)行間隔指定部205和第3執(zhí)行間隔指定部206將各自的減計數(shù)器的值分別減1(步驟S106-2)。此時,在減計數(shù)器的值是0的情況下,不進(jìn)行減法而保持設(shè)定為0的狀態(tài)。另外,在圖4的流程圖中,通過多線程處理器1的電源斷開或復(fù)位來結(jié)束處理。如以上說明的那樣,根據(jù)實(shí)施方式1的多線程處理器1,即使是在線程之間競爭運(yùn)算資源的情況下,也能夠防止在用戶指定或處理器實(shí)施方面的線程間的優(yōu)先度中處于劣勢的線程的執(zhí)行效率局部明顯下降。此外,能夠得到各個線程的命令數(shù)和運(yùn)算器資源數(shù)的平衡,高效率地使用運(yùn)算器資源。另外,根據(jù)本實(shí)施方式,將線程數(shù)設(shè)為3,但是不限于該值,當(dāng)然能夠進(jìn)行各種變更,而且這些變更都包含在本發(fā)明的范圍內(nèi)。并且,根據(jù)本實(shí)施方式,將同時命令發(fā)行數(shù)上限設(shè)為3,但是不限于該值,當(dāng)然能夠進(jìn)行各種變更,而且這些變更都包含在本發(fā)明的范圍內(nèi)。并且,根據(jù)本實(shí)施方式,將能夠同時執(zhí)行的線程數(shù)的上限設(shè)為2,但是不限于該值, 當(dāng)然能夠進(jìn)行各種變更,而且這些變更都包含在本發(fā)明的范圍內(nèi)。并且,根據(jù)本實(shí)施方式,將能夠同時執(zhí)行的運(yùn)算器數(shù)的上限設(shè)為4,但是不限于該值,當(dāng)然能夠進(jìn)行各種變更,而且這些變更都包含在本發(fā)明的范圍內(nèi)。(實(shí)施方式2)下面,參照
本發(fā)明的實(shí)施方式2的編譯器和操作系統(tǒng)。圖5是表示本發(fā)明的實(shí)施方式2的編譯器3的結(jié)構(gòu)的框圖。編譯器3接受編程員利用C語言記述的源程序301作為輸入,轉(zhuǎn)換為內(nèi)部的中間表現(xiàn)(中間代碼)并實(shí)施了優(yōu)化、資源的分配后,生成適合于目標(biāo)處理器的可執(zhí)行代碼302。 被編譯器3作為目標(biāo)的處理器是在實(shí)施方式1中說明的多線程處理器1。下面,說明本發(fā)明的編譯器3的各個構(gòu)成要素的詳細(xì)結(jié)構(gòu)及其動作。另外,編譯器 3是一種程序,通過在具有處理器和存儲器的計算機(jī)上執(zhí)行用于實(shí)現(xiàn)編譯器3的各個構(gòu)成要素的程序來實(shí)現(xiàn)其功能。這樣的程序當(dāng)然能夠通過CD-ROM等非易失性記錄介質(zhì)、因特網(wǎng)等通信網(wǎng)絡(luò)而進(jìn)行流通。編譯器3,作為在計算機(jī)上被執(zhí)行的情況下發(fā)揮作用的處理部,具有句法分析 (parser)部31、優(yōu)化部32和代碼生成部33。編譯器3通過使計算機(jī)作為這些處理部而發(fā)揮作用,能夠使計算機(jī)作為編譯器裝置進(jìn)行動作。句法分析部31對輸入到編譯器3的源程序301提取保留字(關(guān)鍵字)等并進(jìn)行詞法分析和語法分析,根據(jù)固定規(guī)則將各個語句轉(zhuǎn)換為中間代碼。優(yōu)化部32對所輸入的中間代碼實(shí)施冗余去除、命令調(diào)度或寄存器分配等優(yōu)化處理。代碼生成部33,對于從優(yōu)化部32輸出的中間代碼,通過參照在內(nèi)部保持的轉(zhuǎn)換表等,將全部代碼置換為機(jī)器語言代碼。由此,生成可執(zhí)行代碼302。優(yōu)化部32具有多線程執(zhí)行控制指示解釋部321、命令調(diào)度部322、執(zhí)行狀態(tài)檢測代碼生成部323和執(zhí)行控制代碼生成部324。命令調(diào)度部322具有響應(yīng)性確保調(diào)度部3221。多線程執(zhí)行控制指示解釋部321受理由編程員進(jìn)行的用于控制多線程執(zhí)行的 旨示,作為編i華選工頁(compile option)、pragma才旨令(#pragma)或內(nèi)部函數(shù)(intrinsic function)。多線程執(zhí)行控制指示解釋部321將所受理的指示存儲到中間代碼中,并傳遞給后級的命令調(diào)度部322等。圖6是表示多線程執(zhí)行控制指示解釋部321受理的用于多線程執(zhí)行控制的指示的一覽的圖。下面,關(guān)于圖6所示的各個指示,參照使用該指示的源程序301的示例進(jìn)行說明。參照圖7,“關(guān)注區(qū)間指示”利用“#pragma_focus begin”和“#pragma_focus end” 將相比其它線程應(yīng)該關(guān)注的源程序301中的區(qū)間包圍起來從而進(jìn)行指定。根據(jù)該指示,編譯器3進(jìn)行控制,以使得重點(diǎn)對該區(qū)間分配處理器周期、運(yùn)算資源。參照圖8,“非關(guān)注區(qū)間指示”利用 “ #pragma_unfocus begin ”和“ #pragma_unfocus end”將相比其它線程不怎么需要關(guān)注的源程序301中的區(qū)間包圍起來從而進(jìn)行指定。根據(jù)該指示,編譯器3進(jìn)行控制,以使得不怎么對該區(qū)間分配處理器周期、運(yùn)算資源。參照圖9,“命令并行度指示”用于指定源程序301中被“《pragma ILP = ‘num’ begin”和“#pragma ILP end”包圍起來的區(qū)間的命令并行度。對‘num,部分指定 1 3中的任意一個數(shù)字,編譯器3生成用于設(shè)定所指定的動作模式的代碼,并實(shí)施假設(shè)了所指定的命令并行度的命令調(diào)度。圖9示出了對‘num’指定“3”的命令并行度指示。艮口, 指定“3”作為由“#pragma ILP = 3begin”和“#pragma ILP end”包圍起來的區(qū)間的命令并行度。參照圖10,“多線程執(zhí)行模式指示”用于使源程序301中被“#pragma_Single_ thread begin”和“#pragma_single_thread end”包圍起來的區(qū)間僅在自身線程的單線程模式下進(jìn)行動作。根據(jù)該指示,編譯器3生成對動作模式進(jìn)行設(shè)定的代碼、即在上述區(qū)間中將線程的執(zhí)行數(shù)設(shè)為一個的代碼。參照圖11,“響應(yīng)性確保區(qū)間指示”用于針對源程序301中被“ftpragmajesponse =‘num’ begin”和“pragmajesponse end”包圍起來的區(qū)間來指定其它線程最低限度能夠響應(yīng)的頻度。對‘num’部分指定表示應(yīng)該最低限度幾個周期能夠執(zhí)行一次其它線程的數(shù)值,編譯器3調(diào)整自身線程的生成代碼以使得滿足指定條件。在圖11中示出了對‘num’指定“10”的響應(yīng)性確保區(qū)間指示。S卩,該指示用于使在由“ftpragmajesponse = IObegin" 和“#pragma_resp0nse end”包圍的區(qū)間中、在10個周期中有一個周期執(zhí)行其它線程,以滿足該指示的方式生成代碼。例如,生成按照固定頻度來插入停頓周期(stall cycle)的代碼、按照固定周期來釋放運(yùn)算器資源的代碼。參照圖12,“停頓插入頻度指示”用于針對源程序301中被“#pragma_Stall_freq =‘num’ begin”和“#pragma_stall_freq end”包圍起來的區(qū)間來指定產(chǎn)生最低限度一個停頓周期的頻度。對‘num’部分指定表示應(yīng)該最低限度幾個周期產(chǎn)生一次停頓的數(shù)值,編譯器3插入適當(dāng)?shù)耐nD周期以使得滿足指定條件。圖12示出了對‘num’指定“10”的停頓插入頻度指示。即,生成代碼,以使得在由“#pragma_stall_freq = IObegin”和“#pragma_ stall_freq end”包圍起來的區(qū)間中、在10個周期中有1個周期產(chǎn)生停頓周期。參照圖13,“運(yùn)算器釋放頻度指示”用于針對源程序301中被“#pragma_release_ freq = ‘res, ‘num,begin” 禾口“#pragma_release_freq end,,包圍起來的區(qū)間來指定對于所指定的運(yùn)算器產(chǎn)生最低限度一次未使用的周期的頻度。對‘res’部分能夠指定‘mul’ 或者‘mem’作為運(yùn)算器的種類,‘mul’表示乘法器,‘mem’表示存儲器訪問裝置。對‘num’ 部分指定表示應(yīng)該最低限度幾個周期產(chǎn)生一次所指定的運(yùn)算器的未使用周期的數(shù)值,編譯器3調(diào)整生成代碼以使得滿足指定條件。圖13示出了對‘res’指定‘mul’、對‘num’指定 “10”的運(yùn)算器釋放頻度指示。即,生成代碼,以使得在由“#pragma_release_freq = mul lObegin”和“#pragma_release_freqend”包圍的區(qū)間中、在10個周期中有1個周期產(chǎn)生不使用所指定的運(yùn)算器即乘法器的周期。參照圖14,“緊迫度(tightness)檢測指示”是一種內(nèi)部函數(shù)的集,用于檢測對于所期待的執(zhí)行周期數(shù)緊迫到何種程度。利用函()指定源程序301 中的周期數(shù)計測區(qū)間的起點(diǎn)。能夠利用函數(shù)_get_tightness(num)得到緊迫度。對自變量 ‘num’指定自起點(diǎn)起的執(zhí)行周期數(shù)的期待值或應(yīng)保證值,該函數(shù)將實(shí)際的執(zhí)行周期數(shù)與所指定的數(shù)值之比返回。圖14示出了對‘num’指定“1000”的緊迫度檢測指示。由此,如果實(shí)際的執(zhí)行周期數(shù)是n,則函數(shù)_get_tightness_start (1000)返回η/1000。此外,編程員利用該函數(shù)能夠得到處理的緊迫度,能夠?qū)εc緊迫度對應(yīng)的控制進(jìn)行編程。例如,在緊迫度大于1的情況下,可以生成使運(yùn)算器資源減少或使命令并行度減少的代碼。并且,在緊迫度小于1的情況下,可以生成使運(yùn)算器資源增加或使命令并行度增加的代碼。參照圖15,“執(zhí)行周期期待值指示”是用于指示所期待的執(zhí)行周期數(shù)的內(nèi)部函數(shù)的集。利用函指定源程序301中的周期數(shù)計測區(qū)間的起點(diǎn)。利用函數(shù)_eXpeCted_CyCle (num)指定執(zhí)行周期數(shù)的期待值。對自變量‘num’指定自起點(diǎn)起的執(zhí)行周期數(shù)的期待值或應(yīng)保證值。根據(jù)編程員利用該函數(shù)而指定的期待值,編譯器3或操作系統(tǒng)4能夠?qū)С鰧?shí)際的處理的緊迫度,并自動實(shí)施適當(dāng)?shù)膱?zhí)行周期數(shù)的控制。“自動控制指示”是一種編譯選項,指示出實(shí)施自動多線程執(zhí)行控制。利用-auto-MT-control = OS選項來指示操作系統(tǒng)4的自動控制,利用-auto-MT-control = COMPILER選項來指示編譯器3的自動控制。再次參照圖5,命令調(diào)度部322保持所輸入的命令組之間的依存關(guān)系并適當(dāng)進(jìn)行命令的再排列,由此實(shí)施使執(zhí)行效率提高的優(yōu)化。另外,在進(jìn)行命令的再排列時,假定命令等級的并行度來實(shí)施再排列。在前述的指示中,對于進(jìn)行“關(guān)注區(qū)間指示”的區(qū)間假設(shè)并行度為3,對于進(jìn)行“非關(guān)注區(qū)間指示”的區(qū)間假設(shè)并行度為1,對于進(jìn)行“命令并行度指示”的區(qū)間假設(shè)為遵從指示的并行度。在缺省情況下假設(shè)并行度為3。并且,對于進(jìn)行“多線程執(zhí)行模式指示,,的區(qū)間,假設(shè)不存在其它線程而只有自身線程在處理器上動作,來實(shí)施命令調(diào)度。命令調(diào)度部322具有響應(yīng)性確保調(diào)度部3221。響應(yīng)性確保調(diào)度部3221,對于進(jìn)行前述“響應(yīng)性確保區(qū)間指示”或“停頓插入頻度指示”的區(qū)間,從開頭開始按順序搜索周期,在所指定的數(shù)值的周期數(shù)的停頓不發(fā)生的周期連續(xù)的情況下,插入使停頓發(fā)生的“nop”命令,并從下一個命令開始繼續(xù)搜索。由此,其它線程對所指定的周期在1個周期能夠可靠地執(zhí)行命令。并且,對于進(jìn)行前述“運(yùn)算器釋放頻度指示”的區(qū)間,進(jìn)行命令調(diào)度時,對使用所指定的運(yùn)算器的周期進(jìn)行計數(shù),計數(shù)器達(dá)到所指定的數(shù)值的情況下假設(shè)在下一個周期中不能使用該運(yùn)算器,從而進(jìn)行調(diào)度。如果產(chǎn)生不使用該運(yùn)算器的周期,則對計數(shù)進(jìn)行復(fù)位。由此, 其它線程對所指定的周期在1周期能夠使用該運(yùn)算器。執(zhí)行狀態(tài)檢測代碼生成部323對應(yīng)于前述指示來插入用于檢測執(zhí)行狀態(tài)的代碼。具體地講,對應(yīng)于前述“緊迫度檢測指示”,在記述有函數(shù)_get_tightneSS_ startO的部分中插入用于使處理器的周期計數(shù)開始的系統(tǒng)調(diào)用(system call)。并且, 在記述有函數(shù)_get_tightness(num)的部分中插入將處理器的周期計數(shù)值讀出的系統(tǒng)調(diào)用;以及將用所讀出的計數(shù)值除以對num賦予的期待值而得到的值作為緊迫度來返回的代碼。編程員能夠根據(jù)該返回值得知處理的緊迫度。此外,對應(yīng)于前述“執(zhí)行周期期待值指示”,在記述有函數(shù)_eXpeCted_CyCle_ startO的部分中插入用于使處理器的周期計數(shù)開始的系統(tǒng)調(diào)用。能夠?qū)?yīng)于各個指示而獨(dú)立地進(jìn)行周期計數(shù)。并且,作為自動控制指示的編譯選項-auto-MT-control而指定了 OS的情況下,在記述有函數(shù)_eXpeCted_CyCle(nUm)的部分中插入用于將由指示的執(zhí)行周期數(shù)的期待值傳遞給操作系統(tǒng)4而敦促執(zhí)行控制的系統(tǒng)調(diào)用。與此對應(yīng)地,能夠由操作系統(tǒng)4實(shí)施執(zhí)行控制。此外,作為自動控制指示的編譯選項-auto-MT-control而指定了 COMPILER的情況下,在記述有函數(shù)_eXpeCted_CyCle(nUm)的部分中插入將處理器的周期計數(shù)讀出的系統(tǒng)調(diào)用,用所讀出的計數(shù)值除以對num賦予的期待值來計算緊迫度,在緊迫度為0. 8以上的情況下,插入進(jìn)行與后述的“關(guān)注區(qū)間”對應(yīng)的控制的代碼,在緊迫度小于0. 8的情況下,插入進(jìn)行與后述的“非關(guān)注區(qū)間”對應(yīng)的控制的代碼。由此,編譯器能夠自動生成對與緊迫度對應(yīng)的多線程執(zhí)行控制進(jìn)行實(shí)施的代碼。執(zhí)行控制代碼生成部3M插入用于對應(yīng)于前述指示來對執(zhí)行進(jìn)行控制的代碼。具體地講,對應(yīng)于“關(guān)注區(qū)間指示”,在區(qū)間的begin的部分中插入將命令并行度設(shè)定為3的系統(tǒng)調(diào)用,在區(qū)間的end的部分中插入恢復(fù)為原來的設(shè)定的系統(tǒng)調(diào)用。并且,對應(yīng)于“非關(guān)注區(qū)間指示”,在區(qū)間的begin的部分中插入將命令并行度設(shè)定為1的系統(tǒng)調(diào)用、和設(shè)定為使其它線程的周期不中斷的執(zhí)行模式的代碼,在區(qū)間的end的部分中插入恢復(fù)為原來的設(shè)定的系統(tǒng)調(diào)用。另外,對應(yīng)于“命令并行度指示”,在區(qū)間的begin的部分中插入將命令并行度設(shè)定為所指定的值的系統(tǒng)調(diào)用,在區(qū)間的end的部分中插入恢復(fù)為原來的設(shè)定的系統(tǒng)調(diào)用。另外,對應(yīng)于“多線程執(zhí)行模式指示命令并行度指示”,在區(qū)間的begin的部分中插入用于轉(zhuǎn)移到單線程模式的系統(tǒng)調(diào)用,在區(qū)間的end的部分中插入恢復(fù)為原來的設(shè)定的系統(tǒng)調(diào)用。并且,對應(yīng)于“執(zhí)行周期期待值指示”和“自動控制指示”,插入與如前所述地檢測到的緊迫度相對應(yīng)來進(jìn)行與“非關(guān)注區(qū)間”或“關(guān)注區(qū)間”同樣的控制的代碼。通過采取以上所述的編譯器3的結(jié)構(gòu),在多線程處理器1中,能夠控制自身線程的執(zhí)行模式和處理器資源的使用狀況,能夠根據(jù)需要來關(guān)注自身線程的處理或?qū)ζ渌€程分配處理器資源。此外,即使是在關(guān)注自身線程的處理的情況下,其它線程也能夠保證規(guī)定的響應(yīng)性。此外,能夠獲得執(zhí)行時的執(zhí)行周期數(shù)的信息并據(jù)此按照緊迫度進(jìn)行上述控制,能夠?qū)崿F(xiàn)極其精細(xì)的性能調(diào)諧(timing)和處理器利用效率的提高。圖16是表示本發(fā)明的實(shí)施方式2的操作系統(tǒng)4的結(jié)構(gòu)的框圖。操作系統(tǒng)4,作為被在計算機(jī)上執(zhí)行時發(fā)揮作用的處理部,具有系統(tǒng)調(diào)用處理部 41、進(jìn)程(process)管理部42、存儲器管理部43和硬件控制部44。另外,操作系統(tǒng)4是一種程序,通過在具有處理器和存儲器的計算機(jī)上執(zhí)行用于實(shí)現(xiàn)操作系統(tǒng)4的各個構(gòu)成要素的程序來實(shí)現(xiàn)功能。這樣的程序當(dāng)然能夠通過CD-ROM等非易失性記錄介質(zhì)、因特網(wǎng)等通信網(wǎng)絡(luò)進(jìn)行流通。操作系統(tǒng)4,通過使計算機(jī)作為這些處理部發(fā)揮作用,能夠使計算機(jī)作為操作系統(tǒng)裝置進(jìn)行動作。另外,操作系統(tǒng)4動作的處理器是實(shí)施方式1所示的多線程處理器 1。進(jìn)程管理部42對在操作系統(tǒng)4上動作的多個進(jìn)程賦予優(yōu)先度,據(jù)此來確定分配給各個進(jìn)程的時間,并控制進(jìn)程的切換等。存儲器管理部43實(shí)施如下等控制存儲器的可利用部分的管理、存儲器的分配及釋放、主存儲與二次存儲之間的交換(swap)。系統(tǒng)調(diào)用處理部41提供與系統(tǒng)調(diào)用對應(yīng)的處理,該系統(tǒng)調(diào)用是針對應(yīng)用程序的核心月艮務(wù)(kernel service)。系統(tǒng)調(diào)用處理部41具有多線程執(zhí)行控制系統(tǒng)調(diào)用處理部411和緊迫度檢測系統(tǒng)調(diào)用處理部412。多線程執(zhí)行控制系統(tǒng)調(diào)用處理部411處理用于對處理器的多線程動作進(jìn)行控制的系統(tǒng)調(diào)用。
具體地講,多線程執(zhí)行控制系統(tǒng)調(diào)用處理部411受理對前述編譯器3的執(zhí)行控制代碼生成部324的命令并行度進(jìn)行設(shè)定的系統(tǒng)調(diào)用,設(shè)定處理器的動作命令并行度并保存原來的命令并行度。并且,多線程執(zhí)行控制系統(tǒng)調(diào)用處理部411受理向原來的命令并行度進(jìn)行恢復(fù)的系統(tǒng)調(diào)用,并將處理器設(shè)定為所保存的原來的命令并行度。另外,多線程執(zhí)行控制系統(tǒng)調(diào)用處理部411受理向單線程模式轉(zhuǎn)移的系統(tǒng)調(diào)用,將處理器的動作模式設(shè)定為單線程模式并保存原來的線程模式。并且,多線程執(zhí)行控制系統(tǒng)調(diào)用處理部411受理向原來的線程模式進(jìn)行恢復(fù)的系統(tǒng)調(diào)用,并將處理器設(shè)定為所保存的原來的線程模式。緊迫度檢測系統(tǒng)調(diào)用處理部412處理用于檢測處理的緊迫度并予以應(yīng)對的系統(tǒng)調(diào)用。具體地講,緊迫度檢測系統(tǒng)調(diào)用處理部412受理用于使前述編譯器3的執(zhí)行狀態(tài)檢測代碼生成部323的處理器的周期計數(shù)開始的系統(tǒng)調(diào)用,獲得處理器的計數(shù)器并進(jìn)行使計數(shù)開始的設(shè)定。此外,緊迫度檢測系統(tǒng)調(diào)用處理部412受理將當(dāng)前的周期計數(shù)讀出的系統(tǒng)調(diào)用,讀出處理器的相應(yīng)計數(shù)器的當(dāng)前的計數(shù)值,并返回該值。進(jìn)而,緊迫度檢測系統(tǒng)調(diào)用處理部412受理用于傳遞執(zhí)行周期數(shù)的期待值而敦促執(zhí)行控制的系統(tǒng)調(diào)用,讀出處理器的相應(yīng)計數(shù)器的當(dāng)前的計數(shù)值,根據(jù)該值和所傳遞的執(zhí)行周期數(shù)的期待值來推導(dǎo)緊迫度, 并實(shí)施與緊迫度對應(yīng)的執(zhí)行控制。在緊迫度較高的情況下,緊迫度檢測系統(tǒng)調(diào)用處理部412 提高該進(jìn)程的優(yōu)先度,并實(shí)施與前述“關(guān)注區(qū)間”對應(yīng)的控制。另一方面,在緊迫度較低的情況下,緊迫度檢測系統(tǒng)調(diào)用處理部412降低該進(jìn)程的優(yōu)先度,并實(shí)施與前述“非關(guān)注區(qū)間” 對應(yīng)的控制。硬件控制部44實(shí)施在系統(tǒng)調(diào)用處理部41等中所需要的硬件控制用的寄存器設(shè)定和讀出。具體地講,實(shí)施如下處理前述命令并行度的設(shè)定和恢復(fù)、多線程動作模式的設(shè)定和恢復(fù)、周期計數(shù)器的初始化、與周期計數(shù)器的讀出對應(yīng)的硬件的寄存器設(shè)定和讀出。通過采取以上所述的操作系統(tǒng)4的結(jié)構(gòu),能夠?qū)崿F(xiàn)利用程序的多線程處理器的動作控制,能夠?qū)Ω鱾€程序適當(dāng)?shù)胤峙涮幚砥髻Y源。并且,能夠根據(jù)所輸入的由編程員假設(shè)的執(zhí)行周期數(shù)的期待值和從硬件讀出的實(shí)際的執(zhí)行周期的信息來檢測緊迫度,并自動實(shí)施適當(dāng)?shù)目刂?,能夠減輕編程員的調(diào)諧負(fù)擔(dān)。本發(fā)明不限于上述的實(shí)施方式,當(dāng)然能夠?qū)崿F(xiàn)各種變更,并且這些變更都包含在本發(fā)明的范圍內(nèi)。例如,可以考慮以下所述的變形。(1)在上述實(shí)施方式2的編譯器中,假設(shè)了適合于C語言的編譯器系統(tǒng),但是本發(fā)明不限于C語言。在采用其它編程語言的情況下,本發(fā)明也能夠保持其意義。(2)在上述實(shí)施方式2的編譯器中,假設(shè)了適合于高級語言的編譯器系統(tǒng),但是本發(fā)明不限于此。例如,同樣能夠?qū)⒈景l(fā)明應(yīng)用于以匯編程序為輸入的匯編器。(3)在上述實(shí)施方式2中,作為目標(biāo)處理器,假設(shè)了 1個周期能夠發(fā)行3個命令、能夠同時使3個線程并行動作的處理器,但是本發(fā)明不限于該同時發(fā)行命令數(shù)、線程數(shù)。(4)在上述實(shí)施方式2中,作為目標(biāo)處理器,假設(shè)了超標(biāo)量處理器(superscalar processor),但是本發(fā)明不限于此。也能夠?qū)⒈景l(fā)明應(yīng)用于VLIM (Very Long Instruction Word)處理器。(5)在上述實(shí)施方式2中,作為對多線程執(zhí)行控制指示解釋部進(jìn)行指示的方法,分別規(guī)定了 pragma指令、內(nèi)部函數(shù)、編譯選項,但是本發(fā)明不限于這種規(guī)定。進(jìn)行pragma指令的部分也可以利用內(nèi)部函數(shù)來實(shí)現(xiàn),反過來也可以。并且,在匯編程序的情況下,還能夠作為偽指令進(jìn)行指示。(6)在上述實(shí)施方式2中,作為提供給多線程執(zhí)行控制指示解釋部的命令并行度指示,作為處理器假設(shè)了最少1最多3,但是本發(fā)明不限于這種指定。也可以指定位于處理器的能力的中間的2等并行度。(7)在上述實(shí)施方式2中,作為提供給多線程執(zhí)行控制指示解釋部的響應(yīng)確保區(qū)間指示、停頓插入頻度指示和運(yùn)算器釋放指示,提供了作為周期數(shù)的頻度,但是本發(fā)明不限于這種指定。也可以用毫秒等時間進(jìn)行這些指示,還可以如高、中、低那樣用程度進(jìn)行指示。(8)在上述實(shí)施方式2中,作為提供給多線程執(zhí)行控制指示解釋部的運(yùn)算器釋放頻度指示的運(yùn)算器,假設(shè)了乘法器和存儲器訪問,但是本發(fā)明不限于這種指示。也可以指示其它運(yùn)算器,還可以用更細(xì)的單位進(jìn)行指示以使得對加載(load)和儲存(storage)進(jìn)行區(qū)分等。(9)在上述實(shí)施方式2中,在提供給多線程執(zhí)行控制指示解釋部的緊迫度檢測指示和執(zhí)行周期期待值指示中,用周期數(shù)來提供期待值,但是本發(fā)明不限于這種指示。也可以用毫秒等時間進(jìn)行指示,還可以如大、中、小那樣用程度進(jìn)行指示。(10)在上述實(shí)施方式2的操作系統(tǒng)中,假設(shè)了伴隨有進(jìn)程管理和存儲器管理的通用操作系統(tǒng),但是也可以是諸如縮小了功能的設(shè)備驅(qū)動程序(device driver)那樣的操作系統(tǒng)。即使在這種形態(tài)下,也能夠通過API進(jìn)行硬件的適當(dāng)控制。另外,也可以將上述實(shí)施方式和上述變形例分別進(jìn)行組合。此次公開的實(shí)施方式在所有方面上都僅是示例,不能認(rèn)為是限制性的方式。本發(fā)明的范圍不在于上述的說明,而包含由請求保護(hù)的范圍所示、與請求保護(hù)的范圍同等意義及范圍內(nèi)的所有變更。產(chǎn)業(yè)上的可利用性如上所述,本發(fā)明的多線程處理器,即使是在線程之間競爭運(yùn)算資源的情況下也具有如下效果,即能夠防止在用戶指定、處理器實(shí)施方面的線程之間的優(yōu)先度中處于劣勢的線程的執(zhí)行效率局部明顯下降,并且能夠取得各個線程的命令數(shù)和運(yùn)算器資源數(shù)的平衡而實(shí)現(xiàn)高效率的多線程執(zhí)行,因而可以應(yīng)用于多線程處理器和使用該多線程處理器的應(yīng)用
軟件等。
附圖標(biāo)記說明
1多線程處理器
3編譯器
4操作系統(tǒng)
31句法分析部
32優(yōu)化部
33代碼生成部
41系統(tǒng)調(diào)用處理部
42進(jìn)程管理部
43存儲器管理部
44便件控制部
101命令存儲器
102第1命令解碼器
103第2命令解碼器
104第3命令解碼器
105第1命令數(shù)指定部
106第2命令數(shù)指定部
107第3命令數(shù)指定部
108第1命令分組部
109第2命令分組部
110第3命令分組部
111第1寄存器
112第2寄存器
113第3寄存器
114線程選擇部
115命令發(fā)行控制部
116線程選擇器
117,118線程用寄存器選擇器
119運(yùn)算器組
201第1發(fā)行間隔抑制部
202第2發(fā)行間隔抑制部
203第3發(fā)行間隔抑制部
204第1執(zhí)行間隔指定部
205第2執(zhí)行間隔指定部
206第3執(zhí)行間隔指定部
301源程序
302可執(zhí)行代碼
321多線程執(zhí)行控制指示解釋部
322命令調(diào)度部
323執(zhí)行狀態(tài)檢測代碼生成部
324執(zhí)行控制代碼生成部
411多線程執(zhí)行控制系統(tǒng)調(diào)用處理部
412緊迫度檢測系統(tǒng)調(diào)用處理部
3221響應(yīng)性確保調(diào)度部
權(quán)利要求
1.一種多線程處理器,并行執(zhí)行多個線程的命令,具有分別執(zhí)行命令的多個運(yùn)算器;分組部,按照每個線程,將該線程所包含的命令分組為由能夠由上述多個運(yùn)算器同時執(zhí)行的命令構(gòu)成的組;線程選擇部,通過控制上述多個線程的命令的執(zhí)行頻度,從而按照上述多線程處理器的每個執(zhí)行周期,從上述多個線程中選擇含有對上述多個運(yùn)算器發(fā)行的命令的線程;以及命令發(fā)行部,按照上述多線程處理器的每個執(zhí)行周期,對上述多個運(yùn)算器發(fā)行如下命令,即由上述線程選擇部選擇的上述線程所包含的命令中、由上述分組部進(jìn)行分組而得到的組的命令。
2.根據(jù)權(quán)利要求1所述的多線程處理器,其中,上述多線程處理器還具有命令數(shù)指定部,該命令數(shù)指定部按照每個線程來指定由上述分組部進(jìn)行分組的上述組所包含的命令的最大個數(shù),上述分組部以不超過由上述命令數(shù)指定部指定的上述命令的最大個數(shù)的方式對命令進(jìn)行分組。
3.根據(jù)權(quán)利要求2所述的多線程處理器,其中,上述命令數(shù)指定部按照在寄存器中設(shè)定的值來指定上述最大個數(shù)。
4.根據(jù)權(quán)利要求2所述的多線程處理器,其中,上述命令數(shù)指定部按照上述多個線程所包含的用于指定上述最大個數(shù)的命令來指定上述最大個數(shù)。
5.根據(jù)權(quán)利要求1 4中任意一項所述的多線程處理器,其中,上述線程選擇部具有執(zhí)行間隔指定部,該執(zhí)行間隔指定部對上述多個線程分別指定在上述多個運(yùn)算器中的命令的執(zhí)行周期間隔,上述線程選擇部按照由上述執(zhí)行間隔指定部指定的執(zhí)行周期間隔來選擇上述線程。
6.根據(jù)權(quán)利要求5所述的多線程處理器,其中,上述執(zhí)行間隔指定部按照在寄存器中設(shè)定的值來指定上述執(zhí)行周期間隔。
7.根據(jù)權(quán)利要求5所述的多線程處理器,其中,上述執(zhí)行間隔指定部按照上述多個線程所包含的用于指定上述執(zhí)行周期間隔的命令來指定上述執(zhí)行周期間隔。
8.根據(jù)權(quán)利要求1 7中任意一項所述的多線程處理器,其中,上述線程選擇部具有發(fā)行間隔抑制部,該發(fā)行間隔抑制部針對發(fā)行了在多個線程之間引起運(yùn)算器競爭的命令的線程來進(jìn)行抑制,以使得引起上述競爭的命令在固定的執(zhí)行周期數(shù)內(nèi)無法執(zhí)行。
9.一種編譯器裝置,將源程序轉(zhuǎn)換為可執(zhí)行代碼,適合于將多個線程的命令并行執(zhí)行的多線程處理器,該編譯器裝置具有指示取得部,取得與多線程控制相關(guān)的編程員的指示;以及控制代碼生成部,根據(jù)上述指示來生成對處理器的執(zhí)行模式進(jìn)行控制的代碼。
10.根據(jù)權(quán)利要求9所述的編譯器裝置,其中,上述指示取得部取得對并行執(zhí)行進(jìn)行關(guān)注的指示。
11.根據(jù)權(quán)利要求9所述的編譯器裝置,其中,上述指示取得部取得不對并行執(zhí)行進(jìn)行關(guān)注的指示。
12.根據(jù)權(quán)利要求10或11所述的編譯器裝置,其中,上述控制代碼生成部根據(jù)上述指示來生成使運(yùn)算器數(shù)增減的代碼。
13.根據(jù)權(quán)利要求9所述的編譯器裝置,其中, 上述指示取得部取得關(guān)于命令并行度的指示,上述控制代碼生成部生成按上述命令并行度來執(zhí)行線程的代碼。
14.根據(jù)權(quán)利要求9所述的編譯器裝置,其中, 上述指示取得部取得關(guān)于線程的執(zhí)行數(shù)的指示。
15.根據(jù)權(quán)利要求14所述的編譯器裝置,其中, 上述指示取得部取得關(guān)于單線程執(zhí)行的指示。
16.根據(jù)權(quán)利要求14或15所述的編譯器裝置,其中,上述控制代碼生成部根據(jù)上述指示來生成對線程的執(zhí)行數(shù)進(jìn)行控制的代碼。
17.根據(jù)權(quán)利要求9所述的編譯器裝置,其中,上述指示取得部取得與線程的響應(yīng)性的確保相關(guān)的指示。
18.根據(jù)權(quán)利要求9所述的編譯器裝置,其中,上述指示取得部取得與產(chǎn)生停頓周期的頻度相關(guān)的指示。
19.根據(jù)權(quán)利要求9所述的編譯器裝置,其中, 上述指示取得部取得與運(yùn)算器資源的釋放相關(guān)的指示。
20.根據(jù)權(quán)利要求17 19中任意一項所述的編譯器裝置,其中,上述控制代碼生成部根據(jù)上述指示來生成按固定頻度插入停頓周期的代碼。
21.根據(jù)權(quán)利要求17 19中任意一項所述的編譯器裝置,其中,上述控制代碼生成部根據(jù)上述指示來生成按固定頻度釋放運(yùn)算器資源的代碼。
22.根據(jù)權(quán)利要求9 21中任意一項所述的編譯器裝置,其中, 上述指示是指針對上述源程序中的固定區(qū)間的指示。
23.—種編譯器裝置,將源程序轉(zhuǎn)換為可執(zhí)行代碼,適合于將多個線程的命令并行執(zhí)行的多線程處理器,該編譯器裝置具有用于檢測處理的緊迫度的接口。
24.根據(jù)權(quán)利要求23所述的編譯器裝置,其中, 上述接口是對使周期計數(shù)開始的地點(diǎn)進(jìn)行指示的接口。
25.根據(jù)權(quán)利要求23所述的編譯器裝置,其中,上述接口是對上述緊迫度的測定地點(diǎn)中的周期數(shù)的期待值進(jìn)行輸入的接口。
26.根據(jù)權(quán)利要求25所述的編譯器裝置,其中,上述接口是返回根據(jù)上述期待值和實(shí)際周期數(shù)導(dǎo)出的緊迫度的接口。
27.根據(jù)權(quán)利要求23 沈中任意一項所述的編譯器裝置,其中,上述編譯器裝置還具有代碼生成部,該代碼生成部生成與上述緊迫度對應(yīng)的處理。
28.根據(jù)權(quán)利要求27所述的編譯器裝置,其中,上述代碼生成部按照上述緊迫度來生成使運(yùn)算器資源增減的代碼。
29.根據(jù)權(quán)利要求27所述的編譯器裝置,其中,上述代碼生成部按照上述緊迫度來生成使命令并行度增減的代碼。
30.根據(jù)權(quán)利要求23 27中任意一項所述的編譯器裝置,其中, 上述接口通過編譯器裝置的內(nèi)部函數(shù)而實(shí)現(xiàn)。
31.一種操作系統(tǒng)裝置,適合于將多個線程的命令并行執(zhí)行的多線程處理器,該操作系統(tǒng)裝置具有系統(tǒng)代碼處理部,該系統(tǒng)代碼處理部根據(jù)與多線程控制相關(guān)的編程員的指示來處理系統(tǒng)調(diào)用,該系統(tǒng)調(diào)用使得處理器的執(zhí)行模式能夠控制。
32.根據(jù)權(quán)利要求31所述的操作系統(tǒng)裝置,其中, 上述系統(tǒng)調(diào)用是與命令并行度相關(guān)的系統(tǒng)調(diào)用。
33.根據(jù)權(quán)利要求31所述的操作系統(tǒng)裝置,其中, 上述系統(tǒng)調(diào)用是與線程的執(zhí)行數(shù)相關(guān)的系統(tǒng)調(diào)用。
34.根據(jù)權(quán)利要求31所述的操作系統(tǒng)裝置,其中, 上述系統(tǒng)調(diào)用是與周期計數(shù)相關(guān)的系統(tǒng)調(diào)用。
35.根據(jù)權(quán)利要求31所述的操作系統(tǒng)裝置,其中, 上述系統(tǒng)調(diào)用是實(shí)施與緊迫度對應(yīng)的處理的系統(tǒng)調(diào)用。
全文摘要
一種并行執(zhí)行多個線程的命令的多線程處理器(1),具有由分別執(zhí)行命令的多個運(yùn)算器構(gòu)成的運(yùn)算器組(119);第1命令分組部(108)~第3命令分組部(110),按照每個線程,將該線程所包含的命令分組為由能夠由上述多個運(yùn)算器同時執(zhí)行的命令構(gòu)成的組;線程選擇部(114),通過控制多個線程的命令的執(zhí)行頻度,從而按照多線程處理器(1)的每個執(zhí)行周期,從多個線程中選擇含有對多個運(yùn)算器發(fā)行的命令的線程;以及命令發(fā)行部(115),按照多線程處理器(1)的每個執(zhí)行周期,對多個運(yùn)算器發(fā)行由線程選擇部(114)選擇的線程所包含的命令中、被分組后的組的命令。
文檔編號G06F9/38GK102334094SQ20108000947
公開日2012年1月25日 申請日期2010年3月18日 優(yōu)先權(quán)日2009年5月28日
發(fā)明者古賀義宏, 瓶子岳人 申請人:松下電器產(chǎn)業(yè)株式會社