使用經(jīng)調(diào)用函數(shù)的地址的最低有效位來切換處理器模式的制作方法
【專利摘要】本發(fā)明揭示用于在處理系統(tǒng)中的執(zhí)行模式之間進(jìn)行跟蹤和切換的系統(tǒng)和方法。處理系統(tǒng)經(jīng)配置以在包含選自經(jīng)典/對準(zhǔn)模式和壓縮/未對準(zhǔn)模式的第一和第二執(zhí)行模式的至少兩個指令執(zhí)行模式中執(zhí)行指令。例如調(diào)用和返回等選定指令的目標(biāo)地址在所述壓縮模式中被迫未對準(zhǔn),例如所述壓縮模式中的所述目標(biāo)地址的最低有效位(對準(zhǔn)位)等此一個或一個以上位不同于所述經(jīng)典模式中的對應(yīng)對準(zhǔn)位。當(dāng)在所述第一模式中的執(zhí)行期間遇到所述選定指令時,將操作切換到所述第二模式的決策是基于分析所述選定指令的所述目標(biāo)地址的所述對準(zhǔn)位。
【專利說明】使用經(jīng)調(diào)用函數(shù)的地址的最低有效位來切換處理器模式
[0001] 根據(jù)35U. S. C. § 119豐張優(yōu)先權(quán)
[0002] 本專利申請案主張2012年2月7日申請的標(biāo)題為"使用經(jīng)調(diào)用函數(shù)的地址 的最低有效位來切換處理器模式(USING THE LEAST SIGNIFICANT BITS OF A CALLED FUNCTION' S ADDRESS TO SWITCH PROCESSOR MODES)" 的第 61/595, 773 號臨時申請案的 優(yōu)先權(quán),所述臨時申請案指派給本受讓人且在此以引用的方式明確地并入本文中。
【技術(shù)領(lǐng)域】
[0003] 所揭示的實施例涉及在處理系統(tǒng)中的執(zhí)行模式之間切換。更特定來說,示范性實 施例針對包括至少兩個指令模式的處理系統(tǒng),以及用于使用經(jīng)調(diào)用函數(shù)的一個或一個以上 最低有效位在所述至少兩個指令模式之間切換的技術(shù)。
【背景技術(shù)】
[0004] 處理器通常經(jīng)配置以支持多個執(zhí)行模式。舉例來說,第一執(zhí)行模式可包括固定寬 度的指令,而第二執(zhí)行模式可支持可變寬度指令。共同地址空間可在每一模式中的指令之 間共享,使得相同地址或程序計數(shù)器(PC)值可在處理器處于第一執(zhí)行模式的情況下指向 第一指令,且在處理器處于第二執(zhí)行模式的情況下指向第二指令。因為處理器可能夠在兩 個模式之間切換,所以有必要跟蹤執(zhí)行模式以確認(rèn)兩個指令中的哪一者由當(dāng)前PC值尋址, 且因此確保指令正被正確執(zhí)行。
[0005] 參考已知ARM處理器,ARM模式支持固定寬度(32位)指令,而THUMB模式支持可 變寬度(16位和32位)指令。字節(jié)可尋址存儲器中的共同地址空間可包括ARM和THUMB模 式兩者中的指令。然而,兩個模式中的指令的對準(zhǔn)可不同。舉例來說,ARM模式指令可在32 位邊界對準(zhǔn),使得ARM模式指令的兩個最低有效地址位將始終為"00"。另一方面,THUMB模 式指令可在16位或32位邊界對準(zhǔn),使得THUMB模式指令的兩個最低有效地址位可為" 10" 或"00"。因此,單單知道地址不足以最終確定兩個模式ARM或THUMB中的哪一者當(dāng)前正被 執(zhí)行。
[0006] 為跟蹤哪一模式正被執(zhí)行,ARM處理器米用一種方法,其包含將模式位存儲在PC 的最低有效位(LSB)中。THUMB模式中PC的LSB可為保留位,因為如上所述所述兩個最低 有效地址位為"10"或"00"且因此LSB(其在兩個情況下均為"0")可用于存儲模式位。執(zhí) 行可在函數(shù)調(diào)用(例如,跳躍指令)時在ARM模式與THUMB模式之間切換。因此,如果跳躍 指令將執(zhí)行轉(zhuǎn)移到包括THUMB模式中的指令的函數(shù),那么ARM處理器通過跳躍到函數(shù)+1的 地址而實施到THUMB模式的此模式改變。以此方式,THUMB模式中兩個最低有效位的值為 " 11"或"01",借此將其與ARM模式中兩個最低有效位的"00"值區(qū)分。
[0007] 雖然ARM處理器采用的以上方法實現(xiàn)跟蹤執(zhí)行模式的目標(biāo),但其具有對應(yīng)局限 性。舉例來說,如上所述,對于到THUMB模式的每次跳躍需要加"1"。這使軟件變復(fù)雜且尤 其是連接器。連接器必須確定每一函數(shù)的模式且接著對于到每一函數(shù)的所有調(diào)用在常規(guī)調(diào) 用與模式切換調(diào)用之間選擇。另外,調(diào)試器也受到影響,因為調(diào)試器將需要跟蹤正從調(diào)試器 內(nèi)調(diào)用的函數(shù)以確定這些函數(shù)是ARM還是THUMB函數(shù),以便分別確定跳躍到函數(shù)的PC值還 是跳躍到函數(shù)+1的PC值。
[0008] 與以上方法相關(guān)聯(lián)的又一缺點源自使用PC的LSB來存儲模式位。因為LSB用于 表示所述模式,所以LSB不再是實際地址的一部分。因此,如果ARM處理器將向THUMB模式 包含8位和24位指令,那么THUMB模式中每個函數(shù)的開始點將仍需要16位對準(zhǔn)以便促進(jìn) 模式跟蹤。這將必須在函數(shù)開始之前需要所有函數(shù)的約一半來引入8位空操作指令(nop) 以便將函數(shù)中的第一指令與16位邊界對準(zhǔn)。
[0009] 例如MIPS和PowerPC等其它已知處理器架構(gòu)面臨與在執(zhí)行模式之間切換相關(guān)的 類似挑戰(zhàn),且采用類似有缺點的方法來處置這些挑戰(zhàn)。相應(yīng)地,現(xiàn)有架構(gòu)展現(xiàn)其在執(zhí)行模 式之間跟蹤和切換的方法中的缺點。舉例來說,一些方法涉及使用存儲在相關(guān)聯(lián)存儲器管 理單元(MMU)中的指令的PC值來確定指令的執(zhí)行模式,因為MMU中的任何頁可屬于任一模 式。使用頁屬性來確定模式的增加的硬件成本方面的缺點是,模式位占據(jù)MMU的頁表條目 中的額外空間,且常規(guī)頁表條目的大小存在限制。使用頁屬性來確定模式的軟件成本方面 的缺點包含使加載器變復(fù)雜,將必須確定頁被推測處于哪一模式且接著填充所述頁的頁表 條目中的適當(dāng)位。此外,調(diào)試器將必須查找特定頁的頁表中的條目(在其可分解所述頁中 的指令之前)。其它已知方法同樣存在缺陷,其包含用于使用所保留操作代碼(OpCode)位 確定與地址相關(guān)聯(lián)的模式的特定程序代碼。
[0010] 因此,此項技術(shù)中對應(yīng)地需要克服用于在執(zhí)行模式之間跟蹤和切換的上文提及的 方法的缺點。
【發(fā)明內(nèi)容】
[0011] 本發(fā)明的示范性實施例針對用于在處理系統(tǒng)中的執(zhí)行模式之間切換的系統(tǒng)和方 法。更特定來說,示范性實施例針對包括至少兩個指令模式(經(jīng)典/對準(zhǔn)模式和壓縮/未 對準(zhǔn)模式)的處理系統(tǒng),以及使用經(jīng)調(diào)用函數(shù)的地址的一個或一個以上最低有效位在所述 至少兩個指令模式之間切換。
[0012] 舉例來說,一示范性實施例針對一種在處理器中的執(zhí)行模式之間切換的方法,所 述方法包括:當(dāng)處理器正在第一執(zhí)行模式中操作時檢測第一指令;分析第一指令的目標(biāo)地 址的一個或一個以上位;以及基于所述一個或一個以上位確定是否將處理器的操作從第一 執(zhí)行模式切換到第二執(zhí)行模式。
[0013] 另一示范性實施例針對一種設(shè)備,其包括:處理器,所述處理器經(jīng)配置以在包含第 一執(zhí)行模式和第二執(zhí)行模式的至少兩個執(zhí)行模式中執(zhí)行指令;經(jīng)配置以在第一執(zhí)行模式中 執(zhí)行期間檢測第一指令的邏輯;經(jīng)配置以分析第一指令的目標(biāo)地址的一個或一個以上位的 邏輯;以及經(jīng)配置以基于所述一個或一個以上位確定是否將處理器的操作從第一執(zhí)行模式 切換到第二執(zhí)行模式的邏輯。
[0014] 又一不范性實施例針對一種處理系統(tǒng),其包括:用于在包含第一執(zhí)行模式和第二 執(zhí)行模式的至少兩個執(zhí)行模式中執(zhí)行指令的裝置;用于在第一執(zhí)行模式中執(zhí)行期間檢測第 一指令的裝置;用于分析第一指令的目標(biāo)地址的一個或一個以上位的裝置;以及用于基于 所述一個或一個以上位確定是否將處理器的操作從第一執(zhí)行模式切換到第二執(zhí)行模式的 裝直。
[0015] 另一示范性實施例針對一種非暫時性計算機(jī)可讀存儲媒體,其包括代碼,所述代 碼當(dāng)由處理器執(zhí)行時致使所述處理器執(zhí)行用于在處理器的執(zhí)行模式之間切換的操作,所述 非暫時性計算機(jī)可讀存儲媒體包括:用于當(dāng)處理器正在第一執(zhí)行模式中操作時檢測第一指 令的代碼;用于分析第一指令的目標(biāo)地址的一個或一個以上位的代碼;以及用于基于所述 一個或一個以上位確定是否將處理器的操作從第一執(zhí)行模式切換到第二執(zhí)行模式的代碼。
【專利附圖】
【附圖說明】
[0016] 呈現(xiàn)附圖來輔助對本發(fā)明的實施例的描述,且僅出于說明而非限制所述實施例的 目的來提供附圖。
[0017] 圖1是根據(jù)示范性實施例配置的處理系統(tǒng)的簡化示意圖。
[0018] 圖2說明根據(jù)示范性實施例由經(jīng)配置以在執(zhí)行模式之間切換的處理器執(zhí)行的示 范性代碼序列。
[0019] 圖3說明根據(jù)示范性實施例用于在執(zhí)行模式之間切換的方法的操作流程。
[0020] 圖4A-B說明根據(jù)示范性實施例用于在執(zhí)行模式之間跟蹤和切換的方案。
[0021] 圖5說明其中可有利地采用本發(fā)明的實施例的示范性無線通信系統(tǒng)500。
【具體實施方式】
[0022] 在以下針對本發(fā)明特定實施例的描述和有關(guān)圖式中揭示本發(fā)明的若干方面??稍?不脫離本發(fā)明的范圍的情況下設(shè)計替代實施例。此外,將不會詳細(xì)描述本發(fā)明的眾所周知 的元件,或?qū)⑹÷运鲈悦饣煜景l(fā)明的相關(guān)細(xì)節(jié)。
[0023] 本文使用詞語"示范性"來表示"充當(dāng)實例、例子或說明"。本文中被描述為"示范 性"的任何實施例不必被理解為比其它實施例優(yōu)選或有利。同樣,術(shù)語"本發(fā)明的實施例" 并非要求本發(fā)明的所有實施例均包含所論述的特征、優(yōu)點或操作模式。
[0024] 本文中所使用的術(shù)語僅出于描述特定實施例的目的且并不希望限制本發(fā)明的實 施例。如在本文中所使用,除非上下文另外清楚地指示,否則希望單數(shù)形式"一"和"所述" 也包含復(fù)數(shù)形式。將進(jìn)一步了解,術(shù)語"包括"和/或"包含"在用于本文中時指定所陳述的 特征、整數(shù)、步驟、操作、元件和/或組件的存在,但不排除一個或一個以上其它特征、整數(shù)、 步驟、操作、元件、組件和/或其群組的存在或添加。
[0025] 此外,依據(jù)將由(例如)計算裝置的元件執(zhí)行的動作序列來描述許多實施例。將 認(rèn)識到,可由特定電路(例如,專用集成電路(ASIC))、由正由一個或一個以上處理器執(zhí)行 的程序指令或由兩者的組合來執(zhí)行本文中描述的各種動作。此外,可認(rèn)為本文中描述的這 些動作序列完全實施于任何形式的計算機(jī)可讀存儲媒體內(nèi),所述計算機(jī)可讀存儲媒體中已 存儲了對應(yīng)計算機(jī)指令集,所述指令在被執(zhí)行時將致使相關(guān)聯(lián)處理器執(zhí)行本文中描述的功 能性。因此,本發(fā)明的各個方面可以許多不同形式來實施,所有所述形式均預(yù)期在所主張的 標(biāo)的物的范圍內(nèi)。此外,對于本文中描述的實施例的每一者來說,任何此類實施例的對應(yīng)形 式可在本文中被描述為(例如)"經(jīng)配置以(執(zhí)行所描述的動作)的邏輯"。
[0026] 示范性實施例包含用于在執(zhí)行模式之間跟蹤和切換同時避免與現(xiàn)有方法相關(guān)聯(lián) 的缺點的技術(shù)。一個實施例可包含至少兩個執(zhí)行模式,其中關(guān)于模式內(nèi)指令的相應(yīng)對準(zhǔn)來 界定執(zhí)行模式。對指令的對準(zhǔn)的參考通常相對于存儲器地址空間的32位(或4字節(jié))進(jìn) 行,但此不應(yīng)被解釋為是限制。所揭示的技術(shù)可容易擴(kuò)展到其它存儲器地址邊界,而不脫離 本發(fā)明的范圍。
[0027] 因此,在第一執(zhí)行模式中,可允許指令未對準(zhǔn)/不對準(zhǔn)或無限制地任意對準(zhǔn)。此第 一執(zhí)行模式將在本文中稱為"壓縮"模式。在第二執(zhí)行模式中,指令的對準(zhǔn)可限于對應(yīng)存儲 器地址空間中的指定邊界,例如32位邊界。此第二執(zhí)行模式將在本文中稱為"經(jīng)典"模式。
[0028] 現(xiàn)參看圖1,展示示范性處理系統(tǒng)100的簡化示意圖。處理系統(tǒng)100被展示為包括 耦合到存儲器104的處理器102。雖然未說明,但處理系統(tǒng)100可包括各種其它組件,例如 一個或一個以上指令和/或數(shù)據(jù)高速緩沖存儲器、I/O裝置、協(xié)處理器等,如此項技術(shù)中眾 所周知。存儲器104可為字節(jié)可尋址的且包括可未對準(zhǔn)或在32位邊界對準(zhǔn)的指令(即,兩 個指令分別處于壓縮模式和經(jīng)典模式中)。處理器102可經(jīng)配置以在經(jīng)典模式中以及壓縮 模式中執(zhí)行指令。
[0029] 在非限制性示范性實施例中,經(jīng)典模式中的指令可對準(zhǔn)到存儲器104中的32位邊 界,因此強(qiáng)制經(jīng)典模式中每個指令的地址的兩個最低有效位具有值"00"。此外,在此實施例 中,壓縮模式中的選定指令可被強(qiáng)迫未對準(zhǔn)使得選定指令的地址的兩個最低有效位具有非 零值,即除"00"外的任何值(例如,選定指令的地址的兩個最低有效位可被迫為值"01"、 " 10"或" 11")。因此,地址的這些最低有效位可指示對準(zhǔn)且可在本文中稱為"對準(zhǔn)位"。
[0030] 壓縮模式中被迫未對準(zhǔn)的選定指令可對應(yīng)于進(jìn)入點。舉例來說,進(jìn)入點可標(biāo)記包 括指令的函數(shù)在壓縮模式中的開始;進(jìn)入點可為遵循來自壓縮模式的調(diào)用的指令;或進(jìn)入 點可標(biāo)記異常/中斷處置程序的開始。不管進(jìn)入點的精確性質(zhì)如何,可觸發(fā)從在經(jīng)典模式 中執(zhí)行切換到在壓縮模式中執(zhí)行的選定指令可被迫未對準(zhǔn)。例如遵循到壓縮模式的函數(shù)調(diào) 用的壓縮模式指令等所有剩余指令的對準(zhǔn)可保持未受干擾(即,除選定指令外的所有指令 的地址的對準(zhǔn)位可具有任何值,包含"00")。利用此配置,示范性實施例可從在經(jīng)典模式中 執(zhí)行切換到在壓縮模式中執(zhí)行,同時避免常規(guī)方法中在執(zhí)行模式之間跟蹤和切換的缺點。
[0031] 現(xiàn)參看圖2,說明處理器102執(zhí)行的示范性代碼序列。代碼序列210和214包括經(jīng) 典(對準(zhǔn))模式中的指令,且代碼序列212包括壓縮(未對準(zhǔn)或不對準(zhǔn))模式中的指令。如 圖所示,代碼序列210包括函數(shù)1,其在指令al處開始且包含指令al_a7。函數(shù)1和對應(yīng)指 令al_a7以及調(diào)用(調(diào)用1)的地址的對準(zhǔn)位已說明為"00"。一些實施例可包含任選用戶 狀態(tài)寄存器(或"USR",未明確展示),其中USR可經(jīng)配置以提供對準(zhǔn)位的狀態(tài)的指示。因 此,雖然在代碼序列210的執(zhí)行期間對準(zhǔn)位為"00",但USR可任選地更新以指示執(zhí)行處于經(jīng) 典模式。當(dāng)?shù)胶瘮?shù)2的調(diào)用(調(diào)用1)在指令a4之后遇到時,執(zhí)行可遵循路徑202到函數(shù) 2 〇
[0032] 相對于函數(shù)2,此函數(shù)可在指令bl處開始且包含指令bl_b6,處于壓縮模式。處理 器102有必要辨識由于采取路徑202引起的執(zhí)行模式的切換,以便避免在錯誤執(zhí)行模式中 的錯誤執(zhí)行。因此,在示范性實施例中,函數(shù)2可辨識為到壓縮模式的進(jìn)入點。辨識此切換 可通過迫使函數(shù)2的地址"AB"的兩個最低有效位(或?qū)?zhǔn)位)為除"00"外的任何值來 實現(xiàn)。舉例來說,函數(shù)2的地址可在存儲器104中被迫未對準(zhǔn)使得"AB"為"01"、" 10"或 "11"。此被迫未對準(zhǔn)可例如在處理系統(tǒng)1〇〇(未明確展示)的編譯器、軟件或?qū)iT邏輯中實 現(xiàn)。在一個實例中,使函數(shù)2被迫未對準(zhǔn)可通過配置匯編器以沿著路徑202在函數(shù)2之前添 加空操作來實現(xiàn)??詹僮鞯拇笮】山?jīng)調(diào)整以確保對準(zhǔn)位"AB"具有除"00"以外的值。舉例 來說,如果對準(zhǔn)位"AB"已具有除"00"以外的值,那么匯編器可不插入空操作。另一方面, 如果"AB"的值等于"00",那么匯編器可插入單一一個字節(jié)空操作,這將調(diào)整函數(shù)2的開始 地址使得"AB"等于"01"。
[0033] 處理器102可經(jīng)配置以調(diào)查指令執(zhí)行期間遇到的每個進(jìn)入點的對準(zhǔn)位。因此,一 旦處理器102辨識進(jìn)入點函數(shù)2具有作為非零值的對準(zhǔn)位"AB",就可任選地更新USR以指 示執(zhí)行現(xiàn)處于壓縮模式中。指令bl-b3的對準(zhǔn)可保持不受干擾,且其對應(yīng)地址的對準(zhǔn)位可 具有任何值,包含"00"。
[0034] 隨后,一旦到函數(shù)3的調(diào)用(調(diào)用2)在指令b3之后遇到,執(zhí)行就可遵循路徑206 到函數(shù)3。再次,處理器102可經(jīng)配置以調(diào)查函數(shù)3的對準(zhǔn)地址位,因為其是進(jìn)入點。然而, 此時,可辨識進(jìn)入點函數(shù)3的對準(zhǔn)位為"00",因為函數(shù)3在對準(zhǔn)經(jīng)典模式中。因此,處理器 102可辨識對于函數(shù)3執(zhí)行回到經(jīng)典模式,函數(shù)3在指令cl處開始且包含指令cl-c5。處 理器102還可任選地更新USR以指示返回到經(jīng)典模式。
[0035] 現(xiàn)來到沿著路徑204從壓縮模式中的代碼序列212到經(jīng)典模式中的代碼序列210 的返回(返回1),處理器102可調(diào)查進(jìn)入點的對準(zhǔn)位。在此情況下,進(jìn)入點為指令a5,且因 此可辨識指令a5的對準(zhǔn)位為"00"。因此,可得出結(jié)論,執(zhí)行已返回到經(jīng)典模式。對應(yīng)地, USR可經(jīng)更新以指示執(zhí)行在經(jīng)典模式中。
[0036] 對于沿著路徑208到指令b4的返回(返回2),進(jìn)入點將為指令b4。為確保正確 操作,處理器102必須能夠辨識指令b4在壓縮模式中。為實現(xiàn)此目的,指令b4可被迫未對 準(zhǔn),使得指令b4的對準(zhǔn)位不為"00"。在一個實例中,使指令b4被迫未對準(zhǔn)可通過配置匯編 器以沿著路徑206在到函數(shù)3的調(diào)用(調(diào)用2)之前添加空操作來實現(xiàn)??詹僮鞯拇笮】?經(jīng)調(diào)整以確保最低有效位"⑶"具有除"00"以外的值。在另一實例中,調(diào)用函數(shù)(沿著路 徑206到函數(shù)3的調(diào)用2)的大小可增加使得指令b4的最低有效位"⑶"被迫為值"01"、 "10"或"11"。指令b5和b6的對準(zhǔn)不受限制且不受干擾。因此,指令b5和b6的地址的對 準(zhǔn)位可為任何值,包含"00"。
[0037] 現(xiàn)參看圖4A,說明用于針對調(diào)用/返回在經(jīng)典模式(對準(zhǔn))與壓縮模式(未對準(zhǔn)) 之間跟蹤和切換的一般化方案。如圖所示,到對準(zhǔn)地址的調(diào)用/返回可保持在經(jīng)典模式402 中,如回路406展示。從經(jīng)典模式402到未對準(zhǔn)地址的調(diào)用/返回可沿著路徑408轉(zhuǎn)變到 壓縮模式404。到未對準(zhǔn)地址的調(diào)用/返回可保持在壓縮模式404中,如回路412展示。最 后,從壓縮模式404到對準(zhǔn)地址的調(diào)用/返回可沿著路徑410轉(zhuǎn)變到經(jīng)典模式402。
[0038] 雖然已相對于調(diào)用/返回描述以上實施例,但示范性技術(shù)可擴(kuò)展到其它此類指 令。舉例來說,一些實施例可經(jīng)擴(kuò)展以監(jiān)視例如跳躍(jump)、jumpr、callr、dealloc_return 等指令的模式切換,其將參看圖4B簡要描述。這些指令可被監(jiān)視以查看模式切換,且因此 可通過遵循如上文針對調(diào)用/返回描述的類似技術(shù)確保執(zhí)行在正確模式中。
[0039] 相對于跳躍指令,其可相對于示范性實施例以兩種不同方式的一者利用。在一個 實例中,跳躍指令當(dāng)在函數(shù)內(nèi)遇到時可用于跳躍到所述函數(shù)內(nèi)的一指令。在另一實例中,跳 躍指令可充當(dāng)尾部調(diào)用(或"tailcall"),其如所屬領(lǐng)域的技術(shù)人員將了解,可用于執(zhí)行調(diào) 用型行為。雖然到函數(shù)的調(diào)用可需要返回指令以返回到調(diào)用的位置(其可保存在調(diào)用堆棧 上),但尾部調(diào)用可不需要記住調(diào)用的位置或?qū)⑵浔4嬖诙褩I?。另一方面,尾部調(diào)用可直 接返回到原始調(diào)用器。例如跳躍等指令可需要額外考慮,如下文將進(jìn)一步闡釋。
[0040] 如果在經(jīng)典模式中的函數(shù)內(nèi)遇到跳躍指令,且跳躍指令的行為是跳躍到函數(shù)內(nèi)的 一指令,那么一定不存在模式改變。然而,如果跳躍指令具有例如尾部調(diào)用等類型的行為, 那么執(zhí)行跳躍指令可致使控制流程移動到可在函數(shù)外部的進(jìn)入點。所述進(jìn)入點可位于經(jīng)典 模式中或壓縮模式中。因此,通過調(diào)查進(jìn)入點的最低有效位,可作出關(guān)于是否需要模式切換 的確定。因此,經(jīng)典模式中遇到的跳躍指令的行為可類似于上文描述的調(diào)用指令的行為。
[0041] 然而,如果在處于壓縮模式中的函數(shù)內(nèi)遇到跳躍指令,那么可引發(fā)特殊考慮。如先 前描述,在壓縮模式中,除了被迫未對準(zhǔn)的特定進(jìn)入點外,剩余指令可或可不對準(zhǔn)。換句話 說,函數(shù)內(nèi)剩余指令的地址的最低有效位可為任何值,包含"00"。因此,當(dāng)跳躍指令致使跳 躍到指令內(nèi)的目標(biāo)指令時,目標(biāo)指令的地址可尚未被迫未對準(zhǔn),且因此可為任何值。因此, 調(diào)查目標(biāo)指令的地址的最低有效位可能不足以確定是否已發(fā)生模式切換,因為如果目標(biāo)指 令的地址的最低有效位為"00",那么這不指示已發(fā)生到經(jīng)典模式的切換。為處理此類情形, 實施例可包含特殊指令或具有特殊行為的指令。
[0042] 一個此類特殊行為可包含在壓縮模式中限制跳躍指令的行為僅跳躍到將不會引 起模式切換的指令,例如跳躍到與跳躍指令相同的函數(shù)內(nèi)的目標(biāo)指令;以及針對可引起模 式改變的情形界定單獨(dú)尾部調(diào)用指令,例如跳躍到可在相同函數(shù)內(nèi)部且可能在不同模式中 的目標(biāo)指令。因此,調(diào)查尾部調(diào)用函數(shù)的最低有效位可揭示是否已發(fā)生模式改變,且處理器 可相應(yīng)地處理此模式改變。
[0043] 因此,對于例如跳躍指令等指令,關(guān)于指令的執(zhí)行是否將引起模式改變的確定可 基于在其內(nèi)遇到所述指令的模式。如果在經(jīng)典模式內(nèi)遇到跳躍指令,那么目標(biāo)地址的最低 有效位可用于確定是否已發(fā)生模式改變。另一方面,如果在壓縮模式內(nèi)遇到跳躍指令,那 么將不發(fā)生模式改變或模式改變可被抑制,而不管目標(biāo)地址的最低有效位所提供的指示如 何。而是,特殊尾部調(diào)用指令可在壓縮模式中使用以實現(xiàn)跳躍型行為,其可能需要模式改 變,且此模式改變可基于尾部調(diào)用指令的最低有效位來確定。類似地,在一些實施例中,返 回指令也可限于壓縮模式,且不在經(jīng)典模式中使用。
[0044] 其它指令可包含jumpr和tailcallr。雖然跳躍和尾部調(diào)用可指定目標(biāo)指令的地 址,但jumpr和tailcallr指令可指定可固持目標(biāo)指令的地址的寄存器。類似地,callr指 令可指定可固持待調(diào)用的函數(shù)的地址的寄存器??捎糜诮獬峙浼拇嫫鞯膁eallocjeturn 指令也可經(jīng)配置使得與deall〇C_retUrn指令的執(zhí)行相關(guān)的模式改變可基于調(diào)查deall 〇c_ return指令的目標(biāo)地址的最低有效位。
[0045] 現(xiàn)參看圖4B,其說明模式切換行為以及對于包含以上特殊指令的示范性指令的跟 蹤。基于經(jīng)調(diào)用函數(shù)的目標(biāo)指令/進(jìn)入點的地址的最低有效位,例如調(diào)用(call)、callr、 跳躍(jump)、jumpr和dealloc_return等指令可保持在經(jīng)典模式452中而不引起模式切換 (按照回路456)?;蛘撸砂l(fā)生模式切換,且這些指令call、callr、jump、jumpr和dealloc_ return可沿著路徑458轉(zhuǎn)變到壓縮模式454。從壓縮模式454,將不針對模式切換而跟蹤例 如jump和jumpr等指令,如先前描述。而是,可跟蹤尾部調(diào)用(tailcall)、tailcallr和返 回(return)。因此,基于經(jīng)調(diào)用函數(shù)的目標(biāo)指令/進(jìn)入點的地址的最低有效位,例如call、 callr、taileal 1、tailcallr、return 和 dealloc_return 等指令可保持在壓縮模式 454 中 (按照回路462)?;蛘撸砂l(fā)生模式切換,且這些指令call、callr、tailcall、tailcallr、 return和dealloc_return可沿著路徑460轉(zhuǎn)變到經(jīng)典模式452。
[0046] 在一些示范性實施例中,僅例如到壓縮模式中的函數(shù)的進(jìn)入點等選定指令可被迫 未對準(zhǔn),且壓縮模式中的剩余指令的地址可保持不受干擾。因此,與現(xiàn)有方法(例如,THUMB 模式中的ARM處理器)相比,不需要使用LSB來保持模式的指示或跳躍到經(jīng)調(diào)用函數(shù)+1的 PC值。如上文論述,在示范性實施例中,USR可經(jīng)配置以有效提供執(zhí)行模式的指示。此外, 僅沿著路徑202到函數(shù)2的調(diào)用1和沿著路徑208到指令b4的返回2的類型的指令可需 要插入空操作,而例如沿著路徑204到指令a5的返回1和沿著路徑206到函數(shù)3的調(diào)用2 等指令將不需要此類空操作。因此,四種類型的調(diào)用/返回指令中的僅兩者可需要通過引 入空操作實現(xiàn)未對準(zhǔn),這意味著由于引入空操作引起的代碼空間的浪費(fèi)減少。
[0047] 此外,在示范性實施例中,指令的地址可本身便利地用于辨識函數(shù)調(diào)用和返回的 執(zhí)行模式,而不需要任何復(fù)雜的代碼或昂貴的跟蹤機(jī)制。對于所有其它指令,USR可經(jīng)配置 以有效地提供執(zhí)行模式的指示。因為示范性實施例避免需要保留位來指示執(zhí)行模式,所以 實施例對應(yīng)地避免與限制遵循到函數(shù)的進(jìn)入點的指令的地址相關(guān)聯(lián)的缺點。此外,使用地 址的值確定執(zhí)行模式需要調(diào)查僅調(diào)用或返回上的地址位。因此,不需要事先知道與目標(biāo)指 令相關(guān)聯(lián)的模式是什么。另外,在示范性實施例中,MMU頁表條目不需要保持關(guān)于指令的執(zhí) 行模式的信息。因此,處理系統(tǒng)1〇〇中的MMU(未圖示)不需要當(dāng)執(zhí)行在壓縮模式與經(jīng)典模 式之間切換或反之亦然時切換操作或執(zhí)行特殊函數(shù)。
[0048] 將了解,實施例包含用于執(zhí)行本文揭示的過程、功能和/或算法的各種方法。舉例 來說,如圖3中說明,實施例可包含在處理器(例如,處理器102)中的執(zhí)行模式之間切換的 方法,其包括:當(dāng)處理器正在第一執(zhí)行模式(例如,經(jīng)典模式)中操作時檢測第一指令(例 如,分別具有圖2中例如函數(shù)2/指令a5等目標(biāo)指令/進(jìn)入點的調(diào)用/返回指令)-框302 ; 分析第一指令的目標(biāo)地址的一個或一個以上位(例如,分別圖2中函數(shù)2/指令a5的兩個 最低有效位或?qū)?zhǔn)位"AB" / "00")-框304 ;以及基于所述一個或一個以上位確定是否將 處理器的操作從第一執(zhí)行模式切換到第二執(zhí)行模式(例如,壓縮模式框306。
[0049] 所屬領(lǐng)域的技術(shù)人員將了解,可使用多種不同技術(shù)和技法中的任一者來表示信息 和信號。舉例來說,可由電壓、電流、電磁波、磁場或磁粒子、光場或光粒子或其任何組合來 表示貫穿以上描述中可參考的數(shù)據(jù)、指令、命令、信息、信號、位、符號和碼片。
[0050] 此外,所屬領(lǐng)域的技術(shù)人員將了解,結(jié)合本文所揭示的實施例而描述的各種說明 性邏輯塊、模塊、電路和算法步驟可實施為電子硬件、計算機(jī)軟件或兩者的組合。為清楚 地說明硬件與軟件的此互換性,上文已大致關(guān)于其功能性而描述了各種說明性組件、塊、模 塊、電路和步驟。所述功能性實施為硬件還是軟件取決于特定應(yīng)用和強(qiáng)加于整個系統(tǒng)的設(shè) 計約束。熟練的技術(shù)人員可針對每一特定應(yīng)用以不同方式來實施所描述的功能性,但此類 實施決策不應(yīng)被解釋為會導(dǎo)致脫離本發(fā)明的范圍。
[0051] 結(jié)合本文所揭示的實施例而描述的方法、序列和/或算法可直接以硬件、以由處 理器執(zhí)行的軟件模塊或以兩者的組合體現(xiàn)。軟件模塊可駐留在RAM存儲器、閃存存儲器、 ROM存儲器、EPROM存儲器、EEPR0M存儲器、寄存器、硬盤、可裝卸盤、⑶-R0M,或此項技術(shù)中 已知的任一其它形式的存儲媒體中。示范性存儲媒體耦合到處理器,使得處理器可從存儲 媒體讀取信息并將信息寫入到存儲媒體。在替代方案中,存儲媒體可與處理器成一體式。
[0052] 參看圖5,描繪包含根據(jù)示范性實施例配置的多核處理器的無線裝置的特定說明 性實施例的框圖且其大體表示為500。裝置500包含數(shù)字信號處理器(DSP) 564,其可包含耦 合到如圖所示的存儲器532的圖1的處理器102。圖5還展示耦合到DSP 564且耦合到顯 示器528的顯示器控制器526。譯碼器/解碼器(CODEC) 534 (例如,音頻和/或語音CODEC) 可耦合到DSP 564。還說明例如無線控制器540(其可包含調(diào)制解調(diào)器)等其它組件。揚(yáng) 聲器536和麥克風(fēng)538可耦合到CODEC 534。圖5還指示無線控制器540可耦合到無線天 線542。在特定實施例中,DSP 564、顯示器控制器526、存儲器532、C0DEC534和無線控制器 540包含在系統(tǒng)級封裝或芯片上系統(tǒng)裝置522中。
[0053] 在特定實施例中,輸入裝置530和電源544耦合到芯片上系統(tǒng)裝置522。此外,在 特定實施例中,如圖5中說明,顯示器528、輸入裝置530、揚(yáng)聲器536、麥克風(fēng)538、無線天線 542和電源544在芯片上系統(tǒng)裝置522外部。然而,顯示器528、輸入裝置530、揚(yáng)聲器536、 麥克風(fēng)538、無線天線542和電源544的每一者可耦合到芯片上系統(tǒng)裝置522的組件,例如 接口或控制器。
[0054] 應(yīng)注意,盡管圖5描繪無線通信裝置,但DSP 564和存儲器532也可集成到機(jī)頂 盒、音樂播放器、視頻播放器、娛樂單元、導(dǎo)航裝置、個人數(shù)字助理(PDA)、固定位置數(shù)據(jù)單元 或計算機(jī)中。處理器(例如,DSP 564)也可集成到此裝置中。
[0055] 因此,本發(fā)明的實施例可包含體現(xiàn)用于在處理器中的執(zhí)行模式之間切換的方法的 計算機(jī)可讀媒體。因此,本發(fā)明不限于所說明的實例,且用于執(zhí)行本文描述的功能性的任何 裝置包含在本發(fā)明的實施例中。
[0056] 雖然以上揭示內(nèi)容展示本發(fā)明的說明性實施例,但應(yīng)注意,可在不脫離如所附權(quán) 利要求書界定的本發(fā)明的范圍的情況下在其中作出各種改變和修改。無需以任何特定次序 來執(zhí)行根據(jù)本文中描述的本發(fā)明的實施例的方法權(quán)利要求項的功能、步驟和/或動作。此 夕卜,盡管可以單數(shù)形式描述或主張本發(fā)明的元件,但除非明確陳述限于單數(shù)形式,否則也預(yù) 期復(fù)數(shù)形式。
【權(quán)利要求】
1. 一種在處理器中的執(zhí)行模式之間切換的方法,所述方法包括: 當(dāng)所述處理器正在第一執(zhí)行模式中操作時檢測第一指令; 分析所述第一指令的目標(biāo)地址的一個或一個以上位;以及 基于所述一個或一個以上位確定是否將所述處理器的操作從所述第一執(zhí)行模式切換 到第二執(zhí)行模式。
2. 根據(jù)權(quán)利要求1所述的方法,其中所述一個或一個以上位為對準(zhǔn)位,且其中所述對 準(zhǔn)位針對所述第一執(zhí)行模式或所述第二執(zhí)行模式的一者中的目標(biāo)地址而被迫未對準(zhǔn),使得 所述第一執(zhí)行模式中所述目標(biāo)地址的所述對準(zhǔn)位不同于所述第二執(zhí)行模式中所述目標(biāo)地 址的所述對準(zhǔn)位。
3. 根據(jù)權(quán)利要求2所述的方法,其中: 所述第一執(zhí)行模式是包括在耦合到所述處理器的存儲器中對準(zhǔn)的指令的經(jīng)典模式;且 所述第二執(zhí)行模式是包括所述存儲器中未對準(zhǔn)的指令的壓縮模式。
4. 根據(jù)權(quán)利要求3所述的方法,其中所述對準(zhǔn)位是所述目標(biāo)地址的兩個最低有效位, 且其中所述經(jīng)典模式中的所述目標(biāo)地址對準(zhǔn)到所述存儲器的32位邊界,使得對應(yīng)的對準(zhǔn) 位為"00",且其中所述壓縮模式中的所述目標(biāo)地址相對于所述存儲器的32位邊界未對準(zhǔn), 使得對應(yīng)的對準(zhǔn)位為"〇 1 "、" 10"或" 11 "中的一者。
5. 根據(jù)權(quán)利要求2所述的方法,其中: 所述第一執(zhí)行模式是包括在所述存儲器中未對準(zhǔn)的指令的壓縮模式;且 所述第二執(zhí)行模式是包括在耦合到所述處理器的存儲器中對準(zhǔn)的指令的經(jīng)典模式。
6. 根據(jù)權(quán)利要求5所述的方法,其中所述對準(zhǔn)位是所述目標(biāo)地址的兩個最低有效位, 且其中所述經(jīng)典模式中的所述目標(biāo)地址對準(zhǔn)到所述存儲器的32位邊界,使得對應(yīng)的對準(zhǔn) 位為"00",且其中所述壓縮模式中的所述目標(biāo)地址相對于所述存儲器的32位邊界未對準(zhǔn), 使得對應(yīng)的對準(zhǔn)位為"〇 1 "、" 10"或" 11 "中的一者。
7. 根據(jù)權(quán)利要求1所述的方法,其中所述第一指令是調(diào)用或返回指令中的一者。
8. 根據(jù)權(quán)利要求1所述的方法,其中所述第一指令是call、callr、dealloc_return、 tailcall 或 tailcallr 指令中的一者。
9. 根據(jù)權(quán)利要求1所述的方法,其中所述第一指令是jump或jumpr指令中的一者,且 所述第一執(zhí)行模式是壓縮模式,且其中所述切換操作被抑制。
10. 根據(jù)權(quán)利要求1所述的方法,其中所述第一指令是jump或jumpr指令中的一者,且 所述第一執(zhí)行模式是經(jīng)典模式,且其中所述切換操作未被抑制。
11. 根據(jù)權(quán)利要求2所述的方法,其進(jìn)一步包括在用戶狀態(tài)寄存器中提供所述對準(zhǔn)位 的狀態(tài)的指示。
12. -種設(shè)備,其包括: 處理器,其經(jīng)配置以在包含第一執(zhí)行模式和第二執(zhí)行模式的至少兩個執(zhí)行模式中執(zhí)行 指令; 經(jīng)配置以在所述第一執(zhí)行模式中的執(zhí)行期間檢測第一指令的邏輯; 經(jīng)配置以分析所述第一指令的目標(biāo)地址的一個或一個以上位的邏輯;以及 經(jīng)配置以基于所述一個或一個以上位確定是否將所述處理器的操作從所述第一執(zhí)行 模式切換到所述第二執(zhí)行模式的邏輯。
13. 根據(jù)權(quán)利要求12所述的設(shè)備,其中所述一個或一個以上位為對準(zhǔn)位,且其中所述 對準(zhǔn)位針對所述第一執(zhí)行模式或所述第二執(zhí)行模式中的目標(biāo)地址而被迫未對準(zhǔn),使得所述 第一執(zhí)行模式中所述目標(biāo)地址的所述對準(zhǔn)位不同于所述第二執(zhí)行模式中所述目標(biāo)地址的 所述對準(zhǔn)位。
14. 根據(jù)權(quán)利要求13所述的設(shè)備,其中: 所述第一執(zhí)行模式是包括在耦合到所述處理器的存儲器中對準(zhǔn)的指令的經(jīng)典模式;且 所述第二執(zhí)行模式是包括所述存儲器中未對準(zhǔn)的指令的壓縮模式。
15. 根據(jù)權(quán)利要求14所述的設(shè)備,其中所述對準(zhǔn)位是所述目標(biāo)地址的兩個最低有效 位,且其中所述經(jīng)典模式中的所述目標(biāo)地址對準(zhǔn)到所述存儲器的32位邊界,使得對應(yīng)的對 準(zhǔn)位為"00",且其中所述壓縮模式中的所述目標(biāo)地址相對于所述存儲器的32位邊界未對 準(zhǔn),使得對應(yīng)的對準(zhǔn)位為"〇 1 "、" 10"或" 11 "中的一者。
16. 根據(jù)權(quán)利要求13所述的設(shè)備,其中: 所述第一執(zhí)行模式是包括在所述存儲器中未對準(zhǔn)的指令的壓縮模式;且 所述第二執(zhí)行模式是包括在耦合到所述處理器的存儲器中對準(zhǔn)的指令的經(jīng)典模式。
17. 根據(jù)權(quán)利要求16所述的設(shè)備,其中所述對準(zhǔn)位是所述目標(biāo)地址的兩個最低有效 位,且其中所述經(jīng)典模式中的所述目標(biāo)地址對準(zhǔn)到所述存儲器的32位邊界,使得對應(yīng)的對 準(zhǔn)位為"00",且其中所述壓縮模式中的所述目標(biāo)地址相對于所述存儲器的32位邊界未對 準(zhǔn),使得對應(yīng)的對準(zhǔn)位為"01 "、" 10"或" 11 "中的一者。
18. 根據(jù)權(quán)利要求13所述的設(shè)備,其中所述第一指令是call、callr、return、dealloc_ return、tailcall 或 tailcallr 指令中的一者。
19. 根據(jù)權(quán)利要求13所述的設(shè)備,其進(jìn)一步包括經(jīng)配置以提供所述對準(zhǔn)位的狀態(tài)的指 示的用戶狀態(tài)寄存器。
20. 根據(jù)權(quán)利要求12所述的設(shè)備,其集成在至少一個半導(dǎo)體裸片中。
21. 根據(jù)權(quán)利要求12所述的設(shè)備,其集成到選自由以下各項組成的群組的裝置中:機(jī) 頂盒、音樂播放器、視頻播放器、娛樂單元、導(dǎo)航裝置、通信裝置、個人數(shù)字助理PDA、固定位 置數(shù)據(jù)單元和計算機(jī)。
22. -種處理系統(tǒng),其包括: 用于在包含第一執(zhí)行模式和第二執(zhí)行模式的至少兩個執(zhí)行模式中執(zhí)行指令的裝置; 用于在所述第一執(zhí)行模式中的執(zhí)行期間檢測第一指令的裝置; 用于分析所述第一指令的目標(biāo)地址的一個或一個以上位的裝置;以及 用于基于所述一個或一個以上位確定是否將所述處理器的操作從所述第一執(zhí)行模式 切換到所述第二執(zhí)行模式的裝置。
23. -種非暫時性計算機(jī)可讀存儲媒體,其包括代碼,所述代碼當(dāng)由處理器執(zhí)行時致使 所述處理器執(zhí)行用于在所述處理器的執(zhí)行模式之間切換的操作,所述非暫時性計算機(jī)可讀 存儲媒體包括: 用于當(dāng)所述處理器正在第一執(zhí)行模式中操作時檢測第一指令的代碼; 用于分析所述第一指令的目標(biāo)地址的一個或一個以上位的代碼;以及 用于基于所述一個或一個以上位確定是否將所述處理器的操作從所述第一執(zhí)行模式 切換到第二執(zhí)行模式的代碼。
【文檔編號】G06F9/30GK104106044SQ201380008133
【公開日】2014年10月15日 申請日期:2013年2月7日 優(yōu)先權(quán)日:2012年2月7日
【發(fā)明者】查爾斯·約瑟夫·塔伯尼, 埃里克·詹姆斯·普隆迪克, 盧西恩·科德雷斯庫, 蘇雷什·K·文庫馬漢提, 埃萬德羅·卡洛斯·梅內(nèi)塞斯 申請人:高通股份有限公司