CN109863477A - 具有本地化存储器的矩阵处理器 - Google Patents
具有本地化存储器的矩阵处理器 Download PDFInfo
- Publication number
- CN109863477A CN109863477A CN201780065339.1A CN201780065339A CN109863477A CN 109863477 A CN109863477 A CN 109863477A CN 201780065339 A CN201780065339 A CN 201780065339A CN 109863477 A CN109863477 A CN 109863477A
- Authority
- CN
- China
- Prior art keywords
- data line
- matrix
- local storage
- processing element
- 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.)
- Pending
Links
- 239000011159 matrix material Substances 0.000 title claims abstract description 90
- 230000004807 localization Effects 0.000 title description 2
- 238000012545 processing Methods 0.000 claims abstract description 97
- 238000000034 method Methods 0.000 claims description 9
- 239000000758 substrate Substances 0.000 claims description 8
- 230000005611 electricity Effects 0.000 claims description 2
- 229940050561 matrix product Drugs 0.000 claims 2
- 239000004020 conductor Substances 0.000 description 18
- 230000005540 biological transmission Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000010801 machine learning Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000003796 beauty Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- 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
-
- 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
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/7821—Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- 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
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
一种计算机架构,所述计算机架构提供以逻辑行和逻辑列布置的多个处理元件以共享与每个列和行相关联的本地存储器。这种在行和列的基础上的存储器的共享提供有效的矩阵运算诸如矩阵乘法,例如可以用于各种处理算法中以减少外部存储器和本地存储器之间的数据流和/或降低用于有效处理所需的本地存储器的尺寸。
Description
关于联邦赞助研究或开发的声明
--
相关申请的交叉引用
本申请要求于2016年10月25日提交的美国申请第15/333,696号的权益并且该美国申请的全文并入本申请中。
背景技术
本发明涉及用于高速矩阵运算的计算机架构,并且具体地涉及提供矩阵处理器,该计算机架构提供本地存储器,减少了用于矩阵类型计算的外部存储器和本地存储器之间的存储器瓶颈。
矩阵计算诸如矩阵乘法是范围广泛的新兴计算机应用例如机器学习和使用数学核函数诸如多维卷积的图像处理的基础。
常规的通用处理器不能充分地利用矩阵计算的并行性质,因此开发专用矩阵加速器例如使用现场可编程门阵列(FPGA)来执行矩阵计算受到关注。在这种设计中,FPGA的不同处理元件可以使用被加载到与每个处理元件相关联的本地存储器中的矩阵的部分来同时处理不同的矩阵元素。
发明内容
本发明人已经认识到,在FPGA类型架构的外部存储器和本地存储器之间传输矩阵数据存在严重的存储器瓶颈。该瓶颈由与FPGA类型架构的计算资源相比受限的本地存储器的尺寸以及从外部存储器到本地存储器的重复数据传输所固有的延迟两者造成。本发明人还认识到,计算资源比本地存储器资源的更快速增长加剧了这个问题。
本发明通过在多个处理单元之间共享存储在通常与给定处理单元相关联的给定本地存储器资源中的数据来解决这个问题。共享可以是处于遵循矩阵计算的逻辑相互关系(例如,沿着矩阵的一个或更多个维度上的行和列)的模式。这种共享减少了存储器复制(需要将给定值存储在多个本地存储器位置),因此既减少了本地存储器的需求又减少了本地存储器和外部存储器之间不必要的数据传输,极大地加速了计算和/或降低了与计算相关联的消耗。
具体地,本发明提供一种用于矩阵计算的计算机架构,所述计算机架构包括一组处理元件,该一组处理元件各自被布置在逻辑行和逻辑列中以沿着第一数据线和第二数据线接收操作数。第一数据线各自连接至每个逻辑行中的多个处理元件并且第二数据线各自连接至逻辑列中的逻辑处理元件。本地存储器元件与第一数据线和第二数据线中的每一个数据线相关联以同时向通过第一数据线和第二数据线互连的每个处理元件提供给定的操作数。调度器将数据从外部存储器传输至本地存储器元件并且顺序地将存储在本地存储器元件中的操作数应用于第一数据线和第二数据线以使用操作数来实现矩阵计算。
因此,本发明的至少一种实施方式的特征是提供在多个处理元件之间共享来自本地存储器的操作数值的架构,以消除本发明人所认识到的外部存储器与本地存储器之间的在矩阵类型计算中呈现限制因素的存储器传输瓶颈。
通常,本地存储器元件位于还容纳处理元件的单个集成电路基板上并且可以分布在集成电路上,使得每个给定的本地存储器接近相应的给定处理元件。
因此,本发明的至少一种实施方式的特征是在适应可用的受限量的本地存储器和外部存储器刷新本地存储器所需的时间延迟的同时允许利用本地存储器(片上存储器)进行可能的高速处理。
处理元件可以通过例如由现场可编程门阵列提供的类型的可编程互连结构进行互连。
因此,本发明的至少一种实施方式的特征是在FPGA类型的设备中提供本发明的架构的现成的实现方式。
该架构可以至少提供八个逻辑行和八个逻辑列。
因此,本发明的至少一种实施方式的特征是提供一种可扩展的架构,其允许多列、多行、并行矩阵乘法运算,这降低了对更大的矩阵上的矩阵运算所需的分解数目。
处理元件在二维中以物理行和物理列的方式分布在集成电路表面上。
因此,本发明的至少一种实施方式的特征是提供模仿矩阵运算的算术运算的结构从而减少了互连距离。
该架构可以包括由调度器控制的纵横式交换机以在将接收自外部存储器的数据传输至与第一数据线和第二数据线中的特定数据线相关联的本地存储器元件中时提供对该数据的可编程排序,所述可编程排序适合于实现矩阵计算。
因此,本发明的至少一种实施方式的特征是允许在集成电路级的数据重排序以用于将该架构灵活地应用于各种不同的矩阵尺寸和矩阵相关运算。
处理元件可以提供乘法运算。
因此,本发明的至少一种实施方式的特征是提供对在包括图像处理、机器学习等的许多应用中使用的基础计算有用的专用架构。
处理元件可以使用查找表乘法器。
因此,本发明的至少一种实施方式的特征是提供对于用于大矩阵乘法架构的多个处理元件可以易于实现的简单的乘法器设计。
该架构可以包括累加器,在顺序将数据值从本地存储器元件应用到处理元件之间累加器对来自处理元件的输出进行求和。
因此,本发明的至少一种实施方式的特征是在顺序并行乘法之间提供对处理元件输出的求和以实现矩阵乘法。
计算机架构可以包括输出多路复用器,该输出多路复用器由调度器控制将数据从累加器传输到外部存储器。
因此,本发明的至少一种实施方式的特征是允许灵活地对累加器的输出进行重排序,以与在外部存储器中使用的存储数据结构兼容。
这些特定的目的和优点可以仅适用于落入权利要求内的一些实施方式,并且因此不限定本发明的范围。
附图说明
图1是可与本发明一起使用的用于现场可编程门阵列的集成电路布局的简化图,其示出了处理元件、与处理元件相关联的本地存储器和互连电路系统并且描绘了本地存储器和外部存储器之间的数据流,例如表示了由处理元件执行的计算中的限制因素;
图2是在没有数据共享的情况下本地存储器和处理元件关联的相关技术的图;
图3是类似于图2的以简化形式示出本发明的本地存储器和处理元件之间的关联的图,本发明在多个处理元件之间共享每个本地存储器中的数据,这减少了用于矩阵运算所需的存储器传输和/或所需要的本地存储器的尺寸;
图4是类似于图3的更详细地示出了本架构的实现方式的图,例如提供控制纵横式交换机以有利于矩阵运算的方式将数据传输至本地存储器的调度器和可用于矩阵乘法的累加器以及用于将该数据输出至外部存储器的输出多路复用器;
图5是本发明的用于示出第一计算步骤的将两个2×2矩阵相乘的简单示例的描绘;以及
图6是类似于图5的示出了在完成矩阵乘法的计算中的第二步骤的图。
具体实施方式
现在参照图1,在一种实施方式中根据本发明的矩阵处理器10可以被实现在现场可编程门阵列(FPGA)12上。如本领域中通常理解的,FPGA12可以包括多个处理元件14,例如,所述多个处理元件14以正交行和正交列的方式分布在单个集成电路基板16的表面上。处理元件14可以例如使用查找表或通过使用数字信号处理器(DSP)电路系统来实现简单的布尔函数或更复杂的算术函数诸如乘法。在一个示例中,每个处理元件14可以提供操作为使两个32位操作数相乘在一起的乘法器。
本地存储器元件18也可以分布在集成电路基板16上聚集在处理元件中的每个处理元件附近。在一个示例中,每个本地存储器元件18可以存储512个32位字,以向处理元件14提供32位操作数。通常,针对每处理元件14的本地存储器元件18的量是有限的并且因此对在本地存储器元件18与外部存储器20之间的数据流19的速度有很大的约束,如果在计算期间必须频繁地刷新本地存储器元件18,则会加剧该约束。
通常,外部存储器20将是动态存储器(例如DRAM),其具有比本地存储器元件18大得多的容量并且位于集成电路基板16之外。与外部存储器20相比,本地存储器元件18可以是静态存储器。
处理元件14彼此互连并且通过互连电路系统21与FPGA 12中的输入电路系统和输出电路系统(未显示)互连,处理元件14通过互连电路系统21与FPGA 12中的输入电路系统和输出电路系统(未显示)的互连根据FPGA 12的配置在处理元件14之间提供数据信号和/或控制信号的路由。如本领域所理解的,互连电路系统21可以被可编程地改变(例如,使用在启动期间应用的配置文件)以提供实现了与FPGA 12不同功能的不同互连。通常,互连电路系统21控制集成电路基板16的区域。虽然本发明特别适合于FPGA架构,但是本发明的架构也可以被实现在专用电路中(例如减少了互连电路系统21)。
现在参照图2,用于FPGA 12的架构的现有技术实现方式通常将每个处理元件14唯一地与最接近该处理元件14的存储器元件18相关联。在这种关联中,本地存储器元件18存储多个操作数,这些多个操作数可以在需要交换或刷新本地存储器元件18的数据之前被顺序地提供至处理元件14。
现在参照图3,与将每个存储器元件18与单个处理元件14相关联的相关技术成对比,本发明允许多个处理元件14从与逻辑行22或逻辑列24相关联的单个给定的本地存储器元件18并行地接收数据,多个处理元件14沿着逻辑行22或逻辑列24连接。每个处理元件14从与该处理元件14相关联的一个行导体15接收一个操作数并且从与该处理元件14相关联的列导体17接收一个操作数。此外,一行中的所有处理元件14接收相同的操作数并且一列中的所有处理元件14接收一个相同的操作数。一般地,行导体15和列导体17向处理元件14中的每个处理元件提供基本上瞬时的数据传输,并且行导体15和列导体17根据需要可以是单个电导体或具有中继器或扇出放大器的电导体,以提供符合超过100兆赫的信号传输所需的长度和频率响应。
虽然逻辑行22和逻辑列24仅涉及连接拓扑,但是通常处理元件14也将处于符合FPGA 12架构的物理行和物理列的方式并且使其互连距离最小化。
如将在下面讨论中理解的,这种与多个处理元件14共享来自给定的本地存储器元件18的数据的能力允许本发明的架构在多个处理元件14需要给定数据值的矩阵运算(诸如矩阵乘法)中有利地工作。共享本地存储器元件18的数据减少了存储需求(所需的本地存储器的量),并且与如果将共享数据冗余地存储在多个本地存储器元件18中会流动的数据量相比,减少了在外部存储器20与本地存储器元件18之间流动的数据的量。
现在参照图4,除了如通过行导体15和列导体17互连的本地存储器元件18和处理元件14之外,矩阵处理器10通常可以包括用于从外部存储器20接收数据的输入缓冲器30。可以通过各种不同的接口包括例如PCIe控制器或一个或更多个本领域已知类型的DDR控制器来接收此数据。
可以以与任意配置的存储器20中保存的矩阵运算数据结构相关联的顺序将数据接收到输入缓冲器30中,并且然后可以通过由调度器34控制的纵横式交换机32进行交换,以加载将要描述的计算所需的与逻辑行和逻辑列相关联的多个本地存储器元件18中的每一个本地存储器元件。在该传输过程中,调度器34例如可以将一个矩阵操作数放置在与行22相关联的本地存储器元件18中并且将第二矩阵操作数放置在与列24相关联的本地存储器元件18中,如将在下面更详细地说明的。
如上所述,尽管处理元件14可以被布置处于具有尺寸(行数或列数)等于或大于8行和8列以允许两个8×8矩阵的矩阵乘法的逻辑行和逻辑列的方式,但是也可以提供更大维度(和非正方形)的尺寸。
在操作期间,调度器将对本地存储器元件18进行排序以将不同的操作数值输出至处理元件14的相应的行和列。在每次顺序向处理元件14提供操作数值之后,调度器34仍控制向累加器36提供来自处理元件14的输出。输出多路复用器38将累加器36的输出收集到可以再次被发送至外部存储器20的字中。
现在参照图4和图5,现在将以简单的示例输出可以将在多个处理元件14之间共享本地存储器应用于以下形式的2×2矩阵A与相应的2×2矩阵B的乘法:
在第一步,矩阵A和矩阵B中的矩阵元素(例如,Aii和Bii)通过调度器34使用纵横式交换机32从外部存储器被加载到本地存储器元件18中。具体地,矩阵A中的第一行将被加载到与第一行22a和行导体15a相关联的第一本地存储器元件18a中,并且矩阵A的第二行将被加载到与第二行22b和行导体15b相关联的第二本地存储器元件18b中。同样地,矩阵B的第一列将被加载到与第一列24a和列导体17a相关联的第三本地存储器元件18c中,并且矩阵B的第二列将被加载到与第二列24b和列导体17b相关联的第四本地存储器元件18d中。
在矩阵乘法的第一阶段中,调度器37对本地存储器元件18进行寻址以沿着行导体15和列导体17将矩阵A的第一列和矩阵B的第一行中的矩阵元素输出至处理元件14。
处理元件14将被配置成用于对接收自本地存储器元件18的操作数进行乘法,这分别产生来自处理元件14a和14b的输出A11B11和A11B12,以及来自处理元件14c和14d的输出A21B11和A21B12。这些输出中的每一个输出被存储在累加器36中的相应寄存器40a至40d中,出于该示例的目的,所述寄存器40a至40d具有与从其中接收数据的相应处理元件14的后缀字母相同的后缀字母。因此,寄存器40a和40b分别保持值A11B11和A11B12,并且寄存器40c和40d分别保持值A21B11和A21B12。
在矩阵乘法的第二阶段,调度器37对本地存储器元件18进行寻址以沿着行导体15和列导体17将矩阵A的第二列和矩阵B的第二行中的矩阵元素输出至处理元件14。
作为响应,处理元件14a和14b分别提供输出A12B21和A12B22,而处理元件14c和14d分别提供输出A22B21和A22B22。累加器36将这些输出值中的每一个值与先前在相应的累加器寄存器40a至40d中存储的值进行求和,以在寄存器40a至40d中的每一个寄存器中提供如下新值:在寄存器40a至40d中分别为A11B11+A12B21、A11B12+A12B22、A21B11+A22B21、A21B12+A22B22。
寄存器中的值将被识别为在矩阵AB的矩阵乘法中预期的结果,如下所示:
这些值然后可以通过多路复用器38进行排序并且以所期望的数据格式提供至外部存储器20,作为矩阵乘法运算的结果。应当理解,通过增加处理元件14及其相关联的本地存储器元件18和累加器寄存器40的数目可以容易地将上述过程扩展至任何尺寸大小的矩阵。
固定大小的处理元件14的阵列(例如8×8或更大)可以用于通过使用众所周知的“分治”技术来计算任意大矩阵的任意矩阵乘法,“分治”技术将大矩阵操作数的矩阵乘法分解为与矩阵处理器10兼容的较小矩阵操作数的一组矩阵乘法。
调度器34可以包括程序设计(例如固件)以根据例如在外部存储器20内提供的标准顺序将所需的数据排序提供到本地存储器元件18中。在这方面,矩阵处理器10可以作为独立处理器或协处理器操作,例如从标准计算机处理器接收数据或指针以自动地执行矩阵运算并将结果返回到标准计算机处理器。
虽然调度器34可以控制对从外部存储器20到本地存储器元件18中的数据进行排序,但是排序也可以由调度器34和与矩阵处理器10一起工作的独立计算机的操作系统的组合来处理。
应当理解,许多重要的计算任务可以被重新构造为矩阵乘法问题,包括例如卷积、自相关、傅立叶变换、滤波、诸如神经网络的机器学习结构等。还应当理解,简单地通过增加沿着根据本发明的教导已经扩展到多个维度的这些多个维度的共享路径,本发明可以被扩展到多于两个维度的矩阵乘法或其他矩阵运算。
本文中使用的某些术语仅用于参考的目的,因此并不旨在进行限制。例如,术语诸如“上部”、“下部”、“上”和“下”是指参照附图的方向。术语诸如“前”、“背部”、“后”、“底部”和“侧部”描述部件的各部分在一致但任意的参照系内的取向,其是在通过参照描述讨论中的部件的文本和相关联的附图而清楚做出的。这样的术语可以包括上文特别提到的词语、它们的衍生物以及类似含义的词语。类似地,除非上下文清楚地指出,否则涉及结构的术语“第一”、“第二”以及其他这样的数值术语不暗指顺序或次序。
当介绍本公开和示例性实施方式的元件或特征时,冠词“一”、“一个”、“该”以及“所述”意在指存在一个或更多个这样的元件或特征。术语“包括”、“包含”和“具有”旨在是包括性的,并且意指可能存在除了那些具体指出的元件或特征之外附加的元件或特征。还应当理解的是,除非特别地被标识为执行的顺序,否则本文所描述的方法步骤、过程和操作不应被解释为必须要求它们以所论述或所示出的特定顺序来执行。还要理解的是,可以采用另外的或替代的步骤。
对“微处理器”和“处理器”或“该微处理器”以及“该处理器”的提及可以理解为包括可以在独立的和/或(一个或更多个)分布式环境中通信并且因此可以被配置成经由有线或无线通信与其他处理器通信的一个或更多个微处理器,,其中,这样的一个或更多个处理器可以被配置成对可以是类似装置或不同装置的一个或更多个处理器控制的装置起作用。此外,除非另外指定,否则对存储器的引用可以包括一个或更多个处理器可读并可访问的本地存储器元件和/或部件,该存储器元件和/或部件可以位于处理器控制的设备内部、处理器控制的设备外部,并且可以经由有线网络或无线网络被访问。
特别地,本发明并非意在限于本文所包含的实施方式和说明,并且权利要求应当被理解成包括包含实施方式的各部分以及落入所附权利要求的范围内的不同实施方式的元素的组合的这些实施方式的修改形式。本文所描述的包括专利公开和非专利公开的所有公开的全部内容通过引用并入本文。
Claims (18)
1.一种用于矩阵计算的计算机架构,包括:
一组处理元件,所述一组处理元件各自被布置在多个逻辑行中的一行和多个逻辑列中的一列中,并且所述一组处理元件各自沿着第一数据线和第二数据线接收第一操作数和第二操作数以根据所述处理元件的操作提供输出结果,其中,所述第一数据线各自连接至所述多个逻辑行中的每个逻辑行中的多个处理元件,并且所述第二数据线各自连接至所述多个逻辑列中的每个逻辑列中的逻辑处理元件;
本地存储器元件,所述本地存储器元件与所述第一数据线和所述第二数据线中的每一个数据线相关联,以同时向通过所述第一数据线和所述第二数据线互连的每个处理元件提供给定的操作数;以及
调度器,所述调度器将数据从外部存储器传输至所述本地存储器元件,并且顺序地将存储在所述本地存储器元件中的操作数应用于所述第一数据线和所述第二数据线,以使用所述操作数来实现矩阵计算。
2.根据权利要求1所述的计算机架构,其中,所述本地存储器元件位于还容纳所述处理元件的单个集成电路基板上。
3.根据权利要求2所述的计算机架构,其中,所述本地存储器元件被分布在所述集成电路上。
4.根据权利要求3所述的计算机架构,其中,每个给定的本地存储器接近相应的给定处理元件。
5.根据权利要求4所述的计算机架构,其中,所述处理元件通过可编程互连结构进行互连。
6.根据权利要求5所述的计算机架构,其中,所述集成电路是现场可编程门阵列。
7.根据权利要求1所述的计算机架构,其中,所述计算机架构至少提供八个逻辑行和八个逻辑列。
8.根据权利要求1所述的计算机架构,其中,所述处理元件在二维中以物理行和物理列的方式分布在集成电路的表面上。
9.根据权利要求1所述的计算机架构,还包括纵横式交换机,所述纵横式交换机由所述调度器控制以在将接收自所述外部存储器的数据传输至与所述第一数据线和所述第二数据线中的特定数据线相关联的所述本地存储器元件中时提供对该数据的可编程排序,所述可编程排序适合于实现矩阵计算。
10.根据权利要求1所述的计算机架构,其中,所述处理元件提供乘法运算。
11.根据权利要求10所述的计算机架构,其中,所述处理元件包括查找表乘法器。
12.根据权利要求10所述的计算机架构,还包括累加器,在顺序将数据值从所述本地存储器元件应用到所述处理元件之间所述累加器对来自所述处理元件的输出进行求和。
13.根据权利要求12所述的计算架构,还包括输出多路复用器,所述输出多路复用器由所述调度器控制将数据从所述累加器传输至外部存储器。
14.一种使用乘法器架构实现高速矩阵乘法的方法,所述乘法器架构包括:
一组处理元件,所述一组处理元件各自被布置在多个逻辑行中的一行和多个逻辑列中的一列中,并且所述一组处理元件各自沿着第一数据线和第二数据线接收第一操作数和第二操作数以根据所述处理元件的操作提供输出结果,其中,所述第一数据线各自连接至所述多个逻辑行中的每个逻辑行中的多个处理元件,并且所述第二数据线各自连接至所述多个逻辑列中的每个逻辑列中的逻辑处理元件;
本地存储器元件,所述本地存储器元件与所述第一数据线和所述第二数据线中的每一个数据线相关联,以同时向通过所述第一数据线和所述第二数据线互连的每个处理元件提供给定的操作数;以及
调度器,所述调度器将数据从外部存储器传输至所述本地存储器元件,并且顺序地将存储在所述本地存储器元件中的操作数应用于所述第一数据线和所述第二数据线,以使用所述操作数实现矩阵计算;
所述方法包括以下步骤:
(a)从所述外部存储器接收包含矩阵元素具有算术行和算术列的矩阵操作数,并且将所述矩阵元素排序到本地存储器元件中,使得第一操作数的公共算术行的矩阵元素被加载到与所述第一数据线中的一个数据线相关联的本地存储器中,以及第二操作数的公共算术列的矩阵元素被加载到与所述第二数据线中的一个数据线相关联的本地存储器中;
(b)将所述第一操作数的给定列的矩阵元素和所述第二操作数的给定行的矩阵元素顺序地应用于所述处理元件;
(c)对步骤(b)中的顺序应用之间的所述处理元件的输出进行求和以提供矩阵乘积的矩阵元素;以及
(d)输出所述矩阵乘积的所述矩阵元素。
15.根据权利要求14所述的方法,还包括在将所述矩阵元素应用于所述处理元件之前将所接收到的矩阵操作数中的每个矩阵元素传输至本地存储器的步骤。
16.根据权利要求14所述的方法,还包括将来自所述外部存储器的数据以第一顺序接收到缓冲器中并且在所述数据被传输至所述本地存储器时对所述数据按不同的顺序进行排序的步骤。
17.根据权利要求14所述的方法,其中,所述本地存储器元件在单个集成电路基板上,所述单个集成电路基板还容纳所述处理元件。
18.根据权利要求14所述的方法,其中,所述处理元件提供了乘法运算。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/333,696 US20180113840A1 (en) | 2016-10-25 | 2016-10-25 | Matrix Processor with Localized Memory |
US15/333,696 | 2016-10-25 | ||
PCT/US2017/055271 WO2018080751A1 (en) | 2016-10-25 | 2017-10-05 | Matrix processor with localized memory |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109863477A true CN109863477A (zh) | 2019-06-07 |
Family
ID=61971480
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780065339.1A Pending CN109863477A (zh) | 2016-10-25 | 2017-10-05 | 具有本地化存储器的矩阵处理器 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20180113840A1 (zh) |
KR (1) | KR102404841B1 (zh) |
CN (1) | CN109863477A (zh) |
WO (1) | WO2018080751A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112581987A (zh) * | 2020-12-23 | 2021-03-30 | 海光信息技术股份有限公司 | 二维结构的局部存储器系统及其运算方法、介质、程序 |
CN113268708A (zh) * | 2021-07-16 | 2021-08-17 | 北京壁仞科技开发有限公司 | 用于矩阵计算的方法及装置 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10586148B2 (en) * | 2016-12-31 | 2020-03-10 | Via Alliance Semiconductor Co., Ltd. | Neural network unit with re-shapeable memory |
US10565494B2 (en) * | 2016-12-31 | 2020-02-18 | Via Alliance Semiconductor Co., Ltd. | Neural network unit with segmentable array width rotator |
US10565492B2 (en) * | 2016-12-31 | 2020-02-18 | Via Alliance Semiconductor Co., Ltd. | Neural network unit with segmentable array width rotator |
KR102586173B1 (ko) * | 2017-10-31 | 2023-10-10 | 삼성전자주식회사 | 프로세서 및 그 제어 방법 |
US10809629B2 (en) * | 2018-08-31 | 2020-10-20 | Taiwan Semiconductor Manufacturing Company, Ltd. | Method and apparatus for computing feature kernels for optical model simulation |
KR102372869B1 (ko) * | 2019-07-31 | 2022-03-08 | 한양대학교 산학협력단 | 인공 신경망을 위한 행렬 연산기 및 행렬 연산 방법 |
US11010202B2 (en) * | 2019-08-06 | 2021-05-18 | Facebook, Inc. | Distributed physical processing of matrix sum operation |
KR102327234B1 (ko) * | 2019-10-02 | 2021-11-15 | 고려대학교 산학협력단 | 행렬 연산시 메모리 데이터 변환 방법 및 컴퓨터 |
KR102267920B1 (ko) * | 2020-03-13 | 2021-06-21 | 성재모 | 매트릭스 연산 방법 및 그 장치 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU6369698A (en) * | 1997-04-30 | 1998-10-12 | Canon Kabushiki Kaisha | Compression |
CN1774709A (zh) * | 2002-12-20 | 2006-05-17 | 英特尔公司 | 使用simd寄存器的小矩阵有效乘法 |
CN104536723A (zh) * | 2008-06-26 | 2015-04-22 | 拉塞尔·H·菲什 | 线程优化的多处理器架构 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FI118654B (fi) * | 2002-11-06 | 2008-01-31 | Nokia Corp | Menetelmä ja järjestelmä laskuoperaatioiden suorittamiseksi ja laite |
US6944747B2 (en) * | 2002-12-09 | 2005-09-13 | Gemtech Systems, Llc | Apparatus and method for matrix data processing |
US8145880B1 (en) * | 2008-07-07 | 2012-03-27 | Ovics | Matrix processor data switch routing systems and methods |
US10802990B2 (en) * | 2008-10-06 | 2020-10-13 | International Business Machines Corporation | Hardware based mandatory access control |
US20100180100A1 (en) * | 2009-01-13 | 2010-07-15 | Mavrix Technology, Inc. | Matrix microprocessor and method of operation |
US8650240B2 (en) * | 2009-08-17 | 2014-02-11 | International Business Machines Corporation | Complex matrix multiplication operations with data pre-conditioning in a high performance computing architecture |
US9600281B2 (en) * | 2010-07-12 | 2017-03-21 | International Business Machines Corporation | Matrix multiplication operations using pair-wise load and splat operations |
-
2016
- 2016-10-25 US US15/333,696 patent/US20180113840A1/en not_active Abandoned
-
2017
- 2017-10-05 KR KR1020197014535A patent/KR102404841B1/ko active IP Right Grant
- 2017-10-05 CN CN201780065339.1A patent/CN109863477A/zh active Pending
- 2017-10-05 WO PCT/US2017/055271 patent/WO2018080751A1/en active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU6369698A (en) * | 1997-04-30 | 1998-10-12 | Canon Kabushiki Kaisha | Compression |
CN1774709A (zh) * | 2002-12-20 | 2006-05-17 | 英特尔公司 | 使用simd寄存器的小矩阵有效乘法 |
CN104536723A (zh) * | 2008-06-26 | 2015-04-22 | 拉塞尔·H·菲什 | 线程优化的多处理器架构 |
Non-Patent Citations (2)
Title |
---|
IZZELDIN IBRAHIM MOHD: "32-Bit NxN Matrix Multiplication: Performance Evaluation for Altera FPGA, i5 Clarkdale, and Atom Pineview-D Intel General Purpose Processors", 《INTERNATIONAL JOURNAL OF COMPUTER APPLICATIONS》 * |
KEAN T: "A fast constant coefficient multiplier for the XC6200", 《INTERNATIONAL WORKSHOP ON FIELD PROGRAMMABLE LOGIC AND APPLICATIONS》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112581987A (zh) * | 2020-12-23 | 2021-03-30 | 海光信息技术股份有限公司 | 二维结构的局部存储器系统及其运算方法、介质、程序 |
CN112581987B (zh) * | 2020-12-23 | 2023-11-03 | 成都海光微电子技术有限公司 | 二维结构的局部存储器系统及其运算方法、介质、程序 |
CN113268708A (zh) * | 2021-07-16 | 2021-08-17 | 北京壁仞科技开发有限公司 | 用于矩阵计算的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
US20180113840A1 (en) | 2018-04-26 |
WO2018080751A1 (en) | 2018-05-03 |
KR102404841B1 (ko) | 2022-06-07 |
KR20190062593A (ko) | 2019-06-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109863477A (zh) | 具有本地化存储器的矩阵处理器 | |
CN208061184U (zh) | 矢量处理单元 | |
US11354133B2 (en) | Processing device and related products | |
CN109102065B (zh) | 一种基于PSoC的卷积神经网络加速器 | |
US9886418B2 (en) | Matrix operands for linear algebra operations | |
CN107992329A (zh) | 一种计算方法及相关产品 | |
CN108510064A (zh) | 包括多个核心处理模块的人工神经网络的处理系统及方法 | |
DE102020122174A1 (de) | Berechne-in/nahe speicher- (cim) schaltungsarchitektur für vereinheitlichte matrix-matrix- und matrix-vektor-berechnungen | |
CN108009119A (zh) | 处理器和控制工作流的方法 | |
US20220179823A1 (en) | Reconfigurable reduced instruction set computer processor architecture with fractured cores | |
CN110333946A (zh) | 一种基于人工智能cpu数据处理系统及方法 | |
CN110059797B (zh) | 一种计算装置及相关产品 | |
US20230041850A1 (en) | Adaptive matrix multiplication accelerator for machine learning and deep learning applications | |
EP3839834A1 (en) | Topological scheduling | |
JPH07117948B2 (ja) | コンピユータ装置 | |
CN111079908A (zh) | 片上网络数据处理方法、存储介质、计算机设备和装置 | |
US7263543B2 (en) | Method for manipulating data in a group of processing elements to transpose the data using a memory stack | |
CN117063182A (zh) | 一种数据处理方法和装置 | |
US20230195836A1 (en) | One-dimensional computational unit for an integrated circuit | |
CN111291884A (zh) | 神经网络剪枝方法、装置、电子设备及计算机可读介质 | |
Pechanek et al. | An introduction to an array memory processor for application specific acceleration | |
Ewerbring et al. | Almost linear time matrix operations on the Connection Machine | |
CN114443146A (zh) | 基于存算一体存储器的矢量处理器及其运行方法 | |
CN108846478A (zh) | 深度神经网络计算加速的方法和装置 | |
Islam et al. | Computational Geometry on Optical Multi-Trees (OMULT) Computer System. |
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: 40008720 Country of ref document: HK |
|
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190607 |