三维堆叠神经网络加速器的产出改进的制作方法

文档序号:19792677发布日期:2020-01-24 14:38阅读:196来源:国知局
三维堆叠神经网络加速器的产出改进的制作方法

相关申请的交叉引用

本申请要求于2017年8月24日提交的美国申请序列号15/685,672的优先权,其内容通过引用整体结合于此。



背景技术:

本说明书一般涉及三维堆叠神经网络加速器。

神经网络是机器学习模型,其采用一层或多层非线性单元来预测针对接收到的输入的输出。一些神经网络除输出层外还包括一个或多个隐藏层。每个隐藏层的输出用作网络中下一个层的输入,即下一个隐藏层或输出层。网络的每一层根据各自的一组参数的当前值从接收的输入中生成输出。

典型地,神经网络处理系统使用通用图形处理单元、现场可编程门阵列、专用集成电路以及类似的其它硬件来实现神经网络。



技术实现要素:

通常,本说明书中描述的主题的一个创新方面可以具体体现在以下方法中,该方法包括以下动作:获取指定三维堆叠神经网络加速器中的多个组块(tile)中的组块为故障组块的数据。三维堆叠神经网络加速器包括堆叠在彼此之上的多个神经网络管芯(die),每个神经网络管芯包括各自的多个组块,每个组块具有输入和输出连接,这些输入和输出连接将数据路由进入组块和离开组块。三维堆叠神经网络加速器被配置为通过以下方式处理输入:根据数据流配置将输入路由通过多个组块中的每个组块,以及修改数据流配置,以便将数据流配置中在故障组块之前的组块的输出路由到位于与故障组块不同的神经网络管芯上的、故障组块之上或之下的组块的输入连接。

这个方面的其它实施例包括相应的系统、装置和被配置为执行方法的动作、编码在计算机存储设备上的计算机程序。

神经网络加速器能够用来加速神经网络的计算,即,使用神经网络处理输入以生成输出,或者训练神经网络以调整神经网络的参数值。三维堆叠神经网络加速器可以以与相邻管芯通信地垂直耦合的垂直互连接来构建。三维堆叠神经网络加速器与传统的神经网络加速器相比,制造更加便宜而且更加紧凑。然而,用于制造三维堆叠神经网络加速器的传统机制使得不可能仅使用起作用的(functional)管芯来制造给定的三维神经网络加速器,即,在没有一个或多个管芯发生故障的情况下进行制造。

本说明书中描述的主题的特定实施方式可以被实施,以实现以下一个或多个优点。对于三维堆叠神经网络加速器,堆叠在彼此之上的计算组块越多,则整个堆栈(stack)是有故障的可能性就越高。发生这种情况的原因是,如果一个计算组块是有故障的,则这可能会使整个三维堆叠神经网络加速器不能操作,从而导致可操作的三维堆叠神经网络加速器的潜在产出(yield)不佳。但是,修改三维堆叠神经网络加速器的数据流配置会增加三维堆叠神经网络加速器的功能性。例如,修改数据流配置允许即使一个或多个计算组块是有故障的,三维堆叠神经网络加速器仍然可用。

试图使用有故障的组块将使整个三维堆叠神经网络加速器无用。因此,有故障的组块被绕过以确保三维堆叠神经网络加速器其余部分的功能性。修改三维堆叠神经网络加速器的数据流配置包括将给定计算组块的输出改变到在给定计算组块之上或之下的管芯上的计算组块的输入。因此,能够实现在整个三维堆叠神经网络加速器中更加模块化(modular)的数据流。另外,修改数据流配置将提高可操作的三维堆叠神经网络加速器的产出,因为有一个或多个有故障的计算组块不会使整个加速器不能操作。三维堆叠神经网络加速器的产出随着总芯片面积增加而减少。修改数据流配置以包括在垂直相邻的管芯之间传输数据,提高了三维堆叠神经网络加速器的产出。

在本说明书中描述的主题的一个或多个实施方式的细节在附图和以下描述中阐述。从描述、附图和权利要求书中,所述主题的其它潜在特征、方面和优点将变得清晰。

