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

包括至少一個具有線程模式和事務(wù)模式的資源的設(shè)備及方法與流程

文檔序號:11635198閱讀:192來源:國知局
包括至少一個具有線程模式和事務(wù)模式的資源的設(shè)備及方法與流程

本技術(shù)涉及數(shù)據(jù)處理領(lǐng)域。



背景技術(shù):

一些數(shù)據(jù)處理設(shè)備可以支持事務(wù)處理,其中在事務(wù)開始事件之后,多個數(shù)據(jù)處理操作(通常包括諸如加載和存儲之類的數(shù)據(jù)訪問操作)被推測性地執(zhí)行。在事務(wù)結(jié)束事件之后,推測性地執(zhí)行的操作的結(jié)果被提交。如果在事務(wù)結(jié)束事件之前發(fā)生中止事件,則對事務(wù)執(zhí)行的處理操作的推測性結(jié)果可被丟棄,從而觸發(fā)事務(wù)中止。該機(jī)制可能對于例如實現(xiàn)對數(shù)據(jù)或存儲器的區(qū)域的獨占訪問是有用的。然而,支持事務(wù)處理所需的資源可能需要顯著的電路面積和能量開銷。



技術(shù)實現(xiàn)要素:

從一個方面來看,本技術(shù)提供了一種設(shè)備,包括:用于執(zhí)行數(shù)據(jù)處理的處理電路;其中處理電路能夠訪問第一處理資源和第二處理資源;處理電路使用第一處理資源來處理第一線程;在第二處理資源的線程模式中,處理電路使用第二處理資源來處理第二線程;并且在第二處理資源的事務(wù)模式中,處理電路使用第二處理資源來處理第一線程的事務(wù),所述事務(wù)包括由處理電路在事務(wù)開始事件之后針對第一線程推測性地執(zhí)行的一個或多個數(shù)據(jù)處理操作,響應(yīng)于事務(wù)結(jié)束事件,推測性地執(zhí)行的數(shù)據(jù)處理操作的結(jié)果被提交。

從另一方面來看,本技術(shù)提供了一種設(shè)備,包括:用于執(zhí)行數(shù)據(jù)處理的處理裝置;其中處理裝置能夠訪問用于支持?jǐn)?shù)據(jù)處理的第一處理資源裝置和第二處理資源裝置;處理裝置使用所述第一處理資源裝置來處理第一線程;在第二處理資源裝置的線程模式中,處理裝置使用第二處理資源裝置來處理第二線程;并且在第二處理資源裝置的事務(wù)模式中,處理裝置使用第二處理資源裝置來處理第一線程的事務(wù),所述事務(wù)包括由處理裝置在事務(wù)開始事件之后針對第一線程推測性地執(zhí)行的一個或多個數(shù)據(jù)處理操作,響應(yīng)于事務(wù)結(jié)束事件,推測性地執(zhí)行的數(shù)據(jù)處理操作的結(jié)果被提交。

從另一方面來看,本技術(shù)提供了一種用于包括能夠訪問第一處理資源和第二處理資源的處理電路的設(shè)備的數(shù)據(jù)處理方法,該方法包括:利用處理電路使用第一處理資源來處理第一線程;當(dāng)?shù)诙幚碣Y源處于線程模式時,利用處理電路使用第二處理資源來處理第二線程;并且當(dāng)?shù)诙幚碣Y源處于事務(wù)模式時,利用處理電路使用第二處理資源來處理第一線程的事務(wù),所述事務(wù)包括由處理電路在事務(wù)開始事件之后針對第一線程推測性地執(zhí)行的一個或多個數(shù)據(jù)處理操作,響應(yīng)于事務(wù)結(jié)束事件,推測性地執(zhí)行的數(shù)據(jù)處理操作的結(jié)果被提交。

附圖說明

從以下結(jié)合附圖閱讀的實施例的描述中,本技術(shù)的其它方面、特征和優(yōu)點將變得顯而易見,其中:

圖1示意性地示出具有處理資源的數(shù)據(jù)處理設(shè)備的示例,處理資源具有事務(wù)模式和線程模式;

圖2示出了在事務(wù)模式中使用處理資源的示例;

圖3顯示了在線程模式中使用資源的示例;

圖4顯示了用于存儲配置數(shù)據(jù)的配置寄存器的示例;

圖5顯示了在線程模式和事務(wù)模式之間動態(tài)切換資源的示例;和

圖6示出了處理數(shù)據(jù)的方法。

具體實施方式

處理事務(wù)可能需要使得某些處理資源對處理電路可用。例如,各種存儲結(jié)構(gòu)可以用來跟蹤推測性地執(zhí)行的數(shù)據(jù)處理操作的結(jié)果,或者存儲在事務(wù)被中止時可能需要恢復(fù)的數(shù)據(jù)的先前版本。這些資源在面積和功耗方面可能相對昂貴,特別是對于相對較小的處理元件。處理電路還可以具有用于支持多個處理線程的運行的資源。例如,可以提供用于存儲每個線程的狀態(tài)數(shù)據(jù)的存儲結(jié)構(gòu),使得處理電路可以相對高效地在不同線程之間切換運行,而不需要從存儲器獲取大量的狀態(tài)數(shù)據(jù)。因此,既支持多線程又支持處理事務(wù)可能需要一些額外的處理資源。發(fā)明人認(rèn)識到,一些這樣的處理資源可以在多個線程處理和事務(wù)處理之間共享,使得不需要為每個線程提供單獨的資源以及用于處理事務(wù)的附加資源。通過減少所需的資源量(要維護(hù)這些資源會是高成本的),整個設(shè)備可以具有更少的電路面積并消耗更少的功率。

