从主机到介质的远端存储器数据传递的端到端数据保护的制作方法

文档序号:27553090发布日期:2021-11-24 23:16阅读:120来源:国知局
从主机到介质的远端存储器数据传递的端到端数据保护的制作方法

1.描述一般涉及存储器子系统,并且更特别的描述涉及对多级存储器系统中的数据传递的数据保护。


背景技术:

2.计算机系统包括主机硬件组件,诸如中央处理器和互连硬件。主机硬件组件执行管理计算机系统的主机操作系统。计算机系统可以包括耦合到主机的一级或多级存储器,其包括非易失性存储器或非易失性存储装置,即使在中断系统供电的情况下,它们也维持状态。非易失性存储器可以作为外围设备连接到主机处理器。
3.传统上,与存储器或存储装置的外围连接可以包括确认机制,该确认机制确保了跨外围连接的数据传递。例如,诸如外围组件互连快速(pcie)之类的总线传递协议允许存储器设备确认从主机接收到数据分组。尽管确保连接良好,但是主机仍然可以请求比存储器设备能够实行的更多写入,或者可能存在与向存储器设备写入数据相关联的问题。主机将假设被确认为接收到的数据被正确写入。
附图说明
4.以下描述包括对附图的讨论,附图具有作为实现方式的示例所给出的说明。附图应该作为示例进行理解,而不是作为限制进行理解。如本文中所使用的,对一个或多个示例的引用要被理解为描述了包括在本发明的至少一个实现方式中的特定特征、结构或特性。本文中出现的诸如“在一个示例中”或“在替换的示例中”的短语提供了本发明的实现方式的示例,并且不一定全部都指代同一实现方式。然而,它们也不一定相互排斥。
5.图1是具有不同写入数据单元粒度的多级存储器系统的示例的框图,其中存储介质提供消息以指示何时将数据提交给存储器。
6.图2是用于具有不同写入数据单元粒度的多级存储器系统的控制器的示例的框图,其中组件交换消息以指示何时将数据提交给存储器。
7.图3是指示何时将数据提交给存储器的消息的示例的表示。
8.图4是用提交指示符在具有不同写入数据单元粒度的多级存储器系统中写入数据的过程的示例的流程图。
9.图5是在具有不同写入数据单元粒度的多级存储器系统中写入数据的过程的示例的流程图,其包括使用消息来控制写入信用。
10.图6是计算系统的示例的框图,其中可以实现具有带提交消息的不同写入数据单元粒度的多级存储器系统。
11.以下是对某些细节和实现方式的描述,包括对附图的非限制性描述,其可以描述一些或所有示例,以及其它潜在的实现方式。
具体实施方式
12.如本文中所描述的,计算机系统包括通过提供数据保护的链路连接到主机的非易失性存储器(nvm)设备或存储设备。在一个示例中,数据保护包括:通过对nvm设备使用写入信用进行的流控制。在一个示例中,数据保护包括错误保护,其中消息被返回以指示主机数据是否被成功提交给nvm设备。在一个示例中,错误消息可以包括在数据的写入时发生的错误的指示。
13.对非易失性存储器(nvm)的引用指的是具有非易失性存储介质的存储器设备。非易失性存储介质指的是以非易失性方式存储数据的介质。因此,即使中断对设备供电,数据仍然是确定的,因为它保留其状态。相比之下,如果供电中断,则易失性存储介质具有不确定的状态,并且可能需要频繁的数据刷新来维持其状态。为了简单起见,关于nvm介质的使用,本说明书将不在“存储器设备”与“存储设备”之间进行区分。对nvm设备的引用可以指的是可以接收对nvm介质的异步写入的设备,因为主机控制器请求写入,并且在实行其它操作之前不会等待对写入的确认,该其它操作可以包括附加的写入请求。
14.主机可以指的是主机硬件或主机软件、或主机硬件和主机软件的组合。主机指的是为nvm设备提供操作系统的平台。随着计算机系统中对易失性和非易失性存储器二者的需求的增加,许多系统采用多级存储器,其可以包括不同类型的存储器。包括两级存储器(2lm)系统的这样的多级存储器(mlm)系统可以使用nvm设备作为主机处理器或主机平台上的另一处理器(例如,图形处理器)的工作存储器的高速缓存。在这样的实现方式中,主机通常需要频繁地向nvm介质写入大量数据。
15.在mlm系统中,nvm介质可以具有大小上与主机控制器的主机写入单元不同的介质写入单元。写入单元指的是写入操作中写入的最小原子单元。写入事务的最小原子单元可以被称为控制器的最小可写入单元。主机通常具有比存储器设备可以读取或写入数据的速度高得多的执行速度。对于更大的存储器设备,这样的情况倾向于是更明显的。nvm设备倾向于具有显著大于主机处理器的操作速度的写入限制和写入时间。由于写入限制和速度限制,nvm设备倾向于受益于写入大于主机处理器进行执行所想要的数据单元的数据部分。因此,nvm介质可以具有用于写入的原子单元或介质写入单元,该单元是主机写入单元或主机将发送给存储器设备以用于写入事务的数据单元的倍数。
16.例如,主机可以具有512字节的写入单元,而nvm介质具有2 kb的介质写入单元,或四个主机写入单元。这样的数据大小仅仅是示例,并且主机写入单元可以是不同的大小(例如,256b、128b),并且介质写入单元可以是不同的大小(例如,1kb、4kb)。虽然术语可以不同,但是在一个实现方式中,主机写入单元可以被称为数据“块”或数据“扇区”,并且介质写入单元可以被称为数据“切片”。
17.考虑示例,在该示例中,主机写入单元是数据扇区,并且介质写入单元是数据切片,在系统中,nvm设备通过外围组件互连快速(pcie)连接而连接到主机。在这样的示例中,pcie主机经常需要频繁地将数据扇区写入存储介质。nvm介质将倾向于缓冲多个数据扇区,直到整个切片准备好写入nvm介质为止。这样的配置允许主机在数据扇区准备好写入时写入数据扇区,而不必将整个切片存储在主机上并发送整个切片,所述整个切片可能包含未改变的数据,因此具有大量冗余数据。附加地,通过使用具有较小数据扇区的较高优先级事务层分组(tlp)或数据链路层分组(dllp),可以减少pcie链路传递。这样的配置还使得主机
能够更新介质切片内不连续的数据扇区。
18.即使具有使得能够使用nvm介质作为存储器高速缓存的配置,数据中的高错误率也可能通过要求更多错误处置的操作来降低高速缓存的有效性。用于具有nvm介质的存储器系统的传统数据传递协议不能跟踪从主机到介质的端到端数据传递。传递协议可以提供确保链路健康的机制,但是不能提供从主机到经验证的介质写入的端到端每分组数据保护。
19.nvm存储器设备包括:控制写入nvm介质的介质控制器。主机控制器向介质控制器发送写入事务。写入事务可以包括主机写入单元中的写入数据,而介质控制器将介质写入单元中的数据提交给nvm介质。在一个示例中,主机控制器维持写入nvm介质的写入信用。在一个示例中,主机控制器和介质控制器二者维持写入信用。写入信用可以为主机写入nvm介质提供端到端流控制机制。
20.在一个示例中,介质控制器可以发送事务消息,以指示写入事务的写入数据是否被成功提交到nvm介质。这样的事务消息使得介质控制器能够指示针对特定写入事务写入主机的成功。数据保护的使用可以为从主机到nvm介质的数据传递提供有nvm介质控制器所提供的响应,以指示每次传递中的数据是否被提交给nvm介质。
21.图1是具有不同写入数据单元粒度的多级存储器系统的示例的框图,其中存储介质提供消息以指示何时将数据提交给存储器。系统100具体图示了集成存储器控制器和集成高速缓存控制器。集成控制器被集成到处理器管芯上或处理器soc(片上系统)封装中,作为处理器管芯的另一组件。
22.soc 110表示处理器管芯或处理器soc封装的示例。soc 110包括处理器112,该处理器112可以包括一个或多个核心120(即,单核处理器或多核处理器)来实行指令的执行。在一个示例中,核心120包括:处理器侧高速缓存122,其将包括高速缓存控制电路和高速缓存数据存储装置。高速缓存122可以表示处理器侧上的任何类型的高速缓存。在一个示例中,单独的核心120包括:不与其它核心共享的本地高速缓存资源122。在一个示例中,多个核心120共享高速缓存资源122。
23.在一个示例中,soc 110包括:系统结构130,其用于互连处理器系统的组件。系统结构130可以是或可以包括处理器112、外围控制132、诸如集成存储器控制器(imc)150和高速缓存控制器140的一个或多个存储器控制器、i/o控制(未具体示出)、图形子系统(未具体示出)或其它组件之间的互连。系统结构130使得能够在组件当中交换数据信号。虽然系统结构130一般被示出为连接着组件,但是将理解的是,系统100不必图示所有的组件互连。系统结构130可以表示一个或多个网状连接、中央交换机制、环形连接、结构的层次或其它互连拓扑。
24.在一个示例中,soc 110包括:一个或多个外围控制器132,以连接到soc 110外部的外围组件或设备。在一个示例中,外围控制132表示到平台控制器160的硬件接口,该平台控制器160包括一个或多个组件或电路,以控制系统100的硬件平台或主板中的互连,从而将外设互连到处理器112。组件162表示经由平台控制器160耦合到处理器112的任何类型的芯片或接口或硬件元件。
25.在一个示例中,soc 110包括:imc 150,其具体表示连接到主存储器190的控制逻辑。imc 150可以包括硬件电路和软件/固件控制逻辑。在一个示例中,soc 110包括:高速缓
存控制器140,其表示控制对高速缓冲存储器或高速缓存170的访问的控制逻辑。高速缓冲存储器170表示高速缓存的存储装置,并且为了方便起见,本文中可以被简称为高速缓存170。高速缓存控制器140可以包括硬件电路和软件/固件控制逻辑。在一个示例中,soc 110包括:imc 142,其具体表示连接到高速缓存170的控制逻辑。imc 142可以包括:硬件电路和软件/固件控制逻辑,包括管理对高速缓存170的访问的调度逻辑。在一个示例中,imc 142被集成到高速缓存控制器140中,该高速缓存控制器140可以被集成到处理器112中。在一个示例中,高速缓存控制器140类似于imc 150,但是与充当辅助存储器的高速缓存170对接,代替于连接到主存储器190。在一个示例中,高速缓存控制器140是由imc 150表示的存储器控制器的控制逻辑的一部分或是其子集。
26.在一个示例中,系统100包括:经由平台控制器160耦合到soc 110的nvm 180。nvm 180表示非易失性存储器,包括作为nvm介质的介质182和控制对介质182的访问的控制器184。在一个示例中,nvm 180是通过诸如pcie或nvme(快速非易失性存储器)之类的外围连接耦合到soc 110的存储器设备。pcie可以根据pci

