专利名称:降级数据的方法和系统的制作方法
技术领域:
本发明涉及使用不同算法从高速緩存降级不同类型数据的方法、 系统和制品。
背景技术:
在收到的指向存储设备的写入数据已写入高速緩存时,高速緩存 管理系统向写请求返回完成,然后将写入数据写出到存储设备,比如 硬盘驱动器。典型情况下,写入存储设备的等待时间显著长于写入高 速緩存的等待时间。因此,在写入数据写入到存储设备之前返回完成 缩短了写入等待时间,并且返回完成比数据写入存储设备后再返回完 成更快。高速緩存管理系统可以保持链接列表,对高速緩存中存储的每个 数据单元都有一个条目,它们可以包括写入存储设备之前在高速緩存中緩冲的写入数据或读取数据。以常用的最近最少使用(LRU)高速 緩存技术,如果高速緩存中的数据受到访问,即高速緩存"命中", 那么LRU列表中所访问数据的条目就移动到列表的最近最多使用 (MRU)端。如果所请求的数据不在高速緩存中,即高速緩存未中, 那么高速緩存中其条目在列表的LRU端的数据可以被去除(即降级 回存储器),并且升级到高速緩存中的新数据的条目增加到LRU列 表的MRU端。利用这种LRU高速緩存技术,更频繁访问的数据很可 能保留在高速緩存中,而不太频繁访问的数据将更可能从列表的LRU 端去除,以便在高速緩存中为新近访问的数据腾出空间。LRU高速緩存技术寻求优化时间局域性,使最不可能近期重写 的数据降级,以便使降级操作的次数最少,换言之,如果未降级的写 入被重写,那么就避免了所重写的写入的降级,因此节省了从高速緩存将数据写入磁盘的时间和努力。另一方面也需要降级的方式充分利 用空间局域性,这表明数据写入到彼此最靠近的存储位置,以便使存 储设备写入机构和存储介质为了到达要写入的下 一个存储位置需要移 动的距离最小。对时间和空间局域性都充分利用的 一 种技术是明智写入排序(Wise Ordering for Writes ) ( WOW )算法。WOW算法釆用循环 链接的列表或时钟表,其中循环链接的列表对高速緩存中緩冲的每个 写请求都有一个条目。根据相关联写请求指向的存储位置对链接的列 表中的这些条目进行排序,以充分利用空间局域性的益处。另外,每 个条目都包括一个数位,表明高速緩存中该存储位置的写入数据是否 最近已经更新。当条目的写入数据更新时设置该条目的该数位。指针指向循环链接的列表中的当前条目。使用wow算法的任务访问该指针指明地址的条目。如果该条目的该数位表明高速緩存中该条目的数 据最近已经更新,那么该数位就设置为表明写入数据最近没有更新, 指针增大以指向下一个条目,以便使考虑的条目所具有的写入数据的 存储位置在空间邻近程度上次最邻近先前写入的存储位置。选定要写 入的条目在空间邻近程度上最邻近最后写入的存储位置,并且其数位 表明该条目的写入数据最近没有更新。因此,利用wow算法,充分利用了空间局域性,因为选定要写入的下一个条目时考虑了在空间邻近程度上最邻近最后降级的写请 求。另外,也充分利用了时间局域性,因为将跳过最近已经写入的条 目,直至指针循环回到跳过的条目再考虑。发明内容提供了方法、系统和制品,使用不同的算法从高速緩存降级不同 类型的数据。第一降级算法用于在第一持续时间将第一类型的数据降 级到某存储器。第二降级算法用于在第二持续时间将第二类型的数据 降级到所述存储器。在进一步的实施例中,所述持续时间包括多个降级操作。在进一步的实施例中,对执行所述第一降级算法降级所述第一类 型的数据确定要分配的任务的第一数目,其中使用任务的所述第一数 目计算所述第 一持续时间。对执行所述第二降级算法降级所述第二类 型的数据确定要分配的任务的第二数目,其中使用任务的所述第二数 目计算所述第二持续时间。在进一步的实施例中,所述确定的任务的第一和第二数目用于确 定在所述第 一持续时间执行所述第 一降级算法降级所述第 一类型的数 据和在所述第二持续时间执行所述第二降级算法降级所述第二类型的 数据所用任务的派生数目。在进一步的实施例中,所述第一类型的数据包括写入易失性存储 器设备的数据,所述第二类型的数据包括写入非易失性存储器设备的 数据。在进一步的实施例中,所述第一和第二降级算法中的至少一个包 括空间降级算法,它根据写入数据在存储器上的位置对所述写入数据 排序以降级。在进一步的实施例中,多个存储组被配置在存储器中,其中所述 第一类型的数据从第一高速緩存降级到所述存储器中的所述存储组, 所述第二类型的数据从第二高速緩存降级到所述存储器中的所述存储 组。所述第一降级算法包括空间降级算法,它根据要写入所述存储组 的所述第一类型的数据在所述第一高速緩存中的百分比占用率为多个 所述存储组中的每一个确定向其中 一个所述存储组分配任务的数目。 向一个存储组分配的每个任务将所述第一类型的数据从所述第一高速 緩存降级到所述存储組。在进一步的实施例中,向一个存储组分配的任务的所述数目是根 据所述第一类型的数据在所述第一高速緩存中的所述百分比占用率、 所述第一类型的数据关于所述存储组的高低阈值以及所述第一高速緩 存的总占用率。在进一步的实施例中,所述第二降级算法实施由所述笫一降级算 法实施的所述空间降级算法,以确定向所述存储组分配任务的数目,将所述第二类型的数据从所述第二高速緩存降级到所述存储组。在进一步的实施例中,对于所述多个存储组中的每一个都有所述 第一和第二类型数据的第一和第二持续时间。对于所述多个存储组中 的每一个存储组,所述第一降级算法用于确定为了将所述第一类型的 数据降级到所述存储组而使用的任务的第一数目,其中使用为所述存 储组确定的任务的所述第一数目计算所述存储组的所述第一持续时 间。所述第二降级算法用于确定为了将所述第二类型的数据降级到所 述存储组而使用的任务的第二数目,其中使用为所述存储组确定的任 务的所述第二数目计算所述存储组的所述笫二持续时间。在进一步的实施例中,为一个存储组确定任务的所述第一数目进 一步包括使用所述存储组的高低阈值以及所述存储组的所述第一类型 的数据在所述第一高速緩存中的百分比占用率。为一个存储组确定任 务的所述第二数目进一步包括使用所述存储组的高低阈值以及所述存 储组的所述第二类型的数据在所述第二高速緩存中的百分比占用率。在进一步的实施例中,所述第一高速緩存和第一降级算法所用的 所述高低阈值高于所述第二高速緩存所用的所述高低阈值,其中所述 第一高速緩存具有的存储容量大于所述第二高速緩存。在进一步的实施例中,响应某事件而定期重算所用的任务的所述 第一和第二数目以及所述第一和第二持续时间。在进一步的实施例中,所述存储器包括至少一个冗余磁盘阵列(RAID ),其中每个存储組都包括一个RAID列。
图l展示了计算环境的实施例;图2展示了管理高速緩存中写请求的高速緩存索引条目的实施例;图3展示了存储组列表中条目的实施例;图4展示了高速緩存管理所用的存储组信息的实施例;图5展示了高速緩存管理所用的高速緩存信息的实施例;图6展示的操作实施例用于确定为了将高速緩存中的写请求降级 到存储组而使用的任务的数目;图7展示的操作实施例用于从高速緩存将写请求降级;图8展示了计算环境的附加实施例;图9展示的操作实施例用于从多个高速緩存将数据降级;图10展示了从多个高速緩存将数据降级时使用的存储组降级信 息的实施例;图11展示的实施例用于确定从多个高速緩存降级时降级操作的 任务数目和持续时间;图12展示的操作实施例用于从将写请求降级到多个高速緩存。
具体实施方式
图1展示了计算环境的实施例。系统2包括一片或多片处理器4a、 4b…4n,其中每片处理器4a、 4b…4n都为降级写请求和执行其他操 作提供处理资源。高速緩存管理器14处理I/O请求并在内存12的高 速緩存10部分中緩存指向存储器6的写请求,它们可以从主机系统(未 显示)和/或处理器4a、 4b…4n收到。高速緩存管理器14响应所收到 的写请求,会响应向高速緩存10添加该写请求而向该写请求返回完 成。内存12可以包括由处理器4a、 4b…4n临时存储数据所用的一个 或多个内存设备,包括易失性或非易失性存储器以及板上存储器,如 L2高速緩存。高速緩存10由内存中在写请求被降级到存储器6之前 对其进行緩存的部分组成。高速緩存管理器14在内存12中保持着存储组列表16a、 16b… 16n,比如循环表、时钟表或其他数据结构,以便管理高速緩存10中 緩冲的写入请求。每个存储组列表16a、 16b…16n都包括指针18a、 18b…18n,比如时钟指针,指向列表16a、 16b…16n中的条目。高速緩存管理器14进一步保持着高速緩存索引20,它具有高速 緩存10中保持的、指向存储器6的写请求的信息。高速緩存索引20 指明来自存储器6中某具体地址或位置的数据是否在列表16a、 16b…16n之一的条目中标识。存储地址或位置可以包括存储器6中磁道、 块、页或任何其他数据区段。高速緩存索引20向列表16a、 16b…16n之一中的若干条目提供 了存储器6中的若干存储地址的索引,用于到存储地址的写请求。高 速緩存索引20可以包括散列表或其他适宜的索引数据结构。存储器6可以包括一个或多个存储设备,比如一部或多部磁盘驱 动器、存储设备阵列,比如仅仅一串磁盘(JBOD)、直接存取存储 设备(DASD)、冗余阵列磁盘(RAID)、虚拟设备、磁带存储器、 闪存等。在一个实施例中,存储器6划分为若干分开的存储组22。每 个存储组22都可以包括一组存储设备,比如磁盘驱动器等。如果存储 器6被配置为RAID设备,那么每个存储组22都可以包括一个RAID 列。RAID列是一组磁盘,数据集在其上呈条带跨越,并且该数据集 的奇偶校验数据保持在该列中。写入RAID列中每台磁盘的数据或奇 偶校验被称为条带,其中条带由写入存储设备列中单一磁盘的若干连 续扇区组成,数据和奇偶校验信息跨越其写入。高速緩存管理器14保持着高速緩存管理信息24,包括每个存储 组22和高速緩存10的信息,用于管理高速緩存IO中的写请求。内存12可以由一个或多个内存i殳备组成,它比存储器6具有更 高的呑吐量和更快的访问速度。在替代实施例中,内存12和存储器6 可以由业内/>知的任何适宜的计算机可读介质组成,以至于一种计算 机可读介质用作I/O请求指向的另一种计算机可读介质的快速访问高 速緩存。处理器4a、 4b…4n可以由若干分开的微处理器器件组成, 也可以由实现在一片或多片多核微处理器器件上的若干分开的处理核 组成。高速緩存管理器14可以实施为一片或多片处理器4a、 4b…4n 执行的计算机程序,也可以实施在内存12的硬件中。在一个实施例中,系统2可以由存储控制器组成,从多台连接的 主机接收指向存储器6的读或写请求。在一个实施例中,高速緩存管理器14可以为存储器6中的每个 存储组22保持着分开的存储组列表16a、 16b…16n。在一个实施例中,每个列表16a、 16b…16n都包括与高速緩存10中到存储组22的写请 求相关联的若干条目的循环链接列表。所述条目可以按存储组22中的 存储位置存储,由所述条目表示的写请求指向该位置,也就是提供了 空间局域性。高速緩存管理器14可以产生若干任务,比如处理器4a、 4b…4n中的线程,以便处理一个存储组列表16a、 16b…16n,其中任 务将通过存储组列表16a、 16b…16n中的若干条目顺序地继续下去, 以便将若干写请求降级到存储组22中空间上邻近的存储位置,也就是 说,写请求的降级指向存储组22中空间上最邻近先前降级的写请求存 储位置/地址的存储位置或地址。对于一定的存储设备,比如硬盘驱动 器或其他磁性存储介质,通过将数据写入到最邻近先前写入的数据, 以便使写磁头机构或存储介质在访问下一个写地址时寻找或旋转所需 要移动的距离最小,优化了数据的吞吐量。图2展示了高速緩存索引20中高速緩存索引条目30的实施例, 它指明了高速緩存的存储位置32,比如在存储组22之一中的存储地 址;存储组列表34,标识着具有高速緩存的存储位置32条目的列表 16a、 16b…16n;以及条目36,高速緩存的存储位置32在所指明的列 表34中的位置。高速緩存索引20可以包括散列表,其条目的索引是根据存储位 置32的混编。作为替代,高速緩存索引20也可以实施在业内公知的 散列表以外的适宜的索引类型数据结构中。图3展示了存储组列表条目70的实施例,包括存储组列表16a、 16b…16n中条目的条目号72;存储组22中写请求指向的存储位置74 或地址(如上所述,列表16a、 16b…16n中的条目可以按存储位置/ 地址分选);以及更新数位76,指明写请求数据最近是否已经被更新, 即被向同一的存储位置的随后写请求重写。图4展示了高速緩存管理器14为每个存储组22保持的存储组信 息90的实施例。用于一个存储组22的存储组信息卯包括低阈值92 和高阈值94,它们可以表明高速緩存10中对存储组的写请求可以占 用的默认百分比或量;存储组高速緩存P艮度96,它表明高速緩存10中对存储组的写请求可以占用的最大量;调整后的低阈值98和调整后 的高阈值100,包括对低阈值92和高阈值94应用因子的结果,以根 据高速緩存10的总利用率调整操作期间使用的阈值98和阈值100; 为该存储组降级写请求所用的并发任务102的最大数目;以及存储组 高速緩存占用率104,它表明了为该存储组的写请求占用的高速緩存 10的量或百分比。在一个实施例中,存储组高速緩存限度96可以包括用于全部存 储组22的全局值,使得任何存储组在高速緩存10中具有的写请求的 量或百分比都不会超过这个全局高速緩存限度96。另外,每个存储组 高阈值94都可以设置为小于或等于全局高速緩存限度96。提供全局 高速緩存限度96确保任何单一存储组都不会支配高速緩存10,即具 有占用高速緩存太大比例的写请求。如果某存储组22出现故障,那么 向这个故障存储组22的写入需要保持在高速緩存10中,直到能够将 它们降级。如果一个单一存储组22支配着高速緩存10然后出现故障, 那么向故障存储组的写入占用高速緩存太大比例,可能使向可用存储 组22的写请求无法添加到高速緩存10中,尤其是在关于可用存储组 22的工作负荷增加时。如果写请求无法緩存,那么就无法向启动这个 写请求的过程或主一几返回完成状态。调整后的低阈值98和高阈值100用于调节和确定为一个存储組 分配的降级写请求的并发任务数目。如果存储组22的占用量相对逼近 高阈值100,那么高速緩存管理器14可以力图增加为这个存储组22 分配的任务数目,以避免达到该阈值。如果存储组22的高速緩存10 占用量相对逼近低阈值98,那么高速緩存管理器14可以力图减少为 这个存储组22分配的任务数目,以避免达到该低阈值。在一定的实施 例中,存储组低阈值用于确保在高速緩存10中有足够数目的写请求处 于等待状态,以至于若干写入可以写入到存储组22中空间上邻近的存 储位置,以提高写入吞吐量。写入吞吐量随等待的写请求数目的增加 而提高,因为在更邻近位置处写入的概率在增加,它减少了存储设备 将写入机构和/或存储介质(如磁盘或磁带)定位到写入该数据的存储位置所需要的寻找时间和距离。图5展示了高速緩存管理器14保持的高速緩存信息110的实施 例,用于管理全部存储组22的高速緩存10的总体占用量。高速緩存 低阈值112和高阈值114表明全部存储组的写请求可以占用的高速緩 存10的百分比或量;高速緩存占用率116表明全部存储组22的写请 求占用高速緩存IO的量,如百分比或绝对量;调整因子118包括根据 当前高速緩存占用率116动态计算的值,它被应用到存储组低阈值92 和高阈值94,以产生调整后的低阈值98和高阈值100,用于确定为存 储组22降级若干写入分配的任务数目。调整因子118可以应用于全部 或部分存储组的阈值。在一定的实施例中,调整因子118可以包括0至1之间的值。如 果高速緩存占用率116相对逼近高速緩存高阈值114,那么高速緩存 管理器14可以力图将调整因子降低逼近0,当应用到(如乘以)存储 组22低阈值92和高阈值94时,使阈值比如高阈值降低。这确保了分 配更多的任务为存储组处理降级请求,因为随着存储组高速緩存占用 率104朝着向下调整后的存储组高阈值100增加,向存储組分配了更 多的任务。如果高速緩存占用率116相对逼近高速緩存的低阈值112, 那么高速緩存管理器14可以力图将调整因子提高到1,当应用到(如 乘以)存储組22低阈值92和高阁值94时,提高了调整后的阈值98 和IOO,比如高阈值IOO。这确保了分配相对更少的任务为存储组处理 降级请求,因为随着存储组高速緩存占用率104进一步地远离存储组 高阈值94,向存储组分配了更少的任务。通过降低向降级请求分配的 任务数目,降低了处理降级请求的速率,使等待的写请求数目的逐渐 增加。如以上讨论,增加等待的写请求的数目可以提高降级的写请求 在空间邻近程度上更邻近的概率,以便改进存储设备的写入吞吐量。图6展示了由高速緩存管理器14执行的若干操作的实施例,以 产生若干任务,对在存储组列表16a、 16b…16n中标识的若干写请求 执行降级请求。图6的若干操作可以定期启动,只要高速緩存占用率 116改变了指定量或响应某种其他事件。(在方框200)启动操作时,高速緩存管理器14 (在方框202)确定高速緩存占用率116,写请求 占用高速緩存10的量/百分比和可选情况下的其他信息。如果(在方 框204)高速緩存占用率116大于或等于高速緩存高阈值114,那么就 (在方框206)将调整因子118设置为0,使为了处理I/0请求而产生 的任务数目最大,努力降低高速緩存占用率116。如果(在方框208) 高速緩存占用率116小于或等于高速緩存低阁值112,那么就(在方 框210)将调整因子118设置为1,以相对减少所产生的任务数目,降 低降级请求处理的速率,提高高速緩存占用率116,改进高速緩存IO 中緩冲的写请求的空间局域性。如果高速緩存占用率116在高速緩存低阈值112和高阈值114之 间(来自方框208的否分支),那么高速緩存管理器14就(在方框 212)在0与l之间确定调整因子118。随着高速緩存占用率116的降 低,调整因子118可以在0到l之间增加。在一个实施例中,调整因 子118可以包括高速緩存占用率116在高速緩存的低阈值112与高阈 值114之间的百分比距离,如(高速緩存高阈值114-高速緩存占用率 116) / (高速緩存高阈值114-高速緩存低阈值112)。若干替代技术 可以用于确定调整因子118。例如,表格可以为高速緩存低阈值112 与高阈值114之间不同的数值范围提供0到1之间的不同调整因子 118。根据当前的高速緩存占用率116关于高速緩存低阈值112和高阈 值114确定了调整因子118之后,高速緩存管理器14对要为其产生若 干任务的每个存储组22都执行方框214到232的若干操作,它可以包 括全部当前可用的存储组22。在方框216,高速緩存管理器14将调整 因子118乘以存储组低阈值92和高阈值94,为该存储组产生调整后 的低阈值98和高阈值100。高速緩存管理器14 (在方框218)进一步 确定存储组高速緩存占用率104,如所考虑的存储组22的写请求占用 高速緩存10的量或百分比。如果(在方框220 )存储组高速緩存占用 率104大于或等于存储组调整后的高阈值100,那么就(在方框222) 将该存储组的任务设置为该存储组允许的任务102的最大数目。如以上讨论,每个存储组对低阈值92和高阈值94以及最大数目任务102 都可以具有相同的或不同的数值。如果(在方框224)存储组高速緩 存占用率104小于或等于调整后的低阈值98,那么高速緩存管理器14 就(在方框226)将该存储组的任务设置为0,以便允许存储组22的 等待的写请求的数目增加。如果存储组高速緩存占用率104在调整后的低阈值98和高阈值 100之间(来自方框224的否分支),那么高速緩存管理器14就(在 方框228)在0与该存储组允许的任务102的最大数目之间确定任务 的数目。在0与任务102的最大数目之间的任务随着存储组的高速緩 存占用量的增加而增加,随着存储组的高速緩存占用量的减少而减少。 然后高速緩存管理器14 (在方框230)产生所确定数目的任务,以处 理存储组的若干降级请求。以图6描述的实施例,随着高速緩存总占用率116的增加,存储 组阈值98和100可以按比例地降低,以提高为这个存储组22产生的 任务数目,因为对存储组分配的任务数目可以随着存储组高速緩存占 用率104逼近其调整后的高阈值100而按比例地增加。随着存储组工 作负荷和等待的写请求数目的增加,需要更多的任务。同样,随着高 速緩存总占用率116减少,存储组阈值可以按比例地提高,以便降低 为这个存储組22产生的任务数目,因为对存储组分配的任务数目可以 随着存储组高速緩存阈值逼近其调整后的低阈值98而按比例地降低。 降低任务数目确保了存储组的等待的写请求数目不降到存储组调整后 的低阈值98以下。如以上讨论,可以期望在高速緩存10中保存着一 定水平的等待写请求,以提高若干写请求指向的若干存储位置的空间 邻近性,以便改进在存储器的存储设备处的写入吞吐量。图7展示的操作实施例由为存储组22产生的每个任务执行,以 处理降级请求。(在方框250)任务启动降级操作时,该任务(在方 框252)访问由指针18a、 18b…18n所指向的存储组列表16a、 16b… 16n中的条目,如头条目。如果(在方框254)用于条目70的更新数 位76已设置为指明用于写请求的存储位置74最近已经被更新,那么该任务便(在方框256)将所访问条目70的数位76设置为指明该存 储位置74尚未被更新并(在方框258)递增指针18a、 18b…18n,以 便指向列表16a、 16b…16n中的下一个条目,它可能包括其存储位置 在空间邻近程度上最邻近存储组22中先前写请求被降级的存储位置 的条目。然后控制返回到方框252,考虑列表16a、 16b…16n中的下 一个条目。如果(在方框254 )更新数位76未被设置,那么该任务(在 方框260)将所访问条目的写请求降级到存储位置54,并且(在方框 262)从列表16a、 16b…16n中去除该条目。在操作期间,高速緩存管理器14可以执行图6中操作的另一种 迭代,以便对每个存储组的任务数目进行更新时考虑高速緩存中的条 件变化,比如高速緩存10总占用率的变化或对每个存储组的存储组高 速緩存占用率104 (图4)的变化。高速緩存管理器14可以在预定时 间间隔或响应总的或存储组高速緩存占用率中的百分比变化,执行图 6中的操作。利用图7的操作,更新数位76用于提供时间局域性,使最近刚 访问/更新的条目留在高速緩存10中,以改进高速緩存"命中"的概 率,也就是随后读或写请求将指向高速緩存10中已经保持数据的概 率。提高"高速緩存命中"概率降低了执行降级操作将高速緩存10 中很可能要被更新或修改的写请求降级的需要。以这种方式,存储组 列表16a、 16b…16n为每个存储组对高速緩存10中保持的写请求都 提供了时间和空间局域性。图8展示了系统300的实施例,包括处理器304a、 304b、 304n、 存储器306、内存312、高速緩存管理器314、高速緩存索引320和存 储组322,它可以包括关于图1介绍的系统2、处理器4a、 4b…4n、 存储器6、内存12、高速緩存管理器14、高速緩存索引20和存储组 22。系统300进一步包括两组存储组列表316a、 316b…316n和318a、 318…318n。高速緩存管理器314使用存储组列表316a、 316b…316n 管理第一高速緩存308中存储的第一类型的修改后数据到存储组322 的降级,高速緩存管理器314使用存储组列表318a、 318…318n管理第二高速緩存310中存储的第二类型的修改后数据到存储组322的降 级。存储组列表316a、 316b. .316n和318a、 318…318n可以具有与 关于图l介绍的存储组列表16a、 16b…16n相同的数据结构,例如, 存储组列表316a、 316b…316n或318a、 318…318n中的条目可以根 据在存储组22中由该条目表示的写请求指向的存储位置进行排序,即 提供空间局域性。在一个实施例中,笫 一 高速緩存308可以包括易失性存储器设备, 比如RAM,它存储着不受保护的修改后数据,而第二高速緩存310 可以包括非易失性存储器设备,它将受保护的写入数据存储到存储器 306。此外,第一高速緩存308具有的存储容量可以比第二高速緩存 310大几倍。高速緩存索引320具有高速緩存308和310中保持的指向存储器 306的写请求的信息。高速緩存索引320指明来自存储器306中具体 地址或位置的数据是否在存储组列表316a、316b…316n或318a、318… 318n之一的条目中标识。存储地址或位置可以包括存储器306中的磁 道、块、页或任何其他数据区段。高速緩存索引320向存储组列表316a、 316b…316n或318a、 318…318n之一中的若干条目提供了存储器306 中的存储地址的索引,分别用于到所述存储地址的第一和第二类型的 写请求。高速緩存管理信息324可以包括高速緩存308、 310两者特定的 信息,比如对于每种高速緩存/修改后数据的类型,每个存储组的存储 组信息90,其中对于不同高速緩存/修改后数据的类型,相同存储组的 存储组信息90 (图4)可以不同。此外,可以有两组高速緩存信息10 (图5), 一组用于第一高速緩存308,另一组用于第二高速緩存310。 对于不同的高速緩存308和310,高速緩存低阈值112和高阈值114 可以不同。例如,如果第一高速緩存308的存储能力显著大于第二高 速緩存310,那么用于第一高速緩存308的低阈值112和高阈值114 可以对应地高于第二高速緩存310的这些值。另外,对于第一高速緩 存308和第二高速緩存310,任务102的最大数目可以不同,使得如果第一高速緩存308的存储能力显著大于笫二高速緩存310,则第一 高速緩存308的任务102的最大数目可以对应地高于较小的第二高速 緩存310的任务102的最大数目,以便处理更多量的数据。高速緩存管理器314可以产生任务,比如处理器304a、 304b… 304n中的线程,以便处理存储组列表316a、316b…316n或318a、318… 318n,其中任务将通过对其分配了若干任务的存储组列表316a、 316b…316n或318a、 318...318n中的若干条目顺序地继续下去,以便 将若干写请求分别从第一高速緩存308或第二高速緩存310降级到存 储组322中空间上邻近的存储位置,也就是"^兌,写请求的降级指向存 储组322中空间上最邻近先前降级的写请求存储位置/地址的存储位置 或地址。对于一定的存储设备,比如硬盘驱动器或其他磁性存储介质, 通过将数据写入到最邻近先前的写入数据,以便使写磁头机构或存储 介质在访问下一个写地址时寻找或旋转所需要移动的距离最小,优化 了数据的吞吐量。图9展示了高速緩存管理器314执行操作的实施例,它协调从第 一高速緩存308和笫二高速緩存310降级若干写入。在高速緩存308 和310中的数据都指向若干存储组322。此外,在一个实施例中,第 一降级算法用于从第一高速緩存308降级第一类型的数据,而第二降 级算法用于从第二高速緩存310降级第二类型的数据。第一和第二算 法可以包括相同或不同的算法。在图8的实施例中,图7的相同算法 用于从第一高速緩存308和第二高速緩存310降级数据。在一个实施例中,第一和第二算法的至少其一包括空间降级算 法,其中"空间降级算法"包括寻求将数据写入若干存储组内顺序或 邻近位置的降级算法,以便通过减少写入下一个存储位置需要寻找或 旋转的时间,优化到包括存储器306的若干存储设备的吞吐量。空间 降级算法的实例包括WOW算法和关于图6和图7所介绍的算法。其 他降级算法也可以包括空间降级算法或不同类型的降级算法,比如充 分利用时间邻近的算法,如LRU算法。在一个实施例中,空间降级 算法可以包括WOW算法、关于图6和图7所介绍的算法或者其他降级算法,它们寻求充分利用写入的空间邻近性,以改进存储器设备的 吞吐量。关于图9,(在方框400)启动降级操作时,高速緩存管理器314 (在方框402)确定要分配的任务的第一数目以执行第一降级算法从 第一高速緩存降级第一类型的数据,并且(在方框404)确定要分配 的任务的第二数目以执行第二降级算法降级第二类型的数据。高速緩 存管理器314可以为每种高速緩存/数据类型、每个存储组确定不同的 任务数目。然后高速緩存管理器314 (在方框406 )产生第一数目的任 务,每个任务都在第一持续时间执行第一降级算法以将第一类型的数 据从第一高速緩存308降级到存储器306。在第一持续时间之后,高 速緩存管理器314 (在方框408 )产生第二数目的任务,每个任务都在 第二持续时间执行第二降级算法以将第二类型的数据从第二高速緩存310降级到存储器。在第二持续时间之后,控制返回到方框312,从第 一高速緩存308降级。对于根据要降级到某存储组的若干写入的存储位置而对写入排 序一个或多个空间降级算法,图9的操作保持了顺序性,因为所述空 间降级算法在不受其他降级算法干扰的持续时间期间内运行,它们可 以将若千写入组织和提交到空间上与其他降级算法发送的若千写入不 相邻的若千存储位置。图9描述的操作防止了一种降级算法将空间随 机性引入到进入存储设备的写入流之中,避免干扰由其他存储设备放 置到写入流之中若干写入的空间邻近性。第一和第二持续时间可以包括时间周期,如时钟周期的数目,也 可以包括降级操作的数目。图10展示了为每种高速緩存/数据类型保持的存储组降级信息 430的实施例,高速緩存管理器314使用它管理从第一高速緩存308 和第二高速緩存310降级数据所用若干降级算法的执行。存储组降级 信息430包括高速緩存432,标识向其应用该信息的高速緩存308、 310;向其应用该信息的存储组434;为了将若干写入从所标识的高速 緩存432降级到所标识的存储组434而执行降级算法所用的任务436的数目;以及持续时间438,在此期间所述数目的任务436将修改后 的数据从所标识的高速緩存432降级到所标识的存储组434。在一个 实施例中,高速緩存管理器314可以为每个存储组322和高速緩存 308、 310保持不同数目的任务436和持续时间438。作为替代,可以 对一个高速緩存308、310对多于一个或全部存储组使用相同数目的任 务436和持续时间438。图11和图12展示了在某实施例中由高速緩存管理器314执行的 操作实施例,其中图7和图8的降级算法用于分别使用第一存储组列 表316a、 316b…316n或第二存储组列表318a、 318…318n将数据从 第一高速緩存308和第二高速緩存310降级,如图1所示。图11展示了由高速緩存管理器314执行的操作实施例,为每种 高速緩存/数据类型确定存储组降级信息430 (图10 )。(在方框450 ) 启动操作为两个高速緩存308、310和存储组322的降级操作而确定任 务436的数目和持续时间438后,高速緩存管理器314 (在方框452 ) 对第一高速緩存308/数据类型执行图6的若干操作,以便为每个存储 组322确定将第一数据类型从第一高速緩存308降级到一个存储组 434时使用的任务436的数目。同样,高速緩存管理器314 (在方框 454)对第二数据类型执行图6的若干操作,以便为每个存储组确定将 第二数据类型从第二高速緩存310降级到该存储组434时使用的任务 436的数目。高速緩存管理器314对每个存储组322都执行方框456至方框 464的操作循环。对不同的存储组执行的方框458至方框462的操作 可以与对不同存储组或相同存储组执行的操作并行地执行,也可以顺 序地执行。在方框458,高速緩存管理器314为第一高速緩存308/第 一数据类型确定存储组434的第一持续时间438,方式为将所确定的 存储组和高速緩存308的任务436的数目与持续时间倍数相乘,其中 持续时间是要执行的多个降级操作。同样,对第二高速緩存310,高 速緩存管理器314(在方框460)确定存储组434的第二持续时间438, 方式为将所确定的存储组和高速緩存310的任务436的数目与持续时间倍数相乘。然后高速緩存管理器314 (在方框462 )确定任务的派生 数目为对第一高速緩存308和第二高速緩存310存储组任务的最大数 目。在一个实施例中,为将数据从第一高速緩存308和第二高速緩存 310降级到一个存储组,高速緩存管理器314可以使用相同的任务派 生数目,以便对存储组应用均匀的降级负载。跨越高速緩存308、 310 使用均匀的降级负栽改进了存储器设备的平均响应时间。最大值以外 的替代技术可以用于确定将两个高速緩存降级到一个存储组所使用的 任务的派生数目。图12展示了由高速緩存管理器314执行的操作实施例,它使用 所确定的存储组降级信息430 (图10),从高速緩存308、 310降级数 据。(在方框500)对于每个存储组322,高速緩存管理器314 (在方 框502)为该存储组产生所述派生数目的任务,使每个产生的任务都 执行图7的操作,对于存储组434和高速緩存432,在第一持续时间 438将第一类型的数据从第一高速緩存308降级到该存储组。第一持 续时间之后,高速緩存管理器314(在方框504)为该存储组产生所述 派生数目的任务,使每个产生的任务都执行图7的操作,对于存储组 434和高速緩存432,在第二持续时间438将第二类型的数据从第二高 速緩存310降级到该存储组。为了考虑对高速緩存308、 310和存储组占用率的任何改变,在 某个点,响应某事件,高速緩存管理器314可以再次执行图11的操作, 为每个高速緩存308、 310重算存储组降级信息430,提供更新的任务 数目436和持续时间438信息。例如,在一个实施例中,触发对存储 组降级信息430重算和图11中操作的事件可以包括时间间隔的到期, 也可以包括高速緩存308、 310之一或二者的高速緩存总占用率或者一 个或多个存储组高速緩存占用率改变了 一定量或百分比。以介绍的实施例,对每个高速緩存的降级执行某持续时间,比如 若干降级或时间周期,然后再切换到从另一个高速緩存降级,使得每 次降级的数据来自 一个高速緩存。这就允许把空间降级算法用于将写 入数据从一个高速緩存降级到邻近的空间位置,而不从另一个高速緩存降级,以免将随机写入模式引入去往存储设备的写入数据流之中。 对来自不同高速緩存的若干写入进行仲裁,保持了一种或多种空间降 级算法写入的空间邻近性,并改进了存储设备的写入吞吐量和性能。其他实施例细节使用生产软件、固件、硬件或其任何组合的标准编程和/或工程 技术可以将所介绍的若干操作实施为方法、装置或制品。所介绍的若 干操作可以实施为"计算机可读介质,,中保存的代码,处理器可以从 计算机可读介质中读取代码并执行。计算机可读介质可以包括若干介 质,比如磁性存储介质(如硬盘驱动器、软盘、磁带等)、光存储器(CD-ROM、 DVD、光盘等)、易失性和非易失性存储器设备(如 EEPROM、 ROM、 PROM、 RAM、 DRAM、 SRAM、闪存、固件、 可编程逻辑等)等。实施所述操作的代码可以进一步实施在硬件逻辑 中(如集成电路芯片、可编程门阵列(PGA)、专用集成电路(ASIC) 等)。不仅如此,实施所述操作的代码可以实施在"传输信号"中, 传输信号可以通过空间或通过传输媒体传播,比如光纤、铜线等。其 中编码了代码或逻辑的传输信号可以进一步包括无线信号、卫星传输、 无线电波、红外信号、蓝牙等。其中编码了代码或逻辑的传输信号能 够由发射站发送,并且被接收站接收,在接收和发射站或设备处传输 信号中编码的代码或逻辑可以被解码并存储在硬件或计算机可读介质 中。"制品"包括其中可以实施代码的计算机可读介质、硬件逻辑和/ 或传输信号。其中编码了实施所述操作实施例的代码的设备可以包括 计算机可读介质或硬件逻辑。当然,本领域的技术人员将理解,对这 种结构可以做出许多修改而不脱离本发明的范围,并且所述制品可以 包括业内公知的适宜的信息承载介质。在介绍的实施例中,为高速緩存中数据存储条目所用的数据结构 或列表包括若干循环表或若干时钟表。在替代实施例中,可以使用其 他适宜的数据结构存储信息条目以管理高速緩存中的数据。不仅如此, 在所介绍的实施例中,存储条目所用的若干数据结构为相同类型。在替代实施例中,存储高速緩存条目所用的多个数据结构可以是混合的 类型。在所介绍的实施例中,不同类型的数据从不同的高速緩存降级。 在替代实施例中,不同类型的数据可以在单一高速緩存中分开管理。在图8至图12所介绍的实施例中,关于两个高速緩存308、 310 介绍了降级。在其他实施例中,可以多于两个高速緩存。在这种情况 下,高速緩存管理器会在确定的持续时间从若干高速緩存的每一个降 级数据,然后改为从其他高速緩存之一进行降级。另外,在一定的实 施例中,高速緩存管理器可以保持着存储组列表,比如存储组列表 316a、 316b…316n或318a、 318…318n,用于三个或多个高速緩存的每 一个,而高速緩存的每一个中都可以保持不同类型的数据。在图8至图12所介绍的实施例中,不同类型的数据包括不同类 型的修改后数据,比如在非易失性存储器设备中保护的写入数据和易 失性存储器设备中不保护的写入数据。在替代实施例中,高速緩存也 可以保持另外的不同类型的修改后数据。术语"某实施例"、"实施例"、"若干实施例"、"本实施例"、"这些实施例"、"一个或多个实施例"、"某些实施例"和"一个实施例,,意味着"本发明的一个或多个(但不是全部的)实施例",除非另外特别指定。术语"包括"、"包含"、"具有"以及其变种意^^木着"包括但不限于",除非另外特别指定。若干零部件的列举表并不暗示任何或全部零部件是互斥的,除非另外特别指定。术语"某"和"本"意味着"一个或多个",除非另外特别指定。 当变量"n"和"m"用于表示元素的可变数量时,可以表明该元素任何数量的事例,并且在用于不同元素时可以表明不同的整数数量。彼此通信的若干设备不必彼此进行连续不断地通信,除非另外特 别指定。此外,彼此通信的若干设备可以直接通信,也可以通过一个或多个中介物间接通信。对具有彼此通信的几个组件的实施例的说明并不暗示需要所有 这样的组件。相反,介绍了各种各样的可选组件,以展示本发明的可 能实施例的多种多样。此外,虽然可以按连续的次序说明处理步骤、方法步骤、算法等, 但是这样的处理、方法和算法也可以配置为以交替的次序进行。换言 之,可以说明的步骤的任一序列或次序不 一定表明必须以这种次序执 行这些步骤。本文介绍的若干处理步骤可以按实用的任何次序执行。 另外,某些步骤可以同时执行。在本文介绍单一设备或零件时,显而易见多于一台设备/零件(无 论它们是否合作)可以用于取代单一设备/零件。同样,在本文介绍多 于一台设备或零件(无论它们是否合作)之处,显而易见单一设备/ 零件可以用于取代多于 一 台设备或零件,或者可以使用不同数量的设 备/零件,而不是所示数量的设备或程序。设备的功能和/或特征可以 替代地由未明确介绍为具有这样的功能和/或特征的一个或多个其他 设备实施。所以本发明的其他实施例不需要包括该设备本身。图2至图5和图10的数据结构显示了一定的信息。不过,图2 至图5和图IO的数据结构中显示的信息也可以连同其他信息,以不同 的格式和组合保持在更少或更多的数据结构中。图6、图7、图9、图11和图12展示的操作显示了以一定次序发 生的某些事件。在替代实施例中,某些操作可以按不同的次序执行、 修改或去除。另外,可以向以上介绍的逻辑增加步骤并仍然符合所介 绍的实施例。此外,本文介绍的若干操作可以顺序地发生,某些操作 也可以并行地处理。再有,若干操作可以由单处理单元执行,也可以 由分布式处理单元执行。为了展示和说明的目的已经呈现了本发明多种实施例的以上说 明。这不意味着面面俱到或者把本发明严格限制在所公开的形式。按 照以上讲授,许多修改和变化都是可能的。我们的意以上说明书、实例和数据对本发明布局的制造和使用提供了完整的说 明。由于能够做出本发明的许多实施例而不脱离本发明的实质和范围, 所以本发明属于后文附带的权利要求书。
权利要求
1.一种连接到存储器的系统,包括至少一个高速缓存;连接到所述至少一个高速缓存的高速缓存管理器,它能够执行若干操作,所述操作包括在第一持续时间使用第一降级算法将第一类型的数据从所述至少一个高速缓存之一降级到所述存储器;以及在第二持续时间使用第二降级算法将第二类型的数据从所述至少一个高速缓存之一降级到所述存储器。
2. 根据权利要求1的系统,其中,所述持续时间包括多个降级操作。
3. 根据权利要求l的系统,其中,所述操作进一步包括 确定要分配的任务的第一数目以执行所述第一降级算法降级所述第一类型的数据,其中使用任务的所述第一数目计算所述第一持续 时间;以及确定要分配的任务的第二数目以执行所述第二降级算法降级所 述第二类型的数据,其中使用任务的所述第二数目计算所述第二持续 时间。
4.根据权利要求1的系统,其中,所述至少一个高速緩存包括 向其写入所述第一类型的数据的易失性存储器设备和向其写入所述第二类型的数据的非易失性存储器设备。
5. 根据权利要求1的系统,其中,所述第一和第二降级算法中 的至少一个包括空间降级算法,它根据写入数据在存储器上的位置对 所述写入数据排序以降级。
6. 根据权利要求1的系统,其中,所述至少一个高速緩存包括 第 一 高速緩存和第二高速緩存,多个存储組被配置在所述存储器中, 其中所述第 一类型的数据从所述第 一 高速緩存降级到所述存储器中的 所述存储组,所述第二类型的数据从所述第二高速緩存降级到所述存储器中的所述存储组,所述第一降级算法包括空间降级算法,它执行: 根据要写入所述存储组的所述第一类型的数据在所述第一高速 緩存中的百分比占用率为多个所述存储组中的每一个确定向其中一个 所述存储组分配任务的数目,向一个存储组分配的每个任务将所述第 一类型的数据从所述第 一 高速緩存降级到所述存储组。
7. 根据权利要求6的系统,其中,向一个存储组分配的任务的 所述数目是根据所述第一类型的数据在所述第一高速緩存中的所述百 分比占用率、所述第一类型的数据关于所述存储组的高低阈值以及所 述第一高速緩存的总占用率。
8. 根据权利要求6的系统,其中,所述第二降级算法实施由所 述第一降级算法实施的所述空间降级算法,以确定向所述存储组分配 任务的数目,将所述第二类型的数据从所述第二高速緩存降级到所述 存储组。
9. 根据权利要求8的系统,其中,对于所述多个存储组中的每 一个都有所述第一和第二类型数据的第一和第二持续时间,对于所述 多个存储组中的每一个存储组,所述操作进一步包括使用所述第一降级算法确定为了将所述第一类型的数据降级到 所述存储组而使用的任务的第一数目,其中使用为所述存储组确定的 任务的所述第一数目计算所述存储组的所述第一持续时间;以及使用所述第二降级算法确定为了将所述第二类型的数据降级到 所述存储组而使用的任务的第二数目,其中使用为所述存储组确定的 任务的所述第二数目计算所述存储组的所述第二持续时间。
10. 根据权利要求9的系统,其中,为一个存储组确定任务的所 述第 一数目进一步包括使用所述存储组的高低阈值以及所述存储组的 所述第一类型的数据在所述第一高速緩存中的百分比占用率,为一个 存储组确定任务的所述第二数目进一步包括使用所述存储组的高低阈 值以及所述存储组的所述第二类型的数据在所述第二高速緩存中的百 分比占用率。
11. 一种方法,包括在第 一持续时间使用第 一 降级算法将第 一类型的数据降级到存储器;以及在第二持续时间使用第二降级算法将第二类型的数据降级到所 述存储器。
12. 根据权利要求11的方法,其中,所述持续时间包括多个降 级操作。
13. 根据权利要求ll的方法,其中,所述操作进一步包括 确定要分配的任务的第一数目以执行所述第一降级算法降级所述第一类型的数据,其中使用任务的所述第一数目计算所述第一持续 时间;以及确定要分配的任务的第二数目以执行所述第二降级算法降级所 述第二类型的数据,其中使用任务的所述第二数目计算所述第二持续 时间。
14. 根据权利要求11的方法,其中,所述第一类型的数据包括 写入易失性存储器设备数据,所述第二类型的数据包括写入非易失性 存储器设备的数据。
15. 根据权利要求11的方法,其中,所述第一和第二降级算法 中的至少一个包括空间降级算法,它根据写入数据在存储器上的位置 对所述写入数据排序以降级。
16. 根据权利要求11的方法,其中,多个存储组被配置在所述 存储器中,其中所述第一类型的数据从第一高速緩存降级到所述存储 器中的所述存储组,所述第二类型的数据从第二高速緩存降级到所述 存储器中的所述存储组,所述第一降级算法包括空间降级算法,它执 行根据要写入所述存储组的所述第一类型的数据在所述第一高速緩存中的百分比占用率为多个所述存储组中的每一个确定向其中一个 所述存储组分配任务的数目,向一个存储组分配的每个任务将所述第 一类型的数据从所述第一高速緩存降级到所述存储组。
17. 根据权利要求16的方法,其中,向一个存储組分配的任务的所述数目是根据所述第 一类型的数据在所述第 一 高速緩存中的所述 百分比占用率、所述第一类型的数据关于所述存储组的高低阈值以及 所述第一高速緩存的总占用率。
18. 根据权利要求16的方法,其中,所述第二降级算法实施由 所述第一降级算法实施的所述空间降级算法,以确定向所述存储組分 配任务的数目,将所述第二类型的数据从所述第二高速緩存降级到所 述存储组。
19. 根据权利要求18的方法,其中,对于所述多个存储组中的 每一个都有所述第一和第二类型数据的第一和第二持续时间,对于所 述多个存储组中的每一个存储组,进行使用所述第一降级算法确定为了将所述第一类型的数据降级到 所述存储组而使用的任务的第一数目,其中使用为所述存储组确定的 任务的所述第一数目计算所述存储组的所述第 一持续时间;以及使用所述第二降级算法确定为了将所述第二类型的数据降级到 所述存储组而使用的任务的第二数目,其中使用为所述存储组确定的 任务的所述第二数目计算所迷存储组的所述第二持续时间。
20. 根据权利要求19的方法,其中,为一个存储组确定任务的 所述第 一数目进一步包括使用所述存储组的高低阈值以及所述存储组 的所述第一类型的数据在所迷第一高速緩存中的百分比占用率,为一 个存储组确定任务的所述第二数目进一步包括使用所述存储组的高低 阈值以及所述存储组的所述第二类型的数据在所述第二高速緩存中的 百分比占用率。
21. —种实施代码的制品,所述代码被使得引起与存储器通信的 若千操作并执行若干操作,所述操作包括以上方法权利要求中任何一个中的步骤。
全文摘要
本发明公开了一种降级数据的方法和系统。提供了方法、系统和制品,使用不同的算法从高速缓存降级不同类型的数据。第一降级算法用于在第一持续时间将第一类型的数据降级到某存储器。第二降级算法用于在第二持续时间将第二类型的数据降级到所述存储器。
文档编号G06F12/08GK101221537SQ20081000244
公开日2008年7月16日 申请日期2008年1月7日 优先权日2007年1月8日
发明者宾尼·S.·吉尔, 布鲁斯·迈克努特, 德哈尔门德拉·莫哈, 托马斯·C.·加尔维斯, 约瑟夫·S.·海德, 迈克尔·T.·本哈斯 申请人:国际商业机器公司