• MMX

    編輯
    本詞條由“匿名用戶” 建檔。

    MMX,是Intel于1997年初推出的IA-32指令集的SIMD擴展,其中指令總是同時應用于多個數據。最初的縮寫MMX代表Matrix Math Extensions,但被 Intel 出于營銷原因改名為 MMX。

    MMX 不使用新的物理處理器寄存器,而是重新利用數學協處理器 (FPU) 寄存器。 Intel為處理整數設計了MMX 57新指令,引入了四種新的向量數據格式,MMX指令支持飽和運算

    在推出之后,MMX 只是猶豫不決地得到了軟件行業的支持,僅僅三年后,它就被英特爾自己進一步開發的 SSE 和 AMD 的 3DNow! 所取代! 過時的。 其性能的基準顯示范圍很廣。

    多媒體應用需求

    編輯

    媒體通信領域的要求對計算機系統和處理器提出了不同的新要求。 數據的處理通常可以高度并行化。 例如 B. 在視頻編輯中,許多單獨像素的操作是相同的。 理論上最佳的是使用應用于所有點的單個命令執行。 所需的操作通常不是簡單的單個語句,而是更大的命令鏈。 例如,在背景前淡入圖像是一個復雜的過程,使用 XOR 進行掩蔽,使用 AND 和 NOT 準備背景,并使用 OR 疊加部分圖像。 通過提供新的復雜命令來滿足這些要求。 如此團結z。 B. MMX 命令PANDN 形式為x = y AND (NOT x) 的反轉和AND 運算。

    實現

    編輯

    借助 MMX,英特爾創造了一個使用現有寄存器、新數據格式、擴展指令集以及在不同算術選項(飽和模式和環繞模式)之間進行選擇的新概念。 與指令范圍無關的微小內部差異存在于各種奔騰處理器的(非官方命名的)版本 MMX 1.0 和 2.0 之間。 MMX 方法在 ASIC(它最初的來源)和現代 PowerPC CPU 的 AltiVec 單元或顯卡中得到了更多發展。

    新數據格式

    為 MMX 創建了四種新的數據格式:PackedByte、PackedWord、PackedDoubleWord 和 QuadWord,使用它們可以同時處理多達 64 位的整數數據包。 原則上,這些格式只是對現有格式的不同名稱。 新命名法表明 MMX 不處理單個數據或數字,而是處理數據字段。 基本上,QuadWord 只是一個 64 位字段,可以稱為 DoubleLongInt; ShortPackedWord 實際上是一個 ShortPackedInteger。

    注冊使用

    為數據操作創建了額外的 64 位寄存器 MM0 到 MM7,但它們在物理上與 FPU 的 80 位寄存器 R0 到 R7 相同。 MMX只使用十字節寬的FPU寄存器中的八個字節(即只使用FPU值的尾數區域)。 剩下的兩個字節被設置為MMX下的十六進制值FFFF。 其他 FPU 寄存器,例如 16 位寬控制、狀態和標記寄存器、11 位寬 Op 寄存器和兩個 48 位寬指針寄存器,在 MMX 應用程序中沒有或在極少數情況下有一個限制或不同解釋這里出現的值的含義。

    FPU和MMX之間的轉換

    在切換到 MMX 應用程序之前,您應該首先檢查系統是否支持 SIMD 擴展,尤其是 MMX。 這可以通過從 Pentium 開始可用的 CPUID 命令來實現,方法是在 EAX 寄存器中傳輸值 1。

    移動軸,1; 特征標志應該是queriedCPUID; 運行 CPUID 命令TESTedx,00800000h; edx 寄存器中的第 23 位是否已設置?JNZMMX_kompatibel; 如果是,則處理器是 MMX 兼容的

    如果您想在對 MMX 功能進行正面測試后使用它,下一步是使用 FXSAVE 命令將 FPU 數據保存在 512 字節的內存區域中。 MMX 應用程序通過每個寄存器中 MMX 未使用的兩個字節來保護,即。 H。 FPU 應用程序。 但是,沒有明確的命令來切換到 MMX 應用程序。 狀態 NaN(不是數字)被發送到 MMX 應用程序期間可能發生的任何 FPU 命令。 令人不安的 FPU 命令通常相對不受影響。

    應用程序終止后,之前由 FXSAVE 保存的 FPU 數據應該是 w被恢復。 MMX 命令 EMMS 不是強制性的,也不總是必需的,它也存在以向掛起的 FPU 應用程序發出 MMX 釋放信號。 這也可以在 MMX 應用程序中使用 - 例如 B. MMX 應用程序調用 API,API 又使用 FPU 命令 - 可能是必要的。

    在操作系統中的使用

    在多任務操作系統中,當上下文發生變化時,所有寄存器的內容都必須保存在一個特殊的內存區域中。 由于更改此內存區域必須得到所有操作系統的支持,因此使用了一個“技巧”,即使沒有操作系統支持也允許 MMX:MMX 寄存器從外部映射到 FPU 的八個浮點寄存器。 這意味著一旦程序使用 MMX,實際的 FPU 寄存器就不再可用。 較新的指令集擴展(例如 SSE)使用它們自己的寄存器,因此需要操作系統的支持。 MMX 寄存器與浮點寄存器的重疊也可以在較新的處理器中關閉。

    飽和模式和環繞模式

    MMX 指令集包含使??用飽和模式的指令和工作在環繞模式的指令。例如,MMX 命令 PADDB 在環繞模式下添加兩個打包字節,而 PADDSB 在飽和模式下執行相同操作。

    飽和模式意味著當一個數字超過其xxx或最小值時不會溢出,而是假定該xxx或最小可能值。

    一個應用示例:以圖像的淡出效果為例,可以將具有32位色深的兩個像素同時變暗一定值。 有了飽和度,你就不必檢查像素是否已經是黑色(例如: 0 ? 2 = 0 {\displaystyle 0-2=0} 或 5 ? 88 = 0 {\displaystyle 5-88=0} )。 這和幾個值的并行處理可以顯著提高計算速度

    在環繞模式下,在發生溢出或下溢時不考慮進位。

    操作數規范

    編輯

    FPU 和 MMX 應用程序之間的一個關鍵區別在于指令如何獲取它們的操作數。 許多 FPU 指令后沒有明確的操作數。 它們通過堆棧指針(堆棧頂部)從狀態寄存器的第 11 位到第 13 位獲取命令。 另一方面,MMX 指令使用指令后明確指定的操作數,就像 CPU 指令一樣。

    MMX 指令可以有零個、一個或兩個源操作數和目標操作數。 這些可以是 MMX 寄存器 (MMX)、通用寄存器 (Reg)、內存位置 (Mem) 或各種大小(8、16、32 或 64 位)的常量 (Const)。

    SIMD擴展

    時間行為

    編輯

    大多數 MMX 指令只在一個處理器周期內處理。 乘法指令在結果可用之前需要三個周期; 但是,可以在每個周期之后將新的乘法添加到流水線中。

    指令集

    編輯

    總共有 24 條新指令可以處理不同的數據類型,從而達到 Intel 指定的 57 條指令。 這 24 條指令中的一些僅在對符號和溢出類型的不同考慮上有所不同,因此原則上只剩下 15 條基本操作。

    由于 MMX 使用打包數據,大多數指令以 P 開頭,以區別于以 F 開頭的 FPU 指令。除了前導 P 之外,MMX 指令還可以選擇由字母 B、W、D 或 Q 組成數據格式,類似 CPU 的命令字和 S 用于有符號或 US 用于無符號飽和模式。

    內容由匿名用戶提供,本內容不代表www.gelinmeiz.com立場,內容投訴舉報請聯系www.gelinmeiz.com客服。如若轉載,請注明出處:http://www.gelinmeiz.com/376361/

    (11)
    詞條目錄
    1. MMX
    2. 多媒體應用需求
    3. 實現
    4. 新數據格式
    5. 注冊使用
    6. FPU和MMX之間的轉換
    7. 在操作系統中的使用
    8. 飽和模式和環繞模式
    9. 操作數規范
    10. 時間行為
    11. 指令集

    輕觸這里

    關閉目錄

    目錄
    91麻精品国产91久久久久