TW201725502A - 使用具有多個搜尋引擎之加速器的資料壓縮 - Google Patents

使用具有多個搜尋引擎之加速器的資料壓縮 Download PDF

Info

Publication number
TW201725502A
TW201725502A TW105130212A TW105130212A TW201725502A TW 201725502 A TW201725502 A TW 201725502A TW 105130212 A TW105130212 A TW 105130212A TW 105130212 A TW105130212 A TW 105130212A TW 201725502 A TW201725502 A TW 201725502A
Authority
TW
Taiwan
Prior art keywords
hash
item
overflow
processor
compression accelerator
Prior art date
Application number
TW105130212A
Other languages
English (en)
Other versions
TWI727971B (zh
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 TW201725502A publication Critical patent/TW201725502A/zh
Application granted granted Critical
Publication of TWI727971B publication Critical patent/TWI727971B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • 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
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3086Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing a sliding window, e.g. LZ77
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • 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
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6011Encoder aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0638Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • G06F12/0684Configuration or reconfiguration with feedback, e.g. presence or absence of unit detected by addressing, overflow detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • G06F12/1018Address translation using page tables, e.g. page table structures involving hashing techniques, e.g. inverted page tables

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

在實施例中,一種處理器包括硬體處理核心、快取記憶體、及包含雜湊表記憶體的壓縮加速器。該壓縮加速器係用以:決定待壓縮之輸入資料的雜湊值;讀取儲存在藉由該雜湊值索引之雜湊表項目中的第一複數個N個位置值;使用儲存在該雜湊表項目中之第一複數個N個位置值從歷史緩衝器平行地實施第一組字串搜尋;讀取儲存在藉由包括在該雜湊表項目中的第一溢位指標索引之第一溢位表項目中的第二複數個N個位置值;及使用儲存在該第一溢位表項目中之該第二複數個N個位置值從該歷史緩衝器平行地實施第二組字串搜尋。描述並聲明其他實施例。

Description

使用具有多個搜尋引擎之加速器的資料壓縮
實施例通常相關於資料壓縮。更明確地說,實施例相關於使用具有多個搜尋引擎之加速器的資料壓縮。
計算及網路上的進步已與降低資料尺寸的壓縮技術的使用關聯。例如,網際網路服務可使用壓縮技術以減少網路流量所需要的帶寬。另外,計算裝置可使用壓縮以降低儲存資料所需要的儲存空間量。
100、300、1200、1300‧‧‧系統
110、302、303、400、900、1410‧‧‧處理器
115‧‧‧處理核心
118、1015、1025‧‧‧快取記憶體
120、310‧‧‧壓縮加速器
121、122‧‧‧資料結構
128A-128N‧‧‧比較器
130、1415‧‧‧系統記憶體
140‧‧‧雜湊表
141‧‧‧雜湊表記憶體
142A-142D、152A-152D‧‧‧位置欄位
144、174A、174B‧‧‧溢位指標欄位
145、146、147、170‧‧‧雜湊項目
150‧‧‧溢位表
154‧‧‧鏈接指標欄位
156、180A-180D‧‧‧溢位項目
160‧‧‧歷史緩衝器
161‧‧‧本地歷史記憶體
164‧‧‧本地歷史緩衝器
168‧‧‧遠處歷史緩衝器
172‧‧‧位置部分
174‧‧‧溢位部分
184B、184C‧‧‧指標部分
200、220、250‧‧‧序列
301‧‧‧多域處理器
304a-304n、3200-320n、370a-370n、401、402、600、700800‧‧‧核心
308a-308n、308x‧‧‧積體電壓調整器(IVR)
312、335、388‧‧‧功率控制單元(PCU)
313‧‧‧輸入/輸出介面
314、3400-340n、386a-386n、960a-960d、1592、1596‧‧‧介面
315、384、1050‧‧‧積體記憶體控制器
316‧‧‧外部電壓調整器
317‧‧‧電源供應
321‧‧‧核心域
3220-322n‧‧‧最末級快取記憶體(LLC)
323‧‧‧環形互連
324、1030‧‧‧圖形域
330‧‧‧系統代理器域
332、955‧‧‧顯示器控制器
342‧‧‧積體記憶體控制器(IMC)
375‧‧‧互連
380‧‧‧非核心
382‧‧‧共享快取記憶體
401a、401b‧‧‧硬體緒
402a、402b‧‧‧架構狀態暫存器
405‧‧‧匯流排介面模組
410‧‧‧更高階或更外部的快取記憶體
420‧‧‧分支目標緩衝器及指令轉換緩衝器(I-TLB)
425‧‧‧解碼模組
430‧‧‧配置器及重新命名器方塊
435‧‧‧重排序/引退單元
440‧‧‧排程器及執行單元(等)方塊
450‧‧‧低階資料快取記憶體及資料-TLB
460‧‧‧功率控制器
470、935‧‧‧記憶體控制器
500、1574a、1574b、1584a、1584b‧‧‧處理器核心
501、710、810‧‧‧提取單元
503、610‧‧‧指令快取記憶體
505、615‧‧‧指令解碼器
510‧‧‧前端單元
515‧‧‧無序(OOO)引擎
520‧‧‧執行單元
522‧‧‧算術邏輯單元(ALU)
524‧‧‧向量執行單元
530‧‧‧暫存器檔案
535‧‧‧延伸暫存器檔案
540、680‧‧‧重排序緩衝器(ROB)
550‧‧‧快取記憶體
605‧‧‧分支預測器
618‧‧‧微碼ROM
620‧‧‧發佈佇列
630‧‧‧浮點管線
632‧‧‧浮點暫存器檔案
634‧‧‧浮點排程器
635、645‧‧‧ALU
636‧‧‧變換單元
638‧‧‧浮點加法器
640‧‧‧整數管線
642‧‧‧整數暫存器檔案
644‧‧‧整數排程器
646‧‧‧移位器單元
648‧‧‧跳躍執行單元
650‧‧‧記憶體執行排程器
652‧‧‧位址產生單元
654‧‧‧TLB
660‧‧‧資料快取記憶體
670‧‧‧配置器/重新命名器
715‧‧‧解碼單元
725、830‧‧‧發佈邏輯
730、825‧‧‧佇列
735、835‧‧‧整數單元
740、840‧‧‧乘法單元
750、850‧‧‧浮點/向量單元
760‧‧‧雙重發佈單元
770、870‧‧‧載入/儲存單元
780、880‧‧‧寫回單元
815‧‧‧解碼器/重新命名器/分派器
860‧‧‧分支單元
9100-910n‧‧‧核心單元
920‧‧‧圖形單元
925‧‧‧影像信號處理器
930‧‧‧非揮發性儲存器
940‧‧‧功率管理器
945、1250‧‧‧安全處理器
950‧‧‧視訊編碼器
1000、1100、1310‧‧‧SoC
1010‧‧‧第一核心域
10120-12123‧‧‧第一核心
1020‧‧‧第二核心域
10220-12223‧‧‧第二核心
1040‧‧‧同調互連
1110‧‧‧中央處理單元(CPU)域
1120‧‧‧GPU域
1130‧‧‧DSP單元
1140‧‧‧通訊單元
1150‧‧‧多媒體處理器
1160‧‧‧感測器單元
1170‧‧‧影像信號處理器
1180‧‧‧顯示處理器
1190‧‧‧位置單元
1205‧‧‧基帶處理器
1210‧‧‧應用處理器
1215、1380‧‧‧功率管理積體電路(PMIC)
1220‧‧‧使用者介面/顯示器
1225、1360‧‧‧感測器
1230、1340‧‧‧快閃記憶體
1235、1345‧‧‧動態隨機存取記憶體(DRAM)
1240‧‧‧拍攝裝置
1245‧‧‧通用積體電路卡(UICC)
1260‧‧‧近場通訊(NFC)非接觸式介面
1265‧‧‧NFC天線
1270‧‧‧射頻(RF)收發器
1275‧‧‧無線區域網路(WLAN)收發器
1280‧‧‧GPS感測器
1290、1355‧‧‧天線
1295‧‧‧音訊輸出裝置
1320‧‧‧觸控面板
1325‧‧‧周邊集線器
1330‧‧‧乙太網路介面
1350、1450‧‧‧WLAN單元
1365‧‧‧音訊編碼解碼器
1370‧‧‧音訊輸出裝置
1390‧‧‧電池
1395‧‧‧AC配接器
1400‧‧‧電腦系統
1420‧‧‧大量儲存器
1422‧‧‧快閃記憶體裝置
1424‧‧‧顯示器
1425‧‧‧觸控螢幕
1430‧‧‧觸控板
1435‧‧‧嵌入式控制器
1436‧‧‧鍵盤
1437‧‧‧風扇
1438‧‧‧可信賴平台模組(TPM)
1439、1446‧‧‧熱感測器
1440‧‧‧感測器集線器
1441‧‧‧加速度計
1442‧‧‧周邊光感測器(ALS)
1443‧‧‧羅盤
1444‧‧‧迴轉儀
1445‧‧‧NFC單元
1452‧‧‧藍牙單元
1454‧‧‧照相機模組
1455‧‧‧GPS模組
1456‧‧‧WWAN單元
1457‧‧‧用戶識別模組(SIM)
1460‧‧‧數位訊號處理器(DSP)
1462‧‧‧積體編碼器/解碼器(CODEC)及放大器
1463‧‧‧輸出揚聲器
1464‧‧‧耳機插口
1465‧‧‧麥克風
1500‧‧‧多處理器系統
1514‧‧‧輸入/輸出(I/O)裝置
1516‧‧‧第一匯流排
1518‧‧‧匯流排橋接器
1520‧‧‧第二匯流排
1522‧‧‧鍵盤/滑鼠
1524‧‧‧音訊I/O
1526‧‧‧通訊裝置
1528‧‧‧資料儲存單元
1530‧‧‧碼
1532、1534‧‧‧記憶體
1538‧‧‧圖形引擎
1539、1562、1564‧‧‧P-P互連
1550‧‧‧點-對-點互連
1570‧‧‧第一處理器
1572、1582‧‧‧記憶體控制器集線器(MCH)
1576、1578、1586、1588‧‧‧點-對-點(P-P)介面
1580‧‧‧第二處理器
1590‧‧‧晶片組
1594、1598‧‧‧P-P介面
圖1A係根據一或多個實施例之系統的方塊圖。
圖1B係根據一或多個實施例之系統的方塊圖。
圖1C係根據一或多個實施例之範例資料結構的方塊圖。
圖1D係根據一或多個實施例之範例資料結構的方塊圖。
圖2A係根據一或多個實施例的序列。
圖2B係根據一或多個實施例之用於雜湊更新操作的 序列。
圖2C係根據一或多個實施例之用於雜湊查找操作的序列。
圖3A係根據一或多個實施例的系統之一部分的方塊圖。
圖3B係根據一或多個實施例之多域處理器的方塊圖。
圖3C係根據一或多個實施例之處理器的方塊圖。
圖4係根據一或多個實施例之包括多個核心的處理器的方塊圖。
圖5係根據一或多個實施例的處理器核心之微架構的方塊圖。
圖6係根據一或多個實施例的處理器核心之微架構的方塊圖。
圖7係根據一或多個實施例的處理器核心之微架構的方塊圖。
圖8係根據一或多個實施例的處理器核心之微架構的方塊圖。
圖9係根據一或多個實施例之處理器的方塊圖。
圖10係根據一或多個實施例之代表性SoC的方塊圖。
圖11係根據一或多個實施例之另一範例SoC的方塊圖。
圖12係一或多個實施例能使用其之範例系統的方塊 圖。
圖13係一或多個實施例可使用其之另一範例系統的方塊圖。
圖14係根據一或多個實施例之電腦系統的方塊圖。
圖15係根據一或多個實施例之系統的方塊圖。
【發明內容及實施方式】
部分無損資料壓縮演算法合併Lempel-Ziv(「LZ」)演算法,諸如,LZ77。例如,DEFLATE壓縮演算法使用LZ77演算法及霍夫曼編碼的組合。LZ77演算法藉由以對資料串流內的相同字串之較早實例的參考取代字串而實施重複字串消除。該參考係藉由長度-距離(L,D)對編碼。為識別與較早字串的匹配,LZ77使用資料串流之最近部分的滑動窗。在DEFLATE演算法中,在LZ77重複字串消除操作之後的係使用霍夫曼編碼技術的編碼操作。在霍夫曼編碼中,系統使用基於熵的可變長度碼表編碼,使得較常見的符號通常使用比較不常見的符號更少的位元表示。部分LZ77操作可使用鏈接串列以識別待與目前字串比較的較早字串。例如,鏈接串列可致能循序地讀取記憶體位置鏈以識別匹配字串。然而,連鎖位置的循序讀取可限制實施LZ77操作的速度。
根據部分實施例,硬體壓縮加速器可包括多個比較器或搜尋引擎以比較較早字串及目前字串。壓縮加速器使用可分割於內部記憶體及外部記憶體之間的混合記憶體資料 結構。在部分實施例中,壓縮加速器能以使用可包括多個位置值及/或項目指標之表項目的平行方式處理字串。因此,部分實施例可降低存取字串的延遲時間。另外,部分實施例可致能使用壓縮加速器中之記憶體結構的彈性及效率。
雖然下列實施例係參考特定實作描述,實施例未受限於此方面。特別係預期可將本文描述之實施例的相似技術及教示施用至其他種類的電路、半導體裝置、處理器、系統等。例如,所揭示的實施例可用任何種類的電腦系統實作,包括伺服器電腦(例如,直立式、機架式、刀鋒式、及微伺服器等),通訊系統、儲存系統、任何組態的桌上型電腦、膝上型電腦、筆記型電腦、及平板電腦(包括2:1平板電腦、平板手機等)。
另外,所揭示的實施例也能使用在其他裝置中,諸如,手持裝置、系統單晶片(SoC)、及嵌入式應用。手持裝置的部分範例包括蜂巢式電話,諸如,智慧型手機、網際網路協定裝置、數位相機、個人數位助理(PDA)、及手持PC。嵌入式應用典型可包括微控制器、數位訊號處理器(DSP)、網路電腦(NetPC)、機上盒、網路集線器、廣域網路(WAN)交換器、可穿戴裝置、或能實施下文教示之功能及操作的任何其他系統。另外,實施例可實作在具有標準語音功能的行動終端中,諸如,行動電話、智慧型手機、及平板手機、及/或在沒有標準無線語音功能通訊能力的非行動終端中,諸如,可穿戴裝置、平板電腦、筆記 型電腦、桌上型電腦、微伺服器、及伺服器等。
現在參考圖1A,顯示根據一或多個實施例之系統100的方塊圖。在部分實施例中,系統100可係電子裝置或組件的整體或一部分。例如,系統100可係蜂巢式電話、電腦、伺服器、網路裝置、系統單晶片(SoC)、控制器、無線收發器、電源供應單元等。此外,在部分實施例中,系統100可係相關或互連裝置的任何群組,諸如,資料中心、計算叢集等。
如圖1A所示,系統100可包括處理器110及系統記憶體130。另外,雖然未顯示於圖1A中,系統100可包括其他組件。處理器110可係通用硬體處理器(例如,中央處理單元(CPU))。如所示的,處理器110能包括任何數目的處理核心115、壓縮加速器120、及快取記憶體118。各核心115可係通用處理核心。系統記憶體130及快取記憶體118能使用任何種類(等)的電腦記憶體實作(例如,動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、非揮發性記憶體、(NVM)、DRAM及NVM的組合等)。快取記憶體118可包括處理器級快取記憶體、核心級快取記憶體、共享快取記憶體、及/或任何彼等的組合。
在一或多個實施例中,壓縮加速器120可係專用於實施壓縮操作的硬體單元。例如,壓縮加速器120可係任何硬體單元,諸如,壓縮共處理器、插卡、模組、晶片、處理區塊等。壓縮加速器120可接收輸入資料,並可實施操 作以壓縮該輸入資料。例如,在部分實施例中,壓縮加速器120可實施基於LZ77演算法的壓縮操作,並可使用長度-距離對以編碼輸入資料內的重複字串。另外,在部分實施例中,壓縮加速器120可使用其他壓縮演算法。例如,壓縮加速器120可使用DEFLATE演算法、Lempel-Ziv-Oberhumer(LZO)演算法、Lempel-Ziv-Stac(LZS)演算法、LZ4演算法、及LZF演算法等。
現在參考圖1B,顯示根據一或多個實施例之壓縮加速器120的方塊圖。如所示的,壓縮加速器120可包括雜湊表記憶體141、本地歷史記憶體161、及任何數目N的比較器128A-128N(共同稱為「比較器128」)。另外,在部分實施例中,壓縮加速器120可耦接至溢位表150及遠處歷史緩衝器168。
在部分實施例中,雜湊表記憶體141及本地歷史記憶體161係包括在壓縮加速器120中的特殊化記憶體單元。例如,雜湊表記憶體141及本地歷史記憶體161可包括DRAM、SRAM、及NVM等。本地歷史記憶體161專用於儲存本地歷史緩衝器164。在部分實施例中,本地歷史緩衝器164儲存固定數目之最近由壓縮加速器120處理的字元(稱為「滑動窗」)。例如,在一實施例中,本地歷史緩衝器164儲存具有16KB之容量的滑動窗。
在部分實施例中,能將從本地歷史緩衝器164之滑動窗逾期的字元儲存在遠處歷史緩衝器168中。在部分實施例中,遠處歷史緩衝器168可儲存於壓縮加速器120外 部。例如,遠處歷史緩衝器168可儲存在快取記憶體118或系統記憶體130中(顯示於圖1A中)、在快取記憶體118及系統記憶體130的組合中、或在系統100的任何其他儲存位置中。本地歷史緩衝器164及遠處歷史緩衝器168可共同稱為「歷史緩衝器」。
雜湊表記憶體141可專用於儲存雜湊表140。雜湊表140能包括任何數目之根據雜湊值索引的項目(本文中稱為「雜湊項目」)。在部分實施例中,雜湊表140的各雜湊項目對應於輸入資料部分(例如,三個位元組的字串)的獨特雜湊值。各雜湊項目能包括一組N個位置欄位及指標欄位。N個位置欄位各者能儲存指示與該雜湊項目的雜湊值關聯之先前處理的字串之歷史緩衝器位置的位置值。例如,在一實施例中,雜湊表140能包括32KB的雜湊項目,各雜湊項目包括四個位置欄位。在部分實施例中,將雜湊表140之變滿的各雜湊項目移至溢位表150。參考圖1C於下文描述將雜湊項目移動至溢位表150的範例。
在部分實施例中,各比較器128A-128N可係包括搜尋歷史緩衝器中的匹配字串之電路/邏輯的執行單元。例如,在部分實施例中,各比較器128A-128N能藉由比較輸入資料與從歷史緩衝器讀取之一系列字元而實施搜尋操作。從歷史緩衝器讀取的資料可使用雜湊表140及/或溢位表150的位置欄位存取。在部分實施例中,各比較器128A-128N能存取歷史緩衝器中的不同位置。因此,比較器128A-128N能平行地實施N個搜尋操作。
現在參考圖1C,顯示根據一或多個實施例之範例資料結構121的方塊圖。具體地說,圖1C顯示雜湊表140、溢位表150、及歷史緩衝器160的範例。歷史緩衝器160可對應於本地歷史緩衝器164、遠處歷史緩衝器168、或彼等的組合。須注意顯示於圖1C中的資料結構121係為便於例示而提供,且未意圖限制任何實施例。
如圖1C所示,雜湊表140包括多列,各列代表一雜湊項目。在此範例中,將雜湊表140的各雜湊項目顯示成包括四個位置欄位142A-142D(共同稱為位置欄位142)及溢位指標欄位144。各雜湊項目係由輸入資料部分(例如,資料串流中之字元的字串)的獨特雜湊值索引。更新雜湊表140的處理可稱為「雜湊更新」操作。另外,讀取雜湊表140的處理可稱為「雜湊查找」操作。
如圖1C所示,溢位表150包括多列,各列代表一溢位項目。在此範例中,將溢位項目150的各溢位項目顯示成包括四個位置欄位152A-152D(共同稱為位置欄位152)及鏈接指標欄位154。另外,歷史緩衝器160包括許多儲存位置以儲存輸入資料(例如,字元的滑動窗)。在部分實施例中,雜湊表140的雜湊項目及/或溢位表150的溢位項目可調整尺寸以與快取記憶體118(顯示於圖1A中)中的快取線匹配。
假設圖1C顯示資料結構在壓縮操作期間的狀態。進一步假設在啟始及/或重設壓縮操作時,資料結構121不包括任何值(未圖示)。
在部分實施例中,在壓縮操作期間,將受處理的各字串儲存在歷史緩衝器160的最初位置(亦即,在滑動窗的開始)中。另外,決定字串的雜湊值,並將歷史緩衝器160中之該字串的位置儲存在字串的雜湊值索引之雜湊項目的位置欄位142中。此處理能重複至雜湊項目中的所有四個位置欄位142均為個別位置值填滿為止。例如,假設與雜湊項目146關聯的字串在壓縮操作期間已發生二次,且與雜湊項目145關聯的字串在壓縮操作期間已發生四次。因此,如圖1C所示,雜湊項目146的前二個位置欄位142A-142B各者包括識別歷史緩衝器160中之不同位置的位置值(由字母「L」表示),但雜湊項目146的其餘位置欄位142C-142D及溢位指標欄位144仍保持空白。另外,如所示的,雜湊項目145的四個位置欄位142A-142D各者均包括位置值。
在部分實施例中,在雜湊項目中的所有位置欄位142均已填充的情形中,將儲存在雜湊項目中的值移動或「溢位」至溢位表150的新項目。例如,參考雜湊項目145,若遇到具有相同雜湊的新字串,可在溢位表150中產生新的溢位項目,並可將雜湊項目的內容(例如,儲存在位置欄位142A-142D中的值及溢位指標欄位144)複製至新溢位項目。可將雜湊項目的內容刪除,且因此可清除雜湊項目的欄位以儲存新資料。另外,雜湊項目的溢位指標欄位144可用指向新溢位項目的指標填充。以此方式,溢位指標欄位144可界定從雜湊項目至新溢位項目的鏈接。例 如,參考圖1C,將雜湊項目147的溢位指標欄位144顯示成包括指向溢位項目156的溢位指標(藉由字母「OP」表示),因此指示雜湊項目147的四個位置欄位142A-142D已於先前填充,然後將雜湊項目147之位置欄位142A-142D的內容溢位至溢位項目156。
在部分實施例中,溢位表150可對雜湊項目包括鏈接成鏈的多個溢位項目。例如,參考圖1C,假設雜湊項目147已溢位二次。因此,將溢位項目156顯示成包括指向溢位項目158的鏈接指標(藉由字母「LP」表示),因此指示雜湊項目147先溢位至溢位項目158,然後溢位至溢位項目156。以此方式,鏈接指標欄位154可用於鏈接任何數目之溢位項目的鏈。須注意溢位項目158的鏈接指標欄位154係空的,因此指示溢位項目158係在雜湊項目147溢位的第一實例中產生。
在部分實施例中,當雜湊項目的所有位置欄位142均填充時,可僅將雜湊表140的一雜湊項目移動或溢位至溢位表150。因此,在部分實施例中,溢位表150之各溢位項目中的所有位置欄位152在操作期間均係填滿的。
在部分實施例中,溢位表150可儲存於壓縮加速器120外部。例如,參考圖1A,溢位表150可儲存在快取記憶體118、系統記憶體130、快取記憶體118及系統記憶體130的組合、或系統100的任何其他儲存位置中。在部分實施例中,溢位表150不係根據位置索引,更確切地說係藉由來自雜湊表140的指標指示。因此,在此種實施例 中,溢位表150可與歷史資料結構中的位置數無關地包括任何數目的項目。
在部分實施例中,各比較器128(顯示於圖1B中)使用獨特位置欄位以從歷史緩衝器160讀取資料。換言之,壓縮加速器120中之比較器128的數目N能等於雜湊表140中之位置欄位的數目。例如,參考圖1B-1C,假設壓縮加速器120包括四個比較器128,各比較器128使用位置欄位142A-142D的不同一者存取歷史緩衝器160。因此,在此範例中,壓縮加速器120的四個比較器128能對讀取的各雜湊項目或溢位項目實施四個平行搜尋操作。因此,在部分實施例中,各比較器128的讀取等待時間可藉由平行地存取N個位置而降低。
現在參考圖1D,顯示根據一或多個實施例之範例資料結構122的方塊圖。具體地說,根據部分實施例,圖1D顯示雜湊項目170及溢位項目180A-180D(共同稱為溢位項目180)。
如圖1D所示,雜湊項目170能包括位置部分172及溢位部分174。在部分實施例中,位置部分172能包括多個位置欄位,且溢位部分174能包括二個溢位指標欄位174A-174B。另外,各溢位項目180能包括位置部分182及指標部分184。在部分實施例中,位置部分182能包括多個位置欄位,且指標部分184可係鏈接指標欄位。
如所示的,在部分實施例中,溢位指標欄位174A能包括指向溢位項目180C的溢位指標。另外,溢位指標欄 位174B能包括指向溢位項目180B的溢位指標。須注意,在此範例中,溢位項目180C的指標部分184C包括指向溢位項目180D的鏈接指標。另外,溢位項目180B的指標部分184B包括指向溢位項目180A的鏈接指標。因此,雜湊項目170鏈接至溢位項目的二個分開鏈,亦即,包括溢位項目180B及溢位項目180A的第一鏈,及包括溢位項目180C及溢位項目180D的第二鏈。因此,以此方式,多個溢位指標欄位174A-174B可致能雜湊項目170鏈接至溢位項目180的多個鏈。
須注意,在圖1A-1D顯示各種範例的同時,實施例未受限於此方面。特別係預期系統100及/或壓縮加速器可包括與圖1A-1B所示不同的組件、額外的組件、組件的不同配置、及/或不同數目的組件。例如,壓縮加速器120可包括霍夫曼編碼器(未圖示)。另外,參考圖1C,雜湊表140及/或溢位表150可包括任何數目的列、行、及欄位等,及列、行、及欄位等的任何配置。例如,在部分實施例中,溢位表150的各溢位項目可包括儲存與溢位項目關聯之雜湊值的欄位(未圖示)。在部分實施例中,壓縮加速器120可使用此種雜湊值欄位以驗證經由指標存取的溢位項目係至雜湊表140之指定雜湊項目的有效鏈接。另外,在部分實施例中,雜湊表140可使用相同的欄位位置(亦即,對應於溢位項目中之雜湊值欄位的欄位)以儲存額外的溢位指標(例如,如圖1D中所示的溢位指標欄位174B)。
現在參考圖2A,顯示根據一或多個實施例的序列200。在部分實施例中,序列200可係圖1A-1C所示之壓縮加速器120的一部分。序列200可用硬體、軟體、及/或韌體實作。在韌體及軟體實施例中,其可藉由儲存在非暫態機器可讀媒體,諸如,光學、半導體、或磁性儲存裝置,中的電腦執行指令實作。該機器可讀媒體可儲存資料,若該資料由至少一個機器使用,導致該至少一個機器製造至少一個積體電路以實施方法。為了說明,包含在序列200中的步驟可參考圖1A-1C於下文描述,其顯示根據部分實施例的範例。然而,本文討論之各種實施例的範圍未限於此方面。
在方塊202,硬體壓縮加速器可接收待壓縮的輸入資料。例如,參考圖1A-1B,壓縮加速器120能接收待壓縮的字串。
在方塊204,可決定輸入資料的雜湊值。例如,參考圖1A-1B,壓縮加速器120能計算輸入字串(例如,位元組、一組位元組等)的雜湊值。
在方塊206,壓縮加速器可讀取包括在藉由雜湊值索引之雜湊表項目中的N個位置值。例如,參考圖1A-1C,壓縮加速器120能讀取雜湊表140之雜湊項自145中的位置欄位142A-142D,並因此得到對應於歷史緩衝器160中之四個不同位置的一組值。
在方塊207,可基於從雜湊表項目得到的N個位置值平行地從歷史緩衝器搜尋第一複數個字串。例如,參考圖 1A-1C,比較器128A-128N能實施輸入資料對從藉由雜湊項目之位置欄位142A-142D識別的四個位置得到之四個字串的分開平行比較。在部分實施例中,該位置可包括在歷史緩衝器160中。
在方塊208,壓縮加速器可讀取包括在藉由包括在雜湊表項目中的指標索引之溢位表項目中的N個位置值。例如,參考圖1A-1C,壓縮加速器120能讀取藉由儲存在雜湊項目147之溢位指標欄位144中的指標索引之溢位項目156中的位置欄位152A-152D,並因此從歷史緩衝器160得到第二組值。在部分實施例中,壓縮加速器120可進一步使用指標讀取額外溢位項目中的位置欄位。
在方塊209,可基於從溢位表項目得到的位置值平行地從歷史緩衝器搜尋第二複數個字串。例如,參考圖1A-1C,比較器128A-128N能實施輸入資料對從藉由溢位項目之位置欄位152A-152D識別的四個位置得到之四個字串的分開平行比較。
在方塊210,可選擇搜尋字串的其中一者。例如,參考1A-1C,壓縮加速器120能選擇其係輸入字串的最佳匹配之儲存在歷史緩衝器160中的字串。在部分實施例中,選擇為最佳匹配的字串包括匹配輸入資料之字元的最長序列。
在方塊212,可使用選擇字串對於輸入資料實施重複字串消除操作。例如,參考圖1A-1C,壓縮加速器120可編碼該匹配的距離及長度以產生距離/長度對。若沒有合 適匹配,將目前字串(例如,位元組)輸出為未編碼的文字。壓縮加速器120可處理輸入資料的串流,並可產生編碼的距離/長度對及文字的輸出串流。在部分實施例中,輸出串流可係LZ77串流。另外,在部分實施例中,輸出串流可提供至用於進一步壓縮的霍夫曼編碼器。在方塊212之後,序列200完成。
現在參考圖2B,顯示根據一或多個實施例之用於雜湊更新操作的序列220。在部分實施例中,序列220可係圖1A-1B所示之壓縮加速器120的一部分。序列220可用硬體、軟體、及/或韌體實作。在韌體及軟體實施例中,其可藉由儲存在非暫態機器可讀媒體,諸如,光學、半導體、或磁性儲存裝置,中的電腦執行指令實作。該機器可讀媒體可儲存資料,若該資料由至少一個機器使用,導致該至少一個機器製造至少一個積體電路以實施方法。為了說明,包含在序列220中的步驟可參考圖1A-1C於下文描述,其顯示根據部分實施例的範例。然而,本文討論之各種實施例的範圍未限於此方面。
在方塊222,可決定輸入資料的雜湊值。例如,參考圖1A-1B,壓縮加速器120能計算輸入字串(例如,位元組、一組位元組等)的雜湊值。
在方塊224,產生與對應於雜湊值之雜湊項目是否存在於雜湊表中有關的決定。例如,參考圖1A-1C,壓縮加速器120可決定雜湊表140是否包括由輸入資料之雜湊值索引的雜湊項目。
若在方塊224決定對應於雜湊值的雜湊項目不存在於雜湊表中,則在方塊226,將新的雜湊項目加至雜湊表。例如,參考圖1A-1C,壓縮加速器120可決定雜湊表140不包括與雜湊值關聯的雜湊項目,然後可將新雜湊項目加至雜湊表140。
在方塊234,可將輸入資料的位置加至雜湊項目的空欄位。例如,參考圖1A-1C,壓縮加速器120可將儲存在雜湊項目146之位置欄位142A-142B中的位置值移位一欄位,並可將輸入字串的位置值儲存在雜湊項目146的位置欄位142A中。在方塊234之後,序列220可完成。
然而,若在方塊224決定對應於該雜湊值的雜湊項目不存在於雜湊表中,則在方塊230,產生與雜湊項目中的所有位置欄位是否均填滿的決定(例如,已用位置值填充)。例如,參考圖1A-1C,壓縮加速器120可決定雜湊項目146的所有位置欄位142A-142D是否均填滿。
若在方塊230決定雜湊項目中的所有位置欄位未均填滿,則序列220可在(上述)方塊234繼續。在方塊234之後,序列220可完成。
然而,若方塊230決定雜湊項目中的所有位置欄位均填滿,則在方塊240,可將新的溢位項自產生在溢位表中。例如,參考圖1A-1C,壓縮加速器120能在溢位表150中產生新的溢位項目。在部分實施例中,在先前溢位項目已與雜湊項目關聯的情形中,新溢位項目的鏈接指標欄位154可用指向先前溢位項目的鏈接指標填充。例如, 參考圖1C,溢位項目156的鏈接指標欄位154包括指向溢位項目158的鏈接指標。
在方塊244,雜湊項目的位置欄位可溢位至新溢位項目。在方塊246,可將指向新溢位項目的指標加至雜湊項目的溢位指標欄位。例如,參考圖1A-1C,壓縮加速器120可將雜湊項目的位置欄位移動至新溢位項目,並可填充雜湊項目的溢位指標欄位。在方塊246,序列220可在(上述)方塊234繼續。在方塊234之後,序列220可完成。
現在參考圖2C,顯示根據一或多個實施例之用於雜湊查找操作的序列250。在部分實施例中,序列220可係圖1A-1B所示之壓縮加速器120的一部分。序列250可用硬體、軟體、及/或韌體實作。在韌體及軟體實施例中,其可藉由儲存在非暫態機器可讀媒體,諸如,光學、半導體、或磁性儲存裝置,中的電腦執行指令實作。該機器可讀媒體可儲存資料,若該資料由至少一個機器使用,導致該至少一個機器製造至少一個積體電路以實施方法。為了說明,包含在序列250中的步驟可參考圖1A-1C於下文描述,其顯示根據部分實施例的範例。然而,本文討論之各種實施例的範圍未限於此方面。
在方塊252,可決定輸入資料的雜湊值。例如,參考圖1A-1B,壓縮加速器120能計算輸入字串(例如,位元組、一組位元組等)的雜湊值。
在方塊254,可讀取包括在與雜湊值關聯之表項目中 的N個位置值。例如,參考圖1A-1C,壓縮加速器120能讀取雜湊表140之雜湊項目145中的位置欄位142A-142D,並因此得到對應於歷史緩衝器160中之四個不同位置的值。
在方塊256,可使用得自表項目的N個位置值平行地實施一組N個比較。例如,參考圖1A-1C,各比較器128A-128N能實施輸入資料對儲存在歷史緩衝器160中的不同字串的分開比較。
在方塊258,產生與雜湊查找操作是否完成有關的決定。例如,參考圖1A-1C,壓縮加速器120可決定匹配字串的搜尋是否已滿足最小臨限(例如,匹配的長度、搜尋的持續時間、及鏈接的數目等)。若在方塊258決定雜湊查找操作完成,則在方塊260,壓縮操作可使用已發現的最佳匹配實施。例如,參考圖1A-1C,壓縮加速器120可使用雜湊查找操作期間發現的最長匹配字串實施LZ77演算法。在方塊260之後,序列250可完成。
然而,若在方塊258決定雜湊查找操作未完成,則在方塊262,產生與是否有指向溢位項目之指標的決定。例如,參考圖1A-1C,壓縮加速器120可決定雜湊項目147的溢位指標欄位144是否包括指向溢位表150中之溢位項目的指標。在另一範例中,壓縮加速器120可決定溢位項目156的鏈接指標欄位154是否包括指向溢位表150中之另一溢位項目的指標。
若在方塊262決定有指向溢位項目的指標,則在方塊 264,可跟隨該指標至該溢位項目。例如,參考圖1A-1C,壓縮加速器120可使用雜湊項目147的溢位指標欄位144以讀取溢位項目156。在另一範例中,壓縮加速器120可使用溢位項目156的鏈接指標欄位154以讀取溢位項目158。在方塊264,序列220可返回至(上述)方塊254。例如,參考圖1A-1C,壓縮加速器120可讀取溢位項目156或溢位項目158中的位置欄位152A-152D。然而,若在方塊262決定沒有指向溢位項目的指標,則序列220可完成。
須注意顯示於圖1A-1D及2A-2C中的操作係為了說明而提供,且未意圖限制任何實施例。預期於圖1A-1D及2A-2C中顯示之範例中的具體內容可在一或多個實施例中的任何位置使用。
現在參考至圖3A,顯示係根據本發明的實施例之系統300的方塊圖。如圖3A所示,系統300可包括各種組件,包括其如所示的係多核心處理器的處理器303。處理器303可經由其可實施第一電壓變換以提供主調整電壓至處理器303的外部電壓調整器316耦接至電源供應317。
如所見的,處理器303可係包括多個核心304a-304n的單一晶粒處理器。另外,各核心304可與積體電壓調整器(IVR)308a-308n關聯,其接收主調整電壓並產生操作電壓以提供至與IVR 308關聯之處理器的一或多個代理器。因此,可提供IVR實作以允許各獨立核心304之電壓並因此允許功率及效能的細質控制。因此,各核心304能以獨 立電壓及頻率操作,致能大量彈性並為平衡功率消耗及效能提供廣泛機會。在部分實施例中,多個IVR 308的使用致能將組件分組至分離的電力平台,使得電力受IVR 308調整並僅供應至該群組中的該等組件。在電源管理期間,當將處理器置於特定低功率狀態中時,可能將一IVR 308的指定電力平台的電源關閉或關機,同時另一IVR 308的另一電力平台持續活動或完整供電。
仍參考圖3A,包括輸入/輸出介面313、另一介面314、及積體記憶體控制器315的額外組件可存在於處理器內。如所見的,此等組件各者可藉由另一積體電壓調整器308x供電。在一實施例中,介面313可根據Intel®的快速通道互連(QPI)協定,其在包括多層的快取同調協定中提供點-對-點(PtP)鏈接,該多層包括實體層、鏈接層、及協定層。相反地,介面314可根據快速週邊組件互連(PCIeTM)規格,例如,PCI ExpressTM規格基本規格書第2.0版(2007年1月17日出版)。
也顯示功率控制單元(PCU)312,其可包括硬體、軟體、及/或韌體以實施關於處理器303的功率管理操作。如所見的,PCU 312經由數位介面提供控制資訊至外部電壓調整器316以導致外部電壓調整器316產生適當調整的電壓。PCU 312也經由另一數位介面提供控制資訊至IVR 308以控制所產生的操作電壓(或導致對應的IVR 308在低功率模式中除能)。在部分實施例中,提供至IVR 308的控制資訊可包括對應核心304的功率狀態。
在各種實施例中,PCU 312可包括各式各樣的功率管理邏輯單元以實施硬體為基的功率管理。此種功率管理可係完全處理器控制的(例如,藉由各種處理器硬體,且其可由工作量及/或功率、熱、或其他處理器限制觸發)及/或功率管理可回應於外部來源實施(諸如,平台或管理功率管理源或系統軟體)。
在部分實施例中,壓縮加速器310通常可對應於圖1A-1B所示的壓縮加速器120。在部分實施例中,處理器303可實作參考圖1A-1D及2A-2C於上文描述的部分或所有組件及/或功能。在為了便於說明而未顯示的同時,理解額外組件可存在於處理器303內,諸如,非核心邏輯及其他組件,諸如,內部記憶體,例如,一或多級快取記憶體階層等。此外,在圖3A的實作中顯示有外部電壓調整器的同時,實施例未受如此限制。
實施例能以針對各種市場的處理器實作,包括伺服器處理器、桌上型處理器、及行動處理器等。現在參考圖3B,顯示根據一或多個實施例之多域處理器301的方塊圖。如圖3B之實施例所示,處理器301包括多個域。具體地說,核心域321能包括複數個核心3200-320n,圖形域324能包括一或多個圖形引擎,並可進一步存在系統代理器域330。在部分實施例中,系統代理器域330可用與核心域無關的頻率執行,並可一直維持供電以應付功率控制事件及功率管理,使得能將域321及324控制成動態地進入及脫離高功率及低功率狀態。域321及324各者可用 不同電壓及/或功率操作。須注意在僅顯示有三個域的同時,理解本發明的範圍未限於此方面且額外域能存在於其他實施例中。例如,可存在多核心域,各核心域包括至少一個核心。
通常,除了各種執行單元及額外的處理元件外,各核心320可更包括低級快取記憶體。依次地,各種核心可彼此耦接並耦接至由最末級快取記憶體(LLC)3220-322n的複數個單元形成的共享快取記憶體。在各種實施例中,LLC 322可在核心及圖形引擎,以及各種媒體處理電路之中共享。如所見的,環形互連323因此將核心耦接在一起,並在核心320、圖形域324、及系統代理器域330之間提供互連。在一實施例中,互連323能係核心域321的一部分。然而,在其他實施例中,環形互連323能係其自有域的。
如進一步看見的,系統代理器域330可包括顯示器控制器332,其可提供關聯顯示器的控制及至其的介面。另外,系統代理器域330可包括功率控制單元335以實施功率管理。
如進一步在圖3B中看見的,處理器301能更包括積體記憶體控制器(IMC)342,其能提供至系統記憶體的介面,諸如,動態隨機存取記憶體(DRAM)。能存在多個介面3400-340n以致能處理器及其他電路之間的互連。例如,在一實施例中,可提供至少一個直接媒體介面(DMI)介面以及一或多個PCIeTM介面。另外,為提供其他代理 器之間的通訊,諸如,額外處理器或其他電路,也可提供根據Intel®的快速通道互連(QPI)協定的一或多個介面。雖然在圖3B的實施例中以此高階顯示,理解本發明的範圍未在此方面受限。
雖然為了便於圖3B中的描繪而未顯示,在部分實施例中,處理器301可包括參考圖1A-1B於上文描述的壓縮加速器120。另外,在部分實施例中,處理器301可實作參考圖1A-1D及2A-2C於上文描述的部分或所有組件及/或功能。
在為了便於說明而未顯示的同時,理解額外組件可存在於處理器303內,諸如,非核心邏輯及其他組件,諸如,內部記憶體,例如,一或多級快取記憶體階層等。此外,在圖3A的實作中顯示有外部電壓調整器的同時,實施例未受如此限制。
現在參考至圖3C,顯示係根據本發明的實施例之處理器302的方塊圖。如圖3C所示,處理器302可係包括複數個核心370a-370n的多核心處理器。在一實施例中,此種核心各者可係獨立功率域的,並能組態成基於工作量進入及脫離活動狀態及/或最大效能狀態。各種核心可藉由互連375耦接至系統代理器或包括各種組件的非核心380。如所見的,非核心380可包括其可係最末級快取記憶體的共享快取記憶體382。另外,非核心380可包括積體記憶體控制器384以,例如,經由記憶體匯流排與系統記憶體通訊(未顯示於圖3C中)。非核心380也包括各種 介面386a-386n及功率控制單元388,其可包括邏輯以實施本文描述的功率管理技術。
另外,藉由介面386a-386n,能產生至各種晶片外組件的連接,諸如,周邊裝置、及大量儲存器等。在此特定實作顯示在圖3C之實施例中的同時,本發明的範圍未在此方面受限。
雖然為了便於圖3C中的描繪而未顯示,在部分實施例中,處理器302可包括參考圖1A-1B於上文描述的壓縮加速器120。另外,在部分實施例中,處理器302可實作參考圖1A-1D及2A-2C於上文描述的部分或所有組件及/或功能。
參考圖4,描繪包括多個核心之處理器的實施例。處理器400包括任何處理器或處理裝置,諸如,微處理器、嵌入式處理器、數位訊號處理器(DSP)、網路處理器、手持式處理器、應用處理器、共處理器、系統單晶片(SoC)、或其他裝置以執行碼。在一實施例中,處理器400包括至少二個核心-核心401及402,其可包括非對稱核心或對稱核心(所說明的實施例)。然而,處理器400可包括任何數目之可係對稱或非對稱的處理元件。
在一實施例中,處理元件係指支援軟體緒的硬體或邏輯。硬體處理元件的範例包括:緒單元、緒槽、緒、處理單元、背景、背景單元、邏輯處理器、硬體緒、核心、及/或任何其他元件,其能保持處理器的狀態,諸如,執行狀態或架構狀態。換言之,在一實施例中,處理元件係指 能獨立地與碼,諸如,軟體緒、作業系統、應用程式、或其他碼,關聯的任何硬體。實體處理器典型係指積體電路,其可能包括任何數目的其他處理元件,諸如,核心或硬體緒。
核心通常指位於積體電路上之能維持獨立架構狀態的邏輯,其中各獨立維持架構狀態與至少部分專用執行資源關聯。與核心相反,硬體緒典型係指位在積體電路上之能維持獨立架構狀態的任何邏輯,其中該獨立維持架構狀態共享對執行資源的存取。如所能看見的,當共享特定資源且其他資源專用於一架構狀態時,硬體緒及核心的專門用語之間的線重疊。通常,核心及硬體緒被作業系統視為係獨立邏輯處理器,其中該作業系統能獨立地排程各邏輯處理器上的處理。
如圖4所描繪的,實體處理器400包括二個核心,核心401及402。此處,核心401及402被視為係對稱核心,亦即,具有相同結構、功能單元、及/或邏輯的核心。在另一實施例中,核心401包括無序處理器核心,同時核心402包括有序處理器核心。然而,核心401及402可獨立地從任何種類的核心選擇,諸如,原生核心、軟體管理核心、適於執行原生指令集架構(ISA)的核心、適於執行轉譯後ISA的核心、共同設計核心、或其他已知核心。使本討論更進一步,描繪於核心401中的功能單元將於下文更詳細地描述,而核心402中的單元係以相似方式操作。
如所描畫的,核心401包括二個硬體緒401a及401b,其也可稱為硬體緒槽401a及401b。因此,軟體實體,諸如,作業系統,在一實施例中可能將處理器400視為四個分開的處理器,亦即,能同時執行四個軟體緒的四個邏輯處理器或處理元件。如上文間接提及的,第一緒與架構狀態暫存器401a關聯、第二緒與架構狀態暫存器401b關聯、第三緒可與架構狀態暫存器402a關聯、且第四緒可與架構狀態暫存器402b關聯。此處,各架構狀態暫存器(401a、401b、402a、及402b)可如上文描述地稱為處理元件、緒槽、或緒單元。如所描繪的,架構狀態暫存器401a複製在架構狀態暫存器401b中,所以獨立架構狀態/背景能針對邏輯處理器401a及邏輯處理器401b儲存。在核心401中,其他較小資源,諸如,配置器及重新命名器方塊430中的指令指標及重新命名邏輯也可對緒401a及401b複製。部分資源,諸如,重排序/引退單元435中的重排序緩衝器、ILTB 420、載入/儲存緩衝器、及佇列可經由分區共享。其他資源,諸如,通用內部暫存器、頁面表基底暫存器(等)、低階資料快取記憶體及資料-TLB 450、執行單元(等)440、及無序單元435的一部分可能完全共享。
處理器400常包括其他資源,其可完全共享、經由分區共享、或由處理元件專用/專用於其。在圖4中,以說明性的處理器的邏輯單元及/或資源描繪純粹例示處理器的實施例。須注意處理器可包括或省略任何此等功能單 元,以及包括未描畫的任何其他已知功能單元、邏輯、或韌體。如所描繪的,核心401包括簡化的、代表性的無序(OOO)處理器核心。但在不同實施例中可使用有序處理器。OOO核心包括分支目標緩衝器420以預測待執行/採用的分支及指令轉換緩衝器(I-TLB)420以儲存用於指令的位址轉換項目。
核心401更包括耦接至提取單元420的解碼模組425以解碼提取的元件。在一實施例中,提取邏輯包括分別與緒槽401a、401b關聯的獨立定序器。核心401常與第一ISA關聯,其界定/指定可在處理器400上執行的指令。係第一ISA之一部分的其他機器碼指令包括一部分的該指令(稱為運算碼),其參考/指定待實施的指令或運算。解碼邏輯425包括如藉由該第一ISA所界定地從彼等的運算碼識別此等指令並在用於處理的管線中傳送解碼之指令的電路。例如,在一實施例中,解碼器425包括設計成或適於識別特定指令,諸如,交易指令,的邏輯。由於藉由解碼器425的識別,架構或核心401採取特定的預界定行動以實施與該合適指令關聯的工作。重要的係注意到本文描述的任何工作、方塊、操作、及方法可回應於單或多個指令實施;彼等的一部分可係新或舊的指令。
在一範例中,配置器及重新命名器方塊430包括配置器以保留資源,諸如,暫存器檔案,以儲存指令處理結果。然而,緒401a及401b可能能無序地執行,其中配置器及重新命名器方塊430也保留其他資源,諸如,重排序 緩衝器,以追蹤指令結果。單元430也可包括暫存器重新命名器以將程式/指令參考暫存器重新命名至處理器400內部的其他暫存器。重排序/引退單元435包括組件,諸如,上文提及的重排序緩衝器、載入緩衝器、及儲存緩衝器,以支援無序執行及無序執行之指令的稍後有序引退。
在一實施例中,排程器及執行單元(等)方塊440包括排程器單元以排程執行單元上的指令/運算。例如,將浮點指令排程在具有可用浮點執行單元之執行單元的部分上。也包括與執行單元關聯的暫存器檔案以儲存資訊指令處理結果。例示執行單元包括浮點執行單元、整數執行單元、跳躍執行單元、載入執行單元、儲存執行單元、及其他已知執行單元。
將低階資料快取記憶體及資料轉譯緩衝器(D-TLB)450耦接至執行單元(等)440。資料快取記憶體係用以儲存最近在元件上使用/運算的資料,諸如,資料運算元,其可能以記憶體一致性狀態保持。D-TLB係用以將最近虛擬/儲存線性位址儲存為實體位址轉譯。作為具體範例,處理器可包括頁面表結構以將實體記憶體拆散為複數個虛擬頁面。
此處,核心401及402共享對更高階或更外部的快取記憶體410的存取,其係用於快取最近提取的元件。須注意更高階或更外部係指增加或遠離執行單元(等)的快取記憶體級。在一實施例中,更高階快取記憶體410係最末級資料快取記憶體-處理器400上之記憶體階層中的最末級- 諸如,第二或第三級資料快取記憶體。然而,更高階快取記憶體410未受如此限制,而其可與指令快取記憶體關聯或包括其。追蹤快取記憶體-一種指令快取記憶體-可替代地耦接在解碼器425之後以儲存最近解碼蹤跡。
在所描畫的組態中,處理器400也包括匯流排介面模組405及功率控制器460,其可根據本發明的實施例實施功率管理。在此情景中,匯流排介面405係用以與處理器400外部的裝置通訊,諸如,系統記憶體或其他組件。
記憶體控制器470可與其他裝置介接,諸如一或多個記憶體。在範例中,匯流排介面405包括環形互連,其具有用於與記憶體介接的記憶體控制器及用於與圖形處理器介接的圖形控制器。在SoC環境中,甚至可將更多裝置,諸如,網路介面、共處理器、記憶體、圖形處理器、及任何其他已知電腦裝置/介面,積體在單一晶粒或積體電路上,以提供具有高功能及低功率消耗的小尺寸。
雖然為了便於圖4中的描繪而未顯示,在部分實施例中,處理器400可包括參考圖1A-1B於上文描述的壓縮加速器120。另外,在部分實施例中,處理器400可實作參考圖1A-1D及2A-2C於上文描述的部分或所有組件及/或功能。
現在參考至圖5,顯示係根據本發明之一實施例的處理器核心之微架構的方塊圖。如圖5所示,處理器核心500可係多級管線化無序處理器。核心500可基於接收的操作電壓以各種電壓操作,其可接收自積體電壓調整器或 外部電壓調整器。
如圖5所示,核心500包括前端單元510,可能將其用於提取待執行指令並備妥彼等以稍後在處理器管線中使用。例如,前端單元510可包括提取單元501、指令快取記憶體503、及指令解碼器505。在部分實施例中,前端單元510可更包括追蹤快取記憶體,連同微碼儲存器以及微操作碼儲存器。提取單元501可,例如,從記憶體或指令快取記憶體503提取巨集指令,並將彼等饋送至指令解碼器505以將彼等解碼為基元,亦即,由處理器執行的微操作碼。
耦接於前端單元510及執行單元520之間的係可用於接收該等微指令並備妥彼等以供執行的無序(OOO)引擎515。更具體地說,OOO引擎515可包括各種緩衝器以重排序微指令流,並配置執行所需的各種資源,以及提供將邏輯暫存器重新命名為各種暫存器檔案,諸如,暫存器檔案530及延伸暫存器檔案535,內的儲存器位置。暫存器檔案530可包括分別用於整數及浮點數操作的暫存器檔案。延伸暫存器檔案535可提供用於向量尺寸單元的儲存器,諸如,每個暫存器有256或512位元。
各種資源可能存在於執行單元520中,包括,例如,在其他特殊化硬體之間的各種整數、浮點數、以及單指令多資料(SIMD)邏輯單元。例如,此種執行單元可包括在其他此種執行單元之間的一或多個算術邏輯單元(ALU)522及一或多個向量執行單元524。
可將來自執行單元的結果提供至引退邏輯,亦即,重排序緩衝器(ROB)540。更具體地說,ROB 540可包括各種陣列及邏輯,以接收與被執行指令關聯的資訊。然後此資訊由ROB 540檢查,以判定該等指令是否能有效地引退並將產生資料提交至該處理器的架構狀態,或判定是否發生防止該等指令之妥適引退的一或多個異常。當然,ROB 540可應符與引退關聯的其他操作。
如圖5所示,將ROB 540耦接至快取記憶體550,其在一實施例中可係低階快取記憶體(例如,L1快取記憶體),雖然本發明之範圍未在此方面受限。又,執行單元520能直接耦接至快取記憶體550。資料通訊可使用較高階快取記憶體、及系統記憶體等從快取記憶體550發生。當在圖5的實施例中以此高階顯示時,應理解本發明的範圍並未在此方面受限。例如,當圖5的實作相關於無序機器的同時,諸如,Intel® x86指令集架構(ISA),本發明的範圍未在此方面受限。亦即,其他實施例可用有序處理器、精簡指令集計算(RISC)處理器,諸如,ARM-為基的處理器、或能經由模擬引擎及關聯邏輯電路模擬不同ISA的指令及操作之另一種類ISA的處理器實作。
雖然為了便於圖5中的描繪而未顯示,在部分實施例中,核心500可包括參考圖1A-1B於上文描述的壓縮加速器120。另外,在部分實施例中,核心500可實作參考圖1A-1D及2A-2C於上文描述的部分或所有組件及/或功能。
現在參考圖6,顯示根據另一實施例的處理器核心之微架構的方塊圖。在圖6的實施例中,核心600可係不同微架構的低功率核心,諸如,具有設計成降低功率消耗之相對有限管線深度的Intel® AtomTM為基的處理器。如所見的,核心600包括耦接以提供指令至指令解碼器615的指令快取記憶體610。分支預測器605可耦接至指令快取記憶體610。須注意指令快取記憶體610可更耦接至另一級快取記憶體,諸如,L2快取記憶體(為便於圖6中的描繪而未顯示)。依次地,指令解碼器615提供解碼後指令至用於儲存及遞送至指定執行管線的發佈佇列620。將微碼ROM 618耦接至指令解碼器615。
浮點管線630包括其可包括指定位元寬度,諸如,128、256、或512位元,的複數個架構暫存器的浮點暫存器檔案632。管線630包括浮點排程器634以排程用於在該管線之一或多個執行單元上執行的指令。在所示實施例中,此種執行單元包括ALU 635、變換單元636、及浮點加法器638。依次地,可將在此等執行單元中產生的結果提供回緩衝器及/或暫存器檔案632的暫存器。在顯示有此等數個範例執行單元的同時,當然理解額外或不同的浮點執行單元可存在於另一實施例中。
也可提供整數管線640。在所示實施例中,管線640包括整數暫存器檔案642,其可包括指定位元寬度,諸如,128或256位元,的複數個架構暫存器。管線640包括整數排程器644以排程用於在該管線之一或多個執行單 元上執行的指令。在所示實施例中,此種執行單元包括ALU 645、移位器單元646、及跳躍執行單元648。依次地,可將在此等執行單元中產生的結果提供回緩衝器及/或暫存器檔案642的暫存器。在顯示有此等數個範例執行單元的同時,當然理解額外或不同的整數執行單元可存在於另一實施例中。
記憶體執行排程器650可排程用於在其也耦接至TLB 654的位址產生單元652中執行的記憶體運算。如所見的,此等結構可耦接至資料快取記憶體660,其可係依次耦接至包括L2快取記憶體之額外級快取記憶體階層的L0及/或L1資料快取記憶體。
為對無序執行提供支援,除了組態成針對有序引退重排序無序執行之指令的重排序緩衝器680外,可提供配置器/重新命名器670。雖然以圖6之描繪中的此特定管線架構顯示,理解各種變化及改變係可能的。
須注意,諸如,在根據圖5及6的微架構之具有非對稱核心的處理器中,工作量可針對功率管理原因動態地在核心之間調換,雖然具有不同管線設計及深度,此等核心可係相同或相關ISA的。此種動態核心調換可用對使用者應用程式(並也可能對核心)透明的方式實施。
雖然為了便於圖6中的描繪而未顯示,在部分實施例中,核心600可包括參考圖1A-1B於上文描述的壓縮加速器120。另外,在部分實施例中,核心600可實作參考圖1A-1D及2A-2C於上文描述的部分或所有組件及/或功 能。
參考圖7,顯示根據另一實施例的處理器核心之微架構的方塊圖。如圖7所描繪的,核心700可包括以非常低的功率消耗等級執行的多級有序管線。作為一個此種範例,處理器700可具有根據從加州桑尼維爾的ARM Holdings公司取得之ARM Cortex A53設計的微架構。在實作中,可提供其組態成執行32-位元或64位元碼二者的8級管線。核心700包括組態成提取指令並將彼等提供至解碼單元715的提取單元710,該解碼單元可解碼指令,例如,指定ISA,諸如,ARMv8 ISA的巨集指令。更需注意佇列730可耦接至解碼單元715以儲存解碼後指令。將解碼後指令提供至發佈邏輯725,其中該解碼後指令可發佈至多個執行單元的指定一者。
更參考圖7,發佈邏輯725可發佈指令至多個執行單元的一者。在所示實施例中,此等執行單元包括整數單元735、乘法單元740、浮點/向量單元750、雙重發佈單元760、及載入/儲存單元770。此等不同執行單元的結果可提供至寫回單元780。理解在為了便於描繪而顯示單一寫回單元的同時,在部分實作中,個別寫回單元可與各執行單元關聯。此外,理解在顯示於圖7中的各單元及邏輯係以高階表示的同時,特定實作可包括更多或不同的結構。使用具有如圖7中的管線之一或多個核心設計的處理器可實作在從行動裝置延伸至伺服器系統的許多不同終端產品中。
雖然為了便於圖7中的描繪而未顯示,在部分實施例中,核心700可包括參考圖1A-1B於上文描述的壓縮加速器120。另外,在部分實施例中,核心700可實作參考圖1A-1D及2A-2C於上文描述的部分或所有組件及/或功能。
現在參考圖8,顯示根據另一實施例的處理器核心之微架構的方塊圖。如圖8所描繪的,核心800可包括以非常高效能等級執行的多級多發佈無序管線(其可在比圖7之核心700更高的功率消耗等級發生)。作為一個此種範例,處理器800可具有根據ARM Cortex A57設計的微架構。在實作中,可提供其組態成執行32-位元或64位元碼二者的15(或更大)級管線。另外,管線可針對3(或更大)寬度及3(或更大)發佈運算提供。核心800包括組態成提取指令並將彼等提供至解碼器/重新命名器/分派器815的提取單元810,該解碼器/重新命名器/分派器可解碼指令,例如,ARMv8指令集架構的巨集指令、重新命名指令內的暫存器參考、及(最終)分派指令至所選擇的執行單元。解碼後指令可儲存在佇列825中。須注意在為了便於圖8中的描繪而顯示單一佇列結構的同時,理解個別佇列可對多個不同種類的執行單元各者設置。
在圖8中也顯示儲存在佇列825中的解碼後指令可自其發佈至選擇的執行單元的發佈邏輯830。發佈邏輯830在特定實施例中也可用分離式發佈邏輯實作,其用於發佈邏輯830耦接至其之多個不同種類的執行單元各者。
解碼後指令可發佈至多個執行單元的指定一者。在所示實施例中,此等執行單元包括一或多個整數單元835、乘法單元840、浮點/向量單元850、分支單元860、及載入/儲存單元870。在實施例中,浮點/向量單元850可組態成處理128或256位元的SIMD或向量資料。另外,浮點/向量執行單元850可實施IEEE-754倍精準浮點運算。此等不同執行單元的結果可提供至寫回單元880。須注意在部分實作中,個別寫回單元可與各執行單元關聯。此外,理解在顯示於圖8中的各單元及邏輯係以高階表示的同時,特定實作可包括更多或不同的結構。
須注意,諸如,在根據圖7及8的微架構之具有非對稱核心的處理器中,工作量可針對功率管理原因動態地調換,雖然具有不同管線設計及深度,此等核心可係相同或相關ISA的。此種動態核心調換可用對使用者應用程式(並也可能對核心)透明的方式實施。
雖然為了便於圖8中的描繪而未顯示,在部分實施例中,核心800可包括參考圖1A-1B於上文描述的壓縮加速器120。另外,在部分實施例中,核心800可實作參考圖1A-1D及2A-2C於上文描述的部分或所有組件及/或功能。
使用具有如圖5-8之任何一或多者中的管線之一或多個核心設計的處理器可實作在從行動裝置延伸至伺服器系統的許多不同終端產品中。現在參考至圖9,顯示係根據本發明的另一實施例之處理器的方塊圖。在圖9的實施例 中,處理器900可係包括多個域的SoC,各域可受控制而以獨立的操作電壓及操作頻率操作。作為具體說明範例,處理器900可係Intel公司銷售的Intel®架構CoreTM-為基的處理器,諸如i3、i5、i7、或其他此種處理器。然而,諸如,加州桑尼維爾的超微公司(AMD)銷售之、來自ARM Holdings公司之以ARM為基的設計或其授權、或來自加州桑尼維爾的MIPS Technologies公司之以MIPS為基的設計或其授權或採納方以外的低功率處理器可替代地存在於其他實施例中,諸如,Apple A7處理器、Qualcomm Snapdragon處理器、德州儀器OMAP處理器。此種SoC可使用在低功率系統中,諸如,智慧型手機、平板電腦、平板電話電腦、超輕薄筆記型電腦TM、或其他可攜式計算裝置。
在圖9所示的高階圖中,處理器900包括複數個核心單元9100-910n。各核心單元可包括一或多個處理器核心、一或多個快取記憶體、及其他電路。各核心單元910可支援一或多個指令集(例如,x86指令集(具有已隨較新版本加入的部分延伸));MIPS指令集;ARM指令集(具有選擇性的額外延伸,諸如,NEON));或其他指令集或其組合。須注意部分核心單元可係(例如,不同設計的)異質資源。另外,此種核心各者可耦接至其在實施例中可係共享級(L2)快取記憶體的快取記憶體(未圖示)。非揮發性儲存器930可用於儲存各種程式及其他資料。例如,此儲存器可用於儲存至少部分微碼、開機資訊,諸如,BIOS、 或其他系統軟體等。
各核心單元910也可包括介面,諸如,匯流排介面,以致能至處理器之額外電路的互連。在實施例中,各核心單元910耦接至同調結構,其可作用為其依次耦接至記憶體控制器935的主快取記憶體同調晶粒上互連。依次地,記憶體控制器935控制與記憶體,諸如,DRAM(為便於圖9中的描繪而未顯示),的通訊。
除了核心單元,額外的處理引擎存在於該處理器內,包括至少一個圖形單元920,其可包括一或多個圖形處理單元(GPU)以實施圖形處理,並可能在圖形處理器上執行通用運算(所謂的GPGPU運算)。另外,可存在至少一個影像信號處理器925。信號處理器925可組態成處理從在SoC內部或晶片外的一或多個拍攝裝置接收的輸入影像資料。
也可存在其他加速器。在圖9的描繪中,視訊編碼器950可實施包括用於視訊資訊之編碼及解碼的編碼運算,例如,為高解析視訊內容提供硬體加速支援。可更提供顯示器控制器955以加速顯示器操作,包括對系統的內部及外部顯示器提供支援。另外,可存在安全處理器945以實施安全運算,諸如,安全開機運算、及各種密碼運算等。
各單元可具有經由功率管理器940受控制的自有功率消耗,該功率管理器可包括控制邏輯以實施本文描述的各種功率管理技術。
在部分實施例中,SoC 900可更包括耦接至同調結構 之各種周邊裝置可耦接至其的非同調結構。一或多個介面960a-960d致能與一或多個晶片外裝置的通訊。此種通訊可根據各式各樣的通訊協定,諸如,其他種類之通訊協定之中的PCIeTM、GPIO、USB、I2C、UART、MIPI、SDIO、DDR、SPI、HDMI。雖然在圖9的實施例中以此高階顯示,理解本發明的範圍未在此方面受限。
雖然為了便於圖9中的描繪而未顯示,在部分實施例中,SoC 900可包括參考圖1A-1B於上文描述的壓縮加速器120。另外,在部分實施例中,SoC 900可實作參考圖1A-1D及2A-2C於上文描述的部分或所有組件及/或功能。
現在參考圖10,顯示代表性SoC的方塊圖。在所示實施例中,SoC 1000可係針對併入智慧型手機或其他低功率裝置,諸如,平板電腦或其他可攜性計算裝置,中而最佳化的低功率操作組態的多核心SoC。作為範例,SoC 1000可使用非對稱或不同種類的核心實作,諸如,高功率及/或低功率核心,例如,無序核心及有序核心,的組合。在不同實施例中,此等核心可基於Intel®架構TM核心設計或ARM架構設計。在其他實施例中,Intel及ARM核心的混合可實作在指定的SoC中。
如在圖10中所見的,SoC 1000包括具有複數個第一核心10120-10123的第一核心域1010。在範例中,此等核心可係低功率核心,諸如,有序核心。在一實施例中,此等第一核心可實作為ARM Cortex A53核心。依次地,此 等核心耦接至核心域1010的快取記憶體1015。另外,SoC 1000包括第二核心域1020。在圖10的描繪中,第二核心域1020具有複數個第二核心10220-10223。在範例中,此等核心可係比第一核心1012消耗更高功率的核心。在實施例中,第二核心可係無序核心,其可實作為ARM Cortex A57核心。依次地,此等核心耦接至核心域1020的快取記憶體1025。須注意在圖10所示之範例在各域中包括4個核心的同時,理解在其他範例中,在指定域中可存在更多或更少的核心。
更參考圖10,也提供圖形域1030,其可包括組態成獨立地執行,例如,由核心域1010及1020的一或多個核心提供之圖形工作量的一或多個圖形處理單元(GPU)。作為範例,除了提供圖形及顯示器渲染操作外,GPU域1030可用於對各式各樣螢幕尺寸提供顯示器支援。
如所見的,各種域耦接至同調互連1040,其在實施例中可係依次耦接至積體記憶體控制器1050的快取記憶體同調互連結構。在部分實施例中,同調互連1040可包括共享快取記憶體,諸如,L3快取記憶體。在實施例中,記憶體控制器1050可係直接記憶體控制器,以提供與晶片外記憶體的多通道通訊,諸如,多個DRAM通道(為便於圖10中的描繪而未顯示)。
在不同範例中,核心域的數目可變化。例如,針對適用於併入行動計算裝置中的低功率SoC,可存在有限數目的,諸如,圖10所示的核心域。另外,在此種低功率 SoC中,包括較高功率核心的核心域1020可具有較少數目的此種核心。例如,在一實作中,可提供二個核心1022以致能以降低功率消耗等級操作。另外,不同核心域也可耦接至中斷控制器以致能不同域之間的動態工作量調換。
在其他實施例中,因為SoC能針對併入其他計算裝置,諸如,桌上型電腦、伺服器、高效能計算系統、基地台等,中而縮放成較高效能(及功率)等級,可存在較大數目的核心域以及額外選擇性的IP邏輯。作為一個此種範例,可提供各者具有指定數目之無序核心的4個核心域。另外,除了選擇性的GPU支援外(其作為可採用GPGPU之形式的範例),也可提供一或多個加速器以對特定功能(例如,網頁服務、網路處理、或交換等)提供最佳化硬體支援。另外,可存在輸入/輸出介面以將此種加速器耦接至晶片外組件。
雖然為了便於圖10中的描繪而未顯示,在部分實施例中,SoC 1000可包括參考圖1A-1B於上文描述的壓縮加速器120。另外,在部分實施例中,SoC 1000可實作參考圖1A-1D及2A-2C於上文描述的部分或所有組件及/或功能。
現在參考圖11,顯示另一範例SoC的方塊圖。在圖11的實施例中,SoC 1100可包括各種電路以針對多媒體應用、通訊、及其他功能致能高效能。因此,SoC 1100適於併入各式各樣可攜性或其他裝置中,諸如,智慧型手 機、平板電腦、及智慧型TV等。在所示範例中,SoC 1100包括中央處理單元(CPU)域1110。在實施例中,複數個獨立處理器核心可存在於CPU域1110中。作為一範例,CPU域1110可係具有4個多緒核心的四核心處理器。此種處理器可係均質或異質處理器,例如,低功率及高功率處理器核心的混合。
依次地,提供GPU域1120以在一或多個GPU中實施先進圖形處理以處理圖形及計算API。除了可在多媒體指令執行期間發生的先進計算外,DSP單元1130可提供用於處理低功率多媒體應用,諸如,音樂播放、及音訊/視訊等的一或多個低功率DSP。依次地,通訊單元1140可包括各種組件以經由各種無線協定提供連接性,諸如,蜂巢式通訊(包括3G/4G LTE)、無線區域技術,諸如,藍牙TM、及IEEE 802.11等。
另外,多媒體處理器1150可用於實施高解析視訊及音訊內容的拍攝及播放,包括使用者手勢的處理。感測器單元1160可包括複數個感測器及/或感測器控制器以介接至存在於指定平台中的各種晶片外感測器。影像信號處理器1170可設有一或多個分開的ISP,以實施與來自平台之一或多個照相機的拍攝內容有關的影像處理,包括靜態及視訊照相機。
顯示處理器1180可對至指定像素密度的高解析顯示器的連接提供支援,包括無線地通訊在此種顯示器上播放之內容的能力。另外,位置單元1190包括具有對多個 GPS叢集的支援的GPS接收器,以將使用此種GPS接收器得到的高精確定位資訊提供給應用程式。理解在顯示圖11之範例中的此特定組件組的同時,各種變化及改變係可能的。
雖然為了便於圖11中的描繪而未顯示,在部分實施例中,SoC 1100可包括參考圖1A-1B於上文描述的壓縮加速器120。另外,在部分實施例中,SoC 1100可實作參考圖1A-1D及2A-2C於上文描述的部分或所有組件及/或功能。
現在參考圖12,顯示實施例能使用其之範例系統的方塊圖。如所見的,系統1200可係智慧型手機或其他無線通訊器。將基帶處理器1205組態成實施與待由該系統傳輸或接收之通訊信號有關的各種信號處理。依次地,將基帶處理器1205耦接至應用處理器1210,其可係系統的主CPU以,除了使用者應用程式外,諸如,許多已為人所熟知的社交媒體及多媒體應用程式,執行OS及其他系統軟體。應用處理器1210可更組態成實施用於該裝置的各式各樣的其他計算操作。
依次地,應用處理器1210能耦接至使用者介面/顯示器1220,例如,觸控螢幕顯示器。另外,應用處理器1210可耦接至包括非揮發性記憶體,亦即,快閃記憶體1230,及系統記憶體,亦即,動態隨機存取記憶體(DRAM)1235,的記憶體系統。如進一步看見的,應用處理器1210更耦接至拍攝裝置1240,諸如,能記錄視訊及/ 或靜態影像的一或多個影像拍攝裝置。
仍參考圖12,也將包含用戶識別模組並可能包含安全儲存器及密碼處理器的通用積體電路卡(UICC)1245耦接至應用處理器1210。系統1200可更包括可耦接至應用處理器1210的安全處理器1250。複數個感測器1225可耦接至應用處理器1210以致能各式各樣感測資訊的輸入,諸如,加速度計及其他環境資訊。音訊輸出裝置1295可提供輸出聲音的介面,例如,以語音通訊、及播放或串流音訊資料等的形式。
如進一步說明的,提供經由NFC天線1265在NFC近場中通訊的近場通訊(NFC)非接觸式介面1260。在分離式天線顯示於圖12中的同時,理解在部分實作中,可提供一個天線或不同組的天線以致能各種無線功能。
功率管理積體電路(PMIC)1215耦接至應用處理器1210以實施平台級功率管理。結果,PMIC 1215可發佈功率管理請求至應用處理器1210以依需要進入特定低功率狀態。此外,基於平台限制,PMIC 1215也可控制系統1200之其他組件的功率等級。
為致能待傳輸及接收的通訊,可將各種電路耦接在基帶處理器1205及天線1290之間。具體地說,可存在射頻(RF)收發器1270及無線區域網路(WLAN)收發器1275。通常,RF收發器1270可用於根據指定的無線通訊協定,諸如,根據分碼多重存取(CDMA)、全球行動通信系統(GSM)、長期演進(LTE)、或其他協定的3G或4G無線通 訊協定,接收及傳輸無線資料及呼叫。另外,可存在GPS感測器1280。也可提供其他無線通訊,諸如,無線電信號,例如,AM/FM及其他信號,的接收及傳輸。另外,經由WLAN收發器1275,也能實現,諸如,根據藍牙TM標準或IEEE 802.11標準,諸如,IEEE 802.11a/b/g/n,的區域無線通訊。
雖然為了便於圖12中的描繪而未顯示,在部分實施例中,系統1200可包括參考圖1A-1B於上文描述的壓縮加速器120。另外,在部分實施例中,系統1200可實作參考圖1A-1D及2A-2C於上文描述的部分或所有組件及/或功能。
現在參考圖13,顯示實施例可使用其之另一範例系統的方塊圖。在圖13的描繪中,系統1300可係行動低功率系統,諸如,平板電腦、2:1平板電腦、平板手機、或其他可翻轉式或分立式平板電腦系統。如所描繪的,SoC 1310存在並可組態成操作為該裝置的應用處理器。
各式各樣的裝置可耦接至SoC 1310。在所示描繪中,記憶體次系統包括耦接至SoC 1310的快閃記憶體1340及DRAM 1345。另外,將觸控面板1320耦接至SoC 1310以提供顯示能力及經由觸摸的使用者輸入,包括提供虛擬鍵盤在觸控面板1320的顯示器上。SoC 1310耦接至乙太網路介面1330以提供有線網路連接性。將周邊集線器1325耦接至SoC 1310以致能與各種周邊裝置的介接,諸如,可藉由任何各種埠或其他連接器耦接至系統 1300。
除了SoC 1310內的內部功率管理電路及功能外,將PMIC 1380耦接至SoC 1310以提供基於平台的功率管理,例如,基於系統是否由電池1390或經由AC配接器1395的AC電源供電。除了此基於電源的功率管理外,PMIC 1380可更實施基於環境及使用條件的平台功率管理活動。另外,PMIC 1380可將控制及狀態資訊傳訊至SoC 1310以在SoC 1310內導致各種功率管理行動。
仍參考圖13,為提供無線能力,將WLAN單元1350耦接至SoC 1310並依次耦接至天線1355。在各種實作中,WLAN單元1350可提供根據一或多個無線協定的通訊,包括IEEE 802.11協定、藍牙TM協定或任何其他無線協定。
如進一步說明的,複數個感測器1360可耦接至SoC 1310。此等感測器可包括各種加速度計、環境及其他感測器、包括使用者手勢感測器。最終,將音訊編碼解碼器1365耦接至SoC 1310以提供至音訊輸出裝置1370的介面。當然理解在顯示圖13中之此特定實作的同時,許多變化及改變係可能的。
雖然為了便於圖13中的描繪而未顯示,在部分實施例中,系統1300可包括參考圖1A-1B於上文描述的壓縮加速器120。另外,在部分實施例中,系統1300可實作參考圖1A-1D及2A-2C於上文描述的部分或所有組件及/或功能。
現在參考圖14,代表性電腦系統1400的方塊圖,諸如,筆記型電腦、超輕薄筆記型電腦TM、或其他小尺寸系統。在一實施例中,處理器1410包括微處理器、多核心處理器、多執行緒處理器、超低壓處理器、嵌入式處理器、或其他已知處理元件。在本說明實作中,處理器1410作用為主要處理單元及用於與系統1400之許多各種組件通訊的中央集線器。作為一範例,將處理器1410實作為SoC。
在一實施例中,處理器1410與系統記憶體1415通訊。作為說明範例,系統記憶體1415係經由多個記憶體裝置或模組實作以提供指定的系統記憶體量。
為提供資訊的持久儲存,諸如,資料、應用程式、及一或多個作業系統等,大量儲存器1420也可耦接至處理器1410。在各種實施例中,為致能更薄及更輕的系統設計以及改善系統回應性,此大量儲存器可經由SSD實作或該大量儲存器可主要使用具有作為SSD快取記憶體之較小量SSD儲存器的硬碟驅動器(HDD)實作以致能背景狀態及其他此種資訊在斷電事件期間的非揮發性儲存使得快速開機能在系統活動重啟動期間發生。也如圖14所示,可經由,例如,串列周邊介面(SPI)將快閃記憶體裝置1422耦接至處理器1410。此快閃記憶體裝置可能提供系統軟體的非揮發性儲存,包括該系統的基本輸入/輸出軟體(BIOS)以及其他韌體。
各種輸入/輸出(I/O)裝置可存在於系統1400內。具體 地顯示在圖14之實施例中的係顯示器1424,其可係更提供用於觸控螢幕1425的高解析LCD或LED面板。在一實施例中,顯示器1424可經由能實作為高效能圖形互連的顯示器互連耦接至處理器1410。觸控螢幕1425可經由另一互連耦接至處理器1410,其在一實施例中可係I2C互連。如更於圖14所示,除了觸控螢幕1425外,藉由觸摸的使用者輸入也能經由可組態在框架內並也可如觸控螢幕1425耦接至相同I2C互連的觸控板1430發生。
針對知覺計算及其他目的,各種感測器可存在於該系統內並可用不同方式耦接至處理器1410。特定慣性及環境感測器可經由感測器集線器1440耦接至處理器1410,例如,經由I2C互連。在圖14所示的實施例中,此等感測器可能包括加速度計1441、周邊光感測器(ALS)1442、羅盤1443、及迴轉儀1444。其他環境感測器可包括一或多個熱感測器1446,其在部分實施例中經由系統管理匯流排(SMBus)匯流排耦接至處理器1410。
也在圖14中看到,各種周邊裝置可經由低插腳數(LPC)互連耦接至處理器1410。在所示的實施例中,各種組件能經由嵌入式控制器1435耦接。此種組件能包括鍵盤1436(例如,經由PS2介面耦接)、風扇1437、及熱感測器1439。在部分實施例中,觸控板1430也可經由PS2介面耦接至EC 1435。此外,安全處理器,諸如,依據可信賴計算組織(TCG)之日期為2003年10月2日的TPM規格書第1.2版的可信賴平台模組(TPM)1438,也可經由此 LPC互連耦接至處理器1410。
系統1400能用包括無線的各種方式與外部裝置通訊。在圖14所示的實施例中,存在各種無線模組,彼等各者能對應於針對特定無線通訊協定組態的無線電。用於短距無線通訊,諸如,近場,的一方式可係經由NFC單元1445,其在一實施例中可經由SMBus與處理器1410通訊。須注意經由此NFC單元1445,彼此鄰近的裝置能通訊。
如更在圖14中看見的,額外無線單元能包括其他短距無線引擎,包括WLAN單元1450及藍牙單元1452。使用WLAN單元1450,能實現依據指定的IEEE 802.11標準的Wi-FiTM通訊,同時經由藍牙單元1452,經由藍牙協定的短距通訊能發生。此等單元可經由,例如,USB鏈路或通用非同步接收器發射器(UART)鏈路與處理器1410通訊。或者此等單元可經由根據PCIeTM協定或另一此種協定,諸如,串接資料輸入/輸出(SDIO)標準,的互連耦接至處理器1410。
此外,例如,根據蜂巢式或其他無線廣域協定的無線廣域通訊能經由WWAN單元1456發生,其可依次耦接至用戶識別模組(SIM)1457。此外,為致能位置資訊的接收及使用,也可存在GPS模組1455。須注意在圖14所示的實施例中,WWAN單元1456及積體拍攝裝置,諸如,照相機模組1454,可經由給定的USB協定,諸如,USB 2.0或3.0鏈路、或UART或I2C協定,通訊。
能將積體照相機模組1454併入該蓋中。為提供音訊輸入及輸出,音訊處理器能經由數位訊號處理器(DSP)1460實作,其可經由高解晰音訊(HDA)鏈路耦接至處理器1410。相似地,DSP 1460可與可依次耦接至可實作在框架內的輸出揚聲器1463的積體編碼器/解碼器(CODEC)及放大器1462通訊。相似地,能耦接放大器及CODEC 1462以從麥克風1465接收音訊輸入,其在實施例中能經由雙陣列麥克風(諸如,數位麥克風陣列)實作,以提供高品質音訊輸入以致能該系統內之各種操作的語音啟動控制。也須注意音訊輸出能從放大器/CODEC 1462提供至耳機插口1464。雖然以圖14之實施例中的此等特定組件顯示,應理解本發明的範圍未在此方面受限。
雖然為了便於圖14中的描繪而未顯示,在部分實施例中,系統1400可包括參考圖1A-1B於上文描述的壓縮加速器120。另外,在部分實施例中,系統1400可實作參考圖1A-1D及2A-2C於上文描述的部分或所有組件及/或功能。
可將實施例實作在許多不同的系統類型中。現在參考至圖15,顯示係根據本發明實施例之系統的方塊圖。如圖15所示,多處理器系統1500係點-對-點互連系統,並包括經由點-對-點互連1550耦接的第一處理器1570及第二處理器1580。如圖15所示,處理器1570及1580各者可係包括第一及第二處理器核心(亦即,處理器核心1574a及1574b以及處理器核心1584a及1584b)的多核心處理 器,雖然可有更多核心存在於該等處理器中。各處理器能包括PCU或其他功率管理邏輯以實施如本文描述之基於處理器的功率管理。
仍參考圖15,第一處理器1570更包括記憶體控制器集線器(MCH)1572以及點-對-點(P-P)介面1576及1578。相似地,第二處理器1580包括MCH 1582及P-P介面1586及1588。如圖15所示,MCH 1572及1582將處理器耦接至個別記憶體,亦即,記憶體1532及1534,其可係區域地附接至個別處理器之系統記憶體(例如,DRAM)的部位。第一處理器1570及第二處理器1580可分別經由P-P互連1562及1564耦接至晶片組1590。如圖15所示,晶片組1590包括P-P介面1594及1598。
此外,晶片組1590包括介面1592以藉由P-P互連1539將晶片組1590與高效能圖形引擎1538耦接。依次地,晶片組1590可經由介面1596耦接至第一匯流排1516。如圖15所示,可連同將第一匯流排1516耦接至第二匯流排1520的匯流排橋接器1518,將各種輸入/輸出裝置1514耦接至第一匯流排1516。在一實施例中,可將各種裝置耦接至第二匯流排1520,包括,例如,鍵盤/滑鼠1522、通訊裝置1526、以及資料儲存單元1528,諸如,可包括碼1530的硬碟驅動器或其他大量儲存裝置。另外,可將音訊I/O 1524耦接至第二匯流排1520。能將實施例併入包括行動裝置,諸如,智慧型行動電話、平板電腦、易網機、或超輕薄筆記型電腦TM等,之其他類型的系 統中。
雖然為了便於圖15中的描繪而未顯示,在部分實施例中,系統1500可包括參考圖1A-1B於上文描述的壓縮加速器120。另外,在部分實施例中,系統1500可實作參考圖1A-1D及2A-2C於上文描述的部分或所有組件及/或功能。
實施例可用碼實作並可儲存在具有儲存於其中之指令的非暫態儲存媒體中,該等指令能用於指示系統實施該等指令。該儲存媒體可包括,但未限於,任何類型的碟式媒體,包括軟碟、光碟、固態硬碟(SSD)、光碟唯讀記憶體(CD-ROM)、可重寫光碟(CD-RW)、及磁光碟、半導體裝置,諸如,唯讀記憶體(ROM)、隨機存取記憶體(RAM),諸如,動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可抹除可程式化唯讀記憶體(EPROM)、快閃記憶體、電可抹除可程式化唯讀記憶體(EEPROM)、磁或光學卡、或適於儲存電子指令之何任其他類型的媒體。
以下條款及/或範例關於其他實施例。
在一範例中,一種用於實施資料壓縮的處理器包含:複數個硬體處理核心、快取記憶體、及包含雜湊表記憶體的壓縮加速器。該壓縮加速器係用以:決定待壓縮之輸入資料的雜湊值;讀取儲存在藉由該雜湊值索引之雜湊表項目中的第一複數個N個位置值;使用儲存在該雜湊表項目中之第一複數個N個位置值從歷史緩衝器平行地實施第一組字串搜尋;讀取儲存在藉由包括在該雜湊表項目中的第 一溢位指標索引之第一溢位表項目中的第二複數個N個位置值;及使用儲存在該第一溢位表項目中之該第二複數個N個位置值從該歷史緩衝器平行地實施第二組字串搜尋。
在範例中,該第一溢位表項目係包括在溢位表中之複數個溢位項目的一者。
在範例中,該溢位表儲存在該處理器的該快取記憶體中。
在範例中,該壓縮加速器係用以:讀取儲存在藉由包括在該第一溢位表項目中的鏈接指標索引之第二溢位表項目中的第三複數個N個位置值;及使用儲存在該第二溢位表項目中之該第三複數個N個位置值從該歷史緩衝器平行地實施第三組字串搜尋。
在範例中,該壓縮加速器係用以:讀取儲存在藉由包括在該雜湊表項目中的第二溢位指標索引之第三溢位表項目中的第四複數個N個位置值;及使用儲存在該第三溢位表項目中之該第四複數個N個位置值從該歷史緩衝器平行地實施第四組字串搜尋。
在範例中,該壓縮加速器係用以基於該第一組字串搜尋及該第二組字串搜尋的至少一者對於該輸入資料實施重複字串消除操作。
在範例中,該壓縮加速器包含複數個比較器以平行地實施該第一及第二組字串搜尋。
在範例中,該歷史緩衝器包含本地歷史緩衝器及遠處歷史緩衝器,其中該本地歷史緩衝器包括在該壓縮加速器 中,且其中該遠處歷史緩衝器在該壓縮加速器外部。
在一範例中,一種用於實施資料壓縮的方法包含:在壓縮加速器接收待壓縮的輸入資料;藉由該壓縮加速器決定該輸入資料的雜湊值;藉由該壓縮加速器決定雜湊表是否包括對應於該雜湊值的雜湊項目,其中該雜湊表儲存在該壓縮加速器中,其中該雜湊表的各雜湊項目包括複數個N個位置欄位;回應於該雜湊表包括對應於該雜湊值之該雜湊項目的決定,決定該雜湊項目中的所有N個位置欄位是否均係充滿的;及回應於該雜湊項目中的所有N個位置欄位未充滿的決定,將該輸入資料的位置值儲存在該雜湊項目的空位置欄位中。
在範例中,該方法能包括,回應於該雜湊項目中的所有N個位置欄位均係充滿的決定:在溢位表中產生新的溢位項目;及使該雜湊項目之該N個位置欄位的內容溢位至該新溢位項目。在範例中,該方法能包括,回應於該雜湊項目中的所有N個位置欄位均係充滿的該決定:將指向該新溢位項目的指標加至該雜湊項目的溢位指標欄位;及將該輸入資料的該位置值儲存在該雜湊項目的位置欄位中。在範例中,該溢位表儲存在該壓縮加速器外部的快取記憶體中。
在範例中,該方法能包括,回應於該雜湊表不包括對應於該雜湊值之雜湊項目的決定:將新雜湊項目加至該雜湊表;及將該輸入資料的該位置值儲存在該新雜湊項目的位置欄位中。
在範例中,該方法能包括,回應於該雜湊表包括對應於該雜湊值之該雜湊項目的該決定:從該雜湊項目讀取至少一個位置值;及使用從該雜湊項目讀取的至少一個位置值實施重複字串消除操作。
在一範例中,一種具有儲存於其上之資料的機器可讀媒體,若該資料由至少一個機器使用,導致該至少一個機器製造至少一個積體電路以實施上述方法。
在範例中,能將用於處理指令的設備組態成實施上述方法。
在範例中,一種用於實施資料壓縮的系統包括處理器,該處理器包含壓縮加速器、及耦接至該處理器的外部記憶體。該壓縮加速器能包含:雜湊表記憶體,其中該雜湊表記憶體專用於儲存包括複數個雜湊項目的雜湊表,其中該雜湊表的各雜湊項目包括第一複數個N個位置欄位及溢位指標欄位;及複數個比較器,以回應於輸入字串,用以使用第一雜湊項目中的該第一複數個N個位置欄位平行地實施第一組N個比較,其中該第一雜湊項目索引至使用該輸入字串產生的雜湊值。
在範例中,該第一複數個N個位置欄位之各者係用以儲存歷史緩衝器中之獨特位置的位置值。
在範例中,該歷史緩衝器包含本地歷史緩衝器及遠處歷史緩衝器,其中該壓縮加速器包括本地歷史記憶體以儲存該本地歷史緩衝器。
在範例中,該遠處歷史緩衝器儲存在該壓縮加速器外 部的快取記憶體中。
在範例中,該溢位指標欄位係用以儲存指向溢位表之第一溢位項目的指標。
在範例中,該溢位表的該第一溢位項目包括第二複數個N個位置欄位及鏈接指標欄位,其中該鏈接指標欄位係用以儲存指向該溢位表之第二溢位項目的指標。在範例中,該複數個比較器更用以使用該第一溢位項目中的第二複數個N個位置欄位平行地實施第二組N個比較。
在範例中,該溢位表儲存在該壓縮加速器外部的快取記憶體中。
在一範例中,一種具有儲存於其上之資料的機器可讀媒體,若該資料由至少一個機器使用,導致該至少一個機器製造至少一個積體電路以實施方法。該方法能包括:在壓縮加速器接收待壓縮的輸入資料;藉由該壓縮加速器決定該輸入資料的雜湊值;藉由該壓縮加速器決定雜湊表是否包括對應於該雜湊值的雜湊項目,其中該雜湊表儲存在該壓縮加速器中,其中該雜湊表的各雜湊項目包括複數個N個位置欄位;回應於該雜湊表包括對應於該雜湊值之該雜湊項目的決定,決定該雜湊項目中的所有N個位置欄位是否均係充滿的;及回應於該雜湊項目中的所有N個位置欄位未充滿的決定,將該輸入資料的位置值儲存在該雜湊項目的空位置欄位中。
在範例中,該方法能包括,回應於該雜湊項目中的所有N個位置欄位均係充滿的決定:在溢位表中產生新的溢 位項目;及使該雜湊項目之該N個位置欄位的內容溢位至該新溢位項目。
在範例中,該方法能包括,回應於該雜湊項目中的所有N個位置欄位均係充滿的該決定:將指向該新溢位項目的指標加至該雜湊項目的溢位指標欄位;及將該輸入資料的該位置值儲存在該雜湊項目的位置欄位中。
在範例中,該溢位表儲存在該壓縮加速器外部的快取記憶體中。
在範例中,該方法能包括,回應於該雜湊表不包括對應於該雜湊值之雜湊項目的決定:將新雜湊項目加至該雜湊表;及將該輸入資料的該位置值儲存在該新雜湊項目的位置欄位中。
在範例中,該方法能包括,回應於該雜湊表包括對應於該雜湊值之該雜湊項目的該決定:從該雜湊項目讀取至少一個位置值;及使用從該雜湊項目讀取的至少一個位置值實施重複字串消除操作。
理解上述範例的各種組合係可能的。
可將實施例使用在不同種類的系統中。例如,在一實施例中,能將通訊裝置配置成實施本文描述的各種方法及技術。當然,本發明的範圍未限於通訊裝置,且取而代之的其他實施例能關於用於處理指令的其他種類的設備,或包括指令的一或多個機器可讀媒體,其回應於在計算裝置上執行指令,導致該裝置實行本文描述之方法及技術的一或多者。
在此說明書全文中對「一實施例」的參考意指將相關於該實施例描述的特定特性、結構、或特徵包括在包含於本發明內的至少一實作中。因此,該片語「一實施例」或「在實施例中」的出現不必然指相同實施例。此外,該等特定特性、結構、或特徵可能以與所說明之特定實施例不同的其他合適形式建立,且所有此種形式可能包含在本申請案的申請專利範圍內。
當本發明已相關於有限數量的實施例描述時,熟悉本發明之人士將理解來自其的許多修改及變化。其目的係隨附的申請專利範圍涵蓋落在此發明之真正精神及範圍內的所有此種修改及變化。
120‧‧‧壓縮加速器
128A-128N‧‧‧比較器
140‧‧‧雜湊表
141‧‧‧雜湊表記憶體
150‧‧‧溢位表
161‧‧‧本地歷史記憶體
164‧‧‧本地歷史緩衝器
168‧‧‧遠處歷史緩衝器

