專利名稱:具有可重新組構的浮點單元的處理器的制作方法
技術領域:
本發明大體上系關于處理器,且更具體地說,系關于具有可重新組構的浮點單元 Creconfigurable floating point unit)白勺處理器0
背景技術:
眾所皆知的,浮點單元(floating point unit, FPU)系為特別被設計來執行浮點 數字上的運算(operation)的處理器系統的一部份。典型的浮點運算包括加法、減法、乘 法、除法和平方根。一些處理器系統也可執行許多非代數的(transcendental)功能,例如 指數的或三角學的計算,盡管在多數的現代處理器里,這些是以軟件例程庫來做的。在多數 現代一般用途的計算機架構中,FPU包括多重執行單元。在這些架構中,浮點運算通常是獨 立于整數運算而被執行且一般是管線化處理(pipeline)。FPU的執行單元可被專門化地分 成較簡單的運算(例如加法和乘法)與更復雜的運算(例如除法)。在一些情況中,只有簡 單的運算是用硬件來完成的,而更復雜的運算是用仿真的。眾所皆知的,指令集定義處理器可執行的指令。指令包括算數指令(例如加法與 減法)、邏輯指令(例如,AND、0R與NOT指令)、與數據指令(例如,移動、輸入、輸出、加載、 與儲存指令)。指令集或指令集架構(ISA)是處理器架構有關程序設計的一部份,包括原 始(native)數據型式、指令、緩存器、尋址模式、存儲器架構、中斷和異常處置、與外部輸入 /輸出(1/0)。ISA包括運算碼(operational code, opcode)的集合的說明,也就是由特別 的中央處理單元(CPU)架構執行的原始命令。眾所皆知的,運算碼是可指定要被執行的運 算的機器語言指令的一部份。完整的機器語言指令包括運算碼與通常指定一個或多個操作 數,也就是,要在上面執行運算的數據。運算碼運算的操作數可依據CPU架構而包含緩存 器、存儲器里的數值、儲存在堆棧里的數值、1/0端口、數據總線等等。眾所皆知的,有不同微架構的計算機可分享一般的指令集。舉例來說,來自不同制 造商的處理器可執行幾乎相同的指令集版本,例如x86指令集,但是本質上是不同的內部 設計。典型的復雜指令集計算機(complex instruction set computer,CISC)有將一個或 兩個基本運算(如「加法」和「乘法」)結合到固有的指令的指令以存取存儲器、根據使用來 增加緩存器、或解參考(de-reference)儲存在存儲器或緩存器的位置。精簡指令集計算機 (reduced instruction-set computer, RISC)犧牲較簡單與較快指令集的執行而換得較低 的碼密度(也就是執行給定的任務要更多程序存儲器空間)。RISC指令典型上只執行單一 固有的運算,例如兩個緩存器的「加法」或「加載」一個存儲器位置到一個緩存器里。許多不同的指令集已經被使用在x86型式處理器好幾年了。舉例來說,矩陣數學 延伸(matrix math extension, MMX)指令集是在1997年被引進。一般來說,雖然MMX被設 計來再利用先前CPU設計的現存浮點緩存器,但是正在執行MMX指令的CPU不能同時運作 浮點與單指令多數據(single-instruction multiple-data, SIMD)型式的數據。此外,MMX 指令集只被設計來運作整數。數據流SIMD延伸(streaming SIMDextension, SSE)指令集 是在1999年被引進來增加MMX指令集的功能。SSE指令集加入八個參照到XMMO到XMM7的新的128位緩存器。每個128位緩存器可被四個32位單精度浮點數一起塞入。在SSE指 令集中,128位緩存器在操作系統明確地激活它們且是操作系統需要維持在那邊的任務交 換的附加程序狀態之前是被預設不可用的。因為額外的支持浮點,所以SSE指令集(與SSE 指令集的較新版本)比MMX指令集更廣為被使用。SSE2指令集增加全部運作在先前與SSE —起引進的相同128位XMM向量緩存器檔 案的倍精度(64位)浮點和8/16/32位整數數據型式的新算數指令。SSE3指令集增加以數 學指令與一些步驟(執行緒(thread))管理指令為目的的少數的數字訊號處理器(DSP)到 SSE2指令集中。SSE3指令集增加16個新的運算碼(到SSE3指令集中),其包括排列位組 成為字符、乘16位定點數字時正確舍入(rounding)且在字符累積指令之內。SSE4指令集 加入點乘積(dot product)指令、額外整數指令等等。
發明內容
根據本發明的多種觀點,揭露一種處理器設計,包括浮點單元(FPU),該浮點單元(FPU)包含共享控制區域和兩個實質相同的64位數據路徑,也就是,被使用來執行128位指 令集的浮點指令的上端數據路徑(top data path)和下端數據路徑(bottom data path)。 經由例如模式位(mode bit)的指示器(indicator)來組構控制區域,以執行設定在包含上 端和下端數據路徑的128位數據路徑上或是在下端數據路徑上的128位指令集。處理器設 計適用于具有三個不同組構的處理器芯片,也就是,具有用于最大效能之128位FPU的處理 器芯片、具有用于減低電力消耗之64位FPU的處理器芯片、或具有用于較低的電力消耗之 可動態下放(down-bin)成64位FPU的128位FPU的處理器芯片。在可下放的處理器芯片 中,下放可依據電力需求而在激活(boot-up)時或在運作(run-time)時被完成。處理器設計使用在不同組構間共享的共享控制區域(邏輯)是有益的,該共享控 制區域(邏輯)例如為一個或多個前端譯碼器、浮點(FP)重命名單元、FP排程單元、FP異 常和管線控制單元、和FP收回(retire)單元。在任何情況中,前端譯碼器依照模式位來分 解(crack) 128位指令成為單一 128位原始運算或是兩個64位運算。許多指令集的單指令 多數據(SIMD)性質允許上端數據路徑為下端數據路徑的復制品(duplicate)。如上所提及 的,上端和下端數據路徑兩者都有共享控制區域(接口),其允許相同區塊被使用在64位數 據路徑和128位數據路徑。對于128位數據路徑,原始運算被重映像(remap)到兩個64位 半運算(half operation,hop),也就是,被分別提供到上端和下端數據路徑的高半運算(hi hop)和低半運算(Io hop)。對于64位數據路徑,原始運算被直接轉變成一個64位半運算 (也就是,低半運算(lo hop))。對于運作在128位數據上的非SIMD (non-SIMD)指令,旁路(bypass)單元被實行 以在上端和下端數據路徑間混洗(shuffle)數據,以至于128位混洗、填塞(pack)、和取出 (unpack)指令可被適當地執行。旁路單元被組構來在相同數據路徑中的數據路徑區塊間 (例如在下端FP加法器和下端FP乘法器間)轉送(forward)數據,以及從在上端和下端數 據路徑中任一者的緩存器檔案中讀取數據。在此使用的用詞「耦接(coupled)」包括以一個 或多個插置(intervening)組件(或單元)來實現的在組件(或單元)間的直接電性連接 及在組件(或單元)間的非直接電性連接。根據本發明的一個觀點,一種運作處理器的方法包括決定處理器的浮點單元(FPU)是要運作在全位模式(full-bit mode)或是在減少的位模式(reduced-bit mode)。 當指示為全位模式時,提取的指令被譯碼成單一運算,或當指示為減少的位模式時,提取的 指令被譯碼成多重運算。舉例來說,全位模式可為128位模式,而減少的位模式可為64位 模式。另一個例子,全位模式可為256位模式,而減少的位模式可為32位模式。又另一個 例子,全位模式可為128位模式,而減少的位模式可為32位模式。根據本發明的另一個觀點,一種處理器包括指示器、譯碼器和浮點單元(FPU)。譯 碼器被耦接到指示器,且依據指示器來譯碼指令成為單一運算或多重運算。FPU被耦接到譯 碼器,且依據指示器來開始在一個處理器周期中執行單一運算或在一個或多個處理器周期 中執行多重運算。又根據本揭露的另一個觀點,一種系統包括指示器、處理器、和被耦接到處理器的 存儲器子系統。處理器包括譯碼器和浮點單元(FPU)。譯碼器被耦接到指示器,且依據指示 器來譯碼指令成為單一運算或多重運算。FPU被耦接到譯碼器,且依據指示器來開始在一個 處理器周期中執行單一運算或在一個或多個處理器周期中執行多重運算。
藉由參照隨附的圖式,可更佳地了解本發明且其許多特性和優點對于那些熟悉此 項技術者是明白的。圖1為根據本發明的實施例而組構的處理器的相關部分的電性方塊圖。圖2為圖1處理器的浮點單元(FPU)的相關部分的電性方塊圖。圖3為包含根據圖2而組構的處理器的計算機系統的相關部分的電性方塊圖。圖4為用于依據指示器來譯碼指令的方法的流程圖。在不同圖式里使用相同組件符號代表相似或相同的項目。
具體實施例方式參照圖1,顯示包括可重新組構的浮點單元(FPU)的處理器100的相關部分。處理 器100包括當作指令快取使用的高速緩存(快取)102。在一個或多個實施例中,快取102 包含一階(Li)變換后備緩沖區(translation look-aside buffer,TLB)、二階(L2)TLB、預 譯碼(pre-decode)快取和分支預測表。快取102被耦接到總線接口單元(BIU) 138與L2快 取控制器136。被耦接到快取102和指令譯碼器106的提取/譯碼控制單元104接收到來 自可對應于緩存器、熔絲(fuse)等等的指示器110的結構信號(FP128信號)。FP128信號 的邏輯階級決定處理器100運作在128位模式或64位模式。雖然在此的討論主要針對處 理器是運作在128位模式或64位模式,但是可預期的是,本揭露技術同樣可應用到不同的 模式,例如256位模式和128位模式。提取/譯碼控制單元104控制提取來自快取102的 指令與控制被指令譯碼器106譯碼的指令。被譯碼的指令從指令譯碼器106提供到指令控 制單元(ICU) 108,其除了別的功能外尚決定被譯碼的指令(運算)應該被發送到無順序執 行單元112的整數單元111或浮點單元(FPU) 113。整數單元111包括被耦接到執行整數運算的復數個整數執行單元(IEU) 116與耦 接到為整數運算產生地址的復數個地址產生單元(AGU) 118的整數排程器114。IEU 116和 AGU 118也被耦接到被耦接到快取134的加載/儲存(load/store,LS)單元132。快取134作用如同數據快取并可執行Ll TLB和L2 TLB。快取134被耦接到BIU 138和L2快取控制 器136。FPU 113包括FPU堆棧映像/重命名單元120、FPU排程器122和FPU緩存器檔案 124。FPU緩存器檔案124被耦接到三個邏輯管(pipe),也就是,儲存控制(STC)管126、浮 點加法(FADD)管128和浮點乘法(FMUL)管130,其中每一個都可以包括有多重級(slage) 的一個或多個執行單元。三個邏輯管也被耦接到LS單元132。參照到圖2,將進一步描述圖1的處理器100的相關部分。如上所提到的,提取/ 譯碼控制單元104 (圖1)導致一個或多個指令(例如SSE指令)的快取線被從快取102提 取出來并被指令譯碼器106譯碼。在典型的架構中,每個快取列包括多重指令。在一個實 施例中,指令譯碼器106每次譯碼三個指令。然而可以預期的是,本揭露技術同樣可應用到 每次譯碼比三個指令多或少的處理器。雖然在此的討論主要針對SSE指令,但是可預期的 是,本揭露技術可廣泛地應用到執行例如SSE2、SSE3、SSSE3、SSE4、MMX.3DN0W ! 等等的 任何指令集架構(ISA)。由譯碼器106所提供的被譯碼的指令(運算)被儲存在位在例如 指令控制單元(ICU) 108里的指令隊列208里。如上所提到的,指示器110指出提取/譯碼 控制單元104如何組構指令譯碼器106來譯碼從快取102中提取的指令。在揭露之實施例中,指示器110提供指出FPU 113如何被組構以及指令從而如何被處理的邏輯信號(FP128信號)。FP128信號被分配到許多不同的邏輯方塊以控制FPU 113 如何運算。舉例來說,當FP128信號確立(assert)指示為全位模式且FPU 113被組構來包 括上端和下端兩者數據路徑250和270時,就其本身而論,FPU 113被組構來執行128位指 令的128位運算。在此情況中,每個128位指令被譯碼成為一個運算。當FP128信號不被 確立時則指出為減少的位模式,且FPU只使用下端數據路徑270,而不管上端和下端數據路 徑250和270兩者是否被包括在處理器100里。當FP128信號未被確立時,則FPU 113被 組構來執行64位運算,且就其本身而論,指令譯碼器106分解每個128位指令成為兩個64 位運算。掃描對準器 / 微碼引擎(scanaligner/microcode engine,SA/ME) 202 包括 SA 204 和ME 206且可舉例來說被包括在I⑶108里。SA 204被組構從指令隊列(queue) 208中拉 出指令,如處理器100的運作過程中所需要的。舉例來說,SA 204可從指令隊列208中每 次拉出三個指令。應該了解的是,在此揭露的技術可廣泛地應用到能夠在每個處理器周期 從指令隊列中拉出多于或少于三個指令的處理器中。如圖所示的,SA 204被組構對每個處理器周期拉出和發送三個快速路徑 (fastpath)(也就是非微碼的)指令。在圖標的實施例中,指令為ADDPD、MULPD、和M0VAPD, 其分別代表填塞兩次(packed-double)的加法指令、填塞兩次的乘法指令、和填塞兩次的 移動指令。假設FP128信號被確立(也就是FPU 113是在128位模式中),則SA 204的上 面多任務器205上標示‘1’的輸入被提供在上面多任務器205的相關輸出上。在128位模 式中,每次三個128位指令被發送。另一方面,如果FP128信號沒有被確立(也就是,FPU 113是在64位模式中),則SA 204的每個上面多任務器205上標示‘0’的輸入被提供在上 面多任務器205的相關輸出上。在此情況中,當128位指令被分解成為兩個64位運算時, ADDPD指令的兩個運算(也就是ADDLO和ADDHI)分別被設置在槽0和1。此外,MULPD指 令的第一個運算(MULLO)被設置在槽2。因此,在64位模式中,對每個處理器周期發送一與二分之一(1.5)個128位指令。 在下一個處理器周期中,MULPD指令的第二個運算(MULHI)被設置在槽0且MOVAPD指令的兩個運算(MOVALO和MOVAHI)分別被設置在槽1和槽2。因此,在64位模式例子中,ADDL0、 ADDHI和MULLO在第一個處理器周期中被發送。MULHI、MOVALO和MOVAHI在接下來的第二 個處理器周期中被發送。應該要注意的是,圖2的多任務器205的結構可應用在64位模式 中的第一個處理器周期。簡而言之,在128位模式中,三個128位快速路徑指令(例如三個 x86 SSE指令)可在每個周期中被發送。同樣地,在64位模式中,一與二分之一個128位快 速路徑指令(例如1. 5個128位X86SSE指令)可在每個處理器周期中被發送。如圖所示的,可包括合適大小只讀存儲器(ROM)的微碼引擎(ME) 206提供用于非快速路徑指令的微碼。ME 206可包括128位微碼、64位微碼或分享的微碼(也就是被分享 在128位和64位令間的微碼))。指令譯碼器106決定指令是快速路徑指令還是需要微碼 的指令。當指出是微碼指令時,ME 206提供運算到被包含在SA 204內的三個下面多任務 器207的輸入。快速路徑信號被從指令譯碼器106提供到三個下面多任務器207的選擇 線。所有三個下面多任務器207指向相同的途徑且提供不是快速路徑就是微碼運算。舉例 來說,假設來自指令隊列208的下一個指令是復雜指令(例如浮點正弦(FSIN)指令),則在 相應到微碼指令的所有運算已經從ME 206中被拉出之前,沒有其它指令從指令隊列208中 被拉出。在微碼指令的偵測之后,產生指向微碼里的項目以相應到微碼指令。然后一個或 多個運算線被讀出ME 206,直到相應到微碼指令的所有運算都已經被讀到為止。舉例來說, ME 206每個線可包括三個運算。在至少一個實施例中,在相同處理器周期中,快速路徑指令 不能被發送成為微碼指令。在此情況,來自SA/ME 202的槽里的磁泡(bubbles)可能會發 生。應該了解的是,設計者可借著執行邏輯以預測微碼的使用與相應到復雜指令的運算數 量來減低或消除磁泡。一般說來,微碼指令有多于兩個的關聯運算。在典型的情況,只有兩 個運算的指令可如同快速路徑兩倍指令(fastpath double instruction)被執行。在相應 到微碼指令的微碼序列的尾端之后,然后下一個指令可從指令隊列208中被拉出。在此時 應該了解的是,依據可用的資源,運算不被發送。依照處理器架構,資源可以是槽特有的。舉例來說,整數單元可有只可用在某些槽 里的專用資源。舉例來說,整數單元可包括只出現在槽0上的整數乘法器。在此情況中,微 碼編程器(programmer)將須確保整數相乘運算沒被放在槽1或2中。此外,當分享的資源 只存在整數部分上時,微碼編程器將須確保資源在需要資源的運算的分配槽里是可用的。 一般說來,不分享整數部分資源的浮點運算可到任何槽。應該了解的是,一旦運算到達排程 器,運算可依據可用的資源來被重新安排及無順序地執行。在一個實施例中,SA/ME 202提供的運算系為x86運算。在SA/ME202的槽0、1和 2上的運算被提供到可被包含在FPU堆棧映像/重命名單元120里的浮點重命名1 (FPRNl) 單元212的槽0、1和2。FPRNl單元212除了其它功能之外自分配每個運算到適合的管(例 如,管0、管1和管2)。FPRNl單元212包括在每個槽0、1和2上的128位譯碼器214和64 位譯碼器216。譯碼器214譯碼x86運算成為用于128位運算的執行運算(exOp_0、exOp_l 和eXOp_2)。同樣地,譯碼器216譯碼x86運算成為用于64位運算的執行運算。執行運算 有它們自己的壓縮運算碼(運算的碼)空間、緩存器空間、地址空間等等,且可例如為12位 執行運算。FP 128信號依據FPU 113的結構來指出譯碼器214和216的哪一個是被選擇 的。
如果確立FP128信號,則多任務器218選擇譯碼器214。如果沒確立FP128信號,則 多任務器218選擇譯碼器216。圖標的執行運算的助記碼(mnemonics)為分別對應到圖標 的 x86 運算 ADDPD、MULPD 和 MOVAPD 的 FPKADDPD、FPKMULPD 和 FPKM0VPD。執行運算從 FPRNl 單元212到浮點重命名2 (FPRN2)單元220被提供在每個槽上。FPRNl單元212和FPRN2單 元220兩者都可在FPU堆棧映像/重命名單元120中被執行。在FPRN2單元220中,執行 運算從邏輯重命名(LRN)空間被映像到實體重命名(PRN)空間。在一個實施例中,FPRN2單 元220包括有48項目(0至47)的緩存器檔案。在此實施例中,在128位模式中只使用上面 32 (0至31)項目而在64位模式中使用所有48個項目。在128位模式中,每個SSE緩存器 只有一個項目(從16到31)。在64位模式中,每個SSE緩存器有兩個項目(從16至47), 如同該等緩存器被看作一半的緩存器。在64位模式中,所有緩存器指定(disignations) 具有低(例如xmmO. Ιο)指定和高(例如xmmO. hi)指定。低指定對應到項目16至31而高 指定對應到項目32至47。 FPRN2單元220連通到可被包括在FPU堆棧映像/重命名單元120里的浮點收回 隊列(FPRQ)單元240,以歸還舊的緩存器到空閑緩存器列表(free register list)并從 空閑緩存器列表中接受新的緩存器。FPRQ單元240依據處理器的模式有不是128位就是 64位槽。舉例來說,如果處理器是在128位模式中,則3個指令將占領3個槽。另一方面, 如果處理器是在64位模式,則1. 5個指令(例如ADDL0、ADDHI和MULL0)將占領FPRQ單元 240的3個槽。FPRN2單元220的輸出被提供到被組構來例如包括36個項目的浮點單元排 程器(FPSC) 230。FPSC 230被組構來依據資源可用度以選擇運算。運算依據相依性(dependency)可被無順序地發給適當的管(也就是在揭露的例 子里的管0、管1或管2)。在揭露的實施例中,三個獨立的運算選擇器(operation picker) (對于每個管有一個運算選擇器)被使用在FPSC 230里。每個選擇器檢查FPSC 230里的 項目來定位可被發給到關聯的管的運算。被分配到每個執行運算的管是帶有關聯執行運算 地被寫入到FPSC 230里的一部份信息。在一個實施例中,如果選擇器找到超過一個的準備 好要執行的執行運算,則選擇器選擇最舊的執行運算。FPSC 230可藉由放置最新的運算在 隊列的最上端及放置最舊的運算在隊列的最底端以維持期齡順序。被選擇到的運算是被提 供到浮點異常管線控制(floating point exception pipeline control,FPEPC)單元242。 FPSC 230和FPEPC單元242可被包含在FPU排程器122里面。如圖所示的,數據地址從FPSC 230被提供到浮點緩存器檔案124,浮點緩存器檔 案124可包括在上端數據路徑250里的浮點緩存器檔案高(floating point register file high, FPRFHI) 252與在下端數據路徑270里的浮點緩存器檔案低(floating point register file low, FPRFL0)272。依照實施例,可不用提供上端數據路徑250或是提供了 而可不被使用到。數據路徑250和270每個都包含浮點緩存器檔案(分別是FPRHH 252 和FPRFLO 272),分享浮點旁路(FPBYP)單元254,包含第一管(包含浮點加(FPA)單元和 MMX ALU(MMA)單元),包含第二管(包含浮點乘(FPM)單元、MMX乘法器(MMM)單元和MMX 整數乘法器(IMM)單元)與包含第三管(包含儲存控制(STC)單元)。應該要了解的是,不 同或額外的單元可被提供在管里。在圖標的實施例中,五個讀取地址(對應到五個數據來 源,也就是,兩個是FPA/MMA單元的、兩個是FPM/MMM/IMM單元的與一個是STC單元的)被 提供到可包含FPRrai 252和FPRFLO 272的浮點緩存器檔案(FPRF)。
FPEPC單元242接收對于每個槽(也就是槽0、1和2)的每個執行運算的N位(例 如12位)運算碼(與額外控制信息)。FPEPC單元242包含譯碼器(FP128HI) 244、譯碼器 (FP128L0)246與對于每個槽(也就是槽0、1和2)的多任務器248。對于128位指令的執 行運算可被分開成為兩個半運算(hop)。在此情況中,執行運算具有關聯的高半運算(hi hop)和低半運算(lo hop)。典型上來說,hi hop與Io hop完全相同。然而,某些執行運算 的hi hop與Io hop并不完全相同。當hi hop與Io hop不完全相同時,譯碼器244和246 運行以分別提供hi hop與Io hop。假設處理器100被組構在64位模式中,多任務器248 選擇通過式(feed-through)路徑(也就是,不使用譯碼器244和246)。在此情況中,執行 運算不被改變地通過且運算被提供到下端數據路徑270,也就是執行的FPAL0/MMAL0單元 276 (管 0)、FPML0/MMML0/IMMLO 單元 278 (管 1)與 STCLO 單元 280 (管 2)。
當處理器100被組構在128位模式中時,多任務器248選擇譯碼器246且譯碼器 244和246被使用在所有的槽上。在此情況中,低半運算(lo hop)被提供到下端數據路徑 270,也就是 FPAL0/MMAL0 單元 276 (管 0)、FPML0/MMML0/IMMLO 單元 278 (管 1)與 STCLO 單元280 (管2),而高半運算(hi hop)被提供到上端數據路徑250,也就是執行的FPAHI/ MMAHI 單元 256 (管 0)、FPMHI/MMMHI/IMMHI 單元 258 (管 1)與 STCHI 單元 260 (管 2)。來自可被執行在STC126里面的STC單元260和280的數據被提供到LS單元132。 當FPU緩存器檔案124包含FPRrai 252和FPRFL0272時,在LS單元132里的加載數據經 由轉換器262、264、282和284被提供到FPU緩存器檔案124。轉換器262、264、282和284 被提供來將加載數據從64位數據轉換成為例如90位數據。來自上端數據路徑250里的管 O和管1的適當單元的結果數據分別被多任務器266和268來選擇。同樣地,來自下端數據 路徑270里的管0和管1的適當單元的結果數據分別被多任務器286和288來選擇。移動到圖3,計算機系統300被圖標為包含可包括根據圖1、圖2所示的處理器而 組構的一個或多個處理器的處理器302。處理器302被耦接到包含應用適當數量的依電性 存儲器和非依電性存儲器的存儲器子系統304。處理器也被耦接到例如鼠標、鍵盤等等的輸 入器件302以及例如液晶顯示器(IXD)的顯示器。轉到圖4,顯示用來決定指令如何被譯碼 的譯碼例程(routine) 400。在方塊402例程400被起始,其指向控制轉移到于方塊404,方 塊404提取一個或多個指令。接著,在決定方塊406里決定例如緩存器之指示器是否被確 立。如果指示器被確立將控制從方塊406轉移到方塊408,則被提取的指令將當作單一運算 來被譯碼。在方塊408之后,控制轉移到例程400結束的方塊412。當在方塊406里指示器 沒有確立時,控制轉移到方塊410,于此被提取的指令將被譯碼為多重運算。在方塊410之 后,控制轉移到方塊412。因此,在此已經揭露的技術允許被提取的指令被譯碼成為單一運算或多重運算。 舉例來說,128位指令可依據指示器被譯碼成為單一 128位運算或兩個64位運算。本發明的其它實施例、使用和優點對于熟悉此項技術者在思考過說明書與實行在 此揭露的本發明后是顯而易見的。說明書與圖式應該了解為只是示范性質,本發明的范圍 將只限制在下列的申請專利范圍與其均等物中。
權利要求
一種方法,包括決定步驟,決定處理器的浮點單元(FPU)是要運作在全位模式或減少的位模式(406);提取步驟,提取指令(404);以及譯碼步驟,依據該決定,將該指令譯碼成為單一運算或多重運算(408)。
2.如權利要求1所述的方法,其中,該決定步驟進一步包括依據指示器決定該處理器是要運作在該全位模式或該減少的位模式(406)。
3.如權利要求1所述的方法,其中,該指令為128位指令,該全位模式為128位模式,且 該減少的位模式為64位模式,以及該決定步驟進一步包括決定該處理器是要運作在該128位模式或該64位模式。
4.如權利要求3所述的方法,其中,該譯碼步驟進一步包括依據該決定將該128位指令譯碼成為用于該128位模式的一個運算或用于該64位模 式的兩個運算。
5.如權利要求1所述的方法,其中,該單一運算對應于一個128位運算,而該多重運算 對應于兩個64位運算。
6.一種處理器,包括 指示器(110);譯碼器(106),耦接到該指示器(110),其中,該譯碼器(106)依據該指示器將指令譯碼 成為單一運算或多重運算;以及浮點單元(FPU) (120),耦接到該譯碼器(106),其中,該浮點單元(FPU) (120)依據該指 示器來開始在一個處理器周期中執行該單一運算或在一個或多個處理器周期中執行該多重運算。
7.如權利要求6所述的處理器,其中,該指令為128位指令,且該譯碼器(106)依據該 指示器將該128位指令譯碼成為對應于128位運算的該單一運算或對應于兩個64位運算 的該多重運算。
8.如權利要求6所述的處理器,其中,該多重運算包含兩個運算,且該浮點單元(FPU) (120)進一步包括下端數據路徑(270),其中,該下端數據路徑(270)開始在一個或多個處理器周期中執 行該兩個運算。
9.如權利要求6所述的處理器,其中,該浮點單元(FPU)(120)進一步包括 上端數據路徑(250),執行該單一運算的第一半;以及下端數據路徑(270),執行該單一運算的第二半。
10.如權利要求9所述的處理器,進一步包括共享控制區域(212、220、230),耦接到該上端數據路徑(250)和該下端數據路徑 (270)。
全文摘要
一種運作處理器(100)的技術,包括決定處理器的浮點單元(FPU)(120)是要運作在全位模式(full-bit mode)或是在減少的位模式(reduced-bit mode)中。當指示為全位模式時,指令被提取且指令被譯碼成為單一運算,或當指示為減少的位模式時,譯碼成為多重運算。
文檔編號G06F9/30GK101802779SQ200880012791
公開日2010年8月11日 申請日期2008年2月28日 優先權日2007年2月28日
發明者A·艾哈邁德, J·伊利克, K·D·戈維亞斯, M·克拉克 申請人:先進微裝置公司