用于大数据集的复杂过滤器硬件加速器
文献发布时间:2024-04-18 19:59:31
技术领域
本发明的领域总体上涉及信息处理,并且更具体但非限制性地涉及复杂过滤。
背景技术
信息处理系统越来越多地用于分析,包括查询和过滤数据库以提供作出决策的基础。
附图说明
在所附附图中以示例方式而非限制方式来图示本发明,在附图中,类似的附图标记指示类似的要素,并且其中:
图1是示出根据本发明实施例的过滤器硬件的操作方法的图示;
图2是示出根据本发明实施例的过滤器硬件的操作方法的图示;
图3A是根据本发明实施例的过滤器硬件的框图;
图3B是示出根据本发明实施例的过滤器硬件的操作方法的图示;
图4A是图示根据本发明的实施例的示例性有序管线和示例性的寄存器重命名的乱序发出/执行管线两者的框图;
图4B是图示根据本发明的实施例的要被包括在处理器中的体系结构核心的示例性实施例和示例性的寄存器重命名的乱序发出/执行体系结构核心两者的框图;
图5是根据本发明的实施例的可具有多于一个的核心、可具有集成存储器控制器、并且可具有集成图形的处理器的框图;
图6是根据本发明的一个实施例的系统的框图;
图7是根据本发明的实施例的第一更具体的示例性系统的框图;
图8是根据本发明的实施例的第二更具体的示例性系统的框图;以及
图9是根据本发明的实施例的SoC的框图。
具体实施方式
在以下描述中,可阐述诸如组件和系统配置之类的众多特定细节以提供对本发明的更透彻理解。然而,本领域技术人员将领会,可在没有此类特定细节的情况下实施本发明。另外,未详细示出一些公知的结构、电路和其他特征,以避免不必要地使本发明模糊。
对“一个实施例”、“实施例”、“示例实施例”、“各实施例”等的引用指示所描述的本发明的(一个或多个)实施例可包括特定的特征、结构或特性,但是多于一个实施例可包括该特定的特征、结构或特性,并且并非每一个实施例都一定包括该特定的特征、结构或特性。一些实施例可具有针对其他实施例所描述的特征中的一些或全部,或完全不具有这些特征。而且,此类短语不一定是指同一实施例。当结合实施例来描述特定的特征、结构或特性时,认为结合无论是否明确地描述的其他实施例来实施此类特征、结构或特性在本领域技术人员的知识范围之内。
如在本描述和权利要求书中所使用,除非以其他方式指定,否则对用于描述要素的序数形容词“第一”、“第二”、“第三”等的使用仅仅指示正在引用要素的特定实例或类似要素的不同实例,并且不旨在暗示如此描述的这些要素在时间上、空间上、按等级或按任何其他方式必须按照特定的顺序。
此外,术语“比特”、“标志”、“字段”、“条目”、“指示符”等可用于描述无论是以硬件还是以软件实现的、任何类型或内容的寄存器、表、数据库或其他数据结构中的存储位置,但是这些术语不旨在将本发明的实施例限于任何特定类型的存储位置或任何特定存储位置内的任何特定数量的比特或其他元素。术语“清除”可用于指示将逻辑值0存储在存储位置中,或以其他方式使逻辑值0存储在存储位置中;并且术语“置位”可用于指示将逻辑值1、全1或某个其他指定值存储在存储位置中,或以其他方式使逻辑值1、全1或某个其他指定值存储在存储位置中;然而,这些术语不旨在将本发明的实施例限于任何特定的逻辑约定,因为任何逻辑约定都可在本发明的实施例中使用。
另外,如在本发明的实施例的描述中所使用,在多个项之间的“/”字符可意指实施例可包括第一项和/或第二项(和/或任何其他附加项),或者可使用、利用和/或根据第一项和/或第二项(和/或任何其他附加项)来实现。
如在背景技术部分中提到的,信息处理系统越来越多地用于分析,包括查询和过滤数据库以提供作出决策的基础。诸如实时分析之类的分析可能会受益于诸如使用存储器内数据库(in-memory database,IMDB)之类的加速查询、过滤和/或决策的技术。此外,数据库的大小可能随着数据收集和/或分析的使用的增长而增加。因此,可能期望使用本发明的实施例来对大数据集执行复杂的过滤和/或其他操作。与根据现有方法相比,实施例可以使这些操作更快地执行和/或以更低的总系统成本执行,诸如增加存储器大小、使用为在通用处理器上执行这些操作而编写的软件,和/或者使用限于在固定大小的集合上运行的加速器。
例如,根据实施例,可以对面向列的数据库(即,结构化为“列存储”)执行操作。该操作可以是查询(例如,结构化查询语言即“SQL(structured query language)”操作),诸如集合-成员关系或其他SQL或复杂过滤器。该操作可以对数千兆字节数量级的大量数据(在整个表上或表的许多列上)执行。该操作可以处理列并为每个元素(或行)生成表明属于集合的元素的谓词比特,并且可以产生相对于表大小的少量匹配元素。
在该示例或其他示例中,列可以被视为任何比特宽度的无符号整数数组——例如,美国的州的列可以表示为6比特元素的数组(字典编码的高效表示,因为州集合的基数相对较小)。复杂查询的示例是当用户对仅对某些州(例如,新英格兰即“NE(New England)”州)进行过滤的表中的数据感兴趣时。该表在数据库中可能不具有指示州是否是NE州的属性字段/列,因此将被动态确定。如果州的字典编码/排序是按字母顺序的(最常见的情况),则这样的NE州不是连续的数字列表,而是看似乱序的元素列表,其中间隙大小不同(例如,新罕布什尔州(New Hampshire)、罗德岛州(Rhode Island)、佛蒙特州(Vermont)),这阻止了针对等于一个元素或在范围内(最小元素与最大元素之间)使用简单扫描。相反,可以使用复杂的过滤操作来处置查询,该操作包括构建将每个字典元素映射到新的1比特条目的字典表(例如,如果对应的州是NE州,则设置为“1”,如果对应的州不是NE州,则设置为“0”)。复杂的过滤器可能会使用该字典表来处理大量元素的列,检查每个元素是否属于定义集并针对每个元素生成“1”或“0”比特输出。
一般而言,集合-成员关系操作涉及读取列的每个w比特元素,使用列中的每个w比特元素索引到查找(例如,字典)表中以找到1比特条目,以及输出每个1比特条目作为每个元素的谓词比特。这是可以根据实施例执行的各种操作中的一种。另一个这样的操作是找到-唯一操作,该操作(例如,通过找到列中的所有唯一值)填充集合而不是检查元素值是否在集合中。
实现复杂过滤器以执行此类操作中的一项或多项的挑战可包括:元素的任意比特宽度(例如,从1比特到32比特)可能会导致难以找到良好的软件实现;由于要读取到核心中的数据量以及需要使用任何比特宽度的元素来查找1比特条目表,因此使用通用处理器核心来处理过滤器可能不高效;以及使用本地存储器通过硬件加速器执行这些操作可能会限制元素和/或字典集大小(例如,15比特元素大小、32K字典集大小)或导致硬件成本与集合大小成比例增长。实施例可以解决这些和其他挑战,以提供比现有方法更大的可扩展性、更快的性能和更少的成本(例如,更小的面积)。
实施例可以包括向现有硬件加速器(例如,英特尔分析加速器或IAX)添加扩展。在没有扩展的情况下使用现有硬件加速器执行操作(例如,集合-成员关系)可能会将操作限制为固定的字典集大小(2
在实施例中,在应用程序编程接口(application programming interface,API)级别,可以通过对硬件加速器的调用来执行集合-成员关系功能。该调用可以提供指向列数据的指针,并且还可以根据元素的数量和元素的比特宽度来指定列的大小。该调用还可以提供指向比特向量或字典集的指针,该指针用于指示哪些元素值对应于匹配。在实施例中,比特向量的第i比特(i=0至2
图1是图示出方法100的图示,方法100是根据实施例的过滤器硬件加速器的操作方法的一部分的示例。
在方法100的框110中,定义称为偏移的新字段(例如,32比特)。当元素大小大于固定宽度时使用偏移字段。例如,对于17比特的元素大小,将集合视为四个较小的同等大小的子集S1、S2、S3、S4,每个子集有2
w=17,src1=column(列),src2=S1,offset(偏移)=0b00,dest(目的地)=bv1
w=17,src1=column,src2=S2,offset=0b01,dest=bv2
w=17,src1=column,src2=S3,offset=0b10,dest=bv3
w=17,src1=column,src2=S4,offset=0b11,dest=bv4
在框120中,为了检查元素e是否属于集合,将e分解为e_hi和e_lo,使得e_lo是固定宽度(例如,15比特)。
在框122中,确定e_hi是否与偏移匹配。如果否,则在124中,元素e不属于该集合(例如,将谓词比特设置为“0”)。如果是,则方法100继续到框130。
在框130中,e_lo用于查找对应子集的集合定义(例如,在本地存储器中的集合表中)。在框132中,由查找返回的比特被用作元素e的匹配的指示(例如,将谓词比特设置为返回比特的值)。
在框140中,当每个偏移的所有结果都已知时,最终答案是部分结果的逐比特或(“OR”)。例如,上述查询的最终答案由比特向量给出:
bv=bv1|bv2|bv3|bv4
因此,作业可以被发送到单个现有加速器(例如,IAX)内部或跨多个加速器的并行引擎,从而在与(例如,具有2
此外,可以用并行和顺序执行的组合来支持更大的字典集。例如,对于具有2
并行执行偏移为0-31的32个作业
在上一批完成后并行执行偏移为32-63的32个作业
在这样的实施例中,可以通过在提交该批作业之前(例如,用软件)将列数据带入缓存(例如,最后一级缓存,即LLC)来优化存储器带宽使用,因为它们都读取相同的列数据源。在列被Deflate压缩的实施例中,可以运行第一作业以将列解压缩到LLC中,然后可以运行一批并行过滤器作业以读取未压缩的列。
在实施例中,等效但稍微更通用的方法可以用于解决大型集合-成员关系/找到-唯一问题。在概念上,这种方法将扫描操作与集合-成员、找到-唯一或基于元素扫描有条件地执行的其他操作融合在一起。该方法可以提供更多的灵活性和/或可扩展性。图2中示出了方法200(这样的实施例的一部分的示例)。
在方法200的框210中,添加新的调用/指令/操作码/模式以指定要执行扫描操作和集合-成员关系/找到-唯一操作的组合。换句话说,仅处理位于由参数定义的范围内的(例如,由调用/指令指定的)元素。
在框212中,将“有效比特”添加到要查找的每个元素。
在框214中,扫描操作针对各种条件检查每个元素,各种条件诸如,元素值与指定值匹配(elem==val1)或者元素值在两个指定值之间(val1<=elem<=val2)。扫描可以由算术逻辑单元(arithmetic-logic unit,ALU)来执行,使得可以在不增加存储器大小的情况下处理高达ALU大小(例如,32比特)的元素大小。
在框220中,(对于每个元素)设置有效比特以指示该元素是否与扫描参数匹配(例如,在框222中,如果元素值与指定值匹配或者在指定范围内,则将有效比特设置为“1”,否则,在框224中,将有效比特设置为“0”)。
在框230中,(对于每个元素)检查有效比特以确定是否要执行两个组合操作中的第二操作。如果该元素有效(例如,有效比特是“1”),则在框232中进行集合-成员关系、找到-唯一或其他操作(例如,如上所述)。如果否(例如,有效比特为“0”),则将该元素视为该元素不在集合中(例如,如果第二操作是集合-成员关系查找,则标记为集合中不存在,如果第二操作是找到-唯一操作,则不用于设置集合-成员关系(set-mem)表中的对应比特(如下定义),等等)。
图3A是根据实施例的过滤器硬件300的框图。图3中示出的装置可以在逻辑门和/或任何其他类型的电路系统中实现,这些逻辑门和/或任何其他类型的电路系统的全部或部分可被集成到处理设备的电路系统或者计算机或其他信息处理系统中的任何其他装置中。例如,图3中所示的硬件中的任何或所有硬件可以以以下方式的任一者实现:图4B中的核心490、图5中的核心502A至502N、图5中的专用逻辑508、图6中的处理器610/615、图6中的协处理器645、图7和图8中的处理器770/780、图7中的协处理器738、图9中的应用处理器910、和/或图9中的协处理器920,其中每个如下所述。
如图3A所示,过滤器硬件300包括集合-成员关系定义单元310、输入数据预处理单元320、集合-成员关系查找请求生成器330和最终阶段单元340。在各种实施例中,过滤器硬件可以包括图3A中所示的框中的任何或所有框中的一者或多者。例如,在能够利用具有2
图3B是方法350的流程图,是根据实施例的过滤器硬件加速器的操作方法的一部分的示例,其可用于说明根据(诸如图3A中所示的)实施例的过滤器硬件的一个或多个单元、元件、块等的操作。图3B中的编号和箭头是为了便于描述,而不一定需要块和/或项的特定排序、定序或对应关系。例如,集合-成员关系查找请求生成器330可以基于单个输入数据流304向单个或任意数量的集合-成员关系定义单元310发出任意数量的集合-成员关系读取请求332。
如图3A中所示,集合-成员关系定义单元310可以包括外部存储器322和/或本地存储器324,用于定义集合的存储表或其他数据结构。例如,外部存储器312可以表示寄存器堆(register file,RF)或静态随机存取存储器(static random-access memory,SRAM)中的解压缩历史缓冲器,和/或本地存储器314可以表示专用于存储集合定义的触发器(flip-flop)。表或其他数据结构(为了方便起见,将被称为集合-成员关系表,但可以是比特向量或其他数据结构)存储与所应用的谓词匹配的成员集合(例如,定义集合)。例如,它可以是字典表,对于列数据的每一个可能的值(高达固定宽度,例如,15比特),都具有用于指示该值是否是定义集合的成员的定义比特;因此,对于15比特元素,集合-成员关系表中有2
在方法框360中,集合-成员关系定义表配置数据302被提供给集合-成员关系定义单元310以利用集合定义来配置/编程集合-成员关系定义单元。
在方法框370中,将输入数据流304馈送到过滤器硬件300中。输入数据预处理单元320可以包括列数据输入重新对齐逻辑,用于对输入数据流304执行变换。例如,在方法框372中,输入数据预处理单元320可以重新对齐输入数据,使得每个元素落入正确的通道,和/或,在方法框374中,输入数据预处理单元320可以预先添加零(即,例如,在高阶比特端用零填补)到每个元素以匹配通道宽度。
在方法框380中,集合-成员关系查找请求生成器330使用来自经对齐的输入数据流322的元素来访问集合-成员关系表。由于输入数据预处理单元320已经将每个元素对齐并用零填补到正确的通道,因此可以提取每个元素并将其用作地址以向集合-成员关系定义表310发出集合-成员关系读取请求332。
在方法框382中,使用来自集合-成员关系表读取请求的地址作为到集合-成员关系定义单元310中的集合-成员关系表的索引,以查找对应的定义比特。在方法框384中,执行查找。在方法框386中,集合-成员关系读取数据334(例如,指示对应于读取请求的元素是否是集合的成员的谓词比特)被提供给最终阶段单元340。
集合-成员关系读取数据334可以被提供为比特流,比特流可以基于特定大小(例如,16比特或更多比特的字大小)被有效地处理和存储。因此,在方法框390中,最终阶段单元340可以执行比特提取(例如,用比特提取器346)和/或比特紧缩(例如,用比特紧缩器344)。
在方法框392中,最终阶段单元340提供集合-成员关系输出数据306,集合-成员关系输出数据306可表示结果比特向量,诸如如上所述的“bv”,或如上所述的“bv1”、“bv2”、“bv3”、或“bv4”中的任何一者,并且根据实施例被进一步处理以提供如上所述的最终结果比特向量“bv”。
在实施例中,装置包括多个集合成员关系定义单元和集合查找请求生成器硬件。每个集合成员关系定义单元具有存储器,用于存储每个输入值的定义指示符。每个定义指示符用于指示对应的输入值是否对应于集合中的成员关系。每个输入值具有固定宽度(以比特为单位),该固定宽度小于每个集合成员的元素宽度(以比特为单位)。集合查找请求生成器硬件用于访问多个集合成员关系定义单元中的一个集合成员关系定义单元。要访问多个集合成员关系定义单元中的哪个集合成员关系定义单元要基于偏移值来确定。偏移值的偏移宽度(以比特为单位)等于元素宽度减去固定宽度。
任何此类实施例可以包括以下方面中的任一方面或其任何组合。集合查找请求生成器硬件可以用于生成对多个集合成员关系定义单元中的、地址等于对应输入值的一个集合成员关系定义单元的请求。请求可以是读取对应的定义指示符。请求可以是设置对应的定义指示符。该装置还可以包括输入数据处理硬件,用于对输入数据流执行变换以提供请求的地址。该变换可以包括将输入数据流的一部分与通道对齐。该变换可以包括将零预先添加到输入数据流的一部分。该装置还可以包括输出数据处理硬件,用于对来自多个集合成员关系定义单元中的至少一个集合成员关系定义单元的输出数据执行输出处理,其中输出数据包括请求的结果。输出处理可以包括比特提取。输出处理可以包括比特紧缩。
在实施例中,一种方法包括:配置多个集合成员关系定义单元,每个集合成员关系定义单元具有用于存储每个输入值的定义指示符的存储器,每个定义指示符用于指示对应的输入值是否对应于集合中的成员关系,其中每个输入值具有固定宽度(以比特为单位),该固定宽度小于每个集合成员的元素宽度(以比特为单位);以及访问多个集合成员关系定义单元中的一个集合成员关系定义单元,其中要访问多个集合成员关系定义单元中的哪个集合成员关系定义单元要基于偏移值来确定,其中偏移值将具有以比特为单位的偏移宽度,该偏移宽度等于元素宽度减去固定宽度。
任何此类实施例可以包括以下方面中的任一方面或其任何组合。访问可以包括生成对多个集合成员关系定义单元中的、地址等于对应输入值的一个集合成员关系定义单元的请求。请求可以是读取对应的定义指示符。请求可以是设置对应的定义指示符。该方法还可以包括:对输入数据流执行变换以提供请求的地址,其中该变换包括将输入数据流的一部分与通道对齐、以及将零预先添加到输入数据流的一部分中的至少一者。该方法还可以包括:对来自多个集合成员关系定义单元中的至少一个集合成员关系定义单元的输出数据执行输出处理,其中输出数据包括请求的结果,并且其中输出处理包括比特提取和比特紧缩中的至少一者。
在实施例中非瞬态机器可读介质存储指令,该指令在由机器执行时,使机器执行一种方法,该方法包括:配置多个集合成员关系定义单元,每个集合成员关系定义单元具有用于存储每个输入值的定义指示符的存储器,每个定义指示符用于指示对应的输入值是否对应于集合中的成员关系,其中每个输入值具有固定宽度(以比特为单位),该固定宽度小于每个集合成员的元素宽度(以比特为单位);以及访问多个集合成员关系定义单元中的一个集合成员关系定义单元,其中要访问多个集合成员关系定义单元中的哪个集合成员关系定义单元要基于偏移值来确定,其中偏移值将具有以比特为单位的偏移宽度,该偏移宽度等于元素宽度减去固定宽度。
任何此类实施例可以包括以下方面中的任一方面或其任何组合。访问可以包括生成对多个集合成员关系定义单元中的、地址等于对应输入值的一个集合成员关系定义单元的请求。请求可以是读取对应的定义指示符。请求可以是设置对应的定义指示符。
在实施例中,一种设备可包括用于执行本文中公开的任何功能的装置。在实施例中,一种装置可以包括数据存储设备,该数据存储设备存储代码,该代码当由硬件处理器执行时使该硬件处理器执行本文中公开的任何方法。在实施例中,一种装置可如在具体实施方式中所描述。在实施例中,一种方法可如在具体实施方式中所描述。在实施例中,一种非瞬态机器可读介质可以存储代码,该代码在由机器执行时使该机器执行包括本文中公开的任何方法的方法。实施例可以包括本说明书中描述的任何细节、特征等或细节、特征等的组合。
示例性核心体系结构、处理器和计算机体系结构
以下附图详述了用于实现上文的实施例的示例性体系结构和系统。
处理器核心能以不同方式、出于不同的目的、在不同的处理器中实现。例如,此类核心的实现可以包括:1)旨在用于通用计算的通用有序核心;2)旨在用于通用计算的高性能通用乱序核心;3)旨在主要用于图形和/或科学(吞吐量)计算的专用核心。不同处理器的实现可包括:1)CPU,其包括旨在用于通用计算的一个或多个通用有序核心和/或旨在用于通用计算的一个或多个通用乱序核心;以及2)协处理器,其包括旨在主要用于图形和/或科学(吞吐量)的一个或多个专用核心。此类不同的处理器导致不同的计算机系统体系结构,这些计算机系统体系结构可包括:1)在与CPU分开的芯片上的协处理器;2)在与CPU相同的封装中但在分开的管芯上的协处理器;3)与CPU在相同管芯上的协处理器(在该情况下,此类协处理器有时被称为专用逻辑或被称为专用核心,该专用逻辑诸如,集成图形和/或科学(吞吐量)逻辑);以及4)片上系统,其可以将所描述的CPU(有时被称为(一个或多个)应用核心或(一个或多个)应用处理器)、以上描述的协处理器和附加功能包括在同一管芯上。接着描述示例性核心体系结构,随后描述示例性处理器和计算机体系结构。
示例性核心体系结构
有序和乱序核心框图
图4A是图示根据本发明的各实施例的示例性有序管线和示例性的寄存器重命名的乱序发出/执行管线的框图。图4B是示出根据本发明的各实施例的要包括在处理器中的有序体系结构核心的示例性实施例和示例性的寄存器重命名的乱序发出/执行体系结构核心的框图。图4A-图4B中的实线框图示有序管线和有序核心,而虚线框的可选增加图示寄存器重命名的、乱序发出/执行管线和核心。考虑到有序方面是乱序方面的子集,将描述乱序方面。
在图4A中,处理器管线400包括取得(fetch)级402、长度解码阶段404、解码阶段406、分配阶段408、重命名阶段410、调度(也被称为调遣或发出)级412、寄存器读取/存储器读取阶段414、执行阶段416、写回/存储器写入阶段418、异常处置阶段422和提交阶段424。
图4B示出处理器核心490,该处理器核心490包括前端单元430,该前端单元430耦合到执行引擎单元450,并且前端单元430和执行引擎单元450两者都耦合到存储器单元470。核心490可以是精简指令集计算(reduced instruciton set computing,RISC)核心、复杂指令集计算(complex instruction set computing,CISC)核心、超长指令字(verylong instruction word,VLIW)核心、或混合或替代性核心类型。作为又一选项,核心490可以是专用核心,诸如例如,网络或通信核心、压缩引擎、协处理器核心、通用计算图形处理单元(general purpose computing graphics processing unit,GPGPU)核心、图形核心,等等。
前端单元430包括分支预测单元432,该分支预测单元432耦合到指令缓存单元434,该指令缓存单元434耦合到指令转译后备缓冲器(translation loodaside buffer,TLB)436,该指令转译后备缓冲器436耦合到指令取得单元438,该指令取得单元438耦合到解码单元440。解码单元440(或解码器)可对指令解码,并且生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码单元440可使用各种不同的机制来实现。合适机制的示例包括但不限于,查找表、硬件实现、可编程逻辑阵列(programmable logicarray,PLA)、微代码只读存储器(read only memory,ROM)等。在一个实施例中,核心490包括存储用于某些宏指令的微代码的微代码ROM或其他介质(例如,在解码单元440中,或以其他方式在前端单元430内)。解码单元440耦合到执行引擎单元450中的重命名/分配器单元452。
执行引擎单元450包括重命名/分配器单元452,该重命名/分配器单元452耦合到引退单元454和一个或多个调度器单元的集合456。(一个或多个)调度器单元456表示任何数量的不同调度器,包括预留站、中央指令窗等。(一个或多个)调度器单元456耦合到(一个或多个)物理寄存器堆单元458。(一个或多个)物理寄存器堆单元458中的每一个物理寄存器堆单元表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一种或多种不同的数据类型,诸如,标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点,状态(例如,作为要执行的下一个指令的地址的指令指针)等等。在一个实施例中,(一个或多个)物理寄存器堆单元458包括向量寄存器单元、写入掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供体系结构向量寄存器、向量掩码寄存器和通用寄存器。(一个或多个)物理寄存器堆单元458由引退单元454重叠,以图示可实现寄存器重命名和乱序执行的各种方式(例如,使用(一个或多个)重排序缓冲器和(一个或多个)引退寄存器堆;使用(一个或多个)未来的堆、(一个或多个)历史缓冲器、(一个或多个)引退寄存器堆;使用寄存器图谱和寄存器池,等等)。引退单元454和(一个或多个)物理寄存器堆单元458耦合到(一个或多个)执行集群460。(一个或多个)执行集群460包括一个或多个执行单元的集合462以及一个或多个存储器访问单元的集合464。执行单元462可执行各种操作(例如,移位、加法、减法、乘法)并可对各种数据类型(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行。尽管一些实施例可以包括专用于特定功能或功能集合的多个执行单元,但是其他实施例可包括仅一个执行单元或全都执行所有功能的多个执行单元。(一个或多个)调度器单元456、(一个或多个)物理寄存器堆单元458和(一个或多个)执行集群460示出为可能有多个,因为某些实施例为某些类型的数据/操作创建分开的管线(例如,标量整数管线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点管线,和/或各自具有其自身的调度器单元、(一个或多个)物理寄存器堆单元和/或执行集群的存储器访问管线——并且在分开的存储器访问管线的情况下,实现其中仅该管线的执行集群具有(一个或多个)存储器访问单元464的某些实施例)。还应当理解,在使用分开的管线的情况下,这些管线中的一个或多个可以是乱序发出/执行,并且其余管线可以是有序的。
存储器访问单元的集合464耦合到存储器单元470,该存储器单元470包括数据TLB单元472,该数据TLB单元472耦合到数据缓存单元474,该数据缓存单元474耦合到第二级(L2)缓存单元476。在一个示例性实施例中,存储器访问单元464可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合到存储器单元470中的数据TLB单元472。指令缓存单元434还耦合到存储器单元470中的第二级(L2)缓存单元476。L2缓存单元476耦合到一个或多个其他级别的缓存,并最终耦合到主存储器。
作为示例,示例性寄存器重命名的乱序发出/执行核心体系结构可如下所述地实现管线400:1)指令取得438执行取得阶段402和长度解码阶段404;2)解码单元440执行解码阶段406;3)重命名/分配器单元452执行分配阶段408和重命名阶段410;4)(一个或多个)调度器单元456执行调度阶段412;5)(一个或多个)物理寄存器堆单元458和存储器单元470执行寄存器读取/存储器读取阶段414;执行集群460执行执行阶段416;6)存储器单元470和(一个或多个)物理寄存器堆单元458执行写回/存储器写入阶段418;7)各单元可牵涉到异常处置阶段422;以及8)引退单元454和(一个或多个)物理寄存器堆单元458执行提交阶段424。
核心490可支持一个或多个指令集(例如,x86指令集(具有已与较新版本一起添加的一些扩展);加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集;加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集(具有诸如NEON的可选的附加扩展)),其中包括本文中描述的(一个或多个)指令。在一个实施例中,核心490包括用于支持紧缩数据指令集扩展(例如,AVX1、AVX2)的逻辑,由此允许使用紧缩数据来执行由许多多媒体应用使用的操作。
应当理解,核心可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,各种方式包括时分多线程化、同时多线程化(其中单个物理核心为物理核心正在同时多线程化的线程中的每一个线程提供逻辑核心)、或其组合(例如,时分取得和解码以及此后的诸如
尽管在乱序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序体系结构中使用寄存器重命名。尽管所图示的处理器的实施例还包括分开的指令和数据缓存单元434/474以及共享的L2缓存单元476,但是替代实施例可以具有用于指令和数据两者的单个内部缓存,诸如例如,第一级(L1)内部缓存或多个级别的内部缓存。在一些实施例中,该系统可包括内部缓存和在核心和/或处理器外部的外部缓存的组合。或者,所有缓存都可以在核心和/或处理器的外部。
图5是根据本发明的实施例的可具有多于一个的核心、可具有集成存储器控制器、以及可具有集成图形器件的处理器500的框图。图5中的实线框图示具有单个核心502A、系统代理510、一个或多个总线控制器单元的集合516的处理器500,而虚线框的可选增加图示具有多个核心502A-N、系统代理单元510中的一个或多个集成存储器控制器单元的集合514以及专用逻辑508的替代处理器500。
因此,处理器500的不同实现可包括:1)CPU,其中专用逻辑508是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核心),并且核心502A-N是一个或多个通用核心(例如,通用有序核心、通用乱序核心、这两者的组合);2)协处理器,其中核心502A-N是旨在主要用于图形和/或科学(吞吐量)的大量专用核心;以及3)协处理器,其中核心502A-N是大量通用有序核心。因此,处理器500可以是通用处理器、协处理器或专用处理器,诸如例如,网络或通信处理器、压缩引擎、图形处理器、GPGPU(general purpose graphics processingunit,通用图形处理单元)、高吞吐量的集成众核(many integrated core,MIC)协处理器(包括30个或更多核心)、嵌入式处理器,等等。该处理器可以被实现在一个或多个芯片上。处理器500可以是一个或多个基板的一部分,和/或可使用多种工艺技术(诸如例如,BiCMOS、CMOS、或NMOS)中的任何技术被实现在一个或多个基板上。
存储器层次体系包括核心内的一个或多个级别的缓存、一个或多个共享缓存单元的集合506、以及耦合到集成存储器控制器单元的集合514的外部存储器(未示出)。共享缓存单元的集合506可包括一个或多个中间级别的缓存,诸如,第二级(L2)、第三级(L3)、第四级(L4)或其他级别的缓存、最后一级缓存(last level cache,LLC)和/或以上各项的组合。虽然在一个实施例中,基于环的互连单元512将集成图形逻辑508(集成图形逻辑508是专用逻辑的示例,并且在本文中也称为专用逻辑)、共享缓存单元的集合506以及系统代理单元510/(一个或多个)集成存储器控制器单元514互连,但是替代实施例可使用任何数量的公知技术来互连此类单元。在一个实施例中,在一个或多个缓存单元506与核心502A-N之间维持一致性。
在一些实施例中,一个或多个核心502A-N能够实现多线程化。系统代理510包括协调和操作核心502A-N的那些组件。系统代理单元510可包括例如功率控制单元(powercontrol unit,PCU)和显示单元。PCU可以是对核心502A-N以及集成图形逻辑508的功率状态进行调节所需的逻辑和组件,或可包括这些逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核心502A-N在体系结构指令集方面可以是同构的或异构的;即,核心502A-N中的两个或更多个核心可能能够执行相同的指令集,而其他核心可能能够执行该指令集的仅仅子集或不同的指令集。
示例性计算机体系结构
图6-9是示例性计算机体系结构的框图。本领域中已知的对膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(digital signal processor,DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般地,能够包含如本文中所公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备一般都是合适的。
现在参考图6,所示出的是根据本发明一个实施例的系统600的框图。系统600可以包括一个或多个处理器610、615,这些处理器耦合到控制器中枢620。在一个实施例中,控制器中枢620包括图形存储器控制器中枢(graphics memory controller hub,GMCH)690和输入/输出中枢(Input/Output Hub,IOH)650(其可以在分开的芯片上);GMCH 690包括存储器和图形控制器,存储器640和协处理器645耦合到该存储器和图形控制器;IOH 650将输入/输出(input/output,I/O)设备660耦合到GMCH 690。或者,存储器和图形控制器中的一个或这两者被集成在(如本文中所描述的)处理器内,存储器640和协处理器645直接耦合到处理器610,并且控制器中枢620与IOH 650处于单个芯片中。
附加的处理器615的可选性在图6中通过虚线来表示。每一处理器610、615可包括本文中描述的处理核心中的一个或多个,并且可以是处理器1100的某一版本。
存储器640可以是例如动态随机存取存储器(dynamic random memory,DRAM)、相变存储器(phase change memory,PCM)或这两者的组合。对于至少一个实施例,控制器中枢620经由诸如前端总线(frontside bus,FSB)之类的多点分支(multi-drop)总线、诸如快速路径互连(QuickPath Interconnect,QPI)之类的点到点接口、或者类似的连接695来与(一个或多个)处理器610、615进行通信。
在一个实施例中,协处理器645是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。在一个实施例中,控制器中枢620可以包括集成图形加速器。
在物理资源610、615之间可以存在包括体系结构、微体系结构、热、功耗特性等一系列品质度量方面的各种差异。
在一个实施例中,处理器610执行控制一般类型的数据处理操作的指令。嵌入在这些指令内的可以是协处理器指令。处理器610将这些协处理器指令识别为具有应当由附连的协处理器645执行的类型。因此,处理器610在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发出到协处理器645。(一个或多个)协处理器645接受并执行所接收的协处理器指令。
现在参见图7,所示出的是根据本发明的实施例的第一更具体的示例性系统700的框图。如图7中所示,多处理器系统700是点到点互连系统,并且包括经由点到点互连750耦合的第一处理器770和第二处理器780。处理器770和780中的每一个都可以是处理器500的某一版本。在本发明的一个实施例中,处理器770和780分别是处理器610和615,而协处理器738是协处理器645。在另一实施例中,处理器770和780分别是处理器610和协处理器645。
处理器770和780示出为分别包括集成存储器控制器(integrated memorycontroller,IMC)单元772和782。处理器770还包括作为其总线控制器单元的一部分的点到点(point-to-point,P-P)接口776和778;类似地,第二处理器780包括P-P接口786和788。处理器770、780可以经由使用点到点(P-P)接口电路778、788的P-P接口750来交换信息。如图7中所示,IMC 772和782将处理器耦合到相应的存储器,即存储器732和存储器734,这些存储器可以是本地附连到相应处理器的主存储器的部分。
处理器770、780可各自经由使用点到点接口电路776、794、786、798的各个P-P接口752、754来与芯片组790交换信息。芯片组790可以可选地经由高性能接口739来与协处理器738交换信息。在一个实施例中,协处理器738是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。
共享缓存(未示出)可被包括在任一处理器中,或在这两个处理器的外部但经由P-P互连与这些处理器连接,使得如果处理器被置于低功率模式,则任一个或这两个处理器的本地缓存信息可被存储在共享缓存中。
芯片组790可以经由接口796耦合到第一总线716。在一个实施例中,第一总线716可以是外围组件互连(Peripheral Component Interconnect,PCI)总线或诸如PCI快速(PCI Express)总线或另一第三代I/O互连总线之类的总线,但是本发明的范围不限于此。
如图7中所示,各种I/O设备714可连同总线桥718一起耦合到第一总线716,该总线桥718将第一总线716耦合到第二总线720。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理器的一个或多个附加处理器715耦合到第一总线716。在一个实施例中,第二总线720可以是低引脚数(low pin count,LPC)总线。在一个实施例中,各种设备可耦合到第二总线720,这些设备包括例如键盘和/或鼠标722、通信设备727以及存储单元728,该存储单元728诸如可包括指令/代码和数据730的盘驱动器或者其他大容量存储设备。此外,音频I/O 724可以被耦合到第二总线720。注意,其他体系结构是可能的。例如,代替图7的点到点体系结构,系统可以实现多分支总线或其他此类体系结构。
现在参考图8,示出的是根据本发明的实施例的第二更具体的示例性系统800的框图。图7和8中的类似元件使用类似的附图标记,并且从图8中省略了图7的某些方面以避免混淆图8的其他方面。
图8图示处理器770、780可分别包括集成存储器和I/O控制逻辑(“control logic,CL”)772和782。因此,CL 772、782包括集成存储器控制器单元,并包括I/O控制逻辑。图8图示不仅存储器732、734耦合到CL 772、782,而且I/O设备814也耦合到控制逻辑772、782。传统I/O设备815被耦合到芯片组790。
现在参考图9,示出的是根据本发明的实施例的SoC 900的框图。图5中的类似要素使用类似的附图标记。另外,虚线框是更先进的SoC上的可选的特征。在图9中,(一个或多个)互连单元902被耦合到:应用处理器910,其包括一个或多个核心的集合502A-N的集合(其包括缓存单元504A-N)以及(一个或多个)共享缓存单元506;系统代理单元510;(一个或多个)总线控制器单元516;(一个或多个)集成存储器控制器单元514;一个或多个协处理器的集合920,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(static random access memory,SRAM)单元930;直接存储器访问(direct memoryaccess,DMA)单元932;以及用于耦合到一个或多个外部显示器的显示单元940。在一个实施例中,(一个或多个)协处理器920包括专用处理器,诸如例如,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、或嵌入式处理器,等等。
本文公开的机制的各实施例可以被实现在硬件、软件、固件或此类实现方式的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码(诸如,图7中图示的代码730)应用于输入指令,以执行本文中描述的功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有处理器的任何系统,该处理器诸如例如,数字信号处理器(DSP)、微控制器、专用集成电路(application specific integrated circuit,ASIC)或微处理器。
程序代码可以用高级的面向过程的编程语言或面向对象的编程语言来实现,以便与处理系统通信。如果需要,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描述的机制不限于任何特定的编程语言的范围。在任何情况下,该语言可以是编译语言或解释语言。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示性指令来实现,该指令表示处理器中的各种逻辑,该指令在被机器读取时使得该机器制造用于执行本文中所述的技术的逻辑。(被称为“IP核心”)的此类表示可以被存储在有形的机器可读介质上,并可被供应给各个客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
此类机器可读存储介质可以包括但不限于通过机器或设备制造或形成的制品的非暂态、有形布置,其包括存储介质,诸如硬盘;任何其他类型的盘,包括软盘、光盘、致密盘只读存储器(compact disk read-only memory,CD-ROM)、可重写致密盘(compack diskrewritable,CD-RW)以及磁光盘;半导体器件,诸如,只读存储器(ROM)、诸如动态随机存取存储器(dynamic random access memory,DRAM)和静态随机存取存储器(static randomaccess memory,SRAM)的随机存取存储器(random access memory,RAM)、可擦除可编程只读存储器(erasable programmable read-only memories,EPROM)、闪存、电可擦除可编程只读存储器(electrically erasable programmable read-only memory,EEPROM);相变存储器(phase change memory,PCM);磁卡或光卡;或适于存储电子指令的任何其他类型的介质。
因此,本发明的实施例还包括非暂态的有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(Hardware Description Language,HDL),它定义本文中描述的结构、电路、装置、处理器和/或系统特征。这些实施例也被称为程序产品。
在本说明书中,可能已经参考其他附图的示例性实施例描述了流程图中的操作。然而,应当理解,流程图的操作可由除参照其他附图所讨论的本发明的那些实施例之外的实施例来执行,并且参照其他附图所讨论的本发明的实施例可执行与参照流程图所讨论的操作不同的操作。此外,尽管附图中的流程图示出由本发明的某些实施例执行的操作的特定顺序,但是,应当理解,此类顺序是示例性的(例如,替代实施例可按不同顺序执行操作,可组合某些操作,可使某些操作重叠,等等)。
尽管已经通过若干实施例来描述本发明,但是本领域技术人员将认识到,本发明不限于所描述的实施例,本发明可由在所附权利要求的精神和范围内的修改和变化实践。描述因此被视为是说明性的而不是限制性的。
- 一种深腔无引线芯片共晶焊接装置及方法
- 一种预埋传感器的引线保护装置及其使用方法
- 一种石英芯片引线焊接装置以及使用方法
- 一种芯片自动焊接机用引线交叉装置