Claims (20)

  1. 一種處理器,包含:複數個硬體處理核心;快取記憶體;及壓縮加速器,包含雜湊表記憶體,該壓縮加速器用以:決定待壓縮之輸入資料的雜湊值;讀取儲存在藉由該雜湊值索引之雜湊表項目中的第一複數個N個位置值;使用儲存在該雜湊表項目中之第一複數個N個位置值從歷史緩衝器平行地實施第一組字串搜尋;讀取儲存在藉由包括在該雜湊表項目中的第一溢位指標索引之第一溢位表項目中的第二複數個N個位置值;及使用儲存在該第一溢位表項目中之該第二複數個N個位置值從該歷史緩衝器平行地實施第二組字串搜尋。
  2. 如申請專利範圍第1項的處理器,其中該第一溢位表項目係包括在溢位表中之複數個溢位項目的一者。
  3. 如申請專利範圍第2項的處理器,其中該溢位表儲存在該處理器的該快取記憶體中。
  4. 如申請專利範圍第1項的處理器,其中該壓縮加速器係用以:讀取儲存在藉由包括在該第一溢位表項目中的鏈接指標索引之第二溢位表項目中的第三複數個N個位置值;及 使用儲存在該第二溢位表項目中之該第三複數個N個位置值從該歷史緩衝器平行地實施第三組字串搜尋。
  5. 如申請專利範圍第1項的處理器,其中該壓縮加速器係用以:讀取儲存在藉由包括在該雜湊表項目中的第二溢位指標索引之第三溢位表項目中的第四複數個N個位置值;及使用儲存在該第三溢位表項目中之該第四複數個N個位置值從該歷史緩衝器平行地實施第四組字串搜尋。
  6. 如申請專利範圍第1項的處理器,其中該壓縮加速器係用以:基於該第一組字串搜尋及該第二組字串搜尋的至少一者對於該輸入資料實施重複字串消除操作。
  7. 如申請專利範圍第1項的處理器,其中該壓縮加速器包含複數個比較器以平行地實施該第一及第二組字串搜尋。
  8. 如申請專利範圍第1項的處理器,其中該歷史緩衝器包含本地歷史緩衝器及遠處歷史緩衝器,其中該本地歷史緩衝器包括在該壓縮加速器中,且其中該遠處歷史緩衝器在該壓縮加速器外部。
  9. 一種具有儲存於其上之資料的機器可讀媒體,若該資料由至少一個機器使用,導致該至少一個機器製造至少一個積體電路以實施包含下列步驟的方法:在壓縮加速器接收待壓縮的輸入資料;藉由該壓縮加速器決定該輸入資料的雜湊值; 藉由該壓縮加速器決定雜湊表是否包括對應於該雜湊值的雜湊項目,其中該雜湊表儲存在該壓縮加速器中,其中該雜湊表的各雜湊項目包括複數個N個位置欄位;回應於該雜湊表包括對應於該雜湊值之該雜湊項目的決定,決定該雜湊項目中的所有N個位置欄位是否均係充滿的;及回應於該雜湊項目中的所有N個位置欄位未充滿的決定,將該輸入資料的位置值儲存在該雜湊項目的空位置欄位中。
  10. 如申請專利範圍第9項的機器可讀媒體,其中該方法更包含,回應於該雜湊項目中的所有N個位置欄位均係充滿的決定:在溢位表中產生新的溢位項目;及使該雜湊項目之該N個位置欄位的內容溢位至該新溢位項目。
  11. 如申請專利範圍第10項的機器可讀媒體,其中該方法更包含,回應於該雜湊項目中的所有N個位置欄位均係充滿的該決定:將指向該新溢位項目的指標加至該雜湊項目的溢位指標欄位;及將該輸入資料的該位置值儲存在該雜湊項目的位置欄位中。
  12. 如申請專利範圍第10項的機器可讀媒體,其中該溢位表儲存在該壓縮加速器外部的快取記憶體中。
  13. 如申請專利範圍第9項的機器可讀媒體,其中該方法更包含,回應於該雜湊表不包括對應於該雜湊值之雜湊項目的決定:將新雜湊項目加至該雜湊表;及將該輸入資料的該位置值儲存在該新雜湊項目的位置欄位中。
  14. 如申請專利範圍第9項的機器可讀媒體,其中該方法更包含,回應於該雜湊表包括對應於該雜湊值之該雜湊項目的該決定:從該雜湊項目讀取至少一個位置值;及使用從該雜湊項目讀取的該至少一個位置值實施重複字串消除操作。
  15. 一種系統,包含:處理器,包含壓縮加速器,該壓縮加速器包含:雜湊表記憶體,其中該雜湊表記憶體專用於儲存包括複數個雜湊項目的雜湊表,其中該雜湊表的各雜湊項目包括第一複數個N個位置欄位及溢位指標欄位;及複數個比較器,以回應於輸入字串,用以使用第一雜湊項目中的該第一複數個N個位置欄位平行地實施第一組N個比較,其中該第一雜湊項目索引至使用該輸入字串產生的雜湊值;及外部記憶體,耦接至該處理器。
  16. 如申請專利範圍第15項的系統,其中該第一複數個N個位置欄位之各者係用以儲存歷史緩衝器中之獨特 位置的位置值。
  17. 如申請專利範圍第16項的系統,其中該歷史緩衝器包含本地歷史緩衝器及遠處歷史緩衝器,其中該壓縮加速器包括本地歷史記憶體以儲存該本地歷史緩衝器。
  18. 如申請專利範圍第15項的系統,其中該溢位指標欄位係用以儲存指向溢位表之第一溢位項目的指標。
  19. 如申請專利範圍第18項的系統,其中該溢位表的該第一溢位項目包括第二複數個N個位置欄位及鏈接指標欄位,其中該鏈接指標欄位係用以儲存指向該溢位表之第二溢位項目的指標。
  20. 如申請專利範圍第19項的系統,其中該複數個比較器更用以使用該第一溢位項目中的該第二複數個N個位置欄位平行地實施第二組N個比較。