sig最初于2017年10月发布的pci快速基本规范修订版4.0、pci

sig最初于2019年5月发布的pci快速基本规范修订版5.0或变体。nvme可以根据nvm快速公司最初于2019年6月发布的nvme 快速基础规范或变体。
27.在一个示例中,系统100包括:主存储器190,其提供主系统存储器。主存储器190通常包括:易失性介质196,其用于以非易失性方式存储数据。在一个示例中,主存储器190包括:nvm介质192和控制器194,以控制对nvm介质192的访问。在一个示例中,系统100包括:高速缓存170,其包括介质172和控制对介质172的访问的控制器174。
28.系统100的多级存储器系统可以以多种方式中的任何一种方式来配置,这取决于包括哪些存储器资源以及如何使用它们。并非系统100的每个实现方式都将包括所图示的所有存储器类型。系统100图示了可以在多级系统中使用的存储器的不同可能的变体。
29.对于本文中的主题更具体地说,系统100包括:异步写入的至少一个nvm存储器。例如,系统100可以包括:具有易失性介质196的主存储器190和作为高速缓存的nvm 180。在另一示例中,系统100可以包括:具有易失性介质196的主存储器190和用作高速缓存的nvm介质192。典型的实现方式将包括作为非易失性存储器的nvm 180,但是在这方面并不受限。
30.通常,高速缓存170指的是作为封闭存储器的辅助存储器,其中介质172可以是作为主存储器190的辅助存储器的非易失性存储器,或者可以是比主存储器190更快的高速缓存层。在其中高速缓存170是辅助存储器的实现方式中,介质172可以被实现为通过传统上不保证从主机到存储器介质的端到端数据保护的链路连接到soc 110的nvm介质。nvm 180传统上通过这样的链路连接,该链路传统上不保证从主机到存储器介质的端到端数据保护。
31.soc 110表示主机系统。imc 150、imc 142和外围控制132或平台控制器160的操作可以对具有主机写入单元的大小的数据进行操作。在一个示例中,外围控制132包括或者是主机的存储控制器。在一个示例中,平台控制器160包括或者是主机的存储控制器。在一个示例中,imc 142是主机的存储控制器。
32.主机的存储控制器在主机写入单元上操作,而nvm控制器在nvm介质写入单元上操作。在一个示例中,控制器184是在介质写入单元上操作的介质控制器。在一个示例中,控制器174是在介质写入单元上操作的介质控制器。在一个示例中,控制器194是在介质写入单
元上操作的介质控制器。作为处理器112的高速缓存进行操作的nvm介质可以被称为“远端存储器(far memory)”,其中远端存储器指的是其访问时间相对于soc 110上的存储器资源慢得多的存储器。
33.将理解的是,端到端流控制或其它数据保护的使用可以用任何介质控制器来实现。出于简单的目的,将参考具有控制器184的nvm 180来描述操作。
34.在一个示例中,soc 110向nvm 180提供各种数据块,该数据块由控制器184接收。在一个示例中,主机控制器在具有写入命令的报头中包括提交指示符。提交指示符可以使控制器184将写入数据提交给介质182,无论是否存在足够的数据块或主机写入单元来等于介质写入单元或数据切片。在一个示例中,当数据块的数量不等于完整的介质切片时,控制器184作为rmw(读



写)操作来写入数据。rmw操作包括控制器184从介质182读取目标切片,利用来自主机的写入数据修改相关部分,并且然后写入整个经修改的切片。
35.在一个示例中,控制器184为每个数据事务生成事务消息,该事务消息可以包括单个写操作或一系列写操作。事务消息可以指示数据是否被成功写入介质182。在一个示例中,事务消息是协议消息,或协议消息的一部分,或协议消息的报头。在一个示例中,控制器184准备消息以指示向介质182的数据写入的成功。在一个示例中,该消息逐扇区地指示成功,以指示发送到nvm 180的每个主机写入单元的成功。
36.在一个示例中,对nvm介质的引用可以指的是块可寻址存储器设备,诸如nand(非基于and门)或nor(非基于or门)闪存技术。在一个示例中,nvm介质可以包括下一代非易失性设备,诸如三维交叉点存储器设备、被配置成以不同于主机写入单元的粒度进行写入的其它字节可寻址非易失性存储器设备。在一个示例中,这样的设备可以具有比主机更小的数据写入粒度,并且数据保护的使用可以起作用以确保主机写入单元的所有区段被正确写入。在一个示例中,nvm介质可以包括基于存储器单元的电阻状态或存储器单元的相位来存储数据的非易失性、字节可寻址介质。在一个示例中,存储器设备可以使用硫族化物相变材料(例如,硫族化物玻璃)。在一个示例中,存储器设备可以是或可以包括多阈值水平的nand闪速存储器、nor闪速存储器、单级或多级相变存储器(pcm)或具有开关的相变存储器(pcms)、电阻式存储器、纳米线存储器、铁电晶体管随机存取存储器(fetram)、并入忆阻器技术的磁阻随机存取存储器(mram)存储器、或自旋转移矩(stt)

