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

      雙舍入組合浮點乘法和加法

      文檔序號:6534151閱讀:264來源:國知局
      雙舍入組合浮點乘法和加法
      【專利摘要】公開了將雙舍入組合浮點乘法和加法功能作為標量或向量SIMD指令或融合的微操作來提供的方法、裝置、指令和邏輯。實施例包括檢測浮點(FP)乘法操作和將FP乘法的結果指定為源操作數(shù)的后續(xù)的FP操作。FP乘法和后續(xù)的FP操作被編碼為組合FP操作,包括對FP乘法的結果的舍入和隨后的后續(xù)的FP操作。所述組合的FP操作的編碼可被存儲并利用融合的乘法-加法硬件來執(zhí)行以作為可執(zhí)行線程部分的一部分,該融合的乘法-加法硬件包括對FP乘法器的乘積的溢出檢測、用于基于FP乘法器的乘積中存在溢出或無溢出而利用不同的舍入輸入將第三操作數(shù)加數(shù)尾數(shù)與FP乘法器的乘積相加的第一和第二FP加法器。分別利用溢出檢測來選擇最終結果。
      【專利說明】雙舍入組合浮點乘法和加法

      【技術領域】
      [0001] 本公開涉及處理邏輯、微處理器W及相關聯(lián)的指令集架構的領域,該指令集架構 在被處理器或其他處理邏輯所執(zhí)行時運行邏輯、數(shù)學或其他功能性操作。具體地,本公開涉 及用于提供雙舍入組合浮點乘法和加法功能的指令和邏輯。

      【背景技術】
      [0002] 目前的諸多處理器通常包括用于提供計算密集型操作但提供高度數(shù)據(jù)并行性的 指令,該些指令可通過使用多種數(shù)據(jù)存儲設備的高效實現(xiàn)來使用,該些數(shù)據(jù)存儲設備諸如: 單指令多數(shù)據(jù)(SIMD)向量寄存器。在一些替代處理器中,指令可提供融合的操作,諸如乘 法一加法操作。在一些替代的處理器中,可在單獨的指令中提供該兩種類型的指令和/或 該兩種類型的組合,諸如例如SIMD乘法一加法操作。
      [0003] 過去的一些處理器已經(jīng)實現(xiàn)了用于執(zhí)行融合的浮點乘法一加法操作的指令。例 女口,在1990, IBM在RISC系統(tǒng)6000 (IBM RS/6000)處理器上實現(xiàn)了融合的浮點乘法一加法 操作。例如,涉及點積計算的一些應用可利用該些新指令來改進性能。但是,因為支持此類 操作的浮點硬件的寬度可能是標準浮點乘法器和加法器的寬度的至少兩倍,所W-個浮點 乘法一加法器會占用兩個浮點乘法器和兩個浮點加法器那樣多的區(qū)域。因此,融合的浮點 乘法一加法器可能完全取代單獨的浮點乘法器和浮點加法器,并且融合的浮點乘法一加法 器可能用于仿真單個浮點乘法和/或單個浮點加法,但犧牲了一些(有可能是顯著的)性 能。對于未經(jīng)重新編譯的傳統(tǒng)應用,或對于無法利用融合的浮點乘法一加法操作的應用,存 在(有可能是顯著的)性能降級。
      [0004] 過去的一些其它處理器已經(jīng)實現(xiàn)了用于幾乎執(zhí)行融合的浮點乘法一加法操作的 指令。例如,在2001,HAL SPARC64通過將來自浮點乘法器的結果旁路至浮點加法器而實現(xiàn) 了偽代碼融合的浮點乘法一加法操作。雖然該方法不會遭受未重新編譯的傳統(tǒng)應用或無法 利用融合的浮點乘法一加法操作的應用遇到的相同的性能降級,但浮點乘法器、旁路和浮 點加法器的寬度不足W提供與真正的融合浮點乘法一加法操作相同的改進準確度。
      [0005] 在2008,電氣與電子工程師協(xié)會(I邸巧發(fā)布了修改的浮點標準IE邸Std 754?-1985, I邸E Std 754-2008,其包括融合的乘法一加法(FMA)和融合的乘法一減法 (FM巧操作。該IE邸標準規(guī)定了不在乘法與加法之間進行舍入的情況下的真正的IE邸融 合的浮點乘法一加法操作的改進準確度。雖然標準化無疑將會促使提供IEEE FMA和FMS 操作的新處理器的出現(xiàn),但之前提及的性能降級和增加管芯面積的問題仍存在。
      [0006] 迄今為止,尚未充分探索對此類性能受限問題、面積折衷問題W及相關的功率問 題和對重新編譯的需求的潛在解決方案。

      【專利附圖】

      【附圖說明】
      [0007] 在附圖的各圖中通過示例而非限制地示出本發(fā)明。
      [0008] 圖IA是執(zhí)行用于提供雙舍入組合浮點乘法和加法功能的指令的系統(tǒng)的一個實施 例的框圖。
      [0009] 圖IB是執(zhí)行用于提供雙舍入組合浮點乘法和加法功能的指令的系統(tǒng)的另一實施 例的框圖。
      [0010] 圖IC是執(zhí)行用于提供雙舍入組合浮點乘法和加法功能的指令的系統(tǒng)的另一實施 例的框圖。
      [0011] 圖2是執(zhí)行用于提供雙舍入組合浮點乘法和加法功能的指令的處理器的一個實 施例的框圖。
      [0012] 圖3A示出根據(jù)一個實施例的打包數(shù)據(jù)類型。
      [0013] 圖3B示出根據(jù)一個實施例的打包數(shù)據(jù)類型。
      [0014] 圖3C示出根據(jù)一個實施例的打包數(shù)據(jù)類型。
      [0015] 圖3D示出根據(jù)一個實施例的用于提供雙舍入組合浮點乘法和加法功能的指令編 碼。
      [0016] 圖3E示出根據(jù)另一實施例的用于提供雙舍入組合浮點乘法和加法功能的指令編 碼。
      [0017] 圖3F示出根據(jù)另一實施例的用于提供雙舍入組合浮點乘法和加法功能的指令編 碼。
      [0018] 圖3G示出根據(jù)另一實施例的用于提供雙舍入組合浮點乘法和加法功能的指令編 碼。
      [0019] 圖3H示出根據(jù)另一實施例的用于提供雙舍入組合浮點乘法和加法功能的指令編 碼。
      [0020] 圖4A示出用于執(zhí)行提供雙舍入組合浮點乘法和加法功能的指令的處理器微架構 的一個實施例的要素。
      [0021] 圖4B示出用于執(zhí)行提供雙舍入組合浮點乘法和加法功能的指令的處理器微架構 的另一實施例的要素。
      [0022] 圖5是用于執(zhí)行提供雙舍入組合浮點乘法和加法功能的指令的處理器的一個實 施例的框圖。
      [0023] 圖6是用于執(zhí)行提供雙舍入組合浮點乘法和加法功能的指令的計算機系統(tǒng)的一 個實施例的框圖。
      [0024] 圖7是用于執(zhí)行提供雙舍入組合浮點乘法和加法功能的指令的計算機系統(tǒng)的另 一實施例的框圖。
      [00巧]圖8是用于執(zhí)行提供雙舍入組合浮點乘法和加法功能的指令的計算機系統(tǒng)的另 一實施例的框圖。
      [0026] 圖9是用于執(zhí)行提供雙舍入組合浮點乘法和加法功能的指令的芯片上系統(tǒng)的一 個實施例的框圖。
      [0027] 圖10是用于執(zhí)行提供雙舍入組合浮點乘法和加法功能的指令的處理器的一個實 施例的框圖。
      [0028] 圖11是提供雙舍入組合浮點乘法和加法功能的IP核開發(fā)系統(tǒng)的一個實施例的框 圖。
      [0029] 圖12示出提供雙舍入組合浮點乘法和加法功能的架構仿真系統(tǒng)的一個實施例。
      [0030] 圖13示出用于轉換提供雙舍入組合浮點乘法和加法功能的指令的系統(tǒng)的一個實 施例。
      [0031] 圖14A示出用于執(zhí)行提供雙舍入組合浮點乘法和加法功能的指令的裝置的一個 實施例。
      [0032] 圖14B示出用于執(zhí)行提供雙舍入組合浮點乘法和加法功能的指令的裝置的另一 實施例。
      [0033] 圖15示出用于提供雙舍入組合浮點乘法和加法(或減法或轉換)功能的過程的 一個實施例的流程圖。
      [0034] 圖16A示出用于提供雙舍入組合浮點乘法和加法功能的過程的替代實施例的流 程圖。
      [00巧]圖16B示出用于提供雙舍入組合浮點乘法和減法功能的過程的替代實施例的流 程圖。

      【具體實施方式】
      [0036] W下描述公開了用于在處理器、計算機系統(tǒng)或其它處理裝置之內(nèi)或與處理器、計 算機系統(tǒng)或其它處理裝置相關聯(lián)地提供雙舍入組合浮點乘法和加法功能的指令和處理邏 輯。利用單獨的浮點(F巧乘法操作和后續(xù)的加法操作來編寫的算法可預期在每個操作中 對結果的IEEE兼容的舍入。因此,例如,即使存在可用于對融合的FP乘法一加法操作進行 計算的硬件,僅利將成對的乘法和加法替換為融合的FP乘法一加法操作可能不總是令人 滿意。
      [0037] 本申請中公開的新穎方法、裝置、指令和邏輯將雙舍入組合浮點乘法和加法、乘法 和減法、或乘法和轉換提供作為標量或向量SIMD指令或融合的微操作。一些方法實施例包 括檢測FP乘法操作和后續(xù)的FP操作(例如諸如加法、減法或轉換),該些操作將FP乘法 的結果指定為源操作數(shù)。FP乘法和后續(xù)的FP操作被融合并編碼為組合的FP操作,包括在 應用后續(xù)FP操作之前對FP乘法的結果進行舍入。通過重新編譯或通過運行時間的動態(tài)融 合,組合的浮點乘法和加法(或減法,或轉換)操作可被用于代替單獨的乘法和加法(或減 法,或轉換)指令,由此減少等待時間并提高指令執(zhí)行效率。
      [0038] 可存儲所述組合的FP操作的編碼,并利用融合的乘法一加法硬件將該編碼作為 可執(zhí)行線程部分的一部分來執(zhí)行,該融合的乘法一加法硬件包括;對FP乘法器的乘積的溢 出檢測、用于基于FP乘法器的乘積中的溢出或無溢出利用不同的舍入輸入將第H操作數(shù) 加數(shù)尾數(shù)與FP乘法器的乘積相加的第一和第二FP加法器。然后利用來自溢出檢測的溢出 信號相應地選擇最終結果。
      [0039] 因此,通過重新編譯或通過軟件轉換或硬件中的運行時的動態(tài)融合,可減少等待 時間并提高指令執(zhí)行效率。
      [0040] 在W下描述中,陳述了諸如處理邏輯、處理器類型、微架構狀況、事件、啟用機制等 多種特定細節(jié),W提供對本發(fā)明實施例的更透徹理解。然而,本領域技術人員應當領會,沒 有該些具體細節(jié)也可實踐本發(fā)明。此外,沒有詳細示出一些公知的結構、電路等等,W避免 不必要地模糊本發(fā)明的實施例。
      [0041] 雖然下述的諸個實施例參照處理器來描述,但其他實施例也適用于其他類型的集 成電路和邏輯設備。本發(fā)明的實施例的類似技術和教導可應用于其它類型的電路或半導體 器件,該些其它類型的電路或半導體器件也可受益于更高的流水線吞吐量和提高的性能。 本發(fā)明的諸個實施例的教導適用于執(zhí)行數(shù)據(jù)操縱的任何處理器或機器。然而,本發(fā)明不限 于執(zhí)行512位、256位、128位、64位、32位、或16位數(shù)據(jù)運算的處理器或機器,并可適用于 執(zhí)行數(shù)據(jù)操縱或管理的任何處理器和機器。此外,下述描述提供了示例,并且附圖出于示意 性目的示出了多個示例。然而,該些示例不應該被理解為具有限制性目的,因為它們僅僅旨 在提供本發(fā)明的諸個實施例的示例,而并非對本發(fā)明的實施例的所有可能實現(xiàn)方式進行窮 舉。
      [0042] 雖然下述的示例描述了在執(zhí)行單元和邏輯電路情況下的指令處理和分配,但本發(fā) 明的其他實施例也可通過存儲在機器可讀有形介質上的數(shù)據(jù)或指令來完成,該些數(shù)據(jù)或指 令在被機器執(zhí)行時使得機器執(zhí)行與本發(fā)明至少一個實施例相一致的功能。在一個實施例 中,與本發(fā)明的實施例相關聯(lián)的功能被具體化在機器可執(zhí)行指令中。該些指令可用來使通 過該些指令編程的通用處理器或專用處理器執(zhí)行本發(fā)明的步驟。本發(fā)明的諸個實施例也可 W作為計算機程序產(chǎn)品或軟件來提供,該計算機程序產(chǎn)品或軟件可包括其上存儲有指令的 機器或計算機可讀介質,該些指令可被用來對計算機(或其他電子設備)進行編程來執(zhí)行 根據(jù)本發(fā)明的實施例的一個或多個操作。另選地,本發(fā)明的諸個實施例的該些步驟可由包 含用于執(zhí)行該些步驟的固定功能邏輯的專用硬件組件來執(zhí)行,或由經(jīng)編程的計算機組件W 及固定功能硬件組件的任何組合來執(zhí)行。
      [0043] 被用于對邏輯進行編程W執(zhí)行本發(fā)明的諸個實施例的指令可被存儲在系統(tǒng)中的 存儲器(諸如,DRAM、高速緩存、閃存、或其他存儲器)內(nèi)。進一步的,指令可經(jīng)由網(wǎng)絡或其 他計算機可讀介質來分發(fā)。因此,計算機可讀介質可包括用于W機器(諸如,計算機)可讀 的格式存儲或發(fā)送信息的任何機制,但不限于:軟盤、光盤、致密盤只讀存儲器(CD-ROM)、 磁光盤、只讀存儲器(ROM)、隨機存取存儲器(RAM)、可擦除可編程只讀存儲器巧PROM)、電 可擦除可編程只讀存儲器巧EPROM)、磁卡或光卡、閃存、或在經(jīng)由互聯(lián)網(wǎng)通過電、光、聲、或 其他形式的傳遞信號(諸如,載波、紅外信號、數(shù)字信號等)發(fā)送信息中所用的有形機器可 讀存儲器。因此,計算機可讀介質包括用于存儲或發(fā)送機器(例如,計算機)可讀形式的電 子指令或信息的任何類型的有形機器可讀介質。
      [0044] 設計會經(jīng)歷多個階段,從創(chuàng)新到模擬到制造。表示設計的數(shù)據(jù)可用多種方式來表 示該設計。首先,如模擬中將有用的,可使用硬件描述語言或其他功能性描述語言來表示硬 件。此外,具有邏輯和/或晶體管口電路的電路級模型可在設計流程的其他階段產(chǎn)生。此 夕F,大多數(shù)設計在某些階段都到達表示硬件模型中多種設備的物理配置的數(shù)據(jù)水平。在使 用常規(guī)半導體制造技術的情況下,表示硬件模型的數(shù)據(jù)可W是在不同掩模層上對用于生成 集成電路的掩模指示不同特征的存在與否的數(shù)據(jù)。在任何的設計表示中,數(shù)據(jù)可被存儲在 任何形式的機器可讀介質中。存儲器或磁/光存儲器(諸如,盤)可W是存儲信息的機器 可讀介質,該些信息是經(jīng)由光學或電學波來發(fā)送的,該些光學或電學波被調制或W其他方 式生成W傳送該些信息。當發(fā)送指示或承載代碼或設計的電學載波時,執(zhí)行電信號的復制、 緩沖或重傳情況時,制作一個新的副本。因此,通信提供商或網(wǎng)絡提供商會在有形機器可讀 介質上至少臨時地存儲具體化本發(fā)明的諸個實施例的技術的物品(諸如,編碼在載波中的 信息)。
      [0045] 在現(xiàn)代處理器中,多個不同執(zhí)行單元被用于處理和執(zhí)行多種代碼和指令。并不是 所有指令都被同等地創(chuàng)建,因為其中有一些更快地被完成而另一些需要多個時鐘周期來完 成。指令的吞吐量越快,則處理器的總體性能越好。因此,使大量指令盡可能快地執(zhí)行將會 是有利的。然而,某些指令具有更大的復雜度,并需要更多的執(zhí)行時間和處理器資源。例如, 存在浮點指令、加載/存儲操作、數(shù)據(jù)移動等等。
      [0046] 因為更多的計算機系統(tǒng)被用于互聯(lián)網(wǎng)、文本W(wǎng)及多媒體應用,所W逐漸地引進更 多的處理器支持。在一個實施例中,指令集可與一個或多個計算機架構相關聯(lián),一個或多個 計算機架構包括數(shù)據(jù)類型、指令、寄存器架構、尋址模式、存儲器架構、中斷和異常處理W及 外部輸入輸出(I/O)。
      [0047] 在一個實施例中,指令集架構(ISA)可由一個或更多微架構來實現(xiàn),微架構包括 用于實現(xiàn)一個或多個指令集的處理器邏輯和電路。因此,具有不同微架構的諸個處理器可 共享公共指令集的至少一部分。例如,INTEL?奔騰四(Pentium 4)處理器、Intel;底酷 眷(Core?)處理器、W及來自加利福尼亞州桑尼威爾(Sunnyvale)的超微半導體有限公司 (Advanced Micro Devices, Inc.)的諸多處理器執(zhí)行幾乎相同版本的x86指令集(在更新 的版本中加入了一些擴展),但具有不同的內(nèi)部設計。類似地,由其他處理器開發(fā)公司(諸 如,ARM控股有限公司、MIPS或它們的授權方或兼容方)所設計的諸多處理器可共享至少一 部分公共指令集,但可包括不同的處理器設計。例如,ISA的相同寄存器架構在不同的微架 構中可使用新的或已知的技術W不同方法來實現(xiàn),包括專用物理寄存器、使用寄存器重命 名機制(諸如,使用寄存器別名表RAT、重排序緩沖器ROB、W及引退寄存器組)的一個或多 個動態(tài)分配物理寄存器。在一個實施例中,寄存器可包括;可由軟件編程者尋址或不可尋址 的一個或多個寄存器、寄存器架構、寄存器組、或其他寄存器集合。
      [0048] 在一個實施例中,指令可包括一個或多個指令格式。在一個實施例中,指令格式可 指示多個字段(位的數(shù)目、位的位置等)W特別指定將要被執(zhí)行的操作W及將要被執(zhí)行的 操作的操作數(shù)。一些指令格式可進一步被指令模板(或子格式)所細分定義。例如,給定 指令格式的指令模板可被定義為具有指令格式字段的不同的子集,和/或被定義為具有不 同解釋的給定字段。在一個實施例中,使用指令格式(并且,如果定義過,則W該指令格式 的一個給定指令模板)來表示指令,并且該指令指定或指示操作W及該操作將操作的操作 數(shù)。
      [0049] 科學應用、金融應用、自動向量化通用應用、MS (識別、挖掘和合成)應用W及視 覺和多媒體應用(諸如,2D/3D圖形、圖像處理、視頻壓縮/解壓縮、語音識別算法和音頻處 理)可能需要對大量數(shù)據(jù)項執(zhí)行相同的操作。在一個實施例中,單指令多數(shù)據(jù)(SIMD)指的 是使得處理器在多個數(shù)據(jù)元素上執(zhí)行一操作的一種類型的指令。SIMD技術可被用于處理器 中,該些處理器將寄存器中的諸個位化it)邏輯地劃分入多個固定尺寸或可變尺寸的數(shù)據(jù) 元素,每個數(shù)據(jù)元素表示單獨的值。例如,在一個實施例中,64位寄存器中的諸個位可被組 織為包含四個單獨的16位數(shù)據(jù)元素的源操作數(shù),每個數(shù)據(jù)元素表示單獨的16位值。該數(shù) 據(jù)類型可被稱為"打包"數(shù)據(jù)類型或"向量"數(shù)據(jù)類型,并且該數(shù)據(jù)類型的操作數(shù)被稱為打 包數(shù)據(jù)操作數(shù)或向量操作數(shù)。在一個實施例中,打包數(shù)據(jù)項或向量可W是存儲在單個寄存 器中的打包數(shù)據(jù)元素的序列,并且打包數(shù)據(jù)操作數(shù)或向量操作數(shù)可W是SIMD指令(或"打 包數(shù)據(jù)指令"或"向量指令")的源操作數(shù)或目的地操作數(shù)。在一個實施例中,SIMD指令指 定了將要對兩個源向量操作數(shù)執(zhí)行的單個向量操作,W生成具有相同或不同尺寸的、具有 相同或不同數(shù)量的數(shù)據(jù)元素的、具有相同或不同數(shù)據(jù)元素次序的目的地向量操作數(shù)(也被 稱為結果向量操作數(shù))。
      [0050] 諸如由Intel⑥酷眷(Core?)處理器(具有包括x86、MMX?、流SIMD擴展(SSE)、 SSE2、SSE3、SSE4. 1、SSE4. 2指令的指令集)、ARM處理器(諸如,ARM Cortex化處理器族, 具有包括向量浮點(VF巧和/或NEON指令的指令集)、MIPS處理器(諸如,中國科學院計 算機技術研究所(ICT)開發(fā)的龍芯處理器族)所使用的SIMD技術之類的SIMD技術在應用 性能上帶來了極大的提高(Core?和MMX?是加利福尼亞州圣克拉拉市的英特爾公司的注冊 商標或商標)。
      [0051] 在一個實施例中,目的地寄存器/數(shù)據(jù)和源寄存器/數(shù)據(jù)是表示對應數(shù)據(jù)或操作 的源和目的地的通用術語。在一些實施例中,它們可由寄存器、存儲器或具有與所示出的那 些名稱或功能不同的名稱或功能的其他存儲區(qū)域所實現(xiàn)。例如,在一個實施例中,"DEST1" 可W是臨時存儲寄存器或其他存儲區(qū)域,而"SRCl"和"SRC2"是第一和第二源存儲寄存器 或其他存儲區(qū)域,等等。在其他實施例中,SRC和DEST存儲區(qū)域中的兩個或更多區(qū)域可對 應于相同存儲區(qū)域中的不同數(shù)據(jù)存儲元素(例如,SIMD寄存器)。在一個實施例中,例如通 過將對第一和第二源數(shù)據(jù)執(zhí)行的操作的結果寫回至兩個源寄存器中作為目的地寄存器的 那個寄存器,源寄存器中的一個也可W作為目的地寄存器。
      [0052] 圖IA是根據(jù)本發(fā)明的一個實施例的示例性計算機系統(tǒng)的框圖,具有包括執(zhí)行 單元W執(zhí)行指令的處理器。根據(jù)本發(fā)明,諸如根據(jù)在此所描述的實施例,系統(tǒng)100包括 諸如處理器102之類的組件,W采用包括邏輯的執(zhí)行單元來執(zhí)行算法W處理數(shù)據(jù)。系統(tǒng) 100代表基于可從美國加利福尼亞州圣克拉拉市的英特爾公司獲得的PENTIUM"' m、 PENTIUM電 4、Xeontm、Itanium必、XScaletm 矛口 / 或 StrongARlfm 微處理器的處理系統(tǒng),不 過也可使用其它系統(tǒng)(包括具有其它微處理器的PC、工程工作站、機頂盒等)。在一個實施 例中,樣本系統(tǒng)100可執(zhí)行可從美國華盛頓州雷蒙德市的微軟公司買到的WINDOWStu操作系 統(tǒng)的一個版本,不過也可使用其它操作系統(tǒng)(例如UNIX和Linux)、嵌入式軟件、和/或圖形 用戶界面。因此,本發(fā)明的各實施例不限于硬件和軟件的任何具體組合。
      [0053] 實施例不限于計算機系統(tǒng)。本發(fā)明的替換實施例可被用于其他設備,諸如手持式 設備和嵌入式應用。手持式設備的一些示例包括:蜂窩電話、互聯(lián)網(wǎng)協(xié)議設備、數(shù)碼相機、個 人數(shù)字助理(PDA)、手持式PC。嵌入式應用可包括;微控制器、數(shù)字信號處理器值SP)、芯片 上系統(tǒng)、網(wǎng)絡計算機(NetPC)、機頂盒、網(wǎng)絡中樞、廣域網(wǎng)(WAN)交換機、或可執(zhí)行參照至少 一個實施例的一個或多個指令的任何其他系統(tǒng)。
      [0054] 圖IA是計算機系統(tǒng)100的框圖,計算機系統(tǒng)100被形成為具有處理器102,處理 器102包括一個或多個執(zhí)行單元108 W執(zhí)行算法,W執(zhí)行根據(jù)本發(fā)明的一個實施例的至少 一個指令。參照單處理器桌面或服務器系統(tǒng)來描述了一個實施例,但替代實施例可被包括 在多處理器系統(tǒng)中。系統(tǒng)100是"中樞"系統(tǒng)架構的示例。計算機系統(tǒng)100包括處理器102 W處理數(shù)據(jù)信號。處理器102可W是復雜指令集計算機(CISC)微處理器、精簡指令集計算 巧ISC)微處理器、超長指令字(VLIW)微處理器、實現(xiàn)指令集組合的處理器或任意其它處理 器設備(諸如數(shù)字信號處理器)。處理器102禪合至處理器總線110,處理器總線110可在 處理器102和系統(tǒng)100內(nèi)的其他組件之間傳輸數(shù)據(jù)信號。系統(tǒng)100的諸個元素執(zhí)行本領域 所熟知的常規(guī)功能。
      [00巧]在一個實施例中,處理器102包括第一級(LI)內(nèi)部高速緩存存儲器104。取決于 架構,處理器102可具有單個內(nèi)部高速緩存或多級內(nèi)部高速緩存。或者,在另一個實施例 中,高速緩存存儲器可位于處理器102的外部。其他實施例也可包括內(nèi)部高速緩存和外部 高速緩存的組合,該取決于特定實現(xiàn)和需求。寄存器組106可在多個寄存器(包括整數(shù)寄 存器、浮點寄存器、狀態(tài)寄存器、指令指針寄存器)中存儲不同類型的數(shù)據(jù)。
      [0056] 執(zhí)行單元108 (包括執(zhí)行整數(shù)和浮點操作的邏輯)也位于處理器102中。處理器 102還包括微代碼(UCOde) ROM,其存儲用于特定宏指令的微代碼。對于一個實施例,執(zhí)行單 元108包括處理打包指令集109的邏輯。通過將打包指令集109包括在通用處理器102的 指令集內(nèi)并包括相關的電路W執(zhí)行該些指令,可使用通用處理器102中的打包數(shù)據(jù)來執(zhí)行 許多多媒體應用所使用的操作。因此,通過將處理器數(shù)據(jù)總線的全帶寬用于對打包數(shù)據(jù)進 行操作,許多多媒體應用可獲得加速,并更為有效率地執(zhí)行。該能減少在處理器數(shù)據(jù)總線上 傳輸更小數(shù)據(jù)單元W在一個時間對一個數(shù)據(jù)元素執(zhí)行一個或多個操作的需要。
      [0057] 執(zhí)行單元108的替換實施例也可被用于微控制器、嵌入式處理器、圖形設備、DSP W及其他類型的邏輯電路。系統(tǒng)100包括存儲器120。存儲器設備120可W是動態(tài)隨機存 取存儲器值RAM)設備、靜態(tài)隨機存取存儲器(SRAM)設備、閃存設備或其他存儲器設備。存 儲器120可存儲可由處理器102執(zhí)行的指令和/或數(shù)據(jù),數(shù)據(jù)由數(shù)據(jù)信號表示。
      [005引系統(tǒng)邏輯芯片116禪合至處理器總線110和存儲器120。在所示出的實施例中的 系統(tǒng)邏輯芯片116是存儲器控制器中樞(MCH)。處理器102可經(jīng)由處理器總線110與MCH 116通信。MCH 116提供至存儲器120的高帶寬存儲器路徑118,用于指令和數(shù)據(jù)存儲,W及 用于存儲圖形命令、數(shù)據(jù)和紋理。MCH 116用于引導處理器102、存儲器120 W及系統(tǒng)100 內(nèi)的其他組件之間的數(shù)據(jù)信號,并在處理器總線110、存儲器120和系統(tǒng)I/O 122之間橋接 數(shù)據(jù)信號。在一些實施例中,系統(tǒng)邏輯芯片116可提供禪合至圖形控制器112的圖形端口。 MCH 116經(jīng)由存儲器接口 118禪合至存儲器120。圖形卡112通過加速圖形端口(AGP)互 連114禪合至MCH 116。
      [0059] 系統(tǒng)100使用外圍設備中樞接口總線122 W將MCH 116禪合至I/O控制器中樞 (ICH) 130。ICH 130經(jīng)由局部I/O總線提供至一些I/O設備的直接連接。局部I/O總線是 高速I/O總線,用于將外圍設備連接至存儲器120、芯片組W及處理器102。一些示例是音 頻控制器、固件中樞(閃存BIO巧128、無線收發(fā)機126、數(shù)據(jù)存儲器124、包括用戶輸入和鍵 盤接口的傳統(tǒng)I/O控制器、串行擴展端口(諸如通用串行總線USB) W及網(wǎng)絡控制器134。 數(shù)據(jù)存儲設備124可W包括硬盤驅動器、軟盤驅動器、CD-ROM設備、閃存設備、或其他大容 量存儲設備。
      [0060] 對于系統(tǒng)的另一個實施例,根據(jù)一個實施例的指令可被用于芯片上系統(tǒng)。芯片上 系統(tǒng)的一個實施例包括處理器和存儲器。用于該樣一個系統(tǒng)的存儲器是閃存存儲器。閃存 存儲器可位于與處理器和其他系統(tǒng)組件相同的管芯上。此外,諸如存儲器控制器或圖形控 制器之類的其他邏輯塊也可位于芯片上系統(tǒng)上。
      [0061] 圖IB示出數(shù)據(jù)處理系統(tǒng)140,數(shù)據(jù)處理系統(tǒng)140實現(xiàn)本發(fā)明的一個實施例的原理。 本領域的技術人員將容易理解,在此描述的諸個實施例可用于替代處理系統(tǒng),而不背離本 發(fā)明的實施例的范圍。
      [0062] 計算機系統(tǒng)140包括處理核159,處理核159能執(zhí)行根據(jù)一個實施例的至少一個 指令。對于一個實施例,處理核159表示任何類型的架構的處理單元,包括但不限于;CISC、 RISC或化IW類型架構。處理核159也可適于W-種或多種處理技術來制造,并且通過充分 詳細地表示在機器可讀介質上可W便于其制造。
      [0063] 處理核159包括執(zhí)行單元142、一組寄存器組145 W及解碼器144。處理核159也 包括對于理解本發(fā)明的實施例不是必需的額外電路(沒有示出)。執(zhí)行單元142用于執(zhí)行 處理核159所接收到的指令。除了執(zhí)行典型的處理器指令外,執(zhí)行單元142也能執(zhí)行打包 指令集143中的指令,用于對打包數(shù)據(jù)格式執(zhí)行操作。打包指令集143包括用于執(zhí)行本發(fā) 明的諸個實施例的指令W及其他打包指令。執(zhí)行單元142通過內(nèi)部總線而禪合至寄存器組 145。寄存器組145表示處理核159上的存儲區(qū)域,用于存儲包括數(shù)據(jù)的信息。如前所述的, 可W理解,該存儲區(qū)域被用于存儲打包數(shù)據(jù)不是關鍵。執(zhí)行單元142禪合至解碼器144。解 碼器144用于將處理核159所接收到的指令解碼為控制信號和/或微代碼進入點。響應于 該些控制信號和/或微代碼進入點,執(zhí)行單元142執(zhí)行合適的操作。在一個實施例中,解碼 器用于解釋指令的操作碼,操作碼指示應當對該指令內(nèi)所指示的對應數(shù)據(jù)執(zhí)行何種操作。
      [0064] 處理核159禪合至總線141,用于與多個其他系統(tǒng)設備進行通信,該些系統(tǒng)設備 包括但不限于:例如,同步動態(tài)隨機存取存儲器(SDRAM)控制器146、靜態(tài)隨機存取存儲器 (SRAM)控制器147、巧發(fā)閃存接口 148、個人計算機存儲卡國際協(xié)會(PCMCIA)/致密閃存 (C巧卡控制器149、液晶顯示器(LCD)控制器150、直接存儲器存?。―MA)控制器151、W及 替代的總線主接口 152。在一個實施例中,數(shù)據(jù)處理系統(tǒng)140也包括I/O橋154,用于經(jīng)由 I/O總線153與多個I/O設備進行通信。該樣的I/O設備可包括但不限于:例如,通用異步 接收機/發(fā)射機扣ART) 155、通用串行總線(USB) 156、藍牙無線UART 157、W及I/O擴展接 n 158。
      [0065] 數(shù)據(jù)處理系統(tǒng)140的一個實施例提供了移動通信、網(wǎng)絡通信和/或無線通信,并提 供了能夠執(zhí)行SIMD操作的處理核159, SIMD操作包括向量混合和置換功能。處理核159可 編程有多種音頻、視頻、圖像和通信算法,包括離散變換(諸如Walsh-Hadamard變換、快速 傅立葉變換(FFT)、離散余弦變換值CT)、W及它們相應的逆變換)、壓縮/解壓縮技術(諸 如色彩空間變換)、視頻編碼運動估計或視頻解碼運動補償、W及調制/解調(MODEM)功能 (諸如脈沖編碼調制PCM)。
      [0066] 圖IC示出了能夠執(zhí)行用于提供雙舍入組合浮點乘法和加法功能的指令的數(shù)據(jù)處 理系統(tǒng)的其他替代實施例。根據(jù)一個替代實施例,數(shù)據(jù)處理系統(tǒng)160可包括主處理器166、 SIMD協(xié)處理器161、高速緩存處理器167 W及輸入/輸出系統(tǒng)168。輸入/輸出系統(tǒng)168可 選地禪合至無線接口 169。SIMD協(xié)處理器161能夠執(zhí)行包括根據(jù)一個實施例的指令的操作。 處理核170可適于W-種或多種處理技術來制造,并且通過充分詳細地表示在機器可讀介 質上可W便于包括處理核170的數(shù)據(jù)處理系統(tǒng)160的全部或一部分的制造。
      [0067] 對于一個實施例,SIMD協(xié)處理器161包括執(zhí)行單元162 W及一組寄存器組164。主 處理器166的一個實施例包括解碼器165,用于識別指令集163的指令,指令集163包括根 據(jù)一個實施例的用于由執(zhí)行單元162所執(zhí)行的指令。對于替換實施例,SIMD協(xié)處理器161 也包括解碼器165B的至少一部分W解碼指令集163的指令。處理核170也包括對于理解 本發(fā)明的實施例不是必需的額外電路(沒有示出)。
      [0068] 在操作中,主處理器166執(zhí)行數(shù)據(jù)處理指令流,數(shù)據(jù)處理指令流控制通用類型的 數(shù)據(jù)處理操作,包括與高速緩存存儲器167 W及輸入/輸入系統(tǒng)168的交互。SIMD協(xié)處理 器指令嵌入數(shù)據(jù)處理指令流中。主處理器166的解碼器165將該些SIMD協(xié)處理器指令識 別為應當由附連的SIMD協(xié)處理器161來執(zhí)行的類型。因此,主處理器166在協(xié)處理器總線 171上發(fā)出該些SIMD協(xié)處理器指令(或表示SIMD協(xié)處理器指令的控制信號),任何附連的 SIMD協(xié)處理器從協(xié)處理器總線171接收到該些指令。在該情況中,SIMD協(xié)處理器161將接 受并執(zhí)行任何接收到的針對該SIMD協(xié)處理器的SIMD協(xié)處理器指令。
      [0069] 可經(jīng)由無線接口 169接收數(shù)據(jù)W通過SIMD協(xié)處理器指令進行處理。對于一個示 例,語音通信可W數(shù)字信號的形式被接收到,其將被SIMD協(xié)處理器指令所處理,W重新生 成表示該語音通信的數(shù)字音頻采樣。對于另一個示例,壓縮音頻和/或視頻可W數(shù)字位流 的形式被接收到,其將被SIMD協(xié)處理器指令所處理,W重新生成數(shù)字音頻采樣和/或運動 視頻峽。對于處理核170的一個實施例,主處理器166和SIMD協(xié)處理器161被集成在單個 處理核170中,該單個處理核170包括執(zhí)行單元162、一組寄存器組164、W及解碼器165 W 識別指令集163的指令,指令集163包括根據(jù)一個實施例的指令。
      [0070] 圖2是包括邏輯電路W執(zhí)行根據(jù)本發(fā)明的一個實施例的指令的處理器200的微架 構的框圖。在一些實施例中,根據(jù)一個實施例的指令可被實現(xiàn)為對具有字節(jié)尺寸、字尺寸、 雙字尺寸、四字尺寸等并具有諸多數(shù)據(jù)類型(諸如單精度和雙精度整數(shù)和浮點數(shù)據(jù)類型) 的數(shù)據(jù)元素執(zhí)行操作。在一個實施例中,有序前端201是處理器200的一部分,其獲取將要 被執(zhí)行的指令,并準備該些指令W在稍后供處理器流水線使用。前端201可包括諸個單元。 在一個實施例中,指令預取器226從存儲器獲取指令,并將指令饋送至指令解碼器228,指 令解碼器228隨后解碼或解釋指令。例如,在一個實施例中,解碼器將所接收到的指令解碼 為機器可執(zhí)行的被稱為"微指令"或"微操作"(也稱為微操作數(shù)或UOP)的一個或多個操 作。在其他實施例中,解碼器將指令解析為操作碼和對應的數(shù)據(jù)及控制字段,它們被微架構 用于執(zhí)行根據(jù)一個實施例的操作。在一個實施例中,追蹤高速緩存230接受經(jīng)解碼的微操 作,并將它們組裝為程序有序序列或微操作隊列234中的蹤跡,W用于執(zhí)行。當追蹤高速緩 存230遇到復雜指令時,微代碼ROM 232提供完成操作所需的微操作。
      [0071] 一些指令被轉換為單個微操作,而其他指令需要若干個微操作W完成整個操作。 在一個實施例中,如果需要超過四個微操作來完成指令,則解碼器228訪問微代碼ROM 232 W進行該指令。對于一個實施例,指令可被解碼為少量的微操作W用于在指令解碼器228 處進行處理。在另一個實施例中,如果需要若干微操作來完成操作,則可將指令存儲在微代 碼ROM 232中。追蹤高速緩存230參考進入點可編程邏輯陣列(PLA)來確定正確的微指令 指針,W從微代碼ROM 232讀取微代碼序列W完成根據(jù)一個實施例的一個或多個指令。在 微代碼ROM 232完成對于指令的微操作序列化之后,機器的前端201恢復從追蹤高速緩存 230獲取微操作。
      [0072] 無序執(zhí)行引擎203是將指令準備好用于執(zhí)行的單元。無序執(zhí)行邏輯具有若干個緩 沖器,用于將指令流平滑并且重排序,W優(yōu)化指令流進入流水線后的性能,并調度指令流W 供執(zhí)行。分配器邏輯分配每個微操作需要的機器緩沖器和資源,W用于執(zhí)行。寄存器重命 名邏輯將諸個邏輯寄存器重命名為寄存器組中的條目。在指令調度器(存儲器調度器、快 速調度器202、慢速/通用浮點調度器204、簡單浮點調度器206)之前,分配器也將每個微 操作的條目分配入兩個微操作隊列中的一個,一個隊列用于存儲器操作,另一個隊列用于 非存儲器操作。微操作調度器202、204、206基于對它們的依賴輸入寄存器操作數(shù)源的準備 就緒W及微操作完成它們的操作所需的執(zhí)行資源的可用性來確定微操作何時準備好用于 執(zhí)行。一個實施例的快速調度器202可在主時鐘周期的每半個上進行調度,而其他調度器 可僅僅在每個主處理器時鐘周期上調度一次。調度器對分配端口進行仲裁W調度微操作W 便執(zhí)行。
      [0073] 寄存器組208、210位于調度器202、204、206和執(zhí)行塊211中的執(zhí)行單元212、214、 216、218、220、222、224之間。也存在單獨的寄存器組208、210,分別用于整數(shù)和浮點操作。 一個實施例的每個寄存器組208、210也包括旁路網(wǎng)絡,旁路網(wǎng)絡可將剛完成的還沒有被寫 入寄存器組的結果旁路或轉發(fā)給新的依賴微操作。整數(shù)寄存器組208和浮點寄存器組210 也能夠彼此通信數(shù)據(jù)。對于一個實施例,整數(shù)寄存器組208被劃分為兩個單獨的寄存器組, 一個寄存器組用于低階的32位數(shù)據(jù),第二個寄存器組用于高階的32位數(shù)據(jù)。一個實施例 的浮點寄存器組210具有128位寬度的條目,因為浮點指令通常具有從64至128位寬度的 操作數(shù)。
      [0074] 執(zhí)行塊 211 包括執(zhí)行單元 212、214、216、218、220、222、224,在執(zhí)行單元212、214、 216、218、220、222、224中實際執(zhí)行指令。該區(qū)塊包括寄存器組208、210,寄存器組208、210 存儲微指令需要執(zhí)行的整數(shù)和浮點數(shù)據(jù)操作數(shù)值。一個實施例的處理器200由多個執(zhí)行單 元組成;地址產(chǎn)生單元(AGU)212、AGU 214、快速ALU(算術邏輯單元)216、快速ALU 218、慢 速ALU 220、浮點ALU 222、浮點移動單元224。對于一個實施例,浮點執(zhí)行塊222、224執(zhí)行 浮點、MMX、SIMD、SSE W及其他操作。一個實施例的浮點ALU 222包括64位/64位浮點除 法器,用于執(zhí)行除法、平方根、W及余數(shù)微操作。對于本發(fā)明的諸個實施例,涉及浮點值的指 令可使用浮點硬件來處理。在一個實施例中,ALU操作進入高速ALU執(zhí)行單元216、218。一 個實施例的高速ALU 216、218可執(zhí)行高速操作,有效等待時間為半個時鐘周期。對于一個 實施例,大多數(shù)復雜整數(shù)操作進入慢速ALU 220,因為慢速ALU 220包括用于長等待時間類 型操作的整數(shù)執(zhí)行硬件,諸如,乘法器、移位器、標記邏輯和分支處理。存儲器加載/存儲操 作由AGU 212、214來執(zhí)行。對于一個實施例,整數(shù)ALU 216、218、220被描述為對64位數(shù)據(jù) 操作數(shù)執(zhí)行整數(shù)操作。在替換實施例中,ALU 216、218、220可被實現(xiàn)為支持大范圍的數(shù)據(jù) 位,包括16、32、128、256等等。類似地,浮點單元222、224可被實現(xiàn)為支持具有多種寬度的 位的操作數(shù)范圍。對于一個實施例,浮點單元222、224可結合SIMD和多媒體指令對128位 寬度打包數(shù)據(jù)操作數(shù)進行操作。
      [00巧]在一個實施例中,在父加載完成執(zhí)行之前,微操作調度器202、204、206就分派依 賴操作。因為在處理器200中微操作被投機地調度和執(zhí)行,所W處理器200也包括處理存 儲器未命中的邏輯。如果數(shù)據(jù)加載在數(shù)據(jù)高速緩存中未命中,則可能存在帶有臨時錯誤數(shù) 據(jù)離開調度器并運行在流水線中的依賴操作。重放機制跟蹤使用錯誤數(shù)據(jù)的指令,并重新 執(zhí)行該些指令。僅僅依賴操作需要被重放,而允許獨立操作完成。處理器的一個實施例的 調度器和重放機制也被設計為捕捉提供掩碼寄存器與通用寄存器之間的轉換的指令。
      [0076] 術語"寄存器"指代被用作為指令的一部分W標識操作數(shù)的板上處理器存儲位置。 換句話說,寄存器是那些處理器外部(從編程者的角度來看)可用的處理器存儲位置。然 而,一實施例的寄存器不限于表示特定類型的電路。相反,一實施例的寄存器能夠存儲并提 供數(shù)據(jù),并且能夠執(zhí)行在此所述的功能。在此所述的寄存器可由處理器中的電路使用任何 數(shù)量不同技術來實現(xiàn),諸如,專用物理寄存器、使用寄存器重命名的動態(tài)分配物理寄存器、 專用和動態(tài)分配物理寄存器的組合,等等。在一個實施例中,整數(shù)寄存器存儲H十二位整數(shù) 數(shù)據(jù)。一個實施例的寄存器組也包含八個多媒體SIMD寄存器,用于打包數(shù)據(jù)。對于W下討 論,寄存器應被理解為設計成保存打包數(shù)據(jù)的數(shù)據(jù)寄存器,諸如來自美國加利福尼亞州圣 克拉拉市的英特爾公司的啟用了 MMX技術的微處理器的64位寬MMXtm寄存器(在一些實例 中也稱為"mm寄存器)。"該些MMX寄存器(可用在整數(shù)和浮點格式中)可與伴隨SIMD和 SSE指令的打包數(shù)據(jù)元素一起操作。類似地,涉及SSE2、SSE3、SSE4或更新的技術(統(tǒng)稱為 "SSEx")的128位寬XMM寄存器也可被用于保持該樣打包數(shù)據(jù)操作數(shù)。在一個實施例中, 在存儲打包數(shù)據(jù)和整數(shù)數(shù)據(jù)時,寄存器不需要區(qū)分該兩類數(shù)據(jù)類型。在一個實施例中,整數(shù) 和浮點數(shù)據(jù)可被包括在相同的寄存器組中,或被包括在不同的寄存器組中。進一步的,在一 個實施例中,浮點和整數(shù)數(shù)據(jù)可被存儲在不同的寄存器中,或被存儲在相同的寄存器中。
      [0077] 在下述附圖的示例中,描述了多個數(shù)據(jù)操作數(shù)。圖3A示出根據(jù)本發(fā)明的一個實施 例的多媒體寄存器中的多種打包數(shù)據(jù)類型表示。圖3A示出了打包字節(jié)310、打包字320、打 包雙字(dword) 330的用于128位寬操作數(shù)的數(shù)據(jù)類型。本示例的打包字節(jié)格式310是128 位長,并且包含十六個打包字節(jié)數(shù)據(jù)元素。字節(jié)在此被定義為是8位數(shù)據(jù)。每一個字節(jié)數(shù) 據(jù)元素的信息被存儲為:對于字節(jié)0存儲在位7到位0,對于字節(jié)1存儲在位15到位8,對 于字節(jié)2存儲在位23到位16,最后對于字節(jié)15存儲在位120到位127。因此,在該寄存器 中使用了所有可用的位。該存儲配置提高了處理器的存儲效率。同樣,因為訪問了十六個 數(shù)據(jù)元素,所W現(xiàn)在可對十六個數(shù)據(jù)元素并行地執(zhí)行一個操作。
      [0078] 通常,數(shù)據(jù)元素是單獨的數(shù)據(jù)片,與具有相同長度的其他數(shù)據(jù)元素一起存儲在單 個寄存器或存儲器位置中。在涉及SSEx技術的打包數(shù)據(jù)序列中,存儲在XMM寄存器中的數(shù) 據(jù)元素的數(shù)目是128位除W單個數(shù)據(jù)元素的位長。類似地,在涉及MMX和SSE技術的打包 數(shù)據(jù)序列中,存儲在MMX寄存器中的數(shù)據(jù)元素的數(shù)目是64位除W單個數(shù)據(jù)元素的位長。雖 然圖3A中所示的數(shù)據(jù)類型是128位長,但本發(fā)明的諸個實施例也可操作64位寬、256位寬、 512位寬或其他尺寸的操作數(shù)。本示例的打包字格式320是128位長,并且包含八個打包字 數(shù)據(jù)元素。每個打包字包含十六位的信息。圖3A的打包雙字格式330是128位長,并且包 含四個打包雙字數(shù)據(jù)元素。每個打包雙字數(shù)據(jù)元素包含H十二位信息。打包四字是128位 長,并包含兩個打包四字數(shù)據(jù)元素。
      [0079] 圖3B示出了替代的寄存器內(nèi)數(shù)據(jù)存儲格式。每個打包數(shù)據(jù)可包括超過一個獨立 數(shù)據(jù)元素。示出了H個打包數(shù)據(jù)格式:打包半數(shù)據(jù)元素314、打包單數(shù)據(jù)元素342、W及打包 雙數(shù)據(jù)元素343。打包半數(shù)據(jù)元素341、打包單數(shù)據(jù)元素342、打包雙數(shù)據(jù)元素343的一個 實施例包含定點數(shù)據(jù)元素。對于替代實施例,一個或多個打包半數(shù)據(jù)元素341、打包單數(shù)據(jù) 元素342、打包雙數(shù)據(jù)元素343可包含浮點數(shù)據(jù)元素。打包半數(shù)據(jù)元素341的一個替代實 施例是一百二十八位長度,包含八個16位數(shù)據(jù)元素。打包單數(shù)據(jù)元素342的一個替代實施 例是一百二十八位長度,且包含四個32位數(shù)據(jù)元素。打包雙數(shù)據(jù)元素343的一個實施例是 一百二十八位長度,且包含兩個64位數(shù)據(jù)元素??蒞理解的是,該樣的打包數(shù)據(jù)格式進一 步可被擴展至其他寄存器長度,例如,96位、160位、192位、224位、256位、512位或更長。
      [0080] 圖3C示出了根據(jù)本發(fā)明的一個實施例的多媒體寄存器中的多種有符號和無符號 打包數(shù)據(jù)類型表示。無符號打包字節(jié)表示344示出了 SIMD寄存器中的無符號打包字節(jié)的 存儲。每一個字節(jié)數(shù)據(jù)元素的信息被存儲為:對于字節(jié)0存儲在位7到位0,對于字節(jié)1存 儲在位15到位8,對于字節(jié)2存儲在位23到位16,等等,最后對于字節(jié)15存儲在位120到 位127。因此,在該寄存器中使用了所有可用的位。該存儲配置可提高處理器的存儲效率。 同樣,因為訪問了十六個數(shù)據(jù)元素,所W可對十六個數(shù)據(jù)元素并行地執(zhí)行一個操作。有符號 打包字節(jié)表示345示出了有符號打包字節(jié)的存儲。注意到,每個字節(jié)數(shù)據(jù)元素的第八位是 符號指示符。無符號打包字表示346示出了 SIMD寄存器中字7到字0如何被存儲。有符 號打包字表示347類似于無符號打包字寄存器內(nèi)表示346。注意到,每個字數(shù)據(jù)元素的第 十六位是符號指示符。無符號打包雙字表示348示出了雙字數(shù)據(jù)元素如何存儲。有符號打 包雙字表示349類似于無符號打包雙字寄存器內(nèi)表示348。注意到,必要的符號位是每個雙 字數(shù)據(jù)元素的第H十二位。
      [00則圖3D是與可從美國加利福尼亞州圣克拉拉市的英特爾公司的萬維網(wǎng)intel. com/ products/processor/manuals/上獲得的"Intel液64和IA-32英特爾架構軟件開發(fā)者手 冊組合卷 2A 和 2B;指令集參考 A-Z (Intel Architec1:ure Software Developer's Manual Combined Volumes 2A and 2B:Instruction Set Reference A-Z)"中描述的運算碼格式類 型相對應的具有32或更多位的操作編碼(操作碼)格式360 W及寄存器/存儲器操作數(shù)尋 址模式的一個實施例的描述。在一個實施例中,可通過一個或更多個字段361和362來編碼 指令??蒞標識每個指令高達兩個操作數(shù)位置,包括高達兩個源操作數(shù)標識符364和365。 對于一個實施例,目的地操作數(shù)標識符366與源操作數(shù)標識符364相同,而在其他實施例中 它們不相同。對于替代實施例,目的地操作數(shù)標識符366與源操作數(shù)標識符365相同,而在 其他實施例中它們不相同。在一個實施例中,由源操作數(shù)標識符364和365所標識的源操 作數(shù)中的一個被指令的結果所覆寫,而在其他實施例中,標識符364對應于源寄存器元素, 而標識符365對應于目的地寄存器元素。對于一個實施例,操作數(shù)標識符364和365可被 用于標識32位或64位的源和目的地操作數(shù)。
      [0082] 圖3E示出了具有四十個或更多位的另一個替代操作編碼(操作碼)格式370。操 作碼格式370對應于操作碼格式360,并包括可選的前綴字節(jié)378。根據(jù)一個實施例的指令 可通過字段378、371和372中的一個或多個來編碼。通過源操作數(shù)標識符374和375 W 及通過前綴字節(jié)378,可標識每個指令中高達兩個操作數(shù)位置。對于一個實施例,前綴字節(jié) 378可被用于標識32位或64位的源和目的地操作數(shù)。對于一個實施例,目的地操作數(shù)標 識符376與源操作數(shù)標識符374相同,而在其他實施例中它們不相同。對于替代實施例,目 的地操作數(shù)標識符376與源操作數(shù)標識符375相同,而在其他實施例中它們不相同。在一 個實施例中,指令對由操作數(shù)標識符374和375所標識的一個或多個操作數(shù)進行操作,并 且由操作數(shù)標識符374和375所標識的一個或多個操作數(shù)被指令的結果所覆寫,然而在其 他實施例中,由標識符374和375所標識的操作數(shù)被寫入另一個寄存器中的另一個數(shù)據(jù)元 素中。操作碼格式360和370允許由MOD字段363和373 W及由可選的比例-索引-基址 (scale-index-base)和位移(displacement)字節(jié)所部分指定的寄存器到寄存器尋址、存 儲器到寄存器尋址、由存儲器對寄存器尋址、由寄存器對寄存器尋址、直接對寄存器尋址、 寄存器至存儲器尋址。
      [0083] 接下來轉到圖3F,在一些替換實施例中,64位(或128位、或256位、或512位或 更多)單指令多數(shù)據(jù)(SIMD)算術操作可經(jīng)由協(xié)處理器數(shù)據(jù)處理(CD巧指令來執(zhí)行。操作 編碼(操作碼)格式380示出了一個該樣的CDP指令,其具有CDP操作碼字段382和389。 對于替代實施例,該類型CDP指令操作可由字段383、384、387和388中的一個或多個來編 碼。可W對每個指令標識高達H個操作數(shù)位置,包括高達兩個源操作數(shù)標識符385和390 W及一個目的地操作數(shù)標識符386。協(xié)處理器的一個實施例可對8、16、32和64位值操作。 對于一個實施例,對整數(shù)數(shù)據(jù)元素執(zhí)行指令。在一些實施例中,使用條件字段381,可有條 件地執(zhí)行指令。對于一些實施例,源數(shù)據(jù)尺寸可通過字段383來編碼。在一些實施例中,可 對SIMD字段執(zhí)行零狂)、負(腳、進位(C)和溢出(V)檢測。對于一些指令,飽和類型可通 過字段384來編碼。
      [0084] 接下來轉到圖3G,其描繪了根據(jù)另一實施例的與可從美國加利福尼亞州圣克拉 拉市的英特爾公司的萬維網(wǎng)(WWW) intel. com/products/processor/manuals/上獲得的 "Intel麼高級向量擴展編程參考(Intel⑥ Advanced Vector Extensions Programming Reference)中描述的操作碼格式類型相對應的用于提供雙舍入組合浮點乘法和加法功能 的另一替代操作編碼(操作碼)格式397。
      [0085] 原始x86指令集向1字節(jié)操作碼提供多種地址字節(jié)油Ie)格式W及包含在 附加字節(jié)中的直接操作數(shù),其中可從第一個"操作碼"字節(jié)中獲知附加字節(jié)的存在。此外, 特定字節(jié)值被預留給操作碼作為修改符(稱為前綴prefix,因為它們被放置在指令之前)。 當256個操作碼字節(jié)的原始配置(包括該些特殊前綴值)耗盡時,指定單個字節(jié)W跳出 (escape)到新的256個操作碼集合。因為添加了向量指令(諸如,SIMD),即便通過使用前 綴進行了擴展W后,也需要產(chǎn)生更多的操作碼,并且"兩字節(jié)"操作碼映射也已經(jīng)不夠。為 此,將新指令加入附加的映射中,附加的映射使用兩字節(jié)加上可選的前綴作為標識符。
      [0086] 除此外,為了便于在64位模式中實現(xiàn)額外的寄存器,在前綴和操作碼(W及任何 的用于確定操作碼所需的跳出字節(jié))之間使用額外的前綴(被稱為"REX")。在一個實施 例中,REX具有4個"有效載荷"位,W指示在64位模式中使用附加的寄存器。在其他實施 例中,可具有比4位更少或更多的位。至少一個指令集的通用格式(一般對應于格式360 和/或格式370)被一般地示出如下:
      [0087] [prefixes] [rex] escape [escape2] opcode mo化m (等等)
      [0088] 操作碼格式397對應于操作碼格式370,并包括可選的VEX前綴字節(jié)391 (在一個 實施例中,W十六進制的C4或巧開始)W替換大部分的其他公共使用的傳統(tǒng)指令前綴字 節(jié)和跳出代碼。例如,W下示出了使用兩個字段來編碼指令的實施例,其可在原始指令中不 存在第二跳出代碼時使用。在W下所示的實施例中,傳統(tǒng)跳出由新的跳出值所表示,傳統(tǒng)前 綴被完全壓縮為"有效載荷(payload)"字節(jié)的一部分,傳統(tǒng)前綴被重新申明并可用于未來 的擴展,并且加入新的特征(諸如,增加的向量長度W及額外的源寄存器區(qū)分符)。
      [0089]

      【權利要求】
      1. 一種機器實現(xiàn)的方法,包括: 檢測包括第一浮點(FP)乘法操作和第二FP操作的可執(zhí)行線程部分,所述第二FP操作 將所述第一 FP乘法操作的結果指定為源操作數(shù); 將所述第一 FP乘法操作和第二FP操作編碼為組合的FP操作,所述組合的FP操作包 括對所述第一 FP乘法操作的結果的舍入、然后所述第二FP操作使用經(jīng)過舍入的結果作為 所述源操作數(shù); 存儲所述組合的FP操作的編碼;以及 執(zhí)行所述組合的FP操作,以作為所述可執(zhí)行線程部分的一部分。
      2. 如權利要求1所述的機器實現(xiàn)的方法,其特征在于,所述第二FP操作是FP加法操 作。
      3. 如權利要求1所述的機器實現(xiàn)的方法,其特征在于,所述第二FP操作是FP減法操 作。
      4. 如權利要求1所述的機器實現(xiàn)的方法,其特征在于,所述第二FP操作是FP轉換操 作。
      5. 如權利要求1所述的機器實現(xiàn)的方法,其特征在于,所述組合的FP操作的所述編碼 作為微操作被存儲在微操作存儲器中。
      6. 如權利要求5所述的機器實現(xiàn)的方法,其特征在于,所述檢測由處理器執(zhí)行優(yōu)化邏 輯來執(zhí)行。
      7. 如權利要求1所述的機器實現(xiàn)的方法,其特征在于,對所述組合的FP操作的所述編 碼被存儲作為指令集架構(ISA)宏指令。
      8. 如權利要求7所述的機器實現(xiàn)的方法,其特征在于,對所述組合的FP操作的所述編 碼作為ISA宏指令被存儲在指令高速緩存中。
      9. 如權利要求8所述的機器實現(xiàn)的方法,其特征在于,所述檢測由處理器ISA轉換邏輯 來執(zhí)行。
      10. 如權利要求7所述的機器實現(xiàn)的方法,其特征在于,所述檢測由編譯器優(yōu)化邏輯來 執(zhí)行。
      11. 一種機器實現(xiàn)的方法,包括: 在可執(zhí)行線程部分中檢查浮點(FP)加法操作,以確定所述FP加法操作的第一源操作 數(shù)是否是FP乘法操作的結果;以及 如果所述第一源操作數(shù)被確定是所述結果并且所述FP加法和乘法操作具有相同精 度,則用雙舍入組合FP乘法一加法操作代替所述FP加法操作,并將所述FP乘法操作標記 為已融合;以及 在所述可執(zhí)行線程部分中檢查融合的FP乘法操作,以確定其結果是否將被另一操作 使用;以及 如果所述融合的FP乘法操作的結果被確定不被任何其它操作使用,則去除所述融合 的FP乘法操作。
      12. 如權利要求11所述的機器實現(xiàn)的方法,其特征在于,所述雙舍入組合FP乘法一加 法操作作為微操作被存儲在微操作存儲器中。
      13. 如權利要求12所述的機器實現(xiàn)的方法,其特征在于,所述檢查由處理器執(zhí)行優(yōu)化 邏輯來執(zhí)行。
      14. 如權利要求11所述的機器實現(xiàn)的方法,其特征在于,所述雙舍入組合FP乘法一加 法操作被存儲作為指令集架構(ISA)宏指令。
      15. 如權利要求14所述的機器實現(xiàn)的方法,其特征在于,所述雙舍入組合FP乘法一加 法操作作為ISA宏指令被存儲在指令高速緩存中。
      16. 如權利要求15所述的機器實現(xiàn)的方法,其特征在于,所述檢查由處理器ISA轉換邏 輯來執(zhí)行。
      17. 如權利要求14所述的機器實現(xiàn)的方法,其特征在于,所述檢查由編譯器優(yōu)化邏輯 來執(zhí)行。
      18. -種機器實現(xiàn)的方法,包括: 將可執(zhí)行線程部分中的浮點(FP)乘法操作轉換成加數(shù)操作數(shù)為零的雙舍入組合FP乘 法一加法操作; 將所述可執(zhí)行線程部分中的FP加法操作轉換成乘數(shù)操作數(shù)為一的雙舍入組合FP乘 法一加法操作,所述FP加法操作的加數(shù)操作數(shù)被用作所述雙舍入組合FP乘法一加法操作 的被乘數(shù)操作數(shù);以及 如果乘數(shù)操作數(shù)為一的第一雙舍入組合FP乘法一加法操作的被乘數(shù)操作數(shù)與加數(shù)操 作數(shù)為零的按順序的前一第二雙舍入組合FP乘法一加法操作的目的地操作數(shù)相匹配,則 用所述第二雙舍入組合FP乘法一加法操作的乘數(shù)和被乘數(shù)操作數(shù)來代替所述第一雙舍入 組合FP乘法一加法操作的乘數(shù)和被乘數(shù)操作數(shù);以及 如果加數(shù)操作數(shù)為零的任何余下的雙舍入組合FP乘法一加法操作產(chǎn)生未使用的結 果,則去除所述余下的雙舍入組合FP乘法一加法操作。
      19. 如權利要求18所述的機器實現(xiàn)的方法,其特征在于,所述雙舍入組合FP乘法一加 法操作作為微操作被存儲在微操作存儲器中。
      20. 如權利要求19所述的機器實現(xiàn)的方法,其特征在于,所述轉換由處理器執(zhí)行優(yōu)化 邏輯來執(zhí)行。
      21. 如權利要求18所述的機器實現(xiàn)的方法,其特征在于,所述雙舍入組合FP乘法一加 法操作被存儲作為指令集架構(ISA)宏指令。
      22. 如權利要求21所述的機器實現(xiàn)的方法,其特征在于,所述轉換由處理器ISA轉換邏 輯來執(zhí)行。
      23. 如權利要求22所述的機器實現(xiàn)的方法,其特征在于,所述雙舍入組合FP乘法一加 法操作作為ISA宏指令被存儲在指令高速緩存中。
      24. -種機器實現(xiàn)的方法,包括: 將可執(zhí)行線程部分中的浮點(FP)乘法操作轉換成加數(shù)操作數(shù)為零的雙舍入FP組合乘 法一加法(FCMDD)操作; 將所述可執(zhí)行線程部分中的FP減法操作轉換成乘數(shù)操作數(shù)為一的雙舍入FP組合乘 法一減法(FCMSUB)操作,所述FP減法操作的被減數(shù)操作數(shù)被用作所述FCMSUB操作的被乘 數(shù)操作數(shù); 如果乘數(shù)操作數(shù)為一的所述雙舍入FCMSUB操作的被乘數(shù)與加數(shù)操作數(shù)為零的按順序 的前一雙舍入FCMADD操作的目的地操作數(shù)相匹配,則通過用所述FCMADD操作的被乘數(shù)和 乘數(shù)操作數(shù)來代替所述FCMSUB操作的被乘數(shù)和乘數(shù)操作數(shù),將所述雙舍入FCMADD操作組 合到所述FCMSUB操作中; 如果乘數(shù)操作數(shù)為一的所述雙舍入FCMSUB操作的減數(shù)與加數(shù)操作數(shù)為零的按順序的 前一雙舍入FCMADD操作的目的地操作數(shù)相匹配,則將所述雙舍入FCMADD操作組合到雙舍 入FCMSUB逆操作中以代替所述雙舍入FCMSUB操作;以及 如果加數(shù)操作數(shù)為零的任何余下的雙舍入FCMDD操作產(chǎn)生未使用的結果,則將所述 余下的雙舍入FCMDD操作去除。
      25. 如權利要求24所述的機器實現(xiàn)的方法,其特征在于,所述轉換由處理器執(zhí)行優(yōu)化 邏輯來執(zhí)行。
      26. 如權利要求25所述的機器實現(xiàn)的方法,其特征在于,所述雙舍入FCMSUB操作或所 述雙舍入FCMSUB逆操作作為微操作被存儲在微操作存儲器中。
      27. 如權利要求24所述的機器實現(xiàn)的方法,其特征在于,所述轉換由處理器ISA轉換邏 輯來執(zhí)行。
      28. 如權利要求27所述的機器實現(xiàn)的方法,其特征在于,所述雙舍入組合FP乘法一加 法操作被存儲作為指令集架構(ISA)宏指令。
      29. 如權利要求27所述的機器實現(xiàn)的方法,其特征在于,所述雙舍入組合FP乘法一加 法操作作為ISA宏指令被存儲在指令高速緩存中。
      30. -種裝置,包括: 浮點(FP)乘法器電路,用于將第一操作數(shù)被乘數(shù)尾數(shù)與第二操作數(shù)乘數(shù)尾數(shù)相乘以 產(chǎn)生結果; FP對齊電路,用于根據(jù)所述FP乘法器電路的結果來對齊第三操作數(shù)尾數(shù); 溢出檢測電路,用于檢測所述FP乘法器電路的所述結果中的溢出狀況; 第一 FP加法器電路,用于基于在所述FP乘法器電路的所述結果中未檢測到溢出狀況 的假設,利用第一舍入輸入將所述經(jīng)對齊的第三操作數(shù)尾數(shù)與所述FP乘法器電路的所述 結果加到一起,以產(chǎn)生第一和或差; 第二FP加法器電路,用于基于在所述FP乘法器電路的所述結果中檢測到溢出狀況的 假設,利用第二舍入輸入將所述經(jīng)對齊的第三操作數(shù)尾數(shù)與所述FP乘法器電路的所述結 果加到一起,以產(chǎn)生第二和或差;以及 多路復用器電路,用于基于所述溢出檢測電路在所述FP乘法器電路的結果中檢測到 溢出狀況或未檢測到溢出狀況,來在所述第二和或差與第一和或差之間進行選擇。
      31. 如權利要求30所述的裝置,其特征在于,所述第一操作數(shù)被乘數(shù)、所述第二操作數(shù) 乘數(shù)、以及所述第三操作數(shù)是單指令多數(shù)據(jù)(SMD)向量寄存器。
      32. 如權利要求31所述的裝置,其特征在于,所述第一操作數(shù)被乘數(shù)、所述第二操作數(shù) 乘數(shù)、以及所述第三操作數(shù)的數(shù)據(jù)元素是64位FP數(shù)據(jù)元素。
      33. 如權利要求31所述的裝置,其特征在于,所述第一操作數(shù)被乘數(shù)、所述第二操作數(shù) 乘數(shù)、以及所述第三操作數(shù)的數(shù)據(jù)元素是32位FP數(shù)據(jù)元素或16位FP數(shù)據(jù)元素。
      34. 如權利要求30所述的裝置,其特征在于,所述第一操作數(shù)被乘數(shù)、所述第二操作數(shù) 乘數(shù)、以及所述第三操作數(shù)是標量FP寄存器。
      35. 如權利要求34所述的裝置,其特征在于,所述標量FP寄存器在FP堆棧上。
      36. 一種處理器,包括: 一個或多個向量寄存器,各自包括用于存儲向量元素的值的多個數(shù)據(jù)字段; 解碼級,用于解碼單指令多數(shù)據(jù)(SMD)雙舍入組合浮點(FP)乘法一加法或乘法一減 法指令,所述單指令多數(shù)據(jù)(SMD)雙舍入組合浮點(FP)乘法一加法或乘法一減法指令指 定:所述一個或多個向量寄存器的目的地操作數(shù)、所述一個或多個向量寄存器的第一操作 數(shù)被乘數(shù)、向量元素尺寸、所述一個或多個向量寄存器的第二操作數(shù)乘數(shù)、以及所述一個或 多個向量寄存器的第三操作數(shù); SMD FP乘法一加法器,包括: 浮點(FP)乘法器級,用于將所述第一操作數(shù)被乘數(shù)的多個尾數(shù)與所述第二操作數(shù)乘 數(shù)的多個相應的尾數(shù)相乘,以產(chǎn)生多個相應的結果; FP對齊級,用于根據(jù)所述FP乘法器級的相應結果來對齊所述第三操作數(shù)的多個相應 的尾數(shù); 溢出檢測電路,用于檢測所述FP乘法器級的相應結果中的溢出狀況; 第一 FP加法器級,用于基于在所述FP乘法器級的相應結果中未檢測到溢出狀況的假 設,利用第一舍入輸入將所述第三操作數(shù)的相應的經(jīng)對齊的多個尾數(shù)與所述FP乘法器級 的相應的結果加到一起,以產(chǎn)生相應的多個第一和或差; 第二FP加法器級,用于基于在所述FP乘法器級的相應結果中檢測到溢出狀況的假設, 利用第二舍入輸入將所述第三操作數(shù)的相應的經(jīng)對齊的多個尾數(shù)與所述FP乘法器級的相 應的結果加到一起,以產(chǎn)生相應的多個第二和或差;以及 多路復用器級,用于基于所述溢出檢測級在所述FP乘法器級的相應結果中檢測到溢 出狀況或未檢測到溢出狀況,來在相應的多個所述第二和或差與第一和或差之間進行選 擇。
      37. 如權利要求36所述的處理器,其特征在于,所述第一操作數(shù)被乘數(shù)、所述第二操作 數(shù)乘數(shù)、以及所述第三操作數(shù)的數(shù)據(jù)元素是64位FP數(shù)據(jù)元素。
      38. 如權利要求36所述的處理器,其特征在于,所述第一操作數(shù)被乘數(shù)、所述第二操作 數(shù)乘數(shù)、以及所述第三操作數(shù)的數(shù)據(jù)元素是32位FP數(shù)據(jù)元素。
      39. 如權利要求36所述的處理器,其特征在于,所述雙舍入組合浮點(FP)乘法一加法 或乘法一減法指令由處理器指令集架構(ISA)轉換邏輯產(chǎn)生。
      40. 如權利要求39所述的處理器,其特征在于,所述雙舍入組合FP乘法一加法或乘 法一減法指令作為ISA宏指令被存儲在指令高速緩存中。
      【文檔編號】G06F9/30GK104321741SQ201380028676
      【公開日】2015年1月28日 申請日期:2013年6月19日 優(yōu)先權日:2012年6月29日
      【發(fā)明者】S·薩姆德若拉, G·瑪格里斯, M·盧彭, D·R·迪澤爾 申請人:英特爾公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1