CN110214309A - 可重新配置专用计算机加速器 - Google Patents

可重新配置专用计算机加速器 Download PDF

Info

Publication number
CN110214309A
CN110214309A CN201780084864.8A CN201780084864A CN110214309A CN 110214309 A CN110214309 A CN 110214309A CN 201780084864 A CN201780084864 A CN 201780084864A CN 110214309 A CN110214309 A CN 110214309A
Authority
CN
China
Prior art keywords
data
reconfigurable
functional unit
microcontroller
switch
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.)
Granted
Application number
CN201780084864.8A
Other languages
English (en)
Other versions
CN110214309B (zh
Inventor
卡西克扬·桑卡拉林甘
安东尼·诺瓦茨基
维奈·甘加达尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wisconsin Alumni Research Foundation
Original Assignee
Wisconsin Alumni Research Foundation
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wisconsin Alumni Research Foundation filed Critical Wisconsin Alumni Research Foundation
Publication of CN110214309A publication Critical patent/CN110214309A/zh
Application granted granted Critical
Publication of CN110214309B publication Critical patent/CN110214309B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1689Synchronisation and timing concerns
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • G06F15/7885Runtime interface, e.g. data exchange, runtime control
    • G06F15/7889Reconfigurable logic implemented as a co-processor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/82Architectures of general purpose stored program computers data or demand driven
    • G06F15/825Dataflow computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • G06F9/3455Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4494Execution paradigms, e.g. implementations of programming paradigms data driven
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)

Abstract

用于计算机的可重新配置硬件加速器将高速数据流处理器与流处理器相结合,高速数据流处理器具有在可编程开关的网络中快速重新配置的可编程功能单元,流处理器可以在接收简单的流指令之后以预定义访问模式自主访问存储器。结果是可以利用与易被加速的许多专用程序相关联的并行性的紧凑高速的处理器。

Description

可重新配置专用计算机加速器
关于联邦政府资助研究或开发的声明
相关申请的交叉引用
本申请要求于2017年1月26日提交的美国非临时申请15/416,670的权益,并且通过引用将其并入本文。
背景技术
本发明涉及电子计算机架构,并且特别地涉及可以针对不同应用重新配置的专用计算机加速器。
对提高计算机处理速度和提高能量效率的需求推动了数据并行架构的发展,例如,对于许多应用而言可以取代通用冯诺依曼体系结构(VonNeuman)型处理器的通用图形处理单元(GPGPU)机器以及单指令多数据(SIMD)机器。对于要求甚至更高的应用例如机器学习和计算机视觉,可以用专用加速器(例如,用于数据中心的微软弹射器FPGA加速器,以及用于分布式机器学习的谷歌张量处理单元)取代这些通用数据并行架构。这些专用加速器通常与通用高性能冯诺依曼体系结构处理器配合使用,例如,以实现包括乱序执行和推测执行的高级架构特征。
在这些专用加速器中使用的专用硬件不利地影响新处理算法的实现。这是因为在加速器的专用硬件上执行的新算法通常需要对新架构进行昂贵的重新设计和验证。另外,专用加速器的狭窄功能限制了专用加速器在必须实现多种应用的计算机系统中的价值。最后,就这样的专用加速器针对利基市场而言,专用加速器可能不会引起诸如促进这些架构的分析和改进的学术兴趣。
发明内容
本发明人已认识到,尽管专用加速器多种多样,但是专用加速器执行的软件存在某些共同特征。具体地,由专用加速器执行的软件往往具有简单的存储器和重用模式以及长阶段的高计算强度。这又表明,通过将可以自动处理简单存储器访问模式的流处理器与用于处理计算强度的快速有效的处理器结合,可以构造“通用”专用加速器。该后一处理要求可以通过适于快速重新配置的数据流处理器来满足。其结果是与专用加速器一样好同时避免了与专用硬件相关联的缺点的通用加速器。
因此,在一个实施方式中,本发明提供了一种可重新配置加速器架构,包括:(1)微控制器,其适于接收指令和数据以控制加速器的其他部件;(2)流处理器,其从微控制器接收指令,以根据选择的一组预定义存储器访问模式自主读取存储在存储器中的多个输入值,并且根据选择的一组预定义存储器访问模式将多个输出值从加速器自主写入存储器;以及(3)可重新配置数据流处理器,其由微控制器配置以接收多个输入值以基于该配置提供输出值。
因此,本发明的至少一个实施方式的特征是在可以实现许多专用加速器的功能的可重新配置加速器中实现固定专用加速器的公共功能。当前模拟表明,本发明的架构可以匹配专用加速器的性能,在功耗和电路面积可容许地小幅增加的情况下提供通用性的优点。
可重新配置数据流处理器可以在接收输入值的输入端口与提供输出值的输出端口之间的网格中提供与功能单元互连的一组可编程开关,功能单元提供可选择的多个算术功能,网格提供由开关编程确定的从输入端口通过功能单元到输出端口的路径。
因此,本发明的至少一个实施方式的特征是提供高速数据流处理器,其速度与固定用途加速器的速度相当,并且还可以例如通过使用设置开关和配置功能单元的映像文件快速地重新再编程。
网格可以提供开关与功能单元之间的直接互连以及开关之间的直接互连。
因此,本发明的至少一个实施方式的特征是提供通用网格,其可以与功能单元互连以及绕过功能单元。
网格可以在开关之间以及开关与功能单元之间提供至少32个并行数据线,例如多达64个并行数据线。
因此,本发明的至少一个实施方式的特征是提供与当前处理架构一致的大数据字的快速通信。
功能单元可以提供对算术和逻辑运算的不同选择。
因此,本发明的至少一个实施方式的特征是允许使用异构功能单元,允许通用性与芯片面积之间的灵活权衡。
功能单元可以并行操作。
因此,本发明的至少一个实施方式的特征是在计算引擎中提供高度并行性。
功能单元之间的数据流可以由开关设置来确定,并且数据流处理器还可以包括时钟,允许针对每个时钟周期将数据在开关之间移动一个开关或者在功能单元之间移动一个功能单元。
因此,本发明的至少一个实施方式的特征是提供时钟功能,以允许通过开关设置来协调多级计算的操作数,开关设置提供对其通过网格的路径的适当选择。
微控制器可以通过加载定义开关的编程以及对功能单元的功能的选择的映像文件来控制可重新配置数据流处理器。
因此,本发明的至少一个实施方式的特征是在不需要编译的情况下提供数据流处理器的配置的极快速改变。
微控制器可以是冯诺依曼体系结构单发射按序核心。
因此,本发明的至少一个实施方式的特征是提供用于协调加速器的元件的灵活的电路,其需要低功率和小芯片面积,并且在一些情况下,可以用于执行比数据流处理器可能执行的指令集更大的指令集。
微控制器还可以适于在不涉及流处理器或者可重新配置数据流处理器的情况下,从主处理器接收指令和数据,以响应于指令和数据执行逻辑和算术指令,以将数据返回到主处理器。
因此,本发明的至少一个实施方式的特征是允许在没有数据流处理器的情况下针对某些任务使用微控制器。
流处理器可以提供预定义存储器访问模式,包括在两个存储器地址之间的连续地址的线性访问模式以及在两个存储器地址之间的规则间隔不连续地址的跨步访问模式。
因此,本发明的至少一个实施方式的特征是提供通用于专用加速器的存储器访问模式。
流处理器可以使用利用预定义存储器访问模式获得的数据作为要用作向可重新配置数据流处理器提供的多个输入值的数据的地址。
因此,本发明的至少一个实施方式的特征是提供实现指针类型功能的间接寻址。
在由微控制器编程之后,流处理器可以相对于微控制器自主操作。
因此,本发明的至少一个实施方式的特征是可以利用专用状态机或允许数据流处理器有效地仅集中于计算的类似设计提供极快存储器访问操作。
可重新配置数据流处理器可以包括输入和输出缓冲器,以进行解耦的访问和执行操作,允许相对于流处理器异步地操作。
因此,本发明的至少一个实施方式的特征是允许存储器操作与计算之间的解耦,以获得改善的并行性。
微控制器可以向流处理器发出定义数据源、数据目的地和数据访问模式的流命令。
因此,本发明的至少一个实施方式的特征是提供用于流处理的极简单的指令集。
微控制器还可以向流处理器发出栅障命令,定义栅障命令之前和之后的存储器访问的必要完成顺序。
因此,本发明的至少一个实施方式的特征是提供用于在必要时限制并行性的简单机制,以避免竞争条件或数据依赖性问题。
计算机架构还可以包括与流处理器通信的暂存存储器,以在流处理器控制下从存储器读取数据或将数据写入存储器。
因此,本发明的至少一个实施方式的特征是消除不必要的存储器访问以提高执行速度。
计算机架构可以包括由暂存存储器和可重新配置数据流处理器共享的单个存储器接口。
因此,本发明的至少一个实施方式的特征是简化加速器的基本部件,同时仍允许各数据流处理器之间与存储器的高带宽通信。
微控制器可以响应于预定指令以提供关于可重新配置数据流处理器中的功能单元的数目和类型的信息。
这些特定目标和优点可以适用于落入权利要求范围内的仅一些实施方式,并且因此不限定本发明的范围。
附图说明
图1是采用本发明的可重新配置专用加速器并且提供包括多个流处理器和数据流处理器的加速器的放大细节的处理器系统的框图;
图2是示出轻量核与数据流网格、暂存存储器和流处理器的组合的单个流处理器和数据流处理器的详细框图;
图3是示出简单的数据流图的实现方式的数据流网格的详细框图;
图4是示出使用图3的数据流图的数据流处理的时序图,例如提供高度并行性;
图5是可以由流处理器实现的预定存储器访问模式的示意图,以及
图6是直接使用通用核以及图3的数据流处理器的处理器系统的框图。
具体实施方式
现在参照图1,根据本发明构造的计算机系统10可以提供高性能冯诺依曼体系结构处理器12,例如,提供算术和逻辑指令的丰富指令集的乱序执行和推测执行。这样的处理器12的示例包括由英特尔公司以商品名“i7”制造的处理器以及由先进微器件公司和ARM有限公司制造的类似装置。
处理器12可以包括用于与存储器系统16通信的L1缓存14,存储器系统16提供标准存储器层次,包括但不限于与一层或更多层较大规模存储器20耦接的附加级别的缓存18,较大规模存储器20例如由随机存取存储器(RAM)、磁盘存储器等构成。
存储器系统16可以存储程序22以供计算机系统10执行,计算机系统10例如可以受益于硬件加速,例如,包括视觉处理、机器学习、图形处理等。
存储器系统16和处理器12可以例如通过控制线26以及地址和数据线23与可重新配置硬件加速器24通信,这允许处理器12使用硬件加速器24以执行程序22适合于加速的部分。使用控制线26和/或由地址和数据线23通过存储器系统16传送的数据,处理器12可以将具有简单存储器访问模式的强计算卸载到硬件加速器24以用于独立执行。在这方面,处理器12协调该执行的开始和结束,但是可能在该计算期间关闭或用于其他任务。在操作期间,硬件加速器24可以在没有处理器12的帮助的情况下以多核处理器的方式独立地访问L2缓存处的存储器系统16。
存储器系统16可以包括提供配置映像27的一组配置文件25,配置映像27将用于对要由硬件加速器24针对程序22的期望部分执行的特定专用计算进行编程。通过加载不同的配置映像27,可以优化不同的专用计算。这些配置映像27可以针对特定应用进行开发和标准化,例如,以使用硬件加速器24的当前设计来提供传统专用加速器的不同功能。通常,将使用下面描述的可以由编译器生成的特殊指令来调用硬件加速器24。
现在还参照图2,硬件加速器24可以包括多个独立操作的处理单元28,每个处理单元28可以接收程序22的部分以并行操作。每个处理单元28包括轻量核30、数据流处理器32、暂存存储器34和流处理器36。在一个实施方式中,给定处理单元28的轻量核30、数据流处理器32、暂存存储器34和流处理器36中的每一个可以共享至存储器系统16的公共存储器访问接口40,以在各处理单元28中提供独立且并行的存储器访问。
通常,轻量核30是没有推测执行的冯诺依曼体系结构单发射按序核心。然而,该轻量核30相比于数据流处理器32能够处理更广范围的不同类型的算术和逻辑指令,并且由于该原因,处理器12可以使用轻量核30来进行某些类型的加速,而不涉及处理单元28的其余部分(包括例如数据流处理器32)。轻量核30需要比处理器12少得多的集成电路面积并且使用更少的功率。应当理解,轻量核可以是能够进行算术和逻辑功能的任何通用处理器。
在典型操作期间,轻量核30向流处理器36发出指令以将配置映像27从存储器系统16加载到数据流处理器32,这将配置数据流处理器32以用于必要的计算。然后,轻量核30向流处理器36发出指令,流处理器36转而将控制存储器访问接口40以获得由数据流处理器32计算所需的信息,该数据被直接发送到数据流处理器32或暂存存储器34。
由轻量核30提供给流处理器36的指令包括如下面讨论的以下指令:(1)配置指令,其通过获得和加载适当的配置映像27来配置数据流处理器32;(2)流指令,其用于在不涉及轻量核30或处理器12的情况下向数据流处理器32提供数据流;以及(3)栅障指令,其用于执行由处理单元28执行的指令的某种程度的序列化。
现在参照图3,数据流处理器32可以提供在由互连开关44形成的网格33中设置的一组功能单元42。在从输入点46延伸到相应输出点48的逻辑列中设置开关44以在其间提供并行数据路径。还在由宽度等于逻辑列的数据路径的宽度的并行数据路径接合的逻辑行中设置开关44。将功能单元42逻辑地定位在连续的行和列中的四个开关44的组之间,以与这些开关44中的每一个通信以从其接收数据或向其提供数据。因此,每个开关44通常可以将在开关44处接收的数据引导到相邻列中或下方相邻行中的开关或者引导到多至两个下方功能单元42。
由开关44提供的数据流的特定方向可以由与开关44相关联的网格33配置开关寄存器45中的位值确定,该位值由正被加载的特定配置映像27确定。由网格33从输入点46通过连续的开关44和功能单元42到输出点48提供的数据路径通常将等于计算机字的宽度,例如,32位或64位。
功能单元42中的每一个可以实现若干算术或逻辑功能中的一个,但是通常比由轻量核30提供的功能少。例如,给定功能单元42可以实现以下功能中的一个或更多个:整数或浮点乘法、减法、加法等;和/或诸如移位、比较、按位与、或等的逻辑功能;和/或诸如S型函数、超越函数等的专用功能。另外,功能单元42可以在其没有被使用时具有低功率或关闭状态,从而大大降低其功率消耗。可以由每个功能单元42实现的功能对于不同功能单元42可以是不同的。由功能单元42提供的该特定功能由与功能单元42中的每一个相关联的网格33配置功能寄存器47中的位值确定,该位值如是由加载的配置映像27设置的。
虽然数据流处理器32通常可以独立于轻量核30执行并且相对于轻量核30异步地执行,但是通过数据流处理器32的数据将被时控,例如,使用独立的时钟元件35以提供可预测的执行。具体地,数据可以流过功能单元42和开关44的网格33,以对于每个时钟周期通常水平和/或向下移动一步,其中一步可以是从输入点46到开关44,或者从开关44到第二开关44,或者从开关44到输出点48,或者从开关44到功能单元42,或者从功能单元42到开关44的数据流。以此方式,计算所需的到达操作单元42的操作数的协调可以通过以获得期望的延迟所需的量在数据路径中插入开关(或无操作功能单元)来控制。所需路由可以是预定的并且手动地或者通过使用用于生成配置映像27的特殊程序(例如编译器)并入配置映像27。
通常,数据流处理器32不提供程序计数器或控制流指令,而是由开关44和功能单元42的互连确定控制流。另外,不需要通过功能单元42访问寄存器文件或存储器。一旦操作数在时钟约束内可用(这可以以高速发生),就会发生计算。可以用数据流电路或者用以足够速度操作的迭代电路实现功能单元42,以在一个时钟周期内完成计算。因此,数据流处理器32提供极快的计算。
数据流处理器32的输入点46和输出点48中的每一个与先进先出缓冲器50相关联,先进先出缓冲器50可以在流处理器36的控制下与由数据流处理器32执行的处理异步地填充或异步地清空。因此,缓冲器50提供并行数据采集和数据处理。在一个实施方式中,每个缓冲器50可以提供八位、六十四位字,因此为8×64宽并且具有任意深度。本发明还预期可以采用期望的不同宽度。如将讨论的,独立于输入点46和输出点48的附加类似缓冲器50'可以用于存储用于间接加载和存储的流地址。输入点46通过提供固定连接的互连41连接到相应缓冲器50,以允许给定输入缓冲器50与开关44的第一行中的一个或更多个通信,其中每个开关44根据预定义互连模式从缓冲器50中的任何缓冲器中的仅一个接收数据。因此,可以将来自给定缓冲器50的不同64位字转发到不同开关44。
另外,输出点48通过提供固定连接的互连49连接到相应缓冲器50,以允许给定输出点48连接到一个或更多个输出缓冲器50,每个输出缓冲器根据预定义互连模式从输出点48中的任何输出点中的仅一个接收数据。
流处理器36提供简单的状态机,一旦它从轻量核30接收到程序指令,则可以在存储器系统16与另一存储位置之间自主移动数据。通常,流处理器36根据预定义模式将输入数据从存储器系统16移动到暂存存储器34或缓冲器50,或从暂存存储器34移动到输入缓冲器50,或者可以将输出数据从暂存存储器34移动到存储器系统16,或从缓冲器50移动到暂存存储器34或存储器系统16或另一缓冲器50。就该方面而言,流处理器36可以提供三个独立的电路,一个用于存储器,一个用于暂存器,以及一个用于控制从输出端口到输入端口的数据的再循环以及还用于生成恒定值。可以独立操作这三个电路(但是通过存储器访问接口40同步)以进行高速操作。
如下面针对配置所讨论的,流处理器36还可以提供配置映像27到数据流处理器32的网格33配置寄存器45和47的数据移动。
更特别地,并且如上面简要提到的,流处理器36根据可以由轻量核30发出的配置指令、流指令和栅障指令进行操作。在下面的表I中示出了配置指令格式。
表I配置指令
该指令向流处理器36提供存储器系统16中的配置映像27的起始地址和大小,并且操作以将配置映像27加载到网格33配置寄存器45和47中。该处理将提供数据流处理器32的网格33的期望配置以及程序22的加速所需的功能单元42的功能,例如,由处理器12在控制线26上向加速器24传送所触发。
由轻量核30向流处理器36提供的流指令(在表II中示出)通常标识数据源、目的地数据和数据模式如下:
表II流指令
如下所述,这些指令使用指定的模式自主在存储位置之间传输数据。
将存储的数据(例如,在缓冲器50'中)用作地址值可以进行间接寻址。在间接寻址中,例如,将来自流模式的数据用作地址以获得由功能单元42操作的其他数据。该间接寻址产生指针的效果,例如在访问稀疏矩阵的行时是有用的。流处理器36可以通过将两个流链接在一起来提供有助于间接访问的能力,第一流用于访问指针的连续或跨步模式,并且后续流从存储器系统16加载那些指针的值并且将其传送到可重新配置数据流处理器32。提供附加指令以生成恒定值(而不是从存储器中加载这些值)并且丢弃未使用的输出值(而不是将其加载到非功能存储器区域)。
通常可以由处理器12直接发出这些指令中的每一个,作为加速器的指令集架构的一部分,并且这些指令中的数据用于轻量核30的最小处理,以控制加速器的其他部件。
现在参照图5,流处理器36提供状态机,用于使用简单的存储器访问模式在存储位置之间自主加载或写入数据。最简单的模式是线性模式60,其在由指令指定的起始地址62与结束地址64之间顺序地读取(或写入)每个存储器地址。通过将步长设置为等于零来指示该模式。在上述指令中将起始地址指定为用于读取的源地址以及用于写入的目的地地址,而结束地址在源作为端口时是元素的数目或者在当源是存储器或暂存器时是访问大小乘以步长乘以步数加上起始地址的结果。
替选地,可以将流处理器36编程以通过将步长设置为等于非零值来使用跨步模式65,非零值描述由访问大小定义的访问部分67之间的地址中的间隙或步幅66。
类似地,可以通过将访问大小设置为大于步幅大小(这标志交叠模式)来调用交叠轴模式68。通过将步长设置为零,并且重复进行提供达步数次,可以容易地获得重复模式69。
轻量核30还可以向流处理器36提供栅障指令,栅障指令阻断新的存储器访问指令的发出,直到完成与数据存储资源相关联的某些先前指令。例如,与对暂存存储器34的写入相关联的栅障指令(在下面的表III中示出)将阻断对暂存存储器34的后续写入,直完成栅障指令之前的对暂存存储器34的所有写入。栅障还可以用于用信号向轻量核30通知计算完成。
表III栅障指令
现在参照图3和图4,示例计算可以提供数据流图70,其在被指定为A、B和D的输入缓冲器50处接收输入,并且所述输入缓冲器在该示例中与单个相邻输入点46通信。来自与端口A和B相关联的缓冲器50的连续值通过适当的开关44被提供到功能单元42a以相乘。在最简单的情况下,对用于给定计算周期的必要操作数(通过网格33从输入点46到输出点48的操作数)进行协调以同时从缓冲器50释放到网格33中。可以通过简单的就绪监测逻辑来监测操作数的释放,该逻辑基于针对每个缓冲器配置的数据“大小”知道何时触发激发信号。然而,本发明还预期来自缓冲器50的交错释放可以用作在操作数通过网格33时特定功能单元42处操作数同步的一部分。功能单元42a的输出通过适当的开关传送到功能单元42b,以加到被指定为D的与输入点46相关联的缓冲器50的值。注意,当来自端口D的数据在功能单元42b处被接收时,来自缓冲器A和B的数据在功能单元42b处被接收之前通过了相同数目的开关44和功能单元42,确保在该计算中处理缓冲器50中的相应数据。手动或通过使用诸如编译器的程序调整由数据流处理器32执行的每个特定算法的配置映像27,以确保数据流路径长度的适当协调。编译器可以通过识别所执行的算法的特定操作以根据操作所使用的数据的数据依赖性序列化时间片来操作,从而确保需要依赖于先前操作的数据的操作在随后的时间片中。然后可以将从输入端口到与每个操作相关联的每个功能单元42(通过开关44或功能单元42的时钟周期)的数据路径调整为相等。因此,例如,对于功能单元42a处的加法运算,使来自缓冲器A、B和D的数据路径相等,其中,来自缓冲器A的路径如虚线43a所示(在四个时钟周期中)通过两个开关44和一个功能单元42a,来自缓冲器B的路径如虚线43b所示(在四个时钟周期中)通过两个开关44和一个功能单元42a,以及来自缓冲器D的路径如虚线43c所示(在四个时钟周期中)通过三个开关44。在本发明的一些版本中,来自缓冲器50的操作数的交错或延迟释放可以用于模拟附加时钟周期。
一旦在功能单元42b处完成加法,输出传到被指定为G的输出缓冲器50。
通常,针对存储在输入端口A和B中的多个数据值重复该过程。功能单元42a处的每个乘法与功能单元42b处的加法以管线的方式同时执行并且提供高吞吐量。
现在参照图4,可以通过从轻量核30发出的八个指令(在图4中被指定为指令(C1-C8))来实现该计算。如所描绘的,这些指令将在水平标度上指示的不同时间排队、分派和完成。在计算之前,数据流处理器32由配置指令(在该示例中未示出)配置。一旦所有指令已排队,轻量核30可以在时间71处进入空闲状态。
第一指令(C1)提供从存储器系统16到暂存存储器34的数据传递,该数据最终将用于加载端口A的缓冲器50。该指令在排队后立即开始执行。重要的是,不会读取暂存存储器,直到完全加载暂存存储器,并且因此下一个指令(C2)提供暂存存储器读取栅障,确保不会读取暂存存储器34,直到指令(C1)完成。因此,提供暂存存储器34到端口A中的读取的指令(C3)被延迟直到在时间74处完成指令(C1)。可以通过停止与栅障条件有关的来自数据流处理器32的后续命令来简单地执行栅障指令,以允许所有先前的命令并行进行。
栅障指令(C2)不阻断指令(C4)读取存储器到端口B的缓冲器,因为没有冲突的资源。因此,该传送过程可以在指令(C3)的传送过程之前开始并且并行地继续进行。类似地,从存储器系统16到端口D的传递可以在该指令排队之后不久执行。
在时间76处,值将存在于端口A、B和D中的每一个中,允许数据流处理器32开始计算,并且将这些值从其缓冲器50释放。将使用输入点46的缓冲器50中的每一个中的连续值来重复由数据流处理器32执行的这些计算,并且将新计算值提供给输出点48的输出缓冲器50,如处理周期78所示。
一旦第一处理周期78完成,在时间80处,就可以开始从端口G的输出缓冲器到存储器系统16的写入。
在保持在缓冲器50中的数据的所有处理循环78结束之后,在时间82处,从端口G到存储器系统16的写入结束,释放指令C8的栅障并且用信号通知轻量核30计算完成,以便可以从轻量核30接收新的指令。当由硬件检测到所有缓冲器50均是空的时,释放指令C8的“全部”栅障。
在指令(C4)的处理期间,在从存储器加载端口B之后,第二指令(C7)可以排队也从存储器系统16加载到端口B。在这样的情况下由流处理器36创建天然栅障,这本质上使缓冲器50的加载序列化。
还注意,用于将数据加载到缓冲器B的指令(C7)的第二流可能不具有与先前流相同的访问模式。此外,第二流的类型(例如源或目的地)也可以是不同的。更一般地,针对给定缓冲器50的流命令可以改变,同时数据流架构和其他流命令被主动处理。这导致更多的编程灵活性和并行性。
将理解,由数据流处理器32基于图4中示出的交叠线段提供的该处理中获得实质上的并行性。这与通过具有(可以由处理器12支持的)多个数据流处理器28而获得的并行性结合,从而允许极快的处理。
现在参照图6,将理解,通过使处理器12直接处理存储器访问并且加载和读取缓冲器50以及提供存储器映像文件以配置开关44和功能单元42,可以独立于流处理器36、暂存存储器34和轻量核30使用数据流处理器32的元件。该配置极大地简化了架构;然而,该配置需要处理器12处理存储器访问模式。当存在长计算运行时,由处理器12执行的该附加任务仍是有效的。在该情况下,还可以增加缓冲器50的大小以强化存储器访问操作。
如本领域通常所理解的,轻量核30还可以公开硬件加速器24的硬件参数以供编译器使用,包括功能单元42的数目和类型、缓冲器50和50'的深度、暂存存储器34的大小以及通过数据流处理器32数据最长的重现(循环)。
如本文所使用的,预定义存储器访问模式意味着可以在需要执行存储器访问的计算之前定义的有限数目的模式,而不是根据所进行的计算的存储器访问模式。本文所使用的自主意味着不需要由微核或数据结构的进一步引导。
本文使用的某些术语仅出于参照的目的,并且因此不旨在限制。例如,诸如“上”、“下”、“上方”和“下方”的术语指的是所参照的附图中的方向。诸如“前”、“后”、“后方”、“底部”和“侧部”的术语在一致但任意的参考系内描述了部件的各部分的取向,这通过参照文本以及描述讨论中的部件的相关附图将变得清楚。这样的术语可以包括上面具体提及的词语、其衍生词以及类似含义的词语。类似地,除非由上下文明确地指出,否则术语“第一”、“第二”以及涉及结构的其他这样的数字术语不暗示次序或顺序。
当介绍本公开内容和示例性实施方式的元件或特征时,无量词修饰和“所述”旨在表示存在一个或更多个这样的元件或特征。术语“包含”、“包括”和“具有”旨在是包含性的,并且意味着可能存在除了具体指出的那些之外的其他元件或特征。还将理解,除非被特别标识了执行顺序,否则本文描述的方法步骤、过程和操作不应被解释为必须要求以所讨论或示出的特定顺序执行。还应理解,可以采用另外的或替代的步骤。
对微控制器的引用应当被理解为包括能够执行本文描述的功能的任何电路,包括但不必限于冯诺依曼体系结构架构。
具体地,本发明不限于本文包含的实施方式和说明,并且权利要求应当被理解为包括所附权利要求的范围内的包括实施方式的部分以及不同实施方式的元件的组合的实施方式的修改形式。本文所述的所有公开,包括专利和非专利公开,均通过引用全部并入本文。

Claims (23)

1.一种可重新配置加速器架构,包括:
(1)微控制器,其适于接收指令和数据以控制所述加速器的其他部件;
(2)流处理器,其从所述微控制器接收指令,以根据所选择的一组预定义存储器访问模式自主读取存储在存储器中的多个输入值,并且根据所选择的一组预定义存储器访问模式将多个输出值从所述加速器自主写入存储器;以及
(3)可重新配置数据流处理器,其被所述微控制器配置成接收所述多个输入值,以根据配置来提供输出值。
2.根据权利要求1所述的可重新配置加速器架构,其中,能够相对于所述数据流处理器的操作异步地接收从所述微控制器到所述流处理器的相继指令,并且根据不同的预定义存储器访问模式提供对存储在存储器中的多个输入值的自主读取或者对来自所述加速器的多个输出值的自主写入。
3.根据权利要求1所述的可重新配置加速器架构,其中,所述可重新配置数据流处理器在接收输入值的输入端口与提供输出值的输出端口之间提供互连功能单元的一组可编程开关,所述功能单元提供可选择的多个算术功能,并且所述互连提供通过功能单元从输入端口到输出端口的由开关编程确定的路径。
4.根据权利要求3所述的可重新配置加速器架构,其中,所述互连提供开关与功能单元之间的直接互连以及开关之间的直接互连。
5.根据权利要求3所述的可重新配置加速器架构,其中,所述互连在开关之间以及开关与功能单元之间提供至少32个并行数据线。
6.根据权利要求3所述的可重新配置加速器架构,其中,所述功能单元能够提供对算术和逻辑运算的不同选择。
7.根据权利要求3所述的可重新配置加速器架构,其中,所述功能单元并行操作。
8.根据权利要求3所述的可重新配置加速器架构,还包括时钟,其允许针对每个时钟周期将数据在开关之间移动一个开关或者在功能单元之间移动一个功能单元。
9.根据权利要求3所述的可重新配置加速器架构,其中,所述微控制器通过加载定义对所述开关的编程以及对所述功能单元的功能的选择的映像文件来控制所述可重新配置数据流处理器。
10.根据权利要求1所述的可重新配置加速器架构,其中,所述微控制器是冯诺依曼体系结构的单发射按序核。
11.根据权利要求10所述的可重新配置加速器架构,其中,所述微控制器还适于在不涉及流处理器和所述可重新配置数据流处理器的情况下,从主处理器接收指令和数据,以响应于所述指令和数据执行逻辑和算术指令,以将数据返回到所述主处理器。
12.根据权利要求1所述的可重新配置加速器架构,其中,所述流处理器提供预定义存储器访问模式,包括在两个存储器地址之间的连续地址的线性访问模式以及在两个存储器地址之间的规则间隔的不连续地址的跨步访问模式。
13.根据权利要求12所述的可重新配置加速器架构,其中,所述流处理器使用通过所述预定义存储器访问模式获得的数据作为要用作向所述可重新配置数据流处理器提供的所述多个输入值的数据的地址。
14.根据权利要求1所述的可重新配置加速器架构,其中,在由所述微控制器编程之后,所述流处理器相对于所述微控制器自主操作。
15.根据权利要求1所述的可重新配置加速器架构,其中,所述可重新配置数据流处理器包括输入缓冲器和输出缓冲器,以相对于所述流处理器异步地操作。
16.根据权利要求1所述的可重新配置加速器架构,其中,所述微控制器向所述流处理器发出定义数据源、数据目的地和数据访问模式的流命令。
17.根据权利要求16所述的可重新配置加速器架构,其中,所述微控制器还向所述流处理器发出栅障命令,所述栅障命令定义所述栅障命令之前和之后的存储器访问的必要完成顺序。
18.根据权利要求1所述的可重新配置加速器架构,还包括暂存存储器,所述暂存存储器与所述流处理器通信以在所述流处理器控制下从所述存储器读取数据或将数据写入所述存储器。
19.根据权利要求18所述的可重新配置加速器架构,还包括由所述暂存存储器和所述可重新配置数据流处理器共享的单个存储器接口。
20.根据权利要求1所述的可重新配置加速器架构,其中,所述微控制器响应预定指令以提供关于所述可重新配置数据流处理器中的功能单元的数目和类型的信息。
21.一种计算机架构,包括:
乱序推测处理器核心,其与存储器通信以用于接收指令以及读取和写入数据;以及
多个可重新配置加速器,其由所述乱序推测处理器核心控制,并且各自具有:
(1)微控制器,其适于接收指令和数据以控制所述加速器的其他部件;
(2)流处理器,其从所述微控制器接收指令,以根据所选择的一组预定义存储器访问模式自主读取存储在存储器中的多个输入值,并且根据所选择的一组预定义存储器访问模式将多个输出值从所述加速器自主写入存储器;以及
(3)可重新配置数据流处理器,其被所述微控制器配置成接收所述多个输入值以提供输出值。
22.一种数据流计算机架构,包括:
数据流处理器,其在接收输入值的输入端口与提供输出值的输出端口之间提供一组功能单元和互连所述功能单元的可编程开关,所述功能单元提供可编程算术功能并且所述互连提供通过功能单元从输入端口到输出端口的由开关编程确定的路径;
时钟,其提供数据通过功能单元和可编程开关的同步移动;以及
配置存储,其保持数据,所述数据配置所述功能单元的所述互连以及所述功能单元的所述算术功能以执行预定程序,其中,在所述输入端口处接收的数据被时钟驱动通过所述功能单元和可编程开关到达所述输出端口以实现对所述数据的算术功能序列;
其中,所述配置存储定义数据通过所述数据流处理器的路径,以通过在不需要附加的缓冲存储元件的情况下调整数据通过所述数据流处理器的所述路径来根据所述程序确保相应操作数同时到达每个功能单元。
23.根据权利要求22所述的数据流计算机架构,还包括与所述数据流处理器的输入端口相关联的一组缓冲器,所述缓冲器与所述时钟同步以根据所述程序和所述配置存储在适于确保相应操作数同时到达每个功能单元处的时间将数据释放到所述输入端口。
CN201780084864.8A 2017-01-26 2017-12-11 可重新配置专用计算机加速器 Active CN110214309B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/416,670 US11853244B2 (en) 2017-01-26 2017-01-26 Reconfigurable computer accelerator providing stream processor and dataflow processor
US15/416,670 2017-01-26
PCT/US2017/065582 WO2018140140A1 (en) 2017-01-26 2017-12-11 Reconfigurable, application-specific computer accelerator

Publications (2)

Publication Number Publication Date
CN110214309A true CN110214309A (zh) 2019-09-06
CN110214309B CN110214309B (zh) 2023-10-31

Family

ID=62907071

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780084864.8A Active CN110214309B (zh) 2017-01-26 2017-12-11 可重新配置专用计算机加速器

Country Status (5)

Country Link
US (1) US11853244B2 (zh)
EP (1) EP3574401B1 (zh)
KR (1) KR102272839B1 (zh)
CN (1) CN110214309B (zh)
WO (1) WO2018140140A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190266479A1 (en) * 2018-02-27 2019-08-29 Stmicroelectronics S.R.L. Acceleration unit for a deep learning engine
US11586907B2 (en) 2018-02-27 2023-02-21 Stmicroelectronics S.R.L. Arithmetic unit for deep learning acceleration
US11610362B2 (en) 2018-02-27 2023-03-21 Stmicroelectronics S.R.L. Data volume sculptor for deep learning acceleration

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10157060B2 (en) 2011-12-29 2018-12-18 Intel Corporation Method, device and system for control signaling in a data path module of a data stream processing engine
WO2018169911A1 (en) * 2017-03-14 2018-09-20 Yuan Li Reconfigurable parallel processing
US11086816B2 (en) 2017-09-28 2021-08-10 Intel Corporation Processors, methods, and systems for debugging a configurable spatial accelerator
US10585725B2 (en) 2018-03-27 2020-03-10 Arista Networks, Inc. System and method of hitless reconfiguration of a data processing pipeline
US10832370B2 (en) * 2018-03-27 2020-11-10 Arista Networks, Inc. System and method of hitless reconfiguration of a data processing pipeline with standby pipeline
US11307873B2 (en) 2018-04-03 2022-04-19 Intel Corporation Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging
US11048661B2 (en) 2018-04-16 2021-06-29 Simple Machines Inc. Systems and methods for stream-dataflow acceleration wherein a delay is implemented so as to equalize arrival times of data packets at a destination functional unit
US10891240B2 (en) 2018-06-30 2021-01-12 Intel Corporation Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator
US11200186B2 (en) 2018-06-30 2021-12-14 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator
CN109189475B (zh) * 2018-08-16 2022-06-10 北京算能科技有限公司 可编程人工智能加速器指令集的构建方法
CN109325494B (zh) * 2018-08-27 2021-09-17 腾讯科技(深圳)有限公司 图片处理方法、任务数据处理方法和装置
US10705762B2 (en) * 2018-08-30 2020-07-07 Micron Technology, Inc. Forward caching application programming interface systems and methods
US11210100B2 (en) * 2019-01-08 2021-12-28 Apple Inc. Coprocessor operation bundling
CN109785224B (zh) * 2019-01-29 2021-09-17 华中科技大学 一种基于fpga的图数据处理方法和系统
US10817291B2 (en) * 2019-03-30 2020-10-27 Intel Corporation Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator
US10915471B2 (en) 2019-03-30 2021-02-09 Intel Corporation Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator
US11037050B2 (en) 2019-06-29 2021-06-15 Intel Corporation Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator
WO2021145803A1 (en) * 2020-01-13 2021-07-22 Telefonaktiebolaget Lm Ericsson (Publ) Programmable controller
US11709664B2 (en) 2020-06-02 2023-07-25 SambaNova Systems, Inc. Anti-congestion flow control for reconfigurable processors
US11237971B1 (en) * 2020-09-16 2022-02-01 SambaNova Systems, Inc. Compile time logic for detecting streaming compatible and broadcast compatible data access patterns
US11645057B2 (en) 2020-09-24 2023-05-09 SambaNova Systems, Inc. Systems and methods for memory layout determination and conflict resolution
CN113032011B (zh) * 2021-03-12 2023-06-27 北京睿芯数据流科技有限公司 一种数据流架构中循环程序执行的方法及系统
WO2023014033A1 (en) * 2021-08-02 2023-02-09 Samsung Electronics Co., Ltd. Method and electronic device for handling resource operating performance configuration in electronic device
CN115408104B (zh) * 2022-08-25 2023-08-11 科东(广州)软件科技有限公司 一种映像的加载方法与装置及生成方法与装置
CN116501504B (zh) * 2023-06-27 2023-09-12 上海燧原科技有限公司 数据流的时空映射方法、装置、电子设备及存储介质

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1436333A (zh) * 2000-06-09 2003-08-13 摩托罗拉公司 支持无线手持多媒体设备的集成处理器平台
US20040003206A1 (en) * 2002-06-28 2004-01-01 May Philip E. Streaming vector processor with reconfigurable interconnection switch
US20060059310A1 (en) * 2004-09-10 2006-03-16 Cavium Networks Local scratchpad and data caching system
US20090300337A1 (en) * 2008-05-29 2009-12-03 Axis Semiconductor, Inc. Instruction set design, control and communication in programmable microprocessor cases and the like
US20110238948A1 (en) * 2002-08-07 2011-09-29 Martin Vorbach Method and device for coupling a data processing unit and a data processing array
US20120011349A1 (en) * 2006-10-06 2012-01-12 Calos Fund Limited Liability Company Data exchange and communication between execution units in a parallel processor
US20120204008A1 (en) * 2011-02-04 2012-08-09 Qualcomm Incorporated Processor with a Hybrid Instruction Queue with Instruction Elaboration Between Sections
US20120303932A1 (en) * 2011-05-27 2012-11-29 New York University Runtime reconfigurable dataflow processor
US20150268963A1 (en) * 2014-03-23 2015-09-24 Technion Research & Development Foundation Ltd. Execution of data-parallel programs on coarse-grained reconfigurable architecture hardware
CN105830053A (zh) * 2014-01-16 2016-08-03 英特尔公司 用于快速配置机制的装置、方法和系统

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7590823B1 (en) * 2004-08-06 2009-09-15 Xilinx, Inc. Method and system for handling an instruction not supported in a coprocessor formed using configurable logic
US7920584B2 (en) 2005-05-04 2011-04-05 Arm Limited Data processing system
US7856523B2 (en) * 2005-06-01 2010-12-21 Microsoft Corporation Random Access Memory (RAM) based Content Addressable Memory (CAM) management
US20080244238A1 (en) 2006-09-01 2008-10-02 Bogdan Mitu Stream processing accelerator
US8726289B2 (en) 2008-02-22 2014-05-13 International Business Machines Corporation Streaming attachment of hardware accelerators to computer systems
KR101515568B1 (ko) * 2009-02-03 2015-04-28 삼성전자 주식회사 재구성 가능 어레이의 스케줄러, 스케줄링 방법 및 이를 이용한 컴퓨팅 장치
US9348638B2 (en) * 2013-01-17 2016-05-24 Xockets, Inc. Offload processor modules for connection to system memory, and corresponding methods and systems
US10591983B2 (en) 2014-03-14 2020-03-17 Wisconsin Alumni Research Foundation Computer accelerator system using a trigger architecture memory access processor
US11132203B2 (en) * 2014-08-14 2021-09-28 Texas Instruments Incorporated System and method for synchronizing instruction execution between a central processor and a coprocessor
US9715475B2 (en) 2015-07-21 2017-07-25 BigStream Solutions, Inc. Systems and methods for in-line stream processing of distributed dataflow based computations
US20170083313A1 (en) * 2015-09-22 2017-03-23 Qualcomm Incorporated CONFIGURING COARSE-GRAINED RECONFIGURABLE ARRAYS (CGRAs) FOR DATAFLOW INSTRUCTION BLOCK EXECUTION IN BLOCK-BASED DATAFLOW INSTRUCTION SET ARCHITECTURES (ISAs)

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1436333A (zh) * 2000-06-09 2003-08-13 摩托罗拉公司 支持无线手持多媒体设备的集成处理器平台
US20040003206A1 (en) * 2002-06-28 2004-01-01 May Philip E. Streaming vector processor with reconfigurable interconnection switch
US20110238948A1 (en) * 2002-08-07 2011-09-29 Martin Vorbach Method and device for coupling a data processing unit and a data processing array
US20060059310A1 (en) * 2004-09-10 2006-03-16 Cavium Networks Local scratchpad and data caching system
US20120011349A1 (en) * 2006-10-06 2012-01-12 Calos Fund Limited Liability Company Data exchange and communication between execution units in a parallel processor
US20090300337A1 (en) * 2008-05-29 2009-12-03 Axis Semiconductor, Inc. Instruction set design, control and communication in programmable microprocessor cases and the like
CN102144225A (zh) * 2008-05-29 2011-08-03 阿克西斯半导体有限公司 实时数据处理方法和装置
US20120204008A1 (en) * 2011-02-04 2012-08-09 Qualcomm Incorporated Processor with a Hybrid Instruction Queue with Instruction Elaboration Between Sections
US20120303932A1 (en) * 2011-05-27 2012-11-29 New York University Runtime reconfigurable dataflow processor
CN105830053A (zh) * 2014-01-16 2016-08-03 英特尔公司 用于快速配置机制的装置、方法和系统
US20150268963A1 (en) * 2014-03-23 2015-09-24 Technion Research & Development Foundation Ltd. Execution of data-parallel programs on coarse-grained reconfigurable architecture hardware

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
BALART J: "A novel asynchronous software cache implementation for the cell-be processor", 《LANGUAGES AND COMPILERS FOR PARALLEL COMPUTING: 20TH INTERNATIONAL WORKSHOP》, pages 125 - 140 *
V. BAUMGARTE: "PACT XPP—A Self-Reconfigurable Data Processing Architecture", 《THE JOURNAL OF SUPERCOMPUTING》, pages 167 *
WIKIPEDIA: "Coprocesso", pages 1, Retrieved from the Internet <URL:https://en.wikipedia.org/w/index.php?title=Coprocessor&oldid=757515844> *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190266479A1 (en) * 2018-02-27 2019-08-29 Stmicroelectronics S.R.L. Acceleration unit for a deep learning engine
US11586907B2 (en) 2018-02-27 2023-02-21 Stmicroelectronics S.R.L. Arithmetic unit for deep learning acceleration
US11610362B2 (en) 2018-02-27 2023-03-21 Stmicroelectronics S.R.L. Data volume sculptor for deep learning acceleration
US11687762B2 (en) * 2018-02-27 2023-06-27 Stmicroelectronics S.R.L. Acceleration unit for a deep learning engine
US11977971B2 (en) 2018-02-27 2024-05-07 Stmicroelectronics International N.V. Data volume sculptor for deep learning acceleration

Also Published As

Publication number Publication date
US11853244B2 (en) 2023-12-26
EP3574401A1 (en) 2019-12-04
CN110214309B (zh) 2023-10-31
WO2018140140A1 (en) 2018-08-02
EP3574401A4 (en) 2021-01-27
KR20190103379A (ko) 2019-09-04
US20180210730A1 (en) 2018-07-26
EP3574401B1 (en) 2023-05-31
KR102272839B1 (ko) 2021-07-05

Similar Documents

Publication Publication Date Title
CN110214309A (zh) 可重新配置专用计算机加速器
JP2021192257A (ja) プログラム可能な最適化を有するメモリネットワークプロセッサ
JP6722251B2 (ja) マルチタイル処理アレイにおける同期化
KR20200143686A (ko) 연산을 가속하기 위한 가속기 및 시스템
KR20200143685A (ko) 연산을 가속하기 위한 방법 및 가속기 장치
US20210216318A1 (en) Vector Processor Architectures
JP2020518042A (ja) 処理装置と処理方法
US20190057060A1 (en) Reconfigurable fabric data routing
Fatahalian et al. GPUs: A Closer Look: As the line between GPUs and CPUs begins to blur, it’s important to understand what makes GPUs tick.
CN104731562B (zh) 在simd处理单元中的任务执行
Voitsechov et al. Inter-thread communication in multithreaded, reconfigurable coarse-grain arrays
US20190197018A1 (en) Dynamic reconfiguration using data transfer control
JP2020525907A (ja) 高スループットプロセッサ
Hurkat et al. VIP: A versatile inference processor
US11023242B2 (en) Method and apparatus for asynchronous scheduling
US11151077B2 (en) Computer architecture with fixed program dataflow elements and stream processor
CN110192225A (zh) 无序像素着色器导出
US11276223B2 (en) Merged data path for triangle and box intersection test in ray tracing
US11481256B2 (en) Task graph scheduling for workload processing
Khurge Strategic Infrastructural Developments to Reinforce Reconfigurable Computing for Indigenous AI Applications
US11275586B2 (en) Task graph generation for workload processing
US20230281014A1 (en) Parallel processing of multiple loops with loads and stores
WO2024030351A1 (en) Parallel processing architecture with dual load buffers
WO2023220099A1 (en) Parallel processing of multiple loops with loads and stores
Mahesri Tradeoffs in designing massively parallel accelerator architectures

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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40011774

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant