CN100458737C - 在固定大小高速缓存中调整写请求数目的装置、系统和方法 - Google Patents

在固定大小高速缓存中调整写请求数目的装置、系统和方法 Download PDF

Info

Publication number
CN100458737C
CN100458737C CNB2007100021277A CN200710002127A CN100458737C CN 100458737 C CN100458737 C CN 100458737C CN B2007100021277 A CNB2007100021277 A CN B2007100021277A CN 200710002127 A CN200710002127 A CN 200710002127A CN 100458737 C CN100458737 C CN 100458737C
Authority
CN
China
Prior art keywords
write request
priority
value
pacing
pacing value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CNB2007100021277A
Other languages
English (en)
Other versions
CN1996267A (zh
Inventor
马修·布赖恩·霍增格
艾伦·乔治·麦克卢尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN1996267A publication Critical patent/CN1996267A/zh
Application granted granted Critical
Publication of CN100458737C publication Critical patent/CN100458737C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

所公开的一种装置、系统和方法用于在固定大小高速缓存中调整写请求数目,以便于根据分配的调步值区别对待写请求。所述装置包括检查模块,检查应用程序发布的挂起写请求。优先级模块根据可以由操作系统定义的输入/输出优先级值确定写请求的优先级。评估模块评估在固定大小高速缓存中存储写请求的存储要求等级。分配模块响应存储要求等级根据优先级向写请求分配调步值。只要满足了所述写请求的调步值,许可模块就允许应用程序发布随后的写请求。通过一直等待到经历所述调步值所指定的时间量来满足所述调步值。

Description

在固定大小高速缓存中调整写请求数目的装置、系统和方法
技术领域
本发明涉及写请求的高速缓存,更确切地说,涉及在固定大小高速缓存中调整写请求的数目。
背景技术
几乎所有的计算机软件应用程序都存储信息。软件应用程序在易失性或非易失性存储卷上存储信息,比如硬盘、磁带驱动器、固态存储器设备或其他存储器设备。在某些计算机系统中,存储卷是软件应用程序正在其上执行的同一机器的一部分。在其他计算机系统中,存储卷与应用程序物理上分开。在这些系统中,总线或网络连接软件应用程序和存储卷,从而使软件应用程序和存储卷之间能够通信。
当存储卷与应用程序物理上分开时,往往多个应用程序具有对单一存储卷的存取权限,并且可能试图在同一时间向存储卷写信息。结果,当存储卷正忙于接纳来自应用程序的写请求时,另一个应用程序可能试图向该存储卷写信息。因此,存储卷可能无法总是在收到写请求之后就立即执行它们。
解决这种问题的常规途径是在存储卷能够执行写请求之前,在高速缓存中存储该写请求。典型情况下,高速缓存以收到写请求的次序存储它们。典型情况下,以收到写请求的次序从高速缓存取出它们,并且在存储卷变得可用时执行。按照惯例,高速缓存与应用程序物理上位于同一台机器上。
只要在高速缓存中有存储写请求的空间,对写请求进行高速缓存就有效。不过典型情况下,常规的高速缓存具有固定的大小,在特别忙的时间阶段期间这些固定大小的高速缓存可能被写请求填满。一旦写请求高速缓存装满,就无法从应用程序接受另外的写请求。因此,应用程序需要等待,直到该高速缓存有了空闲的空间时再重新提交写请求。
图1A展示了示例高速缓存100内容。示例高速缓存100有10个写请求位置102。每个位置102都能够存储一个写请求。当然典型情况下,实际的高速缓存存储着数百、数千或更多的实体。为了简单,所展示的示例高速缓存100具有10个写请求位置102。
每个写请求都能够包括信息,比如产生请求的应用程序名称、将要存储信息的存储卷、指向将被写入数据的指针或数据本身等等。示例高速缓存100展示了产生请求的应用程序名称104和将写入信息的存储卷106。
示例高速缓存100包含三个写请求108、110、112。“应用程序A”提交了全部的三个写请求108、110、112。在这个示例中,“应用程序A”是每100毫秒记录临界温度数据的应用程序。在这个示例中,存储卷的管理员与“应用程序A”的管理员有服务水平协议,规定存储卷管理员将确保由“应用程序A”发出的全部写请求将被写到存储卷上,而不要求“应用程序A”等待,通常称为阻塞。
示例高速缓存100以写请求到达的次序存储它们,最早的写请求在高速缓存的底部,最近的写请求在高速缓存的顶部。“应用程序A”做出的第一个写请求108是下一个将要执行的写请求。“应用程序A”做出的第二个写请求110将在第一个写请求108之后执行。同样,第三个写请求112将在第二个写请求110已经执行之后执行。
图1B展示了从两个应用程序接纳写请求的示例写请求高速缓存130的内容。“应用程序A”每100毫秒发送定期的写请求以记录温度数据。相反,“应用程序B”以不规则的间隔发送写请求猝发串。在这个示例中,高速缓存130的空间既够“应用程序A”的写请求132用,也够“应用程序B”写请求134的短猝发串用。
图1C展示了示例写请求高速缓存160的内容。在这个示例高速缓存160中,所有的可用写请求位置102都已经被定期的“应用程序A”写请求132和“应用程序B”写请求的两个猝发串162、164所填满。因此,高速缓存是满的,没有空间用于随后的紧急的“应用程序A”写请求。因此,下一个“应用程序A”写请求可能被丢掉或延迟,导致“应用程序A”的管理员和服务体的管理员之间的服务水平协议被破坏。
某些常规的系统通过实施写请求调步技术减少这种溢出问题的可能性。写请求调步技术通过强制应用程序延迟写请求,延缓了写请求进入高速缓存的速度。不过,由于调步技术的常规方法缺乏粒度,所以它们受到很多限制。常规的调步技术方法对全部写请求都分派相同的调步值。调步技术的常规方法延缓了在高速缓存中全部写请求的速度,并且在高优先级写请求和低优先级写请求之间无法进行区别。此外,调步技术的常规方法不能根据高速缓存中写请求的目标存储卷区别它们。而是当启用调步技术时,以同样的方式对待高速缓存中的全部写请求。
根据以上的讨论,需要在固定大小高速缓存中调整写请求数目的装置、系统和方法,这应当是显而易见的。所述装置、系统和方法应当通过延迟非紧急写请求,确保在高速缓存中存在用于紧急写请求的空间。另外,所述装置、系统和方法应当提供基于写请求的优先级和其目标存储卷调步写请求的方法。
发明内容
响应本领域的现有技术,确切地说,针对通过目前可用的高速缓存调整方法在本领域中尚未完全解决的问题和需要而开发了本发明。所以,已经为了提供在固定大小高速缓存中调整写请求数目的装置、系统和方法而开发了本发明,它们克服了本领域中以上讨论的许多或全部缺点。
在固定大小高速缓存中调整写请求数目的装置配备了逻辑单元,包含多个模块,它们被配置为功能上执行在固定大小高速缓存中调整写请求数目的步骤。在所介绍的实施例中,这些模块包括检查模块、优先级模块、评估模块和分配模块。
检查模块检查应用程序发布的挂起写请求。优先级模块根据可以由操作系统定义的、相关联的输入/输出优先级值确定写请求的优先级。评估模块通过对与具体的存储卷组相关联的、固定大小高速缓存中所存储的写请求数目进行计数,评估在固定大小高速缓存中存储写请求的存储要求等级。然后评估模块对比计数和阈值。
如果计数高于阈值,分配模块就根据优先级模块确定的优先级为写请求分配调步值。调步值是基本上0毫秒和基本上5秒之间的时间量。在一个实施例中,分配模块为具有第一优先级的写请求分配第一调步值,为优先级不同于第一优先级的写请求分配第二调步值。在另一个实施例中,分配模块根据一组优先级和一组调步值之间的一对一映射,为写请求分配调步值。
只要已经满足了与原始请求相关联的调步值,许可模块就允许应用程序发布随后的写请求。通过等待到经历调步值所指定的时间量来满足调步值。
为了在固定大小高速缓存中调整写请求数目,也提供了本发明的系统。在一个实施例中,本系统包括固定大小的高速缓存、应用程序、至少一个存储卷、第一通信总线、第二通信总线以及存储控制器。固定大小的高速缓存存储写请求。应用程序发布写请求。在一个实施例中,在存储控制器确认原始的写请求之前,应用程序抑制随后的写请求。
存储卷存储写请求指定的数据,第一通信总线便于固定大小的高速缓存和存储卷之间的通信。第二通信总线便于应用程序、存储控制器和固定大小高速缓存之间的通信。存储控制器包括检查模块、优先级模块、评估模块、分配模块以及许可模块。
检查模块检查应用程序产生的写请求。优先级模块根据写请求的特征,确定写请求的优先级。在一个实施例中,所述特征是操作系统定义的输入/输出优先级值。
评估模块评估在固定大小高速缓存中存储写请求的存储要求等级。在一个实施例中,评估模块通过将固定大小高速缓存所收到写请求的速度与阈值进行比较,评估存储要求等级。在另一实施例中,评估模块通过将与具体的存储卷组相关联的、固定大小高速缓存中所存储写请求的计数与阈值进行比较,确定存储要求等级。
如果存储要求等级高于阈值,分配模块就根据优先级为写请求分配调步值。在一个实施例中,调步值是基本上0毫秒和基本上5秒之间的时间量。在这个实施例中,通过等待到经历调步值所指定的时间量来满足调步值。在另一个实施例中,调步值包括固定大小高速缓存占用的预定百分比。在这个实施例中,当固定大小高速缓存占用的当前百分比少于固定大小高速缓存占用的预定百分比时,就满足了调步值。
在一个实施例中,分配模块为具有第一优先级的写请求分配第一调步值,为优先级不同于第一优先级的写请求分配第二调步值。在另一个实施例中,分配模块根据一组优先级和一组调步值之间的一对一对应关系,为写请求分配调步值。只要已经满足了原始请求的调步值,许可模块就允许应用程序发布随后的写请求。
也提供了在固定大小高速缓存中调整写请求数目的方法。本公开实施例中的方法基本上包括关于所述装置和系统的运转执行以上所呈现功能的必要步骤。
根据应用程序产生的写请求的特征为该写请求确定优先级。为了在固定大小高速缓存中存储写请求而评估存储要求等级。基于优先级并对应存储要求等级为写请求分配调步值。只要满足了原始写请求的调步值,就允许应用程序发布随后的写请求。
本装置、系统和方法根据写请求的优先级,在固定大小高速缓存中调整写请求的数目。本装置、系统和方法通过根据分配给每个写请求的调步值延迟应答写请求,减少了固定大小高速缓存将被填满的可能性。从以下的说明和附带的权利要求书,这些特征和优点将变得更加显而易见,或者可以由后文阐述的本发明的实践而了解。
附图说明
为了容易地理解本发明的优点,对以上简要介绍的本发明将参考附图中所展示的特定实施例进行更具体的说明。应当理解这些附图仅仅描述了本发明的典型实施例,所以不应当认为是对其范围的限制,将通过使用这些附图,介绍和解释本发明的额外特征和细节,其中:
图1A展示了示例写请求高速缓存的内容;
图1B展示了示例写请求高速缓存的内容;
图1C展示了示例写请求高速缓存的内容;
图2是框图,展示了根据本发明在固定大小高速缓存中调整写请求数目的系统的一个实施例;
图3是框图,展示了根据本发明在固定大小高速缓存中调整写请求数目的装置的一个实施例;
图4A展示了示例写请求高速缓存的内容;
图4B展示了示例写请求高速缓存的内容;
图4C展示了示例写请求高速缓存的内容;
图5A展示了根据本发明一组优先级和一组调步值之间的示例映射;
图5B展示了根据本发明一组优先级和一组调步值之间的示例映射;
图5C展示了根据本发明一组优先级和一组调步值之间的示例映射;
图6是流程图,展示了根据本发明在固定大小高速缓存中调整写请求数目的方法的一个实施例。
具体实施方式
图2展示了在固定大小高速缓存204中调整写请求数目的系统200的一个实施例。系统200包括至少一个存储卷202、固定大小高速缓存204、应用程序206、存储控制器208、第一通信总线210和第一通信总线212。本领域的技术人员将理解,只要系统200包括对应于本文所述内容对应的模块或子系统,系统200可以比所展示的更简单或更复杂。
固定大小高速缓存204存储应用程序206发布的写请求。固定大小高速缓存204可以包括易失性或非易失性存储器,比如固态存储器、磁盘驱动器等。固定大小高速缓存204可以存储固定数目的写请求。固定大小高速缓存204可以存储由多个应用程序206所发布的向多个存储卷202的写请求。
应用程序206发布向存储卷202上写数据的请求。在写请求被执行(写入存储卷202)前,存储在固定大小高速缓存204中。系统200可以包括多个应用程序206,每个都向固定大小高速缓存204发送写请求。应用程序206可以定期发布写请求,应用程序206也可以随机地发布写请求。应用程序206可以每次发布一个写请求,也可以在短时间阶段内发布若干写请求猝发串。应用程序206基本上可以是在存储卷202上保存数据的任何软件程序。在一个实施例中,在存储控制器208确认了原始的写请求之前,应用程序206抑制随后的写请求。
存储卷202提供数据的存储。确切地说,存储卷202存储由应用程序206发布的写请求所指定的数据。存储卷202可以是直接存取存储设备(DASD)、磁盘驱动器、磁带驱动器、固态存储器或者无论易失性或非易失性的其他存储器。在一个实施例中,系统200包括多个存储卷202。系统管理员可以将这多个存储卷202组织为相关存储卷的若干子集。
第一通信总线210运行时连接着存储卷202和固定大小高速缓存204,从而便利了固定大小高速缓存204和存储卷202之间的通信。第二通信总线212运行时连接着固定大小高速缓存204、应用程序206和存储控制器208,从而便利了固定大小高速缓存204、应用程序206和存储控制器208之间的通信。
第一通信总线210和第二通信总线212可以是总线、有线网络、无线网络或其他连接性的通信技术。第一通信总线210和第二通信总线212可以采用多种分层通信协议,包括以太网、因特网协议(IP)、异步传输模式(ATM)、时分多路复用(TDM)、外围通信接口(PCI)、小型计算机系统接口(SCSI)、因特网小型计算机系统接口(iSCSI)等。
在一个实施例中,存储控制器208利用扩展远程拷贝(XRC)协议转播从固定大小高速缓存204到存储卷202的写请求。如果固定大小高速缓存204和存储卷202位于同一机柜,典型情况下第一通信总线210是总线。相反,如果固定大小高速缓存204和存储卷202物理上分离,少至几英尺多至几千英里,典型情况下第一通信总线210是网络。在另一实施例中,第一通信总线210和第二通信总线212相连,从而便利了存储卷202、固定大小高速缓存204、应用程序206和存储控制器208之间的通信。
存储控制器208检查由应用程序206产生的写请求。存储控制器208可以通过从固定大小高速缓存204读取写请求而检查写请求。固定大小高速缓存204中存储的写请求可以包括标识符,识别发布该请求的应用程序206。写请求也可以包括存储卷202的标识符和存储卷202上将要执行写操作的位置。写请求还可以包括指针,指向将要写入存储卷202上的数据。作为替代,写请求也可以包括要写入存储卷202上的数据。
存储控制器208根据写请求的特征确定写请求的优先级。在一个实施例中,所述特征是应用程序206所用操作系统指定的输入/输出优先级值。输入/输出优先级值也可以由应用程序或操作系统的服务级别协定模块特定。作为替代,应用程序206设置输入/输出优先级值。
存储控制器208评估在固定大小高速缓存204中存储写请求的存储要求等级。存储要求等级指明对固定大小高速缓存204中空间的当前要求等级。如果存储要求等级低于阈值,则在固定大小高速缓存204中存在着用于其他写请求的空间,所以不需要调步。如果存储要求等级高,则在固定大小高速缓存204中存在的空间有限。因此,需要调步,以调整应用程序206在高速缓存中放置其他写请求的能力,从而保存高速缓存204中的空间。
如果存储要求等级指明需要进行调步以调整固定大小高速缓存204中写请求的数目,存储控制器208根据预先确定的与写请求相关联的优先级,为写请求分配调步值。在一个实施例中,调步值包括基本上0毫秒和基本上5秒之间的时间量。通过等待到经历调步值所指定的时间量来满足调步值。一旦存储控制器208为写请求分配了调步值,在已经满足了与原始请求相关联的调步值之后,存储控制器208允许应用程序206发布随后的写请求。
图3展示了存储控制器300的一个实施例。优选情况下,存储控制器300被配置为用作以上关于图2介绍的存储控制器208。存储控制器300包括检查模块302、优先级模块304、评估模块306、分配模块308和许可模块310。检查模块302检查应用程序206发布的写请求。检查模块302可以通过从固定大小高速缓存204中读取写请求并将写请求分解为各种字段而检查写请求。作为替代,检查模块302也可以从应用程序206获得写请求。
优先级模块304根据写请求的特征确定写请求的优先级。优先级可以是数字的、十六进制的、二进制的、字母数字混合编制的或者其他标志符。在一个实施例中,所述特征是操作系统定义的输入/输出优先级值。例如,所述特征可以是IBM z系列操作系统(z/OS)的定义外延通道命令字(CCW)参数中所用的输入/输出优先级值。该操作系统除了管理写请求之外,或者与管理写请求相分离,还可以在对输入/输出操作排列优先次序中使用输入/输出优先级值。
操作系统可以为操作系统内执行的每个应用程序206都分配一个输入/输出优先级值。因此,操作系统为该应用程序206发布的所有写请求都分配相同的输入/输出优先级值。以这种方式,操作系统给某些应用程序的输入/输出操作的优先级高于其他应用程序。系统管理员可以配置操作系统给予每个应用程序206的输入/输出优先级值。作为替代,应用程序206可以为自身分配输入/输出优先级值,也可以从操作系统请求输入/输出优先级值。
输入/输出优先级值可以是写请求的一部分,操作系统也可以在与写请求分开的数据结构中存储输入/输出优先级值。如果输入/输出优先级值存储在分开的数据结构中,优先级模块304从操作系统获得具体写请求的输入/输出优先级值。如果输入/输出优先级值是写请求的一部分,优先级模块304就分析该请求以获得输入/输出优先级。
所述特征也可以是写请求的参数。在一个实施例中,应用程序206在写请求中包括指明写请求优先级的参数。应用程序206可以根据指明每个写请求相对优先级的一组预定义的优先级值对该参数分配一个值。使用参数允许应用程序206发布具有各种各样优先级的写请求,其中每个写请求的优先级都由应用程序206决定。优先级模块304通过把写请求分解为多种参数而从写请求提取特征,然后检查这个指明写请求相对优先级的参数。
基于优先级的特征也可以是服务级别协定标识符、应用程序名称、中断优先级值等。一旦优先级模块304已经使用了写请求的特征确定写请求的优先级,优先级模块304就可以在数据结构中存储优先级和写请求之间的关联关系,使得分配模块308随后可以在分配调步值中使用该关联关系。
评估模块306评估在固定大小高速缓存204中存储写请求的存储要求等级。评估模块306通过判断存储要求等级是否高于、低于或等于阈值而评估存储要求等级。评估模块306向分配模块308提供存储要求等级的状态(是否高于、低于或等于阈值)。如果存储要求等级高于阈值,分配模块308就可以为写请求分配调步值。作为替代,如果存储要求等级高于或等于阈值,分配模块308也可以为写请求分配调步值。
评估模块306可以以几种不同的方式评估或测定在固定大小高速缓存204中存储写请求的要求。在一个实施例中,评估模块306对固定大小高速缓存204中当前存储的写请求总数目进行计数。然后评估模块306可以对比计数和阈值。
图4A展示了示例固定大小高速缓存400的内容。示例固定大小高速缓存400具有十个写请求位置102。当然,典型的固定大小高速缓存也许能够存储数百、数千或更多写请求。图4A还为每个写请求展示了优先级模块304确定的优先级408。正如图4A中虚线所建议,优先级408可以存储在固定大小高速缓存204中,也可以存储在固定大小高速缓存204以外的数据结构中。
在示例固定大小高速缓存400中,写请求占用了总共六个写请求位置102。来自“应用程序A”的写请求402占用一个位置,来自“应用程序B”的写请求404占用四个位置,来自“应用程序C”的写请求406占用一个位置。在一个实施例中,评估模块306通过对固定大小高速缓存204中写请求的总数目进行计数而评估存储要求等级,而不考虑是哪一个应用程序206发布了写请求。
在这个示例中,计数是六。于是评估模块306对比计数和阈值,并且为分配模块308提供存储要求等级的状态。该状态指明该计数是否低于、等于或大于阈值。
在另一个实施例中,评估模块306通过对固定大小高速缓存204中由特定应用程序206发布的写请求数目进行计数而评估存储要求等级。然后评估模块306对比计数和阈值,并且为分配模块308提供存储要求等级的状态。在图4A的示例固定大小高速缓存400中,评估模块306可以对来自“应用程序A”的写请求402的数目进行计数,对比计数和阈值,并且向分配模块308提供该计数的状态。以类似方式,评估模块306可以确定“应用程序B”发布的写请求404的状态和“应用程序C”发布的写请求406的状态。
图4B展示了另一个示例固定大小高速缓存430的内容。在一个实施例中,评估模块306通过对与特定存储卷202相关联的固定大小高速缓存204中写请求数目进行计数而评估存储要求等级。然后评估模块306对比计数和阈值,并且为分配模块308提供存储要求等级的状态。在图4B的示例固定大小高速缓存430中,评估模块306可以对“存储卷1”的写请求432的数目进行计数,对比计数和阈值,并且向分配模块308提供该计数的状态。以类似方式,评估模块306可以确定“存储卷3”的写请求434的状态。
在另一个实施例中,评估模块306可以通过对一组存储卷202相关联的固定大小高速缓存204中写请求数目进行计数而评估存储要求等级。例如在图4A中,评估模块306可以对与包括“存储卷1”和“存储卷3”的一组存储卷相关联的全部写请求进行计数,并对比计数和第一阈值。评估模块306还可以对与包括“存储卷6”的第二组存储卷相关联的全部写请求进行计数,并对比计数和第二阈值。
图4C展示了另一个示例固定大小高速缓存460的内容。在另一个实施例中,评估模块306通过对固定大小高速缓存204中具有特定优先级值408的写请求数目进行计数而评估存储要求等级。然后评估模块306对比计数和阈值,并且为分配模块308提供存储要求等级的状态。在图4C的示例固定大小高速缓存460中,评估模块306可以对具有“优先级1”的写请求462的数目进行计数,对比计数和阈值,并且向分配模块308提供计数的状态。以类似方式,评估模块306可以确定具有“优先级4”的写请求464的状态。
在又一个实施例中,评估模块306通过确定应用程序206正在向固定大小高速缓存204发送写请求的速率而评估存储要求等级。评估模块306可以通过对应用程序206在预定时间量期间发布的写请求数目进行计数而确定该速率。
然后评估模块306对比计数和阈值,并且为分配模块308提供存储要求等级的状态。评估模块306还可以用预定时间量除计数以得到速率,然后对比速率和阈值,并且为分配模块308提供存储要求等级的状态。
在以上所述评估模块306的每个实施例中,都为评估模块306提供了阈值。评估模块306的每个实施例都可以根据评估模块306用于评估存储要求等级的方法,要求不同的阈值。阈值可以由用户、配置文件、应用程序编程接口(API)、变量、数据结构或本领域的技术人员熟知的其他方法提供给评估模块306。作为替代,阈值可以硬编码为评估模块306的一部分。选择阈值使得分配模块308和许可模块310可以启用调步,从而在固定大小高速缓存204被完全填满之前放慢写请求。
现在返回图3,如果存储要求等级高于(或者在某些实施例中高于或等于)阈值,分配模块308向写请求分配调步值。调步值基于优先级模块304提供的优先级。调步值提供了延时机制。只要分配模块308向写请求分配了调步值,在调步值已经满足之后,许可模块310才允许应用程序206发布随后的写请求。
在一个实施例中,调步值由时间量组成。只要由调步值指定的时间量期满,这种类型的调步值满足就出现。由调步值指定的时间量可以在基本上0毫秒和基本上5秒之间。
在另一个实施例中,调步值由固定大小高速缓存占用的预定百分比组成。只要固定大小高速缓存占用的当前百分比小于由调步值指定的固定大小高速缓存占用的预定百分比,这种类型的调步值满足就出现。例如,如果调步值是50%,当前的固定大小高速缓存占用率是60%,就不满足调步值。为了判断何时满足调步值,许可模块310可以对固定大小高速缓存的占用率定期采样。在这个示例中,只要采样的占用率小于50%,则满足调步值。
由本实施例调步值所引入的延时量是变化的,不是固定的。延时量取决于以下因素:许可模块310对固定大小高速缓存的占用率进行采样的频率、分配调步值时固定大小高速缓存204中入口的数目、在固定大小高速缓存204中执行写请求的速率以及本领域的技术人员所熟知的其他因素。
也可以使用其他调步值,比如中央处理单元(CPU)时钟周期的预定数目,或者固定高速缓存占用预定百分比的下降。再其他的调步值包括写请求对存储卷202的具体组的固定高速缓存占用的预定百分比、具有具体优先级的写请求的固定高速缓存占用的预定百分比、来自应用程序206的具体组的写请求的固定高速缓存占用的预定百分比等。
分配模块308可以根据一组调步值和一组优先级之间的映射,为写请求分配调步值。分配模块308可以将该映射保存在数据结构中,比如文件、对象、变量、列表等,分配模块308也可以通过API、变量、函数调用等接收该映射。映射可以被硬编码也可以是用户可配置的。
图5A展示了一组优先级502和一组调步值504之间的映射500的一个实施例。在这个实施例中,调步值是时间量。不过在其他实施例中,调步值可能是高速缓存占用的百分比、许多CPU周期或者上述其他类型调步值之一。在这个实施例中,分配模块308为每个优先级都分配唯一的调步值,所以该组优先级502和该组调步值504之间存在一对一的对应关系。
例如,优先级“FF”508映射至“0ms”的调步值506。由于在这个示例中调步值为以毫秒指定的时间量,“0ms”的调步值506不引入延时,对具有优先级“FF”508写请求有效地禁用了调步。有时期望对某些写请求禁用调步,因为它允许高优先级写请求不延时地处理,而低优先级写请求被延迟,以使得它们不干扰高优先级的写请求。
图5B展示了一组优先级502和一组调步值504之间的映射530的另一个实施例。在这个实施例中,分配模块308为具有第一优先级534的写请求分配第一调步值532,为具有不同于第一优先级534的优先级538的写请求分配第二调步值536。如同以上图5A中,图5B中所示的实施例展示了以时间量作为调步值。不过,调步值可以是上述其他类型调步值之一。
图5C展示了一组优先级502和一组调步值504之间的映射560的又一个实施例。在这个实施例中,分配模块308为具有第一组多个优先级564之一的写请求分配第一调步值562,为具有第二组多个优先级568之一的写请求分配第二调步值566,导致了多对一的映射。虽然图5C展示了两组多个优先级564、568,但是其他组多个优先级也可以映射至调步值。如同以上图5A中,图5C中所示的实施例展示了以时间量作为调步值。不过,调步值可以是上述其他类型调步值之一。
现在返回图3,只要已经满足了与原始请求相关联的调步值,许可模块310就允许应用程序206发布随后的写请求。许可模块310判断何时已经满足了调步值。许可模块310可以通过定期地检查以了解是否已经满足了调步值而进行这种判断。作为替代,许可模块310可以利用只要已经满足了调步值就向许可模块310提供通告的机制。许可模块310可以使用本领域的技术人员熟知的其他方法判断何时已经满足了调步值。
在一个实施例中,许可模块310与应用程序206的通信方式为:在许可模块310已经确认了原始写请求之前,应用程序206不发布随后的写请求。在这个实施例中,许可模块310在已经满足了调步值之后,才发送原始写请求的应答。由于应用程序206收到了应答之后,应用程序206才发布随后的写请求,所以许可模块310通过在已经满足了调步值之前不发出应答,有效地降低了应用程序206可以向固定大小高速缓存204添加写请求的速率。这种速率降低调整了固定大小高速缓存204中写请求的数目。
如果存储要求等级低于(或者在某些实施例中等于或低于)阈值,分配模块308可以不分配调步值,因此分配模块308将不会延迟写请求的应答。随着对固定大小高速缓存204之内位置需要的增加,存储要求等级最终将升至高于阈值,许可模块310将开始延迟应答,从而减慢进入高速缓存的写请求数目。同时,将执行在高速缓存中的写请求,并且将它们从固定大小高速缓存中删除,以便为新的写请求腾出空间。最后,如果写请求的执行速率大于将写请求添加到高速缓存的速率,存储要求等级将降到存储要求等级的阈值之下,许可模块将不再延迟应答。
当然,只要已经满足了原始写请求的调步值,也可以使用其他的方法允许随后的写请求。例如,可以使用令牌的方法,使得如果应用程序206已经拥有令牌,应用程序206就可以发布写请求。只要应用程序206发布了写请求,许可模块310就将占用该令牌的拥有权,在与该写请求相关联的调步值已经满足之后,才会放弃该令牌。许可模块310可以采用本领域技术人员熟知的其他类似技术允许随后的写请求。
图6是流程图,展示了在固定大小高速缓存204中调整写请求数目的方法600的一个实施例。优选情况下,在常规的系统中实施方法600时,可以通过修改计算机可读代码实施上述的存储控制器208。方法600开始602于检查模块302检查604应用程序206发布的写请求之时。
下一步,优先级模块304确定606写请求的优先级。如以上的讨论,优先级模块304基于写请求的特征确定优先级,比如操作系统定义的输入/输出优先级值。下一步,评估模块306评估608对固定大小高速缓存204的存储要求等级。评估模块306可以使用以上所述的技术判断对固定大小高速缓存204中位置的要求是否是高于、低于或等于阈值。如果要求高于(或者在某些实施例中高于或等于)阈值,分配模块308向写请求分配610调步值。调步值可以是时间量或者以上所述其他类型的调步值之一。
下一步,许可模块310判断612调步值是否已经满足。如果调步值已经满足,许可模块310就允许614应用程序206发布随后的写请求,本方法结束616。如果不满足调步值,那么在调步值已经满足之前,许可模块310不允许应用程序206发布随后的写请求。
用于部署计算基础设施的方法包括将计算机可读代码集成到计算系统使用装置300在固定大小高速缓存204中调整写请求数目。
本发明通过降低应用程序206可以在固定大小高速缓存204内消耗位置的速率,在固定大小高速缓存204中调整写请求数目。本发明通过在固定大小高速缓存204中调整写请求数目而在高优先级写操作中减少了固定大小高速缓存204的溢出和延时,所以将存在用于高优先级写请求的空间。此外,本发明以每一写请求为基础分配调步值,提供了细粒度。本发明也允许根据写请求的目的存储卷分配调步值。
本发明可以以其他特定形式实施而不脱离其实质或本质特征。所描述的实施例在各方面都应当视为仅仅是展示性的而不是限制性的。因此,由附带的权利要求书而不是由上述的说明表明本发明的范围。出于与本权利要求书等效含意和范围之内的所有改变都应当包含在其范围之内。
贯穿本说明书的对特征、优点或类似术语的引用并非暗示以本发明可以实现的全部特征和优点应当或就在本发明的任何单一实施例中。相反,涉及特征或优点的术语应当理解为意味着连同实施例说明的具体特征、优点或特征包括在本发明的至少一个实施例中。所以,贯穿本说明书的对特征、优点或类似术语的讨论可以但不一定是指同一实施例。
不仅如此,所介绍的本发明的特征、优点和特征可以在一个或多个实施例中以任何适当方式组合。相关领域的普通技术人员将理解,没有某个具体实施例的一种或多种具体特征或优点时也能够实践本发明。在其他情况下,在某些实施例中可以认出可能并没有在本发明所有实施例中呈现的附加特征和优点。
在本说明书中介绍的许多功能单元都已经被标注为模块,以便更具体地强调它们实现的独立性。例如,模块可以实现为硬件电路,包括定制VLSI电路或门阵列、现有半导体元件,比如逻辑芯片、晶体管或其他离散器件。模块也可以实现在可编程硬件器件中,比如数据值可编程门阵列、可编程阵列逻辑、可编程逻辑器件等。
模块也可以实现在由多种类型的处理器执行的软件中。例如,可执行代码的标识模块可以由计算机指令的一个或多个物理块或逻辑块组成,可以将它们组织为例如对象、过程或函数。尽管如此,标识模块的可执行文件物理上不必位于一起,而是可以由存储在不同位置的分开的指令组成,当逻辑上连接在一起时,组成该模块并且实现模块所规定的目的。
实际上,可执行代码的模块可能是单一指令,也可能是许多指令,其分布甚至可以跨越几台存储设备,在不同程序之中的几个不同代码段上。同样,本文中操作数据可以在模块内标识和展示,并能够体现为任何适当的形式,组织在任何适当类型的数据结构之内。操作数据可以被收集为单数据集,也可以分布在不同位置上,包括在不同的存储设备上,并可以至少局部地仅仅作为系统或网络上的电子信号存在。
贯穿本说明书的对“一个实施例”、“实施例”或类似术语的引用意味着连同该实施例说明的具体特征、结构或特征包括在本发明的至少一个实施例中。所以,贯穿本说明书的短语“在一个实施例中”、“在实施例中”或类似术语的出现可以但不一定是指同一实施例。
在以下说明中提供了许多具体细节,比如编程实例、软件模块、用户选择、网络事务处理、数据库查询、数据库结构、硬件模块、硬件电路、硬件芯片等,以提供对本发明实施例的彻底理解。不过,相关领域的普通技术人员将承认没有一种或多种具体细节,或者利用其他方法、器件、材料等也能够实践本发明。在其他情况下,熟知的结构、材料或操作将不再详细显示或说明,以避免模糊本发明的若干方面。

Claims (15)

1.一种在固定大小高速缓存中调整写请求数目的方法,所述方法包括:
根据应用程序产生的写请求的特征,确定所述写请求优先级的操作;
为在固定大小高速缓存中存储写请求评估存储要求等级的操作;
响应所述存储要求等级,根据所述优先级向所述写请求分配调步值的操作,所述调步值由时间量组成;以及
在由所述调步值指定的时间量期满前,不允许随后的写请求,以及在由所述调步值指定的时间量期满后,才允许随后的写请求的操作。
2.根据权利要求1的方法,其中,所述调步值包括0毫秒和5秒之间的时间量。
3.根据权利要求1的方法,其中,所述评估存储要求等级的操作进一步包括将所收到写请求的速率与阈值进行比较。
4.根据权利要求1的方法,其中,所述评估存储要求等级的操作进一步包括将所述固定大小高速缓存中所存储的与一组存储卷相关联的写请求的计数与阈值进行比较。
5.根据权利要求1的方法,其中,所述分配操作进一步包括向具有第一优先级的写请求分配第一调步值,向优先级不同于第一优先级的写请求分配第二调步值。
6.根据权利要求1的方法,其中,所述分配操作进一步包括根据一组优先级和一组调步值之间的一对一对应关系,向所述写请求分配调步值。
7.根据权利要求1的方法,其中,所述特征是操作系统定义的输入/输出优先级值。
8.一种在固定大小高速缓存中调整写请求数目的系统,包括:
固定大小高速缓存;
应用程序;
至少一个存储卷;
存储控制器,包括:
检查模块,被配置为检查由所述应用程序产生的写请求;
优先级模块,被配置为根据所述写请求的特征,确定所述写请求的优先级;
评估模块,被配置为评估在所述固定大小高速缓存中存储写请求的存储要求等级;
分配模块,被配置为响应所述存储要求等级,根据所述优先级向所述写请求分配调步值,所述调步值由时间量组成;
许可模块,被配置在由所述调步值指定的时间量期满前,不允许随后的写请求,以及在由所述调步值指定的时间量期满后,才允许随后的写请求;
第一通信总线,被配置为便于所述固定大小的高速缓存和所述存储卷之间的通信;以及
第二通信总线,被配置为便于所述应用程序、存储控制器和固定大小高速缓存之间的通信。
9.根据权利要求8的系统,其中,所述调步值包括0毫秒和5秒之间的时间量。
10.根据权利要求8的系统,其中,所述应用程序被进一步配置为在所述存储控制器确认原始的写请求之前,不发布另外的写请求。
11.根据权利要求8的系统,其中,所述评估模块被进一步配置为将所收到写请求的速率与阈值进行比较。
12.根据权利要求8的系统,其中,所述分配模块被进一步配置为向具有第一优先级的写请求分配第一调步值,向优先级不同于所述第一优先级的写请求分配第二调步值。
13.一种向写请求分配调步值的装置,所述装置包括:
检查模块,被配置为读取与应用程序所产生的写请求相关联的、操作系统定义的输入/输出优先级值;
优先级模块,被配置为根据所述写请求的所述输入/输出优先级值,确定所述写请求的优先级;
评估模块,被配置为通过将固定大小高速缓存中所存储的与一组存储卷相关联的写请求的计数与阈值进行比较,为在所述固定大小高速缓存中存储写请求评估存储要求等级;
分配模块,被配置为响应所述存储要求等级根据所述优先级向所述写请求分配调步值,其中所述调步值包括0毫秒和5秒之间的时间量;以及
许可模块,被配置为在由所述调步值指定的时间量期满前,不允许随后的写请求,以及在由所述调步值指定的时间量期满后,才允许随后的写请求。
14.根据权利要求13的装置,其中,所述分配模块被进一步配置为向具有第一优先级的写请求分配第一调步值,向优先级不同于所述第一优先级的写请求分配第二调步值。
15.根据权利要求13的装置,其中,所述分配模块被进一步配置为根据一组优先级和一组调步值之间的一对一对应关系,向所述写请求分配调步值。
CNB2007100021277A 2006-01-03 2007-01-04 在固定大小高速缓存中调整写请求数目的装置、系统和方法 Expired - Fee Related CN100458737C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/324,592 2006-01-03
US11/324,592 US7523271B2 (en) 2006-01-03 2006-01-03 Apparatus, system, and method for regulating the number of write requests in a fixed-size cache

Publications (2)

Publication Number Publication Date
CN1996267A CN1996267A (zh) 2007-07-11
CN100458737C true CN100458737C (zh) 2009-02-04

Family

ID=38226022

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2007100021277A Expired - Fee Related CN100458737C (zh) 2006-01-03 2007-01-04 在固定大小高速缓存中调整写请求数目的装置、系统和方法

Country Status (3)

Country Link
US (1) US7523271B2 (zh)
JP (1) JP4857086B2 (zh)
CN (1) CN100458737C (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105892936A (zh) * 2015-02-12 2016-08-24 Hgst荷兰公司 性能平缓的数据存储设备

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7783839B2 (en) * 2007-01-08 2010-08-24 International Business Machines Corporation Using different algorithms to destage different types of data from cache
US7721043B2 (en) * 2007-01-08 2010-05-18 International Business Machines Corporation Managing write requests in cache directed to different storage groups
US7934069B2 (en) * 2007-04-27 2011-04-26 Hewlett-Packard Development Company, L.P. Enabling and disabling cache in storage systems
US7702871B1 (en) * 2007-08-31 2010-04-20 Emc Corporation Write pacing
US8019732B2 (en) * 2008-08-08 2011-09-13 Amazon Technologies, Inc. Managing access of multiple executing programs to non-local block data storage
US8661202B2 (en) 2010-12-10 2014-02-25 International Business Machines Corporation Systems and methods for destaging storage tracks from cache
US8661201B2 (en) 2010-12-10 2014-02-25 International Business Machines Corporation Systems and methods for managing destage conflicts
US8639888B2 (en) 2010-12-10 2014-01-28 International Business Machines Corporation Systems and methods for managing cache destage scan times
US8656109B2 (en) 2010-12-10 2014-02-18 International Business Machines Corporation Systems and methods for background destaging storage tracks
US8560771B2 (en) 2011-07-22 2013-10-15 International Business Machines Corporation Efficient track destage in secondary storage
KR101381689B1 (ko) * 2012-08-03 2014-04-22 기초과학연구원 콘텐츠 이용 특성에 기초하여 콘텐츠를 관리하는 콘텐츠 제공 장치
US9182922B2 (en) 2013-09-11 2015-11-10 GlobalFoundries, Inc. Dynamically adjusting write pacing by calculating a pacing level and then delaying writes for a first channel command word (CCW) based on pacing level
US9378219B1 (en) * 2013-09-30 2016-06-28 Emc Corporation Metro-cluster based on synchronous replication of virtualized storage processors
US9880777B1 (en) 2013-12-23 2018-01-30 EMC IP Holding Company LLC Embedded synchronous replication for block and file objects
US9679162B2 (en) * 2014-02-24 2017-06-13 Google Inc. Application permission settings
CN105573920B (zh) * 2014-10-09 2019-02-01 华为技术有限公司 存储空间管理方法和装置
CN114691698B (zh) * 2022-04-24 2022-11-08 山西中汇数智科技有限公司 一种计算机系统的数据处理系统及方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5418929A (en) * 1991-02-20 1995-05-23 Hitachi, Ltd. Controller for storage unit and method of controlling storage unit
CN1229953A (zh) * 1998-02-17 1999-09-29 国际商业机器公司 具有全局和局部标记状态的高速缓存相干性协议
US20040255055A1 (en) * 2003-06-16 2004-12-16 International Business Machines Corporation Method, system, and program for executing input/output requests

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01183752A (ja) * 1988-01-18 1989-07-21 Daikin Ind Ltd データ入出力制御装置および方法
US6336143B1 (en) * 1993-09-27 2002-01-01 International Business Machines Corporation Method and apparatus for multimedia data interchange with pacing capability in a distributed data processing system
US6085277A (en) * 1997-10-15 2000-07-04 International Business Machines Corporation Interrupt and message batching apparatus and method
US6023720A (en) * 1998-02-09 2000-02-08 Matsushita Electric Industrial Co., Ltd. Simultaneous processing of read and write requests using optimized storage partitions for read and write request deadlines
US6434161B1 (en) * 1998-02-25 2002-08-13 3Com Corporation UART with direct memory access buffering of data and method therefor
SE511849C2 (sv) * 1998-03-31 1999-12-06 Ericsson Telefon Ab L M Anordning och metod för buffertskydd
US6871011B1 (en) * 2000-09-28 2005-03-22 Matsushita Electric Industrial Co., Ltd. Providing quality of service for disks I/O sub-system with simultaneous deadlines and priority
US6654343B1 (en) * 2001-03-19 2003-11-25 Turin Networks Method and system for switch fabric flow control
JP3977698B2 (ja) * 2002-07-05 2007-09-19 株式会社日立製作所 記憶制御装置、記憶制御装置の制御方法、及びプログラム
JP2005301442A (ja) * 2004-04-07 2005-10-27 Hitachi Ltd ストレージ装置
US7222223B2 (en) * 2004-10-29 2007-05-22 Pillar Data Systems, Inc. Management of I/O operations in data storage systems

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5418929A (en) * 1991-02-20 1995-05-23 Hitachi, Ltd. Controller for storage unit and method of controlling storage unit
CN1229953A (zh) * 1998-02-17 1999-09-29 国际商业机器公司 具有全局和局部标记状态的高速缓存相干性协议
US20040255055A1 (en) * 2003-06-16 2004-12-16 International Business Machines Corporation Method, system, and program for executing input/output requests

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105892936A (zh) * 2015-02-12 2016-08-24 Hgst荷兰公司 性能平缓的数据存储设备

Also Published As

Publication number Publication date
JP4857086B2 (ja) 2012-01-18
JP2007183926A (ja) 2007-07-19
US7523271B2 (en) 2009-04-21
CN1996267A (zh) 2007-07-11
US20070156961A1 (en) 2007-07-05

Similar Documents

Publication Publication Date Title
CN100458737C (zh) 在固定大小高速缓存中调整写请求数目的装置、系统和方法
US20230004329A1 (en) Managed fetching and execution of commands from submission queues
CN110226157B (zh) 用于减少行缓冲冲突的动态存储器重新映射
US6272600B1 (en) Memory request reordering in a data processing system
US6182177B1 (en) Method and apparatus for maintaining one or more queues of elements such as commands using one or more token queues
JP3699833B2 (ja) メモリアーキテクチャーのための優先符号化及び復号化
US7500063B2 (en) Method and apparatus for managing a cache memory in a mass-storage system
US8225048B2 (en) Systems and methods for resource access
US10545701B1 (en) Memory arbitration techniques based on latency tolerance
EP0703526A2 (en) Storage management system for concurrent generation and fair allocation of disk space
US20050138230A1 (en) Method, apparatus and program product for low latency I/O adapter queuing in a computer system
JP2000330859A (ja) 読取/書込コヒーレンシを有するバス利用度最適化
US6557088B2 (en) Information processing system and recording medium recording a program to cause a computer to execute steps
CN110716691B (zh) 调度方法、装置、闪存设备和系统
CN101877666B (zh) 基于零拷贝方式的多应用程序报文接收方法和装置
KR101915944B1 (ko) 클러스터 시스템에서의 클라이언트 요청 처리 방법, 상기 클라이언트 요청에 따른 입출력 처리 방법 및 장치
US20050257012A1 (en) Storage device flow control
CN112015527B (zh) 管理从提交队列获取和执行命令
US20030217152A1 (en) Resource sharing with database synchronization
CN109213423B (zh) 基于地址屏障无锁处理并发io命令
US7904688B1 (en) Memory management unit for field programmable gate array boards
US20220334774A1 (en) Low latency virtual memory management
US20200004636A1 (en) Data Storage System with Strategic Contention Avoidance
CN106537321B (zh) 存取文件的方法、装置和存储系统
US20240012578A1 (en) Data storage device for guaranteeing that system resources meet performance requirements, method of operating the same, and memory controller for the same

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090204

Termination date: 20190104