CN117015767A - 存储器信道控制器的芯片上互连 - Google Patents

存储器信道控制器的芯片上互连 Download PDF

Info

Publication number
CN117015767A
CN117015767A CN202280006948.0A CN202280006948A CN117015767A CN 117015767 A CN117015767 A CN 117015767A CN 202280006948 A CN202280006948 A CN 202280006948A CN 117015767 A CN117015767 A CN 117015767A
Authority
CN
China
Prior art keywords
memory
channel
oci
data
system memory
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
Application number
CN202280006948.0A
Other languages
English (en)
Inventor
拉胡尔·纳加拉詹
荷马·哈里哈兰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of CN117015767A publication Critical patent/CN117015767A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • G06F15/8061Details on data memory access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • G06F15/7842Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers)
    • G06F15/7846On-chip cache and off-chip main memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1621Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by maintaining request order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1626Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
    • G06F13/1631Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests through address comparison
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake

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)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Multi Processors (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)
  • Memory System (AREA)

Abstract

描述了加速机器学习计算的集成电路的方法,系统,装置以及计算机可读介质。电路包括处理器核,每个处理器核包括:多信道控制器;接口控制器,用于将每个信道控制器耦合到系统存储器的任何存储器信道;以及每个信道控制器中的提取单元。每个提取单元被配置为:接收对寻址信息进行编码的信道数据;基于所述寻址信息,使用所述接口控制器从所述系统存储器的任何存储器信道获取数据;以及经由包括所述相应提取单元的相应信道控制器将所获取的数据写入到所述处理器核的向量存储器。

Description

存储器信道控制器的芯片上互连
相关申请的交叉引用
本申请要求2021年3月29日提交的申请号为63/167,593的美国临时申请的优先权,其通过引用整体并入本文。
本申请涉及2020年3月27日提交的申请号为63/001,216的美国临时申请。其内容通过引用并入本文。
本申请涉及2020年5月4日提交的申请号为16/865,539的美国申请。其内容通过引用并入本文。
背景技术
本说明书一般涉及使用电路来执行神经网络计算。
神经网络是机器学习模型,其采用一个或多个节点层来为接收到的输入生成输出,例如分类。除了输出层之外,一些神经网络还包括一个或多个隐藏层。每个隐藏层的输出被用作网络中的一个或多个其它层的输入,例如网络的其它隐藏层或输出层。网络的一些层根据相应参数集的当前值从接收到的输入产生输出。
一些神经网络是卷积神经网络(CNN)(例如,用于图像处理)或递归神经网络(RNN)(例如,用于语音和语言处理)。这些神经网络中的每一个都包括相应的卷积或递归神经网络层的集合。神经网络层可以具有相关的内核集以及嵌入层,用于处理输入以生成用于训练神经网络的向量集。内核(Kernel)可以表示为权重的张量,即多维阵列。例如,嵌入层可以处理输入的集合,输入例如图像像素数据的输入或由神经网络层生成的激活值。输入的集合或激活值的集合也可以表示为张量。
发明内容
分布式系统可包括用于存储被访问并用于执行操作或计算值的值的存储器。每个值可以存储在存储器中由地址标识的相应位置处。存储器可以被安排成包括不同的存储器信道,其中每个通道包括由相应的一组地址标识的存储器位置集合。信道控制器用于控制和管理对给定存储器信道的特定存储器位置的访问,以检索由请求指定的数据。更具体地,信道控制器使用分布式系统的通信信道来管理去往和来自存储器的数据流。
基于此上下文,描述了用于实施硬件接口控制器的技术,硬件接口控制器是被配置为允许集成电路的任何信道控制器与示例系统存储器的任何存储器信道通信的共享互连或交叉开关装置。例如,接口控制器被配置为提供给定信道控制器到高带宽存储器的各种存储器信道的动态耦合。信道控制器可以包括在接口控制器的硬件结构中。集成电路可以是硬件机器学习加速器或包括多个处理器核的其它专用处理器。接口控制器可以集成在加速器的电路的处理流水线中,以使得每个信道控制器能够从高带宽存储器系统的任何通道读数据,以及写数据。
本说明书中所描述的主题的一个方面可包含在被配置为加速机器学习计算的集成电路中。所述电路包括多个处理器核,并且每个处理器核包括多个信道控制器,片上互连(OCI)接口被配置为将所述多个信道控制器中的每一个耦合到系统存储器的每个存储器信道;以及所述多个信道控制器中的每一个中的相应提取单元。所述相应的提取单元被配置为:i)接收对寻址信息进行编码的请求;ii)基于所述寻址信息,使用所述接口控制器从所述系统存储器的任何存储器信道获得数据;以及iii)通过包括所述提取单元的所述信道控制器将从任何存储器信道获取的所述数据写入所述处理器核的向量存储器。
这些和其它实施方式可以各自可选地包括一个或多个以下特征。例如,在一些实施方式中,接口控制器具有或可操作来控制存储器内OCI节点,包括:i)多个读接口,用于从所述系统存储器的任何存储器信道上的任何存储器位置获取数据;以及ii)多个写接口,用于向沿着所述系统存储器的任何存储器信道上的任何存储器位置写入数据。
在一些实施方式中,存储器内OCI节点包括:先入先出(FIFO)存储器队列,所述先入先出(FIFO)存储器队列被配置为在对现有OCI事务进行仲裁期间存储传入的OCI事务请求,用于:i)从所述系统存储器的任何存储器位置获取数据,或ii)向所述系统存储器的任何存储器位置写入数据。在一些实施方式中,所述集成电路还包括接口控制器,所述接口控制器被配置为:接接收对所述寻址信息进行编码的所述请求;基于所述寻址信息中的多个ID生成多个控制信号;以及向所述系统存储器的任何存储器信道提供所述多个控制信号,以提取存储在所述系统存储器的存储器位置中的数据。
在一些实施方式中,所述寻址信息是从在所述接口控制器处接收到的一个或多个传入的OCI事务请求导出的;并且访问所述系统存储器的任何存储器位置的至少一个已有OCI事务请求先前被存储在所述FIFO存储器队列中。寻址信息可以从一个或多个进入的OCI事务请求导出;并且每个进入的OCI事务请求可以包括多个标识符(ID),对应于所述系统存储器的任何存储器信道上的任何存储器位置集合。
在一些实施方式中,OCI接口包括两个或多个寻址模式;并且所述接口控制器可操作地产生允许在所述接口控制器的所述两个或多个寻址模式之间进行选择的控制信号。所述两个或多个寻址模式的第一寻址模式是信道交错模式,所述信道交错模式相对于所述系统存储器的存储器信道限制嵌入表的映射。所述两个或多个寻址模式的第二寻址模式是堆栈交错模式,所述堆栈交错模式相对于所述系统存储器的存储器信道扩展所述嵌入表的所述映射。
在一些实施方式中,每个OCI事务请求由提取单元接收;以及由接口控制器处理,以启动对OCI事务请求中指示的任何存储器位置的访问。在一些实施方式中,访问存储在系统存储器中的数据的每个OCI事务请求对以下编码:i)与被访问的所述数据对应的32字节长度;ii)表示专属于系统存储器中的任何存储器位置的源地址的令牌ID;以及iii)所述向量存储器的存储器位置的目的地址。在一些实施方式中,将所述嵌入表拆分为多个数据分片,所述多个数据分片被分配到整个系统存储器的存储器信道中;所述接口控制器使用所述多个信道控制器中的任何一个来选择所述堆栈交错模式以访问所述嵌入表的任何部分。
所述集成电路还包括:所述多个信道控制器中的每一个中的相应刷新单元,所述相应刷新单元被配置为:i)接收对寻址信息进行编码的请求;ii)基于所述寻址信息,使用所述接口控制器将数据从所述向量存储器中的源地址写入到所述系统存储器的任何存储器位置。在一些实施方式中,通过神经网络层对神经网络输入进行所述机器学习计算;所述刷新单元被用于使用所述接口控制器将所述神经网络层的参数写入到所述系统存储器的任何存储器位置。
本说明书中描述的主题的另一方面可以用使用被配置成加速机器学习计算的集成电路执行的计算机实现的方法来实现。该集成电路包括系统存储器和包括多个信道控制器的处理器核,并且该方法包括:接收多个请求,其中所述多个请求中的每一个对寻址信息进行编码。对于多个请求的第一请求,该方法包括:基于所述第一请求的寻址信息,识别所述系统存储器的任何存储器信道的任何存储器位置;使用芯片上互连(OCI)接口从所述系统存储器的任何存储器位置中的存储器位置获取数据,所述芯片上互连(OCI)接口将所述多个信道控制器中的每个耦合到所述系统存储器的每个存储器信道;以及基于所述第一请求的所述寻址信息,将从所述存储器位置获取的所述数据写入所述处理器核的向量存储器。
这些和其它实施方式可以各自可选地包括一个或多个以下特征。例如,在一些实施方式中,所述OCI接口包括存储器内OCI节点,所述存储器内OCI节点包括多个读接口和多个写接口;并且该方法还包括:基于接口控制器产生的控制信号,使用多个读接口从所述系统存储器的任何存储器信道上的任何存储器位置获取数据;以及基于由所述接口控制器产生的控制信号,使用所述多个写接口向所述系统存储器的任何存储器信道上的任何存储器位置写入数据。
在一些实施方式中,所述存储器内OCI节点包括先入先出(FIFO)存储器队列,并且所述方法包括:对现有OCI事务进行仲裁期间,在所述FIFO存储器队列中存储传入的OCI事务请求,用于:i)从所述系统存储器的任何存储器位置获取数据,或ii)向所述系统存储器的任何存储器位置写入数据。
在一些实施方式中,该方法还包括:所述接口控制器接收对所述寻址信息进行编码的所述请求;所述接口控制器基于所述寻址信息中的多个ID生成多个控制信号;以及所述接口控制器向所述系统存储器的任何存储器信道提供所述多个控制信号,以提取存储在所述系统存储器的存储器位置中的数据。
在一些实施方式中,所述寻址信息是从在所述接口控制器处接收到的一个或多个传入的OCI事务请求导出的;并且访问所述系统存储器的任何存储器位置的至少一个已有OCI事务请求先前被存储在所述FIFO存储器队列中。在一些实施方式中,寻址信息是从一个或多个传入OCI事务请求导出的;并且每个传入的OCI事务请求包括多个标识符(ID),对应于所述系统存储器的任何存储器信道上的任何存储器位置集合。
该方面和其它方面的其它实现包括被配置成执行在计算机存储设备上编码的方法的动作的相应系统,装置和计算机程序。一个或多个计算机的系统可以借助于安装在系统上的软件,固件,硬件或它们的组合来配置,使得在操作中使系统执行动作。一个或多个计算机程序可以通过具有指令来配置,所述指令在由数据处理设备执行时使所述设备执行所述动作。
本说明书中描述的主题可以在特定实施例中实现,以便实现以下优点中的一个或多个。
用于交叉开关/片上互连的电路可以在专用硬件电路上实现,例如在分布式系统中使用的硬件加速器。交叉开关允许每个信道控制器从与处理器核或加速器芯片通信的高带宽存储器系统的任何通道中的存储器单元的任何地址位置读取数据和向其写入数据。这避免了将信道控制器映射到特定存储器信道的需要,该需要可能导致性能损失的负载不平衡。交叉开关被实现为通过将地址分配给任何信道控制器以在所有存储器信道上进行处理来负载平衡地址的分配。因此,与现有方法相比,交叉开关可以改善分布式系统中的性能。
本说明书中描述的主题的一个或多个实现的细节在附图和以下描述中阐述。从说明书,附图和权利要求书中,主题的其它潜在特征,方面和优点将变得显而易见。
附图说明
图1是示例计算系统的框图。
图2是包括控制单元,信道控制器和存储器信道的示例的结构框图。
图3示出了用于实施信道控制器的负载均衡的示例算法。
图4示出了对不同信道控制器的请求的示例分配。
图5A和5B示出了示例OCI接口控制器。
图6示出了涉及OCI处理器节点的写操作的示例流程图。
图7示出了涉及OCI处理器节点的读操作的示例流程图。
在各个附图中相同的附图标记和标号表示相同的元件。
具体实施方式
图1示出了被配置为检索存储在系统100的存储器中的数据元素的示例计算系统100的框图。可以检索数据元素并将其用于执行用于示例机器学习工作负载的神经网络计算。例如,可以处理数据元素以计算神经网络层的输出或执行嵌入层操作以生成用于训练神经网络的嵌入集。
当训练系统100的神经网络来执行某些计算功能时,例如与机器翻译,自然语言理解,排名模型或内容推荐模型相关的计算时,生成嵌入输出。在一些实施方式中,训练神经网络包括更新先前存储在神经网络的嵌入表中的嵌入集,例如在训练神经网络的先前阶段期间。例如,神经网络的嵌入层的嵌入可以与要为其使用嵌入的神经网络一起被训练。因此,在本说明书中描述的技术可以用于在神经网络的训练期间更新嵌入,效率比现有技术有提高。
通常,神经网络的嵌入层用于将特征嵌入到与嵌入层相对应的特征/嵌入空间中。嵌入向量可以是映射到表示嵌入层的查找表的一组特征中的相应特征的数字的相应向量。特征可以是由要在其上执行分析或预测的独立单元共享的属性或特性。例如,独立单元可以是词汇表中的单词组或图像像素,它们形成诸如图像和其它文档的项目的一部分。训练嵌入层的嵌入的算法可以由神经网络处理器执行,以将特征映射到嵌入向量。在一些实施方式中,嵌入表的嵌入与要为其使用嵌入的神经网络的其它层共同学习。这种类型的学习通过反向传播梯度来更新嵌入表而发生。
在其它实施方式中,嵌入可以独立于要使用嵌入的神经网络的其它层而被学习,例如当嵌入被预训练时。例如,神经网络处理器可以使用该算法通过处理关于离散输入特征的信息来计算嵌入,以确定在嵌入空间中几何上接近的嵌入向量的类似输入的映射或放置。在一些情况下,计算嵌入的过程可以表示用于特征学习或特征工程的技术,其允许系统从原始输入数据自动发现特征检测所需的表示。
在一些实施方式中,给定的“输入”可以具有一个或多个类型的一个或多个特征,并且嵌入层为这些类型中的每一个生成相应的嵌入。例如,输入可以用于具有几种不同特征类型的搜索查询。特征类型可包括用户或用户设备的属性(例如,位置,偏好,设备类型等),查询令牌,先前提交的查询或可对应于搜索查询的属性的其它相关类型。对于给定输入具有多于一个特征的任何特征类型,计算系统可操作来检索这些特征中的每一个的单独嵌入。该系统还可操作用于例如通过计算嵌入值的平均值来组合所检索的嵌入,以为该特征类型生成最终嵌入。
计算系统100包括主机102,多核处理单元104和存储器单元105(“存储器105”)。存储器105包括数据分片(shard)106a-106k,其中k是大于1的整数。下面将更详细地描述存储器105。通常,主机102可以是处理单元,例如处理器,多个处理器或多个处理器核。因此,主机102可以包括一个或多个处理器,并且可操作来生成或处理用于访问目标密集矩阵的指令,并且向多核处理单元104发送指令110以生成目标密集矩阵。如下面更详细描述的,执行嵌入层操作可以包括变换来自一个或多个矩阵的稀疏元素以生成密集矩阵。
多核处理单元104从存储器105中的一个或多个数据分片106a-106k访问相应的元素108a-108n,其中n是大于1的整数。多核处理单元104使用对应的元素108a-108n产生目标密集矩阵112,并将目标密集矩阵112提供给主机102以用于进一步处理。多核处理单元104可以通过将元素108a-108n中的每一个变换为向量,并将n个向量级联为单个向量来生成目标密集矩阵112。
通常,在嵌入的情况下,对应于稀疏元素的“稀疏”信息可以是标识特征值的单热点向量。例如,如果对于给定特征(例如,A,B,C,D,E)存在五个可能的值,则稀疏向量将特征值“A”标识为(1,0,0,0,0,0),并且嵌入层将(1,0,0,0,0)映射到特征值“A”的密集嵌入向量。在一些实施方式中,在训练嵌入层以学习嵌入期间,元素108a-108n可以是被变换成向量的嵌入表的权重值,诸如特征值“B”或“C”的嵌入向量。可使用多核处理单元104的神经网络处理器来变换权重值,多核处理单元104执行训练算法以至少基于特征到嵌入向量的映射来计算嵌入。
主机102可以处理用于更新目标密集矩阵的指令,并将更新的密集矩阵发送到多核处理单元104。例如,目标密集矩阵可以对应于神经网络的嵌入。因此,主机102可处理指令以更新嵌入以产生经更新的密集矩阵。例如,在训练神经网络以更新嵌入的后续迭代期间,可以通过确定输入特征到嵌入向量的新映射并基于该新映射生成更新的密集矩阵来执行反向传递以更新嵌入。在一些实施方式中,多核处理单元104可操作来将更新的密集矩阵变换为相应的稀疏元素,并相应地更新存储在数据分片106a-106k中的一个或多个稀疏元素(例如,权重)。
如上所述,主机102被配置为处理在计算系统100内执行的指令。在一些实施方式中,主机102被配置为处理由多核处理单元104生成的目标密集矩阵112。在一些其它实施方式中,主机102可被配置为请求多核处理单元104产生目标密集矩阵112,且另一处理单元可被配置为处理目标密集矩阵112。
多核处理单元104的每个处理器被配置为检索存储在系统100的存储器中的数据元素。存储器可以包括存储包括元素108a-108n的数据的多个数据分片106a-106k。该数据可以包括输入,激活,增益值或与权重矩阵结构的参数或内核相对应的权重值。在一些实施方式中,数据分片106a-106k可以是一个或多个易失性存储器单元。在一些其它实施方式中,数据分片106a-106k可以是一个或多个非易失性存储器单元。
如本文件中所使用的,数据分片可以包括存储器库,存储单元,或存储器的相关部分,例如片上存储器,高带宽系统存储器,外部存储器,或这些的组合。数据分片106a-106k也可以是另一种形式的计算机可读介质,例如存储区域网络中的设备或其它配置。可使用电连接,光连接或无线连接将数据分片106a-106k耦合到多核处理单元104。在一些实施方式中,数据分片106a-106k可以是多核处理单元104的一部分,并且基于存储器中处理器(PIM)结构。
多核处理单元104被配置为基于稀疏元素来确定密集矩阵。多核处理单元104包括多个互连的处理器或处理器核。例如,多核处理单元104可以是包括多个互连的处理器核的分布式处理系统。通常,术语“处理器”和“处理器核(core)”可互换地用于描述多核处理单元104的离散互连处理资源。
系统100还包括过程ID控制单元114(“控制单元114”)。控制单元114接收一组ID报头(header)并执行操作以分派ID报头或分派包括在ID报头中的信息的部分。ID报头被分派给信道控制器,下面将参考图2更详细地描述信道控制器。在一些实施方式中,系统100包括多个控制单元114。例如,系统100可以包括用于系统100处的每个处理器或处理器核的控制单元114。耦合到多核处理单元104的处理器/核的每个控制单元114从源接收一组ID报头。源可以是主机102或多核处理单元104的另一处理器。
ID报头可表示包括指定存储器105中的存储器位置的地址的信息的请求。存储器105可以代表高带宽存储器(HBM)或输入/输出(I/O)设备,其与包括在系统100中的示例硬件电路的处理器核中的控制单元114交换数据通信。例如,存储器105可以与多核处理单元104的处理器核交换数据通信,以将输入传递到核并接收由核的一个或多个计算资源生成的输出。存储在存储器105的存储器位置中或写入存储器105的存储器位置的输入和数据值可以表示向量元素或向量值的阵列。
存储器105可以是系统100的动态随机存取存储器(DRAM)资源。在一些实施方式中,存储器105是相对于包括一个或多个处理器或处理器核的示例硬件电路的外部或片外存储器。存储器105被配置为与硬件电路的片上资源(例如向量处理单元(VPU)或VPU的向量存储库)交换数据通信(如下所述)。例如,存储器105可以设置在表示系统100的硬件电路的集成电路晶粒(die)之外的物理位置。因此,存储器105可以相对于设置在集成电路晶粒内的计算资源是远离的或非本地的。或者,存储器105或其资源的部分可设置在表示专用硬件电路的集成电路晶粒内,使得存储器105位于电路的计算资源的本地或与电路的计算资源共处一地。
图2是结构200的框图,包括信道控制器202和存储器105的存储器信道204,以及上述控制单元114结构200。存储器信道204中的每一个可表示存储器105的存储器库,存储器105的存储器库集合,存储器105的存储器位置集合,或其组合。
信道控制器集合202包括至少被表示为C0,C1,C2和C15的多个相应的信道控制器。在图2的示例中,结构200可以包括16个信道控制器。在一些实施方式中,结构200包括更多或更少的信道控制器。例如,架构200可包括N个信道控制器以及N个存储器信道204。结构200的这些方面,由参考数字202-n表示单个信道控制器,以及存储器信道用参考数字204-n来表示单个存储器信道。
图2的实现示出了一个示例,其中各个信道控制器,例如信道控制器202-0(C0)和202-2(C2),分别硬映射到特定的相应存储器信道,例如存储器信道204-0(C0)和204-2(C2)。如上所述,具有硬映射到特定存储器信道的信道控制器202的系统存储器105可能经历负载不平衡。这些负载不平衡可以延迟或基本上延迟在系统100处执行的神经网络计算的操作,例如用于生成嵌入层的输出的操作。
将特定信道控制器202映射到特定存储器信道的这种现有方法可能具有其它挑战。例如,该方法可以有个约束,即要求数据以对地址和数据如何映射到特定信道控制器202敏感的方式进行存储。另外,当系统需要执行大量随机化的查找以从存储器中的大空间检索向量时,该方法可能是低效的。为了解决这些挑战,在专用硬件电路上集成芯片上互连(OCI)或交叉开关(crossbar)(如下所述)。交叉开关可以集成在加速器电路的处理流水线(pipeline)中,以使得每个信道控制器能够从高带宽存储器系统的任何通道读取数据,以及写入数据。
在一些实施方式中,专用电路是多核硬件加速器,并且OCI是至少基于硬件加速器的多核结构唯一配置的信道控制器接口。例如,信道控制器接口被配置为允许多核硬件加速器的每个核和存储器105的每个存储器信道之间的通信,包括对应于存储器信道的不同类型的存储器结构。
信道控制器接口的大小可以是32B×4,而不是128B×1。基于该示例大小,信道控制器接口可以包括存储器105和信道控制器202之间的多个独立事务线程(transactionthread),而不需要OCI硬件的无关端口(extraneous port)。在一些实施方式中,信道控制器接口被配置为有效地处理每个信道处以及不同的计算阶段的动态带宽需求。例如,千兆字节每秒(GBps)的带宽要求可以针对不同的访问规模的不同计算而变化例如,32字节(32B)访问,64字节(64B)访问,128字节(128B)访问。这些阶段可以包括前向传递计算,后向传递计算和后向通过计算,它们实现优化算法,例如Adagrad,以基于从对某些训练数据的神经网络的评估中产生的梯度来更新特定向量的学习值。
信道控制器接口可以被唯一地配置为包括多个节点接口。例如,交叉开关可以包括:i)客户机内节点接口,其可操作以承载直接存储器访问(DMA)描述符和控制消息;ii)存储器内节点接口,其可操作以承载存储器系统的各种存储器结构(例如,缓冲存储器,指令存储器,共享存储器,向量存储器,主机存储器)的读/写命令和数据;iii)处理器内节点接口(下部),其可操作以将负载/存储流量从信道控制器202的第一/下部集合传送到存储器105;以及iv)处理器内节点接口(上部),其可操作以将负载/存储流量从信道控制器202的第二/上部集合传送到存储器105。下面至少参考图5A和5B更详细地描述这一点。
信道控制器接口允许信道控制器组访问存储器105的任何存储器信道/地址。但是,即使在请求中指定的地址分布在一组信道控制器202中时,某些机器学习工作负载的大规模执行也可以表现出数据访问模式,这导致特定信道控制器接收相对于其它信道控制器的大量数据处理负载。在图2的示例中,信道控制器202-0示出了不平衡,其中相对于其它信道控制器(例如C1,C2)该信道接收大量数据处理负载。为了解决这个难题,交叉开关被用于实现特定的控制方案,以控制到每个信道控制器202的地址或请求的分配。该控制方案使得地址在信道控制器202之间基本上相等地分配。下面参考图3更详细地描述这一点。
图3示出了用于实现存储器信道控制器202的负载均衡的示例算法300。
如上所述,用于示例性机器学习工作负荷的数据访问可以呈现某些病理模式(pathological pattern)。例如,即使一组请求和地址通常可以分布在信道控制器202之间,也可能存在某些模式,其中需要特定的信道控制器对大量的较大特征或大向量进行操作。这种模式可以使控制单元114分派一组处理任务或ID报头,这仍然会导致信道控制器202处的负载不平衡。例如,这些模式可以具有突发特性,其使得它们在某些短时间的处理窗口中出现,例如在20到100个周期之间。即使信道控制器202中的任何一个被配置成访问存储器105的任何存储器位置和任何存储器信道204,也可能发生负载不平衡。
算法300对应于上述控制方案,并且是用于实现系统100的存储器信道控制器202的负载均衡的示例性调度算法。算法300可以包括如图3的示例中所示的伪代码,其表示调度算法300的一个或多个指令步骤。在一些实施方式中,算法300是修改的轮询(round-robin)调度算法。调度算法300的经修改的轮询属性允许解析一组ID报头并将其调度到信道控制器202。
例如,修改的轮询调度算法300被配置为中断或禁止在机器学习工作负载的数据访问期间可能发生的潜在病理序列。因此,修改的轮询调度算法300被配置为允许以在一组信道控制器(350)中的每个信道控制器202上进行负载平衡的方式来分配ID报头(例如,激活的地址或梯度)。用于调度过程的标准轮询方法指示以简单的循环顺序来选择信道控制器,其中在没有优先级的情况下执行选择。
为了解决上述突发模式,可以修改或修改轮询方法以首先检测第一循环选择顺序的初始完成。响应于检测到初始完成,控制单元114然后可以调整增量参数以修改为第二或后续循环轮次(circular round)选择的初始信道控制器。
例如,系统100可以包括16个信道控制器(例如CC0-CC15)。控制单元114可以在初始轮次期间选择每个信道控制器202,并且基于指示在该轮次期间已经选择CC15的计数参数来检测初始轮次的完成。计数参数可以对应于信道控制器的总数(16),使得在初始轮次期间对CC15的选择指示对16个信道控制器中的每一个的选择。然后,控制单元114可以调整增量参数的值以绕过特定信道控制器的选择。
例如,控制单元114可以增加增量参数以绕过CC0的选择,并且在随后的信道选择轮次的开始时选择CC1。同样,控制单元114可再次增加增量参数以绕过CC1的选择并在另一后续信道选择轮次的开始时选择CC2。在一些实施方式中,控制单元114可以基于一个或多个观察到的数据访问模式周期性地调整增量参数的值以增加(或减小)信道计数的增量,如下面参考图4更详细地描述。
图4示出了表400,其示出了用于选择信道控制器202的示例性序列410,以实现对不同信道控制器202的请求均衡分配。
如上面简要描述的,原本的(native)轮询方案可能遭受正被访问用于计算的输入数据中的病理模式。例如,模式可以是每第16个ID报头将属于具有最长嵌入向量和最大计算密集优化器的嵌入表。即便在原本的轮询方案中,示例模式也可以引起负载不平衡。控制单元114可以是处理器核的硬件组件,其执行与调度算法300相对应的指令,以实现修改的轮询ID报头调度方案。
基于算法300,该调度方案可操作以减少由于输入数据集中的病理模式而导致的负载不平衡的概率。算法300可用于生成用于选择信道控制器202的示例序列410。序列中的每个数字指示要选择的信道控制器。在一些实施方式中,序列410可以基于初始的未修改的轮询流初始地迭代通过集合(例如,0到15)中的每个信道控制器。
在选择每个信道控制器的初始迭代之后,可以修改轮询流以选择信道控制器CC1,而不是以选择信道控制器CC0再次开始。同样,在选择每个信道控制器的第二次迭代之后,可以修改轮询流以选择信道控制器CC2,而不是选择信道控制器CC1再次开始。该修改的选择方案提供了一种示例,控制单元114如何选择集合中的每个信道控制器以允许在该集合中相等或基本上相等的分配地址。在一些实施方式中,系统100监视每个信道控制器的数据访问模式,并基于所观察到的模式动态地调整或修改调度方案。
控制单元114使用修改的调度方案来为信道控制器集合202生成信道号码集合。在控制单元114处理所生成的信道号码集合,以将ID报头转发到相应的信道控制器204。在一些实施方式中,控制单元114基于从修改的调度方案导出的示例序列410将ID报头转发到相应的信道控制器204。为了确保信道控制器202之间的ID报头的处理工作负载的充分负载均衡,算法300使控制单元114实现用于选择信道号码的某些特性。在一些实施方式中,算法300用于基于图3所示的伪码的示例步骤的信道选择。
例如,信道选择属性要求信道号码的生成是公平的和非突发性的。用于生成信道号码的“公平”属性使得(或要求)所有信道控制器对于给定的机器学习任务被同等地或基本上同等地选择。用于生成信道号的“非突发性”属性使得(或要求)对于给定机器学习任务的特定信道控制器的重复选择中,信道控制器在没有间歇性增加的情况下被选择。例如,频道号码序列为“0,1,0,1,4,5,0,...”不是理想的模式,并且不会满足生成信道号码的“非突发性”属性。
指标(metric)的示例集合可用于确定是否满足上述每个属性(例如,公平和非突发性)。指标包括确定关于用于选择的信道号码出现次数的计数,平均(平均值)和中值。对于“计数”指标,系统100可操作来确定每次处理迭代包括信道或信道号码的次数的计数。对于所有信道202或信道控制器202,次数应该相同。如果系统100确定次数不相同,则系统100可以检测到信道控制器选择的特定模式是偏置的,并且对于给定的一组操作不是负载平衡的。
对于“平均”指标,系统100可操作来为每个信道号码确定在阈值迭代次数之后出现选择的信道号码的次数是否收敛到N,其中N是大于或等于1的整数。例如,如果系统100包括16个信道控制器,则系统100可操作来针对每个信道号码确定在阈值次数的迭代或ID报头之后出现选择的信道号码的次数是否收敛到16。在一些实施方式中,迭代的阈值次数基于正被检索和操作的数据的大小和复杂度而变化。
“中值”指标表示特定信道控制器的突发性。例如,如果系统100确定信道控制器204-n具有低的中值选择值,则相对于其它信道控制器它将在突发中接收更多的ID报头,这可以指示不平衡。表400包括针对阈值2048个ID报头运行的示例处理迭代的每个信道号码的样本度量值。如前所述,系统100可以监视每个信道控制器的数据访问模式,与上面讨论的指标和属性相关,并且基于观察到的模式动态地调整或修改调度/控制方案。例如,控制单元114可以基于数据访问模式周期性地调整增量参数的值以增加(或减少)信道计数的增量。
图5A和5B示出了包括信道OCI控制器502的示例OCI接口500,信道OCI控制器502管理或控制与系统100的OCI架构(或结构)相关联的操作。系统100(和OCI接口500)可以包括多个OCI控制器502。在一些实施方式中,OCI控制器502对应于上述相应的信道控制器202。在一些其它实施方式中,OCI控制器502与上述相应的信道控制器202不同。OCI控制器502是接口控制器,其可操作以控制OCI接口500,包括节点和OCI接口的读或写接口。在一些实施方式中,OCI接口500的一个或多个特征被包括在接口控制器中和/或可以由接口控制器控制。
OCI接口500可以是包括多个芯片的集成电路的网络节点,其中每个芯片可以表示处理器,处理器核或硬件加速器。例如,OCI接口500可以包括多个子网络节点,其协作以耦合或互连集成电路的每个芯片,使得经由一个芯片获得的数据可以经由网络节点路由到另一个芯片。
通常,控制器502控制与系统100的OCI接口的一个或多个接口设备相关联的操作。OCI接口500可以包括来自每个信道控制器的相应的32B随机访问加载/存储接口,并且可以支持每个存储器信道对存储器105的有效32B读/写访问的多个线程(例如,八个线程)。控制器502被配置为重新排序来自存储器105的一个或多个传入响应,以更新给定信道控制器的提取或刷新单元。这将在下面更详细地描述。
在一些实施方式中,OCI接口包括每个通道504,506的4×32B读写接口。这些读和写接口可表示处理器内OCI节点,其中每一节点服务两个信道504,506,或对应于信道504和506的信道控制器。图5A的示例展示与读接口508相关联的读操作,而图5B的示例展示与写接口510相关联的写操作。OCI接口500的4×32B配置允许在存储器105和信道控制器之间发生独立的事务线程。例如,如上所述,OCI接口500的大小可以是32B×4而不是128B×1。基于该示例大小,OCI接口500可以包括存储器105和信道控制器202之间的多个独立事务线程,而不需要OCI硬件的无关端口。
OCI接口500被配置为发布每个数据接口维护的信道信用。在一些实施方式中,每个数据接口对应于OCI接口500的子网络或节点。控制器502可以生成对应于每个信道信用的一个或多个控制信号。例如,控制器502可以基于在OCI事务请求中编码的寻址信息中的各种ID来生成控制信号。控制器502还可以将控制信号提供或路由到系统存储器的任何存储器信道,以获取存储在系统存储器的存储器位置中的数据。
在一些实施方式中,OCI接口500的每个节点服务于两个信道控制器,并且在该接口节点上的信用在两个信道控制器之间共享。与单个128B接口不同,当其它信道控制器忙时,可以使轻负载的信道控制器在其交易中经历长延迟,利用OCI接口500的4×32B配置,这种相互依赖主要(或仅)存在于为同一端口仲裁(arbitrate)的两个信道之间。
信道控制器到OCI接口的映射可以是固定的或动态的。在映射是固定的实施方式中,在短时间段内一个端口可能忙,而其它端口空闲,但是总体配置允许ID的分布,使得所有端口被同等良好地利用。
OCI接口500可以包括与系统100的直接存储器访问(DMA)单元交互的至少两个接口,DMA单元处理给定处理器核的批量传输和控制消息。例如,DMA单元与至少两个OCI接口,DMA客户端接口和DMA存储器接口交互。DMA客户端接口是用于BMEM,BIMEM,SMEM,VIMEM和HMF的批量数据移动接口,并且包括向OCI节点发送描述符的描述符子接口和用于与同步标志和中断操作有关的控制消息的消息子接口。DMA存储器接口处理来自OCI的读和写请求,并且包括读子接口和写子接口。读子接口从OCI接口500的控制器502接收读命令,并在128字节数据接口上发回响应。写子接口接收写命令并在128字节接口上写数据。
BMEM是用于存储数据向量的向量存储器结构,而SMEM是用于存储标量数据值的标量存储器结构。BIMEM是处理器核指令存储器,而VIMEM是存储由地址处理器VPU单元执行的程序的向量指令存储器(vimem)。在一些实施方式中,系统100的DMA单元将跨16个信道控制器的VIMEM视为(或配置为)一个大的顺序存储器。
在一些情况下,OCI接口500的读和写接口是系统100的存储器内OCI节点的一部分。该节点或单元可以包括输入先进先出(FIFO)存储器队列(或缓存(buffer)),该队列(或缓存)存储传入的OCI事务,同时不同的存储器块/堆栈被仲裁用于写入到操作或从操作读取。在一些实施方式中,在现有操作期间处理的一个或多个输入OCI事务请求作为仲裁一组操作的步骤被预先存储在FIFO存储器队列中。
可以基于最差情况的BMEM访问等待时间来确定该输入FIFO的大小。在一些实施方式中,以这种方式确定FIFO的大小,即使BMEM访问等待时间可能不是最慢的存储器。这是因为除了BMEM之外的存储器只能在批次开始时被访问,所以由于这些访问而导致的OCI接口500上的任何性能损失将只受到一次。
存储器105(例如,HBM)可包括以64字节粒度交错的四个HBM堆栈。例如,存储器105可以包括在字节[0-63][128-191]交错的HBM堆栈0,在字节[64-127][192-255]交错的HBM堆栈1,在字节[256-319][384-447]交错的HBM堆栈2,以及在字节[320-383][448-511]交错的HBM堆栈3。在一些实施方式中,存储器105可以包括更多或更少的堆栈和各种字节粒度。对于64字节粒度,当从HBM堆栈0访问128字节时,该堆栈将返回存储在对应于字节[0-63][128-191]的存储位置的数据。这可以代表OCI结构上的示例Q128寻址模式。
示例处理器核的OCI控制器502可以使内核以信道交错模式或堆栈交错模式运行。信道交错模式和堆栈交错模式中的每一个代表处理器核的示例寻址模式。信道交错寻址模式可以将嵌入表映射到最靠近处理器核的单个HBM栈,使得所有存储器访问都对最接近的HBM栈进行,相对于另一HBM栈来说可以提供更小的延迟。
在堆栈交错模式中,嵌入表可跨越芯片上的所有高带宽存储器(HBM)堆栈(例如,存储器105的堆栈)被分割以利用不同的系统寻址方案。例如,在堆栈交错模式期间,可使用与系统100的其余部分相同的地址方案来访问嵌入表,且系统100的软件控制可被配置为使用存储器105的整个容量,即使其选择使用包括多个核的集成电路芯片上使用较少的处理核。
在一些实施方式中,系统100的信道控制器包括至少两个(以及可选地三个)处理阶段:提取,计算和刷新(可选地)。这可以是以FIFO顺序处理信道ID的顺序处理流水线。
使用提取ID单元来实施提取过程,例如下文参考图7论述的提取ID单元702(或704)。在一些实施方式中,提取ID单元是信道控制器流水线中的第一处理阶段。提取ID单元从处理器核ID单元114接收信道ID数据结构。信道ID数据对要检索的数据长度(以32字节),令牌ID(例如,存储器105的源地址)和BMEM目的地地址进行编码。提取ID单元用于从存储器105加载数据,并将获得的数据存储到信道ID数据中指定的BMEM地址。信道ID被转发到信道控制器的地址处理器单元,并且相应的数据被存储到BMEM中。
在一些实施方式中,数据可以是存储在BMEM中的缓存(例如,循环缓存)中的参数向量。每次提取ID单元向存储器发出加载请求时,就会移动缓存写指针。一旦已消耗缓存中的数据,则后续流水线阶段会递增读指针。当缓存没有足够的空间用于存储器105加载要存储在BMEM中的数据时,提取ID单元可以停止下发存储器105加载。此外,存储器105可以产生无序的读响应。提取ID单元包括响应重新排序逻辑,以确保信道ID按次序被发送到地址处理器。
使用刷新ID单元来实现刷新过程,例如下面参考图6讨论的刷新ID单元602(或604)。在一些实施方式中,刷新ID单元是信道控制器流水线中的可选第三处理阶段。通常,刷新ID单元用于将数据从例如BMEM源地址移动到存储器105目的地址。刷新ID单元将信道ID数据结构从地址处理器接收到FIFO中。信道ID数据对待检索的数据长度(以32字节),令牌ID(例如,存储器105的目的地地址)和BMEM源地址进行编码。类似于提取ID单元,刷新ID单元具有从BMEM源地址(即,存储器位置)加载参数并将其存储在存储器105的目的地地址(即,存储器位置)中的简化责任。因此,刷新ID单元可使用OCI接口500将神经网络层的参数写入到高带宽系统存储器的任何存储器位置。
OCI接口500可以要求将所有请求分解为128字节(128B)传输。在一些情况下,根据实现请求的处理器核的地址模式,可以将请求分解为64B或128B传送。处理器核可被配置为支持多个寻址模式。在将请求发送到OCI接口/交叉开关500之前,完成地址转换和将传输拆分成多个128B(或64B)请求。
在从存储器105接收到存储的响应之后,同步标志由刷新ID单元更新。这允许来自后续批量处理的负载始终看到最新的数据。由于响应可以无序地到达,刷新ID单元使用将发送的存储命令的总数与从存储器105接收的响应的总数进行比较的简单机制。当计数匹配且没有附加信道ID数据未完成时,更新同步标志。
图6示出了涉及OCI处理器节点的写操作600的示例流程图。写操作600可以包括一个或多个事务。每个信道控制器通过OCI接口连接到存储器105,并且用于实现操作600的写流水线。每个信道控制器包括相应的刷新标识(ID)单元,其展开与写操作600相关联的事务。在图6的示例中,第一信道控制器0包括刷新ID单元602(“刷新单元602”)并执行一个或多个展开和翻译操作606,而不同的第二信道控制器1包括刷新ID单元604(“刷新单元604”)并执行一个或多个展开和翻译操作608。在一些实施方式中,信道控制器0和信道控制器1是相同的信道控制器。
刷新单元602,604中的每一个都可以根据包括相应信道控制器0和1的给定处理器核的信道操作模式将相应事务展开为128B或64B的倍数。例如,如上所述,OCI事务请求编码寻址信息,用于使用OCI接口从系统存储器的任何存储器信道获得数据,或者用于将从任何存储器信道获得的数据写入处理器核的向量存储器。因此,在一些实施方式中,寻址信息是从在OCI控制器处接收的一个或多个传入OCI事务请求。每个传入的OCI事务请求可以包括多个标识符(ID),其对应于系统存储器的任何存储器信道上的任何存储器位置集合。
OCI事务请求可以根据实现请求的处理器核的地址模式而被展开和/或翻译(例如,分解)成64B或128B传送。将相应事务展开成128B或64B的倍数也可对准32B并发送到OCI控制器502。如上所述,系统100的每个处理器核可以以信道交错模式或堆栈交错模式操作,每个模式代表处理器核的示例寻址(或操作)模式。
每一OCI控制器502可与例如刷新单元602,604的两个不同的刷新单元或对应于存储器105的一个或多个其它存储器信道的刷新单元通信。基于请求者,控制器502将OCI ID分配给每个写请求,并在相应的写接口上发送出写请求。例如,控制器502可以通过使用信道仲裁器610的示例选择逻辑以轮询方式在两个刷新单元602,604之间进行选择,经由耦合到示例信道0或信道1的写接口来发送或发送请求。选择逻辑可以基于上述修改的轮询调度算法300。在一些实施方式中,刷新ID单元602,604中的每一个都可生成“解除分配(deallocate)”信号,以指示每当完成信道ID数据处理时。如上所述,可以在神经网络机器学习/数据模型的训练阶段期间执行反向传递以更新嵌入表。在用于参数的后向通过操作期间,将解除分配信号传输到对应的提取ID单元。
在一些实施方式中,由刷新单元602,604中的每一个执行的操作不受完成写操作的顺序的影响。因为给定的刷新单元602,604可能不关心写完成的顺序,所以不需要使用多于两个的OCI ID用于写入。因此,控制器502可以简化其操作,并通过最小化将附加OCI ID分配给写请求的操作来实现计算节省或效率。在一些实施方式中,OCI接口500可以使用比特向量来跟踪未完成的ID。根据写完成的OCI ID,ID被转发到生成事务的刷新单元,在该事务中计数未完成的完成的数量。
图7示出了涉及OCI处理器节点的读操作700的示例流程图。
每个信道控制器(例如,控制器502)包括相应的提取识别(ID)单元,其展开与读操作700相关联的事务。在图7的示例中,第一信道控制器0包括提取ID单元702(“提取单元702”)且执行展开和翻译操作706,而第二不同信道控制器1包括提取ID单元704(“提取单元704”)。对于示例读操作,在相应的OCI控制器502内完成事务展开和地址转换,之后向信道仲裁器610发出请求以向OCI发送读请求。在该示例中,OCI控制器502对应于信道控制器0或信道控制器1。
在一些实施方式中,每个提取单元702,704使用计数标签存储器跟踪读操作的完成,并更新同步标志存储器以说明完成。在一些其它实施方式中,展开事务的控制模块被配置为每4个周期生成至少一个128B事务,以匹配读数据可以被接受的速率。信道仲裁器610以轮询方式服务于两个信道控制器,并在标签跟踪表710中查找可用ID。例如,跟踪表可以为每个ID保持一个条目,并且可以包括256个条目。在一些实施方式中,跟踪表可被配置为保持更多或更少的条目。在256个条目的示例中,所述表的行0-127可保留用于提取单元702,且表的第128-255行可保留给提取单元704。
根据请求者获取单元,信道仲裁器610可执行查找以确定包括一个或多个可用ID的表的区域。可以以递增的方式分配ID。例如,一旦ID0被分配,它也不会被再次分配,即使ID0的读取数据已经被返回,直到ID127被分配。这种配置简化了表的实施,并且以减少或消除OCI将经历缺少ID的可能性的方式提供了每个信道控制器128个ID的可用性。在一些实施方式中,标签跟踪表中的每个条目保持32B用于事务的最不重要的32B的存储器地址,13B用于要将数据写入的BMEM地址,2B用于指示事务长度(32B的倍数),5B用于从提取单元接收的计数标签以跟踪完成(可能较大)事务,以及1B用于高速缓存以标记该事务在读取旁路缓存中是否可高速缓存。在一些情况下,需要事务的最不重要的32B来写入到读取旁路缓存。
从OCI接口500读取的数据可以根据事务的大小在1-4个周期内被发送到FIFO中。将事务的前32B行写入此FIFO触发对标签表的查找,以检索附加到此数据的BMEM地址,HBM地址和计数标签。事务可以包括高速缓存使能位(cache enable bit)。如果用于该事务的高速缓存使能位在表710中被设置为0,则不会对读旁路缓存进行更新,并且ID被解除分配。如果高速缓存位被设置为1,则数据被写入读旁路缓存。
读旁路缓存中的逐出(eviction)可以以FIFO顺序发生,其中首先写入事务的最不重要的32B。这与用事务的最不重要的32B查找HBM地址匹配列表的事实相结合,将确保如果事务的较低32B引起“命中”,则事务的剩余字节也可存在于缓存中。从提取单元702,704查找的数据使得对特定HBM地址的访问将具有相同的长度,这使得对该特定HBM地址的每个事务以相同的方式被展开。该实施细节避免了仅在读旁路缓存中的事务的一部分上引起“命中”的情形。
来自标签表710的存储器105地址可以被添加到匹配列表和在缓存中更新的相应数据,并且通过在来自四个信道OCI控制器中的每一个的写之间对写端口进行仲裁。为了避免逐出存储器105地址列表中“命中”的条目的风险,可以将位于接近下一个逐出候选者的存储器地址标记为“未命中”。在一些情况下,这是因为在实际命中和从旁路缓存中读出数据所花费的时间之间存在仲裁延迟。
根据集成电路的结构布局,在重写HBM地址匹配列表的各种副本与旁路缓存之间可能存一些延迟差异。在一些实施方式中,系统100包括控制参数,该控制参数定义了命中应如何接近要被标记为未命中的逐出候选者的阈值。存储器105地址列表可以在信道OCI控制器间被复制,以避免需要仲裁来确定旁路缓存中是否存在条目。系统100可被配置为使得读取旁路缓存中的一些(或所有)条目在批次之间无效,以确保系统不使用过时数据。对旁路缓存的无效请求可以与提取单元的批次中的最后一个ID一起发送。
从OCI或旁路缓存读取的数据连同其必须写入的BMEM地址一起在32B行中被发送到BMEM。如上所述,对应的提取单元(例如,提取单元702或704)使用计数标签存储器跟踪读完成,并执行同步标志存储器的更新。
一个或多个事务可以被标记为不可高速缓存的,并且被发送到另一个循环信道仲裁器610,其在这些事务和具有查找未命中的任何可高速缓存事务之间进行选择。该信道仲裁器提供的授权是基于在OCI接口处指示的可用信用。
被标记为可高速缓存的事务可以被发送到单独的FIFO队列或表中,用于查找存在于读旁路缓存中的存储器105地址。系统100通过在例如512个条目中并行搜索存储器105地址以查找事务的最不重要的32B来执行地址匹配。在一些实施方式中,系统100可以包括4个信道OCI控制器,每个信道OCI控制器具有其自己的存在于旁路缓存中的存储器105地址列表的副本,旁路缓存在所有4个控制器之间共享。对旁路缓存的更新可以导致地址的所有副本都被更新。在地址列表中出现命中的情况下,事务必须与来自其它3个控制器的事务进行仲裁,以访问读取数据。
在一些实施方式中,被分配给该事务的OCI ID被释放,并且事务被排队以用于读取数据查找。来自该旁路缓存的读取数据被排队以被发送回请求所发起的提取单元,并且这可以从最初被分配给该事务的OCI ID的最高有效位被检索。通过轮询仲裁器来执行读取数据的这种发送,仲裁器在来自OCI接口500的数据和来自旁路缓存的数据之间进行选择。
在本说明书中描述的主题和功能操作的实施例可以在数字电子电路中,在有形地实现的计算机软件或固件中,在计算机硬件中实现,包括在本说明书中公开的结构及其结构等价物,或者在它们中的一个或多个的组合中实现。本说明书中描述的主题的实施例可以被实现为一个或多个计算机程序,即,在有形的非暂时性程序载体上编码的计算机程序指令的一个或多个模块,用于由数据处理设备执行或控制数据处理设备的操作。
可替换地或附加地,程序指令可以被编码在人工生成的传播信号上,例如机器生成的电,光或电磁信号,该信号被生成来编码信息以便发送到适当的接收装置以便由数据处理装置执行。计算机存储介质可以是机器可读存储设备,机器可读存储基底,随机或串行访问存储器设备,或它们中的一个或多个的组合。
术语“计算系统”包括用于处理数据的各种装置,设备和机器,包括例如可编程处理器,计算机,或多处理器或计算机。装置可以包括专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除了硬件之外,装置还可以包括为所讨论的计算机程序创建执行环境的代码,例如构成处理器固件,协议栈,数据库管理系统,操作系统或它们中的一个或多个的组合的代码。
计算机程序(其也可以被称为或描述为程序,软件,软件应用,模块,软件模块,脚本或代码)可以以任何形式的编程语言来编写,包括编译或解释语言,或声明性语言或过程语言,并且可以以任何形式来部署,包括作为独立程序或作为模块,组件,子例程或适用于计算环境的其它单元。
计算机程序可以但不必须对应于文件系统中的文件。程序可以存储在保存其它程序或数据的文件的一部分中,例如,存储在标记语言文档中的一个或多个脚本,存储在专用于所述程序的单个文件中,或者存储在多个协调文件中,例如,存储一个或多个模块,子程序或代码部分的文件中。计算机程序可被部署为在一个计算机上或在位于一个站点或分布在多个站点上并通过通信网络互连的多个计算机上执行。
本说明书中描述的过程和逻辑流程可以由一个或多个可编程计算机来执行,可编程计算机执行一个或多个计算机程序,以通过对输入数据进行操作并生成输出来执行功能。过程和逻辑流程也可由专用逻辑电路执行,并且装置也可以作为专用逻辑电路来实现,例如,FPGA(现场可编程门阵列),ASIC(专用集成电路)或GPGPU(通用图形处理单元)。
例如,适于执行计算机程序的计算机可以基于通用或专用微处理器或两者,或任何其它类型的中央处理单元。通常,中央处理单元将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的一些元件是用于执行或执行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括或被可操作地耦合以从一个或多个大容量存储设备接收数据或向一个或多个大容量存储设备传送数据,大容量存储设备用于存储数据,例如磁盘,磁光盘或光盘。然而,计算机不必具有这样的设备。此外,计算机可以嵌入在另一设备中,例如移动电话,个人数字助理(PDA),移动音频或视频播放器,游戏控制台,全球定位系统(GPS)接收器,或便携式存储设备,例如通用串行总线(USB)闪存驱动器,仅举几个示例。
适于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器,介质和存储器设备,包括例如半导体存储器设备,例如EPROM,EEPROM和闪存设备;磁盘,例如内部硬盘或可移动磁盘;磁光盘;CD ROM和DVD-ROM盘。处理器和存储器可以由专用逻辑电路补充或结合在专用逻辑电路中。
为了提供与用户的交互,本说明书中描述的主题的实施例可以在计算机上实现,该计算机具有用于向用户显示信息的显示设备,例如LCD(液晶显示器)监视器,以及用户可以通过其向计算机提供输入的键盘和定点设备,例如鼠标或轨迹球。也可以使用其他类型的设备来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如视觉反馈,听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括声音,语音或触觉输入。此外,计算机可以通过向用户使用的设备发送文档和从用户使用的设备接收文档来与用户交互;例如,通过响应于从web浏览器接收的请求,向用户的客户端设备上的web浏览器发送网页。
本说明书中描述的主题的实施例可以在计算系统中实现,计算系统包括后端组件,例如作为数据服务器,或者包括中间件组件,例如应用服务器,或者包括前端组件,例如具有图形用户界面或Web浏览器的客户端计算机,用户可以通过该图形用户界面或Web浏览器与本说明书中描述的主题的实现进行交互。或一个或多个这样的后端,中间件或前端组件的任何组合。系统的组件可以通过任何形式或介质的数字数据通信(例如,通信网络)来互连。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”),例如因特网。
计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络进行交互。客户端和服务器之间的关系是通过在各个计算机上运行并且彼此具有客户端-服务器关系的计算机程序而产生的。
虽然本说明书包含许多具体的实现细节,但这些不应被解释为对任何发明的范围或所要求保护的范围的限制,而应被解释为对特定发明的特定实施例可能特定的特征的描述。本说明书中在单独实施例的上下文中描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中单独地或以任何合适的子组合来实现。此外,尽管上面可以将特征描述为在某些组合中起作用,并且甚至最初如此要求保护,但是在一些情况下,可以从组合中去除要求保护的组合中的一个或多个特征,并且要求保护的组合可以针对子组合或子组合的变型。
类似地,虽然在附图中以特定顺序描述了操作,但这不应被理解为要求以所示的特定顺序或按顺序执行这些操作,或者要求执行所有示出的操作以获得期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为需要所有实施例中的这种分离,并且应当理解,所描述的程序组件和系统通常可以被集成到单个软件产品中或者被封装到多个软件产品中。
已经描述了本主题的特定实施例。其它实施例在所附权利要求的范围内。例如,权利要求中所述的动作可以以不同的顺序执行,并且仍然获得期望的结果。作为一个示例,附图中所示的过程不一定需要所示的特定顺序或顺序来获得理想的结果。在某些实施方式中,多任务和并行处理可能是有利的。

Claims (20)

1.一种被配置成加速机器学习计算的集成电路,其特征在于,所述电路包括:
多个处理器核,每个处理器核包括:
多个信道控制器;
接口控制器,所述接口控制器被配置为将所述多个信道控制器中的每一个耦合到系统存储器的每一个存储器信道;以及
所述多个信道控制器中的每一个中的相应提取单元,所述相应提取单元被配置为:
i)接收对寻址信息进行编码的请求;
ii)基于所述寻址信息,使用所述接口控制器从所述系统存储器的任何存储器信道获取数据;以及
iii)通过包括所述提取单元的所述信道控制器将从任何存储器信道获取的所述数据写入所述处理器核的向量存储器。
2.根据权利要求1所述的集成电路,其特征在于,所述接口控制器可操作以控制:存储器内OCI节点,包括:
i)多个读接口,用于从所述系统存储器的任何存储器信道上的任何存储器位置获取数据;以及
ii)多个写接口,用于向沿着所述系统存储器的任何存储器信道上的任何存储器位置写入数据。
3.根据权利要求2所述的集成电路,其特征在于,所述存储器内OCI节点包括:
先入先出(FIFO)存储器队列,所述先入先出(FIFO)存储器队列被配置为在对现有OCI事务进行仲裁期间存储传入的OCI事务请求,用于:i)从所述系统存储器的任何存储器位置获取数据,或ii)向所述系统存储器的任何存储器位置写入数据。
4.根据权利要求3所述的集成电路,其特征在于,所述接口控制器被配置为:
接收对所述寻址信息进行编码的所述请求;
基于所述寻址信息中的多个ID生成多个控制信号;以及
向所述系统存储器的任何存储器信道提供所述多个控制信号,以提取存储在所述系统存储器的存储器位置中的数据。
5.根据权利要求4所述的集成电路,其特征在于,其中:
所述寻址信息是从在所述接口控制器处接收到的一个或多个传入的OCI事务请求导出的;以及
访问所述系统存储器的任何存储器位置的至少一个已有OCI事务请求先前被存储在所述FIFO存储器队列中。
6.根据权利要求5所述的集成电路,其特征在于,其中:
每个传入的OCI事务请求包括多个标识符(ID),对应于所述系统存储器的任何存储器信道上的任何存储器位置集合。
7.根据权利要求6所述的集成电路,其特征在于,其中:
所述OCI接口包括两个或多个寻址模式;以及
所述接口控制器可操作地产生允许在所述接口控制器的所述两个或多个寻址模式之间进行选择的控制信号。
8.根据权利要求7所述的集成电路,其特征在于,其中:
所述两个或多个寻址模式的第一寻址模式是信道交错模式,所述信道交错模式相对于所述系统存储器的存储器信道限制嵌入表的映射。
9.根据权利要求8所述的集成电路,其特征在于,其中:
所述两个或多个寻址模式的第二寻址模式是堆栈交错模式,所述堆栈交错模式相对于所述系统存储器的存储器信道扩展所述嵌入表的所述映射。
10.根据权利要求7所述的集成电路,其特征在于,其中每个OCI事务请求是:
获取单元接收;和
由接口控制器处理,以启动对OCI事务请求中指示的任何存储器位置的访问。
11.根据权利要求10所述的集成电路,其特征在于,访问存储在所述系统存储器中的数据的每个OCI事务请求对以下编码:
i)与被访问的所述数据对应的32字节长度;
ii)表示专属于系统存储器中的任何存储器位置的源地址的令牌ID;以及
iii)所述向量存储器的存储器位置的目的地址。
12.根据权利要求8所述的集成电路,其特征在于,其中:
将所述嵌入表拆分为多个数据分片,所述多个数据分片被分配到整个系统存储器的存储器信道中;以及
所述接口控制器使用所述多个信道控制器中的任何一个来选择所述堆栈交错模式以访问所述嵌入表的任何部分。
13.根据权利要求1所述的集成电路,其特征在于,还包括:
所述多个信道控制器中的每一个中的相应刷新单元,所述相应刷新单元被配置为:
i)接收对寻址信息进行编码的请求;
ii)基于所述寻址信息,使用所述接口控制器将数据从所述向量存储器中的源地址写入到所述系统存储器的任何存储器位置。
14.根据权利要求13所述的集成电路,其特征在于,其中:
通过神经网络层对神经网络输入进行所述机器学习计算;以及
所述刷新单元被用于使用所述接口控制器将所述神经网络层的参数写入到所述系统存储器的任何存储器位置。
15.一种使用被配置成加速机器学习计算的集成电路执行的计算机实现的方法,其特征在于,所述集成电路包括系统存储器和处理器核,所述处理器核包括多个信道控制器,所述方法包括:
接收多个请求,其中所述多个请求中的每一个对寻址信息进行编码;
对于所述多个请求中的第一个请求:
基于所述第一请求的寻址信息,识别所述系统存储器的任何存储器信道的任何存储器位置;
使用芯片上互连(OCI)接口从所述系统存储器的任何存储器位置中的存储器位置获取数据,所述芯片上互连(OCI)接口将所述多个信道控制器中的每个耦合到所述系统存储器的每个存储器信道;以及
基于所述第一请求的所述寻址信息,将从所述存储器位置获取的所述数据写入所述处理器核的向量存储器。
16.根据权利要求15所述的方法,其特征在于,其中:
所述OCI接口包括存储器内OCI节点,所述存储器内OCI节点包括多个读接口和多个写接口;以及
所述方法还包括:
基于接口控制器产生的控制信号,使用多个读接口从所述系统存储器的任何存储器信道上的任何存储器位置获取数据;以及
基于由所述接口控制器产生的控制信号,使用所述多个写接口向所述系统存储器的任何存储器信道上的任何存储器位置写入数据。
17.根据权利要求16所述的方法,其特征在于,所述存储器内OCI节点包括先入先出(FIFO)存储器队列,并且所述方法包括:
对现有OCI事务进行仲裁期间,在所述FIFO存储器队列中存储传入的OCI事务请求,用于:i)从所述系统存储器的任何存储器位置获取数据,或ii)向所述系统存储器的任何存储器位置写入数据。
18.根据权利要求17所述的方法,其特征在于,还包括:
所述接口控制器接收对所述寻址信息进行编码的所述请求;
所述接口控制器基于所述寻址信息中的多个ID生成多个控制信号;以及
所述接口控制器向所述系统存储器的任何存储器信道提供所述多个控制信号,以提取存储在所述系统存储器的存储器位置中的数据。
19.根据权利要求18的方法,其特征在于,其中:
所述寻址信息是从在所述接口控制器处接收到的一个或多个传入的OCI事务请求导出的;以及
访问所述系统存储器的任何存储器位置的至少一个已有OCI事务请求先前被存储在所述FIFO存储器队列中。
20.根据权利要求19的方法,其特征在于,其中:
每个传入的OCI事务请求包括多个标识符(ID),对应于所述系统存储器的任何存储器信道上的任何存储器位置集合。
CN202280006948.0A 2021-03-29 2022-03-29 存储器信道控制器的芯片上互连 Pending CN117015767A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US202163167593P 2021-03-29 2021-03-29
US63/167,593 2021-03-29
PCT/US2022/022401 WO2022212415A1 (en) 2021-03-29 2022-03-29 On-chip interconnect for memory channel controllers

Publications (1)

Publication Number Publication Date
CN117015767A true CN117015767A (zh) 2023-11-07

Family

ID=81581256

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280006948.0A Pending CN117015767A (zh) 2021-03-29 2022-03-29 存储器信道控制器的芯片上互连

Country Status (6)

Country Link
EP (1) EP4315089A1 (zh)
JP (1) JP2024512843A (zh)
KR (1) KR20230062651A (zh)
CN (1) CN117015767A (zh)
TW (1) TW202238368A (zh)
WO (1) WO2022212415A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI826216B (zh) * 2022-12-29 2023-12-11 瑞昱半導體股份有限公司 記憶體控制系統與記憶體控制方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6751698B1 (en) * 1999-09-29 2004-06-15 Silicon Graphics, Inc. Multiprocessor node controller circuit and method
EP3550440A1 (en) * 2014-05-29 2019-10-09 Altera Corporation An accelerator architecture on a programmable platform

Also Published As

Publication number Publication date
TW202238368A (zh) 2022-10-01
JP2024512843A (ja) 2024-03-21
EP4315089A1 (en) 2024-02-07
US20220309011A1 (en) 2022-09-29
WO2022212415A1 (en) 2022-10-06
KR20230062651A (ko) 2023-05-09
WO2022212415A9 (en) 2023-08-10

Similar Documents

Publication Publication Date Title
EP3729280B1 (en) Dynamic per-bank and all-bank refresh
US11222258B2 (en) Load balancing for memory channel controllers
US10152434B2 (en) Efficient arbitration for memory accesses
EP3732578B1 (en) Supporting responses for memory types with non-uniform latencies on same channel
US9420036B2 (en) Data-intensive computer architecture
JP2016532933A (ja) メモリで制御されるデータ移動及びタイミング
US8166246B2 (en) Chaining multiple smaller store queue entries for more efficient store queue usage
US20110320722A1 (en) Management of multipurpose command queues in a multilevel cache hierarchy
US11410032B2 (en) Word2VEC processing system
CN117015767A (zh) 存储器信道控制器的芯片上互连
US20200117505A1 (en) Memory processor-based multiprocessing architecture and operation method thereof
CN116382599B (zh) 一种面向分布式集群的任务执行方法、装置、介质及设备
CN103218259A (zh) 计算任务的调度和执行
CN108062279A (zh) 用于处理数据的方法和设备
EP4184324A1 (en) Efficient accelerator offload in multi-accelerator framework
US12007913B2 (en) On-chip interconnect for memory channel controllers
KR100328726B1 (ko) 메모리 엑세스 시스템 및 그 제어방법
US8589633B2 (en) Control apparatus
US20220365725A1 (en) Data structure engine
CN118012788A (zh) 数据处理器、数据处理方法、电子设备和存储介质
CN118051470A (zh) 用于操作计算装置的方法和存储装置
CN113448897A (zh) 适用于纯用户态远端直接内存访问的数组结构及优化方法

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