CN117435549A - 用于硬件组件之间的通信的方法和系统 - Google Patents
用于硬件组件之间的通信的方法和系统 Download PDFInfo
- Publication number
- CN117435549A CN117435549A CN202310572377.3A CN202310572377A CN117435549A CN 117435549 A CN117435549 A CN 117435549A CN 202310572377 A CN202310572377 A CN 202310572377A CN 117435549 A CN117435549 A CN 117435549A
- Authority
- CN
- China
- Prior art keywords
- request message
- hardware
- computing element
- memory
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 53
- 238000004891 communication Methods 0.000 title abstract description 72
- 238000012545 processing Methods 0.000 claims abstract description 189
- 230000004044 response Effects 0.000 claims description 44
- 238000004378 air conditioning Methods 0.000 claims 10
- 230000015654 memory Effects 0.000 description 295
- 239000004744 fabric Substances 0.000 description 43
- 230000001360 synchronised effect Effects 0.000 description 20
- 238000010586 diagram Methods 0.000 description 13
- 239000000872 buffer Substances 0.000 description 12
- 238000013461 design Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 10
- 230000002093 peripheral effect Effects 0.000 description 9
- 238000012546 transfer Methods 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 238000013519 translation Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 238000007792 addition Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 239000000758 substrate Substances 0.000 description 4
- 238000010200 validation analysis Methods 0.000 description 4
- 238000012937 correction Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000005538 encapsulation Methods 0.000 description 3
- 238000007667 floating Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000005192 partition Methods 0.000 description 3
- 230000011664 signaling Effects 0.000 description 3
- 230000000153 supplemental effect Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000000712 assembly Effects 0.000 description 2
- 238000000429 assembly Methods 0.000 description 2
- 239000000470 constituent Substances 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 201000003728 Centronuclear myopathy Diseases 0.000 description 1
- 241001091551 Clio Species 0.000 description 1
- 102100035964 Gastrokine-2 Human genes 0.000 description 1
- 101001075215 Homo sapiens Gastrokine-2 Proteins 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 239000012530 fluid Substances 0.000 description 1
- 230000020169 heat generation Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 239000012212 insulator Substances 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000011295 pitch Substances 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 235000013599 spices Nutrition 0.000 description 1
Classifications
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Multi Processors (AREA)
Abstract
本公开涉及用于硬件组件之间的通信的方法和系统。各种实例涉及一种包括第一硬件计算元件和硬件平衡器元件的布置。所述第一硬件计算元件可将第一请求消息发送到硬件平衡器元件。所述第一请求消息可描述处理任务。所述硬件平衡器元件可朝向用于执行所述处理任务的第二硬件计算元件发送第二请求消息,且将第一回复消息发送到所述第一计算元件,以回复所述第一请求消息。在发送所述第一回复消息之后,所述硬件平衡器元件可接收指示所述处理任务已分配的第一完成请求消息,且将第二完成请求消息发送到所述第一硬件计算元件,所述第二完成请求消息指示所述处理任务已分配。
Description
关于联邦赞助的研究或开发的声明
本发明是根据美国能源部授予的DE-NA0003525在政府支持下进行的。政府在本发明中具有某些权利。
技术领域
本公开涉及用于硬件组件之间的通信的方法和系统。
背景技术
例如冯诺伊曼(Von Neumann)架构的各种计算机架构常规地使用用于数据的共享存储器、用于存取共享存储器的总线、算术单元以及程序控制单元。然而,在处理器与存储器之间移动数据可能需要大量时间和能量,这又可能约束计算机系统的性能和容量。鉴于这些限制,需要新的计算架构和装置来提高计算性能,使其超出晶体管缩放的实践(即,摩尔定律(Moore's Law))。
发明内容
本公开的方面提供一种设备,其包括:第一硬件计算元件,所述第一硬件计算元件经编程以执行包括将第一请求消息发送到硬件平衡器元件的操作,所述第一请求消息描述处理任务;及硬件平衡器元件,其经编程以包括以下各项的操作:朝向用于执行处理任务的第二硬件计算元件发送第二请求消息,所述第二请求消息还描述处理任务;将第一回复消息发送到第一计算元件,所述第一回复消息回复第一请求消息;在发送第一回复消息之后,接收第一完成请求消息,所述第一完成请求消息指示处理任务已分配;及将第二完成请求消息发送到第一硬件计算元件,所述第二完成请求消息指示处理任务已分配。
本公开的另一方面提供一种方法,其包括:通过第一硬件计算元件将第一请求消息发送到硬件平衡器元件,所述第一请求消息描述处理任务;通过硬件平衡器元件朝向用于执行处理任务的第二硬件计算元件发送第二请求消息,所述第二请求消息也描述处理任务;通过硬件平衡器元件将第一回复消息发送到第一计算元件,所述第一回复消息回复第一请求消息;在发送第一回复消息之后,通过硬件平衡器元件接收第一完成请求消息,所述第一完成请求消息指示处理任务已分配;及通过硬件平衡器元件将第二完成请求消息发送到第一硬件计算元件,所述第二完成请求消息指示处理任务已分配。
本公开的另一方面提供至少一个计算机可读媒体,其在其上包括指令,所述指令当由至少一个硬件组件执行时使得硬件组件执行包括以下各项的操作:通过第一硬件计算元件将第一请求消息发送到硬件平衡器元件,所述第一请求消息描述处理任务;通过硬件平衡器元件朝向用于执行处理任务的第二硬件计算元件发送第二请求消息,所述第二请求消息也描述处理任务;通过硬件平衡器元件将第一回复消息发送到第一计算元件,所述第一回复消息回复第一请求消息;在发送第一回复消息之后,通过硬件平衡器元件接收第一完成请求消息,所述第一完成请求消息指示处理任务已分配;及通过硬件平衡器元件将第二完成请求消息发送到第一硬件计算元件,所述第二完成请求消息指示处理任务已分配。
附图说明
为容易地识别对任何特定元件或动作的论述,参考数字中的一或多个最高有效数字指的是首次介绍所述元件的图号。
图1大体示出根据实施例的在存储器计算系统的上下文中的第一存储器计算装置的第一实例。
图2大体示出根据实施例的存储器计算装置的存储器子系统的实例。
图3大体示出根据实施例的用于存储器控制器的可编程原子单元的实例。
图4示出根据实施例的存储器计算装置的混合线程处理器(HTP)加速器的实例。
图5示出根据实施例的存储器计算装置的混合线程网状架构(HTF)的表示的实例。
图6A大体示出根据实施例的小芯片系统的实例。
图6B大体示出展示来自图6A的实例的小芯片系统中的各个组件的框图。
图7大体示出根据实施例的用于存储器计算装置的基于小芯片的实施方案的实例。
图8示出根据实施例的存储器计算装置小芯片的示例性平铺。
图9示出包含由请求者硬件计算元件向响应者硬件计算元件做出的读取请求的示例性布置。
图10示出包含由请求者硬件计算元件经由网络结构向响应者硬件计算元件做出的写入请求的示例性布置。
图11为展示环境的一个实例的图式,所述环境可实施于近存储器计算(CNM)系统(例如图1的CNM系统)中,以实施通信技术,所述通信技术包含请求者硬件计算元件与响应者硬件计算元件之间的多个请求事务。
图12为展示过程流程的一个实例的流程图,所述过程流程可例如在图11的环境中执行以实施多个请求事务。
图13为展示环境的一个实例的图式,所述环境可实施于CNM系统(例如图1的CNM系统)中以实施如本文中所描述的通信技术。
图14为展示请求者计算元件、平衡器元件与接收器之间的一组示例性通信的图式。
图15为展示过程流程的一个实例的流程图,所述过程流程可在CNM系统中,例如在请求者计算元件与平衡器元件之间,执行。
图16为展示CNM环境的一个实例的图式,其示出在CNM的多个位置处的请求和确认数据交换。
图17示出示例性机器的框图,可利用所述机器、在所述机器中或通过所述机器实施本文中论述的任何一或多种技术(例如,方法)。
具体实施方式
可利用材料、装置和集成技术中的最新进展来提供以存储器为中心的计算拓扑。此类拓扑可实现例如用于受大小、重量或功率要求约束的应用的计算效率和工作负荷处理量的进展。拓扑可用于促进存储器或其它数据存储元件附近或内部的低时延计算。方法可尤其非常适合于利用稀疏查找的各种计算密集操作,例如在变换计算(例如,快速傅立叶变换计算(FFT))中,或在例如神经网络或人工智能(AI)、财务分析或模拟或模型化的应用中,所述模拟或模型化例如用于计算流体动力学(CFD)、工程师用增强型声学模拟器(EASE)、以集成电路为重心的模拟程序(SPICE)等。
本文中所论述的系统、装置和方法可包含或使用具有处理器或处理能力的存储器计算系统,所述处理器或处理能力提供于存储器或数据存储组件中、附近或与存储器或数据存储组件集成。此类系统在本文中通常被称为近存储器计算(CNM)系统。CNM系统可为基于节点的系统,其中系统中的个别节点使用系统缩放网状架构来耦合。尤其在预期高的高速缓存未命中速率的环境中,每一节点可包含或使用专用或通用处理器以及用户可存取加速器,其具有用以促进密集操作的自定义计算网状架构。
在实例中,CNM系统中的每一节点可具有一或多个主机处理器。在每一节点内,专用混合线程处理器可占用片上网络的离散端点。混合线程处理器可对系统的特定节点中的存储器中的一些或全部进行存取,或混合线程处理器可经由系统缩放网状架构对跨多个节点的网络的存储器进行存取。每一节点处的自定义计算网状架构或混合线程网状架构可具有其自身的处理器或加速器,且可在比混合线程处理器更高的带宽下操作。近存储器计算系统中的不同节点可不同地配置,例如具有不同计算能力、不同类型的存储器、不同接口或其它差异。然而,节点可共同耦合以共享所定义地址空间内的数据和计算资源。
在一实例中,CNM系统或所述系统内的节点可经用户配置以用于自定义操作。用户可使用高级编程语言(例如C/C++)来提供指令,所述高级编程语言可编译且直接映射到系统的或CNM系统中的一或多个节点的数据流架构中。也就是说,系统中的节点可包含硬件块(例如,存储器控制器、原子单元、其它客户加速器等),所述硬件块可配置成直接实施或支持用户指令以由此增强系统性能且减小时延。
在一实例中,CNM系统可包含连接硬件计算元件的各种网络结构。举例来说,系统缩放网状架构可以是连接不同节点的网络结构,其中节点包含各种计算元件。在节点内,开关布置或网状架构可以是连接主机系统和/或各种存储器装置的网络结构,其中主机系统和/或存储器装置可以是计算元件。在一实例中,节点、主机系统和/或存储器装置的组件可包含片上网络(NOC),其充当相应芯片上的各个组件的网络结构。
为了处置计算元件之间的通信请求,网络结构可选择性地在计算元件之间提供在本文中被称作总线的一或多个数据路径,所述计算元件是通信请求的各方。由网络结构提供的总线和其方向可取决于通信请求的类型,及例如使用的通信协议。举例来说,根据例如AXI4的先进可扩展接口(AXI)协议操作的网络结构可支持读取请求和写入请求。根据其它协议操作的网络结构也可支持读取请求和写入请求。
在读取请求中,网络结构可提供读取地址总线和读取数据总线。读取地址总线可从请求者计算元件导向到响应者计算元件。经由读取地址总线,请求者计算元件可提供控制数据,其包含例如所请求的数据的地址或其它标识符。读取数据总线可从响应者计算元件导向到请求者计算元件。在接收控制数据后,响应者计算元件可检索所请求的数据且经由读取数据总线将其提供到请求者计算元件。提供在读取数据总线上的读取数据可包含指示初始读取请求的标识符。以此方式,请求者计算元件可使读取数据与初始读取请求有关。
在写入请求中,网络结构可提供写入地址总线、写入数据总线和写入确认总线。写入地址总线和写入数据总线可从请求者计算元件导向到响应者计算元件。在写入数据总线上,请求者计算元件可提供待由响应者计算元件写入的数据。举例来说,响应者计算元件可以是硬件存储器装置和/或硬件存储器控制器。在写入地址总线上,请求者计算元件可提供各种数据,包含例如将写入数据的地址或位置。写入确认总线可从响应者计算元件导向到请求者计算元件。当响应者计算元件已写入数据时,其可在写入确认总线上提供写入响应数据。写入响应数据可指示各方之间的事务完成。举例来说,写入响应数据可包含指示原始写入请求的标识符。以此方式,当请求者计算元件接收写入响应数据时,其可提供写入请求完成的指示。
网络结构维护开放或正在进行中的通信请求的状态数据。状态数据可描述例如开放的读取或写入请求的标识符、是通信的各方的计算元件,和完成的通信请求(如果存在)的部分的指示。通信请求可为开放的或正在进行中,直到完成通信请求的全部部分。网络结构可使用状态数据以在适当的时间选择性地提供到适当的计算元件之间的适当的总线的连接。当完成通信请求且因此不再开放或正在进行中时,网络结构可清除用于所述通信请求的状态数据。
考虑示例性读取请求。用于读取请求的状态数据可描述例如读取请求的请求者和响应者计算元件的地址和/或其它标识符,及读取请求的完成状态。举例来说,状态数据可描述请求者计算元件是否已经由读取地址总线将地址和/或控制数据提供到响应者计算元件及响应者组件是否已将经请求读取数据提供到请求者计算元件。
网络结构可使用状态数据来跟踪由网络结构处置的各种请求,且在一些实例中,命令递送响应消息。举例来说,当响应者计算元件提供读取数据时,网络结构可检索对应的读取请求的状态数据且使用所述状态数据。在一些实例中,状态数据用于命令将读取数据提供到请求者元件。当读取请求不再开放时,网络结构可例如通过删除状态数据和/或标记可用于覆写的存储器位置来释放用于存储所述读取请求的状态数据的存储器位置。
现在考虑示例性写入请求。用于写入请求的状态数据可描述例如写入请求的请求者和响应者计算元件的地址和/或其它标识符,及写入请求的完成状态。举例来说,状态数据可指示请求者计算元件是否已经由写入地址总线提供地址和/或控制数据,请求者计算元件是否已经由写入总线提供写入数据,和/或响应者计算元件是否已经由写入确认总线提供写入响应数据。网络结构可在检索写入响应时检索状态数据,且在一些实例中,可利用状态数据来命令将写入请求提供到请求元件。在将写入响应数据提供到请求者数据之前,写入请求可一直为开放的或正在进行的。当写入请求不再开放时,网络结构可例如通过删除状态数据和/或标记可用于覆写的存储器位置来释放用于存储所述写入请求的状态数据的存储器位置。
网络结构可具有用于存储状态数据的有限存储器资源。因此,许多网络结构在给定时间可仅支持有限数目的开放读取或写入请求。这可在例如CNM系统的系统中产生挑战,所述系统可根据AXI或类似协议利用网络结构以管理大量计算元件之间的通信。举例来说,如果在给定的网络结构处有太多的通信请求为开放的或正在进行中,那么网络结构可能会变为死锁,且进而,无法处置额外的通信请求。并且,以此方式受限的系统可能会失去编程灵活性。举例来说,此类系统可经编程以将在任一时间在给定网络结构处的开放或正在进行中的通信请求的数量保持低于网络结构可处置的最大值。对系统进行编程以减少开放或正在进行中的通信请求可涉及折衷和其它领域的少于任选的设计和/或编程,从而使系统在实现其它目标方面效率较低。
在一实例中,CNM或其它合适的系统经布置以利用写入请求以用于硬件计算元件之间的通信。第一硬件计算元件可经由网络结构将写入请求发送到第二硬件计算元件。如本文中所描述,网络结构可在第一硬件元件与第二硬件元件之间提供第一写入地址总线及第一写入数据总线。第一硬件计算元件可经由第一写入地址总线提供第一地址数据和第一源标识符数据。第一硬件计算元件还可经由第一写入总线提供第一有效载荷数据。第一有效载荷数据可描述由第一硬件计算元件请求的处理任务。处理任务可以是将有效载荷数据写入到存储器装置或其它数据存储位置。在一些实例中,处理任务为对存储于CNM系统的不同部分处的数据进行操作的任务。因此,第一硬件计算元件可使用第一写入请求以请求处理任务由比请求计算元件更接近数据的硬件计算元件执行。在另一实例中,第一硬件计算元件可请求处理任务由另一计算元件执行,所述另一计算元件具有比第一计算元件的硬件配置更有利于处理任务的硬件配置。
在接收第一写入请求之后,第二硬件计算元件可经由网络结构提供的写入确认总线将写入确认数据发送到第一硬件计算元件。在完成处理任务之前,第二计算元件可发送写入确认数据。当发送写入确认请求时,网络结构可清除用于第一写入请求的状态数据,进而释放网络结构以接受额外的通信请求。在发送写入确认请求之后,第二硬件计算元件可执行经请求处理任务和/或指示另一硬件计算元件执行经请求处理任务。当经请求处理任务完成时,第二硬件计算元件可将第二写入请求发送到第一硬件计算元件。第二写入请求可包括指示处理任务完成的有效载荷数据。这可为第一计算元件提供其完成第一处理任务的初始请求的信用。然而,在此实例中,网络结构在处理任务完成之前可能不需要维护用于第一写入请求的状态数据。这可在正在执行处理任务时释放网络结构处的容量以处置额外的通信请求,从而增加网络结构的容量。
在另一实例中,请求者计算元件将请求消息发送到CNM的另一组件。请求者计算元件可例如通过不同的计算元件来请求执行处理任务。请求消息可以是由网络结构处置的写入请求消息,如本文中所描述。
在一实例中,请求者计算元件将请求消息引导到平衡器元件。请求消息可描述待执行的处理任务。在一些实例中,请求消息为写入请求消息,如本文中所描述。平衡器元件可以是将请求消息和/或处理任务引导到其它的不同计算元件的CNM系统的硬件计算元件。在一实例中,平衡器元件接收请求且选择计算元件来执行经请求处理任务。平衡器元件可将请求消息引导到选定的响应者计算元件,以指示响应者计算元件执行经请求处理任务。在另一实例中,平衡器元件可确定处理任务应在CNM系统的另一位置处(例如,在不同节点处、在不同的存储器装置处和/或在不同的存储器装置组件处)执行。平衡器元件可将请求消息发送到CNM架构的另一部分(例如,不同节点、存储器装置或其类似者处的不同的平衡器元件),而非将请求消息直接发送到响应者计算元件。所述平衡器元件可将请求消息发送到响应者计算元件和/或另一平衡器元件,以此类推,直到选择且指示响应者计算元件为止。
考虑以下实例:其中平衡器元件经由第一网络结构从请求者计算元件接收第一请求消息且经由第一网络结构将对应的第二请求消息引导到另一计算元件。第一网络结构可存储从请求者计算元件到平衡器元件的第一请求消息的状态数据。第一网络结构还可存储从平衡器元件到响应者计算元件的第二请求消息的状态数据。当响应者计算元件接收请求消息时,其可将确认数据发送到平衡器元件,这可使得网络结构关闭第二请求消息,例如通过清除如本文中所描述的状态数据。当平衡器元件接收确认数据时,其还可将不同的确认数据发送到请求计算元件,这可使得网络结构清除第一请求消息,例如通过删除其用于第一请求消息的状态数据。如本文中所描述,此布置可对各种网络结构的存储器造成负担,所述网络结构可使各种请求保持开放,直到接收了相应的确认数据为止。这可能导致由于缺乏网络容量而阻止或延迟处理的死锁情形,和/或可能导致对请求者计算元件的背压以限制请求或减少长时延请求。
在一实例中,在从请求者计算元件接收请求消息后,平衡器元件可将下一请求消息发送到CRM架构中的下一组件,且还将确认数据发送到请求计算元件。以此方式,请求者计算元件之间的网络结构可例如在请求消息到最终响应者计算元件的递送被记入之前清除初始请求消息。当响应者计算元件接收请求消息时(且在一些实例中,在响应者计算元件执行经请求处理任务之后),其可发起另一请求消息以记入初始请求消息的接收。以此方式,CNM系统架构的各种网络结构可能不会长时间维护状态数据,进而减轻背压和死锁问题。
图1大体示出近存储器计算系统或CNM系统102的第一实例。CNM系统102的实例包含多个不同存储器计算节点,例如可各自包含各种近存储器计算装置。系统中的每一节点可在其自身的操作系统(OS)域(例如,Linux等)中操作。在实例中,节点可共同地存在于CNM系统102的共同OS域中。
图1的实例包含CNM系统102的第一存储器计算节点104的实例。CNM系统102可具有多个节点,例如包含使用缩放网状架构106耦合的第一存储器计算节点104的不同例项。在实例中,CNM系统102的架构可支持使用缩放网状架构106利用多达n个不同存储器计算节点(例如,n=4096)进行缩放。如下文进一步论述,CNM系统102中的每一节点可以是多个装置的组合件。
CNM系统102可包含用于系统中的各种节点的全局控制器,或系统中的特定存储器计算节点可任选地充当同一系统中的一或多个其它存储器计算节点的主机或控制器。CNM系统102中的各种节点可因此类似地或不同地配置。
在实例中,CNM系统102中的每一节点可包括使用指定操作系统的主机系统。操作系统可在CNM系统102中的各种节点当中为共同或不同的。在图1的实例中,第一存储器计算节点104包括主机系统108、第一交换机110和第一存储器计算装置112。主机系统108可包括处理器,例如可包含X86、ARM、RISC-V或其它类型的处理器。第一交换机110可经配置以例如使用专用或另一通信协议(在本文中通常称为芯片到芯片协议接口(CTCPI))促进第一存储器计算节点104的装置或CNM系统102的装置之间或当中的通信。也就是说,CTCPI可包含对于CNM系统102为唯一的专用接口,或可包含或使用其它接口,例如计算高速链路(CXL)接口、外围组件互连高速(PCIe)接口或小芯片协议接口(CPI)和/或AXI等等。第一交换机110可包含被配置成使用CTCPI的交换机。举例来说,第一交换机110可包含CXL交换机、PCIe交换机、CPI交换机或其它类型的交换机。在实例中,第一交换机110可经配置成耦合不同地配置的端点。举例来说,第一交换机110可经配置以转换分组格式,例如在PCIe格式与CPI格式之间和/或在AXI格式与CXL格式之间转换,等等。
CNM系统102在本文中以各种示例性配置(例如包括节点的系统)进行描述,且每一节点可包括各种芯片(例如,处理器、交换机、存储器装置等)。在实例中,CNM系统102中的第一存储器计算节点104可包含使用小芯片实施的各种芯片。在下文论述的CNM系统102的基于小芯片的配置中,小芯片间通信以及系统内的额外通信可使用CPI网络。本文中所描述的CPI网络为CTCPI的实例,也就是说,作为CTCPI的小芯片特定实施方案。因此,CPI的下文所描述的结构、操作和功能性可同等地适用于如可另外使用非基于小芯片的CTCPI实施方案来实施的结构、操作和功能。除非另外明确地指示,否则本文中对CPI的任何论述同等地适用于CTCPI。
CPI接口包含分组网络,其支持虚拟信道以实现小芯片之间的灵活且高速交互,例如可包括第一存储器计算节点104或CNM系统102的部分。CPI可实现从小芯片内网络到更宽的小芯片网络的桥接。举例来说,AXI为用于芯片内通信的规范。然而,AXI规范涵盖大量的物理设计选项,例如物理信道的数目、信号定时、功率等。在单芯片内,通常选择这些选项以满足设计目标,例如功耗、速度等。然而,为了实现基于小芯片的存储器计算系统的灵活性,例如使用CPI的适配器可在可实施于各种小芯片中的各种AXI设计选项之间介接。通过实现物理信道到虚拟信道映射且利用分组化协议包封基于时间的信令,CPI可用于跨更宽的小芯片网络(例如跨第一存储器计算节点104或跨CNM系统102)桥接(例如特定存储器计算节点内的)小芯片内网络。
CNM系统102可缩放以包含多节点配置。也就是说,可使用缩放网状架构106耦合第一存储器计算节点104的或其它不同地配置的存储器计算节点的多个不同例项,以提供缩放系统。存储器计算节点中的每一个可运行其自身的操作系统,且可经配置以联合地协调系统范围内的资源使用。
在图1的实例中,第一存储器计算节点104的第一交换机110耦合到缩放网状架构106。缩放网状架构106可提供可促进不同存储器计算节点当中及之间的通信的交换机(例如,CTCPI交换机、PCIe交换机、CPI交换机或其它交换机)。在实例中,缩放网状架构106可有助于分区全局地址空间(PGAS)中的各种节点通信。
在实例中,来自第一存储器计算节点104的第一交换机110耦合到一或多个不同存储器计算装置,例如包含第一存储器计算装置112。第一存储器计算装置112可包括基于小芯片的架构,其在本文中称为近存储器计算(CNM)小芯片。第一存储器计算装置112的封装版本可包含例如一或多个CNM小芯片。小芯片可使用CTCPI以通信方式耦合以用于高带宽和低时延。
在图1的实例中,第一存储器计算装置112可包含片上网络(NOC)或第一NOC 118。通常,NOC是装置内的互连网络,其连接特定端点集合。在图1中,第一NOC 118可提供第一存储器计算装置112的各种存储器、计算资源和端口之间的通信及连接。
在实例中,第一NOC 118可包括折叠式克洛斯(Clos)拓扑,例如在存储器计算装置的每一例项内,或作为在节点中耦合多个存储器计算装置的网格。克洛斯拓扑提供各种益处,例如可使用多个较小基数交叉开关以提供与较高基数交叉开关拓扑相关联的功能性。举例来说,克洛斯拓扑可跨NOC展现一致的时延和对分带宽。
第一NOC 118可包含各种不同交换机类型,包含集线交换机、边缘交换机和端点交换机。交换机中的每一个可构造为在输入与输出节点之间提供基本上均一的时延和带宽的交叉开关。在实例中,端点交换机和边缘交换机可包含两个分开的交叉开关,一个交叉开关的流量去往集线交换机,且另一交叉开关的流量远离集线交换机。集线交换机可构造为将所有输入切换到所有输出的单个交叉开关。
在实例中,集线交换机可例如取决于特定集线交换机是否参与芯片间通信而各自具有多个端口(例如,各自四个或六个端口)。参与芯片间通信的集线交换机的数目可由芯片间带宽要求设置。
第一NOC 118可支持计算元件与存储器之间的各种有效载荷(例如,8到64字节有效载荷;可类似地使用其它有效载荷大小)。在实例中,可针对相对较小有效载荷(例如,8到16字节)优化第一NOC 118,以有效地处置对稀疏数据结构的存取。
在实例中,第一NOC 118可经由第一物理层接口114、PCIe从属模块116或端点以及PCIe主模块126或根端口而耦合到外部主机。也就是说,第一物理层接口114可包含用以允许外部主机处理器耦合到第一存储器计算装置112的接口。外部主机处理器可例如使用PCIe交换机或其它本机协议交换机任选地耦合到一或多个不同存储器计算装置。通过基于PCIe的交换机与外部主机处理器的通信可将装置到装置通信限制于由交换机支持的装置到装置通信。相比之下,例如使用CTCPI的通过存储器计算装置本机协议交换机的通信可允许不同存储器计算装置之间或当中的更完全通信,包含对分区全局地址空间的支持,例如用于创建工作线程及发送事件。
在实例中,CTCPI协议可由第一存储器计算装置112中的第一NOC 118使用,且第一交换机110可包含CTCPI交换机。CTCPI交换机可允许CTCPI分组例如在不转换成另一分组格式的情况下从例如第一存储器计算装置112的源存储器计算装置传送到(例如,同一或另一节点上的)不同目的地存储器计算装置。
在实例中,第一存储器计算装置112可包含内部主机处理器122。内部主机处理器122可经配置以例如使用内部PCIe主模块126来与第一NOC 118或第一存储器计算装置112的其它组件或模块通信,这可有助于消除将消耗时间和能量的物理层。在实例中,内部主机处理器122可基于RISC-V ISA处理器,且可使用第一物理层接口114来在第一存储器计算装置112外部传达,以便传达到第一存储器计算装置112的其它存储、联网或其它外围装置。内部主机处理器122可控制第一存储器计算装置112,且可充当用于操作系统相关功能性的代理。内部主机处理器122可包含相对较少数目的处理核心(例如,2到4个核心)和主机存储器装置124(例如,包括DRAM模块)。
在实例中,内部主机处理器122可包含PCI根端口。在内部主机处理器122处于使用中时,其根端口中的一个可连接到PCIe从属模块116。内部主机处理器122的根端口中的另一个可连接到第一物理层接口114,以便提供与外部PCI外围装置的通信。在内部主机处理器122停用时,PCIe从属模块116可耦合到第一物理层接口114以允许外部主机处理器与第一NOC 118通信。在具有多个存储器计算装置的系统的实例中,第一存储器计算装置112可经配置以充当系统主机或控制器。在此实例中,内部主机处理器122可处于使用中,且相应其它存储器计算装置中的内部主机处理器的其它例项可停用。
可在第一存储器计算装置112加电时配置内部主机处理器122,以便允许主机初始化。在实例中,内部主机处理器122和其相关联数据路径(例如,包含第一物理层接口114、PCIe从属模块116等)可从输入引脚配置到第一存储器计算装置112。引脚中的一或多个可用于启用或停用内部主机处理器122且相应地配置PCI(或其它)数据路径。
在实例中,第一NOC 118可经由缩放网状架构接口模块136和第二物理层接口138耦合到缩放网状架构106。缩放网状架构接口模块136或SIF可促进第一存储器计算装置112与例如分区全局地址空间(PGAS)的装置空间之间的通信。PGAS可经配置以使得例如第一存储器计算装置112的特定存储器计算装置可例如使用加载/存储范式存取不同存储器计算装置上的(例如,同一或不同节点上的)存储器或其它资源。可使用各种可缩放网状架构技术,包含CTCPI、CPI、Gen-Z、PCI或经由CXL桥接的以太网。缩放网状架构106可经配置以支持各种分组格式。在实例中,缩放网状架构106支持无序分组通信,或支持有序分组,例如可使用路径标识符以跨多个等效路径扩展带宽。缩放网状架构106通常可支持远程操作,例如远程存储器读取、写入和其它内置原子、远程存储器原子、远程存储器计算装置发送事件以及远程存储器计算装置调用和返回操作。
在实例中,第一NOC 118可耦合到一或多个不同存储器模块,例如包含第一存储器装置128。第一存储器装置128可包含各种类型的存储器装置,例如LPDDR5或GDDR6等等。在图1的实例中,第一NOC 118可经由可专用于特定存储器模块的存储器控制器130协调与第一存储器装置128的通信。在实例中,存储器控制器130可包含存储器模块高速缓存和原子操作模块。原子操作模块可经配置以提供相对较高处理量的原子运算符,例如包含整数和浮点运算符。原子操作模块可经配置以将其运算符应用于存储器模块高速缓存(例如,包括SRAM存储器侧高速缓存)内的数据,由此允许使用同一存储器位置的背对背原子操作,其具有最小处理量降级。
存储器模块高速缓存可提供用于频繁存取的存储器位置的存储,例如不必重新存取第一存储器装置128。在实例中,存储器模块高速缓存可经配置以仅针对存储器控制器130的特定例项高速缓存数据。在实例中,存储器控制器130包含DRAM控制器,其经配置以与例如包含DRAM装置的第一存储器装置128介接。存储器控制器130可提供存取调度和位错误管理,以及其它功能。
在实例中,第一NOC 118可耦合到混合线程处理器(HTP 140)、混合线程网状架构(HTF 142)以及主机接口和分派模块(HID 120)。HID 120可经配置以促进对基于主机的命令请求队列和响应队列的存取。在实例中,HID 120可在HTP 140或HTF 142的处理器或计算元件上分派新执行线程。在实例中,HID 120可经配置以跨HTP 140模块和HTF 142模块维持工作负载平衡。
混合线程处理器或HTP 140可包含加速器,例如可基于RISC-V指令集。HTP 140可包含高度线程化的事件驱动处理器,其中线程可在单个指令轮换中执行,以便维持高指令处理量。HTP 140包括相对较少的自定义指令以支持低开销线程化能力、事件发送/接收和共享存储器原子运算符。
混合线程网状架构或HTF 142可包含加速器,例如可包含非冯诺伊曼粗粒度可重配置处理器。HTF 142可针对高级语言操作和数据类型(例如,整数或浮点)而优化。在实例中,HTF 142可支持数据流计算。HTF 142可经配置以例如在执行存储器界定的计算内核时使用第一存储器计算装置112上可用的基本上所有存储器带宽。
CNM系统102的HTP和HTF加速器可使用各种高级结构化编程语言来编程。举例来说,HTP和HTF加速器可使用C/C++(例如使用LLVM编译程序框架)来编程。HTP加速器可例如通过各种附加自定义指令集来利用开放源编译程序环境,所述各种附加自定义指令集经配置以改进存储器存取效率、提供消息传递机制以及管理事件等。在实例中,HTF加速器可经设计成使用高级编程语言实现HTF 142的编程,且编译程序可生成在HTF 142硬件上运行的模拟器配置文件或二进制文件。HTF 142可提供中级语言以用于精确且简明地表达算法,同时隐藏HTF加速器自身的配置细节。在实例中,HTF加速器工具链可使用LLVM前端编译程序和LLVM中间表示(IR)来与HTF加速器后端介接。
图2大体示出根据实施例的存储器计算装置的存储器子系统200的实例。存储器子系统200的实例包含控制器202、可编程原子单元208和第二NOC 206。控制器202可包含或使用可编程原子单元208来使用存储器装置204中的信息进行操作。可编程原子单元208为在本文中其它地方描述的硬件计算元件的一个实例。在实例中,存储器子系统200包括来自图1的实例的第一存储器计算装置112的一部分,例如包含第一NOC 118的或存储器控制器130的部分。
在图2的实例中,第二NOC 206耦合到控制器202,且控制器202可包含存储器控制模块210、本地高速缓存模块212和内置原子模块214。在实例中,内置原子模块214可经配置以处置相对简单的单周期整数原子。内置原子模块214可在与例如正常存储器读取或写入操作相同的处理量下执行原子。在实例中,原子存储器操作可包含以下的组合:将数据存储到存储器,执行原子存储器操作,以及接着以从存储器加载数据来作出响应。
可提供例如可包含SRAM高速缓存的本地高速缓存模块212以帮助减少用于反复存取的存储器位置的时延。在实例中,本地高速缓存模块212可提供用于子存储器线存取的读取缓冲器。本地高速缓存模块212可尤其有利于具有相对较小或无数据高速缓存的计算元件。
例如可包含DRAM控制器的存储器控制模块210可提供低级请求缓冲和调度,以便提供对存储器装置204(例如可包含DRAM装置)的有效存取。在实例中,存储器装置204可包含或使用GDDR6 DRAM装置,例如具有16Gb密度和64Gb/秒峰值带宽。可类似地使用其它装置。
在实例中,可编程原子单元208可包括单周期或多周期运算符,其例如可经配置成执行整数加法或更复杂的多指令操作,例如布隆过滤器(bloom filter)插入。在实例中,可编程原子单元208可经配置成执行加载和存储到存储器操作。可编程原子单元208可经配置成通过一组专用指令利用RISC-V ISA,以促进与控制器202的交互,从而以原子方式执行用户定义的操作。
可经由第二NOC 206和控制器202来将例如从节点上或节点外主机接收到的可编程原子请求路由到可编程原子单元208。在实例中,自定义原子操作(例如,由可编程原子单元208实行)可与内置原子操作(例如,由内置原子模块214实行)相同,不同之处在于可编程原子操作可由用户而非系统架构师定义或编程。在实例中,可编程原子请求分组可通过第二NOC 206发送到控制器202,且控制器202可将请求标识为自定义原子。控制器202可接着将所标识请求转发到可编程原子单元208。
图3大体示出根据实施例的供与存储器控制器一起使用的可编程原子单元302的实例。在实例中,可编程原子单元302可包括或对应于来自图2的实例的可编程原子单元208。也就是说,图3示出可编程原子单元(PAU)302的实例中的组件,例如上文相对于图2(例如,可编程原子单元208中的)或相对于图1(例如,存储器控制器130的原子操作模块中的)提及的组件。如图3中所示出,可编程原子单元302包含PAU处理器或PAU核心306、PAU线程控制304、指令SRAM 308、数据高速缓存310和存储器接口312以与存储器控制器314介接。在实例中,存储器控制器314包括来自图2的实例的控制器202的实例。
在实例中,PAU核心306为流水线处理器,使得不同指令的多个阶段在每时钟周期一起执行。PAU核心306可包含桶形多线程处理器,其中线程控制304电路系统在每一时钟周期后在不同寄存器堆(例如,含有当前处理状态的多组寄存器)之间切换。这实现了当前执行线程之间的高效上下文切换。在实例中,PAU核心306支持八个线程,从而产生八个寄存器堆。在实例中,寄存器堆中的一些或全部不集成到PAU核心306中,而是实际上驻留在本地数据高速缓存310或指令SRAM 308中。这通过消除用于此类存储器中的寄存器的传统触发器来减小PAU核心306的电路复杂性。
本地PAU存储器可包含指令SRAM 308,例如可包含用于各种原子的指令。指令包括用以支持各种应用加载的原子运算符的指令集。在例如由应用小芯片请求原子运算符时,对应于原子运算符的指令集由PAU核心306执行。在实例中,可分割指令SRAM 308以建立指令集。在此实例中,由请求过程请求的特定可编程原子运算符可通过分区号标识可编程原子运算符。当利用可编程原子单元302注册可编程原子运算符(例如,将可编程原子运算符加载到所述可编程原子单元上)时,可建立分区号。用于可编程指令的其它元数据可存储在可编程原子单元302本地的存储器中的存储器(例如,在分区表中)中。
在实例中,原子运算符操纵数据高速缓存310,当用于原子运算符的线程完成时,所述数据高速缓存通常被同步化(例如,刷新)。因此,除从例如存储器控制器314的外部存储器初始加载以外,在可编程原子运算符线程的执行期间,对于大多数存储器操作,时延可减少。
如果潜在的危险条件会阻止存储器请求,那么在执行线程尝试发出此类请求时,流水线处理器(例如PAU核心306)可能会遇到问题。此处,存储器请求为从存储器控制器314检索数据,无论其是来自存储器控制器314上的高速缓存还是裸片外存储器。为了解决这一问题,PAU核心306经配置成拒绝对线程的存储器请求。通常,PAU核心306或线程控制304可包含用以启用流水线中的一或多个线程重新调度点的电路系统。此处,拒绝发生在流水线中这些线程重新调度点之外(例如,之后)的点处。在实例中,危险发生在重新调度点之外。此处,在存储器请求指令通过可作出存储器请求的流水线阶段之前的最后一个线程重新调度点之后,线程中的前一指令产生了危险。
在实例中,为拒绝存储器请求,PAU核心306经配置成确定(例如,检测)存储器请求中指示的存储器上存在危险。此处,危险表示允许(例如,执行)存储器请求会引起线程的不一致状态的任何条件。在实例中,危险是进行中的存储器请求。此处,无论数据高速缓存310是否包含经请求存储器地址的数据,进行中的存储器请求的存在使得不确定数据高速缓存310中所述地址处的数据应该是什么。因此,线程必须等待进行中的存储器请求完成才能对当前数据进行操作。当存储器请求完成时,危险被清除。
在实例中,危险是数据高速缓存310中用于经请求存储器地址的脏高速缓存线。虽然脏高速缓存线通常指示高速缓存中的数据是当前的且此数据的存储器控制器版本不是,但不从高速缓存中操作的线程指令可能会出现问题。此指令的实例使用存储器控制器314的内置原子运算符或其它单独硬件块。在存储器控制器的上下文中,内置原子运算符可与可编程原子单元302分开,且无法对PAU内部的高速缓存或数据高速缓存310进行存取。如果高速缓存线为脏的,那么内置原子运算符不会对最新数据进行操作,直到高速缓存刷新以使高速缓存与另一或裸片外存储器同步为止。此同样的情况也可能发生在存储器控制器的其它硬件块上,所述硬件块例如密码块、编码器等。
图4示出混合线程处理器(HTP)加速器或HTP加速器400的实例。HTP加速器400可包括根据实施例的存储器计算装置的一部分。在实例中,HTP加速器400可包含或包括来自图1的实例的HTP 140。HTP加速器400包含例如HTP核心402、指令高速缓存404、数据高速缓存406、转译块408、存储器接口410和线程控制器412。HTP加速器400可进一步包含例如用于与NOC介接的分派接口414和NOC接口416,所述NOC例如来自图1的实例的第一NOC 118、来自图2的实例的第二NOC 206或其它NOC。
在实例中,HTP加速器400包含基于RISC-V指令集的模块,且可包含相对较少数目的其它或额外自定义指令以支持低开销的具有线程化功能的混合线程(HT)语言。HTP加速器400可包含高度线程化处理器核心,HTP核心402,在所述HTP核心中或利用所述HTP核心,线程可在单个指令轮换中执行,以便维持高指令处理量。在实例中,线程可在其等待其它待决事件完成时暂停。这可允许计算资源有效地用于相关工作,而不是轮询。在实例中,多线程屏障同步可使用有效HTP到HTP和HTP到/来自主机的消息传递,例如可允许数千个线程在例如数十个时钟周期内初始化或唤醒。
在实例中,分派接口414可包括用于处置基于硬件的线程管理的HTP加速器400的功能块。也就是说,分派接口414可管理对HTP核心402或其它加速器的工作的分派。然而,非HTP加速器通常无法分派工作。在实例中,从主机分派的工作可使用驻留在例如主机主存储器(例如,基于DRAM的存储器)中的分派队列。另一方面,从HTP加速器400分派的工作可使用驻留于SRAM中的分派队列,例如在用于特定节点内的目标HTP加速器400的分派内。
在实例中,HTP核心402可包括代表线程执行指令的一或多个核心。也就是说,HTP核心402可包含指令处理块。HTP核心402可进一步包含或可耦合到线程控制器412。线程控制器412可针对HTP核心402内的每一活动线程提供线程控制和状态。数据高速缓存406可包含用于主机处理器(例如,用于本地和远程存储器计算装置,包含用于HTP核心402)的高速缓存,且指令高速缓存404可包含供HTP核心402使用的高速缓存。在实例中,数据高速缓存406可经配置成用于读取和写入操作,且指令高速缓存404可经配置成用于仅读取操作。
在实例中,数据高速缓存406为每硬件线程提供的小高速缓存。数据高速缓存406可临时存储供拥有线程使用的数据。数据高速缓存406可由HTP加速器400中的硬件或软件管理。举例来说,硬件可经配置以在加载和存储操作由HTP核心402执行时视需要自动地分配或逐出线。例如使用RISC-V指令的软件可确定应高速缓存哪一存储器存取,以及线应失效或写回到其它存储器位置的时间。
在HTP加速器400上高速缓存的数据具有各种益处,包含使更大的存取对存储器控制器更有效,从而允许执行线程避免停滞。然而,有时使用高速缓存会使得效率低下。实例包含仅存取数据一次的存取,且引起高速缓存线的颠簸(thrashing)。为有助于解决这一问题,HTP加速器400可使用自定义加载指令集来促使加载指令检查高速缓存命中,且在高速缓存未命中时发出对经请求操作数的存储器请求且不将所获得数据放置在数据高速缓存406中。因此,HTP加速器400包含各种不同类型的加载指令,包含非高速缓存和高速缓存线加载。如果高速缓存中存在脏数据,那么非高速缓存的加载指令使用高速缓存的数据。非高速缓存的加载指令忽略高速缓存中的干净数据,且并不将所存取数据写入到数据高速缓存。对于高速缓存线加载指令,可将完整数据高速缓存线(例如,包括64字节)从存储器加载到数据高速缓存406中,且可将经寻址存储器加载到指定寄存器中。如果干净或脏数据处于数据高速缓存406中,那么这些加载可使用高速缓存的数据。如果所参考存储器位置不处于数据高速缓存406中,那么可从存储器存取整个高速缓存线。在参考循序存储器位置(例如存储器复制操作)时,高速缓存线加载指令的使用可减少高速缓存未命中,但如果不使用所参考存储器数据,那么还可能会浪费NOC接口416处的存储器和带宽。
在实例中,HTP加速器400包含非高速缓存的自定义存储指令。非高速缓存的存储指令可有助于利用未依序写入到存储器的写入数据来避免使数据高速缓存406颠簸。
在实例中,HTP加速器400进一步包含转译块408。转译块408可包含用于存储器计算装置的本地存储器的虚拟到物理转译块。举例来说,例如HTP核心402中的主机处理器可执行加载或存储指令,且指令可生成虚拟地址。可例如使用来自转译块408的转译表将虚拟地址转译为主机处理器的物理地址。举例来说,存储器接口410可包含HTP核心402与NOC接口416之间的接口。
图5示出根据实施例的存储器计算装置的混合线程网状架构(HTF)或HTF 500的表示的实例。在实例中,HTF 500可包含或包括来自图1的实例的HTF 142。HTF 500为粗粒度可重配置计算网状架构,其可针对高级语言操作数类型和运算符(例如,使用C/C++或其它高级语言)而优化。在实例中,HTF 500可包含互连硬化SIMD算术单元的可配置n位宽(例如,512位宽)数据路径。
在实例中,HTF 500包括HTF集群502,其包含多个HTF平铺块,包含示例性平铺块504或平铺块N。每一HTF平铺块可实施具有本地平铺块存储器或计算元件存储器和算术函数的一或多个计算元件。举例来说,每一平铺块可包含支持整数和浮点操作的计算流水线。在实例中,数据路径、计算元件和其它基础设施可实施为硬化IP以提供最大性能,同时减少功耗和重配置时间。
在图5的实例中,包括HTF集群502的平铺块线性地布置,且集群中的每一平铺块可耦合到HTF集群502中的一或多个其它平铺块。在图5的实例中,示例性平铺块504或平铺块N耦合到四个其它平铺块,包含经由标记为SF IN N-2的端口耦合到平铺块510的平铺块基底(例如,平铺块N-2),经由标记为SF IN N-1的端口耦合到相邻平铺块512(例如,平铺块N-1)以及经由标记为SF IN N+1的端口耦合到平铺块N+1及经由标记为SF IN N+2的端口耦合到平铺块N+2。平铺块基底为例如平铺块504、510、512的平铺块的硬件部分,其经配置以发起线程和/或以其它方式充当流量控制器。示例性平铺块504可经由相应输出端口(例如标记为SF OUT N-1、SF OUT N-2、SF OUT N+1和SF OUT N+2的端口)耦合到相同或其它平铺块。在此实例中,各种平铺块的有序名称列表是平铺块的位置的概念指示。在其它实例中,包括HTF集群502的平铺块可布置在网格或其它配置中,其中每一平铺块类似地耦合到其在网格中的最接近相邻者中的一个或几个。设置在集群的边缘处的平铺块可任选地与相邻平铺块的连接更少。举例来说,平铺块N-2或图5的实例中的平铺块510的平铺块基底可仅耦合到相邻平铺块512(平铺块N-1)且耦合到示例性平铺块504(平铺块N)。可类似地使用更少或额外的平铺块间连接。
HTF集群502可进一步包含存储器接口模块,其包含第一存储器接口模块506。存储器接口模块可将HTF集群502耦合到NOC,例如第一NOC 118。在实例中,存储器接口模块可允许集群内的平铺块对存储器计算系统中(例如系统中的相同或不同节点中)的其它位置作出请求。也就是说,HTF 500的表示可包括可跨多个节点分布的更大网状架构的一部分,例如在节点中的每一个处具有一或多个HTF平铺块或HTF集群。可在更大网状架构的上下文内的平铺块或节点之间作出请求。
在图5的实例中,使用同步网状架构(SF)来耦合HTF集群502中的平铺块。同步网状架构可提供HTF集群502中的特定平铺块与其相邻平铺块之间的通信,如上文所描述。每一HTF集群502可进一步包含异步网状架构(AF),所述异步网状架构可提供例如集群中的平铺块、集群中的存储器接口以及集群中的分派接口508当中的通信。
在实例中,同步网状架构可交换包含数据和控制信息的消息。控制信息可尤其包含指令RAM地址信息或线程标识符。控制信息可用于设置数据路径,且可选择数据消息字段作为路径的源。通常,可较早地提供或接收控制字段,使得其可用于配置数据路径。举例来说,为了帮助减少通过平铺块中的同步流流水线的任何延迟,控制信息可在数据字段之前的若干时钟周期到达平铺块。可提供各种寄存器以帮助协调流水线中的数据流定时。
在实例中,HTF集群502中的每一平铺块可具有一或多个平铺块存储器。每一平铺块存储器可具有与数据路径相同的宽度(例如,512位)并且可具有指定深度,例如在512个到1024个要素的范围内。平铺块存储器可用于存储支持数据路径操作的数据。举例来说,所存储的数据可包含作为内核的集群配置的部分加载的常量,或可包含计算为数据流的部分的变量。在实例中,平铺块存储器可作为来自另一同步流的数据传送而从异步网状架构写入,或可包含例如由另一同步流发起的加载操作的结果。可经由同步流中的同步数据路径指令执行来读取平铺块存储器。
在实例中,HTF集群502中的每一平铺块可具有专用指令RAM(INST RAM)。在具有十六个平铺块的HTF集群502和具有六十四个条目的相应指令RAM例项的实例中,集群可允许映射具有多达1024个相乘-移位和/或ALU操作的算法。各种平铺块可例如使用同步网状架构任选地一起流水线化,以允许利用最小存储器存取的数据流计算,因此使时延最小化且降低功耗。在实例中,异步网状架构可允许存储器参考与计算并行地继续进行,由此提供更有效的流式传输内核。在实例中,各种平铺块可包含对基于循环的构造的内置支持,且可支持嵌套循环内核。
同步网状架构可允许多个平铺块(例如,其多个计算元件)流水线化,例如无需数据列队。参与同步流的计算元件可例如充当单个流水线化数据路径。用于同步流的流量控制器可以是或包含平铺块(例如,在图5的实例中,平铺块N-2)、平铺块上的计算元件,和/或平铺块上的平铺块基底或控制器。同步流的流量控制器可通过流水线化平铺块来发起工作线程。流量控制器可负责在本文中称为辐条计数的预定义节拍上开始线程。举例来说,如果辐条计数为3,那么平铺块基底可每隔两个时钟周期发起线程。
在一实例中,同步流包括HTF集群502中的一组经连接计算元件。线程的执行可在流量控制器处开始且可经由同步网状架构从流量控制器进行到其它计算元件(例如,在相同同步流中的其它平铺块处)。流量控制器可提供待针对第一计算元件执行的指令。默认地,第一计算元件可提供相同指令以供其它已连接计算元件执行。然而,在一些实例中,流量控制器或后续计算元件可实施条件性操作,其有条件地指定或使用替代的指令。替代指令可通过使计算元件的数据路径产生布尔(Boolean)条件值来选择,且接着可使用布尔值来在当前计算元件的指令集与交替指令之间进行选择。
异步网状架构可用于执行相对于同步流异步地发生的操作。HTF集群502中的每一平铺块可包含到异步网状架构的接口。入接口可包含例如FIFO缓冲器或队列(例如,AF INQUEUE),以针对无法立即处理的消息提供存储。类似地,异步网状架构的出接口可包含FIFO缓冲器或队列(例如,AF OUT QUEUE),以针对无法立即发出的消息提供存储。
在实例中,异步网状架构中的消息可分类为数据消息或控制消息。数据消息可包含写入到平铺块存储器0(MEM_0)或存储器1(MEM_1)的SIMD宽度数据值。控制消息可经配置成控制线程创建、释放资源或发出外部存储器参考。
HTF集群502中的平铺块可执行用于HTF的各种计算操作。可通过配置平铺块和/或其计算元件内的数据路径来执行计算操作。在实例中,平铺块包含执行用于平铺块的计算操作的两个功能块:乘法和移位操作块(MS OP)以及算术、逻辑和位操作块(ALB OP)。两个块可经配置成执行流水线操作,例如乘法和加法,或移位和加法等。
在实例中,系统中的存储器计算装置的每一例项可具有用于其运算符块(例如,MSOP和ALB OP)的完整支持指令集。在此状况下,可跨系统中的所有装置实现二进制兼容性。然而,在一些实例中,维持基础功能性集合和任选指令集类别可为有帮助的,以便满足各种设计折衷,例如裸片大小。方法可与RISC-V指令集具有基础集合和多个任选指令子集的方式类似。
在实例中,示例性平铺块504可包含辐条RAM。辐条RAM可用于指定哪一输入(例如,来自四个SF平铺块输入和基础平铺块输入当中)为用于每一时钟周期的主输入。辐条RAM读取地址输入可来源于从零计数到辐条计数减去一的计数器。在实例中,不同辐条计数可用于例如同一HTF集群502内的不同平铺块,以允许由内循环使用的数个切片或独特平铺块例项确定特定应用或指令集的性能。在实例中,辐条RAM可指定同步输入将写入到平铺块存储器的时间,例如使用用于特定平铺块指令的多个输入以及输入中的一个在其它输入之前到达的时间。较早到达输入可写入到平铺块存储器,且可稍后在所有输入可用时读取。在此实例中,平铺块存储器可存取为FIFO存储器,且FIFO读取和写入指针可存储在平铺块存储器中的基于寄存器的存储器区或结构中。
图6A和图6B大体示出可用于实施CNM系统102的一或多个特征的小芯片系统的实例。如上文类似地提及,CNM系统102中的节点或CNM系统102中的节点内的装置可包含基于小芯片的架构或近存储器计算(CNM)小芯片。封装的存储器计算装置可包含例如一个、两个或四个CNM小芯片。小芯片可使用高带宽、低时延互连件(例如使用CPI接口)互连。通常,小芯片系统由离散模块(各自被称为“小芯片”)构成,所述离散模块集成在中介层上,并且在许多实例中视需要通过一或多个已建立网络互连,以向系统提供所要功能性。中介层和所包含的小芯片可封装在一起,以便于与较大系统的其它组件互连。每一小芯片可包含一或多个个别集成电路(IC)或“芯片”,其可能与离散电路组件组合,且可耦合到相应衬底以便于附接到中介层。系统中的大多数或所有小芯片可个别地配置成用于通过已建立的网络进行通信。
小芯片作为系统的个别模块的配置不同于在单芯片上实施的此系统,所述芯片在一个衬底(例如单个裸片)上含有不同装置块(例如,知识产权(IP)块),例如芯片上系统(SoC),或集成在印刷电路板(PCB)上的多个离散封装装置。一般来说,小芯片提供比离散封装装置更好的性能(例如,更低的功耗、减少的时延等),并且小芯片提供比单裸片芯片更大的生产效益。这些生产效益可包含更高的良率或减少的开发成本和时间。
小芯片系统可包含例如一或多个应用(或处理器)小芯片和一或多个支持小芯片。此处,应用小芯片与支持小芯片之间的区别只是对小芯片系统可能的设计情境的参考。因此,举例来说,合成视觉小芯片系统可包含(仅作为实例)用以产生合成视觉输出的应用小芯片,以及例如存储器控制器小芯片、传感器接口小芯片或通信小芯片等支持小芯片。在典型的用例中,合成视觉设计者可设计应用小芯片并且从其它方获取支持小芯片。因此,通过避免设计和生产支持小芯片中所包含的功能,减少了设计支出(例如,在时间或复杂性方面)。
小芯片还支持原本可能很困难的IP块紧密集成,例如使用不同处理技术或使用不同特征大小(或利用不同的接触技术或间距)制造的IP块。因此,可以模块化方式组装具有不同物理、电气或通信特性的多个IC或IC组合件,以提供具有各种所要功能性的组合件。小芯片系统还可促进调适以适应将并入有小芯片系统的不同较大系统的需要。在实例中,IC或其它组合件可针对特定功能的功率、速度或发热进行优化,如同传感器可能发生的情况一样,相比于在单裸片上尝试与其它装置集成,所述IC或其它组合件可更容易地与其它装置集成。另外,通过减小裸片的整体大小,小芯片的良率往往会高于更复杂的单裸片装置的良率。
图6A和图6B大体示出根据实施例的小芯片系统的实例。图6A是安装在外围板604上的小芯片系统602的表示,所述外围板可例如通过外围组件互连高速(PCIe)连接到更广泛的计算机系统。小芯片系统602包含封装衬底606、中介层608和四个小芯片:应用小芯片610、主机接口小芯片612、存储器控制器小芯片614和存储器装置小芯片616。其它系统可包含许多额外小芯片以提供额外功能性,如将从以下论述中显而易见。小芯片系统602的封装以封盖或盖板618示出,但可使用用于小芯片系统的其它封装技术和结构。图6B是出于清楚起见标记小芯片系统602中的组件的框图。
应用小芯片610示出为包含用以支持用于小芯片间通信的小芯片网络622的小芯片系统NOC 620。在示例性实施例中,小芯片系统NOC 620可包含于应用小芯片610上。在实例中,可响应于选定的支持小芯片(例如,主机接口小芯片612、存储器控制器小芯片614和存储器装置小芯片616)而定义来自图1的实例的第一NOC 118,因此使得设计者能够为小芯片系统NOC 620选择适当数目的小芯片网络连接或交换机。在实例中,小芯片系统NOC 620可位于单独小芯片上或中介层608内。在如本文中所论述的实例中,小芯片系统NOC 620实施小芯片协议接口(CPI)网络。
在实例中,小芯片系统602可包含或包括第一存储器计算节点104或第一存储器计算装置112的一部分。也就是说,第一存储器计算装置112的各种块或组件可包含可安装于外围板604、封装衬底606和中介层608上的小芯片。第一存储器计算装置112的接口组件通常可包括主机接口小芯片612;第一存储器计算装置112的存储器和存储器控制相关组件通常可包括存储器控制器小芯片614;第一存储器计算装置112的各种加速器和处理器组件通常可包括应用小芯片610或其例项等。
例如可用于系统中的小芯片之间或当中的通信的CPI接口为分组网络,其支持虚拟信道以实现小芯片之间的灵活且高速交互。CPI实现了从小芯片内网络到小芯片网络622的桥接。举例来说,AXI为用于芯片内通信的规范。然而,AXI规范涵盖大量的物理设计选项,例如物理信道的数目、信号定时、功率等。在单芯片内,通常选择这些选项以满足设计目标,例如功耗、速度等。然而,为了实现小芯片系统的灵活性,使用例如CPI等适配器在可实施于各种小芯片中的各种AXI设计选项之间介接。通过实现物理信道到虚拟信道的映射且利用包化协议包封基于时间的信令,CPI跨小芯片网络622桥接小芯片内网络。
CPI可使用多种不同的物理层来发射分组。物理层可包含简单的导电连接,或可包含驱动器以增加电压,或以其它方式促进在较长距离上发射信号。一个此类物理层的实例可包含高级接口总线(AIB),其在各种实例中可在中介层608中实施。AIB使用具有转发时钟的源同步数据传送来发射和接收数据。以单数据速率(SDR)或双数据速率(DDR)相对于所发射的时钟跨AIB传送分组。AIB支持各种信道宽度。信道可经配置成具有对称数目的发射(TX)和接收(RX)输入/输出(I/O),或者具有非对称数目的发射器和接收器(例如,所有发射器或所有接收器)。信道可取决于哪一个小芯片提供主时钟而充当AIB主体或从属。AIB I/O单元支持三个计时模式:异步(即,非时控)、SDR和DDR。在各种实例中,非计时模式用于时钟和一些控制信号。SDR模式可使用专用仅SDR的I/O单元,或双用SDR/DDR I/O单元。
在实例中,CPI分组协议(例如,点到点或可路由)可在AIB信道内使用对称的接收和发射I/O单元。CPI串流协议允许更灵活地使用AIB I/O单元。在实例中,串流模式的AIB信道可将I/O单元配置为全部为TX、全部为RX或者一半为TX且一半为RX。CPI分组协议可在SDR或DDR操作模式中使用AIB信道。在一实例中,AIB信道针对SDR模式以80个I/O单元(即,40个TX和40个RX)的增量配置,且针对DDR模式以40个I/O单元的增量配置。CPI串流协议可在SDR或DDR操作模式下使用AIB信道。此处,在一实例中,AIB信道针对SDR和DDR模式两者以40个I/O单元为增量。在实例中,向每一AIB信道分配唯一的接口标识符。所述标识符在CPI复位和初始化期间用于确定跨邻近小芯片的成对AIB信道。在实例中,接口标识符为包括七位小芯片标识符、七位列标识符和六位链路标识符的20位值。AIB物理层使用AIB带外移位寄存器来发射接口标识符。使用移位寄存器的位32到51跨越AIB接口在两个方向上传送20位接口标识符。
AIB将堆叠的一组AIB信道限定为AIB信道列。AIB信道列具有一定数目的AIB信道,外加辅助信道。辅助信道含有用于AIB初始化的信号。列内的所有AIB信道(辅助信道除外)具有相同配置(例如,全部为TX、全部为RX,或者一半为TX且一半为RX,以及具有相同数目的数据I/O信号)。在实例中,以邻近于AUX信道的AIB信道开始,以连续递增次序对AIB信道编号。与AUX相邻的AIB信道被定义为AIB信道零。
通常,个别小芯片上的CPI接口可包含串行化-反串行化(SERDES)硬件。SERDES互连非常适用于需要高速信令和低信号计数的情境。然而,对于复用和解复用、错误检测或校正(例如,使用块级循环冗余检查(CRC))、链路级重试或前向错误校正,SERDE可能会引起额外的功耗和更长的时延。然而,当低时延或能耗为超短距离小芯片到小芯片互连的主要关注点时,可利用时钟速率允许以最少时延进行数据传送的并行接口。CPI包含用于使这些超短距离小芯片互连的时延和能耗两者最小化的元件。
对于流控,CPI采用基于信用的技术。例如应用小芯片610的接收者向例如存储器控制器小芯片614的发送者提供表示可用缓冲器的信用。在实例中,CPI接收者包含用于给定发射时间单位的每一虚拟信道的缓冲器。因此,如果CPI接收者在时间上支持五个消息和单个虚拟信道,那么接收者具有布置成五行的五个缓冲器(例如,每一单位时间一行)。如果支持四个虚拟信道,那么接收者具有布置成五行的二十个缓冲器。每一缓冲器保持一个CPI分组的有效载荷。
当发送者向接收者进行发射时,发送者基于发射而使可用信用递减。一旦接收者的所有信用已消耗,发送者就停止向接收者发送分组。这确保接收者始终具有可用缓冲器以存储发射。
当接收者处理接收到的分组并释放缓冲器时,接收者将可用缓冲空间传达回发送者。随后,发送者可使用此信用返回以允许发射额外信息。
图6A的实例包含在不需要小芯片系统NOC 620的情况下使用直接小芯片到小芯片技术的小芯片网状网络624。小芯片网状网络624可在CPI或另一小芯片到小芯片协议中实施。小芯片网状网络624通常实现小芯片流水线,其中一个小芯片充当到流水线的接口,而流水线中的其它小芯片仅与自身介接。
另外,还可使用专用装置接口来将装置连接到小芯片,所述专用装置接口例如一或多个行业标准存储器接口(例如,同步存储器接口,例如DDR5、DDR6)。小芯片系统或个别小芯片到外部装置(例如,较大系统)的连接可通过所要接口(例如,PCIe接口)。在实例中,可通过主机接口小芯片612实施此外部接口,在所描绘的实例中,所述主机接口小芯片提供小芯片系统外部的PCIe接口。当行业中的惯例或标准已经汇聚在此类专用小芯片接口626上时,通常采用此类接口。将存储器控制器小芯片614连接到动态随机存取存储器(DRAM)存储器装置小芯片616的双数据速率(DDR)接口的所示出实例就是此类行业惯例。
在多种可能的支持小芯片中,存储器控制器小芯片614很可能存在于小芯片系统中,这是因为几乎无所不在地使用存储装置来进行计算机处理以及存储器装置的复杂的当前技术发展水平。因此,使用通过其它技术产生的存储器装置小芯片616和存储器控制器小芯片614使小芯片系统设计者能够获得由成熟生产商生产的稳健产品。通常,存储器控制器小芯片614提供用以读取、写入或擦除数据的存储器装置特定的接口。通常,存储器控制器小芯片614可提供额外特征,例如错误检测、错误校正、维护操作或原子运算符执行。对于一些类型的存储器,维护操作往往特定于存储器装置小芯片616,例如NAND快闪或存储类存储器中的垃圾收集、NAND快闪存储器中的温度调整(例如,交叉温度管理)。在一实例中,维护操作可包含逻辑到物理(L2P)映射或管理,以在数据的物理与逻辑表示之间提供间接层级。在例如DRAM的其它类型的存储器中,例如刷新的一些存储器操作可在某些时间由存储器控制器的主机处理器控制,且在其它时间由DRAM存储器装置或与一或多个DRAM装置相关联的逻辑控制,所述逻辑例如接口芯片(在实例中,缓冲器)。
原子运算符是例如可由存储器控制器小芯片614执行的数据操纵。在其它小芯片系统中,可由其它小芯片执行原子运算符。举例来说,可由应用小芯片610在命令中指定“增量”的原子运算符,所述命令包含存储器地址且可能包含增量值。在接收到命令后,存储器控制器小芯片614从指定存储器地址检索数字,使所述数字递增命令中所指定的量,并且存储结果。在成功完成后,存储器控制器小芯片614向应用小芯片610提供命令成功的指示。原子运算符避免了跨小芯片网状网络624发射数据,从而减少执行此类命令的时延。
原子运算符可被分类为内置原子或可编程(例如,自定义)原子。内置原子是在硬件中不变地实施的一组有限的操作。可编程原子是可在存储器控制器小芯片614的可编程原子单元(PAU)(例如,自定义原子单元(CAU))上执行的小程序。
存储器装置小芯片616可为或包含易失性存储器装置或非易失性存储器的任何组合。易失性存储器装置的实例包含但不限于随机存取存储器(RAM),例如DRAM、同步DRAM(SDRAM)、图形双数据速率类型6SDRAM(GDDR6 SDRAM)等等。非易失性存储器装置的实例包含但不限于与非(NAND)型快闪存储器、存储类存储器(例如,相变存储器或基于忆阻器的技术)、铁电RAM(FeRAM)等。所示出实例包含作为小芯片的存储器装置小芯片616;然而,装置可驻留在其它地方,例如在外围板604上的不同封装中。对于许多应用,可提供多个存储器装置小芯片。在实例中,这些存储器装置小芯片可各自实施一或多种存储技术,且可包含集成计算主机。在实例中,存储器小芯片可包含不同技术的多个堆叠存储器裸片,例如一或多个静态随机存取存储器(SRAM)装置与一或多个动态随机存取存储器(DRAM)装置堆叠或以其它方式通信。在实例中,存储器控制器小芯片614可用于协调小芯片系统602中的多个存储器小芯片之间的操作,例如,在一或多个层级的高速缓存存储区中使用一或多个存储器小芯片,且使用一或多个额外存储器小芯片作为主存储器。小芯片系统602可包含多个存储器控制器小芯片614例项,其可用于提供用于单独主机、处理器、传感器、网络等的存储器控制功能性。例如所示出的系统中的小芯片架构提供如下优点:允许通过更新后的小芯片配置适应不同存储器存储技术和不同存储器接口,例如不需要重新设计系统结构的其余部分。
图7大体示出根据实施例的用于存储器计算装置的基于小芯片的实施方案的实例。存储器计算装置可为在本文中其它地方描述的硬件计算元件的一个实例。实例包含具有四个近存储器计算或CNM、小芯片的实施方案,且CNM小芯片中的每一个可包含或包括来自图1的实例的第一存储器计算装置112或第一存储器计算节点104的部分。各种部分自身可包含或包括相应小芯片。基于小芯片的实施方案可包含或使用基于CPI的系统内通信,如上文在来自图6A和图6B的示例性小芯片系统602中类似地论述。
图7的实例包含第一CNM封装700,其包括多个小芯片。第一CNM封装700包含耦合到CNM NOC集线器710的第一小芯片702、第二小芯片704、第三小芯片706和第四小芯片708。第一到第四小芯片中的每一个可包括相同或基本上相同的组件或模块的例项。举例来说,小芯片可各自包含用于存取内部或外部存储器的HTP加速器、HTF加速器和存储器控制器的相应例项。
在图7的实例中,第一小芯片702包含耦合到CNM NOC集线器710的第一NOC集线器边缘714。第一CNM封装700中的其它小芯片类似地包含NOC集线器边缘或端点。NOC集线器边缘中的交换机促进经由CNM NOC集线器710的小芯片内或小芯片内系统通信。
第一小芯片702可进一步包含一或多个存储器控制器716。存储器控制器716可对应于与第一NOC集线器边缘714介接的相应不同NOC端点交换机。在实例中,存储器控制器716包括存储器控制器小芯片614或包括存储器控制器130,或包括存储器子系统200或其它存储器计算实施方案。存储器控制器716可耦合到相应不同存储器装置,例如包含第一外部存储器模块712a或第二外部存储器模块712b。外部存储器模块可包含例如可选择性地由系统中的相应不同小芯片存取的GDDR6存储器。
第一小芯片702可进一步包含例如经由相应不同NOC端点交换机耦合到第一NOC集线器边缘714的第一HTP小芯片718和第二HTP小芯片720。HTP小芯片可对应于HTP加速器,例如来自图1的实例的HTP 140或来自图4的实例的HTP加速器400。HTP小芯片可与HTF小芯片722通信。HTF小芯片722可对应于HTF加速器,例如来自图1的实例的HTF 142或来自图5的实例的HTF 500。
CNM NOC集线器710可借助于各种接口和交换机耦合到其它小芯片或其它CNM封装中的NOC集线器例项。举例来说,CNM NOC集线器710可借助于第一CNM封装700上的多个不同NOC端点耦合到CPI接口。多个不同NOC端点中的每一个可耦合到例如第一CNM封装700外部的不同节点。在实例中,CNM NOC集线器710可使用CTCPI或其它非CPI协议耦合到其它外围装置、节点或装置。举例来说,第一CNM封装700可包含配置成使第一CNM封装700与其它装置介接的PCIe缩放网状架构接口(PCIE/SFI)或CXL接口(CXL)。在实例中,使用各种CPI、PCIe、CXL或其它网状架构将第一CNM封装700耦合到的装置可构成共同全局地址空间。
在图7的实例中,第一CNM封装700包含主机接口724(HIF)和主机处理器(R5)。主机接口724可对应于例如来自图1的实例的HID 120。主机处理器或R5可对应于来自图1的实例的内部主机处理器122。主机接口724可包含用于将第一CNM封装700耦合到其它外部装置或系统的PCI接口。在实例中,工作可通过主机接口724在第一CNM封装700或第一CNM封装700内的平铺块集群上发起。举例来说,主机接口724可经配置以命令个别HTF平铺块集群(例如在第一CNM封装700中的各种小芯片当中)进入和退出功率/时钟门模式。
图8示出根据实施例的存储器计算装置的示例性平铺。在图8中,平铺的小芯片实例800包含小芯片的四个不同近存储器计算集群的例项,其中集群耦合在一起。近存储器计算小芯片的每一例项自身可包含一或多个构成小芯片(例如,主机处理器小芯片、存储器装置小芯片、接口小芯片等)。
平铺的小芯片实例800包含来自图7的实例的第一CNM封装700的例项作为其近存储器计算(CNM)集群中的一或多个。举例来说,平铺的小芯片实例800可包含第一CNM集群802,其包含第一小芯片810(例如,对应于第一小芯片702)、第二小芯片812(例如,对应于第二小芯片704)、第三小芯片814(例如,对应于第三小芯片706)和第四小芯片816(例如,对应于第四小芯片708)。第一CNM集群802中的小芯片可耦合到共同NOC集线器,其又可耦合到一或多个相邻集群中的(例如,第二CNM集群804或第四CNM集群808中的)NOC集线器。
在图8的实例中,平铺的小芯片实例800包含第一CNM集群802、第二CNM集群804、第三CNM集群806和第四CNM集群808。各种不同CNM小芯片可配置于共同地址空间中,使得小芯片可跨不同平铺块分配及共享资源。在实例中,集群中的小芯片可彼此通信。举例来说,第一CNM集群802可经由小芯片间CPI接口818通信地耦合到第二CNM集群804,且第一CNM集群802可经由另一或同一CPI接口通信地耦合到第四CNM集群808。第二CNM集群804可经由同一或另一CPI接口以通信方式耦合到第三CNM集群806,以此类推。
在实例中,平铺的小芯片实例800中的近存储器计算小芯片中的一个可包含主机接口(例如,对应于来自图7的实例的主机接口724),其负责跨平铺的小芯片实例800的工作负荷平衡。主机接口可促进例如从平铺的小芯片实例800外部对基于主机的命令请求队列和响应队列的存取。主机接口可在平铺的小芯片实例800中的近存储器计算小芯片中的一或多个中使用混合线程处理器和混合线程网状架构来分派新执行线程。
图9示出包含由请求者硬件计算元件902向响应者硬件计算元件904作出的读取请求的示例性布置900。布置900包含请求者硬件计算元件902、响应者硬件计算元件904和网络结构906。
网络结构906可以是硬件组件,或连接硬件计算元件(例如请求者计算元件902和响应者计算元件904)的组件的组合。参考图1的实例,缩放网状架构106、第一交换机110和NOC 118可构成例如网络结构906的网络结构的全部或部分。并且,尽管图9的布置900展示网络结构906与两个计算元件902、904通信,但应了解,网络结构906可与额外计算元件通信且可同时支持多个读取请求和/或写入请求。
请求者计算元件902和响应者计算元件904可以是或包含执行和/或请求处理任务的任何合适的硬件元件。使用图1到8的实例,请求者计算元件902和响应者计算元件904可以是或包含例如HTP 140的组件、HTF 142的元件、存储器控制器130等等。在图9的布置900中,请求者计算元件902朝向响应者计算元件904做出读取请求。然而,在各种实例中,计算元件可能能够做出且接收读取请求。
在图9的实例中,请求者计算元件902例如通过将读取控制数据提供到网络结构906来做出读取请求。读取控制数据可包含响应者计算元件904的地址或其它指示符、待读取的所要数据的指示符,和/或其它数据。网络结构906切换到在请求者计算元件902与响应者计算元件904之间提供读取地址总线910的状态。读取地址总线910可包括预定数目的信道,其中每一信道支持将预定大小数据单元从请求者计算元件902传送到响应者计算元件904。举例来说,读取地址总线910可包括经设定大小以传送待读取的数据的指示符的第一信道、经设定大小以传送响应者计算元件904的指示符的第二信道等等。在一实例中,读取地址总线910包括用于在请求者计算元件902与响应者计算元件904之间传送读取控制数据的全部或部分的数个数据路径。
响应者计算元件904在接收读取控制数据后可提供读取数据作为响应。读取数据可包含例如由读取控制数据描述的数据。在一实例中,在经由读取地址总线910接收读取控制数据后,响应者计算元件904检索经请求数据。网络结构906可切换到在响应者计算元件904与请求者计算元件902之间提供读取数据总线912的状态。响应者计算元件904可经由读取数据总线912将读取数据提供到请求者计算元件902。举例来说,读取数据总线912可包含数个并行数据路径,其用于将读取数据的全部或一部分从响应者计算元件904并行发射到请求者计算元件902。
网络结构906可经选择性地切换,以在需要时在相应请求者计算元件902与响应者计算元件904之间提供读取地址总线910和读取数据总线912,以促进读取请求。举例来说,网络结构906可包括用于实施多个总线的硬件,所述总线包含多个读取地址总线910、多个读取数据总线912。网络结构906还可包含用于实施各种写入请求总线的硬件,所述总线例如关于图10描述的总线1010、1012和1014。为了促进读取请求(或写入请求)中的计算元件之间的数据传送,网络结构906切换到在例如计算元件902、904的计算元件之间提供适当的总线的状态。
网络结构906还包括存储器908。存储器908可存储状态数据,其描述为开放或正在进行中的各种读取和/或写入请求。举例来说,图9中所示出的读取请求可在请求者计算元件902将读取控制数据提供到网络结构906时开始。作为响应,网络结构906可切换到在请求者计算元件902与响应者计算元件904之间提供读取地址总线910的状态。以此方式,请求者计算元件902可将读取控制数据提供到响应者计算元件904。网络结构906还可存储为开放的各种读取和/或写入请求的状态。考虑以下实例:其中读取控制数据已经提供到响应者计算元件904,但读取数据尚未传送回到请求者计算元件902。网络结构906可在存储器908处存储此开放读取请求的指示。状态数据可包含例如请求者计算元件902的指示、响应者计算元件904的指示,和已经提供读取控制数据但未传送回读取数据的指示,和/或其它数据。当响应者计算元件904提供读取数据时,网络结构906可切换到在响应者计算元件904与请求者计算元件902之间提供读取数据总线912的状态。响应者计算元件904可经由读取数据总线912将读取数据发射到请求者计算元件902。当进行此传送时,可完成读取请求。因此,网络结构906可例如通过删除状态数据和/或释放存储器908处存储待由新数据覆写的状态数据(例如,用于不同通信请求的状态数据)的位置来清除其描述读取请求的状态数据。
图10示出示例性布置1000,其包含由请求者硬件计算元件1002经由网络结构906向响应者硬件计算元件1004做出的写入请求。请求者计算元件1002及响应者计算元件1004可以是任何合适的计算元件,如本文中所描述。
在示例性布置1000中,请求者计算元件1002经由由网络结构906提供的写入地址总线1010将写入控制数据提供到响应者计算元件1004。写入控制数据可包括例如响应者计算元件1004的地址或其它指示符,且在一些实例中,可包含数据将被写入何处的指示。响应于接收到写入控制数据,网络结构906切换到在请求者计算元件1002与响应者计算元件1004之间提供写入地址总线1010的状态。写入地址总线1010可包括预定数目的信道,如本文中所描述。
请求者计算元件1002还可将写入数据提供到响应者计算元件1004。网络结构906可切换到在请求者计算元件1002与响应者计算元件1004之间提供写入数据总线1012的状态,以促进将写入数据提供到响应者计算元件1004。
在写入写入数据后,响应者计算元件1004可将确认数据提供到请求者计算元件1002。网络结构906可切换到在响应者计算元件1004与请求者元件1002之间提供写入确认总线1014的状态,且响应者计算元件1004可经由由网络结构906提供的写入确认总线1014将确认数据提供到请求者计算元件1002。写入确认数据可以是经由写入确认总线1014提供的写入确认数据的部分。
网络结构906可存储用于图10中所展示的写入请求布置的状态数据。举例来说,当网络结构906接收写入请求时,其可存储描述写入请求的状态数据。状态数据可包含例如请求者计算元件1002的指示、响应者计算元件1004的指示,和写入请求的完成状态的指示。这可包含例如写入控制数据是否已经提供到响应者计算元件1004、写入数据是否已经提供到响应者计算元件1004以及写入确认数据是否已经提供到请求者计算元件1002的指示。当写入确认数据经提供到请求者计算元件1002时,网络结构906可例如通过从存储器908清除用于写入请求的状态数据来关闭写入请求。
各种实例利用多个通信请求,以最小化在任何给定时间在各种网络结构处的开放通信请求的数量。图11为展示环境1100的一个实例的图式,所述环境可实施于CNM系统(例如图1的CNM系统102)中,以实施通信技术,所述通信技术包含请求者硬件计算元件1102与响应者硬件计算元件1104之间的多个请求事务。图11所示出的示例性事务利用写入请求和对应的总线,例如本文中关于图10所描述的写入请求和总线。
在图11的实例中,请求者计算元件1102包括各种信道,包含写入地址信道1106、写入数据信道1108和写入确认信道1112。类似地,响应者计算元件1104包括写入地址信道1114、写入数据信道1116和确认信道1120。信道1106、1108、1112、1114、1116可为数据路径,其包含例如经布置以横跨由网络结构提供的一或多个总线发射数据的导线、总线、寄存器和/或其它类似硬件,如本文中所描述。硬件计算元件1102、1104还包含相应的复杂请求处置器1122、1126。复杂请求处置器1122、1126可为相应计算元件1102、1104处的专用硬件,例如寄存器、微控制器、存储器等等。在一实例中,复杂请求处置器1122、1126可以是或包含由相应计算元件1102、1104的处理器、微控制器和/或其它组件执行以处置如本文中所描述的多个请求事务的软件。
请求者计算元件1102可发起对响应者计算元件1104的请求以执行处理任务。处理任务可以是待由响应者计算元件1104执行和/或管理的任何合适的处理任务。在一些实例中,处理任务为写入。举例来说,请求者计算元件1102可提供待写入到CNM系统处的存储器的数据。响应者计算元件1104可为例如存储器控制器、硬件平衡器元件,或用于写入数据的其它合适的计算元件。在各种实例中,处理任务可以不是写入请求。举例来说,处理任务可包含数据操纵,例如变换计算、神经网络或AI中的操作、金融分析中的操作、模拟等等。举例来说,当请求者计算元件1102确定其并不最适合于执行处理任务和/或确定另一硬件计算元件可更适合于执行处理任务时,请求者计算元件1102可发送指示处理任务的写入请求。举例来说,处理任务可涉及对存储于存储器处的数据进行操作,所述存储器远离请求者计算元件1102和/或可能更接近于另一硬件计算元件。
请求者计算元件1102可通过经由网络结构发起对响应者计算元件1104的第一写入请求而请求执行处理任务。复杂请求处置器1122可在写入地址信道处提供请求地址数据1130和源标识符数据1134,且在写入信道1108处提供请求数据1138。请求地址数据1130可指示响应者计算元件1104的地址或其它标识符。源标识符数据1134可描述请求者计算元件1102。源标识符数据1134可由响应者计算元件1104使用,以在完成处理任务后引导第二写入请求,如本文中所描述。请求数据1138可描述待执行的处理任务,且在一些实例中,可包含用于执行处理任务的数据。举例来说,当处理任务为写入请求时,请求数据1138可指示写入请求,且可包含待写入的数据。在一实例中,请求数据可描述处理任务,且包含对用于处理任务中的数据的引用,所述数据存储在CNM系统中的另一位置处。
复杂请求处置器1122可将请求地址数据1130和源标识符数据1134加载到写入地址信道1106的相应子信道1128、1132。子信道1128可以是用于接收请求地址的子信道。子信道1132可以是由用于例如用户定义的数据的其它数据的相关协议(例如AXI)使用的子信道。在一实例中,子信道1128对应于AWADDR信道,且子信道1132对应于来自AXI协议的AWUSER信道。在一实例中,请求数据1138经加载到写入数据(WDATA)子信道1136。
网络结构(未在图11中展示)可在请求者计算元件1102与响应者计算元件1104之间提供写入地址总线(WABUS)和写入数据总线(W总线)。请求者可经由写入地址总线WA BUS将请求地址数据1130和源标识符数据1134提供到响应者计算元件1104。
响应者计算元件1104处的复杂请求处置器1126接收请求地址数据1130、源标识符数据1134和请求数据1138。在执行或作用于由请求数据1138指示的处理任务之前,响应者计算元件1104(例如,其回流电路1118)可将确认数据加载到确认信道1120。网络结构可提供写入确认总线(C BUS),响应者计算元件1104通过所述写入确认总线将确认数据提供到请求者计算元件1102。在提供写入确认总线C BUS并确定确认数据已经发送后,网络结构可关闭由请求者计算元件1102发起的第一写入请求。请求者计算元件1102可包括返回信道1110,其经由写入确认总线C BUS接收确认数据。
复杂请求处置器1126可促进执行处理任务。举例来说,取决于处理任务的性质,响应者计算元件1104可执行处理任务和/或将其发送到另一硬件计算元件。举例来说,响应者计算元件1104可以是硬件平衡器元件,如本文中所描述,且可将处理任务发送到另一计算元件。
复杂请求处置器1126可确定何时完成经请求处理任务。这可例如当响应者计算元件1104完成处理任务时和/或当响应者计算元件1104从另一硬件计算元件接收指示处理任务已经完成的消息时进行。
在完成处理任务后,复杂请求处置器1126可发起针对请求者计算元件1102的第二写入请求。复杂请求处置器1126可将响应地址数据1140加载到写入地址信道1114,例如,AWADDR子信道1141。响应地址数据1140可指示标识请求者计算元件1102的地址或其它数据。响应地址数据可为和/或可基于由请求者计算元件1102提供的源标识符数据1134。复杂请求处置器1126还可将响应数据1144写入到写入信道1116(例如,写入数据WDATA子信道1142)。响应数据1144可指示已经完成经请求处理任务。网络结构可提供:写入地址总线WABUS,其将响应地址数据提供到请求者计算元件1102;及写入总线W BUS,其将响应数据1144提供到请求者计算元件1102。在接收第二写入请求(例如,响应地址数据1140和/或响应数据1144)后,请求者计算元件1102可将确认数据提供到响应者计算元件1104。举例来说,复杂请求处置器1122可将确认数据加载到确认信道1112,其中所述确认数据可经由网络结构在请求者计算元件1102与响应者计算元件1104之间提供的写入确认总线C BUS来传送。
尽管图11的复杂请求处置器1122经展示为单一组件,但一些实例可拆分此组件的逻辑。举例来说,复杂请求处置器1122的请求处置器组件可将数据加载到相应信道1106、1108。复杂请求处置器1122的响应处置器组件可接收包含响应地址数据1140和响应数据1144的写入请求,且经由确认总线提供确认数据。在一些实例中,复杂请求处置器1126可类似地分解成构成功能组件。
图12为展示过程流程1200的一个实例的流程图,所述过程流程可例如在图11的环境1100中执行以实施多个请求事务。过程流程1200包含三个列1201、1203、1205。列1201包括由第一硬件计算元件执行的操作,所述第一硬件计算元件可以是类似于图11的请求者计算元件1102的请求者计算元件。列1203包含由网络结构执行的操作。列1205包含由第二硬件计算元件执行的操作,所述第二硬件计算元件可以是类似于图11的响应者计算元件1104的响应者计算元件。
在操作1202处,第一计算元件经由网络结构将第一写入请求发送到第二计算元件。发送第一写入请求可包括经由网络结构提供的写入地址总线1218将地址数据1230和源标识符数据1232发送到第二计算元件。地址数据1230可指示第二计算元件的地址或其它标识符。源标识符数据1232可指示第一计算元件的地址或其它标识符。在一些实例中,地址数据和源ID数据可经由写入地址总线1218的不同子信道来提供,如本文中所描述。发送第一写入请求还可包括发送有效载荷数据1234。有效载荷数据1234可描述待由第二计算元件执行和/或管理的处理任务。有效载荷数据1234可经由网络结构提供的写入数据总线1220经提供到第二计算元件。
在操作1204处,第二计算元件接收第一写入请求。在操作1206处,第二计算元件经由网络结构提供的写入确认总线1222将写入确认数据1236发送到第一计算元件。可在完成经请求处理任务之前提供写入确认数据1236。响应于写入确认数据1236,网络结构可例如通过删除描述第一写入请求的状态数据且进而释放网络结构处的资源以供其它请求使用来关闭第一写入请求。在操作1240处,第一计算元件可接收写入确认数据1236。
在操作1208处,第二计算元件可执行和/或管理经请求处理任务的执行。在一些实例中,第二计算元件可执行经请求处理任务。在另一实例中,第二计算元件可请求另一硬件计算元件执行处理任务。举例来说,类似于第一计算元件在操作1202处发送第一写入请求,第二计算元件可将写入请求发送到另一硬件计算元件。例如在第二计算元件已完成处理任务之后和/或当第二计算元件已接收指示另一计算元件或多个计算元件已经完成处理任务的消息时,第二计算元件可确定处理任务完成。
在操作1210处,在完成处理任务后,第二计算元件将第二写入请求发送到第一计算元件。第二写入请求可包括描述第一计算元件的地址或其它标识符的地址数据1238。举例来说,地址数据1238可为和/或源自与第一写入请求一起提供的源标识符数据1232。地址数据1238可经由网络结构提供的写入地址总线1224提供到第一计算元件。第二写入请求还可包括有效载荷数据1240,其经由网络结构提供的写入数据总线1226经提供到第一计算元件。有效载荷数据1240可包括处理任务完成的指示。
第一计算元件可在操作处1212接收第二写入请求,且可在操作1214处,将第二写入确认数据1242发送到第二计算元件。在操作1216处,第二计算元件接收第二写入请求。第二写入确认数据1242可经由网络结构提供的写入确认总线1228经提供到第二计算元件。响应于第二写入确认数据1242,网络数据结构可例如通过清除用于第二写入请求的状态数据来关闭第二写入请求。
图13为展示环境1300的一个实例的图式,所述环境可实施于CNM系统(例如图1的CNM系统102)中以实施如本文中所描述的通信技术。环境1300包含网络结构1302、硬件平衡器元件1304,及各种硬件处理元件1306、1308、1310。网络结构1302可以是硬件组件,或连接硬件计算元件(例如硬件计算元件1304、1306、1308、1310)的组件的组合。参考图1的实例,缩放网状架构106、第一交换机110和NOC 118可构成例如网络结构1302的网络结构的全部或部分。
计算元件1306、1308、1310可以是或包含执行和/或请求处理任务的任何合适的硬件元件。使用图1到8的实例,硬件计算元件1306、1308、1310可以是或包含例如HTP 140的组件、HTF 142的元件、存储器控制器130等等。平衡器元件1304为将消息和/或处理任务引导到不同计算元件的硬件计算元件。再次参考图1的实例,HID 120可充当来自HTP 140、HTF142、存储器控制器130和/或存储器装置112的其它组件处的计算元件的请求的平衡器元件。并且,例如,主机系统108可充当各种存储器装置112处的计算元件的平衡器元件。
在图13的实例中,计算元件1306经由网络结构1302将请求消息1312引导到平衡器元件1304。举例来说,网络结构1302可在硬件计算元件1306与硬件平衡器元件1304之间选择性地提供一或多个总线,如本文中所描述。请求消息1312可以是写入请求消息。网络结构1302可存储描述请求消息1312的状态数据。请求消息1312包含描述处理任务的有效载荷数据,所述处理任务将由不同于计算元件1306的计算元件执行。计算元件1306可例如在确定另一计算元件可更适于执行处理任务之后请求处理任务。在一实例中,处理任务可涉及使用存储于存储器处的数据,所述存储器不靠近计算元件1306。在另一实例中,处理任务可由不同计算元件更有效地执行。在一些实例中,请求消息还包含描述硬件计算元件1306的源标识符数据。
请求消息1312可根据任何合适的通信协议来布置。在一些实例中,平衡器元件1304和计算元件1306、1308、1310可根据AXI格式、CXL格式和/或另一合适的格式进行通信。在一实例中,请求消息1312经布置为AXI请求消息和/或CXL请求消息。
在接收请求消息后,平衡器元件1304可将确认数据1314引导回到请求者计算元件1306。确认数据1314可在平衡器元件1304已接收到请求消息1312的有效载荷已经递送到其最终接收器方和/或处理任务是否已经被执行的指示之前被发送。在一些实例中,确认数据1314的发送可促使网络结构1302例如通过清除网络结构1302处的与请求消息1312相关的状态数据来清除或关闭请求消息1312。
平衡器元件1304还可引导新的请求消息1320或1322,以请求执行由请求消息1312指示的处理任务。在一实例中,平衡器元件1304确定处理任务应由本地计算元件1306、1308、1310中的一个执行,所述本地计算元件靠近CMN系统处的平衡器元件1304。举例来说,如果图1的HID 120为平衡器元件1304且请求消息1312是从存储器装置112处的HTP 140或HTF 142的组件接收,那么HID 120可确定经请求处理任务将由存储器装置112处的HTP 140或HTF 142的不同组件执行。
当平衡器元件1304选择本地计算元件1306、1308、1310以执行经请求处理任务时,其可将请求消息1320引导到选定计算元件,其中选定计算元件为最终的响应者计算元件。在图13的实例中,平衡器元件1304选择计算元件1310,且请求消息1320经引导到计算元件1310。在一实例中,请求消息1320描述硬件计算元件1306经由请求消息1312描述的处理任务,且可请求计算元件1310执行处理任务。在一些实例中,请求消息1320还包含指示硬件平衡器元件1304的源标识符数据。
计算元件1310可通过将确认数据1324发送到平衡器元件1304来记入请求消息1320。确认数据1324可指示接收了请求消息1320。在一些实例中,确认数据1324可指示计算元件1310已接受(且将执行)处理任务。在一些实例中,计算元件1310将在发送确认数据1324之前执行处理任务。在其它实例中,硬件计算元件1310将在执行处理任务之前发送确认数据1324。在完成处理任务后,硬件计算元件1310可将额外请求消息(图中未示)发送到硬件平衡器元件1304,以指示完成处理任务。
在处理确认数据后,网络结构1302可清除关于请求消息1320的状态数据。在接收到处理任务完成的指示后,平衡器元件1304可将请求消息1316发送到请求计算元件1306。请求消息1316可传送指示处理任务状态的有效载荷数据。举例来说,请求消息1316可指示处理任务已经成功地分配到响应者计算元件1310和/或完成。以此方式,请求消息1316可向请求者计算元件1306提供信用信息,其指示原始请求消息1312已经递送到其目的地和/或经请求处理任务已经完成。以此方式,计算元件1306可接收其原始请求消息1312的“端到端”信用,而无需在网络结构1302处使请求消息1312保持开放。在接收请求消息1316后,请求计算元件可发送确认数据1318,其可促使网络结构1302关闭针对请求消息1316存储的状态数据。
在另一实例中,平衡器元件1304可确定由请求消息1312描述的处理任务将由CNM的不同部分处(例如,不同存储器装置处、不同节点处等)的计算元件执行。在此实例中,平衡器元件1304可将请求消息1322引导到CNM系统的不同部分处的另一平衡器元件。举例来说,如果平衡器元件1304为存储器装置112处的HID 120,那么其可将请求消息1320发送到不同存储器装置处的另一HID 120、不同节点104的主机系统108等等。接收请求消息1322的元件可将请求消息(图中未示)引导到响应者计算元件和/或另一中间平衡器元件。这可继续,直到描述经请求处理任务的请求消息经提供到响应者计算元件为止。在接受和/或完成处理任务后,响应者计算元件可发送指示完成的请求消息。平衡器元件1304可接收请求消息1328,其指示接收计算元件已完成经请求处理任务。请求消息1328可直接从响应者计算元件和/或中间平衡器元件接收。在接收到指示处理任务的完成的请求消息1328后,平衡器元件1304可发起如本文中所描述的请求消息1316和确认数据1318对。
在图13的实例中,由平衡器元件1304发送的请求消息1320和/或请求消息1322可在响应者计算元件(例如,计算元件1310或另一计算机元件)通过接受处理任务和/或完成处理任务而记入原始消息之前被发送。举例来说,请求消息1320和/或请求消息1322可在平衡器元件1304接收确认数据1324和/或指示经请求处理任务的完成的请求消息1328之前被发送。
在图13的示例性布置中,由网络结构1302存储的状态数据可在接收到确认数据1314、1318、1324后关闭。这可释放网络结构1302的资源,以在对处理任务的原始请求待决时接收和/或处理其它消息。并且,在一些实例中,可针对横跨另一网络结构或多个网络结构(未在图13中展示)的请求消息1322、1328使用类似的技术。举例来说,接收请求消息1322的平衡器元件可将确认数据(图中未示)引导到平衡器元件1304,进而释放平衡器元件1304与接收请求消息1322的平衡器元件之间的一或多个网络结构,以处置其它消息。类似地,平衡器元件可引导确认数据(图中未示)以关闭请求消息1328。以此方式,原始请求者计算元件1306可接收指示经分配处理任务的接收和/或完成的端到端信用,而无需在网络结构1302处使原始请求消息1312保持开放。
图14为展示请求者计算元件1406、平衡器元件1404与响应者计算元件1408之间的一组示例性通信的图式1400。请求者计算元件1406可以是请求执行例如处理任务的计算元件,如本文中所描述。平衡器元件1404可以是平衡器元件,如本文中所描述,所述平衡器元件例如经由共同网络结构与请求者计算元件1406和响应者计算元件1408通信。
请求者计算元件1406将请求消息1410引导到平衡器元件1404。请求消息1410可描述待由另一计算元件(例如,不是请求者计算元件1406)执行的处理任务。平衡器元件1404将包含确认数据的回复消息1412引导到请求者计算元件1406。确认数据可促使传送消息1410、1412的网络结构例如通过关闭与请求消息1410相关联的状态数据来清除请求消息1410,从而释放网络结构以处置额外请求消息。
平衡器元件1404可选择计算元件以执行由请求消息1410指示的处理任务。在此实例中,平衡器元件1404选择响应者计算元件1408。响应者计算元件1408可以是计算元件和/或另一平衡器元件,其经由与请求者计算元件1406相同的网络结构和/或通过不同网络结构与平衡器元件1404通信。平衡器元件1404将请求消息1414引导到响应者计算元件1408。响应于请求消息1414,响应者计算元件1408可将确认数据1416发送到平衡器元件1404。这可促使处置请求消息1414的网络结构清除请求消息1414。
在一实例中,平衡器元件1404将请求消息1418引导到请求者计算元件1406。请求消息1418可指示请求消息1410已经传递到响应者计算元件1408(例如,经由请求消息1414)。请求者计算元件1406可运用确认数据1420响应于请求消息1418,这可促使网络结构清除请求消息1418。
在接受和/或执行处理任务后,响应者计算元件1408可将请求消息1422发送到平衡器元件1404。请求消息1422可包括指示处理任务已经由响应者计算元件1408接受和/或完成的数据。平衡器元件1404可通过将确认数据1424发送到响应者计算元件1408来响应于请求消息1422。这可促使处置请求消息1422的网络结构关闭用于请求消息1422的状态数据。
平衡器元件1404还可将请求消息1426发送到请求者计算元件1406。请求消息1426可向请求者计算元件1406指示接受和/或完成了处理任务。请求者计算元件1406可将确认数据1428发送到平衡器元件1404。传送请求消息1426的网络结构可关闭响应于请求消息1426而存储的状态数据。以此方式,请求者计算元件1406可接收指示请求消息1410已经由终端接收者(例如,响应者计算元件1408)接收且接受的端到端信用,而无需在网络结构处使请求消息1410保持开放,直到接收信用为止。
图15为展示过程流程1500的一个实例的流程图,所述过程流程可在CNM系统中,例如在请求者计算元件与平衡器元件之间,执行。过程流程1500包含两个列1501、1503。列1501包含由请求者计算元件(例如,图14的请求者计算元件1406或图13的计算元件1306)执行的操作。列1503包含由平衡器元件(例如图13的平衡器元件1304或图14的平衡器元件1404)执行的操作。
在操作1502处,请求者计算元件将请求消息1514发送到平衡器元件,且接收可包含确认数据的回复消息1516。在操作1504处,平衡器元件接收请求消息1514,且发送回复消息1516。请求消息1514可描述待由计算元件(例如,不同于请求者计算元件的计算元件)执行的处理任务。在接收请求消息1514后,平衡器元件发送例如回复消息1516,以促使处置消息1514、1516的网络结构清除请求消息1514,进而释放用于其它请求的网络结构资源。
在操作1506处,平衡器元件执行与下一元件的请求/确认数据交换。请求/确认数据交换可包含平衡器元件将请求消息1518发送到下一元件及从下一元件接收回复消息1520。回复消息1520可包含确认数据。请求消息1518可描述处理任务。请求消息1518和回复消息1520可经由处置消息1514、1516的相同网络结构和/或通过不同网络结构来发送。通过下一元件发送回复消息1520可促使处置消息1518、1520的网络结构例如通过清除用于请求消息1518的状态数据来清除请求消息1518。
在一些实例中,例如,下一元件为用以执行处理任务的计算元件,如图13和14中所描述。举例来说,平衡器元件可选择计算元件以执行处理任务。并且,在一些实例中,下一元件为另一平衡器元件。另一平衡器元件可将请求消息(图中未示)引导到计算元件或又一平衡器元件,如本文中所描述。
在操作1508处,平衡器元件执行与下一元件的另一请求/确认数据交换。请求消息1522可从下一元件接收,且可记入由请求者计算元件发送的原始请求消息1514。举例来说,请求消息1522可指示响应者计算元件已经接受和/或完成处理任务。平衡器元件将回复消息1524发送到下一元件,以促使处置消息1522、1524的网络结构清除请求消息1522,进而释放网络结构资源以处置其它消息。
在操作1510处,平衡器元件执行与请求者计算元件的请求/确认数据交换。在操作1512处,由请求者计算元件接收的请求消息1526指示处理任务完成。在操作1512处,请求者计算元件将回复消息1528发送到平衡器元件,例如促使处置消息1526、1528的网络结构清除请求消息1526。
图16为展示CNM环境1600的一个实例的图式,其示出在CNM的多个位置处的请求和确认数据交换。CNM环境1600包含计算元件1606、1608、1610,其经由网络结构1602与平衡器元件1604通信。举例来说,计算元件1606、1608、1610可以是或包含图1的HTP 140或HTF 142的组件,网络结构1602可以是或包含图1的NOC 118,且平衡器元件1604可以是或包含图1的HID 120。图16还展示平衡器元件1630,其经由网络结构1632与平衡器元件1604通信。举例来说,平衡器元件1630可以是或包含图1的交换机110。平衡器元件1630还可经由网络结构1632与平衡器元件1640、1642通信。平衡器元件1640、1642可经由相应网络结构1644、1646与计算元件1648、1650、1652、1654、1656、1658的相应集合通信。在一些实例中,平衡器元件1640、1642可以是或包含节点104处的其它存储器装置处的HID组件,网络结构1644、1646可以是节点104处的其它存储器装置处的NOC,且计算元件1648、1650、1652、1654、1656、1658可以是节点104处的其它存储器装置处的HTP或HTF元件。
在图16的实例中,计算元件1606为请求者计算元件,且经由网络结构1602将请求消息1612发送到平衡器元件1604。请求消息1612可包含待在另一计算元件处执行的处理任务的描述。平衡器元件1604接收请求消息1612且将确认数据1614发送到计算元件1606。确认数据1614的发送可促使网络结构1602例如通过关闭关于请求消息1612的状态数据来清除请求消息1612。
在此实例中,平衡器元件1604确定处理任务将由CNM环境1600中的不同位置处的计算元件执行(例如,而非由其它计算元件1608、1610中的一个执行,所述计算元件1608、1610经由网络结构1602与平衡器元件1604通信)。因此,平衡器元件1604经由网络结构1632将请求消息1622发送到平衡器元件1630。请求消息1622可描述处理任务。平衡器元件1630可将确认数据1621发送到平衡器元件1604。确认数据1621可促使网络结构1632清除请求消息1622,进而释放网络结构1632处的资源以处置额外消息。
平衡器元件1630可选择平衡器元件1642以确定执行处理任务的计算元件。平衡器元件1642经由网络结构1632将请求消息1660发送到平衡器元件1642。请求消息1662可描述处理任务。平衡器元件1642可将确认数据1660发送到平衡器元件1630。确认数据1660可促使网络结构1632清除请求消息1662,进而释放网络结构1632处的资源以处置额外消息。
平衡器元件1642可选择计算元件以执行处理任务。在此实例中,平衡器元件1642选择计算元件1656,其可被称为接收器或响应者计算元件。平衡器元件1642经由网络结构1646将请求消息1666发送到计算元件1656。请求消息1666描述处理任务。计算元件1656可执行处理任务。在接受和/或完成处理任务后,计算元件1656经由网络结构1646将确认数据1664发送到平衡器元件1642。确认数据1664可指示已经接受和/或完成处理任务,因此记入原始请求消息1612。平衡器元件1642可经由网络结构1632将请求消息1674发送到平衡器元件1630。请求消息1674可指示接受和/或完成了处理任务。平衡器元件1630可将确认数据1672发送到平衡器元件1642。确认数据1672可促使网络结构1632清除请求消息1674,进而释放网络结构1632处的资源以处置额外消息。
平衡器元件1630可将请求消息1676发送到平衡器元件1604。请求消息1676可指示接受和/或完成了处理任务。平衡器元件1604可将确认数据1678发送到平衡器元件1630。确认数据1678可促使网络结构1632清除请求消息1676,进而释放网络结构1632处的资源以处置额外消息。
平衡器元件1604可将请求消息1616发送到请求者计算元件1606。请求消息1616可指示接受和/或完成了处理任务,进而记入原始请求消息1612。请求者计算元件1606可将确认数据1618发送到平衡器元件1604。确认数据1618可促使网络结构1632清除请求消息1616,进而释放网络结构1602处的资源以处置额外消息。
图17示出示例性机器1700的框图,可利用所述机器、在所述机器中或通过所述机器实施本文中论述的任何一或多种技术(例如,方法)。如本文中所描述,实例可包含机器1700中的逻辑或数个组件或机构,或可由其操作。电路系统(例如,处理电路系统)是在机器1700的有形实体中实施的电路集合,其包含硬件(例如,简单电路、门、逻辑等)。电路系统成员资格可随时间推移为灵活的。电路系统包含在操作时可单独或组合地执行特定任务的部件。在实例中,可以不可改变的方式设计电路系统的硬件以进行特定操作(例如,硬连线)。在实例中,电路系统的硬件可包含可变地连接的物理组件(例如,执行单元、晶体管、简单电路等),所述物理组件包含以物理方式修改(例如,不变集中式粒子的磁性、电气可移动放置等)以编码特定操作的指令的机器可读媒体。在连接物理组件时,改变硬件组成部分的根本电性质,例如从绝缘体变为导体,或反之亦然。指令使得嵌入式硬件(例如,执行单元或加载机构)能够经由可变连接以硬件创建电路系统的部件以在处于操作中时实行特定操作的部分。因此,在实例中,机器可读媒体元件是电路系统的一部分或在装置操作时以通信方式耦合到电路系统的其它组件。在实例中,物理组件中的任一个可以用于多于一个电路系统的多于一个部件中。举例来说,在操作下,执行单元可在一个时间点用于第一电路系统的第一电路中,且由第一电路系统中的第二电路重新使用,或在不同时间由第二电路系统中的第三电路重新使用。关于机器1700的这些组件的额外实例。
在替代实施例中,机器1700可作为独立装置操作或可连接(例如,联网)到其它机器。在联网部署中,机器1700可在服务器-客户端网络环境中以服务器机器、客户端机器或这两者的能力操作。在实例中,机器1700可以充当对等(P2P)(或其它分布式)网络环境中的对等机器。机器1700可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、移动电话、网络器具、网络路由器、交换机或桥接器,或能够执行(循序或以其它方式)指定待由所述机器采取的动作的指令的任何机器。此外,虽然仅示出单个机器,但术语“机器”还应被视为包含单独或联合执行一组(或多组)指令以执行本文论述的方法中的任一或多种的任何机器集合,例如云计算、软件即服务(SaaS)、其它计算机集群配置。
机器1700(例如,计算机系统)可包含硬件处理器1702(例如,中央处理单元(CPU)、图形处理单元(GPU)、硬件处理器核心或其任何组合)、主存储器1704、静态存储器1706(例如,固件、微码的存储器或存储装置、基本输入输出(BIOS)、统一可扩展固件接口(UEFI)等),以及大容量存储装置1708(例如,硬盘驱动器、磁带机、快闪存储装置或其它块装置),其中的一些或全部可经由互联件1730(例如,总线)彼此通信。机器1700可进一步包含显示装置1710、字母数字输入装置1712(例如,键盘)和用户接口(UI)导航装置1714(例如,鼠标)。在实例中,显示装置1710、输入装置1712和UI导航装置1714可为触摸屏显示器。机器1700可另外包含大容量存储装置1708(例如,驱动单元)、信号产生装置1718(例如,扬声器)、网络接口装置1720和一或多个传感器1716,例如全球定位系统(GPS)传感器、指南针、加速计或其它传感器。机器1700可包含输出控制器1728,例如串行(例如,通用串行总线(USB)、并行或其它有线或无线(例如,红外(IR)、近场通信(NFC)等)连接,以与一或多个外围装置(例如,打印机、读卡器等)通信或控制所述一或多个外围装置。
硬件处理器1702、主存储器1704、静态存储器1706或大容量存储装置1708的寄存器可为或包含机器可读媒体1722,所述机器可读媒体1722上存储体现或由本文中所描述的技术或功能中的任何一或多个使用的数据结构或指令1724(例如,软件)的一或多个集合。指令1724在由机器1700执行期间还可完全地或至少部分地驻留在硬件处理器1702、主存储器1704、静态存储器1706或大容量存储装置1708的寄存器中的任一个内。在一实例中,硬件处理器1702、主存储器1704、静态存储器1706或大容量存储装置1708中的一个或任何组合可构成机器可读媒体1722。虽然机器可读媒体1722经示出为单个媒体,但术语“机器可读媒体”可包含配置成存储一或多个指令1724的单个媒体或多个媒体(例如,集中式或分布式数据库,或相关联高速缓存和服务器)。
术语“机器可读媒体”可包含能够存储、编码或承载供机器1700执行且使机器1700执行本公开的技术中的任何一或多个的指令的任何媒体,或能够存储、编码或承载由此类指令使用或与此类指令相关联的数据结构的任何媒体。非限制性机器可读媒体实例可包含固态存储器、光学媒体、磁性媒体和信号(例如,射频信号、其它基于光子的信号、声音信号等)。在一实例中,非暂时性机器可读媒体包括具有一组多个具有不变(例如,静止)质量的粒子的机器可读媒体,且因此是物质的组合物。因此,非暂时性机器可读媒体是不包含暂时性传播信号的机器可读媒体。非暂时性机器可读媒体的特定实例可包含:非易失性存储器,例如半导体存储器装置(例如,电可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM))和快闪存储器装置;磁盘,例如内部硬盘和可移式盘;磁光盘;以及CD-ROM和DVD-ROM盘。
在实例中,存储或以其它方式提供在机器可读媒体1722上的信息可表示指令1724,例如指令1724本身或可从其导出指令1724的格式。可从其导出指令1724的此格式可包含源代码、已编码指令(例如,呈压缩或加密形式)、已封装指令(例如,拆分成多个封装)等。表示机器可读媒体1722中的指令1724的信息可由处理电路系统处理成指令以实施本文中所论述的操作中的任一个。举例来说,从信息(例如,由处理电路系统处理)导出指令1724可包含:编译(例如,从源代码、目标代码等)、解译、加载、组织(例如,动态地或静态地链接)、编码、解码、加密、解密、封装、解封装或以其它方式将信息操纵到指令1724中。
在实例中,指令1724的导出可包含对信息的汇编、编译或解译(例如,通过处理电路系统)以从由机器可读媒体1722提供的一些中间或预处理格式产生指令1724。当在多个部分中提供信息时,可组合、解封装和修改所述信息以创建指令1724。举例来说,信息可在一个或数个远程服务器上的多个压缩源代码封装(或目标代码,或二进制可执行代码等)中。源代码封装可在经由网络传输时被加密,且在必要时被解密、解压缩、汇编(例如,链接),且在本地机器处被编译或解译(例如,到可独立执行的库中等),且由本地机器执行。
指令1724可以进一步利用多个传送协议中的任一个(例如,帧中继、因特网协议(IP)、发射控制协议(TCP)、用户数据报协议(UDP)、超文本传送协议(HTTP)等)经由网络接口装置1720使用发射媒体在通信网络1726上发射或接收。示例性通信网络可包含局域网(LAN)、广域网(WAN)、分组数据网络(例如,因特网)、移动电话网络(例如,蜂窝式网络)、普通老式电话(POTS)网络和无线数据网络(例如,被称为Wi-的电气电子工程师学会(IEEE)802.11标准系列、被称为/>的IEEE 802.16标准系列)、IEEE 802.15.4标准系列、对等(P2P)网络等等。在实例中,网络接口装置1720可包含一或多个物理插口(例如,以太网、同轴或电话插口)或一或多个天线以连接到网络1726。在实例中,网络接口装置1720可包含一组多个天线以使用单输入多输出(SIMO)、多输入多输出(MIMO)或多输入单输出(MISO)技术中的至少一个无线地通信。术语“发射媒体”应被视为包含能够存储、编码或承载指令以由机器1700执行的任何无形媒体,且包含数字或模拟通信信号或用以促进此软件的通信的其它无形媒体。发射媒体是机器可读媒体。
为了更好地说明本文中所描述的方法和设备,一组非限制性示例性实施例在下文阐述为带编号的实例。
实例1为一种设备,其包括:第一硬件计算元件,所述第一硬件计算元件经编程以执行包括将第一请求消息发送到硬件平衡器元件的操作,所述第一请求消息描述处理任务;及所述硬件平衡器元件,其经编程以执行包括以下各项的操作:朝向用于执行处理任务的第二硬件计算元件发送第二请求消息,所述第二请求消息也描述处理任务;将第一回复消息发送到第一计算元件,所述第一回复消息回复第一请求消息;在发送第一回复消息之后,接收第一完成请求消息,所述第一完成请求消息指示处理任务已分配;及将第二完成请求消息发送到第一硬件计算元件,所述第二完成请求消息指示处理任务已分配。
在实例2中,实例1的主题任选地包含所述操作进一步包括通过硬件平衡器元件选择第二硬件计算元件。
在实例3中,实例2的主题任选地包含其中朝向第二硬件计算元件发送第二请求消息包括将第二请求消息引导到第二硬件计算元件。
在实例4中,实例1至3中任一或多项的主题任选地包含其中朝向第二硬件计算元件发送第二请求消息包括将第二请求消息发送到第二硬件平衡器元件,且其中第一完成请求消息是从第二硬件计算元件接收。
在实例5中,实例4的主题任选地包含所述操作进一步包括通过硬件平衡器元件将第一完成回复消息发送到第二硬件平衡器元件。
在实例6中,实例4至5中任一或多项的主题任选地包含其中第一请求消息的发送是经由第一网络结构,所述操作进一步包括:通过第二硬件平衡器元件将描述处理任务的第三请求消息发送到第二硬件计算元件,所述第三请求消息是经由不同于第一网络结构的第二网络结构发送;及通过第二硬件计算元件将指示处理任务已分配的第三回复消息发送到第二硬件平衡器元件。
在实例7中,实例6的主题任选地包含所述操作进一步包括:响应于第三请求消息的发送,通过第二网络结构存储描述第三请求消息的状态数据;及响应于第一回复消息的发送,清除描述第三请求消息的状态数据。
在实例8中,实例4至7中任一或多项的主题任选地包含所述操作进一步包括通过第二硬件平衡器元件选择第二硬件计算元件。
在实例9中,实例1至8中任一或多项的主题任选地包含其中第一请求消息的发送是经由第一网络结构,所述操作进一步包括:响应于第一请求消息的发送,通过第一网络结构存储描述第一请求消息的状态数据;及响应于第一回复消息的发送,通过第一网络结构清除描述第一请求消息的状态数据。
实例10为一种方法,其包括:通过第一硬件计算元件将第一请求消息发送到硬件平衡器元件,所述第一请求消息描述处理任务;通过硬件平衡器元件朝向用于执行处理任务的第二硬件计算元件发送第二请求消息,所述第二请求消息也描述处理任务;通过硬件平衡器元件将第一回复消息发送到第一计算元件,所述第一回复消息回复第一请求消息;在发送第一回复消息之后,通过硬件平衡器元件接收第一完成请求消息,所述第一完成请求消息指示处理任务已分配;及通过硬件平衡器元件将第二完成请求消息发送到第一硬件计算元件,所述第二完成请求消息指示处理任务已分配。
在实例11中,实例10的主题任选地包含所述方法进一步包括通过硬件平衡器元件选择第二硬件计算元件。
在实例12中,实例11的主题任选地包含其中朝向第二硬件计算元件发送第二请求消息包括将第二请求消息引导到第二硬件计算元件。
在实例13中,实例10至12中任一或多项的主题任选地包含其中朝向第二硬件计算元件发送第二请求消息包括将第二请求消息发送到第二硬件平衡器元件,且其中第一完成请求消息是从第二硬件计算元件接收。
在实例14中,实例13的主题任选地包含通过硬件平衡器元件将第一完成回复消息发送到第二硬件平衡器元件。
在实例15中,实例13至14中任一或多项的主题任选地包含其中第一请求消息的发送是经由第一网络结构,所述方法进一步包括:通过第二硬件平衡器元件将描述处理任务的第三请求消息发送到第二硬件计算元件,所述第三请求消息是经由不同于第一网络结构的第二网络结构发送;及通过第二硬件计算元件将指示处理任务已分配的第三回复消息发送到第二硬件平衡器元件。
在实例16中,实例15的主题任选地包含响应于第三请求消息的发送,通过第二网络结构存储描述第三请求消息的状态数据;及响应于第一回复消息的发送,清除描述第三请求消息的状态数据。
在实例17中,实例13至16中任一或多项的主题任选地包含通过第二硬件平衡器元件选择第二硬件计算元件。
在实例18中,实例10至17中任一或多项的主题任选地包含其中第一请求消息的发送是经由第一网络结构,所述方法进一步包括:响应于第一请求消息的发送,通过第一网络结构存储描述第一请求消息的状态数据;及响应于第一回复消息的发送,通过第一网络结构清除描述第一请求消息的状态数据。
实例19为至少一种计算机可读媒体,其在其上包括指令,所述指令当由至少一个硬件组件执行时使得硬件组件执行包括以下各项的操作:通过第一硬件计算元件将第一请求消息发送到硬件平衡器元件,所述第一请求消息描述处理任务;通过硬件平衡器元件朝向用于执行处理任务的第二硬件计算元件发送第二请求消息,所述第二请求消息也描述处理任务;通过硬件平衡器元件将第一回复消息发送到第一计算元件,所述第一回复消息回复第一请求消息;在发送第一回复消息之后,通过硬件平衡器元件接收第一完成请求消息,所述第一完成请求消息指示处理任务已分配;及通过硬件平衡器元件将第二完成请求消息发送到第一硬件计算元件,所述第二完成请求消息指示处理任务已分配。
在实例20中,实例19的主题任选地包含所述操作进一步包括通过硬件平衡器元件选择第二硬件计算元件。
以上详细描述包含对附图的参考,所述附图形成所述详细描述的一部分。图式借助于说明展示可实践本发明的特定实施例。这些实施例在本文中也称为“实例”。此类实例可包含除了所展示或所描述的那些元件之外的元件。然而,本发明人还预期其中仅提供所展示或所描述的那些元件的实例。此外,本发明人还预期使用相对于特定实例(或其一或多个方面)或相对于本文展示或描述的其它实例(或其一或多个方面)而展示或描述的那些元件的任何组合或排列的实例(或其一或多个方面)。
在本文件中,如专利文件中常见,使用术语“一”以包含一个或多于一个,这与“至少一个”或“一或多个”的任何其它例子或用途无关。在此文件中,除非另外指示,否则术语“或”用于指代非排他性的或,使得“A或B”可以包含“A而非B”、“B而非A”,以及“A和B”。在所附权利要求书中,术语“包含”和“其中(in which)”用作相应术语“包括”和“其中(wherein)”的通俗英语等效物。此外,在所附权利要求书中,术语“包含”和“包括”是开放的,也就是说,包含除了权利要求项中列在这种术语之后的那些要素之外的要素的系统、装置、物件或过程仍被认为处于所述权利要求项的范围内。此外,在以下权利要求书中,术语“第一”、“第二”和“第三”等仅用作标签,并且并不旨在对其对象施加数字要求。
以上描述意在为说明性的而非限制性的。举例来说,上文所描述的实例(或其一或多个方面)可以彼此组合使用。如所属领域的一般技术人员在查阅以上描述后可使用其它实施例。应理解,所述实施例将不用于解释或限制权利要求书的范围或含义。同样,在以上具体实施方式中,可以将各种特征分组在一起以简化本公开。此情况不应解释为期望未要求的公开特征对任何权利要求来说是必需的。实际上,本发明主题可在于比特定公开的实施例的所有特征要少。因此,特此将所附权利要求书并入到具体实施方式中,其中每一权利要求作为一单独实施例而独立存在,且经考虑此些实施例可以各种组合或排列彼此组合。本发明主题的范围应通过参考所附权利要求书以及此类权利要求书所赋予的等效物的完整范围来确定。
Claims (20)
1.一种设备,其包括:
第一硬件计算元件,所述第一硬件计算元件经编程以执行包括将第一请求消息发送到硬件平衡器元件的操作,所述第一请求消息描述处理任务;及
所述硬件平衡器元件,其经编程以执行包括以下各项的操作:
朝向用于执行所述处理任务的第二硬件计算元件发送第二请求消息,所述第二请求消息也描述所述处理任务;
将第一回复消息发送到所述第一计算元件,所述第一回复消息回复所述第一请求消息;
在发送所述第一回复消息之后,接收第一完成请求消息,所述第一完成请求消息指示所述处理任务已分配;及
将第二完成请求消息发送到所述第一硬件计算元件,所述第二完成请求消息指示所述处理任务已分配。
2.根据权利要求1所述的设备,所述操作进一步包括通过所述硬件平衡器元件选择所述第二硬件计算元件。
3.根据权利要求2所述的设备,其中朝向所述第二硬件计算元件发送所述第二请求消息包括将所述第二请求消息引导到所述第二硬件计算元件。
4.根据权利要求1所述的设备,其中朝向所述第二硬件计算元件发送所述第二请求消息包括将所述第二请求消息发送到第二硬件平衡器元件,且其中所述第一完成请求消息是从所述第二硬件计算元件接收。
5.根据权利要求4所述的设备,所述操作进一步包括通过所述硬件平衡器元件将第一完成回复消息发送到所述第二硬件平衡器元件。
6.根据权利要求4所述的设备,其中所述第一请求消息的所述发送是经由第一网络结构,所述操作进一步包括:
通过所述第二硬件平衡器元件将描述所述处理任务的第三请求消息发送到所述第二硬件计算元件,所述第三请求消息是经由不同于所述第一网络结构的第二网络结构来发送;及
通过所述第二硬件计算元件将指示所述处理任务已分配的第三回复消息发送到所述第二硬件平衡器元件。
7.根据权利要求6所述的设备,所述操作进一步包括:
响应于所述第三请求消息的所述发送,通过所述第二网络结构存储描述所述第三请求消息的状态数据;及
响应于所述第一回复消息的所述发送,清除描述所述第三请求消息的所述状态数据。
8.根据权利要求4所述的设备,所述操作进一步包括通过所述第二硬件平衡器元件选择所述第二硬件计算元件。
9.根据权利要求1所述的设备,其中所述第一请求消息的所述发送是经由第一网络结构,所述操作进一步包括:
响应于所述第一请求消息的所述发送,通过所述第一网络结构存储描述所述第一请求消息的状态数据;及
响应于所述第一回复消息的所述发送,通过所述第一网络结构清除描述所述第一请求消息的所述状态数据。
10.一种方法,其包括:
通过第一硬件计算元件将第一请求消息发送到硬件平衡器元件,所述第一请求消息描述处理任务;
通过所述硬件平衡器元件朝向用于执行所述处理任务的第二硬件计算元件发送第二请求消息,所述第二请求消息也描述所述处理任务;
通过所述硬件平衡器元件将第一回复消息发送到所述第一计算元件,所述第一回复消息回复所述第一请求消息;
在发送所述第一回复消息之后,通过所述硬件平衡器元件接收第一完成请求消息,所述第一完成请求消息指示所述处理任务已分配;及
通过所述硬件平衡器元件将第二完成请求消息发送到所述第一硬件计算元件,所述第二完成请求消息指示所述处理任务已分配。
11.根据权利要求10所述的方法,所述方法进一步包括通过所述硬件平衡器元件选择所述第二硬件计算元件。
12.根据权利要求11所述的方法,其中朝向所述第二硬件计算元件发送所述第二请求消息包括将所述第二请求消息引导到所述第二硬件计算元件。
13.根据权利要求10所述的方法,其中朝向所述第二硬件计算元件发送所述第二请求消息包括将所述第二请求消息发送到第二硬件平衡器元件,且其中所述第一完成请求消息是从所述第二硬件计算元件接收。
14.根据权利要求13所述的方法,其进一步包括通过所述硬件平衡器元件将第一完成回复消息发送到所述第二硬件平衡器元件。
15.根据权利要求13所述的方法,其中所述第一请求消息的所述发送是经由第一网络结构,所述方法进一步包括:
通过所述第二硬件平衡器元件将描述所述处理任务的第三请求消息发送到所述第二硬件计算元件,所述第三请求消息是经由不同于所述第一网络结构的第二网络结构来发送;及
通过所述第二硬件计算元件将指示所述处理任务已分配的第三回复消息发送到所述第二硬件平衡器元件。
16.根据权利要求15所述的方法,其进一步包括:
响应于所述第三请求消息的所述发送,通过所述第二网络结构存储描述所述第三请求消息的状态数据;及
响应于所述第一回复消息的所述发送,清除描述所述第三请求消息的所述状态数据。
17.根据权利要求13所述的方法,其进一步包括通过所述第二硬件平衡器元件选择所述第二硬件计算元件。
18.根据权利要求10所述的方法,其中所述第一请求消息的所述发送是经由第一网络结构,所述方法进一步包括:
响应于所述第一请求消息的所述发送,通过所述第一网络结构存储描述所述第一请求消息的状态数据;及
响应于所述第一回复消息的所述发送,通过所述第一网络结构清除描述所述第一请求消息的所述状态数据。
19.至少一种计算机可读媒体,其在其上包括指令,所述指令当由至少一个硬件组件执行时使得所述硬件组件执行包括以下各项的操作:
通过第一硬件计算元件将第一请求消息发送到硬件平衡器元件,所述第一请求消息描述处理任务;
通过所述硬件平衡器元件朝向用于执行所述处理任务的第二硬件计算元件发送第二请求消息,所述第二请求消息也描述所述处理任务;
通过所述硬件平衡器元件将第一回复消息发送到所述第一计算元件,所述第一回复消息回复所述第一请求消息;
在发送所述第一回复消息之后,通过所述硬件平衡器元件接收第一完成请求消息,所述第一完成请求消息指示所述处理任务已分配;及
通过所述硬件平衡器元件将第二完成请求消息发送到所述第一硬件计算元件,所述第二完成请求消息指示所述处理任务已分配。
20.根据权利要求19所述的媒体,所述操作进一步包括通过所述硬件平衡器元件选择所述第二硬件计算元件。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/813,763 US20240028390A1 (en) | 2022-07-20 | 2022-07-20 | Methods and systems for communications between hardware components |
US17/813,763 | 2022-07-20 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117435549A true CN117435549A (zh) | 2024-01-23 |
Family
ID=89548634
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310572377.3A Pending CN117435549A (zh) | 2022-07-20 | 2023-05-19 | 用于硬件组件之间的通信的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20240028390A1 (zh) |
CN (1) | CN117435549A (zh) |
-
2022
- 2022-07-20 US US17/813,763 patent/US20240028390A1/en active Pending
-
2023
- 2023-05-19 CN CN202310572377.3A patent/CN117435549A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20240028390A1 (en) | 2024-01-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11907718B2 (en) | Loop execution in a reconfigurable compute fabric using flow controllers for respective synchronous flows | |
US11809343B2 (en) | Transporting request types with different latencies | |
CN118043815A (zh) | 调试数据流计算机架构 | |
CN118043796A (zh) | 存储器计算系统中的基于片块的结果缓冲 | |
CN118076944A (zh) | 可重新配置计算组构中的循环执行期间的数据存储 | |
US20240086324A1 (en) | High bandwidth gather cache | |
US11675713B2 (en) | Avoiding deadlock with a fabric having multiple systems on chip | |
US11789642B2 (en) | Loading data from memory during dispatch | |
CN117795496A (zh) | 可重新配置计算组构中的并行矩阵运算 | |
US20220413804A1 (en) | Efficient complex multiply and accumulate | |
CN117546133A (zh) | 缓解具有多个存储器控制器的系统上的存储器热点 | |
CN118043792A (zh) | 提供事件消息的可靠接收的机制 | |
CN118119933A (zh) | 用于触发协作进程的提前终止的机制 | |
US20240028390A1 (en) | Methods and systems for communications between hardware components | |
US20240028206A1 (en) | Methods and systems for communications between hardware components | |
US20240028526A1 (en) | Methods and systems for requesting atomic operations in a computing system | |
US20240070112A1 (en) | Context load mechanism in a coarse-grained reconfigurable array processor | |
US20230055320A1 (en) | Loop execution in a reconfigurable compute fabric. | |
US20230051544A1 (en) | Efficient processing of nested loops for computing device with multiple configurable processing elements using multiple spoke counts | |
CN117632256A (zh) | 用于处置多元件处理器中的断点的装置及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |