用于實(shí)現(xiàn)頁(yè)級(jí)自動(dòng)二進(jìn)制轉(zhuǎn)換的硬件剖析機(jī)制的制作方法
【專利摘要】由性能監(jiān)視硬件實(shí)現(xiàn)的硬件剖析機(jī)制實(shí)現(xiàn)頁(yè)級(jí)自動(dòng)二進(jìn)制轉(zhuǎn)換。該硬件在運(yùn)行時(shí)期間標(biāo)識(shí)存儲(chǔ)器中包含潛在能被優(yōu)化的指令的代碼頁(yè)。該硬件請(qǐng)求在所述存儲(chǔ)器中分配與所述代碼頁(yè)相關(guān)聯(lián)的新頁(yè),其中所述新頁(yè)包含計(jì)數(shù)器的集合,并且所述計(jì)數(shù)器中的每一個(gè)對(duì)應(yīng)于所述代碼頁(yè)中的指令中的一個(gè)。當(dāng)該硬件檢測(cè)到具有在該代碼頁(yè)內(nèi)的分支目標(biāo)的分支指令時(shí),它使在該新頁(yè)中具有與代碼頁(yè)中的分支目標(biāo)相同的位置的計(jì)數(shù)器之一遞增。重復(fù)該代碼頁(yè)的執(zhí)行,并在分支目標(biāo)落在該代碼頁(yè)之內(nèi)時(shí)使計(jì)數(shù)器遞增。該硬件然后將所述新頁(yè)中的所述計(jì)數(shù)器值提供給二進(jìn)制轉(zhuǎn)換器以用于二進(jìn)制轉(zhuǎn)換。
【專利說(shuō)明】用于實(shí)現(xiàn)頁(yè)級(jí)自動(dòng)二進(jìn)制轉(zhuǎn)換的硬件剖析機(jī)制
【技術(shù)領(lǐng)域】
[0001]本公開(kāi)涉及處理邏輯、微處理器以及相關(guān)的指令集架構(gòu)的領(lǐng)域,這些指令集架構(gòu)在被處理器或其他處理邏輯所執(zhí)行時(shí)執(zhí)行邏輯、數(shù)學(xué)或其他功能性操作。
【背景技術(shù)】
[0002]計(jì)算機(jī)程序通常針對(duì)特定的計(jì)算機(jī)處理器架構(gòu)被編譯成二進(jìn)制代碼。這在該計(jì)算機(jī)處理器進(jìn)化以實(shí)現(xiàn)更先進(jìn)的指令集、更強(qiáng)大的功能單元或不同的數(shù)據(jù)格式時(shí)產(chǎn)生問(wèn)題。每當(dāng)引入新一代處理器時(shí),計(jì)算機(jī)硬件和軟件供應(yīng)商不得不花費(fèi)大量的工程設(shè)計(jì)資源以及金錢(qián)資源來(lái)幫助舊的計(jì)算機(jī)程序在新計(jì)算機(jī)處理器上運(yùn)行。
[0003]在現(xiàn)代計(jì)算機(jī)中,通常通過(guò)處理器的前端處的解碼器將經(jīng)編譯的二進(jìn)制代碼解碼成微代碼。一種使舊軟件能在新處理器上運(yùn)行的現(xiàn)有方法是動(dòng)態(tài)二進(jìn)制轉(zhuǎn)換,動(dòng)態(tài)二進(jìn)制轉(zhuǎn)換將二進(jìn)制代碼從一個(gè)指令集轉(zhuǎn)換至另一指令集。如果經(jīng)編譯的二進(jìn)制代碼包含熱點(diǎn)(hot spot),即程序的頻繁執(zhí)行部分,則可對(duì)包含該熱點(diǎn)的代碼區(qū)(而不是整個(gè)代碼)執(zhí)行二進(jìn)制轉(zhuǎn)換。這樣的部分二進(jìn)制轉(zhuǎn)換的結(jié)果是處理器專用和經(jīng)優(yōu)化的代碼。
[0004]為了對(duì)熱點(diǎn)執(zhí)行部分二進(jìn)制轉(zhuǎn)換,首先需要使有效的熱點(diǎn)檢測(cè)機(jī)制就位。常規(guī)的熱點(diǎn)檢測(cè)機(jī)制收集并分析二進(jìn)制代碼的運(yùn)行時(shí)(runtime)統(tǒng)計(jì),由此確定熱點(diǎn)的存在。然而,常規(guī)的熱點(diǎn)檢測(cè)機(jī)制會(huì)使用大量的存儲(chǔ)器來(lái)存儲(chǔ)所收集的統(tǒng)計(jì),并且會(huì)招致顯著的硬件成本以用于跟蹤二進(jìn)制代碼的運(yùn)行時(shí)行為。
[0005]在檢測(cè)到熱點(diǎn)之后,調(diào)用轉(zhuǎn)換器軟件以產(chǎn)生該熱點(diǎn)代碼的經(jīng)優(yōu)化版本。然后將經(jīng)優(yōu)化的代碼安裝在存儲(chǔ)器中,并執(zhí)行經(jīng)優(yōu)化的版本,而不是執(zhí)行原始原生代碼。找出并優(yōu)化熱點(diǎn)的過(guò)程花費(fèi)了相當(dāng)大量的處理時(shí)間和硬件資源,這些處理時(shí)間和硬件資源原本可用于執(zhí)行原生代碼。然而,由于硬件和軟件限制,當(dāng)前系統(tǒng)標(biāo)識(shí)并轉(zhuǎn)換相同的熱點(diǎn),并存儲(chǔ)和安裝用于每個(gè)虛擬地址的相同的經(jīng)優(yōu)化代碼和其中檢測(cè)到熱點(diǎn)的上下文。因此,每當(dāng)創(chuàng)建新上下文時(shí),即使之前已經(jīng)對(duì)于相同代碼執(zhí)行了整個(gè)過(guò)程,相同代碼中包含的熱點(diǎn)也被重新檢測(cè)和重新安裝。因此,系統(tǒng)資源被低效地利用,并且系統(tǒng)性能降級(jí)。
[0006]附圖簡(jiǎn)述
[0007]在附圖的以下各圖中通過(guò)示例而非限制地說(shuō)明多個(gè)實(shí)施例:
[0008]圖1是根據(jù)一個(gè)實(shí)施例的具有性能監(jiān)視硬件的指令處理裝置的示例實(shí)施例的框圖。
[0009]圖2示出根據(jù)一個(gè)實(shí)施例的被分配給代碼頁(yè)的新頁(yè)的示例。
[0010]圖3示出根據(jù)一個(gè)實(shí)施例的用于運(yùn)行時(shí)二進(jìn)制轉(zhuǎn)換的性能監(jiān)視系統(tǒng)的元件。
[0011]圖4是示出根據(jù)一個(gè)實(shí)施例要執(zhí)行的操作的流程圖。
[0012]圖5是示出根據(jù)一個(gè)實(shí)施例要執(zhí)行的操作的另一流程圖。
[0013]圖6是示出根據(jù)一個(gè)實(shí)施例的使用軟件指令轉(zhuǎn)換器將源指令集中的二進(jìn)制指令轉(zhuǎn)換為目標(biāo)指令集中的二進(jìn)制指令的框圖。
[0014]圖7A是根據(jù)一個(gè)實(shí)施例的有序和無(wú)序流水線的框圖。
[0015]圖7B是根據(jù)一個(gè)實(shí)施例的有序和無(wú)序核的框圖。
[0016]圖8A-B是根據(jù)一個(gè)實(shí)施例的更具體的示例性的有序核架構(gòu)的框圖。
[0017]圖9是根據(jù)一個(gè)實(shí)施例的處理器的框圖。
[0018]圖10是根據(jù)一個(gè)實(shí)施例的系統(tǒng)的框圖。
[0019]圖11是根據(jù)一個(gè)實(shí)施例的第二系統(tǒng)的框圖。
[0020]圖12是根據(jù)本發(fā)明的實(shí)施例的第三系統(tǒng)的框圖。
[0021]圖13是根據(jù)一個(gè)實(shí)施例的片上系統(tǒng)(SoC)的框圖。
[0022]各實(shí)施例的描述
[0023]在以下描述中,陳述了多個(gè)具體細(xì)節(jié)。然而,應(yīng)當(dāng)理解的是,可不通過(guò)這些具體細(xì)節(jié)來(lái)實(shí)施本發(fā)明的實(shí)施例。在其它實(shí)例中,未詳細(xì)示出公知的電路、結(jié)構(gòu)以及技術(shù),以免模糊對(duì)本描述的理解。
[0024]常規(guī)的熱點(diǎn)檢測(cè)和二進(jìn)制轉(zhuǎn)換機(jī)制不能高效地利用系統(tǒng)資源。因此,需要關(guān)于熱點(diǎn)檢測(cè)覆蓋范圍、轉(zhuǎn)換器調(diào)用次數(shù)以及經(jīng)優(yōu)化代碼和元數(shù)據(jù)的存儲(chǔ)尺寸的改進(jìn)。本申請(qǐng)中描述的各實(shí)施例提供了硬件剖析機(jī)制,該硬件剖析機(jī)制允許利用非常少的硬件和軟件開(kāi)銷來(lái)監(jiān)視熱點(diǎn)。本申請(qǐng)中描述的實(shí)施例還允許在多個(gè)上下文上重新使用經(jīng)優(yōu)化的代碼。因此,可減小熱點(diǎn)檢測(cè)覆蓋范圍,并且可使轉(zhuǎn)換器調(diào)用次數(shù)以及經(jīng)優(yōu)化的代碼存儲(chǔ)空間最小。因?yàn)橛懈郊拥臋C(jī)會(huì)來(lái)執(zhí)行經(jīng)優(yōu)化的代碼,所以還可改善系統(tǒng)性能。
[0025]圖1是指令處理裝置115的實(shí)施例的框圖,該指令處理裝置具有用于執(zhí)行指令的執(zhí)行單元140。在一些實(shí)施例中,指令處理裝置115可以是處理器、多核處理器的處理核、或者電子系統(tǒng)中的處理元件。
[0026]解碼器130接收高級(jí)機(jī)器指令或宏指令形式的傳入指令,并且解碼所述指令以生成低級(jí)微操作、微代碼進(jìn)入點(diǎn)、微指令或其他低級(jí)指令或控制信號(hào),它們反映了原始的高級(jí)指令和/或從原始的高級(jí)指令導(dǎo)出。低級(jí)指令或控制信號(hào)可通過(guò)低級(jí)(例如,電路級(jí)或硬件級(jí))操作來(lái)實(shí)現(xiàn)高級(jí)指令的操作。解碼器130可使用各種不同的機(jī)制來(lái)實(shí)現(xiàn)。合適機(jī)制的示例包括但不限于微代碼、隨機(jī)存取存儲(chǔ)器(ROM)、查找表、硬件實(shí)現(xiàn)、可編程邏輯陣列(PLA)、用于實(shí)現(xiàn)本領(lǐng)域已知的解碼器的其他機(jī)制等。
[0027]執(zhí)行單元140耦合至解碼器130。執(zhí)行單元140可從解碼器130接收一個(gè)或多個(gè)微操作、微代碼進(jìn)入點(diǎn)、微指令、其他指令或其他控制信號(hào),它們反映了所接收的指令或者是從所接收的指令導(dǎo)出的。執(zhí)行單元140還接收來(lái)自寄存器或存儲(chǔ)器位置170的輸入,并產(chǎn)生輸出至寄存器或存儲(chǔ)器位置170。
[0028]為了避免混淆描述,已示出和描述了相對(duì)簡(jiǎn)單的指令處理裝置115。應(yīng)當(dāng)理解,其他實(shí)施例可具有超過(guò)一個(gè)執(zhí)行單元。例如,裝置115可包括多個(gè)不同類型的執(zhí)行單元,諸如例如算術(shù)單元、算術(shù)邏輯單元(ALU)、整數(shù)單元、浮點(diǎn)單元等。指令處理裝置或處理器的再其他實(shí)施例可具有多個(gè)核、邏輯處理器或執(zhí)行引擎。稍后將參考圖7-13提供指令處理裝置115的多個(gè)實(shí)施例。
[0029]根據(jù)一個(gè)實(shí)施例,指令處理裝置115包括用于執(zhí)行硬件剖析的性能監(jiān)視硬件110。在指令處理裝置115是多核處理器的情形下,每個(gè)處理器核可包含性能監(jiān)視硬件110的副本。性能監(jiān)視硬件110包括第一級(jí)硬件112和第二級(jí)硬件114。在裝置115接收二進(jìn)制指令流時(shí),第一級(jí)硬件112監(jiān)視這些指令以檢測(cè)這些指令中是否有指令有必要進(jìn)行優(yōu)化(因此有必要進(jìn)行優(yōu)化這些指令的二進(jìn)制轉(zhuǎn)換)。例如,向量展寬是使用二進(jìn)制轉(zhuǎn)換將更早年代的指令集架構(gòu)(ISA)(例如SMD擴(kuò)展(SSE))的向量指令(也稱為打包指令)轉(zhuǎn)換成在更寬的向量寄存器上操作的更新的向量指令(例如高級(jí)向量擴(kuò)展(AVX))的優(yōu)化技術(shù),從而既提高性能又提高每瓦特性能。對(duì)于該二進(jìn)制轉(zhuǎn)換機(jī)會(huì),第一級(jí)硬件112可標(biāo)識(shí)包含大量打包SSE指令的代碼頁(yè)。
[0030]可將指令從一個(gè)ISA 二進(jìn)制轉(zhuǎn)換至執(zhí)行這些指令所針對(duì)的另一 ISA,如上述示例所描述。還可出于存儲(chǔ)器預(yù)取出、分支性能改善、計(jì)算效率增強(qiáng)等等目的對(duì)指令進(jìn)行二進(jìn)制轉(zhuǎn)換,其中二進(jìn)制轉(zhuǎn)換的源和目標(biāo)可針對(duì)同一 ISA。因此,第一級(jí)硬件112可根據(jù)各種各樣的優(yōu)化標(biāo)準(zhǔn)來(lái)檢測(cè)二進(jìn)制轉(zhuǎn)換機(jī)會(huì)。
[0031]當(dāng)?shù)谝患?jí)硬件112檢測(cè)到大量可優(yōu)化的指令時(shí),性能監(jiān)視硬件110標(biāo)識(shí)包含這些指令的代碼頁(yè)。這是由于二進(jìn)制轉(zhuǎn)換的粒度通常是代碼頁(yè)的尺寸(雖然在一些實(shí)施例中二進(jìn)制轉(zhuǎn)換的粒度可以與代碼頁(yè)的尺寸不同),其中代碼頁(yè)的尺寸可以是4K字節(jié)或其它預(yù)定尺寸。性能監(jiān)視硬件110將所標(biāo)識(shí)的代碼頁(yè)的物理地址(即所標(biāo)識(shí)的代碼頁(yè)的基址)發(fā)送至二進(jìn)制轉(zhuǎn)換器120,并請(qǐng)求分配新頁(yè)用于跟蹤所標(biāo)識(shí)代碼頁(yè)的運(yùn)行時(shí)行為。在一個(gè)實(shí)施例中,被跟蹤的運(yùn)行時(shí)行為包括分支頻率和分支目標(biāo)的位置(即分支目標(biāo)在所標(biāo)識(shí)的代碼頁(yè)內(nèi)的偏移量)。通過(guò)與所標(biāo)識(shí)的代碼頁(yè)相關(guān)聯(lián),該新頁(yè)僅保持跟蹤落在該代碼頁(yè)內(nèi)的分支目標(biāo)。(導(dǎo)致這些分支出現(xiàn)的)分支指令可位于該代碼頁(yè)之內(nèi)或在該代碼頁(yè)之外。
[0032]在一個(gè)實(shí)施例中,二進(jìn)制轉(zhuǎn)換器120是一個(gè)軟件,該軟件駐留在系統(tǒng)存儲(chǔ)器125中并與性能監(jiān)視硬件I1直接交互,無(wú)需操作系統(tǒng)的輔助。二進(jìn)制轉(zhuǎn)換器120具有存儲(chǔ)器的頁(yè)集合,這些頁(yè)可被分配用于保持經(jīng)二進(jìn)制轉(zhuǎn)換的代碼。代替在二進(jìn)制轉(zhuǎn)換過(guò)程期間分配頁(yè),當(dāng)由于來(lái)自性能監(jiān)視硬件110的請(qǐng)求而標(biāo)識(shí)代碼頁(yè)以進(jìn)行優(yōu)化時(shí),二進(jìn)制轉(zhuǎn)換器120可分配同一頁(yè)。被分配的頁(yè)可用于保持相關(guān)聯(lián)的代碼頁(yè)的分支統(tǒng)計(jì),并可在稍后重新初始化以保持經(jīng)轉(zhuǎn)換的代碼。因此,分支統(tǒng)計(jì)的跟蹤招致很少或無(wú)存儲(chǔ)器開(kāi)銷。
[0033]在標(biāo)識(shí)給定代碼頁(yè)以進(jìn)行優(yōu)化之后,性能監(jiān)視硬件110陷入二進(jìn)制轉(zhuǎn)換器的運(yùn)行時(shí)層以分配新頁(yè),該新頁(yè)將在稍后保持給定代碼頁(yè)的經(jīng)轉(zhuǎn)換代碼。該新頁(yè)是存儲(chǔ)器中的物理頁(yè),并且被映射至與給定代碼頁(yè)相同的虛擬地址。使用不同的上下文標(biāo)識(shí)符可將新頁(yè)和給定的代碼頁(yè)區(qū)分開(kāi)。在二進(jìn)制轉(zhuǎn)換器120分配該新頁(yè)之后,它將該頁(yè)初始化為零,并將該新頁(yè)的基址(即起始物理地址)記錄在性能監(jiān)視硬件110中的基址寄存器116中。第二級(jí)硬件114然后監(jiān)視目標(biāo)落在該新頁(yè)內(nèi)的所有分支(等價(jià)的跳轉(zhuǎn)或條件指令)。這實(shí)現(xiàn)對(duì)該頁(yè)的分支目標(biāo)的100%覆蓋,從而與通過(guò)統(tǒng)計(jì)采樣的發(fā)現(xiàn)相比,顯著減少了標(biāo)識(shí)目標(biāo)所需的時(shí)間。在一個(gè)實(shí)施例中,該新頁(yè)由第二級(jí)硬件114使用,以作為用于對(duì)落在該給定代碼頁(yè)內(nèi)的分支目標(biāo)的數(shù)量進(jìn)行計(jì)數(shù)的計(jì)數(shù)器的集合。
[0034]圖2是示出被用作計(jì)數(shù)器集合的新頁(yè)200的示例的框圖。針對(duì)代碼頁(yè)210分配該新頁(yè)200。在一個(gè)實(shí)施例中,新頁(yè)220由二進(jìn)制轉(zhuǎn)換器120建立作為計(jì)數(shù)器網(wǎng)格,所有計(jì)數(shù)器都被初始化為零。每個(gè)計(jì)數(shù)器具有相同尺寸,該尺寸不大于ISA中的最短指令(即該ISA的粒度),以簡(jiǎn)化指令與它們相關(guān)聯(lián)的計(jì)數(shù)器之間的映射。對(duì)于x86ISA(由英特爾?Pentium 4處理器、英特爾? Core?處理器、以及來(lái)自加州桑尼維爾市的Advanced MicroDevices公司的處理器實(shí)現(xiàn)),最短指令是一個(gè)字節(jié)。因此,可使用一個(gè)字節(jié)尺寸的計(jì)數(shù)器,使得代碼頁(yè)210內(nèi)的指令處于與新頁(yè)200中的相應(yīng)計(jì)數(shù)器相同的位置。
[0035]圖2中示出的新頁(yè)200是該頁(yè)的簡(jiǎn)化存儲(chǔ)器鏡像,其中每個(gè)方塊表示被用作計(jì)數(shù)器的存儲(chǔ)器字節(jié)。1、7和8的計(jì)數(shù)器值處于與代碼頁(yè)210中的分支目標(biāo)相對(duì)應(yīng)的偏移量處,并進(jìn)一步表示遇到那些分支目標(biāo)的頻率。例如,如果分支目標(biāo)處于代碼頁(yè)210的頁(yè)面偏移量0x12處,則該硬件(圖1的第二級(jí)硬件114)將使新頁(yè)面200偏移量0x12處的字節(jié)計(jì)數(shù)器遞增。在圖2的示例中,示出了分支目標(biāo)BT1具有計(jì)數(shù)器值I,分支目標(biāo)BT2具有計(jì)數(shù)器值7,以及分支目標(biāo)BT3具有計(jì)數(shù)器值8。每個(gè)分支目標(biāo)及其相關(guān)聯(lián)的計(jì)數(shù)器具有在它們的相應(yīng)頁(yè)面中的相同字節(jié)位置(相同偏移)(例如,BT1及其計(jì)數(shù)器位于第7字節(jié)位置處,BT2及其計(jì)數(shù)器位于第18字節(jié)位置處,以及BT3及其計(jì)數(shù)器位于第27字節(jié)位置處)。該計(jì)數(shù)器值表明目標(biāo)處于代碼頁(yè)210的字節(jié)位置中的分支的數(shù)量。例如,新頁(yè)200的第7字節(jié)位置處的計(jì)數(shù)器值I表明有一個(gè)分支目標(biāo)落在相關(guān)聯(lián)的代碼頁(yè)210的第7字節(jié)處。每當(dāng)檢測(cè)到代碼頁(yè)210中的分支(等價(jià)的條件指令或跳轉(zhuǎn))目標(biāo)時(shí),使新頁(yè)200中的相應(yīng)計(jì)數(shù)器加I。
[0036]在一個(gè)實(shí)施例中,字節(jié)計(jì)數(shù)器是8位飽和計(jì)數(shù)器。在執(zhí)行代碼頁(yè)210多個(gè)循環(huán)之后,一些計(jì)數(shù)器可能到達(dá)最大值(例如255)。這些計(jì)數(shù)器是飽和計(jì)數(shù)器,因?yàn)樗鼈儾粫?huì)返回到零,而是保留在最大值,即便在相應(yīng)位置處檢測(cè)到更多跳轉(zhuǎn)。此外,計(jì)數(shù)器值可以是近似的,因?yàn)樽x取、修改、寫(xiě)入的嚴(yán)格的原子語(yǔ)義不是必要的。這允許執(zhí)行計(jì)數(shù)器更新的硬件(例如圖1的第二級(jí)硬件114)具有較不嚴(yán)格的定時(shí)要求,并且因此可更低成本地建立。在一些替代實(shí)施例中,每個(gè)計(jì)數(shù)器可以是I位(布爾值),而不是8位計(jì)數(shù)器。在一些實(shí)施例中,可將這些計(jì)數(shù)器保持在專用存儲(chǔ)中(例如在芯片上),而不是保持在存儲(chǔ)器中。
[0037]二進(jìn)制轉(zhuǎn)換器120可使用分支統(tǒng)計(jì)來(lái)確定如何優(yōu)化代碼頁(yè)210。在所有觀測(cè)到的控制轉(zhuǎn)移的頁(yè)面內(nèi)的偏移量可用于產(chǎn)生正好在這些位置處的進(jìn)入經(jīng)轉(zhuǎn)換頁(yè)的進(jìn)入點(diǎn)。此夕卜,由于二進(jìn)制轉(zhuǎn)換器120已經(jīng)分析了原始的指令,它能夠使用計(jì)數(shù)器來(lái)標(biāo)識(shí)熱點(diǎn)、嵌套循環(huán)以及它們相對(duì)的跳脫(trip)計(jì)數(shù)和基本塊鏈接的共同模式。
[0038]在一個(gè)實(shí)施例中,新頁(yè)200是將被經(jīng)轉(zhuǎn)換代碼覆寫(xiě)的相同頁(yè)。這改善了高速緩存的有效性。二進(jìn)制轉(zhuǎn)換器120可高速緩存計(jì)數(shù)器值數(shù)據(jù),并重新初始化(歸零)新頁(yè)200以存儲(chǔ)經(jīng)轉(zhuǎn)換的代碼。
[0039]在一個(gè)實(shí)施例中,在二進(jìn)制轉(zhuǎn)換器120優(yōu)化并轉(zhuǎn)換代碼頁(yè)210之后,然后將經(jīng)轉(zhuǎn)換的代碼安裝在存儲(chǔ)器中的新頁(yè)200中。當(dāng)代碼執(zhí)行到達(dá)代碼頁(yè)210時(shí),執(zhí)行新頁(yè)200中的經(jīng)轉(zhuǎn)換代碼,而不執(zhí)行代碼頁(yè)210。在常規(guī)系統(tǒng)中,在系統(tǒng)中啟用硬件機(jī)制,使得它檢測(cè)命中虛擬地址(該虛擬地址被分配給所執(zhí)行的上下文)的執(zhí)行。然后將執(zhí)行轉(zhuǎn)移至經(jīng)轉(zhuǎn)換代碼。因此,可僅在該專用的預(yù)定義上下文中執(zhí)行經(jīng)轉(zhuǎn)換代碼。
[0040]在運(yùn)行多個(gè)進(jìn)程或線程的計(jì)算機(jī)系統(tǒng)中,每個(gè)進(jìn)程/線程可在不同的上下文中運(yùn)行,并且可被分配不同的虛擬地址范圍。常常出現(xiàn)以下情況:新上下文執(zhí)行與系統(tǒng)中存在的其它上下文相同的代碼,或新上下文執(zhí)行與系統(tǒng)中先前曾存在的上下文相同的代碼。例如,這在如下情況時(shí)出現(xiàn):同一應(yīng)用或庫(kù)按順序運(yùn)行多次,或應(yīng)用或庫(kù)的多個(gè)實(shí)例同時(shí)執(zhí)行,或兩者兼有。
[0041]根據(jù)一個(gè)實(shí)施例,可在時(shí)間和空間上重新使用經(jīng)轉(zhuǎn)換的代碼。即,對(duì)于并發(fā)運(yùn)行、按順序多次運(yùn)行或兩者兼有的上下文和/或線程,可重復(fù)使用該新頁(yè)200的物理頁(yè)中駐留的相同的經(jīng)轉(zhuǎn)換代碼。
[0042]一般而言,操作系統(tǒng)通過(guò)如下方式優(yōu)化存儲(chǔ)器使用和盤(pán)訪問(wèn):在系統(tǒng)中(在同一處理器核之內(nèi)或在多個(gè)處理器核上)同時(shí)運(yùn)行相同代碼的多個(gè)上下文之間共享物理代碼頁(yè),并在時(shí)間上重新使用同一物理代碼頁(yè),即當(dāng)一個(gè)應(yīng)用或庫(kù)按順序被調(diào)用多次時(shí)。此外,為了提高安全性,操作系統(tǒng)可在不同上下文的不同虛擬地址下映射同一物理代碼頁(yè)(這稱為地址空間布局隨機(jī)化)。在所有這些情況下,可重新使用該代碼的經(jīng)優(yōu)化版本(即經(jīng)轉(zhuǎn)換的代碼),因?yàn)槲锢泶a頁(yè)的內(nèi)容是相同的,并且它駐留在同一物理地址下。
[0043]本申請(qǐng)中描述的實(shí)施例允許經(jīng)優(yōu)化的代碼按照與操作系統(tǒng)重新使用物理代碼頁(yè)的相似方式,在不同上下文上重新使用和/或在不同虛擬地址下被映射。再次參考圖1,當(dāng)性能監(jiān)視硬件110標(biāo)識(shí)有必要用于二進(jìn)制轉(zhuǎn)換的代碼頁(yè)時(shí),它首先將該代碼頁(yè)的物理地址發(fā)送至二進(jìn)制轉(zhuǎn)換器120。在一個(gè)實(shí)施例中,二進(jìn)制轉(zhuǎn)換器120在系統(tǒng)存儲(chǔ)器125中保持先前轉(zhuǎn)換的頁(yè)的歷史。二進(jìn)制轉(zhuǎn)換器120檢查所標(biāo)識(shí)的代碼頁(yè)的物理地址是否已經(jīng)在該歷史中。如果它在歷史中,則意味著該代碼頁(yè)之前已被轉(zhuǎn)換。因此,該二進(jìn)制轉(zhuǎn)換器120可通知性能監(jiān)視硬件110:轉(zhuǎn)換已經(jīng)就位,因此硬件110沒(méi)有必要收集代碼頁(yè)的分支統(tǒng)計(jì)。二進(jìn)制轉(zhuǎn)換器120還可向該硬件返回經(jīng)轉(zhuǎn)換頁(yè)的物理地址,以允許執(zhí)行經(jīng)轉(zhuǎn)換頁(yè)。
[0044]如果代碼頁(yè)被修改,則先前為該代碼頁(yè)產(chǎn)生(在其修改之前)的經(jīng)轉(zhuǎn)換代碼不能再使用,并且必須被停用。在一個(gè)實(shí)施例中,如果相應(yīng)的代碼頁(yè)已被修改,則二進(jìn)制轉(zhuǎn)換器120可在歷史中將先前轉(zhuǎn)換的代碼頁(yè)標(biāo)記為無(wú)效。
[0045]經(jīng)轉(zhuǎn)換代碼是上下文和虛擬地址無(wú)關(guān)的,因此可利用不同的虛擬地址來(lái)執(zhí)行經(jīng)轉(zhuǎn)換代碼。針對(duì)物理地址安裝經(jīng)轉(zhuǎn)換代碼,而不是針對(duì)上下文一虛擬地址對(duì)安裝經(jīng)轉(zhuǎn)換代碼。經(jīng)轉(zhuǎn)換代碼也是位置無(wú)關(guān)的。即,不存在硬編碼的地址;替代地,使用相對(duì)地址。
[0046]圖3示出根據(jù)一個(gè)實(shí)施例的用于微架構(gòu)360的硬件和軟件共同設(shè)計(jì)的運(yùn)行時(shí)二進(jìn)制轉(zhuǎn)換系統(tǒng)的元件。如圖3中所示,該軟件可包括系統(tǒng)存儲(chǔ)器352,該系統(tǒng)存儲(chǔ)器可包括訪客軟件354 (包含代碼頁(yè)310)、操作系統(tǒng)(OS) 355、二進(jìn)制轉(zhuǎn)換器120 (圖1)、查找表350、轉(zhuǎn)換歷史330和新頁(yè)300 (每個(gè)新頁(yè)針對(duì)一個(gè)代碼頁(yè)310而關(guān)聯(lián),以用于保持分支目標(biāo)計(jì)數(shù)器和稍后的經(jīng)轉(zhuǎn)換代碼)。在一個(gè)實(shí)施例中,可利用特定指令集來(lái)編譯代碼頁(yè)310。在一些實(shí)施例中,代碼頁(yè)310可駐留在運(yùn)行于OS 355 (包括運(yùn)行于由虛擬機(jī)管理器所管理的虛擬機(jī)上的另一 OS)上的任何其它軟件中。在一個(gè)實(shí)施例中,代碼頁(yè)310可以是OS 355的部分。查找表350可用于存儲(chǔ)從每個(gè)代碼頁(yè)310的物理地址到相應(yīng)的新頁(yè)300的物理地址的映射。
[0047]二進(jìn)制轉(zhuǎn)換器120和查找表350可以是微架構(gòu)360的軟件元件。微架構(gòu)360進(jìn)一步包括硬件元件,諸如一個(gè)或多個(gè)處理器340。處理器340中的一個(gè)或多個(gè)可包括多個(gè)處理器核380。每個(gè)處理器核380包括性能監(jiān)視硬件110 (圖1)。性能監(jiān)視硬件110包括:用于標(biāo)識(shí)包含可優(yōu)化的指令的代碼頁(yè)的邏輯;用于請(qǐng)求與代碼頁(yè)相關(guān)聯(lián)的新頁(yè)的分配的邏輯;用于檢測(cè)具有位于代碼頁(yè)內(nèi)的分支目標(biāo)的分支指令的邏輯;用于在分支目標(biāo)落在該代碼頁(yè)的相應(yīng)位置內(nèi)時(shí)使計(jì)數(shù)器遞增的邏輯;以及用于將新頁(yè)中的計(jì)數(shù)器值提供給二進(jìn)制轉(zhuǎn)換器以供二進(jìn)制轉(zhuǎn)換的邏輯。
[0048]在一個(gè)實(shí)施例中,處理器340可包括:由新一代處理器所支持的新特征,例如,新特征可包括更寬的寄存器(諸如256位、512位或1024位等等);以及其它特征(例如用于進(jìn)入和退出經(jīng)轉(zhuǎn)換代碼的電路、用于確保轉(zhuǎn)換一致性的電路、用于存儲(chǔ)器消歧的電路、用于原子性支持的電路、用于運(yùn)行時(shí)監(jiān)視微代碼的電路)。微架構(gòu)360的二進(jìn)制轉(zhuǎn)換器120可包括:用于分析代碼頁(yè)310的熱點(diǎn)的邏輯;用于將該代碼頁(yè)的所標(biāo)識(shí)熱點(diǎn)部分轉(zhuǎn)換成得到底層處理器支持的經(jīng)轉(zhuǎn)換代碼的邏輯;以及用于執(zhí)行代碼頁(yè)和經(jīng)轉(zhuǎn)換代碼(包括它們之間的轉(zhuǎn)換)的運(yùn)行時(shí)層。
[0049]圖4是用于執(zhí)行硬件剖析的方法400的示例實(shí)施例的流程框圖。在各實(shí)施例中,方法400可由通用處理器、專用處理器(例如,圖形處理器或數(shù)字信號(hào)處理器)、或另一種類型的數(shù)字邏輯設(shè)備或指令處理裝置執(zhí)行。在一些實(shí)施例中,方法400可由圖1的指令處理裝置115、或類似的處理器、裝置或系統(tǒng)(諸如圖7-13中所示的實(shí)施例)執(zhí)行。而且,圖1的指令處理裝置115以及圖7-13中所示的處理器、裝置或系統(tǒng)可執(zhí)行與圖4的方法400的實(shí)施例相同、類似或不同的操作和方法的實(shí)施例。
[0050]方法400可如下開(kāi)始:硬件(例如圖1的性能監(jiān)視硬件110)在運(yùn)行時(shí)期間標(biāo)識(shí)存儲(chǔ)器中包含潛在可優(yōu)化指令的代碼頁(yè)(框410)。在一個(gè)實(shí)施例中,這些指令可以是計(jì)算密集的指令、來(lái)自較早年代的ISA的指令等等。硬件請(qǐng)求在與該代碼頁(yè)相關(guān)聯(lián)的存儲(chǔ)器中分配新頁(yè)(框420)??稍谶\(yùn)行時(shí)期間發(fā)送該請(qǐng)求,而不中斷被執(zhí)行的指令。新頁(yè)包含計(jì)數(shù)器的集合,并且每個(gè)計(jì)數(shù)器對(duì)應(yīng)于該代碼頁(yè)中的一個(gè)指令。當(dāng)硬件檢測(cè)到分支目標(biāo)落在該代碼頁(yè)內(nèi)的分支指令時(shí)(框430),它使在該新頁(yè)中具有與代碼頁(yè)中的分支目標(biāo)相同位置的計(jì)數(shù)器之一遞增(框440)。重復(fù)該代碼頁(yè)的執(zhí)行,并在分支目標(biāo)落在該代碼頁(yè)之內(nèi)時(shí)使計(jì)數(shù)器遞增(框450)??蓪⒃摯a頁(yè)或包括該代碼頁(yè)的計(jì)算機(jī)程序的執(zhí)行重復(fù)預(yù)定循環(huán)次數(shù)、重復(fù)預(yù)定時(shí)間長(zhǎng)度、或在滿足預(yù)定條件時(shí)重復(fù)。在運(yùn)行時(shí)期間將該新頁(yè)中的計(jì)數(shù)器的值提供給二進(jìn)制轉(zhuǎn)換器以用于二進(jìn)制轉(zhuǎn)換(框460)。在一個(gè)實(shí)施例中,性能監(jiān)視、分支目標(biāo)計(jì)數(shù)以及二進(jìn)制轉(zhuǎn)換都可以在包含該代碼頁(yè)的計(jì)算機(jī)程序正在運(yùn)行時(shí)在運(yùn)行時(shí)執(zhí)行。在代碼頁(yè)經(jīng)過(guò)轉(zhuǎn)換之后,當(dāng)?shù)竭_(dá)該代碼時(shí),系統(tǒng)可自動(dòng)切換至經(jīng)轉(zhuǎn)換代碼,而不中斷對(duì)計(jì)算機(jī)程序的執(zhí)行。
[0051]圖5是用于重新使用經(jīng)轉(zhuǎn)換代碼頁(yè)的方法500的示例實(shí)施例的流程框圖。在各實(shí)施例中,方法500的方法可由通用處理器、專用處理器(例如,圖形處理器或數(shù)字信號(hào)處理器)、或另一種類型的數(shù)字邏輯設(shè)備或指令處理裝置執(zhí)行。在一些實(shí)施例中,方法500可由圖1的指令處理裝置115、或類似的處理器、裝置或系統(tǒng)(諸如圖7-13中所示的實(shí)施例)執(zhí)行。而且,圖1的指令處理裝置115以及圖7-13中所示的處理器、裝置或系統(tǒng)可執(zhí)行與圖5的方法500的實(shí)施例相同、類似或不同的操作和方法的實(shí)施例。
[0052]方法500可如下開(kāi)始:硬件(例如圖1的性能監(jiān)視硬件110)在運(yùn)行時(shí)期間標(biāo)識(shí)包含可被優(yōu)化的指令的代碼頁(yè)(框510,與圖4的框410相同)。在標(biāo)識(shí)代碼頁(yè)之后,性能監(jiān)視硬件HO將標(biāo)識(shí)該代碼頁(yè)的物理地址傳遞給二進(jìn)制轉(zhuǎn)換器120 (框520),以允許二進(jìn)制轉(zhuǎn)換器120確定該代碼頁(yè)先前是否已經(jīng)過(guò)轉(zhuǎn)換。在一個(gè)實(shí)施例中,二進(jìn)制轉(zhuǎn)換器120在轉(zhuǎn)換歷史清單中查找該物理地址,該清單記錄了所有先前經(jīng)轉(zhuǎn)換代碼頁(yè)的物理地址(框530)。二進(jìn)制轉(zhuǎn)換器120將查找結(jié)果傳遞給性能監(jiān)視硬件110 (框540),例如通過(guò)寫(xiě)入寄存器。如果代碼頁(yè)的物理地址在轉(zhuǎn)換歷史的該清單中,則性能監(jiān)視硬件110獲得經(jīng)轉(zhuǎn)換代碼頁(yè)的物理地址并執(zhí)行該經(jīng)轉(zhuǎn)換代碼頁(yè),而不請(qǐng)求分配該新頁(yè)(框550)。另一方面,如果該代碼頁(yè)的物理地址不在該轉(zhuǎn)換歷史的清單中,則性能監(jiān)視硬件110向二進(jìn)制轉(zhuǎn)換器120請(qǐng)求分配新頁(yè)(框560,與圖4的框420相同)。
[0053]圖1的二進(jìn)制轉(zhuǎn)換器120可用作指令優(yōu)化器,其中優(yōu)化的源和目標(biāo)在同一指令集中。在一些實(shí)施例中,指令轉(zhuǎn)換器120可用作用于將指令從源指令集轉(zhuǎn)換至目標(biāo)指令集的指令轉(zhuǎn)換器。例如,指令轉(zhuǎn)換器可以變換(例如使用靜態(tài)二進(jìn)制變換、包括動(dòng)態(tài)編譯的動(dòng)態(tài)二進(jìn)制變換)、變形、仿真或以其它方式將指令轉(zhuǎn)換成將由核來(lái)處理的一個(gè)或多個(gè)其它指令。指令轉(zhuǎn)換器可以用軟件、硬件、固件、或其組合實(shí)現(xiàn)。指令轉(zhuǎn)換器可以在處理器上、在處理器外、或者部分在處理器上且部分在處理器外。
[0054]圖6是根據(jù)本發(fā)明實(shí)施例的將軟件指令轉(zhuǎn)換器的使用進(jìn)行對(duì)比的框圖。在所示的實(shí)施例中,指令轉(zhuǎn)換器是軟件指令轉(zhuǎn)換器,但作為替代,該指令轉(zhuǎn)換器可以用軟件、固件、硬件或其各種組合來(lái)實(shí)現(xiàn)。圖6示出了用高級(jí)語(yǔ)言602的程序可以使用x86編譯器604來(lái)編譯,以生成可以由具有至少一個(gè)x86指令集核的處理器616原生執(zhí)行的x86 二進(jìn)制代碼606。具有至少一個(gè)x86指令集核的處理器616表示任何處理器,這些處理器能通過(guò)兼容地執(zhí)行或以其他方式處理以下內(nèi)容來(lái)執(zhí)行與具有至少一個(gè)x86指令集核的英特爾處理器基本相同的功能:1)英特爾x86指令集核的指令集的本質(zhì)部分,或2)目標(biāo)為在具有至少一個(gè)x86指令集核的英特爾處理器上運(yùn)行的應(yīng)用或其它程序的目標(biāo)代碼版本,以便取得與具有至少一個(gè)x86指令集核的英特爾處理器基本相同的結(jié)果。x86編譯器604表示用于生成x86 二進(jìn)制代碼606(例如,目標(biāo)代碼)的編譯器,該二進(jìn)制代碼可通過(guò)或不通過(guò)附加的鏈接處理在具有至少一個(gè)x86指令集核的處理器616上執(zhí)行。類似地,圖6示出用高級(jí)語(yǔ)言602的程序可以使用替代的指令集編譯器608來(lái)編譯,以生成可以由不具有至少一個(gè)x86指令集核的處理器614 (例如具有執(zhí)行加利福尼亞州桑尼維爾市的MIPS技術(shù)公司的MIPS指令集,和/或執(zhí)行加利福尼亞州桑尼維爾市的ARM控股公司的ARM指令集的核的處理器)來(lái)原生執(zhí)行的替代指令集二進(jìn)制代碼610。指令轉(zhuǎn)換器612被用來(lái)將x86 二進(jìn)制代碼606轉(zhuǎn)換成可以由不具有x86指令集核的處理器614原生執(zhí)行的代碼。該轉(zhuǎn)換后的代碼不大可能與替代性指令集二進(jìn)制代碼610相同,因?yàn)槟軌蜻@樣做的指令轉(zhuǎn)換器難以制造;然而,轉(zhuǎn)換后的代碼將完成一般操作并由來(lái)自替代指令集的指令構(gòu)成。因此,指令轉(zhuǎn)換器612通過(guò)仿真、模擬或任何其它過(guò)程來(lái)表示允許不具有x86指令集處理器或核的處理器或其它電子設(shè)備執(zhí)行x86 二進(jìn)制代碼606的軟件、固件、硬件或其組合。
[0055]示例性核架構(gòu)
[0056]有序和無(wú)序核框圖
[0057]圖7A是示出根據(jù)本發(fā)明的各實(shí)施例的示例性有序流水線和示例性的寄存器重命名的無(wú)序發(fā)布/執(zhí)行流水線的框圖。圖7B是示出根據(jù)本發(fā)明的各實(shí)施例的要包括在處理器中的有序架構(gòu)核的示例性實(shí)施例和示例性的寄存器重命名的無(wú)序發(fā)布/執(zhí)行架構(gòu)核的框圖。圖7A-B中的實(shí)線框示出有序流水線和有序核,而任選增加的虛線框示出寄存器重命名的無(wú)序發(fā)布/執(zhí)行流水線和核。給定有序方面是無(wú)序方面的子集的情況下,將描述無(wú)序方面。
[0058]在圖7A中,處理器流水線700包括取出級(jí)702、長(zhǎng)度解碼級(jí)704、解碼級(jí)706、分配級(jí)708、重命名級(jí)710、調(diào)度(也稱為分派或發(fā)布)級(jí)712、寄存器讀取/存儲(chǔ)器讀取級(jí)714、執(zhí)行級(jí)716、寫(xiě)回/存儲(chǔ)器寫(xiě)入級(jí)718、異常處理級(jí)722和提交級(jí)724。
[0059]圖7B示出了包括耦合到執(zhí)行引擎單元750的前端單元730的處理器核790,且執(zhí)行引擎單元和前端單元兩者都耦合到存儲(chǔ)器單元770。核790可以是精簡(jiǎn)指令集計(jì)算(RISC)核、復(fù)雜指令集計(jì)算(CISC)核、超長(zhǎng)指令字(VLIW)核或混合或替代核類型。作為又一選項(xiàng),核790可以是專用核,諸如例如網(wǎng)絡(luò)或通信核、壓縮引擎、協(xié)處理器核、通用計(jì)算圖形處理器單元(GPGPU)核、或圖形核等等。
[0060]前端單元730包括稱合到指令高速緩存單元734的分支預(yù)測(cè)單元732,該指令高速緩存單元耦合到指令轉(zhuǎn)換后備緩沖器(TLB) 736,該指令轉(zhuǎn)換后備緩沖器耦合到指令取出單元738,指令取出單元耦合到解碼單元740。解碼單元740 (或解碼器)可解碼指令,并生成從原始指令解碼出的、或以其他方式反映原始指令的、或從原始指令導(dǎo)出的一個(gè)或多個(gè)微操作、微代碼進(jìn)入點(diǎn)、微指令、其他指令、或其他控制信號(hào)作為輸出。解碼單元740可使用各種不同的機(jī)制來(lái)實(shí)現(xiàn)。合適的機(jī)制的示例包括但不限于查找表、硬件實(shí)現(xiàn)、可編程邏輯陣列(PLA)、微代碼只讀存儲(chǔ)器(ROM)等。在一個(gè)實(shí)施例中,核790包括(例如,在解碼單元740中或否則在前端單元730內(nèi)的)用于存儲(chǔ)某些宏指令的微代碼的微代碼ROM或其他介質(zhì)。解碼單元740耦合至執(zhí)行引擎單元750中的重命名/分配器單元752。
[0061]執(zhí)行引擎單元750包括重命名/分配器單元752,該重命名/分配器單元耦合至引退單元754和一個(gè)或多個(gè)調(diào)度器單元756的集合。調(diào)度器單元756表示任何數(shù)目的不同調(diào)度器,包括預(yù)留站、中央指令窗等。調(diào)度器單元756耦合到物理寄存器組單元758。每個(gè)物理寄存器組單元758表示一個(gè)或多個(gè)物理寄存器組,其中不同的物理寄存器組存儲(chǔ)一種或多種不同的數(shù)據(jù)類型,諸如標(biāo)量整數(shù)、標(biāo)量浮點(diǎn)、打包整數(shù)、打包浮點(diǎn)、向量整數(shù)、向量浮點(diǎn)、狀態(tài)(例如,作為要執(zhí)行的下一指令的地址的指令指針)等。在一個(gè)實(shí)施例中,物理寄存器組單元758包括向量寄存器單元、寫(xiě)掩碼寄存器單元和標(biāo)量寄存器單元。這些寄存器單元可以提供架構(gòu)向量寄存器、向量掩碼寄存器、和通用寄存器。物理寄存器組單元758與引退單元754重疊以示出可以用來(lái)實(shí)現(xiàn)寄存器重命名和無(wú)序執(zhí)行的各種方式(例如,使用重新排序緩沖器和引退寄存器組;使用將來(lái)的文件、歷史緩沖器和引退寄存器組;使用寄存器映射和寄存器池等等)。引退單元754和物理寄存器組單元758耦合到執(zhí)行群集760。執(zhí)行群集760包括一個(gè)或多個(gè)執(zhí)行單元762的集合和一個(gè)或多個(gè)存儲(chǔ)器訪問(wèn)單元764的集合。執(zhí)行單元762可以對(duì)各種類型的數(shù)據(jù)(例如,標(biāo)量浮點(diǎn)、打包整數(shù)、打包浮點(diǎn)、向量整型、向量浮點(diǎn))執(zhí)行各種操作(例如,移位、加法、減法、乘法)。盡管一些實(shí)施例可以包括專用于特定功能或功能集合的多個(gè)執(zhí)行單元,但其他實(shí)施例可包括全部執(zhí)行所有功能的僅一個(gè)執(zhí)行單元或多個(gè)執(zhí)行單元。調(diào)度器單元756、物理寄存器組單元758和執(zhí)行群集760被示為可能有多個(gè),因?yàn)槟承?shí)施例為某些類型的數(shù)據(jù)/操作創(chuàng)建分開(kāi)的流水線(例如,標(biāo)量整型流水線、標(biāo)量浮點(diǎn)/打包整型/打包浮點(diǎn)/向量整型/向量浮點(diǎn)流水線,和/或各自具有其自己的調(diào)度器單元、物理寄存器組單元和/或執(zhí)行群集的存儲(chǔ)器訪問(wèn)流水線一以及在分開(kāi)的存儲(chǔ)器訪問(wèn)流水線的情況下,實(shí)現(xiàn)其中僅該流水線的執(zhí)行群集具有存儲(chǔ)器訪問(wèn)單元764的某些實(shí)施例)。還應(yīng)當(dāng)理解,在使用分開(kāi)的流水線的情況下,這些流水線中的一個(gè)或多個(gè)可以為無(wú)序發(fā)布/執(zhí)行,并且其余流水線可以為有序發(fā)布/執(zhí)行。
[0062]存儲(chǔ)器訪問(wèn)單元764的集合耦合到存儲(chǔ)器單元770,該存儲(chǔ)器單元包括耦合到數(shù)據(jù)高速緩存單元774的數(shù)據(jù)TLB單元772,其中數(shù)據(jù)高速緩存單元耦合到二級(jí)(L2)高速緩存單元776。在一個(gè)示例性實(shí)施例中,存儲(chǔ)器訪問(wèn)單元764可包括加載單元、存儲(chǔ)地址單元和存儲(chǔ)數(shù)據(jù)單元,其中的每一個(gè)均耦合至存儲(chǔ)器單元770中的數(shù)據(jù)TLB單元772。指令高速緩存單元734還耦合到存儲(chǔ)器單元770中的二級(jí)(L2)高速緩存單元776。L2高速緩存單元776耦合到一個(gè)或多個(gè)其他級(jí)的高速緩存,并最終耦合到主存儲(chǔ)器。
[0063]作為示例,示例性寄存器重命名的、無(wú)序發(fā)布/執(zhí)行核架構(gòu)可以如下實(shí)現(xiàn)流水線700:1)指令取出738執(zhí)行取出和長(zhǎng)度解碼級(jí)702和704 ;2)解碼單元740執(zhí)行解碼級(jí)706 ;3)重命名/分配器單元752執(zhí)行分配級(jí)708和重命名級(jí)710 ;4)調(diào)度器單元756執(zhí)行調(diào)度級(jí)712 ;5)物理寄存器組單元758和存儲(chǔ)器單元770執(zhí)行寄存器讀取/存儲(chǔ)器讀取級(jí)714 ;執(zhí)行群集760執(zhí)行執(zhí)行級(jí)716 ;6)存儲(chǔ)器單元770和物理寄存器組單元758執(zhí)行寫(xiě)回/存儲(chǔ)器寫(xiě)入級(jí)718 ;7)各單元可牽涉到異常處理級(jí)722;以及8)引退單元754和物理寄存器組單元758執(zhí)行提交級(jí)724。
[0064]核790可支持一個(gè)或多個(gè)指令集(例如,x86指令集(具有與較新版本一起添加的一些擴(kuò)展);加利福尼亞州桑尼維爾市的MIPS技術(shù)公司的MIPS指令集;加利福尼州桑尼維爾市的ARM控股的ARM指令集(具有諸如NEON等可選附加擴(kuò)展)),其中包括本文中描述的各指令。在一個(gè)實(shí)施例中,核790包括邏輯以支持打包數(shù)據(jù)指令集擴(kuò)展(例如,SSE, AVXUAVX2等),由此允許許多多媒體應(yīng)用所使用的操作使用打包數(shù)據(jù)來(lái)執(zhí)行。
[0065]應(yīng)當(dāng)理解,核可支持多線程化(執(zhí)行兩個(gè)或更多個(gè)并行的操作或線程的集合),并且可以按各種方式來(lái)完成該多線程化,此各種方式包括時(shí)分多線程化、同步多線程化(其中單個(gè)物理核為物理核正在同步多線程化的各線程中的每一個(gè)線程提供邏輯核)、或其組合(例如,時(shí)分取出和解碼以及此后諸如用InteWD:超線程化技術(shù)來(lái)同步多線程化)。
[0066]盡管在無(wú)序執(zhí)行的上下文中描述了寄存器重命名,但應(yīng)當(dāng)理解,可以在有序架構(gòu)中使用寄存器重命名。盡管所示出的處理器的實(shí)施例還包括分開(kāi)的指令和數(shù)據(jù)高速緩存單元734/774以及共享L2高速緩存單元776,但替代實(shí)施例可以具有用于指令和數(shù)據(jù)兩者的單個(gè)內(nèi)部高速緩存,諸如例如一級(jí)(LI)內(nèi)部高速緩存或多個(gè)級(jí)別的內(nèi)部高速緩存。在一些實(shí)施例中,該系統(tǒng)可包括內(nèi)部高速緩存和在核和/或處理器外部的外部高速緩存的組合?;蛘?,所有高速緩存都可以在核和/或處理器的外部。
[0067]具體的示例性有序核架構(gòu)
[0068]圖8A-B示出了更具體的示例性有序核架構(gòu)的框圖,該核將是芯片中的若干邏輯塊之一(包括相同類型和/或不同類型的其他核)。根據(jù)應(yīng)用,這些邏輯塊通過(guò)高帶寬的互連網(wǎng)絡(luò)(例如,環(huán)形網(wǎng)絡(luò))與一些固定的功能邏輯、存儲(chǔ)器I/o接口和其它必要的I/O邏輯通信。
[0069]圖8A是根據(jù)本發(fā)明的各實(shí)施例的單個(gè)處理器核以及它與管芯上互連網(wǎng)絡(luò)802的連接及其二級(jí)(L2)高速緩存的本地子集804的框圖。在一個(gè)實(shí)施例中,指令解碼器800支持具有打包數(shù)據(jù)指令集擴(kuò)展的x86指令集。LI高速緩存806允許對(duì)進(jìn)入標(biāo)量和向量單元中的高速緩存存儲(chǔ)器的低等待時(shí)間訪問(wèn)。盡管在一個(gè)實(shí)施例中(為了簡(jiǎn)化設(shè)計(jì)),標(biāo)量單元808和向量單元810使用分開(kāi)的寄存器集合(分別為標(biāo)量寄存器812和向量寄存器814),并且在這些寄存器之間轉(zhuǎn)移的數(shù)據(jù)被寫(xiě)入到存儲(chǔ)器并隨后從一級(jí)(LI)高速緩存806讀回,但是本發(fā)明的替代實(shí)施例可以使用不同的方法(例如使用單個(gè)寄存器集合或包括允許數(shù)據(jù)在這兩個(gè)寄存器組之間傳輸而無(wú)需被寫(xiě)入和讀回的通信路徑)。
[0070]L2高速緩存的本地子集804是全局L2高速緩存的一部分,該全局L2高速緩存被劃分成多個(gè)分開(kāi)的本地子集,即每個(gè)處理器核一個(gè)本地子集。每個(gè)處理器核具有到其自己的L2高速緩存804的本地子集的直接訪問(wèn)路徑。被處理器核讀出的數(shù)據(jù)被存儲(chǔ)在其L2高速緩存子集804中,并且可以與其他處理器核訪問(wèn)其自己的本地L2高速緩存子集并行地被快速訪問(wèn)。被處理器核寫(xiě)入的數(shù)據(jù)被存儲(chǔ)在其自己的L2高速緩存子集804中,并在必要的情況下從其它子集清除。環(huán)形網(wǎng)絡(luò)確保共享數(shù)據(jù)的一致性。環(huán)形網(wǎng)絡(luò)是雙向的,以允許諸如處理器核、L2高速緩存和其它邏輯塊之類的代理在芯片內(nèi)彼此通信。每個(gè)環(huán)形數(shù)據(jù)路徑為每個(gè)方向1012位寬。
[0071]圖SB是根據(jù)本發(fā)明的各實(shí)施例的圖8A中的處理器核的一部分的展開(kāi)圖。圖SB包括LI高速緩存804的LI數(shù)據(jù)高速緩存806A部分,以及關(guān)于向量單元810和向量寄存器814的更多細(xì)節(jié)。具體地說(shuō),向量單元810是16寬向量處理單元(VPU)(見(jiàn)16寬ALU 828),該單元執(zhí)行整型、單精度浮點(diǎn)以及雙精度浮點(diǎn)指令中的一個(gè)或多個(gè)。該VPU通過(guò)混合單元820支持對(duì)寄存器輸入的混合、通過(guò)數(shù)值轉(zhuǎn)換單元822A-B支持?jǐn)?shù)值轉(zhuǎn)換、并通過(guò)復(fù)制單元824支持對(duì)存儲(chǔ)器輸入的復(fù)制。寫(xiě)掩碼寄存器826允許斷言所得的向量寫(xiě)入。
[0072]具有集成存儲(chǔ)器控制器和圖形器件的處理器
[0073]圖9是根據(jù)本發(fā)明的實(shí)施例的處理器900的框圖,該處理器可具有一個(gè)以上的核、可具有集成的存儲(chǔ)器控制器、且可具有集成的圖形器件。圖9的實(shí)線框示出了處理器900,該處理器具有單個(gè)核心902A、系統(tǒng)代理910、一組一個(gè)或多個(gè)總線控制器單元916,而可選附加的虛線框示出了替代的處理器900,具有多個(gè)核心902A-N、系統(tǒng)代理單元910中的一組一個(gè)或多個(gè)集成存儲(chǔ)器控制器單元914以及專用邏輯908。
[0074]因此,處理器900的不同實(shí)現(xiàn)可包括:I) CPU,其中專用邏輯908是集成圖形和/或科學(xué)(吞吐量)邏輯(其可包括一個(gè)或多個(gè)核),并且核902A-N是一個(gè)或多個(gè)通用核(例如,通用的有序核、通用的無(wú)序核、這兩者的組合);2)協(xié)處理器,其中核902A-N是旨在主要用于圖形和/或科學(xué)(吞吐量)的多個(gè)專用核;以及3)協(xié)處理器,其中核902A-N是多個(gè)通用有序核。因此,處理器900可以是通用處理器、協(xié)處理器或?qū)S锰幚砥?,諸如例如網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、GPGPU (通用圖形處理單元)、高吞吐量的集成眾核(MIC)協(xié)處理器(包括30個(gè)或更多核)、或嵌入式處理器等。該處理器可以被實(shí)現(xiàn)在一個(gè)或多個(gè)芯片上。處理器900可以是一個(gè)或多個(gè)襯底的一部分,和/或可以使用諸如例如BiCMOS、CMOS或NMOS等的多個(gè)加工技術(shù)中的任何一個(gè)技術(shù)將處理器實(shí)現(xiàn)在一個(gè)或多個(gè)襯底上。
[0075]存儲(chǔ)器層次結(jié)構(gòu)包括在各核內(nèi)的一個(gè)或多個(gè)級(jí)別的高速緩存、一個(gè)或多個(gè)共享高速緩存單元906的集合、以及耦合至集成存儲(chǔ)器控制器單元914的集合的外部存儲(chǔ)器(未示出)。該共享高速緩存單元906的集合可以包括一個(gè)或多個(gè)中間級(jí)高速緩存,諸如二級(jí)(L2)、三級(jí)(L3)、四級(jí)(L4)或其他級(jí)別的高速緩存、末級(jí)高速緩存(LLC)、和/或其組合。盡管在一個(gè)實(shí)施例中,基于環(huán)的互連單元912將集成圖形邏輯908、共享高速緩存單元906的集合以及系統(tǒng)代理單元910/集成存儲(chǔ)器控制器單元914互連,但替代實(shí)施例可使用任何數(shù)量的公知技術(shù)來(lái)將這些單元互連。在一個(gè)實(shí)施例中,可以維護(hù)一個(gè)或多個(gè)高速緩存單元906和核902-A-N之間的一致性(coherency)。
[0076]在一些實(shí)施例中,核902A-N中的一個(gè)或多個(gè)核能夠多線程化。系統(tǒng)代理910包括協(xié)調(diào)和操作核902A-N的那些組件。系統(tǒng)代理單元910可包括例如功率控制單元(P⑶)和顯示單元。PCU可以是或包括用于調(diào)整核902A-N和集成圖形邏輯908的功率狀態(tài)所需的邏輯和組件。顯示單元用于驅(qū)動(dòng)一個(gè)或多個(gè)外部連接的顯示器。
[0077]核902A-N在架構(gòu)指令集方面可以是同構(gòu)的或異構(gòu)的;8卩,這些核902A-N中的兩個(gè)或更多個(gè)核可能能夠執(zhí)行相同的指令集,而其他核可能能夠執(zhí)行該指令集的僅僅子集或不同的指令集。
[0078]示例性計(jì)算機(jī)架構(gòu)
[0079]圖10-13是示例性計(jì)算機(jī)架構(gòu)的框圖。本領(lǐng)域已知的對(duì)膝上型設(shè)備、臺(tái)式機(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í)行邏輯的多個(gè)系統(tǒng)和電子設(shè)備一般都是合適的。
[0080]現(xiàn)在請(qǐng)參看圖10,所示是根據(jù)本發(fā)明的一個(gè)實(shí)施例的系統(tǒng)1000的框圖。系統(tǒng)1000可以包括一個(gè)或多個(gè)處理器1010、1015,這些處理器耦合到控制器中樞1020。在一個(gè)實(shí)施例中,控制器中樞1020包括圖形存儲(chǔ)器控制器中樞(GMCH) 1090和輸入/輸出中樞(1H) 1050(其可以在分開(kāi)的芯片上);GMCH 1090包括存儲(chǔ)器和圖形控制器,存儲(chǔ)器1040和協(xié)處理器1045耦合到該存儲(chǔ)器和圖形控制器;Ι0Η 1050將輸入/輸出(I/O)設(shè)備1060耦合到GMCH 1090?;蛘?,存儲(chǔ)器和圖形控制器中的一個(gè)或兩個(gè)集成在處理器內(nèi)(如本文所述),存儲(chǔ)器1040和協(xié)處理器1045直接耦合到處理器1010和控制器中樞1020,該控制器中樞與1H 1050在單個(gè)芯片中。
[0081]附加處理器1015的任選性質(zhì)用虛線表示在圖10中。每一處理器1010、1015可包括本文中描述的處理核中的一個(gè)或多個(gè),并且可以是處理器900的某一版本。
[0082]存儲(chǔ)器1040可以是例如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、相變存儲(chǔ)器(PCM)或這兩者的組合。對(duì)于至少一個(gè)實(shí)施例,控制器中樞1020經(jīng)由諸如前端總線(FSB)之類的多分支總線、諸如快速通道互連(QPI)之類的點(diǎn)對(duì)點(diǎn)接口、或者類似的連接1095與處理器1010、1015進(jìn)行通信。
[0083]在一個(gè)實(shí)施例中,協(xié)處理器1045是專用處理器,諸如例如高吞吐量MIC處理器、網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、GPGPU、或嵌入式處理器等等。在一個(gè)實(shí)施例中,控制器中樞1020可以包括集成圖形加速器。
[0084]在物理資源1010、1015之間會(huì)存在包括架構(gòu)、微架構(gòu)、熱、和功耗特征等的一系列品質(zhì)度量方面的各種差異。
[0085]在一個(gè)實(shí)施例中,處理器1010執(zhí)行控制一般類型的數(shù)據(jù)處理操作的指令。協(xié)處理器指令可嵌入在這些指令中。處理器1010將這些協(xié)處理器指令識(shí)別為應(yīng)當(dāng)由附連的協(xié)處理器1045執(zhí)行的類型。因此,處理器1010在協(xié)處理器總線或者其他互連上將這些協(xié)處理器指令(或者表示協(xié)處理器指令的控制信號(hào))發(fā)布到協(xié)處理器1045。協(xié)處理器1045接受并執(zhí)行所接收的協(xié)處理器指令。
[0086]現(xiàn)在請(qǐng)參看圖11,所示是根據(jù)本發(fā)明的一個(gè)實(shí)施例的第一更具體的示例性系統(tǒng)1100的框圖。如圖11所示,多處理器系統(tǒng)1100是點(diǎn)對(duì)點(diǎn)互連系統(tǒng),且包括經(jīng)由點(diǎn)對(duì)點(diǎn)互連1150耦合的第一處理器1170和第二處理器1180。處理器1170和1180中的每一個(gè)都可以是處理器900的某一版本。在本發(fā)明的一個(gè)實(shí)施例中,處理器1170和1180分別是處理器1010和1015,而協(xié)處理器1138是協(xié)處理器1045。在另一實(shí)施例中,處理器1170和1180分別是處理器1010和協(xié)處理器1045。
[0087]處理器1170和1180被示為分別包括集成存儲(chǔ)器控制器(MC)單元1172和1182。處理器1170還包括作為其總線控制器單元的一部分的點(diǎn)對(duì)點(diǎn)(P-P)接口 1176和1178 ;類似地,第二處理器1180包括點(diǎn)對(duì)點(diǎn)接口 1186和1188。處理器1170、1180可以使用點(diǎn)對(duì)點(diǎn)(P-P)接口電路1178、1188經(jīng)由P-P接口 1150來(lái)交換信息。如圖11所示,IMC 1172和1182將諸處理器耦合至相應(yīng)的存儲(chǔ)器,即存儲(chǔ)器1132和存儲(chǔ)器1134,這些存儲(chǔ)器可以是本地附連至相應(yīng)的處理器的主存儲(chǔ)器的一部分。
[0088]處理器1170、1180可各自經(jīng)由使用點(diǎn)對(duì)點(diǎn)接口電路1176、1194、1186、1198的各個(gè)P-P接口 1152、1154與芯片組1190交換信息。芯片組1190可以可選地經(jīng)由高性能接口 1139與協(xié)處理器1138交換信息。在一個(gè)實(shí)施例中,協(xié)處理器1138是專用處理器,諸如例如高吞吐量MIC處理器、網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、GPGPU、或嵌入式處理器等等。
[0089]共享高速緩存(未示出)可以被包括在任一處理器之內(nèi),或被包括在兩個(gè)處理器外部但仍經(jīng)由P-P互連與這些處理器連接,從而如果將某處理器置于低功率模式時(shí),可將任一處理器或兩個(gè)處理器的本地高速緩存信息存儲(chǔ)在該共享高速緩存中。
[0090]芯片組1190可經(jīng)由接口 1196耦合至第一總線1116。在一個(gè)實(shí)施例中,第一總線1116可以是外圍組件互連(PCI)總線,或諸如PCI Express總線或其它第三代I/O互連總線之類的總線,但本發(fā)明的范圍并不受此限制。
[0091]如圖11所示,各種I/O設(shè)備1114可以連同總線橋1118耦合到第一總線1116,總線橋1118將第一總線1116耦合至第二總線1120。在一個(gè)實(shí)施例中,諸如協(xié)處理器、高吞吐量MIC處理器、GPGPU的處理器、加速器(諸如例如圖形加速器或數(shù)字信號(hào)處理器(DSP)單元)、現(xiàn)場(chǎng)可編程門(mén)陣列或任何其他處理器的一個(gè)或多個(gè)附加處理器1115被耦合到第一總線1116。在一個(gè)實(shí)施例中,第二總線1120可以是低引腳計(jì)數(shù)(LPC)總線。各種設(shè)備可以被耦合至第二總線1120,在一個(gè)實(shí)施例中這些設(shè)備包括例如鍵盤(pán)/鼠標(biāo)1122、通信設(shè)備1127以及諸如可包括指令/代碼和數(shù)據(jù)1130的盤(pán)驅(qū)動(dòng)器或其它大容量存儲(chǔ)設(shè)備的存儲(chǔ)單元1128。此外,音頻I/O 1124可以被耦合至第二總線1120。注意,其它架構(gòu)是可能的。例如,代替圖11的點(diǎn)對(duì)點(diǎn)架構(gòu),系統(tǒng)可實(shí)現(xiàn)多點(diǎn)總線或者其他此類架構(gòu)。
[0092]現(xiàn)在請(qǐng)參看圖12,所示是根據(jù)本發(fā)明的一個(gè)實(shí)施例的第二更具體的示例性系統(tǒng)1200的框圖。圖11和12中的類似元件使用類似附圖標(biāo)記,且在圖12中省略了圖11的某些方面以避免混淆圖12的其它方面。
[0093]圖12例示了處理器1170、1180可分別包括集成存儲(chǔ)器和I/O控制邏輯(“CL”) 1172和1182。因此,CL 1172、1182包括集成存儲(chǔ)器控制器單元并包括I/O控制邏輯。圖12示出:不僅存儲(chǔ)器1132、1134耦合至CL 1172、1182,I/O設(shè)備1214也耦合至控制邏輯1172、1182。傳統(tǒng)I/O設(shè)備1215被耦合至芯片組1190。
[0094]現(xiàn)在請(qǐng)參看圖13,所示是根據(jù)本發(fā)明的實(shí)施例的SoC 1300的框圖。圖9中的類似元件具有相似的附圖標(biāo)記。另外,虛線框是更先進(jìn)的SoC的可選特征。在圖13中,互連單元1302被耦合至:應(yīng)用處理器1310,該應(yīng)用處理器包括一個(gè)或多個(gè)核202A-N的集合以及共享高速緩存單元906 ;系統(tǒng)代理單元910 ;總線控制器單元916 ;集成存儲(chǔ)器控制器單元914 ;一組或一個(gè)或多個(gè)協(xié)處理器1320,其可包括集成圖形邏輯、圖像處理器、音頻處理器和視頻處理器;靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)單元1330 ;直接存儲(chǔ)器存取(DMA)單元1332 ;以及用于耦合至一個(gè)或多個(gè)外部顯示器的顯示單元1340。在一個(gè)實(shí)施例中,協(xié)處理器1320包括專用處理器,諸如例如網(wǎng)絡(luò)或通信處理器、壓縮引擎、GPGPU、高吞吐量MIC處理器、或嵌入式處理器等等。
[0095]本文公開(kāi)的機(jī)制的各實(shí)施例可以被實(shí)現(xiàn)在硬件、軟件、固件或這些實(shí)現(xiàn)方法的組合中。本發(fā)明的實(shí)施例可實(shí)現(xiàn)為在可編程系統(tǒng)上執(zhí)行的計(jì)算機(jī)程序或程序代碼,該可編程系統(tǒng)包括至少一個(gè)處理器、存儲(chǔ)系統(tǒng)(包括易失性和非易失性存儲(chǔ)器和/或存儲(chǔ)元件)、至少一個(gè)輸入設(shè)備以及至少一個(gè)輸出設(shè)備。
[0096]諸如圖11所示的代碼1130之類的程序代碼可應(yīng)用于輸入指令,以執(zhí)行本文中所描述的功能并生成輸出信息。輸出信息可以按已知方式被應(yīng)用于一個(gè)或多個(gè)輸出設(shè)備。為了本申請(qǐng)的目的,處理系統(tǒng)包括具有諸如例如數(shù)字信號(hào)處理器(DSP)、微控制器、專用集成電路(ASIC)或微處理器之類的處理器的任何系統(tǒng)。
[0097]程序代碼可以用高級(jí)程序化語(yǔ)言或面向?qū)ο蟮木幊陶Z(yǔ)言來(lái)實(shí)現(xiàn),以便與處理系統(tǒng)通信。在需要時(shí),也可用匯編語(yǔ)言或機(jī)器語(yǔ)言來(lái)實(shí)現(xiàn)程序代碼。事實(shí)上,本文中描述的機(jī)制不限于任何特定編程語(yǔ)言的范圍。在任一情形下,該語(yǔ)言可以是編譯語(yǔ)言或解釋語(yǔ)言。
[0098]至少一個(gè)實(shí)施例的一個(gè)或多個(gè)方面可以由存儲(chǔ)在機(jī)器可讀介質(zhì)上的表示性指令來(lái)實(shí)現(xiàn),指令表示處理器中的各種邏輯,指令在被機(jī)器讀取時(shí)使得該機(jī)器制作用于執(zhí)行本文所述的技術(shù)的邏輯。被稱為“IP核”的這些表示可以被存儲(chǔ)在有形的機(jī)器可讀介質(zhì)上,并被提供給多個(gè)客戶或生產(chǎn)設(shè)施以加載到實(shí)際制造該邏輯或處理器的制造機(jī)器中。
[0099]這樣的機(jī)器可讀存儲(chǔ)介質(zhì)可以包括但不限于通過(guò)機(jī)器或設(shè)備制造或形成的物品的非瞬態(tài)的有形安排,其包括存儲(chǔ)介質(zhì),諸如:硬盤(pán);任何其它類型的盤(pán),包括軟盤(pán)、光盤(pán)、緊致盤(pán)只讀存儲(chǔ)器(CD-ROM)、緊致盤(pán)可重寫(xiě)(CD-RW)以及磁光盤(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ì)。
[0100]因此,本發(fā)明的各實(shí)施例還包括非瞬態(tài)的有形機(jī)器可讀介質(zhì),該介質(zhì)包含指令或包含設(shè)計(jì)數(shù)據(jù),諸如硬件描述語(yǔ)言(HDL),它定義本文中描述的結(jié)構(gòu)、電路、裝置、處理器和/或系統(tǒng)特征。這些實(shí)施例也被稱為程序產(chǎn)品。
[0101]雖然已經(jīng)描述并在附圖中示出了特定示例實(shí)施例,但可以理解,這些實(shí)施例僅僅是對(duì)本寬泛發(fā)明的說(shuō)明而非限制,并且本發(fā)明不限于所示出和所描述的特定結(jié)構(gòu)和配置,因?yàn)楸绢I(lǐng)域技術(shù)人員在研究了本公開(kāi)文本之后可以料知到多種其他修改方式。在本【技術(shù)領(lǐng)域】中,因?yàn)榘l(fā)展很快且未來(lái)的進(jìn)步難以預(yù)見(jiàn),所以本公開(kāi)的諸個(gè)實(shí)施例可通過(guò)受益于技術(shù)進(jìn)步而容易地獲得配置和細(xì)節(jié)上的改動(dòng),而不背離本公開(kāi)的原理和所附的權(quán)利要求書(shū)的范圍。
【權(quán)利要求】
1.一種裝置,包括: 一個(gè)或多個(gè)處理器核,所述處理器核中的每一個(gè)包括性能監(jiān)視硬件;以及 高速緩存單元,耦合至所述一個(gè)或多個(gè)核, 其中所述性能監(jiān)視硬件包括邏輯,所述邏輯用于: 標(biāo)識(shí)存儲(chǔ)器中包含潛在能被優(yōu)化的指令的代碼頁(yè); 請(qǐng)求在所述存儲(chǔ)器中分配與所述代碼頁(yè)相關(guān)聯(lián)的新頁(yè),其中所述新頁(yè)包含計(jì)數(shù)器的集合,并且所述計(jì)數(shù)器中的每一個(gè)對(duì)應(yīng)于所述代碼頁(yè)中的指令中的一個(gè); 檢測(cè)具有在所述代碼頁(yè)內(nèi)的分支目標(biāo)的分支指令; 使在所述新頁(yè)中具有與所述代碼頁(yè)中的所述分支目標(biāo)相同的位置的計(jì)數(shù)器之一遞增; 重復(fù)所述代碼頁(yè)的執(zhí)行,并在分支目標(biāo)落在所述代碼頁(yè)之內(nèi)時(shí)使所述計(jì)數(shù)器遞增;以及 將所述新頁(yè)中的所述計(jì)數(shù)器的值提供給二進(jìn)制轉(zhuǎn)換器以用于二進(jìn)制轉(zhuǎn)換。
2.如權(quán)利要求1所述的裝置,其特征在于,所述新頁(yè)被所述二進(jìn)制轉(zhuǎn)換器用于保持從所述代碼頁(yè)轉(zhuǎn)換的代碼,由此替換所述計(jì)數(shù)器的值。
3.如權(quán)利要求2所述的裝置,其特征在于,從所述代碼頁(yè)轉(zhuǎn)換的代碼能在多個(gè)線程之間共享。
4.如權(quán)利要求1所述的裝置,其特征在于,所述性能監(jiān)視硬件還適于: 在標(biāo)識(shí)所述代碼頁(yè)之后,將標(biāo)識(shí)所述代碼頁(yè)的物理地址傳遞給所述二進(jìn)制轉(zhuǎn)換器,由此允許所述二進(jìn)制轉(zhuǎn)換器確定所述代碼頁(yè)之前是否已被轉(zhuǎn)換;以及 響應(yīng)于確定所述代碼頁(yè)之前已被轉(zhuǎn)換,獲得經(jīng)轉(zhuǎn)換的代碼頁(yè)的物理地址并執(zhí)行所述經(jīng)轉(zhuǎn)換的代碼頁(yè),而不請(qǐng)求分配所述新頁(yè)。
5.如權(quán)利要求1所述的裝置,其特征在于,每個(gè)計(jì)數(shù)器的尺寸不大于所述代碼頁(yè)中的指令的粒度。
6.如權(quán)利要求1所述的裝置,其特征在于,所述計(jì)數(shù)器中的每一個(gè)在最大值處飽和,并且不會(huì)返回到零。
7.如權(quán)利要求1所述的裝置,其特征在于,所述代碼頁(yè)被轉(zhuǎn)換成位置無(wú)關(guān)代碼。
8.一種方法,包括: 通過(guò)性能監(jiān)視硬件在運(yùn)行時(shí)期間標(biāo)識(shí)存儲(chǔ)器中包含潛在能被優(yōu)化的指令的代碼頁(yè);請(qǐng)求在所述存儲(chǔ)器中分配與所述代碼頁(yè)相關(guān)聯(lián)的新頁(yè),其中所述新頁(yè)包含計(jì)數(shù)器的集合,并且所述計(jì)數(shù)器中的每一個(gè)對(duì)應(yīng)于所述代碼頁(yè)中的指令中的一個(gè); 檢測(cè)具有在所述代碼頁(yè)內(nèi)的分支目標(biāo)的分支指令; 使在所述新頁(yè)中具有與所述代碼頁(yè)中的所述分支目標(biāo)相同的位置的計(jì)數(shù)器之一遞增; 重復(fù)所述代碼頁(yè)的執(zhí)行,并在分支目標(biāo)落在所述代碼頁(yè)之內(nèi)時(shí)使所述計(jì)數(shù)器遞增;以及 將所述新頁(yè)中的所述計(jì)數(shù)器的值提供給二進(jìn)制轉(zhuǎn)換器以用于二進(jìn)制轉(zhuǎn)換。
9.如權(quán)利要求8所述的方法,其特征在于,所述新頁(yè)被所述二進(jìn)制轉(zhuǎn)換器用于保持從所述代碼頁(yè)轉(zhuǎn)換的代碼,由此替換所述計(jì)數(shù)器的值。
10.如權(quán)利要求9所述的方法,其特征在于,從所述代碼頁(yè)轉(zhuǎn)換的代碼能在多個(gè)線程之間共享。
11.如權(quán)利要求8所述的方法,其特征在于,進(jìn)一步包括: 在標(biāo)識(shí)所述代碼頁(yè)之后,將標(biāo)識(shí)所述代碼頁(yè)的物理地址傳遞給所述二進(jìn)制轉(zhuǎn)換器,由此允許所述二進(jìn)制轉(zhuǎn)換器確定所述代碼頁(yè)之前是否已被轉(zhuǎn)換;以及 響應(yīng)于確定所述代碼頁(yè)之前已被轉(zhuǎn)換,獲得經(jīng)轉(zhuǎn)換的代碼頁(yè)的物理地址并執(zhí)行所述經(jīng)轉(zhuǎn)換的代碼頁(yè),而不請(qǐng)求分配所述新頁(yè)。
12.如權(quán)利要求8所述的方法,其特征在于,每個(gè)計(jì)數(shù)器的尺寸不大于所述代碼頁(yè)中的指令的粒度。
13.如權(quán)利要求8所述的方法,其特征在于,所述計(jì)數(shù)器中的每一個(gè)在最大值處飽和,并且不會(huì)返回到零。
14.如權(quán)利要求8所述的方法,其特征在于,所述代碼頁(yè)被轉(zhuǎn)換成位置無(wú)關(guān)代碼。
15.—種系統(tǒng),包括: 存儲(chǔ)器,用于存儲(chǔ)多個(gè)代碼頁(yè); 耦合至所述存儲(chǔ)器的處理器,所述處理器包括性能監(jiān)視硬件,所述性能監(jiān)視硬件包括邏輯,所述邏輯用于: 在運(yùn)行時(shí)期間標(biāo)識(shí)所述代碼頁(yè)中包含潛在能被優(yōu)化的指令的一個(gè)代碼頁(yè); 請(qǐng)求在所述存儲(chǔ)器中分配與所標(biāo)識(shí)的代碼頁(yè)相關(guān)聯(lián)的新頁(yè),其中所述新頁(yè)包含計(jì)數(shù)器的集合,并且所述計(jì)數(shù)器中的每一個(gè)對(duì)應(yīng)于所標(biāo)識(shí)的代碼頁(yè)中的指令中的一個(gè); 檢測(cè)具有在所標(biāo)識(shí)的代碼頁(yè)內(nèi)的分支目標(biāo)的分支指令; 使在所述新頁(yè)中具有與所標(biāo)識(shí)的代碼頁(yè)中的所述分支目標(biāo)相同的位置的計(jì)數(shù)器之一遞增; 重復(fù)所標(biāo)識(shí)的代碼頁(yè)的執(zhí)行,并在分支目標(biāo)落在所標(biāo)識(shí)的代碼頁(yè)之內(nèi)時(shí)使所述計(jì)數(shù)器遞增;以及 將所述新頁(yè)中的所述計(jì)數(shù)器的值提供給二進(jìn)制轉(zhuǎn)換器以用于二進(jìn)制轉(zhuǎn)換。
16.如權(quán)利要求15所述的系統(tǒng),其特征在于,所述新頁(yè)被所述二進(jìn)制轉(zhuǎn)換器用于保持從所述代碼頁(yè)轉(zhuǎn)換的代碼,由此替換所述計(jì)數(shù)器的值。
17.如權(quán)利要求16所述的系統(tǒng),其特征在于,從所述代碼頁(yè)轉(zhuǎn)換的代碼能在多個(gè)線程之間共享。
18.如權(quán)利要求15所述的系統(tǒng),其特征在于,所述性能監(jiān)視硬件還適于: 在標(biāo)識(shí)所述代碼頁(yè)之后,將標(biāo)識(shí)所述代碼頁(yè)的物理地址傳遞給所述二進(jìn)制轉(zhuǎn)換器,由此允許所述二進(jìn)制轉(zhuǎn)換器確定所述代碼頁(yè)之前是否已被轉(zhuǎn)換;以及 響應(yīng)于確定所述代碼頁(yè)之前已被轉(zhuǎn)換,獲得經(jīng)轉(zhuǎn)換的代碼頁(yè)的物理地址并執(zhí)行所述經(jīng)轉(zhuǎn)換的代碼頁(yè),而不請(qǐng)求分配所述新頁(yè)。
19.如權(quán)利要求15所述的系統(tǒng),其特征在于,所述計(jì)數(shù)器中的每一個(gè)在最大值處飽和,并且不會(huì)返回到零。
20.如權(quán)利要求15所述的系統(tǒng),其特征在于,所述代碼頁(yè)被轉(zhuǎn)換成位置無(wú)關(guān)代碼。
【文檔編號(hào)】G06F13/14GK104205088SQ201280072148
【公開(kāi)日】2014年12月10日 申請(qǐng)日期:2012年3月30日 優(yōu)先權(quán)日:2012年3月30日
【發(fā)明者】P·卡普瑞奧利, M·C·梅爾騰, M·M·艾爾-奧圖姆, O·M·沙克, A·S·卡尼爾, S·斯里尼瓦斯, K·山田, V·薩卡, P·奧斯蔡克 申請(qǐng)人:英特爾公司