TW105130212A 2015-10-19 2016-09-19 使用具有多個搜尋引擎之加速器的資料壓縮 TWI727971B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/886,348 US9690488B2 (en) 2015-10-19 2015-10-19 Data compression using accelerator with multiple search engines
US14/886,348 2015-10-19

Publications (2)

Publication Number Publication Date
TW201725502A true TW201725502A (zh) 2017-07-16
TWI727971B TWI727971B (zh) 2021-05-21

Family

ID=58523901

Family Applications (1)

Application Number Title Priority Date Filing Date
TW105130212A TWI727971B (zh) 2015-10-19 2016-09-19 使用具有多個搜尋引擎之加速器的資料壓縮

Country Status (5)

Country Link
US (1) US9690488B2 (zh)
CN (1) CN108028664B (zh)
DE (1) DE112016004776T5 (zh)
TW (1) TWI727971B (zh)
WO (1) WO2017069897A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI701564B (zh) * 2017-12-29 2020-08-11 大陸商北京嘀嘀無限科技發展有限公司 用於為大數據添加索引的系統和方法

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10510017B2 (en) * 2015-11-18 2019-12-17 Oath Inc. Method for approximate k-nearest-neighbor search on parallel hardware accelerators
CN108141225B (zh) * 2016-07-14 2020-10-27 华为技术有限公司 使用simd引擎的通用数据压缩
US20180150256A1 (en) * 2016-11-29 2018-05-31 Intel Corporation Technologies for data deduplication in disaggregated architectures
CN108182084B (zh) * 2017-12-28 2021-05-11 中国科学院计算技术研究所 哈希混合加速系统及应用其进行哈希连接的方法
US10447296B1 (en) 2018-06-22 2019-10-15 International Business Machines Coporation Accelerated compression/decompression including predefined dictionary
CN110968258B (zh) * 2018-09-30 2021-09-07 华为技术有限公司 存储盘的控制方法及设备
TWI693518B (zh) 2019-01-16 2020-05-11 慧榮科技股份有限公司 資料儲存裝置及避免韌體失效之方法
US10673460B1 (en) * 2019-02-27 2020-06-02 International Business Machines Corporation Spilling temporary results for accommodation of memory boundaries
US11119928B2 (en) 2019-02-27 2021-09-14 International Business Machines Corporation Instant quiescing of an accelerator
US11593311B2 (en) * 2019-09-24 2023-02-28 Ati Technologies Ulc Compression system with longest match processing for generating compressed data
US20210326271A1 (en) * 2020-04-18 2021-10-21 International Business Machines Corporation Stale data recovery using virtual storage metadata
CN111782743B (zh) * 2020-06-08 2024-03-22 上海飞未信息技术有限公司 一种云计算环境下空间数据管理方法

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6278992B1 (en) * 1997-03-19 2001-08-21 John Andrew Curtis Search engine using indexing method for storing and retrieving data
US6320523B1 (en) * 1999-07-30 2001-11-20 Unisys Corporation Method and apparatus for reducing the time required for compressing data
US6842832B1 (en) * 2000-08-25 2005-01-11 International Business Machines Corporation Reclaim space reserve for a compressed memory system
US7609722B2 (en) * 2003-02-14 2009-10-27 Atheros Communications, Inc. Method and apparatus for transmitting and receiving compressed frame of data over a wireless channel
US7814129B2 (en) 2005-03-11 2010-10-12 Ross Neil Williams Method and apparatus for storing data with reduced redundancy using data clusters
US7680806B2 (en) 2005-05-17 2010-03-16 Cisco Technology, Inc. Reducing overflow of hash table entries
WO2007119539A1 (ja) * 2006-03-31 2007-10-25 Kyushu Institute Of Technology アドレス生成器
US20080065639A1 (en) * 2006-08-25 2008-03-13 Netfortis, Inc. String matching engine
US9183145B2 (en) * 2009-04-27 2015-11-10 Intel Corporation Data caching in a network communications processor architecture
US7982636B2 (en) * 2009-08-20 2011-07-19 International Business Machines Corporation Data compression using a nested hierachy of fixed phrase length static and dynamic dictionaries
US8266325B2 (en) 2010-02-05 2012-09-11 International Business Machines Corporation Compression on thin provisioned volumes using extent based mapping
US8738860B1 (en) * 2010-10-25 2014-05-27 Tilera Corporation Computing in parallel processing environments
US8462781B2 (en) 2011-04-06 2013-06-11 Anue Systems, Inc. Systems and methods for in-line removal of duplicate network packets
KR101956031B1 (ko) * 2012-10-15 2019-03-11 삼성전자 주식회사 데이터 압축 장치 및 방법, 데이터 압축 장치를 포함하는 메모리 시스템
US8954392B2 (en) * 2012-12-28 2015-02-10 Futurewei Technologies, Inc. Efficient de-duping using deep packet inspection
US8766827B1 (en) * 2013-03-15 2014-07-01 Intel Corporation Parallel apparatus for high-speed, highly compressed LZ77 tokenization and Huffman encoding for deflate compression
US9396154B2 (en) * 2014-04-22 2016-07-19 Freescale Semiconductor, Inc. Multi-core processor for managing data packets in communication network
US9772890B2 (en) * 2014-12-31 2017-09-26 International Business Machines Corporation Sophisticated run-time system for graph processing
US9588921B2 (en) * 2015-02-17 2017-03-07 Amazon Technologies, Inc. System on a chip comprising an I/O steering engine
US9590655B2 (en) * 2015-03-27 2017-03-07 Microsoft Technology Licensing, Llc Scalable high-bandwidth architecture for lossless compression

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI701564B (zh) * 2017-12-29 2020-08-11 大陸商北京嘀嘀無限科技發展有限公司 用於為大數據添加索引的系統和方法

Also Published As

Publication number Publication date
CN108028664A (zh) 2018-05-11
TWI727971B (zh) 2021-05-21
DE112016004776T5 (de) 2018-07-12
US9690488B2 (en) 2017-06-27
CN108028664B (zh) 2022-01-18
US20170109056A1 (en) 2017-04-20
WO2017069897A1 (en) 2017-04-27

Similar Documents

Publication Publication Date Title
CN108028664B (zh) 使用具有多个搜索引擎的加速器的数据压缩
US9419647B2 (en) Partitioned data compression using accelerator
US20200218677A1 (en) Management of Processor Performance Based on User Interrupts
US10579530B2 (en) Prefetch filter cache for a processor
TWI697228B (zh) 用於密碼雜湊運算之硬體加速器
US10404836B2 (en) Managing state data in a compression accelerator
TWI769143B (zh) 用於使用浮點運算之硬體消去監測器的處理器、方法及系統
US11886884B2 (en) Branch prediction based on coherence operations in processors
US20170039034A1 (en) Threshold filtering of compressed domain data using steering vector
EP3674847A1 (en) Controlling power state demotion in a processor
US20210064110A1 (en) Control blocks for processor power management
EP4155914A1 (en) Caching based on branch instructions in a processor
CN108694154B (zh) 用于选择数据元素的硬件加速器
US20230100693A1 (en) Prediction of next taken branches in a processor
US20230111694A1 (en) Selection of power supply for a host system
US10606304B2 (en) Usage counter for control of system clocks
US10146690B2 (en) Synchronization logic for memory requests
CN108228484B (zh) 针对处理器中的高速缓存利用的无效读取
US11514551B2 (en) Configuration profiles for graphics processing unit
US20220197635A1 (en) Instruction and logic for sum of square differences
US20220308881A1 (en) Instruction and logic for sum of absolute differences

Legal Events

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