通用并行计算架构的制作方法

文档序号:19751521发布日期:2020-01-21 19:35阅读:154来源:国知局
通用并行计算架构的制作方法
本公开总体上涉及用于计算设备和计算系统的硬件架构。更具体地,本公开涉及可以支持先进的计算功能的通用并行计算架构,该先进的计算功能诸如在人工智能中使用的功能。
背景技术
:人脑是典型地包含由一千万亿个突触连接的大约1000亿个神经元的大规模并行系统。理想情况下,模拟人脑的运作可以支持诸如人工智能之类的先进的计算功能。然而,模拟人脑或设计与人脑的能力相匹敌的计算系统的常规尝试通常由于多个原因而是不充足的,诸如基本上不与大脑的连接性或三维结构相匹配。技术实现要素:本公开提供了一种通用并行计算架构。在第一实施例中,一种装置包括多个并行计算核心,其中每个计算核心被配置成执行一个或多个处理操作并且生成输入数据。该装置还包括与每个计算核心相关联的多个并行协处理器。每个计算核心被配置成将由该计算核心生成的输入数据提供给与每个计算核心相关联的协处理器中所指定的一个。协处理器被配置成处理输入数据并且生成输出数据。该装置进一步包括多个约简器电路。每个计算核心与约简器电路中的一个相关联。每个约简器电路被配置成从相关联的计算核心的每个协处理器接收输出数据,将一个或多个功能应用于输出数据,并且向相关联的计算核心提供一个或多个结果。计算核心、协处理器和约简器电路在二维布局中横向地并排布置。在第二实施例中,一种装置包括多个并行计算核心,其中每个计算核心被配置成执行一个或多个处理操作并且生成输入数据。该装置还包括与每个计算核心相关联的多个并行协处理器。每个计算核心被配置成将由该计算核心生成的输入数据提供给与每个计算核心相关联的协处理器中所指定的一个。协处理器被配置成处理输入数据并且生成输出数据。用于每个计算核心的协处理器的子集中的协处理器还被配置成将一个或多个功能共同地应用于输出数据,并且该子集中的协处理器中的一个进一步被配置成向相关联的计算核心提供一个或多个结果。在第三实施例中,一种装置包括n个并行计算核心,其中每个计算核心被配置成执行一个或多个处理操作并且生成输入数据。该装置还包括个协处理器,其中每个计算核心与n个并行协处理器相关联。每个计算核心被配置成将由该计算核心生成的输入数据提供给与每个计算核心相关联的协处理器中所指定的一个。协处理器被配置成处理输入数据并且生成输出数据。该装置进一步包括n个约简器电路。每个计算核心与约简器电路中的一个相关联。每个约简器电路被配置成从相关联的计算核心的每个协处理器接收输出数据,将一个或多个功能应用于输出数据,并且向相关联的计算核心提供一个或多个结果。计算核心、协处理器和约简器电路在二维布局中横向地并排布置,并且n是具有为至少十六的值的整数。在第四实施例中,一种装置包括多个计算核心,其中每个计算核心被配置成执行一个或多个处理操作并且生成输入数据。该装置还包括与每个计算核心相关联的多个协处理器,其中每个协处理器被配置成从至少一个计算核心接收输入数据,处理输入数据,并且生成输出数据。该装置进一步包括多个约简器电路,其中每个约简器电路被配置成从相关联的计算核心的每个协处理器接收输出数据,将一个或多个功能应用于输出数据,并且向相关联的计算核心提供一个或多个结果。此外,该装置包括将计算核心与同计算核心相关联的协处理器通信地耦合的多个通信链路。在第五实施例中,一种装置包括多个计算核心,其中每个计算核心被配置成执行一个或多个处理操作并且生成输入数据。该装置还包括与每个计算核心相关联的多个协处理器,其中每个协处理器被配置成从至少一个计算核心接收输入数据,处理输入数据,并且生成输出数据。该装置进一步包括将计算核心与同计算核心相关联的协处理器通信地耦合的多个通信链路。用于每个计算核心的协处理器的子集中的协处理器还被配置成将一个或多个功能共同地应用于输出数据,其中该子集中的协处理器中的一个进一步被配置成向相关联的计算核心提供一个或多个结果。在第六实施例中,一种装置包括n个并行计算核心,其中每个计算核心被配置成执行一个或多个处理操作并且生成输入数据。该装置还包括个协处理器,其中每个计算核心与n个并行协处理器相关联。每个协处理器被配置成从至少一个计算核心接收输入数据,处理输入数据,并且生成输出数据。该装置进一步包括n个约简器电路,其中每个计算核心与约简器电路中的一个相关联。每个约简器电路被配置成从相关联的计算核心的每个协处理器接收输出数据,将一个或多个功能应用于输出数据,并且向相关联的计算核心提供一个或多个结果。此外,该装置包括将计算核心与同计算核心相关联的协处理器通信地耦合的多个通信链路。通信链路包括至共享存储器的链路。共享存储器被配置成存储来自计算核心的输入数据,并且将输入数据提供给协处理器。共享存储器包括具有多个存储器地址的多个存储器位置。计算核心被配置成将输入数据写入至不同的存储器地址,并且协处理器被配置成从不同的存储器地址读取输入数据。从以下附图、描述和权利要求书中,其他技术特征对于本领域技术人员而言可以容易地清楚。附图说明为了更完整地理解本公开及其特征,现在对结合附图考虑的以下描述进行参考,在附图中:图1a至图1c图示了根据本公开的示例通用并行计算架构;图2和图3图示了根据本公开的图1a至图1c的计算架构中的示例通信;图4和图5图示了根据本公开的图1a至图1c的计算架构中的示例协处理器功能性;图6图示了根据本公开的图1a至图1c的计算架构中的示例可编程协处理器和约简功能性;图7和图8图示了使用根据本公开的通用并行计算架构的示例计算系统;图9图示了使用根据本公开的通用并行计算架构来支持先进计算功能的示例方法;图10至图12图示了根据本公开的通用并行计算架构中的部件的其他示例连接性;和图13至图19图示了根据本公开的通用并行计算架构中的示例通信方案。具体实施方式下面讨论的图1a至图19以及在本专利文件中用于描述本发明的原理的各种实施例仅通过说明的方式,并且不应当以任何方式被解释为限制本发明的范围。本领域技术人员将理解,本发明的原理可以在任何类型的适当布置的设备或系统中被实现。如上所述,人脑是典型地包含由一千万亿个突触连接的大约1000亿个神经元的大规模并行系统。突触支持神经元之间的信号传输。人脑具有与经典图灵机非常不同的结构。在给定大量的神经元和突触典型地处于人脑中的情况下,使用经典图灵机来模拟人脑是不能实行的。尽管人类智能具有许多组成部分,但是一个关键的组成部分是维度约简,它是指接收巨大量(高带宽)的感官输入并且将信息约简下来到更小量(低带宽)的描述性概念的过程。从数学上讲,可以使用各种形式的迭代因子分析来实现该约简。各种形式的因子分析倾向于有几个共同的特征。例如,在被称为“正向解释模式”的一个操作模式中,因子分析对大量输入执行一些简单的计算,累加总和,并且对输出执行可能更复杂的计算。在被称为“反向学习模式”的另一个操作模式中,因子分析通过对输出和对应输入的一些简单计算来变更对输入的简单计算。尽管这些计算倾向于是简单的,但是扇入(指输入的数量)和扇出(指输出所提供给的目的地的数量)都可以在数量上达到数万。由于多个原因,设计甚至可以在某种程度上与人脑的能力相匹敌的系统通常是不充足的。例如,这样的巨大的扇入和扇出实际上无法被映射到二维(2d)电路中,这使这样的高度连接的计算架构保持脱离主流。为了设计与人脑的能力相匹敌的计算设备,需要具有更多通信带宽的硬件架构。本公开描述了各种新的通用“连接主义的”硬件架构,该硬件架构包括多个高互连的处理核心。除了事物之外,这些硬件架构还可以加速机器学习、科学计算、视频游戏和其他领域中的一大类算法。在一些实施例中,可以使用诸如三维(3d)集成电路技术之类的现代技术以合理的成本制造这些硬件架构。图1a至图1c图示了根据本公开的示例通用并行计算架构。特别地,图1a至图1c图示了提供具有高通信带宽的硬件架构的示例多级结构。如下所述,不同层级的结构执行不同的功能。图1a图示了硬件架构的第一层级100。该层级100包括被称为soma核心的多个计算或处理核心102。在其最小形式中,每个soma核心102可以接收一个或多个数据信号,执行某个类型的处理,并且传输一个或多个输入信号。每个soma核心102中包括的用于执行处理操作的结构可以范围从非常简单的处理核心到非常复杂的处理核心。例如,每个soma核心102中的处理单元可以是相对简单化的计算核心,诸如通用单个指令、多个数据(simd)运算单元。soma核心102还可以表示全处理核心,诸如来自arm、intel或其他计算机处理器制造商的核心。在一些实施例中,可以使用现有的“许多核心的”处理器设计来实现soma核心102的组。然而,任何合适的计算核心都可以用于实现soma核心102。虽然这里的硬件架构包括十六个soma核心102,但是硬件架构中可以支持任何数量的soma核心102。在特定实施例中,可以在被称为处理器的单个集成电路芯片内实现这里所有的soma核心102。另外,应当注意的是,soma核心102可以是同质的,或可以不是同质的。每个soma核心102包括处理电路104和至少一个存储器设备106。处理电路104通常表示用于在soma核心102内执行某个类型的处理的电路。如上所述,处理可以是简单化的或复杂的,并且处理电路104可以取决于待执行的特定处理而变化。存储器设备106通常表示诸如一个或多个寄存器之类的任何合适的存储装置和(一个或多个)检索设备,以用于存储由soma核心102使用、生成或接收的数据。在图1a中,虽然存储器设备106被示为嵌入在soma核心102内,但是每个存储器设备106可以整体或部分地位于对soma核心102可访问的任何其他合适的(一个或多个)位置。图1b图示了硬件架构的第二层级110,该第二层级110与硬件架构的第一层级100相关联。第二层级110包括与每个soma核心102相关联的多个协处理器112(其被称为突触协处理器)。突触协处理器112通常处理通过soma核心102之间的信号线(下面讨论)被传输的输入数据。每个soma核心102可以与多个突触协处理器112相关联。作为示例,对于一组n个soma核心中的每个soma核心102,多达n个突触协处理器112可以被提供并且被用于支持从该组中的soma核心102(包括其自身)到该soma核心102的通信。在一些实施例中,对于该组中的每个soma核心102,每个soma核心102通信地耦合到一个突触协处理器112。换言之,每个soma核心102可以通信地耦合到所有n个soma核心102(经由它们相应的突触协处理器112),尽管其他方法(包括下面讨论的那些)不需要这样做。“本地”或“主机”soma核心102的突触协处理器112用于接收和处理来自所有soma核心102(包括其自身)的传入的输入数据。在一些实施例中,这有效地允许用于每个soma核心102的所有n个突触协处理器112并行接收来自所有n个soma核心102的输入数据。注意到,每个soma核心102典型地可以包括相同数量的突触协处理器112,尽管也可以使用其他实施例。每个突触协处理器112包括支持对soma核心102的传入的输入数据进行处理的任何合适的结构。突触协处理器112可以具有有限的能力,并且可以被重新编程。在一些实施例中,每个突触协处理器112包括可编程的或其他的运算单元113和至少一个存储器设备114。运算单元113表示被配置成执行一个或多个指令序列以支持硬件架构中的各种功能的任何合适的结构。这些功能的示例包括按特定顺序接收和处理数据、对接收到的输入和存储的参数执行运算操作或者转发值。存储器设备114通常表示诸如一个或多个寄存器之类的任何合适的存储装置和(一个或多个)检索设备,以用于存储由突触协处理器112使用、生成或接收的数据。在图1b中,虽然存储器设备114被示为嵌入在突触协处理器112中,但是每个存储器设备114可以整体或部分地位于对突触协处理器112可访问的任何其他合适的(一个或多个)位置。硬件架构的第二层级110还包括各种约简器电路或“约简器”115。在一些实施例中,可以存在用于每个soma核心102的一个约简器115。每个约简器115接收由与soma核心102中的一个相关联的所有突触协处理器112产生的输出数据,以某个方式处理接收到的输出数据,并且将处理的一个或多个结果传递给本地soma核心102。例如,每个约简器115可以对接收的输出数据值求和或以其他方式将接收的输出数据值累加,标识最小或最大的接收到的输出数据值,或者执行一些其他处理操作。这样,每个约简器115处理soma核心102的输出数据,并且减少提供给该soma核心102的数据量。每个约简器115包括用于处理多个输出值的任何合适的结构。在一些实施例中,每个约简器115包括处理电路116和至少一个存储器设备117。处理电路116通常表示如下电路:该电路用于在约简器115内执行某个类型的处理,并且通常比soma核心102的处理电路104专业得多很多倍。例如,处理电路116可以包括由累加器形成的加法器树,该累加器用于对来自与一个soma核心102相关联的突触协处理器112的所有输出值求和。存储器设备117通常表示诸如一个或多个寄存器之类的任何合适的存储装置和(一个或多个)检索设备,以用于存储由约简器115使用、生成或接收的数据。在图1b中,虽然存储器设备117被示为嵌入在约简器115内,但是每个存储器设备117可以整体或部分地位于对约简器115可访问的任何其他合适的(一个或多个)位置。图1c图示了硬件架构的第三层级120,该第三层级120与这里的硬件架构的第一层级100和第二层级110相关联。第三层级120包括多个信号线122和124,该信号线122和124通信地耦合soma核心102,从而支持将信号传输到soma核心102、从soma核心102传输信号以及在soma核心102之间传输信号。在一些实施例中,soma核心102被完全连接,因为一组中的每个soma核心102可以经由信号线122和124以及突触协处理器112的适当配置与相同组中的所有其他soma核心102直接通信。然而,该硬件架构内也可以支持不到完全的连接性。注意到,图1c中信号线122和124的物理布局仅用于说明,并且不需要表示硬件架构中信号线的实际物理布置。例如,存在各种方式来设计soma核心102之间的网络,该soma核心102可以支持或可以不支持在所有soma核心102与从soma核心102接收输入数据的突触协处理器112之间的直接通信。信号线122和124因此可以被布置成支持硬件架构中的任何期望的通信路径。还注意到,每个soma核心102与其相关联的突触协处理器112之间的直接连接被提供作为处于逻辑级的示例,并且不一定作为所需网络的具体实现。可以使用各种机制(包括下面描述的那些)来提供每个soma核心102与其相关联的突触协处理器112之间的连接。在操作期间,每个soma核心102操作以执行所期望的指令并且处理数据,该数据可能包括从其约简器115或(一个或多个)其他源接收的数据。每个soma核心102可以将其处理操作的结果作为输入数据提供给其他soma核心102(并且可能是其自身),并且每个soma核心102可以经由其突触协处理器112接收通过其他soma核心的处理操作所生成的输入数据。用于每个soma核心102的突触协处理器112可以对输入数据执行所期望的处理操作,并且由突触协处理器112输出的数据可以由用于每个soma核心102的约简器115进一步处理。来自约简器115的结果被提供给本地/主机soma核心102,本地/主机soma核心102可以使用该数据来执行附加的处理操作。在从soma核心102到连接的突触处理器112的每个通信中,支持多个“信道”也是可能的,其中每个信道可以与不同的处理操作相关联。例如,每个突触协处理器112可以通过多个信道从一个soma核心102接收输入数据,并且连接到该soma核心112的突触协处理器112可以取决于针对输入数据所使用的信道来执行不同的处理操作。此外,每个约简器115可以针对多个信道而从其相关联的突触协处理器112接收输出数据,并且约简器115可以取决于突触处理器112从其接收输出数据的信道来执行不同的处理操作。信道可以表示实际的物理信道(诸如当数据通过不同的信号线发送时)或逻辑信道(诸如当数据通过具有不同信道标识符的公共信号线发送时)。在这些实施例中,soma核心102、突触协处理器112和约简器115中的不同寄存器或其他存储器的位置可以用于存储针对不同信道的不同数据和不同编程指令。这允许硬件架构支持并发性或其他类型的编程操作。如上所述,每个突触协处理器112的存储器设备114可以包括多个寄存器。在一些实施例中,寄存器可以包括与每个可能的连接伙伴(每个soma核心102)相关联并且用于保持每个连接伙伴的(一个或多个)信道的传入的输入数据的寄存器。寄存器还可以包括用于保持在编程指令的执行期间使用的参数值和其他值的本地寄存器。在特定实施例中,使用响应于传入的输入数据而执行的一个或多个指令来描述突触协处理器112的处理操作,并且在突触协处理器112中不存在命令循环。每个soma核心102可以单独地控制程序指令在其突触协处理器112上的安装,并且可以为不同的信道提供不同的程序指令。例如,可能存在如下指令:该指令使得soma核心102将相同的程序加载到其突触协处理器112中的一些或全部。还可能存在如下指令:该指令使得soma核心102加载通常具有不同值的其突触协处理器112的参数寄存器。注意到,soma核心102可以从给定的存储器区域加载该数据中的全部,该给定的存储器区域足够大以保持所有soma核心的突触协处理器112的所有寄存器的值。每个soma核心102可以被允许读取其突触协处理器112的各个参数寄存器,但是不可以被允许读取每信道的寄存器的值。取而代之,每信道的寄存器中的值可以由突触处理器112处理和/或被馈送到相关联的约简器115中,该约简器115可以通过本地/主机soma核心102来被编程,以适当地对每个信道接收的数据进行操作。去往每个约简器115的输入可以表示特定信道上来自相关联的soma核心102的所有突触协处理器112的输出值。如上所述,每个soma核心102可以支持用于促进突触协处理器112和约简器115的使用的多个指令。例如,每个soma核心102可以支持用于以下各项的指令:向所有soma核心102(的特定信道)发送输入数据元素,向其自己的突触协处理器112的特定信道发送输入数据,从其自己的约简器115接收结果,在其突触协处理器112和约简器115中安装或选择程序或其他指令,以及将数据存储在突触协处理器112的参数寄存器中。下面提供硬件架构中支持的示例指令的附加的细节。在一些实施例中,可以在单个集成电路芯片内实现图1a至图1c中所示的硬件架构。可以以任何合适的方式、诸如通过使用诸如绝缘体上硅(soi)的长期的制造技术或者诸如三维集成电路制造技术的最近开发的技术来制造集成电路芯片。如果需要或期望,则图1a至图1c中所示的硬件架构的多个实例可以耦合在一起并被使用,以便扩展可用于使用的soma核心102的数量。例如,诸如通过使用一个或多个高速连接来耦合硬件架构的每个实例的信号线122和124,多个集成电路芯片可以通信地耦合在一起,以提供任何期望数量的soma核心102。另外,在一些实施例中,每个soma核心102可以被配置成执行特定功能或功能组合,以便在硬件架构中提供所期望的功能性。在其他实施例中,每个soma核心102可以是可编程的,使得soma核心102的(一个或多个)功能可以被定义并且可以随时间或按照期望而改变。类似地,在一些实施例中,每个突触协处理器112和约简器115可以被配置成执行特定功能或功能组合,以便在硬件架构中提供所期望的功能性。在其他实施例中,每个突触协处理器112和约简器115可以是可编程的,使得突触协处理器112和约简器115的(一个或多个)功能可以被定义并且可以随时间或按照期望而改变。注意到,由soma核心102执行的处理可以并行发生,并且由用于每个soma核心102的突触协处理器112和约简器115执行的处理也可以并行发生。这样,在给定soma核心102之间足够的通信基础设施的情况下,每个soma核心102能够同时经由多个信号线122和124进行通信。在给定充足数量的soma核心102、突触协处理器112、约简器115以及信号线122和124的情况下,该硬件架构可以支持计算核心之间的大量通信连接,并且那些通信连接可以全部同时可用于使用。因此,该设计表示了具有更多通信带宽的硬件架构。尽管图1a至图1c图示了通用并行计算架构的一个示例,但是可以对图1a至图1c中所示的硬件架构进行各种改变。例如,硬件架构可以支持任何合适数量的soma核心,连同合适数量的突触协处理器和约简器。另外,可以以任何其他合适的方式、诸如通过针对soma核心或突触协处理器使用共享的计算资源、或者通过使用允许并发地执行多于一个操作的多个约简器来实现每个soma核心、突触协处理器和约简器。此外,图1a至图1c中的各种部件可以被组合、进一步细分、重新布置或省略,并且可以根据特定需求来添加附加的部件。作为特定示例,一个或多个soma核心102可以不需要与约简器115结合使用。作为另一特定示例,(下面描述的)图10至图12示出了通用并行计算架构的部件之间的其他可能的布局和连接。图2和图3图示了根据本公开的图1a至图1c的计算架构中的示例通信。如图2中所示,每个soma核心102可以具有如下突触协处理器112:该突触协处理器112从所有soma核心102(包括其自身)接收输入数据。对于一组soma核心102中的所有soma核心102,可以重复该相同的模式。上述信号线122和124可以用于以合适的方式将每个soma核心102耦合到所有soma核心102的一个突触协处理器112,以支持这些通信。当存在n个soma核心102时,每个soma核心102可以被配备有n个突触协处理器112(包括其自身的每soma核心102一个突触协处理器112)。每个soma核心102可以向所有soma核心102广播信息,并且每个soma核心102可以经由其突触协处理器112从所有其他soma核心102接收信息。实际上,在一些实施例中,用于该n个soma核心102中的每一个的n个突触协处理器112可以支持soma核心102之间的n个独立通信网络。图3图示了soma核心之间的两个独立通信网络的一个具体示例。如图3中所示,一个soma核心102a可以向系统中每个soma核心102的一个突触协处理器112广播输入数据。类似地,另一个soma核心102b可以向系统中每个soma核心102的一个突触协处理器112广播数据。在一些实施例中,通过soma核心102a和102b的广播可以同时地发生。因此,n个soma核心102可以同时地参与n个数据广播。注意到,虽然这里的广播被示为以行和列从一个soma核心到下一个soma核心连续地发生,但是这仅是为了便于说明。广播数据的每个突触协处理器112可以可替换地经由信号线122和124将数据直接广播到所有soma核心102的突触协处理器112。当然,如果需要或期望,诸如在适当位置利用某种寻址或争用机制,则允许多个soma核心102通过相同的信号线122和124来广播也是可能的。尽管图2和图3图示了图1a至图1c的计算架构中的通信的示例,但是可以对图2和图3进行各种改变。例如,硬件架构可以支持任何合适数量的soma核心,连同合适数量的突触协处理器。另外,图2和图3中的各种部件可以被组合、进一步细分、重新布置或省略,并且可以根据特定需求来添加附加的部件。此外,可以支持soma核心102之间的任何合适的通信。图4和图5图示了根据本公开的图1a至图1c的计算架构中的示例协处理器功能性。特别地,图4和图5图示了用于实现上述突触协处理器112的示例机制。注意到,这些示例实现仅用于说明,并且突触协处理器112可以以其他方式被实现。如图4中所示,可以使用上述运算单元113来实现用于第j个soma核心102的突触协处理器112。运算单元113使用从第i个soma核心102接收的传入的输入数据来执行一个或多个期望的计算。运算单元113然后将结果输出数据输出到与第j个soma核心102相关联的约简器115。约简器115可以处理来自与第j个soma核心102相关联的多个突触协处理器112的多个运算单元113的输出,并且将(一个或多个)结果提供给第j个soma核心102。可以使用程序()402来定义或控制由图4中的运算单元113执行的(一个或多个)操作,并且程序402使用一个或多个参数404来操作。程序402和(一个或多个)参数404可以存储在存储器设备114内或在(一个或多个)其他位置。可以由突触协处理器112、由相关联的soma核心102或以任何其他合适的方式来设置或控制一个或多个参数404。运算单元113可以执行的示例操作可以包括:对值进行加、减或乘;跨与soma核心102相关联的所有突触协处理器112来生成常数值;输出用于突触协处理器112的标识符;基于测试值选择多个值中的一个;或者计算值的符号或平方根倒数。如图5中所示,可以具有在硬件架构内执行的多个操作或多组操作。突触协处理器112可以使用“信道标识符”值来标识运算单元113将对传入数据执行多个可选程序()502中的哪个。“信道标识符”还可以用于控制运算单元113使用哪个(或哪些)参数504以及运算单元113生成的结果被发送到哪里。可选程序502和参数504可以存储在突触协处理器112的存储器设备114中或在(一个或多个)其他位置。在一些实施例中,可以以流水线的方式来实现运算单元113和约简器115中的每一个,并且传入数据可以表示标量值或小的值向量。在这些实施例中,可以从第i个soma核心102接收多个标量值或至少一个值向量,并且运算单元113可以将单个程序502或不同程序502应用于这些值,以产生输出值的序列。输出值的序列可以被提供给约简器115以供进一步处理。虽然图4和图5图示了图1a至图1c的计算架构中的协处理器功能性的示例,但是可以对图4和图5进行各种改变。例如,可以以任何其他定义的或可重新配置的方式实现每个突触协处理器112。图6图示了根据本公开的图1a至图1c的计算架构中的示例可编程协处理器和约简功能性。特别地,图6图示了用于控制上述突触协处理器112和约简器115的编程的示例机制。如图6中所示,约简器115被配置成从与soma核心102相关联的多个突触协处理器112接收输出数据。然后,约简器115使用来自突触协处理器112的输出执行(由标识的)至少一个操作,以生成被提供给相关联的soma核心102的至少一个结果。由约简器115执行的一个或多个计算可以包括使用来自多个突触协处理器112的输出来执行的任何合适的操作。在一些实施例中,约简器115可以执行一个或多个指令序列,以支持硬件架构中的各种功能。例如,在并行地从相关联的soma核心102的协处理器112接收数据之后,约简器115可以对接收的数据执行可编程的操作,并且将(一个或多个)结果输出到相关联的soma核心102。示例操作可以包括:将来自所有突触协处理器112的输出求和或相乘,标识来自突触协处理器112的最小或最大输出,或者选择特定突触协处理器的值作为输出。存储器设备602可以在该结构中用于存储由突触协处理器112执行的一个或多个程序()。存储器设备602还可以用于存储由约简器115执行的一个或多个程序()。存储器设备602表示任何合适的易失性或非易失性存储装置和一个或多个检索设备,诸如存储器106、114、117中的一个或多个的部分。尽管图6图示了图1a至图1c的计算架构中的可编程协处理器和约简功能性的一个示例,但是可以对图6进行各种改变。例如,硬件架构可以支持任何合适数量的soma核心,连同合适数量的突触协处理器和约简器。另外,图6中的各种部件可以被组合、进一步细分、重新布置或省略,并且可以根据特定需求来添加附加的部件。图7和8图示了使用根据本公开的通用并行计算架构的示例计算系统。如图7中所示,计算系统700包括至少一个处理器702、至少一个存储设备704、至少一个通信单元706和至少一个输入/输出(i/o)单元708。处理器702可以表示如下集成电路芯片:该集成电路芯片结合了上述的soma核心102、突触协处理器112、约简器115以及信号线122和124。处理器702执行指令,所述指令诸如可以被加载到存储器设备710中并且然后被加载到soma核心102、突触协处理器112和约简器115的寄存器或其他存储器中的指令。处理器702可以包括任何合适数量的soma核心102、突触协处理器112、约简器115以及信号线122和124。存储器设备710和持久性存储装置712是存储设备704的示例,该存储设备704表示能够存储信息和促进信息检索(该信息诸如数据、程序代码和/或临时或永久基础上的其他合适信息)的任何(一个或多个)结构。存储器设备710可以表示随机存取存储器或任何其他合适的(一个或多个)易失性或非易失性存储设备。持久性存储装置712可以包含支持数据的长期存储的一个或多个部件或设备,诸如只读存储器、硬盘驱动器、闪存或光盘。通信单元706支持与其他系统或设备的通信。例如,通信单元706可以包括促进通过有线或无线网络进行通信的网络接口卡或无线收发器。通信单元706可以支持通过任何合适的(一个或多个)物理或无线通信链路的通信。i/o单元708允许数据的输入和输出。例如,i/o单元708可以通过键盘、鼠标、小键盘、触摸屏或其他合适的输入设备为用户输入提供连接。i/o单元708还可以向显示器、打印机或其他合适的输出设备发送输出。如果需要或期望,则图1a至图1c中所示的硬件架构的多个实例可以耦合在一起并被使用,以便扩展可用于使用的soma核心102的数量。例如,多个集成电路芯片可以通信地耦合在一起,以提供任何期望数量的soma核心102。这方面的示例在图8中被示出,其中多处理器布置800可以在计算系统700中用作处理器702或者在另一个计算系统中被使用。这里的多处理器布置800包括通过至少一个高速连接来被耦合的至少两个处理器。在该示例中,四个处理器802-808通过环中的四个高速连接810来被耦合,尽管可以使用任何其他合适数量的处理器和高速连接以及处理器和高速连接的布置。每个高速连接810可以支持用于耦合图1a至图1c中所示的硬件架构的多个实例的任何合适的(一个或多个)通信路径。例如,每个高速连接810可以通信地耦合到硬件架构的每个实例的第三层级120,使得高速连接810支持硬件实例的信号线122和/或124之间的信号传输。每个高速连接810包括用于在硬件实例之间、诸如在多个集成电路芯片之间传输信号的任何合适的结构。各种类型的高速连接810可以用于支持多处理器架构。例如,可以使用两个集成电路芯片之间的光子连接来实现每个高速连接810。作为另一个示例,集成电路芯片它们自身可以支持“绗缝”封装,其中每个集成电路芯片包括沿着至少一侧的电连接,并且集成电路芯片被安装成使得不同芯片上的电连接彼此接触。然而,注意到,也可以使用任何其他或附加的高速连接810。尽管图7和图8图示了使用通用并行计算架构的计算系统的示例,但是可以对图7和图8进行各种改变。例如,图1a至图1c中所示的硬件架构可以用在任何其他合适的系统中,以执行任何合适的功能。图9图示了用于使用根据本公开的通用并行计算架构来支持先进计算功能的示例方法900。为了便于解释,关于图1a至图1c中所示的硬件架构来描述方法900。然而,方法900可以与任何其他合适的硬件架构一起使用。如图9中所示,在步骤902处,使用多个并行计算核心来执行处理操作。这可以包括,例如,一个或多个处理器中的soma核心102执行指令以执行多种多样的计算中的任何一个。处理操作可以表示由simdsoma核心102执行的简单化操作,直到由全处理器soma核心102执行的复杂操作。注意到,图9中所示的操作由于操作的依赖性而可以按次序被执行。可以并发地执行相同操作的多个独立链,并且可以使用如上所述的信道寻址来并行执行通信和突触/约简器操作。在步骤904处,来自每个计算核心的处理结果被公布到其他计算核心。这可以包括,例如,每个soma核心102通过信号线122和124向每个soma核心102的一个突触协处理器112提供其处理结果。在一些实施例中,这导致用于每个soma核心102的突触协处理器112从所有soma核心102接收处理结果。对于每个计算核心,来自计算核心的处理结果在步骤906处被处理,并且在步骤908处被约简。这可以包括,例如,与每个soma核心102相关联的突触协处理器112对来自所有soma核心102的处理结果执行某个类型的处理。下面描述可以由突触协处理器112的运算单元113执行的操作类型的具体示例。这也可以包括用于每个soma核心102的约简器115,该约简器115用于处理该soma核心102的突触协处理器112的输出。下面描述可以由约简器115执行的操作类型的具体示例。注意到,诸如当不同的程序和用于不同的数据信道时,由突触协处理器112和约简器115执行的操作可以被控制并且可以变化。在步骤910处,约简的结果被提供给计算核心。这可以包括,例如,约简器115向它们相关联的soma核心102提供输出。此时,可以利用如下操作来重复方法900:计算核心在处理操作的进一步执行期间使用约简的结果。可替换地,方法900可以结束并且稍后利用新数据来被重复。尽管图9图示了用于使用通用并行计算架构支持先进计算功能的方法900的一个示例,但是可以对图9进行各种改变。例如,图9中的各个步骤虽然被示为一系列步骤,但是图9中的各个步骤可以重叠、并行发生、以不同的次序发生或者发生任何次数。在上面图1a至图1c中所示的架构的描述中,该架构被描述为处于多级结构。例如,突触协处理器112和约简器115可以位于soma核心102上方,并且信号线122和124可以位于突触协处理器112和约简器115上方。然而,当形成总体架构时,存在可以针对部件使用的大量的物理布局。用于特定架构的确切布局可以基于多个因子来被选择或设计,并且可以按照需要或期望而变化。另外,诸如通过最小化通信路径长度、最小化由架构的部件所占用的空间、或者最小化制造或组装成本,某些方法可以用于帮助优化布局。虽然以下描述了可以使用的示例物理布局,但是这些布局仅用于说明,并且本领域技术人员可以知道或开发多个附加的布局。图10至图12图示了根据本公开的通用并行计算架构中的部件的其他示例连接性。为了便于解释,关于图1a至图1c中所示的架构的部件来描述连接。如图10中所示,布局1000包括soma核心102,该soma核心102的子集在这里被示出。另外,在图10中,用于每个soma核心102的突触协处理器112被示为在该soma核心102上方垂直对齐。在每个soma核心102与其突触协处理器112之间是约简器115。每个soma核心102使用其相应的信号线1002将数据发送到用于每个soma核心102的其相应的突触协处理器112(这意味着在每个列中的一个突触协处理器112)。突触协处理器112中的计算结果经由信号线1004被发送到用于soma核心102的约简器115。每个约简器115经由相应的信号线1006将结果发送回到其soma核心102。在一些实施例中,信号线1002和/或1004上的通信可以是点对点的,其中突触协处理器112接收数据,并且然后将其转发到线上的下一个突触协处理器112。在其他实施例中,每个信号线1002和/或1004包括多个单独的信号线(诸如多达n个信号线)。在这些实施例中,每个信号线1002可以将soma核心102直接连接到信号线1002上的每个突触协处理器112,并且每个信号线1004可以将所有突触协处理器112与相关联的约简器115直接连接。在仍其他的实施例中,每个约简器115可以集成到其相关联的soma核心102中,并且不需要信号线1006。在这种情况下,可以使用soma核心102的计算功能性来实现约简器115,或者约简器115可以具有它们自己的计算功能性。如图11中所示,布局1100包括soma核心102,该soma核心102的子集在这里被示出。图11中的soma核心102如图10中所示,并且它们通过信号线1102发送数据。然而,在图11中,每个soma核心102与多个协处理器/约简器核心1104相关联,而不是与协处理器112和单独的约简器115相关联。协处理器/约简器核心1104是组合协处理器112的功能性与约简器115的部分功能性的功能单元。当在约简器115中使用某些类型的操作、诸如如同对值求和或者寻找最小值或最大值的关联操作时,可以分发约简器的功能性。关联操作的使用允许在协处理器/约简器核心1104中的一些中生成中间结果。用于每个soma核心102的链中的最后一个协处理器/约简器核心1104生成最终的约简器结果。这可以减小信号线1106的总长度,从而可能地简化物理布局。每个协处理器/约简器核心1104包括支持对soma核心102的传入的输入数据进行处理的任何合适的结构。至少一些协处理器/约简器核心1104还包括支持二进制关联或其他约简操作的任何合适的结构。信号线1106将协处理器/约简器核心1104耦合到彼此,并且耦合到soma核心102。这里的几个信号线1106被示为从一个协处理器/约简器核心1104到相同的协处理器/约简器核心1104的环路。这些信号线1106可以表示那些协处理器/约简器核心1104内的内部通信,并且不需要表示协处理器/约简器核心1104外部的实际路径。在一些实施例中,仅仅从信号线1106接收数据的那些协处理器/约简器核心1104可以包括约简功能性,而剩余的协处理器/约简器核心1104可以仅表示突触协处理器。例如,在图11中,第一、第三、第五和第七行中的协处理器/约简器核心1104可以仅表示突触协处理器,而第二、第四、第六和第八行中的协处理器/约简器核心1104可以表示具有约简功能性的突触协处理器。因此,在图11中所示的示例中,第二行中的协处理器/约简器核心1104中的每一个可以对两个值求和,或者找到两个值中的最小值或最大值(其自身的值和来自第一行的值)并输出结果。第四行中的协处理器/约简器核心1104中的每一个可以对三个值求和,或者找到三个值中的最小值或最大值(其自身的值、来自第二行的值和来自第三行的值)并输出结果。第六行中的协处理器/约简器核心1104中的每一个可以对两个值求和,或者找到两个值中的最小值或最大值(其自身的值和来自第五行的值)并输出结果。第八行中的协处理器/约简器核心1104中的每一个可以对四个值求和,或者找到四个值中的最小值或最大值(其自身的值、来自第四行的值、来自第六行的值和来自第七行的值)并输出结果。来自第八行中的每个协处理器/约简器核心1104的结果将表示针对相关联的列的总和或最大值/最小值。注意到,这表示了一个方式,约简器115的功能性可以以该方式被分发,并且它特定于其中使用八个soma核心102的实施例。也可以使用其他方法,诸如使用不同数量的soma核心102和不同数量的相关联的协处理器的其他方法。还注意到,对值求和以及寻找最小值/最大值仅仅是可以被分发在协处理器/约简器核心1104中的操作类型的示例。进一步注意到,通过约简功能性使用的输入的数量和输入值的(一个或多个)来源可以按照需要或期望而变化,并且实现约简功能性的协处理器/约简器核心1104的确切位置可以按照需要或期望而变化。例如,输入的数量可以取决于架构的总体大小而变化,架构的总体大小诸如soma核心的数量和相关联的协处理器的数量。另外,针对约简操作所使用的输入不仅需要来自协处理器/约简器核心1104。诸如当输入包括来自其他约简器的输出时,针对约简操作所使用的输入还可以或可替换地来自一个或多个外部代理。这与图10中所示的示例形成对比,在图10中,使用单片约简器实现方式,并且列中的所有突触协处理器112与一个约简器115通信。其他可能的实现方式可能具有每列一个约简器,以及每芯片/半导体管芯一个或多个附加约简器,其中(一个或多个)附加约简器可以用于约简多个芯片/半导体管芯之间的通信业务。信号线1102和1106可以用于以合适的方式将部件耦合在一起,并且信号线1102和1106可以使用任何合适的(一个或多个)技术来被制造。取决于实现方式,图11中的部件可以形成在单个设备中或者形成在被耦合在一起的多个设备中。例如,图11中所示的所有部件可以在单个集成电路芯片中被制造,或者图11中所示的不同部件可以在不同的集成电路芯片中被制造,所述不同的集成电路芯片使用如同串行点对点连接、高速总线或其他连接之类的电连接被耦合在一起。图12图示了示例布局1200,在示例布局1200中,使用多个集成电路芯片1202和1204来实现soma核心102、突触协处理器112和约简器115。注意到,可以使用协处理器/约简器核心1104而不是这里的单独的突触协处理器112和约简器115。还注意到,如上所述,至少一个附加约简器115可以用于进一步约简在集成电路芯片1202和1204之间发送的数据。一个或多个通信链路1206或其他通信接口可以用于耦合不同集成电路芯片1202和1204中的部件。例如,(一个或多个)通信链路1206可以包括从芯片1202中的soma核心102到芯片1204中的突触协处理器112的连接,以及从芯片1204中的约简器115到芯片1202中的soma核心102的连接。这种类型的布局可以允许包含不同数量或类型的soma核心102和突触协处理器112/约简器115的集成电路芯片的不同组合。尽管图10至图12图示了通用并行计算架构中的部件的物理布局的示例,但是可以对图10至图12进行各种改变。例如,硬件架构可以支持任何合适数量的soma核心,连同合适数量的突触协处理器、约简器、协处理器/约简器核心或信号线。另外,如上所述,可以使用各种各样的物理布局,并且图10至图12不将本公开限制于仅图示的布局。图13至图19图示了根据本公开的通用并行计算架构中的示例通信方案。支持soma核心102与它们的突触协处理器112之间的数据传输的网络或其他通信机制的实际实现方式可以采取许多不同的形式。以下描述了这些通信机制的几个具体示例,但是任何其他合适的通信方案也可以用于在soma核心102与它们的突触协处理器112之间传输数据。另外,下面提供的示例通信方案等同地应用于具有或不具有在物理上并置的soma核心102和它们相应的突触协处理器112的实现方式。假设具有每soma核心102的n个soma核心102和n个突触协处理器112的实现方式。在图13中,每个soma核心102具有到其突触协处理器112中的一个的单个连接1302,并且用于该soma核心102的剩余的突触协处理器112被菊花链接在一起。该链中的第一突触协处理器112从soma核心102接收数据,并且该链中的所有其他的突触协处理器112从该链中的前一个突触协处理器112接收数据。在该示例中,突触协处理器112一个接一个地按顺序从soma核心102接收数据,直到soma核心102的所有突触协处理器112都具有数据为止。不需要使用单个菊花链。例如,在图14中,每个soma核心102可以具有到突触协处理器112的多个链的多个连接1402。每个链中的第一突触协处理器112接收来自soma核心102的数据,并且按顺序传递该数据通过每个链中的突触协处理器112。数据可以并行提供给不同的链,与图13相比,允许更快地将数据递送给所有突触协处理器112。注意到,虽然这里示出了两个链,但是可以使用任何数量的突触协处理器链。也不需要使用菊花链接。例如,在图15中,soma核心102可以具有到其突触协处理器112中的每一个的专用连接1502。这里,突触协处理器112从soma核心102直接接收数据,并且突触协处理器112中的全部可以并行接收数据。支持从单个soma核心102到其突触协处理器112中的一个的通信并且对来自该突触协处理器112的通信进行分支也是可能的。例如,图16图示了单个连接1602将soma核心102耦合到一个突触协处理器112,并且多个连接1604将该突触协处理器112耦合到突触协处理器112的多个链。数据可以从soma核心102提供给第一突触协处理器112,并且然后该数据可以并行提供给突触协处理器112的多个链。注意到,虽然这里示出了突触协处理器112的三个链,但是可以使用任何数量的链。还注意到,在将来自这两个或更多个突触协处理器112的通信进行分支之前,多于一个的突触协处理器112可以从soma核心102直接接收数据。进一步可能的是将突触协处理器112布置在树或其他多级的层次结构中。例如,图17图示了:单个连接1702将soma核心102耦合到一个突触协处理器112。多个连接1704将该突触协处理器112耦合到另一层级的突触协处理器112,并且多个连接1706将该层级的突触协处理器112耦合到又一层级的突触协处理器112。该配置可以被重复附加的次数,以支持突触协处理器112在任何合适数量的分层的层级上的使用。注意到,每个突触协处理器112在从左向右移动时在下一层级中被耦合到三个突触协处理器112,这仅用于说明。可以按照需要或期望来支持任何其他合适的树配置。注意到,另一个可能的布置具有多于一个树,这意味着多于一个突触协处理器112从soma核心102直接接收数据,并且充当单独的树的根节点。虽然图13至图17中的布局图示了通信路径的示例配置,但是这些仅用于说明。也可以使用这些方法的各种组合,只要每个突触协处理器112可以从其相关联的soma核心102接收数据。另外,也可以使用诸如网状网络之类的其他或附加的方法,该网状网络将soma核心102通信地耦合到相邻的突触协处理器112,然后突触协处理器112通过网状联网将数据传递到其他突触协处理器112。网格的适当结构保证了每个突触协处理器112接收数据。虽然到目前为止用于通信方案的设计已经假设了soma核心可以私下与其突触协处理器112进行通信,但是情况不一定如此。例如,如图18中所示,一个可能的替代实现方式是要对于soma核心102使用虚拟网络1802,其中数据经由网络1802从soma核心102有效地路由到它们的突触协处理器112。可以使用由突触协处理器112它们自身执行的逻辑或者使用突触协处理器112的外部的部件来实现虚拟网络1802。为了实现虚拟网络1802,通过虚拟网络1802发送的每个数据分组都具有元信息,该元信息允许数据分组到达(一个或多个)正确的目的地。存在指定该元信息的各种方式。例如,在一些实施例中,每个数据分组可以具有用于始发soma核心102的标识符。通过使用路由表1804(静态或动态),数据分组可以从它们相应的soma核心102被转发到适当的突触协处理器112。一个具体的实现方式可以包含对于每个突触协处理器112使用静态路由表,其中地址被用作去往路由表中的索引。在其他实施例中,每个数据分组可以具有通过发送soma核心102所指定的一个或多个目的地地址,并且虚拟网络1802可以根据它们的目标地址路由数据分组。任何合适的机制都可以用于指定始发soma核心的标识符或目标地址。示例机制包括将显式信息附接到每个数据分组或将每个数据分组存储在特定地址处(该特定地址诸如在soma核心的地址空间中),其中指定的地址隐含地传达所需要的信息。作为又一个示例,使用由两个或更多个参与者(soma核心102或突触协处理器112)共享的资源来实现通信是可能的。至少一个参与者具有对共享资源的写入访问,并且至少一个其他参与者具有对共享资源的读取访问。可以以各种方式实现共享资源。例如,“存储和转发”网络表示其中数据由一个或多个部件存储并由一个或多个部件检索(转发)的网络。“存储和转发”网络允许每个soma核心102通过将数据存储在特定地址来将数据传送到突触协处理器112,并且然后突触协处理器112可以从相同的地址读取该数据。图19中示出了示例,其中共享存储器1902用于将数据从soma核心102传送到协处理器/约简器核心1104(尽管也可以使用突触协处理器112和约简器115)。共享存储器1902包括多个存储器位置1904。soma核心102可以将数据写入至那些存储器位置1904,并且突触协处理器112或协处理器/约简器核心1104可以从那些存储器位置1904读取该数据。这可以以如下方式来完成:该方式在内部针对向突触协处理器112或向协处理器/约简器核心1104广播的soma核心102的通信模式进行优化。在该示例中,存储器接口1906和1908被提供并且被用于将数据写入至存储器位置1904或从存储器位置1904接收数据。存储器接口1906和1908中的每一个可以接收地址,并且存储器接口1906也可以接收数据。存储器接口1906将接收到的数据写入至接收到的地址,并且存储器接口1908从接收到的地址读取所请求的数据。然而,注意到,如果soma核心102和突触协处理器112或协处理器/约简器核心1104被配置成从指定的存储器位置读取以及向指定的存储器位置写入,则可以省略存储器接口1906和1908。突触协处理器112或协处理器/约简器核心1104可以以任何合适的方式访问共享存储器1902。例如,当数据存储在共享存储器1902中时,突触协处理器112或协处理器/约简器核心1104可以轮询该共享存储器1902以标识新的数据,或者突触协处理器112或协处理器/约简器核心1104可以接收带外的通知。具有支持该设计的软件实现是可能的,诸如如下的软件实现:其中使用变量在部件之间传送数据来实现共享存储器1902。当然,这样的变量将存储在执行设备的存储器中,但是该存储器将不需要特殊的配置。也可以以其他方式实现图19中所示的功能性。例如,实现邮箱或其他隔离的存储器空间的专用硬件也可以用于促进通信。在一些实施例中,可以有n个soma核心102,但是每个soma核心102可以不具有n个突触协处理器112。取而代之,每个soma核心102可以使用更小数量的实际突触协处理器112来实现n个“合逻辑的”突触协处理器。在那些实施例中,合逻辑的通信链路的子集可以被物理地实现,并且上述的不同方法可以被简化。尽管图13至图19图示了通用并行计算架构中的通信方案的示例,但是可以对图13至图19进行各种改变。例如,可以使用任何数量的其他或附加的技术来在soma核心102与相关联的突触协处理器112之间传送数据。另外,这里所示的任何技术都可以用在包括突触协处理器112和约简器115或协处理器/约简器核心1104的架构中。在上述实施例中的一些实施例中,每个soma核心102可以对其突触协处理器112编程以执行至少一个程序,并且一旦传入的输入数据到达,就可以执行(一个或多个)程序。用于soma核心102的约简器115使用来自该soma核心102的所有突触协处理器112的程序的结果来执行至少一个程序。在特定实施例中,在给定固定的向量大小且没有循环的情况下,每个程序通常可以在o(1)时间内执行,并且程序通常可以在o(logn)时间内执行。另外,在特定实施例中,突触协处理器112和约简器115对每个soma核心102执行的共同处理可以被表达为:这里,i表示发送方soma核心102的身份(或者soma核心102的身份加上soma核心102的soma组标识符),并且n表示soma核心102的数量(或者soma核心102的数量乘以soma组的数量)。另外,j表示信道标识符,并且p表示在突触协处理器112中使用的一个或多个参数(诸如参数402或502)(诸如状态或局部变量,其可以是或可以不是特定于信道的)。此外,表示第i个soma核心102的输出,并且表示作为对于信道j中的soma核心102的结果由约简器115提供的输出。此外,表示由突触协处理器112使用传入数据以及可能的参数p针对第j个信道执行的功能,并且表示由约简器115使用突触协处理器112的输出针对本地soma核心102执行的功能。函数的示例可以包括:这里,a、b、c和r可以表示突触协处理器112中的寄存器的名称,并且x可以表示来自soma核心102的输入值(尽管也可以替代地使用突触协处理器112的另一个寄存器)。(选择)操作(诸如通过执行简单的非零测试)测试第一个参数中的条件,并且基于测试的结果返回第二个参数或第三个参数。(索引)操作可以特定于具有多个soma组的实现。每个soma组可以包括相同数量的soma核心102。下面提供了soma组的更多细节。在一些实施例中,由突触协处理器112实现的功能都不包含循环。函数的示例可以包括:这里,表示提供给soma核心102的约简器115的输出,并且表示由约简器115从突触协处理器112接收的输入(来自相同的突触协处理器112的多个值可以在具有多个soma组的实现中获得)。(最大)和(最小)函数中的每一个可以返回(i)最大值或最小值和(ii)提供最大值或最小值的突触协处理器112的索引值i二者。可以通过使用一个或多个寄存器使函数的结果对soma核心102可用。在这些实施例中,可能不利用在循环中运行并且主动检索(并且如果必要的话,等待)输入的传统程序来编程突触协处理器112。取而代之,每个信道可以与程序相关联,并且程序可以当数据到达信道时被标记为可执行的,并且当计算资源变得可用时被最终执行。当所有突触协处理器程序完成时,可以计算约简程序的结果。在具有警告(caveat)的情况下,一旦最小数量的突触协处理器结果可用时,由约简程序对结果的计算就可以开始,所述警告诸如在下面提及的警告。约简程序的结果可以保存在每信道的寄存器中。当soma核心102发布读取约简结果的指令时,约简器115然后可以准备好为该信道产生下一个约简结果。在那之前,针对该信道的约简器115的操作可以被阻止。如果需要,可以对信道分配以及突触协处理器112和约简器115中的寄存器分配进行抽象。例如,替代于在程序规范中引用这些资源中的每一个的绝对索引,可以使用分配机制来实现多程序执行的等效。例如,当加载程序(包括和程序)时,可以从寄存器文件的可用寄存器中选择所使用的实际寄存器,并且可以选择可用的信道。不必创建显式并发性,因为程序是基于传入数据被调用的。在完成程序时,可以使寄存器和信道方面的已用资源再次可用。由突触协处理器112和约简器115执行的实际指令不必知道关于此的任何。相反,上传的程序代码的指令可以使用绝对的寄存器号或索引,并且抽象可以发生在更高的层级,在更高的层级中,在由soma核心102加载程序之前先基于程序和可用资源的需要进行适当的代码生成或重写。一旦最小数量的突触协处理器结果可用,就开始通过约简程序对结果进行计算的一个示例警告如下。取决于操作和可能的数据类型,硬件架构可以支持如下模式:该模式可以通过不遵循所指定的操作次序、以可重复性为代价显著加速程序的执行。例如,浮点操作由于取消的可能性而不遵循关联性规则。此情况的具体示例是当必须以相同的次序执行浮点加法以保证每次产生完全相同的结果时。这可能在如下情况中创建降速(slowdowan):一个输入值尚不可用而稍后按操作次序的其他输入值可用。要么约简器115可以被编程为等待输入值,使得总是保持操作次序(这导致降速),要么约简器115可以被编程为无序地执行求和(这允许更快地获得结果,但是具有潜在的更低的可重复性)。如上所述,硬件架构的实现可以包括多于一组的soma核心102。这样的方法可以在单个集成电路中实现soma组,或者不同的soma组可以被实现为单独的集成电路(并且集成电路可以诸如利用电或光连接被耦合在一起)。如果整个数据集可以被映射到soma核心102,则利用这种类型的硬件架构可以显著加速几种类型的程序(包括下面更详细讨论的那些)。为了促进具有多个soma组的解决方案,取决于每个突触协处理器112的通信伙伴的数量,可以复制一些资源和操作。例如,在简单的模型中,每个突触协处理器112可以从确切的一个soma核心102接收结果。在具有多个soma组的解决方案中,每个突触协处理器112可以从每soma组的一个soma核心102接收结果。在突触协处理器程序中,如果与数据传送相关的资源(诸如用于保持传输的数据的寄存器和用于保持结果的寄存器)被复制,则这可以正如在具有单个soma组的实现中那样被表达。因此,在存在用于每个突触协处理器寄存器的s个副本的情况下,可以实现单个处理器与多达s个soma组一起工作。为了使能实现每soma组参数,提供对成为数据源的soma组号的访问可以是有用的或必要的。这可以使用上述的(索引)操作来被实现,该(索引)操作返回除了针对特定通信所使用的soma核心索引之外的soma组号。如果多个soma组被物理地分离,则多个soma组的实现可以以任何合适的方式被实现,所述方式诸如通过使用光子学或其他高速的互连来耦合多个集成电路。在每个soma核心102将其结果写入至专用总线的情况下,可以连接每个soma组中的不同soma核心102的相应总线,这将每个总线从通信总线改变为总线。例如,如果传输的数据携带诸如以最通用的形式[soma组id,somaid,信道id]之类的完整的地址,则这可以被准许,从而只要可以确保每个soma组中的每个soma核心102上的突触协处理器112接收数据,就允许数据在每soma组的基础上被路由。此外,存在用于实现如下(一个或多个)网络的多个可能的方法:该(一个或多个)网络被用于使用信号线122和124将soma核心102耦合到突触协处理器112。例如,如上所述,n个独立网络中的每一个可以具有n个soma核心102中的一个作为源,并且将该soma核心102连接到n个突触协处理器112(每个soma核心102中的一个)。虽然用于每个soma核心102的每个输出的专用网络将使数据传送中可能的争用最小化,但是这意味着当没有传输正在发生时,资源未被使用。理想情况下,所有的soma核心102都以步伐一致(lockstep)的方式工作并且大约同时传输数据,这可以仅利用专用信号线来被良好地处理。实际上,soma核心102可能由于各种因素而失去同步,所述各种因素诸如如等待资源之类的执行中的微小影响,或如分支预测之类的不同的动态决策。在那个情况下,传输将不会在确切的相同时间发生。由于传输的数据通常很小,因此使用一个(或小数量)网络来连接soma核心102可能是足够的,而不显著降速,并且它将提供改进的资源利用。注意到,在上述的地址[soma组id、somaid、信道id]中,如果每soma组的每个soma核心102都具有将其连接到每个soma核心102上的突触协处理器112的其自己的专用网络,则可以丢掉somaid。连接网络的另一个实现可以具有每soma组的一个单个网络,并且所有数据分组都具有附接到它们的完整地址。存在用于在soma核心102之间创建网络的各种方式。一个可能性是要从中央起始点向每个接收方发送所有数据分组。数据分组也可以从该起始点容易地被发送到其他soma组。该方法的优点包括直接递送、高吞吐量(没有与去往不同目标的传输的冲突)和低延迟。一个缺点是高成本,特别是在每soma或每组soma的一个网络的情况下的高成本。另一个方法将是要提供与有限组的soma核心102的点对点连接,并且让接收方进一步分发数据分组。接收方可以连接到soma核心102的不同子集,并且可以选择这些子集以确保所有soma核心102都被连接。理想情况下,可以选择子集来减小或最小化网络的“直径”,其中网络的直径是指两个核心102之间的最大距离(为达到目标而步进通过的soma核心102的数量)。在给定对于每soma核心102的连接数量的固定上限的情况下,该程度的超立方体架构可以最小化直径。为了确保所有soma核心102接收数据并且跨尽可能多的单独连接而散布传输,可以使用各种方法。例如,公知的算法可以将发送方soma核心102的索引以及从其接收数据的链接考虑在内。在那些情况下,可以以固定模式发送来自每个soma核心102的数据,但是对于单独的soma核心102,模式可以不同,从而最大化对连接的利用。该方法还允许消除每个网络的中央起始位置,因为每个soma核心102可以仅与所选的邻居通信,并且如果需要的话,该邻居可以转发数据。网络中的一个或多个soma核心102可以负责向其他soma组发送数据,并且不同的soma核心102可以负责与不同的soma组通信。也可以使用动态算法。例如,每个接收到的分组可以从一个soma核心102转发到所有邻居(除了发送该分组的soma核心102)。每个邻居soma核心102然后可以保持跟踪它是否已经察觉该分组。如果察觉,则可以简单地丢弃该分组。如果未察觉,则用于相邻soma核心102的突触协处理器112接收并转发该分组。该方法的一个优点在于网络可以更快地被完全洪泛(flood)。该方法的另一个优点在于将多个soma组集成到设计中是更简单的。将总线架构(其从来不必对于发送方冲突进行检查)改变为架构可能是一大步。如果一个soma组的soma核心102将分组转发到另一个soma组中的另一个soma核心102,则后者可以类似于其将如何对待任何其他传入分组那样对待该分组。事实上,soma间的核心链路可以被看作如同正常的soma间那样的soma间组连接。如上所述,可以使用多个新指令来促进突触协处理器112和约简器115的使用。这些指令包括由soma核心102执行的指令,以及提供给突触协处理器112和约简器115并由突触协处理器112和约简器115执行的指令。以下呈现可以用于支持新的硬件架构的新指令类型的示例。注意到,虽然下面描述了特定的指令,但是在硬件架构中可以按照需要或期望而支持其他或附加的指令。表1说明了可以由soma核心102和突触协处理器执行的示例指令。在表1中,表示soma核心寄存器(其诸如在存储器设备106中),并且表示突触协处理器寄存器(其诸如在存储器设备114中)。指令描述使用特定信道将soma核心的值从寄存器广播到(其他)soma核心的突触协处理器(这可以与其他信道上的广播并行完成)。从本地约简器接收(信道)中最后一个计算的结果。这些结果存储在提供的寄存器中。对于某些约简操作,返回两个结果,所述约简操作然后需要两个结果寄存器。使用特定信道将soma核心的值从寄存器广播到(该)soma核心的所有突触协处理器。从指定的信道接收值并且将其存储在突触协处理器的寄存器中。数据源可以是“发送”或“存储”指令。然后,该事件可以触发进一步的突触协处理器指令。在完成时,如表2中所示,约简步骤可选地利用不同的操作而发生。将soma核心标识符提供到寄存器中表1。表2说明了可以由约简器115执行的示例操作。约简操作可能对数地(logarithmically)花费许多周期,因此约简操作可以受益于在不同的树层级中流水线化多个这样的操作。指令描述对所有突触协处理器的输出求和,并且将总和存储在寄存器中。从所有突触协处理器的输出的第一个结果标识它们的最小值,并且将该最小值存储在寄存器中。将突触协处理器提供最小值的第二个结果存储在寄存器中。从所有突触协处理器的输出的第一个结果标识它们的最大值,并且将该最大值存储在寄存器中。将突触协处理器提供最大值的第二个结果存储在寄存器中。将针对特定信道的特定突触协处理器的结果的值存储在寄存器中。表2。在一些实施例中,每个突触协处理器112可以执行simd操作。每个soma核心102可以在特定信道上的数据通信之前将针对该信道的指令序列上传到本地突触协处理器112。附加地,每个soma核心102可以通过广播来将针对该信道的指令序列上传到其所有的突触协处理器112。soma核心102可以进一步将如下操作编程到约简器115中:一旦必要的输入数据变得可用时,就应当执行该操作。表3说明了可以被上传到突触协处理器112以供执行的指令类型的示例。说明描述将突触标识符提供到突触协处理器的寄存器中。在利用多个soma组的实现方式的情况下,该输出也包括soma组的区别(differentiation)。计算两个突触协处理器寄存器和的总和,并且将结果存储在中计算两个突触协处理器寄存器和的差,并且将结果存储在中计算两个突触协处理器寄存器和的乘积,并且将结果存储在中计算两个突触协处理器寄存器和的最小值,并且将结果存储在中计算两个突触协处理器寄存器和的最大值,并且将结果存储在中计算突触协处理器寄存器的平方根倒数,并且将结果存储在中基于选择两个突触协处理器寄存器和中的一个,并且将所选的值存储在中将(一个或多个)值(以及在某些情况下为)和信号完成传递到约简器表3。上述硬件架构可以加速机器学习、科学计算、视频游戏和其他领域中的一大类算法。基于上面的指令类型,以下描述了可以如何通过使用本专利文件中所述的硬件架构来加速和解决六个示例类型的问题。作为第一个示例,在深度学习中使用的可以被所提出的架构加速的一个算法是稀疏编码。在稀疏编码的最简单的形式中,其采用以的归一化输入向量x,并且计算使能量e最小化的归一化稀疏输出向量y,能量e被定义为:这里,f是因子矩阵,并且。另外,表示y中的条目的绝对值的总和,并且是控制输出稀疏性的常数。在非监督式学习模式中,选择因子矩阵f以使跨一组训练输入的能量的总和e最小化。用于实现这两个最小化的一个方式是梯度下降,其中负梯度被定义为:继之以约束的施加。这里,表示y中的条目的符号向量。为了计算,训练输入x和输出y可以驻留在共享的虚拟或本地soma存储器中。因子矩阵f(其不是稀疏的)的条目可以驻留在突触协处理器112的寄存器中。具体地,因子矩阵f的条目可以驻留在第j个soma核心102的第k个突触协处理器112的寄存器中。由soma核心102广播到它们的突触协处理器112的simd指令可以使用相对寻址,使得第k个soma核心102可以同时跨soma核心102将输入条目广播到第j个soma核心102的第k个突触协处理器112。第j个soma核心102的第k个突触协处理器以simd方式执行乘法,该然后由第j个soma核心102的约简器115在对数时间内跨该soma核心的突触协处理器112求和,以产生,并且因此产生第j个条目。为了计算针对f的梯度下降,条目按比例递增到。第j个soma核心102刚刚已计算了,并且它的第k个突触协处理器112已经接收到最新的值并且将其存储在突触协处理器112的寄存器中。因此,第j个soma核心102将广播到其第k个突触协处理器112,然后该第k个突触协处理器112以simd方式将结果乘以所存储的值,并且将该值的倍数加到被存储在该突触协处理器112处的值。为了在伪代码中表达此,由于soma核心102是多指令、多数据(mimd)的核心,因此采用了如下约定(convention):其中i表示指令被放置在其上的soma核心102的索引。由于mimd,因此指令可以通过i被参数化。相比之下,由于突触协处理器112可以是simd内核,因此soma核心102可以向其所有的突触协处理器112广播相同的指令序列。为了清楚起见,寄存器被标有变量名称,而不是寄存器号。在给定这些约定的情况下,可以使用如下硬件架构来解决针对深度学习问题的稀疏编码。作为第二个示例,在深度学习中使用的可以被所提出的架构加速的另一个算法包含受限制的玻尔兹曼机器(boltzmannmachine)。在这种类型的网络中,可以通过如下的玻尔兹曼分布使取值为的输入向量x和输出向量y在概率上相关:这里,z是配分函数(partitionfunction),并且能量可以以其最简单的形式被表达为:该网络在如下意义上是“受限制”的:在给定输入情况下,该输出是有条件地独立的,并且反之亦然。这意味着,在给定输入的情况下,可以利用被表达为如下的概率来独立地采样该输出:其中是logistic函数。用于该网络的对比发散非监督式训练算法对于耦合f取梯度将是:其中x是训练输入,y如上面所解释的从x采样,从y采样,并且从采样。为了实现该问题,训练输入和输出可以驻留在共享的虚拟或本地soma存储器中。耦合可以驻留在突触协处理器112的寄存器中。具体地,每个耦合可以驻留在第j个soma核心102的第k个突触协处理器112的寄存器中。为了解释该算法如何被加速,首先解释采样步骤。在给定输入向量x的情况下,经由同时跨soma核心102的simd通信,第k个soma核心102将输入条目广播到第j个soma核心102的第k个突触协处理器112。第j个soma核心102的第k个突触协处理器112然后以simd方式执行乘法,该然后由第j个soma核心102的约简器115在对数时间内跨该soma核心的突触协处理器112求和以产生。然后,第j个soma核心102计算该总和的逻辑函数,并且将其用作用以从随机采样的概率。接下来,对梯度的计算发生。以训练输入x开始,执行如上所述的采样步骤三次,以在第j个soma核心102中产生y,在第k个soma核心102中产生,并且在第j个soma核心102中产生。第j个soma核心102向其所有的突触协处理器112广播和,以将和存储在那里的寄存器中。然后,高带宽的通信被用于同时将从第k个soma核心102传输到每个soma核心102的第k个突触协处理器112。最后,第j个soma核心102的第k个突触协处理器112计算,并且从它所保持的值中减去该的倍数。在伪代码中,前向采样算法可以被表达为:反向采样可以是类似的。在给定采样的情况下,梯度算法可以被表达为:作为第三个示例,可以从更好的通信中获益的不同机器学习方法是分层聚类。最简单的分层聚类方法以其自身的聚类中的每个项开始。然后,在每个层次结构的层级处,分层聚类方法将通过最小的最小距离而被分离的两个聚类分组成单个聚类。改进的分层聚类方法的第一个步骤包含计算聚类之间的距离的初始矩阵。每个活动的soma核心102可以表示一聚类,并且其突触协处理器112可以存储到其他聚类的平方距离。在第一个迭代中,每个聚类是单个项,因此每个活动的soma核心102将其项的坐标广播到其他soma核心102的对应突触协处理器112,并且其突触协处理器112并行计算其他项到其自身项的平方距离。改进的分层聚类方法的第二个步骤包含找到聚类之间的最小平方距离。每个soma核心102使用最小操作(通过其约简器115)来减小其自身的突触协处理器的平方距离,并且每个soma核心102向所有soma核心102广播该数量,所有soma核心102再次利用最小操作(通过它们的约简器115)来减小该值。假设在相等值的情况下存在可预测的平局决胜(tiebreaker)(诸如选择最低索引的突触协处理器的值),则第二个最小操作在所有soma核心102上产生相同的结果。替代方案是要在一个soma核心102上执行第二个最小操作,并将结果广播回到所有其他的soma核心102。改进的分层聚类方法的第三个步骤包含找到通过该最小距离而被分离的两个聚类。与最佳聚类相对应的soma核心102计算到除了其自身之外的soma核心102的最小距离,并且然后该次最佳的(nextbest)聚类被广播回到所有soma核心102。改进的分层聚类方法的第四个步骤包含将两个选择的聚类组合成单个聚类。每个soma核心102取得其到最佳和次最佳聚类的距离中的最小值,将该最小距离存储回与最佳聚类相对应的突触协处理器112中,并且在该soma核心的信道上广播该最小距离。与最佳聚类相对应的soma核心102然后使其所有的突触协处理器112利用这些广播的该最小距离来替换它们的距离。最后,次最佳的soma核心102及其对应的突触协处理器112退出计算。然后重复第二个步骤直至第四个步骤,直到存在仅单个聚类为止。在伪代码中,(对于每个坐标重复进行的)计算平方距离矩阵的第一个步骤可以被表达为:找到聚类之间的最小距离的第二个步骤可以被表达为:找到通过最小距离而被分离的两个聚类的第三个步骤可以被表达为:将两个最近的聚类组合(并且停用其它们中的一个)的第四个步骤可以被表达为:作为第四个示例,另一个流行的机器学习方法包含贝叶斯网络,该贝叶斯网络将许多变量的复杂联合概率函数分解成条件概率的乘积,其中每个条件概率仅包含小数量的变量(直到网络的入度)。然后该问题是要计算每个变量的边缘分布。在标准的串行架构中,这可以使用信仰传播算法(beliefpropagationalgorithm)来完成,该信仰传播算法花费的时间与如下的式(9)成比例:该算法迭代地计算以上数量的乘积,并且然后计算每个这样的乘积的个总和。使用新的硬件架构,只要存在充足的soma核心102和突触协处理器112,这就可以在常数时间内被完成。对任何一个soma核心102的扇入仅是,因此这不使通信饱和。为了计算乘积,可以要么累加这些的总和(其中在soma核心102中执行和操作),要么扩展约简器115的可用累加方法以包括乘积以及总和。作为第五个示例,可以利用该架构被加速的、与人工智能无关的其他应用包括分子模拟和虚拟现实。对于这些应用而言,假设突触协处理器112具有用于除了乘法和加法之外的平方根倒数运算的硬件。这两个应用中的高价步骤是类似的。聚焦于分子模拟,该高价步骤是库仑势(coulombpotential)的计算:其中是第j个电荷,并且是第j个电荷与第k个电荷之间的距离。高带宽的通信负责跨所有j和k同时从第k个soma核心102向第j个soma核心102的第k个突触协处理器广播第k个电荷的坐标。在每个突触协处理器112中,加法和乘法用于计算,并且然后平方根倒数用于计算。最后,由第j个soma核心102使用累加器(约简器115)跨其突触协处理器112来计算总和。作为第六个示例,可以通过所提出的架构从二次时间加速到常数时间的另一类算法包含几何算法,诸如凸包算法。这些算法可以不需要所提出的架构的非线性能力,并且可以仅依赖于所提出的架构的矩阵处理能力。所示结果表明,这些算法在高维度中的一个关键步骤是动态行列式计算。可以通过矩阵向量乘法在二次时间内连续地完成该计算。然而,使用所提出的架构,这些乘法可以被减少到常数时间。注意到,上面提供这些示例仅用于说明特定解决方案可以如何通过使用本专利文件中所述的硬件架构来解决特定问题。当然,硬件架构可以用于执行其他功能。此外,可以使用利用硬件架构而实现的其他解决方案来解决上述特定问题。本专利文件中所述的硬件架构和相关联的指令/操作取决于实现方式可以提供优于现有方法的各种优点。例如,本公开提供了如下硬件架构:该硬件架构(如果利用充足数量的部件来被实现的话)允许该架构与人脑的能力相匹敌。此外,该硬件架构的功能性可以用于改进诸如人工智能、深度学习、分子模拟和虚拟现实之类的其他领域的计算。在一些实施例中,本专利文件中所述的各种功能由计算机程序实现或支持,该计算机程序由计算机可读程序代码形成,并且被嵌入在计算机可读介质中。短语“计算机可读程序代码”包括任何类型的计算机代码,其包括源代码、目标代码和可执行代码。短语“计算机可读介质”包括能够被计算机访问的任何类型的介质,诸如只读存储器(rom)、随机存取存储器(ram)、硬盘驱动器、光盘(cd)、数字视频光盘(dvd)或任何其他类型的存储器。“非暂时性”计算机可读介质不包括传输暂时性电信号或其他信号的有线、无线、光学或其他通信链路。非暂时性计算机可读介质包括其中数据可以被永久地存储的介质,以及其中数据可以被存储并随后被重写的介质,诸如可重写光盘或可擦除存储器设备。阐明贯穿本专利文件使用的某些单词和短语的定义可能是有利的。术语“应用”和“程序”是指一个或多个计算机程序、软件部件、指令集、过程、功能、对象、类、实例、相关数据或其适于在合适的计算机代码(包括源代码、目标代码或可执行代码)中实现的一部分。术语“通信”及其派生词包括直接和间接通信二者。术语“包括”和“包含”及其派生词意指包括而非限制。术语“或”是包含性的,其意指和/或。短语“与……相关联”及其派生词可以意指:包括、包括在内、与……互连、包含、包含在内、连接到或者与……连接、耦合到或者与……耦合、与……可通信、与……合作、交错、并列、接近于、结合到或与……结合、具有、具有……的属性、具有同……的关系或具有与……的关系等等。短语“至少一个”当与项目的列表一起使用时意指:可以使用一个或多个所列项目的不同组合,并且可能需要列表中的仅一个项目。例如,“a、b和c中的至少一个”包括以下组合中的任何一个:a或b或c,a和b,a和c,b和c以及a和b和c。本专利文件中的描述不应当被解读为暗示任何特定的元件、步骤或功能是必须被包括在权利要求范围内的必要或关键元件。另外,除非在特定权利要求中明确地使用了继之以标识功能的分词短语的确切的词语“用于……的装置”或“用于……步骤”,否则权利要求中没有一项旨在关于所附权利要求书或权利要求元素中的任何一个援引35u.s.c.§112(f)。权利要求内诸如(但不限于)“机构”、“模块”、“设备”、“单元”、“部件”、“元件”、“构件”、“装置”、“机器”、“系统”、“处理器”、“处理设备”或“控制器”之类的术语的使用被理解为并且旨在指代相关领域中的技术人员已知的结构,如由权利要求书本身的特征所进一步修改或增强的,并且不是旨在援引35u.s.c.§112(f)。虽然本公开已经描述了某些实施例和通常相关联的方法,但是这些实施例和方法的变更和置换对于本领域技术人员而言将是清楚的。因而,示例实施例的以上描述不限定也不约束本公开。在不脱离如由以下权利要求书限定的本公开的精神和范围的情况下,其他改变、替换和变更也是可能的。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1