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