国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      循環(huán)緩沖器打包的制作方法

      文檔序號(hào):6507727閱讀:190來源:國知局
      循環(huán)緩沖器打包的制作方法
      【專利摘要】本發(fā)明涉及循環(huán)緩沖器打包。公開了在循環(huán)緩沖器中打包循環(huán)的多個(gè)迭代的方法、裝置和處理器。在由處理器執(zhí)行的指令流中檢測滿足緩沖標(biāo)準(zhǔn)的循環(huán)候選。當(dāng)循環(huán)被寫入到循環(huán)緩沖器中并檢測到循環(huán)末尾時(shí),如果循環(huán)緩沖器還不是半滿的,則循環(huán)的另一迭代被寫入到循環(huán)緩沖器。這樣,短循環(huán)被多次寫入到循環(huán)緩沖器以在處理器處于循環(huán)緩沖模式時(shí)最大化循環(huán)緩沖器的每周期指令操作吞吐量。
      【專利說明】循環(huán)緩沖器打包
      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明總體上涉及處理器,更特別地,涉及用于在循環(huán)緩沖器中打包循環(huán)的多個(gè)迭代的方法和機(jī)制。
      【背景技術(shù)】
      [0002]現(xiàn)代的處理器系統(tǒng)趨向于以多級(jí)流水線方式構(gòu)成。典型的流水線通常包括用于抓取指令、解碼指令、映射指令、執(zhí)行指令以及然后將結(jié)果寫到另一單元諸如寄存器的單獨(dú)單元。微處理器的指令抓取(fetch)單元負(fù)責(zé)為處理器流水線的下一級(jí)提供恒定的指令數(shù)據(jù)流。通常,抓取單元利用指令高速緩存以保持流水線其余部分被連續(xù)地供給有指令。抓取單元和指令高速緩存在執(zhí)行其規(guī)定功能時(shí)往往消耗大量功率。現(xiàn)代微處理器的目標(biāo)是盡可能多地減小功耗,特別是對于在電池供電的移動(dòng)設(shè)備中使用的微處理器而言。
      [0003]在許多軟件應(yīng)用(application)中,相同的軟件步驟可能被重復(fù)多次以執(zhí)行特定的功能或任務(wù)。在這些情況下,抓取單元將繼續(xù)抓取指令和消耗功率,即使同一循環(huán)的指令被連續(xù)執(zhí)行。如果循環(huán)可以被檢測并被高速緩存在循環(huán)緩沖器中,則在循環(huán)執(zhí)行時(shí)抓取單元可以關(guān)閉以降低功耗。但是,在使用循環(huán)緩沖器的同時(shí)最大化處理器流水線中的指令吞吐量可能是挑戰(zhàn)性的。這可能導(dǎo)致處理器以低于全效率工作。

      【發(fā)明內(nèi)容】

      [0004]公開了用于最大化循環(huán)緩沖器的每周期指令吞吐量的裝置、處理器和方法。為了最大化每周期指令吞吐量,循環(huán)緩沖器可打包有循環(huán)的多個(gè)迭代。在一實(shí)施例中,處理器流水線的前端可包括抓取單元、循環(huán)緩沖器和循環(huán)緩沖器控制單元。循環(huán)緩沖器控制單元可監(jiān)控和跟蹤循環(huán)候選,并確定哪些循環(huán)候選應(yīng)被高速緩存在循環(huán)緩沖器中。
      [0005]在一實(shí)施例中,當(dāng)循環(huán)候選滿足高速緩存標(biāo)準(zhǔn)時(shí),循環(huán)緩沖器控制單元可向抓取單元發(fā)回信號(hào)以告知循環(huán)的開始需被寫入到循環(huán)緩沖器的第一時(shí)隙。在抓取單元中,循環(huán)候選的向后采納分支可被識(shí)別和標(biāo)記。然后,下一指令可被識(shí)別并標(biāo)記為循環(huán)的開始。當(dāng)抓取單元從循環(huán)緩沖器控制單元接收到循環(huán)候選應(yīng)被高速緩存在循環(huán)緩沖器中的信號(hào)時(shí),抓取單元可以在向后采納分支之后故意停滯。然后,在下一時(shí)鐘周期,抓取單元可將識(shí)別為循環(huán)開始的指令輸出到循環(huán)緩沖器的第一時(shí)隙。另外,在將循環(huán)的最后迭代寫入到循環(huán)緩沖器結(jié)束時(shí),當(dāng)遇到向后采納分支時(shí),抓取單元可在向后采納分支被寫入到循環(huán)緩沖器之后故意停滯。
      [0006]在一實(shí)施例中,當(dāng)循環(huán)迭代的向后采納分支被寫入到循環(huán)緩沖器時(shí),可確定循環(huán)緩沖器是否至少是半滿的。如果循環(huán)緩沖器不是半滿的,則循環(huán)的另一迭代可被寫入到循環(huán)緩沖器。如果循環(huán)緩沖器是半滿的,則對循環(huán)緩沖器的寫入可終止。在完成對循環(huán)緩沖器的寫入之后,循環(huán)的迭代可從循環(huán)緩沖器分派到處理器流水線的下一級(jí)。
      [0007]在一實(shí)施例中,一種裝置可包括循環(huán)緩沖器和耦合到循環(huán)緩沖器的循環(huán)緩沖器控制單元。循環(huán)緩沖器控制單元可包括檢測單元和寫入單元。所述檢測單元可以操作為檢測指令流中的循環(huán)。寫入單元可以操作為使循環(huán)的兩個(gè)或更多迭代被寫入到循環(huán)緩沖器。
      [0008]在一示例中,寫入單元可進(jìn)一步操作為響應(yīng)于確定循環(huán)緩沖器至少不是半滿而使循環(huán)的另一迭代被寫入到循環(huán)緩沖器。循環(huán)緩沖器控制單元可進(jìn)一步包括防止單元,其操作為響應(yīng)于確定循環(huán)緩沖器至少半滿而防止循環(huán)的額外迭代被寫入到循環(huán)緩沖器。
      [0009]在一示例中,該循環(huán)緩沖器控制單元可進(jìn)一步包括確定單元,其操作為基于到循環(huán)緩沖器的寫指針的位置而確定循環(huán)緩沖器是否半滿。
      [0010]在一示例中,寫入單元可進(jìn)一步操作為,響應(yīng)于確定給定迭代中的向后采納分支沒有寫入到循環(huán)緩沖器中的行的最右條目,使所述循環(huán)的另一迭代被寫入到循環(huán)緩沖器。循環(huán)緩沖器控制單元可進(jìn)一步包括防止單元,其操作為響應(yīng)于確定來自給定迭代的向后采納分支被寫入到循環(huán)緩沖器的行的最右條目而防止循環(huán)的額外迭代被寫入到循環(huán)緩沖器。
      [0011]在一示例中,該循環(huán)緩沖器控制單元可進(jìn)一步包括確定單元,其操作為當(dāng)所述裝置處于循環(huán)緩沖模式時(shí),基于循環(huán)緩沖器的最大每周期指令操作吞吐量而確定寫入到循環(huán)緩沖器的循環(huán)的迭代數(shù)目。
      [0012]在一示例中,該裝置可進(jìn)一步包括排列器,其配置為將循環(huán)的第一迭代的第一指令操作寫入到循環(huán)緩沖器的第一行中的第一時(shí)隙。
      [0013]在一示例中,循環(huán)緩沖器可進(jìn)一步包括分派單元,其操作為響應(yīng)于裝置進(jìn)入循環(huán)緩沖模式而分派所述循環(huán)的兩個(gè)或更多迭代的指令操作。
      [0014]在另一實(shí)施例中,處理器可包括循環(huán)緩沖器和耦合到循環(huán)緩沖器的循環(huán)緩沖器控制單元。循環(huán)緩沖器控制單元可配置為檢測指令流中的循環(huán)。循環(huán)緩沖器可進(jìn)一步包括操作為存儲(chǔ)循環(huán)的多個(gè)迭代的存儲(chǔ)單元和分派單元,所述分派單元操作為響應(yīng)于處理器進(jìn)入循環(huán)緩沖模式而分派循環(huán)的多個(gè)迭代的指令。
      [0015]在一示例中,該處理器可以進(jìn)一步包含配置為識(shí)別和標(biāo)記循環(huán)的開始的抓取單
      J Li ο
      [0016]在一示例中,抓取單元可進(jìn)一步包括排列器。排列器可以包括配置為識(shí)別循環(huán)迭代邊界的識(shí)別單元。
      [0017]在一示例中,排列器可進(jìn)一步包括停滯單元,其操作為響應(yīng)于所述處理器進(jìn)入循環(huán)緩沖模式而在檢測到循環(huán)的先前迭代的向后采納分支之后導(dǎo)致停滯。
      [0018]在一示例中,停滯單元可進(jìn)一步操作為在檢測到循環(huán)的最后迭代的向后采納分支被寫入到循環(huán)緩沖器之后導(dǎo)致停滯。
      [0019]在一示例中,排列器可進(jìn)一步包括分配單元,其操作為在第一時(shí)鐘周期中將循環(huán)的第一迭代的向后采納分支分配到第一時(shí)隙。在一示例中,分配單元可進(jìn)一步操作為在第一時(shí)鐘周期中將循環(huán)的第二迭代的第一指令操作分配到第二時(shí)隙。第二時(shí)隙與第一時(shí)隙相鄰。
      [0020]鑒于下面對這里給出的方案的詳細(xì)描述,這些和其他特征和優(yōu)點(diǎn)將對本領(lǐng)域技術(shù)人員而言變得顯然。
      【專利附圖】

      【附圖說明】
      [0021]結(jié)合附圖參照下面的描述,可以更好地理解方法和機(jī)制的上述和其他優(yōu)點(diǎn),附圖中:[0022]圖1示出集成電路的一部分的一實(shí)施例。
      [0023]圖2是示出處理器核的一實(shí)施例的框圖。
      [0024]圖3是示出處理器流水線的前端的一實(shí)施例的框圖。
      [0025]圖4示出抓取和解碼單元內(nèi)的循環(huán)緩沖器的另一實(shí)施例的框圖。
      [0026]圖5是排列器的一實(shí)施例。
      [0027]圖6示出在循環(huán)緩沖器中高速緩存的循環(huán)的一實(shí)施例。
      [0028]圖7示出在循環(huán)緩沖器中高速緩存的循環(huán)的多個(gè)迭代的一實(shí)施例。
      [0029]圖8示出在循環(huán)緩沖器中高速緩存的循環(huán)的多個(gè)迭代的另一實(shí)施例。
      [0030]圖9是示出跟蹤循環(huán)候選者的方法的一實(shí)施例的概括流程圖。
      [0031]圖10是系統(tǒng)的一實(shí)施例的框圖。
      [0032]圖11是計(jì)算機(jī)可讀介質(zhì)的一實(shí)施例的框圖。[0033]圖12是根據(jù)一些實(shí)施例的裝置的功能框圖。
      [0034]圖13是根據(jù)一些實(shí)施例的處理器的功能框圖。
      具體實(shí)施例
      [0035]在下面的描述中,闡述了許多特定細(xì)節(jié)以提供對本文所述方法和機(jī)制的透徹理解。然而,本領(lǐng)域普通技術(shù)人員應(yīng)理解,沒有這些特定細(xì)節(jié)也可以實(shí)施各種實(shí)施例。在某些情況下,公知的結(jié)構(gòu)、部件、信號(hào)、計(jì)算機(jī)程序指令和技術(shù)未被詳細(xì)示出,以避免模糊本文所描述的方法。將理解,為了簡單和清楚地說明,在圖中所示的元件不一定按比例繪制。例如,一些元件的尺寸相對于其他元件可能被夸大了。
      [0036]本說明書中提及了“一實(shí)施例”。在不同上下文中短語“在一實(shí)施例中”的出現(xiàn)不一定是指同一實(shí)施例。特定的特征、結(jié)構(gòu)或特性可以按與本公開一致的任何合適方式被組合。此外,在整個(gè)本申請中使用時(shí),詞語“可”用在許可的意義上(即,意思是具有可能性),而不是強(qiáng)制意義上(即,意思是必須)。類似地,詞語“含有”、“包括”、“包含”是指包括但不限于。
      [0037]術(shù)語。以下段落提供本公開(包括所附權(quán)利要求書)中發(fā)現(xiàn)的術(shù)語的定義和/或上下文。
      [0038]“包括”。這個(gè)術(shù)語是開放式的。在所附權(quán)利要求中使用時(shí),該術(shù)語并不排除另外的結(jié)構(gòu)或步驟??紤]描述“一種處理器,包括循環(huán)緩沖器控制單元...”的權(quán)利要求,這種權(quán)利要求并不排除處理器包括其他組件(例如高速緩存、抓取單元、執(zhí)行單元)。
      [0039]“配置為”。各種單元、電路或其他組件可被描述為或聲稱為“配置為”執(zhí)行一項(xiàng)或多項(xiàng)任務(wù)。在這樣的上下文中,“配置為”用于通過描述單元/電路/組件包括在操作期間執(zhí)行一項(xiàng)任務(wù)或多項(xiàng)任務(wù)的結(jié)構(gòu)(例如,電路系統(tǒng))來表示結(jié)構(gòu)。因此,可以說單元/電路/組件配置為執(zhí)行任務(wù),即使當(dāng)指定的單元/電路/組件當(dāng)前沒有運(yùn)行(例如,沒有開啟)。與語言“配置為” 一起使用的單位/電路/組件包括硬件,例如電路、儲(chǔ)存可執(zhí)行來實(shí)施操作的程序指令的存儲(chǔ)器等。對單位/電路/組件“配置為”執(zhí)行一個(gè)或更多任務(wù)的描述明確地?zé)o意援引35U.S.C.§ 112第六款用于該單元/電路/組件。此外,“配置為”可以包括由軟件和/或固件(例如,F(xiàn)PGA或執(zhí)行軟件的通用處理器)操縱從而以能夠執(zhí)行當(dāng)前任務(wù)的方式操作的通用結(jié)構(gòu)(例如,通用電路系統(tǒng))。“配置為”還可以包括使制造工藝(例如,半導(dǎo)體制造設(shè)備)適應(yīng)于制造適于實(shí)施或執(zhí)行一個(gè)或多個(gè)任務(wù)的器件(例如,集成電路)。
      [0040]“基于”。本文使用時(shí),該術(shù)語用于描述影響確定(determination)的一個(gè)或多個(gè)因素。這個(gè)術(shù)語并不排除可能會(huì)影響確定的另外的因素。也就是說,確定可僅基于這些因素或至少部分地基于這些因素??紤]短語“基于B確定A”。雖然B可能是影響確定A的因素,但這樣的短語并不排斥還基于C確定A。在其他情況中,也可以僅基于B確定A。
      [0041]現(xiàn)在參見圖1,顯示了示出集成電路(IC)的一部分的一實(shí)施例的框圖。在所示實(shí)施例中,IClO包括處理器復(fù)合體12、存儲(chǔ)器控制器22以及存儲(chǔ)器物理接口電路(PHY) 24和26。注意,IClO還可以包括圖1未示出的許多其它組件。在各種實(shí)施方式中,IClO也可以被稱為芯片上系統(tǒng)(SoC)、專用集成電路(ASIC)或裝置。
      [0042]處理器復(fù)合體12可以包括中央處理單元(CPU) 14和16、二級(jí)(L2)高速緩存18以及總線接口單元(BIU) 20。在其它實(shí)施例中,處理器復(fù)合體12可包括其它數(shù)目的CPU。CPU 14和16也可以被稱為處理器或核。注意,處理器復(fù)合體12可包括圖1未示出的其他組件。
      [0043]CPU14和16可包括執(zhí)行指令集架構(gòu)中定義的指令的電路系統(tǒng)。具體而言,包括指令的一個(gè)或多個(gè)程序可以由CPU14和16執(zhí)行。在各種實(shí)施例中可以實(shí)施任何指令集架構(gòu)。例如在一實(shí)施例中,可以實(shí)施ARM?指令集架構(gòu)(ISA)。ARM指令集包括16位(或Thumb)和32位指令。其他示例性ISA可包括PowerPC?指令集、MIPS?指令集、SPARC?指令集、x86指令集(也稱為IA-32)、IA-64指令集等。
      [0044]在一實(shí)施例中,由CPU14和16執(zhí)行的每個(gè)指令可與程序計(jì)數(shù)器(PC)值相關(guān)聯(lián)。另夕卜,可在用于讀寫的一些指令中指定一個(gè)或多個(gè)架構(gòu)寄存器(architectural register)。這些架構(gòu)寄存器通過寄存器重命名單元映射到實(shí)際物理寄存器。此外,一些指令(例如,ARMThumb指令)可被分解為指令操作(或微操作)的序列,序列的每個(gè)指令操作可由唯一微操作(或uop)數(shù)引用。
      [0045]CPU14和16中的每個(gè)還可以包括一級(jí)(LI)高速緩存(未示出),每介LI高速緩存可以耦合到L2高速緩存18。其他實(shí)施方式可包括附加級(jí)別的高速緩存(例如,三級(jí)(L3)高速緩存)。在一實(shí)施例中,L2高速緩存18可配置為對指令和數(shù)據(jù)進(jìn)行高進(jìn)緩存以供CPU14和16低延遲地訪問。L2高速緩存18可包括任何容量和配置(例如直接映射、集關(guān)聯(lián))。L2高速緩存18可通過BIU20耦合到存儲(chǔ)器控制器22。BIU20還可以包括各種其它邏輯結(jié)構(gòu),以將CPU14和16以及L2高速緩存18耦合到各種其他器件和塊。
      [0046]存儲(chǔ)器控制器22可包括任意數(shù)量的存儲(chǔ)器端口,并可包括配置接口連接到存儲(chǔ)器的電路系統(tǒng)。例如,存儲(chǔ)器控制器22可配置為接口連接到動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM),諸如同步 DRAM (SDRAM)、雙數(shù)據(jù)速率(DDR) SDRAM、DDR2SDRAM、Rambus DRAM (RDRAM)等。存儲(chǔ)器控制器22還可以耦合到存儲(chǔ)器物理接口電路(PHY) 24和26。存儲(chǔ)器PHY24和26代表可耦合到存儲(chǔ)器控制器22的任意數(shù)量的存儲(chǔ)器PHY。存儲(chǔ)器PHY24和26可以配置為接口連接到存儲(chǔ)器設(shè)備(未示出)。
      [0047]注意,其它實(shí)施例可以包括組件的其他組合,包括圖1所示的組件的子集或超集和/或其他組件。雖然給定組件的一個(gè)實(shí)例示于圖1,但是其它實(shí)施例可包括給定組件的兩個(gè)或更多實(shí)例。類似地,貫穿本詳細(xì)描述,可包括給定組件的兩個(gè)或更多個(gè)實(shí)例,即使只示出一個(gè),和/或可以使用僅包括一個(gè)實(shí)例的實(shí)施例,即使示出多個(gè)實(shí)例。
      [0048]現(xiàn)在轉(zhuǎn)向圖2,示出處理器核的一實(shí)施例。核30是處理器核的一個(gè)示例,核30可用在處理器復(fù)合體(諸如圖1的處理器復(fù)合體12)中。在一實(shí)施例中,圖1的CPU14和16中的每個(gè)可包括核30的組件和功能。核30可包括抓取和解碼(FED)單元32、映射和分派單元36、存儲(chǔ)器管理單元(MMU)40、核接口單元(CIF)42、執(zhí)行單元44和加載-儲(chǔ)存單元(LSU) 46。注意,核30可包括圖2未示出的其他組件和接口。
      [0049]FED單元32可包括配置為從存儲(chǔ)器讀取指令并將其置于一級(jí)(LI)指令高速緩存33中的電路系統(tǒng)。LI指令高速緩存33可以是用于存儲(chǔ)供核30執(zhí)行的指令的高速緩存存儲(chǔ)器。LI指令高速緩存33可具有任何容量和結(jié)構(gòu)(例如直接映射、集關(guān)聯(lián)、完全關(guān)聯(lián)等)。此外,LI指令高速緩存33可具有任何高速緩存線大小。FED單元32還可包括配置為預(yù)測分支指令并按預(yù)測路徑進(jìn)行抓取的分支預(yù)測硬件。FED單元32還可以被重定向(例如,通過預(yù)測錯(cuò)誤、異常、中斷、清除等)。
      [0050]在一實(shí)施例中,F(xiàn)ED單元32可配置為將指令解碼為多個(gè)步驟中的指令操作。另外,F(xiàn)ED單元32還可以配置為并行地解碼多個(gè)指令。更具體地,指令可以被拉出LI指令高速緩存33,并被解碼成預(yù)解碼指令,排列器34可配置為將預(yù)解碼指令遞送到循環(huán)緩沖器35的適當(dāng)通道(lane)和/或解碼器單元(未示出)。解碼器單元可配置為執(zhí)行解碼的剩余部分以將預(yù)解碼指令轉(zhuǎn)換為指令操作。
      [0051]一般而言,指令操作可以是執(zhí)行單元44和LSU46中包括的硬件能執(zhí)行的操作。每個(gè)指令可以轉(zhuǎn)化為一個(gè)或多個(gè)指令操作,其在執(zhí)行時(shí)引起根據(jù)指令集架構(gòu)為該指令定義的操作的執(zhí)行。注意,貫穿本公開,術(shù)語“指令操作”和“微操作(UOP)”可互換地使用。在其他實(shí)施例中,F(xiàn)ED單元32內(nèi)包括的功能可被分成兩個(gè)或更多單獨(dú)單元,諸如抓取單元、解碼單元和/或其它單元。
      [0052]在各種ISA中,一些指令可解碼成單個(gè)uop。FED單元32可配置為識(shí)別指令類型、源操作數(shù)等,每個(gè)解碼指令操作可包括該指令以及一些解碼信息。在每個(gè)指令轉(zhuǎn)換為單個(gè)uop的另一些實(shí)施例中,每個(gè)uop可以僅是相應(yīng)指令或其一部分(例如,指令的一個(gè)或多個(gè)操作碼字段)。在一些實(shí)施例中,F(xiàn)ED單元32可包括用于產(chǎn)生指令的uop的電路系統(tǒng)和/或微碼的任何組合。例如,相對簡單的uop生成(例如,每條指令一個(gè)或兩個(gè)uop)可以在硬件中處理,而更大規(guī)模的uop生成(例如,一指令有三個(gè)以上uop)可在微碼中處理。
      [0053]解碼的uop可被提供到映射/分派單元36。映射/分派單元36可配置為將uop和架構(gòu)寄存器映射到核30的物理寄存器。映射/分派單元36可實(shí)施寄存器重命名以將uop的源寄存器地址映射到標(biāo)識(shí)重命名源寄存器的源操作數(shù)編號(hào)。映射/分派單元36也可配置為將Uop分派到執(zhí)行單元44和LSU46中的保留站(未示出)。
      [0054]在一實(shí)施例中,映射/分派單元36可包括重排序緩沖器(ROB) 38。在另一些實(shí)施例中,R0B38可以位于其他位置。在被分派之前,uop可以被寫入到R0M38。R0B38可配置為保持uop,直至他們能被順序提交??上蛎總€(gè)uop分配對應(yīng)R0M38中的特定條目的ROB索引(RNUM)。RNUM可用于跟蹤核30中運(yùn)行的操作。映射/分派單元36還可包括圖2未示出的其他組件(例如映射器陣列、分派單元、分派緩沖器)。此外,在其它實(shí)施例中,映射/分派單元36中包含的功能可分成兩個(gè)或更多個(gè)單獨(dú)單元,諸如映射單元、分派單元和/或其他單元。
      [0055]執(zhí)行單元44可包括任何數(shù)量和類型的執(zhí)行單元(例如整數(shù)、浮點(diǎn)、矢量)。每個(gè)執(zhí)行單元44還可包括一個(gè)或多個(gè)保留站(未示出)。CIF42可耦合到LSU46、FED單元32、MMU40和L2高速緩存(未示出)。CIF42可配置為管理核30和L2高速緩存之間的接口。MMU40可配置為執(zhí)行地址轉(zhuǎn)換和存儲(chǔ)器管理功能。
      [0056]LSU46可包括LI數(shù)據(jù)高速緩存48、存儲(chǔ)隊(duì)列50和加載隊(duì)列52。加載和存儲(chǔ)操作可從映射/分派單元36分派到LSU46中的保留站。存儲(chǔ)隊(duì)列50可存儲(chǔ)對應(yīng)于存儲(chǔ)操作的數(shù)據(jù),加載隊(duì)列52可以存儲(chǔ)與加載操作相關(guān)的數(shù)據(jù)。LSU46還可以經(jīng)CIF42耦合到L2高速緩存。注意,LSU46還可包括圖2未示出的其它組件(例如保留站、寄存器文件、預(yù)抓取單元、轉(zhuǎn)換旁視緩沖器)。
      [0057]應(yīng)理解,圖2所示的功能分布不是可用于處理器核的唯一可行微架構(gòu)。其他處理器核可包括其它組件,省略一個(gè)或多個(gè)所示組件,和/或包括組件之間的不同功能布置。
      [0058]現(xiàn)在參考圖3,示出處理器流水線的前端的一實(shí)施例的框圖。在一實(shí)施例中,圖3所示的前端邏輯可位于抓取和解碼單元內(nèi),諸如FED單元32 (圖2)。應(yīng)理解,圖3所示的功能分布僅是實(shí)現(xiàn)處理器流水線內(nèi)的循環(huán)緩沖器的一種可行結(jié)構(gòu)。實(shí)現(xiàn)循環(huán)緩沖器的邏輯器的其他合適分布是可行且可預(yù)期的。
      [0059]抓取前端60可配置為抓取和預(yù)解碼指令,然后將預(yù)解碼的uop輸送到循環(huán)緩沖器62和解碼器70A-F (通過多路復(fù)用器68)。在一實(shí)施例中,抓取前端60可配置為每周期輸出6個(gè)預(yù)解碼uop。在其它實(shí)施例中,抓取前端60可配置為每周期輸出其它數(shù)量的預(yù)解碼uop。
      [0060]循環(huán)緩沖器62、多路復(fù)用器68和解碼器70A-F可具有用于每周期處理和/或存儲(chǔ)六個(gè)UOP的六個(gè)通道。每個(gè)通道可包含有效位以表示通道是否包含有效uop。注意,循環(huán)緩沖器62、多路復(fù)用器68和解碼器70A-F的“通道”也可以被稱為“時(shí)隙(slot) ”或“條目”。在其它實(shí)施例中,循環(huán)緩沖器62、多路復(fù)用器68和解碼器70A-F可包括多于或少于六個(gè)通道,抓取前端60可配置為每周期輸出流水線的下一級(jí)可容納的那么多的uop。
      [0061]抓取前端60可從指令高速緩存(未示出)獲取原始指令數(shù)據(jù),檢測數(shù)據(jù)中的指令邊界,將指令緩存在指令高速緩存器(未示出)和/或排列器(未示出)中,將指令擴(kuò)展為高達(dá)六個(gè)UOP的集合,并為這些UOP生成適當(dāng)?shù)挠行ж?fù)載。將每個(gè)高達(dá)六個(gè)UOP的集合稱為“解碼組”。在其它實(shí)施例中,解碼組可包括其它數(shù)量的uop。解碼組可在每個(gè)時(shí)鐘周期被傳遞到循環(huán)緩沖器62和多路復(fù)用器68的通道。這里使用時(shí),“通道”可定義為包括邏輯器的路徑,所述邏輯器配置為在每個(gè)時(shí)鐘周期中處理和/或存儲(chǔ)uop。
      [0062]抓取前端60可將指令擴(kuò)展成uop并將這些uop饋送到循環(huán)緩沖器62和多路復(fù)用器68。在一實(shí)施例中,由抓取前端60抓取并解碼為預(yù)解碼uop的指令可以基于ARM ISA。每個(gè)預(yù)解碼uop可包括指令操作碼位、指令預(yù)解碼位和uop編號(hào)。指令操作碼位指定將執(zhí)行的操作。預(yù)解碼位指示指令映射到的uop的編號(hào)。uop編號(hào)表示應(yīng)產(chǎn)生多uop指令序列中的哪個(gè)uop。在其它實(shí)施例中,可以利用其他ISA,指令可以被解碼并以多種方式格式化。
      [0063]當(dāng)處理器不是循環(huán)緩沖模式時(shí),則抓取前端60所產(chǎn)生的預(yù)解碼uop可以通過多路復(fù)用器68傳送到解碼器70A-F。來自循環(huán)緩沖器控制單元64的選擇信號(hào)可耦合到多路復(fù)用器68以確定哪條路徑通過多路復(fù)用器68耦合到解碼器70A-F的輸入端。當(dāng)處理器是循環(huán)緩沖模式時(shí),可從循環(huán)緩沖器62讀出預(yù)解碼uop并輸送到解碼器70A-F。預(yù)解碼uop可被解碼,然后從解碼器70A-F的輸出端輸送到處理器流水線的下一級(jí)。在一實(shí)施例中,處理器流水線的下一級(jí)可以是映射/分派單元,諸如圖2的映射/分派單元36。[0064]循環(huán)緩沖器控制單元64可配置為識(shí)別所抓取和預(yù)解碼的指令中的循環(huán)。一旦循環(huán)被識(shí)別為具有某一確定程度,則循環(huán)緩沖器控制單元64可使循環(huán)被高速緩存在循環(huán)緩沖器62中,抓取前端60可以關(guān)閉,然后可從循環(huán)緩沖器62向其余的處理器流水線進(jìn)行饋送。循環(huán)的多個(gè)迭代可被高速緩存在循環(huán)緩沖器62中,這些高速緩存的迭代可以重復(fù)地沿流水線分派。當(dāng)將循環(huán)的迭代寫到循環(huán)緩沖器62時(shí),循環(huán)緩沖器控制單元64可利用寫指針以確定哪一行正被寫入到循環(huán)緩沖器62。類似地,當(dāng)從循環(huán)緩沖器62讀取時(shí),讀指針可用于指向正讀取的行。
      [0065]為了識(shí)別用于高速緩存的循環(huán),首先檢測抓取指令中的“向后采納分支”(backwards taken branch)?!跋蚝蟛杉{分支”可定義為分支到指令序列中的先前指令的采納分支。向后采納分支到達(dá)的指令可被視為循環(huán)的開始。在一實(shí)施例中,只有某些類型的循環(huán)可以被認(rèn)為是用于緩沖的候選。例如,在一實(shí)施例中,對于所考慮的用于緩沖的循環(huán)候選,該循環(huán)的所有迭代都應(yīng)是不變的。
      [0066]循環(huán)緩沖器控制單元64可監(jiān)視指令流以尋找形成滿足循環(huán)緩沖標(biāo)準(zhǔn)的循環(huán)的指令。循環(huán)緩沖器控制單元64可以捕獲給定循環(huán)候選的所有信息。對于某一時(shí)段,循環(huán)候選可被跟蹤多個(gè)迭代以確保該循環(huán)候選保持相同。例如,從循環(huán)起始到循環(huán)內(nèi)的一個(gè)或多個(gè)指令的距離可在第一迭代時(shí)被記錄,并在隨后的迭代中被監(jiān)視,以確定這些距離是否保持相同。
      [0067]在一些實(shí)施例中,即使循環(huán)候選是不變的并滿足上面列出的其他標(biāo)準(zhǔn),循環(huán)候選的其他特性也可能使其不滿足被高速緩存在循環(huán)緩沖器62中的條件。例如,如果循環(huán)候選的尺寸過大而不適應(yīng)循環(huán)緩沖器62,則循環(huán)候選可能不符合條件。此外,可能有循環(huán)內(nèi)最大容許采納分支數(shù),等于分支跟蹤表66的大小。如果采納分支的數(shù)量超過這個(gè)數(shù)字,則循環(huán)可被排除到考慮高速緩存在循環(huán)緩沖器62中的候選之外。在一實(shí)施例中,分支跟蹤表66可包括用于循環(huán)內(nèi)采納分支的八個(gè)條目。在其它實(shí)施例中,分支跟蹤表66可具有用于循環(huán)內(nèi)采納分支的多于或少于8個(gè)的條目。
      [0068]在一實(shí)施例中,一旦已不止一次檢測到相同的向后采納分支,則捕獲循環(huán)的該信息的狀態(tài)機(jī)可由循環(huán)緩沖器控制單元64啟動(dòng)。例如,循環(huán)緩沖器控制單元64可利用分支跟蹤表66來跟蹤循環(huán)候選的采納分支。分支跟蹤表66可跟蹤從循環(huán)開始到每個(gè)采納分支的距離。
      [0069]如果循環(huán)的每個(gè)迭代執(zhí)行為使得從循環(huán)的開始到每個(gè)分支有相同數(shù)量的uop,則循環(huán)候選可被認(rèn)為是不變的。在確定循環(huán)候選是不變的且應(yīng)被高速緩存之前,到表66中的每個(gè)分支的距離可被跟蹤一定的迭代次數(shù)。所分配的跟蹤循環(huán)候選的不變性的時(shí)間量可以基于循環(huán)迭代次數(shù)和/或遇到分支的次數(shù)。
      [0070]現(xiàn)在轉(zhuǎn)向圖4,顯示抓取和解碼單元中的循環(huán)緩沖器的另一實(shí)施例。在一實(shí)施例中,循環(huán)緩沖器84可在處理器流水線中位于解碼器82A-F下游,如圖4所示。這與(圖3的)循環(huán)緩沖器62相反,其在處理器流水線中位于解碼器70A-F上游。在一實(shí)施例中,循環(huán)緩沖器84可以被組織為行和列(或通道)。在一實(shí)施例中,循環(huán)緩沖器84可以有16行和6列。在其它實(shí)施例中,循環(huán)緩沖器84可以包括其它數(shù)量的行和列。
      [0071]抓取前端80可抓取指令并將所抓取的指令預(yù)解碼成預(yù)解碼uop。然后,預(yù)解碼的UOP可被輸送到解碼器82A-F。在一實(shí)施例中,抓取前端80可配置為每周期產(chǎn)生和傳輸六個(gè)預(yù)解碼的Uop到解碼器82A-F的六個(gè)通道。解碼器82A-F可將預(yù)解碼uop解碼為解碼uop。然后,解碼器82A-F可將解碼的uop通過多路復(fù)用器90傳輸?shù)教幚砥髁魉€的下一級(jí)。此夕卜,當(dāng)循環(huán)候選已被識(shí)別并滿足被高速緩存到循環(huán)緩沖器84的標(biāo)準(zhǔn)時(shí),解碼器82A-F可將uop傳輸?shù)窖h(huán)緩沖器84。多路復(fù)用器90的輸出可以耦合到處理器流水線的下一級(jí)。在一實(shí)施例中,處理器流水線的下一級(jí)可以是映射/分派單元。
      [0072]循環(huán)緩沖器84、循環(huán)緩沖器控制單元86和分支跟蹤表88可配置為執(zhí)行與關(guān)于圖3所示的處理器前端描述的那些類似的功能。圖4中的一個(gè)關(guān)鍵區(qū)別在于,循環(huán)緩沖器84可以存儲(chǔ)解碼U0P,與圖3中存儲(chǔ)預(yù)解碼UOP的循環(huán)緩沖器62相反。因此,循環(huán)緩沖器84的尺寸可以大于循環(huán)緩沖器62,以容納更大數(shù)據(jù)量,因?yàn)榻獯auop通常比預(yù)解碼uop具有更多信息。注意,除了圖3和4所示的兩個(gè)位置之外,循環(huán)緩沖器84也可以位于處理器流水線內(nèi)的其他位置。例如,循環(huán)緩沖器84可以位于抓取前端內(nèi),或替換地,循環(huán)緩沖器84可以位于映射/分派單元內(nèi)。取決于循環(huán)緩沖器位于流水線中的位置,循環(huán)緩沖器中存儲(chǔ)的循環(huán)內(nèi)容可根據(jù)流水線中在該點(diǎn)已執(zhí)行的指令處理量而有所不同。
      [0073]在一實(shí)施例中,在循環(huán)候選的初始迭代時(shí),循環(huán)緩沖器控制單元86可使用從循環(huán)開始到循環(huán)的每個(gè)采納分支的距離填充分支跟蹤表88。在循環(huán)的后續(xù)迭代中,控制單元86可確定每個(gè)分支與循環(huán)開始的距離是否與表88中存儲(chǔ)的對應(yīng)距離相同。在循環(huán)候選對于某一迭代次數(shù)一直不變之后,則循環(huán)候選可高速緩存在循環(huán)緩沖器84中并從循環(huán)緩沖器84饋送到流水線的其余部分。當(dāng)循環(huán)正被從循環(huán)緩沖器84分派到處理器流水線的其余部分時(shí),抓取前端80和解碼器82A-F可被斷電。
      [0074]現(xiàn)在參考圖5,不出排列器的一實(shí)施例。排列器100可以是抓取單兀的一部分,排列器100可包括指令隊(duì)列102和指令閂(crossbar) 104。可在指令高速緩存(未示出)中的指令數(shù)據(jù)內(nèi)檢測指令邊界,然后指令可被傳送到指令隊(duì)列102。指令隊(duì)列102可具有任何容量和結(jié)構(gòu)。排列器100可配置為保持每時(shí)鐘周期向解碼器單元供給適當(dāng)數(shù)目的預(yù)解碼指令,其中該適當(dāng)數(shù)目基于處理器架構(gòu)。例如,在一實(shí)施例中,可以有6個(gè)解碼器,因此排列器100可配置為每時(shí)鐘周期產(chǎn)生并輸送多達(dá)六個(gè)預(yù)解碼uop到六個(gè)解碼器。在其它實(shí)施例中,排列器100可配置為每時(shí)鐘周期生成其它數(shù)目的預(yù)解碼uop。
      [0075]每個(gè)時(shí)鐘周期,排列器100可以查看指令隊(duì)列102中與指令序列的下六個(gè)uop對應(yīng)的指令。排列器100可以通過指令円104將這些指令分配到合適的解碼器時(shí)隙。排列器100還可配置為識(shí)別循環(huán)迭代的邊界(例如,迭代邊界103)。例如,當(dāng)循環(huán)候選滿足高速緩存標(biāo)準(zhǔn)時(shí),則可識(shí)別最近迭代的向后采納分支(BTB),即指令C。
      [0076]在圖5所示的示例中,指令隊(duì)列102中所示指令包括指令A(yù)、B、C (BTB)、D、E和F。由于指令D跟隨BTB,所以D可被標(biāo)記為循環(huán)的開始。每個(gè)指令可以被分解成一個(gè)或多個(gè)uop,當(dāng)指令被填充到指令高速緩存時(shí),指令映射的多個(gè)uop可被預(yù)解碼。當(dāng)確定循環(huán)應(yīng)被高速緩存在循環(huán)緩沖器(未示出)中時(shí),循環(huán)緩沖器控制單元(未示出)可向排列器100發(fā)送信號(hào)以在循環(huán)的BTB后停滯(stall)。
      [0077]如圖5所示,排列器100可在在時(shí)鐘周期‘N’中僅將三個(gè)uop寫到解碼器時(shí)隙中。這三個(gè)uop是A、B和C(BTB)。指令A(yù)、B和C中的每個(gè)在這個(gè)示例中是單uop指令??梢钥闯?,在時(shí)鐘周期‘N’中,時(shí)隙3-5為空,因?yàn)锽TB (指令C)被分配到時(shí)隙2。排列器100在BTB分配到解碼器時(shí)隙后停滯,于是在時(shí)鐘周期‘N’剩余時(shí)隙未被填充。在下一時(shí)鐘周期,排列器100將循環(huán)的開始分配到時(shí)隙O。指令D是循環(huán)的開始,在這個(gè)示例中,指令D是3個(gè)uop的指令,所以相應(yīng)的三個(gè)uop(D-0、D-l和D-2)在時(shí)鐘周期‘Ν+1中被分配給解碼器時(shí)隙0-2。對應(yīng)于指令E的兩個(gè)uop占用時(shí)隙3和4,對應(yīng)于指令F的uop可以在時(shí)鐘周期‘Ν+1中被分配給時(shí)隙5。
      [0078]在時(shí)鐘周期‘N’和‘Ν+1中所示的uop可被輸送到解碼器單元和循環(huán)緩沖器。當(dāng)循環(huán)被寫入到循環(huán)緩沖器時(shí),循環(huán)可繼續(xù)被饋送到流水線的下一級(jí)(例如,解碼器)。在循環(huán)的一個(gè)或多個(gè)迭代被寫入到循環(huán)緩沖器之后,流水線的后端可由循環(huán)緩沖器饋送,前端可斷電。
      [0079]排列器100也可在被寫到循環(huán)緩沖器的循環(huán)的最后迭代的末尾以類似方式停滯。BTB被分配到的任何時(shí)隙將是循環(huán)緩沖器內(nèi)的該行中被寫入的最后時(shí)隙。例如,如果BTB在將最后循環(huán)迭代寫到循環(huán)緩沖器的最后時(shí)鐘周期中被寫入到時(shí)隙1,則剩余時(shí)隙(時(shí)隙2-5)可留為空。以此方式,當(dāng)從位于循環(huán)緩沖器第一行的時(shí)隙O的循環(huán)的第一迭代的第一uop開始將循環(huán)從循環(huán)緩沖器讀出時(shí),在下一時(shí)鐘周期可以有干凈的切換(handoff)。
      [0080]現(xiàn)在參考圖6,顯示將循環(huán)的單次迭代打包到循環(huán)緩沖器中的一實(shí)施例。在這個(gè)示例中,循環(huán)可以是7個(gè)uop的循環(huán),每個(gè)uop在循環(huán)緩沖器110中標(biāo)有“循環(huán)I”。注意,這僅是循環(huán)的一個(gè)示例,其他循環(huán)可包括其它數(shù)量的uop。還應(yīng)注意,循環(huán)緩沖器110可位于處理器流水線內(nèi)的任何不同位置,兩個(gè)位置示例示于圖3和圖4中。雖然循環(huán)緩沖器110示為包括六個(gè)通道(標(biāo)記為0-5),但是應(yīng)注意,其他循環(huán)緩沖器可具有其它通道數(shù)。還應(yīng)注意,循環(huán)緩沖器110的“通道”也可被稱為“時(shí)隙”或“列”。
      [0081]循環(huán)I的頭六個(gè)uop可被寫入到循環(huán)緩沖器110中的第一行。最后的uop(對應(yīng)于向后采納分支)可填充循環(huán)緩沖器110的第二行的第一條目。對于該循環(huán),將花費(fèi)兩個(gè)周期來將循環(huán)分派到處理器流水線的下一級(jí),每周期輸出的平均UOP將是3.5 (兩個(gè)時(shí)鐘周期中七個(gè)uop)。這遠(yuǎn)小于每周期六個(gè)uop的最大可行每周期uop吞吐量。為了提高每周期uop吞吐量,循環(huán)的多于一個(gè)迭代可被寫入到循環(huán)緩沖器110,這將在下面更詳細(xì)地進(jìn)行說明。
      [0082]在其他實(shí)施例中,循環(huán)緩沖器110可包括除了六以外其它數(shù)量的通道。例如在另一實(shí)施例中,循環(huán)緩沖器110可具有八通道。在該實(shí)施例中,當(dāng)從循環(huán)緩沖器110分派九uop的循環(huán)時(shí),九uop的循環(huán)將具有低效率的每周期uop吞吐量。每周期指令在該示例中平均為4.5,每兩個(gè)時(shí)鐘周期分派九個(gè)uop。這將遠(yuǎn)低于最大可行的每周期uop吞吐量,此實(shí)施例中為八。
      [0083]在各種實(shí)施例中,不同格式的指令可存儲(chǔ)在循環(huán)緩沖器110中。利用的不同格式可包括指令、指令操作、預(yù)解碼uop、解碼u0p、u0p、0p或其他格式。術(shù)語“每周期指令”、“每周期指令操作”以及“每周期uop”通??捎糜诿枋鐾掏铝?,應(yīng)理解,這些術(shù)語可涉及任何不同指令格式。
      [0084]現(xiàn)在轉(zhuǎn)向圖7,顯示打包到循環(huán)緩沖器中的循環(huán)的多個(gè)迭代的一實(shí)施例。在一實(shí)施例中,循環(huán)可以是七個(gè)UOP那么長。寫入到循環(huán)緩沖器110的循環(huán)的第一迭代對于循環(huán)的每個(gè)uop都標(biāo)有“循環(huán)1”,并顯示在循環(huán)緩沖器110內(nèi)的第一行和第二行的通道O中。標(biāo)記為“循環(huán)2”的循環(huán)的第二迭代可寫入到循環(huán)緩沖器110中,從循環(huán)的第一迭代結(jié)束的位置開始。“循環(huán)2”的第一 uop可置于與“循環(huán)I”的最后uop相同行中的相鄰條目中。此外,循環(huán)的第二迭代的頭五個(gè)uop可寫入到循環(huán)緩沖器110的第二行的通道1-5,第二迭代的最后兩個(gè)uop可寫入到循環(huán)緩沖器110的第三行。該模式可對于寫入到循環(huán)緩沖器110的循環(huán)的接下來的五個(gè)迭代繼續(xù)。寫入循環(huán)緩沖器110的每個(gè)循環(huán)迭代與其他循環(huán)迭代相同。換句話說,每個(gè)循環(huán)迭代包含與寫入到循環(huán)緩沖器110的其他循環(huán)迭代準(zhǔn)確相同的uop,并且與任何其他循環(huán)迭代不可區(qū)分。
      [0085]如圖7所示,循環(huán)緩沖器110具有16行條目,中間點(diǎn)112在第八行之后。在一實(shí)施例中,當(dāng)循環(huán)的迭代被寫入到循環(huán)緩沖器110時(shí),在循環(huán)的最后uop (即向后采納分支)已被寫入到循環(huán)緩沖器110時(shí),則循環(huán)緩沖器控制單元可以檢查以查看是否已經(jīng)達(dá)到中間點(diǎn)112。如果已經(jīng)達(dá)到中間點(diǎn)112,則沒有更多的循環(huán)迭代可被寫入到循環(huán)緩沖器110。如果還沒有達(dá)到中間點(diǎn)112,則循環(huán)的另一迭代可被寫入到循環(huán)緩沖器110。
      [0086]在圖7所示的示例中,當(dāng)處理器在循環(huán)緩沖模式時(shí),從循環(huán)緩沖器110輸出的每周期平均Uop將大約是每周期5.4個(gè)uop的吞吐量(9個(gè)周期49個(gè)uop)。與圖6所示的示例中的3.5個(gè)uop的每周期平均uop吞吐量相比,這是一個(gè)改進(jìn)。
      [0087]現(xiàn)在參考圖8,示出將循環(huán)的多個(gè)迭代寫入到循環(huán)緩沖器的另一實(shí)施例。在本實(shí)施例中,類似于圖7所示的示例,循環(huán)的多個(gè)迭代可被寫入到循環(huán)緩沖器110。然而在本實(shí)施例中,當(dāng)達(dá)到循環(huán)迭代的末尾時(shí),可檢查單獨(dú)的條件??蓹z查的條件可以是,循環(huán)迭代的最后uop是否寫到循環(huán)緩沖器110的最后通道(即通道5)。如果滿足此條件,則循環(huán)迭代到循環(huán)緩沖器110的寫入可停止。如果沒有滿足此條件,則可判斷是否達(dá)到中間點(diǎn)112。如果已達(dá)到中間點(diǎn)112,則到循環(huán)緩沖器110的寫入可停止。如果還沒有達(dá)到中間點(diǎn)112,則循環(huán)的另一迭代可被寫入到循環(huán)緩沖器110。
      [0088]基于這些條件,七uop循環(huán)的六個(gè)迭代可被寫入到循環(huán)緩沖器110。在循環(huán)的第六迭代被寫入到循環(huán)之后,第六迭代的最后UOP被寫到第七行的通道5。因此,從循環(huán)緩沖器110輸出的每周期uop將被最大化,所以,不需要更多的迭代被寫入到循環(huán)緩沖器110。即使尚未達(dá)到中間點(diǎn)112,寫入也可停止。
      [0089]應(yīng)注意,在其他實(shí)施例中,可以在將迭代寫到循環(huán)緩沖器之前確定將寫入到循環(huán)緩沖器的迭代的數(shù)目。例如,循環(huán)的檢測和指令的監(jiān)視可包括:對包括在循環(huán)的迭代中的指令或UOP數(shù)目進(jìn)行計(jì)數(shù)。此外,循環(huán)緩沖器中的可用空間可以是已知的或確定的?;谘h(huán)迭代的大小和可用的緩沖存儲(chǔ),可以計(jì)算多少迭代被寫入到循環(huán)緩沖器。在各種實(shí)施例中,可以選擇要寫入的迭代數(shù)以便實(shí)現(xiàn)來自緩沖器的最大指令吞吐量。在其它實(shí)施例中,可對循環(huán)的多少迭代被寫入到緩沖器施加附加限制。例如,可寫入不超過緩沖器的給定部分(例如,一半)。許多這樣的替選方案是可行的并且可預(yù)期的。
      [0090]當(dāng)處理器在循環(huán)緩沖模式時(shí),利用這些條件可實(shí)現(xiàn)來自循環(huán)緩沖器110的高的每周期UOP吞吐量。在其它實(shí)施例中,對于其它循環(huán)尺寸,可利用這些條件。例如,九UOP尺寸的循環(huán)將導(dǎo)致兩個(gè)迭代被寫入到循環(huán)緩沖器110。循環(huán)緩沖器110的頭三行會(huì)被填充,然后九uop循環(huán)沒有更多迭代將被寫入到循環(huán)緩沖器110。這將實(shí)現(xiàn)每周期六個(gè)uop的最大
      可行吞吐量。
      [0091]在其它實(shí)施例中,可以利用其他條件以確定是否將循環(huán)的另一迭代寫入到循環(huán)緩沖器110。例如在另一實(shí)施例中,如果迭代的最后uop被寫入到行的兩個(gè)最右時(shí)隙中的任一個(gè),則對循環(huán)緩沖器110的寫入可終止。在又一實(shí)施例中,可以在循環(huán)迭代寫入到循環(huán)緩沖器110之后計(jì)算吞吐量,然后吞吐量可與閾值進(jìn)行比較。如果吞吐量在閾值之上,則對循環(huán)緩沖器110的寫入可終止。如果吞吐量在閾值以下,則另一循環(huán)迭代可被寫入到循環(huán)緩沖器110。這些和其它條件可被獨(dú)立地使用,或在其他實(shí)施例中以任何適當(dāng)?shù)姆绞浇M合使用。
      [0092]現(xiàn)在參考圖9,顯示在循環(huán)緩沖器中打包循環(huán)的多個(gè)迭代的方法120的一實(shí)施例。為了論述方便,在本實(shí)施例中的步驟按序列的順序示出。應(yīng)指出的是,在如下所述的方法的各種實(shí)施例中,所述元素中的一個(gè)或多個(gè)可以按與所示不同的順序執(zhí)行或同時(shí)執(zhí)行,或者可以完全省略。還可以按需要執(zhí)行其他附加元素。
      [0093]在一實(shí)施例中,可以在指令流中檢測循環(huán)候選(塊122)。然后,循環(huán)緩沖器控制單元可確定循環(huán)候選符合循環(huán)緩沖的標(biāo)準(zhǔn)(塊124)。循環(huán)緩沖器控制單元然后可以為循環(huán)候選啟動(dòng)循環(huán)緩沖模式(塊126)。當(dāng)循環(huán)緩沖模式啟動(dòng)時(shí),可標(biāo)記循環(huán)終止分支uop,以便它可被識(shí)別為循環(huán)末尾。循環(huán)終止分支可定義為不包括子例程調(diào)用的直接向后采納分支。此夕卜,循環(huán)的第一 uop (循環(huán)終止分支之后的下一個(gè)uop)可被標(biāo)記為循環(huán)開始。抓取單元的排列器可在循環(huán)終止分支之后停滯,以便循環(huán)的第一 uop被寫入到循環(huán)緩沖器的第一行的時(shí)隙0(塊128)。
      [0094]接著,循環(huán)的單個(gè)迭代可被寫入到循環(huán)緩沖器(塊130)。由于循環(huán)的迭代正被寫入到循環(huán)緩沖器,所以在迭代的末尾可檢測到循環(huán)終止分支(塊132)。響應(yīng)于檢測到循環(huán)終止分支,循環(huán)緩沖器控制單元可以檢查以查看循環(huán)緩沖器是否已經(jīng)半滿(條件塊134)。在一實(shí)施例中,循環(huán)緩沖器控制單元可以監(jiān)視循環(huán)緩沖器的寫指針,并查看寫指針是否已經(jīng)經(jīng)過了循環(huán)緩沖器的中間點(diǎn)。
      [0095]如果循環(huán)緩沖器小于半滿(條件塊134),則循環(huán)的另一迭代可被寫入到循環(huán)緩沖器(塊130)。對于該迭代,該循環(huán)的第一 uop (即,循環(huán)開始)可被寫入到在循環(huán)的先前迭代的循環(huán)終止分支之后的下一相鄰時(shí)隙,其可以是循環(huán)緩沖器的同一行,如果循環(huán)終止分支位于行的除了最右時(shí)隙之外的任何時(shí)隙的話。這與循環(huán)的第一迭代如何被寫入到循環(huán)緩沖器相反。對于該第一迭代,排列器可以在先前迭代的循環(huán)終止分支之后停滯,使得第一迭代的第一 uop被寫入到循環(huán)緩沖器的第一行的第一(或最左)時(shí)隙。
      [0096]如果循環(huán)緩沖器超過半滿(條件塊134),則循環(huán)緩沖器控制單元可以向前端發(fā)信號(hào)以停止向循環(huán)緩沖器寫入循環(huán)的更多迭代(塊136)。對于循環(huán)的最后迭代,在分派循環(huán)終止分支之后抓取單元的排列器可以被停止。以此方式,當(dāng)處理器進(jìn)入循環(huán)緩沖模式時(shí),可以有干凈的切換以從循環(huán)緩沖器派出uop。此外,當(dāng)處理器進(jìn)入循環(huán)緩沖模式時(shí),指令隊(duì)列中的uop和處理器流水線前端中進(jìn)一步上游的指令可被沖刷。在塊136之后,循環(huán)緩沖器可以將循環(huán)的一個(gè)或多個(gè)迭代令派到處理器流水線的下一級(jí)(塊138)。在循環(huán)正被分派出循環(huán)緩沖器時(shí),處理器的前端可被關(guān)閉。
      [0097]在一實(shí)施例中,可儲(chǔ)存已寫入到循環(huán)緩沖器的行數(shù)。循環(huán)緩沖器控制單元可使用所存儲(chǔ)的有效行數(shù)來確定什么時(shí)候沒有更多的有效行要從循環(huán)緩沖器讀出。例如,當(dāng)成行的uop被分派到處理器流水線的下一級(jí)時(shí),讀指針可步進(jìn)通過循環(huán)緩沖器的行,當(dāng)如所存儲(chǔ)的有效行數(shù)指示的那樣,循環(huán)緩沖器中沒有更多的有效行時(shí),讀指針可重置回到循環(huán)緩沖器的頂部。
      [0098]在塊138后,當(dāng)循環(huán)終止時(shí),方法120可結(jié)束。在循環(huán)終止之后,前端可被重新啟動(dòng),抓取單元可向處理器流水線的其余部分提供指令。[0099]接下來參照圖10,顯示系統(tǒng)140的一實(shí)施例的框圖。如圖所示,系統(tǒng)140可表示桌面計(jì)算機(jī)150、膝上型計(jì)算機(jī)160、平板計(jì)算機(jī)170、手機(jī)180或其他設(shè)備的芯片、電路系統(tǒng)、組件等。在圖示的實(shí)施例中,系統(tǒng)140至少包括耦合到外部存儲(chǔ)器142的IClO(圖1)的一個(gè)實(shí)例。
      [0100]IClO被耦合到一個(gè)或多個(gè)外圍設(shè)備144和外部存儲(chǔ)器142。還提供電源146,其向IClO提供電源電壓并向存儲(chǔ)器142和/或外圍設(shè)備144提供一個(gè)或多個(gè)電源電壓。在各種實(shí)施方式中,電源146可以表示電池(例如,智能電話、膝上型或平板計(jì)算機(jī)的可充電電池)。在一些實(shí)施例中,可包括IClO的多個(gè)實(shí)例(也可包括一個(gè)以上的外部存儲(chǔ)器142)。
      [0101]存儲(chǔ)器142可以是任何類型的存儲(chǔ)器,諸如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、同步DRAM (SDRAM)、雙數(shù)據(jù)速率(DDR,DDR2, DDR3等)SDRAM (包括諸如mDDR3等的SDRAM的移動(dòng)版本、和/或諸如LPDDR2等的SDRAM的低功率版本)、RAMBUS DRAM (RDRAM)、靜態(tài)RAM (SRAM)等。一個(gè)或多個(gè)存儲(chǔ)設(shè)備可以耦合到電路板上以形成存儲(chǔ)模塊,諸如單列直插存儲(chǔ)模塊(SIMM)、雙列直插存儲(chǔ)模塊(DIMM)等。
      [0102]外圍設(shè)備144可根據(jù)系統(tǒng)140的類型而包括任何所需電路。例如在一實(shí)施例中,夕卜圍設(shè)備144可以包括用于不同類型的無線通信(例如WiF1、藍(lán)牙、蜂窩、全球定位系統(tǒng)等)的設(shè)備。外圍設(shè)備144還可以包括額外的儲(chǔ)存器,包括RAM儲(chǔ)存器、固態(tài)儲(chǔ)存器材或磁盤儲(chǔ)存器。外圍設(shè)備144可以包括諸如顯示屏的用戶接口設(shè)備,包括觸控顯示屏或多點(diǎn)觸控顯示屏、鍵盤或其它輸入設(shè)備、麥克風(fēng)、揚(yáng)聲器等。
      [0103]現(xiàn)在轉(zhuǎn)向圖11,顯示了包括一個(gè)或多個(gè)數(shù)據(jù)結(jié)構(gòu)(表示(圖1的)IClO中包括的電路系統(tǒng))的計(jì)算機(jī)可讀介質(zhì)190的框圖的一實(shí)施例。一般而言,計(jì)算機(jī)可讀介質(zhì)190可以包括諸如磁介質(zhì)或光介質(zhì)的任何非暫時(shí)性儲(chǔ)存介質(zhì),例如盤、CD-ROM或DVD-R0M,易失性或非易失性存儲(chǔ)介質(zhì),諸如RAM(例如,SDRAM、RDRAM、SRAM等)、ROM等,以及通過傳輸介質(zhì)或信號(hào)(諸如電、電磁或數(shù)字信號(hào))可訪問的介質(zhì),所述傳輸介質(zhì)或信號(hào)通過通信介質(zhì)(諸如網(wǎng)絡(luò)和/或無線鏈路)被傳送。
      [0104]一般來說,計(jì)算機(jī)可讀介質(zhì)190上的電路系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)可通過程序讀出并直接或間接使用,以制造包含電路系統(tǒng)的硬件。例如,數(shù)據(jù)結(jié)構(gòu)可包括高級(jí)設(shè)計(jì)語言(HDL)(例如Verilog或VHDL)編寫的硬件功能的一個(gè)或多個(gè)行為級(jí)描述或寄存器傳輸級(jí)(RTL)描述。描述可由合成工具讀取,該合成工具對描述進(jìn)行合成以產(chǎn)生包括來自合成庫的門的列表的一個(gè)或多個(gè)網(wǎng)表。網(wǎng)表包括一組門,門還表不包含電路系統(tǒng)的硬件的功能。網(wǎng)表然后被安置和路由以產(chǎn)生描述將應(yīng)用到掩模的幾何形狀的一個(gè)或多個(gè)數(shù)據(jù)集。掩模然后可以應(yīng)用于各種半導(dǎo)體制造步驟中以產(chǎn)生與所述電路系統(tǒng)對應(yīng)的半導(dǎo)體電路。可替換地,根據(jù)需要,計(jì)算機(jī)可讀介質(zhì)190上的數(shù)據(jù)結(jié)構(gòu)可以是網(wǎng)表(具有或不具有合成庫)或數(shù)據(jù)集。在另一替代中,數(shù)據(jù)結(jié)構(gòu)可以包括示意性程序的輸出或者從其衍生的網(wǎng)表或數(shù)據(jù)集。
      [0105]雖然計(jì)算機(jī)可讀介質(zhì)190包括IClO的表示,其它實(shí)施例可以包括IClO的任何部分或部分組合的表示(例如循環(huán)緩沖器、循環(huán)緩沖器控制單元、排列器)。
      [0106]根據(jù)一些實(shí)施例,圖12示出根據(jù)上述本發(fā)明的原理配置的裝置200的功能框圖,圖13示出根據(jù)上述本發(fā)明的原理配置的處理器300的功能框圖。裝置和處理器的功能塊可以由硬件、軟件或硬件和軟件的組合實(shí)現(xiàn)以執(zhí)行本發(fā)明的原理。本領(lǐng)域技術(shù)人員將理解,圖12和13所述的功能塊可以組合或分成子塊以實(shí)施如上所述的本發(fā)明的原理。因此,本文的描述可以支持本文所述功能塊的任何可能的組合或分割或進(jìn)一步的定義。
      [0107]在一實(shí)施例中,如圖12所示,裝置200可包括循環(huán)緩沖器210和循環(huán)緩沖器控制單元220。循環(huán)緩沖器控制單元220可耦合到循環(huán)緩沖器210。循環(huán)緩沖器控制單元220可包括檢測單元221和寫入單元222。檢測單元221可操作來檢測指令流中的循環(huán)。寫入單元222可以操作來使該循環(huán)的兩個(gè)或更多迭代被寫入到循環(huán)緩沖器210。
      [0108]在一實(shí)例中,響應(yīng)于確定循環(huán)緩沖器210不是至少半滿,寫入單元222可還操作為使循環(huán)的另一迭代被寫入到循環(huán)緩沖器210。循環(huán)緩沖器控制單元220還可包括防止單元223。響應(yīng)于確定循環(huán)緩沖器210是至少半滿,防止單元223可以例如操作為防止循環(huán)的額外迭代被寫入到循環(huán)緩沖器210。
      [0109]在一實(shí)例中,循環(huán)緩沖器控制單元220還可包括確定單元224。確定單元224可以例如操作為基于到循環(huán)緩沖器210的寫指針的位置確定循環(huán)緩沖器210是否是半滿。
      [0110]在一實(shí)施例中,響應(yīng)于確定給定迭代中的向后采納分支沒有被寫入到循環(huán)緩沖器210中的行的最右條目,寫入單元222可操作為使循環(huán)的另一迭代被寫入到循環(huán)緩沖器210。響應(yīng)于確定來自給定迭代的向后采納分支被寫入到循環(huán)緩沖器210中的行的最右條目,防止單元223可操作為防止循環(huán)的額外迭代被寫入到循環(huán)緩沖器210。
      [0111]在一示例中,當(dāng)裝置200在循環(huán)緩沖模式時(shí),確定單元224可操作為基于循環(huán)緩沖器210的每周期最大指令操作吞吐量來確定循環(huán)的寫入到循環(huán)緩沖器210的迭代數(shù)。
      [0112]在一示例中,裝置200還可包括排列器230,其配置為將循環(huán)的第一迭代的第一指令操作寫入到循環(huán)緩沖器210的第一行中的第一時(shí)隙。
      [0113]在一個(gè)示例中,循環(huán)緩沖器210還可包括分派單元211,其響應(yīng)于裝置200進(jìn)入循環(huán)緩沖模式而操作為分派循環(huán)的兩個(gè)或更多迭代的指令操作。
      [0114]現(xiàn)在參見圖13,在另一實(shí)施例中,處理器300可包括循環(huán)緩沖器210和耦合到循環(huán)緩沖器210的循環(huán)緩沖器控制單元220。循環(huán)緩沖器控制單元220可配置為檢測指令流中的循環(huán)。循環(huán)緩沖器210還可包括操作來存儲(chǔ)循環(huán)的多個(gè)迭代的儲(chǔ)存單元212和分派單元211,分派單元211操作為響應(yīng)于處理器300進(jìn)入循環(huán)緩沖模式而分派循環(huán)的多個(gè)迭代的指令。
      [0115]在一示例中,處理器300還可包括抓取單元240,其配置為識(shí)別和標(biāo)記循環(huán)的開始。
      [0116]在一示例中,抓取單元240還可包括排列器230。排列器230可以包括配置為識(shí)別循環(huán)迭代邊界的識(shí)別單元231。
      [0117]在一示例中,排列器230還可包括停滯單元232。在一示例中,響應(yīng)于處理器300進(jìn)入循環(huán)緩沖模式,停滯單元232可操作為在檢測到循環(huán)的前一迭代的向后采納分支之后導(dǎo)致停滯。在另一示例中,停滯單元232還可操作為在檢測到循環(huán)的最后迭代的向后采納分支被寫入到循環(huán)緩沖器210之后導(dǎo)致停滯(stall)。
      [0118]在一示例中,排列器230還可包括分配單元233,分配單元233操作為將循環(huán)的第一迭代的向后采納分支在第一時(shí)鐘周期分配到第一時(shí)隙。在一示例中,分配單元233還可操作為將循環(huán)的第二迭代的第一指令操縱在該第一時(shí)鐘周期分配到第二時(shí)隙。第二時(shí)隙和第一時(shí)隙相鄰。
      [0119]應(yīng)強(qiáng)調(diào)的是,上述實(shí)施例僅僅是實(shí)施方式的非限制性示例。一旦完全理解上述公開,多種變化和修改對于本領(lǐng)域技術(shù)人員將是顯而易見的。下面的權(quán)利要求旨在理解為包含所有這些變化和修改。
      【權(quán)利要求】
      1.一種裝置,包括: 循環(huán)緩沖器;以及 耦合到所述循環(huán)緩沖器的循環(huán)緩沖器控制單元,其中所述循環(huán)緩沖器控制單元配置為: 檢測指令流中的循環(huán);以及 使所述循環(huán)的兩個(gè)或更多迭代寫入到所述循環(huán)緩沖器。
      2.如權(quán)利要求1所述的裝置,其中,所述循環(huán)緩沖器控制單元還配置為: 響應(yīng)于確定所述循環(huán)緩沖器不是至少半滿,使所述循環(huán)的另一迭代寫入到所述循環(huán)緩沖器;以及 響應(yīng)于確定所述循環(huán)緩沖器是至少半滿,防止所述循環(huán)的額外迭代寫入到所述循環(huán)緩沖器。
      3.如權(quán)利要求2所述的裝置,其中,所述循環(huán)緩沖器控制單元配置為基于到循環(huán)緩沖器的寫指針的位置確定所述循環(huán)緩沖器是否半滿。
      4.如權(quán)利要求1所述的裝置,其中,所述循環(huán)緩沖器控制單元還配置為: 響應(yīng)于確定給定迭代中的向后采納分支沒有被寫入到所述循環(huán)緩沖器中的行的最右條目,使所述循環(huán)的另一迭代被寫入到所述循環(huán)緩沖器;以及 響應(yīng)于確定來自所述給定迭代的向后采納分支被寫入到所述循環(huán)緩沖器中的行的最右條目,防止所述循環(huán)的額外迭代被寫入到所述循環(huán)緩沖器。
      5.如權(quán)利要求1所述的裝置,其中,當(dāng)所述裝置處于循環(huán)緩沖模式時(shí),基于所述循環(huán)緩沖器的最大每周期指令操作吞吐量,確定寫入到所述循環(huán)緩沖器的所述循環(huán)的迭代的數(shù)目。
      6.如權(quán)利要求1所述的裝置,還包括排列器,所述排列器配置為將所述循環(huán)的第一迭代的第一指令操作寫入到所述循環(huán)緩沖器的第一行中的第一時(shí)隙。
      7.如權(quán)利要求1所述的裝置,其中,所述循環(huán)緩沖器配置為響應(yīng)于所述裝置進(jìn)入循環(huán)緩沖模式而分派所述循環(huán)的兩個(gè)或更多迭代的指令操作。
      8.一種處理器,包括: 循環(huán)緩沖器;以及 耦合到所述循環(huán)緩沖器的循環(huán)緩沖器控制單元,其中所述循環(huán)緩沖器控制單元配置為檢測指令流中的循環(huán); 其中所述循環(huán)緩沖器配置為: 存儲(chǔ)所述循環(huán)的多個(gè)迭代;以及 響應(yīng)于所述處理器進(jìn)入循環(huán)緩沖模式,分派所述循環(huán)的多個(gè)迭代的指令。
      9.如權(quán)利要求8所述的處理器,其中,所述循環(huán)的多個(gè)迭代中的每個(gè)迭代是相同的。
      10.如權(quán)利要求8所述的處理器,還包括配置為識(shí)別和標(biāo)記所述循環(huán)的開始的抓取單元 ο
      11.如權(quán)利要求10所述的處理器,其中,所述抓取單元包括配置為識(shí)別循環(huán)迭代邊界的排列器。
      12.如權(quán)利要求11所述的處理器,其中,所述排列器還配置為響應(yīng)于所述處理器進(jìn)入循環(huán)緩沖模式而在檢測到所述循環(huán)的先前迭代的向后采納分支之后導(dǎo)致停滯。
      13.如權(quán)利要求12所述的處理器,其中,所述排列器還配置為在檢測到所述循環(huán)的最后迭代的向后采納分支被寫入到所述循環(huán)緩沖器之后導(dǎo)致停滯。
      14.如權(quán)利要求13所述的處理器,其中,所述排列器還配置為: 在第一時(shí)鐘周期中,將所述循環(huán)的第一迭代的向后采納分支分配到第一時(shí)隙;以及在所述第一時(shí)鐘周期,將所述循環(huán)的第二迭代的第一指令操作分配到第二時(shí)隙,其中所述第二時(shí)隙與所述第一時(shí)隙相鄰。
      15.一種方法,包括: 檢測指令流中的循環(huán)候選; 確定所述循環(huán)候選滿足在循環(huán)緩沖器中緩沖的標(biāo)準(zhǔn); 將所述循環(huán)候選的第一迭代寫入到所述循環(huán)緩沖器; 響應(yīng)于檢測到所述循環(huán)候選的第一迭代的循環(huán)終止分支,確定所述循環(huán)緩沖器是否是至少半滿的;以及 響應(yīng)于確定所述循環(huán)緩沖器不是至少半滿,將所述循環(huán)候選的第二迭代寫入到所述循環(huán)緩沖器。
      16.如權(quán)利要求15所述的方法,所述方法還包括: 響應(yīng)于檢測到所述循環(huán)候選的第二迭代的循環(huán)終止分支,確定所述循環(huán)緩沖器是否是半滿的;以及 響應(yīng)于確定所述循環(huán)緩沖器是至少半滿的,從所述循環(huán)緩沖器分派所述循環(huán)候選的第一和第二迭代。
      17.如權(quán)利要求16所述的方法,所述方法還包括:響應(yīng)于從所述循環(huán)緩沖器分派所述循環(huán)候選的第一和第二迭代,關(guān)閉抓取單元。
      18.如權(quán)利要求17所述的方法,還包括:存儲(chǔ)與儲(chǔ)存在所述循環(huán)緩沖器中的有效行數(shù)相等的第一值。
      19.如權(quán)利要求18所述的方法,其中,從所述循環(huán)緩沖器分派所述循環(huán)候選的第一和第二迭代包括:使讀指針步進(jìn)通過與所述第一值相等的所述循環(huán)緩沖器的行數(shù)。
      20.如權(quán)利要求19所述的方法,還包括:響應(yīng)于所述讀指針步進(jìn)通過與所述第一值相等的所述循環(huán)緩沖器的行數(shù),將所述讀指針復(fù)位到所述循環(huán)緩沖器的第一行。
      【文檔編號(hào)】G06F12/08GK103513964SQ201310353450
      【公開日】2014年1月15日 申請日期:2013年6月14日 優(yōu)先權(quán)日:2012年6月15日
      【發(fā)明者】C·布拉斯考-阿魯, I·D·考恩坦尼斯 申請人:蘋果公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1