CN114026553A - 多芯片系统中的芯片间等待时间特性 - Google Patents

多芯片系统中的芯片间等待时间特性 Download PDF

Info

Publication number
CN114026553A
CN114026553A CN202080047570.XA CN202080047570A CN114026553A CN 114026553 A CN114026553 A CN 114026553A CN 202080047570 A CN202080047570 A CN 202080047570A CN 114026553 A CN114026553 A CN 114026553A
Authority
CN
China
Prior art keywords
chip
chips
latency
pair
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202080047570.XA
Other languages
English (en)
Inventor
M.A.冈特
D.贝勒
C.比弗尔
C.罗斯
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 CN114026553A publication Critical patent/CN114026553A/zh
Pending legal-status Critical Current

Links

Images

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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4247Bus transfer protocol, e.g. handshake; Synchronisation on a daisy chain bus
    • 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/7807System 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/781On-chip cache; Off-chip memory
    • 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/17Interprocessor communication using an input/output type connection, e.g. channel, I/O port
    • 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
    • G06F15/17306Intercommunication techniques
    • G06F15/17312Routing techniques specific to parallel machines, e.g. wormhole, store and forward, shortest path problem congestion
    • 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
    • G06F15/17337Direct connection machines, e.g. completely connected computers, point to point communication networks
    • 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
    • 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/7807System 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/7825Globally asynchronous, locally synchronous, e.g. network on chip
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/44Star or tree networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0852Delays
    • H04L43/0858One way delays
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0852Delays
    • H04L43/0864Round trip delays
    • 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
    • G06F2015/761Indexing scheme relating to architectures of general purpose stored programme computers
    • G06F2015/763ASIC
    • 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
    • G06F2015/761Indexing scheme relating to architectures of general purpose stored programme computers
    • G06F2015/765Cache

Abstract

包括在计算机存储介质上编码的计算机程序的方法、系统和装置,用于针对在半导体器件的串联环路布置中连接的多个芯片中的每对相邻芯片,确定在所述对芯片之间的往返数据传输的对应环路等待时间。从环路等待时间中识别最大环路等待时间。确定源自所述多个芯片中的芯片的数据传输的环路等待时间,所述数据传输将围绕串联环路布置发送并返回到所述芯片。将最大环路等待时间的一半与环路等待时间的N分之一进行比较,其中,N是所述多个芯片中的芯片数量,以及将较大值存储为半导体器件的芯片间等待时间,所述芯片间等待时间表示半导体器件的操作特性。

Description

