CN117435546A - 多核处理器堆栈以及多核处理器 - Google Patents
多核处理器堆栈以及多核处理器 Download PDFInfo
- Publication number
- CN117435546A CN117435546A CN202311167066.5A CN202311167066A CN117435546A CN 117435546 A CN117435546 A CN 117435546A CN 202311167066 A CN202311167066 A CN 202311167066A CN 117435546 A CN117435546 A CN 117435546A
- Authority
- CN
- China
- Prior art keywords
- network
- layer
- core processor
- overlay
- chip
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000012545 processing Methods 0.000 claims abstract description 169
- 230000015654 memory Effects 0.000 claims description 56
- 238000004364 calculation method Methods 0.000 claims description 20
- 230000004044 response Effects 0.000 claims description 11
- 238000002955 isolation Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 18
- 238000012546 transfer Methods 0.000 description 15
- 239000000872 buffer Substances 0.000 description 13
- 238000007726 management method Methods 0.000 description 13
- 238000000034 method Methods 0.000 description 12
- 238000004891 communication Methods 0.000 description 10
- 239000008186 active pharmaceutical agent Substances 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 6
- 239000000758 substrate Substances 0.000 description 6
- 230000008901 benefit Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 150000003071 polychlorinated biphenyls Chemical class 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 238000002347 injection Methods 0.000 description 3
- 239000007924 injection Substances 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 239000012464 large buffer Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 239000010979 ruby Substances 0.000 description 1
- 229910001750 ruby Inorganic materials 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000032258 transport Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
- G06F9/3879—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
- G06F9/3881—Arrangements for communication of instructions and data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/1735—Network adapters, e.g. SCI, Myrinet
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System 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/7825—Globally asynchronous, locally synchronous, e.g. network on chip
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/541—Interprogram communication via adapters, e.g. between incompatible applications
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Multi Processors (AREA)
- Advance Control (AREA)
- Image Analysis (AREA)
- Image Processing (AREA)
Abstract
本公开提供了多核处理器堆栈以及多核处理器。所述多核处理器堆栈存储在多核处理器中的非暂态计算机可读介质上,包括:计算层,用于使用所述多核处理器中的处理核心集合来进行计算,具有用于所述处理核心集合中的处理管线集合的可执行指令;片上网络层,用于连接所述多核处理器中的所述处理核心集合,具有用于所述多核处理器中的路由器集合和网络接口单元集合的可执行指令;以及片上网络覆盖层,在逻辑上将所述计算层与所述片上网络层隔离。
Description
本申请是申请日为2020年8月3日、申请号为202010765332.4、发明名称为“一种多核处理器及其执行复杂计算的方法”的发明专利申请的分案申请。
相关申请的交叉引用
本申请要求于2019年8月2日提交的美国临时专利申请第62/882,065号的权益,该申请出于所有目的通过引用整体并入本文。
背景技术
处理核心可以通过跨处理核心以分布式方式执行复杂计算的分量计算来协作执行复杂计算。为此,处理核心需要共享执行那些分量计算所需的数据,并接收关于已指派哪些分量计算的指令。与复杂计算如何分解成分量计算并指派给各个处理核心相关联的技术与并行计算领域相关联。
处理核心可以经由网络连接,以便促进与并行计算相关联的数据交换。每个处理核心可以经由专用路由器连接到网络。当处理核心位于单个芯片上时,网络可以被称为片上网络(NoC)。可以使用单播、多播或广播传输在核心之间传输数据。在传统方法中,传输可以是单跳或多跳,具体取决于核心的连接方式以及源和目的地核心在网络内的物理位置。例如,当数据在相邻路由器之间串行传递并从每个中间路由器转发到最终目的地路由器时,相邻核心可以能够使用单跳传输进行通信,而远端核心可能需要经由多跳传输进行通信。
图1图示了NoC 100的一部分,其中四个处理核心101、102、103和104通过网络链接。该网络包括总线集合,这些总线使用专用路由器(诸如路由器110、111、112和113)与每个处理核心通信。路由器使用网络接口单元(NIU)与其相关联的处理核心通信。总线集合包括将路由器彼此连接以及将路由器与其NIU连接的电线。NIU在处理核心上的硬件中被实例化。处理核心101、102、103和104执行它们已经使用存储器和处理管线指派的分量计算。分量计算的输入和输出在NIU的控制下使用路由器110、111、112和113被路由。NIU是低级组件并且可以使用对应的低级存储器复制原语(primitive)执行数据传输,其中将处理核心上的存储器的本地片段复制到另一个处理核心上的存储器的远程片段。在单跳单播数据传输的基本情况下,存储器复制操作涉及从源核心上的存储器复制有限固定尺寸的缓冲区,然后经由总线将其写入目的地核心上的缓冲区。为了传输大量数据,系统需要发出多个存储器复制操作。
图1还图示了同一NoC 100的层图150。在层图150和本公开中的所有其它层图中,具有尖锐边的方框指示硬件,而具有圆形边的方框指示由其上堆叠有方框的硬件实例化的软件。层图示出了计算层151和NoC层152,其中计算层151由处理管线执行的指令实例化并存储在每个处理核心的存储器中,而NoC层152由NIU、路由器和各种核心上的实现与核心之间的数据传输相关联的低级原语的缓冲区执行的指令实例化。如以下发明内容中所述,此处使用执行指令的概念来描述进行任何逻辑或数据移动操作的设备的操作,即使“指令”完全在硬件中指定(例如,AND门执行“与”指令)。该术语无意表示对设备可编程的能力。实际上,本领域普通技术人员将认识到的是,NIU不是高度可配置的或可编程的。在上面提到的单跳单播数据传输示例中,执行低级原语(诸如存储器复制操作)的指令仍然相当多并且涉及识别将数据复制到的存储器的远程片段,从而确保存储器的远程片段具有足够的空间用于复制操作、跟踪并保留存储器的本地片段、为NIU提供数据本身和要传输的每条数据的地址,并且还跟踪存储器复制操作的状态。在较大的缓冲区的情况下,指令还涉及将数据分解成多个存储器复制操作。
NoC层152从计算层151的权限中仅抽象出固定数据的传输(经由低级存储器复制原语)。如上所述,计算层151仍然大量地涉及发起和跟踪存储器复制操作的状态的软件指令。此外,计算层151还在简单存储器复制操作之上的级别参与多核数据流管理和控制。在实践中,计算层在这方面的工作量包括管理将要写入数据的数据结构、跟踪这些数据结构的位置、轮询源核心以查看数据是否准备好进行入站传送,并将信号传输到目的地核心以提醒它们数据已准备好进行出站传送。在具体的示例中,计算层将管理存储器中用于FIFO的写指针,并且将需要处理诸如当FIFO变满时或其中多个核心请求同时向同一目的地FIFO写入、然后在这些写入尝试之间进行仲裁的情况。
发明内容
本文公开了与由多核处理器高效执行复杂计算以及在多核处理器中的各个处理核心之间的数据移动相关的方法和系统。处理核心可以使用计算层来执行复杂计算的分量计算。复杂计算可以由程序员使用应用代码指定,然后将应用代码编译为指令以供计算层执行。可以通过处理管线集合和处理核心上相关联的存储器来分布式地实例化计算层。可以在核心之间移动用于复杂计算的数据,以促进处理核心协同执行复杂计算。数据可以是在复杂计算期间执行的操作所使用的操作数数据,或者是表示操作本身的指令的数据。在本公开中,这两种类型的数据都将被称为计算数据。多核处理器可以在单个芯片上实现并利用NoC系统来促进处理核心之间的数据传送。NoC系统可以包括连接处理核心的总线集合。NoC层可以促进处理核心之间数据的物理移动,其包括处理核心之间的物理连接。在本发明的具体实施例中,处理核心可以包括跨处理核心被分布式地实例化的NoC覆盖层,其在逻辑上将处理核心的计算层与互连处理核心的NoC层隔离。
NoC覆盖层可以自动处理所有数据流管理任务,否则这些任务在制定应用代码以由具有与NoC层的直接接口的计算层执行时是必需的。NoC覆盖层可以增强处理核心进行复杂计算的效率,因为它可以将计算层与通信和存储器管理任务隔离开来,从而使它可以专注于进行计算。具体地,NoC覆盖层可以使计算层与需要管理保持要在源核心上传送的数据和要在目的地核心处提供的数据的数据结构隔离。取决于应用,从计算层卸载任务的好处可以被实现为减少与通信和存储器管理相关联的处理核心的处理管线上的物理计算资源负担。可替代地或组合地,可以通过简化用于使用处理核心进行计算的应用代码的编程或编译来认识从计算层卸载任务的好处。
关于前一段中强调的第二个好处,重要的是认识到传统高级编程语言的存储器管理要求与直接与NoC层接口所需的存储器管理要求之间的脱节。虽然存储器管理在某些低级编程语言中起作用,但是与NoC层接口时,应用代码必须处理数据移动的程度要比用于复杂计算的源代码的程序员,尤其是习惯于使用高级语言(例如,C、Java、Ruby和Python)进行编程的程序员,所习惯的复杂得多。因而,从逻辑上将这些低级存储器管理任务与应用代码隔离开来的NoC覆盖层将向更多的程序员开放用于NoC层的编程领域,而不再是专门从事低级编程的有限程序员级别的编程语言。
贯穿本公开中,术语“层”是根据本领域普通技术人员根据该术语的标准用法来使用的,包括一般参考用于电信和网络计算系统的开放系统互连模型(OSI)的用法。具体而言,术语“层”是指执行存储在存储器中或由硬件以其它方式实例化的指令集的系统,包括以顺序逻辑和/或只读存储器(ROM)实例化的指令,其经由接口用作相邻层的抽象层,从而允许关注点分离并促进互操作性。层可以包括前面提到的指令和与至少一个邻接层的接口。在整个本公开中,能够进行有效通信的层的组合(包括那些层之间的一个或多个接口)将被称为“堆栈”。
在本发明的具体实施例中,可以完全以硬件、完全以软件或通过硬件和软件的组合来实现层。在本发明的具体实施例中,计算层将完全以软件实现,NoC层将完全以硬件实现,并且NoC覆盖层将完全以硬件实现。在本发明的具体替代实施例中,计算层将完全以软件实现,NoC层将完全以硬件实现,并且NoC覆盖层将以软件和硬件实现。在本发明的具体实施例中,计算层将完全以软件实现,NoC层将完全以硬件实现,并且NoC覆盖层将完全以软件实现。在本发明的具体实施例中,NoC覆盖层促进通过NoC的数据传输、在所有处理核心上的存储器管理,以及通过NoC的数据传输所涉及的各种处理核心对任意尺寸的数据的同步和识别。
在本发明的具体实施例中,提供了一种多核处理器堆栈。堆栈可以存储在多核处理器中的非暂态计算机可读介质上。堆栈可以包括计算层,用于使用多核处理器中的处理核心集合来进行计算,具有用于该处理核心集合中的处理管线集合的可执行指令。堆栈还可以包括NoC层,用于连接多核处理器中的处理核心集合,具有用于多核处理器中的路由器和网络接口单元的集合的可执行指令。堆栈还可以包括逻辑上隔离计算层与片上网络(NoC)层的片上网络(NoC)覆盖层。片上网络(NoC)覆盖层可以跨多核处理器中的处理核心进行分布式实例化。
在本发明的具体实施例中,提供了一种多核处理器。多核处理器可以包括多核处理器堆栈。堆栈可以包括计算层,用于使用多核处理器中的处理核心集合来进行计算,具有用于该处理核心集合中的处理管线集合的可执行指令。堆栈还可以包括片上网络层,用于连接多核处理器中的处理核心集合,具有用于多核处理器中的路由器和网络接口单元的集合的可执行指令。堆栈还可以包括在逻辑上将计算层与片上网络层隔离的片上网络覆盖层。
在本发明的具体实施例中,提供了一种多核处理器。多核处理器可以包括多核处理器堆栈。堆栈可以包括计算层,用于使用多核处理器中的处理核心集合来进行计算,具有用于该处理核心集合中的处理管线集合的可执行指令。堆栈还可以包括片上网络层,用于连接多核处理器中的处理核心集合,具有用于多核处理器中的路由器和网络接口单元的集合的可执行指令。堆栈还可以包括片上网络覆盖层。NoC覆盖层可以与计算层和片上网络层通信。NoC覆盖层可以管理片上网络覆盖图,以管理多核处理器的核心之间的数据交换。片上网络覆盖图可以异步执行。
附图说明
图1包括根据相关技术的通过NoC网络连接的多核处理器的一部分的框图和层图。
图2包括根据本文公开的本发明的具体实施例的通过具有以软件实现的NoC覆盖层的NoC网络连接的多核处理器的一部分的层图以及具有以硬件实现的相似NoC覆盖层的第二层图。
图3包括根据本文公开的本发明的具体实施例的与计算层接口的NoC覆盖层的框图。
图4包括根据本文公开的本发明的具体实施例的NoC覆盖图的路径的框图以及突出显示NoC覆盖图中的两个节点的相互作用的详细的顺序数据流图。
具体实施方式
本文详细公开了根据以上发明内容的与多核处理器对复杂计算的有效执行以及多核处理器中的各个处理核心之间的数据移动相关的方法和系统。根据以上发明内容,这些多核处理器可以包括NoC覆盖层,该NoC覆盖层在逻辑上将NoC层与计算层隔离。下面描述这种NoC覆盖层的各种实施方式以及NoC覆盖层的具体实施例在逻辑上将NoC层与计算层隔离的不同方式。本节中公开的方法和系统是本发明的非限制性实施例,仅出于说明目的而提供,并且不应当用于限制本发明的全部范围。
参考包括通过NoC连接的处理核心集合的多核处理器的环境来提供以下描述的具体实施例。处理核心可以包括用于与路由器、处理管线和存储器接口的NIU。NIU可以表现出在相关技术中发现的并且参考图1中的NIU进行描述的NIU的功能和结构。具体地,NIU可以被配置为允许NoC中的任何处理核心使用从第一处理核心的主存储器到存储器的第二处理核心的主存储器的存储器复制操作写入NoC中的任何其它处理核心的主存储器。处理核心还可以包括附加的或更具体的元件,诸如高级控制器、串行器/解串行器、用于可修改配置信息的非易失性存储器、易失性存储器(诸如SRAM)以及任意数量的算术逻辑单元和其它基本计算单元。处理管线可以被用于执行多核处理器执行复杂计算所需的分量计算。本描述这一部分提到的NoC可以包括每个处理核心上的路由器和总线系统,这些总线可以或者单独连接多核处理器中的相邻处理核心以促进多跳通信,或者连接远端处理核心以促进那些远端处理核心之间的单跳通信。处理核心都可以位于单个芯片上,诸如单片半导体芯片或多源晶片键合芯片。
虽然本公开中提供的具体示例主要针对多核处理器中的处理核心,但是本文公开的方法广泛地适用于任何计算节点网络。虽然本公开中提供的具体示例主要针对单个芯片上NoC形式的专用网络,但是本文公开的方法广泛适用于在系统的节点之间运输数据的任何互连结构或可编程系统,其中互连架构的每个计算节点都包括低级联网单元和路由器,它们可以协同工作以:(i)发送指令,这些指令使低级联网单元在单独的计算节点上直接将数据写入到网络上那个分开的计算节点上的主存储器;以及(ii)从分开的计算节点接收指令,并且在这样的操作中,由低级联网单元作为分开的计算节点的服务方将数据直接写入到计算节点的主存储器。如本文和所附权利要求书中所使用的,术语“NoC”、“NoC覆盖层”和“NoC层”均参考任何这样的互连架构使用,而不管互连架构是否在单个芯片上实现。以这种方式,可以在单芯片系统(包括晶片级系统)、多芯片单包装系统或其中芯片通常附接到公共基板(诸如印刷电路板(PCB)、中介层或硅网)的多芯片系统中实现根据本发明的具体实施例的NoC。根据本公开的具体实施例的NoC还可以包括在通过更高级公共基板链接在一起的多个基板上的芯片,诸如在各自具有芯片集合的多个PCB的情况下,多个PCB固定到公共底板。本文公开的NoC也可以在基于小芯片的系统中实现。例如,在本发明的具体实施例中,一个或多个计算节点以及诸如NIU的低级网络单元可以由例如通过中介层连接的一个或多个小芯片容纳或实现。可以以与本文描述的类似方式在以上任何系统中实现根据本发明的具体实施例的计算层的抽象,该方式用于多核处理器中通过单芯片上的NoC连接的处理核心。
在本发明的具体实施例中,NoC覆盖层可以完全由软件实例化。图2提供了层图200,其图示了计算层203、NoC覆盖层202和NoC层201之间的关系。与图1一样,图2中带有尖角的方框表示硬件元素,带有圆角的方框表示软件元素。而且,软件元素堆叠在用于实例化软件元素的硬件上方,并且堆叠中接触的元素经由接口可通信地连接。如图所示,为了说明的目的,NoC覆盖层202跨三个处理核心分布式实例化。这三个处理核心可以是多核处理器中处理核心集合的一部分。在实际应用中,处理核心的数量可以更大。NoC覆盖层202可以经由将可执行指令存储在多核处理器中的处理核心集合上的存储器集合中来进行软件实例化。
在其中NoC覆盖层以软件实现的本发明的具体实施例中,NoC覆盖层可以或者在执行指令以实现NoC覆盖层的通用控制器的附加集合上或者在专用于执行覆盖指令的控制器集合上实现。例如,除了已经提到的组件(例如,处理管线、NIU和路由器)之外,每个处理核心还可以包括一个或多个附加控制器,诸如附加的通用CPU或专用的NoC覆盖处理器,可以专用于实现覆盖功能。那些专用控制器可以从应用接受覆盖API命令(诸如推送、发送、拉取、接收)并实现它们,并且可以响应于那些覆盖API命令为NIU发出命令。在专用的NoC覆盖处理器的情况下,覆盖API命令可以是专用的NoC覆盖处理器内核的原生指令集的一部分。在本发明的具体实施例中,一个或多个专用控制器可以在逻辑上将计算层与NoC/NIU隔离,并且还可以减轻应用CPU、处理管线或总体上计算层自身实现任何网络覆盖单元(NOU)功能性的负担。这些专用控制器可以是通用控制器,诸如通用CPU,也可以是专用于NOU实现的,具有自定义指令、管线、高速缓存等。
在本发明的具体实施例中,计算层和NoC覆盖层经由接口可通信地连接。接口可以被配置为允许数据跨整个接口在任一方向上流动。接口可以是应用编程接口。应用编程接口可以从计算层接收API调用,并从NoC覆盖层提供API调用响应。在本发明的具体实施例中,API有助于计算层与NoC层的逻辑隔离,因为与多核处理器相关联的数据移动和存储器管理的复杂性是经由API调用从计算层抽象出来的。
在计算层和NoC覆盖层之间的接口上的API调用可以采用各种形式。可以在应用代码中利用API调用,该应用代码用于指定由多核处理器执行的复杂计算。API调用可以是简单的命令,诸如发送、接收、推送、拉取等,其中调用的操作数是应用代码语法中的变量,具有应当从其获得该变量或向其发送该变量的处理核心的标识(例如,push(变量X,核心23))。在这个示例中,操作数指示命令要与哪个核心进行交互(即,核心编号23)。但是,在替代的具体实施例中,NoC覆盖层将从实例化在每个芯片上的计算层的范围中抽象出各个核心的身份(例如,一个核心上的push(变量X),另一个核心上的pull(变量X))。在这些实施例中,NoC覆盖层将跟踪以下事实:从执行API调用的任何核心发送变量X的请求都涉及将核心编号23用作变量X的目的地。
在本发明的具体实施例中,NoC覆盖层完全由硬件实例化。图2还提供了层图210,其示出了计算层213、NoC覆盖层212和NoC层211。在根据层图210的具体实施例中,NoC覆盖层212经由专用硬件组件的集合(诸如多核处理器中的NOU)完全由硬件实例化。NOU可以包括寄存器和顺序逻辑,并且可以将数据往返于处理核心的存储器或处理管线路由到处理核心的NIU。NOU可以包括用于实现数据过渡的内部硬件子组件。硬件子组件可以实现状态机,以便执行应用数据流图。NOU可以包括专用硬件模块,用于将来自NIU的数据翻译成用于NOU的事件,并将来自NOU的事件翻译成NIU的命令。以这种方式,NOU可以将数据流信息从NoC层翻译到NoC覆盖层,并且从NoC覆盖层翻译到NoC层。NOU还可以与处理核心中的CPU或控制器有效连接,并从计算层接收控制信号,诸如配置指令。可以通过扩展现有多处理器设计的NIU或通过添加全新的块以实现NOU并与现有多核处理器设计中的现有NIU通信来实现NOU。在本发明的具体实施例中,多核处理器中的处理核心集合上的NOU集合可以在物理上将NIU集合和路由器集合与处理核心集合上的存储器集合和处理管线集合隔离。在这些实施例中,存储器集合和处理管线集合可以实例化计算层。这样,在这些实施例中,用NOU实现的NoC覆盖层将在逻辑上和物理上将计算层与NoC层隔离。
在本发明的其中NoC覆盖层完全被硬件实例化的具体实施例中,计算层和NoC覆盖层经由硬件接口通信地连接。例如,上面提到的API可以在接口的NoC覆盖层一侧的硬件中实现。接口可以在该接口的NoC覆盖侧包括寄存器文件,并且处理核心可以被配置为向该寄存器文件写入或从中读取以便执行API调用。可替代地,处理核心可以被配置为向由寄存器文件中的地址识别的本地缓冲区中写入或从中读取以执行API调用。可以周期性地轮询寄存器文件中的具体寄存器,以检查命令是否从接口的NoC覆盖层侧入站。寄存器文件可以包括第一寄存器集合和第二寄存器集合。计算层可以被配置为写入第一寄存器集合并从第二寄存器集合读取。NoC覆盖层可以被配置为从第一寄存器集合读取并写入第二寄存器集合。以这种方式,数据可以在任一方向上跨接口传递,以促进层之间的通信连接。可以在接口的任一侧提供与前两个寄存器集合的内容相关的附加寄存器,包括应当读取或写入其地址的寄存器,或已准备好从中读取或写入具体预定寄存器地址的指示符。
在本发明的具体实施例中,NoC覆盖层和NoC层经由接口可通信地连接。接口可以被配置为允许数据跨接口在任一方向上流动。NoC层可以提供来自替代处理核心的入站信息,并接受有关发往替代处理核心的输出信息的命令。NoC覆盖层可以提供来自计算层的发往替代处理核心的入站信息,并接受发往计算层的出站信息。因此,NoC覆盖层可以用于提供NoC层与计算层之间的通信连接,同时仍将两层在逻辑上隔离。在本发明的具体实施例中,接口可以包括NoC层的寄存器文件,其被配置为接收指令以实现将数据传送到多核处理器中的具体核心。寄存器文件可以包括接收要写入替代核心的数据的寄存器,以及接收一个或多个具体核心的标识符的寄存器。可替代地,代替寄存器以接收要写入替代核心的数据,寄存器文件可以在处理核心的本地存储器中包括缓冲区的地址和尺寸,以保存要写入替代核心的数据。如上面所提到的,NoC覆盖层可以完全用软件实现,在这种情况下,实例化的软件将控制处理核心将数据写入上面提到的寄存器或由寄存器文件识别出的处理核心的本地存储器中的缓冲区。在这些实施例中,可以配置处理核心,使得NoC覆盖层(完全在软件中实例化)将与NoC层的接口视为API。在本发明的具体实施例中,用于API的命令可以紧密地复制传统计算层和传统NoC层之间的接口,如参考图1所描述的。
NoC覆盖层可以以各种方式在逻辑上将NoC层与计算层隔离。在本发明的具体实施例中,NoC覆盖层将通过向计算层呈现与API的接口(诸如上述的接口)在逻辑上隔离计算层。在本发明的具体实施例中,NoC覆盖层可以通过异步执行来自计算层的API调用在逻辑上隔离计算层。在本发明的具体实施例中,NoC覆盖层将通过将与传统NoC层相关联的所有数据移动和存储器管理任务抽象化为接口在逻辑上隔离计算层,该接口或者为给定核心上的计算层提供数据或者接受来自给定核心上计算层的出站数据。在本发明的具体实施例中,NoC覆盖层将通过抽象进行远离计算层进行分量计算所需的数据的位置在逻辑上隔离计算层。在本发明的具体实施例中,NoC覆盖层将通过向计算层提供唯一的接口在逻辑上隔离计算层,以利用不要求任何可以用于识别任何那些替代处理核心的数据的替代处理核心来参与多核处理器的复杂计算。这个段落中描述的每种具体方法将在下面立即描述,并且可以替代或组合使用。
在本发明的具体实施例中,NoC覆盖层可以通过异步执行来自计算层的API调用在逻辑上隔离计算层。NoC覆盖层可以通过经由它与NoC层的接口编译和执行原语存储器管理例程而在处理核心之间实现数据传送,而无需在接收到API调用之后额外依赖计算层。例如,计算层可以对NoC覆盖层进行API调用,然后在等待来自替代处理核心的数据时进入保留模式,从而允许NoC覆盖层有时间处理相关联的存储器管理和数据移动操作。在本发明的具体实施例中,在计算层继续执行分量计算的同时,NoC覆盖层可以进行这些操作并管理NoC层。例如,计算层可以对NoC覆盖层进行API调用,然后在继续执行计算的同时准确性地轮询NoC覆盖层以获取数据。作为另一个示例,计算层可以对NoC覆盖层进行API调用,然后实例化事件侦听器以等待来自NoC覆盖层的响应,同时继续执行计算。在本发明的具体实施例中,来自计算层的每个API调用可以与来自NoC覆盖层的API调用响应相匹配,提供该NoC覆盖层以或者确认调用的接收和/或确认API调用的执行以促进这种异步交互。
在本发明的具体实施例中,NoC覆盖层可以通过向计算层呈现具有API的接口来在逻辑上隔离计算层。API层可以符合上述要求。具体地,API可以包括推送计算数据API调用和拉取计算数据API调用,通过这些调用,计算层可以将计算数据推送到NoC覆盖层上或从NoC覆盖层拉取计算数据。推送和拉取计算数据API调用可以与来自NoC覆盖层的推送和拉取计算数据API调用响应匹配。推送计算数据调用可以识别应当向其发送数据的具体核心。拉取计算数据API调用可以识别应当从中拉取数据的具体核心。但是,在替代实施例中,API调用不需要识别具体的核心,而仅需要基于用于计算数据的标识符来识别计算数据,该标识符可跨多核处理器全局应用。在本发明的具体实施例中,在多核处理器执行复杂计算期间,API将是给定处理核心上的计算层与替代处理核心之间的唯一通信连接。在本发明的具体实施例中,API调用可以具有不同的行为,诸如发送和接收变量。在本发明的具体实施例中,API调用可以具有不同的功能和/或命令,以允许层之间的通信。在整个本公开中给出的命令的示例,诸如推送、拉取、发送和接收,不应当被视为对本发明的限制。层之间要交换的其它命令,诸如“获取数据”、“写入数据”、“读取数据”、“结束获取数据”、“清除数据”、“查询数据”、“数据就绪”等等,可以通过API调用来实现。
在本发明的具体实施例中,NoC覆盖层可以通过从计算层抽象出进行分量计算所需的数据的位置来在逻辑上隔离计算层。如本文所使用的,对抽象计算层的数据位置的引用旨在指示在具体处理核心上实例化的计算层仅需要知道计算数据或者在处理核心上本地可用,或者不可用,因此必须经由发送到NoC覆盖层的请求从外部进行搜索。在本发明的具体实施例中,用于在给定处理管线上进行计算的处理管线集合的可执行指令不包括可以用于识别该处理核心集合中的任何处理核心的数据。因此,被编译用于在各种处理核心上执行的应用代码甚至不需要指定哪个处理核心正在执行哪个分量计算。替代地,应用代码可以引用复杂计算中的变量,并且编译器将处理将相关联的操作指派给具体的核心。可替代地,作为NOU和/或处理管线的一部分执行的运行时系统可以处理在应用执行期间将相关联的操作指派给具体核心。在本发明的具体实施例中,在给定处理核心上的计算层和NoC覆盖层之间的唯一接口不要求在进行分量计算的同时可以用于识别该处理核心集合中的任何处理核心的数据。在这些实施例中,唯一接口可以是经由NoC层在给定处理核心上的计算层与替代处理核心之间提供通信连接的唯一接口。在这些实施例中,多核处理器可以被配置为进入替代模式,在该替代模式下,附加接口可用于允许计算层或处理核心的高级控制器与NoC层通信。但是,在执行复杂计算期间,这些替代接口可以被锁定,从而使上面提到的唯一接口成为计算层和NoC层之间唯一的通信方法。
在本发明的具体实施例中,NoC覆盖层跨处理核心集合分布式地实例化NoC覆盖图。NoC覆盖图用于管理通过NoC层往返于各个处理核心的数据移动。NoC覆盖图可以组合或替代地通过从计算层抽象数据的具体位置在逻辑上将NoC层与计算层隔离。NoC覆盖图可以包括节点集合和连接那些节点的边集合。沿着NoC覆盖图并通过NoC覆盖层从入口点向出口点移动时使用的边集合可以被称为NoC覆盖图的路径。NoC覆盖图的路径(包括至少一条边并且延伸通过该图)可以以来自计算层的推送消息开始,并且可以以来自计算层的拉取消息终止。此外,NoC覆盖层可以执行一系列NoC覆盖图。还向NoC覆盖层提供指令集,这些指令指定了触发将NoC覆盖图的状态重新配置为所提供序列中的下一个NoC覆盖图的状态的事件。
NoC覆盖图的初始状态可以在多核处理器执行复杂计算期间固定,并保持固定状态,直到替代指令集已被编译并加载到处理核心中为止。可替代地,NoC覆盖图可以在多核处理器执行复杂计算期间经由应用代码配置,这可以在应用运行时期间发生。例如,处理管线可以被配置为将NOU或其它位置的集合(诸如实现NoC覆盖图的存储器中的任何地址)写入到寄存器文件,从而修改该图。在具体实施例中,可以为NoC覆盖层编译NoC覆盖图状态,包括初始状态和后续状态集合,以及用于经由由NoC覆盖层执行的指令来改变状态的时间表。NoC覆盖图状态的改变可以是部分的,仅更改图的一部分,而图的其余部分继续传送数据。
NoC覆盖图可以具有初始状态、后续状态集合以及用于改变在编译应用代码以由多处理器核心执行时由编译器确定的NoC覆盖图状态的时间表。然后可以将编译后的指令注入到各种处理核心中,并用作实例化NoC覆盖层的指令的一部分。以这种方式,NoC覆盖图可以在NoC不参与复杂计算的执行时(例如,在应用运行时)离线地或者在NoC参与复杂计算的执行时(例如,在应用运行时,通过与先前指令的执行同步地将编译后的指令注入核心中、通过覆盖先前的指令,或者在NoC的具体处理核心未执行指令时)经由编译器配置。如果NoC覆盖层是在硬件中实例化,那么这种注入过程可以涉及将数据写入各种处理核心上的寄存器文件,诸如上面提到的NOU中。注入可以涉及将指令写入到处理核心的本地存储器,该指令在复杂计算的执行期间由NoC覆盖硬件访问以便设置NoC覆盖图的状态。如果NoC覆盖层在软件中实例化,那么这种注入过程可以涉及将数据写入各个处理核心上的存储器集合中,以由处理核心的处理管线执行。NoC覆盖图状态集合和状态改变的时间表可以由程序员在创建用于复杂计算的应用代码时显式地选择、完全通过编译器尝试最大化效率而作为编译过程的制品被选择,或者这两者的结合。初始状态、后续状态集合以及用于改变NoC覆盖图的时间表也可以由计算层上方的更高级控制器或由计算层的控制器设置。例如,控制器可以是处理核心上的CPU,其管理处理核心上的计算管线的操作。作为另一个示例,控制器可以是来自处理核心的外部控制器,其完全独立于计算层执行复杂计算期间使用的任何硬件来设置NoC覆盖图的状态和时间表。无论如何,一旦设置了状态和时间表,NoC覆盖层就仍然可以在逻辑上将计算层与低级存储器管理隔离开,因为可以仅取决于对数据的请求(诸如推送计算数据命令)或数据的递送(诸如拉取计算数据命令)与计算层的操作异步地执行时间表。
在本发明的具体实施例中,可以在执行复杂计算的整个过程中改变NoC覆盖图的初始状态。NoC覆盖图可以经由API可配置。API可以是与计算层或与多核处理器的高级控制器的接口。高级控制器可以独立于多核处理器核心上的处理管线,并且可以执行运行时系统,该系统可以在应用执行期间配置覆盖图。在其中计算层和NoC覆盖层经由用于路由计算数据的API连接的实施例中,相同的API可以用于配置NoC覆盖图。为了修改NoC覆盖层,计算层可以访问这个API。API可以接收命令以修改在其中实例化NoC覆盖图的各个部分的物理位置。API还可以接收命令以修改NoC覆盖图的边和节点以创建新节点、破坏现有节点以及在现有节点之间绘制新边。API还可以接收命令以改变应用变量的位置标识符(例如,核心标识符)。
在本发明的具体实施例中,NoC覆盖图中的节点可以由流集合中的流来实现。NoC覆盖图中的边集合中的边可以通过NoC覆盖图中以及流之间的计算数据流来实现。边可以表示通过上面提到的流的计算数据流。流可以为计算数据流提供方向性,但是在确保将在流的输入处接收的数据传递到流的输出之前,数据不会被修改或处理。因此,可以使用尺寸可变的FIFO缓冲区来实现流。处理核心上的NoC覆盖层可以被配置为如果特定流变得过载就允许FIFO的尺寸增加,并且可以包括故障转移保护机制,以在FIFO扩展超出由那种扩展提供的限制时中断复杂计算并保存其状态。但是,流还可以执行更复杂的数据路由例程。流可以促进数据从一个流到另一个流、从一个流到多个流以及从多个流到一个流的传送。在最终情况下,从多个流接收数据的流可以具有在传入流之间进行仲裁以确定哪些数据应当首先传递的能力。此外,单个流可以被配置为既从多个流接收数据又向多个流传输数据。在这些实施例中,可以使用FIFO缓冲区来实现常规流,同时使用能够修改数据的接收和传递次序的更复杂的存储器和逻辑电路来实现具有仲裁能力的流。流可以是由NoC覆盖层管理的虚拟构造,以实现NoC覆盖图。因此,流的创建将涉及指派具体的硬件,诸如上面提到的FIFO缓冲区,以在NoC层中实现数据的具体路由。每个流可以被配置为独立于其它流改变状态,这与NoC覆盖图状态的部分改变对应。没有重新配置的流可以继续传送数据。此外,可以独立地重新配置流的入站和出站连接。
在本发明的具体实施例中,NoC覆盖层和计算层的接口也可以通过流来实现。因而,包括NoC覆盖图的流集合可以包括输入流集合和输出流集合。可以通过来自计算层的关于要发送到替代处理核心的数据的入站消息来访问输入流集合。这些入站消息可以是来自计算层的推送计算数据命令。可以通过来自计算层的关于要从替代处理核心接收的数据的入站消息来访问输出流集合。入站消息可以是来自计算层的拉取计算数据命令。在其中计算层和NoC覆盖层的接口是API的具体实施例中,推送计算数据命令可以是推送计算数据API调用,并且拉取计算数据命令可以是拉取计算数据API调用。在本发明的具体实施例中,推送计算数据命令可以是向推送计算数据寄存器文件的写入,并且拉取计算数据命令可以是向拉取计算数据寄存器文件的写入。可以将要传送的实际数据写入计算数据寄存器文件,或者可以将核心的本地存储器中的数据地址写入计算数据寄存器文件。每个流可以被配置为将计算数据寄存器文件的内容解释为实际数据或该数据的地址。
图3包括来自处理核心集合的三个核心及其与NoC覆盖层310的相互作用的框图300。如图所示,NoC覆盖层310包括NoC覆盖图315。NoC覆盖图315沿着输入流接收数据并且沿着输出流输出数据。NoC覆盖图315将与NoC层结合被物理地实例化,但是由NoC覆盖层310来管理。在本发明的具体实施例中,数据将沿着连接图自身内的中间流的边流过图。如图所示,“输入流A”可以将数据“A”传递到NoC覆盖图315中,并且该数据可以由此经由输出流从核心0运输到核心1和核心2两者。可以同时执行通过NoC覆盖层310的多条路径。数据的多条路径可以一致地流过NoC覆盖图315。如图所示,“输入流B”正在将数据“B”传递到NoC覆盖图315中,从而将数据从核心2运输到核心1。这条路径可以与路由数据“A”的路径同时实现。
图中的核心与NoC覆盖层310之间的接口一般可以被用于描述计算层与NoC覆盖层之间的接口。如图所示,NoC覆盖层310可以从计算层接收推送和拉取消息。拉取消息可以是对数据的请求,而推送消息可以是将数据发送到其它位置的请求。图中的箭头被用于图示数据的流而不是所述消息的流。在所示的情况下,拉取和推送消息都是从计算层到NoC覆盖层310的入站消息。拉取消息可以使用标识符来识别所请求的具体数据,或者仅仅指示计算层已准备好从具体的流拉取数据,通过暗示,该具体的流识别数据。消息可以是指示数据的可用性、对数据的请求、存储空间的可用性或对存储空间的请求的事件。可以由于以下事实而暗示数据的识别:将流配置为仅提供特定身份的数据,或者将流配置为提供数据序列,计算层为该数据序列包括对应的数据身份序列。该序列可以由NoC覆盖层指定,并在事前提供给计算层,以促进这种数据识别方法。对拉取消息的响应可以包括数据尚未准备就绪的指示,或者可以包括数据本身。对推送消息的响应可以包括数据已被NoC覆盖层接收的确认或NoC覆盖层过载的指示。
在图3中,输入流A由来自核心0的推送消息发起。推送消息可以包括嵌有该消息中的实际数据“A”。继续这个示例,通过来自核心1的请求消息发起到核心1的输出流A。拉取消息可以被周期性地或者在核心1需要数据“A”的任何时间发布。当已经为这个分支接收到推送和拉取消息两者时,NoC覆盖层310可以提供从核心0到核心1的数据“A”。但是,可以先接收任何一条消息。与计算层的操作相比,与NoC覆盖层310的接口的这一方面是NoC覆盖层可以通过异步执行API调用在逻辑上将计算层与NoC层隔离的另一个原因。在本发明的具体实施例中,可以以任何次序发起路径的任一端,但是直到该路径中的所有流都已经被发起才使数据实际移动通过NoC覆盖图315。在本发明的具体实施例中,给定节点的任一侧可以以任何次序被发起,但是直到两侧都可用,数据才实际移动通过NoC覆盖图315。在本发明的具体实施例中,当发起在数据流方向上位于上游的节点的一侧但尚未发起下游侧时,可以将数据临时存储在与流相关联的缓冲区上,直到下游端发起。可以使用流来管理传送,如下面的图4进一步所示。
图4包括NoC覆盖图中的路径的框图400。该路径开始于源核心401(A1)并且终止于目的地核心402(B1)。核心通过包括三个流的NoC覆盖图路径链接。在本发明的具体实施例中,第一个流将在核心A1上被物理地实例化,最后一个流将在核心B1上被物理地实例化,而中间流将在NoC覆盖图选择的适当位置处被物理地实例化。在具体实施例中,一旦框图400中的任何流的入口边连接到另一个流的出口边或从核心A1接收推送数据消息,并且最后一个流的出口边从核心B1接收拉取数据消息,数据就可以流经NoC覆盖图。此外,随着路径的任何组成连接的建立,数据可以开始连续流过该组成连接。NoC覆盖图的这一方面允许通过NoC层异步执行数据传输,而与计算层的工作隔离。以这种方式,NoC覆盖图异步执行,并且NoC覆盖层与计算层和NoC层两者都进行通信,并管理NoC覆盖图以管理多核处理器的核心之间的数据交换。
图4还包括顺序数据流图410,以图示数据如何流过NoC覆盖图。在序列的第一部分中,称为流1的源流包括入站边和断开的出站边。源流还包括四个数据消息的集合,这些数据消息存储在缓冲区中,指示与流的入站边已经形成连接并且数据正在传送到该流。但是,由于流的出站边已断开,因此数据无处可流,并且流上的缓冲区开始填满。在序列的第二部分中,表示第一部分之后的时间的系统的状态,目的地流(称为流2)的入站边连接到流1的出站边。这个连接可以由NoC覆盖层基于用于通过NoC层进行路由的资源的可用性、或者部分地改变NoC覆盖图的状态或者基于NoC的移动配置以便实现复杂计算的阶段而形成。在本发明的具体实施例中,流1将通过接收指示下游流(流2)可用于接收数据的消息或事件而被完全发起,以创建这个状态。在序列的第三部分中,表示紧接第二部分之后的系统的状态,消息开始从流1流向流2。如果先前已连接流2的出站边,那么数据还将流过流2。可替代地,如果流2的出站边先前未连接,那么数据将开始在流2的缓冲区上累积。图4中的简化示例提供了NoC覆盖层如何与来自计算层的拉取计算数据API调用和/或推送计算数据API调用异步地实现NoC覆盖图的路径的说明。一旦任何中间流被连接,数据就开始流动,同样可以相对于路径的形成以任何次序和在任何时间提供拉取或推送命令。
虽然已经相对于本发明的具体实施例详细描述了本说明书,但是应该认识到的是,本领域技术人员在理解前述内容之后,可以容易地想到这些实施例的替换、变化和等同物。例如,虽然在整个公开中使用API的示例作为层之间的接口的示例,但是更简单的接口是可能的,包括涉及计算机系统的层之间的信息传输的任何接口,这些信息可以被接收层逻辑地解析。此外,虽然将多核处理器中的NoC互连处理核心用作示例环境,但其它实施方式也是可能的。例如,本文公开的实施例可以应用于计算节点或功能块的任何网络,诸如大规模片上系统(SoC)设备的各种互操作元件。作为另一个示例,与用于NoC的网络类型相反,本文公开的实施例可以应用于通过任何互连结构连接的功能块或计算节点。作为另一个示例,各种计算节点或功能块以及网络本身可以在单芯片系统上、在多芯片单包装系统中或在其中芯片共同附接到公共基板(诸如印刷电路板(PCB)、中介层或硅网)的多芯片多包装系统中实现。根据本公开的网络还可以包括在多个基板上的芯片,这些芯片通过更高级别的公共基板链接在一起,诸如在各自具有芯片集的多个PCB的情况下,多个PCB固定到公共底板。在两个具体示例中,网络和计算节点或功能块都可以在单个完整晶片级系统上实现,或者可以在通过中介层连接的单个小芯片上实现。此外,本公开不应当限于在多核处理器上执行的任何具体类型的复杂计算,因为任何复杂计算的编程和执行都可以通过本文公开的具体实施例来辅助,包括训练或从人工神经网络得出推论,或执行涉及大量分量计算的散列、加密、解密或图形渲染算法。此外,从逻辑上将计算层与NoC层隔离的NoC覆盖层示例不应当被解释为排除可以将多核处理器置于调试模式或类似操作模式的系统,其中复杂计算的连续执行停滞了,否则与计算层相关联的硬件或软件会直接影响NoC层,而无需与NoC覆盖层进行通信。在不脱离本发明的范围的情况下,本领域技术人员可以对本发明进行这些和其它修改和变化,本发明的范围在所附权利要求中更具体地阐述。
Claims (26)
1.一种多核处理器堆栈,存储在多核处理器中的非暂态计算机可读介质上,包括:
计算层,用于使用所述多核处理器中的处理核心集合来进行计算,具有用于所述处理核心集合中的处理管线集合的可执行指令;
片上网络层,用于连接所述多核处理器中的所述处理核心集合,具有用于所述多核处理器中的路由器集合和网络接口单元集合的可执行指令;以及
片上网络覆盖层,在逻辑上将所述计算层与所述片上网络层隔离。
2.如权利要求1所述的多核处理器堆栈,其中:
所述片上网络覆盖层是经由将可执行指令存储在所述多核处理器中的所述处理核心集合上的存储器集合中而由软件实例化的;以及
所述片上网络覆盖层的所述可执行指令由所述处理核心集合中的所述处理管线集合执行。
3.如权利要求2所述的多核处理器堆栈,还包括:
所述片上网络覆盖层和所述计算层之间的接口;
其中,所述接口是应用编程接口。
4.如权利要求1所述的多核处理器堆栈,其中:
所述片上网络覆盖层是经由所述多核处理器中的网络覆盖单元集合而由硬件实例化的;以及
所述网络覆盖单元集合在物理上将(i)所述网络接口单元集合;和(ii)所述路由器集合;与(i)所述处理核心集合上的存储器集合;和(ii)所述处理管线集合隔离。
5.如权利要求4所述的多核处理器堆栈,还包括:
所述片上网络覆盖层和所述计算层之间的接口;以及
其中:(i)所述接口是寄存器文件,所述寄存器文件包括第一寄存器集合和第二寄存器集合;所述计算层被配置为写入所述第一寄存器集合并从所述第二寄存器集合读取;并且所述片上网络覆盖层被配置为从所述第一寄存器集合读取并写入所述第二寄存器集合。
6.如权利要求1所述的多核处理器堆栈,其中:
所述片上网络覆盖层是经由所述多核处理器中的所述网络接口单元集合而由硬件实例化的;以及
所述网络接口单元集合在物理上将所述路由器集合与以下各项隔离:(i)所述处理核心集合上的存储器集合;和(ii)所述处理管线集合。
7.如权利要求1所述的多核处理器堆栈,其中,所述片上网络覆盖层在逻辑上将所述计算层与所述片上网络层隔离,因为:
用于进行所述计算的所述处理管线集合的所述可执行指令不包括能够用于识别所述处理核心集合中的任何处理核心的数据。
8.如权利要求1所述的多核处理器堆栈,其中,所述片上网络覆盖层在逻辑上将所述计算层与所述片上网络层隔离,因为:
所述计算层和所述片上网络覆盖层之间的唯一接口不要求在进行所述计算的同时能够用于识别所述处理核心集合中的任何处理核心的数据。
9.如权利要求1所述的多核处理器堆栈,其中:
所述计算层和所述片上网络覆盖层经由接口通信连接;以及
所述接口是应用编程接口。
10.如权利要求9所述的多核处理器堆栈,其中:
所述应用编程接口包括推送计算数据API调用和拉取计算数据API调用。
11.如权利要求10所述的多核处理器堆栈,其中:
所述片上网络覆盖层跨所述处理核心集合分布式实例化片上网络覆盖图;以及
所述片上网络覆盖图的路径以第一处理核心上的推送计算数据API调用响应开始并以第二处理核心上的拉取计算数据API调用响应终止。
12.如权利要求11所述的多核处理器堆栈,其中,所述片上网络覆盖层在逻辑上将所述计算层与所述片上网络层隔离,因为:
所述片上网络覆盖层异步地实现所述片上网络覆盖图到所述拉取计算数据API调用和所述推送计算数据API调用的路径。
13.如权利要求11所述的多核处理器堆栈,其中:
所述片上网络覆盖图可经由所述应用编程接口进行配置。
14.如权利要求1所述的多核处理器堆栈,其中:
所述片上网络覆盖层跨所述处理核心集合分布式实例化片上网络覆盖图;以及
所述片上网络覆盖图经由编译器离线配置。
15.如权利要求1所述的多核处理器堆栈,其中:
所述片上网络覆盖层跨所述处理核心集合分布式实例化片上网络覆盖图;以及
所述片上网络覆盖图由运行时系统在应用执行期间配置。
16.如权利要求1所述的多核处理器堆栈,其中:
所述片上网络覆盖层包括片上网络覆盖图;
所述片上网络覆盖图由边集合和节点集合定义;
所述节点集合中的节点表示流集合中的流;以及
所述边集合中的边表示通过所述片上网络覆盖图的计算数据的流。
17.如权利要求16所述的多核处理器堆栈,其中:
所述流集合包括输入流集合和输出流集合;
通过来自所述计算层的推送计算数据命令来访问所述输入流集合;以及
通过来自所述计算层的拉取计算数据命令来访问所述输出流集合。
18.如权利要求17所述的多核处理器堆栈,其中:
所述片上网络覆盖层由软件实例化;
所述推送计算数据命令是推送计算数据API调用;以及
所述拉取计算数据命令是拉取计算数据API调用。
19.如权利要求17所述的多核处理器堆栈,其中:
所述片上网络覆盖层由硬件实例化;
所述推送计算数据命令是对推送计算数据寄存器文件的写入;以及
所述拉取计算数据命令是对拉取计算数据寄存器文件的写入。
20.一种多核处理器,包括多核处理器堆栈,其中所述多核处理器堆栈包括:
计算层,用于使用所述多核处理器中的处理核心集合来进行计算,具有用于所述处理核心集合中的处理管线集合的可执行指令;
片上网络层,用于连接所述多核处理器中的所述处理核心集合,具有用于所述多核处理器中的路由器和网络接口单元的集合的可执行指令;以及
片上网络覆盖层,在逻辑上将所述计算层与所述片上网络层隔离。
21.如权利要求20所述的多核处理器,其中:
所述计算层和所述片上网络覆盖层经由接口通信连接;
所述接口是应用编程接口;
所述应用编程接口包括推送计算数据API调用和拉取计算数据API调用;
所述片上网络覆盖层跨所述处理核心集合分布式实例化片上网络覆盖图;以及
所述片上网络覆盖图的路径以第一处理核心上的推送计算数据API调用响应开始并以第二处理核心上的拉取计算数据API调用响应终止。
22.如权利要求21所述的多核处理器,其中所述片上网络覆盖层在逻辑上将所述计算层与所述片上网络层隔离,在于:
所述片上网络覆盖层异步地实现所述片上网络覆盖图到所述拉取计算数据API调用和所述推送计算数据API调用的路径。
23.如权利要求20所述的多核处理器,其中,所述多核处理器堆栈还包括:
所述片上网络覆盖层和所述计算层之间的接口;
其中,所述接口是应用编程接口。
24.如权利要求20所述的多核处理器,其中:
所述片上网络覆盖层跨所述处理核心集合分布式实例化片上网络覆盖图;以及
所述片上网络覆盖图经由编译器离线配置。
25.如权利要求20所述的多核处理器,其中:
所述片上网络覆盖层跨所述处理核心集合分布式实例化片上网络覆盖图;以及
所述片上网络覆盖图由运行时系统在应用执行期间配置。
26.一种多核处理器,包括多核处理器堆栈,其中所述多核处理器堆栈包括:
计算层,用于使用所述多核处理器中的处理核心集合来进行计算,具有用于所述处理核心集合中的处理管线集合的可执行指令;
片上网络层,用于连接所述多核处理器中的所述处理核心集合,具有用于所述多核处理器中的路由器和网络接口单元的集合的可执行指令;以及
片上网络覆盖层:(i)与所述计算层和所述片上网络层两者都通信;以及(ii)管理用于管理所述多核处理器的核心之间的数据交换的片上网络覆盖图;
其中,所述片上网络覆盖图异步执行。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962882065P | 2019-08-02 | 2019-08-02 | |
US62/882,065 | 2019-08-02 | ||
CN202010765332.4A CN112306946B (zh) | 2019-08-02 | 2020-08-03 | 一种多核处理器及其执行复杂计算的方法 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010765332.4A Division CN112306946B (zh) | 2019-08-02 | 2020-08-03 | 一种多核处理器及其执行复杂计算的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117435546A true CN117435546A (zh) | 2024-01-23 |
Family
ID=71899565
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311167066.5A Pending CN117435546A (zh) | 2019-08-02 | 2020-08-03 | 多核处理器堆栈以及多核处理器 |
CN202010765332.4A Active CN112306946B (zh) | 2019-08-02 | 2020-08-03 | 一种多核处理器及其执行复杂计算的方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010765332.4A Active CN112306946B (zh) | 2019-08-02 | 2020-08-03 | 一种多核处理器及其执行复杂计算的方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11467846B2 (zh) |
EP (1) | EP3771989A3 (zh) |
CN (2) | CN117435546A (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11537544B2 (en) * | 2019-09-09 | 2022-12-27 | Cirrus Logic, Inc. | Communicating non-isochronous data over an isochronous channel |
US11245643B2 (en) * | 2020-05-20 | 2022-02-08 | Tenstorrent Inc. | Speculative resource allocation for routing on interconnect fabrics |
CN112925739B (zh) * | 2021-03-19 | 2024-04-09 | 清华大学 | 应用于众核芯片的通信方法、众核芯片及存储介质 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8713180B2 (en) * | 2005-06-22 | 2014-04-29 | Cisco Technology, Inc. | Zero-copy network and file offload for web and application servers |
GB0519981D0 (en) | 2005-09-30 | 2005-11-09 | Ignios Ltd | Scheduling in a multicore architecture |
EP1950932A1 (en) | 2007-01-29 | 2008-07-30 | Stmicroelectronics Sa | System for transmitting data within a network between nodes of the network and flow control process for transmitting said data |
US20090260013A1 (en) * | 2008-04-14 | 2009-10-15 | International Business Machines Corporation | Computer Processors With Plural, Pipelined Hardware Threads Of Execution |
US20100161938A1 (en) * | 2008-12-23 | 2010-06-24 | Marco Heddes | System-On-A-Chip Supporting A Networked Array Of Configurable Symmetric Multiprocessing Nodes |
FR2951342B1 (fr) | 2009-10-13 | 2017-01-27 | Arteris Inc | Reseau sur puce a latence nulle |
US20150103822A1 (en) * | 2013-10-15 | 2015-04-16 | Netspeed Systems | Noc interface protocol adaptive to varied host interface protocols |
US10078606B2 (en) * | 2015-11-30 | 2018-09-18 | Knuedge, Inc. | DMA engine for transferring data in a network-on-a-chip processor |
WO2017120270A1 (en) * | 2016-01-04 | 2017-07-13 | Gray Research LLC | Massively parallel computer, accelerated computing clusters, and two dimensional router and interconnection network for field programmable gate arrays, and applications |
CN106155814B (zh) * | 2016-07-04 | 2019-04-05 | 合肥工业大学 | 一种支持多种工作模式的可重构运算单元及其工作方式 |
US10318723B1 (en) * | 2016-11-29 | 2019-06-11 | Sprint Communications Company L.P. | Hardware-trusted network-on-chip (NOC) and system-on-chip (SOC) network function virtualization (NFV) data communications |
US11336559B2 (en) * | 2018-08-21 | 2022-05-17 | Intel Corporation | Fast-lane routing for multi-chip packages |
-
2020
- 2020-07-29 US US16/942,492 patent/US11467846B2/en active Active
- 2020-07-31 EP EP20188876.5A patent/EP3771989A3/en active Pending
- 2020-08-03 CN CN202311167066.5A patent/CN117435546A/zh active Pending
- 2020-08-03 CN CN202010765332.4A patent/CN112306946B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN112306946B (zh) | 2023-09-26 |
CN112306946A (zh) | 2021-02-02 |
EP3771989A3 (en) | 2021-04-07 |
EP3771989A2 (en) | 2021-02-03 |
US20210034373A1 (en) | 2021-02-04 |
US11467846B2 (en) | 2022-10-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112306946B (zh) | 一种多核处理器及其执行复杂计算的方法 | |
CN112740190B (zh) | 网关上的主机代理 | |
US7984448B2 (en) | Mechanism to support generic collective communication across a variety of programming models | |
US8438578B2 (en) | Network on chip with an I/O accelerator | |
CN110083440B (zh) | 多处理器嵌入式系统上应用的动态重新配置 | |
JP7389231B2 (ja) | 同期ネットワーク | |
US11687327B2 (en) | Control and reconfiguration of data flow graphs on heterogeneous computing platform | |
US20230041130A1 (en) | Overlay layer for network of processor cores | |
US11675633B2 (en) | Virtualised gateways | |
US11615038B2 (en) | Data through gateway | |
US11477050B2 (en) | Gateway fabric ports | |
US20210149651A1 (en) | Code compilation for scaling accelerators | |
Cannella et al. | Adaptivity support for MPSoCs based on process migration in polyhedral process networks | |
US11334400B2 (en) | Sync groupings | |
CN112673351B (zh) | 流式传输引擎 | |
US11467836B2 (en) | Executing cross-core copy instructions in an accelerator to temporarily store an operand that cannot be accommodated by on-chip memory of a primary core into a secondary core | |
US20230281155A1 (en) | Overlay layer hardware unit for network of processor cores | |
EP4036730A1 (en) | Application data flow graph execution using network-on-chip overlay | |
Suzuki et al. | Procedure level dataflow processing on dynamic structure multimicroprocessors | |
KR20230035416A (ko) | 네트워크를 통한 호스트와 가속기 간의 통신 | |
CN115698995A (zh) | 硬件自动加载器 | |
WO2020007667A1 (en) | Streaming engine | |
PAGE | REP MForm Approved |
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 |