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

用于存儲熵編碼指令序列及將其翻譯成可執(zhí)行形式的方法和設(shè)備的制作方法

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

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

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

【附圖說明】
[0011]圖1是其中可有利地采用本發(fā)明的實施例的示范性無線通信系統(tǒng)的框圖;
[0012]圖2是根據(jù)本發(fā)明的實施例經(jīng)設(shè)計用于高效且低成本運行時解壓縮的代碼壓縮系統(tǒng);
[0013]圖3說明根據(jù)本發(fā)明的實施例將基于混合掩碼的指令分裂為具有字節(jié)重疊填補位的X樣式和Y樣式的指令分割過程的示范性元件;
[0014]圖4是根據(jù)本發(fā)明的實施例的解壓縮器和執(zhí)行系統(tǒng),其中以壓縮形式存儲在層2高速緩沖存儲器和層I高速緩沖存儲器中的程序經(jīng)解壓縮以供執(zhí)行;
[0015]圖5說明根據(jù)本發(fā)明的實施例包括第一未壓縮極長指令字(VLIW)包和第一經(jīng)壓縮VLIW包的示范性VLIW包格式;
[0016]圖6說明根據(jù)本發(fā)明的實施例包括第二未壓縮VLIW包、第二 VLIW壓縮包和第三VLIff壓縮包的示范性VLIW包格式;
[0017]圖7說明根據(jù)本發(fā)明的實施例支持VLIW壓縮包的無操作(NOP)和功能指令組合的示范性列表;
[0018]圖8說明根據(jù)本發(fā)明的實施例包括包含頻繁使用的指令對的第三未壓縮VLIW包和第四VLIW壓縮包的示范性VLIW包格式;
[0019]圖9A說明根據(jù)本發(fā)明的實施例用于壓縮程序指令的序列的過程;
[0020]圖9B說明根據(jù)本發(fā)明的實施例用于將表示壓縮程序指令的序列的壓縮值解碼的過程;以及
[0021]圖10說明根據(jù)本發(fā)明的實施例的示范性解壓縮狀態(tài)圖。
【具體實施方式】
[0022]現(xiàn)將參看附圖更充分描述本發(fā)明,附圖中展示本發(fā)明的若干實施例。然而,本發(fā)明可以各種形式體現(xiàn)且不應(yīng)解釋為限于本文陳述的實施例。而是,提供這些實施例使得本發(fā)明將為詳盡和完整的,且將把本發(fā)明的范圍完全傳達給所屬領(lǐng)域的技術(shù)人員。
[0023]供在上面操作或用于實行根據(jù)本發(fā)明的教示的操作的計算機程序代碼或“程序代碼”可初始以例如 C、C++、JAVA?、Smalltalk、JavaScript?、Visual Basic?、TSQL、Perl 等
高級編程語言或以各種其它編程語言編寫。通過使用以原生指令格式編碼的指令將高級程序代碼轉(zhuǎn)換為原生匯編程序而將以這些語言的一者編寫的源程序或源代碼編譯為目標處理器架構(gòu)。舉例來說,指令集架構(gòu)(ISA)的原生指令格式可為固定位數(shù),例如32位格式或16位格式,或可為可變位數(shù),例如32位格式與16位格式的組合。目標處理器架構(gòu)的程序還可直接以原生匯編語言編寫。原生匯編程序使用機器級二進制指令的指令助記符表示。如本文使用的編譯器或人類編程員產(chǎn)生的程序代碼或計算機可讀媒體指代例如格式可由處理器理解的目標代碼等機器語言代碼。
[0024]圖1說明其中可有利地采用本發(fā)明的實施例的示范性無線通信系統(tǒng)100。出于說明的目的,圖1展示三個遠程單元120、130和150以及兩個基站140。將認識到,常見無線通信系統(tǒng)可具有更多遠程單元和基站。包含如分別由組件125A、125C、125B和12?表示的硬件組件、軟件組件或兩者的遠程單元120、130、150以及基站140已經(jīng)過調(diào)適以體現(xiàn)如下文進一步論述的本發(fā)明。圖1展示從基站140到遠程單元120、130和150的前向鏈路信號180,以及從遠程單元120、130和150到基站140的反向鏈路信號190。
[0025]在圖1中,遠程單元120展示為移動電話,遠程單元130展示為便攜式計算機,且遠程單元150展示為無線本地回路系統(tǒng)中的固定位置遠程單元。借助實例,遠程單元或者可為蜂窩式電話、尋呼機、對講機、手持式個人通信系統(tǒng)(PCS)單元、例如個人數(shù)字助理等便攜式數(shù)據(jù)單元,或例如儀表讀取設(shè)備等固定位置數(shù)據(jù)單元。盡管圖1說明根據(jù)本發(fā)明的教示的遠程單元,但本發(fā)明不限于這些示范性的所說明的單元。本發(fā)明的實施例可適當(dāng)?shù)赜糜谌魏翁幚砥飨到y(tǒng)中。
[0026]圖2是根據(jù)本發(fā)明的實施例的經(jīng)設(shè)計用于高效且低成本運行時解壓縮的用于代碼壓縮的壓縮系統(tǒng)200。壓縮系統(tǒng)200包含如上文描述的源代碼和源代碼中呈未壓縮形式的二進制庫文件,以及包括正編譯的當(dāng)前程序應(yīng)用的庫文件204。壓縮系統(tǒng)200還包含編譯器和鏈接器206以及任選的簡檔反饋信息208,其用于基于原生指令集架構(gòu)(ISA)格式和支持的數(shù)據(jù)區(qū)段212產(chǎn)生鏈接的可執(zhí)行代碼210。原生ISA由固定未壓縮格式表示且可表示多種方法,包含(例如)固定64或32或16位編碼以及此些編碼的混合。原生ISA是針對通常效用開發(fā)且并非特定為特定應(yīng)用定制。通過維持固定字邊界(例如,32位指令字邊界),盡管16位和32位指令可一起混合在代碼中,但也可使用僅支持分支、調(diào)用、返回等的固定字地址的尋址模型。
[0027]從此ISA選擇的指令可依據(jù)當(dāng)前應(yīng)用壓縮和定制,同時維持代碼的可尋址性且保證快速、固定的等待解壓縮時間。此壓縮可經(jīng)自動化以在線性時間內(nèi)產(chǎn)生經(jīng)壓縮代碼。原生ISA具有低信息熵,其根據(jù)本發(fā)明的實施例通過針對給定源代碼和庫文件204產(chǎn)生定制熵限界編碼而增加。當(dāng)前上下文中的信息熵被界定為程序的當(dāng)前表示中的信息內(nèi)容的量度。信息熵可視為使用原生指令符號的程序的當(dāng)前表示與使用壓縮符號的程序的最短可能表示(其保留了程序的原始功能性)之間的比率。用于產(chǎn)生壓縮程序的字母表的粒度處在個別字節(jié)等級,作為計算系統(tǒng)中的極微小可存儲且可尋址實體。兩種程序表示中保留的信息內(nèi)容為程序的原始功能性。舉例來說,熵“I”可以其最短可能表示形式表示一個特定確切程序。具有小于“I”的熵的程序指示可支持一個以上程序,且可能可支持非常大數(shù)目的程序,這需要存儲器中增加的存儲容量。[0028]在圖2中,提供鏈接的可執(zhí)行代碼210作為到翻譯工具216的輸入,翻譯工具216產(chǎn)生經(jīng)壓縮代碼218和解碼表220。經(jīng)壓縮代碼218和支持數(shù)據(jù)區(qū)段212存儲在存儲裝置214中,例如硬盤、光盤、內(nèi)嵌式裝置的快閃存儲器,或可從其將選定代碼提供到處理器復(fù)合體203以供執(zhí)行的其它此類存儲媒體。處理器復(fù)合體203包含主存儲器222、層2高速緩沖存儲器(L2高速緩沖存儲器)224、層I指令高速緩沖存儲器(LI高速緩沖存儲器)226和處理器核心228。處理器核心228包含具有根據(jù)實施例的翻譯存儲器(TM) 232和執(zhí)行管線234的解碼器230。經(jīng)壓縮代碼存儲在存儲裝置214、主存儲器222、L2高速緩沖存儲器224和LI高速緩沖存儲器226中。經(jīng)解壓縮代碼通常從LI高速緩沖存儲器226取得且由執(zhí)行管線234執(zhí)行。下文更詳細描述用于產(chǎn)生經(jīng)壓縮代碼218且用于在解碼器230中解碼經(jīng)壓縮指令的翻譯工具216的各個實施例。
[0029]處理器復(fù)合體203可適當(dāng)?shù)赜糜趫D1的組件125A-125D中,用于執(zhí)行以經(jīng)壓縮形式存儲在Lllcache226、L2高速緩沖存儲器224和主存儲器222中的程序代碼。為了論述的清晰,未展示可連接到處理器復(fù)合體的外圍裝置。處理器核心228可為通用處理器、數(shù)字信號處理器(DSP)、專用處理器(ASP)等。處理器復(fù)合體203的各個組件可使用專用集成電路(ASIC)技術(shù)、現(xiàn)場可編程門陣列(FPGA)技術(shù)或其它可編程邏輯、離散門或晶體管邏輯,或適于既定應(yīng)用的任何其它可用的技術(shù)實施。盡管展示單一處理器核心228,但本發(fā)明的實施例的壓縮指令的處理適用于超標量設(shè)計和實施并行管線的其它架構(gòu),例如多線程、多核心,和極長指令字(VLIW)設(shè)計。
[0030]圖3說明根據(jù)本發(fā)明的實施例將基于二進制混合掩碼(MM) 304的原生ISA固定大小指令A(yù)302分裂為具有重疊填補位310和312的Ax樣式306和Ay樣式308的指令分割過程的示范性元件300。填補位歸因于現(xiàn)代存儲器系統(tǒng)強加的要求而產(chǎn)生,以至少以字節(jié)粒度片段表示指令和數(shù)據(jù)。具有字節(jié)粒度片段的格式的使用用于提供壓緊表示,從而允許位粒度上的存儲重疊,同時滿足存儲系統(tǒng)的字節(jié)粒度要求。
[0031]為壓縮原生ISA代碼片段,將代碼片段分割為指令群組,每一群組貢獻單一共享X樣式和一組唯一 Y樣式。Ax樣式306表不對于指令A(yù)所屬的指令群組為共同的位樣式。Ay樣式308表示體現(xiàn)原生指令A(yù)302與Ax樣式306之間的差異的位樣式。注意,代碼片段可分割為I與N之間的任何數(shù)目的群組,其中N為代碼片段中的原生指令的數(shù)目。代碼片段的X樣式存儲在包括X存儲器的X詞典中,且代碼片段的Ay樣式存儲在包括Y存儲器的Y詞典中。X索引是X存儲器中的位置的地址,且Y索引是Y存儲器中的位置的地址。這兩個索引、來自X和Y詞典的樣式以及二進制混合掩碼的組合確切地表示原生指令。
[0032]壓縮操作314使用代碼片段的至少一個混合掩碼304從原生指令302選擇Ax樣式306和Ay樣式308。在以下實例中,十六進制數(shù)字或hex數(shù)字用“Ox”前綴表示。舉例來說,原生指令302 [0x9F6D0121]與混合掩碼304 [0xFF80FF80]組合以產(chǎn)生Ax樣式306 [0x9F00 (8,9,A, B)]和Ay樣式308[0xDA8(4,5,6,7)]。括號中的數(shù)字(例如,(8,9, A,B))表示由于重疊填補位310的兩個“無關(guān)”狀態(tài)的緣故可從其選擇一個數(shù)字以用于特定4位位置的可能數(shù)字的集合。解碼器228解壓縮操作316使用代碼片段的所述至少一個混合掩碼、X索引取得的X存儲器樣式和Y索引取得的Y存儲器樣式來解壓縮經(jīng)壓縮指令。舉例來說,混合掩碼304[0xFF80FF80]與從X存儲器取得的Ax樣式306,[0x9F00 (8,9,A,B)]以及從Y存儲器取得的Ay樣式308,[0xDA8 (4,5,6,7)]組合,以產(chǎn)生原生指令302 [0x9F6D0121]。[0033]如上文描述,X樣式和Y樣式分別存儲在字節(jié)可尋址X存儲器和字節(jié)可尋址Y存儲器中。X樣式、Y樣式或兩者的索引壓縮利用一過程,所述過程消除副本X樣式和副本Y樣式且使填補位重疊(例如,字節(jié)可尋址位置中的重疊填補位310和312),因此減少物理存儲裝置的雙重利用。利用單一混合掩碼,所有X樣式具有相同數(shù)目的位,且所有Y樣式具有相同數(shù)目的位。在不同混合掩碼的情況下,有可能具有針對每一原生指令的多種不同X和Y樣式。然而,混合掩碼的僅幾個組合通常提供原生ISA代碼片段與經(jīng)壓縮代碼片段之間的映射(相對于所測試混合掩碼組合的數(shù)目占用最小存儲空間)。產(chǎn)生需要低存儲容量的經(jīng)壓縮代碼的單一混合掩碼視為近似最佳混合掩碼。
[0034]圖4是根據(jù)本發(fā)明的實施例的解壓縮器和執(zhí)行系統(tǒng)400,其中以壓縮形式存儲在L2高速緩沖存儲器224和LI高速緩沖存儲器226中的程序經(jīng)解壓縮以供在執(zhí)行管線234中執(zhí)行。LI高速緩沖存儲器226包含XY索引存儲器402,其將X索引和Y索引對存儲在可尋址位置中,例如具有7位X索引值0x54和9位Y索引值0x134的XY條目404。多路復(fù)用器405用于選擇關(guān)于LI高速緩沖存儲器命中406的XY條目,或關(guān)于LI高速緩沖存儲器226中的未中的來自L2高速緩沖存儲器224的XY值407。在LI高速緩沖存儲器226和L2高速緩沖存儲器224兩者中的未中的情況下,使用多路復(fù)用器經(jīng)由路徑403從主存儲器選擇XY條目。在具有索引X寄存器408、索引Y寄存器410、X存儲器412、Y存儲器414、單一掩碼(MM)寄存器416和組合器418的解碼器230中實現(xiàn)解壓縮操作。解壓縮指令存儲裝置419包含多個未經(jīng)壓縮指令420,其可包含選定類型的布局指令,如下文更詳細描述。
[0035]在程序加載時或在內(nèi)嵌式系統(tǒng)啟動過程中,主存儲器222被加載上壓縮代碼,X存儲器412和Y存儲器414被加載上相關(guān)聯(lián)X和Y詞典上下文,且單一二進制混合掩碼在MM寄存器416中設(shè)定。注意,X和Y存儲器上下文以及混合掩碼可視需要在執(zhí)行期間再加載。舉例來說,再加載可允許將原始代碼壓縮為多個片段,每一片段具有其自身的定制編碼。舉例來說,一些復(fù)雜的內(nèi)嵌式系統(tǒng)(例如,智能電話)可從主應(yīng)用調(diào)用多個獨立的子過程,所述子過程不共享代碼空間且為自含式的。每一此應(yīng)用可具有其自身的包括X / Y詞典和MM的定制編碼,其在子過程啟動時加載。對于描述的剩余部分,使用具有用于包含任何應(yīng)用代碼的整個系統(tǒng)的圖2的單一翻譯存儲器232和單一編碼的解碼器230來描述解壓縮器系統(tǒng)400。
[0036]接下來,執(zhí)行管線234開始從Lllcache226取得指令。首先,對LlIcache的每次存取可產(chǎn)生未中指示422,從而致使對L2高速緩沖存儲器224的存取。首先,對L2高速緩沖存儲器224的存取也可產(chǎn)生未中,從而致使對圖2的主存儲器222的存取,主存儲器222以在L2高速緩沖存儲器224中加載且經(jīng)由多路復(fù)用器405在路徑403上轉(zhuǎn)發(fā)到解碼器230的經(jīng)壓縮指令響應(yīng)。解碼器230將XY索引壓縮指令解壓縮為未壓縮格式以供存儲在解壓縮指令存儲裝置419中且供在執(zhí)行管線234中執(zhí)行,如相對于圖3的解壓縮操作316描述。在操作周期之后,Lllcache226和L2高速緩沖存儲器224可達到穩(wěn)定狀態(tài)。
[0037]從處理器的角度來說,執(zhí)行管線234嘗試取得操作,在Lllcache226中搜索指令的取得地址和控制信號421。Lllcache226可確定指令存在。LI高速緩沖存儲器取得操作例如是針對XY條目404,其是LI高速緩沖存儲器226中的命中,從而致使XY條目404經(jīng)由多路復(fù)用器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根據(jù)MM304將來自X樣式306的適當(dāng)位與來自Y樣式308的適當(dāng)位組合以產(chǎn)生原生指令302,原生指令302存儲在解壓縮指令存儲裝置419中且傳遞到執(zhí)行管線234。
[0038]在所描述的系統(tǒng)中,程序內(nèi)容以暗示加密格式存儲。盡管不對指令流執(zhí)行特定加密類型的數(shù)據(jù)加擾,但程序代碼以應(yīng)用特定和壓縮形式存儲在存儲裝置214、主存儲器222,12高速緩沖存儲器224和LI高速緩沖存儲器226中。由于程序代碼的經(jīng)編碼狀態(tài)的一部分駐留在翻譯存儲器232中的處理器核心228(其在最終產(chǎn)品中不容易從外部存取)內(nèi)部,所以存儲裝置214以及上部存儲器層級222、224和226內(nèi)容不足以恢復(fù)原始程序,從而使得難以分析或復(fù)制。
[0039]VLIW架構(gòu)為指令集架構(gòu)(ISA)設(shè)計者提出若干挑戰(zhàn)。舉例來說,每一VLIW包包括多個指令,每一指令通常綁定到特定執(zhí)行單元且并行執(zhí)行??刂妻D(zhuǎn)移粒度依據(jù)定義是整個VLIW包。此VLIW包的中部可能不存在跳躍目標。在一種方法中,VLIW包可使用針對每一指令的唯一編碼存儲在存儲器中以確定性地識別包中的每一指令。但由于VLIW內(nèi)編碼的指令理應(yīng)是并行執(zhí)行的,所以具有完全編碼32位指令例如可能浪費存儲空間且解碼起來較慢因此影響性能。事實上,解碼VLIW代碼可能是解析連續(xù)操作以確定VLIW包邊界的循序任務(wù)。
[0040]另一極端是形成完全用指令填充的VLIW包,包含無操作(NOP)指令,其中每一指令可由其在包中的位置明確地確定。因此,每一包將具有針對可并行操作的每一功能單元的指令時隙位置。舉例來說,具有六個指令的并行發(fā)布速率的處理器架構(gòu)將具有六個指令的對應(yīng)VLIW包。當(dāng)前框架中的此方法可視為VLIW包的完全未壓縮狀態(tài)化表示。此方法的一個可能益處是VLIW包中每一指令中的位的擴展以增加每一指令的能力。然而,此方法在其自身存儲無操作指令的方式方面存在浪費,因為在不依賴并行執(zhí)行的情況下形成含有所有有用指令的VLIW包難以實現(xiàn)。本發(fā)明的實施例引入利用壓縮基礎(chǔ)結(jié)構(gòu)來最佳地編碼VLIW包的不同方法。
[0041]圖5說明根據(jù)本發(fā)明的實施例包括第一未壓縮極長指令字(VLIW)包502和第一經(jīng)壓縮VLIW包504的示范性VLIW包格式500。第一未壓縮VLIW包502包括四個32位指令集架構(gòu)(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各自被壓縮為對應(yīng)的X索引和Y索引對壓縮值,也如圖3所示。因此,第一未壓縮VLIW包502經(jīng)壓縮以形成第一壓縮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表示當(dāng)解碼為第一 NOP指令507和第二 NOP指令508時擴展的兩個NOP指令的熵編碼序列。JUMP指令509由八位X[jmp]壓縮字段518和八位Y[jmp]壓縮字段519表示。
[0043]圖6說明根據(jù)本發(fā)明的實施例包括第二未壓縮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表示當(dāng)解碼為第一 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包內(nèi)的指令的布局進行編碼。此專門NOP指令稱為布局NOP。隨著VLIW包中指令數(shù)目增加以適應(yīng)較大數(shù)目的功能單元,在VLIW包中提供單一布局NOP而非單獨編碼可包含的每一個別NOP指令變得愈加有利。對于無NOP指令的那些VLIW包,不會浪費存儲空間,因為不需要布局Ν0Ρ。通過將布局NOP指令放置在VLIW包的開始或結(jié)尾,與針對“η”指令VLIW包的排序O (η)的循序任務(wù)復(fù)雜性相比,布局恢復(fù)變?yōu)榕判?(1)的任務(wù)復(fù)雜性。
[0046]第三VLIW壓縮包604包括表示四個指令606-609的兩個X和Y壓縮字段的集合。第一 NOP指令606、第二 NOP指令607、存儲指令608和第三NOP指令609的序列由2ηορ_LS_lnop指令表示。2nop_LS_lnop指令是引入到當(dāng)前ISA的新布局NOP指令的實例。2nop_LS_lnop指令識別NOP指令的數(shù)目以及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經(jīng)壓縮以形成第三VLIW壓縮包604。舉例來說,X[2nop_LS_lnop]壓縮字段622和Y[2nop_LS_lnop]壓縮字段623表示當(dāng)解碼為第一 NOP指令606和第二 NOP指令607、針對存儲指令的占位符以及第三NOP指令609時各自擴展的兩個ISA NOP指令、存儲指令和第三NOP指令的熵編碼序列。32位存儲指令608由針對存儲指令的占位符填充的八位X [store]壓縮字段624和八位Y[stOTe]壓縮字段625表示。
[0047]圖7說明根據(jù)本發(fā)明支持VLIW壓縮包的無操作(NOP)和功能指令組合的示范性列表700。布局NOP列702含有經(jīng)編碼以表示四個指令的序列的布局NOP指令條目。舉例來說,四個指令的序列包括NOP指令(N)、算術(shù)邏輯單元指令(A)、加載或存儲指令(LS)和控制指令(C)的組合。算術(shù)邏輯單元I (ALUl) VLIW位置列704含有經(jīng)編碼以表示ALUl指令或NOP指令的條目。ALU2VLIW位置列705含有經(jīng)編碼以表示ALU2指令或NOP指令的條目。加載或存儲VLIW位置列706含有經(jīng)編碼以表示加載或存儲(LD / ST)指令或NOP指令的條目??刂芕LIW位置列707含有經(jīng)編碼以表示控制指令或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指令可對應(yīng)于圖6的第三VLIW壓縮包604。并且,注意,圖7中的列702的布局NOP指令不依賴于應(yīng)用,且通常取決于基本VLIW架構(gòu)。
[0048]使用布局NOP指令的方法可擴展以引入針對特定應(yīng)用定制的新自定義指令,但可解碼到現(xiàn)有ISA空間。舉例來說,如果在程序評估過程期間,確定一個或一個以上特定VLIW包以高頻率在指令流中出現(xiàn),那么每一不同VLIW包可編碼為單一專門布局指令。VLIW包中此頻繁使用的指令的序列由圖2的翻譯工具216識別且壓縮為如圖3所示的單一 X壓縮字段和單一 Y壓縮字段。因此,多個專門布局指令可包含在ISA中,使用ISA的未使用編碼用于解碼目的,以及用于壓縮頻繁使用的指令的序列,如下文更詳細描述。注意,不同于布局NOP指令,所述多個專門布局指令是依賴于應(yīng)用的。
[0049]圖8說明根據(jù)本發(fā)明的實施例包括包含頻繁使用的指令對的第三未壓縮VLIW包802和經(jīng)壓縮專門布局指令804的示范性VLIW包格式800。第三未壓縮VLIW包802包括四個32位指令,例如比較相等(Pl=cmp.eq(r0,0))指令806、第一無操作(NOP)指令807、第二 NOP指令808和分支返回指令809。比較相等指令806和返回指令809包括頻繁使用的指令對。使用頻率可依據(jù)在圖2的處理器復(fù)合體203上運行的程序的分析確定。此使用頻率分析可例如在模擬環(huán)境中動態(tài)確定或在圖2的編譯器和鏈接器206中靜態(tài)確定。
[0050]第三未壓縮VLIW包802可由cmp_2nop_return指令表示,其是引入到當(dāng)前ISA的專門布局指令的實例。cmp_2nop_return指令由圖2的翻譯工具216識別且壓縮為如圖3所示的X[cmp_2nop_return]壓縮字段822和Y[cmp_2nop_return]壓縮字段823。因此,第三未壓縮VLIW包802經(jīng)壓縮以形成經(jīng)壓縮專門布局指令804。
[0051]經(jīng)壓縮專門布局指令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表示當(dāng)解碼為比較相等指令806、兩個NOP指令807和808以及分支返回指令809時擴展的兩個頻繁使用的ISA指令的熵編碼序列。
[0052]圖9A說明根據(jù)本發(fā)明的實施例用于壓縮程序指令的序列的過程900。在框902處,接收來自程序指令流的指令。在框904處,根據(jù)參數(shù)檢查程序指令流以尋找兩個或兩個以上指令的序列。兩個32位指令的序列的示范性參數(shù)可為包括兩個指令的序列的64位樣式。在另一實施例中,兩個指令的序列的參數(shù)可為兩個匯編器指令記憶術(shù)的序列,每一者表示ISA中的一指令。VLIW包中的此頻繁使用的指令序列可由編譯器(例如,圖2的編譯器206)或翻譯工具(例如,圖2的翻譯工具216)識別。從程序指令流接收指令,可接著一次將兩個指令與參數(shù)比較以指示是否已發(fā)現(xiàn)兩個指令的序列。舉例來說,第一參數(shù)可指示兩個NOP指令的序列。第二參數(shù)可指示三個NOP指令的序列。所述參數(shù)還可指示特定指令序列的列表中的條目,例如NOP與功能指令組合的示范性列表700。參數(shù)的其它實例可依據(jù)應(yīng)用確定,例如經(jīng)設(shè)定以指示頻繁使用的指令序列的參數(shù),如參看圖8描述。[0053]在決策框906處,作出是否已發(fā)現(xiàn)兩個或兩個以上指令的當(dāng)前序列滿足參數(shù)的確定。如果兩個或兩個以上指令的當(dāng)前序列不滿足參數(shù),那么過程900返回到框904。如果兩個或兩個以上指令的當(dāng)前序列滿足參數(shù),那么過程900進行到框908。在框908處,用與參數(shù)相關(guān)聯(lián)的選定類型的布局指令替代兩個或兩個以上指令的序列。在框910處,將選定類型的布局指令壓縮為X壓縮字段和Y壓縮字段。過程900接著返回到框904。
[0054]圖9B說明根據(jù)本發(fā)明的實施例用于將表示程序指令序列的壓縮值解碼的過程950。在框952處,接收來自壓縮指令流的壓縮指令。在框954處,將所接收X壓縮字段和Y壓縮字段解壓縮例如為選定類型的布局指令。過程950重復(fù)以將每一所接收的壓縮指令解壓縮。在框956處,根據(jù)布局指令的解碼用兩個或兩個以上指令替代示范性選定類型的布局指令。在框958處,執(zhí)行所述兩個或兩個以上指令,這針對框958處接收的所述兩個或兩個以上指令完成過程950。
[0055]圖10說明根據(jù)本發(fā)明的實施例的示范性解壓縮狀態(tài)圖1000。解壓縮狀態(tài)圖1000說明經(jīng)壓縮專門布局指令1002(例如,經(jīng)壓縮專門布局指令804)進入以確定經(jīng)解壓縮指令1005以供在處理器管線上執(zhí)行的狀態(tài)。圖10展示包括例如主存儲器222、L2高速緩沖存儲器224和LI高速緩沖存儲器226的存儲器層級1006中的經(jīng)壓縮專門布局指令1002。處理器核心228包括經(jīng)壓縮指令解碼器1008和執(zhí)行管線234。獲取操作1007從存儲器層級1006將經(jīng)壓縮專門布局指令1002檢索到經(jīng)壓縮指令解碼器1008。經(jīng)壓縮指令解碼器1008經(jīng)配置以使用X[cmp_2n0p_return] 1003作為X索引來存取X存儲器1010以獲得X位樣式,且使用Y[cmp_2nOp_return]1004作為Y索引以存取Y存儲器1011來獲得Y位樣式。在組合器1014中應(yīng)用適當(dāng)混合掩碼(MM) 1012,組合器1014經(jīng)配置以根據(jù)MM1012將X位樣式與Y位樣式組合,且將獲取操作1016期間的經(jīng)翻譯值提供到處理器核心228。舉例來說,經(jīng)翻譯值可為32位cmp_2nop_return指令1018。解碼器230可操作以在解碼操作1020中解碼32位cmp_2nop_return指令1018,并將經(jīng)解碼輸出作為未經(jīng)壓縮VLIW包1005提供到執(zhí)行管線234。未經(jīng)壓縮VLIW包1005包括比較相等指令1022、第一 NOP指令1023、第二 NOP指令1024和返回指令1025。兩個NOP指令1023和1024作為解碼操作1020的一部分插入,借此不需要在存儲器層級1006中針對這兩個指令的存儲區(qū)域。ALUl執(zhí)行單元1032、ALU2執(zhí)行單元1033、加載/存儲(LD / ST)執(zhí)行單元1034和控制執(zhí)行單元1035各自可配置以執(zhí)行對應(yīng)的指令1022-1025。
[0056]結(jié)合本文揭示的實施例描述的方法可體現(xiàn)在硬件與軟件的組合中,所述軟件為存儲在非瞬時計算機可讀存儲媒體中且可由處理器執(zhí)行的計算機可讀指令的程序或序列。計算機可讀指令的程序或序列可駐留在隨機存取存儲器(RAM)、快閃存儲器、只讀存儲器(ROM)、電可編程只讀存儲器(EPROM)、硬盤、可拆卸盤、磁帶、壓縮光盤只讀存儲器(CD-ROM),或此項技術(shù)中已知或?qū)韺⑻岢龅娜魏纹渌问降拇鎯γ襟w中。存儲媒體可耦合到處理器,使得處理器可從存儲媒體讀取信息以及在一些情況下向存儲媒體寫入信息。存儲媒體到處理器的耦合可為與電路實施方案一體的直接耦合,或可利用一個或一個以上接口,從而支持直接存取或使用下載技術(shù)的數(shù)據(jù)串流。
[0057]雖然在用于處理器中的說明性實施例的上下文中揭示本發(fā)明,但將認識到,所屬領(lǐng)域的一般技術(shù)人員可依據(jù)以上論述和所附權(quán)利要求書采用廣泛多種實施方案。舉例來說,在替代實施例中,圖2的解碼器230可在系統(tǒng)中放置在層2 (L2)高速緩沖存儲器之后,其中主存儲器和L2高速緩沖存儲器存儲經(jīng)壓縮指令,且層I (LI)高速緩沖存儲器存儲未經(jīng)壓縮指令。在此系統(tǒng)中,主存儲器和L2高速緩沖存儲器將還存儲兩個或兩個以上指令的壓縮序列。
【權(quán)利要求】
1.一種壓縮程序指令的序列的方法,所述方法包括: 識別滿足參數(shù)的兩個或兩個以上指令的序列; 用選定類型的布局指令替代所述經(jīng)識別的兩個或兩個以上指令的序列;以及 將所述選定類型的布局指令壓縮為壓縮值的X索引和Y索引對。
2.根據(jù)權(quán)利要求1所述的方法,其中所述參數(shù)指示兩個無操作NOP指令的序列。
3.根據(jù)權(quán)利要求2所述的方法,其中所述替代包括: 用表示所述兩個NOP指令的序列的單一布局指令替代所述兩個NOP指令的序列。
4.根據(jù)權(quán)利要求1所述的方法,其中所述參數(shù)指示作為一個或一個以上無操作NOP指令與一個或一個以上功能指令的組合的兩個或兩個以上指令的序列。
5.根據(jù)權(quán)利要求4所述的方法,其中所述替代包括: 用識別NOP指令的數(shù)目以及所述NOP指令在所述序列中的放置的單一布局指令替代所述兩個或兩個以上指令的序列中的所述NOP指令的至少一者。
6.根據(jù)權(quán)利要求1所述的方法,其中所述參數(shù)指示一個或一個以上頻繁使用的指令序 列。
7.根據(jù)權(quán)利要求6所述的方法,其中所述替代包括: 用識別所指示的指令序列中的每一指令的單一布局指令替代所述所指示的指令序列。
8.根據(jù)權(quán)利要求1所述的方法,其中所述兩個或兩個以上指令的序列是兩個或兩個以上指令的極長指令字包。
9.一種將表示指令序列的壓縮值解壓縮的方法,所述方法包括: 將X索引和Y索引作為壓縮值一起存??; 將所述壓縮值解壓縮為選定類型的布局指令;以及 將所述選定類型的布局指令解碼以用兩個或兩個以上指令的序列替代所述選定類型的布局指令。
10.根據(jù)權(quán)利要求9所述的方法,其中所述解壓縮包括: 根據(jù)所述X索引從X樣式存儲器選擇X樣式; 根據(jù)所述Y索引從Y樣式存儲器選擇Y樣式;以及 根據(jù)混合掩碼將所述X樣式與所述Y樣式組合以產(chǎn)生所述選定類型的布局指令。
11.根據(jù)權(quán)利要求9所述的方法,其中所述選定類型的布局指令指示兩個無操作NOP指令的序列。
12.根據(jù)權(quán)利要求9所述的方法,其中所述選定類型的布局指令指示作為一個或一個以上無操作NOP指令與一個或一個以上功能指令的組合的兩個或兩個以上指令的序列。
13.根據(jù)權(quán)利要求9所述的方法,其中所述選定類型的布局指令指示一個或一個以上頻繁使用的指令序列。
14.根據(jù)權(quán)利要求9所述的方法,其中基于從處理器核心的存儲器層級的指令獲取而實現(xiàn)所述解壓縮。
15.一種用于將表示指令序列的壓縮值解壓縮的設(shè)備,所述設(shè)備包括: 存儲子系統(tǒng),其經(jīng)配置用于存儲壓縮指令,其中壓縮指令包括X索引和Y索引; 解壓縮器,其經(jīng)配置用于將從所述存儲子系統(tǒng)存取的X索引和Y索引翻譯為選定類型的布局指令;以及解碼器,其經(jīng)配置用于用兩個或兩個以上指令的序列替代所述選定類型的布局指令。
16.根據(jù)權(quán)利要求15所述的設(shè)備,其中所述解壓縮器包括: X樣式存儲器,其可操作以存儲根據(jù)所述X索引選擇的X樣式; Y樣式存儲器,其可操作以存儲根據(jù)所述Y索引選擇的Y樣式;以及組合器,其經(jīng)配置用于根據(jù)混合掩碼將選定X樣式與選定Y樣式組合以產(chǎn)生所述選定類型的布局指令。
17.根據(jù)權(quán)利要求15所述的設(shè)備,其中所述兩個或兩個以上指令的序列是兩個無操作NOP指令的序列。
18.根據(jù)權(quán)利要求15所述的設(shè)備,其中所述兩個或兩個以上指令的序列是一個或一個以上無操作NOP指令與一個或一個以上功能指令的組合。
19.根據(jù)權(quán)利要求15所述的設(shè)備,其中所述兩個或兩個以上指令的序列是頻繁使用的指令序列。
20.根據(jù)權(quán)利要求15所述的設(shè)備,其中所述存儲子系統(tǒng)包括: 層I指令高速緩沖存儲器,其可操作以存儲所述壓縮指令。
【文檔編號】G06F9/38GK103748550SQ201280040750
【公開日】2014年4月23日 申請日期:2012年7月30日 優(yōu)先權(quán)日:2011年7月28日
【發(fā)明者】謝爾蓋·拉林, 盧西恩·科德雷斯庫, 安舒曼·達斯古普塔 申請人:高通股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
汝城县| 西林县| 岑溪市| 曲水县| 镇雄县| 镇雄县| 黄山市| 晋州市| 图片| 义乌市| 长治市| 温州市| 马山县| 乡城县| 名山县| 大洼县| 祁东县| 浦北县| 浑源县| 淳安县| 罗山县| 宜宾县| 淮滨县| 宜丰县| 永州市| 彭阳县| 容城县| 贡嘎县| 抚州市| 鄂州市| 苗栗县| 双流县| 姜堰市| 阆中市| 喜德县| 万载县| 长沙市| 垣曲县| 民和| 新宾| 屏山县|