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

通過指令不確定度的多線程處理器指令平衡的制作方法

文檔序號:6532977閱讀:227來源:國知局
通過指令不確定度的多線程處理器指令平衡的制作方法
【專利摘要】一種用于指令執(zhí)行的計(jì)算機(jī)系統(tǒng)包括具有流水線的處理器。所述系統(tǒng)被配置為:執(zhí)行包括以下步驟的方法:在所述流水線中取回多條指令,其中,所述多條指令包括多條分支指令;對于所述多條分支指令中的每一條,將分支不確定度分配給所述多條分支指令中的每一條;對于所述多條指令中的每一條,分配指令不確定度,其為較舊的未判決的分支的分支不確定度的總和;以及在所述流水線中基于指令不確定度的當(dāng)前總和來平衡所述指令。
【專利說明】通過指令不確定度的多線程處理器指令平衡

【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及多線程處理,更具體地說,涉及用于通過指令不確定度在多線程處理 器內(nèi)的指令平衡的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品。

【背景技術(shù)】
[0002] 在多線程流水線設(shè)計(jì)中存在很多目標(biāo),包括但不限于盡可能快地運(yùn)行每個單獨(dú)線 程以及優(yōu)化每瓦特的工作單元。流水線是并行性的一種具體形式,其中,可以在同一硬件上 交錯若干指令的執(zhí)行。無論流水線設(shè)計(jì)的目標(biāo)如何,對于程序的每個線程,都可能遇到多分 支指令。當(dāng)線程經(jīng)歷分支時,預(yù)測分支將采取哪個方向,然后沿著所預(yù)測的路徑來執(zhí)行線 程。典型地按每分支預(yù)測表項(xiàng)2比特飽和計(jì)數(shù)器來實(shí)現(xiàn)分支預(yù)測,其中,狀態(tài)是:00(強(qiáng)不 采用),弱不采用(01)、弱采用(10)和強(qiáng)采用(11)。在已判決的所采用的分支上,計(jì)數(shù)器增 力口;然而,在到達(dá)"11"的狀態(tài)時,計(jì)數(shù)器在該值飽和。在已判決的不采用的分支上,計(jì)數(shù)器 減少;然而,在到達(dá)狀態(tài)"〇〇"時,計(jì)數(shù)器在該值飽和。對于狀態(tài)" 10"和狀態(tài)" 11",將分支 預(yù)測為采用,而對于狀態(tài)"〇〇"和"01",將分支預(yù)測為不采用。該飽和計(jì)數(shù)器為分支提供方 向;然而,關(guān)于分支的精度沒有聲明。例如,在for循環(huán)上,除了失敗情況之外,每次都采用 分支。在失敗迭代時,置信度計(jì)數(shù)器從"11"降級為"10"。下一次遇到for循環(huán),將再次采 用該分支。故此,在"11"的狀態(tài)下,對于遇到除了失敗之外的所有情況采用分支。在"10" 的狀態(tài)時,將再次采用分支。故此,強(qiáng)狀態(tài)并不指示比弱狀態(tài)更置信的預(yù)測。在這種進(jìn)行預(yù) 測的方案中未考慮的是分支預(yù)測的精度。在多線程處理環(huán)境中,多線程可以同時執(zhí)行工作。 故此,多線程可以運(yùn)行在流水線中,每個線程遇到多分支,并且通過流水線傳輸所預(yù)測的狀 態(tài)(強(qiáng)/弱采用/不采用),從而在分支判決時,可以更新分支表內(nèi)的預(yù)測狀態(tài)。此外,在 多線程處理器中,存在各線程之間所共享的資源。這些動態(tài)劃分的資源是基于先到先服務(wù) 的。雖然動態(tài)資源允許硅面積和功率優(yōu)化,但存在動態(tài)資源的很多性能限制,例如線程掛起 (hogging),其產(chǎn)生性能限制因素。例如,當(dāng)一個線程X停止(stall)時,另一線程Y有能力 用上大量流水線資源。線程Y可能正創(chuàng)建扔掉(throw-away)工作(例如,下行到所確定的 分支錯誤路徑)并且從X獲取X可能對于未扔掉的工作而在近期未來中使用的資源。


【發(fā)明內(nèi)容】

[0003] 示例性實(shí)施例包括一種用于指令執(zhí)行的計(jì)算機(jī)系統(tǒng),所述系統(tǒng)包括:處理器,具有 流水線,其中,所述系統(tǒng)被配置為:執(zhí)行包括以下步驟的方法:在所述流水線中取回多條指 令,其中,所述多條指令包括多條分支指令;對于所述多條分支指令中的每一條,將分支不 確定度分配給所述多條分支指令中的每一條;對于所述多條指令中的每一條,分配指令不 確定度,其為較舊的未判決的分支的分支不確定度的總和;以及在所述流水線中基于指令 不確定度的當(dāng)前總和來平衡所述指令。
[0004] 附加示例性實(shí)施例包括一種用于流水線中的指令執(zhí)行的計(jì)算機(jī)實(shí)現(xiàn)的方法,所述 方法包括:在所述流水線中獲取多條指令,其中,所述多條指令包括多條分支指令;對于所 述多條分支指令中的每一條,將分支不確定度分配給所述多條分支指令中的每一條;對于 所述多條指令中的每一條,分配指令不確定度,其為較舊的未判決的分支的分支不確定度 的總和;以及在所述流水線中基于指令不確定度的當(dāng)前總和來平衡所述指令。
[0005] 其它示例性實(shí)施例包括一種用于流水線中的指令執(zhí)行的計(jì)算機(jī)程序產(chǎn)品。所述計(jì) 算機(jī)程序產(chǎn)品包括:有形存儲介質(zhì),可由處理電路讀取,并且存儲用于所述處理電路執(zhí)行的 指令,以用于執(zhí)行方法。所述方法包括:在所述流水線中取回多條指令,其中,所述多條指令 包括多條分支指令;對于所述多條分支指令中的每一條,將分支不確定度分配給所述多條 分支指令中的每一條;對于所述多條指令中的每一條,分配指令不確定度,其為較舊的未判 決的分支的分支不確定度的總和;以及在所述流水線中基于指令不確定度的當(dāng)前總和來平 衡所述指令。
[0006] 通過本發(fā)明的的技術(shù)來實(shí)現(xiàn)附加特征和優(yōu)點(diǎn)。本發(fā)明的其它實(shí)施例和方面在此詳 細(xì)描述并且被看作一部分所要求的本發(fā)明。為了更好地理解本發(fā)明的優(yōu)點(diǎn)和特征,參照描 述和附圖。

【專利附圖】

【附圖說明】
[0007] 在說明書的結(jié)尾處的權(quán)利要求中特定地指出并且獨(dú)特地要求被看作本發(fā)明的主 題內(nèi)容。從結(jié)合附圖的以下詳細(xì)描述,本發(fā)明的以上和其它特征和優(yōu)點(diǎn)是清楚的,其中:
[0008] 圖1示出用于通過指令不確定度在多線程處理器內(nèi)進(jìn)行指令平衡的系統(tǒng)100的框 圖;
[0009] 圖2示出根據(jù)示例性實(shí)施例的可以實(shí)現(xiàn)示例性指令平衡方法的處理器指令流水 線系統(tǒng)的框圖;
[0010] 圖3示出用于通過指令不確定度在多線程處理器內(nèi)進(jìn)行指令平衡的方法的流程 圖;
[0011] 圖4示出可以實(shí)現(xiàn)為跟蹤流水線中的不確定度的表的示例;
[0012] 圖5示意性示出根據(jù)示例性實(shí)施例的可以實(shí)現(xiàn)的靜態(tài)水印的示例;
[0013] 圖6示意性示出根據(jù)示例性實(shí)施例的可以實(shí)現(xiàn)的來自發(fā)布隊(duì)列的刷新(flush)的 示例;以及
[0014] 圖7示出在具有作為制造物的有形介質(zhì)中實(shí)施的計(jì)算機(jī)程序代碼邏輯的計(jì)算機(jī) 可讀/可用的介質(zhì)上的計(jì)算機(jī)程序產(chǎn)品的示例。

【具體實(shí)施方式】
[0015] 在示例性實(shí)施例中,系統(tǒng)和方法在處理器中實(shí)現(xiàn)同時多線程運(yùn)行,以允許處理器 內(nèi)核實(shí)現(xiàn)每晶體管更高的吞吐量(即更多工作)。在給定的流水線中,在此所描述的系統(tǒng)和 方法不僅計(jì)算每條所預(yù)測的路徑的方向,而且還計(jì)算用于每條所預(yù)測的路徑的置信度/精 度。此外,跟蹤對于所預(yù)測的分支的不確定度并且通過每個所預(yù)測的分支傳輸對于所預(yù)測 的分支的不確定度,以便關(guān)于從每個線程執(zhí)行指令的順序進(jìn)行判斷。通過允許線程"全空 閑"并且只要存在可用的資源,就要求如每個線程期望的那樣多的資源,資源在追求實(shí)現(xiàn)最 大可能吞吐量的意義上并未在各線程之間得以劃分。增加吞吐量公正性的一個區(qū)域是在分 支的區(qū)域周圍。每當(dāng)給定的線程更有可能(相對于其它線程)對于給定的分支得到不正確 地預(yù)測的方向/目標(biāo)時,就應(yīng)在資源正消耗/請求時回退,并且允許其它(即更高置信的) 線程要求其資源的共享。在單線程處理器中,所有資源專用于單線程。在同時多線程(SMT) 處理器中,這些資源在并行執(zhí)行線程之間是"共享"的。一些資源是靜態(tài)地劃分的,而其它資 源是動態(tài)地劃分的。動態(tài)地劃分的資源是基于先到先服務(wù)的。雖然動態(tài)資源允許優(yōu)化,但 存在很多動態(tài)資源的性能限制。例如,當(dāng)一個線程X停止達(dá)幾個周期時,另一線程Y有能力 利用大量流水線資源。在克服停止時,線程Y可能正創(chuàng)建扔掉(throw-away)工作(例如, 下行到分支錯誤路徑)并且從線程X獲取線程X可能對于未扔掉的工作而使用的資源。
[0016] 圖1示出用于通過指令不確定度在多線程處理器內(nèi)進(jìn)行指令平衡的系統(tǒng)100的框 圖??梢砸杂布④浖ɡ绻碳┗蚱浣M合來實(shí)現(xiàn)在此所描述的方法。在示例性實(shí)施例 中,以作為專用或通用數(shù)字計(jì)算機(jī)(例如個人計(jì)算機(jī)、工作站、小型計(jì)算機(jī)或大型計(jì)算機(jī)) 的微處理器的一部分的硬件來實(shí)現(xiàn)在此所描述的方法。系統(tǒng)100因此包括通用計(jì)算機(jī)101。
[0017] 在示例性實(shí)施例中,關(guān)于硬件架構(gòu),如圖1所示,計(jì)算機(jī)101包括處理器105、耦合 到存儲器控制器115的存儲器110以及以通信方式經(jīng)由本地輸入/輸出控制器135而耦合 的一個或多個輸入和/或輸出(I/O)設(shè)備140、145 (或外設(shè))。輸入/輸出控制器135可以 是例如但不限于一個或多個總線或其它本領(lǐng)域公知的有線或無線連接。輸入/輸出控制器 135可以具有附加元件(其為了簡化而省略),例如控制器、緩沖器(高速緩存)、驅(qū)動器、轉(zhuǎn) 發(fā)器和接收器,以使得能夠進(jìn)行通信。此外,本地接口可以包括地址、控制和/或數(shù)據(jù)連接, 以使得在前述組件之間能夠進(jìn)行適當(dāng)?shù)耐ㄐ拧?br> [0018] 處理器105是用于執(zhí)行特別是在存儲器110中存儲的軟件的硬件設(shè)備。處理器 105可以是任何定制的或商用的處理器、中央處理單元(CPU)、與計(jì)算機(jī)101關(guān)聯(lián)的若干處 理器之間的輔助處理器、基于半導(dǎo)體的微處理器(以微芯片或芯片組的形式)、宏處理器或 通常用于執(zhí)行指令的任何設(shè)備。
[0019] 存儲器110可以包括易失性存儲器元件(例如隨機(jī)存取存儲器(RAM,例如DRAM、 SRAM、SDRAM等))和非易失性存儲器元件(例如ROM,可擦除可編程只讀存儲器(EPROM)、電 可擦除可編程只讀存儲器(EEPR0M)、可編程只讀存儲器(PR0M)、磁帶、壓縮盤只讀存儲器 (⑶-ROM)、磁盤、軟盤、盒式磁盤、盒式磁帶等)中的任一或組合。此外,存儲器110可以包 括電子、磁、光和/或其它類型的存儲介質(zhì)。注意,存儲器110可以具有分布式架構(gòu),其中, 各個組件位于彼此遠(yuǎn)離,但可以由處理器105存取。
[0020] 存儲器110中的指令可以包括一個或多個分離程序,其中的每一個包括用于實(shí)現(xiàn) 邏輯功能的可執(zhí)行指令的有序列表。在圖1的示例中,存儲器110中的指令適合操作系統(tǒng) (0S) 111。操作系統(tǒng)111本質(zhì)上控制其它計(jì)算機(jī)程序的執(zhí)行,并且提供排程、輸入-輸出控 制、文件和數(shù)據(jù)管理、存儲器管理和通信控制以及有關(guān)的服務(wù)。
[0021] 在不例性實(shí)施例中,傳統(tǒng)鍵盤150和鼠標(biāo)155可以f禹合到輸入/輸出控制器135。 其它輸出設(shè)備(例如1/0設(shè)備140U45)可以包括輸入設(shè)備,例如但不限于打印機(jī)、掃描儀、 麥克風(fēng)等。最后,1/0設(shè)備140U45可以還包括傳遞輸入和輸出的設(shè)備,例如但不限于網(wǎng)絡(luò) 接口卡(NIC)或調(diào)制器/解調(diào)器(用于存取其它文件、設(shè)備、系統(tǒng)或網(wǎng)絡(luò))、射頻(RF)或其 它收發(fā)器、電話接口、橋接器、路由器等。系統(tǒng)100可以還包括耦合到顯示器130的顯示控 制器125。在示例性實(shí)施例中,系統(tǒng)100可以還包括網(wǎng)絡(luò)接口 160,用于耦合到網(wǎng)絡(luò)165。網(wǎng) 絡(luò)165可以是基于IP的網(wǎng)絡(luò),用于經(jīng)由寬帶連接在計(jì)算機(jī)101與任意的外部服務(wù)器、客戶 機(jī)等之間的通信。網(wǎng)絡(luò)165在計(jì)算機(jī)101與外部系統(tǒng)之間發(fā)送并且接收數(shù)據(jù)。在示例性實(shí) 施例中,網(wǎng)絡(luò)165可以是由服務(wù)提供商管制的受管理IP網(wǎng)絡(luò)??梢岳缡褂脽o線協(xié)議和技 術(shù)(例如WiFi、WiMax等)以無線方式來實(shí)現(xiàn)網(wǎng)絡(luò)165。網(wǎng)絡(luò)165也可以是分組交換網(wǎng)絡(luò), 例如局域網(wǎng)、廣域網(wǎng)、城域網(wǎng)、因特網(wǎng)或其它相似類型的網(wǎng)絡(luò)環(huán)境。網(wǎng)絡(luò)165可以是固定無 線網(wǎng)絡(luò)、無線局域網(wǎng)(LAN)、無線廣域網(wǎng)(WAN)、個域網(wǎng)(PAN)、虛擬專用網(wǎng)絡(luò)(VPN)、內(nèi)聯(lián)網(wǎng) 或其它合適的網(wǎng)絡(luò)系統(tǒng),并且包括用于接收并且發(fā)送信號的裝備。
[0022] 如果計(jì)算機(jī)101是PC、工作站、智能設(shè)備等,則存儲器110中的指令可以還包括基 本輸入輸出系統(tǒng)(BIOS)(為了簡化而省略)。BIOS是基本軟件例程的集合,其在啟動時初 始化并且測試硬件,啟動OS 111,并且支持各硬件設(shè)備之間的數(shù)據(jù)傳送。BIOS存儲在ROM 中,從而當(dāng)激活計(jì)算機(jī)101時可以執(zhí)行BIOS。
[0023] 當(dāng)計(jì)算機(jī)101處于操作中時,處理器105被配置為:執(zhí)行存儲器110內(nèi)所存儲的指 令,以將數(shù)據(jù)傳遞出入存儲器110,并且通常依照指令來控制計(jì)算機(jī)101的操作。
[0024] 在示例性實(shí)施例中,在指令平衡方法以硬件實(shí)現(xiàn)的情況下,可以通過本領(lǐng)域均公 知的以下技術(shù)中的任一或組合來實(shí)現(xiàn)在此所描述的指令平衡方法:具有用于在數(shù)據(jù)信號上 實(shí)現(xiàn)邏輯功能的邏輯門的分立式邏輯電路、具有適當(dāng)組合邏輯門的專用集成電路(ASIC)、 可編程門陣列(PGA)、現(xiàn)場可編程門陣列(FPGA)等。
[0025] 圖2示出根據(jù)示例性實(shí)施例的可以實(shí)現(xiàn)示例性指令平衡方法的處理器的無序指 令流水線系統(tǒng)200的框圖。如在此所描述的那樣,流水線是并行性的一種具體形式,其中, 可以在同一硬件上交錯若干指令的執(zhí)行。在示例性實(shí)施例中,流水線系統(tǒng)包括七級:(1)指 令取回210 ;⑵解碼和指令分組220 ; (3)調(diào)度到發(fā)布隊(duì)列中230 ; (4)無序發(fā)布240 ; (5a) 執(zhí)行寄存器修改的固定點(diǎn)單元250 ; (5b)存取高速緩存的加載/存儲單元255 ; (6)有序完 成表260; (7)包括寄存器提交和存儲器存儲的架構(gòu)更新270。在示例性實(shí)施例中,指令取 回210級取回待處理的指令。解碼和指令分組220級對指令進(jìn)行解碼并且確定哪些指令依 賴于哪些指令。調(diào)度到發(fā)布隊(duì)列中230將指令以及關(guān)聯(lián)依賴性放置到發(fā)布隊(duì)列中。無序發(fā) 布隊(duì)列240定義哪些指令待發(fā)送到執(zhí)行架構(gòu)功能的執(zhí)行單元。固定點(diǎn)單元250執(zhí)行寄存器 到寄存器的操作。加載/存儲單元255將獲取寄存器值并且將其放置到存儲器/高速緩存 中,或獲取存儲器/高速緩存的中內(nèi)容并且將其放置到寄存器中。有序完成260定義有序 手段,以將指令發(fā)送到架構(gòu)更新270級。架構(gòu)更新270將寄存器提交到存儲器/高速緩存, 并且允許無序寄存器文件映射器釋放重命名的寄存器。
[0026] 圖3示出用于通過指令不確定度在多線程處理器內(nèi)進(jìn)行指令平衡的方法300的流 程圖。在塊310,系統(tǒng)100分配分支置信度。分支預(yù)測器可以實(shí)現(xiàn)很多類型的計(jì)數(shù)器,包括 但不限于一位預(yù)測器或兩位飽和計(jì)數(shù)器。為了說明,討論兩位飽和計(jì)數(shù)器。應(yīng)理解,在其它 示例性實(shí)施例中預(yù)期其它類型的預(yù)測計(jì)數(shù)器。對于所給定的預(yù)測分支的分支方向,可以表 示若干狀態(tài)。例如,所表示的狀態(tài)可以是:11強(qiáng)采用、10弱采用、01弱不采用、〇〇強(qiáng)不采用。 在示例性實(shí)施例中,通過保持X位計(jì)數(shù)器正確并且X位計(jì)數(shù)器錯誤,可以為分支預(yù)測建立正 確性的運(yùn)行平均。每當(dāng)分支預(yù)測正確(獨(dú)立于采用或不采用)時,系統(tǒng)100增加"正確"計(jì) 數(shù)器。每當(dāng)預(yù)測錯誤時,系統(tǒng)100增加"錯誤"計(jì)數(shù)器。每當(dāng)計(jì)數(shù)器在其最大值處飽和時, 系統(tǒng)100將兩個計(jì)數(shù)器除以二。例如,可以通過將每個計(jì)數(shù)器右移一位來完成除以二。在 示例性實(shí)施例中,所預(yù)測的分支的置信度存儲在具有方向預(yù)測的分支預(yù)測陣列中。每當(dāng)進(jìn) 行預(yù)測時,還取得不確定度。在一個實(shí)施例中,不確定度可以由下式給出:
[0027] 1/Confidence = Wrong/ (Correct+ffrong)
[0028] 在塊320,系統(tǒng)100跟蹤所預(yù)測的分支的不確定度。在示例性實(shí)施例中,當(dāng)用于分 支的不確定度具有大于〇的錯誤計(jì)數(shù)時,則存在關(guān)于所預(yù)測的分支的不確定度的級別。不 確定度指示:在最近的過去,按照計(jì)數(shù)器,預(yù)測已經(jīng)錯誤。無論所給定的分支的不確定度如 何,關(guān)于按照分支自身的不確定度在流水線中執(zhí)行分支都沒有問題;其為在所討論的分支 之后的指令。
[0029] 例如,如果所給定的分支具有"1"的不確定度,則在該分支之后下行于流水線200 而發(fā)送的每條指令也被看作具有" 1"的不確定度。故此,如果例如在該分支之后下行于流 水線200而發(fā)送十條指令,則所給定的線程已經(jīng)向下發(fā)送值為10的不確定度。如果在第一 分支之后,存在四條無分支指令,然后存在后隨另外五條指令的具有"2"的不確定度的另一 分支,則用于該線程的流水線200中的總不確定度是"20"。在該示例中,可以理解,第一分 支并不將不確定度添加到流水線200。然而,接下來的四個無分支指令均具有"1"的不確定 度(總不確定度于此="4")。第二分支下行于第一分支的不確定度路徑。第二分支因此 將又一個不確定度添加到不確定度計(jì)數(shù)(總值現(xiàn)在為"5")。在第二分支之后的指令均具 有用于第二分支的"2"以及用于第一分支的" 1"的不確定度,對于在第二分支之后的每條 指令加和為"3"不確定度的值。不確定度是處于"3"的值的五條指令,總共15不確定度。 對于十條指令共計(jì),存在"20"的不確定度。繼續(xù)于該示例,若第一分支正確地判決(第二 分支仍待判決),則用于在第一分支之后的十條指令的流水線中的不確定度從"20"下降到 "10",因?yàn)榈谝环种г诹魉€200中不再提供不確定度。反之,若第二分支正確地判決(第 一分支仍待判決),則不確定度也從"20"下降到" 10",因?yàn)橹禐?2"的最后五條指令均不 再將不確定度添加到流水線200。若兩個分支都正確地判決,則流水線中的不確定度的級別 是" 0 ",因?yàn)樵诹魉€中不存在尚未判決的分支。
[0030] 圖4示出可以實(shí)現(xiàn)為跟蹤流水線200中的不確定度的表400的示例。在示例中, 該表包括置信度值列410,該列的每一行表示用于在流水線200中碰到分支時的指令的當(dāng) 前不確定度值總和。在如何跟蹤用于無序跟蹤260的指令組的示例中的"三元組"的實(shí)現(xiàn)從 而指令可以按比每周期一條指令更快的速度按順序進(jìn)行架構(gòu)式更新270。對于所給定的示 例,在三元組內(nèi),存在指令空隙(slot)0、1和2。分支在任何空隙中受支持;然而,空隙1或 2中的分支結(jié)束所給定的三元組內(nèi)的指令。在第一行420中,指令I(lǐng)nstr在流水線200中具 有"〇"不確定度。"〇"的不確定度示出于Instr之下。在第二行430中,指令碰到具有"1" 的不確定度的分支Br(l)。用于指令的不確定度現(xiàn)在是"1",其在Instr之下示出為"1"。 在第二行430中,指令然后碰到具有不確定度"3"的分支Br (3)。與指令關(guān)聯(lián)的不確定度 現(xiàn)在是在行440處列410中所放置的"4"。在行440中,指令在流水線200中具有在Instr 之下的不確定度"4"。因此,在行450中,列410保持在不確定度"4"。然而,在行450中, 指令碰到具有不確定度"2"的另一分支Br (2)。與指令關(guān)聯(lián)的不確定度現(xiàn)在是"6"。故此, 在行460中,列410現(xiàn)在讀取隨流水線200中的指令保持的不確定度"6"。故此,應(yīng)理解,用 于三元組(即每個行)的不確定度是(三元組總和值*三元組中的指令的數(shù)量)+ (最舊的 分支不確定度*比三元組中的較舊的分支更年輕的指令的數(shù)量)。
[0031] 在塊330,系統(tǒng)100平衡流水線200。在示例性實(shí)施例中,為了通過最有可能從每 個線程完成的指令來保持流水線200平衡,流水線200調(diào)度來自每個線程的指令230,從而 流水線200中的后調(diào)度的每線程的不確定度的級別得以平衡。關(guān)于無序發(fā)布引擎,每個線 程具有其自身的使用期優(yōu)先級和判斷,在其之間,在兩個線程之間發(fā)布的線程是基于同樣 保持不確定度的級別平衡的。以此方式,指令發(fā)送到最有可能執(zhí)行工作的流水線中,而不是 在稍后時間點(diǎn)被清除出流水線。具有較高置信度(較小不確定度)的指令因此被給定優(yōu)先 級。
[0032] 在流水線200中,排隊(duì)指令用于發(fā)布。與傳統(tǒng)流水線相似,流水線200按順序取回 210、解碼220并且調(diào)度230指令。然而,也與傳統(tǒng)流水線相似,指令一般無序排隊(duì)并且發(fā)布 240。在示例性實(shí)施例中,指令的發(fā)布考慮指令的不確定度以及指令的使用期。在平衡流水 線200中,系統(tǒng)100考慮指令位置的不確定度,而在調(diào)度指令的同時,盡可能均勻地平衡流 水線中的不確定度,同時還增加有可能執(zhí)行影響架構(gòu)化狀態(tài)的工作的指令的數(shù)量。在示例 性實(shí)施例中,為了保持流水線中的指令的不確定度相等,計(jì)算不確定度的比例并且根據(jù)該 比例來調(diào)度指令。例如,如果線程X具有50的不確定度總和,線程Y具有25的不確定度總 和,則不確定度的比例是2/1。根據(jù)該比例,對于線程Y調(diào)度對于所調(diào)度的線程X的每條指 令的兩倍那么多的指令。以此方式,雖然X的不確定度將繼續(xù)增加超過50,但Y將以比X增 加超過50更快的速度增加超過25。故此,兩個線程的流水線內(nèi)的不確定度朝向不確定度均 衡的點(diǎn)移動。通過達(dá)到均衡點(diǎn),在統(tǒng)計(jì)上很可能最佳最小工作量將被清除出流水線200。可 以理解,因?yàn)榉种Э梢耘袥Q并且不確定度可以改變,所以比例可以在任何時間改變。例如, 對于線程X的不確定度可以達(dá)到60,對于線程Y的不確定度可以達(dá)到40,在此情況下,比例 變?yōu)?/2。在此情況下,對于線程X的每兩條指令,將再次被調(diào)度對于線程Y的三條指令,以 平衡流水線200中的不確定度并且增加用于影響機(jī)器的架構(gòu)狀態(tài)的待執(zhí)行的工作的機(jī)會。 在另一示例中,分支可以對于線程X判決,將不確定度降低到30,由此具有3/4的比例。在 此情況下,對于線程X的每四條指令,將再次被調(diào)度對于線程Y的三條指令,以平衡流水線 200中的不確定度并且增加用于影響機(jī)器的架構(gòu)狀態(tài)的待執(zhí)行的工作的機(jī)會。
[0033] 如在此所描述的那樣,流水線平衡中的另一考量是考慮待發(fā)布的指令的使用期。 傳統(tǒng)上,流水線發(fā)布在發(fā)布隊(duì)列中具有有效數(shù)據(jù)的最舊指令。在示例性實(shí)施例中,基于指令 的使用期以及指令的不確定度來調(diào)度指令。對于每個線程,對于發(fā)布有效的最舊指令檢查 流水線200中到該點(diǎn)為止的指令的不確定度的總和,來自具有最低不確定度的給定線程的 指令是待發(fā)布的指令。在不確定度在各線程間相等的情況下,于是可以應(yīng)用用于發(fā)布的各 線程之間的循環(huán)(round-robin)選擇。例如,如果線程X使得其待發(fā)布的最舊的有效指令 被定義為不確定度的總和為30,且線程Y使得其待發(fā)布的最舊的有效指令被定義為不確定 度的總和為10,則發(fā)布用于線程Y的指令,如上所述。當(dāng)在給定周期上多于一條的指令待發(fā) 布時,對于在該給定周期上待由指令發(fā)布填充的每條指令空隙重復(fù)比較。
[0034] 在示例性實(shí)施例中,在此所描述的系統(tǒng)和方法實(shí)現(xiàn)靜態(tài)水印方案。圖5示意性示 出根據(jù)示例性實(shí)施例的可以實(shí)現(xiàn)的靜態(tài)水印發(fā)布隊(duì)列500的示例。假定其它線程停止,靜 態(tài)水印建立用于待調(diào)度的一個線程的指令數(shù)量的閾值,從而給定的線程B在另一線程A沒 有可用于放置到發(fā)布隊(duì)列中的任何指令的時間幀期間不掛起發(fā)布隊(duì)列。在示例中,線程A 和線程B都具有作為待調(diào)度的取回的功能的指令。在示例中,因?yàn)槔缇€程A可能經(jīng)歷很 長的延遲指令取回,所以線程B拿走大部分資源。故此,大量線程B指令調(diào)度到發(fā)布隊(duì)列 中,而A是取回待解碼并且放置在發(fā)布隊(duì)列中的附加指令的關(guān)閉(off)指令。傳統(tǒng)上,發(fā)布 隊(duì)列將允許線程B繼續(xù)使用資源。在示例性實(shí)施例中,設(shè)置閾值以確保通過為線程A保留 發(fā)布隊(duì)列中的空間而同樣可以調(diào)度一些線程A指令。一旦用于線程B的指令達(dá)到水印級別 510 (發(fā)布隊(duì)列的給定百分比),就停止將指令從線程B調(diào)度到隊(duì)列中。即使線程A并不準(zhǔn) 備調(diào)度指令,其也具有調(diào)度指令到的發(fā)布隊(duì)列中所保留的N個空間。當(dāng)線程A從長延遲操 作恢復(fù)時,對于線程A的指令在發(fā)布隊(duì)列中將存在可用的點(diǎn)。示例示出頭指針520和尾指 針530。頭指針520是循環(huán)發(fā)布隊(duì)列的頭,并且定義隊(duì)列中的最舊指令,尾指針530是定義 下一指令插入到隊(duì)列中的什么地方的附加指針。在示例性實(shí)施例中,尾指針530指向在水 印閾值510之后的第一空隙。B被允許繼續(xù)將指令調(diào)度到發(fā)布隊(duì)列的尾指針位置中,直到到 達(dá)水印510。此時,尾指針移動一個點(diǎn)穿過水印,以表示下一指令待調(diào)度到的發(fā)布隊(duì)列的位 置。在完成長延遲操作之后的線程A的指令現(xiàn)在具有調(diào)度到的發(fā)布隊(duì)列中的空隙。在該方 案中,雖然不確定度的比例很有可能從均衡偏移離開,但水印已經(jīng)防止該比例變得比其已 經(jīng)變?yōu)榈母^度。
[0035] 在示例性實(shí)施例中,在此所描述的系統(tǒng)和方法可以實(shí)現(xiàn)從發(fā)布清除的方案。圖6 示意性示出根據(jù)示例性實(shí)施例的可以實(shí)現(xiàn)的從發(fā)放隊(duì)列600清除的示例??梢詮陌l(fā)布隊(duì)列 清除指令,從而在發(fā)布隊(duì)列中存在所調(diào)度的指令的不確定度的平衡。在示例中,線程A和線 程B都具有待調(diào)度的發(fā)布隊(duì)列中的指令。因?yàn)槔缇€程A可能經(jīng)歷長延遲指令取回操作, 所以線程B拿走大部分資源。故此,大量線程B指令調(diào)度到將兩個線程的不確定度比例移 動離開均衡的發(fā)布隊(duì)列中。線程A將停止多長是未知的,故此,線程B可以通過使用整個發(fā) 布隊(duì)列來得到附加性能,因?yàn)槠鋵⒘硗庠诖吮3治词褂茫瑢τ诰€程A,沒有可用于放置到發(fā) 布隊(duì)列中的指令。在示例性實(shí)施例中,當(dāng)用于線程A的指令變得可用于發(fā)布隊(duì)列中的插入 時,流水線200可以從發(fā)布隊(duì)列清除線程B的N個更年輕的指令,并且在調(diào)度用于線程A的 指令之后重新調(diào)度它們,這平衡了發(fā)布隊(duì)列不確定度。頭指針610是定義發(fā)布隊(duì)列中的最 舊指令的循環(huán)發(fā)布隊(duì)列的頭。尾指針620定義指令要插入到發(fā)布隊(duì)列中的下一空隙。給定 數(shù)量的B可以從隊(duì)列被清除,B指針可以移動得更靠近頭指針610,以建立待清除的多個線 程B指令,如在此所描述的那樣。在示例性實(shí)施例中,為了避免重新取回用于線程B的指令, 指令可以保存在"虛假"(虛擬)指令隊(duì)列中,其可以是在被調(diào)度230之前保存來自指令取 回的指令的隊(duì)列的擴(kuò)展。
[0036] 如上所述,可以通過計(jì)算機(jī)實(shí)現(xiàn)的處理和用于實(shí)踐這些處理的裝置來對實(shí)施例進(jìn) 行實(shí)施。實(shí)施例可以包括具有包含在作為制造物的有形介質(zhì)中實(shí)施的指令的計(jì)算機(jī)程序代 碼邏輯704的計(jì)算機(jī)可讀/可用的介質(zhì)702上的如圖7中所描述的計(jì)算機(jī)程序產(chǎn)品700。 用于計(jì)算機(jī)可讀/可用的介質(zhì)702的示例性制造物可以包括軟盤、CD-ROM、硬盤驅(qū)動器、通 用串行總線(USB)閃速驅(qū)動器或任何其它計(jì)算機(jī)可讀存儲介質(zhì),其中,當(dāng)計(jì)算機(jī)程序代碼 邏輯704加載到計(jì)算機(jī)中并且由計(jì)算機(jī)執(zhí)行時,計(jì)算機(jī)變?yōu)橛糜趯?shí)踐本發(fā)明的裝置。實(shí)施 例包括計(jì)算機(jī)程序代碼邏輯704,例如,是否存儲在存儲介質(zhì)中,加載到計(jì)算機(jī)中和/或由 計(jì)算機(jī)執(zhí)行,或通過一些傳輸介質(zhì)(例如通過電引線或纜線,通過光纖或經(jīng)由電磁輻射)而 發(fā)送,其中,當(dāng)計(jì)算機(jī)程序代碼邏輯704加載到計(jì)算機(jī)中并且由計(jì)算機(jī)執(zhí)行時,計(jì)算機(jī)變?yōu)?實(shí)踐本發(fā)明的裝置。當(dāng)在通用微處理器上實(shí)現(xiàn)時,計(jì)算機(jī)程序代碼邏輯704分段配置微處 理器以創(chuàng)建特定邏輯電路。
[0037] 所屬【技術(shù)領(lǐng)域】的技術(shù)人員知道,本發(fā)明可以實(shí)現(xiàn)為系統(tǒng)、方法或計(jì)算機(jī)程序產(chǎn)品。 因此,本公開可以具體實(shí)現(xiàn)為以下形式,即:可以是完全的硬件、也可以是完全的軟件(包 括固件、駐留軟件、微代碼等),還可以是硬件和軟件結(jié)合的形式,本文一般稱為"電路"、"模 塊"或"系統(tǒng)"。此外,在一些實(shí)施例中,本發(fā)明還可以實(shí)現(xiàn)為在一個或多個計(jì)算機(jī)可讀介質(zhì) 中的計(jì)算機(jī)程序產(chǎn)品的形式,該計(jì)算機(jī)可讀介質(zhì)中包含計(jì)算機(jī)可讀的程序代碼。
[0038] 可以采用一個或多個計(jì)算機(jī)可讀的介質(zhì)的任意組合。計(jì)算機(jī)可讀介質(zhì)可以是計(jì) 算機(jī)可讀信號介質(zhì)或者計(jì)算機(jī)可讀存儲介質(zhì)。計(jì)算機(jī)可讀存儲介質(zhì)例如可以是--但不限 于--電、磁、光、電磁、紅外線、或半導(dǎo)體的系統(tǒng)、裝置或器件,或者任意以上的組合。計(jì)算 機(jī)可讀存儲介質(zhì)的更具體的例子(非窮舉的列表)包括:具有一個或多個導(dǎo)線的電連接、便 攜式計(jì)算機(jī)磁盤、硬盤、隨機(jī)存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲 器(EPROM或閃存)、光纖、便攜式緊湊磁盤只讀存儲器(CD-ROM)、光存儲器件、磁存儲器件、 或者上述的任意合適的組合。在本文件中,計(jì)算機(jī)可讀存儲介質(zhì)可以是任何包含或存儲程 序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。
[0039] 計(jì)算機(jī)可讀信號介質(zhì)可以包括例如在基帶中或作為載波的一部分具有在其中實(shí) 施的計(jì)算機(jī)可讀程序代碼的傳輸數(shù)據(jù)信號。該傳輸信號可以采用任何多種形式,包括但不 限于電磁、光或其任何合適的組合。計(jì)算機(jī)可讀信號介質(zhì)可以是并非計(jì)算機(jī)可讀存儲介質(zhì) 并且可以傳遞、傳輸、傳送用于由指令執(zhí)行系統(tǒng)、裝置或設(shè)備使用或與之結(jié)合的程序的任何 計(jì)算機(jī)可讀介質(zhì)。
[0040] 體現(xiàn)在計(jì)算機(jī)可讀介質(zhì)上的程序代碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,所述介質(zhì)包括 但不限于:無線、有線、光纜、RF等,或上述的任意合適的組合。
[0041] 可以以一種或多種程序設(shè)計(jì)語言或其組合來編寫用于執(zhí)行本發(fā)明操作的計(jì)算機(jī) 程序代碼,所述程序設(shè)計(jì)語言包括面向?qū)ο蟮某绦蛟O(shè)計(jì)語言一諸如Java、Smalltalk、C++, 還包括常規(guī)的過程式程序設(shè)計(jì)語言一諸如" C"語言或類似的程序設(shè)計(jì)語言。程序代碼可以 完全地在用戶計(jì)算機(jī)上執(zhí)行、部分地在用戶計(jì)算機(jī)上執(zhí)行、作為一個獨(dú)立的軟件包執(zhí)行、部 分在用戶計(jì)算機(jī)上部分在遠(yuǎn)程計(jì)算機(jī)上執(zhí)行、或者完全在遠(yuǎn)程計(jì)算機(jī)或服務(wù)器上執(zhí)行。在 涉及遠(yuǎn)程計(jì)算機(jī)的情形中,遠(yuǎn)程計(jì)算機(jī)可以通過任意種類的網(wǎng)絡(luò)--包括局域網(wǎng)(LAN)或 廣域網(wǎng)(WAN)-連接到用戶計(jì)算機(jī),或者,可以連接到外部計(jì)算機(jī)(例如利用因特網(wǎng)服務(wù)提 供商來通過因特網(wǎng)連接)。
[0042] 本文中將參照本發(fā)明實(shí)施例的方法、裝置(系統(tǒng))和計(jì)算機(jī)程序產(chǎn)品的流程圖和 /或框圖描述本發(fā)明。應(yīng)當(dāng)理解,流程圖和/或框圖的每個方框以及流程圖和/或框圖中 各方框的組合,都可以由計(jì)算機(jī)程序指令實(shí)現(xiàn)。這些計(jì)算機(jī)程序指令可以提供給通用計(jì)算 機(jī)、專用計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機(jī)器,這些計(jì)算機(jī)程 序指令通過計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置執(zhí)行,產(chǎn)生了實(shí)現(xiàn)流程圖和/或框圖中的方 框中規(guī)定的功能/操作的裝置。
[0043] 也可以把這些計(jì)算機(jī)程序指令存儲在能使得計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置 以特定方式工作的計(jì)算機(jī)可讀介質(zhì)中,這樣,存儲在計(jì)算機(jī)可讀介質(zhì)中的指令就產(chǎn)生出一 個包括實(shí)現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的指令裝置(instruction means)的制造品(manufacture) 〇
[0044] 也可以把計(jì)算機(jī)程序指令加載到計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備 上,使得在計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置或其它設(shè)備上執(zhí)行一系列操作步驟,以產(chǎn)生計(jì) 算機(jī)實(shí)現(xiàn)的過程,從而使得在計(jì)算機(jī)或其它可編程裝置上執(zhí)行的指令能夠提供實(shí)現(xiàn)流程圖 和/或框圖中的方框中規(guī)定的功能/操作的過程。
[0045] 附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程 序產(chǎn)品的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個方框可以 代表一個模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個或多個 用于實(shí)現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實(shí)現(xiàn)中,方框中所 標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個連續(xù)的方框?qū)嶋H上可以 基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的 是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行 規(guī)定的功能或操作的專用的基于硬件的系統(tǒng)來實(shí)現(xiàn),或者可以用專用硬件與計(jì)算機(jī)指令的 組合來實(shí)現(xiàn)。
[0046] 在此使用的術(shù)語僅是為了描述特定實(shí)施例,且不旨在限制本發(fā)明。如在此使用的, 單數(shù)形式"一"、"一個"和"該"也旨在包括復(fù)數(shù)形式,除非上下文另外清楚地指明。還將理 解,當(dāng)在說明書中使用時,術(shù)語"包括"和/或"包含"指明存在所述的特征、整體、步驟、操 作、元件和/或組件,但不排除存在或附加一個或多個其他特征、整體、步驟、操作、元件和/ 或組件。
[0047] 所附權(quán)利要求書中的所有裝置或步驟加功能元件的相應(yīng)結(jié)構(gòu)、材料、操作以及等 價物,如有的話,旨在包括用于結(jié)合如特別要求保護(hù)的其他所要求保護(hù)的元件來執(zhí)行所述 功能的任何結(jié)構(gòu)、材料或操作。呈現(xiàn)本發(fā)明的說明是為了示出和描述的作用,但不是窮盡 性的或?qū)⒈景l(fā)明限制于所公開的形式。許多修改和變化對本領(lǐng)域普通技術(shù)人員來說是明顯 的,且不脫離本發(fā)明的范圍。選擇和描述實(shí)施例是為了最佳地解釋本發(fā)明的原理和實(shí)際應(yīng) 用,并使得本領(lǐng)域普通技術(shù)人員能針對適于考慮的特定用途的具有各種修改的各種實(shí)施例 理解本發(fā)明。
[0048] 在此所描述的流程圖僅為一個示例。在不脫離本發(fā)明的精神的情況下,可以存在 對于在此所描述的該圖或步驟(或操作)的很多變形。例如,可以按不同的順序來執(zhí)行步 驟,或可以添加、刪除或修改步驟。所有這些變形被看作本發(fā)明的一部分。
[0049] 雖然已經(jīng)描述了本發(fā)明優(yōu)選實(shí)施例,但本領(lǐng)域技術(shù)人員應(yīng)理解,在現(xiàn)在和將來,可 以進(jìn)行落入所附權(quán)利要求的范圍內(nèi)的各種改進(jìn)和增強(qiáng)。這些權(quán)利要求應(yīng)理解為保持首先描 述的本發(fā)明的正確保護(hù)范圍。
[0050] 在此所描述的流程圖僅為一個示例。在不脫離本發(fā)明的精神的情況下,可以存在 對于在此所描述的該圖或步驟(或操作)的很多變形。例如,可以按不同的順序來執(zhí)行步 驟,或可以添加、刪除或修改步驟。所有這些變形被看作本發(fā)明的一部分。
[0051] 雖然已經(jīng)描述了本發(fā)明優(yōu)選實(shí)施例,但本領(lǐng)域技術(shù)人員應(yīng)理解,在現(xiàn)在和將來,可 以進(jìn)行落入所附權(quán)利要求的范圍內(nèi)的各種改進(jìn)和增強(qiáng)。這些權(quán)利要求應(yīng)理解為保持首先描 述的本發(fā)明的正確保護(hù)范圍。
【權(quán)利要求】
1. 一種用于流水線中的指令執(zhí)行的計(jì)算機(jī)實(shí)現(xiàn)的方法,所述方法包括: 在所述流水線中取回多條指令,其中,所述多條指令包括多條分支指令; 對于所述多條分支指令中的每一條,將分支不確定度分配給所述多條分支指令中的每 一條; 對于所述多條指令中的每一條,分配指令不確定度,其為較舊的未判決的分支的分支 不確定度的總和;以及 在所述流水線中基于指令不確定度的當(dāng)前總和來平衡所述指令。
2. 如權(quán)利要求1所述的方法,還包括:分配用于與所述多條指令的多個指令子集關(guān)聯(lián) 的多個線程中的每一個的多個不確定度。
3. 如權(quán)利要求2所述的方法,還包括:根據(jù)所述多個不確定度來計(jì)算多個不確定度比 例。
4. 如權(quán)利要求2所述的方法,還包括:在所述流水線中調(diào)度所述多條指令。
5. 如權(quán)利要求2所述的方法,其中,與來自所述多個不確定度的比例成比例地調(diào)度指 令。
6. 如權(quán)利要求1所述的方法,還包括:計(jì)算總不確定度,其中,所述總不確定度是用于 所述多條指令中的每一個的所述指令不確定度的總和。
7. 如權(quán)利要求1所述的方法,還包括:保留用于所述多條指令的子集的發(fā)布隊(duì)列空間。
8. 如權(quán)利要求1所述的方法,還包括:響應(yīng)于第二子集指令變?yōu)榭捎糜谡{(diào)度而從所述 流水線清除第一指令子集。
9. 一種系統(tǒng),包括適用于執(zhí)行如任何前述方法權(quán)利要求所述的方法的所有步驟的裝 置。
10. -種計(jì)算機(jī)程序,包括用于執(zhí)行如任何前述方法權(quán)利要求所述的方法的所有步驟 的指令。
【文檔編號】G06F9/38GK104094223SQ201380008222
【公開日】2014年10月8日 申請日期:2013年1月24日 優(yōu)先權(quán)日:2012年2月6日
【發(fā)明者】B.R.普拉斯基, A.布尤克托蘇諾格盧, V.斯里尼瓦桑 申請人:國際商業(yè)機(jī)器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
济源市| 黄梅县| 清丰县| 永仁县| 勃利县| 滦平县| 古浪县| 贵州省| 伊通| 西乌| 江阴市| 枣庄市| 新河县| 宁安市| 宽城| 呼图壁县| 台南市| 界首市| 乐东| 西峡县| 皋兰县| 石城县| 陈巴尔虎旗| 长岛县| 广州市| 榕江县| 同仁县| 娱乐| 五常市| 怀宁县| 盘锦市| 武安市| 上饶县| 南阳市| 庆阳市| 镇巴县| 来凤县| 青海省| 府谷县| 兴化市| 黄石市|