CN118119933A - 用于触发协作进程的提前终止的机制 - Google Patents
用于触发协作进程的提前终止的机制 Download PDFInfo
- Publication number
- CN118119933A CN118119933A CN202280065734.0A CN202280065734A CN118119933A CN 118119933 A CN118119933 A CN 118119933A CN 202280065734 A CN202280065734 A CN 202280065734A CN 118119933 A CN118119933 A CN 118119933A
- Authority
- CN
- China
- Prior art keywords
- memory
- thread
- event
- threads
- chiplet
- 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 77
- 230000008569 process Effects 0.000 title abstract description 39
- 230000007246 mechanism Effects 0.000 title description 17
- 230000015654 memory Effects 0.000 claims abstract description 309
- 230000004044 response Effects 0.000 claims abstract description 12
- 238000012545 processing Methods 0.000 claims description 45
- 238000010845 search algorithm Methods 0.000 claims description 8
- 238000004891 communication Methods 0.000 description 44
- 239000000835 fiber Substances 0.000 description 21
- 238000003860 storage Methods 0.000 description 16
- 238000013461 design Methods 0.000 description 14
- 239000000872 buffer Substances 0.000 description 12
- 230000001360 synchronised effect Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 230000002093 peripheral effect Effects 0.000 description 9
- 238000012546 transfer Methods 0.000 description 8
- 230000008901 benefit Effects 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 239000000758 substrate Substances 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000007726 management method Methods 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 238000013519 translation Methods 0.000 description 5
- 230000003993 interaction Effects 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 238000007792 addition Methods 0.000 description 3
- 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
- 238000012423 maintenance Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 239000002245 particle Substances 0.000 description 3
- 238000005192 partition Methods 0.000 description 3
- 230000011664 signaling Effects 0.000 description 3
- 241001091551 Clio Species 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 2
- 230000000712 assembly Effects 0.000 description 2
- 238000000429 assembly Methods 0.000 description 2
- 238000006243 chemical reaction Methods 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
- 230000000153 supplemental effect Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 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
- 238000004458 analytical method Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 230000033228 biological regulation 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
- 238000004140 cleaning Methods 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 239000012530 fluid Substances 0.000 description 1
- 230000020169 heat generation Effects 0.000 description 1
- 230000006872 improvement 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
- 238000012544 monitoring process Methods 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
- 238000012552 review Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 235000013599 spices Nutrition 0.000 description 1
- 230000002618 waking effect Effects 0.000 description 1
- 239000002699 waste material Substances 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control instructions
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3888—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
Abstract
本文中描述用于触发处理器中的协作进程的提前终止的装置及技术。一种系统包含多个存储器计算节点,其中存储器计算节点包括:事件管理器电路系统,其经配置以建立用于接收事件消息的广播信道;及线程管理器电路系统,其经配置以组织多个线程以执行协作任务的部分,其中所述多个线程各自监测所述广播信道以在所述广播信道上接收事件消息,并且其中在实现阈值操作之后,所述线程管理器电路系统将使用所述事件管理器电路系统在所述广播信道上广播指示所述协作任务完成的事件消息,所述事件消息使其它线程响应于接收到所述事件消息而终止所述协作任务的其相应部分的执行。
Description
优先权申请
本申请要求2021年8月18日提交的美国申请序列号17/405,233的优先权益,所述美国申请以全文引用的方式并入本文中。
背景技术
例如冯诺伊曼(Von Neumann)架构的各种计算机架构常规地使用用于数据的共享存储器、用于存取共享存储器的总线、算术单元及程序控制单元。然而,在处理器与存储器之间移动数据可能需要大量时间及能量,这又可能约束计算机系统的性能及容量。鉴于这些限制,需要新计算架构及装置来推动计算性能超越晶体管缩放的实践(即,摩尔定律(Moore's Law))。
附图说明
为了容易地识别对任何特定元件或动作的论述,附图标记中的一或多个最高有效数字指代首次介绍所述元件的图号。
图1大体说明根据实施例的在存储器计算系统的上下文中的第一存储器计算装置的第一实例。
图2大体说明根据实施例的存储器计算装置的存储器子系统的实例。
图3大体说明根据实施例的用于存储器控制器的可编程原子单元的实例。
图4说明根据实施例的存储器计算装置的混合线程处理器(HTP)加速器的实例。
图5说明根据实施例的存储器计算装置的混合线程结构(HTF)的表示的实例。
图6A大体说明根据实施例的小芯片系统的实例。
图6B大体说明展示来自图6A的实例的小芯片系统中的各个组件的框图。
图7大体说明根据实施例的用于存储器计算装置的基于小芯片的实施方案的实例。
图8说明根据实施例的存储器计算装置小芯片的实例平铺。
图9是说明根据实施例的纤程创建指令的表。
图10是说明根据实施例的线程处理块的伪码列表。
图11是说明根据实施例的操作环境的框图。
图12是说明根据实施例的操作环境的框图。
图13是说明根据实施例的在线程完成后传递的事件消息的图式。
图14是根据实施例的用于线程执行控制的方法的实例的流程图。
图15说明实例机器的框图,可利用所述机器、在所述机器中或通过所述机器实施本文中所论述的任何一或多种技术(例如,方法)。
具体实施方式
可利用材料、装置及集成技术中的最新进展来提供以存储器为中心的计算拓扑。这类拓扑可实现例如用于受大小、重量或功率要求约束的应用的计算效率及工作负载吞吐量的进展。拓扑可用于促进存储器或其它数据存储元件附近或内部的低时延计算。方法可尤其非常适合于利用稀疏查找的各种计算密集操作,例如在变换计算(例如,快速傅立叶变换计算(FFT))中,或在例如神经网络或人工智能(AI)、财务分析或模拟或模型化的应用中,所述模拟或模型化例如用于计算流体动力学(CFD)、工程师用增强型声学模拟器(EASE)、以集成电路为重心的模拟程序(SPICE)等。
本文中所论述的系统、装置及方法可包含或使用具有处理器或处理能力的存储器计算系统,所述处理器或处理能力提供于存储器或数据存储组件中、附近或与存储器或数据存储组件集成。此类系统在本文中通常被称为近存储器计算(CNM)系统。CNM系统可为基于节点的系统,其中系统中的个别节点使用系统缩放结构来耦合。尤其在预期高速缓存未命中速率的环境中,每一节点可包含或使用专用或通用处理器以及用户可存取加速器(具有用以促进密集操作的自定义计算结构)。
在实例中,CNM系统中的每个节点可具有一或多个主机处理器。在每一节点内,专用混合线程处理器可占用片上网络的离散端点。混合线程处理器可对系统的特定节点中的存储器中的一些或全部进行存取,或混合线程处理器可经由系统缩放结构对跨多个节点的网络的存储器进行存取。每一节点处的自定义计算结构或混合线程结构可具有其自身的处理器或加速器,且可在比混合线程处理器更高的带宽下操作。近存储器计算系统中的不同节点可不同地配置,例如具有不同计算能力、不同类型的存储器、不同接口或其它差异。然而,节点可共同耦合以共享所定义地址空间内的数据及计算资源。
在实例中,近存储器计算系统或系统内的节点可经用户配置以用于自定义操作。用户可使用高级编程语言(例如C/C++)来提供指令,所述高级编程语言可编译且直接映射到系统的或CNM系统中的一或多个节点的数据流架构中。也就是说,系统中的节点可包含硬件块(例如,存储器控制器、原子单元、其它客户加速器等),所述硬件块可经配置以直接实施或支持用户指令以由此增强系统性能且减小时延。
在实例中,近存储器计算系统可尤其适合于实施指令及嵌套循环的层级(例如,两个、三个或更多个循环深度,或多维循环)。标准编译程序可用于接受高级语言指令,且进而直接编译到一或多个节点的数据流架构中。举例来说,系统中的节点可包含混合线程结构加速器。混合线程结构加速器可在CNM系统的用户空间中执行,且可发起其自身的线程或子线程,所述线程或子线程可并行地操作。每个线程可映射到不同循环迭代,由此支持多维循环。利用发起此类嵌套循环的能力以及其它能力,CNM系统可实现对计算密集操作的明显时间节省及时延改进。
近存储器计算系统或近存储器计算系统的节点或组件可包含或使用各种存储器装置、控制器及互连件等等。在实例中,系统可包括各种互连节点,且节点或节点群组可使用小芯片来实施。小芯片是用于集成各种处理功能性的新兴技术。通常,小芯片系统由集成在中介层上且封装在一起的离散芯片(例如,不同衬底或裸片上的集成电路(IC))构成。这种布置不同于单芯片(例如,IC),所述单芯片在一个衬底(例如,单个裸片)上含有不同装置块(例如,知识产权(IP)块),例如芯片上系统(SoC),或集成在板上的离散封装装置。一般来说,小芯片提供相较于单个裸片芯片的生产效益,包含更高的良率或减少的开发成本。下文所论述的图6A及图6B大体说明例如可包括近存储器计算系统的小芯片系统的实例。
通过在一个线程发现或计算所寻求的结果之后终止对并行线程的处理,可使许多类型的并行工作负载更有效。一般来说,为了实现最大效率,给定一类并行应用程序,其中一组协作进程细分输入数据以进行处理并具有以下约束:如果任何进程完成其工作,则所有进程都应停止作用于其数据子集。
可受益于这种布置的一种常见工作负载是图形搜索算法(例如,广度优先搜索),其中仅需要一个匹配来满足搜索。在没有提前终止机制的情况下,搜索时间受完成时间最长的进程的限制。在广度优先搜索实例中,这将包含在相应的搜索数据中未找到匹配的进程。相反,使用提前终止机制,总并行时间以首先完成任务的进程为界。
本文所描述的系统及方法提供广播事件消息传递机制。使用广播事件机制,完成任务的源线程能够向所有其它线程发送消息以提醒其它线程,以便它们可提前终止。下文提供其它细节。
图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)等等。第一交换机110可包含经配置以使用CTCPI的交换机。举例来说,第一交换机110可包含CXL交换机、PCIe交换机、CPI交换机或其它类型的交换机。在实例中,第一交换机110可经配置以耦合不同地配置的端点。举例来说,第一交换机110可经配置以在例如PCIe与CPI格式等之间转换分组格式。
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可包括折叠式克洛斯拓扑,例如在存储器计算装置的每一例项内,或作为在节点中耦合多个存储器计算装置的网格。克洛斯拓扑提供各种益处,例如可使用多个较小基数的交叉开关来提供与较高基数的交叉开关拓扑相关联的功能性。举例来说,克洛斯拓扑可跨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控制器经配置以与例如包含DRAM装置的第一存储器装置128介接。存储器控制器130可提供存取调度及位错误管理,以及其它功能。
在实例中,第一NOC 118可耦合到混合线程处理器(HTP 140)、混合线程结构(HTF142)及主机接口及分派模块(HIF 120)。HIF 120可经配置以促进对基于主机的命令请求队列及响应队列的存取。在实例中,HIF 120可在HTP 140或HTF 142的处理器或计算元件上分派新执行线程。在实例中,HIF 120可经配置以跨HTP 140模块及HTF 142模块维持工作负载平衡。
混合线程处理器或HTP 140可包含加速器,例如可基于RISC-V指令集。HTP 140可包含高度线程化的事件驱动处理器,其中线程可在单个指令轮换中执行,以便维持高指令吞吐量。HTP 140包括相对较少的自定义指令以支持低开销线程能力、事件发送/接收及共享存储器原子运算符。
混合线程结构或HTF 142可包含加速器,例如可包含非冯诺伊曼粗粒度可配置处理器。HTF 142可针对高级语言操作及数据类型(例如,整数或浮点)而优化。在实例中,HTF142可支持数据流计算。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中的信息进行操作。在实例中,存储器子系统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说明可编程原子单元302(PAU)的实例中的组件,例如上文相对于图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或指令SRAM 308进行存取。如果高速缓存线为脏,则内置原子运算符将不对最新数据进行操作,直到数据高速缓存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可经由相应输出端口,例如标记为SF OUT N-1、SF OUT N-2、SF OUT N+1及SFOUT 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操作。各种平铺块可例如使用同步架构任选地一起流水线化,以允许利用最小存储器存取进行数据流计算,因此使时延最小化且降低功耗。在实例中,异步结构可允许存储器参考与计算并行地继续进行,由此提供更有效的流式传输内核。在实例中,各种平铺块可包含对基于循环的构造的内置支持,且可支持嵌套循环内核。
同步结构可允许多个平铺块流水线化,例如不需要数据队列。参与同步域的平铺块可例如充当单个流水线化数据路径。同步域的第一或基础平铺块(例如,平铺块N-2,在图5的实例中)可通过流水线化平铺块发起工作线程。基础平铺块可负责以在本文中称为辐条计数(Spoke Count)的预定义节奏(cadence)开始工作。举例来说,如果辐条计数为3,则基础平铺块可每隔三个时钟循环发起工作。
在实例中,同步域包括HTF集群502中的一组已连接平铺块。线程的执行可在域的基础平铺块处开始,且可经由同步结构从基础平铺块前进到同一域中的其它平铺块。基础平铺块可提供要对第一平铺块执行的指令。第一平铺块可默认地为其它已连接平铺块提供要执行的相同指令。然而,在一些实例中,基础平铺块或后续平铺块可条件性地指定或使用替代指令。替代指令可通过使平铺块的数据路径产生布尔(Boolean)条件值来选择,且接着可使用布尔值来在当前平铺块的指令集与交替指令之间进行选择。
异步结构可用于执行相对于同步域异步地发生的操作。HTF集群502中的每一平铺块可包含到异步结构的接口。入接口可包含例如FIFO缓冲器或队列(例如,AF IN QUEUE),以针对无法立即处理的消息提供存储。类似地,异步结构的出接口可包含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是出于清楚起见标记小芯片系统中的组件的框图。
应用小芯片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上的不同封装中。对于许多应用程序,可提供多个存储器装置小芯片。在实例中,这些存储器装置小芯片可各自实施一或多种存储技术,且可包含集成计算主机。在实例中,存储器小芯片可包含不同技术的多个堆叠存储器裸片,例如与一或多个动态随机存取存储器(DRAM)装置堆叠或以其它方式通信的一或多个静态随机存取存储器(SRAM)装置。在实例中,存储器控制器小芯片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的实例的HIF 120。主机处理器或R5可对应于图1的实例的内部主机处理器122。主机接口724可包含用于将第一CNM封装700耦合到其它外部装置或系统的PCI接口。在实例中,工作可通过主机接口724在第一CNM封装700或第一CNM封装700内的平铺块集群上发起。举例来说,主机接口724可经配置以命令例如在第一CNM封装700中的各种小芯片当中的个别HTF平铺块集群进入及退出功率/时钟门模式。
图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中的近存储器计算小芯片中的一或多个中使用混合线程处理器及混合线程结构来分派新执行线程。
当CPI或CTCPI调用分组由加速器接收且处理时,在HTP加速器上开始一个线程。CPI或CTCPI调用分组可源自主机接口(HIF)或HTP加速器。源自HIF的调用由主机处理器发出且被定义为主线程。源自HTP的调用被定义为纤程线程。主线程与纤程线程之间的主要差异与创建新纤程的限制有关。
应注意,当在主机处理器上运行的应用程序进行指示其需要能够存取HTP资源的系统调用时,预先分配用于所有线程的堆栈存储器。此后,当在HTP上下文上开始一个线程时,预分配的堆栈可供使用。用于主线程的堆栈大小及用于纤程的堆栈大小可不同。通常,主线程具有比纤程大的堆栈大小。
HTP线程可执行线程创建(例如,ETC)指令以在加速器资源上发起一个线程。加速器资源包含HTP及HTF以及通用加速器。通用加速器允许与尚未定义的加速器交互。
ETC指令指定将在经创建线程完成时返回的信息。在可创建线程之前,必须保留用于返回信息的空间。当线程最终完成时,线程将其返回信息写入到保留空间中,并等待父线程执行线程加入指令。线程加入指令从保留空间获取返回信息,且将其传送到线程的X寄存器状态以供父线程稍后使用。一旦加入了线程,就释放保留空间。
ETC指令可指示在完成经创建线程时不返回任何返回信息。此指示允许HTP加速器创建线程,而不保留用于返回信息的空间。在这种情况下,计数器用于跟踪没有返回信息的未完成线程的数目。
父线程执行加入指令(EFJ、EFJA)以确定子线程是否已完成且获得返回结果。所有加速器资源(HTP、HTF及通用)使用将线程完成状态返回到发起的父线程的此共同方法。来自子线程的返回状态可包含:调用者ID,及0、1或2个64位返回参数。可创建线程,且指定无返回(nr)。
纤程加入(EFJ)指令加入在没有无返回指示的情况下创建的线程,并且忽略了在具有无返回指示的情况下创建的线程。EFJ指令处理单个完成的子线程,且将返回的调用ID及参数写入到线程X寄存器以供父线程存取。
纤程创建(EFC)指令在混合线程加速器(HTA)上发起一个线程。多达四个HTA可存在于包含HTP及HTF的CNM装置内。
图9中说明纤程创建指令。EFC指令指定用于纤程创建操作的若干参数。返回变量参数计数(rc)字段可采用值(NR、0、1、2)。当调用HTP具有容纳返回信息的空间时,HTP可仅在加速器资源上创建线程。返回信息包含调用者ID及高达两个64位返回值两者。纤程创建指令指定返回信息所需的存储空间。返回信息后缀选项为NR、R0、R1及R2。NR后缀暗示将存储无返回信息(即,加入指令将不提供任何信息)。R0后缀暗示调用者ID将可用于加入指令。R1及R2后缀暗示除了调用者ID之外的一个或两个64位返回变量参数将被存储且可用于加入指令。
当执行纤程创建指令时,分配返回信息存储。如果没有足够的返回信息空间可用,则纤程创建指令被暂停,直到空间变得可用为止。带NR后缀的纤程创建指令需要无返回信息存储,并且未完成数目限于跟踪未完成数目的计数器的大小。R0后缀需要用于调用者ID而非无返回值的存储装置,且R1及R2需要调用者ID及返回值空间两者。一组经创建纤程需要的信息越多,未完成纤程的最大量就越少。
线程可创建于例如HTP 140或HTF 142的加速器上。在此文件中,线程可指代系统或主机线程,而“纤程”可指代在HTP 140或HTF 142处创建的线程。换句话说,主机分派给HTP加速器的工作被称为主线程,并且HTP分派给HTP加速器的工作被称为纤程线程。在许多情况下,术语“纤程线程”可与术语“线程”互换。
架构支持线程间通信的事件。可将事件从单个源线程发送到单个目的地线程(例如,点对点通信),或从单个源线程发送到所有其它HTP上下文(例如,广播通信)。
源线程可在没有事先设置的情况下发送事件。目的地线程必须执行指令以初始化线程接收事件的能力。在实施方案中,存在可用于每个线程的十六个事件编号。事件编号0专用于监测接收到的线程返回事件(指示线程已准备好加入)。所有其它事件编号(1-15)用于从其它线程接收事件消息。事件编号1-4可接收事件数据(64位数据值)。事件编号5-15并不具有与其关联的数据存储装置。应理解,其它实施方案可使用更大或更小的事件编号。此外,其它实施方案可将数据存储装置分配给不同范围的事件编号。
除了事件编号0之外的每个事件具有相关联的状态,以用于管理接收到的事件并决定何时触发事件编号,从而可能唤醒等待的线程。事件接收状态由事件接收模式、溢出位、事件接收计数器(16位)及两用事件接收触发/事件广播信道(16位)组成。
可能存在可用于管理系统中的事件的若干指令。这些包含用于为所选择操作模式准备事件编号的事件模式(EEM)指令;用于在向线程发送事件时提供目的地的事件目的地(EED)指令;用于将事件传输到特定线程的事件发送(EES)指令;用于向特定线程广播事件的事件广播(EEB)指令;及用于接收及处理事件的事件接收(EER)指令。
事件模式(EEM)指令设置接收到的事件的操作模式。事件0被保留以用于线程返回事件,事件的剩余部分可在三个接收模式中的一个接收模式中:简单、广播或收集。
在简单模式中,每个接收到的事件使得触发位被设置并且将接收到的消息计数递增一。接收事件指令(EER)使接收到的事件计数递减一。当计数转变回零时,事件触发位被清理。
在收集模式中,事件计数器用于跟踪接收到多少事件消息。当事件消息的数目等于事件计数时,则所述事件被称为已经发生。递增或递减机制可用于与事件计数相比跟踪事件消息。
举例来说,在收集模式中,接收到的事件使用递增机制使事件计数递增一。当计数达到计数触发值时,则事件触发位被设置。EER指令使事件递减事件触发值(将事件计数复位为零),并且如果事件计数小于事件触发值,则触发位被清理。
作为另一实例,使用递减机制,将事件计数值初始设置为大于一的某一值。接收到的事件使事件计数值递减一。当事件计数值达到零时,则事件被视为已经发生并且事件触发位被设置。EER指令将事件计数复位到初始值并且触发位被清理。
在广播模式中,将接收到的事件的信道与事件编号的广播信道进行比较。如果信道匹配,则事件计数递增一并且事件触发位被设置。EER指令使接收到的事件计数递减一。当计数转变回零时,事件触发位被清理。
事件监听(EEL)指令允许线程监测接收到的事件的状态。EEL指令可在等待模式或非等待模式下操作。在等待模式下,线程将暂停,直到发布事件为止。在非等待模式下,线程能够检查接收到的事件的状态并继续进行其它处理。
等待模式EEL指令采用“EEL rd,rs1”的形式。寄存器rs1提供监测事件的输入掩码并且寄存器rd提供触发事件的输出掩码。
非等待模式EEL指令采用“EEL.NW rd,rs1”的形式。此处,如果没有事件可用,则非等待模式将返回寄存器rd中的值零。
事件目的地指令(EED)产生事件目的地。事件目的地是可被传递到不同线程并且用于将事件发送回到创建目的地标识符的线程的64位值。事件目的地指定事件编号(EvNum)以及事件目的地。可将事件目的地提供到相同处理或不同进程。将事件发送到不同进程需要目的地进程的许可。目的地进程可经由主机API例程调用授予许可。目的地进程(EmdPid)在事件目的地中编码。
多个主机进程可代表同一装置上的进程执行。事件目的地含有HTP标识符(HtpId)及所属主机进程的标识符(HostPid)。需要HTP标识符及主机进程标识符的组合来获得目的NOC端点。
图10是说明根据实施例的线程处理块1000的伪码列表。在协作任务上操作的每个线程可使用同一处理块1000。处理块1000实施事件列表(EEL)指令的非等待版本。以此方式,线程在等待事件消息时不必挂起,而是可继续与其它线程并行处理协作任务。
线程处理块1000包含在终止条件之前执行的主循环1002。当在主循环1002中时,线程可执行与在要并行处理的几个线程之间划分的协作任务有关的一些数据处理(操作1004)。如果数据处理操作1004完成协作任务,则创建并传输事件消息(操作1006)。可将事件消息广播到还处理协作任务的其它线程。
在主循环1002期间,线程周期性地检查以确定是否接收到广播消息(操作1008)。如果线程接收到广播消息,则线程指示另一线程已完成协作任务并且线程应该终止其自身的处理。这种提前终止减少不再需要的额外处理。
协作任务的一个特定用例是与多个线程并行执行的广度优先搜索。图或树的每一部分可在线程之间划分。虽然存在用于在线程之间划分图或树的许多不同算法,并且存在基于是否存在共享存储器的不同算法,但是一般来说,顶点在线程之间进行划分,并且每个线程处理其顶点集,以努力找到要搜索的值。在传统的广度优先搜索中,所有线程都继续,直到它们完成搜索空间的部分为止。这意味着搜索所花费的时间与最慢线程一样长。利用本文所描述的新颖的广播消息传递机制,一旦线程找到正搜索的值,它就可以广播事件消息,这将启动其它线程的终止。这导致更快的搜索算法及减少的开销,因为其它进程可更快地使用线程资源。
图11是说明根据实施例的操作环境1100的框图。图11说明单SoC/HTP上下文实施方案。操作环境1100可包含具有分派接口1104、NOC接口1106及HTP核心1108的HTP加速器。举例来说,分派接口1104可为分派接口414的实例。举例来说,NOC接口1106可为NOC接口416的实例。举例来说,HTP核心1108可为HTP核心402的实例。如上文所论述,分派接口1104处理基于硬件的线程管理并且HTP核心1108代表线程执行指令。NOC接口1106可与NOC介接,以利用CTCPI协议与存储器计算装置上的其它节点通信。NOC接口1106还可为不同存储器计算装置上的核心之间的通信提供支持。
在操作环境1100处接收工作负载1110,并且分派接口1104用于创建主线程1150。主线程1150产生子线程1152A-D并且将工作负载1110分布在子线程1152A-D上。每个子工作负载1112A-D由子线程1152A-D并行处理。
当子线程1152A-D以整体完成工作负载1110的方式完成其相应的子工作负载1112A-D时,子线程1152A-D向所有其它子线程1152A-D广播消息。子线程1152A-D使用事件管理器电路系统1114执行发布广播消息的命令。事件管理器电路系统1114可存取寄存器以存储及检索事件状态信息。事件管理器电路系统1114可通过将事件状态存储在寄存器中来处理“事件发送”命令。此外,事件管理器电路系统1114可基于广播消息来存储事件状态,例如,使用标志位来指示事件发生。事件管理器电路系统1114可处理来自接收线程的监听命令。这些监听命令可具有无等待变体,以允许子线程1152A-D在等待事件发生的同时继续处理。如果事件已经发生,则事件管理器电路系统1114可将寄存器设置为非零值。监听线程能够从寄存器中读取值并且获得事件状态。在接收到广播消息之后,其它子线程1152A-D终止它们对相应的子工作负载1112A-D的处理。
虽然在一个实施方案中,子线程向其它子线程广播事件消息,但是应理解,其它实施方案可用于向并发线程提供通知。因此,在另一实施方案中,完成协作任务的子线程可将值返回到父(例如,主)线程。此值可指示子线程已成功地完成协作任务。作为响应,父线程可发起向其所有子线程广播事件消息,这将发起每个子线程终止。为了实施此机制,父线程轮询每个线程,因此它会主动地寻找返回值。
此实施方案涉及另一通信跳(例如,从子线程到父线程,然后到所有并行的子线程)。然而,归因于硬件或其它设计考虑因素,此实施方案可为优选的。
图12是说明根据实施例的操作环境1200的框图。图12说明多SoC或多HTP上下文实施方案。在图12中所示的操作环境1200中,子线程1252A-D可在一或多个不同的HTP核心1208A-D上执行。NOC接口1206用于在HTP核心1208A-D之间传递事件消息。分派接口1204可用于管理在一个HTP核心上执行的主线程1250,及可在同一HTP核心或不同HTP核心上执行的子线程1252A-D。
如同图11中所示的实例,当一个子线程1252A-D完成工作负载时,其在广播信道上发送事件消息。在所有HTP核心1208A-D上执行的其它子线程1252A-D可在接收到广播消息之后发起终止。
在一些架构中,无法执行从一个HTP核心或SoC到另一HTP核心或SoC的广播通信。然而,核心或SoC之间的点对点通信是可用的。因此,在实施方案中,当在第一核心1208A或SoC上执行的一个子线程1252A-D获得完成状态时,其可在第一核心1208A或SoC上广播事件消息(或引起事件消息的广播)。可使用父线程1250及1260之间的直接通信将事件消息传递到第二核心1208B或SoC。第二核心1208B或SoC然后可广播事件消息以终止在第二核心1208B或SoC上执行的子线程1252E-H。
此外,如同图11中所示的实例,在传输消息的替代机制中,子线程可将值返回到父(例如,主)线程1250,并且父线程1250可广播事件消息以终止在同一或另一HTP核心上执行的子线程。此替代机制涉及传达事件消息的额外步骤,但是在一些设计实施方案中可能比从子线程广播事件消息更有效。
图13是说明根据实施例的在线程完成后传递的事件消息的图式。第一节点1302A上的主线程1300A执行并产生多个子线程1304A-D以执行并行处理。另外,在第二节点1302B上产生子线程1304E-H。用本地主线程1300B控制第二节点1302B上的子线程1304E-H。本地主线程1300B可为被分配以处理在第二节点1302B上执行的子线程1304E-H的服务器线程。或者,本地主线程1300B可为由主线程1300A分配或指定以处理第二节点1302B上的子线程1304E-H的线程(或纤程)。
具有附加计算的服务器的一个常见应用程序范例是每个节点都有一个应用程序服务器进程,每一个负责创建和清理所述节点本地的资源。每个节点上的服务器进程可为每个节点的顶级实体,并且充当在节点之间传递事件消息的主要管道。
如果服务器进程在每个节点上创建线程,则所述进程通常涉及创建少量(可为一个)线程,这反过来又创建较大量的纤程。由服务器进程创建的线程中的一个可被指定为用于所述节点(或远程节点)的主线程(或本地主线程),并且可充当用于所述节点的顶级实体。
应用程序服务器进程、线程及纤程的创建方式与此处讨论的事件消息传递机制正交。基准要求是将一个进程(或线程或纤程)指定为给定节点的主进程,并且承担处理节点间通信的责任。
因此,当例如子线程1304A的子线程完成并行化任务时,其起始事件消息(以粗箭头说明),所述事件消息被广播到主线程1300A及在第一节点1302A上执行的其它子线程1304B-D。主线程1300A将事件消息发送到在第二节点1302B上执行的本地主线程1300B,所述本地主线程又将事件消息广播到在第二节点1302B上执行的子线程1304E-H。
图14是根据实施例的用于线程执行控制的方法1400的实例的流程图。所述方法1400的操作由计算机硬件执行,例如由相对于图1到8及11到13所描述的计算机硬件(例如,主机系统108、主机处理器122、PAU线程控制304、HTP核心402、线程控制器412或分派接口414)或相对于图14所描述的计算机硬件(例如,处理电路系统)执行。
可实施方法1400以用于在存储器计算节点上进行事件处理,其中存储器计算节点是在系统中的缩放结构上彼此耦合的多个存储器计算节点中的一个。系统可为近存储器计算系统。存储器计算节点中的每一个包含经配置以执行多个处理线程的混合线程处理器及混合线程结构。可并行地执行处理线程。
在1402处,通过事件管理器电路系统建立用于接收事件消息的广播信道。
在1404处,使用线程管理器电路系统组织用于执行协作任务的部分的多个线程。多个线程各自针对事件消息监测广播信道。在实现阈值操作之后,线程管理器电路系统使用事件管理器电路系统在广播信道上广播指示协作任务完成的事件消息。事件消息使其它线程响应于接收到事件消息而终止协作任务的其相应部分的执行。
在实施例中,为了监测广播信道,多个线程中的每个线程实施无等待指令。在另一实施例中,无等待指令向寄存器查询非零值,所述非零值表示与事件消息相关联的事件的发生。在相关实施例中,非零值是16位值。在另一实施例中,非零值是广播信道。
在实施例中,系统包括处理器。在另一实施例中,处理器是混合线程处理器(HTP)。在相关实施例中,处理器集成在系统的小芯片中。
在实施例中,阈值操作是搜索算法的成功搜索结果。应理解,其它类型的并行化操作可包含在这些操作的范围内,例如深度优先搜索、广度优先搜索、分支及绑定或阿尔法-贝塔算法。
图15说明实例机器1500的框图,可利用所述机器、在所述机器中或通过所述机器实施本文中所论述的任何一或多种技术(例如,方法)。如本文中所描述,实例可包含机器1500中的逻辑或多个组件或机构,或可由机器1500中的逻辑或多个组件或机构操作。电路系统(例如,处理电路系统)是在机器1500的有形实体中实施的电路集合,其包含硬件(例如,简单电路、门、逻辑等)。电路系统成员资格可随时间推移而灵活变化。电路系统包含在操作时可单独或组合地执行特定操作的成员。在实例中,可以不可改变的方式设计电路系统的硬件以进行特定操作(例如,硬连线)。在实例中,电路系统的硬件可包含可变地连接的物理组件(例如,执行单元、晶体管、简单电路等),所述物理组件包含以物理方式修改(例如,不变集中式粒子的磁性、电气可移动放置等)以对特定操作的指令进行编码的机器可读媒体。在连接物理组件时,改变硬件组成部分的根本电性质,例如从绝缘体变为导体,或反之亦然。指令使得嵌入式硬件(例如,执行单元或加载机构)能够经由可变连接以硬件创建电路系统的构件以在处于操作中时实行特定操作的部分。因此,在实例中,机器可读媒体元件是电路系统的一部分或在装置操作时以通信方式耦合到电路系统的其它组件。在实例中,物理组件中的任一个可用于多于一个电路系统中的多于一个构件中。举例来说,在操作下,执行单元可在一个时间点用于第一电路系统中的第一电路,且由第一电路系统中的第二电路重新使用,或在不同时间由第二电路系统中的第三电路重新使用。关于机器1500的这些组件的额外实例。
在替代实施例中,机器1500可作为独立装置操作或可连接(例如,联网)到其它机器。在联网部署中,机器1500可在服务器-客户端网络环境中以服务器机器、客户机或两者的能力操作。在实例中,机器1500可充当对等(P2P)(或其它分布式)网络环境中的对等机器。机器1500可为个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、移动电话、网络器具、网络路由器、交换机或桥接器,或能够执行(循序或以其它方式)指定待由所述机器采取的动作的指令的任何机器。此外,虽然仅说明单个机器,但术语“机器”还应被视为包含单独或联合执行一组(或多组)指令以执行本文论述的方法论中的任何一或多种的任何机器集合,例如云计算、软件即服务(SaaS)、其它计算机集群配置。
机器1500(例如,计算机系统)可包含硬件处理器1502(例如,中央处理单元(CPU)、图形处理单元(GPU)、硬件处理器核心或其任何组合)、主存储器1504、静态存储器1506(例如,用于固件、微码、基本输入输出(BIOS)、通用可扩展固件接口(UEFI)等的存储器或存储装置)及大容量存储装置1508(例如,硬盘驱动器、磁带机、快闪存储装置或其它块装置),其中一些或全部可经由互联件1530(例如,总线)彼此通信。机器1500可进一步包含显示装置1510、字母数字输入装置1512(例如,键盘),及用户接口(UI)导航装置1514(例如,鼠标)。在实例中,显示装置1510、输入装置1512及UI导航装置1514可为触摸屏显示器。机器1500可另外包含大容量存储装置1508(例如,驱动单元)、信号产生装置1518(例如,扬声器)、网络接口装置1520及一或多个传感器1516,例如全球定位系统(GPS)传感器、指南针、加速计或其它传感器。机器1500可包含输出控制器1528,例如,串行(例如,通用串行总线(USB)、并行或其它有线或无线(例如,红外(IR)、近场通信(NFC)等)连接以与一或多个外围装置(例如,打印机、读卡器等)通信或控制所述一或多个外围装置。
硬件处理器1502、主存储器1504、静态存储器1506或大容量存储装置1508的寄存器可为或包含机器可读媒体1522,所述机器可读媒体上存储体现本文中所描述的技术或功能中的任何一或多个或由本文中所描述的技术或功能中的任何一或多个使用的数据结构或指令1524(例如,软件)的一或多个集合。指令1524还可在由机器1500执行期间完全或至少部分地驻留在硬件处理器1502、主存储器1504、静态存储器1506或大容量存储装置1508的寄存器中的任一个内。在实例中,硬件处理器1502、主存储器1504、静态存储器1506或大容量存储装置1508中的一个或任何组合可构成机器可读媒体1522。虽然机器可读媒体1522被说明为单个媒体,但术语“机器可读媒体”可包含经配置以存储一或多个指令1524的单个媒体或多个媒体(例如,集中式或分布式数据库,或相关联高速缓存及服务器)。
术语“机器可读媒体”可包含能够存储、编码或载送供机器1500执行且使机器1500执行本公开的技术中的任何一或多者的指令的任何媒体,或能够存储、编码或载送由此类指令使用或与此类指令相关联的数据结构的任何媒体。非限制性机器可读媒体实例可包含固态存储器、光学媒体、磁性媒体及信号(例如,射频信号、其它基于光子的信号、声音信号等)。在实例中,非暂时性机器可读媒体包括具有多个粒子的机器可读媒体,所述粒子具有不变(例如,静止)质量,且因此为物质组成。因此,非暂时性机器可读媒体是不包含暂时性传播信号的机器可读媒体。非暂时性机器可读媒体的特定实例可包含:非易失性存储器,例如半导体存储器装置(例如,电可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM))及快闪存储器装置;磁盘,例如内部硬盘及可移式盘;磁光盘;及CD-ROM及DVD-ROM盘。
在实例中,存储或以其它方式提供在机器可读媒体1522上的信息可表示指令1524,例如指令1524自身或可从其导出指令1524的格式。可从其导出指令1524的此格式可包含源代码、已编码指令(例如,呈压缩或加密形式)、已封装指令(例如,拆分成多个封装)等。表示机器可读媒体1522中的指令1524的信息可由处理电路系统处理到指令中以实施本文中所论述的操作中的任一个。举例来说,从信息(例如,通过处理电路系统处理)导出指令1524可包含:将信息编译(例如,从源码、目标码等)、解译、加载、组织(例如,动态地或静态地链接)、编码、解码、加密、解密、封装、解封装或以其它方式操纵到指令1524中。
在实例中,指令1524的导出可包含对信息的汇编、编译或解译(例如,通过处理电路系统)以从由机器可读媒体1522提供的一些中间或预处理格式创建指令1524。当在多个部分中提供信息时,可组合、解封装及修改所述信息以创建指令1524。举例来说,信息可在一个或若干个远程服务器上的多个经压缩源代码封装(或目标代码,或二进制可执行代码等)中。源代码封装可在通过网络传输时加密,且在必要时解密、解压缩、汇编(例如,链接),且在本地机器处编译或解译(例如,到可独立执行的库中等),且由本地机器执行。
指令1524可进一步利用多个传递协议中的任一个(例如,帧中继、因特网协议(IP)、传输控制协议(TCP)、用户数据报协议(UDP)、超文本传递协议(HTTP)等)经由网络接口装置1520使用传输媒体在通信网络1526上传输或接收。实例通信网络可包含局域网(LAN)、广域网(WAN)、包数据网络(例如,因特网)、移动电话网络(例如,蜂窝网络)、简易老式电话(POTS)网络及无线数据网络(例如,称为的电气电子工程师学会(IEEE)802.11系列标准、称为/>的IEEE 802.16系列标准)、IEEE 802.15.4系列标准、对等(P2P)网络等等。在实例中,网络接口装置1520可包含一或多个物理插口(例如,以太网、同轴或电话插口)或一或多个天线以连接到网络1526。在实例中,网络接口装置1520可包含多个天线以使用单输入多输出(SIMO)、多输入多输出(MIMO)或多输入单输出(MISO)技术中的至少一个无线地通信。术语“传输媒体”应被视为包含能够存储、编码或载送供机器1500执行的指令的任何无形媒体,且包含数字或模拟通信信号或用于促进此软件的通信的其它无形媒体。传输媒体是机器可读媒体。
为了更好地说明本文中所描述的方法及设备,一组非限制性实例实施例在下文阐述为带编号的实例。
实例1是一种系统,其包括:多个存储器计算节点,其在缩放结构上彼此耦合,其中所述存储器计算节点中的每一个包括经配置以执行多个处理线程的混合线程处理器及混合线程结构,其中至少一个存储器计算节点包括:事件管理器电路系统,其经配置以建立用于接收事件消息的广播信道;及线程管理器电路系统,其经配置以组织多个线程以执行协作任务的部分,其中所述多个线程各自针对事件消息监测所述广播信道,并且其中在实现阈值操作之后,所述线程管理器电路系统将使用所述事件管理器电路系统在所述广播信道上广播指示所述协作任务完成的事件消息,所述事件消息使其它线程响应于接收到所述事件消息而终止所述协作任务的其相应部分的执行。
在实例2中,根据实例1所述的标的物包含,其中为了监测所述广播信道,所述线程管理器电路系统组织所述多个线程中的每个线程以实施无等待指令。
在实例3中,根据实例2所述的标的物包含,其中所述无等待指令向寄存器查询非零值,所述非零值表示与所述事件消息相关联的事件的发生。
在实例4中,根据实例3所述的标的物包含,其中所述非零值是16位值。
在实例5中,根据实例4所述的标的物包含,其中所述非零值是所述广播信道。
在实例6中,根据实例1至5所述的标的物包含,其中所述系统包括处理器。
在实例7中,根据实例6所述的标的物包含,其中所述处理器是混合线程处理器(HTP)。
在实例8中,根据实例6至7所述的标的物包含,其中所述处理器集成在所述系统的小芯片中。
在实例9中,根据实例1至8所述的标的物包含,其中所述阈值操作是搜索算法的成功搜索结果。
实例10是一种方法,其包括:通过事件管理器电路系统建立用于接收事件消息的广播信道,所述事件消息用于在存储器计算节点上进行事件处理,所述存储器计算节点是在系统中的缩放结构上彼此耦合的多个存储器计算节点中的一个,所述存储器计算节点中的每一个包括经配置以执行多个处理线程的混合线程处理器及混合线程结构;及在线程管理器电路系统中组织多个线程以执行协作任务的部分,其中所述多个线程各自针对事件消息监测所述广播信道,并且其中在实现阈值操作之后,所述线程管理器电路系统将使用所述事件管理器电路系统在所述广播信道上广播指示所述协作任务完成的事件消息,所述事件消息使其它线程响应于接收到所述事件消息而终止所述协作任务的其相应部分的执行。
在实例11中,根据实例10所述的标的物包含,其中为了监测所述广播信道,所述多个线程中的每个线程实施无等待指令。
在实例12中,根据实例11所述的标的物包含,其中所述无等待指令向寄存器查询非零值,所述非零值表示与所述事件消息相关联的事件的发生。
在实例13中,根据实例12所述的标的物包含,其中所述非零值是16位值。
在实例14中,根据实例13所述的标的物包含,其中所述非零值是所述广播信道。
在实例15中,根据实例10至14所述的标的物包含,其中所述系统包括处理器。
在实例16中,根据实例15所述的标的物包含,其中所述处理器是混合线程处理器(HTP)。
在实例17中,根据未定义的实例所述的标的物包含,其中所述处理器集成在所述系统的小芯片中。
在实例18中,根据实例10至17所述的标的物包含,其中所述阈值操作是搜索算法的成功搜索结果。
实例19是一种非暂时性机器可读媒体,其包含在由机器执行时使所述机器执行以下操作的指令:建立用于接收事件消息的广播信道,所述事件消息用于在存储器计算节点上进行事件处理,所述存储器计算节点是在系统中的缩放结构上彼此耦合的多个存储器计算节点中的一个,所述存储器计算节点中的每一个包括经配置以执行多个处理线程的混合线程处理器及混合线程结构;及组织多个线程以执行协作任务的部分,其中所述多个线程各自针对事件消息监测所述广播信道,并且其中在实现阈值操作之后,一个线程将在所述广播信道上广播指示所述协作任务完成的事件消息,其中所述事件消息使其它线程响应于接收到所述事件消息而终止所述协作任务的其相应部分的执行。
在实例20中,根据实例19所述的标的物包含,其中为了监测所述广播信道,所述指令配置所述多个线程中的每个线程以实施无等待指令。
在实例21中,根据实例20所述的标的物包含,其中所述无等待指令向寄存器查询非零值,所述非零值表示与所述事件消息相关联的事件的发生。
在实例22中,根据实例21所述的标的物包含,其中所述非零值是16位值。
在实例23中,根据实例22所述的标的物包含,其中所述非零值是所述广播信道。
在实例24中,根据实例19至23所述的标的物包含,其中所述近存储器计算系统包括处理器。
在实例25中,根据实例24所述的标的物包含,其中所述处理器是混合线程处理器(HTP)。
在实例26中,根据实例24至25所述的标的物包含,其中所述处理器集成在所述近存储器计算系统的小芯片中。
在实例27中,根据实例19至26所述的标的物包含,其中所述阈值操作是搜索算法的成功搜索结果。
实例28是至少一种机器可读媒体,其包含在由处理电路系统执行时使所述处理电路系统执行操作以实施实例1至27中任一项的指令。
实例29是一种设备,其包括用于实施实例1至27中任一项的装置。
实例30是一种用于实施实例1至27中任一项的系统。
实例31是一种用于实施实例1至27中任一项的方法。
以上详细描述包含对附图的参考,所述附图形成所述详细描述的一部分。图式借助于说明展示可实践本发明的特定实施例。这些实施例在本文中也称为“实例”。此类实例可包含除了所示出或所描述的那些元件之外的元件。然而,本发明人还预期其中仅提供所示或所描述的那些元件的实例。此外,本发明人还预期使用相对于特定实例(或其一或多个方面)或相对于本文展示或描述的其它实例(或其一或多个方面)而展示或描述的那些元件的任何组合或排列(或其一或多个方面)的实例。
在本文件中,如专利文件中常见,使用术语“一”或“一个”以包含一个或多于一个,这与“至少一个”或“一或多个”的任何其它例项或用途无关。在本文件中,除非另外指示,否则术语“或”用于指代非排他性的或,使得“A或B”可包含“A而非B”、“B而非A”,及“A及B”。在所附权利要求书中,术语“包含(including)”及“其中(in which)”用作相应术语“包括(comprising)”及“其中(wherein)”的简洁英文等效术语。而且,在所附权利要求书中,术语“包含”及“包括”是开放的,即,包含除了权利要求书中列在此种术语后的那些要素之外的要素的系统、装置、物品或过程仍被认为处于所述权利要求书的范围内。此外,在以下权利要求书中,术语“第一”、“第二”及“第三”等仅用作标签,并且并不旨在对其对象施加数字要求。
以上描述预期为说明性的而非限制性的。举例来说,上文所描述的实例(或其一或多个方面)可彼此组合使用。如所属领域的一般技术人员在查阅以上描述后可使用其它实施例。所述摘要在遵守以下理解的情况下提交:其将不会用于解释或限制权利要求的范围或含义。同样,在以上详细描述中,可将各种特征分组在一起以简化本公开。此情况不应解释为期望未要求的所公开特征对任何权利要求来说是必需的。实际上,本发明主题可在于比特定公开的实施例的所有特征要少。因此,特此将所附权利要求书并入到具体实施方式中,其中每一权利要求作为单独实施例而独立存在,且经考虑此些实施例可以各种组合或排列彼此组合。本发明的范围应该通过参考所附的权利要求书及所述权利要求书所授予的等效物的完整范围来确定。
Claims (20)
1.一种系统,其包括:
多个存储器计算节点,其在缩放结构上彼此耦合,其中所述存储器计算节点中的每一个包括经配置以执行多个处理线程的混合线程处理器及混合线程结构,其中至少一个存储器计算节点包括:
事件管理器电路系统,其经配置以建立用于接收事件消息的广播信道;及
线程管理器电路系统,其经配置以组织多个线程以执行协作任务的部分,其中所述多个线程各自针对事件消息监测所述广播信道,并且其中在实现阈值操作之后,所述线程管理器电路系统将使用所述事件管理器电路系统在所述广播信道上广播指示所述协作任务完成的事件消息,所述事件消息使其它线程响应于接收到所述事件消息而终止所述协作任务的其相应部分的执行。
2.根据权利要求1所述的系统,其中为了监测所述广播信道,所述线程管理器电路系统组织所述多个线程中的每个线程以实施无等待指令。
3.根据权利要求2所述的系统,其中所述无等待指令向寄存器查询非零值,所述非零值表示与所述事件消息相关联的事件的发生。
4.根据权利要求3所述的系统,其中所述非零值是16位值。
5.根据权利要求4所述的系统,其中所述非零值是所述广播信道。
6.根据权利要求1所述的系统,其中所述系统包括处理器。
7.根据权利要求6所述的系统,其中所述处理器是混合线程处理器(HTP)。
8.根据权利要求6所述的系统,其中所述处理器集成在所述系统的小芯片中。
9.根据权利要求1所述的系统,其中所述阈值操作是搜索算法的成功搜索结果。
10.一种方法,其包括:
通过事件管理器电路系统建立用于接收事件消息的广播信道,所述事件消息用于在存储器计算节点上进行事件处理,所述存储器计算节点是在系统中的缩放结构上彼此耦合的多个存储器计算节点中的一个,所述存储器计算节点中的每一个包括经配置以执行多个处理线程的混合线程处理器及混合线程结构;及
在线程管理器电路系统中组织多个线程以执行协作任务的部分,其中所述多个线程各自针对事件消息监测所述广播信道,并且其中在实现阈值操作之后,所述线程管理器电路系统将使用所述事件管理器电路系统在所述广播信道上广播指示所述协作任务完成的事件消息,所述事件消息使其它线程响应于接收到所述事件消息而终止所述协作任务的其相应部分的执行。
11.根据权利要求10所述的方法,其中为了监测所述广播信道,所述多个线程中的每个线程实施无等待指令。
12.根据权利要求11所述的方法,其中所述无等待指令向寄存器查询非零值,所述非零值表示与所述事件消息相关联的事件的发生。
13.根据权利要求12所述的方法,其中所述非零值是16位值。
14.根据权利要求13所述的方法,其中所述非零值是所述广播信道。
15.根据权利要求10所述的方法,其中所述系统包括处理器。
16.根据权利要求15所述的方法,其中所述处理器是混合线程处理器(HTP)。
17.根据权利要求15所述的方法,其中所述处理器集成在所述系统的小芯片中。
18.根据权利要求10所述的方法,其中所述阈值操作是搜索算法的成功搜索结果。
19.一种非暂时性机器可读媒体,所述非暂时性机器可读媒体包含在由机器执行时使所述机器执行以下操作的指令:
建立用于接收事件消息的广播信道,所述事件消息用于在存储器计算节点上进行事件处理,所述存储器计算节点是在系统中的缩放结构上彼此耦合的多个存储器计算节点中的一个,所述存储器计算节点中的每一个包括经配置以执行多个处理线程的混合线程处理器及混合线程结构;及
组织多个线程以执行协作任务的部分,其中所述多个线程各自针对事件消息监测所述广播信道,并且其中在实现阈值操作之后,一个线程将在所述广播信道上广播指示所述协作任务完成的事件消息,其中所述事件消息使其它线程响应于接收到所述事件消息而终止所述协作任务的其相应部分的执行。
20.根据权利要求19所述的机器可读媒体,其中为了监测所述广播信道,所述多个线程中的每个线程实施无等待指令。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/405,233 | 2021-08-18 | ||
US17/405,233 US11550642B1 (en) | 2021-08-18 | 2021-08-18 | Mechanism to trigger early termination of cooperating processes |
PCT/US2022/039053 WO2023022875A1 (en) | 2021-08-18 | 2022-08-01 | Mechanism to trigger early termination of cooperating processes |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118119933A true CN118119933A (zh) | 2024-05-31 |
Family
ID=84810793
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280065734.0A Pending CN118119933A (zh) | 2021-08-18 | 2022-08-01 | 用于触发协作进程的提前终止的机制 |
Country Status (3)
Country | Link |
---|---|
US (2) | US11550642B1 (zh) |
CN (1) | CN118119933A (zh) |
WO (1) | WO2023022875A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11550642B1 (en) | 2021-08-18 | 2023-01-10 | Micron Technology, Inc. | Mechanism to trigger early termination of cooperating processes |
US20240162007A1 (en) * | 2022-11-10 | 2024-05-16 | Applied Materials, Inc. | Reducing aspect ratio dependent etch with direct current bias pulsing |
US20240345882A1 (en) * | 2023-04-11 | 2024-10-17 | Samsung Electronics Co., Ltd. | Systems and methods for processing functions in computational storage |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6625639B1 (en) * | 1999-10-20 | 2003-09-23 | International Business Machines Corporation | Apparatus and method for processing a task in a clustered computing environment |
US6990668B1 (en) * | 1999-10-20 | 2006-01-24 | International Business Machines Corporation | Apparatus and method for passively monitoring liveness of jobs in a clustered computing environment |
US7529820B2 (en) * | 2001-06-26 | 2009-05-05 | Landesk Software, Inc. | Method and apparatus to perform automated task handling |
US7089340B2 (en) * | 2002-12-31 | 2006-08-08 | Intel Corporation | Hardware management of java threads utilizing a thread processor to manage a plurality of active threads with synchronization primitives |
US9021502B2 (en) | 2008-12-29 | 2015-04-28 | Oracle America Inc. | Method and system for inter-thread communication using processor messaging |
CN102629221B (zh) * | 2012-02-28 | 2014-11-19 | 华为技术有限公司 | 用于分布式共享存储的任务同步方法、装置及系统 |
US20150024831A1 (en) | 2013-07-18 | 2015-01-22 | Rodney L. Paulson | Method, system and program product for contests involving prediction of decimals |
US9830206B2 (en) * | 2013-12-18 | 2017-11-28 | Cray Inc. | Cross-thread exception handling |
US9977609B2 (en) | 2016-03-07 | 2018-05-22 | Advanced Micro Devices, Inc. | Efficient accesses of data structures using processing near memory |
US11379242B2 (en) | 2017-06-29 | 2022-07-05 | Intel Corporation | Methods and apparatus for using load and store addresses to resolve memory dependencies |
WO2019089816A2 (en) | 2017-10-31 | 2019-05-09 | Micron Technology, Inc. | System having a hybrid threading processor, a hybrid threading fabric having configurable computing elements, and a hybrid interconnection network |
US10628072B2 (en) | 2018-08-21 | 2020-04-21 | Samsung Electronics Co., Ltd. | Scalable architecture enabling large memory system for in-memory computations |
US11550642B1 (en) | 2021-08-18 | 2023-01-10 | Micron Technology, Inc. | Mechanism to trigger early termination of cooperating processes |
-
2021
- 2021-08-18 US US17/405,233 patent/US11550642B1/en active Active
-
2022
- 2022-08-01 CN CN202280065734.0A patent/CN118119933A/zh active Pending
- 2022-08-01 WO PCT/US2022/039053 patent/WO2023022875A1/en active Application Filing
- 2022-11-10 US US17/984,817 patent/US11789790B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US11789790B2 (en) | 2023-10-17 |
WO2023022875A1 (en) | 2023-02-23 |
US11550642B1 (en) | 2023-01-10 |
US20230074452A1 (en) | 2023-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220206846A1 (en) | Dynamic decomposition and thread allocation | |
US11789790B2 (en) | Mechanism to trigger early termination of cooperating processes | |
CN118043815A (zh) | 调试数据流计算机架构 | |
CN118076944A (zh) | 可重新配置计算组构中的循环执行期间的数据存储 | |
CN117795496A (zh) | 可重新配置计算组构中的并行矩阵运算 | |
CN118043796A (zh) | 存储器计算系统中的基于片块的结果缓冲 | |
CN117581200A (zh) | 在分派期间从存储器加载数据 | |
CN117632256A (zh) | 用于处置多元件处理器中的断点的装置及方法 | |
CN117435545A (zh) | 用于请求计算系统中的原子操作的方法和系统 | |
CN117435549A (zh) | 用于硬件组件之间的通信的方法和系统 | |
CN118043792A (zh) | 提供事件消息的可靠接收的机制 | |
US20230056500A1 (en) | Chained resource locking | |
US11860800B2 (en) | Kernel mapping to nodes in compute fabric | |
CN118043790A (zh) | 高带宽收集高速缓存 | |
US20230058935A1 (en) | Managing return parameter allocation | |
CN117546133A (zh) | 缓解具有多个存储器控制器的系统上的存储器热点 | |
US20230055320A1 (en) | Loop execution in a reconfigurable compute fabric. | |
US11940928B2 (en) | Parking threads in barrel processor for managing cache eviction requests | |
US12038868B2 (en) | Context load mechanism in a coarse-grained reconfigurable array processor | |
US11861366B2 (en) | Efficient processing of nested loops for computing device with multiple configurable processing elements using multiple spoke counts | |
US12099402B2 (en) | Parking threads in barrel processor for managing hazard clearing | |
CN117632260A (zh) | 给异步事件排队以便在桶式处理器中执行的线程接受 | |
CN117435548A (zh) | 用于硬件组件之间的通信的方法和系统 | |
CN118043794A (zh) | 粗粒度可重新配置的架构中的连接性 |
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 |