用于提交指令的選擇性執(zhí)行的方法、設(shè)備和系統(tǒng)的制作方法
【專利摘要】用于確定是否要執(zhí)行提交動(dòng)作的處理器的技術(shù)和機(jī)制。在實(shí)施例中,處理器執(zhí)行多項(xiàng)操作以確定提交指令是否用于提交動(dòng)作的有條件執(zhí)行。在另一個(gè)實(shí)施例中,響應(yīng)于確定該提交指令用于該提交動(dòng)作的有條件執(zhí)行,對(duì)處理器狀態(tài)的一個(gè)或多個(gè)條件進(jìn)行評(píng)價(jià),其中執(zhí)行該評(píng)價(jià)以確定是否要執(zhí)行該提交指令所指示的提交動(dòng)作。
【專利說(shuō)明】用于提交指令的選擇性執(zhí)行的方法、設(shè)備和系統(tǒng)
發(fā)明背景
1.發(fā)明領(lǐng)域
[0001]各實(shí)施例總體上涉及數(shù)據(jù)處理器裝置的操作。更具體地,某些實(shí)施例涉及用于確定處理器是否要執(zhí)行由提交指令所指示的提交動(dòng)作的機(jī)制。
2.【背景技術(shù)】
[0002]現(xiàn)代的處理器設(shè)計(jì)實(shí)現(xiàn)了完善的檢查點(diǎn)設(shè)置機(jī)制一例如,寄存器檢查點(diǎn)設(shè)置和存儲(chǔ)器檢查點(diǎn)設(shè)置一其允許優(yōu)化器邏輯來(lái)創(chuàng)建有待推測(cè)性地執(zhí)行的代碼的激進(jìn)優(yōu)化版本。在證明推測(cè)性執(zhí)行是正確的情況下,通過(guò)提交動(dòng)作將推測(cè)性狀態(tài)提升為已提交架構(gòu)狀態(tài)。另一方面,不正確的推測(cè)性執(zhí)行弓I起處理器狀態(tài)被回滾到先前的、一致的狀態(tài)。
[0003]由于資源加載以及存儲(chǔ)操作需要,提交指令和它們調(diào)用的提交動(dòng)作對(duì)處理器性能造成巨大開(kāi)銷,特別是在多核環(huán)境下。例如,為了保證存儲(chǔ)器一致性,提交點(diǎn)需要在多處理器的高速緩存系統(tǒng)中全局地觀察所有未決存儲(chǔ)器操作。其結(jié)果是,直到非核觀察到所有未決存儲(chǔ)器缺失項(xiàng)時(shí)才可以認(rèn)為提交是完整的。由于這種要求,在有序處理器設(shè)計(jì)下,提交動(dòng)作典型地生成暫停循環(huán)的約5% -10%。
附圖簡(jiǎn)要說(shuō)明
[0004]通過(guò)示例但不是限制性地在附圖中的圖中展示了本發(fā)明的各實(shí)施例,在附圖中:
[0005]圖1為框圖,展示了根據(jù)實(shí)施例的用于傳送提交指令的計(jì)算機(jī)平臺(tái)的某些組件。
[0006]圖2為框圖,展示了根據(jù)實(shí)施例的用于確定是否執(zhí)行提交指令所指示的提交動(dòng)作的處理器的某些元件。
[0007]圖3為流程圖,展示了根據(jù)實(shí)施例的用于對(duì)提交指令進(jìn)行處理的方法的某些元素。
[0008]圖4為框圖,展示了根據(jù)實(shí)施例的提交指令的某些元素。
[0009]圖5為邏輯圖,展示了根據(jù)實(shí)施例的用于對(duì)條件性提交指令進(jìn)行處理的電路的某些元素。
詳細(xì)說(shuō)明
[0010]可以將提交指令或動(dòng)作分類為需要執(zhí)行提交動(dòng)作以獲得正確的功能性(例如,否則系統(tǒng)不工作)的提交指令和被執(zhí)行是例如僅因?yàn)閮?yōu)化器邏輯具有有限優(yōu)化范圍的提交指令??梢蕴^(guò)這后一組的提交指令或動(dòng)作而不影響正確性,但會(huì)影響性能和能力(向好的方向或向壞的方向)。例如,在由若干編譯階段組成的軟件優(yōu)化器系統(tǒng)中,其中第一階段由一次對(duì)一個(gè)指令進(jìn)行解釋并在每一個(gè)之后提交狀態(tài)的解釋器或仿真器所組成,對(duì)這些提交有正確性要求。另一方面,當(dāng)執(zhí)行在其他編譯階段中所優(yōu)化的代碼的版本時(shí),所添加的提交指令中的一些指令可以僅僅由于優(yōu)化器邏輯的有限范圍而被添加,并且在不影響正確性情況下可被跳過(guò)。
[0011]本文討論的實(shí)施例以不同方式提供了用于確定是否要由處理器執(zhí)行提交動(dòng)作的技術(shù)和機(jī)制。如本文所使用的,“提交動(dòng)作”是指由處理器執(zhí)行的(或要執(zhí)行的)用于將某一先前的僅推測(cè)性的狀態(tài)提升至有效處理器狀態(tài)水平的一個(gè)或多個(gè)操作的集合,這些先前的僅推測(cè)性的狀態(tài)在提交動(dòng)作之前已經(jīng)受了在某一回滾操作中被處理掉的可能性。
[0012]如本文中所使用的,“提交指令”(或“提交消息”)是指用于向處理器指示將要執(zhí)行提交動(dòng)作的可能性的通信。在實(shí)施例中,提交指令可以指示必須執(zhí)行提交動(dòng)作一例如,至少在如下情況下:提交指令的發(fā)送旨在命令提交動(dòng)作的執(zhí)行而不管任何其他處理器狀態(tài)。為了簡(jiǎn)潔,這種命令在本文中被稱為絕對(duì)命令。可替代地,提交指令可以指示提交動(dòng)作的僅僅是有條件執(zhí)行(contingent performance)一至少在如下情況下:提交指令的發(fā)送旨在命令處理器進(jìn)一步對(duì)處理器狀態(tài)的一個(gè)或多個(gè)條件進(jìn)行評(píng)價(jià),作為確定是否要執(zhí)行所指示的提交動(dòng)作的依據(jù)。為了簡(jiǎn)潔,這種命令在本文中被稱為條件命令。
[0013]處理器可以執(zhí)行對(duì)提交指令的評(píng)價(jià)以確定該提交指令是否用于提交動(dòng)作的有條件執(zhí)行一例如,該提交指令是否代表有別于絕對(duì)提交命令的有條件命令。確定提交指令代表絕對(duì)提交命令可以包括確定所代表的命令不是有條件的。類似地,確定提交指令代表?xiàng)l件性提交命令可以包括確定所代表的提交命令不是絕對(duì)的。
[0014]確定提交命令是絕對(duì)的可以例如是用于處理器開(kāi)始相應(yīng)的提交動(dòng)作的充分條件。與此相反,確定提交命令是條件性的可以例如致使處理器發(fā)起對(duì)一個(gè)或多個(gè)附加條件的評(píng)價(jià)以確定是否要執(zhí)行相應(yīng)的提交動(dòng)作。這種評(píng)價(jià)可被執(zhí)行例如用以識(shí)別要執(zhí)行提交動(dòng)作和/或用以識(shí)別不要執(zhí)行提交動(dòng)作。為了簡(jiǎn)潔,用于確定提交指令所代表的提交命令的絕對(duì)性質(zhì)或確定其條件性質(zhì)的一個(gè)或多個(gè)操作在本文中被稱為“有條件性測(cè)試”。
[0015]如本文中所使用的,“提示信息”是指有條件性測(cè)試所測(cè)試的和/或以其他方式所評(píng)價(jià)的信息一在如下情況下:這種信息可以用作關(guān)于提交動(dòng)作是否將產(chǎn)生自對(duì)提交指令的處理的提示。以示例性但非限制性的方式,有條件性測(cè)試可以確定某些提示信息的一個(gè)或多個(gè)值和/或僅測(cè)試某些提示信息的存在(或不存在)。
[0016]在實(shí)施例中,可以在提交指令本身中提供提示信息。以示例性但非限制性的方式,提交指令可以包括用于存儲(chǔ)表達(dá)指令具有提交指令類型的信息的字段,此處該字段被稱為“命令字段”。提交指令類型可以例如是要對(duì)該提交指令進(jìn)行處理的處理器的指令集內(nèi)包括的或其以另外方式支持的指令類型。
[0017]在實(shí)施例中,給定指令的命令字段中的信息可以表達(dá)通用提交指令類型一例如,在可能需要參考該命令字段以外的附加信息從而解決那個(gè)具體的命令指令是否用于有條件提交命令或絕對(duì)提交命令的情況下。在替代性實(shí)施例中,給定指令的命令字段中的信息可以具體地表達(dá)多種不同的提交指令類型其中之一一例如,絕對(duì)提交指令類型和有條件提交指令類型中的一種一其中在這些不同的提交指令類型之間區(qū)分處理器的指令集。
[0018]在實(shí)施例中,有條件性測(cè)試可以附加地或可替代地基于提交指令中提示信息的存在和/或提示信息的不存在一例如,除了命令字段信息以外的信息。以示例性但非限制性的方式,提交指令可以包括一個(gè)或多個(gè)參數(shù)一例如,包括在位、標(biāo)記或其他這種字段存儲(chǔ)的參數(shù)一每個(gè)參數(shù)用于存儲(chǔ)對(duì)應(yīng)值,該對(duì)應(yīng)值指定或以另外方式指示所代表的提交命令是有條件的還是絕對(duì)的。有條件性測(cè)試可以對(duì)這種字段中存儲(chǔ)的值進(jìn)行評(píng)價(jià),或在一實(shí)施例中僅測(cè)試存在或不存在這種字段。
[0019]附加地附加地或可替代地,獨(dú)立于提交指令,可以使得提示信息對(duì)處理器是可獲取的一例如,在某個(gè)單獨(dú)通信已經(jīng)將處理器配置成將提交指令識(shí)別為代表有條件提交或者絕對(duì)提交的之一情況下。[0020]以示例性但非限制性的方式,處理器可以存儲(chǔ)或以另外的方式訪問(wèn)配置信息,該配置信息指定了提交指令被假定為(不存在相反的指示的情況下)有條件的或者絕對(duì)的之一。在實(shí)施例中,可以參考這種配置信息來(lái)確定是否要執(zhí)行有條件性測(cè)試、或是否有必要發(fā)起提交動(dòng)作。
[0021]圖1示出了根據(jù)實(shí)施例的用于確定是否執(zhí)行提交動(dòng)作的示例性計(jì)算機(jī)平臺(tái)100的元件。計(jì)算機(jī)平臺(tái)100可以例如包括個(gè)人計(jì)算機(jī)(如臺(tái)式計(jì)算機(jī)、膝上型計(jì)算機(jī)、手持式計(jì)算機(jī)(例如,平板計(jì)算機(jī)、掌上型計(jì)算機(jī)、蜂窩電話、多媒體播放器和/或類似物))、和/或其他這樣的計(jì)算機(jī)系統(tǒng)的硬件平臺(tái)??商娲鼗蚋郊拥?,計(jì)算機(jī)平臺(tái)100可以提供作為服務(wù)器、工作站、或其他這樣的計(jì)算機(jī)系統(tǒng)來(lái)運(yùn)行。
[0022]在實(shí)施例中,計(jì)算機(jī)平臺(tái)100包括總線101或其他用于傳送信息的這種硬件以及用于處理這種信息的處理器109—例如,中央處理單元。處理器109可以包括復(fù)雜指令集計(jì)算機(jī)(CISC)型架構(gòu)、精簡(jiǎn)指令集計(jì)算機(jī)(RISC)型架構(gòu)和/或多種處理器架構(gòu)類型中任何類型的功能性一例如,其中處理器109通過(guò)總線101與計(jì)算機(jī)平臺(tái)100的一個(gè)或多個(gè)其他組件相耦合。以示例性但非限制性的方式,計(jì)算機(jī)平臺(tái)100可以包括以連接到總線101上的由示例性主存儲(chǔ)器104所代表的隨機(jī)存取存儲(chǔ)器(RAM)或其他動(dòng)態(tài)存儲(chǔ)裝置,用于存儲(chǔ)將由處理器109執(zhí)行的信息和/或指令。主存儲(chǔ)器104還可以用于在處理器109執(zhí)行指令的過(guò)程中存儲(chǔ)臨時(shí)變量或其他中間信息。附加地附加地或可替代地,計(jì)算機(jī)平臺(tái)100可以包括只讀存儲(chǔ)器(ROM) 106和/或其他靜態(tài)存儲(chǔ)裝置(例如,其中R0M106通過(guò)總線101耦合到處理器109)以存儲(chǔ)用于處理器109的靜態(tài)信息和/或指令。
[0023]在實(shí)施例中,附加地或可替代地,計(jì)算機(jī)平臺(tái)100包括數(shù)據(jù)存儲(chǔ)裝置107(例如,磁盤(pán)、光盤(pán)、和/或其他機(jī)器可讀介質(zhì)),數(shù)據(jù)存儲(chǔ)裝置107例如通過(guò)總線101連接到處理器109。數(shù)據(jù)存儲(chǔ)裝置107可以例如包括有待在處理器109上運(yùn)行的和/或以另外方式被處理器109訪問(wèn)的指令或其他信息。在實(shí)施例中,處理器109可以確定是否執(zhí)行提交動(dòng)作,該確定基于提交指令和/或從主存儲(chǔ)器104、R0M106、數(shù)據(jù)存儲(chǔ)裝置107或任何其他合適的數(shù)據(jù)源接收的其他信息。
[0024]附加地或可替代地,計(jì)算機(jī)平臺(tái)100可以包括用于向計(jì)算機(jī)用戶顯示信息的顯示裝置121。顯示裝置121可以例如包括幀緩沖器、專用圖像渲染裝置、陰極射線管(CRT)、平板顯示器和/或類似物。附加地或可替代地,計(jì)算機(jī)平臺(tái)100可以包括輸入裝置122,該輸入裝置包括字母數(shù)字鍵和/或其他鍵來(lái)接收用戶輸入。附加地或可替代地,計(jì)算機(jī)平臺(tái)100可以包括光標(biāo)控制裝置123(如鼠標(biāo)、跟蹤球、筆、觸摸屏、或光標(biāo)方向鍵)用于將位置、選擇或其他光標(biāo)信息傳送至處理器109、和/或控制光標(biāo)例如在顯示裝置121上的移動(dòng)。附加地或可替代地,計(jì)算機(jī)平臺(tái)100可以包括硬拷貝裝置124(如打印機(jī))、錄音/回放裝置125 (如擴(kuò)音器或揚(yáng)聲器)、數(shù)字視頻裝置126 (如靜止或移動(dòng)照相機(jī))和/或類似物。
[0025]在實(shí)施例中,計(jì)算機(jī)平臺(tái)100包括或耦合到網(wǎng)絡(luò)接口 190,網(wǎng)絡(luò)接口 190用于將計(jì)算機(jī)平臺(tái)100連接到一個(gè)或多個(gè)網(wǎng)絡(luò)(未示出)一例如,包括專用存儲(chǔ)區(qū)域網(wǎng)(SAN)、局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)、虛擬LAN (VLAN)、互聯(lián)網(wǎng)和/或類似物。以示例性但非限制性的方式,網(wǎng)絡(luò)接口 190可以包括網(wǎng)絡(luò)接口卡(NIC)、天線(如偶極天線)、或無(wú)線收發(fā)器中的一個(gè)或多個(gè),盡管本發(fā)明的范圍在此方面沒(méi)有限制。
[0026]處理器109可以支持與多種常規(guī)指令集中的任何指令集中的指令類似的指令一例如,與現(xiàn)有處理器所使用的x86指令集兼容的指令集。以示例性但非限制性的方式,處理器109可以支持與如美國(guó)加利福尼亞州圣克拉拉市的英特爾公司(Intel Corporation)所定義的IA?英特爾架構(gòu)中支持的一些或所有操作對(duì)應(yīng)的操作(見(jiàn)“IA-32 Intel?架構(gòu)軟件開(kāi)發(fā)者手冊(cè)第2卷:指令集參考(IA-32 Intel? Architecture SoftwareDevelopers Manual Volume2:1nstruction Set Reference) ”,序列號(hào) 245471,可在萬(wàn)維網(wǎng)上在developer, intel.com網(wǎng)站處從美國(guó)加利福尼亞州圣克拉拉市的英特爾公司獲得)。其結(jié)果是,除了某些實(shí)施例的操作以外,處理器109還可以支持例如與現(xiàn)有x86操作對(duì)應(yīng)的一項(xiàng)或多項(xiàng)操作。
[0027]根據(jù)實(shí)施例,處理器109可以進(jìn)一步包括用于處理提交指令的電路邏輯。以示例性但非限制性的方式,處理器109可以包括解碼器130,解碼器130用于檢測(cè)處理器109已經(jīng)接收到的或以另外方式訪問(wèn)的提交指令。提交解碼器130可以例如根據(jù)處理器109的指令集(未示出)對(duì)所檢測(cè)到的提交指令進(jìn)行解碼。處理器109可以進(jìn)一步包括執(zhí)行單元140,執(zhí)行單元140用于執(zhí)行所解碼的提交指令。
[0028]在實(shí)施例中,解碼器130和執(zhí)行單元140對(duì)提交指令的處理可以包括確定提交指令是否用于提交動(dòng)作的有條件執(zhí)行一即,提交指令是否代表有條件提交命令。處理器109可以進(jìn)一步包括或以另外方式訪問(wèn)狀態(tài)信息150,該狀態(tài)信息代表一個(gè)或多個(gè)條件,該一個(gè)或多個(gè)條件例如響應(yīng)于提交指令是提交指令的有條件執(zhí)行的某種確定而有待評(píng)價(jià)。對(duì)狀態(tài)信息150中的一個(gè)或多個(gè)條件的評(píng)價(jià)可以導(dǎo)致提交指令所指示的提交動(dòng)作被執(zhí)行??商娲兀瑢?duì)狀態(tài)信息150的一個(gè)或多個(gè)條件的評(píng)價(jià)可以導(dǎo)致所指示的提交動(dòng)作被一起避免。
[0029]根據(jù)實(shí)施例,計(jì)算機(jī)平臺(tái)100的架構(gòu)說(shuō)明了用于對(duì)提交指令進(jìn)行處理的計(jì)算機(jī)系統(tǒng)。然而,在一些實(shí)施例中,計(jì)算機(jī)平臺(tái)100的架構(gòu)(例如,耦合用于與處理器109交換通信的裝置的具體數(shù)量和類型和/或這種裝置相對(duì)于彼此的相對(duì)配置)是沒(méi)有限制的。
[0030]圖2展示了根據(jù)實(shí)施例的用于處理提交指令的處理器200的元件。處理器200可以在具有計(jì)算機(jī)平臺(tái)100的一些或所有特征的計(jì)算機(jī)平臺(tái)內(nèi)運(yùn)行一例如,其中處理器200包括處理器109的一些或所有功能性。處理器200可以是多種處理器類型中的任何一種類型,如單核處理器或包括多個(gè)同構(gòu)或異構(gòu)核的多核處理器。
[0031]在實(shí)施例中,處理器200包括三組通用功能組成部分,即,前端(FE)210、存儲(chǔ)器子系統(tǒng)(MS) 220、以及(BE)后端230。FE210可以例如包括支持某種常規(guī)指令解碼功能性的邏輯一例如,用于支持按序執(zhí)行或亂序執(zhí)行。附加地或可替代地,BE230可以包括例如保留站、引退緩沖器、執(zhí)行單元、寄存器堆和/或其他架構(gòu)元件的某些常規(guī)功能性一來(lái)調(diào)節(jié)數(shù)據(jù)執(zhí)行的流程。在某些實(shí)施例中,提供功能性(如英特爾架構(gòu)"*(從32)處理器、FE210和BE230的功能性)可以進(jìn)一步通過(guò)以下事實(shí)進(jìn)行區(qū)別:FE210主要處理宏操作,這些宏操作為匯編指令,而B(niǎo)E230處理經(jīng)解碼的微操作(μ op),這些經(jīng)解碼的微操是與宏操作具有多對(duì)一映射的更簡(jiǎn)單指令。
[0032]相應(yīng)地,如圖2中所示,示例性前端210可以包括例如指令高速緩存和獲取邏輯212以從較低高速緩存級(jí)別(例如,存儲(chǔ)器子系統(tǒng)220的高速緩存222)獲得指令信息一例如,從而臨時(shí)地存儲(chǔ)預(yù)期在不久后或多次使用的指令。對(duì)指令進(jìn)行解碼的一個(gè)或多個(gè)解碼器213以及存儲(chǔ)與指令集215相關(guān)的未決指令的指令隊(duì)列214可以耦合到指令高速緩存212。盡管某些實(shí)施例在此方面沒(méi)有限制,分支預(yù)測(cè)單元(BPU)216可以附加地或可替代地存在于FE210中以預(yù)測(cè)在程序執(zhí)行過(guò)程中有待采用的分支,從而使得可以提前獲得與所預(yù)測(cè)的分支相關(guān)聯(lián)的指令。
[0033]在實(shí)施例中,指令集215定義或以另外方式支持提交指令類型218。解碼器213可以包括或以另外方式訪問(wèn)用于對(duì)提交指令類型218的指令進(jìn)行解碼的邏輯。在實(shí)施例中,對(duì)這種提交指令進(jìn)行解碼可以包括執(zhí)行一項(xiàng)或多項(xiàng)操作以確定提交指令是否用于提交動(dòng)作的有條件執(zhí)行。在替代性實(shí)施例中,有條件性測(cè)試的這種執(zhí)行可以是后端230對(duì)已解碼的提交指令的執(zhí)行的一部分。
[0034]如所示,前端210可以與存儲(chǔ)器子系統(tǒng)220進(jìn)行通信。子系統(tǒng)220可以包括一個(gè)或多個(gè)高速緩存222—例如,包括I級(jí)(LI)和2級(jí)(L2)高速緩存,其中LI高速緩存可以是數(shù)據(jù)高速緩存,并且L2高速緩存可以是包括數(shù)據(jù)和指令兩者的統(tǒng)一的高速緩存。為了輔助地址轉(zhuǎn)換,子系統(tǒng)220可以進(jìn)一步包括一個(gè)或多個(gè)常規(guī)機(jī)制,如數(shù)據(jù)轉(zhuǎn)換旁路緩沖器(DTLB) 224,并且在某些實(shí)施例中包括頁(yè)面未命中處理器(?1^)226—例如,從而當(dāng)011^224出現(xiàn)未命中時(shí)幫助從存儲(chǔ)器層級(jí)的其他級(jí)別訪問(wèn)所請(qǐng)求的信息。又進(jìn)一步地,存儲(chǔ)器子系統(tǒng)可以包括存儲(chǔ)器順序緩沖器(MOB) 228,其可以包括存儲(chǔ)和加載緩沖器以存儲(chǔ)與未決數(shù)據(jù)傳遞指令相關(guān)聯(lián)的條目,例如,存儲(chǔ)或加載指令。然而,某些實(shí)施例在關(guān)于用于輔助訪問(wèn)高速緩存222的存儲(chǔ)器子系統(tǒng)220的具體組件上可以沒(méi)有限制。
[0035]后端230進(jìn)一步耦合到前端210和存儲(chǔ)器子系統(tǒng)220兩者上,該后端可以用于例如執(zhí)行前端210所解碼的指令。如圖2中所示,示例性后端230可以包括寄存器堆233a、影子寄存器堆233b和一個(gè)或多個(gè)執(zhí)行單元234,該一個(gè)或多個(gè)執(zhí)行單元可以包括一個(gè)或多個(gè)整數(shù)單元、浮點(diǎn)單元、向量單元和/或類似物。又進(jìn)一步地,后端230可以包括保留站236,這些保留站可以用于向執(zhí)行單元234提供指令和操作數(shù)。進(jìn)而,通過(guò)分配和重命名表238向保留站236提供條目,伴隨著對(duì)某一有限數(shù)量的邏輯寄存器到寄存器堆233a和/或影子寄存器233b中存在的更大數(shù)量 的物理寄存器的任意重命名,這些分配和重命名表可以從前端210接收入指令并將它們分配給各種資源,包括執(zhí)行單元234和寄存器堆232。
[0036]后端230可以包括一個(gè)或多個(gè)用于執(zhí)行所解碼的提交指令(例如,包括由處理器200進(jìn)行的對(duì)提交動(dòng)作的執(zhí)行)的組件。某些包括提交動(dòng)作本身的操作可以根據(jù)用于提交處理器狀態(tài)的一種或多種常規(guī)技術(shù)。該提交可以導(dǎo)致寄存器堆233a被拷貝進(jìn)影子寄存器堆233b并且與高速緩存222的一行或多行相對(duì)應(yīng)的推測(cè)性位被清除。在實(shí)施例中,直到所有這些動(dòng)作完成才可以引退提交指令。
[0037]在執(zhí)行單元234進(jìn)行的對(duì)代碼的某種后續(xù)推測(cè)性執(zhí)行的過(guò)程中,可以將推測(cè)性狀態(tài)信息寫(xiě)入到寄存器堆233a和/或到存儲(chǔ)器子系統(tǒng)220,從而對(duì)高速緩存222的一條或多條推測(cè)性高速緩存行狀態(tài)進(jìn)行描述。當(dāng)執(zhí)行回滾動(dòng)作后,可以丟棄推測(cè)性存儲(chǔ)器請(qǐng)求,可以將影子寄存器堆233b拷貝回寄存器堆233a,并且高速緩存22中推測(cè)性位被置位的所有高速緩存行可以被設(shè)置成是無(wú)效的。在實(shí)施例中,直到所有這些動(dòng)作完成才可以引退回滾指令。
[0038]當(dāng)確定提交指令用于提交動(dòng)作的條件性執(zhí)行時(shí),一個(gè)或多個(gè)執(zhí)行單元234可以對(duì)狀態(tài)信息(例如,由處理器的一個(gè)或多個(gè)狀態(tài)寄存器240的示例性集合所代表)進(jìn)行評(píng)價(jià)。該一個(gè)或多個(gè)狀態(tài)寄存器240可以例如不同地存儲(chǔ)代表當(dāng)前處理器狀態(tài)的信息,該代表當(dāng)前處理器狀態(tài)的信息在處理器200的各指令執(zhí)行和/或其他進(jìn)行中的操作過(guò)程中被定期地更新。以示例性但非限制性的方式,一個(gè)或多個(gè)狀態(tài)寄存器240可以存儲(chǔ)自從具體事件以來(lái)(例如,自從最近的提交動(dòng)作以來(lái),自從最近的回滾和/或類似事件以來(lái))已經(jīng)執(zhí)行的指令的數(shù)量的計(jì)數(shù)??商娲鼗蚋郊拥?,一個(gè)或多個(gè)狀態(tài)寄存器240可以存儲(chǔ)當(dāng)前執(zhí)行未決的指令的數(shù)量的計(jì)數(shù)、還有待全局觀察的未決存儲(chǔ)器請(qǐng)求的數(shù)量的計(jì)數(shù)、識(shí)別任何中斷當(dāng)前是否為未決的信息、或處理器狀態(tài)的多種附加或替代性方面中的任何一種。
[0039]在實(shí)施例中,處理器200可以使用例如存儲(chǔ)在狀態(tài)寄存器240和/或其他地方的其他信息來(lái)對(duì)處理器狀態(tài)進(jìn)行評(píng)價(jià)。以示例性但非限制性的方式,處理器200可以訪問(wèn)指定一個(gè)或多個(gè)閾值的信息一一個(gè)或多個(gè)閾值例如,自從具體事件以來(lái)已經(jīng)執(zhí)行的指令的閾值數(shù)量、當(dāng)前執(zhí)行未決的指令的閾值數(shù)量、當(dāng)前未決中斷的閾值數(shù)量和/或類似物中的一個(gè)或多個(gè)。
[0040]當(dāng)有條件提交命令的某個(gè)或某些條件的評(píng)價(jià)識(shí)別出沒(méi)有滿足一個(gè)或多個(gè)條件,則提交指令所指示的提交動(dòng)作可以被一起避免(“跳過(guò)”)。所跳過(guò)的提交動(dòng)作可以充當(dāng)處理器200的流水線中的NOP指令。如此,在處理器狀態(tài)的各條件下,代表有條件命令的提交指令可以不執(zhí)行上述操作中的任一項(xiàng)操作來(lái)實(shí)施提交動(dòng)作。反而,響應(yīng)于沒(méi)有滿足一個(gè)或多個(gè)條件,可以引退該提交指令。
[0041]圖3展示了根據(jù)實(shí)施例的用于處理提交指令的方法300的元素。可以例如由包括處理器200的一些或所有特征的處理器來(lái)執(zhí)行方法300。
[0042]在實(shí)施例中,方法300包括:在310,檢測(cè)指示提交動(dòng)作的提交指令。例如,在執(zhí)行某個(gè)代碼指令序列的過(guò)程中,可以將提交指令發(fā)送到處理器,或由處理器檢索或以另外方式訪問(wèn)提交指令。方法300可以進(jìn)一步包括:在320,例如響應(yīng)于對(duì)提交指令的檢測(cè),確定該提交指令是否用于提交動(dòng)作的有條件執(zhí)行。在實(shí)施例中,這種確定可以基于命令指令的命令有條件性參數(shù)的值一例如,提示位參數(shù)中的值。這可以是例如該提交指令具有對(duì)提交動(dòng)作命令的絕對(duì)執(zhí)行和提交動(dòng)作的有條件執(zhí)行兩者是通用的提交指令類型的情況。
[0043]可替代地或附加地,其他信息可以用作為提交指令的有條件性測(cè)試的依據(jù)。例如,在310檢測(cè)到的提交指令可以包括命令字段,該命令字段存儲(chǔ)有指定該提交指令的指令類型的信息一例如,其中處理器的指令集定義或以另外方式支持該指令類型。確定提交指令是否用于提交動(dòng)作的有條件執(zhí)行可以基于這種指示提交指令類型的命令字段,該提交指令類型被特定為提交動(dòng)作的有條件執(zhí)行一例如,如區(qū)別于提交動(dòng)作的絕對(duì)執(zhí)行。
[0044]在對(duì)通用提交指令類型的指令進(jìn)行處理時(shí),當(dāng)不存在包括指定該指令代表絕對(duì)提交命令的有條件性參數(shù)信息的指令時(shí),處理器可以被配置成用于實(shí)施如下假定:將該提交指令類型的該指令認(rèn)為是代表有條件提交命令。在替代性實(shí)施例中,當(dāng)不存在包括指定該指令代表有條件提交命令的有條件性參數(shù)信息的指令時(shí),處理器可以被配置成用于實(shí)施如下另一個(gè)假定:將該提交指令類型的該指令替代地認(rèn)為是代表絕對(duì)提交命令。
[0045]基于提交指令是否用于提交動(dòng)作的有條件執(zhí)行的確定,方法300可以包括:在330,生成信號(hào),該信號(hào)指示是否要對(duì)一個(gè)或多個(gè)條件進(jìn)行評(píng)價(jià)以確定是否要執(zhí)行該提交動(dòng)作。例如,可以從處理器的前端的解碼器邏輯交換這種信號(hào)以確定處理器的后端的執(zhí)行單元的操作。在替代性實(shí)施例中,可以在處理器的后端的一個(gè)或多個(gè)執(zhí)行單元內(nèi)的功能組件之間交換這種信號(hào)。
[0046]在一個(gè)實(shí)施例中,可以由處理器的解碼器執(zhí)行在320的確定。在替代性實(shí)施例中,可以在已經(jīng)完成解碼之后由處理器的執(zhí)行單元執(zhí)行該確定。相應(yīng)地,可以由包括解碼器和執(zhí)行單元的處理器電路邏輯集合執(zhí)行在320的確定和在330的信號(hào)生成,盡管解碼器和執(zhí)行單元對(duì)這種操作的對(duì)應(yīng)貢獻(xiàn)可能根據(jù)不同實(shí)施例而不同。
[0047]根據(jù)不同實(shí)施例,對(duì)方法300所示的諸個(gè)操作可跟隨有一項(xiàng)或多項(xiàng)附加操作。例如,當(dāng)確定提交指令是用于提交動(dòng)作的有條件執(zhí)行時(shí),可以執(zhí)行對(duì)一個(gè)或多個(gè)條件的評(píng)價(jià)以識(shí)別是否要執(zhí)行該提交動(dòng)作。在實(shí)施例中,有待評(píng)價(jià)的一個(gè)或多個(gè)條件包括與處理器正在接收該提交指令相獨(dú)立的處理器狀態(tài)。
[0048]圖4展示了根據(jù)實(shí)施例的有待處理的提交指令400的元素??梢杂删哂欣缣幚砥?00的一些或所有特征的處理器來(lái)處理提交指令400。在實(shí)施例中,提交指令400的處理可以根據(jù)方法300。
[0049]提交指令400可以包括指示提交動(dòng)作的信息一例如,其中該信息指示這種提交動(dòng)作通過(guò)提交指令的執(zhí)行而要被執(zhí)行的可能性。例如,提交指令400可以包括指示提交指令400是否是用于這種提交動(dòng)作的條件性執(zhí)行的信息。
[0050]例如,提交指令400可以包括命令字段410,命令字段410存儲(chǔ)有指定具體提交指令類型的信息。命令字段410中的信息可以例如識(shí)別特定為有條件提交命令和絕對(duì)提交命令中具體一種的指令類型??商娲?,命令字段410中的信息可以識(shí)別至少在指令類型用于代表有條件提交命令或者絕對(duì)提交命令之一的情況下是通用的提交指令類型。
[0051 ] 提交指令400可以附加地或可替代地包括用于指示提交指令400是否用于提交動(dòng)作的條件性執(zhí)行的一個(gè)或多個(gè)參數(shù)。例如,提交指令400可以包括提示字段420,提示字段420用于存儲(chǔ)位值、標(biāo)記值和/或其他這種信息以代表提交指令所代表的命令的有條件性狀態(tài)(例如,有條件的或者絕對(duì)的之一)。
[0052]在實(shí)施例中,提交指令420可以包括一個(gè)或多個(gè)附加參數(shù)、或其他信息,從而幫助評(píng)價(jià)提交指令的執(zhí)行是否導(dǎo)致提交動(dòng)作的執(zhí)行。以示例性但非限制性的方式,提交指令400可以包括識(shí)別有待評(píng)價(jià)的一個(gè)或多個(gè)條件以確定是否要執(zhí)行提交動(dòng)作的信息(未示出)??商娲鼗蚋郊拥?,提交指令400可以包括識(shí)別在對(duì)一個(gè)或多個(gè)條件的評(píng)價(jià)中有待使用的一個(gè)或多個(gè)閾值等級(jí)從而執(zhí)行提交動(dòng)作的信息(未示出)。
[0053]圖5為根據(jù)實(shí)施例的電路500的功能展現(xiàn),該電路被配置成用于評(píng)價(jià)一個(gè)或多個(gè)條件以確定是否要執(zhí)行提交指令中所指示的提交動(dòng)作。電路500可以例如位于包括處理器200的一些或所有特征的處理器的電路邏輯內(nèi),盡管某些實(shí)施例在此方面上沒(méi)有限制。例如,電路500可以包括在執(zhí)行提交指令的一個(gè)或多個(gè)執(zhí)行單元234中的一個(gè)中或以另外方式對(duì)執(zhí)行提交指令的一個(gè)或多個(gè)執(zhí)行單元234中的一個(gè)可用。
[0054]電路500的工作可以響應(yīng)于對(duì)給定的提交指令用于提交動(dòng)作的有條件執(zhí)行的確定。這種執(zhí)行可以例如至少在其經(jīng)受電路500所執(zhí)行的評(píng)價(jià)的結(jié)果的情況下是有條件的。在圖5中所示的示例性場(chǎng)景中,電路500將接收用于對(duì)一個(gè)或多個(gè)條件進(jìn)行評(píng)價(jià)的一個(gè)或多個(gè)輸入510的集合從而執(zhí)行(或可替代地,從而不執(zhí)行)在提交指令中指示的提交動(dòng)作。
[0055]以示例性但非限制性的方式,處理器可以提供一個(gè)或多個(gè)配置寄存器,其中,優(yōu)化器例如可以存儲(chǔ)指定兩個(gè)提交點(diǎn)之間和/或回滾與提交之間的所執(zhí)行的指令的最大數(shù)量的信息。盡管跳過(guò)若干連續(xù)的跳過(guò)提交指令可能是有利的,但在某個(gè)點(diǎn)處,執(zhí)行提交比起跳過(guò)另一個(gè)提交機(jī)會(huì)而言是更高效的。例如,在當(dāng)前處理器狀態(tài)意味著回滾將需要撤銷太多工作(從而潛在地引起功率和性能問(wèn)題)時(shí)會(huì)是這種情況。在實(shí)施例中,電路500可以包括或以另外方式訪問(wèn)對(duì)已執(zhí)行的指令進(jìn)行計(jì)數(shù)的計(jì)數(shù)器寄存器。可以定期將這種計(jì)數(shù)器與某一指定的閾值進(jìn)行比較,并且每當(dāng)執(zhí)行提交或回滾動(dòng)作時(shí)就將計(jì)數(shù)器復(fù)位至零。該比較的結(jié)果可以強(qiáng)制在執(zhí)行提交指令時(shí)進(jìn)行提交,例如,當(dāng)提交指令指示可跳過(guò)的提交動(dòng)作但自從最后的提交點(diǎn)以來(lái)處理器已經(jīng)執(zhí)行了足夠的指令時(shí)。零閾值可以強(qiáng)制將所有可跳過(guò)的提交指令進(jìn)行提交。在實(shí)施例中,優(yōu)化器或其他代理可以修改閾值一例如,為了使不同地使處理器在操作期間的行為不同地適應(yīng)于諸個(gè)具體情況。用于確定和/或調(diào)整這種閾值的探索機(jī)制可以根據(jù)應(yīng)用特定的實(shí)施細(xì)節(jié)而不同,并且在某些實(shí)施例上沒(méi)有限制。
[0056]附加地或可替代地,電路500可以接收的輸入(例如基于來(lái)自存儲(chǔ)器子系統(tǒng)的信號(hào)),該輸入識(shí)別了對(duì)還有待全局觀察的存儲(chǔ)器請(qǐng)求的數(shù)量的當(dāng)前計(jì)數(shù)。例如,如果假設(shè)(為了簡(jiǎn)化的緣故)訪問(wèn)LI數(shù)據(jù)高速緩存的每個(gè)未命中的存儲(chǔ)器請(qǐng)求使用N個(gè)循環(huán)來(lái)有待全局觀察,則COMMIT (提交)、MEMORY (存儲(chǔ)器)、COMMIT、MEMORY和COMMIT的示例性指令序列可以暫停執(zhí)行流水線達(dá)2N個(gè)循環(huán)(在第二提交點(diǎn)處的N個(gè)循環(huán)并且在第三提交點(diǎn)處的 N 個(gè)循環(huán))。另一方面,COMMIT、MEMORY、COMMIT SKIPPED (提交跳過(guò))、MEM0RY 和 COMMIT的序列可以暫停流水線僅N個(gè)循環(huán)(在該第三提交點(diǎn)處),因?yàn)榈却钟^察的兩個(gè)存儲(chǔ)器請(qǐng)求均將被重疊。
[0057]因此,處理器可以包括對(duì)等待全局觀察的存儲(chǔ)器請(qǐng)求的數(shù)量進(jìn)行計(jì)數(shù)的計(jì)數(shù)器寄存器??梢詫⒋擞?jì)數(shù)器與另一個(gè)配置寄存器進(jìn)行比較,通過(guò)該比較,優(yōu)化器可以指定等待全局觀察的存儲(chǔ)器請(qǐng)求的閾值最小數(shù)量。如果等待全局觀察的未決存儲(chǔ)器請(qǐng)求少于閾值寄存器所指定的那些,則可以強(qiáng)制進(jìn)行提交。例如,只要存在全局觀察未決的存儲(chǔ)器請(qǐng)求(并且如果其他所有條件保持不變),這種寄存器的零值會(huì)引起諸個(gè)可跳過(guò)的提交動(dòng)作被跳過(guò)。
[0058]附加地或可替代地,處理器可以將未決中斷的數(shù)量用作為附加輸入或替代輸入以決定是執(zhí)行還是跳過(guò)可跳過(guò)的提交動(dòng)作。具體地,如果自從最后的提交點(diǎn)或回滾點(diǎn)以來(lái)存在未決中斷,則可以執(zhí)行可跳過(guò)的提交動(dòng)作。當(dāng)兩個(gè)提交之間的代碼執(zhí)行是推測(cè)性的,當(dāng)執(zhí)行提交點(diǎn)之間的代碼時(shí)典型地阻止中斷,并且如果在中間出現(xiàn)中斷則可能需要回滾至先前的一致的狀態(tài)。然而,由于延遲中斷過(guò)長(zhǎng)而引起執(zhí)行風(fēng)險(xiǎn),每當(dāng)提交指令指示有條件提交命令時(shí)如果中斷是未決的則可以強(qiáng)制執(zhí)行可跳過(guò)的提交動(dòng)作。
[0059]鑒于上述考慮,以下對(duì)根據(jù)一個(gè)實(shí)施例的電路500的示例性運(yùn)行的特征進(jìn)行討論。以示例性但非限制性的方式,用于電路500的一個(gè)或多個(gè)輸入510的集合可以包括對(duì)自從最近的提交動(dòng)作或回滾操作以來(lái)已經(jīng)執(zhí)行的指令的數(shù)量的當(dāng)前計(jì)數(shù)進(jìn)行識(shí)別的輸入。可替代地或附加地,該一個(gè)或多個(gè)輸入510可以包括對(duì)等待全局觀察的存儲(chǔ)器訪問(wèn)請(qǐng)求的當(dāng)前數(shù)量進(jìn)行識(shí)別的輸入和/或?qū)θ魏沃袛喈?dāng)前是否未決進(jìn)行識(shí)別的輸入。
[0060]在一個(gè)實(shí)施例中,一個(gè)或多個(gè)閾值510可以進(jìn)一步包括不同的閾值一例如,包括已經(jīng)執(zhí)行的指令的最大閾值數(shù)量和/或等待全局觀察的存儲(chǔ)器請(qǐng)求的最小閾值數(shù)量。圖5中所示的具體輸入510僅說(shuō)明了根據(jù)一個(gè)實(shí)施例的一種場(chǎng)景。然而,根據(jù)不同實(shí)施例,電路500可以接收多種的一個(gè)或多個(gè)附加或替代性輸入中的任何一個(gè)。
[0061]對(duì)于有條件提交命令的一個(gè)或多個(gè)條件的評(píng)價(jià)可以包括一個(gè)或多個(gè)輸入510,一個(gè)或多個(gè)輸入510各自被不同地提供到電路500的更多邏輯元件520中的對(duì)應(yīng)的多個(gè)元件。以示例性但非限制性的方式,邏輯元件520可以包括用于通過(guò)自從最近的提交動(dòng)作或回滾操作以來(lái)所執(zhí)行的指令的輸入數(shù)量來(lái)確定是否已經(jīng)超過(guò)了某一最大閾值數(shù)量的電路??商娲鼗蚋郊拥兀壿嬙?20可以確定等待全局觀察的存儲(chǔ)器請(qǐng)求的輸入當(dāng)前數(shù)量是否在某一最小閾值數(shù)量以下??商娲鼗蚋郊拥?,邏輯元件520可以確定任何中斷是否當(dāng)前未決。
[0062]在電路500的示例性方案中,可以進(jìn)一步地由邏輯元件520對(duì)上述確定的對(duì)應(yīng)的結(jié)果進(jìn)行操作一例如,在此對(duì)這些對(duì)應(yīng)的結(jié)果彼此求或(OR)。然而,邏輯元件520的具體評(píng)價(jià)操作僅說(shuō)明了根據(jù)一個(gè)實(shí)施例的一個(gè)場(chǎng)景。根據(jù)不同實(shí)施例,電路500可以執(zhí)行一個(gè)或多個(gè)附加或替代性評(píng)價(jià)操作的多種組合中的任何一種。
[0063]基于對(duì)一個(gè)或多個(gè)輸入510的集合進(jìn)行的邏輯操作,邏輯元件520可以生成信號(hào)530,信號(hào)530指示當(dāng)前處理器狀態(tài)是否滿足用于提交動(dòng)作的有條件執(zhí)行的更多條件中的一個(gè)條件。信號(hào)530可以識(shí)別提交動(dòng)作將被執(zhí)行或以另外方式提供用于識(shí)別提交動(dòng)作將被執(zhí)行的依據(jù)。例如,信號(hào)530與指示540進(jìn)行邏輯求與(AND),指示540表示提交指令的提示位被設(shè)置為指示有條件提交命令?;谛盘?hào)530和指示540,可以生成輸出550,該輸出550致使執(zhí)行提交指令中所指示的提交動(dòng)作。
[0064]本文中描述了用于操作處理器的技術(shù)和架構(gòu)。在以上描述中,出于解釋的目的,闡述了許多具體的細(xì)節(jié)以便提供某些實(shí)施例的徹底理解。然而,可以在沒(méi)有這些具體的細(xì)節(jié)的情況下實(shí)踐某些實(shí)施例對(duì)本領(lǐng)域的技術(shù)人員而言將是明顯的。在其他實(shí)例中,為了避免使本說(shuō)明書(shū)模糊,以框圖的形式示出了結(jié)構(gòu)和裝置。
[0065]本說(shuō)明書(shū)中對(duì)“一個(gè)實(shí)施例”或“實(shí)施例”的引用意味著結(jié)合該實(shí)施例所描述的具體特征、結(jié)構(gòu)、或特性包括在本發(fā)明的至少一個(gè)實(shí)施例中。短語(yǔ)“在一個(gè)實(shí)施例中”在本說(shuō)明書(shū)中各地方的出現(xiàn)不一定全都引用相同的實(shí)施例。
[0066]就對(duì)計(jì)算機(jī)存儲(chǔ)器內(nèi)的數(shù)據(jù)比特進(jìn)行的操作的算法和符號(hào)表示而言,在此介紹了詳細(xì)描述的一些部分。這些算法描述和表示為計(jì)算領(lǐng)域的技術(shù)人員用于最有效地向本領(lǐng)域的其他技術(shù)人員傳達(dá)其工作的實(shí)質(zhì)的手段。此處并且通常想到算法是產(chǎn)生所期望的結(jié)果的自相一致的一序列步驟。這些步驟為需要物理量的物理操縱的那些步驟。通常地但不一定,這些量采用能夠被存儲(chǔ)、傳遞、組合、比較、以及以另外方式操縱的電或磁信號(hào)的形式。主要出于常見(jiàn)用法的原因,多次證明以位、值、元素、符號(hào)、字符、術(shù)語(yǔ)、數(shù)字、或類似物引用這些信號(hào)是方便的。
[0067]然而,應(yīng)記住所有這些和相似術(shù)語(yǔ)與適當(dāng)?shù)奈锢頂?shù)量相關(guān)聯(lián)并且僅是應(yīng)用于這些量的方便標(biāo)記。如從本文中的討論中明顯的是,除非另有具體規(guī)定,否則應(yīng)認(rèn)識(shí)到,貫穿本說(shuō)明書(shū),使用如“處理”或“計(jì)算”或“運(yùn)算”或“確定”或“顯示”等術(shù)語(yǔ)的討論是指計(jì)算系統(tǒng)或類似的電子計(jì)算裝置的動(dòng)作和過(guò)程,該動(dòng)作和過(guò)程將計(jì)算機(jī)系統(tǒng)的寄存器和存儲(chǔ)器內(nèi)展現(xiàn)為物理(電子)量的數(shù)據(jù)操縱和變換為計(jì)算機(jī)系統(tǒng)的存儲(chǔ)器、寄存器或其他此類信息存儲(chǔ)、傳輸或顯示裝置內(nèi)的類似地展現(xiàn)為物理量的其他數(shù)據(jù)。
[0068]某些實(shí)施例還涉及用于執(zhí)行本文中的操作的設(shè)備。此設(shè)備可以是為所需目的而專門構(gòu)建的,或其可以包括被存儲(chǔ)在計(jì)算機(jī)中的計(jì)算機(jī)程序選擇性地激活或重新配置的通用計(jì)算機(jī)。這種計(jì)算機(jī)程序可以存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,如但不限于任何類型的磁盤(pán)(包括軟磁盤(pán)、光盤(pán)、CD-ROM、以及磁光盤(pán))、只讀存儲(chǔ)器(ROM)、隨機(jī)存取存儲(chǔ)器(RAM)(如動(dòng)態(tài)RAM(DRAM))、EPR0M、EEPR0M、磁性或光學(xué)卡,或任何類型的適合于存儲(chǔ)電子指令并且連接到計(jì)算機(jī)系統(tǒng)總線上的介質(zhì)。
[0069]本文中所介紹的算法和顯示器并非本來(lái)就與任何具體的計(jì)算機(jī)或其他設(shè)備相關(guān)。各種通用系統(tǒng)可以與根據(jù)本文中的教導(dǎo)的程序一起使用,或者可以證明構(gòu)建更加專用的設(shè)備來(lái)執(zhí)行所需的方法步驟是方便的。多種這些系統(tǒng)所需的結(jié)構(gòu)將從本文中的描述中出現(xiàn)。附加地,沒(méi)有引用任何具體的編程語(yǔ)言來(lái)描述某些實(shí)施例。將認(rèn)識(shí)到多種編程語(yǔ)言可以用于實(shí)施如本文中所描述的這種實(shí)施例的教導(dǎo)。
[0070]除了本文中所描述的以外,在不脫離其范圍的情況下,可以對(duì)其所披露的實(shí)施例和實(shí)現(xiàn)方式進(jìn)行各種修改。因此,應(yīng)在示例性但非限制性意義上構(gòu)建本文中的圖示和示例。應(yīng)僅參考以下權(quán)利要求書(shū)來(lái)測(cè)量本發(fā)明的范圍。
【權(quán)利要求】
1.一種在處理器處的方法,所述方法包括: 對(duì)指示提交動(dòng)作的提交指令進(jìn)行檢測(cè); 響應(yīng)于所述檢測(cè),確定所述提交指令是否用于所述提交動(dòng)作的有條件執(zhí)行;以及 基于所述確定,生成信號(hào),所述信號(hào)指示是否要對(duì)一個(gè)或多個(gè)條件進(jìn)行評(píng)價(jià)以確定是否要執(zhí)行所述提交動(dòng)作。
2.如權(quán)利要求1所述的方法,其中,確定所述提交指令是否用于所述提交動(dòng)作的有條件執(zhí)行是基于所述命令指令的命令有條件性參數(shù)的值。
3.如權(quán)利要求1所述的方法,其中確定所述提交指令是否用于所述提交動(dòng)作的有條件執(zhí)行是基于所述提交指令的命令字段,所述命令字段指示提交指令類型,所述提交指令類型特定于提交動(dòng)作的有條件執(zhí)行。
4.如權(quán)利要求1所述的方法,其中,所述提交指令包括命令字段,所述命令字段包括指示所述提交指令的指令類型的信息,其中確定所述提交指令是否用于所述提交動(dòng)作的有條件執(zhí)行包括識(shí)別所述提交指令是否進(jìn)一步包括命令有條件性參數(shù)。
5.如權(quán)利要求1所述的方法,其中,確定所述提交指令用于所述提交動(dòng)作的有條件執(zhí)行,所述方法進(jìn)一步包括: 對(duì)所述一個(gè)或多個(gè)條件進(jìn)行評(píng)價(jià)以識(shí)別是否要執(zhí)行所述提交動(dòng)作,其中,所述一個(gè)或多個(gè)條件包括處理器狀態(tài),所述處理器狀態(tài)獨(dú)立于所述處理器正在接收所述提交指令。
6.如權(quán)利要求5所述的方法,其中,對(duì)所述一個(gè)或多個(gè)條件進(jìn)行評(píng)價(jià)是基于自從所述對(duì)所述提交指令進(jìn)行檢測(cè)之前的事件以來(lái)所執(zhí)行的指令的數(shù)量的計(jì)數(shù)。
7.如權(quán)利要求6所述的方法,其中,所述事件包括提交動(dòng)作和回滾動(dòng)作其中之一。
8.如權(quán)利要求5所述的方法,其中,對(duì)所述一個(gè)或多個(gè)條件進(jìn)行評(píng)價(jià)是基于等待在所述處理器內(nèi)的全局觀察的存儲(chǔ)器請(qǐng)求的數(shù)量的計(jì)數(shù)。
9.如權(quán)利要求5所述的方法,其中,對(duì)所述一個(gè)或多個(gè)條件進(jìn)行評(píng)價(jià)是基于未決中斷的數(shù)量。
10.如權(quán)利要求1所述的方法,其中,所述提交指令具有對(duì)于提交動(dòng)作命令的絕對(duì)執(zhí)行和提交動(dòng)作的有條件執(zhí)行兩者是通用的提交指令類型。
11.如權(quán)利要求10所述的方法,其中,根據(jù)所述處理器的配置信息,當(dāng)不存在指令的任何命令有條件性參數(shù)指定所述指令代表絕對(duì)提交命令時(shí),假定具有所述提交指令類型的所述指令代表有條件提交命令。
12.如權(quán)利要求10所述的方法,其中,根據(jù)所述處理器的配置信息,當(dāng)不存在指令的指定所述指令代表有條件提交命令的任何命令有條件性參數(shù)時(shí),假定具有所述提交指令類型的所述指令代表絕對(duì)提交命令。
13.一種處理器,包括: 指令集; 解碼器,包括用于對(duì)指示提交動(dòng)作的提交指令進(jìn)行檢測(cè)并根據(jù)所述指令集對(duì)所述提交指令進(jìn)行解碼的電路邏輯;以及 執(zhí)行單元,用于執(zhí)行所解碼的提交指令; 其中,所述解碼器和所述執(zhí)行單元用于確定所述提交指令是否用于所述提交動(dòng)作的有條件執(zhí)行,并且其中,所述解碼器和所述執(zhí)行單元用于基于所述確定而生成指示是否要對(duì)一個(gè)或多個(gè)條件進(jìn)行評(píng)價(jià)以確定是否要執(zhí)行所述提交動(dòng)作的信號(hào)。
14.如權(quán)利要求13所述的處理器,其中,所述解碼器和所述執(zhí)行單元用于確定所述提交指令是否用于所述提交動(dòng)作的有條件執(zhí)行是基于所述命令指令的命令有條件性參數(shù)的值。
15.如權(quán)利要求13所述的處理器,其中,所述解碼器和所述執(zhí)行單元用于確定所述提交指令是否用于所述提交動(dòng)作的有條件執(zhí)行是基于所述提交指令的命令字段,所述命令字段指示提交指令類型,所述提交指令類型特定于提交動(dòng)作的有條件執(zhí)行。
16.如權(quán)利要求13所述的處理器,其中,所述提交指令包括命令字段,所述命令字段包括指示所述提交指令的指令類型的信息,其中所述解碼器和所述執(zhí)行單元用于確定所述提交指令是否用于所述提交動(dòng)作的有條件執(zhí)行包括對(duì)所述提交指令是否進(jìn)一步包括命令有條件性參數(shù)進(jìn)行識(shí)別。
17.如權(quán)利要求13所述的處理器,其中,所述解碼器和所述執(zhí)行單元進(jìn)一步用于對(duì)所述一個(gè)或多個(gè)條件進(jìn)行評(píng)價(jià)以識(shí)別是否要執(zhí)行所述提交動(dòng)作,其中,所述一個(gè)或多個(gè)條件包括處理器狀態(tài),所述處理器狀態(tài)獨(dú)立于所述處理器正在接收所述提交指令。
18.如權(quán)利要求17所述的方法,其中,所述對(duì)所述一個(gè)或多個(gè)條件進(jìn)行評(píng)價(jià)是基于自從所述對(duì)所述提交指令進(jìn)行檢測(cè)之前的事件以來(lái)所執(zhí)行的指令的數(shù)量的計(jì)數(shù)。
19.如權(quán)利要求18所述的方法,其中,所述事件包括提交動(dòng)作和回滾動(dòng)作其中之一。
20.如權(quán)利要求17 所述的方法,其中,所述對(duì)所述一個(gè)或多個(gè)條件進(jìn)行評(píng)價(jià)是基于等待在所述處理器內(nèi)的全局觀察的存儲(chǔ)器請(qǐng)求的數(shù)量的計(jì)數(shù)。
21.如權(quán)利要求17所述的方法,其中,所述對(duì)所述一個(gè)或多個(gè)條件進(jìn)行評(píng)價(jià)是基于未決中斷的數(shù)量。
22.如權(quán)利要求13所述的處理器,其中,所述提交指令具有對(duì)于提交動(dòng)作命令的絕對(duì)執(zhí)行和提交動(dòng)作的有條件執(zhí)行兩者是通用的提交指令類型。
23.如權(quán)利要求22所述的處理器,其中,根據(jù)所述處理器的配置信息,當(dāng)不存在指令的指定所述指令代表絕對(duì)提交命令的任何命令有條件性參數(shù)時(shí),假定具有所述提交指令類型的所述指令代表有條件提交命令。
24.如權(quán)利要求22所述的處理器,其中,根據(jù)所述處理器的配置信息,當(dāng)不存在所述指令的指定所述指令代表有條件提交命令的任何命令有條件性參數(shù)時(shí),假定具有所述提交指令類型的所述指令代表絕對(duì)提交命令。
25.一種計(jì)算機(jī)平臺(tái),包括: 存儲(chǔ)器; 連接到所述存儲(chǔ)器上的處理器,所述處理器包括 指令集; 所耦合的解碼器,包括用于對(duì)指示提交動(dòng)作的提交指令進(jìn)行檢測(cè)并根據(jù)所述指令集對(duì)所述提交指令進(jìn)行解碼的電路邏輯;以及 執(zhí)行單元,用于執(zhí)行所解碼的提交指令; 其中,所述解碼器和所述執(zhí)行單元用于確定所述提交指令是否用于所述提交動(dòng)作的有條件執(zhí)行,并且其中,所述解碼器和所述執(zhí)行單元用于基于所述確定而生成指示是否要對(duì)一個(gè)或多個(gè)條件進(jìn)行評(píng)價(jià)以確定是否要執(zhí)行所述提交動(dòng)作的信號(hào);以及網(wǎng)絡(luò)接口,用于將所述計(jì)算機(jī)平臺(tái)耦合到網(wǎng)絡(luò)上。
26.如權(quán)利要求25所述的計(jì)算機(jī)平臺(tái),其中,所述解碼器和所述執(zhí)行單元用于確定所述提交指令是否用于所述提交動(dòng)作的有條件執(zhí)行是基于所述命令指令的命令有條件性參數(shù)的值。
27.如權(quán)利要求25所述的計(jì)算機(jī)平臺(tái),其中,所述解碼器和所述執(zhí)行單元用于確定所述提交指令是否用于所述提交動(dòng)作的有條件執(zhí)行是基于所述提交指令的命令字段,所述命令字段指示提交指令類型,所述提交指令類型特定于提交動(dòng)作的有條件執(zhí)行。
28.如權(quán)利要求25所述的計(jì)算機(jī)平臺(tái),其中,所述提交指令包括命令字段,所述命令字段包括指示所述提交指令的指令類型的信息,其中所述解碼器和所述執(zhí)行單元用于確定所述提交指令是否用于所述提交動(dòng)作的有條件執(zhí)行包括對(duì)所述提交指令是否進(jìn)一步包括命令有條件性參數(shù)進(jìn)行識(shí)別。
29.如權(quán)利要求25所述的計(jì)算機(jī)平臺(tái),其中,所述解碼器和所述執(zhí)行單元進(jìn)一步用于對(duì)所述一個(gè)或多個(gè)條件進(jìn)行評(píng)價(jià)以識(shí)別是否要執(zhí)行所述提交動(dòng)作,其中,所述一個(gè)或多個(gè)條件包括處理器狀態(tài),所述處理器狀態(tài)獨(dú)立于所述處理器正在接收所述提交指令。
30.如權(quán)利要求29所述的方法,其中,所述對(duì)所述一個(gè)或多個(gè)條件進(jìn)行評(píng)價(jià)是基于自從所述對(duì)所述提交指令進(jìn)行檢測(cè)之前的事件以來(lái)所執(zhí)行的指令的數(shù)量的計(jì)數(shù)。
【文檔編號(hào)】G06F9/30GK104011669SQ201180075833
【公開(kāi)日】2014年8月27日 申請(qǐng)日期:2011年12月22日 優(yōu)先權(quán)日:2011年12月22日
【發(fā)明者】E·G·康迪那, J·M·康迪那, F·拉托瑞, P·馬庫(kù)羅, P·洛佩茨, C·戈梅茲瑞克納, A·岡薩雷斯, M·休塞諾瓦, C·E·科特賽立迪斯, M·盧彭, C·M·吉梅諾, G·瑪格里斯, A·M·文森特, R·馬丁內(nèi)斯, D·奧特加, D·帕弗洛, K·A·斯塔弗洛, G·突納韋迪斯, P·謝卡拉科斯 申請(qǐng)人:英特爾公司