附图说明

图1a-图1b是示例三维堆叠神经网络加速器的框图。

图2是计算组块的框图。

图3是二分图的示例框图。

图4示出了示例神经网络数据流配置。

图5示出了三维堆叠神经网络加速器的示例数据流配置。

图6是用于修改三维堆叠神经网络加速器内的组块的数据流配置的示例过程的流程图。

在各个附图中,相似的参考数字和标记指示相似的元件。

具体实施方式

本说明书中描述的主题内容涉及一种包括多个被配置为加速神经网络的工作量的计算单元的硬件计算系统。硬件计算系统的每个计算单元是自足的(self-contained),并且可以独立地运行多层神经网络的一部分(例如给定层)所需的计算。

神经网络加速器可以用来加速神经网络的计算,即,使用神经网络处理输入以生成输出,或者训练神经网络以调整神经网络的参数值。神经网络加速器具有数据输入和输出。神经网络加速器接收数据、处理数据并输出处理后的数据。三维堆叠神经网络加速器使用彼此堆叠的多个神经网络管芯(die)以提高神经网络加速器的计算能力。每个神经网络加速器管芯包括多个计算组块。每个计算组块也具有输入、输出,并使用计算组块处理器来处理数据。

组块按照顺序连接在一起,并且神经网络加速器根据数据流配置在每个组块之间引导数据。例如,在第一计算组块处接收数据,运行计算,然后将第一组块的输出发送到第二计算组块的输入,第二计算组块也完成计算。在一些实例中,在加速器生产完成后,计算组块可能是有故障的(即不按预期起作用)。例如,组块可能具有丧失功能的管芯上高速缓冲存储器、损坏的管芯内连接、错误的时钟等等,这可能会使整个神经网络加速器不能操作。

然而,根据这里描述的系统和方法,在神经网络加速器的计算期间,绕过有故障的计算组块,即,没有输出被发送到有故障的计算组块的输入。代替将一个组块的输出路由到有故障组块的输入,将输出路由到在容纳有故障组块的管芯之上或之下的管芯上的不同计算组块的输入。在不同的计算组块运行其计算之后,该不同的计算组块将其输出发送到另一个计算组块的输入,例如,在与容纳有故障的计算组块的相同神经网络管芯上容纳的计算组块。这样绕过了有故障组块,而且使得能够使用甚至具有一个或多个有故障组块的三维堆叠神经网络加速器。

图1a-图1b是示例三维堆叠神经网络加速器100的框图。神经网络加速器100是被设计为加速神经网络的计算(即,使用神经网络处理输入以生成输出或者训练神经网络)的集成电路。三维堆叠神经网络加速器100包括彼此叠置在上的多个神经网络加速器管芯102a-e,创建了大型神经网络加速器。

典型地,使用半导体材料(例如,硅、砷化镓、砷化铟等)创建神经网络加速器晶片(wafer)102a-e。使用传统的半导体晶片制造技术来生产神经网络加速器管芯102a-e。神经网络加速器管芯102a-e的每者都包括排列(arrange)在管芯102a-e的表面上的多个计算组块,以下称为组块104a-p。

每个组块104a-p是单独的计算单元,并且组块104a-p共同执行加速在三维堆叠神经网络加速器上的计算的处理。通常,组块104a-p是被配置为运行用于神经网络计算的全部或部分处理的自足的计算组件。在美国专利申请第15/335,769号中描述了组块104a-p的示例体系结构,其通过引用结合于此。

根据静态互连系统连接每个管芯上的组块。例如,每个组块使用感应耦合通过硅通孔(tsv)通信地耦合或有线连接到一个或多个相邻的组块(包括邻接组块、彼此上方的组块、彼此下方的组块等)。下面将结合图3更详细地描述静态互连系统的配置。

