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

用于硬件事務(wù)內(nèi)存程序的剖析器的裝置和方法與流程

文檔序號(hào):11635193閱讀:246來(lái)源:國(guó)知局
用于硬件事務(wù)內(nèi)存程序的剖析器的裝置和方法與流程

本發(fā)明的實(shí)施例總地涉及計(jì)算機(jī)系統(tǒng)領(lǐng)域。更具體地,本發(fā)明的實(shí)施例涉及用于硬件事務(wù)內(nèi)存程序的剖析器(profiler)的裝置和方法。



背景技術(shù):

多核處理器和/或處理核內(nèi)的多線程指令執(zhí)行流水線使得軟件程序員開(kāi)發(fā)多線程軟件程序。多線程軟件自然是復(fù)雜的,因?yàn)橥瑫r(shí)執(zhí)行的不同進(jìn)程。然而,由于其執(zhí)行方式的“不確定性”的方面,多線程軟件此外還難以調(diào)試。具體地,即使程序從相同的輸入狀態(tài)開(kāi)始,多線程軟件程序也可能跨兩個(gè)不同的運(yùn)行時(shí)間而以不同方式執(zhí)行。

由于這些原因,“日志記錄”被用于記錄多線程軟件程序的執(zhí)行中的某些關(guān)鍵連接點(diǎn)。處理器目前設(shè)計(jì)有日志記錄電路,所述日志記錄電路觀察處理器的軟件執(zhí)行并記錄所述電路被設(shè)計(jì)用于檢測(cè)的某些關(guān)鍵事件。如果軟件程序崩潰,則分析日志記錄以研究導(dǎo)致崩潰的程序執(zhí)行。

硬件事務(wù)內(nèi)存(htm)將很快被用作許多事務(wù)內(nèi)存(tm)系統(tǒng)的基石。不幸的是,在htm系統(tǒng)上執(zhí)行日志記錄和其它剖析技術(shù)提出了新的挑戰(zhàn),因?yàn)楝F(xiàn)有的僅軟件剖析技術(shù)已經(jīng)顯示出僅對(duì)于僅軟件tm(stm)系統(tǒng)是可接受的。因?yàn)橛布聞?wù)比軟件事務(wù)執(zhí)行快一個(gè)數(shù)量級(jí)或更多,所以在軟件事務(wù)中引發(fā)大約10%開(kāi)銷的現(xiàn)有方法將對(duì)硬件事務(wù)引發(fā)100%或更多的開(kāi)銷。剖析團(tuán)體通常同意,在剖析數(shù)據(jù)聚集時(shí),超過(guò)10%的開(kāi)銷的任何事情都有可能引入探針效應(yīng),該效應(yīng)將改變多線程程序的爭(zhēng)用簽名(contentionsignature),這似乎表明這些現(xiàn)有技術(shù)對(duì)于htm不可能夠用。

附圖說(shuō)明

圖1a是圖示了根據(jù)本發(fā)明的實(shí)施例的示例性有序流水線以及示例性寄存器重命名、無(wú)序發(fā)布/執(zhí)行流水線二者的框圖;

圖1b是圖示了根據(jù)本發(fā)明的實(shí)施例的在處理器中包括的有序架構(gòu)核的示例性實(shí)施例和示例性寄存器重命名、無(wú)序發(fā)布/執(zhí)行架構(gòu)核二者的框圖;

圖2是根據(jù)本發(fā)明的實(shí)施例的具有集成的存儲(chǔ)器控制器和圖形的多核處理器和單核處理器的框圖;

圖3圖示了根據(jù)本發(fā)明的一個(gè)實(shí)施例的系統(tǒng)的框圖;

圖4圖示了根據(jù)本發(fā)明的實(shí)施例的第二系統(tǒng)的框圖;

圖5圖示了根據(jù)本發(fā)明的實(shí)施例的第三系統(tǒng)的框圖;

圖6圖示了根據(jù)本發(fā)明的實(shí)施例的片上系統(tǒng)(soc)的框圖;

圖7圖示了根據(jù)本發(fā)明的實(shí)施例的對(duì)比使用軟件指令轉(zhuǎn)換器將源指令集中的二進(jìn)制指令轉(zhuǎn)換為目標(biāo)指令集中的二進(jìn)制指令的框圖;

圖8圖示了具有日志記錄電路的示例性現(xiàn)有技術(shù)處理器;

圖9圖示了具有事務(wù)能力和日志記錄電路的改進(jìn)處理器;

圖10a圖示了可以由處理器執(zhí)行的第一方法;

圖10b圖示了可以由處理器執(zhí)行的第二方法;

圖10c圖示了可以由處理器執(zhí)行的第三方法;

圖10d圖示了可以由處理器執(zhí)行的第四方法;

圖11圖示了示例性分組結(jié)構(gòu);

圖12圖示了包括剖析系統(tǒng)的示例性架構(gòu);

圖13圖示了事務(wù)排序器和分類器模塊的一個(gè)實(shí)施例;

圖14圖示了對(duì)于四個(gè)不同線程的線程度量的示例性集合;

圖15a-c圖示了源自本發(fā)明的實(shí)施例的優(yōu)化結(jié)果的示例性集合;以及

圖16圖示了根據(jù)本發(fā)明的一個(gè)實(shí)施例的方法。

具體實(shí)施方式

示例性處理器架構(gòu)

圖1a是圖示了根據(jù)本發(fā)明的實(shí)施例的示例性有序取得、解碼、引退流水線和示例性寄存器重命名、無(wú)序發(fā)布/執(zhí)行流水線二者的框圖。圖1b是圖示了根據(jù)本發(fā)明的實(shí)施例的在處理器中包括的有序取得、解碼、引退核和示例性寄存器重命名、無(wú)序發(fā)布/執(zhí)行架構(gòu)核的框圖。圖1a-1b中的實(shí)線框圖示了流水線??和核的有序部分,而虛線框的可選添加則圖示了寄存器重命名、無(wú)序發(fā)布/執(zhí)行流水線和核。

在圖1a中,處理器流水線100包括取得級(jí)102、長(zhǎng)度解碼級(jí)104、解碼級(jí)106、分配級(jí)108、重命名級(jí)110、調(diào)度(也稱為分派或發(fā)布)級(jí)112、寄存器讀取/存儲(chǔ)器讀取級(jí)114、執(zhí)行級(jí)116、寫(xiě)回/存儲(chǔ)器寫(xiě)入級(jí)118、異常處理級(jí)122和提交級(jí)124。

圖1b示出了處理器核190,其包括耦合到執(zhí)行引擎單元150的前端單元130,并且這二者都耦合到存儲(chǔ)器單元170。核190可以是精簡(jiǎn)指令集計(jì)算(risc)核、復(fù)雜指令集計(jì)算(cisc)核、超長(zhǎng)指令字(vliw)核或混合或替換的核類型。作為又一選項(xiàng),核190可以是專用核,諸如例如網(wǎng)絡(luò)或通信核、壓縮引擎、協(xié)處理器核、通用計(jì)算圖形處理單元(gpgpu)核、圖形核等。

前端單元130包括耦合到指令高速緩存單元134的分支預(yù)測(cè)單元132,指令高速緩存單元134耦合到指令轉(zhuǎn)譯后備緩沖器(tlb)136,指令轉(zhuǎn)譯后備緩沖器(tlb)136耦合到指令取得單元138,指令取得單元138耦合到解碼單元140。解碼單元140(或解碼器)可以對(duì)指令進(jìn)行解碼,并且生成作為輸出的一個(gè)或多個(gè)微操作、微代碼入口點(diǎn)、微指令、其它指令或其它控制信號(hào),其解碼自、或以其它方式反映、或?qū)С鲎栽贾噶?。解碼單元140可以使用各種不同的機(jī)制來(lái)實(shí)現(xiàn)。合適機(jī)制的示例包括但不限于查找表、硬件實(shí)現(xiàn)、可編程邏輯陣列(pla)、微代碼只讀存儲(chǔ)器(rom)等。在一個(gè)實(shí)施例中,核190包括微代碼rom或存儲(chǔ)用于某些宏指令的微代碼(例如,在解碼單元140中或以其它方式在前端單元130內(nèi))的其它介質(zhì)。解碼單元140耦合到執(zhí)行引擎單元150中的重命名/分配器單元152。

執(zhí)行引擎單元150包括重命名/分配器單元152,重命名/分配器單元152耦合到引退單元154和一個(gè)或多個(gè)調(diào)度器單元156的集合。(一個(gè)或多個(gè))調(diào)度器單元156表示任何數(shù)量的不同調(diào)度器,包括保留站、中心指令窗口等。(一個(gè)或多個(gè))調(diào)度器單元156耦合到(一個(gè)或多個(gè))物理寄存器文件單元158。(一個(gè)或多個(gè))物理寄存器文件單元158中的每個(gè)表示一個(gè)或多個(gè)物理寄存器文件,其中不同的物理寄存器文件存儲(chǔ)一個(gè)或多個(gè)不同的數(shù)據(jù)類型,諸如標(biāo)量整數(shù)、標(biāo)量浮點(diǎn)、打包整數(shù)、打包浮點(diǎn)、向量整數(shù)、向量浮點(diǎn)、狀態(tài)(例如,作為要執(zhí)行的下一個(gè)指令的地址的指令指針)等。在一個(gè)實(shí)施例中,(一個(gè)或多個(gè))物理寄存器文件單元158包括向量寄存器單元、寫(xiě)掩碼寄存器單元和標(biāo)量寄存器單元。這些寄存器單元可以提供架構(gòu)向量寄存器、向量掩碼寄存器和通用寄存器。(一個(gè)或多個(gè))物理寄存器文件單元158被引退單元154重疊以圖示可以在其中(例如,使用(一個(gè)或多個(gè))重新排序緩沖器和(一個(gè)或多個(gè))引退寄存文件;使用(一個(gè)或多個(gè))未來(lái)的文件、(一個(gè)或多個(gè))歷史緩沖器和(一個(gè)或多個(gè))引退寄存器文件;使用寄存器映射和寄存器池等)實(shí)現(xiàn)寄存器重命名和無(wú)序執(zhí)行的各種方式。引退單元154和(一個(gè)或多個(gè))物理寄存器文件單元158耦合到(一個(gè)或多個(gè))執(zhí)行集群160。(一個(gè)或多個(gè))執(zhí)行集群160包括一個(gè)或多個(gè)執(zhí)行單元162的集合和一個(gè)或多個(gè)存儲(chǔ)器訪問(wèn)單元164的集合。執(zhí)行單元162可以并且在各種類型的數(shù)據(jù)(例如,標(biāo)量浮點(diǎn)、打包整數(shù)、打包浮點(diǎn)、向量整數(shù)、向量浮點(diǎn))上執(zhí)行各種操作(例如,移位(shift)、加法、減法、乘法)。雖然一些實(shí)施例可以包括專用于特定功能或功能集合的數(shù)個(gè)執(zhí)行單元,但是其它實(shí)施例可以僅包括一個(gè)執(zhí)行單元或者全部執(zhí)行全部功能的多個(gè)執(zhí)行單元。(一個(gè)或多個(gè))調(diào)度器單元156、(一個(gè)或多個(gè))物理寄存器文件單元158和(一個(gè)或多個(gè))執(zhí)行集群160被示出為可能是復(fù)數(shù)的,因?yàn)槟承?shí)施例針對(duì)某些類型的數(shù)據(jù)/操作創(chuàng)建單獨(dú)的流水線(例如,標(biāo)量整數(shù)流水線、標(biāo)量浮點(diǎn)/打包整數(shù)/打包浮點(diǎn)/向量整數(shù)/向量浮點(diǎn)流水線,和/或存儲(chǔ)器訪問(wèn)流水線,其中的每個(gè)具有它們各自的調(diào)度器單元、(一個(gè)或多個(gè))物理寄存器文件單元和/或執(zhí)行集群--并且在單獨(dú)的存儲(chǔ)器訪問(wèn)流水線的情況下,某些實(shí)施例被實(shí)現(xiàn)為其中只有該流水線的執(zhí)行集群具有(一個(gè)或多個(gè))存儲(chǔ)器訪問(wèn)單元164)。還應(yīng)該理解,在使用單獨(dú)的流水線的情況下,這些流水線中的一個(gè)或多個(gè)可以是無(wú)序發(fā)布/執(zhí)行,并且其余的可以是有序的。

存儲(chǔ)器訪問(wèn)單元164的集合耦合到存儲(chǔ)器單元170,存儲(chǔ)器單元170包括數(shù)據(jù)tlb單元172,數(shù)據(jù)tlb單元172耦合到數(shù)據(jù)高速緩存單元174,數(shù)據(jù)高速緩存單元174耦合到第2級(jí)(l2)高速緩存單元176。在一個(gè)示例性實(shí)施例中,存儲(chǔ)器訪問(wèn)單元164可以包括加載單元、存儲(chǔ)地址單元和存儲(chǔ)數(shù)據(jù)單元,其每一個(gè)單元均耦合到存儲(chǔ)器單元170中的數(shù)據(jù)tlb單元172。指令高速緩存單元134進(jìn)一步耦合到存儲(chǔ)器單元170中的第2級(jí)(l2)高速緩存單元176。l2高速緩存單元176耦合到一個(gè)或多個(gè)其它級(jí)別的高速緩存并且最終耦合到主存儲(chǔ)器。

通過(guò)示例的方式,示例性寄存器重命名、無(wú)序發(fā)布/執(zhí)行核架構(gòu)可以實(shí)現(xiàn)流水線100如下:1)指令取得138執(zhí)行取得和長(zhǎng)度解碼級(jí)102和104;2)解碼單元140執(zhí)行解碼級(jí)106;3)重命名/分配器單元152執(zhí)行分配級(jí)108和重命名級(jí)110;4)(一個(gè)或多個(gè))調(diào)度器單元156執(zhí)行調(diào)度級(jí)112;5)(一個(gè)或多個(gè))物理寄存器文件單元158和存儲(chǔ)單元170執(zhí)行寄存器讀取/存儲(chǔ)讀取級(jí)114;執(zhí)行集群160執(zhí)行執(zhí)行級(jí)116;6)存儲(chǔ)器單元170和(一個(gè)或多個(gè))物理寄存器文件單元158執(zhí)行寫(xiě)回/存儲(chǔ)器寫(xiě)入級(jí)118;7)在異常處理級(jí)122中可能涉及各種單元;以及8)引退單元154和(一個(gè)或多個(gè))物理寄存器文件單元158執(zhí)行提交級(jí)124。

核190可以支持一個(gè)或多個(gè)指令集(例如,x86指令集(具有已經(jīng)向較新版本添加的一些擴(kuò)展);加利福尼亞州桑尼維爾的mips技術(shù)公司的mips指令集;加利福尼亞州桑尼維爾的arm控股公司的arm指令集(具有諸如neon的可選附加擴(kuò)展)),包括本文所述的(一個(gè)或多個(gè))指令。在一個(gè)實(shí)施例中,核190包括支持打包數(shù)據(jù)指令集擴(kuò)展(例如,avx1、avx2和/或一些形式的通用向量友好指令格式(u=0和/或u=1)),如下所述)的邏輯,從而允許使用打包數(shù)據(jù)來(lái)執(zhí)行許多多媒體應(yīng)用所使用的操作。

應(yīng)當(dāng)理解,核可以支持多線程(執(zhí)行操作或線程的兩個(gè)或更多并行集合),并且可以以各種方式這樣做,各種方式包括時(shí)間分片多線程、同時(shí)多線程(其中單個(gè)物理核針對(duì)物理核是同時(shí)多線程的線程中的每個(gè)提供邏輯核)或其組合(例如,諸如在英特爾?超線程技術(shù)中的此后的時(shí)間分片取得和解碼以及同時(shí)多線程)。

雖然在無(wú)序執(zhí)行的上下文中描述了寄存器重命名,但是應(yīng)當(dāng)理解,可以在有序的架構(gòu)中使用寄存器重命名。雖然處理器的圖示實(shí)施例還包括單獨(dú)的指令和數(shù)據(jù)高速緩存單元134/174和共享l2高速緩存單元176,但是替換實(shí)施例可以具有用于指令和數(shù)據(jù)二者的諸如例如第1級(jí)(l1)內(nèi)部高速緩存的單個(gè)內(nèi)部高速緩存,或多級(jí)內(nèi)部高速緩存。在一些實(shí)施例中,系統(tǒng)可以包括內(nèi)部高速緩存和在核和/或處理器外部的外部高速緩存的組合。替換地,所有高速緩存可以在核和/或處理器外部。

圖2是根據(jù)本發(fā)明的實(shí)施例的處理器200的框圖,處理器200可以具有多于一個(gè)核、可以具有集成存儲(chǔ)器控制器并且可以具有集成圖形。圖2中的實(shí)線框示出了具有單個(gè)核202a、系統(tǒng)代理210、一個(gè)或多個(gè)總線控制器單元216的集合的處理器200,而虛線框的可選添加圖示了具有多個(gè)核202a-n、在系統(tǒng)代理單元210中的一個(gè)或多個(gè)集成存儲(chǔ)器控制器單元214的集合和專用邏輯208的替換處理器200。

因此,處理器200的不同實(shí)現(xiàn)可以包括:1)cpu,其具有是集成圖形和/或科學(xué)(吞吐量)邏輯的專用邏輯208(其可以包括一個(gè)或多個(gè)核),以及是一個(gè)或多個(gè)通用核的核202a-n(例如,通用有序核、通用無(wú)序核、二者的組合);2)協(xié)處理器,其具有是主要用于圖形和/或科學(xué)(吞吐量)的大量專用核的核202a-n;和3)協(xié)處理器,其具有是大量通用有序核的核202a-n。因此,處理器200可以是通用處理器、協(xié)處理器或?qū)S锰幚砥?,諸如例如網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、gpgpu(通用圖形處理單元)、高吞吐量多集成核(mic)協(xié)處理器(包括30個(gè)或更多個(gè)核)、嵌入式處理器等。處理器可以在一個(gè)或多個(gè)芯片上實(shí)現(xiàn)。處理器200可以是一個(gè)或多個(gè)襯底的一部分和/或使用諸如例如bicmos、cmos或nmos之類的多種工藝技術(shù)中的任何技術(shù)在一個(gè)或多個(gè)襯底上實(shí)現(xiàn)。

存儲(chǔ)器層級(jí)包括核內(nèi)的一個(gè)或多個(gè)級(jí)別的高速緩存、集合或一個(gè)或多個(gè)共享高速緩存單元206和耦合到集成存儲(chǔ)器控制器單元214的集合的外部存儲(chǔ)器(未示出)。共享高速緩存單元206的集合可以包括一個(gè)或多個(gè)中級(jí)高速緩存,諸如第2級(jí)(l2)、第3級(jí)(l3)、第4級(jí)(l4)或其它級(jí)別的高速緩存、最后級(jí)別高速緩存(llc)和/或其組合。雖然在一個(gè)實(shí)施例中,基于環(huán)的互連單元212互連集成圖形邏輯208、共享高速緩存單元206的集合和系統(tǒng)代理單元210/(一個(gè)或多個(gè))集成存儲(chǔ)器控制器單元214,但是替換實(shí)施例可以使用任何數(shù)量的用于對(duì)此類單元進(jìn)行互連的公知技術(shù)。在一個(gè)實(shí)施例中,在一個(gè)或多個(gè)高速緩存單元206和核202-a-n之間保持一致性(coherency)。

在一些實(shí)施例中,一個(gè)或多個(gè)核202a-n能夠進(jìn)行多線程。系統(tǒng)代理210包括協(xié)調(diào)和操作核202a-n的那些部件。系統(tǒng)代理單元210可以包括例如功率控制單元(pcu)和顯示單元。pcu可以是或包括調(diào)整核202a-n和集成圖形邏輯208的功率狀態(tài)所需的邏輯和部件。顯示單元用于驅(qū)動(dòng)一個(gè)或多個(gè)外部連接的顯示器。

在架構(gòu)指令集方面,核202a-n可以是同構(gòu)或異構(gòu)的;也就是說(shuō),核202a-n中的兩個(gè)或更多核可能能夠執(zhí)行相同的指令集,而其它核可能能夠只執(zhí)行該指令集的子集或者不同指令集。在一個(gè)實(shí)施例中,核202a-n是異構(gòu)的并且包括下面描述的“小”核和“大”核二者。

圖3-6是示例性計(jì)算機(jī)架構(gòu)的框圖。本領(lǐng)域已知的用于膝上型計(jì)算機(jī)、臺(tái)式計(jì)算機(jī)、手持pc、個(gè)人數(shù)字助理、工程工作站、服務(wù)器、網(wǎng)絡(luò)設(shè)備、網(wǎng)絡(luò)集線器、交換機(jī)、嵌入式處理器、數(shù)字信號(hào)處理器(dsp)、圖形設(shè)備、視頻游戲設(shè)備、機(jī)頂盒、微控制器、蜂窩電話、便攜式媒體播放器、手持設(shè)備和各種其它電子設(shè)備的其它系統(tǒng)設(shè)計(jì)和配置也是合適的。通常,能夠合并如本文所公開(kāi)的處理器和/或其它執(zhí)行邏輯的各種各樣的系統(tǒng)或電子設(shè)備通常是合適的。

現(xiàn)在參考圖3,示出的是根據(jù)本發(fā)明的一個(gè)實(shí)施例的系統(tǒng)300的框圖。系統(tǒng)300可以包括耦合到控制器集線器320的一個(gè)或多個(gè)處理器310、315。在一個(gè)實(shí)施例中,控制器集線器320包括圖形存儲(chǔ)器控制器集線器(gmch)390和輸入/輸出集線器(ioh)350(其可以在單獨(dú)的芯片上);gmch390包括存儲(chǔ)器和圖形控制器,存儲(chǔ)器340和協(xié)處理器345耦合到gmch390上;ioh350將輸入/輸出(i/o)設(shè)備360耦合到gmch390。替換地,存儲(chǔ)器和圖形控制器之一或二者集成在處理器內(nèi)(如本文所述),存儲(chǔ)器340和協(xié)處理器345直接耦合到處理器310,并且利用ioh350與在單個(gè)芯片中的控制器集線器320耦合。

