CN111183418B - 可配置硬件加速器 - Google Patents
可配置硬件加速器 Download PDFInfo
- Publication number
- CN111183418B CN111183418B CN201880062917.0A CN201880062917A CN111183418B CN 111183418 B CN111183418 B CN 111183418B CN 201880062917 A CN201880062917 A CN 201880062917A CN 111183418 B CN111183418 B CN 111183418B
- Authority
- CN
- China
- Prior art keywords
- engine
- operand
- dma engine
- execution
- data
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
- G06F13/30—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal with priority control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
- G06F13/1663—Access to shared memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Advance Control (AREA)
- Multi Processors (AREA)
Abstract
各种实施例提供了一种可配置硬件加速器。所述可配置加速器可以包括发送直接内存访问(transmit direct memory access,DMA)引擎、接收DMA引擎和一个或多个执行引擎。在这些实施例中,所述可配置加速器可以用于在连续模式下访问共享数据存储器。所述发送DMA引擎和所述接收DMA引擎可用于将数据从所述共享数据存储器中的一个位置传输到所述存储器中另一个不同位置。所述执行引擎可用于对所述发送DMA引擎以流方式访问的所述数据执行各种算法。在这些实施例中,所述可配置加速器以流方式访问和处理所述数据,从而提升数据处理性能。
Description
相关申请案交叉申请
本申请要求2017年10月8日递交的发明名称为“可配置硬件加速器(CONFIGURABLEHARDWARE ACCELERATORS)”的第15/727,630号美国非临时专利申请案的在先申请优先权,该在先申请的内容以引用的方式并入本文本中。
技术领域
本发明主要涉及计算加速。
背景技术
随着新无线标准、人工智能等新兴技术的发展,需要处理的数据量大幅度增加。海量数据也对通用CPU、专用CPU(即GPU、TPU)和/或专用硬件加速器实现高效处理数据提出了更多的计算需求。
由于对处理器的计算需求的增加,处理器的性能通常不足以实现大量数据的计算密集型任务。一些情况下,即使专用处理器能够处理这些计算需求,但对于许多应用来说,使用此类处理器的成本通常十分高昂。
有很多因素会限制处理器的计算能力。传统上,处理器通过内部寄存器临时保存从数据内存加载的源输入数据;然后,处理器将该临时寄存器中存储的值作为操作数来执行算术运算或其他程序化操作,并将运算结果写入另一个临时寄存器中;最后,处理器将存储在临时寄存器中的结果重新保存到数据内存中。
执行这些操作时,需要许多指令。例如:ADD Immediate指令用于计算操作数地址,LOAD指令用于加载操作数,MULTIPLY指令用于使操作数相乘,ADD Immediate指令用于计算目的地址,STORE指令用于将结果写入到目的内存中的位置。
执行这些指令时,由于与数据内存相关联的固有加载/存储延迟以及临时寄存器的有限可用性,指令的执行通常受到流水线停顿的影响,从而降低了处理器的性能。当处理器操作大量数据时,流水线停顿问题更加严重。
业界采用其他常用技术如SIMD指令扩展和矢量指令扩展,试图通过数据并行处理来解决此性能问题。然而,这些技术虽然通过并行性提高了性能,但仍然受到上述限制的影响。
因此,需要一个灵活的方案,能够处理大量的数据,并且能够随着产品的成熟而进行快速编程、部署和修改。
发明内容
本公开的各种实施例提供一种可配置加速器。本公开提供的所述可配置加速器能够提供一种用于处理大量数据的灵活方案,用以减少或消除可能降低处理器性能的流水线停顿。本公开提供的所述可配置加速器可以包括发送直接内存访问(direct memoryaccess,DMA)引擎(transmit direct memory access,TXDMA)、接收DMA引擎(receivedirect memory access,RXDMA)、一个或多个地址生成器单元(address generator unit,AGU)、执行引擎(execution engine,XE)和/或任何其他组件。在一些实施例中,所述可配置加速器可以与一个或多个处理器或使用所述可配置加速器的任何其他实体一起连接到一个共享数据存储器。在一些实施例中,所述共享数据存储器可以划分为多个存储体。在这些实施例中,每个存储体可以由连接到所述共享数据存储器的所述可配置加速器和/或处理器独立访问,进行读取或写入操作。对所述共享数据存储器的访问可以由与每个存储体相关联的一个或多个仲裁器控制。
可以通过控制信息对本公开提供的所述可配置加速器进行编程以实现不同的操作。所述控制信息可以包括:一个或多个TXDMA描述符(或简称为TX描述符)、一个或多个RXDMA描述符(或简称为RX描述符)以及一个或多个XE指令,其中,所述一个或多个TXDMA描述符、一个或多个RXDMA描述符以及一个或多个XE指令可以统称为“XE命令(XE command)”。在各种实施例中,用于对所述可配置加速器进行编程的所述XE命令可以存储在处理器和/或所述可配置加速器共享的一个或多个寄存器中。在一些实施例中,所述寄存器可用于只存储指向所述XE命令的指针,而所述XE命令存储在所述共享数据存储器中。
执行所述XE命令时,可以指示所述可配置加速器通过其TXDMA引擎向RXDMA引擎发起DMA传输请求。所述DMA传输请求可以包括RXDMA描述符信息,例如,目的地址、数据传输长度和/或任何其他信息等。所述RXDMA引擎接收到所述DMA传输请求后,可以生成独占写访问请求,用于对与所述目的存储体相关联的内存访问仲裁器进行独占写访问。一旦授予所述独占写访问权限,所述RXDMA引擎可以向所述TXDMA引擎发送响应,指示通向目的存储体的DMA通道已经打开。
与上述RXDMA引擎类似,所述TXDMA引擎接收到来自所述RXDMA引擎的响应后,还可以请求并被授予对源存储体的独占读访问权限。所述TXDMA引擎被授予独占读访问权限后,所述TXDMA引擎可以按照所述XE命令设置的顺序以流方式从所述源存储体中读取源输入数据,以便所述XE执行所述XE指令。所述源输入数据的流顺序可以通过所述XE命令进行编程,并由AGU控制。
然后,可以将所述XE的结果发送给所述RXDMA引擎。所述RXDMA引擎可以将所述XE的结果按照所述RXDMA描述符编程的顺序写入到所述目的存储体中。当整个源输入数据流处理完成后,所述TXDMA引擎释放对所述源存储体的独占读访问,并向所述RXDMA引擎发送关闭所述DMA通道的请求,从而使得所述RXDMA引擎释放对所述目的存储体的独占写访问。
如上所述,对所述源存储体和所述目的存储体进行独占读访问和独占写访问,使得所述可配置加速器能够连续操作大量的流数据而不造成任何流水线停顿。此外,根据所述可配置加速器,所述AGU允许通过XE来处理各种算法,包括但不限于涉及多个操作数的算术运算、对标量或矢量数据的运算、位操作运算、控制指令等。本领域技术人员还可以认识到可以对所述可配置加速器进行编程,通过菊花链式连接多个XE命令执行各种算法。编程完成后,所述可配置加速器就可以按照指定的顺序执行所述菊花链式连接的XE命令。在一些实施例中,所述可配置加速器可以按照所述指定的顺序执行所述菊花链式连接的XE命令,无需所述处理器的参与,直到执行完整个XE命令序列,且所述算法的最终结果可供所述处理器使用。
本发明的附加特征、优势和实施例将在具体实施方式、附图和权利要求中清楚阐述。此外,应理解,上述发明内容和下文具体实施方式都是示例性的,旨在进行进一步说明,而不限制本发明所要求保护的范围。然而,具体实施方式和具体示例仅代表本发明的优选实施例。本领域技术人员可以从具体实施方式中清楚了解到在本发明的精神和范围内的各种变化和修改。
附图说明
图1示出了本公开提供的具有可配置加速器的示例性计算架构;
图2示出了图1所示计算架构的示例性实现方式;
图3A示出了图1所示计算架构中可以包含的一种示例性可配置加速器;
图3B示出了图1所示计算架构中可以包含的另一种示例性可配置加速器。
图4示出了对图1所示可配置加速器进行编程以执行单操作数算法的一个示例;
图5示出了对图1所示可配置加速器进行编程以执行多操作数算法的一个示例;
图6示出了对图1所示可配置加速器进行编程以执行多操作数算法的另一个示例;
图7示出了通过图1所示的可配置加速器执行多操作数算法的示例性方法;
图8示出了实现图2所示地址生成器的示例性实现方式。
具体实施方式
各种实施例提供了一种可配置加速器。所述可配置加速器可以包括TXDMA引擎、RXDMA引擎以及一个或多个执行引擎(execution engine,XE)。在一些实施例中,所述TXDMA引擎可以包括一个或多个地址生成器(address Generator,AGU)。在一些实施例中,所述RXDMA引擎也可以包括一个或多个AGU。在一些实施例中,共享数据存储器可以与处理单元和所述可配置加速器连接,用于为所述可配置加速器提供编程指令和/或存储结果。所述共享数据存储器可以包括多个存储体。
图1示出了本公开提供的具有可配置加速器的示例性计算架构100。如图1所示,所述计算架构100可以包括处理器组102、可配置加速器104、系统总线106、寄存器组108、共享数据存储器110和/或任何其他组件。所述处理器组102可以包括一个或多个处理单元,用于处理存储在所述共享数据存储器110中的数据。所述处理器组102中的单独处理单元可以通过执行一个或多个指令来处理数据,以使所述可配置加速器加载/存储数据并对数据执行算术算法。所述可配置加速器104执行的所述指令可以存储在所述寄存器组108的寄存器中。在某些实施例中,所处理器组102中的处理单元可以包括一个或多个通用处理器,用于执行机器可读指令。所述处理器组102的指令可以存储在指令内存(未示出)中。本领域普通技术人员可以理解到所述处理器组102中包括的处理单元可以包括专用处理器、微控制器、硬件逻辑、状态机和/或任何其他类型的处理单元。
所述可配置加速器104可用于对所述共享存储器110的存储体中存储的数据执行算法(包括算术算法)。不同于传统硬件加速器,本公开提供的所述可配置加速器104能够以流方式对所述共享存储器110的存储体中存储的不同数量的操作数执行不同的算法。从这个角度来说,本公开提供的所述可配置加速器104比传统硬件加速器更加灵活,因为传统硬件加速器只能执行特定的预设算术算法。图2和图3A示出了本公开提供的所述可配置加速器104的一些示例。
所述系统总线106可用于连接所述处理器组102中的一个或多个处理单元、所述可配置加速器104、所述寄存器组108中的寄存器、所述共享数据存储器110和/或所述计算架构100中的任何其他组件。在某些实施例中,所述系统总线106可用于在这些组件之间传输信息(例如,控制指令、地址信息、数据等)。在一个实施例中,所述系统总线106连接所述处理器组102中的处理单元和所述可配置加速器104。在一个可选实施例中(未示出),所述处理器组102中的处理单元可以直接连接到所述可配置加速器104,无需使用系统总线。
所述寄存器组108可以包括一个或多个寄存器,用于存储指令。所述可配置加速器104执行所述寄存器组108中存储的指令时,可以使得所述加速器104加载/处理所述共享数据存储器110中存储的所述数据,以及将数据存储到所述共享存储器110中。单个寄存器中存储的指令可以包括XE命令,所述XE命令可以使得所述可配置加速器104发起访问请求,访问所述共享数据存储器110,以处理所述共享数据存储器中存储的数据,将所述处理的结果存储到所述数据存储器110中,和/或执行任何其他操作。在一个实施例中,所述寄存器组108中存储的指令可以包括指令,所述指令可以使得所述可配置加速器104将数据从所述共享存储器110的第一位置加载到所述共享存储器110的第二位置。应理解的是,尽管该示例中描述了寄存器组108存储XE命令,但这并不意味着一种限制。在其他一些实施例中,所述XE命令可以还存储在其他地方,例如,所述共享数据存储器110、专用数据存储器或任何其他合适的数据存储器。
所述共享数据存储器110可以包括多个单独的存储体,用于存储待由所述处理器组102中的一个或多个处理单元以及所述可配置加速器104处理的数据。在所述计算架构100下,可以对所述可配置加速器104进行编程,以流方式对不同数量的操作数执行一系列算法。通过允许对所述共享数据存储器110中存储的数据进行直接内存访问(directmemory access,DMA),该架构可以提高所述处理器组102中一个或多个处理单元的性能。应当理解,在所述可配置加速器的上下文中使用短语“流方式”或“连续地”,表示能够不间断地使用DMA访问通道。
所述可配置加速器104可以执行的算法可以包括但不限于:涉及多个操作数的算术运算、对标量或矢量数据的运算、位操作运算、控制指令等。本领域技术人员还可以认识到,可以对所述可配置加速器104进行编程,通过菊花链式连接多个XE命令执行各种算法。编程完成后,所述可配置加速器104可以按指定顺序执行菊花链式连接的XE命令,无需处理器组102中的一个或多个处理器的参与,直到执行完整个XE命令序列。
上文介绍了本公开提供的所述计算架构100的整体结构。请参见图2,图2详细示出了所述计算架构100的示例性实现方式。如本示例所示,所述处理器组102可以包括一个或多个处理器202,如处理器202a-202n。所述处理器组102中的每个处理器202可以执行指令,以使所述可配置加速器104处理数据。如本示例所示,所述可配置加速器104可以包括TXDMA引擎204、RXDMA引擎210、XE 206和/或任何其他组件。
所述TXDMA引擎204和所述RXDMA引擎210可以具有用于DMA传输的给定数量的通道以及给定数量的请求行。如此处所述,DMA通道可以称为所述共享数据存储器110的一个存储体通过所述XE 206、所述TXDMA引擎204和所述RXDMA引擎210与所述共享数据内存110的另一不同存储体之间的连接。所述DMA通道可用于在所述共享数据存储器110的两个或多个存储体之间直接传输信息。所述可配置加速器104中的所述TXDMA引擎204可用于使用一个或多个通道与所述RXDMA引擎210连接。在各种实现方式中,通过所述DMA通道发送请求时,所述TXDMA引擎204可用于向所述RXDMA引擎210发送DMA传输请求。所述DMA传输请求可以包括RXDMA描述符信息,例如,目的地址、数据传输长度和/或任何其他信息等。所述TXDMA引擎204和所述RXDMA引擎210之间的通道建立之后,所述共享数据存储器110的一个或多个存储体中存储的数据可以以流方式处理,例如,由所述TXDMA引擎204加载,由所述XE 206处理,并由所述RXDMA引擎210存储结果。这样,所述可配置加速器104可以连续执行各种算法。
应当理解的是,尽管图2中示出了所述可配置加速器104包括一个TXDMA引擎204、一个RXDMA引擎210和一个XE 206,但所述可配置加速器104还可以包括不止一个TXDMA引擎204、不止一个RXDMA引擎210和/或不止一个XE 206。例如,图3A示出了所述可配置加速器104的一个示例,其中,所述可配置加速器104可以包括两个XE 206,即XE 206a和XE 206b。如图3A所示,本示例中所示的XE 206b可以连接到所述RXDMA引擎210。在本示例中,所述TXDMA引擎204可用于通过所述TXDMA引擎204和所述RXDMA引擎210之间的数据连接向所述RXDMA引擎210发送XE指令。所述XE 206b可以连续处理所述RXDMA引擎210接收到的数据。这样,所述可配置加速器104可以实现涉及多操作数的算术算法。
在一些示例中,图3A所示的所述TXDMA引擎204、所述RXDMA引擎210以及所述XE206a、206b可以形成XE块302。在一个实施例中,所述可配置加速器104中的多个XE块302可以进行菊花链式连接,如图3B所示。在所述可配置加速器104中进行菊花链式连接的XE块302的数量可以根据设计选择。通常,所述可配置加速器104中的XE块302的数量越多,所述可配置加速器104可以实现越高的灵活性。然而,另一方面,在所述可配置加速器104中增加XE块302的数量,可能会增加所述可配置加速器104的成本和大小。
仍然参考图2,所述TXDMA引擎204可用于在所述DMA通道打开之后从所述共享数据存储器110的存储体中连续读取(加载)数据。所述TXDMA引擎204读取的数据可以发送给所述XE 206执行。这样,所述XE 206可以操作连续的数据流,从而可以减少甚至消除流水线停顿。在一些实施例中,所述TXDMA引擎204可以包括一个或多个地址生成器(addressgenerator,AGU)216,所述地址生成器216可用于确保正确生成地址,以读取所需的操作数(数据)供所述XE 206执行。这样,操作数(数据)连续发送到所述XE 206,且所述XE 206获得的结果可以以流方式发送给所述RXDMA引擎210并存储到所述共享数据存储器110的所述存储体中。在某些实现方式中,最后一个XE的结果可以临时存储在缓存中(未示出),在必要时可以用作下一个数据集的操作数。
在一些示例中,所述RXDMA引擎210可以与XE 206b(例如图3A所示)连接。在这些示例中,所述RXDMA引擎210可用于,在将所述数据写入到所述共享数据存储器110的所述存储体中的位置之前,进一步通过所述XE(例如XE 206b)处理所述接收到的数据。在这些示例中,连接到所述RXDMA引擎210的所述XE 206b可用于将所述接收到的数据作为其操作数,并且可用于对所述执行的算术算法执行进一步计算。在各种实现方式中,所述RXDMA引擎210可以包括地址生成器,例如图2所示的AGU 218,以根据需要将所述接收到的数据写入到所述存储体的多个目的地址。
在各种实现方式中,所述AGU 216和所述AGU 218可用于分别确定所述TXDMA引擎204从所述存储器中获取数据的下一个位置或所述RXDMA引擎210将数据存入到所述存储器中的下一个位置。在这些实现方式中,所述AGU 216和所述AGU 218可以采用以下一个或多个输入参数:起始地址、结束地址、地址步长、地址偏移、地址模式和/或任何其他参数。在一些示例中,所述AGU 216和所述AGU 218可以在两种不同模式下工作:正常模式和块模式,以便支持信号处理应用所需的各种算法。
在正常模式下,所述AGU216和所述AGU218的输出可以从起始地址位置开始,以每个时钟周期按地址步长递增,直到达到结束地址。在本示例中,地址是指内存地址,更具体地,是指所述共享数据存储器110中的内存地址。在某些应用中,能够以“交织方式”(如0、512、1、513、2、514、......、511、023、1023等)生成输出的AGU非常有用,可以允许所述XE206从多个地址位置获取所需的操作数。
在块模式下,和正常模式一样,所述AGU 216和所述AGU 218可以在当前地址中增加地址步长值,计算下一个地址。对于序列0、512、1、513、2、514、......、511、1023,该地址步长设置为512。但是,在块模式下,当“当前地址+地址步长”的值大于结束地址(本示例中为1024)时,下一个地址可以“回绕”,如以下伪代码所示:
If(current_address+Address Step)>=End Address){
next_address=((current_address+Address Step)mod End Address)+AddressOffset
}
因此,作为示例,上述AGU生成的地址可以如下所示:
第三个地址:((512+512)mod 1024)+1=1
第四个地址:((1+512)mod 1024)+1=513
第五个地址:((513+512)mod 1024)+1=2
……直到
current_address+Address Offset<=End Address
综上,利用这两种操作模式,所述AGU 216和/或所述AGU 218可以生成获取XE 206操作数所需的各种地址序列。所述可配置加速器104中具有诸如AGU 216和AGU 218的组合,可以增加为XE 206所需操作数生成所需地址的灵活性。图8示出了地址生成器216和/或218的示例性实施方式800。TXDMA引擎或RXDMA引擎中可以包含的AGU数量根据设计选择,因此不作限制。大体上,如果XE要实现多种算法,其中一种算法涉及最大数量的操作数,则TXDMA引擎和/或RXDMA引擎中最好需要具有该数量的AGU。
仍然参考图2,所述寄存器组108可以包括一个或多个寄存器,如本示例中所示的寄存器212a-212n。所述寄存器组108中每个寄存器可以包括一个寄存器,所述处理器组102的一个处理单元202可以使用该寄存器存储XE命令,以使所述可配置加速器104中的所述TXDMA引擎204将数据从所述共享数据存储器110中的一个或多个位置传输到所述共享数据存储器110中的其他一个或多个位置,例如,从一个存储体传输到另一个存储体。所述每个寄存器可以由所述处理器组102的给定处理器用于存储XE命令,以使所述可配置加速器104中的所述XE 206执行所述XE命令。所述可配置加速器104可用于从所述寄存器组108的所述寄存器中读取所述XE命令并相应地执行所述XE命令。在一些实施例中,所述寄存器可用于只存储指向所述XE命令的指针,而所述XE命令存储在所述共享数据存储器110中。
所述共享数据存储器110可以包括多个存储体,如本示例中所示的存储体214a-214n。如本文所述,所述共享数据存储器110的存储体中可以存储待由所述可配置加速器104处理的数据。可以配置所述TXDMA引擎204和所述RXDMA引擎210,使得目的位置与源位置位于不同的存储体中。在一个实施例中,当所述可配置加速器104从所述共享数据存储器110的第一存储体加载数据,所述可配置加速器104中的所述XE 206处理数据并获得结果时,所述结果可以存储在不同于所述第一存储体的第二存储体中。
如本文所述,可以通过XE命令对所述可配置加速器104进行编程以实现不同的操作。一个给定的XE命令可以包括:一个或多个TXDMA描述符、一个或多个RXDMA描述符以及一个或多个XE指令。执行所述XE命令时,可以指示所述可配置加速器104通过其TXDMA引擎204向所述RXDMA引擎210发起DMA传输请求。所述DMA传输请求可以包括RXDMA描述符信息,如目的内存地址、数据传输长度或任何其他信息。所述RXDMA引擎210接收到所述DMA传输请求后,可以生成“独占写访问”请求,用于对与所述目的存储体相关联的仲裁器进行独占写访问。一旦授予所述独占写访问权限,所述RXDMA引擎210可以向所述TXDMA引擎204发送响应,指示通向所述目的存储体的“DMA通道”已经“打开(open)”。
与上述RXDMA引擎210类似,所述TXDMA引擎204接收到来自所述RXDMA引擎210的响应后,也可以请求并被授予对源存储体的“独占读访问”。所述TXDMA引擎204被授予独占读访问权限后,所述TXDMA引擎204可以按照所述XE命令设置的顺序以连续流方式从所述源存储体中读取源输入数据,以便所述XE 206执行所述XE指令。所述源输入数据的流顺序可以通过所述XE命令进行编程,并由AGU控制。
然后,可以将所述XE的结果发送给所述RXDMA引擎210。所述RXDMA引擎210可以将所述XE 206的结果按照所述RXDMA描述符编程的顺序写入到所述目的存储体中。当整个源输入数据流处理完成后,所述TXDMA引擎204释放对所述源存储体的独占读访问,并向所述RXDMA引擎210发送“关闭(close)”所述DMA通道的请求,从而使得所述RXDMA引擎210释放对所述目的存储体的独占写访问。
图4示出了对所述可配置加速器104进行编程以执行单操作数算法的一个示例。在图4的实施例中,处理器组102包括四个处理器402a-402d。如图4所示,XE命令412用于对所述可配置加速器104进行编程,其可以存储在寄存器组408a、408b、408c和/或408d中。每个XE命令412可以包括一个或多个TXDMA描述符、一个或多个RXDMA描述符以及一个或多个XE指令。一个给定的TXDMA描述符可以包括诸如所述共享数据存储器110中用于加载数据的源内存地址、数据长度和/或任何其他等信息。一个给定的RXDMA描述符可以包括诸如所述共享数据存储器110中用于存储所述可配置加速器104的结果的目的内存地址、数据传输长度和/或任何其他等信息。一个给定的XE指令可以包括指示XE 406实现特定算术算法的信息,例如指示XE如何处理TXDMA引擎404读取的数据(操作数)的信息。
在本示例中,所述可配置加速器104包括连接到相应XE 406a的TXDMA引擎404。所述TXDMA引擎404可以根据所述TX描述符连续加载数据(操作数),并将所述数据发送给所述XE 406a,以便所述XE 406a对所述数据执行指定的操作数算法,来生成结果。所述XE 406a可以根据所述XE指令对所述TXDMA引擎404读取的所述数据执行单操作数算法。
所述可配置加速器104可以执行的单操作数算法不限于此,还可以包括任何合适的算法,如移位等。在本示例中,待由所述可配置加速器104根据所述XE指令处理的单操作数是存储在所述共享数据存储器110的存储体0中的数据集0。如上所述,打开DMA通道后,所述TXDMA引擎404可以连续读取所述数据集0。然后,所述XE 406a可以根据所述XE指令对所述数据集0执行单操作数算法,该数据集0也可以由所述可配置加速器104通过系统总线106读取。
在本示例中,本实施例包括在所述TXDMA引擎404与RXDMA引擎410之间的数据连接422。所述数据连接422可以是所述TXDMA引擎404与RXDMA引擎410之间的任何数据载体、连接或通道。如图4所示,由所述XE 406a获得的所述结果可以从所述XE 406a传回给所述TXDMA引擎404,然后通过所述数据连接422发送给所述RXDMA引擎410。如图4所示,所述RXDMA引擎410可以将所述结果存储在存储体中,该存储体不同于存储所述操作数(数据)的存储体。在本示例中,所述数据集0存储在所述存储体0中,所述结果存储在存储体2中。
在另一实施例中(未示出),所述处理器组102中的所述处理器可以是处理器子系统的一部分,该处理器子系统通过一个或多个片上网络路由器与不同芯片中的其他处理器组102互连。在这些实现方式中,所述XE 406a可用于处理由所述TXDMA引擎404读取的数据,且可以将处理后的数据传输给另一处理器子系统。类似地,在接收端,接收处理器子系统可以通过XE 406b和所述RXDMA引擎410对接收到的数据流执行算术算法。
在一些示例中,本公开提供的所述可配置加速器104可以用于执行涉及多个操作数的算法,例如加、减、乘或类似算法。图5示出了本公开提供的所述可配置加速器104能够处理不同操作数的一个示例。在本示例中,所述操作数存储在所述共享数据存储器110的同一存储体中。如图5所示,为了实现此类算法,TX描述符可以使所述TXDMA引擎404将数据集0和数据集1加载到所述XE 406a中并执行多操作数算法的第一部分。例如,所述可配置加速器104待根据所述XE指令实现的算术算法为(数据集0+数据集1)×数据集2((dataset 0+dataset 1)x dataset 2)。所述TXDMA引擎404可以先将数据集0和数据集1从所述存储体0中加载出来并发送给所述XE 406a进行加运算。
然后,该加运算的结果,即数据集0+数据集1,可以通过所述TXDMA引擎404和所述数据连接422从所述XE 406a传输给所述RXDMA引擎410。所述TXDMA引擎404还可以从所述存储体0中加载所述数据集2,并通过所述数据连接422将所述数据集2发送给所述RXDMA引擎410。从所述TXDMA引擎404接收到所述加运算的结果和所述数据集2后,所述RXDMA引擎410可用于通过连接到所述RXDMA引擎410的所述XE 406b来处理所述加运算的结果和所述数据集2。即,所述XE 406b可以用于根据所述XE指令将所述加运算的结果与所述数据集2相乘。然后,所述RXDMA引擎410可以将所述XE 406b得到的结果存储到所述存储体2中。
在一些示例中,涉及多操作数算法的操作数可能不位于所述共享数据存储器110的同一存储体中。在这些示例中,可以使用一个或多个TXDMA描述符以及一个或多个RXDMA描述符将所有操作数加载并存储到单个存储体中,然后,所述XE 406通过直接内存访问存储体的方式连续对数据进行多操作数算术算法,如图6所示。如图6所示,多操作数算术算法的数据或操作数位于存储体0和存储体2中。在本示例中,如图6所示,读取TX描述符之后,所述TXDMA引擎404可用于从数据集0、数据集1和数据集2对应的存储体中分别加载数据集0、数据集1和数据集2,并通过所述数据连接422将数据集0、1和2发送给所述RXDMA引擎410,以便存储到单个存储体中,即所述存储体2。仍然如图6所示,所述RXDMA引擎410可用于以交织方式将所述数据集0、1和2存储到所述存储体2中。然后,所述TXDMA引擎404可以将存储在所述存储体2中的交织数据从所述存储体2中加载出来并发送给XE 406a以执行多操作数算法。然后,可以经由所述TXDMA引擎404通过所述数据连接422将所述执行的结果发送给所述RXDMA引擎410。然后,所述RXDMA引擎210可以将所述结果存储到除所述存储体2以外的存储体中。在本示例中,所述结果存储到存储体3中。
本文提供的各种实施例的示例并非对各实施例造成限制。本领域技术人员可以认识到,XE 406能够根据XE命令实现的算法可以包括用于操作两个或更多操作数的任何自定义算法。通常,由XE实现的函数f的输出y(i)具有来自数据集D0 to m–1的m个操作数,该函数可以表示为:
y(i)=f(D0(i),D1(i),…,Dm-1(i)),
i=0~N-1,其中,N表示数据集中的元素个数
图7示出了通过图1所示的可配置加速器执行多操作数算法的示例性方法700。对于本领域普通技术人员而言,显而易见的是,可以在不脱离本公开的主旨的情况下对该方法进行修改。
在步骤702中,可以将第一数据从共享数据存储器的第一存储体传输到所述共享数据存储器的目的存储体,其中,目的存储体不同于第一存储体。在各种实现方式中,步骤702中涉及的操作可以通过与本文中描述的所述TXDMA引擎204和所述RXDMA引擎210相似的电路执行。
在步骤704中,可以将第二数据从所述共享数据存储器的第二存储体传输到所述目的存储体。步骤704中涉及的操作可以通过与步骤702类似的方式执行。
在步骤706中,可以将第三数据从所述共享数据存储器的存储体传输到所述目的存储体。步骤706中涉及的操作可以通过与步骤702类似的方式执行。
在步骤708中,可以将所述第一、第二和第三数据以交织方式存储在所述目的存储体中。交织存储数据的示例如图6所示。本领域普通技术人员应当理解,数据可以以任何方式存储,具体取决于由所述XE执行所述算法所需的顺序。
在步骤710中,可以将交织后的第一、第二和第三数据作为待由所述XE执行的算法中的操作数,从所述目的存储体传输到所述XE。步骤710中涉及的所述XE可以与本文中所描述的所述XE 206a相同或基本相似。在各种实现方式中,步骤710中涉及的操作可以由TXDMA引擎执行,所述TXDMA引擎与本文中所描述的所述TXDMA引擎204相同或基本相似。
在步骤712中,所述XE对所述交织后的第一、第二和第三数据执行算法后,可以将结果传输到所述共享数据存储器的结果存储体中。步骤712中涉及的操作可以由RXDMA引擎执行,所述RXDMA引擎与本文中所描述的所述RXDMA引擎210相同或基本相似。
本领域技术人员进一步了解到,结合本文中所公开的实施例所描述的各种说明性逻辑块、配置、模块、电路和算法步骤可以通过电子硬件、计算机软件或两者的组合来实现。本领域技术人员可以针对每一种特定应用通过不同的方式实现所描述的功能,但是不应认为这种实现决策脱离了本公开的范围。
结合本文中所公开的实施例所描述的方法或算法的步骤可以直接体现为硬件、由处理器执行的软件模块或者两者的组合。软件模块可以位于随机存取存储器(randomaccess memory,RAM)、闪存、只读存储器(read-only memory,ROM)、可编程只读存储器(programmable read-only memory,PROM)、可擦除可编程只读存储器(erasableprogrammable read-only memory,EPROM)、电可擦除可编程只读存储器(electricallyerasable programmable read-only memory,EEPROM)、寄存器、硬盘、可移动硬盘、光盘只读存储器(compact disk read-only memory,CD-ROM)或本领域已知的任何其他形式的存储介质。一种示例性的存储介质耦合到所述处理器,使得所述处理器可以从所述存储介质读取信息,并将信息写入所述存储介质。可选地,所述存储介质还可以集成到所述处理器中。所述处理器和所述存储介质可以位于专用集成电路(application-specificintegrated circuit,ASIC)中。所述ASIC可以位于计算设备或用户终端中。可选地,所述处理器和所述存储介质可以作为分立组件,位于计算设备或用户终端中。
前述公开实施例的描述旨在使本领域技术人员能够实施或使用所述公开的实施例。显然,本领域的技术人员很容易对这些实施例进行各种修改,并且在不脱离本公开的精神或范围的情况下,本文中定义的通用原则还可以应用于其他实施例。因此,本公开不限于本文中所示出的实施例,其尽可能广泛的范围应与所附权利要求书所定义的原则和新颖特征保持一致。
Claims (26)
1.一种用于实现一种或多种算法的可配置加速器,其特征在于,所述可配置加速器包括:
至少一个发送直接内存访问(direct memory access,DMA)引擎,用于根据存储在操作连接到所述可配置加速器的寄存器中的传输指令从共享数据存储器中连续加载数据,所述传输指令使得所述可配置加速器发起访问请求,以访问所述共享数据存储器;所述至少一个发送DMA引擎包括第一发送DMA引擎;
至少一个执行引擎,与所述发送DMA引擎操作连接,所述执行引擎用于接收执行指令并实现一种或多种算法,且所述执行引擎用于根据执行指令连续处理所述第一发送DMA引擎加载的数据,生成结果数据,所述至少一个执行引擎包括第一执行引擎,所述第一执行引擎操作连接到所述第一发送DMA引擎;以及
至少一个接收DMA引擎,与所述发送DMA引擎和所述执行引擎操作连接,所述接收DMA引擎用于接收所述第一执行引擎提供的所述结果数据,并将所述结果数据连续存储到所述共享数据存储器中,所述至少一个接收DMA引擎包括第一接收DMA引擎,所述第一接收DMA引擎操作连接到所述第一发送DMA引擎。
2.根据权利要求1所述的可配置加速器,其特征在于,所述共享数据存储器包括多个存储体,所述多个存储体包括第一存储体和第二存储体,所述第一存储体与所述第二存储体分离且不相同;
所述发送DMA引擎连续加载的所述数据位于所述第一存储体中;
所述结果数据由所述接收DMA引擎存储到所述第二存储体中。
3.根据权利要求1或2所述的可配置加速器,其特征在于,所述数据包括由所述执行引擎实现的算术算法的第一操作数和第二操作数,所述第一操作数和所述第二操作数位于所述共享数据存储器的第一存储体中;
所述发送DMA引擎用于从所述第一存储体中连续加载所述第一和第二操作数,并将加载的所述第一和第二操作数发送给所述执行引擎;
所述执行引擎用于通过所述第一和第二操作数实现所述算术算法,并向所述发送DMA引擎返回所述算术算法的结果数据;
所述接收DMA引擎用于从所述发送DMA引擎接收所述算术算法的所述结果,并将所述算术算法的结果存储到所述共享数据存储器的第二存储体中,其中,所述第二存储体与所述第一存储体分离且不相同。
4.根据权利要求1-3中任意一项所述的可配置加速器,其特征在于,所述至少一个执行引擎还包括与第一发送DMA引擎操作连接的第一执行引擎和第二执行引擎;其中
所述第二执行引擎用于从所述第一发送DMA引擎连续接收数据,处理所述数据,产生结果数据;
所述接收DMA引擎用于将所述第二执行引擎处理后的所述结果数据存储到所述共享数据存储器中。
5.根据权利要求4所述的可配置加速器,其特征在于,所述数据包括由所述第一和第二执行引擎实现的算术算法的第一操作数、第二操作数和第三操作数,其中,所述第一操作数、所述第二操作数和所述第三操作数位于所述共享数据存储器的第一存储体中;
所述第一发送DMA引擎用于从所述第一存储体连续加载所述第一和第二操作数,并将加载的所述第一和第二操作数发送给所述第一执行引擎;
所述第一执行引擎用于处理所述第一和第二操作数,并将所述处理的结果数据提供给所述第一发送DMA引擎;
所述第一接收DMA引擎用于从所述第一发送DMA引擎接收处理所述第一和第二操作数的所述结果以及所述第三操作数,并将处理所述第一和第二操作数的所述结果以及所述第三操作数发送给所述第二执行引擎;
所述第二执行引擎用于从所述第一接收DMA引擎接收处理所述第一和第二操作数的所述结果以及所述第三操作数,处理处理所述第一和第二操作数的所述结果以及所述第三操作数,得到最终结果,并将所述最终结果发送给所述第一接收DMA引擎;
所述第一接收DMA引擎还用于将所述最终结果连续存储到所述共享数据存储器的第二存储体中,其中,所述第二存储体与所述第一存储体分离且不相同。
6.根据权利要求4所述的可配置加速器,其特征在于,所述数据包括由所述第一和第二执行引擎实现的算术算法的第一操作数、第二操作数和第三操作数,其中,所述第一操作数和所述第二操作数位于所述共享数据存储器的第一存储体中,所述第三操作数位于所述共享数据存储器的第二存储体中;
所述第一发送DMA引擎用于从所述第一存储体连续加载所述第一和第二操作数,从所述第二存储体加载所述第三操作数,并将加载后的所述第一、第二和第三操作数发送给所述接收DMA引擎;
所述接收DMA引擎用于从所述第一发送DMA引擎连续接收所述第一、第二和第三操作数,并以交织方式将所述第一、第二和第三操作数存储到所述共享数据存储器的第三存储体中,其中,所述第一,第二和第三存储体相互分离,互不相同。
7.根据权利要求1-6中任意一项所述的可配置加速器,其特征在于,所述传输指令或所述执行指令是由与寄存器操作连接的处理器生成的。
8.根据权利要求1-6中任意一项所述的可配置加速器,其特征在于,所述传输指令和所述执行指令是由与寄存器操作连接的处理器组的一个或多个处理器生成的。
9.根据权利要求1-8中任意一项所述的可配置加速器,其特征在于,所述发送DMA引擎与所述接收DMA引擎通过位于所述可配置加速器外的数据连接进行操作连接。
10.根据权利要求1-9中任意一项所述的可配置加速器,其特征在于,所述发送DMA引擎与所述接收DMA引擎通过位于所述可配置加速器内的一个或多个DMA通道进行操作连接。
11.根据权利要求1-10中任意一项所述的可配置加速器,其特征在于,所述至少一个发送DMA引擎还包括第一和第二发送DMA引擎,所述至少一个执行引擎还包括第一和第二执行引擎,所述至少一个接收DMA引擎还包括第一和第二接收DMA引擎,其中,所述第一发送DMA引擎、所述第一执行引擎和所述第一接收DMA引擎构成第一处理组;
所述可配置加速器还包括第二处理组,其包括所述第二发送DMA引擎、所述第二执行引擎和所述第二接收DMA引擎,其中,所述第二处理组与所述第一处理组分离且不相同。
12.根据权利要求1-11中任意一项所述的可配置加速器,其特征在于,所述执行引擎实现的一种或多种算法包括加、减、乘、除、跳位和移位中的至少一种。
13.根据权利要求1-11中任意一项所述的可配置加速器,其特征在于,所述执行引擎实现的一种或多种算法包括单操作数算法。
14.根据权利要求1-11中任意一项所述的可配置加速器,其特征在于,所述执行引擎实现的一种或多种算法包括多操作数算法。
15.一种通过可配置加速器实现一种或多种算法的方法,其特征在于,所述可配置加速器包括:
一个或多个发送直接内存访问(transmit direct memory access,DMA)引擎,用于根据寄存器存储的传输指令从共享数据存储器连续加载数据,其中,所述寄存器操作连接到所述可配置加速器,所述传输指令使得所述可配置加速器发起访问请求,以访问所述共享数据存储器;所述一个或多个发送DMA引擎包括第一发送DMA引擎;
一个或多个执行引擎,用于实现所述一种或多种算法,以根据所述寄存器存储的执行指令处理所述第一发送DMA引擎加载的所述数据,其中,所述执行引擎用于向所述第一发送DMA引擎提供结果数据,所述一个或多个执行引擎包括第一执行引擎,所述第一执行引擎操作连接到所述第一发送DMA引擎;
一个或多个接收DMA引擎,用于将结果数据存储到所述共享数据存储器中,所述一个或多个接收DMA引擎包括第一接收DMA引擎,所述第一接收DMA引擎操作连接到所述第一发送DMA引擎;
所述方法包括:
所述第一执行引擎根据所述寄存器存储的执行指令连续处理所述第一发送DMA引擎加载的所述数据,并将所述结果数据提供给所述第一发送DMA引擎;
所述第一接收DMA引擎从所述第一发送DMA引擎接收所述结果数据,并将所述结果数据存储到所述共享数据存储器中。
16.根据权利要求15所述的方法,其特征在于,所述共享数据存储器包括多个存储体,所述多个存储体包括第一存储体和第二存储体,所述第一存储体与所述第二存储体分离且不相同;
所述第一发送DMA引擎连续加载的所述数据位于所述第一存储体中;
所述结果数据由所述第一接收DMA引擎存储到所述第二存储体中。
17.根据权利要求15或16所述的方法,其特征在于,所述数据包括由所述第一执行引擎实现的算术算法的第一操作数和第二操作数,其中,所述第一操作数和所述第二操作数位于所述共享数据存储器的第一存储体中,所述第一发送DMA引擎从所述第一存储体加载所述第一和第二操作数;所述方法还包括:
所述第一发送DMA引擎向所述第一执行引擎连续发送所述第一和第二操作数;
所述第一执行引擎通过所述第一和第二操作数实现所述算术算法,并将所述算术算法的结果提供给所述第一发送DMA引擎;
所述第一接收DMA引擎将所述算术算法的所述结果存储到所述共享数据存储器的第二存储体中,其中,所述第二存储体与所述第一存储体分离且不相同。
18.根据权利要求15-17中任意一项所述的方法,其特征在于,所述一个或多个执行引擎还包括与所述第一接收DMA引擎操作连接的第二执行引擎;所述方法还包括:
所述第二执行引擎从所述第一接收DMA引擎连续接收所述数据,处理所述数据并提供结果数据;
所述第一接收DMA引擎将所述第二执行引擎处理后的所述结果数据存储到所述共享数据存储器中。
19.根据权利要求18所述的方法,其特征在于,所述数据包括由所述第一和第二执行引擎实现的算术算法的第一操作数、第二操作数和第三操作数,其中,所述第一操作数、第二操作数和第三操作数位于所述共享数据存储器的第一存储体中;所述方法包括:
所述第一发送DMA引擎从所述第一存储体连续加载所述第一和第二操作数,并将加载的所述第一和第二操作数发送给所述第一执行引擎;
所述第一执行引擎处理所述第一和第二操作数,并向所述第一发送DMA引擎提供处理所述第一和第二操作数的结果数据;
所述第一接收DMA引擎从所述第一发送DMA引擎接收处理所述第一和第二操作数的所述结果数据以及所述第三操作数,并向所述第二执行引擎提供处理所述第一和第二操作数的所述结果以及所述第三操作数;
所述第二执行引擎从所述第一接收DMA引擎接收处理所述第一和第二操作数的所述结果以及所述第三操作数,处理处理所述第一和第二操作数的所述结果数据以及所述第三操作数,得到最终结果数据,并将所述最终结果数据发送给所述第一接收DMA引擎;
所述第一接收DMA引擎将所述最终结果数据存储到所述共享数据存储器的第二存储体中,其中,所述第二存储体与所述第一存储体分离且不相同。
20.根据权利要求18所述的方法,其特征在于,所述数据包括由所述第一和第二执行引擎实现的算术算法的第一操作数、第二操作数和第三操作数,其中,所述第一操作数和所述第二操作数位于所述共享数据存储器的第一存储体中,所述第三操作数位于所述共享数据存储器的第二存储体中;所述方法包括:
所述第一发送DMA引擎从所述第一存储体连续加载所述第一和第二操作数,从所述第二存储体加载所述第三操作数,并将加载的所述第一、第二和第三操作数发送给所述第一接收DMA引擎;
所述第一接收DMA引擎从所述第一发送DMA引擎接收所述第一、第二和第三操作数,并以交织方式将所述第一、第二和第三操作数存储到所述共享数据存储器的第三存储体中,其中,所述第一、第二和第三存储体相互分离,互不相同。
21.根据权利要求15-20中任意一项所述的方法,其特征在于,所述发送DMA引擎与所述接收DMA引擎通过位于所述可配置加速器外的数据连接进行操作连接。
22.根据权利要求15-21中任意一项所述的方法,其特征在于,所述发送DMA引擎与所述接收DMA引擎通过位于所述可配置加速器内的一个或多个DMA通道进行操作连接。
23.根据权利要求15-22中任意一项所述的方法,其特征在于,所述至少一个发送DMA引擎还包括第一和第二发送DMA引擎,所述至少一个执行引擎还包括第一和第二执行引擎,所述至少一个接收DMA引擎还包括第一和第二接收DMA引擎,其中,所述第一发送DMA引擎、所述第一执行引擎和所述第一接收DMA引擎构成第一处理组;
所述可配置加速器还包括第二处理组,包括所述第二发送DMA引擎、所述第二执行引擎和所述第二接收DMA引擎,其中,所述第二处理组与所述第一处理组分离且不相同。
24.根据权利要求15-23中任意一项所述的方法,其特征在于,所述执行引擎实现的一种或多种算法包括加、减、乘、除、跳位和移位中的至少一种。
25.根据权利要求15-23中任意一项所述的方法,其特征在于,所述执行引擎实现的一种或多种算法包括单操作数算法。
26.根据权利要求15-23中任意一项所述的方法,其特征在于,所述执行引擎实现的一种或多种算法包括多操作数算法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/727,630 US10303630B2 (en) | 2017-10-08 | 2017-10-08 | Configurable hardware accelerators |
US15/727,630 | 2017-10-08 | ||
PCT/CN2018/109351 WO2019068267A1 (en) | 2017-10-08 | 2018-10-08 | CONFIGURABLE HARDWARE ACCELERATORS |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111183418A CN111183418A (zh) | 2020-05-19 |
CN111183418B true CN111183418B (zh) | 2021-07-20 |
Family
ID=65993312
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880062917.0A Active CN111183418B (zh) | 2017-10-08 | 2018-10-08 | 可配置硬件加速器 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10303630B2 (zh) |
EP (1) | EP3685275B1 (zh) |
CN (1) | CN111183418B (zh) |
ES (1) | ES2909742T3 (zh) |
WO (1) | WO2019068267A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102382186B1 (ko) * | 2018-10-10 | 2022-04-05 | 삼성전자주식회사 | 딥 러닝을 위한 고성능 컴퓨팅 시스템 |
KR102678472B1 (ko) | 2019-07-17 | 2024-06-27 | 삼성전자주식회사 | 메모리 컨트롤러 및 이를 포함하는 저장 장치 |
US11893419B2 (en) * | 2020-08-28 | 2024-02-06 | Apple Inc. | Hardware accelerators using shared interface registers |
US12045660B2 (en) * | 2020-09-25 | 2024-07-23 | Huawei Technologies Co., Ltd. | Method and apparatus for a configurable hardware accelerator |
US11972117B2 (en) * | 2021-07-19 | 2024-04-30 | EMC IP Holding Company LLC | Selecting surviving storage node based on environmental conditions |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5790740A (en) * | 1980-11-26 | 1982-06-05 | Nec Corp | Information transfer device |
US6418489B1 (en) * | 1999-10-25 | 2002-07-09 | Motorola, Inc. | Direct memory access controller and method therefor |
CN102033818A (zh) * | 2009-09-25 | 2011-04-27 | 英特尔公司 | 媒体缓冲和流水线式处理组件 |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5151895A (en) * | 1990-06-29 | 1992-09-29 | Digital Equipment Corporation | Terminal server architecture |
US6161208A (en) * | 1994-05-06 | 2000-12-12 | International Business Machines Corporation | Storage subsystem including an error correcting cache and means for performing memory to memory transfers |
US5727233A (en) * | 1994-08-02 | 1998-03-10 | Apple Computer, Inc. | Byte-mode and burst-mode data transfer mechanism for a high-speed serial interface |
US5778175A (en) * | 1995-12-22 | 1998-07-07 | Digital Equipment Corporation | Method implemented by a computer network adapter for autonomously adjusting a transmit commencement threshold valve upon concurrence of an underflow condition |
US5809334A (en) * | 1996-09-24 | 1998-09-15 | Allen-Bradley Company, Llc | Receive packet pre-parsing by a DMA controller |
US5958024A (en) * | 1997-08-29 | 1999-09-28 | Advanced Micro Devices, Inc. | System having a receive data register for storing at least nine data bits of frame and status bits indicating the status of asynchronous serial receiver |
US6425021B1 (en) * | 1998-11-16 | 2002-07-23 | Lsi Logic Corporation | System for transferring data packets of different context utilizing single interface and concurrently processing data packets of different contexts |
US6385671B1 (en) * | 1999-03-29 | 2002-05-07 | Intel Corporation | Method/apparatus for flushing DMA transmit packet in FIFO when self-ID code generated by counter after bus reset is different than FIFO message self-ID field |
US6581112B1 (en) * | 2000-03-31 | 2003-06-17 | Emc Corporation | Direct memory access (DMA) receiver |
US7124376B2 (en) * | 2000-05-02 | 2006-10-17 | Palmchip Corporation | Design tool for systems-on-a-chip |
US6681346B2 (en) * | 2000-05-11 | 2004-01-20 | Goodrich Corporation | Digital processing system including a DMA controller operating in the virtual address domain and a method for operating the same |
EP2804106A1 (en) * | 2000-09-06 | 2014-11-19 | Ericsson Modems SA | Inter-processor communication system |
US6631433B1 (en) * | 2000-09-27 | 2003-10-07 | Emc Corporation | Bus arbiter for a data storage system |
US20040015617A1 (en) * | 2001-01-25 | 2004-01-22 | Sangha Onkar S. | Flexible network interfaces and flexible data clocking |
DE10211054A1 (de) * | 2002-03-13 | 2003-10-09 | Advanced Micro Devices Inc | USB-Hostcontroller |
DE10213839B4 (de) * | 2002-03-27 | 2016-11-03 | Advanced Micro Devices, Inc. | DMA-Mechanismus für einen Hochgeschwindigkeitspaketbus |
EP1535169B1 (en) * | 2002-07-23 | 2012-01-25 | ST-Ericsson SA | Improved inter-processor communication system for communication between processors |
DE102004006767B4 (de) | 2004-02-11 | 2011-06-30 | Infineon Technologies AG, 81669 | Verfahren und Vorrichtung zum Transport von Datenabschnitten mittels eines DMA-Controllers |
US7561571B1 (en) * | 2004-02-13 | 2009-07-14 | Habanero Holdings, Inc. | Fabric address and sub-address resolution in fabric-backplane enterprise servers |
US7668165B2 (en) * | 2004-03-31 | 2010-02-23 | Intel Corporation | Hardware-based multi-threading for packet processing |
US7225278B1 (en) * | 2004-04-15 | 2007-05-29 | Xilinx, Inc. | Method and apparatus for controlling direct access to memory circuitry |
US7386642B2 (en) * | 2005-01-28 | 2008-06-10 | Sony Computer Entertainment Inc. | IO direct memory access system and method |
US7716577B2 (en) | 2005-11-14 | 2010-05-11 | Oracle America, Inc. | Method and apparatus for hardware XML acceleration |
US8069279B2 (en) * | 2007-03-05 | 2011-11-29 | Apple Inc. | Data flow control within and between DMA channels |
CN102662889B (zh) | 2012-04-24 | 2016-12-14 | 华为技术有限公司 | 中断处理方法、中断控制器及处理器 |
US9563586B2 (en) * | 2013-04-11 | 2017-02-07 | Apple Inc. | Shims for processor interface |
CN103473188B (zh) | 2013-09-12 | 2017-04-26 | 华为技术有限公司 | Dsp处理器与外部存储器的数据交互方法、装置及系统 |
US10037222B2 (en) | 2013-09-24 | 2018-07-31 | University Of Ottawa | Virtualization of hardware accelerator allowing simultaneous reading and writing |
-
2017
- 2017-10-08 US US15/727,630 patent/US10303630B2/en active Active
-
2018
- 2018-10-08 WO PCT/CN2018/109351 patent/WO2019068267A1/en unknown
- 2018-10-08 ES ES18863982T patent/ES2909742T3/es active Active
- 2018-10-08 EP EP18863982.7A patent/EP3685275B1/en active Active
- 2018-10-08 CN CN201880062917.0A patent/CN111183418B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5790740A (en) * | 1980-11-26 | 1982-06-05 | Nec Corp | Information transfer device |
US6418489B1 (en) * | 1999-10-25 | 2002-07-09 | Motorola, Inc. | Direct memory access controller and method therefor |
CN102033818A (zh) * | 2009-09-25 | 2011-04-27 | 英特尔公司 | 媒体缓冲和流水线式处理组件 |
Also Published As
Publication number | Publication date |
---|---|
EP3685275A4 (en) | 2020-10-21 |
WO2019068267A1 (en) | 2019-04-11 |
EP3685275A1 (en) | 2020-07-29 |
US10303630B2 (en) | 2019-05-28 |
US20190108152A1 (en) | 2019-04-11 |
CN111183418A (zh) | 2020-05-19 |
EP3685275B1 (en) | 2022-02-23 |
ES2909742T3 (es) | 2022-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111183418B (zh) | 可配置硬件加速器 | |
US7873811B1 (en) | Polymorphous computing fabric | |
WO2011083152A1 (en) | Hardware for performing arithmetic operations | |
JPH11296493A (ja) | デ―タ処理システム用再構成可能コプロセッサ | |
CN110991619A (zh) | 神经网络处理器、芯片和电子设备 | |
EP3340037A1 (en) | A data processing apparatus and method for controlling vector memory accesses | |
CN111047036A (zh) | 神经网络处理器、芯片和电子设备 | |
EP3559803B1 (en) | Vector generating instruction | |
EP2691850B1 (en) | Integrated circuit device and methods of performing bit manipulation therefor | |
CN108269601B (zh) | 非易失性存储器中的处理器 | |
CN111158757B (zh) | 并行存取装置和方法以及芯片 | |
CN114945984A (zh) | 扩展存储器通信 | |
WO2020093968A1 (zh) | 卷积处理引擎及控制方法和相应的卷积神经网络加速器 | |
WO2022063269A1 (en) | Method and apparatus for configurable hardware accelerator | |
CN111047035A (zh) | 神经网络处理器、芯片和电子设备 | |
US11443014B1 (en) | Sparse matrix multiplier in hardware and a reconfigurable data processor including same | |
JP2009507292A (ja) | 分離したシリアルモジュールを備えるプロセッサアレイ | |
EP3030963B1 (en) | Flexible configuration hardware streaming unit | |
JP2008102599A (ja) | プロセッサ | |
US11392667B2 (en) | Systems and methods for an intelligent mapping of neural network weights and input data to an array of processing cores of an integrated circuit | |
US11755806B2 (en) | Systems and methods for executing a programmable finite state machine that accelerates fetchless computations and operations of an array of processing cores of an integrated circuit | |
JP2021064270A (ja) | 半導体装置およびその制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |