專利名稱:處理器和編譯器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種DSP(Digital Signal Processor)或CPU(CentralProcessing Unit)等處理器和生成由該處理器執(zhí)行的指令的編譯器,尤其是涉及適于聲音或圖像等的信號(hào)處理的處理器和編譯器。
背景技術(shù):
隨著多媒體技術(shù)的發(fā)展,要求有高速執(zhí)行以聲音或圖像等的信號(hào)處理為代表的媒體處理的處理器。作為適應(yīng)于該要求的現(xiàn)有處理器,有支持SIMD(Single Instruction Multiple Data)型指令的處理器。例如美國(guó)Intel公司的MMX Pentium(R)、SSE PentiumIII等。MMXPentium以存儲(chǔ)在64比特長(zhǎng)度的MMX寄存器中的最大8個(gè)整數(shù)為對(duì)象,由一個(gè)指令來(lái)掃描相同的操作。
在這種現(xiàn)有處理器中,如[オ-ム公司開發(fā)局著[IA-64處理器基本講座]オ-ム公司、1999年8月25日、p.129的圖4.32]中所記載的那樣,通過(guò)軟件流水線操作來(lái)進(jìn)行處理的高速化。
圖56是表示基于現(xiàn)有4級(jí)軟件流水線操作的處理器動(dòng)作的圖。為了實(shí)現(xiàn)軟件流水線操作,將用于表示是否執(zhí)行指令的預(yù)測(cè)的預(yù)測(cè)標(biāo)志存儲(chǔ)在預(yù)測(cè)寄存器中。此外將軟件流水線操作的序言(prolog)部的處理結(jié)束前的次數(shù)存儲(chǔ)在循環(huán)計(jì)數(shù)器中,將結(jié)局(epilogue)部的處理結(jié)束前的次數(shù)存儲(chǔ)在結(jié)局計(jì)數(shù)器中。
但是,在上述現(xiàn)有處理器中,將循環(huán)計(jì)數(shù)器、結(jié)局計(jì)數(shù)器和預(yù)測(cè)標(biāo)志作為不同硬件資源進(jìn)行管理。因此,處理器內(nèi)必需持有很多資源,存在電路規(guī)模變大的問(wèn)題。
另外,伴隨電路規(guī)模變大,還存在處理器的消耗功率變大的問(wèn)題。
發(fā)明內(nèi)容
因此,本發(fā)明鑒于這種狀況作出,其目的在于提供一種電路規(guī)模小、且可以低功耗高速執(zhí)行循環(huán)處理的處理器。
為了實(shí)現(xiàn)上述目的,本發(fā)明的處理器是譯碼并執(zhí)行指令的處理器,具備存儲(chǔ)在條件執(zhí)行指令的預(yù)測(cè)中所用的多個(gè)條件執(zhí)行用標(biāo)志的標(biāo)志寄存器;譯碼指令的譯碼裝置;和執(zhí)行由所述譯碼裝置譯碼的指令的執(zhí)行裝置,在所述譯碼裝置譯碼循環(huán)指令的情況下,所述執(zhí)行裝置根據(jù)由軟件流水線操作將作為對(duì)象的循環(huán)展開成條件執(zhí)行指令時(shí)的結(jié)局部所對(duì)應(yīng)的所述多個(gè)條件執(zhí)行用標(biāo)志中任一值,結(jié)束所述循環(huán)的重復(fù)處理。
這樣,根據(jù)由軟件流水線操作將循環(huán)展開為條件執(zhí)行指令時(shí)的結(jié)局部的條件執(zhí)行用標(biāo)志來(lái)進(jìn)行循環(huán)重復(fù)處理的結(jié)束判斷。因此,不必為了判斷循環(huán)處理結(jié)束而使用計(jì)數(shù)器等特別的硬件資源,處理器的電路規(guī)模不會(huì)變大。另外,與此同時(shí)可減小處理器的功耗。
另外,所述標(biāo)志寄存器中還存儲(chǔ)用于所述結(jié)束判斷的循環(huán)用標(biāo)志,所述執(zhí)行裝置將所述結(jié)局部中的所述多個(gè)條件執(zhí)行用標(biāo)志中任一值寫入所述循環(huán)用標(biāo)志。例如,所述執(zhí)行裝置在將所述軟件流水線操作的級(jí)數(shù)設(shè)為N級(jí)(N為3以上的整數(shù)),將流水線的級(jí)數(shù)設(shè)為按所述結(jié)局部結(jié)束處理的順序升序計(jì)數(shù)時(shí),將第(N-2)級(jí)的流水線執(zhí)行的條件執(zhí)行指令所對(duì)應(yīng)的條件執(zhí)行用標(biāo)志的值寫入所述結(jié)局部在1周期后的所述循環(huán)用標(biāo)志中。
這樣,使用由軟件流水線操作的級(jí)數(shù)特定的條件執(zhí)行用標(biāo)志的值來(lái)進(jìn)行循環(huán)的結(jié)束判斷。因此,無(wú)論軟件流水線操作的級(jí)數(shù)如何,都不必為了判斷循環(huán)處理結(jié)束而使用計(jì)數(shù)器等特別硬件資源,電路規(guī)模不會(huì)變大。另外,與此同時(shí)可減小處理器的功耗。
另外,上述處理器還包含暫時(shí)存儲(chǔ)所述譯碼裝置譯碼的所述指令的指令緩沖器,所述譯碼裝置在根據(jù)所述結(jié)局部的所述條件執(zhí)行用標(biāo)志的值來(lái)判斷為不執(zhí)行所述條件執(zhí)行指令的情況下,在所述循環(huán)結(jié)束之前,不從所述指令緩沖器中讀出所述條件執(zhí)行指令。
這樣,當(dāng)結(jié)局部不執(zhí)行條件執(zhí)行指令時(shí),在著重的循環(huán)處理結(jié)束之前,該軟件流水線操作中不執(zhí)行條件執(zhí)行指令。因此,其間,不必從指令緩沖器中讀出條件執(zhí)行指令,與此同時(shí)可減小處理器的功耗。
本發(fā)明另一方面的編譯器是將源程序編譯成可并行處理的處理器用機(jī)器語(yǔ)言程序的編譯器,包含對(duì)所述源程序進(jìn)行語(yǔ)法分析的解析(parse)步驟;將分析出的所述源程序變換為中間代碼的中間代碼變換步驟;使所述中間代碼最佳化的最佳化步驟;和將最佳化后的所述中間代碼變換為機(jī)器語(yǔ)言指令的代碼生成步驟,所述處理器中存儲(chǔ)在條件執(zhí)行指令的預(yù)測(cè)中所用的多個(gè)標(biāo)志,在所述最佳化步驟中,當(dāng)所述中間代碼中包含循環(huán)的情況下,在由軟件流水線操作展開所述循環(huán)時(shí)的序言部中配置在所述循環(huán)緊前面執(zhí)行的指令。
這樣,在由軟件流水線操作展開循環(huán)時(shí)的序言部中配置在循環(huán)之前執(zhí)行的指令。因此,可削減軟件流水線操作的空階段,可高速執(zhí)行程序。與此同時(shí),可減小處理器執(zhí)行由該編譯器編譯的程序的功耗。
本發(fā)明的再一方面的編譯器是將源程序編譯成可并行處理的處理器用機(jī)器語(yǔ)言程序的編譯器,包含對(duì)所述源程序進(jìn)行語(yǔ)法分析的解析(parse)步驟;將分析出的所述源程序變換為中間代碼的中間代碼變換步驟;使所述中間代碼最佳化的最佳化步驟;和將最佳化后的所述中間代碼變換為機(jī)器語(yǔ)言指令的代碼生成步驟,所述處理器中存儲(chǔ)在條件執(zhí)行指令的預(yù)測(cè)中所用的多個(gè)標(biāo)志,在所述最佳化步驟中,當(dāng)所述中間代碼中包含條件分支指令的情況下,使在滿足該條件時(shí)的條件執(zhí)行指令的預(yù)測(cè)中所用的標(biāo)志、和在不滿足該條件時(shí)的條件執(zhí)行指令的預(yù)測(cè)中所用的標(biāo)志不同,來(lái)進(jìn)行分配。
這樣,即使象C語(yǔ)言中的if-else語(yǔ)句那樣在規(guī)定條件成立時(shí)執(zhí)行的指令與不成立時(shí)執(zhí)行的指令不同,也使用于預(yù)測(cè)的標(biāo)志不同,以對(duì)應(yīng)于各個(gè)指令。由此,僅通過(guò)改變標(biāo)志值就可實(shí)現(xiàn)與條件分支指令等效的處理。這樣,因?yàn)榭梢院?jiǎn)易處理來(lái)實(shí)現(xiàn)條件分支指令,所以可減小執(zhí)行由該編譯器編譯的程序的處理器功耗。
另外,本發(fā)明不僅可實(shí)現(xiàn)為執(zhí)行這種特征指令的處理器或生成特征指令的編譯器,也可實(shí)現(xiàn)為對(duì)多個(gè)數(shù)據(jù)等的運(yùn)算處理方法或?qū)崿F(xiàn)為包含特征指令的程序。另外,不用說(shuō),也可經(jīng)CD-ROM(CompactDisc-Read Only Memory)等記錄媒體或因特網(wǎng)等傳送媒體來(lái)流通這種程序。
參照說(shuō)明本發(fā)明一特定實(shí)施例的附圖,本發(fā)明的上述和其它目的、優(yōu)點(diǎn)、和特征將從下面的描述中變得明顯。其中,圖1是本發(fā)明的處理器的示意框圖。
圖2表示該處理器的算術(shù)邏輯、比較運(yùn)算器的示意圖。
圖3是表示該處理器的桶形(barrel)移位器的結(jié)構(gòu)框圖。
圖4是表示該處理器的變換器的結(jié)構(gòu)框圖。
圖5是表示該處理器的除法器的結(jié)構(gòu)框圖。
圖6是表示該處理器的乘法/積和運(yùn)算器的結(jié)構(gòu)框圖。
圖7是表示該處理器的指令控制部的結(jié)構(gòu)框圖。
圖8是表示該處理器的通用寄存器(R0-R31)的結(jié)構(gòu)圖。
圖9是表示該處理器的鏈接寄存器(LR)的結(jié)構(gòu)圖。
圖10是表示該處理器的分支寄存器(TAR)的結(jié)構(gòu)圖。
圖11是表示該處理器的程序狀態(tài)寄存器(PSR)的結(jié)構(gòu)圖。
圖12是表示該處理器的條件標(biāo)志寄存器(CFR)的結(jié)構(gòu)圖。
圖13是表示該處理器的累加器(M0,M1)的結(jié)構(gòu)圖。
圖14是表示該處理器的程序計(jì)數(shù)器(PC)的結(jié)構(gòu)圖。
圖15是表示該處理器的PC保存用寄存器(IPC)的結(jié)構(gòu)圖。
圖16是表示該處理器的PSR保存用寄存器(IPSR)的結(jié)構(gòu)圖。
圖17是表示該處理器的流水線動(dòng)作的時(shí)間圖。
圖18是表示該處理器的指令執(zhí)行時(shí)的各流水線動(dòng)作的時(shí)間圖。
圖19是表示該處理器的排列動(dòng)作的圖。
圖20A是表示該處理器執(zhí)行的16比特指令的格式圖。
圖20B是表示該處理器執(zhí)行的32比特指令的格式圖。
圖21A和圖21B是說(shuō)明屬于種類[ALUadd(加法)類]的指令的圖。
圖22A和圖22B是說(shuō)明屬于種類[ALUsub(減法)類]的指令的圖。
圖23A和圖23B是說(shuō)明屬于種類[ALUlogic(邏輯運(yùn)算)類]的指令的圖。
圖24A和圖24B是說(shuō)明屬于種類[CMP(比較運(yùn)算)類]的指令的圖。
圖25A和圖25B是說(shuō)明屬于種類[mul(乘法)類]的指令的圖。
圖26A和圖26B是說(shuō)明屬于種類[mac(積和運(yùn)算)類]的指令的圖。
圖27A和圖27B是說(shuō)明屬于種類[msu(積差運(yùn)算)類]的指令的圖。
圖28A和圖28B是說(shuō)明屬于種類[MEMld(存儲(chǔ)器讀出)類]的指令的圖。
圖29A和圖29B是說(shuō)明屬于種類[MEMstore(存儲(chǔ)器寫出)類]的指令的圖。
圖30是說(shuō)明屬于種類[BRA(分支)類]的指令的圖。
圖31A和圖31B是說(shuō)明屬于種類[BSasl(算術(shù)桶形移位)類]的指令的圖。
圖32A和圖32B是說(shuō)明屬于種類[BSlsr(邏輯桶形移位)類]的指令的圖。
圖33是說(shuō)明屬于種類[CNVvaln(算術(shù)變換)類]的指令的圖。
圖34A和圖34B是說(shuō)明屬于種類[CNV(一般變換)類]的指令的圖。
圖35是說(shuō)明屬于種類[SATvlpk(飽和處理)類]的指令的圖。
圖36A和圖36B是說(shuō)明屬于種類[ETC(其它)類]的指令的圖。
圖37是說(shuō)明指令[jloop C6,Cm,TAR,Ra]的詳細(xì)動(dòng)作的圖。
圖38是說(shuō)明指令[settar C6,Cm,D9]的詳細(xì)動(dòng)作的圖。
圖39是表示序言結(jié)局去除型2階段軟件流水線操作的圖。
圖40是表示C語(yǔ)言的源程序列表的圖。
圖41是表示使用本實(shí)施方式的指令jloop和指令settar生成的機(jī)器語(yǔ)言程序的實(shí)例圖。
圖42是說(shuō)明指令[jloop C6,C2:C4,TAR,Ra]的詳細(xì)動(dòng)作的圖。
圖43是說(shuō)明指令[settar C6,C2:C4,D9]的詳細(xì)動(dòng)作的圖。
圖44是表示序言結(jié)局去除型3階段軟件流水線操作的圖。
圖45是表示C語(yǔ)言的源程序列表的圖。
圖46是表示使用本實(shí)施方式的指令jloop和指令settar生成的機(jī)器語(yǔ)言程序的實(shí)例圖。
圖47是說(shuō)明指令[jloop C6,C1:C4,TAR,Ra]的詳細(xì)動(dòng)作的圖。
圖48是說(shuō)明指令[settar C6,C1:C4,D9]的詳細(xì)動(dòng)作的圖。
圖49是表示C語(yǔ)言的源程序列表的圖。
圖50是表示使用本實(shí)施方式的指令jloop和指令settar生成的機(jī)器語(yǔ)言程序的實(shí)例圖。
圖51是表示使用圖47和圖48中分別示出的指令jloop和指令settar的4級(jí)軟件流水線操作的動(dòng)作圖。
圖52是說(shuō)明圖47所示指令jloop用條件標(biāo)志C6的設(shè)定方法一例的圖。
圖53是表示將循環(huán)前后招待的指令分別取入序言部和結(jié)局部中的4級(jí)軟件流水線操作的動(dòng)作圖。
圖54是說(shuō)明圖47所示指令jloop用條件標(biāo)志C6的設(shè)定方法另一例的圖。
圖55是說(shuō)明圖47所示指令jloop用條件標(biāo)志C6的設(shè)定方法再一例的圖。
圖56是表示現(xiàn)有4級(jí)軟件流水線操作的動(dòng)作圖。
具體實(shí)施例方式
說(shuō)明本發(fā)明的處理器的結(jié)構(gòu)。本處理器是指令的并行性比通常的微計(jì)算機(jī)高,將AV(Audio Visual)媒體類信號(hào)處理技術(shù)領(lǐng)域作為目標(biāo)來(lái)開發(fā)的通用處理器。通過(guò)在便攜電話、移動(dòng)AV設(shè)備、數(shù)字TV(television)、DVD(Digital Versatile Disc)等中使用共同的芯片,可使軟件的再利用性提高。另外,本處理器可以高性能、高性能價(jià)格比來(lái)實(shí)現(xiàn)多數(shù)的媒體處理,并且可提供以開發(fā)效率提高為目的的高級(jí)語(yǔ)言開發(fā)環(huán)境。
圖1是本處理器的示意結(jié)構(gòu)框圖。處理器1由指令控制部10、解碼部20、寄存器文件30、運(yùn)算部40、I/F(Interface)部50、指令存儲(chǔ)部60、數(shù)據(jù)存儲(chǔ)部70、擴(kuò)展寄存器部80和I/O(Input/Ooutput)接口部90構(gòu)成。
運(yùn)算部40由執(zhí)行SIMD型指令的運(yùn)算的算術(shù)邏輯、比較運(yùn)算器41-43、乘法/積和運(yùn)算器44、桶形移位器45、除法器46以及變換器47構(gòu)成。乘法/積和運(yùn)算器44執(zhí)行最長(zhǎng)具有65比特運(yùn)算結(jié)果的累計(jì)處理。另外,乘法/積和運(yùn)算器44與算術(shù)邏輯、比較運(yùn)算器41-43和48一樣,可執(zhí)行SIMD型指令。并且,處理器1最大可并行執(zhí)行4列算術(shù)邏輯、比較運(yùn)算指令。
圖2表示算術(shù)邏輯、比較運(yùn)算器41-43和48的示意結(jié)構(gòu)圖。算術(shù)邏輯、比較運(yùn)算器41-43和48分別由ALU(Arithmetic and LogicalUnit)41a、飽和處理部41b和標(biāo)志部41c構(gòu)成。ALU41a由算術(shù)運(yùn)算器、邏輯運(yùn)算器、比較器和TST(test)器構(gòu)成。ALU41a可應(yīng)對(duì)的運(yùn)算數(shù)據(jù)的比特幅度為8比特(并行使用4個(gè)運(yùn)算器的情況)、16比特(并行使用2個(gè)運(yùn)算器的情況)、和32比特(由1個(gè)運(yùn)算器來(lái)處理32比特?cái)?shù)據(jù)的情況)。另外,標(biāo)志部41c等還對(duì)算術(shù)運(yùn)算結(jié)果進(jìn)行溢出的檢測(cè)和條件標(biāo)志的生成。將算術(shù)運(yùn)算器、邏輯運(yùn)算器、比較器和TST器的結(jié)果算術(shù)右移位,由飽和處理部41b來(lái)進(jìn)行飽和檢測(cè)、最大、最小值檢測(cè)、絕對(duì)值生成處理。
圖3是表示桶形移位器45的結(jié)構(gòu)框圖。桶形移位器45由選擇器45a和45b、上位桶形移位器45c、下位桶形移位器45d以及飽和處理部45e構(gòu)成。桶形移位器45執(zhí)行數(shù)據(jù)的算術(shù)移位(2的補(bǔ)數(shù)體系的移位)或邏輯移位(無(wú)符號(hào)移位)。桶形移位器45通常將32比特或64比特的數(shù)據(jù)用作輸入輸出數(shù)據(jù)。對(duì)于存儲(chǔ)在寄存器30a或30b中的被移位數(shù)據(jù),用其它寄存器或即值來(lái)指定移位量。桶形移位器45對(duì)輸入數(shù)據(jù)執(zhí)行左63比特-右63比特的算術(shù)移位或邏輯移位,并輸出比特長(zhǎng)度與輸入比特長(zhǎng)度相同的數(shù)據(jù)。
另外,桶形移位器45可根據(jù)SIMD型指令,移位8比特、16比特、32比特或64比特的數(shù)據(jù)。例如,桶形移位器45可并行處理4列8比特?cái)?shù)據(jù)的移位。
算術(shù)移位是2的補(bǔ)數(shù)體系的移位。算術(shù)移位用于加法或減法時(shí)的小數(shù)點(diǎn)的位置重合或2的冪次方的乘法(2的1次方、2的2次方、2的(-1)次方、2的(-2)次方等)。
圖4是表示變換器47的結(jié)構(gòu)框圖。變換器47由飽和塊(SAT)47a、BSEQ塊47b、MSKGEN塊47c、VSUMB塊47d、BCNT塊47e和IL塊47f構(gòu)成。
飽和塊(SAT)47a對(duì)輸入數(shù)據(jù)進(jìn)行飽和處理。飽和塊(SAT)47a通過(guò)具有兩個(gè)飽和處理32比特?cái)?shù)據(jù)的塊,支持并行2列的SIMD型指令。
BSEQ塊47b計(jì)數(shù)從MSB(Most Significant Bit)開始連續(xù)的0或1。
MSKGEN塊47c將指定的比特區(qū)間輸出為1,將此外的區(qū)間輸出為0。
VSUMB塊47d將輸入數(shù)據(jù)區(qū)分成指定的比特幅度,輸出其總和。
BCNT塊47e計(jì)數(shù)輸入數(shù)據(jù)中為1的比特?cái)?shù)。
IL塊47f將輸入數(shù)據(jù)區(qū)分成指定的比特幅度,輸出置換了各數(shù)據(jù)塊的值。
圖5是表示除法器46的結(jié)構(gòu)框圖。除法器46將被除數(shù)設(shè)為64比特,將除數(shù)設(shè)為32比特,每32比特輸出商和余數(shù)。除法器46在求出商和余數(shù)之前,必需34個(gè)周期。除法器46可處理帶符號(hào)的數(shù)據(jù)與無(wú)符號(hào)的數(shù)據(jù)等兩種數(shù)據(jù)。其中,被除數(shù)與除數(shù)的有無(wú)符號(hào)的處理是相同的。另外,除法器46具有輸出溢出標(biāo)志、0除法標(biāo)志的功能。
圖6是表示乘法/積和運(yùn)算器44的結(jié)構(gòu)框圖。算法、積和運(yùn)算器44由兩個(gè)32比特乘法器(MUL)44a、44b、三個(gè)64比特加法器(Adder)44c-44e、選擇器44f和飽和處理部(Saturation)44g構(gòu)成,進(jìn)行以下的乘法、積和運(yùn)算。
·32×32比特的signed的乘法、積和、積差運(yùn)算·32×32比特的unsigned的乘法·16×16比特的并行兩列signed的乘法、積和、積差運(yùn)算·32×16比特的并行兩列signed的乘法、積和、積差運(yùn)算對(duì)整數(shù)、固定小數(shù)點(diǎn)格式(h1、h2、w1、w2)的數(shù)據(jù)進(jìn)行這些運(yùn)算。另外,對(duì)這些運(yùn)算進(jìn)行舍入、飽和。
圖7是表示指令控制部10的結(jié)構(gòu)框圖。指令控制部10由指令高速緩沖存儲(chǔ)器10a、地址管理部10b、指令緩沖器10c-10e、10h、跳躍(jump)緩沖器10f和旋轉(zhuǎn)部(rotation)10g構(gòu)成,進(jìn)行通常時(shí)和分支時(shí)的指令供給。指令控制部10通過(guò)具有4個(gè)128比特的指令緩沖器(指令緩沖器10c-10e、10h),應(yīng)對(duì)最大并行執(zhí)行數(shù)。指令控制部10對(duì)于分支處理,在分支執(zhí)行之前,將分支目的地的指令存儲(chǔ)在跳躍緩沖器10f中,同時(shí),將分支目的地地址事先存儲(chǔ)在后述的TAR寄存器中(settar指令)。因此,在分支時(shí),指令控制部10使用存儲(chǔ)在TAR寄存器中的分支目的地地址和存儲(chǔ)在跳躍緩沖器10f中的分支目的地指令,進(jìn)行分支處理。
另外,處理器1是具有VLIW結(jié)構(gòu)的處理器。這里,所謂VLIW結(jié)構(gòu)是在1個(gè)指令字中存儲(chǔ)多個(gè)指令(加載、存儲(chǔ)、運(yùn)算、分支等),并同時(shí)執(zhí)行全部這些指令的結(jié)構(gòu)。編程器通過(guò)將可并行執(zhí)行的指令記述為一個(gè)發(fā)行組,可使處理器并行處理該發(fā)行組。在本說(shuō)明書中,用“;;”來(lái)表示發(fā)行組。下面示出表述例。
(例1)mov r1,0x23;;該指令記述意味著僅執(zhí)行指令mov。
(例2)mov r1,0x38add r0,r1,r2sub r3,r1,r2;;這些指令記述意味著并行執(zhí)行3列指令mov、add、sub。
指令控制部10識(shí)別發(fā)行組,發(fā)送到解碼部20。解碼部20分析發(fā)行組的指令,控制必要的資源。
下面,說(shuō)明本處理器1具備的寄存器。
處理器1的寄存器組如下表1所示。
表1另外,處理器1的寄存器組(由后述的條件標(biāo)志寄存器等管理的標(biāo)志)如下表2所示。
表2圖8是表示通用寄存器(R0-R31)30a的結(jié)構(gòu)圖。通用寄存器(R0-R31)30a是構(gòu)成成為執(zhí)行對(duì)象的任務(wù)的上下文的一部分,并存儲(chǔ)數(shù)據(jù)或地址的32比特的寄存器群。另外,通用寄存器R30和R31分別使用硬件作為全局指針、堆棧指針。
圖9是表示鏈接寄存器(LR)30c的結(jié)構(gòu)圖。另外,與該鏈接寄存器(LR)30c相關(guān),處理器1還具備未圖示的保存寄存器(SVR)。鏈接寄存器(LR)30c是存儲(chǔ)函數(shù)調(diào)用時(shí)的返回地址的32比特的寄存器。另外,保存寄存器(SVR)是保存函數(shù)調(diào)用時(shí)的條件標(biāo)志寄存器的條件標(biāo)志(CFR.CF)的16比特的寄存器。鏈接寄存器(LR)30c與后述的分支寄存器(TAR)一樣,也用于循環(huán)高速化。從鏈接寄存器(LR)30c的下位1比特始終讀出0。在向鏈接寄存器(LR)30c的下位1比特寫入時(shí)必需寫入0。
例如,在處理器1執(zhí)行call(brl,jmp)指令時(shí),處理器在鏈接寄存器(LR)30c保存返回地址,在保存寄存器(SVR)中保存條件標(biāo)志(CFR.CF)。另外,在執(zhí)行jmp指令的情況下,處理器1從鏈接寄存器(LR)30c中取出返回地址(分支目的地地址),使程序計(jì)數(shù)器(PC)復(fù)原。并且,處理器1在執(zhí)行ret(jmpr)指令的情況下,從鏈接寄存器(LR)30c中取出分支目的地地址(返回地址),并存儲(chǔ)(復(fù)原)到程序計(jì)數(shù)器(PC)中。并且,處理器1從保存寄存器(SVR)中取出條件標(biāo)志,并存儲(chǔ)(復(fù)原)到條件標(biāo)志寄存器(CFR)32的條件標(biāo)志區(qū)域CFR.CF中。
圖10是表示分支寄存器(TAR)30d的結(jié)構(gòu)圖。分支寄存器(TAR)30d是存儲(chǔ)分支目標(biāo)地址的32比特寄存器。分支寄存器(TAR)30d主要被用于循環(huán)的高速化。從分支寄存器(TAR)30d的下位1比特始終讀出0。在向分支寄存器(TAR)30d寫入時(shí)必需寫入0。
例如,在執(zhí)行jmp,jloop指令時(shí),處理器1從分支寄存器(TAR)30d中取出分支目的地地址,并存儲(chǔ)在程序計(jì)數(shù)器(PC)中。在將存儲(chǔ)在分支寄存器(TAR)30d中的地址的指令存儲(chǔ)在分支用指令緩沖器中的情況下,分支補(bǔ)償(penalty)變?yōu)?。通過(guò)在分支寄存器(TAR)30d中存儲(chǔ)循環(huán)的開頭地址,可高速化循環(huán)處理。
圖11是表示程序狀態(tài)寄存器(PSR)31的結(jié)構(gòu)圖。程序狀態(tài)寄存器(PSR)31是構(gòu)成成為執(zhí)行對(duì)象的任務(wù)的上下文的一部分,存儲(chǔ)下述的處理器狀態(tài)信息的32比特的寄存器。
比特SWE表示VMP(Virtual Multi-Processor)的LP(LogicalProcessor)切換激活。
表示不允許LP切換,[1]表示允許LP切換。
比特FXP表示固定小數(shù)點(diǎn)模式。
表示模式0,[1]表示模式1。
比特IH是中斷處理標(biāo)志,表示在可屏蔽的中斷處理中。[1]表示中斷處理中,
表示不是中斷處理中。一旦產(chǎn)生中斷,則自動(dòng)設(shè)置成[1]。比特IH用于知道根據(jù)rti指令從中斷復(fù)原的位置是在其它中斷處理中還是程序處理中。
比特EH是表示錯(cuò)誤或NMI處理中的標(biāo)志。
表示不是錯(cuò)誤處理中或NMI中斷處理中,[1]表示錯(cuò)誤處理中或NMI中斷處理中。當(dāng)EH=1時(shí),在產(chǎn)生非同步錯(cuò)誤或NMI的情況下,屏蔽比特EH。另外,在VMP激活時(shí),屏蔽VMP的屏極(plate)切換。
比特PL[1:0]表示特權(quán)等級(jí)。
表示特權(quán)等級(jí)0,即處理器抽象(abstract)等級(jí),
表示特權(quán)等級(jí)1(不可設(shè)定),[10]表示特權(quán)等級(jí)2,即系統(tǒng)程序等級(jí),[11]表示特權(quán)等級(jí)3,即用戶程序等級(jí)。
比特LPIE3表示LP固有中斷3激活。[1]表示允許中斷,
表示不允許中斷。
比特LPIE2表示LP固有中斷2激活。[1]表示允許中斷,
表示不允許中斷。
比特LPIE1表示LP固有中斷1激活。[1]表示允許中斷,
表示不允許中斷。
比特LPIE0表示LP固有中斷0激活。[1]表示允許中斷,
表示不允許中斷。
比特AEE表示失配(misalignment)例外激活。[1]表示允許失配例外,
表示不允許失配例外。
比特IE表示等級(jí)中斷激活。[1]表示允許等級(jí)中斷,
表示不允許等級(jí)中斷。
比特IM[7:0]表示中斷屏蔽。定義至等級(jí)0-7,可在各個(gè)等級(jí)進(jìn)行屏蔽。等級(jí)0是最高的等級(jí)。處理器1中僅受理未由IM屏蔽的中斷請(qǐng)求中具有最高等級(jí)的中斷請(qǐng)求。一旦受理中斷請(qǐng)求,則硬件自動(dòng)屏蔽受理的等級(jí)以下的等級(jí)。IM
是等級(jí)0的屏蔽,IM[1]是等級(jí)1的屏蔽,IM[2]是等級(jí)2的屏蔽,IM[3]是等級(jí)3的屏蔽,IM[4]是等級(jí)4的屏蔽,IM[5]是等級(jí)5的屏蔽,IM[6]是等級(jí)6的屏蔽,IM[7]是等級(jí)7的屏蔽。
reserved表示預(yù)約比特。從reserved中總是讀出0。在向reserved寫入時(shí)必需寫入0。
圖12是表示條件標(biāo)志寄存器(CFR)32的結(jié)構(gòu)圖。條件標(biāo)志寄存器(CFR)32是構(gòu)成成為執(zhí)行對(duì)象的任務(wù)的上下文一部分的32比特寄存器,由條件標(biāo)志(條件標(biāo)志)、操作標(biāo)志(運(yùn)算標(biāo)志)、矢量條件標(biāo)志(矢量條件標(biāo)志)、運(yùn)算指令用比特位置指定字段、SIMD數(shù)據(jù)對(duì)齊信息字段構(gòu)成。
比特ALN[1:0]表示對(duì)齊模式。設(shè)定valnvc指令的對(duì)齊模式。
比特BPO[4:0]表示比特位置。由比特位置指定的必需指令使用。
比特VC0-VC3是矢量條件標(biāo)志。從LSB側(cè)的字節(jié)或半字開始順序?qū)?yīng)于VC0,且MSB側(cè)對(duì)應(yīng)于VC3。
比特OVS是溢出標(biāo)志(摘要)。在由addc指令產(chǎn)生進(jìn)位或由subc指令產(chǎn)生借位的情況下設(shè)置比特CAS。在未由addc指令產(chǎn)生進(jìn)位或未由subc指令產(chǎn)生借位的情況下,比特CAS保持指令執(zhí)行前的值。比特CAS的清零必需由軟件進(jìn)行。
比特C0-C7是條件標(biāo)志。標(biāo)志C7的值始終為1。忽視FALSE條件反映到標(biāo)志C7(寫入0)。
reserved表示預(yù)約比特。從reserved中總是讀出0。在向reserved寫入時(shí)必需寫入0。
圖13是表示累加器(M0,M1)30b的結(jié)構(gòu)圖。該累加器(M0,M1)30b構(gòu)成成為執(zhí)行對(duì)象的任務(wù)的上下文一部分。累加器(M0,M1)30b由圖13(a)所示的32比特寄存器MH0-MH1(乘除法、積和用寄存器(上位32比特))、和圖13(b)所示的32比特寄存器ML0-ML1(乘除法、積和用寄存器(下位32比特))構(gòu)成。
寄存器MH0-MH1在乘法指令下用于存儲(chǔ)結(jié)果的上位32比特。寄存器MH0-MH1在積和指令下用作累加器的上位32比特。另外,寄存器MH0-MH1在處理比特流的情況下,與通用寄存器組合來(lái)使用。寄存器ML0-ML1在乘法指令下用于存儲(chǔ)結(jié)果的下位32比特。寄存器ML0-ML1在積和指令下用作累加器的下位32比特。
圖14是表示程序計(jì)數(shù)器(PC)33的結(jié)構(gòu)圖。該程序計(jì)數(shù)器(PC)33是構(gòu)成成為執(zhí)行對(duì)象的任務(wù)的上下文一部分,保持執(zhí)行中的指令的地址的32比特的計(jì)數(shù)器。程序計(jì)數(shù)器(PC)33的下位1比特中總是存儲(chǔ)0。
圖15是表示PC保存用寄存器(IPC)34的結(jié)構(gòu)圖。PC保存用寄存器(IPC)34是構(gòu)成成為執(zhí)行對(duì)象的任務(wù)的上下文一部分的32比特寄存器,從下位1比特中總是讀出0。在向PC保存用寄存器(IPC)34的下位1比特寫入時(shí)必需寫入0。
圖16是表示PSR保存用寄存器(IPSR)35的結(jié)構(gòu)圖。PSR保存用寄存器(IPSR)35是構(gòu)成成為執(zhí)行對(duì)象的任務(wù)的上下文一部分、保存程序狀態(tài)寄存器(PSR)31用的32比特寄存器。從PSR保存用寄存器(IPSR)35的程序狀態(tài)寄存器(PSR)31的預(yù)約比特所對(duì)應(yīng)的部分中總是讀出0。在向PSR保存用寄存器(IPSR)35的程序狀態(tài)寄存器(PSR)31的預(yù)約比特所對(duì)應(yīng)的部分寫入時(shí)必需寫入0。
下面,說(shuō)明處理器1的存儲(chǔ)器空間。在處理器1中,對(duì)4GB的線性存儲(chǔ)器空間進(jìn)行32分割,向128MB單位的空間分配指令SRAM(StaticRAM)和數(shù)據(jù)SRAM。將該128MB的空間作為1個(gè)塊,設(shè)定想訪問(wèn)SAR(SRAMArea Register)的塊。在訪問(wèn)的地址是由SAR設(shè)定的空間的情況下,直接對(duì)指令SRAM/數(shù)據(jù)SRAM進(jìn)行訪問(wèn),但在不是由SAR設(shè)定的空間的情況下,向總線控制器(BCU)發(fā)出訪問(wèn)請(qǐng)求。在BCU上連接單片寄存器(OCM)、外部存儲(chǔ)器、外部器件、I/O端口等,處理器1可對(duì)這些器件進(jìn)行讀寫。
圖17是表示該處理器1的流水線動(dòng)作的時(shí)間圖。處理器1如圖17所示,基本上由指令獲取、指令分配(分派)、解碼、執(zhí)行、寫入等5級(jí)流水線構(gòu)成。
圖18是表示該處理器1的指令執(zhí)行時(shí)的各流水線動(dòng)作的時(shí)間圖。在指令獲取階段,訪問(wèn)由程序計(jì)數(shù)器(PC)33指定的地址的指令存儲(chǔ)器,將指令傳送給指令緩沖器10c-10e、10h等。在指令分配階段,進(jìn)行對(duì)分支類指令的分支目的地地址信息的輸出、輸入寄存器控制信號(hào)的輸出、可變長(zhǎng)指令的分配,將指令傳送給指示寄存器(IR)。在解碼階段,將存儲(chǔ)在IR中的指令輸入到解碼部20,從解碼部20輸出運(yùn)算器控制信號(hào)、存儲(chǔ)器訪問(wèn)信號(hào)。在執(zhí)行階段,執(zhí)行運(yùn)算,將運(yùn)算結(jié)果輸出到數(shù)據(jù)存儲(chǔ)器或通用寄存器(R0-R31)。在寫入階段,將數(shù)據(jù)傳送、運(yùn)算結(jié)果存儲(chǔ)在通常寄存器中。
處理器1通過(guò)VLIW結(jié)構(gòu),可并行進(jìn)行4列上述處理。因此,對(duì)于圖18所示動(dòng)作,處理器1按圖19所示的定時(shí)并行執(zhí)行。
下面,說(shuō)明上述結(jié)構(gòu)的處理器1的指令設(shè)置。
下示表3-表5按種類不同來(lái)分類處理器1執(zhí)行的指令。
表3表4表5表中的[運(yùn)算器]表示該指令使用的運(yùn)算器。運(yùn)算器的簡(jiǎn)稱的含義如下。即,[A]意味著ALU指令,[B]意味著分支指令,[C]意味著變換指令,[DIV]意味著除法指令,[DBGM]意味著調(diào)試指令,[M]意味著存儲(chǔ)器訪問(wèn)指令,[S1]、[S2]意味著移位指令,[X1]、[X2]意味著乘法指令。
圖20A是表示該處理器1執(zhí)行的16比特指令的格式圖。圖20B是表示該處理器1執(zhí)行的32比特指令的格式圖。
另外,圖中簡(jiǎn)稱的含義如下。即,[E]意味著終端比特(并行執(zhí)行的邊界),[F]意味著格式比特(00、01、10:16比特指令格式、11:32比特指令格式),[P]意味著預(yù)測(cè)(執(zhí)行條件指定8個(gè)條件標(biāo)志C0-C7之一),[OP]意味著操作碼字段,[R]意味著寄存器字段,[I]意味著即值字段,[D]意味著位移(デイスプ-スメント)字段。另外,因?yàn)閇E]字段是VLIW特有的字段,E=0的指令與下一指令并行執(zhí)行。即,由[E]字段來(lái)實(shí)現(xiàn)并行度可變的VLIW。另外,預(yù)測(cè)是根據(jù)條件標(biāo)志C0-C7的值來(lái)控制執(zhí)行或不執(zhí)行指令的標(biāo)志,是不使用分支指令就可進(jìn)行選擇執(zhí)行的高速化技術(shù)之一。
例如,在表示指令中預(yù)測(cè)的條件標(biāo)志C0為1的情況下,執(zhí)行分配條件標(biāo)志C0的指令,在為0的情況下,不執(zhí)行該指令。
圖21A-圖36B是說(shuō)明處理器1執(zhí)行的指令的示意功能的圖。即,圖21A和圖21B是說(shuō)明屬于種類[ALUadd(加法)類]的指令的圖,圖22A和圖22B是說(shuō)明屬于種類[ALUsub(減法)類]的指令的圖,圖23A和圖23B是說(shuō)明屬于種類[ALUlogic(邏輯運(yùn)算)類]的指令的圖,圖24A和圖24B是說(shuō)明屬于種類[CMP(比較運(yùn)算)類]的指令的圖,圖25A和圖25B是說(shuō)明屬于種類[mul(乘法)類]的指令的圖,圖26A和圖26B是說(shuō)明屬于種類[mac(積和運(yùn)算)類]的指令的圖,圖27A和圖27B是說(shuō)明屬于種類[msu(積差運(yùn)算)類]的指令的圖,圖28A和圖28B是說(shuō)明屬于種類[MEMld(存儲(chǔ)器讀出)類]的指令的圖,圖29A和圖29B是說(shuō)明屬于種類[MEMstore(存儲(chǔ)器寫出)類]的指令的圖,圖30是說(shuō)明屬于種類[BRA(分支)類]的指令的圖,圖31A和圖31B是說(shuō)明屬于種類[BSasl(算術(shù)桶形移位)類]的指令的圖,圖32A和圖32B是說(shuō)明屬于種類[BSlsr(邏輯桶形移位)類]的指令的圖,圖33是說(shuō)明屬于種類[CNVvaln(算術(shù)變換)類]的指令的圖,圖34A和圖34B是說(shuō)明屬于種類[CNV(一般變換)類]的指令的圖,圖35是說(shuō)明屬于種類[SATvlpk(飽和處理)類]的指令的圖,圖36A和圖36B是說(shuō)明屬于種類[ETC(其它)類]的指令的圖。
在這些圖中,項(xiàng)目[SIMD]表示指令類型(SIMD(SINGLE)或SIMD的區(qū)別),項(xiàng)目[尺寸]表示成為運(yùn)算對(duì)象的各個(gè)操作數(shù)的尺寸,項(xiàng)目[指令]表示該指令的操作碼,項(xiàng)目[操作數(shù)]表示該指令的操作數(shù),項(xiàng)目[CFR]表示條件標(biāo)志寄存器的變化,項(xiàng)目[PSR]表示處理器狀態(tài)寄存器的變化,項(xiàng)目[代表性動(dòng)作]表示動(dòng)作的概要,項(xiàng)目[運(yùn)算器]表示使用的運(yùn)算器,項(xiàng)目 表示指令的尺寸。
下面,就幾個(gè)特定指令來(lái)說(shuō)明處理器1的動(dòng)作。另外,各指令動(dòng)作的說(shuō)明中使用的各種記號(hào)的含義如下表6-表10所示。
表6表7表8表9表10[指令jloop、settar]指令jloop是進(jìn)行循環(huán)中的分支與條件標(biāo)志(這里為預(yù)測(cè))的設(shè)定的指令。例如若為jloop C6,Cm,TAR,Ra則處理器1使用地址管理部10b等,(1)對(duì)條件標(biāo)志Cm設(shè)置1,(2)在寄存器Ra的值比0小的情況下,對(duì)條件標(biāo)志C6設(shè)置0,(3)向寄存器Ra的值加-1,存儲(chǔ)在寄存器Ra中,(4)執(zhí)行分支到分支寄存器(TAR)30d表示的地址的一系列的處理。當(dāng)在跳躍緩沖器10f(分支用指令緩沖器)中未填充分支用指令的情況下,填充分支目的地的指令。詳細(xì)動(dòng)作如圖37所示。
另外,指令settar是在將分支目的地地址存儲(chǔ)在分支寄存器(TAR)30d中的同時(shí)、進(jìn)行條件標(biāo)志(這里為預(yù)測(cè))的設(shè)定的指令。例如若為settar C6,Cm,D9則處理器1使用地址管理部10b等,(1)將程序計(jì)數(shù)器(PC)33的值與位移值(D9)相加所得的地址存儲(chǔ)在分支寄存器(TAR)30d中,(2)獲取該地址指令后存儲(chǔ)在跳躍緩沖器10f(分支用指令緩沖器)中,(3)執(zhí)行將條件標(biāo)志C6設(shè)置為1、將條件標(biāo)志Cm設(shè)置為0等一系列處理。詳細(xì)動(dòng)作如圖38所示。
這些指令jloop和指令settar是對(duì)基于序言結(jié)局去除型的軟件流水線操作的循環(huán)高速化有效的指令,通常成對(duì)使用。另外,軟件流水線操作是基于編譯器的循環(huán)高速化方法的一種,將循環(huán)結(jié)構(gòu)變換為序言部、核心部和結(jié)局部,對(duì)于核心部而言,通過(guò)使各累積(重復(fù))與其前后的累積重疊,可有效地并行執(zhí)行多個(gè)指令。
另外,所謂序言結(jié)局去除型如圖39所示,通過(guò)將序言部和結(jié)局部設(shè)為預(yù)測(cè)的條件執(zhí)行指令,忽視、去除序言部和結(jié)局部。圖39中,在序言結(jié)局去除型2階段軟件流水線操作中,條件標(biāo)志C6和C4分別為結(jié)局指令(階段2)用和序言指令(階段1)用的預(yù)測(cè)。
例如在對(duì)圖40所示C語(yǔ)言源程序使用上述指令jloop和指令settar的情況下,編譯器通過(guò)序言結(jié)局去除型的軟件流水線操作,生成圖41所示的機(jī)器語(yǔ)言程序。
從該機(jī)器語(yǔ)言程序的循環(huán)部分(等級(jí)L00023-指令jloop)可知,分別由指令jloop和settar進(jìn)行條件標(biāo)志C4的設(shè)置及復(fù)位,不必需特別的指令,循環(huán)執(zhí)行在2周期下結(jié)束。
另外,處理器1可執(zhí)行不僅適用于2階段軟件流水線操作、而且也適用于3階段軟件流水線操作的指令[jloop C6,C2:C4,TAR,Ra]和指令[settar C6,C2:C4,D9]。這些指令[jloop C6,C2:C4,TAR,Ra]和指令[settar C6,C2:C4,D9]相當(dāng)于將上述2階段用指令[jloopC6,C2:C4,TAR,Ra]和指令[settar C6,C2:C4,D9]中的寄存器Cm擴(kuò)展為寄存器C2、C3和C4。
即,若為j jloop C6,C2:C4,TAR,Ra則處理器1使用地址管理部10b等,(1)在寄存器Ra比0小的情況下,對(duì)條件標(biāo)志C4設(shè)置0,(2)將條件標(biāo)志C3的值傳送到條件標(biāo)志C2,將條件標(biāo)志C4的值傳送到條件標(biāo)志C3和C6,(3)向寄存器Ra加-1,將加法結(jié)果存儲(chǔ)在寄存器Ra中,(4)執(zhí)行分支到分支寄存器(TAR)30d表示的地址的一系列的處理。當(dāng)在跳躍緩沖器10f中未填充分支目的地指令的情況下,填充分支目的地的指令。詳細(xì)動(dòng)作如圖42所示。
另外,若為settar C6,C2:C4,D9則處理器1使用地址管理部10b等,(1)將程序計(jì)數(shù)器(PC)33的值與位移值(D9)相加的地址存儲(chǔ)在分支寄存器(TAR)30d中,(2)獲取該地址指令后存儲(chǔ)在跳躍緩沖器10f(分支用指令緩沖器)中,(3)執(zhí)行將條件標(biāo)志C4和C6設(shè)置為1、將條件標(biāo)志C2和C3設(shè)置為0等一系列處理。詳細(xì)動(dòng)作如圖43所示。
這些3階段用指令[jloop C6,C2:C4,TAR,Ra]和指令[settar C6,C2:C4,D9]中的條件標(biāo)志的分配如圖44所示。如圖44(a)所示,在序言結(jié)局去除型3階段軟件流水線操作中,條件標(biāo)志C2、C3、C4分別為階段3用、階段2用、階段1用預(yù)測(cè)。圖44(b)是表示此時(shí)的標(biāo)志傳送的執(zhí)行變遷的圖。
例如,在對(duì)圖45所示C語(yǔ)言源程序使用圖42和圖43中分別示出的指令jloop和指令settar的情況下,編譯器通過(guò)序言結(jié)局去除型的軟件流水線操作,生成圖46所示的機(jī)器語(yǔ)言程序。
另外,處理器1還可執(zhí)行適用于4階段軟件流水線操作的指令[jloop C6,C1:C4,TAR,Ra]和指令[settar C6,C1:C4,D9]。
即,若為j jloop C6,C1:C4,TAR,Ra則處理器1使用地址管理部10b等,(1)在寄存器Ra比0小的情況下,對(duì)條件標(biāo)志C4設(shè)置0,(2)將條件標(biāo)志C2的值傳送到條件標(biāo)志C1,將條件標(biāo)志C3的值傳送到條件標(biāo)志C2,將條件標(biāo)志C4的值傳送到條件標(biāo)志C3和C6,(3)向寄存器Ra加-1,并存儲(chǔ)在寄存器Ra中,(4)執(zhí)行分支到分支寄存器(TAR)30d表示的地址的一系列的處理。當(dāng)在跳躍緩沖器10f中未填充分支目的地指令的情況下,填充分支目的地的指令。詳細(xì)動(dòng)作如圖47所示。
另外,指令settar是在將分支目的地地址存儲(chǔ)在分支寄存器(TAR)30d中的同時(shí)、進(jìn)行條件標(biāo)志(這里為預(yù)測(cè))的設(shè)定的指令。例如,若為settar C6,C1:C4,D9則處理器1使用地址管理部10b等,(1)將程序計(jì)數(shù)器(PC)33的值與位移(displacement)值(D9)相加的地址存儲(chǔ)在分支寄存器(TAR)30d中,(2)獲取該地址指令后存儲(chǔ)在跳躍緩沖器10f(分支用指令緩沖器)中,(3)執(zhí)行將條件標(biāo)志C4和C6設(shè)置為1、將條件標(biāo)志C1、C2和C3設(shè)置為0等一系列處理。詳細(xì)動(dòng)作如圖48所示。
例如,在對(duì)圖49所示,C語(yǔ)言源程序使用圖47和圖48中分別示出的指令jloop和指令settar的情況下,編譯器通過(guò)結(jié)局去除型的軟件流水線操作,生成圖50所示的機(jī)器語(yǔ)言程序。
圖51是表示使用圖47和圖48中分別示出的指令jloop和指令settar的4級(jí)軟件流水線操作的動(dòng)作圖。
為了實(shí)現(xiàn)4級(jí)軟件流水線操作,使用用于表示是否執(zhí)行指令的預(yù)測(cè)的條件標(biāo)志C1-C4。指令A(yù)、B、C和D分別是以軟件流水線操作的1級(jí)、2級(jí)、3級(jí)和4級(jí)執(zhí)行的指令。另外,條件標(biāo)志C4、C3、C2和C1分別對(duì)應(yīng)于指令A(yù)、B、C和D。并且,條件標(biāo)志C6對(duì)應(yīng)于指令jloop。
圖52是說(shuō)明圖47所示指令jloop用條件標(biāo)志C6的設(shè)定方法一例的圖。該方法利用以下性質(zhì)。即,將通過(guò)軟件流水線操作將作為對(duì)象的循環(huán)展開為條件執(zhí)行指令時(shí)的軟件流水線的級(jí)數(shù)設(shè)為N級(jí)(N為3以上的整數(shù))。此時(shí),在結(jié)局部中,在由第(N-2)級(jí)流水線執(zhí)行的條件執(zhí)行指令所對(duì)應(yīng)的條件標(biāo)志變?yōu)?的下一周期中,循環(huán)結(jié)束。
因此,在循環(huán)處理的序言部和核心部中,將條件標(biāo)志C6的值總是設(shè)定為1,從進(jìn)入結(jié)局部的階段開始,監(jiān)視條件標(biāo)志C3(在軟件流水線的第(N-2)級(jí)執(zhí)行的條件執(zhí)行指令所對(duì)應(yīng)的條件標(biāo)志)的值,將條件標(biāo)志C3的值寫入1周期后的條件標(biāo)志C6中。由此,在循環(huán)處理結(jié)束時(shí)將分配給指令jloop的條件標(biāo)志C6設(shè)定為0,可從循環(huán)處理中跳出。例如,在圖50所示機(jī)器語(yǔ)言程序的實(shí)例中,當(dāng)條件標(biāo)志C6變?yōu)?時(shí),不執(zhí)行指令[jloop C6,C1:C4,tar,r4],而執(zhí)行其后配置的指令[ret],從循環(huán)處理中跳出。
另外,如圖51所示,在結(jié)局部中,當(dāng)某個(gè)條件標(biāo)志的值變?yōu)?時(shí),該條件標(biāo)志的值在循環(huán)處理結(jié)束之前為0。即,表示注目的條件標(biāo)志所對(duì)應(yīng)的條件執(zhí)行指令在循環(huán)處理結(jié)束之前不被執(zhí)行。例如,在第5周期中條件標(biāo)志C4的值變?yōu)?的情況下,在循環(huán)結(jié)束的第7周期之前,條件標(biāo)志C4的值為0。因此,在從第5周期到第7周期不執(zhí)行條件標(biāo)志C4所對(duì)應(yīng)的指令A(yù)。
由此,在結(jié)局部中條件標(biāo)志變?yōu)?的情況下,在循環(huán)處理結(jié)束之前,可以進(jìn)行控制,不從存儲(chǔ)了對(duì)應(yīng)該條件標(biāo)志的指令的指令緩沖器10c(10d、10e、10h)中讀出指令。
另外,各指令的一部分示出條件標(biāo)志的序號(hào)。因此,解碼部20從指令緩沖器10c(10d、10e、10h)中僅讀出條件標(biāo)志的序號(hào),并根據(jù)該序號(hào),調(diào)查條件標(biāo)志的值,若條件標(biāo)志的值為0,則不從指令緩沖器10c(10d、10e、10h)中讀出指令。
另外,如圖53所示,在序言部和結(jié)局部分別配置在循環(huán)前后執(zhí)行的指令并執(zhí)行。例如,向在循環(huán)(loop)之前執(zhí)行的指令X和之后執(zhí)行的指令Y分配條件標(biāo)志C5,在序言部和結(jié)局部中的空階段執(zhí)行指令。由此,可減少序言部和結(jié)局部中的空階段。
另外,如C語(yǔ)言中的if--else語(yǔ)句那樣,在規(guī)定條件成立時(shí)執(zhí)行的指令與不成立時(shí)執(zhí)行的指令不同的情況下,使條件成立時(shí)執(zhí)行的條件執(zhí)行指令的條件標(biāo)志與條件不成立時(shí)執(zhí)行的條件執(zhí)行指令的條件標(biāo)志不一樣,對(duì)應(yīng)于條件來(lái)改變條件標(biāo)志的值。這樣可以簡(jiǎn)單處理來(lái)實(shí)現(xiàn)條件分支指令。
另外,也可使用下述的條件標(biāo)志C6的設(shè)定方法來(lái)代替圖52所示的指令jloop用的條件標(biāo)志C6的設(shè)定方法。圖54是說(shuō)明圖47所示指令jloop用條件標(biāo)志C6的設(shè)定方法另一例的圖。該方法利用以下性質(zhì)。即,將通過(guò)軟件流水線操作將成為對(duì)象的循環(huán)展開為條件執(zhí)行指令時(shí)的軟件流水線的級(jí)數(shù)設(shè)為N級(jí)(N為2以上的整數(shù))。此時(shí),在與在結(jié)局部中由第(N-1)級(jí)流水線執(zhí)行的條件執(zhí)行指令所對(duì)應(yīng)的條件標(biāo)志變?yōu)?的周期相同的周期,循環(huán)結(jié)束。
因此,在循環(huán)處理的序言部和核心部中,將條件標(biāo)志C6的值總是設(shè)定為1,從進(jìn)入結(jié)局部的階段開始,監(jiān)視條件標(biāo)志C2(在軟件流水線的第(N-1)級(jí)執(zhí)行的條件執(zhí)行指令所對(duì)應(yīng)的條件標(biāo)志)的值,在相同周期將條件標(biāo)志C2的值寫入條件標(biāo)志C6中。由此,在循環(huán)處理結(jié)束時(shí)將分配給指令jloop的條件標(biāo)志C6設(shè)定為0,可從循環(huán)處理中跳出。
并且,也可使用下述的條件標(biāo)志C6的設(shè)定方法。圖55是說(shuō)明圖47所示指令jloop用條件標(biāo)志C6的設(shè)定方法再一例的圖。該方法利用以下性質(zhì)。即,將通過(guò)軟件流水線操作將成為對(duì)象的循環(huán)展開為條件執(zhí)行指令時(shí)的軟件流水線的級(jí)數(shù)設(shè)為N級(jí)(N為4以上的整數(shù))。此時(shí),在結(jié)局部中由第(N-3)級(jí)流水線執(zhí)行的條件執(zhí)行指令所對(duì)應(yīng)的條件標(biāo)志變?yōu)?的2周期之后,循環(huán)結(jié)束。
因此,在循環(huán)處理的序言部和核心部中,將條件標(biāo)志C6的值總是設(shè)定為1,從進(jìn)入結(jié)局部的階段開始,監(jiān)視條件標(biāo)志C4(在軟件流水線的第(N-3)級(jí)執(zhí)行的條件執(zhí)行指令所對(duì)應(yīng)的條件標(biāo)志)的值,將條件標(biāo)志C4的值寫入2周期后的條件標(biāo)志C6中。由此,在循環(huán)結(jié)束時(shí)將分配給指令jloop的條件標(biāo)志C6設(shè)定為0,可從循環(huán)處理中跳出。
另外,在本實(shí)施方式中,說(shuō)明了4階段以前的軟件流水線操作,但5階段以上的軟件流水線操作也一樣,只要增加預(yù)測(cè)用的條件標(biāo)志即可。
具有以上說(shuō)明的特征的機(jī)器語(yǔ)言指令由編譯器生成。編譯器包含對(duì)源程序進(jìn)行語(yǔ)法分析的解析步驟;將分析出的源程序變換為中間代碼的中間代碼變換步驟;使中間代碼最佳化的最佳化步驟;和將最佳化后的中間代碼變換為機(jī)器語(yǔ)言指令的代碼生成步驟。
如上所述,根據(jù)本實(shí)施方式,使用軟件流水線操作的結(jié)局部的條件標(biāo)志來(lái)設(shè)定循環(huán)用條件標(biāo)志。因此,不必為了判斷循環(huán)處理結(jié)束而使用計(jì)數(shù)器等特別的硬件資源,電路規(guī)模不會(huì)變大。另外,與此同時(shí)可減小處理器的功耗。
另外,若在結(jié)局部不執(zhí)行條件執(zhí)行指令,則在注目的循環(huán)處理結(jié)束之前,在該軟件流水線操作中不執(zhí)行條件執(zhí)行指令。因此,不必從指令緩沖器中讀出條件執(zhí)行指令,與此同時(shí)可減小處理器的功耗。
并且,通過(guò)在軟件流水線操作的序言部和結(jié)局部分別配置在循環(huán)前后執(zhí)行的指令,可減少軟件流水線操作的空階段,可高速執(zhí)行程序。與此同時(shí),可減小處理器的功耗。
此外,若在結(jié)局部不執(zhí)行條件執(zhí)行指令,則在著重的循環(huán)處理結(jié)束之前,在該軟件流水線操作中不執(zhí)行條件執(zhí)行指令。因此,不必從指令緩沖器中讀出條件執(zhí)行指令,與此同時(shí)可減小處理器的功耗。
從以上說(shuō)明可知,根據(jù)本發(fā)明的處理器,可提供電路規(guī)模小、且能以低功耗來(lái)高速執(zhí)行循環(huán)處理的處理器。
另外,可提供能生成減小處理器功耗的機(jī)器語(yǔ)言指令的編譯器。
如上所述,根據(jù)本發(fā)明的處理器可以低功耗來(lái)執(zhí)行指令。因此,可用作便攜電話、移動(dòng)AV設(shè)備、數(shù)字TV、DVD等共同的中心處理器,在期望出現(xiàn)高性能、高性價(jià)比的多媒體設(shè)備的今天的實(shí)用價(jià)值極高。
權(quán)利要求
1.一種對(duì)指令進(jìn)行譯碼并執(zhí)行的處理器,其特征在于具備存儲(chǔ)在條件執(zhí)行指令的預(yù)測(cè)中所用的多個(gè)條件執(zhí)行用標(biāo)志的標(biāo)志寄存器;譯碼指令的譯碼裝置;和執(zhí)行由所述譯碼裝置譯碼的指令的執(zhí)行裝置,在通過(guò)所述譯碼裝置譯碼循環(huán)指令的情況下,所述執(zhí)行裝置根據(jù)由軟件流水線操作將作為對(duì)象的循環(huán)展開成條件執(zhí)行指令時(shí)的結(jié)局部所對(duì)應(yīng)的所述多個(gè)條件執(zhí)行用標(biāo)志中的任一值,結(jié)束所述循環(huán)的重復(fù)處理。
2.根據(jù)權(quán)利要求1所述的處理器,其特征在于所述標(biāo)志寄存器中還存儲(chǔ)用于所述結(jié)束判斷的循環(huán)用標(biāo)志,所述執(zhí)行裝置將所述結(jié)局部中的所述多個(gè)條件執(zhí)行用標(biāo)志中任一值寫入所述循環(huán)用標(biāo)志。
3.根據(jù)權(quán)利要求2所述的處理器,其特征在于所述執(zhí)行裝置在將所述軟件流水線操作的級(jí)數(shù)設(shè)為N級(jí)(N為3以上的整數(shù)),將流水線的級(jí)數(shù)設(shè)為按所述結(jié)局部結(jié)束處理的順序升序計(jì)數(shù)時(shí),將第(N-2)級(jí)的流水線執(zhí)行的條件執(zhí)行指令所對(duì)應(yīng)的條件執(zhí)行用標(biāo)志的值寫入所述結(jié)局部在1周期后的所述循環(huán)用標(biāo)志中。
4.根據(jù)權(quán)利要求2所述的處理器,其特征在于所述執(zhí)行裝置在將所述軟件流水線操作的級(jí)數(shù)設(shè)為N級(jí)(N為2以上的整數(shù)),將流水線的級(jí)數(shù)設(shè)為按所述結(jié)局部結(jié)束處理的順序升序計(jì)數(shù)時(shí),將第(N-1)級(jí)的流水線執(zhí)行的條件執(zhí)行指令所對(duì)應(yīng)的條件執(zhí)行用標(biāo)志的值寫入在所述結(jié)局部中同一周期的所述循環(huán)用標(biāo)志中。
5.根據(jù)權(quán)利要求2所述的處理器,其特征在于所述執(zhí)行裝置在將所述軟件流水線操作的級(jí)數(shù)設(shè)為N級(jí)(N為4以上的整數(shù)),將流水線的級(jí)數(shù)設(shè)為按所述結(jié)局部結(jié)束處理的順序升序計(jì)數(shù)時(shí),將第(N-3)級(jí)的流水線執(zhí)行的條件執(zhí)行指令所對(duì)應(yīng)的條件執(zhí)行用標(biāo)志的值寫入所述在結(jié)局部中2周期后的所述循環(huán)用標(biāo)志中。
6.根據(jù)權(quán)利要求1所述的處理器,其特征在于還包含暫時(shí)存儲(chǔ)所述譯碼裝置譯碼的所述指令的指令緩沖器,所述譯碼裝置在根據(jù)所述結(jié)局部的所述條件執(zhí)行用標(biāo)志的值來(lái)判斷為不執(zhí)行所述條件執(zhí)行指令的情況下,在所述循環(huán)結(jié)束之前,不從所述指令緩沖器中讀出所述條件執(zhí)行指令。
7.根據(jù)權(quán)利要求1所述的處理器,其特征在于還包含暫時(shí)存儲(chǔ)所述譯碼裝置譯碼的所述指令的指令緩沖器,存儲(chǔ)在所述指令緩沖器中的指令的一部分表示所述條件執(zhí)行用標(biāo)志的存儲(chǔ)位置,所述譯碼裝置在根據(jù)存儲(chǔ)在所述指令緩沖器中的所述指令的所述一部分,讀出存儲(chǔ)在所述標(biāo)志寄存器中的所述條件執(zhí)行用標(biāo)志,并根據(jù)該條件執(zhí)行用標(biāo)志判斷為不執(zhí)行所述條件執(zhí)行指令的情況下,不從所述指令緩沖器中讀出所述條件執(zhí)行指令。
8.根據(jù)權(quán)利要求1所述的處理器,其特征在于還包含進(jìn)行所述多個(gè)條件執(zhí)行用標(biāo)志的分配的標(biāo)志分配裝置,所述標(biāo)志分配裝置當(dāng)源程序的循環(huán)內(nèi)包含條件分支指令的情況下,使在滿足該條件時(shí)的條件執(zhí)行指令的預(yù)測(cè)中所用的條件執(zhí)行用標(biāo)志、和在不滿足該條件時(shí)的條件執(zhí)行指令的預(yù)測(cè)中所用的條件執(zhí)行用標(biāo)志不同,來(lái)進(jìn)行分配。
9.一種編譯裝置,將源程序編譯成可并行處理的處理器用的機(jī)器語(yǔ)言程序,其特征在于包含對(duì)所述源程序進(jìn)行語(yǔ)法解析的解析裝置;將解析出的所述源程序變換為中間代碼的中間代碼變換裝置;使所述中間代碼最佳化的最佳化裝置;和將最佳化后的所述中間代碼變換為機(jī)器語(yǔ)言指令的代碼生成裝置,所述處理器中存儲(chǔ)在條件執(zhí)行指令的預(yù)測(cè)中所用的多個(gè)標(biāo)志,所述最佳化裝置當(dāng)所述中間代碼中包含循環(huán)的情況下,在通過(guò)軟件流水線操作展開所述循環(huán)時(shí)的序言部中配置在所述循環(huán)的緊前面執(zhí)行的指令。
10.一種編譯裝置,將源程序編譯成可并行處理的處理器用機(jī)器語(yǔ)言程序,其特征在于包含對(duì)所述源程序進(jìn)行語(yǔ)法分析的解析裝置;將分析出的所述源程序變換為中間代碼的中間代碼變換裝置;使所述中間代碼最佳化的最佳化裝置;和將最佳化后的所述中間代碼變換為機(jī)器語(yǔ)言指令的代碼生成裝置,所述處理器中存儲(chǔ)在條件執(zhí)行指令的預(yù)測(cè)中所用的多個(gè)標(biāo)志,所述最佳化裝置當(dāng)所述中間代碼中包含循環(huán)的情況下,在通過(guò)軟件流水線操作展開所述循環(huán)時(shí)的結(jié)局部中,配置在所述循環(huán)的緊后面執(zhí)行的指令。
11.一種編譯裝置,將源程序編譯成可并行處理的處理器用機(jī)器語(yǔ)言程序,其特征在于包含對(duì)所述源程序進(jìn)行語(yǔ)法分析的解析裝置;將分析出的所述源程序變換為中間代碼的中間代碼變換裝置;使所述中間代碼最佳化的最佳化裝置;和將最佳化后的所述中間代碼變換為機(jī)器語(yǔ)言指令的代碼生成裝置,所述處理器中存儲(chǔ)在條件執(zhí)行指令的預(yù)測(cè)中所用的多個(gè)標(biāo)志,所述最佳化裝置當(dāng)所述中間代碼中包含條件分支指令的情況下,使在滿足該條件時(shí)的條件執(zhí)行指令的預(yù)測(cè)中所用的標(biāo)志、和在不滿足該條件時(shí)的條件執(zhí)行指令的預(yù)測(cè)中所用的標(biāo)志不同,來(lái)進(jìn)行分配。
12.一種編譯方法,將源程序編譯成可并行處理的處理器用機(jī)器語(yǔ)言程序,其特征在于包含對(duì)所述源程序進(jìn)行語(yǔ)法分析的解析步驟;將分析出的所述源程序變換為中間代碼的中間代碼變換步驟;使所述中間代碼最佳化的最佳化步驟;和將最佳化后的所述中間代碼變換為機(jī)器語(yǔ)言指令的代碼生成步驟,所述處理器中存儲(chǔ)在條件執(zhí)行指令的預(yù)測(cè)中所用的多個(gè)標(biāo)志,在所述最佳化步驟中,當(dāng)所述中間代碼中包含循環(huán)的情況下,在由軟件流水線操作展開所述循環(huán)時(shí)的序言部中,配置在所述循環(huán)的緊前面執(zhí)行的指令。
13.一種編譯方法,將源程序編譯成可并行處理的處理器用機(jī)器語(yǔ)言程序,其特征在于包含對(duì)所述源程序進(jìn)行語(yǔ)法分析的解析步驟;將分析出的所述源程序變換為中間代碼的中間代碼變換步驟;使所述中間代碼最佳化的最佳化步驟;和將最佳化后的所述中間代碼變換為機(jī)器語(yǔ)言指令的代碼生成步驟,所述處理器中存儲(chǔ)在條件執(zhí)行指令的預(yù)測(cè)中所用的多個(gè)標(biāo)志,在所述最佳化步驟中,當(dāng)所述中間代碼中包含循環(huán)的情況下,在由軟件流水線操作展開所述循環(huán)時(shí)的結(jié)局部中,配置在所述循環(huán)的緊后面執(zhí)行的指令。
14.一種編譯方法,將源程序編譯成可并行處理的處理器用機(jī)器語(yǔ)言程序,其特征在于包含對(duì)所述源程序進(jìn)行語(yǔ)法分析的解析步驟;將分析出的所述源程序變換為中間代碼的中間代碼變換步驟;使所述中間代碼最佳化的最佳化步驟;和將最佳化后的所述中間代碼變換為機(jī)器語(yǔ)言指令的代碼生成步驟,所述處理器中存儲(chǔ)在條件執(zhí)行指令的預(yù)測(cè)中所用的多個(gè)標(biāo)志,在所述最佳化步驟中,當(dāng)所述中間代碼中包含條件分支指令的情況下,使在滿足該條件時(shí)的條件執(zhí)行指令的預(yù)測(cè)中所用的標(biāo)志、和在不滿足該條件時(shí)的條件執(zhí)行指令的預(yù)測(cè)中所用的標(biāo)志不同,來(lái)進(jìn)行分配。
15.一種編譯器,將源程序編譯成可并行處理的處理器用機(jī)器語(yǔ)言程序,其特征在于包含對(duì)所述源程序進(jìn)行語(yǔ)法分析的解析步驟;將分析出的所述源程序變換為中間代碼的中間代碼變換步驟;使所述中間代碼最佳化的最佳化步驟;和將最佳化后的所述中間代碼變換為機(jī)器語(yǔ)言指令的代碼生成步驟,所述處理器中存儲(chǔ)在條件執(zhí)行指令的預(yù)測(cè)中所用的多個(gè)標(biāo)志,在所述最佳化步驟中,當(dāng)所述中間代碼中包含循環(huán)的情況下,在由軟件流水線操作展開所述循環(huán)時(shí)的序言部中,配置在所述循環(huán)的緊前面執(zhí)行的指令。
16.一種編譯器,將源程序編譯成可并行處理的處理器用機(jī)器語(yǔ)言程序,其特征在于包含對(duì)所述源程序進(jìn)行語(yǔ)法分析的解析步驟;將分析出的所述源程序變換為中間代碼的中間代碼變換步驟;使所述中間代碼最佳化的最佳化步驟;和將最佳化后的所述中間代碼變換為機(jī)器語(yǔ)言指令的代碼生成步驟,所述處理器中存儲(chǔ)在條件執(zhí)行指令的預(yù)測(cè)中所用的多個(gè)標(biāo)志,在所述最佳化步驟中,當(dāng)所述中間代碼中包含循環(huán)的情況下,在由軟件流水線操作展開所述循環(huán)時(shí)的結(jié)局部中,配置在所述循環(huán)的緊后面執(zhí)行的指令。
17.一種編譯器,將源程序編譯成可并行處理的處理器用機(jī)器語(yǔ)言程序,其特征在于包含對(duì)所述源程序進(jìn)行語(yǔ)法分析的解析步驟;將分析出的所述源程序變換為中間代碼的中間代碼變換步驟;使所述中間代碼最佳化的最佳化步驟;和將最佳化后的所述中間代碼變換為機(jī)器語(yǔ)言指令的代碼生成步驟,所述處理器中存儲(chǔ)在條件執(zhí)行指令的預(yù)測(cè)中所用的多個(gè)標(biāo)志,在所述最佳化步驟中,當(dāng)所述中間代碼中包含條件分支指令的情況下,使在滿足該條件時(shí)的條件執(zhí)行指令的預(yù)測(cè)中所用的標(biāo)志、和在不滿足該條件時(shí)的條件執(zhí)行指令的預(yù)測(cè)中所用的標(biāo)志不同,來(lái)進(jìn)行分配。
全文摘要
本發(fā)明提供一種電路規(guī)模小、且可以低功耗高速執(zhí)行循環(huán)處理的處理器,具備解碼部與運(yùn)算部等,當(dāng)解碼部譯碼指令[jloop C6,C1C4,TAR,Ra]時(shí),執(zhí)行如下一系列處理,即(1)在寄存器Ra小于0的情況下,將條件標(biāo)志C4設(shè)成0,(2)將條件標(biāo)志C2的值傳送給條件標(biāo)志C1,將條件標(biāo)志C3的值傳送給條件標(biāo)志C2,將條件標(biāo)志C4的值傳送給條件標(biāo)志C3和C6,(3)對(duì)寄存器Ra加上-1,并存儲(chǔ)在寄存器Ra中,(4)分支到分支寄存器(TAR)所示的地址。在跳躍緩沖器中未填充分支目的地的指令的情況下,填充分支目的地的指令。
文檔編號(hào)G06F9/44GK1532693SQ20041003220
公開日2004年9月29日 申請(qǐng)日期2004年3月24日 優(yōu)先權(quán)日2003年3月24日
發(fā)明者岡林羽月, 田中哲也, 瓶子岳人, 小川一, 也, 人 申請(qǐng)人:松下電器產(chǎn)業(yè)株式會(huì)社