圖3中用虛線標(biāo)示附加處理器315的可選性質(zhì)。每個(gè)處理器310、315可以包括本文描述的一個(gè)或多個(gè)處理核并且可以是某版本的處理器200。

存儲(chǔ)器340可以是例如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram)、相變存儲(chǔ)器(pcm)或二者的組合。對(duì)于至少一個(gè)實(shí)施例,控制器集線器320經(jīng)由諸如前端總線(fsb)的多分支總線、諸如快速通道互連(qpi)之類的點(diǎn)對(duì)點(diǎn)接口或類似連接395來(lái)與(一個(gè)或多個(gè))處理器310、315通信。

在一個(gè)實(shí)施例中,協(xié)處理器345是專用處理器,諸如例如高吞吐量mic處理器、網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、gpgpu、嵌入式處理器等。在一個(gè)實(shí)施例中,控制器集線器320可以包括集成圖形加速器。

在包括架構(gòu)、微架構(gòu)、熱、功耗特性等在內(nèi)的品質(zhì)度量的范圍方面在物理資源310、315之間可以存在各種差異。

在一個(gè)實(shí)施例中,處理器310執(zhí)行控制一般類型的數(shù)據(jù)處理操作的指令。嵌入在指令內(nèi)的可以是協(xié)處理器指令。處理器310將這些協(xié)處理器指令識(shí)別為應(yīng)該由附加的協(xié)處理器345執(zhí)行的類型。因此,處理器310將協(xié)處理器總線或其它互連上的這些協(xié)處理器指令(或表示協(xié)處理器指令的控制信號(hào))發(fā)布到協(xié)處理器345。(一個(gè)或多個(gè))協(xié)處理器345接受并執(zhí)行接收到的協(xié)處理器指令。

現(xiàn)在參考圖4,示出的是根據(jù)本發(fā)明實(shí)施例的第一個(gè)更具體的示例性系統(tǒng)400的框圖。如圖4中所示,多處理器系統(tǒng)400是點(diǎn)對(duì)點(diǎn)互連系統(tǒng),并且包括經(jīng)由點(diǎn)對(duì)點(diǎn)互連450耦合的第一處理器470和第二處理器480。處理器470和480中的每一個(gè)可以是某版本的處理器200。在本發(fā)明的一個(gè)實(shí)施例中,處理器470和480分別是處理器310和315,而協(xié)處理器438是協(xié)處理器345。在另一個(gè)實(shí)施例中,處理器470和480分別是處理器310協(xié)處理器345。

處理器470和480被示出分別包括集成存儲(chǔ)器控制器(imc)單元472和482。處理器470還包括作為其總線控制器單元的一部分的點(diǎn)對(duì)點(diǎn)(p-p)接口476和478;類似地,第二處理器480包括p-p接口486和488。處理器470、480可以使用p-p接口電路478、488經(jīng)由點(diǎn)對(duì)點(diǎn)(p-p)接口450來(lái)交換信息。如圖4中所示,imc472和482將處理器耦合到相應(yīng)的存儲(chǔ)器,即存儲(chǔ)器432和存儲(chǔ)器434,它們可以是本地附接到相應(yīng)的處理器的主存儲(chǔ)器的部分。

處理器470、480中的每個(gè)可以使用點(diǎn)對(duì)點(diǎn)接口電路476、494、486、498經(jīng)由單獨(dú)p-p接口452、454來(lái)與芯片集490交換信息。芯片集490可以可選地經(jīng)由高性能接口439來(lái)與協(xié)處理器438交換信息。在一個(gè)實(shí)施例中,協(xié)處理器438是專用處理器,諸如例如高吞吐量mic處理器、網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、gpgpu、嵌入式處理器等。

可以將共享高速緩存(未示出)包括在任一處理器中或在兩個(gè)處理器外部、但是仍經(jīng)由p-p互連與處理器連接,使得如果處理器被置于低功耗模式中則可以將一個(gè)或兩個(gè)處理器的本地高速緩存信息存儲(chǔ)在共享高速緩存中。

芯片集490可以經(jīng)由接口496耦合到第一總線416。在一個(gè)實(shí)施例中,第一總線416可以是外圍部件互連(pci)總線或諸如pciexpress總線或另一第三代i/o互連總線之類的總線,但是本發(fā)明的范圍不限于此。

如圖4中所示,各種i/o設(shè)備414可以耦合到第一總線416連同總線橋418,總線橋418將第一總線416耦合到第二總線420。在一個(gè)實(shí)施例中,一個(gè)或多個(gè)附加處理器415,諸如協(xié)處理器、高吞吐量mic處理器、gpgpu、加速器(諸如例如圖形加速器或數(shù)字信號(hào)處理(dsp)單元)、現(xiàn)場(chǎng)可編程門(mén)陣列或任何其它處理器,耦合到第一總線416。在一個(gè)實(shí)施例中,第二總線420可以是低引腳數(shù)(lpc)總線。在一個(gè)實(shí)施例中,各種設(shè)備可以耦合到第二總線420,各種設(shè)備包括例如鍵盤(pán)和/或鼠標(biāo)422、通信設(shè)備427和諸如盤(pán)驅(qū)動(dòng)器或其它可以包括指令/代碼和數(shù)據(jù)430的大容量存儲(chǔ)設(shè)備的存儲(chǔ)單元428。此外,音頻i/o424可以耦合到第二總線420。注意,其它架構(gòu)是可能的。例如,代替圖4的點(diǎn)對(duì)點(diǎn)架構(gòu),系統(tǒng)可以實(shí)現(xiàn)多分支總線或其它此類架構(gòu)。

現(xiàn)在參考圖5,示出的是根據(jù)本發(fā)明的實(shí)施例的第二個(gè)更具體的示例性系統(tǒng)500的框圖。圖4和圖5中的類似元素具有類似的參考標(biāo)號(hào),并且已經(jīng)從圖5省略了圖4的某些方面,以避免模糊圖5的其它方面。

圖5圖示了處理器470、480可以分別包括集成存儲(chǔ)器和i/o控制邏輯(“cl”)472和482。因此,cl472、482包括集成存儲(chǔ)器控制器單元并且包括i/o控制邏輯。圖5不僅圖示了耦合到cl472、482的存儲(chǔ)器432、434,而且圖示了i/o設(shè)備514也耦合到控制邏輯472、482。舊有i/o設(shè)備515耦合到芯片集490。

現(xiàn)在參考圖6,示出的是根據(jù)本發(fā)明的實(shí)施例的soc600的框圖。圖2中的類似元素具有類似的參考標(biāo)號(hào)。此外,虛線框是在更先進(jìn)的soc上的可選功能。在圖6中,(一個(gè)或多個(gè))互連單元602耦合到:應(yīng)用處理器610,其包括一個(gè)或多個(gè)核202a-n的集合和(一個(gè)或多個(gè))共享高速緩存單元206;系統(tǒng)代理單元210;(一個(gè)或多個(gè))總線控制器單元216;(一個(gè)或多個(gè))集成存儲(chǔ)器控制器單元214;可以包括集成圖形邏輯、圖像處理器、音頻處理器和視頻處理器的集合或一個(gè)或多個(gè)協(xié)處理器620;靜態(tài)隨機(jī)存取存儲(chǔ)器(sram)單元630;直接存儲(chǔ)器存?。╠ma)單元632;以及用于耦合到一個(gè)或多個(gè)外部顯示器的顯示單元640。在一個(gè)實(shí)施例中,(一個(gè)或多個(gè))協(xié)處理器620包括專用處理器,諸如例如網(wǎng)絡(luò)或通信處理器、壓縮引擎、gpgpu、高吞吐量mic處理器、嵌入式處理器等。

本文公開(kāi)的機(jī)制的實(shí)施例可以以硬件、軟件、固件或此類實(shí)現(xiàn)方法的組合來(lái)實(shí)現(xiàn)。本發(fā)明的實(shí)施例可以被實(shí)現(xiàn)為在包括至少一個(gè)處理器、存儲(chǔ)系統(tǒng)(包括易失性和非易失性存儲(chǔ)器和/或存儲(chǔ)元件)、至少一個(gè)輸入設(shè)備和至少一個(gè)輸出設(shè)備的可編程系統(tǒng)上執(zhí)行的計(jì)算機(jī)程序或程序代碼。

可以將諸如圖4中所圖示的代碼430之類的程序代碼應(yīng)用于輸入指令以執(zhí)行本文所述的功能并生成輸出信息。輸出信息可以以已知的方式應(yīng)用于一個(gè)或多個(gè)輸出設(shè)備。為了本申請(qǐng)的目的,處理系統(tǒng)包括具有諸如例如數(shù)字信號(hào)處理器(dsp)、微控制器、專用集成電路(asic)或微處理器之類的處理器的任何系統(tǒng)。

程序代碼可以以高級(jí)程序或面向?qū)ο缶幊陶Z(yǔ)言來(lái)實(shí)現(xiàn),以與處理系統(tǒng)通信。如果需要,程序代碼也可以以匯編或機(jī)器語(yǔ)言來(lái)實(shí)現(xiàn)。事實(shí)上,本文所述的機(jī)制在范圍上不限于任何特定的編程語(yǔ)言。在任何情況下,語(yǔ)言可能是經(jīng)編譯或解釋的語(yǔ)言。

至少一個(gè)實(shí)施例的一個(gè)或多個(gè)方面可以通過(guò)存儲(chǔ)在表示處理器內(nèi)的各種邏輯的機(jī)器可讀介質(zhì)上的代表性指令來(lái)實(shí)現(xiàn),當(dāng)指令被機(jī)器讀取時(shí)使得機(jī)器制造用于執(zhí)行本文所描述的技術(shù)的邏輯。稱為“ip核”的這種表示可以存儲(chǔ)在有形的機(jī)器可讀介質(zhì)上,并提供給各種客戶或制造工廠以加載到實(shí)際制造邏輯或處理器的制造機(jī)器中。

這樣的機(jī)器可讀存儲(chǔ)介質(zhì)可以包括但不限于由機(jī)器或設(shè)備制造或形成的制品的非暫時(shí)性有形的布置,包括諸如硬盤(pán)、包括軟盤(pán)、光盤(pán)、壓縮盤(pán)只讀存儲(chǔ)器(cd-rom)、壓縮盤(pán)可重寫(xiě)(cd-rw)和磁光盤(pán)的任何其它類型的盤(pán)、半導(dǎo)體器件,諸如只讀存儲(chǔ)器(rom)、諸如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram)、靜態(tài)隨機(jī)存取存儲(chǔ)器(sram)之類的隨機(jī)存取存儲(chǔ)器(ram)、可擦除可編程只讀存儲(chǔ)器(eprom)、閃存、電可擦除可編程只讀存儲(chǔ)器(eeprom)、相變存儲(chǔ)器(pcm),磁卡或光卡,或適于存儲(chǔ)電子指令的任何其它類型的介質(zhì)在內(nèi)的存儲(chǔ)介質(zhì)。

因此,本發(fā)明的實(shí)施例還包括非暫時(shí)性有形的機(jī)器可讀介質(zhì),其包含指令或包含設(shè)計(jì)數(shù)據(jù),諸如定義本文所描述的結(jié)構(gòu)、電路、裝置、處理器和/或系統(tǒng)特征的硬件描述語(yǔ)言(hdl)。這樣的實(shí)施例也可以稱為程序產(chǎn)品。

在一些情況下,可以使用指令轉(zhuǎn)換器將來(lái)自源指令集的指令轉(zhuǎn)換為目標(biāo)指令集。例如,指令轉(zhuǎn)換器可以將指令轉(zhuǎn)譯(例如,使用靜態(tài)二進(jìn)制轉(zhuǎn)譯,包括動(dòng)態(tài)編譯的動(dòng)態(tài)二進(jìn)制轉(zhuǎn)譯)、轉(zhuǎn)變(morph)、仿真或以其它方式轉(zhuǎn)換為要由核處理的一個(gè)或多個(gè)其它指令。指令轉(zhuǎn)換器可以以軟件、硬件、固件或其組合來(lái)實(shí)現(xiàn)。指令轉(zhuǎn)換器可以在處理器上、在處理器外、或部分在處理器上并且部分在處理器外。

圖7是根據(jù)本發(fā)明的實(shí)施例的對(duì)比使用軟件指令轉(zhuǎn)換器將源指令集中的二進(jìn)制指令轉(zhuǎn)換為目標(biāo)指令集中的二進(jìn)制指令的框圖。在圖示的實(shí)施例中,指令轉(zhuǎn)換器是軟件指令轉(zhuǎn)換器,但是替換地,指令轉(zhuǎn)換器可以以軟件、固件、硬件或其各種組合來(lái)實(shí)現(xiàn)。圖7示出了可以使用x86編譯器704編譯高級(jí)語(yǔ)言702的程序,以生成可由具有至少一個(gè)x86指令集核的處理器716本地執(zhí)行的x86二進(jìn)制代碼706。具有至少一個(gè)x86指令集核的處理器716表示任何如下處理器:所述任何處理器可以通過(guò)兼容地執(zhí)行或以其它方式處理(1)英特爾x86指令集核的指令集的大部分或者(2)目標(biāo)是在具有至少一個(gè)x86指令集內(nèi)核的英特爾處理器上運(yùn)行的應(yīng)用或其它軟件的目標(biāo)代碼版本以便實(shí)現(xiàn)與具有至少一個(gè)x86指令集核的英特爾處理器基本相同的結(jié)果,來(lái)執(zhí)行與具有至少一個(gè)x86指令集核的英特爾處理器基本上相同的功能。x86編譯器704表示可操作以生成可以在具有或沒(méi)有附加聯(lián)動(dòng)(linkage)處理的情況下在具有至少一個(gè)x86指令集核的處理器716上執(zhí)行的x86二進(jìn)制代碼706(例如,目標(biāo)代碼)的編譯器。

類似地,圖7示出了可以使用替換的指令集編譯器708來(lái)編譯高級(jí)語(yǔ)言702的程序,以生成可由不具有至少一個(gè)x86指令集核的處理器714(例如,具有執(zhí)行加利福尼亞州桑尼維爾的mips科技公司的mips指令集和/或執(zhí)行加利福尼亞州桑尼維爾的arm控股公司的arm指令集的核的處理器)在本地執(zhí)行的替換指令集二進(jìn)制代碼710。指令轉(zhuǎn)換器712用于將x86二進(jìn)制代碼706轉(zhuǎn)換為可由不具有x86指令集核的處理器714在本地執(zhí)行的代碼。該轉(zhuǎn)換后的代碼不太可能與替換指令集二進(jìn)制代碼710相同,因?yàn)槟軌驅(qū)崿F(xiàn)此的指令轉(zhuǎn)換器很難制造;然而,轉(zhuǎn)換后的代碼將完成一般操作,并由來(lái)自替換指令集的指令組成。因此,指令轉(zhuǎn)換器712表示通過(guò)仿真、模擬或任何其它過(guò)程來(lái)允許不具有x86指令集處理器或核的處理器或其它電子設(shè)備執(zhí)行x86二進(jìn)制代碼706的軟件、固件、硬件或其組合。

具有事務(wù)能力和日志記錄電路以報(bào)告事務(wù)操作的處理器

圖8示出了在半導(dǎo)體芯片上實(shí)現(xiàn)的現(xiàn)有技術(shù)處理器800,其具有日志記錄電路801_1至801_n以用于跟蹤多線程程序流的特定方面并從處理器800外部記錄此類方面,使得可以在后面研究并理解程序的執(zhí)行。在實(shí)現(xiàn)中,處理器日志記錄電路801_1至801_n的每個(gè)實(shí)例被設(shè)計(jì)為將其本地處理核的每個(gè)線程看作在“區(qū)塊(chunk)”中執(zhí)行,其中某些特定查找的事件終止區(qū)塊。通過(guò)將每個(gè)線程的區(qū)塊的序列存儲(chǔ)在諸如系統(tǒng)存儲(chǔ)器103存儲(chǔ)器的存儲(chǔ)位置中,可以透徹地分析也許跨所有核805-1到805_x執(zhí)行線程的更大多線程程序的多線程執(zhí)行。

日志記錄電路的每個(gè)實(shí)例被分配有系統(tǒng)存儲(chǔ)器803的特定區(qū)域,其中存儲(chǔ)其各自的區(qū)塊。由具體核執(zhí)行的每個(gè)硬件線程被分配有分配給日志記錄電路的系統(tǒng)存儲(chǔ)器區(qū)域內(nèi)的它自己的相應(yīng)空間。這里,如本領(lǐng)域中已知的,單個(gè)指令執(zhí)行流水線可以同時(shí)執(zhí)行多個(gè)硬件線程(例如,8個(gè)硬件線程)。此外,每個(gè)處理核可以包含不止一個(gè)指令執(zhí)行流水線(例如,圖8示出了每個(gè)核具有兩個(gè)指令執(zhí)行流水線806)。

硬件線程被理解為是在指令執(zhí)行流水線內(nèi)活動(dòng)地執(zhí)行的線程。指令執(zhí)行流水線通常被設(shè)計(jì)為同時(shí)執(zhí)行最大/有限數(shù)量的硬件線程,其中所述最大量/極限是由流水線的硬件設(shè)計(jì)設(shè)置的。軟件線程被理解為是單個(gè)的程序代碼指令流。處理器支持的軟件線程數(shù)可以大大超過(guò)硬件線程數(shù)。當(dāng)線程的狀態(tài)/上下文信息被切換到指令執(zhí)行流水線中時(shí),軟件線程被識(shí)別為也為硬件線程。當(dāng)軟件線程的狀態(tài)/上下文被切換出指令執(zhí)行流水線時(shí),軟件線程失去其硬件線程狀態(tài)。在一個(gè)實(shí)施例中,每個(gè)硬件線程具有日志記錄電路的一個(gè)實(shí)例(為簡(jiǎn)單起見(jiàn),圖8僅示出每個(gè)核一個(gè)日志記錄電路)。

在實(shí)現(xiàn)中,日志記錄電路實(shí)例(例如,實(shí)例801_1)被設(shè)計(jì)為在以下條件中的任何下終止線程的區(qū)塊:1)存儲(chǔ)器競(jìng)爭(zhēng)條件;2)線程從活動(dòng)狀態(tài)切換到休眠狀態(tài);3)轉(zhuǎn)譯后備緩沖器(tlb)無(wú)效;4)線程被變換到它被配置用于的特權(quán)級(jí)別之外(例如,響應(yīng)于中斷或異常,從“用戶”特權(quán)級(jí)別到“內(nèi)核”特權(quán)級(jí)別的線程變換);5)線程嘗試訪問(wèn)不可高速緩存的存儲(chǔ)器區(qū)域。這里,上述事件中的任何都對(duì)多線程程序執(zhí)行的不確定性方式有所貢獻(xiàn)。

圖8還示出了用于特定線程的區(qū)塊的分組的現(xiàn)有技術(shù)結(jié)構(gòu)的插圖(inset)820。如在插圖820所觀察到的,分組包括:1)分組格式識(shí)別符(fmt);2)區(qū)塊的終止原因(ctr);3)差分時(shí)間戳(此分組與前一區(qū)塊的分組之間的時(shí)間)(tsd);4)由區(qū)塊在線程的前一區(qū)塊的終止和該區(qū)塊的終止之間執(zhí)行的指令數(shù)(cs);5)區(qū)塊的未完成寫(xiě)入數(shù)(即,引退但尚未全局可見(jiàn)(提交)的存儲(chǔ)操作的數(shù)量)(rsw);6)最舊的尚未引退的宏指令的引退加載/存儲(chǔ)操作的數(shù)量(ntb)。在實(shí)施例中,核id和線程id由軟件層添加,軟件層可以基于區(qū)塊被存儲(chǔ)在系統(tǒng)存儲(chǔ)器803中的哪里來(lái)確定二者。

這里,每個(gè)日志記錄電路實(shí)例801_1至801_n被耦合到處理器的它們各自的處理核805_1至805_n中的“勾連器(hook)”804_1至804_n(例如,在執(zhí)行各軟件線程的相應(yīng)指令流的指令執(zhí)行流水線806_1至806_n附近),勾連器804_1至804_n被設(shè)計(jì)為檢測(cè)查找的區(qū)塊終止事件。在執(zhí)行特定線程期間,各勾連器檢測(cè)線程的區(qū)塊終止事件并將事件報(bào)告給日志記錄電路801。作為響應(yīng),日志記錄電路801制定與插圖820的結(jié)構(gòu)一致的分組,并使分組被寫(xiě)入到外部存儲(chǔ)器803。

每個(gè)核內(nèi)的這些勾連器中的一個(gè)勾連器被耦合到存儲(chǔ)器競(jìng)爭(zhēng)檢測(cè)電路807_1至807_n。如圖8中觀察的那樣,每個(gè)處理核存在與該核的l1高速緩存808_1至808_n鄰近耦合的一個(gè)存儲(chǔ)器競(jìng)爭(zhēng)檢測(cè)電路。每個(gè)存儲(chǔ)器競(jìng)爭(zhēng)電路807_1至807_n被設(shè)計(jì)為檢測(cè)其相關(guān)聯(lián)的l1高速緩存處的存儲(chǔ)器競(jìng)爭(zhēng)。

當(dāng)兩個(gè)不同的軟件進(jìn)程(例如,兩個(gè)不同的線程)嘗試訪問(wèn)相同的存儲(chǔ)器位置并且那些存儲(chǔ)器訪問(wèn)中的至少一個(gè)是寫(xiě)入時(shí),發(fā)生存儲(chǔ)器競(jìng)爭(zhēng)。這里每個(gè)線程都記住當(dāng)前區(qū)塊的所有存儲(chǔ)器訪問(wèn)(地址)。當(dāng)檢測(cè)到與當(dāng)前區(qū)塊記住的地址之一的沖突(無(wú)論此訪問(wèn)已過(guò)去多長(zhǎng)時(shí)間)時(shí),該區(qū)塊被終止,并創(chuàng)建新的區(qū)塊。

值得注意的是,在同一個(gè)核上的兩個(gè)不同的線程嘗試訪問(wèn)相同的存儲(chǔ)器位置時(shí)或在兩個(gè)不同核上的兩個(gè)不同的線程嘗試訪問(wèn)同一個(gè)存儲(chǔ)器位置時(shí),可能引起競(jìng)爭(zhēng)。在后一種情況下,第一個(gè)核將探聽(tīng)(snoop)第二個(gè)核的l1高速緩存。這里,互連網(wǎng)絡(luò)809用于傳送此類探聽(tīng)。

每個(gè)存儲(chǔ)器競(jìng)爭(zhēng)檢測(cè)電路807_1至807_n跟蹤近期的讀取操作和近期的寫(xiě)入操作(稱為“讀取集”和“寫(xiě)入集”),并將它們與傳入的讀取請(qǐng)求和傳入的寫(xiě)入請(qǐng)求進(jìn)行比較。存儲(chǔ)器競(jìng)爭(zhēng)電路將在任何時(shí)候檢測(cè)到指向相同存儲(chǔ)器地址的同時(shí)的“寫(xiě)入后讀取”(raw)、“寫(xiě)入后寫(xiě)入”(waw)或“讀取后寫(xiě)入”(war)操作時(shí)檢測(cè)存儲(chǔ)器競(jìng)爭(zhēng)條件。在各種實(shí)施例中,沖突地址的身份可以可選地被包括在針對(duì)存儲(chǔ)器競(jìng)爭(zhēng)被記錄的區(qū)塊中(取決于是否需要更大或更小的區(qū)塊)。

圖9示出了對(duì)圖8的現(xiàn)有技術(shù)處理器的改進(jìn)。這里,在實(shí)施例中,圖9的改進(jìn)處理器假定上面關(guān)于圖8描述的所有功能加上下面立即描述的附加改進(jìn)。

如圖9中觀察到的那樣,處理器的各個(gè)核905_1至905_n包括執(zhí)行“事務(wù)”的附加能力。事務(wù)的執(zhí)行對(duì)應(yīng)于遠(yuǎn)遠(yuǎn)超出傳統(tǒng)推測(cè)性執(zhí)行邊界的推測(cè)性代碼的執(zhí)行。傳統(tǒng)的推測(cè)性執(zhí)行(諸如分支預(yù)測(cè))允許指令執(zhí)行流水線在確認(rèn)所采取的方向是正確的程序流路徑之前沿著程序分支執(zhí)行程序。這里,執(zhí)行指令的結(jié)果被包含在流水線內(nèi)部(例如,在重排序緩沖器中),而未被外部寫(xiě)入到處理器的架構(gòu)狀態(tài)(寄存器)。照此,推測(cè)性執(zhí)行的指令的結(jié)果不是全局可見(jiàn)的。如果預(yù)測(cè)分支不正確,則流水線被清除(flush),并且程序流從不正確地預(yù)測(cè)的分支重新啟動(dòng)。如果預(yù)測(cè)是正確的,則指令結(jié)果被提交到流水線外部的架構(gòu)狀態(tài),以供其它進(jìn)程全局查看。然而,一般來(lái)說(shuō),可以包含的數(shù)據(jù)改變的量是具有有限大小的,并且因此推測(cè)性執(zhí)行的代碼的量是有限的。

相比之下,支持事務(wù)的處理核允許遠(yuǎn)遠(yuǎn)超出上面討論的這類推測(cè)性執(zhí)行的推測(cè)性執(zhí)行(盡管圖9的核也可被設(shè)計(jì)為包括分支預(yù)測(cè))。當(dāng)前的硬件事務(wù)內(nèi)存在l1或l2高速緩存中存儲(chǔ)推測(cè)性寫(xiě)入。如果事務(wù)被中止(abort),則高速緩存數(shù)據(jù)被丟棄并且存儲(chǔ)器改變決不會(huì)被推送到主存儲(chǔ)器,所以其它核永遠(yuǎn)不會(huì)看到它們。在超線程(即,smt)的情況下,上下文切換自動(dòng)中止活動(dòng)的事務(wù),因此在同一個(gè)核上執(zhí)行的另一軟件事務(wù)不能從另一軟件線程中看到飛行中的事務(wù)。在事務(wù)的情況下,進(jìn)程能夠“好像”它們已經(jīng)在共享數(shù)據(jù)項(xiàng)上放置鎖定一樣進(jìn)行執(zhí)行。在基本方法中,進(jìn)程(例如,軟件線程)獲取對(duì)整個(gè)數(shù)據(jù)庫(kù)(例如,整個(gè)共享存儲(chǔ)器,諸如llc高速緩存和/或系統(tǒng)存儲(chǔ)器903或其中保持進(jìn)程數(shù)據(jù)的區(qū)域)的鎖定。進(jìn)程執(zhí)行一些邏輯,并且在邏輯完成時(shí)確定需要對(duì)數(shù)據(jù)項(xiàng)中的一個(gè)或多個(gè)做出改變。然后進(jìn)程將數(shù)據(jù)項(xiàng)“提交”到數(shù)據(jù)庫(kù),并釋放數(shù)據(jù)庫(kù)上的鎖定,從而允許其它進(jìn)程訪問(wèn)數(shù)據(jù)項(xiàng)。

在實(shí)現(xiàn)中,處理器的執(zhí)行流水線906_1至906_n具有增強(qiáng)的功能單元以支持允許軟件線程相信它已經(jīng)如上所述地鎖定了數(shù)據(jù)庫(kù)的指令(例如,xacquire和xrelease)。也就是說(shuō),xacquire指令在被執(zhí)行時(shí)宣布推測(cè)性執(zhí)行的開(kāi)始以及數(shù)據(jù)庫(kù)上的鎖定的獲取。xrelease指令在被執(zhí)行時(shí)宣布推測(cè)性執(zhí)行的結(jié)束以及數(shù)據(jù)庫(kù)上的鎖定的釋放。重要的是,在實(shí)現(xiàn)中,處理器900的底層硬件要更多地動(dòng)作來(lái)讓軟件線程在它實(shí)際上尚未在技術(shù)上鎖定整個(gè)數(shù)據(jù)庫(kù)、而是使得處理器內(nèi)的沖突檢測(cè)硬件921尋找并施行針對(duì)相同數(shù)據(jù)項(xiàng)的競(jìng)爭(zhēng)線程之間的串行操作時(shí)相信它已經(jīng)在數(shù)據(jù)庫(kù)上放置了鎖定。

在這里,應(yīng)該清楚的是,如果存在想要使用相同數(shù)據(jù)庫(kù)的另一個(gè)并行線程,則允許第一軟件線程鎖定整個(gè)數(shù)據(jù)庫(kù)可能損害性能。第二線程將會(huì)別無(wú)選擇而只能等到第一線程將其數(shù)據(jù)提交到數(shù)據(jù)庫(kù)并釋放鎖定為止。在效果上,實(shí)際鎖定整個(gè)數(shù)據(jù)庫(kù)將導(dǎo)致使用相同數(shù)據(jù)庫(kù)的兩個(gè)并發(fā)線程串行執(zhí)行而不是并行執(zhí)行。

照此,xacquire指令具有“打開(kāi)”處理器內(nèi)的沖突檢測(cè)硬件921的效果,該沖突檢測(cè)硬件理解數(shù)據(jù)庫(kù)(例如,系統(tǒng)存儲(chǔ)器或其特定部分)應(yīng)該“表現(xiàn)為被鎖定”。這意味著沖突檢測(cè)硬件921將允許另一個(gè)進(jìn)程訪問(wèn)數(shù)據(jù)庫(kù),只要該訪問(wèn)不與由執(zhí)行xacquire指令的進(jìn)程進(jìn)行的訪問(wèn)相競(jìng)爭(zhēng)并相信它已經(jīng)獲得鎖定(這里,競(jìng)爭(zhēng)訪問(wèn)被理解為意味著相同的存儲(chǔ)器地址)。如果檢測(cè)到競(jìng)爭(zhēng)訪問(wèn),線程將被“中止”,這導(dǎo)致事務(wù)的狀態(tài)清除并且程序返回到xacquire指令以重新啟動(dòng)針對(duì)該事務(wù)的另一嘗試。這里,沖突檢測(cè)電路921檢測(cè)何時(shí)另一進(jìn)程嘗試了訪問(wèn)與執(zhí)行了xacquire并正在代碼的推測(cè)區(qū)域內(nèi)執(zhí)行的事務(wù)相同的存儲(chǔ)器位置。

在另一實(shí)現(xiàn)中,處理器還支持允許更高級(jí)事務(wù)語(yǔ)義學(xué)的附加指令(例如,xbegin,xend和xabort)。xbegin和xend分別與xacquire和xrelease實(shí)質(zhì)上作用相同。在這里,xbegin宣布推測(cè)性執(zhí)行開(kāi)始(打開(kāi)沖突檢測(cè)電路921),并且xend宣布推測(cè)性執(zhí)行的結(jié)束(關(guān)閉沖突檢測(cè)電路921)。操作如上面討論的那樣進(jìn)行,除了事務(wù)中止在執(zhí)行被中止的線程的核的控制寄存器空間922(例如,由一個(gè)或多個(gè)寄存器電路實(shí)現(xiàn)的eax模型特定寄存器空間)中留下錯(cuò)誤代碼之外,所述錯(cuò)誤代碼提供關(guān)于中止的更多細(xì)節(jié)(例如,由abort指令導(dǎo)致的中止,事務(wù)可能在重試時(shí)成功,沖突導(dǎo)致中止,內(nèi)部緩沖器溢出,命中調(diào)試斷點(diǎn),在嵌套事務(wù)期間發(fā)生中止)。

留在寄存器空間922中的信息可以用于將中止之后的程序流引導(dǎo)到除了事務(wù)的自動(dòng)重試中之外的(情況)。另外,處理器可以支持明確地中止事務(wù)的指令(例如,xabort)。xabort指令使程序員能夠定義除了明確設(shè)計(jì)到處理器硬件中的那些事務(wù)中止條件之外的其它事務(wù)中止條件。在xabort的情況下,eax寄存器將包含由xabort指令提供的信息(例如,描述引起其執(zhí)行的事件)。

提供事務(wù)支持的處理器增加了調(diào)試多線程程序代碼的復(fù)雜性。照此,圖9的改進(jìn)處理器900包括對(duì)日志記錄電路901的附加增強(qiáng),這些附加增強(qiáng)被設(shè)計(jì)為識(shí)別事務(wù)的存在并且基于它們來(lái)描繪區(qū)塊。更具體地說(shuō),在圖9中觀察到的核內(nèi)的附加勾連器930被設(shè)計(jì)成:1)檢測(cè)表明事務(wù)的推測(cè)性代碼的執(zhí)行開(kāi)始的指令(例如,xacquire或xbegin)的執(zhí)行,并將事件報(bào)告給日志記錄電路901;以及2)檢測(cè)表明事務(wù)的推測(cè)性代碼的執(zhí)行結(jié)束的指令(例如,xrelease或xend)的執(zhí)行,并將事件報(bào)告給日志記錄電路901。響應(yīng)于這些事件中的任一個(gè),日志記錄電路901將終止區(qū)塊,創(chuàng)建描述區(qū)塊終止的分組,并向外將分組報(bào)告給系統(tǒng)存儲(chǔ)器903(例如,經(jīng)由存儲(chǔ)器控制器909)。

另外,新的勾連器930將報(bào)告被中止的事務(wù)的存在。作為響應(yīng),日志記錄電路901將終止區(qū)塊,創(chuàng)建描述區(qū)塊終止的分組,并向外將分組寫(xiě)入系統(tǒng)存儲(chǔ)器903。值得注意的是,在這種方法中,用于日志記錄目的的中止檢測(cè)從處理核905內(nèi)實(shí)際檢測(cè)到用于中止事務(wù)的沖突的沖突檢測(cè)電路921離去,而不是在存儲(chǔ)器競(jìng)爭(zhēng)檢測(cè)電路907上。下面更詳細(xì)地討論沖突檢測(cè)電路921和存儲(chǔ)器競(jìng)爭(zhēng)檢測(cè)電路907之間的關(guān)系。在處理器包括包含描述中止的附加信息的寄存器空間922(例如,上述eax寄存器空間)的實(shí)現(xiàn)中,附加勾連器930還被設(shè)計(jì)為將包含在寄存器空間922中的信息報(bào)告給日志記錄電路901。在支持明確地終止事務(wù)的指令(例如,xabort)的處理器中,還將創(chuàng)建并向外報(bào)告事務(wù)中止分組(例如,用eax寄存器內(nèi)容(如果可用的話))。

圖10a示出了由圖9的處理器執(zhí)行的第一方法。如圖10a中觀察到的那樣,執(zhí)行標(biāo)記推測(cè)性執(zhí)行的事務(wù)代碼的執(zhí)行開(kāi)始的指令1001。在實(shí)施例中,該指令不被視為“已執(zhí)行”直至它被引退。響應(yīng)于指令的執(zhí)行,信號(hào)被引導(dǎo)到日志記錄電路1002。響應(yīng)于該信號(hào),日志記錄電路創(chuàng)建指示因?yàn)槭聞?wù)已經(jīng)啟動(dòng)所以區(qū)塊正在被終止的區(qū)塊終止分組1003。區(qū)塊終止分組被向外報(bào)告1004(例如,通過(guò)寫(xiě)入至外部系統(tǒng)存儲(chǔ)器中)。

圖10b示出了由圖9的處理器執(zhí)行的第二方法。如圖10b中觀察到的那樣,執(zhí)行標(biāo)記推測(cè)性執(zhí)行的事務(wù)代碼的執(zhí)行結(jié)束的指令(例如,在事務(wù)已經(jīng)成功地提交其數(shù)據(jù)改變之后)1011。在實(shí)施例中,指令不被視為“已執(zhí)行”直至它被引退。響應(yīng)于指令的執(zhí)行,信號(hào)被引導(dǎo)到日志記錄電路1012。響應(yīng)于該信號(hào),日志記錄電路創(chuàng)建指示因?yàn)槭聞?wù)已經(jīng)結(jié)束所以區(qū)塊正在被終止的區(qū)塊終止分組1013。區(qū)塊終止分組被向外報(bào)告1014(例如,通過(guò)寫(xiě)入至外部系統(tǒng)存儲(chǔ)器中)。

圖10c示出了由圖9的處理器執(zhí)行的第三方法。如圖10c中觀察到的那樣,硬件(例如,沖突檢測(cè)電路921)檢測(cè)到另一線程嘗試了到由事務(wù)訪問(wèn)的存儲(chǔ)器位置的訪問(wèn)1021。發(fā)送指示沖突的存在的信號(hào)(例如,從沖突檢測(cè)電路922到正在執(zhí)行該事務(wù)的處理核流水線)1022。響應(yīng)于該信號(hào),事務(wù)被中止,并且信息被寫(xiě)入到控制寄存器空間中1023。響應(yīng)于事務(wù)的中止,信號(hào)被發(fā)送到日志記錄電路1024。響應(yīng)于發(fā)送到日志記錄電路的信號(hào),日志記錄電路訪問(wèn)寄存器空間并創(chuàng)建指示因?yàn)槭聞?wù)已被中止所以區(qū)塊正被終止的區(qū)塊終止分組,并且該區(qū)塊終止分組包括來(lái)自寄存器的信息1025。區(qū)塊終止分組被向外報(bào)告1026(例如,通過(guò)寫(xiě)入至外部系統(tǒng)存儲(chǔ)器中)。

圖10d示出了由圖9的處理器執(zhí)行的第四方法。如圖10d中觀察到的那樣,執(zhí)行明確地中止事務(wù)的指令,并將信息寫(xiě)入到控制寄存器中1031。響應(yīng)于事務(wù)的中止,信號(hào)被發(fā)送到日志記錄電路1032。響應(yīng)于發(fā)送到日志記錄電路的信號(hào),日志記錄電路訪問(wèn)寄存器并創(chuàng)建指示因?yàn)槭聞?wù)已被中止所以區(qū)塊正被終止的區(qū)塊終止分組,并且該區(qū)塊終止分組包括來(lái)自寄存器的信息1033。區(qū)塊終止分組被向外報(bào)告1034(例如,通過(guò)寫(xiě)入至外部系統(tǒng)存儲(chǔ)器中)。

圖11示出了當(dāng)寫(xiě)出事務(wù)相關(guān)的區(qū)塊終止分組時(shí)由圖9的日志記錄電路901寫(xiě)出的分組結(jié)構(gòu)1100的實(shí)施例。如圖11中觀察到的那樣,該分組結(jié)構(gòu)大體上維持與圖8的現(xiàn)有技術(shù)分組820相同的結(jié)構(gòu)。然而,這里,與現(xiàn)有技術(shù)的分組820不同的是,分組的區(qū)塊終止原因(ctr)字段可以包含指示以下附加事件中的任何的信息:1)事務(wù)開(kāi)始;2)事務(wù)結(jié)束;和3)事務(wù)中止。在另外的實(shí)現(xiàn)中,ctr字段可以附加地指示處理器是否支持明確的中止指令(例如,xabort)。

除圖8的分組結(jié)構(gòu)之外的附加改進(jìn)在于:最舊的但尚未引退的宏指令信息的引退的加載/存儲(chǔ)操作的數(shù)量(圖8的分組820中的ntb)被替換為“事務(wù)狀態(tài)字”(tsw),其提供描述針對(duì)事務(wù)的區(qū)塊終止的附加信息(例如,針對(duì)其中ctr是事務(wù)終止的情況)。

在實(shí)現(xiàn)中,在事務(wù)中止的情況下,tsw包含(例如eax)控制寄存器的內(nèi)容,或者在事務(wù)開(kāi)始或事務(wù)結(jié)束的情況下,包含“事務(wù)嵌套計(jì)數(shù)器”寄存器(未繪出)的內(nèi)容。在事務(wù)中止的情況下,在實(shí)施例中,eax控制寄存器的內(nèi)容指示:1)中止是否來(lái)自xabort指令;2)事務(wù)是否可能在重試中成功;3)中止是否來(lái)自沖突;4)中止是否來(lái)自溢出;5)中止是否來(lái)自調(diào)試斷點(diǎn);6)中止的事務(wù)是否被嵌套。對(duì)于嵌套事務(wù),處理器被設(shè)計(jì)為支持事務(wù)內(nèi)的一系列事務(wù)(例如,第一事務(wù)可以啟動(dòng)另一事務(wù)等等)。在其保留寄存器空間內(nèi)的事務(wù)嵌套計(jì)數(shù)器值基本上保持對(duì)當(dāng)前事務(wù)屬于哪個(gè)內(nèi)部事務(wù)(如果有的話)的跟蹤。

在實(shí)現(xiàn)中,可以啟用存儲(chǔ)器競(jìng)爭(zhēng)檢測(cè)電路907(圖8的現(xiàn)有技術(shù)日志記錄技術(shù)的一部分),同時(shí)還啟用用于事務(wù)中止檢測(cè)的特殊勾連器930和日志記錄。這可以通過(guò)用允許新的事務(wù)勾連器930和存儲(chǔ)器競(jìng)爭(zhēng)勾連器二者同時(shí)被啟用并活動(dòng)的模式來(lái)設(shè)計(jì)圖9的處理器900來(lái)實(shí)現(xiàn)。這允許例如記錄在事務(wù)內(nèi)可能潛在地發(fā)生的全部沖突(例如,因?yàn)榇鎯?chǔ)器競(jìng)爭(zhēng)勾連器使得日志記錄電路901在事務(wù)的執(zhí)行期間向外報(bào)告任何檢測(cè)到的沖突(值得注意的是,存儲(chǔ)器競(jìng)爭(zhēng)條件和沖突是類似的事件))。此附加信息在以下實(shí)現(xiàn)中可能特別有用,其中提供的與中止相應(yīng)的控制寄存器信息(例如,上述eax寄存器)沒(méi)有詳細(xì)說(shuō)明具有導(dǎo)致事務(wù)中止的沖突的特定存儲(chǔ)器地址(在其它替換實(shí)現(xiàn)中,可以修改沖突檢測(cè)電路922以報(bào)告此信息以便進(jìn)入到寄存器空間中)。

此外,區(qū)塊終止分組的tsw信息可以包括與中止有關(guān)的、關(guān)于存儲(chǔ)器競(jìng)爭(zhēng)檢測(cè)電路907是否檢測(cè)到任何沖突的信息。如果未檢測(cè)到,則暗示中止事務(wù)的沖突檢測(cè)電路921實(shí)際上經(jīng)歷了“假陽(yáng)性”沖突。在實(shí)現(xiàn)中,假陽(yáng)性在沖突檢測(cè)電路921處是可能的,因?yàn)楦咚倬彺妫ㄖT如l1高速緩存)使用散列化電路來(lái)確定高速緩存的數(shù)據(jù)項(xiàng)要被存儲(chǔ)在哪里以及通常多個(gè)不同的存儲(chǔ)器地址可以散列化成相同的高速緩存存儲(chǔ)位置的事實(shí)。在另外的實(shí)現(xiàn)中,存儲(chǔ)器競(jìng)爭(zhēng)檢測(cè)電路907也能夠出于類似的原因而產(chǎn)生假陽(yáng)性——但是與在事務(wù)沖突檢測(cè)電路921駐留的高速緩存電路中相比,在存儲(chǔ)器競(jìng)爭(zhēng)檢測(cè)電路中存儲(chǔ)器地址的散列化和存儲(chǔ)可以是不同的(例如,布隆過(guò)濾器用于保持讀取集和寫(xiě)入集并且存儲(chǔ)器地址被散列化成特定的布隆過(guò)濾器位置)。照此,在這種情況下,如果存儲(chǔ)器競(jìng)爭(zhēng)檢測(cè)電路報(bào)告任何沖突,則不能完全依賴它們用于檢測(cè)事務(wù)中止。

在另一實(shí)施例中,事務(wù)相關(guān)的區(qū)塊終止分組的ctr信息指示事務(wù)是否由于遲鎖獲?。╨atelockacquire,lla)被終止。遲鎖獲取是特殊情況,其允許事務(wù)提交其數(shù)據(jù),即使事務(wù)尚未完成。通常,當(dāng)事務(wù)需要被“暫?!保ɡ珥憫?yīng)于異常或不安全指令)時(shí),lla被施加以使得其狀態(tài)能夠被外部保存。在事務(wù)的狀態(tài)被外部保存后,事務(wù)恢復(fù)正常操作。在這種情況下,處理核內(nèi)的勾連器再次向外向日志記錄電路901報(bào)告任何lla事件的發(fā)生,日志記錄電路901向外報(bào)告與lla及其事務(wù)終止有關(guān)的區(qū)塊終止事件。

日志記錄電路901可以以任何數(shù)量的方式實(shí)現(xiàn)。在第一極端處,日志記錄電路901可以完全在專用的定制邏輯電路中實(shí)現(xiàn)。在另一極端處,日志記錄電路901可以被實(shí)現(xiàn)為執(zhí)行程序代碼以實(shí)行其各種功能的微控制器或其它形式的程序代碼執(zhí)行電路(例如,固件)。這兩個(gè)極端之間的其它混合也是可能的。

由于由上述討論所教導(dǎo)的任何邏輯過(guò)程可以用控制器、微控制器或類似組件來(lái)執(zhí)行,這樣的處理可以用諸如機(jī)器可執(zhí)行指令之類的程序代碼來(lái)實(shí)現(xiàn),所述機(jī)器可執(zhí)行指令使得執(zhí)行這些指令的機(jī)器實(shí)行某些功能。

相信由上述討論所教導(dǎo)的過(guò)程也可以以各種面向?qū)ο蠡蚍敲嫦驅(qū)ο蟮挠?jì)算機(jī)編程語(yǔ)言在源級(jí)程序代碼中描述??梢允褂弥破穪?lái)存儲(chǔ)程序代碼。存儲(chǔ)程序代碼的制品可以被實(shí)施為(但不限于):一個(gè)或多個(gè)存儲(chǔ)器(例如,一個(gè)或多個(gè)閃存、(靜態(tài),動(dòng)態(tài)或其它)隨機(jī)存取存儲(chǔ)器),光盤(pán),cd-rom,dvdrom,eprom,eeprom,磁卡或光卡,或適合于存儲(chǔ)電子指令的其它類型的機(jī)器可讀介質(zhì)。程序代碼還可以通過(guò)在傳播介質(zhì)中實(shí)施的數(shù)據(jù)信號(hào)(例如,經(jīng)由通信鏈路(例如,網(wǎng)絡(luò)連接))的方式從遠(yuǎn)程計(jì)算機(jī)(例如,服務(wù)器)下載到請(qǐng)求計(jì)算機(jī)(例如,客戶機(jī))。

用于硬件事務(wù)內(nèi)存程序的剖析器的裝置和方法

下面描述的本發(fā)明的附加實(shí)施例包括使用基于跟蹤的重放來(lái)執(zhí)行通過(guò)使用上面描述的硬件擴(kuò)展(例如,圖8-11和相關(guān)聯(lián)的文本)記錄的硬件事務(wù)內(nèi)存(htm)程序的線程級(jí)和函數(shù)級(jí)剖析分析的軟件方法。具體地,本發(fā)明的這些實(shí)施例包括提供使用上面描述的硬件擴(kuò)展記錄的事務(wù)內(nèi)存(tm)程序的線程級(jí)剖析數(shù)據(jù)的軟件剖析技術(shù)。

基于執(zhí)行的重放(其中以其被記錄的精確方式重執(zhí)行和重放程序)可以提供使用上述htm擴(kuò)展所記錄的tm程序的重要和詳細(xì)的分析。然而,它也可能是過(guò)于緩慢的,使得在許多現(xiàn)實(shí)世界情況下,重放的執(zhí)行時(shí)間比非重放執(zhí)行慢1到2個(gè)數(shù)量級(jí)(10x-100x)。在程序在擴(kuò)展的時(shí)間段(諸如數(shù)個(gè)小時(shí))內(nèi)執(zhí)行的現(xiàn)實(shí)世界情況下,完成這樣的經(jīng)記錄的系統(tǒng)的完整的基于執(zhí)行的重放可能花費(fèi)數(shù)天、數(shù)周甚至數(shù)月。照此,這種開(kāi)銷對(duì)于許多現(xiàn)實(shí)世界的應(yīng)用是不可接受的。

本文描述了基于跟蹤的重放機(jī)制,其通過(guò)處理和分析所有經(jīng)記錄的執(zhí)行數(shù)據(jù)來(lái)外推給定tm程序的性能瓶頸。因?yàn)榛诟櫟闹胤艑?shí)際上不會(huì)重新執(zhí)行程序,因此這樣的重放可與執(zhí)行原始程序一樣快。事實(shí)上,在一些情況下,基于跟蹤的重放可能比執(zhí)行原始程序所花費(fèi)的對(duì)應(yīng)時(shí)間顯著地快得多。

因?yàn)橄旅婷枋龅募夹g(shù)使用基于跟蹤的重放,因此可能無(wú)法提供可從基于執(zhí)行的重放中收集的精確的事務(wù)沖突數(shù)據(jù)。然而,這樣精確的沖突檢測(cè)剖析并不總是需要的。在僅需要具有函數(shù)級(jí)精度的線程級(jí)剖析數(shù)據(jù)的情況下(這將可能是常見(jiàn)的“第一遍”剖析實(shí)踐),本發(fā)明的這些實(shí)施例可以顯著減少系統(tǒng)生成用于tm程序的剖析數(shù)據(jù)所花費(fèi)的時(shí)間(例如,相比于基于執(zhí)行的重放在剖析分析中的一到兩個(gè)數(shù)量級(jí)的改進(jìn))。

所描述的方法是相比于諸如gottschlich等人的pact2012“visualizingtransactionalmemory”以及zyulkyarov等人的pact2010“discoveringandunderstandingperformancebottlenecksintransactionalapplications”中描述的已知解決方案的改進(jìn)。首先,使用上述硬件擴(kuò)展,這些實(shí)施例遭受可忽略的剖析數(shù)據(jù)收集開(kāi)銷,這使得它們成為針對(duì)硬件事務(wù)的可行方法。沒(méi)有現(xiàn)有系統(tǒng)可以提供可接受的剖析數(shù)據(jù)收集開(kāi)銷。其次,本文描述的技術(shù)與已知的最佳的基于執(zhí)行的重放技術(shù)相比快了數(shù)個(gè)數(shù)量級(jí)地提取剖析數(shù)據(jù),這使得它們?cè)谟涗浀膱?zhí)行持續(xù)數(shù)分鐘至數(shù)小時(shí)至數(shù)天的環(huán)境中是實(shí)用的。這種方法的折衷是所描述的實(shí)施例在事務(wù)沖突方面降低了精度。然而,正如我們的實(shí)驗(yàn)數(shù)據(jù)所示,這種事務(wù)沖突數(shù)據(jù)并不總是需要的。在諸如這些的情況下,所描述的實(shí)施例為程序員提供了用于事務(wù)程序的剖析器分析的快速周轉(zhuǎn)時(shí)間。

圖12圖示了根據(jù)本發(fā)明的一個(gè)實(shí)施例使用的系統(tǒng)組件,包括事務(wù)調(diào)試器(tdb)記錄系統(tǒng)1220,其包括tdb記錄硬件和/或軟件1201(例如,操作系統(tǒng))以響應(yīng)于(例如,使用上述硬件擴(kuò)展)執(zhí)行事務(wù)內(nèi)存程序代碼1230而記錄tdb數(shù)據(jù)。收集的tdb數(shù)據(jù)然后被存儲(chǔ)在由tdb剖析器系統(tǒng)1200使用的一組tdb記錄的日志文件1210中。如圖所示,tdb剖析系統(tǒng)1200的一個(gè)實(shí)施例包括用于通過(guò)使用基于跟蹤的重放技術(shù)執(zhí)行剖析的三個(gè)組件:(1)數(shù)據(jù)解析器和分割器1201;(2)事務(wù)排序器和分類器1202;和(3)線程級(jí)優(yōu)化器和事務(wù)熱點(diǎn)檢測(cè)器1203。

1.數(shù)據(jù)解析器和分割器

在一個(gè)實(shí)施例中,數(shù)據(jù)解析器和分割器1201處理tdb記錄的日志文件1210。盡管大部分功能是用任何數(shù)據(jù)解析器所預(yù)期的功能,但是一些方面根據(jù)tdb系統(tǒng)的需求進(jìn)行了獨(dú)特的定制:

多線程:解析/生成共享內(nèi)存和事務(wù)事件分組信息。上文關(guān)于圖11描述了這樣的分組的一個(gè)示例,并且其可以包含與所執(zhí)行的指令相關(guān)的各種元素,諸如通用時(shí)間戳信息(例如,用于跨線程的保證同步),其可以包括事務(wù)開(kāi)始、事務(wù)結(jié)束和事務(wù)中止定時(shí)數(shù)據(jù)。事件分組信息還可以包括上文討論的事務(wù)狀態(tài)字(tsw)。

單線程:分支跟蹤分組信息。這些分組包含關(guān)于貫穿程序所采取的分支的信息。此信息可以針對(duì)反匯編的二進(jìn)制來(lái)使用以識(shí)別指令指針位置,以及同樣地當(dāng)發(fā)生事務(wù)事件時(shí)正在執(zhí)行的精確函數(shù)(例如,當(dāng)事務(wù)沖突發(fā)生時(shí)正在執(zhí)行什么函數(shù))。

因?yàn)閺挠涗浀膱?zhí)行中處理的數(shù)據(jù)可能異常大,因此系統(tǒng)的一個(gè)實(shí)施例使用(在解析器和分割器模塊1201內(nèi)的)數(shù)據(jù)分割器來(lái)最小化由每個(gè)分組所引發(fā)的開(kāi)銷。例如,分支跟蹤分組包含比共享內(nèi)存或事務(wù)分組顯著地少得多的數(shù)據(jù)量。照此,一個(gè)實(shí)施例以更壓縮的方式定義這些小分組。

