具有存储器级并行支持的索引加速器的制造方法

文档序号:9650602阅读:420来源:国知局
具有存储器级并行支持的索引加速器的制造方法
【专利说明】
【背景技术】
[0001]具有片上高速缓存局部性的加速器通常集中在片上系统(SoC)设计,其将计算机或其它电子系统的多个组件集成到单个芯片中。加速器通常提供对由处理器执行的指令的加速。指令的加速导致性能及能量效率改进,例如,对于存储器中数据库处理。
【附图说明】
[0002]本公开的特征通过示例的方式来说明,且不限于(一个或多个)以下附图,其中相同的附图标记指示相同的元件,其中:
[0003]图1图示根据本公开的示例的具有存储器级并行(MLP)支持的索引加速器的架构;
[0004]图2图示根据本公开的示例的包括图1的具有MLP支持的索引加速器的存储器分层结构;
[0005]图3图示根据本公开的示例的用于上下文切换的流程图;
[0006]图4图示根据本公开的示例的用于通过即时(on-the-fly)发出预取请求而允许执行前进的流程图;
[0007]图5图示根据本公开的示例的用于多个探测密钥的并行取出的流程图;
[0008]图6图示根据本公开的示例的用于实现具有MLP支持的索引加速器的方法;
[0009]图7图示根据本公开的示例的用于实现具有MLP支持的索引加速器的方法的进一步细节;以及
[0010]图8图示根据本公开的示例的用于使用具有MLP支持的索引加速器的计算机系统。
【具体实施方式】
[0011]出于简化及说明目的,通过主要参考示例来描述本公开。在以下描述中,阐述了若干特定细节以便提供对本公开的透彻理解。然而,容易地显而易见的是可以在没有对这些特定细节的限制的情况下实践本公开。在其它实例中,尚未详细描述一些方法及结构以免不必要地使本公开晦涩难懂。
[0012]贯穿本公开,术语“一”及“一个”旨在表示至少一个特定元件。如本文所使用的,术语“包括”意为包括但不限于,术语“包含”意为包含但不限于。术语“基于”意为至少部分地基于。
[0013]例如用于索引的提供对由处理器执行的指令的加速的加速器可以被指定为索引加速器。索引加速器可以包括用于以相对大的数据工作负载为目标的专门硬件和专用缓冲器二者。此类大的数据工作负载可以包括可能由于花费在访问数据和等待动态随机存取存储器(DRAM)的相对大量的时间(例如,花费在通过索引结构追逐指针的时间)而不理想地适应于标准处理器的执行的片段。索引加速器可以提供用于执行这些数据片段的替代的和更能量高效的选项,而同时还允许使主处理器核被置于低功率模式。
[0014]根据示例,本文公开了一种利用(leverage)大量存储器级(MLP)并行的索引加速器。本文公开的索引加速器通常可以提供卸载数据库索引操作的处理器核。本文公开的索引加速器可以一次支持一个或多个未完成的存储器请求。如下面进一步详细描述的,可以提供针对多个未完成的存储器请求的支持,例如通过在索引加速器处并入MLP支持,允许多个索引请求使用索引加速器,通过即时发出预取请求而允许执行前进,以及支持多个探测密钥的并行取出以减轻和覆盖某些索引相关的片上高速缓存未命中损失。MLP支持可以允许索引加速器实现高于没有MLP支持的基线设计的性能。
[0015]本文公开的索引加速器可以通过通常使用查询间并行或通过提取与数据结构特定的预取的并行来支持MLP。可以通过允许多个索引请求经由在索引加速器中包括附加配置寄存器来使用索引加速器而支持MLP。通过发出针对散列表链中下一条目的预取请求可以允许针对查询的索引请求的执行前进。另外,本文公开的索引加速器可以支持多个探测密钥的并行取出,以减轻和覆盖某些索引相关的片上高速缓存未命中损失。
[0016]本文公开的索引加速器通常可以包括执行索引操作的控制器,以及用于缓冲在索引操作期间遇到(例如,接触)的任何数据的相对小的高速缓存数据结构。所述控制器可以处理到索引数据结构(例如,红黑树、B树或散列表)内的查找,执行对于索引所需的任何计算(例如,两个表之间的连结(join),或匹配特定字段),以及访问要被搜索的数据(例如,匹配用户查询的数据库表行)。根据示例,相对小的高速缓存数据结构可以是4-8KB。
[0017]本文公开的索引加速器可以以例如花费相对大量的时间来访问数据的数据中心的工作负载为目标。此类数据中心的工作负载通常可以包括应用数据的最少重用。作为遇到相对大量的数据的结果,数据结构元素的局部性(例如,树内的内部节点)可能趋向于较低,因为搜索可能具有接触相同数据的相对低的概率。数据重用可能对于可以用于访问原始数据或计算指针地址的元数据(诸如表头、模式和常数)是有用的。本文公开的索引加速器的缓冲器可以例如通过减少不可再次使用的用于数据的处理器核主高速缓存的使用而促进索引。本文公开的索引加速器的缓冲器还可以捕获数据库工作负载中频繁使用的元数据(例如,数据库模式和常数)。本文公开的索引加速器还可以例如通过发出多个未完成的负载而提供对相对小的索引进行操作的查询的效率。因此,本文公开的索引加速器可以提供用于实现例如性能和能量效率方面的改进的存储器访问的加速。
[0018]图1图示根据本公开的示例的具有MLP支持的索引加速器100的架构(下文为“索引加速器100”)。索引加速器100可以是提供与查询102相关的多个特定请求(例如,索引请求)中的任一个的执行的SoC的组件。参考图1,索引加速器100被描绘为包括请求解码器104,其接收对应于来自中央处理单元(CPU)或较高级高速缓存(例如,图2的L2高速缓存202)的查询102的多个请求。请求解码器104可以包括多个配置寄存器106,其在例如针对多个查询102的索引请求的执行期间使用。控制器(即,有限状态机(FSM)) 108可以处理到索引数据结构(例如,红黑树、B树或散列表)内的查找,执行与索引相关的任何计算(例如,两个表之间的连结,或匹配特定字段),以及访问正被搜索的数据(例如,匹配用户的查询的行)。控制器108可以包括MLP(预取)引擎110,其提供经由未命中状态处理寄存器(MSHR) 112或预取缓冲器114的预取请求的发出。MLP(预取)引擎110可以包括及时创建预取请求的控制器监视器116,以及避免索引加速器100的主索引加速器计算逻辑120上的竞争的预取特定的计算逻辑118。索引加速器100还可以包括缓冲器(例如,静态随机存取存储器(SRAM)) 122,其包括行缓冲器124和存储缓冲器126。
[0019]执行索引加速器100中各种其它功能的索引加速器100的组件可以包括非暂时性计算机可读介质上存储的机器可读指令。此外或可替代地,索引加速器100的组件可以包括硬件或者机器可读指令和硬件的组合。例如,可以在SoC上实现索引加速器100的组件。
[0020]参考图1,请求解码器104可以接收对应于来自CPU或较高级高速缓存(例如,图2的L2高速缓存202)的查询102的多个请求。所述请求可以包括例如卸载的数据库索引请求。当由索引加速器100接收到这些请求时,请求解码器104可以对其进行解码。
[0021]缓冲器122可以是存储在索引加速器100的执行期间遇到的任何数据的全关联高速缓存。例如,缓冲器122可以是相对小(例如,4-8KB)的全关联高速缓存。缓冲器122可以提供对空间局部性及时间局部性的利用(leverage)。
[0022]索引加速器100接口可以被提供为库或作为数据库管理系统(DBMS)的软件(即,机器可读指令)应用编程接口(API)。索引加速器100可以提供诸如例如索引创建及查找之类的功能。库调用可以被转换为特定指令集架构(ISA)扩展指令,以设置和使用索引加速器100。在索引加速器100的调取期间,执行正在索引的线程的处理器核128可以睡眠,而同时索引加速器100正执行索引操作。一旦索引操作完成,索引加速器100可以将结果130 (例如,以临时表的形式的找到的数据)推送给处理器的高速缓存,并向处理器核128发送中断,允许处理器核128继续执行。当索引加速器100不用于索引数据时,索引加速器100的组件可以用于其它目的,以扩充处理器的现有高速缓存分层结构。在空闲时段期间使用索引加速器100可以减少浪费的晶体管,通过提供扩大的高速缓存容量改进处理器的性能,通过允许高速缓存的部分被关闭来改进处理器的能量消耗,并通过提供较高级的优化来减少不良处理器利用的时段。
[0023]在空闲时段期间,可以关闭请求解码器104、控制器108和计算逻辑120,可以给处理器或较高级高速缓存提供对索引加速器100的缓冲器122的访问。例如,请求解码器104、控制器108和计算逻辑120可以单独地或组合地提供由核处理器对缓冲器122的访问。而且,索引加速器100可以包括内部连接器132,其将缓冲器122直接连接到处理器核128以用于在此类空闲时段期间的操作。
[002
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1