欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

用于控制MXCSR的方法及裝置與流程

文檔序號(hào):11458460閱讀:432來(lái)源:國(guó)知局
用于控制MXCSR的方法及裝置與流程

本申請(qǐng)是pct國(guó)際申請(qǐng)?zhí)枮閜ct/us2011/067957、國(guó)際申請(qǐng)日為2011年12月29日、進(jìn)入中國(guó)國(guó)家階段的申請(qǐng)?zhí)枮?01180076121.9,題為“用于控制mxcsr的方法及裝置”的發(fā)明專(zhuān)利申請(qǐng)的分案申請(qǐng)。

本發(fā)明的實(shí)施例通常涉及一種用于控制多媒體擴(kuò)展控制及狀態(tài)寄存器(mxcsr)的方法及裝置。



背景技術(shù):

多媒體擴(kuò)展控制及狀態(tài)寄存器(mxcsr)存有ieee浮點(diǎn)控制及狀態(tài)信息——作為運(yùn)算標(biāo)記的狀態(tài)信息。所述控制位為每個(gè)浮點(diǎn)運(yùn)算的輸入,所述運(yùn)算標(biāo)記為每個(gè)浮點(diǎn)運(yùn)算的輸出。假如浮點(diǎn)運(yùn)算生成未被對(duì)應(yīng)的控制位“掩碼”的運(yùn)算標(biāo)記,則必然引發(fā)浮點(diǎn)異常。運(yùn)算標(biāo)記具有粘性,即一旦由運(yùn)算設(shè)置就不能清除它們。

這使得mxcsr成為用于所有浮點(diǎn)運(yùn)算的串行化點(diǎn)?,F(xiàn)今存在無(wú)序處理器,其為所述mxcsr運(yùn)用某種形式的重命名及重排序機(jī)制,以允許不按程序的順序執(zhí)行浮點(diǎn)運(yùn)算。這些機(jī)制可以將每個(gè)指令生成的運(yùn)算標(biāo)記的推測(cè)性拷貝附于所述指令的結(jié)果,并在該指令退出時(shí),將所述標(biāo)記并入架構(gòu)版本并檢查異常。不幸的是,這種機(jī)制純粹在硬件中實(shí)現(xiàn),只能知道選擇的程序的順序,不能改變或操縱它。

附圖說(shuō)明

結(jié)合下圖,根據(jù)隨后的詳細(xì)描述能夠更好地理解本發(fā)明:

圖1示出了可以用于本發(fā)明實(shí)施例的計(jì)算機(jī)系統(tǒng)架構(gòu)。

圖2示出了可以用于本發(fā)明實(shí)施例的計(jì)算機(jī)系統(tǒng)架構(gòu)。

圖3為包含執(zhí)行浮點(diǎn)運(yùn)算功能的浮點(diǎn)運(yùn)算單元(fpu)的處理器核的框圖。

圖4為示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的兩個(gè)寄存器的框圖:架構(gòu)arch_mxcr和arch_mxsr;以及控制用于fpu運(yùn)算的mxcsr的優(yōu)化器。

圖5為根據(jù)本發(fā)明的一個(gè)實(shí)施例以數(shù)字門(mén)形式顯示合并、旋轉(zhuǎn)(rotate)、清除和mxre指令的示例的圖。

具體實(shí)施方式

在隨后的描述中,出于解釋目的,為了全面了解下面描述的本發(fā)明實(shí)施例,展示了若干具體細(xì)節(jié)。然而,無(wú)需其中的某些具體細(xì)節(jié)就可以實(shí)現(xiàn)本發(fā)明,對(duì)本領(lǐng)域技術(shù)人員來(lái)說(shuō)是顯而易見(jiàn)的。在其它實(shí)例中,為了避免難以理解本發(fā)明實(shí)施例的基本原則,以框圖形式顯示公知結(jié)構(gòu)及設(shè)備。

下面是可以用于之后要討論的本發(fā)明實(shí)施例、且用于執(zhí)行本文詳述的指令的實(shí)例計(jì)算機(jī)系統(tǒng)。用于膝上計(jì)算機(jī)、臺(tái)式機(jī)、手持pc、個(gè)人數(shù)字助手、工程工作站、服務(wù)器、網(wǎng)絡(luò)設(shè)備、網(wǎng)絡(luò)中心、開(kāi)關(guān)、嵌入式存儲(chǔ)器、數(shù)字信號(hào)處理器(dsp)、圖形設(shè)備、視頻游戲設(shè)備、機(jī)頂盒、微控制器、手機(jī)、便攜式媒體播放器、手持設(shè)備及各種其它電子設(shè)備的本領(lǐng)域公知的其它系統(tǒng)設(shè)計(jì)及配置也合適??傊绫疚墓_(kāi)的能夠納入處理器和/或其它執(zhí)行邏輯的大量各種系統(tǒng)或電子設(shè)備通常是合適的。

現(xiàn)在參考圖1,顯示了根據(jù)本發(fā)明的一個(gè)實(shí)施例的計(jì)算機(jī)系統(tǒng)100的框圖。系統(tǒng)100可以包括一個(gè)或多個(gè)處理元件110、115,其耦接到圖形存儲(chǔ)控制中心(gmch)120。在圖1中,用虛線指代額外處理元件115的可選性質(zhì)。各處理元件可以是單核或者可以包括多核。可選地,除了處理核外,所述處理元件還包括其它管芯上元件,例如集成存儲(chǔ)控制器和/或集成i/o控制邏輯。而且,對(duì)于至少一個(gè)實(shí)施例,所述處理元件的核可以是多線程的,因?yàn)樗鼈兛梢悦亢税ㄒ粋€(gè)以上硬件線程上下文。

圖1示出gmch120可以耦接到存儲(chǔ)器140,其可以例如是動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram)。對(duì)于至少一個(gè)實(shí)施例,所述dram可以與非易失性高速緩存相關(guān)聯(lián)。gmch120可以是芯片組或芯片組的部分。gmch120可以與處理器110、115通信,并控制處理器110、115與存儲(chǔ)器140之間的交互。gmch120還可以充當(dāng)處理器110、115與系統(tǒng)100的其它元件之間的加速總線接口。對(duì)于至少一個(gè)實(shí)施例,gmch120經(jīng)多點(diǎn)總線(例如前端總線(fsb)195)與處理器110、115通信。而且,gmch120耦接到顯示器140(例如,平板顯示器)。gmch120可以包括集成圖形加速器。gmch120進(jìn)一步耦接到輸入/輸出(i/o)控制中樞(ich)150,其可以用于將各種外圍設(shè)備耦接到系統(tǒng)100。圖1的實(shí)施例示例性地示出了外部圖形設(shè)備160,其可以是與另一外圍設(shè)備170一道耦接到ich150的分立圖形設(shè)備。

或者,系統(tǒng)100中還可以存在額外或不同的處理元件。例如,額外的處理元件115可以包括與處理器110相同的額外處理器、與處理器110異質(zhì)或不對(duì)稱(chēng)的額外處理器、加速器(例如,圖形加速器或數(shù)字信號(hào)處理(dsp)單元)、現(xiàn)場(chǎng)可編程門(mén)陣列或任意其它處理元件。根據(jù)包含架構(gòu)、微架構(gòu)、熱、功耗特性等等的一系列指標(biāo)規(guī)格,物理資源110、115之間可能有各種差異。這些差異可以有效地顯現(xiàn)為處理元件110、115間的非對(duì)稱(chēng)及異質(zhì)。對(duì)于至少一個(gè)實(shí)施例,各種處理元件110、115可以駐留在同一管芯封裝中。

現(xiàn)在參考圖2,顯示了根據(jù)本發(fā)明實(shí)施例的另一計(jì)算機(jī)系統(tǒng)200的框圖。如圖2所示,微處理器系統(tǒng)200為點(diǎn)到點(diǎn)互連系統(tǒng),并且包括經(jīng)點(diǎn)到點(diǎn)互連250耦接的第一處理元件270及第二處理元件280。如圖2所示,處理元件270及280各自可以是多核處理器,包括第一及第二處理器核(即,處理器核274a及274b,處理器核284a及284b)。或者,一個(gè)或多個(gè)處理元件270、280可以是除處理器之外的元件,例如加速器或現(xiàn)場(chǎng)可編程門(mén)陣列。雖然只顯示了兩個(gè)處理元件270、280,但要理解本發(fā)明的范疇不限于此。在其它實(shí)施例中,在指定的處理器中可以存在一個(gè)或多個(gè)額外處理元件。

第一處理元件270可以進(jìn)一步包括存儲(chǔ)器控制器中樞(mch)272和點(diǎn)到點(diǎn)(p-p)接口276及278。類(lèi)似地,第二處理元件280可以包括mch282、p-p接口286及288。處理器270、280可以利用ptp接口電路278、288、經(jīng)點(diǎn)到點(diǎn)(ptp)接口250交換數(shù)據(jù)。如圖2所示,mch272及282將所述處理器耦接到相應(yīng)的存儲(chǔ)器,即存儲(chǔ)器242和存儲(chǔ)器244,其可以是本地附于相應(yīng)處理器的部分主存儲(chǔ)器。

處理器270、280各自可以利用點(diǎn)到點(diǎn)接口電路276、294、286、298、經(jīng)單獨(dú)的ptp接口252、254與芯片組290交換數(shù)據(jù)。芯片組290還可以經(jīng)高性能圖形接口239與高性能圖形電路238交換數(shù)據(jù)。本發(fā)明實(shí)施例可以位于具有任意數(shù)目處理核的任意處理元件內(nèi)。在一個(gè)實(shí)施例中,任意處理器核可以包括本地高速緩存存儲(chǔ)器(未示出)或以別的方式與其關(guān)聯(lián)。而且,兩處理器外部、但經(jīng)p2p互連仍與所述處理器連接的處理器中可以包括共享高速緩存(未示出),這樣假如將處理器置于低功率模式,一個(gè)或兩個(gè)處理器的本地高速緩存信息可以存儲(chǔ)在所述共享高速緩存里。第一處理元件270及第二處理元件280可以經(jīng)p-p互連276、286及284分別耦接到芯片組290。如圖2所示,芯片組290包括p-p接口294、298。而且,芯片組290包括接口292,以將芯片組290與高性能圖形引擎248耦接。在一個(gè)實(shí)施例中,總線249可以用于將圖形引擎248與芯片組290耦接?;蛘?,點(diǎn)到點(diǎn)互連249可以耦接這些組件。反過(guò)來(lái),芯片組290可以經(jīng)接口296耦接到第一總線216。在一個(gè)實(shí)施例中,第一總線216可以是外圍組件互連(pci)總線、或諸如pci快速總線的總線或另一第三代i/o互連總線,不過(guò)本發(fā)明的范疇不限于此。

如圖2所示,各種i/o設(shè)備可以與將第一總線216耦接到第二總線220的總線橋218一道耦接到第一總線216。在一個(gè)實(shí)施例中,第二總線220可以是低引腳計(jì)數(shù)(lpc)總線。在一個(gè)實(shí)施例中,各種設(shè)備可以耦接到第二總線220,其包括例如鍵盤(pán)/鼠標(biāo)222、通信設(shè)備226及諸如可以包含代碼230的磁盤(pán)驅(qū)動(dòng)或其它海量存儲(chǔ)設(shè)備的數(shù)據(jù)存儲(chǔ)單元228。而且,音頻i/o224可以耦接到第二總線220。注意,可能有其它架構(gòu)。例如,系統(tǒng)可以實(shí)現(xiàn)多分支總線或其它此類(lèi)架構(gòu),而不是點(diǎn)到點(diǎn)架構(gòu)。

如要描述的,本發(fā)明實(shí)施例涉及優(yōu)化器,其使得處理器核(例如,274和284)的多媒體擴(kuò)展控制及狀態(tài)寄存器(mxcsr)使能重排序、重命名、追蹤和異常檢查,以允許優(yōu)化應(yīng)用程序——包括但不限于諸如動(dòng)態(tài)二進(jìn)制譯碼器或即時(shí)編譯器的動(dòng)態(tài)編譯系統(tǒng)——或應(yīng)用程序編程器的浮點(diǎn)運(yùn)算。應(yīng)該懂得術(shù)語(yǔ)“應(yīng)用程序”之后還指的是動(dòng)態(tài)編譯系統(tǒng)。

首先,轉(zhuǎn)向圖3,將描述mxcsr操作。應(yīng)該懂得與計(jì)算系統(tǒng)的處理器核274通信有兩種觀點(diǎn)。第一種觀點(diǎn)是應(yīng)用程序或應(yīng)用程序編程器“看到”了什么,即應(yīng)用程序或應(yīng)用程序編程器用來(lái)傳送指令302并從處理器核274接收輸出304的接口。這種接口可以稱(chēng)為處理器邏輯視圖。所述邏輯視圖中的應(yīng)用程序狀態(tài)可以稱(chēng)作架構(gòu)狀態(tài)或邏輯狀態(tài)。

第二種觀點(diǎn)是為了以高效方式執(zhí)行應(yīng)用程序,處理器核274“在后臺(tái)”實(shí)現(xiàn)了什么或應(yīng)用程序或應(yīng)用程序編程器“看不到”什么。所述應(yīng)用程序狀態(tài)為可以稱(chēng)作物理狀態(tài)的核處理器274的實(shí)際內(nèi)部實(shí)現(xiàn)。

如圖3所示,當(dāng)在處理器核274中執(zhí)行浮點(diǎn)運(yùn)算指令時(shí),處理器核274實(shí)現(xiàn)浮點(diǎn)運(yùn)算單元(fpu)314,其執(zhí)行相關(guān)指令302。為了實(shí)現(xiàn)這個(gè),mxcsr310通過(guò)控制位312控制fpu314的行為,并從fpu接收狀態(tài)更新313(運(yùn)算標(biāo)記)。在fpu314中執(zhí)行浮點(diǎn)運(yùn)算指令,fpu314讀取并更新mxcsr310。輸出304為fpu314執(zhí)行的運(yùn)算操作的結(jié)果。應(yīng)該理解圖3顯示了處理器的邏輯視圖/狀態(tài)。

許多現(xiàn)代處理器支持標(biāo)準(zhǔn)的邏輯視圖,應(yīng)用程序及應(yīng)用程序編程器在該標(biāo)準(zhǔn)邏輯視圖中僅能看到指令302和輸出304。然而,不同處理器間的內(nèi)部操作可能不同。例如,為了提供高性能,可以以不同于編程器規(guī)定的順序執(zhí)行指令(這叫作無(wú)序執(zhí)行)。這通過(guò)使用無(wú)序執(zhí)行引擎來(lái)實(shí)現(xiàn),其為處理器核內(nèi)部實(shí)現(xiàn)的硬件單元。

本發(fā)明的實(shí)施例涉及優(yōu)化器,使得處理器核274的多媒體擴(kuò)展控制及狀態(tài)寄存器(mxcsr)的硬件使能重排序、重命名、追蹤、異常檢查,以允許優(yōu)化應(yīng)用程序及應(yīng)用程序編程器的浮點(diǎn)運(yùn)算。尤其是,支持并保留使用mxcsr的當(dāng)前邏輯視圖,但所述物理實(shí)現(xiàn)方式不同于之前現(xiàn)有技術(shù)的實(shí)現(xiàn)方式。

在一個(gè)實(shí)施例中,利用硬件組件及優(yōu)化器組件(即虛擬機(jī)優(yōu)化器)。然而,應(yīng)該懂得本文公開(kāi)的組件的實(shí)施例可以以硬件、軟件、固件或其組合實(shí)現(xiàn)。之后,將使用術(shù)語(yǔ)優(yōu)化器。尤其是,參考圖4,結(jié)合硬件組件的優(yōu)化器組件410、415可能負(fù)責(zé)控制處理器核274內(nèi)部的物理狀態(tài),并負(fù)責(zé)將架構(gòu)狀態(tài)或邏輯視圖導(dǎo)出給應(yīng)用程序或應(yīng)用程序編程器。尤其是,優(yōu)化器410、415允許所述應(yīng)用程序或應(yīng)用程序編程器控制處理器核274內(nèi)的重排序、重命名、追蹤及異常檢查,以允許所述應(yīng)用程序或應(yīng)用程序編程器優(yōu)化浮點(diǎn)運(yùn)算。換言之,優(yōu)化器組件410、415允許所述應(yīng)用程序或應(yīng)用程序編程器優(yōu)化fpu執(zhí)行的用于指令302的浮點(diǎn)運(yùn)算的性能。

作為一個(gè)實(shí)例,處理器核274可以包括執(zhí)行運(yùn)算功能的浮點(diǎn)單元(fpu)406和給所述fpu提供控制位405的多媒體擴(kuò)展控制寄存器(mxcr)402。進(jìn)一步地,優(yōu)化器410、415可以用于從多個(gè)推測(cè)性多媒體擴(kuò)展?fàn)顟B(tài)寄存器(spec_mxsr)中選擇一個(gè)spec_mxsr412,以基于指令302更新多媒體控制狀態(tài)寄存器(mxsr)404??梢詮膽?yīng)用程序和/或應(yīng)用程序編程器接收該指令。該指令可以允許pfu操作的重排序、重命名、追蹤及異常檢查。

如圖4所示,所述實(shí)現(xiàn)方式可以包括兩個(gè)寄存器:架構(gòu)多媒體擴(kuò)展控制寄存器(arch_mxcr)404和架構(gòu)多媒體擴(kuò)展?fàn)顟B(tài)寄存器(arch_mxsr)404。這些寄存器一塊提供了mxcsr(例如,“傳統(tǒng)”的mxcsr)的架構(gòu)狀態(tài)。簡(jiǎn)言之,arch_mxcr402可以包括以下條目:刷寫(xiě)為零(fz);舍入控制(rc);精度掩碼(pm);下溢掩碼(um);上溢掩碼(om);除零掩碼(zm);非正規(guī)掩碼(dm);無(wú)效掩碼(im);以及非正規(guī)為零(daz)。arch_mxsr404可以包括以下條目:精度誤差(pe);下溢誤差(ue);上溢誤差(oe);除零誤差(ze);非正規(guī)誤差(pe);無(wú)效誤差(ie);以及多媒體擴(kuò)展實(shí)數(shù)異常(mxre)。所述mxre為追蹤掛起異常的附加位。

arch_mxcr寄存器402給fpu406提供控制位405。fpu406給優(yōu)化器410提供狀態(tài)位407。優(yōu)化器410決定基于浮點(diǎn)集結(jié)字段(fs)更新哪些推測(cè)性mxsr(i)(spec_msxr(i))。如圖4所示,spec_msxr(i)412的副本可以多達(dá)n個(gè)。因此,有多個(gè)spec_mxsr(i)寄存器412的副本。fpu406生成更新spec_mxsr寄存器的狀態(tài)位(作為浮點(diǎn)指令執(zhí)行的結(jié)果)??梢杂胒s字段擴(kuò)展全部fpu指令。優(yōu)化器410用fs字段來(lái)指定哪些spec_mxsr寄存器將接收所述狀態(tài)位。

接下來(lái),優(yōu)化器415可以決定哪些spec_msxr(i)412將基于浮點(diǎn)障礙(fpbarr)指令來(lái)更新arch_mxsr404。這個(gè)fpbarr指令可以用來(lái)管理多個(gè)spec_mxsr412副本和arch_mxsr404。通過(guò)使用fpbarr指令,優(yōu)化器415可以根據(jù)選擇的spec_mxsr寄存器412的物理狀態(tài)來(lái)提供架構(gòu)mxcsr狀態(tài)(經(jīng)arch_mxsr404和arch_mxcr405)。這樣,所述應(yīng)用程序或應(yīng)用程序編程器可以為fpu操作選擇指令和特定的spec_mxsr寄存器412。

因此,通過(guò)使用優(yōu)化器(410,415),本發(fā)明的實(shí)施例允許在虛擬機(jī)環(huán)境中高性能地實(shí)現(xiàn)浮點(diǎn)程序執(zhí)行,這允許應(yīng)用程序或應(yīng)用程序編程器而不是處理器本身為fpu操作選擇指令順序。尤其是,優(yōu)化器410、415允許所述應(yīng)用程序或應(yīng)用程序編程器控制處理器核274內(nèi)的重排序、重命名、追蹤和異常檢查,以允許所述應(yīng)用程序或應(yīng)用程序編程器優(yōu)化浮點(diǎn)操作。換言之,優(yōu)化器組件410、415允許所述應(yīng)用程序或應(yīng)用程序編程器優(yōu)化fpu執(zhí)行的用于指令的浮點(diǎn)操作的性能。

之后將更詳細(xì)地描述本發(fā)明實(shí)施例的解釋。一方面,本發(fā)明的實(shí)施例可以認(rèn)為由三部分構(gòu)成。第一部分可以是存有多個(gè)mxcsr狀態(tài)副本的硬件,第二部分可以包括浮點(diǎn)指令行為的擴(kuò)展或替代,第三部分可以包括fpbarr指令,其如之前描述的,允許優(yōu)化器410、415管理多個(gè)spec_mxsr寄存器412并檢查運(yùn)算異常。進(jìn)一步地,本發(fā)明實(shí)施例允許通過(guò)狀態(tài)更新重命名mxcsr寄存器。

對(duì)于部分1,描述了存有多個(gè)mxcsr狀態(tài)副本的硬件。所包含的狀態(tài)元件可以如下所示:a)mxcsr的控制位的一個(gè)架構(gòu)副本,例如字段—rc、ftz、daz和masks—顯示為arch_mxcr402;b)mxcsr的狀態(tài)位的一個(gè)架構(gòu)副本,例如—追蹤掛起異常的flags和mxre位——顯示為arch_mxsr404;c)mxsrflags加上mxre位的一組n個(gè)推測(cè)性副本——稱(chēng)作spec_mxsr(i)412。應(yīng)該注意在任意指定時(shí)刻,能夠根據(jù)arch_mxcr402和arch_mxsr404重建mxcsr狀態(tài)(忽略mxre位)。

對(duì)于部分2,可以用fs字段擴(kuò)展浮點(diǎn)指令(如之前描述的)(例如,fs域可以是ceil(log2n)位的標(biāo)識(shí)符)。如之前描述的,所述fs字段可以用來(lái)指定或選擇spec_msxr(i)412副本。作為一個(gè)實(shí)例,當(dāng)浮點(diǎn)指令操作時(shí),它首先從arch_mxcr402讀取必需的控制信息(例如,使用舍入模式,如何處理非正規(guī)數(shù)字等)。操作結(jié)束時(shí),fpu406硬件連同所述操作的結(jié)果一起生成某些運(yùn)算標(biāo)記。通過(guò)以“粘性”方式執(zhí)行邏輯or操作,可以將這些標(biāo)記合并到spec_mxsr(fs)標(biāo)記字段。這意味著所述合并操作能夠?qū)?biāo)記位從“0”變?yōu)椤?”,反之卻不行。假如這一合并期間,第i個(gè)spec_mxsr(fs)標(biāo)記位的值從“0”變?yōu)椤?”,而第i個(gè)arch_mxcr掩碼位設(shè)為“0”,那么spec_mxsr(fs)mxre位也可以設(shè)為“1”(也是以粘性方式)。這意味著這一指令應(yīng)該引發(fā)浮點(diǎn)異常,卻沒(méi)有立即這樣做,而是在spec_mxsr(fs)寄存器412中標(biāo)記這個(gè)動(dòng)作。這種浮點(diǎn)操作的新行為允許推測(cè)性地執(zhí)行浮點(diǎn)操作,而不會(huì)改變?nèi)魏渭軜?gòu)狀態(tài)或引發(fā)任何異常。

對(duì)于部分3,優(yōu)化器415實(shí)現(xiàn)的fpbarr指令可以允許管理arch_mxcr寄存器404、arch_mxsr寄存器402及spec_mxsr寄存器412,它還允許引發(fā)浮點(diǎn)異常。尤其是,利用fpbarr指令的優(yōu)化器415可以接受規(guī)定要執(zhí)行的特定操作的數(shù)個(gè)修飾符(即運(yùn)算數(shù))。例如,可以為同一指令指定不同的修飾符。之后將單獨(dú)討論用于fpbarr指令的每個(gè)修飾符的各種動(dòng)作,然后將描述所有修飾符之間的交互。

fpbarr#merge=<v>:#merge修飾符規(guī)定了n位寬的位掩碼值<v>,稱(chēng)之為合并集。當(dāng)斷言所述合并集中第i個(gè)位時(shí),0≤i<n,那么將spec_mxsr(i)寄存器412的值合并入arch_mxsr404。以粘性方式進(jìn)行所述合并。能夠斷言任意數(shù)目的位,且可以允許多個(gè)并發(fā)合并。當(dāng)所述合并集為空(即沒(méi)有位斷言)時(shí),不執(zhí)行合并操作。所述合并操作還包括標(biāo)記位以及mxre位。

作為一個(gè)實(shí)例,參考圖5,可以經(jīng)由fbarr指令將各種spec_mxsr(i)寄存器502、504和506合并在一起。作為說(shuō)明,圖5以數(shù)字門(mén)的形式顯示了fbarr合并、旋轉(zhuǎn)、清除及mxre指令。例如,基于合并指令510和對(duì)應(yīng)的與門(mén)512、514、516可以將spec_mxsr(i)寄存器502、504、506合并或不合并在一起。在和或門(mén)530合并后,spec_mxsr(i)寄存器502、504、506可以合并為arch_mxsr404。為清楚起見(jiàn),只示出了一些spec_mxsr(i)寄存器。還可以實(shí)施圖5的其它指令。例如,可以通過(guò)實(shí)施選擇器535選擇的清除命令540來(lái)清除spec_mxsr(i)寄存器502、504、506。之后將更詳細(xì)地討論該清除命令。另外,還可以通過(guò)選擇器535、或門(mén)544、或門(mén)530等來(lái)選擇之后要討論的旋轉(zhuǎn)命令。進(jìn)一步地,假如通過(guò)與門(mén)560來(lái)設(shè)置mxre位522,則可以實(shí)施多媒體擴(kuò)展實(shí)數(shù)異常mxre指令550。假如設(shè)置mxre位552且實(shí)施mxre指令550,則與門(mén)560將發(fā)布引發(fā)浮點(diǎn)異常562。還將進(jìn)一步詳細(xì)描述這一指令。

fpbarr#clear=<v>:#clear指令540規(guī)定了n位寬位掩碼值<v>,稱(chēng)之為清除集。當(dāng)斷言該清除集中的第i位,0≤i<n-1時(shí),那么清除spec_mxsr(i)寄存器,即將它的值設(shè)為零。能夠斷言任意數(shù)目的位,并允許多個(gè)并發(fā)清除。當(dāng)該清除集為空(即,沒(méi)有位斷言)時(shí),不執(zhí)行清除動(dòng)作。

fpbarr#rotate:#rotate指令542執(zhí)行合并spec_mxsr(0)、清除spec_mxsr(n-1),以及對(duì)于0≤i<n-1寄存器,邏輯重命名全部spec_mxsr(i)寄存器。下面的系列動(dòng)作能夠最佳描述這一特定操作(按先后次序的降序):

arch_mxsr←mergespec_mxsr(0)

spec_mxsr(0)←spec_mxsr(1)

spec_mxsr(1)←spec_mxsr(2)

……

spec_mxsr(n-3)←spec_mxsr(n-2)

spec_mxsr(n-2)←spec_mxsr(n-1)

spec_mxsr(n-1)←clear

fpbarr#mxre:當(dāng)使用#mxre指令550時(shí),如果arch_mxsr404中的mxre位552被斷言,則fpbarr引發(fā)浮點(diǎn)異常562。

應(yīng)該懂得可以將所有三個(gè)指令(合并、旋轉(zhuǎn)、mxre)合為單個(gè)fpbarr指令。之后為按先后次序的降序的實(shí)例步驟:1.執(zhí)行合并指令510。這些動(dòng)作更改了arch_mxsr404的值;2.執(zhí)行第一個(gè)旋轉(zhuǎn)指令542,例如將spec_mxsr(0)502合并入arch_mxsr404。這一動(dòng)作更改了arch_mxsr404的值;3.執(zhí)行mxre檢查指令550。假如新更新的arch_mxsr寄存器404的mxre位為“1”(這可能是因?yàn)檫@個(gè)或之前的合并或旋轉(zhuǎn)指令),那么引發(fā)浮點(diǎn)運(yùn)算異常562,且不會(huì)執(zhí)行下面的步驟;4.執(zhí)行剩余的旋轉(zhuǎn)指令542。這意味著更新所有的spec_mxsr寄存器;5.執(zhí)行清除指令540。此情況下的清除集指的是重新分配旋轉(zhuǎn)后的spec_mxsr寄存器,而不是初始的spec_mxsr。

之后描述示例用途。清除指令540可以用于程序執(zhí)行時(shí)在特定點(diǎn)重設(shè)推測(cè)性mxcsr狀態(tài)。合并指令510可以用于程序執(zhí)行時(shí)在特定點(diǎn)將一個(gè)或多個(gè)推測(cè)性執(zhí)行流并入架構(gòu)狀態(tài)。旋轉(zhuǎn)指令542可以用于循環(huán)執(zhí)行軟件流水線優(yōu)化。

利用這一機(jī)制,實(shí)施fpbaar指令的優(yōu)化器401、415能夠自由地重排序浮點(diǎn)代碼,甚至跨控制流指令(例如,條件分支)。作為示例,實(shí)施fpbaar指令的優(yōu)化器410、415能夠遵循著色算法。在一個(gè)區(qū)域的開(kāi)始處,可以清除所有的spec_mxsr副本412。接著,給各鄰近的代碼塊分配顏色(spec_mxsr副本)。在需要正確的架構(gòu)狀態(tài)的所有點(diǎn),優(yōu)化器410、415附上適當(dāng)?shù)膄pbarra指令來(lái)執(zhí)行合并和mxre檢測(cè)。進(jìn)一步地,為了計(jì)算正確的合并集,優(yōu)化器410、415應(yīng)該追蹤從最后的fpbarr指令(例如,合并和清除)點(diǎn)到當(dāng)前的一個(gè)點(diǎn)的所有可能的代碼路徑。通過(guò)了解所有的代碼路徑,優(yōu)化器410、415明白接觸了哪些顏色,并且所述優(yōu)化器能夠計(jì)算合并哪些寄存器。

進(jìn)一步地,優(yōu)化器410、415可以將旋轉(zhuǎn)指令542用于流水線循環(huán)。在此情況下,可以給參與流水線循環(huán)內(nèi)核的各初始循環(huán)迭代分配spec_mxsr412,這樣給第i次迭代分配specmxsr(0),給迭代i+1分配spec_mxsr(1),……給迭代i+m分配spec_mxsr(m),等等。然后可以基于該指令屬于初始循環(huán)的哪次迭代,用適當(dāng)?shù)膄s擴(kuò)充所述內(nèi)核里的各指令。進(jìn)一步地,可以在各內(nèi)核迭代結(jié)束時(shí)插入優(yōu)化器410、415用旋轉(zhuǎn)指令實(shí)施的fpbarr指令,以為下次內(nèi)核迭代重新分配specmxsr名稱(chēng)。應(yīng)該理解這些只是優(yōu)化器用途的示例。

因此,通過(guò)使用優(yōu)化器(410,415),本發(fā)明的實(shí)施例允許在虛擬機(jī)環(huán)境中高性能地實(shí)現(xiàn)浮點(diǎn)程序執(zhí)行,這允許應(yīng)用程序或應(yīng)用程序編程器而不是處理器本身選擇用于fpu操作的指令的順序。尤其是,優(yōu)化器410、415允許應(yīng)用程序或應(yīng)用程序編程器控制處理器核274內(nèi)的重排序、重命名、追蹤和異常檢查,以允許所述應(yīng)用程序或應(yīng)用程序編程器優(yōu)化浮點(diǎn)操作。換言之,優(yōu)化器組件410、415允許所述應(yīng)用程序或應(yīng)用程序編程器優(yōu)化fpu執(zhí)行的用于指令302的浮點(diǎn)操作的性能。

本文公開(kāi)的不同機(jī)制的實(shí)施例,例如優(yōu)化器410、415,以及所有其它機(jī)制,可以以硬件、軟件、固件或是這些實(shí)施方式的組合實(shí)現(xiàn)。本發(fā)明的實(shí)施例可以實(shí)現(xiàn)為在包含至少一個(gè)處理器、數(shù)據(jù)存儲(chǔ)系統(tǒng)(包括易失性及非易失性存儲(chǔ)器和/或存儲(chǔ)元件)、至少一個(gè)輸入設(shè)備和至少一個(gè)輸出設(shè)備的可編程系統(tǒng)上執(zhí)行的計(jì)算機(jī)程序或程序代碼。

可以將程序代碼應(yīng)用于輸入數(shù)據(jù)以執(zhí)行本文描述的功能,并生成輸出信息。所述輸出信息可以以公知的方式應(yīng)用于一個(gè)或多個(gè)輸出設(shè)備。出于這種應(yīng)用的目的,處理系統(tǒng)包括具有例如處理器的任意系統(tǒng);數(shù)字信號(hào)處理器(dsp)、微控制器、專(zhuān)用集成電路(asic)或微處理器。

可以用高級(jí)過(guò)程或面向?qū)ο蟮木幊陶Z(yǔ)言實(shí)現(xiàn)所述程序代碼,以與處理系統(tǒng)通信。如果需要,可以用匯編或機(jī)器語(yǔ)言實(shí)現(xiàn)所述程序代碼。事實(shí)上,本文所述的機(jī)制范圍上不限于任何特定的編程語(yǔ)言。任何情況下,該語(yǔ)言都可以是編譯或解釋語(yǔ)言。

至少一個(gè)實(shí)施例的一個(gè)或多個(gè)方面可以由機(jī)器可讀介質(zhì)上存儲(chǔ)的表示處理器內(nèi)各種邏輯的表示性數(shù)據(jù)實(shí)現(xiàn),機(jī)器讀取時(shí)其使得該機(jī)器制作執(zhí)行本文所述的技術(shù)的邏輯。這些稱(chēng)作“ip核”的表示可以存儲(chǔ)在有形的機(jī)器可讀介質(zhì)上,并提供給各種客戶(hù)或制造工廠以載入實(shí)際制造所述邏輯或處理器的制作機(jī)器。這些機(jī)器可讀存儲(chǔ)介質(zhì)可以包括,而不限于,機(jī)器或設(shè)備制造或形成的粒子的非瞬態(tài)有形布置,包括諸如硬盤(pán)、包括軟盤(pán)、光盤(pán)、壓縮磁盤(pán)只讀存儲(chǔ)器(cd-rom)、可重寫(xiě)壓縮磁盤(pán)(cd-rw)、磁光盤(pán)的任意類(lèi)型盤(pán)、諸如只讀存儲(chǔ)器(rom)、例如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram)、靜態(tài)隨機(jī)存取存儲(chǔ)器(sram)的隨機(jī)存取存儲(chǔ)器(ram)、可擦除可編程只讀存儲(chǔ)器(eprom)、閃存、電可擦除可編程只讀存儲(chǔ)器(eeprom)的半導(dǎo)體設(shè)備、磁卡或光卡、或適于存儲(chǔ)電子指令的任意其它類(lèi)型的介質(zhì)。

因此,本發(fā)明的實(shí)施例還包括包含用于執(zhí)行本發(fā)明的操作實(shí)施例的指令或包含定義本文描述的結(jié)構(gòu)、電路、裝置、處理器和/或系統(tǒng)特征的諸如hdl的設(shè)計(jì)數(shù)據(jù)的非瞬態(tài)的有形機(jī)器可讀介質(zhì)。這些實(shí)施例也可以稱(chēng)作程序產(chǎn)品。

本文公開(kāi)的某些指令操作可以由硬件組件執(zhí)行,并可以由用于促成或至少造成用執(zhí)行所述操作的指令編程的電路或其它硬件組件的機(jī)器可讀指令實(shí)現(xiàn)。所述電路可以包括不過(guò)命名一些實(shí)例的通用或?qū)S锰幚砥?、或邏輯電路。所述操作還可以選擇性地由硬件及軟件組合執(zhí)行。執(zhí)行邏輯和/或處理器可以包括響應(yīng)于機(jī)器指令或一個(gè)或多個(gè)由所述機(jī)器指令導(dǎo)出的控制信號(hào)的具體或特定電路,以存儲(chǔ)指令規(guī)定的結(jié)果操作數(shù)。例如,可以在圖1、2的一個(gè)或多個(gè)系統(tǒng)中執(zhí)行本文公開(kāi)的指令的實(shí)施例,且所述指令的實(shí)施例可以存儲(chǔ)在所述系統(tǒng)中執(zhí)行的程序代碼內(nèi)。另外,這些圖的處理元件可以利用本文詳述的具體流水線和/或架構(gòu)(例如有序和無(wú)序架構(gòu))之一。例如,所述有序架構(gòu)中的解碼單元可以解碼所述指令,并將解碼的指令傳遞給向量或標(biāo)量單元等。

縱觀之前的描述,出于解釋目的,展示了若干具體細(xì)節(jié)以提供對(duì)本發(fā)明的全面了解。然而,無(wú)需其中的某些細(xì)節(jié)就可以實(shí)現(xiàn)本發(fā)明,對(duì)于本領(lǐng)域技術(shù)人員來(lái)說(shuō)是顯而易見(jiàn)的。因此,應(yīng)該根據(jù)隨后的權(quán)利要求書(shū)來(lái)判斷本發(fā)明的范疇及精神。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
互助| 静海县| 城口县| 浪卡子县| 泰安市| 淅川县| 明水县| 邵东县| 周宁县| 信宜市| 镇康县| 仁怀市| 磐安县| 双江| 民勤县| 镇巴县| 广丰县| 藁城市| 大渡口区| 澎湖县| 大理市| 射阳县| 留坝县| 嘉义市| 香河县| 遂昌县| 津南区| 寿光市| 周宁县| 鲜城| 大化| 尚义县| 岳普湖县| 巴楚县| 齐齐哈尔市| 靖安县| 永城市| 磐石市| 阜南县| 南木林县| 迁安市|