CN108027710B - 在软件定义的存储系统中进行高速缓存的方法和装置 - Google Patents

在软件定义的存储系统中进行高速缓存的方法和装置 Download PDF

Info

Publication number
CN108027710B
CN108027710B CN201580082637.2A CN201580082637A CN108027710B CN 108027710 B CN108027710 B CN 108027710B CN 201580082637 A CN201580082637 A CN 201580082637A CN 108027710 B CN108027710 B CN 108027710B
Authority
CN
China
Prior art keywords
cache
type
request operation
dram
nvm
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.)
Active
Application number
CN201580082637.2A
Other languages
English (en)
Other versions
CN108027710A (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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Publication of CN108027710A publication Critical patent/CN108027710A/zh
Application granted granted Critical
Publication of CN108027710B publication Critical patent/CN108027710B/zh
Active 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C14/00Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down
    • G11C14/0009Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a DRAM cell
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/205Hybrid memory, e.g. using both volatile and non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks

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

本文描述的示例性实施方式涉及系统和方法,其中存储软件配置为考虑底层硬件的能力以在运行时确定高速缓存数据方法。在示例性实施方式中考虑的能力的一些示例包括非易失性存储器(NVM)是否可用以及NVM的可用程度。所使用的高速缓存方法的一些示例包括使用动态随机存取存储器(DRAM)和NVM两者来高速缓存写入数据以及仅使用NVM来高速缓存写入数据。

Description

在软件定义的存储系统中进行高速缓存的方法和装置
技术领域
本公开总体涉及存储系统,并且更具体地涉及在软件定义的存储系统中进行高速缓存的实施方式。
背景技术
在相关技术中,非易失性存储器(NVM)具有与动态随机存取存储器(DRAM)相近的输入/输出(I/O)性能。NVM的一些示例包括磁性RAM(MRAM)和相变RAM(PCRAM)。
在相关技术的实施方式中,描述了存在一种存储装置,其在NVM中高速缓存写入数据以便即使在断电时也保存数据。在美国专利公开第US2007/0150647号中描述了使用NVM作为高速缓存的存储装置的这种相关技术的实施方式的示例,其全部内容通过引用并入本文以用于所有目的。在另一相关技术的实施方式中,存在一种存储装置,其监测备用电源状态改变并切换写入高速缓存模式。当可以执行电池备份时,存储装置执行回写高速缓存,而当不能执行电池备份时,存储装置通过高速缓存执行写入。在中国专利公开第CN100357873号中描述了I/O流自适应写入高速缓存策略调整系统的这种相关技术的实施方式的示例,其全部内容通过引用并入本文以用于所有目的。
因此,在相关技术中,NVM被用作DRAM的扩展,用于存储系统中的数据高速缓存。这样的实施方式可以降低每比特高速缓存的成本。
在相关技术中,在数据中心中还存在使用商用硬件的趋势,其中存储功能被提供为软件(软件定义的存储)。
发明内容
然而,在相关技术的实施方式中,存储软件可能不考虑执行存储软件的硬件的能力上的差异。结果,存储软件可能无法充分利用可用的硬件。例如,DRAM的带有电池备份的硬件可以使用DRAM进行写入高速缓存而不会在掉电时丢失数据,但DRAM的不带有电池备份的硬件应当使用NVM进行写入高速缓存,以防止掉电时丢失数据。
在本公开的示例性实施方式中,存储软件配置为考虑NVM是否可用以确定在哪里高速缓存写入数据。此外,在示例性实施方式中,存储软件配置为考虑有NVM的可用程度以确定要使用多少DRAM来高速缓存读取数据和高速缓存写入数据。
在示例性实施方式中,存在允许软件定义的存储充分利用运行软件定义的存储的硬件的方法和装置。
示例性实施方式的方面包括一种存储服务器,该存储服务器可以涉及:存储器,配置为存储将输入/输出(I/O)请求操作类型与指示高速缓存类型的可用性的一个或多个参数相关联的信息,高速缓存类型包括非易失性存储器(NVM)和动态随机存取存储器(DRAM)中的至少一个,根据存储服务器的硬件配置的检测来生成上述信息;和处理器,配置为基于指示与I/O请求操作类型相关联的高速缓存类型的可用性的一个或多个参数,针对I/O请求操作类型选择高速缓存模式,并且对于是I/O请求操作类型的I/O请求操作的接收,根据所选择的高速缓存模式来处理I/O请求操作。
示例性实施方式的方面涉及一种用于存储服务器的方法,该方法可以涉及:管理将输入/输出(I/O)请求操作类型与指示高速缓存类型的可用性的一个或多个参数相关联的信息,高速缓存类型包括非易失性存储器(NVM)和动态随机存取存储器(DRAM)中的至少一个,根据存储服务器的硬件配置的检测来生成上述信息;基于指示与I/O请求操作类型相关联的高速缓存类型的可用性的一个或多个参数,针对I/O请求操作类型选择高速缓存模式,并且对于是I/O请求操作类型的I/O请求操作的接收,根据所选择的高速缓存模式来处理I/O请求操作。
示例性实施方式的方面涉及一种存储用于执行存储服务器的处理的指令的计算机程序。指令可以包括:管理将输入/输出(I/O)请求操作类型与指示高速缓存类型的可用性的一个或多个参数相关联的信息,高速缓存类型包括非易失性存储器(NVM)和动态随机存取存储器(DRAM)中的至少一个,根据存储服务器的硬件配置的检测来生成上述信息;基于指示与I/O请求操作类型相关联的高速缓存类型的可用性的一个或多个参数,针对I/O请求操作类型选择高速缓存模式,并且对于是I/O请求操作类型的I/O请求操作的接收,根据所选择的高速缓存模式来处理I/O请求操作。计算机程序可以存储在非暂时性计算机可读介质上以用于由一个或多个处理器执行。
示例性实施方式的方面包括一种装置,该装置可以涉及:用于存储将输入/输出(I/O)请求操作类型与指示高速缓存类型的可用性的一个或多个参数相关联的信息的模块,高速缓存类型包括非易失性存储器(NVM)和动态随机存取存储器(DRAM)中的至少一个,根据装置的硬件配置的检测来生成上述信息;和用于基于指示与I/O请求操作类型相关联的高速缓存类型的可用性的一个或多个参数,针对I/O请求操作类型选择高速缓存模式的模块,以及用于对于是I/O请求操作类型的I/O请求操作的接收,根据所选择的高速缓存模式来处理I/O请求操作的模块。
附图说明
图1示出可以应用示例性实施方式的系统的物理配置的示例。
图2示出根据示例性实施方式的当计算机配置为存储服务器时的DRAM的逻辑布局。
图3示出根据示例性实施方式的高速缓存模式管理表的逻辑布局。
图4示出根据示例性实施方式的初始化程序的示例性流程图。
图5示出根据示例性实施方式的读取请求处理程序的示例性流程图。
图6示出根据示例性实施方式的写入请求处理程序的示例性流程图。
图7示出根据示例性实施方式的当计算机配置为存储服务器时的DRAM的逻辑布局。
图8示出根据示例性实施方式的高速缓存容量管理表的逻辑布局。
图9示出根据示例性实施方式的初始化程序的示例性流程图。
图10示出根据示例性实施方式的读取请求处理程序的示例性流程图。
图11示出根据示例性实施方式的写入请求程序的示例性流程图。
具体实施方式
以下详细描述进一步提供了本申请的附图和示例性实施方式的细节。为了清楚起见,省略附图之间的冗余元件的附图标记和描述。在整个说明书中使用的术语是作为示例提供的,并不旨在限制。例如,取决于实施本申请的实施方式的本领域普通技术人员的期望实施方式,术语“自动”的使用可能涉及包括用户或管理员对实施方式的某些方面的控制的完全自动或半自动的实施方式。术语“请求”和“操作”也可以互换使用。
在第一示例性实施方式中,存在配置为基于底层硬件的能力来改变用于高速缓存数据的位置的存储软件。
图1示出可以应用示例性实施方式的系统的物理配置的示例。在图1的示例中,多个计算机1经由存储区域网络(SAN)2彼此连接。计算机1可以包括一个或多个中央处理单元(CPU)10、DRAM 11、一个或多个存储设备13以及一个或多个端口15。计算机1还可以包括NVM12。在掉电的情况下,存储在DRAM 11中的数据丢失,但是存储在NVM 12中的数据被保存。存储设备13可以涉及硬盘驱动器(HDD)、固态驱动器(SSD)或任何其他类型的存储设备。计算机1还可以包括电池14。在掉电的情况下,电池14向计算机1供电,使得存储在DRAM 11中的数据可以备份到存储设备13。
SAN 2可以是光纤通道网络或以太网网络。每个计算机1通过其一个或多个端口15连接至SAN 2。每个计算机1可以用作在CPU 10上运行应用软件的主计算机、在CPU 10上运行存储软件的存储服务器或在CPU 10上运行存储管理软件的管理服务器。配置为主计算机的计算机1将I/O请求发送至配置为存储服务器的计算机1。I/O请求可以包括读取请求和写入请求。
配置为存储服务器的计算机1通过从内部存储设备13读取数据并将数据发送至发送读取请求的计算机1来处理读取请求。配置为存储服务器的计算机1通过从发送写入请求的计算机1接收数据并将数据写入内部存储设备13来处理写入请求。
对于配置为存储服务器的计算机1,计算机1可以涉及配置为存储将输入/输出(I/O)请求操作类型与指示高速缓存类型的可用性的一个或多个参数相关联的信息的存储器(例如,DRAM 11、NVM 12或存储设备13),其中高速缓存类型是非易失性存储器(NVM)和动态随机存取存储器(DRAM)中的至少一个,如图3中所示。取决于期望的实施方式,可以根据存储服务器的硬件配置的检测来生成这样的信息。CPU 10可以配置为基于指示与I/O请求操作类型相关联的高速缓存类型的可用性的一个或多个参数来针对I/O请求操作类型选择高速缓存模式,如图4和图9中所示。对于是I/O请求操作类型的I/O请求操作的接收,CPU 10可以配置为根据所选择的高速缓存模式来处理I/O请求操作,如图5、图6、图10和图11所示。
对于配置为存储服务器的计算机1,CPU 10可以配置为:根据指示存储服务器中的NVM的可用性的一个或多个参数,通过对于写入操作的I/O请求操作类型,将高速缓存模式设定为NVM高速缓存,来针对I/O请求操作类型选择高速缓存模式,如图4或图9所示。例如,CPU 10可以配置为:根据指示存储服务器中的NVM的不可用性和用于DRAM高速缓存的备份操作的不可用性的一个或多个参数,对于写入操作的I/O请求操作类型,将高速缓存模式设定为不进行高速缓存,如图4和图9中所示。参数可以包括如图4中所示的DRAM的电池支持的可用性或不可用性、如图9中所示的NVM或DRAM的可使用的高速缓存容量的存在以及根据期望的实施方式的其他示例。此外,CPU10可以配置为:根据指示DRAM的电池支持的可用性的一个或多个参数,通过对于写入操作的I/O请求操作类型,将高速缓存模式设定为DRAM高速缓存,来选择用于I/O请求操作类型的高速缓存模式,如图4中所示。此外,CPU 10可以配置为:根据可用的NVM高速缓存容量和可用的DRAM高速缓存容量来计算可使用的NVM高速缓存容量和可使用的DRAM容量,如图8所示。
如图3和图4所示,高速缓存模式可以包括在NVM中进行高速缓存、在DRAM中进行高速缓存以及不进行高速缓存(例如,直接读取或写入存储设备13),并且I/O请求操作类型可以包括读取操作和写入操作。取决于期望的实施方式,其他操作也可以包括在示例性实施方式中,并且本公开不限于读取或写入操作。
图2示出根据示例性实施方式的当计算机1配置为存储服务器时的DRAM 11的逻辑布局。当计算机1配置为存储服务器时,DRAM 11包括初始化程序20、读取请求处理程序21、写入请求处理程序22、高速缓存模式管理表23和高速缓存区域24。
当配置为存储服务器的计算机1通电时,初始化程序20由CPU 10执行。初始化程序20初始化高速缓存模式管理表23。也可以在存在硬件状态改变时执行初始化程序20。硬件状态改变的示例是添加或移除NVM 12或电池14。硬件状态改变的另一示例包括NVM 12或电池14的故障。在图4和图9中提供初始化程序20的流程图的示例性实施方式。
当配置为存储服务器的计算机1接收到来自配置为主计算机的计算机1的读取请求时,由CPU 10执行读取请求处理程序21。读取请求处理程序21从存储设备13读取数据并将其发送至配置为主计算机的计算机1。读取请求处理程序21可以将读取的数据暂时高速缓存在高速缓存区域24中,使得将来对相同数据的读取请求具有较低的响应时间。在处理将来的读取请求时,通过降低高速缓存区域24的使用率的周期性处理或通过读取请求处理程序21,从高速缓存区域24中删除在高速缓存区域24中高速缓存的读取数据。在图5和图10中提供读取请求处理程序21的流程图的示例性实施方式。
当配置为存储服务器的计算机1接收到来自配置为主计算机的计算机1的写入请求时,由CPU 10执行写入请求处理程序22。写入请求处理程序22从配置为主计算机的计算机1接收数据,并将其写入存储设备13。写入请求处理程序22可以将写入数据暂时高速缓存在高速缓存区域24中,并向配置为主计算机的计算机1发送响应,使得写入请求具有低响应时间。在处理将来的写入请求时,通过降低高速缓存区域24的使用率的周期性处理或通过写入请求处理程序22,将高速缓存在高速缓存区域24中的写入数据写入存储设备13并且从高速缓存区域24中删除。在图6和图11中提供写入请求处理程序22的流程图的示例。
当配置为存储服务器的计算机1具有NVM 12时,读取请求处理程序21和写入请求处理程序22可以使用NVM 12代替高速缓存区域24来高速缓存读取数据和/或写入数据,或者除了高速缓存区域24之外读取请求处理程序21和写入请求处理程序22还可以使用NVM12来高速缓存读取数据和/或写入数据。
读取请求处理程序21和写入请求处理程序参考高速缓存模式管理表23以确定是否高速缓存读取数据和写入数据以及高速缓存读取数据和写入数据的位置。
图3示出根据示例性实施方式的高速缓存模式管理表23的逻辑布局。高速缓存模式管理表23由读取请求处理程序21和写入请求处理程序22使用,以确定是否高速缓存读取数据和写入数据以及高速缓存读取数据和写入数据的位置。高速缓存模式管理表23包括多个条目。每个条目可涉及I/O请求类型30和高速缓存模式31。I/O请求类型30用于识别从配置为主计算机的计算机1接收到的I/O请求的类型。I/O请求类型30的示例性值是“读取”和“写入”。高速缓存模式31表示针对由I/O请求类型30识别的I/O请求类型的高速缓存方法。然而,高速缓存模式31的示例性值是“在DRAM中进行高速缓存”、“在NVM中进行高速缓存”和“不进行高速缓存”,但是本公开不限于这些值,并且取决于底层硬件和期望的实施方式,还可以使用其他值。
图4示出根据示例性实施方式的初始化程序20的示例性流程图。流程开始于100,其中,初始化程序20通过执行硬件探测来确定是否实施电池14。替代地,初始化程序20可以通过参考存储在存储设备13中的管理员提供的配置文件或通过取决于期望的实施方式的其他方法来确定是否实施电池14。如果实施电池14,则初始化程序20可以通过查询电池14来附加地测试电池14是否工作。如果电池14不工作,则初始化程序20确定即使在物理上存在电池14,也没有实施电池14。
如果电池14被确定为被实施(是),则流程进行到101,其中,初始化程序20在高速缓存模式管理表23中定位具有“读取”的I/O请求类型30的条目,并且将高速缓存模式31设定为“在DRAM中进行高速缓存”。然后流程进行到102,其中,初始化程序20在高速缓存模式管理表23中定位具有“写入”的I/O请求类型30的条目,并且将高速缓存模式31设定为“在DRAM中进行高速缓存”。
如果电池14被确定为没有实施(否),则流程进行到103,其中,初始化程序20通过执行硬件探测来确定是否实施NVM 12。替代地,初始化程序20可以通过参考存储在存储设备13中的管理员提供的配置文件或通过取决于期望的实施方式的其他方法来确定是否实施NVM 12。如果实施NVM 12,则初始化程序20可以通过查询NVM 12来附加地测试NVM 12是否工作。如果NVM 12不工作,则初始化程序20确定即使在物理上存在,也没有实施NVM 12。
如果NVM 12被确定为被实施(是),则流程进行到104,其中,初始化程序20在高速缓存模式管理表23中定位具有“读取”的I/O请求类型30的条目,并且将高速缓存模式31设定为“在DRAM中进行高速缓存”。然后流程进行到105,其中,初始化程序20在高速缓存模式管理表23中定位具有“写入”的I/O请求类型30的条目,并且将高速缓存模式31设定为“在NVM中进行高速缓存”。
如果NVM 12被确定为没有实施(否),则流程进行到106,其中,初始化程序20确定在存储计算机配置中是否允许“不进行高速缓存”选项。如果允许“不进行高速缓存”选项(是),则流程进行到107,其中,初始化程序20在高速缓存模式管理表23中定位具有“读取”的I/O请求类型的条目,并且将高速缓存模式31设定为“在DRAM中进行高速缓存”。然后流程进行到108,其中,初始化程序20在高速缓存模式管理表23中定位具有“写入”的I/O请求类型30的条目,并且将高速缓存模式31设定为“不进行高速缓存”。否则,如果不允许“不进行高速缓存”选项(否),则流程进行到109以输出错误消息,并且然后进行到110以停止计算机1作为存储服务器的配置。
替代地,初始化程序20可以防止计算机1上的存储软件的进一步执行。这防止计算机1成为写入性能差的存储服务器。作为另一种替代方案,初始化程序20可以通知配置为管理服务器的计算机1:配置为存储服务器的计算机1的写入性能差。这允许存储管理员通过例如将电池14或NVM 12添加至计算机1来补救这种情况。
初始化程序20可以基于不同的目的和期望的实施方式来将高速缓存模式管理表23设定为与上述不同的值。例如,初始化程序20可以在104处的流程中将高速缓存模式31设定为“在NVM中进行高速缓存”,并且在流程105中将高速缓存模式31设定为“在DRAM中进行高速缓存”。在NVM 12对于写入比对于读取具有更高的响应时间的情况下,这样的实施方式可以是有效的。
图5示出根据示例性实施方式的读取请求处理程序21的示例性流程图。流程开始于200,其中,读取请求处理程序21通过参考高速缓存模式管理表23并定位具有“读取”的I/O请求类型30的条目来确定高速缓存模式。
如果对应的高速缓存模式31是“在DRAM中进行高速缓存”,则流程进行到201,其中,读取请求处理程序21确定所请求的读取数据是否驻留在高速缓存区域24中。如果所请求的读取数据处于高速缓存区域24中(是),则已发生高速缓存命中,并且流程进行到202,其中,读取请求处理程序21将所请求的读取数据从高速缓存区域24发送到发送读取请求的计算机1。然后流程进行到203,其中,读取请求处理程序21向发送读取请求的计算机1发送读取响应。如果所请求的读取数据不在高速缓存区域24中(否),则已发生高速缓存未命中,并且流程进行到204,其中,读取请求处理程序21从存储设备13读取所请求的读取数据并将其高速缓存到高速缓存区域24中。然后流程进行到203。
如果对应的高速缓存模式31是“在DRAM中进行高速缓存”,则流程进行到205,其中,读取请求处理程序21确定所请求的读取数据是否驻留在NVM 12中。如果所请求的读取数据驻留在NVM 12中(是),则已发生高速缓存命中,并且流程进行到206,其中,读取请求处理程序21将所请求的读取数据从NVM 12发送到发送读取请求的计算机1。如果所请求的读取数据没有驻留在NVM 12中(否),则已发生高速缓存未命中,并且流程进行到207,其中,读取请求处理程序21从存储设备13读取所请求的读取数据并将其高速缓存到NVM 12中。然后流程进行到203。
如果对应的高速缓存模式31是“不进行高速缓存”,则流程进行到208,其中,读取请求处理程序21将所请求的读取数据从存储设备13发送到发送读取请求的计算机1。
图6示出根据示例性实施方式的写入请求处理程序22的示例性流程图。流程开始于300,其中,写入请求处理程序22通过参考高速缓存模式管理表23并定位具有“写入”的I/O请求类型30的条目来确定高速缓存模式。
如果对应的高速缓存模式31是“在DRAM中进行高速缓存”,则流程进行到301,其中,写入请求处理程序22从发送写入请求的计算机1接收所请求的写入数据并且将写入数据高速缓存在高速缓存区域24中。然后流程进行到302,其中,写入请求处理程序22向发送写入请求的计算机1发送写入响应。
如果对应的高速缓存模式31是“在NVM中进行高速缓存”,则流程进行到303,其中,写入请求处理程序22从发送写入请求的计算机1接收所请求的写入数据并且将写入数据高速缓存在NVM 12中。然后流程进行到302。
如果对应的高速缓存模式31是“不进行高速缓存”,则流程进行到304,其中,写入请求处理程序22从发送写入请求的计算机1接收所请求的写入数据并且将写入数据写入存储设备13。然后流程进行到302。
在本公开的第二示例性实施方式中,存储软件可以配置为基于不同存储器类型的可用容量来改变数据被高速缓存的位置。系统的物理配置可以与上述第一示例性实施方式中的配置相同。下面描述系统逻辑配置和系统控制方式的区别。
图7示出根据示例性实施方式的当计算机1配置为存储服务器时的DRAM 11的逻辑布局。当计算机1配置为存储服务器时,DRAM 11包括初始化程序40、读取请求处理程序41、写入请求处理程序42、高速缓存模式管理表43和高速缓存区域44。
当配置为存储服务器的计算机1通电时,初始化程序40由CPU 10执行。也可以在存在硬件状态改变时执行初始化程序40。硬件状态改变的示例是添加或移除DRAM 11或NVM12。
当配置为存储服务器的计算机1接收到来自配置为主计算机的计算机1的读取请求时,由CPU 10执行读取请求处理程序41。当配置为存储服务器的计算机1接收到来自配置为主计算机的计算机1的写入请求时,由CPU 10执行写入请求处理程序42。读取请求处理程序41和写入请求处理程序42基本上分别以与读取请求处理程序21和写入请求处理程序22相同的方式工作,但是本示例性实施方式的不同之处在于,读取请求处理程序41和写入请求处理程序42参考高速缓存容量管理表43来确定高速缓存读取数据和写入数据的位置。高速缓存区域44可以配置为与高速缓存区域24相同,或者根据期望的实施方式进行调整以实施本示例性实施方式。
图8示出根据示例性实施方式的高速缓存容量管理表43的逻辑布局。高速缓存容量管理表43由读取请求处理程序41和写入请求处理程序42使用,以确定高速缓存读取数据和写入数据的位置。高速缓存容量管理表43可以包括多个条目。每个条目可以包括I/O请求类型50、可使用的DRAM 51、已使用的DRAM 52、可使用的NVM 53和已使用的NVM 54。I/O请求类型50用于识别从配置为主计算机的计算机1接收到的I/O请求的类型。I/O请求类型50的示例性值是“读取”和“写入”。可使用的DRAM 51表示将被用于高速缓存由I/O请求类型50所识别的I/O请求的类型所产生的数据的DRAM 11的最大容量。已使用的DRAM 52表示用于高速缓存由I/O请求类型50所识别的I/O请求的类型所产生的数据的当前容量。当读取请求处理程序41或写入请求处理程序42将数据高速缓存在高速缓存区域44中时,已使用的DRAM52增加。
例如通过周期性处理删除高速缓存区域44中高速缓存的数据时,已使用的DRAM52减少。可使用的NVM 53表示将被用于高速缓存由I/O请求类型50所识别的I/O请求的类型所产生的数据的NVM 12的最大容量。已使用的NVM 54表示用于高速缓存由I/O请求类型50所识别的I/O请求的类型所产生的数据的当前容量。当读取请求处理程序41或写入请求处理程序42将数据高速缓存在NVM 12中时,已使用的NVM 54增加。例如通过周期性处理删除NVM 12中高速缓存的数据时,已使用的NVM 54减少。
图9示出根据示例性实施方式的初始化程序40的示例性流程图。流程开始于400,其中,初始化程序40通过执行硬件探测来确定DRAM11和NVM 12的可用容量。替代地,初始化程序40可以通过参考存储在存储设备13中的管理员提供的配置文件或通过取决于期望的实施方式的其他方法来确定DRAM 11和NVM 12的可用容量。在401处,初始化程序40基于在400处的流程中确定的DRAM 11和NVM 12的可用容量,确定DRAM 11和NVM 12用于读取和写入高速缓存的可使用的容量。
可以在401处的确定中使用的一种算法是将DRAM 11和NVM 12均匀地分配给读取和写入。在该算法中,DRAM 11用于读取高速缓存的可使用的容量是在400处的流程中确定的DRAM 11的可用容量减去工作的存储器所需的容量,之后再除以2。NVM 12用于读取高速缓存的可使用的容量是在400处的流程中确定的NVM 12的可用容量除以2。DRAM 11和NVM12用于写入高速缓存的可使用的容量与用于读取高速缓存的可使用的容量相同。可以在该确定中使用的另一种算法是将DRAM 11的预定部分分配给写入。例如,DRAM 11用于写入高速缓存的可使用的容量被预先确定为12千兆字节(GB)。DRAM 11用于读取高速缓存的可使用的容量是在400处的流程中确定的DRAM 11的可用容量减去工作的存储器所需的容量,之后再减去12GB。NVM 12用于读取高速缓存的可使用的容量等于在400处的流程中确定的NVM12的可用容量,并且NVM 12用于写入的可使用的容量为0。取决于期望的实施方式,也可以使用其他算法。
在402处,初始化程序40定位具有“读取”的I/O请求类型50的条目,并且将可使用的DRAM 51和可使用的NVM 53设定为在401处的流程中确定的值,并且将已使用的DRAM 52和已使用的NVM 54设定为0。初始化程序40还定位具有“写入”的I/O请求类型50的条目,并且将可使用的DRAM 51和可使用的NVM 53设定为在401处的流程中确定的值,并且将已使用的DRAM 52和已使用的NVM 54设定为0。
图10示出根据示例性实施方式的读取请求处理程序41的示例性流程图。流程开始于500,其中,读取请求处理程序41确定所请求的读取数据是否驻留在高速缓存区域44或NVM 12中。如果读取数据驻留在高速缓存区域44或NVM 12中(是),则已发生高速缓存命中,并且流程进行到501,其中,读取请求处理程序41将所请求的读取数据从高速缓存区域44或NVM 12(取决于其所高速缓存的位置)发送到发送读取请求的计算机1。然后流程进行到502,其中,读取请求处理程序41向发送读取请求的计算机1发送读取响应。如果读取数据没有驻留在高速缓存区域44或NVM 12中(否),则已发生高速缓存未命中,并且流程进行到503,其中,读取请求处理程序41基于高速缓存容量管理表43中的信息来分配高速缓存区域44或NVM 12中的区域以用于高速缓存所请求的读取数据。
在503处可以用于分配的一个算法是优先考虑高速缓存区域44中的分配,因为DRAM 11倾向于比NVM 12更快。在该算法中,读取请求处理程序41在高速缓存容量管理表43中定位具有“读取”的I/O请求类型50的条目,并且如果条目的可使用的DRAM 51减去条目的已使用的DRAM 52大于所请求的读取数据,则分配高速缓存区域44中的区域。如果在高速缓存区域44中不能分配区域,则读取请求处理程序41在条目的可使用的NVM 53减去条目的已使用的NVM 54大于所请求的读取数据的大小的情况下分配NVM 12中的区域。如果既不能在高速缓存区域44也不能在NVM 12中分配区域,则读取请求处理程序41从高速缓存区域44或NVM 12中删除其他读取数据,然后分配区域。可以在503处用于分配的另一算法是从高速缓存区域44和NVM12中统一分配。在该算法中,读取请求处理程序41在高速缓存容量管理表43中定位具有“读取”的I/O请求类型的条目并且分配高速缓存区域44或NVM 12中的区域,这里选择高速缓存44和NVM 12的概率与条目的可使用的DRAM 52和可使用的NVM 53成比例。取决于期望的实施方式,也可以使用其他算法。
在504处,读取请求处理程序41从存储设备13读取所请求的读取数据,并且在503处的流程中分配的区域中高速缓存所请求的读取数据。然后流程进行到501。
图11示出根据示例性实施方式的写入请求程序42的示例性流程图。流程开始于600,其中,写入请求处理程序42确定所请求的写入数据的旧版本是否驻留在高速缓存区域44或NVM 12中。如果写入数据驻留在高速缓存区域44或NVM 12中(是),则已发生高速缓存命中,并且流程进行到601,其中,写入请求处理程序42从发送写入请求的计算机1接收所请求的写入数据,并且取决于分配的高速缓存区域的位置,将写入数据高速缓存在高速缓存区域44或NVM 12中。在602处,写入请求处理程序42向发送写入请求的计算机1发送写入响应。
如果写入数据没有驻留在高速缓存区域44或NVM 12中,则已发生高速缓存未命中,并且流程进行到603,其中,写入请求处理程序42基于高速缓存容量管理表43中的信息来分配高速缓存区域44或NVM 12中的区域以用于高速缓存所请求的读取数据。在603处可以用于分配的一个算法是优先考虑高速缓存区域44中的分配,其中,DRAM42在高速缓存容量管理表32中定位具有“写入”的I/O请求类型50的条目,并且如果条目的可使用的DRAM 51减去条目的已使用的DRAM 52大于所请求的写入数据的大小,则分配高速缓存区域44中的区域。如果在高速缓存区域44中不能分配区域,则写入请求处理程序42在条目的可使用的NVM 53减去条目的已使用的NVM 54大于所请求的写入数据的大小的情况下分配NVM 12中的区域。如果既不能在高速缓存区域44也不能在NVM 12中分配区域,则写入请求处理程序42将高速缓存在高速缓存区域44或NVM 12中的其他写入数据写入存储设备13、从高速缓存区域44或NVM 12中删除其他写入数据,然后分配区域。
可以在603处用于分配的另一算法是从高速缓存区域44和NVM12中统一分配。在该算法中,写入请求处理程序42在高速缓存容量管理表43中定位具有“写入”的I/O请求类型50的条目并且分配高速缓存区域44或NVM 12中的区域,这里选择高速缓存区域44和NVM 12的概率与条目的可使用的DRAM 52和可使用的NVM 53成比例。然后流程进行到601。
因此,在示例性实施方式中,存储软件可以适应于不同的硬件配置。因此,示例性实施方式可以用于将用户拥有的硬件转变为存储服务器,这里可能预先不知道用户拥有的硬件的能力。示例性实施方式也可以用于存在多种硬件配置和可能预先不知道硬件配置中的哪一个将变成存储服务器的数据中心中。
根据计算机内的操作的算法和符号表示来呈现详细描述的一些部分。这些算法描述和符号表示是数据处理领域的技术人员用来将其创新的本质传达给本领域其他技术人员的手段。算法是导致期望的最终状态或结果的一系列定义的步骤。在示例性实施方式中,所执行的步骤需要对有形数量进行物理操纵以实现有形的结果。
除非特别声明,否则从讨论中显而易见的是,应当理解,在整个说明书中,使用诸如“处理”、“运算”、“计算”、“确定”、“显示”等的术语的讨论可以包括计算机系统或其他信息处理设备的动作和处理,其将在计算机系统的寄存器和存储器内表示为物理(电子)量的数据操纵并转换为在计算机系统的存储器或寄存器或其他信息存储、传输或显示设备内类似地表示为物理量的其他数据。
示例性实施方式还可以涉及用于执行本文的操作的装置。该装置可以为了所需的目的而专门构造,或者其可以包括由一个或多个计算机程序选择性地激活或重新配置的一个或多个通用计算机。这样的计算机程序可以存储在诸如计算机可读存储介质或计算机可读信号介质的计算机可读介质中。计算机可读存储介质可以涉及有形介质(诸如但不限于光盘、磁盘、只读存储器、随机存取存储器、固态设备和驱动器)或适用于存储电子信息的任何其他类型的有形或非暂时性介质。计算机可读信号介质可以包括诸如载波的介质。本文呈现的算法和显示并不固有地涉及任何特定的计算机或其他装置。计算机程序可以涉及纯软件实施方式,其涉及执行期望的实施方式的操作的指令。
根据本文的示例,各种通用系统可以与程序和模块一起使用,或者可以证明构造更专用的装置以执行期望的方法步骤是方便的。另外,不参考任何特定的编程语言来描述示例性实施方式。应当理解,可以使用各种编程语言来实施本文描述的示例性实施方式的教导。编程语言的指令可以由一个或多个处理设备执行,例如中央处理单元(CPU)、处理器或控制器。
如本领域所知,上述操作可以通过硬件、软件或者软件和硬件的一些组合来执行。示例性实施方式的各个方面可以使用电路和逻辑设备(硬件)来实施,而其他方面可以使用存储在机器可读介质上的指令(软件)来实施,如果由处理器执行,则该指令将使处理器执行用于执行本申请的实施方式的方法。此外,本申请的一些示例性实施方式可以仅以硬件来执行,而其他示例性实施方式可以仅以软件来执行。此外,所描述的各种功能可以在单个单元中执行,或者可以以任意数量的方式分布在多个组件上。当由软件执行时,方法可以基于存储在计算机可读介质上的指令由诸如通用计算机的处理器执行。如果需要,指令可以以压缩和/或加密格式存储在介质上。
此外,考虑到本申请的教导的说明和实践,本申请的其他实施方式对于本领域技术人员将是显而易见的。所描述的示例性实施方式的各个方面和/或组件可以单独使用或以任何组合方式使用。旨在将说明书和示例性实施方式仅视为示例,本申请的真实范围和精神由所附权利要求指示。

Claims (9)

1.一种存储服务器,包括:
存储器,所述存储器配置为存储将输入/输出I/O请求操作类型与指示高速缓存类型的可用性的一个或多个参数相关联的信息,所述高速缓存类型包括非易失性存储器NVM和动态随机存取存储器DRAM中的至少一个,根据所述存储服务器的硬件配置的检测来生成所述信息;和
处理器,所述处理器配置为:
基于指示与所述I/O请求操作类型相关联的高速缓存类型的可用性的一个或多个参数,针对所述I/O请求操作类型选择高速缓存模式;并且
对于是所述I/O请求操作类型的I/O请求操作的接收,根据所选择的高速缓存模式来处理所述I/O请求操作,
其中,根据指示所述存储服务器中的NVM的可用性的一个或多个参数,针对所述I/O请求操作类型选择所述高速缓存模式包括:针对写入操作的I/O请求操作类型,将所述高速缓存模式设定为NVM高速缓存,
其中,根据指示所述存储服务器中的NVM的不可用性和DRAM高速缓存的备份操作的不可用性的一个或多个参数,针对所述I/O请求操作类型选择所述高速缓存模式包括:针对所述写入操作的I/O请求操作类型,将所述高速缓存模式设定为不进行高速缓存,
其中,DRAM高速缓存的备份操作的不可用性包括DRAM的电池支持的不可用性,其中,根据指示DRAM的电池支持的可用性的一个或多个参数,针对所述I/O请求操作类型选择所述高速缓存模式包括:针对所述写入操作的I/O请求操作类型,将所述高速缓存模式设定为DRAM高速缓存。
2.根据权利要求1所述的存储服务器,其中,指示所述高速缓存类型的可用性的一个或多个参数包括可使用的NVM高速缓存容量和可使用的DRAM高速缓存容量。
3.根据权利要求2所述的存储服务器,其中,所述处理器配置为根据可用的NVM高速缓存容量和可用的DRAM高速缓存容量来计算所述可使用的NVM高速缓存容量和所述可使用的DRAM容量。
4.根据权利要求1所述的存储服务器,其中,所述I/O请求操作类型包括读取操作和写入操作。
5.一种用于存储服务器的方法,包括:
管理将输入/输出I/O请求操作类型与指示高速缓存类型的可用性的一个或多个参数相关联的信息,所述高速缓存类型包括非易失性存储器NVM和动态随机存取存储器DRAM中的至少一个,根据所述存储服务器的硬件配置的检测来生成所述信息;
基于指示与所述I/O请求操作类型相关联的高速缓存类型的可用性的一个或多个参数,针对所述I/O请求操作类型选择高速缓存模式;以及
对于是所述I/O请求操作类型的I/O请求操作的接收,根据所选择的高速缓存模式来处理所述I/O请求操作,
其中,根据指示所述存储服务器中的NVM的可用性的一个或多个参数,针对所述I/O请求操作类型选择所述高速缓存模式包括:针对写入操作的I/O请求操作类型,将所述高速缓存模式设定为NVM高速缓存,
其中,根据指示所述存储服务器中的NVM的不可用性和DRAM高速缓存的备份操作的不可用性的一个或多个参数,针对所述I/O请求操作类型选择所述高速缓存模式包括:针对所述写入操作的I/O请求操作类型,将所述高速缓存模式设定为不进行高速缓存,
其中,DRAM高速缓存的备份操作的不可用性包括DRAM的电池支持的不可用性,其中,根据指示DRAM的电池支持的可用性的一个或多个参数,针对所述I/O请求操作类型选择所述高速缓存模式包括:针对写入操作的I/O请求操作类型,将所述高速缓存模式设定为DRAM高速缓存。
6.根据权利要求5所述的方法,其中,指示所述高速缓存类型的可用性的一个或多个参数包括可使用的NVM高速缓存容量和可使用的DRAM高速缓存容量。
7.根据权利要求6所述的方法,还包括:根据可用的NVM高速缓存容量和可用的DRAM高速缓存容量来计算所述可使用的NVM高速缓存容量和所述可使用的DRAM容量。
8.根据权利要求5所述的方法,其中,所述I/O请求操作类型包括读取操作和写入操作。
9.一种存储用于执行存储服务器的处理的指令的计算机可读存储介质,所述指令包括:
管理将输入/输出I/O请求操作类型与指示高速缓存类型的可用性的一个或多个参数相关联的信息,所述高速缓存类型包括非易失性存储器NVM和动态随机存取存储器DRAM中的至少一个,根据所述存储服务器的硬件配置的检测来生成所述信息;
基于指示与所述I/O请求操作类型相关联的高速缓存类型的可用性的一个或多个参数,针对所述I/O请求操作类型选择高速缓存模式;以及
对于是所述I/O请求操作类型的I/O请求操作的接收,根据所选择的高速缓存模式来处理所述I/O请求操作,
其中,根据指示所述存储服务器中的NVM的可用性的一个或多个参数,针对所述I/O请求操作类型选择所述高速缓存模式包括:针对写入操作的I/O请求操作类型,将所述高速缓存模式设定为NVM高速缓存,
其中,根据指示所述存储服务器中的NVM的不可用性和DRAM高速缓存的备份操作的不可用性的一个或多个参数,针对所述I/O请求操作类型选择所述高速缓存模式包括:针对所述写入操作的I/O请求操作类型,将所述高速缓存模式设定为不进行高速缓存,
其中,DRAM高速缓存的备份操作的不可用性包括DRAM的电池支持的不可用性,其中,根据指示DRAM的电池支持的可用性的一个或多个参数,针对所述I/O请求操作类型选择所述高速缓存模式包括:针对写入操作的I/O请求操作类型,将所述高速缓存模式设定为DRAM高速缓存。
CN201580082637.2A 2015-12-03 2015-12-03 在软件定义的存储系统中进行高速缓存的方法和装置 Active CN108027710B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2015/063831 WO2017095429A1 (en) 2015-12-03 2015-12-03 Method and apparatus for caching in software-defined storage systems

Publications (2)

Publication Number Publication Date
CN108027710A CN108027710A (zh) 2018-05-11
CN108027710B true CN108027710B (zh) 2020-11-06

Family

ID=58797631

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580082637.2A Active CN108027710B (zh) 2015-12-03 2015-12-03 在软件定义的存储系统中进行高速缓存的方法和装置

Country Status (3)

Country Link
US (1) US10515016B2 (zh)
CN (1) CN108027710B (zh)
WO (1) WO2017095429A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10365980B1 (en) * 2017-10-31 2019-07-30 EMC IP Holding Company LLC Storage system with selectable cached and cacheless modes of operation for distributed storage virtualization
US10474545B1 (en) 2017-10-31 2019-11-12 EMC IP Holding Company LLC Storage system with distributed input-output sequencing

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102567224A (zh) * 2010-12-02 2012-07-11 微软公司 高效高速缓存管理
CN103067467A (zh) * 2012-12-21 2013-04-24 深信服网络科技(深圳)有限公司 缓存方法及装置
CN103136119A (zh) * 2011-11-29 2013-06-05 索尼公司 非易失性高速缓冲存储器、其处理方法以及计算机系统
CN103988183A (zh) * 2011-12-20 2014-08-13 英特尔公司 2级存储器分级结构中的存储器侧高速缓存的动态部分断电
CN104487952A (zh) * 2012-05-22 2015-04-01 网络装置公司 用于闪存存储的i/o访问模式专用
WO2015057989A1 (en) * 2013-10-18 2015-04-23 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for adaptive reserve storage
CN104620193A (zh) * 2012-09-10 2015-05-13 德克萨斯仪器股份有限公司 在不一致供电期间的基于非易失性逻辑阵列的计算

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4154893B2 (ja) * 2002-01-23 2008-09-24 株式会社日立製作所 ネットワークストレージ仮想化方法
US7380067B2 (en) 2004-07-19 2008-05-27 Infortrend Technology, Inc. IO-stream adaptive write caching policy adjustment
KR100755702B1 (ko) 2005-12-27 2007-09-05 삼성전자주식회사 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 그 동작방법
CN102033713A (zh) * 2009-09-24 2011-04-27 凹凸电子(武汉)有限公司 电子系统、控制器及数据传输方法
WO2011087820A2 (en) * 2009-12-21 2011-07-21 Sanmina-Sci Corporation Method and apparatus for supporting storage modules in standard memory and/or hybrid memory bus architectures
US9069587B2 (en) * 2011-10-31 2015-06-30 Stec, Inc. System and method to cache hypervisor data
WO2014102882A1 (en) * 2012-12-28 2014-07-03 Hitachi, Ltd. Storage apparatus and storage control method
US9213633B2 (en) * 2013-04-30 2015-12-15 Seagate Technology Llc Flash translation layer with lower write amplification
US20160253114A1 (en) * 2013-11-14 2016-09-01 Hitachi, Ltd. Method and apparatus for optimizing data storage in heterogeneous environment
US9251064B2 (en) * 2014-01-08 2016-02-02 Netapp, Inc. NVRAM caching and logging in a storage system

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102567224A (zh) * 2010-12-02 2012-07-11 微软公司 高效高速缓存管理
CN103136119A (zh) * 2011-11-29 2013-06-05 索尼公司 非易失性高速缓冲存储器、其处理方法以及计算机系统
CN103988183A (zh) * 2011-12-20 2014-08-13 英特尔公司 2级存储器分级结构中的存储器侧高速缓存的动态部分断电
CN104487952A (zh) * 2012-05-22 2015-04-01 网络装置公司 用于闪存存储的i/o访问模式专用
CN104620193A (zh) * 2012-09-10 2015-05-13 德克萨斯仪器股份有限公司 在不一致供电期间的基于非易失性逻辑阵列的计算
CN103067467A (zh) * 2012-12-21 2013-04-24 深信服网络科技(深圳)有限公司 缓存方法及装置
WO2015057989A1 (en) * 2013-10-18 2015-04-23 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for adaptive reserve storage

Also Published As

Publication number Publication date
US10515016B2 (en) 2019-12-24
WO2017095429A1 (en) 2017-06-08
CN108027710A (zh) 2018-05-11
US20180253383A1 (en) 2018-09-06

Similar Documents

Publication Publication Date Title
US9495294B2 (en) Enhancing data processing performance by cache management of fingerprint index
CN107241913B (zh) 信息处理装置
US10248322B2 (en) Memory system
US10747440B2 (en) Storage system and storage system management method
JP2013257801A (ja) サーバコンピュータおよびドライブ制御装置
GB2526849A (en) Dynamic cache allocation policy adaptation in a data processing apparatus
US20170185520A1 (en) Information processing apparatus and cache control method
US10176098B2 (en) Method and apparatus for data cache in converged system
JP2016511474A (ja) 階層化ストレージにおける重複排除及びホストベースQoS
US8407434B2 (en) Sequentially written journal in a data store
US20160196085A1 (en) Storage control apparatus and storage apparatus
US10234929B2 (en) Storage system and control apparatus
US20140344503A1 (en) Methods and apparatus for atomic write processing
CN108027710B (zh) 在软件定义的存储系统中进行高速缓存的方法和装置
US20120047330A1 (en) I/o efficiency of persistent caches in a storage system
US10191855B2 (en) Caching systems and methods for page reclamation with simulated NVDRAM in host bus adapters
US20180232312A1 (en) Storage control device, method of storing data, and storage system
US9164904B2 (en) Accessing remote memory on a memory blade
US10585622B2 (en) Data writing device and method
US8850087B2 (en) Storage device and method for controlling the same
US11315028B2 (en) Method and apparatus for increasing the accuracy of predicting future IO operations on a storage system
KR20150016886A (ko) 데이터 생성 또는 소비에 기반하여 캐시된 입출력 데이터를 필터링하는 방법
US10061667B2 (en) Storage system for a memory control method
JP6919277B2 (ja) ストレージシステム、ストレージ管理装置、ストレージ管理方法、及びプログラム
US10983882B2 (en) Method for latency improvement of storages using low cost hardware

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant