專利名稱:用以預(yù)加載來自除當(dāng)前執(zhí)行的指令集之外的指令集的指令的系統(tǒng)、方法及軟件的制作方法
技術(shù)領(lǐng)域:
本發(fā)明大體上涉及處理器領(lǐng)域,且具體來說,涉及一種用于根據(jù)除當(dāng)前執(zhí)行的指令 集之外的指令集來預(yù)加載指令和對(duì)所述預(yù)加載的指令進(jìn)行預(yù)解碼的系統(tǒng)及方法。
背景技術(shù):
微處理器在各種各樣的應(yīng)用中執(zhí)行計(jì)算任務(wù)。幾乎始終需要改進(jìn)的處理器性能以通 過軟件增強(qiáng)而允許較快的操作和/或增加的功能性。通過利用架構(gòu)上的進(jìn)步(例如RISC 架構(gòu))和半導(dǎo)體技術(shù)上的進(jìn)步兩者,許多現(xiàn)代處理器以遠(yuǎn)高于存儲(chǔ)器芯片(例如DRAM 和SDRAM)的時(shí)鐘速度執(zhí)行。為了使相對(duì)緩慢的存儲(chǔ)器存取的代價(jià)最小化,這些處理 器利用層級(jí)式存儲(chǔ)器結(jié)構(gòu),其中快速的芯片上高速緩沖存儲(chǔ)器存儲(chǔ)新近存取的數(shù)據(jù)和指 令的本地拷貝,且/或所述處理器(經(jīng)由軟件)預(yù)期不久的存取。
預(yù)期對(duì)指令高速緩沖存儲(chǔ)器的加載的一個(gè)實(shí)例是預(yù)加載指令(例如,ARM指令 PLI)。預(yù)加載指令在指令執(zhí)行之前將所述指令加載到指令高速緩沖存儲(chǔ)器中。編程人員 可稍微在已知或預(yù)期的分支(例如對(duì)目標(biāo)的子例程調(diào)用)前面將預(yù)加載指令插入到碼中。 預(yù)加載指令將目標(biāo)處的指令加載到指令高速緩沖存儲(chǔ)器中,使得當(dāng)所述分支執(zhí)行時(shí),目 標(biāo)處的指令在高速緩沖存儲(chǔ)器中可用于立即執(zhí)行。本文中將待響應(yīng)于預(yù)加載指令而加載 到高速緩沖存儲(chǔ)器中的指令稱為預(yù)加載的指令。
大多現(xiàn)代處理器采用管線式架構(gòu),其中循序的指令在執(zhí)行時(shí)重疊,以便增加總處理 器處理量。維持通過管線順利執(zhí)行對(duì)于實(shí)現(xiàn)高性能至關(guān)重要。此項(xiàng)技術(shù)中已知的一種管 線優(yōu)化技術(shù)是預(yù)解碼指令。在從存儲(chǔ)器讀取指令時(shí)對(duì)所述指令進(jìn)行檢查、對(duì)其進(jìn)行部分 解碼,且將關(guān)于所述指令的一些信息(稱為預(yù)解碼信息)與相關(guān)聯(lián)的指令一起存儲(chǔ)在指 令高速緩沖存儲(chǔ)器中。當(dāng)稍后將指令從高速緩沖存儲(chǔ)器中獲取到管線中時(shí),也獲取預(yù)解 碼信息,且使用預(yù)解碼信息來輔助對(duì)指令進(jìn)行完全解碼。預(yù)解碼信息可例如識(shí)別分支和 浮點(diǎn)指令,識(shí)別可變長度指令集架構(gòu)中的指令的長度,或在管線中執(zhí)行指令時(shí)有用的其它信息。
有些現(xiàn)代處理器能夠根據(jù)兩種或兩種以上指令集編碼來執(zhí)行指令。舉例來說,處理 器可具有32位原始指令集,且另外包含執(zhí)行Java字節(jié)碼的能力。舉另一實(shí)例,ARM處 理器架構(gòu)的若干版本在ARM指令集操作模式下執(zhí)行32位ARM指令編碼,且在Thumb 指令集操作模式下執(zhí)行16位或32位Thumb指令編碼。編程人員在根據(jù)相關(guān)指令集編碼 在執(zhí)行指令之前明確地在軟件中設(shè)置適當(dāng)?shù)闹噶罴僮髂J健?br>
當(dāng)具有預(yù)解碼器的常規(guī)處理器執(zhí)行預(yù)加載指令時(shí),根據(jù)當(dāng)前指令集操作模式對(duì)預(yù)加 載的指令進(jìn)行預(yù)解碼。如果編程人員想要預(yù)加載不同于當(dāng)前處理器指令集操作模式的指 令集中的指令——例如預(yù)期到寫入不同指令集中的碼區(qū)段的分支——?jiǎng)t他必須在執(zhí)行 預(yù)加載指令之前改變指令集模式。
舉例來說,在ARM模式下執(zhí)行ARM指令的程序可改變成Thumb模式并分支到只 執(zhí)行Thumb指令的碼段。為了用正確的預(yù)解碼來預(yù)加載Thumb指令,程序必須將當(dāng)前 處理器指令集操作模式從ARM切換成Thumb,用Thumb碼的目標(biāo)地址來執(zhí)行預(yù)加載指 令,接著切換回ARM模式以執(zhí)行其余ARM指令,隨后才分支到Thumb碼區(qū)段。
未能進(jìn)入Thumb模式以執(zhí)行預(yù)加載指令將致使預(yù)解碼器根據(jù)ARM指令集編碼對(duì)預(yù) 加載的Thumb指令進(jìn)行不正確地預(yù)解碼。如果發(fā)生此情況,則當(dāng)從指令高速緩沖存儲(chǔ)器 中獲取預(yù)解碼信息時(shí),預(yù)解碼信息將是無用的,且必須重新獲取Thumb指令,從而引發(fā) 預(yù)加載原本意圖避免的延遲。此外,在具有ARM/Thumb位作為標(biāo)簽的一部分的指令高 速緩沖存儲(chǔ)器中,將向重新獲取的Thumb指令分配單獨(dú)的高速緩沖存儲(chǔ)器線,且被不正 確地預(yù)解碼成ARM指令的Thumb指令將保留在高速緩沖存儲(chǔ)器中,從而浪費(fèi)高速緩沖 存儲(chǔ)器空間且因此降低高速緩沖存儲(chǔ)器命中率和系統(tǒng)性能。
在許多處理器中,在將當(dāng)前處理器指令集操作模式切換兩次以執(zhí)行單個(gè)預(yù)加載指令 時(shí)涉及的額外開銷可能會(huì)超出預(yù)加載所預(yù)期指令集中的指令的益處。
發(fā)明內(nèi)容
根據(jù)本文中所揭示和主張的一個(gè)或一個(gè)以上實(shí)施例,在第一處理器指令集操作模式 下執(zhí)行的預(yù)加載指令操作以預(yù)加載不同的第二指令集中的指令。響應(yīng)于指令集預(yù)加載指 示符(ISPI)根據(jù)第二指令集編碼對(duì)所述指令進(jìn)行預(yù)解碼。在各個(gè)實(shí)施例中,可在執(zhí)行 預(yù)加載指令之前設(shè)置所述ISPI,或者所述ISPI可包括預(yù)加載指令或預(yù)加載目標(biāo)地址的一部分。一個(gè)實(shí)施例涉及一種預(yù)加載指令的方法。設(shè)置指令集預(yù)加載指示符,其指示多個(gè)指 令集中的一者。執(zhí)行操作以將指令預(yù)加載到指令高速緩沖存儲(chǔ)器中的指令。響應(yīng)于指令 集預(yù)加載指示符根據(jù)除當(dāng)前處理器指令集模式之外的指令集對(duì)所述預(yù)加載的指令進(jìn)行 預(yù)解碼。
另一實(shí)施例涉及一種處理器。所述處理器包含存儲(chǔ)器接口和操作以存儲(chǔ)指令的指令 高速緩沖存儲(chǔ)器。所述處理器還包含指令執(zhí)行單元,其操作以從指令高速緩沖存儲(chǔ)器中 檢索指令和預(yù)解碼信息,且根據(jù)處理器指令集操作模式來執(zhí)行所述指令,且進(jìn)一步操作 以產(chǎn)生指令集預(yù)加載指示符。所述處理器進(jìn)一步包含預(yù)解碼器,其插介于指令高速緩沖 存儲(chǔ)器與存儲(chǔ)器接口之間,且操作以在執(zhí)行操作以將指令預(yù)加載到指令高速緩沖存儲(chǔ)器 中的指令之后,響應(yīng)于指令集預(yù)加載指示符根據(jù)除當(dāng)前處理器指令集操作模式之外的指 令集對(duì)指令進(jìn)行預(yù)解碼。
又一實(shí)施例涉及一種計(jì)算機(jī)可讀媒體,其存儲(chǔ)第一指令集中的至少一預(yù)加載指令, 所述指令操作以致使處理器將指令預(yù)加載到指令高速緩沖存儲(chǔ)器中,其中根據(jù)不同的第 二指令集對(duì)預(yù)加載的指令進(jìn)行預(yù)解碼。
圖1是能夠根據(jù)除當(dāng)前處理器指令集模式之外的指令集對(duì)預(yù)加載的指令進(jìn)行預(yù)解碼 的處理器的功能方框圖。
圖2是預(yù)加載多個(gè)指令集中的一者中的指令的方法的流程圖。
具體實(shí)施例方式
圖1描繪處理器110的功能方框圖,處理器110執(zhí)行根據(jù)多個(gè)不同指令集編碼而編 碼的指令。處理器110能夠根據(jù)除當(dāng)前處理器指令集模式之外的指令集對(duì)預(yù)加載的指令
進(jìn)行預(yù)解碼。
處理器110在指令執(zhí)行單元112中執(zhí)行指令,指令執(zhí)行單元112包含管線U4, 其包括組織成管級(jí)的多個(gè)寄存器或鎖存器116:以及邏輯和計(jì)算電路,例如算術(shù)邏輯單 元(ALU)(未圖示)。管線根據(jù)控制邏輯118來執(zhí)行指令。如圖所示,管線114可為超 標(biāo)量設(shè)計(jì)。通用寄存器(GPR)堆120提供包括存儲(chǔ)器層級(jí)的頂部的寄存器。所述指令 執(zhí)行單元還包含狀態(tài)寄存器122,其指示例如當(dāng)前處理器指令集操作模式,所述模式界 定多個(gè)指令集編碼,在所述多個(gè)指令集編碼下解碼和執(zhí)行指令。指令執(zhí)行單元112還包含L2處理邏輯124, L2處理邏輯124跟蹤從L2高速緩沖存儲(chǔ)器136或主存儲(chǔ)器138 中獲取的指令和數(shù)據(jù)的特性。
管線114從指令高速緩沖存儲(chǔ)器126中獲取指令,其中由指令側(cè)翻譯旁視緩沖器 (ITLB) 128來管理存儲(chǔ)器尋址和準(zhǔn)許。預(yù)解碼器130對(duì)從L2高速緩沖存儲(chǔ)器136 (或 主存儲(chǔ)器138)中獲取的指令進(jìn)行預(yù)解碼,且將指令和預(yù)解碼信息放置到指令高速緩沖 存儲(chǔ)器126中。如本文中更詳細(xì)地論述,預(yù)解碼器130響應(yīng)于來自指令執(zhí)行單元112的 指令集預(yù)加載指示符(ISPI)根據(jù)不同于當(dāng)前處理器指令集操作模式的指令集對(duì)預(yù)加載 的指令進(jìn)行預(yù)解碼。
從數(shù)據(jù)高速緩沖存儲(chǔ)器132中存取數(shù)據(jù),其中由主翻譯旁視緩沖器(TLB) 134來 管理存儲(chǔ)器尋址和準(zhǔn)許。在各個(gè)實(shí)施例中,ITLB128可包括TLB134的一部分的拷貝。 或者,ITLB 128和TLB 134可被整合。類似地,在處理器110的各個(gè)實(shí)施例中,指令高 速緩沖存儲(chǔ)器126和數(shù)據(jù)高速緩沖存儲(chǔ)器132可成一體。
指令高速緩沖存儲(chǔ)器126和數(shù)據(jù)高速緩沖存儲(chǔ)器132中的未命中導(dǎo)致對(duì)2級(jí)(L2) 高速緩沖存儲(chǔ)器136的存取,在圖1中所描繪的實(shí)施例中,L2高速緩沖存儲(chǔ)器136被整 合。L2高速緩沖存儲(chǔ)器136中的未命中導(dǎo)致在存儲(chǔ)器接口 142的控制下經(jīng)由系統(tǒng)總線 140對(duì)主(芯片外)存儲(chǔ)器138的存取。處理器110可包含輸入/輸出(I/O)接口 144, 其控制經(jīng)由外圍總線150對(duì)各個(gè)外圍裝置146、 148的存取。此項(xiàng)技術(shù)中眾所周知,處 理器110執(zhí)行從計(jì)算機(jī)可讀媒體(例如存儲(chǔ)器136或由外圍裝置146、 148讀取的磁性 或光學(xué)媒體)中檢索的指令。
所屬領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到,處理器110的許多變化是可能的。舉例來說,處理 器110可包含3級(jí)(L3)或額外高速緩沖存儲(chǔ)器,且/或單獨(dú)的L2高速緩沖存儲(chǔ)器136 可專用于指令和數(shù)據(jù)高速緩沖存儲(chǔ)器126、 132中的每一者。此外,特定實(shí)施例中可省 略處理器110中所描繪的功能塊中的一者或一者以上。
處理器110根據(jù)當(dāng)前處理器指令集模式來執(zhí)行指令,例如在狀態(tài)寄存器122中指示 當(dāng)前處理器指令集模式。為了允許(以正確的預(yù)解碼)預(yù)加載不同指令集中的指令,指 令執(zhí)行單元112產(chǎn)生指令集預(yù)加載指示符(ISPI),并在執(zhí)行了預(yù)加載指令后將ISPI提 供到預(yù)解碼器130。如果處理器110支持兩種指令集編碼(例如,ARM和Thumb),則 ISPI可包括單個(gè)位。此項(xiàng)技術(shù)中眾所周知,如果處理器110支持兩種以上指令集編碼, 則ISPI可包括多位值,且可包括用于每一指令集的單獨(dú)旗標(biāo),或者可以二進(jìn)制值對(duì)指令 集指示進(jìn)行編碼??梢愿鞣N方式產(chǎn)生ISPI。
在一個(gè)實(shí)施例中,將預(yù)加載指令目標(biāo)地址的一個(gè)或一個(gè)以上未使用的地址位編碼成ISPI。預(yù)加載指令(例如,PLI)將目標(biāo)地址視為操作數(shù)。可將指令地址分解成例如標(biāo)簽、 組編號(hào)(set number)及高速緩沖存儲(chǔ)器線偏移量。舉例來說,對(duì)于32位指令虛擬地址 VA[31:0],與指令高速緩沖存儲(chǔ)器126的CAM結(jié)構(gòu)中所存儲(chǔ)的標(biāo)簽對(duì)比的標(biāo)簽可包括 VA[31:11]。在n路組關(guān)聯(lián)高速緩沖存儲(chǔ)器中,如果標(biāo)簽匹配,則從返回的n個(gè)結(jié)果中選 出組編號(hào)。組編號(hào)可包括VA[10:5]。偏移量VA[4:0]對(duì)高速緩沖存儲(chǔ)器線中的個(gè)別指令 進(jìn)行尋址,所述個(gè)別指令(連同預(yù)解碼信息一起)存儲(chǔ)在指令高速緩沖存儲(chǔ)器126的 RAM結(jié)構(gòu)中。
預(yù)加載指令將固定大小的存儲(chǔ)器塊加載到每一高速緩沖存儲(chǔ)器線中。如果所有指令 具有相同的長度,則將固定數(shù)目的指令加載到高速緩沖存儲(chǔ)器線中。在可變長度指令集 中,或如果高速緩沖存儲(chǔ)器線包含根據(jù)具有不同長度的指令的不同指令集而編碼的指 令,則在將指令加載到指令高速緩沖存儲(chǔ)器中后高速緩沖存儲(chǔ)器線中的指令數(shù)目未知。 然而,在任一情況下,待加載到指令高速緩沖存儲(chǔ)器線中的數(shù)據(jù)的量是已知的,且相應(yīng) 地,預(yù)加載指令不利用地址的高速緩沖存儲(chǔ)器線偏移量部分。
根據(jù)一個(gè)實(shí)施例,高速緩沖存儲(chǔ)器線偏移量(例如,VA[4:0])用于對(duì)指令集預(yù)加載 指示符(ISPI)進(jìn)行編碼。具體來說,在處理器110執(zhí)行來自兩個(gè)指令集的指令的實(shí)施 例中,ISPI是最低有效位VA[O]。作為一非限制性實(shí)例,VA
-0可指示ARM指令,且 VA
-1可指示Thumb指令。當(dāng)然,其它ISPI編碼是可能的,且其取決于處理器110 支持的指令集的數(shù)目和類型。
當(dāng)確定地址并將其寫入到編譯器指定的GPR以準(zhǔn)備執(zhí)行相關(guān)聯(lián)的預(yù)加載指令時(shí), 將ISPI編碼到預(yù)加載目標(biāo)地址的高速緩沖存儲(chǔ)器線偏移量部分中。當(dāng)預(yù)加載指令執(zhí)行 時(shí),其從指定的GPR寄存器中讀取目標(biāo)地址,且將目標(biāo)地址處的數(shù)據(jù)塊預(yù)加載到由地 址的標(biāo)簽和組編號(hào)部分確定的高速緩沖存儲(chǔ)器線中。如果地址在指令高速緩沖存儲(chǔ)器中 命中,則預(yù)加載指令的執(zhí)行完成。如果地址在指令高速緩沖存儲(chǔ)器中未命中,則指令執(zhí) 行單元112內(nèi)的邏輯(例如L2處理邏輯124)執(zhí)行未命中處理,其存取L2高速緩沖存 儲(chǔ)器136,且必要時(shí)存取主存儲(chǔ)器138以檢索指令。
當(dāng)將含有指令的數(shù)據(jù)塊加載到預(yù)解碼器30中時(shí),L2處理邏輯124將ISPI呈現(xiàn)給 預(yù)解碼器130。響應(yīng)于ISPI,無論處理器110的當(dāng)前指令集操作模式如何,預(yù)解碼器130 均根據(jù)所指示的指令集對(duì)指令進(jìn)行預(yù)解碼。預(yù)解碼器130隨后將指令連同正確的預(yù)解碼 信息一起寫入到指令高速緩沖存儲(chǔ)器126。在一個(gè)實(shí)施例中,預(yù)解碼器130接收對(duì)預(yù)加 載指令執(zhí)行的指示,并響應(yīng)于此指示而檢查ISPI(對(duì)于正常指令高速緩沖存儲(chǔ)器線獲取, 忽略所述ISPI)。在另一實(shí)施例中,指令執(zhí)行單元112中的邏輯(如L2處理邏輯24)可使ISPI與對(duì)預(yù)加載指令執(zhí)行的知識(shí)組合,且向預(yù)解碼器130呈現(xiàn)借以對(duì)當(dāng)前獲取的指令 進(jìn)行預(yù)解碼的指令集的指示。在任一情況下,預(yù)解碼器130均響應(yīng)于ISPI根據(jù)特定指令 集對(duì)預(yù)加載的指令進(jìn)行預(yù)解碼。
在一個(gè)實(shí)施例中,選擇性地啟用上述根據(jù)ISPI對(duì)預(yù)加載的指令的預(yù)解碼,以提供向 后兼容性。具體來說,界定交互工作模式。交互工作模式可由狀態(tài)寄存器122中的位來 指示。如上所述,當(dāng)啟用交互工作模式時(shí),對(duì)預(yù)加載的指令的預(yù)解碼取決于ISPI。當(dāng)停 用交互工作模式時(shí),根據(jù)當(dāng)執(zhí)行預(yù)加載指令時(shí)有效的處理器指令集模式對(duì)指令進(jìn)行預(yù)解 碼。
在一個(gè)實(shí)施例中,指令集預(yù)加載指示符(ISPI)包括寄存器(如狀態(tài)寄存器122) 中的一個(gè)或一個(gè)以上位。在此實(shí)施例中,在執(zhí)行預(yù)加載指令之前明確地設(shè)置ISPI位。在 執(zhí)行預(yù)加載指令后,預(yù)解碼器130檢査狀態(tài)寄存器122或其它寄存器中的ISPI位,且根 據(jù)由ISPI位指示的指令集編碼對(duì)預(yù)加載的指令進(jìn)行預(yù)解碼(無論此時(shí)有效的處理器指令 集模式如何)。隨后將指令和預(yù)解碼信息寫入到指令高速緩沖存儲(chǔ)器126。在一個(gè)實(shí)施例 中,如上所述,由交互工作模式選擇性地啟用根據(jù)ISPI對(duì)預(yù)加載的指令的預(yù)解碼。在一 個(gè)實(shí)施例中,可由交互工作模式指示符位來選通ISPI位。
在一個(gè)實(shí)施例中,指令集預(yù)加載指示符(ISPI)包括預(yù)加載指令的操作碼中的一個(gè) 或一個(gè)以上位??舍槍?duì)ISPI界定預(yù)加載指令操作碼的位字段,且編譯器可根據(jù)編程人員 在碼中的指令或命令來設(shè)置ISPI位字段。在執(zhí)行了預(yù)加載指令后,例如由L2處理邏輯 124將ISPI位字段呈現(xiàn)給預(yù)解碼器130,且預(yù)解碼器130根據(jù)所指示的指令集編碼對(duì)預(yù) 加載的指令進(jìn)行預(yù)解碼。隨后將指令和預(yù)解碼信息寫入到指令高速緩沖存儲(chǔ)器126。
在一個(gè)實(shí)施例中,界定兩個(gè)或兩個(gè)以上單獨(dú)的預(yù)加載指令以用于預(yù)加載不同指令集 中的指令。舉一非限制性實(shí)例,ARM指令集可包含常規(guī)預(yù)加載指令,所述常規(guī)預(yù)加載 指令將數(shù)據(jù)預(yù)加載到指令高速緩沖存儲(chǔ)器126中,其中預(yù)解碼器130將預(yù)加載的指令預(yù) 解碼成ARM指令。此外,ARM指令集還可包含單獨(dú)的替代的指令集預(yù)加載指令(例如, PLI2),其將數(shù)據(jù)預(yù)加載到指令高速緩沖存儲(chǔ)器126中,其中預(yù)解碼器130將預(yù)加載的 指令預(yù)解碼成Thumb指令。類似地,Thumb指令集可包含單獨(dú)的預(yù)加載指令,以用于 預(yù)加載根據(jù)Thumb或ARM指令集編碼而預(yù)解碼的數(shù)據(jù)。這允許編程人員通過利用碼中 的適當(dāng)?shù)念A(yù)加載指令來明確地預(yù)加載來自所要的指令集的指令。
所屬領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到,上述實(shí)施例并不相互排斥。舉例來說,在特定實(shí)施 方案中,在操作碼中具有ISPI位字段的預(yù)加載指令或唯一的預(yù)加載指令可通過將ISPI 鎖存到例如狀態(tài)寄存器122等寄存器中、或通過將ISPI替換成預(yù)加載目標(biāo)地址中的一個(gè)或一個(gè)以上未用的地址位而將ispi呈現(xiàn)給預(yù)解碼器130。 一般來說,在已知本發(fā)明的教 示的情況下,所屬領(lǐng)域的技術(shù)人員可針對(duì)給定應(yīng)用而確認(rèn)用于預(yù)加載不同指令集中的指 令的最佳解決方案。
圖2描繪預(yù)加載指令的方法200。所述方法通過設(shè)置指令集預(yù)加載指示符(ispi) 而開始(方框202)。 ispi唯一地識(shí)別由處理器110支持的多個(gè)指令集中的一者。在各個(gè) 實(shí)施例中,可通過以下方式來設(shè)置ispi:更改預(yù)加載指令目標(biāo)地址、在例如狀態(tài)寄存器 122等寄存器中設(shè)置ispi位、在預(yù)加載指令操作碼中設(shè)置ispi位字段或選擇唯一的預(yù)加 載指令。
在當(dāng)前處理器指令集模式下執(zhí)行預(yù)加載指令(方框204)。預(yù)加載指令操作以在預(yù)加 載的指令執(zhí)行之前將指令加載到指令高速緩沖存儲(chǔ)器126中。在一個(gè)實(shí)施例中,對(duì)預(yù)加 載的指令的預(yù)解碼取決于交互工作模式。如果未啟用交互工作模式(方框206),則預(yù)解 碼器130根據(jù)當(dāng)前指令集模式對(duì)預(yù)加載的指令進(jìn)行預(yù)解碼(方框208)。如果啟用了交互 工作模式(方框206),且ispi指示或識(shí)別除當(dāng)前指令集模式之外的指令集(方框210), 則預(yù)解碼器130根據(jù)由ispi指示的指令集對(duì)預(yù)加載的指令進(jìn)行預(yù)解碼(方框212)。
根據(jù)本文中所描述和主張的一個(gè)或一個(gè)以上實(shí)施例,編程人員可在執(zhí)行來自第一指 令集的指令的同時(shí)將指令預(yù)加載到指令高速緩沖存儲(chǔ)器126中,其中根據(jù)第二不同的指 令集對(duì)所述預(yù)加載的指令進(jìn)行預(yù)解碼。以此方式,可通過在分支到寫入給定指令集中的 碼之前確保所述指令集中的指令在指令高速緩沖存儲(chǔ)器126中可用而優(yōu)化在指令集之間 切換的碼的執(zhí)行??捎酶鞣N方式來實(shí)施將指令集預(yù)加載指示符(ispi)傳送到預(yù)解碼器 130。
雖然本文中已相對(duì)于本發(fā)明的特定特征、方面和實(shí)施例描述了本發(fā)明,但將明白, 在本發(fā)明的廣泛范圍內(nèi),許多變化、修改和其它實(shí)施例都是可能的,且相應(yīng)地,所有變 化、修改和實(shí)施例將被視為處于本發(fā)明的范圍內(nèi)。因此,本發(fā)明的實(shí)施例在所有方面將 被解釋為說明性而非限制性的,且希望處于所附權(quán)利要求書的意義和等效范圍內(nèi)的所有 改變均包含在其中。
權(quán)利要求
1.一種預(yù)加載指令的方法,其包括設(shè)置識(shí)別多個(gè)指令集中的一者的指令集預(yù)加載指示符;根據(jù)當(dāng)前處理器指令集模式來執(zhí)行指令,所述指令操作以將指令預(yù)加載到指令高速緩沖存儲(chǔ)器中;以及響應(yīng)于所述指令集預(yù)加載指示符,根據(jù)除所述當(dāng)前指令集模式之外的指令集對(duì)所述預(yù)加載的指令進(jìn)行預(yù)解碼。
2. 根據(jù)權(quán)利要求1所述的方法,其中所述指令集預(yù)加載指示符包括指令被預(yù)加載到其中的高速緩沖存儲(chǔ)器線的地址的一個(gè)或一個(gè)以上位。
3. 根據(jù)權(quán)利要求2所述的方法,其中所述指令集預(yù)加載指示符包括所述指令高速緩沖 存儲(chǔ)器線地址中的最低有效位。
4. 根據(jù)權(quán)利要求1所述的方法,其中所述指令集預(yù)加載指示符包括所述指令的操作碼 中的一個(gè)或一個(gè)以上位,所述指令操作以將指令預(yù)加載到指令高速緩沖存儲(chǔ)器中。
5. 根據(jù)權(quán)利要求1所述的方法,其中所述操作以將指令預(yù)加載到指令高速緩沖存儲(chǔ)器 中的指令是第一指令集中的唯一指令,其致使始終根據(jù)不同于所述第一指令集的第 二指令集對(duì)預(yù)加載的指令進(jìn)行預(yù)解碼,且其中設(shè)置指令集預(yù)加載指示符包括選擇所 述唯一預(yù)加載指令。
6. 根據(jù)權(quán)利要求1所述的方法,其中設(shè)置指令集預(yù)加載指示符包括在執(zhí)行所述操作以 將指令預(yù)加載到指令高速緩沖存儲(chǔ)器中的指令之前設(shè)置寄存器中的一個(gè)或一個(gè)以 上位。
7. 根據(jù)權(quán)利要求1所述的方法,其中在交互工作模式下根據(jù)除所述當(dāng)前指令集模式之 外的指令集對(duì)所述預(yù)加載的指令進(jìn)行預(yù)解碼,且否則根據(jù)所述當(dāng)前指令集模式對(duì)所 述預(yù)加載的指令進(jìn)行預(yù)解碼。
8. —種處理器,其包括-存儲(chǔ)器接口;指令高速緩沖存儲(chǔ)器,其操作以存儲(chǔ)指令和預(yù)解碼信息;指令執(zhí)行單元,其操作以從所述指令高速緩沖存儲(chǔ)器中檢索所述指令和預(yù)解碼信 息并根據(jù)處理器指令集操作模式來執(zhí)行所述指令,且進(jìn)一步操作以產(chǎn)生指令集預(yù)加 載指示符;以及預(yù)解碼器,其介于所述指令高速緩沖存儲(chǔ)器與所述存儲(chǔ)器接口之間,且操作以在 執(zhí)行操作以將指令預(yù)加載到所述指令高速緩沖存儲(chǔ)器中的指令之后,響應(yīng)于所述指 令集預(yù)加載指示符根據(jù)除當(dāng)前處理器指令集操作模式之外的指令集對(duì)指令進(jìn)行預(yù) 解碼。
9. 根據(jù)權(quán)利要求8所述的處理器,其中所述指令執(zhí)行單元通過設(shè)置指令被預(yù)加載到其 中的高速緩沖存儲(chǔ)器線的地址的一個(gè)或一個(gè)以上位而產(chǎn)生所述指令集預(yù)加
10. 根據(jù)權(quán)利要求9所述的處理器,其中所述指令預(yù)加載高速緩沖存儲(chǔ)器線地址是所述 操作以將指令預(yù)加載到所述指令高速緩沖存儲(chǔ)器中的指令的操作數(shù)。
11. 根據(jù)權(quán)利要求10所述的處理器,其中所述指令預(yù)加載高速緩沖存儲(chǔ)器線地址被寫 入到通用寄存器,所述通用寄存器由所述操作以將指令預(yù)加載到所述指令高速緩沖 存儲(chǔ)器中的指令讀取。
12. 根據(jù)權(quán)利要求8所述的處理器,其中所述指令執(zhí)行單元指令響應(yīng)于所述操作以將指 令預(yù)加載到所述指令高速緩沖存儲(chǔ)器中的指令的操作碼中的一個(gè)或一個(gè)以上位而 產(chǎn)生所述指令集預(yù)加載指示符。
13. 根據(jù)權(quán)利要求8所述的處理器,其中所述操作以將指令預(yù)加載到所述指令高速緩沖 存儲(chǔ)器中的指令是唯一指令,其致使預(yù)加載的指令根據(jù)預(yù)定的指令集而被預(yù)解碼, 且其中所述指令執(zhí)行單元指令通過執(zhí)行所述唯一預(yù)加載指令而產(chǎn)生所述指令集預(yù) 加載指示符。
14. 根據(jù)權(quán)利要求8所述的處理器,其進(jìn)一步包括寄存器,且其中所述指令執(zhí)行單元通過設(shè)置所述寄存器中的一個(gè)或一個(gè)以上預(yù)定位而產(chǎn)生所述指令集預(yù)加載指示符。
15. 根據(jù)權(quán)利要求8所述的處理器,其進(jìn)一步包括介于所述指令高速緩沖存儲(chǔ)器與所述 存儲(chǔ)器接口之間的第二高速緩沖存儲(chǔ)器,且其中所述預(yù)解碼器介于所述指令高速緩 沖存儲(chǔ)器與所述第二高速緩沖存儲(chǔ)器之間。
16. 根據(jù)權(quán)利要求8所述的處理器,其中所述預(yù)解碼器操作以在交互工作模式下根據(jù)除 所述當(dāng)前處理器指令集操作模式之外的指令集對(duì)指令進(jìn)行預(yù)解碼,且否則操作以根 據(jù)所述當(dāng)前處理器指令集操作模式對(duì)指令進(jìn)行預(yù)解碼。
17. —種計(jì)算機(jī)可讀媒體,其至少存儲(chǔ)第一指令集中的預(yù)加載指令,所述指令操作以致 使處理器將指令預(yù)加載到指令高速緩沖存儲(chǔ)器中,其中根據(jù)不同的第二指令集對(duì)所 述預(yù)加載的指令進(jìn)行預(yù)解碼。
18. 根據(jù)權(quán)利要求17所述的計(jì)算機(jī)可讀媒體,其中所述第二指令集由指令集預(yù)加載指 示符指定。
19. 根據(jù)權(quán)利要求18所述的計(jì)算機(jī)可讀媒體,其中所述指令集預(yù)加載指示符包括指令 被預(yù)加載到其中的高速緩沖存儲(chǔ)器線的地址的一個(gè)或一個(gè)以上位。
20. 根據(jù)權(quán)利要求17所述的計(jì)算機(jī)可讀媒體,其中指令操作碼包含指令集預(yù)加載指示 符位字段。
21. 根據(jù)權(quán)利要求17所述的計(jì)算機(jī)可讀媒體,其中所述預(yù)加載的指令始終根據(jù)特定第 二指令集而被預(yù)解碼。
22. 根據(jù)權(quán)利要求17所述的計(jì)算機(jī)可讀媒體,其中在執(zhí)行所述指令之前,所述指令集 預(yù)加載指示符是存儲(chǔ)在狀態(tài)寄存器中的。
全文摘要
在第一處理器指令集操作模式下執(zhí)行的指令預(yù)加載指令操作以正確地預(yù)加載不同的第二指令集中的指令。響應(yīng)于指令集預(yù)加載指示符(ISPI)根據(jù)第二指令集編碼對(duì)所述指令進(jìn)行預(yù)解碼。在各個(gè)實(shí)施例中,可在執(zhí)行所述預(yù)加載指令之前設(shè)置所述ISPI,或者所述ISPI可包括所述預(yù)加載指令或預(yù)加載目標(biāo)地址的一部分。
文檔編號(hào)G06F9/318GK101627366SQ200880007619
公開日2010年1月13日 申請日期2008年3月14日 優(yōu)先權(quán)日2007年3月14日
發(fā)明者布萊恩·邁克爾·斯坦普爾, 托馬斯·安德魯·薩托里烏斯, 羅德尼·韋恩·史密斯 申請人:高通股份有限公司