多芯片系统中的芯片间等待时间特性
技术领域
本公开涉及多芯片系统中的定时同步和数据传送。
背景技术
电子设备能够由多个不同的芯片组成,这些芯片需要在它们之间传送数据以便电子设备进行操作。芯片之间的数据通信可能是非确定性的。例如,芯片之间的数据通信在一个芯片处的发送时间到另一个芯片处的接收时间之间受到可变等待时间的影响。也就是说,数据从一个芯片传播到另一个芯片所花费的时间不是恒定的,而是受到许多不同的传输时间变化源的影响。
发明内容
总体上,本说明书中描述的主题的创新方面能够体现在芯片间等待时间表征方法中,其包括以下动作:针对半导体器件的多个芯片中的每对芯片,确定围绕通过所述多个芯片的传输路径在所述对芯片之间的往返数据传输的对应环路等待时间;
从环路等待时间中识别最大环路等待时间;
确定源自所述多个芯片中的芯片的数据传输的全路径等待时间,所述数据传输将围绕所述路径发送并返回到所述芯片;
将最大环路等待时间的一半与全路径等待时间的N分之一进行比较,其中,N是芯片的传输路径中的芯片数量,以及将较大值存储为半导体器件的芯片间等待时间,所述芯片间等待时间表示半导体器件的操作特性。
在第二总体方面,本说明书中描述的主题的创新特征能够体现在一种芯片间等待时间表征方法中,其包括以下动作:针对以半导体器件的串联环路布置连接的多个芯片中的每对相邻芯片,确定所述对芯片之间的往返数据传输的对应环路等待时间。所述动作包括从环路等待时间中识别最大环路等待时间。所述动作包括确定源自多个芯片中的芯片的数据传输的环路等待时间,所述数据传输将围绕串联环路布置发送并返回到所述芯片。所述动作包括将最大环路等待时间的一半与环路等待时间的N分之一进行比较,其中,N是多个芯片中的芯片数量,以及将较大值存储为半导体器件的芯片间等待时间,所述芯片间等待时间表示半导体器件的操作特性。所述方面的其他实施方式包括对应的系统、装置和计算机程序,其被配置为执行在计算机存储设备上编码的方法的动作。
这些和其他实施方式能够均可选地包括以下特征中的一个或多个。
在一些实施方式中,确定所述对芯片之间的往返数据传输的环路等待时间包括以下动作:将第一带时间戳数据(first timestamped data)从所述对芯片的第一芯片发送到所述对芯片的第二芯片;基于第一带时间戳数据,确定所述对芯片之间的第一相对单向等待时间;将第二带时间戳数据从第二芯片发送到第一芯片;基于第二带时间戳数据,确定所述对芯片之间的第二相对单向等待时间,以及基于第一相对单向等待时间和第二相对单向等待时间,确定所述对芯片之间的往返数据传输的环路等待时间。在一些实施方式中,第一带时间戳数据指示当第一带时间戳数据被发送时第一芯片的本地计数器时间。在一些实施方式中,确定所述对芯片之间的第一相对单向等待时间包括:当第二芯片接收到第一带时间戳数据时,计算所述带时间戳数据中指示的时间与第二芯片的本地计数器时间之间的差。在一些实施方式中,确定所述对芯片之间的往返数据传输的环路等待时间包括计算第一相对单向等待时间和第二相对单向等待时间之间的差。
在一些实施方式中,所述多个芯片中的一个或多个芯片是被配置为执行神经网络操作的专用集成电路(ASIC)芯片。
在第三总体方面,本说明书中描述的主题的创新特征能够体现在一种芯片间定时同步方法中,其包括以下动作:对于半导体器件的多个芯片中的每对芯片,确定从所述对芯片中的第一芯片到所述对芯片中的第二芯片的传输的第一单向等待时间,以及确定从所述对芯片中的第二芯片到所述对芯片中的第一芯片的传输的第二单向等待时间。所述动作包括在半导体器件驱动器处接收每对芯片的第一单向等待时间和第二单向等待时间。所述动作包括由半导体器件驱动器根据每对芯片各自的第一单向等待时间和第二单向等待时间来确定每对芯片之间的环路等待时间。所述动作包括:由半导体器件驱动器针对至少一对芯片,基于半导体器件的特性芯片间等待时间和所述至少一对芯片的第一单向等待时间来调整所述至少一对芯片中的第二芯片的本地计数器。该方面的其他实施方式包括对应的系统、装置和计算机程序,其被配置为执行在计算机存储设备上编码的方法的动作。
这些和其他实施方式能够均可选地包括以下特征中的一个或多个。
在一些实施方式中,所述动作包括由半导体器件驱动器确定每个环路等待时间小于或等于半导体器件的特性芯片间等待时间。
在一些实施方式中,调整所述至少一对芯片中的第二芯片的本地计数器包括使本地计数器的值增加调整值。在一些实施方式中,调整值等于半导体器件的特性芯片间等待时间加上从所述对中的第一芯片到所述对中的第二芯片的传输的第一单向等待时间。
在一些实施方式中,确定每对芯片之间的环路等待时间包括:对于每对芯片,计算与所述对芯片相关联的第一相对单向等待时间和与所述对芯片相关联的第二相对单向等待时间之间的差。
在一些实施方式中,确定从所述对中的第一芯片到所述对芯片中的第二芯片的传输的第一单向等待时间包括将第一带时间戳数据从第一芯片发送到第二芯片,以及基于第一带时间戳数据确定所述对芯片之间的第一相对单向等待时间。在一些实施方式中,第一带时间戳数据指示当第一带时间戳数据被发送时第一芯片的本地计数器时间。在一些实施方式中,确定所述对芯片之间的第一相对单向等待时间包括:当第二芯片接收到第一带时间戳数据时,计算所述带时间戳数据中指示的时间与第二芯片的本地计数器时间之间的差。
在一些实施方式中,所述多个芯片中的一个或多个芯片是被配置为执行神经网络操作的专用集成电路(ASIC)芯片。
在第四总体方面,本说明书中描述的主题的创新方面能够体现在一种用于在芯片之间发送数据的方法中,其包括在第一时间将数据从半导体器件的芯片的串联环路布置中的第一芯片发送到相邻的第二芯片的动作。所述动作包括将数据存储在第二芯片处的缓冲器中。所述动作包括在第二时间从缓冲器释放数据,其中,第一时间和第二时间之间的间隔基于芯片的串联环路布置的特性芯片间等待时间。所述动作包括将数据从第二芯片发送到第三芯片,第三芯片在芯片的串联环路布置中与第二芯片相邻。该方面的其他实施方式包括对应的系统、装置和计算机程序,其被配置为执行在计算机存储设备上编码的方法的动作。
这些和其他实施方式能够均可选地包括以下特征中的一个或多个。
在一些实施方式中,特性芯片间等待时间表示芯片的串联环路布置中的两个芯片之间的最大预期单向数据传输等待时间。
在一些实施方式中,第二时间是第二芯片的操作调度的预调度时间。
在一些实施方式中,所述动作包括沿着内部旁路路径将数据从第二芯片的缓冲器传递到耦接到第三芯片的第二芯片的通信接口。
在一些实施方式中,第一、第二和第三芯片中的一个或多个是被配置为执行神经网络操作的专用集成电路(ASIC)芯片。
各种实施方式提供了以下优点中的一个或多个。例如,在一些实施方式中,本文描述的过程使芯片间通信的潜在数据到达时间的变化最小化。减少数据通信的变化可以允许在系统的芯片中使用较小的接收数据缓冲器。在一些实施方式中,本文描述的过程使芯片之间的数据传输操作是确定性的。例如,实施方式可以使得程序编译器在计算接收芯片从输入缓冲器访问在特定时间从相邻芯片发送到接收芯片的数据的本地计数器时间时使用恒定的(例如,确定性的)等待时间。
在附图和以下描述中阐述了本发明的一个或多个实施例的细节。根据说明书、附图和权利要求书,其他特征和优点将是清楚的。
附图说明
图1是示出根据本公开的实施方式的示例多芯片系统的示意图。
图2是根据本公开的实施方式的用于表征多芯片系统中的最大等待时间的示例过程的流程图。
图3A-图3C示出了图示根据本公开的实施方式的两个芯片之间的环路等待时间测量的一系列框图。
图4是根据本公开的实施方式的用于使多芯片系统中的芯片的本地计数器同步的示例过程的流程图。
图5是根据本公开的实现的用于在多芯片系统中的芯片之间进行数据传输的示例过程的流程图。
图6A和6B示出了说明图5的数据传输过程的一系列框图。
图7是示出能够在图1的多芯片系统中使用的专用逻辑芯片的示例的示意图。
具体实施方式
总体上,本公开涉及多芯片系统中的芯片间时间同步和数据传输。更具体地,本公开提供了改善芯片之间(并且,在一些示例中,围绕芯片的串联环路拓扑)的数据传输的可预测性的芯片操作过程。本公开提供了用于同步系统中的芯片的本地计数器并且以考虑芯片间数据传输的数据到达时间的固有可变性的方式执行数据传输的示例过程,使得数据接收时间更多,并且在一些情况下,是完全确定的。
首先参考芯片间时间同步,时间同步包括两个方面。第一方面是处理系统上的各个芯片对之间的数据传输的芯片间等待时间的表征。该过程提供了板的操作特性(例如,最大芯片间等待时间),其用作每次板被引导时用于同步本地芯片计数器的常数。第二方面是当板被引导时同步本地芯片计数器(例如,“引导时间同步”)。
更具体地,必须针对板的每次重新设计完成表征过程。例如,最大芯片间等待时间通常是取决于板上芯片布局的物理特性。表征过程包括测量板上将参与彼此直接通信的芯片对(例如,相邻的芯片对)之间的传输的“往返”环路等待时间。此外,在包括以串联环路布置连接的芯片的实施方式中,表征过程还能够包括测量围绕整个环路的往返传输等待时间。从这些测量收集的数据能够用于确定将在任何两个芯片之间经历的最大芯片间等待时间。
每次板被引导、复位或两者时,执行引导时间同步以同步芯片的本地计数器。虽然每个芯片由与其他芯片的本地时钟同步的本地时钟计时(例如,每个芯片的时钟具有相同的频率和相位),但是芯片使用本地计数器来操作以对各个芯片操作进行计时,并且在引导板或芯片从复位出来时,各个计数器通常将处于不同的计数值。因此,引导时间同步用于近似同步芯片的本地计数值。
引导时间同步过程包括测量板上的芯片对之间的传输的单向等待时间。板驱动器基于已经为板表征的最大芯片间等待时间和每对中的芯片之间的单向等待时间之一来确定所述对中的一个芯片的本地计数器调整。例如,驱动器能够通过将计数器值增加最大芯片间等待时间和芯片之间的单向等待时间之一的总和来调整所述对中的芯片之一的本地计数器。在一些实施方式中,引导时间过程包括例如通过调整芯片之一的FIFO缓冲器来调整一个或多个芯片对之间的往返等待时间。
在一些实施方式中,半导体芯片能够是被设计为执行机器学习操作的专用集成电路(ASIC)。ASIC是为特定用途定制的集成电路(IC)。例如,ASIC可以被设计为执行机器学习模型的操作,包括例如将图像中的对象识别为深度神经网络、机器翻译、语音识别或其他机器学习算法的一部分。例如,当用作神经网络的加速器时,ASIC能够接收神经网络的输入并计算输入的神经网络推断。到神经网络层的数据输入(例如,到神经网络的输入或神经网络的另一层的输出)可以被称为激活输入。能够根据与神经网络的层相关联的权重输入的各个集合来计算推断。例如,所述层中的一些或全部可以接收激活输入的集合,并且根据所述层的权重输入的集合来处理所述激活输入以生成输出。此外,神经网络操作能够由ASIC的系统根据显式操作调度来执行。因此,ASIC芯片之间的确定性和同步数据传送能够提高神经网络操作的可靠性并简化调试操作。
图1是示出示例多芯片系统100的示意图。多芯片系统100能够是被配置为执行机器学习操作的集成电路网络。例如,多芯片系统100能够被配置以实现神经网络架构。多芯片系统包括多个半导体芯片102。芯片102能够是通用集成电路芯片或专用集成电路芯片。例如,芯片102中的一个或多个能够是ASIC、现场可编程门阵列(FPGA)、图形处理单元(GPU)或任何其他合适的集成电路芯片。时钟106耦接到每个芯片102以提供同步定时信号。例如,时钟106能够包括向每个芯片102提供公共定时信号(例如,1GHz时钟信号)的晶体振荡器。
系统100还包括系统驱动器104。系统驱动器104能够是例如外部计算系统,诸如膝上型计算机、台式计算机或服务器系统。系统驱动器104能够用于执行或管理本文所述的芯片同步过程或其部分。例如,系统驱动器104能够被配置为对芯片进行编程、管理系统100的引导操作、调试芯片或其组合。系统驱动器可以经由通信链路耦接到芯片102。系统驱动器104能够通过配置状态寄存器(例如,用于编程和调试芯片的低速接口)耦接到芯片102。
在所示示例中,多芯片系统100包括以串联环路拓扑布置的八个ASIC芯片102和一个FPGA芯片102。更具体地,每个芯片102与两个相邻芯片进行数据通信;每侧一个,使得数据从芯片围绕环路传送到相邻芯片。芯片102及其数据通信链路形成闭环路。此外,多芯片系统100包括每对芯片之间的两个数据路径;顺时针路径108和逆时针路径110。
在一些实施方式中,每个ASIC芯片(P0-P7)能够被配置为实现神经网络的层。输入激活数据可以由FPGA芯片104接收并发送到P0。例如,P0能够被配置为实现神经网络的输入层。P0将对激活数据执行计算以生成层输出数据,所述层输出数据将被发送到P1。P1能够被配置为实现神经网络的第一隐藏层,并且将对来自P0的输出执行计算,然后将其输出发送到由P2实现的下一个神经网络层。所述过程可以通过由神经网络的每个层处理的扩展,通过ASIC 102中的每一个来围绕环路继续。这样的过程可以依赖于相邻芯片之间(以及围绕整个环路)的数据传送的精确定时,以便神经网络可靠且准确地操作。因此,每个ASIC之间的数据传送的同步对于确保芯片之间的适当操作协调会是重要的。
同步系统中单个芯片内部的操作是同步的和确定性的,这意味着这种内部操作的定时没有变化。然而,对于诸如数据传输的芯片间操作,即使在同步系统中,操作的定时也存在固有的和非确定性的可变性。定时可变性的一个来源是两个相邻芯片之间的物理链路的属性,其能够在相邻芯片之间的数据传输的等待时间中引入例如约0-3个时钟周期的变化。定时可变性的第二个更大的来源是内部芯片操作与由多芯片系统实现的前向纠错方案之间缺乏同步。在前向纠错方案中,纠错数据被添加到芯片之间的数据传输中,但是添加的纠错数据不一定与数据传输同步。将非同步数据引入数据传输能够在相邻芯片之间的数据传输的等待时间中引入例如多达16个时钟周期的变化。
当数据从一个芯片发送到另一个非相邻芯片(例如,从P0到P7)时,每个芯片间传输(例如,从P0到P1、从P1到P2等)的等待时间的变化累积到目的地芯片(P7)处的累积等待时间中。仅以由于前向纠错引起的变化为例,单个芯片间传输(例如,从P0到P1)的等待时间具有±16个时钟周期的变化。然而,一些操作会需要将数据从一个芯片102发送到另一个非相邻芯片102,例如,从芯片P0到芯片P3,或者甚至围绕从第一芯片P0到最后一个芯片P7的环路。如下面更详细地讨论的,为了将数据从一个芯片发送到另一个非相邻芯片(例如,P0到P7),能够使用旁路操作通过中间芯片中的每一个(例如,通过芯片P1到P6)传输数据。然而,芯片之间的等待时间变化将累积跨8个芯片,其中,围绕环路的等待时间的总变化接近±128个时钟周期。下面描述的过程提高了芯片之间的数据传输的可预测性,并且在一些示例中,允许以确定性方式执行芯片间数据传输。
图2描绘了用于表征多芯片系统100中的最大等待时间的示例过程200的流程图。将参考图1、图2和图3A-图3B描述过程200。在一些实施方式中,过程200或其部分由系统驱动器104执行或控制。在一些示例中,过程200或其部分由多芯片系统100的各个芯片102执行。表征过程200用于确定多芯片系统设计的特性芯片间等待时间,例如最大芯片间等待时间(Lmax)。例如,可以针对初始芯片布置和/或新的系统拓扑执行过程200。
过程200的第一步骤包括确定多芯片系统100中每对芯片之间的环路等待时间(步骤202)。例如,如图1所示,所描绘的多芯片系统100具有十个单独的芯片间通信环路(112、114),其具有独立可测量的等待时间。在相邻芯片102之间有九个环路112,并且围绕整个环路有一个环路114。在多芯片系统中,绝对等待时间值可能仅在这些环路112、114中可测量,这是因为没有可用的公共时间基准。也就是说,尽管芯片112、114中的每一个由公共时钟106驱动,但是每个芯片112、114上的本地计数器不一定同步到相同的计数值。换言之,每个芯片112、114上的“本地时间”可以是不同的。如下面更详细描述的,测量环路等待时间而不是芯片之间的各个单向等待时间能够用于考虑每个芯片上的本地计数器之间的差异。
首先逆时针然后顺时针前进的九个单芯片环路112具有与首先顺时针的环路相同的等待时间,这是因为这些环路等待时间仅仅是每个方向上的等待时间的总和。同样,全系统逆时针环路114具有与所有九个单芯片环路112的总和减去顺时针系统环路114的等待时间相同的等待时间。测量围绕两个芯片之间的环路的不同方向上的等待时间差异不提供更多信息,这是因为这些差异能够从九个小环路112和单个系统环路114导出。
图3A-图3C示出了说明相邻芯片102之间的环路等待时间测量的一系列框图。图3A-图3C描绘了两个相邻芯片102:芯片A和芯片B的简化框图。每个芯片102包括控制芯片的本地操作的控制器304、本地计数器306和通信接口308。为了解释的清楚,通信接口308被表示为从发送器接口(Tx)到接收器接口(Rx)。通信接口308包括先进先出(FIFO)缓冲器。
为了测量环路等待时间,每个芯片例如通过引导芯片102来初始化其本地计数器306。如上所讨论,每个芯片的本地计数器306表示其本地时间。在一些实施方式中,芯片102在预先安排的计数器时间执行它们各自的操作(例如,计算、从输入缓冲器读取数据、以及将数据发送到其他芯片)。对于过程200,计数器306不需要以任何方式同步。例如,在图3A所示的示例中,芯片A的本地计数器306被初始化到时间0,并且芯片B的本地计数器306在时间150被初始化,因此芯片A和芯片B的本地计数器不同步150个时钟周期。下面讨论的引导同步过程用于同步芯片102中的本地计数器306。应当注意,出于解释的目的,图3A-图3C(以及图6A和图6B)中使用的计数器时间被简化。
参考图3B和图3C,为了测量芯片A和芯片B之间的往返等待时间,芯片A和芯片B执行一系列带时间戳数据传输,首先从芯片A到芯片B,然后从芯片B到芯片A。例如,第一芯片A将带时间戳数据309发送到芯片B,以便测量在第一方向上(例如,在顺时针数据路径108上从芯片A到芯片B)传输的相对单向等待时间。芯片A向芯片B发送数据309,所述数据309包括具有发送数据309时芯片A的本地计数器时间(例如10)的时间戳。为了解释的清楚,图3B仅示出了一个数据传输被发送到芯片A。实际上,例如,芯片A能够在512个周期的物理编码子层(PCS)周期中的不同点发送一系列数据传输309,每个数据传输在传输时用芯片A的本地计数器时间加时间戳。芯片B接收数据309并记录其自己的本地计数器时间(例如,180)。当数据308被发送时的芯片A的本地时间(例如,10)和当数据308被接收时的芯片B的本地时间(例如,180)之间的差等于从芯片A到芯片B的相对单向相对等待时间。例如,如图3B所示的相对单向等待时间是170个时钟周期。
如图3C所示,芯片B执行相同的过程来测量第二方向上(例如,在逆时针数据路径110上从芯片B到芯片A)的传输的相对单向等待时间。芯片B将数据310发送到芯片A,所述数据310包括具有数据310被发送时的芯片B的本地计数器时间(例如,200)的时间戳。为了解释的清楚,图3C仅示出了一个数据传输被发送到芯片A。实际上,例如,芯片B能够在512个周期的PCS周期中的不同点发送一系列数据传输,每个数据传输在传输时用芯片B的本地计数器时间加时间戳。芯片A接收数据310并记录其自己的本地计数器时间(例如,60)。当数据310被发送时的芯片B的本地时间(例如200)和当数据310被接收时的芯片A的本地时间(例如60)之间的差等于从芯片B到芯片A的方向上的相对单向相对等待时间。例如,如图3C所示的相对单向等待时间是~140个时钟周期。应当注意,由于两个相邻芯片102之间的本地计数器差异,相对单向等待时间能够是负的。
一旦执行了一系列数据传输,则每个芯片102(例如,芯片A和B)基于包括在数据(例如,数据308和数据310)中的时间戳值和当数据被接收时其自己的本地计数器时间来计算在一个方向上的相对单向等待时间。然后,每个芯片102能够识别其测量的最大相对单向等待时间,并将最大相对单向等待时间发送到系统驱动器104,以计算各自的最大环路等待时间。在一些实施方式中,每个芯片102将来自一系列传输中的每个传输的时间戳数据连同在每个传输被接收时其自己的相关联的本地计数器值一起发送到系统驱动器104。然后,系统驱动器104针对每对芯片计算每个方向上的相对单向等待时间,识别每个方向上的最大单向等待时间,并计算各个最大环路等待时间。
相对单向等待时间值本身没有意义,这是因为每个芯片102上的本地计数器将处于未知状态。但是当给定的一对芯片102之间的两个相对单向等待时间被求和时(例如,从芯片A到芯片B的相对单向等待时间与从B回到A的相对单向等待时间),本地计数器差抵消,仅留下围绕芯片A和芯片B之间的环路的绝对等待时间。
max(Rb-Sa)=Lab+Cba
max(Ra-Sb)=Lba–Cba;以及
Linter-chip_loop_max=max(Ra-Sb)+max(Rb-Sa)=Lab+Cba+Lba-Cba=Lab+Lba
Ra、Rb分别表示在芯片A或芯片B上接收到带时间戳数据的本地计数器时间(例如,在本示例中Ra是60并且Rb是180)。Sa、Sb分别表示当数据由芯片A或芯片B发送时的计数器时间(例如,在本示例中,Sa是10并且Sb是200)。Cba是芯片B的本地计数器时间与芯片A的本地计数器时间之间的计数器时间的差:Cba=Cb-Ca(这不是直接可观察的)(例如,在本示例中Cba是150)。Lab是从芯片A到芯片B的最大抖动绝对等待时间(这不是直接可观察的)。Lba是从芯片B到芯片A的最大抖动绝对等待时间(这不是直接可观察的)。max(Rb-Sa)表示从芯片A到芯片B的最大相对单向等待时间。max(Rb-Sa)是当从芯片A接收数据时芯片B的本地计数器时间与当发送数据时芯片A的本地计数器时间之间的差。这也等于在从芯片A到芯片B的方向上的实际等待时间(Lab)加上芯片B的计数器与芯片A的计数器之间的差(Cba)。Max(RA-SB)表示从芯片B到芯片A的最大相对单向等待时间。Max(RA-SB)是当从芯片B接收数据时芯片A的本地计数器时间与当发送数据时芯片B的本地计数器时间之间的差。这也等于在从芯片B到芯片A的方向上的实际等待时间(Lba)减去芯片B的计数器与芯片A的计数器之间的差(Cba)。该关系也可以重新表述为max(Ra-Sb)=Lba+Cab,其中,Cab是芯片A的计数器值减去芯片B的计数器值,例如,与Cba相反。简单地说,两个芯片上的本地计数器之间的偏移创建了一个方向上的传输的“加性”等待时间和相反方向上的传输的“减性”等待时间的出现。Linter-chip_loop_max表示两个芯片之间的给定环路112的最大环路等待时间。
在运行单个芯片到相邻环路112的若干测量之后,系统驱动器104识别所有芯片对中的最大环路等待时间(步骤204)。例如,系统驱动器104能够比较来自每对芯片之间的传输环路112中的每一个的最大测量环路等待时间,以识别最大芯片到芯片环路等待时间(Lloop_max)。
芯片102或系统驱动器104之一确定围绕整个环路114的数据传输的环路等待时间(步骤206)。例如,使用与关于图3A-图3C描述的技术类似的技术来测量和计算围绕整个环路的等待时间,只是带时间戳数据围绕整个环路传输并且在发送数据的相同芯片102处接收。围绕全环路环路(full ring loop)114测量的最大传输时间将是最大全环路等待时间(Lring_max)。因此,本地计数器差异不是关注点。
系统驱动器104确定多芯片系统100的特性芯片间等待时间(Lmax)(步骤208)。例如,系统驱动器104能够将最大芯片到芯片环路等待时间的一半与最大全环路等待时间的N分之一进行比较,其中,N是多芯片系统100中的芯片102的总数,以估计系统100中的最大单向等待时间。这两个值中的较大值是多芯片系统100的特性芯片间等待时间(Lmax)。系统驱动器104能够存储特性芯片间等待时间以用于将来的操作。例如,如以下所讨论,特性芯片间等待时间将是在诸如引导时间同步和数据传输的其他操作中使用的常数。在一些实施方式中,编译器还使用特性芯片间等待时间来为每个芯片102生成操作调度,以执行特定的软件应用,例如特定的机器学习算法。例如,特性芯片间等待时间表示将数据从一个芯片传送到相邻芯片所花费的最长时间。编译器能够使用特性芯片间等待时间来调度接收芯片以在相邻芯片已经发送数据之后从输入FIFO缓冲器读取数据,并且确保所有数据在调度的读取时间之前已经到达。
在一些实施方式中,Lmax能够通过设计因子来增加,以考虑在表征过程期间可能尚未测量的任何变化。例如,所测量的Lmax可能不考虑相邻芯片之间的数据传输的等待时间中的最大可能变化。因此,在一些实施方式中,能够增加Lmax以确保多芯片系统100所经历的实际芯片间等待时间将不超过Lmax的值。
图4是用于同步多芯片系统100中的芯片的本地计数器的示例过程400的流程图。将参考图1、图3A-图3B和图4描述过程400。在一些实施方式中,过程400或其部分由系统驱动器104执行或控制。在一些示例中,过程400或其部分由多芯片系统100的各个芯片102执行。同步过程400用于同步多芯片系统100中的芯片102的本地计数器306。过程400能够在系统100被引导时执行,并且因此被称为“引导同步”过程。然而,过程400也能够在其他时间执行,例如,在多芯片系统被复位的情况下。
对于每对芯片,确定从所述对中的第一芯片(例如,芯片A)到所述对中的第二芯片(例如,芯片B)的数据传输的第一相对单向等待时间(步骤402a),并且确定从所述对中的第二芯片(例如,芯片B)到所述对中的第一芯片(例如,芯片A)的数据传输的第二相对单向等待时间(步骤402b)。例如,能够确定两个芯片之间的顺时针数据路径108上的相对单向等待时间,然后能够确定两个芯片之间的逆时针数据路径110上的相对单向等待时间。能够例如使用上面参考图3A-图3C描述的技术来测量第一和第二相对单向等待时间。芯片102将测量的相对单向等待时间发送回系统驱动器104。在一些实施方式中,系统驱动器104控制各个芯片102执行相对单向等待时间测量。在一些实施方式中,各个芯片102包括控制各个芯片102在系统被引导或复位时执行相对单向等待时间测量的软件(例如,固件)。
系统驱动器104确定每对芯片之间的环路等待时间(步骤404)。例如,系统驱动器104能够基于在一对芯片之间测量的各个相对单向等待时间来确定所述对芯片之间的环路等待时间。例如,系统驱动器104能够使用等式Lloop=(Ra-Sb)+(Rb-Sa)来计算给定的一对芯片之间的环路等待时间。系统驱动器104能够针对多芯片系统100中的各对芯片之间的每个环路112重复计算。
可选地,系统驱动器104确认每个环路等待时间小于或等于多芯片系统的特性芯片间等待时间(Lmax)(步骤406)。例如,系统驱动器104能够将计算的每对芯片的环路等待时间与存储的特性芯片间等待时间的值进行比较。在一些实施方式中,如果所计算的环路等待时间中的任何环路等待时间大于特性芯片间等待时间,则系统驱动器104可以重新执行环路等待时间测量。例如,系统驱动器104可以促使步骤402和404被重新执行。在一些实施方式中,如果所计算的环路等待时间中的任何环路等待时间大于特性芯片间等待时间,则系统驱动器104可以生成错误信号。
系统驱动器104通过基于特性芯片间等待时间(Lmax)调整一个或多个芯片的本地计数器来同步芯片102(步骤408)。例如,参考图1,可以选择多芯片系统100的一个芯片102作为参考芯片。例如,参考芯片的计数器值将用作用于调整多芯片系统100中的其他芯片102的各个本地计数器306以便同步芯片102的基础。在本示例中,FPGA芯片将用作参考芯片。系统驱动器104从参考芯片开始以成对方式调整本地计数器。系统驱动器104基于Lmax和所测量的芯片之间的单向等待时间之一来调整每对相邻芯片中的一个芯片的本地计数器时间。例如,从FPGA和P0开始,系统驱动器104基于Lmax和测量的从FPGA到P0的数据传输的单向等待时间(例如,测量的沿着顺时针数据路径108的数据传输的单向等待时间)来调整P0的本地计数器时间。在P0中的本地计数器被调整之后,系统驱动器104调整芯片P1的本地计数器。例如,系统驱动器104基于Lmax和测量的从P0到P1的数据传输的单向等待时间来调整P1的本地计数器时间。系统驱动器104重复该过程以调整围绕环路的每个芯片102的本地计数器,直到所有芯片已经同步。然而,不调整FPGA(例如,参考芯片)的本地计数器。
更具体地,使用图3A和图3B中所示的示例,系统驱动器104基于Lmax和测量的两个芯片之间的相对单向等待时间之一来调整一对芯片中的一个芯片的本地计数器时间。系统驱动器104能够通过将计数器值增加Lmax减去测量的从所述对中的一个芯片到其本地计数器正在被调整的芯片的相对单向等待时间来调整芯片的本地计数器306。也就是说,新计数器值(Tnew)能够由下式确定:Tnew=Told+Lmax–(Rb-Sa),其中,Told是原始计数器值,并且,(Rb-Sa)表示由其计数器正在被调整的芯片测量的相对单向等待时间。例如,在图3B中,从芯片A到芯片B的相对单向等待时间被测量为170。假设Lmax为30,则对芯片B的计数器的调整将是Lmax–(Rb-Sa)或30-170=-140。因此,系统驱动器104将芯片B的本地计数器增加-140个计数(例如,将本地计数器减少140)。使用最简单的情况作为示例(例如,图3A中所示的计数器时间),系统驱动器104将芯片B的本地计数器从150调整到10。尽管芯片B的本地计数器的调整值与芯片A的本地计数器的值(例如,0)不同,但出于本公开的目的,能够认为两个芯片是同步的。例如,同步过程不一定迫使两个芯片的本地计数器相等,而是使跨多芯片系统的每对芯片之间的数据传输等待时间同步,使得每对芯片之间的最大相对单向等待时间小于或等于Lmax
在一些实施方式中,还能够调整芯片102的Rx通信接口308处的FIFO缓冲器。例如,系统驱动器102能够通过增加或减少接收缓冲器大小(例如,以4ns的增量添加或去除等待时间)来调整感知的芯片间链路之间的等待时间,直到芯片环路112都具有范围[2Lmax-3,2Lmax]中的环路等待时间。因此,全系统环路114然后将具有在[NLmax-3,NLmax]范围内的环路等待时间,其中,N是环路中的芯片数量。通常,将仅需要添加等待时间,但是可能需要从一些逆时针指向的数据路径110中去除等待时间,例如,在所有双芯片环路都在其限制内,但是整个系统顺时针环路114需要更多的等待时间的情况下。在这种情况下,系统驱动器104能够去除一些逆时针数据路径110上的一些等待时间(例如,通过减少与逆时针数据路径110相连的芯片的接收缓冲器中的一个或多个,并将相同量的等待时间添加到顺时针链路(例如,通过增加适当的接收数据缓冲器)),从而保留每个双芯片环路112上的等待时间,同时增加顺时针系统环路114上的等待时间。在一些实施方式中,能够通过增加或减少适当的发送器FIFO缓冲器大小来调整等待时间,而不是调整接收器侧FIFO缓冲器,或者除了调整接收器侧FIFO缓冲器之外,还能够通过增加或减少适当的发送器FIFO缓冲器大小来调整等待时间。
参考图1,即使在芯片102已经同步之后,也会需要解决芯片到芯片和数据传输中的一个或多个其他剩余变化。例如,可能需要解决由于前向纠错(FEC)操作而引起的时延变化。这种变化对从一个芯片到另一个非相邻芯片的传输的影响大于对相邻芯片之间的传输的影响。例如,为了将数据从一个芯片发送到另一个非相邻芯片(例如,围绕从第一芯片P0到最后一个芯片P7的环路),能够使用旁路操作通过中间芯片中的每一个(例如,通过芯片P1到P6)传输数据。相邻芯片之间的每个数据路径的等待时间具有恒定和可变分量。可变分量的确切值会难以确定或不可能确定。当例如在旁路操作中将数据从一个芯片(例如P0)发送到另一个非相邻芯片(例如P7)时,等待时间的累积变化是在其上发送数据的每个链路的等待时间变化的总和。在目的地芯片(例如,P7)处,等待时间的累积变化会是显著的,从而导致所发送的数据在目的地芯片(例如,P7)处的到达时间的大量可变性。在同步系统中,到达时间的这种可变性会使得有必要在目的地处对数据进行大量缓冲。为了消除由等待时间的累积变化引起的目的地芯片(例如,P7)处的到达时间的可变性,能够对来自每个芯片102的数据传输施加延迟。在每个芯片102处引入延迟消除了等待时间变化的影响,并且数据在目的地芯片处的到达时间变得确定并且与同步系统兼容。
在一些实施方式中,延迟由程序编译器内置到每个芯片的操作中。例如,程序编译器使用Lmax来生成程序指令作为每个芯片的显式调度操作。如下文参考图5、图6A和图6B更详细描述的,每个芯片能够经预调度以在将数据发送到所述芯片之后的最大芯片间等待时间(例如,Lmax)的时间重新发送从相邻芯片接收的数据。例如,能够预先调度芯片P0的操作以在本地计数器时间t向芯片P1发送数据。然后,芯片P1将被预先调度以在本地计数器时间t+Lmax将数据重新发送到芯片P2。
定时可变性的一个来源是两个相邻芯片之间的物理链路的属性(例如,PCS抖动),其能够引入相邻芯片102之间的数据传输的等待时间的变化。这种可变性的来源通过上述系统表征和同步过程(200和400)来解决。然而,定时可变性的第二来源是内部芯片操作与由多芯片系统100实施的前向纠错方案之间缺乏同步。在前向纠错方案中,纠错数据被添加到芯片102之间的数据传输中,但是添加的纠错数据不一定与数据传输同步。将非同步数据引入数据传输能够在相邻芯片之间的数据传输的等待时间中引入例如多达16个时钟周期的变化。
当数据被从一个芯片102发送到另一个非相邻芯片102(例如,从P0到P7)时,每个芯片间传输(例如,从P0到P1、从P1到P2等)的等待时间的变化累积到目的地芯片(P7)处的累积等待时间中。仅以由于前向纠错引起的变化作为示例,单个芯片间传输(例如,从P0到P1)的等待时间具有±16个时钟周期的变化。然而,一些操作会需要将数据从一个芯片102发送到另一个非相邻芯片102,例如,从芯片P0发送到芯片P3,或者甚至围绕从第一芯片P0到最后一个芯片P7的环路。如下面更详细讨论的,为了将数据从一个芯片发送到另一个非相邻芯片(例如,从P0到P7),能够使用旁路操作通过中间芯片中的每一个(例如,通过芯片P1到P6)发送数据。然而,芯片之间的等待时间变化将跨8个芯片累积,其中,围绕环路的等待时间的总变化接近±128个时钟周期。为了使目的地芯片处的到达时间的这种大的可变性与同步系统兼容,能够通过增加每个芯片102上的接收FIFO缓冲器大小来在接收器接口(例如,RX通信接口308)处实现大量的数据缓冲。
然而,通过防止在整个多芯片数据传输过程中等待时间变化的累积,能够避免额外的缓冲。为了实现这一点,能够在每个芯片102处的数据传输操作中引入少量延迟,使得每对相邻芯片102之间的数据传输的等待时间是固定的而不是可变的。具体地,如上所述确定最大芯片间等待时间(Lmax)。在数据传输期间,当在旁路操作中在芯片102处接收到数据时,将数据存储在接收缓冲器(诸如FIFO缓冲器)中,而不是立即发送到下一个芯片。仅在自从在前一芯片102处发起数据传输以来已经过去最大芯片间等待时间(例如,Lmax)之后,才从缓冲器释放数据。在控制数据传输过程中的每个旁路操作的定时时,整个数据传输过程的确切时间量将接着为已知值,意味着在目的地芯片102处感知的数据的到达时间中不存在变化。
图5是用于在多芯片系统100中的芯片之间进行数据传输的示例过程500的流程图。将参考图1、图5和图6A-图6B描述过程500。图6A和6B示出了说明数据传输过程500的一系列框图。所述框图类似于图3A-3C中的框图,只是标记了内部旁路数据路径602和604。例如,芯片102能够包括在两个方向上的旁路数据路径,其允许芯片102直接将数据路由到环路拓扑中的下一个芯片。
过程500或其部分由多芯片系统100的各个芯片102执行。数据传输过程500用于减少多芯片系统100中的目的地芯片102处的数据到达时间的可变性,以便使芯片102之间的数据通信更具确定性。此外,数据传输过程500可以减小每个芯片102上所需的数据输入缓冲器大小。过程500还允许由多芯片系统100中的每个芯片102执行的操作序列被预先调度并且在预先调度的本地计数器时间处执行。
如图6A和图6B所示,将数据606从第一芯片(例如,芯片A)发送到第二芯片(例如,芯片B)(步骤502)。例如,数据606是旨在系统100中的另一芯片102而不是用于芯片B的旁路数据。芯片B接收数据606,并将数据606存储在缓冲器中(步骤504)。例如,芯片B将数据606存储在FIFO缓冲器中。芯片B存储数据,直到从芯片A发送数据时起经过了最大芯片间等待时间为止。在所说明的示例中,芯片B在本地计数器时间32接收数据606,且最大芯片间等待时间假定为Lmax=30个计数器周期。因此,芯片B直到例如本地计数器时间40(例如,40=当数据606被发送到芯片B时芯片A的本地计数器时间(10)加上最大芯片间等待时间(30))才将数据606发送到系统100中的下一个芯片(例如,芯片C)。这表示八个计数器周期的示例性延迟时间。
在从第一芯片(例如,芯片A)发送数据606时起经过了最大芯片间等待时间(例如,Lmax)之后,第二芯片(例如,芯片B)从缓冲器释放存储的数据(步骤506),并将释放的数据608(图6B)发送到第三芯片(例如,芯片C)(步骤508)。例如,在从芯片A将数据606发送到芯片B时起已经过去了芯片B的计数器的30个周期之后,芯片B能够从其FIFO缓冲器释放数据606,沿着内部旁路路径602传递数据,并将数据(在图6B中示出为608)发送到芯片C。
在一些实施方式中,以预定计数器值显式地调度芯片操作。因此,例如,用于将旁路数据存储在给定芯片缓冲器中的延迟时间在调度操作中被考虑。例如,参考上文所描述的示例,芯片A的调度操作指令将指示芯片A在芯片A的本地计数器时间10将数据606发送到芯片B。芯片B的调度操作指令将指示芯片B从其输入缓冲器释放数据606,并在芯片B的本地计数器时间40将数据重新发送到芯片C。因此,芯片B不需要在内部计算用于重新发送数据606的延迟时间。
图7是示出能够用作图1的系统100中的芯片102之一(例如,ASIC芯片P0-P7)的专用逻辑芯片(例如,ASIC 700)的示例的示意图。ASIC 700包括多个瓦片(tile)702,其中,瓦片702中的一个或多个包括被配置为执行操作(例如,乘法和加法操作)的专用电路。特别地,每个瓦片702能够包括单元的计算阵列(例如,类似于图1的计算单元24),其中,每个单元被配置为执行数学运算(参见例如图4中所示并在本文中描述的示例性瓦片200)。在一些实施方式中,瓦片702以网格图案布置,其中,瓦片702沿着第一维度701(例如,行)和沿着第二维度703(例如,列)布置。例如,在图7所示的示例中,瓦片702被划分为四个不同的部分(710a、710b、710c、710d),每个部分包含288个瓦片,其以18个瓦片向下乘以16个瓦片的网格布置。在一些实施方式中,图7所示的ASIC 700可以被理解为包括细分/布置成单独的片的单元的单个收缩(systolic)阵列,其中,每个瓦片包括单元的子集/子阵列、本地存储器和总线线路(参见例如图4)。
ASIC 700还包括向量处理单元704。向量处理单元704包括被配置为从瓦片702接收输出并基于从瓦片702接收的输出来计算向量计算输出值的电路。例如,在一些实施方式中,向量处理单元704包括被配置为对从瓦片702接收的输出执行累加操作的电路(例如,乘法电路、加法器电路、移位器和/或存储器)。可替代地或另外地,向量处理单元704包括被配置为将非线性函数应用于瓦片702的输出的电路。可替代地或另外地,向量处理单元704生成归一化值、池化值或两者。向量处理单元的向量计算输出能够存储在一个或多个瓦片中。例如,向量计算输出能够存储在与瓦片702唯一相关联的存储器中。可替代地或另外地,向量处理单元704的向量计算输出能够被传送到ASIC 700外部的电路,例如,作为计算的输出。
在一些实施方式中,向量处理单元704被分段,使得每个分段包括被配置为从对应的瓦片集合702接收输出并且基于接收的输出来计算向量计算输出的电路。例如,在图7所示的示例中,向量处理单元704包括沿着第一维度701跨越的两行,每行包括以32列布置的32个段706。每个段706包括电路(例如,乘法电路、加法器电路、移位器和/或存储器),其被配置为基于来自对应列的瓦片702的输出(例如,累加和)来如本文所解释的执行向量计算。向量处理单元704能够位于瓦片702的网格的中间,如图7所示。向量处理单元704的其他位置布置也是可能的。
ASIC 700还包括通信接口708(例如,接口7010a、7010b)。通信接口708包括一组或多组串行器/解串器(SerDes)接口和通用输入/输出(GPIO)接口。SerDes接口被配置为接收ASIC 700的输入数据并将数据从ASIC 700输出到外部电路。例如,SerDes接口能够被配置为通过包括在通信接口708内的SerDes接口集合以32Gbps、56Gbps的速率或任何合适的数据速率发送和接收数据。例如,ASIC 700可以在其被接通时运行引导程序。GPIO接口可以用于将指令(例如,操作调度)加载到ASIC 700上并与系统驱动器104通信以执行引导同步过程(例如,过程400)。
ASIC 700还包括多个可控总线线路(参见例如图4),其被配置为在通信接口708、向量处理单元704和多个瓦片702之间传送数据。可控总线线路包括例如沿着网格的第一维度701(例如,行)和网格的第二维度703(例如,列)两者延伸的导线。沿着第一维度701延伸的可控总线线路的第一子集能够被配置为在第一方向上(例如,向图7的右侧)传送数据。沿着第一维度701延伸的可控总线线路的第二子集能够被配置为在第二方向上(例如,向图7的左侧)传送数据。沿着第二维度703延伸的可控总线线路的第一子集能够被配置为在第三方向(例如,到图7的顶部)上传送数据。沿着第二维度703延伸的可控总线线路的第二子集能够被配置为在第四方向(例如,到图7的底部)上传送数据。
每个可控总线线路包括多个传送器元件,诸如触发器,其用于根据时钟信号沿着线路传送数据。通过可控总线线路传送数据能够包括在每个时钟周期将数据从可控总线线路的第一传送器元件移位到可控总线线路的第二相邻传送器元件。在一些实施方式中,在时钟周期的上升沿或下降沿通过可控总线传送数据。例如,在第一时钟周期存在于可控总线线路的第一传送器元件(例如,触发器)上的数据能够在第二时钟周期被传送到可控总线线路的第二传送器元件(例如,触发器)。在一些实施方式中,传送器元件能够彼此以固定距离周期性地间隔开。例如,在一些情况下,每个可控总线线路包括多个传送器元件,其中,每个传送器元件定位在对应的瓦片702内或附近。
为了最小化与ASIC芯片700的内部操作相关联的等待时间,能够定位瓦片702和向量处理单元704以减少数据在各种组件之间行进的距离。在特定实施方式中,瓦片702和通信接口708两者能够被分成多个区段,其中,瓦片区段和通信接口区段两者被布置成使得数据在瓦片和通信接口之间行进的最大距离被减小。例如,在一些实施方式中,第一组贴片702能够布置在通信接口708的第一侧上的第一区段中,并且,第二组贴片702能够布置在通信接口的第二侧上的第二区段中。结果,与其中所有瓦片702被布置在通信接口的一侧上的单个区段中的配置相比,从通信接口到最远瓦片的距离可以被减半。
可替代地,瓦片可以布置在不同数量的区段中,例如四个区段。例如,在图7所示的示例中,ASIC 700的多个瓦片702布置在多个区段710(710a、710b、710c、710d)中。每个区段710包括以网格图案布置的类似数量的瓦片702(例如,每个区段710能够包括以16行和16列布置的256个瓦片)。通信接口708还被分成多个区段:布置在瓦片702的区段710的任一侧上的第一通信接口7010A和第二通信接口7010B。第一通信接口7010A能够通过可控总线线路耦接到ASIC芯片700左侧的两个瓦片区段710a、710c。第二通信接口7010B能够通过可控总线线路耦接到ASIC芯片700右侧的两个瓦片区段710b、710d。结果,与仅单个通信接口可用的布置相比,数据行进到通信接口708和/或从通信接口708行进的最大距离(以及因此与数据传播相关联的等待时间)能够减半。瓦片702和通信接口708的其他耦接布置也可以减少数据等待时间。能够通过向可控总线线路的传送器元件和多路复用器提供控制信号来对瓦片702和通信接口708的耦接布置进行编程。
在一些实施方式中,一个或多个瓦片702被配置为发起关于可控总线线路和/或ASIC 700内的其他瓦片(在本文中称为“控制瓦片”)的读取和写入操作。ASIC 700内的剩余瓦片能够被配置为基于输入数据执行计算(例如,以计算层推断)。在一些实施方式中,控制瓦片包括与ASIC 700内的其他瓦片相同的组件和配置。控制瓦片能够作为ASIC 700的一个或多个额外瓦片、一个或多个额外行或一个或多个额外列添而加。例如,对于瓦片702的对称网格,其中,每个瓦片702被配置为对输入数据执行计算,能够包括一个或多个附加行的控制瓦片,以处理对输入数据执行计算的瓦片702的读取和写入操作。例如,每个区段710包括18行瓦片,其中,最后两行瓦片可以包括控制瓦片。在一些实施方式中,提供单独的控制瓦片增加了用于执行计算的其他瓦片中可用的存储器量。然而,专用于提供如本文所述的控制的单独瓦片不是必需的,并且,在一些情况下,不提供单独的控制瓦片。相反,每个瓦片可以在其本地存储器中存储用于启动针对所述瓦片的读取和写入操作的指令。
此外,虽然图7中所示的每个区段710包括以18行乘16列布置的瓦片,但是瓦片702的数量及其在区段中的布置能够是不同的。例如,在一些情况下,区段710可以包括相等数量的行和列。
此外,尽管在图7中被示出为被划分为四个区段,但是瓦片702能够被划分为其他不同的分组。例如,在一些实施方式中,瓦片702被分组成两个不同的区段,诸如在向量处理单元704上方的第一区段(例如,更靠近图7中所示的页面的顶部)和在向量处理单元704下方的第二区段(例如,更靠近图7中所示的页面的底部)。在这样的布置中,每个区段可以包含例如596个瓦片,其以(沿着方向703)的18个瓦片向下乘以跨越(沿着方向701)的32个瓦片的网格来布置。区段可以包含其他总数的瓦片,并且可以以不同大小的阵列布置。在一些情况下,各区段之间的划分由ASIC 700的硬件特征来描绘。例如,如图7所示,区段710A、710B可以通过向量处理单元704与区段710C、710D分离。
本说明书中描述的主题和功能操作的实施例能够在数字电子电路中、在计算机硬件中实现,包括本说明书中公开的结构及其结构等同物,或者它们中的一个或多个的组合。本说明书中描述的主题的实施例能够实现为一个或多个计算机程序,即,在有形非暂时性程序载体上编码的计算机程序指令的一个或多个模块,用于由数据处理装置执行或控制数据处理装置的操作。可替代地或另外地,程序指令能够被编码在人工生成的传播信号上,例如,机器生成的电、光或电磁信号,其被生成以对信息进行编码以发送到合适的接收器装置以供数据处理装置执行。计算机存储介质能够是机器可读存储设备、机器可读存储基板、随机或串行存取存储器设备或它们中的一个或多个的组合。
术语“数据处理装置”包括用于处理数据的所有类型的装置、设备和机器,包括例如可编程处理器、计算机或多个处理器或计算机。所述装置能够包括专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC。除了硬件之外,所述装置还能够包括为所讨论的计算机程序创建执行环路境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一个或多个的组合的代码。
本说明书中描述的过程和逻辑流程能够由执行一个或多个计算机程序的一个或多个可编程计算机执行,以通过对输入数据进行操作并生成输出来执行功能。过程和逻辑流程也能够由专用逻辑电路执行,并且装置也能够实现为专用逻辑电路,例如FPGA、ASIC或GPGPU(通用图形处理单元)。
虽然本说明书包含许多具体实施方式细节,但是这些不应被解释为对任何发明或可能要求保护的范围的限制,而是作为可能特定于特定发明的特定实施例的特征的描述。在本说明书中在单独实施例的上下文中描述的某些特征也能够在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也能够单独地或以任何合适的子组合在多个实施例中实现。此外,尽管上文可以将特征描述为以某些组合起作用并且甚至最初如此要求保护,但是在一些情况下能够从组合中删除来自所要求保护的组合的一个或多个特征,并且所要求保护的组合可以涉及子组合或子组合的变体。
类似地,虽然在附图中以特定顺序描绘了操作,但是这不应被理解为要求以所示的特定顺序或按顺序执行这些操作,或者执行所有示出的操作,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中都需要这种分离,并且应当理解,所描述的程序组件和系统通常能够一起集成在单个软件产品中或封装到多个软件产品中。
已经描述了主题的特定实施例。其它实施例在以下权利要求书的范围内。例如,尽管总线线路被描述为“可控的”,但并非所有总线线路都需要具有相同的控制水平。例如,能够存在不同程度的可控性,其中,一些总线线路能够仅在一些总线线路在它们能够从其获取数据或它们可以向其发送数据的瓦片的数量方面受到限制的情况下被控制。在另一个示例中,一些总线线路可以专用于沿着单个方向(例如,如本文所述的北、东、西或南)提供数据。在一些情况下,权利要求中记载的动作能够以不同的顺序执行,并且仍然实现期望的结果。作为一个示例,附图中描绘的过程不一定需要所示的特定顺序或相继顺序来实现期望的结果。在某些实施方式中,多任务和并行处理可能是有利的。

Claims (20)

1.一种芯片间等待时间表征方法,包括:
针对半导体器件的多个芯片中的每对芯片,确定围绕通过所述多个芯片的传输路径的所述对芯片之间的往返数据传输的对应环路等待时间;
从环路等待时间中识别最大环路等待时间;
确定源自所述多个芯片中的芯片的数据传输的全路径等待时间,所述数据传输将围绕所述路径被发送并返回到所述芯片;
将最大环路等待时间的一半与全路径等待时间的N分之一进行比较,其中,N是芯片的传输路径中的芯片数量,以及将较大值存储为半导体器件的芯片间等待时间,所述芯片间等待时间表示半导体器件的操作特性。
2.根据权利要求1所述的方法,其中,确定所述对芯片之间的往返数据传输的环路等待时间包括:
将第一带时间戳数据从所述对芯片中的第一芯片发送到所述对芯片中的第二芯片;
基于第一带时间戳数据,确定所述对芯片之间的第一相对单向等待时间;
将第二带时间戳数据从第二芯片发送到第一芯片;
基于第二带时间戳数据,确定所述对芯片之间的第二相对单向等待时间,以及
基于第一相对单向等待时间和第二相对单向等待时间,确定所述对芯片之间的往返数据传输的环路等待时间。
3.根据权利要求2所述的方法,其中,第一带时间戳数据指示当第一带时间戳数据被发送时第一芯片的本地计数器时间。
4.根据权利要求2或3中任一项所述的方法,其中,确定所述对芯片之间的第一相对单向等待时间包括:当第二芯片接收到第一带时间戳数据时,计算带时间戳数据中指示的时间与第二芯片的本地计数器时间之间的差。
5.根据权利要求2至4中任一项所述的方法,其中,确定所述对芯片之间的往返数据传输的环路等待时间包括计算第一相对单向等待时间和第二相对单向等待时间之间的差。
6.根据前述权利要求中任一项所述的方法,其中,所述多个芯片中的一个或多个芯片是被配置为执行神经网络操作的专用集成电路(ASIC)芯片。
7.一种芯片间定时同步方法,包括:
对于半导体器件的多个芯片中的每对芯片:
确定从所述对芯片中的第一芯片到所述对芯片中的第二芯片的传输的第一单向等待时间,以及
确定从所述对芯片中的第二芯片到所述对芯片中的第一芯片的传输的第二单向等待时间;
在半导体器件驱动器处接收每对芯片的第一单向等待时间和第二单向等待时间;
由半导体器件驱动器从每对芯片各自的第一单向等待时间和第二单向等待时间来确定每对芯片之间的环路等待时间;
由半导体器件驱动器针对至少一对芯片,基于半导体器件的特性芯片间等待时间和所述至少一对芯片的第一单向等待时间来调整所述至少一对芯片中的第二芯片的本地计数器。
8.根据权利要求7所述的方法,还包括:由半导体器件驱动器确定每个环路等待时间小于或等于半导体器件的特性芯片间等待时间。
9.根据权利要求7或8所述的方法,其中,调整所述至少一对芯片中的第二芯片的本地计数器包括将本地计数器的值增加调整值。
10.根据权利要求9所述的方法,其中,调整值等于半导体器件的特性芯片间等待时间加上从所述对中的第一芯片到所述对中的第二芯片的传输的第一单向等待时间。
11.根据权利要求7至10中任一项所述的方法,其中,确定每对芯片之间的环路等待时间包括:对于每对芯片,计算与所述对芯片相关联的第一相对单向等待时间和与所述对芯片相关联的第二相对单向等待时间之间的差。
12.根据权利要求7至11中任一项所述的方法,其中,确定从所述对芯片中的第一芯片到所述对芯片中的第二芯片的传输的第一单向等待时间包括:
将第一带时间戳数据从第一芯片发送到第二芯片;以及
基于第一带时间戳数据确定所述对芯片之间的第一相对单向等待时间。
13.根据权利要求12所述的方法,其中,第一带时间戳数据指示当第一带时间戳数据被发送时第一芯片的本地计数器时间。
14.根据权利要求12或13中任一项所述的方法,其中,确定所述对芯片之间的第一相对单向等待时间包括:当第二芯片接收到第一带时间戳数据时,计算带时间戳数据中指示的时间与第二芯片的本地计数器时间之间的差。
15.根据权利要求7至14中任一项所述的方法,其中,所述多个芯片中的一个或多个芯片是被配置为执行神经网络操作的专用集成电路(ASIC)芯片。
16.一种用于在芯片之间发送数据的方法,所述方法包括:
在第一时间将数据从半导体器件的芯片的串联环路布置中的第一芯片发送到相邻的第二芯片;
将数据存储在第二芯片处的缓冲器中;
在第二时间从缓冲器释放数据,其中,第一时间和第二时间之间的间隔是基于芯片的串联环路布置的特性芯片间等待时间;以及
将数据从第二芯片发送到第三芯片,第三芯片在芯片的串联环路布置中与第二芯片相邻。
17.根据权利要求16所述的方法,其中,特性芯片间等待时间表示芯片的串联环路布置中的两个芯片之间的最大预期单向数据传输等待时间。
18.根据权利要求16或17中任一项所述的方法,其中,第二时间是第二芯片的操作调度的预调度时间。
19.根据权利要求16至18中任一项所述的方法,还包括:沿着内部旁路路径将数据从第二芯片的缓冲器传递到耦接到第三芯片的第二芯片的通信接口。
20.根据权利要求16至19中任一项所述的方法,其中,第一芯片、第二芯片和第三芯片中的一个或多个是被配置为执行神经网络操作的专用集成电路(ASIC)芯片。
CN202080047570.XA 2019-08-16 2020-08-14 多芯片系统中的芯片间等待时间特性 Pending CN114026553A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201962887783P 2019-08-16 2019-08-16
US62/887,783 2019-08-16
PCT/US2020/046405 WO2021034680A1 (en) 2019-08-16 2020-08-14 Inter-chip latency characteristic in multi-chip system

Publications (1)

Publication Number Publication Date
CN114026553A true CN114026553A (zh) 2022-02-08

Family

ID=72292631

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080047570.XA Pending CN114026553A (zh) 2019-08-16 2020-08-14 多芯片系统中的芯片间等待时间特性

Country Status (9)

Country Link
US (3) US11372801B2 (zh)
EP (2) EP3958137A1 (zh)
JP (2) JP7367079B2 (zh)
KR (1) KR20220010563A (zh)
CN (1) CN114026553A (zh)
DK (1) DK3857394T3 (zh)
FI (1) FI3857394T3 (zh)
TW (2) TWI802814B (zh)
WO (1) WO2021034680A1 (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030048754A1 (en) * 2001-09-04 2003-03-13 Leon Bruckman Latency evaluation in a ring network
CN1494688A (zh) * 2001-02-24 2004-05-05 �Ҵ���˾ 新颖的大规模并行超级计算机
CN101226765A (zh) * 2006-11-21 2008-07-23 三星电子株式会社 多芯片封装快闪存储器器件以及从中读取状态数据的方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09142257A (ja) 1995-11-22 1997-06-03 Tokai Rika Co Ltd 送受信システム
US7231538B2 (en) 2003-11-06 2007-06-12 Mentor Graphics (Holdings) Ltd. Synchronized communication between integrated circuit chips
JP5167589B2 (ja) 2006-02-13 2013-03-21 富士通株式会社 アプリケーションサーバ装置および仮想マシンプログラム
US7941684B2 (en) 2008-02-28 2011-05-10 Advanced Micro Devices, Inc. Synchronization of processor time stamp counters to master counter
US7863960B2 (en) 2009-04-30 2011-01-04 International Business Machines Corporation Three-dimensional chip-stack synchronization
US20100302967A1 (en) * 2009-05-29 2010-12-02 Electronics And Telecommunications Research Institute Method and apparatus for measuring network delay in ethernet ring network
JP5441776B2 (ja) 2010-03-17 2014-03-12 三菱電機株式会社 リング状同期ネットワークシステム
US20140003564A1 (en) 2012-06-27 2014-01-02 Broadcom Corporation Multichip synchronization system
US9515908B2 (en) * 2013-07-09 2016-12-06 Calix, Inc. Network latency testing
US9264049B2 (en) 2013-11-21 2016-02-16 Stmicroelectronics International N.V. Synchronous on-chip clock controllers
US9191193B1 (en) 2014-07-18 2015-11-17 Qualcomm Incorporated Clock synchronization
US9541949B2 (en) 2014-09-22 2017-01-10 Intel Corporation Synchronization of domain counters
US10931391B2 (en) 2017-09-27 2021-02-23 Intel Corporation One-step time stamping of synchronization packets for networked devices

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1494688A (zh) * 2001-02-24 2004-05-05 �Ҵ���˾ 新颖的大规模并行超级计算机
US20030048754A1 (en) * 2001-09-04 2003-03-13 Leon Bruckman Latency evaluation in a ring network
CN101226765A (zh) * 2006-11-21 2008-07-23 三星电子株式会社 多芯片封装快闪存储器器件以及从中读取状态数据的方法

Also Published As

Publication number Publication date
DK3857394T3 (da) 2023-10-23
FI3857394T3 (fi) 2023-10-19
KR20220010563A (ko) 2022-01-25
JP2022544444A (ja) 2022-10-19
US20210303506A1 (en) 2021-09-30
TWI802814B (zh) 2023-05-21
EP3857394A1 (en) 2021-08-04
EP3958137A1 (en) 2022-02-23
JP7367079B2 (ja) 2023-10-23
WO2021034680A1 (en) 2021-02-25
TW202333064A (zh) 2023-08-16
TW202113614A (zh) 2021-04-01
JP2023174794A (ja) 2023-12-08
TW202333065A (zh) 2023-08-16
EP3857394B1 (en) 2023-10-04
US20220391347A1 (en) 2022-12-08
US11372801B2 (en) 2022-06-28
US20230237007A1 (en) 2023-07-27

Similar Documents

Publication Publication Date Title
US10817444B2 (en) Sending data from an arrangement of processor modules
US20230253962A1 (en) Synchronization in a quantum controller with modular and dynamic pulse generation and routing
JP4091941B2 (ja) クロック同期回路
US20170214514A1 (en) Methods and systems for synchronization between multiple clock domains
US7568118B2 (en) Deterministic operation of an input/output interface
US11372801B2 (en) Synchronization in multi-chip systems
TWI841190B (zh) 晶片間延時特性化方法
US20230161621A1 (en) Software-Defined Tensor Streaming Multiprocessor for Large-Scale Machine Learning
JP7342247B2 (ja) オンチップ動作の明示的なスケジューリング
US11637682B2 (en) Extended sync network
Das et al. Sas: Source asynchronous signaling protocol for asynchronous handshake communication free from wire delay overhead
US11675686B2 (en) Tracing activity from multiple components of a device
US11928523B2 (en) Synchronisation for a multi-tile processing unit
US20210241089A1 (en) System Having Multiple Processing Unit Sets For Training Neural Networks
US11314277B1 (en) Serial lane-to-lane skew reduction
US20230024224A1 (en) Tracing Synchronisation Activity of a Processing Unit
JP3709355B2 (ja) クロック同期化システム、及びその方法
Chowdary et al. A Study on Globally Asynchronous and locally synchronous System
CN115509988A (zh) 基于异步机制的Lamoeba芯片架构与运行时重构机制方法
JPS59103143A (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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40068375

Country of ref document: HK