CN110799955B - 具有预编程功能的高速计算机加速器 - Google Patents

具有预编程功能的高速计算机加速器 Download PDF

Info

Publication number
CN110799955B
CN110799955B CN201880043542.3A CN201880043542A CN110799955B CN 110799955 B CN110799955 B CN 110799955B CN 201880043542 A CN201880043542 A CN 201880043542A CN 110799955 B CN110799955 B CN 110799955B
Authority
CN
China
Prior art keywords
stream
processor
instructions
memory
general purpose
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
Application number
CN201880043542.3A
Other languages
English (en)
Other versions
CN110799955A (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 CN110799955A publication Critical patent/CN110799955A/zh
Application granted granted Critical
Publication of CN110799955B publication Critical patent/CN110799955B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • 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/20Handling requests for interconnection or transfer for access to input/output bus
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • 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
    • 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/383Operand prefetching
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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

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)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)

Abstract

用于计算机的硬件加速器将独立的高速固定程序数据流功能元件与流处理器结合在一起,流处理器在接收到简易流指令之后可以按预定义的访问模式自主地访问存储器并且将简易流指令提供至数据流功能元件,所得到的是可以利用固定程序数据流功能元件的紧凑型高速处理器。

Description

具有预编程功能的高速计算机加速器
关于联邦政府资助研究或开发的声明
相关申请的交叉引用
本申请要求于2017年6月28日提交的美国非临时申请第15/635,864号的权益,并且在此通过引用并入本文。
背景技术
本发明涉及电子计算机架构并且具体涉及具有有限功能但是改进了适用性的高速计算机加速器。
计算机加速器提供了能够与通用处理器(GPU)结合使用的专用电路,以在某些计算应用中提供改进的性能。
早期的计算机加速器利用提供预编程功能(即,接收数据以对该数据执行预定功能的功能)的片外电路扩展了通用处理器的硬件指令集。这些加速器在此以后将被称为“固定功能”加速器,指的是这些加速器执行一个或更多个固定功能。这种固定功能加速器的一个示例是所谓的提供专用电路以执行预定的浮点和三角函数计算的“数学协处理器”。可以容易地将这种固定功能加速器集成至程序中,由于它们的特点可以通过只需要传送必要的参数数据和返回计算值的单个程序指令来调用。
随着通用处理器的功率和速度的增加,许多固定功能加速器被淘汰,这是由于固定功能加速器的有限的性能增益被第二集成电路在通用处理器与加速器之间的传送数据和控制的计算负担中的成本抵消。
可能由于这个原因,当前的加速器技术主要集中在操作为独立于通用处理器执行大量指令的独立运行的专用计算机。计算机架构加速器的一个示例是提供了适用于与渲染图形相关联的特定耗时任务的专用计算机内核的阵列的图形处理器单元(GPU)。这种类型的加速器的类似加速器包括特定应用加速器,例如,用于在数据中心中使用的MicrosoftCatapult FPGA加速器以及用于分布式机器学习的Google的张量(Tensor)处理单元。这些加速器实际上是专用计算机,例如,这些专用计算机与通用的高性能冯诺依曼(VonNeuman)处理器结合使用时可以大大增加这些特定应用的处理速度的。
计算机架构加速器的设计可能不适用于与公认的问题不相关联的应用或者没有足够大的需求来证明复杂设计、更改应用程序以及更改使用这些加速器所需的工具链的时间和费用的合理性的应用。
发明内容
本发明提供了一种固定功能加速器,该固定功能加速器可以显著提高用于证明计算机架构加速器的设计和制造不合理的任务的计算速度。通过使用高速数据流架构和通过使用专用流处理器以处理存储器访问提供了执行固定功能的速度优势,从而允许处理长期运行的数据而无需通用处理器的参与。适当选择实现的各个功能可以使加速器对一系列程序具有较广泛的适用性。实现不同的固定功能可以重复使用相当一部分的架构并且从程序中调用固定功能是相对简单的。
然后具体地,在一个实施方式中,本发明提供了一种计算机加速器架构,其具有(1)较低复杂度的处理器,其适于从较高复杂度的通用处理器接收流指令,该流指令描述要与存储器交换的多个数据元素的逻辑流;(2)固定程序功能元件,其根据每个输入数据元素的可用性而启动,用于顺序地处理逻辑流的连续输入数据元素以提供逻辑流的结果输出数据元素;以及(3)流处理器,其从较低复杂度通用处理器接收流指令以根据流指令从存储器中自主地读取逻辑流的输入数据元素并且根据流指令将逻辑流的结果输出数据元素自主地写入存储器。由仅单个流处理器和仅单个功能元件组成的对进行操作以互通给定逻辑流的数据元素。
因此,本发明的至少一个实施方式的特征是提供一种加速器,其提供固定功能加速器的多功能性和广泛的适用性,同时与在复杂的通用处理器上执行相同功能相比仍然提供了实质性的速度优势。
固定程序功能元件可以不包括程序计数器。
因此,本发明的至少一个实施方式的特征是采用数据流架构以在功能执行中提供实质性的速度增益。
固定程序功能元件可以提供具有至少一个输出的乘加归约功能(multiply add-reduction function),该至少一个输出是一对第二总和的第一总和,每个第二总和是一对乘积的总和,该乘积是一对输入参数的乘积。
因此,本发明的至少一个实施方式的特征是提供一种实现通用映射归约功能的固定功能加速器。
替选地或另外,固定程序功能元件可以是具有至少一个输出的乘法累加功能件,该至少一个输出是一对输入参数的乘积的累计总和。
因此,本发明的至少一个实施方式的特征是提供一种实现通用映射单元功能的固定功能加速器。
替选地或另外,固定程序功能元件可以是具有输出的非线性变换功能件,该输出是与插值相加的基础值,其中,基础值是根据输入参数的最高有效位从第一查找表中获得的并且插值是根据输入参数的最高有效位乘以输入参数的最低有效位从第二查找表中获得的斜率值。
计算机加速器可以包括多个功能元件和每次将单个功能元件分配至流处理器的切换器。替选地或另外,计算机加速器可以包括多个流处理器和多个功能元件以及将单个功能元件分配至单个流处理器的切换器。
因此,本发明的至少一个实施方式的特征是通过允许在可以用于加速的各种功能之间进行选择来增加计算机加速器的灵活性。
功能元件提供用于处理至少三十二位参数并且能够通过将单独的数据字连结在一起并且将其作为参数进行处理来并行处理长度小于功能元件的参数长度的单独的数据字。
因此,本发明的至少一个实施方式的特征是允许单个指令、多数据类型并行处理。
流处理器可以同时与给定的固定程序功能元件交换多个流。
因此,本发明的至少一个实施方式的特征是向功能元件提供多个流以用于最大吞吐量和存储器带宽的利用。
可以相对于功能元件的操作异步地接收从较低复杂度的通用处理器至流处理器的流指令,并且根据不同的预定义的存储器访问模式提供对存储在存储器中的多个输入值的自主读取或者对来自加速器的多个输出值的自主写入。
因此,本发明的至少一个实施方式的特征是允许并行执行存储器访问指令和计算以用于提高加速度。
较低复杂度的通用处理器可以适于从较高复杂度的通用处理器接收指令和数据以执行逻辑指令和算术指令并且将结果返回至较高复杂度的通用处理器。
因此,本发明的至少一个实施方式的特征是允许将功能元件结合至由较低复杂度的通用处理器实现的更复杂的加速器功能件中或者允许较低复杂度的通用处理器直接接受卸载功能。
流处理器可以提供预定义的存储器访问模式,该存储器访问模式包括在两个存储器地址之间的连续地址的线性访问模式以及在两个存储器地址之间的规则间隔的不连续地址的跨步访问模式。
因此,本发明的至少一个实施方式的特征是提供通常在适用于加速的多个数据指令中使用的存储器访问模式。
这些特定的目的和优点可以仅适用于落入权利要求所声明的范围内的一些实施方式并且因此不限定本发明的范围。
附图说明
图1是提供了可以与通用处理器一起使用的加速器的组的本发明的加速器的简化框图;
图2是示出了较低复杂度的通用处理器、固定程序功能元件、暂存存储器和流处理器的组合的单个加速器的详细框图;
图3是示出了包括流分配器和流引擎元件的流处理器的详细框图;
图4是类似于图2的示出了提供可以与给定的流处理器单独配对的固定程序功能元件池的图;
图5是类似于图4的示出了使用切换网络用于一对一配对的流处理器和程序功能元件二者的池的图;
图6是示出了相关联的矢量缓冲器和数据流协调的图2的功能元件的逻辑框图;
图7是类似于图6的示出了映射归约功能元件的图;
图8是类似于图6和图7的示出了映射单元功能元件的图;
图9是类似于图6、图7和图8的示出了非线性变换功能元件的图;以及
图10是示出了用于由流处理器自主访问的可限定的存储器访问模式的计算机存储器的图形表示。
具体实施方式
现在参照图1,根据本发明构造的计算机架构10可以提供较高复杂度的通用处理器12。例如,较高复杂度的通用处理器12可以实现包括使用以程序计数器排序的算术指令和逻辑指令的丰富指令集来进行乱序执行和推测执行的复杂的冯诺依曼架构。这样的处理器12的示例包括由英特尔公司制造的商品名“i7”的处理器以及由先进微器件(AdvancedMicro Devices)公司和ARM有限公司制造的类似装置。如本文中所使用的,“通用”指的是足以执行例如诸如至少可以由Intel 8080或该家族中的后续处理器执行的各种程序的通用指令集和架构。
较高复杂度的通用处理器12可以通过L1缓存14使用地址和数据线23与存储器系统16进行通信。存储器系统16提供标准存储器层次体系,包括但不限于与一层或更多层较大规模存储器20耦接的附加级别的缓存18,较大规模存储器20例如由随机存取存储器(RAM)、磁盘存储器等组成。
存储器系统16可以存储程序22以供计算机架构10执行,计算机架构10可以受益于硬件加速,例如包括图像处理、机器学习、图形处理等。
较高复杂度的通用处理器12还可以借助于发送数据的控制线26与计算机加速器24的组21进行通信,该数据描述用于获取针对计算机加速器24的功能的参数数据的存储器访问的模式的数据以及用于从固定功能加速器24回写值的类似模式。控制线26还可以发送启动固定功能加速器24的操作的定时信息。除了限定存储器访问模式和定时信号,控制线26可以提供一些有限的配置数据,例如在计算机加速器24中可用的不同固定功能电路之间进行选择。
如下面将更详细讨论的,在操作期间,固定功能加速器24使用由较高复杂度的通用处理器12提供的存储器数据模式,可以使用类似的地址和数据线23来独立地访问L2缓存处的存储器系统16而无需较高复杂度的通用处理器12的进一步协助。可以通过负载平衡电路25来缓和该访问以通过确保每个计算机加速器24获得对存储器系统16的足够访问来消除死锁,例如使用常规的死锁消除技术。在固定功能加速器24的操作期间,较高复杂度的通用处理器12可以在该计算期间关闭或用于其他任务。
现在参照图2,每个计算机加速器24包括较低复杂度的通用处理器30、固定功能元件32、存储器接口34、暂存存储器36和流处理器38,流处理器38包括流分配器40和流引擎42。
轻量处理器
在操作期间,较低复杂度的通用处理器30与较高复杂度的通用处理器12进行通信以从中接收指令并且向流处理器38发出流指令。流处理器38继而将控制存储器接口34以获得用于由固定功能元件32(直接地或通过暂存存储器36)计算所需的信息并且将计算之后的信息返回至存储器接口34用于(再次直接地或通过暂存存储器36)存储。
在这方面,较低复杂度的通用处理器30可能比较高复杂度的通用处理器12复杂度低和/或慢,同样地,足以提供计算机加速器24的其他部件的协调。例如,较低复杂度的通用处理器30可以是没有执行基本算术和逻辑功能的推测执行的冯诺依曼单发射有序内核。在这方面,较低复杂度的通用处理器30将比较高复杂度的通用处理器12需要更少的集成电路面积并且将使用更少的功率。在一些实施方式中,较低复杂度的通用处理器30可以用分立电路和固定程序来实现并且因此可以不必采用可编程计算机架构。较低复杂度的通用处理器30和存储器接口34可以共享相同的存储器访问或者如所示可以提供单独的存储器访问通道。
固定功能单元
固定功能元件32可以包括多个输入矢量缓冲器44、输出矢量缓冲器46和传送矢量缓冲器48以用于将参数传送至固定功能元件32以及传送来自固定功能元件32的值或在固定功能元件32周围的回路中传送。一个或更多个间接寻址矢量缓冲器51也可以以相当大小存在。
现在参照图6,固定功能元件32提供了一组相互连接的功能基元33,这些功能基元例如但不限于提供加法、乘法、累加和查找表的功能基元。这些功能基元33中的每一个都可以利用在多个周期中通过传送矢量缓冲器48进行数据的可能移动从相应的输入矢量缓冲器44接收数据并且将结果提供至相应的输出矢量缓冲器46。通常,固定功能元件32的架构将是数据流架构的架构,这意味着固定功能元件32使用例如识别功能基元33中的每一个的输入处是否存在相应数据的电路在输入矢量缓冲器44中的数据可用时开始执行。
数据以确定性方式根据阶段66流过功能基元33消除了竞争状况,可以沿着功能基元33之间的每个数据路径68通过时钟机制或通过提供类似的延迟来强制执行(例如,通过不执行操作而延迟的不操作功能基元来强制执行)消除竞争状况。假如计算速度与数据被传送至输入矢量缓冲器一样快,通过在没有程序计数器的情况下操作,可以获得极高的速度性能。另外,将理解的是,功能基元33之间的数据流路径形成有效的流水线使得固定功能元件32的早期阶段66可以在后期阶段66中处理数据时从输入矢量缓冲器44接收新数据。
通常,功能基元33将提供限制对不必要的控制步骤的需要的声明并且可以对连结在一起的多个数据字进行并行操作以形成通过功能基元33的单个参数。因此,例如,具有32位的参数宽度的功能基元33可以同时处理四个连结在一起的8位参数,例如通过执行其中处理进位和溢出的饱和算术,例如通过抑制进位或溢出并且将结果设置为最高允许值。类似的技术可以用于较低流量并且借用将结果设置为最低允许值。
现在参照图7,重要的固定功能元件32可以提供映射归约(reduce)或映射乘加归约功能。在这样的功能中,输入矢量缓冲器44对中的参数可以在第一阶段66a中通过提供映射的乘法功能基元33a相乘。然后,来自乘法功能基元33a的输出乘积在提供归约的第一部分的第二阶段66b中通过附加的加法器功能基元33a被成对地加在一起。然后,在第三阶段66c中通过附加的加法器基元33a将来自第二组加法器功能基元33a的输出求总和,该附加的加法器基元33a将其输出提供至输出矢量缓冲器46以完成归约。通常将理解的是,映射归约功能可以实现包括例如乘法、绝对差等的各种不同的映射过程并且可以提供包括例如加法函数、最大函数和最小函数等的各种不同的归约函数。
替选地或另外,如图8所示,固定功能元件32可以提供映射单元功能或乘法累加功能。在这样的功能中,输入矢量缓冲器44对中的参数可以在第一阶段66a中通过加法器功能基元33a被求和。这些加法器功能基元33的输出在第二阶段66b中被提供至累加器功能基元33b,该累加器功能基元33b将每个当前输出与对于预定数目的参数的先前输出的累计总和进行求和。然后,累加器功能基元33b将输出提供至输出矢量缓冲器46。
替选地或另外地,如图9所示,固定功能元件32可以提供非线性变换或分段线性近似。在第一阶段66a中将来自输入矢量缓冲器44的值分成用于确定基础值的高阶位69和用于插值的低阶位71。由基础查找表72接收高阶位69,基础查找表72根据(例如在制造或配置的时间处)嵌入在查找表72中的变换功能将高阶位69转换成变换的基础值73。高阶位69也被发送至用于变换功能的产生斜率值75的第二查找表74。在下一阶段66b中将斜率值75乘以低阶位71并且然后在后续阶段66中将所得到的插值77与基础值求和以提供输出至输出矢量缓冲器46。
通常,固定功能元件32不提供程序计数器并且可能需要或者可能不需要控制流指令。例如,控制流可以隐含在功能基元33的互连68中。替选地或另外地,控制流可以由固定功能元件32提供,例如在内部实现分支指令并且在物理互连中进行选择。只要通过可以以高速进行的固定功能元件32在规则排序的约束内可用操作数,就可以进行计算。固定功能元件32可以接收例如配置查找表74的数据但是不接收根据指令类型提供执行步骤的有序集合的指令。
流处理器
参照图2和图6,固定功能元件32的输入矢量缓冲器44和输出矢量缓冲器46中的每一个提供在流处理器38的控制下可以被固定功能元件32执行的处理异步地填充或异步地清空的先进先出缓冲器。矢量缓冲器因此提供了独立但是并行的数据获取和数据处理。在一个实施方式中,每个缓冲器可以提供八位、六十四位字,因此为8x64宽并且具有任意深度,例如深度大于10并且可选地为100。如果需要的话,具有类似结构并且独立于输入矢量缓冲器44和输出矢量缓冲器46的附加类似缓冲器51可以用于存储用于间接加载和存储的流地址。
本质上,流处理器38提供状态机,一旦它从较低复杂度的通用处理器30接收到程序指令,则可以在存储器系统16与另一存储位置之间自主地移动数据。通常,流处理器38根据预定模式将输入数据从存储器系统16移动至暂存存储器36或者将输入数据从暂存存储器36移动至输入矢量缓冲器44或者可以将输出数据从暂存存储器36移动至存储器系统16或者从输出矢量缓冲器46移动至暂存存储器36或存储器系统16。在这方面,流处理器38可以提供三个独立的电路,一个用于存储器、一个用于暂存器并且一个用于控制从输出端口至输入端口的数据的再循环以及还用于常数值的生成。可以独立操作这三个电路(但是用于通过存储器接口34同步)以用于高速操作。
现在参照图3,更具体地,流处理器38可以包括流分配器40和流引擎42。流分配器40在流队列50处从较低复杂度的通用处理器30接收一组流指令,这些指令限定了存储器系统16的访问模式以获得待由固定功能元件32处理的数据元素(图2中所示)。这些排队的流指令最终将被发送到流引擎42中的一组流引擎52中的一个以用于并行执行。
每个流引擎42可以处理必要协议用于与存储器系统16进行通信(读取数据或写入数据)并且根据由固定功能元件32处理的流指令提供计算一组地址以获得这样的数据流的能力。就加速器24可以与L2缓存器18直接通信的程度而言(如图1中所示),每当流跨越页面边界时流引擎42可以例如通过将标签无效发送至较低复杂度的通用处理器30来处理存储器一致性问题。当采用虚拟化时,可以假定L1缓存器14和L2缓存器18正在使用虚拟地址。根据本领域中理解的技术实现了使用MMU的转换后备缓冲器的必要的地址转换。
来自流队列50的流指令将在流所需的必要资源可用时并且根据程序22的程序顺序由分配器55仅分配至流引擎52。流所需的关键资源包括输入矢量缓冲器44和输出矢量缓冲器46的可用性或者暂存存储器36的可用性。
分配器55使用计分板54确定资源的可用性,该计分板54将每个流资源的状态提供为可以由分配器55更新的“占用”、“空闲”或“进行中的所有请求”。当流指令被登记在流引擎52中时,关键资源从“空闲”转变至“占用”。然后,这些指令的给定流在进行时(inflight)在逻辑上拥有资源。当流结束时,流引擎42中的相关联的流引擎52通知分配器40更新记分板54以显示资源处于空闲状态。“进行状态中的所有请求”表示对于存储器流的所有请求被完全发送至存储器系统16但尚未到达。该状态允许调度另一冲突的流,使得两个流引擎52能够以交叠配置使用相同的关键资源以用于附加的效率。
流处理器38还可以根据可以由较低复杂度的通用处理器30发出的屏障指令来控制向流引擎52转发流。屏障指令防止向流处理器发出新的流指令直至由屏障指令标识的给定流完成为止。因此,屏障指令提供了确保由固定功能元件32执行的计算的正确执行顺序的方法。
通常,然后,流指令将包括:用于在不涉及较低复杂度的通用处理器30或较高复杂度的通用处理器12的情况下提供至固定功能元件32或者来自固定功能元件32的数据流的流指令;以及如下面将讨论的用于强制执行(enforce)由流处理器38对数据的访问进行某种程度的序列化的屏障指令。由较低复杂度的通用处理器30提供至流处理器38的这些流指令的示例(表I中所示)通常如下标识数据源、目标数据和数据模式:
表I-流指令示例
这些指令如下面所讨论使用指定的模式在存储位置之间自主地传送数据。
使用(例如,在矢量缓冲器51中)存储的数据作为地址值,可以由流引擎52对数据进行间接寻址。在间接寻址时,例如将来自流模式的数据用作地址以获得由固定功能元件32操作的其他数据。该间接寻址会的作用使指针例如在访问稀疏矩阵的行时是有用的。流处理器38可以通过将两个流链接在一起来提供有助于间接访问的能力,第一流用于访问指针的连续模式或跨步模式,并且后续流从存储器系统16加载那些指针的值并且将其传递至可重配置的固定功能元件32。提供附加指令以生成常数值(而不是从存储器中加载这些值)并且丢弃未使用的输出值(而不是将这些值加载至非功能存储器区域)。
通常,可以由较高复杂度的通用处理器12可选地将这些指令中的每一个作为加速器的指令集架构的一部分直接发出,并且这些指令中的数据用于较低复杂度的通用处理器30的最小处理以控制加速器的其他部件。
现在参照图10,使用来自上面指令的数据,流处理器38提供状态机,用于使用预定义的存储器访问的模式在存储位置之间自主地加载或写入数据。最简单的模式是顺序读取(或写入)由指令指定的起始地址82与结束地址84之间的每个存储地址的线性模式80。通过将步长设置为等于零来指示该模式。在上面的指令中,将起始地址指定为用于读取的源地址以及用于写入的目标地址,同时通过提供实际的结束地址或计算所需的数据来指示结束地址,并且结束地址例如在源是端口时为元素的数目或者在源是存储器或暂存器时是访问大小乘以步长乘以步数的积加上起始地址。
替选地,可以将流处理器38编程以通过将步长设置为等于非零值来使用跨步模式85,非零值说明了由访问大小定义的访问部分87之间的地址中的间隙或跨步86。
类似地,可以通过将访问大小设置为大于步幅大小(这标志交叠模式)来调用交叠轴模式88。通过将步长设置为零以及由步数提供的重复,可以容易地获得重复模式89。
如本文中所使用的,预定义的存储器访问模式意味着可以由离散的模式指令组定义的有限数目的模式,离散的模式指令组供模式类型和定界符值,其中,可以在需要执行存储器访问的计算之前定义模式,而不是根据对被访问的数据进行计算功能的存储器访问模式。本文中所使用的自主意味着不需要由处理器12或30的进一步引导。
如上所述,较低复杂度的通用处理器30还可以向流处理器38提供屏障指令,这样的指令阻断发出新的存储器访问指令直至完成与数据存储资源相关联的某些先前指令为止。例如,与对暂存存储器36的写入相关联的屏障指令(如上表II中示出)将阻断对暂存存储器36的后续写入,直至完成屏障指令之前的对暂存存储器36的所有写入为止。屏障还可以用于向较低复杂度的通用处理器30发信号通知计算完成以使它们在满足时指示先前流的完成。
表II-屏障指令示例
将意识到,在没有屏障指令的情况下,将允许同时执行所有流。因此,如果两个流命令读取和写入相同的暂存器或存储器地址,则该操作的语义将是不确定的。屏障指令允许强制执行存储器相关性并且可以由编译器实现并且在流指令中提供。这与资源争用无关。
较低复杂度的通用处理器30还可以公开包括固定功能元件32的数目和类型以及用于由如本领域中通常所理解的编译器使用的缓冲器50和50'的深度的计算机加速器24的硬件参数。
现在参照图4,在该架构中,固定功能元件32将与单个的流处理器38相关联并且单个的流处理器38将与固定功能元件32相关联;然而,本发明预期加速器24可以在配置步骤中被配置成使用配置多路复用器56和解复用器58在不同的固定功能元件32中进行选择,例如在制造时或在配置步骤中设置例如通过系统驱动器来选择固定功能元件32中的一个并且使其他空闲或者由其他流处理器使用。在其他方面,该实施方式的操作与关于图2描述的操作相同。
如图5所示,可以通过将固定功能元件32集中在可以连接的单独的池60中来扩展该原理,例如使得池60中的任何固定功能元件32可以通过交叉切换器62连接至不包括内部固定功能元件32的不同加速器24中的任何一个。以这种方式,通过在加速器24之间自由地分配这些功能单元,可以提高对各种不同功能单元的利用。同样,可以在工厂或者在使用之前的加速器24的配置期间完成该配置,并且在配置之后该配置基本上如图2的架构进行操作。
某些术语在本文中仅用于参照的目的并且因此并不旨在进行限制。例如,诸如“上”、“下”、“上面”和“下面”的术语是指所参照的附图中的方向。诸如“前”、“后”、“背”、“底部”和“侧部”的术语在一致但任意的参考系内描述了部件的各部分的取向,这通过参照文本以及描述讨论中的部件的相关附图将变得清楚。这样的术语可以包括上面具体提到的词语、其衍生词以及类似含义的词语。类似地,除非由上下文明确地指出,否则术语“第一”、“第二”和涉及结构的其他这样的数字术语不暗示次序或顺序。
术语“较低复杂度”和“较高复杂度”仅指的是较低复杂度处理器和较高复杂度处理器的相对复杂度而不是绝对复杂度。术语“固定程序功能元件”指的是接收数值以对这些数值执行功能以产生数值结果的功能元件,其中该功能不被与加速器相关联的通用处理器改变。
当介绍本公开内容和示例性实施方式的元件或特征时,冠词“一”、“一个”、“该”和“所述”旨在表示存在一个或更多个这样的元件或特征。术语“包含”、“包括”和“具有”旨在是包容性的并且意味着可能存在除了具体指出的那些之外的其他元件或特征。还应理解,除非被特别标识了执行顺序,否则本文中描述的方法步骤、过程和操作不应被解释为必须要求以所讨论或所示出的特定顺序执行。还应当理解,可以采用附加的或替选的步骤。
对微控制器的引用应当被理解为包括能够执行本文描述的功能的任何电路,包括但不必限于冯诺依曼架构。
具体地,本发明不限于本文包含的实施方式和说明,并且权利要求应当被理解为包括所附权利要求的范围内的包括实施方式的部分以及不同实施方式的元件的组合的实施方式的修改形式。本文所描述的包括专利和非专利公开的所有公开均通过引用全部并入本文。

Claims (19)

1.一种计算机加速器架构,包括:
(1)较低复杂度的通用处理器,其适于从较高复杂度的通用处理器接收流指令,所述流指令描述要与存储器交换的多个数据元素的逻辑流;
(2)固定程序功能元件,其根据每个输入数据元素的可用性而启动,用于处理逻辑流的连续输入数据元素以提供逻辑流的结果输出数据元素;以及
(3)流处理器,其从所述较低复杂度的通用处理器接收所述流指令以根据所述流指令从所述存储器中自主地读取逻辑流的输入数据元素并且根据流指令将逻辑流的结果输出数据元素自主地写入存储器;并且
其中,由仅单个流处理器和仅单个功能元件组成的对进行操作以互通给定逻辑流的数据元素。
2.根据权利要求1所述的计算机加速器架构,其中,所述固定程序功能元件不包括程序计数器。
3.根据权利要求2所述的计算机加速器架构,其中,所述固定程序功能元件提供映射归约功能。
4.根据权利要求3所述的计算机加速器架构,其中,所述映射归约功能件提供选自由乘法和绝对差组成的组的映射功能并且提供选自由最大、最小和加法组成的组的归约功能。
5.根据权利要求2所述的计算机加速器架构,其中,所述固定程序功能元件是具有至少一个输出的乘法累加功能件,所述至少一个输出是一对输入参数的乘积的累计总和。
6.根据权利要求2所述的计算机加速器架构,其中,所述固定程序功能元件是具有输出的非线性变换功能件,所述输出是与插值相加的基础值,其中,从第一查找表中根据输入参数的最高有效位获得所述基础值并且所述插值是根据所述输入参数的最高有效位乘以所述输入参数的最低有效位从第二查找表中获得的斜率值。
7.根据权利要求1所述的计算机加速器架构,还包括多个功能元件和每次将单个功能元件分配至所述流处理器的切换器。
8.根据权利要求7所述的计算机加速器架构,还包括多个流处理器和多个功能元件以及可切换地将单个功能元件分配至单个流处理器的切换器。
9.根据权利要求1所述的计算机加速器架构,其中,所述功能元件用于处理至少三十二位参数。
10.根据权利要求9所述的计算机加速器架构,其中,所述功能元件能够通过将单独的数据字连结在一起并且将这些数据字作为参数进行处理来并行处理长度小于所述功能元件的参数长度的单独的数据字。
11.根据权利要求1所述的计算机加速器架构,其中,所述流处理器同时与给定的固定程序功能元件交换多个流。
12.根据权利要求1所述的计算机加速器架构,其中,从所述较低复杂度的通用处理器至所述流处理器的流指令可以相对于所述功能元件的操作被异步地接收并且根据不同的预定义的存储器访问模式用于对存储在存储器中的多个输入值的自主读取或者对来自所述计算机加速器架构的多个输出值的自主写入。
13.根据权利要求11所述的计算机加速器架构,其中,所述较低复杂度的通用处理器还适于从主处理器接收指令和数据以响应于所述指令和数据执行逻辑指令和算术指令,以将数据返回至所述主处理器而无需流处理器和至少一个功能元件的参与。
14.根据权利要求1所述的计算机加速器架构,其中,所述流处理器提供预定义的存储器访问模式,所述存储器访问模式包括在两个存储器地址之间的连续地址的线性访问模式和在两个存储器地址之间的规则间隔的不连续地址的跨步访问模式。
15.一种计算机架构,包括:
(1)第一通用处理器,其与存储器通信以接收指令以及读取数据和写入数据;
(2)第二通用处理器,其比所述第一通用处理器简易并且适于从所述第一通用处理器接收流指令,所述流指令描述要与存储器交换的多个数据元素的逻辑流;
(3)多个固定程序功能元件,每个固定程序功能元件根据每个输入数据元素的可用性而启动,用于顺序地处理逻辑流的连续输入数据元素以提供逻辑流的结果输出数据元素;
(4)多个流处理器,其从所述第二通用处理器接收所述流指令以根据所述流指令从所述存储器中自主地读取逻辑流的所述输入数据元素并且根据流指令将逻辑流的结果输出数据元素自主地写入存储器;以及
(5)电子控制切换器,其将单个流处理器仅与单个功能元件进行配对,配对操作用于相互通信给定逻辑流的数据元素。
16.根据权利要求15所述的计算机架构,其中,所述固定程序功能元件不包括程序计数器。
17.根据权利要求16所述的计算机架构,其中,所述固定程序功能元件提供具有至少一个输出的乘加归约功能,所述至少一个输出是一对第二总和的第一总和,每个第二总和是一对乘积的总和,所述乘积是一对输入参数的乘积。
18.根据权利要求16所述的计算机架构,其中,所述固定程序功能元件是具有至少一个输出的乘法累加功能件,所述至少一个输出是一对输入参数的乘积的累计总和。
19.根据权利要求16所述的计算机架构,其中,所述固定程序功能元件是具有输出的非线性变换功能件,所述输出是与插值相加的基础值,其中,根据输入参数的最高有效位从第一查找表中获得所述基础值并且所述插值是根据所述输入参数的最高有效位乘以所述输入参数的最低有效位从第二查找表中获得的斜率值。
CN201880043542.3A 2017-06-28 2018-06-06 具有预编程功能的高速计算机加速器 Active CN110799955B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/635,864 2017-06-28
US15/635,864 US11151077B2 (en) 2017-06-28 2017-06-28 Computer architecture with fixed program dataflow elements and stream processor
PCT/US2018/036290 WO2019005443A1 (en) 2017-06-28 2018-06-06 HIGH-SPEED COMPUTER ACCELERATOR WITH PRE-PROGRAMMED FUNCTIONS

Publications (2)

Publication Number Publication Date
CN110799955A CN110799955A (zh) 2020-02-14
CN110799955B true CN110799955B (zh) 2023-10-03

Family

ID=64738796

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880043542.3A Active CN110799955B (zh) 2017-06-28 2018-06-06 具有预编程功能的高速计算机加速器

Country Status (4)

Country Link
US (1) US11151077B2 (zh)
KR (1) KR102349138B1 (zh)
CN (1) CN110799955B (zh)
WO (1) WO2019005443A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US11144282B2 (en) * 2019-01-16 2021-10-12 Mediatek Inc. Mathematical accelerator for artificial intelligence applications
US11249766B1 (en) 2020-09-14 2022-02-15 Apple Inc. Coprocessor synchronizing instruction suppression

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0652125A (ja) * 1992-05-22 1994-02-25 Internatl Business Mach Corp <Ibm> コンピュータ・システム
US5590345A (en) * 1990-11-13 1996-12-31 International Business Machines Corporation Advanced parallel array processor(APAP)
CN1218567A (zh) * 1996-03-13 1999-06-02 钻石多媒体系统公司 多路并行数字数据流通道控制器体系结构
US5933650A (en) * 1997-10-09 1999-08-03 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
CN101578590A (zh) * 2005-08-23 2009-11-11 Slt逻辑有限公司 高速网络中用于可重新配置的位流处理的全协议引擎
US8447957B1 (en) * 2006-11-14 2013-05-21 Xilinx, Inc. Coprocessor interface architecture and methods of operating the same
CN104285415A (zh) * 2012-05-10 2015-01-14 马维尔国际贸易有限公司 混合数据流处理器

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6836289B2 (en) * 1999-12-20 2004-12-28 Texas Instruments Incorporated Digital still camera architecture with red and blue interpolation using green as weighting factors
US20030028751A1 (en) * 2001-08-03 2003-02-06 Mcdonald Robert G. Modular accelerator framework
US7920584B2 (en) 2005-05-04 2011-04-05 Arm Limited Data processing system
US20080244238A1 (en) 2006-09-01 2008-10-02 Bogdan Mitu Stream processing accelerator
US8122078B2 (en) 2006-10-06 2012-02-21 Calos Fund, LLC Processor with enhanced combined-arithmetic capability
US8726289B2 (en) 2008-02-22 2014-05-13 International Business Machines Corporation Streaming attachment of hardware accelerators to computer systems
US8181003B2 (en) 2008-05-29 2012-05-15 Axis Semiconductor, Inc. Instruction set design, control and communication in programmable microprocessor cores and the like
US10078620B2 (en) 2011-05-27 2018-09-18 New York University Runtime reconfigurable dataflow processor with multi-port memory access module
US9514094B2 (en) * 2012-07-10 2016-12-06 Maxeler Technologies Ltd Processing data sets using dedicated logic units to prevent data collision in a pipelined stream processor
US10591983B2 (en) 2014-03-14 2020-03-17 Wisconsin Alumni Research Foundation Computer accelerator system using a trigger architecture memory access 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
US9715475B2 (en) 2015-07-21 2017-07-25 BigStream Solutions, Inc. Systems and methods for in-line stream processing of distributed dataflow based computations

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5590345A (en) * 1990-11-13 1996-12-31 International Business Machines Corporation Advanced parallel array processor(APAP)
JPH0652125A (ja) * 1992-05-22 1994-02-25 Internatl Business Mach Corp <Ibm> コンピュータ・システム
CN1218567A (zh) * 1996-03-13 1999-06-02 钻石多媒体系统公司 多路并行数字数据流通道控制器体系结构
US5933650A (en) * 1997-10-09 1999-08-03 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
CN101578590A (zh) * 2005-08-23 2009-11-11 Slt逻辑有限公司 高速网络中用于可重新配置的位流处理的全协议引擎
US8447957B1 (en) * 2006-11-14 2013-05-21 Xilinx, Inc. Coprocessor interface architecture and methods of operating the same
CN104285415A (zh) * 2012-05-10 2015-01-14 马维尔国际贸易有限公司 混合数据流处理器

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Tony Nowatzki等."Exploring the Potential of Heterogeneous Von Neumann/Dataflow Execution Models".《2015 ACM/IEEE 42nd Annual International Symposium on Computer Architecture》.2015,正文第3.1-3.2节. *
Tony Nowatzki等."Pushing the limits of accelerator efficiency while retaining programmability".《2016 IEEE International Symposium on High Performance Computer Architecture (HPCA)》.2016,第1-13页. *

Also Published As

Publication number Publication date
KR102349138B1 (ko) 2022-01-10
KR20200013715A (ko) 2020-02-07
CN110799955A (zh) 2020-02-14
US20190004995A1 (en) 2019-01-03
US11151077B2 (en) 2021-10-19
WO2019005443A1 (en) 2019-01-03

Similar Documents

Publication Publication Date Title
CN110214309B (zh) 可重新配置专用计算机加速器
CN106991478B (zh) 用于执行人工神经网络反向训练的装置和方法
US9830156B2 (en) Temporal SIMT execution optimization through elimination of redundant operations
US8639882B2 (en) Methods and apparatus for source operand collector caching
US11604649B2 (en) Techniques for efficiently transferring data to a processor
KR101922681B1 (ko) 셰이더 코어에서 셰이더 자원 할당을 위한 정책
US10346212B2 (en) Approach for a configurable phase-based priority scheduler
CN104025185B (zh) 用于使用gpu控制器来预加载缓存的机制
CN110799955B (zh) 具有预编程功能的高速计算机加速器
US20130145124A1 (en) System and method for performing shaped memory access operations
TWI533222B (zh) 處理任務的工作分配控制
JP2009230757A (ja) 共有メモリに対するアトミックな更新を可能にするロックメカニズム
CN112130969A (zh) 有效执行经由任务图指定的工作负载
US11762793B2 (en) Direct memory access architecture with multi-level multi-striding
US8578387B1 (en) Dynamic load balancing of instructions for execution by heterogeneous processing engines
KR101900436B1 (ko) 결합된 cpu/gpu 아키텍처 시스템에서의 디바이스의 발견 및 토폴로지 보고
CN103885902A (zh) 用于经由纹理硬件实施存储器访问操作的技术
US11907717B2 (en) Techniques for efficiently transferring data to a processor
US20130166877A1 (en) Shaped register file reads
CN103885903A (zh) 用于经由纹理硬件实施存储器访问操作的技术
CN112749120A (zh) 将数据有效地传输至处理器的技术
US11023242B2 (en) Method and apparatus for asynchronous scheduling
KR20140004654A (ko) 처리 디바이스의 동기 동작을 위한 방법 및 시스템
US8413151B1 (en) Selective thread spawning within a multi-threaded processing system
US9098917B2 (en) Method and system for accelerating collision resolution on a reconfigurable processor

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: 40019155

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant