CN116420136A - 共享操作数的垂直和水平广播 - Google Patents
共享操作数的垂直和水平广播 Download PDFInfo
- Publication number
- CN116420136A CN116420136A CN202180064979.7A CN202180064979A CN116420136A CN 116420136 A CN116420136 A CN 116420136A CN 202180064979 A CN202180064979 A CN 202180064979A CN 116420136 A CN116420136 A CN 116420136A
- Authority
- CN
- China
- Prior art keywords
- array
- parameter values
- processor elements
- memory
- processor
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 claims description 22
- 239000013598 vector Substances 0.000 claims description 12
- 238000003491 array Methods 0.000 description 47
- 238000012545 processing Methods 0.000 description 30
- 238000013461 design Methods 0.000 description 9
- 239000011159 matrix material Substances 0.000 description 9
- 230000008901 benefit Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 238000004519 manufacturing process Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000011960 computer-aided design Methods 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002730 additional effect Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
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/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17318—Parallel communications techniques, e.g. gather, scatter, reduce, roadcast, multicast, all to all
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17331—Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
- G06F15/8023—Two dimensional arrays, e.g. mesh, torus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
- G06F15/8092—Array of vector units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3888—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Multi Processors (AREA)
- Advance Control (AREA)
Abstract
阵列处理器包括以行和列分布的处理器元件阵列。处理器元件阵列对参数值执行操作。阵列处理器还包括存储器接口,其将参数值的集合广播到处理器元件阵列的行和列的互斥子集。在一些情况下,阵列处理器包括:单指令多数据(SIMD)单元,其包括对应行中的处理器元件阵列的子集;工作组处理器(WGP),其包括SIMD单元的子集二以及存储器结构,其被配置为与存储参数值的外部存储器互连。存储器接口将参数值广播到SIMD单元,该SIMD单元包括与存储器接口相关联的行中的处理器元件阵列和跨WGP中的SIMD单元实施的处理器元件阵列的列。存储器接口经由存储器结构从外部存储器存取参数值。
Description
背景技术
图形处理单元(GPU)和其它多线程处理单元通常实施同时对多个数据集执行单个程序的多个实例的多个处理元件(其也被称为处理器内核或计算单元)。例如,处理元件可实施单指令多数据(SIMD)协议以利用多个计算单元对多个数据集同时执行相同指令。因此,处理元件被称为SIMD单元。分级执行模型用于匹配在硬件中实现的分级结构。执行模型限定由所有波(也称为波前、线程、流或工作项)执行的指令的内核。在一些情况下,在处理系统中实施的GPU或其它多线程处理单元的处理能力被补充有也实施SIMD协议的一个或多个加速器。在GPU或其它多线程处理单元中实施的加速器电路的一个示例是阵列处理器。
发明内容
在一个方面中,一种装置包括以行和列分布的处理器元件阵列,其中该处理器元件阵列被配置为对参数值执行操作,并且还包括存储器接口,该存储器接口被配置为将该参数值的集合广播到该处理器元件阵列的该行和列的互斥子集。在各种实施方案中,该处理器元件阵列包括向量算术逻辑单元(ALU)处理器,并且其中该存储器接口包括直接存储器存取(DMA)引擎,该存储器接口中的每一者将该参数值广播到该行中对应一行和该列中对应一列中的该处理器元件阵列,并且/或者该存储器接口的第一存储器接口将第一参数值广播到第一行和第一列中的该处理器元件阵列,并且其中该存储器接口的第二存储器接口将第二参数值广播到第二行和第二列中的该处理器元件阵列,该存储器接口经由单独的物理连接而连接到该处理器元件阵列的行和列的互斥子集,该存储器接口被配置为用该参数值同时填充与该行和列的该互斥子集中的该处理器元件阵列相关联的寄存器,该装置还包括单指令多数据(SIMD)单元,该SIMD单元包括对应行中的该处理器元件阵列的子集,并且其中该存储器接口将该参数值广播到包括与该存储器接口相关联的行中的该处理器元件阵列的该SIMD单元,该装置还包括工作组处理器,该工作组处理器包括该SIMD单元的子集,并且其中该存储器接口将该参数值广播到跨该工作组处理器中的该SIMD单元实施的处理器元件阵列的列,并且/或者该装置还包括被配置为与存储该参数值的外部存储器互连的存储器结构,并且其中该存储器接口被配置为经由该存储器结构从该外部存储器存取该参数值。
根据另一方面,一种方法包括:经由存储器接口从存储器取参数值;从该存储器接口将该参数值广播到处理器元件阵列的行和列的互斥子集;以及在该处理器元件阵列处对该参数值执行操作。
在各种实施方案中,从该存储器接口广播该参数值包括将该参数值从该存储器接口中的每一者广播到该行中对应一行以及该列中对应一列中的该处理器元件阵列,广播该参数值包括将第一参数值从该存储器接口的第一存储器接口广播到第一行和第一列中的该处理器元件阵列,并且其中广播该参数值包括将第二参数值从该存储器接口的第二存储器接口广播到第二行和第二列中的该处理器元件阵列,广播该参数值包括经由该存储器接口与对应行和列之间的单独物理连接来广播该参数值,广播该参数值包括同时用该参数值填充与该行和列的该互斥子集中的该处理器元件阵列相关联的寄存器,每个行的该处理器元件的子集被实施在对应的单指令多数据(SIMD)单元中,并且其中广播该参数值包括将该参数值广播到包括与该存储器接口相关联的行中的该处理器元件阵列的该SIMD单元,并且/或者其中该SIMD单元的子集被实施在对应的工作组处理器中,并且其中广播该参数值包括将该参数值广播到跨该工作组处理器中的该SIMD单元实施的该处理器元件阵列的列,并且/或者取该参数值包括经由被配置为与存储该参数值的该存储器互连的存储器结构来存取该参数值。
附图说明
通过参考附图,本公开可以被更好地理解,并且其许多特征和优点对于本领域技术人员是显而易见的。在不同附图中使用相同的附图标记表示类似或相同的项目。
图1是根据一些实施方案的执行阵列处理器中的共享操作数的垂直和水平广播的处理系统的框图。
图2是根据一些实施方案的支持参数值的垂直和水平广播的处理系统的一部分的框图。
图3是根据一些实施方案的阵列处理器的框图,该阵列处理器实施向处理器元件阵列的互斥子集的参数值的垂直和水平广播。
图4是根据一些实施方案的向处理器元件阵列的行或列广播参数值的方法的流程图。
具体实施方式
阵列处理器系统包括一个或多个工作组处理器(WGP),工作组处理器(WGP)包括一组SIMD单元。例如,阵列处理器可包括四个WGP,每个WGP实施四个SIMD单元。SIMD单元包括对向量或矩阵执行向量操作(诸如乘法-累积运算)的一组处理器元件阵列。例如,SIMD单元可包括四个处理器元件阵列,其中该处理器元件阵列中的每一者包括8x8阵列的电路以对一对输入向量执行操作(例如乘法-累积运算)。如本文中所使用,术语″向量″也可以是指矩阵的单独行或列。此外,术语″矩阵″通常是指包括向量的值阵列,向量被理解为1xN矩阵。阵列处理器系统中的处理器元件阵列对具有对应于处理器元件阵列的数量的维度的矩阵执行内核操作,诸如矩阵乘法。例如,包括四个WGP的阵列处理器可以乘64x64矩阵,该WGP包括由四个处理器元件阵列构成的四个SIMD单元。
一个或多个直接存储器存取(DMA)引擎经由存储器结构从存储器检索用于由处理器元件阵列执行的内核操作的输入值,并且DMA引擎经由存储器结构将输出值写回到存储器。例如,四个WGP中的每一者可包括一对DMA引擎,其取用于对应的SIMD单元对的值。阵列处理器系统对矩阵执行的许多内核操作反复地重复使用相同的参数值。例如,用于实施机器学习应用的乘法-累积运算在执行向量或矩阵乘法时可多次重复使用相同的向量或矩阵值。重复地预取相同参数消耗阵列处理器系统中的大量存储器带宽,并且由于系统变得带宽受限而降低阵列处理器系统的效率。
图1至图4公开了阵列处理器系统的实施方案,其使用直接存储器存取(DMA)引擎来将参数值的集合广播到阵列处理器系统的互斥行和列中的处理器元件阵列,由此减少将参数取到处理器元件阵列中所消耗的带宽。处理器元件阵列被实施成向量算术逻辑单元(ALU)处理器。在一些实施方案中,每个DMA引擎将参数值广播到一行处理器元件阵列和一列处理器元件阵列。如果阵列处理器系统支持多个工作组处理器(WGP),则每个DMA引擎将参数值广播到在与DMA引擎相关联的SIMD单元中实施的一行处理器元件阵列和跨WGP的SIMD单元实施的一列处理器元件阵列。例如,第一DMA引擎将参数值广播到第一行处理器元件阵列和第一列处理器元件阵列,第二DMA引擎将参数值广播到第二行处理器元件阵列和第二列处理器元件阵列,第三DMA引擎将参数值广播到第三行处理器元件阵列和第三列处理器元件阵列,等等。将DMA引擎与互斥的行/列集合相关联就允许保持用于不同处理器元件阵列的输入值的寄存器的并发填充。因此,减少了取重复使用的参数值所消耗的存储器结构的带宽,并且提高了阵列处理器系统的效率。
图1是根据一些实施方案的执行阵列处理器101中的共享操作数的垂直和水平广播的处理系统100的框图。处理系统100包括或可访问使用非暂态计算机可读介质诸如动态随机存取存储器(DRAM)实现的存储器105或其他存储部件。然而,在一些情况下,存储器105使用其他类型的存储器(包括静态随机存取存储器(SRAM)、非易失性RAM等)来实现。存储器105被称为外部存储器,因为它是在处理系统100中实现的处理单元的外部实现的。处理系统100还包括总线110以支持处理系统100诸如存储器105中实现的实体之间的通信。处理系统100的一些实施方案包括其他总线、桥接件、交换机、路由器等,其在清楚的情况下未在图1中示出。
在不同的实施方案中,本文中描述的技术用于多种并行处理器(例如,向量处理器、图形处理单元(GPU)、通用GPU(GPGPU)、非标量处理器、高度并行处理器、人工智能(AI)处理器、推理引擎、机器学习处理器、其他多线程处理单元等)中的任一种处理器。图1示出了根据一些实施方案的并行处理器,特别是GPU 115的示例。GPU 115渲染用于在显示器120上呈现的图像。例如,GPU 115渲染对象以产生提供给显示器120的像素值,该显示器使用像素值来显示表示所渲染对象的图像。GPU 115实现并发或并行地执行指令的多个处理器内核121、122、123(本文统称为″处理器内核121至123″)。处理器内核121至123的一些实施方案作为对不同数据集执行相同操作的SIMD单元来操作。在GPU 115中实现的处理器内核121至123的数量是设计选择的问题,并且GPU 115的一些实施方案包括比图1所示更多或更少的处理器内核。GPU 115的一些实施方案用于通用计算。GPU 115执行指令(诸如存储在存储器105中的程序代码125),并且GPU 115将信息(诸如所执行指令的结果)存储在存储器105中。
处理系统100还包括中央处理单元(CPU)130,其连接到总线110并且因此经由总线110与GPU 115和存储器105通信。CPU 130实现并发或并行地执行指令的多个处理器内核131、132、133(本文统称为″处理器内核131至133″)。处理器内核131至133的一些实施方案作为对不同数据集执行相同操作的SIMD单元来操作。在CPU 130中实现的处理器内核131至133的数量是设计选择的问题,并且一些实施方案包括比图1所示更多或更少的处理器内核。处理器内核131至133执行指令(诸如存储在存储器105中的程序代码135),并且CPU 130将信息(诸如所执行指令的结果)存储在存储器105中。CPU 130还能够通过向GPU 115发出绘制调用来发起图形处理。CPU 130的一些实施方案实现同时或并行地执行指令的多个处理器内核(为了清楚起见图1中未示出)。
输入/输出(I/O)引擎145处理与显示器120以及处理系统100的其他元件(诸如,键盘、鼠标、打印机、外部盘等)相关联的输入或输出操作。I/O引擎145被耦接到总线110,使得I/O引擎145与存储器105、GPU 115或CPU 130通信。在例示的实施方案中,I/O引擎145读取存储在外部存储部件150上的信息,该外部存储部件使用非暂态计算机可读介质,诸如光盘(CD)、数字视频盘(DVD)等来实现。I/O引擎145还能够将信息写入外部存储部件150,诸如GPU 115或CPU 130的处理结果。
阵列处理器101补充GPU 115的处理能力,并且在一些情况下补充CPU 130的处理能力。处理器元件阵列的集合155用于通过允许GPU 115将任务卸载到集合155中的一个或多个处理器元件阵列而执行加速或改善GPU 115的性能的操作。处理器元件阵列然后将结果返回到GPU 115。在一些实施方案中,处理器元件阵列被实现为向量算术逻辑单元(ALU),其包括对整数二进制数执行算术和逐位运算的电路。因此,处理器元件阵列接收一个或多个输入(或操作数)并且基于操作数和指示由处理器元件阵列执行的操作的操作码而生成对应输出。操作数、操作码和其它状态值被存储在与处理器元件阵列相关联的寄存器中。
集合155中的处理器元件阵列分布在行和列中。如下文所论述,阵列处理器101还包括存储器接口,该存储器接口(例如,从存储器105)读取参数值并且将参数值的集合广播到处理器元件阵列的行和列的互斥子集。在一些情况下,阵列处理器101包括:单指令多数据(SIMD)单元,其包括对应行中的处理器元件阵列的子集;工作组处理器(WGP),其包括SIMD单元的子集;以及存储器结构,其被配置为与存储参数值的外部存储器(例如,存储器105)互连。存储器接口将参数值广播到SIMD单元,该SIMD单元包括与存储器接口相关联的行中的处理器元件阵列和跨WGP中的SIMD单元实施的处理器元件阵列的列。存储器接口经由存储器结构从外部存储器存取参数值。
图2是根据一些实施方案的支持参数值的垂直和水平广播的处理系统的一部分200的框图。部分200用于实现图1所示的阵列处理器101的一些实施方案。部分200包括实现计算单元210、215的对的一组WGP 205、206、207、208(本文中统称为″WGP 205-208″)。为了清楚起见,计算单元210、215仅在WGP 205中示出,但是WGP 206-208也包括计算单元对。部分200的一些实施方案实现更多或更少的WGP和对应的计算单元。
WGP 205-208包括SIMD单元220、221、222、223(在本文中统称为″SIMD单元220-223″)和存储器接口,诸如直接存储器存取(DMA)引擎225、230。存储器接口的一些实施方案还包括结合DMA引擎225、230操作的TA/TD逻辑和TCP接口。SIMD单元220-223中的每一者实现一组处理器元件阵列的一部分。在所例示的实施方案中,SIMD单元221包括处理器元件阵列240、241、242、243(本文中统称为″处理器元件阵列240-243″)的子集235,并且SIMD单元223包括处理器元件阵列250、215、252、253(本文中统称为″处理器元件阵列250-253″)的子集245。SIMD单元220、222还包括为了清楚起见未在图2中示出的处理器元件阵列的其它子集。
DMA引擎225、230连接到在DMA引擎225、230和随机存取存储器(RAM)诸如SRAM 260之间提供一个或多个通道的存储器结构255。在所例示的实施方案中,SRAM 260连接到系统存储器265,诸如图1中所示的存储器105。部分200还包括与WGP 205-208和存储器结构255通信的异步计算引擎270。
DMA引擎225、230经由存储器结构255从SRAM 260或系统存储器265取参数值。所取的参数值然后被广播到包括处理器元件阵列240-243、250-253的处理器元件阵列的互斥子集。在一些实施方案中,DMA引擎225、230将参数值广播到处理器元件阵列集合的对应行和列中的处理器元件阵列。例如,DMA引擎225可将第一参数值广播到第一行(例如,包括处理器元件阵列240-243的行)和第一列(例如,包括处理器元件阵列240、250的列)中的处理器元件阵列。DMA引擎230可将第二参数值广播到第二行(例如,处理器元件阵列250-253)和第二列(例如,处理器元件阵列241、251)中的处理器元件阵列。在这种情况下,一行中的处理器元件阵列240-243的子集与另一行中的处理器元件阵列250-253的子集互斥。包括处理器元件阵列240、250的列中的处理器元件阵列的子集与包括处理器元件阵列241、251的列中的处理器元件阵列的子集互斥。因此,DMA引擎225、230用其对应的所取参数值同时填充与行和列的互斥子集中的处理器元件阵列相关联的寄存器。
图3是根据一些实施方案的阵列处理器300的框图,该阵列处理器实施向处理器元件阵列的互斥子集的参数值的垂直和水平广播。阵列处理器300用于实现图1所示的阵列处理器101的一些实施方案。阵列处理器300包括DMA引擎301、302、303、304(在本文中统称为″DMA引擎301-304″),其从存储器(诸如图1中所示的存储器105或图2中所示的存储器260、265)取参数。阵列处理器300还包括SIMD单元310、320、330、340、350、360、370、380,其利用处理器元件阵列311、312、313、314、321、322、323、324、331、332、333、334、341、342、343、344、351、352、353、354、361、362、363、364、371、372、373、374、381、382、383和384的对应子集来实施(为了简洁起见,本文中统称为″处理器元件阵列311-384″,因此连字符不旨在指示311与384之间的连续数字序列)。SIMD单元310、320、330、340、350、360、370、380的一些实施方案在不同的WGP中实施。例如,第一WGP可实施SIMD单元310、320,第二WGP可实施SIMD单元330、340,第三WGP可实施SIMD单元350、360,并且第四WGP可实施SIMD单元370、380。
DMA引擎301-304与处理器元件阵列311-384的互斥子集互连。在所例示的实施方案中,DMA引擎301-304利用包括导线、迹线等的物理连接而互连到处理器元件阵列311-384的阵列中的互斥的行和列。DMA引擎301通过物理连接391连接到包括处理器元件阵列311-314、321-324的行和包括处理器元件阵列311、331、351、371的列。因此,DMA引擎301可将从存储器取的参数值广播到处理器元件阵列311-314、321-324、处理器元件阵列311、331、351、371、这些处理器元件阵列的子集、或其组合。DMA引擎302通过物理连接392连接到包括处理器元件阵列331-334、341-344的行和包括处理器元件阵列312、332、352、372的列。因此,DMA引擎302可将从存储器取的参数值广播到处理器元件阵列331-334、341-344、处理器元件阵列312、332、352、372、这些处理器元件阵列的子集、或其组合。DMA引擎303通过物理连接393连接到包括处理器元件阵列351-354、361-364的行和包括处理器元件阵列313、333、353、373的列。因此,DMA引擎303可将从存储器取的参数值广播到处理器元件阵列351-354、361-364、处理器元件阵列313、333、353、373、这些处理器元件阵列的子集、或其组合。DMA引擎304通过物理连接394连接到包括处理器元件阵列371-374、381-384的行和包括处理器元件阵列324、344、364、384的列。因此,DMA引擎304可将从存储器取的参数值广播到处理器元件阵列371-374、381-384、处理器元件阵列324、344、364、384、这些处理器元件阵列的子集、或其组合。
图4是根据一些实施方案的向处理器元件阵列的行或列广播参数值的方法400的流程图。方法400是在图1所示的处理系统100、图2所示的处理系统的部分200、和图3所示的阵列处理器300的一些实施方案中实现的。
方法400在框401处开始。在框405处,一个或多个存储器接口(诸如DMA引擎)从存储器存取用于SIMD指令的对应参数值。在框410处,DMA引擎将参数值广播到处理器元件阵列的互斥的列或行。如本文所讨论的,DMA引擎利用DMA引擎与处理器元件阵列的列或行的互斥子集之间的物理互连来广播参数值。
在决策框415处,系统确定是否要从存储器取附加参数值。如果是,则方法400流回到框405,并且从存储器取附加参数值。如果没有附加参数值要取,则方法400流动到框420并且方法400结束。
在一些实施方案中,上述装置和技术在包括一个或多个集成电路(IC)设备(也称为集成电路封装或微芯片)的系统中实现,诸如上文参考图1至图4所描述的阵列处理器。电子设计自动化(EDA)和计算机辅助设计(CAD)软件工具可以在这些IC设备的设计和制造中使用。这些设计工具通常表示为一个或多个软件程序。一个或多个软件程序包括可由计算机系统执行的代码,以操纵计算机系统对代表一个或多个IC设备的电路的代码进行操作以便执行用以设计或调整制造系统以制造电路的过程的至少一部分。该代码可以包括指令、数据、或指令和数据的组合。代表设计工具或制造工具的软件指令通常存储在计算系统可访问的计算机可读存储介质中。同样,代表IC设备的设计或制造的一个或多个阶段的代码可以存储在相同计算机可读存储介质或不同计算机可读存储介质中并从其访问。
计算机可读存储介质可以包括在使用期间可由计算机系统访问以向计算机系统提供指令和/或数据的任何非暂态存储介质或非暂态存储介质的组合。此类存储介质可以包括但不限于光学介质(例如,光盘(CD)、数字通用光盘(DVD)、蓝光光盘)、磁性介质(例如,软盘、磁带或磁性硬盘驱动器)、易失性存储器(例如,随机存取存储器(RAM)或高速缓存)、非易失性存储器(例如,只读存储器(ROM)或闪存存储器)、或基于微机电系统(MEMS)的存储介质。计算机可读存储介质可以嵌入计算系统(例如,系统RAM或ROM)中,固定地附接到计算系统(例如,磁性硬盘驱动器),可移除地附接到计算系统(例如,光盘或基于通用串行总线(USB)的闪存存储器),或者经由有线或无线网络(例如,网络可访问存储装置(NAS))耦接到计算机系统。
在一些实施方案中,上述技术的某些方面可以由执行软件的处理系统的一个或多个处理器实现。软件包括可执行指令的一个或多个集合,该可执行指令存储在或以其他方式有形地体现在非暂态计算机可读存储介质上。软件可包括指令和某些数据,这些指令和数据在由一个或多个处理器执行时操纵一个或多个处理器以执行上述技术的一个或多个方面。非暂态计算机可读存储介质可包括例如磁盘或光盘存储设备、固态存储设备诸如闪存存储器、高速缓冲存储器、随机存取存储器(RAM)或其他一个或多个非易失性存储器设备等。存储在非暂态计算机可读存储介质上的可执行指令可以是源代码、汇编语言代码、目标代码、或者被一个或多个处理器解释或以其他方式执行的其他指令格式。
应当注意,并非以上在一般描述中描述的所有活动或元件都是必需的,特定活动或设备的一部分可能不是必需的,并且可以执行一个或多个另外的活动,或者除了所描述的那些之外还包括元件。更进一步地,列出活动的顺序不一定是执行它们的顺序。另外,已经参考具体实施方案描述了这些概念。然而,本领域普通技术人员理解,在不脱离如以下权利要求中阐述的本公开的范围的情况下,可以进行各种修改和改变。因此,说明书和附图被认为是说明性的而非限制性的,并且所有此类修改旨在被包括在本公开的范围内。
上文已经关于具体实施方案描述了益处、其他优点和问题的解决方案。然而,益处、优点、问题的解决方案以及可以导致任何益处、优点或解决方案出现或变得更显著的任何特征不应被解释为任何或所有权利要求的关键的、必需的或基本的特征。此外,上文公开的特定实施方案仅是说明性的,因为所公开的主题可以以受益于本文中的教导内容的本领域的技术人员显而易见的不同但等效的方式来修改和实践。除了以下权利要求书中所描述的之外,不旨在对本文所示的构造或设计的细节进行限制。因此,显而易见的是,可以改变或修改上文公开的特定实施方案,并且所有此类变化被认为是在所公开的主题的范围内。因此,本文寻求的保护如以下权利要求中所阐述。
Claims (17)
1.一种设备,包括:
以行和列分布的处理器元件阵列,其中所述处理器元件阵列被配置为对参数值执行操作;和
存储器接口,所述存储器接口被配置为将所述参数值的集合广播到所述处理器元件阵列的所述行和列的互斥子集。
2.根据权利要求1所述的设备,其中所述处理器元件阵列包括向量算术逻辑单元(ALU)处理器,并且其中所述存储器接口包括直接存储器存取(DMA)引擎。
3.根据权利要求1或2所述的设备,其中所述存储器接口中的每一者将所述参数值广播到所述行中对应一行和所述列中对应一列中的所述处理器元件阵列。
4.根据权利要求3所述的设备,其中所述存储器接口中的第一存储器接口将第一参数值广播到第一行和第一列中的所述处理器元件阵列,并且其中所述存储器接口中的第二存储器接口将第二参数值广播到第二行和第二列中的所述处理器元件阵列。
5.根据权利要求1至4中任一项所述的设备,其中所述存储器接口经由单独的物理连接被连接到所述处理器元件阵列的行和列的所述互斥子集。
6.根据权利要求1至5中任一项所述的设备,其中所述存储器接口被配置为用所述参数值同时填充与所述行和列的所述互斥子集中的所述处理器元件阵列相关联的寄存器。
7.根据权利要求1至6中任一项所述的设备,还包括:
单指令多数据(SIMD)单元,所述SIMD单元包括对应行中的所述处理器元件阵列的子集,并且
其中所述存储器接口将所述参数值广播到包括与所述存储器接口相关联的行中的所述处理器元件阵列的所述SIMD单元。
8.根据权利要求7所述的设备,还包括:
包括所述SIMD单元的子集的工作组处理器,并且
其中所述存储器接口将所述参数值广播到跨所述工作组处理器中的所述SIMD单元实施的处理器元件阵列的列。
9.根据权利要求1至8中任一项所述的设备,还包括:
存储器结构,所述存储器结构被配置为与存储所述参数值的外部存储器互连,并且
其中所述存储器接口被配置为经由所述存储器结构从所述外部存储器存取所述参数值。
10.一种方法,包括:
经由存储器接口从存储器取参数值;
从所述存储器接口将所述参数值广播到处理器元件阵列的行和列的互斥子集;以及
在所述处理器元件阵列处对所述参数值执行操作。
11.根据权利要求10所述的方法,其中从所述存储器接口广播所述参数值包括将所述参数值从所述存储器接口中的每一者广播到所述行中对应一行和所述列中对应一列中的所述处理器元件阵列。
12.根据权利要求11所述的方法,其中广播所述参数值包括从所述存储器接口中的第一存储器接口将第一参数值广播到第一行和第一列中的所述处理器元件阵列,并且其中广播所述参数值包括从所述存储器接口中的第二存储器接口将第二参数值广播到第二行和第二列中的所述处理器元件阵列。
13.根据权利要求10所述的方法,其中广播所述参数值包括经由所述存储器接口与所述对应行和列之间的单独物理连接来广播所述参数值。
14.根据权利要求10所述的方法,其中广播所述参数值包括用所述参数值同时填充与所述行和列的所述互斥子集中的所述处理器元件阵列相关联的寄存器。
15.根据权利要求10所述的方法,其中每一行的所述处理器元件阵列的子集在对应的单指令多数据(SIMD)单元中实施,并且其中广播所述参数值包括将所述参数值广播到包括与所述存储器接口相关联的行中的所述处理器元件阵列的所述SIMD单元。
16.根据权利要求15所述的方法,其中所述SIMD单元的子集在对应的工作组处理器中实施,并且其中广播所述参数值包括将所述参数值广播到跨所述工作组处理器中的所述SIMD单元实施的所述处理器元件阵列的列。
17.根据权利要求10至16中任一项所述的方法,其中取所述参数值包括经由被配置为与存储所述参数值的所述存储器互连的存储器结构来存取所述参数值。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/032,307 | 2020-09-25 | ||
US17/032,307 US11635967B2 (en) | 2020-09-25 | 2020-09-25 | Vertical and horizontal broadcast of shared operands |
PCT/US2021/051892 WO2022066998A1 (en) | 2020-09-25 | 2021-09-24 | Vertical and horizontal broadcast of shared operands |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116420136A true CN116420136A (zh) | 2023-07-11 |
Family
ID=80822569
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180064979.7A Pending CN116420136A (zh) | 2020-09-25 | 2021-09-24 | 共享操作数的垂直和水平广播 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11635967B2 (zh) |
EP (1) | EP4217856A1 (zh) |
JP (1) | JP2023542835A (zh) |
KR (1) | KR20230069952A (zh) |
CN (1) | CN116420136A (zh) |
WO (1) | WO2022066998A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11995030B1 (en) * | 2022-11-10 | 2024-05-28 | Azurengine Technologies, Inc. | Reconfigurable parallel processor with stacked columns forming a circular data path |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6023753A (en) * | 1997-06-30 | 2000-02-08 | Billion Of Operations Per Second, Inc. | Manifold array processor |
US6898691B2 (en) * | 2001-06-06 | 2005-05-24 | Intrinsity, Inc. | Rearranging data between vector and matrix forms in a SIMD matrix processor |
JP5076418B2 (ja) * | 2006-09-19 | 2012-11-21 | ソニー株式会社 | 共有メモリ装置 |
US8923510B2 (en) * | 2007-12-28 | 2014-12-30 | Intel Corporation | Method and apparatus for efficiently implementing the advanced encryption standard |
GB2457310B (en) * | 2008-02-11 | 2012-03-21 | Picochip Designs Ltd | Signal routing in processor arrays |
US20190377580A1 (en) | 2008-10-15 | 2019-12-12 | Hyperion Core Inc. | Execution of instructions based on processor and data availability |
US8699622B2 (en) * | 2010-01-04 | 2014-04-15 | Allen LeRoy Limberg | Methods and apparatuses for implementing selective interference-filter pre-coding of main-service 8-VSB DTV signals |
US10353860B2 (en) | 2015-10-08 | 2019-07-16 | Via Alliance Semiconductor Co., Ltd. | Neural network unit with neural processing units dynamically configurable to process multiple data sizes |
KR102369209B1 (ko) | 2017-02-23 | 2022-02-28 | 세레브라스 시스템즈 인코포레이티드 | 가속화된 심층 학습 |
US10564980B2 (en) | 2018-04-03 | 2020-02-18 | Intel Corporation | Apparatus, methods, and systems for conditional queues in a configurable spatial accelerator |
-
2020
- 2020-09-25 US US17/032,307 patent/US11635967B2/en active Active
-
2021
- 2021-09-24 EP EP21873489.5A patent/EP4217856A1/en active Pending
- 2021-09-24 CN CN202180064979.7A patent/CN116420136A/zh active Pending
- 2021-09-24 KR KR1020237011912A patent/KR20230069952A/ko active Search and Examination
- 2021-09-24 JP JP2023514867A patent/JP2023542835A/ja active Pending
- 2021-09-24 WO PCT/US2021/051892 patent/WO2022066998A1/en active Application Filing
-
2023
- 2023-03-30 US US18/128,642 patent/US20230289191A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4217856A1 (en) | 2023-08-02 |
WO2022066998A1 (en) | 2022-03-31 |
JP2023542835A (ja) | 2023-10-12 |
KR20230069952A (ko) | 2023-05-19 |
US11635967B2 (en) | 2023-04-25 |
US20220100528A1 (en) | 2022-03-31 |
US20230289191A1 (en) | 2023-09-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3557485B1 (en) | Method for accelerating operations and accelerator apparatus | |
US10140251B2 (en) | Processor and method for executing matrix multiplication operation on processor | |
EP3451162B1 (en) | Device and method for use in executing matrix multiplication operations | |
EP3557425A1 (en) | Accelerator and system for accelerating operations | |
CN110168497B (zh) | 可变波阵面大小 | |
CN109416755B (zh) | 人工智能并行处理方法、装置、可读存储介质、及终端 | |
KR102584031B1 (ko) | 데이터 처리장치에서의 요소 바이 벡터 연산 | |
US8370845B1 (en) | Method for synchronizing independent cooperative thread arrays running on a graphics processing unit | |
US11409840B2 (en) | Dynamically adaptable arrays for vector and matrix operations | |
US20230289191A1 (en) | Vertical and horizontal broadcast of shared operands | |
US11803385B2 (en) | Broadcast synchronization for dynamically adaptable arrays | |
US20240111530A1 (en) | Matrix multiplication unit with flexible precision operations | |
CN107851022B (zh) | 向量长度查询指令 | |
US8473948B1 (en) | Method for synchronizing independent cooperative thread arrays running on a graphics processing unit | |
US11842200B2 (en) | Multi-modal gather operation | |
US11630667B2 (en) | Dedicated vector sub-processor system | |
US11995149B2 (en) | Sparse matrix-vector multiplication | |
US20240264942A1 (en) | Co-compute unit in lower-level cache architecture | |
US20080147767A1 (en) | Binomial options pricing model computations using a parallel processor | |
WO2023199014A1 (en) | Technique for handling data elements stored in an array storage | |
WO2023199015A1 (en) | Technique for handling data elements stored in an array storage | |
JP4696540B2 (ja) | コンピュータ、データ処理方法およびプログラム | |
TW202411860A (zh) | 多外積指令 | |
JP2003296106A (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 |