跟踪对于介质控制器的写入请求的制作方法

文档序号:16810997发布日期:2019-02-10 13:38阅读:157来源:国知局
跟踪对于介质控制器的写入请求的制作方法

除其他设备之外,系统能够包括处理器和存储器(或多个处理器和/或多个存储器)。处理器能够向存储器发出存取请求。能够使用非持久化(或易失性)存储设备和/或持久化(或非易失性)存储设备来实施存储器。非持久化存储设备的示例包括动态随机存取存储器(dram)、静态随机存取存储器(sram)等等。持久化存储设备的示例包括闪速存储设备、忆阻器存储设备、相变存储设备、电可擦除且可编程只读存储器(eeprom)设备等等。

附图说明

关于随后的图描述了本公开的一些实施方式。

图1是根据一些示例的系统的框图。

图2是根据一些示例的跟踪器和跟踪结构的框图。

图3是根据另外的示例的标准写入请求处理的流程图。

图4是根据一些示例的逐出处理的流程图。

图5是根据一些示例的提交处理的流程图。

图6是根据一些示例的写入请求处理的流程图。

图7是根据另外的示例的系统的框图。

遍及附图,相同的附图标记指定类似的、但是不一定相同的要素。图不一定按比例,并且一些部分的尺寸可以被夸大以更清楚地图示出所示出的示例。而且,附图提供按照描述的示例和/或实施方式;然而,描述不局限于在附图中提供的示例和/或实施方式。

具体实施方式

在本公开中,使用术语“一”,或“该”意图也包括复数形式,除非上下文清楚地另外指出其他。而且,当在本公开中使用时,术语“包括”、“包括有”、“包含”、“包含有”、“具有”或“具备”指定所陈述的要素的存在,但是不排除存在或添加其他要素。

能够由处理器或诸如输入/输出(i/o)设备之类的其他请求者向介质控制器发出管理对应的存储设备的存取的写入请求。存储设备能够包括持久化存储设备和非持久化存储设备。当从持久化存储设备移除功率时,持久化存储设备维持其存储的内容(即,不丢失存储的内容)。另一方面,当从非持久化存储设备移除功率时,非持久化存储设备丢失其存储的内容。

第一类型的写入请求(在随后的讨论中被称为“标准写入请求”)由介质控制器确认而不等待与写入请求相关联的写入数据完成持久化的。换句话说,一旦介质控制器接收标准写入请求并且已经为了将来的持久化对其进行排队,即使写入数据可能还没有被存留(即,被持久地存储)在持久化存储设备中,介质控制器能够向请求者发送回确认。响应于对标准写入请求的确认,请求者不能确信用于标准写入请求的写入数据已经被持久地存储。

在介质控制器已经完成了将用于持久化写入请求的数据写入到持久化存储设备之后,由介质控制器确认第二类型的写入请求(在随后的讨论中被称为“持久化写入请求”)。响应于对持久化写入请求的确认,请求者能够证实用于持久化写入请求的写入数据已经被持久地存储。

能够由请求者发送的另一请求是持久化刷新请求,该请求是使请求者的所有先前未决的标准写入请求被存留的请求,并且该请求由介质控制器仅在响应于所有这样的先前未决的标准写入已经完成持久化时进行确认。响应于持久化刷新请求,介质控制器进行检查以确保所有先前未决的标准写入请求的写入数据已经被持久地存储,并且然后响应于确定所有先前未决的标准写入请求的写入数据已经被持久地存储来向请求者发送单个确认。

尽管使用持久化写入请求允许请求者以独立的写入请求为基础来接收确认,但发出大量持久化写入请求能够使总体系统操作慢下来,因为介质控制器不得不在介质控制器能够向请求者发送回确认之前等待对应的写入数据被存留(这能够涉及对相对慢的持久化存储设备进行写入)。

尽管具有持久化发布缓冲器的介质控制器能够在向持久化发布缓冲器(与持久化存储设备相比其具有更高的存取速度)发布持久化写入请求时发送对持久化写入请求的确认,与具有非持久化发布缓冲器的介质控制器相比,具有持久化发布缓冲器的介质控制器通常更昂贵。因此,实施具有包括持久化发布缓冲器地许多介质控制器的大型系统能够导致大型系统的增加的总成本。

与使用持久化写入请求相比较,使用后面是持久化刷新请求的标准写入请求能够导致改善的系统性能和/或较低的系统实现成本。通过使用单个持久化刷新请求,仅一个每介质控制器组构请求用于跟踪多个先前的标准写入请求的持久化,而不是涉及在跟踪多个标准写入请求的完成的多个请求。因此,持久化的请求者未决实现所占用的跟踪资源的数量大大减小。

必须向先前已经向其发送标准写入请求的所有介质控制器发出持久化刷新请求。然而,系统可能不知道哪些介质控制器是标准写入请求的接收方,因此可能必须向系统中的所有介质控制器广播持久化刷新请求。在网络带宽和系统资源消耗的角度上,在具有大量介质控制器的系统中向所有介质控制器广播持久化刷新请求可能是离谱地昂贵。

根据本公开的一些实施方式,跟踪器能够用于对于给定请求者高效地跟踪自从由给定请求者发送持久化刷新请求的最后的时间起已经向其发送标准写入请求的介质控制器。跟踪器使用能够存储已经向其发送标准写入请求的介质控制器的标识符的跟踪结构(列表、表格的形式或任何其他类型的数据结构)。在能够包括大量介质控制器的系统中,跟踪结构可能具有不允许跟踪结构存储所有可能的介质控制器的标识符的尺寸。实施足够大以存储大型系统中的所有可能的介质控制器的标识符的跟踪结构,可能是不切实际的。而且,就系统资源使用而言,管理大型跟踪结构能够与较高的开销相关联。

为了证实给定请求者的所有未决的标准写入请求的持久化,跟踪器能够仅仅向由跟踪结构识别的介质控制器发送持久化刷新请求(而不是向系统中的所有介质控制器广播持久化刷新请求)。在许多情况下,小的跟踪结构能够跟踪已经向其发送标准写入请求的介质控制器而不溢出,这是因为请求者通常不向大量介质控制器发送写入请求。然而,如果跟踪结构变满,提供机制来解决跟踪结构的溢出情况。而且,能够提供机制来检测跟踪结构的几乎满的条件,并且响应于几乎满的条件采取行动来减少跟踪结构中的条目的数量。

图1是包括处理器102和存储器控制器104的示例系统的框图。存储器控制器104能够和处理器102分开,但是(直接地或通过另一设备)连接到处理器102。替换地,存储器控制器104能够是处理器102的一部分。处理器能够包括微处理器、多核微处理器的核、微控制器、可编程集成电路、可编程门阵列、系统芯片(soc)或另一硬件处理电路。

尽管图1示出仅仅一个处理器102和对应的存储器控制器104,但在其他的示例中,能够存在多个处理器和相应的存储器控制器,或更一般地说,多个请求者和相应的存储器控制器。请求者能够指的是能够存取存储设备的数据的诸如处理器、i/o设备等等的任何设备。在一些示例中,在请求者和存储器控制器之间能够存在一一对应。在其他的示例中,请求者能够经由多个存储器控制器附接到存储器组构,或多个请求者可以经由单个共享的存储器控制器附接到存储器组构。

系统进一步包括管理相应的存储设备108的存取的介质控制器106。存储设备108能够指的是独立的存储器集成电路(ic)芯片,或指的是具有多个存储器ic芯片的存储器模块。更一般地说,存储设备能够指的是在一个ic芯片或多个ic芯片上,或在一个电路板或多个电路板上实施的存储器元件的任何布置。

介质控制器指的是能够向满足存储设备的时序和协议规范的存储设备发出存取命令的控制器。协议规范能够以被激活以引起包括读取操作、写入操作的对应的存储器存取操作,或涉及存储设备的存储器元件(或者存储器元件的组)的存取的任何其他操作的信号的特定组合的形式来定义存取命令。

时序规范支配信号的时序,例如包括用于对存储设备进行存取的信号的最小和/或最大时序规范。

不同类型的存储设备能够具有不同的时序和协议规范。

存储器控制器104能够发出不符合特定存储设备的时序和协议规范的读取和写入请求。由存储器控制器104发出的读取和写入请求(以及其他存取请求)是更一般的请求。存储器存取请求是由存储器控制器104响应于处理器102的相应的请求而发出的。通过存储器组构110向目标介质控制器106(或多个目标介质控制器106)发送存储器存取请求。

存储器组构110能够包括网络、链路、总线或任何其他类型的互连以允许存储器控制器104和介质控制器106之间的通信。

从存储器控制器104接收存储器存取请求的介质控制器106能够生成对应的存取命令以对相应的存储设备108进行存取。对于写入请求,由介质控制器106将由存储器控制器104提供的数据写入到相应的存储设备108。对于读取请求,介质控制器106从相应的存储设备108中调取读数据,并且通过存储器组构110向存储器控制器104发送读数据。

根据本公开的一些实施方式,存储器控制器104包括能够跟踪存储器控制器104已向其发送标准写入请求的介质控制器的跟踪器112。跟踪器112能够被实施为存储器控制器104内的硬件处理电路。在其他的示例中,跟踪器112能够被实施为可由存储器控制器104的硬件处理电路执行的机器可读指令。

跟踪器112维持能够被存储在存储器控制器104的存储器中、或能够被存储在可由存储器控制器104访问的外部存储器上的跟踪结构114。跟踪器112能够在跟踪结构114中存储已经向其发送标准写入请求的介质控制器106的标识符。

图2描绘根据一些实施方式的跟踪器112的任务。跟踪器112执行写入请求接收任务(202),该任务接收写入请求(并且更具体地,标准写入请求),该写入请求一旦由目的介质控制器106接收就被确认而不等待与该写入请求相关联的写入数据完成持久化。确认涉及目的介质控制器106向存储器控制器104发送对标准写入请求的确认。确认能够是提供关于标准写入请求已经被目的介质控制器104接收的指示的任何类型的信息的形式,诸如消息、消息内的信息元素等等。响应于标准写入请求被发送的确认仅仅指示标准写入请求已经被接收并且可能被目的介质控制器106处理。然而,确认不提供关于与写入请求相关联的写入数据还没有被写入到持久化存储器的任何指示。因而,存储器控制器104在接收到确认时不能做出与标准写入请求相关联的写入数据是否已经被存留(即,写入到持久化存储器)的任何确定。

响应于标准写入请求,跟踪器112执行将(已经向其发送标准写入请求的)目的介质控制器的标识符208添加到跟踪结构114的标识符添加任务(204)。标识符能够指的是能够唯一地识别目的介质控制器(以将目的介质控制器与其他介质控制器相区分)的任何信息。

随着时间的推移,诸如响应于来自处理器102(或者在处理器102上执行的程序)的请求,存储器控制器104可能已经向多个介质控制器发送了多个标准写入请求。能够将已经被存储器控制器104发送标准写入请求的所有这样的介质控制器的标识符添加到跟踪结构114。在处理器102上执行的程序能够包括机器可读指令,诸如软件和/或固件的那些机器可读指令。

在一些时候,使存储器控制器104发出标准写入请求的处理器102(或在处理器102上执行的程序)可能希望证实所有在先的标准写入请求已经被存留。这可以作为检查指点进程或者提交进程的一部分来执行这。检查指点进程指的是定义其中证实所有在先的写入已经被完成(即,已经被存留)的特定点(诸如时间点或者程序执行的点)的过程。提交操作能够指的是作出交易(其可以包括多个写入请求)持久化。

处理器102可以向存储器控制器104发送未决的标准写入请求的持久化的证实是期望的存留指示。该指示能够是特定指令的形式,诸如创建屏障的指令。创建屏障的指令防止处理器102发出用于对存储器进行存取的任何另外的请求,直到所有未决的写入请求被证实已经被存留为止。

响应于来自处理器102的存留指示,跟踪器112能够执行存留请求发送任务(206),其向由跟踪结构114识别的介质控制器发送存留写入操作的请求。在一些示例中,这样的请求能够包括持久化刷新请求,如上面指出的该刷新请求是使请求者的存留所有先前未决的标准写入请求的请求。

图3是根据另外的示例的、由跟踪器112执行的标准写入请求处理的流程图。跟踪器112(在302)接收标准写入请求。跟踪器112(在304)确定标准写入请求是否为请求对存储器的非持久化区域进行写入。例如,存储器的非持久化区域能够是诸如动态随机存取存储器(dram)、静态随机存取存储器(sram)之类的非持久化存储器,或其他类型的非持久化存储器的一部分。如果标准写入请求是对非持久化区域进行写入的请求,然后跟踪器112不采取进一步的动作(即,跟踪器112拒绝响应于另外的写入请求来更新跟踪结构),并且将标准写入请求转发到可适用的介质控制器。

然而,如果写入是针对持久化区域,则跟踪器112确定(在306)确定(标准写入请求的)目的介质控制器的标识符是否已经在跟踪结构114中。如果是这样的话,跟踪器112不得采取进一步的动作(即,跟踪器112拒绝响应于标准写入请求来更新跟踪结构),并且处理返回以等待接下来的标准写入请求。如果所接收的标准写入请求的目的介质控制器的标识符已经在跟踪结构114中,那么这意味着被发送以证实所有未决的标准写入请求的持久化的随后的持久化刷新请求将被发送给已经由跟踪结构114识别的目的介质控制器。

如果(标准写入请求的)目的介质控制器的标识符还没有在跟踪结构114中,跟踪器112(在308)确定跟踪结构114是否是满的。如果跟踪结构114的所有条目已经被存储器控制器104发送标准写入请求的相应的介质控制器的标识符填满,则跟踪结构114是满的。

如果跟踪结构114不是满的,则跟踪器112(在310)将(用于所接收的标准写入请求的)目的介质控制器的标识符添加到跟踪结构114。在这一点上,允许由存储器控制器104通过存储器组构110向目的介质控制器发送所接收的标准写入请求。

在任务310之后,处理返回以等待接下来的标准写入请求。

然而,如果跟踪器112(在308)确定跟踪结构114是满的,则跟踪器112(在312)将标准写入请求升级为持久化写入请求,以生成持久化写入请求来代替标准写入请求。如上面指出的,持久化写入请求是在目的介质控制器已经完成了将持久化写入请求的数据写入到持久化存储器之后、由目的介质控制器确认的写入请求。跟踪器112将标准写入请求升级为持久化写入请求能够涉及跟踪器112诸如通过从指示标准写入请求的第一值到指示持久化写入请求的第二值来设置写入请求的报头中的标志,以将标准写入请求转换为持久化写入请求。然后由存储器控制器104通过存储器组构110向目的介质控制器发送持久化写入请求(来代替标准写入请求)。请注意,不是必须在跟踪结构114中跟踪持久化写入请求,这是因为从持久化写入请求的目的介质控制器接收到的任何确认证实与持久化写入请求相关联的写入数据的持久化。

根据本公开的一些实施方式,满的跟踪结构114不是阻挡条件;换句话说,当跟踪结构114是满的时,跟踪器112不阻挡向目的介质控制器发出写入请求。确切地讲,如果跟踪结构114是满的,则跟踪器112使标准写入请求被改变为持久化写入请求,使得能够向目的介质控制器发出该写入请求。

从任务312,跟踪器112能够返回以等待接下来的标准写入请求。

图4是根据另外的示例的、能够通过跟踪器112执行的逐出处理的流程图。逐出指的是从跟踪结构114中移除介质控制器的标识符(或多个介质控制器的标识符)。移除跟踪结构114的介质控制器的标识符提供跟踪结构114中的更多空间用于添加由跟踪器112接收的另外的标准写入请求的标识符。能够由跟踪器112自主地以及择机执行从跟踪结构114中逐出标识符。换句话说,跟踪器112能够在不从处理器102或其他请求者接收任何请求或要求的情况下执行逐出。基于检测到指定的条件被满足来主动地执行逐出,以降低跟踪结构114变满的可能性。

跟踪器112(在402)确定跟踪结构114是否处于满的阈值内(即,跟踪结构114几乎已满)。例如,跟踪器112能够确定跟踪结构114是否处于满的指定的百分比内,或能够确定少于指定数量的可用的条目是否留在跟踪结构114中。

如果跟踪结构没有处于满的阈值内,那么跟踪器112不采取任何逐出动作。然而,如果跟踪结构114处于满的阈值内,则跟踪器112(在404)从跟踪结构114中选择介质控制器标识符用于逐出。

用于逐出的介质控制器标识符的选择能够基于最近最少使用(lru)策略、最近未使用(nru)策略或一些其他策略(例如,介质控制器标识符的随机选择或一些其他选择技术)。lru策略指定被选择用于逐出的介质控制器标识符是在存储器请求中最近最少使用的介质控制器标识符。nru策略指定被选择用于逐出的介质控制器标识符是最近未使用的介质控制器标识符。

跟踪器112然后(在406)发送对于所选择的介质控制器标识符的持久化刷新请求。

在持久化刷新请求对于给定介质控制器标识符未决时,由跟踪器112(在408)将对于给定介质控制器标识符的任何随后的标准写入请求升级为对于给定介质控制器标识符的相应的持久化写入请求。

当跟踪器112从介质控制器接收到持久化刷新操作已经完成的确认时,即,对于发送给介质控制器的所有在先的标准写入已经完成持久化时,跟踪器112从跟踪结构114中移除所选择的介质控制器标识符。

图5是根据一些示例的、能够通过跟踪器112来执行的示例提交处理的流程图。跟踪器112(在502)从处理器102接收提交指示。提交指示是关于处理器102(或者在处理器102上执行的程序)想要创建写入排序屏障的指示。

响应于提交指示,跟踪器112(在504)对于跟踪结构114中的每个介质控制器标识符发送持久化刷新请求。在对于任何介质控制器标识符的持久化刷新请求未决时,由跟踪器112(在506)将对于任何介质控制器标识符的任何随后的标准写入请求升级为持久化写入请求。请注意,根据图5的示例提交处理,不管哪个介质控制器是目标,都将所有标准写入请求升级,直到所有持久化刷新已经完成的时候为止。一旦对于所有介质控制器标识符的持久化刷新处理完成,(在508)能够将对应的完成指示发送回处理器102。在这时,已经向其发送标准写入请求的介质控制器的标识符的插入能够继续。利用图5的示例提交处理,在提交处理期间,跟踪结构的内容逐渐地减小到零。跟踪结构的完全空的条件能够是关于提交处理已经完成的指示。

另一示例提交处理如下进行。单独地处置每个介质控制器。替换提交处理向在提交处理中识别的每个相应的介质控制器发送持久化刷新请求。在持久化刷新对于相应的介质控制器未决时,将对于相应的介质控制器的任何标准写入请求升级为持久化写入请求。在对于每个相应的介质控制器完成持久化刷新之后,对于相应的介质控制器单独地继续一般操作。当对于介质控制器的最后的独立的持久化刷新完成时,提交操作作为整体完成。

利用替换提交处理,在每个参与介质控制器完成其相应的持久化刷新的不同的时间单独地继续一般操作(其中一般操作指的是将写入记录在跟踪结构中,并且停止将标准写入请求升级为持久化写入请求)。因此,跟踪结构整体不可能完全变空,这是因为在所有旧的条目已经被移除之前新的条目可以被插入。

利用以上讨论的上文的提交处理中的任何一个,通过提交指示时的跟踪结构的成员来确定接收持久化刷新请求的介质控制器的列表。而且,在任一情况中,提交操作(发送给处理器的确认)的完成是集中的、仅当对于所有有关的介质控制器的所有发出的持久化刷新已经完成时出现。

根据一些实施方式,即使当诸如通过添加、移除或改变介质控制器,或添加、移除或改变处理器或其他请求者使整个系统的配置改变时,跟踪器112和跟踪结构114也能够继续被使用。介质控制器的标识符不是必须被预先配置为用于跟踪结构114和跟踪器112。即使新的介质控制器和对应的新的介质控制器标识符被添加到系统,一旦向新的介质控制器标识符发出标准写入请求,跟踪器112就能够跟踪新的介质控制器标识符。

跟踪结构114的尺寸能够保持在适当的尺寸,使得相比所有可能的介质控制器标识符必须被跟踪的实施方式,实施存储跟踪结构114的存储器的以及管理跟踪结构114的成本保持为更低。跟踪器112仅必须跟踪特定类型的写入请求(即,对于持久化存储区域的标准写入请求),并且因此不必浪费跟踪用于非持久化存储区域的持久化写入请求或标准写入请求的资源。而且,通过在存储器控制器104中实施跟踪器112,不必须通过在处理器102上执行的程序以软件的方式实施跟踪。

图6是根据一些示例的处理的流程图。图6的处理(在602)接收写入请求,该写入请求一旦由目的介质控制器接收就被确认而不等待与该写入请求相关联的写入数据完成持久化。

图6的处理(在604)确定目的介质控制器的标识符是否已经在跟踪结构中。

响应于确定目的介质控制器的标识符还没有在跟踪结构中,图6的处理(在606)向跟踪结构添加目的介质控制器的标识符。

响应于确定目的介质控制器的标识符已经在跟踪结构中,图6的处理(在608)拒绝向跟踪结构添加目的介质控制器的标识符。

图7是根据另外的示例的系统700的框图。系统700包括介质控制器702来管理持久化存储设备704的存取。

请求者706使得发出目标是介质控制器702的写入请求。跟踪器708执行后面的任务。对于第一写入请求,该第一写入请求一旦由目的介质控制器接收就被确认而不等待与该写入请求相关联的写入数据完成持久化,跟踪器708向跟踪结构710添加目的介质控制器的标识符。

响应于条件被满足,跟踪器708向由跟踪结构识别的介质控制器发送存留写入操作的请求,其中存留写入操作的请求使未决的写入请求被存留并且持久化被确认。条件被满足能够包括:(1)跟踪器708从请求者接收由请求者发出的提交先前的写入操作的请求,或(2)跟踪器确定跟踪结构处于满的阈值内。

在以上描述中,阐述了许多详情以提供在本文公开的主题的理解。然而,可以在没有这些细节中的一些的情况下实践实施方式。其他实施方式可以包括从以上讨论的细节进行的修改和变化。所附权利要求旨在覆盖此类修改和变化。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1