專利名稱:處理器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種可并行執(zhí)行多個(gè)指令的處理器,特別涉及到具有超標(biāo)量型體系結(jié)構(gòu)的處理器。
背景技術(shù):
處理器執(zhí)行存儲(chǔ)器中所存儲(chǔ)的指令序列。為了使執(zhí)行性能得到提高,當(dāng)執(zhí)行指令序列時(shí),最好使之同時(shí)執(zhí)行可并行執(zhí)行的多個(gè)指令。在可并行執(zhí)行多個(gè)指令的處理器體系結(jié)構(gòu)中,存在一種稱為超標(biāo)量的體系結(jié)構(gòu)。 采用超標(biāo)量技術(shù),在某個(gè)資源(寄存器等)的定義沒有由已經(jīng)執(zhí)行中的指令完成的情況下, 將參照該資源的指令的發(fā)放停止,實(shí)施由先執(zhí)行下一無依賴關(guān)系的指令的利用硬件的控制。但是,對(duì)于上述超標(biāo)量技術(shù)而言,需要保持及恢復(fù)例外發(fā)生的時(shí)候處理器的狀態(tài)所用的復(fù)雜的機(jī)構(gòu)。另一方面,在可并行執(zhí)行多個(gè)指令的處理器體系結(jié)構(gòu)中存在一種稱為VLIW(Very Long Instruction Word)的體系結(jié)構(gòu)。在VLIW中,編譯器預(yù)先在編譯時(shí)提取可并行執(zhí)行的指令,生成由可并行執(zhí)行的多個(gè)指令所構(gòu)成的并行執(zhí)行代碼。就VLIW而言,處理器為比較簡(jiǎn)單的結(jié)構(gòu)。但是,具有因插入NOP指令導(dǎo)致的代碼大小的增加以及和現(xiàn)有指令集之間的非互換這樣的問題。如上所述,在并行執(zhí)行多個(gè)指令的方式中,存在超標(biāo)量、VLIW,各自存在優(yōu)點(diǎn)及缺
點(diǎn)ο指令發(fā)放控制的方法一例公示在專利文獻(xiàn)1中。在專利文獻(xiàn)1中,按預(yù)先由1個(gè)以上的指令構(gòu)成的指令組單位,來控制指令的發(fā)放。另外,根據(jù)專利文獻(xiàn)1,一般備有存儲(chǔ)下述資源(寄存器文件等)的信息和其資源的等待時(shí)間信息的表,上述資源由預(yù)先決定出的發(fā)放組內(nèi)的各個(gè)指令定義及參照。并且提出了下述方法,即通過有效利用其等待時(shí)間信息,來檢測(cè)和已經(jīng)發(fā)放的指令組內(nèi)的指令之間的依賴關(guān)系,存在依賴性的情況下,停止對(duì)應(yīng)的指令組內(nèi)指令的發(fā)放,先發(fā)放無依賴關(guān)系的指令組內(nèi)的指令之方法。采用上述發(fā)放控制的方法,能夠在指令發(fā)放前提取處于依賴關(guān)系的具有1個(gè)以上指令的指令組,實(shí)施指令調(diào)度。指令發(fā)放控制的方法另一例公示在專利文獻(xiàn)2中。專利文獻(xiàn)2公示出與下述裝置有關(guān)的發(fā)明,該裝置對(duì)可在線程內(nèi)同時(shí)執(zhí)行的指令數(shù)進(jìn)行計(jì)數(shù),計(jì)算線程處理所耗費(fèi)的周期數(shù),考慮優(yōu)先級(jí),高效地發(fā)放多個(gè)線程內(nèi)的指令。在專利文獻(xiàn)2的段落0040 段落0045中,說明了由現(xiàn)有硬件實(shí)施的一般指令分組的方法。在上述說明里的在指令發(fā)放前的時(shí)候?qū)嵤┑默F(xiàn)有指令分組機(jī)構(gòu)中,只有將要發(fā)放的指令組內(nèi)的指令才提取依賴關(guān)系,恰當(dāng)實(shí)施發(fā)放組的控制。
現(xiàn)有技術(shù)文獻(xiàn)專利文獻(xiàn)1 日本專利第3984786號(hào)公報(bào)專利文獻(xiàn)2 日本特開2008-123045號(hào)公報(bào)(段落0040 段落0045)
發(fā)明內(nèi)容
發(fā)明要解決的課題但是,就專利文獻(xiàn)1所述的發(fā)放控制方法而言,需要一邊在指令隊(duì)列內(nèi)保持有依賴關(guān)系的指令,依次檢測(cè)其依賴關(guān)系,一邊針對(duì)多個(gè)指令組實(shí)施發(fā)放控制。另外,因?yàn)樵谥噶畎l(fā)放時(shí)按指令組單位動(dòng)態(tài)執(zhí)行指令調(diào)度,所以需要恢復(fù)指令發(fā)放后發(fā)生了例外時(shí)處理器的狀態(tài)所用的硬件投資。從而,在專利文獻(xiàn)1所述的發(fā)放控制方法中,由于上述2點(diǎn)原因, 因而存在硬件復(fù)雜化這樣的問題。另外,采用專利文獻(xiàn)2所述的方法,由于上述分組的限制,因而利用分組的發(fā)放控制無法實(shí)施,該分組考慮了指令組內(nèi)指令間的依賴關(guān)系及跨指令組的指令間的依賴關(guān)系。 因此,有時(shí)在指令執(zhí)行時(shí),產(chǎn)生如果原來恰當(dāng)?shù)貙?shí)施了分組則不發(fā)生的代價(jià)周期(penalty cycle)。從而,在現(xiàn)有指令發(fā)放前的時(shí)候的指令分組機(jī)構(gòu)中,存在要考慮最佳性能無法實(shí)現(xiàn)的實(shí)例發(fā)生的情形這樣的問題。本發(fā)明是為了解決上述課題而做出的,其目的為提供一種處理器,在指令發(fā)放之時(shí),能夠由簡(jiǎn)單的硬件實(shí)現(xiàn)在執(zhí)行性能的觀點(diǎn)上高效的發(fā)放組的決定(指令分組)。解決課題的手段為了達(dá)成上述目的,本發(fā)明的某個(gè)方式所涉及的處理器能夠?qū)⒍鄠€(gè)指令同時(shí)發(fā)放給多個(gè)運(yùn)算器,其特征為,具備指令緩沖器,保存預(yù)定的多個(gè)指令,該預(yù)定的多個(gè)指令在對(duì)上述多個(gè)運(yùn)算器的最后指令發(fā)放的周期的下一周期,發(fā)放給上述多個(gè)運(yùn)算器;組決定部,求取上述指令緩沖器中所存儲(chǔ)的任意2個(gè)指令間存在的第1依賴關(guān)系,以及上述指令緩沖器中所存儲(chǔ)的各指令和已發(fā)放的各指令之間存在的第2依賴關(guān)系,決定存儲(chǔ)在上述指令緩沖器中的上述多個(gè)指令之中、沒有上述第1依賴關(guān)系及上述第2依賴關(guān)系的指令的組,來作為能夠在上述下一周期發(fā)放給上述多個(gè)運(yùn)算器的指令的組;以及分配部,將由上述組決定部所決定的上述組中包含的上述指令,在上述下一周期發(fā)放給上述多個(gè)運(yùn)算器。因在現(xiàn)有硬件的指令分組機(jī)構(gòu)中實(shí)施的分組,而在指令組間發(fā)生代價(jià)周期的根本原因?yàn)椋诂F(xiàn)有硬件中只考慮指令緩沖器中所存儲(chǔ)的指令間的依賴關(guān)系,而無法檢測(cè)和已經(jīng)發(fā)放的指令組之間的依賴關(guān)系。根據(jù)該結(jié)構(gòu),不僅僅是指令緩沖器中所存儲(chǔ)的指令間的依賴關(guān)系,還參照和已經(jīng)發(fā)放的指令之間的依賴關(guān)系,決定在下一周期發(fā)放的指令的組。因此,可以緩和在已發(fā)放的指令組間發(fā)生的代價(jià),在指令發(fā)放之時(shí),能夠由簡(jiǎn)單的硬件實(shí)現(xiàn)在執(zhí)行性能的觀點(diǎn)上高效的發(fā)放組的決定(指令分組)。還有,本發(fā)明不僅僅可以作為這種具備特征性處理部的處理器來實(shí)現(xiàn),還可以作為以處理器中包含的特征性處理部執(zhí)行的處理為步驟的指令發(fā)放控制方法,來實(shí)現(xiàn)。另外, 也可以作為使計(jì)算機(jī)執(zhí)行指令發(fā)放控制方法中包含的特征性步驟的程序,來實(shí)現(xiàn)。而且,不言而喻,那種程序可以通過CD-ROM (Compact Disc-Read Only Memory)等非易失性存儲(chǔ)介質(zhì)或因特網(wǎng)等通信網(wǎng)絡(luò)使之流通。
發(fā)明效果根據(jù)本發(fā)明,不僅僅是將要發(fā)放的存在于指令緩沖器內(nèi)的指令間的依賴關(guān)系,還檢測(cè)存在于指令緩沖器內(nèi)的指令和已經(jīng)發(fā)放的指令組內(nèi)的指令之間的依賴關(guān)系,進(jìn)行指令分組。因此,緩和所發(fā)放的指令組間的代價(jià),有助于性能提高。若更加詳細(xì)地研究與上述性能提高有關(guān)的原因,則可以在定性地如下述2點(diǎn)那樣進(jìn)行說明。(1)是因?yàn)榭梢韵瓉砟軌蛱崆鞍l(fā)放的指令為了與和已經(jīng)發(fā)放的指令具有依賴關(guān)系的后續(xù)指令同時(shí)發(fā)放,而在已經(jīng)發(fā)放的指令完成之前,同具有依賴關(guān)系的后續(xù)指令一起,等待發(fā)放這樣的狀況。(2)是因?yàn)樵谌绻麑⒑鸵呀?jīng)發(fā)放的指令具有依賴關(guān)系的后續(xù)指令作為指令發(fā)放的起始指令實(shí)施了分組,則使并行度得到提高的情況下,可以減少因其后續(xù)指令不作為起始指令導(dǎo)致的分組效率的下降。
圖1是比較由理想的指令分組及現(xiàn)有硬件中的指令分組得到的執(zhí)行性能的附圖。圖2是表示現(xiàn)有硬件(以往的處理器)結(jié)構(gòu)的附圖。圖3是表示由現(xiàn)有硬件實(shí)施的指令分組細(xì)節(jié)的附圖。圖4是表示本發(fā)明實(shí)施方式所涉及的處理器結(jié)構(gòu)的附圖。圖5是表示資源狀態(tài)存儲(chǔ)表一例的附圖。圖6是表示由本發(fā)明實(shí)施方式所涉及的處理器實(shí)施的分組細(xì)節(jié)的附圖。圖7是表示由本發(fā)明實(shí)施方式所涉及的處理器中的指令分組得到的執(zhí)行性能的附圖。圖8是非就緒狀態(tài)的資源檢測(cè)處理的流程圖。圖9是對(duì)資源狀態(tài)存儲(chǔ)表的數(shù)據(jù)寫入處理的流程圖。圖10是指令發(fā)放控制方法的流程圖。
具體實(shí)施例方式首先,在說明一般的具有超標(biāo)量型體系結(jié)構(gòu)的處理器之后,對(duì)于本實(shí)施方式所涉及的處理器進(jìn)行說明。圖1是比較由2種指令分組得到的執(zhí)行性能的附圖。圖1的比較圖由指令代碼101、理想的結(jié)果102及以往結(jié)果103的各欄構(gòu)成。在指令代碼101中,表示出構(gòu)成循環(huán)處理的指令代碼,指令代碼101包括分支目的地的標(biāo)號(hào)、指令代碼的助記表示和指令要參照或定義的資源。這里,執(zhí)行指令代碼101所示的各指令的處理器(未圖示)最大可并行執(zhí)行3個(gè)指令,并且各由1個(gè)要件構(gòu)成了加載·存儲(chǔ)運(yùn)算器、積和運(yùn)算器、算術(shù)運(yùn)算器及分支執(zhí)行單元。但是,本發(fā)明的本質(zhì)并不是利用處理器的最大可并行執(zhí)行數(shù)、運(yùn)算器的種類及個(gè)數(shù)等的結(jié)構(gòu)做出任何限制。指令代碼101內(nèi)的Id指令及Idp指令分別是在加載·存儲(chǔ)運(yùn)算器中執(zhí)行的加載指令及加載對(duì)指令。mac指令是在積和運(yùn)算器中執(zhí)行的積和運(yùn)算指令。add指令是在算術(shù)運(yùn)算器中執(zhí)行的加法指令。br指令是在分支執(zhí)行單元中執(zhí)行的分支指令。有關(guān)上述指令的動(dòng)作細(xì)節(jié),只要是從業(yè)人員就可以輕易推斷。因此,其詳細(xì)的說明不在此重復(fù)。這里,假定Id指令、Idp指令執(zhí)行完成之前的周期數(shù),也就是潛伏期(Latency)是 2周期,其他指令的潛伏期是1周期。但是,這些執(zhí)行周期是暫時(shí)的定義,本發(fā)明的本質(zhì)并不是利用這些周期數(shù)的定義做出任何限制。圖1比較表的理想的結(jié)果102表示理想的指令分組結(jié)果。在理想的結(jié)果102的 Grp列中存在“//”的情況下,到該行為止的指令代碼作為發(fā)放組(在同一周期發(fā)放的指令的組)被定義,該行之后的指令作為新的發(fā)放組的起始指令代碼被定義。另外,懲罰 (Penalty)的列表示代價(jià)周期,表示到該行為止的發(fā)放組使下一發(fā)放組以后的某一個(gè)指令執(zhí)行停頓(stall)時(shí)的代價(jià)周期數(shù)。在下面表示理想的結(jié)果102中的指令分組的結(jié)果。[Id rl, (r4+) ] [mac acc, r2, r5] [add rO, _1](第 1 指令組)[Id r5, (r4+)](第 2 指令組)[mac acc, r3, rl] [ldp r2, r3, (r6+) ] [br rO,0L0001](第 3 指令組)理想的結(jié)果102表示在指令組間沒有發(fā)生代價(jià)周期,也就是在執(zhí)行性能的觀點(diǎn)上效率良好的指令分組的結(jié)果。其原因?yàn)?,在理想的結(jié)果102中,在第1指令組(Id,mac,add)和第2指令組(Id) 之間以及第2指令組(Id)和第3指令組(mac,ldp,br)之間,未發(fā)生代價(jià)周期。也就是說, 在指令組間處于依賴關(guān)系的情況下,全部在指令執(zhí)行開始之前,資源的參照都為可能。圖1比較表的以往結(jié)果103表示由現(xiàn)有的指令分組處理得到的指令分組的結(jié)果。 在下面表示以往結(jié)果103中指令分組的結(jié)果。[Id rl, (r4+) ] [mac acc, r2, r5] [add rO, _1](第 1 指令組)[Id r5, (r4+) ] [mac acc,r3,rl](第 2 指令組)[ldp r2, r3, (r6+) ] [br rO,0L0001](第 3 指令組)在以往結(jié)果103中,因?yàn)槲纯紤]指令組間的依賴關(guān)系,所以在第1指令組(ld,maC, add)和第2指令組(ld,mac)之間發(fā)生因真的依賴關(guān)系而產(chǎn)生的代價(jià)周期。其原因?yàn)?,在下一周期,mac指令要參照由Id指令定義的寄存器rl。這是因?yàn)樵贗d指令的執(zhí)行完成之前需要2周期,所以在mac指令的執(zhí)行開始之前將發(fā)生1周期的代價(jià)周期。最后,在理想結(jié)果102中,如下所示在循環(huán)1次的執(zhí)行中需要4周期。3 (3個(gè)指令組的發(fā)放周期)+1 (ldp的循環(huán)輸送依賴周期)=4另一方面,在以往結(jié)果103中,如下所示在循環(huán)1次的執(zhí)行中需要5周期。3 (3個(gè)指令組的發(fā)放周期)+1(與寄存器rl的依賴性有關(guān)的代價(jià)周期)+1 (ldp的循環(huán)輸送依賴周期)=5雖然至多是1周期的差,但是因?yàn)槭潜恢貜?fù)執(zhí)行的循環(huán)內(nèi)的代價(jià)周期,所以在媒體處理等中作為25%的性能下降,問題變得明顯。下面,對(duì)于在以往結(jié)果103中實(shí)施如上的分組的原因,詳細(xì)進(jìn)行說明。圖2是表示現(xiàn)有硬件(以往的處理器)結(jié)構(gòu)的附圖。在圖2中,實(shí)施以有序的并行執(zhí)行為前提的一般的指令發(fā)放控制。還有,在圖2中,雖然表示出可并行執(zhí)行3個(gè)指令的處理器,但是本發(fā)明的本質(zhì)并不是利用并行執(zhí)行數(shù),做出任何限制。
處理器包含指令緩沖器201 203、資源解碼部211 213、依賴關(guān)系檢測(cè)部231 及232和分配部241 M3。指令緩沖器201 203的各自是存儲(chǔ)從指令高速緩沖存儲(chǔ)器(未圖示)所取出的指令的存儲(chǔ)裝置。資源解碼部211 213分別提取由指令緩沖器201 203中所存儲(chǔ)的指令定義或者參照的資源的信息以及執(zhí)行該指令的運(yùn)算器的信息等。依賴關(guān)系檢測(cè)部231及232的各自檢測(cè)執(zhí)行指令的運(yùn)算器的依賴關(guān)系以及由指令定義或者參照的資源的依賴關(guān)系。也就是說,依賴關(guān)系檢測(cè)部231及232的各自檢測(cè)使用共用運(yùn)算器的指令間的依賴關(guān)系、定義或者參照共用資源的指令間的依賴關(guān)系。分配部241 243將指令組中包含的各指令恰當(dāng)?shù)匕l(fā)放給運(yùn)算器。在圖3中表示由圖2所示的現(xiàn)有硬件實(shí)施的分組的細(xì)節(jié)。首先,在指令緩沖器201、 202,203中所分別存儲(chǔ)的指令301、302、303之間資源限制及數(shù)據(jù)依賴限制的任一個(gè)都不存在。因此,由分配部241、242、243分配作為最大并行執(zhí)行數(shù)的指令的全部3個(gè)指令,給各運(yùn)算器發(fā)放指令311、312、313。接下來,在指令緩沖器201、202、203中分別存儲(chǔ)指令321、322、323。這里,因?yàn)橹噶?21、323都是在加載 存儲(chǔ)運(yùn)算器中執(zhí)行的指令,無法同時(shí)執(zhí)行,所以在指令321、323間發(fā)生資源限制。從而,只分配指令313和指令332。最后,在指令緩沖器201、202中分別存儲(chǔ)指令341、342。因?yàn)樵谥噶?41、342間資源限制、數(shù)據(jù)依賴限制的任一個(gè)都不存在,所以分配指令351、352。此時(shí),因?yàn)榈?指令組的指令332 (mac指令)要參照由第1指令組的指令311 (Id 指令)定義的寄存器rl,所以在第1指令組和第2指令組之間,發(fā)生數(shù)據(jù)依賴關(guān)系,也就是真的依賴關(guān)系。Id指令的潛伏期是2周期。因此,在第2指令組的指令執(zhí)行開始之前,發(fā)生 1周期的代價(jià)。從而,在圖1的比較圖中,在以往結(jié)果103的add指令列的Penalty項(xiàng)目中表示出“1”。如上所述,由于在理想的指令分組中沒有發(fā)生代價(jià)周期,因而在現(xiàn)有硬件的指令分組中,致使5/4 = 1. 25也就是25%的性能下降變得明顯。圖4是表示本發(fā)明實(shí)施方式所涉及的處理器結(jié)構(gòu)的附圖。本實(shí)施方式所涉及的處理器是最大可并行執(zhí)行3個(gè)指令的處理器。但是,本發(fā)明的本質(zhì)并不是對(duì)最大可并行執(zhí)行數(shù)做出任何限制。處理器包含指令緩沖器401 403、資源解碼部411 413、分配部441 443、周期解碼部451 453、非就緒檢測(cè)部461 463、依賴關(guān)系檢測(cè)部431及432和資源狀態(tài)存儲(chǔ)表470。指令緩沖器401 403、資源解碼部411 413及分配部441 443是和圖2中所示的現(xiàn)有硬件中的指令緩沖器201 203、資源解碼部211 213及分配部241 243分別具有相同功能的結(jié)構(gòu)要件。因此,其詳細(xì)的說明不在此重復(fù)。在下面,說明新添加的結(jié)構(gòu)要件。周期解碼部451、452、453分別對(duì)存儲(chǔ)在指令緩沖器401、402、403中的指令的潛伏
期進(jìn)行解碼。非就緒檢測(cè)部461、462、463以從周期解碼部451、452、453分別輸出的指令緩沖器401,402,403中所存儲(chǔ)的指令的潛伏期及從資源解碼部411、412、413分別輸出的由指令緩沖器401、402、403中所存儲(chǔ)的指令定義的資源信息為輸入,在潛伏期為2以上時(shí),將各指令定義的資源在指令組發(fā)放后的周期判定為非就緒。也就是說,在指令組發(fā)放后的周期(下一周期),判定出無法參照或者定義其資源。具體情況如下。例如,設(shè)為在指令緩沖器401中存儲(chǔ)著指令代碼[Id rl, (r4+)]。該指令是將通過參照寄存器r4來指定的地址的存儲(chǔ)器的值定義于寄存器rl中的指令,潛伏期是2。從而, 由該指令定義的寄存器rl在Id指令發(fā)放后的周期,判定為非就緒。判定為上述非就緒的資源(寄存器rl)被登錄于資源狀態(tài)存儲(chǔ)表470中。這里,對(duì)于資源狀態(tài)存儲(chǔ)表470進(jìn)行說明。圖5是表示資源狀態(tài)存儲(chǔ)表470 —例的附圖。資源狀態(tài)存儲(chǔ)表470是按每個(gè)資源存儲(chǔ)資源狀態(tài)的存儲(chǔ)裝置,按每個(gè)資源存儲(chǔ)著資源編號(hào)471、就緒標(biāo)志472和非就緒持續(xù)周期數(shù)473。就緒標(biāo)志472是表示能否從下一發(fā)放周期開始參照資源的標(biāo)志。在就緒標(biāo)志472 為1的情況下,表示能夠從下一發(fā)放周期開始立即參照資源,也就是說資源不是非就緒(是就緒)。在就緒標(biāo)志472為0的情況下,表示不能從下一發(fā)放周期開始立即參照資源,也就是說資源是非就緒。非就緒持續(xù)周期數(shù)473表示非就緒的狀態(tài)持續(xù)的周期數(shù)。若將話題回到上述Id指令的寄存器rl,就是由于寄存器rl在Id指令后的周期判定為非就緒,因而資源狀態(tài)存儲(chǔ)表470接受從非就緒檢測(cè)部461所輸出的非就緒信息,在與寄存器rl對(duì)應(yīng)的表項(xiàng)目的就緒標(biāo)志472為1的情況下,把就緒標(biāo)志472變更為0,在非就緒持續(xù)周期數(shù)473中登錄2。在就緒標(biāo)志472已經(jīng)是0的情況下,資源狀態(tài)存儲(chǔ)表470比較將要新登錄的非就緒持續(xù)周期數(shù)和登錄在非就緒持續(xù)周期數(shù)473中的現(xiàn)有周期數(shù)。資源狀態(tài)存儲(chǔ)表470在將要新登錄的非就緒持續(xù)周期數(shù)較大的情況下,把新的非就緒持續(xù)周期數(shù)登錄于非就緒持續(xù)周期數(shù)473中。資源狀態(tài)存儲(chǔ)表470在將要新登錄的非就緒持續(xù)周期數(shù)較小的情況下,不進(jìn)行將新的周期數(shù)登錄于非就緒持續(xù)周期數(shù)473中的處理,而成為現(xiàn)有的周期數(shù)繼續(xù)登錄在非就緒持續(xù)周期數(shù)473中的原狀。上面,對(duì)于與從非就緒檢測(cè)部461輸出的非就緒信息有關(guān)的資源狀態(tài)存儲(chǔ)表470的處理進(jìn)行了說明,但是有關(guān)從非就緒檢測(cè)部462及463輸出的非就緒信息,也并行實(shí)施同樣的處理。依賴關(guān)系檢測(cè)部431、432不僅僅是和現(xiàn)有硬件相同,檢測(cè)指令緩沖器401、402、 403中所存儲(chǔ)的指令間的依賴關(guān)系(技術(shù)方案中的第1依賴關(guān)系),還檢測(cè)指令緩沖器401、 402,403中所存儲(chǔ)的各指令和資源狀態(tài)存儲(chǔ)表470各資源的項(xiàng)目之間的依賴關(guān)系(技術(shù)方案中的第2依賴關(guān)系)。也就是說,依賴關(guān)系檢測(cè)部431、432參照資源狀態(tài)存儲(chǔ)表470中所登錄的各資源項(xiàng)目的就緒標(biāo)志472,檢測(cè)和作為非就緒狀態(tài)的項(xiàng)目處于依賴關(guān)系的指令。依賴關(guān)系檢測(cè)部431、432在指令緩沖器401、402、403中所存儲(chǔ)的指令間檢測(cè)依賴性,或者在指令緩沖器401、402、403中所存儲(chǔ)的各指令和資源狀態(tài)存儲(chǔ)表470的各資源所對(duì)應(yīng)的項(xiàng)目之間檢測(cè)出依賴性的情況下,將檢測(cè)出依賴性的指令之前的指令設(shè)為發(fā)放組的定界。到發(fā)放組的定界為止的指令被存儲(chǔ)于分配部441、442、443中,給運(yùn)算器單元恰當(dāng)?shù)匕l(fā)放分配部441、442、443中所存儲(chǔ)的到發(fā)放組的定界為止的指令。
在根據(jù)資源狀態(tài)存儲(chǔ)表470的項(xiàng)目的依賴關(guān)系,決定出發(fā)放組的情況下,非就緒檢測(cè)部461 463將對(duì)應(yīng)的項(xiàng)目的就緒標(biāo)志472設(shè)定為1,將非就緒持續(xù)周期數(shù)473設(shè)定為 O0在圖6中表示由圖4所示的處理器實(shí)施的分組的細(xì)節(jié)。首先,在指令緩沖器401、 402,403中所分別存儲(chǔ)的指令501、502、503間資源限制、數(shù)據(jù)依賴限制都不存在。因此,由分配部441、442、443給各運(yùn)算器發(fā)放作為最大并行執(zhí)行數(shù)的全部3個(gè)指令(指令511、512、 513)。接下來,在指令緩沖器401、402、403中,分別存儲(chǔ)指令521、522、523。這里,因?yàn)橹噶?21、指令523全都在加載·存儲(chǔ)運(yùn)算器中執(zhí)行,所以在指令521、523間發(fā)生資源限制。 再者,在指令511和指令522之間發(fā)生由寄存器rl而產(chǎn)生的真的依賴關(guān)系,且Id指令的潛伏期是2。因此,在緊接著第1指令組的指令511、512、513的執(zhí)行之后,不能參照寄存器rl。從而,在指令511和指令522之間判定為存在依賴關(guān)系,只有指令522之前的指令 521才成為第2指令組。從而,只分配指令531。最后,在指令緩沖器401、402、403中,分別存儲(chǔ)指令M1542543。因?yàn)樵谥噶?541,542,543間資源限制、數(shù)據(jù)依賴限制都不存在,所以分配指令551、552、553。若這樣定義了指令組,則在第3指令組的541參照由第1指令組的511定義的寄存器rl之前,第1指令組511的執(zhí)行已經(jīng)完成。因此,在指令511和指令551之間不發(fā)生代價(jià)周期。在圖7中表示采用本方案方法的執(zhí)行性能。圖7的比較圖是在圖1的比較圖中添加了本發(fā)明結(jié)果604的欄后的附圖。本發(fā)明結(jié)果604的欄表示根據(jù)本實(shí)施方式的指令的分組結(jié)果。在以往結(jié)果103的欄中所示的由現(xiàn)有硬件做出的指令分組中,發(fā)生了 1周期的代價(jià)。但是,在本發(fā)明結(jié)果604 中和理想的結(jié)果102相同,沒有發(fā)生代價(jià)周期。從而,解決了使執(zhí)行性能下降的課題。雖然在上面也說明了概要,但是在下面將詳細(xì)說明由圖4的非就緒檢測(cè)部461、 462,463執(zhí)行的處理。圖8是使用非就緒檢測(cè)部461的非就緒狀態(tài)的資源檢測(cè)處理的流程圖。還有,因?yàn)榉蔷途w檢測(cè)部462、463也執(zhí)行和非就緒檢測(cè)部461相同的處理,所以其詳細(xì)的說明不重復(fù)。首先,在資源解碼部411中,檢測(cè)由指令緩沖器401內(nèi)的指令定義的資源(S701)。 接下來,周期解碼部451檢測(cè)指令緩沖器401內(nèi)指令的潛伏期(S702)。非就緒檢測(cè)部461根據(jù)在S701、S702中所取得的信息,判斷是否由指令緩沖器401 內(nèi)的指令定義當(dāng)前在其指令內(nèi)使用的資源(S703)。在判斷為不由指令定義資源的情況下(S703中的“否”),非就緒檢測(cè)部461判定為其資源不是非就緒狀態(tài),也就是說能夠從下一發(fā)放周期開始立即參照(S705)。在判斷為指令定義資源的情況下(S703中的“是”),非就緒檢測(cè)部461判斷指令緩沖器401內(nèi)指令的潛伏期是否是2以上(S704)。在潛伏期不是2以上的情況下,也就是在潛伏期為1的情況下(S704中的“否”),非就緒檢測(cè)部461判定為其資源不是非就緒,也就是說能夠從下一發(fā)放周期開始立即參照(S705)。相反,在S703、S704的判定結(jié)果全都為真,也就是在判定為指令定義特定的資源, 且潛伏期為2以上的情況下(S703中的“是”,且S704中的“是”),非就緒檢測(cè)部461判定為其資源是非就緒(S706)。所謂的資源是非就緒,也就是表示不能從下一發(fā)放周期開始立即參照。圖9是對(duì)資源狀態(tài)存儲(chǔ)表470的數(shù)據(jù)寫入處理的流程圖。首先,在資源狀態(tài)存儲(chǔ)表470中,輸入從非就緒檢測(cè)部461 463所輸出的非就緒信息(資源編號(hào)、非就緒持續(xù)周期數(shù)(=指令的潛伏期))。資源狀態(tài)存儲(chǔ)表470判定利用圖8中所說明的非就緒檢測(cè)的算法檢測(cè)出的該非就緒信息的合計(jì)數(shù)(S801)。在非就緒信息 1個(gè)也不存在的情況下(S801中的“否”),資源狀態(tài)存儲(chǔ)表470將表內(nèi)全部處于非就緒狀態(tài)的項(xiàng)目的非就緒持續(xù)周期數(shù)473,減去預(yù)定的數(shù)(在典型的例子中為“1”)(S808)。在非就緒信息存在1個(gè)以上的情況下(S801中的“是”),資源狀態(tài)存儲(chǔ)表470判定在非就緒信息的資源編號(hào)中有沒有重復(fù)(S802)。在非就緒信息的資源編號(hào)中有重復(fù)的情況下(S802中的“是”),資源狀態(tài)存儲(chǔ)表470選擇同一資源編號(hào)的非就緒信息之內(nèi),潛伏期最大的非就緒信息(S803)。資源狀態(tài)存儲(chǔ)表470參照表內(nèi)該資源(非就緒資源)的項(xiàng)目(S804)。該項(xiàng)目參照及以后的項(xiàng)目?jī)?nèi)容更新在從非就緒檢測(cè)部461 463所輸出的非就緒信息中沒有重復(fù)的情況下,將以最大3個(gè)并行的形式在硬件上實(shí)施。資源狀態(tài)存儲(chǔ)表470判定由非就緒信息的資源編號(hào)指定的該資源項(xiàng)目是否是就緒狀態(tài)(S805)。如果該資源項(xiàng)目是就緒狀態(tài)(S805中的“是”),則資源狀態(tài)存儲(chǔ)表470立即將該資源項(xiàng)目的就緒標(biāo)志472變?yōu)?,在非就緒持續(xù)周期數(shù)473中登錄非就緒信息的潛伏期 (S807)。在該資源項(xiàng)目已經(jīng)是非就緒狀態(tài)的情況下(S805中的“否”),資源狀態(tài)存儲(chǔ)表470 判定該資源項(xiàng)目的非就緒持續(xù)周期數(shù)是否是比非就緒信息的潛伏期更小的值(S806)。在該資源項(xiàng)目的非就緒持續(xù)周期數(shù)473是比非就緒信息的潛伏期更小的值的情況下(S806中的“是”),資源狀態(tài)存儲(chǔ)表470立即在該資源項(xiàng)目的非就緒持續(xù)周期數(shù)473 中,登錄非就緒信息的潛伏期(S807)。在該資源項(xiàng)目的非就緒持續(xù)周期數(shù)473為非就緒信息的潛伏期以上的情況下 (S806中的“否”),現(xiàn)有的非就緒持續(xù)周期數(shù)按原狀保持于資源狀態(tài)存儲(chǔ)表470的該項(xiàng)目中。無論S807處理的實(shí)施有無,最后都實(shí)施S808的處理。通過上述處理,資源狀態(tài)存儲(chǔ)表470各資源的就緒狀態(tài)被恰當(dāng)?shù)馗?。在圖10中表示指令發(fā)放控制方法的流程圖。首先,依賴關(guān)系檢測(cè)部431檢測(cè)指令緩沖器401中存儲(chǔ)的指令和指令緩沖器402 中存儲(chǔ)的指令之間的依賴關(guān)系。將該依賴關(guān)系定義為(依賴性A-1)(S901)。同時(shí),依賴關(guān)系檢測(cè)部432檢測(cè)指令緩沖器401中存儲(chǔ)的指令和指令緩沖器403 中存儲(chǔ)的指令之間的依賴關(guān)系,以及指令緩沖器402中存儲(chǔ)的指令和指令緩沖器403中存儲(chǔ)的指令之間的依賴關(guān)系。將該依賴關(guān)系定義為(依賴性A-2)(S901)。再者,依賴關(guān)系檢測(cè)部431和上述(依賴性A-1) —起,檢測(cè)指令緩沖器402中存儲(chǔ)的指令和資源狀態(tài)存儲(chǔ)表470的各資源之間的依賴關(guān)系。將該依賴關(guān)系定義為(依賴性 B-1)(S902)。
再者同時(shí),依賴關(guān)系檢測(cè)部432和上述(依賴性A-2) —起,檢測(cè)指令緩沖器403 中存儲(chǔ)的指令和資源狀態(tài)存儲(chǔ)表470各資源的項(xiàng)目之間的依賴關(guān)系。將該依賴關(guān)系定義為 (依賴性 B-2) (S902)。在(依賴性A-1)、(依賴性A-2)、(依賴性B-1)及(依賴性B_2)的任一個(gè)都不存在的情況下(S903中的“是”),分配部441、442、443分配指令緩沖器401、402、403中存儲(chǔ)的全部指令(S904)。在(依賴性A-1)、(依賴性A-2)、(依賴性B-1)及(依賴性B_2)的某一個(gè)存在的情況下(S903中的“否”),進(jìn)行下面所示的指令分配的控制。也就是說,在(依賴性A-2)及(依賴性B-2)全都不存在,而存在(依賴性A_l)或者(依賴性B-1)的情況下,意味著指令緩沖器401中存儲(chǔ)的指令或者資源狀態(tài)存儲(chǔ)表470 的對(duì)應(yīng)項(xiàng)目和指令緩沖器402中存儲(chǔ)的指令之間存在依賴關(guān)系。這種情況下,依賴關(guān)系檢測(cè)部431檢測(cè)上述依賴性,對(duì)分配部442 443發(fā)送控制信號(hào),抑制指令緩沖器402、403中存儲(chǔ)的指令的分配。也就是說,只分配指令緩沖器401中所存儲(chǔ)的指令(S905、S906)。另外,在(依賴性A-1)及(依賴性B-1)全都不存在,而存在(依賴性A-2)或者 (依賴性B-幻的情況下,意味著在指令緩沖器401或指令緩沖器402中存儲(chǔ)的指令或者資源狀態(tài)存儲(chǔ)表470的對(duì)應(yīng)項(xiàng)目和指令緩沖器403中存儲(chǔ)的指令之間存在依賴關(guān)系。這種情況下,依賴關(guān)系檢測(cè)部432檢測(cè)上述依賴性,對(duì)分配部443發(fā)送控制信號(hào),抑制指令緩沖器 403中存儲(chǔ)的指令的分配。也就是說,只分配指令緩沖器401、402中所存儲(chǔ)的指令(S905、 S906)。再者,在存在(依賴性A-1)或者(依賴性B-1),且存在(依賴性A-2)或者(依賴性B-2)的情況下(若以數(shù)學(xué)的形式來表示,就是“((依賴性A-1) I I (依賴性B-l))&&((依賴性A-2) I I (依賴性B-2)) ”),使指令緩沖器402的分配抑制優(yōu)先。也就是說,在存在(依賴性A-1)或者(依賴性B-1)的情況下,不管(依賴性A-2)或者(依賴性B-2)的存在,都抑制指令緩沖器402、403的分配,只分配指令緩沖器401中存儲(chǔ)的指令(S905、S906)。這里,“&&”表示邏輯與,“ I I,,表示邏輯或。通過上述的處理,不僅僅是指令緩沖器401、402、403中存儲(chǔ)的指令間的依賴關(guān)系,還可以檢測(cè)和已經(jīng)發(fā)放的指令組內(nèi)的指令之間的依賴關(guān)系,控制指令組的發(fā)放。因此, 能夠緩和發(fā)放后的指令組間的代價(jià),有助于性能提高。另外,上述方法是指令緩沖器為3個(gè)時(shí)的處理,但是即便在指令緩沖器為4個(gè)以上的情況下,該方法也相同,該方法為,在指令間檢測(cè)出多個(gè)依賴關(guān)系時(shí),從起始指令開始,有關(guān)最近的依賴性控制發(fā)放組,也就是說控制發(fā)放組以使在指令組內(nèi)的指令間不存在依賴關(guān)系。另外,雖然在圖4中是起始的指令緩沖器已被固定的例子,但是還能夠?qū)嵤┫率瞿菢痈咝У奶幚?,即將指令緩沖器環(huán)形結(jié)合,更新與之相伴的表示起始指令的指針,進(jìn)行利用起始指針變更的依賴關(guān)系檢測(cè)部、分配部的控制變更,但是有關(guān)該內(nèi)容,因?yàn)椴皇潜緦@谋举|(zhì),所以省略其說明。此次公示出的實(shí)施方式應(yīng)當(dāng)認(rèn)為,在所有方面是示例,并不用來限制。本發(fā)明的范圍不是由上述的說明,而是由技術(shù)方案來表示,意圖包含和技術(shù)方案均等的意義及范圍內(nèi)的所有變更。
產(chǎn)業(yè)上的可利用性本發(fā)明是一種涉及并行執(zhí)行體系結(jié)構(gòu)的基礎(chǔ)之技術(shù),盡管是簡(jiǎn)單的硬件,仍然能夠提供執(zhí)行性能高的處理器。根據(jù)本發(fā)明,能夠一邊維持二進(jìn)制互換性,一邊實(shí)現(xiàn)可并行執(zhí)行的簡(jiǎn)單的體系結(jié)構(gòu)。從而,在嵌入式領(lǐng)域、通用PC (Personal Computer)領(lǐng)域、超級(jí)計(jì)算領(lǐng)域等的任一個(gè)中都應(yīng)當(dāng)成為有用的技術(shù)。符號(hào)說明201 203,401 403指令緩沖器211 213,411 413資源解碼部231、232、431、432依賴關(guān)系檢測(cè)部241 243,441 443 分配部451 453周期解碼部461 463非就緒檢測(cè)部470資源狀態(tài)存儲(chǔ)表
權(quán)利要求
1.一種處理器,能夠?qū)⒍鄠€(gè)指令同時(shí)發(fā)放給多個(gè)運(yùn)算器,其特征為, 具備指令緩沖器,保存向多個(gè)運(yùn)算器發(fā)放的預(yù)定的多個(gè)指令;組決定部,檢測(cè)第1依賴關(guān)系和第2依賴關(guān)系,決定保存在上述指令緩沖器中的上述多個(gè)指令之中、沒有上述第1依賴關(guān)系及上述第2依賴關(guān)系的任一個(gè)依賴關(guān)系的指令的組,來作為能夠發(fā)放給上述多個(gè)運(yùn)算器的指令的組,上述第1依賴關(guān)系是存在于上述指令緩沖器中所保存的任意2個(gè)指令間的依賴關(guān)系,上述第2依賴關(guān)系是存在于上述指令緩沖器中所保存的各指令和已發(fā)放的各指令之間的依賴關(guān)系;以及分配部,將由上述組決定部所決定的上述組中包含的上述指令,發(fā)放給上述多個(gè)運(yùn)算ο
2.如權(quán)利要求1所述的處理器,其特征為, 上述組決定部,包含資源解碼部,確定由上述指令緩沖器中所保存的各指令所定義或者參照的資源的信息以及要執(zhí)行的運(yùn)算器的信息;依賴關(guān)系檢測(cè)部,根據(jù)上述資源解碼部所確定的上述資源的信息及上述運(yùn)算器的信息,來檢測(cè)上述第1依賴關(guān)系及上述第2依賴關(guān)系。
3.如權(quán)利要求2所述的處理器,其特征為,上述依賴關(guān)系檢測(cè)部在上述指令緩沖器中所保存的任意2個(gè)指令定義或者參照同一資源的情況下,或者該任意2個(gè)指令在同一運(yùn)算器中執(zhí)行的情況下,判斷為在上述任意的2 個(gè)指令間存在上述第1依賴關(guān)系。
4.如權(quán)利要求2或3所述的處理器,其特征為,上述依賴關(guān)系檢測(cè)部比較上述指令緩沖器中所保存的各指令和已發(fā)放的各指令,在2 個(gè)指令定義或者參照同一資源的情況下,或者該任意2個(gè)指令在同一運(yùn)算器中執(zhí)行的情況下,判斷為在上述2個(gè)指令間存在上述第2依賴關(guān)系。
5.如權(quán)利要求4所述的處理器,其特征為, 上述組決定部,還包含周期解碼部,按上述指令緩沖器中所保存的每個(gè)指令,提取直到該指令在上述運(yùn)算器上的執(zhí)行完成為止的周期數(shù);以及非就緒檢測(cè)部,根據(jù)上述周期解碼部中的提取結(jié)果,按上述指令緩沖器中所保存的每個(gè)指令,檢測(cè)直到由該指令定義的資源的定義完成為止需要規(guī)定周期數(shù)以上的資源,將檢測(cè)出的上述資源判定為是不能在下一周期參照的非就緒狀態(tài);上述依賴關(guān)系檢測(cè)部按上述指令緩沖器中所保存的每個(gè)指令,在該指令參照被判定為由已發(fā)放的指令定義的資源是非就緒狀態(tài)的上述資源的情況下,判斷為在該指令和上述已發(fā)放的指令之間存在上述第2依賴關(guān)系。
6.如權(quán)利要求5所述的處理器,其特征為,上述組決定部還包含資源狀態(tài)存儲(chǔ)表,該資源狀態(tài)存儲(chǔ)表根據(jù)上述就緒檢測(cè)部中的判定結(jié)果,按每個(gè)資源,存儲(chǔ)著該資源是否是非就緒狀態(tài),上述依賴關(guān)系檢測(cè)部通過參照上述資源狀態(tài)存儲(chǔ)表,來判斷是否存在上述第2依賴關(guān)系。
7.如權(quán)利要求6所述的處理器,其特征為,上述資源狀態(tài)存儲(chǔ)表按每個(gè)資源存儲(chǔ)著就緒標(biāo)志和非就緒持續(xù)周期數(shù),該就緒標(biāo)志表示該資源是否是能夠在下一周期參照的就緒狀態(tài),該非就緒持續(xù)周期數(shù)表示該資源的上述非就緒狀態(tài)持續(xù)的周期數(shù)。
8.如權(quán)利要求7所述的處理器,其特征為,每次由上述分配部向上述多個(gè)運(yùn)算器發(fā)放上述組中包含的上述指令,上述資源狀態(tài)存儲(chǔ)表都將存儲(chǔ)在上述資源狀態(tài)存儲(chǔ)表中的上述非就緒持續(xù)周期數(shù)減去規(guī)定數(shù)。
9.如權(quán)利要求7或8所述的處理器,其特征為,上述資源狀態(tài)存儲(chǔ)表在上述指令緩沖器中所存儲(chǔ)的多個(gè)指令定義同一資源的情況下, 根據(jù)上述周期解碼部中的提取結(jié)果,將各指令的上述周期數(shù)之中最大的周期數(shù)存儲(chǔ)于上述資源狀態(tài)存儲(chǔ)表中,來作為與上述同一資源對(duì)應(yīng)的上述非就緒持續(xù)周期數(shù)。
10.如權(quán)利要求8所述的處理器,其特征為,在對(duì)于上述資源狀態(tài)存儲(chǔ)表中存儲(chǔ)的上述就緒標(biāo)志已經(jīng)表示上述非就緒狀態(tài),且作為上述非就緒持續(xù)周期數(shù)已經(jīng)設(shè)定周期數(shù)的資源,由上述指令緩沖器中保存的指令定義該資源的情況下,只有在上述指令緩沖器中保存的上述指令的到在上述運(yùn)算器上的執(zhí)行完成為止的周期數(shù)比上述非就緒持續(xù)周期數(shù)更大時(shí),才在上述非就緒持續(xù)周期數(shù)上,覆蓋上述指令緩沖器中保存的上述指令的到在上述運(yùn)算器上的執(zhí)行完成為止的周期數(shù)。
11.如權(quán)利要求7 10任一項(xiàng)所述的處理器,其特征為,上述依賴關(guān)系檢測(cè)部通過參照上述資源狀態(tài)存儲(chǔ)表的上述就緒標(biāo)志,來檢測(cè)上述第2 依賴關(guān)系。
12.如權(quán)利要求11所述的處理器,其特征為,上述組決定部在由上述依賴關(guān)系檢測(cè)部檢測(cè)出上述第1依賴關(guān)系及上述第2依賴關(guān)系的任一個(gè)依賴關(guān)系的情況下,決定上述指令緩沖器中保存的指令之中、到執(zhí)行順序上在具有檢測(cè)出的依賴關(guān)系的指令之前為止的指令,來作為能夠在下一周期發(fā)放給上述多個(gè)運(yùn)算器的指令的組。
13.如權(quán)利要求12所述的處理器,其特征為,上述組決定部在根據(jù)上述第2依賴關(guān)系,決定出新的上述組的情況下,在求取上述第2 依賴關(guān)系時(shí)所參照的上述就緒標(biāo)志中設(shè)定表示是上述就緒狀態(tài)的值,將與該就緒標(biāo)志對(duì)應(yīng)的項(xiàng)目的上述非就緒持續(xù)周期數(shù)設(shè)定為0。
14.如權(quán)利要求12或13所述的處理器,其特征為,在由上述組決定部決定出上述組之后,將執(zhí)行順序上在該組中包含的指令之后的指令設(shè)為在下一周期發(fā)放的指令的組的起始指令。
全文摘要
處理器具備指令緩沖器(401)~(403),保存向多個(gè)運(yùn)算器發(fā)放的預(yù)定的多個(gè)指令;依賴關(guān)系檢測(cè)部(431,432),檢測(cè)第1依賴關(guān)系和第2依賴關(guān)系,決定指令緩沖器存儲(chǔ)的多個(gè)指令之中,沒有第1依賴關(guān)系及第2依賴關(guān)系的任一個(gè)依賴關(guān)系的指令的組,來作為能夠發(fā)放給多個(gè)運(yùn)算器的指令的組,上述第1依賴關(guān)系是存在于指令緩沖器中所存儲(chǔ)的任意2個(gè)指令間的依賴關(guān)系,上述第2依賴關(guān)系是存在于指令緩沖器中所存儲(chǔ)的各指令和已發(fā)放的各指令之間的依賴關(guān)系;以及分配部(441)~(443),將決定出的組中包含的指令發(fā)放給多個(gè)運(yùn)算器。
文檔編號(hào)G06F9/38GK102422262SQ201080020018
公開日2012年4月18日 申請(qǐng)日期2010年4月23日 優(yōu)先權(quán)日2009年5月8日
發(fā)明者山名智尋 申請(qǐng)人:松下電器產(chǎn)業(yè)株式會(huì)社