專利名稱:處理器、運(yùn)算處理方法和優(yōu)先度決定方法
技術(shù)領(lǐng)域:
本發(fā)明涉及將對(duì)某數(shù)據(jù)處理進(jìn)行時(shí)間分割而至少成為一個(gè)以上的處理作為執(zhí)行單位,對(duì)每個(gè)該執(zhí)行單位執(zhí)行處理的處理器。
背景技術(shù):
在處理器通過分時(shí)執(zhí)行多個(gè)線程的情況下,一般使用操作系統(tǒng)等軟件進(jìn)行線程的切換。
操作系統(tǒng)在每一定時(shí)間內(nèi)檢測(cè)是否能夠執(zhí)行各線程??梢愿鶕?jù)例如成為處理對(duì)象的數(shù)據(jù)是否準(zhǔn)備好來判斷執(zhí)行可否。
在操作系統(tǒng)執(zhí)行這樣的判斷處理期間,必須中斷線程的執(zhí)行。在中斷線程執(zhí)行時(shí),將通用寄存器、堆棧指針(SP)和程序計(jì)數(shù)器(PC)等的內(nèi)容保存到處理器外部的主存儲(chǔ)器等中。保存的各種信息與線程的識(shí)別信息(線程ID)一起由操作系統(tǒng)管理。
操作系統(tǒng)具有時(shí)間表,根據(jù)該時(shí)間表依照例如循環(huán)排隊(duì)等方式,從能夠執(zhí)行的線程中決定實(shí)際執(zhí)行的線程。
操作系統(tǒng)取得有關(guān)根據(jù)時(shí)間表被決定執(zhí)行的線程的保存到主存儲(chǔ)器等中的各種信息,將通用寄存器、堆棧指針(SP)和程序計(jì)數(shù)器(PC)等的內(nèi)容從主存儲(chǔ)器裝置等中復(fù)原到各寄存器,然后開始線程的執(zhí)行。
也提案出了使用基于硬件的多個(gè)數(shù)據(jù)處理單元,實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)的并行處理的方法(參照特表2000-509528號(hào)公報(bào))。但是為了進(jìn)行并行處理,有以下問題要設(shè)置多個(gè)數(shù)據(jù)處理核心,進(jìn)而設(shè)置它們的調(diào)整機(jī)構(gòu),結(jié)構(gòu)自身變得復(fù)雜了。
在使用操作系統(tǒng)等軟件進(jìn)行的線程切換中,由于有基于操作系統(tǒng)自身動(dòng)作的過載,所以有必要準(zhǔn)備比本來的線程處理所需要的性能高的處理器。
另外,在使用操作系統(tǒng)進(jìn)行的線程切換中,線程切換要花費(fèi)時(shí)間,難以構(gòu)筑具有實(shí)時(shí)性的系統(tǒng)。
進(jìn)而,操作系統(tǒng)由于只在每一定時(shí)間判斷線程是否可執(zhí)行,所以線程能夠執(zhí)行后到操作系統(tǒng)判斷出能夠執(zhí)行,并實(shí)際執(zhí)行線程為止需要花費(fèi)時(shí)間,響應(yīng)性不好。該響應(yīng)性的惡化使得更加難以構(gòu)筑具有實(shí)時(shí)性的系統(tǒng)。
另外,在將成為處理對(duì)象的數(shù)據(jù)是否準(zhǔn)備好作為條件判斷線程可否啟動(dòng)的情況下,有不能將數(shù)據(jù)存儲(chǔ)到存儲(chǔ)處理結(jié)果的區(qū)域中的情況,在這樣的情況下就會(huì)丟失數(shù)據(jù)。
另一方面,如果要將許多功能硬件化實(shí)現(xiàn)實(shí)時(shí)處理,則現(xiàn)有的結(jié)構(gòu)具有復(fù)雜并且容易成為高成本的傾向。
發(fā)明內(nèi)容
本發(fā)明就是鑒于這樣的問題點(diǎn)提出的,其目的是提供一種能夠有效地實(shí)時(shí)執(zhí)行多個(gè)線程的處理器、運(yùn)算處理方法和優(yōu)先度決定方法。
為了達(dá)到上述目的,本發(fā)明的實(shí)施例相關(guān)處理器是執(zhí)行包含多個(gè)執(zhí)行單位的數(shù)據(jù)處理的處理器,其特征在于針對(duì)每個(gè)上述執(zhí)行單位存儲(chǔ)用于上述各執(zhí)行單位的處理的數(shù)據(jù)、和上述各執(zhí)行單位的處理結(jié)果的存儲(chǔ)部件;從上述存儲(chǔ)部件取得上述各執(zhí)行單位的數(shù)據(jù)并進(jìn)行處理,將處理結(jié)果輸出到上述存儲(chǔ)部件的數(shù)據(jù)處理部件;針對(duì)每個(gè)上述執(zhí)行單位判斷上述存儲(chǔ)部件是否保存了用于該執(zhí)行單位的處理的數(shù)據(jù)、以及上述存儲(chǔ)部件是否還有存儲(chǔ)該執(zhí)行單位的處理結(jié)果的空區(qū)域的執(zhí)行單位判斷部件;根據(jù)上述執(zhí)行單位判斷部件的判斷結(jié)果,從上述多個(gè)執(zhí)行單位中決定下一個(gè)應(yīng)該處理的執(zhí)行單位的執(zhí)行單位決定部件。
另外,本發(fā)明的實(shí)施例相關(guān)的處理器具備將對(duì)某數(shù)據(jù)處理進(jìn)行分時(shí)而成為至少一個(gè)以上的處理作為執(zhí)行單位,并針對(duì)該執(zhí)行單位執(zhí)行處理的數(shù)據(jù)處理部件;
存儲(chǔ)在上述數(shù)據(jù)處理部件中應(yīng)該執(zhí)行的執(zhí)行單位所使用的數(shù)據(jù)、或上述數(shù)據(jù)處理部件中的執(zhí)行結(jié)果的多個(gè)存儲(chǔ)部件;根據(jù)存儲(chǔ)在上述多個(gè)存儲(chǔ)部件中的數(shù)據(jù)量,決定使用存儲(chǔ)在各存儲(chǔ)部件中的數(shù)據(jù)的執(zhí)行單位的優(yōu)先度的優(yōu)先度決定部件。
圖1是展示軟件無線機(jī)的處理內(nèi)容的圖。
圖2是在任務(wù)間設(shè)置了FIFO的處理器的概要結(jié)構(gòu)圖。
圖3是展示本發(fā)明相關(guān)的處理器的實(shí)施例1的概要結(jié)構(gòu)的框圖。
圖4是展示本發(fā)明相關(guān)的處理器的實(shí)施例2的概要結(jié)構(gòu)的框圖。
圖5是展示執(zhí)行線程決定部件12和線程ID·優(yōu)先順序提供部件14的詳細(xì)結(jié)構(gòu)的框圖。
圖6是展示圖5的執(zhí)行線程決定部件12的處理步驟的流程圖。
圖7是展示本發(fā)明相關(guān)的處理器的實(shí)施例3的概要結(jié)構(gòu)的框圖。
圖8是說明本發(fā)明相關(guān)的處理器的實(shí)施例4的動(dòng)作的時(shí)序圖。
圖9是展示本發(fā)明相關(guān)的處理器的實(shí)施例5的概要結(jié)構(gòu)的框圖。
圖10是展示圖9的變形例子的處理器的框圖。
圖11是展示寄存器組ID線程ID對(duì)應(yīng)部件24的數(shù)據(jù)結(jié)構(gòu)的圖。
圖12是展示本發(fā)明相關(guān)的處理器的實(shí)施例6的概要結(jié)構(gòu)的框圖。
圖13是展示寄存器組存儲(chǔ)部件32的數(shù)據(jù)結(jié)構(gòu)的圖。
圖14是展示選中判斷部件31的處理步驟的流程圖。
圖15是展示本發(fā)明相關(guān)的處理器的實(shí)施例7的概要結(jié)構(gòu)的框圖。
圖16是展示保存寄存器組決定部件35的處理步驟的流程圖。
圖17是展示本發(fā)明相關(guān)的處理器的實(shí)施例8的概要結(jié)構(gòu)的框圖。
圖18是展示實(shí)施例8的寄存器組ID線程ID對(duì)應(yīng)部件的數(shù)據(jù)結(jié)構(gòu)的圖。
圖19是展示接收到錯(cuò)誤時(shí)運(yùn)轉(zhuǎn)選中判斷要求的情況下的選中判斷部件的處理步驟的流程圖。
圖20是展示接收到選中判斷要求的情況下的選中判斷部件的處理步驟的流程圖。
圖21是說明在寄存器組ID線程ID對(duì)應(yīng)部件24中存在設(shè)置了的標(biāo)志的情況下的線程的執(zhí)行形式的圖。
圖22是展示實(shí)施例9的寄存器組的數(shù)據(jù)結(jié)構(gòu)的圖。
圖23是展示有寄存器的改寫要求的情況下的處理步驟的流程圖。
圖24是展示有從外部寄存器組存儲(chǔ)部件向寄存器組群的轉(zhuǎn)送要求的情況下的處理步驟的流程圖。
圖25是展示有從寄存器組群向外部寄存器組存儲(chǔ)部件的轉(zhuǎn)送要求的情況下的處理步驟的流程圖。
圖26是展示外部寄存器組存儲(chǔ)部件32的數(shù)據(jù)結(jié)構(gòu)的圖。
圖27是展示線程啟動(dòng)時(shí)的處理步驟的流程圖。
圖28是展示有從寄存器組轉(zhuǎn)送部件向外部寄存器組存儲(chǔ)部件的寄存器轉(zhuǎn)送要求的情況下的處理步驟的流程圖。
圖29是展示有從外部寄存器組存儲(chǔ)部件向寄存器組群的轉(zhuǎn)送要求的情況下的處理步驟的流程圖。
圖30是展示實(shí)施例11的外部寄存器組存儲(chǔ)部件32的數(shù)據(jù)結(jié)構(gòu)的圖。
圖31是展示有從外部寄存器組存儲(chǔ)部件向寄存器組群的轉(zhuǎn)送要求的情況下的處理步驟的流程圖。
圖32是展示有從寄存器組轉(zhuǎn)送部件向外部寄存器組存儲(chǔ)部件的寄存器轉(zhuǎn)送要求的情況下的處理步驟的流程圖。
圖33是展示線程結(jié)束處理的流程圖。
圖34是展示本發(fā)明的實(shí)施例12相關(guān)的處理器的模塊結(jié)構(gòu)的一個(gè)例子的圖。
圖35是展示本發(fā)明的實(shí)施例12相關(guān)的處理器的線程處理的概要的圖。
圖36是展示本發(fā)明的實(shí)施例12相關(guān)的處理器對(duì)某線程與輸入側(cè)FIFO存儲(chǔ)量對(duì)應(yīng)地決定線程的啟動(dòng)優(yōu)先度的方法的一個(gè)例子的圖。
圖37是展示本發(fā)明的實(shí)施例12相關(guān)的處理器對(duì)某線程與輸出側(cè)FIFO存儲(chǔ)量對(duì)應(yīng)地決定線程的啟動(dòng)優(yōu)先度的方法的一個(gè)例子的圖。
圖38是展示本發(fā)明的實(shí)施例12相關(guān)的處理器決定下一個(gè)啟動(dòng)的線程的流程的一個(gè)例子的圖。
圖39是展示本發(fā)明的實(shí)施例13相關(guān)的處理器對(duì)某線程與輸入側(cè)FIFO存儲(chǔ)量對(duì)應(yīng)地決定線程的啟動(dòng)優(yōu)先度的方法的一個(gè)例子的圖。
圖40是展示本發(fā)明的實(shí)施例13相關(guān)的處理器對(duì)某線程與輸出側(cè)FIFO存儲(chǔ)量對(duì)應(yīng)地決定線程的啟動(dòng)優(yōu)先度的方法的一個(gè)例子的圖。
具體實(shí)施例方式
以下,參照附圖具體說明本發(fā)明相關(guān)的處理器、運(yùn)算處理方法和優(yōu)先度決定方法。
(實(shí)施例1)對(duì)分時(shí)地實(shí)時(shí)執(zhí)行多個(gè)線程的要求正在提高。例如,圖1是展示軟件無線機(jī)的處理內(nèi)容的圖。在圖1的軟件無線機(jī)中,連續(xù)執(zhí)行處理A~處理D。例如,處理B將處理A的輸出作為輸入,將執(zhí)行了規(guī)定的運(yùn)算處理的結(jié)果傳送到處理C。
在圖1中,各處理的輸出數(shù)據(jù)量必須與啟動(dòng)下一個(gè)處理所必須的數(shù)據(jù)量一致。另外,根據(jù)處理內(nèi)容各處理的處理量是各種各樣的。進(jìn)而,由于在處理期間數(shù)據(jù)傳遞的定時(shí)不同,所以在各處理的期間必須取得同步。
為了有效地實(shí)現(xiàn)圖1的處理,大多作為一個(gè)以上的線程生成各處理。各線程有用軟件實(shí)現(xiàn)的情況和用硬件實(shí)現(xiàn)的情況。在此,線程是指將處理器應(yīng)該執(zhí)行的一個(gè)處理分割并分配為多個(gè)時(shí)間間隔后的處理單位或該處理單位的執(zhí)行。本實(shí)施例的處理器由于是數(shù)據(jù)流程型,所以通過使分割了的多個(gè)線程依次處理一個(gè)處理數(shù)據(jù),來完成一個(gè)處理。線程是并行處理的,能夠非同步地進(jìn)行多個(gè)處理數(shù)據(jù)的數(shù)據(jù)流程型處理。這樣,主要為了實(shí)現(xiàn)實(shí)時(shí)OS那樣的多線程處理而對(duì)一個(gè)處理進(jìn)行線程化。
在本實(shí)施例中,向線程間插入FIFO(先進(jìn)先出),使得線程間不用取得嚴(yán)格的同步。FIFO一般是指數(shù)據(jù)的存儲(chǔ)方法,但在以下所示的實(shí)施例中是指從過去存儲(chǔ)的數(shù)據(jù)中順序地取出存儲(chǔ)的數(shù)據(jù)的方式,即FIFO型的存儲(chǔ)裝置。最新存儲(chǔ)的數(shù)據(jù)就是最后取出的數(shù)據(jù),例如被稱為隊(duì)列的數(shù)據(jù)結(jié)構(gòu)就是該方式的存儲(chǔ)裝置。這種情況下的處理器的概要處理步驟如圖2所示。
在圖2中,F(xiàn)IFO1向線程1輸出輸入數(shù)據(jù),F(xiàn)IFO2從線程1接收輸出數(shù)據(jù),同時(shí)向線程2輸出輸入數(shù)據(jù)。
在圖2中,在各線程的輸入側(cè)和輸出側(cè)逐一設(shè)置FIFO,但也可以設(shè)置多個(gè)FIFO。
也可以用圖2的結(jié)構(gòu)實(shí)現(xiàn)軟件無線機(jī),但由于用來在各線程間取得同步的處理量多,所以即使利用了FIFO,通過軟件取得同步處理器的過載也會(huì)變大,難以實(shí)現(xiàn)。
在此,如果著眼于各線程的啟動(dòng)條件,則各線程在不存在輸入數(shù)據(jù)時(shí)沒有必要啟動(dòng)。另外,在各線程的輸出側(cè)的FIFO中不存在存儲(chǔ)各線程的處理結(jié)果的空區(qū)域的情況下,有可能丟失各線程的處理結(jié)果,在這種情況下也沒有必要啟動(dòng)線程。
所以,以下說明的本發(fā)明的各實(shí)施例監(jiān)視FIFO內(nèi)的數(shù)據(jù)的存儲(chǔ)狀態(tài),只在存在向各線程的輸入數(shù)據(jù),并且輸出側(cè)FIFO中存在空區(qū)域的情況下,啟動(dòng)線程。
圖3是展示本發(fā)明相關(guān)的處理器的實(shí)施例1的概要結(jié)構(gòu)的框圖。圖3的處理器具備控制線程的執(zhí)行的執(zhí)行控制部件1、執(zhí)行線程的處理器核心2、存儲(chǔ)用于線程的執(zhí)行的數(shù)據(jù)和線程的執(zhí)行結(jié)果的存儲(chǔ)部件3、連接處理器核心2和存儲(chǔ)部件3的總線4。
執(zhí)行控制部件1具有判斷多個(gè)線程各自能否啟動(dòng)的的線程啟動(dòng)部件11、根據(jù)線程啟動(dòng)部件11的判斷結(jié)果決定應(yīng)該啟動(dòng)的線程的執(zhí)行線程決定部件12。處理器核心2執(zhí)行在執(zhí)行線程決定部件12決定的線程。
線程啟動(dòng)部件11與由多個(gè)FIFO10組成的存儲(chǔ)部件3連接。在圖3中展示了FIFO10由n個(gè)FIFO_0~FIFO_n構(gòu)成的例子。各FIFO10對(duì)應(yīng)于圖2的FIFO1等,線程啟動(dòng)部件11決定下一個(gè)應(yīng)該啟動(dòng)的線程。更具體地說,線程啟動(dòng)部件11保存應(yīng)該輸入到線程的FIFO10(例如FIFO_0)的輸出數(shù)據(jù),同時(shí)確認(rèn)在應(yīng)該存儲(chǔ)線程的處理結(jié)果的其他FIFO10(例如FIFO_1)中是否存在空區(qū)域。然后,只在存在應(yīng)該輸入到線程的FIFO10(例如FIFO_0)的輸出數(shù)據(jù),并且在應(yīng)該存儲(chǔ)線程的處理結(jié)果的其他FIFO10(例如FIFO_1)中存在空區(qū)域的情況下,判斷為應(yīng)該啟動(dòng)線程。
執(zhí)行線程決定部件12在存在多個(gè)能夠啟動(dòng)的線程的情況下,從中選擇任意一個(gè)線程。例如,執(zhí)行用來識(shí)別各線程的線程ID最小的線程。
處理器核心2具有例如指令取得部件、指令解釋部件、指令執(zhí)行部件、存儲(chǔ)指令執(zhí)行結(jié)果的指令執(zhí)行結(jié)果存儲(chǔ)部件以及存儲(chǔ)指令的執(zhí)行狀態(tài)的指令執(zhí)行狀態(tài)存儲(chǔ)部件。
這樣,在實(shí)施例1中,F(xiàn)IFO10保存應(yīng)該輸入到線程的數(shù)據(jù),并且通過線程啟動(dòng)部件11判斷在應(yīng)該存儲(chǔ)線程的執(zhí)行結(jié)果的其他FIFO10中是否存在空區(qū)域,執(zhí)行線程決定部件12根據(jù)該判斷結(jié)果決定應(yīng)該啟動(dòng)的線程,因而沒有操作系統(tǒng)也能夠進(jìn)行線程的時(shí)序安排,不受操作系統(tǒng)的過載的影響,能夠進(jìn)行線程的實(shí)時(shí)處理。
(實(shí)施例2)實(shí)施例2對(duì)多個(gè)線程付與優(yōu)先順序,依照優(yōu)先順序進(jìn)行線程的執(zhí)行。
圖4是展示本發(fā)明相關(guān)的處理器的實(shí)施例2的概要結(jié)構(gòu)的框圖。圖4的處理器內(nèi)的執(zhí)行控制部件1在圖3的結(jié)構(gòu)的基礎(chǔ)上,還具有提供多個(gè)線程各自的線程ID和優(yōu)先順序的線程ID·優(yōu)先順序提供部件14。
圖5是展示執(zhí)行線程決定部件12和線程ID·優(yōu)先順序提供部件14的詳細(xì)結(jié)構(gòu)的框圖。如圖示所示,線程ID·優(yōu)先順序提供部件14存儲(chǔ)各線程的線程ID和優(yōu)先順序的對(duì)應(yīng)關(guān)系。執(zhí)行線程決定部件12具有登記了從線程啟動(dòng)部件11通知的能夠執(zhí)行的線程的一覽的能夠執(zhí)行線程ID列表15、決定應(yīng)該啟動(dòng)的線程的優(yōu)先級(jí)編碼器16。
優(yōu)先級(jí)編碼器16從線程ID·優(yōu)先順序提供部件14取得登記在線程ID列表中的線程的優(yōu)先順序,決定例如優(yōu)先順序最高的線程作為啟動(dòng)線程。
對(duì)于線程ID·優(yōu)先順序提供部件14提供的優(yōu)先順序的設(shè)置方法并沒有特別的限制,但例如可以在生成新的線程時(shí),設(shè)置該線程的優(yōu)先順序,也可以在事后變更優(yōu)先順序。
圖6是展示圖5的執(zhí)行線程決定部件12的處理步驟的流程圖。首先,參照登記在能夠執(zhí)行線程ID列表15上的線程的線程ID(步驟S1),從線程ID·優(yōu)先順序提供部件14取得與該線程ID對(duì)應(yīng)的優(yōu)先順序(步驟S2)。
接著,判斷在步驟S2取得的優(yōu)先順序是否高于線程啟動(dòng)候補(bǔ)的優(yōu)先順序(步驟S3),如果高于則設(shè)置具有在步驟S1中參照了的線程ID的線程為啟動(dòng)候補(bǔ)(步驟S4)。
在步驟S4的處理結(jié)束了的情況下,或在步驟S3中判斷出不高于的情況下,判斷在能夠執(zhí)行線程ID列表15中是否還剩下還沒有比較優(yōu)先順序的線程(步驟S5),在剩下的情況下,循環(huán)進(jìn)行步驟S1以后的處理,在沒有剩下的情況下,結(jié)束處理。
這樣,在實(shí)施例2中,由于預(yù)先決定線程的優(yōu)先順序,所以在將多個(gè)線程作為啟動(dòng)候補(bǔ)的情況下,能夠優(yōu)先執(zhí)行優(yōu)先順序高的線程,使處理高效率化。另外,能夠迅速地選擇應(yīng)該啟動(dòng)的線程。
(實(shí)施例3)實(shí)施例3能夠動(dòng)態(tài)地變更優(yōu)先順序。
圖7是展示本發(fā)明相關(guān)的處理器的實(shí)施例3的概要結(jié)構(gòu)的框圖。圖7的處理器在圖4的結(jié)構(gòu)的基礎(chǔ)上,具備動(dòng)態(tài)地變更線程的優(yōu)先順序的優(yōu)先順序變更部件30。
優(yōu)先順序變更部件30具有計(jì)測(cè)每個(gè)線程的執(zhí)行時(shí)刻的時(shí)刻計(jì)測(cè)部件17、登記了各線程的線程ID和過去的啟動(dòng)時(shí)刻的對(duì)應(yīng)關(guān)系的啟動(dòng)時(shí)刻表18、計(jì)算各線程的啟動(dòng)間隔的平均值的平均時(shí)間間隔計(jì)算部件19、根據(jù)在平均時(shí)間間隔計(jì)算部件19的計(jì)算結(jié)果決定各線程的優(yōu)先順序的優(yōu)先順序決定部件20。
平均時(shí)間間隔計(jì)算部件19的計(jì)算結(jié)果越小,則越表示出是更頻繁啟動(dòng)的線程。因此,優(yōu)先順序決定部件20例如對(duì)平均時(shí)間間隔計(jì)算部件19的計(jì)算結(jié)果越小的線程則越提高優(yōu)先順序。
更具體地說,平均時(shí)間間隔計(jì)算部件19計(jì)算向各FIFO10的數(shù)據(jù)輸入間隔,優(yōu)先順序決定部件20決定優(yōu)先順序,使與該間隔短的FIFO10對(duì)應(yīng)的線程的優(yōu)先順序變高。或者,也可以由平均時(shí)間間隔計(jì)算部件19計(jì)算從處理器核心2通知的各線程的執(zhí)行間隔,優(yōu)先順序決定部件20決定優(yōu)先順序,使該間隔短的線程的優(yōu)先順序變高?;蛘?,也可以由平均時(shí)間間隔計(jì)算部件19監(jiān)視向各線程提供數(shù)據(jù)的各FIFO10的空區(qū)域,優(yōu)先順序決定部件20決定優(yōu)先順序,使與空區(qū)域少的FIFO10對(duì)應(yīng)的線程的優(yōu)先順序變高?;蛘撸部梢杂善骄鶗r(shí)間間隔計(jì)算部件19計(jì)算從各線程向各FIFO10的數(shù)據(jù)輸出間隔,優(yōu)先順序決定部件20決定優(yōu)先順序,使與該間隔短的FIFO10對(duì)應(yīng)的線程的優(yōu)先順序變高。
這樣,在實(shí)施例3中,由于能夠動(dòng)態(tài)地變更各線程的優(yōu)先順序,所以能夠參考過去的執(zhí)行履歷,進(jìn)行線程的時(shí)序安排。
(實(shí)施例4)在實(shí)施例4中,如果比執(zhí)行中的線程優(yōu)先順序高的線程的啟動(dòng)準(zhǔn)備完成,則中斷執(zhí)行中的線程,啟動(dòng)優(yōu)先順序高的線程。
實(shí)施例4的模塊結(jié)構(gòu)與圖4和圖7相同。圖8是說明本發(fā)明相關(guān)的處理的實(shí)施例4的動(dòng)作的時(shí)序圖。圖8展示了存在3個(gè)線程A、B、C,線程A的優(yōu)先順序最高,其次線程B的優(yōu)先順序高,線程C的優(yōu)先順序最低的例子。
首先,在時(shí)刻t0啟動(dòng)了線程C。然后,在時(shí)刻t1線程B的啟動(dòng)準(zhǔn)備完成。由此,執(zhí)行線程決定部件12中斷線程C的執(zhí)行,代之而開始線程B的啟動(dòng)。
然后,在時(shí)刻t2線程A的啟動(dòng)準(zhǔn)備完成。由此,執(zhí)行線程決定部件12中斷線程B的執(zhí)行,代之而開始線程A的啟動(dòng)。
然后,在時(shí)刻t3線程A的執(zhí)行結(jié)束,則接著再開始優(yōu)先順序高的線程B的執(zhí)行,在時(shí)刻t4線程B的執(zhí)行結(jié)束,則接著再開始優(yōu)先順序最低的線程C的執(zhí)行。
這樣,在實(shí)施例4中,如果優(yōu)先順序比執(zhí)行中的線程高的線程的啟動(dòng)準(zhǔn)備完成,則中斷執(zhí)行中的線程的處理,開始執(zhí)行優(yōu)先順序高的線程,因而能夠始終優(yōu)先處理重要的線程,能夠提高處理器整體的處理能力。
(實(shí)施例5)以下說明的實(shí)施例5~實(shí)施例11與迅速切換執(zhí)行中的線程的方法有關(guān)。
圖9是展示本發(fā)明相關(guān)的處理器的實(shí)施例5的概要結(jié)構(gòu)的框圖。圖9處理器與圖4一樣具備線程啟動(dòng)部件11、執(zhí)行線程決定部件12和線程ID·優(yōu)先順序提供部件14,其他還具備由多個(gè)計(jì)數(shù)器組構(gòu)成的寄存器組群21、從寄存器組群21中選擇任意一個(gè)寄存器組的寄存器組選擇部件22、使用選擇的寄存器組進(jìn)行運(yùn)算處理的運(yùn)算部件23。這些寄存器組、寄存器組選擇部件22和運(yùn)算部件23構(gòu)成了處理器核心2。
在寄存器組選擇部件22的內(nèi)部設(shè)置了從寄存器組群21中選擇一個(gè)寄存器組的解碼器22a。該解碼器22a輸出與來自執(zhí)行線程決定部件12的線程ID對(duì)應(yīng)的寄存器組的選擇信號(hào)。
各寄存器組由包含所有各個(gè)線程的固有信息的一個(gè)以上的寄存器構(gòu)成。構(gòu)成寄存器組的各寄存器的種類依存于處理器的特性,例如是程序計(jì)數(shù)器(PC)、堆棧指針(SP)、或通用寄存器(R0、R1…)等。在本說明書中,設(shè)1個(gè)寄存器組內(nèi)的寄存器的總數(shù)為r(r是1以上的整數(shù))。
寄存器組的總數(shù)是能夠分時(shí)執(zhí)行的線程的個(gè)數(shù)n以上的m個(gè)(m是整數(shù))。各寄存器組通過固有的識(shí)別編號(hào)(寄存器組ID)被識(shí)別。
執(zhí)行中的線程使用一個(gè)寄存器組。在用于每個(gè)線程的寄存器的種類不同的情況下,可以針對(duì)各個(gè)線程設(shè)置專用的寄存器組。可以在處理器的設(shè)計(jì)時(shí),決定構(gòu)成寄存器組的寄存器的種類,也可以根據(jù)程序指令事后變更構(gòu)成寄存器組的寄存器的種類。
在用于每個(gè)線程的寄存器的種類不同的情況下,可以根據(jù)需要,設(shè)置如圖10所示的登記了線程ID和寄存器組ID的對(duì)應(yīng)關(guān)系的寄存器組ID線程ID對(duì)應(yīng)部件24,參照該表,決定各線程對(duì)應(yīng)的寄存器組。
更詳細(xì)地說,寄存器組ID線程ID對(duì)應(yīng)部件24由圖11那樣的表構(gòu)成。圖11的表可以在處理器設(shè)計(jì)時(shí)作成然后不能變更,也可以在處理器啟動(dòng)后根據(jù)某種指令能夠變更表的內(nèi)容。
如果圖9和圖10的執(zhí)行線程決定部件12切換線程,則將切換后的線程的線程ID從執(zhí)行線程決定部件12通知到寄存器組選擇部件22。寄存器組選擇部件22使用圖11的表等,取得與切換后的線程對(duì)應(yīng)的寄存器組ID,并將與該ID對(duì)應(yīng)的寄存器組的值提供給運(yùn)算部件23。運(yùn)算部件23將在寄存器組選擇部件22選擇的寄存器組的值設(shè)置到各寄存器進(jìn)行運(yùn)算處理,并將該運(yùn)算處理結(jié)果存儲(chǔ)到在寄存器組選擇部件22選擇了的寄存器組中。
這樣,在實(shí)施例5中,如果進(jìn)行線程的切換,則也切換寄存器組,因而能夠縮短線程切換時(shí)的處理準(zhǔn)備時(shí)間,能夠?qū)崿F(xiàn)線程的高速切換。另外,在線程的處理暫時(shí)中斷后再開始的情況下,由于讀入再開始前的寄存器組的值就可以,所以能夠迅速再開始暫時(shí)中斷了的線程的處理。
(實(shí)施例6)實(shí)施例6將寄存器組群21中的至少一部分寄存器組保存到外部。
圖12是展示本發(fā)明相關(guān)的處理器的實(shí)施例6的概要結(jié)構(gòu)的框圖。圖12的處理器在圖10的結(jié)構(gòu)的基礎(chǔ)上,還具有選中判斷部件31、外部寄存器組存儲(chǔ)部件32、外部存儲(chǔ)控制部件33、寄存器組轉(zhuǎn)送部件34。
本實(shí)施例的寄存器組群21比分時(shí)執(zhí)行的線程的個(gè)數(shù)n多或少都可以。
選中判斷部件31判斷應(yīng)該執(zhí)行的線程的寄存器組是否登記到寄存器組ID線程ID對(duì)應(yīng)部件24中。寄存器組轉(zhuǎn)送部件34將寄存器組群21中的至少一部分寄存器組的內(nèi)容轉(zhuǎn)送到外部寄存器組存儲(chǔ)部件32,同時(shí)將從外部寄存器組存儲(chǔ)部件32讀出的寄存器組的內(nèi)容轉(zhuǎn)送到寄存器組群21。外部寄存器組存儲(chǔ)部件32存儲(chǔ)寄存器組群21中的至少一部分的寄存器組的內(nèi)容。
圖13是展示外部寄存器組存儲(chǔ)部件32的數(shù)據(jù)結(jié)構(gòu)的圖。外部寄存器組存儲(chǔ)部件32能夠存儲(chǔ)包含在寄存器組群21中的任意寄存器組的內(nèi)容,另外還能夠?qū)⒋鎯?chǔ)的寄存器組的內(nèi)容轉(zhuǎn)送到寄存器組群21。存儲(chǔ)在外部寄存器組存儲(chǔ)部件32中的各寄存器組通過線程ID被管理,在調(diào)用暫時(shí)存儲(chǔ)的寄存器組的內(nèi)容時(shí)也指定線程ID。
這樣,外部寄存器組存儲(chǔ)部件32能夠暫時(shí)保存寄存器組群21中的至少一部分寄存器組的內(nèi)容,并根據(jù)需要轉(zhuǎn)送到寄存器組群21。
外部寄存器組存儲(chǔ)部件32可以由專用的硬件構(gòu)成,也可以利用主存儲(chǔ)器等預(yù)先設(shè)置的存儲(chǔ)器的一部分區(qū)域。
圖14是展示選中判斷部件31的處理步驟的流程圖。首先,判斷與表示應(yīng)該執(zhí)行的線程的線程ID對(duì)應(yīng)的寄存器組ID是否登記在寄存器組ID線程ID對(duì)應(yīng)部件24中(步驟S1)。如果登記了,則判斷為選中,取得與該線程ID對(duì)應(yīng)的寄存器組ID(步驟S12)。在這種情況下,以與圖5一樣的步驟進(jìn)行線程的切換。
另一方面,如果沒有登記,則判斷為未選中(步驟S13),從外部寄存器組存儲(chǔ)部件32調(diào)用對(duì)應(yīng)的寄存器組,進(jìn)行寄存器組群21的一部分的替換處理。
更具體地說,首先,經(jīng)由寄存器組轉(zhuǎn)送部件34將寄存器組群21中的至少一部分寄存器組的內(nèi)容轉(zhuǎn)送到外部寄存器組存儲(chǔ)部件32。同時(shí),從外部寄存器組存儲(chǔ)部件32讀出應(yīng)該執(zhí)行的線程所利用的寄存器組的內(nèi)容,并經(jīng)由寄存器組轉(zhuǎn)送部件34轉(zhuǎn)送到寄存器組群21。
這樣,在實(shí)施例6中,將寄存器組群21中的至少一部分寄存器組的內(nèi)容保存到外部寄存器組存儲(chǔ)部件32,根據(jù)需要從外部寄存器組存儲(chǔ)部件32將寄存器組的內(nèi)容恢復(fù)到寄存器組群21中,因而能夠處理寄存器組群21中的寄存器組的總數(shù)以上的線程。所以,能夠減少寄存器組群21中的寄存器組的個(gè)數(shù),能夠使處理器的尺寸小型化。
(實(shí)施例7)實(shí)施例7在通過選中判斷部件31沒有選中時(shí),預(yù)先指定應(yīng)該保存的寄存器組。
圖15是展示本發(fā)明相關(guān)的處理器的實(shí)施例7的概要結(jié)構(gòu)的框圖。圖15的處理器在圖12的結(jié)構(gòu)的基礎(chǔ)上,還具備保存寄存器組決定部件35。
保存寄存器組決定部件35根據(jù)從線程ID·優(yōu)先順序提供部件14提供的優(yōu)先順序,從寄存器組群21中決定應(yīng)該保存到外部寄存器組存儲(chǔ)部件32的寄存器組。寄存器組轉(zhuǎn)送部件34將由保存寄存器組決定部件35決定了的寄存器組的內(nèi)容轉(zhuǎn)送到外部寄存器組存儲(chǔ)部件32,并將從外部寄存器組存儲(chǔ)部件32讀出的寄存器組的內(nèi)容轉(zhuǎn)送到寄存器組群21。
圖16是展示保存寄存器組決定部件35的處理步驟的流程圖。首先,判斷在寄存器組群21中是否存在利用的寄存器組,并且與該寄存器組對(duì)應(yīng)的線程是否不能夠執(zhí)行(步驟S21)。在判斷是Yes的情況下,在對(duì)應(yīng)的線程中選擇優(yōu)先順序最低的線程(步驟S22)。
另一方面,在步驟S21的判斷是No的情況下,選擇與寄存器組群21中的各寄存器組對(duì)應(yīng)的線程中的優(yōu)先順序最低的線程(步驟S23)。
如果步驟S22或S23的處理結(jié)束了,則取得選擇的線程所利用的寄存器組的ID(寄存器組ID)(步驟S24),并向寄存器組轉(zhuǎn)送部件34指定取得的ID(步驟S25)。
這樣,在實(shí)施例7中,能夠明確地指定應(yīng)該保存到外部寄存器組存儲(chǔ)部件32的寄存器組,因而能夠替換使用頻率低的寄存器組,能夠防止由于寄存器的保存造成的處理效率的降低。
(實(shí)施例8)
上述實(shí)施例6和實(shí)施例7由于進(jìn)行以下處理在選中判斷部件31判斷應(yīng)該執(zhí)行的線程所利用的寄存器組是否存在于寄存器組群21中,所以有可能不能迅速地切換線程。所以,以下說明的實(shí)施例8在選中判斷部件31進(jìn)行處理期間,進(jìn)行不受選中判斷部件31的判斷結(jié)果的影響的線程的處理。
圖17是展示本發(fā)明相關(guān)的處理器的實(shí)施例8的概要結(jié)構(gòu)的框圖。圖17的執(zhí)行線程決定部件12進(jìn)行與圖15的執(zhí)行線程決定部件12不同的處理。即,圖17的執(zhí)行線程決定部件12向選中判斷部件31要求發(fā)送判斷結(jié)果,從選中判斷部件31接收判斷結(jié)果。
圖17的寄存器組ID線程ID對(duì)應(yīng)部件24如圖18所示,具有使各個(gè)線程ID和寄存器組ID對(duì)應(yīng)的標(biāo)志。該標(biāo)志要執(zhí)行某線程,但在選中判斷部件31未選中,進(jìn)行從外部寄存器組存儲(chǔ)部件32轉(zhuǎn)送該線程所利用的寄存器的內(nèi)容的處理過程中被設(shè)置。
執(zhí)行線程決定部件12在切換執(zhí)行的線程時(shí),發(fā)出未選中時(shí)轉(zhuǎn)送選中判斷要求或選中判斷要求的任意一個(gè)。未選中時(shí)轉(zhuǎn)送選中判斷要求是向選中判斷部件31通知線程ID,在未選中的情況下,向寄存器組選擇部件22發(fā)出指示,使得從外部寄存器轉(zhuǎn)送裝置將該線程所利用的寄存器組轉(zhuǎn)送到寄存器組群21。
圖19的流程圖展示了接收到未選中時(shí)轉(zhuǎn)送選中判斷要求的情況下的選中判斷部件31的處理步驟。首先,判斷應(yīng)該執(zhí)行的線程的線程ID是否登記在寄存器組ID線程ID對(duì)應(yīng)部件24中(步驟S31)。如果登記了,則取得與該線程ID對(duì)應(yīng)的寄存器組ID(步驟S32),如果沒有登記,則判斷為未選中(步驟S33),向寄存器組轉(zhuǎn)送部件34指示轉(zhuǎn)送該線程所利用的寄存器組(步驟S34)。
另一方面,選中判斷要求是向選中判斷部件31通知線程ID,并將標(biāo)志是有效的寄存器組除外進(jìn)行判斷。在未選中的情況下也不進(jìn)行寄存器組的轉(zhuǎn)送。
圖20的流程圖展示了接收到選中判斷要求的情況下的選中判斷部件31的處理步驟。首先,將設(shè)置了標(biāo)志的線程ID除外,判斷應(yīng)該執(zhí)行的線程的線程ID是否登記在寄存器組ID線程ID對(duì)應(yīng)部件24中(步驟S41)。如果登記了,則取得與該線程ID對(duì)應(yīng)的寄存器組ID(步驟S42),如果沒有登記,則判斷為未選中(步驟S43)。
在寄存器組ID線程ID對(duì)應(yīng)部件24中不存在設(shè)置了的標(biāo)志的情況下,執(zhí)行線程決定部件12在切換執(zhí)行的線程時(shí),通過切換后的線程ID發(fā)出未選中時(shí)轉(zhuǎn)送選中判斷要求。在選中了的情況下,執(zhí)行線程決定部件12從寄存器組ID線程ID對(duì)應(yīng)部件24取得與選中的新的線程ID對(duì)應(yīng)的寄存器組ID,并將該寄存器組ID通知寄存器組選擇部件22,開始執(zhí)行新的線程。在未選中的情況下,選中判斷部件31向寄存器組轉(zhuǎn)送部件34指示轉(zhuǎn)送寄存器組,寄存器組ID線程ID對(duì)應(yīng)部件24設(shè)置與進(jìn)行轉(zhuǎn)送的寄存器組對(duì)應(yīng)的標(biāo)志。
如果寄存器組的轉(zhuǎn)送結(jié)束了,則寄存器組轉(zhuǎn)送部件34向寄存器組ID線程ID對(duì)應(yīng)部件24通知轉(zhuǎn)送結(jié)束。依照該通知,寄存器組ID線程ID對(duì)應(yīng)部件24使寄存器組的標(biāo)志無效。
執(zhí)行線程決定部件12從寄存器組ID線程ID對(duì)應(yīng)部件24取得與應(yīng)該執(zhí)行的線程對(duì)應(yīng)的寄存器組ID,向寄存器組選擇部件22通知取得的寄存器組ID,開始該線程的執(zhí)行。
在寄存器組ID線程ID對(duì)應(yīng)部件24中存在被設(shè)置了的標(biāo)志的情況下,執(zhí)行線程決定部件12在切換執(zhí)行的線程時(shí),用切換后的線程ID發(fā)出選中判斷要求。在選中了的情況下,執(zhí)行線程決定部件12從寄存器組ID線程ID對(duì)應(yīng)部件24取得與選中了的新線程ID對(duì)應(yīng)的寄存器組ID,并將該寄存器組ID通知寄存器組選擇部件22,開始執(zhí)行新的線程。另一方面,在未選中的情況下,不進(jìn)行線程的切換。
圖21是說明在寄存器組ID線程ID對(duì)應(yīng)部件24中存在設(shè)置了的標(biāo)志的情況下的任務(wù)的執(zhí)行形式的圖。在該例子中,在執(zhí)行線程ID5的線程過程中,在優(yōu)先順序比該線程高的線程ID1的線程變得能夠執(zhí)行時(shí),執(zhí)行線程決定部件12向選中判斷部件31進(jìn)行線程ID1的未選中時(shí)轉(zhuǎn)送選中判斷要求。
在該例子中,接收到該要求的選中判斷部件31進(jìn)行未選中判斷,由此,寄存器組轉(zhuǎn)送部件34在寄存器組群21中開始轉(zhuǎn)送線程ID1所利用的寄存器。該轉(zhuǎn)送花費(fèi)到時(shí)刻t3為止的時(shí)間。
如果在時(shí)刻t1~t3間的時(shí)刻t2線程ID5的執(zhí)行結(jié)束,則執(zhí)行線程決定部件發(fā)出能夠執(zhí)行的線程中的優(yōu)先順序最高的線程(在圖21的例子中是線程ID7)的選中判斷要求。在選中了的情況下,執(zhí)行線程ID7。
然后,如果到了時(shí)刻t3,則從寄存器組轉(zhuǎn)送部件34通知轉(zhuǎn)送結(jié)束,由此執(zhí)行線程決定部件開始線程ID1的執(zhí)行。
這樣,在實(shí)施例8中,在某線程所利用的寄存器組的轉(zhuǎn)送過程中不影響該線程的執(zhí)行地執(zhí)行其他線程,因而不等到寄存器組的轉(zhuǎn)送結(jié)束就能夠進(jìn)行線程的處理,能夠提高線程的處理效率。
(實(shí)施例9)實(shí)施例9在構(gòu)成寄存器組的各寄存器中設(shè)置表示寄存器的內(nèi)容是否被更新了的標(biāo)志。
實(shí)施例9具有與圖12一樣的模塊結(jié)構(gòu),但寄存器組群21的寄存器組的數(shù)據(jù)結(jié)構(gòu)與圖12不同。圖22是展示實(shí)施例9的寄存器組的數(shù)據(jù)結(jié)構(gòu)的圖。如該圖所示,與構(gòu)成寄存器組的各寄存器對(duì)應(yīng)地設(shè)置變更標(biāo)志。在改寫對(duì)應(yīng)的寄存器的內(nèi)容時(shí)設(shè)置該變更標(biāo)志。這種情況下的處理步驟用圖23那樣的流程圖表示。
在圖23中,首先,設(shè)置與改寫的寄存器對(duì)應(yīng)的變更標(biāo)志(步驟S51),然后改寫寄存器(步驟S52)。
圖22的變更標(biāo)志在讀入存儲(chǔ)在外部寄存器組存儲(chǔ)部件32中的寄存器組時(shí)被清除。圖24的流程圖展示了有從外部寄存器組存儲(chǔ)部件32向寄存器組群21的轉(zhuǎn)送要求的情況下的處理步驟。
在圖24中,首先,清除所有的轉(zhuǎn)送目的寄存器組內(nèi)的變更標(biāo)志(步驟S61),然后轉(zhuǎn)送寄存器組(步驟S62)。
圖25是展示有從寄存器組群21向外部寄存器組存儲(chǔ)部件32的寄存器組內(nèi)容的轉(zhuǎn)送要求的情況下的寄存器組轉(zhuǎn)送部件34的處理步驟的流程圖。首先,著眼于轉(zhuǎn)送的寄存器組內(nèi)的一個(gè)寄存器(步驟S71),判斷著眼的寄存器組的變更標(biāo)志是否被設(shè)置了(步驟S72)。
在被設(shè)置了的情況下,將轉(zhuǎn)送的寄存器轉(zhuǎn)送到外部寄存器組存儲(chǔ)部件32(步驟S73)。在沒有設(shè)置的情況下或步驟S73的處理結(jié)束了的情況下,對(duì)所有的寄存器判斷是否進(jìn)行了處理(步驟S74),如果沒有進(jìn)行處理則返回步驟S71,在進(jìn)行了處理的情況下結(jié)束。
這樣,在實(shí)施例9中,在包含在寄存器組群21中的寄存器中,只將有變更的轉(zhuǎn)送到外部寄存器組存儲(chǔ)部件32,所以能夠減少應(yīng)該轉(zhuǎn)送的數(shù)據(jù)量,并能夠減少轉(zhuǎn)送時(shí)間。
(實(shí)施例10)實(shí)施例10在外部寄存器組存儲(chǔ)部件32中,具有表示各寄存器組的各寄存器是否被改寫了的標(biāo)志。
圖26是展示外部寄存器組存儲(chǔ)部件32的數(shù)據(jù)結(jié)構(gòu)的圖。如該圖所示,與各寄存器組的各寄存器對(duì)應(yīng)地設(shè)置有效標(biāo)志。在對(duì)應(yīng)的寄存器被改寫了的情況下設(shè)置該有效標(biāo)志。
圖27是展示有效標(biāo)志的初始化處理的的流程圖,在啟動(dòng)線程時(shí)外部存儲(chǔ)控制部件33進(jìn)行處理。外部存儲(chǔ)控制部件33清除與啟動(dòng)的線程對(duì)應(yīng)的寄存器組內(nèi)的所有有效標(biāo)志(步驟S81)。
圖28是展示有效標(biāo)志的設(shè)置處理的流程圖,在有從寄存器組轉(zhuǎn)送部件34向外部寄存器組存儲(chǔ)部件32的寄存器組轉(zhuǎn)送要求時(shí),外部存儲(chǔ)控制部件33進(jìn)行該處理。外部存儲(chǔ)控制部件33設(shè)置與外部寄存器組存儲(chǔ)部件32轉(zhuǎn)送的寄存器對(duì)應(yīng)的有效標(biāo)志(步驟S91)。然后,從寄存器組群21向外部寄存器組存儲(chǔ)部件32轉(zhuǎn)送該寄存器(步驟S92)。
圖29是展示有從外部寄存器組存儲(chǔ)部件32向寄存器組群21的轉(zhuǎn)送要求的情況下的外部存儲(chǔ)控制部件33的處理步驟的流程圖。首先,讀入轉(zhuǎn)送的寄存器組內(nèi)的有效標(biāo)志(步驟S101)。接著,著眼于轉(zhuǎn)送的寄存器組內(nèi)的一個(gè)寄存器(步驟S102)。
判斷與該寄存器對(duì)應(yīng)的有效標(biāo)志是否被設(shè)置了(步驟S103),如果被設(shè)置了,則將寄存器轉(zhuǎn)送到外部寄存器組存儲(chǔ)部件32(步驟S104)。接著,判斷是否對(duì)所有的寄存器進(jìn)行了處理(步驟S105),如果還有沒有進(jìn)行處理的寄存器,則循環(huán)進(jìn)行步驟S101以后的處理。
這樣,在實(shí)施例10中,在外部寄存器組存儲(chǔ)部件32中,設(shè)置表示寄存器是否被改寫了的標(biāo)志,因而可以只在寄存器的內(nèi)容被改寫了的情況下從外部寄存器組存儲(chǔ)部件32向寄存器組群21轉(zhuǎn)送寄存器的內(nèi)容,能夠減少轉(zhuǎn)送次數(shù),同時(shí)能夠縮短轉(zhuǎn)送時(shí)間。
(實(shí)施例11)實(shí)施例11將外部寄存器組存儲(chǔ)部件32的各線程的寄存器組設(shè)置為列表結(jié)構(gòu)。
圖30是展示實(shí)施例11的外部寄存器組存儲(chǔ)部件32的數(shù)據(jù)結(jié)構(gòu)的圖。外部寄存器組存儲(chǔ)部件32成為列表結(jié)構(gòu),將存儲(chǔ)有變更的寄存器的值的寄存器值存儲(chǔ)區(qū)域和存儲(chǔ)在寄存器值存儲(chǔ)區(qū)域中的寄存器的識(shí)別編號(hào)(寄存器ID)作為一組進(jìn)行存儲(chǔ)。即,外部寄存器組存儲(chǔ)部件32不存儲(chǔ)內(nèi)容沒有變更的寄存器的值。
圖31是展示有從外部寄存器組存儲(chǔ)部件32向寄存器組群21的轉(zhuǎn)送要求的情況下的外部存儲(chǔ)控制部件33的處理步驟的流程圖。首先,將指針移動(dòng)到轉(zhuǎn)送寄存器組的列表的先頭(步驟S111)。接著,從外部寄存器組存儲(chǔ)部件32的列表中讀入寄存器ID和寄存器的值(步驟S112)。接著,將寄存器的值寫入與寄存器ID對(duì)應(yīng)的寄存器組群21的寄存器中(步驟S113)。接著,判斷是否是列表的最后(步驟S114)。如果是列表的最后,則結(jié)束處理,如果不是列表的最后,則移動(dòng)到列表的下一個(gè)項(xiàng)目,并循環(huán)進(jìn)行步驟S111以后的處理。
圖32是展示有從寄存器組轉(zhuǎn)送部件34向外部寄存器組存儲(chǔ)部件32的寄存器轉(zhuǎn)送要求的情況下的外部存儲(chǔ)控制部件33的處理步驟的流程圖。首先,判斷轉(zhuǎn)送的寄存器ID是否在外部寄存器組存儲(chǔ)部件32的對(duì)應(yīng)的列表中(步驟S121)。如果不在列表中,則向列表追加轉(zhuǎn)送的寄存器ID的項(xiàng)目(步驟S122)。
在步驟S121中判斷出在列表中的情況下,或在步驟S122的處理結(jié)束了的情況下,將寄存器的值寫入與列表的轉(zhuǎn)送寄存器ID對(duì)應(yīng)的寄存器值存儲(chǔ)區(qū)域中(步驟S123)。
圖33是展示線程結(jié)束時(shí)的外部存儲(chǔ)控制部件33的處理步驟的流程圖。廢棄外部寄存器組存儲(chǔ)部件32中的與結(jié)束了的線程對(duì)應(yīng)的列表的內(nèi)容(步驟S131)。
這樣,在實(shí)施例11中,將外部寄存器組存儲(chǔ)部件32設(shè)置為列表結(jié)構(gòu),只存儲(chǔ)有變更的寄存器的值,因而能夠減少外部寄存器組存儲(chǔ)部件32的存儲(chǔ)器容量,同時(shí)能夠減少在與寄存器組群21之間的轉(zhuǎn)送數(shù)據(jù)量。
(實(shí)施例12)實(shí)施例12對(duì)應(yīng)于存儲(chǔ)在輸入側(cè)FIFO和輸出側(cè)FIFO的數(shù)據(jù)量,決定線程的優(yōu)先度。
圖34是展示實(shí)施例12中的處理器的模塊結(jié)構(gòu)的一個(gè)例子的圖。圖34的處理器具備多個(gè)FIFO101、選擇部件102、執(zhí)行控制部件103、緩存104、切換部件105、多個(gè)寄存器組106、存儲(chǔ)器總線107、存儲(chǔ)部件108、運(yùn)算處理部件109。緩存104、切換部件105、寄存器組106和運(yùn)算處理部件109相當(dāng)于處理器核心2。
FIFO101是能夠從先存儲(chǔ)的內(nèi)容開始讀出的存儲(chǔ)裝置。FIFO101設(shè)置有多個(gè),以下,向各FIFO付與如FIFO101-1、…FIFO101-n那樣的區(qū)別。
各FIFO101的存儲(chǔ)容量并不必須一定是相同的,但為了簡化說明而設(shè)置為相同的容量。
通過執(zhí)行控制部件103進(jìn)行的各部件的控制和在該控制下,由運(yùn)算處理部件109執(zhí)行預(yù)先付與的規(guī)定的程序代碼,來實(shí)現(xiàn)線程的處理。
選擇部件102從多個(gè)FIFO101中選擇執(zhí)行控制部件103指定的FIFO。選擇的FIFO101通過運(yùn)算處理部件109被讀寫。
執(zhí)行控制部件103具有控制本實(shí)施例的處理器進(jìn)行的所有處理的功能。在此,還包含保存表示優(yōu)先執(zhí)行哪個(gè)線程的優(yōu)先度的表。執(zhí)行控制部件103具有根據(jù)FIFO101等的信息設(shè)置該表,并依照表的內(nèi)容向各部件指示處理哪個(gè)處理數(shù)據(jù)、執(zhí)行哪個(gè)線程的功能。
為了在運(yùn)算處理部件109執(zhí)行與線程對(duì)應(yīng)的程序代碼時(shí),避免依次訪問讀寫速度慢的存儲(chǔ)裝置,而設(shè)置緩存104。一般,與運(yùn)算處理部件109的處理速度相比,主存儲(chǔ)器和磁盤裝置等大容量存儲(chǔ)裝置的訪問速度慢。緩存104使用沒有大容量存儲(chǔ)裝置那樣的存儲(chǔ)容量的、訪問速度快的存儲(chǔ)裝置。對(duì)于頻繁訪問的數(shù)據(jù)和程序代碼,通過暫時(shí)存儲(chǔ)到緩存104中,在讀寫時(shí)運(yùn)算處理部件109能夠不等待地,就盡量實(shí)現(xiàn)運(yùn)算處理部件109的處理量。
切換部件105從多個(gè)寄存器組106中選擇能夠訪問的處理所必需的一個(gè)以上的寄存器組。運(yùn)算處理部件109經(jīng)由該切換部件105訪問存儲(chǔ)了處理所必需的數(shù)據(jù)的寄存器組。
寄存器組106具有執(zhí)行控制部件103執(zhí)行程序代碼所必需的各種寄存器(暫時(shí)存儲(chǔ)裝置)。在寄存器組106中,包含計(jì)算用寄存器、選址用寄存器、堆棧用寄存器。在本實(shí)施例中,設(shè)置了從1到m(m為任意)的多個(gè)該寄存器組106。各個(gè)寄存器組106并不必須是相同的結(jié)構(gòu),但為了使各個(gè)線程使用哪個(gè)寄存器組都能夠進(jìn)行處理,而理想的是具有相同的結(jié)構(gòu)。
為了在多個(gè)寄存器組106和存儲(chǔ)部件108之間進(jìn)行數(shù)據(jù)的交換,而設(shè)置存儲(chǔ)器總線107。緩存104、多個(gè)寄存器組106和存儲(chǔ)部件108經(jīng)由存儲(chǔ)器總線107進(jìn)行數(shù)據(jù)的傳送。執(zhí)行控制部件103進(jìn)行數(shù)據(jù)傳送控制。
存儲(chǔ)部件108存儲(chǔ)本實(shí)施例的處理器為了進(jìn)行處理而執(zhí)行的程序代碼、成為處理對(duì)象的處理數(shù)據(jù)。根據(jù)情況,作為存儲(chǔ)在緩存104和寄存器組106中的數(shù)據(jù)的暫時(shí)保存地點(diǎn)被使用。
運(yùn)算處理部件109具有執(zhí)行存儲(chǔ)部件108或緩存104所存儲(chǔ)的程序代碼的功能。在執(zhí)行程序代碼時(shí),根據(jù)執(zhí)行控制部件103的指示,決定使用哪個(gè)FIFO101、哪個(gè)寄存器組106、處理哪個(gè)線程。
圖35是說明本實(shí)施例中的處理器的線程處理的概要的圖。本實(shí)施例的處理器由于是數(shù)據(jù)流程型,所以處理數(shù)據(jù)不論是什么樣的輸入形式,基本都經(jīng)過一個(gè)路徑(流程)被輸出。運(yùn)算處理部件109依照預(yù)先存儲(chǔ)在存儲(chǔ)部件108中的程序代碼針對(duì)輸入的處理數(shù)據(jù),逐次對(duì)輸入的處理數(shù)據(jù)執(zhí)行線程201-1~201-x的處理。在有下一階段的處理的情況下,輸出的輸出結(jié)果成為下一階段的輸入數(shù)據(jù)。
如果輸入了作為輸入數(shù)據(jù)的處理數(shù)據(jù),則由執(zhí)行控制部件103所指示了的多個(gè)FIFO101中的一個(gè)FIFO101-A存儲(chǔ)它。FIFO101-A對(duì)應(yīng)于來自執(zhí)行控制部件103等的結(jié)果,或自發(fā)地將FIFO101-A內(nèi)的FIFO存儲(chǔ)量作為狀態(tài)報(bào)告202-A通知執(zhí)行控制部件103。
如果根據(jù)執(zhí)行控制部件103的指示,運(yùn)算處理部件109開始執(zhí)行線程201-1,則將FIFO101-A內(nèi)的數(shù)據(jù)作為輸入數(shù)據(jù)進(jìn)行處理。這時(shí),F(xiàn)IFO101-A內(nèi)的數(shù)據(jù)從先存儲(chǔ)的數(shù)據(jù)開始依次被讀出。根據(jù)執(zhí)行控制部件103的指示,將執(zhí)行該線程的處理結(jié)果存儲(chǔ)在FIFO101-B中。與FIFO101-B或FIFO101-A一樣,向執(zhí)行控制部件103通知包含F(xiàn)IFO存儲(chǔ)量的狀態(tài)報(bào)告202-B。
如果從線程201-2到線程201-x(x為任意)的上述處理都結(jié)束了,則作為輸出輸出處理結(jié)果。
執(zhí)行控制部件103根據(jù)執(zhí)行指示203指示運(yùn)算處理部件109將哪個(gè)線程作為執(zhí)行狀態(tài)。執(zhí)行控制部件103根據(jù)FIFO101-A~FIFO101-n通知的狀態(tài)報(bào)告202-A~202-n的信息,設(shè)置自己所具備的執(zhí)行優(yōu)先度表中的優(yōu)先度,并根據(jù)該優(yōu)先度決定執(zhí)行指示203。在決定執(zhí)行指示203時(shí),可以只使用多個(gè)狀態(tài)報(bào)告202中的一部分并依照決定了的優(yōu)先度,也可以考慮所有的狀態(tài)報(bào)告202并根據(jù)決定了的優(yōu)先度,決定最優(yōu)先的線程201。理想的是根據(jù)所有的狀態(tài)報(bào)告202決定各個(gè)線程201的執(zhí)行順序,來謀求處理整體的高效率。
以下,說明執(zhí)行控制部件103決定上述線程的執(zhí)行順序的方法。
圖36是展示本實(shí)施例中的處理器的執(zhí)行控制部件103對(duì)某線程與輸入側(cè)FIFO存儲(chǔ)量對(duì)應(yīng)地決定線程的啟動(dòng)優(yōu)先度的方法的一個(gè)例子的圖。由于圖36所示的縱軸所對(duì)應(yīng)的FIFO存儲(chǔ)量是輸入側(cè)FIFO,所以例如成為圖35所示的線程201-1所對(duì)應(yīng)的FIFO101-A、線程201-2所對(duì)應(yīng)的FIFO101-B。
在某線程的輸入側(cè)FIFO存儲(chǔ)了大量等待處理的數(shù)據(jù)的情況下,則表示該線程的處理緩慢。所以有必要提高該線程的優(yōu)先度,加快處理等待處理的數(shù)據(jù)。因此,如圖36所示,依照FIFO存儲(chǔ)量的增加進(jìn)行設(shè)置,使得容易執(zhí)行(提高優(yōu)先度)。如交點(diǎn)302所示,F(xiàn)IFO存儲(chǔ)量越高,則在表示執(zhí)行控制部件103所保存的各線程的優(yōu)先度的表中越設(shè)置為高優(yōu)先度。
在圖36所示的例子中,用正比直線301展示了FIFO存儲(chǔ)量和線程執(zhí)行優(yōu)先度的關(guān)系,但并不必須是直線。例如,也可以是與FIFO存儲(chǔ)量接近上限相關(guān)聯(lián)地,使優(yōu)先度上升量加大那樣的比例曲線303。在該情況下,能夠有效地防止FIFO溢出。另外,也可以與曲線或直線無關(guān)地,階段性地或階梯狀地提高優(yōu)先度,使得容易進(jìn)行處理器的設(shè)計(jì)和安裝。作為一個(gè)例子,可以進(jìn)行以下操作設(shè)置FIFO存儲(chǔ)量的閾值,到超過該閾值為止不執(zhí)行線程,或到閾值為止持續(xù)執(zhí)行。
圖37是展示本實(shí)施例中的處理器對(duì)某線程與輸出側(cè)FIFO存儲(chǔ)量對(duì)應(yīng)地決定線程的優(yōu)先度的方法的一個(gè)例子的圖。由于圖37所示的縱軸所對(duì)應(yīng)的FIFO存儲(chǔ)量是輸出側(cè)FIFO,所以例如成為圖35所示的線程201-1所對(duì)應(yīng)的FIFO101-B、線程201-2所對(duì)應(yīng)的FIFO101-C。
在某線程的輸出側(cè)FIFO存儲(chǔ)了大量等待處理的數(shù)據(jù)的情況下,則表示其后的線程的處理緩慢。如果保持不變地執(zhí)行線程,則輸出側(cè)的FIFO有可能溢出。所以有必要降低該線程的優(yōu)先度,抑制處理使得輸出側(cè)的FIFO不溢出。因此,如圖37所示,依照FIFO存儲(chǔ)量的增加進(jìn)行設(shè)置,使得難以執(zhí)行(降低優(yōu)先度)。如交點(diǎn)402所示,F(xiàn)IFO存儲(chǔ)量越高,則在表示執(zhí)行控制部件103所保存的各線程的優(yōu)先度的表中越設(shè)置為低優(yōu)先度。
在圖37所示的例子中,用正比直線401展示了FIFO存儲(chǔ)量和線程執(zhí)行優(yōu)先度的關(guān)系,但并不必須是直線。例如,也可以是與輸出側(cè)FIFO存儲(chǔ)量接近上限相關(guān)聯(lián)地,使優(yōu)先度下降量加大那樣的比例曲線403。在該情況下,能夠有效地防止輸出側(cè)FIFO溢出。另外,也可以與曲線或直線無關(guān)地,階段性地或階梯狀地降低優(yōu)先度,使得容易進(jìn)行處理器的設(shè)計(jì)和安裝。作為一個(gè)例子,可以進(jìn)行以下操作設(shè)置FIFO存儲(chǔ)量的閾值,到不達(dá)到該閾值為止不執(zhí)行線程,或到超過閾值為止持續(xù)執(zhí)行。
如上述那樣,執(zhí)行控制部件103依照綜合了從輸入側(cè)FIFO得到的優(yōu)先度和從輸出側(cè)FIFO得到的優(yōu)先度的雙方的優(yōu)先度或基于輸入側(cè)FIFO的優(yōu)先度,決定線程的優(yōu)先度。
這時(shí),可以考慮表示從輸入側(cè)FIFO存儲(chǔ)量得到的優(yōu)先度和從輸出側(cè)FIFO存儲(chǔ)量得到的優(yōu)先度相反的優(yōu)先度的情況。例如,考慮輸出側(cè)和輸出側(cè)雙方都接近了存儲(chǔ)量的上限的情況。在該情況下,將在輸出側(cè)的FIFO存儲(chǔ)量的空區(qū)域中有能夠盡量存儲(chǔ)對(duì)存儲(chǔ)在輸入側(cè)FIFO中的處理數(shù)據(jù)進(jìn)行了處理后的輸出結(jié)果的區(qū)域作為條件,使基于輸入側(cè)FIFO存儲(chǔ)量的優(yōu)先度優(yōu)先。除了該情況,為了防止輸出側(cè)FIFO溢出,而使基于輸出FIFO存儲(chǔ)量的優(yōu)先度優(yōu)先、或暫時(shí)禁止該線程的執(zhí)行。
圖38是展示本實(shí)施例中的處理器決定下一個(gè)執(zhí)行的線程的一個(gè)例子的流程圖。
首先,取得所有FIFO的存儲(chǔ)量(步驟S141)。對(duì)于取得方法,可以向各FIFO查詢,也可以由FIFO自主地報(bào)告。對(duì)于取得方法并沒有限制。
接著,對(duì)各FIFO檢查是否是超過了上限的存儲(chǔ)量那樣的FIFO(步驟S142)。在檢查的結(jié)果是有超過的FIFO的情況下,對(duì)與該FIFO關(guān)聯(lián)的線程進(jìn)行緊急處理(步驟S143)。
緊急處理例如有以下這樣的處理。其一是通過分配來最優(yōu)先地處理輸入側(cè)具有該FIFO的線程。分配是指強(qiáng)制地變更通常的處理順序的方法。通過使其他線程優(yōu)先處理,能夠減少該FIFO的存儲(chǔ)量。另一個(gè)是暫時(shí)禁止輸出側(cè)具有該FIFO的線程的執(zhí)行。通過禁止該線程的執(zhí)行,能夠停止向該FIFO追加數(shù)據(jù),使存儲(chǔ)量留出余地。
應(yīng)該根據(jù)處理狀況或處理數(shù)據(jù)的特性而靈活地決定緊急處理的內(nèi)容,并不僅限于上述例子。
在沒有要過載的FIFO時(shí),接著判斷是否求出了所有線程的優(yōu)先度(步驟S144)。
在沒有求出所有線程的優(yōu)先度的情況下,選擇處理中或待機(jī)中的一個(gè)線程(步驟S145)。然后根據(jù)選擇了的線程所使用的輸入側(cè)和輸出側(cè)FIFO的存儲(chǔ)量,用上述方法決定該線程的優(yōu)先度(步驟S146)。在決定后,再次判斷是否求出了所有線程的優(yōu)先度(步驟S144)。
如果判斷出對(duì)所有線程求出了優(yōu)先度,則從求出了優(yōu)先度的線程中選擇具有最高優(yōu)先度的線程(步驟S147)。
如果如上述那樣進(jìn)行處理,則能夠從處理中或待機(jī)中的線程中選擇下一個(gè)應(yīng)該執(zhí)行的線程。
如果如上述那樣地構(gòu)成,則能夠高效率地將數(shù)據(jù)流程型處理器的處理能力分配給必要的處理,同時(shí)能夠?qū)?yīng)于輸入側(cè)和輸出側(cè)的FIFO存儲(chǔ)量,選擇應(yīng)該執(zhí)行的線程。
另外,還可以是安裝了本實(shí)施例的處理器的、進(jìn)行數(shù)據(jù)流程型處理的計(jì)算機(jī)。
這樣,在實(shí)施例12中,輸入側(cè)FIFO的數(shù)據(jù)存儲(chǔ)量越多則越提高使用該輸入側(cè)FIFO的數(shù)據(jù)的線程的優(yōu)先度,因而能夠加快處理輸入側(cè)FIFO的等待處理數(shù)據(jù)。另外,輸出側(cè)FIFO的數(shù)據(jù)存儲(chǔ)量越多則越降低該輸出側(cè)FIFO的前階段的線程的優(yōu)先度,因而能夠避免輸出側(cè)FIFO溢出。
(實(shí)施例13)實(shí)施例13在輸入側(cè)FIFO和輸出側(cè)FIFO的存儲(chǔ)數(shù)據(jù)量增加和減少時(shí),切換線程的優(yōu)先度。
實(shí)施例13的處理器的模塊結(jié)構(gòu)和線程處理與圖34和圖35一樣。
圖39是展示本實(shí)施例的處理器對(duì)某線程與輸入側(cè)FIFO存儲(chǔ)量對(duì)應(yīng)地決定線程的優(yōu)先度的方法的一個(gè)例子的圖。圖39所示的縱軸所對(duì)應(yīng)的FIFO存儲(chǔ)量是輸入側(cè)FIFO,因而成為例如圖35所示的與線程201-1對(duì)應(yīng)的FIFO101-A和與線程201-2對(duì)應(yīng)的FIFO101-B。
在某線程的輸入側(cè)FIFO中存儲(chǔ)了許多等待處理的數(shù)據(jù)的情況下,則表示該線程的處理緩慢。所以有必要提高該線程的優(yōu)先度,加快處理等待處理的數(shù)據(jù)。因此,如圖39所示,依照FIFO存儲(chǔ)量的增加進(jìn)行設(shè)置,使得容易執(zhí)行(提高優(yōu)先度)。
與實(shí)施例12不同的是,假設(shè)FIFO存儲(chǔ)量增加和減少時(shí)為不同的線程執(zhí)行優(yōu)先度。即使是相同的FIFO存儲(chǔ)量,例如與FIFO存儲(chǔ)量增加時(shí)的交點(diǎn)601對(duì)應(yīng)的優(yōu)先度也比與FIFO存儲(chǔ)量減少時(shí)的交點(diǎn)602對(duì)應(yīng)的優(yōu)先度低。
在研究輸入側(cè)FIFO的存儲(chǔ)量和線程處理的關(guān)系時(shí),如果執(zhí)行線程則輸入側(cè)FIFO的存儲(chǔ)量減少,相反如果不執(zhí)行,則有增加的傾向。如果考慮這時(shí)具有交點(diǎn)601的FIFO存儲(chǔ)量的減少時(shí),則即使輸入側(cè)FIFO的存儲(chǔ)量減少,該線程的優(yōu)先度降低也很緩慢。相反,如果考慮具有交點(diǎn)601的FIFO存儲(chǔ)量的增加時(shí),則即使輸入側(cè)FIFO的存儲(chǔ)量增加該線程的優(yōu)先度上升也很緩慢。即即使輸入側(cè)FIFO的存儲(chǔ)量變化,一旦開始了處理的線程也會(huì)保持原來的高優(yōu)先度,因而很有可能連續(xù)被執(zhí)行。相反,優(yōu)先度變低而難以被執(zhí)行的線程就意味著如果輸入側(cè)FIFO的存儲(chǔ)量不更高,則難以被執(zhí)行。
圖34所示的緩存104如上述所示被設(shè)置為能夠高速地訪問線程處理所必需的處理數(shù)據(jù)的存儲(chǔ)容量少的存儲(chǔ)器。由于存儲(chǔ)容量少,所以如果其他的線程被執(zhí)行,則暫時(shí)被讀入的某線程的處理數(shù)據(jù)就很有可能被覆蓋而刪除。必須再次從訪問速度低的存儲(chǔ)裝置將刪除的處理數(shù)據(jù)讀入到緩存104上。如果根據(jù)輸入側(cè)FIFO的存儲(chǔ)量的變動(dòng)而頻繁替換被執(zhí)行的線程,則必須從其他的存儲(chǔ)裝置向緩存104讀入的數(shù)據(jù)的量和次數(shù)必然會(huì)增加。
圖34所示的寄存器組106也一樣,在執(zhí)行中和待機(jī)中的線程比寄存器組106的個(gè)數(shù)多的情況下,就有必要暫時(shí)保存到其他存儲(chǔ)裝置中。這是因?yàn)闉榱嗽谀硶r(shí)刻執(zhí)行不能分配到寄存器組106的線程,而有必要為了該線程而開放被其他線程占用了的寄存器組106。由于必須在存儲(chǔ)裝置之間移動(dòng)寄存器組106的內(nèi)容,所以頻繁的線程切換會(huì)造成與緩存104一樣的過載。
在本實(shí)施例的處理器中,實(shí)現(xiàn)了某線程容易被頻繁執(zhí)行的狀態(tài),而減少了向緩存104的數(shù)據(jù)讀入的過載。所以,能夠?qū)⑻幚砥魉哂械奶幚砟芰Ψ峙浣o本來的數(shù)據(jù)處理。
在圖39所示的例子中,用橢圓表示了FIFO存儲(chǔ)量和線程優(yōu)先度的關(guān)系,但并不必須是橢圓。例如也可以為了處理器設(shè)計(jì)上的安裝簡單,而階段性地或階梯狀地提高優(yōu)先度。
圖40展示了本實(shí)施例的處理器對(duì)某線程與輸出側(cè)FIFO存儲(chǔ)量對(duì)應(yīng)地決定線程的優(yōu)先度的方法的一個(gè)例子。圖40所示的縱軸所對(duì)應(yīng)的FIFO存儲(chǔ)量是輸出側(cè)FIFO,因而成為例如圖35所示的與線程201-1對(duì)應(yīng)的FIFO101-B和與線程201-2對(duì)應(yīng)的FIFO101-C。
在某線程的輸出側(cè)FIFO中存儲(chǔ)了許多等待處理的數(shù)據(jù)的情況下,則表示其后的線程的處理緩慢。如果保持原樣地執(zhí)行線程,則輸出側(cè)的FIFO有可能溢出。所以,有必要降低該線程的優(yōu)先度,抑制處理使輸出側(cè)的FIFO不溢出。因此,如圖40所示,依照輸出側(cè)的FIFO存儲(chǔ)量的增加進(jìn)行設(shè)置,使得難以被執(zhí)行(降低優(yōu)先度)。
與實(shí)施例12不同的是,假設(shè)FIFO存儲(chǔ)量增加和減少時(shí)為不同的線程執(zhí)行優(yōu)先度。即使是相同的FIFO存儲(chǔ)量,例如與FIFO的存儲(chǔ)量增加時(shí)的交點(diǎn)702對(duì)應(yīng)的優(yōu)先度也比與FIFO的存儲(chǔ)量減少時(shí)的交點(diǎn)701對(duì)應(yīng)的優(yōu)先度高。
在研究輸出側(cè)FIFO的存儲(chǔ)量和線程處理的關(guān)系時(shí),如果執(zhí)行線程則輸出側(cè)FIFO的存儲(chǔ)量增加,相反如果不執(zhí)行,則有減少的傾向。如果考慮這時(shí)具有交點(diǎn)702的FIFO存儲(chǔ)量的增加時(shí),則即使輸出側(cè)FIFO的存儲(chǔ)量增加,該線程的優(yōu)先度降低也很緩慢。相反,如果考慮具有交點(diǎn)701的FIFO存儲(chǔ)量的減少時(shí),則即使輸出側(cè)FIFO的存儲(chǔ)量減少,該線程的優(yōu)先度的上升也很緩慢。即即使輸出側(cè)FIFO的存儲(chǔ)量變化,一旦開始了處理的線程也會(huì)保持原來的高優(yōu)先度,因而很有可能連續(xù)被執(zhí)行。相反,優(yōu)先度變低而難以被執(zhí)行的線程就意味著如果輸出側(cè)FIFO的存儲(chǔ)量不更低,則難以被執(zhí)行。
因此,與具有圖39的特性的輸入側(cè)FIFO一樣,通過設(shè)置具有圖40的特性的輸出側(cè)FIFO,能夠?qū)崿F(xiàn)線程容易被頻繁執(zhí)行的狀態(tài),能夠減少向緩存104的數(shù)據(jù)讀入的過載。
在圖40所示的例子中,用橢圓表示了FIFO存儲(chǔ)量和線程執(zhí)行優(yōu)先度的關(guān)系,但并不必須是橢圓。例如也可以為了處理器設(shè)計(jì)上的安裝簡單,而階段性地或階梯狀地提高優(yōu)先度。
如上所述,執(zhí)行控制部件103依照綜合了從輸入側(cè)FIFO得到的優(yōu)先度和從輸出側(cè)FIFO得到的優(yōu)先度雙方的優(yōu)先度、或基于輸入側(cè)FIFO的優(yōu)先度,決定線程的優(yōu)先度。
這時(shí),可以考慮表現(xiàn)出從輸入側(cè)FIFO存儲(chǔ)量得到的優(yōu)先度和從輸出側(cè)FIFO存儲(chǔ)量得到的優(yōu)先度相反的優(yōu)先度的情況。例如,是處理數(shù)據(jù)沒有存儲(chǔ)到輸入側(cè)FIFO和輸出側(cè)FIFO雙方的時(shí)候。在這種情況下,由于沒有必要優(yōu)先執(zhí)行線程,所以使基于輸入側(cè)FIFO的存儲(chǔ)量的優(yōu)先度優(yōu)先。
另一方面,也可以考慮輸入側(cè)和輸出側(cè)雙方都接近于存儲(chǔ)量上限的情況。在這種情況下,將在輸出側(cè)的FIFO存儲(chǔ)量的空區(qū)域中有能夠盡量存儲(chǔ)對(duì)存儲(chǔ)在輸入側(cè)FIFO的處理數(shù)據(jù)進(jìn)行了處理后的輸出結(jié)果的區(qū)域作為條件,使基于輸入側(cè)FIFO存儲(chǔ)量的優(yōu)先度優(yōu)先。除了該情況,為了防止輸出側(cè)FIFO溢出,而使基于輸出側(cè)FIFO存儲(chǔ)量的優(yōu)先度優(yōu)先、或暫時(shí)禁止該線程的執(zhí)行。
實(shí)施例12的圖38同樣是展示本實(shí)施例的處理器決定下一個(gè)執(zhí)行的線程的流程的一個(gè)例子的圖。
這樣,在實(shí)施例13中,根據(jù)輸入側(cè)FIFO和輸出側(cè)FIFO的存儲(chǔ)數(shù)據(jù)量是具有增加傾向還是具有減少傾向,來切換線程的優(yōu)先度,因而能夠減少向緩存104的數(shù)據(jù)讀入的過載。
為了進(jìn)一步減少向緩存104的數(shù)據(jù)讀入的過載,可以使用以下這樣的方法。首先,求出所有線程的優(yōu)先度。接著,調(diào)查優(yōu)先度最高的線程的輸入側(cè)FIFO的存儲(chǔ)數(shù)據(jù)量和輸出側(cè)FIFO的存儲(chǔ)數(shù)據(jù)量和它們的變化傾向。
根據(jù)它,判斷是否是該線程的輸入側(cè)FIFO的存儲(chǔ)數(shù)據(jù)量具有增加傾向并且輸出側(cè)FIFO的存儲(chǔ)數(shù)據(jù)量具有減少傾向。在符合該條件的情況下,進(jìn)而調(diào)查是否滿足以下條件輸出側(cè)FIFO的存儲(chǔ)量低于第1閾值,或者輸入側(cè)FIFO的存儲(chǔ)量高于第2閾值中的任意一個(gè)條件。然后,在滿足任意一個(gè)條件的情況下,抑制線程的啟動(dòng)。
另外,本發(fā)明并不只限于上述實(shí)施例的情況,在實(shí)施階段可以在不脫離其宗旨的范圍內(nèi)變形并具體化構(gòu)成要素。本技術(shù)領(lǐng)域的技術(shù)者可以通過研究在此揭示的發(fā)明的詳細(xì)和研究在此揭示的發(fā)明的實(shí)施例,來了解本發(fā)明的其他實(shí)施例。說明書中記載的事項(xiàng)和實(shí)施例只不過是一個(gè)例子,本發(fā)明的真正范圍及其精神由權(quán)利要求揭示。進(jìn)而,也可以適當(dāng)?shù)亟M合不同實(shí)施例中的構(gòu)成要素。
權(quán)利要求
1.一種處理器,是進(jìn)行包含多個(gè)執(zhí)行單位的數(shù)據(jù)處理的處理器,其特征在于包括針對(duì)每個(gè)上述執(zhí)行單位,存儲(chǔ)用于上述各執(zhí)行單位的處理的數(shù)據(jù)、上述各執(zhí)行單位的處理結(jié)果的存儲(chǔ)部件;從上述存儲(chǔ)部件取得上述各執(zhí)行單位的數(shù)據(jù)進(jìn)行處理,并將處理結(jié)果輸出到上述存儲(chǔ)部件的數(shù)據(jù)處理部件;針對(duì)每個(gè)上述執(zhí)行單位判斷上述存儲(chǔ)部件是否保持了用于該執(zhí)行單位的處理的數(shù)據(jù)、以及上述存儲(chǔ)部件是否具有存儲(chǔ)該執(zhí)行單位的處理結(jié)果的空區(qū)域的執(zhí)行單位判斷部件;根據(jù)上述執(zhí)行單位判斷部件的判斷結(jié)果,從上述多個(gè)執(zhí)行單位中決定下一個(gè)應(yīng)該處理的執(zhí)行單位的執(zhí)行單位決定部件。
2.根據(jù)權(quán)利要求1所述的處理器,其特征在于上述存儲(chǔ)部件具有針對(duì)預(yù)先決定的執(zhí)行單位,存儲(chǔ)在該執(zhí)行單位的處理中使用的數(shù)據(jù)的第1存儲(chǔ)部件;存儲(chǔ)使用從上述第1存儲(chǔ)部件取得的數(shù)據(jù)執(zhí)行了該執(zhí)行單位的處理后的處理結(jié)果,同時(shí)在有使用該存儲(chǔ)了的處理結(jié)果的其他執(zhí)行單位的情況下,存儲(chǔ)在該其他執(zhí)行單位的處理中使用的數(shù)據(jù)的第2存儲(chǔ)部件,其中上述執(zhí)行單位判斷部件判斷上述第1存儲(chǔ)部件是否保持了用于執(zhí)行單位的處理的數(shù)據(jù)、上述第2存儲(chǔ)部件是否具有存儲(chǔ)執(zhí)行單位的處理結(jié)果的空區(qū)域。
3.根據(jù)權(quán)利要求2所述的處理器,其特征在于還具備對(duì)各個(gè)上述多個(gè)執(zhí)行單位設(shè)置優(yōu)先順序的優(yōu)先順序設(shè)置部件,上述執(zhí)行單位決定部件根據(jù)由上述優(yōu)先順序設(shè)置部件設(shè)置的優(yōu)先順序,決定應(yīng)該啟動(dòng)的執(zhí)行單位。
4.根據(jù)權(quán)利要求3所述的處理器,其特征在于還具備計(jì)測(cè)上述多個(gè)執(zhí)行單位各自的啟動(dòng)頻率的啟動(dòng)頻率計(jì)測(cè)部件,上述優(yōu)先順序設(shè)置部件根據(jù)通過上述啟動(dòng)頻率計(jì)測(cè)部件計(jì)測(cè)的啟動(dòng)頻率,設(shè)置上述優(yōu)先順序。
5.根據(jù)權(quán)利要求3所述的處理器,其特征在于上述執(zhí)行單位決定部件在上述第1存儲(chǔ)部件在第1執(zhí)行單位的啟動(dòng)過程中保持了用于優(yōu)先順序比該第1執(zhí)行單位高的第2執(zhí)行單位的數(shù)據(jù),并且上述第2存儲(chǔ)部件具有應(yīng)該存儲(chǔ)上述第2執(zhí)行單位的處理結(jié)果的空區(qū)域的情況下,中斷上述第1執(zhí)行單位的啟動(dòng),啟動(dòng)上述第2執(zhí)行單位。
6.根據(jù)權(quán)利要求2所述的處理器,其特征在于上述數(shù)據(jù)處理部件具備設(shè)置了多個(gè)包含所有的各個(gè)執(zhí)行單位所固有的信息的寄存器組的寄存器組群;選擇由上述執(zhí)行單位決定部件決定的執(zhí)行單位使用的上述寄存器組的寄存器組選擇部件;使用通過上述寄存器組選擇部件選擇的寄存器組,進(jìn)行由上述執(zhí)行單位決定部件決定的執(zhí)行單位的處理的運(yùn)算處理部件。
7.根據(jù)權(quán)利要求2所述的處理器,其特征在于具備設(shè)置了多個(gè)包含所有的各個(gè)執(zhí)行單位所固有的信息的寄存器組的寄存器組群;選擇由上述執(zhí)行單位決定部件決定的執(zhí)行單位使用的上述寄存器組的寄存器組選擇部件;使用通過上述寄存器組選擇部件選擇的寄存器組,進(jìn)行由上述執(zhí)行單位決定部件決定的執(zhí)行單位的處理的運(yùn)算處理部件;能夠存儲(chǔ)包含在上述寄存器組群中的任意的寄存器組的內(nèi)容的外部寄存器組存儲(chǔ)部件;在上述外部寄存器組存儲(chǔ)部件存儲(chǔ)了上述執(zhí)行單位使用的寄存器的內(nèi)容的情況下,將包含在上述寄存器組群中的、中斷中或應(yīng)該中斷的執(zhí)行單位所使用的寄存器組的內(nèi)容轉(zhuǎn)送到上述外部寄存器組存儲(chǔ)部件,同時(shí)將數(shù)據(jù)從上述外部寄存器組存儲(chǔ)部件轉(zhuǎn)送到該寄存器組的存儲(chǔ)控制部件。
8.根據(jù)權(quán)利要求7所述的處理器,其特征在于具備判斷由上述執(zhí)行單位決定部件決定的執(zhí)行單位使用的上述寄存器組是否存在于上述寄存器組群中的選中判斷部件,上述寄存器組選擇部件在上述選中判斷部件判斷為存在的情況下,從上述寄存器組群中選擇寄存器組,在上述選中判斷部件判斷為不存在的情況下,選擇保持有從上述外部寄存器組存儲(chǔ)部件轉(zhuǎn)送的數(shù)據(jù)的寄存器組。
9.根據(jù)權(quán)利要求8所述的處理器,其特征在于具備在上述選中判斷部件判斷為不存在時(shí),選擇應(yīng)該保存到上述外部寄存器組存儲(chǔ)部件中的上述寄存器組群的寄存器組的保存寄存器組決定部件,上述存儲(chǔ)控制部件將由上述保存寄存器組決定部件選擇的寄存器組的內(nèi)容轉(zhuǎn)送到上述外部寄存器組存儲(chǔ)部件。
10.根據(jù)權(quán)利要求6所述的處理器,其特征在于上述執(zhí)行單位決定部件在考慮了基于上述執(zhí)行單位判斷部件的判斷結(jié)果的同時(shí),在上述存儲(chǔ)控制部件在上述寄存器組群和上述外部寄存器組存儲(chǔ)部件之間進(jìn)行寄存器組的替換處理的過程中,也不受該替換處理的影響地決定能夠執(zhí)行的執(zhí)行單位,使得能夠進(jìn)行其他執(zhí)行單位的處理。
11.根據(jù)權(quán)利要求6所述的處理器,其特征在于上述存儲(chǔ)控制部件在有必要更新上述外部寄存器組存儲(chǔ)部件的存儲(chǔ)內(nèi)容的情況下,只將上述寄存器組群的有變更的寄存器的值轉(zhuǎn)送到上述外部寄存器組存儲(chǔ)部件。
12.根據(jù)權(quán)利要求6所述的處理器,其特征在于上述存儲(chǔ)控制部件在有必要將數(shù)據(jù)從上述外部寄存器組存儲(chǔ)部件轉(zhuǎn)送到上述寄存器組群的情況下,只將通過其他執(zhí)行單位的執(zhí)行而改寫了上述寄存器組群的寄存器的值的寄存器的內(nèi)容從上述外部寄存器組存儲(chǔ)部件轉(zhuǎn)送到上述寄存器組群。
13.根據(jù)權(quán)利要求6所述的處理器,其特征在于上述存儲(chǔ)控制部件只在與存儲(chǔ)在上述外部寄存器組存儲(chǔ)部件中的寄存器組相同的寄存器組不存在于上述寄存器組群的情況下,將該寄存器組的內(nèi)容轉(zhuǎn)送到上述外部寄存器組存儲(chǔ)部件。
14.一種運(yùn)算處理方法,其特征在于包括將對(duì)某數(shù)據(jù)處理進(jìn)行了時(shí)間分割的處理作為執(zhí)行單位,按每個(gè)該執(zhí)行單位執(zhí)行處理;針對(duì)預(yù)先決定的執(zhí)行單位,將在該執(zhí)行單位的處理中使用的數(shù)據(jù)存儲(chǔ)到第1存儲(chǔ)部件;將使用從上述第1存儲(chǔ)部件取得的數(shù)據(jù)進(jìn)行了該執(zhí)行單位的處理后的處理結(jié)果存儲(chǔ)到第2存儲(chǔ)部件,同時(shí)在有使用該存儲(chǔ)了的處理結(jié)果的其他執(zhí)行單位的情況下,將在該其他執(zhí)行單位的處理中使用的數(shù)據(jù)存儲(chǔ)到上述第2存儲(chǔ)部件;判斷上述第1存儲(chǔ)部件是否保持了用于執(zhí)行單位的處理的數(shù)據(jù)、上述第2存儲(chǔ)部件是否具有存儲(chǔ)執(zhí)行單位的處理結(jié)果的空區(qū)域;根據(jù)該判斷的結(jié)果,從上述多個(gè)執(zhí)行單位中決定下一個(gè)應(yīng)該啟動(dòng)的執(zhí)行單位。
15.一種處理器,其特征在于包括將對(duì)某數(shù)據(jù)處理進(jìn)行了時(shí)間分割的處理作為執(zhí)行單位,按每個(gè)該執(zhí)行單位執(zhí)行處理的數(shù)據(jù)處理部件;存儲(chǔ)在上述數(shù)據(jù)處理部件中應(yīng)該執(zhí)行的執(zhí)行單位所使用的數(shù)據(jù)、或上述數(shù)據(jù)處理部件中的執(zhí)行結(jié)果的多個(gè)存儲(chǔ)部件;根據(jù)存儲(chǔ)在上述多個(gè)存儲(chǔ)部件中的數(shù)據(jù)量,決定使用存儲(chǔ)在各存儲(chǔ)部件中的數(shù)據(jù)的執(zhí)行單位的優(yōu)先度的優(yōu)先度決定部件。
16.根據(jù)權(quán)利要求15記載的處理器,其特征在于上述優(yōu)先度決定部件進(jìn)行決定,使得某存儲(chǔ)部件存儲(chǔ)的數(shù)據(jù)量越多,則從該存儲(chǔ)部件接受應(yīng)該處理的數(shù)據(jù)的執(zhí)行單位的優(yōu)先度越高。
17.根據(jù)權(quán)利要求15記載的處理器,其特征在于上述優(yōu)先度決定部件進(jìn)行決定,使得某存儲(chǔ)部件存儲(chǔ)的數(shù)據(jù)量越多,則將執(zhí)行結(jié)果存儲(chǔ)在該存儲(chǔ)部件中的執(zhí)行單位的優(yōu)先度越低。
18.根據(jù)權(quán)利要求16記載的處理器,其特征在于上述優(yōu)先度決定部件在某執(zhí)行單位接受應(yīng)該處理的數(shù)據(jù)的存儲(chǔ)部件所存儲(chǔ)的數(shù)據(jù)量有增加傾向的第1情況、和該執(zhí)行單位接受應(yīng)該處理的數(shù)據(jù)的存儲(chǔ)部件所存儲(chǔ)的數(shù)據(jù)量有減少傾向的第2情況下,即使上述第1情況下的存儲(chǔ)部件所存儲(chǔ)的數(shù)據(jù)量和上述第2情況下的存儲(chǔ)部件所存儲(chǔ)的數(shù)據(jù)量相同,也將上述第2情況下的從該存儲(chǔ)部件接受應(yīng)該處理的數(shù)據(jù)的執(zhí)行單位的優(yōu)先度設(shè)置為比上述第1情況下的該執(zhí)行單位的優(yōu)先度高。
19.根據(jù)權(quán)利要求17記載的處理器,其特征在于上述優(yōu)先度決定部件在某執(zhí)行單位存儲(chǔ)執(zhí)行結(jié)果的存儲(chǔ)部件所存儲(chǔ)的數(shù)據(jù)量有增加傾向的第1情況、和該執(zhí)行單位存儲(chǔ)執(zhí)行結(jié)果的存儲(chǔ)部件所存儲(chǔ)的數(shù)據(jù)量有減少傾向的第2情況下,即使上述第1情況下的存儲(chǔ)部件所存儲(chǔ)的數(shù)據(jù)量和上述第2情況下的存儲(chǔ)部件所存儲(chǔ)的數(shù)據(jù)量相同,也將上述第1情況下的將執(zhí)行結(jié)果存儲(chǔ)到該存儲(chǔ)部件的執(zhí)行單位的優(yōu)先度設(shè)置為比上述第2情況下的該執(zhí)行單位的優(yōu)先度高。
20.根據(jù)權(quán)利要求15記載的處理器,其特征在于上述優(yōu)先度決定部件在判斷出某存儲(chǔ)部件所存儲(chǔ)的數(shù)據(jù)量超過了該存儲(chǔ)部件的存儲(chǔ)容量的限度時(shí),將從該存儲(chǔ)部件接受應(yīng)該處理的數(shù)據(jù)的執(zhí)行單位設(shè)置為最高的優(yōu)先度。
21.根據(jù)權(quán)利要求15記載的處理器,其特征在于上述優(yōu)先度決定部件在判斷出某存儲(chǔ)部件所存儲(chǔ)的數(shù)據(jù)量超過了該存儲(chǔ)部件的存儲(chǔ)容量的限度時(shí),把將執(zhí)行結(jié)果存儲(chǔ)到該存儲(chǔ)部件的執(zhí)行單位設(shè)置為最低的優(yōu)先度。
22.一種優(yōu)先度決定方法,其特征在于包括將對(duì)某數(shù)據(jù)處理進(jìn)行了時(shí)間分割的處理作為執(zhí)行單位,對(duì)每個(gè)該執(zhí)行單位執(zhí)行處理;將應(yīng)該被執(zhí)行的執(zhí)行單位使用的數(shù)據(jù)、或執(zhí)行單位中的執(zhí)行結(jié)果存儲(chǔ)到多個(gè)存儲(chǔ)裝置中;根據(jù)存儲(chǔ)在上述多個(gè)存儲(chǔ)部件中的數(shù)據(jù)量,決定使用存儲(chǔ)在各存儲(chǔ)部件中的數(shù)據(jù)的執(zhí)行單位的優(yōu)先度。
23.根據(jù)權(quán)利要求16記載的處理器,其特征在于上述執(zhí)行單位至少包含第1執(zhí)行單位和第2執(zhí)行單位,上述多個(gè)存儲(chǔ)部件至少包含存儲(chǔ)在上述第1執(zhí)行單位中使用的數(shù)據(jù)的第1存儲(chǔ)部件、存儲(chǔ)在上述第2執(zhí)行單位中使用的數(shù)據(jù)的第2存儲(chǔ)部件,上述優(yōu)先度決定部件在滿足以下所有條件的情況下,將第1執(zhí)行單位的優(yōu)先度設(shè)置得比第2執(zhí)行單位的優(yōu)先度低(a)第1存儲(chǔ)部件的數(shù)據(jù)量和第2存儲(chǔ)部件的數(shù)據(jù)量相等;(b)第1存儲(chǔ)部件的數(shù)據(jù)量有增加傾向;(c)第2存儲(chǔ)部件的數(shù)據(jù)量有減少傾向。
24.根據(jù)權(quán)利要求17記載的處理器,其特征在于上述執(zhí)行單位至少包含第1執(zhí)行單位和第2執(zhí)行單位,上述多個(gè)存儲(chǔ)部件至少包含存儲(chǔ)上述第1執(zhí)行單位的處理結(jié)果的第1存儲(chǔ)部件、存儲(chǔ)上述第2執(zhí)行單位的處理結(jié)果的第2存儲(chǔ)部件,上述優(yōu)先度決定部件在滿足以下所有條件的情況下,將第1執(zhí)行單位的優(yōu)先度設(shè)置得比第2執(zhí)行單位的優(yōu)先度高(a)第1存儲(chǔ)部件的數(shù)據(jù)量和第2存儲(chǔ)部件的數(shù)據(jù)量相等;(b)第1存儲(chǔ)部件的數(shù)據(jù)量有增加傾向;(c)第2存儲(chǔ)部件的數(shù)據(jù)量有減少傾向。
全文摘要
本發(fā)明相關(guān)的處理器具備以下部件數(shù)據(jù)處理部件將對(duì)某數(shù)據(jù)時(shí)間分割為至少一個(gè)以上的處理作為執(zhí)行單位,對(duì)每個(gè)該執(zhí)行單位執(zhí)行處理;第1存儲(chǔ)部件針對(duì)預(yù)先決定的執(zhí)行單位存儲(chǔ)在該執(zhí)行單位的處理中使用的數(shù)據(jù);第2存儲(chǔ)部件存儲(chǔ)使用從第1存儲(chǔ)部件取得的數(shù)據(jù)進(jìn)行了該執(zhí)行單位的處理后的處理結(jié)果,同時(shí)在有使用該存儲(chǔ)的處理結(jié)果的其他執(zhí)行單位的情況下,存儲(chǔ)在該其他執(zhí)行單位的處理中使用的數(shù)據(jù);執(zhí)行單位判斷部件判斷第1存儲(chǔ)部件是否保持了用于執(zhí)行單位的處理的數(shù)據(jù)、以及第2存儲(chǔ)部件是否具有存儲(chǔ)執(zhí)行單位的處理結(jié)果的空區(qū)域;執(zhí)行單位決定部件根據(jù)執(zhí)行單位判斷部件的判斷結(jié)果,從多個(gè)執(zhí)行單位中決定下一個(gè)應(yīng)該啟動(dòng)的執(zhí)行單位。
文檔編號(hào)G06F9/30GK1517869SQ20041000207
公開日2004年8月4日 申請(qǐng)日期2004年1月9日 優(yōu)先權(quán)日2003年1月9日
發(fā)明者鏑木智, 宮本幸昌, 菅野伸一, 樽家昌也, 大根田拓, 一, 也, 拓, 昌 申請(qǐng)人:株式會(huì)社東芝