用于利用一致性接口的队列管理的系统、方法和设备与流程

未命名 08-02 阅读:153 评论:0

用于利用一致性接口的队列管理的系统、方法和设备
1.相关申请的交叉引用
2.本技术要求2022年01月27日提交的题为“systems,methods,and devices for queue handling for a coherent interface”的美国临时专利申请序列第63/303,985号和2022年04月01日提交的题为“systems,methods,and devices for queue management with a coherent interface”的美国专利申请序列第17/712,066号的优先权和权益,这些申请通过引用结合于此。
技术领域
3.本公开总体上涉及队列管理,更具体地,涉及用于利用一致性接口(coherent interface)的队列管理的系统、方法和设备。


背景技术:

4.主机和设备可以使用可以利用一个或多个队列的协议进行通信。主机可以将诸如命令之类的条目写入提交队列。主机还可以向设备提供条目已被写入提交队列的指示。基于接收到该指示,设备可以从提交队列中提取条目并对其进行处理。设备还可以将诸如完成之类的条目写入完成队列。主机可以从完成队列中获取条目并对其进行处理。
5.背景技术部分中公开的上述信息仅用于增强对发明原理的背景的理解,因此它可能包含不构成现有技术的信息。


技术实现要素:

6.一种方法可以包括:由第一装置访问队列,其中队列是可通过第二装置访问的,并且第一装置可以通过一致性接口连接到第二装置;以及通过一致性接口向第二装置指示访问。指示可以包括通过监视机制进行指示。指示可以包括生成监视请求。指示可以包括基于监视请求生成警报。队列可以包括提交队列。队列可以包括完成队列。访问可以包括从队列中读取条目。访问可以包括将条目写入队列。条目可以包括命令。条目可以包括完成。第一装置可以包括主机,并且第二装置可以包括设备。队列可以位于主机处。队列可以位于设备处。队列可以与通信协议相关联。通信协议可以包括存储协议。存储协议可以包括非易失性快速存储器(nonvolatile memory express,nvme)协议。一致性接口可以包括计算高速链路(compute express link,cxl)接口。
7.一种设备可以包括一致性接口和控制器,控制器被配置为使用一致性接口使用队列进行通信,并且通过一致性接口接收对队列的访问的指示。设备可以包括高速缓存,并且一致性接口可以被配置为维护高速缓存的至少一部分的一致性。队列可以至少部分位于高速缓存中。设备可以包括共享的本地存储器,并且一致性接口可以被配置为维护共享的本地存储器的至少一部分的一致性。队列可以至少部分位于共享的本地存储器的至少一部分中。一致性接口可以被配置为基于访问接收监视请求。一致性接口可以被配置为基于监视请求生成警报。控制器可以被配置为从一致性接口接收警报作为指示。控制器可以被配置
为基于指示处理队列中的条目。
8.一种系统可以包括主机以及使用一致性接口耦合到主机的设备,设备可以包括控制器,控制器被配置为使用一致性接口使用队列与主机进行通信,并且通过一致性接口接收主机对队列的访问的指示。设备可以包括共享的本地存储器,一致性接口可以被配置为维护共享的本地存储器的至少一部分的一致性,并且队列可以至少部分位于共享的本地存储器的至少一部分中。一致性接口可以是第一一致性接口,队列可以是第一队列,指示可以是第一指示,访问可以是第一访问,并且主机还可以包括第二一致性接口,其中主机可以被配置为使用第二一致性接口使用第二队列与设备进行通信,并且通过第二一致性接口接收设备对第二队列的第二访问的第二指示。设备可以包括共享的本地存储器,第一一致性接口和第二一致性接口可以被配置为维护共享的本地存储器的至少一部分的一致性。第二队列可以至少部分位于共享的本地存储器的至少一部分中。
附图说明
9.附图不一定是按比例绘制的,并且在所有附图中,出于说明目的,类似结构或功能的元素通常可以用相同的附图标记或其部分来表示。附图仅仅是为了意图便于描述本文描述的各种实施例。附图没有描述本文公开的教导的每个方面,并且不限制权利要求的范围。为了防止附图变得模糊,不是所有的组件、连接等都被示出,并且不是所有的组件都具有附图标记。然而,根据附图组件配置的模式可以容易地看出。附图与说明书一起示出了本公开的示例实施例,并且与描述一起用于解释本公开的原理。
10.图1示出了根据本公开示例实施例的通信协议的队列方案的实施例。
11.图2示出了根据本公开示例实施例的使用一个或多个队列和一致性接口进行通信的方案的实施例。
12.图3示出了根据本公开示例实施例的使用一个或多个队列和一致性接口进行通信的系统的示例实施例。
13.图4示出了根据本公开示例实施例的使用一个或多个队列和一致性接口进行通信的方法的示例实施例。
14.图5示出了根据本公开示例实施例的主机装置的示例实施例。
15.图6示出了根据本公开示例实施例的设备的示例实施例。
16.图7示出了根据本公开示例实施例的用于通信方法的实施例。
具体实施方式
17.通信协议可以使用一个或多个队列在组件之间交换命令、和/或完成等。例如,为了从设备读取数据,主机可以将读取命令放置在可以通过设备可访问的提交队列中。主机还可以向设备发送指示,以向设备通知命令存在于提交队列中。设备可以从提交队列中提取读取命令,并且(例如通过向主机发送所请求的数据)处理读取命令。设备还可以将完成放置在完成队列中,以向主机通知读取命令被完成。
18.在一些方面,通信协议可以使用指示机制来指示条目已被添加到队列。例如,除了将命令放置在提交队列中之外,主机还可以将条目写入寄存器(可以称为门铃寄存器)。对寄存器的写入可以生成中断,该中断可以向设备通知命令已被放置在提交队列中。然而,这
种指示机制可能消耗主机和/或设备资源,例如,将条目写入寄存器(可以位于设备处)、和/或服务中断等。
19.根据本公开示例实施例的通信方案可以开发一致性接口的一致性机制来执行用于队列访问的指示功能的一个或多个方面。例如,存储器一致性接口可以包括一致性机制,该一致性机制可以向一个或多个装置通知一致性存储器位置(coherent memory location)的变化。通过实施具有一致性存储器位置的队列,一致性机制可以向一个或多个装置(例如,主机、和/或设备等)通知队列已被访问(例如,被写入和/或从中读取)。取决于实施细节,这可以减少或消除用于指示队列已被访问的资源量。例如,取决于实施细节,这可以减少或消除门铃寄存器、一个或多个处理操作、和/或一个或多个中断等的使用。
20.在一些实施例中,一致性接口的一致性特征可以用于实施队列的指示机制。例如,一致性接口可以实施高速缓存一致性协议(coherency protocol),其可以用于例如向设备提供对主机存储器的一部分的访问。主存储器的该部分的副本可以被存储在设备处的高速缓存存储器中,并且一致性接口的高速缓存一致性机制可以维护设备处的高速缓存存储器和主存储器的该部分的一致性。在一些实施例中,一致性机制可以使用监视机制(例如,探听(snooping)机制)来确定存储器位置已被更新(例如,在主机处或在设备处的对应高速缓存处)。在这样的实施例中,如果使用设备高速缓存存储器来实施队列,则监视机制可以用于向主机和/或设备指示队列已被访问。
21.作为另一示例,一致性接口可以实施存储器一致性协议,其可以用于例如向主机提供对设备处的本地存储器的共享的访问。一致性接口的存储器一致性机制可以维护共享的设备存储器的一致性,例如,以使得如果共享的存储器位置被主机或设备之一更新,可以向主机或设备中的另一个通知以防止其使用过期数据。在这样的实施例中,如果使用设备共享的存储器来实施队列,则一致性接口的存储器一致性机制可以用于向主机和/或设备指示队列已被访问。
22.替代地或附加地,一致性接口的高速缓存一致性机制和存储器一致性机制可以结合使用以实施队列的指示机制。例如,可以使用一致性接口的存储器一致性机制在设备共享的存储器位置中实施队列。一致性接口的高速缓存一致性机制可以用于(例如,通过探听)监视设备共享的存储器位置中的队列以确定队列已被主机更新,并且向设备发送指示(例如,警报)。
23.图1示出了根据本公开示例实施例的通信协议的队列方案的实施例。例如,图1所示的实施例可以与诸如非易失性快速存储器(nvme)之类的存储协议一起使用,nvme可以使用诸如外围组件高速互连(peripheral component interconnect express,pcie)之类的互连和/或可称为cxl.io的cxl的非一致性输入和/或输出(i/o或io)协议。作为另一示例,图1所示的实施例可以与可使用诸如以太网之类的网络的基于网状结构的nvme(nvme-over-fabric,nvmeof)协议一起使用,但是原理不限于这些实施细节或任何其他实施细节。在以支持cxl实施的一些实施例中,cxl.io协议可以基本上对应于pcie,而cxl.mem和/或cxl.cache协议可以实施一个或多个可提供一致性的附加特征。
24.图1所示的实施例可以包括主机102和设备104。主机102可以包括位于例如主机存储器110中的提交队列(submission queue,sq)106和完成队列(completion queue,cq)108。在其他实施例中,提交队列106和/或完成队列108可以位于设备104处和/或任何其他
位置处。设备104可以包括控制器112,控制器112可以包括提交队列尾部门铃寄存器114和/或完成队列头部门铃寄存器116。
25.在一些实施例中,提交队列106和/或完成队列108可以用于例如使设备104能够接收和/或处理来自主机102的一个或多个命令。提交队列106和/或完成队列108可以被实施为例如循环先入先出(first-in-first-out,fifo)队列,其中队列的一端可以在逻辑上环绕到队列的另一端以使条目能够无限地添加到队列中和从队列中移除(在一些实施例中,受制于最大条目数量),即使队列可以用有限线性地址空间来实施。参考提交队列106或完成队列108,具有最老的未提取的条目(例如,命令或完成)的槽可以称为头部,并且下一个可用的未占用的槽可以称为尾部。提交队列106的头部可以由头部条目指针103(也可以称为头部指针)指向,并且提交队列106的尾部可以由尾部条目指针105(也可以称为尾部指针)指向。完成队列108的头部可以由头部条目指针107指向,并且完成队列108的尾部可以由尾部条目指针109指向。当队列为空时,头部条目指针和尾部条目指针可以指向相同的位置。
26.一种用于接收和/或处理来自主机102的一个或多个命令的方法的示例实施例可以如下进行。
27.在操作(1),主机102可以将一个或多个命令(例如,写入)放置在提交队列106中开始于尾部条目指针105指向的空槽的一个或多个槽中(例如,每个槽一个命令)。尾部条目指针105然后可以被更新以指向提交队列106中的下一个可用槽。
28.在操作(2),主机102还可以更新(例如,写入)提交队列尾部门铃寄存器(submission queue tail doorbell register,sq-tdb)114,以发起可以向控制器112通知一个或多个新命令已被放置在提交队列106中的过程。例如,主机102可以将提交队列尾部条目指针105的新值写入提交队列尾部门铃寄存器114。
29.在一些实施例中,可以用硬件、软件或其组合来监视提交队列尾部门铃寄存器114,以向控制器112提供一个或多个新命令已被放置在提交队列106中的指示。例如,在一些实施例中,提交队列尾部门铃寄存器114可以被实施为硬件监视的寄存器或存储器位置(例如,诸如控制器112处和/或设备104处的pcie位置之类的位置),其可以基于寄存器114的更新为设备104生成中断。在一些实施例中,中断可以用作对控制器112和/或设备104的一个或多个新命令已被放置在提交队列106中的指示。
30.在一些实施例中,接收一个或多个新命令被放置在提交队列106中的指示可以使控制器112能够跟踪可能存在于提交队列106中的未提取和/或未处理的命令数量。在一些实施例中,该信息可以与例如命令仲裁过程一起使用,命令仲裁过程可以使控制器112能够确定控制器112可以从哪个提交队列(如果有多个提交队列的话)提取一个或多个命令。
31.在操作(3),控制器112可以从由头部条目指针103指向的位置开始从提交队列106(例如,通过读取)提取一个或多个命令。例如,可以使用设备104可访问的存储器位置(例如,pcie存储器位置)来实施头部条目指针103。在一些实施例中,头部条目指针103可以作为提交队列106的初始化过程的一部分来建立。然后,可以更新头部条目指针103,以指向提交队列106中的下一个(例如,最老的)未提取的命令。
32.在图1所示的实施例中,提交队列106可以是位于主机102处的循环队列。因此,对于主机来说可能有益的是,跟踪提交队列106的头部位置,例如以使提交队列106环绕
(wrap),从而防止提交队列106的头部和尾部之间的冲突。在一些实施例中,头部条目指针103可以是主机102可访问的,因此,主机102可以读取头部条目指针103以跟踪提交队列106的头部位置。然而,在一些其他实施例中,主机102可能不能直接访问提交队列106的头部条目指针103。因此,图1所示的方案可以实施一种使主机102能够跟踪提交队列106的头部位置的机制。例如,在一些实施例中,这样的机制可以基本上例如使用pcie基地址寄存器,来被实施为提交队列头部门铃寄存器。作为另一示例,在一些实施例中,这样的机制可以通过设备104按照下面描述的完成队列108中的条目(例如,每个条目)向主机102发送头部条目指针103的当前值来实施。
33.在操作(4),控制器112可以处理它已经从提交队列106中提取的一个或多个命令。在一些实施例中,控制器112可以无序地处理一个或多个命令。在一些实施例中,提取和/或处理可以称为消耗(comsuming)。
34.在操作(5),控制器112可以在完成队列108中从例如可以由完成队列尾部条目指针109指向的下一个可用槽开始放置与一个或多个已处理命令相对应的一个或多个完成。完成队列尾部条目指针109可以被更新以指向完成队列108中的下一个可用槽。在一些实施例中,完成可以包括可以从先前条目反转的阶段标签,例如,以向主机102指示完成队列条目(例如,新完成)是可用于处理的新条目。
35.在操作(6),控制器112可以生成中断(例如,基于管脚的中断、用消息信号发送的中断(msi)、和/或扩展的msi中断(msi-x)等)以向主机102指示一个或多个完成已被添加到完成队列108。在一些实施例中,针对一个或多个完成的一个或多个中断可以被合并成较少数量的中断。
36.在操作(7),主机102可以从例如可以由完成队列头部条目指针107指向的头部开始从完成队列108(例如,通过读取)提取一个或多个完成。在一些实施例中,主机102可以处理它从完成队列108中提取的完成中的一个或多个。在一些实施例中,主机102可以继续提取和/或处理完成,例如,直到它遇到具有从先前提取的完成的阶段标签反转的阶段标签的完成。
37.在操作(8),主机102可以更新(例如,写入)完成队列头部门铃寄存器(cq-hdb)116,以发起可以向控制器112通知(例如,通过从完成队列108中读取一个或多个完成)已经从完成队列108中移除(例如,释放)一个或多个完成的过程。例如,主机102可以将完成队列头部条目指针107的新值写入完成队列头部门铃寄存器116。在一些实施例中,主机102可以在更新相关联的完成队列头部门铃寄存器116之前提取和/或处理一个或多个完成。
38.针对图1描述的方法和/或装置可以使使用一个或多个队列的通信协议能够协调主机102和设备104的活动(例如,保持锁步(lock-step))。然而,取决于实施细节,涉及一个或多个门铃寄存器的方案的使用可能消耗主机和/或设备资源,例如,用于主机102将一个或多个条目写入一个或多个寄存器114和/或116(可以位于设备104处)、和/或服务一个或多个中断等。
39.为了说明的目的,一些实施例可以在一些具体实施细节的上下文中描述。然而,原理不限于这些或任何其他实施细节。
40.图2示出了根据本公开示例实施例的用于使用一个或多个队列和一致性接口进行通信的方案的实施例。图2所示的实施例可以包括第一装置222和第二装置224。第一装置
222可以包括第一一致性接口226。第二装置224可以包括第二一致性接口228和控制器230。第一一致性接口226和第二一致性接口228可以通过通信连接232进行通信。在一些实施例中,第一装置222和/或第二装置224可以被配置为主机、客户端、和/或设备等,或其任何组合。在一些实施例中,控制器230可以是主机控制器、客户端控制器、和/或设备控制器等。在一些实施例中,除了一致性消息(coherent message)之外,第一一致性接口226和/或第二一致性接口228还可以传递非一致性(non-coherent)消息。例如,在实施对cxl的支持的实施例中,cxl.io协议可以用于传递非一致性消息。替代地或附加地,一些实施例可以例如使用除了第一一致性接口226和/或第二一致性接口228之外的一个或多个接口(例如,具有非一致性消息传递能力的一个或多个接口)来传递非一致性消息。
41.控制器230可以由第二装置224使用,以使用通信协议通过第二一致性接口228与第一装置222进行通信,该通信协议可以使用一个或多个队列234在第一装置222与第二装置224之间交换请求、命令、和/或完成等。在一些实施例中,一个或多个队列234中的一个或多个可以例如用如上关于图1描述的循环先进先出(fifo)来实施。在一些实施例中,一个或多个队列234中的一个或多个可以用任何其他类型的队列布置来实施。例如,在一些实施例中,第一装置222可以用主机来实施,第二装置224可以用设备来实施,并且队列234可以用主机可以向其中写入命令设备执行一个或多个操作的条目的存储器位置来实施。设备可以(例如,通过指示236)检测由主机进行的写入,并且执行由条目命令的一个或多个操作。设备可以写回存储位置,以向主机指示一个或多个操作的至少一部分已经完成。在一些实施例中,该存储器位置可以在原子存储器访问环境中实施,原子存储器访问环境可以例如在第一中央处理单元(cpu)与第二cpu之间、在cpu与图形处理单元(gpu)之间、和/或在cpu与加速器之间等维持同步。在一些实施例中,并且取决于实施细节,这样的存储器位置可以用或可以不用诸如fifo、sq、和/或cq等的模型来实施。
42.一个或多个队列234可以位于第二装置224处,如图2中的虚线轮廓所示。附加地或替代地,一个或多个队列234可以位于第一装置222处,可以部分位于第一装置222处且部分位于第二装置224处,或者可以位于任何其他一个或多个位置处。在一些实施例中,例如,如果队列234用第二装置224处的一致性高速缓存(coherent cache)来实施,该一致性高速缓存被配置为高速缓存第一装置222处的存储器的一个或多个位置,则一个或多个队列234中的一个或多个可以基本上位于第一装置222和第二装置224二者处。
43.第二一致性接口228可以向控制器230提供第一装置222对一个或多个队列234中的一个或多个的访问的指示236。在一些实施例中,访问队列可以指访问队列中的条目、和/或指向队列中的位置(例如,条目)的指针等。例如,在一些实施例中,指示236可以指示对一个或多个存储器位置的访问(例如,读取和/或写入),该一个或多个存储器位置可以至少部分被包含在一个或多个队列234中的一个或多个中,和/或指向一个或多个队列234中的一个或多个中的位置。在一些实施例中,并且取决于实施细节,图2所示的实施例可以利用第一一致性接口226和/或第二一致性接口228的一致性机制来提供指示236。例如,第一一致性接口226和/或第二一致性接口228可以实施一致性机制,该一致性机制可以向第一装置222和/或第二装置224通知第一装置222和/或第二装置224处的一个或多个高速缓存位置和/或共享的一致性存储器位置的变化。通过用一致性高速缓存和/或一致性存储器位置来实施一个或多个队列234中的一个或多个和/或指向队列中的一个或多个位置的一个或多
个指针,一致性机制可以提供一个或多个队列234中的一个或多个和/或指向队列中的一个或多个位置的一个或多个指针已被第一装置222访问的指示236。取决于实施细节,这可以减少或消除用于提供指示236的资源量。例如,取决于实施细节,这可以减少或消除门铃寄存器的使用、一个或多个处理操作、和/或一个或多个中断等。
44.第一装置222和/或第二装置224可以用任何类型的装置来实施,包括服务器(诸如计算服务器、存储服务器、和/或网络服务器等)、计算机(诸如工作站、个人计算机、平板电脑、和/或智能电话等)、设备(诸如加速器设备、存储设备、网络设备、存储器扩展设备和/或存储器缓冲设备、gpu、神经处理单元(npu)、和/或张量处理单元(tpu)等),或其任何组合。
45.第一一致性接口226和/或第二一致性接口228可以用任何类型的一致性接口(诸如,gen-z、开放一致性加速器处理器接口(open coherent accelerator processor interface,opencapi)、和/或加速器高速缓存一致性互连(cache coherent interconnect for accelerators,ccix)等)和/或诸如计算高速链路(cxl)之类的一致性协议和/或诸如cxl.mem、cxl.cache、和/或cxl.io等的一致性协议(coherent protocol),或其任何组合来实施。
46.控制器230可以实施可以使用一个或多个队列的任何类型的通信协议,包括例如nvme、nvme-of、pcie、cxl.io、串行ata(sata)、小型计算机系统接口(scsi)、串行附接scsi(sas)、直接存储器访问(dma)、远程dma(rdma)、基于融合以太网的rdma(roce)、和/或高级消息队列协议(amqp)等,和/或其任何组合。
47.通信连接232可以用任何类型的有线和/或无线的通信介质、接口、和/或协议等来实施,包括pcie、cxl、高级可扩展接口(axi)、以太网、传输控制协议/互联网协议(tcp/ip)、光纤通道(fibrechannel)、无限带宽(infiniband)、sata、scsi、sas、iwarp、任何一代无线网络(包括2g、3g、4g、和/或5g等)、任何一代wi-fi、蓝牙、和/或近场通信(nfc)等,或其任何组合。在一些实施例中,通信连接232可以包括通信网状结构,其包括一个或多个链路、总线、交换机、集线器、节点、路由器、转换器、和/或中继器等。在一些实施例中,图2所示的方案可以包括具有使用通信连接232和/或其扩展而连接的一个或多个附加一致性接口的一个或多个附加装置。在一些实施例中,通信连接232可以包括具有可被一个或多个主机、和/或设备等访问的存储器的交换机。在一些实施例中,通信连接232可以包括一个或多个附加装置,附加装置可以被配置为对等方(例如,同等对等方),并且在一些实施例中,附加装置可以包括一个或多个其他装置可访问的存储器。
48.在第一装置222和/或第二装置224中的一个或多个被实施为存储设备的实施例中,存储设备可以包括任何类型的非易失性存储介质,例如,基于固态介质的非易失性存储介质(例如,固态驱动器(ssd))、基于磁介质的非易失性存储介质(例如,硬盘驱动器(hdd))、和/或基于光介质的非易失性存储介质等,或其任何组合。例如,在一些实施例中,存储设备可以被实施为基于与非(nand)闪速存储器的ssd、永久存储器(诸如交叉网格非易失性存储器)、具有体电阻变化的存储器、和/或相变存储器(pcm)等,或其任何组合。任何这样的存储设备可以使用任何连接器配置(诸如sata、scsi、sas、u.2、和/或m.2等)以任何形状因子(诸如3.5英寸、2.5英寸、1.8英寸、m.2、企业和数据中心ssd形状因子(edsff)、和/或nf1等)来实施。任何这样的存储设备可以全部或部分地用服务器机箱、服务器机架、数据室、数据中心、边缘数据中心、移动边缘数据中心和/或其任何组合来实施,和/或与之相结
合地使用。
49.图3示出了根据本公开示例实施例的用于使用一个或多个队列和一致性接口进行通信的系统的示例实施例。例如,图3所示的实施例可以用于实施图2所示的方案。图3所示的实施例可以包括可以使用通信连接332进行通信的主机322和设备324。
50.例如,主机322可以用服务器或任何其他装置来实施。主机322可以包括一致性接口326和/或协议逻辑342。主机322可以使用一致性接口326通过通信连接332与设备324进行通信。
51.一致性接口326可以包括一致性引擎344和/或探听逻辑346(也可以称为监视逻辑),在一些实施例中,探听逻辑346可以能够检测队列的访问,例如,一个或多个数据存储器位置的一个或多个修改(例如,写入)和/或一个或多个数据存储器位置的一个或多个读取。一致性接口326可以例如用cxl和/或一个或多个cxl协议或任何其他一致性接口、和/或一致性协议等来实施。例如,在一致性接口326用cxl实施的实施例中,一致性引擎344可以用cxl一致性引擎(也可以称为一致性逻辑)来实施。在一些实施例中,探听逻辑346可以与一致性引擎344分开和/或部分集成。
52.例如,协议逻辑342可以实施诸如nvme之类的存储协议或者可使用一个或多个队列的任何其他通信协议。例如,在协议逻辑342实施nvme协议的实施例中,协议逻辑342可以如下所述地配置提交队列334和/或完成队列335。在一些实施例中,协议逻辑342和/或协议控制器330可以实施可以涉及一个或多个队列的使用的任何其他类型的通信协议。例如,主机可以使用一个或多个队列将一个或多个工作列表指派给一个或多个图形处理单元(gpu)、现场可编程门阵列(fpga)、和/或加速器等。作为另一示例,主机可以使用一个或多个队列来为一个或多个联网设备、和/或通信设备等提供一个或多个数据传输列表。
53.设备324可以包括一致性接口328、设备本地存储器350、协议控制器330和/或设备功能电路352。设备324可以用任何类型的设备来实施,包括例如加速器设备、存储设备、网络设备、存储器扩展设备和/或存储器缓冲设备、gpu、神经处理单元(npu)、张量处理单元(tpu)、和/或fpga等,或其任何组合(诸如计算存储设备)。
54.设备功能电路352可以包括可以使设备324能够执行其意图功能的任何装置。例如,如果设备324被实施为加速器,则设备功能电路352可以包括一个或多个计算资源,诸如一个或多个处理器(例如,cpu,诸如复杂指令集计算机(cisc)处理器(诸如x86处理器)和/或精简指令集计算机(risc)处理器(诸如risc-v和/或arm处理器))、专用电路(asic)、和/或fpga等,或其任何组合。作为另一示例,如果设备324被实施为存储设备,则设备功能电路352可以包括一个或多个存储介质、存储设备控制器、和/或介质转换层(例如,闪速转换层(ftl))等,或其任何组合。
55.一致性接口328可以包括一致性引擎358和/或探听逻辑360(也可以称为监视逻辑)。一致性接口328可以例如用cxl和/或一个或多个cxl协议或任何其他一致性接口、和/或一致性协议等来实施。例如,在一致性接口328用cxl实施的实施例中,一致性引擎358可以用cxl一致性引擎(也可以称为一致性逻辑)来实施。在一些实施例中,探听逻辑360可以与一致性引擎358分开和/或部分集成。
56.在一些实施例中,设备本地存储器350的全部或一部分可以由存储器一致性协议一致地维护。例如,在一致性接口328用cxl实施的实施例中,一致性接口328可以使用
cxl.mem协议来维护设备本地存储器350与设备324和/或主机322的一致性。
57.替代地或附加地,在一些实施例中,设备本地存储器350的全部或一部分可以由高速缓存一致性协议一致地维护。例如,在一致性接口328用cxl实施的实施例中,一致性接口328可以使用cxl.cache协议来维护设备本地存储器350的全部或一部分与设备324和/或主机322的一致性。
58.替代地或附加地,在一些实施例中,一致性接口的高速缓存一致性机制和存储器一致性机制可以组合地使用,以一致地维护设备本地存储器350的全部或一部分。例如,在一致性接口328用cxl实施的实施例中,一致性接口328可以使用cxl.mem协议将设备本地存储器350的全部或一部分配置为一致性存储器,并且使用cxl.cache协议实施用于可以位于设备本地存储器350的一致性部分(coherent portion)中的队列的指示机制。
59.在一些实施例中,设备本地存储器350可以被配置有任何数量的队列。例如,在图3所示的实施例中,设备本地存储器350可以被配置有提交队列(sq)334和/或完成队列(cq)335。
60.例如,协议控制器330可以实施诸如nvme之类的存储协议或可使用一个或多个队列的任何其他通信协议。例如,在协议控制器330实施nvme的实施例中,提交队列334和/或完成队列335可以分别被配置为nvme提交队列和/或nvme完成队列。
61.在一些实施例中,一致性接口328可以向协议控制器330提供主机322访问提交队列334和/或完成队列335的指示336。例如,图3所示的实施例可以利用一致性引擎358和/或探听逻辑360向协议控制器330提供提交队列334和/或完成队列335的变化的指示,如下面更详细描述的。
62.在一些实施例中,一致性接口326可以向主机322处的协议逻辑342提供设备324对提交队列334和/或完成队列335的访问的指示337。例如,图3所示的实施例可以利用一致性引擎344和/或探听逻辑346向协议逻辑342提供提交队列334和/或完成队列335的变化的指示,如下面更详细描述的。
63.在一些实施例中,提交队列334和/或完成队列335的访问可以涉及条目,该条目(例如,命令)可以涉及数据传递,诸如读取数据、和/或写入数据等。在一些实施例中,这样的数据可以至少部分驻留在设备本地存储器350(其至少一部分可以作为共享的存储器被一致地维护)中、在其他设备存储器中、在系统存储器(例如,主机322处的主机存储器)中或在任何其他位置处。
64.图4示出了根据本公开示例实施例的使用一个或多个队列和一致性接口进行通信的方法的示例实施例。图4所示的实施例可以与图3所示的系统一起使用。
65.为了说明的目的,可以与图4相结合地并且在其中一致性接口326和328可以用cxl实施且协议逻辑342和协议控制器330可以用nvme实施的系统的上下文中描述图3所示的示例实施例。然而,原理不限于这些或任何其他实施细节。
66.参考图3和图4,在操作462,一致性引擎344和/或358之一或两者可以(例如,使用cxl.mem协议)将设备324处的设备本地存储器350的至少一部分配置为共享的一致性存储器(coherent memory)来供主机322访问。在一些实施例中,一致性引擎344和/或358之一或两者可以例如使用cxl.cache协议将共享的存储器中的一些或全部配置为要被监视,从而当提交队列334和/或完成队列335被更新时,向主机322和/或设备324提供指示。因此,在一
些实施例中,可以使用cxl.mem协议在设备324的设备本地存储器350的共享的部分中配置提交队列334和/或完成队列335,并且cxl.cache协议的一致性机制(例如,一致性规则)可以应用于在其可以配置提交队列334和/或完成队列335的存储器位置中的一些或全部。
67.在用cxl实施的一些实施例中,一致性引擎344和/或358可以例如使用cxl.cache主机到设备(host-to-device,h2d)和设备到主机(device-to-host,d2h)请求、响应和数据通道,来实施基于硬件的一致性管理,以维护主机322与设备324之间的一致性。在其他实施例中,高速缓存一致性(例如,高速缓存连贯性(consistency))可以用硬件、软件或其任何组合来维护。
68.在操作464,提交队列334和/或完成队列335可以被配置为至少部分驻留在设备本地存储器350的共享的部分中。例如,在协议逻辑342和/或协议控制器330用nvme实施的实施例中,提交队列334和/或完成队列335可以分别被配置为nvme提交队列和/或nvme完成队列。在一些实施例中,该布置可以使主机322能够一致地访问提交队列334和/或完成队列335,就好像它是主机存储器的一部分一样,但是其中cxl.cache协议的一致性机制被配置为提供探听,由此当主机322更新提交队列334和/或完成队列335的一个或多个条目时向协议控制器330提供警报(例如,作为指示336),如下所述。在一些实施例中,可以使用cxl.cache直接配置提交队列334和/或完成队列335。
69.在操作466,探听逻辑346和/或360可以被配置为监视例如在设备本地存储器350的共享的部分中的提交队列334和/或完成队列335中的一些或全部。例如,在一些实施例中,探听逻辑360可以被配置为监视提交队列334,并且当主机322更新(例如,写入)提交队列334的一个或多个条目时,向协议控制器330提供警报(例如,作为指示336)。在一些实施例中,主机322对提交队列334和/或完成队列335的一个或多个条目的更新可以生成主机322对设备324的探听请求。在一些实施例中,一致性引擎358和/或探听逻辑360可以被配置为基于探听请求对协议控制器330生成警报。
70.在操作468,探听逻辑360可以确定主机322已经更新提交队列334和/或完成队列335的一个或多个条目,并且可以例如作为指示336向协议控制器330发送警报。
71.在操作470,协议控制器330可以基于接收到警报来处理提交队列334和/或完成队列335的更新。该方法然后可以返回到操作468,以等待探听逻辑360检测到提交队列334和/或完成队列335的另一更新。
72.图4所示的实施例可以在协议控制器330基于主机322对队列的访问从一致性接口328接收警报(例如,作为指示336)的上下文中描述。然而,图4所示的方法可以被配置为以类似的方式操作,以配置对提交队列334和/或完成队列335的一个或多个探听,来基于设备324对提交队列334和/或完成队列335的访问从一致性接口326向主机322的协议逻辑342提供警报(例如,作为指示337)。
73.取决于实施细节,参考图4和/或图3描述的系统和/或方法可以用于实施与图1所示类似的基于队列的通信协议,但是其中门铃寄存器114和/或116和/或伴随的中断和/或其他资源被一致性接口326和/或328的一致性机制部分地或完全地代替。因此,取决于实施细节,关于图4和/或图3描述的系统和/或方法可以利用一致性接口326和/或328的一致性机制,减少与图1所示的门铃架构相关联的时间、功耗、操作、存储器空间、和/或开销等。
74.例如,参考图1,在使用根据本公开的一致性机制的一些实施例中,操作(1)和/或
(2)可以至少部分由其中主机可将提交队列条目写入提交队列的操作来代替,该提交队列可以位于例如图3所示的设备高速缓存和/或设备存储器位置中,并且该一致性机制可以(例如,使用探听和/或警报)向设备提供提交队列已被更新的指示。
75.作为另一示例,参考图1,在使用根据本公开的一致性机制的一些实施例中,操作(5)和/或(6)可以至少部分由其中设备可写入到完成队列的操作来代替,该完成队列可以位于例如图3所示的设备高速缓存和/或设备存储器位置中,并且该一致性机制可以(例如,使用探听和/或警报)向主机提供完成队列已被更新的指示。
76.作为另一示例,参考图1,在使用根据本公开的一致性机制的一些实施例中,第一装置(例如,主机102和/或设备104)对指针103、105、107和/或109中的任何的任何访问(例如,更新)可以使用一致性机制被指示给另一装置,例如,如图2、图3和/或图4所示。
77.再次参考图3,在一些实施例中,一致性接口326和/或328的一致性机制可以提供指示336,以使协议控制器330能够在队列被更新时或接近队列被更新时确定队列已被更新。在一些实施例中,一致性接口326和/或328的一致性机制可以对于协议控制器330维护一个或多个队列更新的次序。
78.在一些实施例中,当协议控制器330从队列中提取条目时,一致性接口326和/或328的一致性机制可以向主机322提供警报,例如,以使主机322能够跟踪队列的头部(例如,以减少或防止队列溢出(overrun))。替代地或附加地,在一些实施例中,图3所示的系统可以实施与以上关于图1所述类似的提交队列头部门铃机制,以向主机322通知协议控制器330何时从队列中提取条目。
79.在一些实施例中,可以在设备处配置一个或多个队列的存储器空间,并且一致性协议可以被配置为监视(例如,探听)存储器空间中的一些或全部,以使用一致性协议的一致性机制来基于主机更新一个或多个队列的一个或多个条目向设备提供指示。
80.在一些实施例中,通信协议(例如,nvme)可以被配置为减少或防止队列的部分更新。在一些实施例中,通信协议(例如,nvme)可以被配置为实施原子更新。例如,在一些实施例中,队列的一个或多个条目可以被同时更新。取决于实施细节,例如,如果队列的部分更新触发对一致性机制和/或相关警报的探听,并且协议控制器在一个或多个条目被完全更新之前读取该部分更新,这可以减少或防止可能发生的错误。
81.在一些实施例中,通信协议(例如,nvme)可以利用环绕来实施(例如,定义)队列大小(例如,提交队列和/或完成队列),从而使用一致性接口的一致性机制实施更新通知。
82.在一些实施例中,通信协议(例如,nvme)可以在一个或多个队列存储器地址上实施(例如,定义)一个或多个一致性设置(例如,探听设置、和/或警报设置等)。
83.在一些实施例中,队列条目的更新(例如,由主机添加提交队列条目)可以触发设备(例如,诸如ssd之类的存储设备)中的活动。
84.在一些实施例中,可以基于探听和/或警报来中断主机。
85.在一些实施例中,根据本公开示例实施例,当引导装置(例如,主机、和/或设备等)时,装置可以宣告一个或多个能力。例如,如果装置被实施为nvme装置,则它可以(例如,使用配置位)宣告它能够使用一致性机制来指示队列的更新。
86.本文描述的任何功能,包括主机功能、和/或设备功能等中的任何(例如,协议逻辑342、控制器230、协议控制器330、探听逻辑346和/或360、和/或一致性引擎344和/或358
等),可以用硬件、软件、固件或其任何组合来实施,包括例如硬件和/或软件组合逻辑,顺序逻辑,定时器,计数器,寄存器,状态机,易失性存储器(诸如动态随机访问存储器(dram)和/或静态随机访问存储器(sram)),非易失性存储器(包括闪速存储器、永久存储器(诸如交叉网格非易失性存储器)、具有体电阻变化的存储器、和/或相变存储器(pcm)等和/或其任何组合)、执行存储在任何类型的存储器中的指令的复杂可编程逻辑器件(cpld)、现场可编程门阵列(fpga)、专用集成电路(asic)cpu(包括诸如x86处理器之类的复杂指令集计算机(cisc)处理器和/或诸如arm处理器之类的精简指令集计算机(risc)处理器)、图形处理单元(gpu)、神经处理单元(npu)、和/或张量处理单元(tpu)等。在一些实施例中,一个或多个组件可以被实施为片上系统(soc)。
87.图5示出了根据本公开示例实施例的主机装置的示例实施例。例如,图5所示的主机装置500可以用于实施本文公开的任何主机。图5所示的主机装置500可以包括包括存储器控制器504的处理器502、系统存储器506、主机逻辑508和/或一致性接口510。图5所示的组件中的任何或所有可以通过一个或多个系统总线512进行通信。在一些实施例中,图5所示的组件中的一个或多个可以使用其他组件来实施。例如,在一些实施例中,主机控制逻辑508可以通过处理器502执行存储在系统存储器506或其他存储器中的指令来实施。在一些实施例中,主机逻辑508可以实施本文公开的主机功能中的任何,包括例如协议逻辑342、和/或读取和/或写入一个或多个队列等。
88.图6示出了根据本公开示例实施例的设备的示例实施例。例如,图6所示的实施例600可以用于实施本文公开的设备中的任何。设备600可以包括设备控制器602、通信逻辑608、设备功能电路606和/或一致性接口610。图6所示的组件可以通过一个或多个设备总线612进行通信。通信逻辑608可以用于例如实施控制器230、和/或协议控制器330等。
89.设备功能电路606可以包括实施设备600的主要功能的任何硬件。例如,如果设备600被实施为存储设备,则设备功能电路606可以包括诸如一个或多个闪速存储器设备的存储介质、和/或ftl等。作为另一示例,如果设备600被实施为网络接口卡(nic),则设备功能电路606可以包括一个或多个调制解调器、网络接口、物理层(phy)、和/或媒体接入控制层(mac)等。作为另一示例,如果设备600被实施为加速器,则设备功能电路606可以包括一个或多个加速器电路、和/或存储器电路等。
90.图7示出了根据本公开示例实施例的用于进行通信的方法的实施例。该方法可以开始于操作702。在操作704,该方法可以通过第一装置访问队列,其中该队列是可由第二装置访问的,并且第一装置通过一致性接口连接到第二装置。例如,在一些实施例中,第一装置可以被实施为主机,第二装置可以被实施为设备,并且队列可以被实施为通信协议的提交队列。在操作706,该方法可以通过一致性接口向第二装置指示该访问。例如,在一些实施例中,可以通过主机将条目放置在提交队列中来实施该访问,并且可以通过将一致性接口配置为监视(例如,探听)提交队列并向设备发送警报来实施该指示。该方法可以结束于操作708。
91.图7所示的实施例以及本文描述的所有其他实施例是示例操作和/或组件。在一些实施例中,可以省略一些操作和/或组件,和/或可以包括其他操作和/或组件。此外,在一些实施例中,操作和/或组件的时间次序和/或空间次序可以变化。尽管一些组件和/或操作可以被示为单独的组件,但是在一些实施例中,分开示出的一些组件和/或操作可以被集成到
单个组件和/或操作中,和/或被示为单个组件和/或操作的一些组件和/或操作可以用多个组件和/或操作来实施。
92.已经在各种实施细节的上下文中描述了上面公开的一些实施例,但是本公开的原理不限于这些或任何其他具体细节。例如,某一功能已被描述为由某些组件实施,但是在其他实施例中,该功能可以分布在处于不同位置中且具有各种用户接口的不同系统和组件之间。某些实施例已被描述为具有特定的过程、操作等,但是这些术语还涵盖其中特定的过程、操作等可以用多个过程、操作等来实施的实施例,或者其中多个过程、操作等可以被集成到单个过程、步骤等中的实施例。对组件或元素的引用可以仅指组件或元素的一部分。例如,对块的引用可以指整个块或一个或多个子块。在本公开和权利要求中使用诸如“第一”和“第二”之类的术语可能仅仅是为了区分它们所修饰的元素的目的,并且可能不指示任何空间次序或时间次序,除非从上下文中明显。在一些实施例中,对元素的引用可以指元素的至少一部分,例如,“基于”可以指“至少部分基于”等。对第一元素的引用并不意味着第二元素的存在。本文公开的原理具有独立的效用且可以单独体现,并且不是每个实施例都可以利用每个原理。然而,原理也可以以各种组合来体现,其中一些可以以协同的方式放大各个原理的益处。
93.根据本专利公开的发明原理,如上所述的各种细节和实施例可以被组合以产生另外的实施例。由于本专利公开的发明原理可以在不偏离发明构思的情况下在布置和细节上进行修改,因此这种变化和修改被认为落入以下权利要求的范围内。

技术特征:
1.一种方法,包括:通过第一装置,访问队列,其中,所述队列是可由第二装置访问的,并且所述第一装置通过一致性接口连接到所述第二装置;以及通过所述一致性接口,向所述第二装置指示所述访问。2.根据权利要求1所述的方法,其中,所述指示包括通过监视机制进行指示。3.根据权利要求1所述的方法,其中,所述指示包括生成监视请求。4.根据权利要求3所述的方法,其中,所述指示包括基于所述监视请求生成警报。5.根据权利要求1所述的方法,其中,所述队列包括提交队列。6.根据权利要求1所述的方法,其中,所述访问包括从所述队列中读取条目。7.根据权利要求1所述的方法,其中,所述访问包括将条目写入所述队列。8.根据权利要求7所述的方法,其中,所述条目包括命令。9.根据权利要求7所述的方法,其中,所述条目包括完成。10.根据权利要求1所述的方法,其中:所述第一装置包括主机;所述第二装置包括设备;以及所述队列位于所述设备处。11.根据权利要求1所述的方法,其中,所述队列与通信协议相关联。12.根据权利要求11所述的方法,其中,所述通信协议包括存储协议。13.一种设备,包括:一致性接口;以及控制器,被配置为:使用所述一致性接口使用队列进行通信;以及通过所述一致性接口,接收对所述队列的访问的指示。14.根据权利要求13所述的设备,其中:所述设备包括共享的本地存储器;以及所述一致性接口被配置为维护所述共享的本地存储器的至少一部分的一致性。15.根据权利要求14所述的设备,其中,所述队列至少部分位于所述共享的本地存储器的所述至少一部分中。16.根据权利要求13所述的设备,其中,所述一致性接口被配置为基于所述访问接收监视请求。17.根据权利要求16所述的设备,其中,所述一致性接口被配置为基于所述监视请求生成警报。18.根据权利要求16所述的设备,其中,所述控制器被配置为从所述一致性接口接收所述警报作为所述指示。19.一种系统,包括:主机;以及使用一致性接口耦合到所述主机的设备,所述设备包括控制器,所述控制器被配置为:使用所述一致性接口,使用队列与所述主机进行通信;以及通过所述一致性接口,接收所述主机对所述队列的访问的指示。
20.根据权利要求19所述的系统,其中:所述设备包括共享的本地存储器;所述一致性接口被配置为维护所述共享的本地存储器的至少一部分的一致性;以及所述队列至少部分位于所述共享的本地存储器的所述至少一部分中。

技术总结
一种方法可以包括:通过第一装置访问队列,其中队列可以是可由第二装置访问的,并且第一装置可以通过一致性接口连接到第二装置;以及通过一致性接口,向第二装置指示访问。指示可以包括通过监视机制进行指示。指示可以包括生成监视请求。指示可以包括基于监视请求生成警报。队列可以包括提交队列。队列可以包括完成队列。访问可以包括从队列中读取条目。访问可以包括将条目写入到队列。条目可以包括命令。条目可以包括完成。第一装置可以包括主机,并且第二装置可以包括设备。队列可以位于主机处。处。处。


技术研发人员:D
受保护的技术使用者:三星电子株式会社
技术研发日:2023.01.19
技术公布日:2023/7/31
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