当前位置: 首页 > 专利查询>英特尔公司专利>正文

加速硬件中的存储器排序制造技术

技术编号:18426165 阅读:22 留言:0更新日期:2018-07-12 01:57
本申请公开了加速硬件中的存储器排序。集成电路包括存储器接口和操作队列,该存储器接口耦合至存储器,用于存储对应于指令的数据,该操作队列用于对于对应于指令的存储器操作进行缓冲。集成电路可包括加速硬件,用于执行对应于指令的子程序。输入队列的集合可包括地址队列和依赖性队列,该地址队列用于从加速硬件接收与存储器操作中的第二存储器操作相关联的存储器的地址,该依赖性队列用于从加速硬件接收与该地址相关联的依赖性令牌。依赖性令牌指示对由存储器操作中的第一存储器操作生成的数据的依赖性。响应于依赖性队列接收到依赖性令牌且地址队列接收到地址,调度器电路可调度第二存储器操作向存储器的发布。

Speed up memory sorting in hardware

This application discloses accelerated memory sorting in hardware. An integrated circuit consists of a memory interface and an operation queue, which is coupled to the memory, which is used to store data corresponding to the instruction, which is used to buffer memory operations corresponding to the instruction. Integrated circuits can include accelerated hardware for executing subroutines corresponding to instructions. The set of input queues may include address queues and dependency queues, which are used to address the memory associated with the second memory operation in the accelerated hardware reception and memory operation, which is used to receive an dependent token associated with the address from the accelerated hardware. The dependency token indicates the dependence on the data generated by the first memory operation in the memory operation. In response to the dependency queue receiving the dependent token and the address queue receiving the address, the scheduler circuit schedules the second memory operation to release the memory.

【技术实现步骤摘要】
加速硬件中的存储器排序联邦资助的研究或开发本专利技术是在由国防部授予的合同号H98230A-13-D-0124的政府支持下进行的。政府具有本专利技术的某些权利。
本公开涉及加速硬件,更具体地涉及在加速硬件(诸如,空间阵列)中的存储器排序。
技术介绍
加速硬件涉及对数据通信、存储和检索、加密和解密、数学运算、图形、网页浏览等进行加速的设备。加速硬件可包括单独的集成电路(也称为IC或芯片)、印刷电路板或独立系统。加速硬件的一些示例包括网络访问加速器(NAS)、图形加速器和浮点加速器(FPA)。在一个实施例中,加速硬件被实例化为空间架构,该空间架构是使用空间阵列在计算系统中加速用户应用的高能效和高性能手段。空间架构包括处理组件的阵列,该处理组件诸如现场可编程门阵列(FPGA)中的门或其他处理元件(PE)。附图说明图1A是根据本公开的实施例的系统的框图,该系统采用插入在存储器子系统与加速硬件之间的存储器排序电路。图1B是根据本公开的实施例的图1A中的系统的框图,但是该系统采用多个存储器排序电路。图2是示出根据本公开的实施例的进入加速硬件以及离开加速硬件的存储器操作的一般运行的框图。图3是示出根据本公开的实施例的存储操作的空间依赖性流的框图。图4是根据本公开的实施例的图1中的存储器排序电路的详细框图。图5是根据本公开的实施例的图1中的存储器排序电路的微架构的流程图。图6是根据本公开的实施例的可执行确定器电路的框图。图7是根据本公开的实施例的优先级编码器的框图。图8是根据本公开的实施例的逻辑和二进制两种形式的示例性加载操作的框图。图9A是示出根据本公开的实施例的示例代码的逻辑执行的流程图。图9B是示出根据本公开的实施例的示例代码的展开版本中的存储器级并行性的图9A的流程图。图10A是根据本公开的实施例的用于加载操作和存储操作的示例性存储器变元(argument)的框图。图10B是示出根据本公开的实施例的、通过图5中的存储器排序电路的微架构进行加载操作和存储操作(诸如,图10A中的那些操作)的流的框图。图11A、11B、11C、11D、11E、11F、11G和11H是示出根据本公开的实施例的通过图11B中的微架构的队列对示例性程序进行的加载操作和存储操作的功能性流的框图。图12是根据本公开的实施例的用于对加速硬件与乱序存储器子系统之间的存储器操作进行排序的方法的流程图。图13A是示出根据一个实施例的有序流水线以及寄存器重命名级、乱序发布/执行流水线的框图。图13B是示出根据本公开的实施例的用于处理器或集成电路的微架构的框图,该处理器或集成电路包括图1A-1B中的存储器子系统和加速硬件。图14示出根据本公开的实施例的用于处理器或集成电路的微架构的框图,该处理器或集成电路包括图1A-1B中的存储器子系统和加速硬件。图15是根据一种实现方式的计算机系统的框图。图16是根据另一实现方式的计算机系统的框图。图17是根据一种实现方式的芯片上系统的框图。图18示出计算系统的框图的另一实现方式。图19示出计算系统的框图的另一实现方式。具体实施方式所公开的是用于描述加速硬件内的存储器排序依赖性的架构。如所讨论的那样,加速硬件的一个示例是诸如存在于现场可编程门阵列(FPGA)中、存在于循环处理单元(LPU)等中的空间计算结构(fabric)(“空间结构”)。此类架构面临的挑战是将广泛的现有的序列的或部分并行的应用的集合映射至按性质分布且高度并行的空间阵列。由于存在于传统编程环境中的集中式高度序列化的存储器模型,执行此映射的主要困难是对传统程序中的存储器访问的自动并行化。例如,考虑以下代码:for(i){p[f(i)]=p[g(i)];}一般而言,对于相同的i值或跨循环体的不同i值,编译器无法证明f(i)不与g(i)相同。这被称为指针或存储器别名(aliasing)。为了生成静态地正确的代码,通常迫使编译器使对阵列p的访问串行化。然而,经常的情况是在运行时f(i)和g(i)不相等,从而给予在硬件中获得动态并行性的机会。然而,在空间架构中,不存在机制来检查并利用依赖性,该依赖性促进对可能在代码执行期间产生的并行性的利用。所公开的架构提供运行时微架构内的灵活性和并行性,同时保持原始序列化程序的存储器语义,包括保持应当按某个顺序发生的存储器操作之间的依赖性。所公开的微架构例如实现加速硬件内的传统序列化代码的并行化和加速,从而促进软件应用的加速。在一个实施例中,一种集成电路包括存储器排序电路,该存储器排序电路耦合至存储器子系统并耦合至处理组件的加速硬件。执行对应指令的处理器可不按程序顺序向存储器子系统请求存储器操作。所公开的架构的存储器排序电路可确保当加速硬件执行对应于程序的指令的子程序时,对应存储器操作的结果按程序的序列化顺序被排序。为了确保存储器操作按程序顺序被调度和执行,存储器排序电路可包括形成在前驱与后继存储器操作之间的经定向的逻辑通道,并且依赖性令牌可与该通道内的地址相关联地被传递以向后续存储器操作指示依赖性。经定向的逻辑通道在本文中可称为队列,它可用将进行解释的各种硬件结构来实现。可取决于操作类型、使用经排队的存储器操作内的存储器变元来跟踪该逻辑通道内的以及相关联的依赖性令牌的位置。例如,存储器排序电路可在操作队列中将存储器操作排队。存储器排序电路也可在输入队列中从加速硬件接收加速硬件按无论什么顺序执行的地址,并递送这些地址用于存储器操作。例如,对于加载操作,加载地址队列可接收从存储器从其中检索数据的地址。类似地,对于存储操作,存储地址队列可接收向存储器向其写入数据的地址,并且存储数据队列用于对将被写入那个地址的数据进行缓冲。通过将对地址的缓冲与对数据的缓冲分开,存储操作可在两个阶段中执行:首先,调度对特定地址的存储操作;其次,在接收到要存储的数据时,请求该存储操作。此外,所公开的架构定义的存储器操作可能能够通过操纵依赖性令牌来履行存储器排序约束。使用依赖性令牌可确保将存储器操作的数据依赖性与在先存储器操作一起保留在程序内。当操作的结果变得可用于其他存储器操作时,存储器操作可触发依赖性令牌的生成。该生成可包括如下选项:传递从在先存储器操作接收到的依赖性令牌,诸如,复制那个依赖性令牌。随后,这些令牌被传递至表示程序的空间执行图中的程序后续的存储器操作。在从在先存储器操作接收到依赖性令牌时,启用后续操作以进行调度。在一个实施例中,计数器可用于跟踪已为任何给定通道生成了多少依赖性令牌,例如,提供队列的紧凑表示。饱和且因此无法将附加的唯一令牌提供给已经传递至待定存储器操作的那些依赖性令牌的计数器可在调度前一操作时触发停止。由编译器产生的存储器操作的排序或程序存储器图确保程序存储器顺序在并行执行的加速硬件(诸如,空间结构)内被履行。相应地,当依赖性令牌与存储器中的传入地址一起从加速硬件被接收,对相关联的存储器操作的排序可被调度并最终可按程序顺序被执行。在一个示例中,当存储操作与加载操作针对存储器中的相同地址时,依赖性存在于存储操作与在先的加载操作之间。依赖性令牌可被生成(或复制)以便与加载操作一起被传递,使得排序电路在存储操作的完成之前可调度(携带该依赖性令牌的)加载操作的完成。该示例中的在加载操作之前对存储操作排序可避免以下场景:本文档来自技高网...

【技术保护点】
1.一种集成电路,包括:存储器接口,耦合至存储器,所述存储器用于存储对应于正为程序执行的指令的数据;操作队列,耦合至所述存储器接口,所述操作队列用于对于对应于所述指令的存储器操作进行缓冲;加速硬件,用于执行对应于所述指令的子程序;输入队列的集合,耦合至所述加速硬件并耦合至所述存储器接口,其中,所述输入队列的集合用于从所述加速硬件接收:与所述存储器操作中的第二存储器操作相关联的所述存储器的地址;以及与所述地址相关联的依赖性令牌,所述依赖性令牌指示对由所述存储器操作中的第一存储器操作生成的数据的依赖性,所述第一存储器操作先于所述第二存储器操作;以及调度器电路,耦合至所述存储器接口、所述操作队列和所述输入队列的集合,其中,所述调度器电路用于响应于所述输入队列的集合对所述依赖性令牌和所述地址的接收来调度所述第二存储器操作向所述存储器的发布。

【技术特征摘要】
2016.12.30 US 15/396,0381.一种集成电路,包括:存储器接口,耦合至存储器,所述存储器用于存储对应于正为程序执行的指令的数据;操作队列,耦合至所述存储器接口,所述操作队列用于对于对应于所述指令的存储器操作进行缓冲;加速硬件,用于执行对应于所述指令的子程序;输入队列的集合,耦合至所述加速硬件并耦合至所述存储器接口,其中,所述输入队列的集合用于从所述加速硬件接收:与所述存储器操作中的第二存储器操作相关联的所述存储器的地址;以及与所述地址相关联的依赖性令牌,所述依赖性令牌指示对由所述存储器操作中的第一存储器操作生成的数据的依赖性,所述第一存储器操作先于所述第二存储器操作;以及调度器电路,耦合至所述存储器接口、所述操作队列和所述输入队列的集合,其中,所述调度器电路用于响应于所述输入队列的集合对所述依赖性令牌和所述地址的接收来调度所述第二存储器操作向所述存储器的发布。2.如权利要求1所述的集成电路,其中,所述调度器电路是操作管理器电路的部分,并且所述操作管理器电路用于响应于所述第一存储器操作的完成而将所述第二存储器操作发布至所述存储器,其中,所述第一存储器操作是加载操作、存储操作或围栏操作中的一个,并且所述第二存储器操作是加载操作、存储操作或围栏操作中的一个。3.如权利要求1所述的集成电路,其中,所述第二存储器操作是加载操作,并且所述输入队列的集合包括加载地址队列、存储地址队列、存储数据队列和依赖性队列,所述集成电路进一步包括完成队列,所述完成队列耦合至所述加速硬件和所述存储器接口,其中,所述完成队列用于在所述加载操作完成时对从所述存储器接收到的数据进行缓冲。4.如权利要求3所述的集成电路,其中,所述第一存储器操作和所述第二存储器操作中的一个当在所述操作队列中被缓冲时包括存储器变元,所述存储器变元包含以下至少一项:输入队列标识符,用于指示所述输入队列集合内的输入通道;输出队列标识符,用于指示所述完成队列内的输出通道;依赖性队列标识符,用于指示所述依赖性队列内的依赖性通道;或者操作类型指示符,用于指示存储器操作的类型。5.如权利要求3所述的集成电路,进一步包括计数器集合,所述计数器集合包括用于生成所述依赖性令牌的第一计数器,并且其中,所述调度器电路用于:进一步响应于所述第一计数器不饱和且在所述完成队列中具有用于完成所述第二存储器操作的空间而调度所述加载操作。6.如权利要求3所述的集成电路,其中,响应于接收到存储在所述存储器中的所述地址处的数据,所述完成队列进一步用于将所述数据与所述依赖性令牌一起提供给所述加速硬件。7.如权利要求3所述的集成电路,其中,所述调度器电路进一步用于:确定所述加载操作之后的第三存储器操作依赖于由所述加载操作读取的数据;复制所述加载操作的所述依赖性令牌;以及将所述加载操作与所述依赖性令牌一起发布至所述存储器,以便向所述第三存储器操作指示对由所述加载操作读取的数据的依赖性。8.如权利要求1所述的集成电路,其中,所述第二存储器操作属于在所述操作队列中被缓冲的多个可执行存储器操作,所述集成电路进一步包括:优先级编码器,用于从所述多个可执行存储器操作之间确定所述第二存储器操作具有执行优先级,并生成用于标识所述第二存储器操作的选择信号;以及多路复用器,用于根据所述选择信号从所述多个可执行存储器操作之间选择所述第二存储器操作。9.一种存储器排序电路,包括:存储器接口,耦合至存储器,所述存储器用于存储对应于正为程序执行的指令的数据;操作队列,耦合至所述存储器接口,所述操作队列用于对于对应于所述指令的存储器操作进行缓冲;输入队列的集合,耦合至加速硬件,所述加速硬件用于执行对应于所述指令的子程序,其中,所述输入队列的集合用于从所述加速硬件接收:从中检索用于所述存储器操作中的加载操作的数据的所述存储器的地址;以及与所述地址相关联的依赖性令牌,其中所述依赖性令牌指示对由所述存储器操作中的存储操作存储的数据的依赖性,所述存储操作先于所述加载操作;以及调度器电路,耦合至所述存储器接口、所述操作队列和所述输入队列的集合,其中,所述调度器电路用于响应于所述输入队列的集合对所述依赖性令牌和所述地址的接收来调度所述加载操作向所述存储器的发布。10.如权利要求9所述的存储器排序电路,其中,所述输入队列的集合包括:加载地址队列,用于从所述加速硬件接收所述存储器的所述地址;存储地址队列,用于从所述加速硬件接收所述存储器的所述地址,所述地址与所述存储操作相关联;存储数据队列,用于从所述加速硬件接收与用于所述存储操作的所述地址相关联的数据;以及依赖性队列,用于从所述加速硬件接收与所述加载地址队列中的所述地址相关联的所述依赖性令牌。11.如权利要求9所述的存储器排序电路,进一步包括完成队列,所述完成队列耦合至所述加速硬件和所述存储器接口,其中,所述完成队列用于在所述加载操作的完成时对从所述存储器的所述地址接收到的数据进行缓冲,并且其中,所述加载操作和所述存储操作中的一个当在所述操作队列中被排队时包括存储器变元,所述存储器变元包含以下至少一项:输入队列标识符,用于指示所述输入队列集合内的输入通道;输出队列标识符,用于指示所述完成队列内的输出通道;依赖性队列标识符,用于指示所述输入队列的集合中的依赖性队列内的依赖性通道;或者操作类型指示符,用于指示存储器操作的类型。12.如权利要求11所述的存储器排序电路,其中,所述调度器电路进一步用于鉴于以下各项来指示所述加载操作是可执行的:所述依赖性令牌、所述地址在所述输入队列的集合中的可用性以及所述完成队列中的在其中缓冲所述...

【专利技术属性】
技术研发人员:K·弗莱明小西蒙·C·史迪力K·D·格洛索普
申请(专利权)人:英特尔公司
类型:发明
国别省市:美国,US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1