用于經(jīng)頻繁調(diào)用函數(shù)的表調(diào)用指令的制作方法
【專利摘要】一種設(shè)備包含存儲(chǔ)器,所述存儲(chǔ)器存儲(chǔ)包含操作碼和操作數(shù)的指令。所述操作數(shù)指定立即值或存儲(chǔ)所述立即值的寄存器的寄存器指示符。所述立即值可用于識(shí)別函數(shù)調(diào)用地址。所述函數(shù)調(diào)用地址可從多個(gè)函數(shù)調(diào)用地址中選擇。
【專利說明】用于經(jīng)頻繁調(diào)用函數(shù)的表調(diào)用指令
【技術(shù)領(lǐng)域】
[0001 ] 本發(fā)明大體上涉及用于經(jīng)頻繁調(diào)用函數(shù)的表調(diào)用指令。
【背景技術(shù)】
[0002]技術(shù)的進(jìn)步已經(jīng)帶來更小且更強(qiáng)大的計(jì)算裝置。舉例來說,當(dāng)前存在多種便攜式個(gè)人計(jì)算裝置,包含無線計(jì)算裝置,例如較小、輕重量且易于由用戶攜帶的便攜式無線電話、個(gè)人數(shù)字助理(PDA)和尋呼裝置。更具體來說,便攜式無線電話(例如,蜂窩式電話和因特網(wǎng)協(xié)議(IP)電話)可經(jīng)由無線網(wǎng)絡(luò)傳遞語音和數(shù)據(jù)包。此外,許多此類無線電話包含并入其中的其它類型裝置。舉例來說,無線電話還可包含數(shù)字靜態(tài)相機(jī)、數(shù)字?jǐn)z像機(jī)、數(shù)字記錄器和音頻文件播放器。而且,此類無線電話可處理可執(zhí)行指令,其包含可用以接入因特網(wǎng)的軟件應(yīng)用程序,例如,網(wǎng)頁瀏覽器應(yīng)用程序。因而,這些無線電話可包含顯著的計(jì)算能力。
[0003]隨著例如無線電話等電子裝置的計(jì)算能力的提高,用于實(shí)施各種應(yīng)用程序的函數(shù)的數(shù)目可顯著地增大。當(dāng)應(yīng)用程序是經(jīng)編譯且鏈接的時(shí),輸出代碼的大部分可為函數(shù)調(diào)用且可導(dǎo)致較大的總體代碼大小。
【發(fā)明內(nèi)容】
[0004]揭示了包含操作碼和操作數(shù)的基于表的函數(shù)調(diào)用指令。所述操作數(shù)可指定立即值,其中所述立即值識(shí)別特定函數(shù)的函數(shù)調(diào)用地址的位置。或者,所述操作數(shù)可指定寄存器的寄存器指示符,且所述函數(shù)調(diào)用地址的位置可存儲(chǔ)在所述寄存器中而不是被直接編碼到指令中。所述函數(shù)調(diào)用地址可從存儲(chǔ)在表中的多個(gè)函數(shù)調(diào)用地址中選擇??僧a(chǎn)生函數(shù)調(diào)用地址的表且所述表可基于對(duì)應(yīng)于包含在所述表中的函數(shù)調(diào)用地址的函數(shù)被調(diào)用的頻繁程度來分類。所述表可在鏈接時(shí)間期間或者在編譯時(shí)間產(chǎn)生和分類。當(dāng)表調(diào)用指令的長度小于通用函數(shù)調(diào)用指令的長度時(shí),可實(shí)現(xiàn)代碼大小的減小。
[0005]作為實(shí)例,32位通用函數(shù)調(diào)用指令可包含8位操作碼和24位地址或地址偏移。在應(yīng)用程序的編譯(或鏈接)期間,編譯器(或鏈接器)可識(shí)別應(yīng)用程序的16個(gè)最經(jīng)頻繁調(diào)用函數(shù)??僧a(chǎn)生包含那16個(gè)函數(shù)的函數(shù)調(diào)用地址的表,且所述表可使用4位表索引來標(biāo)弓I。函數(shù)的函數(shù)調(diào)用地址可為函數(shù)的第一指令的地址(即,當(dāng)函數(shù)被調(diào)用時(shí)“跳轉(zhuǎn)到”的地址)。用于調(diào)用16個(gè)最經(jīng)頻繁調(diào)用函數(shù)的通用函數(shù)調(diào)用指令可用本文揭示的表調(diào)用指令來替換,且處理所述表調(diào)用指令可加載且跳轉(zhuǎn)到從所述表檢索的適當(dāng)?shù)暮瘮?shù)調(diào)用地址。舉例來說,表調(diào)用指令可為包含4位操作碼和4位操作數(shù)的8位指令。當(dāng)4位操作數(shù)是立即值時(shí),所述4位操作數(shù)可表示到函數(shù)調(diào)用地址的16條目表的索引。當(dāng)4位操作數(shù)是寄存器指示符時(shí),所述4位操作數(shù)可指定16個(gè)寄存器中的在所述表中存儲(chǔ)偏移的一個(gè)寄存器。因此,每次通用32位函數(shù)調(diào)用指令由8位表調(diào)用指令替換時(shí)可實(shí)現(xiàn)24位的節(jié)省。應(yīng)注意存儲(chǔ)在所述表中的函數(shù)調(diào)用地址的數(shù)目可小于或大于16。在一些實(shí)施方案中,所述表可存儲(chǔ)在基于高速緩沖存儲(chǔ)器的存儲(chǔ)器中,且特殊寄存器(例如,存儲(chǔ)全局指針的寄存器)可用于存取所述表。
[0006]在特定實(shí)施例中,一種設(shè)備包含存儲(chǔ)指令的存儲(chǔ)器。所述指令包含操作碼和操作數(shù)。所述操作數(shù)指定立即值或存儲(chǔ)所述立即值的寄存器的寄存器指示符。所述立即值可用于識(shí)別從多個(gè)函數(shù)調(diào)用地址中選擇的函數(shù)調(diào)用地址。
[0007]在另一特定實(shí)施例中,一種方法包含在處理元件處處理指令以產(chǎn)生操作碼和操作數(shù)。所述操作碼識(shí)別表函數(shù)調(diào)用指令,且所述操作數(shù)識(shí)別立即值或存儲(chǔ)所述立即值的寄存器的寄存器指示符。所述立即值可用于識(shí)別可從多個(gè)函數(shù)調(diào)用地址中選擇的函數(shù)調(diào)用地址。所述方法包含使用所述立即值作為到表中的索引以識(shí)別所述函數(shù)調(diào)用地址。
[0008]在另一特定實(shí)施例中,非暫時(shí)性計(jì)算機(jī)可讀媒體包含程序代碼,所述程序代碼在由處理器執(zhí)行時(shí)致使處理器從指令代碼產(chǎn)生操作碼和操作數(shù)。所述操作碼識(shí)別表函數(shù)調(diào)用指令。所述操作數(shù)指定立即值或存儲(chǔ)所述立即值的寄存器的寄存器指示符。所述立即值可用以識(shí)別可從多個(gè)函數(shù)調(diào)用地址中選擇的函數(shù)調(diào)用地址。所述非暫時(shí)性計(jì)算機(jī)可讀媒體進(jìn)一步包含程序代碼,所述程序代碼在由處理器執(zhí)行時(shí)致使處理器使用所述立即值作為到表中的索引以識(shí)別函數(shù)調(diào)用地址且跳轉(zhuǎn)到所述識(shí)別的函數(shù)調(diào)用地址。
[0009]在另一特定實(shí)施例中,一種設(shè)備包含用于存儲(chǔ)指令的裝置以及用于處理所述指令以產(chǎn)生操作碼和操作數(shù)的裝置。所述操作數(shù)指定立即值或存儲(chǔ)所述立即值的寄存器的寄存器指示符。所述立即值可用以識(shí)別可從多個(gè)函數(shù)調(diào)用地址中選擇的函數(shù)調(diào)用地址,且所述用于處理的裝置跳轉(zhuǎn)到所述識(shí)別的函數(shù)調(diào)用地址。
[0010]所揭示的實(shí)施例中的至少一者提供的一個(gè)特定優(yōu)點(diǎn)是總體代碼大小的減小。嵌入式低成本應(yīng)用程序可受益于較小的代碼大小。舉例來說,調(diào)制解調(diào)器軟件、嵌入無線裝置中的軟件以及其它軟件處理環(huán)境可受益于減小的代碼大小。因此,可有利的是減小具有許多函數(shù)調(diào)用的軟件的代碼大小。另一特定優(yōu)點(diǎn)是由于較小的代碼尺寸而減少的存儲(chǔ)器使用和裝置中的功率消耗的減少。
[0011]在審閱整個(gè)申請(qǐng)案后,本發(fā)明的其它方面、優(yōu)點(diǎn)和特征將變得顯而易見,整個(gè)申請(qǐng)案包含以下部分:【專利附圖】
【附圖說明】、【具體實(shí)施方式】和權(quán)利要求書。
【專利附圖】
【附圖說明】
[0012]圖1是可操作以存儲(chǔ)和處理表調(diào)用指令的系統(tǒng)的特定說明性實(shí)施例的方框圖;
[0013]圖2是說明圖1的系統(tǒng)的操作的第一圖;
[0014]圖3是說明圖1的系統(tǒng)的操作的第二圖;
[0015]圖4是說明圖1的系統(tǒng)的操作的第三圖;
[0016]圖5是處理表調(diào)用指令的方法的特定說明性實(shí)施例的流程圖;以及
[0017]圖6是包含處理器的無線裝置的方框圖,所述處理器可操作以執(zhí)行表調(diào)用指令。
【具體實(shí)施方式】
[0018]表調(diào)用指令可包含可用作到表中的索引的操作碼和操作數(shù)。所述操作數(shù)可指定立即值或存儲(chǔ)所述立即值的寄存器的寄存器指示符,其中所述立即值可用以從所述表中識(shí)別函數(shù)調(diào)用地址。所述表可存儲(chǔ)經(jīng)頻繁調(diào)用指令的函數(shù)調(diào)用地址,且處理所述表調(diào)用指令可包含加載且跳轉(zhuǎn)到由立即值識(shí)別的函數(shù)調(diào)用地址。當(dāng)操作碼和操作數(shù)的組合占據(jù)比通用函數(shù)調(diào)用指令少的位時(shí),可以實(shí)現(xiàn)代碼大小的節(jié)省。
[0019]參考圖1,揭示了可操作以對(duì)表調(diào)用指令180進(jìn)行存儲(chǔ)和處理的系統(tǒng)的特定說明性實(shí)施例并大體上將所述實(shí)施例指定為100。系統(tǒng)100可包含經(jīng)由總線接口 108耦合到指令高速緩沖存儲(chǔ)器110的存儲(chǔ)器102。在特定實(shí)施例中,系統(tǒng)100的全部或一部分可集成到處理器中。
[0020]表調(diào)用指令180可包含操作碼和操作數(shù)。在特定實(shí)施例中,所述操作數(shù)指定立即值(例如,數(shù)字常量),如同在圖2到4中進(jìn)一步圖解說明。所述立即值可用于識(shí)別具有函數(shù)調(diào)用地址的特定函數(shù),所述函數(shù)調(diào)用地址可從存儲(chǔ)在表(例如,說明性表190)中的多個(gè)函數(shù)調(diào)用地址中選擇。存儲(chǔ)在所述表中的所述函數(shù)調(diào)用地址可對(duì)應(yīng)于應(yīng)用程序的經(jīng)頻繁調(diào)用函數(shù)。所述立即值可為表示所述表中的函數(shù)調(diào)用地址的索引位置的整數(shù)常量。舉例來說,用于表的第三行的表調(diào)用指令可為“TC#3”,其中‘TC’是操作碼且‘#3,是操作數(shù)(即,立即值)?;蛘撸?dāng)表的第一行是索引O而不是索引I時(shí),用于第三行的表調(diào)用指令可為“TC#2”。
[0021]或者,所述操作數(shù)可指定存儲(chǔ)所述立即值的寄存器的寄存器指示符。舉例來說,表調(diào)用指令可為“TC rl”,其中寄存器rl存儲(chǔ)立即值3。
[0022]存儲(chǔ)器102可經(jīng)由總線接口 108將表調(diào)用指令180傳輸給指令高速緩沖存儲(chǔ)器110。數(shù)據(jù)高速緩沖存儲(chǔ)器112也可經(jīng)由總線接口 108耦合到存儲(chǔ)器102。數(shù)據(jù)高速緩沖存儲(chǔ)器112可包含經(jīng)頻繁調(diào)用函數(shù)的表190。表190可在鏈接時(shí)間或在編譯時(shí)間期間產(chǎn)生和分類。在特定說明性實(shí)施例中,表190包含位于表的頂部的最經(jīng)頻繁調(diào)用函數(shù)(例如,調(diào)試函數(shù)和恢復(fù)函數(shù))的地址,且表190是按使用頻率的依次遞減順序分類的(例如,如通過編譯器或鏈接器所確定)。表調(diào)用指令180與通用函數(shù)調(diào)用指令、通用跳轉(zhuǎn)指令或通用分支指令相比可用較少位來創(chuàng)建,因?yàn)楸碚{(diào)用指令180可指向包含待調(diào)用函數(shù)的地址的表190。表調(diào)用指令180不同于通用分支指令且不同于指令集的通用跳轉(zhuǎn)指令。較不頻繁調(diào)用函數(shù)可使用通用分支或跳轉(zhuǎn)指令來調(diào)用,而較頻繁調(diào)用函數(shù)可使用表調(diào)用指令180來調(diào)用。此夕卜,表190可為固定的或可在系統(tǒng)100處執(zhí)行應(yīng)用程序期間動(dòng)態(tài)更新。
[0023]指令高速緩沖存儲(chǔ)器110可經(jīng)由總線111耦合到定序器114。定序器114可接收通用中斷116,所述中斷可從中斷寄存器(未圖示)中檢索。在特定實(shí)施例中,指令高速緩沖存儲(chǔ)器110可經(jīng)由多個(gè)當(dāng)前指令寄存器(未圖示)耦合到定序器114,所述當(dāng)前指令寄存器可耦合到總線111且與處理器100的特定線程(例如,硬件線程)相關(guān)聯(lián)。在特定實(shí)施例中,處理器100可為包含六(6)個(gè)線程的內(nèi)插多線程處理器。
[0024]在特定實(shí)施例中,總線111可為一百二十八位(128位)總線且定序器114可經(jīng)配置以經(jīng)由具有每個(gè)為三十二(32)位的長度的指令包(例如,包含一個(gè)或一個(gè)以上表調(diào)用指令180的VLIW指令包)從存儲(chǔ)器102檢索指令??偩€111可耦合到第一指令執(zhí)行單元118、第二指令執(zhí)行單元120、第三指令執(zhí)行單元122,以及第四指令執(zhí)行單元124。每一指令執(zhí)行單元118、120、122和124可經(jīng)由第一總線128耦合到通用寄存器堆126。通用寄存器堆126還可經(jīng)由第二總線130耦合到定序器114、數(shù)據(jù)高速緩沖存儲(chǔ)器112以及存儲(chǔ)器102。
[0025]系統(tǒng)100還可包含監(jiān)督控制寄存器132以及全局控制寄存器134以存儲(chǔ)可由定序器114內(nèi)的控制邏輯存取以確定是否接受中斷(例如,通用中斷116)和控制指令執(zhí)行的位。
[0026]在特定實(shí)施例中,執(zhí)行單元118、120、122和124中的任一者可執(zhí)行表調(diào)用指令180以產(chǎn)生操作碼和操作數(shù)。所述操作碼可指示正被處理的指令是表調(diào)用指令且所述操作數(shù)可指定立即值或存儲(chǔ)所述立即值的寄存器指示符。所述立即值可用作到表190中的索引(例如,用以識(shí)別用于待調(diào)用的特定函數(shù)的地址)。在特定實(shí)施例中,表調(diào)用指令180的大小可小于或等于24位、16位或8位。多個(gè)表調(diào)用指令180可包含在VLIW包中且可由執(zhí)行單元118、120、122和124在同一時(shí)鐘周期中并行執(zhí)行。
[0027]因此圖1的系統(tǒng)100說明可用比通用函數(shù)調(diào)用、分支指令或跳轉(zhuǎn)指令少的位創(chuàng)建的表調(diào)用指令180,其得到代碼大小的總體減小以及歸因于代碼大小減小的功率消耗減少。
[0028]圖2到4描繪了在圖1的系統(tǒng)100的操作的三個(gè)實(shí)例。參考圖2,揭示了在圖1的系統(tǒng)100的操作的第一說明性實(shí)例并且大體上將所述實(shí)例指定為200。
[0029]在操作期間,圖1的執(zhí)行單元118、120、122或124中的特定一者可執(zhí)行表調(diào)用指令180以產(chǎn)生操作碼282和操作數(shù)284,所述操作數(shù)指定存儲(chǔ)立即值244(例如,‘4’ )的寄存器240(例如,Rl)的寄存器指示符。在圖2所說明的實(shí)施例中,表調(diào)用指令180是一字節(jié)指令(即,8位),其中4位表示操作碼282且4位表示操作數(shù)284 (即,4位寄存器指示符)。舉例來說,所述4位操作數(shù)可指定16 (即,24)個(gè)寄存器中可存儲(chǔ)立即值的一個(gè)寄存器,其中所述立即值表示到函數(shù)調(diào)用地址的16條目表190的索引?;蛘?,4位操作數(shù)可直接指定立即值,如在圖3到4中所示。因此,包含16(即,24)個(gè)經(jīng)頻繁調(diào)用函數(shù)的函數(shù)調(diào)用地址表190可使用4位操作數(shù)284來標(biāo)引。在特定實(shí)施例中,所述函數(shù)調(diào)用地址可按依次遞減的順序存儲(chǔ),其中索引O對(duì)應(yīng)于最經(jīng)頻繁調(diào)用函數(shù)(例如,圖2中的“memcpy”,其具有函數(shù)調(diào)用地址0x1111)。
[0030]表190可在鏈接時(shí)間期間或在編譯時(shí)間創(chuàng)建。在特定實(shí)施例中,表190可在應(yīng)用程序執(zhí)行期間動(dòng)態(tài)更新。舉例來說,執(zhí)行單元118到124中的任一者可動(dòng)態(tài)地更新表190。在另一特定實(shí)施例中,表190可為固定的。在從操作數(shù)284產(chǎn)生立即值244(例如,‘4’)之后(例如,在寄存器存取之后),函數(shù)調(diào)用地址(例如,0x5555)可基于立即值‘4’而識(shí)別。圖1的特定執(zhí)行單元118到124可跳轉(zhuǎn)到所識(shí)別的函數(shù)調(diào)用地址。舉例來說,跳轉(zhuǎn)到函數(shù)調(diào)用地址0x5555可包含獲取或預(yù)先獲取“_restore_regs_return”函數(shù)的一個(gè)或一個(gè)以上指令(例如,起始于地址0x5555)到圖1的指令高速緩沖存儲(chǔ)器110中。在特定實(shí)施例中,跳轉(zhuǎn)到函數(shù)調(diào)用地址在表調(diào)用指令180的處理期間發(fā)生。
[0031]因此將理解,函數(shù)越常用,在使用表調(diào)用指令180調(diào)用所述函數(shù)時(shí)的代碼節(jié)省越多。舉例來說,對(duì)“_restore_regs_return”函數(shù)的通用調(diào)用可包含至少32個(gè)位,包含8個(gè)操作碼位以及表示十六進(jìn)制地址0x5555 (即,_restore_regs_return函數(shù)的地址)的24個(gè)位。通過用表調(diào)用指令180來替換通用調(diào)用,可實(shí)現(xiàn)每次調(diào)用的24位的節(jié)省。
[0032]參考圖3,揭示了在圖1的系統(tǒng)100的操作的第二說明性實(shí)例且大體上將所述實(shí)例指定為300。在操作期間,圖1的執(zhí)行單元118、120、122或124中的特定一者可執(zhí)行表調(diào)用指令180以產(chǎn)生操作碼282和操作數(shù)384,所述操作數(shù)指定立即值(例如,‘5’)。在圖3所說明的實(shí)施例中,表調(diào)用指令180是二字節(jié)指令(即,16位),其中4位表示操作碼282且12位表示指定立即值的操作數(shù)384( BP, 12位表索引)。因此,表190可包含4096( SP,212)個(gè)經(jīng)頻繁調(diào)用函數(shù)且可使用12位立即值384來標(biāo)引。舉例來說,如在圖3中所說明的,4096個(gè)經(jīng)頻繁調(diào)用函數(shù)可按依次遞減的順序存儲(chǔ),其中索引O對(duì)應(yīng)于最經(jīng)頻繁調(diào)用的函數(shù)(例如,圖3中的“memcpy”,其具有函數(shù)調(diào)用地址0x1111)。[0033]圖3說明一實(shí)施例,其中表190是使用全局指針392存取的。舉例來說,表190可存儲(chǔ)在全局偏移表中,所述全局偏移表存儲(chǔ)在存儲(chǔ)器的全局?jǐn)?shù)據(jù)部分內(nèi)。所述全局偏移表可支持位置獨(dú)立的代碼執(zhí)行。全局指針392可指向表190的第一元素,如圖3中所說明的。通過操作數(shù)384指定的立即值可用作從全局指針392的偏移。舉例來說,立即值可為‘5’且表索引386可通過將‘ 5 ’添加到全局指針392從而導(dǎo)致從表190的函數(shù)調(diào)用地址0x6666 (例如,對(duì)應(yīng)于“debugjnsg”函數(shù))的檢索來識(shí)別。全局指針392可識(shí)別存儲(chǔ)器102的全局?jǐn)?shù)據(jù)部分中對(duì)應(yīng)于表190的頂部的位置。另外,表190可為存儲(chǔ)在存儲(chǔ)器102中的全局偏移表內(nèi)的可選擇函數(shù)調(diào)用表且所述立即值可與所述可選擇函數(shù)調(diào)用表的表索引相關(guān)聯(lián)。全局偏移表可支持位置獨(dú)立的代碼執(zhí)行(即,在鏈接時(shí)間不知道符號(hào)的地址的情況下建構(gòu)的代碼,例如,用于共享庫)。
[0034]如圖3所示,特定表索引386可通過使用立即值(例如,5)作為相對(duì)于由全局指針392表示的索引(例如,O)的偏移(例如,從全局指針392的正偏移)來計(jì)算。為了說明,表索引386可為立即值加上全局指針392,如圖3所示。圖1的特定執(zhí)行單元118到124可跳轉(zhuǎn)到所識(shí)別的函數(shù)調(diào)用地址。舉例來說,跳轉(zhuǎn)到函數(shù)調(diào)用地址0x6666可包含獲取或預(yù)先獲取“debug_msg”函數(shù)的一個(gè)或一個(gè)以上指令(例如,起始于地址0x6666)到圖1的指令高速緩沖存儲(chǔ)器110中。在特定實(shí)施例中,跳轉(zhuǎn)到函數(shù)調(diào)用地址在表調(diào)用指令180的處理期間發(fā)生。
[0035]參考圖4,揭示了在圖1的系統(tǒng)100的操作的第三實(shí)例且大體上將所述實(shí)例指定為400。與圖3中所說明的實(shí)施例相比,圖4中所說明的實(shí)施例描繪了存儲(chǔ)器中指向鄰近于但不包含表190的位置的全局指針392。
[0036]全局指針392可識(shí)別(即,指向)存儲(chǔ)器102的與表190不相關(guān)的全局?jǐn)?shù)據(jù)部分。舉例來說,全局指針可指向索引位置0,所述索引位置與表190不相關(guān)且存儲(chǔ)全局?jǐn)?shù)據(jù)(例如,“global datal”)的地址(例如,地址OxAAAA)。如圖4中所示,可通過使用立即值(例如,4)作為從全局指針392的偏移(例如,負(fù)偏移)來計(jì)算特定的表索引486。在此實(shí)施例中,可從全局指針392值中減去立即值以找到特定函數(shù)調(diào)用地址的位置。
[0037]為了說明,立即值可為‘4’,且函數(shù)調(diào)用地址0x2222(例如,對(duì)應(yīng)于“_save_callee.regs"函數(shù))可通過從全局指針392值減去立即值(即,‘4’ )來識(shí)別。處理表調(diào)用指令180的圖1的特定執(zhí)行單元118到124隨后可跳轉(zhuǎn)到所識(shí)別函數(shù)調(diào)用地址。舉例來說,跳轉(zhuǎn)到函數(shù)調(diào)用地址0x4444可包含將“_save_callee_regs”函數(shù)的指令(例如,起始于地址0x4444)獲取或預(yù)先獲取到圖1的指令高速緩沖存儲(chǔ)器110中。
[0038]因此圖2到4描繪了處理表調(diào)用指令的各種實(shí)例。當(dāng)表調(diào)用指令的大小小于用以識(shí)別表調(diào)用指令的地址(例如,可存儲(chǔ)在當(dāng)前指令指針中的調(diào)用表190的指令的地址)與用于所識(shí)別函數(shù)的函數(shù)調(diào)用地址之間的差的位數(shù)目時(shí),可實(shí)現(xiàn)較致密的或較小的代碼大小。為了說明,如果表調(diào)用指令與所識(shí)別函數(shù)的地址隔開了超過2兆字節(jié)(S卩,距離不能以24位或更少的位表示),那么在表調(diào)用指令的大小為24位或更小的情況下表調(diào)用指令可導(dǎo)致較致密的代碼。相對(duì)于多字指令,表調(diào)用指令的大小可小于多字指令的執(zhí)行函數(shù)調(diào)用的部分的地址與經(jīng)調(diào)用函數(shù)的地址之間的差。因此,操作碼和立即值的組合長度可比通用函數(shù)調(diào)用指令短,從而導(dǎo)致指令高速緩沖存儲(chǔ)器的性能得到改進(jìn)、用于調(diào)用函數(shù)的帶寬得到節(jié)省以及裝置中的功率消耗減少。[0039]參考圖5,描繪了處理指令以產(chǎn)生操作碼和操作數(shù)的方法的特定說明性實(shí)施例的流程圖,并且所述方法大體上指定為500。在說明性實(shí)施例中,方法500可在圖1的系統(tǒng)100執(zhí)行且可參考圖2到4進(jìn)行說明。
[0040]方法500可包含在510處在處理元件處接收指令。舉例來說,在圖1中,表調(diào)用指令180可在執(zhí)行單元118到124中的一者處接收。方法500還可包含在520處處理所述指令以產(chǎn)生操作碼和操作數(shù),所述操作數(shù)指定立即值或存儲(chǔ)所述立即值的寄存器指示符。舉例來說,在圖1中,表調(diào)用指令180可由執(zhí)行單元118到124中的一者處理以產(chǎn)生操作碼和操作數(shù)(例如,在指令解碼階段期間)。在說明性實(shí)施例中,所述操作碼可為圖2到4的4位操作碼282且所述操作數(shù)可為圖2的4位操作數(shù)284或圖3到4的12位操作數(shù)384。
[0041]方法500可進(jìn)一步包含在530處使用立即值作為到表中的索引以識(shí)別用于函數(shù)的地址。所述表可存儲(chǔ)用于經(jīng)頻繁調(diào)用函數(shù)的地址。舉例來說,在圖1中,可通過使用表調(diào)用指令180的立即值作為表索引從經(jīng)頻繁調(diào)用函數(shù)的表190檢索地址。在特定實(shí)施例中,所述立即值可為到表190中的直接索引,如在圖2中所說明?;蛘?,所述索引可通過使用立即值作為相對(duì)于全局指針的偏移來計(jì)算,如在圖3到4中所說明。方法500還可包含在540處跳轉(zhuǎn)到用于函數(shù)的地址。隨后可執(zhí)行所述函數(shù),如同已使用通用函數(shù)調(diào)用指令調(diào)用了所述函數(shù)。
[0042]參考圖6,描繪了包含存儲(chǔ)器的無線裝置的特定說明性實(shí)施例的方框圖,所述存儲(chǔ)器存儲(chǔ)包含操作碼和操作數(shù)的指令,且大體上將所述實(shí)施例指定為600。裝置600包含處理器,例如,耦合到存儲(chǔ)器632的數(shù)字信號(hào)處理器(DSP) 664。指令高速緩沖存儲(chǔ)器(例如,說明性指令高速緩沖存儲(chǔ)器110)和數(shù)據(jù)高速緩沖存儲(chǔ)器(例如,說明性數(shù)據(jù)高速緩沖存儲(chǔ)器112)也可耦合到存儲(chǔ)器632且耦合到DSP664。在特定實(shí)施例中,存儲(chǔ)器632將例如表調(diào)用指令180等可由DSP664執(zhí)行的指令存儲(chǔ)且傳輸?shù)街噶罡咚倬彌_存儲(chǔ)器110。在處理時(shí),表調(diào)用指令180可產(chǎn)生操作數(shù)(例如,立即值),所述操作數(shù)被用作索引以從存儲(chǔ)在數(shù)據(jù)高速緩沖存儲(chǔ)器112中的經(jīng)頻繁調(diào)用函數(shù)的表190檢索特定的函數(shù)調(diào)用地址。在檢索特定的函數(shù)調(diào)用地址后,DSP664或其組件可即刻跳轉(zhuǎn)到特定的函數(shù)調(diào)用地址(例如,以開始執(zhí)行對(duì)應(yīng)的函數(shù))。
[0043]圖6還展示耦合到DSP664且耦合到顯示器628的顯示器控制器626。譯碼器/解碼器(CODEC) 634也可耦合到DSP664。揚(yáng)聲器636和麥克風(fēng)638可耦合到C0DEC634。圖6還指示可耦合到DSP664且耦合到無線天線642的無線控制器640。在特定的實(shí)施例中,DSP664、顯示器控制器626、存儲(chǔ)器632、C0DEC634和無線控制器640包含于系統(tǒng)級(jí)封裝或芯片上系統(tǒng)裝置622中。
[0044]在特定的實(shí)施例中,輸入裝置630和電源644耦合到芯片上系統(tǒng)裝置622。此外,在特定的實(shí)施例中,如圖6中所說明,顯示器628、輸入裝置630、揚(yáng)聲器636、麥克風(fēng)638、無線天線642和電源644在芯片上系統(tǒng)裝置622外部。然而,顯示器628、輸入裝置630、揚(yáng)聲器636、麥克風(fēng)638、無線天線642和電源644中的每一者可耦合到芯片上系統(tǒng)裝置622的組件,例如接口或控制器。
[0045]應(yīng)注意雖然圖6描繪了無線通信裝置,但DSP664和存儲(chǔ)器632也可集成到機(jī)頂盒、音樂播放器、視頻播放器、娛樂單元、導(dǎo)航裝置、個(gè)人數(shù)字助理(PDA)、固定位置數(shù)據(jù)單元或計(jì)算機(jī)中。處理器(例如,包含圖1的執(zhí)行單元118、120、122和124)也可集成到此裝置中。
[0046]結(jié)合所描述的實(shí)施例,揭示了包含用于存儲(chǔ)包含操作碼和操作數(shù)的指令的裝置的設(shè)備。舉例來說,所述用于存儲(chǔ)的裝置可為圖1的存儲(chǔ)器102、圖6的存儲(chǔ)器632、圖1和圖6的指令高速緩沖存儲(chǔ)器110、經(jīng)配置以存儲(chǔ)指令的一個(gè)或一個(gè)以上其它裝置,或其任何組
八
口 ο
[0047]所述設(shè)備還可包含用于處理所述指令以產(chǎn)生操作碼和操作數(shù)的裝置。所述操作數(shù)可指定立即值或存儲(chǔ)所述立即值的寄存器的寄存器指示符。舉例來說,所述用于處理的裝置可包含圖1的執(zhí)行單元118、120、122和124、圖6的DSP664、經(jīng)配置以處理指令的一個(gè)或一個(gè)以上裝置或其任何組合中的一者或一者以上。
[0048]所述設(shè)備可進(jìn)一步包含用于將多個(gè)函數(shù)調(diào)用地址存儲(chǔ)在表中的裝置。舉例來說,所述用于存儲(chǔ)的裝置可為圖1的存儲(chǔ)器102、圖6的存儲(chǔ)器632、圖1和圖6的數(shù)據(jù)高速緩沖存儲(chǔ)器112、經(jīng)配置以將多個(gè)函數(shù)調(diào)用地址存儲(chǔ)在表中的一個(gè)或一個(gè)以上其它裝置,或其任何組合。
[0049]所述設(shè)備可進(jìn)一步包含用于動(dòng)態(tài)更新所述表的裝置。舉例來說,所述用于動(dòng)態(tài)更新的裝置可為圖1的執(zhí)行單元118到124、經(jīng)配置以動(dòng)態(tài)更新函數(shù)地址表的一個(gè)或一個(gè)以上其它裝置,或其任何組合。
[0050]所屬領(lǐng)域的技術(shù)人員將進(jìn)一步了解,可將結(jié)合本文所揭示的實(shí)施例而描述的各種說明性邏輯塊、配置、模塊、電路和算法步驟實(shí)施為電子硬件、計(jì)算機(jī)軟件或兩者的組合。上文已大體在功能性方面描述各種說明性組件、塊、配置、模塊、電路和步驟。所述功能性是實(shí)施為硬件還是軟件取決于特定應(yīng)用及施加于整個(gè)系統(tǒng)的設(shè)計(jì)約束。所屬領(lǐng)域的技術(shù)人員可針對(duì)每一特定應(yīng)用以不同方式實(shí)施所描述功能性,但所述實(shí)施決策不應(yīng)被解釋為導(dǎo)致偏離本發(fā)明的范圍。
[0051]結(jié)合本文中所揭示的實(shí)施例描述的方法或算法的步驟可直接包含于硬件中、由處理器執(zhí)行的軟件模塊中或所述兩者的組合中。軟件模塊可駐留于隨機(jī)存取存儲(chǔ)器(RAM)、快閃存儲(chǔ)器、只讀存儲(chǔ)器(ROM)、可編程只讀存儲(chǔ)器(PROM)、可擦除可編程只讀存儲(chǔ)器(EPROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、寄存器、硬盤、可裝卸式磁盤、壓縮光盤只讀存儲(chǔ)器(CD-ROM),或此項(xiàng)技術(shù)中已知的任何其它形式的存儲(chǔ)媒體。示范性非暫時(shí)性(例如,有形)存儲(chǔ)媒體耦合到處理器,使得處理器可從存儲(chǔ)媒體讀取信息和將信息寫入到存儲(chǔ)媒體。在替代方案中,存儲(chǔ)媒體可與處理器成一體。處理器及存儲(chǔ)媒體可駐留在專用集成電路(ASIC)中。ASIC可駐留在計(jì)算裝置或用戶終端中。在替代方案中,處理器及存儲(chǔ)媒體可作為離散組件駐留在計(jì)算裝置或用戶終端中。
[0052]提供所揭示實(shí)施例的先前描述以使得所述領(lǐng)域的技術(shù)人員能夠制作或使用所揭示的實(shí)施例。對(duì)于所屬領(lǐng)域的技術(shù)人員來說,對(duì)這些實(shí)施例的各種修改將為顯而易見的,且可在不偏離本發(fā)明的范圍的情況下將本文中所定義的原理應(yīng)用于其它實(shí)施例。因此,本發(fā)明無意限于本文中所展示的實(shí)施例,而是將賦予本發(fā)明與如由所附權(quán)利要求書界定的原理和新穎特征一致的可能的最廣范圍。
【權(quán)利要求】
1.一種設(shè)備,其包括: 存儲(chǔ)指令的存儲(chǔ)器,所述指令包含操作碼和操作數(shù), 其中所述操作數(shù)指定: 立即值;或 存儲(chǔ)所述立即值的寄存器的寄存器指示符,且 其中所述立即值可用以識(shí)別可從多個(gè)函數(shù)調(diào)用地址中選擇的函數(shù)調(diào)用地址。
2.根據(jù)權(quán)利要求1所述的設(shè)備,其中所述立即值是整數(shù)。
3.根據(jù)權(quán)利要求1所述的設(shè)備,其中所述指令不同于分支指令和跳轉(zhuǎn)指令。
4.根據(jù)權(quán)利要求1所述的設(shè)備,其中所述多個(gè)函數(shù)調(diào)用地址中的每一者與對(duì)應(yīng)的可執(zhí)行函數(shù)相關(guān)聯(lián)。
5.根據(jù)權(quán)利要求1所述的設(shè)備,其中所述多個(gè)函數(shù)調(diào)用地址存儲(chǔ)在表中。
6.根據(jù)權(quán)利要求5所述的設(shè)備,其進(jìn)一步包括動(dòng)態(tài)加載和更新所述表的處理器,其中存儲(chǔ)在所述表中的所述多個(gè)函數(shù)調(diào)用地址對(duì)應(yīng)于由所述處理器頻繁調(diào)用的函數(shù)。
7.根據(jù)權(quán)利要求5所述的設(shè)備,其中所述表是固定的。
8.根據(jù)權(quán)利要求5所述的設(shè)備,其中所述表存儲(chǔ)在所述存儲(chǔ)器中或高速緩沖存儲(chǔ)器中。
9.根據(jù)權(quán)利要求5所述的設(shè)備,其中所述表的位置是相對(duì)于全局指針確定的。
10.根據(jù)權(quán)利要求9所述的設(shè)備,其中所述全局指針另外識(shí)別所述存儲(chǔ)器內(nèi)的全局?jǐn)?shù)據(jù)部分。
11.根據(jù)權(quán)利要求1所述的設(shè)備,其中所述指令的大小小于識(shí)別所述指令的地址與用于所述所識(shí)別函數(shù)的所述函數(shù)調(diào)用地址之間的差所需的位數(shù)目。
12.根據(jù)權(quán)利要求11所述的設(shè)備,其中所述指令的所述大小小于或等于24位、16位或8位。
13.根據(jù)權(quán)利要求1所述的設(shè)備,其中所述存儲(chǔ)器進(jìn)一步在全局偏移表內(nèi)存儲(chǔ)函數(shù)調(diào)用表且其中所述立即值與所述函數(shù)調(diào)用表的表索引相關(guān)聯(lián)。
14.根據(jù)權(quán)利要求13所述的設(shè)備,其中所述全局偏移表支持位置獨(dú)立的代碼執(zhí)行。
15.根據(jù)權(quán)利要求1所述的設(shè)備,其進(jìn)一步包括從由以下各項(xiàng)組成的群組選擇的裝置:機(jī)頂盒、音樂播放器、視頻播放器、娛樂單元、導(dǎo)航裝置、通信裝置、個(gè)人數(shù)字助理PDA、固定位置數(shù)據(jù)單元和計(jì)算機(jī),所述存儲(chǔ)器集成到所述裝置中。
16.—種方法,其包括: 在處理元件處處理指令以產(chǎn)生操作碼和操作數(shù),其中所述操作碼識(shí)別表函數(shù)調(diào)用指令,其中所述操作數(shù)指定: 立即值;或 存儲(chǔ)所述立即值的寄存器的寄存器指示符, 其中所述立即值可用以識(shí)別可從多個(gè)函數(shù)調(diào)用地址中選擇的函數(shù)調(diào)用地址;以及 使用所述立即值作為到表中的索引以識(shí)別所述函數(shù)調(diào)用地址。
17.根據(jù)權(quán)利要求16所述的方法,其中所述表中的每一函數(shù)調(diào)用地址對(duì)應(yīng)于不同的函數(shù)。
18.根據(jù)權(quán)利要求16所述的方法,其進(jìn)一步包括跳轉(zhuǎn)到所述所識(shí)別函數(shù)調(diào)用地址。
19.根據(jù)權(quán)利要求18所述的方法,其中所述跳轉(zhuǎn)在所述指令的所述處理期間發(fā)生。
20.一種包含程序代碼的非暫時(shí)性計(jì)算機(jī)可讀媒體,所述程序代碼在由處理器執(zhí)行時(shí)致使所述處理器: 從指令代碼產(chǎn)生操作碼和操作數(shù),其中所述操作碼識(shí)別表函數(shù)調(diào)用指令,且 其中所述操作數(shù)指定: 立即值;或 存儲(chǔ)所述立即值的寄存器的寄存器指示符, 其中所述立即值可用以識(shí)別可從多個(gè)函數(shù)調(diào)用地址中選擇的函數(shù)調(diào)用地址; 使用所述立即值作為到表中的索引以識(shí)別所述函數(shù)調(diào)用地址;以及 跳轉(zhuǎn)到所述所識(shí)別函數(shù)調(diào)用地址。
21.根據(jù)權(quán)利要求20所述的非暫時(shí)性計(jì)算機(jī)可讀媒體,其中所述跳轉(zhuǎn)在所述指令代碼的處理期間發(fā)生。
22.—種設(shè)備,其包括: 用于存儲(chǔ)指令的裝置;以及 用于處理所述指令以產(chǎn)生操作碼和操作數(shù)的裝置, 其中所述操作數(shù)指定: 立即值;或 存儲(chǔ)所述立即值的寄存器的寄存器指示符, 其中所述立即值可用以識(shí)別可從多個(gè)函數(shù)調(diào)用地址中選擇的函數(shù)調(diào)用地址,且 其中所述用于處理的裝置跳轉(zhuǎn)到所述所識(shí)別函數(shù)調(diào)用地址。
23.根據(jù)權(quán)利要求22所述的設(shè)備,其進(jìn)一步包括: 用于在表中存儲(chǔ)所述多個(gè)函數(shù)調(diào)用地址的裝置;以及 用于動(dòng)態(tài)更新所述表的裝置。
【文檔編號(hào)】G06F9/30GK103748549SQ201280040631
【公開日】2014年4月23日 申請(qǐng)日期:2012年7月19日 優(yōu)先權(quán)日:2011年7月19日
【發(fā)明者】埃里克·詹姆斯·普隆迪克, 盧奇安·科德雷斯庫, 查爾斯·約瑟夫·塔伯尼, 阿賈伊·阿南特·英格爾, 蘇雷什·K·文庫馬漢提, 埃萬德羅·卡洛斯·梅內(nèi)塞斯 申請(qǐng)人:高通股份有限公司