TWI526929B - 壓縮碼的加速執行技術 - Google Patents

壓縮碼的加速執行技術 Download PDF

Info

Publication number
TWI526929B
TWI526929B TW100122267A TW100122267A TWI526929B TW I526929 B TWI526929 B TW I526929B TW 100122267 A TW100122267 A TW 100122267A TW 100122267 A TW100122267 A TW 100122267A TW I526929 B TWI526929 B TW I526929B
Authority
TW
Taiwan
Prior art keywords
indicator
code instruction
embedded code
storage unit
instruction address
Prior art date
Application number
TW100122267A
Other languages
English (en)
Other versions
TW201211886A (en
Inventor
埃德森 波林
小摩里西歐 布特尼茲
尼爾 邦
斯洛摩 阿夫尼
Original Assignee
英特爾公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 英特爾公司 filed Critical 英特爾公司
Publication of TW201211886A publication Critical patent/TW201211886A/zh
Application granted granted Critical
Publication of TWI526929B publication Critical patent/TWI526929B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30178Runtime instruction translation, e.g. macros of compressed or encrypted instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Manipulator (AREA)
  • Supply Devices, Intensifiers, Converters, And Telemotors (AREA)

Description

壓縮碼的加速執行技術 發明領域
本揭露大體有關於計算領域。更具體而言,本發明之一實施例大體有關於壓縮碼的加速執行技術。
發明背景
許多應用對編碼大小佔用空間敏感。一關鍵範例是可使用基於唯讀記憶體(ROM)的系統的移動應用,其中持久記憶體儲存是整個系統成本、大小或功耗的一關鍵因素。在某些情況下,碼壓縮可用以減輕這些問題中的至少某些問題,有時由於要求即時解壓縮被壓縮碼而使性能降低及/或功耗增加。
依據本發明之一實施例,係特地提出一種裝置,其包含:一第一儲存單元,用以儲存對應於一嵌入式碼指令位址的一指標;一第二儲存單元,用以儲存對應於該指標的一唯一嵌入式碼指令;及一處理器,用以執行儲存的嵌入式碼指令,其中該第一儲存單元響應於該第一儲存單元接收該嵌入式碼指令位址將該指標發送給該第二儲存單元,且其中該第二儲存單元響應於該第二儲存單元接收該指標而輸出該唯一嵌入式碼指令。
圖式簡單說明
詳細說明參照附圖而被提供。在諸圖中,一參考數字最左邊的(複數個)數字顯示該參考數字首次出現的圖式。不同圖式中相同參考數字的使用指示類似或相同的項目。
第1及2圖分別繪示在壓縮之前及之後的嵌入式碼壓縮。
第3、5及7圖繪示依據一些實施例的管線解壓縮器之方塊圖。
第4及6圖繪示依據一些實施例,資料流入該等管線解壓縮器。
第8圖繪示依據本發明之一實施例的一方法的一流程圖。
第9及10圖繪示可用以實施本文所討論之一些實施例的計算系統之實施例的方塊圖。
第11圖繪示依據一些實施例的一無線區域或蜂巢式網路通訊系統的一方塊圖。
較佳實施例之詳細說明
在以下說明中,許多特定細節被提及以提供對各種實施例之深入理解。然而,本發明之各種實施例也可在毋需該特定細節之情況下被實施。在其他情況下,習知的方法、流程、組件及電路未被詳細地加以描述以免模糊本發明之特定實施例。而且,本發明實施例之各種層面可使用各種方式來執行,諸如積體半導體電路(「硬體」)、被組織成一或更多個程式的電腦可讀指令(「軟體」),或硬體與軟體的某種組合。基於本揭露的目的,提及「邏輯」應意指硬體或軟體(包括,例如,控制一處理器之運作的微碼),或其某種組合。
一些實施例改善二階嵌入式碼解壓縮方案,例如,藉由降低或消除最頻繁執行碼流的效能過載,降低功耗,及/或減少碼大小為之。一般而言,嵌入式碼壓縮旨在識別組成一嵌入式碼字的一組唯一位元型態且將它們儲存在一表格(也稱作一「字典」)中。壓縮嵌入式碼儲存原始嵌入式碼字序列中的每一型態的一(短的)唯一識別符,如第1及2圖中所示者。此外,一實施例利用指定碼字典或記憶體中的值所在位置的彈性能夠更有效率地導出初始指標值。此類實施例可實現由嵌入式碼壓縮所提供的優勢,同時避免執行解壓縮的額外成本。
在第1及2圖中,「addr」指一嵌入式碼指令的位址。在未壓縮形式(參見,例如第1圖)中,addr直接存取ROM以提取一嵌入式碼指令(instr)。在壓縮形式(參見,例如第2圖)中,唯一嵌入式碼指令被儲存在「唯一型態」表格/陣列202(或字典)中,且僅型態之索引(指標)被儲存在嵌入式碼指令的原始槽(指標陣列204)中。此組織結構使用一2層程序來解壓縮一嵌入式碼字:在第一層中,指標陣列204被存取以將一索引(指標)提取到唯一型態陣列202中,唯一型態陣列202復被存取以提供該字。假定原始ROM具有6500個各具有312個位元的嵌入式碼字,且總共有2005個唯一嵌入式碼字。原始ROM容納(312×6500)2,028,000個位元且壓縮ROM僅容納(6500*11+312*2005)697,060個位元(其中11是為唯一型態陣列202中的2005個輸入編索引所需要的位元數目)。因此,壓縮率(壓縮大小/原始大小)為34.37%。因此,先前用於嵌入式碼解壓縮的方法可能在流量改變下產生性能成本。為此,一些實施例在實現壓縮時避免此一性能影響。
在各種實施例中,本文所討論的指標陣列及唯一型態陣列/表格可在個別的儲存單元(諸如,參照第9或10圖所討論的記憶體)上實施或被實施為同一儲存單元(諸如,參照第9或10圖所討論的記憶體)內的區域。
第3圖繪示依據一實施例的一管線解壓縮器的一方塊圖。在第3、5及7圖中,R1、R2及R3指可用以臨時儲存在管線層之間傳輸的資料的暫存器或先進先出(FIFO)緩衝器。第4圖繪示依據一實施例,資料流入第3圖之管線解壓縮器。
參照第3圖,壓縮組織結構對「唯一型態」表格302利用一間接存取。此間接增加了從儲存代碼的記憶體提取一指令需要的時間。請注意,在從唯一型態陣列302提取該指令之前,指標係提取自指標陣列304。若從陣列302及304提取所用的時段並非小到足以適合於處理器週期時間(即小於或等於處理器的一週期),則可能會影響處理器性能。為了確保此時段適合於該處理器週期時間,壓縮ROM僅可使用固定大小的編碼指令及/或被管線化。第3圖繪示管線化為具有二層的解壓縮器。第一管線層包括指標陣列304且第二管線層包括唯一型態表格/陣列302。
在執行期間,一序列「addr」位址被提交給壓縮ROM。在第3圖之管線解壓縮器中,該位址一開始被提交給指標陣列304。在下一層中,這產生存取唯一型態陣列302的(複數個)指標,同時一新的「addr」被提交給指標陣列304,每一週期有一個字的通量。無論何時一序列新的「addr」被啟動,此管線結構都產生一單週期「泡沫」。一「泡沫」在管線被重啟時出現。這,例如在一嵌入式碼流開始時,或在跳轉期間出現。一般而言,一「泡沫」是指示管線層(包含該泡沫者)未執行任何有用功的象徵表示。
參照第4圖,資料流入第3圖之管線解壓縮器被繪示。在第一週期(Cycle 1)中,指標陣列304的輸入包含第一指令位址(Addr1)。在第二週期(Cycle 2)中,第二指令位址(Addr2)被提供給指標陣列304而第一指標(Pointer 1)被提供給唯一型態陣列302。因為解壓縮器不能在第一週期中將該指標提供給該唯一型態陣列,故在R2出現泡沫。
第5圖繪示依據一實施例的一管線解壓縮器的一方塊圖。參照第3-4圖所討論者,第5圖之實施例藉由將第一指標(Pointer 1)直接提供給唯一型態陣列502(例如,旁繞過指標陣列504),同時提供第二位址(Addr2)給指標陣列504而避免在R1出現泡沫。如圖所示者,一多工器可選擇第一指標或指標陣列504的一輸出,經由R2傳輸給第二管線。因此,第一指令在一新碼流的第一週期中係直接提取自唯一型態陣列502,而第二指令之位址(「addr」)用以「灌注」該管線。
第6圖繪示資料流入第5圖之管線解壓縮器,例如,當第一指標被直接提供給唯一型態陣列時。注意相較於第4圖,第一週期(Cycle 1)中的泡沫已經被消除。在第一週期中,指標陣列504的輸入包含第二指令位址且唯一型態陣列502的輸入包括第一指令的指標。在第二週期(Cycle 2)中,第三指令位址被提供給指標陣列504,而第二指標被提供給唯一型態陣列502。在此範例中,解壓縮器能夠在第一週期中將該指標提供給唯一型態陣列,消除了泡沫。
第7圖繪示依據一實施例的一管線解壓縮器的一方塊圖。第5圖中的組織結構藉由省去額外位址位元(及邏輯)的匯流排線路而在第7圖中被擴充。而第一指標係藉由一導出邏輯702由第二指令位址(「addr」)導出。在一實施例中,「導出邏輯」可藉由選擇「addr」中的一位元子集產生第一指標,使得導出邏輯至少在一實施例中可僅藉由將選擇的位元接線到多工器而被實施。
在一實施例中,藉由重新安排唯一型態陣列中的型態位置,我們修改被儲存在指標陣列中的值(指標的值)。為了說明起見,假定指令「ADD R,R」為嵌入式碼流中的第一指令。我們可將此指令型態儲存在唯一型態陣列中使索引是第二指令位址(Addr2)的一子集的位置中,使得第一指標可被輕易得自於第二位址。例如,若Addr1=000100且Addr2=000101,則「ADD R,R」指令可被儲存在唯一型態陣列中的位置0101中,使得其位址可直接由Addr2的低階4位元導出。在一碼流開始時,Addr2將被提供給R1,同時其低階4位元(0101)將被提供給R2,直接從唯一型態陣列提取第一指令。
而且,此實施例可(為了提高性能)犧牲一些壓縮,因為可以想到的是「ADD R,R」指令可被另一碼流共享,需要它在唯一型態陣列中被複製以使其指標資料不受影響。然而,此複製僅對(相對較少的)在碼流開始時的不同指令發生。此外,可利用設定僅選擇及最佳化最頻繁執行的碼流,使泡沫留在最少執行的碼流中。
第8圖繪示依據一實施例,用以增強嵌入式碼的一方法800的一方塊圖。方法800的操作可藉由,例如參照第1-7及/或9-11圖在本文中所討論的一或更多個組件來執行。
參照第8圖,在一操作802,一壓縮嵌入式碼組織結構被決定(如先前所述者),例如,產生分別由P個位元及U個位元編索引的一指標陣列及一唯一型態陣列。在一操作804,一嵌入式碼位址(addr)集合S被識別,它們是(例如,重要的)碼流的第二指令。此外,該嵌入式碼可包含多碼流。每一碼流包含一序列指令。這些指令中的每一者與一位址,諸如:addr、addr2、addr3,...,addrN相關聯。Addr2是一碼流的第二指令的位址。因此,操作804識別對應於每一碼流的第二指令的位址集合。因此,若該編碼具有十個重要流或關注流,則我們將得到具有十個位址的一集合,每一位址是每一碼流中的第二指令的位址。在一操作806,針對S的每一元素,對應的指令型態被加入到唯一型態陣列中,例如,使得該型態索引可輕易由第二指令位址導出。在一實施例中,可將該型態置於使該型態索引(由U個位元組成)對應於該碼流中的第二位址(Addr2)的P個位元之一子集的一位置。
因此,在一些實施例中,泡沫可從一嵌入式壓縮碼流中消除以增加速度及/或降低成本,此係藉由:(1)直接提供碼流中的第一指令的型態索引以避免管線泡沫;(2)自一指令位址導出型態索引;及/或(3)將唯一型態陣列中的型態重定位以簡化自指令位址導出型態索引之邏輯。
在一實施例中,可以藉由選擇性地應用本文(例如參照第1-8圖)所討論之技術使壓縮率相對性能折衷。例如,該等技術可能限於對初始管線「泡沫」延遲更為敏感的重要的短嵌入式指令流。而且,對額外的一週期較不敏感的相對較長的稀少碼流無需利用此類技術也可被執行。此外,在嵌入式碼鏈結層,嵌入式碼可被重新組織以使碼流開始時的不同的唯一指令的數目最小化;從而保留壓縮率。
第9圖繪示一計算系統900的一實施例的一方塊圖。在各種實施例中,系統900中的一或更多個組件可被提供在能夠執行參照本發明的一些實施例在本文中所討論的一或更多個操作的各種電子裝置中。例如,系統900的一或更多個組件可用以執行參照第1-8及10-11圖所討論的操作。而且,本文(例如,參照第9及/或10圖)所討論的各種儲存裝置可用以儲存資料(包括指令)、操作結果等。在一實施例中,與第9圖之方法900之操作相關聯的資料可被儲存在(複數個)記憶體裝置(諸如展現在第9圖之處理器902或第10圖之1002/1004中的記憶體912或一或更多個快取(例如,一實施例中的L1、中階或最後一階快取)中。
此外,計算系統900可包括一或更多個經由一互連網路(或匯流排)904通訊的中央處理單元(CPU)902或處理器。處理器902可包括一通用處理器、一網路處理器(處理透過一電腦網路903傳送的資料),或其他類型的一處理器(包括一精簡指令集電腦(RISC)處理器或一複雜指令集電腦(CISC))。此外,處理器902可具有一單或多核心設計。具有一多核心設計的處理器902可將不同類型的處理器核心整合到同一積體電路(IC)晶粒上。而且,具有一多核心設計的處理器902可被實施為對稱或非對稱多處理器。此外,處理器902可利用一SIMD(單指令多資料)架構。此外,參照第1-8圖所討論的操作可藉由系統900的一或更多個組件來執行。而且,如第9圖中所示者,一或更多個處理器902可包括一(嵌入式)邏輯990,其可能與參照第1-8圖所討論的解壓縮器相同或類似。然而,本發明之其他實施例可存在於第9圖之系統900內的其他電路、邏輯單元,或裝置中。
一晶片組906也可與互連網路904通訊。晶片組906可包括一記憶體控制樞紐(MCH)908。MCH 908可包括與一記憶體912通訊的一記憶體控制器910。記憶體912可儲存資料,包括由CPU 902或包括在計算系統900中的任何其他裝置所執行的指令序列。在本發明的一實施例中,記憶體912可包括一或更多個依電性儲存(或記憶體)裝置,諸如隨機存取記憶體(RAM)、動態RAM(DRAM)、同步DRAM(SDRAM)、靜態RAM(SRAM),或其他類型的儲存裝置。非依電性記憶體,諸如硬碟也可被利用。額外的裝置可經由互連網路904,諸如多個CPU及/或多個系統記憶體來通訊。
MCH 908還可包括與一顯示器916通訊的一圖形介面914。顯示器916可用以顯示與本文所討論的布朗橋演算法相關聯之操作的一使用者結果。在本發明的一實施例中,圖形介面914可與顯示器916通訊。在本發明的一實施例中,顯示器916可以是一平板顯示器,其與圖形介面914透過例如一信號轉換器通訊,該信號轉換器將一被儲存在一儲存裝置,諸如視訊記憶體或系統記憶體中的一影像的一數位表示轉變成由顯示器916來解讀及顯示的顯示信號。由介面914所產生的顯示信號在由顯示器916解讀且接著顯示之前可經過各種不同控制裝置。
一集線器介面918可允許MCH 908與一輸入/輸出控制樞紐(ICH)920通訊。ICH 920可將一介面提供給與計算系統900通訊的I/O裝置。ICH 920可透過一周邊橋接器(或控制器)924,諸如周邊組件互連(PCI)橋接器、通用串列匯流排(USB)控制器或其他類型的周邊橋接器或控制器與一匯流排922通訊。橋接器924可在CPU 902與周邊裝置之間提供一資料路徑。其他類型的拓撲可被利用。而且,多個匯流排可,例如,透過多個橋接器或控制器與ICH 920通訊。此外,在本發明之各種實施例中,與ICH 920通訊的其他周邊裝置可包括,整合驅動電子介面件(IDE)或(多個)小電腦系統介面(SCSI)硬驅動器、(多個)USB埠、鍵盤、滑鼠、(多個)平行埠、(多個)串聯埠、(多個)軟碟機、數位輸出支援(例如,數位視訊介面(DVI)),或其他裝置。
匯流排922可與一音訊裝置926、一或更多個磁碟驅動器928及可與電腦網路903通訊的一網路介面裝置930通訊。在一實施例中,裝置930可以是能夠無線通訊的一NIC。其他裝置可經由匯流排922通訊。而且,在本發明之一些實施例中,各種組件(諸如,網路介面裝置930)可與MCH 908通訊。除此之外,處理器902及MCH 908可被組合以形成一單一晶片。此外,在本發明之其他實施例中,圖形介面914可包括在MCH 908內。
此外,計算系統900可包括依電性及/或非依電性記憶體(或儲存器)。例如,非依電性記憶體可包括以下一或更多者:唯讀記憶體(ROM)、可程式ROM(PROM)、可抹除PROM(EPROM)、電子EPROM(EEPROM)、磁碟驅動器(例如928)、軟碟、光碟ROM(CD-ROM)、數位光碟(DVD)、快閃記憶體、磁光碟,或能夠儲存電子資料(例如,包括指令)的其他類型的非依電性機器可讀媒體。在一實施例中,系統900的組件可被配置成諸如參照第10圖所討論的一點對點(PtP)結構。例如,處理器、記憶體,及/或輸入/輸出裝置可藉由一些點對點介面來互連。
更具體而言,第10圖繪示依據本發明的一實施例,被配置成一點對點(PtP)結構的一計算系統1000。特別是,第10圖繪示處理器、記憶體,及輸入/輸出裝置藉由一些點對點介面來互連的一系統。參照第1-9及11圖所討論的操作可藉由系統1000的一或更多個組件來執行。
如第10圖中所示者,系統1000可包括若干處理器,為了清楚起見,僅兩個處理器1002及1004被繪示。處理器1002及1004可各自包括與記憶體1010及1012耦合的一區域記憶體控制樞紐(MCH)1006及1008。記憶體1010及/或1012可儲存各種資料,諸如參照第9圖之記憶體912所討論的那些資料。
處理器1002及1004可以是任何適合的處理器,諸如,參照第9圖之處理器902所討論的那些處理器。處理器1002及1004可分別使用PtP介面電路1016及1018經由一點對點(PtP)介面1014交換資料。每個處理器1002、1004可使用點對點介面電路1026、1028、1030及1032經由個別的PtP介面1022及1024與一晶片組1020交換資料。晶片組1020還可使用一PtP介面電路1037,經由一高性能圖形介面1036與一高性能圖形電路1034交換資料。
本發明之至少一實施例可藉由利用處理器1002及1004來提供。例如,如第10圖中所示者,一或更多個處理器1002/1004可包括一(嵌入式)邏輯990,其可能與參照第1-8圖所討論的解壓縮器相同或類似。然而,本發明之其他實施例可存在於第10圖之系統1000之其他電路、邏輯單元或裝置中。此外,本發明之其他實施例可分佈在第10圖中所示之若干電路、邏輯單元或裝置中。
晶片組1020可使用一PtP介面電路1041被耦合至一匯流排1040。可能有一或更多個裝置,諸如匯流排橋接器1042及I/O裝置1043被耦合至匯流排1040。經由一匯流排1044,匯流排橋接器1043可被耦合至其他裝置,諸如參照第10圖所討論的鍵盤/滑鼠1045、網路介面裝置1030(諸如數據機、網路介面卡(NIC),或可被耦合至電腦網路903的類似者)、音訊I/O裝置,及/或一資料儲存裝置1048。資料儲存裝置1048可儲存可藉由處理器1002及/或1004來執行的編碼1049。
參照第11圖,依據一或更多個實施例的一無線區域或蜂巢式網路通訊系統1100的一方塊圖將被討論。在第11圖中所示之通訊系統1100中,一無線裝置1110可包括耦合至一天線1118且耦合至諸如處理器的一邏輯1114(例如,用以提供基頻及媒體存取控制(MAC)處理功能)的一無線收發器1112。在一些實施例中,本文所討論的一或更多個計算系統可包括參照無線裝置1110所討論的一或更多個組件。而且,計算裝置1102可包括參照第1-10圖在本文中所討論的系統/裝置的一或更多個組件。
在一些實施例中,無線裝置1110可以是一蜂巢式電話或一資訊處理系統,諸如,移動式個人電腦或個人數位助理或包含一蜂巢式電話通訊模組的類似物。在一實施例中,邏輯1114可包含一單一處理器,又或者可包含一基頻處理器及一應用處理器(例如,其中參照第11圖所討論的每一處理器可包括一或更多個處理器核心,或可能與參照第1-10圖所討論的處理器相同或類似)。邏輯1114耦合至一記憶體1116,記憶體1116可包括諸如動態隨機存取記憶體(DRAM)的依電性記憶體、諸如快閃記憶體的非依電性記憶體,又或者可包括其他類型的儲存器,諸如硬碟。記憶體1116的某部分或全部可與邏輯1114納入同一積體電路,又或者記憶體1116的某部分或全部可被配置於在邏輯1114之積體電路外部的一積體電路或其他媒體,例如一硬碟上。
無線裝置1110可經由一無線通訊鏈結與存取點1122通訊,其中存取點1122可包括以下一或更多者:一天線1120、一收發器1124、一處理器1126,及一記憶體1128。如第11圖中所示者,無線裝置1110及/或存取點1122中的一或更多者可包括一(嵌入式)邏輯990,其可能與參照第1-10圖所討論的解壓縮器相同或類似。在一實施例中,存取點1122可以是一蜂巢式電話網路的一基地台,且在另一實施例中,存取點1122可以是一無線區域或個人區域網路的一存取點或無線路由器。在一實施例中,存取點1122(及可任選的無線裝置1110)可包括兩個或更多個天線,例如用以提供一分區多重存取(SDMA)系統或一多輸入多輸出(MIMO)系統。存取點1122可與網路903耦合,使得無線裝置1110可藉經由一無線通訊鏈結與存取點1122通訊而與網路903,包括被耦合至網路903的裝置通訊。網路903可包括一公眾網路,諸如電話網路或網際網路,又或者網路903可包括一專用網路,諸如內部網路、或一公眾網路與一專用網路的一組合。無線裝置1110與存取點1122之間的通訊可經由一無線區域網路(WLAN)來實施。在一實施例中,無線裝置1110與存取點1122之間的通訊可至少部分經由一符合第三代合作夥伴計畫(3GPP或3G)標準的一蜂巢式通訊網路實施。在一些實施例中,天線1118可被利用在一無線感測器網路或一網型網路中。
在本發明之各種實施例中,例如參照第1-11圖在本文中所討論的操作可被實施為硬體(例如邏輯電路)、軟體(包括,例如,控制一處理器,諸如本文所討論之該等處理器之操作的微碼、韌體,或其組合,上述可被提供為一電腦程式產品,例如包括有形機器可讀或電腦可讀媒體,該媒體上儲存有用以程式化一電腦(例如一計算裝置之處理器或其他邏輯)以執行本文所討論的一操作的指令(或軟體程序)。機器可讀媒體可包括本文所討論的一儲存裝置。
此外,此種有形電腦可讀媒體可被下載為一電腦程式產品,其中該程式可藉由傳播媒介中的資料信號經由一通訊鏈結(例如,匯流排、數據機或網路連接)從一遠程電腦(例如,伺服器)被傳送至一請求電腦(例如,客戶端)。
說明書中提及「一個實施例」或「一實施例」意指標對該實施例描述的一特定特徵、結構或特性可包括在至少一實施態樣中。在說明書中各處出現的片語「在一個實施例中」可能是或可能不是均指同一實施例。
此外,在說明及申請專利範圍中,「耦合的」及「連接的」二詞,連同它們的衍生詞,可被使用。在本發明之一些實施例中,「連接的」可用以指示兩個或更多個元件彼此直接實體或電氣接觸。「耦合的」可意指兩個或更多個元件直接實體或電氣接觸。然而,「耦合」還可意指兩個或更多個元件可能並不彼此直接接觸,但是仍可相互協作或相互作用。
因此,雖然本發明實施例已經以結構特徵及/或方法動作的具體語言加以描述,但是應理解的是,所申請專利之標的可能並不限於所述之特定特徵或動作。反之,具體特徵及動作是以實施所申請專利之標的的示範性形式被揭露。
202...「唯一型態」表格/陣列/唯一型態陣列
204...指標陣列
302...「唯一型態」表格/唯一型態陣列/陣列
304...指標陣列/陣列
502...唯一型態陣列
504...指標陣列
702...導出邏輯
800...方法
802~806...操作
900...計算系統/系統/方法
902...處理器/中央處理單元(CPU)/CPU
903...電腦網路/網路
904...互連網路(或匯流排)/互連網路
906...晶片組
908...記憶體控制樞紐(MCH)/MCH
910...記憶體控制器
912、1010、1012、1116、1128...記憶體
914...圖形介面/介面
916...顯示器
918...集線器介面
920...輸入/輸出控制樞紐(ICH)/ICH
922、1040、1044...匯流排
924...周邊橋接器(或控制器)/橋接器
926...音訊裝置
928...磁碟驅動器
930...網路介面裝置/裝置
990...(嵌入式)邏輯
1000...計算系統/系統
1002、1004、1126...處理器
1006、1008...區域記憶體控制樞紐(MCH)
1014...點對點(PtP)介面
1016、1018...PtP介面電路
1020...晶片組
1022、1024...PtP介面
1026、1028、1030、1032...點對點介面電路
1030...網路介面裝置
1034...高性能圖形電路
1036...高性能圖形介面
1037、1041...PtP介面電路
1042...匯流排橋接器
1043...I/O裝置/匯流排橋接器
1045...鍵盤/滑鼠
1048...資料儲存裝置
1049...代碼
1100...無線區域或蜂巢式網路通訊系統/通訊系統
1102...計算裝置
1110...無線裝置/可任選的無線裝置
1118...天線
1114...邏輯
1112...無線收發器
1118、1120...天線
1122...存取點
1124...收發器
第1及2圖分別繪示在壓縮之前及之後的嵌入式碼壓縮。
第3、5及7圖繪示依據一些實施例的管線解壓縮器之方塊圖。
第4及6圖繪示依據一些實施例,資料流入該等管線解壓縮器。
第8圖繪示依據本發明之一實施例的一方法的一流程圖。
第9及10圖繪示可用以實施本文所討論之一些實施例的計算系統之實施例的方塊圖。
第11圖繪示依據一些實施例的一無線區域或蜂巢式網路通訊系統的一方塊圖。
202...「唯一型態」表格/陣列/唯一型態陣列
204...指標陣列

Claims (28)

  1. 一種裝置,其包含:一第一儲存單元,用以儲存對應於一嵌入式碼指令位址的一指標,其中,該指標係針對一嵌入式碼指令位址序列而藉由選擇該嵌入式碼指令位址中之一位元子集所產生;一第二儲存單元,用以儲存對應於該指標的一唯一嵌入式碼指令;以及一處理器,用以執行所儲存的該嵌入式碼指令,其中,該第一儲存單元可由於在該第一儲存單元處接收到該嵌入式碼指令位址而將該指標發送給該第二儲存單元,其中,該第二儲存單元可由於在該第二儲存單元處接收到該指標而輸出該唯一嵌入式碼指令,其中,該第二儲存單元能夠在該處理器的單一個週期當中接收該唯一嵌入式碼指令及該指標。
  2. 如申請專利範圍第1項所述之裝置,其中,該第二儲存單元可在一新嵌入式碼指令位址序列之一第一週期當中先於對應於一第二嵌入式碼指令位址的一第二指標而接收對應於一第一嵌入式碼指令位址的一第一指標。
  3. 如申請專利範圍第2項所述之裝置,其中,該第二儲存單元可自該第一儲存單元接收該第二指標,並可旁繞過該第一儲存單元而接收該第一指標。
  4. 如申請專利範圍第1項所述之裝置,其中,該第二儲存單元可在一新嵌入式碼指令位址序列之一第一週期當 中先於對應於一第二嵌入式碼指令位址的一第二指標而接收對應於一第一嵌入式碼指令位址的一第一指標,其中,該第一指標是導自該第二嵌入式碼指令位址的一導出值。
  5. 如申請專利範圍第1項所述之裝置,其中,在一新嵌入式碼指令位址序列的一第一週期之後,在該處理器的每一後續週期當中,係有至少一個指標被從該第一儲存單元提取出來,且有至少一個唯一嵌入式碼指令被從該第二儲存單元提取出來。
  6. 如申請專利範圍第1項所述之裝置,其中,該唯一嵌入式碼指令包含被儲存在該第二儲存單元中之組成一嵌入式碼字的一組唯一位元型態。
  7. 如申請專利範圍第1項所述之裝置,其進一步包含:一唯讀記憶體,其中,該記憶體包含該第一儲存單元或該第二儲存單元。
  8. 如申請專利範圍第1項所述之裝置,其進一步包含:用於耦接該第一儲存單元及該第二儲存單元的至少一個緩衝器或暫存器。
  9. 如申請專利範圍第1項所述之裝置,其進一步包含:用於耦接該第一儲存單元及該第二儲存單元的一多工器。
  10. 如申請專利範圍第1項所述之裝置,其中,該處理器、該第一儲存單元及該第二儲存單元中之一或多者是位在同一積體電路晶粒上。
  11. 如申請專利範圍第1項所述之裝置,其中,該處理器包含複數個處理器核心。
  12. 一種方法,其包含以下步驟:將對應於一嵌入式碼指令位址的一指標儲存在一第一儲存單元中,其中,該指標係針對一嵌入式碼指令位址序列而藉由選擇該嵌入式碼指令位址中之一位元子集所產生;將對應於該指標的一唯一嵌入式碼指令儲存在一第二儲存單元中;其中,該第一儲存單元可由於在該第一儲存單元處接收到該嵌入式碼指令位址而將該指標發送給該第二儲存單元,其中,該第二儲存單元可由於在該第二儲存單元處接收到該指標而輸出該唯一嵌入式碼指令,並且其中,該第二儲存單元能夠在執行所儲存之該嵌入式碼指令的一處理器的單一個週期當中接收該唯一嵌入式碼指令及該指標。
  13. 如申請專利範圍第12項所述之方法,其進一步包含以下步驟:在該第二儲存單元處,於一新嵌入式碼指令位址序列之一第一週期當中先於對應於一第二嵌入式碼指令位址的一第二指標而接收對應於一第一嵌入式碼指令位址的一第一指標。
  14. 如申請專利範圍第13項所述之方法,其進一步包含以下 步驟:在該第二儲存單元處,接收來自於該第一儲存單元的該第二指標,並旁繞過該第一儲存單元而接收該第一指標。
  15. 如申請專利範圍第12項所述之方法,其進一步包含以下步驟:在該第二儲存單元處,在一新嵌入式碼指令位址序列之一第一週期當中先於對應於一第二嵌入式碼指令位址的一第二指標而接收對應於一第一嵌入式碼指令位址的一第一指標,其中,該第一指標是導自該第二嵌入式碼指令位址的一導出值。
  16. 如申請專利範圍第12項所述之方法,其進一步包含以下步驟:在一新嵌入式碼指令位址序列的一第一週期之後,在該處理器的每一後續週期當中,自該第一儲存單元提取出至少一個指標並自該第二儲存單元提取出至少一個唯一嵌入式碼指令。
  17. 一種計算系統,其包含:記憶體,用以儲存一指標陣列及一唯一型態陣列,其中,該指標陣列係用於儲存對應於一嵌入式碼指令位址的一指標,且該唯一型態陣列係用於儲存對應於該指標的一唯一嵌入式碼指令,其中,該指標係針對一嵌入式碼指令位址序列而藉由選擇該嵌入式碼指令位址中之一位元子集所產生;以及 一處理器,用以執行所儲存的該嵌入式碼指令,其中,該指標陣列可由於在該指標陣列處接收到該嵌入式碼指令位址而將該指標發送至該唯一型態陣列,其中,該唯一型態陣列可由於在該唯一型態陣列處接收到該指標而輸出該唯一嵌入式碼指令,其中,該唯一型態陣列能夠在該處理器的單一個週期當中接收該唯一嵌入式碼指令及該指標。
  18. 如申請專利範圍第17項所述之系統,其中,該唯一型態陣列可在一新嵌入式碼指令位址序列之一第一週期當中先於對應於一第二嵌入式碼指令位址的一第二指標而接收對應於一第一嵌入式碼指令位址的一第一指標。
  19. 如申請專利範圍第18項所述之系統,其中,該唯一型態陣列可自該指標陣列接收該第二指標,並可旁繞過該指標陣列而接收該第一指標。
  20. 如申請專利範圍第17項所述之系統,其中,該唯一型態陣列可在一新嵌入式碼指令位址序列之一第一週期當中先於對應於一第二嵌入式碼指令位址的一第二指標而接收對應於一第一嵌入式碼指令位址的一第一指標,其中,該第一指標是導自該第二嵌入式碼指令位址的一導出值。
  21. 如申請專利範圍第17項所述之系統,其中,在一新嵌入式碼指令位址序列的一第一週期之後,在該處理器的每一後續週期當中,係有至少一個指標被從該指標陣列提取出來,且有至少一個唯一嵌入式碼指令被從該唯一型 態陣列提取出來。
  22. 如申請專利範圍第17項所述之系統,其中,該唯一嵌入式碼指令包含被儲存在該唯一型態陣列中之組成一嵌入式碼字的一組唯一位元型態。
  23. 如申請專利範圍第17項所述之系統,其中,該記憶體包含一唯讀記憶體。
  24. 一種非暫時性電腦可讀媒體,其包含一或多個指令,該一或多個指令當執行於一處理器上時會將該處理器組配成可執行用於進行下列步驟的一或多個操作:將對應於一嵌入式碼指令位址的一指標儲存在一第一儲存單元中,其中,該指標係針對一嵌入式碼指令位址序列而藉由選擇該嵌入式碼指令位址中之一位元子集所產生;將對應於該指標的一唯一嵌入式碼指令儲存在一第二儲存單元中;其中,該第一儲存單元可由於在該第一儲存單元處接收到該嵌入式碼指令位址而將該指標發送給該第二儲存單元,其中,該第二儲存單元可由於在該第二儲存單元處接收到該指標而輸出該唯一嵌入式碼指令,並且其中,該第二儲存單元能夠在執行所儲存之該嵌入式碼指令的一處理器的單一個週期當中接收該唯一嵌入式碼指令及該指標。
  25. 如申請專利範圍第24項所述之非暫時性電腦可讀媒 體,其進一步包含當執行於一處理器上時會組配該處理器來進行下列步驟的一或多個指令:在該第二儲存單元處,在一新嵌入式碼指令位址序列之一第一週期當中先於對應於一第二嵌入式碼指令位址的一第二指標而接收對應於一第一嵌入式碼指令位址的一第一指標。
  26. 如申請專利範圍第25項所述之非暫時性電腦可讀媒體,其進一步包含當執行於一處理器上時會組配該處理器來進行下列步驟的一或多個指令:在該第二儲存單元處,接收來自該第一儲存單元的該第二指標,並旁繞過該第一儲存單元而接收該第一指標。
  27. 如申請專利範圍第24項所述之非暫時性電腦可讀媒體,其進一步包含當執行於一處理器上時會組配該處理器來進行下列步驟的一或多個指令:在該第二儲存單元處,在一新嵌入式碼指令位址序列之一第一週期當中先於對應於一第二嵌入式碼指令位址的一第二指標而接收對應於一第一嵌入式碼指令位址的一第一指標,其中,該第一指標是導自該第二嵌入式碼指令位址的一導出值。
  28. 如申請專利範圍第24項所述之非暫時性電腦可讀媒體,其進一步包含當執行於一處理器上時會組配該處理器來進行下列步驟的一或多個指令:在一新嵌入式碼指令位址序列的一第一週期之 後,在該處理器的每一後續週期當中,自該第一儲存單元提取出至少一個指標,並自該第二儲存單元提取出至少一個唯一嵌入式碼指令。
TW100122267A 2010-06-27 2011-06-24 壓縮碼的加速執行技術 TWI526929B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US12/824,187 US20110320775A1 (en) 2010-06-27 2010-06-27 Accelerating execution of compressed code

Publications (2)

Publication Number Publication Date
TW201211886A TW201211886A (en) 2012-03-16
TWI526929B true TWI526929B (zh) 2016-03-21

Family

ID=45353683

Family Applications (1)

Application Number Title Priority Date Filing Date
TW100122267A TWI526929B (zh) 2010-06-27 2011-06-24 壓縮碼的加速執行技術

Country Status (8)

Country Link
US (1) US20110320775A1 (zh)
EP (1) EP2585907B1 (zh)
JP (1) JP5662567B2 (zh)
KR (1) KR101468424B1 (zh)
CN (1) CN102934074B (zh)
AU (1) AU2011280088B2 (zh)
TW (1) TWI526929B (zh)
WO (1) WO2012012112A2 (zh)

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6375833A (ja) * 1986-09-18 1988-04-06 Toshiba Corp 情報処理装置
US5222244A (en) * 1990-12-20 1993-06-22 Intel Corporation Method of modifying a microinstruction with operands specified by an instruction held in an alias register
JP3201716B2 (ja) * 1996-02-22 2001-08-27 シャープ株式会社 コンピュータ装置
KR100448289B1 (ko) * 1997-12-20 2004-11-16 주식회사 대우일렉트로닉스 스트링매칭모듈을갖는데이터압축시스템
US6263429B1 (en) * 1998-09-30 2001-07-17 Conexant Systems, Inc. Dynamic microcode for embedded processors
US6691305B1 (en) * 1999-11-10 2004-02-10 Nec Corporation Object code compression using different schemes for different instruction types
JP2001142696A (ja) * 1999-11-15 2001-05-25 Matsushita Electric Ind Co Ltd マイクロプロセッサにおける命令供給装置および命令供給方法
US6484228B2 (en) * 2000-04-19 2002-11-19 Motorola, Inc. Method and apparatus for data compression and decompression for a data processor system
JP2003044273A (ja) * 2001-08-01 2003-02-14 Nec Corp データ処理装置及びデータ処理方法
JP3729759B2 (ja) * 2001-08-07 2005-12-21 株式会社ルネサステクノロジ 圧縮された命令コードを読み出すマイクロコントローラ、命令コードを圧縮して格納するプログラムメモリ
JP3792633B2 (ja) * 2002-10-17 2006-07-05 株式会社ルネサステクノロジ マイクロコントローラ、及びマイクロコントローラ装置
US7715392B2 (en) * 2002-12-12 2010-05-11 Stmicroelectronics, Inc. System and method for path compression optimization in a pipelined hardware bitmapped multi-bit trie algorithmic network search engine
US20040128477A1 (en) * 2002-12-13 2004-07-01 Ip-First, Llc Early access to microcode ROM
US20040139298A1 (en) * 2003-01-09 2004-07-15 International Business Machines Corporation Method and apparatus for instruction compression and decompression in a cache memory
US8099587B2 (en) * 2005-07-20 2012-01-17 Intel Corporation Compressing and accessing a microcode ROM
US7334113B2 (en) * 2005-09-07 2008-02-19 National Chung Cheng University Method and system for processing an instruction set
US8219508B2 (en) * 2007-07-06 2012-07-10 Lsi Corporation Systems and methods for compressing state machine instructions using a two access indexing scheme

Also Published As

Publication number Publication date
CN102934074B (zh) 2016-07-13
WO2012012112A2 (en) 2012-01-26
KR101468424B1 (ko) 2014-12-03
EP2585907A4 (en) 2016-05-25
KR20130038886A (ko) 2013-04-18
JP5662567B2 (ja) 2015-02-04
AU2011280088B2 (en) 2015-01-22
EP2585907A2 (en) 2013-05-01
JP2013528877A (ja) 2013-07-11
AU2011280088A1 (en) 2013-01-24
US20110320775A1 (en) 2011-12-29
WO2012012112A3 (en) 2012-04-05
EP2585907B1 (en) 2018-05-16
CN102934074A (zh) 2013-02-13
TW201211886A (en) 2012-03-16

Similar Documents

Publication Publication Date Title
JP6768928B2 (ja) アドレスを圧縮するための方法及び装置
JP5945291B2 (ja) デフレート圧縮のために高速で高圧縮のlz77トークン化及びハフマンエンコーディングを行う並列装置
US7996581B2 (en) DMA engine
WO2020025006A1 (zh) 数据压缩、解压方法及相关装置、电子设备、系统
TW201512839A (zh) 用於週邊介面控制器之嵌入式加密/安全記憶體管理單元
CN108028664A (zh) 使用具有多个搜索引擎的加速器的数据压缩
CN107209663B (zh) 数据格式转换装置、缓冲芯片及方法
KR20190050975A (ko) 프로세서 기반 시스템들에서의 작은 데이터 블록들을 위한 효율적인 무손실 압축 제공
CN105700821B (zh) 半导体装置及其压缩/解压缩方法
US20190123763A1 (en) Data compression engine for dictionary based lossless data compression
KR20170115521A (ko) Cpu(central processing unit)-기반 시스템에서 cmc(compressed memory controller)들에 의한 백-투-백 읽기 동작들을 사용하는 메모리 대역폭 압축 제공
US9998143B2 (en) System, apparatus, and method for decompressing data
TWI526929B (zh) 壓縮碼的加速執行技術
JP2003186668A (ja) 命令コード変換ユニットおよび命令コード変換方法
US20130304955A1 (en) Methods and Apparatuses for Trace Multicast Across a Bus Structure, and Related Systems
US8356145B2 (en) Multi-stage multiplexing operation including combined selection and data alignment or data replication
US20070011369A1 (en) Low overhead serial interface
US20150154107A1 (en) Non-volatile memory sector rotation
JP2009009289A (ja) 半導体記憶装置
TW201913364A (zh) 在以區塊架構處理器為基礎系統中快取指令區塊標頭資料
EP1607886A2 (en) Design method and program for a bus control portion in a semiconductor integrated device
US20180183573A1 (en) Ultra-lightweight cryptography accelerator system
US20170046168A1 (en) Scalable single-instruction-multiple-data instructions
US20160140059A1 (en) Multiple memory management units
CN116569151A (zh) 多通道存储器系统

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees