用于從多個(gè)股分派指令的處理器邏輯和方法
【專利摘要】一種處理器包括用于執(zhí)行下述操作的邏輯:獲取指令流,所述指令流被劃分為用于在一個(gè)或多個(gè)執(zhí)行端口上加載的多個(gè)股;識(shí)別多個(gè)未決指令;確定哪些股有效;確定每個(gè)未決指令的程序次序;以及基于每個(gè)未決指令的程序次序以及每個(gè)股是否有效將未決指令與執(zhí)行端口進(jìn)行匹配。每個(gè)未決指令位于一個(gè)股的各自的頭。
【專利說明】
用于從多個(gè)股分派指令的處理器邏輯和方法
技術(shù)領(lǐng)域
[0001]本公開涉及處理邏輯、微處理器和關(guān)聯(lián)的指令集架構(gòu)的領(lǐng)域,當(dāng)由處理器或其它處理邏輯執(zhí)行所述關(guān)聯(lián)的指令集架構(gòu)時(shí),所述關(guān)聯(lián)的指令集架構(gòu)執(zhí)行邏輯、數(shù)學(xué)或其它功能操作。【背景技術(shù)】
[0002]多處理器系統(tǒng)正在變得越來越普遍。多處理器系統(tǒng)的應(yīng)用包括動(dòng)態(tài)域分割直至桌上型計(jì)算。為了利用多處理器系統(tǒng),待執(zhí)行的代碼可被分成用于由各種處理實(shí)體執(zhí)行的多個(gè)線程。每個(gè)線程可被彼此并行地執(zhí)行。另外,為了增加處理實(shí)體的效用,可采用無序執(zhí)行。 當(dāng)使這種指令的需要輸入可用時(shí),無序執(zhí)行可執(zhí)行指令。因此,可在較早出現(xiàn)在代碼序列中的指令之前執(zhí)行較晚出現(xiàn)在代碼序列中的指令。【附圖說明】
[0003]在附圖的圖中作為例子而非限制示出實(shí)施例:圖1A是根據(jù)本公開的實(shí)施例的用處理器形成的示例性計(jì)算機(jī)系統(tǒng)的方框圖,所述處理器可包括用于執(zhí)行指令的執(zhí)行單元;圖1B圖示根據(jù)本公開的實(shí)施例的數(shù)據(jù)處理系統(tǒng);圖1C圖示用于執(zhí)行文本串比較操作的數(shù)據(jù)處理系統(tǒng)的其它實(shí)施例;圖2是根據(jù)本公開的實(shí)施例的針對(duì)處理器的微架構(gòu)的方框圖,所述處理器可包括用于執(zhí)行指令的邏輯電路;圖3A圖示根據(jù)本公開的實(shí)施例的多媒體寄存器中的各種壓縮數(shù)據(jù)類型表示;圖3B圖示根據(jù)本公開的實(shí)施例的可能的寄存器內(nèi)數(shù)據(jù)存儲(chǔ)格式;圖3C圖示根據(jù)本公開的實(shí)施例的多媒體寄存器中的各種有符號(hào)和無符號(hào)壓縮數(shù)據(jù)類型表示;圖3D圖示操作編碼格式的實(shí)施例;圖3E圖示根據(jù)本公開的實(shí)施例的具有四十或更多位的另一可能的操作編碼格式;圖3F圖示根據(jù)本公開的實(shí)施例的又一可能的操作編碼格式;圖4A是圖示根據(jù)本公開的實(shí)施例的按順序流水線和寄存器重新命名級(jí)、無序發(fā)出/執(zhí)行流水線的方框圖;圖4B是圖示根據(jù)本公開的實(shí)施例的將要被包括在處理器中的按順序架構(gòu)核和寄存器重新命名邏輯、無序發(fā)出/執(zhí)行邏輯的方框圖;圖5A是根據(jù)本公開的實(shí)施例的處理器的方框圖;圖5B是根據(jù)本公開的實(shí)施例的核的示例性實(shí)現(xiàn)方式的方框圖;圖6是根據(jù)本公開的實(shí)施例的系統(tǒng)的方框圖;圖7是根據(jù)本公開的實(shí)施例的第二系統(tǒng)的方框圖;圖8是根據(jù)本公開的實(shí)施例的第三系統(tǒng)的方框圖;圖9是根據(jù)本公開的實(shí)施例的片上系統(tǒng)的方框圖;圖10圖示根據(jù)本公開的實(shí)施例的可執(zhí)行至少一個(gè)指令的包含中央處理單元和圖形處理單元的處理器;圖11是圖示根據(jù)本公開的實(shí)施例的IP核的開發(fā)的方框圖;圖12圖示根據(jù)本公開的實(shí)施例的第一類型的指令可如何由不同類型的處理器仿真;圖13圖示根據(jù)本公開的實(shí)施例的將使用軟件指令轉(zhuǎn)換器將源指令集中的二進(jìn)制指令轉(zhuǎn)換成目標(biāo)指令集中的二進(jìn)制指令做對(duì)比的方框圖;圖14是根據(jù)本公開的實(shí)施例的處理器的指令集架構(gòu)的方框圖;圖15是根據(jù)本公開的實(shí)施例的處理器的指令集架構(gòu)的更詳細(xì)的方框圖;圖16是根據(jù)本公開的實(shí)施例的針對(duì)處理器的執(zhí)行流水線的方框圖;圖17是根據(jù)本公開的實(shí)施例的用于利用處理器的電子裝置的方框圖;圖18圖示根據(jù)本公開的實(shí)施例的用于分派指令的示例性系統(tǒng);圖19是根據(jù)本公開的實(shí)施例的指令調(diào)度單元的示例性實(shí)施例的圖示;圖20是根據(jù)本公開的實(shí)施例的指令調(diào)度單元的另一圖示;圖21是根據(jù)本公開的實(shí)施例的邏輯矩陣的示例性實(shí)施例和邏輯矩陣模塊的示例性操作的圖示;圖22圖示根據(jù)本公開的實(shí)施例的修改的邏輯矩陣和矩陣操縱器的示例性操作;圖23圖示根據(jù)本公開的實(shí)施例的另一修改的邏輯矩陣和另一矩陣操縱器的示例性操作;圖24圖示根據(jù)本公開的實(shí)施例的又一矩陣操縱器的示例性操作;和圖25圖示根據(jù)本公開的實(shí)施例的用于分派指令的方法的示例性實(shí)施例?!揪唧w實(shí)施方式】
[0004]下面的描述描述用于在處理器、虛擬處理器、封裝、計(jì)算機(jī)系統(tǒng)或其它處理設(shè)備內(nèi)或者結(jié)合處理器、虛擬處理器、封裝、計(jì)算機(jī)系統(tǒng)或其它處理設(shè)備分派指令的指令和處理邏輯。這種處理設(shè)備可包括無序處理器。另外,這種處理設(shè)備可包括多股無序處理器。在下面的描述中,闡述許多特定細(xì)節(jié)(諸如,處理邏輯、處理器類型、微架構(gòu)條件、事件、使能機(jī)構(gòu)等)以便提供對(duì)本公開的實(shí)施例的更徹底的理解。然而,本領(lǐng)域技術(shù)人員將會(huì)領(lǐng)會(huì),可在沒有這種特定細(xì)節(jié)的情況下實(shí)踐實(shí)施例。另外,一些公知結(jié)構(gòu)、電路等未被詳細(xì)地示出以避免不必要地使本公開的實(shí)施例模糊。
[0005]雖然參照處理器描述下面的實(shí)施例,但其它實(shí)施例適用于其它類型的集成電路和邏輯裝置。本公開的實(shí)施例的類似技術(shù)和教導(dǎo)可被應(yīng)用于可受益于更高的流水線吞吐量和提高的性能的其它類型的電路或半導(dǎo)體裝置。本公開的實(shí)施例的教導(dǎo)適用于執(zhí)行數(shù)據(jù)操縱的任何處理器或機(jī)器。然而,實(shí)施例不限于執(zhí)行512位、256位、128位、64位、32位或16位數(shù)據(jù)運(yùn)算的處理器或機(jī)器,并且可被應(yīng)用于可執(zhí)行數(shù)據(jù)的操縱或管理的任何處理器和機(jī)器。另夕卜,下面的描述提供例子,并且附圖為了說明的目的而示出各種例子。然而,這些例子不應(yīng)該在限制性意義上被解釋,因?yàn)樗鼈儍H意圖提供本公開的實(shí)施例的例子,而非提供本公開的實(shí)施例的所有可能的實(shí)現(xiàn)方式的窮舉列表。
[0006]雖然以下的例子描述在執(zhí)行單元和邏輯電路的上下文中的指令處理和分發(fā),但可通過存儲(chǔ)在機(jī)器可讀、有形介質(zhì)上的數(shù)據(jù)或指令來完成本公開的其它實(shí)施例,當(dāng)由機(jī)器執(zhí)行所述數(shù)據(jù)或指令時(shí),所述數(shù)據(jù)或指令使機(jī)器執(zhí)行與本公開的至少一個(gè)實(shí)施例一致的功能。在一個(gè)實(shí)施例中,與本公開的實(shí)施例關(guān)聯(lián)的功能被體現(xiàn)于機(jī)器可執(zhí)行指令。所述指令可被用于使可被利用所述指令編程的通用或?qū)S锰幚砥鲌?zhí)行本公開的步驟。本公開的實(shí)施例可被提供作為計(jì)算機(jī)程序產(chǎn)品或軟件,所述計(jì)算機(jī)程序產(chǎn)品或軟件可包括已存儲(chǔ)有指令的機(jī)器或計(jì)算機(jī)可讀介質(zhì),所述指令可被用于對(duì)計(jì)算機(jī)(或其它電子裝置)進(jìn)行編程以執(zhí)行根據(jù)本公開的實(shí)施例的一個(gè)或多個(gè)操作。另外,本公開的實(shí)施例的步驟可由包含用于執(zhí)行所述步驟的固定功能邏輯的特定硬件部件或由已編程計(jì)算機(jī)部件和固定功能硬件部件的任何組合執(zhí)行。
[0007]用于對(duì)邏輯進(jìn)行編程以執(zhí)行本公開的實(shí)施例的指令可被存儲(chǔ)在系統(tǒng)中的存儲(chǔ)器 (諸如,DRAM、高速緩存、閃存或其它存儲(chǔ)器)內(nèi)。另外,可經(jīng)網(wǎng)絡(luò)或通過其它計(jì)算機(jī)可讀介質(zhì)分發(fā)指令。因此,機(jī)器可讀介質(zhì)可包括用于存儲(chǔ)或傳送具有可由機(jī)器(例如,計(jì)算機(jī))讀取的形式的信息的任何機(jī)構(gòu),但不限于軟盤、光盤、壓縮盤、只讀存儲(chǔ)器(CD-ROM)和磁光盤、只讀存儲(chǔ)器(R0M)、隨機(jī)存取存儲(chǔ)器(RAM)、可擦除可編程只讀存儲(chǔ)器(EPROM)、電可擦除可編程只讀存儲(chǔ)器(EEPR0M)、磁卡或光學(xué)卡、閃存或者在經(jīng)電、光學(xué)、聽覺或其它形式的傳播信號(hào) (例如,載波、紅外信號(hào)、數(shù)字信號(hào)等)通過互聯(lián)網(wǎng)的信息的傳輸中使用的有形、機(jī)器可讀存儲(chǔ)器。因此,計(jì)算機(jī)可讀介質(zhì)可包括適合存儲(chǔ)或傳送具有可由機(jī)器(例如,計(jì)算機(jī))讀取的形式的電子指令或信息的任何類型的有形機(jī)器可讀介質(zhì)。
[0008]設(shè)計(jì)可經(jīng)過從創(chuàng)建到仿真到加工的各種階段。代表設(shè)計(jì)的數(shù)據(jù)可按照許多方式代表設(shè)計(jì)。首先,可使用硬件描述語言或另一功能描述語言表示硬件,這可在模擬中有用。另夕卜,可在設(shè)計(jì)過程的一些階段生產(chǎn)具有邏輯和/或晶體管門的電路級(jí)模型。另外,在某個(gè)階段,設(shè)計(jì)可達(dá)到代表硬件模型中的各種裝置的物理放置的數(shù)據(jù)的水平。在其中使用一些半導(dǎo)體加工技術(shù)的情況下,代表硬件模型的數(shù)據(jù)可以是指定用于生產(chǎn)集成電路的掩模的不同掩模層上的各種特征的存在或不存在的數(shù)據(jù)。在設(shè)計(jì)的任何表示中,數(shù)據(jù)可被存儲(chǔ)在任何形式的機(jī)器可讀介質(zhì)中。存儲(chǔ)器或者磁存儲(chǔ)器或光學(xué)存儲(chǔ)器(諸如,盤)可以是用于存儲(chǔ)經(jīng)為了傳送這種信息而調(diào)制或以其它方式生成的光波或電波傳送的信息的機(jī)器可讀介質(zhì)。當(dāng)傳送指示或攜帶代碼或設(shè)計(jì)的電載波時(shí),就執(zhí)行電信號(hào)的復(fù)制、緩沖或重新傳送而言,可做出新的拷貝。因此,通信提供商或網(wǎng)絡(luò)提供商可在有形、機(jī)器可讀介質(zhì)上至少暫時(shí)地存儲(chǔ)體現(xiàn)本公開的實(shí)施例的技術(shù)的物品,諸如編碼到載波中的信息。
[0009]在現(xiàn)代處理器中,許多不同執(zhí)行單元可被用于處理和執(zhí)行各種代碼和指令。一些指令可較快地完成,而其它指令可花費(fèi)許多時(shí)鐘周期來完成。指令的吞吐量越快,處理器的總體性能越好。因此,使許多指令盡可能快地執(zhí)行將會(huì)是有益的。然而,可存在具有較大復(fù)雜性并且在執(zhí)行時(shí)間和處理器資源方面需要較多執(zhí)行時(shí)間和處理器資源的某些指令,諸如浮點(diǎn)指令、加載/存儲(chǔ)操作、數(shù)據(jù)移動(dòng)等。
[0010]因?yàn)樵诨ヂ?lián)網(wǎng)、文本和多媒體應(yīng)用中使用更多的計(jì)算機(jī)系統(tǒng),所以隨著時(shí)間過去已引入附加的處理器支持。在一個(gè)實(shí)施例中,指令集可與一個(gè)或多個(gè)計(jì)算機(jī)架構(gòu)(包括數(shù)據(jù)類型、指令、寄存器架構(gòu)、尋址模式、存儲(chǔ)器架構(gòu)、中斷和異常處理以及外部輸入和輸出(1/ 0))關(guān)聯(lián)。
[0011]在一個(gè)實(shí)施例中,指令集架構(gòu)(ISA)可由一個(gè)或多個(gè)微架構(gòu)實(shí)現(xiàn),所述微架構(gòu)可包括用于實(shí)現(xiàn)一個(gè)或多個(gè)指令集的處理器邏輯和電路。因此,具有不同微架構(gòu)的處理器可共享共同指令集的至少一部分。例如,Intel? Pentium 4處理器、Intel? Core?處理器和來自Sunnyvale CA的Advanced Micro Devices, Inc的處理器實(shí)現(xiàn)x86指令集的幾乎相同的版本(具有已利用較新版本增加的一些擴(kuò)展),但具有不同的內(nèi)部設(shè)計(jì)。類似地,由其它處理器開發(fā)公司(諸如,ARM Holdings,Ltd.、MIPS或它們的執(zhí)照持有者或采用者)設(shè)計(jì)的處理器可共享共同指令集的至少一部分,但可包括不同的處理器設(shè)計(jì)。例如,可使用新的或公知的技術(shù)在不同微架構(gòu)中以不同方式實(shí)現(xiàn)ISA的相同的寄存器架構(gòu),包括專用物理寄存器、 使用寄存器重新命名機(jī)構(gòu)(例如,使用寄存器別名表(RAT)、重新排序緩沖器(ROB)和退出寄存器文件)的一個(gè)或多個(gè)動(dòng)態(tài)地分配的物理寄存器。在一個(gè)實(shí)施例中,寄存器可包括一個(gè)或多個(gè)寄存器、寄存器架構(gòu)、寄存器文件或可由軟件程序員尋址或者不可由軟件程序員尋址的其它寄存器集合。
[0012]指令可包括一種或多種指令格式。在一個(gè)實(shí)施例中,指令格式可指示各種字段(位的數(shù)量、位的位置等)以尤其指定將要執(zhí)行的操作和將要對(duì)其執(zhí)行該操作的操作數(shù)。在另一實(shí)施例中,一些指令格式可由指令模板(或子格式)進(jìn)一步定義。例如,給定指令格式的指令模板可被定義為具有指令格式的字段的不同子集和/或被定義為具有以不同方式解釋的給定字段。在一個(gè)實(shí)施例中,可使用指令格式(并且如果定義,則在該指令格式的一個(gè)指令模板中)表示指令,并且指定或指示操作和將要對(duì)其執(zhí)行該操作的操作數(shù)。[0〇13] 科學(xué)應(yīng)用、金融應(yīng)用、自動(dòng)向量化通用應(yīng)用、RMS(識(shí)別、挖掘和合成)應(yīng)用以及視覺和多媒體應(yīng)用(例如,2D/3D圖形、圖像處理、視頻壓縮/解壓、語音識(shí)別算法和音頻操縱)可能需要對(duì)大量數(shù)據(jù)項(xiàng)執(zhí)行相同的操作。在一個(gè)實(shí)施例中,單指令多數(shù)據(jù)(SMD)指代使處理器對(duì)多個(gè)數(shù)據(jù)元素執(zhí)行操作的一種類型的指令。SMD技術(shù)可被用在處理器中,所述SMD技術(shù)可在邏輯上將寄存器中的位劃分成許多固定大小或可變大小數(shù)據(jù)元素,每個(gè)數(shù)據(jù)元素代表分離的值。例如,在一個(gè)實(shí)施例中,64位寄存器中的位可以被組織為包含四個(gè)分離的16位數(shù)據(jù)元素的源操作數(shù),每個(gè)數(shù)據(jù)元素代表分離的16位值。這種類型的數(shù)據(jù)可被稱為“壓縮” 數(shù)據(jù)類型或“向量”數(shù)據(jù)類型,并且這個(gè)數(shù)據(jù)類型的操作數(shù)可被稱為壓縮數(shù)據(jù)操作數(shù)或向量操作數(shù)。在一個(gè)實(shí)施例中,壓縮數(shù)據(jù)項(xiàng)或向量可以是單個(gè)寄存器內(nèi)存儲(chǔ)的壓縮數(shù)據(jù)元素的序列,并且壓縮數(shù)據(jù)操作數(shù)或向量操作數(shù)可以是SMD指令(或“壓縮數(shù)據(jù)指令”或“向量指令”)的源操作數(shù)或目的操作數(shù)。在一個(gè)實(shí)施例中,SIMD指令指定對(duì)兩個(gè)源向量操作數(shù)執(zhí)行單個(gè)向量操作以生成相同或不同大小、具有相同或不同數(shù)量的數(shù)據(jù)元素以及具有相同或不同數(shù)據(jù)元素次序的目的向量操作數(shù)(也被稱為結(jié)果向量操作數(shù))。[〇〇14] SHTO技術(shù)(諸如由下面的處理器采用的SMD技術(shù):1ntel ? Core?處理器,具有包括x86、MMX ?、流S頂D擴(kuò)展(SSE)、SSE2、SSE3、SSE4.1和SSE4.2指令的指令集;ARM處理器,諸如具有包括向量浮點(diǎn)(VFP)和/或NEON指令的指令集的處理器的ARM Cortex ?系列;和MIPS 處理器,諸如由Chinese Academy of Sciences的Institute of Computing Technology (ICT)開發(fā)的處理器的Loongson系列)已能夠?qū)崿F(xiàn)應(yīng)用性能的顯著提高(Core?和MMX?是 Santa Clara, Cal if ?的 Intel Corporat1n 的注冊(cè)商標(biāo)或商標(biāo))。
[0015]在一個(gè)實(shí)施例中,目的和源寄存器/數(shù)據(jù)可以是用于代表對(duì)應(yīng)數(shù)據(jù)或操作的源和目的的通用術(shù)語。在一些實(shí)施例中,它們可由寄存器、存儲(chǔ)器或具有與描述的那些名稱或功能不同的名稱或功能的其它存儲(chǔ)區(qū)域?qū)崿F(xiàn)。例如,在一個(gè)實(shí)施例中,“DEST1”可以是臨時(shí)存儲(chǔ)寄存器或其它存儲(chǔ)區(qū)域,而“SRC1”和“SRC2”可以是第一和第二源存儲(chǔ)寄存器或其它存儲(chǔ)區(qū)域等。在其它實(shí)施例中,SRC和DEST存儲(chǔ)區(qū)域中的兩個(gè)或更多個(gè)存儲(chǔ)區(qū)域可對(duì)應(yīng)于同一存儲(chǔ)區(qū)域(例如,SMD寄存器)內(nèi)的不同數(shù)據(jù)存儲(chǔ)元件。在一個(gè)實(shí)施例中,通過例如將對(duì)第一和第二源數(shù)據(jù)執(zhí)行的操作的結(jié)果寫回到用作目的寄存器的兩個(gè)源寄存器之一,源寄存器之一也可用作目的寄存器。
[0016]圖1A是根據(jù)本公開的實(shí)施例的用處理器形成的示例性計(jì)算機(jī)系統(tǒng)的方框圖,所述處理器可包括用于執(zhí)行指令的執(zhí)行單元。根據(jù)本公開(諸如,在本文中描述的實(shí)施例中),系統(tǒng)100可包括諸如處理器102部件,處理器102采用執(zhí)行單元,所述執(zhí)行單元包括用于執(zhí)行用于處理數(shù)據(jù)的算法的邏輯。系統(tǒng)100可代表基于可從Santa Clara, California的Intel Corporat1n商購獲得的PENTIUM? II1、PENTIUM? 4、Xeon ?、Itanium?、XScale ? 和/或 StrongARM?微處理器的處理系統(tǒng),但也可使用其它系統(tǒng)(包括具有其它微處理器的PC、工程工作站、機(jī)頂盒等)。在一個(gè)實(shí)施例中,示例性系統(tǒng)100可執(zhí)行可從Redmond, Washington 的Microsoft Corporat1n商購獲得的WINDOWS TM操作系統(tǒng)的版本,但也可使用其它操作系統(tǒng)(例如,UNIX和Linux)、嵌入式軟件和/或圖形用戶界面。因此,本公開的實(shí)施例不限于硬件電路和軟件的任何特定組合。
[0017]實(shí)施例不限于計(jì)算機(jī)系統(tǒng)。本公開的實(shí)施例可被用在其它裝置(諸如,手持式裝置和嵌入式應(yīng)用)中。手持式裝置的一些例子包括蜂窩電話、互聯(lián)網(wǎng)協(xié)議裝置、數(shù)字照相機(jī)、個(gè)人數(shù)字助手(PDA)和手持式PC。嵌入式應(yīng)用可包括微控制器、數(shù)字信號(hào)處理器(DSP)、片上系統(tǒng)、網(wǎng)絡(luò)計(jì)算機(jī)(NetPC)、機(jī)頂盒、網(wǎng)絡(luò)集線器、廣域網(wǎng)(WAN)交換機(jī)或可執(zhí)行根據(jù)至少一個(gè)實(shí)施例的一個(gè)或多個(gè)指令的任何其它系統(tǒng)。
[0018]計(jì)算機(jī)系統(tǒng)100可包括處理器102,處理器102可包括一個(gè)或多個(gè)執(zhí)行單元108以執(zhí)行用于執(zhí)行根據(jù)本公開的一個(gè)實(shí)施例的至少一個(gè)指令的算法??稍趩翁幚砥髯郎闲陀?jì)算機(jī)或服務(wù)器系統(tǒng)的上下文中描述一個(gè)實(shí)施例,但其它實(shí)施例可被包括在多處理器系統(tǒng)中。系統(tǒng)100可以是“集線器”系統(tǒng)架構(gòu)的例子。系統(tǒng)100可包括用于處理數(shù)據(jù)信號(hào)的處理器102。例如,處理器102可包括復(fù)雜指令集計(jì)算機(jī)(CISC)微處理器、精減指令集計(jì)算(RISC)微處理器、超長指令字(VLIW)微處理器、實(shí)現(xiàn)指令集的組合的處理器或任何其它處理器裝置(諸如,數(shù)字信號(hào)處理器)。在一個(gè)實(shí)施例中,處理器102可被耦合到處理器總線110,處理器總線 110可在處理器102和系統(tǒng)100中的其它部件之間傳送數(shù)據(jù)信號(hào)。系統(tǒng)100的元件可執(zhí)行熟悉本領(lǐng)域的技術(shù)人員公知的傳統(tǒng)功能。
[0019]在一個(gè)實(shí)施例中,處理器102可包括級(jí)1(L1)內(nèi)部高速緩存104。根據(jù)該架構(gòu),處理器102可具有單個(gè)內(nèi)部高速緩存或多級(jí)的內(nèi)部高速緩存。在另一實(shí)施例中,高速緩存可駐留在處理器102外部。根據(jù)特定實(shí)現(xiàn)方式和需要,其它實(shí)施例也可包括內(nèi)部和外部高速緩存二者的組合。寄存器文件106可在各種寄存器(包括整數(shù)寄存器、浮點(diǎn)寄存器、狀態(tài)寄存器和指令指針寄存器)中存儲(chǔ)不同類型的數(shù)據(jù)。
[0020]執(zhí)行單元108(包括用于執(zhí)行整數(shù)和浮點(diǎn)操作的邏輯)也駐留在處理器102中。處理器102還可包括微碼(ucode) R0M,其存儲(chǔ)用于某些宏指令的微碼。在一個(gè)實(shí)施例中,執(zhí)行單元108可包括用于處理壓縮指令集109的邏輯。通過在通用處理器102以及用于執(zhí)行指令的關(guān)聯(lián)的電路的指令集中包括壓縮指令集109,可使用通用處理器102中的壓縮數(shù)據(jù)執(zhí)行由許多多媒體應(yīng)用使用的操作。因此,通過將處理器的數(shù)據(jù)總線的全寬度用于對(duì)壓縮數(shù)據(jù)執(zhí)行操作,許多多媒體應(yīng)用可被更高效地加速和執(zhí)行。這可消除跨越處理器的數(shù)據(jù)總線傳送較小單元的數(shù)據(jù)以便一次對(duì)一個(gè)數(shù)據(jù)元素執(zhí)行一個(gè)或多個(gè)操作的需要。
[0021]執(zhí)行單元108的實(shí)施例也可被用在微控制器、嵌入式處理器、圖形裝置、DSP和其它類型的邏輯電路中。系統(tǒng)100可包括存儲(chǔ)器120。存儲(chǔ)器120可被實(shí)現(xiàn)為動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器 (DRAM)裝置、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)裝置、閃存裝置或其它存儲(chǔ)裝置。存儲(chǔ)器120可存儲(chǔ)由可由處理器102執(zhí)行的數(shù)據(jù)信號(hào)代表的指令和/或數(shù)據(jù)。[〇〇22]系統(tǒng)邏輯芯片116可被耦合到處理器總線110和存儲(chǔ)器120。系統(tǒng)邏輯芯片116可包括存儲(chǔ)控制器集線器(MCH)。處理器102可經(jīng)處理器總線110與MCH 116通信。MCH 116可為存儲(chǔ)器120提供高帶寬存儲(chǔ)器路徑118以用于指令和數(shù)據(jù)存儲(chǔ)并且用于圖形命令、數(shù)據(jù)和紋理的存儲(chǔ)。MCH 116可在處理器102、存儲(chǔ)器120和系統(tǒng)100中的其它部件之間引導(dǎo)數(shù)據(jù)信號(hào),并且在處理器總線110、存儲(chǔ)器120和系統(tǒng)I/O 122之間橋接數(shù)據(jù)信號(hào)。在一些實(shí)施例中,系統(tǒng)邏輯芯片116可提供用于耦合到圖形控制器112的圖形端口。MCH 116可通過存儲(chǔ)器接口 118 而被耦合到存儲(chǔ)器120。圖形卡112可通過加速圖形端口(AGP)互連114而被耦合到MCH 116。 [〇〇23]系統(tǒng)100可使用專有集線器接口總線122將MCH 116耦合到I/O控制器集線器(ICH) 130。在一個(gè)實(shí)施例中,ICH 130可經(jīng)本地I/O總線提供與一些I/O裝置的直接連接。所述本地 I/O總線可包括用于將外圍設(shè)備連接到存儲(chǔ)器120、芯片組和處理器102的高速I/O總線。例子可包括音頻控制器、固件集線器(閃速B1S) 128、無線收發(fā)器126、數(shù)據(jù)儲(chǔ)存器124、包含用戶輸入和鍵盤接口的傳統(tǒng)I/O控制器、串行擴(kuò)展端口(諸如,通用串行總線(USB))和網(wǎng)絡(luò)控制器134。數(shù)據(jù)存儲(chǔ)裝置124可包括硬盤驅(qū)動(dòng)器、軟盤驅(qū)動(dòng)器、CD-ROM裝置、閃存裝置或其它大容量存儲(chǔ)裝置。
[0024]對(duì)于系統(tǒng)的另一實(shí)施例,可與片上系統(tǒng)一起使用根據(jù)一個(gè)實(shí)施例的指令。片上系統(tǒng)的一個(gè)實(shí)施例包括處理器和存儲(chǔ)器。用于一個(gè)這種系統(tǒng)的存儲(chǔ)器可包括閃存。閃存可位于與處理器和其它系統(tǒng)部件相同的管芯上。另外,其它邏輯塊(諸如,存儲(chǔ)控制器或圖形控制器)也可位于片上系統(tǒng)上。[〇〇25]圖1B圖示實(shí)現(xiàn)本公開的實(shí)施例的原理的數(shù)據(jù)處理系統(tǒng)140。本領(lǐng)域技術(shù)人員將會(huì)容易地領(lǐng)會(huì),在不脫離本公開的實(shí)施例的范圍的情況下,本文中描述的實(shí)施例可與替代處理系統(tǒng)一起操作。[〇〇26]計(jì)算機(jī)系統(tǒng)140包括用于執(zhí)行根據(jù)一個(gè)實(shí)施例的至少一個(gè)指令的處理核159。在一個(gè)實(shí)施例中,處理核159代表任何類型的架構(gòu)(包括但不限于CISC、RISC或VLIW類型架構(gòu))的處理單元。處理核159還可適合于一種或多種加工技術(shù)中的制造,并且通過在機(jī)器可讀介質(zhì)上足夠詳細(xì)地表示處理核159,處理核159可適合于促進(jìn)所述制造。[〇〇27] 處理核159包括執(zhí)行單元142、一組寄存器文件145和解碼器144。處理核159還可包括對(duì)于理解本公開的實(shí)施例而言可能不必要的附加的電路(未示出)。執(zhí)行單元142可執(zhí)行由處理核159接收的指令。除了執(zhí)行典型處理器指令之外,執(zhí)行單元142還可執(zhí)行用于對(duì)壓縮數(shù)據(jù)格式執(zhí)行操作的壓縮指令集143中的指令。壓縮指令集143可包括用于執(zhí)行本公開的實(shí)施例的指令和其它壓縮指令。執(zhí)行單元142可通過內(nèi)部總線而被耦合到寄存器文件145。 寄存器文件145可代表用于存儲(chǔ)信息(包括數(shù)據(jù))的處理核159上的存儲(chǔ)區(qū)域。如前所述,應(yīng)該理解,該存儲(chǔ)區(qū)域可存儲(chǔ)可能不重要的壓縮數(shù)據(jù)。執(zhí)行單元142可被耦合到解碼器144。解碼器144可將由處理核159接收的指令解碼成控制信號(hào)和/或微碼入口點(diǎn)。響應(yīng)于這些控制信號(hào)和/或微碼入口點(diǎn),執(zhí)行單元142執(zhí)行適當(dāng)?shù)牟僮?。在一個(gè)實(shí)施例中,解碼器可解釋指令的操作碼,所述操作碼將會(huì)指示應(yīng)該對(duì)在指令內(nèi)指示的對(duì)應(yīng)數(shù)據(jù)執(zhí)行什么操作。
[0028]處理核159可與總線141耦合以與各種其它系統(tǒng)裝置通信,所述各種其它系統(tǒng)裝置可包括但不限于例如同步動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(SDRAM)控制器146、靜態(tài)隨機(jī)存取存儲(chǔ)器 (SRAM)控制器147、突發(fā)閃存接口 148、個(gè)人計(jì)算機(jī)存儲(chǔ)卡國際協(xié)會(huì)(PCMCIA)/壓縮閃存(CF) 卡控制器149、液晶顯示器(IXD)控制器150、直接存儲(chǔ)器存取(DMA)控制器151和替代總線主控器接口 152。在一個(gè)實(shí)施例中,數(shù)據(jù)處理系統(tǒng)140還可包括用于經(jīng)I/O總線153與各種I/O裝置通信的I/O橋154。這種I/O裝置可包括但不限于例如通用異步接收器/發(fā)送器(UART) 155、通用串行總線(USB) 156、藍(lán)牙無線UART 157和I/O擴(kuò)展接口 158。[〇〇29]數(shù)據(jù)處理系統(tǒng)140的一個(gè)實(shí)施例提供移動(dòng)通信、網(wǎng)絡(luò)通信和/或無線通信以及可執(zhí)行S頂D操作(包括文本串比較操作)的處理核159。處理核159可被利用各種音頻、視頻、成像和通信算法編程,所述算法包括:離散變換,諸如Walsh-Hadamard變換、快速傅里葉變換 (FFT)、離散余弦轉(zhuǎn)換(DCT)及其各自的逆變換;壓縮/解壓技術(shù),諸如顏色空間變換、視頻編碼運(yùn)動(dòng)估計(jì)或視頻解碼運(yùn)動(dòng)補(bǔ)償;和調(diào)制/解調(diào)(MODEM)功能,諸如脈沖編碼調(diào)制(PCM)。
[0030]圖1C圖示執(zhí)行snro文本串比較操作的數(shù)據(jù)處理系統(tǒng)的其它實(shí)施例。在一個(gè)實(shí)施例中,數(shù)據(jù)處理系統(tǒng)160可包括主處理器166、snm協(xié)處理器161、高速緩存167和輸入/輸出系統(tǒng)168。輸入/輸出系統(tǒng)168可以可選地被耦合到無線接口 169。S頂D協(xié)處理器161可執(zhí)行包括根據(jù)一個(gè)實(shí)施例的指令的操作。在一個(gè)實(shí)施例中,處理核170可適合于一種或多種加工技術(shù)中的制造,并且通過在機(jī)器可讀介質(zhì)上足夠詳細(xì)地表示處理核170,處理核170可適合于促進(jìn)包括處理核170的數(shù)據(jù)處理系統(tǒng)160的全部或一部分的制造。
[0031]在一個(gè)實(shí)施例中,snm協(xié)處理器161包括執(zhí)行單元162和一組寄存器文件164。主處理器165的一個(gè)實(shí)施例包括解碼器165以識(shí)別用于由執(zhí)行單元162執(zhí)行的指令集163的指令 (包括根據(jù)一個(gè)實(shí)施例的指令)。在其它實(shí)施例中,SIMD協(xié)處理器161還包括用于對(duì)指令集 163的指令進(jìn)行解碼的解碼器165的至少一部分。處理核170還可包括對(duì)于理解本公開的實(shí)施例而言可能不必要的附加的電路(未示出)。[〇〇32] 在操作中,主處理器166執(zhí)行控制通常類型的數(shù)據(jù)處理操作(包括與高速緩存167 和輸入/輸出系統(tǒng)168的交互)的數(shù)據(jù)處理指令的流。嵌入在數(shù)據(jù)處理指令的流內(nèi)的可以是 S頂D協(xié)處理器指令。主處理器166的解碼器165將這些SMD協(xié)處理器指令識(shí)別為具有應(yīng)該由連接的SIMD協(xié)處理器161執(zhí)行的類型。因此,主處理器166在協(xié)處理器總線166上發(fā)出這些 snro協(xié)處理器指令(或代表sn?協(xié)處理器指令的控制信號(hào))。從協(xié)處理器總線166,這些指令可由任何連接的snro協(xié)處理器接收。在這種情況下,snro協(xié)處理器161可接受并且執(zhí)行以它為目的的任何接收的s頂d協(xié)處理器指令。[〇〇33] 可經(jīng)無線接口 169接收數(shù)據(jù)以便由SMD協(xié)處理器指令處理。對(duì)于一個(gè)例子,可按照數(shù)字信號(hào)的形式接收語音通信,所述數(shù)字信號(hào)可由sn?協(xié)處理器指令處理以重新生成代表語音通信的數(shù)字音頻采樣。對(duì)于另一例子,可按照數(shù)字比特流的形式接收壓縮音頻和/或視頻,所述數(shù)字比特流可由SMD協(xié)處理器指令處理以重新生成數(shù)字音頻采樣和/或運(yùn)動(dòng)視頻幀。在處理核170的一個(gè)實(shí)施例中,主處理器166和sn?協(xié)處理器161可被集成到單個(gè)處理核 170中,所述單個(gè)處理核170包括執(zhí)行單元162、一組寄存器文件164和用于識(shí)別指令集163的指令(包括根據(jù)一個(gè)實(shí)施例的指令)的解碼器165。
[0034]圖2是根據(jù)本公開的實(shí)施例的針對(duì)處理器200的微架構(gòu)的方框圖,所述處理器200 可包括用于執(zhí)行指令的邏輯電路。在一些實(shí)施例中,可實(shí)現(xiàn)根據(jù)一個(gè)實(shí)施例的指令以操作具有字節(jié)、字、雙字、四倍字等的大小以及諸如單精度和雙精度整數(shù)和浮點(diǎn)數(shù)據(jù)類型的數(shù)據(jù)類型的數(shù)據(jù)元素。在一個(gè)實(shí)施例中,按順序前端201可實(shí)現(xiàn)處理器200的一部分,其可獲取待執(zhí)行指令并且準(zhǔn)備所述指令以便稍后在處理器流水線中使用。前端201可包括幾個(gè)單元。在一個(gè)實(shí)施例中,指令預(yù)取器226從存儲(chǔ)器獲取指令并且將指令饋送給指令解碼器228,指令解碼器228進(jìn)而對(duì)指令進(jìn)行解碼或解釋。例如,在一個(gè)實(shí)施例中,解碼器將接收的指令解碼成機(jī)器可執(zhí)行的稱為“微指令”或“微操作”(也被稱為micro op或uop)的一個(gè)或多個(gè)操作。 在其它實(shí)施例中,解碼器將指令解析成操作碼和對(duì)應(yīng)數(shù)據(jù),并且控制可由微架構(gòu)使用的字段以執(zhí)行根據(jù)一個(gè)實(shí)施例的操作。在一個(gè)實(shí)施例中,蹤跡高速緩存230可將解碼的uop匯編成uop隊(duì)列234中的程序有序序列或蹤跡以用于執(zhí)行。當(dāng)蹤跡高速緩存230遇到復(fù)雜指令時(shí), 微碼ROM 232提供完成操作所需的uop 〇
[0035]—些指令可被轉(zhuǎn)換成單個(gè)微操作,而其它指令需要幾個(gè)微操作以完成全部操作。 在一個(gè)實(shí)施例中,如果需要超過四個(gè)微操作來完成指令,則解碼器228可訪問微碼ROM 232 以執(zhí)行該指令。在一個(gè)實(shí)施例中,指令可在指令解碼器228被解碼成用于處理的少量的 micro op。在另一實(shí)施例中,如果需要許多微操作來完成操作,則指令可被存儲(chǔ)在微碼ROM 232內(nèi)。蹤跡高速緩存230指代用于確定正確的微指令指針的入口點(diǎn)可編程邏輯陣列(PLA), 所述微指令指針用于從微碼ROM 232讀取用于完成根據(jù)一個(gè)實(shí)施例的一個(gè)或多個(gè)指令的微碼序列。在微碼ROM 232結(jié)束對(duì)用于指令的微操作排序之后,機(jī)器的前端201可再繼續(xù)從蹤跡高速緩存230獲取微操作。
[0036]無序執(zhí)行引擎203可準(zhǔn)備用于執(zhí)行的指令。無序執(zhí)行邏輯具有許多緩沖器以在指令沿著流水線前進(jìn)并且被安排好執(zhí)行時(shí)對(duì)指令流進(jìn)行平滑和重新排序從而優(yōu)化性能。分配器邏輯分配每個(gè)uop為了執(zhí)行而需要的機(jī)器緩沖器和資源。寄存器重新命名邏輯將邏輯寄存器重新命名為寄存器文件中的條目。分配器還在指令調(diào)度器(存儲(chǔ)器調(diào)度器、快速調(diào)度器 202、慢速/ 一般浮點(diǎn)調(diào)度器204和簡(jiǎn)單浮點(diǎn)調(diào)度器206)前面為兩個(gè)uop隊(duì)列(用于存儲(chǔ)操作的一個(gè)uop隊(duì)列并且用于非存儲(chǔ)操作的一個(gè)uop隊(duì)列)中的一個(gè)uop隊(duì)列中的每個(gè)uop分配入口。uop調(diào)度器202、204、206基于它們的相關(guān)輸入寄存器操作數(shù)源的準(zhǔn)備狀態(tài)和uop完成它們的操作所需的執(zhí)行資源的可用性確定uop何時(shí)準(zhǔn)備好執(zhí)行。一個(gè)實(shí)施例的快速調(diào)度器202 可在主時(shí)鐘周期的每半個(gè)時(shí)鐘周期上進(jìn)行調(diào)度,而其它調(diào)度器可僅在每個(gè)主處理器時(shí)鐘周期進(jìn)行一次調(diào)度。調(diào)度器對(duì)分派端口進(jìn)行仲裁以安排執(zhí)行uop。[〇〇37] 寄存器文件208、210可被布置在調(diào)度器202、204、206和執(zhí)行塊211中的執(zhí)行單元 212、214、216、218、220、222、224之間。寄存器文件208、210中的每個(gè)寄存器文件分別執(zhí)行整數(shù)和浮點(diǎn)操作。每個(gè)寄存器文件208、210可包括旁路網(wǎng)絡(luò),所述旁路網(wǎng)絡(luò)可繞過還未被寫到寄存器文件中的剛剛完成的結(jié)果或?qū)⑦€未被寫到寄存器文件中的剛剛完成的結(jié)果轉(zhuǎn)發(fā)給新的相關(guān)的uop。整數(shù)寄存器文件208和浮點(diǎn)寄存器文件210可彼此傳送數(shù)據(jù)。在一個(gè)實(shí)施例中,整數(shù)寄存器文件208可被劃分成兩個(gè)不同的寄存器文件:用于數(shù)據(jù)的低階三十二位的一個(gè)寄存器文件并且用于數(shù)據(jù)的高階三十二位的第二寄存器文件。浮點(diǎn)寄存器文件210可包括128位寬條目,因?yàn)楦↑c(diǎn)指令通常具有從64位到128位寬度的操作數(shù)。
[0038]執(zhí)行塊 211 可包含執(zhí)行單元 212、214、216、218、220、222、224。執(zhí)行單元212、214、216、218、220、222、224可執(zhí)行指令。執(zhí)行塊211可包括寄存器文件208、210,寄存器文件208、 210存儲(chǔ)微指令需要執(zhí)行的整數(shù)和浮點(diǎn)數(shù)據(jù)操作數(shù)值。在一個(gè)實(shí)施例中,處理器200可包括許多執(zhí)行單元:地址生成單元(AGU) 212、AGU 214、快速ALU 216、快速ALU 218、慢速ALU 220、浮點(diǎn)ALU 222、浮點(diǎn)移動(dòng)單元224。在另一實(shí)施例中,浮點(diǎn)執(zhí)行塊222、224可執(zhí)行浮點(diǎn)、 MMX、Snm和SSE或其它操作。在又一實(shí)施例中,浮點(diǎn)ALU 222可包括用于執(zhí)行除法、平方根和余數(shù)微操作的64位乘64位浮點(diǎn)除法器。在各種實(shí)施例中,可利用浮點(diǎn)硬件處理涉及浮點(diǎn)值的指令。在一個(gè)實(shí)施例中,ALU操作可被傳送給高速ALU執(zhí)行單元216、218。高速ALU 216、218 可利用半時(shí)鐘周期的有效延時(shí)執(zhí)行快速操作。在一個(gè)實(shí)施例中,最復(fù)雜的整數(shù)操作前往慢速ALU 220,因?yàn)槁貯LU 220可包括用于長延時(shí)類型的操作的整數(shù)執(zhí)行硬件,諸如乘法器、 移位器、標(biāo)記邏輯和分支處理。存儲(chǔ)器加載/存儲(chǔ)操作可由AGU 212、214執(zhí)行。在一個(gè)實(shí)施例中,整數(shù)ALU 216、218、220可對(duì)64位數(shù)據(jù)操作數(shù)執(zhí)行整數(shù)操作。在其它實(shí)施例中,可實(shí)現(xiàn)ALU 216、218、220以支持各種數(shù)據(jù)位大小(包括十六位、三十二位、128位、256位等)。類似地,可實(shí)現(xiàn)浮點(diǎn)單元222、224以支持具有各種寬度的位的一定范圍的操作數(shù)。在一個(gè)實(shí)施例中,浮點(diǎn)單元222、224可結(jié)合SIMD和多媒體指令對(duì)128位寬壓縮數(shù)據(jù)操作數(shù)進(jìn)行操作。[〇〇39]在一個(gè)實(shí)施例中,uop調(diào)度器202、204、206在父加載已完成執(zhí)行之前分派相關(guān)操作。因?yàn)榭稍谔幚砥?00中以推測(cè)方式安排和執(zhí)行uop,所以處理器200還可包括用于處理存儲(chǔ)器未命中的邏輯。如果數(shù)據(jù)加載在數(shù)據(jù)高速緩存中未命中,則可在流水線中存在為調(diào)度器留下暫時(shí)錯(cuò)誤數(shù)據(jù)的執(zhí)行中的相關(guān)操作。重放機(jī)構(gòu)跟蹤并且重新執(zhí)行使用錯(cuò)誤數(shù)據(jù)的指令。僅相關(guān)操作可能需要被重放,并且獨(dú)立操作可被允許完成。處理器的一個(gè)實(shí)施例的調(diào)度器和重放機(jī)構(gòu)也可被設(shè)計(jì)為捕捉用于文本串比較操作的指令序列。
[0040]術(shù)語“寄存器”可指代可被用作用于識(shí)別操作數(shù)的指令的一部分的板上的處理器存儲(chǔ)位置。換句話說,寄存器可以是可從處理器的外部(從程序員的角度)可用的那些寄存器。然而,在一些實(shí)施例中,寄存器可不局限于特定類型的電路。相反地,寄存器可存儲(chǔ)數(shù)據(jù),提供數(shù)據(jù),并且執(zhí)行本文中描述的功能。本文中描述的寄存器可由處理器內(nèi)的電路使用任何數(shù)量的不同技術(shù)(諸如,專用物理寄存器、使用寄存器重新命名的動(dòng)態(tài)地分配的物理寄存器、專用物理寄存器和動(dòng)態(tài)地分配的物理寄存器的組合等)實(shí)現(xiàn)。在一個(gè)實(shí)施例中,整數(shù)寄存器存儲(chǔ)32位整數(shù)數(shù)據(jù)。一個(gè)實(shí)施例的寄存器文件還包含用于壓縮數(shù)據(jù)的八個(gè)多媒體 snro寄存器。對(duì)于以下的討論,寄存器可被理解為被設(shè)計(jì)為保存壓縮數(shù)據(jù)的數(shù)據(jù)寄存器,諸如能夠利用來自Santa Clara, California的Intel Corporat1n的MMX技術(shù)實(shí)現(xiàn)的微處理器中的64位寬MMX ?寄存器(在一些實(shí)例中,也被稱為“mm”寄存器)。以整數(shù)和浮點(diǎn)二者形式可用的這些MMX寄存器可利用伴隨SHTO和SSE指令的壓縮數(shù)據(jù)元素而操作。類似地,與SSE2、 SSE3、SSE4或以后(通常稱為“SSEx”)的技術(shù)相關(guān)的128位寬XMM寄存器可保存這種壓縮數(shù)據(jù)操作數(shù)。在一個(gè)實(shí)施例中,在存儲(chǔ)壓縮數(shù)據(jù)和整數(shù)數(shù)據(jù)時(shí),寄存器不需要區(qū)分這兩種數(shù)據(jù)類型。在一個(gè)實(shí)施例中,整數(shù)和浮點(diǎn)可被包含在相同寄存器文件或不同寄存器文件中。另外, 在一個(gè)實(shí)施例中,浮點(diǎn)和整數(shù)數(shù)據(jù)可被存儲(chǔ)在不同寄存器或相同寄存器中。
[0041]在下面的附圖的例子中,可描述數(shù)據(jù)操作數(shù)的數(shù)量。圖3A圖示根據(jù)本公開的實(shí)施例的多媒體寄存器中的各種壓縮數(shù)據(jù)類型表示。圖3A圖示針對(duì)128位寬操作數(shù)的壓縮字節(jié) 310、壓縮字320和壓縮雙字(dword) 330的數(shù)據(jù)類型。這個(gè)例子的壓縮字節(jié)格式310可以是128位長的,并且包含十六個(gè)壓縮字節(jié)數(shù)據(jù)元素。字節(jié)可被例如定義為八位的數(shù)據(jù)。針對(duì)每個(gè)字節(jié)數(shù)據(jù)元素的信息可被存儲(chǔ)在針對(duì)字節(jié)〇的位7至位0、針對(duì)字節(jié)1的位15至位8、針對(duì)字節(jié)2的位23至位16中,并且最后被存儲(chǔ)在針對(duì)字節(jié)15的位120至位127中。因此,可在寄存器中使用所有可用位。這種存儲(chǔ)布置增加處理器的存儲(chǔ)效率。同樣,在訪問十六個(gè)數(shù)據(jù)元素的情況下,現(xiàn)在可并行地對(duì)十六個(gè)數(shù)據(jù)元素執(zhí)行一個(gè)操作。
[0042]通常,數(shù)據(jù)元素可包括與相同長度的其它數(shù)據(jù)元素一起存儲(chǔ)在單個(gè)寄存器或存儲(chǔ)位置的各條數(shù)據(jù)。在與SSEx技術(shù)相關(guān)的壓縮數(shù)據(jù)序列中,存儲(chǔ)在XMM寄存器中的數(shù)據(jù)元素的數(shù)量可以是128位除以個(gè)體數(shù)據(jù)元素的以位為單位的長度。類似地,在與MMX和SSE技術(shù)相關(guān)的壓縮數(shù)據(jù)序列中,存儲(chǔ)在MMX寄存器中的數(shù)據(jù)元素的數(shù)量可以是64位除以個(gè)體數(shù)據(jù)元素的以位為單位的長度。雖然圖3A中圖示的數(shù)據(jù)類型可以是128位長的,但本公開的實(shí)施例還可利用64位寬或其它大小的操作數(shù)操作。這個(gè)例子的壓縮字格式320可以是128位長的,并且包含八個(gè)壓縮字?jǐn)?shù)據(jù)元素。每個(gè)壓縮字包含十六位的信息。圖3A的壓縮雙字格式330可以是128位長的,并且包含四個(gè)壓縮雙字?jǐn)?shù)據(jù)元素。每個(gè)壓縮雙字?jǐn)?shù)據(jù)元素包含三十二位的信息。壓縮四倍字可以是128位長的,并且包含兩個(gè)壓縮四倍字?jǐn)?shù)據(jù)元素。[〇〇43]圖3B圖示根據(jù)本公開的實(shí)施例的可能的寄存器內(nèi)數(shù)據(jù)存儲(chǔ)格式。每個(gè)壓縮數(shù)據(jù)可包括超過一個(gè)獨(dú)立數(shù)據(jù)元素。圖示了三種壓縮數(shù)據(jù)格式:壓縮半341、壓縮單342和壓縮雙 343。壓縮半341、壓縮單342和壓縮雙343的一個(gè)實(shí)施例包含定點(diǎn)數(shù)據(jù)元素。對(duì)于另一實(shí)施例,壓縮半341、壓縮單342和壓縮雙343中的一個(gè)或多個(gè)可包含浮點(diǎn)數(shù)據(jù)元素。壓縮半341的一個(gè)實(shí)施例可以是128位長的,包含八個(gè)16位數(shù)據(jù)元素。壓縮單342的一個(gè)實(shí)施例可以是128 位長的,并且包含四個(gè)32位數(shù)據(jù)元素。壓縮雙343的一個(gè)實(shí)施例可以是128位長的,并且包含兩個(gè)64位數(shù)據(jù)元素。將領(lǐng)會(huì)的是,這種壓縮數(shù)據(jù)格式可進(jìn)一步擴(kuò)展至其它寄存器長度,例如,擴(kuò)展至96位、160位、192位、224位、256位或更多位。
[0044]圖3C圖示根據(jù)本公開的實(shí)施例的多媒體寄存器中的各種有符號(hào)和無符號(hào)壓縮數(shù)據(jù)類型表示。無符號(hào)壓縮字節(jié)表示344圖示SHffi寄存器中的無符號(hào)壓縮字節(jié)的存儲(chǔ)。針對(duì)每個(gè)字節(jié)數(shù)據(jù)元素的信息可被存儲(chǔ)在針對(duì)字節(jié)〇的位7至位0、針對(duì)字節(jié)1的位15至位8、針對(duì)字節(jié)2的位23至位16中,并且最后被存儲(chǔ)在針對(duì)字節(jié)15的位120至位127中。因此,可在寄存器中使用所有可用位。這種存儲(chǔ)布置可增加處理器的存儲(chǔ)效率。同樣,在訪問十六個(gè)數(shù)據(jù)元素的情況下,現(xiàn)在可按照并行方式對(duì)十六個(gè)數(shù)據(jù)元素執(zhí)行一個(gè)操作。有符號(hào)壓縮字節(jié)表示345 圖示有符號(hào)壓縮字節(jié)的存儲(chǔ)。需要注意的是,每個(gè)字節(jié)數(shù)據(jù)元素的第八位可以是符號(hào)指示器。無符號(hào)壓縮字表示346圖示字七至字零可如何被存儲(chǔ)在SHffi寄存器中。有符號(hào)壓縮字表示347可類似于無符號(hào)壓縮字寄存器內(nèi)表示346。需要注意的是,每個(gè)字?jǐn)?shù)據(jù)元素的第十六位可以是符號(hào)指示器。無符號(hào)壓縮雙字表示348示出雙字?jǐn)?shù)據(jù)元素被如何存儲(chǔ)。有符號(hào)壓縮雙字表示349可類似于無符號(hào)壓縮雙字寄存器內(nèi)表示348。需要注意的是,必要的符號(hào)位可以是每個(gè)雙字?jǐn)?shù)據(jù)元素的第三十二位。[〇〇45]圖3D圖示操作編碼(操作碼)的實(shí)施例。另外,格式360可包括與在可在萬維網(wǎng) (www)上在intel?com/design/litcentr從Intel Corporat1n, Santa Clara, QV獲f導(dǎo)白勺 “IA-32 Intel Architecture Software Developer’s Manual Volume 2:1nstruct1n Set Reference,”中描述的操作碼格式的類型對(duì)應(yīng)的寄存器/存儲(chǔ)器操作數(shù)尋址模式。在一個(gè)實(shí)施例中,和指令可由字段361和362中的一個(gè)或多個(gè)編碼??勺R(shí)別每個(gè)指令的多達(dá)兩個(gè)操作數(shù)位置,包括多達(dá)兩個(gè)源操作數(shù)標(biāo)識(shí)符364和365。在一個(gè)實(shí)施例中,目的操作數(shù)標(biāo)識(shí)符 366可與源操作數(shù)標(biāo)識(shí)符364相同,而在其它實(shí)施例中,它們可以不同。在另一實(shí)施例中,目的操作數(shù)標(biāo)識(shí)符366可與源操作數(shù)標(biāo)識(shí)符365相同,而在其它實(shí)施例中,它們可以不同。在一個(gè)實(shí)施例中,由源操作數(shù)標(biāo)識(shí)符364和365識(shí)別的源操作數(shù)之一可被文本串比較操作的結(jié)果重寫,而在其它實(shí)施例中,標(biāo)識(shí)符364對(duì)應(yīng)于源寄存器元件并且標(biāo)識(shí)符365對(duì)應(yīng)于目的寄存器元件。在一個(gè)實(shí)施例中,操作數(shù)標(biāo)識(shí)符364和365可識(shí)別32位或64位源操作數(shù)和目的操作數(shù)。
[0046]圖3E圖示根據(jù)本公開的實(shí)施例的具有四十或更多位的另一可能的操作編碼(操作碼)格式370。操作碼格式370對(duì)應(yīng)于操作碼格式360,并且包括可選的前綴字節(jié)378。根據(jù)一個(gè)實(shí)施例的指令可由字段378、371和372中的一個(gè)或多個(gè)字段編碼。每個(gè)指令的多達(dá)兩個(gè)操作數(shù)位置可由源操作數(shù)標(biāo)識(shí)符374和375以及由前綴字節(jié)378識(shí)別。在一個(gè)實(shí)施例中,前綴字節(jié)378可被用于識(shí)別32位或64位源操作數(shù)和目的操作數(shù)。在一個(gè)實(shí)施例中,目的操作數(shù)標(biāo)識(shí)符376可與源操作數(shù)標(biāo)識(shí)符374相同,而在其它實(shí)施例中,它們可以不同。對(duì)于另一實(shí)施例, 目的操作數(shù)標(biāo)識(shí)符376可與源操作數(shù)標(biāo)識(shí)符375相同,而在其它實(shí)施例中,它們可以不同。在一個(gè)實(shí)施例中,指令對(duì)由操作數(shù)標(biāo)識(shí)符374和375識(shí)別的一個(gè)或多個(gè)操作數(shù)進(jìn)行操作,并且由操作數(shù)標(biāo)識(shí)符374和375識(shí)別的一個(gè)或多個(gè)操作數(shù)可被該指令的結(jié)果重寫,而在其它實(shí)施例中,由標(biāo)識(shí)符374和375識(shí)別的操作數(shù)可被寫到另一寄存器中的另一數(shù)據(jù)元素。操作碼格式360和370允許由MOD字段363和373以及由可選的scale-1ndex-base和位移字節(jié)部分地指定的寄存器到寄存器尋址、存儲(chǔ)器到寄存器尋址、寄存器乘存儲(chǔ)器尋址、寄存器乘寄存器尋址、寄存器乘立即尋址、寄存器到存儲(chǔ)器尋址。[〇〇47]圖3F圖示根據(jù)本公開的實(shí)施例的又一可能的操作編碼(操作碼)格式??赏ㄟ^協(xié)處理器數(shù)據(jù)處理(CDP)指令執(zhí)行64位單指令多數(shù)據(jù)(SMD)算術(shù)運(yùn)算。操作編碼(操作碼)格式 380描述具有⑶P操作碼字段382 an0064 389的一個(gè)這種⑶P指令。對(duì)于另一實(shí)施例,⑶P指令操作的類型可由字段383、384、387和388中的一個(gè)或多個(gè)字段編碼??勺R(shí)別每個(gè)指令的多達(dá)三個(gè)操作數(shù)位置,包括多達(dá)兩個(gè)源操作數(shù)標(biāo)識(shí)符385和390以及一個(gè)目的操作數(shù)標(biāo)識(shí)符 386。協(xié)處理器的一個(gè)實(shí)施例可操作八位、十六位、三十二位和64位值。在一個(gè)實(shí)施例中,可對(duì)整數(shù)數(shù)據(jù)元素執(zhí)行指令。在一些實(shí)施例中,可使用條件字段381有條件地執(zhí)行指令。對(duì)于一些實(shí)施例,源數(shù)據(jù)大小可由字段383編碼。在一些實(shí)施例中,可對(duì)SHTO字段執(zhí)行零(Z)、負(fù) (N)、進(jìn)位(C)和溢出(V)檢測(cè)。對(duì)于一些指令,飽和的類型可由字段384編碼。[〇〇48]圖4A是圖示根據(jù)本公開的實(shí)施例的按順序流水線和寄存器重新命名級(jí)、無序發(fā)出/執(zhí)行流水線的方框圖。圖4B是圖示根據(jù)本公開的實(shí)施例的將要被包括在處理器中的按順序架構(gòu)核和寄存器重新命名邏輯、無序發(fā)出/執(zhí)行邏輯的方框圖。圖4A中的實(shí)線框圖示按順序流水線,而虛線框圖示寄存器重新命名、無序發(fā)出/執(zhí)行流水線。類似地,圖4B中的實(shí)線框圖示按順序架構(gòu)邏輯,而虛線框圖示寄存器重新命名邏輯和無序發(fā)出/執(zhí)行邏輯。[〇〇49] 在圖4A中,處理器流水線400可包括獲取級(jí)402、長度解碼級(jí)404、解碼級(jí)406、分配級(jí)408、重新命名級(jí)410、調(diào)度(也被稱為分派或發(fā)出)級(jí)412、寄存器讀取/存儲(chǔ)器讀取級(jí)414、 執(zhí)行級(jí)416、寫回/存儲(chǔ)器寫級(jí)418、異常處理級(jí)422和提交級(jí)424。
[0050]在圖4B中,箭頭表示兩個(gè)或更多個(gè)單元之間的耦合,并且箭頭的方向指示那些單元之間的數(shù)據(jù)流的方向。圖4B示出處理器核490,處理器核490包括耦合到執(zhí)行引擎單元450的前端單元430,并且前端單元430和執(zhí)行引擎單元450都可被耦合到存儲(chǔ)單元470。
[0051]核490可以是精減指令集計(jì)算(RISC)核、復(fù)雜指令集計(jì)算(CISC)核、超長指令字 (VLIW)核或者混合或替代核類型。在一個(gè)實(shí)施例中,核490可以是專用核,諸如例如網(wǎng)絡(luò)或通信核、壓縮引擎、圖形核等。[〇〇52]前端單元430可包括分支預(yù)測(cè)單元432,分支預(yù)測(cè)單元432耦合到指令高速緩存單元434。指令高速緩存單元434可被耦合到指令快速重編址緩沖器(TLB) 436。TLB 436可被親合到指令獲取單元438,指令獲取單元438被親合到解碼單元440。解碼單元440可對(duì)指令進(jìn)行解碼,并且生成可從原始指令解碼、可按照其它方式反映原始指令或可從原始指令獲得的一個(gè)或多個(gè)微操作、微碼入口點(diǎn)、微指令、其它指令或其它控制信號(hào)作為輸出??墒褂酶鞣N不同機(jī)構(gòu)實(shí)現(xiàn)解碼器。合適的機(jī)構(gòu)的例子包括但不限于查找表、硬件實(shí)現(xiàn)方式、可編程邏輯陣列(PLA)、微碼只讀存儲(chǔ)器(ROM)等。在一個(gè)實(shí)施例中,指令高速緩存單元434還可被耦合到存儲(chǔ)單元470中的級(jí)2(L2)高速緩存單元476。解碼單元440可被耦合到執(zhí)行引擎單元 450中的重新命名/分配器單元452。[〇〇53] 執(zhí)行引擎單元450可包括重新命名/分配器單元452,重新命名/分配器單元452耦合到退出單元454和一組的一個(gè)或多個(gè)調(diào)度器單元456。調(diào)度器單元456代表任何數(shù)量的不同調(diào)度器,包括預(yù)約站、中央指令窗口等。調(diào)度器單元456可被耦合到物理寄存器文件單元 458。每個(gè)物理寄存器文件單元458代表一個(gè)或多個(gè)物理寄存器文件,不同的物理寄存器文件存儲(chǔ)一個(gè)或多個(gè)不同數(shù)據(jù)類型,諸如標(biāo)量整數(shù)、標(biāo)量浮點(diǎn)、壓縮整數(shù)、壓縮浮點(diǎn)、向量整數(shù)、向量浮點(diǎn)等、狀態(tài)(例如,作為將要被執(zhí)行的下一個(gè)指令的地址的指令指針)等。物理寄存器文件單元458可與退出單元154交疊以圖示其中可實(shí)現(xiàn)寄存器重新命名和無序執(zhí)行的各種方式(例如,使用一個(gè)或多個(gè)重新排序緩沖器和一個(gè)或多個(gè)退出寄存器文件、使用一個(gè)或多個(gè)未來文件、一個(gè)或多個(gè)歷史緩沖器和一個(gè)或多個(gè)退出寄存器文件;使用寄存器圖和一批寄存器等)。通常,從處理器的外部或從程序員的角度,架構(gòu)寄存器是可見的。寄存器可不局限于任何已知的特定類型的電路。各種不同類型的寄存器可以是合適的,只要它們?nèi)绫疚闹兴龅卮鎯?chǔ)數(shù)據(jù)并且提供數(shù)據(jù)即可。合適的寄存器的例子包括但可能不局限于專用物理寄存器、使用寄存器重新命名的動(dòng)態(tài)地分配的物理寄存器、專用物理寄存器和動(dòng)態(tài)地分配的物理寄存器的組合等。退出單元454和物理寄存器文件單元458可被耦合到執(zhí)行群集 460。執(zhí)行群集460可包括一組的一個(gè)或多個(gè)執(zhí)行單元162和一組的一個(gè)或多個(gè)存儲(chǔ)器訪問單元464。執(zhí)行單元462可對(duì)各種類型的數(shù)據(jù)(例如,標(biāo)量浮點(diǎn)、壓縮整數(shù)、壓縮浮點(diǎn)、向量整數(shù)、向量浮點(diǎn))執(zhí)行各種操作(例如,移位、加法、減法、乘法)。盡管一些實(shí)施例可包括專用于特定功能或功能集合的許多執(zhí)行單元,但其它實(shí)施例可包括全都執(zhí)行所有功能的僅一個(gè)執(zhí)行單元或多個(gè)執(zhí)行單元。調(diào)度器單元456、物理寄存器文件單元458和執(zhí)行群集460被示出為可能是復(fù)數(shù)的,因?yàn)槟承?shí)施例創(chuàng)建用于某些類型的數(shù)據(jù)/操作的不同流水線(例如,標(biāo)量整數(shù)流水線、標(biāo)量浮點(diǎn)/壓縮整數(shù)/壓縮浮點(diǎn)/向量整數(shù)/向量浮點(diǎn)流水線和/或存儲(chǔ)器訪問流水線,每種流水線具有它們自己的調(diào)度器單元、物理寄存器文件單元和/或執(zhí)行群集一一并且在分離的存儲(chǔ)器訪問流水線的情況下,可實(shí)現(xiàn)其中僅這個(gè)流水線的執(zhí)行群集具有存儲(chǔ)器訪問單元464的某些實(shí)施例)。還應(yīng)該理解,在使用分離的流水線的情況下,這些流水線中的一個(gè)或多個(gè)流水線可以是無序發(fā)出/執(zhí)行,并且其余流水線按順序發(fā)出/執(zhí)行。[〇〇54]該組存儲(chǔ)器訪問單元464可被耦合到存儲(chǔ)單元470,存儲(chǔ)單元470可包括數(shù)據(jù)TLB單元472,數(shù)據(jù)TLB單元472親合到數(shù)據(jù)高速緩存單元474,數(shù)據(jù)高速緩存單元474親合到級(jí)2 (L2)高速緩存單元476。在一個(gè)示例性實(shí)施例中,存儲(chǔ)器訪問單元464可包括加載單元、存儲(chǔ)地址單元和存儲(chǔ)數(shù)據(jù)單元,其中的每個(gè)單元可被親合到存儲(chǔ)單元470中的數(shù)據(jù)TLB單元472。 L2高速緩存單元476可被耦合到一個(gè)或多個(gè)其它級(jí)的高速緩存并且最終被耦合到主存儲(chǔ)器。[〇〇55]作為例子,示例性寄存器重新命名、無序發(fā)出/執(zhí)行核架構(gòu)可如下實(shí)現(xiàn)流水線400: 1)指令獲取438可執(zhí)行獲取和長度解碼級(jí)402和404; 2)解碼單元440可執(zhí)行解碼級(jí)406; 3)重新命名/分配器單元452可執(zhí)行分配級(jí)408和重新命名級(jí)410;4)調(diào)度器單元456可執(zhí)行調(diào)度級(jí)412;5)物理寄存器文件單元458和存儲(chǔ)單元470可執(zhí)行寄存器讀取/存儲(chǔ)器讀取級(jí)414;執(zhí)行群集460可執(zhí)行執(zhí)行級(jí)416;6)存儲(chǔ)單元470和物理寄存器文件單元458可執(zhí)行寫回/存儲(chǔ)器寫級(jí)418;7)在異常處理級(jí)422的執(zhí)行中可涉及各種單元;以及8)退出單元454和物理寄存器文件單元458可執(zhí)行提交級(jí)424。[〇〇56]核490可支持一種或多種指令集(例如,x86指令集(具有已利用更新的版本添加的一些擴(kuò)展);Sunnyvale,CA的MIPS Technologies的MIPS指令集;Sunnyvale,CA的ARM Holdings的ARM指令集(具有可選的附加的擴(kuò)展(諸如,NEON)))。
[0057]應(yīng)該理解,核可按照各種方式支持多線程(執(zhí)行兩組或更多組并行的操作或線程)。通過例如包括時(shí)間切片多線程、同時(shí)多線程(其中單個(gè)物理核為物理核同時(shí)以多線程方式執(zhí)行的每個(gè)線程提供邏輯核)或者其組合,可執(zhí)行多線程支持。諸如在Intel ?超線程技術(shù)中,這種組合可包括例如時(shí)間切片獲取和解碼和其后的同時(shí)多線程。[〇〇58]盡管可在無序執(zhí)行的上下文中描述寄存器重新命名,但應(yīng)該理解,可在按順序架構(gòu)中使用寄存器重新命名。盡管圖示的處理器的實(shí)施例也可包括分離的指令和數(shù)據(jù)高速緩存單元434/474以及共享的L2高速緩存單元476,但其它實(shí)施例可具有用于指令和數(shù)據(jù)二者的單個(gè)內(nèi)部高速緩存,諸如例如級(jí)1 (L1)內(nèi)部高速緩存或多級(jí)的內(nèi)部高速緩存。在一些實(shí)施例中,系統(tǒng)可包括內(nèi)部高速緩存和可位于核和/或處理器外部的外部高速緩存的組合。在其它實(shí)施例中,所有的高速緩存可位于核和/或處理器外部。[〇〇59]圖5A是根據(jù)本公開的實(shí)施例的處理器500的方框圖。在一個(gè)實(shí)施例中,處理器500 可包括多核處理器。處理器500可包括通信地耦合到一個(gè)或多個(gè)核502的系統(tǒng)代理510。另夕卜,核502和系統(tǒng)代理510可通信地耦合到一個(gè)或多個(gè)高速緩存506。核502、系統(tǒng)代理510和高速緩存506可經(jīng)一個(gè)或多個(gè)存儲(chǔ)器控制單元552通信地耦合。另外,核502、系統(tǒng)代理510和高速緩存506可經(jīng)存儲(chǔ)器控制單元552通信地耦合到圖形模塊560。
[0060] 處理器500可包括用于將核502、系統(tǒng)代理510和高速緩存506和圖形模塊560互連的任何合適的機(jī)構(gòu)。在一個(gè)實(shí)施例中,處理器500可包括用于將核502、系統(tǒng)代理510和高速緩存506和圖形模塊560互連的基于環(huán)的互連單元508。在其它實(shí)施例中,處理器500可包括用于將這種單元互連的任何數(shù)量的公知技術(shù)?;诃h(huán)的互連單元508可利用存儲(chǔ)器控制單元552以促進(jìn)互連。[〇〇611 處理器500可包括存儲(chǔ)器分級(jí)體系,所述存儲(chǔ)器分級(jí)體系包括核內(nèi)的一個(gè)或多個(gè)級(jí)的高速緩存、一個(gè)或多個(gè)共享高速緩存單元(諸如,高速緩存506)或耦合到該組集成存儲(chǔ)控制器單元552的外部存儲(chǔ)器(未示出)。高速緩存506可包括任何合適的高速緩存。在一個(gè)實(shí)施例中,高速緩存506可包括一個(gè)或多個(gè)中級(jí)高速緩存(諸如,級(jí)2(L2)、級(jí)3(L3)、級(jí)4(L4)或其它級(jí)的高速緩存)、末級(jí)高速緩存(LLC)和/或其組合。[〇〇62]在各種實(shí)施例中,一個(gè)或多個(gè)核502可執(zhí)行多線程。系統(tǒng)代理510可包括用于協(xié)調(diào)和操作核502的部件。系統(tǒng)代理單元510可包括例如功率控制單元(PCUhPCU可以是調(diào)節(jié)核 502的功率狀態(tài)所需的邏輯和部件或者包括調(diào)節(jié)核502的功率狀態(tài)所需的邏輯和部件。系統(tǒng)代理510可包括用于驅(qū)動(dòng)一個(gè)或多個(gè)外部連接的顯示器或圖形模塊560的顯示引擎512。系統(tǒng)代理510可包括針對(duì)用于圖形的通信總線的接口 1214。在一個(gè)實(shí)施例中,可由PCI Express (PCIe)實(shí)現(xiàn)接口 1214。在另一實(shí)施例中,可由PCI Express Graphics (PEG)實(shí)現(xiàn)接口 1214。系統(tǒng)代理510可包括直接媒體接口(DMI) 516。DMI 516可提供母板或計(jì)算機(jī)系統(tǒng)的其它部分上的不同橋之間的鏈路。系統(tǒng)代理510可包括用于向計(jì)算系統(tǒng)的其它元件提供 PCIe鏈路的PCIe橋1218??墒褂么鎯?chǔ)控制器1220和相干邏輯1222實(shí)現(xiàn)PCIe橋1218。[〇〇63]核502可被以任何合適的方式實(shí)現(xiàn)。在架構(gòu)和/或指令集方面,核502可以同構(gòu)或異構(gòu)。在一個(gè)實(shí)施例中,一些核502可以是按順序的,而其它核502可以是無序的。在另一實(shí)施例中,兩個(gè)或更多個(gè)核502可執(zhí)行相同的指令集,而其它核502可僅執(zhí)行該指令集的子集或不同的指令集。
[0064] 處理器500可包括通用處理器,諸如可從San ta C lara,Ca 1 i f的I nt e 1 Corporat1n獲得的Core ? i3、i5、i7、2 雙核和四核、Xeon ?、Itanium ?、XScale ? 或 StrongARM?處理器??蓮牧硪还?諸如,ARM Holdings, Ltd、MIPS等)提供處理器500。處理器500可以是專用處理器,諸如例如網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、協(xié)處理器、嵌入式處理器等。處理器500可被實(shí)現(xiàn)在一個(gè)或多個(gè)芯片上。處理器500可以是一個(gè)或多個(gè)基底的一部分,和/或可使用許多加工技術(shù)(諸如,例如BiCM0S、CM0S或匪0S)中的任何加工技術(shù)而被實(shí)現(xiàn)在一個(gè)或多個(gè)基底上。[〇〇65]在一個(gè)實(shí)施例中,高速緩存506中的給定一個(gè)可由核502中的多個(gè)核共享。在另一實(shí)施例中,高速緩存506中的給定一個(gè)可專用于核502中的一個(gè)??捎筛咚倬彺婵刂破骰蚱渌线m的機(jī)構(gòu)處理將高速緩存506分派給核502。通過實(shí)現(xiàn)給定高速緩存506的時(shí)間分片,高速緩存506中的給定一個(gè)可由兩個(gè)或更多個(gè)核502共享。
[0066]圖形模塊560可實(shí)現(xiàn)集成圖形處理子系統(tǒng)。在一個(gè)實(shí)施例中,圖形模塊560可包括圖形處理器。另外,圖形模塊560可包括媒體引擎565。媒體引擎565可提供媒體編碼和視頻解碼。[〇〇67]圖5B是根據(jù)本公開的實(shí)施例的核502的示例性實(shí)現(xiàn)方式的方框圖。核502可包括通信地耦合到無序引擎580的前端570。核502可通過高速緩存分級(jí)體系503通信地耦合到處理器500的其它部分。[〇〇68]前端570可被以任何合適的方式(諸如,完全地或部分地由如上所述的前端201)實(shí)現(xiàn)。在一個(gè)實(shí)施例中,前端570可通過高速緩存分級(jí)體系503與處理器500的其它部分通信。 在另一實(shí)施例中,前端570可從處理器500的各部分獲取指令,并且準(zhǔn)備當(dāng)指令被傳送給無序執(zhí)行引擎580時(shí)將要稍后在處理器流水線中使用的指令。[〇〇69]無序執(zhí)行引擎580可被以任何合適的方式(諸如,完全地或部分地由如上所述的無序執(zhí)行引擎203)實(shí)現(xiàn)。無序執(zhí)行引擎580可準(zhǔn)備用于執(zhí)行的從前端570接收的指令。無序執(zhí)行引擎580可包括分配模塊1282。在一個(gè)實(shí)施例中,分配模塊1282可分配處理器500的資源或其它資源(諸如,寄存器或緩沖器)以執(zhí)行給定指令。分配模塊1282可在調(diào)度器(諸如,存儲(chǔ)器調(diào)度器、快速調(diào)度器或浮點(diǎn)調(diào)度器)中執(zhí)行分配。這種調(diào)度器可在圖5B中由資源調(diào)度器 584表示。分配模塊12182可完全地或部分地由結(jié)合圖2描述的分配邏輯實(shí)現(xiàn)。資源調(diào)度器 584可基于給定資源的源的準(zhǔn)備狀態(tài)和執(zhí)行指令所需的執(zhí)行資源的可用性確定指令何時(shí)準(zhǔn)備好執(zhí)行。如以上所討論,資源調(diào)度器584可由例如調(diào)度器202、204、206實(shí)現(xiàn)。資源調(diào)度器 584可安排根據(jù)一個(gè)或多個(gè)資源執(zhí)行指令。在一個(gè)實(shí)施例中,這種資源可位于核502內(nèi)部,并且可例如被圖示為資源586。在另一實(shí)施例中,這種資源可位于核502外部,并且可通過例如高速緩存分級(jí)體系503來訪問這種資源。資源可包括例如存儲(chǔ)器、高速緩存、寄存器文件或寄存器。位于核502內(nèi)部的資源可由圖5B中的資源586表示。根據(jù)需要,可通過例如高速緩存分級(jí)體系503與處理器500的其它部分協(xié)調(diào)寫到資源586或從資源586讀取的值。當(dāng)指令被分派資源時(shí),它們可被放置在重新排序緩沖器588中。重新排序緩沖器588可在指令被執(zhí)行時(shí)跟蹤指令,并且可基于處理器500的任何合適的準(zhǔn)則選擇性地對(duì)它們的執(zhí)行進(jìn)行重新排序。 在一個(gè)實(shí)施例中,重新排序緩沖器588可識(shí)別可被獨(dú)立地執(zhí)行的指令或一系列指令。可與其它這種指令并行地執(zhí)行這種指令或一系列指令。核502中的并行執(zhí)行可由任何合適的數(shù)量的分離的執(zhí)行塊或虛擬處理器執(zhí)行。在一個(gè)實(shí)施例中,給定核502內(nèi)的多個(gè)虛擬處理器可訪問共享資源——諸如存儲(chǔ)器、寄存器和高速緩存。在其它實(shí)施例中,處理器500內(nèi)的多個(gè)處理實(shí)體可訪問共享資源。
[0070]高速緩存分級(jí)體系503可被以任何合適的方式實(shí)現(xiàn)。例如,高速緩存分級(jí)體系503 可包括一個(gè)或多個(gè)低級(jí)或中級(jí)高速緩存,諸如高速緩存572、574。在一個(gè)實(shí)施例中,高速緩存分級(jí)體系503可包括通信地耦合到高速緩存572、574的LLC 595。在另一實(shí)施例中,可在處理器500的所有處理實(shí)體可訪問的模塊590中實(shí)現(xiàn)LLC 595。在另一實(shí)施例中,可在來自 Intel公司的處理器的無核模塊中實(shí)現(xiàn)模塊590。模塊590可包括核502的執(zhí)行所需的處理器 500的一部分或子系統(tǒng),但可不被實(shí)現(xiàn)在核502內(nèi)。除了LLC 595之外,模塊590可包括例如硬件接口、存儲(chǔ)器相干協(xié)調(diào)器、處理器間互連件、指令流水線或存儲(chǔ)控制器。可通過模塊590 (并且更具體地講,LLC 595)做出對(duì)處理器500可用的RAM 599的訪問。另外,核502的其它實(shí)例可類似地訪問模塊590??刹糠值赝ㄟ^模塊590促進(jìn)核502的實(shí)例的協(xié)調(diào)。[〇〇71]圖6-8可圖示適合于包括處理器500的示例性系統(tǒng),而圖9可圖示可包括一個(gè)或多個(gè)核502的示例性片上系統(tǒng)(SoC)。針對(duì)膝上型計(jì)算機(jī)、桌上型計(jì)算機(jī)、手持式PC、個(gè)人數(shù)字助手、工程工作站、服務(wù)器、網(wǎng)絡(luò)裝置、網(wǎng)絡(luò)集線器、交換機(jī)、嵌入式處理器、數(shù)字信號(hào)處理器 (DSP)、圖形裝置、視頻游戲裝置、機(jī)頂盒、微控制器、蜂窩電話、便攜式媒體播放器、手持式裝置和各種其它電子裝置的領(lǐng)域中已知的其它系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)方式也可以是合適的。通常,合并如本文中所公開的處理器和/或其它執(zhí)行邏輯的多種系統(tǒng)或電子裝置可通常是合適的。[0〇72]圖6圖不根據(jù)本公開的實(shí)施例的系統(tǒng)600的方框圖。系統(tǒng)600可包括一個(gè)或多個(gè)處理器610、615,所述一個(gè)或多個(gè)處理器610、615可被耦合到圖形存儲(chǔ)控制器集線器(GMCH) 620。在圖6中利用虛線表示附加的處理器615的可選的性質(zhì)。[〇〇73] 每個(gè)處理器610、615可以是處理器500的某個(gè)版本。然而,應(yīng)該注意的是,集成圖形邏輯和集成存儲(chǔ)器控制單元可不存在于處理器610、615中。圖6圖示:GMCH 620可被耦合到存儲(chǔ)器640,存儲(chǔ)器640可以是例如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)。對(duì)于至少一個(gè)實(shí)施例,DRAM可與非易失性高速緩存關(guān)聯(lián)。
[0074] GMCH 620可以是芯片組或芯片組的一部分。GMCH 620可與處理器610、615通信,并且控制處理器610、615和存儲(chǔ)器640之間的交互。GMCH 620還可用作處理器610、615和系統(tǒng) 600的其它元件之間的加速總線接口。在一個(gè)實(shí)施例中,GMCH 620經(jīng)多點(diǎn)總線(諸如,前端總線(FSB) 695)與處理器610、615通信。[〇〇75] 另外,GMCH 620可被耦合到顯示器645(諸如,平板顯示器)。在一個(gè)實(shí)施例中,GMCH 620可包括集成圖形加速器。GMCH 620還可被耦合到輸入/輸出(I/O)控制器集線器(ICH) 650,其可被用于將各種外圍裝置耦合到系統(tǒng)600。外部圖形裝置660可包括是連同另一外圍裝置670耦合到ICH 650的分立圖形裝置。[〇〇76]在其它實(shí)施例中,附加的或不同的處理器也可存在于系統(tǒng)600中。例如,附加的處理器610、615可包括可與處理器610相同的附加的處理器、可與處理器610異構(gòu)或不對(duì)稱的附加的處理器、加速器(諸如,例如圖形加速器或數(shù)字信號(hào)處理(DSP)單元)、現(xiàn)場(chǎng)可編程門陣列或任何其它處理器。在包括架構(gòu)、微架構(gòu)、熱、功耗特性等的優(yōu)點(diǎn)的度量的范圍方面,在物理資源610、615之間可存在各種差異。這些差異可有效地將它們自己表明為處理器610、 615之間的不對(duì)稱性和異質(zhì)性。對(duì)于至少一個(gè)實(shí)施例,各種處理器610、615可駐留在同一管芯封裝中。[〇〇77]圖7圖示根據(jù)本公開的實(shí)施例的第二系統(tǒng)700的方框圖。如圖7中所示,多處理器系統(tǒng)700可包括點(diǎn)對(duì)點(diǎn)互連系統(tǒng),并且可包括經(jīng)點(diǎn)對(duì)點(diǎn)互連750耦合的第一處理器770和第二處理器780。像處理器610、615中的一個(gè)或多個(gè)處理器一樣,處理器770和780中的每個(gè)處理器可以是處理器500的某個(gè)版本。[〇〇78] 盡管圖7可圖示兩個(gè)處理器770、780,但應(yīng)該理解,本公開的范圍不限于此。在其它實(shí)施例中,一個(gè)或多個(gè)附加的處理器可存在于給定處理器中。[〇〇79] 處理器770和780分別被示出為包括集成存儲(chǔ)控制器單元772和782。處理器770還可包括點(diǎn)對(duì)點(diǎn)(P-P)接口 776和778作為它的總線控制器單元的一部分;類似地,第二處理器 780可包括P-P接口 786和788。處理器770、780可使用P-P接口電路778、788經(jīng)點(diǎn)對(duì)點(diǎn)(P-P)接口750交換信息。如圖7中所示,頂C 772和782可將處理器耦合到各存儲(chǔ)器,即存儲(chǔ)器732和存儲(chǔ)器734,在一個(gè)實(shí)施例中,存儲(chǔ)器732和存儲(chǔ)器734可以是在本地連接到各處理器的主存儲(chǔ)器的一部分。
[0080] 處理器770、780可各自使用點(diǎn)對(duì)點(diǎn)接口電路776、794、786、798經(jīng)個(gè)體?呼接口752、 754與芯片組790交換信息。在一個(gè)實(shí)施例中,芯片組790還可經(jīng)高性能圖形接口 739與高性能圖形電路738交換信息。[〇〇811 共享高速緩存(未示出)可被包括在任一處理器中或被包括在兩個(gè)處理器外部,但經(jīng)P-P互連與處理器連接,從而如果處理器被布置在低功率模式,則任一處理器或兩個(gè)處理器的本地高速緩存信息可被存儲(chǔ)在所述共享高速緩存中。[〇〇82] 芯片組790可經(jīng)接口796被耦合到第一總線716。在一個(gè)實(shí)施例中,第一總線716可以是外圍部件互連(PCI)總線或者諸如PCI Express總線或另一第三代I/O互連總線的總線,但本公開的范圍不限于此。
[0083]如圖7中所示,各種I/O裝置714連同總線橋718可被耦合到第一總線716,總線橋 718將第一總線716耦合到第二總線720。在一個(gè)實(shí)施例中,第二總線720可以是低腳數(shù)(LPC) 總線。各種裝置可被耦合到第二總線720,所述各種裝置包括例如鍵盤和/或鼠標(biāo)722、通信裝置727和儲(chǔ)存器單元728(諸如,盤驅(qū)動(dòng)器或其它大容量存儲(chǔ)裝置),在一個(gè)實(shí)施例中,儲(chǔ)存器單元728可包括指令/代碼和數(shù)據(jù)730。另外,音頻I/O 724可被耦合到第二總線720。需要注意的是,其它架構(gòu)可以是可能的。例如,替代于圖7的點(diǎn)對(duì)點(diǎn)架構(gòu),系統(tǒng)可實(shí)現(xiàn)多點(diǎn)分支總線或其它這種架構(gòu)。[〇〇84]圖8圖示根據(jù)本公開的實(shí)施例的第三系統(tǒng)800的方框圖。圖7和8中的相同的元件具有相同的標(biāo)號(hào),并且已從圖8省略圖7的某些方面以便避免模糊圖8的其它方面。[〇〇85]圖8圖示:處理器870、880可分別包括集成存儲(chǔ)器和I/O控制邏輯(“CL”)872和 882。對(duì)于至少一個(gè)實(shí)施例,CL 872、882可包括集成存儲(chǔ)控制器單元(諸如,以上結(jié)合圖5和7 描述的集成存儲(chǔ)控制器單元)。另外,CL 872、882還可包括I/O控制邏輯。圖8圖示:不僅存儲(chǔ)器832、834可被耦合到CL 872、882,而且1/0裝置814也可被耦合到控制邏輯872、882。傳統(tǒng) I/O裝置815可被耦合到芯片組890。
[0086]圖9圖示根據(jù)本公開的實(shí)施例的SoC 900的方框圖。圖5中的類似的元件具有相似的標(biāo)號(hào)。此外,虛線框可代表更高級(jí)的SoC上的可選的特征。互連單元902可被耦合到:應(yīng)用處理器910,其可包括一組的一個(gè)或多個(gè)核902 A-N和共享高速緩存單元906;系統(tǒng)代理單元 910;總線控制器單元916;集成存儲(chǔ)控制器單元914; 一組或者一個(gè)或多個(gè)媒體處理器920, 其可包括集成圖形邏輯908、用于提供靜止和/或視頻照相機(jī)功能的圖像處理器924、用于提供硬件音頻加速的音頻處理器926和用于提供視頻編碼/解碼加速的視頻處理器928;靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)單元930;直接存儲(chǔ)器存取(DMA)單元932;和顯示單元940,用于耦合到一個(gè)或多個(gè)外部顯示器。[〇〇87]圖10圖示根據(jù)本公開的實(shí)施例的可執(zhí)行至少一個(gè)指令的包含中央處理單元(CPU) 和圖形處理單元(GPU)的處理器。在一個(gè)實(shí)施例中,用于執(zhí)行根據(jù)至少一個(gè)實(shí)施例的操作的指令能夠由CPU執(zhí)行。在另一實(shí)施例中,指令能夠由GPU執(zhí)行。在仍另一實(shí)施例中,可通過由 GPU和CPU執(zhí)行的操作的組合執(zhí)行指令。例如,在一個(gè)實(shí)施例中,根據(jù)一個(gè)實(shí)施例的指令可被接收和解碼以在GPU上執(zhí)行。然而,解碼的指令內(nèi)的一個(gè)或多個(gè)操作可由CPU執(zhí)行,并且結(jié)果被返回給GPU以用于指令的最后退出。相反地,在一些實(shí)施例中,CPU可用作主處理器并且 GHJ用作協(xié)處理器。[〇〇88] 在一些實(shí)施例中,受益于高度并行、吞吐量處理器的指令可由GPU執(zhí)行,而受益于受益于深度流水線架構(gòu)的處理器的性能的指令可由CPU執(zhí)行。例如,圖形、科學(xué)應(yīng)用、金融應(yīng)用和其它并行工作量可受益于GPU的性能并且被相應(yīng)地執(zhí)行,而更加順序的應(yīng)用(諸如,操作系統(tǒng)內(nèi)核或應(yīng)用代碼)可更好地適合于CPU。
[0089]在圖10中,處理器1000包括CPU 1005、6!^ 1010、圖像處理器1015、視頻處理器 1020、USB控制器1025、UART控制器1030、SPI/SD10控制器1035、顯示裝置1040、存儲(chǔ)器接口控制器1045、MIPI控制器1050、閃存控制器1055、雙倍數(shù)據(jù)速率(DDR)控制器1060、安全引擎 1065和I2S/I2C控制器1070。其它邏輯和電路可被包括在圖10的處理器中,包括更多的CPU或 GHJ和其它外圍接口控制器。
[0090]至少一個(gè)實(shí)施例的一個(gè)或多個(gè)方面可由存儲(chǔ)在機(jī)器可讀介質(zhì)上的代表性數(shù)據(jù)實(shí)現(xiàn),所述機(jī)器可讀介質(zhì)代表處理器內(nèi)的各種邏輯,當(dāng)由機(jī)器讀取所述代表性數(shù)據(jù)時(shí),所述代表性數(shù)據(jù)使所述機(jī)器制造用于執(zhí)行本文中描述的技術(shù)的邏輯。稱為“IP核”的這種表示可被存儲(chǔ)在有形、機(jī)器可讀介質(zhì)(“磁帶”)中并且被提供給各種顧客或制造設(shè)施以加載到實(shí)際制作所述邏輯或處理器的加工機(jī)器中。例如,IP核(諸如,由ARM Holdings, Ltd.開發(fā)的處理器的Cortex? 系列和由Chinese Academy of Sciences的Institute of Computing Technology (ICT)開發(fā)的Loongson IP核)可被許可或銷售給各種顧客或執(zhí)照持有者(諸如,Texas Instruments、Qualcomm、Apple或Samsung)并且被實(shí)現(xiàn)在由這些顧客或執(zhí)照持有者生產(chǎn)的處理器中。
[0091]圖11圖示圖示了根據(jù)本公開的實(shí)施例的IP核的開發(fā)的方框圖。存儲(chǔ)器1130可包括模擬軟件1120和/或硬件或軟件模型1110。在一個(gè)實(shí)施例中,代表IP核設(shè)計(jì)的數(shù)據(jù)可經(jīng)存儲(chǔ)器1140(例如,硬盤)、有線連接(例如,互聯(lián)網(wǎng))1150或無線連接1160被提供給存儲(chǔ)器1130。 由模擬工具和模型生成的IP核信息可隨后被傳送給加工設(shè)施,其中,IP核信息可由第三方加工以執(zhí)行根據(jù)至少一個(gè)實(shí)施例的至少一個(gè)指令。[〇〇92] 在一些實(shí)施例中,一個(gè)或多個(gè)指令可對(duì)應(yīng)于第一類型或架構(gòu)(例如,x86),并且在不同類型或架構(gòu)(例如,ARM)的處理器上被翻譯或仿真。根據(jù)一個(gè)實(shí)施例,可因此在任何處理器或處理器類型(包括六1?1、#6、10?3、6?1]或其它處理器類型或架構(gòu))上執(zhí)行指令。
[0093]圖12圖示根據(jù)本公開的實(shí)施例的第一類型的指令可如何由不同類型的處理器仿真。在圖12中,程序1205包含可執(zhí)行與根據(jù)一個(gè)實(shí)施例的指令相同或基本上相同的功能的一些指令。然而,程序1205的指令可具有與處理器1215不同或與處理器1215不兼容的類型和/或格式,從而意味著程序1205中的類型的指令可能無法自然地由處理器1215執(zhí)行。然而,借助于仿真邏輯1210,程序1205的指令可被翻譯成可自然地由處理器1215執(zhí)行的指令。 在一個(gè)實(shí)施例中,仿真邏輯可被體現(xiàn)在硬件中。在另一實(shí)施例中,仿真邏輯可被體現(xiàn)在有形、機(jī)器可讀介質(zhì)中,所述有形、機(jī)器可讀介質(zhì)包含用于將程序1205中的類型的指令翻譯成可自然地由處理器1215執(zhí)行的類型的軟件。在其它實(shí)施例中,仿真邏輯可以是固定功能或可編程硬件和存儲(chǔ)在有形、機(jī)器可讀介質(zhì)上的程序的組合。在一個(gè)實(shí)施例中,處理器包含仿真邏輯,而在其它實(shí)施例中,仿真邏輯存在于處理器外部并且可由第三方提供。在一個(gè)實(shí)施例中,通過執(zhí)行處理器中所包含的微碼或固件或者與處理器關(guān)聯(lián)的微碼或固件,處理器可加載包含軟件的有形、機(jī)器可讀介質(zhì)中體現(xiàn)的仿真邏輯。
[0094]圖13圖示根據(jù)本公開的實(shí)施例的將使用軟件指令轉(zhuǎn)換器將源指令集中的二進(jìn)制指令轉(zhuǎn)換成目標(biāo)指令集中的二進(jìn)制指令做對(duì)比的方框圖。在圖示的實(shí)施例中,指令轉(zhuǎn)換器可以是軟件指令轉(zhuǎn)換器,但指令轉(zhuǎn)換器可被實(shí)現(xiàn)于軟件、固件、硬件或其各種組合。圖13示出可使用x86編譯器1304編譯根據(jù)高級(jí)語言1302的程序以生成可由具有至少一個(gè)x86指令集核的處理器1316自然地執(zhí)行的x86二進(jìn)制碼1306。具有至少一個(gè)x86指令集核的處理器 1316代表這樣的任何處理器:可通過以兼容方式執(zhí)行或以其它方式處理(l)Intel x86指令集核的指令集的大部分或(2)旨在在具有至少一個(gè)x86指令集核的Intel處理器上運(yùn)行的應(yīng)用或其它軟件的目標(biāo)代碼版本來執(zhí)行與具有至少一個(gè)x86指令集核的Intel處理器基本上相同的功能,以便實(shí)現(xiàn)與具有至少一個(gè)x86指令集核的Intel處理器基本上相同的結(jié)果。x86 編譯器1304代表可能可操作于生成x86二進(jìn)制碼1306(例如,目標(biāo)代碼)的編譯器,在具有附加的鏈接處理或沒有附加的鏈接處理的情況下,可在具有至少一個(gè)x86指令集核的處理器 1316上執(zhí)行x86二進(jìn)制碼1306。類似地,圖13示出可使用替代指令集編譯器1308編譯根據(jù)高級(jí)語言1302的程序以生成可由沒有至少一個(gè)x86指令集核的處理器1314(例如,具有執(zhí)行 Sunnyvale, CA的MIPS技術(shù)的MIPS指令集和/或執(zhí)行Sunnyvale,CA的ARM Holdings的ARM指令集的核的處理器)自然地執(zhí)行的替代指令集二進(jìn)制碼1310。指令轉(zhuǎn)換器1312可被用于將x86二進(jìn)制碼1306轉(zhuǎn)換成可由沒有x86指令集核的處理器1314自然地執(zhí)行的代碼。這種轉(zhuǎn)換的代碼可能不與替代指令集二進(jìn)制碼1310相同;然而,轉(zhuǎn)換的代碼將會(huì)完成一般操作并且由來自替代指令集的指令構(gòu)成。因此,指令轉(zhuǎn)換器1312代表通過仿真、模擬或任何其它過程而允許不具有x86指令集處理器或核的處理器或其它電子裝置執(zhí)行x86二進(jìn)制碼1306的軟件、固件、硬件或者其組合。
[0095]圖14是根據(jù)本公開的實(shí)施例的處理器的指令集架構(gòu)1400的方框圖。指令集架構(gòu) 1400可包括任何合適的數(shù)量或種類的部件。[〇〇96] 例如,指令集架構(gòu)1400可包括處理實(shí)體,諸如一個(gè)或多個(gè)核1406、1407和圖形處理單元1415。核1406、1407可通過任何合適的機(jī)構(gòu)(諸如,通過總線或高速緩存)通信地親合到指令集架構(gòu)1400的其余部分。在一個(gè)實(shí)施例中,核1406、1407可通過L2高速緩存控制器1408 通信地耦合,L2高速緩存控制器1408可包括總線接口單元1409和L2高速緩存1410。核1406、 1407和圖形處理單元1415可通過互連件1410通信地彼此耦合并且耦合到指令集架構(gòu)1400 的其余部分。在一個(gè)實(shí)施例中,圖形處理單元1415可使用視頻編碼1420,視頻編碼1420定義其中特定視頻信號(hào)將會(huì)被編碼和解碼以便輸出的方式。
[0097]指令集架構(gòu)1400還可包括任何數(shù)量或種類的接口、控制器或用于與電子裝置或系統(tǒng)的其它部分對(duì)接或通信的其它機(jī)構(gòu)。這種機(jī)構(gòu)可方便與例如外圍設(shè)備、通信裝置、其它處理器或存儲(chǔ)器的交互。在圖14的例子中,指令集架構(gòu)1400可包括液晶顯示器(IXD)視頻接口 1425、訂戶接口模塊(SIM)接口 1430、引導(dǎo)ROM接口 1435、同步動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(SDRAM) 控制器1440、閃存控制器1445和串行外設(shè)接口(SPI)主單元1450兒⑶視頻接口 1425可提供來自例如GPU 1415的視頻信號(hào)的輸出,并且通過例如移動(dòng)產(chǎn)業(yè)處理器接口(MIPI) 1490或高清晰度多媒體接口(HDMI) 1495將所述視頻信號(hào)提供給顯示器。這種顯示器可包括例如 LCD。SIM接口 1430可提供對(duì)SIM卡或裝置的訪問或來自SIM卡或裝置的訪問。SDRAM控制器 1440可提供對(duì)存儲(chǔ)器(諸如,SDRAM芯片或模塊)的訪問或來自存儲(chǔ)器(諸如,SDRAM芯片或模塊)的訪問。閃存控制器1445可提供對(duì)存儲(chǔ)器(諸如,閃存或RAM的其它實(shí)例)的訪問或來自存儲(chǔ)器(諸如,閃存或RAM的其它實(shí)例)的訪問。SPI主單元1450可提供對(duì)通信模塊(諸如,藍(lán)牙模塊1470、高速3G調(diào)制解調(diào)器1475、全球定位系統(tǒng)模塊1480或?qū)崿F(xiàn)諸如802.11的通信標(biāo)準(zhǔn)的無線模塊1485)的訪問或來自通信模塊(諸如,藍(lán)牙模塊1470、高速3G調(diào)制解調(diào)器1475、 全球定位系統(tǒng)模塊1480或?qū)崿F(xiàn)諸如802.11的通信標(biāo)準(zhǔn)的無線模塊1485)的訪問。
[0098]圖15是根據(jù)本公開的實(shí)施例的實(shí)現(xiàn)指令集架構(gòu)的處理器的指令架構(gòu)1500的更詳細(xì)的方框圖。指令架構(gòu)1500可以是微架構(gòu)。指令架構(gòu)1500可實(shí)現(xiàn)指令集架構(gòu)1400的一個(gè)或多個(gè)方面。另外,指令架構(gòu)1500可圖示用于處理器內(nèi)的指令的執(zhí)行的模塊和機(jī)構(gòu)。[〇〇99]指令架構(gòu)1500可包括通信地耦合到一個(gè)或多個(gè)執(zhí)行實(shí)體1565的存儲(chǔ)系統(tǒng)1540。另夕卜,指令架構(gòu)1500可包括高速緩存和總線接口單元(諸如,單元1510),其通信地耦合到執(zhí)行實(shí)體1565和存儲(chǔ)系統(tǒng)1540。在一個(gè)實(shí)施例中,可由執(zhí)行的一個(gè)或多個(gè)級(jí)執(zhí)行將指令加載到執(zhí)行實(shí)體1565中。這種級(jí)可包括例如指令預(yù)取級(jí)1530、雙指令解碼級(jí)1550、寄存器重新命名級(jí)1555、發(fā)出級(jí)1560和寫回級(jí)1570。
[0100]在一個(gè)實(shí)施例中,存儲(chǔ)系統(tǒng)1540可包括已執(zhí)行指令指針1580。已執(zhí)行指令指針 1580可存儲(chǔ)這樣的值:該值識(shí)別由多個(gè)股表示的線程內(nèi)的無序發(fā)出級(jí)1560中的一批指令內(nèi)的最早的未分派的指令??稍诎l(fā)出級(jí)1560中計(jì)算已執(zhí)行指令指針1580并且已執(zhí)行指令指針 1580被傳播給加載單元。指令可被存儲(chǔ)在一批指令內(nèi)。所述一批指令可位于由多個(gè)股表示的線程內(nèi)。最早的指令可對(duì)應(yīng)于最低PO(程序次序)值。PO可包括指令的唯一編號(hào)。PO可被用于對(duì)指令進(jìn)行排序以確保代碼的正確執(zhí)行語義??赏ㄟ^機(jī)構(gòu)(諸如,評(píng)估在指令中編碼的PO 的增量而非絕對(duì)值)來重構(gòu)PO。這種重構(gòu)的PO可被稱為RPO。雖然可在本文中參考PO,但這種 PO可被與RPO可互換地使用。股可包括一系列指令,其是彼此相關(guān)的數(shù)據(jù)。所述股可由二進(jìn)制翻譯器在編譯時(shí)間布置。執(zhí)行股的硬件可根據(jù)各種指令的PO依次執(zhí)行給定股的指令。線程可包括多個(gè)股,從而不同股的指令可彼此相關(guān)。給定股的PO可以是還未被從發(fā)出級(jí)分派執(zhí)行的股中的最早指令的PO。因此,給定多個(gè)股的線程,包括按照PO排序的指令,已執(zhí)行指令指針1580的每個(gè)股可存儲(chǔ)無序發(fā)出級(jí)1560中的線程的股之中的最早一一由最低數(shù)字示出——PO〇[〇1〇1]在另一實(shí)施例中,存儲(chǔ)系統(tǒng)1540可包括退出指針1582。退出指針1582可存儲(chǔ)識(shí)別上一個(gè)退出的指令的P0的值。退出指針1582可由例如退出單元454設(shè)置。如果還未退出指令,則退出指針1582可包括零值。[〇1〇2]執(zhí)行實(shí)體1565可包括任何合適的數(shù)量和種類的機(jī)構(gòu),處理器可通過所述機(jī)構(gòu)來執(zhí)行指令。在圖15的例子中,執(zhí)行實(shí)體1565可包括ALU/乘法單元(MUL) 1566、ALU 1567和浮點(diǎn)單元(FPU) 1568。在一個(gè)實(shí)施例中,這種實(shí)體可利用給定地址1569內(nèi)所包含的信息。執(zhí)行實(shí)體1565結(jié)合級(jí)1530、1550、1555、1560、1570可共同形成執(zhí)行單元。
[0103]單元1510可被以任何合適的方式實(shí)現(xiàn)。在一個(gè)實(shí)施例中,單元1510可執(zhí)行高速緩存控制。在這種實(shí)施例中,單元1510可因此包括高速緩存1525。在另一實(shí)施例中,高速緩存 1525可被實(shí)現(xiàn)為具有任何合適的大小的L2統(tǒng)一高速緩存,諸如零、128k、256k、512k、lMS2M 字節(jié)的存儲(chǔ)器。在另一進(jìn)一步實(shí)施例中,高速緩存1525可被實(shí)現(xiàn)在糾錯(cuò)碼存儲(chǔ)器中。在另一實(shí)施例中,單元1510可與處理器或電子裝置的其它部分執(zhí)行總線對(duì)接。在這種實(shí)施例中,單元1510可因此包括用于經(jīng)過互連件、處理器內(nèi)總線、處理器間總線或其它通信總線、端口或線通信的總線接口單元1520??偩€接口單元1520可提供對(duì)接以便執(zhí)行例如存儲(chǔ)器和輸入/ 輸出地址的生成從而用于執(zhí)行實(shí)體1565和位于指令架構(gòu)1500外部的系統(tǒng)的一部分之間的數(shù)據(jù)的傳送。
[0104]為了進(jìn)一步促進(jìn)其功能,總線接口單元1520可包括用于生成中斷和與處理器或電子裝置的其它部分的其它通信的中斷控制和分配單元1511。在一個(gè)實(shí)施例中,總線接口單元1520可包括探查控制單元1512,探查控制單元1512處理用于多個(gè)處理核的高速緩存訪問和相干性。在另一實(shí)施例中,為了提供這種功能,探查控制單元1512可包括高速緩存至高速緩存?zhèn)魉蛦卧咚倬彺嬷粮咚倬彺鎮(zhèn)魉蛦卧幚聿煌咚倬彺嬷g的信息交換。在另一進(jìn)一步實(shí)施例中,探查控制單元1512可包括一個(gè)或多個(gè)探查濾波器1514,所述一個(gè)或多個(gè)探查濾波器1514監(jiān)測(cè)其它高速緩存(未示出)的相干性,以使得高速緩存控制器(諸如,單元 1510)不必直接執(zhí)行這種監(jiān)測(cè)。單元1510可包括用于同步指令架構(gòu)1500的動(dòng)作的任何合適的數(shù)量的定時(shí)器1515。此外,單元1510可包括AC端口 1516。[〇1〇5]存儲(chǔ)系統(tǒng)1540可包括用于存儲(chǔ)用于指令架構(gòu)1500的處理需要的信息的任何合適的數(shù)量和種類的機(jī)構(gòu)。在一個(gè)實(shí)施例中,存儲(chǔ)系統(tǒng)1540可包括用于存儲(chǔ)與寫到存儲(chǔ)器或寄存器或者從存儲(chǔ)器或寄存器讀回的指令相關(guān)的信息的加載存儲(chǔ)單元1530。在另一實(shí)施例中,存儲(chǔ)系統(tǒng)1540可包括快速重編址緩沖器(TLB) 1545,其提供物理和虛擬地址之間的地址值的查找。在又一實(shí)施例中,總線接口單元1520可包括用于方便對(duì)虛擬存儲(chǔ)器的訪問的存儲(chǔ)管理單元(MMU) 1544。在仍又一實(shí)施例中,存儲(chǔ)系統(tǒng)1540可包括用于在實(shí)際需要執(zhí)行指令之前從存儲(chǔ)器請(qǐng)求這種指令的預(yù)取器1543,以便減少延時(shí)。
[0106]可通過不同級(jí)執(zhí)行用于執(zhí)行指令的指令架構(gòu)1500的操作。例如,使用單元1510,指令預(yù)取級(jí)1530可通過預(yù)取器1543訪問指令。檢索到的指令可被存儲(chǔ)在指令高速緩存1532 中。預(yù)取級(jí)1530可以能夠?qū)崿F(xiàn)用于快速循環(huán)模式的選項(xiàng)1531,其中執(zhí)行形成足夠小以安裝在給定高速緩存內(nèi)的循環(huán)的一系列指令。在一個(gè)實(shí)施例中,可執(zhí)行這種執(zhí)行,而不需要從例如指令高速緩存1532訪問附加的指令。可由例如分支預(yù)測(cè)單元1535確定預(yù)取什么指令,分支預(yù)測(cè)單元1535可訪問全局歷史1536中的執(zhí)行的指示、目標(biāo)地址1537的指示或返回堆棧 1538的內(nèi)容以確定接下來將會(huì)執(zhí)行代碼的分支1557中的哪個(gè)分支。作為結(jié)果,可以可能地預(yù)取這種分支??赏ㄟ^如下所述的操作的其它級(jí)產(chǎn)生分支1557。指令預(yù)取級(jí)1530可將指令以及關(guān)于未來指令的任何預(yù)測(cè)提供給雙指令解碼級(jí)。[〇1〇7]雙指令解碼級(jí)1550可將接收的指令翻譯成可執(zhí)行的基于微碼的指令。雙指令解碼級(jí)1550可在每個(gè)時(shí)鐘周期同時(shí)對(duì)兩個(gè)指令進(jìn)行解碼。另外,雙指令解碼級(jí)1550可將它的結(jié)果傳送給寄存器重新命名級(jí)1555。另外,雙指令解碼級(jí)1550可從它的解碼和微碼的最后執(zhí)行確定任何所獲得的分支。這種結(jié)果可被輸入到分支1557中。[〇1〇8] 寄存器重新命名級(jí)1555可將對(duì)虛擬寄存器或其它資源的參考翻譯成對(duì)物理寄存器或資源的參考。寄存器重新命名級(jí)1555可在寄存器池1556中包括這種映射的指示。寄存器重新命名級(jí)1555可改變?nèi)缢邮盏闹噶?,并且將結(jié)果發(fā)送給發(fā)出級(jí)1560。[〇1〇9]發(fā)出級(jí)1560可向執(zhí)行實(shí)體1565發(fā)出或分派命令??砂凑諢o序方式執(zhí)行這種發(fā)出。 在一個(gè)實(shí)施例中,多個(gè)指令可在被執(zhí)行之前被保存在發(fā)出級(jí)1560。發(fā)出級(jí)1560可包括用于保存這種多個(gè)命令的指令隊(duì)列1561??捎砂l(fā)出級(jí)1560基于任何可接受的準(zhǔn)則(諸如,用于給定指令的執(zhí)行的資源的可用性或適合性)向特定處理實(shí)體1565發(fā)出指令。在一個(gè)實(shí)施例中, 發(fā)出級(jí)1560可對(duì)指令隊(duì)列1561內(nèi)的指令進(jìn)行重新排序,從而接收的第一指令可能不是執(zhí)行的第一指令?;谥噶铌?duì)列1561的排序,附加的分支信息可被提供給分支1557。發(fā)出級(jí)1560 可將指令傳送給執(zhí)行實(shí)體1565以用于執(zhí)行。
[0110]在執(zhí)行時(shí),寫回級(jí)1570可將數(shù)據(jù)寫到寄存器、隊(duì)列或指令架構(gòu)1500的其它結(jié)構(gòu)中以傳達(dá)給定命令的完成。根據(jù)在發(fā)出級(jí)1560中布置的指令的次序,寫回級(jí)1570的操作可以使得能夠執(zhí)行附加的指令??捎勺粉檰卧?575監(jiān)測(cè)或調(diào)試指令架構(gòu)1500的執(zhí)行。
[0111]圖16是根據(jù)本公開的實(shí)施例的針對(duì)處理器的執(zhí)行流水線1600的方框圖。執(zhí)行流水線1600可圖示例如圖15的指令架構(gòu)1500的操作。
[0112]執(zhí)行流水線1600可包括步驟或操作的任何合適的組合。在1605中,可做出接下來將要被執(zhí)行的分支的預(yù)測(cè)。在一個(gè)實(shí)施例中,這種預(yù)測(cè)可基于指令的以前的執(zhí)行及其結(jié)果。 在1610中,與預(yù)測(cè)的執(zhí)行的分支對(duì)應(yīng)的指令可被加載到指令高速緩存中。在1615中,指令高速緩存中的一個(gè)或多個(gè)這種指令可被獲取以用于執(zhí)行。在1620中,已被獲取的指令可被解碼成微碼或更具體的機(jī)器語言。在一個(gè)實(shí)施例中,多個(gè)指令可被同時(shí)解碼。在1625中,對(duì)解碼的指令內(nèi)的寄存器或其它資源的參考可被重新分派。例如,對(duì)虛擬寄存器的參考可由對(duì)對(duì)應(yīng)物理寄存器的參考替換。在1630中,指令可被分派給隊(duì)列以用于執(zhí)行。在1640中,指令可被執(zhí)行。這種執(zhí)行可被以任何合適的方式執(zhí)行。在1650中,指令可被發(fā)出給合適的執(zhí)行實(shí)體。執(zhí)行指令的方式可取決于執(zhí)行指令的特定實(shí)體。例如,在1655處,ALU可執(zhí)行算術(shù)功能。ALU可利用用于它的操作的單個(gè)時(shí)鐘周期以及兩個(gè)移位器。在一個(gè)實(shí)施例中,可采用兩個(gè)ALU,并且因此,可在1655處執(zhí)行兩個(gè)指令。在1660處,可確定所獲得的分支。程序計(jì)數(shù)器可被用于指定分支將會(huì)前往的目的。可在單個(gè)時(shí)鐘周期內(nèi)執(zhí)行1660。在1665處,浮點(diǎn)算術(shù)可由一個(gè)或多個(gè)FHJ執(zhí)行。浮點(diǎn)操作可能需要執(zhí)行多個(gè)時(shí)鐘周期,諸如兩個(gè)周期至十個(gè)周期。在1670處,可執(zhí)行乘法和除法操作??稍诙鄠€(gè)時(shí)鐘周期(諸如,四個(gè)時(shí)鐘周期)中執(zhí)行這種操作。在1675處,可執(zhí)行針對(duì)寄存器或流水線1600的其它部分的加載和存儲(chǔ)操作。操作可包括加載和存儲(chǔ)地址??稍谒膫€(gè)時(shí)鐘周期中執(zhí)行這種操作。在1680處,可根據(jù)1655-1675的所獲得的操作的需要執(zhí)行寫回操作。
[0113]圖17是根據(jù)本公開的實(shí)施例的用于利用處理器1710的電子裝置1700的方框圖。電子裝置1700可包括例如筆記本、超級(jí)本、計(jì)算機(jī)、塔式服務(wù)器、機(jī)架服務(wù)器、刀片服務(wù)器、膝上型計(jì)算機(jī)、桌上型計(jì)算機(jī)、平板計(jì)算機(jī)、移動(dòng)裝置、電話、嵌入式計(jì)算機(jī)或任何其它合適的電子裝置。
[0114]電子裝置1700可包括處理器1710,處理器1710通信地耦合到任何合適的數(shù)量或種類的部件、外圍設(shè)備、模塊或裝置。通過任何合適的種類的總線或接口(諸如,I2C總線、系統(tǒng)管理總線(SMBus)、低腳數(shù)(LPC)總線、SP1、高清晰度音頻(HDA)總線、串行高級(jí)技術(shù)附件
(SATA)總線、USB總線(版本1、2、3)或通用異步接收器/發(fā)送器(UART)總線)可完成這種規(guī)A
柄口 O
[0115]這種部件可包括例如顯示器1724、觸摸屏幕1725、觸摸墊1730、近場(chǎng)通信(NFC)單元1745、傳感器集線器1740、熱傳感器1746、express芯片組(EC) 1735、可信平臺(tái)模塊(TPM) 1738、B10S/固件/閃存1722、數(shù)字信號(hào)處理器1760、驅(qū)動(dòng)器1720(諸如,固態(tài)盤(SSD)或硬盤驅(qū)動(dòng)器(HDD))、無線局域網(wǎng)(WLAN)單元1750、藍(lán)牙單元1752、無線廣域網(wǎng)(WWAN)單元1756、全球定位系統(tǒng)(GPS)、照相機(jī)1754(諸如,USB 3.0照相機(jī))或按照例如LPDDR3標(biāo)準(zhǔn)實(shí)現(xiàn)的低功率雙倍數(shù)據(jù)速率(LPDDR)存儲(chǔ)單元1715。這些部件可各自被以任何合適的方式實(shí)現(xiàn)。
[0116]另外,在各種實(shí)施例中,其它部件可通過以上討論的部件通信地耦合到處理器1710。例如,加速度計(jì)1741、環(huán)境光傳感器(ALS) 1742、羅盤1743和陀螺儀1744可通信地耦合到傳感器集線器1740。熱傳感器1739、風(fēng)扇1737、鍵盤1746和觸摸墊1730可通信地耦合到EC 1735。揚(yáng)聲器1763、頭戴式耳機(jī)1764和麥克風(fēng)1765可通信地耦合到音頻單元1764,音頻單元1764進(jìn)而可通信地耦合到DSP 1760。音頻單元1764可包括例如音頻編碼解碼器和D類放大器。S頂卡1757可通信地耦合到Wff AN單元1756。諸如WLAN單元1750和藍(lán)牙單元1752以及WffAN單元1756的部件可被按照下一代形狀因數(shù)(NGFF)實(shí)現(xiàn)。
[0117]本公開的實(shí)施例涉及用于分派指令的指令和邏輯??山Y(jié)合處理器、虛擬處理器、封裝、計(jì)算機(jī)系統(tǒng)或其它處理設(shè)備執(zhí)行指令和邏輯。在一個(gè)實(shí)施例中,這種處理設(shè)備可包括無序處理器。在另一實(shí)施例中,這種處理設(shè)備可包括多股無序處理器。圖18圖示根據(jù)本公開的實(shí)施例的用于分派指令的示例性系統(tǒng)1800。雖然某些元件可在圖18中被示出為執(zhí)行描述的動(dòng)作,但系統(tǒng)1800的任何合適的部分可執(zhí)行本文中描述的功能或動(dòng)作。
[0118]系統(tǒng)1800可將等待執(zhí)行的指令分派給一個(gè)或多個(gè)執(zhí)行單元。在一個(gè)實(shí)施例中,系統(tǒng)1800可通過評(píng)估執(zhí)行單元端口的可能的使用來分派指令。在另一實(shí)施例中,在給定在數(shù)量上超過執(zhí)行單元端口的可用數(shù)量的未決指令的情況下,系統(tǒng)1800可通過將執(zhí)行單元端口的利用最大化或優(yōu)化來分派指令。系統(tǒng)1800可因此嘗試通過增加每個(gè)周期執(zhí)行的指令的數(shù)量來增加并行性。如果存在等待使用同一執(zhí)行端口的多個(gè)指令,則應(yīng)該相對(duì)于其它指令選擇一些指令。在一個(gè)實(shí)施例中,系統(tǒng)1800可包括檢查用于按優(yōu)先次序排列原本可能在同一執(zhí)行端口上等待的多個(gè)指令的方案。在各種實(shí)施例中,系統(tǒng)1800可在單個(gè)時(shí)鐘周期內(nèi)執(zhí)行這種選擇,因?yàn)樵谶x擇用于分派的指令時(shí)的延遲可在執(zhí)行流水線中引起空段。
[0119]系統(tǒng)1800可包括多股無序處理器1808,多股無序處理器1808具有用于并行地執(zhí)行多個(gè)股以及確定從ISU 1802向執(zhí)行單元1812分派什么指令1806的任何合適的實(shí)體。指令1806可被按照股1824分組。處理器1808可相對(duì)于其它股1824的指令執(zhí)行每個(gè)股1824的指令,從而指令被不按程序次序獲取、發(fā)出和執(zhí)行。如上所述,指令1806可包括指示程序次序的PO或RPO值。按順序執(zhí)行可包括根據(jù)順序PO值的執(zhí)行。無序執(zhí)行可包括不必遵循順序PO值的執(zhí)行。股1824內(nèi)的未決指令未被相對(duì)于其它股1824的指令排序。因此,處理器1808可能不知道股1824內(nèi)的所有指令在執(zhí)行期間相對(duì)于彼此的次序。系統(tǒng)1800可圖示處理器1808的一些元件,所述處理器1808的一些元件可包括任何處理器核、邏輯處理器、處理器或者其它處理實(shí)體或元件(諸如,圖1-17中圖示的那些處理實(shí)體或元件)。在一個(gè)實(shí)施例中,處理器1808可包括用于分派指令并且確定其次序的指令調(diào)度單元(ISU) 1802。
[0120]處理器1804可包括通信地耦合到ISU 1802的前端單元1808和執(zhí)行單元1812。前端單元1808可包括將獲取的指令1806劃分成股1824的指令緩沖器??墒褂藐?duì)列(例如,F(xiàn)IFO隊(duì)列)或任何其它容器類型數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)指令緩沖器。前端單元可將指令1806布置到股1824中,從而給定股在自身內(nèi)是數(shù)據(jù)相關(guān)的并且被根據(jù)PO或RPO排序。執(zhí)行給定股1824的第一指令的結(jié)果可被引導(dǎo)至股1824的下一個(gè)指令的評(píng)估。在圖18的例子中,可存在X個(gè)股1824。
[0121]前端單元1808可被以任何合適的方式實(shí)現(xiàn)。例如,前端單元1808可包括獲取單元1816、指令高速緩存1818和指令解碼器1820。獲取單元1808可從指令高速緩存1818、存儲(chǔ)器或其中存儲(chǔ)指令1806的其它位置獲取指令。獲取單元1808可將指令傳送給指令解碼器1820,指令解碼器1820可將指令分解成用于執(zhí)行的基元。
[0122]ISU 1802可被實(shí)現(xiàn)在處理器1802的任何合適的部分中。在一個(gè)實(shí)施例中,ISU1802可被實(shí)現(xiàn)在無序引擎1810中。前端單元1808可通信地耦合到無序引擎1810以傳送解碼的指令。無序引擎1810可包括用于以無序方式對(duì)指令進(jìn)行重新排序以及分配用于執(zhí)行的資源的任何合適的其它部件。無序引擎1810可對(duì)邏輯資源進(jìn)行重新命名并且將它們映射到物理資源。這種數(shù)據(jù)可被存儲(chǔ)在寄存器文件1826中。ISU 1802可從股1824向各種執(zhí)行單元1812發(fā)出指令。
[0123]執(zhí)行單元1812可執(zhí)行從ISU1802接收的指令,并且可根據(jù)存儲(chǔ)在重新排序緩沖器1828中的元件和邏輯退出所述指令。這種退出可遵守規(guī)則以確保防止由于無序執(zhí)行而導(dǎo)致的數(shù)據(jù)相關(guān)性錯(cuò)誤。當(dāng)指令已執(zhí)行并且能夠被退出或提交時(shí),結(jié)果可被寫到高速緩存1830、系統(tǒng)1800的存儲(chǔ)器或任何其它合適的位置。
[0124]ISU 1802可從各個(gè)股1824的每一端接收指令。這種指令可因此是未決指令1834??纱嬖赬個(gè)不同股1824或指令的其它緩沖器,并且因此,可存在X個(gè)不同未決指令1834 <JSU1802可向Y個(gè)不同執(zhí)行端口 1832之一發(fā)出指令。執(zhí)行端口 1832可來自處理器1804的一個(gè)或多個(gè)執(zhí)行單元1812的任何合適的組合。在一個(gè)實(shí)施例中,X可大于Y,并且照此,ISU 1802可確定哪些未決指令1834將會(huì)被路由至執(zhí)行端口 1832。
[0125]在一個(gè)實(shí)施例中,ISU 1802可選擇哪些未決指令1834具有最低PO或RPO并且因此是最早指令。在各種實(shí)施例中,諸如通過使用延遲的RPO值,可從原始程序次序值調(diào)整PO或RP0。例如,以前被忽略執(zhí)行的指令可使其RPO值被調(diào)整以給予它更高的優(yōu)先級(jí)。在另一例子中,被選擇執(zhí)行的指令可使同一股內(nèi)的其它指令使其RPO值被調(diào)整以給予它們更低的優(yōu)先級(jí)。相對(duì)于較新的指令,ISU 1802可優(yōu)先考慮執(zhí)行這種最早指令。然而,這種選擇可能無法負(fù)責(zé)未準(zhǔn)備好執(zhí)行的各種指令。例如,當(dāng)源數(shù)據(jù)未準(zhǔn)備好指令執(zhí)行、目的不可用或具有沖突、股已被取消或股已被刪除時(shí),可出現(xiàn)這種情況。在這種實(shí)例中,具有較低RPO的未決指令可占據(jù)用于執(zhí)行端口的空間,但可能無法被執(zhí)行,從而導(dǎo)致具有較高RPO的另一未決指令失去機(jī)會(huì)。執(zhí)行端口 1832可因此未被充分使用,并且ISU 1802的吞吐量減小。
[0126]在一個(gè)實(shí)施例中,ISU1802可在決定如何按優(yōu)先次序排列用于分派給執(zhí)行端口1832的未決指令1834時(shí)考慮給定未決指令1834或關(guān)聯(lián)的股1824的有效性信息。ISU 1802可識(shí)別給定指令是否有效并且準(zhǔn)備好分派給執(zhí)行端口 1832。另外,有效性信息可被用于基于優(yōu)先級(jí)信息解決沖突。
[0127]在另一實(shí)施例中,ISU1802可生成將要在這種優(yōu)先化內(nèi)使用的有效性信息。ISU1802可在以下描述的第二級(jí)分析引擎內(nèi)使用有效性信息處理指令的分派。有效性信息可被用于滿足背靠背相關(guān)指令喚醒和使用以及在當(dāng)前周期內(nèi)分派指令的定時(shí)要求。
[0128]在又一實(shí)施例中,ISU1802可生成用于具體地識(shí)別哪個(gè)未決指令1834將會(huì)被分派給給定執(zhí)行端口 1832的端口特定“獨(dú)熱”分派向量。該分派向量或所獲得的指令可與其它分派向量或所獲得的指令提供給其它執(zhí)行端口 1832并行地被提供給每個(gè)執(zhí)行端口 1832。當(dāng)存在比可用執(zhí)行端口 1832多的未決指令1834時(shí),單個(gè)、最好候選的未決指令1834可因此被傳送給給定執(zhí)行端口 1832。
[0129]在各種實(shí)施例中,ISU 1802可在單個(gè)時(shí)鐘周期內(nèi)執(zhí)行這些操作。
[0130]圖19是根據(jù)本公開的實(shí)施例的ISU1802的示例性實(shí)施例的圖示。ISU 1802被以任何合適的方式實(shí)現(xiàn)以執(zhí)行在本公開中描述的功能。在一個(gè)實(shí)施例中,ISU 1802可包括分析引擎的多個(gè)狀態(tài)。這種引擎可包括例如股調(diào)度觸發(fā)器(SSF) ASF可包括用于在由ISU分配和處理未決指令(諸如,包括未決指令1834的股1824的頭)時(shí)保存未決指令的硬件結(jié)構(gòu)。SSF可完全地或部分地由等待緩沖器或預(yù)約站實(shí)現(xiàn)。SSF還可對(duì)這種指令執(zhí)行特定操作或分析。
[0131]在圖19的例子中,ISU 1802可包括第一SSF (SSF1 1904)和第二SSF (SSF21906) ASF的兩個(gè)級(jí)可使未決指令連續(xù)地堆疊在SSFl 1904、SSF2 1906中。每個(gè)SSF 1904、1906可如下所述執(zhí)行分析。另外,ISU 1802可包括通信地耦合在SSFl 1904和SSF2 1906之間的檢查模塊1908。對(duì)于在股1824的頭的每個(gè)X未決指令1834,可存在SSFl 1904、SSF21906和檢查模塊1908中的每一個(gè)的實(shí)例。將要被考慮的每個(gè)這種指令的邏輯位置可被稱為“道路”,因?yàn)橥ㄟ^ISU 1802的操作操縱所述邏輯位置。在一個(gè)實(shí)施例中,SSF2 1906可代表ISU 1802執(zhí)行優(yōu)先化分析。
[0132]SSFl 1904可為給定指令確定操作數(shù)準(zhǔn)備狀態(tài)。SSFl可執(zhí)行任何合適的分析,諸如喚醒邏輯。另外,SSFl可解決任何數(shù)據(jù)相關(guān)性問題,因此能夠?qū)崿F(xiàn)無序地執(zhí)行來自不同股的指令。
[0133]在一個(gè)實(shí)施例中,檢查模塊1908可執(zhí)行合適的分析以確定指令是否準(zhǔn)備好被寫到SSF2 1906或者準(zhǔn)備好被SSF2 1906優(yōu)先考慮。檢查模塊1908的一些部分可替代地由SSFl1904執(zhí)行。檢查模塊1908可包括用于確定用于給定指令的所有操作數(shù)是否準(zhǔn)備好的邏輯1910。例如,檢查模塊1908可確定目的是否準(zhǔn)備好,用于指令的第一數(shù)據(jù)源是否準(zhǔn)備好,以及用于指令的第二數(shù)據(jù)源(如果必要的話)是否準(zhǔn)備好。如果所有這種部件準(zhǔn)備好,則邏輯1910可產(chǎn)生真值。
[0134]在一個(gè)實(shí)施例中,檢查模塊1908可包括用于相對(duì)于指令的股1824有效確定指令是否有效的邏輯1912。例如,邏輯1912可確定指令的各自股1824是否已被刪除或取消。這種事件可以是不運(yùn)轉(zhuǎn)的錯(cuò)誤預(yù)測(cè)或推測(cè)的結(jié)果,其中可重新運(yùn)行所述執(zhí)行。如果所述股仍然有效,則邏輯1912可產(chǎn)生真值。
[0135]在另一實(shí)施例中,檢查模塊1908可組合邏輯1912和1910的結(jié)果以確定本指令的有效性位1918。如果指令都已被成功地喚醒,則有效性位1918可因此被設(shè)置,其中所有操作數(shù)參數(shù)準(zhǔn)備好并且它的股仍然有效。有效性位1918可被輸出到各SSF2 1906。即使指令準(zhǔn)備好,指令也可被ISU 1802忽略執(zhí)行。因此,在另一實(shí)施例中,有效性位1918可由復(fù)用器1916保存,直至前一指令的分派成功。在這種時(shí)間之前,復(fù)用器1916可繼續(xù)輸出前一有效性位1922。如果指令以前未準(zhǔn)備好但稍后變?yōu)闇?zhǔn)備好,則有效性位1922可被更新。
[0136]每個(gè)SSF21906可處理其各自的指令以相對(duì)于其它未決指令促進(jìn)優(yōu)先化。SSF21906可基于接收的有效性位1922將任何合適的信息輸出給其它部件以選擇指令。圖20是根據(jù)本公開的實(shí)施例的ISU 1802的另一圖示,所述ISU 1802包括SSF2 1906和附加的部件以按優(yōu)先次序排列用于執(zhí)行的指令并且選擇用于執(zhí)行的指令。圖20的操作可圖示可在單個(gè)時(shí)鐘周期內(nèi)執(zhí)行的選擇邏輯。
[0137]在一個(gè)實(shí)施例中,在第一時(shí)鐘周期上從SSFl 1904和檢查模塊1908接收指令和關(guān)聯(lián)的有效性位1920之后,在下一個(gè)、單個(gè)時(shí)鐘周期期間,SSF2 1906可將信息路由至一個(gè)或多個(gè)處理矩陣以選擇將要被提供給執(zhí)行端口 1832的一組指令。ISU 1802可包括用于每個(gè)執(zhí)行端口 1832的處理矩陣2002。在圖20的例子中,ISU 1802可包括Y個(gè)不同處理矩陣2002。父?jìng)€(gè)不同SSF2 1906模塊中的每個(gè)可被路由至Y個(gè)不同處理矩陣2002中的每個(gè)。Y個(gè)不同處理矩陣2002的輸出可被路由至Y個(gè)不同執(zhí)行端口 1832中的相應(yīng)一個(gè)。
[0138]任何合適的信息可被從X個(gè)不同SSF21906模塊路由至Y個(gè)不同處理矩陣2002中的每個(gè)。在一個(gè)實(shí)施例中,X個(gè)不同SSF2 1906模塊中的每個(gè)的有效性位1920可被路由至Y個(gè)不同處理矩陣2002中的每個(gè)。在另一實(shí)施例中,來自X個(gè)不同SSF2 1906模塊中的每個(gè)的端口綁定(PB)信息可被路由至Y個(gè)不同處理矩陣2002中的每個(gè)。在另一實(shí)施例中,僅用于關(guān)聯(lián)的端口的PB信息可被從給定SSF2 1906模塊路由至給定處理矩陣2002。
[0139]PB信息可例如被用于指定將要在特定執(zhí)行端口 1832上執(zhí)行的特定道路或股1824的重要指令。利用PB,當(dāng)指令被分配到ISU 1802中時(shí),它被綁定到Y(jié)個(gè)不同執(zhí)行端口 1832之一。因此,如果已做出這種綁定,則SSF2 1906可轉(zhuǎn)發(fā)關(guān)于指令被綁定到的哪個(gè)端口 1832的信息。SSF2 1906可包括用于指定PB方案的任何合適的信息。在一個(gè)實(shí)施例中,SSF2 1906可包括用于每個(gè)未決指令的PB向量20061B向量2006可包括具有與每個(gè)可能的執(zhí)行端口 1832對(duì)應(yīng)的位的信息的“獨(dú)熱”向量。因此,PB向量2006可包括Y個(gè)位。“獨(dú)熱”向量可僅包括單個(gè)“I”值,并且其余位可以是零,其指示Y個(gè)執(zhí)行端口 1832中的單個(gè)執(zhí)行端口。指示的端口可識(shí)別指令被綁定到Y(jié)個(gè)執(zhí)行端口 1832中的哪個(gè)執(zhí)行端口(如果存在任何執(zhí)行端口的話KSSF21906可將PB向量2006的給定端口的位輸出給關(guān)聯(lián)的處理矩陣2002。
[0140]在一個(gè)實(shí)施例中,SSF2 1906可包括指令的PO或RPO 2008值,并且將其路由至Y個(gè)不同處理矩陣2002中的每個(gè)。在另一實(shí)施例中,Y個(gè)不同處理矩陣2002中的每個(gè)可能已經(jīng)具有存儲(chǔ)在RPO 2008中的值。在又一實(shí)施例中,Y個(gè)不同處理矩陣2002中的每個(gè)可能已經(jīng)具有在多個(gè)SSF2 1906模塊上分析RPO 2008的結(jié)果。在這種實(shí)施例中,可能已經(jīng)在前一時(shí)鐘周期中執(zhí)行分析。
[0141]用于Y個(gè)執(zhí)行端口中的關(guān)聯(lián)的執(zhí)行端口1832N的給定處理矩陣2002N可因此具有來自關(guān)于每個(gè)這種模塊的未決指令的X個(gè)不同SSF2 1906模塊中的每個(gè)的輸入。在一個(gè)實(shí)施例中,信息可包括X個(gè)不同指令中的每個(gè)指令的有效性1920。在另一實(shí)施例中,信息可包括X個(gè)不同指令中的每個(gè)指令的PB向量2006的關(guān)聯(lián)的端口N信息。在又一實(shí)施例中,信息可包括X個(gè)不同指令中的每個(gè)指令的RPO 2008值。
[0142]在一個(gè)實(shí)施例中,每個(gè)這種處理矩陣2002可使用任何這種信息確定X個(gè)不同SSF21906模塊的哪個(gè)指令將會(huì)被路由至Y個(gè)執(zhí)行端口中的關(guān)聯(lián)的執(zhí)行端口 1832N以用于執(zhí)行。
[0143]圖20還圖示給定處理矩陣2002的示例性實(shí)施例。示出的處理矩陣可被實(shí)現(xiàn)用于任何處理矩陣2002,并且可被稱為用于端口 N的處理矩陣。如上所述,處理矩陣2002可從X個(gè)不同SSF2 1906模塊中的每個(gè)SSF2 1906模塊接收RPO 2008、有效性位1920和PB[端口 N]2006。另外,處理矩陣2002可訪問未決指令1834。在一個(gè)實(shí)施例中,處理矩陣2002可輸出從未決指令1834選擇的將會(huì)在關(guān)聯(lián)的執(zhí)行端口 1832上執(zhí)行的指令。在另一實(shí)施例中,處理矩陣2002可輸出將會(huì)被用于選擇應(yīng)用于關(guān)聯(lián)的執(zhí)行端口 1832的指令的未決指令1834的索引。
[0144]處理矩陣2002可包括用于執(zhí)行描述的操作的任何合適的數(shù)量或種類的元件。在一個(gè)實(shí)施例中,可在單個(gè)時(shí)鐘周期內(nèi)執(zhí)行操作。雖然描述了某些級(jí)和模塊,但各種部件的功能可根據(jù)需要與其它部件的功能組合。
[0145]在一個(gè)實(shí)施例中,處理矩陣2002可包括用于基于RPO或PO值執(zhí)行X個(gè)不同指令的優(yōu)先化的邏輯矩陣模塊2010。在另一實(shí)施例中,可能已經(jīng)執(zhí)行基于RPO或PO值的X個(gè)不同指令的優(yōu)先化。可由任何合適的機(jī)構(gòu)在前一時(shí)鐘周期做出這種優(yōu)先化。例如,可在與SSFl 1904的操作對(duì)應(yīng)的時(shí)鐘周期執(zhí)行歸屬于邏輯矩陣模塊2010的這種優(yōu)先化。邏輯矩陣模塊2010可執(zhí)行未決指令的所有RPO值的矩陣比較以確定哪些指令具有最早或最低的這種值。邏輯矩陣模塊2010的輸出可包括大小X乘X的矩陣并且可被稱為矩陣L??紤]到RPO確定,針對(duì)矩陣元素(i,j)的“I”值可指示instruct1m將要被給予大于instruct1nj的優(yōu)先級(jí)。以下結(jié)合圖21做出邏輯矩陣模塊2010的操作的附加的描述。
[0146]在各種實(shí)施例中,處理矩陣2002可包括一系列矩陣操縱器MMl 2012、MM2 2014和MM3 2016。代表存儲(chǔ)在各道路中的X個(gè)不同未決指令的按優(yōu)先次序排列的RPO值的矩陣L可被輸入到稱為MMl 2012的第一矩陣操縱器。在一個(gè)實(shí)施例中,MMl 2012還可采用來自PB向量2006的有效性位1920和端口綁定信息作為輸入。在另一實(shí)施例中,MMl 2012可為矩陣L的每個(gè)元素確定兩個(gè)值。第一個(gè)這種值可以是邏輯矩陣L的優(yōu)先級(jí)值與有效性位1920的準(zhǔn)備狀態(tài)信息以及與PB向量2006的端口綁定信息的邏輯組合。因此,可考慮有效性和I3B以及RPO優(yōu)先化。在原始RPO確定中考慮到有效性和端口綁定,針對(duì)位置(i,j)的第一位的“I”值可指示instruct1m將要被給予大于instruct1nj的優(yōu)先級(jí)。第二個(gè)這種值可以是有效性和端口綁定信息的邏輯組合的倒數(shù)。這可導(dǎo)致僅掩蔽(利用“O”)假定被端口綁定到給定執(zhí)行端口的那些有效指令。這可針對(duì)給定執(zhí)行端口相對(duì)于其它指令為指令提供優(yōu)先化信息。這兩個(gè)值可稍后被組合以生成“獨(dú)熱”向量從而識(shí)別哪個(gè)執(zhí)行端口將要被用于給定未決指令(如果存在任何執(zhí)行端口的話)JMl 2012的輸出可被稱為L’。!/的大小可以是X乘X,其中每個(gè)元素包括兩位(被稱為“A”和“B” )。
[0147]MM2 2014可接受L’作為它的輸入。在一個(gè)實(shí)施例中,MM2 2014可組合由麗I 2012執(zhí)行的分析。對(duì)于L的給定優(yōu)先化元素,MM2 2012可能已通過需要有效性、PB綁定和L的元素的正優(yōu)先化值來修改優(yōu)先化,并且將結(jié)果存儲(chǔ)為位A。另外,對(duì)于L的給定優(yōu)先化元素,MM22012可能已通過需要有效性和PB綁定(獨(dú)立于L的元素的正優(yōu)先化值)來修改優(yōu)先化,并且將結(jié)果存儲(chǔ)為BJM2 2014可確定優(yōu)先化是否存在于位A或位B下,并且因此,將邏輯OR操作應(yīng)用于組合。MM2 2014可將它的結(jié)果輸出為包括一位元素的L〃,L〃可具有大小X乘X。
[0148]在一個(gè)實(shí)施例中,MM2的操作2014可導(dǎo)致——代表X個(gè)未決指令中的關(guān)聯(lián)的未決指令一一的L"的給定行具有全部“I”或不具有“I”。在另一實(shí)施例中,L"的具有全部“I”的行意味著:與該行關(guān)聯(lián)的未決指令將會(huì)被用于與處理矩陣2002關(guān)聯(lián)的執(zhí)行端口 1832。在又一實(shí)施例中,L"的具有全部“O”的行意味著:與該行關(guān)聯(lián)的未決指令將不會(huì)被用于與處理矩陣2002關(guān)聯(lián)的執(zhí)行端口 1832。在仍又一實(shí)施例中,L"的唯一行可具有全部“I”,因?yàn)閮H單個(gè)未決指令可被路由至給定執(zhí)行端口 1832。
[0149]MM3 2016可接受L"作為它的輸入。在一個(gè)實(shí)施例中,對(duì)于表示為L"中的行的給定道路或未決指令,MM2 2016可確定這種道路或未決指令是否是針對(duì)Y個(gè)執(zhí)行端口中的任何執(zhí)行端口的最好的匹配。由邏輯矩陣模塊2010在給定行中為優(yōu)先級(jí)設(shè)置并且隨后由MMl2012和MM2 2014修改以解釋有效性和PB的位可識(shí)別正確的未決指令的索引以分配給給定執(zhí)行端口 N。MM3 2016的輸出可以是被實(shí)現(xiàn)為“獨(dú)熱”向量的分派向量D。分派向量中的唯一的“I”可對(duì)應(yīng)于將要被路由至給定執(zhí)行端口N的指令的索引。在一個(gè)實(shí)施例中,分派向量D可被輸出到指令選擇器2018,指令選擇器2018可將該索引與未決指令1824進(jìn)行匹配并且將選擇的指令輸出給執(zhí)行端口 1832。在另一實(shí)施例中,分派向量D可被輸出給處理器1804的另一部分,其可合適地將指令路由至執(zhí)行端口 1832。
[0150]圖21是根據(jù)本公開的實(shí)施例的邏輯矩陣2100的示例性實(shí)施例和邏輯矩陣模塊2010的示例性操作的圖示。邏輯矩陣2100可包括從邏輯矩陣模塊2010輸出的矩陣L。在一個(gè)實(shí)施例中,與處理矩陣2002的其它操作相比,可在前一時(shí)鐘周期內(nèi)生成邏輯矩陣2100。在另一實(shí)施例中,可在與處理矩陣2002的其它操作相同的時(shí)鐘周期內(nèi)生成邏輯矩陣2100。在各種實(shí)施例中,可在單個(gè)時(shí)鐘周期內(nèi)執(zhí)行圖21內(nèi)圖示的操作。
[0151]在給定每個(gè)未決指令1834的PO或RPO1906值的陣列的情況下,邏輯矩陣模塊2010可執(zhí)行分析以確定哪個(gè)未決指令1834具有最低PO或RPO值。另外,邏輯矩陣模塊2010可利用指示器填充邏輯矩陣2100以快速地顯示哪個(gè)未決指令1834已被確定為具有最低PO或RPO值。邏輯矩陣2100的每個(gè)行可指代對(duì)應(yīng)未決指令1834,并且可被稱為在處理期間的“道路”。在一個(gè)實(shí)施例中,邏輯矩陣模塊2010可利用“I”和“O”填充所獲得的邏輯矩陣2100的每個(gè)行,“I”指示道路的增加的較高優(yōu)先級(jí),并且“O”指示道路的增加的較低優(yōu)先級(jí)。因此,與所有其它道路相比,具有全部“I”的邏輯矩陣2100的道路可具有最高優(yōu)先級(jí)。具有全部“O”的邏輯矩陣2100的道路可具有最低優(yōu)先級(jí)。每個(gè)道路可具有由它的行內(nèi)的“I”的數(shù)量定義的相對(duì)優(yōu)先級(jí)。
[0152]另外,在邏輯矩陣2100中的任何給定位置(i,j)的“I”可指示道路,將會(huì)被給予大于道路」的優(yōu)先級(jí)。在一個(gè)實(shí)施例中,這種關(guān)聯(lián)可被用于結(jié)合圖23更詳細(xì)地討論的束縛打破。
[0153]邏輯矩陣模塊2010可執(zhí)行任何合適的操作以實(shí)現(xiàn)這種結(jié)果。在一個(gè)實(shí)施例中,邏輯矩陣模塊2010可將每個(gè)關(guān)聯(lián)的道路的RPO值路由至各個(gè)行和列,從而導(dǎo)致X乘X矩陣??梢虼酸槍?duì)所有其它道路做出每個(gè)道路的矩陣比較。具體地講,可將每個(gè)道路的RPO與每個(gè)其它道路的RPO進(jìn)行比較。如果行的RPO具有小于或等于列的RPO的RP0,則關(guān)聯(lián)的元素被設(shè)置為“I”。否則,元素可被設(shè)置為“O”。
[0154]在圖21的例子中,道路O可包括二十的RP0,道路I可包括十五的RP0,道路2可包括二的RP0,道路3可包括三十的RP0,其它值可能未被示出,并且道路X可包括四的RP0。矩陣比較可導(dǎo)致道路2具有全部“I”,因?yàn)樗ㄗ畹蚏P0?;诟鱾€(gè)行中的“I”的數(shù)量,道路的優(yōu)先級(jí)可以是道路2、道路X、道路1、道路O和道路3。邏輯矩陣2100可被輸出為L。單個(gè)邏輯矩陣2100可被輸出給每個(gè)處理模塊2002。
[0155]然而,如上所述,這些按優(yōu)先次序排列的值可能不足以考慮有效性或端口綁定。如果執(zhí)行端口 1832的數(shù)量是二并且ISU 1802僅選擇這些道路中的前兩個(gè)道路,則道路2和道路X將會(huì)被選擇以分派給執(zhí)行端口 1832。然而,如果道路2因?yàn)樗墓梢驯蝗∠荒軋?zhí)行,則ISU 1802將會(huì)具有減少的吞吐量,因?yàn)镮SU 1802原本可替代于道路2而安排道路I。另外,道路O可代表綁定到列舉為portO的執(zhí)行端口 1832上的執(zhí)行的重要功能。在沒有優(yōu)先化分析的情況下,替代于道路X,道路2可被分派以在這種端口上執(zhí)行。因此,ISU 1802包括附加的分析。
[0156]圖22圖示根據(jù)本公開的實(shí)施例的修改的邏輯矩陣L’2200和MMl 2012的示例性操作??舍槍?duì)Y個(gè)執(zhí)行端口 1832中的每個(gè)執(zhí)行圖22的操作。圖22圖示針對(duì)給定執(zhí)行端口 N的這些操作。
[0157]作為它的輸入,MMl2012可接受邏輯矩陣L 2100以及與X個(gè)未決指令1834中的每個(gè)未決指令關(guān)聯(lián)的道路,其中每個(gè)道路可包括用于各未決指令的PB向量2006和有效性位1920信息。MMl 2012可使用矩陣分析確定來自邏輯矩陣L 2100的每個(gè)元素的信息的兩個(gè)位。稱為“A”和“B”的兩個(gè)位可被作為一對(duì)存儲(chǔ)在所獲得的修改的邏輯矩陣L" 2200的每個(gè)元素中。
[0158]對(duì)于輸出的第一個(gè)位“A”,MMl 2012可根據(jù)有效性位1920確定關(guān)聯(lián)的道路或未決執(zhí)行是否有效以及關(guān)聯(lián)的道路是否將要參與由MMl 2012表示的端口N。如果是這樣的話,則對(duì)于位“A”,行的所有元素將會(huì)復(fù)制邏輯矩陣L 2100的對(duì)應(yīng)值,無論這種值是“I”還是“O”。這可指示:關(guān)聯(lián)的指令將會(huì)參與由執(zhí)行端口 N進(jìn)行的選擇,并且可在這種選擇中考慮在邏輯矩陣L 2100中確定的指令的優(yōu)先級(jí)。如果關(guān)聯(lián)的道路或未決執(zhí)行無效,或者如果它將會(huì)參與除端口N之外的另一端口,則對(duì)于位“A”,行的所有元素將會(huì)是“O”。這可指示:關(guān)聯(lián)的指令將不會(huì)參與由執(zhí)行端口 N進(jìn)行的選擇。
[0159]在一個(gè)實(shí)施例中,通過將邏輯與(AND)操作應(yīng)用于邏輯矩陣2100的關(guān)聯(lián)的元素(Li, j)、道路的PB向量2006信息的端口N值(道路iPB[N])和關(guān)聯(lián)的道路的有效性位1920(道路力),可確定修改的矩陣L’ 2200的每個(gè)元素的位“A”。
[0160]在各種實(shí)施例中,可在圖22的操作的周期的前一周期創(chuàng)建邏輯矩陣L2100。因此,其中代表RPO比較的位值可在沒有可見性的情況下被布置在目前周期內(nèi)可用的數(shù)據(jù)中。另外,在未考慮有效性或端口參與的情況下做出如圖21中所示的位值。
[0161]對(duì)于輸出的第二個(gè)位“B”,在一個(gè)實(shí)施例中,MMl2012可確定用于相對(duì)于另一指令優(yōu)先考慮一個(gè)指令的信息。在另一實(shí)施例中,這種優(yōu)先化信息可被用于指令之間的束縛打破。這種束縛可源于對(duì)在“A”中表示的位的修改。在另一實(shí)施例中,麗I 2012可確定指代每個(gè)列的單個(gè)值,其中每個(gè)列與X個(gè)未決執(zhí)行1834的各個(gè)道路或未決執(zhí)行關(guān)聯(lián)。因此,道路O創(chuàng)建針對(duì)所有行的“B”的columnO的值,道路I創(chuàng)建針對(duì)所有行的“B”的columnl的值,等等。修改的邏輯矩陣L’ 2200的每個(gè)位“B”可指示指令是否將會(huì)參與分派邏輯。
[0162]另外,在一個(gè)實(shí)施例中,每個(gè)位“B”可被用于解決優(yōu)先級(jí)沖突。這種優(yōu)先級(jí)沖突可源自利用位“A”做出的值的修改。位“A”的修改可導(dǎo)致邏輯矩陣L 2100的一些“I”值被重置為“O”。與邏輯矩陣L 2100的前一對(duì)應(yīng)行相比,修改的邏輯矩陣L’ 2200中的給定行的值可根據(jù)“A”位而具有更少的“I”。另外,修改的邏輯矩陣L’ 2200中的給定行的值可現(xiàn)在具有與用于同一執(zhí)行端口 1832的修改的邏輯矩陣L’ 2200內(nèi)的另一行相同的數(shù)量的“I”。為了解決這些束縛,如結(jié)合圖23所述,“B”可在邏輯或(0R)操作中與“A”組合。
[0163]在一個(gè)實(shí)施例中,通過對(duì)道路的PB向量2006信息的端口N值(道路jPB[N])和關(guān)聯(lián)的道路的有效性位1920 (道路W)執(zhí)行邏輯與操作,可做出每個(gè)位“B”。結(jié)果可被求反并且存儲(chǔ)為位“B”。如果關(guān)聯(lián)的道路內(nèi)的指令有效并且被綁定到MM2 2 014的執(zhí)彳丁端口 N,則關(guān)聯(lián)的列內(nèi)的每個(gè)位“B”將會(huì)被設(shè)置為“O”。因此,位“B”中的“O”可指示:關(guān)聯(lián)的道路正在參與針對(duì)端口 N的指令選擇。否則,位“B”可被設(shè)置為“I”并且指示將不會(huì)存在參與。
[0164]圖23圖示根據(jù)本公開的實(shí)施例的另一修改的邏輯矩陣L"2300和MM2 2014的示例性操作。可針對(duì)Y個(gè)執(zhí)行端口 1832中的每個(gè)執(zhí)行圖23的操作。圖23圖示針對(duì)給定執(zhí)行端口 N的這些操作。MM2 2014可執(zhí)行束縛打破和由MM2 2012編譯的數(shù)據(jù)的其它解釋。
[0165]作為它的輸入,MM2 2014可接受修改的邏輯矩陣L’ 22000MM2 2014可使用矩陣分析從來自修改的邏輯矩陣L’ 2200的每個(gè)元素的信息的兩個(gè)位確定信息的單個(gè)位。修改的邏輯矩陣L" 2300中的所獲得的信息的位可指示與用于應(yīng)用于給定執(zhí)行端口N的矩陣中的給定行關(guān)聯(lián)的指令的優(yōu)先級(jí)。在一個(gè)實(shí)施例中,邏輯矩陣L" 2300的包括全部“I”的行(如果存在任何這樣的行的話)可對(duì)應(yīng)于未決指令1834的將要被路由至執(zhí)行端口 N 1834的指令。
[0166]如上所述,在位于修改的邏輯矩陣L’2200的位置(i,j)的每個(gè)元素,位“A”將會(huì)圖示在考慮到RP0、有效性和端口綁定的情況下的針對(duì)執(zhí)行端口 N的instruct1m相對(duì)于instruct1n的優(yōu)先級(jí)。例如,針對(duì)在位置(i,j)的給定位“A”的“I”值可指示道路,將會(huì)被給予大于道路」的優(yōu)先級(jí)?!癘”值意味著:兩個(gè)道路將會(huì)被給予相同的優(yōu)先級(jí)。另外,如上所述,在位于修改的邏輯矩陣L’ 2200的位置(i,j)的每個(gè)元素,位“B”將會(huì)圖示(利用“O”)指令或道路正在參與用于執(zhí)行端口N的指令選擇。另外,位“B”可幫助決定原本針對(duì)其各自的行內(nèi)的“I”的數(shù)量受到束縛的兩個(gè)指令之間的優(yōu)先級(jí)。
[0167]在一個(gè)實(shí)施例中,MM2 2014可將邏輯或操作應(yīng)用于修改的矩陣L’ 2200的每個(gè)元素。結(jié)果可包括大小X乘X的修改的邏輯矩陣L" 2300,其中修改的邏輯矩陣L" 2300的每個(gè)元素(i,j)等于L’u或ΙΛ。
[0168]由MM22014執(zhí)行的優(yōu)先級(jí)分析可被圖示在真值表2302中。修改的邏輯矩陣L’2100的給定值、某些結(jié)果被圖示。例如,在2304和2308,如果Aij是零或一并且Bj是零,則Bj是零的事實(shí)說明道路j將要參與用于執(zhí)行端口的指令選擇。在Alj內(nèi)無論什么值應(yīng)該被傳播以用于最后考慮。因此,在一個(gè)實(shí)施例中,如果給定未決指令1834被綁定到執(zhí)行端口 1832并且未決指令1834來自有效的股1824,則將會(huì)考慮指令相對(duì)于其它指令的優(yōu)先級(jí)。
[0169]在另一例子中,在2306和2310處,如果Aij是零或一并且Bj是一,則Bj是一的事實(shí)說明道路」將不會(huì)參與用于執(zhí)行端口的指令選擇。不管Alj的值如何,道路」應(yīng)該被給予小于道路工的優(yōu)先級(jí)。因此,應(yīng)該利用T傳播道路工。針對(duì)道路工的行內(nèi)的“I”值將會(huì)增加它的優(yōu)先級(jí)。因此,在一個(gè)實(shí)施例中,如果給定未決指令1834未被綁定到執(zhí)行端口 1832,或者如果給定未決指令1834來自有效的股1824,則應(yīng)該減小指令相對(duì)于其它指令的優(yōu)先級(jí)。
[0170]所獲得的修改的矩陣L"2300可包括具有全部“I”的單個(gè)行,其中所有其它行都是“O”。這可因此識(shí)別與將會(huì)被路由至執(zhí)行端口 N 1832的未決指令1834中的單個(gè)未決指令對(duì)應(yīng)的行。
[0171]圖24圖示根據(jù)本公開的實(shí)施例的MM32016的示例性操作。在一個(gè)實(shí)施例中,圖24還可圖示指令選擇器2018將指定指令輸出給執(zhí)行端口 1832的示例性操作??舍槍?duì)Y個(gè)執(zhí)行端口 1832中的每個(gè)執(zhí)行端口執(zhí)行圖24的操作。圖24圖示針對(duì)給定執(zhí)行端口 N的這些操作。MM3 2016和指令選擇器2018可從未決指令1834選擇最合適的指令并且將最合適的指令輸出給執(zhí)行端口 1832。
[0172]MM3 2016可接受修改的邏輯矩陣L〃 2300作為它的輸入。修改的邏輯矩陣L〃 2300的每個(gè)行可被評(píng)估以確定哪個(gè)行包括全部“I”。在一個(gè)實(shí)施例中,可通過將邏輯與操作應(yīng)用于每個(gè)行的所有元素來執(zhí)行這種評(píng)估。結(jié)果可包括向量或I乘Y矩陣。在另一實(shí)施例中,結(jié)果可包括在與將要被選擇并且路由至執(zhí)行端口 1832的未決指令1834的索引對(duì)應(yīng)的位置的單個(gè)“I”。這種位置可被稱為M。分派向量可被指定為D并且可包括“獨(dú)熱”值,因?yàn)樗▎蝹€(gè)“I”,其中其余元素是“O”。
[0173]MM3 2016可將分派向量D傳送給處理器1804的任何合適的元件以選擇指定指令并且將其路由至執(zhí)行端口 1832。在一個(gè)實(shí)施例中,MM3 2016可將分派向量D傳送給指令選擇器2018。指令選擇器2018可利用任何合適的機(jī)構(gòu)(諸如,復(fù)用器或其它瞬時(shí)操作)解析分派向量D以識(shí)別位置M,并且隨后從未決指令1834選擇元素M。所獲得的指令可被路由至指定執(zhí)行端口 1832。
[0174]處理矩陣2002的執(zhí)行可被并行地并且在單個(gè)執(zhí)行周期內(nèi)執(zhí)行,從而每個(gè)周期在每個(gè)執(zhí)行端口 1832中加載單個(gè)指令。
[0175]圖25圖示根據(jù)本公開的實(shí)施例的用于分派指令的方法2500的示例性實(shí)施例。在一個(gè)實(shí)施例中,可在多股無序處理器上執(zhí)行方法2500。方法2500可在任何合適的點(diǎn)開始,并且可按照任何合適的次序執(zhí)行。在一個(gè)實(shí)施例中,方法2500可在2505開始。
[0176]在2505處,可由例如前端獲取將要在處理器上執(zhí)行的指令。指令可包括將要由處理器的各種執(zhí)行單元的Y個(gè)不同執(zhí)行端口執(zhí)行的X個(gè)不同股中的指令。在2510處,位于每個(gè)股的頭的指令可被識(shí)別。因此,可存在將要在Y個(gè)不同執(zhí)行端口上執(zhí)行的X個(gè)不同未決指令。未決指令可被存儲(chǔ)在第一組硬件結(jié)構(gòu)(諸如,觸發(fā)器)中。2510和隨后的步驟可由ISU執(zhí)行。
[0177]在一個(gè)實(shí)施例中,在2515處,可針對(duì)每個(gè)指令確定指令是否包括準(zhǔn)備好的操作數(shù)。例如,可通過確定針對(duì)指令的目的和所有數(shù)據(jù)源是否可用來做出這種確定。在另一實(shí)施例中,可確定指令源自于其的股是否有效。例如,可通過確定線程是否被取消或刪除來做出這種確定。如果操作數(shù)準(zhǔn)備好并且股有效,則方法2500可前進(jìn)至2520 ο如果操作數(shù)未準(zhǔn)備好,或者如果股無效,則方法2500可前進(jìn)至2525。
[0178]在2520處,可確定指令有效。在一個(gè)實(shí)施例中,關(guān)于這種有效性的信息可被與指令一起存儲(chǔ)。這種信息可被例如存儲(chǔ),但存儲(chǔ)為有效性位。方法2500可前進(jìn)至2530。
[0179]在2525處,可確定指令無效。在一個(gè)實(shí)施例中,關(guān)于這種無效的信息可被與指令一起存儲(chǔ)。這種信息可被例如存儲(chǔ),但存儲(chǔ)為有效性位。方法2500可前進(jìn)至2530。
[0180]在2530處,在一個(gè)實(shí)施例中,RPO優(yōu)先級(jí)矩陣L可被確定??赏ㄟ^執(zhí)行每個(gè)指令與另一指令的矩陣比較來創(chuàng)建矩陣。例如,在矩陣中的每個(gè)位置(i,j),如果instruct1ru的RPO小于或等于instruct1nj的RPO(指示較高優(yōu)先級(jí)),則在(i,j)的矩陣被設(shè)置為“I”。
[0181]可針對(duì)每個(gè)執(zhí)行端口N執(zhí)行下面的元件2540至2565。另外,每個(gè)端口的執(zhí)行可以是并行的。另外,這些可全部在單個(gè)時(shí)鐘周期內(nèi)執(zhí)行。下面討論應(yīng)用于給定執(zhí)行端口N。另外,指令可被轉(zhuǎn)發(fā)給第二組硬件結(jié)構(gòu)(諸如,觸發(fā)器)。
[0182]在2540處,來自每個(gè)指令的用于執(zhí)行端口N的端口綁定信息以及每個(gè)指令的有效性可被確定。這種信息可被接收作為輸入。
[0183]在2545處,在一個(gè)實(shí)施例中,優(yōu)先級(jí)矩陣L內(nèi)的元素的RPO優(yōu)先級(jí)可基于綁定信息和有效性而被降低。例如,如果指令在它在矩陣L中的元素中被從RPO給予優(yōu)先級(jí),但指令來自被刪除的股,指令未準(zhǔn)備好,或者指令未被綁定到目前考慮的執(zhí)行端口 N,則以前建立的優(yōu)先級(jí)可被去除或降低。如果指令來自有效的股,指令準(zhǔn)備好,以及指令被綁定到目前考慮的執(zhí)行端口 N,則可保持以前的RPO優(yōu)先級(jí)。通過對(duì)因素應(yīng)用邏輯與并且將結(jié)果在修改的邏輯矩陣L ’中存儲(chǔ)為第一個(gè)位,可執(zhí)行這些操作。
[0184]在2550處,可確定其它指令相對(duì)于每個(gè)指令的相對(duì)優(yōu)先級(jí)。可使用綁定信息和有效性信息做出這種確定。因?yàn)榻壎ㄐ畔⒖商囟ㄓ谀壳皥?zhí)行端口N,所以相對(duì)于未綁定到目前執(zhí)行端口N的另一執(zhí)行,綁定到執(zhí)行端口N的指令可接收優(yōu)先化信息。另外,相對(duì)于無效指令,可優(yōu)先考慮有效指令。
[0185]在2555處,使用應(yīng)用于2545的調(diào)整的RPO優(yōu)先級(jí)的2550的相對(duì)優(yōu)先級(jí)可解決指令之間的束縛或模糊。無效或未綁定到正在討論的端口的指令可被掩蔽,從而它們包括全部“O”。另外,修改的邏輯矩陣內(nèi)的每個(gè)行可包括全部“O”或全部“I”。
[0186]在2560處,可通過將邏輯與應(yīng)用于修改的邏輯矩陣中的每個(gè)行(與指令對(duì)應(yīng)的每個(gè)行)的所有元素來確定“獨(dú)熱”向量。向量可包括位于將要被輸出到給定執(zhí)行端口 N的指令的索引處的“I”。在2565處,指令可被加載。
[0187]在2570處,指令可被執(zhí)行。在2575處,可確定是否重復(fù)。如果重復(fù),則方法2500可前進(jìn)至2505。如果不重復(fù),則方法2500可結(jié)束。
[0188]可通過任何合適的準(zhǔn)則來開始方法2500。另外,雖然方法2500描述特定元件的操作,但方法2500可由任何合適的組合或類型的元件執(zhí)行。例如,方法2500可由圖1-24中圖示的元件或可操作于實(shí)現(xiàn)方法2500的任何其它系統(tǒng)實(shí)現(xiàn)。如此,用于方法2500的優(yōu)選初始化點(diǎn)和包括方法2500的元件的次序可取決于選擇的實(shí)現(xiàn)方式。在一些實(shí)施例中,一些元件可被可選地省略、重新組織、重復(fù)或組合。例如,可針對(duì)處理器的每個(gè)執(zhí)行端口并行地執(zhí)行元件2540-2565的多個(gè)分支。在另一例子中,可針對(duì)每個(gè)未決指令并行地執(zhí)行元件2515-2525。
[0189]本文中公開的機(jī)構(gòu)的實(shí)施例可被實(shí)現(xiàn)于硬件、軟件、固件或這種實(shí)現(xiàn)方案的組合。本公開的實(shí)施例可被實(shí)現(xiàn)為在可編程系統(tǒng)上執(zhí)行的計(jì)算機(jī)程序或程序代碼,所述可編程系統(tǒng)包括至少一個(gè)處理器、存儲(chǔ)系統(tǒng)(包括易失性和非易失性存儲(chǔ)器和/或存儲(chǔ)元件)、至少一個(gè)輸入裝置和至少一個(gè)輸出裝置。
[0190]程序代碼可被應(yīng)用于輸入指令以執(zhí)行本文中描述的功能并且生成輸出信息。以已知方式,所述輸出信息可被應(yīng)用于一個(gè)或多個(gè)輸出裝置。為了本申請(qǐng)的目的,處理系統(tǒng)可包括具有處理器(諸如例如:數(shù)字信號(hào)處理器(DSP)、微控制器、專用集成電路(ASIC)或微處理器)的任何系統(tǒng)。
[0191]可按照高級(jí)程序編程語言或面向?qū)ο蟮木幊陶Z言實(shí)現(xiàn)程序代碼以與處理系統(tǒng)通信。根據(jù)需要,也可按照匯編或機(jī)器語言實(shí)現(xiàn)程序代碼。事實(shí)上,本文中描述的機(jī)構(gòu)不在范圍上局限于任何特定編程語言。在任何情況下,所述語言可以是編譯或解釋語言。
[0192]至少一個(gè)實(shí)施例的一個(gè)或多個(gè)方面可由存儲(chǔ)在機(jī)器可讀介質(zhì)上的代表性指令實(shí)現(xiàn),所述機(jī)器可讀介質(zhì)代表處理器內(nèi)的各種邏輯,當(dāng)由機(jī)器讀取所述代表性指令時(shí),所述代表性指令使所述機(jī)器制造用于執(zhí)行本文中描述的技術(shù)的邏輯。稱為“IP核”的這種表示可被存儲(chǔ)在有形、機(jī)器可讀介質(zhì)中并且被提供給各種顧客或制造設(shè)施以加載到實(shí)際制作所述邏輯或處理器的加工機(jī)器中。這種機(jī)器可讀存儲(chǔ)介質(zhì)可包括如以上所討論的那些機(jī)器可讀存儲(chǔ)介質(zhì)。
[0193]因此,本公開的實(shí)施例還可包括非暫態(tài)有形機(jī)器可讀介質(zhì),所述非暫態(tài)有形機(jī)器可讀介質(zhì)包含指令或包含設(shè)計(jì)數(shù)據(jù)(諸如,硬件描述語言(HDL)),其定義本文中描述的結(jié)構(gòu)、電路、設(shè)備、處理器和/或系統(tǒng)特征。這種實(shí)施例也可被稱為程序產(chǎn)品。
[0194]在一些情況下,指令轉(zhuǎn)換器可被用于將指令從源指令集轉(zhuǎn)換成目標(biāo)指令集。例如,指令轉(zhuǎn)換器可將指令翻譯(例如,使用靜態(tài)二進(jìn)制翻譯、包括動(dòng)態(tài)編譯的動(dòng)態(tài)二進(jìn)制翻譯)、變換、仿真或以其它方式轉(zhuǎn)換成將要由核處理的一個(gè)或多個(gè)其它指令。指令轉(zhuǎn)換器可被實(shí)現(xiàn)于軟件、硬件、固件或者其組合。指令轉(zhuǎn)換器可位于處理器上、不位于處理器上或者部分位于處理器上并且部分不位于處理器上。
[0195]因此,公開了用于執(zhí)行根據(jù)至少一個(gè)實(shí)施例的一個(gè)或多個(gè)指令的技術(shù)。盡管已在附圖中描述和示出某些示例性實(shí)施例,但應(yīng)該理解,這種實(shí)施例僅說明而非限制其它實(shí)施例,并且這種實(shí)施例不限于示出和描述的特定構(gòu)造和布置,因?yàn)樵谘芯勘竟_時(shí),對(duì)于本領(lǐng)域普通技術(shù)人員而言,可想到各種其它變型。在諸如增長快速并且不容易預(yù)見進(jìn)一步的進(jìn)步的這種技術(shù)的技術(shù)的領(lǐng)域中,在不脫離本公開的原理或所附權(quán)利要求的范圍的情況下,通過能夠?qū)崿F(xiàn)技術(shù)進(jìn)步,可促進(jìn)在布置和細(xì)節(jié)方面容易地修改公開的實(shí)施例。
【主權(quán)項(xiàng)】
1.一種處理器,包括:第一邏輯,用于獲取指令流,所述指令流被劃分為將要在一個(gè)或多個(gè)執(zhí)行端口上加載 的多個(gè)股;第二邏輯,用于識(shí)別多個(gè)未決指令,每個(gè)未決指令位于一個(gè)股的各自的頭;第三邏輯,用于確定哪些股有效;第四邏輯,用于確定每個(gè)未決指令的程序次序;和第五邏輯,用于基于每個(gè)未決指令的程序次序以及每個(gè)股是否有效將未決指令與執(zhí)行 端口進(jìn)行匹配。2.如權(quán)利要求1所述的處理器,還包括:第六邏輯,用于確定一個(gè)未決指令與一個(gè)執(zhí)行端口的端口綁定;和第七邏輯,用于基于每個(gè)未決指令的程序次序、每個(gè)股是否有效以及端口綁定將未決 指令與執(zhí)行端口進(jìn)行匹配。3.如權(quán)利要求1所述的處理器,其中用于將未決指令與執(zhí)行端口進(jìn)行匹配的第五邏輯 還要在單個(gè)處理器時(shí)鐘周期內(nèi)執(zhí)行。4.如權(quán)利要求1所述的處理器,還包括:第六邏輯,用于針對(duì)執(zhí)行端口中的給定一個(gè)生 成獨(dú)熱向量,所述向量包括位于將要被分派給給定執(zhí)行端口的一個(gè)未決指令的索引的單個(gè) 正位。5.如權(quán)利要求1所述的處理器,還包括:第六邏輯,用于將未決指令存儲(chǔ)在第一級(jí)中;第七邏輯,用于評(píng)估必要的數(shù)據(jù)是否可用于執(zhí)行未決指令;第八邏輯,用于基于必要的數(shù)據(jù)可用于執(zhí)行未決指令的評(píng)估使未決指令前進(jìn)至第二 級(jí);和第九邏輯,用于將針對(duì)每個(gè)未決指令的有效性位存儲(chǔ)在第二級(jí)中,有效性位指示各個(gè) 股是否有效以及必要的數(shù)據(jù)是否可用于執(zhí)行各未決指令。6.如權(quán)利要求1所述的處理器,還包括:第六邏輯,用于執(zhí)行每個(gè)未決指令的程序次序與其它未決指令的程序次序的矩陣比較 并且將結(jié)果存儲(chǔ)在邏輯矩陣中,每個(gè)未決指令由邏輯矩陣中的各個(gè)行表示,每個(gè)未決指令 的優(yōu)先級(jí)由各個(gè)行中的正位的量表示;和第七邏輯,用于調(diào)整邏輯矩陣中針對(duì)各未決指令中的每個(gè)未決指令的正位以產(chǎn)生與一 個(gè)執(zhí)行端口關(guān)聯(lián)的修改的邏輯矩陣,調(diào)整基于各個(gè)股是否有效。7.如權(quán)利要求6所述的處理器,還包括:第八邏輯,用于基于修改的邏輯矩陣和端口綁 定信息產(chǎn)生獨(dú)熱分派向量,所述向量包括位于將要被分派給與修改的邏輯矩陣關(guān)聯(lián)的一個(gè) 執(zhí)行端口的一個(gè)未決指令的索引的單個(gè)正位。8.—種方法,所述方法包括在處理器內(nèi):獲取指令流,所述指令流被劃分為用于在一個(gè)或多個(gè)執(zhí)行端口上加載的多個(gè)股;識(shí)別多個(gè)未決指令,每個(gè)未決指令位于一個(gè)股的各自的頭;確定哪些股有效;確定每個(gè)未決指令的程序次序;以及基于每個(gè)未決指令的程序次序以及每個(gè)股是否有效將未決指令與執(zhí)行端口進(jìn)行匹配。9.如權(quán)利要求8所述的方法,還包括:確定一個(gè)未決指令與一個(gè)執(zhí)行端口的端口綁定;以及基于每個(gè)未決指令的程序次序、每個(gè)股是否有效以及端口綁定將未決指令與執(zhí)行端口 進(jìn)行匹配。10.如權(quán)利要求8所述的方法,其中在單個(gè)處理器時(shí)鐘周期內(nèi)執(zhí)行將未決指令與執(zhí)行端 口進(jìn)行匹配。11.如權(quán)利要求8所述的方法,還包括:針對(duì)執(zhí)行端口中的給定一個(gè)生成獨(dú)熱向量,所述 向量包括位于將要被分派給給定執(zhí)行端口的一個(gè)未決指令的索引的單個(gè)正位。12.如權(quán)利要求8所述的方法,還包括:將未決指令存儲(chǔ)在第一級(jí)中;評(píng)估必要的數(shù)據(jù)是否可用于執(zhí)行未決指令;基于必要的數(shù)據(jù)可用于執(zhí)行未決指令的評(píng)估使未決指令前進(jìn)至第二級(jí);以及將針對(duì)每個(gè)未決指令的有效性位存儲(chǔ)在第二級(jí)中,有效性位指示各個(gè)股是否有效以及 必要的數(shù)據(jù)是否可用于執(zhí)行各未決指令。13.如權(quán)利要求8所述的方法,還包括:執(zhí)行每個(gè)未決指令的程序次序與其它未決指令的程序次序的矩陣比較并且將結(jié)果存 儲(chǔ)在邏輯矩陣中,每個(gè)未決指令由邏輯矩陣中的各個(gè)行表示,每個(gè)未決指令的優(yōu)先級(jí)由各 個(gè)行中的正位的量表示;以及調(diào)整邏輯矩陣中針對(duì)各未決指令中的每個(gè)未決指令的正位以產(chǎn)生與一個(gè)執(zhí)行端口關(guān) 聯(lián)的修改的邏輯矩陣,調(diào)整基于各個(gè)股是否有效。14.一種系統(tǒng),包括:第一邏輯,用于獲取指令流,所述指令流被劃分為用于在一個(gè)或多個(gè)執(zhí)行端口上加載 的多個(gè)股;第二邏輯,用于識(shí)別多個(gè)未決指令,每個(gè)未決指令位于一個(gè)股的各自的頭;第三邏輯,用于確定哪些股有效;第四邏輯,用于確定每個(gè)未決指令的程序次序;和第五邏輯,用于基于每個(gè)未決指令的程序次序以及每個(gè)股是否有效將未決指令與執(zhí)行 端口進(jìn)行匹配。15.如權(quán)利要求14所述的系統(tǒng),還包括:第六邏輯,用于確定一個(gè)未決指令與一個(gè)執(zhí)行端口的端口綁定;和第七邏輯,用于基于每個(gè)未決指令的程序次序、每個(gè)股是否有效以及端口綁定將未決 指令與執(zhí)行端口進(jìn)行匹配。16.如權(quán)利要求14所述的系統(tǒng),其中用于將未決指令與執(zhí)行端口進(jìn)行匹配的第五邏輯 還要在單個(gè)處理器時(shí)鐘周期內(nèi)執(zhí)行。17.如權(quán)利要求14所述的系統(tǒng),還包括:第六邏輯,用于針對(duì)執(zhí)行端口中的給定一個(gè)生 成獨(dú)熱向量,所述向量包括位于將要被分派給給定執(zhí)行端口的一個(gè)未決指令的索引的單個(gè) 正位。18.如權(quán)利要求14所述的系統(tǒng),還包括:第六邏輯,用于將未決指令存儲(chǔ)在第一級(jí)中;第七邏輯,用于評(píng)估必要的數(shù)據(jù)是否可用于執(zhí)行未決指令;第八邏輯,用于基于必要的數(shù)據(jù)可用于執(zhí)行未決指令的評(píng)估使未決指令前進(jìn)至第二 級(jí);和第九邏輯,用于將針對(duì)每個(gè)未決指令的有效性位存儲(chǔ)在第二級(jí)中,有效性位指示各個(gè) 股是否有效以及必要的數(shù)據(jù)是否可用于執(zhí)行各未決指令。19.如權(quán)利要求14所述的系統(tǒng),還包括:第六邏輯,用于執(zhí)行每個(gè)未決指令的程序次序與其它未決指令的程序次序的矩陣比較 并且將結(jié)果存儲(chǔ)在邏輯矩陣中,每個(gè)未決指令由邏輯矩陣中的各個(gè)行表示,每個(gè)未決指令 的優(yōu)先級(jí)由各個(gè)行中的正位的量表示;和第七邏輯,用于調(diào)整邏輯矩陣中針對(duì)各未決指令中的每個(gè)未決指令的正位以產(chǎn)生與一 個(gè)執(zhí)行端口關(guān)聯(lián)的修改的邏輯矩陣,調(diào)整基于各個(gè)股是否有效。20.如權(quán)利要求14所述的系統(tǒng),還包括:第八邏輯,用于基于修改的邏輯矩陣和端口綁 定信息產(chǎn)生獨(dú)熱分派向量,所述向量包括位于將要被分派給與修改的邏輯矩陣關(guān)聯(lián)的一個(gè) 執(zhí)行端口的一個(gè)未決指令的索引的單個(gè)正位。
【文檔編號(hào)】G06F9/38GK106030519SQ201480076465
【公開日】2016年10月12日
【申請(qǐng)日】2014年3月27日
【發(fā)明人】J.埃爾, N.科薩雷夫, S.Y.施什洛夫, A.西夫特索夫, B.A.巴巴嚴(yán), A.V.布圖佐夫
【申請(qǐng)人】英特爾公司