多線程處理器的制造方法
【專利摘要】本發(fā)明涉及多線程處理器。調(diào)度器執(zhí)行用于重復(fù)下述處理的線程調(diào)度,所述處理是指:以對包含在多個(gè)硬件線程當(dāng)中的第一組之中的每個(gè)硬件線程所預(yù)先設(shè)置的次數(shù)來指定該每個(gè)硬件線程,并且以對包括其它硬件線程的第二組所預(yù)先設(shè)置的次數(shù)來指定第二組中的硬件線程中的任何一個(gè)。此外,當(dāng)線程調(diào)度所指定的第一組中的硬件線程是不可分派的時(shí),所述調(diào)度器執(zhí)行用于重新指定第二組中的硬件線程以代替第一組中的硬件線程的再調(diào)度。
【專利說明】多線程處理器
[0001]相關(guān)申請的交叉引用
[0002]于2012年10月17日提交的包括說明書、附圖、以及摘要的日本專利申請N0.2012 - 230234的公開完整地通過引用包含在此。
【技術(shù)領(lǐng)域】
[0003]本發(fā)明涉及一種例如在具有多個(gè)硬件線程的多線程處理器中對多個(gè)硬件線程進(jìn)行調(diào)度的技術(shù)。
【背景技術(shù)】
[0004]已提出了用于提高處理器的吞吐量的硬件多線程技術(shù)。支持硬件多線程的處理器(在下文中稱作多線程處理器)具有分別生成相互獨(dú)立的指令流的多個(gè)硬件線程,并且在執(zhí)行指令的算術(shù)運(yùn)算電路與流水線之間切換以對硬件線程所生成的指令流進(jìn)行處理的同時(shí)執(zhí)行算術(shù)處理。
[0005]在多線程處理器中,需要調(diào)度多個(gè)硬件線程。作為調(diào)度技術(shù),輪詢系統(tǒng)和優(yōu)先級系統(tǒng)是已知的。在輪詢系統(tǒng)中,在每個(gè)固定時(shí)間依次選擇放置在隊(duì)列中的硬件線程并執(zhí)行。因此,在輪詢系統(tǒng)中,在每個(gè)固定時(shí)間將隊(duì)列中的線程公平地分配給CPU并執(zhí)行。此外,優(yōu)先級系統(tǒng)按照硬件線程的優(yōu)先級執(zhí)行硬件線程。具體地說,在優(yōu)先級系統(tǒng)中,每個(gè)優(yōu)先級的硬件線程排隊(duì)到為每個(gè)優(yōu)先級所提供的隊(duì)列中,并且從高優(yōu)先級的隊(duì)列順序地選擇硬件線程并將其分配給CPU以執(zhí)行。
[0006]然而,作為輪詢系統(tǒng)和優(yōu)先級系統(tǒng)共有的問題,存在不可能在確保硬件線程的最小執(zhí)行時(shí)間的同時(shí)靈活地設(shè)置硬件線程的執(zhí)行時(shí)間這樣的問題。例如,在輪詢系統(tǒng)中,當(dāng)存在多個(gè)硬件線程時(shí),存在每個(gè)線程的執(zhí)行時(shí)間同等地降低并且無法將足夠的執(zhí)行時(shí)間分配給高優(yōu)先級硬件線程這樣的問題。此外,在優(yōu)先級系統(tǒng)中,存在當(dāng)繼續(xù)對高優(yōu)先級硬件線程的處理時(shí)無法對低優(yōu)先級硬件線程進(jìn)行處理這樣的問題。
[0007]在日本特許專利公開N0.2010 - 86128中公開了用于解決該問題的技術(shù)。該技術(shù)將調(diào)度的一個(gè)循環(huán)時(shí)段劃分成第一執(zhí)行時(shí)段和第二執(zhí)行時(shí)段,指定在第一執(zhí)行時(shí)段中執(zhí)行從多線程處理器的多個(gè)硬件線程當(dāng)中固定選擇的一個(gè)或多個(gè)硬件線程,并且指定在第二執(zhí)行時(shí)段中執(zhí)行任意硬件線程。多線程處理器中的調(diào)度器通過重復(fù)這種循環(huán)時(shí)段來執(zhí)行調(diào)度。
[0008]對于應(yīng)用該技術(shù)的多線程處理器,例如在第一執(zhí)行時(shí)段中,定義想要確保其最小執(zhí)行時(shí)間的硬件線程,并且在第二執(zhí)行時(shí)段中,根據(jù)當(dāng)時(shí)的處理狀況來定義任意硬件線程。通過這樣做,執(zhí)行將在第一執(zhí)行時(shí)段中執(zhí)行的硬件線程而不管其它硬件線程的優(yōu)先級。此夕卜,可在第二執(zhí)行時(shí)段中執(zhí)行任意硬件線程。
【發(fā)明內(nèi)容】
[0009]在諸如汽車控制這樣的領(lǐng)域中,必須執(zhí)行調(diào)度使得多個(gè)硬件線程當(dāng)中的一些硬件線程(在下文中稱作“第一組”)的執(zhí)行時(shí)間與其它硬件線程(在下文中稱作“第二組”)的執(zhí)行時(shí)間的比率可以是恒定的并且包含在上述第一組之中的硬件線程之間的執(zhí)行時(shí)間的比率可以是恒定的。
[0010]例如,假如存在Al、A2、B1、B2、以及B3這五個(gè)硬件線程,Al和A2屬于組A,并且B1、B2、以及B3屬于組B。此外,考慮下述情況,即執(zhí)行調(diào)度使得組A與組B的執(zhí)行時(shí)間的比率可以是“1:1”并且組A中的各自硬件線程(Al,A2)之間的執(zhí)行時(shí)間的比率可以變?yōu)椤?:1”。也就是說,Al的執(zhí)行時(shí)間、A2的執(zhí)行時(shí)間、以及執(zhí)行組B中的任何一個(gè)(B1,B2,B3)的時(shí)間的比率是“1:1:2”。
[0011]為了實(shí)現(xiàn)這種調(diào)度,可以想得到在日本特許專利申請公開N0.2010 - 86128中所公開的技術(shù)的申請。例如,將Al和A2定義到第一執(zhí)行時(shí)段,并且將B1、B2、以及B3定義到第二執(zhí)行時(shí)段。其結(jié)果是,重復(fù)執(zhí)行“對Al的指定、對A2的指定、以及對組B的硬件線程中的任何一個(gè)的指定”這樣的調(diào)度,使得以設(shè)計(jì)者所設(shè)計(jì)的比率來執(zhí)行對硬件線程的執(zhí)行。
[0012]然而,由于諸如等待其速度低于CPU的I/O讀取(在下文中簡稱為“I/O等待〃)這樣的各種危險(xiǎn),因此硬件線程不必總是處于可分派狀態(tài)。另一方面,通過上述技術(shù),在第一執(zhí)行時(shí)段中確定地指定在第一執(zhí)行時(shí)段中所定義的硬件線程。因此,存在當(dāng)在第一執(zhí)行時(shí)間中所定義的硬件是不可分派時(shí)將指定它這樣的可能性。例如,當(dāng)Al是不可分派時(shí)可能指定Al。
[0013]該狀況引起了在流水線上出現(xiàn)了沒有東西處理的步驟并且CPU的處理效率將降低這樣的問題。附帶地,還將流水線上的一步稱為一個(gè)執(zhí)行時(shí)隙,并且在下文中還將流水線上出現(xiàn)沒有東西處理的步驟這樣的狀況稱作在執(zhí)行時(shí)隙中出現(xiàn)的空閑。
[0014]此外,還存在由于這種事情的累積而使以所設(shè)計(jì)的比率執(zhí)行這些硬件線程變得不可能這樣的問題。
[0015]從對該說明書的描述以及附圖可顯而易見地得知其它問題和新特征。
[0016]根據(jù)一個(gè)實(shí)施例,多線程處理器具有:多個(gè)硬件線程,用于分別生成相互獨(dú)立的指令流;以及調(diào)度器,用于指定多個(gè)硬件線程當(dāng)中的接下來將要執(zhí)行的硬件線程。
[0017]所述調(diào)度器執(zhí)行線程調(diào)度和再調(diào)度。在線程調(diào)度中,調(diào)度器重復(fù)下述處理,所述處理是指:以對包含在多個(gè)硬件線程當(dāng)中的第一組之中的每個(gè)硬件線程所預(yù)先設(shè)置的次數(shù)來指定該每個(gè)硬件線程,并且以對包括其它硬件線程的第二組所預(yù)先設(shè)置的次數(shù)來指定第二組中的硬件線程中的任何一個(gè)。
[0018]當(dāng)線程調(diào)度所指定的第一組中的硬件線程是不可分派的時(shí),所述調(diào)度器執(zhí)行再調(diào)度。再調(diào)度是指定第二組中的硬件線程以代替不可分派執(zhí)行的上述硬件線程這樣的處理。
[0019]附帶地,通過由方法、系統(tǒng)等等來替代根據(jù)上述實(shí)施例的裝置所表示的也是有效的以作為本發(fā)明的模式。
[0020]根據(jù)一個(gè)實(shí)施例,可以以所設(shè)計(jì)的比率來執(zhí)行多線程處理器中的多個(gè)硬件線程并且可防止多線程處理器的性能衰減。
【專利附圖】
【附圖說明】
[0021]圖1是示出了根據(jù)第一實(shí)施例的處理器系統(tǒng)的示意圖;
[0022]圖2是示出了圖1所示的處理器系統(tǒng)中的多線程處理器的調(diào)度器的電路配置的一個(gè)示例的示意圖;
[0023]圖3是示出了圖2所示的調(diào)度器中的線程控制寄存器的時(shí)隙的配置的一個(gè)示例的示意圖;
[0024]圖4是示出了圖2所示的調(diào)度器中的再調(diào)度器的電路配置的一個(gè)示例的示意圖;
[0025]圖5是示出了當(dāng)假定不存在再調(diào)度器時(shí)圖2所示的調(diào)度器的電路配置的一個(gè)示例的不意圖;
[0026]圖6是圖5所示的調(diào)度器進(jìn)行的調(diào)度的一個(gè)示例的示意圖;
[0027]圖7是示出了圖2所示的調(diào)度器進(jìn)行的調(diào)度的一個(gè)示例的示意圖;
[0028]圖8是示出了根據(jù)第二實(shí)施例的處理器系統(tǒng)中的調(diào)度器的示意圖;
[0029]圖9是示出了圖8所示的調(diào)度器中的第一恢復(fù)調(diào)度器的電路配置的一個(gè)示例的示意圖;
[0030]圖10是示出了圖8所示的調(diào)度器進(jìn)行的調(diào)度的一個(gè)示例的示意圖;
[0031]圖11是示出了根據(jù)第三實(shí)施例的處理器系統(tǒng)中的調(diào)度器的示意圖;
[0032]圖12是示出了圖11所示的調(diào)度器中的第二恢復(fù)調(diào)度器的電路配置的一個(gè)示例的示意圖;
[0033]圖13是示出了圖11所示的調(diào)度器進(jìn)行的調(diào)度的一個(gè)示例的示意圖;
[0034]圖14是為了對第四實(shí)施例進(jìn)行說明而示出了圖8所示的調(diào)度器進(jìn)行的調(diào)度的另一個(gè)示例的示意圖;以及
[0035]圖15是示出了第四實(shí)施例的調(diào)度器進(jìn)行的調(diào)度的一個(gè)示例的示意圖。
【具體實(shí)施方式】
[0036]為了使說明易懂,以下描述和附圖將受到適當(dāng)?shù)睾喛s和簡化。此外,在附圖中被描述為用于執(zhí)行各種處理的功能塊的每個(gè)部件就硬件而言可是由CPU、存儲器、以及其它電路配置而成的并且就軟件而言是通過加載到存儲器之中的程序來實(shí)現(xiàn)的。因此,所屬【技術(shù)領(lǐng)域】的專業(yè)人員明白這些功能塊可是由僅硬件、僅軟件、或者其組合的各種形式來實(shí)現(xiàn)的,并且不局限于它們中的任何一個(gè),除非存在特別說明。附帶地,在每個(gè)附圖中,將相同符號給予相同部件并且根據(jù)需要省略重復(fù)說明。
[0037]此外,可利用各種形式的非暫時(shí)性計(jì)算機(jī)可讀介質(zhì)來存儲上述程序,并且可將其提供給計(jì)算機(jī)。非暫時(shí)性計(jì)算機(jī)可讀介質(zhì)包括各種形式的有形存儲介質(zhì)。非暫時(shí)性計(jì)算機(jī)可讀介質(zhì)的示例包括磁記錄介質(zhì)(例如軟磁盤、磁帶、硬盤驅(qū)動器)、光磁記錄介質(zhì)(例如磁光盤)、CD-ROM (只讀存儲器)、CD-R、CD-R/W、以及半導(dǎo)體存儲器(例如掩模ROM、PROM (可編程ROM)、EPROM (可擦PROM)、閃存ROM、RAM (隨機(jī)存取存儲器))。此外,可以通過各種形式的暫時(shí)性計(jì)算機(jī)可讀介質(zhì)將該程序提供給計(jì)算機(jī)。暫時(shí)性計(jì)算機(jī)可讀介質(zhì)的示例包括電信號、光信號、以及電磁波。暫時(shí)性計(jì)算機(jī)可讀介質(zhì)可通過電線、光纖等等的有線通信路徑或者無線電通信路徑將程序提供給計(jì)算機(jī)。
[0038]第一實(shí)施例
[0039]圖1是示出了根據(jù)第一實(shí)施例的處理器系統(tǒng)100的示意圖。處理器系統(tǒng)100具有通過系統(tǒng)總線120耦合的存儲器110和多線程處理器130。附帶地,雖然未說明,但是諸如輸入/輸出接口這樣的其它電路與系統(tǒng)總線120相耦合。[0040]多線程處理器130具有多個(gè)硬件線程。硬件線程是用于根據(jù)內(nèi)置在多線程處理器130中的線程程序計(jì)數(shù)器所輸出的取指地址來生成包括從指令存儲器所讀取的一系列指令組的指令流的系統(tǒng),并且包括諸如線程程序計(jì)數(shù)器、指令存儲器、通用寄存器、以及控制寄存器這樣的電路組(在該實(shí)施例中6應(yīng)內(nèi)置在流水線控制電路160中)。在該實(shí)施例中,多線程處理器130具有多個(gè)線程程序計(jì)數(shù)器,并且實(shí)現(xiàn)了其數(shù)目與線程程序計(jì)數(shù)器的數(shù)目相同的硬件線程。
[0041]如在附圖中所說明的,多線程處理器130具有算術(shù)運(yùn)算電路140、中斷控制器150、PC生成電路152、線程程序計(jì)數(shù)器TPCO至TPC4、選擇器154、指令存儲器156、指令緩沖器158、流水線控制電路160、取指控制器162、選擇器164、以及調(diào)度器200。
[0042]算術(shù)運(yùn)算電路140根據(jù)選擇器164所選的硬件線程所生成的指令來執(zhí)行數(shù)據(jù)處理。更具體地說,算術(shù)運(yùn)算電路140具有指令解碼器142、執(zhí)行單元144、以及數(shù)據(jù)寄存器146。
[0043]指令解碼器142對所接收到的指令進(jìn)行解碼并且將算術(shù)運(yùn)算控制信號SC輸出到執(zhí)行單元144。此外,指令解碼器142輸出用于根據(jù)指令的解碼結(jié)果來表示數(shù)據(jù)的存儲位置的數(shù)據(jù)寄存器地址Radd和數(shù)據(jù)寄存器地址Wadd。
[0044]執(zhí)行單元144響應(yīng)算術(shù)運(yùn)算控制信號SC而執(zhí)行各種類型的運(yùn)算。附帶地,執(zhí)行單元144具有多個(gè)執(zhí)行階段,并且通過流水線處理來執(zhí)行算術(shù)運(yùn)算。此外,根據(jù)運(yùn)算結(jié)果的類型將在執(zhí)行單元144中所執(zhí)行的運(yùn)算結(jié)果傳送到PC生成電路152、存儲器110、以及數(shù)據(jù)寄存器146。
[0045]數(shù)據(jù)寄存器146存儲將在執(zhí)行單元144中所使用的數(shù)據(jù)并且輸出數(shù)據(jù)寄存器地址Radd所指定的地址的數(shù)據(jù)。在圖1所示的示例中,數(shù)據(jù)寄存器146根據(jù)數(shù)據(jù)寄存器地址Radd而輸出數(shù)據(jù)a和數(shù)據(jù)b。此外,數(shù)據(jù)寄存器146將執(zhí)行單元144輸出的運(yùn)算結(jié)果存儲到數(shù)據(jù)寄存器地址Wadd所指定的地址上。
[0046]中斷控制器150響應(yīng)中斷請求信號將用于指示執(zhí)行中斷處理的中斷指示信號輸出到多線程處理器130之中。更具體地說,當(dāng)接收到中斷請求信號時(shí),中斷控制器150確定中斷因素、中斷處理的優(yōu)先級等等,并且指示PC生成電路152和流水線控制電路160執(zhí)行中斷處理使得它們可以執(zhí)行與該中斷因素相關(guān)的處理。除了多線程處理器130所輸出的之夕卜,還從除多線程處理器130之外的電路輸出中斷請求。
[0047]PC生成電路152生成程序計(jì)數(shù)器的更新值(在下文中稱作“程序計(jì)數(shù)更新值”)。它接收通過系統(tǒng)總線120所輸入的新程序指令信號、中斷控制器150所輸出的中斷指示信號、以及基于執(zhí)行單元144中的處理所輸出的分支指示信號,并且生成程序計(jì)數(shù)更新值。PC生成電路152將所生成的程序計(jì)數(shù)更新值給予線程程序計(jì)數(shù)器TPCO至TPC4中的任何一個(gè)。附帶地,PC生成電路152還具有判斷所生成的程序計(jì)數(shù)更新值應(yīng)給予哪個(gè)線程程序計(jì)數(shù)器這樣的功能。
[0048]線程程序計(jì)數(shù)器TPCO至TPC4分別生成指令存儲器156的地址(每一個(gè)被稱作“取指地址Madd”),其中存儲要處理的指令。具體地說,當(dāng)從PC生成電路152給出程序計(jì)數(shù)更新值時(shí),線程程序計(jì)數(shù)器TPCO至TPC4根據(jù)程序計(jì)數(shù)更新值來更新取指地址Madd。另一方面,當(dāng)沒有輸入程序計(jì)數(shù)更新值時(shí),線程程序計(jì)數(shù)器TPCO至TPC4按照升序來計(jì)算地址并且找到連續(xù)的下一取指地址頂add。[0049]附帶地,作為示例,在圖1中,假定線程程序計(jì)數(shù)器的數(shù)目為五個(gè)(TPC0至TPC4),并且還將多線程處理器130中的硬件線程的數(shù)目設(shè)置為五個(gè)。線程程序計(jì)數(shù)器和硬件線程的數(shù)目不局限于五個(gè)。
[0050]選擇器154根據(jù)取指控制器162所輸出的線程指定信號來選擇線程程序計(jì)數(shù)器TPCO至TPC4中的任何一個(gè)并且輸出所選程序計(jì)數(shù)器輸出的取指地址Madd。附帶地,在圖1中,給予選擇器154的輸入端的數(shù)字O至4分別表示硬件線程編號。
[0051]附帶地,假定硬件線程A1、A2、以及BI至B3分別給定編號0、1、2、3和4。
[0052]指令存儲器156是多線程處理器130的全部硬件線程(在該實(shí)施例中五個(gè))共享的存儲器區(qū)域,并且將在多線程處理器130中所執(zhí)行的算術(shù)運(yùn)算中所使用的各種指令存儲在其中。
[0053]還將取指控制器162輸出的線程指定信號輸入到指令存儲器156中。指令存儲器156根據(jù)取指控制器162輸出的線程指定信號來分配通過選擇器154輸入的取指地址IMadd所指定的指令的輸出目的地。
[0054]在該實(shí)施例中,指令緩沖器158具有與線程程序計(jì)數(shù)器TPCO至TPC4相對應(yīng)的指令緩沖器區(qū)域BUFO至BUF4。指令存儲器156將指令輸出到指令緩沖器區(qū)域BUFO至BUF4當(dāng)中的與取指控制器162輸出的線程指定信號相對應(yīng)的區(qū)域。附帶地,指令存儲器156可以是包含在存儲器110之中的預(yù)定存儲器區(qū)域。
[0055]指令緩沖器區(qū)域BUR)至BUF4是FIFO (先進(jìn)先出)形式的緩沖器電路。此外,指令緩沖器區(qū)域BUR)至BUF4可以分別是其每一個(gè)是單個(gè)緩沖器中的區(qū)域的劃分部分的一個(gè)或者可以形成于不同緩沖器中。
[0056]流水線控制電路160對存儲在指令緩沖器158的頭部中的指令以及當(dāng)前在執(zhí)行單元144中執(zhí)行的指令進(jìn)行監(jiān)控。此后,當(dāng)將中斷指示信號從中斷控制器150輸入到流水線控制電路160中時(shí),它向指令緩沖器158和執(zhí)行單元144發(fā)出丟棄屬于與中斷處理有關(guān)的硬件線程的指令這樣的指示。
[0057]取指控制器162根據(jù)存儲在指令緩沖器158中的指令編號來判斷屬于應(yīng)取出的任何硬件線程的指令,并且根據(jù)其判斷結(jié)果將線程指定信號輸出到選擇器154。例如,當(dāng)存儲在指令緩沖器區(qū)域BUFO中的指令隊(duì)列的數(shù)目小于存儲在其它指令緩沖器區(qū)域中的指令隊(duì)列的數(shù)目時(shí),取指控制器162判斷出應(yīng)取出屬于N0.0的硬件線程的指令并且輸出表示N0.0的硬件線程的線程指定信號。由此,選擇器154選擇線程程序計(jì)數(shù)器TPC0。附帶地,取指控制器162可以通過利用諸如輪詢系統(tǒng)這樣的傳統(tǒng)已知的任何系統(tǒng)的過程來決定要選擇的硬件線程。
[0058]選擇器164根據(jù)調(diào)度器200輸出的線程選擇信號TSEL來選擇指令緩沖器區(qū)域BUR)至BUF4中的任何一個(gè)并且將從所選的指令緩沖器區(qū)域所讀取的指令輸出到算術(shù)運(yùn)算電路140。也就是說,選擇器164根據(jù)線程選擇信號TSEL從多個(gè)硬件線程當(dāng)中選擇一個(gè)硬件線程并且將所選硬件線程輸出的指令輸出到算術(shù)運(yùn)算電路140。附帶地,給予選擇器164的輸入端的數(shù)字O至4分別表示硬件線程編號。
[0059]調(diào)度器200基于預(yù)先設(shè)置的調(diào)度來輸出用于指定五個(gè)硬件線程當(dāng)中的要在下一執(zhí)行周期中執(zhí)行的一個(gè)硬件線程的線程選擇信號TSEL。在多線程處理器130中,該調(diào)度由多線程處理器130的用戶,即在多線程處理器130上運(yùn)算的程序的設(shè)計(jì)者來設(shè)計(jì),并且例如由在多線程處理器130開始之后立即執(zhí)行的管理程序來建立。
[0060]為了便于下面的說明,將多線程處理器130中的五個(gè)硬件線程(編號:0至4)分別指定為A1、A2、B1、B2、B3。Al和A2例如是實(shí)時(shí)線程并且形成了第一組。BI至B3是除了實(shí)時(shí)線程之外的線程(非實(shí)時(shí)線程)并且形成了第二組。
[0061]附帶地,在下面的說明和每個(gè)附圖中,諸如“Al”和“B2”這樣的A或B后面是數(shù)字的標(biāo)號表示相關(guān)硬件線程,并且諸如“A”和“B”這樣的后面沒有數(shù)字的標(biāo)號表示相關(guān)組中的任何一個(gè)硬件線程。例如,“Al”和“B2”分別表示硬件線程Al和硬件線程B2,并且“A”和“B”分別表示第一組中的任何一個(gè)硬件線程(硬件線程Al或硬件線程A2)以及第二組中的任何一個(gè)硬件線程(硬件線程BI或硬件線程B2)。
[0062]將上述調(diào)度設(shè)置使得Al的執(zhí)行時(shí)間、A2的執(zhí)行時(shí)間、以及B的執(zhí)行時(shí)間的比率可以變?yōu)楣潭?。舉例來說,假定將該比率設(shè)置為“1:1:2”。
[0063]在該實(shí)施例中調(diào)度器200執(zhí)行的調(diào)度包括線程調(diào)度和再調(diào)度。在這里,將對線程調(diào)度和再調(diào)度進(jìn)行具體說明。
[0064]線程調(diào)度
[0065]線程調(diào)度是反復(fù)地執(zhí)行預(yù)先設(shè)置的調(diào)度這樣的調(diào)度。在線程調(diào)度中,調(diào)度器200指定硬件線程使得可以進(jìn)行一次“對Al的指定”,可以進(jìn)行一次“對A2的指定”,并且可以進(jìn)行兩次“對B的指定(B1、B2、以及B3中的任何一個(gè))”。
[0066]再調(diào)度
[0067]當(dāng)雖然通過上述線程調(diào)度將A (Al或A2)指定為接下來要執(zhí)行的硬件線程,但是所指定的硬件線程是不可分派時(shí),執(zhí)行再調(diào)度。使硬件線程不可分派的因素包括例如I/O
寸忖寸寸。
[0068]在再調(diào)度中,調(diào)度器200重新指定第二組中的硬件線程中的任何一個(gè)(硬件線程B)以代替線程調(diào)度所指定的硬件線程A。
[0069]也就是說,調(diào)度器200執(zhí)行原則上重復(fù)預(yù)先設(shè)置的調(diào)度這樣的調(diào)度(線程調(diào)度)。此后,當(dāng)雖然線程調(diào)度指定了硬件線程A,但是硬件線程A是不可分派時(shí),調(diào)度器200指定硬件線程B以代替硬件線程A。因此,即使當(dāng)線程調(diào)度所指定的硬件線程A是不可分派時(shí),可避免在執(zhí)行時(shí)隙中出現(xiàn)空閑。
[0070]也就是說,調(diào)度器200實(shí)現(xiàn)了根據(jù)預(yù)先設(shè)置的調(diào)度通過調(diào)度確保了每個(gè)線程的執(zhí)行時(shí)間并且避免了多線程處理器130的性能衰減這兩個(gè)最好效果。
[0071]在這里,應(yīng)該注意到當(dāng)在再調(diào)度中時(shí)所指定的代替硬件線程A (例如Al)的硬件線程不是其它硬件線程A (例如A2)而是硬件線程B。
[0072]多線程處理器130的設(shè)計(jì)者期望實(shí)現(xiàn)硬件線程Al、A2和B的執(zhí)行次數(shù)的比率是“1:1:2”。也就是說,在四次執(zhí)行中,一次指定Al,一次指定A2,并且兩次指定B。
[0073]在當(dāng)線程調(diào)度所指定的硬件線程Al是不可分派時(shí)重新指定硬件線程A2以代替硬件線程Al的情況下,在循環(huán)時(shí)段中將零次指定Al,將兩次指定A2,并且將兩次指定B?,F(xiàn)在,在這種情況下,硬件線程A2的執(zhí)行比率將變化。
[0074]另一方面,根據(jù)該實(shí)施例中的調(diào)度器200,當(dāng)線程調(diào)度所指定的硬件線程Al是不可分派時(shí),因?yàn)橹匦轮付ㄓ布€程B以代替硬件線程Al,因此將零次指定Al,將一次指定A2,并且將三次指定B。[0075]包含在第一組之中的硬件線程Al和硬件線程A2是這樣的硬件線程,該硬件線程的執(zhí)行比率被有意地確保為大于第二組的所述每個(gè)硬件線程。附帶地,“確保執(zhí)行比率”不但包括“不降低執(zhí)行時(shí)間”而且還包括“不過度地增加執(zhí)行時(shí)間”。因此,用于當(dāng)線程調(diào)度所指定的硬件線程Al是不可分派時(shí)重新指定硬件線程B以代替硬件線程Al的調(diào)度器200可執(zhí)行下述硬件線程,所述硬件線程的執(zhí)行比率被有意地尤其確保為是更接近于設(shè)計(jì)者首先有意設(shè)計(jì)的硬件線程的執(zhí)行比率的比率。
[0076]參考圖2,將對調(diào)度器200的特定電路配置的一個(gè)示例進(jìn)行說明。在圖2所示的示例中,調(diào)度器200具有第一調(diào)度器210、再調(diào)度器220、選擇器222、線程狀態(tài)管理單元230、第二調(diào)度器240、以及選擇器250。第一調(diào)度器210、第二調(diào)度器240、以及選擇器250承擔(dān)上述線程調(diào)度,并且再調(diào)度器220和線程狀態(tài)管理單元230承擔(dān)上述再調(diào)度。
[0077]第一調(diào)度器210輸出用于對第一組和第二組進(jìn)行切換的選擇信號REALO并且輸出硬件線程編號。在下面,將第一調(diào)度器210輸出的編號稱作“第一編號SN1”。
[0078]如上所述,作為示例,第一組中的每個(gè)硬件線程是實(shí)時(shí)線程,并且第二組中的每個(gè)硬件線程是非實(shí)時(shí)線程。因此,在下面還將選擇信號REALO稱作“實(shí)時(shí)位信號”。此外,實(shí)時(shí)位信號REALO分別通過“I”和“O”來表示第一組和第二組。
[0079]如在附圖中所說明的,第一調(diào)度器210具有線程控制寄存器211、計(jì)數(shù)器212、計(jì)數(shù)最大值存儲部分213、比較器電路214、以及選擇器215。
[0080]線程控制寄存器211具有其計(jì)數(shù)等于或大于在一個(gè)循環(huán)時(shí)段中所指定的硬件線程的總數(shù)目(在這里四個(gè))的時(shí)隙(在所說明的示例中八個(gè)時(shí)隙SLTO至SLT7)。如圖3所示,每個(gè)時(shí)隙具有用于存儲硬件線程編號的編號存儲部分以及用于當(dāng)選擇了該時(shí)隙時(shí)存儲表不實(shí)時(shí)位信號的邏輯電平的標(biāo)志(即實(shí)時(shí)位信號REALO的值)的實(shí)時(shí)位存儲部分。
[0081]在該實(shí)施例中,分別在時(shí)隙SLTO和時(shí)隙SLT2中存儲“I”以作為表示實(shí)時(shí)位信號REALO的邏輯電平的標(biāo)志,并且將“O”(Al)和“I”(A2)存儲在其中以分別表示硬件線程編號。
[0082]此外,分別在時(shí)隙SLTl和時(shí)隙SLT3中存儲“O”以作為表示實(shí)時(shí)位信號REALO的邏輯電平的標(biāo)志。如將通過隨后說明所知,當(dāng)選擇了用于存儲“O”以作為標(biāo)志的時(shí)隙時(shí),還輸出在該時(shí)隙中所存儲的硬件線程編號以作為第一編號SN1,但是此時(shí)不使用第一編號SN1。因此,在時(shí)隙SLTl和時(shí)隙SLT3中可以存儲任意值以作為硬件線程編號。
[0083]此外,在該示例的情況下,因?yàn)椴皇褂脮r(shí)隙SLT4至?xí)r隙LT7,因此將任意值存儲在其中。
[0084]計(jì)數(shù)器212以預(yù)定間隔更新計(jì)數(shù)值CNT。具體地說,該實(shí)施例中的計(jì)數(shù)器212與多線程處理器130的運(yùn)算時(shí)鐘(未說明)相同步地對計(jì)數(shù)值CNT計(jì)數(shù)。
[0085]計(jì)數(shù)最大值存儲部分213存儲用于定義計(jì)數(shù)器212的計(jì)數(shù)值CNT的上限的計(jì)數(shù)最大值CNTM。該計(jì)數(shù)最大值CNTM是調(diào)度器200在一個(gè)循環(huán)時(shí)段中所指定的硬件線程數(shù)目,并且在這里將其設(shè)置為“4”。
[0086]比較器電路214對計(jì)數(shù)值CNT與計(jì)數(shù)最大值CNTM進(jìn)行比較,并且當(dāng)計(jì)數(shù)值CNT和計(jì)數(shù)最大值CNTM相同時(shí),它輸出用于對計(jì)數(shù)器212的計(jì)數(shù)值進(jìn)行重置的重置信號RST。也就是說,計(jì)數(shù)器212輸出通過在以預(yù)定周期對計(jì)數(shù)值CNT進(jìn)行初始化的同時(shí)重復(fù)遞增計(jì)數(shù)運(yùn)算來循環(huán)更新其值的計(jì)數(shù)值CNT。[0087]選擇器215根據(jù)該計(jì)數(shù)值CNT來選擇線程控制寄存器211中的時(shí)隙中的一個(gè)并且基于存儲在所選時(shí)隙中的值來輸出實(shí)時(shí)位信號REALO和第一編號SNl。具體地說,當(dāng)計(jì)數(shù)值CNT是0時(shí),選擇器215選擇時(shí)隙SLT0,指定存儲在時(shí)隙SLTO的編號存儲部分中的硬件線程編號以作為第一編號SN1,并且指定存儲在時(shí)隙SLTO的實(shí)時(shí)位存儲部分中的標(biāo)志的值以作為實(shí)時(shí)位信號REALO的邏輯電平。
[0088]附帶地,通過在多線程處理器130開始時(shí)所執(zhí)行的管理程序來設(shè)置存儲在線程控制寄存器211的時(shí)隙中的值、計(jì)數(shù)器212的計(jì)數(shù)值CNT的初始值、以及存儲在計(jì)數(shù)最大值存儲部分213中的計(jì)數(shù)最大值CNTM。此外,管理程序?qū)拇鎯ζ?10讀取這些設(shè)置值。
[0089]將來自第一調(diào)度器210的實(shí)時(shí)位信號REALO以及來自選擇器222的信號(隨后所述的狀態(tài)信號STA)輸入到用于輸出實(shí)時(shí)位信號REALl的再調(diào)度器220之中。
[0090]線程狀態(tài)管理單元230監(jiān)控多線程處理器130的每個(gè)硬件線程是處于可分派還是不可分派狀態(tài),并且將監(jiān)控結(jié)果輸出到選擇器222。例如,當(dāng)硬件線程A1、A2、以及BI至B3分別是“可執(zhí)行分派”、“不可分派”、“可分派”、“可分派”、以及“可分派”時(shí),線程狀態(tài)管理單元230將信號“10111”輸出到選擇器222。
[0091 ] 將來自線程狀態(tài)管理單元230的信號以及來自第一調(diào)度器210的第一編號SNl輸入到選擇器222之中。選擇器222從來自線程狀態(tài)管理單元230的信號的位當(dāng)中選擇用于表示第一編號SNl所表示的硬件線程的狀態(tài)的位,并且將它輸出到再調(diào)度器220作為狀態(tài)信號STA。
[0092]當(dāng)來自第一調(diào)度器210的實(shí)時(shí)位信號REALO是“0”時(shí),再調(diào)度器220輸出“0”作為實(shí)時(shí)位信號REALl。
[0093]另一方面,當(dāng)實(shí)時(shí)位信號REALO是“I”時(shí),再調(diào)度器220根據(jù)來自選擇器222的狀態(tài)信號STA而輸出“0”或“I”中的一個(gè)以作為實(shí)時(shí)位信號REAL1。具體地說,當(dāng)狀態(tài)信號STA是“I”時(shí)它輸出“I”并且當(dāng)狀態(tài)信號STA是"0〃時(shí)它輸出"0〃以作為實(shí)時(shí)位信號REALl。
[0094]例如,假定從第一調(diào)度器210輸出即就是“I”的實(shí)時(shí)位信號REALO以及即就是“0”的第一編號SNl。在這種情況下,因?yàn)楫?dāng)?shù)谝痪幪朣Nl所表示的硬件線程Al是可分派時(shí)從選擇器222輸出“I”以作為狀態(tài)信號STA,因此再調(diào)度器220輸出“I”以作為實(shí)時(shí)位信號REALl。另一方面,因?yàn)楫?dāng)硬件線程Al是不可分派時(shí)從選擇器222輸出“0”以作為狀態(tài)信號STA,因此再調(diào)度器220輸出"0〃以作為實(shí)時(shí)位信號REALl。
[0095]圖4示出了再調(diào)度器220的電路配置的一個(gè)示例。在該示例中,再調(diào)度器220包括AND電路。也就是說,將來自選擇器222的狀態(tài)信號STA以及來自第一調(diào)度器210的實(shí)時(shí)位信號REALl輸入到再調(diào)度器220之中,再調(diào)度器220輸出它們的邏輯積以作為實(shí)時(shí)位信號REALl。
[0096]返回到圖2,給出其說明。再調(diào)度器220基于來自第一調(diào)度器210的實(shí)時(shí)位信號REALO以及來自選擇器222的狀態(tài)信號STA生成實(shí)時(shí)位信號REALl并且將它輸出到如上所述的選擇器250。該實(shí)時(shí)位信號REALl用作選擇器250的控制信號。
[0097]基于來自再調(diào)度器220的實(shí)時(shí)位信號REAL1,選擇器250選擇第一調(diào)度器210輸出的第一編號SNl或者第二調(diào)度器240輸出的第二編號SN2中的一個(gè)。
[0098]第二調(diào)度器240執(zhí)行對多線程處理器130的五個(gè)硬件線程當(dāng)中的第二組的每個(gè)硬件線程(BI至B3)的調(diào)度。具體地說,第二調(diào)度器240從硬件線程BI至B3當(dāng)中選擇任意一個(gè),并且將所選的硬件線程編號輸出到選擇器250。從第二調(diào)度器240輸出到選擇器250的編號是第二編號SN2。
[0099]附帶地,第二調(diào)度器240的調(diào)度技術(shù)可以是諸如傳統(tǒng)已知的輪詢系統(tǒng)和優(yōu)先級系統(tǒng)這樣的任意技術(shù)。
[0100]當(dāng)實(shí)時(shí)位信號REALl是“I”時(shí)選擇器250選擇第一編號SNl,并且當(dāng)實(shí)時(shí)位信號REALl是"0〃時(shí)選擇器250選擇第二編號SN2。將選擇器250所選的編號輸出到多線程處理器130的選擇器164以作為線程選擇信號TSEL。
[0101]如上所述,選擇器164選擇五個(gè)硬件線程當(dāng)中的接下來要執(zhí)行的硬件線程所生成的指令并且將它輸出到算術(shù)運(yùn)算電路140。也就是說,通過線程選擇信號TSEL來決定多線程處理器130接下來執(zhí)行的硬件線程。
[0102]對第一調(diào)度器210、再調(diào)度器220、以及第二調(diào)度器240的運(yùn)算進(jìn)行概述。
[0103]第一調(diào)度器210在每個(gè)循環(huán)時(shí)段(每當(dāng)四次指定硬件線程時(shí))順序地輸出“I”和“O”(硬件線程Al)、“l(fā)和I”(硬件線程A2)、“0”、以及任意數(shù)以作為表示第一組或第二組以及第一編號SNl的實(shí)時(shí)位信號REALO。
[0104]當(dāng)來自第一調(diào)度器210的實(shí)時(shí)位信號REALO是“O”時(shí),再調(diào)度器220將與實(shí)時(shí)位信號REALO相同的實(shí)時(shí)位信號REALl (即“O”)輸出到選擇器250。另一方面,在實(shí)時(shí)位信號REALO是“I”的情況下,當(dāng)?shù)谝痪幪朣Nl所表示的硬件線程是可分派時(shí),再調(diào)度器220輸出與實(shí)時(shí)位信號REALl相同的實(shí)時(shí)位信號REAL1,即“1”,但是當(dāng)?shù)谝痪幪朣Nl所表示的硬件線程是不可分派時(shí),它輸出即就是“O”的實(shí)時(shí)位信號REALl。
[0105]第二調(diào)度器240將第二組中的硬件線程(BI至B3)當(dāng)中的任意硬件線程編號輸出到選擇器250以作為第二編號SN2。
[0106]當(dāng)來自再調(diào)度器220的實(shí)時(shí)位信號REALl是“I”時(shí)選擇器250從第一調(diào)度器210選擇第一編號SNl或者當(dāng)來自再調(diào)度器220的實(shí)時(shí)位信號REALl是"O"時(shí)選擇器250從第一調(diào)度器240選擇第二編號SN2以作為線程選擇信號TSEL,并且將它輸出到選擇器164。
[0107]在這里,當(dāng)假定在調(diào)度器200中不存在再調(diào)度器220時(shí),考慮調(diào)度器200進(jìn)行的調(diào)度的一個(gè)示例。圖5示出了在該假定的情況下調(diào)度器200的電路配置示例。
[0108]在圖5中,用點(diǎn)所描出的表示假定不存在的功能塊。如在圖中所說明的,在這種情況下,不存在再調(diào)度器220、選擇器222、以及線程狀態(tài)管理單元230。因此,將來自第一調(diào)度器210的實(shí)時(shí)位信號REALO直接輸入到選擇器250之中。
[0109]圖6示出了在圖5所示的電路配置的情況下調(diào)度器200進(jìn)行的調(diào)度的一個(gè)示例。在圖6的每個(gè)圖以及隨后圖中,“可能”和“不可能”分別表示相關(guān)硬件線程是“可分派”和“不可分派”,并且“空閑”表示什么也不執(zhí)行。此外,“B”表示第二組的硬件線程(BI至B3)中的任何一個(gè)。
[0110]此夕卜,〃ID〃、〃EX〃、〃WB〃、〃MEM〃、以及〃MEM WB〃分別表示階段“指令解碼”、“指令執(zhí)行”、“寄存器寫回”、“存儲器訪問”、以及“存儲器寫回”。附帶地,這些階段是例示,并且流水線的階段根據(jù)處理器的規(guī)范而變。
[0111]如圖6所示,因?yàn)樵跁r(shí)鐘的第一周期(Tl)中選擇了時(shí)隙SLT0,因此將“I”和“O”(Al)輸出到選擇器250以作為實(shí)時(shí)位信號REALO和第一編號SNl。因此,從選擇器250輸出Al的編號“O”以作為接下來要執(zhí)行的硬件線程。其結(jié)果是,執(zhí)行硬件線程Al生成的指令。具體地說,開始對硬件線程Al生成的指令的“ID”階段的處理。
[0112]因?yàn)樵跁r(shí)鐘的第二周期(T2)中選擇了時(shí)隙SLT1,因此將“0”和(任意數(shù))作為實(shí)時(shí)位信號REALO和第一編號SNl輸出到選擇器250,并且將3至5中(硬件線程B)的任何一個(gè)作為第二編號SN2輸出到此。因此,從選擇器250輸出硬件線程B中的編號(3至5中的任何一個(gè))以作為接下來要執(zhí)行的硬件線程。其結(jié)果是,執(zhí)行硬件線程B生成的指令。
[0113]類似地,在時(shí)鐘的第三周期(T3)中,選擇硬件線程A2的編號(I)并且執(zhí)行硬件線程A2生成的指令。接下來,在第四周期(T4)中,選擇硬件線程B的編號并且執(zhí)行硬件線程B生成的指令。
[0114]附帶地,在周期T3中,雖然執(zhí)行硬件線程Al的“MEM”階段的處理,但是由于I/O等待而使該流無法進(jìn)到下一階段,并且指令變得不可分派。在圖6的示例中,硬件線程Al的“不可分派”狀態(tài)持續(xù)直至周期T9。
[0115]周期Tl至T4是調(diào)度的一個(gè)循環(huán)時(shí)段。如在圖中所說明的,在循環(huán)時(shí)段中,根據(jù)預(yù)先設(shè)置的調(diào)度,分配給Al、A2、以及B的執(zhí)行時(shí)間的比率是“ 1: 1:2”。
[0116]隨后,執(zhí)行下一循環(huán)時(shí)段(周期T5至T8)的調(diào)度。與周期Tl至T4的循環(huán)時(shí)段相類似,從選擇器250順序地輸出Al、B、A2、以及B的編號。
[0117]然而,在周期T5中,雖然將硬件線程Al指定為接下來要執(zhí)行的硬件線程,但是硬件線程Al是不可分派的。因此,在周期T5中,在“ID”階段將什么也不執(zhí)行。其結(jié)果是,在周期T6中的“EX”階段以及周期17中的“WB”階段也什么也不執(zhí)行。
[0118]在周期T9至周期T12的循環(huán)時(shí)段中也出現(xiàn)了相同事情。附帶地,在周期TlO中,硬件線程Al完成I/O訪問并且返回到“可分派”狀態(tài)。因此,在從周期T12的下一周期開始的循環(huán)時(shí)段(未說明)中,流水線處理變得與周期Tl至周期T4的循環(huán)時(shí)段相同。
[0119]如從圖6可清楚地得知,通過使硬件線程Al變?yōu)椤安豢煞峙伞睜顟B(tài),將在執(zhí)行時(shí)隙中出現(xiàn)空閑并且處理器的性能將下降。
[0120]在假定不存在再調(diào)度器220的情況下,參考圖6對調(diào)度器200進(jìn)行的調(diào)度的一個(gè)示例進(jìn)行說明。
[0121]圖7是示出了在沒有上述假定的情況下(即在該實(shí)施例中)調(diào)度器200進(jìn)行調(diào)度的示例的示意圖。
[0122]如圖7所示,在周期Tl至T4的循環(huán)時(shí)段中,與圖6所示的示例相似,按照硬件線程Al、硬件線程B、硬件線程A2、以及硬件線程B的順序指定并執(zhí)行每個(gè)硬件線程。
[0123]在周期T5中,選擇時(shí)隙SLTO并且從第一調(diào)度器210輸出“I”和“0” (Al)以分別作為實(shí)時(shí)位信號REALO和第一編號SNl。然而,因?yàn)橛布€程Al是不可分派,因此對于實(shí)時(shí)位信號REALl再調(diào)度器220輸出“O”。其結(jié)果是,在該周期中,從選擇器250輸出用于表示硬件線程B的第二編號SN2以作為線程選擇信號TSEL。
[0124]也就是說,雖然線程調(diào)度指定了硬件線程Al—次,但是再調(diào)度指定了硬件線程B而不是硬件線程Al。
[0125]在圖7和隨后附圖中,關(guān)于線程選擇信號TSEL,實(shí)線的細(xì)線框示出了線程調(diào)度的結(jié)果,并且實(shí)線的粗線框示出了再調(diào)度的結(jié)果。
[0126]如圖7所示,還在周期T9中,執(zhí)行再調(diào)度,由此指定硬件線程B以代替線程調(diào)度所指定的硬件線程Al。[0127]其結(jié)果是,即使當(dāng)硬件線程Al進(jìn)入到“不可分派”狀態(tài)時(shí),在執(zhí)行時(shí)隙中也不會出現(xiàn)空閑。其結(jié)果是,避免了處理器的性能衰減。
[0128]第二實(shí)施例
[0129]第二實(shí)施例也是處理器系統(tǒng)。附帶地,除向第一實(shí)施例的處理器系統(tǒng)100提供調(diào)度器300以代替調(diào)度器200這點(diǎn)之外,根據(jù)第二實(shí)施例的處理器系統(tǒng)與處理器系統(tǒng)100相同。因此,僅對根據(jù)第二實(shí)施例的處理器系統(tǒng)說明調(diào)度器300。此外,在給出說明的過程中,將使用與處理器系統(tǒng)100中的多個(gè)硬件線程相同的示例。
[0130]除了上述線程調(diào)度和再調(diào)度之外,調(diào)度器300進(jìn)一步執(zhí)行隨后所述的對浪費(fèi)次數(shù)的計(jì)數(shù)以及恢復(fù)調(diào)度。
[0131]每當(dāng)對第一組的每個(gè)硬件線程(Al,A2)進(jìn)行再調(diào)度時(shí),調(diào)度器300對每個(gè)浪費(fèi)的次數(shù)進(jìn)行遞增計(jì)數(shù)。
[0132]如上所述,再調(diào)度是當(dāng)線程調(diào)度指定了第一組的硬件線程但是該硬件線程是不可分派時(shí)重新指定第二組的硬件線程(B)以代替該硬件線程的處理。也就是說,對硬件線程Al或硬件線程A2遞增計(jì)數(shù)的浪費(fèi)次數(shù)變?yōu)楫?dāng)硬件線程是不可分派時(shí)線程調(diào)度所指定的并且通過再調(diào)度代之以指定第二組的硬件線程(B)的次數(shù)。
[0133]調(diào)度器300基于第一組的每個(gè)硬件線程的浪費(fèi)次數(shù)來執(zhí)行恢復(fù)調(diào)度。具體地說,當(dāng)線程調(diào)度指定了第二組的硬件線程時(shí),調(diào)度器300檢查其浪費(fèi)次數(shù)等于或大于“I”的硬件線程是否存在于第一組中。
[0134]當(dāng)在第一組中存在相應(yīng)硬件線程并且該硬件線程是可分派時(shí),調(diào)度器300重新指定第一組中的有關(guān)硬件線程(恢復(fù)調(diào)度)以代替線程調(diào)度所指定的硬件線程B。同時(shí),對硬件線程的浪費(fèi)次數(shù)進(jìn)行遞減計(jì)數(shù)。
[0135]另一方面,當(dāng)?shù)谝唤M中不存在相應(yīng)硬件線程時(shí)或者當(dāng)雖然存在相應(yīng)硬件線程但該硬件線程是不可分派時(shí),調(diào)度器300不執(zhí)行恢復(fù)調(diào)度。也就是說,在這種情況下,調(diào)度器300指定線程調(diào)度所指定的硬件線程B。
[0136]也就是說,調(diào)度器300執(zhí)行原則上重復(fù)預(yù)先設(shè)置的調(diào)度這樣的線程調(diào)度。此后,當(dāng)雖然線程調(diào)度指定了硬件線程A但是硬件線程A是不可分派時(shí),調(diào)度器300執(zhí)行重新指定硬件線程B以代替硬件線程A這樣的再調(diào)度,并且對硬件線程A的浪費(fèi)次數(shù)進(jìn)行遞增計(jì)數(shù)。
[0137]此外,在線程調(diào)度指定了硬件線程B的情況下,當(dāng)存在其浪費(fèi)次數(shù)是一次或多次的硬件線程A并且硬件線程A是可分派時(shí),調(diào)度器300執(zhí)行重新指定硬件線程A以代替線程調(diào)度所指定的硬件線程B這樣的恢復(fù)調(diào)度,并且對硬件線程A的浪費(fèi)次數(shù)進(jìn)行遞減計(jì)數(shù)。
[0138]從而,在根據(jù)預(yù)先設(shè)置的調(diào)度來進(jìn)行調(diào)度并且避免多線程處理器130的性能衰減這兩者中,與第一實(shí)施例的調(diào)度器200 —樣,調(diào)度器300實(shí)現(xiàn)了最好效果。
[0139]此外,通過對第一組的每個(gè)硬件線程的浪費(fèi)次數(shù)進(jìn)行計(jì)數(shù)并且基于浪費(fèi)次數(shù)來執(zhí)行恢復(fù)調(diào)度,調(diào)度器300在遍及多個(gè)循環(huán)時(shí)段期間可使第一組的硬件線程的執(zhí)行比率更接近設(shè)計(jì)者的設(shè)置,即使在各個(gè)循環(huán)時(shí)段中無法以設(shè)計(jì)者設(shè)計(jì)的準(zhǔn)確比來執(zhí)行第一組的硬件線程。
[0140]圖8示出了調(diào)度器300的電路配置的一個(gè)示例。如圖8所示,除了向調(diào)度器200提供了第一恢復(fù)調(diào)度器320這點(diǎn)之外,調(diào)度器300與調(diào)度器200相同。在這里,重點(diǎn)給出對第一恢復(fù)調(diào)度器320的說明。附帶地,在調(diào)度器300中,將第一恢復(fù)調(diào)度器320輸出的第三編號SN3和實(shí)時(shí)位信號REAL3輸入到選擇器250中以代替圖2所示的調(diào)度器200中的第一調(diào)度器210輸出的第一編號SNl以及其中的再調(diào)度器220輸出的實(shí)時(shí)位信號REAL0。
[0141]圖9示出了第一恢復(fù)調(diào)度器320的電路配置的一個(gè)示例。如圖中所說明的,在該示例中,第一恢復(fù)調(diào)度器320具有反相器321、AND電路322、計(jì)數(shù)器更新部323、線程浪費(fèi)計(jì)數(shù)器WCN1、線程浪費(fèi)計(jì)數(shù)器WCN2、恢復(fù)調(diào)度器核324、以及OR電路325。
[0142]還將選擇器222輸出的狀態(tài)信號STA輸入到第一恢復(fù)調(diào)度器320的反相器321之中,通過反相器321使其反相,并且將其輸出到AND電路322。此外,還將來自第一調(diào)度器210的實(shí)時(shí)位信號REALO輸入到AND電路322之中。
[0143]AND電路322將狀態(tài)信號STA的反相信號與實(shí)時(shí)位信號REALO的邏輯積(信號UP)輸出到計(jì)數(shù)器更新部323。
[0144]因此,僅當(dāng)實(shí)時(shí)位信號REALO是“I”并且狀態(tài)信號STA是“不可分派”時(shí)信號UP變?yōu)椤?I ”。換句話說,僅當(dāng)調(diào)度器300執(zhí)行再調(diào)度時(shí)信號UP變?yōu)椤?I ”。
[0145]計(jì)數(shù)器更新部323控制線程浪費(fèi)計(jì)數(shù)器WCNl和線程浪費(fèi)計(jì)數(shù)器WCN2的計(jì)數(shù)運(yùn)算。線程浪費(fèi)計(jì)數(shù)器WCNl和線程浪費(fèi)計(jì)數(shù)器WCN2分別與第一組中的兩個(gè)硬件線程(Al,A2)相對應(yīng),并且每一個(gè)根據(jù)計(jì)數(shù)器更新部323的控制來對硬件線程的浪費(fèi)次數(shù)進(jìn)行計(jì)數(shù)。
[0146]計(jì)數(shù)器更新部323通過將控制信號分別輸出到線程浪費(fèi)計(jì)數(shù)器WCNl和線程浪費(fèi)計(jì)數(shù)器WCN2來對這兩個(gè)線程浪費(fèi)計(jì)數(shù)器的計(jì)數(shù)運(yùn)算進(jìn)行控制。
[0147]就對遞增計(jì)數(shù)的控制而言,僅當(dāng)信號UP是“I”時(shí),計(jì)數(shù)器更新部323基于來自AND電路322的信號UP以及來自第一調(diào)度器210的第一編號SNl使與第一編號SNl所表不的硬件線程A相對應(yīng)的線程浪費(fèi)計(jì)數(shù)器遞增計(jì)數(shù)。
[0148]具體地說,例如,當(dāng)信號UP是“I”并且第一編號SNl是表示硬件線程Al的“0”時(shí),計(jì)數(shù)器更新部323將控制信號分別輸出到線程浪費(fèi)計(jì)數(shù)器WCNl和線程浪費(fèi)計(jì)數(shù)器WCN2,使得可以使線程浪費(fèi)計(jì)數(shù)器WCNl遞增計(jì)數(shù)并且可以使線程浪費(fèi)計(jì)數(shù)器WCN2不遞增計(jì)數(shù)。
[0149]類似地,當(dāng)信號UP是“ I”并且第一編號SNl是表示硬件線程A2的“ I”時(shí),計(jì)數(shù)器更新部323將控制信號分別輸出到線程浪費(fèi)計(jì)數(shù)器WCNl和線程浪費(fèi)計(jì)數(shù)器WCN2,使得可以使線程浪費(fèi)計(jì)數(shù)器WCNl不遞增計(jì)數(shù)并且可以使線程浪費(fèi)計(jì)數(shù)器WCN2遞增計(jì)數(shù)。
[0150]附帶地,當(dāng)信號UP是“0”時(shí),計(jì)數(shù)器更新部323將不使線程浪費(fèi)計(jì)數(shù)器WCNl和線程浪費(fèi)計(jì)數(shù)器WCN2遞增計(jì)數(shù)的控制信號輸出到這兩者。隨后將對遞減計(jì)數(shù)的控制進(jìn)行描述。
[0151]恢復(fù)調(diào)度器核324將線程浪費(fèi)計(jì)數(shù)器WCNl的計(jì)數(shù)值、線程浪費(fèi)計(jì)數(shù)器WCN2的計(jì)數(shù)值、來自第一調(diào)度器210的實(shí)時(shí)位信號REALO和第一編號SNl、以及來自線程狀態(tài)管理單元230的表示各自線程的狀態(tài)的信號輸入到其中,并且輸出實(shí)時(shí)位信號REAL2和第三編號SN3。
[0152]具體地說,僅當(dāng)實(shí)時(shí)位信號REALO是“0”時(shí),線程浪費(fèi)計(jì)數(shù)器WCNl和線程浪費(fèi)計(jì)數(shù)器WCN2中的至少一個(gè)的計(jì)數(shù)值(浪費(fèi)次數(shù))是一或更大,并且與一個(gè)浪費(fèi)計(jì)數(shù)器相對應(yīng)的硬件線程A是可分派的,恢復(fù)調(diào)度器核324使第一編號SNl變?yōu)橛糜诒硎九c上述一個(gè)浪費(fèi)計(jì)數(shù)器相對應(yīng)的硬件線程A的編號并且輸出它以作為第三編號SN3,并且同時(shí)對于實(shí)時(shí)位信號REAL2輸出“ I”。在除了上述之外的情況下,恢復(fù)調(diào)度器核324按照原狀輸出來自第一調(diào)度器210的第一編號SN1,并且對于實(shí)時(shí)位信號REAL2輸出“O”。[0153]附帶地,當(dāng)線程浪費(fèi)計(jì)數(shù)器WCNl和線程浪費(fèi)計(jì)數(shù)器WCN2兩者的計(jì)數(shù)值的每一個(gè)是一或更大并且這兩者是可分派時(shí),對于恢復(fù)調(diào)度器核324而言例如必需輸出用于表示與具有較大計(jì)數(shù)值的線程浪費(fèi)計(jì)數(shù)器相對應(yīng)的硬件線程A的編號或者輸出用于表示與為該情況所預(yù)先設(shè)置的線程浪費(fèi)計(jì)數(shù)器中的一個(gè)相對應(yīng)的硬件線程A的編號等等。
[0154]將從恢復(fù)調(diào)度器核324輸出的實(shí)時(shí)位信號REAL2輸入到計(jì)數(shù)器更新部323和OR電路325中。此外,將第三編號SN3輸入到選擇器250和計(jì)數(shù)器更新部323中。
[0155]計(jì)數(shù)器更新部323使用實(shí)時(shí)位信號REAL2以用于對遞減計(jì)數(shù)進(jìn)行控制。因此,還將實(shí)時(shí)位信號REAL2稱為信號DOWN。
[0156]就對遞減計(jì)數(shù)的控制而言,具體地說,僅當(dāng)實(shí)時(shí)位信號REAL2 (即信號DOWN)是“I”時(shí),計(jì)數(shù)器更新部323使與第三編號SN3所表示的硬件線程A相對應(yīng)的線程浪費(fèi)計(jì)數(shù)器遞減計(jì)數(shù)。
[0157]具體地說,例如,當(dāng)信號DOWN是“I”并且第三編號SN3是用于表示硬件線程Al的“O”時(shí),計(jì)數(shù)器更新部323分別將控制信號輸出到線程浪費(fèi)計(jì)數(shù)器WCNl和線程浪費(fèi)計(jì)數(shù)器WCN2,使得可以使線程浪費(fèi)計(jì)數(shù)器WCNl遞減計(jì)數(shù)并且可以使線程浪費(fèi)計(jì)數(shù)器WCN2不遞減計(jì)數(shù)。
[0158]類似地,當(dāng)信號DOWN是“ I”并且第三編號SN3是用于表示硬件線程A2的“ I”時(shí),計(jì)數(shù)器更新部323分別將控制信號輸出到線程浪費(fèi)計(jì)數(shù)器WCNl和線程浪費(fèi)計(jì)數(shù)器WCN2,使得可以使線程浪費(fèi)計(jì)數(shù)器WCNl不遞減計(jì)數(shù)并且可以使線程浪費(fèi)計(jì)數(shù)器WCN2遞減計(jì)數(shù)。
[0159]附帶地,當(dāng)信號DOWN是“O”時(shí),計(jì)數(shù)器更新部323輸出用于使線程浪費(fèi)計(jì)數(shù)器WCNl和線程浪費(fèi)計(jì)數(shù)器WCN2這兩者不遞減計(jì)數(shù)的控制信號。
[0160]OR電路325將來自再調(diào)度器220的實(shí)時(shí)位信號REALl與來自恢復(fù)調(diào)度器核324的實(shí)時(shí)位信號REAL2的邏輯加法(實(shí)時(shí)位信號REAL3)輸出到選擇器250。
[0161]作為線程選擇信號TSEL,當(dāng)實(shí)時(shí)位信號REAL3是“I”時(shí)選擇器250選擇第三編號SN3并且當(dāng)實(shí)時(shí)位信號REAL3是“O”時(shí)選擇來自第二調(diào)度器240的第二編號SN2。
[0162]參考圖10,對根據(jù)該實(shí)施例的調(diào)度器300進(jìn)行的調(diào)度的示例進(jìn)行說明。附帶地,在圖10中,像圖7 —樣,就線程選擇信號TSEL而言,實(shí)線的細(xì)線框表示調(diào)度的結(jié)果,并且實(shí)線的粗線框表示再調(diào)度的結(jié)果。此外,虛線的粗線框表示恢復(fù)調(diào)度的結(jié)果。
[0163]如圖10所示,在第一循環(huán)時(shí)段(周期Tl至T4)中,線程調(diào)度按照硬件線程Al、硬件線程B、硬件線程A2、以及硬件線程B的順序來指定并執(zhí)行硬件線程。
[0164]在周期T5中,選擇時(shí)隙SLT0,并且從第一調(diào)度器210輸出“I”和“O”(Al)以作為實(shí)時(shí)位信號REALO和第一編號SNl。然而,因?yàn)橛布€程Al是不可分派,因此執(zhí)行再調(diào)度并且從選擇器250輸出用于表示硬件線程B的第二編號SN2以作為線程選擇信號TSEL。
[0165]此外,在該周期中,因?yàn)閷τ布€程Al執(zhí)行再調(diào)度,因此信號UP變?yōu)椤癐”并且與硬件線程Al相對應(yīng)的線程浪費(fèi)計(jì)數(shù)器WCNl的計(jì)數(shù)值通過遞增計(jì)數(shù)而從零變?yōu)橐弧?br>
[0166]在第二循環(huán)時(shí)段的周期T6至T8中,線程調(diào)度順序地指定硬件線程B、硬件線程A2、以及硬件線程B。
[0167]附帶地,在周期T6和T8中,線程調(diào)度指定了硬件線程B并且線程浪費(fèi)計(jì)數(shù)器WCNl的計(jì)數(shù)值是一。然而,因?yàn)槿缜八鲇布€程Al仍是不可分派,因此不執(zhí)行恢復(fù)調(diào)度。
[0168]在進(jìn)入第三循環(huán)時(shí)段之后,在周期T9中線程調(diào)度指定硬件線程Al。然而,因?yàn)槿缜八鲇布€程Al仍是不可分派,因此執(zhí)行再調(diào)度,執(zhí)行從硬件線程Al指定為硬件線程B的改變,信號UP再次變?yōu)椤?I ”,并且線程浪費(fèi)計(jì)數(shù)器WCNl的計(jì)數(shù)值通過遞增計(jì)數(shù)而從一變?yōu)槎?br>
[0169]在周期TlO中線程調(diào)度指定硬件線程B。然而,因?yàn)榫€程浪費(fèi)計(jì)數(shù)器WCNl的計(jì)數(shù)值是“2”并且硬件線程Al變?yōu)榭煞峙?,因此?zhí)行恢復(fù)調(diào)度并且執(zhí)行從硬件線程B指定為硬件線程Al的改變。同時(shí),實(shí)時(shí)位信號REAL2 (DOWN)變?yōu)椤?”,并且線程浪費(fèi)計(jì)數(shù)器WCNl的計(jì)數(shù)值通過遞減計(jì)數(shù)從二變?yōu)橐弧?br>
[0170]類似地,還在周期T12中,執(zhí)行恢復(fù)調(diào)度并且執(zhí)行從硬件線程B指定為硬件線程Al的改變。同時(shí),實(shí)時(shí)位信號REAL2 (DOWN)再次變?yōu)椤?”,并且線程浪費(fèi)計(jì)數(shù)器WCNl的計(jì)數(shù)值通過遞減計(jì)數(shù)從一變?yōu)榱恪?br>
[0171]如圖10所示,在出現(xiàn)再調(diào)度或恢復(fù)調(diào)度的循環(huán)時(shí)段中硬件線程Al、A2、以及B的執(zhí)行次數(shù)的比率不是“ 1: 1:2”。然而,明白在具有周期Tl至T12的三個(gè)循環(huán)時(shí)段期間,硬件線程Al、A2、以及B的執(zhí)行次數(shù)的比率下降到所設(shè)計(jì)的“1:1:2”。
[0172]第三實(shí)施例
[0173]第三實(shí)施例也是處理器系統(tǒng)。附帶地,除了向處理器系統(tǒng)100提供調(diào)度器400以代替調(diào)度器200這點(diǎn)之外,根據(jù)第三實(shí)施例的處理器系統(tǒng)與根據(jù)第一實(shí)施例的處理器系統(tǒng)100相同。因此,對第三實(shí)施例中的處理器系統(tǒng)而言僅說明調(diào)度器400。此外,在給出說明的過程中,將使用與處理器系統(tǒng)100中的多個(gè)硬件線程相同的示例。
[0174]像第二實(shí)施例的調(diào)度器300 —樣,除了線程調(diào)度和再調(diào)度之外,調(diào)度器400進(jìn)一步執(zhí)行對浪費(fèi)次數(shù)的計(jì)數(shù)以及恢復(fù)調(diào)度。然而,調(diào)度器300對每個(gè)硬件線程A的浪費(fèi)次數(shù)進(jìn)行計(jì)數(shù),而調(diào)度器400對整個(gè)第一組的浪費(fèi)次數(shù)進(jìn)行計(jì)數(shù)。因此,調(diào)度器400執(zhí)行的恢復(fù)調(diào)度也與調(diào)度器300執(zhí)行的恢復(fù)調(diào)度不同。在下面,將調(diào)度器400計(jì)數(shù)的浪費(fèi)次數(shù)稱作“組浪費(fèi)的次數(shù)”。
[0175]當(dāng)已對第一組中的硬件線程的任何一個(gè)進(jìn)行了再調(diào)度時(shí),調(diào)度器400對組浪費(fèi)的次數(shù)進(jìn)行遞增計(jì)數(shù)。
[0176]如上所述,再調(diào)度是當(dāng)雖然通過線程調(diào)度指定了第一組的硬件線程但是該硬件線程是不可分派時(shí)重新指定第二組的硬件線程(B)以代替該硬件線程的處理。也就是說,當(dāng)?shù)谝唤M的硬件線程的任何一個(gè)是不可分派時(shí)組浪費(fèi)的次數(shù)變?yōu)槠渲芯€程調(diào)度指定硬件線程的次數(shù)。
[0177]調(diào)度器400基于組浪費(fèi)的次數(shù)來執(zhí)行恢復(fù)調(diào)度。具體地說,當(dāng)線程調(diào)度指定了第二組的硬件線程時(shí),調(diào)度器400檢查組浪費(fèi)的次數(shù)是否是“O”。
[0178]當(dāng)組浪費(fèi)的次數(shù)是一或更大并且在第一組中存在可分派的硬件線程時(shí),調(diào)度器400重新指定第一組中的可分派硬件線程以代替線程調(diào)度所指定的硬件線程B。同時(shí),對組浪費(fèi)的次數(shù)進(jìn)行遞減計(jì)數(shù)。
[0179]另一方面,當(dāng)組浪費(fèi)的次數(shù)是零時(shí)或者當(dāng)雖然組浪費(fèi)的次數(shù)是一或更大但是不存在可分派的硬件線程A時(shí),調(diào)度器400不執(zhí)行恢復(fù)調(diào)度。也就是說,在這種情況下,調(diào)度器400指定由線程調(diào)度所指定的硬件線程B。
[0180]也就是說,調(diào)度器400執(zhí)行原則上重復(fù)預(yù)先設(shè)置的調(diào)度這樣的線程調(diào)度。此后,當(dāng)雖然線程調(diào)度指定了硬件線程A但是硬件線程A是不可分派時(shí),調(diào)度器400執(zhí)行重新指定硬件線程B以代替硬件線程A的再調(diào)度,并且對組浪費(fèi)的次數(shù)進(jìn)行遞增計(jì)數(shù)。
[0181]此外,在線程調(diào)度指定了硬件線程B的情況下,當(dāng)組浪費(fèi)的次數(shù)是一或更大并且存在可分派的硬件線程A時(shí),調(diào)度器400執(zhí)行重新指定可分派的硬件線程A以代替線程調(diào)度所指定的硬件線程B這樣的恢復(fù)調(diào)度,并且對組浪費(fèi)的次數(shù)進(jìn)行遞減計(jì)數(shù)。
[0182]從而,與第一實(shí)施例的調(diào)度器200相似,在根據(jù)預(yù)先設(shè)置的調(diào)度來進(jìn)行調(diào)度以及避免多線程處理器130的性能衰減這兩者中,調(diào)度器400實(shí)現(xiàn)了最好效果。
[0183]此外,通過對第一組計(jì)數(shù)組浪費(fèi)的次數(shù)并且基于組浪費(fèi)的次數(shù)來執(zhí)行恢復(fù)調(diào)度,當(dāng)看到在遍及多個(gè)循環(huán)時(shí)段期間時(shí),對于調(diào)度器400來說可使第一組與第二組之間的硬件線程的執(zhí)行比率更接近設(shè)計(jì)者的設(shè)置。
[0184]圖11示出了調(diào)度器400的電路配置的一個(gè)示例。除了向調(diào)度器200進(jìn)一步提供了第二恢復(fù)調(diào)度器420這點(diǎn)之外,調(diào)度器400與圖2所示的調(diào)度器200相同。在這里,重點(diǎn)給出對第二恢復(fù)調(diào)度器420的說明。附帶地,在調(diào)度器400中,將第二恢復(fù)調(diào)度器420輸出的第四編號SM和實(shí)時(shí)位信號REAL4輸入到選擇器250中以代替圖2所示的調(diào)度器200中的第一調(diào)度器210輸出的第一編號SNl以及其中的再調(diào)度器220輸出的實(shí)時(shí)位信號REAL0。
[0185]圖12示出了第二恢復(fù)調(diào)度器420的電路配置的一個(gè)示例。如圖中所說明的,在該示例中,第二恢復(fù)調(diào)度器420具有反相器321、AND電路322、OR電路325、計(jì)數(shù)器更新部421、組浪費(fèi)計(jì)數(shù)器422、以及恢復(fù)調(diào)度器核424。
[0186]反相器321、AND電路322、以及OR電路325分別與包含在第一恢復(fù)調(diào)度器320之中的那些相同并且具有相同符號。
[0187]計(jì)數(shù)器更新部421控制組浪費(fèi)計(jì)數(shù)器422的計(jì)數(shù)運(yùn)算。組浪費(fèi)計(jì)數(shù)器422根據(jù)計(jì)數(shù)器更新部421的控制對第一組計(jì)數(shù)組浪費(fèi)的次數(shù)。
[0188]就對遞增計(jì)數(shù)的控制而言,當(dāng)來自AND電路322信號UP是“I”時(shí),計(jì)數(shù)器更新部421輸出使組浪費(fèi)計(jì)數(shù)器422遞增計(jì)數(shù)的控制信號。另一方面,當(dāng)信號UP是“O”時(shí),組浪費(fèi)計(jì)數(shù)器422使計(jì)數(shù)器更新部421不遞增計(jì)數(shù)。隨后對遞減計(jì)數(shù)的控制進(jìn)行描述。
[0189]恢復(fù)調(diào)度器核424將組浪費(fèi)計(jì)數(shù)器422的計(jì)數(shù)值、來自第一調(diào)度器210的實(shí)時(shí)位信號REALO和第一編號SNl、來自線程狀態(tài)管理單元230的表示各自線程的狀態(tài)的信號輸入到其中,并且輸出實(shí)時(shí)位信號REAL2以及第四編號SM。
[0190]具體地說,僅當(dāng)實(shí)時(shí)位信號REALO是“0”,組浪費(fèi)計(jì)數(shù)器422的計(jì)數(shù)值(組浪費(fèi)次數(shù))是一或更大,并且在第一組中存在可分派的硬件線程時(shí),恢復(fù)調(diào)度器核424輸出第一組中的可分派硬件線程的編號以作為第四編號SM,并且對于實(shí)時(shí)位信號REAL2輸出“I”。在除了上述之外的情況下,恢復(fù)調(diào)度器核424按照原狀輸出第一編號SNl以作為第四編號SN4,并且對于實(shí)時(shí)位信號REAL2輸出“O”。
[0191]附帶地,當(dāng)?shù)谝唤M中存在多個(gè)可分派的硬件線程時(shí),對于恢復(fù)調(diào)度器核424而言例如必需按照為第一組中的硬件線程所預(yù)先設(shè)置的優(yōu)先級來選擇與第四編號SM相對應(yīng)的硬件線程。當(dāng)然,這種情況下的硬件線程的選擇技術(shù)并不局限于該示例。
[0192]將從恢復(fù)調(diào)度器核424輸出的實(shí)時(shí)位信號REAL2輸入到計(jì)數(shù)器更新部421和OR電路325之中。此外,將第四編號SM輸入到選擇器250和計(jì)數(shù)器更新部421之中。
[0193]計(jì)數(shù)器更新部421使用實(shí)時(shí)位信號REAL2以用于對遞減計(jì)數(shù)進(jìn)行控制。就對遞減計(jì)數(shù)的控制而言,僅當(dāng)實(shí)時(shí)位信號REAL2 (即信號DOWN)是“I”時(shí),計(jì)數(shù)器更新部421使組浪費(fèi)計(jì)數(shù)器422遞減計(jì)數(shù)。
[0194]OR電路325將來自再調(diào)度器220的實(shí)時(shí)位信號REALl與來自恢復(fù)調(diào)度器核424的實(shí)時(shí)位信號REAL2的邏輯加法(實(shí)時(shí)位信號REAL4)輸出到選擇器250。
[0195]作為線程選擇信號TSEL,當(dāng)實(shí)時(shí)位信號REAL4是“I”時(shí)選擇器250選擇實(shí)時(shí)位信號REAL4并且當(dāng)實(shí)時(shí)位信號REAL4是“O”時(shí)選擇來自第二調(diào)度器240的第二編號SN2。
[0196]參考圖13,對在該實(shí)施例中的調(diào)度器400進(jìn)行的調(diào)度的示例進(jìn)行說明。附帶地,在圖13中,像圖7 —樣,就線程選擇信號TSEL而言,實(shí)線的細(xì)線框示出了線程調(diào)度的結(jié)果,并且實(shí)線的粗線框示出了再調(diào)度的結(jié)果。此外,虛線的粗線框示出了恢復(fù)調(diào)度的結(jié)果。附帶地,在調(diào)度器400中,雖然對每個(gè)硬件線程A的浪費(fèi)次數(shù)不計(jì)數(shù),但是為了與調(diào)度器400所計(jì)數(shù)的組浪費(fèi)的次數(shù)進(jìn)行比較,圖13用虛線的細(xì)線框示出了每個(gè)硬件線程A的浪費(fèi)次數(shù)。
[0197]如圖13所示,在第一循環(huán)時(shí)段(周期Tl至T4)中,線程調(diào)度按照硬件線程Al、硬件線程B、硬件線程A2、以及硬件線程B的順序來指定并執(zhí)行硬件線程。
[0198]在周期T5中,選擇時(shí)隙SLT0,并且從第一調(diào)度器210輸出“I”和“O”(Al)以作為實(shí)時(shí)位信號REALO和第一編號SNl。然而,因?yàn)橛布€程Al是不可分派,因此執(zhí)行再調(diào)度并且從選擇器250輸出用于表示硬件線程B的第二編號SN2以作為線程選擇信號TSEL。
[0199]此外,在該周期中,因?yàn)閳?zhí)行再調(diào)度,因此信號UP變?yōu)椤癐”并且組浪費(fèi)計(jì)數(shù)器422的計(jì)數(shù)值(組浪費(fèi)的次數(shù))通過遞增計(jì)數(shù)而從零變?yōu)橐弧?br>
[0200]在第二循環(huán)時(shí)段的周期T6至T8中,線程調(diào)度順序地指定硬件線程B、硬件線程A2、以及硬件線程B。
[0201]在周期T6中,線程調(diào)度指定硬件線程B并且組浪費(fèi)的次數(shù)是一。然而,因?yàn)橛布€程Al和硬件線程A2兩者是不可分派,因此不執(zhí)行恢復(fù)調(diào)度。
[0202]在周期T7中,雖然選擇了時(shí)隙SLT2并且第一編號SNl表示硬件線程A2,但是因?yàn)橛布€程A2是不可分派,因此執(zhí)行再調(diào)度。其結(jié)果是,從選擇器250輸出用于表示硬件線程B的第二編號SN2以作為線程選擇信號TSEL,信號UP再次變?yōu)椤?”,并且組浪費(fèi)的次數(shù)
從一變?yōu)槎?br>
[0203]附帶地,在周期T8中,線程調(diào)度指定了硬件線程B并且組浪費(fèi)的次數(shù)為二。然而,因?yàn)槿缬布€程Al和硬件線程A2這兩者是不可分派,因此不執(zhí)行恢復(fù)調(diào)度。
[0204]在進(jìn)入第三循環(huán)時(shí)段之后,在周期T9中,線程調(diào)度指定硬件線程Al。然而,因?yàn)槿缜八鲇布€程Al仍是不可分派,因此執(zhí)行再調(diào)度,執(zhí)行從硬件線程Al指定為硬件線程B的改變,信號UP再次變?yōu)椤?I ”,并且組浪費(fèi)的次數(shù)從二變?yōu)槿?br>
[0205]在周期TlO中線程調(diào)度指定硬件線程B。然而,因?yàn)榻M浪費(fèi)的次數(shù)是“3”并且硬件線程Al已變?yōu)榭煞峙?,因此?zhí)行恢復(fù)調(diào)度并且執(zhí)行從硬件線程B指定為硬件線程Al的改變。同時(shí),實(shí)時(shí)位信號REAL2 (DOWN)變?yōu)椤癐”并且組浪費(fèi)的次數(shù)從三變?yōu)槎?br>
[0206]在周期Tll中線程調(diào)度指定硬件線程A2。然而,因?yàn)槿缜八鲇布€程A2仍是不可分派,因此執(zhí)行再調(diào)度,執(zhí)行從硬件線程A2指定為硬件線程B的改變,信號UP再次變?yōu)椤?I ”,并且組浪費(fèi)的次數(shù)從二變?yōu)槿?br>
[0207]在周期T12中線程調(diào)度指定硬件線程B。然而,因?yàn)榻M浪費(fèi)的次數(shù)是“3”并且硬件線程Al已變?yōu)榭煞峙?,因此?zhí)行恢復(fù)調(diào)度并且執(zhí)行從硬件線程B指定為硬件線程Al的改變。同時(shí),實(shí)時(shí)位信號REAL2 (DOWN)再次變?yōu)椤癐”并且組浪費(fèi)的次數(shù)從三變?yōu)槎?。[0208]從而,根據(jù)調(diào)度器400,在其中出現(xiàn)再調(diào)度或恢復(fù)調(diào)度的循環(huán)時(shí)段中執(zhí)行硬件線程A、B的次數(shù)的比率不是所設(shè)計(jì)的“2:2”。然而,當(dāng)看到在遍及多個(gè)循環(huán)時(shí)段時(shí),執(zhí)行硬件線程A、B的次數(shù)的比率變?yōu)樗O(shè)計(jì)的“2:2”。
[0209]第四實(shí)施例
[0210]在對第四實(shí)施例進(jìn)行描述之前,首先參考圖14示出了圖8所示的調(diào)度器300進(jìn)行的調(diào)度的另一個(gè)示例。
[0211]圖14所示的示例與圖10所示的示例不同點(diǎn)在于在周期T9至T12中硬件線程A2的執(zhí)行變?yōu)椴豢煞峙?,并且在周期Tll至T12中不存在可分派的硬件線程B。
[0212]從周期Tl至周期T9,由圖8所示的調(diào)度器300來執(zhí)行與圖10所示的示例相同的調(diào)度。
[0213]在周期TlO中,線程調(diào)度指定了硬件線程B。然而,因?yàn)橛布€程Al的浪費(fèi)次數(shù)是二并且硬件線程Al是可分派,因此通過恢復(fù)調(diào)度指定硬件線程Al以代替硬件線程B。同時(shí),硬件線程Al的浪費(fèi)次數(shù)從二變?yōu)橐弧?br>
[0214]在周期Tll中,雖然線程調(diào)度指定了硬件線程A2,但是因?yàn)橛布€程A2是不可分派的,因此再調(diào)度指定硬件線程B。同時(shí),硬件線程A2的浪費(fèi)次數(shù)從零變?yōu)橐弧?br>
[0215]然而,在該周期中不存在可分派的硬件線程B。因此,“ID”階段的執(zhí)行時(shí)隙將變?yōu)榭臻e。
[0216]在周期T12中,雖然線程調(diào)度指定了硬件線程B,但是因?yàn)榭煞峙傻挠布€程Al的浪費(fèi)次數(shù)是一,因此恢復(fù)調(diào)度指定硬件線程Al。同時(shí),硬件線程Al的浪費(fèi)次數(shù)從一變?yōu)榱恪?br>
[0217]如圖14所示,當(dāng)不存在可分派的硬件線程B時(shí),由于執(zhí)行再調(diào)度而在執(zhí)行時(shí)隙中出現(xiàn)了空閑。
[0218]第四實(shí)施例的調(diào)度器是修改的圖8所示的調(diào)度器300使得當(dāng)恢復(fù)調(diào)度和執(zhí)行時(shí)間可以在第一組中的硬件線程之間互換時(shí),可以向第一組中的硬件線程給出第二組中的硬件線程的執(zhí)行時(shí)間。
[0219]也就是說,第四實(shí)施例的調(diào)度器執(zhí)行原則上重復(fù)預(yù)先設(shè)置的調(diào)度這樣的線程調(diào)度。此后,雖然它通過線程調(diào)度指定了硬件線程A,但是當(dāng)硬件線程A是不可分派時(shí),它根據(jù)浪費(fèi)的次數(shù)以及其它硬件線程A的狀態(tài)來執(zhí)行再調(diào)度或者恢復(fù)調(diào)度。
[0220]例如,假定通過線程調(diào)度指定了不可分派的硬件線程Al。在這種情況下,當(dāng)硬件線程A2的浪費(fèi)次數(shù)是零時(shí),第四實(shí)施例的調(diào)度器執(zhí)行再調(diào)度并且指定硬件線程B。另一方面,當(dāng)硬件線程A2的浪費(fèi)次數(shù)是一或更大并且硬件線程A2是可分派時(shí),第四實(shí)施例的調(diào)度器對硬件線程A2執(zhí)行恢復(fù)調(diào)度,并且指定硬件線程A2。
[0221]附帶地,在線程調(diào)度指定了硬件線程B的情況下,與調(diào)度器300相類似。當(dāng)存在其浪費(fèi)的次數(shù)是一或更大的硬件線程A并且硬件線程A是可分派時(shí),執(zhí)行恢復(fù)調(diào)度并且指定硬件線程A以代替線程調(diào)度所指定的硬件線程B。
[0222]附帶地,因?yàn)橥ㄟ^修改調(diào)度器300的電路配置可很容易實(shí)現(xiàn)第四實(shí)施例的調(diào)度器,因此在這里省略對第四實(shí)施例的調(diào)度器的具體電路配置示例的說明。
[0223]圖15示出了第四實(shí)施例的調(diào)度器進(jìn)行的調(diào)度的示例,用于對此與調(diào)度器300進(jìn)行的調(diào)度的示例進(jìn)行比較。
[0224]如圖15所示,直到周期T10,第四實(shí)施例的調(diào)度器進(jìn)行的調(diào)度的結(jié)果與調(diào)度器300進(jìn)行的調(diào)度的結(jié)果相同。
[0225]在周期Tll中,調(diào)度器300執(zhí)行再調(diào)度并且指定硬件線程B以代替硬件線程A2。與此相反,在第四實(shí)施例的調(diào)度器中,因?yàn)橛布€程Al的浪費(fèi)次數(shù)是一并且硬件線程Al是可分派,因此第四實(shí)施例的調(diào)度器執(zhí)行恢復(fù)調(diào)度以代替再調(diào)度并且指定硬件線程Al以代替硬件線程A2。
[0226]其結(jié)果是,第四實(shí)施例的調(diào)度器可比調(diào)度器300更早地對其浪費(fèi)次數(shù)是一或更大的硬件線程A執(zhí)行恢復(fù)調(diào)度。
[0227]如上所述,雖然基于實(shí)施例對本發(fā)明人所做出的發(fā)明進(jìn)行了具體說明,但是本發(fā)明并不局限于已描述的實(shí)施例并且很顯然在不脫離其精神的范圍之內(nèi)各種增加/減少以及變化是可能的。
[0228]線程調(diào)度是設(shè)計(jì)者所設(shè)計(jì)的調(diào)度。因此,其中再調(diào)度的次數(shù)很大的狀況是指調(diào)度頻繁地脫離設(shè)計(jì)。因此,例如期望的是將下述功能添加到圖8所示的調(diào)度器300,所述功能即就是當(dāng)硬件線程的任何一個(gè)的浪費(fèi)次數(shù)(線程浪費(fèi)計(jì)數(shù)器WCNl的計(jì)數(shù)值或線程浪費(fèi)計(jì)數(shù)器WCN2的計(jì)數(shù)值)或者全部硬件線程的浪費(fèi)次數(shù)的總和達(dá)到閥值時(shí)向外部發(fā)出警告。通過發(fā)出這種警告,對于設(shè)計(jì)者來說可通知異常并且執(zhí)行重新檢查設(shè)計(jì)等。附帶地,就警告而言,例如可以想得到向CPU生成中斷的技術(shù)。
[0229]自然地,類似地可以向圖11所示的調(diào)度器400添加下述功能,即當(dāng)組浪費(fèi)的次數(shù)(組浪費(fèi)計(jì)數(shù)器422的計(jì)數(shù)值)到達(dá)閥值時(shí)向外部發(fā)出警告。
[0230]此外,在由于I/O等待等等而使硬件線程在期望時(shí)間之內(nèi)未完成階段的處理的情況下出現(xiàn)了需要再調(diào)度的狀況,即線程調(diào)度所指定的第一組的硬件線程是不可分派這樣的狀況。在多線程處理器中的硬件線程數(shù)目很少或者類似情況時(shí),在某種程度上可料到這種狀況。因此,當(dāng)設(shè)計(jì)用作線程調(diào)度基礎(chǔ)的調(diào)度時(shí),還可料到生成這種狀況并且設(shè)計(jì)考慮到I/0等待的時(shí)間等等的調(diào)度。為了能夠支持這種情況,期望的是例如配置調(diào)度器300的線程浪費(fèi)計(jì)數(shù)器WCNl和線程浪費(fèi)計(jì)數(shù)器WCN2以及調(diào)度器400的組浪費(fèi)計(jì)數(shù)器422,以便在目標(biāo)程序運(yùn)算之前關(guān)于計(jì)數(shù)運(yùn)算的允許和禁止是動態(tài)可變的。
[0231]通過執(zhí)行此,可降低運(yùn)算電路,并且因此使處理速度加速并且降低功耗。
[0232]附帶地,為了使能用于上述告警功能的閥值的設(shè)置以及與是否禁止浪費(fèi)計(jì)數(shù)器或組浪費(fèi)計(jì)數(shù)器的運(yùn)算有關(guān)的設(shè)置,所必需的是只是例如根據(jù)那些使用提供寄存器。
[0233]此外,在上述每個(gè)實(shí)施例中,作為示例,雖然根據(jù)它是否是實(shí)時(shí)線程來執(zhí)行對線程的分組,但是很自然的是對線程分組的技術(shù)并不局限于該示例。
【權(quán)利要求】
1.一種多線程處理器,所述多線程處理器具有多個(gè)硬件線程以及調(diào)度器,所述多個(gè)硬件線程用于分別生成多個(gè)相互獨(dú)立的指令流,所述調(diào)度器用于指定在所述多個(gè)硬件線程當(dāng)中的接下來要被執(zhí)行的硬件線程, 其中,所述調(diào)度器執(zhí)行用于重復(fù)下述處理的線程調(diào)度,所述處理是指:以對包含在所述硬件線程當(dāng)中的第一組之中的每個(gè)硬件線程所預(yù)先設(shè)置的次數(shù)來指定該每個(gè)硬件線程,并且以對包括有其它硬件線程的第二組所預(yù)先設(shè)置的次數(shù)來指定在所述第二組中的硬件線程中的任何一個(gè),以及 其中,當(dāng)在所述線程調(diào)度所指定的所述第一組中的硬件線程是不可分派的時(shí),所述調(diào)度器執(zhí)行用于重新指定所述第二組中的硬件線程以代替該硬件線程的再調(diào)度。
2.根據(jù)權(quán)利要求1所述的多線程處理器,進(jìn)一步包括: 線程浪費(fèi)計(jì)數(shù)器,所述線程浪費(fèi)計(jì)數(shù)器是為所述第一組中的每個(gè)硬件線程提供的,并且每當(dāng)在由所述線程調(diào)度指定了所述硬件線程時(shí)出現(xiàn)了不可分派狀態(tài)時(shí),所述線程浪費(fèi)計(jì)數(shù)器進(jìn)行遞增計(jì)數(shù), 其中,在由所述線程調(diào)度指定了所述第二組中的硬件線程的情況下,當(dāng)所述線程浪費(fèi)計(jì)數(shù)器中的任何一個(gè)的計(jì)數(shù)值是一或更大并且與所述線程浪費(fèi)計(jì)數(shù)器相對應(yīng)的所述第一組中的硬件線程是可分派的時(shí),所述調(diào)度器進(jìn)一步執(zhí)行用于重新指定硬件線程以代替由所述線程調(diào)度所指定的硬件線程的線程恢復(fù)調(diào)度,并且每當(dāng)由所述線程恢復(fù)調(diào)度指定了所述第一組中的相應(yīng)的硬件線程時(shí),所述線程浪費(fèi)計(jì)數(shù)器遞減計(jì)數(shù)。
3.根據(jù)權(quán)利要求2所述的多線程處理器, 其中,在由所述線程調(diào)度所指定的所述第一組中的硬件線程是不可分派的情況下,當(dāng)與所述第一組中的其它`硬件線程中的任何一個(gè)相對應(yīng)的所述線程浪費(fèi)計(jì)數(shù)器的計(jì)數(shù)值是一或更大并且該硬件線程是可分派的時(shí),所述調(diào)度器不執(zhí)行所述再調(diào)度而是執(zhí)行所述恢復(fù)調(diào)度。
4.根據(jù)權(quán)利要求2所述的多線程處理器, 其中,當(dāng)所述線程浪費(fèi)計(jì)數(shù)器中的任何一個(gè)的計(jì)數(shù)值到達(dá)閥值時(shí)或者當(dāng)全部所述線程浪費(fèi)計(jì)數(shù)器的計(jì)數(shù)值的總和到達(dá)閥值時(shí),所述調(diào)度器通知異常。
5.根據(jù)權(quán)利要求3所述的多線程處理器, 其中,當(dāng)所述線程浪費(fèi)計(jì)數(shù)器中的任何一個(gè)的計(jì)數(shù)值到達(dá)閥值時(shí)或者當(dāng)全部所述線程浪費(fèi)計(jì)數(shù)器的計(jì)數(shù)值的總和到達(dá)閥值時(shí),所述調(diào)度器通知異常。
6.根據(jù)權(quán)利要求2所述的多線程處理器, 其中,在所述每個(gè)線程浪費(fèi)計(jì)數(shù)器中,能夠禁止計(jì)數(shù)操作。
7.根據(jù)權(quán)利要求3所述的多線程處理器, 其中,在所述每個(gè)線程浪費(fèi)計(jì)數(shù)器中,能夠禁止計(jì)數(shù)操作。
8.根據(jù)權(quán)利要求1所述的多線程處理器,進(jìn)一步包括: 組浪費(fèi)計(jì)數(shù)器,所述組浪費(fèi)計(jì)數(shù)器是為所述第一組提供的,并且每當(dāng)在由所述線程調(diào)度指定了所述第一組中的硬件線程之中的任何一個(gè)時(shí)出現(xiàn)了該硬件線程是不可分派的時(shí),所述組浪費(fèi)計(jì)數(shù)器進(jìn)行遞增計(jì)數(shù), 其中,在由所述線程調(diào)度指定了所述第二組中的硬件線程的情況下,當(dāng)所述組浪費(fèi)計(jì)數(shù)器的計(jì)數(shù)值是一或更大并且在所述第一組中存在可分派的硬件線程時(shí),所述調(diào)度器進(jìn)一步執(zhí)行用于重新指定硬件線程以代替由所述線程調(diào)度所指定的硬件線程的恢復(fù)調(diào)度,以及 其中,每當(dāng)執(zhí)行所述恢復(fù)調(diào)度時(shí),所述組浪費(fèi)計(jì)數(shù)器遞減計(jì)數(shù)。
9.根據(jù)權(quán)利要求8所述的多線程處理器, 其中,在由所述線程調(diào)度所指定的所述第一組中的硬件線程是不可分派的情況下,當(dāng)所述組浪費(fèi)計(jì)數(shù)器的計(jì)數(shù)值是一或更大并且所述第一組中的其它硬件線程中的任何一個(gè)是可分派的時(shí) ,所述調(diào)度器不執(zhí)行所述再調(diào)度而是執(zhí)行所述恢復(fù)調(diào)度。
【文檔編號】G06F9/50GK103778016SQ201310487399
【公開日】2014年5月7日 申請日期:2013年10月17日 優(yōu)先權(quán)日:2012年10月17日
【發(fā)明者】佐藤純一, 安達(dá)浩次, 中村陽介 申請人:瑞薩電子株式會社