用于跨越指令高速緩沖存儲器線的指令的預(yù)解碼修復(fù)高速緩沖存儲器的制造方法
【專利摘要】本發(fā)明涉及用于跨越指令高速緩沖存儲器線的指令的預(yù)解碼修復(fù)高速緩沖存儲器。具體的,本發(fā)明描述處理器中的一種預(yù)解碼修復(fù)高速緩沖存儲器,其能夠提取和執(zhí)行可變長度指令,所述可變長度指令具有可在一程序中混合的具有至少兩個長度的指令。本發(fā)明還描述用于填充所述預(yù)解碼修復(fù)高速緩沖存儲器和用于執(zhí)行跨越兩個高速緩沖存儲器線的指令的方法。
【專利說明】用于跨越指令高速緩沖存儲器線的指令的預(yù)解碼修復(fù)高速 緩沖存儲器
[0001] 分案申請的相關(guān)信息
[0002] 本案是分案申請。該分案的母案是申請日為2008年10月31日、申請?zhí)枮?200880118233. 4、發(fā)明名稱為"用于跨越指令高速緩沖存儲器線的指令的預(yù)解碼修復(fù)高速 緩沖存儲器"的發(fā)明專利申請案。
【技術(shù)領(lǐng)域】
[0003] 本發(fā)明大體上涉及改進(jìn)處理具有多種長度的指令的處理器中的效率的技術(shù),且更 明確地說,涉及用于在預(yù)解碼修復(fù)高速緩沖存儲器中存儲針對跨越兩個或兩個以上高速緩 沖存儲器線的指令的預(yù)解碼信息的有利技術(shù)。
【背景技術(shù)】
[0004] 許多處理器支持具有可變長度指令的指令組。舉例來說,處理器的指令組可由32 位指令和16位指令組成。處理器也可具有分級存儲器配置,所述分級存儲器配置具有多層 高速緩沖存儲器,包含(例如)指令高速緩沖存儲器、數(shù)據(jù)高速緩沖存儲器和系統(tǒng)存儲器。 如果處理器還具有在高時鐘速率下以持續(xù)時間較短的管線級操作的深執(zhí)行管線,那么也有 可能處理器具有預(yù)解碼級,用以預(yù)處理指令以便使后續(xù)的解碼級簡化,且因此使管線成流 線型。所述預(yù)解碼管線級一般在指令高速緩沖存儲器未中期間操作,以部分地解碼因指令 未中而提取的指令。預(yù)解碼信息連同所提取的指令一起被寫入到指令高速緩沖存儲器中。
[0005] 在可變長度指令處理器中,因未中而提取的指令可具有不同的長度,且較長的指 令可能跨越兩個高速緩沖存儲器線。對于跨越兩個高速緩沖存儲器線的指令,指令的兩個 部分均必須被提取以便正確地預(yù)解碼所述指令,這增加了預(yù)解碼功能的復(fù)雜性,且可能影 響性能和電力利用率。
【發(fā)明內(nèi)容】
[0006] 在本發(fā)明的若干方面中,本發(fā)明認(rèn)識到可通過使用預(yù)解碼修復(fù)高速緩沖存儲器來 改進(jìn)性能和節(jié)省電力。本發(fā)明的第一實施例認(rèn)識到需要一種填充預(yù)解碼修復(fù)高速緩沖存儲 器的方法。提取指令的存儲在第一高速緩沖存儲器線中的第一部分。還提取指令的存儲在 下一高速緩沖存儲器線上的第二部分。在處理器管線級中預(yù)解碼指令的第一部分和第二部 分,以形成經(jīng)修復(fù)的預(yù)解碼信息。利用與所述指令相關(guān)聯(lián)的地址將經(jīng)修復(fù)的預(yù)解碼信息寫 入預(yù)解碼修復(fù)高速緩沖存儲器中。
[0007] 本發(fā)明的另一實施例提出一種用于執(zhí)行跨越兩個高速緩沖存儲器線的指令的方 法。提取跨越兩個高速緩沖存儲器線的指令的第一部分,指令的第一部分存儲在指令高速 緩沖存儲器中的第一高速緩沖存儲器線中。從與指令高速緩沖存儲器分開的預(yù)解碼修復(fù)高 速緩沖存儲器提取與所述指令相關(guān)聯(lián)的預(yù)解碼信息。還提取指令的存儲在第一高速緩沖存 儲器線之后的下一高速緩沖存儲器線中的第二部分。響應(yīng)于預(yù)解碼信息而執(zhí)行所述指令。
[0008] 另一實施例提出一種用于利用預(yù)解碼修復(fù)高速緩沖存儲器的設(shè)備。指令高速緩沖 存儲器可操作以在指令高速緩沖存儲器線中存儲具有至少第一長度和第二長度的指令,第 二長度比第一長度長。預(yù)解碼器可操作以預(yù)解碼從指令高速緩沖存儲器提取的具有無效預(yù) 解碼信息的指令,以形成經(jīng)修復(fù)的預(yù)解碼信息。預(yù)解碼修復(fù)高速緩沖存儲器可操作以存儲 與指令高速緩沖存儲器中跨越兩個高速緩沖存儲器線的具有第二長度的指令相關(guān)聯(lián)的經(jīng) 修復(fù)的預(yù)解碼信息。
[0009] 從以下【具體實施方式】和附圖將明白對本發(fā)明以及本發(fā)明的其它特征和優(yōu)點的更 完整的理解。
【專利附圖】
【附圖說明】
[0010] 圖1說明其中可有利地使用本發(fā)明的實施例的示范性無線通信系統(tǒng);
[0011] 圖2說明具有處理器、層1指令高速緩沖存儲器(LI I高速緩沖存儲器)、層2高 速緩沖存儲器(L2高速緩沖存儲器)和預(yù)解碼修復(fù)高速緩沖存儲器的指令流邏輯;
[0012] 圖3A說明含有16位和32位的不同長度指令的示范性程序段;
[0013] 圖3B說明含有來自圖3A的程序段300的指令的示范性LI I高速緩沖存儲器線;
[0014] 圖4A說明示范性LI I高速緩沖存儲器段;
[0015] 圖4B說明用于準(zhǔn)備預(yù)解碼修復(fù)高速緩沖存儲器條目的管線級圖;
[0016] 圖4C是說明用以通過從預(yù)解碼修復(fù)高速緩沖存儲器提取用于跨線指令(跨越兩 個高速緩沖存儲器線的指令)的有效預(yù)解碼位來節(jié)省電力的操作的處理器管線級圖;
[0017] 圖5是在LI I高速緩沖存儲器中的未中時遵循的且用于準(zhǔn)備到預(yù)解碼修復(fù)高速 緩沖存儲器的條目的操作步驟的過程;及
[0018] 圖6是當(dāng)從LI I高速緩沖存儲器提取跨線指令時遵循的操作步驟的流程圖。
【具體實施方式】
[0019] 現(xiàn)在將參看附圖更完整地描述本發(fā)明,附圖中展示了本發(fā)明的若干實施例。然而, 本發(fā)明可以各種形式體現(xiàn),且不應(yīng)被理解為限于此處所陳述的實施例。相反,提供這些實施 例是為了使本發(fā)明將透徹和完整,且將完全將本發(fā)明的范圍傳達(dá)給所屬領(lǐng)域的技術(shù)人員。
[0020] 用于被操作和用于執(zhí)行根據(jù)本發(fā)明的教示的操作的計算機程序代碼或"程序代 碼"可用例如 C、C++、JAVA?、Smalltalk、JavaScript?、Visual Basic?、TSQL、Perl 等高 級編程語言或用各種其它編程語言編寫。用于目標(biāo)處理器架構(gòu)的程序也可直接用本機匯編 器語言編寫。本機匯編器程序使用機器級二進(jìn)制指令的指令助記表示。如本文中所使用的 程序代碼或計算機可讀媒體是指格式可被處理器理解的機器語言代碼,例如對象代碼。
[0021] 圖1說明其中可有利地使用本發(fā)明的實施例的示范性無線通信系統(tǒng)100。出于說 明目的,圖1展示三個遠(yuǎn)程單元120、130和150以及兩個基站140。將認(rèn)識到,常見的無線 通信系統(tǒng)可具有多得多的遠(yuǎn)程單元和基站。遠(yuǎn)程單元120U30和150包含硬件組件、軟件 組件或這兩者,如由組件125A、125B和125C表示,其已適合于體現(xiàn)下文進(jìn)一步論述的本發(fā) 明。圖1展示從基站140以及遠(yuǎn)程單元120U30和150的前向鏈路信號180,以及從遠(yuǎn)程單 元120、130和150到基站140的反向鏈路信號190。
[0022] 在圖1中,將遠(yuǎn)程單元120展示為移動電話,將遠(yuǎn)程單元130展示為便攜式計算 機,且將遠(yuǎn)程單元150展示為無線本地環(huán)路系統(tǒng)中的固定位置遠(yuǎn)程單元。舉例來說,遠(yuǎn)程單 元可替代地是手機、尋呼機、步話機、手持式個人通信系統(tǒng)(PCS)單元、便攜式數(shù)據(jù)單元(例 如個人數(shù)據(jù)助理),或固定位置數(shù)據(jù)單元(例如讀表裝備)。盡管圖1說明根據(jù)本發(fā)明的教 示的遠(yuǎn)程單元,但本發(fā)明不限于這些示范性的所說明的單元。本發(fā)明的實施例可合適地用 于使用具有可變長度指令的在指令高速緩沖存儲器中存儲預(yù)解碼信息的管線式處理器的 任何裝置中。
[0023] 圖2說明指令流邏輯200,其具有處理器204、層1指令高速緩沖存儲器(LI I高 速緩沖存儲器)206、層2高速緩沖存儲器(L2高速緩沖存儲器)208和預(yù)解碼修復(fù)高速緩 沖存儲器210。指令流邏輯200進(jìn)一步包含預(yù)解碼器214、填充緩沖器216、指令高速緩存 級1 (IC1) 218、指令高速緩存級2 (IC2) 220、多路復(fù)用器222以及到達(dá)系統(tǒng)存儲器224的接 口。為了對本發(fā)明的說明和論述的清楚起見,未展示可連接到處理器204的外圍裝置(例 如通信子系統(tǒng))。指令流邏輯200可合適地用于硬件組件125A到125C以用于執(zhí)行程序代 碼。處理器204直接耦合到LI I高速緩沖存儲器206和多路復(fù)用器222。處理器204以分 級方式從高速緩沖存儲器和系統(tǒng)存儲器提取指令。舉例來說,處理器204通過在LI I高速 緩沖存儲器輸入總線228上產(chǎn)生提取地址來提取指令。處理器204也可向指令流邏輯200 提供操作模式狀態(tài)信號,作為處理器的由編程人員指定的操作模式的指示符。
[0024] 處理器的指令組包含以多種長度格式編碼的指令,其中較長的指令一般是在可變 長度指令組中可用的最短指令格式長度的倍數(shù)。由于指令可具有復(fù)合編碼(其可依據(jù)指令 的長度而變化)且所述指令可能鄰近于具有不同長度的指令,所以所提取的指令的對準(zhǔn)和 解碼可能需要超過在具有較短持續(xù)時間的時鐘周期的單處理器管線級中能夠?qū)崿F(xiàn)的處理 的處理。如下文更詳細(xì)地描述,由于指令復(fù)雜性的等級,處理器可包含單獨的指令對準(zhǔn)管線 級,且可將指令解碼操作分成預(yù)解碼步驟和一個或一個以上解碼管線級。
[0025] 通過在LI I高速緩沖存儲器未中的處理期間進(jìn)行預(yù)解碼操作,預(yù)解碼步驟可合適 地向普通管線執(zhí)行隱藏。當(dāng)在LI I高速緩沖存儲器中未找到所提取的指令且必須從存儲 器層級的較高層提取指令時,LI I高速緩沖存儲器未中處理發(fā)生。在接收到所提取的指令 (例如從L2高速緩沖存儲器208)后,預(yù)解碼所述所提取的指令。預(yù)解碼操作將預(yù)解碼信息 連同所提取的指令一起存儲在L1指令高速緩沖存儲器中。由于可變長度指令,指令可具有 致使所述指令跨多個指令高速緩沖存儲器線而存儲的長度。舉例來說,32位指令可分裂成 兩個部分,其中第一 16位部分存儲在第一指令高速緩沖存儲器線的末尾,且第二16位部分 存儲在下一循序指令高速緩沖存儲器線的開頭。如下文更詳細(xì)地論述,當(dāng)指令跨越高速緩 沖存儲器線邊界時,預(yù)解碼操作的復(fù)雜性增加。
[0026] 在操作中,處理器204存取LI I高速緩沖存儲器206,以通過使用匹配機制來確定 LI I高速緩沖存儲器中是否存在所尋址的指令。如果在LI I高速緩沖存儲器206中針對 所提取的指令未發(fā)現(xiàn)匹配,那么未中發(fā)生。處理器206隨后向L2高速緩沖存儲器208作出 存取請求232。舉例來說,在LI I高速緩沖存儲器206的初始化后,將I高速緩沖存儲器視 為具有無效內(nèi)容,且隨著LI I高速緩沖存儲器206被填充有指令,將存在未中。此外,當(dāng)程 序分支到新的代碼區(qū)段時,在LI I高速緩沖存儲器提取時發(fā)生I高速緩沖存儲器未中的概 率較大。
[0027] 對于L2高速緩沖存儲器208中的指令命中,在端口 A 234上將含有所要指令的L2 高速緩沖存儲器線輸出到預(yù)解碼器214。預(yù)解碼器214在處理管線中的預(yù)解碼管線級期間 操作,所述預(yù)解碼管線級控制在未中時遵循的步驟的順序。預(yù)解碼器214部分地解碼從L2 高速緩沖存儲器提取的指令,并在耦合到填充緩沖器216的輸出總線238上提供指令、與所 述指令相關(guān)聯(lián)的預(yù)解碼位以及標(biāo)簽信息。填充緩沖器216提供彈性存儲以適應(yīng)不同的存儲 和處理器等待時間。填充緩沖器216的輸出總線240將經(jīng)緩沖的指令、相關(guān)聯(lián)的預(yù)解碼位 以及標(biāo)簽信息耦合到LI I高速緩沖存儲器206且耦合到多路復(fù)用器222,指令在被多路復(fù) 用器控制(Mctl)信號242選擇時從多路復(fù)用器222前進(jìn)到處理器204。
[0028] 在LI I高速緩沖存儲器206中的指令命中時,所提取的指令和預(yù)解碼位經(jīng)由指令 總線244耦合到多路復(fù)用器222,所述指令和預(yù)解碼位在被Mctl信號242選擇時從多路復(fù) 用器222前進(jìn)到處理器204。預(yù)解碼位可以多種方式格式化以支持高效的處理。舉例來說, 可結(jié)合每一 16位指令提供四個預(yù)解碼位(Pd4),且可結(jié)合每一 32位指令提供兩組Pd4位。 依據(jù)需要存儲在預(yù)解碼位中的信息,可預(yù)解碼2個位、3個位或多于3個位并將其連同相關(guān) 聯(lián)的指令一起存儲在LI I高速緩沖存儲器線中。
[0029] 圖3A說明可合適地含有16位和32位的不同長度指令的示范性程序段300。示范 性程序段300可合適地存儲在指令流邏輯200的存儲器層級中,包含LI I高速緩沖存儲器 206和L2高速緩沖存儲器208。應(yīng)注意,盡管為了說明目的而假定程序段是從一個或一個 以上高速緩沖存儲器線檢索的,但本發(fā)明的教示適用于存儲程序段的其中可變長度指令可 跨越存儲段邊界的任何存儲器裝置。一般來說,術(shù)語"高速緩沖存儲器線"也可稱為指令串 或指令流。由于高速緩沖存儲器線可具有固定長度,因此術(shù)語"指令串"或"指令流"是指可 跨越高速緩沖存儲器線的邊界且可具有越過邊界而分裂的指令的一個或一個以上程序段。
[0030] 程序段300包含指令302,其來自由16位和32位指令組成的可變長度指令組。舉 例來說,處理器204可針對多種類型的指令使用16位和32位指令格式,且可支持指定并限 制指令類型使用的若干操作模式。舉例來說,處理器204可具有指定可使用僅32位指令的 第一操作模式,以及指定可使用16位指令與32位指令的組合的第二操作模式。雖然處理 器可具有多種操作模式,但為了本發(fā)明的論述的清楚起見,對示范性處理器204的描述主 要限于上文所述的第二操作模式。
[0031] 為了說明各種實施例,在圖3A中說明若干示范性16位和32位指令。出于說明目 的,程序相對字節(jié)指示符304表示高速緩沖存儲器線中指令開始的字節(jié)位置,且間接地指 示指令的大小。舉例來說,ADD R5、R4、R3指令306在相對字節(jié)位置00處開始,且在字節(jié)位 置01處結(jié)束。因此ADD R5、R4、R3指令306是16位指令。類似地,ADD指令309的長度也 是16位。加載(LOAD)指令307、LOAD指令308和存儲(STORE)指令310的長度是32位。
[0032] 依據(jù)(例如)處理器和存儲器層級的設(shè)計中基于所使用的制造技術(shù)而作出的選 擇,高速緩沖存儲器線大小在不同的處理器實施方案中可不同。舉例來說,L2高速緩沖存 儲器208可使用256位或512位高速緩沖存儲器線,且L1高速緩沖存儲器206可使用較小 的高速緩沖存儲器線,例如128位高速緩沖存儲器線。請注意,出于說明性目的,已將程序 段300展示為在相對地址00處開始。將了解,此程序段300可定位為在高速緩沖存儲器線 中的各個點處開始,且可跨越于多個高速緩沖存儲器線之間。
[0033] 圖3B說明含有來自圖3A的程序段300的指令的示范性LI I高速緩沖存儲器線 350。示范性第一 LI I高速緩沖存儲器線320和示范性第二LI I高速緩沖存儲器線322是 圖2的LI I高速緩沖存儲器206中的相鄰的高速緩沖存儲器線。舉例來說,第一 LI I高 速緩沖存儲器線320由多個20位字段組成,其中每一 20位字段(例如20位字段326)由 16位字段327與相關(guān)聯(lián)的4位預(yù)解碼(Pd4)字段328組成。在此實例中,L1高速緩沖存儲 器將128個位用于指令,且還需要額外的空間以用于八個Pd4字段,從而產(chǎn)生160位L1高 速緩沖存儲器線。單個4位Pd4字段用于16位指令,且兩個Pd4字段用于32位指令。4位 Pd4字段可含有與Pd4字段相關(guān)聯(lián)的指令或指令區(qū)段的至多達(dá)十六個經(jīng)編碼特性。舉例來 說,編碼可指示所述指令是加載或存儲指令、算術(shù)指令還是需要微碼支持的復(fù)合指令。編碼 還可指示相關(guān)聯(lián)的一組16個指令位的是32位指令的前一半還是單獨的16位指令,所述指 令是否為分支類型的指令等等。編碼可進(jìn)一步指示無法獲得有效的預(yù)解碼信息,且相應(yīng)地 對Pd4位進(jìn)行標(biāo)記。Pd4信息在指令對準(zhǔn)、解碼中是有用的,且可用于其它目的,例如分支處 置。
[0034] 圖3A的程序段300的指令可位于L1高速緩沖存儲器線中,以圖3A的16位ADDR5、 R4、R3指令306開始,且其相關(guān)聯(lián)的Pd4字段分別存儲在L1高速緩沖存儲器線段327和328 中。圖3A的32位LOAD指令307和其相關(guān)聯(lián)的Pd4字段被組織成段330,且以不同于單個 16位指令的方式存儲在L1高速緩沖存儲器線中。出于說明性目的,16位L1高速緩沖存儲 器線段331含有LOAD指令307的高階16個位。Pd4字段332提供用于32位LOAD指令的 預(yù)解碼信息,而接下來的16位L1高速緩沖存儲器線段333含有LOAD指令307的低階16 個位。Pd4字段334含有用于32位LOAD指令307的額外預(yù)解碼信息。由于其它程序段可 能在不同時間占用高速緩沖存儲器線,所以可使用Pd4字段334以支持16位指令,所述16 位指令(例如)存儲在16位L1高速緩沖存儲器線段333中。
[0035] L1高速緩沖存儲器線中的下一指令是圖3A的32位LOAD指令308,其越過兩個指 令高速緩沖存儲器線而存儲。LOAD指令308的高階16個位連同其相關(guān)聯(lián)的預(yù)解碼位字段 作為20位段336存儲在第一 LI I高速緩沖存儲器線320中,20位段336由16位字段337 和4位Pd4字段338組成。LOAD指令308的低階16個位連同其相關(guān)聯(lián)的Pd4位字段作為 20位段340存儲在第二LI I高速緩沖存儲器線322中,20位段340由16位字段341和4 位Pd4字段342組成。ADD R8、R6、R7指令309和STORE指令310 (均見圖3A)以類似于段 326和330的方式存儲在第二LI I高速緩沖存儲器線322中。
[0036] 請注意,對于僅32位指令的第一操作模式,所有指令均根據(jù)架構(gòu)定義而位于字對 準(zhǔn)邊界上。對于此第一操作模式,程序段由僅32位指令(未圖示)組成,所述指令并不越 過指令高速緩沖存儲器線邊界。
[0037] 本發(fā)明的一個方面涉及確定關(guān)于越過指令高速緩沖存儲器線邊界的指令的預(yù)解 碼信息以及填充預(yù)解碼修復(fù)高速緩沖存儲器。本發(fā)明的另一方面涉及執(zhí)行跨越兩個高速緩 沖存儲器線的指令以改進(jìn)處理器性能且節(jié)省電力。下文更詳細(xì)地描述本發(fā)明的這些和其它 方面。
[0038] 返回參看圖2的指令流邏輯200,處理器204通過在LI I高速緩沖存儲器輸入總 線228上提供待提取的指令的地址(提取地址),來起始從LI I高速緩沖存儲器206提取 指令,且可在提取時提供當(dāng)前程序指定的操作模式狀態(tài)信息。提取時的操作模式狀態(tài)信息 可包含處理器是處于在字對準(zhǔn)邊界上使用僅32位指令的第一操作模式,還是使用16位和 32位兩種指令的第二操作模式,還是其它處理器模式。
[0039] 如果在LI I高速緩沖存儲器206中發(fā)生未中,那么處理器204繼續(xù)從L2高速緩 沖存儲器208提取指令,或者如果在L2高速緩沖存儲器208中未找到所述指令,那么從系 統(tǒng)存儲器提取所述指令。在因存儲器存取定時導(dǎo)致的等待時間之后,從系統(tǒng)存儲器或從L2 高速緩沖存儲器輸出234提供指令,且將所述指令耦合到預(yù)解碼器214以產(chǎn)生預(yù)解碼位。通 過部分地解碼所述指令來產(chǎn)生預(yù)解碼四個位(Pd4)。在合適的高速緩沖存儲器線地址處將 指令的16位字段和其相關(guān)聯(lián)的Pd4位寫入到LI I高速緩沖存儲器。
[0040] 經(jīng)預(yù)解碼的指令和Pd4位存儲在填充緩沖器216中,且從填充緩沖器216分配到 多路復(fù)用器222和LI I高速緩沖存儲器206。對于指令,例如圖3A的LOAD指令308 (其跨 越LI I高速緩沖存儲器線320和322),將存儲在圖3B的段338中的Pd4位設(shè)置為指示相 關(guān)聯(lián)的16位字段337是32位指令的高階16個位,且LOAD指令308越過高速緩沖存儲器 線邊界。在這一點處,LOAD指令308的第二半是不可用的。強行從L2高速緩沖存儲器208 或從系統(tǒng)存儲器進(jìn)行第二次提取以獲得LOAD指令308的第二半的技術(shù)通常實施起來將較 昂貴,且將影響處理器性能。不是強行提取LOAD指令的第二半,而是將在自然程序進(jìn)程中 提取下一高速緩沖存儲器線。
[0041] 將LOAD指令308的高階16個位加載到指令對準(zhǔn)(IDA)管線級250中。在提取下 一指令高速緩沖存儲器線之后,將LOAD指令308的低階16位一半加載到IDA管線級250 中。使在指令對準(zhǔn)級250中接收到的指令對準(zhǔn),且使其準(zhǔn)備就緒以用于后續(xù)的處理器預(yù)解 碼器252和解碼器254管線級。在解碼器254之后,選擇經(jīng)解碼的指令以穿過多路復(fù)用器 256,且可在將所述指令加載到解碼寄存器258中之前進(jìn)一步在解碼器257中對所述指令進(jìn) 行解碼,所述指令從解碼寄存器258繼續(xù)執(zhí)行。處理器預(yù)解碼器252形成新的Pd4預(yù)解碼 位,作為用于所述指令的經(jīng)修復(fù)的預(yù)解碼信息。LI I高速緩沖存儲器206中的指令的地址 和經(jīng)修復(fù)的預(yù)解碼信息經(jīng)由預(yù)解碼修復(fù)總線260傳送到預(yù)解碼修復(fù)高速緩沖存儲器210。 隨后將所述地址和新的PD4位存儲在預(yù)解碼修復(fù)高速緩沖存儲器中。在替代實施例中,指 令、地址和其相關(guān)聯(lián)的新Pd4位可經(jīng)由預(yù)解碼修復(fù)總線260傳送并存儲在預(yù)解碼修復(fù)高速 緩沖存儲器中。
[0042] 在命中跨線LOAD指令308的后續(xù)提取后,檢索存儲在預(yù)解碼修復(fù)高速緩沖存儲器 210中的信息(例如指令和新的Pd4位),并使用新的Pd4位代替來自與LI I高速緩沖存 儲器206的指令一起存儲的Pd4位。在命中或未中信號261上指示預(yù)解碼修復(fù)高速緩沖存 儲器210中的命中。預(yù)解碼修復(fù)高速緩沖存儲器輸出總線262將預(yù)解碼修復(fù)高速緩沖存儲 器210耦合到多路復(fù)用器222,多路復(fù)用器222耦合到IDA級250。在使用預(yù)解碼修復(fù)高速 緩沖存儲器所存儲的Pd4位的情況下,來自IDA級250的指令在IDA總線264上直接前進(jìn) 到解碼器266,接著酌情在解碼器257中進(jìn)一步解碼,且隨后前進(jìn)到解碼寄存器258,繞過在 處理器預(yù)解碼器252中遇到的多個周期。在跨線指令位于程序環(huán)路中的情形下,可通過使 用來自預(yù)解碼修復(fù)高速緩沖存儲器210的經(jīng)修復(fù)的預(yù)解碼信息而不必在每次穿過環(huán)路時 都經(jīng)過處理器預(yù)解碼器252管線級來節(jié)省相當(dāng)大的性能。
[0043] 圖4A說明示范性LI I高速緩沖存儲器段400。LI I高速緩沖存儲器段400包含 第一 80位LI I高速緩沖存儲器線402和第二80位LI I高速緩沖存儲器線404。所述高 速緩沖存儲器線中的每一者由20位的區(qū)段406到409組成,其包含16位指令字段和Pd4 字段。示范性程序段存儲在高速緩沖存儲器線402和404中,由20位字段劃分且由20位 字段0-7和相關(guān)聯(lián)的16位或32位指令A(yù)-E來標(biāo)記。實例程序段包含由單個20位字段(0, A) 411組成的16位指令A(yù)、由兩個20位字段(1,B) 412和(2, B) 413組成的32位指令B、 由(3, 0414和(4, 0415組成的32位指令C、由(5, D) 416組成的16位指令D以及由(6, E) 417和(7, E) 418組成的32位指令E。存儲在L1I高速緩沖存儲器段400中的程序段類 似于圖3A的程序段300。此程序段用于說明圖2的指令流邏輯200中的操作的處理器管線 級。對圖4B的管線級圖420和圖4C的管線級圖450的描述也涉及圖2的指令流邏輯。
[0044] 圖4B說明用于準(zhǔn)備預(yù)解碼修復(fù)高速緩沖存儲器條目的管線級圖420。管線級圖 420由時間周期1"422、1+1"423等直到1+7"429組成。管線級被說明為行,且包含指令高 速緩存級1(IC1)430、指令高速緩存級2(IC2)431、指令對準(zhǔn)級(IDA)432、解碼級(DCD)433 和修復(fù)級434。
[0045] 管線序列在時間"t"422處以含有指令A(yù),(0, A)411 ;指令B,(1,B)412和(2, B) 413 ;以及指令C,(3, 0414的前一半的第一 LI I高速緩沖存儲器線402進(jìn)入指令高速 緩存級1 (IC1)430(例如L1指令高速緩沖存儲器206的IC1218)而開始。此狀態(tài)在管線級 圖420中在行IC1430中被說明為時間"t" 422處的16位字段0-3。
[0046] 在時間"t+1" 423處,第一 LI I高速緩沖存儲器線402進(jìn)入指令高速緩存級 2 (IC2) 431,例如L1指令高速緩沖存儲器206的IC2220。此外,在時間"t+l"423處,含有指 令 C,(4, C) 415 的第二半;指令 D,(5, D) 416 以及指令 E,(6, E) 417 和(7, E) 418 的第二 L1 I高速緩沖存儲器線404進(jìn)入IC1430,如IC1218。此狀態(tài)在管線級圖420中在行IC1430中 被說明為時間"t+1" 423處的16位字段4-7。此時還接收到由Mctl信號261指示的預(yù)解 碼修復(fù)高速緩沖存儲器210中的未中,其指示用于跨越兩個高速緩沖存儲器線的指令C的 預(yù)解碼位尚未修復(fù)。
[0047] 在時間"t+2" 424處,第一 LI I高速緩沖存儲器線402穿過多路復(fù)用器222進(jìn)入 指令對準(zhǔn)(IDA)管線級432,例如處理器204的IDA 250。在這一點處,確定指令C的僅一 半存在于高速緩沖存儲器線中。在此示范性場景中,指令C的第二半在IC2431(例如管線 的IC2220級)中。此外,使來自下一所提取的高速緩沖存儲器線的指令進(jìn)入到指令高速緩 存級1 (IC1) 430 (例如L1指令高速緩沖存儲器206的IC1218)中。這些接下來的指令被說 明為"以指示提取下一組指令。
[0048] 在時間"t+3"425處,具有有效預(yù)解碼位(Pd4)的指令A(yù)和B (例如)通過經(jīng)由IDA 總線264傳送到解碼寄存器258而進(jìn)入解碼D⑶管線級433。此狀態(tài)被說明為管線的DOT 433級中的A/B。指令C的第二半從IC2級431獲得,且與指令C的第一半組合,從而在IDA 級432中產(chǎn)生指令C,3C/4C,其具有無效的預(yù)解碼位。由來自第二L1I高速緩沖存儲器線 404的指令D (5, D) 416和指令E (6, E) 417和(7, E) 418組成的指令D和E保留在管線的IC2 級431處。
[0049] 在時間"t+4"426處,在處理器預(yù)解碼器252中預(yù)解碼指令C,(3, 0414和(4, 0415,且將結(jié)果加載到預(yù)解碼修復(fù)高速緩沖存儲器210的前端中。此狀態(tài)被說明為預(yù)解碼 修復(fù)的第一周期,且展示為時間"t+4" 426和修復(fù)級434處的"1"。還使預(yù)解碼器結(jié)果可供 解碼器254使用。指令(5, D) 416和指令E,(6, E) 417和(7, E) 418保留在管線的IC2級 431 處。
[0050] 在時間"t+5"427處,將預(yù)解碼器252的結(jié)果(例如有效預(yù)解碼位)加載到預(yù)解碼 修復(fù)高速緩沖存儲器210中。此狀態(tài)被說明為修復(fù)的第二周期,如展示為時間"t+5"427和 修復(fù)級434處的"2"。對指令C的解碼也在此時進(jìn)行。指令(5, D) 416和指令E"6,E) 417 和(7, E)418保留在管線的IC2級431處。
[0051] 在時間"t+6"428處,指令C的解碼結(jié)果由多路復(fù)用器256選擇,可進(jìn)一步在解碼 器257中解碼,并保存在解碼寄存器258中。指令(5, D) 416以及指令E (6, E) 417和(7, E) 418進(jìn)入IDA級432,例如處理器204的IDA級250。
[0052] 在時間"t+7"429處,指令D和E到達(dá)解碼寄存器258,且繼續(xù)執(zhí)行。由于指令C跨 越兩個高速緩沖存儲器線,所以使用2 1/2個周期的管線泡(pipeline bubble)來修復(fù)用 于指令C的預(yù)解碼位,并將所述預(yù)解碼位存儲在預(yù)解碼修復(fù)高速緩沖存儲器210中。所述 2 1/2個周期中的兩個周期被說明為畫圈部分435,且1/2個周期被展示為畫圈部分436。
[0053] 圖4C是說明用以通過從預(yù)解碼修復(fù)高速緩沖存儲器提取用于跨線指令的有效 預(yù)解碼位來節(jié)省電力的操作的處理器管線級圖450。管線級圖450由時間周期"t"452、 "t+l"453等直到"t+6"458以及管線級組成,所述管線級包含指令高速緩存級1(IC1)460、 指令高速緩存級2 (IC2) 461、指令對準(zhǔn)級(IDA) 462、解碼級(DCD) 463和修復(fù)級464。
[0054] 管線序列在時間"t" 452處以第一 LI I高速緩沖存儲器線402開始(第一 LI I 高速緩沖存儲器線402含有指令A(yù) 411、B 412和413以及指令C 414的前一半),從而進(jìn) 入指令高速緩存級1 (IC1) 460,例如L1指令高速緩沖存儲器206的IC1218。此狀態(tài)在管線 級圖450中在行IC1460中說明為時間"t" 452處的16位字段0-3。
[0055] 在時間"t+1" 453處,第一 LI I高速緩沖存儲器線402進(jìn)入指令高速緩存級 2(扣2)461,例如1^1指令高速緩沖存儲器206的扣2220。此外,在時間"丨+1"453處,含有 指令C,(4, C) 415的第二半;指令D (5, D) 416以及指令E,(6, E) 417和(7, E) 418的第二L1 I高速緩沖存儲器線404進(jìn)入IC1460,例如IC1218。此狀態(tài)在管線級圖450中在IC1460中 說明為時間"t+l"453處的16位字段4-7。還接收到由Mctl信號261指示的預(yù)解碼修復(fù) 高速緩沖存儲器210中的命中,其向指令流邏輯200指示用于跨越高速緩沖存儲器線的指 令C的預(yù)解碼位已被修復(fù)。
[0056] 在時間"t+2" 454處,第一 LI I高速緩沖存儲器線402進(jìn)入指令對準(zhǔn)(IDA)管線 級462,例如處理器204的IDA 250。在這一點處,確定指令C的僅一半存在于高速緩沖存儲 器線中。在此示范性場景中,指令C的第二半在IC2461(例如管線的IC2220級)中。由于 預(yù)解碼修復(fù)高速緩沖存儲器210中存在命中,所以用于指令C的有效預(yù)解碼位是可用的。此 夕卜,來自下一所提取的高速緩沖存儲器線的指令被輸入到指令高速緩存級1 (IC1) 460 (例 如L1指令高速緩沖存儲器206的IC1218)中。接下來的這些指令被說明為指令"8-11",其 中8-11群組的第一指令為指令"F",其可為16位或32位指令。
[0057] 在時間"t+3"455處,指令A(yù)和B具有有效預(yù)解碼位(Pd4)并(例如)通過傳送到 解碼寄存器258而進(jìn)入解碼D⑶管線級463。此狀態(tài)被說明為管線的D⑶463級中的A/B。 指令C的第二半是從IC2級461獲得,與指令C的第一半組合,且進(jìn)一步與來自預(yù)解碼修復(fù) 高速緩沖存儲器210的有效預(yù)解碼位組合,以在IDA級462中產(chǎn)生完整的指令C。所述組 合是通過多路復(fù)用器222來控制,多路復(fù)用器222受Mctl信號242和IDA管線級250中的 對準(zhǔn)邏輯控制。舉例來說,從預(yù)解碼修復(fù)高速緩沖存儲器210提取的經(jīng)修復(fù)的預(yù)解碼信息 可具有第一部分(例如第一組經(jīng)修復(fù)的預(yù)解碼位)和第二部分(例如第二組經(jīng)修復(fù)的預(yù)解 碼位)。多路復(fù)用器222可選擇經(jīng)修復(fù)的預(yù)解碼位的第一部分和第二部分以及來自指令C 的指令位,以進(jìn)入指令對準(zhǔn)(IDA)管線級250。IDA管線級250使選定位對準(zhǔn),且用有效的 經(jīng)對準(zhǔn)預(yù)解碼信息來產(chǎn)生重新匯編的指令。來自第二LI I高速緩沖存儲器線404的指令 D(5,D)416和指令E(6,E)417和(7,E)418保留在管線的IC2級461中。指令8-11保留在 IC1 級 460 中。
[0058] 在時間"t+4" 456處,由(3, 0414和(4, 0415組成的指令C/-進(jìn)入解碼DCD管 線級463,從而(例如)傳送到解碼寄存器258。指令(5, D) 416、(6, E) 417和(7, E) 418進(jìn) 入IDA管線級462。接下來的指令"8-11"進(jìn)入IC2級461。
[0059] 在時間"t+5" 457處,指令D,(5, D) 416和由(6, E) 417和(7, E) 418組成的指令E 進(jìn)入解碼D⑶管線級463。從時間"t+6"458開始并持續(xù),處理對來自下一指令群組"8-11" 的其余指令繼續(xù)。
[0060] 如圖4C的處理器管線級圖450中所說明,畫圈部分435 (其表示在圖4B的處理器 管線級圖420中發(fā)生的管線泡)的2個周期被取消,從而節(jié)省了電力并改進(jìn)了性能。
[0061] 圖5是在LI I高速緩沖存儲器中的未中時遵循的且用于準(zhǔn)備到預(yù)解碼修復(fù)高速 緩沖存儲器的條目的操作步驟的過程500。在框502處,向LI I高速緩沖存儲器的提取導(dǎo) 致未中。在框504處,處理器從L2高速緩沖存儲器或系統(tǒng)存儲器提取指令,其中指令具有 兩種類型。第一類型指令以第一長度(例如16位)格式化,且第二類型指令以第二長度格 式化。第二長度(例如32位)比第一長度長。在框506處,將指令串布置到一個或一個以 上LI I高速緩沖存儲器線中。舉例來說,可提取單個高速緩沖存儲器線且將其布置在高速 緩沖存儲器線(例如圖3B的第一 LI I高速緩沖存儲器線320)中。在框508處,預(yù)解碼指 令串,從而產(chǎn)生用于經(jīng)部分解碼的指令的預(yù)解碼信息。
[0062] 在決策框510處,確定是否找到作為跨越兩個層1指令高速緩沖存儲器線之間的 跨線指令且具有位于第一線上的第一部分的第二類型指令。如果未找到跨線指令,那么過 程500前進(jìn)到?jīng)Q策框512。在決策框512處,確定有效的預(yù)解碼信息是否可供管線化指令 使用。如果有效的預(yù)解碼信息可供管線化指令使用,那么過程500前進(jìn)到框514。在框514 處,(例如)通過選擇IDA總線264從而繞過在圖2的處理器預(yù)解碼器252中遇到的多個 周期來繞過處理器預(yù)解碼器級。在框515處,對指令進(jìn)行解碼,其可包含在可實施的解碼器 266和解碼器257中的解碼。在框516處,指令流邏輯200繼續(xù)指令執(zhí)行。
[0063] 返回到?jīng)Q策框512。如果確定有效的預(yù)解碼信息不可供管線化指令使用,那么過程 500前進(jìn)到框518。可(例如)通過檢查從自LI I高速緩沖存儲器206中提取的指令獲得 的Pd4位來確定有效的預(yù)解碼信息。Pd4位可指示(例如)指令的前16位是跨線指令的 一部分,且有效的預(yù)解碼信息不可供跨線指令使用。在框518處,管線化指令進(jìn)入處理器預(yù) 解碼器級,例如圖2的處理器預(yù)解碼器252,其產(chǎn)生經(jīng)修復(fù)的預(yù)解碼信息,例如新的預(yù)解碼 位。在決策框520處,確定是否存在跨線指令。如果不存在跨線指令,那么過程500前進(jìn)到 框522。在框522處,管線化指令進(jìn)入解碼器級,例如圖2的解碼器254。在解碼器級之后, 過程500前進(jìn)到框516以繼續(xù)指令執(zhí)行。
[0064] 返回決策框520,在此處確定存在跨線指令。過程500前進(jìn)到框524。在框524處, 將與跨線指令相關(guān)聯(lián)的新的預(yù)解碼位寫入到預(yù)解碼修復(fù)高速緩沖存儲器,例如圖2的預(yù)解 碼修復(fù)高速緩沖存儲器210。隨后過程500前進(jìn)到框522,以提供對管線化指令的解碼。過 程500隨后前進(jìn)到框516以繼續(xù)指令執(zhí)行。
[0065] 返回決策框510,在此處確定存在跨線指令。在決策框524處,確定跨線指令的第 二部分是否可用。如果跨線指令的第二部分可用,那么過程500前進(jìn)到?jīng)Q策框512,并按上 文所指繼續(xù)。如果在決策框524處確定跨線指令的第二部分不可用,那么過程500前進(jìn)到 框526。在框526處,提取指令串以獲得跨線指令的第二部分。舉例來說,此指令串可從填 充緩沖器216或LI I高速緩沖存儲器206提取。過程500隨后前進(jìn)到?jīng)Q策框512,并按上 文所指繼續(xù)。
[0066] 圖6是當(dāng)從LI I高速緩沖存儲器提取跨線指令時所遵循的操作步驟的流程圖 600。在框602處,提取指令。在決策框604處,確定跨線指令的第一部分是否在LI I高速 緩沖存儲器(例如圖2的LI I高速緩沖存儲器206)中。如果跨線指令的第一部分不在L1 I高速緩沖存儲器中,那么記錄未中,且過程600前進(jìn)到圖5的過程500的框502。如果跨線 指令的第一部分在LI I高速緩沖存儲器中,那么記錄命中,且過程600前進(jìn)到?jīng)Q策框606。
[0067] 在決策框606處,確定跨線指令的第二部分是否在LI I高速緩沖存儲器中。如果 跨線指令的第二部分不在LI I高速緩沖存儲器中,那么記錄未中,且過程600前進(jìn)到圖5 的過程500的框526。如果跨線指令的第二部分在LI I高速緩沖存儲器中,那么記錄命中, 且過程600前進(jìn)到?jīng)Q策框608。
[0068] 在決策框608處,確定指令提取地址是否在預(yù)解碼修復(fù)高速緩沖存儲器(例如圖2 的預(yù)解碼修復(fù)高速緩沖存儲器210)中命中。如果指令提取地址未在預(yù)解碼修復(fù)高速緩沖 存儲器中命中,那么記錄未中,且過程600前進(jìn)到圖5的過程500的框518。如果指令提取 地址確實在預(yù)解碼修復(fù)高速緩沖存儲器中命中,那么記錄命中,且過程600前進(jìn)到框610。 在框610處,將來自LI I高速緩沖存儲器的跨線指令的第一部分和第二部分與從預(yù)解碼修 復(fù)高速緩沖存儲器提取的預(yù)解碼修復(fù)位組合。組合器可由多路復(fù)用器(例如多路復(fù)用器 222)和對準(zhǔn)邏輯(例如可在IDA管線級250中找到)組成。過程600隨后前進(jìn)到圖5的過 程500的框514。
[0069] 為了維持正確的操作,與處理器204相關(guān)聯(lián)的指令流邏輯200或代碼的一部分跟 蹤LI I高速緩沖存儲器的操作。舉例來說,每當(dāng)LI I高速緩沖存儲器被沖洗時,預(yù)解碼修 復(fù)高速緩沖存儲器也被沖洗。此外,每當(dāng)LI I高速緩沖存儲器被寫入時,預(yù)解碼修復(fù)高速 緩沖存儲器中的現(xiàn)有條目失效。
[0070] 也應(yīng)注意,隨著在特定實施方案中LI I高速緩沖存儲器線的寬度減小,預(yù)解碼修 復(fù)高速緩沖存儲器的大小將趨向于增加,因為跨線指令的百分比將趨向于增加。舉例來說, 對于160個位的LI I高速緩沖存儲器線,兩個預(yù)解碼修復(fù)高速緩沖存儲器線對于許多應(yīng)用 來說可能是足夠的。
[0071] 本發(fā)明不限于所說明的指令流邏輯200,且進(jìn)一步適用于具有可變長度指令的在 指令高速緩沖存儲器中存儲預(yù)解碼信息的任何管線處理器。本發(fā)明可容納可變長度處理器 指令的擴展部分,前提是所述擴展部分支持指令組使用的唯一模式,使得可選擇性地控制 預(yù)解碼信息,從而節(jié)省寫入和讀取電力。舉例來說,可指定操作模式,其中16位、32位和64 位指令可操作,使得32位和64位指令可跨越兩個LI I高速緩沖存儲器線。使用64位指 令類型的處理器可為上文所述的示范性處理器204的擴展部分。擴展的處理器可具有(例 如)針對以下狀態(tài)而編碼的操作模式狀態(tài):僅限于32位指令的第一狀態(tài);用于16位和32 位兩種指令的第二狀態(tài);用于16位、32位和64位指令的第三狀態(tài)以及僅限于64位指令的 第四狀態(tài)。I高速緩沖存儲器線中的64位指令可被劃分成四個20位字段,其中每一 20位 字段具有64位指令的區(qū)段以及相關(guān)聯(lián)的Pd4字段。對于LI I高速緩沖存儲器線中的64位 指令,將針對整個64位指令使用與64位指令的16位字段中的每一者相關(guān)聯(lián)的Pd4字段。
[0072] 本發(fā)明也不限于為二的冪的指令長度。舉例來說,考慮具有16位和24位指令的 替代架構(gòu)。在此實例中,可將指令高速緩沖存儲器線劃分成8位指令區(qū)段和2位預(yù)解碼區(qū) 段。16位指令可由20個位組成,所述20個位(例如)組織成{8個位,2個位的Pd2,8個 位,2個位的Pd2}。24位指令可由30個位組成,所述30個位(例如)組織成{8個位,2個 位的Pd2,8個位,2個位的Pd2,8個位,2個位的Pd2}。存儲16位指令的160位高速緩沖存 儲器線將能夠保持八個16位指令,其針對總共160個位組織成八個20位區(qū)段,其中所有位 均完全被利用。存儲24位指令的160位高速緩沖存儲器線將能夠保持五個24位指令,其 針對總共150個位組織成五個30位區(qū)段,其中線中的其余10位未被利用。
[0073] 雖然已在目前優(yōu)選的場境中揭示了本發(fā)明,但將認(rèn)識到,本教示可適合于與本發(fā) 明和所附權(quán)利要求書一致的多種場境。
【權(quán)利要求】
1. 一種用于執(zhí)行跨越兩個高速緩沖存儲器線的指令的方法,所述方法包括: 提取跨越兩個高速緩沖存儲器線的指令的第一部分,所述指令的所述第一部分存儲在 指令高速緩沖存儲器中的第一高速緩沖存儲器線中; 從與所述指令高速緩沖存儲器分離的預(yù)解碼修復(fù)高速緩沖存儲器中提取與所述指令 相關(guān)聯(lián)的預(yù)解碼信息; 提取存儲在處在所述第一高速緩沖存儲器線之后的下一高速緩沖存儲器線中的所述 指令的第二部分;以及 響應(yīng)于所述預(yù)解碼信息來執(zhí)行所述指令。
2. 根據(jù)權(quán)利要求1所述的方法,其進(jìn)一步包括: 組合所述預(yù)解碼信息與所述指令的所述第一部分和所述第二部分,以創(chuàng)建具有有效的 經(jīng)對準(zhǔn)預(yù)解碼信息的經(jīng)重新匯編的指令。
3. 根據(jù)權(quán)利要求2所述的方法,其中,所述組合所述預(yù)解碼信息與所述指令的所述第 一部分和所述第二部分進(jìn)一步包括: 選擇所述預(yù)解碼信息的第一部分和第二部分; 從所述指令高速緩沖存儲器選擇所述指令的所述第一部分和所述第二部分;以及 對準(zhǔn)所述預(yù)解碼信息的所述第一部分和所述第二部分與所述指令的所述第一部分和 所述第二部分,以產(chǎn)生具有有效的經(jīng)對準(zhǔn)預(yù)解碼信息的所述經(jīng)重新匯編的指令。
4. 根據(jù)權(quán)利要求1所述的方法,其中所述指令的所述第一部分包括第一組指令位和相 關(guān)聯(lián)的第一組預(yù)解碼位,且所述指令的所述第二部分包括第二組指令位和相關(guān)聯(lián)的第二組 預(yù)解碼位。
5. 根據(jù)權(quán)利要求4所述的方法,其進(jìn)一步包括: 預(yù)解碼所述第一組指令位以形成第一組經(jīng)修復(fù)的預(yù)解碼位;以及 預(yù)解碼所述第二組指令位以形成第二組經(jīng)修復(fù)的預(yù)解碼位。
6. 根據(jù)權(quán)利要求5所述的方法,其進(jìn)一步包括: 選擇所述第一組經(jīng)修復(fù)的預(yù)解碼位以代替所述第一組預(yù)解碼位; 選擇所述第二組經(jīng)修復(fù)的預(yù)解碼位以代替所述第二組預(yù)解碼位;以及 響應(yīng)于已修復(fù)所述預(yù)解碼信息而繞過處理器預(yù)解碼器級。
7. 根據(jù)權(quán)利要求1所述的方法,其中,所述指令具有對應(yīng)的預(yù)解碼器位,以及,其中, 提取所述指令的所述第二部分包括:在存儲在所述預(yù)解碼修復(fù)高速緩沖存儲器處的所 述已修復(fù)預(yù)解碼信息與所述預(yù)解碼位之間進(jìn)行選擇。
8. 根據(jù)權(quán)利要求1所述的方法,其進(jìn)一步包括:確定所述預(yù)解碼修復(fù)高速緩沖存儲器 是否包含與所述指令相關(guān)聯(lián)的預(yù)解碼信息。
9. 根據(jù)權(quán)利要求8所述的方法,其中,確定所述預(yù)解碼修復(fù)高速緩沖存儲器是否包含 與所述指令相關(guān)聯(lián)的預(yù)解碼信息使用命中或未中信號。
10. -種用于使用預(yù)解碼修復(fù)高速緩沖存儲器的設(shè)備,所述設(shè)備包括: 指令高速緩沖存儲器,其可操作以在指令高速緩沖存儲器線中存儲具有至少第一長度 和第二長度的指令,所述第二長度比所述第一長度長; 預(yù)解碼器,其可操作以預(yù)解碼從所述指令高速緩沖存儲器中提取的具有無效預(yù)解碼信 息的指令,以形成經(jīng)修復(fù)的預(yù)解碼信息; 預(yù)解碼修復(fù)高速緩沖存儲器,其可操作以存儲與跨越所述指令高速緩沖存儲器中兩個 高速緩沖存儲器線的具有所述第二長度的指令相關(guān)聯(lián)的所述經(jīng)修復(fù)的預(yù)解碼信息;以及 處理器,其用于響應(yīng)于所述經(jīng)修復(fù)的預(yù)解碼信息而執(zhí)行所述指令。
11. 根據(jù)權(quán)利要求10所述的設(shè)備,其進(jìn)一步包括: 組合器,其可操作以將從所述預(yù)解碼修復(fù)高速緩沖存儲器中提取的經(jīng)修復(fù)的預(yù)解碼信 息與具有所述第二長度的指令的第一部分和第二部分組合,以產(chǎn)生具有有效的經(jīng)對準(zhǔn)預(yù)解 碼信息的經(jīng)重新匯編的指令。
12. 根據(jù)權(quán)利要求10所述的設(shè)備,其進(jìn)一步包括: 圍繞所述預(yù)解碼器的旁路路徑,其可操作以針對從所述指令高速緩沖存儲器中提取的 具有有效預(yù)解碼信息的指令繞過所述預(yù)解碼器。
13. 根據(jù)權(quán)利要求11所述的設(shè)備,其進(jìn)一步包括: 圍繞所述預(yù)解碼器的旁路路徑,其可操作以針對所述具有有效的經(jīng)對準(zhǔn)預(yù)解碼信息的 經(jīng)重新匯編的指令繞過所述預(yù)解碼器。
14. 根據(jù)權(quán)利要求11所述的設(shè)備,其中所述組合器包括: 多路復(fù)用器,其可操作以利用與具有所述第二長度的指令相關(guān)聯(lián)的地址來選擇從所述 預(yù)解碼修復(fù)高速緩沖存儲器中提取的經(jīng)修復(fù)的預(yù)解碼信息的第一部分和第二部分,且選擇 從所述指令高速緩沖存儲器中提取的具有所述第二長度的所述指令的第一部分和第二部 分;以及 對準(zhǔn)邏輯,其可操作以將所述經(jīng)修復(fù)的預(yù)解碼信息的所述第一部分與具有所述第二長 度的所述指令的所述第一部分組合,且將所述經(jīng)修復(fù)的預(yù)解碼信息的所述第二部分與具有 所述第二長度的所述指令的所述第二部分組合。
15. 根據(jù)權(quán)利要求13所述的設(shè)備,其中當(dāng)所述預(yù)解碼器被繞過時,所述預(yù)解碼器被選 通關(guān)斷。
【文檔編號】G06F9/30GK104267927SQ201410446244
【公開日】2015年1月7日 申請日期:2008年10月31日 優(yōu)先權(quán)日:2007年11月2日
【發(fā)明者】羅德尼·韋恩·史密斯, 布萊恩·邁克爾·斯坦普爾, 戴維·約翰·曼德扎克, 詹姆斯·諾里斯·迪芬德爾費爾 申請人:高通股份有限公司