存储器计算系统中的饱和本地高速缓存的制作方法

文档序号:30609976发布日期:2022-07-01 23:22阅读:182来源:国知局
存储器计算系统中的饱和本地高速缓存的制作方法
存储器计算系统中的饱和本地高速缓存
1.关于联邦资助研究或发展的声明
2.本发明是在政府支持下依据darpa授予的合同第hr0011-19-3-0002号完成的。政府享有本发明中的某些权利。
3.相关申请的交叉引用
4.本技术案要求2020年12月31日提交的美国专利申请案第63/132,799号的优先权益,所述申请案以全文引用的方式并入本文中。
技术领域
5.本技术案的实施例涉及存储器计算系统,确切地说,涉及存储器计算系统中的饱和本地高速缓存。


背景技术:

6.例如冯诺伊曼(von neumann)架构的各种计算机架构常规地使用用于数据的共享存储器、用于存取共享存储器的总线、算术单元以及程序控制单元。然而,在处理器与存储器之间移动数据可能需要大量时间和能量,这进而可能约束计算机系统的性能和容量。鉴于这些限制,需要新计算架构和装置来推动计算性能超出晶体管规模的实践(即,摩尔定律(moore's law))。


技术实现要素:

7.根据本公开的实施例,提供一种方法,且方法包括:在包含n个不同硬件节点的近存储器计算系统中的第一存储器计算节点处建立n块高速缓存,其中第一存储器计算节点为n个不同硬件节点中的一个,且其中n个不同硬件节点由计算结构耦合;以及对于来自第一存储器计算节点的用以从n个不同节点中的特定一个读取信息的每一初始请求,利用从n个不同节点中的特定一个接收到的边界信息填充高速缓存中的n个块中的对应一个,其中边界信息指示在由计算结构耦合的节点中的一些或全部的先前搜索期间是否发现n个不同节点中的特定一个的父对象。
8.根据本公开的实施例,提供一种设备,且设备包括近存储器计算系统中的多个存储器计算节点中的第一存储器计算节点,其中第一存储器计算节点包括处理器,所述处理器配置成执行包括以下各项的操作:建立n块软件高速缓存,其中n个块中的每一个对应于近存储器计算系统中的存储器计算节点中的相应一个;以及使用从近存储器计算系统中的相应存储器计算节点接收到的边界信息填充高速缓存中的相应块。
9.根据本公开的实施例,提供一种存储器计算系统,且存储器计算系统包括n个不同存储器计算节点,其由规模结构耦合以提供计算结构,其中n个节点中的每一个包括混合线程处理器和混合线程结构,其中n个不同存储器计算节点中的第一存储器计算节点包括配置成执行包括以下各项的操作的处理器:建立n块软件高速缓存,其中n个块中的每一个对应于由规模结构耦合的存储器计算节点中的相应一个;以及使用从相应节点接收到的边界
信息填充高速缓存中的相应块,其中边界信息指示在由混合线程结构耦合的节点中的一些或全部的先前搜索期间是否发现n个节点中的对应一个的父对象。
附图说明
10.为容易地识别对任何特定元件或动作的论述,附图标记中的一或多个最高有效数字指的是首次介绍所述元件的图号。
11.图1通常说明根据实施例的在存储器计算系统的上下文中的第一存储器计算装置的第一实例。
12.图2通常说明根据实施例的存储器计算装置的存储器子系统的实例。
13.图3通常说明根据实施例的用于存储器控制器的可编程原子单元的实例。
14.图4说明根据实施例的存储器计算装置的混合线程处理器(htp)加速器的实例。
15.图5说明根据实施例的存储器计算装置的混合线程结构(htf)的表示的实例。
16.图6a通常说明根据实施例的小芯片系统的实例。
17.图6b通常说明展示来自图6a的实例的小芯片系统中的各种组件的框图。
18.图7通常说明根据实施例的用于存储器计算装置的基于小芯片的实施方案的实例。
19.图8说明根据实施例的存储器计算装置小芯片的实例平铺(tiling)。
20.图9通常说明跨不同存储器计算装置分布的数据结构的实例。
21.图10通常说明跨不同存储器计算装置分布的数据结构的实例,且所述装置中的每一个包含饱和高速缓存。
22.图11通常说明将来自不同存储器计算装置的边界信息映射到相应不同饱和高速缓存的实例。
23.图12通常说明可包含建立及填充基于节点的饱和高速缓存的实例。
24.图13通常说明可包含使用来自本地高速缓存的信息来满足读取请求的实例。
25.图14说明实例机器的框图,可利用所述机器、在所述机器中或通过所述机器实施本文中所论述的任何一或多种技术(例如,方法)。
具体实施方式
26.可利用材料、装置和集成技术中的最新进展来提供以存储器为中心的计算拓扑。这类拓扑可实现例如用于受大小、重量或功率要求约束的应用的计算效率和工作负荷处理量的进展。拓扑可用于促进存储器或其它数据存储元件附近或内部的低时延计算。方法可尤其非常适合于利用稀疏查找的各种计算密集操作,例如在变换计算(例如,快速傅立叶变换计算(fft))中,或在例如神经网络或人工智能(ai)、财务分析或模拟或模型化的应用中,所述模拟或模型化例如用于计算流体动力学(cfd)、工程师用增强型声学模拟器(ease)、以集成电路为重心的模拟程序(spice)等。
27.本文中所论述的系统、装置和方法可包含或使用具有处理器或处理能力的存储器计算系统,所述处理器或处理能力提供于存储器或数据存储组件中、附近或与存储器或数据存储组件集成。这类系统在本文中通常被称为近存储器计算(compute-near-memory,cnm)系统。cnm系统可为基于节点的系统,其中系统中的个别节点使用系统规模结构耦合。
尤其在预期高高速缓存未命中速率的环境中,每一节点可包含或使用专用或通用处理器以及用户可存取加速器(具有用以促进密集操作的自定义计算结构)。
28.如下文更详细地论述,尤其相对于图9到图13,基于节点的cnm系统中的时延可能成问题。问题可包含在系统中的大量节点上有效地使用广度优先搜索(bfs)算法,例如其中每一节点可包含可由同一节点或由系统中的另一节点存取的本地存储器存储装置。本发明人已认识到,问题的解决方案可包含或使用每一节点处的专用饱和基于软件的高速缓存。举例来说,在bfs算法中,具有相对较高次数(degree)或具有最多“计数”的顶点的边界(frontier)在搜索期间可更有可能被存取。为改进性能,bfs算法的自下而上(bu)阶段可使用本地高速缓存(例如,系统中的每存储器计算装置的例如1024
×
64位字的软件实施的高速缓存)来存储对于对应于最高次数顶点的边界信息的远程存取的结果。举例来说,在第一节点处,高次数顶点中的一个的第一存取可从远程位置(即,远离第一节点的位置)读取要素,且接着将所述要素存储在第一节点处的本地高速缓存中。以此方式,从第一节点存取相同远程位置的后续尝试可由第一节点处的本地软件高速缓存满足,且由此有助于避免导致时延的远程存取活动。
29.在实例中,cnm系统中的每一节点可具有一或多个主机处理器。在每一节点内,专用混合线程处理器可占用芯片上网络的离散端点。混合线程处理器可对系统的特定节点中的存储器中的一些或全部进行存取,或混合线程处理器可经由系统规模结构对跨多个节点的网络的存储器进行存取。每一节点处的自定义计算结构或混合线程结构可具有其自身的处理器或加速器,且可在比混合线程处理器更高的带宽下操作。近存储器计算系统中的不同节点可不同地配置,例如具有不同计算能力、不同类型的存储器、不同接口或其它差异。然而,节点可共同耦合以共享所定义地址空间内的数据和计算资源。
30.在实例中,近存储器计算系统或系统内的节点可经用户配置以用于自定义操作。用户可使用高级编程语言(例如c/c++)来提供指令,所述高级编程语言可编译且直接映射到系统的或cnm系统中的一或多个节点的数据流架构中。也就是说,系统中的节点可包含硬件块(例如,存储器控制器、原子单元、其它客户加速器等),所述硬件块可配置成直接实施或支持用户指令以由此增强系统性能且减小时延。
31.在实例中,近存储器计算系统可尤其适合于实施指令和嵌套循环的层次结构(例如,两个、三个或更多个循环深度,或多维循环)。标准编译程序可用于接受高级语言指令,且进而直接编译到节点中的一或多个的数据流架构中。举例来说,系统中的节点可包含混合线程结构加速器。混合线程结构加速器可在cnm系统的用户空间中执行,且可发起其自身的线程或子线程,所述线程或子线程可并行地操作。每一线程可映射到不同循环迭代,由此支持多维循环。利用发起这类嵌套循环的能力以及其它能力,cnm系统可实现对计算密集操作的明显时间节省和时延改进。
32.近存储器计算系统或近存储器计算系统的节点或组件可包含或使用各种存储器装置、控制器和互连件等等。在实例中,系统可包括各种互连节点,且节点或节点群组可使用小芯片来实施。小芯片是用于集成各种处理功能性的新兴技术。通常,小芯片系统由集成在中介层上且封装在一起的离散芯片(例如,不同衬底或裸片上的集成电路(ic))构成。这种布置不同于单个芯片(例如,ic),所述单个芯片含有在一个衬底(例如,单个裸片)上的不同装置块(例如,知识产权(ip)块),例如芯片上系统(soc),或集成在板上的离散封装装置。
一般来说,小芯片提供相较于单个裸片芯片的生产效益,包含更高的良率或减少的开发成本。下文所论述的图6a和图6b通常说明例如可包括近存储器计算系统的小芯片系统的实例。
33.图1通常说明近存储器计算系统或cnm系统102的第一实例。cnm系统102的实例包含多个不同存储器计算节点,例如可各自包含各种近存储器计算装置。系统中的每一节点可在其自身的操作系统(os)域(例如,尤其是linux)中操作。在实例中,节点可共同地存在于cnm系统102的共同os域中。
34.图1的实例包含cnm系统102的第一存储器计算节点104的实例。cnm系统102可具有多个节点,例如包含使用规模结构106耦合的第一存储器计算节点104的不同例项。在实例中,cnm系统102的架构可支持使用规模结构106的具有多达n个不同存储器计算节点(例如,n=4096)的规模。如下文进一步论述,cnm系统102中的每一节点可以是多个装置的组件。
35.cnm系统102可包含用于系统中的各种节点的全局控制器,或系统中的特定存储器计算节点可任选地充当同一系统中的一或多个其它存储器计算节点的主机或控制器。cnm系统102中的各种节点可因此类似地或不同地配置。
36.在实例中,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格式等之间转换分组格式。
37.cnm系统102在本文中以各种实例配置(例如包括节点的系统)进行描述,且每一节点可包括各种芯片(例如,处理器、交换机、存储器装置等)。在实例中,cnm系统102中的第一存储器计算节点104可包含使用小芯片实施的各种芯片。在下文论述的cnm系统102的基于小芯片的配置中,小芯片间通信以及系统内的额外通信可使用cpi网络。本文中所描述的cpi网络为ctcpi的实例,也就是说,作为ctcpi的小芯片特定实施方案。因此,cpi的下文所描述的结构、操作和功能性可同等地适用于如可另外使用非基于小芯片的ctcpi实施方案来实施的结构、操作和功能。除非另外明确地指示,否则本文中cpi的任何论述同等地适用于ctcpi。
38.cpi接口包含分组网络,其支持虚拟信道以实现小芯片之间的灵活且高速交互,例如可包括第一存储器计算节点104或cnm系统102的部分。cpi可实现从小芯片内网络到较宽小芯片网络的桥接。举例来说,高级可扩展接口(axi)是用于芯片内通信的规范。然而,axi规范涵盖各种物理设计选项,例如物理信道的数目、信号定时、功率等。在单个芯片内,通常选择这些选项以满足设计目标,例如功率消耗、速度等。然而,为实现基于小芯片的存储器计算系统的灵活性,例如使用cpi的适配器可在可实施于各种小芯片中的各种axi设计选项
之间介接。通过利用分组化协议启用物理信道到虚拟信道映射且包封基于时间的信令,cpi可用于跨较宽小芯片网络(例如跨第一存储器计算节点104或跨cnm系统102)桥接(例如特定存储器计算节点内的)小芯片内网络。
39.cnm系统102可缩放以包含多节点配置。也就是说,可使用规模结构106耦合第一存储器计算节点104的或其它不同地配置的存储器计算节点的多个不同例项,以提供经缩放系统。存储器计算节点中的每一个可运行其自身的操作系统,且可配置成联合地协调系统宽资源使用。
40.在图1的实例中,第一存储器计算节点104的第一交换机110耦合到规模结构106。规模结构106可提供可促进不同存储器计算节点当中及之间的通信的交换机(例如,ctcpi交换机、pcie交换机、cpi交换机或其它交换机)。在实例中,规模结构106可有助于分区全局地址空间(pgas)中的各种节点通信。
41.在实例中,来自第一存储器计算节点104的第一交换机110耦合到一或多个不同存储器计算装置,例如包含第一存储器计算装置112。第一存储器计算装置112可包括基于小芯片的架构,其在本文中称为近存储器计算(cnm)小芯片。第一存储器计算装置112的封装版本可包含例如一或多个cnm小芯片。小芯片可使用ctcpi以通信方式耦合以用于高带宽和低时延。
42.在图1的实例中,第一存储器计算装置112可包含芯片上网络(noc)或第一noc118。通常,noc是装置内的互连网络,其连接特定端点集合。在图1中,第一noc 118可提供第一存储器计算装置112的各种存储器、计算资源和端口之间的通信及连接。
43.在实例中,第一noc 118可包括折叠式克洛斯(clos)拓扑,例如在存储器计算装置的每一例项内,或作为在节点中耦合多个存储器计算装置的网格。克洛斯拓扑供应各种益处,所述克洛斯拓扑例如可使用多个较小基数交叉开关以提供与较高基数交叉开关拓扑相关联的功能性。举例来说,克洛斯拓扑可跨noc呈现一致时延和对分带宽。
44.第一noc 118可包含各种不同交换机类型,包含集线交换机、边缘交换机和端点交换机。交换机中的每一个可构造为在输入与输出节点之间提供基本上均一的时延和带宽的交叉开关。在实例中,端点交换机和边缘交换机可包含两个单独交叉开关,一个交叉开关的流量去往集线交换机,且另一交叉开关的流量远离集线交换机。集线交换机可构造为将所有输入切换到所有输出的单个交叉开关。
45.在实例中,集线交换机可例如取决于特定集线交换机是否参与芯片间通信而各自具有多个端口(例如,各自四个或六个端口)。参与芯片间通信的集线交换机的数目可由芯片间带宽要求设置。
46.第一noc 118可支持计算元件与存储器之间的各种有效负荷(例如,8到64字节有效负荷;可类似地使用其它有效负荷大小)。在实例中,可针对相对较小有效负荷(例如,8到16字节)优化第一noc 118,以有效地处置对稀疏数据结构的存取。
47.在实例中,第一noc 118可经由第一物理层接口114、pcie从属模块116或端点以及pcie主模块126或根端口而耦合到外部主机。也就是说,第一物理层接口114可包含用以允许外部主机处理器耦合到第一存储器计算装置112的接口。外部主机处理器可例如使用pcie交换机或其它本机协议交换机任选地耦合到一或多个不同存储器计算装置。通过基于pcie的交换机与外部主机处理器的通信可将装置到装置通信限制于由交换机支持的装置
到装置通信。相比之下,例如使用ctcpi的通过存储器计算装置本机协议交换机的通信可允许不同存储器计算装置之间或当中的更完全通信,包含对分区全局地址空间的支持,例如用于产生工作线程及发送事件。
48.在实例中,ctcpi协议可由第一存储器计算装置112中的第一noc 118使用,且第一交换机110可包含ctcpi交换机。ctcpi交换机可允许ctcpi分组例如在不转换成另一分组格式的情况下从例如第一存储器计算装置112的源存储器计算装置传送到(例如,同一或另一节点上的)不同目的地存储器计算装置。
49.在实例中,第一存储器计算装置112可包含内部主机处理器122。内部主机处理器122可配置成例如使用内部pcie主模块126来与第一noc 118或第一存储器计算装置112的其它组件或模块通信,这可有助于消除将消耗时间和能量的物理层。在实例中,内部主机处理器122可基于risc-v isa处理器,且可使用第一物理层接口114来在第一存储器计算装置112外部传达,以便传达到第一存储器计算装置112的其它存储、联网或其它外围装置。内部主机处理器122可控制第一存储器计算装置112,且可充当用于操作系统相关功能性的代理。内部主机处理器122可包含相对较少数目的处理核心(例如,2到4个核心)和主机存储器装置124(例如,包括dram模块)。
50.在实例中,内部主机处理器122可包含pci根端口。在内部主机处理器122处于使用中时,其根端口中的一个可连接到pcie从属模块116。内部主机处理器122的根端口中的另一个可连接到第一物理层接口114,以便提供与外部pci外围装置的通信。在内部主机处理器122停用时,pcie从属模块116可耦合到第一物理层接口114以允许外部主机处理器与第一noc 118通信。在具有多个存储器计算装置的系统的实例中,第一存储器计算装置112可配置成充当系统主机或控制器。在这一实例中,内部主机处理器122可处于使用中,且相应其它存储器计算装置中的内部主机处理器的其它例项可停用。
51.内部主机处理器122可配置在第一存储器计算装置112的加电处,以便允许主机初始化。在实例中,内部主机处理器122和其相关联数据路径(例如,包含第一物理层接口114、pcie从属模块116等)可从输入引脚配置到第一存储器计算装置112。引脚中的一或多个可用于启用或停用内部主机处理器122且相应地配置pci(或其它)数据路径。
52.在实例中,第一noc 118可经由规模结构接口模块136和第二物理层接口138耦合到规模结构106。规模结构接口模块136或sif可促进第一存储器计算装置112与例如分区全局地址空间(pgas)的装置空间之间的通信。pgas可配置成使得例如第一存储器计算装置112的特定存储器计算装置可例如使用加载/存储范例存取不同存储器计算装置上的(例如,同一或不同节点上的)存储器或其它资源。可使用各种可缩放结构技术,包含ctcpi、cpi、gen-z、pci或经由cxl桥接的以太网。规模结构106可配置成支持各种分组格式。在实例中,规模结构106支持无序分组通信,或支持有序分组,例如可使用路径标识符以跨多个等效路径扩展带宽。规模结构106通常可支持远程操作,例如远程存储器读取、写入和其它内置原子、远程存储器原子、远程存储器计算装置发送事件以及远程存储器计算装置调用和返回操作。
53.在实例中,第一noc 118可耦合到一或多个不同存储器模块,例如包含第一存储器装置128。第一存储器装置128可包含各种类型的存储器装置,例如lpddr5或gddr6等等。在图1的实例中,第一noc 118可经由可专用于特定存储器模块的存储器控制器130协调与第
一存储器装置128的通信。在实例中,存储器控制器130可包含存储器模块高速缓存和原子操作模块。原子操作模块可配置成提供相对较高处理量的原子运算符,例如包含整数和浮点运算符。原子操作模块可配置成将其运算符应用于存储器模块高速缓存(例如,包括sram存储器侧高速缓存)内的数据,由此允许使用同一存储器位置的背对背原子操作,其具有最小处理量降级。
54.存储器模块高速缓存可提供用于频繁存取的存储器位置的存储,例如不必重新存取第一存储器装置128。在实例中,存储器模块高速缓存可配置成仅针对存储器控制器130的特定例项高速缓存数据。在实例中,存储器控制器130包含dram控制器,其配置成与例如包含dram装置的第一存储器装置128介接。存储器控制器130可提供存取调度和位错误管理,以及其它功能。
55.在实例中,第一noc 118可耦合到混合线程处理器(htp 140)、混合线程结构(htf142)以及主机接口和分派模块(hif 120)。hif 120可配置成促进对基于主机的命令请求队列和响应队列的存取。在实例中,hif 120可在htp 140或htf 142的处理器或计算元件上分派新执行线程。在实例中,hif 120可配置成跨htp 140模块和htf 142模块维持工作负荷平衡。
56.混合线程处理器或htp 140可包含加速器,例如可基于risc-v指令集。htp 140可包含高度线程化的事件驱动处理器,其中线程可在单个指令轮换中执行,以便维持高指令处理量。htp 140包括相对较少的自定义指令以支持低开销线程化能力、事件发送/接收和共享存储器原子运算符。
57.混合线程结构或htf 142可包含加速器,例如可包含非冯诺伊曼粗粒度可配置处理器。htf 142可针对高级语言操作和数据类型(例如,整数或浮点)而优化。在实例中,htf 142可支持数据流计算。htf 142可配置成例如在执行存储器界定计算内核时使用第一存储器计算装置112上可用的基本上所有存储器带宽。
58.cnm系统102的htp和htf加速器可使用各种高级结构化编程语言来编程。举例来说,htp和htf加速器可使用c/c++(例如使用llvm编译程序框架)来编程。htp加速器可例如通过各种附加自定义指令集来利用开放源编译程序环境,所述各种附加自定义指令集配置成改进存储器存取效率、提供消息传递机构以及管理事件等等。在实例中,htf加速器可设计成使用高级编程语言实现htf 142的编程,且编译程序可产生在htf 142硬件上运行的模拟器配置文件或二进制文件。htf 142可提供中级语言以用于精确且简明地表达算法,同时隐藏htf加速器自身的配置细节。在实例中,htf加速器工具链可使用llvm前端编译程序和llvm中间表示(ir)来与htf加速器后端介接。
59.图2通常说明根据实施例的存储器计算装置的存储器子系统200的实例。存储器子系统200的实例包含控制器202、可编程原子单元208和第二noc 206。控制器202可包含或使用可编程原子单元208来使用存储器装置204中的信息实行操作。在实例中,存储器子系统200包括来自图1的实例的第一存储器计算装置112的一部分,例如包含第一noc 118的或存储器控制器130的部分。
60.在图2的实例中,第二noc 206耦合到控制器202,且控制器202可包含存储器控制模块210、本地高速缓存模块212和内置原子模块214。在实例中,内置原子模块214可配置成处置相对简单的单循环整数原子。内置原子模块214可在与例如正常存储器读取或写入操
作相同的处理量下执行原子。在实例中,原子存储器操作可包含以下的组合:将数据存储到存储器,执行原子存储器操作,以及接着以从存储器加载数据来作出响应。
61.可提供例如可包含sram高速缓存的本地高速缓存模块212以有助于减小用于反复存取的存储器位置的时延。在实例中,本地高速缓存模块212可提供用于子存储器线存取的读取缓冲器。本地高速缓存模块212可尤其有利于具有相对较小或无数据高速缓存的计算元件。
62.例如可包含dram控制器的存储器控制模块210可提供低级请求缓冲和调度,以便提供对存储器装置204(例如可包含dram装置)的有效存取。在实例中,存储器装置204可包含或使用gddr6 dram装置,例如具有16gb密度和64gb/秒峰值带宽。可类似地使用其它装置。
63.在实例中,可编程原子单元208可包括单循环或多循环运算符,例如可配置成执行整数加法或更复杂的多指令操作,例如布隆过滤器(bloom filter)插入。在实例中,可编程原子单元208可配置成执行加载和存储到存储器操作。可编程原子单元208可配置成通过专用指令集利用risc-v isa,以促进与控制器202的交互来以原子方式执行用户定义的操作。
64.可经由第二noc 206和控制器202来将例如从节点上或节点外主机接收到的可编程原子请求路由到可编程原子单元208。在实例中,自定义原子操作(例如,由可编程原子单元208实行)可与内置原子操作(例如,由内置原子模块214实行)相同,不同之处在于可编程原子操作可由用户而非系统架构师定义或编程。在实例中,可编程原子请求分组可通过第二noc 206发送到控制器202,且控制器202可将请求识别为自定义原子。控制器202可接着将所识别请求转发到可编程原子单元208。
65.图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的实例。
66.在实例中,pau核心306为流水线处理器,使得不同指令的多个阶段在每时钟周期一起执行。pau核心306可包含桶形多线程处理器,其中线程控制304电路系统在每一时钟周期后在不同寄存器堆(例如,含有当前处理状态的寄存器集)之间切换。这实现了当前执行线程之间的高效上下文切换。在实例中,pau核心306支持八个线程,从而产生八个寄存器堆。在实例中,寄存器堆中的一些或全部不集成到pau核心306中,而是实际上驻留在本地数据高速缓存310或指令sram 308中。这通过消除用于这类存储器中的寄存器的传统触发器来减小pau核心306的电路复杂性。
67.本地pau存储器可包含指令sram 308,例如可包含用于各种原子的指令。指令包括用以支持各种应用加载的原子运算符的指令集。在例如由应用小芯片请求原子运算符时,对应于原子运算符的指令集由pau核心306执行。在实例中,可分区指令sram 308以建立指令集。在这一实例中,由请求过程请求的特定可编程原子运算符可通过分区号识别可编程原子运算符。在利用可编程原子单元302登记(例如,加载到其上)可编程原子运算符时,可
建立分区号。用于可编程指令的其它元数据可存储在可编程原子单元302本地的存储器中的存储器(例如,在分区表中)中。
68.在实例中,原子运算符操纵数据高速缓存310,在用于原子运算符的线程完成时,所述数据高速缓存310通常被同步(例如,刷新)。因此,除从例如存储器控制器314的外部存储器初始加载以外,在可编程原子运算符线程的执行期间,对于大多数存储器操作,时延可减小。
69.如果潜在的危险条件将阻止存储器请求,那么在执行线程尝试发出这类请求时,流水线处理器(例如pau核心306)可经历问题。此处,存储器请求是从存储器控制器314检索数据,无论其是来自存储器控制器314上的高速缓存还是裸片外存储器。为解决这一问题,pau核心306配置成拒绝对线程的存储器请求。通常,pau核心306或线程控制304可包含用以启用流水线中的一或多个线程重新调度点的电路系统。此处,拒绝发生在流水线中这些线程重新调度点之外(例如,之后)的点处。在实例中,危险发生在重新调度点之外。此处,在存储器请求指令通过可做出存储器请求的流水线阶段之前的最后一个线程重调度点之后,线程中的前一指令创建了危险。
70.在实例中,为拒绝存储器请求,pau核心306配置成确定(例如,检测)存储器请求中指示的存储器上存在危险。此处,危险表示允许(例如,执行)存储器请求将引起线程的不一致状态的任何条件。在实例中,危险是进行中的存储器请求。此处,无论数据高速缓存310是否包含所请求的存储器地址的数据,进行中的存储器请求的存在使得不确定数据高速缓存310中所述地址处的数据应该是什么。因此,线程必须等待进行中的存储器请求完成以对当前数据操作。在存储器请求完成时,清除危险。
71.在实例中,危险是数据高速缓存310中用于所请求的存储器地址的脏高速缓存线。虽然脏高速缓存线通常指示高速缓存中的数据为当前的且这类数据的存储器控制器版本不为当前的,但在并不从高速缓存操作的线程指令上可出现问题。这种指令的实例使用存储器控制器314的内置原子运算符或其它单独硬件块。在存储器控制器的上下文中,内置原子运算符可与可编程原子单元302分离,且并不对pau内部的数据高速缓存310或指令sram 308进行存取。如果高速缓存线为脏的,那么内置原子运算符将不对最新数据进行操作,直到数据高速缓存310刷新以使高速缓存与另一或裸片外存储器同步为止。这种相同情形可利用存储器控制器的其它硬件块(例如加密块、编码器等)发生。
72.图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。
73.在实例中,htp加速器400包含基于risc-v指令集的模块,且可包含相对较少数目的其它或额外自定义指令以支持低开销的具有线程化功能的混合线程(ht)语言。htp加速器400可包含高度线程化处理器核心,htp核心402,在所述htp核心402中或利用所述htp核心402,线程可在单个指令轮换中执行,以便维持高指令处理量。在实例中,线程可在其等待其它待决事件完成时暂停。这可允许计算资源有效地用于相关工作,而不是轮询。在实例
中,多线程障碍同步可使用有效htp到htp和htp到/从主机消息传送,例如可允许数千线程在例如数十个时钟周期中初始化或唤醒。
74.在实例中,分派接口414可包括用于处置基于硬件的线程管理的htp加速器400的功能块。也就是说,分派接口414可管理对htp核心402或其它加速器的工作的分派。然而,非htp加速器通常不能够分派工作。在实例中,从主机分派的工作可使用驻留在例如主机主存储器(例如,基于dram的存储器)中的分派队列。另一方面,从htp加速器400分派的工作可使用驻留于sram中的分派队列,例如在用于特定节点内的目标htp加速器400的分派内。
75.在实例中,htp核心402可包括代表线程执行指令的一或多个核心。也就是说,htp核心402可包含指令处理块。htp核心402可进一步包含或可耦合到线程控制器412。线程控制器412可针对htp核心402内的每一活动线程提供线程控制和状态。数据高速缓存406可包含用于主机处理器(例如,用于本地和远程存储器计算装置,包含用于htp核心402)的高速缓存,且指令高速缓存404可包含供htp核心402使用的高速缓存。在实例中,数据高速缓存406可配置成用于读取和写入操作,且指令高速缓存404可配置成用于仅读取操作。
76.在实例中,数据高速缓存406为每硬件线程提供的小高速缓存。数据高速缓存406可临时存储供拥有线程使用的数据。数据高速缓存406可由htp加速器400中的硬件或软件管理。举例来说,硬件可配置成在加载和存储操作由htp核心402执行时视需要自动地分配或逐出线。例如使用risc-v指令的软件可确定应高速缓存哪一存储器存取,以及线应失效或写回到其它存储器位置的时间。
77.在htp加速器400上进行数据高速缓存具有各种益处,包含使存储器控制器的存取更有效,从而允许执行线程避免停滞。然而,在使用高速缓存时存在导致低效率的情形。实例包含其中仅存取数据一次的存取,且导致高速缓存线的颠簸(thrashing)。为有助于解决这一问题,htp加速器400可使用自定义加载指令集来促使加载指令检查高速缓存命中,且在高速缓存未命中时发出对所请求操作数的存储器请求且不将所获得数据放置在数据高速缓存406中。因此,htp加速器400包含各种不同类型的加载指令,包含非高速缓存和高速缓存线加载。如果脏数据存在于高速缓存中,那么非高速缓存的加载指令使用高速缓存的数据。非高速缓存的加载指令忽略高速缓存中的干净数据,且并不将所存取数据写入到数据高速缓存。对于高速缓存线加载指令,可将完整数据高速缓存线(例如,包括64字节)从存储器加载到数据高速缓存406中,且可将所寻址存储器加载到指定寄存器中。如果干净或脏数据处于数据高速缓存406中,那么这些加载可使用高速缓存的数据。如果所参考存储器位置不处于数据高速缓存406中,那么可从存储器存取整个高速缓存线。在参考循序存储器位置(例如存储器复制操作)时,高速缓存线加载指令的使用可减少高速缓存未命中,但如果不使用所参考存储器数据,那么还可浪费noc接口416处的存储器和带宽。
78.在实例中,htp加速器400包含非高速缓存的自定义存储指令。非高速缓存的存储指令可有助于利用并未循序地写入到存储器的写入数据来避免使数据高速缓存406颠簸。
79.在实例中,htp加速器400进一步包含转换块408。转换块408可包含用于存储器计算装置的本地存储器的虚拟到物理转换块。举例来说,例如htp核心402中的主机处理器可执行加载或存储指令,且指令可产生虚拟地址。可例如使用来自转换块408的转换表来将虚拟地址转换为主机处理器的物理地址。举例来说,存储器接口410可包含htp核心402与noc接口416之间的接口。
80.图5说明根据实施例的存储器计算装置的混合线程结构(htf)或htf 500的表示的实例。在实例中,htf 500可包含或包括来自图1的实例的htf 142。htf 500为粗粒度可配置计算结构,其可针对高级语言操作数类型和运算符(例如,使用c/c++或其它高级语言)而优化。在实例中,htf 500可包含互连硬化simd算术单元的可配置n位宽(例如,512位宽)数据路径。
81.在实例中,htf 500包括htf集群502,其包含多个htf拼片,包含实例拼片504或拼片(tile)n。每一htf拼片可包含具有本地存储器和算术功能的一或多个计算元件。举例来说,每一拼片可包含具有对整数和浮点操作的支持的计算流水线。在实例中,数据路径、计算元件和其它基础结构可实施为硬化ip以提供最大性能,同时使功率消耗和重新配置时间最小化。
82.在图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和sf out n+2的端口)耦合到相同或其它拼片。在这一实例中,各种拼片的有序名称列表是拼片的定位的概念指示。在其它实例中,包括htf集群502的拼片可布置在栅格或其它配置中,其中每一拼片类似地耦合到其在栅格中的最接近相邻者中的一个或几个。设置在集群的边缘处的拼片可任选地具有较少与相邻拼片的连接。举例来说,拼片n-2或图5的实例中的基础拼片510可仅耦合到相邻拼片512(拼片n-1)且耦合到实例拼片504(拼片n)。可类似地使用较少或额外拼片间连接。
83.htf集群502可进一步包含存储器接口模块,其包含第一存储器接口模块506。存储器接口模块可将htf集群502耦合到noc,例如第一noc 118。在实例中,存储器接口模块可允许集群内的拼片对存储器计算系统中(例如系统中的相同或不同节点中)的其它位置作出请求。也就是说,htf 500的表示可包括可跨多个节点分布的更大结构的一部分,例如在节点中的每一个处具有一或多个htf拼片或htf集群。可在更大结构的上下文内的拼片或节点之间作出请求。
84.在图5的实例中,使用同步结构(sf)耦合htf集群502中的拼片。同步结构可提供htf集群502中的特定拼片与其相邻拼片之间的通信,如上文所描述。每一htf集群502可进一步包含异步结构(af),所述异步结构可提供例如集群中的拼片、集群中的存储器接口以及集群中的分派接口508当中的通信。
85.在实例中,同步结构可交换包含数据和控制信息的消息。控制信息除其它事项之外还可包含指令ram地址信息或线程标识符。控制信息可用于设置数据路径,且可选择数据消息字段作为路径的源。通常,可较早地提供或接收控制字段,使得其可用于配置数据路径。举例来说,为有助于最小化通过拼片中的同步域流水线的任何延迟,控制信息可在数据字段之前若干时钟周期到达拼片。可提供各种寄存器以有助于协调流水线中的数据流定时。
86.在实例中,htf集群502中的每一拼片可包含多个存储器。每一存储器可具有与数据路径相同的宽度(例如,512位),且可具有例如介于512到1024个要素范围内的指定深度。
拼片存储器可用于存储支持数据路径操作的数据。举例来说,所存储的数据可包含作为内核的集群配置的部分加载的常量,或可包含计算为数据流的部分的变量。在实例中,拼片存储器可作为来自另一同步域的数据传送而从异步结构写入,或可包含例如由另一同步域发起的加载操作的结果。可经由同步域中的同步数据路径指令执行读取拼片存储器。
87.在实例中,htf集群502中的每一拼片可具有专用指令ram(inst ram)。在具有十六个拼片的htf集群502以及具有六十四个条目的指令ram例项的实例中,集群可允许利用多达1024个乘法移位(multiply-shift)和/或alu操作映射算法。各种拼片可例如使用同步结构任选地一起流水线化,以允许利用最小存储器存取的数据流计算,因此使时延最小化且减小功率消耗。在实例中,异步结构可允许存储器参考与计算并行地继续进行,由此提供更有效的流式传输内核。在实例中,各种拼片可包含对基于循环的构造的内置支持,且可支持嵌套循环内核。
88.同步结构可允许多个拼片流水线化,例如不需要数据队列。参与同步域的拼片可例如充当单个流水线化数据路径。同步域的第一或基础拼片(例如,拼片n-2,在图5的实例中)可通过流水线化拼片发起工作线程。基础拼片可负责在本文中称为辐条计数(spoke count)的预定义节拍(cadence)上开始工作。举例来说,如果辐条计数为3,那么基础拼片可每隔两个时钟周期发起工作。
89.在实例中,同步域包括htf集群502中的已连接拼片集合。线程的执行可在域的基础拼片处开始,且可经由同步结构从基础拼片前进到同一域中的其它拼片。基础拼片可提供待针对第一拼片执行的指令。第一拼片可默认地提供用于待执行的另一已连接拼片的相同指令。然而,在一些实例中,基础拼片或后续拼片可条件性地指定或使用替代指令。替代指令可通过使拼片的数据路径产生布尔(boolean)条件值来选择,且接着可使用布尔值来在当前拼片的指令集与交替指令之间进行选择。
90.异步结构可用于执行相对于同步域异步地发生的操作。htf集群502中的每一拼片可包含到异步结构的接口。入接口可包含例如fifo缓冲器或队列(例如,af in queue),以针对无法立即处理的消息提供存储。类似地,异步结构的出接口可包含fifo缓冲器或队列(例如,af out queue),以针对无法立即发出的消息提供存储。
91.在实例中,异步结构中的消息可分类为数据消息或控制消息。数据消息可包含写入到拼片存储器0(mem_0)或存储器1(mem_1)的simd宽度数据值。控制消息可配置成控制线程创建、释放资源或发出外部存储器参考。
92.htf集群502中的拼片可执行用于htf的各种计算操作。可通过配置拼片内的数据路径来执行计算操作。在实例中,拼片包含执行用于拼片的计算操作的两个功能块:乘法和移位操作块(ms op)以及算术、逻辑和位操作块(alb op)。两个块可配置成执行流水线操作,例如乘法和相加,或移位和相加等等。
93.在实例中,系统中的存储器计算装置的每一例项可具有用于其运算符块(例如,ms op和alb op)的完整支持指令集。在这种情况下,可跨系统中的所有装置实现二进制兼容性。然而,在一些实例中,可有助于维持基础功能性集合和任选指令集类别,以便满足各种设计折衷,例如裸片大小。方法可与risc-v指令集具有基础集合和多个任选指令子集的方式类似。
94.在实例中,实例拼片504可包含辐条ram。辐条ram可用于指定哪一输入(例如,来自
四个sf拼片输入和基础拼片输入当中)为用于每一时钟周期的主输入。辐条ram读取地址输入可起源于从零计数到辐条计数减去一的计数器。在实例中,不同辐条计数可用于例如同一htf集群502内的不同拼片,以允许由内循环使用的数个图块或独特拼片例项确定特定应用程序或指令集的性能。在实例中,辐条ram可指定同步输入将写入到拼片存储器的时间,例如使用用于特定拼片指令的多个输入以及输入中的一个在其它输入之前到达的时间。较早到达输入可写入到拼片存储器,且可稍后在所有输入可用时读取。在这一实例中,拼片存储器可存取为fifo存储器,且fifo读取和写入指针可存储在拼片存储器中的基于寄存器的存储器区或结构中。
95.图6a和图6b通常说明可用于实施cnm系统102的一或多个方面的小芯片系统的实例。如上文类似地提及,cnm系统102中的节点或cnm系统102中的节点内的装置可包含基于小芯片的架构或近存储器计算(cnm)小芯片。封装的存储器计算装置可包含例如一个、两个或四个cnm小芯片。小芯片可使用高带宽、低时延互连件(例如使用cpi接口)互连。通常,小芯片系统由离散模块(各自被称为“小芯片”)构成,所述离散模块集成在中介层上,并且在许多实例中视需要通过一或多个已建立网络互连,以向系统提供所要功能性。中介层和所包含的小芯片可封装在一起,以便于与较大系统的其它组件互连。每一小芯片可包含一或多个个别集成电路(ic)或“芯片”,其可能与离散电路组件组合,且可耦合到相应衬底以便于附接到中介层。系统中的大多数或所有小芯片可个别地配置成用于通过已建立的网络进行通信。
96.小芯片作为系统的个别模块的配置不同于在单个芯片上实施的这类系统,所述单个芯片含有在一个衬底(例如,单个裸片)上的不同装置块(例如,知识产权(ip)块),例如芯片上系统(soc),或集成在印刷电路板(pcb)上的多个离散封装装置。一般来说,小芯片提供比离散封装装置更好的性能(例如,更低的功率消耗、减小的时延等),并且小芯片提供比单裸片芯片更大的生产效益。这些生产效益可包含更高的良率或减少的开发成本和时间。
97.小芯片系统可包含例如一或多个应用(或处理器)小芯片和一或多个支持小芯片。此处,应用小芯片与支持小芯片之间的区别只是对小芯片系统可能的设计情境的参考。因此,举例来说,合成视觉小芯片系统可包含(仅借助于实例)用以产生合成视觉输出的应用小芯片,以及例如存储器控制器小芯片、传感器接口小芯片或通信小芯片等支持小芯片。在典型的用例中,合成视觉设计者可设计应用小芯片并且从其它方获取支持小芯片。因此,由于避免设计和生产支持小芯片中所体现的功能性,因此减少了设计支出(例如,在时间或复杂性方面)。
98.小芯片还支持原本可能很困难的ip块紧密集成,例如使用不同处理技术或使用不同特征大小(或利用不同的接触技术或间距)制造的ip块。因此,可以模块化方式组装具有不同物理、电气或通信特性的多个ic或ic组件,以提供具有所要功能的组件。小芯片系统还可促进调适以适应将并入有小芯片系统的不同较大系统的需要。在实例中,ic或其它组件可针对特定功能的功率、速度或热量产生而优化,如同传感器可能发生的情况一样,相比于在单个裸片上尝试与其它装置集成,所述ic或其它组件可更容易地与其它装置集成。另外,通过减小裸片的整体大小,小芯片的良率往往高于更复杂的单个裸片装置的良率。
99.图6a和图6b通常说明根据实施例的小芯片系统的实例图6a是安装在外围板604上的小芯片系统602的表示,所述外围板604可例如通过外围组件互连高速(pcie)连接到更广
泛的计算机系统。小芯片系统602包含封装衬底606、中介层608和四个小芯片,应用小芯片610、主机接口小芯片612、存储器控制器小芯片614和存储器装置小芯片616。其它系统可包含许多额外小芯片以提供额外功能,如将从以下论述中显而易见。小芯片系统602的封装以封盖或盖板618说明,但可使用用于小芯片系统的其它封装技术和结构。图6b是出于清楚起见标记小芯片系统中的组件的框图。
100.应用小芯片610说明为包含用以支持用于小芯片间通信的小芯片网络622的小芯片系统noc 620。在实例实施例中,小芯片系统noc 620可包含于应用小芯片610上。在实例中,可响应于选定的支持小芯片(例如,主机接口小芯片612、存储器控制器小芯片614和存储器装置小芯片616)而定义来自图1的实例的第一noc 118,因此使得设计者选择用于小芯片系统noc 620的适当数目或小芯片网络连接或交换机。在实例中,小芯片系统noc 620可位于单独小芯片上或中介层608内。在如本文中所论述的实例中,小芯片系统noc 620实施小芯片协议接口(cpi)网络。
101.在实例中,小芯片系统602可包含或包括第一存储器计算节点104或第一存储器计算装置112的一部分。也就是说,第一存储器计算装置112的各种块或组件可包含可安装于外围板604、封装衬底606和中介层608上的小芯片。第一存储器计算装置112的接口组件通常可包括主机接口小芯片612,第一存储器计算装置112的存储器和存储器控制相关组件通常可包括存储器控制器小芯片614,第一存储器计算装置112的各种加速器和处理器组件通常可包括应用小芯片610或其例项等。
102.例如可用于系统中的小芯片之间或当中的通信的cpi接口为分组网络,其支持虚拟信道以实现小芯片之间的灵活且高速交互。cpi实现了从小芯片内网络到小芯片网络622的桥接。举例来说,高级可扩展接口(axi)为设计芯片内通信的广泛使用的规范。然而,axi规范涵盖大量的物理设计选项,例如物理信道的数目、信号定时、功率等。在单个芯片内,通常选择这些选项以满足设计目标,例如功率消耗、速度等。然而,为了实现小芯片系统的灵活性,使用如cpi等适配器在可实施于各种小芯片中的各种axi设计选项之间介接。通过实现物理信道到虚拟信道的映射且利用分组化协议包封基于时间的信令,cpi跨小芯片网络622桥接小芯片内网络。
103.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单元。
104.在实例中,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位接口标识符。
105.aib将堆叠的一组aib信道定义为aib信道列。aib信道列具有一定数目个aib信道,外加辅助信道。辅助信道含有用于aib初始化的信号。列内的所有aib信道(辅助信道除外)具有相同配置(例如,全部为tx、全部为rx,或一半为tx且一半为rx,以及具有相同数目的数据i/o信号)。在实例中,以邻近于aux信道的aib信道开始,以连续递增次序对aib信道编号。与aux相邻的aib信道被定义为aib信道零。
106.通常,个别小芯片上的cpi接口可包含串行化-反串行化(serdes)硬件。serdes互连非常适用于需要高速信令和低信号计数的情境。然而,对于复用和解复用、错误检测或校正(例如,使用块级循环冗余检查(crc))、链路级重试或前向错误校正,serde可能会引起额外的功率消耗和更长的时延。然而,当低时延或能量消耗为超短距离小芯片到小芯片互连的主要关注点时,可利用时钟速率允许以最少时延进行数据传送的并行接口。cpi包含用于使这些超短距离小芯片互连的时延和能量消耗两者最小化的元件。
107.对于流控制,cpi采用基于信用的技术。例如应用小芯片610的接收方向例如存储器控制器小芯片614的发送方提供表示可用缓冲器的信用。在实例中,cpi接收方包含用于给定发射时间单位的每一虚拟信道的缓冲器。因此,如果cpi接收方在时间上支持五个消息和单个虚拟信道,那么接收方具有布置成五行的五个缓冲器(例如,每一单位时间一行)。如果支持四个虚拟信道,那么接收方具有布置成五行的二十个缓冲器。每一缓冲器保持一个cpi分组的有效负荷。
108.当发送方向接收方进行发射时,发送方基于发射而使可用信用递减。一旦接收方的所有信用已消耗,发送方就停止向接收方发送包。这确保接收方始终具有可用缓冲器以存储发射。
109.在接收方处理接收到的分组并释放缓冲器时,接收方将可用缓冲空间传送回到发送方。接着,发送方可使用此信用返回以允许发射额外信息。
110.图6a的实例包含在不需要小芯片系统noc 620的情况下使用直接小芯片到小芯片技术的小芯片网状网络624。小芯片网状网络624可在cpi或另一小芯片到小芯片协议中实施。小芯片网状网络624通常实现小芯片流水线,其中一个小芯片充当到流水线的接口,而流水线接口中的其它小芯片仅与自身介接。
111.另外,还可使用专用装置接口来将装置连接到小芯片,所述专用装置接口例如一或多个行业标准存储器接口(例如,同步存储器接口,例如ddr5、ddr6)。小芯片系统或个别小芯片到外部装置的连接(例如,较大系统可通过所要接口(例如,pcie接口)。在实例中,可通过主机接口小芯片612实施这种外部接口,在所描绘的实例中,所述主机接口小芯片提供小芯片系统外部的pcie接口。当行业中的惯例或标准已经汇聚在这类专用小芯片接口626上时,通常采用这类接口。将存储器控制器小芯片614连接到动态随机存取存储器(dram)存
储器装置小芯片616的双数据速率(ddr)接口的所说明实例就是这种行业惯例。
112.在多种可能的支持小芯片中,存储器控制器小芯片614很可能存在于小芯片系统中,这是因为几乎无所不在地使用存储设备来进行计算机处理以及存储器装置的复杂的当前技术发展水平。因此,使用通过其它技术产生的存储器装置小芯片616和存储器控制器小芯片614使小芯片系统设计者能够获得由成熟生产商生产的稳健产品。通常,存储器控制器小芯片614提供用以读取、写入或擦除数据的存储器装置特定的接口。通常,存储器控制器小芯片614可提供额外功能,例如错误检测、错误校正、维护操作或原子运算符执行。对于一些类型的存储器,维护操作往往特定于存储器装置小芯片616,例如nand快闪或存储类存储器中的垃圾收集、nand快闪存储器中的温度调整(例如,交叉温度管理)。在实例中,维护操作可包含逻辑到物理(l2p)映射或管理,以在数据的物理与逻辑表示之间提供间接层级。在例如dram的其它类型的存储器中,例如刷新的一些存储器操作可在某些时间由主机处理器或存储器控制器控制,且在其它时间由dram存储器装置或与一或多个dram装置相关联的逻辑控制,所述逻辑例如接口芯片(在实例中,缓冲器)。
113.原子运算符是例如可由存储器控制器小芯片614执行的数据操纵。在其它小芯片系统中,可由其它小芯片执行原子运算符。举例来说,可由应用小芯片610在命令中指定“增量”的原子运算符,所述命令包含存储器地址且可能包含增量值。在接收到命令后,存储器控制器小芯片614从指定存储器地址检索数字,使所述数字递增命令中所指定的量,并且存储结果。在成功完成后,存储器控制器小芯片614向应用小芯片610提供命令成功的指示。原子运算符避免了跨小芯片网状网络624传输数据,从而减少执行这类命令的时延。
114.原子运算符可分类为内置原子或可编程(例如,自定义)原子。内置原子是在硬件中不变地实施的一组有限的操作。可编程原子是可在存储器控制器小芯片614的可编程原子单元(pau)(例如,自定义原子单元(cau))上执行的小程序。
115.存储器装置小芯片616可为或包含易失性存储器装置或非易失性存储器的任何组合。易失性存储器装置的实例包含但不限于随机存取存储器(ram),例如dram、同步dram(sdram)、图形双数据速率类型6sdram(gddr6 sdram)等等。非易失性存储器装置的实例包含但不限于与非(nand)型快闪存储器、存储类存储器(例如,相变存储器或基于忆阻器的技术)、铁电ram(feram)等等。所说明实例包含作为小芯片的存储器装置小芯片616,然而,装置可驻留在其它地方,例如在外围板604上的不同封装中。对于许多应用程序,可提供多个存储器装置小芯片。在实例中,这些存储器装置小芯片可各自实施一或多个存储技术,且可包含集成计算主机。在实例中,存储器小芯片可包含不同技术的多个堆叠存储器裸片,例如一或多个静态随机存取存储器(sram)装置与一或多个动态随机存取存储器(dram)装置堆叠或以其它方式通信。在实例中,存储器控制器小芯片614可用于协调小芯片系统602中的多个存储器小芯片之间的操作,例如,在一或多个层级的高速缓存存储区中使用一或多个存储器小芯片,且使用一或多个额外存储器小芯片作为主存储器。小芯片系统602可包含多个存储器控制器小芯片614例项,如可用于为单独主机、处理器、传感器、网络等提供存储器控制功能。例如所说明系统中的小芯片架构在允许适应不同存储器存储技术方面提供优点;并且通过更新的小芯片配置提供不同的存储器接口,例如无需重新设计系统结构的其余部分。
116.图7通常说明根据实施例的用于存储器计算装置的基于小芯片的实施方案的实
例。实例包含具有四个近存储器计算或cnm、小芯片的实施方案,且cnm小芯片中的每一个可包含或包括来自图1的实例的第一存储器计算装置112或第一存储器计算节点104的部分。各种部分自身可包含或包括相应小芯片。基于小芯片的实施方案可包含或使用基于cpi的系统内通信,如上文在来自图6a和图6b的实例小芯片系统602中类似地论述。
117.图7的实例包含第一cnm封装700,其包括多个小芯片。第一cnm封装700包含耦合到cnm noc集线器710的第一小芯片702、第二小芯片704、第三小芯片706和第四小芯片708。第一到第四小芯片中的每一个可包括相同或基本上相同的组件或模块的例项。举例来说,小芯片可各自包含用于存取内部或外部存储器的htp加速器、htf加速器和存储器控制器的相应例项。
118.在图7的实例中,第一小芯片702包含耦合到cnm noc集线器710的第一noc集线器边缘714。第一cnm封装700中的其它小芯片类似地包含noc集线器边缘或端点。noc集线器边缘中的交换机促进经由cnm noc集线器710的小芯片内或小芯片内系统通信。
119.第一小芯片702可进一步包含一或多个存储器控制器716。存储器控制器716可对应于与第一noc集线器边缘714介接的相应不同noc端点交换机。在实例中,存储器控制器716包括存储器控制器小芯片614或包括存储器控制器130,或包括存储器子系统200或其它存储器计算实施方案。存储器控制器716可耦合到相应不同存储器装置,例如包含第一外部存储器模块712a或第二外部存储器模块712b。外部存储器模块可包含例如可选择性地由系统中的相应不同小芯片存取的gddr6存储器。
120.第一小芯片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。
121.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耦合到的装置可构成共同全局地址空间。
122.在图7的实例中,第一cnm封装700包含主机接口724(hif)和主机处理器(r5)。主机接口724可对应于例如来自图1的实例的hif 120。主机处理器或r5可对应于来自图1的实例的内部主机处理器122。主机接口724可包含用于将第一cnm封装700耦合到其它外部装置或系统的pci接口。在实例中,工作可通过主机接口724在第一cnm封装700或第一cnm封装700内的拼片集群上发起。举例来说,主机接口724可配置成命令个别htf拼片集群(例如在第一cnm封装700中的各种小芯片当中)进入及退出功率/时钟门模式。
123.图8说明根据实施例的存储器计算装置的实例平铺。在图8中,平铺的小芯片实例800包含小芯片的四个不同近存储器计算集群的例项,其中集群耦合在一起。近存储器计算小芯片的每一例项自身可包含一或多个构成小芯片(例如,主机处理器小芯片、存储器装置
小芯片、接口小芯片等)。
124.平铺的小芯片实例800包含来自图7的实例的第一cnm封装700的例项作为其近存储器计算(cnm)集群的中一或多个。举例来说,平铺的小芯片实例800可包含第一cnm集群802,其包含第一小芯片810(例如,对应于第一小芯片702)、第二小芯片812(例如,对应于第二小芯片704)、第三小芯片814(例如,对应于第三小芯片706)和第四小芯片816(例如,对应于第四小芯片708)。第一cnm集群802中的小芯片可耦合到共同noc集线器,其进而可耦合到一或多个相邻集群中的(例如,第二cnm集群804或第四cnm集群808中的)noc集线器。
125.在图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,等等。
126.在实例中,平铺的小芯片实例800中的近存储器计算小芯片中的一个可包含主机接口(例如,对应于来自图7的实例的主机接口724),其负责跨平铺的小芯片实例800的工作负荷平衡。主机接口可促进例如从平铺的小芯片实例800外部对基于主机的命令请求队列和响应队列的存取。主机接口可在平铺的小芯片实例800中的近存储器计算小芯片中的一或多个中使用混合线程处理器和混合线程结构来分派新执行线程。
127.本发明人尤其已认识到,待解决的问题包含例如在执行存储器存取时减小计算系统中的时延。问题可进一步包含在大量节点上有效地使用广度优先搜索(bfs)算法,其中每一节点可包含可由系统中的同一节点或由一或多个其它节点存取的本地存储器存储装置。
128.本发明人已认识到,时延问题的解决方案可包含或使用用于每一节点的高速缓存。举例来说,在bfs算法中,具有相对较高次数或具有最多“计数”的顶点的边界在搜索期间可更有可能被存取。为改进性能,算法的自下而上(bu)阶段可使用本地高速缓存来存储对于对应于最高次数顶点的边界信息的远程存取的结果。在实例中,可存在系统中的每存储器计算装置的例如1024
×
64位字的软件实施的高速缓存。在bu迭代开始时,高速缓存可为空的。在第一节点处,执行期间的高次数要素中的一个的第一存取可从远程位置(即,远离第一节点的位置)读取要素,且接着将所述要素存储在第一节点处的本地高速缓存中。以此方式,从第一节点或第一存储器计算装置对同一远程位置的后续存取可替代地由第一节点的本地高速缓存满足,且可因此减小或消除导致时延的远程存取活动。
129.本发明人已认识到,可通过围绕节点本地请求进行组织来减小在许多节点上使用bfs算法的系统中的时延。通过利用bfs算法的数据结构的数据布局以及针对每一节点(例如针对第一1k所提取请求)建立相对较小饱和高速缓存,可实现对带宽利用的明显差异。相对较小的饱和高速缓存可有助于例如在无需在每一迭代上完全重新加载的情况下将许多远程请求转换成本地请求。
130.可存在与饱和高速缓存的使用相关联的各种益处。通过高速缓存高次数的远程节点的边界位或边界信息,未来请求变为本地的且具有相对较高命中速率。饱和设计可相对简单,因为例如仅将从相邻存储器计算装置接收到的前几个字(例如,1024个字)键入在高速缓存中。在实例中,高速缓存可为静态,即,无逐出策略,且可避免在高速缓存平衡上花费
执行时间。此外,在给定高速缓存结构的情况下,无需在执行开始时重新加载所有边界信息。这可由于可较早地(例如在提取所有边界信息之前)触发bu较早终止条件而有助于节省计算资源和时间。
131.广度优先搜索或bfs可表示跨越计算图形以识别节点和来自开始源节点的连接性级别的数据密集工作负荷。在cnm系统102的上下文中,图形可包括作为顶点的各种第一存储器计算节点104和作为图形中的边缘的节点之间的规模结构106。
132.由bfs呈现的挑战尤其包含远程存储器存取与本地存储器存取的比与所使用的节点的数目成比例地增长,其中平均时延和网络处理量要求对应地增大。因此,传统集群展示具有增大的节点计数的较差可缩放性。此外,使用许多并行线程来掩蔽时延需要大量系统处理量。另外,可存在对相同位置(热点样)的许多存储器参考。存储器存取图案可为数据相依的,且数据参考可为随机的,由此呈现数据预提取相对无用。此外,归因于与待进行的工作的不精确估计耦合的工作单元的大变化,工作的平衡分布可具有挑战性。
133.这些和其它挑战的解决方案可包含使用混合bfs实施方案。各种数据结构可用于混合bfs实施方案,所述混合bfs实施方案使用自下而上和自上而下方法。在实例中,可使用邻近度列表来表示搜索图形。对于图形中的每一顶点(例如,对应于cnm系统102中的特定节点),对应相邻者索引列表可包含其连接到的所有顶点的顶点数。在设置期间,每一顶点的相邻者的数目可经计算且存储在次数列表中。次数列表可因此表示图形中的节点的连接性。父对象列表(parent list)可包含搜索的结果。举例来说,源顶点的父对象(parent)为自身,且其为搜索的层级0处的唯一顶点。对于后续层级,且对于其中父值(parent value)先前未更新的每一顶点,如果存在先前层级中经更新的一或多个相邻者,那么父值更新以含有相邻者中的一个的顶点数。在实例中,边界位图可包含关于在搜索的先前层级期间是否发现给定顶点的父对象的信息。在实例中,可仅针对搜索的自下而上迭代的持续时间读取边界位图。
134.图9通常说明跨不同存储器计算装置分布的数据结构的实例。举例来说,图9展示可包括n节点近存储器计算系统(例如cnm系统102)的一部分的多个不同节点。图9包含第一节点902(node_0)、第二节点904(node_1)和第n节点906(node_n-1)。可类似地使用较少或额外节点。节点可配置成使用例如规模结构106的结构来通信,以便满足起源于系统中的节点中的一个处的读取和写入请求。
135.在实例中,归因于例如使用cnm系统102的节点集群上的计算的分布性质,数据可根据图9中的表示而放置或分布。相邻者索引列表、次数列表、父对象列表和边界的分配可跨系统中的所有节点均匀地分布为分段式向量。分段式向量可为单个向量,且可为方便起见作为法向向量存取。然而,分段式向量可基于系统中的节点的数目而分割成相等大小的段,且每一段可物理地分配在不同节点上。一系列段指针可用于存取分配的每一段。
136.从其上还定位有段的节点的处理核心对分段式向量的要素的存取在本文中被称为本地存取。否则,从另一远程节点对要素的存取在本文中被称为远程存取。由于由本地存取放置在存储器系统上的时延和需求小于远程存取放置在存储器系统上的时延和需求,因此在设计有效搜索算法时可主要考虑使远程存取的数目最小化。
137.图9的实例说明各种本地和远程存取。举例来说,第一节点902上的第一指针可指向第一节点902上的父段(parent segment)的一部分,且第一节点902上的第二指针可指向
第二节点904或第n节点906上的父段的一部分。类似地,第二节点904上的指针可指向(例如第一节点902或第n节点906或cnm系统102中的其它地方上的)节点本地父段或远程父段的部分。
138.顶点或节点的次数或连接到顶点的边缘的数目可用于估计与特定顶点相关联的工作的量。为跨系统中的所有计算元件实现平衡工作负荷,可将顶点指派给特定节点,使得指派给每一节点的顶点的次数计数的总和大致相等。
139.与尝试通过处理与在先前层级处发现的要素相关联的相邻者列表的每一要素来将新顶点与边界位图相加的自上而下算法相比,自下而上算法基于先前层级中是否发现父对象而考虑每一顶点。自下而上算法处理其相邻者列表,针对在先前层级处发现父对象的顶点而进行搜索。
140.边界位图可指示在所有先前层级处的检索期间发现父对象的顶点。未发现父对象的顶点具有设置成1的边界位图中的对应位。对于这些顶点中的每一个,可考虑其相邻者中的每一个直到发现其对应边界位为0或其在边界位图中的对应值为0的相邻者为止。在发现这类相邻者时,可通过将当前顶点的父对象设置成相邻者的id来更新父段。可通过将当前顶点id的位设置成0来更新下一边界或一或多个相邻节点。可使用后置零计数指令来处理列表以跳过连续的未标记节点。
141.在自下而上处理期间,例如,每一节点可处理父对象、次数和相邻者列表存取对于相同节点为本地的顶点,且可针对先前未发现父对象的顶点或节点的相邻者中的每一个的边界进行远程存取。因此,可使远程存取的数目最小化以由此增强搜索性能。图10通常说明跨不同存储器计算装置分布的数据结构的实例,且所述装置中的每一个包含饱和高速缓存。图10包含可包括n节点近存储器计算系统(例如cnm系统102)的一部分的多个不同节点。图10包含第一节点1002(node_0)、第二节点1004(node_1)和第n节点1006(node_n-1)。可类似地使用较少或额外节点。节点可配置成使用例如规模结构106的结构来通信,以便满足起源于系统中的各种节点处的读取和写入请求。
142.图10的实例中的相应节点可类似地配置成图9的实例中的节点。也就是说,每一节点可配置成与系统中的其它节点通信,且每一节点可具有或使用基于向量的存储器。不同于来自图9的实例节点,图10中的实例节点中的每一个包含相应本地软件高速缓存。举例来说,第一节点1002包含第一节点本地高速缓存1008,第二节点1004包含第二节点本地高速缓存1010,且第n节点1006包含第n节点本地高速缓存1012。不同节点本地高速缓存可为软件实施的饱和高速缓存。在实例中,可在bfs算法的自下而上阶段期间填充高速缓存。可例如取决于由相应不同节点中的每一个发出的特定读取请求而使用不同信息填充不同节点本地高速缓存中的每一个。
143.在实例中,第一节点本地高速缓存1008、第二节点本地高速缓存1010和第n节点本地高速缓存1012中的每一个为相同大小。每一高速缓存可配置成具有对应于例如cnm系统102的系统中的n个不同节点的n个不同块。在实例中,每一块可配置成存储1024
×
64位字,且每一块可使用从相应不同节点接收到的信息来填充。
144.可在首先进行远程存取时填充各种高速缓存块。举例来说,可在从第二节点1004上的一或多个段接收到的信息(例如,包括1024
×
64位)首先由第一节点1002存取时利用这类信息填充第一节点本地高速缓存1008的第一部分。可从第一节点本地高速缓存1008的第
一部分(例如,而不是从第二节点1004处的位置)检索来自第一节点1002的用于相同信息的后续请求。类似地,可在从第n节点1006上的一或多个段接收到的其它信息首先由第一节点1002存取时利用这类其它信息填充第一节点本地高速缓存1008的第二部分。可从第一节点本地高速缓存1008的第二部分检索来自第一节点1002的用于第二信息的后续请求,等等。
145.图11通常说明将来自不同存储器计算装置的边界信息映射到相应不同饱和高速缓存的实例。实例包含例如对应于图10的实例的第一节点本地高速缓存1008(cache_0)、第二节点本地高速缓存1010(cache_1)和第n节点本地高速缓存1012(cache_n-1)的表示。节点本地高速缓存中的每一个可包括n个不同高速缓存块,其中n对应于包含第一节点1002、第二节点1004和第n节点1006的系统中的节点的数目。在实例中,高速缓存块中的每一个可为相同大小。在其它实例中,高速缓存可为不同大小。
146.通常,对应于具有最高次数计数的顶点的边界信息在搜索期间最可能被存取。为改进性能,自下而上算法可使用节点本地高速缓存来存储对应于最高次数顶点的远程边界存取的结果。在实例中,节点本地高速缓存可包括分别对应于系统中的n个不同节点的n个块,且每一块可接收多达1024
×
64位字。
147.在实例中,例如第一节点1002的特定节点的高速缓存可在由第一节点1002上的计算资源发起的自下而上搜索的初始化时为空的。高次数要素中的一个的第一存取可从其远程位置(即,在第一节点1002外部的节点处,例如在第二节点1004、第n节点1006处,或在cnm系统102中的另一节点处)读取目标信息,且接着将目标信息存储在第一节点本地高速缓存1008中。由第一节点1002对相同目标信息的后续请求可由第一节点本地高速缓存1008满足,且因此排除其它远程存取。
148.在实例中,高速缓存可为饱和高速缓存,因为并非任何及每一要素可具有高速缓存的机会。替代地,可在读取上高速缓存仅特定要素(例如,每一远程边界的仅前1024个要素或字)。边界中的更远或更深要素(例如,具有大于1024的索引的那些要素)可绕过高速缓存。这种解决方案有助于确保较大要素最终被高速缓存且在维持高速缓存协议时不花费计算周期。
149.图11的实例以图形方式说明来自特定节点的要素可如何跨系统中的相同或其它节点存储或高速缓存。举例来说,第一节点1002可包含第一节点存储器装置1110,第二节点1004可包含第二节点存储器装置1112,且第n节点1006可包含第n节点存储器装置1114。不同存储器装置中的每一个可对应于例如第一存储器装置128的不同例项,所述第一存储器装置128来自图1的第一存储器计算装置112的实例。不同存储器装置可存储相应不同要素或位,其例如可由相同或不同节点上的计算资源使用。举例来说,第一节点存储器装置1110可包括第一要素1116,其可由第一节点1002或第二节点1004或cnm系统102中的其它节点使用。第一节点存储器装置1110可包括除第一要素1116以外的信息。第二节点存储器装置1112可包括第二要素1118,其可由第一节点1002或第二节点1004或cnm系统102中的其它节点使用,等等。在图11的实例中,第n节点存储器装置1114包括在第n节点1006处存储在存储器中的第三要素1120。
150.在图11的实例中,不同节点本地高速缓存可包括相应不同块,例如用于存储来自n个不同节点的信息的n个不同块。举例来说,第一节点本地高速缓存1008或cache_0可包含第一块1102a、第二块1104a、第三块1106a和第n块1108a,其例如分别对应于包含n个节点的
存储器计算系统中的n个不同节点中的每一个。在图11的实例中,第一块1102a可配置成存储来自第一节点存储器装置1110(例如来自第一节点1002)的第一要素1116。第一要素1116可表示由第一节点1002从存储器存取的第一信息(例如,包括边界位)存储在第一节点1002上。在实例中,第一块1102a(或一或多个其它块)的大小可与待高速缓存或存储在第一块1102a中的要素的大小相同。举例来说,第一要素1116可包括1024个要素,且第一块1102a可对应地大小设定成存储1024个要素。
151.在实例中,在bfs处理期间,例如在bfs处理的自下而上阶段期间,可利用第一要素1116填充第一块1102a。第二块1104a可配置成存储来自第二节点存储器装置1112(例如可从第二节点1004接收到)的第二要素1118。第二要素1118可表示由第一节点1002从存储器存取的第一信息(例如,边界位)存储在第二节点1004上,第二要素1118可表示第二节点存储器装置1112中的少于全部信息。可使用第一节点本地高速缓存1008或cache_0(例如使用第二块1104a处的信息)来满足来自第一节点1002的对第二要素1118的后续请求。
152.在图11的实例中,来自第一节点存储器装置1110的相同信息(例如,边界位)可用于填充第一节点本地高速缓存1008上的第一块1102a,且填充第二节点本地高速缓存1010上的第一块1102b,以及填充第n节点本地高速缓存1012上的第一块1102c。也就是说,例如第一要素1116的相同信息可用于满足来自不同节点中的每一个的初始请求。
153.在其它实例中,不同信息可用于填充不同节点上的对应高速缓存块,例如对应于这些特定节点的边界信息。举例来说,第n节点存储器装置1114可包括第三要素1120。相对于第一节点1002,边界信息可包括第三要素1120,且因此,可在这类要素首先由第一节点1002存取时利用第三要素1120填充第一节点本地高速缓存1008的第n块1108a。相对于第二节点1004,边界信息可包括第三要素1120,且因此可利用第三要素1120填充第二节点本地高速缓存1010的第n块1108b。在实例中,第三第n节点本地高速缓存1012的第n块1108c可为空的或未使用的,例如除非或直到第三第n节点1006存取来自第n节点存储器装置1114的信息,例如对应于第三要素1120的信息。
154.可使用来自特定存储器装置的少于全部要素或边界信息来填充特定节点本地高速缓存。在代表性实例中,第一节点存储器装置1110可包括第一要素1116,例如可包括1024
×
64位字。在搜索的特定迭代期间,且取决于用于特定迭代的连接性细节,来自第一要素1116的1024
×
64位字中的一些但未必全部可高速缓存于负责搜索的节点处。举例来说,第二节点1004可执行返回少于全部第一要素1116的搜索,且返回的要素可存储在第二节点本地高速缓存1010(cache_1)的第一块1102b中。由于第一块1102b可大小设定成接收多达1024
×
64位字,因此可未使用第一块1102b的一部分。类似地,第三节点1006可执行返回少于全部第一要素1116的搜索,且返回的要素可存储在第n节点本地高速缓存1012(cache_n-1)的第一块1102c中。到相应不同节点本地高速缓存中的每一个的返回的要素可为或可不为相同要素。
155.图12通常说明可包含建立及填充基于节点的饱和高速缓存的第一方法1200。第一方法1200可使用近存储器计算系统中的多个节点来执行,例如使用cnm系统102中的第一存储器计算装置112的多个不同例项来执行。
156.在步骤1202处,第一方法1200可包含在存储器计算系统中的第一存储器计算节点处建立第一n块高速缓存,且系统可包括n个节点。举例来说,步骤1202可包含在第一节点
1002处建立第一节点本地高速缓存1008,且第一节点1002可包括cnm系统102中的n个不同节点中的一个。步骤1202可包含在高速缓存中建立n个块,且所述块的大小可相等或不相等。在实例中,n个块中的每一个可配置成容纳约1024个不同要素或字,其例如可对应于从系统中的n(或n-1)个相应不同节点接收到的信息。在实例中,步骤1202可包含在n块高速缓存中建立第一块(例如,第一块1102a)以存储来自第一节点1002的边界信息,在n块高速缓存中建立第二块(例如,第二块1104a)以存储来自第二节点1004的边界信息,等等。
157.在步骤1204处,第一方法1200可包含从第一存储器计算节点提供对第一数据的第一读取请求。可将第一读取请求提供到系统中的n个不同节点中的特定一个。举例来说,第一数据可存储在系统中的第二存储器计算节点中,且因此第一读取请求可包含将对第一数据的请求发送到第二存储器计算节点。在步骤1206处,第一方法1200可包含响应于在步骤1204处提供的请求而在第一存储器计算节点处接收第一数据。在实例中,步骤1204和/或步骤1206可包含或使用计算结构,例如规模结构106,以在不同节点之间交换信息。
158.在步骤1208处,第一方法1200可包含利用在步骤1206处接收到的第一数据填充第一存储器计算节点处的n块高速缓存中的块中的至少一个。举例来说,如果第一数据对应于系统中的第二节点,那么步骤1208可包含填充对应于第二节点的在步骤1202处在第一节点处建立的n块高速缓存中的特定块。
159.在步骤1210处,第一方法1200可包含使用来自n块高速缓存的信息。举例来说,步骤1210可包含使用第一存储器计算节点来请求在步骤1204处所请求的相同第一数据。然而,由于第一数据存储在第一存储器计算节点的节点本地高速缓存中,因此可使用来自节点本地高速缓存的信息来满足对第一数据的读取请求。举例来说,如果第一数据存储在对于第一存储器计算节点为本地的n块高速缓存的特定块中,那么可使用从特定块本地地(而非从不同节点远程地)检索的信息来满足步骤1210处的请求。
160.图13通常说明可包含条件性地使用来自本地高速缓存的信息来满足读取请求的第二方法1300。第二方法1300可使用近存储器计算系统中的一或多个节点来执行,例如使用cnm系统102中的第一存储器计算装置112的多个不同例项来执行。
161.在步骤1302处,第二方法1300可包含在近存储器计算系统的第一存储器计算节点处建立n块高速缓存。举例来说,步骤1302可包括或对应于图12的实例,例如在步骤1202到步骤1208处。在步骤1302之后,n块高速缓存或第一存储器计算节点处的节点本地高速缓存可包括从系统中的相同节点或其它节点中的一或多个接收到的信息,其中这类信息根据其源位置在高速缓存中分段或划分(参看例如图11的实例,例如来自不同节点的信息可如何分布或存储在节点的系统中的不同节点本地高速缓存的部分中)。
162.在步骤1304处,第二方法1300可包含在第一存储器计算节点处发出对特定数据的读取请求。在实例中,步骤1304可包含使用第一节点1002处的计算资源来准备或发出对特定数据的请求。在决策步骤1306处,第二方法1300可包含使用第一节点1002处的计算资源来确定所请求的特定数据是否存在于例如在步骤1302处建立的高速缓存的节点本地高速缓存中。如果数据存在于节点本地高速缓存中,那么在步骤1310处,第二方法1300可包含从节点本地高速缓存读取特定数据。如果数据不存在于节点本地高速缓存处,那么第二方法1300可前进到步骤1308。在步骤1308处,第二方法1300可包含将读取请求发出到远程资源,例如包括第一存储器计算节点的系统中的远程节点。举例来说,步骤1308可包含来自第一
方法1200的步骤1204,其包含将读取请求提供到存储器计算系统中的不同节点。在步骤1308之后,第二方法1300可包含使用接收到的信息来填充第一存储器计算节点处的n块高速缓存的一部分,使得可使用高速缓存满足对相同数据的后续请求。
163.图14说明实例机器1400的框图,可利用所述机器、在所述机器中或通过所述机器实施本文中所论述的任何一或多种技术(例如,方法)。如本文中所描述,实例可包含机器1400中的逻辑或数个组件或机构,或可由其操作。电路系统(例如,处理电路系统)是在机器1400的有形实体中实施的电路集合,其包含硬件(例如,简单电路、门、逻辑等)。电路系统成员资格可随时间推移为灵活的。电路系统包含在操作时可单独或组合地执行特定操作的部件。在实例中,可以不可改变的方式设计电路系统的硬件以实行特定操作(例如,硬连线)。在实例中,电路系统的硬件可包含可变地连接的物理组件(例如执行单元、晶体管、简单电路等),所述物理组件包含以物理方式修改(例如不变集中式粒子的磁性、电气可移动放置等)以对特定操作的指令进行编码的机器可读媒体。在连接物理组件时,改变硬件构成部分的根本电性质,例如从绝缘体变为导体,或反之亦然。指令使得嵌入式硬件(例如,执行单元或加载机构)能够经由可变连接以硬件创建电路系统的部件以在处于操作中时实行特定操作的部分。因此,在实例中,机器可读媒体元件是电路系统的一部分或在装置操作时以通信方式耦合到电路系统的其它组件。在实例中,物理组件中的任一个可以用于多于一个电路系统中的多于一个部件中。举例来说,在操作下,执行单元可在一个时间点用于第一电路系统中的第一电路,且在不同时间由第一电路系统中的第二电路或由第二电路系统中的第三电路重新使用。关于机器1400的这些组件的额外实例。
164.在替代实施例中,机器1400可操作为独立装置或可连接(例如,网络连接)到其它机器。在联网部署中,机器1400可在服务器-客户端网络环境中以服务器机器、客户端机器或这两者的能力操作。在实例中,机器1400可充当对等(p2p)(或其它分布式)网络环境中的对等机器。机器1400可以是个人计算机(pc)、平板pc、机顶盒(stb)、个人数字助理(pda)、移动电话、网络器具、网络路由器、交换机或桥接器,或能够执行(循序或以其它方式)指定待由所述机器采取的动作的指令的任何机器。此外,虽然仅说明单个机器,但术语“机器”还应被视为包含单独或联合执行一组(或多组)指令以执行本文中所论述的方法论中的任何一或多种的任何机器集合,例如云计算、软件即服务(saas)、其它计算机集群配置。
165.机器1400(例如,计算机系统)可包含硬件处理器1402(例如,中央处理单元(cpu)、图形处理单元(gpu)、硬件处理器核心或其任何组合)、主存储器1404、静态存储器1406(例如,固件、微码的存储器或存储设备、基本输入输出(bios)、统一可扩展固件接口(uefi)等),以及大容量存储装置1408(例如,硬盘驱动器、磁带机、快闪存储设备或其它块装置),其中的一些或全部可经由互联件1430(例如,总线)彼此通信。机器1400可进一步包含显示装置1410、字母数字输入装置1412(例如,键盘)和用户接口(ui)导航装置1414(例如,鼠标)。在实例中,显示装置1410、输入装置1412和ui导航装置1414可为触摸屏显示器。机器1400可另外包含大容量存储装置1408(例如,驱动单元)、信号产生装置1418(例如,扬声器)、网络接口装置1420和一或多个传感器1416,例如全球定位系统(gps)传感器、指南针、加速计或其它传感器。机器1400可包含输出控制器1428,例如串行(例如,通用串行总线(usb)、并行或其它有线或无线(例如,红外(ir)、近场通信(nfc)等)连接,以与一或多个外围装置(例如,打印机、读卡器等)通信或控制所述一或多个外围装置。
166.硬件处理器1402、主存储器1404、静态存储器1406或大容量存储装置1408的寄存器可为或包含机器可读媒体1422,所述机器可读媒体1422上存储体现或由本文中所描述的技术或功能中的任何一或多个使用的数据结构或指令1424(例如,软件)的一或多个集合。指令1424还可在其由机器1400执行期间完全或至少部分驻留在硬件处理器1402、主存储器1404、静态存储器1406或大容量存储装置1408的寄存器中的任一个内。在实例中,硬件处理器1402、主存储器1404、静态存储器1406或大容量存储装置1408中的一个或任何组合可构成机器可读媒体1422。虽然机器可读媒体1422说明为单个媒体,但术语“机器可读媒体”可包含配置成存储一或多个指令1424的单个媒体或多个媒体(例如,集中式或分布式数据库,或相关联的高速缓存和服务器)。
167.术语“机器可读媒体”可包含能够存储、编码或携载供机器1400执行且使机器1400执行本公开的技术中的任何一或多个的指令的任何媒体,或能够存储、编码或携载由这类指令使用或与这类指令相关联的数据结构的任何媒体。非限制性机器可读媒体实例可包含固态存储器、光学媒体、磁性媒体和信号(例如,射频信号、其它基于光子的信号、声音信号等)。在实例中,非暂时性机器可读媒体包括具有多个粒子的机器可读媒体,所述粒子具有不变(例如,静止)质量,且因此为物质组成。因此,非暂时性机器可读媒体是不包含暂时性传播信号的机器可读媒体。非暂时性机器可读媒体的特定实例可包含:非易失性存储器,例如半导体存储器装置(例如,电可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom))和快闪存储器装置;磁盘,例如内部硬盘和可移动磁盘;磁光盘;以及cd-rom和dvd-rom盘。
168.在实例中,存储或以其它方式提供在机器可读媒体1422上的信息可表示指令1424,例如指令1424本身或可从其导出指令1424的格式。可从其导出指令1424的这一格式可包含源代码、已编码指令(例如,呈压缩或加密形式)、已封装指令(例如,拆分成多个封装)等。表示机器可读媒体1422中的指令1424的信息可由处理电路系统处理到指令中以实施本文中所论述的操作中的任一个。举例来说,从信息(例如,由处理电路系统处理)导出指令1424可包含:编译(例如,从源代码、目标代码等)、解译、加载、组织(例如,动态地或静态地链接)、编码、解码、加密、解密、封装、解封装或以其它方式将信息操纵到指令1424中。
169.在实例中,指令1424的导出可包含对信息的汇编、编译或解译(例如,通过处理电路系统)以从由机器可读媒体1422提供的一些中间或预处理格式产生指令1424。当在多个部分中提供信息时,可组合、解封装和修改所述信息以创建指令1424。举例来说,信息可在一个或数个远程服务器上的多个压缩源代码封装(或目标代码,或二进制可执行代码等)中。源代码封装可在经由网络传输时被加密,且在必要时被解密、解压缩、汇编(例如,链接),且在本地机器处被编译或解译(例如,到可独立执行的库中等),且由本地机器执行。
170.可进一步利用数个传送协议中的任一个(例如,帧中继、因特网协议(ip)、传输控制协议(tcp)、用户数据报协议(udp)、超文本传送协议(http)等)经由网络接口装置1420使用传输媒体在通信网络1426上传输或接收指令1424。实例通信网络可包含局域网(lan)、广域网(wan)、分组数据网络(例如,因特网)、移动电话网络(例如,蜂窝网络)、普通老式电话(pots)网络,以及无线数据网络(例如,电气和电子工程师协会(ieee)802.11系列标准,称为ieee 802.16系列标准,称为)、ieee 802.15.4系列标准、对等(p2p)网络等。在实例中,网络接口装置1420可包含一或多个物理插口(例如,以太网、同轴或电话插
口)或一或多个天线以连接到通信网络1426。在实例中,网络接口装置1420可包含多个天线以使用单输入多输出(simo)、多输入多输出(mimo)或多输入单输出(miso)技术中的至少一个无线地通信。术语“传输媒体”应被视为包含能够存储、编码或携载指令以供由机器1400执行的任何无形媒体,且包含数字或模拟通信信号或用以促进这类软件的通信的其它无形媒体。传输媒体是机器可读媒体。
171.为了更好地说明本文中所描述的方法和设备,一组非限制性实例实施例在下文阐述为带编号的实例。
172.实例1可包含或使用标的物(例如设备、系统、装置、方法、用于执行动作的构件或包含在由装置执行时可使得装置执行动作的指令的装置可读媒体,或制品),例如可包含或使用方法,所述方法包括:在包含n个不同硬件节点的近存储器计算系统中的第一存储器计算节点处建立n块高速缓存,其中第一存储器计算节点为n个不同硬件节点中的一个,且其中n个不同硬件节点由计算结构耦合;以及对于来自第一存储器计算节点的用以从n个不同节点中的特定一个读取信息的每一初始请求,利用从n个不同节点中的特定一个接收到的边界信息填充高速缓存中的n个块中的对应一个。边界信息可指示在由计算结构耦合的节点中的一些或全部的先前搜索期间是否发现n个不同节点中的特定一个的父对象。在实例中,边界信息包括位图。
173.实例2可包含或使用实例1的标的物或可任选地与实例1的标的物组合以任选地包含:对于来自第一存储器计算节点的用以从n个不同节点中的第一节点读取目标信息的初始请求,经由计算结构检索来自第一节点的目标信息且利用从第一节点检索的目标信息填充高速缓存中的n个块中的第一个;以及对于来自第一存储器计算节点的用以从第一节点读取目标信息的后续请求,从高速缓存中的n个块中的第一个读取目标信息。
174.实例3可包含或使用实例1或2中的任一实例的标的物或可任选地与实例1或2中的任一实例的标的物组合以任选地包含:对于来自第一存储器计算节点的用以从n个不同节点中的特定一个读取信息的后续请求,从对应于n个不同节点中的特定一个的高速缓存块中的对应一个读取信息。
175.实例4可包含或使用实例1至3中的任一实例的标的物或可任选地与实例1至3中的任一实例的标的物组合以任选地包含:在第一存储器计算节点处,确定在从近存储器计算系统中的其它节点中的一个请求信息之前,是否可使用来自高速缓存的信息满足后续读取请求。
176.实例5可包含或使用实例1至4中的任一实例的标的物或可任选地与实例1至4中的任一实例的标的物组合以任选地包含:将高速缓存建立为在第一存储器计算节点处实例化的第一软件对象。
177.实例6可包含或使用实例1至5中的任一实例的标的物或可任选地与实例1至5中的任一实例的标的物组合以任选地包含建立具有相等大小的n个块的高速缓存。
178.实例7可包含或使用实例1至6中的任一实例的标的物或可任选地与实例1至6中的任一实例的标的物组合以任选地包含建立饱和n块高速缓存。
179.实例8可包含或使用实例1至7中的任一实例的标的物或可任选地与实例1至7中的任一实例的标的物组合以任选地包含:建立用于近存储器计算系统中的n个不同节点中的每一个的高速缓存块,且每一高速缓存块可包括1024
×
64位字或要素,或可包括其它大小
的字或要素。
180.实例9可包含或使用实例1至8中的任一实例的标的物或可任选地与实例1至8中的任一实例的标的物组合以任选地包含:使用来自自下而上搜索算法的结果填充高速缓存中的相应块,且结果可包含从相应不同节点接收到的边界信息。
181.实例10可包含或使用实例1至9中的任一实例的标的物或可任选地与实例1至9中的任一实例的标的物组合以任选地包含:使用来自广度优先搜索算法的结果填充高速缓存中的相应块,且结果可包含从相应不同节点接收到的边界信息。
182.实例11可包含或使用实例10的标的物或可任选地与实例10的标的物组合以任选地包含:通过基于待搜索的节点的连接性而对搜索算法进行优先排序来填充高速缓存中的相应块,且具有对其它节点的更多相邻者或连接的节点可优先于具有对其它节点的更少相邻者或连接的节点。
183.实例12可包含或使用实例1至11中的任一实例的标的物或可任选地与实例1至11中的任一实例的标的物组合以任选地包含在无逐出策略的情况下将n块高速缓存建立为静态高速缓存。
184.实例13可包含或使用前述实例中的任一实例的标的物或可任选地与前述实例中的任一实例的标的物组合以任选地包含设备,所述设备包括近存储器计算系统中的多个存储器计算节点中的第一存储器计算节点,其中第一存储器计算节点包括处理器,所述处理器配置成执行包括以下各项的操作:建立n块软件高速缓存,其中n个块中的每一个对应于近存储器计算系统中的存储器计算节点中的相应一个;以及使用从近存储器计算系统中的相应存储器计算节点接收到的边界信息填充高速缓存中的相应块。边界信息可指示在由计算结构耦合的节点中的一些或全部的搜索期间是否发现节点中的特定一个的父对象。在实例中,边界信息包括位图。
185.实例14可包含或使用实例13的标的物或可任选地与实例13的标的物组合以任选地包含或使用处理器,以进一步执行包括使用广度优先搜索算法来填充高速缓存中的块的操作。
186.实例15可包含或使用实例14的标的物或可任选地与实例14的标的物组合以任选地包含使用自下而上搜索方法来填充高速缓存中的块。
187.实例16可包含或使用实例13至15中的任一实例的标的物或可任选地与实例13至15中的任一实例的标的物组合以任选地包含使用根据系统中的节点的连接性而优先排序的搜索算法填充高速缓存中的块。
188.实例17可包含或使用实例13至16中的任一实例的标的物或可任选地与实例13至16中的任一实例的标的物组合以任选地包含近存储器计算系统中的多个存储器计算节点中的第二存储器计算节点,且第二存储器计算节点包括第二处理器,所述第二处理器配置成执行包括以下各项的操作:建立n块软件高速缓存以供第二存储器计算节点使用,其中n个块中的每一个对应于近存储器计算系统中的存储器计算节点中的相应一个;使用从近存储器计算系统中的第一存储器计算节点接收到的边界信息填充软件高速缓存中的n个块中的一个;以及使用从近存储器计算系统中的其它相应存储器计算节点接收到的边界信息填充软件高速缓存中的其它相应n-1个块。
189.实例18可包含或使用前述实例中的任一实例的标的物或可任选地与前述实例中
的任一实例的标的物组合以任选地包含存储器计算系统,所述存储器计算系统包括n个不同存储器计算节点,其由规模结构耦合以提供计算结构。在实例18中,n个节点中的每一个包括混合线程处理器和混合线程结构,且n个不同存储器计算节点中的第一存储器计算节点包括配置成执行包括以下各项的操作的处理器:建立n块软件高速缓存,其中n个块中的每一个对应于由规模结构耦合的存储器计算节点中的相应一个;以及使用从相应节点接收到的边界信息填充高速缓存中的相应块。边界信息可指示在由混合线程结构耦合的节点中的一些或全部的先前搜索期间是否发现n个节点中的对应一个的父对象。
190.实例19可包含或使用实例18的标的物或可任选地与实例18的标的物组合以任选地包含第一存储器计算节点的处理器,其配置成在广度优先搜索算法期间填充高速缓存中的块。
191.实例20可包含或使用实例18或19的标的物或可任选地与实例18或19的标的物组合以任选地在n个不同存储器计算节点中的每一个处包含配置成实施相应n块基于软件的高速缓存的相应处理器和存储器电路,且特定节点上的每一基于软件的高速缓存可配置成存储从其它节点中的每一个接收到的信息。
192.这些非限制性实例中的每一个可独立存在,或可以各种排列或组合的方式与其它实例中的一或多个组合。
193.以上详细描述包含对附图的参考,所述附图形成所述详细描述的一部分。图式借助于说明展示可实践本发明的特定实施例。这些实施例在本文中也称为“实例”。这类实例可包含除了所展示或描述的那些元件之外的元件。然而,本发明人还预期其中仅提供所展示或所描述的那些元件的实例。此外,本发明人还预期使用相对于特定实例(或其一或多个方面)或相对于本文中所展示或描述的其它实例(或其一或多个方面)而展示或描述的那些元件的任何组合或排列的实例(或其一或多个方面)。
194.在本文件中,如专利文件中常见,使用术语“一(a或an)”以包含一个或多于一个,这与“至少一个”或“一或多个”的任何其它例项或用途无关。在此文件中,除非另外指示,否则术语“或”用于指代非排他性的或,使得“a或b”可包含“a而非b”、“b而非a”,以及“a和b”。在所附权利要求书中,术语“包含”和“其中(in which)”用作相应术语“包括”和“其中(wherein)”的通俗等效术语。另外,在以下权利要求书中,术语“包含”和“包括”为开放式的,也就是说,包含除权利要求书中在这种术语之后所列出的那些要素之外的要素的系统、装置、物品或过程仍被视为在权利要求书的范围内。此外,在以下权利要求书中,术语“第一”、“第二”和“第三”等仅用作标记,且并不意欲对其对象施加数字要求。
195.以上描述意欲是说明性而非限制性的。举例来说,上文所描述的实例(或其一或多个方面)可以彼此组合使用。如所属领域的一般技术人员在查阅以上描述后可使用其它实施例。其在遵守以下理解的情况下提交:其将不会用于解释或限制权利要求的范围或含义。同样,在以上具体实施方式中,可以将各种特征分组在一起以简化本公开。这种情况不应解释为期望未要求的所公开特征对任何权利要求来说是必需的。实际上,本发明标的物可在于比特定公开的实施例的所有特征要少。因此,特此将所附权利要求书并入到具体实施方式中,其中每一权利要求作为一单独实施例而独立存在,且考虑这些实施例可以各种组合或排列彼此组合。本发明的范围应通过参考所附权利要求书以及所述权利要求书所授予的等效物的完整范围来确定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1