mram、或任何上述内容的组合、或其它存储器。
37.考虑示例,其中nvm 180作为soc 110的高速缓存进行操作,并且其中nvm 180经由pcie链路连接。pcie包括确认机制,以通知主机:nvm 180的协议层成功接收到用于数据传递的分组和数据。然而,控制器逻辑中或介质中的错误(即,经过协议层的错误)可能破坏数据,或者甚至阻止数据被写入介质182。在一个示例中,对于来自soc 110的每个数据传递,控制器184可以生成事务消息来指示错误或指示所有写入是成功的。在一个示例中,事务消息可以指示每个主机写入单元的错误数量。这样的事务消息可以确保自始至终对介质的数据保护,代替于仅仅对协议层的数据保护。
38.考虑示例,其中nvm 180作为soc 110的高速缓存进行操作,并且其中nvm 180经由nvme链路连接。nvme可以为控制器184提供错误日志,诸如通过nvme smart/健康信息日志。控制器184可以生成这样的日志并将其发送给主机,诸如通过异步事件请求(aer)或其它机制。然而,将理解的是,nvme仅提供了在存储器设备处维持并在随机时间传送的这种日志。
在一个示例中,对于来自soc 110的每个数据传递,控制器184可以生成事务消息来指示错误或指示所有写入是成功的。因此,控制器184可以为每次数据传递生成报告,而不是保存日志以随机返回到主机。
39.一般而言,当系统100中的nvm 180或其它nvm介质被用作上级存储器或二级存储器(例如,2lm实现方式)时,主机控制器需要将处理器112(例如,中央处理单元或cpu)频繁使用的数据传递到nvm介质以用于高速缓存。对于这样的系统,高速缓存的数据可以被处理器112直接使用,这增加了正确写入数据以避免执行错误的需要。
40.在一个示例中,主机与介质传递之间的粒度不同,其中主机将多个扇区中的数据写入顺序地址。在这样的示例中,数据保护可以确保每个数据扇区被提交给nvm介质。如果由于控制器或介质错误而导致数据扇区没有被提交给介质,则系统100使得介质控制器能够尽快通知主机。更快地通知主机使得主机能够采取适当的错误处置步骤。在一个示例中,主机存储控制器实行错误处置以及通知处理器的高速缓存控制器(诸如高速缓存122的控制器,未具体示出)。当主机知道数据被正确提交到远端存储器介质时,它可以释放其内部缓冲器和其它资源来执行其它任务。
41.在一个示例中,主机存储控制器或主机控制器维持写入信用,以实现对主机写入远端存储器介质的端到端流控制。这样的写入信用可以被称为远端存储器写入信用(fmwc)。在一个示例中,主机控制器和nvm介质控制器二者维持写入信用,以实现对主机写入远端存储器介质的端到端流控制。
42.在一个示例中,主机控制器包含一个或多个可编程寄存器来指示最大远端存储器写入信用。最大fmwc指示可以指示在nvm设备上可以挂起的最大写入数量。在一个示例中,在nvm设备处挂起的最大写入数量指的是写入事务的最大数量。在一个示例中,挂起的最大写入数量指的是请求写入的nvm介质写入单元的最大数量。
43.在一个示例中,系统100在系统启动时在主机控制器与介质控制器之间实现流控制初始化机制。在一个示例中,流控制初始化允许主机控制器向介质控制器传送最大fmwc信息。作为系统配置的一部分,可以将最大fmwc编程到主机控制器中。在一个示例中,主机控制器基于耦合到主机的特定nvm设备的预配置来设置最大值。在一个示例中,主机向介质控制器发送配置命令来设置写入信用的数量。在一个示例中,主机发送配置命令来设置每个写入信用的写入单元数量,这可以是相同的配置命令。
44.在一个示例中,主机控制器和介质控制器通过递增或递减用于指示写入信用的数量的值来保留信用。在递增配置中,该值可以从零开始,并且针对所使用的每个写入信用进行递增,以针对最大值进行比较。在递减配置中,该值可以从最大值开始,并且针对所使用的每个写入信用向下递减至零。
45.考虑示例,其中nvm 180作为soc 110的高速缓存进行操作,并且其中nvm 180经由pcie链路连接。在一个示例中,控制器184生成供应商定义的消息(vdm)事务层分组(tlp)作为事务消息。pcie允许主机控制器和介质控制器使用专有的write_go vdm tlp来关于写入事务进行通信。在一个示例中,vdm tlp使得介质控制器能够向主机控制器指示被成功提交给存储器介质的写入数据的扇区数量。在一个示例中,消息中的字段可以用于传送关于在存储器写入和介质提交过程的介质控制器处理期间可能已经发生的错误的信息。
46.通过使用写入信用,主机可以管理挂起到存储器的写入数量。利用事务消息,系统
可以实时跟踪哪些数据单元已经被提交给介质,从而允许主机在数据传递一旦完成就释放其内部高速缓存缓冲器和其它计算资源,以聚焦于其它任务。在一个示例中,一旦检测到数据传递失败,错误信息就将使得主机控制器能够实行错误处置操作。预期错误信息的及时可用性会降低错误处置的复杂性,从而减少错误处置的资源需求。在一个示例中,事务消息提供错误信息,这可以消除主机控制器从存储器设备读取错误日志的需要,这可以提高链路带宽。
47.对于提供从主机到存储器设备的数据流控制的链路协议,当存储器子系统提供端到端流控制时,协议流控制变得冗余。因此,链路流控制可能是不必要的。例如,对于给定的功能,pcie流控制将是冗余的,并且pcie公布的信用限制可以被设置为“无限”。将信用限制设置为无限将消除对给定功能的周期性updatefc(流控制更新)传输的需要,这将通过降低周期性dllp开销来减小链路带宽。
48.对于基于协议消息的事务消息(例如,pcie vdm tlp),系统可以维持与协议规范的一致性。对于物理层、链路层和事务层,维持与链路规范的一致性应该允许通用端点控制器设计的完全可重用性。在一个示例中,事务消息是定制消息。在一个示例中,事务消息是链路协议规范中可用的消息的定制版本。
49.图2是用于具有不同写入数据单元粒度的多级存储器系统的控制器的示例的框图,其中组件要交换消息以指示何时将数据提交给存储器。系统200图示了根据系统100的示例的主机控制器和介质控制器组件。长虚线框内图示了主机控制器202的元件。短虚线框内图示了介质控制器204的元件。在一个示例中,主机控制器202是pcie主机202,并且介质控制器204是pcie端点。
50.在一个示例中,主机控制器202包括主机应用(app)层210和主机链路控制器230。在一个示例中,主机应用层210包括:主机写入请求212、提交生成逻辑214、远端存储器(fm)写入(wr)信用跟踪器216和主机存储器写入(mwr)生成器218。主机写入请求212发起存储器写入请求,以将数据扇区写入由介质控制器204管理或控制的介质206。在一个示例中,主机应用层210可以被配置成知道介质写入单元的大小(例如,切片大小)以及介质206支持什么大小的写入。
51.主机写入请求212向提交生成逻辑214和主机mwr生成器218通知或转发存储器写入请求。在一个示例中,提交生成逻辑214跟踪各种介质写入单元写入的主机写入单元的数量,并且可以为主机mwr生成器218的介质写入单元生成对应相关联的提交指示符。将理解的是,系统将不会一次具有多个运行中的主机写入单元。因此,提交生成逻辑214将仅需要关心当前正在进行的主机写入单元。提交指示符向介质控制器204指示相关联的介质写入单元是否要被写入介质206。在一个示例中,在将数据提交给介质206之前,介质控制器204累积主机写入单元,直到填满整个介质写入单元。当主机控制器202设置提交指示符时,无论介质写入单元是否填满,介质控制器204都将把相关联的介质写入单元写入介质206。这样的写入可以例如通过执行读