此壓縮的副作用是它需要用于剖析分析的執(zhí)行次序的分離,因?yàn)榉纸M在它們的軟件表示中不是統(tǒng)一的。然而,如下面關(guān)于事務(wù)排序器和分類器所討論的,可以提供多個(gè)接口來(lái)訪問(wèn)記錄的執(zhí)行流,其中一個(gè)接口允許從同一流中拉取所有事件,這簡(jiǎn)化了當(dāng)數(shù)據(jù)位于跨分支事件和事務(wù)事件流時(shí)對(duì)剖析信息的處理。

2.事務(wù)排序器和分類器

系統(tǒng)的一個(gè)實(shí)施例使用多線程事務(wù)排序器和分類器1202,其提供用于訪問(wèn)事務(wù)數(shù)據(jù)、分支數(shù)據(jù)或二者的多個(gè)流(api)。圖13中示出了事務(wù)排序器和分類器1202的一個(gè)實(shí)施例的細(xì)節(jié),其包括用于識(shí)別具有函數(shù)級(jí)沖突數(shù)據(jù)的事務(wù)事件1302的事務(wù)事件流1303和分支跟蹤流1301。

具體地,圖13圖示了如何使用執(zhí)行分支跟蹤信息和事務(wù)事件信息二者的組合,事務(wù)級(jí)事件可被提取并被互相關(guān)至反匯編的二進(jìn)制信息,這允許事務(wù)中止至少被關(guān)聯(lián)至在事務(wù)被中止時(shí)正執(zhí)行的當(dāng)前函數(shù)。

在一個(gè)實(shí)施例中,這以如下方式完成。當(dāng)事務(wù)中止發(fā)生時(shí),剖析系統(tǒng)執(zhí)行反向查找以找到對(duì)應(yīng)的“事務(wù)開(kāi)始”事件。一旦被識(shí)別,(從分支跟蹤流1301)捕獲在事務(wù)的執(zhí)行期間所采取的所有可能分支的時(shí)間戳范圍。來(lái)自包含在周圍時(shí)間戳范圍內(nèi)的分支的指令指針(ip)中的每一個(gè)都針對(duì)被執(zhí)行程序的反匯編二進(jìn)制來(lái)使用。一旦在反匯編二進(jìn)制中找到對(duì)應(yīng)ip,就識(shí)別使用這些ip的函數(shù)(或多個(gè)函數(shù)),這允許程序員看到哪個(gè)函數(shù)(或哪些函數(shù))導(dǎo)致事務(wù)沖突,以及因此哪個(gè)函數(shù)(或哪些函數(shù))應(yīng)該被分析以實(shí)現(xiàn)性能優(yōu)化。

3.線程級(jí)優(yōu)化器和事務(wù)熱點(diǎn)檢測(cè)器

除了圖14(其圖示了具有線程id1-4的四個(gè)線程的度量)中所示的為每個(gè)線程提供基本度量之外,系統(tǒng)的一個(gè)實(shí)施例通過(guò)分析圖14中所示的提取的高級(jí)別數(shù)據(jù)來(lái)外推哪些線程可能引發(fā)最大的性能改進(jìn)。此熱點(diǎn)檢測(cè)對(duì)于將程序員指向一般興趣區(qū)域是有用的。

當(dāng)使用圖14中所示的高級(jí)別數(shù)據(jù)并然后使用來(lái)自圖13的更低級(jí)別數(shù)據(jù)時(shí),可以識(shí)別具有函數(shù)級(jí)精度的線程級(jí)事務(wù)性能瓶頸,所有都不需要進(jìn)行基于執(zhí)行的重放。

這已經(jīng)通過(guò)包括在四核rtm機(jī)器上使用四個(gè)線程的三個(gè)微基準(zhǔn)測(cè)試的優(yōu)化結(jié)果而實(shí)驗(yàn)性地證實(shí)了。圖15a圖示了具有htm和sgl的鏈表的結(jié)果,圖15b圖示了僅具有htm的鏈表的結(jié)果,并且圖15c圖示了僅具有htm的散列表的結(jié)果,每個(gè)圖表繪出原始性能(1)(沒(méi)有本文描述的本發(fā)明的實(shí)施例)對(duì)照考慮到結(jié)果的剖析數(shù)據(jù)之后的優(yōu)化性能(2)(經(jīng)由本發(fā)明的實(shí)施例實(shí)現(xiàn))。結(jié)果,可以看出本發(fā)明的實(shí)施例相比現(xiàn)有實(shí)現(xiàn)取得了顯著的時(shí)間改進(jìn)。

圖16中圖示了根據(jù)本發(fā)明的一個(gè)實(shí)施例的方法。該方法可以在上述架構(gòu)的上下文內(nèi)實(shí)現(xiàn),但不限于任何特定的架構(gòu)。

在1601處,記錄與事務(wù)內(nèi)存程序代碼的執(zhí)行相關(guān)的數(shù)據(jù)。如同提到的那樣,在一個(gè)實(shí)施例中,數(shù)據(jù)包括與事務(wù)內(nèi)存程序代碼中的事務(wù)事件和分支的執(zhí)行相關(guān)的數(shù)據(jù)。數(shù)據(jù)可以被存儲(chǔ)在例如日志/跟蹤文件或數(shù)據(jù)庫(kù)中。

在1602處,使用基于跟蹤的重放技術(shù)分析記錄的數(shù)據(jù)的部分,并且在1603處,基于該分析,生成包括函數(shù)級(jí)沖突的指示的剖析數(shù)據(jù)。例如,如上文討論的,剖析器可以從記錄的數(shù)據(jù)中提取事務(wù)級(jí)事件,并將事務(wù)級(jí)事件與來(lái)自事務(wù)內(nèi)存程序代碼的反匯編二進(jìn)制信息互相關(guān)。然后,剖析器可以生成互相關(guān)的結(jié)果,包括識(shí)別出的當(dāng)發(fā)生事務(wù)中止操作時(shí)執(zhí)行的函數(shù)。

最后,在1604處,可以使用函數(shù)級(jí)沖突數(shù)據(jù)來(lái)優(yōu)化事務(wù)內(nèi)存程序代碼。例如,一旦事務(wù)中止操作已經(jīng)與特定函數(shù)相關(guān)聯(lián),則可以修改該函數(shù)和/或該函數(shù)周圍的程序代碼,使得中止操作不再發(fā)生或更少頻次地發(fā)生。

本發(fā)明的實(shí)施例可以包括上面已經(jīng)描述的各種步驟。這些步驟可以體現(xiàn)在機(jī)器可執(zhí)行指令中,所述機(jī)器可執(zhí)行指令可以用于使通用或?qū)S锰幚砥鲌?zhí)行步驟。替換地,這些步驟可以由包含用于執(zhí)行步驟的硬連線邏輯的特定硬件部件或由編程的計(jì)算機(jī)部件和定制硬件部件的任何組合來(lái)執(zhí)行。

如本文所述,指令可以指代被配置為執(zhí)行某些操作或具有存儲(chǔ)在體現(xiàn)在非暫時(shí)性計(jì)算機(jī)可讀介質(zhì)中的存儲(chǔ)器中的預(yù)定功能或軟件指令的硬件的特定配置,諸如專用集成電路(asic)。因此,圖中所示的技術(shù)可以使用在一個(gè)或多個(gè)電子設(shè)備(例如,終端站、網(wǎng)絡(luò)元件等)上存儲(chǔ)和執(zhí)行的代碼和數(shù)據(jù)來(lái)實(shí)現(xiàn)。這樣的電子設(shè)備使用諸如非暫時(shí)性計(jì)算機(jī)機(jī)器可讀存儲(chǔ)介質(zhì)(例如,磁盤(pán);光盤(pán);隨機(jī)存取存儲(chǔ)器;只讀存儲(chǔ)器;閃存設(shè)備;相變存儲(chǔ)器)和暫時(shí)性計(jì)算機(jī)機(jī)器可讀通信介質(zhì)(例如,電、光、聲或其它形式的傳播信號(hào)——諸如載波、紅外信號(hào)、數(shù)字信號(hào)等)之類的計(jì)算機(jī)機(jī)器可讀介質(zhì)來(lái)存儲(chǔ)和(內(nèi)部地和/或通過(guò)網(wǎng)絡(luò)與其它電子設(shè)備)傳送代碼和數(shù)據(jù)。

此外,這樣的電子設(shè)備通常包括耦合到一個(gè)或多個(gè)其它部件的一個(gè)或多個(gè)處理器的集合,所述一個(gè)或多個(gè)其它部件諸如是一個(gè)或多個(gè)存儲(chǔ)設(shè)備(非暫時(shí)性機(jī)器可讀存儲(chǔ)介質(zhì))、用戶輸入/輸出設(shè)備(例如鍵盤(pán)、觸摸屏和/或顯示器)和網(wǎng)絡(luò)連接。處理器集合和其它部件的耦合通常通過(guò)一個(gè)或多個(gè)總線和橋(也稱為總線控制器)。攜帶網(wǎng)絡(luò)流量的存儲(chǔ)設(shè)備和信號(hào)分別表示一個(gè)或多個(gè)機(jī)器可讀存儲(chǔ)介質(zhì)和機(jī)器可讀通信介質(zhì)。因此,給定電子設(shè)備的存儲(chǔ)設(shè)備通常存儲(chǔ)用于在該電子設(shè)備的一個(gè)或多個(gè)處理器的集合上執(zhí)行的代碼和/或數(shù)據(jù)。當(dāng)然,可以使用軟件、固件和/或硬件的不同組合來(lái)實(shí)現(xiàn)本發(fā)明的實(shí)施例的一個(gè)或多個(gè)部分。貫穿該具體實(shí)施方式,出于解釋的目的,闡述了許多具體細(xì)節(jié)以便提供對(duì)本發(fā)明的透徹理解。然而,對(duì)于本領(lǐng)域技術(shù)人員清楚的是,可以在沒(méi)有這些具體細(xì)節(jié)中的一些的情況下實(shí)踐本發(fā)明。在某些情況下,為了避免模糊本發(fā)明的主題,未以詳細(xì)的細(xì)節(jié)描述公知的結(jié)構(gòu)和功能。因此,本發(fā)明的范圍和精神應(yīng)根據(jù)以下權(quán)利要求來(lái)判斷。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
招远市| 根河市| 筠连县| 宁乡县| 商水县| 诸暨市| 拉萨市| 潜江市| 贵阳市| 汶川县| 隆尧县| 策勒县| 甘肃省| 兰西县| 普陀区| 金湖县| 安西县| 横山县| 星座| 肃宁县| 苍山县| 黑河市| 邮箱| 吴堡县| 泰州市| 威远县| 马公市| 沂南县| 会泽县| 江阴市| 松阳县| 漾濞| 长海县| 沙河市| 丹凤县| 宜丰县| 定结县| 昆山市| 揭阳市| 西城区| 巴南区|