加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器內(nèi)容管理的制作方法
【專(zhuān)利摘要】本發(fā)明涉及加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器內(nèi)容管理。實(shí)施例提供亂序處理器中管理加載-儲(chǔ)存相關(guān)性的方法和裝置。加載儲(chǔ)存相關(guān)性預(yù)測(cè)器可包括用于儲(chǔ)存用于已經(jīng)發(fā)現(xiàn)是相關(guān)的且亂序執(zhí)行的加裁-儲(chǔ)存對(duì)的條目的表。表中的每個(gè)條目包括計(jì)數(shù)器以指示相關(guān)性預(yù)測(cè)的強(qiáng)度。如果計(jì)數(shù)器在閾值以上,則對(duì)加載-儲(chǔ)存對(duì)強(qiáng)制相關(guān)性。如果計(jì)數(shù)器低于閾值,則不對(duì)加載-儲(chǔ)存對(duì)強(qiáng)制相關(guān)性。當(dāng)儲(chǔ)存被派遣時(shí),表被搜索,且表中的任何匹配條目被激活。如果加載被派遣,匹配激活條目,且計(jì)數(shù)器在閾值以上,則加載將等待,直到對(duì)應(yīng)的儲(chǔ)存發(fā)布才發(fā)布。
【專(zhuān)利說(shuō)明】加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器內(nèi)容管理
【技術(shù)領(lǐng)域】
[0001]本發(fā)明總體上涉及處理器,更特別地,涉及處理器中管理加載-儲(chǔ)存相關(guān)性的方法和積制。
【背景技術(shù)】
[0002]超標(biāo)量處理器試圖通過(guò)在每個(gè)時(shí)鐘周期發(fā)布并執(zhí)行多條指令并且通過(guò)采用符合設(shè)計(jì)的最高可行時(shí)鐘頻率來(lái)獲得高性能。提高每時(shí)針周期執(zhí)行的指令擻量的一種方式是采取亂序執(zhí)行(out of order execution) 0在亂序執(zhí)行中,與程序序列(或“程序順序”)中指定的順序相比,可采取不同的順序執(zhí)行指令。
[0003]一些處理器在亂序和/或推理性地調(diào)度指令方面盡可能地激進(jìn)以試圖最大化所實(shí)現(xiàn)的性能增益。例如,希望在較老的儲(chǔ)存存儲(chǔ)器操作之前調(diào)度加載存儲(chǔ)器操作,因?yàn)榧虞d存儲(chǔ)器操作更一般地具有相關(guān)指令。然而在某些情況下,加載存儲(chǔ)器操作可能依賴(lài)于較老的儲(chǔ)存存儲(chǔ)器操作(例如,儲(chǔ)存存儲(chǔ)器操作更新了加載存儲(chǔ)器操作所訪問(wèn)的至少一個(gè)字節(jié))。在這種情況下,如果在儲(chǔ)存存儲(chǔ)器操作之前執(zhí)行加載存儲(chǔ)器操作,則加載存儲(chǔ)器操作將被錯(cuò)誤地執(zhí)行。如果加載存儲(chǔ)器操作在相關(guān)的較老儲(chǔ)存存儲(chǔ)器操作之前執(zhí)行,則處理器可能需要被清除和重定向,這會(huì)降低處理器性能。
[0004]如果在程序順序中操作在另一操作之前,那么該操作比另一操作要老。如果在程序順序中操作跟隨在另一操作之后,那么該操作比另一操作要年青。類(lèi)似地,操作可以被表示為在另一操作之前或者跟隨在其后,或者可以被稱(chēng)為先前操作、在前操作、隨后操作等。這種引用可以涉及操作的程序順序。此外,“加載存儲(chǔ)器操作”或“加載操作”可以涉及教據(jù)從存儲(chǔ)器或高速緩存到處理器的傳輸,“儲(chǔ)存存儲(chǔ)器操作”或“儲(chǔ)存操作”可以涉及數(shù)據(jù)從處理器到存儲(chǔ)器或高速緩存的操作。這里“加載操作”和“儲(chǔ)存澡作”可以被更簡(jiǎn)潔地分別稱(chēng)為“加載”和“儲(chǔ)存”。
[0005]雖然加載和儲(chǔ)存之間的相關(guān)性是動(dòng)態(tài)的,但是防止這些事件的機(jī)制通常本質(zhì)上是靜態(tài)的。因此,為了防止加載-儲(chǔ)存對(duì)的亂序違規(guī),處理器更可能過(guò)度補(bǔ)償而不是激進(jìn)地亂序調(diào)度。在這種情況下,處理器將不必要地強(qiáng)制指令按順序。如果不再要求相關(guān)性但仍然強(qiáng)制執(zhí)行,那么存儲(chǔ)器級(jí)別的并行性將被降低,處理器效率下降。
【發(fā)明內(nèi)容】
[0006]提出用于預(yù)測(cè)加載-儲(chǔ)存相關(guān)性的系統(tǒng)、裝置、處理器和方法。處理器可至少包括派遣單元、加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器、以及保留站。當(dāng)檢測(cè)到較新加載和相關(guān)的較老儲(chǔ)存之間的順序違規(guī)時(shí),這構(gòu)成用于加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器的訓(xùn)練事件。在加載-儲(chǔ)存對(duì)已經(jīng)被訓(xùn)練之后,加載下次經(jīng)過(guò)派遣單元時(shí),預(yù)測(cè)器可以添加相關(guān)性到該加載。這種添加的相關(guān)性表示,該加載直到儲(chǔ)存已經(jīng)被調(diào)度才被調(diào)度出保留站。
[0007]在一實(shí)施例中,預(yù)測(cè)器表可用來(lái)儲(chǔ)存已發(fā)現(xiàn)相關(guān)的加載-儲(chǔ)存對(duì)。當(dāng)較新加載在共享地址相關(guān)性的較老儲(chǔ)存之前發(fā)布時(shí),可以在預(yù)測(cè)器表格中分配一條目,在一實(shí)施例中,該條目可以與用于該儲(chǔ)存的儲(chǔ)存程序計(jì)數(shù)器(PC)的至少一部分以及用于加載的加載PC值的至少一部分相關(guān)聯(lián)。預(yù)測(cè)器表中的每個(gè)條目還可以包括計(jì)數(shù)器字段,計(jì)數(shù)器字段可表示用于該特定加載-儲(chǔ)存對(duì)的數(shù)據(jù)相關(guān)性預(yù)測(cè)的強(qiáng)度。計(jì)數(shù)器字段允須預(yù)測(cè)的相關(guān)性在它們失效或不再有效時(shí)被關(guān)閉。
[0008]計(jì)數(shù)器字段的值還可以影響預(yù)測(cè)器表的替換策略。替換指針可以持續(xù)掃描預(yù)測(cè)器的條目并且查找具有低計(jì)數(shù)量值的條目。在一實(shí)施例中,每次坊問(wèn)預(yù)測(cè)器表時(shí),替換指針可以前進(jìn)。當(dāng)替換指針發(fā)現(xiàn)計(jì)數(shù)器值為零的條目時(shí),則指針可以停在該條目。當(dāng)為新的相關(guān)加載-儲(chǔ)存對(duì)分配新條目時(shí),則指針?biāo)傅挠?jì)數(shù)器等于零的現(xiàn)有條目可以被用于新條目。
[0009]對(duì)于本領(lǐng)域普通技術(shù)人員而言,通過(guò)下面對(duì)這里給出的方案的詳細(xì)說(shuō)明,這些和其它特征和優(yōu)點(diǎn)將變得顯而易見(jiàn)。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0010]結(jié)合附圖參考以下說(shuō)明,可以更好地理解所述方法和機(jī)制的以上和其它優(yōu)點(diǎn),附圖中:
[0011]圖1示出集成電路的一部分的一實(shí)施例。
[0012]圖2是示出處理器核的一實(shí)施例的框圖。
[0013]圖3是示出映射/派遣單元和保留站的一實(shí)施例的框圖。
[0014]圖4示出加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器表的一實(shí)施例。
[0015]圖5是示出在加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器表中使用的計(jì)數(shù)器值的表示的一實(shí)施例的框圖。
[0016]圖6是示出處理加載操作的方法的一實(shí)施例的概括流程圖。
[0017]圖7是示出用于調(diào)整加載-儲(chǔ)存相關(guān)性預(yù)測(cè)強(qiáng)度指示符的方法的一實(shí)施例的概括流程圖。
[0018]圖8是示出用于替換加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器表中的條目的方法的一實(shí)施例的概括流程圖。
[0019]圖9是系統(tǒng)的一實(shí)施例的框圖。
[0020]圖10是計(jì)算初可讀介質(zhì)的一實(shí)施例的框圖。
[0021]圖11是示出加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器的一實(shí)施例的功能框圖。
[0022]圖12是示出加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器的另一實(shí)施例的功能框圖。
【具體實(shí)施方式】
[0023]在以下說(shuō)明中,闡述了大量的特定細(xì)節(jié)以提供對(duì)這里給出的方法和機(jī)制的透徹理解。然而,本領(lǐng)域普通技術(shù)人員應(yīng)認(rèn)識(shí)到,可以在沒(méi)有這些特定細(xì)節(jié)的情況下實(shí)現(xiàn)各種實(shí)施例。在某些情況下,沒(méi)有詳細(xì)示出公知的結(jié)構(gòu)、組件、信號(hào)、計(jì)算機(jī)程序指令和技術(shù)以避免不必要地模糊這里描述的方案。應(yīng)理解,為了說(shuō)明的簡(jiǎn)潔和清楚,圖中所示的元件不一定按比例繪制。例如,某些元件的尺寸相對(duì)于其它元件被放大了。
[0024]本說(shuō)明書(shū)包括對(duì)“一實(shí)施例”的引用。在不同上下文中,術(shù)語(yǔ)“在一實(shí)施例中”的出現(xiàn)不一定涉及相同實(shí)施例。可以采取與本公開(kāi)一致的任意合適的方式組合特定特征、結(jié)構(gòu)或特睦。此外,正如在整個(gè)申請(qǐng)文件中使用的那樣,措辭“可”在允許的意義上使用(即表示有可能),而不是在強(qiáng)制的意義上使用(即表示必須)。類(lèi)似地,措辭“包括”、“包含”、“具有”表示包括但不限于。
[0025]術(shù)語(yǔ)。以下段落提供了在本公開(kāi)(包括所附權(quán)利要求)中使用的術(shù)語(yǔ)的定義和/
或語(yǔ)境。
[0026]“包括”。這個(gè)術(shù)語(yǔ)是開(kāi)放性的。在所附權(quán)利要求中使用時(shí),這個(gè)術(shù)語(yǔ)不排除附加
結(jié)構(gòu)或步驟。假設(shè)權(quán)利要求描述:“一種處理器,包括加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器......”,這
種權(quán)利要求沒(méi)有排除該處理器還包括附加組件(例如高速緩存、抓取單元、執(zhí)行單元)。
[0027]“配置為”。各種單元、電路或其它組件可以描述或聲稱(chēng)為“配置為”執(zhí)行一項(xiàng)任務(wù)或多項(xiàng)任務(wù)。在這種語(yǔ)境下,通過(guò)描述單元/電路/組件包括在操作期間執(zhí)行一項(xiàng)任務(wù)或多項(xiàng)任務(wù)的結(jié)構(gòu)(例如電路),“配置為”用于意味著一結(jié)構(gòu)。這樣,單元/電路/組件可以說(shuō)配置為執(zhí)行一任務(wù),即使所指定的單元/電路/組件當(dāng)前不操作(例如沒(méi)有開(kāi)啟)。與語(yǔ)言“配置為”一起使用的單元/電路/組件包括硬件,例如電路、儲(chǔ)存可執(zhí)行來(lái)實(shí)現(xiàn)操作的程序指令的存儲(chǔ)器等。單元/電路/組件“配置為”執(zhí)行一項(xiàng)或多項(xiàng)任務(wù)的表述明確旨在對(duì)于該單元/電路/組件不援引35U.S.C § 112第六款。此外,“配置為”可包括由軟件和/或固件(例如FPGA或執(zhí)行軟件的通用處理器)操作從而以能夠執(zhí)行處理中的任務(wù)的方式運(yùn)行的一般結(jié)構(gòu)(例如一般電路系統(tǒng))?!芭渲脼椤边€可以包括采用制造工藝(例如半導(dǎo)體制造設(shè)施)來(lái)制造設(shè)備(例如集成電路),該設(shè)備適于實(shí)現(xiàn)或執(zhí)行一項(xiàng)或多項(xiàng)任務(wù)。
[0028]“基于(based on)”。這里使用時(shí),該術(shù)語(yǔ)用于描述影響確定的一個(gè)或多個(gè)因素。該術(shù)語(yǔ)不排除可能影響確定的其它因素。也就是說(shuō),該確定可以?xún)H僅基于那些因素,或者至少部分基于那些因素。假定短語(yǔ)“基于B確定A”。雖然B可以是影響A的確定的因素,但是這樣的短語(yǔ)并不排除也基于C來(lái)確定A。在其它情況下,A可以?xún)H僅基于B來(lái)確定。
[0029]現(xiàn)在參考圖1,示出了描述集成電路(IC)的一部分的一實(shí)施例的框圖。在所示實(shí)施例中,IClO包括處理器組合體12、存儲(chǔ)器控制器22以及存儲(chǔ)器物理接口電路(PHY) 24和26。注意,IClO還可以包括圖1沒(méi)有示出的許多其它組件。在各種實(shí)施例中,IClO還可被稱(chēng)為芯片上系統(tǒng)(SoC)、特定用途集成電路(ASIC)或裝置。
[0030]處理器組合體12可以包括中央處理單元(CPU) 14和16、二級(jí)(L2)高速緩存18以及總線(xiàn)接口單元(BlU) 20。在其它實(shí)施例中,處理器細(xì)合體12可以包括其它數(shù)量的CPU。CPU 14和16還可以被稱(chēng)為處理器或核。CPU14和16可以連接到L2高速緩存18。L2高速緩存18可以被連接到BIU20,BIU20可以被連接到存儲(chǔ)器控制器22。其它實(shí)施例可以包括其它級(jí)高速緩存(例如三級(jí)(L3)高速緩存)。注意,處理器組合體12可包括圖1未示出的其它組件。
[0031]CPU14和16可包括用于執(zhí)行指令集架構(gòu)中定義的指令的電路系統(tǒng)。特別地,包括指令的一個(gè)或多個(gè)程序可以通過(guò)CPU14和16執(zhí)行??梢栽诟鞣N實(shí)施例中實(shí)施任意指令集架構(gòu)。例如在一實(shí)施例中,可以實(shí)施PowerPC?指令集架構(gòu)。其它典型的指令集架構(gòu)可以包括ARM?指令集、MIPS?旨令集、SPARC?指令集、x86指令集(也稱(chēng)為IA-32)、IA-64指令集
坐寸ο
[0032]在各種實(shí)施例中,CPU14和16可以亂序地執(zhí)行指令,在某些情況下,這導(dǎo)致順序違規(guī)。例如,在加載和儲(chǔ)存指令的情況下,當(dāng)較新加載在具有重疊物理地址的較老儲(chǔ)存之前執(zhí)行時(shí),可能發(fā)生順序違規(guī)。為了避免或防止此類(lèi)順序違規(guī)的重復(fù),可以采用各種技術(shù)來(lái)防止較新加載在其相關(guān)的較老儲(chǔ)存之前執(zhí)行。在一實(shí)施例中,每個(gè)CPU14和16可包括加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器以用于保持對(duì)被預(yù)測(cè)或預(yù)期為相關(guān)的且其還可具有亂序執(zhí)行趨勢(shì)的加載-儲(chǔ)存對(duì)進(jìn)行跟蹤。在一實(shí)施例中,相關(guān)的加載-儲(chǔ)存對(duì)可記錄在表中。
[0033]有時(shí)候,預(yù)測(cè)器可關(guān)于加載-儲(chǔ)存對(duì)進(jìn)行訓(xùn)練,但是相關(guān)性可以是例外的情況。這可能因?yàn)榧虞d和儲(chǔ)存指令之間的相關(guān)性可基于地址并且加載和儲(chǔ)存指令的地址可以隨時(shí)間改變而發(fā)生。換句話(huà)說(shuō),加載-儲(chǔ)存相關(guān)性可以是動(dòng)態(tài)的。表中的某些條目在一段時(shí)間后可能是不準(zhǔn)確的,強(qiáng)制拙行不準(zhǔn)確條目的相關(guān)性可導(dǎo)致處理器不必要地延遲扣載操作而沒(méi)有任何好處。
[0034]為了防止過(guò)時(shí)的條目在表中堆積,且為了防止針對(duì)加載-儲(chǔ)存對(duì)強(qiáng)制執(zhí)行與過(guò)時(shí)條目對(duì)應(yīng)的相關(guān)性,表中的每個(gè)條目還可以包括代表相關(guān)性預(yù)測(cè)強(qiáng)度的指示符。指示符可以確定是否針對(duì)給定加載-儲(chǔ)存對(duì)強(qiáng)制執(zhí)行相關(guān)性。指示符還可以影響表的條目的替換策略,從而當(dāng)在表中分配新條目時(shí),具有低指示符值的條目可以被替換。
[0035]每個(gè)CPU14和16還可以包括一級(jí)(LI)高速緩存(未示出),每個(gè)LI高速緩存可以連接到L2高速緩存18。在一實(shí)施例中,L2高速緩存18可配置為對(duì)指令和數(shù)據(jù)進(jìn)行高速緩存以供CPU14和16快速訪問(wèn)。L2高速緩存18可以包括任意容量和配置(例如直接映射、集合關(guān)聯(lián))。L2高速緩存18可以通過(guò)BIU20連接到存儲(chǔ)器控制器22。BIU20還可以包括各種其它邏輯結(jié)構(gòu)以將CPU14和16以及L2高速緩存18連接到各種其它設(shè)備和模塊。
[0036]存儲(chǔ)器控制器22可以包括任意數(shù)量的存儲(chǔ)器端口,并且可以包括配置為接口連接到存儲(chǔ)器的電路系統(tǒng)。例如,存儲(chǔ)器控制器22可以配置為接口連接到動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM),例如同步 DRAM (SDRAM)、雙信數(shù)據(jù)速率(DDR) SDRAM、DDR2SDRAM、RambusDRAM (RDRAM)等。存儲(chǔ)器控制器22還可以連接到存儲(chǔ)器物理接口電路(PHY) 24和26。存儲(chǔ)器PHY24和26代表可連接到存儲(chǔ)器控制器22的任意數(shù)量的存儲(chǔ)器PHY。存儲(chǔ)器PHY24和26可配置為接口連接到存儲(chǔ)器設(shè)備(未示出)。
[0037]注意,其它實(shí)施例可以包括組件的其它組合,包括圖1所示的組件和/或其它組件的子集或超集。雖然給定組件的一個(gè)實(shí)例可以如圖1所示,但是其它實(shí)施例可以包括給定組件的兩個(gè)或更多實(shí)例。類(lèi)似地,貫穿本詳細(xì)說(shuō)明,可以包括給定組件的兩個(gè)或更多實(shí)例,即使僅示出一個(gè),和/或可以使用包括僅一個(gè)實(shí)例的實(shí)施例,即使示出了多個(gè)實(shí)例。
[0038]現(xiàn)在參照?qǐng)D2,示出處理器核的一實(shí)施例。核30是處理器核的一個(gè)例子,核30可以用在處理器組合體中,例如圖1的處理器組合體12。在一實(shí)施例中,圖1的每個(gè)CPU14和16可以包括核30的組件和功能。核30可以包括抓取和解碼(FED)單元32、映射和派遣單元36、存儲(chǔ)器管理單元(MMU) 40、核接口單元(CIF) 42、執(zhí)行單元44以及加載-儲(chǔ)存單元(LSU) 46。注意,核30可以包括圖2沒(méi)有示出的其它組件和接口。
[0039]FED單元32可以包括配置為從存儲(chǔ)器讀取指令并將它們置于一級(jí)(LI)指令高速緩存34中的電路系統(tǒng)。LI指令高速緩存34可以是用于儲(chǔ)存將由核30執(zhí)行的指令的高速緩存存儲(chǔ)器。LI指令高速緩存34可以具有任意的容量和結(jié)構(gòu)(例如,直接映射、集合關(guān)聯(lián)、全關(guān)聯(lián)等)。此外,LI指令高速緩存34可以具有任意高速緩存線(xiàn)路尺寸。FED單元32還可以包括配置為預(yù)測(cè)分支指令和抓取所預(yù)測(cè)的路徑的分支預(yù)測(cè)硬件。FED單元32還可以被重定向(例如,通過(guò)誤預(yù)測(cè)、異常、中斷、清除等)。
[0040]FED單元32還可以配置為將指令解碼為指令操作(op)。通常,指令操作可以是包括在執(zhí)行單元44和LSU46中的硬件能夠執(zhí)行的操作。每個(gè)指令可以被轉(zhuǎn)換為一個(gè)或多個(gè)指令操作,其在執(zhí)行時(shí)導(dǎo)致根據(jù)指令集架構(gòu)為該指令定義的操作的執(zhí)行。FED單元32可以配置為并行解碼多個(gè)指令。
[0041]在某些實(shí)施例中,每個(gè)指令可以解碼為單個(gè)指令操作。FED單元32可以配置為識(shí)別指令類(lèi)型、源操作教等,每個(gè)解碼的指令操作可以包括指令以及某些解碼信息。在每個(gè)指令轉(zhuǎn)換為單個(gè)OP的其它實(shí)施例中,每個(gè)OP可以簡(jiǎn)單地是相應(yīng)指令或其一部分(例如,指令的一個(gè)或多個(gè)操作碼字段)。在某些實(shí)施例中,F(xiàn)ED單元32可以包括用于生成指令的op的電路系統(tǒng)和/或微碼的任意組合。例如,相對(duì)簡(jiǎn)單的op生成(例如,每個(gè)指令一個(gè)或兩個(gè)op)可以用硬件處理,而更大規(guī)模的op生成(例如超過(guò)三個(gè)op用于指令)可以用微碼處理。在其它實(shí)施例中,包括在FED單元32中的功能可以被分為兩個(gè)或多個(gè)單獨(dú)單元,例如抓取單元、解碼單元、和/或其它單元。
[0042]解碼的op可以被提供給映射/派遣單元36。映射/派遣單元36可以配置為映射op和架構(gòu)寄存器到核30的物理寄存器。映射/派譴單元36可以執(zhí)行寄存器重命名以將源寄存器地址從op映射到識(shí)別重命名源寄存器的源操作數(shù)編號(hào)。映射派譴單元36還可以配置為將op派遣到執(zhí)行單元44和LSU46中的保留站。映射/派譴單元36可以包括加載-儲(chǔ)存相關(guān)性(LSD)預(yù)測(cè)器37和再排序緩沖器(R0B)38。在被派遣之前,op可以被寫(xiě)入到R0B38。R0B38可以配置為保存op,直到它們可以被按順序提交。每個(gè)op可以被分配有ROB索引(RNUM),其對(duì)應(yīng)于R0B38中的特定條目。RNUM可以用來(lái)跟蹤核30中運(yùn)行的操作。映射/派遣單元36還可以包括圖2未示出的其它組件(例如映射器陣列、派遣單元、派遣緩沖器)。此外,在其它實(shí)施例中,映射/派遣單元36中包括的功能可以被分為兩個(gè)或多個(gè)單獨(dú)的單元,例如映射單元、派遣單元和/或其它單元。
[0043]LSD預(yù)測(cè)器37可以配置為訓(xùn)練和預(yù)測(cè)可能亂序發(fā)布的相關(guān)加載-儲(chǔ)存指令對(duì)。LSD預(yù)測(cè)器37可以包括表,表具有已經(jīng)被訓(xùn)練的加載-儲(chǔ)存對(duì)的條目,每個(gè)條目可以包括識(shí)別加載和儲(chǔ)存指令以及預(yù)測(cè)強(qiáng)度的信息。在一實(shí)施例中,訓(xùn)練事件可以是由在具有重疊物理地址的較老儲(chǔ)存之前執(zhí)行較新加載而觸發(fā)的順序違規(guī)。在一實(shí)施例中,表可以是256條目全關(guān)聯(lián)結(jié)構(gòu)。在其它實(shí)施例中,表可以具有其它數(shù)量的條目。在各種實(shí)施例中,表可以是用于各種表導(dǎo)段的內(nèi)容可尋址存儲(chǔ)器(CAM)。
[0044]當(dāng)在相關(guān)的加載和儲(chǔ)存操作之間有順序違規(guī)時(shí),核30可以被重定向和再同步。作為重定向的結(jié)果,可以采取各種校正動(dòng)作。在這點(diǎn)上,可以對(duì)導(dǎo)致再同步的特定加載-儲(chǔ)存對(duì)執(zhí)行訓(xùn)練。該特定對(duì)的條目可以在LSD預(yù)測(cè)器37中被分配,預(yù)測(cè)強(qiáng)度可以設(shè)置為高水平。接著,在下一次經(jīng)過(guò)核30的管線(xiàn)(pipeline)時(shí),當(dāng)從單元36派遣來(lái)自加載-儲(chǔ)存對(duì)的儲(chǔ)存時(shí),可以搜索LSD預(yù)測(cè)器37以尋找該儲(chǔ)存。匹配的條目可以被發(fā)現(xiàn)并被激活(armed)。當(dāng)從單元36派遣來(lái)自訓(xùn)練的加載-儲(chǔ)存對(duì)的加載時(shí),可以對(duì)LSD預(yù)測(cè)器37執(zhí)行搜索以尋找該加載,該加載將匹配在激活條目上。然后,該加載可以與相關(guān)性一起被派遣到保留站,使得加載在從保留站發(fā)布之前等候儲(chǔ)存。
[0045]如果激活一條目的儲(chǔ)存在該儲(chǔ)存被發(fā)布之前從指令管線(xiàn)清除,LSD預(yù)測(cè)器37可以配置為清理表格。例如,可能有需要對(duì)LSD預(yù)測(cè)器37的激活條目進(jìn)行解除激活的場(chǎng)合,例如當(dāng)存在錯(cuò)誤時(shí)。加載操作可能依賴(lài)于并且等候已經(jīng)被清除的儲(chǔ)存操作,這可以導(dǎo)致鎖死核30。在這種情況下,當(dāng)從核30清除儲(chǔ)存操作時(shí),可以搜索LSD預(yù)測(cè)器37的表以尋找與所清除的儲(chǔ)存對(duì)應(yīng)的任何激活條目。所發(fā)現(xiàn)的用于所清除的儲(chǔ)存的任何匹配條目可以被解除激活。在一實(shí)施例中,LSD預(yù)測(cè)器37的每個(gè)條目可包括儲(chǔ)存RNUM以識(shí)別加載硐淆對(duì)的特定儲(chǔ)存。
[0046]執(zhí)行單元44可以包括任意數(shù)量和類(lèi)型的執(zhí)行單元(例如,整數(shù)、浮點(diǎn)、矢量)。每個(gè)執(zhí)行單元44還可以包括一個(gè)或多個(gè)保留站(未示出)。CIF42可以連接到LSU46、FED單元32、MMU40以及L2高速緩存(未示出)。CIF42可以配置為管理核30和L2高速緩存之間的接口。MMU40可以配置為扶行地址轉(zhuǎn)換和存儲(chǔ)器管理功能。
[0047]LSU46可以包括LI數(shù)據(jù)高速緩存48、保留站50和52、儲(chǔ)存隊(duì)列54和加載隊(duì)隊(duì)56。加載和儲(chǔ)存操作可以從映像派遣單元36派遣到保留站50和52。其它實(shí)施侈可以包括其它數(shù)量的保留站。操作可以亂序發(fā)布離開(kāi)保留站50和52。儲(chǔ)存隊(duì)列54可以?xún)?chǔ)存對(duì)應(yīng)于儲(chǔ)存操作的數(shù)據(jù),加載隊(duì)列56可以?xún)?chǔ)存與加載操作相關(guān)聯(lián)的數(shù)據(jù)。LSU46還可以通過(guò)CIF42連接到L2高速緩存。注意,LSU46還可以包括圖2未示出的其它組件(例如寄存器文件、預(yù)抓取單元、轉(zhuǎn)換旁視緩沖器)。
[0048]加載-儲(chǔ)存順序違規(guī)可以在較老儲(chǔ)存被發(fā)布時(shí)由LSU46檢測(cè)。在一實(shí)施例中,較老儲(chǔ)存的儲(chǔ)存地址可以與加載隊(duì)列56中的所有較新加載進(jìn)行比校。如果檢測(cè)到匹配,那么加載操作可能已經(jīng)用不正確的數(shù)據(jù)完成。這可以在將來(lái)通過(guò)利用加載和儲(chǔ)存澡作的RNUM將重定向信號(hào)發(fā)送回映射/派譴單元36來(lái)校正。映射/派遣單元36可以將指令從核30的管線(xiàn)清除,并將核30的前端重定向回到加載的指令地址,加載指令可以被重新抓取。為了防止以后的重定向,映射/派遣單元36可以在LSD預(yù)測(cè)器37中預(yù)測(cè)和記錄加載對(duì)儲(chǔ)存的相關(guān)性,并將所預(yù)測(cè)的相關(guān)性傳輸?shù)奖A粽?0和52。
[0049]在典型情況下,當(dāng)儲(chǔ)存被派遣時(shí),儲(chǔ)存可以搜索LSD預(yù)測(cè)器37,然后如果發(fā)現(xiàn)針對(duì)儲(chǔ)存的匹配,則表中的匹配條目可以被激活(即,被啟用),儲(chǔ)存RNUM可以被寫(xiě)入到該條目。隨后,加載可以被派遣,可以對(duì)表中的加載進(jìn)行搜索。在一實(shí)施例中,用于搜索LSD預(yù)測(cè)器37的識(shí)別值可以是加載和儲(chǔ)存PC值的至少一部分。在另一實(shí)旋例中,用于搜索和儲(chǔ)存在條目中的識(shí)別值可以是從PC值的至少一部分、架構(gòu)寄存器值的至少一部分和/或微op值的至少一部分導(dǎo)出的散列值??梢允褂玫淖R(shí)別符的其它可能性是可行的并被預(yù)期。
[0050]在各種實(shí)施例中,加載可以匹配在LSD預(yù)測(cè)器37中的任意數(shù)量的條目上。在一實(shí)施例中,對(duì)于要發(fā)生的匹配,條目需要被激活。如果加載匹配在一個(gè)激活條目上,那么對(duì)儲(chǔ)存RNUM的相關(guān)性可以通過(guò)將激活儲(chǔ)存RNUM鏈接到加載來(lái)被創(chuàng)建。加載可以被標(biāo)記為等候特定儲(chǔ)存RNUM從保留站發(fā)布。在保留站中,可以有用于加載的相關(guān)性字段,加載可以標(biāo)記為依賴(lài)于給定儲(chǔ)存從保留站50或52之一發(fā)布。因此在該情況中,加載可以標(biāo)記為等待特定的儲(chǔ)存RNUM,加載可以在特定儲(chǔ)存發(fā)布的一個(gè)周期之后發(fā)布。
[0051]如果加載匹配在多個(gè)激活儲(chǔ)存條目上,這可以被稱(chēng)為多匹配情況。在這種情況下,在發(fā)布之前,加載可以等待,直到所有較老儲(chǔ)存已經(jīng)發(fā)布。例如在一實(shí)施例中,可以設(shè)置一位(bit),以便在加裁發(fā)布之前,加載可以等待所有較老儲(chǔ)存發(fā)布。蝴制所有較老儲(chǔ)存在加載之如從保留站50和52發(fā)布。在一實(shí)施例中,每個(gè)保留站50和52可以使其包含的最老儲(chǔ)存可被獲得。一旦加載變得比那兩個(gè)儲(chǔ)存都更老,那么該加載可以發(fā)布。
[0052]每個(gè)保留站50和52可以包括拾取器,其配置為發(fā)布有效的任何操作。當(dāng)儲(chǔ)存變?yōu)橛行Р⑶宜皇叭『桶l(fā)布時(shí),標(biāo)簽可以被廣播,然后與該儲(chǔ)存相關(guān)的加載將匹配在那個(gè)標(biāo)簽上。這將把該加載標(biāo)記為適合從保留站潑布出來(lái)。換句話(huà)說(shuō),儲(chǔ)存產(chǎn)生由加載使用的標(biāo)簽。在一實(shí)施例中,標(biāo)簽可以是儲(chǔ)存的RNUM。在一實(shí)施例中,RNUM可以是9位的值,盡管在其它實(shí)施例中,RNUM的大小可以變化。具有相關(guān)性的加載可以具有與該加載一起儲(chǔ)存在保留站中的額外源,該額外源可以是來(lái)自LSD預(yù)測(cè)器37中的相同條目的儲(chǔ)存的RNUM。
[0053]當(dāng)加載匹配在LSD預(yù)測(cè)器37中的條目上并且該條目被激活時(shí),這表示有加載需要等待的有效儲(chǔ)存。該條目還可以包括關(guān)于預(yù)測(cè)強(qiáng)度的指示符。在一實(shí)施例中,指示符可以是計(jì)數(shù)器,如果計(jì)數(shù)器的值在閾值以上,那么該條目可以被視為強(qiáng)的很可能的預(yù)測(cè),加載-儲(chǔ)存相關(guān)性可以被建立。閾值的值可以在不同實(shí)施例之間變化。如果加載匹配在激活條目上且指示符為弱,表示不使用該預(yù)測(cè),那么可以不對(duì)該加載建立相關(guān)性。如果加載-儲(chǔ)存相關(guān)性被建立,那么加載可以拾取儲(chǔ)存的R旺M,從而RNUM從條目讀出并在派遣加載時(shí)與加載一起傳差到保留站。加載還可以被標(biāo)記為具有保留站相關(guān)性。
[0054]在一實(shí)施例中,僅當(dāng)儲(chǔ)存標(biāo)記為有效發(fā)生器(producer)時(shí),從保留站發(fā)布的儲(chǔ)存將導(dǎo)致標(biāo)簽被廣播。當(dāng)儲(chǔ)存搜索LSD預(yù)測(cè)器37并且沒(méi)有發(fā)現(xiàn)匹配時(shí),則儲(chǔ)存將不被設(shè)立為有效發(fā)生器。如果儲(chǔ)存在LSD預(yù)測(cè)器37中找到有效條目且預(yù)測(cè)強(qiáng)度指示符表示加載-儲(chǔ)存對(duì)相關(guān)性預(yù)測(cè)在閾值以上(即,預(yù)測(cè)被開(kāi)啟),那么該條目可以被激活。在一實(shí)施例中,如果預(yù)測(cè)強(qiáng)度指示符低于閾值,那么儲(chǔ)存將不激活條目,即使儲(chǔ)存與該儲(chǔ)存條目匹配。在某些實(shí)施例中,當(dāng)儲(chǔ)存發(fā)現(xiàn)匹配時(shí)條目可以被激活,而不考慮預(yù)測(cè)強(qiáng)度指示符的值。儲(chǔ)存可以匹配在多個(gè)條目上,多個(gè)條目可以針對(duì)單個(gè)儲(chǔ)存被激活。
[0055]當(dāng)加載匹配LSD預(yù)測(cè)器37的激活條目時(shí),加載被標(biāo)記為相關(guān)的,該加載可以等待從保留站發(fā)布,直到從保留站發(fā)布相應(yīng)的儲(chǔ)存。然后,在具有建立的相關(guān)性的加載發(fā)布之后,可以確定該加載從哪里接收其數(shù)據(jù)。根據(jù)加載從哪里接收數(shù)據(jù),LSD預(yù)測(cè)器37的相應(yīng)條目中的預(yù)測(cè)強(qiáng)度指示符可以增大、減小或保持不變。
[0056]例如,如果加載數(shù)據(jù)來(lái)自?xún)?chǔ)存隊(duì)列54,那么來(lái)自LSD預(yù)測(cè)器37的預(yù)測(cè)可認(rèn)為是良好的。在該情況下,來(lái)自?xún)?chǔ)存的數(shù)據(jù)還沒(méi)有進(jìn)入到高速緩存48,因此加載等候儲(chǔ)存是有益的。如果用于該加載操作的加載數(shù)據(jù)還在儲(chǔ)存隊(duì)列54中,那么這可以表示在該加載和該儲(chǔ)存之間確實(shí)有真實(shí)的相關(guān)性。換句話(huà)說(shuō),數(shù)據(jù)確實(shí)需要從儲(chǔ)存隊(duì)列54傳送以用于相關(guān)的加載。
[0057]如果針對(duì)加載數(shù)據(jù)在儲(chǔ)存人列54中存在未命中(miss),那么相關(guān)性可能不再有效??赡苡性谙认嚓P(guān)性,但是后來(lái)加載或儲(chǔ)存的地址發(fā)生改變,加載和儲(chǔ)存不再?zèng)_突。在該情況下,如果從高速緩存48檢索到儲(chǔ)存數(shù)據(jù),那么該數(shù)據(jù)可能已經(jīng)儲(chǔ)存在那里長(zhǎng)時(shí)間了。因此,確定儲(chǔ)存數(shù)據(jù)是從儲(chǔ)存隊(duì)列54還是從高速緩存48傳送可以表明預(yù)測(cè)是否準(zhǔn)確。此夕卜,在LSD預(yù)測(cè)器37的匹配條目中儲(chǔ)存的預(yù)測(cè)強(qiáng)度指示符可以根據(jù)該確定而更新。如果預(yù)測(cè)是準(zhǔn)確的,使得加載數(shù)據(jù)從儲(chǔ)存隊(duì)列54傳送,那么預(yù)測(cè)強(qiáng)度指示符可以增大。如果加載數(shù)據(jù)來(lái)自高速緩存48,那么預(yù)測(cè)強(qiáng)度指示符可以減小。在其它實(shí)施例中,可以利用確定相關(guān)性預(yù)測(cè)是否準(zhǔn)確的其它掛術(shù)。
[0058]應(yīng)理解,圖2所示的功能分布不是可用于處理器核的唯一可行的微架構(gòu)。其它處理器核可包括其它組件,省略一個(gè)或多個(gè)所示的組件,和/或包括組件之間的不同功能布置。
[0059]現(xiàn)在參考圖3,示出了映射/派遣單元和保留站的一實(shí)施例的框圖。在一實(shí)施例中,映射/派遣單元60可包括寄存器映射器62、再排序緩沖器(ROB) 64、加載儲(chǔ)存相關(guān)性(LSD)預(yù)測(cè)器66以及派遣單元68。寄存器映射器62和LSD預(yù)測(cè)器66連接為從解碼單元(未示出)接收op。LSD預(yù)測(cè)器66連接為從解碼單元接收PC,并且連接為從加載-儲(chǔ)存單元(未示出)接收“重定向”和“計(jì)數(shù)更新,館號(hào)。LSD預(yù)測(cè)器66還連接到替換指針,替換指針?biāo)阉鱈SD預(yù)測(cè)器66以尋找在分配新條目時(shí)可以丟棄的條目。
[0060] 寄存器映射器62可以配置為映射架構(gòu)寄存器到物理寄存器,并提供op和物理寄存器地址到派遣單元68。派遣單元68可以配置為派遣op到保留站70A-N。派遣單元68可以配置為維護(hù)保留站70A-N中的空保留站條目的列表,并可以大本上向op分配條目以平衡保留站70A-N之間的負(fù)載。
[0061 ] LSD預(yù)測(cè)器66可以配置為檢查op中的儲(chǔ)存乖功口載,并且可以比較任意檢測(cè)到的儲(chǔ)存和加載的PC與之前導(dǎo)致順序違規(guī)并已經(jīng)在訓(xùn)練表中分配條目的儲(chǔ)存和加載的PC。如果針對(duì)給定儲(chǔ)存,PC匹配,那么LSD預(yù)測(cè)器66可以配置為激活訓(xùn)練表中的對(duì)應(yīng)條目。在一實(shí)施例中,LSD預(yù)測(cè)器66可以在激活條目之前檢渣預(yù)測(cè)指示符的強(qiáng)度。如果指示符在閾值以上,則條目可以被激活,否則,如果指示符低于閾值,則條目可以不被激活。此外,LSD預(yù)測(cè)器66可以配置為捕獲分配給儲(chǔ)存的RNUM作為該儲(chǔ)存的標(biāo)識(shí)符。
[0062]當(dāng)檢測(cè)到加載匹配激活條目且激活條目的預(yù)測(cè)指示符的強(qiáng)度在閾值以上時(shí),LSD預(yù)測(cè)器66可以配置為使用儲(chǔ)存標(biāo)識(shí)符來(lái)生成加載對(duì)儲(chǔ)存的相關(guān)性,防止加載被保留站70發(fā)布,直到該儲(chǔ)存被發(fā)布以后。在一實(shí)施例中,LSD預(yù)測(cè)器66可以配置為將儲(chǔ)存RNUM連同加載有相關(guān)性的指示符一起轉(zhuǎn)送至給定保留站70。此外,如果對(duì)于加載有多個(gè)匹配,那么LSD預(yù)測(cè)器66可以將多匹配指示符轉(zhuǎn)送到給定的保留站70。在其它實(shí)施例中,LSD預(yù)測(cè)器66可以配置為在多匹配的情況下將多個(gè)儲(chǔ)存RNUM轉(zhuǎn)送到保留站70,保留站70可以配置為儲(chǔ)存每加載多于一個(gè)儲(chǔ)存RNUM。其它實(shí)施例可以按其它方式表示儲(chǔ)存相關(guān)性。
[0063]保留站70A-N代表任意數(shù)量的保留站,其可以用作加載/儲(chǔ)存單元(未示出)和/或執(zhí)行單元(未示出)的一部分。每個(gè)保留站70A-N可以配置為儲(chǔ)存操作,直到該操作由相應(yīng)功能單元執(zhí)行。圖3中示出根據(jù)一實(shí)施例的保留站70A中的條目的例子。每個(gè)保留站70A-N可以根據(jù)實(shí)施例而包括各種數(shù)量的條目。每個(gè)條目可以包括相關(guān)性指示符、多匹配指示符、相關(guān)性的儲(chǔ)存RNUM、加載/儲(chǔ)存(L/S)指示符(指示操作是加載還是儲(chǔ)存)、以及操作的PC。在其它實(shí)施例中,該條目可包括其它字段(例如,源寄存器、目的地寄存器、源操作數(shù))和/或省略圖3所示的一個(gè)或多個(gè)字段。此外,其它類(lèi)型的條目(例如整數(shù)、浮點(diǎn))可以被不同地格式化。
[0064]LSD預(yù)測(cè)器66可以配置為基于重定向指示識(shí)別導(dǎo)致順序違規(guī)的加載-儲(chǔ)存對(duì)。重定向指示可以包括加載和儲(chǔ)存PC,或者其它加載和儲(chǔ)存標(biāo)識(shí)符。LSD預(yù)測(cè)器66可因此被導(dǎo)致順序違規(guī)的儲(chǔ)存和加載訓(xùn)練以在將來(lái)當(dāng)在處理器中再抓取和再執(zhí)行相同代碼序列時(shí)防止這種事件。
[0065]寄存器映射器62可以包括存儲(chǔ)器,存儲(chǔ)器具有用于每個(gè)邏輯寄存器的條目。寄存器映射器62中每個(gè)邏輯寄存器的條目可以?xún)?chǔ)存最近的op的RNUM以更新邏輯寄存器。也可以在重命名映射條目中儲(chǔ)存其它狀態(tài)。例如,一位可以表示最近的op是否已經(jīng)被執(zhí)行。在這樣的實(shí)施例中,寄存器映射器62可以從給定保留站70接收識(shí)別已發(fā)布的op的信號(hào),這可以允許寄存器映射器62更新該位。還可以包括表示最近的op是否已經(jīng)被隱退(retired)的位。
[0066]注意,不是到圖3所示單元的所有連接都被示出,映射/派譴單元60可以包括執(zhí)行其它操作的其它電路,其未示出。例如,寄存器映射器62和R0B64可以接收重定向指示以調(diào)整它們的映射,從而應(yīng)對(duì)op被清除。此外,寄存器映射器62和R0B64可以接收隱退op的指示,從而調(diào)整它們的狀態(tài)到隱退(例如,釋放條目以用于分配給新op,更新所構(gòu)架的重命名狀態(tài)等)。這些操作對(duì)于LSD預(yù)測(cè)器66的操作是輔助性的,因此這里沒(méi)有詳細(xì)描述。
[0067]注意,雖然PC和RNUM被用作儲(chǔ)存的標(biāo)識(shí)符,PC被用作加載的標(biāo)識(shí)符,但是其它實(shí)施例可以使用能夠唯一識(shí)別處理器中運(yùn)行的指令的任意標(biāo)識(shí)符(例如任意類(lèi)型的標(biāo)簽或序列號(hào))。
[0068]現(xiàn)在參照?qǐng)D4,示出了加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器表的一實(shí)施例。表90可以根據(jù)實(shí)施例而包括各種數(shù)量的條目。每個(gè)條目可對(duì)應(yīng)于加載-儲(chǔ)存對(duì),該加載-儲(chǔ)存對(duì)已經(jīng)被預(yù)測(cè)為具有重疊的地址和亂序發(fā)布。響應(yīng)于順序違規(guī)被檢測(cè)到,可以在表90中分配條目。在已經(jīng)發(fā)生順序違規(guī)的情況下,儲(chǔ)存隊(duì)列條目可以對(duì)處理器進(jìn)行清除(包括導(dǎo)致違規(guī)的加載)以回到抓取單元,表90關(guān)于該違規(guī)被訓(xùn)練,使得用于該特定加載-儲(chǔ)存對(duì)的條目被添加到表90。典型地,觸發(fā)重定向的被清除的儲(chǔ)存將已經(jīng)被發(fā)布,因此當(dāng)清除的加載被重新抓取和解碼時(shí),表90中的條目將不被激活,加載可以正常發(fā)布。在今后執(zhí)行在該P(yáng)C的儲(chǔ)存時(shí),該儲(chǔ)存將激活表90中的相應(yīng)條目,并防止該加載被發(fā)布,直到該儲(chǔ)存已經(jīng)被定布。
[0069]表90可以配置為允許被多個(gè)op同時(shí)訪問(wèn)和更新。此外,雖然表90示為集成表,但是不同的字段可以是對(duì)應(yīng)于單獨(dú)存儲(chǔ)器的單獨(dú)表,單獨(dú)表的條目彼此關(guān)聯(lián)。例如,加載PC可以是單獨(dú)表,儲(chǔ)存PC可以是單獨(dú)表,加載PC條目可以對(duì)應(yīng)于存儲(chǔ)PC條目,針對(duì)該條目,特定的加載-儲(chǔ)存順序違規(guī)已經(jīng)被檢測(cè)和訓(xùn)練。
[0070]每個(gè)條目可以包括有效指示符92。有效指示符92可以指示該條目是否是有效條目,該條目是否應(yīng)用于在條目指示的加載和儲(chǔ)存之間強(qiáng)制執(zhí)行相關(guān)性。在一實(shí)施例中,有效指示符92可以在復(fù)位時(shí)被清理。有效指示符92還可以影響替換策略,從而無(wú)效條目可以是分配新條目時(shí)被替換的第一條目。在某些實(shí)施例中,有效指示符92可以不包括在表90的條目中。替代地,在這些實(shí)施例中,計(jì)數(shù)器字段102的值可以用來(lái)指示條目是否有效。其它實(shí)施例可以在表中排除計(jì)數(shù)器字段102,僅使用有效指示符92。
[0071]每個(gè)條目還可以包括儲(chǔ)存PC值94以識(shí)別特定的儲(chǔ)存操作。在某些實(shí)施例中,儲(chǔ)存PC值可以與架構(gòu)寄存器細(xì)合和/或被:散列化。當(dāng)派遣儲(chǔ)存時(shí),可以搜索表90的儲(chǔ)存PC以尋找所派遣的儲(chǔ)存的PC。表90可以是儲(chǔ)存PC字段的CAM,其中存儲(chǔ)器中的每個(gè)條目包括進(jìn)行比較的電路系統(tǒng)。儲(chǔ)存PC字段還可以是操作為CAM的一組寄存器和比較器。如果所派遣的儲(chǔ)存匹配任意條目,那么這些條目可以使激活位98被設(shè)置。儲(chǔ)存的RNUM還可以被寫(xiě)入到條目的儲(chǔ)存RNUM96字段。當(dāng)儲(chǔ)存從保留站發(fā)布時(shí),則激活位98可以從之前由該特定儲(chǔ)存激活的表90的任意條目清除。
[0072]當(dāng)加載被派遣時(shí),可以搜索表90的每個(gè)條目的加載PC值100以尋找所派遣的加載的PC。表90可以是加載PC字段的CAM。如果所派遣的加載匹配任意激活條目,那么可以對(duì)特定加載建立并強(qiáng)制執(zhí)行相關(guān)性。如果加載匹配未激活條目,那么不建立相關(guān)性,因?yàn)橄鄳?yīng)的儲(chǔ)存沒(méi)有被派遣或已經(jīng)被發(fā)布,因此應(yīng)該不會(huì)發(fā)生順序違規(guī)。如果加載匹配多個(gè)激活條目,那么該加載可以等待,直到所有較老儲(chǔ)存在加載本身發(fā)布之前已經(jīng)被發(fā)布。如果加載匹配單個(gè)激活條目,那么儲(chǔ)存RNUM可以和加載一起被寫(xiě)入到保留站。在保留站中還可以有針對(duì)加載設(shè)置的相關(guān)性位以指示該加載具有有效的相關(guān)性。
[0073]每個(gè)條目還可以包括計(jì)數(shù)器字段102。計(jì)數(shù)器102的值可以指示條目中特定加載硐存對(duì)的預(yù)測(cè)強(qiáng)度。在一實(shí)施例中,計(jì)數(shù)器102可以是2位可逆計(jì)數(shù)器(up-down counter)。在其它實(shí)施例中,計(jì)數(shù)器102可以利用其它位數(shù)。此外,計(jì)數(shù)器102可以配置為在其最大值和最小值飽和。
[0074]當(dāng)儲(chǔ)存匹配條目時(shí),可以在激活條目之前檢查計(jì)數(shù)器值102。如果計(jì)數(shù)器值102低于閾值,那么該條目可以不被激活。如果計(jì)數(shù)器值102在閾值以上,那么該條目可以被激活。在某些實(shí)施例中,條目可被激活而不檢查計(jì)數(shù)器值102。當(dāng)加載匹配條目時(shí),計(jì)數(shù)器值102也可以被檢查。只有計(jì)數(shù)器值102在閾值以上時(shí),可以強(qiáng)制執(zhí)行相關(guān)性。閾值的值可以根據(jù)實(shí)施例而變化,且可以根據(jù)特定操作條件而調(diào)整。
[0075]在另一實(shí)施例中,超齡(age-out)計(jì)數(shù)器可以用于表90的條目。每個(gè)條目可以包括超齡計(jì)數(shù)器,當(dāng)條目被首次分配時(shí),超齡計(jì)數(shù)器可以設(shè)置為某個(gè)初始值。也可以利用間隔計(jì)數(shù)器來(lái)對(duì)可編程間隔進(jìn)行計(jì)數(shù),當(dāng)間隔計(jì)數(shù)器到期時(shí),表90中的每個(gè)超齡計(jì)數(shù)器可以遞減。間隔計(jì)數(shù)器然后可以重新開(kāi)始并對(duì)可編程間隔進(jìn)行計(jì)數(shù)。每次間隔流逝時(shí),表90中的每個(gè)超齡計(jì)數(shù)器可以遞減。任何時(shí)候加載-儲(chǔ)存對(duì)訪問(wèn)或激活條目時(shí),超齡計(jì)數(shù)器可以遞增固定量。如果表90中的條目不再被使用,那么最后它的超齡計(jì)數(shù)器將變?yōu)榱?,這時(shí)該條目將被新條目替換。
[0076]在其它實(shí)施例中,表90可以包括其它字段和/或省略圖4所示的一個(gè)或多個(gè)字段。此外,在其它實(shí)施例中,表90可以被不同地格式化。
[0077]現(xiàn)在參考圖5,示出了與預(yù)測(cè)器表中的加載-儲(chǔ)存對(duì)條目對(duì)應(yīng)的計(jì)數(shù)器值的代表的一實(shí)施例。針對(duì)表110中的二位計(jì)數(shù)器繪示了計(jì)數(shù)器值的分配。在其它實(shí)施例中,計(jì)數(shù)器可以利用其它位數(shù)。
[0078]在一實(shí)施例中,計(jì)數(shù)器值“ 11”或3可表示“強(qiáng)啟用”。對(duì)于具有該計(jì)數(shù)器值的條目,加載-儲(chǔ)存對(duì)的相關(guān)性可以被強(qiáng)制執(zhí)行。計(jì)數(shù)器值“10”或2可以表示“弱啟用”。如果條目是“弱啟用”,則相關(guān)性也可以被強(qiáng)制拙行。計(jì)數(shù)器“01”或I可以表示“弱禁用”。如果條目是“弱禁用”,那么對(duì)于相應(yīng)的加載-儲(chǔ)存對(duì),相關(guān)性可以不被強(qiáng)制執(zhí)行。計(jì)數(shù)器值“00”或0可以表示“強(qiáng)禁用”。在某些實(shí)施例中,“強(qiáng)禁用”也可以指示條目無(wú)效。圖5所示的實(shí)施例中的閾值在2和I之間。在其它實(shí)施例中,閾值可以是其它值。
[0079]在一實(shí)施例中,當(dāng)條目首次被分配時(shí),新條目的計(jì)數(shù)器可以默認(rèn)設(shè)置為弱啟用。當(dāng)計(jì)數(shù)器是弱禁用時(shí)(計(jì)數(shù)器=I),則匹配該條目的加載-儲(chǔ)存對(duì)可以不建立相關(guān)性。替代地,加載可以沒(méi)有相關(guān)性地被發(fā)布。在其它實(shí)施例中,可以利用其它大小的計(jì)數(shù)器,計(jì)數(shù)器值可以具有不同的表示意義。
[0080]現(xiàn)在參照?qǐng)D6,示出處理加載操作的方法的一實(shí)施例。為了論述方便,采取順序方式示出這個(gè)實(shí)施例中的步驟。應(yīng)注意,在下述方法的各種實(shí)施例中,所述元素中的一個(gè)或多個(gè)可以同時(shí)執(zhí)行,以與所示方式不同的順序執(zhí)行,或者可以完全被省略。其它附加元素也可以根據(jù)需要而被執(zhí)行。此外,可以并行執(zhí)行流程圖中的部分,以用于同時(shí)處理多個(gè)加載操作。
[0081]在一實(shí)施例中,映射/派譴單元可以接收加載操作(框120)。加載操作可以已經(jīng)在處理器管線(xiàn)的先前級(jí)中被解碼。然后,可以搜索加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器表以尋找具有與加載操作相同的PC的條目(框122)。在執(zhí)行溲索之后,可以確定找到多少匹配(條件框124)。如果沒(méi)有找到匹配(條件框124),那么加載可以沒(méi)有相關(guān)性地被派遣到保留站(框126)。加載可能匹配沒(méi)有激活的條目,但是這些未激活匹配不構(gòu)成將需要強(qiáng)制執(zhí)行相關(guān)性的實(shí)際匹配。類(lèi)似地,如果加載匹配激活條目但預(yù)測(cè)器指示符計(jì)數(shù)器低于閾值,那么這不構(gòu)成實(shí)際匹配,因此相關(guān)性將不被強(qiáng)制拙行。在某些實(shí)施例中,針對(duì)加載,計(jì)數(shù)器可以不需要與閾值比較,如果在激活條目之前儲(chǔ)存已經(jīng)檢查了計(jì)數(shù)器的話(huà)。
[0082]如果加載不具有需要強(qiáng)制執(zhí)行的相關(guān)性,那么這可以采用各種方式來(lái)表示。例如在一實(shí)施例中,相關(guān)性位可以被清除以表示加載不具有相關(guān)性。在框126之后,拾取器可以選擇加載以用于在任何時(shí)候從保留站發(fā)布而無(wú)需等待任何其它操作的發(fā)布(框132)。
[0083]如果找到與激活條目的單個(gè)匹配,那么加載可以帶有相關(guān)性地被派遣到保留站(框128)。相應(yīng)儲(chǔ)存的RNUM可以與加載一起寫(xiě)入到保留站條目。在一實(shí)施例中,對(duì)于將被視為匹配的條目,條目的計(jì)數(shù)器字段可能需要在閾值以上。例如,如果加載匹配激活條目,但是該條目的計(jì)數(shù)器字段低于閾值(即,弱或強(qiáng)禁用),那么這可以不構(gòu)成真實(shí)匹配。在框128之后,加載可以等候發(fā)布,直到它所相關(guān)的對(duì)應(yīng)儲(chǔ)存被發(fā)布(框134)。
[0084]如果針對(duì)加載發(fā)現(xiàn)與激活條目的多個(gè)匹配(條件框124),那么加載可以帶有多匹配指示符設(shè)置地派屯到保留站(框130)。然后,加載可以等待從保留站發(fā)布,直到所有較老儲(chǔ)存已經(jīng)被發(fā)布(框136)。加載/儲(chǔ)存單元可以包括多個(gè)保留站,每個(gè)保留站可以配置為跟蹤其條目中的最老儲(chǔ)存。當(dāng)具有多個(gè)匹配的加載被派遣時(shí),每個(gè)保留站中的最老儲(chǔ)存可以被記錄,在來(lái)自每個(gè)保留站的最老儲(chǔ)存被發(fā)布之后,然后加載可以在一個(gè)周期之后被發(fā)布。
[0085]現(xiàn)在參照?qǐng)D7,示出用于調(diào)整加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器強(qiáng)度指示符的方法的一實(shí)施例。為了論述方便,以順序方式示出這個(gè)實(shí)施例中的步驟。應(yīng)注意,在下述方法的各種實(shí)施例中,所述元素中的一個(gè)或多個(gè)可以同時(shí)執(zhí)行,以與所示方式不同的順序執(zhí)行,或者可以被完全省略。還可以根據(jù)需更執(zhí)行其它附加元素。
[0086]具有相關(guān)性的加載可以從保留站發(fā)布(框140)。該加載可能已經(jīng)被延遲,直到加載-儲(chǔ)存對(duì)的相應(yīng)儲(chǔ)存被發(fā)布之后才被發(fā)布。相應(yīng)儲(chǔ)存可以已經(jīng)從相同保留站發(fā)布,或者已經(jīng)從不同保留站發(fā)布。在加載從保留站發(fā)布并被執(zhí)行之后,可以確定從哪里獲得加載數(shù)據(jù)(框142)。
[0087]如果加載數(shù)據(jù)在儲(chǔ)存隊(duì)列中(條件框144),那么這個(gè)特定加載-儲(chǔ)存對(duì)的相關(guān)性預(yù)測(cè)可以被認(rèn)為是良好的,加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器中的相應(yīng)條目的計(jì)數(shù)器可以遞增(框146)。如果針對(duì)加載數(shù)據(jù),在儲(chǔ)存隊(duì)列中存在未命中(條件框144),那么加載對(duì)儲(chǔ)存的相關(guān)性可能已經(jīng)不再被保證(即,相關(guān)性預(yù)測(cè)不再有效),加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器中的相應(yīng)條目的計(jì)數(shù)器可以遞減(框148)。該方法可以針對(duì)具有相關(guān)性的多個(gè)不同加載并行地執(zhí)行。
[0088]現(xiàn)在參照?qǐng)D8,示出用于替換加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器表中的條目的方法的一實(shí)施例。為了論述方便,采取順序方式示出這個(gè)實(shí)施例中的步驟。應(yīng)注意,在下述方法的各種實(shí)施例中,所述元素中的一個(gè)或多個(gè)可以同時(shí)執(zhí)行,以與所示方式不同的順序執(zhí)行,或者可以被完全省略。還可以根據(jù)需要執(zhí)行其它附加元素。
[0089]指針可以指向加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器表中的一組相鄰條目,該組相鄰條目的計(jì)數(shù)器值可以被分析(框160)。在一實(shí)施例中,該組可以包括4個(gè)條目。在其它實(shí)施例中,該組可以包括其它數(shù)量的條目。然后,具有最低計(jì)數(shù)器值的條目可以被選擇(框162)。如果不止一個(gè)條目具有最低計(jì)數(shù)器值,那么指針可以隨機(jī)選擇這些條目中的任何條目,或者柏針可以利用其他值或度量在這些具有最低計(jì)數(shù)器值的條目之間進(jìn)行區(qū)分。
[0090]如果在該點(diǎn)需要分配新條目以用于新訓(xùn)練的具有相關(guān)性的加載-儲(chǔ)存對(duì)(條件框164),那么在該組中所選擇的具有最低計(jì)陡器值的條目可以被丟棄,新條目可以被分配在其位置(框166)。注意,新的加載-儲(chǔ)存對(duì)可以響應(yīng)于重定向和清除信號(hào)而被分配,重定向可以發(fā)生在任意點(diǎn)。因此,條件框164可以位于圖8的流程圖中的其他位置。在新條目被分配之后,指針可以移到下一組條目(框172)。如果此時(shí)不需要分配新條目(條件框164),那么可以確定最低計(jì)數(shù)器值是否為O (條件框168)。
[0091]如果最低計(jì)數(shù)器值為O (條件框168),那么指針可以停留在其當(dāng)前位置,并且等待條目被分配(框170)。如果最低計(jì)數(shù)器值不是O (條件框168),那么指針可以移到預(yù)測(cè)器中的下一細(xì)條目(框172)。在一實(shí)施例中,指針可以等待移到下一組條目,直到加載或儲(chǔ)存訪問(wèn)加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器。在另一實(shí)施例中,指針可以在下一時(shí)鐘周期移到下一組條目。在框172之后,該方法可以返回到框160,分析組中的條目。圖8所示的方法是替代策略的一個(gè)可行實(shí)施方式,在其他實(shí)施例中,可以使用其他替代策略(例如最近最少使用策略)。
[0092]下面參考圖9,不出了系統(tǒng)180的一實(shí)施例的框圖。如圖所不,系統(tǒng)180可以代表桌面計(jì)算機(jī)190、膝上型計(jì)算機(jī)200、平板計(jì)算機(jī)210、蜂窩電話(huà)220或其他沒(méi)備的芯片、電路系統(tǒng)、組件等。在所示實(shí)施例中,系統(tǒng)180包括連接到外部存儲(chǔ)器182的IC10(圖1)的至少一個(gè)實(shí)例。
[0093]IClO連接到一個(gè)或多個(gè)外圍設(shè)備184和外部存儲(chǔ)器182。還提供了電源186,其提供電源電壓到IC10,以及提供一個(gè)或多個(gè)電源電壓到存儲(chǔ)器182和/或外部設(shè)備184。在各種實(shí)施例中,電源186可以代表電池(例如,智能電話(huà)、膝上型或平板計(jì)算機(jī)的可再充電電池)。在某些實(shí)施例中,可以包括IClO的超過(guò)一個(gè)實(shí)例(還可以包括不止一個(gè)外部存儲(chǔ)器 182)。
[0094]存儲(chǔ)器182可以是任意類(lèi)型的存儲(chǔ)器,例如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、同步DRAM (SDRAM)、雙倍數(shù)據(jù)速率(DDR、DDR2、DDR3等)SDRAM (包括SDRAM的移動(dòng)版,例如mDDR3等,和 / 或 SDRAM 的低功率版,例如 LPDDR2 等)、Rambus DRAM (RDRAM)、靜態(tài) RAM(SRAM)等。一個(gè)或多個(gè)存儲(chǔ)器設(shè)備可以連接到電路板上以形成存儲(chǔ)器模塊,例如單列直插存儲(chǔ)器模塊(SIMM)、雙列直插存儲(chǔ)器模塊(DIMM)等。替選地,設(shè)備可以安裝有芯片上芯片配置、封裝上封裝配置或多芯片模塊配置的IC88。
[0095]根據(jù)系統(tǒng)180的類(lèi)型,外圍設(shè)備184可以包括任意所需電路系統(tǒng)。例如在一實(shí)施例中,外圍設(shè)備184可以包括用于各種類(lèi)型的無(wú)線(xiàn)通信例如wif1、藍(lán)牙、蜂窩、全球定位系統(tǒng)等的設(shè)備。外圍設(shè)備184還可以包括其他儲(chǔ)存器,包括RAM儲(chǔ)存器、固態(tài)儲(chǔ)存器或盤(pán)儲(chǔ)存器。外圍設(shè)備184可以包括用戶(hù)接口設(shè)備,例如顯示屏,包括觸摸顯示屏或多點(diǎn)觸摸顯示屏、鍵盤(pán)或其他輸入設(shè)備、麥克風(fēng)、揚(yáng)聲器等。
[0096]現(xiàn)在參照?qǐng)D10,示出了包括代表IClO (圖1)中包括的電路系統(tǒng)的一個(gè)或多個(gè)數(shù)據(jù)結(jié)構(gòu)的計(jì)算機(jī)可讀介質(zhì)230的框圖的一個(gè)實(shí)施例??傮w來(lái)說(shuō),計(jì)算機(jī)可讀介質(zhì)230可以包括任何非暫時(shí)性?xún)?chǔ)存介質(zhì)例如磁或光學(xué)介質(zhì),例如盤(pán)、CD-ROM或DVD-R0M,易失蜮非易失性?xún)?chǔ)存介質(zhì)例如RAM(例如,SDRAM、RDRAM、SRAM等)、ROM等,以及可通過(guò)經(jīng)由竭信介質(zhì)諸如網(wǎng)絡(luò)和/或無(wú)線(xiàn)鏈路傳輸?shù)膫鬏斀橘|(zhì)或信號(hào)(例如電信號(hào)、電磁信號(hào)或數(shù)字信號(hào))訪問(wèn)的介質(zhì)。
[0097]通常,計(jì)算機(jī)可讀介質(zhì)230上的電路系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)可以直接或間接地通過(guò)程序讀取和使用,以制造包括電路系統(tǒng)的硬件。例如,數(shù)據(jù)結(jié)構(gòu)可以包括一個(gè)或多個(gè)采用高級(jí)設(shè)計(jì)語(yǔ)言(HDL)例如Verilog或VHDL編寫(xiě)的硬件功能的行為級(jí)描述語(yǔ)或寄存器傳輸級(jí)(RTL)描述語(yǔ)。該描述語(yǔ)可以通過(guò)合成工具讀取,該合成工具可以合成描述語(yǔ)以產(chǎn)生一個(gè)或多個(gè)網(wǎng)表(netlist),網(wǎng)表包括來(lái)自合成庫(kù)的門(mén)的列表。該網(wǎng)表包括一組門(mén),其還表不包括該電路系統(tǒng)的硬件的功能。該網(wǎng)表然后可以被安置和路由以產(chǎn)生描述將要被應(yīng)用到掩模的幾何形狀的一個(gè)或多個(gè)數(shù)據(jù)集。該掩模然后可以被用于各種半導(dǎo)體制造步驟,以制造與該電路系統(tǒng)對(duì)應(yīng)的一個(gè)或多個(gè)半導(dǎo)咻電路。替選地,根據(jù)需要,計(jì)算機(jī)可讀介質(zhì)230上的數(shù)據(jù)結(jié)構(gòu)可以是網(wǎng)表(具有或不具有合成庫(kù))或數(shù)據(jù)集。在另一噌選實(shí)施例中,數(shù)據(jù)結(jié)構(gòu)可以包括示意性程序的輸出,或從其導(dǎo)出的網(wǎng)表或數(shù)據(jù)集。
[0098]雖然計(jì)算機(jī)可讀介質(zhì)230包括IClO的表示,但是其他實(shí)施例可以包括IClO的任意部分(例如,LSD預(yù)測(cè)器37、LSU46)或部分的組合的表示。
[0099]根據(jù)某些實(shí)施例,圖11和圖12每個(gè)都示出了根據(jù)上述本發(fā)明的原理配置的加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器設(shè)備的功能框圖。該設(shè)備的功能塊可以通過(guò)硬件、軟件、或硬件和軟件的組合來(lái)實(shí)施,以執(zhí)行本發(fā)明的原理。本領(lǐng)域技術(shù)人員將理解,圖11和12所示的功能塊可以組合或分為子塊,以實(shí)施上述本發(fā)明的原理。因此,這里的描述可以支持這里描述的功能塊的任何可行的組合或分離或進(jìn)一步定義。
[0100]現(xiàn)在參考圖11,在本發(fā)明的實(shí)施例中,加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器300可以包括預(yù)測(cè)單元310和相關(guān)性建立單元320。預(yù)測(cè)單元310可以如上所述地預(yù)測(cè)與較老儲(chǔ)存操作相關(guān)的加載操作。如果對(duì)應(yīng)的預(yù)測(cè)強(qiáng)度指示符在閾值以上,則相關(guān)性建立單元330可以為給定加載-儲(chǔ)存對(duì)建立相關(guān)性。
[0101 ] 加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器300還可以包括表維護(hù)單元330。表維護(hù)單元330可以維護(hù)具有條目的表(例如,圖4中的表90),條目對(duì)應(yīng)于已經(jīng)導(dǎo)致先前的順序違規(guī)的加載-儲(chǔ)存對(duì)。表的每個(gè)條目可包括預(yù)測(cè)強(qiáng)度指示符。作為例子,當(dāng)檢測(cè)到新的加載-儲(chǔ)存對(duì)時(shí),表維護(hù)單元330可以使用每個(gè)計(jì)數(shù)器來(lái)對(duì)表中的對(duì)應(yīng)條目進(jìn)行評(píng)級(jí),以用于替換。
[0102]加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器300還可以包括表搜索單元340。響應(yīng)于檢測(cè)到給定儲(chǔ)存操作的派遣,表搜索單元340可以搜索表以尋找與給定儲(chǔ)存操作對(duì)應(yīng)的匹配條目。在一例子中,給定儲(chǔ)存操作利用程序計(jì)數(shù)器(PC)的至少一部分來(lái)識(shí)別。如果返回了匹配條目,則激活單元350可以通過(guò)設(shè)置匹配條目中的激活位來(lái)激活匹配條目。在另一例子中,激活單元350可以?xún)H在匹配條目的計(jì)數(shù)器值在閾值以上時(shí),激活匹配條目。
[0103]響應(yīng)于檢測(cè)到給定加載操作的派遣,表搜索單元340還可以搜索表以尋找給定加載操作。如果找到激活的匹配條目且激活的匹配條目的計(jì)數(shù)器值在閾值以上,則給定加載操作帶有相關(guān)性地被派遣,由此導(dǎo)致對(duì)應(yīng)的儲(chǔ)存操作在給定加載操作之前發(fā)布。
[0104]圖12示出加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器400的另一實(shí)施例。在圖12中,與圖11類(lèi)似的元件用類(lèi)似的附圖標(biāo)記表示。
[0105]參考圖12,加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器400可以包括預(yù)測(cè)單元410、預(yù)測(cè)強(qiáng)度分配單元460以及順序強(qiáng)制單元470。預(yù)測(cè)單元410可以預(yù)測(cè)何時(shí)加載操作依賴(lài)于較老的儲(chǔ)存操作。預(yù)測(cè)強(qiáng)度分配單元460可以為具有所預(yù)測(cè)的相關(guān)性的每個(gè)加載-儲(chǔ)存對(duì)分配預(yù)測(cè)強(qiáng)度。響應(yīng)于檢測(cè)到相關(guān)聯(lián)的預(yù)測(cè)強(qiáng)度在閾值以上,順序強(qiáng)制單元470可以強(qiáng)制給定加載-儲(chǔ)存對(duì)的執(zhí)行順序。
[0106]加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器400還可以包括表維護(hù)單元430。表維護(hù)單元430可以維護(hù)具有用于每個(gè)預(yù)測(cè)的加載硐存對(duì)的條目的表。每個(gè)條目可以包括加載標(biāo)識(shí)符(ID)、儲(chǔ)存ID、激活位和計(jì)數(shù)器。計(jì)數(shù)器可用于指示目應(yīng)加載-儲(chǔ)存對(duì)的預(yù)測(cè)強(qiáng)度。在一例子中,條目還可以包括儲(chǔ)存ROB條目編號(hào)(RNUM)。
[0107]加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器400還可以包括表搜索單元440。響應(yīng)于給定儲(chǔ)存操作被檢測(cè)到,表搜索單元440可以搜索表格以尋找對(duì)于給定儲(chǔ)存操作的匹配。如果返回了匹配,且相應(yīng)計(jì)數(shù)器在閾值以上,則激活單元450可以設(shè)置給定儲(chǔ)存操作的匹配條目的激活位。表維護(hù)單元430可以將給定儲(chǔ)存操作的RNUM儲(chǔ)存在匹配條目中。
[0108]在一例子中,響應(yīng)于給定加載操作被檢測(cè)到,表搜索單元440還可以搜索表以尋找對(duì)給定加載操作的匹配。如果返回了匹配,且相應(yīng)計(jì)數(shù)器在閾值以上,則相關(guān)性建立單元420可以建立給定加載操作對(duì)于給定儲(chǔ)存操作的相關(guān)性。
[0109]在一例子中,相關(guān)性建立單元420可以將給定加載操作與給定儲(chǔ)存操作的相關(guān)性指示符和RNUM —起派遣到給定保留站。
[0110]在一例子中,表維護(hù)單元430還可以基于計(jì)數(shù)器的值替換表的條目。
[0111]應(yīng)注意,上述實(shí)施例僅僅是非限定性的實(shí)施方式,對(duì)于本領(lǐng)域技術(shù)人員而言,一旦充分理解了以上公開(kāi)的內(nèi)容,大量的變形和修改是顯而易見(jiàn)的。以下權(quán)利要求旨在理解為涵蓋全部這樣的變形和修改。
【權(quán)利要求】
1.一種加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器,配置為: 預(yù)測(cè)依賴(lài)于較老儲(chǔ)存操作的加載操作;以及 如果對(duì)應(yīng)的預(yù)測(cè)強(qiáng)度指示符在閾值以上,則為給定加載-儲(chǔ)存對(duì)建立相關(guān)性。
2.如權(quán)利要求1所述的加裁-儲(chǔ)存相關(guān)性預(yù)測(cè)器,其中,該加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器包括具有條目的表,所述條目對(duì)應(yīng)于已經(jīng)導(dǎo)致先前的順序違規(guī)的加載-儲(chǔ)存對(duì),其中該表的每個(gè)條目包括預(yù)測(cè)強(qiáng)度指示符。
3.如權(quán)利要求2所述的加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器,其中,每個(gè)計(jì)數(shù)器用于對(duì)表中的相應(yīng)條目進(jìn)行評(píng)級(jí),以用于檢測(cè)到新加載-儲(chǔ)存對(duì)時(shí)的替換。
4.如權(quán)利要求2所述的加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器,其中,響應(yīng)于檢測(cè)到給定儲(chǔ)存操作的派遣,所述加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器配置為搜索所述表以尋找與所述給定儲(chǔ)存操作對(duì)應(yīng)的匹配條目,并且如果找到匹配條目則激活該匹配條目。
5.如權(quán) 利要求2所述的加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器,其中,響應(yīng)于檢測(cè)到給定儲(chǔ)存操作的派遣,所述加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器配置為搜索所述表以尋找所述給定儲(chǔ)存操作,并且如果找到匹配條目且該匹配條目的計(jì)數(shù)器值在閾值以上,則激活該匹配條目。
6.如權(quán)利更求5所述的加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器,其中,所述給定儲(chǔ)存操作利用程序計(jì)數(shù)器PC的至少一部分來(lái)識(shí)別。
7.如權(quán)利要求4所述的加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器,其中,響應(yīng)于檢測(cè)到給定加載操作的派遣,所述加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器配置為搜索所述表以尋找所述給定加載操作,如果找到激括的匹配條目且激活匹配條目的計(jì)擻器值在閾值以上,則所述給定加載操作和相關(guān)性一起被派遣,其中和相關(guān)性一起派遣所述給定加載操作導(dǎo)致相應(yīng)的儲(chǔ)存操作在所述給定加載操作之前發(fā)布。
8.一種處理器,包括: 再排序緩沖器ROB ; 一個(gè)或多個(gè)保留站;以及 加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器,其中,該加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器配置為: 預(yù)測(cè)何時(shí)加載操作依賴(lài)于較老的儲(chǔ)存操作; 向具有預(yù)測(cè)相關(guān)性的每個(gè)加載-儲(chǔ)存對(duì)分配預(yù)測(cè)強(qiáng)度;以及 響應(yīng)于檢測(cè)到相關(guān)聯(lián)的預(yù)測(cè)強(qiáng)度在閾值以上,強(qiáng)制給定加載-儲(chǔ)存對(duì)的執(zhí)行順序。
9.如權(quán)利要求8所述的處理器,其中,所述加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器還配置為維護(hù)具有用于每個(gè)預(yù)測(cè)的加載-儲(chǔ)存對(duì)的條目的表,其中每個(gè)條目包括加載標(biāo)識(shí)符ID、儲(chǔ)存ID、激活位和計(jì)數(shù)器,其中所述計(jì)數(shù)器用于指示相應(yīng)的加載-儲(chǔ)存對(duì)的預(yù)測(cè)強(qiáng)度。
10.如權(quán)利要求9所述的處理器,其中,所述條目還包捂儲(chǔ)存ROB條目編號(hào)(RNUM)。
11.如權(quán)利要求10所述的處理器,其中,所述加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器還配置為: 響應(yīng)于給定儲(chǔ)存操作被檢測(cè)到,搜索所述表以尋找對(duì)該給定儲(chǔ)存操作的匹配; 響應(yīng)于找到匹配且確定相應(yīng)的計(jì)數(shù)器在閾值以上,設(shè)置該給定儲(chǔ)存操作的匹配條目的激活位;以及 在該匹配條目中儲(chǔ)存該給定儲(chǔ)存操作的RNUM。
12.如權(quán)利要求11所述的處理器,其中,該加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器還配置為: 響應(yīng)于給定加載操作被檢測(cè)到,搜索所述表以尋找對(duì)該給定加載操作的匹配;以及響應(yīng)于發(fā)現(xiàn)匹配且確定相應(yīng)的計(jì)數(shù)器在閾值以上,建立所述給定加載操作對(duì)所述給定儲(chǔ)存操作的相關(guān)性。
13.如權(quán)得要求12所述的處理器,其中,建立所述給定加載操作對(duì)所述給定儲(chǔ)存操作的相關(guān)性包括:將所述給定加載操作與相關(guān)性指示符和所述給定儲(chǔ)存操作的RNUM—起派遣到給定保留站。
14.如權(quán)利要求9所述的處理器,其中,所述加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器還配置為基于計(jì)數(shù)器的值替換所述表的條目。
15.一種方法,包括 派遣儲(chǔ)存操作; 搜索加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器以尋找所述儲(chǔ)存操作;以及 響應(yīng)于找到匹配該儲(chǔ)存操作的條目且確定該條目的預(yù)測(cè)強(qiáng)度指示符在閾值以上,激活該加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器的條目。
16.如權(quán) 利要求15所述的方法,還包括: 派遣加載操作; 搜索該加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器以尋找所述加載操作;以及 響應(yīng)于發(fā)現(xiàn)匹配該加載操作的單個(gè)激活條目,為該加載操作建立相關(guān)性。
17.如權(quán)利要求15所述的方法,還包括:響應(yīng)于發(fā)現(xiàn)匹配該加載操作的多個(gè)激活條目,為該加載操作建立多匹配相關(guān)性。
18.如權(quán)利求16所述的方法,還包括: 響應(yīng)于為該加載操作建立相關(guān)性,在該儲(chǔ)存操作發(fā)布之后,從保留站發(fā)布該加載操作; 確定用于該加載操作的數(shù)據(jù)是否從儲(chǔ)存隊(duì)列檢索到; 響應(yīng)于確定用于該加載操作的數(shù)據(jù)從儲(chǔ)存隊(duì)列檢索到,增大用于該條目的預(yù)測(cè)強(qiáng)度指示符;以及 響應(yīng)于確定用于該加載操作的數(shù)據(jù)從高速緩存檢索到,減小用于該條目的預(yù)測(cè)強(qiáng)度指示符。
19.如權(quán)利要求17所述的方法,還包括:響應(yīng)于為該加載操作建立多匹配相關(guān)性,識(shí)別每個(gè)保留站中的最老儲(chǔ)存操作。
20.如權(quán)利要求19所述的方法,還包括:響應(yīng)于為該加載操作建立多匹配相關(guān)性,在發(fā)布該加載操作之前,等候直到每個(gè)保留站中的最老儲(chǔ)存被發(fā)布。
21.一種加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器,包括: 預(yù)測(cè)單元,配置為預(yù)測(cè)依賴(lài)于較老儲(chǔ)存操作的加載操作;以及 相關(guān)性建立單元,配置為如果對(duì)應(yīng)的預(yù)測(cè)強(qiáng)度指示符在閾值以上時(shí),則為給定加載-儲(chǔ)存對(duì)建立相關(guān)性。
22.如權(quán)利要求21所述的加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器,還包括: 表維護(hù)單元,配置為維護(hù)具有與加載-儲(chǔ)存對(duì)對(duì)應(yīng)的條目的表,該加載-儲(chǔ)存對(duì)已經(jīng)導(dǎo)致過(guò)先前的順序違規(guī),其中該表的每個(gè)條目包括預(yù)測(cè)強(qiáng)度指示符。
23.如權(quán)利要求21所述的加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器,還包括: 表搜索單元,配置為響應(yīng)于檢測(cè)到給定儲(chǔ)存操作的派遣,搜索所述表以尋找與該給定儲(chǔ)存操作對(duì)應(yīng)的匹配條目;以及 激活單元,配置為如果找到匹配條目則激活該匹配條目。
24.—種處理器,包括: 再排序緩沖器ROB ; 一個(gè)或多個(gè)保留站;以及 加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器,包括: 預(yù)測(cè)單元,配置為預(yù)測(cè)何時(shí)加載操作依賴(lài)于較老的儲(chǔ)存操作; 預(yù)測(cè)強(qiáng)度分配單元,配置為向具有預(yù)測(cè)相關(guān)性的每個(gè)加載-儲(chǔ)存對(duì)分配預(yù)測(cè)強(qiáng)度;以及 順序強(qiáng)制單元,配置為響應(yīng)于檢測(cè)到相關(guān)聯(lián)的預(yù)測(cè)強(qiáng)度在閾值以上,強(qiáng)制給定加載-儲(chǔ)存對(duì)的執(zhí)行順序。
25.如權(quán)利要求24所述的處理器,其中,該加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器還包括: 表維護(hù)單元,配置為維護(hù)具有用于每個(gè)預(yù)測(cè)的加載-儲(chǔ)存對(duì)的條目的表, 其中,每個(gè)條目包括加載標(biāo)識(shí)符ID、儲(chǔ)存ID、激活位和計(jì)數(shù)器,且 其中,該計(jì)數(shù)器用于指示相應(yīng)的加載-儲(chǔ)存對(duì)的預(yù)測(cè)強(qiáng)度。
26.如權(quán)科要求25所述的處理器,其中,該加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器還包括: 表搜索單元,配置為響應(yīng)于給定儲(chǔ)存操作被檢測(cè)到,搜索所述表以尋找對(duì)該給定儲(chǔ)存操作的匹配;以及 激活單元,配置為響應(yīng)于找到匹配且確定相應(yīng)的計(jì)數(shù)器在閾值以上,設(shè)置所述給定儲(chǔ)存操作的匹配條目的激活位; 其中,該表維護(hù)單元還配置為在該匹配條目中儲(chǔ)存該給定儲(chǔ)存操作的儲(chǔ)存ROB條目編號(hào) RNUM。
27.如權(quán)利要求25所述的處理器,其中,該表搜索單元還配置為響應(yīng)于給定加載操作被檢測(cè)到,搜索所述表以尋找對(duì)該給定加載操作的匹配;且 其中,該加載-儲(chǔ)存相關(guān)性預(yù)測(cè)器還包括相關(guān)性建立單元,該相關(guān)性建立單元配置為響應(yīng)于找到匹配且確定相應(yīng)計(jì)數(shù)器在閾值以上,建立該給定加載操作對(duì)該給定儲(chǔ)存操作的相關(guān)性。
【文檔編號(hào)】G06F9/38GK103455309SQ201310323392
【公開(kāi)日】2013年12月18日 申請(qǐng)日期:2013年5月3日 優(yōu)先權(quán)日:2012年5月4日
【發(fā)明者】S·G·梅爾, J·H·米里爾斯, G·R·威廉姆斯三世, S·瓦特斯 申請(qǐng)人:蘋(píng)果公司