因此,處理電路可以訪問第一處理資源和第二處理資源(資源可以在處理電路內(nèi),或者可以是外部資源)。第一線程可以使用第一處理資源來處理。第二處理資源可以具有線程模式和事務(wù)模式。在線程模式中,處理電路可以使用第二處理資源處理第二線程。在事務(wù)模式中,處理電路可以使用第二處理資源處理第一線程的事務(wù),其中事務(wù)包括在事務(wù)開始事件之后由處理電路針對第一線程推測性地執(zhí)行的至少一個處理操作,響應(yīng)于事務(wù)結(jié)束事件,這些操作的結(jié)果被提交。以這種方式,第二處理資源可以用于支持第二線程的執(zhí)行或支持作為第一線程的一部分處理的事務(wù)。實踐中,與在處理事務(wù)的同時需要支持許多線程可能相對較少,因此通過在這些功能之間共享資源,可以節(jié)省資源。

處理資源可能采取各種形式。有許多類型的處理資源可用于處理線程和事務(wù),并不是所有這些都需要在線程模式和事務(wù)模式之間共享。一些資源可僅由附加線程使用或僅用于處理事務(wù)。然而,至少一個處理資源可被用于線程模式和事務(wù)模式二者中。

例如,第一處理資源和第二處理資源可以分別包括第一組存儲元件和第二組存儲元件(存儲元件例如可以是緩存或存儲器中的區(qū)域或寄存器)。第一組存儲元件可以存儲第一線程的數(shù)據(jù)(例如由第一線程生成的寄存器狀態(tài))。第二組存儲元件可以用于根據(jù)第二處理資源的模式存儲不同的數(shù)據(jù)。在線程模式中,第二組存儲元件可存儲第二線程的數(shù)據(jù)。在事務(wù)模式中,第二組存儲元件可以存儲作為第一線程的一部分而被處理的事務(wù)的數(shù)據(jù)。

例如,在事務(wù)模式期間存儲在第二組存儲元件中的數(shù)據(jù)可以是指示在事務(wù)結(jié)束事件之前發(fā)生中止事件時要恢復(fù)的狀態(tài)數(shù)據(jù)的先前版本的狀態(tài)恢復(fù)數(shù)據(jù)。通過重新利用提供用于處理第二線程的第二組存儲元件來替代地存儲用于第一線程的事務(wù)的狀態(tài)恢復(fù)數(shù)據(jù)(或者反之亦然),可以減少存儲元件的數(shù)量。

第一和第二處理資源的另一示例可以是與存儲裝置(例如,緩存)中的數(shù)據(jù)值相關(guān)聯(lián)的標(biāo)識符。為了支持多線程,存儲裝置可以用指示數(shù)據(jù)所屬于哪個線程的標(biāo)識符來標(biāo)記每個數(shù)據(jù)值。第一處理資源可以包括標(biāo)識符的第一值,其標(biāo)識與第一線程相關(guān)聯(lián)的數(shù)據(jù),并且第二處理資源可以包括標(biāo)識符的第二值。在線程模式中,標(biāo)識符的第二值可用于標(biāo)識與第二線程相關(guān)聯(lián)的數(shù)據(jù),而在事務(wù)模式中,它可以被重新利用以指示與事務(wù)相關(guān)聯(lián)的數(shù)據(jù)。例如,與事務(wù)相關(guān)聯(lián)的數(shù)據(jù)可以是指示針對事務(wù)執(zhí)行的處理操作的推測性結(jié)果的數(shù)據(jù)。通過重新利用標(biāo)識符的某些位模式來將數(shù)據(jù)標(biāo)識為屬于第二線程或?qū)儆谑聞?wù)(這取決于當(dāng)前模式),可以為每個數(shù)據(jù)值的標(biāo)識符提供較少的位。如果大量數(shù)據(jù)被存儲,其中每個值具有相應(yīng)的標(biāo)識標(biāo)志,則即使將每個標(biāo)志的尺寸減小一位也可以顯著減少緩存的總大小,從而減少電路面積和功耗。

類似地,對要由處理電路執(zhí)行的待執(zhí)行操作進(jìn)行排隊的操作隊列可以對每個操作標(biāo)記相關(guān)聯(lián)的操作標(biāo)識符,并且第一/第二處理資源可以包括該操作標(biāo)識符的第一/第二值。第一值可以表示與第一線程相關(guān)聯(lián)的操作。第二值可以在線程模式期間表示與第二線程相關(guān)聯(lián)的操作,以及在事務(wù)模式期間表示事務(wù)內(nèi)的推測性操作。再次,這避免了為每個線程以及每個事務(wù)分配操作標(biāo)識符的不同編碼的需要,從而允許將較少數(shù)量的位用于標(biāo)識符,因此允許在操作隊列中提供較少的存儲。例如,操作隊列可以是對加載操作或存儲操作進(jìn)行排隊的加載/存儲隊列。

將理解,這些只是可以為支持線程和事務(wù)共享的資源的一些示例。

存在將第二處理資源配置在線程模式或事務(wù)模式中的各種方式。在一個示例中,可以提供存儲指示第二處理資源是處于線程模式還是事務(wù)模式的配置數(shù)據(jù)的配置存儲元件(例如,控制寄存器)。第二處理資源的模式然后可以通過設(shè)置配置存儲元件中的配置數(shù)據(jù)來控制。

在一個示例中,第二處理資源的模式可以靜態(tài)地配置。例如,當(dāng)處理電路最初經(jīng)歷其啟動(boot)過程時,第二處理資源的模式可以由處理電路在啟動時被設(shè)置。例如,啟動軟件可以將配置數(shù)據(jù)設(shè)置為指示第二處理資源應(yīng)該處于哪種模式。在這樣的示例中,當(dāng)處理電路處于操作中并運行應(yīng)用軟件時,可能無法在運行時間改變第二處理資源的模式。如果需要更改模式(例如事務(wù)需要被執(zhí)行,但在事務(wù)模式中沒有資源可用),則用于控制第二處理資源的模式的啟動代碼本身或由啟動程序讀取的某些配置數(shù)據(jù)可以改變,然后處理電路可以重新啟動。

在其他示例中,第二處理資源的模式可以例如在當(dāng)處理電路正在運行應(yīng)用軟件時的運行時間處被動態(tài)地改變。例如,事務(wù)的需求可能因運行的應(yīng)用而變化。要求處理電路脫機(jī)并重新啟動以改變第二處理資源的模式可能太慢和昂貴。通過允許動態(tài)重新配置,線程可以從使用第二處理資源退出,有利于處理另一線程的事務(wù),使得系統(tǒng)可以更高效地響應(yīng)正被運行的應(yīng)用的需求。

例如,在當(dāng)?shù)诙幚碣Y源處于線程模式時發(fā)生針對第一線程的事務(wù)開始事件時,處理電路可以將第二處理資源切換到事務(wù)模式,使得事務(wù)可以使用第二個處理資源來處理。當(dāng)切換到事務(wù)模式時,在開始處理事務(wù)之前,可以存在用于將與第二線程或第二處理資源相關(guān)聯(lián)的狀態(tài)數(shù)據(jù)保存到存儲裝置的狀態(tài)保存操作。例如,如果第二處理資源包括當(dāng)前存儲針對第二線程的數(shù)據(jù)的至少一個存儲元件,則該數(shù)據(jù)可被保存到另一位置,以便為事務(wù)使用的數(shù)據(jù)騰出空間。類似地,在共享資源是當(dāng)前用于指示與第二線程相關(guān)聯(lián)的數(shù)據(jù)或操作的特定標(biāo)識符值的情況下,這些數(shù)據(jù)或操作可被丟棄或保存,然后相應(yīng)的標(biāo)識符值可被用來指明與第一線程的事務(wù)相關(guān)聯(lián)的數(shù)據(jù)或操作。

在某些情況下,向事務(wù)模式的切換可以通過模式切換電路檢測處理事務(wù)的需求并相應(yīng)地重新配置第二處理資源(例如通過將控制數(shù)據(jù)寫入配置寄存器和/或管理任何狀態(tài)保存)來執(zhí)行。

在其他示例中,在處理電路上運行的軟件可以控制向處理模式的切換。例如,當(dāng)?shù)诙幚碣Y源處于線程模式時,若遇到事務(wù)開始事件,處理電路可以通知異常狀況。在處理電路上運行的控制程序可以響應(yīng)異常狀況而將第二處理電路切換到事務(wù)模式(包括任何所需的狀態(tài)保存)??刂瞥绦蚶缈梢允怯糜谔幹帽煌ㄖ漠惓顩r的異常處理程序,或用于管理第一線程或第二線程的操作系統(tǒng)。

事務(wù)開始事件和事務(wù)結(jié)束事件可以以各種方式通知,例如通過外部信號。然而,在為第一線程運行的代碼中提供事務(wù)開始指令和事務(wù)結(jié)束指令來分別標(biāo)記事務(wù)的開始和結(jié)束可能是方便的。在一個示例中,事務(wù)開始指令的成功運行可以取決于是否在事務(wù)模式中提供了資源。如果在事務(wù)模式中沒有資源可用,則這可能觸發(fā)未定義的指令異常,使得異常處理例程或操作系統(tǒng)于是可以將第二處理資源重新配置為處于事務(wù)模式,從而使得事務(wù)然后可以得以處理。

當(dāng)事務(wù)中止或完成并且不再需要第二處理資源時,處理電路可以將第二處理資源切換回線程模式,從而可以恢復(fù)第二線程的處理。這可以包括恢復(fù)當(dāng)?shù)诙幚碣Y源先前切換到事務(wù)模式時為第二線程保存的一些狀態(tài)數(shù)據(jù)。

但是,在某些情況下,每次事務(wù)完成后就將資源切換回線程模式可能并不高效。例如,可能有連續(xù)若干事務(wù)要處理,因此在完成一個事務(wù)時恢復(fù)第二線程的狀態(tài),僅在下一個事務(wù)開始時再次保存該狀態(tài),可能會產(chǎn)生延遲和能量成本。在返回線程模式之前允許多個事務(wù)在事務(wù)模式下進(jìn)行競爭可能會更有效。一種這樣做的方法是推遲將第二處理資源切換回線程模式,直到在事務(wù)處理完成之后滿足預(yù)定條件。例如,條件可以是經(jīng)過預(yù)定量的時間或給定數(shù)量的處理循環(huán)而尚未開始處理另一個事務(wù),或者可以是第一線程的預(yù)定數(shù)量的處理操作或指令完成而尚未遇到另一個事務(wù)。通過把切換返回延遲一段時間,更有可能若干事務(wù)連續(xù)地被處理,而不會插入狀態(tài)保存/恢復(fù)操作,以提高能效。在第二處理資源切換回線程模式之前要滿足的特定條件可以被定義在存儲在設(shè)備的配置存儲元件內(nèi)的配置數(shù)據(jù)中。這允許在切換回線程模式之前的延遲能夠根據(jù)預(yù)期的事務(wù)頻率進(jìn)行調(diào)整。

盡管上述示例討論了單個第二處理資源,但在某些情況下可能存在若干具有線程模式和事務(wù)模式的這類資源。類似地,一些系統(tǒng)可以具有多于一個第一處理資源,每個用于支持不同的線程。如上所述,每個第二處理資源可以在線程模式和事務(wù)模式之間進(jìn)行靜態(tài)或動態(tài)切換。以這種方式,設(shè)備可以擴(kuò)展或減少所支持的線程數(shù)和可以處理事務(wù)的線程數(shù)。例如,可以有四組資源,這四組資源可以以數(shù)種不同方式配置,例如,(1)所有四個資源處于線程模式以處理四個獨立的線程,(2)這些資源之一處于事務(wù)模式,以便三個線程一起被支持,其中每次支持三個線程之一的事務(wù),或者(3)兩組資源處于事務(wù)模式,以便可能都正在執(zhí)行事務(wù)的兩個線程都得到支持。因此,支持的硬件線程的數(shù)量和每個線程處理事務(wù)的能力之間的平衡可以根據(jù)給定的應(yīng)用的要求而變化。

在某些情況下,第一線程使用的第一處理資源可以不支持事務(wù)模式,并且可以始終有效地處于線程模式。這種方法可以減少所需的配置數(shù)據(jù)量。提供用于在線程模式和事務(wù)模式之間切換每個資源的配置開銷可能是不合理的,因為通常在給定時間至少一個資源需要以線程模式運行,從而至少一個線程可以運行。

然而,如果需要,可以提供可以分別處于線程模式或事務(wù)模式中的多個資源。因此,在一些情況下,第一處理資源也可以支持線程模式和事務(wù)模式(與第二處理資源相同)。雖然可能要求至少一個資源當(dāng)前被置于線程模式中,但是為此選擇哪個資源可能并不重要,并且一些系統(tǒng)可以支持每組資源的重新配置。

圖1示出了具有處理器核心4的數(shù)據(jù)處理設(shè)備2的示例,處理器核心4包括用于執(zhí)行數(shù)據(jù)處理操作的處理電路6。例如,處理電路可以包括用于執(zhí)行算術(shù)和邏輯運算的算術(shù)/邏輯單元(alu)流水線8和用于排隊用于訪問存儲器層級結(jié)構(gòu)中的數(shù)據(jù)的加載或存儲操作的加載/存儲隊列10。存儲器層級結(jié)構(gòu)可以包括處理器核心4本地的級別1(l1)緩存12以及級別2(l2)緩存14和存儲器16。從加載/存儲隊列10執(zhí)行的加載操作可以觸發(fā)從l1緩存12、l2緩存14或存儲器16獲取數(shù)據(jù)值并放置在寄存器18中,而存儲操作可以使來自寄存器18的數(shù)據(jù)放置在存儲器層級結(jié)構(gòu)的緩存12、14或存儲器16之一中。可以使用各種緩存策略來控制哪些數(shù)據(jù)應(yīng)該緩存在l1緩存12和l2緩存14中。

處理電路6可以使用處理電路6可訪問的各種硬件資源來支持若干獨立的運行線程的處理。例如,寄存器18可以包括多組寄存器20(例如,在該示例中為4組),其可以分別用于存儲對應(yīng)線程的處理期間產(chǎn)生的數(shù)據(jù)。各組寄存器20-0、20-1、20-2、20-3可以被實現(xiàn)為單獨的寄存器庫,也可以被實現(xiàn)為同一個庫內(nèi)不同的寄存器子集。此外,存儲在l1緩存12中的數(shù)據(jù)和加載/存儲隊列10中的待執(zhí)行操作可以用指示數(shù)據(jù)或操作屬于哪個線程的線程標(biāo)識符(id)22進(jìn)行標(biāo)記,并且該線程id(tid)可以由處理電路6和諸如緩存控制器之類的任何控制機(jī)制用來在執(zhí)行每個線程的處理操作時確定處理電路6可以訪問或修改哪些數(shù)據(jù)。通過以這種方式為多個線程提供硬件支持,處理電路6可以在不需要執(zhí)行額外的狀態(tài)保存或可能導(dǎo)致線程之間切換延遲的其他操作的情況下快速在來自不同線程的操作之間切換。應(yīng)當(dāng)理解,可能存在用于支持線程的其他資源。

這些資源中的一些可以具有線程模式和事務(wù)模式,從而它們可被重新配置為支持事務(wù)處理,而不是處理附加線程。配置寄存器30可以存儲指示資源是處于事務(wù)模式還是線程模式的配置信息。例如,代替支持第四線程,第四寄存器組20-3和線程id值3可以用于代表使用寄存器組20-0、20-1或20-2和線程id0、1或2處理的其他線程之一來處理事務(wù)。事務(wù)是一組由事務(wù)開始指令和事務(wù)結(jié)束指令限定的操作。在事務(wù)的開始和結(jié)束之間,該線程的任何數(shù)據(jù)訪問操作和其他處理操作可以由處理電路6推測性地進(jìn)行,并且推測性操作的結(jié)果不能在事務(wù)結(jié)束之前被提交到狀態(tài)。

在事務(wù)開始時,可以保存觸發(fā)事務(wù)的線程的寄存器組20-0、20-1、20-2中的寄存器狀態(tài)的快照,并將其放置在在事務(wù)模式操作的第四個寄存器組20-3中。替代地,該線程的寄存器狀態(tài)可以逐漸保存到寄存器20-3,每個寄存器的值只有在事務(wù)期間需要被推測性地更新時才被保存到寄存器20-3,以避免需要保存在事務(wù)期間實際上未更新的寄存器。如果出現(xiàn)中止事件(例如事務(wù)訪問地址與另一個數(shù)據(jù)訪問訪問相同地址之間的沖突),則寄存器20-3中保存的寄存器狀態(tài)可以恢復(fù)到與執(zhí)行事務(wù)的線程相關(guān)聯(lián)的那組寄存器20-0、20-1、20-2,將該組寄存器倒轉(zhuǎn)到事務(wù)開始時所處的狀態(tài)。通過當(dāng)另一個進(jìn)程嘗試訪問與事務(wù)相同的數(shù)據(jù)時中止事務(wù),可以確保事務(wù)只有在對其所需的所有數(shù)據(jù)進(jìn)行了獨占訪問時才能完成,這樣就不會有不同進(jìn)程同時訪問數(shù)據(jù)而造成的危險。

因此,為了支持事務(wù),某一額外的存儲被提供以存儲狀態(tài)恢復(fù)數(shù)據(jù),該狀態(tài)恢復(fù)數(shù)據(jù)表示所保存的要在存在中止事件的情況下恢復(fù)的寄存器狀態(tài)。通過把用來存儲針對附加線程的數(shù)據(jù)的寄存器組20-3之一改為重新用來存儲狀態(tài)恢復(fù)數(shù)據(jù),不需要提供額外存儲。

類似地,在事務(wù)處理期間,數(shù)據(jù)訪問操作(加載/存儲操作)的結(jié)果可以在l1緩存12中被指示為推測性的,以指示它們不應(yīng)該在事務(wù)完成之前被寫回到l2緩存14或存儲器16。如果事務(wù)中止,則推測性數(shù)據(jù)可以被無效或被丟棄。如果事務(wù)完成,則可以通過不再將該數(shù)據(jù)標(biāo)記為推測性的來提交數(shù)據(jù)。替代需要額外的位來指示數(shù)據(jù)是否是推測性的,線程id值之一可以重新用來指示與事務(wù)相關(guān)聯(lián)的推測性數(shù)據(jù)。例如,當(dāng)寄存器組20-3被重新分配用于存儲事務(wù)的狀態(tài)恢復(fù)數(shù)據(jù)時,相應(yīng)的線程id3可用于標(biāo)記推測性數(shù)據(jù),因為相應(yīng)的線程3此時將無法進(jìn)行進(jìn)展。因此,可以在線程模式和事務(wù)模式之間共享的另一種類型的資源可以是線程id的特定值,其可以通告在線程模式期間與給定線程相關(guān)聯(lián)的數(shù)據(jù)以及通告在事務(wù)模式期間的事務(wù)的推測性結(jié)果。加載/存儲隊列10中的線程id22可以以類似的方式重新分配用于事務(wù)。

總之,處理電路6可以訪問多組資源。例如,每組資源可以包括寄存器組20中的一個以及由緩存12和加載/存儲隊列10使用的線程id22的可能值之一。對于這些組資源中的至少一些,資源可以以被配置在事務(wù)模式或線程模式,并且該重新配置可以靜態(tài)或動態(tài)地完成。圖2至圖5示出了這樣做的各種示例。

圖2示出了在事務(wù)模式中使用一組資源(寄存器組20-3和線程id值3)的示例。本示例使用資源的當(dāng)前模式的靜態(tài)配置。在啟動時間,由設(shè)備執(zhí)行的啟動代碼將配置寄存器30設(shè)置為指示資源要被用于事務(wù)模式。一旦啟動,處理開始,其他組資源(寄存器組20-0、20-1、20-2和線程id0、1、2)分別用于處理三個線程0、1、2。例如,對于線程0,處理電路6執(zhí)行標(biāo)記有線程id0的任何操作,使用線程id0標(biāo)記與該線程相關(guān)聯(lián)的l1緩存12中的數(shù)據(jù),并使用寄存器組20-0來存儲任何數(shù)據(jù)處理結(jié)果。線程1和2以類似的方式處理。此時寄存器組20-3和線程id值3不被使用,因為沒有要處理的事務(wù)。

在圖2中標(biāo)記的步驟50,在針對線程1執(zhí)行的處理中遇到事務(wù)開始指令。這使得來自與線程1相關(guān)聯(lián)的寄存器組20-1的寄存器狀態(tài)被保存到在事務(wù)模式下操作的寄存器組20-3中。這提供了線程1的當(dāng)前狀態(tài)的備份,如果有中止,可以恢復(fù)。線程1然后開始推測性操作處理,這可以導(dǎo)致寄存器20-1中的值改變,并且還可以響應(yīng)于加載/存儲操作而將推測性數(shù)據(jù)放置在l1緩存12中。

在步驟60,在事務(wù)到達(dá)事務(wù)結(jié)束指令之前,線程0嘗試訪問與在線程1的事務(wù)期間訪問的地址a相同的地址a,因此檢測到?jīng)_突。例如,處理電路6可以維護(hù)跟蹤在事務(wù)期間訪問的地址的跟蹤結(jié)構(gòu),并且由其他線程訪問的每個地址可以與跟蹤數(shù)據(jù)進(jìn)行比較以檢測是否存在沖突。如果檢測到?jīng)_突,則會發(fā)生中止事件。事務(wù)被中止,并且存儲在以事務(wù)模式操作的寄存器組20-3中的數(shù)據(jù)用于將先前寄存器狀態(tài)恢復(fù)到與線程1相關(guān)聯(lián)的寄存器組20-1。因此,如圖2的點70所示,寄存器組20-1返回到在事務(wù)開始指令之前存儲的相同值。此外,在該事務(wù)中止時,l1緩存12中使用線程id3標(biāo)記為推測性的數(shù)據(jù)被丟棄或無效。

在圖2的步驟80,線程1嘗試再次執(zhí)行事務(wù)。事務(wù)開始指令再次被執(zhí)行,這與步驟50相同的方式導(dǎo)致寄存器狀態(tài)的保存。再次,對于線程1的事務(wù)進(jìn)行推測性的處理,并且任何推測結(jié)果可以使用線程id3標(biāo)記在緩存12中。此時,不發(fā)生中止事件,并且在圖2的步驟90處,為線程1執(zhí)行事務(wù)結(jié)束指令。然后推測性狀態(tài)被提交。例如,具有線程id3的數(shù)據(jù)可以被更新為具有線程id1,以指示該數(shù)據(jù)現(xiàn)在是與執(zhí)行事務(wù)的線程1相關(guān)聯(lián)的非推測性狀態(tài)。如果需要,數(shù)據(jù)可以寫回到l2緩存14或存儲器16。此外,可選地,在該階段,存儲在寄存器組20-3中的任何數(shù)據(jù)可以被丟棄。

因此,如圖2所示,通過配置寄存器20-3之一和線程id3在事務(wù)模式中,這允許另一個線程推測性地執(zhí)行事務(wù),這可以用于確保事務(wù)原子地完成而沒有其他線程的干擾。

圖3示出另一個示例,其中啟動配置代碼將第四組資源配置為在線程模式而不是事務(wù)模式進(jìn)行操作。這次,寄存器組20-3用于存儲與第四線程(線程3)相關(guān)聯(lián)的數(shù)據(jù),并且類似地,線程id值3標(biāo)記l1緩存12中屬于線程3的數(shù)據(jù)和加載/存儲隊列10中屬于線程3的操作。在該配置中,沒有事務(wù)可被設(shè)備處理。如果其中一個線程遇到事務(wù)開始指令,則這可能會觸發(fā)異常,因為事務(wù)無法處理,于是一些其他機(jī)制可被用來處理事務(wù)的操作。例如,鎖定機(jī)制可被用來向線程提供對一個或多個地址的獨占訪問,然后該線程可以使用鎖定的地址執(zhí)行一系列非推測性操作(在這種情況下,不需要資源在事務(wù)模式,因為沒有推測性執(zhí)行)。

圖4示出了由配置寄存器30存儲的數(shù)據(jù)的示例。對于那些資源組中的至少一些,配置寄存器可以具有模式定義數(shù)據(jù)100,該模式定義數(shù)據(jù)指示對應(yīng)資源組是處于線程模式還是事務(wù)模式。在該示例中,第一組資源0和第二組資源1不能被重新分配,并且總是用于處理不同的線程。然而,通過設(shè)置配置寄存器中相應(yīng)的模式定義數(shù)據(jù)100-2、100-3,第三組資源2和第四組資源3(包括寄存器組20-2、20-3和線程id2和3)可以在線程模式和事務(wù)模式之間切換。在圖2和圖3所示的靜態(tài)情況下,一旦在啟動時間配置數(shù)據(jù)100被設(shè)置,配置數(shù)據(jù)100就不能被更改,除非系統(tǒng)重新啟動。

也可以執(zhí)行動態(tài)模式切換,使得處理電路6在執(zhí)行應(yīng)用的操作期間,可以切換資源的模式。在這種情況下,配置寄存器30還可以包括指定模式切換延遲的數(shù)據(jù)102,該模式切換延遲指定在事務(wù)完成之后切換回線程模式之前資源應(yīng)該保留在事務(wù)模式中的時間長度。這將針對圖5更詳細(xì)地討論。

在圖5中,不同的資源組最初都處于線程模式,從而四個不同的線程0、1、2、3都得到支持,其中每個線程具有對應(yīng)的線程id,并且使用對應(yīng)的寄存器組20來存儲該線程的結(jié)果。

在圖5的步驟110中,線程2遇到開始指令,并請求使用資源來處理事務(wù)。此時,線程3可以從使用寄存器20-3和線程id3推出,以使資源可用于處理線程2的事務(wù)。因此,與線程3相關(guān)聯(lián)的寄存器20-3中的值可以被保存到存儲器系統(tǒng)12、14、16,并且配置寄存器30中的配置數(shù)據(jù)100-3可被改變?yōu)橹甘举Y源組3現(xiàn)在處于事務(wù)模式下。這可以以各種方式完成。例如,處理電路6中的一些模式切換電路可以檢測事務(wù)開始指令并相應(yīng)地重新配置資源組3。替代地,如果資源尚未處于事務(wù)模式,則事務(wù)開始指令可以觸發(fā)異常,并且響應(yīng)于該異常而執(zhí)行的異常處理程序可能觸發(fā)操作系統(tǒng)(與遇到事務(wù)開始指令的線程2或正退出以便進(jìn)行事務(wù)的線程3相關(guān)聯(lián))來執(zhí)行重新配置以切換該資源組的模式。

已經(jīng)切換了之前用于線程3的資源的模式,然后與線程2相關(guān)聯(lián)的寄存器狀態(tài)可被保存到現(xiàn)在處于事務(wù)模式的寄存器20-3中。從此時起,線程id值3指示與緩存12中的事務(wù)相關(guān)聯(lián)的推測性數(shù)據(jù)或加載/存儲隊列10中待執(zhí)行推測性操作。事務(wù)開始由線程2處理,這可能導(dǎo)致與線程2相關(guān)聯(lián)的寄存器組20-2中的數(shù)據(jù)被改變,并且可能導(dǎo)致加載/存儲操作推測性地更新l1緩存2中的數(shù)據(jù)。在這個例子中,沒有中止?fàn)顩r,但如果中止發(fā)生,則寄存器20-3中的數(shù)據(jù)被用于將狀態(tài)恢復(fù)到寄存器組20-2,并且線程id值3可用于標(biāo)識加載存儲隊列10中的哪些操作以及緩存12中的哪些數(shù)據(jù)要在事務(wù)中止時無效。

然而,在該特定示例中,不發(fā)生這種中止。在圖5的步驟120,遇到事務(wù)結(jié)束指令,此時事務(wù)的結(jié)果被提交。緩存中的線程id3更改為2,以指示此數(shù)據(jù)現(xiàn)在是與線程2相關(guān)聯(lián)的非推測性數(shù)據(jù)。處理電路6等待延遲時段期滿。延遲時段由配置寄存器30中的模式切換延遲參數(shù)102指定。該延遲可被指定為一定時間段、一定數(shù)量的周期或一定數(shù)量的要執(zhí)行的指令。如果在延遲時段結(jié)束之前,線程0、1、2之一遇到另一事務(wù)開始指令,那么資源組3將保持在事務(wù)模式中,然后新的事務(wù)被處理。例如,在圖5的步驟130,線程1遇到事務(wù)開始指令,這使得寄存器20-3用于保存與線程1相關(guān)聯(lián)的寄存器狀態(tài)。事務(wù)于是被處理,并且一旦事務(wù)在步驟140完成,則推測性結(jié)果以與先前事務(wù)相似的方式被提交。在步驟150,確定最后一個事務(wù)完成之后經(jīng)過了足夠的延遲,因此在此時處理電路6將資源組3切換回線程模式。這可以響應(yīng)于軟件異?;蚰J角袚Q電路來完成。在步驟110中先前被保存到存儲器的與線程3相關(guān)聯(lián)的狀態(tài)現(xiàn)在被恢復(fù)到寄存器20-3,使得這些寄存器返回到當(dāng)資源被切換到事務(wù)模式時它們所在的狀態(tài)。線程id3現(xiàn)在再次被用來指示與線程3相關(guān)聯(lián)的數(shù)據(jù)和操作。線程3現(xiàn)在可以繼續(xù)處理。

因此,通過實現(xiàn)完成處理事務(wù)以及將資源切換回線程模式之間的延遲,可以減少與將狀態(tài)保存到存儲器并在線程模式和事務(wù)模式之間切換時再次恢復(fù)的開銷,因為這允許多個事務(wù)將在保留在事務(wù)模式下連續(xù)處理。

使用這種方法,隨著更多的線程需要事務(wù),資源可以切換到事務(wù)模式,如果沒有事務(wù)需要,則可以通過將資源切換到線程模式來執(zhí)行更多的線程。例如,如果線程0和1都需要事務(wù),則資源組2和資源組3都可以用在事務(wù)模式中。

圖6示出了處理數(shù)據(jù)的方法。在步驟200,第一線程使用第一處理資源(諸如緩存12或加載存儲隊列10中的對應(yīng)的線程標(biāo)識符22的值和對應(yīng)的寄存器組20)來處理。在步驟202,確定第二處理資源是否處于線程模式。如果是,則在步驟204第二處理資源可用來處理第二線程。如果第二處理資源不處于線程模式,則在步驟206,第二處理資源可用來處理第一線程的事務(wù)。

總之,事務(wù)可以在事務(wù)開始時獲取完整的寄存器快照,并且還可以使用每個緩存行的附加位來執(zhí)行數(shù)據(jù)版本控制和事務(wù)性沖突檢測。建議重復(fù)使用這些資源以在運行事務(wù)和運行多個硬件(hw)線程之間切換核心。

事務(wù)性存儲背景

事務(wù)性存儲器(tm)是一種通過開始和結(jié)束標(biāo)記指令(通常稱為推測/提交或txbegin/txend)將在cpu上執(zhí)行的指令分組為事務(wù)的機(jī)制。開始指令向處理器通告事務(wù)即將開始,因此以下指令將成為事務(wù)的一部分。結(jié)束指令指示事務(wù)即將結(jié)束,并且以下指令不再是事務(wù)的一部分。有很多關(guān)于tm的學(xué)術(shù)和行業(yè)建議。

被分組為事務(wù)的指令如前所述流經(jīng)微處理器的流水線,但在事務(wù)開始時,進(jìn)行寄存器和存儲器狀態(tài)的快照。寄存器和存儲器狀態(tài)的快照允許在檢測到中止原因時將事務(wù)回滾到初始狀態(tài)??煺瞻拇嫫魑募煺蘸陀糜诔废谑聞?wù)期間對存儲器進(jìn)行的修改的機(jī)制。如果事務(wù)運行結(jié)束指令,它不能再中止,并且快照被丟棄并且事務(wù)提交。

中止原因可能會有所不同,但最重要的是在一個事務(wù)中訪問的數(shù)據(jù)與其他存儲器訪問之間的數(shù)據(jù)沖突。通常,目的是不允許對事務(wù)中訪問的存儲器進(jìn)行任何并發(fā)寫入,以及不允許從正在進(jìn)行的事務(wù)中修改的數(shù)據(jù)并發(fā)讀取。如果事務(wù)執(zhí)行此沖突檢測并在沖突時中止,則此事務(wù)將與其他觀察者隔離/原子地執(zhí)行。優(yōu)點是這些事務(wù)可以在同步重要的多線程應(yīng)用中使用。由于動態(tài)性質(zhì),兩個事務(wù)如果它們不相互沖突,則可以同時執(zhí)行(避免系列鎖瓶頸)。在大多數(shù)情況下,預(yù)期實際的數(shù)據(jù)沖突是罕見的,因此事務(wù)性存儲器可以解鎖多線程應(yīng)用的額外性能。

事務(wù)寄存器狀態(tài)存儲

如果事務(wù)開始,它將創(chuàng)建當(dāng)前寄存器狀態(tài)的檢查點,因為如果事務(wù)中止,則需要將所有修改都回滾到寄存器狀態(tài)。建議提供額外的架構(gòu)寄存器文件(或原始大小的兩倍的寄存器中的一半),并在沒有任何事務(wù)在使用的情況下使用它在cpu上運行額外的線程。

事務(wù)沖突檢測/版本控制

類似地,事務(wù)性數(shù)據(jù)版本控制和沖突檢測需要緩存/加載存儲隊列中的附加位,這可能維護(hù)成本較高。建議能夠賦予在位的位以新的用途,以跟蹤緩存行的每hw線程狀態(tài)和lsq條目,并使用它們來跟蹤所需的tm屬性。相信這些位已經(jīng)被硬連接到正確的決策單元中。

靜態(tài)重新配置

在簡單的靜態(tài)重新配置場景中,啟動系統(tǒng)軟件可以通過以并發(fā)運行的線程的數(shù)量換取并發(fā)運行的事務(wù)的數(shù)量來切換cpu的模式。例如,四路線程cpu可以被配置為同時運行三個線程,并同時允許使用單個在運行的(in-filight)事務(wù)。對于寄存器文件,這意味著四倍體架構(gòu)寄存器文件中只有三個副本用于線程,第四個將在事務(wù)開始時保持寄存器狀態(tài)。在事務(wù)中止的情況下,核心將復(fù)制/切換到該寄存器文件,并恢復(fù)從事務(wù)的開始/中止處理程序運行。

動態(tài)重新配置

如果應(yīng)用混合了更改則靜態(tài)配置cpu可能太粗糙,并在os中通過cpu離線來進(jìn)行重新啟動/昂貴的重新配置是不適當(dāng)?shù)?。另一種選擇是通過“退出”硬件線程以釋放其資源到htm來允許動態(tài)重新配置。

這可以通過在核心上的其他線程想要使用htm資源的情況下,在已移除的線程上向操作系統(tǒng)(os)發(fā)送異常來實現(xiàn)。異常將使os通過上下文保存處理程序?qū)⒕€程上下文存儲在存儲器中,然后臨時從調(diào)度程序中刪除硬件線程(虛擬內(nèi)核)。從cpu向os的通知機(jī)制將告訴操作系統(tǒng)另一個hw線程的資源何時再次可用,即htm事務(wù)完成后。存在一個單獨的寄存器,其中保存了在發(fā)送通知之前需要完成的多個非事務(wù)指令,使得頻繁的事務(wù)可以執(zhí)行,而不會針對每個事務(wù)掛起/恢復(fù)其他線程上下文。

更快的選擇是向cpu提供專用的存儲器存儲,以便它可以在需要事務(wù)性存儲器時直接將線程掛起執(zhí)行到專用存儲器區(qū)域。線程掛起將以比實際的事務(wù)提交/中止更粗糙的粒度發(fā)生,所以它是有區(qū)別的,是脫機(jī)的hw線程的上下文是被存儲在該存儲器中(在htm與smt階段改變時),還是事務(wù)寄存器快照被存儲在該存儲器區(qū)域(針對每個事務(wù))。這樣一來,操作系統(tǒng)只需要為記帳目的才被通知,并且其線程保存代碼路徑不在事務(wù)開始的關(guān)鍵路徑上。

最后,第三個選擇是在沒有htm資源可用時使事務(wù)啟動操作失敗并且應(yīng)用調(diào)用到重新配置處理程序中,如下所示:

擴(kuò)展

該方案可以允許4路線程cpu僅使用三個hw線程運行,并允許單個事務(wù)執(zhí)行,或者替代地可以縮小到兩個hw線程,兩者可同時執(zhí)行事務(wù)。

在本申請中,詞語“配置為...”用于表示裝置的元件具有能夠執(zhí)行定義的操作的配置。在這種情況下,“配置”是指硬件或軟件的互連的布置或方式。例如,設(shè)備可以具有提供定義的操作的專用硬件,或者可以對處理器或其他處理設(shè)備進(jìn)行編程以執(zhí)行功能。“配置為”并不意味著設(shè)備元素需要以任何方式進(jìn)行更改才能提供定義的操作。

盡管本文參考附圖已經(jīng)詳細(xì)描述了本發(fā)明的說明性實施例,但是應(yīng)當(dāng)理解,本發(fā)明不限于這些精確實施例,并且在不脫離由所附權(quán)利要求限定的本發(fā)明的范圍和精神的情況下,可以由本領(lǐng)域技術(shù)人員在其中實現(xiàn)各種改變、添加和修改。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
长葛市| 翼城县| 桓台县| 理塘县| 纳雍县| 云南省| 乌鲁木齐县| 桂阳县| 安平县| 法库县| 桦甸市| 驻马店市| 工布江达县| 焦作市| 饶阳县| 逊克县| 易门县| 准格尔旗| 乐山市| 杭州市| 渑池县| 北宁市| 和林格尔县| 上杭县| 南城县| 太和县| 丹江口市| 西乡县| 铜梁县| 湘潭县| 渭南市| 黔南| 桓台县| 都江堰市| 马关县| 武功县| 綦江县| 黑龙江省| 苗栗县| 垫江县| 安泽县|