国产精品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>

      執(zhí)行部分寬度壓縮數(shù)據(jù)指令的制作方法

      文檔序號:6416348閱讀:176來源:國知局
      專利名稱:執(zhí)行部分寬度壓縮數(shù)據(jù)指令的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明一般涉及計算機(jī)系統(tǒng)領(lǐng)域。更具體地,本發(fā)明涉及利用諸如SIMD技術(shù)的處理器高效地執(zhí)行諸如標(biāo)量壓縮數(shù)據(jù)指令等的部分寬度壓縮數(shù)據(jù)指令的方法與裝置。
      諸如2D/3D圖形、圖像處理、視頻壓縮/解壓縮、話音識別算法與音頻處理等多媒體應(yīng)用通常要求在大量數(shù)據(jù)項(xiàng)上執(zhí)行相同的操作(稱作“數(shù)據(jù)并行性”)。各種多媒體應(yīng)用通常實(shí)現(xiàn)需要若干諸如加或乘(以后稱為MUL)等浮點(diǎn)或整數(shù)運(yùn)算的一種或多種算法。通過提供其執(zhí)行導(dǎo)致處理器并行地在多個數(shù)據(jù)項(xiàng)上執(zhí)行相同運(yùn)算的宏指令,諸如Pentium處理器體系結(jié)構(gòu)與MMxTM指令集等采用的單指令多數(shù)據(jù)(SIMD)技術(shù)已使在多媒體應(yīng)用性能上有了明顯的改進(jìn)(Pentium及MMXTM為SantaClara,CA的Intel公司的注冊商標(biāo)或商標(biāo))。
      SIMD技術(shù)特別適用于提供壓縮數(shù)據(jù)格式的系統(tǒng)。壓縮數(shù)據(jù)格式便是將寄存器中的位邏輯上分成若干固定大小的數(shù)據(jù)元素的數(shù)量,各元素表示獨(dú)立的值的數(shù)據(jù)格式。例如,可將64位寄存器分解成四個16位元素,每個表示獨(dú)立的16位值。然后,壓縮數(shù)據(jù)指令便可并行地分開處理這些壓縮數(shù)據(jù)類型中的各元素。
      參見

      圖1,其中示出了示例性壓縮數(shù)據(jù)指令。在這一示例中,壓縮加法指令(如SIMD ADD)將第一壓縮數(shù)據(jù)運(yùn)算數(shù)X與第二壓縮數(shù)據(jù)運(yùn)算數(shù)Y的對應(yīng)數(shù)據(jù)元素相加生成壓縮數(shù)據(jù)結(jié)果Z,即X0+Y0=Z0,X1+Y1=Z1,x2+Y2=Z2及x3+Y3=Z3。將許多數(shù)據(jù)元素壓縮到一個寄存器或存儲器單元中并采用并行硬件執(zhí)行使SIMD體系結(jié)構(gòu)一次能執(zhí)行多個操作,而得到明顯的性能改進(jìn)。例如,在這一示例中,在以前得出單一結(jié)果所需的時間中可得出四個獨(dú)立的結(jié)果。
      雖然SIMD體系結(jié)構(gòu)的優(yōu)點(diǎn)是顯而易見的,仍存在著希望只作為壓縮數(shù)據(jù)元素的子集返回單個的結(jié)果的情況。
      本文描述了用于執(zhí)行部分寬度壓縮數(shù)據(jù)指令的方法與裝置。按照本發(fā)明的一個方面,處理器包括多個寄存器、耦合在這多個寄存器上的寄存器重新命名單元、耦合在寄存器重新命名單元上的解碼器及耦合在該解碼器上的部分寬度執(zhí)行單元。該寄存器重新命名單元提供了體系結(jié)構(gòu)寄存器文件來存儲各包含多個數(shù)據(jù)元素的壓縮數(shù)據(jù)操作數(shù)。將解碼器配置成解碼其每個指定體系結(jié)構(gòu)寄存器文件中的一個或多個寄存器的第一與第二指令集。第一指令集中的各指令指定要在存儲在一個或多個指定的寄存器中的所有數(shù)據(jù)元素上執(zhí)行的操作。反之,第二指令集中的各指令指定只要在存儲在一個或多個指定的寄存器中的數(shù)據(jù)元素子集上執(zhí)行的操作。將部分寬度執(zhí)行單元配置成執(zhí)行由第一或第二指令集之一指定的操作。
      從附圖及詳細(xì)描述中,本發(fā)明的其它特征與優(yōu)點(diǎn)將是顯而易見的。
      本發(fā)明是參照附圖中的圖以示例方式而非限制性方式描述的,附圖中相同的標(biāo)號指示相同的元素,附圖中圖1示出將來自第一壓縮數(shù)據(jù)操作數(shù)與第二壓縮數(shù)據(jù)操作數(shù)的對應(yīng)數(shù)據(jù)元素相加的壓縮加法指令。
      圖2A為展示按照本發(fā)明的一個實(shí)施例的示例性計算機(jī)系統(tǒng)的簡化方框圖。
      圖2B為展示按照本發(fā)明的一個實(shí)施例的示例性邏輯寄存器組的簡化方框圖。
      圖2C為展示按照本發(fā)明的另一實(shí)施例的示例性邏輯寄存器組的簡化方框圖。
      圖3為展示按照本發(fā)明的一個實(shí)施例的指令執(zhí)行的流程圖。
      圖4概念性地展示執(zhí)行按照本發(fā)明的各種實(shí)施例的部分寬度壓縮數(shù)據(jù)指令的結(jié)果。
      圖5A概念地展示用于執(zhí)行按照本發(fā)明的一個實(shí)施例的全寬度壓縮數(shù)據(jù)指令及部分寬度壓縮數(shù)據(jù)指令的電路。
      圖5B概念性地展示用于執(zhí)行按照本發(fā)明的另一實(shí)施例的全寬度壓縮數(shù)據(jù)與部分寬度壓縮數(shù)據(jù)指令的電路。
      圖5C概念性地展示用于執(zhí)行按照本發(fā)明的又另一實(shí)施例的全寬度壓縮數(shù)據(jù)及部分寬度壓縮數(shù)據(jù)指令的電路。
      圖6展示按照SIMD的示例性處理器實(shí)現(xiàn)的,能分別作為四個獨(dú)立的加法執(zhí)行單元與四個獨(dú)立的乘法執(zhí)行單元操作的加法執(zhí)行單元與乘法執(zhí)行單元。
      圖7A-7B概念性地展示分別以“交錯”方式執(zhí)行的全寬度壓縮數(shù)據(jù)操作與部分寬度壓縮數(shù)據(jù)操作。
      圖8A概念性地展示在同時在操作數(shù)的一半寬度上執(zhí)行操作時從邏輯寄存器中存取全寬度操作數(shù)的處理器內(nèi)的電路。
      圖8B為進(jìn)一步展示圖8A的電路的定時圖。
      圖9概念性地展示通過將宏指令轉(zhuǎn)換成各處理操作數(shù)的一部分全寬度的多條宏指令以“交錯”方式在操作數(shù)上執(zhí)行操作的無次序的流水線的一個實(shí)施例。
      圖10為進(jìn)一步展示圖9中描述的實(shí)施例的定時圖。
      圖11為展示可采用來完成按照本發(fā)明的一個實(shí)施例的解碼處理的解碼邏輯的框圖。
      本文描述了用于執(zhí)行部分寬度壓縮數(shù)據(jù)指令的方法與裝置。這里名詞“全寬度壓縮數(shù)據(jù)指令”意在指稱在一個或多個壓縮數(shù)據(jù)操作數(shù)的所有數(shù)據(jù)元素上操作的壓縮數(shù)據(jù)指令(如SIMD指令)。反之,名詞“部分寬度壓縮數(shù)據(jù)指令”意在廣泛地指稱設(shè)計成只在一個或多個壓縮數(shù)據(jù)操作數(shù)的數(shù)據(jù)元素的子集上運(yùn)算并返回壓縮數(shù)據(jù)結(jié)果(到諸如壓縮數(shù)據(jù)寄存器文件)的壓縮數(shù)據(jù)指令。例如,標(biāo)量SIMD指令可能只需要壓縮數(shù)據(jù)操作數(shù)的最低位對之間的操作結(jié)果。在這一示例中,壓縮數(shù)據(jù)結(jié)果的其余數(shù)據(jù)元素是忽略不計的,因?yàn)樗鼈儗?biāo)量SIMD指令無意義(例如,不關(guān)心其余數(shù)據(jù)元素)。按照本發(fā)明的各種實(shí)施例,可以以這樣的方式來配置執(zhí)行單元使之高效地提供全寬度壓縮數(shù)據(jù)指令(如SIMD指令)及部分寬度壓縮數(shù)據(jù)指令集(如標(biāo)量SIMD指令)兩者。
      在下面的詳細(xì)描述中,為了說明的目的,提出了許多特定細(xì)節(jié)以便提供對本發(fā)明的徹底理解。然而,對于本技術(shù)中的普通技術(shù)人員很明顯,不一定用這些特定細(xì)節(jié)來實(shí)踐本發(fā)明。在其它實(shí)例中,并未示出或以方框圖形式示出眾所周知的器件、結(jié)構(gòu)、接口及進(jìn)程。
      考慮已為在單精度浮點(diǎn)數(shù)據(jù)、雙精度浮點(diǎn)數(shù)據(jù)及整數(shù)數(shù)據(jù)上采用標(biāo)量運(yùn)算的標(biāo)量體系結(jié)構(gòu)(如單指令單數(shù)據(jù)(SISD)體系結(jié)構(gòu))編寫的軟件的數(shù)量,希望向開發(fā)人員提供將他們的軟件移植到諸如SIMD體系結(jié)構(gòu)等支持壓縮數(shù)據(jù)指令的體系結(jié)構(gòu)上的選擇,而沒有必要改寫他們的軟件與/或?qū)W習(xí)新的指令。通過提供部分寬度壓縮數(shù)據(jù)指令,簡單的翻譯便能將老的標(biāo)量代碼變換成標(biāo)量壓縮數(shù)據(jù)代碼。例如,編譯程序非常容易從標(biāo)量代碼生成標(biāo)量SIMD指令。然后,隨著開發(fā)人員理解能用SIMD優(yōu)化的他們的軟件部分,他們便可逐漸地利用壓縮數(shù)據(jù)指令。當(dāng)然采用SIMD技術(shù)的計算機(jī)系統(tǒng)可能也以同樣支持SISD指令來保持向后兼容。然而,許多最近的體系結(jié)構(gòu)改進(jìn)及這里討論的其它因素有利于開發(fā)人員過渡到并利用SIMD技術(shù),即使首先只采用標(biāo)量SIMD指令也如此。
      提供部分寬度壓縮數(shù)據(jù)指令的另一合理性在于可通過只在全寬度運(yùn)算數(shù)的子集操作可達(dá)到的許多好處,其中包含降低功耗、提高速率、簡潔的異常模型及提高的存儲量。如下所示,根據(jù)用部分寬度壓縮數(shù)據(jù)指令提供的指示,通過有選擇地關(guān)閉對執(zhí)行當(dāng)前操作不必要的那些硬件單元可達(dá)到功率節(jié)省。
      另一種不希望強(qiáng)制壓縮數(shù)據(jù)指令返回各對數(shù)據(jù)元素的單個結(jié)果的情況包含在提供部分寬度硬件的環(huán)境中的算術(shù)運(yùn)算。由于成本與/或印模限制,通常不提供對諸如除法等某些算術(shù)運(yùn)算的全面支持。從其性質(zhì)上,即使在實(shí)現(xiàn)全寬度硬件(如執(zhí)行單元與數(shù)據(jù)元素之間的一一對應(yīng))時,除法運(yùn)算也非常長。因此,在只支持全寬度壓縮數(shù)據(jù)運(yùn)算同時提供部分寬度硬件的環(huán)境中,等待時間變得甚至更長。如下面進(jìn)一步所示,諸如部分寬度壓縮數(shù)據(jù)除法運(yùn)算等部分寬度壓縮數(shù)據(jù)運(yùn)算可有選擇地允許其運(yùn)算數(shù)的某些部分繞過除法硬件。以這一方法,只在壓縮數(shù)據(jù)運(yùn)算數(shù)中的數(shù)據(jù)元素的子集上運(yùn)算并不承擔(dān)性能損失。
      此外,與外來數(shù)據(jù)元素一起產(chǎn)生的異??赡軐?dǎo)致對開發(fā)人員的混淆與/或SISD與SIMD機(jī)器之間的不兼容性。因此,只為指令意欲在其上面操作的那些數(shù)據(jù)元素報告異常是有利的。部分寬度壓縮數(shù)據(jù)指令支持通過限制對關(guān)于正在其上面操作數(shù)據(jù)元素產(chǎn)生的異常條件或有可能導(dǎo)致混淆或SISD與SIMD機(jī)器之間不兼容的外來數(shù)據(jù)元素所產(chǎn)生的異常的觸發(fā)來允許達(dá)到可預(yù)測的異常模型。
      最后,作為執(zhí)行部分寬度壓縮數(shù)據(jù)操作的結(jié)果,在其中目的地壓縮數(shù)據(jù)操作數(shù)部分不受破壞的實(shí)施例中,部分寬度壓縮數(shù)據(jù)指令有效地提供用于存儲數(shù)據(jù)的附加寄存器空間。例如,如果正在壓縮數(shù)據(jù)操作數(shù)的低位部分上操作,可將數(shù)據(jù)存儲在高位部分中,反之亦然。
      圖2A為按照本發(fā)明的一個實(shí)施例的示例性計算機(jī)系統(tǒng)的簡化方框圖。在所描繪的實(shí)施例中,計算機(jī)系統(tǒng)200包含處理器205、存儲設(shè)備210及總線215。處理器205用總線215耦合在存儲設(shè)備上。此外,諸如鍵盤220及顯示器225等若干用戶輸入/輸出設(shè)備也耦合在總線215上。還可通過總線215將計算機(jī)系統(tǒng)200耦合在網(wǎng)絡(luò)230上。處理器205表示諸如CISC、RISC、VLIW或混合體系結(jié)構(gòu)等任何類型體系結(jié)構(gòu)的中央處理單元。此外,處理器205可實(shí)現(xiàn)在一片或多片芯片上。存儲設(shè)備210表示一個或多個用于存儲數(shù)據(jù)的機(jī)構(gòu)。例如,存儲設(shè)備210可包含只讀存儲器(ROM)、隨機(jī)存取存儲器(RAM)、磁盤存儲介質(zhì)、光學(xué)存儲介質(zhì)、快速存儲設(shè)備與/或其它機(jī)器可讀的介質(zhì)??偩€215表示一條或多條總線(如AGP、PCI、ISA、X-Bus、EISA、VESA等)及橋接器(也稱作總線控制器)。雖然這一實(shí)施例是相對于單處理器計算機(jī)系統(tǒng)描述的,應(yīng)理解本發(fā)明也可在多處理器計算機(jī)系統(tǒng)中實(shí)現(xiàn)。此外雖然本實(shí)施例是相對于32位與64位計算機(jī)系統(tǒng)描述的,本發(fā)明不限于這些計算機(jī)系統(tǒng)。
      圖2A附加示出處理器205包含指令集單元260。當(dāng)然,處理器205包含其它電路;然而,這種其它電路對理解本發(fā)明不是必要的。在任何情況中,指令集單元260包含硬件與/或固件來解碼與執(zhí)行一或多個指令集。在所描繪的實(shí)施例中,指令集單元260包含解碼/執(zhí)行單元275。解碼單元將處理器205接收的指令解碼成一或多條微指令。執(zhí)行單元響應(yīng)從解碼單元接收的微指令執(zhí)行適當(dāng)?shù)牟僮?。解碼單元可采用若干不同機(jī)構(gòu)實(shí)現(xiàn)(如查找表、硬件實(shí)現(xiàn)、PLA等)。
      在本例中,解碼/執(zhí)行單元275示出為包含既擁有全寬度壓縮數(shù)據(jù)指令又擁有部分寬度壓縮數(shù)據(jù)指令的指令集280。這些壓縮數(shù)據(jù)指令在執(zhí)行時可導(dǎo)致處理器205去執(zhí)行全/部分寬度壓縮浮點(diǎn)運(yùn)算與/或全/部分寬度壓縮整數(shù)運(yùn)算。除了壓縮數(shù)據(jù)指令,指令集280可包含在現(xiàn)有微處理器中找得到的其它指令。作為示例,在一個實(shí)施例中處理器205支持與Intel 32位體系結(jié)構(gòu)(IA-32)與/或Intel 64位體系結(jié)構(gòu)(IA-64)兼容的指令集。
      指令集單元260中還包含存儲器單元285。存儲器單元285可包含處理器205用來存儲包含浮點(diǎn)數(shù)據(jù)及壓縮浮點(diǎn)數(shù)據(jù)的信息的一或多組體系結(jié)構(gòu)寄存器(也稱作邏輯寄存器)。此外,可包含其它邏輯寄存器用于存儲整數(shù)數(shù)據(jù)、壓縮整數(shù)數(shù)據(jù)、及諸如棧頂指示之類各種控制數(shù)據(jù)。這里使用了名詞體系結(jié)構(gòu)寄存器與邏輯寄存器來指稱指令指定包含單個操作數(shù)的存儲區(qū)的方式的概念。從而,邏輯寄存器可用任何數(shù)目的公知技術(shù)在硬件中實(shí)現(xiàn),包含專用的物理寄存器、利用寄存器重新命名機(jī)制(下面更詳細(xì)地描述)的一或多個動態(tài)分配的物理寄存器等。在任何情況中,邏輯寄存器代表可用壓縮數(shù)據(jù)指令尋址的最小存儲單元。
      在所描繪的實(shí)施例中,已在存儲設(shè)備210中存儲了操作系統(tǒng)235及壓縮數(shù)據(jù)例程240供計算機(jī)系統(tǒng)200執(zhí)行。壓縮數(shù)據(jù)例程240為可包含諸如標(biāo)量SIMD指令或SIMD指令等一或多條壓縮數(shù)據(jù)指令的指令序列,如下面進(jìn)一步討論的,存在著包含速度、功耗及異常處理在內(nèi)的這樣的情況,希望只在壓縮數(shù)據(jù)操作數(shù)或一對壓縮數(shù)據(jù)操作數(shù)中的數(shù)據(jù)元素的子集上執(zhí)行操作(或返回單個的結(jié)果),因此,處理器205能區(qū)分全寬度壓縮數(shù)據(jù)指令與部分寬度壓縮數(shù)據(jù)指令并相應(yīng)地執(zhí)行它們是有利的。
      圖2B為展示按照本發(fā)明的一個實(shí)施例的示范性邏輯寄存器組的簡化方框圖。在這一示例中,存儲器單元285包含多個標(biāo)量浮點(diǎn)寄存器291(標(biāo)量寄存器文件)及多個壓縮浮點(diǎn)寄存器292(壓縮數(shù)據(jù)寄存器文件)。在執(zhí)行浮點(diǎn)指令時可將標(biāo)量浮點(diǎn)寄存器291(如寄存器R0-R7)實(shí)現(xiàn)為棧訪問的寄存器文件以便與為Intel體系結(jié)構(gòu)編寫的現(xiàn)有軟件兼容。然而,在替代實(shí)施例中,可將寄存器291作為平面寄存器文件對待。在所描繪的實(shí)施例中,將各壓縮浮點(diǎn)寄存器(如XMM0-XMM7)實(shí)現(xiàn)為單一128位邏輯寄存器。然而,應(yīng)理解可采用更寬或更窄的寄存器來符合使用更多或更少數(shù)據(jù)元素或更大或更小數(shù)據(jù)元素的實(shí)現(xiàn)。此外,可提供更多或更少的壓縮浮點(diǎn)寄存器282。類似于標(biāo)量浮點(diǎn)寄存器291,在執(zhí)行壓縮浮點(diǎn)指令時可將壓縮浮點(diǎn)寄存器292實(shí)現(xiàn)為棧訪問的寄存器文件或平面寄存器文件。
      圖2C為展示按照本發(fā)明的另一實(shí)施例的示范性邏輯寄存器組的簡化方框圖。在這一示例中,存儲器單元285再一次包含多個標(biāo)量浮點(diǎn)寄存器291(標(biāo)量寄存器文件)及多個壓縮浮點(diǎn)寄存器292(壓縮數(shù)據(jù)寄存器文件)。然而,在所描繪的實(shí)施例中,將各壓縮浮點(diǎn)寄存器(如XMM0-XMM7)實(shí)現(xiàn)為高位293與低位寄存器294的對應(yīng)的對。如下面進(jìn)一步討論的,為了指令解碼的目的的而將壓縮浮點(diǎn)寄存器292的邏輯寄存器地址空間組織成使高位與低位寄存器對用單一的位區(qū)別是有利的。例如,XMM0-XMM7的高位與低位部分可用MSR來區(qū)分。最好,各壓縮浮點(diǎn)寄存器291寬到足以容納四個32位單精度浮點(diǎn)數(shù)據(jù)元素。然而,如上所述,可采用更寬或更窄的寄存器來符合使用更多或更少數(shù)據(jù)元素或更大或更小數(shù)據(jù)元素的實(shí)現(xiàn)。此外,雖然本例中的邏輯壓縮浮點(diǎn)寄存器292各包括對應(yīng)的64位寄存器對,在替代實(shí)施例中各壓縮浮點(diǎn)寄存器可包括任何數(shù)目的寄存器。
      已描述了可在其中實(shí)現(xiàn)本發(fā)明的一個實(shí)施例的示范性計算機(jī)系統(tǒng),下面描述指令執(zhí)行。
      圖3為展示按照本發(fā)明的一個實(shí)施例的指令執(zhí)行的流程圖。在步驟310,處理器205接收指令。在步驟320,根據(jù)指令的類型,部分寬度壓縮數(shù)據(jù)指令(如標(biāo)量SIMD指令)或全寬度壓縮數(shù)據(jù)指令(如SIMD指令),處理以步驟330或340繼續(xù)。通常在解碼單元中指令的類型是根據(jù)包含在指令內(nèi)的信息確定的。例如,信息可包含在附著在操作碼上的前綴或后綴中,或通過立即值提供指示對應(yīng)的操作要在壓縮數(shù)據(jù)操作數(shù)的所有數(shù)據(jù)元素還是其子集上執(zhí)行。以這一方式,相同的操作碼既可用于全寬度壓縮數(shù)據(jù)操作也可用于部分寬度壓縮數(shù)據(jù)操作。作為代替,一組操作碼可用于部分寬度壓縮數(shù)據(jù)操作而不同的操作碼組可用于全寬度壓縮數(shù)據(jù)操作。
      在任何情況中,如果指令為傳統(tǒng)的全寬度壓縮數(shù)據(jù)指令,則在步驟330通過在操作數(shù)中的各數(shù)據(jù)元素上執(zhí)行指令規(guī)定的操作來確定壓縮數(shù)據(jù)結(jié)果。然而,如果指令為部分寬度壓縮數(shù)據(jù)指令,則在步驟340通過在數(shù)據(jù)元素的子集上執(zhí)行指令規(guī)定的操作來確定結(jié)果的第一部分,而其余結(jié)果則設(shè)定為一個或多個預(yù)定的值。在一個實(shí)施例中,預(yù)定的值便是操作數(shù)之一中對應(yīng)數(shù)據(jù)元素的值。這便是,可將數(shù)據(jù)元素從操作數(shù)之一的數(shù)據(jù)元素“傳遞通過”到壓縮數(shù)據(jù)結(jié)果中的對應(yīng)數(shù)據(jù)元素。在另一實(shí)施例中,全部清除(清零)結(jié)果的其余部分中的數(shù)據(jù)元素。下面描述用于執(zhí)行將數(shù)據(jù)元素從操作數(shù)之一傳遞通過到結(jié)果的示范性邏輯及用于清除結(jié)果中的數(shù)據(jù)元素的示范性邏輯。
      圖4概念性地展示執(zhí)行按照本發(fā)明的各種實(shí)施例的部分寬度壓縮數(shù)據(jù)指令的結(jié)果。在這一示例中,操作是由執(zhí)行單元440在兩個邏輯源寄存器410與420的數(shù)據(jù)元素上執(zhí)行的。執(zhí)行單元440包含用于執(zhí)行指令規(guī)定的操作的電路與邏輯。此外,執(zhí)行單元440可包含允許執(zhí)行單元440在部分寬度壓縮數(shù)據(jù)模式或全寬度壓縮數(shù)據(jù)模式中操作的選擇電路。例如,執(zhí)行單元440可包含傳遞通過電路將數(shù)據(jù)元素從邏輯源寄存器410、420之一傳遞到邏輯目的地寄存器430,或清除電路來清除邏輯目的地寄存器430的一或多個數(shù)據(jù)元素,等。也可采用各種其它技術(shù)來影響操作結(jié)果,包括將對操作的輸入之一強(qiáng)制成預(yù)定的值,諸如導(dǎo)致操作執(zhí)行其恒等函數(shù)的值或可傳遞通過算術(shù)運(yùn)算而不發(fā)出異常信號的值(如靜止的非數(shù)字(quiet nat-a-number)(QNaN))。
      在所示的示例中,只將第一對數(shù)據(jù)元素(X0與Y0)上的操作結(jié)果(Z0)存儲在邏輯目的地寄存器430中。假定執(zhí)行單元440包含傳遞通過邏輯,便將邏輯目的地寄存器430的其余數(shù)據(jù)元素設(shè)置成來自邏輯源寄存器410的對應(yīng)數(shù)據(jù)元素的值(即X3、X2與X1)。雖然將邏輯目的地寄存器430示出為獨(dú)立的邏輯寄存器,指出它可以同時用作邏輯源寄存器410、420之一是重要的。因此,在這一上下文中應(yīng)理解將邏輯目的地寄存器430的數(shù)據(jù)元素設(shè)置成來自邏輯源寄存器410、420之一的值可包含什么也不做。例如,在邏輯源寄存器410既是邏輯源又是目的地寄存器的情況中,各種實(shí)施例可利用這一點(diǎn)并簡單地不觸動要傳遞通過的一或多個數(shù)據(jù)元素。
      作為替代,執(zhí)行單元440可包含清除邏輯。從而,不是將值從邏輯源寄存器之一傳遞通過到邏輯目的地寄存器430,而是將結(jié)果中不必要的數(shù)據(jù)元素清除。在本例中再一次只將第一對數(shù)據(jù)元素(X0與Y0)上的操作結(jié)果(Z0)存儲在邏輯目的地寄存器430中。“清除”(如設(shè)置成零或該問題的任何其它預(yù)定值)邏輯目的地寄存器430的其余數(shù)據(jù)元素。
      圖5A-5C分別概念性地展示既可執(zhí)行全寬度壓縮數(shù)據(jù)又可執(zhí)行部分寬度壓縮數(shù)據(jù)指令的執(zhí)行單元540、560及580。包含在圖5A與5C的執(zhí)行單元中的選擇邏輯表示示范性傳遞通過邏輯,而圖5B的選擇邏輯代表可采用的清除邏輯。在所描繪的實(shí)施例中,執(zhí)行單元540、560與580各包含適當(dāng)?shù)倪壿?、電路與/或固件用于在操作數(shù)(X與Y)的全寬度上并發(fā)執(zhí)行操作570、571與572。
      參見圖5A,執(zhí)行單元540包含選擇邏輯(如多路復(fù)用器(MUX)555-557)用于在操作570產(chǎn)生的值與來自操作數(shù)之一的對應(yīng)數(shù)據(jù)元素的值之間進(jìn)行選擇。可用諸如指示當(dāng)前執(zhí)行的操作是全寬度壓縮數(shù)據(jù)操作還是部分寬度壓縮數(shù)據(jù)操作的信號來控制MUX555-557。在替代實(shí)施例中,通過包含數(shù)據(jù)元素0的附加MUX與/或獨(dú)立地控制各MUX可以達(dá)到附加的靈活性。提供MUX控制的各種裝置都是可能的。按照一個實(shí)施例,這種控制可從指令本身始發(fā)或?qū)С?,或可通過立即值提供。例如,與指令關(guān)聯(lián)的4位立即值可用來使MUX555-557直接受軟件控制??芍笇?dǎo)對應(yīng)于立即值中的1的MUX去選擇操作的結(jié)果,而可導(dǎo)致對應(yīng)于0的MUX去選擇傳遞通過數(shù)據(jù)。當(dāng)然,通過采用更多或更少位來表示立即值可以在各種實(shí)現(xiàn)中達(dá)到更多或更少的分辨率。
      參見圖5B,執(zhí)行單元540包含選擇邏輯(如MUX565-567)用于在操作571產(chǎn)生的值與預(yù)定的值(如零)之間進(jìn)行選擇。如上所述MUX565-567可在公共控制下或獨(dú)立地受控制。
      圖5C的傳遞通過邏輯(如MUX 575-576)在操作數(shù)之一的數(shù)據(jù)元素與恒等函數(shù)值590之間進(jìn)行選擇。通常將恒等函數(shù)值590選擇為使得在恒等函數(shù)值590與數(shù)據(jù)元素之間執(zhí)行運(yùn)算572的結(jié)果為數(shù)據(jù)元素的值。例如,如果運(yùn)算572為乘法運(yùn)算,則恒等函數(shù)值590為1。類似地,如果運(yùn)算572為加法運(yùn)算,恒等函數(shù)值590為0。以這一方式,可通過令對應(yīng)的MUX575-577輸出恒等函數(shù)值590將數(shù)據(jù)元素的值有選擇地傳遞通過到邏輯目的地寄存器430。
      在上述實(shí)施例中,電路是硬布線成使得部分寬度操作是在最低位數(shù)據(jù)元素部分上執(zhí)行的??梢岳斫?,操作可在與所示出的不同的數(shù)據(jù)元素部分上執(zhí)行。同時,如上所述,通過將所有的操作耦合到MUX之類而不只是圖5A-5C中所描繪的操作的子集,可使要在其上操作的數(shù)據(jù)元素成為軟件可配置的。此外,雖然將傳遞通過與清除邏輯描述為用于對待對應(yīng)于要忽略的操作的得出的數(shù)據(jù)元素的兩種選擇,替代實(shí)施例可采用其它技術(shù)。例如,可以輸入QNaN作為對要忽略其結(jié)果的操作的操作數(shù)之一。以這一方式,與1985年3月21日公布的IEEE 754標(biāo)準(zhǔn),IEEEstd.754-1985一致的算術(shù)運(yùn)算將傳播NaN通過到結(jié)果而不觸發(fā)算術(shù)異常。
      雖然由于操作數(shù)的全寬度能并行處理而在上述實(shí)施例中達(dá)不到明顯的加速,應(yīng)理解通過關(guān)閉要忽略其結(jié)果的那些操作便能降低功耗。從而,可達(dá)到明顯的功率節(jié)省。此外,采用QNaN與/或恒等函數(shù)值,可通過防止由不是部分寬度壓縮數(shù)據(jù)操作的一部分的數(shù)據(jù)元素觸發(fā)異常而維持可預(yù)測的異常模型。因此,所報告的異常局限于與部分寬度壓縮數(shù)據(jù)操作意欲在其上操作的數(shù)據(jù)元素相關(guān)產(chǎn)生的那些。
      圖6展示可用來執(zhí)行全寬度壓縮數(shù)據(jù)指令的算術(shù)邏輯單元(ALU)的當(dāng)前處理器實(shí)現(xiàn)。圖6的ALU包含在操作數(shù)的全寬度(即所有數(shù)據(jù)元素)上執(zhí)行操作所必需的電路。圖6還示出該ALU包含兩個不同類型的執(zhí)行單元,分別用于執(zhí)行不同類型的運(yùn)算(如某些ALU使用獨(dú)立的單元來執(zhí)行加法與乘法運(yùn)算)。加法執(zhí)行單元與乘法執(zhí)行單元分別能作為四個獨(dú)立的加法執(zhí)行單元及四個獨(dú)立的乘法執(zhí)行單元操作。作為替代,ALU可包含一或多個乘累加(MAC)單元,各能執(zhí)行多于單一類型的運(yùn)算。雖然以下示例假定采用加法與乘法執(zhí)行單元及浮點(diǎn)運(yùn)算,應(yīng)理解諸如MAC與/或整數(shù)運(yùn)算等其它執(zhí)行也可使用。此外,可能最好采用部分寬度實(shí)現(xiàn)(如在執(zhí)行單元與數(shù)據(jù)元素之間具有少于一一對應(yīng)的實(shí)現(xiàn))以及附加邏輯來協(xié)調(diào)執(zhí)行單元的重復(fù)使用,如下所述。
      圖7A-7B概念性地展示正以“交錯”方式分別執(zhí)行的全寬度壓縮數(shù)據(jù)操作及部分寬度壓縮數(shù)據(jù)操作。本實(shí)施例的上下文中“交錯執(zhí)行”指將指令的操作數(shù)各分成獨(dú)立的段并使用同一硬件順序處理各段的進(jìn)程而言。通過在連接的段的處理中引入延時而順序地處理各段。如圖7A-7B中所示,將壓縮數(shù)據(jù)操作數(shù)分成“高位段”(數(shù)據(jù)元素3與2)及“低位段”(數(shù)據(jù)元素1與0)。在圖7A的示例中,低位段正在處理而高位段被延時。隨后,處理高位段而獲得全寬度結(jié)果。在圖7B的示例中,低位段正在處理,而高位數(shù)據(jù)段是否處理則取決于實(shí)現(xiàn)。例如,如果對應(yīng)的結(jié)果是要清零的則高位數(shù)據(jù)段可能不需要處理。此外應(yīng)理解如果不處理高位數(shù)據(jù)段,則高位與低位數(shù)據(jù)段可同時處理。類似地,在全寬度實(shí)現(xiàn)(如在執(zhí)行單元與數(shù)據(jù)元素之間具有一一對應(yīng)的實(shí)現(xiàn))則高與低位數(shù)據(jù)段可同時處理或如圖7A中所示。
      此外,雖然下面的實(shí)施例是描述為只具有加法與乘法執(zhí)行單元的,也可使用諸如MAC單元等其它類型的執(zhí)行單元。
      雖然存在著能達(dá)到交錯的指令執(zhí)行的若干不同方式,以下各節(jié)描述兩個示范性實(shí)施例來說明本發(fā)明的這一方面。具體地,所描述的兩個示范性實(shí)施例都接收指定包含128位操作數(shù)的邏輯寄存器的相同宏指令。
      在第一示范性實(shí)施例中,指定包含128位操作數(shù)的邏輯寄存器的各宏指令導(dǎo)致從物理寄存器訪問全寬度的操作數(shù)。從寄存器訪問全寬度操作數(shù)之后,將操作數(shù)分成低與高位段(如利用鎖存器與多路復(fù)用器)及使用相同的硬件順序地執(zhí)行。采集得出的半寬度結(jié)果并同時將它們寫入單個邏輯寄存器中。
      反之,在第二示范性實(shí)施例中將指定包含128位操作數(shù)的邏輯寄存器的各宏指令分成至少兩條各只在一半操作數(shù)上操作的微指令。從而操作數(shù)是分成高與低位段的而各微指令獨(dú)立地導(dǎo)致從寄存器中只訪問一半操作數(shù)。在SIMD體系結(jié)構(gòu)中這種分法是可能的,因?yàn)楦鞑僮鲾?shù)是互相獨(dú)立的。雖然第二實(shí)施例的實(shí)現(xiàn)能以任何次序執(zhí)行微指令(以按次序的或無次序的執(zhí)行模型),微指令分別導(dǎo)致在操作數(shù)的低位與高位段上獨(dú)立地或分開地執(zhí)行宏指令所指定的操作。此外,各微指令導(dǎo)致將一半得出的操作數(shù)寫入宏指令所指定的單一目的地邏輯寄存器中。
      雖然將實(shí)施例描述為在其中將128位操作數(shù)分成兩段的,替代實(shí)施例能使用更大或更小的操作數(shù)與/或?qū)⑦@些操作數(shù)分成兩段以上。此外,雖然將兩個示范性實(shí)施例描述為用于執(zhí)行交錯執(zhí)行的,替代實(shí)施例可采用其它技術(shù)。
      圖8A概念性地展示從邏輯寄存器存取全寬度操作數(shù)但一次在操作數(shù)的一半寬度上執(zhí)行操作的按照第一實(shí)施例的處理器內(nèi)的電路。這一實(shí)施例假定處理器執(zhí)行機(jī)能在每一時鐘周期中處理一條指令。作為示例,假定執(zhí)行下述指令序列ADD X,Y;MUL A,B。在時間T上,通過端口1與2從它們各自的物理寄存器中各檢索出128位的X及128位的Y。將X與Y兩者的低位數(shù)據(jù)段,即低64位,傳遞給多路復(fù)用器802及804,然后向前傳遞給執(zhí)行單元供處理。將X與Y的高位數(shù)據(jù)段,高64位保存在延時元件M1與M2中。在時間T+1上,從延時元件M1與M2中讀取X與Y的高位數(shù)據(jù)段,然后向前傳遞到執(zhí)行單元供處理。通常,將高位數(shù)據(jù)段存儲在延時元件M1與M2中的延時機(jī)構(gòu)允許N位(在本例中N=64)硬件處理2N位數(shù)據(jù)。然后將來自執(zhí)行單元的低位結(jié)果保存在延時元件M3中直到高位結(jié)果就緒為止。然后通過端口3將兩個處理步驟的結(jié)果寫回到寄存器文件800?;貞浽诓糠謱挾葔嚎s數(shù)據(jù)操作的情況中,可將低或高位結(jié)果的一或多個數(shù)據(jù)元素強(qiáng)制到預(yù)定值上(如零、X或Y之一中的對應(yīng)數(shù)據(jù)元素的值、等)而不是加法或乘法運(yùn)算的輸出。
      繼續(xù)本示例,在時間T+1上,也已起動乘法指令。從而在時間T+1上,可能已通過端口1與2從它們各自的寄存器中檢索出各128位的A與B??蓪與B兩者的低位數(shù)據(jù)段,即低64位傳遞到多路復(fù)用器806與808中。從延時元件M1與M2中清除X與Y的高位段并傳遞到多路復(fù)用器806與808中之后,可將A與B的高位段保持存儲在延時元件M1與M2中,通過端口3將兩個處理步驟的結(jié)果寫回到寄存器文件800。
      從而,按照本發(fā)明的實(shí)施例,設(shè)置了只包含一半硬件的執(zhí)行單元(諸如兩個單精度加法執(zhí)行單元及兩個單精度乘法執(zhí)行單元),而不是要求執(zhí)行單元如在當(dāng)前的處理器中發(fā)現(xiàn)的那樣去并行處理全寬度的操作數(shù)。本實(shí)施例利用了揭示多媒體應(yīng)用利用大約50%加法指令與50%乘法指令這一統(tǒng)計分析。根據(jù)這些統(tǒng)計,本實(shí)施例假定多媒體指令通常遵照下述模式ADD,MUL,ADD,MUL,等等。通過以上述方式利用加法與乘法執(zhí)行單元,本實(shí)施例提供執(zhí)行單元的優(yōu)化使用,從而能以較低的成本達(dá)到與當(dāng)前的處理器相當(dāng)?shù)男阅堋?br> 圖8B為進(jìn)一步說明圖8A的電路的定時圖。更具體地,如圖8B中所示,當(dāng)在時間T上發(fā)布指令“ADD X,Y”時,兩個加法執(zhí)行單元首先在低位數(shù)據(jù)段或圖1的兩個低位壓縮數(shù)據(jù)段,即X0Y0及X1Y1上執(zhí)行加法。在時間T+1上,用相同的執(zhí)行單元在來自操作數(shù)的其余兩個數(shù)據(jù)元素上執(zhí)行加法運(yùn)算,并將高位數(shù)據(jù)段的后面兩個數(shù)據(jù)元素相加,即X2Y2與X3Y3。雖然上述實(shí)施例是參照利用兩個執(zhí)行單元的加法與乘法運(yùn)算描述的,替代實(shí)施例可利用任何數(shù)目的執(zhí)行單元與/或以交錯方式執(zhí)行任何數(shù)目的不同運(yùn)算。
      按照本實(shí)施例,可利用64位硬件來處理128位數(shù)據(jù)。一個128位寄存器可分成四個32位元素,各表示獨(dú)立的32位值,在時間T上,兩個加法執(zhí)行單元首先在兩個低位32位值上執(zhí)行加法,后面跟隨著在時間T+1上在高位32位值上的加法。在乘法運(yùn)算的情況中,乘法執(zhí)行單元以相同的方式工作。利用當(dāng)前可獲得的64位硬件去處理128位數(shù)據(jù)的這一能力代表了對硬件制造商的巨大成本效益。
      如上所述,在后一個時鐘周期上重復(fù)使用按照本實(shí)施例的加法與乘法執(zhí)行單元重復(fù)執(zhí)行第二個加法或乘法運(yùn)算。當(dāng)然,在部分寬度壓縮數(shù)據(jù)指令的情況中,重復(fù)使用執(zhí)行單元但沒有必要重復(fù)執(zhí)行運(yùn)算,因?yàn)榭梢杂羞x擇地關(guān)閉對執(zhí)行單元的供電??傊?,如上所述,為了高效地執(zhí)行這一重復(fù)使用或“交錯執(zhí)行”,利用了多媒體應(yīng)用的統(tǒng)計表現(xiàn)。
      如果第二加法指令跟隨第一加法指令,第二加法可被調(diào)度單元延時,以便加法執(zhí)行單元能完成第一加法指令,或更具體地在高位數(shù)據(jù)段上的第一加法指令。然后開始執(zhí)行第二加法指令。作為替代,在無序處理器中,調(diào)度單元可確定是否可無序地執(zhí)行指令流中更后面的乘法指令。如果是,調(diào)度單元可通知乘法執(zhí)行單元開始處理該乘法指令。如果在時間T+1上沒有可供處理的乘法指令,在第一加法指令后面調(diào)度程序?qū)⒉话l(fā)布指令,從而允許加法執(zhí)行單元在開始第二加法指令之前定時完成第一加法指令。
      本發(fā)明的又另一實(shí)施例,通過在一半時鐘周期而不是整個時鐘周期上在同一執(zhí)行單元上執(zhí)行指令而允許發(fā)布加倍的加法或乘法指令。在半時鐘周期上執(zhí)行一條指令有效地“雙激發(fā)”硬件,即使硬件兩倍快。以這一方式,可在每一個時鐘周期中利用加法或乘法執(zhí)行單元來處理新指令。雙激發(fā)的硬件允許硬件單元以只在整個時鐘周期上執(zhí)行的單激發(fā)硬件兩倍的效率執(zhí)行。雙激發(fā)硬件需要明顯地更多的硬件以便在半時鐘周期上高效地處理指令。
      應(yīng)理解,本發(fā)明的修改與變化是被上述教導(dǎo)涵蓋的并在所附權(quán)利要求的視界內(nèi),并不脫離本發(fā)明的精神與意向范圍。例如,上面雖然只描述了兩個執(zhí)行單元,但可提供任何數(shù)目的邏輯單元。
      按照本發(fā)明的替代實(shí)施例,全寬度操作數(shù)的交錯執(zhí)行是通過將一條全寬度宏指令轉(zhuǎn)換成至少兩條各只在一半操作數(shù)上操作的微指令來達(dá)到的。如下面進(jìn)一步描述的,通過消除沒有必要確定部分寬度結(jié)果的微指令,在宏指令指定部分寬度壓縮數(shù)據(jù)操作時能達(dá)到更佳性能。以這一方式,減少了處理器資源制約并且處理器不再被無意義的微指令無必要地占用。雖然下面的描述是按照具體的寄存器重新命名法編寫的,應(yīng)理解也可與本發(fā)明協(xié)調(diào)利用其它寄存器重新命名機(jī)制。下面描述的寄存器重新命名方法假設(shè)采用寄存器別名表(RAT)、排序緩沖器(ROB)及退役緩沖器,如在美國專利號5,446,912中詳細(xì)描述的。也可實(shí)現(xiàn)諸如在美國專利號5,197,132中描述的替代寄存器重新命名方法。
      圖9概念性地展示通過將宏指令轉(zhuǎn)換成各處理全寬度操作數(shù)的一部分的多條微指令以“交錯”方式在操作數(shù)上執(zhí)行操作的流水線的一個實(shí)施例。應(yīng)指出為了避免不必要地使本發(fā)明難以理解,并未詳細(xì)示出諸如取指令階段等流水線的各種其它階段。如所示,在流水線的解碼階段,接收全寬度宏指令,指定各存儲全寬度操作數(shù)(如128位)的邏輯源寄存器。作為示例,所描述的操作數(shù)為128位壓縮浮點(diǎn)數(shù)據(jù)操作數(shù)。在本例中,處理器支持用于存儲壓縮浮點(diǎn)數(shù)據(jù)的Y個邏輯寄存器。將宏指令轉(zhuǎn)換成各導(dǎo)致宏指令在半寬度操作數(shù)(如64位)上執(zhí)行操作的微指令,即“高位操作”與“低位操作”。
      兩條半寬度微指令然后進(jìn)入流水線的寄存器重新命名階段。寄存器重新命名階段包含各種寄存器圖及排序緩沖器。各微指令的邏輯源寄存器為對寄存器映象表(如RAT)中的特定寄存器項(xiàng)的指針。寄存器映象表中的項(xiàng)又指向ROB中或退役寄存器中的物理源單元的位置。按照一個實(shí)施例,為了提供上述半寬度高與低位操作,壓縮浮點(diǎn)數(shù)據(jù)的RAT設(shè)置有Y*2個項(xiàng)。從而,例如,不是帶有8個邏輯寄存器項(xiàng)的RAT,而是建立帶16個項(xiàng)的RAT,各項(xiàng)編址為“高”或“低”。各項(xiàng)標(biāo)識對應(yīng)于128位邏輯寄存器的高或低部分之一的64位源。
      從而各高與低位微指令在對應(yīng)于各自的操作數(shù)的寄存器映象表中具有相關(guān)的項(xiàng)。然后微指令進(jìn)入調(diào)度階段(對無序處理)或執(zhí)行階段(對按序處理器)。各微指令檢索與分開處理128位操作數(shù)的64位段。64硬件單元首先執(zhí)行操作之一(如低位操作)。然后,同一64位硬件單元執(zhí)行高位操作。應(yīng)理解,在低與高位操作之間可執(zhí)行零或數(shù)條指令。
      雖然上述實(shí)施例描述將宏指令分成兩條微指令,替代實(shí)施例可將宏指令分成更多的微指令。雖然圖9示出將壓縮浮點(diǎn)數(shù)據(jù)返回給帶有各指定為高或低的Y*2個64位寄存器的退役寄存器文件,替代實(shí)施例可采用帶有Y個128位寄存器的退役寄存器文件。此外,雖然將一個實(shí)施例描述為具有帶排序緩沖器與退役寄存器文件的寄存器重新命名機(jī)構(gòu)的,替代實(shí)施例可使用任何寄存器重新命名機(jī)構(gòu)。例如,美國專利號5,197,132的寄存器重新命名機(jī)構(gòu)采用歷史隊(duì)列與后備圖。
      圖10為進(jìn)一步說明圖9中所描述的實(shí)施例的定時圖。在時間T上,宏指令“ADD X,Y”進(jìn)入圖9的流水線的解碼階段。作為示例,該宏指令為128位指令。將該128位宏指令轉(zhuǎn)換成兩條64位微指令,即高位運(yùn)算“ADD XH,YH”及低位運(yùn)算“ADD XL,YL”。然后各微指令處理包含兩個數(shù)據(jù)元素的一段數(shù)據(jù)。例如,在時間T上,可由64位執(zhí)行單元執(zhí)行低位操作。然后在不同的時間上(如時間T+N),同一64位執(zhí)行單元執(zhí)行高位操作。從而本發(fā)明的這一實(shí)施例特別適用于利用現(xiàn)有的64位硬件系統(tǒng)處理128位指令,而無須對硬件作重大改變?,F(xiàn)有的系統(tǒng)除了現(xiàn)有的邏輯寄存器圖之外,很容易擴(kuò)展成包含新圖來處理壓縮的浮點(diǎn)。
      參見圖11,其中描述了按照本發(fā)明的一個實(shí)施例可以采用的解碼邏輯。簡要地說,在所描繪的實(shí)施例中,多個解碼器1110、1120及1130各接收一條宏指令并將其轉(zhuǎn)換成微指令。然后將微操作向下送到流水線的其余部分。當(dāng)然,執(zhí)行每一條宏指令不一定需要N條微指令。因此,通常的情況是只排隊(duì)微指令的子集供流水線的其余部分處理。
      如上所述,壓縮數(shù)據(jù)操作可實(shí)現(xiàn)為兩條半寬度微指令(如高位操作與低位操作)。不是象先有處理器實(shí)現(xiàn)所要求的用兩個解碼器獨(dú)立地解碼宏指令來生成高與低位操作,作為本實(shí)施例的特征可用同一解碼器生成兩條微指令。在本例中,這是用復(fù)制邏輯1150完成的,它復(fù)制高或低位操作,并隨后適當(dāng)?shù)匦拚玫降膹?fù)制操作來建立剩下的操作。重要的是,如上所述,通過小心地編碼寄存器地址空間,能用單一的位來區(qū)分宏指令引用的寄存器(如邏輯源與目的地寄存器)。結(jié)果,最簡單的形式的修正邏輯1160可包括一或多個反相器來反相適當(dāng)?shù)奈灰员銖牡臀徊僮鳟a(chǎn)生高位操作及反過來。在任何情況中,然后將復(fù)制的宏指令傳遞給多路復(fù)用器1170。多路復(fù)用器1170也接收解碼器1120生成的微指令。在本例中,多路復(fù)用器1170在有效性解碼器1180的控制下輸出用于壓縮數(shù)據(jù)操作(包含部分寬度壓縮數(shù)據(jù)操作)的復(fù)制的微指令,并輸出從解碼器1120接收的用于壓縮數(shù)據(jù)操作以外的操作的微指令。因此,優(yōu)化操作碼圖來簡化復(fù)制邏輯1150對壓縮數(shù)據(jù)操作的檢測是有利的。例如,如果只需要檢驗(yàn)宏指令的一小部分來區(qū)別壓縮數(shù)據(jù)操作與其它操作,則有效性解碼器1180可采用較少的電路。
      在為了執(zhí)行部分寬度壓縮數(shù)據(jù)操作的目的而將源數(shù)據(jù)元素傳遞通過到邏輯目的地寄存器的實(shí)現(xiàn)中,除了類似于相對于圖5A與5C描述的選擇邏輯之外,可包含邏輯來消除(消滅)高或低位操作之一,為了性能原因,最好及早在流水線中消除無關(guān)的微指令。這一消除可按照通過利用從微指令長度確定電路1190輸出的微指令選擇信號描繪的實(shí)施例來完成。該微指令長度確定邏輯1190檢驗(yàn)一部分宏指令并生成指示要在流水線中向下進(jìn)行的一或多條微指令的特定組合的微指令選擇信號。在標(biāo)量SIMD指令的情況中,只允許進(jìn)行得出的高與低位操作之一。例如,微指令選擇信號可表示為標(biāo)識哪些微指令要保留及哪些要消除的位屏蔽。作為替代,微指令選擇信號可簡單地指示從預(yù)定的起點(diǎn)開始要消除或保留的微指令的數(shù)目。執(zhí)行上述消除所需的邏輯取決于引導(dǎo)微指令通過流水線的其余部分的導(dǎo)航機(jī)制而變化。例如,如果微指令是排隊(duì)的,可能要增加邏輯來操作微指令隊(duì)列的頭與尾指針以導(dǎo)致用后面生成的有效微指令來改寫無效的微指令,許多其它的消除技術(shù)對于本技術(shù)中的普通技術(shù)人員是熟知的。
      雖然為了簡單起見在所描繪的實(shí)施例中一次只示出為解碼單一宏指令,但在替代實(shí)施例中可同時解碼多條宏指令,同時可理解,微指令復(fù)制具有比上述實(shí)施例所示更廣闊的應(yīng)用性。例如,以類似于上述的方式,可用同一解碼器解碼全寬度及部分寬度壓縮數(shù)據(jù)宏指令。如果用前綴來區(qū)分全寬度與部分寬度壓縮數(shù)據(jù)宏指令,解碼器可簡單地忽略該前綴并以相同方式解碼兩種類型的指令。然后,可以修改得出的微操作中的適當(dāng)?shù)奈粊碛羞x擇地為數(shù)據(jù)元素全體或其子集啟動處理。以這一方式,可從部分寬度壓縮數(shù)據(jù)微操作生成全寬度壓縮數(shù)據(jù)微操作,反之亦然,借此降低解碼器的復(fù)雜性。
      從而公開了用于高效地執(zhí)行部分寬度壓縮數(shù)據(jù)指令的方法與裝置。這里描述的這些特定的裝置與方法只是為了展示本發(fā)明的原理。本技術(shù)中的普通技術(shù)人員可作出形式上與細(xì)節(jié)上的許多修改而不脫離本發(fā)明的范圍。雖然對于特定的最佳實(shí)施例示出了本發(fā)明,但不應(yīng)認(rèn)為局限于此。反之,本發(fā)明只受所附權(quán)利要求書的范圍的限制。
      權(quán)利要求
      1.一種處理器,包括多個寄存器;寄存器重新命名單元,耦合在多個寄存器上以提供體系結(jié)構(gòu)寄存器文件來存儲壓縮數(shù)據(jù)操作數(shù),各所述壓縮數(shù)據(jù)操作數(shù)具有多個數(shù)據(jù)元素;解碼器,耦合在所述寄存器重新命名單元上,解碼各指定體系結(jié)構(gòu)寄存器文件中一或多個寄存器的第一與第二指令集,第一指令集中的各指令指定在存儲在指定的一或多個寄存器中的所有數(shù)據(jù)元素上的操作,第二指令集中各條指定只在存儲在指定的一或多個寄存器中的數(shù)據(jù)元素的子集上的操作;以及部分寬度執(zhí)行單元,耦合在解碼器上以執(zhí)行第一或第二指令集所指定的操作。
      2.根據(jù)權(quán)利要求1的處理器,其中存儲在指定的一或多個寄存器中的數(shù)據(jù)元素的子集包括對應(yīng)的低位數(shù)據(jù)元素。
      3.根據(jù)權(quán)利要求1的處理器,還包括執(zhí)行單元,根據(jù)指定的操作與第一或第二指令集中哪一個相關(guān),有選擇地在指定的一或多個寄存器中的一或多個數(shù)據(jù)元素上執(zhí)行指定的操作。
      4.根據(jù)權(quán)利要求3的處理器,其中該執(zhí)行單元還包括多個多路復(fù)用器在指定的操作結(jié)果與預(yù)定的值之間進(jìn)行選擇。
      5.根據(jù)權(quán)利要求3的處理器,其中該執(zhí)行單元還包括多個多路復(fù)用器在該一或多個數(shù)據(jù)元素的一個數(shù)據(jù)元素與恒等函數(shù)之間進(jìn)行選擇供輸入到指定的操作。
      6.一種方法,包括下述步驟接收指定壓縮數(shù)據(jù)寄存器文件中至少兩個邏輯寄存器的單一宏指令,其中這兩個邏輯寄存器分別存儲具有對應(yīng)的數(shù)據(jù)元素的第一壓縮數(shù)據(jù)操作數(shù)及第二壓縮數(shù)據(jù)操作數(shù);以及利用同一電路在不同的時間上在來自所述第一與第二壓縮數(shù)據(jù)操作數(shù)的第一與第二多個對應(yīng)數(shù)據(jù)元素上獨(dú)立地操作,以獨(dú)立地生成第一與第二多個得出的數(shù)據(jù)元素,這是通過下述步驟進(jìn)行的,在第一與第二多個對應(yīng)的數(shù)據(jù)元素中的至少一對對應(yīng)的數(shù)據(jù)元素上執(zhí)行該單一宏指令所指定的操作以生成第一與第二多個得出的數(shù)據(jù)元素的至少一個得出的數(shù)據(jù)元素,以及將第一與第二多個得出的數(shù)據(jù)元素的其余得出的數(shù)據(jù)元素設(shè)定為一個或多個預(yù)定值;及將該第一與第二多個得出的數(shù)據(jù)元素作為第三壓縮數(shù)據(jù)操作數(shù)存儲在單一邏輯寄存器中。
      7.根據(jù)權(quán)利要求6的方法,其中該一個或多個預(yù)定值包括來自第一壓縮數(shù)據(jù)操作數(shù)或第二壓縮數(shù)據(jù)操作數(shù)之一的數(shù)據(jù)元素之值。
      8.根據(jù)權(quán)利要求6的方法,其中該一或多個預(yù)定值包括零。
      9.根據(jù)權(quán)利要求6的方法,其中該一或多個預(yù)定值包括非數(shù)字(NaN)指示。
      全文摘要
      提供了用于執(zhí)行標(biāo)量壓縮數(shù)據(jù)指令的方法與裝置。其中處理器包括:多個寄存器;耦合在該多個寄存器上的寄存器重新命名單元;耦合在寄存器重新命名單元上的解碼器;及耦合在解碼器上的部分寬度執(zhí)行單元。
      文檔編號G06F9/30GK1244675SQ99104620
      公開日2000年2月16日 申請日期1999年3月31日 優(yōu)先權(quán)日1998年3月31日
      發(fā)明者P·魯塞爾, T·塔卡 申請人:英特爾公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1