CN112988658A - 具有分布式请求广播主机的高带宽存储器系统 - Google Patents
具有分布式请求广播主机的高带宽存储器系统 Download PDFInfo
- Publication number
- CN112988658A CN112988658A CN202011459891.9A CN202011459891A CN112988658A CN 112988658 A CN112988658 A CN 112988658A CN 202011459891 A CN202011459891 A CN 202011459891A CN 112988658 A CN112988658 A CN 112988658A
- Authority
- CN
- China
- Prior art keywords
- memory
- request
- partial
- requests
- processing elements
- 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
- 238000012545 processing Methods 0.000 claims abstract description 391
- 238000004891 communication Methods 0.000 claims abstract description 19
- 230000004044 response Effects 0.000 claims description 189
- 239000011159 matrix material Substances 0.000 claims description 39
- 238000000034 method Methods 0.000 claims description 30
- 230000008569 process Effects 0.000 description 25
- 238000013528 artificial neural network Methods 0.000 description 23
- 238000013473 artificial intelligence Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 16
- 230000006870 function Effects 0.000 description 14
- 230000007246 mechanism Effects 0.000 description 13
- 238000013507 mapping Methods 0.000 description 7
- 239000000872 buffer Substances 0.000 description 6
- 230000004913 activation Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000007334 memory performance Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000004557 technical material Substances 0.000 description 1
Images
Classifications
-
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- 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
-
- 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/781—On-chip cache; Off-chip memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
- G06F13/1657—Access to multiple memories
-
- 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/17356—Indirect interconnection networks
- G06F15/17368—Indirect interconnection networks non hierarchical topologies
- G06F15/17381—Two dimensional, 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/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/7825—Globally asynchronous, locally synchronous, e.g. network on chip
-
- 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/8015—One dimensional arrays, e.g. rings, linear arrays, buses
-
- 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
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- 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/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Neurology (AREA)
- Multi Processors (AREA)
Abstract
公开了具有分布式请求广播主机的高带宽存储器系统。系统包括处理器和多个存储器单元。处理器通过多个网络连接耦合到多个存储器单元中的每一个。该处理器包括以二维阵列布置的多个处理元件和相应的二维通信网络,该二维通信网络将多个处理元件中的每一个通信连接到二维阵列的相同轴上的其他处理元件。沿着二维阵列的对角线定位的每个处理元件被配置为沿着二维阵列的相同轴定位的相应组的处理元件的请求广播主机。
Description
发明背景
使用神经网络可以解决一整类复杂的人工智能问题。由于这些问题通常是计算和数据密集型的,硬件解决方案通常有利于提高神经网络的性能。解决这些复杂的问题通常需要处理大量的数据。由于这些数据要求,基于存储器的操作的性能至关重要。处理大量数据通常涉及相应的大量存储器传输。在实现存储器访问性能和效率要求的同时,创建一个解决神经网络的硬件平台是一项技术挑战。因此,存在对硬件平台的需求,该硬件平台最小化存储器传输的费用,以有效地执行神经网络处理所需的存储器操作。
附图简述
在以下详细描述和附图中公开了本发明的各种实施例。
图1是示出使用神经网络解决人工智能问题的系统的实施例的框图。
图2是示出使用神经网络解决人工智能问题的系统的实施例的框图。
图3是示出使用神经网络解决人工智能问题的系统的实施例的框图。
图4是示出使用神经网络解决人工智能问题的系统的实施例的框图。
图5是示出使用神经网络解决人工智能问题的处理元件的实施例的框图。
图6是示出用于执行存储器访问的过程的实施例的流程图。
图7是示出用于响应存储器数据请求的过程的实施例的流程图。
图8是示出用于执行存储器访问的过程的实施例的流程图。
详细描述
本发明可以以多种方式实现,包括作为过程;装置;系统;物质的组成;体现在计算机可读存储介质上的计算机程序产品;和/或处理器,例如被配置为执行存储在耦合到处理器的存储器上和/或由该存储器提供的指令的处理器。在本说明书中,这些实现或者本发明可以采取的任何其他形式可以被称为技术。通常,在本发明的范围内,可以改变所公开的过程的步骤顺序。除非另有说明,否则被描述为被配置为执行任务的诸如处理器或存储器的组件可以被实现为在给定时间被临时配置为执行任务的通用组件或者被制造为执行任务的特定组件。如本文所使用的,术语“处理器”指的是被配置成处理数据(例如计算机程序指令)的一个或更多个设备、电路和/或处理核心。
下面提供了本发明的一个或更多个实施例的详细描述连同说明本发明原理的附图。结合这些实施例描述了本发明,但是本发明不限于任何实施例。本发明的范围仅由权利要求限定,并且本发明包括许多替代、修改和等同物。为了提供对本发明的全面理解,在以下描述中阐述了许多具体细节。这些细节是出于示例的目的而提供的,并且本发明可以根据权利要求来被实施,而不需要这些具体细节中的一些或全部。为了清楚起见,没有详细描述与本发明相关的技术领域中已知的技术材料,以便不会不必要地模糊本发明。
公开了一种利用请求广播主机(request broadcasting masters)的高带宽存储器系统。为了增加存储器的带宽,处理器系统通信地连接到多个存储器单元。在一些实施例中,存储器单元围绕处理组件布置。例如,处理组件可以被布置在相对于多个存储器单元的中央位置,存储器单元可以包括独立的北、东、南和西存储器单元。处理组件可以是具有多个处理元件的处理器,其中每个处理元件包括其自己的控制逻辑和矩阵计算引擎。处理元件排列成二维阵列,例如处理元件的8×8矩阵。也可以使用其他适当数量的处理元件。通过应用神经网络来解决复杂的人工智能问题,处理器的处理元件可以并行工作。网络将处理元件相互连接并连接到存储器单元。例如,处理元件的8×8矩阵(总共64个处理元件)通过例如片上网络子系统的8×8网络连接。每个处理元件可以通过网络向其他处理元件发送数据和/或访问其中一个存储器单元。在一些实施例中,为一组处理元件指定请求广播主机。请求广播主机充当管理该组中处理元件的存储器访问请求的主机。例如,为每一行处理元件指定一个请求广播主机,其中该组是该行中的每个处理元件。或者,该组可以是一列中的每个处理器,并且为每列处理元件指定请求广播主机。来自组中处理器的任何存储器请求都由该组的请求广播主机管理。在各种实施例中,组中的每个处理元件向其请求广播主机发送其存储器请求。请求广播主机将来自该组处理元件的所有存储器请求合并成压缩的存储器访问请求。压缩的存储器访问请求减少了总存储器访问请求的数量,但是每个存储器访问请求可以用于更多的数据。请求广播主机将合并的存储器访问请求导向存储器单元。在一些实施例中,合并的存储器访问请求被广播到所有存储器单元。例如,合并的存储器访问请求沿着网络子系统的行和列被传输到处理组件的北、东、南和西侧的存储器单元。
在各种实施例中,对存储器单元的存储器访问请求仅由请求广播主机而不是由每个处理元件导向存储器单元。通过指定特定的请求广播主机并将存储器请求压缩为更少(但更大)的请求,网络上任何时候的存储器请求总数都可以最小化。消息的减少在一定程度上通过最小化网络冲突显著提高了存储器传输的效率。在各种实施例中,每个存储器单元响应其负责的存储器访问请求部分。例如,北存储器单元只响应北存储器单元负责的请求部分。类似地,东、南、西存储器单元只响应它们各自负责的请求部分。在各种实施例中,单个存储器访问请求的请求数据地址分布在不同的存储器单元中。可以使用动态可编程分配方案来执行分配。通过使用例如基于工作负荷的动态可编程分配方案在多个存储器单元之间分布数据,提高了存储器利用率和效率,并且具有不同工作负荷的处理元件可以避免彼此步调一致地操作。
在一些实施例中,在网络子系统中,每组处理元件的请求广播主机被布置成彼此偏移。例如,每个请求广播主机被安排成最小化与其他请求广播主机的网络重叠,并且位于网络阵列或网格中的不同(行、列)位置。在一些实施例中,请求广播主机可以沿着网络网格的对角线放置。例如,对于8×8网络,请求广播主机可以沿任一对角线放置。对于从左上角到右下角的对角线遍历,最左上的请求广播主机使用网络的顶行和左侧列向存储器单元发送存储器请求和从存储器单元发送和接收存储器请求。类似地,最右下方的请求广播主机使用网络的底部行和右侧列向存储器单元发送存储器请求和从存储器单元接收存储器请求。沿着对角线的每个请求广播主机具有专用的列和行,用于向不同的存储器单元提供存储器访问请求和从不同的存储器单元接收存储器访问响应。一旦接收到存储器访问响应,请求广播主机就可以将该响应提供给该组的适当的请求处理元件。在各种实施例中,请求广播主机和该组的处理元件实现组协议来协调存储器访问请求的合并和响应的接收。例如,请求广播主机和每个处理元件可以执行握手来协调存储器访问请求和响应。
在一些实施例中,处理器系统包括多个存储器单元和通过多个网络连接耦合到多个存储器单元中的每一个的处理器。例如,一个处理器或处理组件在四侧(sides)被存储器单元包围,并且与每个存储器单元有多个网络连接。处理器包括以二维阵列排列的多个处理元件,例如处理元件的二维矩阵或网格。在一些实施例中,二维阵列不是严格的矩形网格,而是处理元件的另一种适当的有序排列。处理器包括相应的二维通信网络,该二维通信网络将多个处理元件中的每一个通信连接到二维阵列的相同轴上的其他处理元件。例如,片上网络子系统连接排列在同一列中的处理元件和排列在同一行中的处理元件。在一些实施例中,多个处理元件中的沿着二维阵列的对角线定位的每个处理元件被配置为多个处理元件中的沿着二维阵列的相同轴定位的相应组的处理元件的请求广播主机。例如,沿同一行(或列)排列的处理元件形成一组处理元件。每个组都有一个指定的请求广播主机。请求广播主机位于处理元件阵列的对角线上。例如,没有两个请求广播主机共享同一行或同一列。
在一些实施例中,处理组件的每个处理元件可以配置有分配方案,以将数据分散在可用的存储器单元中。分配方案是动态可编程的,使得不同的处理元件可以应用相同或不同的分配方案。例如,在各种实施例中,可以使用处理器指令对每个处理元件进行编程,以动态配置该处理元件的分配方案。在各种实施例中,共享相同工作负荷的处理元件可以被编程地配置成利用相同的分配方案,而具有不同工作负荷的处理元件可以被编程地配置成利用不同的分配方案。不同的分配方案有助于防止多个处理元件彼此步调一致地工作。通过改变分配方案,可以更有效地利用存储器单元,并提高存储器性能。在一些实施例中,存储器单元访问单位(access unit)的大小也是可配置的。例如,存储器单元访问单位的大小可以通过处理器指令以编程方式配置。每个处理元件可以使用可配置的访问单位大小的组(access unit-sized group)经由请求广播主机向每个存储器单元读取和/或写入数据。此外,存储器访问操作可以跨越多个访问单位,并且引用分配在多个存储器单元中的数据。在各种实施例中,每个存储器访问请求被广播到所有存储器单元,并且每个存储器单元返回部分响应,这些部分响应被组合以实现广播的请求。
在一些实施例中,处理器系统包括多个(a plurality of)存储器单元和耦合到多个存储器单元的处理器。例如,处理器系统包括通信连接到多个存储器单元的处理器。在一些实施例中,存储器单元被布置在处理器的所有侧面上,以帮助最小化从处理器到每个存储器单元的等待时间。多个存储器单元中的每一个包括请求处理单元和多个存储体。例如,请求处理单元接收存储器访问请求,例如读取请求和/或写入请求,并确定是否以及如何处理这些请求。请求处理单元可以确定存储器访问请求的一部分是否可以由存储器单元及其对应的存储体服务。例如,请求处理单元可以将存储器访问请求分解成部分请求,并确定部分请求的哪个子集可以从存储器单元的相应存储体得到服务。在各种实施例中,每个存储器单元可以包括多个存储体,以增加存储器单元的存储容量。例如,存储器单元可以包括4、8、16、32或其他适当数量的存储体。在一些实施例中,处理器包括多个处理元件。例如,处理器是包括一组处理元件的处理组件。处理元件可以排列成矩阵,例如处理元件的8×8阵列。处理器还包括将多个处理元件通信连接到多个存储器单元的通信网络。例如,诸如片上网络子系统和/或网络接口/总线的通信网络将每个处理元件通信连接到每个存储器单元。在一些实施例中,多个处理元件中的每个处理元件包括控制逻辑单元和矩阵计算引擎。例如,多个处理元件中的第一处理元件包括用于控制第一处理元件的控制逻辑和用于计算矩阵运算的矩阵计算引擎。控制逻辑被配置为使用动态可编程分配方案访问来自多个存储器单元的数据。例如,控制逻辑使用处理器指令来配置,以利用特定的分配方案或模式。该方案可以基于处理元件工作负荷或另一种适当的配置。分配方案确定处理元件专用的存储器地址到存储器单元的存储器位置的映射。
图1是示出使用神经网络解决人工智能问题的系统的实施例的框图。在所示的示例中,系统100是包括处理组件101和存储器单元111、121、131和141的硬件平台。处理组件101经由诸如网络连接151的网络连接通信地连接到存储器单元111、121、131和141。网络连接151将处理组件101通信连接到北存储器单元111。类似的网络连接(未标记)将处理组件101连接到存储器单元121、131和141。处理组件101连接到存储器单元111、121、131和141中的每一个,并且可以同时与它们通信。存储器单元111、121、131和141位于处理组件101周围的北、东、南和西位置,但是其他布局也是合适的。通过将存储器单元111、121、131和141定位在处理组件101周围,存储器单元111、121、131和141可以被处理组件101同时访问和/或多个连接可以被处理组件101用来与不同的存储器单元111、121、131和141并行通信。在所示的示例中,系统100包括围绕处理组件的四个存储器单元,但是可以适当地使用更少或更多的存储器单元。
在一些实施例中,处理组件101是包括一个或更多个处理元件(未示出)的处理器。每个处理元件可以至少包括用于执行矩阵运算的矩阵计算引擎。处理元件还可以使用通信网络和/或总线(例如片上网络子系统)进行通信连接。用于执行神经网络运算的数据可以从诸如位于处理组件101周围的存储器单元111、121、131和141的存储器单元中检索并写入其中。例如,使用片上网络子系统,存储器访问操作可以经由请求广播主机从处理组件101的处理元件导向存储器,包括存储器单元111、121、131和141。请求广播主机合并来自一组处理元件的存储器请求。请求广播主机接收对请求的响应,并将响应发送到该组的原始请求处理元件。在一些实施例中,每个处理元件可以被分配特定的工作负荷,并且每个工作负荷可以与存储在存储器中的特定数据集相关联。例如,工作负荷的数据集可以包括激活和/或滤波矩阵数据。在各种实施例中,数据与大型神经网络矩阵相关联,并且可以包括数百个或更多个矩阵元素。相关数据可以跨存储器单元111、121、131和141的不同区域存储。在一些实施例中,数据存储在基于动态可编程分配方案分配在存储器单元111、121、131和141上的访问单位大小的组中。
在一些实施例中,处理组件101经由一组网络/总线连接,诸如处理组件101北侧的网络连接151,通信地连接到存储器单元111、121、131和141。例如,处理组件101的片上网络子系统包括连接处理组件101的处理元件阵列的网络阵列或网格。在一些实施例中,网络网格的每一列连接到处理组件101北侧的存储器单元111和处理组件101南侧的存储器单元131。类似地,网络网格的每一行连接到处理组件101东侧的存储器单元121和处理组件101西侧的存储器单元141。在一些实施例中,处理组件101每一侧的外部网络连接的数量与每个存储器单元的输入/输出连接的数量相匹配。例如,网络连接151可以包括从处理组件101到存储器单元111的32个网络连接,网络连接151的一个连接将处理组件101的每个北侧外部网络连接匹配到存储器单元111的输入/输出连接。
在一些实施例中,存储在存储器单元111、121、131和/或141中的数据可以由工作负荷或另一个适当的标识符来访问。例如,工作负荷标识符可用于确定如何在不同的可用存储器单元之间分配和检索数据。在各种实施例中,不同的工作负荷被编程为使用不同的分配方案在可用的存储器单元之间分配它们相应的工作负荷数据。例如,每个工作负荷可被动态编程为使用不同的分配方案。在各种实施例中,分配方案使用可配置的有序模式来访问存储器单元。可以对处理元件进行动态编程,来以不同于其他处理元件的方式分配数据,而不是对所有工作负荷使用预定义的分配。这允许存储器单元的更好的利用和效率。在各种实施例中,与存储器访问操作相关联的数据可以驻留在一个或更多个不同的存储器单元中。例如,存储器读取请求可以由位于存储器单元111、121和131中的数据来服务。不同的存储器请求可以由存储器单元121、131和141中的数据来服务。在一些实施例中,诸如可编程散列函数的散列函数用于确定特定工作负荷或标识符的存储器布局方案或访问顺序模式。例如,一个处理元件的存储器读取请求可以使用重复有序模式来访问存储器单元,该有序模式从存储器单元111开始,接着是存储器单元121、存储器单元131和存储器单元141。不同处理元件的存储器读取请求可以使用不同的可编程重复有序模式,该有序模式从存储器单元141开始,接着是存储器单元121、存储器单元131和存储器单元111。由于数据分配在不同的存储器单元上,存储器请求可以触发来自不同存储器单元的一个或更多个部分响应,每个存储器单元对存储器请求的一部分进行响应。一旦处理元件接收到所有的部分响应,存储器请求就完成了。
在一些实施例中,诸如写入或读取存储器访问操作之类的存储器访问操作可以被分成多个部分访问请求。存储器访问操作可以是合并的存储器访问操作,其包括(并压缩)来自多个处理元件的请求。在一些实施例中,存储器单元111、121、131和/或141将存储器访问操作分解或展开成一个或更多个部分访问请求。基于所请求的存储器范围,存储器单元确定它是否包含所请求的数据。在一些实施例中,存储器请求由存储器单元的请求处理单元(未示出)处理。例如,在一些实施例中,存储器请求被广播到所有存储器单元,并由每个存储器单元的相应请求处理单元进行处理。每个请求处理单元分析该请求,并且不同的请求处理单元响应存储器请求的不同部分。例如,请求处理单元仅响应对与其存储器单元相关联的数据或存储器地址的请求。在存储器访问请求可由特定存储器单元服务的情况下,相关联的请求处理单元可从相关联的存储器单元检索相关数据(或将相关数据写入相关联的存储器单元)。不能由特定存储器单元服务的存储器访问请求可以被忽略,并将由相应的适当存储器单元处理。在一些实施例中,每个存储器单元包含多个存储体,并且请求处理单元可以将部分存储器访问请求导向存储器单元的适当存储体。
在一些实施例中,每个存储器单元使用的数据访问单位的大小是可编程的。例如,存储器单元可以被编程为使用128字节或另一个适当大小的访问单位,使得每一个128字节(或另一个适当的访问单位大小)的新组基于可编程分配方案被存储在不同的存储器单元上。这允许使用可编程大小的访问单位跨不同的存储器单元写入数据。例如,第一访问单位的数据被写入第一存储器单元,第二访问单位的数据被写入第二存储器单元,以此类推,这由分配方案的排序来确定。一旦所有存储器单元都被利用,下一个存储器单元就循环回到第一个存储器单元。在各种实施例中,存储器单元的顺序也可以是可编程的,并且可以使用散列函数来确定。例如,基于散列函数的结果,每个工作负荷可以利用不同的分配顺序来访问存储器单元。
图2是示出使用神经网络解决人工智能问题的系统的实施例的框图。在所示的示例中,系统200是包括处理组件201和存储器单元211、221、231和241的硬件平台。处理组件201经由多个网络连接通信连接到存储器单元211、221、231和241。处理组件201包括处理元件(每个标记为“PE”)的阵列,包括处理元件203、205、207和209。加粗的处理元件,例如处理元件203、205和207,是被指定为请求广播主机的处理元件。一些处理元件用虚线示出,以反映填充处理元件阵列的附加数量的处理元件,并且这些处理元件是不充当请求广播主机的处理元件。处理元件之间的省略号表示处理元件的附加行或列。处理元件阵列的大小可以适当变化。在一些实施例中,处理组件201包括8×8、16×16、32×32或另一适当大小的处理元件阵列。在所示的示例中,网络子系统251将处理组件201的处理元件彼此通信连接,并连接到存储器单元211、221、231和241。在处理组件201的每一侧,多个网络连接将处理组件201连接到存储器单元。在一些实施例中,系统200是图1的系统100,处理组件201是图1的处理组件101,并且存储器单元211、221、231和241分别是图1的存储器单元111、121、131和141。
在一些实施例中,存储器单元位于处理组件201的四侧的每一侧上。例如,存储器单元211位于处理组件201的北侧,存储器单元221位于处理组件201的东侧,存储器单元231位于处理组件201的南侧,存储器单元241位于处理组件201的西侧。每个存储器单元包括多个存储体。在所示的示例中,每个存储器单元被描绘为具有四个存储体,但是每个存储器单元可以被配置有另一个适当数量的存储体。同一存储器单元的存储体之间的省略号表示可选的附加存储体。在一些实施例中,每个存储器单元通过多个网络连接/接口通信连接到处理组件201的一侧。每个存储器单元的存储器请求和相应的响应可以通过存储器单元的任何网络连接传输。通过为每个存储体利用多个网络连接,存储器单元可以从多个处理元件并行接收存储器请求并以存储器响应进行响应。每个存储器单元的多个网络连接增加了整体存储器带宽。
在一些实施例中,网络子系统251是将处理组件201的每个处理元件彼此连接的片上网络子系统。网络子系统251是具有沿着对应于处理元件阵列的列和行布置的通信线路的阵列或网格网络。网络子系统251进一步通信连接到存储器单元211、221、231和241。每一列和每一行的网络通信线路连接到存储器单元的输入/输出接口。例如,每列的网络通信线路连接到处理组件201的北侧的存储器单元211和处理组件201的南侧的存储器单元231。类似地,每行的网络通信线路连接到处理组件201的东侧的存储器单元221和处理组件201的西侧的存储器单元241。在各种实施例中,列通信线的数量对应于存储器单元211和231的输入/输出接口的数量。行通信线的数量对应于存储器单元221和241的输入/输出接口的数量。尽管系统200被描绘为具有四个存储器单元,但是在一些实施例中,总的存储器单元可以是图2所示的存储器单元的子集。例如,存储器单元可以仅位于处理组件201的两侧或三侧,并且网络子系统251的相应网络通信线路可以仅包括在适当的地方访问存储器单元的网络接口。仅配置有三个存储体的系统可以具有仅在处理组件的三侧上连接到存储器单元的网络通信线路/接口。
在一些实施例中,处理元件按行(或列)排列成组。例如,每行处理元件被指定为一个组。该组中的一个处理元件被指定为请求广播主机。例如,处理元件203是对应于第一行处理元件的处理元件组的请求广播主机。类似地,处理元件205是对应于第二行处理元件的处理元件组的请求广播主机。对于处理元件的最后一行,处理元件207是该组的请求广播主机。指定的请求广播主机沿着处理元件阵列的对角线排列。在所示的例子中,请求广播主机203、205和207沿着处理元件阵列的从左上角到右下角横越的对角线定位。在一些实施例中,请求广播主机沿着不同的对角线定位,例如沿着从处理元件阵列的左下角到右上角横越的对角线定位。在一些实施例中,按列而不是行来定义组,并且为处理元件的每个列组指定单个请求广播主机。来自处理元件的存储器请求和响应使用请求广播主机来引导。请求被传送到请求广播主机,在那里它们被转发到存储器单元。请求广播主机接收来自存储器单元的响应,并将响应发送给原始处理元件。
在一些实施例中,阵列的每个处理元件将存储器请求转发给该组的请求广播主机,例如请求广播主机203、205和207。不是请求广播主机的处理元件不直接与存储器单元通信。例如,处理元件209将其所有存储器访问请求转发给请求广播主机205。然后,每个请求广播主机向所有存储器单元广播存储器请求。例如,使用网络子系统251向存储器单元211、221、231和241广播存储器访问请求。经由沿着网络子系统251的列方向穿越的网络连接,该请求被分别广播到北存储器单元211和南存储器单元231。该请求还经由沿着网络子系统251的行方向穿越的网络连接分别广播到东和西存储器单元,即存储器单元221和241。每个请求广播主机使用网络子系统251在所有方向上向所有存储器单元广播存储器请求。在各种实施例中,存储器访问请求可以是读和/或写请求。由于请求广播主机位于处理元件阵列的对角线上,因此它们各自的广播彼此具有最小的重叠和冲突的可能性。每个请求广播主机使用不同的网络接口与存储器单元通信。在一些实施例中,所有请求广播主机可以与同一存储器单元并行通信。响应于存储器访问请求,存储器单元提供响应,该响应使用相同的路由(route)但以相反的方向被传输回请求广播主机。通过使用相同的路由,导向不同请求广播主机的响应彼此具有最小的重叠和冲突的可能性。由于每个请求广播主机在网络子系统251上具有自己的专用路由,用于广播请求和接收响应,因此网络冲突的可能性显著降低。
在一些实施例中,一个组的每个请求广播主机接收并接着合并来自其组的处理元件的存储器访问请求。例如,请求广播主机205从处理元件209接收的存储器请求被请求广播主机205与来自同一组的处理元件的一个或更多个存储器请求合并。通过合并存储器请求,减少了广播请求的总数,进一步减少了网络流量和冲突的可能性。因为数据可以分布在多个存储器单元上,所以多个存储器单元可以通过发送部分响应来服务存储器请求,该部分响应仅寻址每个存储器单元负责的存储器请求部分。
在一些实施例中,存储器单元211、221、231和241各自从处理组件201的请求广播主机接收广播的存储器访问请求。存储器访问请求可以是读取请求和/或写入请求。存储器单元211、221、231和241中的每一个分解存储器访问请求,以确定它是否可以由它的存储体之一服务,可能是部分地由它的存储体之一服务。尽管在图2中为每个存储器单元示出了四个存储体,但是在各种实施例中,存储器单元211、221、231和241可以包括更少或更多的存储体,例如8、16、32、64或其他适当数量的存储体。在一些实施例中,使用散列函数来实现动态可编程分配方案,来确定存储器单元是否可以服务于存储器请求的一部分。例如,散列函数可以利用处理元件的工作负荷标识符,基于处理元件的工作负荷在存储器单元和存储体之间分配数据。在一些实施例中,散列函数检查与存储器访问请求相关联的存储器地址的一组位,例如两位或更多位。
在一些实施例中,存储器读取/写入大小,例如存储器访问单位的大小,可以是可编程的。例如,存储器读取可以被编程为64字节、128字节或其他适当的访问单位大小。每个存储器单元可以通过分析每个传入的存储器访问请求来确定读取和/或写入的适当字节。在存储器单元(例如存储器单元211、221、231或241)可以服务请求的情况下,存储器请求响应将经由相应的请求广播主机返回给处理组件201和适当的请求处理元件。在一些实施例中,准备好的响应可以包括从存储体读取的数据。该响应可以是仅满足原始存储器访问请求的一部分的部分响应。负责管理相应存储器地址范围的其他存储器单元可以实现附加的部分响应。例如,广播到所有存储器单元的大存储器读取请求可以由多个存储器单元提供的多个部分响应来实现。在一些实施例中,每个部分响应包括可用于对部分响应排序的标识符,例如序列标识符。例如,可能没有按顺序接收部分响应,并且使用标识符对部分响应进行排序,并从多个部分响应中构建完整响应。
图3是示出使用神经网络解决人工智能问题的系统的实施例的框图。在所示的示例中,系统300是包括处理组件301和存储器单元311、321、331和341的硬件平台。处理组件301经由多个网络连接通信连接到存储器单元311、321、331和341。处理组件301包括处理元件(每个标记为“PE”)的阵列,包括处理元件303和305。加粗的处理元件,例如处理元件303和305,是被指定为请求广播主机的处理元件。一些处理元件用虚线示出,以反映填充处理元件阵列的附加数量的处理元件,并且这些处理元件是不充当请求广播主机的处理元件。处理元件之间的省略号表示处理元件的附加行或列。处理元件阵列的大小可以适当变化。在一些实施例中,处理组件301包括8×8、16×16、32×32或处理元件的另一个适当大小的阵列或网格。在所示的示例中,网络子系统351将处理组件301的处理元件彼此通信连接,并连接到存储器单元311、321、331和341。在处理组件301的每一侧,多个网络连接将处理组件301连接到存储器单元。处理元件和请求广播主机303使用网络子系统351上的网络路由353向存储器单元311、321、331和341广播存储器访问请求。处理元件和请求广播主机305使用网络子系统351上的网络路由355向存储器单元311、321、331和341广播存储器访问请求。在一些实施例中,系统300是图1的系统100,处理组件301是图1的处理组件101,并且存储器单元311、321、331和341分别是图1的存储器单元111、121、131和141。在一些实施例中,系统300是图2的系统200,处理组件301是图2的处理组件201,存储器单元311、321、331和341分别是图2的存储器单元211、221、231和241,网络子系统351是图2的网络子系统251。
在一些实施例中,同一处理元件组的处理元件将存储器请求传输到请求广播主机,例如请求广播主机303或305。请求广播主机合并从其组的处理元件接收的请求。在一些实施例中,合并的存储器请求是原始单独存储器请求的压缩版本。例如,压缩或合并的存储器请求可以减少重复请求,即,来自同一组的不同处理元件的请求在所请求的数据上重叠。在各种实施例中,每个请求可以包括与用于跨存储器单元分配数据的可配置分配方案相关联的标识符。一旦合并,使用网络路由通过网络子系统351广播存储器请求。例如,请求广播主机303利用网络路由353来广播对存储器单元311、321、331和341的存储器访问请求。沿着网络子系统351的专用列和行广播请求。类似地,请求广播主机305利用网络路由355来广播对存储器单元311、321、331和341的存储器访问请求。网络路由353和网络路由355的冲突点最小,因为请求广播主机303和请求广播主机305位于彼此不同的行和列位置。通过沿着处理元件阵列的对角线定位请求广播主机,请求和响应之间的冲突被显著减少。来自存储器单元311、321、331和341的响应利用相同的网络路由来响应请求,但是以相反的方向行进。例如,存储器单元311利用与网络路由353相关联的从其接收存储器请求的相同网络接口来响应请求,以将响应引导回请求广播主机303。作为另一个例子,存储器单元311利用与网络路由355相关联的从其接收存储器请求的相同网络接口来响应请求,以将响应引导回请求广播主机305。由于从存储器单元311到请求广播主机303和请求广播主机305的响应的返回路由不重叠,所以网络冲突被最小化,并且有效存储器带宽被增加。
图4是示出使用神经网络解决人工智能问题的系统的实施例的框图。在所示的示例中,系统400是包括处理组件401和存储器单元411、421和441的硬件平台。第四存储器单元未在图4中描绘,但位于处理组件401的南侧。每个存储器单元包括请求处理单元和多个存储体。例如,存储器单元411包括请求处理单元413和诸如存储体415的存储体。每个存储器单元,例如存储器单元411,可以配置有比所示更多(或更少)的存储体。存储器单元421和441的内部组件未示出,但是类似于存储器单元411。
在一些实施例中,处理组件401经由多个网络连接通信连接到包括存储器单元411、421和441的存储器单元。处理组件401包括处理元件(每个标记为“PE”)的阵列,包括处理元件403、405、461、463和465。加粗的处理元件,例如处理元件403和405,是被指定为请求广播主机的处理元件。一些处理元件用虚线示出,以反映填充处理元件阵列的附加数量的处理元件,并且这些处理元件是不充当请求广播主机的处理元件。处理元件之间的省略号表示处理元件的附加行或列。处理元件阵列的大小可以适当变化。在一些实施例中,处理组件401包括8×8、16×16、32×32或另一适当大小的处理元件阵列。处理组件401的轮廓以虚线示出,仅示出了处理组件401的一部分,强调了处理组件401和存储器单元411之间的关系。在各种实施例中,处理组件401和存储器单元411之间的关系类似于处理组件401如何与剩余的存储器单元交互。
在所示的例子中,网络子系统451将处理组件401的处理元件彼此通信连接,并连接到存储器单元411、421和441。在处理组件401的每一侧,多个网络连接将处理组件401连接到存储器单元。处理元件和请求广播主机403使用网络子系统451向包括存储器单元411、421和441在内的存储器单元广播存储器访问请求。处理元件和请求广播主机405使用网络子系统451上的网络路由455向包括存储器单元411、421和441在内的存储器单元广播存储器访问请求。来自存储器单元411的响应使用为存储器单元411从其接收请求的相同网络接口,穿过网络路由471。类似地,来自存储器单元421的响应使用为存储器单元421从其接收请求的相同网络接口穿过网络路由473,并且来自存储器单元441的响应使用为存储器单元441从其接收请求的相同网络接口穿过网络路由477。来自处理组件401南侧的存储器单元(未示出)的响应使用从其接收请求的相同网络接口穿过网络路由475。
在一些实施例中,同一处理元件组的处理元件将存储器请求传输到请求广播主机,例如请求广播主机403或405。请求广播主机合并从其组的处理元件接收的请求。例如,处理元件405、461、463和465是一行处理元件,并且形成处理元件组。处理元件405充当该组的请求广播主机。如参考图3所述,请求广播主机405代表组中的所有处理元件,使用网络路由455向所有可用的存储器单元广播存储器访问请求。北侧存储器单元411和南侧存储器单元(未示出)经由网络子系统451的北/南网络通信线路接收广播的请求。东侧存储器单元421和西侧存储器单元441经由网络子系统451的东/西网络通信线路接收广播的请求。广播传输的四个方向由网络路由455示出。在各种实施例中,广播的请求是合并的存储器请求,该请求压缩源自同一组的处理元件(例如处理元件405、461、463和/或465中的一个或更多个)的多个单独的请求,并且由请求广播主机和处理元件405广播。
在一些实施例中,存储器单元411包括请求处理单元413和多个存储体,例如存储体415。请求处理单元413经由网络路由455从处理组件401的请求广播主机和处理元件405接收广播的存储器访问请求。存储器访问请求可以是读取请求和/或写入请求。请求处理单元413分解存储器访问请求,以确定它是否可以被存储器单元411的存储体之一服务,可能是部分地被存储器单元411的存储体之一服务。尽管图4中示出了四个存储体,但是在各种实施例中,存储器单元411可以包括更少或更多的存储体(如由省略号表示的),例如8、16、32、64或其他适当数量的存储体。在一些实施例中,请求处理单元413将存储器访问请求导向存储器单元411的适当存储体。例如,基于请求的存储器地址,请求处理单元413确定要访问的适当的存储体。在一些实施例中,对于单个存储器访问请求,可以访问存储器单元411的两个或更多个存储体。可以基于散列函数来确定存储体。例如,散列函数可以利用与原始存储器访问请求相关联的处理元件的工作负荷标识符。在一些实施例中,散列函数检查与存储器访问请求相关联的存储器地址的一组位,例如两位或更多位。请求处理单元413准备存储器访问响应,并通过网络路由471将响应发送到请求广播主机405。请求广播主机405将该响应发送到最初发起该请求的处理元件。在一些实施例中,每个存储器单元准备并发送部分响应,以对应于每个存储器单元负责的广播存储器请求的部分。完整响应可以由部分响应构成。在一些实施例中,完整响应的构建由请求广播主机(例如请求广播主机405)来执行。在一些实施例中,完整响应的构建由原始处理元件使用来自请求广播主机的转发的部分响应来执行。类似于存储器单元411,系统400的其他存储器单元,包括存储器单元421、441和其他未示出的存储器单元,以类似的方式操作以响应广播的存储器请求。
在一些实施例中,系统400是图1的系统100,处理组件401是图1的处理组件101,并且存储器单元411、421和441分别是图1的存储器单元111、121和141。在一些实施例中,系统400是图2的系统200,处理组件401是图2的处理组件201,存储器单元411、421和441分别是图2的存储器单元211、221和241,并且网络子系统451是图2的网络子系统251。在一些实施例中,系统400是图3的系统300,处理组件401是图3的处理组件301,存储器单元411、421和441分别是图3的存储器单元311、321和341,网络子系统451是图3的网络子系统351,请求广播主机405是图3的请求广播主机305,网络路由455是图3的网络路由355。
图5是示出使用神经网络解决人工智能问题的处理元件的实施例的框图。在所示的示例中,处理元件500包括控制逻辑501、存储器管理单元503、本地储存存储器505、网络接口507和矩阵计算引擎509。在各种实施例中,一个或更多个处理元件可以在相同的数据集或工作负荷上一起工作,以使用大的工作数据集来求解人工智能程序。在一些实施例中,处理元件500是图1的处理组件101、图2的处理组件201、图3的处理组件301和/或图4的处理组件401的处理元件。在一些实施例中,处理元件500是图2的处理元件203、205、207、209和/或另一个处理元件,图3的处理元件303、305和/或另一个处理元件,和/或图4的处理元件403、405、461、463、465和/或另一个处理元件。在一些实施例中,处理元件500包括作为请求广播主机的功能,例如图2的请求广播主机203、205和/或207、图3的303和/或305、和/或图4的403和/或405。
在一些实施例中,控制逻辑501是用于指导处理元件500的功能的控制逻辑单元,并且可以用于与处理元件500的组件(例如存储器管理单元503、本地储存存储器505、网络接口507和矩阵计算引擎509)接口连接。在一些实施例中,控制逻辑501可以响应用于将神经网络应用于人工智能问题的处理器指令。例如,控制逻辑501可以用于响应于处理指令,经由网络接口507启动从存储器读取和/或写入数据。在一些实施例中,控制逻辑501用于为矩阵计算引擎509加载和准备操作参数。例如,控制逻辑501可以准备用于计算卷积运算的矩阵操作数。在一些实施例中,控制逻辑501用于帮助处理对存储器数据请求的部分响应。
在一些实施例中,处理元件500用作请求广播主机,并且控制逻辑501实现这里描述的请求广播主机功能。例如,控制逻辑501用于将来自同一组的处理元件的存储器访问请求合并成广播给存储器单元的压缩或合并的存储器访问请求。控制逻辑501用于接收和处理对广播请求的部分响应。在一些实施例中,请求广播主机从接收到的部分响应构建完整响应,之后将完整响应发送到原始请求处理元件。在一些实施例中,请求广播主机将部分响应转发给适当的处理元件,并且每个处理元件本身从接收到的部分响应构建完整响应。在一些实施例中,请求广播主机功能在与控制逻辑501分离的组件(例如请求广播主机(未示出))中实现。
在一些实施例中,存储器管理单元503用于管理处理元件500的存储器相关功能。例如,存储器管理单元503可以用于对用于从诸如图1的存储器单元111、121、131和/或141的存储器单元读取数据和/或向其写入数据的访问单位大小进行编程。在一些实施例中,大的存储器读取被分成访问单位大小的组,并且可用的存储器单元之一负责服务每个存储器组。按访问单位大小的组将数据分配在存储器单元中,允许更有效地访问存储器,并显著提高存储器利用率。在一些实施例中,存储器管理单元503用于配置散列机制,用于在不同的存储器单元之间分配数据。例如,存储器管理单元503可以管理与可编程散列机制相关联的配置。在一些实施例中,存储器管理单元503是控制逻辑501的一部分。可编程散列机制允许分配模式是可配置的,而不是对所有存储器访问操作使用固定的分配模式。例如,不同的处理元件工作负荷可以使用不同的分配模式。作为一个示例,一个工作负荷可以被配置为使用北、东、南、西模式写入存储器单元,而另一个工作负荷可以被配置为使用南、北、东、西模式写入存储器单元。在各种实施例中,分配方案是动态的,并且可以经由控制逻辑501和存储器管理单元503来动态编程。存储器管理单元503用于帮助将本地存储器地址映射到在不同存储器单元中发现的不同存储器访问单位大小的组。
在一些实施例中,本地储存存储器505是用于存储数据(诸如与神经网络运算相关的数据)的存储器暂存器(memory scratchpad)。本地储存存储器505可用于存储通过对存储器访问请求的部分响应而检索的数据。部分响应和相关数据可以被收集并存储在本地储存存储器505中,以构建完整响应。在一些实施例中,本地储存存储器505由用于快速读写访问的寄存器组成。在各种实施例中,处理元件500的一个或更多个组件,例如矩阵计算引擎509,可以访问本地储存存储器505。例如,矩阵输入数据操作数和/或输出数据结果可以存储在本地储存存储器505中。
在一些实施例中,本地储存存储器505由充当请求广播主机的处理元件使用,以存储来自同一组的处理元件的存储器请求。例如,可以临时储存存储器请求,以创建可以广播给可用存储器单元的合并的存储器请求。合并的存储器请求将来自同一组的一个或更多个处理元件的多个请求压缩成请求由各个请求引用的数据的单个存储器请求。在一些实施例中,合并操作利用本地储存存储器505。在各种实施例中,本地储存存储器505用于将响应于合并的存储器请求而接收到的响应引导回发起存储器访问请求的原始处理元件。例如,原始处理元件的地址和所请求的存储器地址范围存储在本地储存存储器505中。
在一些实施例中,网络接口507用于与诸如用于网络通信的片上网络系统的网络子系统接口连接。在一些实施例中,网络接口507与之通信的网络子系统是图2的网络子系统251、图3的网络子系统351和/或图4的网络子系统451。来自和去往处理元件500的存储器访问请求(例如读取请求和写入请求)经由网络接口507传输。例如,存储器访问请求可以通过网络接口507传输到请求广播主机。类似地,在一些实施例中,用作请求广播主机的处理元件从同一组的处理元件接收存储器请求,将合并的存储器访问请求广播给存储器单元,并经由网络接口507从存储器单元接收部分响应。
在一些实施例中,矩阵计算引擎509是硬件矩阵处理器单元,用于执行矩阵运算,包括与卷积运算相关的运算。例如,矩阵计算引擎509可以是用于执行点积运算的点积引擎。在一些实施例中,支持的卷积运算包括逐深度(depthwise)、逐组(groupwise)、正常(normal)、规则(regular)、逐点和/或三维卷积等。例如,矩阵计算引擎509可以接收第一输入矩阵,例如表示为三维矩阵的大图像的子集。第一输入矩阵可以具有以下维度:高度x宽度x通道(HWC)、通道x高度x宽度(CHW)或另一适当的布局格式。矩阵计算引擎509还可以接收第二输入矩阵,例如滤波器、核或权重等,以应用于第一输入矩阵。矩阵计算引擎509可用于使用两个输入矩阵执行卷积运算,以确定结果输出矩阵。在一些实施例中,矩阵计算引擎509可以包括输入和/或输出缓冲器,用于加载输入数据矩阵并写出结果数据矩阵。矩阵计算引擎509使用的数据可以从本地储存存储器505和/或诸如图1的存储器单元111、121、131和/或141的外部存储器中读取和/或写入这些存储器。
图6是示出用于执行存储器访问的过程的实施例的流程图。例如,通过使用与人工智能问题和神经网络相关联的数据应用神经网络来解决人工智能问题。通过诸如图2的处理元件203、205、207和/或209的处理元件,经由诸如图2的请求广播主机和处理元件203、205和/或207的请求广播主机,从诸如图1的存储器单元111、121、131和/或141的存储器读取数据和向其写入数据。在一些实施例中,图6的过程由图2的请求广播主机203、205和/或207、图3的请求广播主机303和/或305、和/或图4的请求广播主机403和/或405来执行。在一些实施例中,当图5的处理元件500用作请求广播主机时,图6的过程由图5的处理元件500执行。使用图6的过程,存储在存储器中的数据元素可以分配在多个存储器单元中,以提高存储器的利用率和存储器访问操作的效率。
在601,接收存储器访问数据请求。例如,存储器访问数据请求在请求广播主机处从同一组的一个或更多个处理元件接收。在一些实施例中,存储器访问请求可以是读或写请求。例如,读请求可以指定基地址(base address)和大小。在一些实施例中,该请求包括诸如工作负荷标识符的标识符,该标识符用于确定哪些存储器单元负责所请求数据的哪些部分。在各种实施例中,从处理元件到请求广播主机的请求传输包括实现网络协议,该网络协议可以包括协商处理元件和请求广播主机之间的连接。协商网络连接可以包括例如执行与建立网络连接相关的握手。在一些实施例中,在607使用网络连接经由请求广播主机将响应从存储器传输到原始处理元件。
在一些实施例中,通过初始化处理元件来确定包括在存储器访问请求中的标识符。例如,特定的存储器访问分配方案使用处理器指令,例如导向特定处理元件的指令。分配方案可以与特定的工作负荷(例如特定的人工智能问题和神经网络)相关联。在一些实施例中,初始化包括设置工作负荷标识符。例如,工作负荷标识符可用于配置数据如何分配在多个存储器单元中。工作负荷标识符可以是处理器存储器管理指令的参数。每个工作负荷可以使用不同的分配方案来提高存储器的利用率和效率。处理相同数据集或工作负荷的处理元件可以利用相同的工作负荷标识符来共享数据。通过使用不同的分配模式(例如每个工作负荷使用不同的分配模式)将数据分散到存储器单元,存储在存储器中的数据更有效地分配在所有可用存储器中。在一些实施例中,存储器初始化包括配置存储器访问单位大小。例如,存储器访问单位(如128字节、256字节等)可以配置为使得数据按访问单位大小的组写入每个存储器单元。可以根据情况使用更大或更小的访问单位。访问单位组中的数据存储在同一存储器单元中。在一些实施例中,访问单位大小可使用处理器或处理元件的可编程指令来配置。
在一些实施例中,处理元件初始化包括配置或编程用于在存储器单元之间分配数据的散列机制。例如,散列机制可以利用种子(seed)来配置分配方案。在一些实施例中,种子基于从存储器地址指定一组位来确定哪个存储器单元被分配给特定访问单位的数据。例如,散列机制可以指定存储器地址的两位,例如两个高位,并且对指定的位执行逐位运算,以将访问单位映射到存储器单元。在一些实施例中,逐位运算利用异或运算。在一些实施例中,散列机制可以以编程方式配置。例如,处理元件可以被配置成利用指定的散列函数和/或被配置成利用散列函数的某些参数。
在603,合并存储器数据请求。使用在601从一个或更多个处理元件接收的存储器访问数据请求,请求广播主机将这些请求合并成合并的存储器数据请求。通过合并多个请求,减少了对存储器单元的总请求数。合并请求减少了网络流量,并显著减少了潜在冲突的数量。在一些实施例中,合并的数据请求包括用于确定每个存储器请求使用的动态可编程分配方案的标识符信息。在一些实施例中,两个或更多个处理元件可能请求相同或重叠的数据。在603,重复请求被合并成单个请求,并且请求处理元件可以依赖于相同的响应。
在605,向存储器单元广播合并的存储器数据请求。例如,在603创建的合并的存储器访问数据请求由请求广播主机广播给所有存储器单元。该请求使用仅包括沿着请求广播主机的行和列的通信线路的网络路由遍历网络子系统,以到达可用的存储器单元。请求广播主机位于处理元件阵列的对角线上,因此每个主机都有一对唯一的列和行通信线路。每个请求广播主机的广播请求与来自其他请求广播主机的广播及其各自的响应具有最小的网络重叠。
在一些实施例中,用于广播的网络子系统是片上网络子系统,例如图2的网络子系统251、图3的351和/或图4的451。广播穿越的网络路由的例子包括图3的网络路由353和355以及图4的网络路由455。在一些实施例中,诸如北、东、南和西存储器单元的四个存储器单元围绕诸如图1的处理组件101的处理组件。在该示例中,所有四个存储器单元,例如存储器单元111、121、131和141,都接收广播的存储器数据请求。在一些实施例中,数据请求是针对大量数据的,并且包括跨越多个访问单位的数据。该请求可以被构造为至少引用基本存储器地址和大小参数,以确定从基本存储器地址开始请求多少数据。在一些实施例中,多个基地址和大小被一起合并到合并的存储器请求中。其他存储器引用方案也可能是合适的。在一些实施例中,广播的存储器请求还包括对应于分配方案的映射信息。例如,接收存储器单元可以使用映射信息来确定由发起请求的处理元件使用的以编程方式配置的散列机制和/或散列机制参数。作为另一个示例,映射信息还可以包括以编程方式配置的访问单位大小。在各种实施例中,存储器数据请求可以被提供给存储器单元用于读取数据或写入数据。
在607,接收并发送存储器数据响应。例如,部分存储器数据响应是在请求广播主机处从存储器单元接收的。每个部分存储器数据响应对应于在605广播的存储器访问请求的请求部分。例如,从两个或更多个不同的存储器单元接收两个或更多个部分存储器数据响应。由于存储器请求跨越多个访问单位,多个存储器单元可以响应,每个存储器单元提供对应于不同访问单位的部分响应,以完成整个请求。每个存储器单元创建与其负责的一个或更多个访问单位相关联的一个或更多个部分响应。例如,与存储器请求相关联的数据可以散布在三个存储器单元中。三个存储器单元中的每一个都以部分存储器数据响应来响应。在607,接收部分存储器响应。在一些实施例中,每个响应包括标识符,例如用于将部分响应组织成完整响应的序列标识符。
在一些实施例中,一旦接收到部分响应,该响应被提供给生成在601接收的存储器访问数据请求的原始处理元件。在各种实施例中,响应是部分响应,并且需要多个部分响应来构建完整响应。请求广播主机将每个部分响应转发给原始处理元件,以便该处理元件构建完整响应。在各种实施例中,用于传输响应的网络连接是在601为接收原始存储器请求而创建的。
在一些实施例中,部分响应存储在请求广播主机处,并且由请求广播主机根据部分响应构建完整响应。一旦构建了完整响应,请求广播主机就向原始处理元件提供完整响应。例如,请求广播主机存储从存储器单元接收的部分响应的必要数据,直到构建完整响应所需的所有数据都已被接收。一旦可以构建完整响应,请求广播主机就将完整响应发送给原始处理元件。请求广播主机只转发完整响应,而不是转发部分响应。在一些实施例中,让请求广播主机构建完整响应最小化了一组处理元件之间的网络流量,因为仅转发完整响应,而不是每个部分响应。
图7是示出用于响应存储器数据请求的过程的实施例的流程图。例如,存储器单元利用图7的过程来响应广播的存储器数据请求。存储器单元分解存储器请求,并确定存储器单元负责哪些访问单位,然后为由存储器单元管理的访问单位准备并发送一个或更多个部分响应。在一些实施例中,图7的过程由图1的存储器单元111、121、131和/或141和/或图2-4的存储器单元来执行。在一些实施例中,响应于在图6的605广播的存储器数据请求,执行图7的过程。在一些实施例中,使用图7的过程准备的响应由请求广播主机接收,请求广播主机例如是图2的请求广播主机203、205和/或207、图3的请求广播主机303和/或305、和/或图4的请求广播主机403和/或405。
在701,接收存储器数据请求。例如,接收跨越多个访问单位的存储器数据请求。一些访问单位与存储器单元相关联,而其他访问单位可以与不同的存储器单元相关联。在各种实施例中,多个存储器单元可以接收与广播的存储器数据请求相同的存储器数据请求。在一些实施例中,存储器数据请求包括基地址和大小参数,以确定所请求的地址范围。存储器数据请求还可以包括映射信息,以确定用于存储器访问请求的特定存储器分配方案的散列机制和/或散列机制参数。在一些实施例中,存储器数据请求映射信息包括访问单位大小。
在703,存储器数据请求被分解成部分请求。例如,跨越多个访问单位的请求被分成部分请求。在一些实施例中,通过基于配置的访问单位大小将存储器数据请求展开成部分请求来执行分解。例如,跨越三个访问单位的存储器数据请求被分解成三个部分请求,每个访问单位一个部分请求。作为另一个示例,在一些实施例中,每个存储器单元负责多个访问单位。例如,在一个场景中,存储器数据请求跨越平均分配在4个存储器单元中的32个存储器访问单位,每个存储器单元负责8个部分请求。每个部分请求对应于由存储器单元管理的数据的存储器访问单位。
在705,访问相关部分请求的数据。例如,从存储器单元的存储体中检索与部分请求匹配的访问单位的数据(或将该数据写入存储体)。在一些实施例中,存储器单元可以具有多个存储体,并且相应部分请求的数据存储在存储器单元的一个或更多个存储体中。在一些实施例中,所访问的数据响应于从跨越多个访问单位的较大请求分解的部分请求。在存储器访问读取操作的情况下,在部分请求与存储器单元匹配的情况下,从该存储器单元的存储体读取相应的数据。类似地,在存储器访问写入操作的情况下,在部分请求与存储器单元匹配的情况下,相应的数据被写入该存储器单元的存储体。
在一些实施例中,部分请求基于可编程分配方案与相应的存储器单元映射。例如,不同的工作负荷可以使用利用散列机制配置的不同分配方案将数据分配到存储器单元。在各种实施例中,在705,用于所配置的分配方案的散列机制被用于确定接收存储器数据请求的存储器单元是否对部分请求负责。在存储器单元管理部分请求的特定地址范围的情况下,检索(或写入)相应的数据。否则,部分请求被忽略,并将由负责该地址范围的正确存储器单元处理。
在707,准备并发送部分存储器数据响应。例如,从存储器单元读取的数据被打包成与部分请求相关联的响应。在一些实施例中,对应于读取操作准备的响应是部分存储器数据响应,因为它仅包括所请求数据的一部分。在各种实施例中,每个部分响应包括标识符,例如用于将部分响应排序为完整响应的序列标识符。请求广播主机可以利用每个部分存储器数据响应的标识符来对无序接收的一组部分响应进行排序。该响应被发送到请求广播主机,以供一个或更多个处理元件接收。在一些实施例中,响应是对应于写入操作的请求被完成的确认。
图8是示出用于执行存储器访问的过程的实施例的流程图。例如,请求广播主机利用图8的过程来收集对应于读取操作的存储器数据请求的数据。在一些实施例中,诸如图2的请求广播主机203、205和/或207、图3的请求广播主机303和/或305、和/或图4的请求广播主机403和/或405的请求广播主机从诸如图1的存储器单元111、121、131和/或141和/或图2-4的存储器单元的多个存储器单元接收部分存储器数据响应。在一些实施例中,图8的过程由发起存储器访问请求的处理元件来执行,而不是由请求广播主机来执行。例如,请求广播主机将接收到的部分响应转发给原始处理元件,以便原始处理元件从部分响应中构建完整响应。在一些实施例中,响应于在图6的605广播的存储器数据请求和/或响应于使用图7的过程发送的部分存储器数据响应,执行图8的过程。在一些实施例中,在图6的607处执行图8的过程,以从各种存储器单元收集部分响应。
在801,接收数据存储器部分响应。例如,接收从存储器单元发送的对数据存储器请求的部分响应。在各种实施例中,响应包括来自同一存储器单元的大小为一个或更多个访问单位的数据。在一些实施例中,响应包括标识符信息,例如可以用于相对于其他部分响应对接收的部分响应进行排序的序列标识符。
在803,识别数据存储器部分响应。例如,使用包括在接收到的部分响应中的标识符,相对于原始数据存储器请求来识别数据存储器部分响应。例如,一个请求可以分解或展开为五个部分请求。在803识别部分响应,以确定它对应于五个部分响应中的哪一个。在一些实施例中,通过检查诸如序列标识符的标识符来执行识别。识别结果可用于确定部分响应相对于其他部分响应的顺序,并从接收到的部分响应集合重建完整响应。
在805,数据存储器部分响应被存储在本地存储器中。例如,从存储器中读取的数据是从部分响应的数据有效载荷中提取的,并存储在本地存储器中。在一些实施例中,从本地存储器中分配大小被设定用于所请求的数据的临时缓冲器,以从部分响应构建完整响应。由于部分响应可能相对于它们相应的存储器地址被无序接收,所以来自部分响应的数据基于部分响应与原始请求数据的关系被存储在分配的缓冲器中的相应位置。例如,分配大小被设置用于五个部分响应的缓冲器,并且来自接收到的部分响应的数据被写入缓冲器中的相应地址位置,而不管何时接收到部分响应。在一些实施例中,每个部分响应是访问单位大小的响应或访问单位的倍数。在各种实施例中,本地存储器是图5的本地存储器储存器505。使用临时缓冲器,可以从部分响应重建完整的数据存储器响应。
在807,确定响应是否完整。例如,一旦接收到构建完整响应所需的所有部分响应,则响应是完整的。在响应完整的情况下,处理进行到809。在响应不是完整的情况下,处理循环回到801以接收附加的部分响应。
在809,完成存储器数据请求处理。例如,对应于完整响应的数据可用于额外的计算,例如矩阵计算。在一些实施例中,与完整响应相关联的数据位于本地存储器中,例如处理元件的本地存储器储存器。完整响应可以被用作处理元件的矩阵计算引擎的输入和/或被分配到其他处理元件。例如,与请求广播主机相关联的其他处理元件接收它们相应的请求数据。在一些实施例中,完整响应对应于描述神经网络的数据或与人工智能问题相关联的激活数据。
尽管为了清楚理解的目的已经详细描述了前述实施例,但是本发明不限于所提供的细节。有许多实现本发明的替代实现方式。所公开的实施例是说明性的,而不是限制性的。
Claims (20)
1.一种系统,包括:
多个存储器单元;和
处理器,其通过多个网络连接耦合到所述多个存储器单元中的每一个,其中所述处理器包括以二维阵列布置的多个处理元件和相应的二维通信网络,所述二维通信网络将所述多个处理元件中的每一个通信连接到所述二维阵列的相同轴上的其他处理元件,并且其中,所述多个处理元件中的沿着所述二维阵列的对角线定位的每个处理元件被配置为所述多个处理元件中的沿着所述二维阵列的相同轴定位的相应组的处理元件的请求广播主机。
2.根据权利要求1所述的系统,其中所述多个处理元件中的每个处理元件包括矩阵计算引擎、网络接口和控制逻辑。
3.根据权利要求2所述的系统,其中所述控制逻辑被配置为向所述相应组的处理元件的请求广播主机提供存储器请求,并使用动态可编程分配方案访问来自所述多个存储器单元的数据。
4.根据权利要求1所述的系统,其中,所述相应组的处理元件的请求广播主机被配置成从所述相应组的多个处理元件接收多个存储器请求。
5.根据权利要求4所述的系统,其中所述请求广播主机被配置成将所述多个存储器请求合并成压缩的存储器请求。
6.根据权利要求5所述的系统,其中所述请求广播主机被配置为向所述多个存储器单元广播所述压缩的存储器请求。
7.根据权利要求6所述的系统,其中所述请求广播主机被配置为从所述多个存储器单元接收响应于所广播的压缩的存储器请求的部分存储器响应。
8.根据权利要求6所述的系统,其中,所广播的压缩的存储器请求引用存储在所述多个存储器单元中的每一个中的数据。
9.根据权利要求6所述的系统,其中所述多个存储器单元中的每一个被配置成将所广播的压缩的存储器请求分解成对应的多个部分请求。
10.根据权利要求9所述的系统,其中所述多个存储器单元中的每一个被配置为确定所述对应的多个部分请求中的每一个是否对应于存储在与对应的存储器单元相关联的多个存储体中的对应的一个存储体中的数据。
11.根据权利要求10所述的系统,其中所述多个存储器单元中的每一个被配置为提供与所述对应的多个部分请求中的不同的一个部分请求相关联的部分响应。
12.根据权利要求11所述的系统,其中所述部分响应包括在多个部分响应中排序所述部分响应的对应序列标识符。
13.根据权利要求6所述的系统,其中,每个请求广播主机被配置为接收部分响应,组合所述部分响应以生成对所广播的压缩的存储器请求的完整响应,并将所述完整响应提供给所述相应组的处理元件中的处理元件。
14.根据权利要求6所述的系统,其中,每个请求广播主机被配置成接收部分响应,将所述部分响应中的每一个与所述相应组的处理元件中的处理元件相匹配,并将匹配的部分响应中的每一个转发给相应的匹配处理元件。
15.根据权利要求1所述的系统,其中,沿着所述二维阵列的对角线定位的每个请求广播主机被配置成使用所述多个网络连接中的不同网络连接向所述多个存储器单元提供存储器请求并从所述多个存储器单元接收响应。
16.根据权利要求1所述的系统,其中所述多个存储器单元包括北存储器单元、东存储器单元、南存储器单元和西存储器单元。
17.一种方法,包括:
接收与多个处理元件组中的第一处理元件组的第一处理元件相关联的第一存储器请求,其中所述多个处理元件组中的每个处理元件组位于处理元件的二维阵列的不同行上;
接收与所述第一处理元件组的第二处理元件相关联的第二存储器请求;
将所述第一存储器请求和所述第二存储器请求合并成压缩的存储器请求;
向多个存储器单元广播所述压缩的存储器请求;和
从所述多个存储器单元接收与所述压缩的存储器请求相关联的多个部分响应。
18.根据权利要求17所述的方法,还包括:
组合所述多个部分响应以创建对所述第一存储器请求的第一完整响应和对所述第二存储器请求的第二完整响应;
向所述第一处理元件提供所述第一完整响应;和
向所述第二处理元件提供所述第二完整响应。
19.根据权利要求17所述的方法,还包括:
将所述多个部分响应中的第一组部分响应与所述第一存储器请求相匹配;
将所述多个部分响应中的第二组部分响应与所述第二存储器请求相匹配;
向所述第一处理元件提供所述第一组部分响应;和
向所述第二处理元件提供所述第二组部分响应。
20.一种方法,包括:
在到存储器单元的第一连接处接收从第一请求广播主机提供的第一存储器请求;
在到所述存储器单元的第二连接处接收从第二请求广播主机提供的第二存储器请求,其中所述第一请求广播主机和所述第二请求广播主机位于处理元件的二维阵列的对角线上;
将所述第一存储器请求分解成第一多个部分请求,并且
将所述第二存储器请求分解成第二多个部分请求;
针对所述第一多个部分请求和所述第二多个部分请求中的每个部分请求,确定所述部分请求是否将由相关联的存储体提供服务;
丢弃来自所述第一多个部分请求和所述第二多个部分请求的第一组部分请求,所述第一组部分请求不由相关联的存储体提供服务;
对于来自所述第一多个部分请求的将由相关联的存储体提供服务的第二组部分请求中的每个部分请求,检索所述部分请求的数据,并使用到所述存储器单元的所述第一连接将检索到的数据提供给所述第一请求广播主机;和
对于来自所述第二多个部分请求的将由相关联的存储体提供服务的第三组部分请求中的每个部分请求,检索所述部分请求的数据,并使用到所述存储器单元的所述第二连接将检索到的数据提供给所述第二请求广播主机。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/712,253 | 2019-12-12 | ||
US16/712,253 US11054998B1 (en) | 2019-12-12 | 2019-12-12 | High bandwidth memory system with distributed request broadcasting masters |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112988658A true CN112988658A (zh) | 2021-06-18 |
Family
ID=73698583
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011459891.9A Pending CN112988658A (zh) | 2019-12-12 | 2020-12-11 | 具有分布式请求广播主机的高带宽存储器系统 |
Country Status (3)
Country | Link |
---|---|
US (2) | US11054998B1 (zh) |
EP (1) | EP3835966A1 (zh) |
CN (1) | CN112988658A (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000034784A1 (en) | 1998-12-10 | 2000-06-15 | Phylos, Inc. | Protein scaffolds for antibody mimics and other binding proteins |
AU2002213251B2 (en) | 2000-10-16 | 2007-06-14 | Bristol-Myers Squibb Company | Protein scaffolds for antibody mimics and other binding proteins |
IN2012DN06588A (zh) | 2010-02-10 | 2015-10-23 | Novartis Ag | |
US11640255B2 (en) * | 2020-11-19 | 2023-05-02 | Macronix International Co., Ltd. | Memory device and operation method thereof |
EP4160423B1 (en) * | 2021-09-29 | 2024-01-31 | Samsung Electronics Co., Ltd. | Memory device, memory device operating method, and electronic device including memory device |
KR20230046356A (ko) | 2021-09-29 | 2023-04-06 | 삼성전자주식회사 | 메모리 장치, 메모리 장치의 동작 방법, 그리고 메모리 장치를 포함하는 전자 장치 |
US20230214157A1 (en) * | 2021-12-30 | 2023-07-06 | Micron Technology, Inc. | NVMe COMMAND COMPLETION MANAGEMENT FOR HOST SYSTEM MEMORY |
Citations (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1056356A (zh) * | 1990-03-16 | 1991-11-20 | 德克萨斯仪器股份有限公司 | 分布处理存储器 |
US5682544A (en) * | 1992-05-12 | 1997-10-28 | International Business Machines Corporation | Massively parallel diagonal-fold tree array processor |
US20100211747A1 (en) * | 2009-02-13 | 2010-08-19 | Shim Heejun | Processor with reconfigurable architecture |
CN102209964A (zh) * | 2008-10-03 | 2011-10-05 | 自适应计算企业股份有限公司 | 动态管理数据中心搜索的系统和方法 |
US8108625B1 (en) * | 2006-10-30 | 2012-01-31 | Nvidia Corporation | Shared memory with parallel access and access conflict resolution mechanism |
US8145880B1 (en) * | 2008-07-07 | 2012-03-27 | Ovics | Matrix processor data switch routing systems and methods |
US20120131257A1 (en) * | 2006-06-21 | 2012-05-24 | Element Cxi, Llc | Multi-Context Configurable Memory Controller |
CN103810133A (zh) * | 2012-11-05 | 2014-05-21 | 国际商业机器公司 | 动态共享读缓冲器管理 |
US8738860B1 (en) * | 2010-10-25 | 2014-05-27 | Tilera Corporation | Computing in parallel processing environments |
CN103959260A (zh) * | 2011-11-30 | 2014-07-30 | 超威半导体公司 | 标签和数据共同存储在物理行中的dram高速缓存 |
CN105373517A (zh) * | 2015-11-09 | 2016-03-02 | 南京大学 | 基于Spark的分布式稠密矩阵求逆并行化运算方法 |
US20170302753A1 (en) * | 2016-04-13 | 2017-10-19 | Facebook, Inc. | Cache system for live broadcast streaming |
CN108133268A (zh) * | 2016-12-01 | 2018-06-08 | 上海兆芯集成电路有限公司 | 具有可作为牺牲高速缓存或神经网络单元存储器操作的存储器阵列的处理器 |
WO2018143866A1 (en) * | 2017-02-03 | 2018-08-09 | Telefonaktiebolaget Lm Ericsson (Publ) | On demand system information |
US20190026237A1 (en) * | 2017-07-24 | 2019-01-24 | Tesla, Inc. | Computational array microprocessor system with variable latency memory access |
US20190196721A1 (en) * | 2017-12-21 | 2019-06-27 | Advanced Micro Devices, Inc. | Scheduling memory requests for a ganged memory device |
US20190320488A1 (en) * | 2018-04-16 | 2019-10-17 | Telefonaktiebolaget Lm Ericsson (Publ) | Handling of inactive parameters upon release and re-suspend |
CN110622134A (zh) * | 2017-05-17 | 2019-12-27 | 谷歌有限责任公司 | 专用神经网络训练芯片 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS56164464A (en) * | 1980-05-21 | 1981-12-17 | Tatsuo Nogi | Parallel processing computer |
US9026744B2 (en) * | 2005-03-23 | 2015-05-05 | Qualcomm Incorporated | Enforcing strongly-ordered requests in a weakly-ordered processing |
US7805578B2 (en) * | 2005-04-29 | 2010-09-28 | Mtekvision Co., Ltd. | Data processor apparatus and memory interface |
US8131975B1 (en) * | 2008-07-07 | 2012-03-06 | Ovics | Matrix processor initialization systems and methods |
WO2013141921A1 (en) * | 2012-03-19 | 2013-09-26 | Rambus Inc. | High capacity memory systems |
US9449257B2 (en) * | 2012-12-04 | 2016-09-20 | Institute Of Semiconductors, Chinese Academy Of Sciences | Dynamically reconstructable multistage parallel single instruction multiple data array processing system |
US10318444B2 (en) * | 2013-04-11 | 2019-06-11 | The Regents Of The University Of California | Collective memory transfer devices and methods for multiple-core processors |
CN105677605B (zh) * | 2014-11-20 | 2019-04-30 | 深圳市中兴微电子技术有限公司 | 一种高效的可配置片上互联系统及其实现方法、装置 |
CN106557143B (zh) * | 2015-09-28 | 2020-02-28 | 伊姆西Ip控股有限责任公司 | 用于数据存储设备的装置和方法 |
US10070208B2 (en) * | 2015-11-30 | 2018-09-04 | Maged E. Beshai | Distributed control of a modular switching system |
US10929059B2 (en) * | 2016-07-26 | 2021-02-23 | MemRay Corporation | Resistance switching memory-based accelerator |
CN114003547B (zh) * | 2017-03-14 | 2023-12-19 | 珠海市芯动力科技有限公司 | 可重构并行处理 |
US11803507B2 (en) * | 2018-10-29 | 2023-10-31 | Secturion Systems, Inc. | Data stream protocol field decoding by a systolic array |
FR3090932B1 (fr) * | 2018-12-20 | 2022-05-27 | Kalray | Système de multiplication de matrices par blocs |
US11042797B2 (en) * | 2019-01-08 | 2021-06-22 | SimpleMachines Inc. | Accelerating parallel processing of data in a recurrent neural network |
-
2019
- 2019-12-12 US US16/712,253 patent/US11054998B1/en active Active
-
2020
- 2020-12-03 EP EP20211459.1A patent/EP3835966A1/en not_active Withdrawn
- 2020-12-11 CN CN202011459891.9A patent/CN112988658A/zh active Pending
-
2021
- 2021-05-04 US US17/307,828 patent/US11537301B2/en active Active
Patent Citations (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1056356A (zh) * | 1990-03-16 | 1991-11-20 | 德克萨斯仪器股份有限公司 | 分布处理存储器 |
US5682544A (en) * | 1992-05-12 | 1997-10-28 | International Business Machines Corporation | Massively parallel diagonal-fold tree array processor |
US20120131257A1 (en) * | 2006-06-21 | 2012-05-24 | Element Cxi, Llc | Multi-Context Configurable Memory Controller |
US8108625B1 (en) * | 2006-10-30 | 2012-01-31 | Nvidia Corporation | Shared memory with parallel access and access conflict resolution mechanism |
US8145880B1 (en) * | 2008-07-07 | 2012-03-27 | Ovics | Matrix processor data switch routing systems and methods |
CN102209964A (zh) * | 2008-10-03 | 2011-10-05 | 自适应计算企业股份有限公司 | 动态管理数据中心搜索的系统和方法 |
US20100211747A1 (en) * | 2009-02-13 | 2010-08-19 | Shim Heejun | Processor with reconfigurable architecture |
US8738860B1 (en) * | 2010-10-25 | 2014-05-27 | Tilera Corporation | Computing in parallel processing environments |
CN103959260A (zh) * | 2011-11-30 | 2014-07-30 | 超威半导体公司 | 标签和数据共同存储在物理行中的dram高速缓存 |
CN103810133A (zh) * | 2012-11-05 | 2014-05-21 | 国际商业机器公司 | 动态共享读缓冲器管理 |
CN105373517A (zh) * | 2015-11-09 | 2016-03-02 | 南京大学 | 基于Spark的分布式稠密矩阵求逆并行化运算方法 |
US20170302753A1 (en) * | 2016-04-13 | 2017-10-19 | Facebook, Inc. | Cache system for live broadcast streaming |
CN108133268A (zh) * | 2016-12-01 | 2018-06-08 | 上海兆芯集成电路有限公司 | 具有可作为牺牲高速缓存或神经网络单元存储器操作的存储器阵列的处理器 |
WO2018143866A1 (en) * | 2017-02-03 | 2018-08-09 | Telefonaktiebolaget Lm Ericsson (Publ) | On demand system information |
CN110622134A (zh) * | 2017-05-17 | 2019-12-27 | 谷歌有限责任公司 | 专用神经网络训练芯片 |
US20190026237A1 (en) * | 2017-07-24 | 2019-01-24 | Tesla, Inc. | Computational array microprocessor system with variable latency memory access |
US20190196721A1 (en) * | 2017-12-21 | 2019-06-27 | Advanced Micro Devices, Inc. | Scheduling memory requests for a ganged memory device |
US20190320488A1 (en) * | 2018-04-16 | 2019-10-17 | Telefonaktiebolaget Lm Ericsson (Publ) | Handling of inactive parameters upon release and re-suspend |
Also Published As
Publication number | Publication date |
---|---|
EP3835966A1 (en) | 2021-06-16 |
US11537301B2 (en) | 2022-12-27 |
US20210326051A1 (en) | 2021-10-21 |
US11054998B1 (en) | 2021-07-06 |
US20210181957A1 (en) | 2021-06-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112988658A (zh) | 具有分布式请求广播主机的高带宽存储器系统 | |
CN1084898C (zh) | 多计算机系统 | |
CN110083461B (zh) | 一种基于fpga的多任务处理系统及方法 | |
US7333115B2 (en) | Image processing apparatus and method thereof | |
CN102177551B (zh) | 与标准存储器模块管脚兼容的存储器模块中的独立可控制和可重新配置的虚拟存储器设备 | |
CN102446159B (zh) | 多核处理器的数据管理方法及装置 | |
CN102025766B (zh) | 一种用于操作自主存储器装置的方法 | |
US9612750B2 (en) | Autonomous memory subsystem architecture | |
DE3853162T2 (de) | Gemeinsamer intelligenter Speicher für die gegenseitige Verbindung von verteilten Mikroprozessoren. | |
CN107870879A (zh) | 一种数据搬移方法、加速器板卡、主机及数据搬移系统 | |
CN115061973A (zh) | 一种基于非对称多处理模式的网卡映射方法及设备 | |
CN114328623A (zh) | 芯片系统中的数据传输处理方法及相关装置 | |
US7200716B1 (en) | Method and apparatus to offload operations in a networked storage system | |
US20230251903A1 (en) | High bandwidth memory system with dynamically programmable distribution scheme | |
WO2002071248A2 (de) | Verfahren und vorrichtungen zur datenbe- und/oder verarbeitung | |
CN116886719A (zh) | 存储系统的数据处理方法、装置、存储系统、设备及介质 | |
EP3839717B1 (en) | High bandwidth memory system with crossbar switch for dynamically programmable distribution scheme | |
WO2001016761A2 (en) | Efficient page allocation | |
US20240012684A1 (en) | Memory disaggregation method, computing system implementing the method | |
JPH10333836A (ja) | ディスクアレイ制御装置 | |
TW202311942A (zh) | 儲存裝置以及記憶體存取的方法 | |
JP4117621B2 (ja) | データ一括転送装置 | |
JP3641837B2 (ja) | 分散メモリ型並列計算機のデータ転送方法 | |
DE102022204514A1 (de) | Multi-socket-netzwerkschnittstellen-controller mit konsistenter transaktionsreihenfolge | |
JPS63168761A (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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: California, USA Applicant after: Yuan platform Co. Address before: California, USA Applicant before: Facebook, Inc. |