写操作来实行。
52.在一个示例中,基于由主机写入请求212提供的主机写入单元和由提交生成逻辑214提供的提交指示符,主机mwr生成器218生成要发送到介质控制器204的写入请求(例如,写入tlp)。在一个示例中,主机mwr生成器218将提交指示符放置在tlp的报头中的对应字段中。在利用pcie的实现方式中,在一个示例中,每个介质写入单元的提交指示符被存储在
tlp的报头中的保留字段中。
53.在一个示例中,主机应用层210包括:fm wr信用跟踪器216。fm wr信用跟踪器216表示主机控制器202跟踪或维持要由介质控制器204写入介质206的fm写入信用的逻辑。在一个示例中,fm wr信用跟踪器216向主机写入请求212提供写入信用信息。该fm写入信用信息在系统200中被表示为wr信用。fm wr信用指示是否存在fm写入信用可用于向存储器介质发送写入请求。在一个示例中,主机写入请求212仅在如由fm wr信用跟踪器216所指示的存在可用fm写入信用的情况下生成写入请求。在一个示例中,fm写入信用的可用性指示可以对介质进行的可用写入数量。
54.在一个示例中,主机应用层210包括:消息处理器222和错误/资源处理程序(handler)224。消息处理器222表示应用层中处理来自介质控制器204的消息的逻辑。根据所描述的任何示例,该消息可以是事务消息或者可以包括事务消息。该事务消息可以指示将数据写入介质206是否存在错误,或者是否所有主机数据都被成功写入介质。错误/资源处理程序224表示主机应用层210中的逻辑,以在该消息指示在将数据提交给介质206中的错误的情况下,实行错误处置。
55.主机控制器202包括主机链路控制器230。主机链路控制器230表示通过nvm链路272连接到nvm设备的控制器。主机链路控制器230可以包括物理层232、链路层234和事务层236。不同的层可以被称为协议栈的部分。物理层232可以控制物理接口组件。物理层232可以被细分为逻辑和电气子层,其中物理

逻辑子层可以进一步包括物理编码子层(pcs)。
56.链路层234可以管理设备之间的连接。链路层234可以被称为数据链路层,其可以被细分为包括介质访问控制(mac)子层。事务层236可以管理与设备之间的事务相关联的分组和报头。事务层236可以实行与将数据和状态消息业务打包和解包相关的任务。在一个示例中,主机链路控制器230表示主机侧pcie控制器。主机链路控制器230可以实行以下任务,包括但不限于发送存储器写入请求和具有要写入介质206的主机数据的事务,包括用于介质写入单元的相关联的提交指示符。
57.在一个示例中,主机链路控制器230可以将连续的存储器写入引导到不同的介质写入单元。不同的介质写入单元可以彼此相邻,或可以彼此不相邻。连续存储器写入的引导可以针对相同介质写入单元的连续或非连续主机写入单元。
58.在一个示例中,介质控制器204包括:端点链路控制器240和端点应用(app)层250。介质控制器204包括:端点链路控制器240。端点链路控制器240表示通过nvm链路272从nvm设备连接到主机的控制器。端点链路控制器240可以包括:物理层242、链路层244和事务层246。端点链路控制器240的层可以类似于主机链路控制器230的层,用于端点代替用于主机。端点链路控制器240可以实行任务,其包括但不限于接收存储器写入请求和具有要写入介质206的主机数据的事务,包括用于介质写入单元的相关联的提交指示符。
59.在一个示例中,介质控制器204包括端点应用层250。在一个示例中,端点应用层250包括:介质写入(wr)控制器(ctrlr)252、介质写入(wr)数据缓冲器262和介质单元写入跟踪器256。
60.在一个示例中,介质写入控制器252控制介质写入数据缓冲器262和介质单元写入跟踪器256的操作,以控制数据到介质206中的写入。介质写入控制器252可以从端点链路控制器240接收具有提交字段(具有提交字段的mwr)的写入请求。在一个示例中,控制器确定
提交位是否被设置成确定如何将数据提交给介质206。在一个示例中,介质写入控制器252包括:rmw 254,用于表示控制器可以响应于提交位进行控制的读



写操作。在一个示例中,控制器将响应于接收到等于介质写入单元的多个主机写入单元,使操作将整个介质写入单元提交给介质206。
61.在一个示例中,介质写入数据缓冲器262缓冲要写入介质206的介质写入单元的主机数据,直到接收数据的主机写入单元被写入。在一个示例中,介质单元写入跟踪器256跟踪各种介质写入单元对介质206的写入。如图示的,介质写入控制器252可以提供介质写入命令(wr cmd),并且触发介质写入数据缓冲器262来提供要被组合为介质写入(wr)的介质写入数据,如端点应用层250中图示的。介质写入控制器252可以向介质写入数据缓冲器262提供主机写入(wr)数据以进行缓冲。一旦要写入数据,无论是作为完整的介质写入单元还是作为rmw操作,累积在缓冲器中的主机写入数据都会为提交操作提供介质写入数据。
62.在一个示例中,端点应用层250包括:远端存储器(fm)写入(wr)信用跟踪器264和消息生成器266。在一个示例中,当主机和存储器设备二者跟踪写入信用时,fm wr信用跟踪器264的功能类似于主机应用层210的fm wr信用跟踪器216。fm wr信用跟踪器264表示介质控制器204跟踪或维持介质控制器204的写入信用的逻辑。在一个示例中,fm wr信用跟踪器264向介质写入控制器252提供写入信用信息。写入信用信息在系统200中被表示为wr信用。wr信用指示是否存在可用于处理和执行传入写入请求的写入信用。在一个示例中,如果从主机接收到写入请求并且不存在可用的写入信用,则介质写入控制器252发出错误警报。在介质控制器204处跟踪写入信用可以确保主机控制器和介质控制器在对介质206的写入请求的执行上是协调的。
63.在一个示例中,主机控制器202的fm wr信用跟踪器216和介质控制器204的fm wr信用跟踪器264二者跟踪写入信用。在其中二者跟踪写入信用的一个示例中,它们可以彼此独立地跟踪写入信用。在一个示例中,不同的控制器出于不同的目的利用信用计数。例如,主机控制器202可以利用信用跟踪来确定是否发送写入请求,而介质控制器204可以利用信用跟踪来确定溢出。
64.在一个示例中,端点应用层250包括消息生成器266。消息生成器266表示应用层中的逻辑,以向主机控制器202生成消息。根据所描述的任何示例,该消息可以是事务消息或者可以包括事务消息。事务消息可以指示将数据写入介质206是否存在错误,或者是否所有主机数据都被成功写入介质。端点应用层250可以向端点链路控制器240提供消息,该端点链路控制器240通过nvm链路272将消息传送给主机链路控制器230。主机链路控制器230可以将消息提供给主机应用层210的消息处理器222以进行处理。
65.在一个示例中,消息根据链路控制器应用的标准进行格式化。例如,如果主机链路控制器230和端点链路控制器240是pcie控制器,则消息可以是vdm格式。在一个示例中,配置有链路保护信息的vdm消息可以被称为write_go vdm消息。根据标准链路控制使用消息格式可以确保主机和端点二者使用标准物理层、链路层和事务层。标准消息格式的使用可以消除对链路上的边带信号的需要,这使得能够使用标准链路控制器组件并且仅在应用层中使用改变。
66.在一个示例中,主机控制器202以硬件实现,诸如作为主机处理器的一部分、利用专用集成电路(asic)、可编程电路(诸如现场可编程门阵列(fpga))、可编程逻辑器件(pld)
或其它电路来实现。在一个示例中,介质控制器204以硬件实现,诸如利用asic、fpga、pld或其它电路来实现。在一个示例中,主机控制器202包括固件或软件组件,诸如在硬件元件上执行的代码。在一个示例中,介质控制器204包括固件或软件组件,诸如在硬件元件上执行的代码。
67.系统200可以将介质206用于2lm应用,其中主机控制器202将主机cpu或主机处理器(未具体示出)频繁使用的数据传递到介质206以用于高速缓存。在一个示例中,介质控制器204提供消息以指示数据提交状态和每切片粒度上的错误跟踪。端到端数据保护可以确保数据写入介质成功完成。
68.在一个示例中,系统200中的fm写入信用是存储器系统的系统级信用。在一个示例中,fm写入信用具有介质写入单元的粒度;因此,一个fm写入信用可以用于跟踪一个介质写入单元的写入。将理解的是,可以基于不等于介质写入单元的主机写入单元的量来提交介质写入单元,在所述情况下,fm写入信用可以跟踪作为rmw操作的一部分所写入的介质写入单元。在一个示例中,一个fm写入信用用于一次写入操作。在一个示例中,一个fm写入信用用于对nvm介质的多次写入操作。
69.在一个示例中,fm wr信用的最大数量是可编程的。在一个示例中,最大数量被配置在主机控制器202的寄存器226中。在一个示例中,当系统200启动(例如,冷启动)时,主机控制器202可以从寄存器226确定最大fm wr信用,并且使用信用初始化来向介质控制器204传递最大fm wr信用信息。信用初始化可以是实现方式特定的。在一个示例中,信用初始化使用vdm向介质控制器v204传递最大fm wr信用信息。在一个示例中,主机控制器202利用pcie和pcie配置写/读tlp中的供应商特定的扩展能力(vsec)来传递最大fm wr信用信息。介质控制器204可以捕获该信息,并且将其应用于fm wr信用跟踪器264,以确定当远端存储器业务开始流动时的信用溢出。
70.以下提供了端到端流控制和错误通信/处置的示例,其中介质控制器204充当远端存储器控制器,以及主机控制器202充当主机。对于以下描述,假设主机链路控制器230和端点链路控制器240是pcie控制器,并且参考pcie描述各种消息。将理解的是,可比较消息传递的使用可以与不同的链路协议一起使用。
71.在一个示例中,当主机控制器202接收到远端存储器写入请求(诸如来自cpu高速缓存控制器)时,主机控制器202使用来自fm wr信用跟踪器216的fm wr信用计数来确定远端存储器写入是否可以被发送到介质控制器204。如果可用的fm wr信用数量大于零,则在一个示例中,主机控制器202将发送出远端存储器写入请求。提交生成逻辑214可以确定是否在pcie mwr tlp中设置“提交”位或其它提交指示符。在一个示例中,提交生成逻辑214将仅当主机数据的最后一个扇区被发送到介质控制器204时设置提交位。因此,提交位可以指示写入事务的最后一个主机写入单元。在一个示例中,写入信用与多次写入相关联,并且写入的数量和总数内的写入数量可以在tlp或请求vdm内指示。
72.在一个示例中,如果提交位被设置(例如,在出站pcie mwr tlp中具有值“1”),则fm wr信用跟踪器216将调整fm wr信用计数。在一个示例中,调整是从计数减去1。在一个示例中,主机应用层210使具有提交位(设置为0或1)的pcie mwr tlp通过主机链路控制器230中的pcie物理层232、链路层234和事务层236传播,并且通过端点控制器240中的pcie物理层242、链路层244和事务层246传播。pcie mwr tlp通过pcie控制器到达端点应用层250。
73.在一个示例中,介质写入控制器252使用fm wr信用跟踪器264中的信用信息检查信用溢出。在一个示例中,如果介质写入控制器检测到信用溢出,则认为这是致命的系统错误,并且端点应用层250不处理pcie mwr tlp,并且丢弃pcie mwr tlp。如果没有检测到信用溢出,则端点应用层250处理写入,以在介质写入数据缓冲器262中累积数据,或者发送完整的介质切片写入。
74.在一个示例中,如果在入站pcie mwr tlp中设置了提交位,则在一个示例中,fm wr信用跟踪器264可以调整介质控制器204中的fm wr信用计数。例如,fm wr信用计数可以递减。在将数据写入介质206之后,介质向端点应用层250提供响应。在一个示例中,当接收到介质写入响应时,消息生成器266生成vdm消息。在一个示例中,vdm消息包括:用以指示提交了哪些数据扇区以及每个扇区的写入状态是什么的字段。消息生成器266可以通过作为pcie链路的nvm链路272传输vdm消息。在一个示例中,消息生成器266可以向fm wr信用跟踪器264指示返回fm wr信用,诸如通过使信用计数递增1。
75.在一个示例中,vdm消息被包括在vdm tlp或write_go vdm tlp内,其通过主机和端点控制器中的pcie物理层、链路层和事务层传输,以到达作为主机控制器202的主机应用层210中的vdm处理器的消息处理器222。在一个示例中,消息处理器222利用消息中的信息,诸如sector_rxwritten字段,来确认主机意图写入介质206的所有扇区是否都被成功写入。在一个示例中,消息处理器222检查状态字段(例如,sts[2:0])以确保没有报告远端存储器写入错误。在一个示例中,消息处理器222通知fm wr信用跟踪器216关于vdm的接收,以使跟踪器返回写入信用,诸如使信用计数递增1。因此,在一个示例中,vdm可以提供对写入信用和错误消息传递的控制。
[0076]
在一个示例中,如果消息指示错误,则不是所有期望的扇区都被提交给介质,或者存在将数据提交给介质206的错误。可以报告的错误示例可以包括ur(不支持的请求)和ca(完全中止)错误。响应于错误,错误/资源处理程序224可以实行错误处置任务。在一个示例中,错误/资源处理程序224向处理器高速缓存控制器通知错误。如果消息处理器222没有检测到错误,则在一个示例中,错误/资源处理程序224释放为给定的远端存储器写入分配的缓冲器和其它资源。
[0077]
图3是指示何时将数据提交给存储器的消息的示例的表示。消息302表示要从存储器设备发送到主机的事务消息的示例,诸如关于系统200所描述的内容。在一个示例中,消息302是vdm tlp的示例,诸如write_go vdm tlp。消息302可以是根据具有定制化的pcie的vdm,以使得能够实现端到端数据保护。在一个示例中,write_go vdm的交换提供写入信用的返回,以及从介质控制器向主机传送错误状态信息。
[0078]
在一个示例中,消息302可以与标准pcie vdm相同,其具有定制化报头字段,诸如vdm类型、请求者id、消息代码、标签、总线号、设备号、功能号和供应商id。在一个示例中,消息302包括供应商定义的数据字段(字节12

15),其被利用来传达关于成功写入的扇区数量、端到端数据传递的错误状态以及供应商消息的信息。这三个字段用较暗的填充来标识。
[0079]
消息302示出了四个扇区/切片的情况下的write_go vdm tlp格式的示例。行312图示了消息302的相对字节方位。行314表示消息字节的不同位。
[0080]
行322包括pcie消息的各种字段。在一个示例中,消息通过id来路由。在一个示例中,tc(业务类别)存储器参数可以指示业务的类别,诸如远端存储器业务。行324可以包括
请求者id(标识符)和用于存储器写入的标签。在一个示例中,请求者id包括设备总线/设备/功能指示符,该指示符在枚举期间由远端存储器控制器pcie核心锁存。在一个示例中,行324包括具有供应商定义类型的消息代码。在一个示例中,标签字段指示消息302的write_go vdm完成对其意味着对应的远端存储器写入。
[0081]
在一个示例中,行326包括总线号、设备号和功能号字段,它们可以是从主机控制器发送的远端存储器写入请求复制的请求id字段。在一个示例中,供应商id可以指示消息302适用的设备的供应商。
[0082]
在一个示例中,行328包括:定制字段,其包括扇区写入或sector_rxwritten、状态或sts以及供应商消息。在一个示例中,供应商消息可以是用以指示消息302的类型的值。在一个示例中,状态字段可以被指示为sts[2:0],其可以提供对存储器介质的写入的状态。状态字段304用可以用作状态指示的不同值的示例来图示。状态字段304图示了write_go vdm sts字段编码的示例。将理解的是,不同的描述可以应用于所指示的值,或者可以被修改以应用于不同的位编码。还将理解的是,虽然图示了3位编码,但是更多或更少的位可以用于指示消息状态。
[0083]
在状态字段304的一个示例中,值“000”指示成功写入介质。在一个示例中,值“001”是“ur”消息,它指示不受支持的请求。当存储器设备返回ur消息时,主机可以实行错误处置。不受支持的请求的示例可以是访问超出访问范围的请求或对不受支持的区域的请求。在一个示例中,值“100”是“ca”消息,其指示完成器中止。完成器中止指的是由于致命异常,存储器介质不能够完成所请求的写入。致命异常的示例是当介质处不存在可用的写入信用时所接收的请求。主机可以响应于完成器中止消息来实行错误处置。出于状态字段304的目的,可以保留所有其它位编码,但是将理解的是,可以用状态位来指示其它状态或错误消息。
[0084]
在一个示例中,扇区写入字段或sector_rxwritten可以是具有状态字段的消息302的字节12的一部分(诸如关于状态字段304所图示的内容),考虑到消息302包括被标识为字节[0:15]的16个字节,其中字节0包括fmt和类型字段。在一个示例中,消息302使用扇区写入来定义使用独热编码成功提交给介质的扇区。利用独热编码,字段中的每个位可以表示不同的扇区。在一个示例中,扇区写入字段中使用的位的数量取决于介质切片中的扇区数量。将理解的是,存储器设备可以返回二进制数来指示成功状态真值表,而不是每个扇区使用单个位。在一个示例中,其中每个位表示特定的扇区,位方位可以被认为是该扇区的地址偏移。
[0085]
在实现方式中,其中扇区写入字段的每个位对应于介质写入单元的主机写入单元,在一个示例中,位的值可以如下理解。如果介质控制器将该位设置为“1”,则其指示主机写入单元是从主机控制器接收的,并且被成功提交给介质。如果介质控制器将该位设置为“0”,则其指示主机写入单元未成功写入介质。将理解的是,将主机写入单元写入介质时的不成功可能是主机写入单元没有从主机控制器接收的结果(例如,由于其中响应于提交位而实行rmw操作的部分写入情况),或者介质控制器试图将主机写入单元写入介质,但是存在错误。
[0086]
将理解的是,消息302包括可以用pcie连接标识的某些字段。消息302不限于pcie。消息302表示指示用于标识特定主机写入单元的地址或值的事务消息,以及关于将主机写
入单元写入存储器介质的状态或消息。特定主机写入单元的状态和指示可以应用于链路协议的任何事务消息。发送这样的信息可以提供端到端数据保护,确保哪些主机写入单元成功提交给介质。
[0087]
在一个示例中,介质控制器将使用消息302或可比较的消息来实行流控制,以指示写入事务的接收。这样的消息交换可以与传统上为确保主机与存储器设备之间的链路的流控制而实行的内容相同或相似。在一个示例中,如消息302中所指示的,介质控制器向事务消息添加其它信息,以不仅指示通过链路流控制的链路健康,而且指示将数据提交给存储器设备的存储介质的成功。因此,代替于简单地指示通过通信链路的成功事务交换,可以用事务消息信息来扩展消息302,以指示向介质成功写入数据。因此,在一个示例中,介质控制器可以等待发送返回消息,直到将数据提交给介质。在一个示例中,消息302的事务消息是单独的或者除了链路通信消息之外的。通过指示将数据提交给介质,主机可以知道何时将数据写入介质以及何时可用于访问,同时确保数据已被正确写入。
[0088]
图4是利用提交指示符在具有不同写入数据单元粒度的多级存储器系统中写入数据的过程的示例的流程图。过程400表示用于在主机写入单元与介质写入单元之间具有不同数据粒度的系统中的存储介质或存储器介质中写入介质写入单元的过程。在一个示例中,过程400可以由介质控制器或用于存储数据的存储器设备处的控制器来执行。
[0089]
在一个示例中,控制器从主机接收在具有粒度的主机写入单元中的数据以用于写入操作。在402处,写入操作要由可以包括数据提交指示符的请求触发。在一个示例中,在404处,控制器确定从主机接收的数据量是否等于介质写入单元。
[0090]
在一个示例中,如果主机数据量等于介质写入单元大小,406“是”分支,则在420处,控制器可以实行向介质写入完整的介质写入单元。在一个示例中,如果主机数据量不等于介质写入单元的大小,406“否”分支,则在408处,控制器确定写入请求是否具有提交指示符集。提交指示符可以是位或字段,以指示所接收的数据要被提交给介质,而不管是否已经接收到完整的介质写入单元。
[0091]
在一个示例中,如果提交指示符未被设置,410“否”分支,则412,控制器在写入缓冲器中累积主机数据。数据的累积可以允许控制器在多于一个写入请求中接收数据。在一个示例中,主机控制器可以乱序写入数据,或者以介质中不连续的数据块的形式写入数据。因此,主机控制器可以一起发送多个不同介质写入单元的数据部分,并且可以指示不同介质写入单元的提交位。因此,在一个示例中,介质控制器可以在多于一个介质写入单元的写入缓冲器中累积数据。在一个示例中,在414处,响应于将数据存储在写入缓冲器中,介质控制器可以更新介质写入单元跟踪,诸如在由介质控制器保存的主机写入单元索引中注册主机写入单元写入。
[0092]
在一个示例中,如果提交指示符被设置,410“是”分支,则在416处,控制器可以为读



写操作读取目标介质写入单元的部分或全部。在一个示例中,控制器仅检索尚未从主机接收的介质写入单元的部分。然后,在418处,控制器可以基于所接收的主机数据而修改介质写入单元。
[0093]
在一个示例中,通过在410处的提交确定,或者通过经由在406处的确定使完整的介质写入单元进行写入而响应于提交指示符,控制器可以在420处实行整个介质写入单元的介质写入。在一个示例中,在422处,响应于介质写入,控制器更新介质写入单元跟踪,诸
如通过将特定写入单元的写入事务标记为完成。在一个示例中,在422处更新写入单元跟踪以用于完全写入或者在414处更新介质写入单元跟踪以用于数据累积之后,在424处,控制器可以等待后续主机写入操作或者来自主机的写入请求。在一个示例中,控制器实行与写入事务消息的准备相关的其它操作,诸如参照过程500所描述的内容。
[0094]
图5是用于在具有不同写入数据单元粒度的多级存储器系统中写入数据的过程的示例的流程图,其包括消息的使用。该消息可以提供数据保护,直到提交给介质。在一个示例中,该过程可以用于控制写入信用。
[0095]
过程500表示在写入介质时使用事务消息的过程,该写入介质具有不同的写入单元粒度,因为主机生成作为写入事务的主题的写入请求。过程500可以提供端到端数据保护。在一个示例中,过程500还控制写入信用的使用。过程500的操作被图示为在主机控制器与介质控制器的操作之间被拆分。
[0096]
在一个示例中,在502处,主机控制器从主机处理器接收对来自远端存储器(fm)的数据的请求。在一个示例中,在504处,主机控制器确定是否存在写入信用可用于向远端存储器发送写入请求。在506“否”分支处,如果不存在可用的写入信用,则在一个示例中,在508处,主机控制器会把请求排队以等待可用的远端存储器写入(wr)信用。主机控制器可以以这种模式等待,从508返回到504,直到写入信用变得可用为止。
[0097]
在一个示例中,在506“是”分支处,如果存在可用的写入信用,则在510处,主机控制器确定是否利用写入请求设置提交位。在一个示例中,当介质写入单元中的其它数据将不被写入时,主机控制器仅设置提交位或提交指示符,并且因此,将被写入特定介质写入单元的所有数据基于当前写入请求和一个或多个先前写入请求(例如,在存储器设备处具有累积数据)正在被发送或将已经被发送。
[0098]
在510“否”分支处,如果存储器控制器确定不设置提交位,则在514处,主机控制器可以向远端存储器发送主机数据和否定提交指示。在一个示例中,在510“是”分支处,主机控制器确定要设置提交位,并且在512处设置提交位。在设置提交位之后,在514处,主机控制器可以向远端存储器发送主机数据和肯定的提交指示符。
[0099]
在一个示例中,在516处,响应于包括主机数据和提交指示符的写入请求的接收,介质控制器确定是否存在写入信用溢出。当不存在可用的写入信用时,写入信用溢出可以指示从主机接收到对新写入事务的写入请求。理论上,如果主机控制器正在跟踪写入信用,则主机控制器将不会发送将会导致写入信用溢出的写入请求。然而,介质控制器处的额外保护可以避免错误。
[0100]
在一个示例中,在516“是”分支处,如果发生写入信用溢出,则在518处,介质控制器可以生成致命错误消息来向主机报告。在一个示例中,主机控制器将利用消息处理器来处理致命错误消息,如下面更详细描述的,并且在过程500中在534处图示。
[0101]
在516“否”分支处,如果不存在写入信用溢出,则在一个示例中,在520处,介质控制器确定所接收的数据量是否构成完整的介质写入单元。将理解的是,介质控制器可以在确定介质写入单元是否完整之前确定提交位的状态。在这样的情况下,对于其中提交位被设置的情况以及对于提交位未被设置的情况,介质控制器可以确定数据是否构成完整的介质写入单元。操作的次序不一定重要。相反,如果使用提交位,则系统可以应用对提交位的理解,并且介质控制器用所描述的消息向主机发回信号,以指示提交到介质的成功或错误。
[0102]
在一个示例中,在520“否”分支处,如果介质写入单元不完整,则在一个示例中,在522处,介质控制器确定提交位是否被设置。在一个示例中,在522“否”分支处,如果提交位未被设置,则在524处,介质控制器累积数据。虽然在过程500中没有明确示出,但是介质控制器可以实行与累积数据相关联的其它操作,并且返回以等待后续写入请求。在一个示例中,在522“是”分支处,如果提交位被设置,则介质控制器将向介质提交数据,即使不存在完整的介质写入单元。在一个示例中,在526处,介质控制器实行rmw操作。rmw操作准备可以包括从作为主机写入目标的介质读取数据,因此介质控制器可以准备好未改变的数据,以及能够修改将要写入的数据。
[0103]
在一个示例中,在520“是”分支处,如果主机数据提供了完整的介质写入单元,或者在526处,介质控制器已经用rmw操作准备了完整的介质写入单元之后,则在528处,介质控制器可以将数据提交给介质。在一个示例中,在530处,介质控制器响应于向介质提交介质写入单元来更新其对写入信用的本地跟踪。假设每个写入信用有一个介质写入单元,介质写入单元的提交可以指示可以针对其释放写入信用的写入事务的完成。在其中写入信用允许多于一次写入的示例中,介质控制器可以更新与写入信用相关的信息以指示提交。
[0104]
在一个示例中,在532处,介质控制器生成提交消息或事务消息以发送给主机,以指示向介质提交数据。在一个示例中,在534处,响应于提交之后的事务消息或者响应于致命错误的错误消息,主机控制器处理所接收的消息。在一个示例中,在536处,主机控制器基于提交事务消息的接收而更新主机侧写入信用。
[0105]
在一个示例中,在538处,主机控制器根据消息来确定写事务的所有扇区是否成功。在538“否”分支处,如果没有成功地将所有扇区写入介质,则在540处,主机控制器实行错误处置。错误处置的细节超出了本讨论的范围。主机控制器可以实行与确定错误和解决错误相关的操作。在540处,在错误处置之后,或者在538“是”分支处,在确定向介质写入所有扇区成功之后,在542处,主机控制器可以等待后续的远端存储器请求。
[0106]
图6是计算系统的示例的框图,其中可以实现具有带提交消息的不同写入数据单元粒度的多级存储器系统。系统600表示根据本文中任何示例的计算设备,并且可以是膝上型计算机、台式计算机、平板计算机、服务器、游戏或娱乐控制系统、嵌入式计算设备或其它电子设备。
[0107]
系统600提供了具有根据图1的系统100的组件的系统的示例。在一个示例中,系统600包括:主机控制器,诸如存储器子系统620中的控制器,其生成对非易失性介质的写入请求,该非易失性介质具有与主机控制器和处理器的写入单元不同的写入单元。在一个示例中,系统600包括:用于存储器子系统620中的非易失性介质的介质控制器692,该介质控制器692接收远端存储器写入请求并根据本文中的任何描述生成事务消息。在一个示例中,系统600包括:用于存储子系统680中的非易失性介质的介质控制器694,该介质控制器694接收远端存储器写入请求并根据本文中的任何描述生成事务消息。
[0108]
系统600包括:处理器610,其可以包括任何类型的微处理器、中央处理单元(cpu)、图形处理单元(gpu)、处理核心或其它处理硬件或组合,来为系统600提供指令的处理或执行。处理器610可以是主机处理器设备。处理器610控制系统600的总体操作,并且可以是或可以包括一个或多个可编程通用或专用微处理器、数字信号处理器(dsp)、可编程控制器、专用集成电路(asic)、可编程逻辑器件(pld)或这样的设备的组合。
[0109]
在一个示例中,系统600包括:耦合到处理器610的接口612,对于需要更高带宽连接的系统组件,诸如存储器子系统620或图形接口组件640,接口612可以表示较高速度接口或高吞吐量接口。接口612表示接口电路,其可以是独立的组件或被集成到处理器管芯上。接口612可以作为电路集成到处理器管芯上,或者作为组件集成在片上系统上。在存在的情况下,图形接口640对接到图形组件,以用于向系统600的用户提供视觉显示。图形接口640可以是独立的组件,或者被集成到处理器管芯或片上系统上。在一个示例中,图形接口640可以驱动向用户提供输出的高清(hd)显示器或超高清(uhd)显示器。在一个示例中,显示器可以包括触摸屏显示器。在一个示例中,图形接口640基于存储在存储器630中的数据或基于由处理器610执行的操作或二者来生成显示。
[0110]
存储器子系统620表示系统600的主存储器,并且为要由处理器610执行的代码或要在执行例程中使用的数据值提供存储。存储器子系统620可以包括一个或多个存储器设备630,诸如只读存储器(rom)、闪速存储器、一种或多种随机存取存储器(ram),诸如dram、3dxp(三维交叉点)或其它存储器设备,或者这样的设备的组合。除其它之外,存储器630尤其存储和托管操作系统(os)632,以提供用于在系统600中执行指令的软件平台。附加地,应用634可以从存储器630在os 632的软件平台上执行。应用634表示具有它们自身的操作逻辑来实行一个或多个功能的执行的程序。过程636表示向os 632或一个或多个应用634或其组合提供辅助功能的代理或例程。os 632、应用634和过程636提供软件逻辑来为系统600提供功能。在一个示例中,存储器子系统620包括:存储器控制器622,其是生成命令并向存储器630发出命令的存储器控制器。将理解的是,存储器控制器622可以是处理器610的物理部分或者是接口612的物理部分。例如,存储器控制器622可以是集成到具有处理器610的电路上(诸如集成到处理器管芯或片上系统上)的集成存储器控制器。
[0111]
虽然没有具体图示,但是将理解的是,系统600可以包括设备之间的一个或多个总线或总线系统,诸如存储器总线、图形总线、接口总线或其它的。总线或其它信号线可以将组件通信地或电耦合在一起,或者通信地且电耦合组件。总线可以包括物理通信线、点对点连接、桥接器、适配器、控制器或其它电路或组合。总线可以包括例如系统总线、外围组件互连(pci)总线、超传送或工业标准架构(isa)总线、小型计算机系统接口(scsi)总线、通用串行总线(usb)或其它总线或组合中的一种或多种。
[0112]
在一个示例中,系统600包括:接口614,其可以耦合到接口612。接口614可以是比接口612具有更低速度的接口。在一个示例中,接口614表示接口电路,其可以包括独立组件和集成电路。在一个示例中,多个用户接口组件或外围组件或二者耦合到接口614。网络接口650向系统600提供通过一个或多个网络与远程设备(例如,服务器或其它计算设备)通信的能力。网络接口650可以包括以太网适配器、无线互连组件、蜂窝网络互连组件、usb(通用串行总线)或其它基于有线或无线标准的或专有的接口。网络接口650可以与远程设备交换数据,这可以包括发送存储在存储器中的数据或者接收要存储在存储器中的数据。
[0113]
在一个示例中,系统600包括:一个或多个输入/输出接口660。i/o接口660可以包括用户通过其与系统600交互的一个或多个接口组件(例如,音频、字母数字、触觉/触摸或其它对接)。外围接口670可以包括上面没有具体提到的任何硬件接口。外设一般指的是独立连接到系统600的设备。从属连接是其中系统600提供软件平台或硬件平台或二者的连接,操作在所述软件平台或硬件平台或二者上执行,并且用户与所述软件平台或硬件平台
或二者交互。
[0114]
在一个示例中,系统600包括:以非易失性方式存储数据的存储子系统680。在一个示例中,在某些系统实现方式中,存储装置680的至少某些组件可以与存储器子系统620的组件重叠。存储子系统680包括:(一个或多个)存储设备684,其可以是或可以包括用于以非易失性方式存储大量数据的任何常规介质,诸如一个或多个基于磁、固态、3dxp或光学的盘或组合。存储装置684将代码或指令和数据686保持在持久状态中(即,尽管系统600的供电中断,但是该值仍被保留)。尽管存储器630通常是向处理器610提供指令的执行或操作存储器,但是存储装置684一般可以被认为是“存储器”。尽管存储装置684是非易失性的,但是存储器630可以包括易失性存储器(即,如果中断系统600供电,则数据的值或状态是不确定的)。在一个示例中,存储子系统680包括:控制器682,以与存储装置684对接。在一个示例中,控制器682是接口614或处理器610的物理部分,或者可以包括处理器610和接口614二者中的电路或逻辑。
[0115]
功率源602向系统600的组件供电。更具体地,功率源602通常与系统600中的一个或多个电源604对接,以向系统600的组件供电。在一个示例中,电源604包括插入墙壁插座的ac到dc(交流到直流)适配器。这样的ac功率可以是可再生能源(例如,太阳能)功率源602。在一个示例中,功率源602包括:dc功率源,诸如外部ac到dc转换器。在一个示例中,功率源602或电源604包括:无线充电硬件,以经由靠近充电场的方式进行充电。在一个示例中,功率源602可以包括内部电池或燃料电池源。
[0116]
根据本文中所描述的内容,对可以充当远端存储器的非易失性介质或非易失性存储器设备的引用可以应用于不同的存储器类型。在一个示例中,非易失性存储器设备是块可寻址存储器设备,诸如nand或nor闪存技术。因此,存储器设备还可以包括下一代非易失性设备,诸如三维交叉点存储器设备、其它字节可寻址非易失性存储器设备。存储器设备可以包括基于存储器单元的电阻状态或存储器单元的相位来存储数据的非易失性字节可寻址介质。在一个示例中,存储器设备可以使用硫族化物相变材料(例如,硫族化物玻璃)。在一个示例中,存储器设备可以是或可以包括多阈值级别的nand闪速存储器、nor闪速存储器、单级或多级相变存储器(pcm)或具有开关的相变存储器(pcms)、电阻式存储器、纳米线存储器、铁电晶体管随机存取存储器(fetram)、并入忆阻器技术的磁阻随机存取存储器(mram)存储器、或自旋转移矩(stt)

