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