CN105518625A - 具有高带宽存储器接口的计算硬件 - Google Patents
具有高带宽存储器接口的计算硬件 Download PDFInfo
- Publication number
- CN105518625A CN105518625A CN201480047781.8A CN201480047781A CN105518625A CN 105518625 A CN105518625 A CN 105518625A CN 201480047781 A CN201480047781 A CN 201480047781A CN 105518625 A CN105518625 A CN 105518625A
- Authority
- CN
- China
- Prior art keywords
- resident
- stream
- parallel processing
- label
- resident element
- 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
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/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
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- 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
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5017—Task decomposition
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Complex Calculations (AREA)
- Multi Processors (AREA)
Abstract
提供了涉及执行多个计算的各种实施例。在一个实施例中,计算系统包括片外存储设备,其被配置为存储多个流元素和相关联的标签;以及计算设备。计算设备包括片上存储设备,其被配置为存储多个可独立寻址的驻留元素;以及多个并行处理单元。每个并行处理单元可以被配置为从片外存储设备接收一个或多个流元素和相关联的标签,以及从被并行地驱逐出片上存储设备的驻留元素子集中选择一个或多个驻留元素。所选择的驻留元素可以由相关联的标签指示为与流元素相匹配。每个并行处理单元可以被配置为使用一个或多个流元素以及一个或多个选定的驻留元素来执行一个或多个计算。
Description
背景技术
一些计算系统包括专用于以非常快速的方式执行特定计算以便于提高计算系统的整体处理速度和效率的硬件。例如,可以在计算系统中采用计算设备来加速深度神经网络模型的训练和评价(例如机器学习)。这样的机器学习可以适用于图像识别、语音识别、大数因子分解、网页排序、以及自然语言处理和文本搜索、以及其他的应用。在一个示例中,计算设备可以在硬件中实现为定制的集成电路(或“芯片”),例如,现场可编程门阵列(FPGA)。更特别地,在一些应用中,计算设备可以被配置为连续地访问存储在可以与计算设备物理上不同的片外存储设备中的数据流来执行这样的计算。为了以有效的方式来操作,可以充分利用片外存储设备与计算设备之间的可用带宽来对数据进行流式传送。此外,来自片外存储设备的流单元可以在并行处理单元中与来自片上存储设备的驻留元素相匹配以并行地执行多个计算。
在一个示例方式中,为了确保任何驻留元素可以用于与用于给定计算的流元素相匹配,所有的驻留元素可以在片上存储设备中被复制多次。例如,针对每个并行处理单元,计算设备可以包括用于存储所有驻留元素的实例的缓冲器。这样的方案可以适用于低带宽接口。然而,随着带宽能力的提高,简单地对这种方式进行缩放可能会通过消耗本来可以在应用逻辑的其他部分中利用的计算设备的资源而限制计算设备的操作。
发明内容
提供了与执行多个计算有关的各种实施例。在一个实施例中,计算系统包括片外存储设备,被配置为存储多个流元素和相关联的标签;以及计算设备,用于与片外存储设备通信。计算设备包括:片上存储设备,被配置为存储多个可独立寻址的驻留元素;以及多个并行处理单元。每个并行处理单元可以被配置为接收来自片外存储设备的一个或多个流元素和相关联的标签,以及从被并行地驱逐出片上存储设备的驻留元素的子集中选择一个或多个驻留元素。所选择的驻留元素可以由相关联的标签指示为与流元素相匹配。每个并行处理单元可以被配置为使用一个或多个流元素以及从子集选择的一个或多个驻留元素来执行一个或多个计算。
提供本概述以便于以简化的形式引入一系列概念,这些概念将在以下的具体实施方式中进一步描述。本概述既不是要标识出要求保护的主题的关键特征或必要特征,也不是要用于限制要求保护的主题的范围。此外,要求保护的主题不限于解决在本公开的任何部分中提到的任何或全部缺点的实现。
附图说明
图1示意性地示出了根据本公开的实施例的计算系统。
图2示意性地示出了图1的计算系统的计算设备。
图3示意性地示出了图2的计算设备的流处理单元。
图4示意性地示出了根据图3的流处理单元的驻留元素选择器阵列单元。
图5示出了根据本公开的实施例的用于利用计算设备的多个并行处理单元来执行计算的方法。
具体实施方式
本说明书涉及专用于在计算系统中执行一个或多个特定计算的硬件设备。该计算设备可以具有与片外存储设备的高带宽通信接口以对数据元素进行流式传送。计算设备可以被配置为将来自片外存储设备的这些流元素与从片上存储设备选择的合适的驻留元素相匹配以并行地执行多个计算。例如,计算设备可以被连续地调用以执行计算作为用于训练和评价深度神经网络(例如,机器学习)的过程的一部分。
更特别地,片上存储设备可以包括存储所有驻留元素的驻留元素数据缓冲器。驻留元素数据缓冲器可以被分组,以使得多个驻留元素可以被独立地寻址。换言之,驻留元素数据缓冲器可以使得每个驻留元素或驻留元素的子集能够由在同一时钟周期中执行不同计算的不同的并行处理单元独立地选择。此外,计算设备可以包括用于在存储在驻留元素数据缓冲器中的所有驻留元素中选择与用于被并行处理的计算的流元素相匹配的合适的驻留元素的逻辑。例如,合适的驻留元素可以是基于与流元素相关联的标签而被选择的。特别地,每个并行处理单元可以包括驻留元素选择器阵列,并且阵列中的每个选择器单元可以请求驻留元素。来自所有并行处理单元中的所有选择器单元的请求可以由优先级选择器聚合,从而形成这些被请求元素的子集。该子集可以负责对由不同的选择器单元对同一驻留元素的请求进行重叠。驻留元素的子集可以被驱逐出驻留元素数据缓冲器。由于子集中的驻留元素的一些或全部已经通过一个以上的选择器单元进行请求,因此那些驻留元素可以在它们被驱逐并且广播(或多播)到所有的并行处理单元时由多个并行处理单元适时地挑选出。换言之,多个请求可以被驱逐出驻留元素数据缓冲器的单个驻留元素或单个的驻留元素的集合实现。此外,为了避免在同一时钟周期内由多个并行处理单元对特定驻留元素的竞争,计算设备可以被配置为从驻留元素数据缓冲器中适时地预取驻留元素并且在竞争的时钟周期之前将它们缓存。
通过采用具有可独立寻址的驻留元素的缓冲器以及用于适时地选择合适的驻留元素以用于不同的计算的逻辑,可以使得所选择的驻留元素能够用于并行处理,而无需针对每个并行处理单元复制所有的驻留元素。
因此,计算设备可以并行地处理多个计算,同时相对于在片上存储设备中针对每个并行处理单元复制所有驻留元素的方式,减少了片上资源的使用。这样的配置可以提高操作的效率,以充分利用计算设备与片外存储设备之间的高带宽通信能力。此外,效率的提高可以允许计算设备在稀疏矩阵乘法或其他的稀疏矩阵操作的高性能使用中被采用,例如,在所述计算设备可以被连续地调用以快速地执行计算的实时机器学习应用中执行的那些。这样的机器学习可以适用于图像识别、语音识别、网页排名、以及自然语言处理和文本搜索。在一个示例中,计算设备可以被用于训练和评价深度神经网络。在另一个示例中,计算设备可以被用于对大数进行因子分解,以及其他的应用中。
图1示意性地示出了计算系统100的实施例。计算系统100可以采取一个或多个个人计算机、服务器计算机、平板计算机、家庭娱乐计算机、网络计算设备、游戏设备、移动计算设备(例如平板)、移动通信设备(例如智能电话)、和/或其他计算设备的形式。计算系统100可以包括经由通信接口108与大容量存储设备104以及片外存储设备106进行通信的处理器102。
处理器102可以包括一个或多个处理器核心以及在其上执行的指令,所述指令可以被配置用于顺序、并行、和/或分布式的处理。处理器的各个部件可以可选地分布在两个或更多的单独设备上,两个或更多的单独设备可以位于远程和/或被配置用于协同处理。处理器的方面可以由在云计算配置中配置的可远程访问的网络化计算设备进行虚拟化和执行。
处理器102可以包括被配置为执行指令的一个或多个物理设备。例如,处理器可以被配置为执行指令,所述指令是一个或多个应用、程序、例程、库、对象、部件、数据结构、或其他逻辑构造的一部分。可以实现这样的指令以执行任务、实现数据类型、变换一个或多个部件的状态、实现技术效果、或者以其他方式达到期望的结果。
大容量存储设备104可以包括被配置为保存可以由处理器102执行的指令的一个或多个物理设备。当这样的指令被实现时,大容量存储设备104的状态可以被变换-例如,用于保存不同的数据。大容量存储设备104可以包括可移动和/或内置设备。大容量存储设备104可以包括光学存储器、半导体存储器、和/或磁存储器等。大容量存储设备104可以包括易失性、非易失性、动态、静态、读/写、只读、随机存取、顺序存取、位置可寻址、文件可寻址、和/或内容可寻址设备。
存储在大容量存储设备104中的指令可以由处理器102使用片外存储设备106的部分来执行。片外存储设备106可以包括一个或多个物理设备,所述一个或多个物理设备被配置为保存用于实施指令的执行的数据,并且在可适用时存储结果。例如,片外存储设备可以包括一个或多个易失性存储器设备。在一个特定示例中,片外存储设备104包括动态随机存取存储器(DRAM)。应当理解的是,片外存储设备可以包括不偏离本说明书范围的任何合适类型的存储设备。
在一个示例中,指令可以被执行作为可以利用各种计算作为执行的一部分的软件程序的一部分。由此,计算系统100可以包括被配置为以非常快速和有效的方式来执行特定计算的专用计算设备110。计算设备110可以在专用硬件中被识别为与处理器102不同的逻辑电路,并且通过通信接口108链接到处理器102。例如,处理器102可以执行调用计算设备110的指令来执行由该指令指定的计算。计算设备110可以被配置为接收指令以执行来自软件程序的计算、从片外存储设备106取回数据元素以实施计算、处理计算、以及将计算结果返回给片外存储设备。在整个软件程序的执行中,这样的例程可以被重复地或连续地实施,以使得数据可以从片外存储设备被流式传送到计算设备。
其中可以实现计算设备110的硬件可以是集成电路,例如,可编程逻辑器件(PLD)或应用专用集成电路(ASIC)。现场可编程门阵列(FPGA)和复杂可编程逻辑器件(CPLD)是可以用来实现计算设备110的合适的PLD的两个示例。计算设备110可以在逻辑上与处理器102分离,并且可以包括片上计算单元112。此外,计算设备110可以包括形成的与片外存储设备106分离的片上存储单元114。注意,在一些实例中,“片上”表示部件在物理上与计算设备集成,而“片外”表示部件在物理上与计算设备不同。
在一些实施例中,计算设备110可以被实现为片上系统(“SoC”)。在SoC的实现中,处理器102、片外存储设备106、以及计算设备110通常被形成为单个SoC集成电路内的单独的逻辑单元,并且通信接口108包括用于能够在这些单独的逻辑单元之间进行通信的片上通信接口子系统。在一些实施例中,处理器102和计算设备110可以物理地集成在同一芯片上。此外,片外存储可以或可以不集成在该芯片上。在一些实施例中,计算设备110可以与在物理上与片外存储设备106分离的专用片外存储设备120进行通信。在一些实施例中,专用片外存储设备120可以仅能够由计算设备110访问。在一个示例中,片外存储设备120包括专用于计算设备110的DRAM。在其他实施例中,片外存储设备106和专用片外存储设备120可以是同一设备。
通信接口108一般指的是被提供用于使得能够在计算系统100的各种部件当中进行通信的一个或多个通信子系统。通信接口108可以包括一个或多个分立的I/O路径,每个分立的I/O路径可能利用单独的协议、编码、和/或物理接口。特别地,通信接口108可以被配置为提供片外存储设备106与计算设备110之间的高带宽通信,以使得数据元素可以连续地在多个数据流中从片外存储设备被流式传送到计算设备以执行计算。在一个特定的示例中,通信接口提供片外存储设备106与计算设备110之间的多达32个单独的数据流。应当理解的是,通信接口可以提供片外存储设备与计算设备之间的任何合适数量的数据流,而不偏离本说明书的范围。
在一个示例中,计算设备110可以被配置为执行稀疏矩阵-向量乘法形式的计算。特别地,稀疏矩阵-向量乘法计算可以包括将稀疏矩阵的每行乘以向量。稀疏矩阵可以存储在片外存储设备106中。稀疏矩阵中的每个值可以与标签相关联,该标签可以用于将稀疏矩阵值与合适的向量值相匹配以执行稀疏矩阵乘法。例如,标签可以指示行、行中的位置、以及相对应的向量地址。稀疏矩阵的行和相关联的标签可以根据通信接口108的带宽能力从片外存储设备106被流式传送到计算设备110。例如,稀疏矩阵的每行可以被发送作为不同的数据流。在一个特定示例中,通信接口108能够并行地流式传送多达32个稀疏矩阵行。
此外,向量可以存储在计算设备110的片上存储设备114中。向量缓冲区的寻址方案和向量的稀疏结构可以是固定的并且在计算前已知。这允许每个流元素的标签用于识别向量的合适的匹配的驻留元素。将在下文中参照图2进一步详细讨论存储设备和向量的驻留元素的操纵。
注意到,由于稀疏矩阵的行值被存储在片外存储设备中并且被流式传送到计算设备,因此这些值在本文中称为流元素。相对应地,由于向量值存储在片上存储设备中,因此这些值在本文中称为驻留元素。注意,尽管驻留元素在稀疏矩阵的处理期间存储在片上存储设备中,但是应该理解的是,驻留元素有时可以从片外存储设备或大容量存储设备被带到片上存储设备。例如,当操作切换到执行涉及第二向量的计算时,可以利用来自不同的第二向量的值来替换第一向量的值,作为驻留元素。
为了对稀疏矩阵-向量乘法计算进行并行化,稀疏矩阵的流元素的多个行可以并行地乘以向量的驻留元素。特别地,所选择的向量的驻留元素可以基于与相对应的流元素相关联的标签被适时地复制到不同的并行处理单元的位置缓冲器。因此,可以使得被选择用于计算的所有向量元素在同一时钟周期中对不同的并行处理单元可用,而无需将向量的所有驻留元素复制到每个并行处理单元。
图2示意性地更加详细地示出了计算系统100的计算设备110。计算设备110包括流管理器200、多个流并行处理单元202、优先级选择器204、以及驻留元素数据缓冲器206。
流管理器200可以被配置为经由通信接口108并行地从片外存储设备106读取多个数据流。流管理器可以被配置为将每个数据流解析成流元素和相对应的标签。例如,每个数据流可以与不同的并行处理单元相关联,并且流管理器可以被配置为将每个数据流的流元素和标签发送到该并行处理单元。在计算设备被配置为执行稀疏矩阵-向量乘法计算的示例中,每个数据流可以包括稀疏矩阵的不同行,并且该数据流中的每个流元素可以是该行中的值。换言之,稀疏矩阵中的同一行的流元素以及它们相应的标签可以全部被流式传送到同一个并行处理单元,但是单个并行处理单元可以(并且通常将)处理稀疏矩阵的一个以上的行。
多个并行处理单元202中的每个可以被配置为从流管理器200接收流元素和相关联的标签。此外,多个并行处理单元202中的每个可以针对驻留元素将要与用于到来的时钟周期中的计算的流元素相匹配的请求发送到优先级选择器204。该请求可以包括标识驻留元素的标签。多个并行处理单元中的每个可以包括可以被配置为存储多个所选择的驻留元素的位置缓冲器或阵列,所述多个所选择的驻留元素可以用于在一系列时钟周期上执行的计算。该阵列可以比驻留元素数据缓冲器小。在该示例中,每个并行处理单元单独地负责将对驻留元素的请求发送到优先级选择器。然而,应当理解的是,请求可以以任何合适的方式生成,而不偏离本说明书的范围。例如,可以实现全局调度器,以查看所有数据流中的标签,并且同时针对所有的数据流作出请求决定。
驻留元素数据缓冲器206可以是多分组(multi-banked)的缓冲器,其将每个驻留元素(例如,值)存储在可单独寻址的存储设备位置中。因此,多个驻留元素可以在同一时钟周期上独立地进行寻址并且被驱动到期望的位置。在计算设备被配置为执行稀疏矩阵-向量乘法计算的示例中,向量的每个值可以存储在驻留元素数据缓冲器的不同的可寻址位置处。
优先级选择器204可以被配置为从多个并行处理单元202中的每个接收对驻留元素的请求。优先级选择器可以被配置为基于所述请求来确定哪些驻留元素从驻留元素数据缓冲器中读出。特别地,优先级选择器输出驻留元素数据缓冲器的所选择的分组的地址以将存储在那些地址处的值驱动到多个流处理单元。理想地,驻留元素数据缓冲器的所有分组在每个时钟周期都输出元素。然而,在一些情况下,一个或多个分组可以不输出驻留元素,因为在来自多个并行处理单元的请求中的任何一个中可能没有标识这些分组的标签。此外,优先级选择器将指示所请求的驻留元素的标签发送回并行处理单元,以协调所选择的驻留元素的处理。
一旦所选择的驻留元素从驻留元素数据缓冲器被驱逐出,则并行处理单元中的每个可以将一个或多个相对应的所选择的驻留元素存储在该并行处理单元中。换言之,每个并行处理单元能够在时钟周期中接收被驱逐出驻留元素数据缓冲器的一个以上的驻留元素。由并行处理单元接收的驻留元素的数量可以基于该并行处理单元中的驻留元素选择器单元阵列中的选择器单元的数量,所述选择器单元指示与驻留元素的匹配,如将在下文中参照图3-4更加详细地讨论的。
此外,并行处理单元可以将一个或多个驻留元素与一个或多个相对应的流元素相匹配以执行一个或多个计算。在多个匹配的情况下,多个计算可以在多个时钟周期上执行。一个或多个计算的结果可以从流处理单元被发送到流管理器(或计算设备的另一单元),并且流管理器可以将该结果发送到片外存储设备,以被使用作为由计算系统的处理器对软件程序的执行的一部分。在一些情况下,计算的结果还可以在本地用于执行可以是或可以不是稀疏矩阵-向量乘法的一部分的另一计算。例如,该结果可以被用于针对稀疏矩阵的行中的所有乘法结果的加法操作中。
在该示例中,每个并行处理单元单独地负责将流元素与驻留元素相匹配以执行计算。然而,应当理解的是,流元素可以以任何合适的方式与驻留元素相匹配,而不偏离本说明的范围。例如,全局调度器可以负责匹配和选择并行处理单元的驻留元素,并且单独的处理单元可以仅负责遵循从全局调度器接收的存储和计算指令。
应当理解的是,每个并行处理单元可以具有在某时存储一对以上的元素(流元素、驻留元素)的容量,如将在下文中参照图3更加详细地讨论的。
图3示意性地更加详细地示出了多个并行处理单元202中的一个。所示出的并行处理单元可以表示所有的并行处理单元。并行处理单元可以包括流元素队列300、流标签队列302、驻留元素选择器阵列304、队列插入控制器306、驻留元素队列308、以及功能单元310。
流元素队列300可以被配置为从图2中示出的流管理器200接收流元素。流元素队列300可以被配置为存储用于由功能单元310进行的计算的后续处理的流元素。由此,流元素队列可以将流元素输出到功能单元。
流标签队列302可以被配置为从图2中示出的流管理器200接收标签。流标签队列302可以被配置为存储用于由功能单元310执行的计算中的流和驻留元素的后续处理的标签。特别地,标签可以以与流元素被加载到流元素队列中相同的顺序被加载到流标签队列中,以使得流元素可以基于对相对应的标签的分析来以正确的顺序被处理。流标签队列可以将标签输出给驻留元素选择器阵列304。
驻留元素选择器阵列304可以包括多个驻留元素选择器单元(又称为选择器)312。驻留元素选择器阵列304可以被配置为从流标签队列接收标签,以及从由图2中示出的优先级选择器204接收的标签指示的所选择的驻留元素的地址。特别地,来自于优先级选择器204的每个标签和相对应的地址/标签可以被发送到多个并行处理单元中的每个的阵列中的每个驻留元素选择器单元。
图4示意性地更加详细地示出了多个驻留元素选择器单元312中的一个。所示出的驻留元素选择器单元可以表示阵列中的多个驻留元素选择器单元的全部。驻留元素选择器单元可以包括比较单元400。比较单元可以被配置为从流标签队列接收有效位和标签。该有效位指示来自流标签队列的标签是否有效。此外,比较单元可以被配置为接收由优先级选择器选择的要被驱逐出驻留元素数据缓冲器的驻留元素的地址。比较单元可以被配置为将来自标签队列的标签上的地址与从优先级选择器接收的地址进行比较以确定是否存在匹配。如果存在匹配,则比较单元输出匹配的驻留元素的地址以及指示该匹配是有效的有效位(例如,1)。如果没有匹配,则比较单元输出指示该匹配不是有效的有效位(例如,0)。有效位指示与针对该选择器单元的标签上的地址相对应的驻留元素是否将最终被用于由并行处理单元进行的计算中。每个驻留元素选择器单元的输出可以被发送到队列插入控制器306。
队列插入控制器306可以被配置为从驻留元素数据缓冲器接收驻留元素,并且将由驻留元素选择器阵列304的选择器单元选择的匹配的驻留元素插入到驻留元素队列308中。例如,驻留元素数据缓冲器的每个分组可以连接到队列插入控制器,并且并行处理单元可以从被驱逐出驻留元素数据缓冲器的所选择的驻留元素中选择哪些驻留元素用于复制。例如,由于在驻留元素选择器阵列中有‘n’个选择器单元,因此在时钟周期内可以有‘n’个这样的所选择的驻留元素,所以可以基于从驻留元素选择器阵列的选择器单元输出的有效位的数量,将多达‘n’个驻留元素的一个或多个所选择的驻留元素插入在驻留元素队列中。
驻留元素队列308可以被配置为存储由队列插入控制器306插入的所选择的驻留元素,以用于由功能单元310进行的计算的后续处理。驻留元素队列中的每个驻留元素与流元素队列中的提供标签以用于选择驻留元素的流元素相对应。相对应的流元素和驻留元素在它们相应的队列中被存储在相同的队列深度处。由此,驻留元素队列可以将驻留元素输出到功能单元。
驻留元素队列308可以被配置为每个周期接收可变数量的驻留元素。特别地,驻留元素的数量可以基于由驻留元素选择器阵列针对给定周期产生的匹配数量来变化。驻留元素队列可以区别于每周期接收固定数量的元素或是每周期接收零个元素的通常队列。
功能单元310可以被配置为执行从流元素队列接收的流元素与从驻留元素队列接收的驻留元素之间的指定的或任意的计算。例如,该计算可以是乘法操作的一部分。在特定示例中,计算可以包括稀疏矩阵行和向量的乘法。特别地,通过对来自稀疏矩阵的行的非零的流元素以及向量的驻留元素进行入队以使得它们对齐,合适的元素可以由功能单元相乘。此外,功能单元可以被配置为对每个乘法的结果进行累加来处理整个行。
应当理解的是,计算可以包括任何合适的计算或其他操作,而不偏离本说明书的范围。此外,还可以考虑计算或操作的集合。此外,计算的结果可以被发送到流管理器,并且进一步被发送到片外存储设备。此外或可替换地,结果可以被发送到其他系统部件。例如,该结果可以被写回到驻留元素数据缓冲器或片上存储设备的另一位置中,以用于另一计算。尽管已经在训练和评价深度神经网络的上下文中对计算设备进行了讨论,但是应当理解的是,所述计算设备可以被用于任何合适的处理操作,而不偏离本公开的范围。
应当理解的是,在并行处理单元中实现的队列可以根据先入先出(FIFO)原则来操作。然而,可以考虑操作的其他原则。此外,队列仅是可以被采用以在并行处理单元中存储信息的数据结构类型的一个示例,并且可以采用其他数据结构,而不偏离本说明书的范围。
图5示出了根据本公开的实施例的用于利用计算设备的多个并行处理单元来执行计算的方法500。例如,方法可以由图1中示出的计算系统100的计算设备110来实施。此外,应当理解的是,计算设备的不同逻辑部件可以实施方法500的不同部分。
在502处,方法500可以包括在计算设备处接收来自片外存储设备的多个并行数据流。例如,数据流可以经由图1中示出的高带宽通信接口108来进行发送。
在504处,方法500可以包括将多个并行数据流中的每个解析成流元素和相关联的标签。例如,解析可以由图2中示出的流管理器200来执行。
在506处,方法500可以包括将包含流元素和相关联的标签在内的每个数据流发送到不同的并行处理单元。例如,流管理器200可以将包括流元素和相关联的标签的每个数据流发送到多个并行处理单元202中的不同的一个并行处理单元。换言之,在该示例中,在数据流与处理该数据流的并行处理单元之间存在着1:1的映射,使得数据流中的所有流元素都由同一个并行处理单元来处理。然而,在一些实施例中,两个或更多个并行处理单元可以协作来处理单个数据流,并且更特别地,处理稀疏矩阵的行,而不偏离本说明书的范围。
在508处,方法500可以包括,在每个并行处理单元处接收数据流的流元素和相关联的标签。例如,该数据流的流元素和相关联的标签可以经由流管理器200从片外存储设备106接收。
在510处,方法500可以包括:在每个并行处理单元处,存储流元素和相关联的标签。例如,流元素可以存储在流元素队列300中,并且相关联的标签可以存储在流标签队列302中。
在512处,方法500可以包括:在每个并行处理单元处,从被驱逐出片上存储设备114(并且更特别地,从被驱逐出驻留元素数据缓冲器206)的驻留元素的子集中选择一个或多个所选择的驻留元素。一个或多个所选择的驻留元素可以由相关联的标签指示为匹配流元素中的一个或多个,并且可以由于该指示而被选择。
在514处,方法500可以包括:在每个并行处理单元处,存储驻留元素的子集的一个或多个所选择的驻留元素。例如,一个或多个所选择的驻留元素可以存储在驻留元素队列308中。
在516处,方法500可以包括:在每个并行处理单元处,使用流元素和相匹配的所选择的驻留元素来执行一个或多个计算。例如,该计算可以是针对稀疏矩阵的行的稀疏矩阵-向量乘法的一部分。流元素可以包括由并行处理单元处理的行的稀疏矩阵行值。多个驻留元素可以包括作为稀疏矩阵向量乘法计算的一部分的要与稀疏矩阵的每行相乘的向量的值。在一个特定示例中,并行处理单元接收并且处理稀疏矩阵行的给定行的所有行值。此外,给定的并行处理单元可以处理稀疏矩阵的多个行。
在518处,方法500可以包括从多个并行处理单元接收请求。请求可以包括指示与由多个并行处理单元接收的流元素相匹配的驻留元素的标签。例如,请求可以从图2中示出的多个处理单元202被发送到优先级选择器204。优先级选择器204可以对多个并行处理单元的请求进行聚合并且基于请求并且更特别地,基于指示与流元素相匹配的驻留元素的标签来控制驻留数据缓冲器。
在520处,方法500可以包括将与流元素相匹配的驻留元素的子集从片上存储设备并行地驱动到多个并行处理单元。例如,优先级选择器204可以驱动与驻留元素子集相对应的驻留数据缓冲器206的独立可寻址的分组以将这些驻留元素发送到多个并行处理单元。
应当理解的是,当驻留元素的子集被驱逐出驻留元素数据缓冲器时,不同的并行处理单元可以基于由并行处理单元中的驻留元素选择器单元对标签的评价来选择子集中的一个或多个驻留元素以用于存储在该并行处理单元的驻留元素队列中。
此外,应当理解的是,在方法500的518处接收的使得驻留的元素子集在方法500的520处被驱逐出驻留元素数据缓冲器的请求,可以在后续时钟周期期间在方法500的512-516处由并行处理单元消耗。同样的,在方法500的512处所选择的驻留元素可以基于在先前的时钟周期期间做出的请求。
应当理解的是,本文所描述的配置和/或方法是在本质上是示例性的,并且这些具体的实施例或示例不应被考虑为限制意义,因为大量的变形是可能的。本文所描述的具体的例程或方法可以表示任何数量的处理策略中的一个或多个。由此,所示出和/或描述的各种动作可以以被示出和/或描述的顺序、以其他顺序、并行地执行,或者被省略。同样地,上文描述的过程的顺序可以变化。
本公开的主题包括本文公开的各种过程、系统和配置、以及其他特征、功能、动作、和/或属性的所有新颖的和非显而易见的组合与子组合,以及其任何和所有的等价物。
Claims (9)
1.一种计算系统,包括:
片外存储设备,其被配置为存储多个流元素和相关联的标签;以及
计算设备,其与所述片外存储设备进行通信,所述计算设备包括:
片上存储设备,其被配置为存储多个能够独立寻址的驻留元素;以及
多个并行处理单元,每个并行处理单元被配置为:
从所述片外存储设备接收一个或多个流元素和相关联的标签;
从被并行地驱逐出所述片上存储设备的驻留元素的子集中选择一个或多个驻留元素,其中,所选择的驻留元素由相关联的标签指示为与流元素相匹配;以及
使用所述一个或多个流元素以及一个或多个所选择的驻留元素来执行一个或多个计算。
2.如权利要求1所述的计算系统,其中,所述多个并行处理单元的多个并行处理单元在同一时钟周期中从所述驻留元素的子集中选择同一个驻留元素。
3.如权利要求1所述的计算系统,其中,所述计算设备还包括流管理器,其被配置为从所述片外存储设备接收多个并行数据流,将所述多个并行数据流中的每个数据流解析成流元素和相关联的标签,并且将每个数据流的所述流元素和所述相关联的标签发送到不同的并行处理单元,其中,数据流的所有流元素和相关联的标签是由单个并行处理单元来进行处理的。
4.如权利要求1所述的计算系统,其中,所述计算设备还包括优先级选择器,其被配置为从所述多个并行处理单元接收请求,所述请求包括指示与由所述多个并行处理单元接收的流元素相匹配的驻留元素的标签,并且将与所述流元素相匹配的所述驻留元素的子集从所述片上存储设备驱动到所述多个并行处理单元。
5.如权利要求1所述的计算系统,其中,所述片上存储设备包括驻留元素数据缓冲器,其被配置为将所述多个驻留元素存储在能够独立寻址的分组中。
6.如权利要求1所述的计算系统,其中,每个并行处理单元包括:
流元素队列,其被配置为存储所述一个或多个流元素;
流标签队列,其被配置为存储所述相关联的标签;
驻留元素选择器阵列,包括多个驻留元素选择器单元,每个驻留元素选择器单元被配置为将由优先级选择器选择的所述驻留元素的子集的地址与由相关联的标签指示的请求的驻留元素的地址进行比较,并且如果所述请求的驻留元素与所述子集的所述驻留元素中的一个驻留元素相匹配,则输出所述匹配的指示;
队列插入控制器,其被配置为基于从所述驻留元素选择器阵列接收匹配的指示,将所述一个或多个所选择的驻留元素插入在驻留元素队列中;以及
功能单元,其被配置为从所述流元素队列中接收流元素以及从所述驻留元素队列中接收与所述流元素相匹配的选择的驻留元素,以及使用所述流元素和所述选择的驻留元素来执行计算。
7.如权利要求1所述的计算系统,其中,所述片外存储设备包括动态随机存取存储器。
8.如权利要求1所述的计算系统,其中,所述计算设备是现场可编程门阵列(FPGA)、专用集成电路(ASIC)、或片上系统(SoC)中的一个。
9.如权利要求1所述的计算系统,其中,所述多个流元素包括稀疏矩阵的值,其中,每个并行处理单元接收所述稀疏矩阵的不同行的值,所述多个驻留元素包括要与所述稀疏矩阵的每行相乘的向量的值,并且其中,所述计算是针对所述稀疏矩阵的行的稀疏矩阵-向量乘法的部分。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/015,872 | 2013-08-30 | ||
US14/015,872 US20150067273A1 (en) | 2013-08-30 | 2013-08-30 | Computation hardware with high-bandwidth memory interface |
PCT/US2014/053028 WO2015031547A1 (en) | 2013-08-30 | 2014-08-28 | Computation hardware with high-bandwidth memory interface |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105518625A true CN105518625A (zh) | 2016-04-20 |
Family
ID=51626583
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480047781.8A Pending CN105518625A (zh) | 2013-08-30 | 2014-08-28 | 具有高带宽存储器接口的计算硬件 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20150067273A1 (zh) |
EP (1) | EP3039546A1 (zh) |
CN (1) | CN105518625A (zh) |
WO (1) | WO2015031547A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108960418A (zh) * | 2018-08-08 | 2018-12-07 | 上海寒武纪信息科技有限公司 | 神经网络处理装置及其执行矩阵向量乘指令的方法 |
CN112346852A (zh) * | 2019-08-06 | 2021-02-09 | 脸谱公司 | 矩阵求和运算的分布式物理处理 |
US11836497B2 (en) | 2018-02-05 | 2023-12-05 | Shanghai Cambricon Information Technology Co., Ltd | Operation module and method thereof |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170004527A1 (en) * | 2015-07-01 | 2017-01-05 | Turn Inc. | Systems, methods, and devices for scalable data processing |
US9720851B2 (en) * | 2015-08-20 | 2017-08-01 | National Technologies & Engineering Solutions of Sandia, LLC | Method and apparatus for managing access to a memory |
US9858144B2 (en) | 2015-08-20 | 2018-01-02 | National Technology & Engineering Solutions Of Sandia, Llc | Processor-in-memory-and-storage architecture |
US10459727B2 (en) | 2015-12-31 | 2019-10-29 | Microsoft Technology Licensing, Llc | Loop code processor optimizations |
CN105912476A (zh) * | 2016-04-06 | 2016-08-31 | 中国科学院计算技术研究所 | 片上重复寻址的方法及装置 |
US10571954B2 (en) | 2016-04-25 | 2020-02-25 | Hewlett Packard Enterprise Development Lp | Prioritization for a set of data signals based on skew requirements |
US11893393B2 (en) | 2017-07-24 | 2024-02-06 | Tesla, Inc. | Computational array microprocessor system with hardware arbiter managing memory requests |
US11409692B2 (en) * | 2017-07-24 | 2022-08-09 | Tesla, Inc. | Vector computational unit |
KR102664213B1 (ko) * | 2018-10-08 | 2024-05-08 | 삼성전자주식회사 | 인-메모리 프리페칭을 수행하는 메모리 장치 및 이를 포함하는 시스템 |
US11886987B2 (en) * | 2019-06-25 | 2024-01-30 | Arm Limited | Non-volatile memory-based compact mixed-signal multiply-accumulate engine |
US10997116B2 (en) | 2019-08-06 | 2021-05-04 | Microsoft Technology Licensing, Llc | Tensor-based hardware accelerator including a scalar-processing unit |
US20210064379A1 (en) | 2019-08-29 | 2021-03-04 | Arm Limited | Refactoring MAC Computations for Reduced Programming Steps |
DE102020209684A1 (de) * | 2020-07-31 | 2022-02-03 | Robert Bosch Gesellschaft mit beschränkter Haftung | Verfahren und Vorrichtung zur Fusion von Sensorsignalen mittels eines neuronalen Netzes |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5761706A (en) * | 1994-11-01 | 1998-06-02 | Cray Research, Inc. | Stream buffers for high-performance computer memory system |
US20110119467A1 (en) * | 2009-11-13 | 2011-05-19 | Nec Laboratories America, Inc. | Massively parallel, smart memory based accelerator |
US20120167103A1 (en) * | 2010-12-23 | 2012-06-28 | Electronics And Telecommunications Research Institute | Apparatus for parallel processing continuous processing task in distributed data stream processing system and method thereof |
US8380778B1 (en) * | 2007-10-25 | 2013-02-19 | Nvidia Corporation | System, method, and computer program product for assigning elements of a matrix to processing threads with increased contiguousness |
CN103198512A (zh) * | 2011-09-16 | 2013-07-10 | 柯斯提克绘图公司 | 用于多处理器系统中的输出的多级采集器 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5206822A (en) * | 1991-11-15 | 1993-04-27 | Regents Of The University Of California | Method and apparatus for optimized processing of sparse matrices |
US20090030960A1 (en) * | 2005-05-13 | 2009-01-29 | Dermot Geraghty | Data processing system and method |
US7444473B1 (en) * | 2005-06-17 | 2008-10-28 | Sun Microsystems, Inc. | Speculative memory accesses in a proximity communication-based off-chip cache memory architecture |
US8074026B2 (en) * | 2006-05-10 | 2011-12-06 | Intel Corporation | Scatter-gather intelligent memory architecture for unstructured streaming data on multiprocessor systems |
TWI390403B (zh) * | 2008-11-06 | 2013-03-21 | Univ Nat Taiwan | 串流處理架構中可重組式記憶體方法及裝置 |
GB2476800A (en) * | 2010-01-07 | 2011-07-13 | Linear Algebra Technologies Ltd | Sparse matrix vector multiplier using a bit map of non-zero elements to control scheduling of arithmetic operations |
-
2013
- 2013-08-30 US US14/015,872 patent/US20150067273A1/en not_active Abandoned
-
2014
- 2014-08-28 CN CN201480047781.8A patent/CN105518625A/zh active Pending
- 2014-08-28 WO PCT/US2014/053028 patent/WO2015031547A1/en active Application Filing
- 2014-08-28 EP EP14776925.1A patent/EP3039546A1/en not_active Withdrawn
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5761706A (en) * | 1994-11-01 | 1998-06-02 | Cray Research, Inc. | Stream buffers for high-performance computer memory system |
US8380778B1 (en) * | 2007-10-25 | 2013-02-19 | Nvidia Corporation | System, method, and computer program product for assigning elements of a matrix to processing threads with increased contiguousness |
US20110119467A1 (en) * | 2009-11-13 | 2011-05-19 | Nec Laboratories America, Inc. | Massively parallel, smart memory based accelerator |
US20120167103A1 (en) * | 2010-12-23 | 2012-06-28 | Electronics And Telecommunications Research Institute | Apparatus for parallel processing continuous processing task in distributed data stream processing system and method thereof |
CN103198512A (zh) * | 2011-09-16 | 2013-07-10 | 柯斯提克绘图公司 | 用于多处理器系统中的输出的多级采集器 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11836497B2 (en) | 2018-02-05 | 2023-12-05 | Shanghai Cambricon Information Technology Co., Ltd | Operation module and method thereof |
CN108960418A (zh) * | 2018-08-08 | 2018-12-07 | 上海寒武纪信息科技有限公司 | 神经网络处理装置及其执行矩阵向量乘指令的方法 |
CN112346852A (zh) * | 2019-08-06 | 2021-02-09 | 脸谱公司 | 矩阵求和运算的分布式物理处理 |
Also Published As
Publication number | Publication date |
---|---|
US20150067273A1 (en) | 2015-03-05 |
WO2015031547A1 (en) | 2015-03-05 |
EP3039546A1 (en) | 2016-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105518625A (zh) | 具有高带宽存储器接口的计算硬件 | |
US10810492B2 (en) | Memory side acceleration for deep learning parameter updates | |
EP3566181B1 (en) | Hardware node with matrix-vector multiply tiles for neural network processing | |
EP3547227B1 (en) | Neuromorphic accelerator multitasking | |
CN110825312B (zh) | 数据处理装置、人工智能芯片及电子设备 | |
CN104036451B (zh) | 基于多图形处理器的模型并行处理方法及装置 | |
WO2020073211A1 (zh) | 运算加速器、处理方法及相关设备 | |
WO2022068663A1 (zh) | 内存分配方法、相关设备及计算机可读存储介质 | |
CN106503791A (zh) | 用于有效神经网络部署的系统和方法 | |
CN107710238A (zh) | 具有堆栈存储器的硬件加速器上的深度神经网络处理 | |
CN109428831A (zh) | 用于带宽不平衡数据传输的节流 | |
US20200387400A1 (en) | Allocation system, method and apparatus for machine learning, and computer device | |
CN111047045B (zh) | 机器学习运算的分配系统及方法 | |
US20210303978A1 (en) | Load balancing for memory channel controllers | |
JP7412489B2 (ja) | 連合学習方法及び装置、電子機器、記憶媒体ならびにコンピュータプログラム | |
US11494326B1 (en) | Programmable computations in direct memory access engine | |
US11500802B1 (en) | Data replication for accelerator | |
US11789733B2 (en) | Instruction processing apparatus, acceleration unit, and server | |
CN111353591A (zh) | 一种计算装置及相关产品 | |
US20210173656A1 (en) | Hardware accelerator having reconfigurable instruction set and reconfigurable decoder | |
CN112348182A (zh) | 一种神经网络maxout层计算装置 | |
CN107678781B (zh) | 处理器以及用于在处理器上执行指令的方法 | |
CN111026518B (zh) | 任务调度方法 | |
US11550736B1 (en) | Tensorized direct memory access descriptors | |
US11676068B1 (en) | Method, product, and apparatus for a machine learning process leveraging input sparsity on a pixel by pixel basis |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20160420 |