mram、或任何上述内容的组合、或其它存储器。
[0117]
一般而言,关于本文中的描述,在一个示例中,存储器设备包括:非易失性存储器(nvm)介质,其具有作为nvm介质的最小可写入单元的介质写入单元,其中介质写入单元在大小上不同于要耦合到nvm设备的主机控制器的主机写入单元;以及介质控制器,以当耦合时从主机控制器接收写入事务的写入数据,并且发送事务消息以指示写入事务的写入数据是否被成功提交给nvm介质。
[0118]
在一个示例中,介质写入单元包括数据切片,并且主机写入单元包括数据扇区,其中,数据切片包括多个数据扇区。在一个示例中,介质控制器要接收写入数据和相关联的提交指示符,以即使在所接收的写入数据量不等于介质写入单元的大小的情况下,指示写入数据是否要被提交给nvm介质。在一个示例中,介质控制器要维持写入信用,以指示可以挂起到nvm介质的可用写入数量。在一个示例中,介质控制器要响应于接收到写入事务而递减写入信用,并且响应于成功地将写入数据提交给nvm介质而递增写入信用。在一个示例中,
每一个写入信用要指示对nvm介质的多个写入操作。在一个示例中,介质控制器要从主机控制器接收配置命令,以设置写入信用的数量和每个写入信用的介质写入单元的数量。在一个示例中,事务消息要指示用于写入数据的介质写入单元的每个主机写入单元的错误。在一个示例中,存储器设备进一步包括:外围组件互连快速(pcie)链路控制器,其用于通过pcie链路耦合到主机控制器;其中,介质控制器要接收写入事务并且通过pcie链路发送事务消息。在一个示例中,事务消息包括供应商定义的消息(vdm)。在一个示例中,事务消息包括pcie链路的事务层的事务层分组(tlp)。在一个示例中,写入事务要指示写入事务的最后一个主机写入单元。
[0119]
一般而言,关于本文中的描述,在一个示例中,一种系统包括:主机控制器,其用于在主机写入单元中写入数据,该主机写入单元作为主机控制器的最小可写入单元;以及非易失性存储器(nvm)设备,其包括具有作为nvm介质的最小可写入单元的介质写入单元的非易失性存储器(nvm)介质,其中介质写入单元在大小上不同于主机控制器的主机写入单元;以及介质控制器,其用于从主机控制器接收写入事务的写入数据,并且发送事务消息以指示写入事务的写入数据是否被成功提交给nvm介质。
[0120]
在一个示例中,介质控制器要维持写入信用,以指示可以挂起到存储器介质的可用写入数量。在一个示例中,事务消息要指示写入数据的介质写入单元的每个主机写入单元的错误。在一个示例中,nvm设备进一步包括:外围组件互连快速(pcie)链路控制器,其通过pcie链路耦合到主机控制器;其中,介质控制器要接收写入事务并且通过pcie链路发送事务消息。在一个示例中,写入事务要指示写入事务的最后一个主机写入单元。在一个示例中,该系统进一步包括以下各项中的一个或多个:耦合到主机控制器的主机处理器设备;通信耦合到主机处理器的显示器;通信耦合到主机处理器的网络接口;或者为系统供电的电池。
[0121]
一般而言,关于本文中的描述,在一个示例中,一种用于写入数据的方法包括:在介质控制器处从主机控制器接收写入事务,该写入事务包括写入数据的多个主机写入单元,其中,介质控制器要将数据提交给介质写入单元中的非易失性存储器(nvm)介质,其中,单个介质写入单元包括多个主机写入单元;将写入数据提交给nvm介质;以及发送事务消息以指示写入事务的写入数据是否被成功提交给nvm介质。
[0122]
在一个示例中,将写入数据提交给nvm介质包括:更新写入信用,以指示可以挂起到nvm介质的可用写入数量。在一个示例中,接收写入事务和发送事务消息包括:通过外围组件互连快速(pcie)链路接收写入事务;以及通过pcie链路发送事务消息。
[0123]
本文中所图示的流程图提供了各种过程动作的顺序的示例。流程图可以指示要由软件或固件例程执行的操作,以及物理操作。流程图可以图示有限状态机(fsm)的状态的实现方式的示例,其可以以硬件和/或软件实现。尽管以特定的顺序或次序示出,但是除非另外指定,动作的次序可以被修改。因此,所图示的示图应该仅被理解为示例,并且该过程可以以不同的次序实行,并且一些动作可以并行实行。附加地,可以省略一个或多个动作;因此,不是所有的实现方式都将实行所有动作。
[0124]
到本文中所描述的各种操作或功能的程度,它们可以被描述或定义为软件代码、指令、配置和/或数据。内容可以是直接可执行文件(“对象”或“可执行文件”形式)、源代码或差异代码(“增量”或“补丁”代码)。本文中所描述的软件内容可以经由其上存储有内容的
制品来提供,或者经由操作通信接口以经由通信接口发送数据的方法来提供。机器可读存储介质可以使机器实行所描述的功能或操作,并且包括以机器(例如,计算设备、电子系统等)可访问的形式存储信息的任何机构,诸如可记录/不可记录介质(例如,只读存储器(rom)、随机存取存储器(ram)、磁盘存储介质、光存储介质、闪速存储器设备等)。通信接口包括:与硬连线介质、无线介质、光学介质等中的任一项对接以与另一个设备通信的任何机构,诸如存储器总线接口、处理器总线接口、互联网连接、盘控制器等。可以通过提供配置参数和/或发送信号来配置通信接口,以准备通信接口从而提供描述软件内容的数据信号。可以经由发送到通信接口的一个或多个命令或信号来访问通信接口。
[0125]
本文中所描述的各种组件可以是用于实行所描述的操作或功能的部件。本文中所描述的每个组件包括软件、硬件或这些的组合。组件可以被实现为软件模块、硬件模块、专用硬件(例如,专用硬件、专用集成电路(asic)、数字信号处理器(dsp)等)、嵌入式控制器、硬连线电路等。
[0126]
除了本文中所描述的内容,在不脱离本发明的范围的情况下,可以对本发明的公开内容和实现方式进行各种修改。因此,本文中的说明和示例应该被解释为说明性的,而不是限制性意义的。本发明的范围应该仅通过参考所附权利要求来衡量。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1