欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

用于跨越指令高速緩沖存儲(chǔ)器線的指令的預(yù)解碼修復(fù)高速緩沖存儲(chǔ)器的制造方法

文檔序號(hào):6625825閱讀:200來源:國(guó)知局
用于跨越指令高速緩沖存儲(chǔ)器線的指令的預(yù)解碼修復(fù)高速緩沖存儲(chǔ)器的制造方法
【專利摘要】本發(fā)明涉及用于跨越指令高速緩沖存儲(chǔ)器線的指令的預(yù)解碼修復(fù)高速緩沖存儲(chǔ)器。具體的,本發(fā)明描述處理器中的一種預(yù)解碼修復(fù)高速緩沖存儲(chǔ)器,其能夠提取和執(zhí)行可變長(zhǎng)度指令,所述可變長(zhǎng)度指令具有可在一程序中混合的具有至少兩個(gè)長(zhǎng)度的指令。本發(fā)明還描述用于填充所述預(yù)解碼修復(fù)高速緩沖存儲(chǔ)器和用于執(zhí)行跨越兩個(gè)高速緩沖存儲(chǔ)器線的指令的方法。
【專利說明】用于跨越指令高速緩沖存儲(chǔ)器線的指令的預(yù)解碼修復(fù)高速 緩沖存儲(chǔ)器
[0001] 分案申請(qǐng)的相關(guān)信息
[0002] 本案是分案申請(qǐng)。該分案的母案是申請(qǐng)日為2008年10月31日、申請(qǐng)?zhí)枮?200880118233. 4、發(fā)明名稱為"用于跨越指令高速緩沖存儲(chǔ)器線的指令的預(yù)解碼修復(fù)高速 緩沖存儲(chǔ)器"的發(fā)明專利申請(qǐng)案。

【技術(shù)領(lǐng)域】
[0003] 本發(fā)明大體上涉及改進(jìn)處理具有多種長(zhǎng)度的指令的處理器中的效率的技術(shù),且更 明確地說,涉及用于在預(yù)解碼修復(fù)高速緩沖存儲(chǔ)器中存儲(chǔ)針對(duì)跨越兩個(gè)或兩個(gè)以上高速緩 沖存儲(chǔ)器線的指令的預(yù)解碼信息的有利技術(shù)。

【背景技術(shù)】
[0004] 許多處理器支持具有可變長(zhǎng)度指令的指令組。舉例來說,處理器的指令組可由32 位指令和16位指令組成。處理器也可具有分級(jí)存儲(chǔ)器配置,所述分級(jí)存儲(chǔ)器配置具有多層 高速緩沖存儲(chǔ)器,包含(例如)指令高速緩沖存儲(chǔ)器、數(shù)據(jù)高速緩沖存儲(chǔ)器和系統(tǒng)存儲(chǔ)器。 如果處理器還具有在高時(shí)鐘速率下以持續(xù)時(shí)間較短的管線級(jí)操作的深執(zhí)行管線,那么也有 可能處理器具有預(yù)解碼級(jí),用以預(yù)處理指令以便使后續(xù)的解碼級(jí)簡(jiǎn)化,且因此使管線成流 線型。所述預(yù)解碼管線級(jí)一般在指令高速緩沖存儲(chǔ)器未中期間操作,以部分地解碼因指令 未中而提取的指令。預(yù)解碼信息連同所提取的指令一起被寫入到指令高速緩沖存儲(chǔ)器中。
[0005] 在可變長(zhǎng)度指令處理器中,因未中而提取的指令可具有不同的長(zhǎng)度,且較長(zhǎng)的指 令可能跨越兩個(gè)高速緩沖存儲(chǔ)器線。對(duì)于跨越兩個(gè)高速緩沖存儲(chǔ)器線的指令,指令的兩個(gè) 部分均必須被提取以便正確地預(yù)解碼所述指令,這增加了預(yù)解碼功能的復(fù)雜性,且可能影 響性能和電力利用率。


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

[0006] 在本發(fā)明的若干方面中,本發(fā)明認(rèn)識(shí)到可通過使用預(yù)解碼修復(fù)高速緩沖存儲(chǔ)器來 改進(jìn)性能和節(jié)省電力。本發(fā)明的第一實(shí)施例認(rèn)識(shí)到需要一種填充預(yù)解碼修復(fù)高速緩沖存儲(chǔ) 器的方法。提取指令的存儲(chǔ)在第一高速緩沖存儲(chǔ)器線中的第一部分。還提取指令的存儲(chǔ)在 下一高速緩沖存儲(chǔ)器線上的第二部分。在處理器管線級(jí)中預(yù)解碼指令的第一部分和第二部 分,以形成經(jīng)修復(fù)的預(yù)解碼信息。利用與所述指令相關(guān)聯(lián)的地址將經(jīng)修復(fù)的預(yù)解碼信息寫 入預(yù)解碼修復(fù)高速緩沖存儲(chǔ)器中。
[0007] 本發(fā)明的另一實(shí)施例提出一種用于執(zhí)行跨越兩個(gè)高速緩沖存儲(chǔ)器線的指令的方 法。提取跨越兩個(gè)高速緩沖存儲(chǔ)器線的指令的第一部分,指令的第一部分存儲(chǔ)在指令高速 緩沖存儲(chǔ)器中的第一高速緩沖存儲(chǔ)器線中。從與指令高速緩沖存儲(chǔ)器分開的預(yù)解碼修復(fù)高 速緩沖存儲(chǔ)器提取與所述指令相關(guān)聯(lián)的預(yù)解碼信息。還提取指令的存儲(chǔ)在第一高速緩沖存 儲(chǔ)器線之后的下一高速緩沖存儲(chǔ)器線中的第二部分。響應(yīng)于預(yù)解碼信息而執(zhí)行所述指令。
[0008] 另一實(shí)施例提出一種用于利用預(yù)解碼修復(fù)高速緩沖存儲(chǔ)器的設(shè)備。指令高速緩沖 存儲(chǔ)器可操作以在指令高速緩沖存儲(chǔ)器線中存儲(chǔ)具有至少第一長(zhǎng)度和第二長(zhǎng)度的指令,第 二長(zhǎng)度比第一長(zhǎng)度長(zhǎng)。預(yù)解碼器可操作以預(yù)解碼從指令高速緩沖存儲(chǔ)器提取的具有無效預(yù) 解碼信息的指令,以形成經(jīng)修復(fù)的預(yù)解碼信息。預(yù)解碼修復(fù)高速緩沖存儲(chǔ)器可操作以存儲(chǔ) 與指令高速緩沖存儲(chǔ)器中跨越兩個(gè)高速緩沖存儲(chǔ)器線的具有第二長(zhǎng)度的指令相關(guān)聯(lián)的經(jīng) 修復(fù)的預(yù)解碼信息。
[0009] 從以下【具體實(shí)施方式】和附圖將明白對(duì)本發(fā)明以及本發(fā)明的其它特征和優(yōu)點(diǎn)的更 完整的理解。

【專利附圖】

【附圖說明】
[0010] 圖1說明其中可有利地使用本發(fā)明的實(shí)施例的示范性無線通信系統(tǒng);
[0011] 圖2說明具有處理器、層1指令高速緩沖存儲(chǔ)器(LI I高速緩沖存儲(chǔ)器)、層2高 速緩沖存儲(chǔ)器(L2高速緩沖存儲(chǔ)器)和預(yù)解碼修復(fù)高速緩沖存儲(chǔ)器的指令流邏輯;
[0012] 圖3A說明含有16位和32位的不同長(zhǎng)度指令的示范性程序段;
[0013] 圖3B說明含有來自圖3A的程序段300的指令的示范性LI I高速緩沖存儲(chǔ)器線;
[0014] 圖4A說明示范性LI I高速緩沖存儲(chǔ)器段;
[0015] 圖4B說明用于準(zhǔn)備預(yù)解碼修復(fù)高速緩沖存儲(chǔ)器條目的管線級(jí)圖;
[0016] 圖4C是說明用以通過從預(yù)解碼修復(fù)高速緩沖存儲(chǔ)器提取用于跨線指令(跨越兩 個(gè)高速緩沖存儲(chǔ)器線的指令)的有效預(yù)解碼位來節(jié)省電力的操作的處理器管線級(jí)圖;
[0017] 圖5是在LI I高速緩沖存儲(chǔ)器中的未中時(shí)遵循的且用于準(zhǔn)備到預(yù)解碼修復(fù)高速 緩沖存儲(chǔ)器的條目的操作步驟的過程;及
[0018] 圖6是當(dāng)從LI I高速緩沖存儲(chǔ)器提取跨線指令時(shí)遵循的操作步驟的流程圖。

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