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

文档序号:9650602阅读:来源:国知局
引请求(例如,基于第二查询)。
[0042]在框314处,上下文切换操作可以将控制器108的状态(即,FSM状态)保存到基于第一查询的索引请求的配置寄存器106。状态信息可以包括控制器108的最后状态以及所使用的MSHR112号。
[0043]在框316处,在基于第二查询的索引请求的执行期间,响应于确定存在长等待时间未命中,控制器108可以再次用到配置寄存器上下文206中的另一个的上下文切换开始执行另一索引请求(例如,基于第三查询)。
[0044]在框318处,在上下文切换期间,控制器108可以检查MSHR 112以确定是否存在对索引请求之一的答复。
[0045]在框320处,响应于确定存在对索引请求之一的答复,可以调度对应的索引请求。
[0046]在框322处,响应于确定不存在对索引请求之一的答复,可以开始执行新的索引请求。
[0047]关于上下文切换,当需要上下文切换时,如果所有MSHR 112是满的,和/或不存在要开始的新的查询,可以暂停执行,直到服务未完成的未命中之一为止。然后,控制器108可以恢复对应的上下文。
[0048]如本文所述的,为了提供MLP,索引加速器100可以提供针对使用索引加速器的多个索引请求的支持,通过即时发出预取请求而允许执行前进,并支持多个探测密钥的并行取出以减轻和覆盖某些索引未命中。
[0049]关于通过即时发出预取请求而允许执行前进,当找到搜索的密钥时,索引执行可以终止。为了确定是否找到所搜索的密钥,在索引的每一级,可以执行针对找到的密钥和搜索的密钥的比较。可以认为在第一次尝试中找到搜索的密钥的概率是较低的。因此,索引加速器100执行可以推测性地前进,并假设未找到搜索的密钥。通过即时发出预取指令的前进的方面可能对散列表是有利的,其中一旦找到第一桶(bucket),就可以提前访问链接,假设用彼此对准的多个数组来组织表。即使表不具有对准的布局,如果处理每个节点需要除比较密钥之外的附加计算(例如,更新节点中的状态、间接存储的节点值等),索引加速器100可以通过跳过计算且在遇到时取出下一节点(即,解引用(dereference)下个链接指针)而前进。前进还可以允许覆盖在从一个链接移到另一个时可能发生的长等待时间加载。
[0050]图4图示根据本公开的示例的通过即时发出预取请求而允许执行前进的流程图400。前进的方面通常可以关于已经提交到DBMS的索引请求的执行,并且最终经由DBMS中的软件API传送到索引加速器100。前进的方面通常还可以关于散列表上的索引行走(walk) ο
[0051]参考图4,在框402处,在索引的配置阶段期间,除了桶数组地址(S卩,索引表地址)之外,还可以将用于链接的数组地址和布局信息(如果不同于桶数组的话)加载到配置寄存器106。
[0052]在框404处,在散列表搜索期间,可以使值(例如,索引请求搜索的密钥)散列化,并可以访问桶。
[0053]在框406处,在读取桶内的值之前,可以向MSHR112之一或预取缓冲器114发出下一链接(其为具有相同偏移、但在不同数组中的条目)。类似地,如果散列表数据结构未对准(即,经由指针连接),则索引加速器100可以在读取桶内的值之前决定读取并解引用指针。
[0054]在框408处,可以针对空值(S卩,意为散列表中不存在此类条目)和用于计算桶地址的密钥来比较密钥。
[0055]在框410处,响应于确定比较之一为真,执行可以终止。这可以暗示最后发出的预取是不必要的。
[0056]在框412处,响应于确定没有比较为真,执行可以继续至下一链接。
[0057]图4的示例可以与一般散列表行走相关。取决于索引条目的布局,可能需要附加的计算(例如,更新状态,执行与索引净荷的附加比较等)。前进的方面还可能朝向覆盖下一链接的访问等待时间的增加的机会是有利的。
[0058]如本文所述的,为了提供MLP,索引加速器100可以提供针对使用索引加速器的多个索引请求的支持,通过即时发出预取请求而允许执行前进,并支持多个探测密钥的并行取出以减轻和覆盖某些索引未命中。
[0059]关于支持多个探测密钥的并行取出以减轻和覆盖某些索引未命中,前进技术可以提供在单个探测操作内预取链接(即,前进可以利用探测内并行)。然而,如本文所述的,一旦找到桶头位置(即,一旦密钥被散列化),就可以开始预取。因此,桶头读取可能引发相对长等待时间的未命中,甚至关于通过即时发出预取请求而允许执行前进。
[0060]为了减轻第一桶头未命中,索引加速器100可以利用探测间并行,因为可能存在针对索引请求的单个索引表(例如,数据分析工作负载中的散列连结)上搜索的多个(例如,数以百万)密钥。为了利用此类并行,可以预取下一探测密钥,并可以计算散列值以提前发出桶头的对应条目。由于这些密钥存储在DBMS中的数组中,并可能遵循固定的跨步(stride)模式(例如,向先前的地址添加8个字节),可以基于探测密钥访问模式来执行预取下一探测密钥。可以提前执行预取下一探测密钥,以使得可以对值进行散列化,并可以预取桶条目。
[0061]图5图示根据本公开的示例的用于多个探测密钥的并行取出的流程图500。图5的并行取出技术可以应用于例如可能需要用多个(例如,数以百万)密钥探测的散列表索弓丨。图5的并行取出技术可能可应用于散列连结,诸如将两个数据库表组合成一个表的连结。为了加快连结操作的执行,可以将数据库表中的较小表转换成散列表索引,并且然后由数据库表中的较大表中的条目(例如,密钥)探测。对于每一个匹配条目,结果缓冲器可以被填充,并最终可以定位驻留在两个表中的条目。假定较大的表可以包括数以千计至数以百万的条目,其可能需要独立地探测索引,此类情景可以包括大量探测间并行。
[0062]参考图5,在框502处,为了执行从未转换成索引表的大数据库表的并行取出,当完成针对探测密钥N的探测时,可以取出探测密钥N+1,并可以预取探测密钥N+2。
[0063]在框504处,探测密钥N+1可以通过首先使探测密钥N+1散列化、加载桶条目、和执行针对空值(即,空的桶条目)的比较操作并查找可能的匹配而继续索引加速器100的正常操作。
[0064]在框506处,在探测密钥N+1忙于加载和比较的同时,控制器108可以通过使用计算逻辑120中的逻辑门而向计算逻辑120发送探测密钥N+2以用于散列化(如果探测密钥N+2同时到达的话)。一旦散列化完成,可以将预取请求插入MSHR 112或预取缓冲器114以预取对应于探测密钥N+2的桶条目。
[0065]在框508处,当针对探测密钥N+1的探测完成时,探测密钥N+2可以读取用于比较的桶条目(其被预取),并且发出针对探测密钥N+3的预取请求。
[0066]关于多个探测密钥的并行取出,索引加速器100可以使用散列化以计算针对探测密钥的桶位置。例如,索引加速器100可以出于预取的目的而采用附加的计算逻辑118,或让控制器108在正常和预取操作之间仲裁计算逻辑120。如果预取距离大于一,则可以出于预取目的而采用附加的计算逻辑118。一的预取距离对于用正常操作隐藏所述操作可能是理想的(即,预取多于一个探测密钥可以使用相对长的正常操作,并且否则,计算预取地址可能使用索引加速器100的过量的执行时间)。
[0067]图6和7分别图示对应于以上详细描述其结构的索引加速器100的示例的用于实现具有MLP支持的索引加速器的方法600和700的流程图。可以通过示例而非限制的方式参考图1-5在索引加速器100上实现方法600和700。可以在其它装置中实践方法600和700。
[0068]参考图6,对于方法600,在框602处,可以接收索引请求。例如,参考图1_5,请求解码器104可以接收针对查询102的索引请求。
[0069]在框604处,可以将接收到的索引请求中的索引请求分配给多个配置寄存器中的配置寄存器。例如,参考图1-5,控制器108可以通信地耦合到请求解码器104,以通过将与查询102相关的接收到的索引请求中的索引请求分配给多个配置寄存器106中的配置寄存器来支持MLP。
[0070]在框606处,可以存储与用于响应于索引请求的控制器的索引操作相关的数据。例如,参考图1-5,缓冲器122可以通信地耦合到控制器108,以存储与用于响应于索引请求的控制器108的索引操作相关的数据。
[0071]参考图7,对于方法700,在框702处,可以接收索引请求。例如,参考图1_5,请求解码器104可以接收针对查询102的索引请求。
[0072]在框704处,可以将接收到的索引请求中的索引请求分配给多个配置寄存器中的配置寄存器。例如,参考图1-5,控制器108可以通信地耦合到请求解码器104,以通过将与查询102相关的接收到的索引请求中的索引请求分配给多个
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1