具有选择性储存的多级非易失性缓存的制作方法

文档序号:15072254发布日期:2018-08-01 00:06阅读:150来源:国知局

本申请要求对提交于2015年12月24日且题为“amltui-levelnon-volatilecachewithselectivestore(具有选择性储存的多级非易失性缓存)”的美国专利申请号14/998,070的优先权,藉此,其全部公开内容通过引用并入并用于所有目的。

本公开涉及电子存储器领域,并且具体涉及具有选择性储存的多级非易失性缓存,其可以增加多级非易失性缓存中的有效缓存存储容量。



背景技术:

本文提供的背景描述是为了总体上呈现本公开的上下文的目的。除非在本文中另外指示,否则本部分中描述的材料不是对于本申请中的权利要求的现有技术,并且并不因为包括在本部分中而被承认是现有技术。

快速存取存储器(例如,缓存)常常用于存储存储卷(storagevolume)的所选数据,以允许比起从具有较慢存取时间的存储器(存储设备)(例如,硬盘驱动(hdd))中存取数据更快地存取所选数据。一些系统包括具有多层缓存介质的多级缓存。快速存取存储器中存储的数据是在慢速存取存储器/存储设备中复制的。

附图说明

通过以下结合附图的详细描述将容易地理解实施例。为了促进该描述,相似的参考标号标示相似的结构元素。在附图的各图中,通过示例的方式而非通过限制的方式来例示实施例。

图1是根据各种实施例的包括本公开的多级缓存的计算系统的框图。

图2是根据各种实施例的例示要由多级缓存执行的读取过程的流程图。

图3是根据各种实施例的例示要由多级缓存执行的写入过程的流程图。

图4例示了根据各种实施例的适用于实践本公开的各方面的示例计算设备。

图5例示了根据各种实施例的具有指令的示例存储介质,所述指令被配置成使得装置能够实践本公开的各方面。

具体实施方式

在以下详细描述中,参考形成其一部分的附图,其中相似的标号通篇标示相似的部分,并且其中通过例示的方式示出了可以实践的实施例。要理解的是,可以利用其它实施例并且可以做出结构的改变或逻辑的改变而不脱离本公开的范围。因此,以下详细描述不应被视为具有限制意义,并且实施例的范围由所附权利要求及其等同物限定。

各种操作可以以最有助于理解所要求保护的主题的方式依次被描述为多个分立的动作或操作。然而,描述的次序不应被解释为暗示这些操作必须依赖于次序。具体而言,可以不按照呈现的次序来执行这些操作。可以以与所描述的实施例不同的次序来执行所描述的操作。在附加实施例中,可以执行各种附加操作和/或可以省略所描述的操作。

为了本公开的目的,短语“a和/或b”意指(a)、(b)或(a和b)。为了本公开的目的,短语“a、b和/或c”意指(a)、(b)、(c)、(a和b)、(a和c)、(b和c)或(a、b和c)。

描述可以使用短语“在一实施例中”或“在实施例中”,其可以分别指代相同或不同的实施例中的一个或多个。此外,关于本公开的实施例所使用的术语“包括”、“包含”、“具有”等是同义的。

如本文所用,术语“逻辑”和“电路”可以指代以下各项、作为以下各项的一部分或者包括以下各项:提供所描述的功能性的专用集成电路(asic)、电子电路、执行一个或多个软件或固件程序的(共享、专用或群组)处理器和/或(共享、专用或群组)存储器、组合逻辑电路和/或其它合适组件。术语“模块”可以指代被配置成执行或使得执行与本公开一致的一个或多个操作的软件、固件和/或电路。软件可以被实施为记录在非暂时性计算机可读存储介质上的软件包、代码、指令、指令集和/或数据。固件可以被实施为被(例如,非易失性地)硬编码在存储器设备中的代码、指令或指令集和/或数据。如在本文中的任何实施例中所使用的,“电路”可以例如单独地或以任何组合的形式包括:硬连线电路,诸如包括一个或多个单独的指令处理核心的计算机处理器之类的可编程电路、状态机电路、存储由可编程电路执行的指令的软件和/或固件。这些模块可以共同地或单独地被实施为形成计算设备的一部分的电路。如本文所用,术语“处理器”可以是处理器核心。

在实施例中,描述了与多级缓存相关联的装置、方法和存储介质。第一存储级别可以从所述多级缓存的第二存储级别接收输入/输出(i/o)请求(例如,读取请求或写入请求),其中所述i/o请求与数据相关联。第一存储级别还可以接收要指示所述数据是否被存储或将被存储在第二存储级别中的指示符。第一存储级别可以基于所述指示符来确定是否要将所述数据存储在第一存储级别中。

