CN105408878A - 具有存储器级并行支持的索引加速器 - Google Patents
具有存储器级并行支持的索引加速器 Download PDFInfo
- Publication number
- CN105408878A CN105408878A CN201380076251.1A CN201380076251A CN105408878A CN 105408878 A CN105408878 A CN 105408878A CN 201380076251 A CN201380076251 A CN 201380076251A CN 105408878 A CN105408878 A CN 105408878A
- Authority
- CN
- China
- Prior art keywords
- index
- request
- accelerator
- configuration register
- mlp
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0855—Overlapped cache accessing, e.g. pipeline
- G06F12/0859—Overlapped cache accessing, e.g. pipeline with reload from main memory
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
根据示例,一种具有存储器级并行(MLP)支持的索引加速器可以包括接收索引请求的请求解码器。所述请求解码器可以包括多个配置寄存器。控制器可以通信地耦合到请求解码器以通过将接收到的索引请求中的索引请求分配到多个配置寄存器中的配置寄存器来支持MLP。缓冲器可以通信地耦合到控制器以存储与用于响应于索引请求的控制器的索引操作相关的数据。
Description
背景技术
具有片上高速缓存局部性的加速器通常集中在片上系统(SoC)设计,其将计算机或其它电子系统的多个组件集成到单个芯片中。加速器通常提供对由处理器执行的指令的加速。指令的加速导致性能及能量效率改进,例如,对于存储器中数据库处理。
附图说明
本公开的特征通过示例的方式来说明,且不限于(一个或多个)以下附图,其中相同的附图标记指示相同的元件,其中:
图1图示根据本公开的示例的具有存储器级并行(MLP)支持的索引加速器的架构;
图2图示根据本公开的示例的包括图1的具有MLP支持的索引加速器的存储器分层结构;
图3图示根据本公开的示例的用于上下文切换的流程图;
图4图示根据本公开的示例的用于通过即时(on-the-fly)发出预取请求而允许执行前进的流程图;
图5图示根据本公开的示例的用于多个探测密钥的并行取出的流程图;
图6图示根据本公开的示例的用于实现具有MLP支持的索引加速器的方法;
图7图示根据本公开的示例的用于实现具有MLP支持的索引加速器的方法的进一步细节;以及
图8图示根据本公开的示例的用于使用具有MLP支持的索引加速器的计算机系统。
具体实施方式
出于简化及说明目的,通过主要参考示例来描述本公开。在以下描述中,阐述了若干特定细节以便提供对本公开的透彻理解。然而,容易地显而易见的是可以在没有对这些特定细节的限制的情况下实践本公开。在其它实例中,尚未详细描述一些方法及结构以免不必要地使本公开晦涩难懂。
贯穿本公开,术语“一”及“一个”旨在表示至少一个特定元件。如本文所使用的,术语“包括”意为包括但不限于,术语“包含”意为包含但不限于。术语“基于”意为至少部分地基于。
例如用于索引的提供对由处理器执行的指令的加速的加速器可以被指定为索引加速器。索引加速器可以包括用于以相对大的数据工作负载为目标的专门硬件和专用缓冲器二者。此类大的数据工作负载可以包括可能由于花费在访问数据和等待动态随机存取存储器(DRAM)的相对大量的时间(例如,花费在通过索引结构追逐指针的时间)而不理想地适应于标准处理器的执行的片段。索引加速器可以提供用于执行这些数据片段的替代的和更能量高效的选项,而同时还允许使主处理器核被置于低功率模式。
根据示例,本文公开了一种利用(leverage)大量存储器级(MLP)并行的索引加速器。本文公开的索引加速器通常可以提供卸载数据库索引操作的处理器核。本文公开的索引加速器可以一次支持一个或多个未完成的存储器请求。如下面进一步详细描述的,可以提供针对多个未完成的存储器请求的支持,例如通过在索引加速器处并入MLP支持,允许多个索引请求使用索引加速器,通过即时发出预取请求而允许执行前进,以及支持多个探测密钥的并行取出以减轻和覆盖某些索引相关的片上高速缓存未命中损失。MLP支持可以允许索引加速器实现高于没有MLP支持的基线设计的性能。
本文公开的索引加速器可以通过通常使用查询间并行或通过提取与数据结构特定的预取的并行来支持MLP。可以通过允许多个索引请求经由在索引加速器中包括附加配置寄存器来使用索引加速器而支持MLP。通过发出针对散列表链中下一条目的预取请求可以允许针对查询的索引请求的执行前进。另外,本文公开的索引加速器可以支持多个探测密钥的并行取出,以减轻和覆盖某些索引相关的片上高速缓存未命中损失。
本文公开的索引加速器通常可以包括执行索引操作的控制器,以及用于缓冲在索引操作期间遇到(例如,接触)的任何数据的相对小的高速缓存数据结构。所述控制器可以处理到索引数据结构(例如,红黑树、B树或散列表)内的查找,执行对于索引所需的任何计算(例如,两个表之间的连结(join),或匹配特定字段),以及访问要被搜索的数据(例如,匹配用户查询的数据库表行)。根据示例,相对小的高速缓存数据结构可以是4-8KB。
本文公开的索引加速器可以以例如花费相对大量的时间来访问数据的数据中心的工作负载为目标。此类数据中心的工作负载通常可以包括应用数据的最少重用。作为遇到相对大量的数据的结果,数据结构元素的局部性(例如,树内的内部节点)可能趋向于较低,因为搜索可能具有接触相同数据的相对低的概率。数据重用可能对于可以用于访问原始数据或计算指针地址的元数据(诸如表头、模式和常数)是有用的。本文公开的索引加速器的缓冲器可以例如通过减少不可再次使用的用于数据的处理器核主高速缓存的使用而促进索引。本文公开的索引加速器的缓冲器还可以捕获数据库工作负载中频繁使用的元数据(例如,数据库模式和常数)。本文公开的索引加速器还可以例如通过发出多个未完成的负载而提供对相对小的索引进行操作的查询的效率。因此,本文公开的索引加速器可以提供用于实现例如性能和能量效率方面的改进的存储器访问的加速。
图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。
执行索引加速器100中各种其它功能的索引加速器100的组件可以包括非暂时性计算机可读介质上存储的机器可读指令。此外或可替代地,索引加速器100的组件可以包括硬件或者机器可读指令和硬件的组合。例如,可以在SoC上实现索引加速器100的组件。
参考图1,请求解码器104可以接收对应于来自CPU或较高级高速缓存(例如,图2的L2高速缓存202)的查询102的多个请求。所述请求可以包括例如卸载的数据库索引请求。当由索引加速器100接收到这些请求时,请求解码器104可以对其进行解码。
缓冲器122可以是存储在索引加速器100的执行期间遇到的任何数据的全关联高速缓存。例如,缓冲器122可以是相对小(例如,4-8KB)的全关联高速缓存。缓冲器122可以提供对空间局部性及时间局部性的利用(leverage)。
索引加速器100接口可以被提供为库或作为数据库管理系统(DBMS)的软件(即,机器可读指令)应用编程接口(API)。索引加速器100可以提供诸如例如索引创建及查找之类的功能。库调用可以被转换为特定指令集架构(ISA)扩展指令,以设置和使用索引加速器100。在索引加速器100的调取期间,执行正在索引的线程的处理器核128可以睡眠,而同时索引加速器100正执行索引操作。一旦索引操作完成,索引加速器100可以将结果130(例如,以临时表的形式的找到的数据)推送给处理器的高速缓存,并向处理器核128发送中断,允许处理器核128继续执行。当索引加速器100不用于索引数据时,索引加速器100的组件可以用于其它目的,以扩充处理器的现有高速缓存分层结构。在空闲时段期间使用索引加速器100可以减少浪费的晶体管,通过提供扩大的高速缓存容量改进处理器的性能,通过允许高速缓存的部分被关闭来改进处理器的能量消耗,并通过提供较高级的优化来减少不良处理器利用的时段。
在空闲时段期间,可以关闭请求解码器104、控制器108和计算逻辑120,可以给处理器或较高级高速缓存提供对索引加速器100的缓冲器122的访问。例如,请求解码器104、控制器108和计算逻辑120可以单独地或组合地提供由核处理器对缓冲器122的访问。而且,索引加速器100可以包括内部连接器132,其将缓冲器122直接连接到处理器核128以用于在此类空闲时段期间的操作。
在索引加速器100的空闲时段期间,处理器核128或较高级高速缓存(例如,图2的L2高速缓存202)可以使用缓冲器122作为受害者(victim)高速缓存、未命中缓冲器、流缓冲器或优化缓冲器。关于索引加速器100的MLP操作,在分别继续进行描述图3-5的流程图300、400和500之前,参考图2描述针对这些不同类型的高速缓存的缓冲器122的使用。
图2图示根据本公开的示例的包括图1的索引加速器100的存储器分层结构200。存储器分层结构200的示例可以包括处理器核128、一级(L1)高速缓存202、可以包括具有对应于配置寄存器106的任意数量的附加配置寄存器上下文206(在示例中用阴影图案示出的三个)的任意数量的相同索引加速器100(在示例中示出的三个)的多个索引加速器204以及L2高速缓存208。在索引加速器100的操作期间,处理器核128可以向索引加速器100发送信号,其经由执行非暂时性机器可读指令指示索引加速器100要索引某个位置或搜索特定数据。在已经由索引加速器100执行各种索引任务之后,索引加速器100可以向处理器核128发送中断信号,其指示索引任务完成,并且索引加速器100现在可用于其它任务。
基于接收到索引任务完成的指示,处理器核128可以引导索引加速器100清除(flush)缓冲器122中的任何过时的索引加速器100特定的数据。因为缓冲器122先前可能已经用于高速缓存索引加速器100在索引操作期间使用的数据,所以可以清除掉干净数据(例如,索引内的树节点、数据表元组条目等),以使得在索引加速器100不用作索引加速器100时不会无意地访问所述数据。如果脏数据或经修改的数据仍然在缓冲器122中,则缓冲器122可以提供通过任何较低高速缓存(例如,L2高速缓存208)的窥探(snoop),以使得那些较低高速缓存看到该经修改的数据,并写回该经修改的数据。
在已经从缓冲器122清除数据后,可以禁用控制器108。禁用控制器108可以防止索引加速器100起索引加速器的作用,并且可以代替地允许索引加速器100的某些组件用于各种不同目的。例如,在禁用控制器108之后,索引加速器100可以用作受害者高速缓存、未命中缓冲器、流缓冲器或优化缓冲器,与具有MLP(即,基于控制器108的MLP状态)的索引加速器100相反。在索引加速器100正经历的任何空闲时段期间,可以使用这些模式中的每一个。
如图2中所示,多个索引加速器100可以被放置在存储器分层结构200中的多个高速缓存之间。例如,图2可以包括L3高速缓存,其中索引加速器100将L2高速缓存208与L3高速缓存通信地耦合。根据另一示例,索引加速器100可以取代L1高速缓存202,并包括相对较大的缓冲器122。例如,缓冲器122的大小可以超过8KB的数据储存器(相较于4-8KB)。作为结果,代替L1高速缓存202内的控制器接管缓冲操作,索引加速器100本身可以完成该任务,并使缓冲器122在空闲时段期间在受害者高速缓存、未命中缓冲器、流缓冲器或优化缓冲器的不同模式下操作。
根据另一示例,缓冲器122可以用作高速暂存存储器,以使得索引加速器100在空闲时段期间可以提供到处理器核128的接口以使得特定计算能够在缓冲器122内维护的数据上执行。所允许的计算可以是由索引硬件提供的操作,诸如比较或地址计算。这可以通过提供重用索引加速器100的其它方式而允许索引加速器100中的灵活性。
如本文所述的,在空闲时段期间,索引加速器100可以用作受害者高速缓存、未命中缓冲器、流缓冲器或优化缓冲器。然而,索引加速器100可以再一次用作索引加速器,并且处理器核128可以向索引加速器100发送信号以执行索引操作。当处理器核128向索引加速器100发送信号以执行索引操作时,缓冲器122中包含的数据可以被无效。如果缓冲器122中包含的数据为干净数据,则数据可以被删除、盖写,或到数据的地址可以被删除。如果缓冲器122中包含的数据是脏的或被更改的,那么该数据可以被清除到存储器分层结构200内的高速缓存(例如,L1高速缓存202、L2高速缓存208)。在索引加速器100中的缓冲器数据已经被无效后,可以通过从处理器核128接收信号来重新启用控制器108。如果L1高速缓存202先前已被禁用,也可以重新启用L1高速缓存202。
为了索引加速器100提供MLP支持,如本文描述的,索引加速器100通常可以包括MSHR112、用于执行独立索引请求的多个配置寄存器(或预取缓冲器)106和具有MLP支持的控制器108。
MSHR112可以提供索引加速器100以发出未完成的负载。索引加速器100可以包括例如4-12个MSHR112以利用MLP。对于无需支持未完成负载(例如,推测性(speculative)负载)的情况,相同大小的预取缓冲器114可以用于避免MSHR112中依赖性检查硬件的复杂性。当索引加速器100向L1高速缓存202发出其脱离索引(off-indexing)的加速器负载时,L1高速缓存202能够支持的未完成的未命中的数目也可以约束MSHR112的数目。在例如针对多个查询102的索引请求的执行期间可以使用多个配置寄存器106。配置寄存器上下文206可以共享相同的解码器,因为请求的格式相同。具有MLP支持的控制器108可以提供经由MSHR112或预取缓冲器114发出预取请求。索引加速器100的树及散列状态二者可以发起预取请求。控制器108可以施加索引加速器100的正常执行模式或通过禁用MLP(预取)引擎110中的控制器监视器116来任意地取消预取操作。
为了提供MLP,索引加速器100可以提供针对使用索引加速器100的多个索引请求的支持,通过即时发出预取请求而允许执行前进,并支持多个探测密钥的并行取出以减轻和覆盖某些索引未命中。参考图3-5描述这些方面中的每一个。
关于提供针对使用索引加速器100的多个索引请求的支持,在事务处理环境中,查询间并行可以是普遍的,因为可能存在被缓冲并等待执行周期的数以千计的事务。因此,可以针对索引加速器100调度这些查询的索引部分。尽管索引加速器100可以一次执行一个查询,索引加速器100可以在发出针对查询102的存储器请求之后在索引加速器100中的长等待时间未命中时切换其上下文(例如,通过控制器108)。为了支持上下文切换,索引加速器100可以每上下文采用一个配置寄存器106。
图3图示根据本公开的示例的用于上下文切换的流程图300。在该示例中,可以使用从用户接收多个查询(例如,数以千计的查询)的DBMS。对于每个查询,DBMS可以创建通常包含索引操作的查询计划。DBMS软件(通过其API)可以向索引加速器100发送与索引操作相关的预定数目的索引请求,而不是用软件执行索引请求。
参考图3,在框302处,包括一组配置寄存器106(例如,8个配置寄存器)的索引加速器100可以接收针对用于加速的多个查询102的索引请求(例如,索引请求1至8)。如本文所述的,存储器分层结构200可以包括多个索引加速器204。而且,每个索引加速器100可以包括多个配置寄存器106,其包括对应的配置寄存器上下文206,诸如在图2中所示的3个配置寄存器上下文206。
在框304处,接收的索引请求之一(例如,基于第一查询的索引请求)可以开始执行。可以通过从具有针对在执行中的索引请求的信息的配置寄存器上下文206之一读取相关信息而开始执行索引请求。每个配置寄存器上下文可以包括针对一个索引请求的索引相关信息。索引请求执行可以包括以下步骤:计算索引条目的地址,以及逐个加载/读取地址,直到定位(一个或多个)所请求的条目为止。地址计算可以包括使用索引表的基地址的地址,以及根据索引表布局向基地址添加偏移。一旦索引条目的地址被计算,就可以从存储器分层结构200读取地址。例如,可以通过读取索引表的基地址并用每个索引条目的长度加上基地址来定位索引的第一条目,其中这些值可以在配置阶段期间被发送到索引加速器100,并驻留在配置寄存器106中。
在框306处,控制器108可以确定缓冲器122中是否存在未命中,这意为从处理器高速缓存取出所请求的索引条目。
在框308处,响应于确定不存在未命中,如果所找到的条目与搜索的密钥匹配,则可以将结果130发送给处理器高速缓存。
在框310处,响应于确定存在未命中,控制器108(即,FSM)可以在等待所请求的数据从存储器分层结构200到达的同时开始计数周期。
在框312处,响应于确定未命中尚未被服务得长于规定的阈值(例如,L1高速缓存202的命中(hit)等待时间),控制器108可以用到配置寄存器上下文206中的另一个的上下文切换开始执行另一索引请求(例如,基于第二查询)。
在框314处,上下文切换操作可以将控制器108的状态(即,FSM状态)保存到基于第一查询的索引请求的配置寄存器106。状态信息可以包括控制器108的最后状态以及所使用的MSHR112号。
在框316处,在基于第二查询的索引请求的执行期间,响应于确定存在长等待时间未命中,控制器108可以再次用到配置寄存器上下文206中的另一个的上下文切换开始执行另一索引请求(例如,基于第三查询)。
在框318处,在上下文切换期间,控制器108可以检查MSHR112以确定是否存在对索引请求之一的答复。
在框320处,响应于确定存在对索引请求之一的答复,可以调度对应的索引请求。
在框322处,响应于确定不存在对索引请求之一的答复,可以开始执行新的索引请求。
关于上下文切换,当需要上下文切换时,如果所有MSHR112是满的,和/或不存在要开始的新的查询,可以暂停执行,直到服务未完成的未命中之一为止。然后,控制器108可以恢复对应的上下文。
如本文所述的,为了提供MLP,索引加速器100可以提供针对使用索引加速器的多个索引请求的支持,通过即时发出预取请求而允许执行前进,并支持多个探测密钥的并行取出以减轻和覆盖某些索引未命中。
关于通过即时发出预取请求而允许执行前进,当找到搜索的密钥时,索引执行可以终止。为了确定是否找到所搜索的密钥,在索引的每一级,可以执行针对找到的密钥和搜索的密钥的比较。可以认为在第一次尝试中找到搜索的密钥的概率是较低的。因此,索引加速器100执行可以推测性地前进,并假设未找到搜索的密钥。通过即时发出预取指令的前进的方面可能对散列表是有利的,其中一旦找到第一桶(bucket),就可以提前访问链接,假设用彼此对准的多个数组来组织表。即使表不具有对准的布局,如果处理每个节点需要除比较密钥之外的附加计算(例如,更新节点中的状态、间接存储的节点值等),索引加速器100可以通过跳过计算且在遇到时取出下一节点(即,解引用(dereference)下个链接指针)而前进。前进还可以允许覆盖在从一个链接移到另一个时可能发生的长等待时间加载。
图4图示根据本公开的示例的通过即时发出预取请求而允许执行前进的流程图400。前进的方面通常可以关于已经提交到DBMS的索引请求的执行,并且最终经由DBMS中的软件API传送到索引加速器100。前进的方面通常还可以关于散列表上的索引行走(walk)。
参考图4,在框402处,在索引的配置阶段期间,除了桶数组地址(即,索引表地址)之外,还可以将用于链接的数组地址和布局信息(如果不同于桶数组的话)加载到配置寄存器106。
在框404处,在散列表搜索期间,可以使值(例如,索引请求搜索的密钥)散列化,并可以访问桶。
在框406处,在读取桶内的值之前,可以向MSHR112之一或预取缓冲器114发出下一链接(其为具有相同偏移、但在不同数组中的条目)。类似地,如果散列表数据结构未对准(即,经由指针连接),则索引加速器100可以在读取桶内的值之前决定读取并解引用指针。
在框408处,可以针对空值(即,意为散列表中不存在此类条目)和用于计算桶地址的密钥来比较密钥。
在框410处,响应于确定比较之一为真,执行可以终止。这可以暗示最后发出的预取是不必要的。
在框412处,响应于确定没有比较为真,执行可以继续至下一链接。
图4的示例可以与一般散列表行走相关。取决于索引条目的布局,可能需要附加的计算(例如,更新状态,执行与索引净荷的附加比较等)。前进的方面还可能朝向覆盖下一链接的访问等待时间的增加的机会是有利的。
如本文所述的,为了提供MLP,索引加速器100可以提供针对使用索引加速器的多个索引请求的支持,通过即时发出预取请求而允许执行前进,并支持多个探测密钥的并行取出以减轻和覆盖某些索引未命中。
关于支持多个探测密钥的并行取出以减轻和覆盖某些索引未命中,前进技术可以提供在单个探测操作内预取链接(即,前进可以利用探测内并行)。然而,如本文所述的,一旦找到桶头位置(即,一旦密钥被散列化),就可以开始预取。因此,桶头读取可能引发相对长等待时间的未命中,甚至关于通过即时发出预取请求而允许执行前进。
为了减轻第一桶头未命中,索引加速器100可以利用探测间并行,因为可能存在针对索引请求的单个索引表(例如,数据分析工作负载中的散列连结)上搜索的多个(例如,数以百万)密钥。为了利用此类并行,可以预取下一探测密钥,并可以计算散列值以提前发出桶头的对应条目。由于这些密钥存储在DBMS中的数组中,并可能遵循固定的跨步(stride)模式(例如,向先前的地址添加8个字节),可以基于探测密钥访问模式来执行预取下一探测密钥。可以提前执行预取下一探测密钥,以使得可以对值进行散列化,并可以预取桶条目。
图5图示根据本公开的示例的用于多个探测密钥的并行取出的流程图500。图5的并行取出技术可以应用于例如可能需要用多个(例如,数以百万)密钥探测的散列表索引。图5的并行取出技术可能可应用于散列连结,诸如将两个数据库表组合成一个表的连结。为了加快连结操作的执行,可以将数据库表中的较小表转换成散列表索引,并且然后由数据库表中的较大表中的条目(例如,密钥)探测。对于每一个匹配条目,结果缓冲器可以被填充,并最终可以定位驻留在两个表中的条目。假定较大的表可以包括数以千计至数以百万的条目,其可能需要独立地探测索引,此类情景可以包括大量探测间并行。
参考图5,在框502处,为了执行从未转换成索引表的大数据库表的并行取出,当完成针对探测密钥N的探测时,可以取出探测密钥N+1,并可以预取探测密钥N+2。
在框504处,探测密钥N+1可以通过首先使探测密钥N+1散列化、加载桶条目、和执行针对空值(即,空的桶条目)的比较操作并查找可能的匹配而继续索引加速器100的正常操作。
在框506处,在探测密钥N+1忙于加载和比较的同时,控制器108可以通过使用计算逻辑120中的逻辑门而向计算逻辑120发送探测密钥N+2以用于散列化(如果探测密钥N+2同时到达的话)。一旦散列化完成,可以将预取请求插入MSHR112或预取缓冲器114以预取对应于探测密钥N+2的桶条目。
在框508处,当针对探测密钥N+1的探测完成时,探测密钥N+2可以读取用于比较的桶条目(其被预取),并且发出针对探测密钥N+3的预取请求。
关于多个探测密钥的并行取出,索引加速器100可以使用散列化以计算针对探测密钥的桶位置。例如,索引加速器100可以出于预取的目的而采用附加的计算逻辑118,或让控制器108在正常和预取操作之间仲裁计算逻辑120。如果预取距离大于一,则可以出于预取目的而采用附加的计算逻辑118。一的预取距离对于用正常操作隐藏所述操作可能是理想的(即,预取多于一个探测密钥可以使用相对长的正常操作,并且否则,计算预取地址可能使用索引加速器100的过量的执行时间)。
图6和7分别图示对应于以上详细描述其结构的索引加速器100的示例的用于实现具有MLP支持的索引加速器的方法600和700的流程图。可以通过示例而非限制的方式参考图1-5在索引加速器100上实现方法600和700。可以在其它装置中实践方法600和700。
参考图6,对于方法600,在框602处,可以接收索引请求。例如,参考图1-5,请求解码器104可以接收针对查询102的索引请求。
在框604处,可以将接收到的索引请求中的索引请求分配给多个配置寄存器中的配置寄存器。例如,参考图1-5,控制器108可以通信地耦合到请求解码器104,以通过将与查询102相关的接收到的索引请求中的索引请求分配给多个配置寄存器106中的配置寄存器来支持MLP。
在框606处,可以存储与用于响应于索引请求的控制器的索引操作相关的数据。例如,参考图1-5,缓冲器122可以通信地耦合到控制器108,以存储与用于响应于索引请求的控制器108的索引操作相关的数据。
参考图7,对于方法700,在框702处,可以接收索引请求。例如,参考图1-5,请求解码器104可以接收针对查询102的索引请求。
在框704处,可以将接收到的索引请求中的索引请求分配给多个配置寄存器中的配置寄存器。例如,参考图1-5,控制器108可以通信地耦合到请求解码器104,以通过将与查询102相关的接收到的索引请求中的索引请求分配给多个配置寄存器106中的配置寄存器来支持MLP。
在框706处,可以存储与用于响应于索引请求的控制器的索引操作相关的数据。例如,参考图1-5,缓冲器122可以通信地耦合到控制器108,以存储与用于响应于索引请求的控制器108的索引操作相关的数据。
在框708处,索引请求的执行可以通过发出用于响应于索引请求的针对散列表链中下一条目的预取请求而前进。例如,参考图1-5,控制器108可以通过发出用于响应于索引请求的针对散列表链中下一条目的预取请求而提供索引请求的执行以前进。另外,索引请求的执行可以通过经由MSHR112发出预取请求而前进。
在框710处,可以实现多个探测密钥的并行取出。例如,参考图1-5,控制器108可以实现多个探测密钥的并行取出。
根据另一示例,控制器108可以通过确定在索引请求的执行期间是否存在未命中来支持MLP,其中索引请求的执行对应于配置寄存器的配置寄存器上下文,并且其中索引请求被指定为第一索引请求,并且配置寄存器的配置寄存器上下文被指定为第一配置寄存器的第一配置寄存器上下文。响应于确定在第一索引请求的执行期间不存在未命中,索引加速器100可以将第一索引请求的执行的结果转发给处理器高速缓存。另外,响应于确定在第一索引请求的执行期间存在未命中,控制器108可以开始计数周期,并且响应于基于计数周期而确定未命中尚未被服务得长于规定的阈值,控制器108可以用到另一配置寄存器的配置寄存器上下文的上下文切换开始执行另一索引请求。根据另一示例,可以将控制器108的状态保存到第一配置寄存器。根据另外的示例,可以检查MSHR112(或预取缓冲器114),以确定是否存在对索引请求之一的答复。
根据另一示例,控制器108可以通过确定针对探测密钥N的探测是否完成来实现多个探测密钥的并行取出,且响应于确定针对探测密钥N的探测完成,控制器108可以取出探测密钥N+1,并预取探测密钥N+2。
图8示出可以与本文所述的示例一起使用的计算机系统800。计算机系统可以表示一般平台,其包括可以在服务器或另一计算机系统中的组件。计算机系统800可以用作用于索引加速器100的平台。计算机系统800可以通过处理器或其它硬件处理电路来执行本文所述的方法、功能和其它过程。这些方法、功能和其它过程可以体现为存储在计算机可读介质上的机器可读指令,所述计算机可读介质可以是非暂时性的,诸如硬件存储设备(例如,RAM(随机存取存储器)、ROM(只读存储器)、EPROM(可擦除可编程ROM)、EEPROM(电可擦除可编程ROM)、硬驱动和闪速存储器)。
计算机系统800可以包括处理器802,其可以实现或运行执行本文所述的一些或全部方法、功能和其它过程的机器可读指令。来自处理器802的命令和数据可以被传送给索引加速器100,并从其接收。而且,可以通过通信总线804传送来自处理器802的命令和数据。计算机系统还可以包括用于处理器802的机器可读指令和数据可以在运行期间驻留于其中的主存储器806(诸如随机存取存储器(RAM))以及辅数据储存器808,其可以是非易失性的并存储机器可读指令和数据。存储器和数据储存器是计算机可读介质的示例。
计算机系统800可以包括I/O设备810,诸如键盘、鼠标、显示器等。计算机系统可以包括用于连接到网络的网络接口812。可以在计算机系统中添加或置换其它已知的电子组件。
本文已经描述和说明的是示例连同其一些变型。本文所使用的术语、描述及附图仅通过说明的方式阐述,并不意为作为限制。在所述主题的精神及范围内许多变型是可能的,其旨在由以下权利要求——及其等同物——来限定,其中所有术语意为其最广泛的合理的意义,除非以其他方式指示。
Claims (15)
1.一种具有存储器级并行(MLP)的索引加速器,包括:
请求解码器,其接收索引请求并包括多个配置寄存器;
控制器,其通信地耦合到请求解码器以通过将接收到的索引请求中的索引请求分配到多个配置寄存器中的配置寄存器来支持MLP;
缓冲器,其通信地耦合到控制器以存储与用于响应于索引请求的控制器的索引操作相关的数据。
2.根据权利要求1所述的具有MLP支持的索引加速器,其中所述控制器为了支持MLP,进一步:
通过发出用于响应于索引请求的针对散列表链中下一条目的预取请求而提供索引请求的执行以前进。
3.根据权利要求2所述的具有MLP支持的索引加速器,其中所述控制器为了支持MLP,进一步:
通过经由未命中状态处理寄存器(MSHR)或预取缓冲器发出预取请求而提供索引请求的执行以前进。
4.根据权利要求1所述的具有MLP支持的索引加速器,其中所述控制器为了支持MLP,进一步:
确定在索引请求的执行期间是否存在未命中,其中索引请求的执行对应于配置寄存器的配置寄存器上下文,并且其中索引请求被指定为第一索引请求,并且配置寄存器的配置寄存器上下文被指定为第一配置寄存器的第一配置寄存器上下文;
响应于确定在第一索引请求的执行期间不存在未命中,将第一索引请求的执行的结果转发给处理器高速缓存;以及
响应于确定在第一索引请求的执行期间存在未命中:
开始计数周期;以及
响应于基于计数周期而确定未命中尚未被服务得长于规定的阈值,用到另一配置寄存器的配置寄存器上下文的上下文切换开始执行另一索引请求。
5.根据权利要求4所述的具有MLP支持的索引加速器,其中所述控制器为了支持MLP,进一步:
将控制器的状态保存到第一配置寄存器。
6.根据权利要求4所述的具有MLP支持的索引加速器,其中所述控制器为了支持MLP,进一步:
检查未命中状态处理寄存器(MSHR)以确定是否存在对索引请求之一的答复。
7.根据权利要求1所述的具有MLP支持的索引加速器,其中所述控制器为了支持MLP,进一步:
实现多个探测密钥的并行取出。
8.根据权利要求7所述的具有MLP支持的索引加速器,其中所述控制器为了实现多个探测密钥的并行取出,进一步:
确定针对探测密钥N的探测是否完成;以及
响应于确定针对探测密钥N的探测完成:
取出探测密钥N+1,以及
预取探测密钥N+2。
9.根据权利要求1所述的具有MLP支持的索引加速器,其中具有MLP支持的索引加速器被实现为片上系统(SoC)。
10.一种用于实现具有存储器级并行(MLP)支持的索引加速器的方法,所述方法包括:
接收索引请求;
将接收到的索引请求中的索引请求分配到多个配置寄存器中的配置寄存器;
存储与用于响应于索引请求的控制器的索引操作相关的数据;以及
通过发出用于响应于索引请求的针对散列表链中下一条目的预取请求而通过前进来执行索引请求。
11.根据权利要求10所述的方法,进一步包括:
确定在索引请求的执行期间是否存在未命中,其中索引请求的执行对应于配置寄存器的配置寄存器上下文,并且其中索引请求被指定为第一索引请求,并且配置寄存器的配置寄存器上下文被指定为第一配置寄存器的第一配置寄存器上下文;
响应于确定在第一索引请求的执行期间不存在未命中,将第一索引请求的执行的结果转发到处理器高速缓存;以及
响应于确定在第一索引请求的执行期间存在未命中:
开始计数周期;以及
响应于基于计数周期而确定未命中尚未被服务得长于规定的阈值,用到另一配置寄存器的配置寄存器上下文的上下文切换开始执行另一索引请求。
12.根据权利要求11所述的方法,进一步包括:
将控制器的状态保存到第一配置寄存器。
13.根据权利要求11所述的方法,进一步包括:
检查未命中状态处理寄存器(MSHR)以确定是否存在对索引请求之一的答复。
14.根据权利要求10所述的方法,进一步包括:
实现多个探测密钥的并行取出。
15.根据权利要求11所述的方法,其中实现多个探测密钥的并行取出进一步包括:
确定针对探测密钥N的探测是否完成;以及
响应于确定针对探测密钥N的探测完成:
取出探测密钥N+1,以及
预取探测密钥N+2。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2013/053040 WO2015016915A1 (en) | 2013-07-31 | 2013-07-31 | Indexing accelerator with memory-level parallelism support |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105408878A true CN105408878A (zh) | 2016-03-16 |
Family
ID=52432272
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380076251.1A Pending CN105408878A (zh) | 2013-07-31 | 2013-07-31 | 具有存储器级并行支持的索引加速器 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20160070701A1 (zh) |
EP (1) | EP3033684A1 (zh) |
CN (1) | CN105408878A (zh) |
WO (1) | WO2015016915A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10452529B1 (en) * | 2014-06-11 | 2019-10-22 | Servicenow, Inc. | Techniques and devices for cloud memory sizing |
KR101923661B1 (ko) | 2016-04-04 | 2018-11-29 | 주식회사 맴레이 | 플래시 기반 가속기 및 이를 포함하는 컴퓨팅 디바이스 |
US10997140B2 (en) * | 2018-08-31 | 2021-05-04 | Nxp Usa, Inc. | Method and apparatus for acceleration of hash-based lookup |
US10671550B1 (en) | 2019-01-03 | 2020-06-02 | International Business Machines Corporation | Memory offloading a problem using accelerators |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1139489A (zh) * | 1993-11-02 | 1997-01-01 | 帕拉科姆有限公司 | 加速计算机数据库事务处理的装置 |
WO2002037264A2 (en) * | 2000-11-06 | 2002-05-10 | Broadcom Corporation | Reconfigurable processing system and method |
US7177985B1 (en) * | 2003-05-30 | 2007-02-13 | Mips Technologies, Inc. | Microprocessor with improved data stream prefetching |
WO2012124125A1 (ja) * | 2011-03-17 | 2012-09-20 | 富士通株式会社 | システムおよびスケジューリング方法 |
US8473689B2 (en) * | 2010-07-27 | 2013-06-25 | Texas Instruments Incorporated | Predictive sequential prefetching for data caching |
CN103218309A (zh) * | 2011-12-06 | 2013-07-24 | 辉达公司 | 多级指令高速缓存预取 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7861066B2 (en) * | 2007-07-20 | 2010-12-28 | Advanced Micro Devices, Inc. | Mechanism for predicting and suppressing instruction replay in a processor |
US8738860B1 (en) * | 2010-10-25 | 2014-05-27 | Tilera Corporation | Computing in parallel processing environments |
US8683135B2 (en) * | 2010-10-31 | 2014-03-25 | Apple Inc. | Prefetch instruction that ignores a cache hit |
US8984230B2 (en) * | 2013-01-30 | 2015-03-17 | Hewlett-Packard Development Company, L.P. | Method of using a buffer within an indexing accelerator during periods of inactivity |
US10089232B2 (en) * | 2014-06-12 | 2018-10-02 | Board Of Supervisors Of Louisiana State University And Agricultural And Mechanical College | Mode switching for increased off-chip bandwidth |
-
2013
- 2013-07-31 EP EP13890709.2A patent/EP3033684A1/en not_active Withdrawn
- 2013-07-31 US US14/888,237 patent/US20160070701A1/en not_active Abandoned
- 2013-07-31 WO PCT/US2013/053040 patent/WO2015016915A1/en active Application Filing
- 2013-07-31 CN CN201380076251.1A patent/CN105408878A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1139489A (zh) * | 1993-11-02 | 1997-01-01 | 帕拉科姆有限公司 | 加速计算机数据库事务处理的装置 |
WO2002037264A2 (en) * | 2000-11-06 | 2002-05-10 | Broadcom Corporation | Reconfigurable processing system and method |
US7177985B1 (en) * | 2003-05-30 | 2007-02-13 | Mips Technologies, Inc. | Microprocessor with improved data stream prefetching |
US8473689B2 (en) * | 2010-07-27 | 2013-06-25 | Texas Instruments Incorporated | Predictive sequential prefetching for data caching |
WO2012124125A1 (ja) * | 2011-03-17 | 2012-09-20 | 富士通株式会社 | システムおよびスケジューリング方法 |
CN103218309A (zh) * | 2011-12-06 | 2013-07-24 | 辉达公司 | 多级指令高速缓存预取 |
Non-Patent Citations (1)
Title |
---|
刘德峰: "面向存储级并行的多核处理器关键技术研究", 《中国博士学位论文全文数据库信息科技辑(月刊)》 * |
Also Published As
Publication number | Publication date |
---|---|
WO2015016915A1 (en) | 2015-02-05 |
US20160070701A1 (en) | 2016-03-10 |
EP3033684A1 (en) | 2016-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10929174B2 (en) | Atomic object reads for in-memory rack-scale computing | |
Boroumand et al. | CoNDA: Efficient cache coherence support for near-data accelerators | |
Breß et al. | Robust query processing in co-processor-accelerated databases | |
CN102483704B (zh) | 具有高效的高速缓存支持的事务内存系统 | |
US8683125B2 (en) | Tier identification (TID) for tiered memory characteristics | |
US9424315B2 (en) | Methods and systems for run-time scheduling database operations that are executed in hardware | |
US10803066B2 (en) | Methods and systems for hardware acceleration of database operations and queries for a versioned database based on multiple hardware accelerators | |
KR101355496B1 (ko) | 복수의 병렬 클러스터들을 포함하는 계층 프로세서의스케쥴링 메카니즘 | |
CN101523361B (zh) | 数据处理设备中对共享存储器的写访问请求的处理 | |
US8370575B2 (en) | Optimized software cache lookup for SIMD architectures | |
US7363435B1 (en) | System and method for coherence prediction | |
US8190825B2 (en) | Arithmetic processing apparatus and method of controlling the same | |
JP2018504694A (ja) | 仮想アドレスを使用してアクセスされるキャッシュ | |
US10482024B2 (en) | Private caching for thread local storage data access | |
US8984230B2 (en) | Method of using a buffer within an indexing accelerator during periods of inactivity | |
US20170206035A1 (en) | Random-Access Disjoint Concurrent Sparse Writes to Heterogeneous Buffers | |
CN109313554A (zh) | 用于在非均匀计算装置中进行调度的方法和设备 | |
CN105408878A (zh) | 具有存储器级并行支持的索引加速器 | |
US9384131B2 (en) | Systems and methods for accessing cache memory | |
KR20050074310A (ko) | 캐시 라인 소유권 이전 방법 및 장치 | |
CN1910560A (zh) | 用于在回写高速缓存中同时窥探推入或窥探取消操作过程中取消回写操作的系统和方法 | |
KR102482516B1 (ko) | 메모리 어드레스 변환 | |
Arcas-Abella et al. | Hardware acceleration for query processing: leveraging FPGAs, CPUs, and memory | |
CN103020320B (zh) | 一种基于动态搜索的运行时gpu显存级数据复用优化方法 | |
Jacobi et al. | Design of the IBM z14 microprocessor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20160316 |
|
WD01 | Invention patent application deemed withdrawn after publication |