用于在互连设备之间传输数据的系统、方法和装置与流程

用于在互连设备之间传输数据的系统、方法和装置1.相关申请的交叉引用2.本技术要求于2021年8月20日提交的题为“systems,methods,anddevicesfortransferringdatabetweeninterconnecteddevices”的美国临时专利申请序列号63/235,666的优先权和权益,其通过引用而并入本文。

技术领域


:3.本公开总体上涉及数据传输,并且更具体地,涉及用于在互连设备之间传输数据的系统、方法和装置。

背景技术


::4.在一些处理系统中,计算工作负载可以在多个计算设备之间被拆分,每个计算设备可以包括处理器和存储器。作为计算设备中的第一计算设备的第一计算的结果而产生的数据可以被存储在存储设备处,然后被传输到计算设备中的第二计算设备,在该第二计算设备中该数据可以用作第二计算的输入。主机设备可以协调计算设备和存储设备之间的数据移动。5.该

背景技术


:部分中公开的以上信息仅用于增强对本发明背景的理解,因此它可能包含不构成现有技术的信息。技术实现要素:6.一种用于传输数据的方法可以包括:通过互连从生产者设备向存储设备写入数据;确定数据的消费者设备;从存储设备预取数据;以及基于该确定,通过互连将数据传输到消费者设备。该方法还可以包括在存储设备的预取器处接收生产者设备和消费者设备之间的关系的指示,并且基于该指示来确定消费者设备。该方法还可以包括基于生产者设备和消费者设备之间的关系,将数据放置在存储设备处的流中。该指示可以由与消费者设备相关联的应用提供。接收指示可以包括通过互连的一致性存储器协议接收指示。通过一致性存储器协议接收指示可以包括通过一致性存储器协议的一个或多个字段接收生产者标识符(id)和消费者id。该方法还可以包括在存储设备的预取器处检测生产者设备和消费者设备的访问模式,并且基于访问模式来确定消费者设备。该方法还可以包括由主机为数据分配消费者设备处的存储器。该方法还可以包括由存储设备为数据分配消费者设备处的存储器。消费者设备处的存储器可以包括保留存储器。该方法还可以包括由主机更新消费者设备处的存储器的映射。传输可以与消费者设备处的计算操作重叠。该方法还可以包括向存储设备的预取器通知写入的状态。通知可以包括写入存储器位置。7.一种设备可以包括:互连接口;存储介质;以及预取器,被配置为执行对存储在存储介质中的数据的消费者设备的确定,从设备预取数据,并且基于该确定,通过互连接口将数据传输到消费者设备。该设备还可以包括数据结构,该数据结构被配置为存储关于数据的生产者设备和消费者设备之间的关系的信息。该数据结构可以包括该关系的生产者标识符(id)和消费者id。该设备还可以包括多流接口,该多流接口被配置为基于该关系将通过互连接口接收的数据存储在存储介质的流中。预取器可以包括检测逻辑,该检测逻辑被配置为确定消费者设备和数据的生产者设备的访问模式。8.一种系统可以包括:互连;生产者设备,耦合到互连;消费者设备,耦合到互连;存储设备,耦合到互连,并且被配置为存储通过互连从生产者设备接收的数据;以及预取器,耦合到互连,其中预取器可以被配置为基于生产者设备来执行对消费者设备的确定,预取数据,以及基于该确定,通过互连将数据传输到消费者设备。生产者设备可以被配置为向预取器通知通过互连从生产者设备接收的数据的状态。该系统还可以包括耦合到互连的主机设备。主机设备可以被配置为通过互连向预取器发送关于生产者设备和消费者设备之间的关系的信息。主机设备可以包括一致性引擎,该一致性引擎被配置为维持生产者设备、消费者设备和存储设备之间的存储器一致性。附图说明9.附图不一定是按比例绘制的,并且在所有附图中,出于说明的目的,类似结构或功能的元件通常可以由相似的附图标记或其部分表示。附图仅仅旨在便于描述本文描述的各种实施例。附图没有描述本文公开的教导的每个方面,并且不限制权利要求的范围。为了防止附图变得模糊,不是所有的组件、连接等都可以被示出,并且不是所有的组件都可以具有附图标记。然而,从附图中,组件配置的模式可以是显而易见的。附图与说明书一起示出了本公开的示例实施例,并且与描述一起用于解释本公开的原理。10.图1示出根据本公开的示例实施例的用于在多个计算设备之间拆分处理工作负载的系统的实施例。11.图2示出根据本公开的示例实施例的具有数据预取和传输的系统的实施例。12.图3示出根据本公开的示例实施例的具有数据预取和传输的系统的示例实施例。13.图4示出根据本公开的示例实施例的用于存储数据的方法的示例实施例。14.图5示出根据本公开的示例实施例的用于存储、预取和传输数据的方法的示例实施例。15.图6示出根据本公开的示例实施例的用于预取数据的方法的示例实施例。16.图7示出根据本公开的示例实施例的基于主机的存储器分配方法的示例实施例。17.图8示出根据本公开的示例实施例的统一存储器架构的示例实施例。18.图9示出根据本公开的示例实施例的基于存储设备的存储器分配方法的示例实施例。19.图10示出根据本公开的示例实施例的存储器分配方法的示例实施例。20.图11示出根据本公开的示例实施例的用于存储、预取和传输数据的方法的示例实施例。21.图12示出根据本公开的示例实施例的异构存储器控制系统的示例实施例。22.图13示出根据本公开的示例实施例的可以用于实施数据预取和传输的主机装置的示例实施例。23.图14示出根据本公开的示例实施例的可以用于实施数据预取和传输的设备的示例实施例。24.图15示出根据本公开的示例实施例的用于传输数据的方法的实施例。具体实施方式25.根据本公开的示例实施例的存储设备可以预取存储在存储设备处的数据,并将其传输到可以使用数据进行计算或其他处理的消费者设备。在一些实施例中,这可以减少或消除主机的参与,主机的参与可能是在设备之间传输数据的瓶颈。取决于实施细节,预取数据并将其传输到消费者设备可以减少访问延迟和/或同步开销,和/或可以使得数据输入和/或输出(i/o)操作能够与消费者设备处的数据处理操作重叠,从而提高吞吐量。26.在一些实施例中,生产者设备和消费者设备可以通过流水线配置中的互连来耦合,以执行分布式计算,诸如机器学习(ml)训练和/或推理。例如,生产者设备(例如,诸如加速器、图形处理单元(gpu)等的计算设备)可以通过互连将第一阶段的计算的结果写入存储设备。消费者设备(例如,诸如加速器、gpu等的另一计算设备)可以从存储设备读取结果,并使用结果进行下一阶段的计算。在一些实施例中,存储设备中的预取器可以预取由生产者设备存储的结果,并且在预期消费者设备使用结果进行下一阶段的计算的情况下,将该结果传输到消费者设备。取决于实施细节,这可以使得数据能够与由消费者设备正在执行的其他处理并行地被传输到消费者设备,从而减少或隐藏存储器和/或存储设备访问延迟。27.存储设备可以基于根据本公开的示例实施例的各种技术来确定将预取数据传输到哪个消费者设备。例如,在一些实施例中,存储设备的预取器可以从(例如,在耦合到互连的主机上运行的)应用接收指示一个或多个生产者设备和一个或多个消费者设备之间的生产者-消费者关系的信息。因此,当特定生产者设备将数据写入存储设备(例如,将特定量的数据写入特定位置)时,预取器可以预取数据并将其传输到特定消费者设备。作为另一示例,在一些实施例中,预取器可以监视存储设备的读取和/或写入操作,以检测可以预测哪个消费者设备可能使用由特定生产者设备存储的数据的一个或多个访问模式。28.为了提供用于在消费者设备处写入预取数据的目标位置,存储设备可以基于根据本公开的示例实施例的各种技术在消费者设备处分配存储器。例如,在一些实施例中,存储设备可以向可以(例如,通过主机处的虚拟存储器管理器(vmm))在消费者设备处分配目标存储器的主机发送存储器分配请求。作为另一示例,存储设备可以(例如,使用预取器处的vmm)自己分配目标存储器。在存储设备分配目标存储器的一些实施例中,存储设备可以将预取数据复制到消费者设备处的存储器的保留区域。29.在一些实施例中,生产者设备、消费者设备、存储设备和/或主机之间的互连可以至少部分地利用存储器一致性接口和/或使用一个或多个存储器一致性协议来实施。在这样的实施例中,存储器一致性接口和/或协议的一个或多个方面可以用于被实施根据本公开的示例实施例的一个或多个特征。例如,在一些实施例中,一致性引擎可以使用诸如标签字段的一个或多个协议字段向预取器发送关于一个或多个生产者-消费者关系的信息。30.在一些实施例中,存储设备可以将来自一个或多个生产者设备的数据存储在存储设备处的一个或多个流中。例如,具有类似寿命和/或类似生产者-消费者关系的数据可以被放置在相同的流中。因此,在一些实施例中,以相同消费者设备为目的的数据可以被放置在相同的流中。取决于实施细节,这可以改进存储设备处的垃圾收集和/或块擦除操作,因为例如,传输到特定消费者设备的一些或所有数据可以同时变得无效。31.本文公开的原理具有独立的效用并且可以被单独体现,并且不是每个实施例都可以利用每个原理。然而,这些原理也可以以各种组合来体现,其中一些可以以协同的方式放大单独原理的益处。32.图1示出根据本公开的示例实施例的用于在多个计算设备之间拆分处理工作负载的系统的实施例。图1中示出的系统可以包括主机设备102、四个计算设备104a、104b、104c和104d(可以统称为104)、以及两个存储设备106a和106b(可以统称为106)。主机设备102、计算设备104和存储设备106可以通过互连108进行通信。计算设备104中的每一个可以处理ml工作负载110的对应阶段,其在该实施例中可以被实施为神经网络。因此,计算设备104a、104b、104c和104d可以分别处理神经网络工作负载110的对应阶段110a、110b、110c和110d。最终阶段110d可以包括例如一个或多个全连接(fc)层和softmax函数。33.主机设备102可以包括中央处理单元(cpu)112和存储器114,其在该实施例中可以用动态随机存取存储器(dram)来实施。计算设备104a、104b、104c和104d中的每一个可以分别包括对应的gpu116a、116b、116c和116d(分别指示为gpu0、gpu1、gpu2和gpu3)。gpu116a、116b、116c和116d可以统称为116。计算设备104a、104b、104c和104d中的每一个还可以分别包括对应的本地设备存储器118a、118b、118c和118d(分别指示为dram0、dram1、dram2和dram3)。本地设备存储器118a、118b、118c和118d可以统称为118。存储设备106a和106b中的每一个可以分别包括对应的本地存储介质120a和120b(分别指示为存储装置0和存储装置1)。本地存储介质120a和120b可以统称为120。存储设备106a和106b中的每一个还可以分别包括对应的控制器122a和122b(分别指示为控制器0和控制器1)。控制器122a和122b可以统称为122。34.在一些实施例中,在主机设备102上运行的应用可以协调各个设备本地存储器之间的数据移动。例如,主机设备102可以向存储设备106中的一个发送一个或多个命令,以将数据从计算单元104中的一个的本地存储器118传输到存储设备106的存储介质120。这可以被称为从本地存储器118中拉出数据。主机设备102也可以向存储设备106中的一个发送一个或多个命令,以将数据从存储设备106的存储介质120传输到计算单元104中的一个的本地存储器118。这可以被称为将数据推送到本地存储器118。35.在图1中示出的实施例中,由主机设备102的cpu112协调的示例数据流由数据传输(1)、(2)、(3)、(4)、(5)、(6)和(7)示出。因此,在操作(1),可以首先将第一数据从存储装置0推送到dram0,其中第一数据可以被读取并用作由gpu0执行的计算的输入。在操作(2),可以将第二数据从存储装置0推送到dram1。然而,在gpu1处使用第二数据的计算可以等待,直到由gpu0执行的计算的结果作为第三数据被存储在dram0中,然后在操作(3)被传输到dram1。第二数据和第三数据可以被用作由gpu1执行的计算的输入,其结果可以作为第四数据被写入dram1。在操作(4),然后可以将第四数据拉出到存储装置1。在操作(5),可以将第五数据从存储装置1推送到dram2。第五数据可以用作gpu2的计算的输入,其输出可以作为第六数据被写入dram2。在操作(6),可以将第六数据传输到dram3,然后被用作由gpu3执行的计算的输入,其输出可以作为第七数据被写入dram3。在操作(7),然后可以将第七数据拉出到存储装置1。36.取决于实施细节,主机设备102可能是设备之间的数据移动的瓶颈,因为它可能涉及协调一些或所有数据传输。因此,存储设备106可能是数据移动的被动参与者。此外,在一些实施例中,本地存储器118和存储介质120之间的数据传输可能仅在处理内核没有在对应的gpu116上运行时发生。37.图2示出根据本公开的示例实施例的具有数据预取和传输的系统的实施例。图2中示出的系统可以包括第一计算设备204a、第二计算设备204b、存储设备206和预取器224,所有这些设备都可以通过互连208进行通信。第一计算设备204a和第二计算设备204b可以各自分别包括对应处理器或者其他通用启动器(gi)216a和216b、以及对应的存储器218a和218b。存储设备206可以包括存储介质220。38.在一些实施例中,计算设备204中的一个或多个可以作为生产者设备操作,生产者设备可以产生(例如,作为计算或其他处理的结果)可以由可以作为消费者设备操作的计算设备204中的一个或多个消费的数据。在一些情况下,计算设备204可以作为生产者设备和消费者设备两者操作。39.根据本公开的示例实施例,预取器224可以实施用于存储和/或向和/或从计算设备204中的一个或多个和/或可通过互连208访问的其他设备传输数据的一种或多种技术。例如,预取器224可以被实施为可编程预取器,该可编程预取器可以从存储设备206处的本地存储器(例如,存储介质220)预取数据,并将其推送到计算设备204中的一个或多个的本地存储器218(例如,具有可以使用该数据的处理器或其他gi216的设备处的存储器、或者相对靠近或最靠近可以使用该数据的处理器或其他gi的设备处的存储器)。因此,在一些实施例中,消费者设备可以是可以包括可以使用所传输的数据的处理器或其他gi的计算设备204,或者消费者设备可以是具有可以为可以使用所传输的数据的处理器或其他gi(例如,在连接到互连208的另一设备处)存储所传输的数据的存储器的计算设备204或其他设备。40.在一些实施例中,预取器224可以基于预取器可以从(例如,在耦合到互连的主机上运行的)应用接收的指示一个或多个生产者设备与一个或多个消费者设备之间的一个或多个生产者-消费者关系的信息,确定为其预取数据和/或向其推送数据的消费者设备。在一些实施例中,预取器224可以通过监视一个或多个存储设备的一个或多个读取和/或写入操作以检测一个或多个访问模式来确定消费者设备,一个或多个访问模式可以预测哪个消费者设备可能使用由特定生产者设备存储的数据。在一些实施例中,预取器224可以包括被配置为监视读取和/或写入操作和/或检测一个或多个访问模式的检测逻辑225。41.在一些实施例中,预取器224可以通过请求主机设备的存储器分配、通过自己分配存储器或者以任何其他方式分配消费者设备处的存储器。42.取决于实施细节,图2中示出的实施例可以减少、消除和/或隐藏一个或多个计算设备、存储设备和/或可通过互连208访问的其他设备的存储器和/或存储访问延迟。这可以减少或消除对主机和/或cpu协调数据移动的依赖,这进而可以导致更低的cpu利用率。此外,取决于实施细节,去往和/或来自消费者和/或生产者设备的数据传输可以与消费者和/或生产者设备处的其他处理(例如,内核运行)重叠,从而提高吞吐量。43.在一些实施例中,预取器224可以与存储设备206集成。例如,在一些实施例中,预取器可以被部分或全部实施为存储设备206的存储设备控制器的一部分。作为另一示例,在一些实施例中,预取器224可以被部分或全部实施为主机设备和/或计算设备204中的一个或多个的一部分。44.计算设备204可以用可以包括存储器218和/或可以产生和/或使用可以被存储在存储设备206中的数据的处理器或其他gi216的任何类型的设备来实施。示例可以包括gpu、加速器、神经处理单元(npu)、张量处理单元(tpu)、网络接口卡(nic)等。45.存储器218a和218b和/或存储介质220中的任何一个可以用包括任何类型的固态介质、磁介质、光介质等的任何类型的存储器和/或存储介质、任何类型的易失性存储器(诸如dram、静态随机存取存储器(sram)等)、任何类型的非易失性存储器(包括诸如非与(nand)闪存的闪存、诸如交叉网格非易失性存储器的永久存储器(pmem)、具有体电阻改变的存储器、相变存储器(pcm)等)、或者其任何组合来实施。46.互连208可以用任何类型的接口和/或协议中的一个或多个或者其任何组合来实施,该任何类型的接口和/或协议包括外围组件快速互连(pcie)、非易失性存储器快速(nvme)、构造上nvme(nvme-of)、以太网、传输控制协议/互联网协议(tcp/ip)、远程直接存储器访问(rdma)、汇聚以太网上rdma(roce)、fibrechannel、infiniband、串行ata(sata)、小型计算机系统接口(scsi)、串行附接scsi(sas)、iwarp等。在一些实施例中,互连208可以用一个或多个存储器语义和/或存储器一致性接口和/或协议(诸如计算快速链接(cxl)、和/或cxl.mem、cxl.io、和/或cxl.cache、gen-z、一致性加速器处理器接口(capi)、加速器的高速缓存一致性互连(ccix)等)或者其任何组合来实施。47.出于说明的目的,图2中示出的实施例可以包括被实施为存储设备的设备206。然而,根据本公开的示例实施例,本公开的原理可以用可以用于存储、预取和/或传输数据的任何类型的设备来实施。可以预取和传输数据的设备的示例可以包括高速缓存设备(例如,cxl类型1设备)、具有存储器的加速器(例如,cxl类型2设备)、存储器缓冲器设备(例如,cxl类型3设备)、具有存储器的nic等。48.图3示出根据本公开的示例实施例的具有数据预取和传输的系统的示例实施例。图3中示出的实施例可以用于例如实施图2中示出的系统和/或本文描述的任何预取和/或数据传输特征。49.参考图3,该系统可以包括主机设备302、任何数量(在该示例中为四个)的计算设备304a、304b、304c和304d(可以统称为304)、以及任何数量(在该示例中为两个)的存储设备306a和306b(可以统称为306)。主机设备302、计算设备304和/或存储设备306可以通过互连308进行通信。50.出于说明的目的,计算设备304中的每一个可以处理ml工作负载310的对应阶段,其在该实施例中可以被实施为神经网络。因此,计算设备304a、304b、304c和304d可以分别处理神经网络工作负载310的对应阶段310a、310b、310c和310d。最终阶段310d可以包括例如一个或多个全连接(fc)层和softmax函数。然而,图3中示出的系统可以用于任何其他类型的计算和/或处理。51.主机设备302可以包括中央处理单元(cpu)312和存储器314,其在该实施例中可以用动态随机存取存储器(dram)来实施,但是也可以用任何其他类型的存储器来实施。52.出于说明的目的,计算设备304a、304b、304c和304d中的每一个可以分别包括对应的gpu316a、316b、316c和316d(分别指示为gpu0、gpu1、gpu2和gpu3)。gpu316a、316b、316c和316d可以统称为316。然而,可以使用任何其他类型的计算和/或处理装置。53.计算设备304a、304b、304c和304d中的每一个还可以分别包括对应的本地设备存储器318a、318b、318c和318d(分别指示为dram0、dram1、dram2和dram3)。本地设备存储器318a、318b、318c和318d可以统称为318。出于说明的目的,存储器318可以用如图3所示的dram来实施,但是可以使用任何其他类型的存储器。54.存储设备306a和306b中的每一个可以分别包括对应的本地存储介质320a和320b(分别指示为存储装置0和存储装置1)。本地存储介质320a和320b可以统称为320。出于说明的目的,可以将存储介质320假设为nand闪存,但是可以使用任何类型的存储器和/或存储介质。55.存储设备306a和306b中的每一个还可以分别包括对应的预取器324a和324b(分别指示为预取器0和预取器1)。预取器324a和324b可以统称为324。56.出于说明的目的,互连308可以用cxl来实施,但是可以使用任何其他类型的(多个)互连和/或(多个)协议。57.cpu312、gpu316和/或预取器324中的一个或多个可以例如由主机302分配通用启动器标识符(giid)。在图3中示出的实施例中,cpu312、gpu316a、316b、316c和316d以及预取器324a和324b可以分别被分配giid0、giid1、giid2、giid3、giid4、giid5、giid6。giid可以用于例如跟踪生产者-消费者关系和/或便于整个系统中的数据、命令等的传输。58.预取器324中的任何一个可以使用通过互连308的连接将数据推送到存储器314和/或318中的任何一个,其一些示例由虚线箭头326示出。预取器324中的任何一个可以使用通过互连308的连接与gpu316和/或cpu312中的任何一个进行通信,其一些示例由实线箭头328示出。59.图4示出根据本公开的示例实施例的用于存储数据的方法的示例实施例。图4中示出的实施例可以例如与本文公开的任何系统一起使用,包括图2和/或图3中示出的系统。60.参考图4,存储设备406可以包括多流接口430、闪存转换层(ftl)432和存储介质(在该示例中为nand闪存)420。61.在主机402上运行的应用403可以向预取器424提供生产者-消费者关系的一个或多个指示。一个或多个指示(也可以被称为提示)可以包括如表1所示的可由预取器424存储的信息,诸如生产者giid、消费者giid、数据地址和/或数据大小(以字节、页、块等)。62.表163.生产者giid消费者giid数据地址数据大小120x10000000128230x200000001024340x3000000051264.在一些实施例中,例如,在使用一个或多个cxl字段——诸如标签字段和/或元值字段和元字段字段——的数据读取和/或写入期间,应用403可以将生产者和/或消费者giid传递给预取器。主机402和/或应用403可以例如用图3中示出的对应主机302来实施,如箭头434所示。在一些实施例中,应用403可以例如通过应用编程接口(api)对预取器进行编程来以编程方式向预取器424提供生产者-消费者关系的一个或多个指示。在一些实施例中,预取器424还可以包括检测逻辑425,以监视数据读取和/或写入来检测一个或多个生产者-消费者关系。65.参考图4,在一些实施例中,由应用403和/或生产者设备提供的数据可以基于例如一个或多个生产者-消费者关系和/或一个或多个数据寿命被存储在与存储设备的存储介质420中的流相关联的一个或多个流和/或块中。例如,如图4所示,应用403中的数据页数据0、数据1、数据2、数据3、数据4和/或数据5可以具有由图4中示出的各种阴影指示的生产者-消费者关系和/或数据寿命。应用403被示出为向预取器424提供数据页数据1的生产者giid1和消费者giid2,如箭头436所示。基于诸如表1中所示的生产者-消费者关系、和/或数据寿命,预取器可以通过多流接口430和ftl432将数据存储在存储介质420分别与由流标识符流id0、流id1、流id2和流id3标识的一个或多个流相关联的块0、块1、块2和/或块3中。66.在图4中示出的示例中,数据1和数据5可以被放置在块0中,数据0和数据4可以被存储在块1中,数据3可以被存储在块2中,并且数据2可以被存储在块3中。67.因此,在一些实施例中,预取器可以利用用于基于流的放置的现有装置来将相关数据放置在相同的流中,这取决于实施细节,可以提供要被预取和/或推送到计算设备的数据的高效存储技术。68.图5示出根据本公开的示例实施例的用于存储、预取和传输数据的方法的示例实施例。图5中示出的实施例可以例如与本文公开的任何系统和/或方法一起使用。69.参考图5,在操作502,应用可以向存储设备的预取器发送包括一个或多个生产者-消费者关系的一个或多个指示的信息。预取器可以将可以包括giid和/或关系的信息例如存储在诸如表1的数据结构中。70.在操作504,存储设备可以基于例如来自应用的一个或多个指示来做出一个或多个数据放置决定(例如,使用预取器),用于在设备处存储数据。例如,预取器可以基于生产者-消费者关系的一个或多个指示,选择用于存储从主机和/或一个或多个生产者设备接收的数据的一个或多个流。在操作506,预取器然后可以通过存储设备中的多流接口将数据存储在所选择的流中。71.在操作508,存储设备可以例如使用预取器中的检测逻辑来检测可以指示一个或多个生产者设备与一个或多个消费者设备之间的生产者-消费者关系的一个或多个访问模式。对访问模式的检测可以是对由应用和/或主机提供的生产者-消费者关系的指示的补充或替代。基于一个或多个指示的生产者-消费者关系和/或一个或多个检测的访问模式,预取器可以选择为其预取数据的一个或多个消费者设备、以及预取数据的一个或多个时间。例如,当消费者设备的存储器中有空闲空间用于数据时,预取器可以预取特定消费者设备的数据。72.在操作510,预取器可以通过诸如cxl的互连将预取数据推送到消费者设备。在一些实施例中,预取器可以执行一个或多个操作,以在推送数据之前在消费者设备处为数据分配目标空间,如下面更详细描述的。73.在一些实施例中,应用可以例如通过应用编程接口(api)对预取器进行编程以编程方式向预取器提供生产者-消费者关系的一个或多个指示。例如,当用户或程序员可以洞察工作负载的数据访问模式时,可以使用这样的布置。用于向预取器发送一个或多个指示(例如,提示)的过程的伪代码定义的示例可以如下:74.send_prefetch_hint(constvoid*prefetcher,size_tproducer_id,size_tconsumer_id,constvoid*buffer_ptr,size_tsize,stringaccess_pattern);75.《一个或多个计算操作》76.可以与生产者-消费者关系的指示一起提供的参数的示例可以如下:77.prefetcher:预取器设备78.producer_id:生产者设备的id79.consumer_id:消费者设备的id80.buffer_ptr:由生产者写入并由消费者读取的存储器的指针81.size:由生产者写入的存储器的大小82.access_pattern:可以是顺序的、随机的或在运行时确定的。83.对于应用可以提供预取器要识别的访问模式(例如,预取器可以在gpu0内核运行结束之前将数据推送到gpu1)的情况,用于向预取器发送一个或多个指示的过程的示例调用可以如下:84.send_prefetch_hint(,,,,,“sequential”),1-》485.对于访问模式可以由预取器在运行时间时确定的情况,该过程的示例调用可以如下:86.send_prefetch_hint(,,,,,“runtime”),1-》2-》3-》487.图6示出根据本公开的示例实施例的用于预取数据的方法的示例实施例。图6中示出的实施例可以例如与本文公开的任何系统和/或方法一起使用,但是出于说明的目的,图6中示出的实施例可以在图3中示出的系统的上下文中描述。88.参考图6,在操作(1),gpu316a(gpu0)可以将16个数据元素写入存储介质320a(存储装置0),如虚线638所指示的。为了通知预取器324a(预取器0)写入完成,gpu0可以使用例如cxl互连将任何数据写入预定的存储器位置。89.在预取器在运行时间时确定访问模式的实施方式中,预取器0可以在操作(2)观察到,在gpu0写入数据638之后,gpu1可以依次读取数据元素640a、640b、640c和640d。在操作(3),基于观察到的访问模式,当预取器0观察到gpu0写入数据638时,预取器0可以预取数据640。可替代地或可附加地,预取器0可以观察到gpu1顺序地读取数据元素640a、640b、640c和640d,并且因此在假设gpu1接下来将读取数据元素640e、640f、640g和640i的情况下,预取这些数据元素。90.在预取器被提供gpu0和gpu1之间的生产者-消费者关系的实施方式中,预取器0可能不需要在操作(2)观察数据写入,而是可以在操作(3)观察数据写入,当gpu0写入数据638时,预取器0可以基于生产者-消费者关系来预取数据640。91.在一些实施例中,预取器0可以不执行预取操作,除非它首先验证在消费者设备处的存储器318b(dram1)中有空闲存储器可用。在一些实施例中,预取器324a可以例如使用组合和/或顺序逻辑、一个或多个神经网络等来实施。92.在操作(4),预取器0可以将预取数据640推送到消费者设备处的dram1。93.在一些实施例中,gpu1可以使用根据本公开的示例实施例的各种技术而知道推送数据的存在。例如,在预取器可以为推送数据分配存储器的实施例中,gpu1可以检查可以为推送数据分配的保留存储器区域。作为另一示例,通过检查页表数据,gpu1可以知道推送数据的存在。94.图7示出根据本公开的示例实施例的基于主机的存储器分配方法的示例实施例。例如,图7中示出的实施例可以与本文公开的任何系统和/或方法一起使用,但是出于说明的目的,图7中示出的实施例可以在图3中示出的系统的上下文中描述,其在图7中以简化形式示出。95.参考图7,在操作(1),gpu0可以将第一数据写入存储装置0,这可以由预取器0观察到。在操作(2),gpu1可以从存储装置0读取第一数据,这也可以由预取器0观察到。基于操作(1)和(2),预取器0可以检测gpu0和gpu1之间的访问模式。因此,在操作(3),预取器0可以向主机设备302发送请求,以在dram1中分配目标存储器,以用于到dram1的附加数据传输。该请求可以包括例如gpu1的消费者giid、要传输的数据的大小(量)以及指示要传输的数据的位置的逻辑块地址(lba)。96.在操作(4),主机设备302可以在dram1中分配所请求的存储器空间。在一些实施例中,主机设备302的cpu312可以发起第二数据从存储装置0到dram1的直接存储器访问(dma)传输,这可以在操作(5)执行。在其他实施例中,在主机设备302完成存储器分配之后,预取器0可以发起和/或执行数据传输(例如,通过预取数据并将其推送到dram1)。97.图8示出根据本公开的示例实施例的统一存储器架构的示例实施例。图8中示出的实施例可以用于例如实施图7中示出的基于主机的存储器分配方法。出于说明的目的,图8中示出的实施例可以在图3中示出的系统的上下文中描述。98.参考图8,该架构可以实施具有虚拟存储器地址(vma)的共享虚拟地址空间842,使得cpu312可以知道dram0、dram1、dram2和dram3中的存储器使用。存储器管理器844(例如,vmm)可以位于主机设备302处,以使得主机设备302能够执行存储器分配。主机302也可以运行应用803并执行设备内核驱动器805。在一些实施例中,共享虚拟地址空间842可以用于将例如层1(t1)存储器、层2(t2)存储器和/或主机存储器映射到一个或多个计算设备306和/或存储设备306。在一些实施例中,一致性引擎(例如,主机设备302处的cxl一致性引擎)可以维护图8中示出的存储器之间的一致性。99.图9示出根据本公开的示例实施例的基于存储设备的存储器分配方法的示例实施例。图9中示出的实施例可以例如与本文公开的任何系统和/或方法一起使用,但是出于说明的目的,图9中示出的实施例可以在图3中示出的系统的上下文中描述,其在图9中以简化形式示出。100.参考图9,存储器314、318a、318b、318c和318d可以分别包括保留区域315、319a、319b、319c和319d。在操作(1),gpu0可以将第一数据写入存储装置0,这可以由预取器0观察到。在操作(2),gpu1可以从存储装置0读取第一数据,这也可以由预取器0观察到。基于操作(1)和(2),预取器0可以检测gpu0和gpu1之间的访问模式。因此,在操作(3),预取器0可以在dram1的保留空间319b中分配目标存储器空间,以用于到dram1的附加数据传输。预取器0可以例如使用存储设备306a处的vmm来分配目标存储器空间。101.预取器0然后可以预取附加数据并将其复制到dram1的保留空间319b中的分配的目标空间。在操作(4),预取器0可以向主机设备302发送请求,以更新新分配的空间的一个或多个页表映射。102.图10示出根据本公开的示例实施例的存储器分配方法的示例实施例。图10中示出的实施例可以例如与本文公开的任何系统和/或方法一起使用。103.参考图10,在操作1002,预取器可以发起可以例如通过主机的请求或者由预取器自己执行的存储器分配操作。如果预取器决定存储器分配由主机执行,则可以前进到操作1004,其中预取器可以向主机设备的cpu发送存储器分配请求。预取器可以例如向系统的主机cpu侧上的vmm发送请求。在操作1006,作为请求的一部分,预取器可以包括诸如要为其分配存储器的消费者设备处的gpu的消费者giid、要传输的数据的大小(量)以及指示要传输的数据的位置的lba的信息。在操作1008,主机设备处的vmm可以在对应于gpu的giid的消费者设备处的设备存储器中分配所请求的存储器。在操作1010,在为消费者设备分配目标存储器空间之后,主机可以触发来自请求预取器所位于的存储设备和消费者设备处的目标存储器的数据的dma传输。主机也可以更新页表以反映消费者设备处的新分配的目标存储器。104.然而,如果预取器决定自己分配目标存储器,则在操作1012,预取器可以用预取器处的vmm来发起分配。在操作1014,vmm可以例如从保留存储器区域分配消费者设备处的目标存储器。在操作1016,预取器可以预取数据并将其复制到消费者设备处的目标存储器。在操作1018,预取器可以请求主机设备更新页表,以反映消费者设备处的新分配的目标存储器。105.图11示出根据本公开的示例实施例的用于存储、预取和传输数据的方法的示例实施例。图11中示出的实施例可以例如与本文公开的任何系统和/或方法一起使用,但是出于说明的目的,图11中示出的实施例可以在图3中示出的系统的上下文中描述。因此,gpu0、dram1、gpu1、cpu、预取器0和存储设备可以分别指图3中的元件316a、318b、316b、312、324a和306a。106.参考图11,该方法可以开始于操作1102,此时cpu可以向预取器0发送生产者-消费者关系的一个或多个指示。在操作1104,预取器0可以存储一个或多个giid和/或关于生产者-消费者关系的信息。107.在操作1106,在存储设备306a处,gpu0可以开始将第一数据写入存储设备。在操作1108,cpu一致性引擎可以例如使用诸如标签字段的一个或多个cxl.mem字段向预取器0发送gpu0的生产者(例如,启动器)giid。在操作1110,预取器0可以基于例如所存储的指示中的一个或多个和/或所确定的放置,确定要放置来自gpu0的第一数据的流,并经由多流接口存储第一数据。在操作1112,gpu0可以通知预取器0第一数据的写入操作完成,例如通过将任何数据写入预定的存储器位置。108.在操作1114,gpu1可以开始从存储设备的第一数据(由gpu0写入的)的读取操作。在操作1116,cpu一致性引擎可以例如使用诸如标签字段的一个或多个cxl.mem字段向预取器0发送gpu1的消费者giid。在操作1118,预取器0可以将第一数据从存储设备发送到gpu1。在操作1120,预取器0可以基于写入操作1106和读取操作1114来检测gpu0和gpu1之间的运行时访问模式。在一些实施例中,例如,如果cpu已经发送了gpu0和gpu1之间的生产者-消费者关系的一个或多个指示,则预取器可以不检测该模式。109.在操作1122,预取器0可以发起利用vmm的对dram1处的目标存储器的存储器分配。如果预取器通过向主机cpu请求存储器分配来发起存储器分配,则位于主机设备的vmm可以执行该分配。然而,如果预取器0自己执行存储器分配,则它可以使用位于存储设备的vmm。在操作1124,vmm(无论是在主机cpu还是存储设备处)可以在dram1中分配目标空间。在操作1126,预取器0可以从数据被存储在其中的流中预取该数据。在操作1128,预取器0可以将预取数据推送到dram1。在操作1130,预取器0可以请求主机cpu更新关于被推送到dram1的数据的页表。110.图12示出根据本公开的示例实施例的异构存储器控制系统的示例实施例。111.图12中示出的实施例可以包括高级配置和电源接口(advancedconfigurationandpowerinterface,acpi)根表1202、系统资源关联表(systemresourceaffinitytable,srat)1204和异构存储器属性表(heterogeneousmemoryattributestable,hmat)1206,其可以用于实施(多个)存储器邻近域属性结构1208、(多个)系统位置延迟和带宽信息结构1210和(多个)存储器侧高速缓存信息结构1212,该结构又可以实施一个或多个存储器邻近域1216、一个或多个邻近域1214和/或一个或多个邻近域编号(1218)。112.图12中示出的实施例可以用于例如使用一个或多个cxl特征来获得计算设备处的一个或多个gpu、存储设备处的预取器、i/o设备等的giid。可附加地,acpi根表1202、srat1204和/或hmat1206可以提供关于处理器、存储器范围、gi(例如,异构处理器、加速器、gpu和/或具有集成计算或dma引擎的i/o设备)的信息。在一些实施方式中,从第一cxl设备到第二cxl设备的一些或所有请求可以通过主机来路由。然而,在根据本公开的示例实施例的一些系统中,主机cpu可以将生产者和/或消费者giid信息传递给预取器(例如,在存储控制器处),例如cxl.mem标签和/或元值+元字段字段。113.图13示出根据本公开的示例实施例的可以用于实施数据预取和传输的主机装置的示例实施例。图13中示出的主机装置1300可以包括处理器1302(可以包括存储器控制器1304)、系统存储器1306、存储器分配器1308、vmm1310和/或互连接口1312(可以例如使用cxl来实施)。图13中示出的任何或所有组件可以通过一个或多个系统总线1314进行通信。在一些实施例中,图13中示出的主机装置1300可以用于实施本文公开的任何主机功能,包括与向预取器提供生产者-消费者关系的一个或多个指示和/或在计算单元中为推送数据分配存储器有关的任何功能。在一些实施例中,图13中示出的组件中的一个或多个可以使用其他组件来实施。例如,在一些实施例中,存储器分配器1308和/或vmm1310中的一个或多个可以例如通过处理器1302执行存储在系统存储器1306或其他存储器中的指令来实施。114.图14示出根据本公开的示例实施例的可以用于实施数据预取和传输的设备的示例实施例。设备1400可以包括设备控制器1402、预取器1404(可以包括检测逻辑1406)、多流接口1408、vmm1410、介质转换层1412、存储介质1414和互连接口1416。图14中示出的组件可以通过一个或多个设备总线1418进行通信。在一些实施例中,图14中示出的设备1400可以用于实施本文公开的预取和/或数据推送功能中的任何一个。115.本文描述的任何功能(包括关于图1-图14描述的主机功能、设备功能等(例如,预取器、检测逻辑等)中的任何一个)可以用硬件、软件或者其任何组合来实施,包括执行存储在任何类型的存储器中的指令的组合逻辑、时序逻辑、一个或多个定时器、计数器、寄存器、状态机、诸如dram和/或静态随机存取存储器(sram)的易失性存储器、非易失性存储器和/或其任何组合、复杂可编程逻辑器件(cpld)、现场可编程门阵列(fpga)、专用集成电路(asic)、中央处理单元(cpu)(例如诸如x86处理器的复杂指令集计算机(cisc)处理器和/或诸如arm处理器的精简指令集计算机(risc)处理器)、图形处理单元(gpu)、神经处理单元(npu)等。在一些实施例中,一个或多个组件可以被实施为片上系统(soc)。116.本文公开的任何存储设备可以使用任何连接器配置(诸如串行ata(sata)、小型计算机系统接口(scsi)、串行附接scsi(sas)、u.2等),以任何形状因子(诸如3.5英寸、2.5英寸、1.8英寸、m.2、企业和数据中心ssd形状因子(edsff)、nf1等)来实施。本文公开的任何存储设备可以用服务器机箱、服务器机架、数据室、数据中心、边缘数据中心、移动边缘数据中心和/或其任何组合来全部或部分实施和/或与其结合使用。117.图15示出根据本公开的示例实施例的用于传输数据的方法的实施例。该方法可以开始于操作1502。在操作1504,该方法可以通过互连从生产者设备向存储设备写入数据。例如,gpu可以将第一计算的结果作为第一数据写入存储设备。在操作1506,该方法可以确定数据的消费者设备。例如,数据的消费者设备可以形成可以使用第一数据作为下一阶段的计算的输入的流水线的下一阶段。在操作1508,该方法可以从存储设备预取数据。在操作1510,该方法可以基于该确定,通过互连将数据传输到消费者设备。例如,预取器可以将预取数据推送到消费者设备处的存储器。118.图15中示出的实施例以及本文描述的所有其他实施例是示例操作和/或组件。在一些实施例中,可以省略一些操作和/或组件,和/或可以包括其他操作和/或组件。此外,在一些实施例中,操作和/或组件的时间和/或空间顺序可以变化。尽管一些组件和/或操作可以被示出为单独的组件,但是在一些实施例中,分开示出的一些组件和/或操作可以被集成到单个组件和/或操作中,和/或被示出为单个组件和/或操作的一些组件和/或操作可以用多个组件和/或操作来实施。119.已经在各种实施细节的上下文中描述了上面公开的一些实施例,但是本公开的原理不限于这些或任何其他具体细节。例如,一些功能已经被描述为由某些组件实施,但是在其他实施例中,该功能可以被分布在处于不同位置并具有各种用户接口的不同系统和组件之间。某些实施例已经被描述为具有特定过程、操作等,但是这些术语也包含其中特定过程、操作等可以用多个过程、操作等来实施或者其中多个过程、操作等可以被集成到单个过程、步骤等中的实施例。提及组件或元件可以仅指该组件或元件的一部分。例如,提及块可以指整个块或者一个或多个子块。在本公开和权利要求中使用诸如“第一”和“第二”的术语可以仅仅是出于区分它们所修饰的事物的目的,并且可以不指示任何空间或时间顺序,除非从上下文中另外明显看出。在一些实施例中,提及事物可以指该事物的至少一部分,例如,“基于”可以指“至少部分地基于”等。提及第一元件可以不暗示第二元件的存在。本文公开的原理具有独立的效用并且可以被单独体现,并且不是每个实施例都可以利用每个原理。然而,这些原理也可以以各种组合来体现,其中一些可以以协同的方式放大单独原理的益处。120.上述各种细节和实施例可以被组合以产生根据本专利公开的发明原理的附加实施例。由于本专利公开的发明原理可以在布置和细节上进行修改,而不脱离发明构思,因此这样的改变和修改被认为落入权利要求的范围内。当前第1页12当前第1页12

技术特征:


1.一种用于传输数据的方法,所述方法包括:通过互连从生产者设备向存储设备写入数据;确定数据的消费者设备;从存储设备预取所述数据;以及基于所述确定,通过互连将所述数据传输到所述消费者设备。2.根据权利要求1所述的方法,还包括:在存储设备的预取器处接收生产者设备和消费者设备之间的关系的指示;以及基于所述指示来确定消费者设备。3.根据权利要求2所述的方法,还包括:基于生产者设备和消费者设备之间的关系,将数据放置在存储设备处的流中。4.根据权利要求2所述的方法,其中,所述指示由与消费者设备相关联的应用提供。5.根据权利要求2所述的方法,其中,接收所述指示包括通过互连的一致性存储器协议接收所述指示。6.根据权利要求5所述的方法,其中,通过一致性存储器协议接收所述指示包括:通过一致性存储器协议的一个或多个字段接收生产者标识符id和消费者id。7.根据权利要求1所述的方法,还包括:在存储设备的预取器处检测生产者设备和消费者设备的访问模式;以及基于访问模式来确定消费者设备。8.根据权利要求1所述的方法,还包括:由主机为数据分配消费者设备处的存储器。9.根据权利要求1所述的方法,还包括:由存储设备为数据分配消费者设备处的存储器。10.根据权利要求9所述的方法,其中,消费者设备处的存储器包括保留存储器。11.根据权利要求9所述的方法,还包括:由主机更新消费者设备处的存储器的映射。12.根据权利要求1所述的方法,其中,所述传输与消费者设备处的计算操作重叠。13.根据权利要求1所述的方法,还包括:向存储设备的预取器通知写入的状态。14.一种设备,包括:互连接口;存储介质;以及预取器,被配置为:执行对存储在存储介质中的数据的消费者设备的确定;从所述设备预取所述数据;和基于所述确定,通过互连接口将所述数据传输到消费者设备。15.根据权利要求14所述的设备,还包括数据结构,所述数据结构被配置为存储关于数据的生产者设备和所述消费者设备之间的关系的信息。16.根据权利要求15所述的设备,还包括多流接口,所述多流接口被配置为基于所述关系将通过互连接口接收的数据存储在存储介质的流中。17.根据权利要求14所述的设备,其中,预取器包括检测逻辑,所述检测逻辑被配置为确定数据的消费者设备和生产者设备的访问模式。18.一种系统,包括:
互连;生产者设备,耦合到所述互连;消费者设备,耦合到所述互连;存储设备,耦合到所述互连,并且被配置为存储通过互连从生产者设备接收的数据;以及预取器,耦合到所述互连;其中,预取器被配置为:基于生产者设备来执行对消费者设备的确定;预取所述数据;和基于所述确定,通过互连将所述数据传输到消费者设备。19.根据权利要求18所述的系统,其中,生产者设备被配置为向预取器通知通过互连从生产者设备接收的数据的状态。20.根据权利要求18所述的系统,还包括主机设备,所述主机设备耦合到互连,并被配置为通过互连向预取器发送关于生产者设备和消费者设备之间的关系的信息。

技术总结


一种用于传输数据的方法可以包括:通过互连从生产者设备向存储设备写入数据;确定数据的消费者设备;从存储设备预取数据;以及基于该确定,通过互连将数据传输到消费者设备。该方法还可以包括在存储设备的预取器处接收生产者设备和消费者设备之间的关系的指示,并且基于该指示来确定消费者设备。该方法还可以包括基于生产者设备和消费者设备之间的关系,将数据放置在存储设备处的流中。该指示可以由与消费者设备相关联的应用提供。接收指示可以包括通过互连的一致性存储器协议接收指示。括通过互连的一致性存储器协议接收指示。括通过互连的一致性存储器协议接收指示。


技术研发人员:

玛丽.梅.阮 R.皮楚马尼 朴熙权 奇亮奭

受保护的技术使用者:

三星电子株式会社

技术研发日:

2022.08.19

技术公布日:

2023/2/20

本文发布于:2024-09-22 09:30:19,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/53225.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:设备   存储器   数据   多个
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议