消除指令處理電路中的冗余同步屏障和相關(guān)處理器系統(tǒng)、方法以及計算機(jī)可讀媒體的制作方法
【專利說明】消除指令處理電路中的冗余同步屏障和相關(guān)處理器系統(tǒng)、方法以及計算機(jī)可讀媒體
[0001]優(yōu)先權(quán)串請
[0002]本申請要求提交于2013年3月14日且標(biāo)題為“消除指令處理電路中的冗余同步屏障和相關(guān)處理器系統(tǒng)、方法以及計算機(jī)可讀媒體(EUMINATING REDUNDANTSYNCHRONIZAT1N BARRIERS IN INSTRUCT1N PROCESSING CIRCUITS,AND RELATEDPROCESSOR SYSTEMS, METHODS, AND COMPUTER-READABLE MEDIA) ” 的美國專利申請序列號13/829,315的優(yōu)先權(quán),所述專利申請的全部內(nèi)容通過引用并入本文。
技術(shù)領(lǐng)域
[0003]本發(fā)明的技術(shù)涉及基于中央處理單元(CPU)的系統(tǒng)中的管線化計算機(jī)指令的處理。
【背景技術(shù)】
[0004]現(xiàn)代計算機(jī)架構(gòu)中“指令管線”的出現(xiàn)已得到改善的中央處理單元(CPU)資源的利用率和更快的計算機(jī)應(yīng)用程序的執(zhí)行時間。指令管線是一種處理技術(shù),憑藉該處理技術(shù),通過將每個指令的處理分離為一系列步驟來增加由CPU處理的計算機(jī)指令的吞吐率。所述指令在由多級組成的“執(zhí)行管線”中執(zhí)行,其中每級完成用于一系列指令中每個指令的步驟中的一個步驟。結(jié)果,在每個CPU時鐘循環(huán)中,可以并行評估用于多個指令的步驟。CPU可以采用多條執(zhí)行管線以進(jìn)一步提高性能。
[0005]實施指令管線化的一些計算機(jī)架構(gòu)可以允許處理器優(yōu)化,諸如程序指令的推理性數(shù)據(jù)讀取和亂序執(zhí)行。在提供CPU性能的進(jìn)一步改善時,如果例如執(zhí)行的程序取決于以指定順序訪問的數(shù)據(jù)或以指定順序執(zhí)行的指令,則這些優(yōu)化可導(dǎo)致意料不到和/或不合需要的程序行為。另外,執(zhí)行指令可能影響在允許執(zhí)行后續(xù)指令之前必須成功完成的CPU狀態(tài)的變化。例如,CPU狀態(tài)的變化可以包括影響后續(xù)指令如何訪問資源的變化,諸如處理器模式的變化或頁表的更改。
[0006]為確保程序的正確執(zhí)行,可以在軟件中使用“同步屏障”以確保在允許繼續(xù)執(zhí)行代碼之前完成先前的操作(即,數(shù)據(jù)訪問或指令執(zhí)行)。同步屏障可以通過指令明確地提供,諸如ARM架構(gòu)的ISB (指令同步屏障)指令,或可被實施為另一指令或操作的一部分。計算機(jī)的體系架構(gòu)可以提供的是,需要同步屏障的具體操作可以具有由計算機(jī)的硬件自動處理的同步,而其它操作需要軟件以明確地包括同步屏障。不過需要指出的是,對于其中存在軟件同步屏障的情況,如果在執(zhí)行軟件同步屏障之前立即發(fā)生另一同步操作,則可以證明該軟件同步屏障是冗余的。
【發(fā)明內(nèi)容】
[0007]本發(fā)明的實施例包括從指令處理電路中的執(zhí)行管線消除冗余同步屏障,以及相關(guān)的處理器系統(tǒng)、方法和計算機(jī)可讀媒體。對于一些操作,計算機(jī)的體系架構(gòu)可需要采用軟件同步屏障,即使在執(zhí)行軟件同步屏障之前也可立即發(fā)生同步操作。通過跟蹤同步事件的發(fā)生,不必要的軟件同步屏障可以被識別并消除,從而改善中央處理單元(CPU)的性能。
[0008]在這方面,在一個實施例中,提供用于消除指令流中的冗余同步屏障的方法。所述方法包括檢測第一同步事件。所述方法還包括檢測指令流中的下一個指令。所述方法另外包括確定所述下一個指令是否包括類型對應(yīng)于所述第一同步事件的同步屏障。所述方法還包括響應(yīng)于確定所述下一個指令包括類型對應(yīng)于所述第一同步事件的同步屏障,而從所述指令流消除所述下一個指令。以此方式,可以通過避免不必要的同步操作而增加在每一 CPU時鐘循環(huán)期間執(zhí)行的指令的平均數(shù)目。
[0009]在另一個實施例中,提供了指令處理電路。所述指令處理電路包括同步事件檢測電路和優(yōu)化電路。所述同步事件檢測電路經(jīng)配置以檢測第一同步事件。所述優(yōu)化電路經(jīng)配置以檢測指令流中的下一個指令,并且確定所述下一個指令是否包括類型對應(yīng)于所述第一同步事件的同步屏障。所述優(yōu)化電路進(jìn)一步經(jīng)配置以響應(yīng)于確定所述下一個指令包括類型對應(yīng)于所述第一同步事件的同步屏障,而從所述指令流消除所述下一個指令。
[0010]在另一個實施例中,提供了指令處理電路。所述指令處理電路包括用于檢測第一同步事件的裝置。所述指令處理電路進(jìn)一步包括用于檢測指令流中的下一個指令的裝置。所述指令處理電路另外包括用于確定所述下一個指令是否包括類型對應(yīng)于所述第一同步事件的同步屏障的裝置。所述指令處理電路還包括用于響應(yīng)于確定所述下一個指令包括類型對應(yīng)于所述第一同步事件的同步屏障,而從所述指令流消除所述下一個指令的裝置。
[0011]在另一個實施例中,提供非暫時性計算機(jī)可讀媒體,其具有存儲于其上的計算機(jī)可讀指令以致使處理器實施一種方法。由所述計算機(jī)可執(zhí)行指令實施的所述方法包括檢測第一同步事件。由所述計算機(jī)可執(zhí)行指令實施的所述方法還包括檢測指令流中的下一個指令。由所述計算機(jī)可執(zhí)行指令實施的所述方法另外包括確定所述下一個指令是否包括類型對應(yīng)于所述第一同步事件的同步屏障。由所述計算機(jī)可執(zhí)行指令實施的所述方法還包括響應(yīng)于確定所述下一個指令包括類型對應(yīng)于所述第一同步事件的同步屏障,而從所述指令流消除所述下一個指令。
【附圖說明】
[0012]圖1是在基于處理器的系統(tǒng)中提供的示范性組件的框圖,所述示范性組件包括示范性經(jīng)配置以檢測并消除指令流中的冗余同步屏障的示范性指令處理電路;
[0013]圖2是示出基于檢測并消除冗余同步屏障的示范性經(jīng)優(yōu)化指令的示意圖;
[0014]圖3是示出用于檢測并消除冗余同步屏障的指令處理電路的示范性過程的流程圖;
[0015]圖4是示出用于消除冗余同步屏障的指令處理電路的更詳細(xì)示范性過程的流程圖;
[0016]圖5是示出優(yōu)化包含觸發(fā)同步事件和冗余同步屏障的指令的示范性指令流的示意圖;
[0017]圖6是示出可以從消除冗余同步屏障得到的示范性經(jīng)優(yōu)化指令流的示意圖;
[0018]圖7是示出優(yōu)化包含冗余同步屏障的示范性指令流的示意圖;以及
[0019]圖8是可以包括指令處理電路的示范性的基于處理器的系統(tǒng)的框圖,所述指令處理電路包括經(jīng)配置以檢測并消除冗余同步屏障的圖1的指令處理電路。
【具體實施方式】
[0020]現(xiàn)參考附圖描述本發(fā)明的幾個示范性實施例。本文使用的詞“示范性的”意指“用作實例、實例或例證”。本文中被描述為“示范性的”的任何實施例不必須被理解為比其它實施例優(yōu)選或有利。還應(yīng)當(dāng)理解,雖然術(shù)語“第一”、“第二”等可以在本文用于描述各種元件,但是這些術(shù)語僅用于將一個元件與另一個元件區(qū)分開,并且因此而區(qū)分的各元件不應(yīng)被這些術(shù)語限制。例如,在沒有偏離本發(fā)明的教義的情況下,第一指令可被稱為第二指令,并且類似地,第二指令可被稱為第一指令。
[0021]本發(fā)明的實施例包括從執(zhí)行指令處理電路中的執(zhí)行管線消除冗余同步屏障,以及相關(guān)的處理器系統(tǒng)、方法和計算機(jī)可讀媒體。對于一些操作,計算機(jī)的體系架構(gòu)可需要采用軟件同步屏障,即使在執(zhí)行軟件同步屏障之前也可立即發(fā)生同步操作。通過跟蹤同步事件的發(fā)生,不必要的軟件同步屏障可以被識別并消除,從而改善中央處理單元(CPU)的性能。
[0022]在這方面,在一個實施例中,提供用于消除指令流中的冗余同步屏障的方法。該方法包括檢測第一同步事件。該方法進(jìn)一步包括檢測指令流中的下一個指令。該方法另外包括確定下一個指令是否包括類型對應(yīng)于第一同步事件的同步屏障。該方法還包括響應(yīng)于確定下一個指令包括類型對應(yīng)于第一同步事件的同步屏障,而從指令流消除下一個指令。以此方式,可以通過避免不必要的同步操作而增加在每一 CPU時鐘循環(huán)期間執(zhí)行的指令的平均數(shù)目。
[0023]在這方面,圖1是用于檢索和處理將被放置在一或多個執(zhí)行管線12 (O)-12 (Q)中的計算機(jī)指令的示范性的基于處理器的系統(tǒng)10的框圖。所述基于處理器的系統(tǒng)10提供經(jīng)配置以檢測并消除冗余同步屏障的指令處理電路14。如本文所使用的,“指令”可指由指示計算機(jī)處理器以完成特定的一或多個任務(wù)的指令集架構(gòu)所定義的位的組合。例如,指令可以指示用于從寄存器16(0)-16(M)讀取數(shù)據(jù)和/或向寄存器16 (O)-16 (M)寫入數(shù)據(jù)的操作,這些操作提供可由基于處理器的系統(tǒng)10訪問的本地存儲。示范性指令集架構(gòu)包括但不限于ARM、Thumb和A64架構(gòu)。
[0024]繼續(xù)參考圖1,各指令在基于處理器的系統(tǒng)10中在由指令流18表示的連續(xù)流中被處理。當(dāng)基于處理器的系統(tǒng)10在運(yùn)行并執(zhí)行各指令時,指令流18可被連續(xù)地處理。在該所示實例中,指令流18開始于指令存儲器20,該指令存儲器20提供用于計算機(jī)可執(zhí)行程序中各指令的永久存儲。指令提取電路22從指令存儲器20和/或任選地從指令