现在参考图1,例示了根据各种实施例的具有结合了本公开的选择性储存技术的多级缓存102的计算系统100。计算系统100还可以包括耦合到多级缓存102的处理器104和存储106。多级缓存102可以包括彼此耦合的存储级别108和第二存储级别110。存储级别108可以包括控制器112和存储器114,并且存储级别110可以包括控制器116和存储器118。多级缓存102也可以被称为多层缓存。为了本申请的目的,这两个术语可以被认为是同义的。此外,存储级别108可以被称为上存储级别(upperstoragelevel)或较高存储级别(higherstoragelevel),并且存储级别110可以被称为较低存储级别。在实施例中,控制器112和控制器116与互补逻辑结合以实践选择性储存,以便潜在地增加多级缓存102的有效容量,下面将更全面地进行描述。

在各种实施例中,存储器114、存储器118和存储106可以是非易失性存储器。在一些实施例中,存储级别108的存储器114可以具有与存储级别110的存储器118不同的存储器技术。例如,在一些实施例中,存储器114可以是比存储器118更快但更昂贵的存储器技术。附加地,存储108可以包括与存储器114和/或存储器118不同的存储器技术。在一个非限制性实施例中,存储器114可以是字节可寻址的三维(3d)交叉点存储器,并且存储器118可以是包括nand闪存或3d交叉点存储器的固态驱动(ssd)。在一些实施例中,存储106可以包括硬盘驱动(hdd)。在一些实施例中,存储器114、存储器118和/或存储108可以包括多级单元(mlc)nand闪存、铁电随机存取存储器(fetram)、基于纳米线的非易失性存储器、诸如相变存储器(pcm)之类的三维(3d)交叉点存储器、结合忆阻器技术的存储器、磁阻随机存取存储器(mram)、自旋转移力矩(stt)-mram、单级单元(slc)闪存和/或其它电可擦可编程只读存储器(eeprom)类型的设备。

在各种实施例中,包括存储级别108和存储级别110的多级缓存102可以被包括在与处理器104相同的计算设备中并且由相同的操作系统控制。在一些实施例中,多级缓存102的存储级别108和/或110中的一个或多个可以被包括在与处理器104相同的集成电路(ic)和/或ic封装上。附加地或另选地,存储级别108和/或110中的一个或多个可以被布置在与处理器104分离的ic或ic封装上。在各种实施例中,存储106可以包括在与处理器和多级缓存102相同的计算设备中的存储。附加地或另选地,存储106可以包括可经由网络接口访问的网络附加存储(例如,云存储)。

在各种实施例中,多级缓存102可以用作存储106的缓存以缓存与存储106相关联的存储卷数据。例如,多级缓存102可以存储由存储106所存储的数据中的一些以使得处理器104能够比从存储106存取数据将会可能的速度更快地存取数据。在一些实施例中,由多级缓存102存储的数据可以由存储106复制。

在各种实施例中,在存储级别108是多级缓存102中的较高存储级别并且存储级别110是较低存储级别的情况下,在要为处理器104取回数据的读取操作期间,可以首先从存储级别108请求数据。如果数据无法从存储级别108获得,则可以从存储级别110请求数据。如果数据无法从多级缓存102中的存储级别中的任何获得,则可以从存储106请求数据。在一些实施例中,多级缓存102可以包括处于高于存储级别108、低于存储级别110、和/或在存储级别108和110之间的存储级别处的一个或多个附加存储级别。如果首先请求从较高存储级别读取数据,则可以认为该较高存储级别处于比较低存储级别更高的级别,并且如果数据在较高存储级别中不可得,则然后请求从较低存储级别读取数据。因此,较高存储级别一般可以存储具有比存储在较低存储级别中的数据更高优先级的数据。

对于写入操作,可以根据多级缓存102的缓存策略将数据写入到存储级别108、存储级别110和/或存储106。所述缓存策略可以基于一个或多个参数(诸如数据的优先级级别)使用一个或多个规则来确定是否要将数据存储在存储级别108和/或存储级别110中。在一些实施例中,与数据相关联的一个或多个参数(例如,诸如数据的优先级级别之类的元数据)可以被包括在从处理器104传递到多级缓存102和/或在多级缓存102的存储级别之间(例如,在存储级别108和存储级别110之间)传递的差异化存储服务(dss)信息中。dss信息可以被包括在由多级缓存102从处理器104接收的i/o请求(例如,读取请求或写入请求)中和/或以其它方式与该i/o请求相关联。

在各种实施例中,存储级别108的控制器112可以将指示符传递到存储级别110的控制器116以指示与i/o请求(例如,读取操作或写入操作)相关联的数据是否由存储级别108(或在存储级别108之上的存储级别(如果存在的话))存储或将由存储级别108(或在存储级别108之上的存储级别(如果存在的话))存储。如果指示符指示数据由存储级别108存储或将由存储级别108存储(例如,在存储器114中),则存储级别110可以不将该数据存储在存储器118中和/或如果该数据已经存储在存储器118中,则可以从存储器118中驱逐该数据。因此,存储级别110可以不复制由存储级别108存储的数据,由此允许多级缓存102有效地存储比其中跨存储级别复制数据的多级缓存中更多的数据。

在一些实施例中,指示符可以被包括在从存储级别108传递到存储级别110的dss信息中。另选地或附加地,可以在存储级别108和存储级别110之间的边带信道中传递指示符。所述边带信道可以供存储级别108(例如,3d交叉点存储器)的控制器112用于与存储级别110(例如,ssd)的控制器116通信。在一些实施例中,指示符可以是一比特,该比特具有要指示数据被存储或将被存储在比接收指示符的存储级别(例如,存储级别110)更高的存储级别(例如,存储级别108)中的第一值(例如,逻辑1),或者具有要指示数据未被存储并且将不被存储在比接收指示符的存储级别更高的存储级别中的第二值(例如,逻辑0)。

在各种实施例中,从处理器104发送到存储级别108的i/o请求可以包括具有第二值的指示符。控制器112可以(例如,基于缓存策略)确定是否要存储与该i/o请求相关联的数据。如果i/o请求从存储级别108传递到存储级别110并且控制器112确定该数据被存储或将被存储在存储级别108中,则控制器112将具有第一值的指示符传递到存储级别110。如果i/o请求从存储级别108传递到存储级别110并且控制器112确定该数据未被存储并且将不被存储在存储级别108中,则控制器112将具有第二值的指示符传递到存储级别110。

图2例示了根据各种实施例的可以由多级缓存(例如,多级缓存102)的存储级别(例如,存储级别108和/或110)执行的读取过程200(“过程200”)。在一些实施例中,过程200的一个或多个操作可以由缓存的控制器(例如,控制器112和/或116)执行。尽管过程200是参考包括2个存储级别的多级缓存描述的,但是将显而易见的是,过程200可以被扩展至其中多级缓存包括不只2个存储级别的实施例。

在过程200的202处,存储级别108/110可以接收与数据相关联的读取请求和指示符dssin-cache。可以经由存储器总线从处理器104(例如,在存储级别108的情况下)或者从存储级别108的控制器112(在存储级别110的情况下)接收读取请求。在一些实施例中,指示符dssin-cache可以被包括在读取请求中(例如,在与数据相关联的dss信息中)。读取请求可以附加地或另选地指示与数据相关联的逻辑块寻址(lba)范围。指示符dssin-cache可以向较低存储级别(例如,存储级别110)指示数据是否将被存储在较高存储级别中(诸如存储级别108中,根据过程200,在由存储级别110、较低存储级别或存储设备106读取数据之后)。例如,由较低存储级别110接收的指示符dssin-cache可以具有一比特,该比特具有逻辑1的值以向存储级别110指示数据将由较高存储级别108存储,或者该比特具有逻辑0的值以指示数据将不由较高存储级别108存储。

在各种实施例中,处理器104可以在处理器104经由存储器总线发送到多级缓存102的读取请求中包括所述指示符dssin-cache。当从处理器104发送时,该指示符可以具有逻辑0的初始值。较高存储级别108可以基于数据是否将被存储在较高存储级别108中来确定要传递到较低存储级别110的指示符dssin-cache的值,如本文进一步讨论的。