图2是计算组块104a的框图。每个计算组块104a包括处理元件202、开关204、感应线圈206a和206b以及处理元件旁路208。图2中示出的组件未按比例绘制。典型地,处理单元202消耗大部分组块区域,并且更可能具有缺陷或故障。计算组块的缺陷密度是均匀的,因此大面积的处理元件202使得处理元件202这个组件最可能发生故障。处理元件从开关204的输出接收输入。处理元件202运行神经网络加速器的计算。处理元件202的输出可以被发送到不同组块104a-p的开关204的输入。

组块104a-p的一些或全部包括感应线圈206a、206b。虽然,图2典型地示出了具有两个感应线圈206a、206b的组块104a,但是在一些实施方式中,计算组块可以包括10和1000之间数量的线圈。感应线圈利用组块104a-p之间的磁场实现垂直相邻组块104a-p的感应耦合。组块104a-p的感应耦合使得不同管芯上的组块104a-p能够使用近场无线通信进行通信。每个组块104a-p使用感应耦合与组块之上或之下的相邻组块进行通信。例如,在顶部管芯102a上的第一组块104a可以向位于顶部管芯102a下方的第二管芯102b上的第一组块104a发送数据和从其接收数据。

典型地,组块104a-p使用感应耦合与直接在其上或其下的相邻组块进行通信。然而,在一些实施方式中,三维堆叠神经网络加速器内的组块可以与三维堆叠神经网络加速器100内的任何管芯102a-e上的组块进行通信。例如,对于具有7个堆叠管芯的三维堆叠神经网络加速器,位于给定管芯上的特定组块能够与其它6个堆叠管芯上的在该特定组块之上或之下的组块垂直地进行通信。在http://ieeexplore.ieee.org/document/5496681/,tadahirokuroda的“thruchipinterfacefor3dsystemintegration(3d系统集成的thruchip接口)”中描述了一种实现近场通信技术的方法。

包括在组块104a中的感应线圈206a、206b是接收线圈和发射线圈。接收线圈和发射线圈可以各自包括耦合在一起的多个感应线圈,以便向垂直相邻的组块发送数据和从其接收数据。多个感应线圈耦合在一起以实现所需的带宽和磁场,以便在垂直相邻的组块之间通信数据。根据确定的数据流配置,可以选择感应线圈206a、206b中的任何一个作为接收线圈或发射线圈。接收线圈和发射线圈分别并且独立地在不同管芯上的组块104a-p之间接收或发送数据。每个线圈产生磁场,并且利用该磁场,组块利用近场通信进行通信。例如,属于给定组块104a-p上的发射线圈的磁场耦合到属于不同组块的接收线圈104a-p的磁场。两个线圈通过使用由感应耦合产生的磁场作为载波信号来传递数据。

感应线圈206a、206b可以分别被选择性地选择为接收线圈或发射线圈。基于开关204的输入和输出的配置,感应线圈206a、206b被确定为接收线圈或发射线圈。例如,接收开关的输出的感应线圈是发射线圈,因为其将接收到的数据发送到垂直相邻的组块。将数据发送到开关的输入的收发器是接收线圈,因为该收发器发送它从垂直相邻的线圈接收的数据。修改由开关的配置所定义的可变输入和输出,使得能够改变静态互连配置,以便确定各种数据流配置。

在一些实施方式中,每个组块也可以使用硅通孔(tsv)与垂直相邻的组块进行通信。tsv是穿过管芯的垂直电连接。处理单元的输出可以使用tsv传到属于垂直相邻管芯的开关204的输入。

每个组块包括开关204,开关204耦合到多个输入并且包括多个输出。在一些实施方式中,并且如图2所示,开关具有四个输入(即,输入a、b、c和d)和四个输出(即,输出w、x、y和z)。开关204可以将在开关处接收的多个输入中的任何一个引导至多个开关输出中的任何一个。在这个实例中,输入a可以是相邻组块的处理元件旁路(bypass)。输入b可以是相邻组块的处理元件202的输出。感应线圈既可以选择作为接收线圈,也可以选择作为发射线圈。被配置为发射线圈的任何一个感应线圈将数据发送到垂直相邻的组块,并且被配置为接收线圈的任何一个感应线圈从垂直相邻的组块接收数据。在感应线圈a206a是接收线圈的实例中,输入c可以是在感应线圈a206a处接收并发送到开关204的数据。或者,基于所选数据流配置,在感应线圈b206b是接收线圈的实例中,输入d可以是在感应线圈b206b处接收并发送到开关204的数据。

开关204可以将数据从输入a、b、c或d的任何一个发送到输出w、x、y和z的任何一个。在这个实例中,输出w可以将数据引导至处理元件旁路。处理元件旁路提供绕过处理元件202的数据传输路径。输出w使得数据能够从处理组块中发送出去而不将数据发送到处理元件202。在这个实例中,处理元件202可能是有故障的。因此,使用处理元件旁路,处理元件202被绕过,从而确保了环形总线的连续性。开关204的输出x耦合到处理元件202的输入。因此,由开关的输出x发送的数据被发送到处理元件202,使得处理元件202将该数据用于神经网络加速器计算。输出y和z分别耦合到感应线圈a206a和感应线圈b206b的输入。输出y和z可以被选择性地选择,以便引导发送到垂直相邻组块的感应线圈的数据。

在一些实施方式中,与不同管芯102a-e上的组块104a-p通信的组块104a-p使用感应线圈的感应耦合来发送来自不同管芯102a-e上的组块的输入数据。例如,在顶部管芯102a上的第一组块104a与顶部管芯102a下方的管芯102b上的第一组块104a通信的实例中,在顶部管芯上的第一组块104a的开关耦合至输出y。输出y将数据发送到发射感应线圈,发射感应线圈将数据引导至下方的管芯102b上的第一组块104a的接收感应线圈。接收感应线圈将数据引导至下方的管芯102b上的第一组块104a的开关204。开关204可以将数据引导至任何可用的开关输出。在其它实施方式中,与不同管芯102a-e上的组块104a-p通信的组块104a-p使用硅通孔技术来发送数据。

在一些实施方式中,开关204可以包括一个或多个复用器以及一个或多个解复用器。一个复用器包括两个或更多个可选输入以及一个输出。解复用器包括一个输入以及两个或更多个可选输出。因此,并且在这个实例中,开关使用复用器来接收四个输入中的任何一个,并且复用器的输出被耦合到解复用器的输入。解复用器的输出是开关的四个输出,输出w、x、y和z。

图3是二分图的示例框图。二分图示出了神经网络体系结构的数据流配置和组件。边(edges)将输入顶点(i1-5)连接到输出顶点(o1-5),以表示计算组块。在这个示例中,计算组块由以边连接在一起的特定输入顶点和特定输出顶点来表示。顶点之间的数据流配置以实线表示。例如,从输出顶点去到输入顶点的边示出了从一个组块的输出到另一个组块的输入的数据传输。冗余的数据流配置以虚线表示。虚线边表示在组块被认为有故障并且被绕过的实例中顶点之间的替代的数据流路径。

如果组块有故障,则从图形中移除输入顶点和对应的输出顶点之间的对应边。这表示没有数据从计算组块的输入发送到计算组块的输出,并且处理元件202不运行任何计算。如果计算组块的开关204仍然起作用,则顶点保留在网络图形中,因为组块的处理元件202仍然可以使用处理元件旁路而被绕过。从输出顶点到输入顶点的边表示开关和垂直通信耦合可以实现的可能的连接。每个顶点将有多个可允许的边,表示开关可以被配置为将输入引导至输出的可能的配置。

为了绕过故障组块并且提高三维堆叠神经网络产出,将汉密尔顿电路(hamiltoniancircuit)应用于该图形。汉密尔顿电路可以示出环形总线,该环形总线是数据传播的封闭途程(closedtour),以使每个活跃的顶点仅接收和发送一次数据。汉密尔顿电路是通过合并每个起作用的顶点来达成的最大长度电路。与二维神经网络加速器相比,三维堆叠神经网络加速器为数据流配置提供了更多的替代路径。因此,与二维网络加速器相比,对于三维堆叠神经网络加速器来说,能够找到最佳或接近最佳配置(例如,汉密尔顿电路)的概率更高。

图4示出了示例神经网络管芯400和示例神经网络管芯的组块104a-p的数据流配置。然而,通常,组块104a-p可以以任何布置(arrangement)排列在管芯200上。组块104a-p以矩形布置组织,使得位于垂直相邻的管芯上的组块被配置在相同位置。例如,第一管芯102a上的第一组块104a位于第二管芯102b上的第一组块104a上方,而其位于第三管芯102c上的第一组块104a上方,等等。此外,垂直相邻的组块的输入和输出具有镜像对称性或旋转对称性。例如,第一管芯102a上的第一组块104a的输入和输出在位置上(positionally)以与第一管芯102a之上或之下的位于堆叠中的第二管芯102b上的第一组块104a的输入和输出相同的定向(orientation)位于管芯上。

每个组块104a-p与管芯400上该组块的相邻组块通信地耦合。在这个示例中,第一组块104a与第二组块104b通信地耦合。然而,组块104a-p可以以任何配置通信地耦合。神经网络管芯102a上的组块104a-p可以使用有线连接来连接在一起。有线连接使得能够在每个所连接的组块104a-p之间传输数据。

每个组块与一个或多个相邻组块104a-p通信以便使用组块104a-p创建汉密尔顿电路表示。该电路包括通信方案,使得从环形总线的开始到环形总线的末端,存在组块输入连接到组块输出的不间断的流动。例如,组块104a-p被配置为使得环形网络内的每个起作用的组块的输入和输出根据数据流配置被连接到另一个起作用的组块或外部源。数据流配置描述了在三维神经网络体系结构中通过组块104a-p的计算数据传播的路径。

例如,参考图4,在一些实施方式中,数据流配置402可以指定管芯102a上的第一组块104a从外部源接收输入数据。在一些实施方式中,外部源可以是不同的神经网络加速器管芯102b-e上的组块104a-b,或者是发送数据的一些其它源。第一组块104a使用数据运行计算,并且将数据发送到第二组块104b。同样,第二组块104b计算数据,并且将数据发送到第三组块104c。在这个实施方式中,该过程沿着第一行组块继续,直到数据到达第四组块104d为止。第四组块104d将数据发送到第五组块104h。

该过程继续,直到数据到达组块104e为止。以类似的方式,数据被发送到第九组块104i。数据沿着第三行组块传播到第十二组块104l。第十二组块104l将数据发送到第十三组块104p。数据流配置继续将数据发送到第十六组块104m,其中第十六组块104m将数据发送到外部源或返回第一组块104a。在这个实施方式中,第一管芯102a上的组块104a-p的数据流配置为104a-b-c-d-h-g-f-e-i-j-k-l-p-o-n-m。在其它实施方式中,数据流配置可以是数据行进通过组块集合的不同路径。基于哪个开关输入被连接到哪个组块的输出来指定数据流配置。因为存在多个组块104a-p,每个组块都有各自的输出,并且由于可以更改开关的输入以接收不同组块的输出,因此可以达成许多不同的数据流配置。

在一些实例中,在三维堆叠神经网络加速器100被生产之后,一些组块104a-p可能是有故障的。在堆叠管芯之后运行生产后(post-production)测试以识别哪些组块有故障。被识别出的故障组块被绕过,并建立消除了故障组块的使用的数据流配置。组块配置包括可以实现为绕过故障组块104a-p的冗余数据路径304。消除故障组块可以包括将计算数据引导至三维堆叠神经网络中除了被识别的故障组块之外的每个其它的组块。每个其它的组块将执行其指定的计算功能,作为执行神经网络计算的一部分。在这个实例中,其它的组块可以共同地执行被识别出的故障组块的计算,或者一个组块可以专用于执行被识别出的故障组块的计算。

图5示出了用于三维堆叠神经网络加速器的示例数据流配置500。在这个示例中,神经网络加速器包括两个神经网络管芯,顶部管芯102a和底部管芯102b,它们使用一对感应耦合连接来排列以便将两个环聚合在一起,以形成分布在垂直堆叠的两个芯片(chip)上的16个组块的一个环。在一些实施方式中,三维堆叠神经网络加速器包括两个以上堆叠在一起的管芯(例如,3-10个管芯)。每个管芯包括多个组块104a-h。两个管芯上的组块104a-h处理数据,以便根据通过组块104a-h的数据传播的数据流配置来执行神经网络计算。

在这个示例中,顶部管芯102a上的组块104f是完全管芯故障。当旁路故障或开关故障并且处理单元故障时,就会发生完全管芯故障。在一个管芯具有与图5所示的顶部管芯102a一致的故障场景的二维神经网络加速器示例中,整个管芯将是完全故障,因为数据流配置不能围绕管芯创建连续的数据流路径。因为顶部管芯102a上的组块104f是完全管芯故障,所以相邻组块不能将数据输出到组块104f,因为组块104f无法将数据输出到另外的组块104a-h。因此,如图5所示,没有组块将数据输出到组块104f的输入,并且通过将数据传输到与组块104f相邻和垂直相邻的组块,组块104f被完全绕过。

顶部管芯102a上的组块104g和底部管芯102b上的组块104c是部分故障。在处理元件202故障但是开关和数据路径仍然起作用的情况下,发生部分故障。经受部分故障的组块仍然能够接收输入数据,因为组块的开关204仍然起作用。因此,部分故障的组块的开关204可以使用发射感应线圈将数据输出到不同的组块104a-h,或者使用处理元件旁路208输出数据。如图5中所示,顶部管芯102a上的组块104g和底部管芯102b上的组块104c利用发射感应线圈将数据输出到垂直相邻的组块。然而,在其它实施方式中,顶部管芯102a上的组块104g和底部管芯102b上的组块104c可以两者或独有地(uniquely)利用处理元件旁路208将数据输出到相邻组块104a-h。

图6是由一个或多个计算机的系统运行的用于修改三维堆叠神经网络加速器600内的组块的数据流配置的过程的示例流程图。将结合图5讨论图6的各方面。例如,该过程可以由与加速器耦合的主计算机执行。

三维堆叠神经网络加速器组块被测试,以确定神经网络晶片上的多个组块中的每一个的功能性,并识别有故障的组块。用于管芯测试的技术包括使用带外控制通道,例如,联合测试行动小组扫描链,来测试三维堆叠神经网络加速器之内的每个组块。该测试识别哪些组块是有故障的并且将被绕过,以便创建汉密尔顿电路。在一些实施方式中,该系统被配置为基于三维堆叠神经网络加速器内的起作用的组块104a-h的布置来确定汉密尔顿电路。另外,该系统可以根据确定的汉密尔顿电路,使用三维神经网络加速器的其余的起作用的组块104a-h来实施数据流配置。

该测试可以在堆叠神经网络晶片102a-b之前或之后进行。例如,可以在将较大的制造晶片切割成被设计用于三维堆叠神经网络加速器的较小晶片之前进行测试。在这个实例中,对较大的制造晶片上的每个组块进行功能性测试。或者,在将较大的制造晶片切割成被设计用于三维堆叠神经网络加速器的管芯之后,将管芯堆叠在一起以创建三维堆叠神经网络加速器,并且对每个组块进行功能性测试。在任一种实例中,在对三维堆叠神经网络加速器运行计算之前,都要测试组块104a-p。

在其它实施方式中,在神经网络加速器的操作期间不断地对三维堆叠神经网络加速器进行分析,以确定可能在初始功能性测试期间可操作性但随后发生故障或变为有故障的组块。

参考图6,该过程包括确定三维堆叠神经网络加速器中的多个组块中的组块是故障组块(402)。有故障的组块是指基于分析无法按照设计起作用的组块。如先前描述的,三维堆叠神经网络加速器包括彼此堆叠在上的多个神经网络加速器管芯102a-e,并且每个神经网络加速器管芯包括各自的多个组块104a-p。每个组块都具有多个输入和输出连接,这些输入和输出连接将数据传输进入和离开组块。该数据用于运行神经网络计算。

返回参考图4,在示出的示例300中,顶部管芯102a上的第六和第七组块104c以及底部管芯102b上的第三组块已经被确定为有故障的。顶部管芯102a上的故障组块104f和104g以及底部管芯102b上的故障组块104c被绕过,并从数据流配置中移除。移除故障组块包括修改数据流配置,以便将数据流配置中在故障组块之前的组块的输出发送到位于与故障组块不同的神经网络管芯上的在故障组块之上或之下的组块的输入连接(404)。

在一些实施方式中,绕过故障组块包括移除提供给故障组块104c的电力。可以通过断开向故障组块提供电力的开关或者使用编程逻辑来移除提供给组块的电力,来从故障组块104c移除电力。移除提供给故障组块104c的电力确保了故障组块不可操作,并且故障组块104c不会从向三维堆叠神经网络加速器提供电力的电源汲取不必要的电力。此外,数据围绕故障组块传输或者传输穿过故障组块,但是不传输到故障组块的处理元件202。

在其它实施方式中,绕过故障组块104c可以包括关闭故障组块所独有的时钟。可以使用编程逻辑禁用故障组块的时钟,或者通过断开时钟的输出来物理地从电路中移除时钟。关闭故障组块的时钟使时钟停止运行处理功能,由此停用(deactivating)故障组块并停止故障组块的操作。

根据图5中所示的示例,根据组块数据流配置的汉密尔顿电路表示,绕过故障组块并修改数据流配置。例如,一种实现方式可以包括顶部管芯102上的第一组块104a从外部源接收输入数据(1)。第一组块104a处理数据,并且第一组块104a将输出数据发送到第二组块104b的开关。顶部管芯102a的第二组块104b的开关202将数据引导至发射感应线圈(t),并且将数据发送到底部管芯102b的第二组块104b。为了便于说明,感应线圈被表示为单个线圈,但是,如先前所描述的,每个感应线圈是通信地耦合以便向垂直相邻的组块上的其它线圈发送数据和从其接收数据的多个线圈。

底部管芯102b的第二组块104b处理数据(2),并且将数据发送到底部管芯102b的第三组块104c。由于底部管芯102b的第三组块104c被确定为有故障的,因此处理元件被绕过,并且数据被发送到发射感应线圈(t),其使用感应耦合将数据发送到顶部管芯102b的第三组块104c的接收感应线圈(r)。处理元件处理数据(3),并且将数据发送到顶部管芯102a的第四组块104d的开关202。开关将数据发送到顶部管芯102a的第四组块104d的发射感应线圈(t),其将数据发送到底部管芯102b的第四组块104d。底部管芯102b的第四组块104d处理数据(4),并且输出被发送到底部管芯102b的第八组块104h。

第八组块104h的处理元件处理数据,并且输出被发送到底部管芯102b上的第七组块104g的开关。第七组块104g处理数据(6),并且输出被发送到底部管芯102b的第六组块104f的开关。第六组块104f处理数据(7),并且输出被发送到底部管芯102b上的第五组块104e的开关。第五组块的处理元件处理数据(8),并且输出被发送到底部管芯102b的第一组块104a。第一组块104a处理数据(9),并且输出被发送到底部管芯102b的第二组块104b的开关。

第二组块的开关将数据发送到第二组块的发射感应线圈(t),其将数据发送到顶部管芯102a的第二组块104b的接收感应线圈(r)。第二组块的处理元件处理数据(10),并且输出被发送到顶部管芯102b的第三组块104c的开关。使用处理元件旁路来来发送数据以便绕过第三组块的处理元件,并且数据被发送到顶部管芯102a的第四组块104d的开关。第四组块104d处理数据(11),并且将数据发送到顶部管芯102a的第八组块104h。

