新四季網

用於存儲熵編碼指令序列及將其翻譯成可執行形式的方法和設備的製作方法

2023-04-29 09:36:51

用於存儲熵編碼指令序列及將其翻譯成可執行形式的方法和設備的製作方法
【專利摘要】一種壓縮程序指令的序列的方法通過檢查程序指令流以識別滿足參數的兩個或兩個以上指令的序列而開始。由選定類型的布局指令替代所述經識別的兩個或兩個以上指令的序列,接著壓縮所述選定類型的布局指令。一種解壓縮方法將X索引和Y索引作為壓縮值一起存取。將所述壓縮值解壓縮為選定類型的布局指令,將所述選定類型的布局指令解碼並用兩個或兩個以上指令的序列替代。一種用於解壓縮的設備包含用於存儲壓縮指令的存儲子系統,其中壓縮指令包括X索引和Y索引。解壓縮器被配置用於將從所述存儲子系統存取的X索引和Y索引翻譯為選定類型的布局指令,將所述選定類型的布局指令解碼並用兩個或兩個以上指令的序列替代。
【專利說明】用於存儲熵編碼指令序列及將其翻譯成可執行形式的方法和設備
[0001]相關串請案的交叉參考
[0002]2011年5月3日申請的標題為「用於存儲和翻譯內嵌在存儲器層級內的熵編碼軟體的方法和設備(Methods and Apparatus for Storage and Translation of EntropyEncoded Software Embedded within a Memory Hierarchy) 」的第 13 / 099,463 號美國專利申請案具有與本申請案相同的受讓人,為相關申請案,且在此全文以引用的方式併入本文中。
【技術領域】
[0003]本發明大體涉及具有用於改進內嵌應用中的代碼密度的壓縮指令集的處理器,且更特定來說涉及用於產生指令序列的經壓縮表示、存儲所述經壓縮指令序列且將所述經壓縮指令序列翻譯為可執行機器解碼程序指令的技術。
【背景技術】
[0004]例如蜂窩式電話、膝上型計算機、個人數字助理(PDA)等許多可攜式產品需要使用執行程序支持通信和多媒體應用的處理器。此類產品的處理系統包含一個或一個以上處理器,每一者具有針對指令、輸入運算數和執行結果的存儲裝置。舉例來說,針對處理器的指令、輸入運算數和執行結果可存儲在由通用寄存器堆、多層指令高速緩衝存儲器、數據高速緩衝存儲器和系統存儲器組成的層級式存儲器子系統中。
[0005]為了提供高代碼密度,可使用原生指令集架構(ISA),其具有兩個指令格式,例如作為32位指令格式的子集的16位指令格式。在許多情況下,所取得的16位指令由處理器在允許執行硬體經設計為僅支持32位指令格式的解碼過程之前或之中變換為32位指令。作為32位指令的子集的16位指令的使用是限制可編碼為16位格式的信息的量的約束。舉例來說,16位指令格式可限制可指定的可尋址源運算數寄存器和目的地寄存器的數目。16位指令格式例如可使用3位或4位寄存器堆地址欄位,而32位指令可使用5位欄位。如果兩個格式在程序中部分歸因於指令尋址約束(例如,形成分支到16位和32位指令)而混合,那麼處理器管線複雜性也可能增加。並且,代碼壓縮的要求依據不同程序而變化,從而使針對一個程序選擇的固定16位指令格式不太有利於由不同程序使用。在此方面,現有處理器的傳統代碼可能不能有效地利用兩個指令格式來顯著改進代碼密度且滿足實時要求。這些和其它約束限制了具有作為標準大小指令中使用的欄位的子集的欄位的縮減大小指令的效力。

【發明內容】

[0006]在本發明的若干方面中,本發明的實施例解決了改進代碼密度的需要,方法是通過壓縮程序指令的序列、存儲經壓縮序列並將所述經壓縮序列翻譯為可執行指令序列。本文提出的技術允許針對內嵌軟體極其有效地利用存儲裝置和發射管道。[0007]為實現此些目的,本發明的一實施例應用一種壓縮程序指令的序列的方法。識別滿足參數的兩個或兩個以上指令的序列。兩個或兩個以上指令的經識別序列由選定類型的布局指令替代。所述選定類型的布局指令經壓縮為壓縮值的X索引和Y索引對。
[0008]本發明的另一實施例提出一種將表示指令序列的壓縮值解壓縮的方法。X索引和Y索引作為壓縮值一起存取。所述壓縮值解壓縮為選定類型的布局指令。將所述選定類型的布局指令解碼以用兩個或兩個以上指令的序列替代所述選定類型的布局指令。
[0009]本發明的另一實施例提出一種用於將表示指令序列的壓縮值解壓縮的設備。存儲子系統經配置用於存儲經壓縮指令,其中經壓縮指令包括X索引和Y索引。解壓縮器經配置用於將從存儲子系統存取的X索引和Y索引翻譯為選定類型的布局指令。解碼器經配置用於用兩個或兩個以上指令的序列替代所述選定類型的布局指令。
[0010]從以下【具體實施方式】和附圖將了解對本發明實施例的更完整理解以及本發明的更多特徵和優點。
【專利附圖】

【附圖說明】
[0011]圖1是其中可有利地採用本發明的實施例的示範性無線通信系統的框圖;
[0012]圖2是根據本發明的實施例經設計用於高效且低成本運行時解壓縮的代碼壓縮系統;
[0013]圖3說明根據本發明的實施例將基於混合掩碼的指令分裂為具有字節重疊填補位的X樣式和Y樣式的指令分割過程的示範性元件;
[0014]圖4是根據本發明的實施例的解壓縮器和執行系統,其中以壓縮形式存儲在層2高速緩衝存儲器和層I高速緩衝存儲器中的程序經解壓縮以供執行;
[0015]圖5說明根據本發明的實施例包括第一未壓縮極長指令字(VLIW)包和第一經壓縮VLIW包的示範性VLIW包格式;
[0016]圖6說明根據本發明的實施例包括第二未壓縮VLIW包、第二 VLIW壓縮包和第三VLIff壓縮包的示範性VLIW包格式;
[0017]圖7說明根據本發明的實施例支持VLIW壓縮包的無操作(NOP)和功能指令組合的示範性列表;
[0018]圖8說明根據本發明的實施例包括包含頻繁使用的指令對的第三未壓縮VLIW包和第四VLIW壓縮包的示範性VLIW包格式;
[0019]圖9A說明根據本發明的實施例用於壓縮程序指令的序列的過程;
[0020]圖9B說明根據本發明的實施例用於將表示壓縮程序指令的序列的壓縮值解碼的過程;以及
[0021]圖10說明根據本發明的實施例的示範性解壓縮狀態圖。
【具體實施方式】
[0022]現將參看附圖更充分描述本發明,附圖中展示本發明的若干實施例。然而,本發明可以各種形式體現且不應解釋為限於本文陳述的實施例。而是,提供這些實施例使得本發明將為詳盡和完整的,且將把本發明的範圍完全傳達給所屬領域的技術人員。
[0023]供在上面操作或用於實行根據本發明的教示的操作的電腦程式代碼或「程序代碼」可初始以例如 C、C++、JAVA?、Smalltalk、JavaScript?、Visual Basic?、TSQL、Perl 等
高級程式語言或以各種其它程式語言編寫。通過使用以原生指令格式編碼的指令將高級程序代碼轉換為原生彙編程序而將以這些語言的一者編寫的源程序或原始碼編譯為目標處理器架構。舉例來說,指令集架構(ISA)的原生指令格式可為固定位數,例如32位格式或16位格式,或可為可變位數,例如32位格式與16位格式的組合。目標處理器架構的程序還可直接以原生彙編語言編寫。原生彙編程序使用機器級二進位指令的指令助記符表示。如本文使用的編譯器或人類編程員產生的程序代碼或計算機可讀媒體指代例如格式可由處理器理解的目標代碼等機器語言代碼。
[0024]圖1說明其中可有利地採用本發明的實施例的示範性無線通信系統100。出於說明的目的,圖1展示三個遠程單元120、130和150以及兩個基站140。將認識到,常見無線通信系統可具有更多遠程單元和基站。包含如分別由組件125A、125C、125B和12?表示的硬體組件、軟體組件或兩者的遠程單元120、130、150以及基站140已經過調適以體現如下文進一步論述的本發明。圖1展示從基站140到遠程單元120、130和150的前向鏈路信號180,以及從遠程單元120、130和150到基站140的反向鏈路信號190。
[0025]在圖1中,遠程單元120展示為行動電話,遠程單元130展示為可攜式計算機,且遠程單元150展示為無線本地迴路系統中的固定位置遠程單元。藉助實例,遠程單元或者可為蜂窩式電話、尋呼機、對講機、手持式個人通信系統(PCS)單元、例如個人數字助理等可攜式數據單元,或例如儀表讀取設備等固定位置數據單元。儘管圖1說明根據本發明的教示的遠程單元,但本發明不限於這些示範性的所說明的單元。本發明的實施例可適當地用於任何處理器系統中。
[0026]圖2是根據本發明的實施例的經設計用於高效且低成本運行時解壓縮的用於代碼壓縮的壓縮系統200。壓縮系統200包含如上文描述的原始碼和原始碼中呈未壓縮形式的二進位庫文件,以及包括正編譯的當前程序應用的庫文件204。壓縮系統200還包含編譯器和連結器206以及任選的簡檔反饋信息208,其用於基於原生指令集架構(ISA)格式和支持的數據區段212產生連結的可執行代碼210。原生ISA由固定未壓縮格式表示且可表示多種方法,包含(例如)固定64或32或16位編碼以及此些編碼的混合。原生ISA是針對通常效用開發且並非特定為特定應用定製。通過維持固定字邊界(例如,32位指令字邊界),儘管16位和32位指令可一起混合在代碼中,但也可使用僅支持分支、調用、返回等的固定字地址的尋址模型。
[0027]從此ISA選擇的指令可依據當前應用壓縮和定製,同時維持代碼的可尋址性且保證快速、固定的等待解壓縮時間。此壓縮可經自動化以在線性時間內產生經壓縮代碼。原生ISA具有低信息熵,其根據本發明的實施例通過針對給定原始碼和庫文件204產生定製熵限界編碼而增加。當前上下文中的信息熵被界定為程序的當前表示中的信息內容的量度。信息熵可視為使用原生指令符號的程序的當前表示與使用壓縮符號的程序的最短可能表示(其保留了程序的原始功能性)之間的比率。用於產生壓縮程序的字母表的粒度處在個別字節等級,作為計算系統中的極微小可存儲且可尋址實體。兩種程序表示中保留的信息內容為程序的原始功能性。舉例來說,熵「I」可以其最短可能表示形式表示一個特定確切程序。具有小於「I」的熵的程序指示可支持一個以上程序,且可能可支持非常大數目的程序,這需要存儲器中增加的存儲容量。[0028]在圖2中,提供連結的可執行代碼210作為到翻譯工具216的輸入,翻譯工具216產生經壓縮代碼218和解碼錶220。經壓縮代碼218和支持數據區段212存儲在存儲裝置214中,例如硬碟、光碟、內嵌式裝置的快閃記憶體,或可從其將選定代碼提供到處理器複合體203以供執行的其它此類存儲媒體。處理器複合體203包含主存儲器222、層2高速緩衝存儲器(L2高速緩衝存儲器)224、層I指令高速緩衝存儲器(LI高速緩衝存儲器)226和處理器核心228。處理器核心228包含具有根據實施例的翻譯存儲器(TM) 232和執行管線234的解碼器230。經壓縮代碼存儲在存儲裝置214、主存儲器222、L2高速緩衝存儲器224和LI高速緩衝存儲器226中。經解壓縮代碼通常從LI高速緩衝存儲器226取得且由執行管線234執行。下文更詳細描述用於產生經壓縮代碼218且用於在解碼器230中解碼經壓縮指令的翻譯工具216的各個實施例。
[0029]處理器複合體203可適當地用於圖1的組件125A-125D中,用於執行以經壓縮形式存儲在Lllcache226、L2高速緩衝存儲器224和主存儲器222中的程序代碼。為了論述的清晰,未展示可連接到處理器複合體的外圍裝置。處理器核心228可為通用處理器、數位訊號處理器(DSP)、專用處理器(ASP)等。處理器複合體203的各個組件可使用專用集成電路(ASIC)技術、現場可編程門陣列(FPGA)技術或其它可編程邏輯、離散門或電晶體邏輯,或適於既定應用的任何其它可用的技術實施。儘管展示單一處理器核心228,但本發明的實施例的壓縮指令的處理適用於超標量設計和實施並行管線的其它架構,例如多線程、多核心,和極長指令字(VLIW)設計。
[0030]圖3說明根據本發明的實施例將基於二進位混合掩碼(MM) 304的原生ISA固定大小指令A302分裂為具有重疊填補位310和312的Ax樣式306和Ay樣式308的指令分割過程的示範性元件300。填補位歸因於現代存儲器系統強加的要求而產生,以至少以字節粒度片段表示指令和數據。具有字節粒度片段的格式的使用用於提供壓緊表示,從而允許位粒度上的存儲重疊,同時滿足存儲系統的字節粒度要求。
[0031]為壓縮原生ISA代碼片段,將代碼片段分割為指令群組,每一群組貢獻單一共享X樣式和一組唯一 Y樣式。Ax樣式306表不對於指令A所屬的指令群組為共同的位樣式。Ay樣式308表示體現原生指令A302與Ax樣式306之間的差異的位樣式。注意,代碼片段可分割為I與N之間的任何數目的群組,其中N為代碼片段中的原生指令的數目。代碼片段的X樣式存儲在包括X存儲器的X詞典中,且代碼片段的Ay樣式存儲在包括Y存儲器的Y詞典中。X索引是X存儲器中的位置的地址,且Y索引是Y存儲器中的位置的地址。這兩個索引、來自X和Y詞典的樣式以及二進位混合掩碼的組合確切地表示原生指令。
[0032]壓縮操作314使用代碼片段的至少一個混合掩碼304從原生指令302選擇Ax樣式306和Ay樣式308。在以下實例中,十六進位數字或hex數字用「Ox」前綴表示。舉例來說,原生指令302 [0x9F6D0121]與混合掩碼304 [0xFF80FF80]組合以產生Ax樣式306 [0x9F00 (8,9,A, B)]和Ay樣式308[0xDA8(4,5,6,7)]。括號中的數字(例如,(8,9, A,B))表示由於重疊填補位310的兩個「無關」狀態的緣故可從其選擇一個數字以用於特定4位位置的可能數字的集合。解碼器228解壓縮操作316使用代碼片段的所述至少一個混合掩碼、X索引取得的X存儲器樣式和Y索引取得的Y存儲器樣式來解壓縮經壓縮指令。舉例來說,混合掩碼304[0xFF80FF80]與從X存儲器取得的Ax樣式306,[0x9F00 (8,9,A,B)]以及從Y存儲器取得的Ay樣式308,[0xDA8 (4,5,6,7)]組合,以產生原生指令302 [0x9F6D0121]。[0033]如上文描述,X樣式和Y樣式分別存儲在字節可尋址X存儲器和字節可尋址Y存儲器中。X樣式、Y樣式或兩者的索引壓縮利用一過程,所述過程消除副本X樣式和副本Y樣式且使填補位重疊(例如,字節可尋址位置中的重疊填補位310和312),因此減少物理存儲裝置的雙重利用。利用單一混合掩碼,所有X樣式具有相同數目的位,且所有Y樣式具有相同數目的位。在不同混合掩碼的情況下,有可能具有針對每一原生指令的多種不同X和Y樣式。然而,混合掩碼的僅幾個組合通常提供原生ISA代碼片段與經壓縮代碼片段之間的映射(相對於所測試混合掩碼組合的數目佔用最小存儲空間)。產生需要低存儲容量的經壓縮代碼的單一混合掩碼視為近似最佳混合掩碼。
[0034]圖4是根據本發明的實施例的解壓縮器和執行系統400,其中以壓縮形式存儲在L2高速緩衝存儲器224和LI高速緩衝存儲器226中的程序經解壓縮以供在執行管線234中執行。LI高速緩衝存儲器226包含XY索引存儲器402,其將X索引和Y索引對存儲在可尋址位置中,例如具有7位X索引值0x54和9位Y索引值0x134的XY條目404。多路復用器405用於選擇關於LI高速緩衝存儲器命中406的XY條目,或關於LI高速緩衝存儲器226中的未中的來自L2高速緩衝存儲器224的XY值407。在LI高速緩衝存儲器226和L2高速緩衝存儲器224兩者中的未中的情況下,使用多路復用器經由路徑403從主存儲器選擇XY條目。在具有索引X寄存器408、索引Y寄存器410、X存儲器412、Y存儲器414、單一掩碼(MM)寄存器416和組合器418的解碼器230中實現解壓縮操作。解壓縮指令存儲裝置419包含多個未經壓縮指令420,其可包含選定類型的布局指令,如下文更詳細描述。
[0035]在程序加載時或在內嵌式系統啟動過程中,主存儲器222被加載上壓縮代碼,X存儲器412和Y存儲器414被加載上相關聯X和Y詞典上下文,且單一二進位混合掩碼在MM寄存器416中設定。注意,X和Y存儲器上下文以及混合掩碼可視需要在執行期間再加載。舉例來說,再加載可允許將原始代碼壓縮為多個片段,每一片段具有其自身的定製編碼。舉例來說,一些複雜的內嵌式系統(例如,智慧型電話)可從主應用調用多個獨立的子過程,所述子過程不共享代碼空間且為自含式的。每一此應用可具有其自身的包括X / Y詞典和MM的定製編碼,其在子過程啟動時加載。對於描述的剩餘部分,使用具有用於包含任何應用代碼的整個系統的圖2的單一翻譯存儲器232和單一編碼的解碼器230來描述解壓縮器系統400。
[0036]接下來,執行管線234開始從Lllcache226取得指令。首先,對LlIcache的每次存取可產生未中指示422,從而致使對L2高速緩衝存儲器224的存取。首先,對L2高速緩衝存儲器224的存取也可產生未中,從而致使對圖2的主存儲器222的存取,主存儲器222以在L2高速緩衝存儲器224中加載且經由多路復用器405在路徑403上轉發到解碼器230的經壓縮指令響應。解碼器230將XY索引壓縮指令解壓縮為未壓縮格式以供存儲在解壓縮指令存儲裝置419中且供在執行管線234中執行,如相對於圖3的解壓縮操作316描述。在操作周期之後,Lllcache226和L2高速緩衝存儲器224可達到穩定狀態。
[0037]從處理器的角度來說,執行管線234嘗試取得操作,在Lllcache226中搜索指令的取得地址和控制信號421。Lllcache226可確定指令存在。LI高速緩衝存儲器取得操作例如是針對XY條目404,其是LI高速緩衝存儲器226中的命中,從而致使XY條目404經由多路復用器405傳遞到解碼器230。XY條目404分裂,其中X索引值0x54在索引X寄存器408中接收,且Y索引值0x134在索引Y寄存器410中接收。在地址0x54處從X存儲器412取得的X樣式306提供到組合器418。在地址0x134處從Y存儲器414取得的Y樣式308也提供到組合器418。存儲在MM寄存器416中的單一混合掩碼(MM) 304 [0xFF80FF80]進一步提供到組合器418。組合器418根據MM304將來自X樣式306的適當位與來自Y樣式308的適當位組合以產生原生指令302,原生指令302存儲在解壓縮指令存儲裝置419中且傳遞到執行管線234。
[0038]在所描述的系統中,程序內容以暗示加密格式存儲。儘管不對指令流執行特定加密類型的數據加擾,但程序代碼以應用特定和壓縮形式存儲在存儲裝置214、主存儲器222,12高速緩衝存儲器224和LI高速緩衝存儲器226中。由於程序代碼的經編碼狀態的一部分駐留在翻譯存儲器232中的處理器核心228(其在最終產品中不容易從外部存取)內部,所以存儲裝置214以及上部存儲器層級222、224和226內容不足以恢復原始程序,從而使得難以分析或複製。
[0039]VLIW架構為指令集架構(ISA)設計者提出若干挑戰。舉例來說,每一VLIW包包括多個指令,每一指令通常綁定到特定執行單元且並行執行。控制轉移粒度依據定義是整個VLIW包。此VLIW包的中部可能不存在跳躍目標。在一種方法中,VLIW包可使用針對每一指令的唯一編碼存儲在存儲器中以確定性地識別包中的每一指令。但由於VLIW內編碼的指令理應是並行執行的,所以具有完全編碼32位指令例如可能浪費存儲空間且解碼起來較慢因此影響性能。事實上,解碼VLIW代碼可能是解析連續操作以確定VLIW包邊界的循序任務。
[0040]另一極端是形成完全用指令填充的VLIW包,包含無操作(NOP)指令,其中每一指令可由其在包中的位置明確地確定。因此,每一包將具有針對可並行操作的每一功能單元的指令時隙位置。舉例來說,具有六個指令的並行發布速率的處理器架構將具有六個指令的對應VLIW包。當前框架中的此方法可視為VLIW包的完全未壓縮狀態化表示。此方法的一個可能益處是VLIW包中每一指令中的位的擴展以增加每一指令的能力。然而,此方法在其自身存儲無操作指令的方式方面存在浪費,因為在不依賴並行執行的情況下形成含有所有有用指令的VLIW包難以實現。本發明的實施例引入利用壓縮基礎結構來最佳地編碼VLIW包的不同方法。
[0041]圖5說明根據本發明的實施例包括第一未壓縮極長指令字(VLIW)包502和第一經壓縮VLIW包504的示範性VLIW包格式500。第一未壓縮VLIW包502包括四個32位指令集架構(ISA)指令,例如32位加法(ADD)指令506、第一 32位無操作(NOP)指令507、第二 32位NOP指令508和32位分支JUMP指令509。在利用16位ISA的替代實施例中,四個16位指令將例如被存儲在未壓縮VLIW64位包中。在圖5中,兩個32位NOP指令507和508是由圖2的翻譯工具216識別且壓縮為如圖3所示的X[2nop]壓縮欄位516和Y[2nop]壓縮欄位517的兩個NOP的序列。ADD指令506和JUMP指令509各自被壓縮為對應的X索引和Y索引對壓縮值,也如圖3所示。因此,第一未壓縮VLIW包502經壓縮以形成第一壓縮VLIW 包 504。
[0042]第一壓縮VLIW包504包括表示四個指令506-509的X和Y壓縮欄位的三個集合。32位ADD指令506由八位X[add]壓縮欄位514和八位Y[add]壓縮欄位515表示。第一NOP指令507和第二 NOP指令508的序列由八位X[2nop]壓縮欄位516和八位Y[2nop]壓縮欄位517表示。Χ[2ηορ]壓縮欄位516和Υ[2ηορ]壓縮欄位517表示當解碼為第一 NOP指令507和第二 NOP指令508時擴展的兩個NOP指令的熵編碼序列。JUMP指令509由八位X[jmp]壓縮欄位518和八位Y[jmp]壓縮欄位519表示。
[0043]圖6說明根據本發明的實施例包括第二未壓縮VLIW包602、第二 VLIW壓縮包603和第三VLIW壓縮包604的示範性VLIW包格式600。第一未壓縮VLIW包602包括四個32位指令,例如第一 32位無操作(NOP)指令606、第二 32位NOP指令607、32位存儲指令608和第三32位NOP指令609。
[0044]第二壓縮VLIW包603包括表示四個指令606-609的三個X和Y壓縮欄位。第一NOP指令606和第二 NOP指令607的序列由八位X[2nop]壓縮欄位614和八位Y[2nop]壓縮欄位615表示。Χ[2ηορ]壓縮欄位614和Υ[2ηορ]壓縮欄位615表示當解碼為第一 NOP指令606和第二 NOP指令607時擴展的兩個ISA NOP指令的熵編碼序列。32位存儲指令608由八位X[store]壓縮欄位616和八位Y[store]壓縮欄位617表示。第三NOP指令609由八位X[lnop]壓縮欄位618和八位Y[lnop]壓縮欄位619表示。
[0045]第二未壓縮VLIW包602具有有用位的低利用率,其僅具有由兩個群組的Ν0Ρ606、607和609圍繞的一個有效負載指令608。為了提供第二未壓縮VLIW包602的比第二壓縮VLIW包603所提供的表示更緊密的表示,每包利用專門NOP指令,其對VLIW包內的指令的布局進行編碼。此專門NOP指令稱為布局NOP。隨著VLIW包中指令數目增加以適應較大數目的功能單元,在VLIW包中提供單一布局NOP而非單獨編碼可包含的每一個別NOP指令變得愈加有利。對於無NOP指令的那些VLIW包,不會浪費存儲空間,因為不需要布局Ν0Ρ。通過將布局NOP指令放置在VLIW包的開始或結尾,與針對「η」指令VLIW包的排序O (η)的循序任務複雜性相比,布局恢復變為排序0(1)的任務複雜性。
[0046]第三VLIW壓縮包604包括表示四個指令606-609的兩個X和Y壓縮欄位的集合。第一 NOP指令606、第二 NOP指令607、存儲指令608和第三NOP指令609的序列由2ηορ_LS_lnop指令表示。2nop_LS_lnop指令是引入到當前ISA的新布局NOP指令的實例。2nop_LS_lnop指令識別NOP指令的數目以及NOP指令在NOP指令與存儲指令的組合中的放置。兩個NOP指令606和607、存儲指令608和第三NOP指令609的序列由圖2的翻譯工具216識別且壓縮為如圖3所示的X[2nop_LS_lnop]壓縮欄位622和Y[2nop_LS_lnop]壓縮欄位623。存儲指令608壓縮為單一 X索引和Y索引對,也如圖3所示。因此,第二未壓縮VLIW包602經壓縮以形成第三VLIW壓縮包604。舉例來說,X[2nop_LS_lnop]壓縮欄位622和Y[2nop_LS_lnop]壓縮欄位623表示當解碼為第一 NOP指令606和第二 NOP指令607、針對存儲指令的佔位符以及第三NOP指令609時各自擴展的兩個ISA NOP指令、存儲指令和第三NOP指令的熵編碼序列。32位存儲指令608由針對存儲指令的佔位符填充的八位X [store]壓縮欄位624和八位Y[stOTe]壓縮欄位625表示。
[0047]圖7說明根據本發明支持VLIW壓縮包的無操作(NOP)和功能指令組合的示範性列表700。布局NOP列702含有經編碼以表示四個指令的序列的布局NOP指令條目。舉例來說,四個指令的序列包括NOP指令(N)、算術邏輯單元指令(A)、加載或存儲指令(LS)和控制指令(C)的組合。算術邏輯單元I (ALUl) VLIW位置列704含有經編碼以表示ALUl指令或NOP指令的條目。ALU2VLIW位置列705含有經編碼以表示ALU2指令或NOP指令的條目。加載或存儲VLIW位置列706含有經編碼以表示加載或存儲(LD / ST)指令或NOP指令的條目。控制VLIW位置列707含有經編碼以表示控制指令或NOP指令的條目。舉例來說,線條目708是表示四個NOP指令(4N)且在每一時隙列704-707中具有NOP指令的布局NOP指令。在另一實例中,線條目709是表示三個NOP指令(3N)和一控制指令(C)且在每一時隙列704-706中具有NOP指令以及在時隙列707中具有控制指令的布局NOP指令。在又一實例中,線條目710是表示每一時隙列704和705中的兩個NOP指令(2N)、時隙列706中的加載或存儲指令(LD / ST)以及時隙列707中的另一 NOP指令(N)的布局NOP指令。線條目710的2N_LS_N布局NOP指令可對應於圖6的第三VLIW壓縮包604。並且,注意,圖7中的列702的布局NOP指令不依賴於應用,且通常取決於基本VLIW架構。
[0048]使用布局NOP指令的方法可擴展以引入針對特定應用定製的新自定義指令,但可解碼到現有ISA空間。舉例來說,如果在程序評估過程期間,確定一個或一個以上特定VLIW包以高頻率在指令流中出現,那麼每一不同VLIW包可編碼為單一專門布局指令。VLIW包中此頻繁使用的指令的序列由圖2的翻譯工具216識別且壓縮為如圖3所示的單一 X壓縮欄位和單一 Y壓縮欄位。因此,多個專門布局指令可包含在ISA中,使用ISA的未使用編碼用於解碼目的,以及用於壓縮頻繁使用的指令的序列,如下文更詳細描述。注意,不同於布局NOP指令,所述多個專門布局指令是依賴於應用的。
[0049]圖8說明根據本發明的實施例包括包含頻繁使用的指令對的第三未壓縮VLIW包802和經壓縮專門布局指令804的示範性VLIW包格式800。第三未壓縮VLIW包802包括四個32位指令,例如比較相等(Pl=cmp.eq(r0,0))指令806、第一無操作(NOP)指令807、第二 NOP指令808和分支返回指令809。比較相等指令806和返回指令809包括頻繁使用的指令對。使用頻率可依據在圖2的處理器複合體203上運行的程序的分析確定。此使用頻率分析可例如在模擬環境中動態確定或在圖2的編譯器和連結器206中靜態確定。
[0050]第三未壓縮VLIW包802可由cmp_2nop_return指令表示,其是引入到當前ISA的專門布局指令的實例。cmp_2nop_return指令由圖2的翻譯工具216識別且壓縮為如圖3所示的X[cmp_2nop_return]壓縮欄位822和Y[cmp_2nop_return]壓縮欄位823。因此,第三未壓縮VLIW包802經壓縮以形成經壓縮專門布局指令804。
[0051]經壓縮專門布局指令804包括表示四個指令806-809的兩個X和Y壓縮欄位。比較相等指令806和返回指令809的頻繁使用的序列由八位X[cmp_2nop_return]壓縮欄位822 和八位 Y[cmp_2nop_return]壓縮欄位 823 表不。X[cmp_2nop_return]壓縮欄位 822和Y[cmp_2nop_return]壓縮欄位823表示當解碼為比較相等指令806、兩個NOP指令807和808以及分支返回指令809時擴展的兩個頻繁使用的ISA指令的熵編碼序列。
[0052]圖9A說明根據本發明的實施例用於壓縮程序指令的序列的過程900。在框902處,接收來自程序指令流的指令。在框904處,根據參數檢查程序指令流以尋找兩個或兩個以上指令的序列。兩個32位指令的序列的示範性參數可為包括兩個指令的序列的64位樣式。在另一實施例中,兩個指令的序列的參數可為兩個彙編器指令記憶術的序列,每一者表示ISA中的一指令。VLIW包中的此頻繁使用的指令序列可由編譯器(例如,圖2的編譯器206)或翻譯工具(例如,圖2的翻譯工具216)識別。從程序指令流接收指令,可接著一次將兩個指令與參數比較以指示是否已發現兩個指令的序列。舉例來說,第一參數可指示兩個NOP指令的序列。第二參數可指示三個NOP指令的序列。所述參數還可指示特定指令序列的列表中的條目,例如NOP與功能指令組合的示範性列表700。參數的其它實例可依據應用確定,例如經設定以指示頻繁使用的指令序列的參數,如參看圖8描述。[0053]在決策框906處,作出是否已發現兩個或兩個以上指令的當前序列滿足參數的確定。如果兩個或兩個以上指令的當前序列不滿足參數,那麼過程900返回到框904。如果兩個或兩個以上指令的當前序列滿足參數,那麼過程900進行到框908。在框908處,用與參數相關聯的選定類型的布局指令替代兩個或兩個以上指令的序列。在框910處,將選定類型的布局指令壓縮為X壓縮欄位和Y壓縮欄位。過程900接著返回到框904。
[0054]圖9B說明根據本發明的實施例用於將表示程序指令序列的壓縮值解碼的過程950。在框952處,接收來自壓縮指令流的壓縮指令。在框954處,將所接收X壓縮欄位和Y壓縮欄位解壓縮例如為選定類型的布局指令。過程950重複以將每一所接收的壓縮指令解壓縮。在框956處,根據布局指令的解碼用兩個或兩個以上指令替代示範性選定類型的布局指令。在框958處,執行所述兩個或兩個以上指令,這針對框958處接收的所述兩個或兩個以上指令完成過程950。
[0055]圖10說明根據本發明的實施例的示範性解壓縮狀態圖1000。解壓縮狀態圖1000說明經壓縮專門布局指令1002(例如,經壓縮專門布局指令804)進入以確定經解壓縮指令1005以供在處理器管線上執行的狀態。圖10展示包括例如主存儲器222、L2高速緩衝存儲器224和LI高速緩衝存儲器226的存儲器層級1006中的經壓縮專門布局指令1002。處理器核心228包括經壓縮指令解碼器1008和執行管線234。獲取操作1007從存儲器層級1006將經壓縮專門布局指令1002檢索到經壓縮指令解碼器1008。經壓縮指令解碼器1008經配置以使用X[cmp_2n0p_return] 1003作為X索引來存取X存儲器1010以獲得X位樣式,且使用Y[cmp_2nOp_return]1004作為Y索引以存取Y存儲器1011來獲得Y位樣式。在組合器1014中應用適當混合掩碼(MM) 1012,組合器1014經配置以根據MM1012將X位樣式與Y位樣式組合,且將獲取操作1016期間的經翻譯值提供到處理器核心228。舉例來說,經翻譯值可為32位cmp_2nop_return指令1018。解碼器230可操作以在解碼操作1020中解碼32位cmp_2nop_return指令1018,並將經解碼輸出作為未經壓縮VLIW包1005提供到執行管線234。未經壓縮VLIW包1005包括比較相等指令1022、第一 NOP指令1023、第二 NOP指令1024和返回指令1025。兩個NOP指令1023和1024作為解碼操作1020的一部分插入,藉此不需要在存儲器層級1006中針對這兩個指令的存儲區域。ALUl執行單元1032、ALU2執行單元1033、加載/存儲(LD / ST)執行單元1034和控制執行單元1035各自可配置以執行對應的指令1022-1025。
[0056]結合本文揭示的實施例描述的方法可體現在硬體與軟體的組合中,所述軟體為存儲在非瞬時計算機可讀存儲媒體中且可由處理器執行的計算機可讀指令的程序或序列。計算機可讀指令的程序或序列可駐留在隨機存取存儲器(RAM)、快閃記憶體、只讀存儲器(ROM)、電可編程只讀存儲器(EPROM)、硬碟、可拆卸盤、磁帶、壓縮光碟只讀存儲器(CD-ROM),或此項技術中已知或將來將提出的任何其它形式的存儲媒體中。存儲媒體可耦合到處理器,使得處理器可從存儲媒體讀取信息以及在一些情況下向存儲媒體寫入信息。存儲媒體到處理器的耦合可為與電路實施方案一體的直接耦合,或可利用一個或一個以上接口,從而支持直接存取或使用下載技術的數據串流。
[0057]雖然在用於處理器中的說明性實施例的上下文中揭示本發明,但將認識到,所屬領域的一般技術人員可依據以上論述和所附權利要求書採用廣泛多種實施方案。舉例來說,在替代實施例中,圖2的解碼器230可在系統中放置在層2 (L2)高速緩衝存儲器之後,其中主存儲器和L2高速緩衝存儲器存儲經壓縮指令,且層I (LI)高速緩衝存儲器存儲未經壓縮指令。在此系統中,主存儲器和L2高速緩衝存儲器將還存儲兩個或兩個以上指令的壓縮序列。
【權利要求】
1.一種壓縮程序指令的序列的方法,所述方法包括: 識別滿足參數的兩個或兩個以上指令的序列; 用選定類型的布局指令替代所述經識別的兩個或兩個以上指令的序列;以及 將所述選定類型的布局指令壓縮為壓縮值的X索引和Y索引對。
2.根據權利要求1所述的方法,其中所述參數指示兩個無操作NOP指令的序列。
3.根據權利要求2所述的方法,其中所述替代包括: 用表示所述兩個NOP指令的序列的單一布局指令替代所述兩個NOP指令的序列。
4.根據權利要求1所述的方法,其中所述參數指示作為一個或一個以上無操作NOP指令與一個或一個以上功能指令的組合的兩個或兩個以上指令的序列。
5.根據權利要求4所述的方法,其中所述替代包括: 用識別NOP指令的數目以及所述NOP指令在所述序列中的放置的單一布局指令替代所述兩個或兩個以上指令的序列中的所述NOP指令的至少一者。
6.根據權利要求1所述的方法,其中所述參數指示一個或一個以上頻繁使用的指令序 列。
7.根據權利要求6所述的方法,其中所述替代包括: 用識別所指示的指令序列中的每一指令的單一布局指令替代所述所指示的指令序列。
8.根據權利要求1所述的方法,其中所述兩個或兩個以上指令的序列是兩個或兩個以上指令的極長指令字包。
9.一種將表示指令序列的壓縮值解壓縮的方法,所述方法包括: 將X索引和Y索引作為壓縮值一起存取; 將所述壓縮值解壓縮為選定類型的布局指令;以及 將所述選定類型的布局指令解碼以用兩個或兩個以上指令的序列替代所述選定類型的布局指令。
10.根據權利要求9所述的方法,其中所述解壓縮包括: 根據所述X索引從X樣式存儲器選擇X樣式; 根據所述Y索引從Y樣式存儲器選擇Y樣式;以及 根據混合掩碼將所述X樣式與所述Y樣式組合以產生所述選定類型的布局指令。
11.根據權利要求9所述的方法,其中所述選定類型的布局指令指示兩個無操作NOP指令的序列。
12.根據權利要求9所述的方法,其中所述選定類型的布局指令指示作為一個或一個以上無操作NOP指令與一個或一個以上功能指令的組合的兩個或兩個以上指令的序列。
13.根據權利要求9所述的方法,其中所述選定類型的布局指令指示一個或一個以上頻繁使用的指令序列。
14.根據權利要求9所述的方法,其中基於從處理器核心的存儲器層級的指令獲取而實現所述解壓縮。
15.一種用於將表示指令序列的壓縮值解壓縮的設備,所述設備包括: 存儲子系統,其經配置用於存儲壓縮指令,其中壓縮指令包括X索引和Y索引; 解壓縮器,其經配置用於將從所述存儲子系統存取的X索引和Y索引翻譯為選定類型的布局指令;以及解碼器,其經配置用於用兩個或兩個以上指令的序列替代所述選定類型的布局指令。
16.根據權利要求15所述的設備,其中所述解壓縮器包括: X樣式存儲器,其可操作以存儲根據所述X索引選擇的X樣式; Y樣式存儲器,其可操作以存儲根據所述Y索引選擇的Y樣式;以及組合器,其經配置用於根據混合掩碼將選定X樣式與選定Y樣式組合以產生所述選定類型的布局指令。
17.根據權利要求15所述的設備,其中所述兩個或兩個以上指令的序列是兩個無操作NOP指令的序列。
18.根據權利要求15所述的設備,其中所述兩個或兩個以上指令的序列是一個或一個以上無操作NOP指令與一個或一個以上功能指令的組合。
19.根據權利要求15所述的設備,其中所述兩個或兩個以上指令的序列是頻繁使用的指令序列。
20.根據權利要求15所述的設備,其中所述存儲子系統包括: 層I指令高速緩衝存儲器,其可操作以存儲所述壓縮指令。
【文檔編號】G06F9/38GK103748550SQ201280040750
【公開日】2014年4月23日 申請日期:2012年7月30日 優先權日:2011年7月28日
【發明者】謝爾蓋·拉林, 盧西恩·科德雷斯庫, 安舒曼·達斯古普塔 申請人:高通股份有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