管理压缩加速器中的状态数据的制作方法

文档序号:14860257发布日期:2018-07-04 06:47阅读:167来源:国知局
管理压缩加速器中的状态数据的制作方法

各实施例一般涉及数据压缩。更具体地,各实施例涉及使用具有多个压缩引擎的加速器的数据压缩。



背景技术:

计算和联网中的进步已经与压缩技术的使用相关联以用于减小数据的尺寸。例如,互联网服务可以利用压缩技术来减小网络通信量所要求的带宽。此外,计算设备可以利用压缩来减少存储数据所要求的存储空间的量。

附图简述

图1a是根据一个或多个实施例的用于数据压缩的系统的框图。

图1b是根据一个或多个实施例的用于数据压缩的示例操作的框图。

图1c是根据一个或多个实施例的示例状态数据的框图。

图2a是根据一个或多个实施例的用于数据压缩的方法的流程图。

图2b是根据一个或多个实施例的用于数据压缩的方法的流程图。

图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使用数据流的最近部分的滑动窗口。用于这些压缩算法的数据在本文中可以被称为压缩状态数据。例如,压缩状态数据可以包括历史缓冲器以存储数据流的最近部分的滑动窗口。在另一示例中,压缩状态数据可以包括将到历史缓冲器中的指针存储为散列值的散列表。

在一些情形下,压缩器加速器可以接收要被压缩的堆或输入流,并且可以将所接收的数据分成被单独地处理的多个块。例如,压缩器加速器可以包括能并行地压缩数据块的多个引擎。然而,当跨两个数据块执行串匹配时,压缩器加速器可能必须在引擎之间传递状态信息。因此,处理第二数据块的引擎可能被延迟以接收来自处理第一数据块的引擎的状态信息。此外,这种传递数据可能占用引擎之间的数据带宽。

在另一示例中,压缩器加速器一次可以压缩一个数据块(例如,串行地)。然而,如果在处理两个顺序数据块中存在间隙,则压缩器加速器可能必须将第一数据块的状态数据保存到存储器,并且可能必须在准备好处理第二数据块时读取所保存的状态信息。由此,该方法可能涉及与这些到/自存储器的转移相关联的时间延迟和带宽使用。

根据一些实施例,压缩加速器可以压缩来自输入流的数据块。在一些实施例中,在压缩给定数据块之前,压缩加速器可以使用在前数据块的子部分来更新状态数据。由此,一些实施例可以避免必须在多个引擎之间传递状态数据,或者必须保存状态数据和从存储器读取状态数据。因此,一些实施例可以减少与传递状态数据相关联的延迟和带宽使用。

尽管参考特定实现描述下列实施例,但实施例不限于此方面。具体而言,构想可以将本文所述的实施例的类似的技术和教导应用到其他类型的电路、半导体器件、处理器、系统等。例如,所公开的实施例可以任一类型的计算机系统实现,包括服务器计算机(例如,塔、机架、刀片、微服务器等等)、通信系统、存储系统、任意配置的台式计算机、膝上型计算机、笔记本和平板计算机(包括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。每个核115可以是通用处理核。系统存储器130可以利用任何类型的计算机存储器(例如,动态随机存取存储器(dram)、静态随机存取存储器(sram)、非易失性存储器(nvm)、dram和nvm的组合等)来实现。

在一个或多个实施例中,压缩加速器120可以是专用于执行压缩操作的硬件设备。例如,压缩加速器120可以是任何硬件单元,诸如压缩协处理器、插入卡、模块、芯片、处理块等。此外,在一些实施例中,压缩加速器120可以实现在处理器110的电路和/或微架构中、在处理核115中,等等。尽管示出为图1a的实施例中的特定实现,但是本文讨论的各实施例的范围不限于此方面。

在一些实施例中,压缩加速器120可以包括任意数量的压缩引擎125。每个压缩引擎125可以并行地操作以压缩输入数据的不同块。例如,在一些实施例中,压缩引擎125可以基于lz77算法执行压缩操作,并且可以使用长度-距离对来编码输入数据内的经复制的串。此外,在一些实施例中,压缩加速器120可以使用其他压缩算法。例如,压缩加速器120可以使用deflate算法、lempel-ziv-oberhumer(lzo)算法、lempel-ziv-stac(lzs)算法、lz4算法、lzf算法等。

在一些实施例中,每个压缩引擎125可以使用单独的状态数据来执行压缩操作。例如,压缩引擎125的状态数据可以包括历史缓冲器以存储压缩引擎125处理的最近多个字符。在另一示例中,压缩引擎125的状态数据可以包括散列表。散列表可以包括任意数量的条目,其中每个条目根据输入数据部分(例如,三个字节的串)的唯一散列值被索引。在一个或多个实施例中,压缩引擎125可以是包括电路/逻辑的执行单元以搜索历史缓冲器中的匹配串。例如,压缩引擎125可以通过将输入数据与读取自历史缓冲器的字符序列进行比较来执行搜索操作。可以使用散列表来访问读取自历史缓冲器的数据。

在一些实施例中,压缩引擎125可以包括专用存储器单元(图1a未示出)以存储状态数据。例如,压缩引擎125可以包括用于存储散列表的存储器单元、用于存储历史缓冲器的存储器单元等。这些专用存储器单元可以使用动态随机存取存储器(dram)、静态随机存取存储器(sram)、非易失性存储器(nvm)、dram和nvm的组合等实现在压缩引擎125中。

现在参考图1b,所示为根据一个或多个实施例的用于数据压缩的示例操作160的框图。如所示,在示例操作160中,输入流140可以包括一系列数据块,即第一数据块142、第二数据块144和第三数据块146。假设这些数据块会分别由第一引擎152、第二引擎154和第三引擎156压缩。引擎152、154、156可以各自总体上对应于压缩引擎125(图1a所示)。例如,引擎152、154、156可以各自被包括在硬件压缩加速器(例如,图1a所示的压缩加速器120)中。

如图1b所示,在示例操作160中,第一引擎152可以压缩第一数据块142的全部。例如,第一引擎152可以压缩包括在第一数据块142中的第一子部分142a和第二子部分142b。

在一些实施例中,压缩第一数据块142可以包括由第一引擎152生成或更新状态数据153。例如,状态数据153可以包括基于第一子部分142a和第二子部分142b更新的历史缓冲器。在另一示例中,状态数据153可以包括基于第一子部分142a和第二子部分142b更新的散列表。

在一些实施例中,压缩第一数据块142可以包括使用状态数据153执行匹配操作。例如,第一引擎152可以将第一数据块142的输入数据串与读取自状态数据153中的历史缓冲器的字符序列进行比较。此外,第一引擎152可以使用状态数据153中的散列表的条目访问来自历史缓冲器的数据。

在一个或多个实施例中,第二引擎154可以接收第一数据块142的第二子部分142b和第二数据块144的全部。在一些实施例中,第二引擎154可以基于第一数据块142的第二子部分142b生成或更新状态数据155。此外,在一些实施例中,第二引擎154可以仅使用第二子部分142b来更新状态数据155,但是可以不执行第二子部分142b的任何匹配操作。在一些实施例中,第二子部分142b可以是第一数据块142的末尾部分。例如,第二子部分142b可以是第一数据块142的最后32kb。在一些实施例中,第二子部分142b的尺寸可以对应于第二引擎154使用的历史缓冲器的尺寸。此外,在一些实施例中,第二子部分142b的尺寸可以由用户调节。例如,可以将偏移设置为小于历史缓冲器的尺寸以引起压缩率的损失但是改善由于数据移动的带宽使用。

在一个或多个实施例中,在基于第二子部分142b更新状态数据155之后,第二引擎154可以压缩第二数据块144的全部。例如,第二引擎154可以压缩包括在第二数据块144中的第一子部分144a和第二子部分144b。

在一些实施例中,压缩第二数据块144可以包括基于第二数据块144的全部更新状态数据155。注意,状态数据155最初基于第一块142的第二子部分142b更新,并且随后基于第二块144的全部更新。

在一些实施例中,压缩第二数据块144可以包括使用状态数据155执行匹配操作。例如,第二引擎154可以将第二数据块144的输入数据串与读取自状态数据155中的历史缓冲器的字符序列进行比较。

在一个或多个实施例中,第三引擎156可以接收第二数据块144的第二子部分144b和第三数据块146的全部。第三引擎156可以基于第二数据块144的第二子部分144b更新状态数据157。在一些实施例中,第三引擎156可以仅使用第二子部分144b来更新状态数据155。

在一个或多个实施例中,在基于第二子部分144b更新状态数据157之后,第三引擎156可以压缩第三数据块146的全部。在一些实施例中,压缩第二数据块144可以包括基于第三数据块146的全部更新状态数据157。此外,压缩第三数据块146可以包括使用状态数据157对第三数据块146执行匹配操作。

假设,在图1b所示的示例操作160中,引擎152、154、156可以以并行方式操作。由此,可以并行地处理输入流140的顺序块,并且因此可以避免与在引擎之间传递状态数据相关联的延迟和带宽使用。例如,因为第二引擎154可以使用第二子部分142b更新状态数据155,所以第二引擎154可以开始处理第二数据块144而不必等待第一引擎152传递与第一数据块142相关联的状态信息。因此,一些实施例可以提供改善的压缩性能。

在一些实施例中,引擎152、154、156中的每一个可以接收与压缩操作相关联的一个或多个参数,并且可以使用这些参数来正确地读取输入数据。在一些实施例中,这些参数可以包括到当前数据块的开始位置的输入指针、当前数据块的尺寸和对应于来自在前数据块的子部分的尺寸的偏移。例如,第一引擎152可以接收到第一数据块142的起点的输入指针、第一数据块142的尺寸和偏移值零。注意,因为第一数据块142不跟在另一数据块之后,所以第一引擎152不接收来自在前数据块的子部分,并且因此偏移值为零。在另一示例中,第二引擎154可以接收到第二数据块144的起点的输入指针、第二数据块144的尺寸和等于第二子部分142b的尺寸的偏移值。在一些实施例中,偏移值可以由用户调节,或者可以等于历史缓冲器的尺寸。

现在参考图1c,所示为根据一个或多个实施例的示例状态数据190的框图。具体而言,图1c示出散列表170和历史缓冲器180的示例。假设图1c示出在压缩操作期间的状态数据190。注意,图1c所示的状态数据190的数据结构出于示例的目的而提供,并且不旨在限制任何实施例。例如,构想状态数据190可以包括用于数据压缩的任何其他数据结构(例如,索引数据结构、溢出数据结构、多个散列表等)。

如图1c所示,散列表170包括多个行,其中每行表示散列条目。在该示例中,散列表170的每个散列条目示出为包括五个位置字段172a-172e(共同被称为位置字段172)。每个散列条目被索引到输入数据部分(例如,数据流中的字符串)的唯一散列值。更新散列表170的过程可以被称为“散列更新”操作。此外,读取散列表170的过程可以被称为“散列查找”操作。

在一些实施例中,在压缩操作期间,被处理的每个串存储在历史缓冲器180的初始位置中(即,在滑动窗口的起点处)。随着附加的串被接收,一系列串滑动穿过滑动窗口,其中最旧的串被丢弃出历史缓冲器180。此外,每个串的散列值被确定,并且历史缓冲器180中的串的位置存储在被索引到串的散列值的散列条目的位置字段172中。可以重复该过程直到散列条目中的所有位置字段172a-172e被相应的位置值填充。例如,假设与散列条目176相关联的串在压缩操作期间已经出现了三次。因此,如图1c所示,散列条目176的前三个位置字段172a-172c各自包括标识历史缓冲器180中的不同位置的位置值(由字母"l"表示),但是散列条目176的其余两个位置字段172d-172e保持为空。

注意,尽管图1a-1c的示例参考具有并行地操作的多个引擎的压缩加速器描述,但是实施例不限于此方面。构想一些实施例可以实现为一次仅能执行单个压缩操作的压缩加速器。例如,参考图1b,假设第一引擎152用于压缩第一数据块142、第二数据块144和第三数据块146。进一步假设,在压缩第一数据块142之后,第一引擎152用于在压缩第二数据块144之前处理不相关的数据(即,未被包括在输入流140中)。在一些实施例中,在处理不相关的数据之后,第一引擎152可以基于第二子部分142b更新状态数据153,并且然后可以压缩第二数据块144。由此,一些实施例可以允许第一引擎152利用来自第一数据块142的一些状态信息压缩第二数据块144,并且因此可以提供对第二数据块144的改善的压缩(例如,改善的压缩率)。此外,一些实施例可以允许第一引擎152压缩第二数据块144而不必在压缩全部第一数据块142之后将状态信息保存到存储器,以及不必在开始压缩第二数据块144时从存储器读取这些状态信息。因此,一些实施例可以减少或消除与这种保存到存储器和从存储器读取相关联的时间延迟和带宽使用。

在一个或多个实施例中,压缩引擎可以将来自下列数据块的开始部分的后缀(例如,258字节)附加到当前数据块。如果压缩引擎确定位于当前数据块末尾的串匹配扩展到下一数据块中,则压缩引擎可以包括压缩引擎的输出流中的匹配。此外,来自当处理下一数据块时被复制的该匹配的任何数据可以被软件中的后处理消除。然而,如果串匹配不扩展到下一数据块中,则压缩引擎可以决定恰好在块边界处结束匹配。

在一个或多个实施例中,压缩引擎可以仅更新数据块中的串位置的子集的状态数据。例如,压缩引擎可以仅更新与新的一行的起点相关联的串位置的状态数据、每隔一个串位置的状态数据等。在一些实施例中,用于更新的串位置可以使用一种或多种试探法来确定。这些试探法可以允许更新时段中的加速与压缩率的损失的折衷。

现在参考图2a,所示为根据一个或多个实施例的用于数据压缩的方法200的流程图。在各实施例中,方法200可由可包括硬件(例如,处理设备、电路、专用逻辑、可编程逻辑、微代码等)、软件(例如,在处理设备上运行的指令)或其组合的处理逻辑来执行。在一些实现方式中,方法200可以由图1a所示的压缩加速器120执行。在固件或软件实施例中,它可通过计算机执行的指令来实现,该计算机执行的指令被存储在例如光学、半导体或磁存储设备之类的非瞬态机器可读介质上。机器可读介质可存储数据,数据如果被至少一个机器使用,使该至少一个机器制造至少一个集成电路以执行方法。为了说明,可以在下文参考图1a-1b描述方法200中所涉及的步骤,其示出根据一些实施例的示例。然而,本文所讨论的各实施例的范围不限于此方面。

在框205处,压缩加速器可以接收包括第一数据块和第二数据块的输入流或文件。例如,参考图1a,压缩加速器120可以接收要被压缩的一系列数据块。在一些实施例中,数据块可以由压缩引擎120的多个处理引擎125并行地处理。在框205之后,方法200可以在框210和框220处并行地继续。

在框210处,可以在压缩加速器的第一压缩引擎处压缩第一数据块。例如,参考图1b,第一数据块142可以由第一引擎152压缩。在一些实施例中,响应于接收包括第一数据块142的开始位置、第一数据块142的尺寸和偏移值零的参数,第一引擎152可以压缩第一数据块142。

在块220处,压缩加速器的第二压缩引擎可以使用第一数据块的子部分更新状态数据。例如,参考图1b,第二引擎154可以基于第一数据块142的第二子部分142b更新状态数据155。在一些实施例中,第二子部分142b可以是第一数据块142的末尾部分。例如,第二子部分142b可以包括第一数据块142的最后32kb。在一些实施例中,响应于接收包括第二数据块144的开始位置、第二数据块144的尺寸和等于第二子部分142b的尺寸的偏移值的参数,第二引擎154可以使用第二子部分142b更新状态数据155。

在框225处,在更新状态数据(在框220处)之后,第二压缩引擎可以压缩第二数据块。例如,参考图1b,第二引擎154可以压缩第二数据块144。在一些实施例中,压缩第二数据块144可以包括基于全部第二数据块144更新状态数据155。此外,压缩第二数据块144可以包括使用状态数据155执行第二数据块144的匹配操作。在框210和225之后,方法200完成。

现在参考图2b,所示为根据一个或多个实施例的用于数据压缩的方法230的流程图。在各实施例中,方法200可由可包括硬件(例如,处理设备、电路、专用逻辑、可编程逻辑、微代码等)、软件(例如,在处理设备上运行的指令)或其组合的处理逻辑来执行。在一些实现方式中,方法230可以由图1a所示的压缩加速器120执行。在固件或软件实施例中,它可通过计算机执行的指令来实现,该计算机执行的指令被存储在例如光学、半导体或磁存储设备之类的非瞬态机器可读介质上。机器可读介质可存储数据,数据如果被至少一个机器使用,使该至少一个机器制造至少一个集成电路以执行方法。为了说明,可以在下文参考图1a-1b描述方法230中所涉及的步骤,其示出根据一些实施例的示例。然而,本文所讨论的各实施例的范围不限于此方面。

在框240处,压缩加速器可以接收输入流的第一数据块。例如,参考图1b,第一引擎152可以在第一时间点处接收第一数据块142。

在框245处,第一数据块的全部可以由压缩加速器压缩。例如,参考图1b,第一数据块142的全部可以由第一引擎152压缩。在一些实施例中,在压缩第一数据块142之后,第一引擎152可以处理一些不相关的数据(例如,不是与第一数据块142相同的输入流的一部分)。

在框250处,压缩加速器可以接收输入流的第一数据块的子部分和第二数据块的全部。例如,参考图1b,假设在第二时间点处(例如,在处理不相关的数据之后),第一引擎152接收第一数据块142的第二子部分142b,并且还接收全部第二数据块144。

在框255处,压缩加速器可以使用第一数据块的子部分(在框250处接收)更新压缩状态数据。例如,参考图1b,假设第一引擎152基于第一数据块142的第二子部分142b更新状态数据153。

在框260处,在更新压缩状态数据(在框255处)之后,压缩加速器可以使用更新的压缩状态数据压缩第二数据块的全部(在框250处接收)。例如,参考图1b,假设第一引擎152使用状态数据153压缩第二数据块144。在框260之后,方法230完成。

注意,为了说明而提供图1a-1c和2a-2b所示的示例,并且图1a-1c和2a-2b所示的示例不旨在限制任何实施例。例如,尽管为了清楚可以以简化形式示出实施例,但是实施例可以包括任何数量和/或布置的处理器、核、和/或附加组件(例如,总线、存储介质、连接器、功率组件、缓冲器、接口等)。此外,构想一些实施例除了所示的那些组件可以包括任何数量的组件,并且所示组件的不同布置可以在某些实现方式中出现。此外,构想图1a-1c和2a-2b所示示例中的细节可以在一个或多个实施例中的任何地方使用。

现在参考图3a,所示为根据本发明的实施例的系统300的框图。如图3a所示,系统300可以包括各种组件,其包括所示为多核处理器的处理器303。处理器303可经由外部电压调节器316耦合至电源317,该外部电压调节器316可执行第一电压转换以将经调节的主电压提供给处理器303。

可以看出,处理器303可以是包括多个核304a-304n的单管芯处理器。另外,每一个核304可以与集成的电压调节器(ivr)308a-308n相关联,这些集成的电压调节器接收经调节的主电压,并生成操作电压,操作电压被提供到与ivr308相关联的处理器的一个或多个代理。相应地,可提供ivr实现以允许对每一个单个核304的电压进而对功率和性能进行细粒度的控制。由此,每一个核304都可在独立的电压和频率下操作,从而允许极大的灵活性,并提供平衡功耗与性能的广泛机会。在一些实施例中,对多个ivr308的使用允许将组件分组到不同的功率层中,使得功率被ivr308调节并且仅被提供给组中的那些组件。在功率管理期间,当处理器被置于某个低功率状态时,一个ivr308的给定的功率层可以被掉电或断电,而另一ivr308的另一功率层保持为活动的或完全供电的。

仍参考图3a,附加的组件可存在于处理器内,包括输入/输出接口313、另一接口314以及集成存储器控制器315。可以看出,这些组件中的每一个都可以由另一集成的电压调节器308x来供电。在一个实施例中,接口313可符合快速路径互连(qpi)协议,该协议在包括多个层的高速缓存一致性协议中提供点对点(ptp)链路,多个层包括物理层、链路层和协议层。接口314转而可符合外围组件互连快速(pcietm)规范,例如,pci快速tm规范基础规范版本2.0(2007年1月17日发布)。

还示出了功率控制单元(pcu)312,其可包括用于针对处理器303执行功率管理操作的硬件、软件和/或固件。可以看出,pcu312经由数字接口将控制信息提供给外部电压调节器316以使该外部电压调节器316生成合适的经调节的电压。pcu312也经由另一数字接口将控制信息提供给多个ivr308以控制所生成的操作电压(或使对应的ivr308在低功率模式下被禁用)。在一些实施例中,被提供给多个ivr308的控制信息可包括对应核304的功率状态。

在各实施例中,pcu312可以包括用于执行基于硬件的功率管理的各种功率管理逻辑单元。此类功率管理可以是完全被处理器控制的(例如,通过各种处理器硬件,并且其可以是被工作负荷和/或功率、热或其他处理器约束触发的),并且/或者功率管理可以响应于外部源(诸如平台或管理功率管理源或系统软件)而被执行。

在一些实施例中,压缩加速器310可通常对应于图1a-1b所示的压缩加速器120。在一些实施例中,处理器303可以实现如上文参考图1a-1c和2a-2b所述的组件和/或功能的一些或全部。尽管为了易于说明没有示出,但应理解诸如非核(uncore)逻辑和其他组件(诸如,内部存储器(例如,一个或多个层级的高速缓存存储器层次结构等))之类的附加组件可存在于处理器303内。此外,尽管在图3a的实现中示出为外部电压调节器,但是,多个实施例不限于此。

可在用于各种市场的处理器(包括服务器处理器、台式机处理器、移动处理器等)中实现多个实施例。现在参考图3b,所示为根据一个或多个实施例的多域处理器301的框图。如图3b的实施例中所示,处理器301包括多个域。具体而言,核域321可以包括多个核3200–320n,图形域324可以包括一个或多个图形引擎,并且还可以存在系统代理域330。在一些实施例中,系统代理域330能以独立于核域的独立频率执行,并且可在全部的时刻保持被供电以处理功率控制事件和功率管理,使得可以控制域321和324动态地进入和退出高功率状态和低功率状态。域321和324中的每一个能以不同的电压和/或功率操作。注意,虽然仅以三个域示出,但是应理解,本发明的范围不限于此方面,并且附加的域可存在于其他实施例中。例如,可以存在多个核域,其中每个核域包括至少一个核。

一般而言,除各种执行单元和附加的处理元件之外,每个核320还可包括多个低层级高速缓存。进而,各种核可彼此耦合,并且耦合到共享高速缓存存储器,该共享高速缓存存储器由末级高速缓存(llc)3220–322n的多个单元形成。在各实施例中,可在多个核与图形引擎以及各种媒体处理电路之间共享llc322。如所示,环形互连323由此将多个核耦合到一起,并且在多个核320、图形域324和系统代理域330之间提供互连。在一个实施例中,互连323可以是核域321的部分。然而,在其他实施例中,该环形互连323可以是其自身域中的。

如进一步所示,系统代理域330可包括显示控制器332,该显示控制器332可提供对相关联的显示器的控制以及到它的接口。此外,系统代理域330可包括功率控制单元335以执行功率管理。

如图3b中进一步所示,处理器301还可包括集成存储器控制器(imc)342,其可提供到诸如动态随机存取存储器(dram)之类的系统存储器的接口。可以存在多个接口3400–340n以实现处理器与其他电路之间的互连。例如,在一个实施例中,可提供至少一个直接媒体接口(dmi)接口以及一个或多个pcietm接口。更进一步地,为了在诸如附加的处理器或其他电路之类的其他代理之间提供通信,也可提供符合快速路径互连(qpi)协议的一个或多个接口。尽管在图3b的实施例中在该高层级示出,但是会理解,本发明的范围不限于该方面。

尽管为了易于说明在图3b中没有示出,但是在一些实施例中,处理器301可以包括如上文参考图1a-1b所述的压缩加速器120。此外,在一些实施例中,处理器301可以实现如上文参考图1a-1c和2a-2b所述的组件和/或功能的一些或全部。

尽管为了易于说明没有示出,但应理解诸如非核(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-1c和2a-2b所述的组件和/或功能的一些或全部。

参考图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、加载/存储缓冲器和队列之类的一些资源。可潜在地完全共享诸如通用内部寄存器、页表基寄存器、低层级数据高速缓存和数据tlb415、执行单元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是末级数据高速缓存(处理器400上的存储器层次结构中的末级高速缓存),诸如,第二或第三级数据高速缓存。然而,较高层级高速缓存410不限于此,因为它可与指令高速缓存相关联或包括指令高速缓存。替代地,跟踪高速缓存(指令高速缓存的类型)可耦合在解码器425之后,用于存储最近经解码的跟踪。

在所描绘的配置中,处理器400还包括总线接口模块405和可执行根据本发明的实施例的功率管理的功率控制器460。在该情形下,总线接口405用于与在处理器400外部的设备(诸如系统存储器和其他组件)通信。

存储器控制器470可以与诸如一个或多个存储器的其他设备对接。在示例中,总线接口405包括环形互连,其与用于对接存储器的存储器控制器和用于对接图形处理器的图形控制器互连。在soc环境中,诸如网络接口、协同处理器、存储器、图形处理器以及任何其它已知计算机器件/接口之类的甚至更多的器件可被集成到单个管芯或集成电路上,以提供具有高功能性和低功耗的小形状因数。

尽管为了易于说明在图4中没有示出,但是在一些实施例中,处理器400可以包括如上文参考图1a-1b所述的压缩加速器120。此外,在一些实施例中,处理器400可以实现如上文参考图1a-1c和2a-2b所述的组件和/或功能的一些或全部。

现在参照图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。更具体地,rob540可包括多种阵列和逻辑以接收与被执行的指令相关联的信息。然后,通过rob540检查该信息以确定指令是否可以有效引退并且结果数据是否被提交至处理器的架构状态,或阻止指令的正常引退的一个或多个异常是否发生。当然,rob540可处理与引退相关联的其他操作。

如图5所示,rob540耦合至高速缓存550,在一个实施例中,高速缓存550可以是低层级高速缓存(例如,l1高速缓存),尽管本发明的范围不限于此。而且,执行单元520可直接耦合至高速缓存550。从高速缓存550,可发生与更高层级高速缓存、系统存储器等等的数据通信。虽然在图5的实施例中以此高级别示出,但应理解本发明的范围不限于此方面。例如,虽然图5的实现方式涉及了诸如具有x86指令集架构(isa)的乱序机器,但本发明的范围在此方面不受限制。即,其他实施例可在以下处理器中实现:有序处理器;诸如基于arm的处理器的精简指令集计算(risc)处理器;或具有另一类型isa的处理器,该另一类型的isa可经由仿真引擎和相关联的逻辑电路来仿真不同isa的指令和操作。

尽管为了易于说明在图5中没有示出,但是在一些实施例中,核500可以包括如上文参考图1a-1b所述的压缩加速器120。此外,在一些实施例中,核500可以实现如上文参考图1a-1c和2a-2b所述的组件和/或功能的一些或全部。

现在参照图6,所示为根据另一实施例的处理器核的微架构的框图。在图6的实施例中,核600可以是具有不同的微架构的低功率核,诸如设计为降低功耗的具有相对受限制的流水线深度的基于凌动tm(atomtm)的处理器。如所示,核600包括耦合以将指令提供到指令解码器615的指令高速缓存610。分支预测器605可以耦合到指令高速缓存610。注意,指令高速缓存610可以进一步耦合到高速缓存存储器的另一层级,诸如l2高速缓存(为了易于说明,图6中未示出)。进而,指令解码器615将经解码的指令提供到发出队列620以供存储和传递到给定的执行流水线。微代码rom618耦合到指令解码器615。

浮点流水线630包括浮点寄存器堆632,其可包括具有给定位(诸如128、256或512位)的多个架构寄存器。流水线630包括浮点调度器634,用于调度指令以在流水线的多个执行单元之一上执行。在所示的实施例中,此类执行单元包括alu635、混洗单元636和浮点加法器638。进而,在这些执行单元中生成的结果可以被往回提供到缓冲器和/或寄存器堆632的寄存器。当然,应理解虽然以这几个示例执行单元示出,但是在另一实施例中可以存在附加的或不同的浮点执行单元。

还可以提供整数流水线640。在所示的实施例中,流水线640包括整数寄存器堆642,其可包括具有给定位(诸如128或256位)的多个架构寄存器。流水线640包括整数调度器644,用于调度指令以在流水线的多个执行单元之一上执行。在所示的实施例中,此类执行单元包括alu645、移位器单元646和跳转执行单元648。进而,在这些执行单元中生成的结果可以被往回提供到缓冲器和/或寄存器堆642的寄存器。当然,应理解虽然以这几个示例执行单元示出,但是在另一实施例中可以存在附加的或不同的整数执行单元。

存储器执行调度器650可以调度存储器操作以在地址生成单元652中执行,地址生成单元652还耦合到tlb654。如所示,这些结构可以耦合到数据高速缓存660,数据高速缓存660可以是l0和/或l1数据高速缓存,其进而耦合到高速缓存存储器层次结构的附加层级,包括l2高速缓存存储器。

为了提供对乱序执行的支持,可以提供分配器/重命名器670以作为重排序缓冲器680的附加,重排序缓冲器680配置为对被乱序地执行的指令进行重排序以供有序引退。虽然以图6的图示中的该特定流水线架构示出,但是应理解许多变型和替代是可能的。

注意,在具有非对称核的处理器中,诸如根据图5和6的微架构,由于功率管理的原因,可以在核之间动态地交换工作负荷,因为这些核虽然具有不同的流水线设计和深度,但是可以具有相同或相关的isa。可以按照对用户应用(并且也可能对内核)透明的方式来执行此类动态核交换。

尽管为了易于说明在图6中没有示出,但是在一些实施例中,核600可以包括如上文参考图1a-1b所述的压缩加速器120。此外,在一些实施例中,核600可以实现如上文参考图1a-1c和2a-2b所述的组件和/或功能的一些或全部。

参照图7,所示为根据又一实施例的处理器核的微架构的框图。如图7所示,核700可以包括多级有序流水线以在非常低的功耗水平处执行。作为一个此类示例,处理器700可以具有根据可从加利福尼亚州桑尼威尔市的arm控股有限公司得到的armcortexa53设计的微架构。在实现中,可以提供配置为执行32位和64位代码的8级流水线。核700包括取出单元710,取出单元710配置为取出指令并将这些指令提供到解码单元715,解码单元715可以解码指令,例如具有给定isa(诸如armv8isa)的宏指令。此外,注意队列730可以耦合到解码单元715以存储经解码的指令。经解码的指令被提供到发出逻辑725,其中可以将经解码的指令发出到多个执行单元中的给定的一个。

进一步参考图7,发出逻辑725可以将指令发出到多个执行单元中的一个。在所示的实施例中,这些执行单元包括整数单元735、乘法单元740、浮点/向量单元750、双发出单元760和加载/存储单元770。可以将这些不同的执行单元的结果提供到写回单元780。应理解,虽然为了便于说明示出单个写回单元,但是在一些实现中,分开的多个写回单元可以与执行单元中的每一个相关联。此外,应理解,虽然图7中示出的单元中的每一个和逻辑被表示为在高层级,但是特定实现可以包括多个或不同的结构。可以在许多不同的最终产品(从移动设备扩展到服务器系统)中实现使用一个或多个具有如图7中的流水线的核来设计的处理器。

尽管为了易于说明在图7中没有示出,但是在一些实施例中,核700可以包括如上文参考图1a-1b所述的压缩加速器120。此外,在一些实施例中,核700可以实现如上文参考图1a-1c和2a-2b所述的组件和/或功能的一些或全部。

现在参考图8,所示为根据再一实施例的处理器核的微架构的框图。如图8所示,核800可以包括多级多发出乱序流水线以在非常高性能水平处执行(其可在高于图7的核700的功耗水平处发生)。作为一个此类示例,处理器800可以具有根据armcortexa57设计的微架构。在实现中,可以提供配置为执行32位和64位代码的15(或更大)级流水线。此外,流水线可以提供3路(或更大)宽度和3路(或更大)发出操作。核800包括取出单元810,取出单元810配置为取出指令并将这些指令提供到解码器/重命名器/分派器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-1c和2a-2b所述的组件和/或功能的一些或全部。

可以在许多不同的最终产品(从移动设备扩展到服务器系统)中实现设计为使用一个或多个具有图5-8中的任意一个或多个中的流水线的核的处理器。现在参考图9,所示是根据本发明的另一实施例的处理器的框图。在图9的实施例中,处理器900可以是包括多个域的soc,可控制其中的每一个域在独立的操作电压和操作频率下进行操作。作为特定的说明性示例,处理器900可以是基于架构核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可以包括用于执行本文中所描述的各种功率管理技术的控制逻辑。

在一些实施例中,soc900还可包括耦合到一致性结构(各种外围设备可耦合到该一致性结构)的非一致性结构。一个或多个接口960a-960d实现与一个或多个芯片外设备的通信。此类通信可以根据各种通信协议,诸如,pcietm、gpio、usb、i2c、uart、mipi、sdio、ddr、spi、hdmi以及其他类型的通信协议。尽管在图9的实施例中在该高层级示出,但是会理解,本发明的范围不限于该方面。

尽管为了易于说明在图9中没有示出,但是在一些实施例中,soc900可以包括如上文参考图1a-1b所述的压缩加速器120。此外,在一些实施例中,soc900可以实现如上文参考图1a-1c和2a-2b所述的组件和/或功能的一些或全部。

现在参考图10,所示为代表性soc的框图。在所示实施例中,soc1000可以是针对低功率操作所配置的多核soc,该多核soc待优化以便结合进智能电话或诸如平板计算机或其他便携式计算设备之类的其他低功率设备中。作为示例,可使用诸如较高功率核和/或低功率核(例如,乱序核和有序核)的组合之类的非对称核或不同类型核来实现soc1000。在不同的实施例中,这些核可以基于架构tm核设计或arm架构设计。在另一些实施例中,可在给定的soc中实现英特尔核和arm核的混合。

如图10中所示,soc1000包括具有多个第一核10120–10123的第一核域1010。在示例中,这些核可以是诸如有序核之类的低功率核。在一个实施例中,可将这些第一核实现为armcortexa53核。这些核转而耦合到核域1010的高速缓存存储器1015。此外,soc1000包括第二核域1020。在图10的示图中,第二核域1020具有多个第二核10220–10223。在示例中,这些核可以是比第一核1012消耗更高功耗的核。在实施例中,这些第二核可以是可实现为armcortexa57核的乱序核。这些核转而耦合到核域1020的高速缓存存储器1025。注意,虽然图10中所示的示例在每个域中包括4个核,但是会理解,在其他示例中,更多或更少的核可存在于给定的域中。

进一步参考图10,也提供图形域1030,其可包括一个或多个图形处理单元(gpu),这些图形处理单元配置成用于独立地执行例如由核域1010和1020中的一个或多个核所提供的图形工作负荷。作为示例,除了提供图形和显示渲染操作之外,gpu域1030可以用于提供对各种屏幕尺寸的显示支持。

如所示,各种域耦合至一致性互连1040,在实施例中,该一致性互连可以是进而耦合至集成存储器控制器1050的高速缓存一致性互连结构。一致性互连1040可包括共享高速缓存存储器,诸如,l3高速缓存等一些示例。在实施例中,存储器控制器1050可以是用于提供与芯片外存储器进行的通信的多个通道(诸如,dram的多个通道(在图10中为了易于说明,没有示出))的直接存储器控制器。

在不同的示例中,核域的数量可以变化。例如,对于适于结合进移动计算设备的低功率soc,可以存在诸如图10中所示的有限数量的核域。更进一步地,在此类低功率soc中,包括较高功率核的核域1020可具有较少数量的此类核。例如,在一个实现中,可提供两个核1022以允许以降低的功耗等级进行的操作。此外,也可将不同的核域耦合到中断控制器以启用在不同域之间的工作负荷的动态交换。

在另一些实施例中,可以存在更大量的核域以及附加可选的ip逻辑,如此,可按比例将soc放大到更高的性能(和功率)等级,以便结合进诸如台式机、服务器、高性能计算系统、基站等的其他计算设备中。作为一个此类示例,可提供各自具有给定数量的乱序核的4个核域。更进一步地,除了可选的gpu支持(作为示例,其可采取gpgpu的形式)之外,还可提供用于提供对特定功能(例如,web服务、网络处理、交换等)的优化的硬件支持的一个或多个加速器。此外,可以存在用于将此类加速器耦合到多个芯片外组件的输入/输出接口。

尽管为了易于说明在图10中没有示出,但是在一些实施例中,soc1000可以包括如上文参考图1a-1b所述的压缩加速器120。此外,在一些实施例中,soc1000可以实现如上文参考图1a-1c和2a-2b所述的组件和/或功能的一些或全部。

现在参考图11,所示为另一示例soc的框图。在图11的实施例中,soc1100可包括用于允许多媒体应用、通信和其他功能的高性能的各种电路。由此,soc1100适于结合进多种便携式和其他设备,诸如,智能电话、平板计算机、智能电视等。在所示示例中,soc1100包括中央处理器单元(cpu)域1110。在实施例中,多个单独的处理器核可存在于cpu域1110中。作为一个示例,cpu域1110可以是具有4个多线程核的四核处理器。此类处理器可以是同构或异构处理器,例如,低功率和高功率处理器核的混合。

进而,提供gpu域1120以在一个或多个gpu中执行高级图形处理,从而处理图形并计算api。dsp单元1130可提供一个或多个低功率dsp,这些低功率dsp除了处理可在多媒体指令的执行期间发生的高级计算之外,还处理诸如音乐回放、音频/视频等的低功率多媒体应用。通信单元1140转而可包括用于经由各种无线协议提供连接性的各种组件,各种无线协议诸如蜂窝通信(包括3g/4glte)、诸如蓝牙tm之类的无线局域技术、ieee802.11等。

更进一步地,可使用多媒体处理器1150来执行对高清晰度视频和音频内容的捕捉和回放,包括对用户姿势的处理。传感器单元1160可包括多个传感器和/或用于对接到存在于给定平台中的各种芯片外传感器的传感器控制器。可向图像信号处理器1170提供一个或多个分开的isp,其用于参照从平台的一个或多个相机(包括静止相机和视频相机)捕捉到的内容来执行图像处理。

显示处理器1180可提供对向给定像素密度的高清晰度显示器的连接的支持,包括无线地传递内容以在此类显示器上回放的能力。更进一步地,位置单元1190可包括具有对多个gps星座图的支持的gps接收机,以便向应用提供使用此类gps接收机所获取的高精度定位信息。会理解,虽然在图11的示例中以该特定的一组组件示出,但是许多变型和替代是可能的。

尽管为了易于说明在图11中没有示出,但是在一些实施例中,soc1100可以包括如上文参考图1a-1b所述的压缩加速器120。此外,在一些实施例中,soc1100可以实现如上文参考图1a-1c和2a-2b所述的组件和/或功能的一些或全部。

现在参考图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以执行平台级别功率管理。为此,pmic1215可以根据需要发出功率管理请求至应用处理器1210以进入某些低功率状态。此外,基于平台约束,pmic1215也可以控制系统1200的其他组件的功率级别。

为了实现传送与接收通信,可以在基带处理器1205与天线1290之间耦合各种电路。具体而言,可以存在射频(rf)收发机1270与无线局域网(wlan)收发机1275。一般而言,可以根据诸如3g或4g无线通信协议(诸如根据码分多址(cdma)、全球移动通信系统(gsm)、长期演进(lte)或其他协议)的给定的无线通信协议,使用rf收发机1270接收并传送无线数据和呼叫。此外,可以存在gps传感器1280。也可以提供诸如无线电信号(例如,am/fm与其他信号)的接收与传送的其他无线通信。此外,经由wlan收发机1275,也能够实现诸如根据蓝牙tm标准或ieee802.11标准(诸如,ieee802.11a/b/g/n)的本地无线通信。

尽管为了易于说明在图12中没有示出,但是在一些实施例中,系统1200可以包括如上文参考图1a-1b所述的压缩加速器120。此外,在一些实施例中,系统1200可以实现如上文参考图1a-1c和2a-2b所述的组件和/或功能的一些或全部。

现在参考图13,所示为可与多个实施例一起使用的另一示例系统的框图。在图13的示图中,系统1300可以是诸如平板计算机、2:1平板、平板手机或其他转换式或独立式平板系统之类的移动低功率系统。如所示出的那样,存在soc1310,并且soc1310可配置成作为设备的应用处理器进行操作。

各种设备可耦合至soc1310。在所示示图中,存储器子系统包括耦合至soc1310的闪存1340和dram1345。此外,触摸面板1320耦合至soc1310以提供显示能力和经由触摸的用户输入,包括在触摸面板1320的显示器上提供虚拟键盘。为了提供有线网络连接性,soc1310耦合至以太网接口1330。外围中枢1325耦合至soc1310以启用与各种外围设备的对接,诸如,可通过各种端口或其他连接器中的任何一个而被耦合到系统1300。

除了soc1310中的内部功率管理电路和功能之外,pmic1380也耦合至soc1310以提供基于平台的功率管理,例如,基于该系统是由电池1390供电还是经由交流适配器1395由交流电供电。除了该基于功率源的功率管理之外,pmic1380还可执行基于环境和使用条件的平台功率管理活动。更进一步地,pmic1380可将控制和状态信息传递给soc1310以引起soc1310中的各种功率管理动作。

仍然参考图13,为了提供无线能力,将wlan单元1350耦合至soc1310,并转而耦合至天线1355。在各种实现中,wlan单元1350可根据一个或多个无线协议(包括ieee802.11协议、蓝牙tm协议或任何其他无线协议)提供通信。

如进一步所示出的那样,多个传感器1360可耦合至soc1310。这些传感器可包括各种加速度计、环境和其他传感器,包括用户姿势传感器。最后,将音频编解码器1365耦合至soc1310以向音频输出设备1370提供接口。当然会理解,虽然以图13中的该特定实现示出,但是许多变型和替代是可能的。

尽管为了易于说明在图13中没有示出,但是在一些实施例中,系统1300可以包括如上文参考图1a-1b所述的压缩加速器120。此外,在一些实施例中,系统1300可以实现如上文参考图1a-1c和2a-2b所述的组件和/或功能的一些或全部。

现在参考图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可以经由另一互连(在实施例中,可以是i2c互连)耦合到处理器1410。如图14中进一步所示,除触摸屏1425之外,经由触摸的用户输入也可以经由触板1430进行,触板1430可以配置在机架内,并且还可以耦合到与触摸屏1425相同的i2c互连。

出于感知计算和其他目的,各种传感器可以存在于系统内,并且能以不同的方式耦合到处理器1410。某些惯性传感器和环境传感器可以通过传感器中枢1440(例如,经由i2c互连)耦合到处理器1410。在图14示出的实施例中,这些传感器可以包括加速度计1441、环境光传感器(als)1442、罗盘1443以及陀螺仪1444。其他环境传感器可以包括一个或多个热传感器1446,在一些实施例中,这些热传感器1446经由系统管理总线(smbus)总线耦合到处理器1410。

图14中还可见,各种外围设备可以经由低引脚计数(lpc)互连耦合到处理器1410。在所示的实施例中,各种组件可以通过嵌入式控制器1435耦合。此类组件可包括键盘1436(例如,经由ps2接口耦合)、风扇1437以及热传感器1439。在一些实施例中,触板1430还可以经由ps2接口耦合到ec1435。另外,安全处理器(诸如,符合可信计算组(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,可以实现符合给定的ieee802.11标准的wi-fitm通信,而经由蓝牙单元1452,可以进行利用蓝牙协议的短距离通信。这些单元可以经由例如usb链路或通用异步接收发送器(uart)链路来与处理器1410通信。或者,这些单元可以经由根据pcietm协议或另一个此类协议(诸如,串行数据输入/输出(sdio)标准)的互连来耦合到处理器1410。

另外,无线广域通信(例如,根据蜂窝式或其他无线广域协议)可以经由wwan单元1456进行,该wwan单元1456进而可以耦合到订户身份模块(sim)1457。另外,为了允许接收并使用位置信息,还可以存在gps模块1455。注意,在图14中示出的实施例中,wwan单元1456和诸如相机模块1454的集成捕捉设备可以经由给定的usb协议(诸如usb2.0或3.0链路)或uart或i2c协议进行通信。

集成相机模块1454可以被纳入到盖子中。为了提供音频输入和输出,可以经由数字信号处理器(dsp)1460来实现音频处理器,dsp1460可以经由高清晰度音频(hda)链路来耦合到处理器1410。类似地,dsp1460可以与集成的编码器/解码器(编解码器)和放大器1462进行通信,集成的编解码器和放大器1462进而可以耦合到可以在机架内实现的输出扬声器1463。类似地,放大器和编解码器1462可以耦合到话筒1465以从话筒1465接收音频输入,在实施例中,话筒1465可以经由双阵列话筒(诸如数字话筒阵列)被实现,以提供高质量音频输入来实现对系统内的各种操作的语音激活的控制。另外注意,可以将音频输出从放大器/编解码器1462提供到头戴式耳机插孔1464。虽然在图14的实施例中利用这些特定组件示出,但应理解本发明的范围不限于此方面。

尽管为了易于说明在图14中没有示出,但是在一些实施例中,系统1400可以包括如上文参考图1a-1b所述的压缩加速器120。此外,在一些实施例中,系统1400可以实现如上文参考图1a-1c和2a-2b所述的组件和/或功能的一些或全部。

实施例可在许多不同的系统类型中实现。现在参考图15,所示为根据本发明的实施例的系统的框图。如图15所示,多处理器系统1500是点对点互连系统,且包括经由点对点互连1550耦合的第一处理器1570和第二处理器1580。如图15所示,处理器1570和1580中的每一个可以是包括第一和第二处理器核(即处理器核1574a和1574b以及处理器核1584a和1584b)的多核处理器,尽管这些处理器中可能存在更多核。处理器中的每一个可以包括pcu或其他功率管理逻辑以执行本文所述的基于处理器的功率管理。

仍参考图15,第一处理器1570还包括存储器控制器中枢(mch)1572和点对点(p-p)接口1576和1578。类似地,第二处理器1580包括mch1582和p-p接口1586与1588。如图15所示,mch1572和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/o1524可以被耦合到第二总线1520。可将多个实施例合并到其他类型的系统中,包括诸如智能蜂窝电话、平板计算机、上网本、超极本tm等之类的移动设备。

尽管为了易于说明在图15中没有示出,但是在一些实施例中,系统1500可以包括如上文参考图1a-1b所述的压缩加速器120。此外,在一些实施例中,系统1500可以实现如上文参考图1a-1c和2a-2b所述的组件和/或功能的一些或全部。

实施例可以实现在代码中,并且可以存储在非暂态存储介质中,该非暂态存储介质具有存储于其上的指令,该指令可以被用来对系统编程以执行指令。存储介质可以包括但不限于,任何类型的盘,包括软盘、光盘、固态驱动器(ssd)、紧致盘只读存储器(cd-rom)、紧致盘可重写(cd-rw)以及磁光盘;半导体器件,诸如,只读存储器(rom)、诸如动态随机存取存储器(dram)与静态随机存取存储器(sram)的随机存取存储器(ram)、可擦除可编程只读存储器(eprom)、闪存、电可擦除可编程只读存储器(eeprom);磁卡或光卡;或适用于存储电子指令的任何其他类型的介质。

以下句子和/或示例涉及进一步的实施例。

在一个示例中,用于数据压缩的处理器包括:多个处理核;以及压缩加速器,用于压缩包括第一数据块和第二数据块的输入流。压缩加速器包括:第一压缩引擎,用于压缩第一数据块;以及第二压缩引擎,用于:使用第一数据块的子部分来更新第二压缩引擎的状态数据,以及在使用第一数据块的子部分来更新第二压缩引擎的状态数据之后,使用第二压缩引擎的更新的状态数据来压缩第二数据块。

在示例中,第二压缩引擎不对第一数据块的子部分执行匹配操作。

在示例中,第一压缩引擎和第二压缩引擎用于并行地执行。

在示例中,第二块在输入流中直接地跟随第一块,并且第一数据块的子部分包括第一数据块的末尾部分。

在示例中,第二压缩引擎用于接收包括第二数据块的开始位置、第二数据块的尺寸和等于第一数据块的子部分的尺寸的偏移的参数。

在示例中,为了压缩第一数据块,第一压缩引擎用于使用第一数据块的全部来更新第一压缩引擎的状态数据,并且对第一数据块执行匹配操作。

在示例中,为了压缩第二数据块,第二压缩引擎用于使用第二数据块的全部来更新第二压缩引擎的状态数据,并且对第二数据块的全部执行匹配操作。

在示例中,状态数据包括:用于存储输入流的最近部分的滑动窗口的历史缓冲器,以及用于将到历史缓冲器中的指针存储为散列值的散列表。

在一个示例中,用于数据压缩的方法包括:由压缩加速器接收第一数据块的子部分和第二数据块;由压缩加速器使用第一数据块的子部分来更新状态数据;以及在使用第一数据块的子部分来更新状态数据之后,由压缩加速器使用状态数据来压缩第二数据块的全部。

在示例中,压缩加速器不对与第二数据块一起接收的第一数据块的子部分执行匹配操作。

在示例中,压缩第二数据块的全部的步骤包括:使用第二数据块的全部来更新状态数据;以及对第二数据块的全部执行匹配操作。

在示例中,方法进一步包括:由压缩加速器接收第一数据块的全部;使用第一数据块的全部来更新状态数据;以及对第一数据块的全部执行匹配操作。

在示例中,状态数据包括:用于存储输入流的最近部分的滑动窗口的历史缓冲器,以及用于将到历史缓冲器中的指针存储为散列值的散列表。

在示例中,第二块在输入流中直接地跟随第一块,并且第一数据块的子部分包括第一数据块的末尾部分。

在示例中,机器可读介质具有存储于其上的数据,数据如果被至少一个机器使用,使该至少一个机器制造至少一个集成电路以执行根据上述示例中的任一项的方法。

在示例中,用于处理指令的装置配置为执行上述示例中的任一项的方法。

在一个示例中,用于数据压缩的压缩加速器包括:第一压缩引擎,用于压缩第一数据块;以及第二压缩引擎,用于:使用第一数据块的子部分来更新第二压缩引擎的状态数据;以及使用更新的状态数据来压缩第二数据块,第一压缩引擎和第二压缩引擎用于并行地执行。

在示例中,第二压缩引擎不对第一数据块的子部分执行匹配操作。

在示例中,第一压缩引擎用于接收包括第一数据块的开始位置、第一数据块的尺寸和偏移值零的第一组参数;以及第二压缩引擎用于接收包括第二数据块的开始位置、第二数据块的尺寸和等于第一数据块的子部分的尺寸的偏移值的第二组参数。

在示例中,为了压缩第一数据块,第一压缩引擎用于使用第一数据块的全部来更新第一压缩引擎的状态数据,以及在使用第一数据块的全部来更新第一压缩引擎的状态数据之后,对第一数据块执行匹配操作。

在示例中,为了压缩第二数据块,第二压缩引擎用于使用第二数据块的全部来更新第二压缩引擎的状态数据,以及在使用第二数据块的全部来更新第二压缩引擎的状态数据之后,对第二数据块的全部执行匹配操作。

在示例中,状态数据包括:用于存储输入流的最近部分的滑动窗口的历史缓冲器,以及用于将到历史缓冲器中的指针存储为散列值的散列表。

应理解,上述示例的各种组合是可能的。

实施例可以被用于许多不同类型的系统中。例如,在一个实施例中,可以将通信设备布置为用于执行本文所述的各种方法与技术。当然,本发明的范围不限于通信设备,相反,其他实施例可以涉及用于处理指令的其他类型的装置,或一个或多个机器可读介质,该机器可读介质包括指令,响应于在计算设备上执行这些指令,这些指令使该设备执行本文所述的方法与技术中的一个或多个。

在本说明书通篇中对“一个实施例”或“一实施例”的引用意味着结合该实施例描述的特定特征、结构或特性包括在本发明包含的至少一个实现中。因此,短语“一个实施例”或“在一实施例中”的出现不一定指代同一实施例。此外,特定特征、结构或特性可按照与所说明的特定实施例不同的其他适当形式来创立,而且所有此类形式可涵盖在本申请的权利要求中。

虽然已参照有限数量的实施例描述了本发明,但是本领域技术人员将从中领会很多修改和变型。所附权利要求旨在涵盖落入本发明的真实精神与范围的所有此类修改与变型。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1