CN108028664B - 使用具有多个搜索引擎的加速器的数据压缩 - Google Patents

使用具有多个搜索引擎的加速器的数据压缩 Download PDF

Info

Publication number
CN108028664B
CN108028664B CN201680054428.1A CN201680054428A CN108028664B CN 108028664 B CN108028664 B CN 108028664B CN 201680054428 A CN201680054428 A CN 201680054428A CN 108028664 B CN108028664 B CN 108028664B
Authority
CN
China
Prior art keywords
hash
entry
overflow
location
processor
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
CN201680054428.1A
Other languages
English (en)
Other versions
CN108028664A (zh
Inventor
V·戈帕尔
J·D·吉尔福德
G·M·沃尔里齐
D·F·卡特
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN108028664A publication Critical patent/CN108028664A/zh
Application granted granted Critical
Publication of CN108028664B publication Critical patent/CN108028664B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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

使用具有多个搜索引擎的加速器的数据压缩
技术领域
各实施例一般涉及数据压缩。更具体地,各实施例涉及使用具有多个搜索引擎的加速器的数据压缩。
背景技术
计算和联网中的进步已经与压缩技术的使用相关联以用于减小数据的尺寸。例如,互联网服务可以利用压缩技术来减小网络通信量所要求的带宽。此外,计算设备可以利用压缩来减少存储数据所要求的存储空间的量。
附图说明
图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-142C各自包括位置值。
在一些实施例中,在散列条目中的所有位置字段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溢出的第一实例中创建。
在一些实施例中,可以仅当散列表140的散列条目的所有位置字段142被填充时将该散列条目移动或溢出至溢出表150。因此,在一些实施例中,在操作期间溢出表150的每个溢出条目中的所有位置字段152是满的。
在一些实施例中,溢出表150可以存储在压缩加速器120的外部。例如,参考图1A,溢出表150可以存储在高速缓存存储器118、系统存储器130、高速缓存存储器118与系统存储器130的组合、或系统100的任何其他存储位置中。在一些实施例中,不根据位置索引溢出表150,而是通过来自散列表140的指针索引溢出表150。因此,在此类实施例中,溢出表150可以包括任何数量的条目而无需考虑历史数据结构中的位置的数量。
在一些实施例中,每个比较器128(如图1B所示)使用唯一位置字段来从历史缓冲器160读取数据。换言之,压缩加速器120中的比较器128的数量N可以与散列表140中的位置字段的数量相等。例如,参考图1B-1C,假设压缩加速器120包括四个比较器128,其中每个比较器128使用位置字段142A-142D中的不同的一个来访问历史缓冲器160。因此,在该示例中,压缩加速器120的四个比较器128可以对被读取的每个散列条目或溢出条目执行四个并行搜索操作。因此,在一些实施例中,可以通过并行地访问N个位置来减少每个比较器128的读取等待时间。
现在参考图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可用硬件、软件和/或固件来实现。在固件和软件实施例中,其可通过计算机执行的指令来实现,该计算机执行的指令被存储在例如光学、半导体或磁存储设备之类的非暂态机器可读介质中。机器可读介质可存储数据,数据如果被至少一个机器使用,使该至少一个机器制造至少一个集成电路以执行方法。为了说明,下文可以参考图1A-1C描述序列200中所涉及的步骤,其示出根据一些实施例的示例。然而,本文所讨论的各实施例的范围不限于此方面。
在框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可用硬件、软件和/或固件来实现。在固件和软件实施例中,其可通过计算机执行的指令来实现,该计算机执行的指令被存储在例如光学、半导体或磁存储设备之类的非暂态机器可读介质中。机器可读介质可存储数据,数据如果被至少一个机器使用,使该至少一个机器制造至少一个集成电路以执行方法。为了说明,下文可以参考图1A-1C描述序列220中所涉及的步骤,其示出根据一些实施例的示例。然而,本文所讨论的各实施例的范围不限于此方面。
在框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可用硬件、软件和/或固件来实现。在固件和软件实施例中,其可通过计算机执行的指令来实现,该计算机执行的指令被存储在例如光学、半导体或磁存储设备之类的非暂态机器可读介质中。机器可读介质可存储数据,数据如果被至少一个机器使用,使该至少一个机器制造至少一个集成电路以执行方法。为了说明,下文可以参考图1A-1C描述序列250中所涉及的步骤,其示出根据一些实施例的示例。然而,本文所讨论的各实施例的范围不限于此方面。
在框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所示的示例不旨在限制任何实施例。构想图1A-1D和2A-2C所示示例中的细节可以在一个或多个实施例中的任何地方使用。
现在参考图3A,所示为根据本发明的实施例的系统300的框图。如图3A所示,系统300可以包括各种组件,其包括所示为多核处理器的处理器303。处理器303可经由外部电压调节器316被耦合至电源317,该外部电压调节器316可执行第一电压转换以将经调节的主电压提供给处理器303。
可以看出,处理器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可符合
Figure GDA0003296990160000131
快速路径互连(QPI)协议,该协议在包括多个层的高速缓存一致性协议中提供点对点(PtP)链路,多个层包括物理层、链路层和协议层。接口314转而可符合外围组件互连快速(PCIeTM)规范,例如,PCI快速TM规范基础规范版本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所述的组件和/或功能的一些或全部。尽管为了易于说明没有示出,但应理解诸如非核(uncore)逻辑和其他组件(诸如,内部存储器(例如,一个或多个层级的高速缓存存储器层次结构等))之类的附加组件可存在于处理器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,该显示控制器332可提供对相关联的显示器的控制以及到它的接口。此外,系统代理域330可包括功率控制单元335以执行功率管理。
如图3B中进一步所示,处理器301还可包括集成存储器控制器(IMC)342,其可提供到诸如动态随机存取存储器(DRAM)之类的系统存储器的接口。可以存在多个接口3400–340n以实现处理器与其他电路之间的互连。例如,在一个实施例中,可提供至少一个直接媒体接口(DMI)接口以及一个或多个PCIeTM接口。更进一步地,为了在诸如附加的处理器或其他电路之类的其他代理之间提供通信,也可提供符合
Figure GDA0003296990160000151
快速路径互连(QPI)协议的一个或多个接口。尽管在图3B的实施例中在该高层级示出,但是会理解,本发明的范围不限于该方面。
尽管为了易于说明在图3B中没有示出,但是在一些实施例中,处理器301可以包括如上文参考图1A-1B所述的压缩加速器120。此外,在一些实施例中,处理器301可以实现如上文参考图1A-1D和2A-2C所述的组件和/或功能的一些或全部。
尽管为了易于说明没有示出,但应理解诸如非核(uncore)逻辑和其他组件(诸如,内部存储器(例如,一个或多个层级的高速缓存存储器层次结构等))之类的附加组件可存在于处理器303内。此外,尽管在图3A的实现中示出为外部电压调节器,但是,多个实施例不限于此。
现在参考图3C,所示为根据本发明的实施例的处理器302的框图。如图3C中所示,处理器302可以是包括多个核370a–370n的多核处理器。在一个实施例中,每一个此类核可以是独立的功率域,并且可被配置成基于工作负荷进入和退出活动状态和/或最大性能状态。可经由互连375将各个核耦合到包括各种组件的系统代理或非核380。如所见,非核380可包括共享高速缓存382,该共享高速缓存382可以是末级高速缓存。此外,非核380可以包括集成存储器控制器384,用于例如经由存储器总线与系统存储器(图3C中未示出)通信。非核380还包括各种接口386a-386n和功率控制单元388,功率控制单元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中,也可复制用于线程401a和401b的其他较小资源,诸如,指令指针以及分配器和重命名器块430中的重命名逻辑。可通过分区来共享诸如重排序/引退单元435中的重排序缓冲器、ILTB420、加载/存储缓冲器和队列之类的一些资源。可潜在地完全共享诸如通用内部寄存器、页表基寄存器、低层级数据高速缓存和数据TLB 415、执行单元440和乱序单元435的多个部分之类的其他资源。
处理器400通常包括其他资源,它们可被完全共享,可通过分区被共享,或可由处理元件专用/专用于处理元件。在图4中,示出具有处理器的说明性逻辑单元/资源的纯示例性处理器的实施例。注意,处理器可包括或省略这些功能单元中的任何单元,并包括未描绘出的任何其他已知的功能单元、逻辑或固件。如所例示的,核401包括简化的、代表性的乱序(OOO)处理器核。但是,在不同实施例中,可利用有序处理器。OOO核包括用于预测将被执行/进行的分支的分支目标缓冲器420以及用于存储指令的地址转换条目的指令转换缓冲器(I-TLB)420。
核401进一步包括被耦合至取出单元420来解码所取出的元素的解码模块425。在一个实施例中,取出逻辑包括分别与线程槽401a、401b相关联的各个序列发生器。通常,核401与第一ISA相关联,该第一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用于高速缓存最近取出的元素。注意,较高层级或进一步远离指的是高速缓存层级增加或进一步远离执行单元。在一个实施例中,较高层级高速缓存410是末级数据高速缓存——处理器400上的存储器层次结构中的末级高速缓存——诸如,第二或第三级数据高速缓存。然而,较高层级高速缓存410不限于此,因为它可与指令高速缓存相关联或包括指令高速缓存。替代地,跟踪高速缓存(指令高速缓存的类型)可耦合在解码器425之后,用于存储最近经解码的跟踪。
在所描绘的配置中,处理器400还包括总线接口模块405和功率控制器460,功率控制器460可执行根据本发明的实施例的功率管理。在该情形下,总线接口405用于与在处理器400外部的设备(诸如系统存储器和其他组件)通信。
存储器控制器470可以与诸如一个或多个存储器之类的其他设备对接。在示例中,总线接口405包括环形互连,其与用于对接存储器的存储器控制器和用于对接图形处理器的图形控制器互连。在SoC环境中,诸如网络接口、协同处理器、存储器、图形处理器以及任何其它已知计算机设备/接口之类的甚至更多的设备可被集成到单个管芯或集成电路上,以提供具有高功能性和低功耗的小形状因数。
尽管为了易于说明在图4中没有示出,但是在一些实施例中,处理器400可以包括如上文参考图1A-1B所述的压缩加速器120。此外,在一些实施例中,处理器400可以实现如上文参考图1A-1D和2A-2C所述的组件和/或功能的一些或全部。
现在参照图5,所示出的是根据本发明的一个实施例的处理器核的微架构的框图。如图5所示,处理器核500可以是多级流水线类型的乱序处理器。核500可以基于所接收的操作电压在各种电压下操作,所接收的操作电压可以接收自集成电压调节器或外部电压调节器。
如图5所示,核500包括前端单元510,前端单元510可用于取出会被执行的指令并将这些指令准备好以供稍后在处理器流水线中使用。例如,前端单元510可包括取出单元501、指令高速缓存503以及指令解码器505。在一些实现中,前端单元510可进一步包括跟踪高速缓存、微代码存储以及微操作存储。取出单元501可(例如,从存储器或指令高速缓存503)取出宏指令并将它们馈送至指令解码器505以将它们解码为原语,即用于通过处理器执行的微操作。
乱序(OOO)引擎515耦合在前端单元510与执行单元520之间,乱序引擎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,在一个实施例中,高速缓存550可以是低层级高速缓存(例如,L1高速缓存),尽管本发明的范围不限于此。而且,执行单元520可直接耦合至高速缓存550。从高速缓存550,可发生与更高层级高速缓存、系统存储器等等的数据通信。虽然在图5的实施例中以此高级别示出,但应理解本发明的范围不限于此方面。例如,虽然图5的实现方式涉及了诸如具有
Figure GDA0003296990160000201
x86指令集架构(ISA)的乱序机器,但本发明的范围在此方面不受限制。即,其他实施例可在以下处理器中实现:有序处理器;诸如基于ARM的处理器的精简指令集计算(RISC)处理器;或具有另一类型ISA的处理器,该另一类型的ISA可经由仿真引擎和相关联的逻辑电路来仿真不同ISA的指令和操作。
尽管为了易于说明在图5中没有示出,但是在一些实施例中,核500可以包括如上文参考图1A-1B所述的压缩加速器120。此外,在一些实施例中,核500可以实现如上文参考图1A-1D和2A-2C所述的组件和/或功能的一些或全部。
现在参照图6,所示出的是根据另一实施例的处理器核的微架构的框图。在图6的实施例中,核600可以是具有不同的微架构的低功率核,诸如设计为降低功耗的具有相对受限制的流水线深度的
Figure GDA0003296990160000211
基于凌动TM(AtomTM)的处理器。如所示,核600包括耦合以将指令提供到指令解码器615的指令高速缓存610。分支预测器605可以耦合到指令高速缓存610。注意,指令高速缓存610可以进一步被耦合到高速缓存存储器的另一层级,诸如L2高速缓存(为了易于说明,图6中未示出)。进而,指令解码器615将经解码的指令提供到发出队列620以供存储和传递到给定的执行流水线。微代码ROM 618被耦合到指令解码器615。
浮点流水线630包括浮点寄存器堆632,该浮点寄存器堆632可包括具有给定位(诸如128、256或512位)的多个架构寄存器。流水线630包括用于调度指令以在流水线的多个执行单元之一上执行的浮点调度器634。在所示的实施例中,此类执行单元包括ALU 635、混洗单元636和浮点加法器638。进而,在这些执行单元中生成的结果可以被往回提供到缓冲器和/或寄存器堆632的寄存器。当然,应理解虽然以这几个示例执行单元示出,但是在另一实施例中可以存在附加的或不同的浮点执行单元。
还可以提供整数流水线640。在所示的实施例中,流水线640包括整数寄存器堆642,其可包括具有给定位(诸如128或256位)的多个架构寄存器。流水线640包括整数调度器644,用于调度指令以在流水线的多个执行单元之一上执行。在所示的实施例中,此类执行单元包括ALU 645、移位器单元646和跳转执行单元648。进而,在这些执行单元中生成的结果可以被往回提供到缓冲器和/或寄存器堆642的寄存器。当然,应理解虽然以这几个示例执行单元示出,但是在另一实施例中可以存在附加的或不同的整数执行单元。
存储器执行调度器650可以调度存储器操作以在地址生成单元652中执行,地址生成单元652还被耦合到TLB 654。如所示,这些结构可以耦合到数据高速缓存660,数据高速缓存660可以是L0和/或L1数据高速缓存,其进而耦合到高速缓存存储器层次结构的附加层级,包括L2高速缓存存储器。
为了提供对乱序执行的支持,可以提供分配器/重命名器670以作为重排序缓冲器680的附加,重排序缓冲器680被配置为对被乱序地执行的指令进行重排序以供有序引退。虽然以图6的图示中的该特定流水线架构示出,但是应理解许多变型和替代是可能的。
注意,在具有非对称核的处理器中,诸如根据图5和6的微架构,由于功率管理的原因,可以在核之间动态地交换工作负荷,因为这些核虽然具有不同的流水线设计和深度,但是可以具有相同或相关的ISA。可以按照对用户应用(并且也可能对内核)透明的方式来执行此类动态核交换。
尽管为了易于说明在图6中没有示出,但是在一些实施例中,核600可以包括如上文参考图1A-1B所述的压缩加速器120。此外,在一些实施例中,核600可以实现如上文参考图1A-1D和2A-2C所述的组件和/或功能的一些或全部。
参照图7,所示为根据又一实施例的处理器核的微架构的框图。如图7所示,核700可以包括多级有序流水线以在非常低的功耗水平处执行。作为一个此类示例,处理器700可以具有根据可从加利福尼亚州桑尼威尔市的ARM控股有限公司得到的ARM Cortex A53设计的微架构。在实现中,可以提供被配置为执行32位和64位代码的8级流水线。核700包括取出单元710,该取出单元710被配置为取出指令并将这些指令提供到解码单元715,解码单元715可以解码指令,例如具有给定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包括取出单元810,取出单元810被配置为取出指令并将这些指令提供到解码器/重命名器/分派器815,解码器/重命名器/分派器815可以对指令(例如,具有ARMv8指令集架构的宏指令)进行解码、对指令内的寄存器引用进行重命名、并且将指令(最终)分派到所选择的执行单元。经解码的指令可被存储在队列825中。注意,虽然为了便于说明在图8中示出单个队列结构,但是应理解分开的多个队列可以被提供给多个不同类型的执行单元中的每一个。
在图8中还示出发出逻辑830,存储在队列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可以是基于
Figure GDA0003296990160000241
架构核TM的处理器(诸如,i3、i5、i7)或可从英特尔公司得到的另一个此类处理器。然而,诸如可从加利福尼亚州桑尼威尔的超微半导体有限公司(AMD)得到的、来自ARM控股有限公司或其被许可方的基于ARM的设计的、或来自加利福尼亚州桑尼威尔的MIPS技术公司或它们的被许可方或采用者的基于MIPS的设计之类的其他低功率处理器可替代地存在于诸如苹果A7处理器、高通骁龙处理器或德州仪器OMAP处理器之类的其他实施例中。此类SoC可用于诸如智能电话、平板计算机、平板手机计算机、超极本TM计算机或其他便携式计算设备之类的低功率系统中。
在图9所示的高层级视图中,处理器900包括多个核单元9100-910n。每一个核单元都可包括一个或多个处理器核、一个或多个高速缓存存储器和其他电路。每一个核单元910都可支持一个或多个指令集(例如,x86指令集(具有与较新版本一起添加的一些扩展);MIPS指令集;ARM指令集(具有诸如NEON的可选附加扩展))或其他指令集或其组合。注意,核单元中的一些可以是异构资源(例如,具有不同设计)。此外,每一个此类核可被耦合到高速缓存存储器(未示出),在实施例中,该高速缓存存储器可以是共享层级(L2)高速缓存存储器。可使用非易失性存储器930来存储各种程序和其他数据。例如,可以使用该存储设备来存储微代码的至少多个部分、诸如BIOS之类的引导信息、其他系统软件等。
每一个核单元910还可包括诸如总线接口单元之类的接口,其用于实现向处理器的附加电路的互连。在实施例中,每一个核单元910都耦合到一致性结构,该一致性结构可充当进而耦合到存储器控制器935的主高速缓存一致性管芯上互连。进而,存储器控制器935控制与诸如DRAM之类的存储器(为了易于说明,在图9中未示出)的通信。
除这些核单元之外,附加的处理引擎也存在于该处理器内,包括至少一个图形单元920,该图形单元920可包括用于执行图形处理以及可能在图形处理器上执行通用操作(所谓的GPGPU操作)的一个或多个图形处理单元(GPU)。此外,可以存在至少一个图像信号处理器925。信号处理器925可被配置成处理从一个或多个捕捉设备(无论是SoC内部的还是芯片外的)接收到的传入的图像数据。
也可以存在其他加速器。在图9的例示中,视频编码器950可执行编码操作,包括对于视频信息的编码和解码,例如,提供对高清晰度视频内容的硬件加速支持。可进一步提供显示控制器955以加速显示操作,包括提供对系统的内部和外部显示器的支持。此外,可以存在安全处理器945,用于执行诸如安全引导操作、各种加密操作等的安全操作。
多个单元中的每一个可以经由功率管理器940来控制其功耗,功率管理器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待优化以便结合进智能电话或诸如平板计算机或其他便携式计算设备之类的其他低功率设备中。作为示例,可使用诸如较高功率核和/或低功率核(例如,乱序核和有序核)的组合之类的非对称核或不同类型核来实现SoC1000。在不同的实施例中,这些核可以基于
Figure GDA0003296990160000261
架构TM核设计或ARM架构设计。在另一些实施例中,可在给定的SoC中实现英特尔核和ARM核的混合。
如图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,其可包括一个或多个图形处理单元(GPU),这些图形处理单元配置成用于独立地执行例如由核域1010和1020中的一个或多个核所提供的图形工作负荷。作为示例,除了提供图形和显示渲染操作之外,GPU域1030可被用于提供对各种屏幕尺寸的显示支持。
如所见,各种域耦合至一致性互连1040,在实施例中,该一致性互连1040可以是进而耦合至集成存储器控制器1050的高速缓存一致性互连结构。一致性互连1040可包括共享高速缓存存储器,诸如,L3高速缓存等一些示例。在实施例中,存储器控制器1050可以是用于提供与芯片外存储器进行的通信的多个通道(诸如,DRAM的多个通道(在图10中为了易于说明而未示出))的直接存储器控制器。
在不同的示例中,核域的数量可以变化。例如,对于适于结合进移动计算设备的低功率SoC,可以存在诸如图10中所示的有限数量的核域。更进一步地,在此类低功率SoC中,包括较高功率核的核域1020可具有较少数量的此类核。例如,在一个实现中,可提供两个核1022以允许以降低的功耗等级进行的操作。此外,也可将不同的核域耦合到中断控制器以启用在不同域之间的工作负荷的动态交换。
在另一些实施例中,可以存在更大量的核域以及附加可选的IP逻辑,如此,可按比例将SoC放大到更高的性能(和功率)水平,以便结合进诸如台式机、服务器、高性能计算系统、基站等的其他计算设备中。作为一个此类示例,可提供各自具有给定数量的乱序核的4个核域。更进一步地,除了可选的GPU支持(作为示例,其可采取GPGPU的形式)之外,还可提供用于对特定功能(例如,web服务、网络处理、交换等)提供优化的硬件支持的一个或多个加速器。此外,可以存在用于将此类加速器耦合到多个芯片外组件的输入/输出接口。
尽管为了易于说明在图10中没有示出,但是在一些实施例中,SoC 1000可以包括如上文参考图1A-1B所述的压缩加速器120。此外,在一些实施例中,SoC 1000可以实现如上文参考图1A-1D和2A-2C所述的组件和/或功能的一些或全部。
现在参考图11,所示出的是另一示例SoC的框图。在图11的实施例中,SoC 1100可包括用于允许多媒体应用、通信和其他功能的高性能的各种电路。由此,SoC 1100适于结合进多种便携式和其他设备,诸如,智能电话、平板计算机、智能电视等。在所示示例中,SoC1100包括中央处理器单元(CPU)域1110。在实施例中,多个单独的处理器核可存在于CPU域1110中。作为一个示例,CPU域1110可以是具有4个多线程核的四核处理器。此类处理器可以是同构或异构处理器,例如,低功率和高功率处理器核的混合。
进而,提供GPU域1120以在一个或多个GPU中执行高级图形处理,从而处理图形并计算API。DSP单元1130可提供一个或多个低功率DSP,这些低功率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,该应用处理器1210可以是系统的主CPU,用于执行除了诸如许多公知的社交媒体与多媒体应用的用户应用之外的OS以及其他系统软件。应用处理器1210可以进一步被配置成为该设备执行各种其他计算操作。
进而,应用处理器1210可以耦合到用户接口/显示器1220,例如,触摸屏显示器。此外,应用处理器1210可耦合至包括非易失性存储器(即,闪存1230)和系统存储器(即,动态随机存取存储器(DRAM)1235)的存储器系统。如进一步所见,应用处理器1210进一步耦合至诸如可记录视频和/或静止图像的一个或多个图像捕捉设备之类的捕捉设备1240。
仍然参考图12,包括订户身份模块并且可能包括安全存储设备和加密处理器的通用集成电路卡(UICC)1240也被耦合到应用处理器1210。系统1200可进一步包括可以耦合到应用处理器1210的安全处理器1250。多个传感器1225可以耦合到应用处理器1210以实现诸如加速度计与其他环境信息之类的各种感测到的信息的输入。音频输出设备1295可提供接口,以便例如以语音通信、播放的或流音频数据等的形式输出声音。
如进一步所示出的,提供近场通信(NFC)非接触式接口1260,其经由NFC天线1265在NFC近场中通信。尽管在图12中示出分离的天线,请理解在一些实现中,可以提供一根天线或不同组的天线以实现各种无线功能。
功率管理集成电路(PMIC)1215耦合到应用处理器1210以执行平台级别功率管理。为此,PMIC 1215可以根据需要发出功率管理请求至应用处理器1210以进入某些低功率状态。此外,基于平台约束,PMIC 1215还可控制系统1200的其他组件的功率级别。
为了实现传送与接收通信,可以在基带处理器1205与天线1290之间耦合各种电路。具体而言,可以存在射频(RF)收发机1270与无线局域网(WLAN)收发机1275。一般而言,可以根据诸如3G或4G无线通信协议(诸如根据码分多址(CDMA)、全球移动通信系统(GSM)、长期演进(LTE)或其他协议)的给定的无线通信协议,使用RF收发机1270接收并传送无线数据和呼叫。此外,可以存在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供电还是经由交流适配器1395由交流电供电。除了该基于功率源的功率管理之外,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,所示为诸如笔记本、超极本TM或其他小形状因数系统的代表性计算机系统1400的框图。在一个实施例中,处理器1410包括微处理器、多核处理器、多线程处理器、超低电压处理器、嵌入式处理器,或其他已知处理元件。在所示出的实现中,处理器1410充当主处理单元以及用于与系统1400的各种组件中的许多组件进行通信的中央枢纽。作为一个示例,处理器1410被实现为SoC。
在一个实施例中,处理器1410与系统存储器1415通信。作为示例性示例,系统存储器1415被实现为经由多个存储器设备或模块来提供给定量的系统存储器。
为提供对诸如数据、应用、一个或多个操作系统等之类的信息的持续存储,大容量存储设备1420还可耦合到处理器1410。在各种实施例中,为了实现更薄和更轻的系统设计以及为了改善系统响应,该大容量存储设备可以经由SSD被实现,或者该大容量存储设备可以主要使用具有较小量的SSD存储设备的硬盘驱动器(HDD)来实现,SSD存储设备充当SSD高速缓存,以在掉电事件期间实现对上下文状态和其他此类信息的非易失性存储,从而在系统活动重新启动时,快速上电可以发生。图14还示出,闪存设备1422可以例如经由串行外围接口(SPI)而被耦合到处理器1410。该闪存设备可以提供对系统软件的非易失性存储,所述系统软件包括基本输入/输出软件(BIOS)以及系统的其他固件。
系统1400内可以存在各种输入/输出(I/O)设备。图14的实施例中具体示出显示器1424,显示器1424可以是进一步提供触摸屏1425的高清晰度LCD或LED面板。在一个实施例中,显示器1424可以经由显示互连而被耦合到处理器1410,该显示互连可被实现为高性能图形互连。触摸屏1425可以经由另一互连而被耦合到处理器1410,在实施例中,该另一互连可以是I2C互连。如图14中进一步所示,除触摸屏1425之外,经由触摸的用户输入也可以经由触板1430进行,触板1430可以配置在机架内,并且还可以耦合到与触摸屏1425相同的I2C互连。
出于感知计算和其他目的,各种传感器可以存在于系统内,并且能以不同的方式被耦合到处理器1410。某些惯性传感器和环境传感器可例如,经由I2C互连,通过传感器中枢1440耦合到处理器1410。在图14所示出的实施例中,这些传感器可以包括加速度计1441、环境光传感器(ALS)1442、罗盘1443以及陀螺仪1444。其他环境传感器可以包括一个或多个热传感器1446,在一些实施例中,这些热传感器1446经由系统管理总线(SMBus)总线耦合到处理器1410。
图14中还可见,各种外围设备可以经由低引脚计数(LPC)互连耦合到处理器1410。在所示的实施例中,可以通过嵌入式控制器1435来耦合各个组件。此类组件可包括键盘1436(例如,经由PS2接口耦合)、风扇1437以及热传感器1439。在一些实施例中,触板1430还可以经由PS2接口耦合到EC 1435。另外,安全处理器(诸如,符合可信计算组(TCG)TPM规范版本1.2(2003年10月2日)的可信平台模块(TPM)1438)也可以经由此LPC互连来耦合到处理器1410。
系统1400能以各种方式(包括以无线方式)与外部设备通信。在图14所示出的实施例中,存在各种无线模块,其中的每一个无线模块都可以对应于针对特定的无线通信协议而配置的无线电装置。用于在短距离(诸如,近场)内进行无线通信的一种方式可以经由NFC单元1445,在一个实施例中,该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进行,该WWAN单元1456进而可以耦合到订户身份模块(SIM)1457。另外,为了允许接收并使用位置信息,还可以存在GPS模块1455。注意,在图14中示出的实施例中,WWAN单元1456和诸如相机模块1454的集成捕捉设备可以经由给定的USB协议(诸如USB 2.0或3.0链路)或UART或I2C协议进行通信。
集成相机模块1454可以被纳入到盖子中。为了提供音频输入和输出,可以经由数字信号处理器(DSP)1460来实现音频处理器,DSP 1460可以经由高清晰度音频(HDA)链路来耦合到处理器1410。类似地,DSP 1460可以与集成的编码器/解码器(CODEC)和放大器1462进行通信,集成的编解码器和放大器1462进而可以耦合到可以在机架内实现的输出扬声器1463。类似地,放大器和CODEC 1462可被耦合到话筒1465以从话筒1465接收音频输入,在实施例中,话筒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包括用于通过P-P互连1539将芯片组1590与高性能图形引擎1538耦合的接口1592。进而,芯片组1590可以经由接口1596被耦合到第一总线1516。如图15所示,各种输入/输出(I/O)设备1514以及总线桥接器1518可被耦合到第一总线1516,总线桥接器1518将第一总线1516耦合到第二总线1520。在一个实施例中,各种设备可被耦合到第二总线1520,包括例如,键盘/鼠标1522、通信设备1526以及诸如可包括代码1530的盘驱动器或者其他大容量存储设备之类的数据存储单元1528。此外,音频I/O 1524可以被耦合到第二总线1520。可将多个实施例合并到其他类型的系统中,包括诸如智能蜂窝电话、平板计算机、上网本、超极本TM等之类的移动设备。
尽管为了易于说明在图15中没有示出,但是在一些实施例中,系统1500可以包括如上文参考图1A-1B所述的压缩加速器120。此外,在一些实施例中,系统1500可以实现如上文参考图1A-1D和2A-2C所述的组件和/或功能的一些或全部。
实施例可以实现在代码中,并且可以存储在非暂态存储介质中,该非暂态存储介质具有存储于其上的指令,该指令可以被用来对系统编程以执行指令。存储介质可以包括但不限于,任何类型的盘,包括软盘、光盘、固态驱动器(SSD)、紧致盘只读存储器(CD-ROM)、紧致盘可重写(CD-RW)以及磁光盘;半导体器件,诸如,只读存储器(ROM)、诸如动态随机存取存储器(DRAM)与静态随机存取存储器(SRAM)的随机存取存储器(RAM)、可擦除可编程只读存储器(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个位置字段是满的:将指向新的溢出条目的指针添加至散列条目的溢出指针字段;以及将输入数据的位置值存储在散列条目的位置字段中。
在示例中,溢出表存储在压缩加速器外部的高速缓存存储器中。
在示例中,方法可以包括,响应于确定散列表不包括与散列值对应的散列条目:将新的散列条目添加至散列表;以及将输入数据的位置值存储在新的散列条目的位置字段中。
在示例中,方法可以包括,响应于确定散列表包括与散列值对应的散列条目:从散列条目读取至少一个位置值;以及使用从散列条目读取的至少一个位置值执行重复串消除操作。
应理解,上述示例的各种组合是可能的。
实施例可以被用于许多不同类型的系统中。例如,在一个实施例中,可以将通信设备布置为用于执行本文所述的各种方法与技术。当然,本发明的范围不限于通信设备,相反,其他实施例可以涉及用于处理指令的其他类型的装置,或一个或多个机器可读介质,该机器可读介质包括指令,响应于在计算设备上执行这些指令,这些指令使该设备执行本文所述的方法与技术中的一个或多个。
在本说明书通篇中对“一个实施例”或“一实施例”的引用意味着结合该实施例描述的特定特征、结构或特性包括在本发明包含的至少一个实现中。因此,短语“一个实施例”或“在一实施例中”的出现不一定指代同一实施例。此外,特定特征、结构或特性可按照与所说明的特定实施例不同的其他适当形式来创立,而且所有此类形式可涵盖在本申请的权利要求中。
虽然已参照有限数量的实施例描述了本发明,但是本领域技术人员将从中领会很多修改和变型。所附权利要求旨在涵盖落入本发明的真实精神与范围的所有此类修改与变型。

Claims (24)

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.一种机器可读介质,所述机器可读介质具有存储于其上的数据,所述数据如果被至少一个机器使用,使所述至少一个机器制造至少一个集成电路以执行根据权利要求9至14中的任一项所述的方法。
16.一种用于处理指令的装置,所述装置被配置成执行如权利要求9至14中的任一项所述的方法。
17.一种用于执行数据压缩的系统,包括:
装置,包括压缩加速器,所述压缩加速器包括:
散列表存储器,其中所述散列表存储器专用于存储包括多个散列条目的散列表,其中所述散列表的每个散列条目包括第一多个N个位置字段和溢出指针字段;以及
多个比较器,用于响应于输入串、使用第一散列条目中的所述第一多个N个位置字段并行地执行第一组N个比较,其中所述第一散列条目索引至使用所述输入串生成的散列值;以及
耦合至所述装置的外部存储器。
18.如权利要求17所述的系统,其特征在于,所述第一多个N个位置字段中的每一个用于存储历史缓冲器中的唯一位置的位置值。
19.如权利要求18所述的系统,其特征在于,所述历史缓冲器包括本地历史缓冲器和远历史缓冲器,其中所述压缩加速器包括用于存储所述本地历史缓冲器的本地历史存储器。
20.如权利要求19所述的系统,其特征在于,所述远历史缓冲器存储在所述压缩加速器外部的高速缓存存储器中。
21.如权利要求17所述的系统,其特征在于,所述溢出指针字段用于存储指向溢出表的第一溢出条目的指针。
22.如权利要求21所述的系统,其特征在于,所述溢出表的所述第一溢出条目包括第二多个N个位置字段和链接指针字段,其中所述链接指针字段用于存储指向所述溢出表的第二溢出条目的指针。
23.如权利要求22所述的系统,其特征在于,所述多个比较器进一步用于使用所述第一溢出条目中的所述第二多个N个位置字段并行地执行第二组N个比较。
24.如权利要求21所述的系统,其特征在于,所述溢出表存储在所述压缩加速器外部的高速缓存存储器中。
CN201680054428.1A 2015-10-19 2016-09-21 使用具有多个搜索引擎的加速器的数据压缩 Active CN108028664B (zh)

Applications Claiming Priority (3)

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
PCT/US2016/052758 WO2017069897A1 (en) 2015-10-19 2016-09-21 Data compression using accelerator with multiple search engines

Publications (2)

Publication Number Publication Date
CN108028664A CN108028664A (zh) 2018-05-11
CN108028664B true CN108028664B (zh) 2022-01-18

Family

ID=58523901

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680054428.1A Active CN108028664B (zh) 2015-10-19 2016-09-21 使用具有多个搜索引擎的加速器的数据压缩

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)

Families Citing this family (13)

* 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 中国科学院计算技术研究所 哈希混合加速系统及应用其进行哈希连接的方法
WO2019127384A1 (en) * 2017-12-29 2019-07-04 Beijing Didi Infinity Technology And Development Co., Ltd. Systems and methods for joining data sets
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 上海飞未信息技术有限公司 一种云计算环境下空间数据管理方法

Citations (4)

* 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
US6842832B1 (en) * 2000-08-25 2005-01-11 International Business Machines Corporation Reclaim space reserve for a compressed memory system
CN103729307A (zh) * 2012-10-15 2014-04-16 三星电子株式会社 数据压缩装置和方法以及包括数据压缩装置的存储系统
CN104300990A (zh) * 2013-03-15 2015-01-21 英特尔公司 用于高速高度压缩lz77令牌化的并行装置和用于紧缩压缩的霍夫曼编码

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6320523B1 (en) * 1999-07-30 2001-11-20 Unisys Corporation Method and apparatus for reducing the time required for compressing data
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
US8954392B2 (en) * 2012-12-28 2015-02-10 Futurewei Technologies, Inc. Efficient de-duping using deep packet inspection
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

Patent Citations (4)

* 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
US6842832B1 (en) * 2000-08-25 2005-01-11 International Business Machines Corporation Reclaim space reserve for a compressed memory system
CN103729307A (zh) * 2012-10-15 2014-04-16 三星电子株式会社 数据压缩装置和方法以及包括数据压缩装置的存储系统
CN104300990A (zh) * 2013-03-15 2015-01-21 英特尔公司 用于高速高度压缩lz77令牌化的并行装置和用于紧缩压缩的霍夫曼编码

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"A New Algorithm for Data Compression";Philip Gage;《The C User Journal》;19940228;1-14 *
"基于LZW的数据压缩硬件系统设计";冯振;《中国优秀硕士学位论文全文数据库 信息科技辑》;20140315;I136-65 *

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
US20170109056A1 (en) 2017-04-20
WO2017069897A1 (en) 2017-04-27
TW201725502A (zh) 2017-07-16

Similar Documents

Publication Publication Date Title
CN108028664B (zh) 使用具有多个搜索引擎的加速器的数据压缩
US9419647B2 (en) Partitioned data compression using accelerator
CN108241507B (zh) 管理压缩加速器中的状态数据
US10579530B2 (en) Prefetch filter cache for a processor
CN108369495B (zh) 用于浮点操作的硬件消除监视器
US9541949B2 (en) Synchronization of domain counters
US11886884B2 (en) Branch prediction based on coherence operations in processors
CN107567614B (zh) 用于对根据关键度被分组的指令的缕程的执行的多核处理器
US9965248B2 (en) Threshold filtering of compressed domain data using steering vector
CN109791427B (zh) 使用滑动平均值的处理器电压控制
US11216276B2 (en) Controlling power state demotion in a processor
CN107077180B (zh) 基于功率状态而调整电压调节器
CN108694154B (zh) 用于选择数据元素的硬件加速器
US11921564B2 (en) Saving and restoring configuration and status information with reduced latency
US20230100693A1 (en) Prediction of next taken branches in a processor
US20230103206A1 (en) Caching based on branch instructions in a processor
US20230111694A1 (en) Selection of power supply for a host system
US20220197656A1 (en) Instruction and logic for code prefetching
CN108228484B (zh) 针对处理器中的高速缓存利用的无效读取
US11514551B2 (en) Configuration profiles for graphics processing unit
US20240111598A1 (en) Sequencing circuit for a processor
US20190102274A1 (en) Utilization Metrics for Processing Engines

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant