国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      信息處理裝置以及機(jī)器語(yǔ)言程序變換裝置的制作方法

      文檔序號(hào):6407180閱讀:106來(lái)源:國(guó)知局
      專利名稱:信息處理裝置以及機(jī)器語(yǔ)言程序變換裝置的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及一種包含SIMD(單指令流/多數(shù)據(jù)流)命令的機(jī)器語(yǔ)言程序的處理技術(shù)。特別涉及即使機(jī)器語(yǔ)言程序的并列度與信息處理裝置中的處理器數(shù)非對(duì)應(yīng)的情況下,該機(jī)器語(yǔ)言程序仍可能執(zhí)行的技術(shù),以及產(chǎn)生改變了并列度的新機(jī)器語(yǔ)言程序的技術(shù)。
      背景技術(shù)
      進(jìn)行圖像處理等的媒體處理時(shí),經(jīng)常對(duì)多個(gè)數(shù)據(jù)進(jìn)行同樣的運(yùn)算。此種情況下,通過(guò)構(gòu)成對(duì)多個(gè)數(shù)據(jù)進(jìn)行同樣運(yùn)算的硬件,能高速地進(jìn)行媒體處理。這樣的體系結(jié)構(gòu)被稱為“SIMD型體系結(jié)構(gòu)”。作為SIMD型體系結(jié)構(gòu)的例子,有在大型計(jì)算機(jī)上經(jīng)常使用的向量型計(jì)算機(jī)和用同一命令控制多個(gè)處理器的SIMD型多處理器,用單處理器的一條命令進(jìn)行多個(gè)數(shù)據(jù)處理的SIMD命令等。
      進(jìn)行媒體處理的處理器,根據(jù)其目的變化所要求的特性。例如需要進(jìn)行高速處理時(shí),需要增多一次能夠處理的數(shù)據(jù)量。相反,處理的數(shù)據(jù)并非很多,通過(guò)減小硬件從而削減電力消耗為優(yōu)先考慮的情況下,減少一次能夠處理的數(shù)據(jù)即可。此處,一次能夠處理的數(shù)據(jù)量被稱為“并列度”。對(duì)于進(jìn)行媒體處理的處理器,通過(guò)增減并列度,能夠取得性能和硬件量的平衡。
      但是,進(jìn)行媒體處理的運(yùn)算中經(jīng)常包含特殊的運(yùn)算。因此,進(jìn)行媒體處理的處理器中,為對(duì)此種特殊的運(yùn)算高速處理,很多配備了專用的命令。但是,媒體處理的程序設(shè)計(jì)中采用高級(jí)語(yǔ)言的情況下,就不能有效利用此種特殊的運(yùn)算,不能充分發(fā)揮其性能。因此編寫包含很多特殊運(yùn)算的程序時(shí),為了重視其性能,較多地采用機(jī)器語(yǔ)言程序記述運(yùn)算。
      對(duì)于SIMD型體系結(jié)構(gòu)的機(jī)器語(yǔ)言編程,改變并列度會(huì)產(chǎn)生各種各樣的問(wèn)題。例如SIMD型多處理器中,各命令成為與處理器數(shù)成比例的并列處理,并列數(shù)變化,即如果處理器數(shù)變化,并列處理的動(dòng)作就會(huì)不同。特別是,對(duì)于有關(guān)存儲(chǔ)器存取的命令,按照處理器數(shù)的變化,如果沒有適當(dāng)?shù)馗淖兊刂菲?,就?huì)訪問(wèn)錯(cuò)誤的存儲(chǔ)器地址的數(shù)據(jù)。
      因此,變化SIMD型體系結(jié)構(gòu)的并列度的情況下,與此對(duì)應(yīng)有必要變更機(jī)器語(yǔ)言程序。以往為了實(shí)現(xiàn)此目的,采用高級(jí)語(yǔ)言將逐次編程變換(向量化)為SIMD處理,生成新的機(jī)器語(yǔ)言程序。
      上述方法,由高級(jí)語(yǔ)言編程與逐次編程相對(duì)應(yīng),但與在進(jìn)行媒體處理等進(jìn)行的SIMD型體系結(jié)構(gòu)的機(jī)器語(yǔ)言編程不相對(duì)應(yīng)。因此,SIMD型體系結(jié)構(gòu)的機(jī)器語(yǔ)言編程中并列度變化的情況下,多數(shù)需要采用人工的方法,對(duì)機(jī)器語(yǔ)言程序記述進(jìn)行變更。
      另外,通過(guò)事先準(zhǔn)備各種各樣并列度的機(jī)器語(yǔ)言程序,沒有必要每次變更機(jī)器語(yǔ)言程序記述,就能與各種各樣并列度的SIMD型體系結(jié)構(gòu)相對(duì)應(yīng)。例如在并列度可動(dòng)態(tài)變更的硬件等中,必須保持與多個(gè)并列度相對(duì)應(yīng)的多個(gè)機(jī)器語(yǔ)言程序。因此,需要更多的存儲(chǔ)空間,這是與裝置的小型化·低成本化的要求相悖的。

      發(fā)明內(nèi)容
      鑒于以上問(wèn)題,本發(fā)明的目的在于對(duì)于根據(jù)包含SIMD命令的機(jī)器語(yǔ)言程序進(jìn)行SIMD型運(yùn)算的信息處理裝置,即使該機(jī)器語(yǔ)言程序的并列度與該信息處理裝置有關(guān)的SIMD型體系結(jié)構(gòu)的并列度不相對(duì)應(yīng)的情況下,該機(jī)器語(yǔ)言程序也可能執(zhí)行。另外還提供變更原機(jī)器語(yǔ)言程序有關(guān)的并列度,生成新機(jī)器語(yǔ)言程序的程序變換裝置。
      為了解決上述問(wèn)題,本發(fā)明的信息處理裝置,具有SIMD運(yùn)算器,根據(jù)包含SIMD命令的機(jī)器語(yǔ)言程序進(jìn)行SIMD型運(yùn)算;還包括SIMD處理分割裝置,其從上述機(jī)器語(yǔ)言程序輸入一條或者連續(xù)多條SIMD命令,將該一條或者連續(xù)多條SIMD命令以相當(dāng)于處理分割數(shù)的次數(shù)重復(fù)輸出;從上述SIMD處理分割裝置輸出的SIMD命令由上述SIMD運(yùn)算器執(zhí)行。
      由此,通過(guò)SIMD處理分割裝置,從機(jī)器語(yǔ)言程序輸入一條或者連續(xù)多條SIMD命令,該一條或者多條SIMD命令以相當(dāng)于處理分割數(shù)的次數(shù)重復(fù)輸出。然后,重復(fù)輸出的SIMD命令由SIMD運(yùn)算器執(zhí)行。如此通過(guò)多次重復(fù)執(zhí)行同一SIMD命令,高并列度的SIMD命令能在低并列度的SIMD運(yùn)算器中,分為多個(gè)執(zhí)行時(shí)鐘執(zhí)行。即有關(guān)本發(fā)明的信息處理裝置,即使作為輸入的機(jī)器語(yǔ)言程序的并列度與SIMD運(yùn)算器的并列度不相對(duì)應(yīng)的情況下,也能夠執(zhí)行該機(jī)器語(yǔ)言程序。
      作為優(yōu)選,上述信息處理裝置還包括存儲(chǔ)器地址變換裝置,其對(duì)于從上述SIMD處理分割裝置輸出的SIMD命令中有關(guān)存儲(chǔ)器存取的命令,根據(jù)有關(guān)該SIMD命令的重復(fù)輸出的順序數(shù),將有關(guān)該SIMD命令的原存儲(chǔ)器地址變換為新存儲(chǔ)器地址。
      由此,由存儲(chǔ)器地址變換裝置,將從SIMD處理分割裝置重復(fù)輸出的有關(guān)SIMD命令的原存儲(chǔ)器地址,變換為有關(guān)該SIMD命令的重復(fù)輸出的順序數(shù)對(duì)應(yīng)的新存儲(chǔ)器地址。如此,通過(guò)將原存儲(chǔ)器地址變換為新存儲(chǔ)器地址,當(dāng)SIMD命令分割執(zhí)行時(shí),能訪問(wèn)正確的存儲(chǔ)器地址。
      作為優(yōu)選,上述信息處理裝置還包括寄存器切換裝置,其具有相當(dāng)于上述處理分割數(shù)的個(gè)數(shù)的上述SIMD運(yùn)算器用的寄存器組,根據(jù)有關(guān)由上述SIMD處理分割裝置重復(fù)輸出SIMD命令的順序數(shù),切換由上述SIMD運(yùn)算器所使用的上述寄存器組。
      由此,通過(guò)寄存器切換裝置,因?yàn)镾IMD運(yùn)算器使用的寄存器組按照該SIMD命令的有關(guān)重復(fù)輸出的順序數(shù)進(jìn)行變換,所以能夠避免被其它SIMD命令的執(zhí)行結(jié)果錯(cuò)誤地覆蓋。
      作為優(yōu)選,上述信息處理裝置還包括SIMD處理分割數(shù)計(jì)算裝置,根據(jù)上述SIMD運(yùn)算器的并列度信息以及上述機(jī)器語(yǔ)言程序中所表示的上述機(jī)器語(yǔ)言程序的并列度信息,計(jì)算出上述處理分割數(shù)。
      另一方面,為了解決上述問(wèn)題,本發(fā)明的機(jī)器語(yǔ)言程序變換裝置,包括SIMD處理分割裝置,其輸入包含SIMD命令的原機(jī)器語(yǔ)言程序,產(chǎn)生中間機(jī)器語(yǔ)言程序,相當(dāng)于將該原機(jī)器語(yǔ)言程序中所包含的命令列全體以相當(dāng)于處理分割數(shù)的次數(shù)進(jìn)行重復(fù)的命令列;和存儲(chǔ)器地址變換裝置,,對(duì)于由上述SIMD處理分割裝置產(chǎn)生的中間機(jī)器語(yǔ)言程序中所包含的SIMD命令中有關(guān)存儲(chǔ)器存取的命令,將有關(guān)該SIMD命令的原存儲(chǔ)器地址變換為新存儲(chǔ)器地址;將由上述存儲(chǔ)器地址變換裝置進(jìn)行存儲(chǔ)器地址變換處理后的上述中間機(jī)器語(yǔ)言程序,作為新機(jī)器語(yǔ)言程序輸出。
      由此,通過(guò)SIMD處理分割裝置,將原機(jī)器語(yǔ)言程序中所包含的命令列全體以相當(dāng)于處理分割數(shù)的次數(shù)進(jìn)行重復(fù),生成相當(dāng)于此重復(fù)結(jié)果的中間機(jī)器語(yǔ)言程序,對(duì)于其中有關(guān)存儲(chǔ)器存取的命令,由存儲(chǔ)器地址變換裝置將其原存儲(chǔ)器地址變換為新存儲(chǔ)器地址,作為新機(jī)器語(yǔ)言程序輸出。由此通過(guò)重復(fù)執(zhí)行原機(jī)器語(yǔ)言程序,就可能將高并列度的SIMD命令在低并列度的SIMD運(yùn)算器中分為多個(gè)執(zhí)行時(shí)鐘執(zhí)行。然后,對(duì)于有關(guān)存儲(chǔ)器存取的SIMD命令,通過(guò)將其原存儲(chǔ)器地址變換為新存儲(chǔ)器地址,當(dāng)SIMD命令被分割執(zhí)行的情況,就能夠訪問(wèn)正確的存儲(chǔ)器地址。這樣,有關(guān)本發(fā)明的機(jī)器語(yǔ)言程序變換裝置,變換原機(jī)器語(yǔ)言程序的并列度,能夠自動(dòng)生成新機(jī)器語(yǔ)言程序。
      具體講,上述中間機(jī)器語(yǔ)言程序由將上述原機(jī)器語(yǔ)言程序中所包含的命令列全體以相當(dāng)于上述處理分割數(shù)的次數(shù)重復(fù)輸出的命令列所構(gòu)成;上述存儲(chǔ)器地址變換裝置,對(duì)于上述中間機(jī)器語(yǔ)言程序中所包含的有關(guān)存儲(chǔ)器存取的SIMD命令,根據(jù)有關(guān)該SIMD命令的重復(fù)輸出的順序數(shù),將有關(guān)該SIMD命令的原存儲(chǔ)器地址變換為新存儲(chǔ)器地址。
      再具體講,上述中間機(jī)器語(yǔ)言程序由將上述原機(jī)器語(yǔ)言程序中所包含的命令列全體作為子程序,將該子程序只調(diào)用相當(dāng)于上述處理分割數(shù)的次數(shù)的循環(huán)命令列所構(gòu)成;上述存儲(chǔ)器地址變換裝置,將有關(guān)上述原存儲(chǔ)器地址的地址偏移,改寫成表示上述循環(huán)命令列執(zhí)行時(shí)的循環(huán)次數(shù)的變量。


      圖1是有關(guān)本發(fā)明的第1實(shí)施方式的信息處理裝置的構(gòu)成圖。
      圖2是表示SIMD運(yùn)算器的幾個(gè)構(gòu)成例子的圖。
      圖3是表示機(jī)器語(yǔ)言程序的例子的圖。
      圖4是說(shuō)明圖1中SIMD處理分割裝置的動(dòng)作的圖。
      圖5是說(shuō)明圖1中存儲(chǔ)器地址變換裝置的動(dòng)作的圖。
      圖6是表示存儲(chǔ)器地址變換的第1例的圖。
      圖7是表示存儲(chǔ)器地址變換的第2例的圖。
      圖8是本發(fā)明第2以及第3實(shí)施方式有關(guān)的機(jī)器語(yǔ)言程序變換裝置的構(gòu)成圖。
      圖9是說(shuō)明有關(guān)第2實(shí)施方式的SIMD處理分割裝置的動(dòng)作的圖。
      圖10是說(shuō)明有關(guān)第2實(shí)施方式的存儲(chǔ)器地址變換裝置的動(dòng)作的圖。
      圖11是說(shuō)明有關(guān)第3實(shí)施方式的SIMD處理分割裝置的動(dòng)作的圖。
      圖12是說(shuō)明有關(guān)第3實(shí)施方式的存儲(chǔ)器地址變換裝置的動(dòng)作的圖。
      圖中10-信息處理裝置,11-SIMD處理分割數(shù)計(jì)算裝置,12-SIMD處理分割裝置,13-存儲(chǔ)器地址變換裝置,14-SIMD運(yùn)算器,141-處理器元件,142-數(shù)據(jù)存儲(chǔ)器,143-寄存器切換裝置,144-寄存器組,D10-機(jī)器語(yǔ)言程序,20-機(jī)器語(yǔ)言程序變換裝置,22-SIMD處理分割裝置,23-存儲(chǔ)器地址變換裝置,D30-原機(jī)器語(yǔ)言程序,D32-中間機(jī)器語(yǔ)言程序,D40-新機(jī)器語(yǔ)言程序。
      具體實(shí)施例方式
      以下,對(duì)于本發(fā)明的實(shí)施方式,參照附圖加以說(shuō)明。
      (第1實(shí)施方式)圖1表示有關(guān)本發(fā)明的第1實(shí)施方式的信息處理裝置的構(gòu)成。有關(guān)本實(shí)施方式的信息處理裝置10,包括SIMD處理分割數(shù)計(jì)算裝置11(以下有時(shí)簡(jiǎn)稱計(jì)算裝置11)、SIMD處理分割裝置12(以下有時(shí)簡(jiǎn)稱分割裝置12)、存儲(chǔ)器地址變換裝置13(以下有時(shí)簡(jiǎn)稱變換裝置13)和SIMD運(yùn)算器14,其執(zhí)行機(jī)器語(yǔ)言程序D10。信息處理裝置10,例如作為MPEG(運(yùn)動(dòng)圖像專家組)的編碼使用。計(jì)算裝置11、分割裝置12以及變換裝置13,也可由硬件構(gòu)成或者程序處理的任何一個(gè)實(shí)現(xiàn)。
      輸入到信息處理裝置10的機(jī)器語(yǔ)言程序D10,包含表示機(jī)器語(yǔ)言程序D10有關(guān)的SIMD處理的并列度的程序并列度信息D11(以下稱為信息D11)、至少包含一條由SIMD運(yùn)算器14執(zhí)行的SIMD命令的SIMD命令列D12。程序能夠適當(dāng)指定信息D11。即與SIMD運(yùn)算器的并列度的大小無(wú)關(guān),能記述同一命令動(dòng)作。另外,作為指定信息D11的方法,有使用后述的專用命令的方法和在指定的寄存器和存儲(chǔ)器地址中存儲(chǔ)信息D11的方法等。
      以下依次說(shuō)明信息處理裝置10的各個(gè)構(gòu)成元素的概要。
      SIMD處理分割數(shù)計(jì)算裝置11,根據(jù)機(jī)器語(yǔ)言程序D10中的信息D11以及表示SIMD運(yùn)算器14的并列度的SIMD運(yùn)算器并列度信息D20(以下稱為信息D20),計(jì)算表示幾次分割執(zhí)行SIMD處理的SIMD處理分割數(shù)D21(以下稱為分割數(shù)D21)。此處,由信息D20表示的SIMD運(yùn)算器14的并列度,具體說(shuō)是指SIMD運(yùn)算器14中處理器元件141的個(gè)數(shù)。例如圖2(a)所示的SIMD運(yùn)算器14的情況,4個(gè)處理器元件141,和同圖(b)中所示的SIMD運(yùn)算器14的情況,8個(gè)處理器元件141,能分別獨(dú)立地訪問(wèn)數(shù)據(jù)存儲(chǔ)器142。即同圖(a)(b)的SIMD運(yùn)算器14的并列度分別為“4”和“8”。另外,作為獲取信息D20的方法,有使用專用命令的方法和從指定的寄存器和存儲(chǔ)器地址獲取的方法等。
      信息D11,在機(jī)器語(yǔ)言程序D10中以具體的數(shù)值表示。例如圖3中所示的機(jī)器語(yǔ)言程序D10的例子中,程序前面的VECTOR命令中記述信息D11。VECTOR命令位于機(jī)器語(yǔ)言程序D10的前面,是信息處理裝置10中指定程序并列度的專用命令。此種情況,作為信息11指定為“8”。
      分割數(shù)D21能由信息D11的值除以信息D20的值計(jì)算出。具體說(shuō),由圖2(a)所示的SIMD運(yùn)算器14處理圖3所示的機(jī)器語(yǔ)言程序D10的情況下,分割數(shù)D21為“2”(8/4=2)。因?yàn)榉指顢?shù)D21在機(jī)器語(yǔ)言程序D10的執(zhí)行過(guò)程中不變化,所以程序開始執(zhí)行時(shí)只計(jì)算一次即可。另外,通常設(shè)計(jì)SIMD運(yùn)算器14的體系結(jié)構(gòu)使上述除法計(jì)算結(jié)果為整數(shù)。即使除法計(jì)算結(jié)果為非整數(shù)的情況下,本發(fā)明也能適用。例如8并列的機(jī)器語(yǔ)言程序在5并列的SIMD運(yùn)算器執(zhí)行的情況,停用SIMD運(yùn)算器的處理器元件的任何一個(gè)使其成為4并列。但是,采用此種方法處理效率降低,通常不采用如此的體系結(jié)構(gòu)。以后只討論除法計(jì)算結(jié)果為整數(shù)的情況。
      返回圖1中,SIMD處理分割裝置12輸入SIMD命令列D12中所包含的各個(gè)SIMD命令,只按照由計(jì)算裝置11計(jì)算出的分割數(shù)D21表示的次數(shù),將輸入的各個(gè)SIMD命令循環(huán)輸出。此時(shí),將該循環(huán)輸出有關(guān)的順序數(shù)作為命令產(chǎn)生次數(shù)D22(以下稱為次數(shù)D22)計(jì)數(shù)。SIMD處理分割裝置12的動(dòng)作的具體例子如圖4所示。即SIMD處理分割裝置12,如果輸入SIMD命令(圖中表示為命令1),將同一SIMD命令(命令1)逐條在每個(gè)執(zhí)行時(shí)鐘下,按照分割數(shù)D21所表示的次數(shù)只循環(huán)2次輸出。次數(shù)D22,在SIMD命令(命令1)的第1次的輸出時(shí)為“1”,第2次輸出時(shí)為“2”。
      存儲(chǔ)器地址變換裝置13,如圖5所示,基于分割數(shù)D21以及次數(shù)D22,將由分割裝置12輸出的SIMD命令(有關(guān)存儲(chǔ)器存取的命令)有關(guān)的原存儲(chǔ)器地址,變換為作為實(shí)際的數(shù)據(jù)的參照的新存儲(chǔ)器地址,對(duì)SIMD運(yùn)算器14逐次輸出。對(duì)此存儲(chǔ)器地址變換的具體例將在后面敘述。
      返回圖1中,SIMD運(yùn)算器14包括多個(gè)處理器元件141、各個(gè)處理器元件141能獨(dú)立地訪問(wèn)數(shù)據(jù)的數(shù)據(jù)存儲(chǔ)器142、寄存器切換裝置143,執(zhí)行從存儲(chǔ)器地址變換裝置13輸出的SIMD命令。其中,寄存器切換裝置143具有SIMD運(yùn)算器14使用的多個(gè)寄存器組144。寄存器切換裝置143按照次數(shù)D22切換寄存器組144。SIMD運(yùn)算器14使用切換的寄存器組144進(jìn)行SIMD運(yùn)算。如此,通過(guò)SIMD命令執(zhí)行時(shí)適當(dāng)切換SIMD運(yùn)算器14所使用的寄存器組,就能夠避免由于SIMD處理分割帶來(lái)的寄存器的覆蓋問(wèn)題。另外寄存器切換裝置143至少具備比分割數(shù)D21個(gè)數(shù)多的寄存器組144。
      接著對(duì)于通過(guò)存儲(chǔ)器地址變換裝置13具體的存儲(chǔ)器地址變換方法,以并列度為“8”的SIMD命令在并列度為“4”的SIMD運(yùn)算器14上執(zhí)行的情況為例進(jìn)行說(shuō)明。
      圖6表示存儲(chǔ)器地址變換的第1例。本例中,SIMD運(yùn)算器14的數(shù)據(jù)存儲(chǔ)器142,單位地址能夠存儲(chǔ)4個(gè)并列的數(shù)據(jù)。機(jī)器語(yǔ)言程序D10中的SIMD命令(圖中表示為命令1),是對(duì)于由原存儲(chǔ)器地址“ADR”所指定的8并列的數(shù)據(jù)(圖中編為1至8號(hào)作為參照)進(jìn)行SIMD處理指示的命令。由此原存儲(chǔ)器地址ADR指定的8并列的數(shù)據(jù),在該SIMD運(yùn)算器14的數(shù)據(jù)存儲(chǔ)器142中,作為2個(gè)4并列的數(shù)據(jù),被存儲(chǔ)在連續(xù)2個(gè)存儲(chǔ)器地址中。應(yīng)當(dāng)正確地參照此分割存儲(chǔ)的數(shù)據(jù),對(duì)于由SIMD處理分割裝置12產(chǎn)生的2個(gè)SIMD命令之中的一個(gè),其存儲(chǔ)器地址由“ADR”變換為“ADR+1”。
      本例的情況,假定原存儲(chǔ)器地址為ADRorg,次數(shù)D22為n,新存儲(chǔ)器地址ADRnew能夠由ADRnew=ADRorg+n-1
      得到。另外,將分割數(shù)D21作為DIV,也可由ADRnew=ADRorg+DIV-n得到。
      圖7表示存儲(chǔ)器地址變換的第2例。本例中,SIMD運(yùn)算器的數(shù)據(jù)存儲(chǔ)器142,單位地址中存儲(chǔ)一個(gè)數(shù)據(jù)。機(jī)器語(yǔ)言程序D10中的SIMD命令(圖中表示為命令1),是對(duì)于由原存儲(chǔ)器地址“ADR”所指定的8并列的數(shù)據(jù)(圖中編為1至8號(hào)參照)進(jìn)行SIMD處理指示的命令。由此原存儲(chǔ)器地址ADR指定的8并列的數(shù)據(jù),在該SIMD運(yùn)算器14的數(shù)據(jù)存儲(chǔ)器142中,被存儲(chǔ)在連續(xù)8個(gè)存儲(chǔ)器地址中。應(yīng)當(dāng)正確地參照此分割存儲(chǔ)的數(shù)據(jù),對(duì)于由SIMD處理分割裝置12產(chǎn)生的2個(gè)SIMD命令之中的一個(gè),其存儲(chǔ)器地址由“ADR”變換為“ADR+4”。
      本例的情況,假定原存儲(chǔ)器地址為ADRorg,次數(shù)D22為n,以及數(shù)據(jù)存儲(chǔ)器142的并列度為SPNUM,新存儲(chǔ)器地址ADRnew能夠由ADRnew=ADRorg+(n-1)*SPNUM得到。另外,將分割數(shù)D21作為DIV,也可由ADRnew=ADRorg+(DIV-n)*SPNUM得到。另外此處所謂數(shù)據(jù)存儲(chǔ)器142的并列度SPNUM,是指SIMD運(yùn)算器14中有效動(dòng)作的處理器141的個(gè)數(shù),除以數(shù)據(jù)存儲(chǔ)器142的單位地址中可能存儲(chǔ)的數(shù)據(jù)數(shù)所得到的數(shù)值。
      另一方面,由存儲(chǔ)器地址變換裝置13進(jìn)行存儲(chǔ)器地址變換帶來(lái)的地址偏移的改寫,具體地說(shuō)如下進(jìn)行。SIMD命令中,存儲(chǔ)器地址以“[A,B]”表示。此處A是程序表示的程序存儲(chǔ)器地址,一般地,以“寄存器+常數(shù)”的形式表示。另外B是地址偏移,通常由程序?qū)懭氤?shù)“0”。另外關(guān)于B也能夠由程序不表示為明確的值。通過(guò)以上的方法,例如存儲(chǔ)器存取命令寫成“LD[b0+1,0],R0”。此處,存儲(chǔ)器地址變換裝置13根據(jù)需要,改寫相當(dāng)于上述的B的部分。上述第2例的情況,進(jìn)行了存儲(chǔ)器地址變換的存儲(chǔ)器存取命令,變?yōu)椤癓D[b0+1,4],R0”。
      以上,根據(jù)本實(shí)施方式,與機(jī)器語(yǔ)言程序D10的并列度無(wú)關(guān),能由規(guī)定的并列度的SIMD運(yùn)算器14實(shí)際執(zhí)行機(jī)器語(yǔ)言程序D10。由此,不需要進(jìn)行機(jī)器語(yǔ)言程序D10的改寫。另外,并列度可動(dòng)態(tài)變化,例如以節(jié)省電力方式運(yùn)行時(shí),半數(shù)的處理器元件被停用的信息處理裝置中,就沒必要存儲(chǔ)對(duì)應(yīng)于可能變化的并列度的多個(gè)機(jī)器語(yǔ)言程序。
      另外圖4中,SIMD處理分割裝置12表示為逐條輸入SIMD命令,本發(fā)明中并不限于此。即SIMD處理分割裝置12也可以輸入連續(xù)多條SIMD命令列,將該命令列按規(guī)定的次數(shù)循環(huán)輸出。
      另外作為SIMD處理分割數(shù)D21,通過(guò)賦予其常數(shù),能夠省略SIMD處理分割數(shù)計(jì)算裝置11。此時(shí),例如通過(guò)將分割數(shù)D21賦予常數(shù)“2”,信息處理裝置10,通常將輸入的機(jī)器語(yǔ)言程序D10的并列度分為一半來(lái)執(zhí)行。
      另外,機(jī)器語(yǔ)言程序D10中,不包含關(guān)于存儲(chǔ)器存取的SIMD命令的情況下,因?yàn)椴恍枰M(jìn)行存儲(chǔ)器地址變換處理,所以也可以省略存儲(chǔ)器地址變換裝置13。
      還有,也可以通過(guò)采用與寄存器切換裝置143不同的其它方法,避免寄存器的覆蓋問(wèn)題。即使對(duì)于此種情況,由本發(fā)明也能夠得到上述的效果。
      (第2實(shí)施方式)圖8表示有關(guān)本發(fā)明的第2實(shí)施方式的機(jī)器語(yǔ)言程序變換裝置的構(gòu)成。有關(guān)本實(shí)施方式的機(jī)器語(yǔ)言程序變換裝置20,包括SIMD處理分割數(shù)指定裝置21(以下有時(shí)簡(jiǎn)稱為指定裝置21)、SIMD處理分割裝置22(以下有時(shí)簡(jiǎn)稱分割裝置22)、存儲(chǔ)器地址變換裝置23(以下有時(shí)簡(jiǎn)稱變換裝置23),其將包含SIMD命令的原機(jī)器語(yǔ)言程序D30作為輸入,減小該原機(jī)器語(yǔ)言程序D30的并列度,作為新機(jī)器語(yǔ)言程序D40輸出。另外,對(duì)于指定裝置21、分割裝置22以及變換裝置23,可由硬件構(gòu)成以及程序處理的任何一個(gè)來(lái)實(shí)現(xiàn)。
      以下依次說(shuō)明信息處理裝置20的各個(gè)構(gòu)成元件的概要。
      SIMD處理分割數(shù)指定裝置21取得由程序指定的SIMD處理的分割數(shù),設(shè)定SIMD處理分割數(shù)D31(以下稱為分割數(shù)D31)。SIMD處理的分割數(shù)的指定,作為機(jī)器語(yǔ)言程序變換裝置20啟動(dòng)時(shí)的選項(xiàng),能采用以常數(shù)指定的方法等實(shí)現(xiàn)。
      SIMD處理分割裝置22,將原機(jī)器語(yǔ)言程序D30中所包含的命令列全體,只進(jìn)行相當(dāng)于分割處理數(shù)D31所表示的處理分割數(shù)的次數(shù)的循環(huán),作為中間機(jī)器語(yǔ)言程序D32輸出。圖9表示SIMD處理分割裝置22的動(dòng)作的具體例。在該圖的例中,將原機(jī)器語(yǔ)言程序D30中的命令列全體,按照分割數(shù)D31表示的次數(shù)只循環(huán)2次輸出。
      返回到圖8,存儲(chǔ)器地址變換裝置23,對(duì)于中間機(jī)器語(yǔ)言程序D32中所包含的SIMD命令之中的有關(guān)存儲(chǔ)器存取的命令,按照該SIMD命令的循環(huán)輸出有關(guān)的順序數(shù),將有關(guān)該SIMD命令的原存儲(chǔ)器地址變換為新存儲(chǔ)器地址,輸出新機(jī)器語(yǔ)言程序D40。圖10表示存儲(chǔ)器地址變換裝置23的動(dòng)作的具體例。在該圖的例中,中間機(jī)器語(yǔ)言程序D32中所包含的存儲(chǔ)器存取命令(同圖中表示為命令2)有關(guān)的存儲(chǔ)器偏移,按照該存儲(chǔ)器存取命令的循環(huán)輸出有關(guān)的順序數(shù)(循環(huán)次數(shù))改寫。另外,從原存儲(chǔ)器地址到新存儲(chǔ)器地址的變換,能按照和第1實(shí)施方式中說(shuō)明的方法同樣進(jìn)行。
      由以上產(chǎn)生的新機(jī)器語(yǔ)言程序D40能在一般的SIMD運(yùn)算器上執(zhí)行。即對(duì)于執(zhí)行新機(jī)器語(yǔ)言程序D40的SIMD運(yùn)算器,沒有必要特別包括第1實(shí)施方式有關(guān)的SIMD運(yùn)算器具有的寄存器切換裝置。
      以上根據(jù)本實(shí)施方式,能夠變換原機(jī)器語(yǔ)言程序D30的程序并列度自動(dòng)產(chǎn)生新機(jī)器語(yǔ)言程序D40。另外因?yàn)樵瓩C(jī)器語(yǔ)言程序D40,是原機(jī)器語(yǔ)言程序D30中所包含的命令列全體按規(guī)定次數(shù)連續(xù)地表示的程序,通過(guò)執(zhí)行該新機(jī)器語(yǔ)言程序D40的SIMD運(yùn)算器,能并列處理其連續(xù)位置前后的多個(gè)命令。即新機(jī)器語(yǔ)言程序D40,能由原機(jī)器語(yǔ)言程序D30單純地按照指定次數(shù)循環(huán)執(zhí)行,以比有關(guān)的時(shí)間還少的時(shí)間執(zhí)行而得到。
      另外,SIMD處理分割裝置22也能以并非在原機(jī)器語(yǔ)言程序D30中所包含的命令列全體,而是以其一部分命令作為單位,將該命令列循環(huán)輸出。只是此時(shí),執(zhí)行產(chǎn)生的新機(jī)器語(yǔ)言程序D40的SIMD運(yùn)算器,有必要包括例如第1實(shí)施方式中所說(shuō)明的寄存器切換裝置,另外SIMD處理分割裝置22有必要輸出控制寄存器變換的命令。
      (第3實(shí)施方式)有關(guān)本發(fā)明的第3實(shí)施方式的機(jī)器語(yǔ)言程序變換裝置,和圖8所示的有關(guān)第2實(shí)施方式的機(jī)器語(yǔ)言程序變換裝置20具有同樣的構(gòu)成。只是SIMD處理分割裝置22以及存儲(chǔ)器地址變換裝置23的動(dòng)作,與第2實(shí)施方式不同。以下,對(duì)有關(guān)本實(shí)施方式的機(jī)器語(yǔ)言程序變換裝置20中的SIMD處理分割裝置22以及存儲(chǔ)器地址變換裝置23的動(dòng)作加以說(shuō)明。
      SIMD處理分割裝置22,將原機(jī)器語(yǔ)言程序D30中所包含的命令列全體作為子程序,此子程序只進(jìn)行相當(dāng)于由分割數(shù)D31表示的處理分割數(shù)的次數(shù)的循環(huán),產(chǎn)生循環(huán)命令列,作為中間機(jī)器語(yǔ)言程序D32輸出。圖11表示SIMD處理分割裝置22的動(dòng)作的具體例。在該圖的例中,將原機(jī)器語(yǔ)言程序D30中的命令列全體作為子程序sub,按照由分割數(shù)D31表示的次數(shù)只調(diào)用子程序sub2次的函數(shù)main,作為中間機(jī)器語(yǔ)言程序D32而產(chǎn)生。
      存儲(chǔ)器地址變換裝置23對(duì)于中間機(jī)器語(yǔ)言程序D32中所包含的SIMD命令之中有關(guān)存儲(chǔ)器存取的命令,將該SIMD命令的地址偏移改寫為表示循環(huán)命令列執(zhí)行時(shí)的循環(huán)次數(shù)的變量,輸出新機(jī)器語(yǔ)言程序D40。圖12表示存儲(chǔ)器地址變換裝置23的動(dòng)作的具體例。在該圖的例中,將中間機(jī)器語(yǔ)言D32中所包含的存儲(chǔ)器存取命令(同圖中表示為命令2)有關(guān)的地址偏移,改寫到存儲(chǔ)循環(huán)計(jì)數(shù)的專用的寄存器1c中。另外本例中,假設(shè)執(zhí)行新機(jī)器語(yǔ)言程序D40的SIMD運(yùn)算器具有專用的寄存器1c,執(zhí)行地址偏移的改寫。代替此專用的寄存器1c,也可采用通用的寄存器表示。
      以上由本實(shí)施方式,能產(chǎn)生比第2實(shí)施方式小的新機(jī)器語(yǔ)言程序D40。即使用者重視程序大小的情況下,可以選擇按照本實(shí)施方式的新機(jī)器語(yǔ)言程序D40,重視處理性能的情況下,可以選擇按照第2實(shí)施方式的新機(jī)器語(yǔ)言程序D40,使用者可以分別選擇。
      另外,SIMD處理分割裝置22也可以不將原機(jī)器語(yǔ)言程序D30中所包含的命令列全體而是將其一部分命令列作為子程序。只是此時(shí),如上所述,執(zhí)行產(chǎn)生的新機(jī)器語(yǔ)言程序D40的SIMD運(yùn)算器有必要包括寄存器切換裝置,還有SIMD處理分割裝置22有必要輸出控制寄存器變換的命令。
      另外,第2以及第3有關(guān)的機(jī)器語(yǔ)言程序變換裝置20和執(zhí)行由該機(jī)器語(yǔ)言程序變換裝置20產(chǎn)生的新機(jī)器語(yǔ)言程序D40的SIMD運(yùn)算器的組合,能構(gòu)成象第1實(shí)施方式的信息處理裝置。此時(shí)的信息處理裝置與第1實(shí)施方式不同,將輸入的機(jī)器語(yǔ)言程序全體變換后,執(zhí)行變換后的機(jī)器語(yǔ)言程序。
      正如以上的說(shuō)明,根據(jù)本發(fā)明,對(duì)于包含SIMD命令的機(jī)器語(yǔ)言程序的輸入,通過(guò)配備將其變換為相當(dāng)于處理分割數(shù)的次數(shù)的循環(huán)處理的SIMD處理分割裝置,不需要變更與某一并列度的SIMD運(yùn)算器相適應(yīng)的機(jī)器語(yǔ)言程序的內(nèi)容,能夠在只減小并列度的其它的SIMD運(yùn)算器上執(zhí)行。另外,SIMD命令中,對(duì)于有關(guān)存儲(chǔ)器存取的命令,按照循環(huán)次數(shù)有關(guān)的順序數(shù),通過(guò)配備將該SIMD命令的原存儲(chǔ)器地址變換為新存儲(chǔ)器地址的存儲(chǔ)器地址變換裝置,在只減小了并列度的其它的SIMD運(yùn)算器上執(zhí)行該機(jī)器語(yǔ)言程序的情況下,根據(jù)SIMD運(yùn)算器的存儲(chǔ)器構(gòu)成,能正確地進(jìn)行該SIMD命令的存儲(chǔ)器存取。
      權(quán)利要求
      1.一種信息處理裝置,具有SIMD運(yùn)算器,根據(jù)包含SIMD命令的機(jī)器語(yǔ)言程序進(jìn)行SIMD型運(yùn)算,其特征在于,包括SIMD處理分割裝置,其從所述機(jī)器語(yǔ)言程序輸入一條或者連續(xù)多條SIMD命令,將該一條或者連續(xù)多條SIMD命令以相當(dāng)于處理分割數(shù)的次數(shù)重復(fù)輸出;從所述SIMD處理分割裝置輸出的SIMD命令由所述SIMD運(yùn)算器執(zhí)行。
      2.根據(jù)權(quán)利要求1所述的信息處理裝置,其特征在于,包括存儲(chǔ)器地址變換裝置,其對(duì)于從所述SIMD處理分割裝置輸出的SIMD命令中有關(guān)存儲(chǔ)器存取的命令,根據(jù)有關(guān)該SIMD命令的重復(fù)輸出的順序數(shù),將有關(guān)該SIMD命令的原存儲(chǔ)器地址變換為新存儲(chǔ)器地址。
      3.根據(jù)權(quán)利要求1所述的信息處理裝置,其特征在于,包括寄存器切換裝置,其具有相當(dāng)于所述處理分割數(shù)的個(gè)數(shù)的所述SIMD運(yùn)算器用的寄存器組,根據(jù)有關(guān)由所述SIMD處理分割裝置重復(fù)輸出SIMD命令的順序數(shù),切換由所述SIMD運(yùn)算器所使用的所述寄存器組。
      4.根據(jù)權(quán)利要求1所述的信息處理裝置,其特征在于,包括SIMD處理分割數(shù)計(jì)算裝置,根據(jù)所述SIMD運(yùn)算器的并列度信息以及所述機(jī)器語(yǔ)言程序中所表示的所述機(jī)器語(yǔ)言程序的并列度信息,計(jì)算出所述處理分割數(shù)。
      5.一種機(jī)器語(yǔ)言程序變換裝置,其特征在于,包括SIMD處理分割裝置,其輸入包含SIMD命令的原機(jī)器語(yǔ)言程序,產(chǎn)生中間機(jī)器語(yǔ)言程序,相當(dāng)于將該原機(jī)器語(yǔ)言程序中所包含的命令列全體以相當(dāng)于處理分割數(shù)的次數(shù)進(jìn)行重復(fù)的命令列;和存儲(chǔ)器地址變換裝置,對(duì)于由所述SIMD處理分割裝置產(chǎn)生的中間機(jī)器語(yǔ)言程序中所包含的SIMD命令中有關(guān)存儲(chǔ)器存取的命令,將有關(guān)該SIMD命令的原存儲(chǔ)器地址變換為新存儲(chǔ)器地址;將由所述存儲(chǔ)器地址變換裝置進(jìn)行存儲(chǔ)器地址變換處理后的所述中間機(jī)器語(yǔ)言程序,作為新機(jī)器語(yǔ)言程序輸出。
      6.根據(jù)權(quán)利要求5所述的機(jī)器語(yǔ)言程序變換裝置,其特征在于,所述中間機(jī)器語(yǔ)言程序由將所述原機(jī)器語(yǔ)言程序中所包含的命令列全體以相當(dāng)于所述處理分割數(shù)的次數(shù)重復(fù)輸出的命令列所構(gòu)成;所述存儲(chǔ)器地址變換裝置,對(duì)于所述中間機(jī)器語(yǔ)言程序中所包含的有關(guān)存儲(chǔ)器存取的SIMD命令,根據(jù)有關(guān)該SIMD命令的重復(fù)輸出的順序數(shù),將有關(guān)該SIMD命令的原存儲(chǔ)器地址變換為新存儲(chǔ)器地址。
      7.根據(jù)權(quán)利要求5所述的機(jī)器語(yǔ)言程序變換裝置,其特征在于,所述中間機(jī)器語(yǔ)言程序由將所述原機(jī)器語(yǔ)言程序中所包含的命令列全體作為子程序,將該子程序只調(diào)用相當(dāng)于所述處理分割數(shù)的次數(shù)的循環(huán)命令列所構(gòu)成;所述存儲(chǔ)器地址變換裝置,將有關(guān)所述原存儲(chǔ)器地址的地址偏移,改寫成表示所述循環(huán)命令列執(zhí)行時(shí)的循環(huán)次數(shù)的變量。
      全文摘要
      本發(fā)明提供一種信息處理裝置,包括在具有SIMD運(yùn)算器(14)的信息處理裝置(10)中由機(jī)器語(yǔ)言程序輸入SIMD命令,將其按照規(guī)定的次數(shù)循環(huán)輸出的SIMD處理分割裝置(12);對(duì)于由SIMD處理分割裝置(11)輸出的有關(guān)存儲(chǔ)器存取的SIMD命令,按照該SIMD命令的循環(huán)次數(shù),變換該SIMD命令有關(guān)的存儲(chǔ)器地址,付與SIMD運(yùn)算器(14)的存儲(chǔ)器地址變換裝置(12);具有多個(gè)SIMD運(yùn)算器用的寄存器組(144),由SIMD處理分割裝置(11)按照SIMD命令的循環(huán)次數(shù),通過(guò)SIMD運(yùn)算器(14)變換使用的寄存器組的寄存器切換裝置(143)。由此,對(duì)于進(jìn)行SIMD型運(yùn)算的信息處理裝置,能執(zhí)行并列度不同的機(jī)器語(yǔ)言程序。
      文檔編號(hào)G06F15/16GK1573686SQ20041004842
      公開日2005年2月2日 申請(qǐng)日期2004年6月3日 優(yōu)先權(quán)日2003年6月3日
      發(fā)明者中嵨廣二, 小谷謙介 申請(qǐng)人:松下電器產(chǎn)業(yè)株式會(huì)社
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1