第八组块104h处理数据(12),并且输出被发送到顶部管芯102a的第七组块104g的开关。如先前所描述的,在测试期间,顶部管芯的第七组块104g被确定为有故障的。因此,第七组块的开关将数据发送到第七组块104g的发射感应线圈(t)。发射感应线圈(t)将数据引导至底部管芯102b的第七组块104g的接收感应线圈(r)。第七组块的开关使用处理元件旁路将数据引导至底部管芯102b的第六组块104f。第六组块104f的开关使用第六组块的处理元件旁路将数据发送到底部管芯102b的第五组块104e的开关。

第五组块104e将数据引导到第五组块104e的发射感应线圈(t),其将数据发送到顶部管芯102a的第五组块104e的接收感应线圈(r)。第五组块104e处理数据(13),并且输出或者被引导回到顶部管芯102a的第一组块102a,或者被引导至外部设备。在三维堆叠神经网络加速器的测试期间,顶部管芯102a的第六组块104f被识别为有故障。在这个示例中,没有数据被路由到第六组块104f,并且第六组块104f被完全绕过。

本说明书中描述的主题内容的实施例和功能操作可以以数字电子电路、有形地体现的计算机软件或固件、计算机硬件(包括本说明书中公开的结构及其等同结构)、或者它们的一个或多个的组合来实施。本说明书中描述的主题内容的实施例可以实施为一个或多个计算机程序,即,在有形的非暂时性程序载体上编码的计算机程序指令的一个或多个模块,以由数据处理装置运行或控制数据处理装置的操作。替代地或另外地,可以在人工产生的传播信号(例如,机器产生的电、光或电磁信号)上编码程序指令,所述信号被生成以便对信息进行编码以传输到合适的接收器装置,用于由数据处理装置运行。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行存取存储设备或它们中的一个或多个的组合。

本说明书中描述的过程和逻辑流程可以由一个或多个可编程计算机执行,所述可编程计算机运行一个或多个计算机程序,以通过对输入数据进行操作并生成输出来执行功能。过程和逻辑流程也可以由专用逻辑电路执行,并且装置也可以实施为专用逻辑电路,例如,fpga(现场可编程门阵列)、asic(专用集成电路)或gpgpu(通用图形处理单元)。

作为示例,适合于运行计算机程序的计算机可以基于通用或专用微处理器或两者,或者基于任何其它种类的中央处理单元。通常,中央处理单元将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的主要元件是用于执行或运行指令的中央处理单元,以及用于存储指令和数据的一个或多个存储设备。通常,计算机还将包括一个或多个用于存储数据的大容量存储设备(例如,磁、磁光盘或光盘),或操作地耦合以从其接收数据或向其传递数据,或两者。但是,计算机不需要具有这样的设备。

尽管本说明书包含许多具体的实施细节,但是这些不应被解释为对任何发明或可能要求保护的范围的限制,而应被解释为对专用于特定发明的特定实施例的特征的描述。在本说明书中在不同的实施例的上下文中描述的某些特征也可以在一个实施例中组合实施。相反,在一个实施例的上下文中描述的各种特征也可以在多个实施例中分开实施或者以任何合适的子组合来实施。而且,尽管以上可以将特征描述为以某些组合起作用,并且甚至最初也是这样要求保护的,但是在一些情况下,可以从组合中删除所要求保护的组合中的一个或多个特征,并且可以将所要求保护的组合指向子组合或子组合的变体。

类似地,虽然在附图中以特定顺序描绘了操作,但是这不应理解为要求这样的操作以所示的特定顺序或以连续的顺序执行,或者执行所有示出的操作以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中都需要这样的分离,并且应当理解,所描述的程序组件和系统通常可以集成在单个软件产品或包装在多个软件产品中。

已经描述了主题的特定实施例。其它实施例也在所附权利要求的范围内。例如,权利要求中记载的动作可以以不同的顺序执行并且仍然实现期望的结果。作为一个示例,附图中描绘的过程不一定需要所示的特定顺序或连续顺序来实现期望的结果。在某些实施方式中,多任务和并行处理可能是有利的。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1