專利名稱:用于事務(wù)存儲器的最后分支記錄指示符的制作方法
用于事務(wù)存儲器的最后分支記錄指示符背景技術(shù)
隨著技術(shù)的進步,計算機系統(tǒng)以多處理器系統(tǒng)的形式包括更大數(shù)量的處理器,例如,通過可同時執(zhí)行多個線程的一個或多個多核處理器。一般而言,在線程訪問共享資源之前,線程可能獲得共享資源上的鎖。在共享資源為存儲在存儲器中的數(shù)據(jù)結(jié)構(gòu)的情況下,試圖訪問相同資源的所有線程可根據(jù)閉鎖機制提供的互斥性來串行化其操作的執(zhí)行。例如,由于死鎖或其他不想要的行為,這可能不利于系統(tǒng)性能并且可能導(dǎo)致程序失敗。
系統(tǒng)中日益增加的核和邏輯處理器的數(shù)量使得更多軟件線程能夠被執(zhí)行。然而,可能同時執(zhí)行的軟件線程的數(shù)量的增加已造成與同步軟件線程之間共享的數(shù)據(jù)有關(guān)的問題。用于訪問多核或多邏輯處理器系統(tǒng)中的共享數(shù)據(jù)的一個常見的解決方案是使用鎖來保證對共享數(shù)據(jù)的多個訪問之間的互斥。然而,日益增加的執(zhí)行多個軟件線程的能力可能造成假競爭和執(zhí)行串行化。
為了降低閉鎖機制的使用造成的性能損失,一些計算機系統(tǒng)可使用事務(wù)存儲器(TM)。事務(wù)存儲器通常指的是在不使用閉鎖機制的情況下允許多個線程同時訪問共享資源的同步模型。
通常事務(wù)執(zhí)行可包括推測地執(zhí)行微操作、操作或指令的組。目前的TM系統(tǒng)包括其中處理器硬件被用于執(zhí)行事務(wù)的硬件TM系統(tǒng)、其中事務(wù)是用軟件實現(xiàn)的軟件TM系統(tǒng)、以及其中硬件和軟件都可用于執(zhí)行事務(wù)的混合TM系統(tǒng)。通常地,硬件TM系統(tǒng)可能最有效,但是如果事務(wù)變得太大,例如溢出硬件存儲器,那么該事務(wù)通常被重啟。這里,用于執(zhí)行該事務(wù)直到溢出所花費的時間可能被浪費。
處理器包括各種硬件并且還可提供用于測試、調(diào)試或其他操作的硬件。例如,在處理器中可提供各種寄存器,以用于執(zhí)行處理器檢查點設(shè)定、異常報告、分支記錄等等。然而,此類性能監(jiān)測硬件一般不用于事務(wù)存儲器的環(huán)境。
附圖簡沭
圖1是根據(jù)本發(fā)明的實施例的最后分支寄存器對的框圖。
圖2是根據(jù)本發(fā)明的一個實施例的處理器核的框圖。
圖3是根據(jù)本發(fā)明的另一實施例的處理器核的框圖。
圖4是根據(jù)本發(fā)明的一個實施例的用于產(chǎn)生分支記錄的方法的流程圖。
圖5是根據(jù)本發(fā)明的實施例的用于使用分支記錄的方法的流程圖。
圖6是根據(jù)本發(fā)明的實施例的系統(tǒng)的框圖。
詳細描沭
在各個實施例中,在執(zhí)行程序期間獲得的分支信息可被記錄并然后用于概況分析、調(diào)試和/或優(yōu)化事務(wù)存儲器事務(wù)。以這種方式,可實現(xiàn)改良的事務(wù)存儲器操作和代碼。在各個實施例中,包括在此類寄存器中的信息可包括最后分支信息,在最后分支信息中可記錄在程序執(zhí)行期間被采用的分支有關(guān)的信息。除此類分支的識別之外,還可記錄有關(guān)事務(wù)存儲器的待決事務(wù)的執(zhí)行的信息。使用該信息,可實現(xiàn)事務(wù)存儲器事務(wù)的調(diào)試和其他操作。
事務(wù)執(zhí)行通常包括將多個指令或操作分為事務(wù)、原子段(atomic section)或代碼的關(guān)鍵段。在某些情況下,術(shù)語指令指的是宏指令,該宏指令由多個操作組成,而在其他情況下,指令可指較小的操作,例如,微操作(UOP)。通常有兩種方法來識別事務(wù)。第一示例包括用軟件來界定事務(wù)。這里,某些軟件界定被包括在代碼中以標(biāo)識事務(wù)。在另一實施例中,這可結(jié)合上述軟件界定來實現(xiàn),事務(wù)通過硬件被分組或通過指示事務(wù)開始和事務(wù)結(jié)束的指令被識別。
在處理器中,可推測地或非推測地執(zhí)行事務(wù)。在第二種情況中,指令的分組通過對將被訪問的存儲器位置的某種形式的鎖或有保證的有效訪問來執(zhí)行。替代地,事務(wù)的推測執(zhí)行更普遍,其中,事務(wù)被推測地執(zhí)行并且事務(wù)一結(jié)束就被提交。此處提及的事務(wù)的待決指的是已經(jīng)開始執(zhí)行但還未提交或中止(即,待決)的事務(wù)。
通常,在事務(wù)的推測執(zhí)行期間,對存儲器的更新不全局可見直到事務(wù)被提交。當(dāng)事務(wù)仍然待決時,跟蹤從存儲器加載和寫入的位置。一旦成功驗證那些存儲器位置,就提交事務(wù)并且使在事務(wù)期間進行的更新全局可見。然而,如果事務(wù)在其待決期間被無效,則重新啟動事務(wù)且不使更新全局可見。
在各個實施例中,在處理器中可提供最后分支記錄設(shè)施。此種設(shè)施可將分支記錄存儲在一組寄存器中,在一個實施例中,該寄存器可以是機器或模塊專用的寄存器(MSR)0例如,處理器可包括用于存儲與最近被采用的分支有關(guān)的信息的MSR的最后分支記錄(LBR)堆棧。分支記錄包括一對寄存器,其中的一個寄存器用于存儲來自分支(branch-from)的指令地址和去往分支(branch_to)的指令地址,在一個實施例中,這些指令地址可以是線性地址。在一些實現(xiàn)中,寄存器可被自動讀取,而在其他實施例中,控制信號可使得堆棧將分支記錄作為分支跟蹤消息(BTM)發(fā)送給經(jīng)選擇的目的位置。
注意,可控制以啟用或禁用LBR寄存器的操作。例如,LBR標(biāo)記可存在于調(diào)試控制MSR中,以使處理器能自動地記錄被采用的分支的分支記錄。注意,在一些實施例中,除LBR之外,有關(guān)中斷和異常的信息也可被記錄在LBR寄存器中,不過在其他實施例中,對于這樣的情況可提供單獨的記錄設(shè)施。
在一個實施例中,調(diào)試器可使用LBR堆棧中的地址以實現(xiàn)從特定漏洞的顯示向其源的反向跟蹤。
注意,在LBR堆棧中的MSR的數(shù)量在不同實施例中可以不同。例如,在不同實現(xiàn)中,LBR堆棧的尺寸可以為4、8或16,雖然本發(fā)明的范圍不限于此。如上所述,最后分支記錄機制不僅可跟蹤分支指令(如跳轉(zhuǎn)、循環(huán)和調(diào)用指令),而且可跟蹤造成指令指針變化的其他操作(如外部中斷、陷阱和故障)。
現(xiàn)在參照圖1,圖1示出了根據(jù)本發(fā)明的實施例的LBR寄存器對的框圖。如圖1中所示,寄存器對10可包括兩個MSR,即第一 MSR12和第二 MSR14。如所示的,MSR12可存儲源地址。也就是說,該寄存器可存儲最近分支的源地址,即,分支發(fā)生處的“來自(from)”地址。反過來,寄存器14可存儲目的地址,S卩,控制通過分支傳遞到的“去往(to)”地址。除存儲指令指針地址的地址字段15之外,這些寄存器中可存在附加字段。具體而言,在圖1的實施例中,事務(wù)指示符16和中止指示符17可與每個寄存器相關(guān)聯(lián)。更具體地,當(dāng)對應(yīng)的分支在事務(wù)的執(zhí)行期間發(fā)生時,可設(shè)置事務(wù)指示符16。反過來,針對在事務(wù)被中止后發(fā)生的第一分支,可設(shè)置中止指示符17。更精確地,中止產(chǎn)生向中止處理程序的跳轉(zhuǎn)。然后,該跳轉(zhuǎn)被記錄在LBR中,伴隨著中止指示符被設(shè)置。該中止指示符被用于將該分支與其他分支區(qū)分開。以下將討論有關(guān)中止事件的信息的存儲的進一步細節(jié)。以這種方式,可記錄與其中發(fā)生分支的事務(wù)的執(zhí)行有關(guān)的信息。如以下將進一步討論的,利用該信息可獲得對事務(wù)的執(zhí)行的更好的理解,從而(例如,通過優(yōu)化等等)潛在地改善執(zhí)行。
如上所述,除用于分支信息的寄存器對之外,可記錄與中止事件有關(guān)的信息。具體而言,如圖1中所示,附加的寄存器對20可包括與使得待決事務(wù)發(fā)生中止的指令的信息。具體地,寄存器22可存儲使得事務(wù)中止的指令的指令指針。寄存器對的第二寄存器(即寄存器24)可存儲目的地址,該目的地址可以是對應(yīng)于能實現(xiàn)從中止恢復(fù)的代碼、邏輯等的中止處理程序的地址。雖然在圖1的實施例中僅示出具有這兩個寄存器對,但可以理解,LBR堆??砂ǜ嗟募拇嫫鲗Α4送?,包括在LBR中的結(jié)構(gòu)、排列和信息在不同的實施例中可不同。例如,在一些實施例中,LBR存儲可被實現(xiàn)為圓形陣列。
注意,LBR寄存器中可存在附加的信息。例如,在一些實施例中,當(dāng)設(shè)置指示被采用的分支被正確預(yù)測時,可提供預(yù)測指示符。否則,該指示符被清除以指示該分支被錯誤預(yù)測。當(dāng)然,在這些寄存器中還可提供附加的指示符和其他信息。
在一些實施例中,最后分支記錄棧頂(TOS)指針可存儲指向LBR堆棧中的MSR的指針,LBR堆棧包含所記錄的最近的分支、中斷或異常。
如以下將描述的,在一些實施例中,調(diào)試存儲(DS)機制可將BTM存儲在分支跟蹤存儲(BTS)中,分支跟蹤存儲(BTS)可以是存儲器層次結(jié)構(gòu)的給定部分的一部分,例如,硬件緩沖器、高速緩存或系統(tǒng)存儲器。在一個實施例中,當(dāng)調(diào)試控制MSR中的BTS標(biāo)記被設(shè)置時,每當(dāng)檢測到被采用的分支、中斷或異常,就將分支記錄存儲在DS保存區(qū)域的BTS緩沖器中。
在某些實施例中,最后分支記錄的過濾可經(jīng)由LBR選擇寄存器來實現(xiàn),LBR選擇寄存器可提供字段以指定LBR中將不被捕獲的分支的子集的條件。例如,該寄存器可包括用于過濾在預(yù)確定的特權(quán)級別中發(fā)生的分支等的字段。
因此,在一個實施例中,每個分支記錄包括兩個線性地址,這兩個線性地址表示分支、中斷或異常的“來自”和“去往”指令指針。來自和去往地址的內(nèi)容根據(jù)分支的源可不同。在記錄是用于被采用的分支的情況下,“來自”地址是分支指令的地址而“去往”地址是分支的目標(biāo)指令。在記錄是用于中斷的情況下,“來自”地址是保存用于中斷的返回指令指針(RIP)而“去往”地址是中斷處理例程中的第一指令的地址。RIP是從中斷處理程序返回就將被執(zhí)行的下一個指令的線性地址。在該記錄是用于異常的情況下,“來自”地址是使得異常將被產(chǎn)生的指令的線性地址而“去往”地址是異常處理例程中的第一指令的地址。
現(xiàn)在參照圖2,圖2示出了根據(jù)本發(fā)明一個實施例的處理器核的框圖。如圖2所示,處理核100可以是多級流水線類型的無序處理器。處理器核100在圖2中通過相對簡化的視圖示出以例示與根據(jù)本發(fā)明的實施例的分支記錄報告結(jié)合使用的各個特征。而且,應(yīng)當(dāng)理解,如上所述,處理器可為TM事務(wù)提供或不提供硬件支持。為了便于說明,假設(shè)核100包括此類硬件支持。然而,在一些實施例中,甚至在不存在此類硬件支持的情況下,可能發(fā)生使用存儲在LBR中的事務(wù)狀態(tài)信息來分析事務(wù)執(zhí)行。以這種方式,可獲得對事務(wù)期間發(fā)生什么分支、分支是否造成事務(wù)中止等等的理解。然后,利用該信息可進行調(diào)試、優(yōu)化、概況分析或其它行動。
如圖2所示,核100包括前端單元110,前端單元110可用于取得將被執(zhí)行的指令并將這些指令準(zhǔn)備好以供以后在處理器中使用。例如,前端單元110可包括取單元101、指令高速緩存103和指令解碼器105。在某些實現(xiàn)中,前端單元110可進一步包括跟蹤高速緩存、微碼存儲以及微操作存儲。取單元101可(例如,從存儲器或指令高速緩存103)取得宏指令并將它們饋送至指令解碼器105以將它們解碼為源語,即用于通過處理器執(zhí)行的微操作。
前端單元110和執(zhí)行單元120之間耦合有指令分派器115,指令分派器可實現(xiàn)為無序?qū)崿F(xiàn)中的無序邏輯以接收微指令并將它們準(zhǔn)備好以供執(zhí)行。更具體地,指令分派器115可包括多個緩沖器,多個緩沖器用于分配執(zhí)行所需的多個資源,以及提供多個寄存器文件(例如,寄存器文件130和擴展寄存器文件135)中的存儲位置上的邏輯寄存器的重命名。寄存器文件130可包括用于整數(shù)和浮點操作的單獨的寄存器文件。擴展寄存器文件135可提供向量尺寸單元的存儲,例如,每寄存器256或512位。
如圖2進一步所示,處理器100可包括一組MSR125。如上所述,在此類寄存器中可存儲各種類型的模型專用信息。在圖2的實施例中,示出了一組LBR128,LBR128如上所述可存儲與在代碼的執(zhí)行期間被采用的分支有關(guān)的信息。這些或類似寄存器可進一步包括與其他執(zhí)行事件(例如,中斷、陷阱、異常等等)有關(guān)的信息。
在執(zhí)行單元120中可存在多種資源,包括例如多種整數(shù)、浮點和單指令多數(shù)據(jù)(SIMD)邏輯單元等其它專門硬件。例如,此類執(zhí)行單元可包括一個或多個算術(shù)邏輯單元(ALU)122。此外,執(zhí)行單元可進一步包括性能監(jiān)測單元(PMU)124。在多個實施例中,PMU124可用于控制多種信息的獲得,例如,概況分析計數(shù)器、MSR中的信息等等。在這里的特定實現(xiàn)中,PMU124或其他此類邏輯可用于控制包括與LBR128中的事務(wù)執(zhí)行有關(guān)的信息的信息記錄,以及用于進一步獲得此類信息以供進一步使用。結(jié)果可被提供至隱退邏輯,即重排序緩沖器(ROB) 140。更具體地,R0B140可包括多種陣列和邏輯以接收與被執(zhí)行的指令相關(guān)聯(lián)的信息。然后,通過R0B140檢查該信息以確定指令是否可以有效隱退和結(jié)果數(shù)據(jù)是否提交至處理器的架構(gòu)狀態(tài),或阻止指令的正常隱退的一個或多個異常是否發(fā)生。當(dāng)然,R0B140可處理與隱退相關(guān)聯(lián)的其他操作。
如圖2所示,R0B140耦合至高速緩存150,在一個實施例中,高速緩存150可以是低級高速緩存(例如,LI高速緩存),盡管本發(fā)明的范圍不限于此。如所看到的,在一個實施例中高速緩存150可包括分支跟蹤緩沖器152,分支跟蹤緩沖器152可存儲(例如,從LBR128接收)分支信息。例如,PMU124可控制分支目標(biāo)消息從LBR128到分支跟蹤緩沖器152的創(chuàng)建和發(fā)送。可從這里(例如經(jīng)由概況分析器優(yōu)化器等等)訪問信息以能夠根據(jù)本發(fā)明的實施例分析與事務(wù)執(zhí)行有關(guān)的信息。而且,執(zhí)行單元120可直接耦合至高速緩存150。雖然在圖2的實施例中用高級框圖示出,但應(yīng)理解本發(fā)明的范圍不限于此方面。
圖3是根據(jù)本發(fā)明的實施例的可在硬件中執(zhí)行事務(wù)存儲器訪問請求的處理器核的框圖。使用核(例如,核206),可利用從核的硬件獲得的信息來設(shè)置LBR的事務(wù)狀態(tài)指示符。如圖3所示,處理器核206可包括取單元202以取得指令以供核206執(zhí)行。核206還可包括用于解碼所取得的指令的解碼單元204。例如,解碼單元204可將所取得的指令解碼為多個微操作(UOP)。
此外,核206可包括調(diào)度單元207。調(diào)度單元207可執(zhí)行與存儲(例如,從解碼單元204接收的)經(jīng)解碼的指令相關(guān)聯(lián)的多種操作直到指令準(zhǔn)備好以供分派,例如,直到經(jīng)解碼的指令的所有源值都變得可用。在一個實施例中,調(diào)度單元207可將經(jīng)解碼的指令調(diào)度和/或發(fā)布(或分派)至一個或多個執(zhí)行單元208以供執(zhí)行。執(zhí)行單元208可包括存儲器執(zhí)行單元、整數(shù)執(zhí)行單元、浮點執(zhí)行單元或其他執(zhí)行單元。隱退單元210在經(jīng)執(zhí)行的指令被提交后可使經(jīng)執(zhí)行的指令隱退。在一個實施例中,經(jīng)執(zhí)行的指令的隱退可使得處理器狀態(tài)因指令的執(zhí)行被提交、指令所使用的物理寄存器被解除分配等。存儲器排序緩沖器(MOB) 218可包括加載緩沖器、存儲緩沖器和用于存儲還未加載或?qū)懟氐街鞔鎯ζ鞯拇龥Q存儲器操作的邏輯。在多個實施例中,核可包括本地高速緩存,例如,可包括一個或多個高速緩存行224 (例如高速緩存行O到W,并且由高速緩存邏輯239管理))的私有高速緩存(例如,高速緩存216)。在一個實施例中,高速緩存216的每個行可包括用于在核206上執(zhí)行的每個線程的事務(wù)讀取位226和/或事務(wù)寫入位228。位226和228可被設(shè)置或清除以指示(加載和/或存儲)通過事務(wù)存儲器訪問請求對相應(yīng)的高速緩存行的訪問。注意,雖然在圖3的實施例中,每個高速緩存行224示出為具有各自的位226和228,但其他配置也是可能的。例如,事務(wù)讀取位226(或事務(wù)寫入位228)可與高速緩存216的選擇部分(例如,高速緩存216的高速緩存塊或其他部分)對應(yīng)。而且,位226和/或228可存儲在除高速緩存216之外的位置。因此,在此類硬件中的信息可被用于設(shè)置LBR的多個指示符。為了有助于執(zhí)行TM操作,核206可包括事務(wù)深度計數(shù)器230,事務(wù)深度計數(shù)器230用于存儲對應(yīng)于還未提交的事務(wù)存儲器訪問請求的數(shù)量的值。例如,存儲在計數(shù)器230中的值可指示對應(yīng)于相同線程的多個事務(wù)存儲器訪問請求的嵌套深度。在一個實例中,當(dāng)在待決事務(wù)內(nèi)(例如,通過庫調(diào)用或其他嵌套程序)發(fā)起一個事務(wù)時,可產(chǎn)生多個事務(wù)存儲器訪問請求。計數(shù)器230可被實現(xiàn)為任何類型的存儲設(shè)備(例如,硬件寄存器)或存儲在存儲器中的變量(例如,系統(tǒng)存儲器或高速緩存216)。核206還可包括用于更新存儲在計數(shù)器230中的值的事務(wù)深度計數(shù)器邏輯232。核206可包括用于對核206的多個組件的狀態(tài)進行檢查點設(shè)定(或存儲)的事務(wù)檢查點邏輯234,和用于(例如,在給定事務(wù)中止時)恢復(fù)核206的多個組件的狀態(tài)的事務(wù)恢復(fù)邏輯236。此外,核206可包括對應(yīng)于多個事務(wù)存儲器訪問請求的一個或多個附加的寄存器240,例如,事務(wù)狀態(tài)和控制寄存器(TXSR)、事務(wù)指令指針(TXIP)(例如,可以為指向開始(或緊鄰的前一個)對應(yīng)的事務(wù)的指令的指令指針)、和/或事務(wù)堆棧指針(TXSP)(例如,可以為指向存儲核206的一個或多個組件的多個狀態(tài)的堆棧的頭部的堆棧指針)。而且,為了能夠捕獲分支的事務(wù)信息,還可存在MSR250,MSR250可存儲除分支信息之外的事務(wù)狀態(tài)信息,例如,事務(wù)存在指示符和事務(wù)中止指示符?,F(xiàn)在參照圖4,圖4示出了根據(jù)本發(fā)明一個實施例的方法的流程圖。在圖4的實施例中,方法300可用于將信息填入根據(jù)本發(fā)明的一個實施例的LBR記錄寄存器。例如,方法300可利用處理器邏輯(例如,PMU的邏輯等等)實現(xiàn)。如所見,方法300開始于確定在程序執(zhí)行期間是否發(fā)生中止(菱形310)。通過分析事務(wù)中內(nèi)部狀態(tài)(in-transaction internalstate)可發(fā)生中止的該確定,當(dāng)事務(wù)傳遞事務(wù)結(jié)束標(biāo)記(可以為指令)時或當(dāng)事務(wù)中止時,事務(wù)中內(nèi)部狀態(tài)被設(shè)置為假。注意,中止不是狀態(tài),而是產(chǎn)生從當(dāng)前執(zhí)行流到中止處理程序位置的跳轉(zhuǎn)的事件。如果在菱形310處確定中止已經(jīng)發(fā)生,則控制進行到框320,其中可分配下一個LBR條目。如上所討論,可能有不同類型的分支記錄條目。例如,單個寄存器可包括僅目的信息,寄存器對可存儲源和目的信息,等等。因此,在一些實施例中,多個分支地址可添加至該條目。具體地,可存儲源和目的地址(注意,這里的目的地址可以是中止處理程序的目的地址)。此外,如框330處所示,還可設(shè)置該條目的事務(wù)和中止指示符,因此指示已發(fā)生待決事務(wù)的中止??刂平又M行到框340,其中可采取下一個被執(zhí)行的指令。如所見,這使得方法300關(guān)于如上所述的中止的確定而重新開始。這次相反,假設(shè)在菱形310處確定中止沒有發(fā)生,控制替代地進行到菱形350,其中可確定是否已產(chǎn)生分支。如上所述,這樣的分支可能針對給定指令類型(例如,跳轉(zhuǎn)、調(diào)用,等等)發(fā)生。如果沒有產(chǎn)生分支,該方法關(guān)于該指令結(jié)束并且控制進行到框340到下一個執(zhí)行的指令。仍舊參照圖4,如果替代地確定給定指令為分支指令,則可存儲多種信息。具體如圖4所示,在框360處,可分配下一個LBR條目并且可將分支地址信息存儲在該條目中。接著,可確定在事務(wù)期間是否發(fā)生分支(菱形370)。例如,在一個實施例中,當(dāng)表示事務(wù)開始的指令被執(zhí)行時,內(nèi)部處理器狀態(tài)“事務(wù)中(in-transaction)”可被設(shè)置為真。如果不是,如上所討論的控制進行到框340 (還應(yīng)理解,這里的事務(wù)和中止指示符都可被清除)。如果相反在菱形370確定在事務(wù)的執(zhí)行期間已發(fā)生分支,則控制前進至框380,其中可設(shè)置LBR條目的事務(wù)指示符以指示在事務(wù)執(zhí)行期間發(fā)生分支。如上所討論的,然后控制進行到框340。雖然在圖4的實施例中通過該特定實現(xiàn)示出,但應(yīng)理解本發(fā)明的范圍在此方面不受限制?,F(xiàn)參照圖5,圖5是示出根據(jù)本發(fā)明的實施例的用于使用分支記錄的方法的流程圖。如圖5所示,方法400可通過多種邏輯(例如,調(diào)試器、分析器、優(yōu)化器等等)實現(xiàn)。方法400可開始于將最后分支記錄存儲到分支跟蹤緩沖器中(框410)。例如,在給定實現(xiàn)中,可存在有限數(shù)量的MSR對以存儲最后分支記錄。因此,當(dāng)這些MSR對已被填充時,響應(yīng)于控制寄存器的控制位等等,邏輯(例如,PMU或?qū)S肔BR邏輯)可產(chǎn)生BTM以將該信息發(fā)送至緩沖器。然后,可從緩沖器獲得這些記錄(框420)。例如,優(yōu)化器或其他此類邏輯可獲得這些記錄。仍參照圖5,基于記錄中的信息,在一個或多個事務(wù)的上下文中發(fā)生的分支可基于事務(wù)指示符來標(biāo)識。例如,假設(shè)第一條目具有被清除的事務(wù)指示符并且下面的條目具有被設(shè)置的事務(wù)指示符,這意味著該第二條目為事務(wù)區(qū)域內(nèi)的第一分支。相反,假設(shè)第一條目具有被設(shè)置的事務(wù)指示符且第二條目具有被清除的事務(wù)指示符,這意味著第一條目為事務(wù)區(qū)域內(nèi)的最后分支。再假設(shè),被分析的一組記錄的所有條目具有被清除的事務(wù)指示符,這表明在事務(wù)執(zhí)行期間沒有分支發(fā)生,而相反如果所有此類事務(wù)指示符都被設(shè)置,這表明所有分支發(fā)生在TM事務(wù)的上下文中。仍參照圖5,接下來在框440,可標(biāo)識被標(biāo)識為中止事務(wù)區(qū)域的一部分的任何分支。具體地,基于事務(wù)指示符和中止指示符的組合,可確定這樣的信息。具體地,其中止指示符被設(shè)置的第一條目指示中止發(fā)生在LBR條目之前。因此,根據(jù)該信息,可產(chǎn)生分支回溯。例如,該信息可用于優(yōu)化代碼(框450)。假設(shè)代碼段包括導(dǎo)致事務(wù)中止的分支,則優(yōu)化器可使該代碼被修改以使得該分支不被采用或修改該分支以避免在該代碼段的未來執(zhí)行中的事務(wù)中止。當(dāng)然,該事務(wù)狀態(tài) 目息的其他用途也是可能的,例如,理解事務(wù)是否在調(diào)試工具內(nèi)被中止以及在哪個指令處中止。由于事務(wù)的本質(zhì),在中止時,沒有架構(gòu)可見狀態(tài)被暴露到外部世界。該事務(wù)信息允許流向中止位置的其他方面的不可見的和未知的程序流的重建。因此,實施例使得能夠使用存儲在LBR寄存器中的將被用于產(chǎn)生執(zhí)行回溯跟蹤的信息。該執(zhí)行回溯跟蹤可在線和離線使用。例如,執(zhí)行回溯跟蹤可由調(diào)試工具使用以允許檢查TM事務(wù)內(nèi)的代碼流?;蛘唠x線分析工具可使用執(zhí)行回溯跟蹤以允許事后代碼流檢查。雖然在圖5的實施例中示出具有該特定實現(xiàn),但應(yīng)理解本發(fā)明的范圍不限于此方面。實施例可在許多不同的系統(tǒng)類型中實現(xiàn)?,F(xiàn)在參照圖6,其中示出了根據(jù)本發(fā)明的實施例的系統(tǒng)的框圖。如圖6所示,多處理器系統(tǒng)500是點對點互連系統(tǒng),且包括經(jīng)由點對點互連550耦合的第一處理器570和第二處理器580。如圖6所示,處理器570和580中的每一個可以是包括第一和第二處理器核(即處理器核574a和574b以及處理器核584a和584b)的多核處理器 ,盡管這些處理器中可能存在更多核。此類核可包括根據(jù)本發(fā)明的實施例的LBR寄存器以使得能夠分析在TM事務(wù)中發(fā)生的分支。仍參照圖6,第一處理器570還包括存儲器控制器中樞(MCH) 572和點對點(P_P)接口 576和578。類似地,第二處理器580包括MCH582與P-P接口 586和588。如圖6所示,MCH572和582將處理器耦合至相應(yīng)的存儲器,即存儲器532和存儲器534,它們可以是本地附連至相應(yīng)處理器的主存儲器(例如動態(tài)隨機存取存儲器(DRAM))的多個部分。第一處理器570和第二處理器580可分別經(jīng)由P-P互連552和554耦合至芯片組590。如圖6中所示,芯片組590包括P-P接口 594和598。此外,芯片組590包括通過P-P互連539將芯片組590與高性能圖形引擎538耦合的接口 592。芯片組590又經(jīng)由接口 596耦合至第一總線516。如圖6所示,多個輸入/輸出(I/O)設(shè)備514以及總線橋518可f禹合至第一總線516,該總線橋518將第一總線516耦合至第二總線520。多個設(shè)備可耦合至第二總線520,包括例如鍵盤/鼠標(biāo)522、通信設(shè)備526以及數(shù)據(jù)存儲單元528 (諸如盤驅(qū)動器或其它大容量存儲設(shè)備,在一個實施例中其可包括代碼530)。此外,音頻1/0524可耦合至第二總線520。實施例可以代碼的形式實現(xiàn),而且可存儲在其上存儲有可用于對系統(tǒng)編程以執(zhí)行這些指令的存儲介質(zhì)上。該存儲介質(zhì)可包括但不限于:包括軟盤、光盤、固態(tài)驅(qū)動器(SSD)、光盤只讀存儲器(⑶-ROM)、可重寫光盤(⑶-RW)以及磁光盤的任何類型的盤;半導(dǎo)體器件,諸如只讀存儲器(R0M),諸如動態(tài)隨機存取存儲器(DRAM)、靜態(tài)隨機存取存儲器(SRAM)之類的隨機存取存儲器(RAM),可擦寫可編程只讀存儲器(EPR0M),閃存,電可擦寫可編程只讀存儲器(EEPROM);磁卡或光卡;或適合于存儲電子指令的任何其他類型的介質(zhì)。雖然已經(jīng)關(guān)于有限個實施例描述了本發(fā)明,但本領(lǐng)域技術(shù)人員將會理解從中得出的多種修改和變化。所附權(quán)利要求旨在覆蓋落入本發(fā)明的真實精神和范圍中的所有這些修改和變化。
權(quán)利要求
1.一種裝置,包括: 處理器,包括執(zhí)行單元和用于存儲在程序執(zhí)行期間所采用的分支的源和目的地址中的至少一個的至少一個最后分支記錄(LBR)寄存器,所述至少一個LBR寄存器還包括用于指示所述分支在事務(wù)存儲器(TM)事務(wù)期間是否被采用的事務(wù)指示符。
2.如權(quán)利要求1所述的裝置,其特征在于,所述至少一個LBR寄存器進一步存儲中止指示符以指示TM事務(wù)的中止是否發(fā)生在所述分支被采用之前。
3.如權(quán)利要求2所述的裝置,其特征在于,進一步包括用于將源和目的地址信息、所述事務(wù)指示符和所述中斷指示符中的至少一個存儲到所述至少一個LBR寄存器中的邏輯。
4.如權(quán)利要求1所述的裝置,其特征在于,進一步包括中止事務(wù)寄存器,所述中止事務(wù)寄存器用于存儲使得TM事務(wù)中止的指令的第一地址信息和響應(yīng)于中止接收控制的處理程序的第二地址信息。
5.如權(quán)利要求1所述的裝置,其特征在于,進一步包括用于存儲來自所述至少一個LBR寄存器的信息的分支回溯緩沖器(BTB),其中所述至少一個LBR寄存器包括多個LBR寄存器對。
6.如權(quán)利要求5所述的裝置,其特征在于,進一步包括優(yōu)化器,所述優(yōu)化器將執(zhí)行回溯跟蹤用于至少部分基于存儲在BTB中的信息而獲得的TM事務(wù)。
7.如權(quán)利要求1所述的裝置,其特征在于,進一步包括調(diào)試工具,所述調(diào)試工具允許通過使用TM事務(wù)的執(zhí)行回溯跟蹤基于存儲在所述至少一個LBR寄存器中的信息對TM事務(wù)內(nèi)的代碼流進行檢查。
8.如權(quán)利要求1所述的裝置,其特征在于,進一步包括分析工具,所述分析工具使得能夠通過使用TM事務(wù)的執(zhí)行回溯跟蹤基于存儲在所述至少一個LBR寄存器中的信息來對TM事務(wù)內(nèi)的代碼流進行事后檢查。
9.一種方法,包括: 在程序執(zhí)行期間分支被采用時,將分支地址信息插入處理器的最后分支記錄(LBR)條目; 如果在事務(wù)存儲器(TM)事務(wù) 的執(zhí)行期間分支被采用,則寫入LBR條目的事務(wù)指示符,否則不寫入事務(wù)指示符;以及 如果在TM事務(wù)中止后發(fā)生分支,則寫入LBR條目的中止指示符,否則不寫入中止指示符。
10.如權(quán)利要求9所述的方法,其特征在于,進一步包括利用處理器的事務(wù)狀態(tài)信息來確定在TM事務(wù)中是否發(fā)生分支。
11.如權(quán)利要求9所述的方法,其特征在于,進一步包括將來自多個LBR條目的信息存儲到處理器的高速緩存存儲器的分支跟蹤緩沖器中。
12.如權(quán)利要求11所述的方法,其特征在于,進一步包括基于存儲在分支跟蹤緩沖器中的一個或多個事務(wù)指示符來標(biāo)識TM事務(wù)中的一個或多個分支。
13.如權(quán)利要求12所述的方法,其特征在于,進一步包括標(biāo)識在基于存儲在分支跟蹤緩沖器中的一個或多個中止指示符被中止的TM事務(wù)的區(qū)域中被采用的一個或多個分支。
14.如權(quán)利要求13所述的方法,其特征在于,進一步包括基于被采用的分支的標(biāo)識來優(yōu)化所述區(qū)域中的代碼。
15.—種系統(tǒng),包括: 處理器,包括執(zhí)行單元和多個最后分支記錄(LBR)寄存器對,每個LBR寄存器對用于存儲在程序執(zhí)行期間被采用的分支的源和目的地址信息,每個LBR寄存器對進一步包括用于指示所述分支在事務(wù)存儲器(TM)事務(wù)期間是否被采用的事務(wù)指示符和用于指示TM事務(wù)的中止是否發(fā)生在所述分支被采用之前的中止指示符;以及 耦合至所述處理器的動態(tài)隨機存取存儲器(DRAM)。
16.如權(quán)利要求15所述的系統(tǒng),其特征在于,所述處理器包括用于TM事務(wù)的硬件支持。
17.如權(quán)利要求16所述的系統(tǒng),其特征在于,所述硬件支持包括具有多個條目的高速緩存存儲器,所述每個條目用于存儲關(guān)于TM事務(wù)的事務(wù)元數(shù)據(jù)。
18.如權(quán)利要求15所述的系統(tǒng),其特征在于,所述處理器進一步包括用于將源和目的地址信息、事務(wù)指示符和中止指示符存儲到所述多個LBR寄存器對中的邏輯。
19.如權(quán)利要求15所述的系統(tǒng),其特征在于,所述處理器進一步包括中止事務(wù)寄存器,所述中止事務(wù)寄存器用于存儲使得TM事務(wù)中止的指令的第一地址信息和用于響應(yīng)于中止接收控制的處理程序的第二地址信息。
20.如權(quán)利要求15所述的系統(tǒng),其特征在于,處理器進一步包括用于存儲分支跟蹤緩沖器(BTB)的高速緩存存儲器,所述分支跟蹤緩沖器(BTB)用于存儲來自所述多個LBR寄存器對的信息。
21.如權(quán)利要求20所述的系統(tǒng),其特征在于,進一步包括用于將信號發(fā)布至所述多個LBR寄存器對以使得所述多個LBR寄存器對的內(nèi)容被寫入BTB的邏輯。
22.如權(quán)利要求15所述的系統(tǒng),其特征在于,進一步包括優(yōu)化器,所述優(yōu)化器將執(zhí)行回溯跟蹤用于至少部分基于存儲 在所述LBR寄存器對中的信息而獲得的TM事務(wù)。
全文摘要
在一個實施例中,處理器包括執(zhí)行單元和用于存儲在程序執(zhí)行期間被采用的分支的地址信息的至少一個最后分支記錄(LBR)寄存器。該寄存器可進一步存儲用于指示該分支在事務(wù)存儲器(TM)事務(wù)中是否被采用的事務(wù)指示符。該寄存器還進一步存儲用于指示該分支是否由事務(wù)中止產(chǎn)生的中止指示符。描述并要求保護其他實施例。
文檔編號G06F12/00GK103154908SQ201180046867
公開日2013年6月12日 申請日期2011年7月28日 優(yōu)先權(quán)日2010年7月28日
發(fā)明者R·拉吉瓦爾, L·A·諾特, P·拉奇納, K·K·賴 申請人:英特爾公司