專利名稱:數(shù)據(jù)處理器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及微型處理器、微型計(jì)算機(jī)等數(shù)據(jù)處理器,涉及能夠 實(shí)現(xiàn)對(duì)指令的有效代碼分配的技術(shù)。
背景技術(shù):
微型處理器在1984年由摩托羅拉公司開發(fā)出來的68020以來, 長(zhǎng)時(shí)間占據(jù)主流的是32位處理器。這是由于能夠由32位指定的 232B=4GB在大約20年間是足夠大的地址空間。但是,由于伴隨系 統(tǒng)性能提高的所需存儲(chǔ)器容量的增大以及存儲(chǔ)器單價(jià)的降低,近年 來,PC/服務(wù)器領(lǐng)域中處理超過4GB空間的64位處理器逐漸普及。 而且,在嵌入式處理器中,也預(yù)測(cè)到會(huì)以追隨PC/服務(wù)器領(lǐng)域的形式 在幾年、或最遲十年內(nèi)變成64位。
嵌入式處理器與性能最優(yōu)先的PC/服務(wù)器用處理器不同,要謀求 兼顧高效率和高性能。其結(jié)果,可實(shí)現(xiàn)高代碼效率的16位固定長(zhǎng)度 指令集的RISC ( Reduced Instruction Set Computer)型嵌入式處理器 正在普及。高代碼效率即使在片外存儲(chǔ)器的大容量化發(fā)展的現(xiàn)在, 也是在片內(nèi)高速緩存、RAM、 ROM的有效應(yīng)用中所不可缺少的。但 是,使這樣的處理器變?yōu)?4位,必須有效應(yīng)用16位固定長(zhǎng)度指令 代碼空間。
另外,32位處理器時(shí)代長(zhǎng)期持續(xù)的結(jié)果一般是,運(yùn)算基本上為 32位,8位、16位的數(shù)據(jù)在處理器的寄存器中擴(kuò)展為32位來處理; 或者,取4個(gè)8位數(shù)據(jù)或2個(gè)16位數(shù)據(jù)而以32位單位來處理。而 且,即使在64位處理器中,在64位運(yùn)算體系的基礎(chǔ)上也需要支持 這樣的以32位為基本的運(yùn)算體系。因此,在現(xiàn)有的64位處理器中, 根據(jù)需要而對(duì)同一運(yùn)算定義32位和64位這兩種運(yùn)算指令。其結(jié)果,在64位處理器中,運(yùn)算指令數(shù)量增多,為了定義它們而需要的代碼 空間也增大。: PowerPC User Instruction Set Architecture B ook I Version 2.02、 Internet URL<http:〃www.ibm.com/developerwor ks/power/library/pa-archguidev2>、 平成20年1月23日檢索:日本特開平06 - 337783號(hào)公報(bào): SH-4A擴(kuò)展功能軟件指南、Internet URL<http: "documentation.renesas.com/jpn/products/mpumcu/rjj09b0235_sh4asm. pdf>、平成20年1月23日檢索: AMD64 Architecture Programmer's Manual V olumel: Application Programming, Revision 3.11 、 Internet URL<h ttp:〃www.amd.com/us-en/assets/content—type/white__papers—and—tech—d ocs/24592.pdf>、平成20年1月23日檢索
發(fā)明內(nèi)容
如上所述,為了使16位固定長(zhǎng)度指令代碼的RISC型嵌入式處 理器變?yōu)?4位而必須有效應(yīng)用指令的代碼空間(簡(jiǎn)稱為指令代碼空 間)。尤其是32位處理器僅支持32位運(yùn)算體系即可,與此不同, 在64位處理器中需要支持32位和64位這兩種運(yùn)算體系。并且,為 此情況而如現(xiàn)有的64位處理器那樣對(duì)同一運(yùn)算定義32位和64位這 兩種運(yùn)算指令時(shí),則在16位固定長(zhǎng)度指令集中,難以壓縮指令代碼 空間,難以構(gòu)筑與現(xiàn)有的32位運(yùn)算體系并列的64位運(yùn)算體系。例 如,具有32位運(yùn)算體系的指令集的指令操作代碼具有能夠以8位加 以表示的256種時(shí),當(dāng)要僅追加多個(gè)64位運(yùn)算指令時(shí),需要使操作 代碼的位數(shù)至少增加l位,指令代碼空間變大,無(wú)法維持現(xiàn)有的32 位運(yùn)算指令體系。
特別是,即使在作為64位運(yùn)算的運(yùn)算結(jié)果的低32位與32位運(yùn) 算的32位相同時(shí),也需要在根據(jù)運(yùn)算結(jié)果而生成的標(biāo)志在32位與 64位的運(yùn)算中不同的情況下定義不同的指令。當(dāng)僅是生成的標(biāo)志不同時(shí),通過增加由1條指令生成的標(biāo)志數(shù)量,能夠削減生成標(biāo)志的
指令數(shù)量。例如,在文獻(xiàn)1的PowerPC中,由1條指令生成正、負(fù)、 零、溢出、進(jìn)位這樣的多種標(biāo)志。而且在文獻(xiàn)2中,生成多種用于 多個(gè)容量的標(biāo)志。即,生成"種類數(shù)量"x "尺寸數(shù)量"的標(biāo)志。 在文獻(xiàn)2中為"4種"x "2尺寸"="8標(biāo)志"。
但是,當(dāng)增加由1條指令生成的標(biāo)志數(shù)量時(shí),需要增加使用標(biāo) 志的指令數(shù)量。例如,條件分支指令的分支條件一般為由"使用哪 個(gè)標(biāo)志"與"設(shè)置還是清除使用的標(biāo)志"的組合來決定的方式。在 文獻(xiàn)2的條件分支指令中,指定標(biāo)志使用方式的字段取5位,可以 指定32種。因此,條件分支指令數(shù)量為32 x "標(biāo)志以外的變化數(shù)量"。 作為標(biāo)志以外的變化而考慮延遲槽(Delay slot)的有無(wú)、分支目標(biāo) 地址指定方法等。
這樣,"標(biāo)志數(shù)量的增加"有利于"生成標(biāo)志的指令(標(biāo)志生 成指令)數(shù)量的削減",但卻導(dǎo)致"使用標(biāo)志的指令(標(biāo)志使用指 令)數(shù)量的增多"。因此,如文獻(xiàn)2那樣,當(dāng)增加標(biāo)志數(shù)量時(shí),并 不一定能夠削減指令數(shù)量。文獻(xiàn)2以CISC( Complicated Instruction Set Computer)為前提,作為主要標(biāo)志生成指令的運(yùn)算指令由于還能夠 指定存儲(chǔ)器操作數(shù),因此其數(shù)量較多。而且,若能增加標(biāo)志數(shù)量來 進(jìn)行數(shù)量較多的"標(biāo)志生成指令數(shù)量的削減",則能夠削減指令數(shù) 量。而一般的RISC為32位固定長(zhǎng)度指令集,指令代碼空間具有富 余,因此指令數(shù)量削減需求較小。因此在RISC中,并沒有調(diào)整標(biāo)志 數(shù)量而實(shí)現(xiàn)了指令數(shù)量的最小化的實(shí)例。但是,在作為16位固定長(zhǎng) 度的指令集RISC的處理器64位化中,指令代碼空間沒有富余。另 外,RISC的標(biāo)志生成指令數(shù)量少于CISC。因此,僅增加標(biāo)志數(shù)量 并未發(fā)現(xiàn)最佳點(diǎn)。并且,做成為標(biāo)志生成指令數(shù)量與標(biāo)志使用指令 數(shù)量的平衡變得良好的方式是重要的。
本發(fā)明要解決的第 一課題在于在標(biāo)志生成指令數(shù)量少的指令 集中調(diào)整標(biāo)志數(shù)量來削減指令數(shù)量,謀求對(duì)它們進(jìn)行定義所需的代 碼空間的最小化,如作為16位固定長(zhǎng)度指令集的RISC那樣,能實(shí)現(xiàn)指令代碼空間沒有富余的處理器的64位化。
另外, 一般即使增加標(biāo)志數(shù)量,使用由1條指令生成的多個(gè)標(biāo) 志的例子也較少,多為僅使用1個(gè)的情況。而當(dāng)組合使用由多條指 令生成的標(biāo)志時(shí),存在能夠進(jìn)行有效編程的情況。但是,每當(dāng)執(zhí)行 指令而更新多個(gè)標(biāo)志時(shí),后續(xù)指令會(huì)重寫在先指令生成的標(biāo)志,因 此難以組合使用標(biāo)志。因此,需要將生成的標(biāo)志逐次傳送至寄存器, 在寄存器中進(jìn)行邏輯運(yùn)算后立刻返回給標(biāo)志,判斷在寄存器中進(jìn)行
邏輯運(yùn)算后的結(jié)果作為數(shù)值而生成標(biāo)志;或者,每當(dāng)生成標(biāo)志時(shí)進(jìn) 行條件分支或條件執(zhí)行。這些方式的執(zhí)行指令數(shù)量將會(huì)變多或者分 支頻率增加,因此效率惡化,性能降低。
特別是,在將某數(shù)據(jù)作為運(yùn)算對(duì)象觀察時(shí),其尺寸并不是為兩 種,因此,即使生成對(duì)于多種尺寸的標(biāo)志,其一方也是不需要的。 通過合適的符號(hào)擴(kuò)展或零擴(kuò)展,雖然有可能對(duì)于多種尺寸的標(biāo)志變 為相同的值,從而無(wú)論是哪一方都能使用,但不存在改變成一方為 不需要的情況。因此,在定義了多個(gè)標(biāo)志的情況下,與同時(shí)更新相 比,僅更新所需的標(biāo)志,保留想要保留的標(biāo)志,能夠?qū)崿F(xiàn)標(biāo)志間的 運(yùn)算也是有效的。但是,為了實(shí)現(xiàn)上述效果,需要指定標(biāo)志生成指 令更新的標(biāo)志與標(biāo)志使用指令使用的標(biāo)志這兩者的種類和情況,需 要最大的指令代碼空間。
本發(fā)明要解決的第二課題在于不使用較大的指令代碼空間而 靈活運(yùn)用以指令代碼空間的最小化為主要目的而定義的多個(gè)標(biāo)志, 能夠組合使用由多個(gè)指令生成的標(biāo)志。
簡(jiǎn)單說明本申請(qǐng)公開的發(fā)明中代表性技術(shù)方案的概要如下。
在本發(fā)明中,采用的觀點(diǎn)是在標(biāo)志生成指令數(shù)量較多的情況下, 通過增加1條指令生成的標(biāo)志數(shù)量,使得標(biāo)志生成指令數(shù)量的減少 超過標(biāo)志使用指令數(shù)量的增加,從而實(shí)現(xiàn)指令數(shù)量的削減,根據(jù)這 樣的觀點(diǎn),采用定義生成與操作數(shù)的數(shù)據(jù)尺寸對(duì)應(yīng)的多個(gè)標(biāo)志的指 令這樣的方案??偠灾?,在縮小指令集計(jì)算機(jī)型的數(shù)據(jù)處理器中, 在指令集中添加可對(duì)多個(gè)數(shù)據(jù)尺寸的操作數(shù)進(jìn)行運(yùn)算處理的、不拘泥于如下操作數(shù)的數(shù)據(jù)尺寸而生成與各個(gè)數(shù)據(jù)尺寸對(duì)應(yīng)的標(biāo)志的指令,其中,該如下操作數(shù)為對(duì)較大數(shù)據(jù)尺寸的操作數(shù)的低位一側(cè)進(jìn)行與對(duì)較小數(shù)據(jù)尺寸的操作數(shù)的運(yùn)算處理相等的處理而被進(jìn)行運(yùn)算處理的操作數(shù)。
作為第二觀點(diǎn),為了定義多個(gè)標(biāo)志,僅更新所需的標(biāo)志,保留想要保留的標(biāo)志,能夠進(jìn)行標(biāo)志間的運(yùn)算,而采用指定標(biāo)志生成指令更新的標(biāo)志與標(biāo)志使用指令使用的標(biāo)志這兩者的種類和位置這樣的方案。即,在指令集中添加前置指令,該前置指令在指定與上述指令生成的各個(gè)數(shù)據(jù)尺寸所對(duì)應(yīng)的標(biāo)志中的由后續(xù)指令生成的標(biāo)志來進(jìn)行更新的標(biāo)志的基礎(chǔ)上,分別進(jìn)行修飾的后續(xù)指令生成的標(biāo)志
中要使用的標(biāo)志的指定、以及所指定的2個(gè)標(biāo)志間的邏輯運(yùn)算的指定。
簡(jiǎn)單說明本申請(qǐng)公開的發(fā)明中代表性的技術(shù)方案所獲得的D果如下。
即,根據(jù)第一觀點(diǎn)的發(fā)明,構(gòu)成指令集的指令的種類(指令數(shù)量)整體上減少。因此,能夠有利于指令代碼空間沒有富余的RISC型數(shù)據(jù)處理器中的指令代碼的代碼空間縮小。例如,如作為16位固定長(zhǎng)度指令集的RISC那樣,能夠?qū)崿F(xiàn)指令代碼空間沒有富余的處理器的64位化。
根據(jù)第二觀點(diǎn)的發(fā)明,能夠有效應(yīng)用以指令代碼空間的最小化為主要目的來定義的多個(gè)標(biāo)志而不使用較大的指令代碼空間,能夠組合使用由多個(gè)指令所生成的標(biāo)志。
圖1是概略例示出本發(fā)明數(shù)據(jù)處理器中的處理器核心結(jié)構(gòu)的框圖。
圖2是概略例示出本發(fā)明實(shí)施方式1的處理器核心的執(zhí)行單元框圖。
圖3是概略例示出本發(fā)明實(shí)施方式2的標(biāo)志更新前置指令的說明圖。
圖4是概略例示出本發(fā)明實(shí)施方式2的處理器核心指令解碼單
元的框圖。
圖5是概略例示出本發(fā)明實(shí)施方式2的處理器核心的執(zhí)行單元
的框圖。
圖6是概略例示出本發(fā)明實(shí)施方式2的處理器核心的工作的說明圖。
圖7是例示出本發(fā)明數(shù)據(jù)處理器的概略結(jié)構(gòu)的框圖。
具體實(shí)施例方式
1.實(shí)施方式的概要
首先,說明本申請(qǐng)公開的發(fā)明的代表性實(shí)施方式的概要。代表性實(shí)施方式的概要說明中標(biāo)記括號(hào)來進(jìn)行參照的附圖中的參照符號(hào)
首先具體說明上述各個(gè)觀點(diǎn)。首先,關(guān)于第一觀點(diǎn),16位固定長(zhǎng)度指令集的RISC型32位處理器的標(biāo)志生成指令數(shù)量,例如在文獻(xiàn)3的SH-4A處理器核心中,操作數(shù)字段中8位的指令為17條、4位的指令為12條。使用并更新標(biāo)志的指令作為標(biāo)志生成指令來進(jìn)行計(jì)數(shù)。另外,取消了與64位處理器化無(wú)關(guān)的浮動(dòng)小數(shù)點(diǎn)指令。而標(biāo)志使用指令數(shù)量中,操作數(shù)字段中8位的指令為4條、4位的指令為1條。并且,標(biāo)志數(shù)量為1。標(biāo)志數(shù)量越少,標(biāo)志生成指令數(shù)量越多,標(biāo)志使用指令數(shù)量越減少,因此在SH-4A處理器核心中,29條指令對(duì)5條指令,標(biāo)志生成指令數(shù)量大約為較多的6倍。而且,29條標(biāo)志生成指令中,26條指令因操作數(shù)尺寸而工作不同,因此當(dāng)簡(jiǎn)單增加64位指令時(shí),會(huì)增加26條指令。其結(jié)果是,標(biāo)志生成指令數(shù)量與標(biāo)志使用指令數(shù)量的比為55比5,成為11倍。
這樣當(dāng)標(biāo)志生成指令數(shù)量較多時(shí),通過增加1條指令生成的標(biāo)志數(shù)量,能夠改變比率而削減指令數(shù)量。作為增加的方式,考察定義與標(biāo)志的種類對(duì)應(yīng)的標(biāo)志的方式(1)、定義與操作數(shù)尺寸對(duì)應(yīng)的標(biāo)志的方式(2)、或定義與其雙方^于應(yīng)的標(biāo)志的方式(3)。
首先,考察定義與標(biāo)志的種類對(duì)應(yīng)的標(biāo)志的方式(1) 。 SH-4A處理器核心的標(biāo)志種類中包括帶符號(hào)尺寸、無(wú)符號(hào)尺寸、零、溢出、進(jìn)位、移出位等。并且,標(biāo)志為1位,因此在標(biāo)記哪個(gè)指令的標(biāo)志中,其意義會(huì)變化。在不同的運(yùn)算標(biāo)記不同種類的標(biāo)志的情況下,即使增加標(biāo)志的種類,指令數(shù)量也不減少,因此,當(dāng)著眼于僅同一運(yùn)算中生成的標(biāo)志不同時(shí),比較指令成為候補(bǔ)。當(dāng)比較指令使帶符號(hào)尺寸、無(wú)符號(hào)尺寸、零這3個(gè)標(biāo)志成為別的標(biāo)志時(shí),能夠使18條指令成為8條指令。其它的指令生成零、溢出、進(jìn)位、移出位等,但由于運(yùn)算不同,因此即使以種類來劃分標(biāo)志,也沒有指令數(shù)量削減的效果。另一方面,標(biāo)志使用指令數(shù)量與標(biāo)志種類數(shù)量對(duì)應(yīng)而變?yōu)?倍,從5條指令變?yōu)?5條指令。其結(jié)果,與標(biāo)志有關(guān)系的指令數(shù)量從60條指令減少10條指令并增加10條指令,因此保持60條指令不變。
接著,考察定義與操作數(shù)尺寸對(duì)應(yīng)的標(biāo)志的方式(2)。當(dāng)對(duì)每個(gè)32位與64位的操作數(shù)尺寸設(shè)置標(biāo)志時(shí),能夠使因操作數(shù)尺寸而工作不同的29條指令中的、低32位的工作相同的15條指令成為32位與64位共用的指令。而標(biāo)志成為2倍,因此標(biāo)志使用指令數(shù)量從5條指令變?yōu)?0條指令。其結(jié)果,與標(biāo)志有關(guān)系的指令數(shù)量從60條指令減少15條指令并增加5條指令,因此減少為50條指令。
并且,考察定義與其雙方對(duì)應(yīng)的標(biāo)志的方式(3)。首先,通過使標(biāo)志為3種,能夠使比較指令從18條指令變?yōu)?條指令。而且通過按每個(gè)尺寸來定義標(biāo)志能夠使8條指令變?yōu)?條指令。另外,比較指令以外的標(biāo)志生成指令中的低3 2位的工作能夠削減6條相同的指令。而標(biāo)志使用指令數(shù)量對(duì)應(yīng)于標(biāo)志種類數(shù)量而成為6倍,從5條指令變?yōu)?0條指令。其結(jié)果是,與標(biāo)志有關(guān)的指令數(shù)量從60條指令減少20條指令并增加25條指令,因此增加為65條指令。
如以上那樣,根據(jù)指令數(shù)量最小化這樣的觀點(diǎn)可知,當(dāng)使標(biāo)志數(shù)量最優(yōu)化時(shí),根據(jù)操作數(shù)尺寸來定義標(biāo)志的方式(2)是最佳的。指令占用(消耗)的指令代碼空間根據(jù)指令在操作數(shù)字段中使
用的位數(shù)而變化較大。在N位中,占用指令代碼空間整體的2的(16-N)乘方分之一的空間。例如,當(dāng)為8位時(shí)占用1/256的空間,當(dāng)為4位時(shí)占用1/4096的空間。因此,重要的是削減8位操作數(shù)字段的指令數(shù)量。
因此,當(dāng)限定為具有8位操作數(shù)字段的指令(也簡(jiǎn)稱為8位操作數(shù)字段指令)來進(jìn)行上述考察時(shí),32位處理器的與標(biāo)志有關(guān)的8位操作數(shù)字段指令中,生成指令為17條,使用指令算上4條條件分支指令而共計(jì)為21條指令,其中,因操作數(shù)尺寸而工作不同的指令為15條生成指令,因此當(dāng)簡(jiǎn)單追加64位指令時(shí),生成指令增加15條指令而成為32條指令,共計(jì)成為36條指令。
首先,在定義與標(biāo)志種類對(duì)應(yīng)的標(biāo)志的方式(1)中,通過使標(biāo)志為3種,能夠使比較指令從17條指令變?yōu)?條指令,相反條件分支指令從4條指令增加為12條指令,因此與標(biāo)志有關(guān)的指令數(shù)量從36條指令減少8條指令并增加8條指令,因此保持36條指令不變。
接著,在定義與操作數(shù)尺寸對(duì)應(yīng)的標(biāo)志的方式(2)中,能夠使因操作數(shù)尺寸而工作不同的15條指令中的、低32位的工作相同的IO條指令成為以32位與64位共用的指令。而標(biāo)志成為2倍,因此條件分支指令數(shù)量從4條指令變?yōu)?條指令。其結(jié)果,與標(biāo)志有關(guān)的指令數(shù)量從36條指令減少10條指令并增加4條,因此減少為30條指令。
并且,考慮(研究)定義與其雙方對(duì)應(yīng)的標(biāo)志的方式(3)。首先,通過使標(biāo)志為3種,能夠使比較指令從14條指令變?yōu)?條指令。而且通過按每個(gè)尺寸地定義標(biāo)志,能夠使6條指令變?yōu)?條指令。另外,能夠削減3條比較指令以外的標(biāo)志生成指令中的低3 2位的工作相同的指令。而標(biāo)志使用指令數(shù)量根據(jù)標(biāo)志種類數(shù)量而成為6倍,從4條指令變?yōu)?4條指令。其結(jié)果,與標(biāo)志有關(guān)的指令數(shù)量從36條指令減少14條指令并增加20條指令,因此增加為42條指令。
如以上那樣可知,即使限定為對(duì)指令代碼空間占用的影響較大的8位操作數(shù)字段指令,根據(jù)操作數(shù)尺寸來定義標(biāo)志的方式(2)是
最佳的。而當(dāng)在文獻(xiàn)2中應(yīng)用于CISC時(shí),對(duì)指令的代碼尺寸最小化 最佳的方式(3)在RISC中成為最差的方式。
在作為本發(fā)明第 一 課題的標(biāo)志生成指令數(shù)量較少的指令集中, 調(diào)整標(biāo)志數(shù)量來削減指令數(shù)量,謀求對(duì)它們進(jìn)行定義所需的代碼空 間的最小化,如作為16位固定長(zhǎng)度指令集的RISC那樣實(shí)現(xiàn)指令代 碼空間沒有富余的處理器的64位化是通過定義與操作數(shù)尺寸對(duì)應(yīng)的 標(biāo)志來達(dá)成的。具體而言通過以下來實(shí)現(xiàn)對(duì)32位與64位的操作 數(shù)尺寸的每一個(gè)設(shè)置標(biāo)志,合并32位與64位操作數(shù)的指令中低32 位的工作相同的指令,增加與標(biāo)志數(shù)量增加對(duì)應(yīng)的條件分支等標(biāo)志 使用指令數(shù)量。由此,構(gòu)成指令集的指令種類(指令數(shù)量)作為整 體而變少。
關(guān)于第二觀點(diǎn),如課題中描述的那樣,定義多個(gè)標(biāo)志而僅更新 所需的標(biāo)志,保留要保留的標(biāo)志,為了實(shí)現(xiàn)標(biāo)志間的運(yùn)算而需要指 定標(biāo)志生成指令更新的標(biāo)志、以及標(biāo)志使用指令使用的標(biāo)志這兩者 的種類與情況,需要最大的指令代碼空間。
為了解決該問題,定義修飾后續(xù)指令的指令、即前置指令即可。 前置指令的組成類似于可變長(zhǎng)度指令集的組成,如文獻(xiàn)4的87頁(yè)開 始記載的那樣,已經(jīng)存在使用前置指令的處理器。并且,只要本領(lǐng) 域的技術(shù)人員就能夠?qū)崿F(xiàn)其組成。而且,重要的是定義什么樣的前 置指令。在本發(fā)明中,作為標(biāo)志更新前置指令來進(jìn)行要更新的標(biāo)志 的指定、后續(xù)指令生成的標(biāo)志中的要使用的標(biāo)志的指定、以及指定 的2個(gè)標(biāo)志間的邏輯運(yùn)算的指定。當(dāng)使標(biāo)志為2種類、使運(yùn)算為8 種類時(shí),能以5位的操作數(shù)字段進(jìn)行指定,不需要較大的指令代碼 空間。因?yàn)橐材軌蛑付ㄟ壿嬤\(yùn)算,因此能夠以可抑制要保留的標(biāo)志 的更新的指令集來以與用其他指令進(jìn)行邏輯運(yùn)算時(shí)相同的指令數(shù)來 執(zhí)行標(biāo)志間的邏輯運(yùn)算。由此,能夠有效應(yīng)用以指令代碼空間的最 小化為主要目的來定義的多個(gè)標(biāo)志而不使用較大的指令代碼空間, 能夠組合使用由多個(gè)指令所生成的標(biāo)志。根據(jù)上述觀點(diǎn)來說明代表性的實(shí)施方式。 〔1〕縮小指令集計(jì)算機(jī)型的數(shù)據(jù)處理器在指令集中具有可對(duì)多 個(gè)數(shù)據(jù)尺寸的操作數(shù)進(jìn)行運(yùn)算處理的、不拘泥于如下操作數(shù)的數(shù)據(jù)
尺寸而生成與各個(gè)數(shù)據(jù)尺寸對(duì)應(yīng)的標(biāo)志(newU, newT )的第 一 指令, 其中,該如下操作數(shù)為對(duì)較大數(shù)據(jù)尺寸的操作數(shù)的低位一側(cè)進(jìn)行與 對(duì)較小數(shù)據(jù)尺寸的操作數(shù)的運(yùn)算處理相等的處理而被進(jìn)行運(yùn)算處理 的操作數(shù)。由此,構(gòu)成指令集的指令種類(指令數(shù)量)在整體上變 少。因此,能夠有利于指令的代碼空間沒有富余的RISC型數(shù)據(jù)處理 器中的指令代碼空間的縮小。例如,能夠如作為16位固定長(zhǎng)度指令 集的RISC那樣實(shí)現(xiàn)指令代碼空間沒有富余的處理器的64位化。
〔2〕項(xiàng)1的數(shù)據(jù)處理器在上述指令集中還具有例如選擇使用由 上述第一指令生成的標(biāo)志的第二指令。
〔3〕項(xiàng)1的數(shù)據(jù)處理器在上述指令集還具有前置指令,該前置 指令例如指定與上述第一指令生成的各個(gè)數(shù)據(jù)尺寸對(duì)應(yīng)的標(biāo)志中的 由后續(xù)指令生成的標(biāo)志來進(jìn)行更新的標(biāo)志,修飾指定的該后續(xù)指令。 由此,能夠定義多個(gè)標(biāo)志而僅更新需要的標(biāo)志。
〔4〕項(xiàng)1的數(shù)據(jù)處理器在上述指令集中具有前置指令,該前置 指令例如在指定與上述第一指令生成的各個(gè)數(shù)據(jù)尺寸對(duì)應(yīng)的標(biāo)志中 的由后續(xù)指令生成的標(biāo)志來進(jìn)行更新的標(biāo)志的基礎(chǔ)上,分別進(jìn)行修 飾的后續(xù)指令生成的標(biāo)志中要使用的標(biāo)志、以及所指定的2個(gè)標(biāo)志 間的邏輯運(yùn)算的指定。由此,能夠定義多個(gè)標(biāo)志而僅更新所需標(biāo)志, 保留要保留的標(biāo)志,實(shí)現(xiàn)標(biāo)志間的運(yùn)算。因此,能夠靈活應(yīng)用以指 令代碼空間的最小化為主要目的來定義的多個(gè)標(biāo)志,而不使用較大 的指令代碼空間,組合使用由多個(gè)指令所生成的標(biāo)志。
〔5〕在項(xiàng)1的數(shù)據(jù)處理器中,例如上述多個(gè)數(shù)據(jù)尺寸為32位 和64位。
〔6〕在項(xiàng)2的數(shù)據(jù)處理器中,例如上述標(biāo)志為多個(gè)數(shù)據(jù)尺寸的 每一個(gè)的帶符號(hào)尺寸、無(wú)符號(hào)尺寸、零、溢出、進(jìn)位、或移出位。 〔7〕具有指令執(zhí)行部(EXU)的縮小指令集計(jì)算機(jī)型的其他數(shù)據(jù)處理器在指令集中具有用于執(zhí)行帶標(biāo)志的生成的處理的第一指令 和用于執(zhí)行帶標(biāo)志的使用的處理的第二指令。上述指令執(zhí)行部具有
進(jìn)行根據(jù)指令解碼結(jié)果的處理的運(yùn)算電路(ALU、 SFT)、標(biāo)志鎖存 電路(U、 T)以及標(biāo)志選擇電路(FMUX)。上述運(yùn)算電路按照上 述第一指令的解碼結(jié)果,不拘泥于如下操作數(shù)的數(shù)據(jù)尺寸而生成與 各個(gè)數(shù)據(jù)尺寸對(duì)應(yīng)的標(biāo)志,該如下操作數(shù)為可對(duì)多個(gè)數(shù)據(jù)尺寸的操 作數(shù)進(jìn)行運(yùn)算處理的對(duì)較大的數(shù)據(jù)尺寸的操作數(shù)的低位 一 側(cè)進(jìn)行與 對(duì)于較小的數(shù)據(jù)尺寸的操作數(shù)的運(yùn)算處理相等的處理而被進(jìn)行運(yùn)算 處理的操作數(shù)。上述標(biāo)志鎖存電路按照上述第一指令的解碼結(jié)果鎖 存上述運(yùn)算電路中生成的標(biāo)志。上述標(biāo)志選擇電路按照上述第二指 令的解碼結(jié)果,選擇上述標(biāo)志鎖存電路中鎖存的標(biāo)志。
〔8〕在項(xiàng)7的數(shù)據(jù)處理器中,例如,上述運(yùn)算電路對(duì)每個(gè)數(shù)據(jù) 尺寸生成帶符號(hào)尺寸、無(wú)符號(hào)尺寸、零、溢出、進(jìn)位、以及移出位 的標(biāo)志,以第 一指令從生成的標(biāo)志中選擇一種標(biāo)志來按每個(gè)操作數(shù) 尺寸鎖存在上述標(biāo)志鎖存電路中。
〔9〕在項(xiàng)8的數(shù)據(jù)處理器中,例如上述多個(gè)數(shù)據(jù)尺寸為32位 和64位。
〔10〕另一其他的數(shù)據(jù)處理器在指令集中具有進(jìn)行運(yùn)算處理而 可生成多個(gè)標(biāo)志的運(yùn)算指令、以及修飾后續(xù)指令的前置指令,該前 置指令指定上述運(yùn)算指令生成的多個(gè)標(biāo)志中的由后續(xù)指令生成的標(biāo) 志來進(jìn)行更新的標(biāo)志。
〔11〕另一其他的數(shù)據(jù)處理器在指令集中具有進(jìn)行運(yùn)算處理而 可生成多個(gè)標(biāo)志的運(yùn)算指令以及前置指令,該前置指令在指定上述 運(yùn)算指令生成的多個(gè)標(biāo)志中的由后續(xù)指令生成的標(biāo)志來進(jìn)行更新的 標(biāo)志的基礎(chǔ)上,分別進(jìn)行要修飾的后續(xù)指令生成的標(biāo)志中的要使用 的標(biāo)志的指定、以及指定的2個(gè)標(biāo)志間的邏輯運(yùn)算的指定。 2.實(shí)施方式的詳細(xì)
進(jìn)一步詳細(xì)描述實(shí)施方式。以下,根據(jù)附圖詳細(xì)說明用于實(shí)施 本發(fā)明的優(yōu)選方式。在用于說明實(shí)施發(fā)明的優(yōu)選方式的所有附圖中,對(duì)具有同 一 功能的部件標(biāo)記同 一 符號(hào),省略其重復(fù)說明。 《實(shí)施方式1》
圖7例示出本發(fā)明的數(shù)據(jù)處理器DPU。數(shù)據(jù)處理器DPU以中央 處理裝置那樣的處理器核心CPU為中心,具有以內(nèi)部總線與其連接 的非易失性存儲(chǔ)器ROM、易失性存儲(chǔ)器RAM、輸入輸出接口電路 IOC、以及外部總線接口電路EBIF等,例如,通過互補(bǔ)型MOS校 正電路制造技術(shù)而形成在單晶硅等一塊半導(dǎo)體襯底上。非易失性存 儲(chǔ)器ROM被利用為處理器核心CPU執(zhí)行的程序等的存儲(chǔ)區(qū)域,易 失性存儲(chǔ)器RAM被利用為處理器核心CPU的工作區(qū)域等。
圖1概略例示出處理器核心CPU的模塊結(jié)構(gòu)。例如,處理器核 心CPU由指令高速緩存IC、指令獲取單元IFU、指令解碼單元IDU、 執(zhí)行單元EXU、加載存儲(chǔ)單元LSU、數(shù)據(jù)高速緩存DC以及總線接 口單元BIU構(gòu)成。
指令獲取單元IFU將指令地址IA輸出到指令高速緩存IC中, 指令高速緩存IC將從指令地址IA所指定的地址開始獲取的指令FI 返回到指令獲取單元IFU。高速緩存失敗的情況下,將失敗后的地址 輸出到總線接口單元BIU來作為外部指令地址EIA,接收外部獲取 指令EI后立刻將指令FI返回到指令獲取單元IFU。
指令解碼單元IDU從指令獲取單元IFU接收指令OP,并輸出分 支控制信號(hào)BRC。另夕卜,對(duì)指令OP進(jìn)行解碼,分別向執(zhí)行單元EXU 和加載存儲(chǔ)單元LSU輸出執(zhí)行控制信息EXC和加載存儲(chǔ)控制信息 LSC,并且訪問寄存器文件RF,將執(zhí)行用操作數(shù)EXA和EXB提供 給執(zhí)行單元EXU,將加載存儲(chǔ)用地址操作數(shù)LSA、 LSB以及存儲(chǔ)數(shù) 據(jù)SD提供給加載存儲(chǔ)單元LSU。并且,從執(zhí)行單元EXU接收?qǐng)?zhí)行 結(jié)果EXO,從加載存儲(chǔ)單元LSU接收加載數(shù)據(jù)LD,并存儲(chǔ)在寄存 器文件RF中。
執(zhí)行單元EXU從指令解碼單元IDU接收?qǐng)?zhí)行控制信息EXC、 執(zhí)行用操作數(shù)EXA以及EXB,按照?qǐng)?zhí)行控制信息EXC進(jìn)行執(zhí)行運(yùn) 算,然后將執(zhí)行結(jié)果EXO返回給指令解碼單元IDU。加載存儲(chǔ)單元LSU從指令解碼單元IDU接收加載存儲(chǔ)控制信息 LSC、加載存儲(chǔ)用地址操作數(shù)LSA和LSB、以及存儲(chǔ)數(shù)據(jù)SD,按照 加載存儲(chǔ)控制信息LSC執(zhí)行加載存儲(chǔ),然后將加載數(shù)據(jù)LD返回指 令解碼單元IDU。另外,加載存儲(chǔ)時(shí),對(duì)數(shù)據(jù)高速緩存DC輸出數(shù) 據(jù)地址DA,在存儲(chǔ)時(shí),還輸出數(shù)據(jù)高速緩存存儲(chǔ)數(shù)據(jù)DCSD。并且, 數(shù)據(jù)高速緩存DC在加載時(shí)將數(shù)據(jù)高速緩存加載數(shù)據(jù)DCLD返回給 加載存儲(chǔ)單元LSU,存儲(chǔ)時(shí)存儲(chǔ)數(shù)據(jù)高速緩存存儲(chǔ)數(shù)據(jù)DCSD。高 速緩存失敗的情況下,向總線接口單元BIU輸出失敗的地址來作為 外部數(shù)據(jù)地址EDA,接收外部加載數(shù)據(jù)ELD后立刻將數(shù)據(jù)高速緩存 加載數(shù)據(jù)DCLD返回給加載存儲(chǔ)單元LSU。另外,伴隨高速緩存失 敗的數(shù)據(jù)拷回(copy back)、未進(jìn)行高速緩存的數(shù)據(jù)在外部存儲(chǔ)時(shí), 輸出那些數(shù)據(jù)來作為外部存儲(chǔ)數(shù)據(jù)ESD,并且輸出那些數(shù)據(jù)的地址 來作為外部數(shù)據(jù)地址EDA。
總線接口單元BIU分別從指令高速緩存IC或數(shù)據(jù)高速緩存DC 接收外部指令地址EIA或外部數(shù)據(jù)地址EDA,向處理器核心CPU之 外輸出外部地址EA來請(qǐng)求數(shù)據(jù),作為外部數(shù)據(jù)ED來進(jìn)行接收,并 且分別作為外部獲取指令EI或外部加載數(shù)據(jù)ELD來進(jìn)行輸出。另 外,從數(shù)據(jù)高速緩存DC接收外部數(shù)據(jù)地址EDA和外部存儲(chǔ)數(shù)據(jù) ESD,作為外部地址EA和外部數(shù)據(jù)ED來輸出到處理器核心CPU 之外,并輸出存儲(chǔ)請(qǐng)求。
圖2概略例示出本發(fā)明實(shí)施方式1的處理器的執(zhí)行單元EXU。 執(zhí)行單元EXU由算術(shù)邏輯運(yùn)算器ALU、移位器SFT、 32位標(biāo)志復(fù) 用器(multiplexer) FM32、 64位標(biāo)志復(fù)用器FM64、 32位移位輸出 復(fù)用器M32、 64位移出位復(fù)用器M64、輸出復(fù)用器OMUX、 32位 運(yùn)算用標(biāo)志T、 64位運(yùn)算用標(biāo)志U、標(biāo)志復(fù)用器FMUX構(gòu)成。另外, 雖然未圖示,但來自指令解碼單元IDU的執(zhí)行控制信息EXC被輸入 到各構(gòu)成要素來對(duì)各構(gòu)成要素進(jìn)行控制。
算術(shù)邏輯運(yùn)算器ALU從指令解碼單元IDU接收?qǐng)?zhí)行用操作數(shù) EXA和EXB,按照?qǐng)?zhí)行控制信息EXC來執(zhí)行各種算術(shù)邏輯運(yùn)算,然后,輸出執(zhí)行結(jié)果ALO、 32位標(biāo)志組(帶符號(hào)大GT32、無(wú)符號(hào) 大GU32、零Z32、溢出V32、進(jìn)位C32 )以及64位標(biāo)志組(帶符 號(hào)大GT64、無(wú)符號(hào)大GU64、零Z64、溢出V64、進(jìn)位C64)。
移位器SFT從指令解碼單元IDU接收?qǐng)?zhí)行用操作數(shù)EXA和 EXB,按照?qǐng)?zhí)行控制信息EXC來執(zhí)行各種移位運(yùn)算,然后,輸出執(zhí) 行結(jié)果SFO、 32位左移出位SL32、 64位左移出位SL64、以及右移 出位SR。并且,在32位移出位復(fù)用器M32中,根據(jù)移位運(yùn)算的方 向,選擇32位左移出位SL32或右移出位SR,并作為32位標(biāo)志組 之一的、即32位移位輸出標(biāo)志SF32來輸出。另外,在64位移出位 復(fù)用器M64中,根據(jù)移位運(yùn)算的方向,選擇64位左移出位SL64或 右移出位SR,并作為64位標(biāo)志組之一的、即64位移位輸出標(biāo)志SF64 來輸出。
輸出復(fù)用器OMUX根據(jù)執(zhí)行控制信息EXC來選擇執(zhí)行結(jié)果 ALO和執(zhí)行結(jié)果SFO中的一個(gè),并作為執(zhí)行結(jié)果EXO來輸出。
3 2位標(biāo)志復(fù)用器F M 3 2按照指令的種類而從3 2位標(biāo)志組中選擇 標(biāo)志,生成新的32位標(biāo)志newT,作為32位標(biāo)志T的輸入。同樣, 64位標(biāo)志復(fù)用器FM64按照指令的種類而從64位標(biāo)志組中選擇標(biāo) 志,生成新的64位標(biāo)志newU,并作為64位標(biāo)志U的輸入。32位 標(biāo)志T和64位標(biāo)志U鎖存這些輸入,并輸出到標(biāo)志復(fù)用器FMUX。 標(biāo)志復(fù)用器FMUX根據(jù)使用的指令來選擇32位標(biāo)志T和64位標(biāo)志 U中的一個(gè),并作為標(biāo)志輸出FO來輸出。標(biāo)志復(fù)用器FMUX使用 鎖存后的值來選擇下一次指令中使用的標(biāo)志,雖未圖示,但能夠通
過使用鎖存前的值來接收下一次指令的控制信息作為來自指令解碼 單元IDU的4丸行控制信息EXC。
根據(jù)上述實(shí)施方式1,能夠整體上減少構(gòu)成指令集的指令的種類 (指令數(shù)量)。因此,能夠有利于縮小指令代碼空間中無(wú)富余的RISC 型數(shù)據(jù)處理器中的指令代碼的代碼空間,能夠如16位固定長(zhǎng)度指令 集的RISC那樣,實(shí)現(xiàn)指令代碼空間中無(wú)富余的處理器的64位化。 《實(shí)施方式2》圖3概略例示出本發(fā)明實(shí)施方式2的標(biāo)志更新前置指令。標(biāo)志
更新前置指令進(jìn)行要更新的標(biāo)志的指定、后續(xù)指令生成的標(biāo)志中要
使用的標(biāo)志的指定、所指定的2個(gè)標(biāo)志間的邏輯運(yùn)算的指定。當(dāng)將 標(biāo)志:取為32位標(biāo)志T和64位標(biāo)志U這兩種時(shí),4吏用l位來用于指 定要更新的標(biāo)志,使用1位來指定后續(xù)指令生成的標(biāo)志中的要使用 的標(biāo)志。另外,當(dāng)將運(yùn)算取為6種時(shí),使用3位來用于指定上述所 指定的2個(gè)標(biāo)志間的邏輯運(yùn)算。因此,標(biāo)志更新前置指令能夠用5 位操作數(shù)字段(field)來指定,不需要較大的指令代碼空間。
當(dāng)由16位固定長(zhǎng)度指令集進(jìn)行定義時(shí),如圖3所示,用11位 的操作類型指定字段OPT來指定是標(biāo)志更新前置指令,用2位的來 源目標(biāo)(source destination)指定字段SD來指定要更新的標(biāo)志和指 定后續(xù)指令生成的標(biāo)志中要使用的標(biāo)志,用3位的邏輯運(yùn)算指定字
段TYP來指定上述指定的2個(gè)標(biāo)志間的邏輯運(yùn)算。邏輯運(yùn)算的種類 為邏輯與"AND"、邏輯或"OR"、邏輯與非"NAND"、邏輯或 非"NOR"、邏輯異或"XOR"、新標(biāo)志"NEW"這六種,分別分 配TYP字段000~ 101。在該運(yùn)算的種類中添加來源和來源目標(biāo)標(biāo)志 來作為助記符(mnemonic) 。 SD字段的高位為來源,低位為目標(biāo), 0表示指定32位標(biāo)志T, 1表示指定64位標(biāo)志U。工作欄的newT 表示后續(xù)指令生成的32位標(biāo)志,newU表示后續(xù)指令生成的64位標(biāo) 志,& = 、 |=、 A=、 =、 ~是含義與C語(yǔ)言相同的運(yùn)算符號(hào), &=表示取右邊值與左邊值的邏輯與并代入到左邊的變量中,I= 表示取右邊的值與左邊的值的邏輯或并代入到左邊的變量中,A = 表示取右邊的值與左邊的值的邏輯異或并代入到左邊的變量中,= 表述將右邊的值代入到左邊的變量中,~表示邏輯反相右側(cè)的值。
例如,在SD-OO、 TYP-000的情況下,邏輯運(yùn)算的種類為邏 輯與AND,更新的標(biāo)志(目標(biāo)標(biāo)志)為32位標(biāo)志T,后續(xù)指令生成 的標(biāo)志中要^f吏用的標(biāo)志(來源標(biāo)志)也為32位標(biāo)志T,助記符為 ANDTT,工作為丁&=1^\¥1, U:不變,因此取32位標(biāo)志T與后^賣 指令生成的標(biāo)志中的32位標(biāo)志T的邏輯與,并存儲(chǔ)在32位標(biāo)志T中,64位標(biāo)志U為未更新的標(biāo)志更新前置指令。并且,后續(xù)指令的
工作將用沒有前置指令時(shí)所生成的標(biāo)志來更新32位標(biāo)志T和64位 標(biāo)志U的工作替換為上述標(biāo)志更新前置指定的工作。
本實(shí)施方式2與上述實(shí)施方式1結(jié)構(gòu)上的不同點(diǎn)表現(xiàn)在指令解
碼單元IDU和執(zhí)行單元EXU上,因此處理器核心的代表性的模塊結(jié) 構(gòu)與實(shí)施方式i同樣地示于圖1中。
圖4概略例示出本發(fā)明實(shí)施方式2的處理器的指令解碼單元 IDU。雖然例示了 1個(gè)周期發(fā)送1條指令的標(biāo)量處理器,但如文獻(xiàn)4 那樣,以往已經(jīng)存在使用前置指令的處理器,只要是本領(lǐng)域的技術(shù) 人員就能夠應(yīng)用到前置解碼和發(fā)送方式的超標(biāo)量、順序輸出等其他 發(fā)送形式。另外,在本實(shí)施例中,以僅標(biāo)志更新前置指令是前置指 令為前提,但只要是本領(lǐng)域的技術(shù)人員也能夠擴(kuò)展為也可處理其他 前置指令。
指令解碼單元IDU由主解碼器DEC和前置解碼器PF - DEC構(gòu) 成。主解碼器DEC對(duì)從指令獲取單元IFU提供的指令OP進(jìn)行解碼, 將執(zhí)行控制信息op-exc作為實(shí)效控制信息EXC的一部分來輸出給 執(zhí)行單元EXU,將32位標(biāo)志更新控制op - wrt和64位標(biāo)志U的更 新控制op-wru輸出給前置解碼器PF-DEC,將加載存儲(chǔ)控制信息 LSC輸出給加載存儲(chǔ)單元LSU,并且將寄存器文件控制信息RFC輸 出給寄存器文件RF。寄存器文件控制信息RFC中,以所發(fā)送指令到 達(dá)寄存器寫入階段的定時(shí)來提供寫入信息。
文件RF根據(jù)寄存器文件控制信息RFC來將執(zhí)行用操作數(shù)EXA 和EXB提供給執(zhí)行單元EXU,將加載存儲(chǔ)用地址操作數(shù)LSA、 LSB 以及存儲(chǔ)數(shù)據(jù)SD提供給加載存儲(chǔ)單元LSU。而且,從執(zhí)行單元EXU 接收?qǐng)?zhí)行結(jié)果EXO,從加載存儲(chǔ)單元LSU接收加載數(shù)據(jù)LD,并存 儲(chǔ)在寄存器文件RF中。
前置解碼器PF - DEC對(duì)指令OP的操作類型指定字段OPT進(jìn)行 解碼,當(dāng)指令OP為標(biāo)志更新前置時(shí)標(biāo)記有效標(biāo)志V,當(dāng)指令OP不 是標(biāo)志更新前置時(shí)進(jìn)行清除。另外,鎖存2位的來源目標(biāo)指定字段SD來分別作為前置來源標(biāo)志指定信息pfsrc和前置目標(biāo)標(biāo)志信息 pfdst。而且,鎖存邏輯運(yùn)算指定字段TYP來作為前置邏輯運(yùn)算指定 信息pftyp。當(dāng)指令OP為標(biāo)志更新前置指令時(shí),也將其提供給主解 碼器DEC。此時(shí),主解碼器DEC將標(biāo)志更新前置作為非操作代碼, 輸出控制信息,使得執(zhí)行單元EXU和加載存儲(chǔ)單元LSU不進(jìn)行任 何工作。
在指令OP為標(biāo)志更新前置指令的下一周期中,主解碼器DEC 對(duì)后續(xù)指令進(jìn)行解碼,如上述那樣輸出各種控制信息。而在前置解 碼器PF-DEC中,使用在前周期中鎖存的信息來進(jìn)行處理。由于指 令OP為標(biāo)志更新前置指令,因此標(biāo)記有效標(biāo)志V,作為邏輯運(yùn)算指 定信息typ、 32位標(biāo)志來源信息srt、 64位標(biāo)志來源信息sru、 32位 標(biāo)志更新控制wrt以及64位標(biāo)志更新控制wru而輸出前置邏輯運(yùn)算 指定信息prtyp 、前置標(biāo)志來源指定信息pfsrc 、前置標(biāo)志來源指定信 息pfsrc、前置目標(biāo)標(biāo)志信息pfdst為0、以及前置目標(biāo)標(biāo)志信息pfdst 為1這樣的信息。結(jié)果是,作為用于標(biāo)志生成的控制信息,使來自 主解碼器的32位標(biāo)志更新控制op - wrt和64位標(biāo)志更新控制op -wru無(wú)效,并輸出標(biāo)志更新前置指令的信息。
而在指令OP不是標(biāo)志更新前置指令的下一周期中,未標(biāo)記有效 標(biāo)志V,因此作為邏輯運(yùn)算指定信息typ、 32位標(biāo)志來源信息srt、 64位標(biāo)志來源信息sru、 32位標(biāo)志更新控制wrt和64位標(biāo)志更新控 制wm而分別輸出101、 0、 1、 32位標(biāo)志更新控制op-wrt以及64 位標(biāo)志更新控制op-wru。結(jié)果是,主解碼器DEC的輸出被作為指 令解碼單元IDU來輸出。主解碼器DEC不進(jìn)行輸出而作為邏輯運(yùn)算 指定信息typ、 32位標(biāo)志來源信息srt以及64位標(biāo)志來源信息sru來 分別輸出101、 0、 1,這樣指定指令原本的工作。
上述邏輯運(yùn)算指定信息typ、 32位標(biāo)志來源信息srt、 64位標(biāo)志 來源信息sru、 32位標(biāo)志更新控制wrt以及64位標(biāo)志更新控制wru 與由主解碼器DEC生成的行控制信息op - exc —起被作為實(shí)效控制 信息EXC而輸出給執(zhí)行單元EXU。圖5概略例示出本發(fā)明實(shí)施方式2的處理器的扭^亍單元EXU。 與圖2所示的實(shí)施方式1的處理器的執(zhí)行單元EXU公共的部分具有 相同的功能。追加部分是32位標(biāo)志來源復(fù)用器S32、 64位標(biāo)志來源 復(fù)用器S64、 32位標(biāo)志邏輯運(yùn)算器FL32、以及64位標(biāo)志邏輯運(yùn)算 器FL64。
32位標(biāo)志來源復(fù)用器S32按照來自指令解碼單元IDU的32位 標(biāo)志來源信息srt來選^^新的32位標(biāo)志newT或新的64位標(biāo)志newU, 提供給32位標(biāo)志邏輯運(yùn)算器FL32, 32位標(biāo)志邏輯運(yùn)算器FL32根據(jù) 所提供的標(biāo)志和32位標(biāo)志T,按照邏輯運(yùn)算指定信息typ來進(jìn)行邏 輯運(yùn)算,將結(jié)果作為鎖存到32位標(biāo)志T中的新的值。同樣,64位標(biāo) 志來源復(fù)用器S64根據(jù)來自指令解碼單元IDU的64位標(biāo)志來源信息 srt,選擇新的32位標(biāo)志newT或新的64位標(biāo)志newU,提供給64 位標(biāo)志邏輯運(yùn)算器FL64, 64位標(biāo)志邏輯運(yùn)算器FL64根據(jù)所提供的 標(biāo)志和64位標(biāo)志U,按照邏輯運(yùn)算指定信息typ來進(jìn)行邏輯運(yùn)算, 將結(jié)果作為鎖存到64位標(biāo)志U中的新的值。
如上述那樣,利用本發(fā)明實(shí)施方式2的指令解碼單元IDU和執(zhí) 行單元EXU,能夠?qū)崿F(xiàn)基于不需要較大的指令代碼空間的標(biāo)志更新 前置指令的、抑制要保留的標(biāo)志的更新、由多條指令所生成的標(biāo)志 間的邏輯運(yùn)算。
接著,通過具體例子說明標(biāo)志更新前置指令的效果。圖6概略 例示出本發(fā)明實(shí)施方式2的處理器的工作例。圖6的C程序?yàn)?4位 指針p不是NULL指針、32位變量i大于10時(shí)使{}內(nèi)執(zhí)行這樣的 程序。NULL指針為沒有任何指向的狀態(tài),值為0。
在包含標(biāo)志更新前置指令的匯編程序中,當(dāng)記述該C程序時(shí), 如圖6那樣以4條指令來記述。首先在第一步,在"CMP/EQ p, 0"中以64位尺寸比較64位指針p和NULL指針值0,將比較結(jié)果 存儲(chǔ)在64位標(biāo)志U中。在64位指針p為NULL指針的情況下,設(shè) 置64位標(biāo)志U。即為U= (p = - NULL)。此時(shí),32位標(biāo)志T中 存儲(chǔ)有比較64位指針p與NULL指針值0的低32位后的結(jié)果,但本程序中不使用。第二步中,對(duì)標(biāo)志更新前置指令ORNTU進(jìn)行解 碼。在第三步中,在"CMP/GT i, 10"中當(dāng)32位變量i大于10 時(shí),標(biāo)記新的32位標(biāo)志newT。并且,由于標(biāo)志更新前置指令ORNTU 而成為U I = newT,因此U- (p = = NULL) I ~ (i〉 10)。此 時(shí),32位標(biāo)志T不變。結(jié)果,在64位標(biāo)志U中加入C程序的if指 令的條件式的反相值。在第四步中,因"BT. D一after—if—close" 而U為l,即當(dāng)條件式不成立時(shí)跳轉(zhuǎn)到if指令后面,因此不執(zhí)行if 指令。
如以上那樣,當(dāng)使用標(biāo)志更新前置指令時(shí),則能夠匯總多個(gè)比 較結(jié)果,因此在1次條件分支中,結(jié)束條件判斷。當(dāng)不使用標(biāo)志更 新前置指令時(shí),則每當(dāng)條件判斷時(shí)需要進(jìn)行條件分支,難以使其高 速化。或者在將生成的標(biāo)志傳送至通用寄存器中來進(jìn)行邏輯運(yùn)算的 情況下,代替第二步的標(biāo)志更新前置指令而將執(zhí)行標(biāo)志傳送指令 MOVU R0所生成的U標(biāo)志傳送至通用寄存器Rl,在第四步的條 件分支之前,將執(zhí)行標(biāo)志傳送指令MOVT R0所生成的T標(biāo)志傳送 至通用寄存器Rl,以NOT R0來進(jìn)行邏輯反相,以AND #1, R0來清除高位,以O(shè)R R0, Rl來生成(p= =NULL) I ~ (i> 10 )。進(jìn)而,以SHLR Rl來將(p = = NULL ) I ~ (i 〉 10 )存儲(chǔ) 到32位標(biāo)志T中。因此,指令數(shù)量增加4條指令而成為2倍,性能 降低。這樣,標(biāo)志更新前置指令能夠使復(fù)雜的條件判斷高速化。
以上根據(jù)實(shí)施方式具體說明了由本發(fā)明人完成發(fā)明,但本發(fā)明 并不限定于上述實(shí)施例,在不脫離其主旨的范圍內(nèi),當(dāng)然可以進(jìn)行 各種變更。例如,標(biāo)志更新前置指令如以O(shè)RNTU為代表的那樣, 在指定由后續(xù)指令生成的標(biāo)志所更新的標(biāo)志的基礎(chǔ)上,還具有分別 進(jìn)行后續(xù)指令生成的標(biāo)志中要使用的標(biāo)志的指定、以及指定的2個(gè) 標(biāo)志間的邏輯運(yùn)算的指定的功能。本發(fā)明不限于上述情況,也可以 是僅具有如下功能的指令指定在先生成的與各個(gè)數(shù)據(jù)尺寸對(duì)應(yīng)的 標(biāo)志中的、由于后續(xù)指令生成的標(biāo)志來進(jìn)行更新的標(biāo)志。
權(quán)利要求
1.一種數(shù)據(jù)處理器,其為縮小指令集計(jì)算機(jī)型的數(shù)據(jù)處理器,其特征在于在指令集中具有第一指令,該第一指令能對(duì)多個(gè)數(shù)據(jù)尺寸的操作數(shù)進(jìn)行運(yùn)算處理,對(duì)較大數(shù)據(jù)尺寸的操作數(shù)的低位一側(cè)進(jìn)行與對(duì)較小數(shù)據(jù)尺寸的操作數(shù)的運(yùn)算處理相等的處理,且無(wú)論被進(jìn)行運(yùn)算處理的操作數(shù)的數(shù)據(jù)尺寸大小,都生成與各個(gè)數(shù)據(jù)尺寸對(duì)應(yīng)的標(biāo)志。
2. 根據(jù)權(quán)利要求1所述的數(shù)據(jù)處理器,其特征在于 在上述指令集中具有選擇使用由上述第一指令生成的標(biāo)志的第二指令。
3. 根據(jù)權(quán)利要求1所述的數(shù)據(jù)處理器,其特征在于 在上述指令集中具有修飾后續(xù)指令的前置指令,該前置指令指定上述第一指令生成的與各個(gè)數(shù)據(jù)尺寸對(duì)應(yīng)的標(biāo)志中的由上述后續(xù) 指令生成的標(biāo)志來進(jìn)行更新的標(biāo)志。
4. 根據(jù)權(quán)利要求1所述的數(shù)據(jù)處理器,其特征在于 其具有前置指令,該前置指令指定上述第一指令生成的與各個(gè)數(shù)據(jù)尺寸對(duì)應(yīng)的標(biāo)志中的由后續(xù)指令生成的標(biāo)志來進(jìn)行更新的標(biāo) 志,并且,分別進(jìn)行要進(jìn)行修飾的后續(xù)指令生成的標(biāo)志中要使用的 標(biāo)志的指定和已指定的兩個(gè)標(biāo)志之間的邏輯運(yùn)算的指定。
5. 根據(jù)權(quán)利要求1所述的數(shù)據(jù)處理器,其特征在于 上述多個(gè)數(shù)據(jù)尺寸為32位和64位。
6. 根據(jù)權(quán)利要求2所述的數(shù)據(jù)處理器,其特征在于 上述標(biāo)志是多個(gè)數(shù)據(jù)尺寸各自的帶符號(hào)尺寸、無(wú)符號(hào)尺寸、零、溢出、進(jìn)位或移出位。
7. —種數(shù)據(jù)處理器,其為具有指令執(zhí)行部的縮小指令集計(jì)算機(jī) 型的數(shù)據(jù)處理器,其特征在于上述數(shù)據(jù)處理器在指令集中具有用于執(zhí)行伴隨標(biāo)志生成的處理 的第 一 指令和用于執(zhí)行伴隨標(biāo)志使用的處理的第二指令,上述指令執(zhí)行部具有按照指令解碼結(jié)果進(jìn)行處理的運(yùn)算電路、 標(biāo)志鎖存電路以及標(biāo)志選擇電路,上述運(yùn)算電路按照上述第 一 指令的解碼結(jié)果,能對(duì)多個(gè)數(shù)據(jù)尺 寸的操作數(shù)進(jìn)行運(yùn)算處理,對(duì)較大數(shù)據(jù)尺寸的操作數(shù)的低位 一 側(cè)進(jìn) 行與對(duì)較小數(shù)據(jù)尺寸的操作數(shù)的運(yùn)算處理相等的處理,且無(wú)論被進(jìn)行運(yùn)算處理的操作數(shù)的數(shù)據(jù)尺寸大小,都生成與各個(gè)數(shù)據(jù)尺寸對(duì)應(yīng) 的才示志,上述標(biāo)志鎖存電路按照上述第一指令的解碼結(jié)果來鎖存由上述 運(yùn)算電路生成的標(biāo)志,上述標(biāo)志選擇電路按照上述第二指令的解碼結(jié)果來選擇被鎖存 在上述標(biāo)志鎖存電3各中的標(biāo)志。
8. 根據(jù)權(quán)利要求7所述的數(shù)據(jù)處理器,其特征在于 上述運(yùn)算電路對(duì)每個(gè)數(shù)據(jù)尺寸生成帶符號(hào)尺寸、無(wú)符號(hào)尺寸、零、溢出、進(jìn)位或移出位的標(biāo)志,用第一指令從生成的標(biāo)志中選擇 出一種標(biāo)志,并按每個(gè)操作數(shù)尺寸將其鎖存在上述標(biāo)志鎖存電路中。
9. 根據(jù)權(quán)利要求8所述的數(shù)據(jù)處理器,其特征在于 上述多個(gè)數(shù)據(jù)尺寸為32位和64位。
10. —種數(shù)據(jù)處理器,在指令集中具有能進(jìn)行運(yùn)算處理來生成多 個(gè)標(biāo)志的運(yùn)算指令,其特征在于在上述指令集中具有修飾后續(xù)指令的前置指令,該前置指令指 定上述運(yùn)算指令生成的多個(gè)標(biāo)志中的由上述后續(xù)指令生成的標(biāo)志來 進(jìn)4亍更新的標(biāo)志。
11. 一種數(shù)據(jù)處理器,在指令集中具有能進(jìn)行運(yùn)算處理來生成多 個(gè)標(biāo)志的運(yùn)算指令,其特征在于在上述指令集中具有前置指令,該前置指令指定上述運(yùn)算指令 生成的多個(gè)標(biāo)志中的由上述后續(xù)指令生成的標(biāo)志來進(jìn)行更新的標(biāo) 志,并且,分別進(jìn)行要進(jìn)行修飾的后續(xù)指令生成的標(biāo)志中要使用的 標(biāo)志的指定和已指定的兩個(gè)標(biāo)志之間的邏輯運(yùn)算的指定。
全文摘要
本發(fā)明提供一種數(shù)據(jù)處理器。在標(biāo)志生成指令數(shù)量較多的情況下,通過增加1條指令生成的標(biāo)志數(shù)量,而使標(biāo)志生成指令數(shù)量的減少超過標(biāo)志使用指令數(shù)量的增加,由此實(shí)現(xiàn)指令數(shù)量的削減,根據(jù)以上觀點(diǎn),定義生成與操作數(shù)的數(shù)據(jù)尺寸對(duì)應(yīng)的多個(gè)標(biāo)志的指令。例如,在縮小指令集計(jì)算機(jī)型的數(shù)據(jù)處理器中,在指令集中添加可對(duì)多個(gè)數(shù)據(jù)尺寸的操作數(shù)進(jìn)行運(yùn)算處理的、不拘泥于如下操作數(shù)的數(shù)據(jù)尺寸而生成與各個(gè)數(shù)據(jù)尺寸對(duì)應(yīng)的標(biāo)志(newU、newT)的指令,其中,該如下操作數(shù)為對(duì)較大數(shù)據(jù)尺寸的操作數(shù)的低位一側(cè)進(jìn)行與對(duì)較小數(shù)據(jù)尺寸的操作數(shù)的運(yùn)算處理相等的處理而被進(jìn)行運(yùn)算處理的操作數(shù)。
文檔編號(hào)G06F9/30GK101515229SQ20091000579
公開日2009年8月26日 申請(qǐng)日期2009年2月12日 優(yōu)先權(quán)日2008年2月19日
發(fā)明者荒川文男 申請(qǐng)人:株式會(huì)社瑞薩科技