在过程200的204处,存储级别108/110可以确定数据是否存储在存储级别108/110中。如果数据存储在存储级别108/110中,则存储级别108/110可以在过程200的206处从存储级别108/110读取数据(例如,从存储器114/118中取回数据并且将数据返回至处理器104(可选地经由存储级别108,在存储级别110的情况下)。在一些实施例中,存储级别108/110可以更新与数据相关联的一个或多个参数,诸如年龄和/或最近最少使用(lru)信息。

除了在206处执行读取操作之外,诸如较低存储级别110之类的较低存储级别可以在过程200的208处确定指示符dssin-cache是否具有逻辑1或逻辑0的值。如果指示符dssin-cache具有逻辑1的值(指示上存储级别已经存储或将存储所述数据),则较低存储级别110可以在过程200的210处将数据从较低存储级别110的存储器118中驱逐。如果指示符dssin-cache具有逻辑0的值(指示上存储级别将不存储所述数据),则较低存储级别110可以在过程200的212处将数据保持在存储器118中。

在一些实施例中,上存储级别(例如,存储级别108)可以执行过程200的208、210和/或212处的操作。然而,如上所述,由上存储级别108从处理器104接收到的指示符dssin-cache的值将通常被默认为逻辑0。因此,上存储级别108通常将执行操作212,并且可以执行或者可以不执行208处的确定。

如果在过程200的204处存储级别108/110确定数据没有存储在存储级别108/110中,则在过程200的214处,存储级别108/110可以确定指示符dssin-cache是具有逻辑1的值(指示上存储级别将存储数据)还是具有逻辑0的值(指示上存储级别将不存储数据)。在实施例中,在上存储级别108的情况下,指示符dssin-cache可以如上所述一直具有逻辑0的值。在一些实施例中,存储级别108/110可以在216处将读取请求传递到较低存储级别(例如,从存储级别108到第二存储级别110)和/或存储设备106,其中dssin-cache被设置为逻辑1以指示存储级别108或110将存储数据。在过程200的218处,存储级别108/110可以返回数据并且可以不将数据插入到存储级别108/110的存储器114/118中。

如果指示符dssin-cache具有逻辑0的值(指示上存储级别将不存储数据),则存储级别108/110可以在过程200的220处确定缓存策略是否要求将数据存储在存储级别108/110中。如果缓存策略指示数据应当被存储在存储级别108/110中,则控制器112/116可以在过程200的222处将读取请求传递到较低存储级别(例如,从存储级别108到第二存储级别110)和/或存储设备106,其中dssin-cache被设置为逻辑1以指示存储级别108或110将存储数据。在过程200的224处,存储级别108/110可以返回从较低存储级别接收到的数据,并将数据插入到存储级别108/110的存储器114/118中。

如果缓存策略指示数据不应当被存储在存储级别108/110中,则存储级别108/110可以在过程200的226处将读取请求传递到较低存储级别(例如,从存储级别108到第二存储级别110)和/或存储设备106,其中dssin-cache被设置为逻辑0以指示数据将不被存储在存储级别108或110中。在过程200的228处,存储级别108/110可以返回从较低存储级别接收到的数据,并且可以不将数据插入到存储级别108/110的存储器114/118中。

过程200的各种操作可以以最有助于理解所要求保护的主题的方式被描述为多个分立的操作。然而,描述的次序不应被解释为暗示这些操作必须依赖于次序。将认识到,与过程200相关联的操作的顺序可以变化和/或包括根据本公开的其它动作。例如,一些操作可以是同时执行的。

图3例示了根据各种实施例的可以由多级缓存的存储级别(例如,多级缓存102的存储级别108和/或存储级别110)执行的写入过程300(“过程300”)。在一些实施例中,过程300的一个或多个操作可以由存储级别的控制器(例如,控制器112和/或116)执行。尽管过程300是参考包括2个存储级别的多级缓存描述的,但将显而易见的是可以将过程300扩展到其中多级缓存包括不只2个存储级别的实施例。

在过程300的302处,存储级别108/110可以接收与数据相关联的写入请求和指示符dssin-cache。可以从处理器102(例如,在上存储级别108的情况下)或从上存储级别(例如上存储级别108,在较低存储级别110的情况下)接收写入请求。在一些实施例中,指示符dssin-cache可以被包括在写入请求中(例如,在与数据相关联的dss信息中)。写入请求可以附加地或者另选地包括数据和/或与数据相关联的lba范围的指示符。指示符dssin-cache可以向较低存储级别(例如,存储级别110)指示数据是否被存储在较高存储级别(例如,存储级别108)中。例如,指示符dssin-cache可以是一比特,该比特具有逻辑1的值以指示数据由较高存储级别108存储,或者该比特具有0的值以指示该数据不由较高存储级别108存储。

在各种实施例中,处理器104可以将指示符dssin-cache以逻辑0的值发送到较高存储级别108(例如,在写入请求中),并且较高存储级别108可以如本文中进一步讨论的那样基于数据是否要被存储在较高存储级别108中来确定要传递到较低存储级别110的指示符dssin-cache的值。

在过程300的304处,存储级别108/110可以确定数据(例如,要由写入操作覆写的数据的较旧版本)是否被存储在存储级别108/110中。如果数据被存储在存储级别108/110中,则存储级别108/110可以在过程300的306处确定指示符dssin-cache是具有逻辑1的值还是具有逻辑0的值。如果指示符dssin-cache具有逻辑1的值,则存储级别108/110可以在过程300的308处从存储级别108/110的存储器114/118中驱逐旧数据。在一些实施例中,旧数据可以通过用新数据覆写数据来进行驱逐。如果启用了连续写入(write-through),则存储级别108/110可以在过程300的309处将写入请求传递到较低级别(例如,多级缓存的较低存储级别或存储106)。写入请求可以包括指示符dssin-cache。

如果指示符dssin-cache具有逻辑0的值,则存储级别108/110可以在过程300的310处更新存储器114/118中的数据。在一些实施例中,存储级别108/110可以在过程300的312处将指示符dssin-cache设置为逻辑1以向较低存储级别110指示数据被存储在较高存储级别108中或以向存储106指示数据被存储在上存储级别108或较低存储级别110中的一者中。如果启用了连续写入,则存储级别108/110可以在过程300的313处将写入请求传递到较低级别(例如,多级缓存的较低存储级别或存储106)。写入请求可以包括指示符dssin-cache。

如上所述,由上存储级别108从处理器104接收的指示符dssin-cache的值将通常默认为逻辑0。因此,上存储级别108将执行操作310和312,并且可以执行或者可以不执行306处的确定。

如果在过程300的304处,存储级别108/110确定数据没有存储在存储级别108/110中,则在过程300的314处,存储级别108/110可以确定指示符dssin-cache是具有逻辑1的值还是具有逻辑0的值。如果指示符dssin-cache具有逻辑1的值,则存储级别108/110可以在过程300的316处确定不要将数据存储在存储级别108/110中。如果启用了连续写入,则存储级别108/110可以在过程300的317处将写入请求传递到较低级别(例如,多级缓存的较低存储级别或存储106)。写入请求可以包括指示符dssin-cache。

如果指示符dssin-cache具有逻辑0的值,则存储级别108/110可以在过程300的318处确定缓存策略是否要求将数据存储在存储级别108/110中。如果缓存策略指示数据应当被存储在存储级别108/110中,则控制器112/116可以在过程300的320处将数据插入到存储器114/118中。在一些实施例中,存储级别108/110可以将指示符dssin-cache设置为逻辑1,以向较低存储级别110指示数据被存储在上存储级别108中或者以向存储106指示数据被存储在上存储级别108或较低存储级别110中的一者中。如果启用了连续写入,则存储级别108/110可以在过程300的321处将写入请求传递到较低级别(例如,多级缓存的较低存储级别或存储106)。写入请求可以包括指示符dssin-cache。

在一些实施例中,对于不进行覆写的驱逐,较低存储级别110可以为被传递到存储设备106的写入请求将指示符dssin-cache设置为逻辑0。

如果缓存策略指示数据不应当被存储在存储级别108/110中,则存储级别108/110可以在过程300的322处确定不要将数据存储在存储级别108/110中。在一些实施例中,存储级别108可以将传递到较低存储级别110的指示符dssin-cache的值设置为逻辑0以指示数据没有存储在存储级别108中,和/或存储级别110可以将传递到存储106的指示符dssin-cache的值设置为逻辑0以指示数据没有存储在存储级别110或存储级别108中。如果启用了连续写入,则存储级别108/110可以在过程300的323处将写入请求传递到较低级别(例如,多级缓存的较低存储级别或存储106)。写入请求可以包括指示符dssin-cache。

过程300的各种操作以最有助于理解所要求保护的主题的方式被描述为多个分立的操作。然而,描述的次序不应被解释为暗示这些操作必须依赖于次序。将认识到,与过程300相关联的操作的顺序可以变化和/或包括根据本公开的其它动作。例如,一些操作可以是同时执行的。

现在参考图4,根据各种实施例例示了适于实践如先前参照图1-3描述的本公开内容的示例计算设备400。如图所示,计算设备400可以包括一个或多个处理器或处理器核心402以及系统存储器404。在一些实施例中,所述一个或多个处理器或处理器核心402可以包括图1的处理器104。为了包括权利要求的本申请的目的,术语“处理器”是指物理处理器,并且术语“处理器”和“处理器核心”可以被认为是同义的,除非上下文另有明确要求。所述一个或多个处理器402可以包括中央处理单元(cpu)和/或图形处理单元(gpu)。

另外,计算设备400可以包括一个或多个大容量存储设备406(诸如软盘、硬驱动、ssd、紧凑盘只读存储器(cd-rom)等)、输入/输出设备408(诸如显示器、键盘、光标控制、远程控制、游戏控制器、图像捕获设备等)和通信接口410(诸如网络接口卡、调制解调器、红外接收器、无线电接收器(例如,蓝牙)等)。在一些实施例中,大容量存储设备406可以包括图1的存储106。元件可以经由系统总线412彼此耦合,系统总线412可以代表一个或多个总线。在多个总线的情况下,它们可以通过一个或多个总线桥(未示出)进行桥接。

在各种实施例中,计算设备400还可以包括多级缓存414,其包括存储级别416和存储级别418。多级缓存414可以对应于图1的多级缓存102和/或关于图2和/或图3描述的多级缓存。存储级别416可以对应于图1的存储级别108,和/或存储级别418可以对应于图1的存储级别110。多级缓存414可以耦合在一个或多个处理器402和大容量存储406之间以缓存与大容量存储406相关联的数据卷。在一些实施例中,多级缓存414的存储级别416和/或存储级别418可以被包括在包括存储器404、处理器402和/或大容量存储406的集成电路(ic)和/或ic封装内。

通信接口410可以包括一个或多个通信芯片,所述一个或多个通信芯片可以使得能够进行有线和/或无线通信以用于将数据传输到计算设备400或者传输来自计算设备400的数据。术语“无线”及其派生词可以用于描述可以通过使用调制电磁辐射通过非固体介质传送数据的电路、设备、系统、方法、技术、通信信道等。该术语并不暗示相关设备不包含任何线缆,尽管在一些实施例中它们可能不包含线缆。通信接口410可以实现多种无线标准或协议中的任何,所述多种无线标准或协议包括但不限于:ieee702.20、长期演进(lte)、高级lte(lte-a)、通用分组无线电服务(gprs)、演进数据优化(ev-do)、演进高速分组接入(hspa+)、演进高速下行链路分组接入(hsdpa+)、演进高速上行链路分组接入(hsupa+)、全球移动通信系统(gsm)、用于gsm演进的增强数据速率(edge)、码分多址(cdma)、时分多址(tdma)、数字增强无绳电信(dect)、全球微波接入互操作性(wimax)、蓝牙、其派生物、以及被指定为3g、4g、5g及以后的任何其它无线协议。通信接口410可以包括多个通信芯片。例如,第一通信芯片可以专用于较短距离无线通信,诸如wi-fi和蓝牙,并且第二通信芯片可以专用于较长距离无线通信,诸如gps、edge、gprs、cdma、wimax、lte、ev-do等。在各种实施例中,通信接口410可以被配置成使用一种或多种无线通信方法和拓扑进行通信,所述一种或多种无线通信方法和拓扑诸如是ieee802.11x(wifi)、蓝牙、ieee802.15.4、无线网状联网、无线个域网/局域网/城域网技术、或者使用无线电接入网络的无线蜂窝通信,所述无线电接入网络可以包括全球移动通信系统(gsm)、通用分组无线电服务(gprs)、通用移动电信系统(umts)、高速分组接入(hspa)、演进型hspa(e-hspa)、长期演进(lte)网络、用于gsm演进的gsm增强型数据速率(edge)无线电接入网络(geran)、通用陆地无线电接入网络(utran)、演进型utran(e-utran)、ieee802.22、ieee802.11af、ieee802.11ac、loratm、或sigfox。

在各种实施例中,可以采用系统存储器404和大容量存储设备406来存储实现操作系统和一个或多个应用的编程指令的工作副本和永久副本,其被统称为计算逻辑422。类似地,多级缓存414可以包括实现与多级缓存相关联的操作的编程指令,例如读取过程200和/或写入过程300,其被统称为计算逻辑424。在各种实施例中,系统存储器404和大容量存储设备406也可以用来存储数据或本地资源。各种编程指令可以由(一个或多个)处理器402所支持的汇编指令或者可以被编译成这种指令的高级语言(诸如例如c)来实现。

编程指令的永久副本可以通过例如分发介质(未示出)(诸如紧凑盘(cd))或通过通信接口410(从分发服务器(未示出))在工厂或现场放置到大容量存储设备406和/或多级缓存414中。也就是说,可以采用具有代理程序的实现的一个或多个分发介质来分发代理并对各种计算设备进行编程。

取决于计算设备400是诸如服务器、高性能计算节点、机顶盒或台式计算机之类的静止式计算设备,诸如平板计算设备、膝上型计算机或智能电话之类的移动计算设备,还是嵌入式计算设备,元件402、404、406、408、410、412、414、416、418、422和/或424的数量、能力和/或容量可以变化。它们的组成是另外已知的,因此将不再进一步描述。在各种实施例中,可以使用图4中所示的元件的子集或不同的元件。例如,一些设备可以不包括图形处理器405,可以使用用作存储器和存储二者的统一存储器,或者可以在诸如处理器402、存储器404或大容量存储406之类的其它组件内包括一个或多个多级缓存414。

图5例示了根据各种实施例的具有指令的至少一个非暂时性计算机可读存储介质502的示例,所述指令被配置成实践与本文描述的多级缓存102、读取过程300、写入处理400和/或多级缓存414相关联的操作中的所有操作或所选操作。如图所示,至少一个计算机可读存储介质502可以包括多个编程指令504。存储介质502可以代表本领域已知的广泛范围的永久性存储介质,包括但不限于闪存、动态随机存取存储器、静态随机存取存储器、光盘、磁盘等。编程指令504可以被配置成使得设备(例如,计算设备400(特别地,多级缓存414)、计算系统100或多级缓存102)能够响应于编程指令504的执行而实行例如但不限于针对计算系统100或多级缓存102所描述的各种操作或者过程200或过程300中所示的操作。在替换实施例中,编程指令504可以被设置在多个计算机可读存储介质502上。在替换实施例中,存储介质502可以是暂时性的,例如编码有编程指令504的信号。

返回参考图4,对于一实施例,处理器402中的至少一个可以与具有计算逻辑424的存储器封装在一起,计算逻辑424被配置成实践针对计算系统100、多级缓存102描述的方面或者过程200或过程300中所示的操作。对于一实施例,处理器402中的至少一个可以与具有计算逻辑424的存储器封装在一起以形成系统级封装(sip),计算逻辑424被配置成实践针对计算系统100或多级缓存102所描述的方面或者过程200或过程300中所示的操作。对于一实施例,处理器402中的至少一个可以与具有计算逻辑424的存储器集成在同一管芯上,计算逻辑424被配置成实践针对计算系统100或多级缓存102描述的方面和/或在过程200或过程300中示出的操作。对于一实施例,处理器402中的至少一个可以与具有计算逻辑924的存储器封装在一起以形成片上系统(soc),计算逻辑924被配置成实践计算系统100或多级缓存102的方面和/或在过程200或过程300中示出的操作。对于至少一个实施例,soc可以用于例如但不限于诸如可穿戴设备和/或智能电话之类的移动计算设备中。

用于执行上述技术的机器可读介质(包括非暂时性机器可读介质,诸如机器可读存储介质)、方法、系统和设备是本文公开的实施例的例示性示例。另外,上述交互中的其它设备可以被配置成执行各种公开的技术。

下面提供各种实施例的一些非限制性示例。

示例1是一种用于多级缓存的装置,所述装置包括:要形成针对存储设备的多级缓存的第一存储级别,其中所述多级缓存包括第一存储级别和第二存储级别,其中第二存储级别处于比第一存储级别更高的级别。示例1的第一存储级别包括:存储器;以及耦合到所述存储器的控制器。所述控制器要:接收与数据相关联的输入/输出(i/o)请求;接收来自第二存储级别的、要指示所述数据是否被存储或将被存储在第二存储级别中的指示符;以及基于所述指示符来确定是否要将所述数据存储在所述存储器中。

示例2是示例1的装置,其中所述控制器要在与所述数据相关联的所述i/o请求中接收所述指示符。

示例3是示例1的装置,其中所述指示符是作为差异化存储服务(dss)信息的一部分而接收的,所述差异化存储服务信息还指示所述数据的优先级。

示例4是示例1的装置,还包括耦合到第一存储级别的第二存储级别。

示例5是示例1的装置,其中所述i/o请求是写入请求,并且所述指示符指示所述数据是否被存储在第二存储级别中。

示例6是示例1的装置,其中所述i/o请求是读取请求,并且所述指示符指示所述数据是否将被存储在第二存储级别中。

示例7是示例1的装置,其中所述数据被存储在所述存储器中,并且其中,如果所述指示符指示所述数据被存储或将被存储在第二存储级别中,则所述控制器还要从所述存储器中驱逐所述数据。

示例8是示例1至7中的任一项的装置,其中第一存储级别的存储器具有与第二存储级别的存储器不同的存储器技术。

示例9是示例8的装置,其中第一存储级别的存储器是nand固态存储器,并且第二存储级别的存储器是交叉点存储器。

示例10是示例1至7中的任一项的装置,其中所述多级缓存还包括一个或多个附加存储级别,其包括被设置在比第一级别更低的第三级别处的第三存储级别,其中第二存储级别要将所述指示符传递至第三存储级别并且基于所述数据是否被存储或将被存储在第一存储级别或第二存储级别中来设置所述指示符的值。

示例11是具有存储在其上的指令的一种或多种非暂时性计算机可读介质,所述指令在被执行时使得第一存储级别:从第二存储级别接收与数据相关联的输入/输出(i/o)请求;接收来自第二存储级别的、要指示所述数据是否被存储或将被存储在第二存储级别中的指示符比特;以及基于所述指示符比特的值来确定是否要将所述数据存储在第一存储级别中。

示例12是示例11的所述一种或多种介质,其中所述指示符比特被包括在所述i/o请求中。

示例13是示例11的所述一种或多种介质,其中所述指示符比特是作为差异化存储服务(dss)信息的一部分而接收的,所述差异化存储服务信息还指示所述数据的优先级。

示例14是示例11的所述一种或多种介质,其中所述i/o请求是写入请求。

示例15是示例11的所述一种或多种介质,其中所述i/o请求是读取请求。

示例16是示例11的所述一种或多种介质,其中所述指令在被执行时还使得第一存储级别:确定所述数据是否被存储在第一存储级别中;以及基于所述数据被存储在第一存储级别中的确定并且如果所述指示符比特指示所述数据被存储或将被存储在第二存储级别中,则从第一存储级别中驱逐所述数据。

示例17是示例11至16中的任一项的所述一种或多种介质,其中第一存储级别的存储器具有与第二存储级别的存储器不同的存储器技术。

示例18是一种具有多级缓存能力的系统,所述系统包括:处理器;耦合到所述处理器的存储设备;以及耦合到所述处理器和所述存储设备的多级缓存。示例18的多级缓存包括:上存储级别;以及耦合到所述上存储级别的较低存储级别,其中所述较低存储级别要:接收与数据相关联的输入/输出(i/o)请求,其中所述i/o请求包括来自所述上存储级别的、要指示所述数据是否被存储或将被存储在所述上存储级别中的指示符;以及基于所述指示符来确定是否要将所述数据存储在所述较低存储级别中。

示例19是示例18的系统,其中所述指示符是作为差异化存储服务(dss)信息的一部分而接收的,所述差异化存储服务信息还指示所述数据的优先级。

示例20是示例18的系统,其中所述i/o请求是写入请求,并且其中所述指示符要指示所述数据是否被存储在所述上存储级别中。

示例21是示例18的系统,其中所述i/o请求是读取请求,并且其中所述指示符要指示所述数据是否将被存储在所述上存储级别中。

示例22是示例18的系统,其中所述上存储级别、较低存储级别和存储设备使用不同的存储器技术。

示例23是示例18的系统,其中所述存储设备包括网络附加存储。

示例24是示例18至23中的任一项的系统,其中所述系统是服务器。

示例25是示例18至23中的任一项的系统,其中所述系统是个人计算机、膝上型计算机、平板计算机或移动计算设备。

示例26是一种缓存方法,包括:由多级缓存的第一存储级别从所述多级缓存的第二存储级别接收与数据相关联的输入/输出(i/o)请求;由第一存储级别接收来自第二存储级别的、要指示所述数据是否被存储或将被存储在第二存储级别中的指示符比特;以及由第一存储级别基于所述指示符比特的值来确定是否要将所述数据存储在第一存储级别中。

示例27是示例26的方法,其中所述指示符比特被包括在所述i/o请求中。

示例28是示例26的方法,其中所述指示符比特是作为差异化存储服务(dss)信息的一部分而接收的,所述差异化存储服务信息还指示所述数据的优先级。

示例29是示例26的方法,其中所述i/o请求是写入请求。

示例30是示例26的方法,其中所述i/o请求是读取请求。

示例31是示例26的方法,还包括:确定所述数据是否被存储在第一存储级别中;以及基于所述数据被存储在第一存储级别中的确定并且如果所述指示符比特指示所述数据被存储或将被存储在第二存储级别中,则从第一存储级别中驱逐所述数据。

示例32是示例26至31中的任一项的方法,其中第一存储级别的存储器具有与第二存储级别的存储器不同的存储器技术。

示例33是一种缓存装置,包括:多级缓存的第一存储级别,该第一存储级别包括:要从所述多级缓存的第二存储级别接收与数据相关联的输入/输出(i/o)请求的部件;要接收来自第二存储级别的、要指示所述数据是否被存储或将被存储在第二存储级别中的指示符比特的部件;以及要基于所述指示符比特的值来确定是否要将所述数据存储在第一存储级别中的部件。

示例34是示例33的装置,其中所述指示符比特被包括在所述i/o请求中。

示例35是示例33的装置,其中所述指示符比特是作为差异化存储服务(dss)信息的一部分而接收的,所述差异化存储服务信息还指示所述数据的优先级。

示例36是示例33的装置,其中所述i/o请求是写入请求。

示例37是示例33的装置,其中所述i/o请求是读取请求。

示例38是示例33的装置,其中第一存储级别还包括:要确定所述数据是否被存储在第一存储级别中的部件;以及要基于所述数据被存储在第一存储级别中的确定并且如果所述指示符比特指示所述数据被存储或将被存储在第二存储级别中则从第一存储级别中驱逐所述数据的部件。

示例39是示例33至38中的任一项的装置,其中第一存储级别的存储器具有与第二存储级别的存储器不同的存储器技术。

尽管已经为了描述的目的在本文中例示和描述了某些实施例,但是为了实现相同的目的而计算出的各种各样的另选和/或等同的实施例或实现方式可以替代所示出和描述的实施例而不脱离本公开的范围。本申请旨在覆盖本文讨论的实施例的任何改编或变化。因此,显然的意图是,本文描述的实施例仅由权利要求限定。

在本公开引述“一个”或“第一”元件或其等同物的情况下,这样的公开包括一个或多个这样的元件,既不要求也不排除两个或更多个这样的元件。

此外,所标识的元件的序数指示符(例如,第一、第二或第三)用于区分这些元件,而不指示或暗示所需数量或有限数量的此类元件,并且它们也不指示这些元件的特定位置或次序,除非另有特别说明。

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