MMX(Multimedia Extensions,多媒體擴展指令集)是Intel在1996年推出的一項多媒體指令增強技術,是 Intel公司第一次對x86 指令集進行的多媒體指令擴展,它增加了4個新的數(shù)據(jù)類型、8個64位寄存器和57條指令,并且采用了SIMD技術,同時保持了與現(xiàn)有軟件的兼容。MMX指令集使CPU處理圖像、動畫、多媒體通信、語音識別以及音頻解壓縮等方面的能力有了顯著提高。浮點運算能力是關系到CPU對多媒體、3D圖形處理能力的一個重要指標,而MMX指令集沒有大力加強浮點運算能力。在3D圖形、Internet 3D網頁應用日趨增多的情況下,MMX指令集難以完全滿足需要。
SIMD 技術SIMD(Single Instruction Multiple-Data,單指令多數(shù)據(jù)流)是Intel 為MMX技術設計的一組基本的、通用的指令集,以滿足各種多媒體和通信應用的需要。該技術允許利用任何新增加的單個指令處理多組數(shù)據(jù),以并行方式處理多個數(shù)據(jù)元素,從而提高了多媒體和通信軟件的運行速率。3D Now!是AMD公司開發(fā)的多媒體擴展指令集,共有 27條指令。與MMX技術側重的整數(shù)運算不同,3DNow!主要針對三維建模、坐標變換、效果渲染等三維應用場合而設計,在軟件的配合下,可以大幅度提高3D處理性能。但由于指令有限,該指令集主要應用于3D游戲,而對其他商業(yè)圖形的應用處理支持不足。SSE(Internet Streaming SIMD Extension)被 Intel公司首次應用于Pentium Ⅲ中。SSE共有近70條指令,其中包含50條SIMD浮點運算指令、12條MMX整數(shù)運算增強指令、8條優(yōu)化內存連續(xù)數(shù)據(jù)塊傳輸指令。它包括了原MMX和3D Now!指令集中的所有功能,特別加強了SIMD浮點處理能力,并針對Internet的發(fā)展,加強了處理3D網頁的能力。SSE指令集與3D Now!指令集互不兼容,但SSE包含了3D Now!技術的絕大部分功能,只是實現(xiàn)的方法不同。SSE兼容MMX指令。SSE2是Intel在Pentium 4處理器中推出的擴展指令集。和SSE指令集相比,SSE2指令集總共有144條指令,其中包括原有的68個SSE指令和新增加的76個SSE2指令。SSE2指令將傳統(tǒng)整數(shù)MMX寄存器擴展成128位,還提供了128 位SIMD整數(shù)運算操作和128位雙精密度浮點運算操作。
MMX指令集實質是一種SIMD數(shù)據(jù)處理方式(單指令流,多數(shù)據(jù)流)。由Intel公司開發(fā),它允許CPU同時對2-4個甚至8個數(shù)據(jù)進行并行處理。
它有效的提高了CPU對視頻、音頻等多媒體方面的處理速度,但3D運算多為浮點運算,而MMX指令集對CPU的浮點運算能力沒有什么貢獻,因此MMX指令集在制作3D上沒有實際意義。
擴展指令集是指CPU增加的多媒體或3D處理指令,這些擴展指令可以提高CPU處理多媒體和3D圖形的能力,著名的有MMX(多媒體擴展指令)、SSE(因特網數(shù)據(jù)流單指令擴展)和3D Now!指令集。
它也是一種SIMD數(shù)據(jù)處理方式,但它的加速對象卻是CPU浮點運算。它是一個時鐘周期內可以同時處理4個浮點運算指令或兩條MMX指令。
究其背景,原來"KNI"指令集是Intel公司最早為其下一代芯片命名的指令集名稱,而所謂的"MMX2"則完全是硬件評論家們和媒體憑感覺和印象對"KNI"的 評價,Intel公司從未正式發(fā)布過關于MMX2的消息。而最終推出的SSE指令集也就是所謂勝出的"互聯(lián)網SSE"指令集。SSE指令集包括了70條指令,其中包含提高3D圖形運算效率的50條SIMD(單指令多數(shù)據(jù)技術)浮點運算指令、12條MMX 整數(shù)運算增強指令、8條優(yōu)化內存中連續(xù)數(shù)據(jù)塊傳輸指令。理論上這些指令對流行的圖像處理、浮點運算、3D運算、視頻處理、音頻處理等諸多多媒體應用起到全面強化的作用。S SE指令與3DNow!指令彼此互不兼容,但SSE包含了3DNow!技術的絕大部分功能,只是實現(xiàn)的方法不同。SSE兼容MMX指令,它可以通過SIMD和單時鐘周期并行處理多個浮點數(shù)據(jù)來有效地提高浮點運算速度。