一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据缓存的方法和装置与流程

2022-11-13 12:32:19 来源:中国专利 TAG:


1.本技术涉及数据存储,更具体地,涉及一种数据缓存的方法和装置。


背景技术:

2.目前主要的利用块设备的缓存系统包括open-cas(open cacheacceleration software)、dm-cache(device mapper-cache)和bcache(blockcache)。这类利用块设备的缓存系统将快速块设备作为缓存设备,慢速块设 备作为后端设备以利用缓存设备的快速读写特性提升存储系统的整体性能。
3.相关技术中,缓存系统可使用通写策略、回写策略或绕写策略。
4.通写策略中写操作的数据同时写入缓存设备和后端设备,该策略适用于 少量数据写入之后会被频繁读取的场景。
5.回写策略中写操作的数据只被写入缓存设备,然后写操作的数据被从缓 存设备异步刷入到后端设备,该策略适用于读写密集场景。
6.绕写策略中写操作的数据直接写入后端设备,当该数据被读取时将该数 据写入缓存设备中,该策略适用于数据被写入一次且很少被读取的场景。
7.同时,读策略包括首先从缓存设备访问读操作的数据,若缓存设备中未 命中读操作的数据,进而会从后端设备访问读操作的数据。
8.在相关缓存系统中,通常会根据上层业务的类型部署相应的读写策略, 策略一旦部署,系统运行时所述策略不能更改,因此系统不能动态应对业务 数据的改变以及复杂的工作负载(workload)。例如,后端设备的数据的缓存 价值可能会随着工作负载的改变而变化,固定的缓存策略导致数据无法合理 地被写入缓存设备,因此,采用初始部署的缓存策略来缓存数据将无法有效 利用存储系统的资源。


技术实现要素:

9.一个或更多个实施例提供一种数据缓存的方法和装置,其可以根据与访 问请求相应的数据的实际缓存价值动态调整缓存策略以有效利用存储系统资 源,从而提高存储系统的访问性能。
10.根据示例实施例的一方面,一种方法包括:获取访问请求对应的数据的 缓存价值;基于所述缓存价值是否满足预设条件,确定是从缓存设备访问所 述访问请求对应的数据还是从存储设备访问所述访问请求对应的数据。根据 本公开的示例性实施例,由于根据与访问请求相应的数据的缓存价值是否满 足预设条件来确定是从缓存设备访问数据还是从存储设备访问数据,因此, 可以将实际具有高缓存价值的数据存入缓存设备,从而降低读写数据的时间 延迟。可选地,所述获取所述访问请求对应的数据的缓存价值的步骤包括: 从所述存储设备的多个逻辑分区中确定所述数据的逻辑地址对应的逻辑分区; 获取所述逻辑分区的数据缓存价值作为所述缓存价值,其中,所述多个逻辑 分区中的每个逻辑分区具有对应的数据缓存价值。
11.根据本公开的示例性实施例,由于数据的缓存价值与数据的逻辑地址所 属的逻辑分区(对应的数据)的数据缓存价值具有强相关性,因此,数据的 逻辑地址所属的逻辑分区的数据缓存价值能够较好地反映与访问请求相应的 数据的缓存价值,这样可根据与访问请求相应的数据的实际数据缓存价值来 缓存数据。
12.可选地,所述获取所述访问请求对应的数据的缓存价值的步骤包括:基 于所述逻辑分区的历史被访问信息获取所述缓存价值。
13.可选地,所述获取访问请求对应的数据的缓存价值的步骤包括:将所述 数据的逻辑地址所属的逻辑分区的历史被访问信息和其它逻辑分区的历史被 访问信息提供给训练后的预测器,并从所述训练后的预测器获取所述数据缓 存价值,其中,所述其它逻辑分区包括与所述数据的逻辑地址所属的逻辑分 区相邻的预设数量的逻辑分区。
14.根据本公开的示例性实施例,由于逻辑分区的被访问信息具有时间相关 性和空间相关性,因此,基于数据的逻辑地址所属的逻辑分区以及与该分区 相邻的逻辑分区的历史被访问信息通过训练好的预测器来确定数据的缓存价 值,可以尽可能地反映数据的实际缓存价值,从而可将实际具有高缓存价值 的数据存入缓存设备以降低读写数据的时间延迟。
15.可选地,所述访问请求为写请求,以及,其中,所述确定步骤包括:基 于所述缓存价值满足所述预设条件,确定将所述写请求对应的数据写入所述 缓存设备;以及基于所述缓存价值不满足所述预设条件,确定将所述写请求 对应的数据写入所述存储设备。
16.根据本公开的示例性实施例,将缓存价值满足预设条件的数据写入缓存 设备,从而使得缓存设备尽可能存储具有高缓存价值的数据以减少缓存污染 (即不将具有低缓存价值的数据存入缓存设备)。
17.可选地,所述访问请求为读请求,以及其中,所述确定步骤包括:基于 所述缓存价值满足所述预设条件,确定从所述缓存设备读取所述读请求对应 的数据;以及基于所述缓存价值不满足所述预设条件,确定从所述存储设备 读取所述读请求对应的数据。
18.根据本公开的示例性实施例,由于根据数据的缓存价值选择性的将数据 存入缓存设备或者存储设备,因此根据数据的缓存价值的高低来确定是从缓 存设备还是存储设备读取数据,可以提高读取数据的命中率,从而降低读取 数据的时间延迟。
19.可选地,所述访问请求是读请求,其中,所述缓存价值满足所述预设条 件,以及其中,所述方法还包括:基于所述读请求对应的数据从所述缓存设 备中未被命中,确定从所述存储设备读取所述读请求对应的数据。
20.可选地,所述方法还包括:将从所述缓存设备未被命中的所述读请求对 应的数据写入所述缓存设备中。
21.根据本公开的示例性实施例,通过将缓存价值满足预设条件但在缓存设 备中未被读取到的数据存入缓存设备,可以降低下次读取该数据时的时间延 迟(例如,下次直接在缓存设备中可直接读取到该数据)。
22.根据示例实施例的一方面,一种装置包括:一个或更多个存储器,存储 指令;以及一个或更多个处理器,被配置为执行所述指令以实现:获取单元, 被配置为:获取访问请求对应的数据的缓存价值;以及确定单元,被配置为: 基于所述缓存价值是否满足预设条件,确定是从缓存设备访问所述访问请求 对应的数据还是从存储设备访问所述访问请求对应
的数据。
23.根据本公开的示例性实施例,由于根据与访问请求相应的数据的缓存价 值是否满足预设条件来确定是从缓存设备访问数据还是从存储设备访问数据, 因此,本公开的数据缓存的装置可以将实际具有高缓存价值的数据存入缓存 设备,从而降低读写数据的时间延迟。
24.可选地,所述获取单元还被配置为:从所述存储设备的多个逻辑分区中 确定所述数据的逻辑地址对应的逻辑分区;以及获取所述逻辑分区的数据缓 存价值作为所述的数据的所述缓存价值,其中,所述多个逻辑分区中的每个 逻辑分区具有对应的数据缓存价值。
25.根据本公开的示例性实施例,由于数据的缓存价值与数据的逻辑地址所 属的逻辑分区(对应的数据)的数据缓存价值具有强相关性,因此,数据的 逻辑地址所属的逻辑分区的数据缓存价值能够较好地反映与访问请求相应的 数据的缓存价值,这样本公开的数据缓存的装置可根据与访问请求相应的数 据的实际数据缓存价值来缓存数据。
26.可选地,所述获取单元被配置为基于所述逻辑分区的历史被访问信息获 取所述缓存价值。
27.可选地,所述获取单元还被配置为:将所述数据的逻辑地址所属的逻辑 分区的历史被访问信息和其它逻辑分区的历史被访问信息提供给训练后的预 测器,并从所述训练后的预测器获取所述数据缓存价值,其中,所述其它逻 辑分区包括与所述数据的逻辑地址所属的逻辑分区相邻的预设数量的逻辑分 区。
28.根据本公开的示例性实施例,由于逻辑分区的被访问信息具有时间相关 性和空间相关性,因此,基于数据的逻辑地址所属的逻辑分区以及与该分区 相邻的逻辑分区的历史被访问信息通过训练好的预测器来确定数据的缓存价 值,可以尽可能地反映数据的实际缓存价值,从而可将实际具有高缓存价值 的数据存入缓存设备以降低读写数据的时间延迟。
29.可选地,所述确定单元被配置为:基于所述访问请求为写请求,基于所 述数据的缓存价值满足所述预设条件,确定将所述写请求对应的数据写入所 述缓存设备;以及基于所述数据的缓存价值不满足所述预设条件,确定将所 述写请求对应的数据写入所述存储设备。
30.根据本公开的示例性实施例,将缓存价值满足预设条件的数据写入缓存 设备,从而使得缓存设备尽可能存储具有高缓存价值的数据,减少缓存污染 (即不将具有低缓存价值的数据存入缓存设备)。
31.可选地,所述确定单元被配置为:基于所述访问请求为读请求,基于所 述数据的缓存价值满足所述预设条件,确定从所述缓存设备读取所述读请求 对应的数据;以及基于所述数据的缓存价值不满足所述预设条件,确定从所 述存储设备读取所述读请求对应的数据。
32.根据本公开的示例性实施例,由于根据数据的缓存价值选择性的将数据 存入缓存设备或者存储设备,因此根据数据的缓存价值的高低来确定是从缓 存设备还是存储设备读取数据,可以提高读取数据的命中率,从而降低读取 数据的时间延迟。
33.可选地,所述确定单元还被配置为:基于所述数据的缓存价值满足所述 预设条
件,且所述读请求对应的数据从所述缓存设备中未被命中,确定从所 述存储设备读取所述读请求对应的数据。
34.可选地,所述一个或更多个存储器还被配置为执行所述指令以实现:写 入单元,被配置为将从所述缓存设备未被命中的所述读请求对应的数据写入 所述缓存设备中。
35.根据本公开的示例性实施例,本公开的数据缓存的装置通过将缓存价值 满足预设规则但在缓存设备中未被读取到的数据存入缓存设备,可以降低下 次读取该数据时的时间延迟(例如,下次直接在缓存设备中可直接读取到该 数据)。
36.可选地,所述一个或更多个存储器和所述一个或更多个处理器被设置在 主机装置中,以及其中,所述装置还包括包含所述缓存设备和所述存储设备 的外部存储装置。
37.可选地,所述一个或更多个存储器和所述一个或更多个处理器被设置在 通用闪存存储器ufs主机中,以及其中,所述装置还包括:ufs装置;以及 ufs接口,被配置为将ufs主机和ufs装置可通信地耦接。
38.可选地,所述一个或更多个存储器和所述一个或更多个处理器被设置在 数据中心系统中的存储服务器中,以及其中,所述数据中心系统还包括:多 个应用服务器;以及多个存储服务器,其中,所述存储服务器是所述多个存 储服务器中的一个。
39.根据示例实施例,提供了一种存储有计算机程序的计算机可读存储介质, 其中,当所述计算机程序被处理器执行时控制所述处理器执行包括以下步骤 的方法:获取访问请求对应的数据的缓存价值;基于所述缓存价值是否满足 预设条件,确定是从缓存设备访问所述访问请求对应的数据还是从存储设备 访问所述访问请求对应的数据。
附图说明
40.通过下面结合附图对示例实施例进行的描述,上述和其它目方面将会更 加清楚,其中:
41.图1是示出了根据实施例的数据缓存的方法的流程图;
42.图2是示出根据实施例的数据存储方案的整体架构的示图;
43.图3示出了根据实施例的基于已训练的io预测器预测逻辑分区的访问次 数的示意图;
44.图4是示出根据实施例的数据缓存的装置400的结构的框图;
45.图5是根据实施例的应用了存储装置的系统1000的示意图;
46.图6是根据实施例的主机存储系统10的框图;
47.图7是根据实施例的ufs系统2000的框图;
48.图8是根据实施例的应用了存储装置的数据中心3000的示图。
具体实施方式
49.在下文中,参照附图对实施例进行描述,其中,相同的标号用于表示相 同或相似的元件、特征和结构。本文描述的实施例为示例实施例,并且因此, 本公开不限于此,并且可以以各种其他形式来实现。下面的描述中提供的每 个实施例不排除与本文同样提供或未提供但与本公开一致的另一示例或另一 实施例的一个或更多个特征相关联。不旨在由本文所述的特定实施例将本公 开限制于具体实施例,并且旨在于:本公开覆盖本公开的所
有修改、等同物 和/或替代物,只要它们在所附权利要求及其等同物的范围内。在以下说明书 和权利要求书中使用的术语和词语不限于它们的词典含义,而是被用于使得 能够清楚和一致地理解本公开。因此,对于本领域技术人员应显而易见的是: 提供本公开的各种实施例的以下描述仅用于说明的目的,而不是为了限制由 所附权利要求和它们的等同物限定的本公开的目的。
50.应理解,除非上下文另外明确指出,否则单数形式包括复数形式。本文 使用的术语“包括”、“包含”和“具有”指示公开的功能、操作或元件的存 在,但不排除其它功能、操作或元件。
51.术语“和/或”包括一个或更多个相关联的列出的项的任何和所有组合。 诸如
“……
中的至少一个”的表述在一列元素之后时,修饰整列的元素,而 不是修饰列中的单个元素。例如,表述“a、b和c中的至少一个”应被理解 为:仅包括a、仅包括b、仅包括c、包括a和b两者、包括a和c两者、包 括b和c两者,或者包括所有a、b和c。
52.在本公开的各种实施例中,意图是:当组件(例如,第一组件)被称为 与另一组件(例如,第二组件)“耦接”或“连接”或者被“耦接”或者“连 接”到另一组件(例如,第二组件)时,所述组件可被直接连接到所述另一 组件,或者可通过另一组件(例如,第三组件)被连接。相比之下,当组件 (例如,第一组件)被称为与另一组件(例如,第二组件)“直接耦接”或“直 接连接”或者被直接耦接到或直接连接到另一组件(例如,第二组件)时, 在所述组件和所述另一组件之间不存在另一组件(例如,第三组件)。
53.在描述本公开的各种实施例中使用的表述“被配置为”可以例如根据情 况与诸如“适用于”、“具有

的能力”、“被设计为”、“适合于”、“被制造为
”ꢀ
和“能够”的表述互换使用。术语“被配置为”可不一定指示按照硬件“被 专门设计为”。相反,在一些情况下的表述“被配置为...的装置”可指示所 述装置和另一装置或者部分“能够
…”
。例如,表述“被配置为执行a、b和 c的处理器”可指示用于执行相应操作的专用处理器(例如,嵌入式处理器) 或用于通过执行存储在存储器装置中的至少一个软件程序来执行相应的操作 的通用处理器(例如,中央处理单元cpu或应用处理器(ap))。
54.本文使用的术语在于描述本公开的某些实施例,但并不旨在限制其它实 施例的范围。除非本文另外指出,否则本文使用的所有术语(包括技术或科 学术语)可具有与本领域技术人员通常理解的含义相同含义。通常,词典中 定义的术语应被视为具有与相关领域中的上下文含义相同的含义,并且,除 非本文明确地定义,否则不应被不同地理解或被理解为具有过于正式的含义。 在任何情况下,本公开中定义的术语也不旨在被解释为排除本公开的实施例。
55.利用块设备的缓存系统,诸如open-cas,dm-cache和bcache,通过使 用更高性能的存储设备加速后端块存储设备的输入和输出(input and output, io)访问。例如,scm(storage class memory),samsung z-ssd,pram,slc (single level cell)和ssd(solid state disk)为可以作为缓存设备的 超低延迟块设备,后端设备可以是mtc(multi-level cell)ssd,tlc (trinary-level cell)ssd,qlc(quali-level-cell)ssd,hdd(hard diskdrive)等设备。
56.为了更有效的加速后端块存储设备的io的访问,本技术提出了一种数据 缓存的方法和装置。本领域技术人员应当理解,本公开的数据缓存的方法和 装置可用于任何包括
缓存设备和后端设备的存储系统。
57.图1是示出了根据实施例的数据缓存的方法的流程图。
58.参照图1,在操作s101,响应于对存储设备的访问请求,获取所述访问 请求对应的数据的缓存价值。在下文的描述中,存储设备与后端存储设备具 有相同或相似的含义,缓存与缓存设备具有相同或者相似的含义。本领域技 术人员应当理解,所述访问请求为读取数据的请求或者写入数据的请求。
59.作为示例,所述访问请求对应的数据的缓存价值可以是访问请求对应的 数据的逻辑地址所属的逻辑分区的数据缓存价值。
60.作为示例,为了减少系统负担,可以对后端设备映射的逻辑地址进行分 区,将后端设备划分为多个逻辑分区,以逻辑分区为单位管理各个逻辑分区 存储数据的缓存价值。
61.需要说明的是,后端设备可被划分为多个逻辑分区,逻辑分区的具体数 量和逻辑分区的大小可以根据实际情况设置,例如,逻辑分区的大小相同或 者不同。
62.相应地,获取所述访问请求对应的数据的缓存价值可以包括获取所述访 问请求对应的数据的逻辑地址所属的逻辑分区的缓存价值。例如,具体的操 作可包括:从所述存储设备的多个逻辑分区中确定所述访问请求对应的数据 的逻辑地址对应的逻辑分区;以及获取所述逻辑分区的数据缓存价值作为所 述访问请求对应的数据的缓存价值,其中,所述多个逻辑分区中的每个逻辑 分区具有对应的数据缓存价值。
63.本领域技术人员应当理解,缓存价值可以是数据的热度信息,可以是数 据在预定时间段内被访问的次数等信息,当然本技术对于缓存价值不做具体 限制,可以是任何可用于确定数据是否需要缓存的指标信息。
64.作为示例,与每个逻辑分区相应的读写请求可随着工作负载的改变而变 化,这可导致每个逻辑分区的数据缓存价值发生变化。例如,在第一时间段, 与某个逻辑分区相应的数据可能是被频繁访问的数据,因此,所述某一逻辑 分区的数据缓存价值较高。如果在第一时间段存在针对该逻辑分区的写入请 求,则应当将该写入请求对应的数据写入缓存设备中。在第二时间段,与所 述某个逻辑分区相应的数据可能不被频繁访问,因此,在第二时间段,所述 某一逻辑分区的数据缓存价值较低。此时,如果在第二时间段存在针对该逻 辑分区的写入请求,则应当将该写入请求对应的数据写入后端设备中,这样 可以避免低数据缓存价值的数据被存储在缓存设备中。由于每个逻辑分区对 应的读写请求可能不同,因此,每个逻辑分区具有自己对应的数据缓存价值。
65.就这点而言,如果能合理地预测逻辑分区(或与逻辑分区对应的数据) 的数据缓存价值,并根据预测的逻辑分区的数据缓存价值将与该逻辑分区相 应的数据写入缓存或者后端存储设备中(或者,从缓存或者后端存储设备读 取与该逻辑分区相应的数据),则这样的读写策略可以根据数据的实际缓存价 值动态的确定是否将数据写入缓存设备,有效减少了相关方法导致的缓存设 备的脏数据,提升从缓存访问数据的命中率,有效减小读数据的时间延迟。 相对于通写操作,可以有效的减小写操作的延迟;相对于回写操作和绕写操 作,可以减小单一设备的写操作压力(回写操作和绕写操作只将数据写入缓 存设备或只写入后端设备)。
66.作为示例,所述获取所述访问请求对应的数据的缓存价值的步骤包括: 基于所述逻辑分区的历史被访问信息获取所述缓存价值。由于数据访问存在 时间相关性,之前被多
次访问过的数据,未来可能会被多次访问,并且由于 数据存放的位置(逻辑分区)基本是固定的,所以可根据存放位置(逻辑分 区)的历史被访问信息来预测数据将来的被访问信息。
67.本领域技术人员应当理解,逻辑分区的被访问信息可指逻辑分区被访问 次数、被访问数据的大小中的至少一个。为了便于理解,在下文中以被访问 次数作为被访问信息为例进行说明,另外,为了便于描述在下文中逻辑分区 的访问次数与逻辑分区的被访问次数可被互换使用。作为示例,可训练用于 预测逻辑分区的访问次数或数据缓存价值的机器学习模型,并利用已训练的 机器学习模型来预测逻辑分区的访问次数或数据缓存价值。
68.作为示例,以基于长短记忆网络(long short-term memory,lstm)的 预测模型为例来描述机器学习模型的离线训练过程和在线使用过程。
69.图2是示出根据实施例的数据存储方案的整体架构的示图。
70.参照图2,缓存价值预测模型可包括io预测器和分类器。
71.首先对基于lstm的预测模型的离线训练的示例进行描述:
72.1)可统计(例如,可通过io采集器)在每个时刻(或每个时间段)针 对各个逻辑分区的io请求次数(即访问次数)和/或与请求相应的数据的大 小(即各个时刻或时间段各逻辑分区的访问信息),并可将统计的数据存储在 记录文件中。相较于以单个请求统计访问信息,以逻辑分区为单位统计访问 信息可以有效的减少内存占用和计算负载。本领域技术人员应当理解,在下 文中的术语“时刻”可被替换为“时间段”,时间段的长度可为预设值。
73.2)将第n个逻辑分区的前后相邻的2m个逻辑分区以及第n个逻辑分区 (共2m 1个逻辑分区)在第h-h 1个时刻至第h个时刻的访问次数(可以采 用[h,2m 1]的二维向量表示)、第n个逻辑分区在第h 1个时刻(或时间段) 的访问次数可被作为训练数据来训练io预测器。
[0074]
其中,n为逻辑分区的索引,n=1、
……
n,n为后端设备被划分的逻辑分 区的个数,h表示采集器采集工作负载数据的次数,例如可以是采集了预设 一段时间内的h个时刻或h个时间段的工作负载数据,工作负载数据可以是 访问次数。m为正整数。
[0075]
其中,h为时刻或时间段的索引,h为预设值。
[0076]
在下面的描述中,逻辑分区和分区具有相同或者相似的含义,且可互换 使用。
[0077]
例如,m取2,h取10,n取8时,h取20,第8个分区前后相邻的2m 个分区分别是第6个,第7个,第9个,第10个分区。因此,所述训练数据 可指示第6个、第7个、第8个、第9个、第10个分区中的各个分区在第 11个至第20个时间段中的每个时间段的访问次数,即大小为[10,5]的二维 向量,和第8个分区在第21个时间段的访问次数,即大小为[1,1]的向量。 本领域技术人员应当理解,与分区相邻的2m个分区可以以其它方式来选择, 例如,可以选择当前分区的前2m个分区、当前分区的后2m个分区、或者当 前分区的前2m-x个分区和当前分区的后x个分区,其中,x为预设值,且 0《x《2m。
[0078]
本领域技术人员应当理解,io预测器可以利用与各种场景的负载相应的 逻辑分区的访问信息来训练,这使得通过训练好的io预测器预测逻辑分区的 访问信息时可以更准确地预测逻辑分区将来的被访问信息。
[0079]
下面描述,已训练的io预测器的在线使用过程的示例:
[0080]
1)使用io收集器记录每个时刻或每个时间段各逻辑分区的访问信息。作 为示例,可间隔预设时间长度统计一次。
[0081]
2)当每个逻辑分区的历史记录中提供的次数超过预设值(例如,预设值 为h)时,可利用已训练的io预测器预测各逻辑分区的访问信息。
[0082]
作为示例,所述获取访问请求对应的数据的缓存价值的步骤包括:将所 述数据的逻辑地址所属的逻辑分区的历史被访问信息和其它逻辑分区的历史 被访问信息提供给训练后的预测器,并从所述训练后的预测器获取所述数据 缓存价值,其中,所述其它逻辑分区包括与所述数据的逻辑地址所属的逻辑 分区相邻的预设数量的逻辑分区。
[0083]
例如,可将同一时间段内的所述所属的逻辑分区的历史被访问信息以及 其它逻辑分区的历史被访问信息输入至已训练的io预测器来预测所述所属 的逻辑分区的访问信息。所述其它逻辑分区可包括与所述所属的逻辑分区前 后相邻的预设数量的逻辑分区。
[0084]
图3示出了根据实施例的基于已训练的io预测器预测逻辑分区的访问次 数的示意图。
[0085]
例如,将第n(逻辑分区的索引)个逻辑分区的前后相邻的2m个逻辑分 区以及第n个逻辑分区(共2m 1个逻辑分区)在第t-h 1个时刻至第t个时 刻(共h个时刻或时间段)中的每个时刻的访问次数(大小为[h,2m 1]的二 维向量)输入已训练的io预测器(其中,t为时刻的索引,h为预设值),io 预测器的输出即为预测的第n个逻辑分区在第t 1个时刻(或时间段)的访 问次数,其中,从第t-h 1个时刻至第t个时刻之间的时间间隔即为所述同 一时间段,第t时刻为当前时刻。
[0086]
例如,对于第9个分区,如果下一时间段为第11个时间段或时刻(即 t 1=11),则将第7个逻辑分区、第8个逻辑分区、第9个逻辑分区、第10 个逻辑分区以及第11个逻辑分区的第1个时间段至第10个时间段中的每个 时间段的访问次数输入到已训练的io预测器,即可获得预测的第9个逻辑分 区的下一时间段(即第11个时间段或时刻)的访问次数。
[0087]
作为示例,不管在机器学习模型的训练阶段还是在推断阶段,如果第n 个逻辑分区的前面或后面的逻辑分区的数量小于m,缺失的逻辑分区访问次 数以预设值代替,例如,可设置为0。
[0088]
作为另一示例,在机器学习模型的训练阶段或者在推断阶段,如果第n 个逻辑分区前面的逻辑分区的数量小于m,例如为m个,则将该m个分区以 及第n个分区后面的第2m-m个分区作为第n个分区的前后相邻的2m个分区; 如果第n个逻辑分区后面的逻辑分区的数量小于m,例如为m个,则将该m 个分区以及第n个分区前面的第2m-m个分区作为第n个分区的前后相邻的 2m个分区。
[0089]
本领域技术人员应当理解,训练io预测器所采用的相邻逻辑分区的选择 方式与通过训练好的io预测器预测访问信息时所采用的相邻逻辑分区的选 择方式相同。
[0090]
根据实施例,由于逻辑分区的访问信息具有时间相关性和空间相关性, 因此,基于逻辑分区的历史被访问信息以及与该逻辑分区相邻的逻辑分区的 历史被访问信息可以有效预测该逻辑分区在将来的被访问信息。
[0091]
通过使用已训练的io预测器,可预测每个逻辑分区下一时刻(或时间段) 的访问次数。
[0092]
作为示例,可基于预测的各个分区的访问次数来确定各分区的数据缓存 价值。
[0093]
作为示例,可通过缓存价值分类器基于预测的各个分区的访问次数以聚 类方法(例如,kmeans )预测各逻辑分区的数据缓存价值。具体地,例如, 可利用缓存价值分类器
将预测的各个逻辑分区在下一时刻或时间段(例如, 第t 1个时刻或时间段,时间段的大小可被预设,例如3秒)的访问次数聚 类为k个类,将k个类中的具有较大聚类中心值的l个类对应的逻辑分区确 定为具有高数据缓存价值,将其余类对应的逻辑分区确定为具有低数据缓存 价值,其中,l为预定值,低数据缓存价值指示逻辑分区将不被频繁访问, 高数据缓存价值指示逻辑分区将被频繁访问。本领域技术人员应当理解,在 离线阶段训练预测器和分类器可以分开训练,当然也可以一起训练。
[0094]
作为示例,当逻辑分区的访问信息的历史记录次数不大于预设值(例如, 预设值为h)时,将无法使用已训练的预测模型。在这种情况下,可以通过 以下步骤预测各逻辑分区在下一时刻(或时间段)的数据缓存价值:对下一 时刻(或时间段)之前的各个逻辑分区的访问次数进行聚类,将通过聚类获 得的多个类中的具有较大聚类中心值的l个类对应的逻辑分区确定为具有高 数据缓存价值,将其余类对应的逻辑分区确定为具有低数据缓存价值。
[0095]
作为示例,对于第1个时刻或者时间段,各逻辑分区的数据缓存价值可 被预先设定。
[0096]
本领域技术人员应当理解,以上以访问次数作为访问信息仅是示例,还 可以将与访问请求相应的数据大小作为访问信息,在这种情况下,上述聚类 操作针对的是数据大小。此外,还可以将访问次数和数据大小两者作为访问 信息。
[0097]
作为示例,参照图2,可基于获取的逻辑分区的数据缓存价值建立逻辑 分区-缓存价值映射表。该表可指示逻辑分区的数据缓存价值的高低。例如, 可将具有高数据缓存价值的逻辑分区的数据缓存价值设置为1,将具有低数 据缓存价值的逻辑分区的数据缓存价值设置为0。可将所述逻辑分区-数据缓 存价值映射表存储在记录文件中。该映射表可随着时间被更新。
[0098]
返回图1,在操作s102,确定所述数据的缓存价值是否满足预设条件。
[0099]
作为示例,预设条件可以为数据的缓存价值为高缓存价值或数据的逻辑 地址所属的逻辑分区具有高数据缓存价值。
[0100]
作为示例,所述数据的缓存价值还可以由各逻辑分区的访问次数聚类后 的聚类结果的排序号指示,其中,所述排序号是基于聚类获得的各个类分别 对应的中心值的大小被获得的,相应地,预设条件可以为所述数据对应的逻 辑分区的排序序号小于预设值。
[0101]
作为示例,可根据所述映射表确定数据对应的逻辑分区的数据缓存价值, 并根据确定的数据缓存价值确定数据的缓存价值是否满足预设条件。参照图 2,io缓存价值识别器可基于逻辑分区-缓存价值映射表识别与访问请求相应 的逻辑分区对应于高数据缓存价值还是低数据缓存价值。
[0102]
参照图2,io分发器可基于io缓存价值识别器的识别结果确定具体的分 发策略。
[0103]
作为示例,可基于访问请求对应的数据的缓存价值是否满足预设条件, 确定是从缓存设备访问所述访问请求对应的数据还是从存储设备访问所述访 问请求对应的数据。
[0104]
例如,返回参照图1,在操作s103,若所述数据的缓存价值满足预设条 件,确定从缓存设备访问所述访问请求对应的数据。
[0105]
在操作s104,若所述数据的缓存价值不满足预设条件,确定从所述存储 设备访问所述访问请求对应的数据。
[0106]
作为示例,当所述访问请求为写请求时,若所述数据的缓存价值满足预 设条件,确定将所述写请求对应的数据写入所述缓存设备;若所述的数据缓 存价值不满足预设条件,确定将所述写请求对应的数据写入所述存储设备。
[0107]
作为示例,若所述的数据的缓存价值不满足预设条件,在将所述写请求 对应的数据写入所述存储设备后,如果缓存设备中存在与所述数据对应的逻 辑分区相应的数据,可把缓存中的与该逻辑分区相应的数据置为无效。
[0108]
例如,当写入请求对应的逻辑分区(或写入请求对应的数据)具有高数 据缓存价值高时,将数据写入缓存设备。由于该数据可能会被频繁访问,因 此,将该数据写入缓存设备,可以降低该数据的读写延迟;当写入请求对应 的逻辑分区(或写入请求对应的数据)具有低数据缓存价值时,将数据写入 后端存储设备。由于该数据可能不会被频繁访问,因此,将该数据写入后端 存储设备,可避免缓存污染。
[0109]
作为示例,当所述访问请求为读请求时,若所述数据的缓存价值满足预 设条件,确定从所述缓存设备读取所述读请求对应的数据;若所述数据的缓 存价值不满足预设条件,确定从所述存储设备读取所述读请求对应的数据。
[0110]
例如,读请求对应的数据(或该数据对应的逻辑分区)的缓存价值高时, 该数据可能在缓存设备中,因此直接从缓存设备读取数据,可能被读取到; 读请求对应的数据(或该数据对应的逻辑分区)的缓存价值低时,该数据可 能位于后端存储设备,因此,如果直接从后端存储设备读取该数据,该数据 可能会被读取到,从而避免读取数据的时间延迟。
[0111]
作为示例,若所述数据的缓存价值满足预设条件,且从所述缓存设备中 未命中所述读请求对应的数据,确定从所述存储设备读取所述读请求对应的 数据。
[0112]
作为示例,还可将从所述缓存设备中未命中的所述读请求对应的数据写 入所述缓存设备中。由于该数据具有高数据缓存价值,因此,将该数据写入 缓存设备,在下次读取数据时,可快速从缓存设备读取到该数据,从而降低 读取该数据的时间延迟。
[0113]
如上所述,数据缓存的方法可将经常访问的数据存储到性能好的缓存设 备上,把不经常访问的数据存储到后端存储装置上,从而保证缓存设备中的 数据都是频繁访问的数据;当读取数据时,如果数据具有高数据缓存价值, 则从缓存设备读取该数据,如果数据具有低数据缓存价值,则从后端存储装 置读取该数据,由于存储数据是根据数据的缓存价值存储的,因此,被读取 的数据可能会被直接命中,这可以显著降低读写数据的时间延迟,从而提高 存储系统的性能。以上参照图1-图3对根据实施例的数据缓存的方法进行了 描述。下面参照图4-图8对根据实施例的数据缓存的装置、数据存储系统、 数据存储设备进行描述。
[0114]
根据本公开的实施例,提供了一种装置,包括:一个或更多个存储器, 存储指令;以及一个或更多个处理器,可被配置为执行所述指令以实现例如 如图4所示的 数据缓存的装置400。
[0115]
参照图4,数据缓存的装置400可包括获取单元401和确定单元402。
[0116]
本领域技术人员应当理解,数据缓存的装置400可另外包括其他组件, 并且数据缓存的装置400中的至少一个组件可被拆分或者组合。获取单元401 和确定单元402可以由包括各种处理器、控制器和存储设备的一个或更多个 硬件电路实现。
[0117]
作为示例,获取单元401可被配置为:获取访问请求对应的数据的缓存 价值。
显著降低读写数据的时间延迟,从而提高存储系统的性能。
[0130]
图5为根据实施例的应用了存储装置的系统1000的示意图。
[0131]
图5的系统1000可以是移动系统,例如便携式通信终端(例如,移动电 话)、智能手机、平板个人计算机(pc)、可穿戴装置、医疗保健装置或物联 网(iot)装置。但是,图5的系统1000不必限于移动系统,其可以是pc、 膝上型计算机、服务器、媒体播放器或汽车装置(例如,导航装置)。
[0132]
参照图5,系统1000可以包括主处理器1100、存储器(例如,1200a和 1200b)以及存储装置(例如,1300a和1300b)。并且,系统1000可以包括 图像捕获装置1410、用户输入装置1420、传感器1430、通信装置1440、显 示器1450、扬声器1460、供电装置1470以及连接接口1480中的至少一个。
[0133]
主处理器1100可以控制系统1000的所有操作,包括系统1000中包括的 其他组件的操作。主处理器1100可以被实现为通用处理器、专用处理器或应 用程序处理器等。
[0134]
主处理器1100可以包括至少一个中央处理器(cpu)核1110,并且还包 括控制器1120,其用于控制存储器1200a和1200b和/或存储装置1300a和 1300b。在一些实施例中,主处理器1100可以进一步包括加速器1130,其是 用于诸如人工智能(ai)数据操作等的高速数据操作的专用电路。加速器1130 可以包括图形处理单元(gpu)、神经处理单元(npu)和/或数据处理单元(dpu) 等,并且被实现为与主处理器1100的其他组件物理上分离的芯片。
[0135]
存储器1200a和1200b可以用作系统1000的主存储装置。尽管存储器 1200a和1200b可以分别包括易失性存储器,例如静态随机存取存储器(sram) 和/或动态随机存取存储器(dram)等,但是存储器1200a和1200b可以分别 包括非易失性存储器,例如闪存、相变随机存取存储器(pram)和/或电阻式 随机存取存储器(rram)等。存储器1200a和1200b可以在与主处理器1100 相同的封装中实现。
[0136]
存储装置1300a和1300b可以用作非易失性存储装置,其被配置为不管 是否被供电都存储数据,并且具有比存储器1200a和1200b更大的存储容量。 存储装置1300a和1300b可以分别包括存储器控制器(strg ctrl)1310a和 1310b以及非易失性存储器(non-volatile memory,nvm)1320a和1320b, 其被配置为经由存储器控制器1310a和1310b的控制来存储数据。例如,nvm 1320a和1320b可以包括具有二维(2d)、三维(3d)结构的v-nand闪存, 或者其他类型的nvm,例如pram和/或rram等。
[0137]
在系统1000内,存储装置1300a和1300b可以与主处理器1100物理上 分离,或者可以在与主处理器1100相同的封装中实现。另外,存储装置1300a 和1300b可以具有能够通过诸如稍后将描述的连接接口1480之类的接口与系 统100的其他组件可移除地结合的诸如固态装置(ssds)或存储卡的存储装 置。存储装置1300a和1300b可以是应用了诸如通用闪存(ufs)、嵌入式多 媒体卡(emmc)或nvme之类的标准协议的装置,但不限于此。
[0138]
图像捕获装置1410可以拍摄静止图像或运动图像。图像捕获装置1410 可以包括照相机、便携式摄像机和/或网络摄像头等。
[0139]
用户输入装置1420可以接收由系统1000的用户输入的各种类型的数据, 并且包括触摸板、键区、键盘、鼠标和麦克风等。
[0140]
传感器1430可以检测可以从系统1000的外部获得的各种类型的物理特 性,并将所检测的物理量转换成电信号。传感器1430可以包括温度传感器、 压力传感器、照度传感
器、位置传感器、加速度传感器、生物传感器和/或陀 螺仪传感器等。
[0141]
通信装置1440可以根据各种通信协议在系统1000外部的其他装置之间 发送和接收信号。通信装置1440可以包括天线、收发器或调制解调器等。
[0142]
显示器1450和扬声器1460可以用作输出装置,其被配置为分别向系统 1000的用户输出视觉信息和听觉信息。
[0143]
供电装置1470可以适当地转换从嵌入在系统1000中的电池和/或外部电 源供应的电力,并且将所转换的电力供应给系统1000的每个组件。
[0144]
连接接口1480可以提供系统1000和外部装置之间的连接,该外部装置 连接到系统1000并且能够向系统1000发送数据和从系统1000接收数据。连 接接口1480可以通过使用各种接口方案来实现,例如,高级技术附件(ata)、 串行ata(sata)、外部串行ata(e-sata)、小型计算机系统接口(scsi)、 串行scsi(sas)、外部设备互连(pci)、pci express(pcie)、nvme、ieee 1394、通用串行总线(usb)接口、安全数码(sd)卡接口、多媒体卡(mmc) 接口、嵌入式多媒体卡(emmc)接口、ufs接口、嵌入式ufs(eufs)接口和 紧凑式闪存(cf)卡接口等。
[0145]
例如,nvm 1320a和1320b可包括作为高速存储装置的第一存储装置和 比第一存储装置慢的第二存储装置。第二存储装置可以具有比第一存储装置 更大的容量。例如,第一存储装置可以是scm、三星z-ssd、pram、slc ssd 等,第二存储装置可以是mtc ssd、tlc ssd、qlc ssd、hdd等。第一存储装 置可以是缓存设备,第二存储装置可以是存储设备。主处理器1100和/或存 储控制器1310a和1310b可控制系统1000以与如上所述的数据缓存的方法一 致的方式读取非易失性存储器1320a和1320b中的信息以及将信息存储在非 易失性存储器1320a和1320b中。作为示例,所述一个或更多个存储器和所 述一个或更多个处理器被设置在主机装置中,以及其中,所述装置还包括包 含所述缓存设备和所述存储设备的外部存储装置。
[0146]
图6为根据实施例的主机存储系统10的框图。
[0147]
主机存储系统10可以包括主机100和存储装置200。此外,存储装置200 可以包括存储器控制器210和nvm 220。根据本发明的示例性实施例,主机 100可以包括主机控制器110和主机存储器120。主机存储器120可以用作缓 冲存储器,其被配置为临时存储要发送到存储装置200的数据或从存储装置 200接收的数据。
[0148]
存储装置200可以包括存储介质,其被配置为响应于来自主机100的请 求而存储数据。作为示例,存储装置200可以包括ssd、嵌入式存储器和可 装卸的外部存储器中的至少一个。当存储装置200是ssd时,存储装置200 可以是符合nvme标准的装置。当存储装置200是嵌入式存储器或外部存储器 时,存储装置200可以是符合ufs标准或emmc标准的装置。主机100和存储 装置200均可以根据采用的标准协议来生成包(packet)并发送该包。
[0149]
当存储装置200的nvm 220包括闪存时,所述闪存可以包括2d nand存 储阵列或3d(或垂直)nand(vnand)存储阵列。作为另一示例,存储装置 200可以包括各种其他种类的nvm。例如,存储装置200可以包括磁性随机存 取存储器(mram)、自旋转移扭矩mram、导电桥式ram(cbram)、铁电ram(fram)、 pram、rram以及各种其他类型的存储器。
[0150]
根据一实施例,主机控制器110和主机存储器120可以实现为单独的半 导体芯片。或者,在一些实施例中,主机控制器110和主机存储器120可以 集成在同一半导体芯片中。
作为示例,主机控制器110可以是包括在应用处 理器(ap)中的多个模块中的任何一个。所述ap可以实现为片上系统(soc)。 此外,主机存储器120可以是所述ap中包括的嵌入式存储器或所述ap外部 的存储器模块。
[0151]
主机控制器110可以管理将主机存储器120的缓冲区域的数据(例如, 写入数据)存储在nvm 220中的操作或将nvm 220的数据(例如,读取数据) 存储在缓冲区域中的操作。
[0152]
存储器控制器210可以包括主机接口211、存储器接口212和cpu 213。 另外,存储器控制器210还可以包括闪存转换层(ftl)、包管理器215、缓 冲存储器216、纠错码(ecc)引擎217和高级加密标准(aes)引擎218。存 储器控制器210可以进一步包括其中装载有ftl 214的工作存储器。cpu 213 可以执行ftl 214来控制nvm 220上的数据写入和读取操作。
[0153]
主机接口211可以向主机100发送包和从主机100接收包。从主机100 发送到主机接口211的包可以包括命令或要被写入nvm 220的数据等。从主 机接口211发送到主机100的包可以包括对命令的响应或从nvm 220读取的 数据等。存储器接口212可以将要被写入nvm 220的数据发送到nvm 220或 接收从nvm 220读取的数据。存储器接口212可以被配置为符合诸如切换 (toggle)或开放nand闪存接口(onfi)的标准协议。
[0154]
ftl 214可以执行各种功能,例如地址映射操作、磨损均衡操作以及垃 圾收集操作。地址映射操作可以是将从主机100接收的逻辑地址转换为用于 在nvm 220中实际存储数据的物理地址的操作。磨损均衡操作可以是通过允 许均匀地使用nvm 220的块来防止特定块的过度退化的技术。作为示例,磨 损均衡操作可以通过使用平衡物理块的擦写计数的固件技术来实现。垃圾收 集操作可以是通过在将现有块的有效数据复制到新块之后擦除现有块来确保 nvm 220中的可用容量的技术。
[0155]
包管理器215可以根据同意主机100的接口的协议生成包,或者从从主 机100接收到的包中解析各种类型的信息。另外,缓冲存储器216可以临时 存储要写入nvm 220的数据或要从nvm 220读取的数据。尽管缓冲存储器216 可以是包括在存储器控制器210中的组件,但是缓冲存储器216可以在存储 器控制器210的外部。
[0156]
ecc引擎217可以对从nvm 220读取的读取数据执行错误检测和校正操 作。更具体地,ecc引擎217可以生成用于要写入到nvm 220的写入数据的 奇偶校验位,并且所生成的奇偶校验位可以与写入数据一起存储在nvm 220 中。在从nvm 220读取数据期间,ecc引擎217可以通过使用读取数据以及 从nvm 220读取的奇偶校验位来校正读取数据中的错误,并输出错误校正后 的读取数据。
[0157]
aes引擎218可以通过使用对称密钥算法对输入到存储器控制器210的 数据执行加密操作和解密操作中的至少一个。
[0158]
根据实施例,nvm 220可包括作为高速存储装置的第一存储装置和比第 一存储装置慢的第二存储装置。第二存储装置可以具有比第一存储装置更大 的容量。例如,第一存储装置可以是scm、三星z-ssd、pram、slc ssd等, 第二存储装置可以是mtc ssd、tlc ssd、qlc ssd、hdd等。第一存储装置可 以是缓存设备,第二存储装置可以是存储设备。主机100和/或存储控制器 210可控制主机存储系统10以与如上所述的数据缓存的方法一致的方式读取nvm 220中的信息以及将信息存储在nvm 220中。作为示例,所述一个或更 多个存储器和所述一个或更多个处理器被设置在通用闪存存储器ufs主机中, 以及其中,所述装置还包括:ufs装置;以及ufs接口,被配置为将ufs主 机和ufs装置可通信地耦接。
信号ref_clk的频率来设置ufs主机2100和ufs装置2200之间的数据速率。 即,可以根据参考时钟信号ref_clk的频率来确定数据速率。
[0169]
ufs接口2300可以支持多个通道,每个通道可以实现为一对差分线。例 如,ufs接口2300可以包括至少一个接收通道和至少一个发送通道。在图7 中,配置为发送一对差分输入信号din_t和din_c的一对线可以构成接收通 道,并且配置为发送一对差分输出信号dout_t和dout_c的一对线可以构成 发送通道。尽管在图7中示出了一个发送通道和一个接收通道,但是可以改 变发送通道的数量和接收通道的数量。
[0170]
接收通道和发送通道可以基于串行通信方案来发送数据。由于接收通道 与发送通道分开的结构,因此可以启用ufs主机2100与ufs装置2200之间 的全双工通信。即,在通过接收通道从ufs主机2100接收数据的同时,ufs 装置2200可以通过发送通道向ufs主机2100发送数据。此外从ufs主机2100 到ufs装置2200的控制数据(例如,命令)和要由ufs主机2100存储在ufs 装置2200的nvm 2220中或从nvm 2220中读取的用户数据可以通过同一通道 发送。因此,在ufs主机2100和ufs装置2200之间,除了一对接收通道和 一对发送通道之外,不需要进一步提供用于数据发送的单独通道。
[0171]
ufs装置2200的ufs装置控制器2210可以控制ufs装置2200的所有操 作。ufs装置控制器2210可以通过使用逻辑单元(lu)2211来管理nvm 2220, 该lu 2211是逻辑数据存储单元。lu 2211的数量可以是8,但不限于此。ufs 装置控制器2210可以包括ftl,并且通过使用ftl的地址映射信息将从ufs 主机2100接收到的逻辑数据地址(例如,逻辑块地址(lba)转换为物理数 据地址(例如,物理块地址(pba))。配置为在ufs系统2000中存储用户数 据的逻辑块可以具有预定范围内的尺寸。例如,可以设置逻辑块的最小尺寸 为4kbyte。
[0172]
当通过uic层2250将来自ufs主机2100的命令施加到ufs装置2200 时,ufs装置控制器2210可以响应于该命令而执行操作,并且当操作完成时 将完成响应发送给ufs主机2100。
[0173]
作为示例,当ufs主机2100意在将用户数据存储在ufs装置2200中时, ufs主机2100可以向ufs装置2200发送数据存储命令。当从ufs装置2200 接收到指示ufs主机2100准备好接收用户数据(就绪传输)的响应(“就绪 传输”响应)时,ufs主机2100可以将用户数据发送到ufs装置2200。ufs 装置控制器2210可以将接收到的用户数据临时存储在装置存储器2240中, 并且基于ftl的地址映射信息,将临时存储在装置存储器2240中的用户数据 存储在nvm 2220的选定位置。
[0174]
作为另一示例,当ufs主机2100意在读取存储在ufs装置2200中的用 户数据时,ufs主机2100可以向ufs装置2200发送数据读取命令。已经接 收到该命令的ufs装置控制器2210可以基于数据读取命令从nvm 2220读取 用户数据,并将读取的用户数据临时存储装置存储器2240中。在读取操作期 间,ufs装置控制器2210可以通过使用嵌入在其中的ecc引擎来检测并校正 读取的用户数据中的错误。更具体地,ecc引擎可以生成用于要写入nvm 2220 的写入数据的奇偶校验位,并且所生成的奇偶校验位可以与写入数据一起存 储在nvm 2220中。在从nvm 2220读取数据期间,ecc引擎可以通过使用读 取数据以及从nvm 2220读取的奇偶校验位来校正读取数据中的错误,并输出 错误校正后的读取数据。
[0175]
另外,ufs装置控制器2210可以将临时存储在装置存储器2240中的用 户数据发送到ufs主机2100。并且,ufs装置控制器2210还可以包括aes引 擎。aes引擎可以通过使用对
称密钥算法对发送到ufs装置控制器2210的数 据执行加密操作和解密操作中的至少一个。
[0176]
ufs主机2100可以将要发送到ufs装置2200的命令顺序存储在可以用 作公共队列的ufs主机寄存器2111中,并且顺序地将命令发送给ufs装置 2200。在这种情况下,即使当先前发送的命令仍由ufs装置2200处理时,即, 即使在接收到先前发送的命令已经由ufs装置2200处理的通知之前,ufs主 机2100也可以将在cq中待命的下一命令发送到ufs装置2200。因此,在处 理先前发送的命令期间,ufs装置2200还可以从ufs主机2100接收下一命 令。可以在cq中存储的命令的最大数量(或队列深度)可以是例如32。并 且,可以将cq实现为循环队列,其中通过头指针和尾指针指示存储在队列中 的命令行的开始和结束。
[0177]
多个存储元件2221中的每一个可以包括存储单元阵列和配置为控制存 储单元阵列的操作的控制电路。存储单元阵列可以包括2d存储单元阵列或 3d存储单元阵列。存储单元阵列可以包括多个存储单元。尽管每个存储单元 都是设置为存储1位信息的单层单元(slc),但是每个存储单元可以是设置 为存储2位或更多位信息的单元,例如多层单元(mlc)、三层单元(tlc)和 四层单元(qlc)。3d存储单元阵列可以包括垂直nand串,其中至少一个存 储单元垂直定向并位于另一存储单元上。
[0178]
可以将电压vcc、vccq和vccq2等作为电源电压施加到ufs装置2200。 电压vcc可以是用于ufs装置2200的主电源电压,并且可以在2.4v至3.6v 的范围内。电压vccq可以是用于向ufs装置控制器2210供应低压的电源电 压,并且可以在1.14v至1.26v的范围内。电压vccq2可以是用于向诸如mipim-phy 2251之类的i/o接口供应低于电压vcc并且高于电压vccq的电压的 电源电压,并且可以在1.7v至1.95v的范围内。可以通过调节器2260将电 源电压提供给ufs装置2200的各个组件。调节器2260可以实现为一组单元 调节器,其分别连接到上述电源电压中的不同电源电压。
[0179]
例如,nvm 2220可包括作为高速存储装置的第一存储装置和比第一存储 装置慢的第二存储装置。第二存储装置可以具有比第一存储装置更大的容量。 例如,第一存储装置可以是scm、三星z-ssd、pram、slc ssd等,第二存储 装置可以是mtc ssd、tlc ssd、qlc ssd、hdd等。第一存储装置可以是缓存 设备,第二存储装置可以是存储设备。ufs主机2100和/或ufs装置可被配 置为控制ufs系统2000执行如上所述的数据缓存的方法。
[0180]
作为示例,所述一个或更多个存储器和所述一个或更多个处理器被设置 在数据中心系统中的存储服务器中,以及其中,所述数据中心系统还包括: 多个应用服务器;以及多个存储服务器,其中,所述存储服务器是所述多个 存储服务器中的一个。
[0181]
图8为根据实施例的应用了存储装置的数据中心3000的示图。
[0182]
参照图8,数据中心3000可以是收集各种类型的数据并提供服务的设施, 被称为数据存储中心。数据中心3000可以是用于操作搜索引擎和数据库的系 统,并且可以是公司(诸如,银行)或政府机构所使用的计算系统。数据中 心3000可以包括应用服务器3100至3100n和存储服务器3200至3200m。根 据实施例,可以不同地选择应用3100至3100n的数量和存储服务器3200至 3200m的数量。应用服务器3100至3100n的数量和存储服务器3200至3200m 的数量可以彼此不同。
[0183]
应用服务器3100或存储服务器3200可以包括处理器3110和3210以及 存储器3120和3220中的至少一个。现在将以存储服务器3200为例进行描述。 处理器3210可以控制存储服务器3200的所有操作,访问存储器3220,并且 执行加载到存储器3220的指令和/或数据。
存储器3220可以是双数据率同步 dram(ddr sdram)、高带宽存储器(hbm)、混合内存立方体(hmc)、双列直 插式内存模块(dimm)、傲腾dimm(optane dimm)或非易失性dimm(nvmdimm)。 在一些实施例中,存储服务器3200中包括的处理器3210和存储器3220的数 量可以被不同地选择。在一实施例中,处理器3210和存储器3220可以提供 处理器-存储器对。在一实施例中,处理器3210的数量与存储器3220的数量 可以彼此不同。处理器3210可以包括单核处理器或多核处理器。对于存储服 务器3200的以上描述可以类似地应用于应用服务器3100。在一些实施例中, 应用服务器3100可以不包括存储装置3150。存储服务器3200可以包括至少 一个存储装置3250。根据实施例,存储服务器3200中包括的存储装置3250 的数量可以被不同地选择。
[0184]
应用程序服务器3100至3100n可以通过网络3300与存储服务器3200 至3200m通信。网络3300可以通过使用光纤信道(fc)或以太网来实现。在 这种情况下,fc可以是用于相对高速的数据传输的介质,并且可以使用具有 高性能和高可用性的光开关。根据网络3300的访问方法,可以将存储服务器 3200至3200m设置为文件存储、块存储或对象存储。
[0185]
在一实施例中,网络3300可以是专用于存储的网络,例如存储区域网络 (san)。例如,san可以是fc-san,其使用fc网络并且根据fc协议(fcp) 实现。作为另一示例,san可以是因特网协议(ip)-san,其使用传输控制 协议(tcp)/ip网络并且根据tcp/ip上的scsi或因特网scsi(iscsi)协 议来实现。在另一实施例中,网络3300可以是通用网络,例如tcp/ip网络。 例如,可以根据诸如以太网上的fc(fcoe)、网络附加存储(nas)和结构上 的nvme(nvme-of)之类的协议来实现网络3300。
[0186]
在下文中,将描述应用服务器3100和存储服务器3200。应用服务器3100 的描述可以应用于另一应用服务器3100n,并且存储服务器3200的描述可以 应用于另一存储服务器3200m。
[0187]
应用服务器3100可以通过网络3300将用户或客户端请求存储的数据存 储在存储服务器3200至3200m中的一个。此外,应用服务器3100可以通过 网络3300从存储服务器3200至3200m中的一个获得由用户或客户端请求读 取的数据。例如,应用程序服务器3100可以被实现为网络服务器或数据库管 理系统(dbms)。
[0188]
应用服务器3100可以通过网络3300访问包括在另一应用服务器3100n 中的存储器3120n或存储装置3150n。或者,应用服务器3100可以通过网络 3300访问包括在存储服务器3200至3200m中的存储器3220至3220m或存储 装置3250至3250m。因此,应用服务器3100可以对存储在应用服务器3100 至3100n和/或存储服务器3200至3200m中的数据执行各种操作。例如,应 用服务器3100可以执行用于在应用服务器3100至3100n和/或存储服务器 3200至3200m之间移动或复制数据的指令。在这种情况下,可以将数据从存 储服务器3200至3200m的存储装置3250至3250m通过存储服务器3200至 3200m的存储器3220至3220m或直接移动到应用服务器3100至3100n的存 储器3120至3120n。通过网络3300移动的数据可以是为了安全或隐私而加 密的数据。
[0189]
现在将以存储服务器3200为例进行描述。接口3254可以提供处理器 3210和控制器3251之间的物理连接以及网络接口卡(nic)3240和控制器 3251之间的物理连接。例如,可以使用直接附加存储(das)方案来实现接 口3254,其中存储装置3250直接与专用电缆连接。例如,接口3254可以通 过使用各种接口方案来实现,例如ata、sata、e-sata、scsi、sas、
pci、 pcie、nvme、ieee 1394、usb接口、sd卡接口、mmc接口、emmc接口、ufs 接口、eufs接口和cf卡接口。
[0190]
存储服务器3200可以进一步包括开关3230和网络互连(nic)3240。开 关3230可以经由处理器3210的控制来选择性地将处理器3210连接到存储装 置3250,或者选择性地将nic 3240连接到存储装置3250。
[0191]
在一实施例中,nic 3240可以包括网络接口卡和网络适配器。nic 3240 可以通过有线接口、无线接口、蓝牙接口或光接口连接到网络3300。nic 3240 可以包括内部存储器、数字信号处理器(dsp)和主机总线接口,并且通过主 机总线接口连接到处理器3210和/或开关3230。主机总线接口可以被实现为 接口3254的上述示例之一。在一实施例中,nic 3240可以与处理器3210、 开关3230和存储装置3250中的至少一个集成。
[0192]
在存储服务器3200至3200m或应用服务器3100至3100n中,处理器可 将命令发送到存储装置3150至3150n和3250至3250m或存储器3120至3120n 和3220至3220m并编程或读取数据。在这种情况下,数据可以是通过ecc引 擎校正了错误的数据。数据可以是对其执行数据总线倒置(dbi)操作或数据 掩蔽(dm)操作的数据,并且可以包括循环冗余编码(crc)信息。数据可以 是为了安全或隐私而加密的数据。
[0193]
存储装置3150至3150n和3250至3250m可以响应于从处理器接收到的 读取命令向nand闪存装置3252至3252m发送控制信号和命令/地址信号。因 此,当从nand闪存装置3252至3252m读取数据时,可以输入读取使能(re) 信号作为数据输出控制信号,因此,可以将数据输出至dq总线。可以使用 re信号产生数据选通信号dqs。取决于写入使能(we)信号的上升沿或下降 沿,命令和地址信号可以锁存在页面缓冲器中。
[0194]
控制器3251可以控制存储装置3250的所有操作。在一实施例中,控制 器3251可以包括sram。控制器3251可以响应于写入命令将数据写入到nand 闪存装置3252,或者响应于读取命令从nand闪存装置3252读取数据。例如, 可以从存储服务器3200的处理器3210、另一存储服务器3200m的处理器 3210m或应用服务器3100和3100n的处理器3110和3110n提供写入命令和/ 或读取命令。dram 3253可以临时存储(或缓冲)要写入到nand闪存装置3252 的数据或从nand闪存装置3252读取的数据。并且,dram 3253可以存储元 数据。这里,元数据可以是用户数据或由控制器3251生成的用于管理nand 闪存装置3252的数据。存储装置3250可以包括用于安全性或隐私性的安全 元件(se)。
[0195]
例如,存储装置3150至3150n和存储装置3250至3250m均可以包括作 为高速存储装置的第一存储装置和比第一存储装置慢的第二存储装置。第二 存储装置可以具有比第一存储装置更大的容量。例如,第一存储装置可以是 scm、三星z-ssd、pram、slc ssd等,第二存储装置可以是mtc ssd、tlc ssd、 qlc ssd、hdd等。第一存储装置可以是缓存设备,第二存储装置可以是存储 设备。处理器3110至3110n和3210至3210m可以控制应用服务器3100至 3100n和存储服务器3200至3200m以与数据缓存的方法一致的方式读取储存 储装置3150至3150n和存储装置3250至3250m中的信息以及将信息存储在 存储装置3150至3150n和存储装置3250至3250m中。
[0196]
根据实施例,提供了一种存储有计算机程序的计算机可读存储介质,其 中,当所述计算机程序被处理器执行时实现如上所述的数据缓存的方法。
[0197]
根据实施例,提供了一种存储有计算机程序的计算机可读存储介质,其 中,当所
述计算机程序被处理器执行时控制所述处理器执行包括以下步骤的 方法:获取访问请求对应的数据的缓存价值;基于所述缓存价值是否满足预 设条件,确定是从缓存设备访问所述访问请求对应的数据还是从存储设备访 问所述访问请求对应的数据。
[0198]
根据实施例,提供了一种电子设备,包括:处理器;存储器,存储有计 算机程序,当所述计算机程序被处理器执行时,实现如上所述的数据缓存的 方法。
[0199]
根据本公开的实施例,还可提供一种存储指令的计算机可读存储介质, 其中,当指令被至少一个处理器运行时,促使至少一个处理器执行根据本公 开的实施例的数据缓存的方法。这里的计算机可读存储介质的示例包括非暂 时性介质,诸如:只读存储器(rom)、随机存取可编程只读存储器(prom)、 电可擦除可编程只读存储器(eeprom)、随机存取存储器(ram)、动态随 机存取存储器(dram)、静态随机存取存储器(sram)、闪存、非易失性 存储器、cd-rom、cd-r、cd r、cd-rw、cd rw、dvd-rom、dvd-r、 dvd r、dvd-rw、dvd rw、dvd-ram、bd-rom、bd-r、bd-r lth、 bd-re、蓝光或光盘存储器、硬盘驱动器(hdd)、固态硬盘(ssd)、卡式 存储器(诸如,多媒体卡、安全数字(sd)卡或极速数字(xd)卡)、磁带、 软盘、磁光数据存储装置、光学数据存储装置、硬盘、固态盘以及任何其他 装置,所述任何其他装置被配置为以非暂时性方式存储计算机程序以及任何 相关联的数据、数据文件和数据结构并将所述计算机程序以及任何相关联的 数据、数据文件和数据结构提供给处理器或计算机使得处理器或计算机能执 行所述计算机程序。上述计算机可读存储介质中的计算机程序可在诸如客户 端、主机、代理装置、服务器等计算机设备中部署的环境中运行,此外,在 一个示例中,计算机程序以及任何相关联的数据、数据文件和数据结构分布 在联网的计算机系统上,使得计算机程序以及任何相关联的数据、数据文件 和数据结构通过一个或多个处理器或计算机以分布式方式存储、访问和执行。
[0200]
在一些实施例中,由图2-8中所示的块表示的组件、元件、模块或单元 中每一个可被实现为执行根据示例实施例的上述相应功能的各种数量的硬件、 软件和/或固件结构。例如,这些组件、元件、模块或单元中的至少一个可以 包括包含数字电路、可编程或非可编程逻辑器件或阵列、专用集成电路(asic) 或其他使用的电路直接电路结构的各种硬件组件,诸如存储器、处理器、逻 辑电路、查找表等,其可以通过一个或更多个微处理器或其他控制设备的控 制来执行相应的功能。此外,这些组件、元件、模块或单元中的至少一个可 以包括包含用于执行指定逻辑功能的一个或更多个可执行指令,并由一个或 更多个微处理器或其他控制设备执行的模块、程序或代码的一部分。此外, 这些组件、元件、模块或单元中的至少一个还可包括由诸如执行相应功能的 中央处理单元(cpu)、微处理器等的处理器或可以由诸如执行相应功能的中央 处理单元(cpu)、微处理器等的处理器来实现。示例实施例的功能方面可以在 在一个或更多个处理器上执行的算法中实现。此外,由块或处理步骤表示的 组件、元件、模块或单元可以采用用于电子配置、信号处理和/或控制、数据 处理等的任何数量的相关技术。
[0201]
以上描述中提供的每个实施例不排除与同样在本文中提供或在本文中未 提供但与本发明构思一致的另一示例或另一实施例的一个或更多个特征相关 联。例如,即使在一实施例的用于数据缓存的装置中描述的事项在另一实施 例的用于数据缓存的装置中没有被描述,所述事项也可以被理解为与不同的 示例或实施例相关或与不同的示例或实施例可组合,除非在其描述中另有说 明。此外,应该理解的是,本发明构思的原理、方面、示例和
具体实施例的 所有描述旨在涵盖其结构和功能等价物。此外,这些等价物应被理解为不仅 包括目前公知的等价物,还包括未来将被开发的等价物,即,所有被发明用 于执行相同功能的装置,而不管其结构如何。
[0202]
尽管已经具体示出和描述了实施例的方面,但是应当理解,在不脱离所 附权利要求的精神和范围的情况下,可以在其中对形式和细节进行各种改变。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献