CN103999062A - 经分段的高速缓存 - Google Patents

经分段的高速缓存 Download PDF

Info

Publication number
CN103999062A
CN103999062A CN201180075893.0A CN201180075893A CN103999062A CN 103999062 A CN103999062 A CN 103999062A CN 201180075893 A CN201180075893 A CN 201180075893A CN 103999062 A CN103999062 A CN 103999062A
Authority
CN
China
Prior art keywords
segmentation
software
locking
cache information
equipment
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.)
Pending
Application number
CN201180075893.0A
Other languages
English (en)
Inventor
F.C.托马斯三世
W.A.加斯帕德
C.W.苏
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
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 Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of CN103999062A publication Critical patent/CN103999062A/zh
Pending legal-status Critical Current

Links

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/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
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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/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/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-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/60Details of cache memory
    • G06F2212/6042Allocation of cache space to multiple users or processors
    • 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/7205Cleaning, compaction, garbage collection, erase control
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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

经分段的高速缓存
背景技术
计算设备可以包括诸如闪速存储器之类的具有相对快速访问时间的快存储设备。快存储设备可以被用作高速缓存来存储被频繁访问的信息。然而,与诸如硬盘驱动器(HDD)之类的具有相对缓慢的访问时间的其它类型的存储设备相比,每存储单元的快存储设备可能相对更加昂贵。
结果,快存储设备可以具有相对较小的存储容量。如果快存储设备被充满容量,则计算设备的性能可能会受到影响。制造商受到要更加高效地使用快存储设备以便改进计算设备的性能的挑战。
附图说明
下述详细说明参考附图,其中:
图1是具有包括多个分段的第一非易失性存储器的设备的示例性框图;
图2是图1的第一非易失性存储器的示例性框图;
图3是包括用于分段和锁定(pin)第一非易失性存储器的指令的计算设备的示例性框图;
图4是用于分段和锁定第一非易失性存储器的方法的示例性流程图;并且
图5是用于分段和锁定第一非易失性存储器的方法的另一个示例性流程图。
具体实施方式
在下述描述中给出具体细节来提供对实施例的彻底理解。然而,本领域普通技术人员应该理解,可以在没有这些具体细节的情况下实践所述实施例。例如,系统可以以框图示出,以便不会不必要地详细地使实施例模糊。在其他实例中,公知的过程、结构和技术可以在没有不必要的细节的情况下被示出,以便避免使实施例模糊。
除了诸如硬盘驱动器(HDD)之类的慢速存储设备之外,计算设备可以包括诸如闪速存储器之类的快速存储设备。快速存储设备可以具有比慢速存储设备更低的等待时间。计算设备可以通过在快速存储设备而不是慢速存储设备处存储更多被频繁访问的信息(诸如高速缓存信息)来提高性能。例如,计算设备可以使用快速存储设备作为用以存储包括被频繁访问的软件代码和/或其数据的高速缓存信息的高速缓存。计算设备可以立即(直写(write-through))或者在一段时间之后(回写(write-back))而将在快速存储设备处的经更新的高速缓存信息写到慢速存储设备。例如,在高速缓存被清除之后,快速存储设备中的非临时性文件可以被镜像到慢速存储设备中。
然而,快速存储设备可能不具有足够大的存储容量来存储正被计算设备使用的所有高速缓存信息。同样,如果高速缓存信息不是从快速存储设备中可检索的(诸如在高速缓存缺失期间),则缺失的高速缓存信息可以从慢速存储设备中被检索。因此,快速存储设备的存储容量可能间接地充当对计算设备的性能的瓶颈。此外,由于快速存储设备通常每存储器单元比慢速存储设备显著地更昂贵,快速存储设备的存储容量通常不可以增加。
另外,由于第一应用被用户连续地使用,其更多的高速缓存信息可以填充快速存储设备,允许第一应用变得逐渐更加响应迅速并且/或者在性能上改进。例如,第一应用可以越来越快地启动或运行。然而,如果用户开始使用第二应用,由于用户等待第二应用的高速缓存信息越来越多地填充快速存储设备,这种响应性可能会丢失。
此外,由于快速存储设备的受限的存储容量,第一应用的高速缓存信息可能用第二应用的高速缓存信息而被重写。因此,如果用户切换回第一应用,则与之前相比,第一应用可能最初也不太响应迅速。因此,由于等待用当前使用中的应用的高速缓存信息来填充快速存储设备,当还原回先前所使用的应用时,新启动的应用可能不是立即响应的并且/或者响应性可能丢失。
甚至对于第一应用的第一访问或即使诸如第二应用之类的另一个应用在第一应用的访问之间被大量地使用,实施例也可以允许诸如第一应用之类的软件成为立即响应的或最初更响应迅速的。例如,在实施例中,快速存储设备可以被划分成分段。这些分段中的至少一个(诸如第一分段)可以被锁定到诸如第一应用之类的软件类型,以便仅存储该类型的软件的高速缓存信息。另外,甚至在该类型的软件被访问之前,该类型的软件的高速缓存信息也可以填充锁定于其的分段。
例如,第一应用可以被锁定到第一分段。因此,甚至在第一应用被访问之前,第一应用的高速缓存信息的至少部分(诸如用于启动第一应用的软件代码)也可以被存储在第一分段处。因此,甚至在通过用户的第一访问时,第一应用可以是更响应迅速的(诸如通过更快地启动)。用户可能大量地使用第二应用,并且然后切换回第一应用。尽管如此,第一应用将保持响应迅速,这是因为其高速缓存信息将会被保留在第一分段中。
现在参考附图,图1是具有包括多个分段142-1到142-n的第一非易失性存储器140的设备100的示例性框图。设备100的示例可以包括笔记本计算机、台式计算机、一体化系统、平板计算设备、便携式阅读设备、无线电子邮件设备、移动电话等等。在图1的实施例中,设备100包括处理器110、分段模块120、锁定模块130和第一非易失性存储器140。第一非易失性存储器140进一步包括多个分段141-1到141-n,其中n是大于1的自然数。
处理器110可以是适合于从第一非易失性存储器140和/或被配置成执行下述任何模块120和130的功能的电子电路检索并执行指令的CPU、GPU或微处理器。第一非易失性存储器140可以是一个或多个非易失性机器可读存储介质,诸如甚至当不被供电时也保留所存储的信息的任何电子、磁性、光学或其他物理存储设备。第一非易失性存储器140的示例可以包括固态驱动器(SSD)或闪速存储器。
模块120和130中的每一个可以包括例如包括用于实现下述功能的电子电路的硬件设备。附加地或作为替换,每个模块可以被实现为编码在机器可读存储介质(诸如第一非易失性存储器140)上并被处理器110可执行的一系列指令。在实施例中,模块120和130中的部分可以被实现为硬件设备,而其他模块被实现为可执行的指令。例如,模块120和130可以被实现为由运行在设备100上的操作系统(OS)(未示出)所运行的应用的部分。
第一非易失性存储器140可以被用做用于存储高速缓存信息的高速缓存。与设备100的第二非易失性存储器(未示出)相比,第一非易失性存储器140可以具有更低的等待时间。第二非易失性存储器可以存储多个类型的软件(诸如第一和/或第二类型的软件)。第二非易失性存储器可以是一个或多个非易失性机器可读存储介质,诸如甚至当不被供电时也保留所存储的信息的任何电子、磁性、光学或其他物理存储设备。第二非易失性存储器的示例可以包括硬盘驱动器(HDD)或存储驱动器。
高速缓存信息包括可以包括可能被再次使用或频繁使用的信息,诸如软件指令和/或与其相关的数据,诸如元数据和/或被用户或软件所生成或修改数据。例如,多个类型的软件(诸如OS、应用或web(网络)浏览器)或硬件(诸如处理器110或另一个存储器)的高速缓存信息可以被存储在第一非易失性存储器140处以用于对高速缓存数据更快的访问。
分段模块120要将第一非易失性存储器140划分成多个分段142-1到142-n。分段142-1到142-n的数量和每个分段142-1到142-n的大小可以是可变的。锁定模块130可以将多个类型的软件中的一个或多个锁定到多个分段142-1到142-n中的一个或多个。例如,锁定模块130可以将多个类型的软件中的第一类型的软件锁定到多个分段142-1到142-n中的第一分段142-1。
锁定模块130也可以将多个类型的软件中的第二类型的软件锁定到多个分段142-1到142-n中的第二分段142-2,第二锁定分段142-2用来存储与第二类型的软件关联的高速缓存信息。第二分段142-2可以是尚未被锁定的多个分段142-1到142-n中的任何一个。实施例可以包括直到被锁定的多个分段142-1到142-n中的所有分段。然而,通常多个分段142-1到142-n中的一个(诸如第三分段142-3)可以保持未被锁定以充当通用的高速缓存。下文可以关于图2更加详细地解释第一非易失性存储器140的示例。
锁定分段142-1到142-n中的一个可以指的是保留或使被锁定的分段的存储器空间永久用于特定使用。因此,如果第一类型的软件被锁定到第一分段142-1,第一锁定分段142-1可以存储与第一类型的软件关联的高速缓存信息。另外,第一锁定分段142-1可能不存储与第一类型的软件不关联的任何高速缓存信息(诸如第二类型的软件的高速缓存信息)。软件类型的示例可以包括至少部分OS、诸如引导、冬眠、关闭或休眠过程之类的过程、web浏览器、诸如图形编辑程序或CAD程序编辑器之类的生产力工具、软件框架、用户应用、厂商应用等。
当诸如第一类型的软件之类的软件类型之一被锁定到诸如第一分段142-1之类的分段142-1到142-n之一时,锁定模块130可以将诸如文件或逻辑块地址(LBA)之类的代码和/或与被最频繁使用的第一类型的软件相关的数据存储到第一分段142-1。例如,所述代码可以包括源和/或运行时间代码并且所述数据可以包括元数据和/或用户数据。另外,甚至在第一类型的软件被最初启动之前,至少一些代码(诸如用于启动第一类型的软件的代码)可以被存储到第一分段142-1,以便更快地启动第一类型的软件。在此类情况下,对第一类型的软件的调用可以从第二非易失性存储器指向第一非易失性存储器140。
另外,当启动和/或修改第一类型的软件时以及当第一分段142-1被访问时,可以用第一类型的软件的代码来更新第一分段142-1。可替换地或附加地,可以基于第一类型的软件的使用率而更新第一分段142-1。使用率可以指的是在给定的时间段期间,软件类型被访问和/或修改的次数。例如,如果第一类型的软件的使用率大于阈值使用率,则锁定模块130可以更新第一分段142-1。锁定模块130可以通过将存储在第二非易失性存储器处的第一类型的软件的文件或LBA的更新版本推送到第一分段142-1以便替换其先前的版本。
尽管图1仅描述了被锁定在分段142-1到142-n中的一个的单个类型的软件,实施例可以包括被锁定在分段142-1到142-n中的一个的多于一种类型的软件。分段142-1到142-n的大小和数量以及被锁定到分段142-1到142-n中的任何分段的软件的类型可以例如通过厂商、用户和/或模块120和130被确定。另外,在实施例中,分段142到142-n的大小、数量和锁定中的任何一个可以是静态的或动态变化的。术语静态的可以指的是锁定的或不可改变的情况。例如,锁定到静态分段的软件的大小或类型可以不被用户改变。基于软件类型的使用率,锁定模块130可以确定哪种软件类型将要被锁定在分段142-1到142-n中的哪个。
在一个示例中,厂商可以寻求保证设备100快速地引导。因此,厂商可以创建第一分段142-1并且静态地将诸如引导过程之类的OS过程锁定到第一分段142-1来减少设备100的引导时间。由于第一非易失性存储器140可以在不被供电的情况下保留信息,在设备100被断电的情况下,与引导过程相关的高速缓存信息将不会被丢失。
在另一个示例中,用户可以经由图形用户界面(GUI)来变化分段142-1到142-n的大小,删除或添加分段142-1到142-n和/或改变哪种软件类型被锁定到分段142-1到142-n。GUI可以运行在设备100的OS上并且经由应用编程界面(API)与第一非易失性存储器140交互。
在又另一个示例中,分段和/或锁定模块120和130可以经由适应性算法动态地变化分段142到142-n的大小、数量和/或锁定。例如,分段模块120可以自动地减少分段142-1到142-n中通常没有被完全充满的一个的大小,或者增加分段142-1到142-n中通常被完全充满的另一个的大小。软件类型的响应性可以是锁定于其的分段的大小的函数。分段模块120也可以删除分段142-1到142-n中被锁定到不被经常访问的软件类型的一个分段,以便增加分段142-1到142-n中被经常访问的另一个分段的大小。
设备100也可以包括用于单个类型的软件的多种实例。例如,设备100可以包括诸如Internet Explorer和Firefox之类的两个web浏览器。在这种情况下,web浏览器类型的软件的所有实例的高速缓存信息可以被指向锁定到web浏览器类型的软件的分段,诸如第三分段142-3。可替换地,用户、厂商和/或锁定模块130可以确定软件类型的哪个实例要被锁定。例如,因为用户使用Firefox多于Internet Explorer,所以用户可以将Firefox锁定到第三分段142-3而不是将Internet Explorer锁定到第三分段142-3。锁定模块130可以基于使用率来确定锁定单个类型的软件的哪个实例。例如,锁定模块130可以锁定具有最高使用率的实例。
在一个实施例中,诸如在第一非易失性存储器140和第二非易失性存储器是混合驱动器的部分的情况下,设备100可以包括用来控制第一非易失性存储器140和第二非易失性存储器的存储器控制器(未示出)。在这种情况下,分段和锁定模块120和130可以经由OS而与存储器控制器通信来进行创建和锁定多个分段142-1到142-n中的至少一项。例如,分段和锁定模块120和130可以经由SATA接口、PATA接口、标记的短命令文件、或其他混合驱动器通信机制与存储器控制器通信。
如上所述,与RAM不同,即使设备100处于关闭状态,高速缓存信息也将被保留在第一非易失性存储器140中。然而,用户和/或厂商可能不希望所有的高速缓存信息都被保留。例如,用户和/或厂商可能希望像个人的或私有的信息之类的机密的高速缓存信息和/或像设备100的组件的瞬时上下文信息之类的不必要的高速缓存信息会被擦除。尽管如此,用户和/或厂商可以仍然寻求保留高速缓存信息的剩余部分(诸如用于设备100的更快引导的引导过程的高速缓存信息或用于用户应用更快启动和/或运行的用户应用的高速缓存信息)。
设备100可以包括擦除模块(未示出),所述擦除模块用于在OS要进入降低功率状态以及用户选择要擦除多个分段中的一个或多个中的至少一个的情况下单独地擦除所述多个分段142-1到142-n中的一个或多个。降低功率状态的示例可以包括设备100进入关闭状态、冬眠状态或者休眠状态。例如,用户和/或厂商可以将设备100设置成在进入降低功率状态之前自动地擦除分段142-1到142-n中的一个或多个。附加地,用户可以在设备100的操作期间诸如通过GUI来擦除分段142-1到142-n中的又一个。在分段142-1到142-n中的又一个已经被成功地擦除后,可以通知用户。下文将关于图5更加详细地解释擦除模块。
关于第一和/或第二分段142-1和142-2描述的任何操作或属性也可以适用于其他多个分段142-1到142-n中的任何分段。因此,实施例可以诸如通过减少启动或运行时间、通过减少对其高速缓存信息的访问次数之类来改进软件类型的响应性。另外,多个分段142-1到142-n可以允许这种响应性发生在软件类型的第一次启动并且/或者甚至当在不同类型的软件之间切换时被保留。另外,厂商可以能够改进开箱(OBE)的设备100的性能。
图2是图1的第一非易失性存储器140的示例性框图。在该实施例中,第一非易失性存储器140包括六个分段142-1到142-6,即:n是6。第一分段142-1被示出用来存储与诸如OS过程之类的第一类型的软件相关的高速缓存信息。OS过程的示例可以包括引导、冬眠、关闭或休眠过程。第二分段142-2被示出用来存储与诸如厂商应用之类的第二类型的软件相关的高速缓存信息。厂商应用的示例可以包括预安装在设备100上的软件,诸如私有软件或对设备100的硬件组件特定的软件。
第三分段142-3被示出用来存储与诸如web浏览器之类的第三类型软件相关的高速缓存信息。web浏览器的示例可以包括诸如Internet Explorer、Firefox、Google Chrome、Safari、Opera等之类的软件。第四分段142-4被示出用来存储与诸如第一用户应用之类的第四类型软件相关的高速缓存信息,并且第五分段142-5被示出用来存储与诸如第二用户应用之类的第五类型软件相关的高速缓存信息。第一和第二用户应用的示例可以包括任何类型的用户安装的和/或非厂商的应用,诸如图形程序、视频游戏、多媒体软件等。
第六分段142-6被示出用来作为通用高速缓存,任何高速缓存信息可以被存储在其中。通用高速缓存可以根据高速缓存算法(诸如最近最少使用(LRU)、最近最多使用(MRU)等)操作。因此,在该示例中,第一到第五分段142-1到142-6被锁定而第六分段142-6保持不被锁定。例如,未被锁定在第一到第五分段142-1到142-6的任何高速缓存信息可以被存储到第六分段142-6。另外,如果第一到第五分段142-1到142-6中的任何分段被充满,尽管没有被锁定到第六分段142-6,其附加或溢出的高速缓存信息也可以被存储在第六分段142-6。例如,如果第一或第二分段142-1或142-2被充满,则与诸如OS过程之类的第一类型的软件或诸如厂商应用信息之类的第二类型的软件相关联的高速缓存信息可以被存储在第六分段142-6处。锁定到分段142-1到142-5中的一个的高速缓存信息将不被存储在通用高速缓存或第六分段142-6直到锁定的分段充满为止,因此,降低第一非易失性存储器140的存储容量的部分被浪费或未使用的可能性。
虽然图2的第一非易失性存储器140被示出具有六个分段141-1到142-6,第一非易失性存储器140的实施例可以具有多于或少于六个分段。另外,第一非易失性存储器140的分段的大小和/或数量可以取决于第一非易失性存储器140的存储容量。例如,与第一非易失性存储器140的较小存储容量的分段相比,对于较大的存储容量可以有更大的分段大小和/或数量。
图3是包括用于分段和锁定第一非易失性存储器140的指令的计算设备300的示例性框图。在图3的实施例中,计算设备300包括处理器310、第一非易失性存储器140和机器可读存储介质320。机器可读存储介质320进一步包括用于分段和锁定第一非易失性存储器140的指令322和324。
计算设备300可以是例如芯片组、笔记本计算机、平板计算设备、便携式阅读设备、无线电子邮件设备、移动电话或能够执行指令322和324的任何其它设备。在某些示例中,计算设备300可以包括或被连接到附加的组件(诸如存储器、传感器、显示器等)。例如,计算设备300可以包括与图1所述的第二非易失性存储器类似的第二非易失性存储器(未示出)。可替换地,第二非易失性存储器可以是机器可读存储介质320的部分。
处理器310可以是,至少一个中央处理单元(CPU)、至少一个基于半导体的微处理器、至少一个图形处理单元(GPU)、适合于检索和执行存储在机器可读存储介质320中的指令的其它硬件设备或其组合。处理器310可以取、解码和执行指令322和324来实现分段和锁定第一非易失性存储器140。作为替换或除了检索和执行指令之外,处理器310还可以包括包含用于执行指令322和324的功能的多个电子组件的至少一个集成电路(IC)、其它控制逻辑、其它电子电路或其组合。
机器可读存储介质320可以是包含或存储可执行指令的任何电子、磁性、光学或其它物理存储设备。因此,机器可读存储介质320可以是例如随机访问存储器(RAM)、电可擦可编程只读存储器(EEPROM)、存储驱动器、光盘只读存储器(CD-ROM)等。同样,机器可读存储介质320可以是非临时的。如下文详细描述,机器可读存储介质320可以被编码有用于分段和锁定第一非易失性存储器140的一系列可执行指令。
此外,当被处理器(例如,经由所述处理器的一个处理元件或多个处理元件)执行时,指令322和324能够使处理器执行过程(诸如图4或5的过程)。例如,分段指令322可以被处理器310执行用以将第一非易失性存储器140分段成多个分段。锁定指令324可以被处理器319执行用以将多个类型的软件中的第一类型的软件锁定到多个分段142-1到142-n中的第一分段142-1。第一锁定分段存储与第一类型的软件关联的高速缓存信息。锁定指令324也可以被处理器310执行用以将多个类型的软件中的第二类型的软件锁定到多个分段142-1到142-n中的第二分段142-2。第二锁定分段142-2存储与第二类型的软件关联的高速缓存信息。
机器可读存储介质320也可以包括用以进行以下各项的指令(未示出):在第一分段充满的情况下,将与第一类型的软件关联的信息存储到多个分段142-1到142-n中的第三分段142-3,并且在第二分段充满的情况下,将与第二类型的软件关联的信息存储到第三分段142-3。可以关于图4和5更详细地描述设备300的操作。
图4是用于分段和锁定第一非易失性存储器140的方法400的示例性流程图。尽管下文参考设备100描述了方法400的执行,能够利用用于执行方法400的其他适合的组件(诸如设备300)。此外,用于执行方法400的组件可以散布在多个设备之中(例如,与输入和输出设备通信的处理设备)。在某些场景下,协调作用的多个设备能够被视作用以执行方法400的单个设备。方法400可以以存储在诸如存储介质320之类的机器可读存储介质上的可执行指令的形式,和/或以电子电路的形式来实现。
在方框410处,设备100将用于存储高速缓存信息的第一非易失性存储器140划分成多个分段142-1到142-n。在方框410处,基于厂商规范、用户命令和第一非易失性存储器140的大小中的至少一个,设备100可以最初设置多个分段142-1到142-n的数量和大小。基于用户命令和多个类型的软件的使用模式中的至少一个,在方框410处,多个分段142-1到142-n的数量和大小中的至少一个可以动态地改变。
然后,在方框420处,设备100将多个类型的软件中的第一类型的软件锁定到多个分段142-1到142-n中的第一分段142-1。第一锁定分段142-1存储与第一类型的软件关联的高速缓存信息。如上文所述,在方框420处,基于多个类型的软件的使用模式和用户命令中的至少一个,设备100可以将多个类型的软件中的一个或多个动态地锁定到多个分段142-1到142-n中的一个。
例如,设备100可以将第二类型的软件锁定到多个分段142-1到142-n中的第二分段142-2。在方框420处,设备100可以不锁定多个分段142-1到142-n中的所有分段(诸如多个分段142-1到142-n中的第三分段142-3)。另外,在方框420处,在第一分段142-1充满的情况下,设备100可以将与第一类型的软件关联的高速缓存信息存储到第三分段142-3,并且在第二分段充满142-2的情况下将与第二类型的软件关联的高速缓存信息存储到第三分段142-3。
在方框420处,设备100也可以确定被分类为第一类型的软件的第一和第二应用的使用率,并且基于所确定的使用率,将第一和第二应用中的一个动态地锁定到第一锁定分段142-1。在方框420处,在第一类型的软件被修改和被启动中的至少一个的情况下,设备100更新第一锁定分段142-1。设备100进行以下动作中的至少一个:从第一锁定分段142-1中启动第一类型的软件以及将对第一类型的软件的调用指向第一锁定分段142-1。
图5是用于分段和锁定第一非易失性存储器140的方法500的另一个示例性流程图。尽管下文参考设备100描述了方法500的执行,能够利用用于执行方法500的其他适合的组件(诸如设备300)。此外,用于执行方法500的组件可以散布在多个设备之中(例如,与输入和输出设备通信的处理设备)。在某些情景下,协调作用的多个设备能够被视作用以执行方法500的单个设备。方法500可以以存储在诸如存储介质320之类的机器可读存储介质上的可执行指令的形式,和/或以电子电路的形式来实现。
图5的方框510可以与图4的方框410类似,并且图5的方框520可以与图4的方框420类似。例如,在方框510处,设备100将用来存储高速缓存信息的第一非易失性存储器140划分成多个分段142-1到142-n。然后,在方框520处,设备100将多个类型的软件中的第一类型的软件锁定到多个分段142-1到142-n中的第一分段142-1。第一锁定分段142-1存储与第一类型的软件关联的高速缓存信息。在方框530处,在设备100进入降低功率状态以及用户选择多个分段142-1到142-n中的一个或多个以被擦除的至少一个的情况下,设备100单独地擦除多个分段142-1到142-n中的一个或多个。例如,设备100的擦除模块可以接收来自用户的命令以立即擦除多个分段142-1到142-n中的第一分段142-1,并且/或者接收来自设备100的OS的命令以在设备100进入降低功率状态之前擦除第一分段142-1。
然而,如果第一非易失性存储器140包括闪速或SSD存储器,第一非易失性存储器140可能仅是以块为单位可擦除的,所述块不与多个分段142-1到142-n的寻址结构相对应。例如,擦除所述块中的一个可以仅擦除多个分段142-1到142-n中的第一分段142-1的部分和/或擦除多个分段142-1到142-n中的第二分段142-2的部分。为了确保仅第一分段142-1被擦除,擦除模块可以与第一非易失性存储器140的闪速控制器(未示出)通信。
闪速控制器可以维护被用于提供用以存储、检索和更新数据的过程的闪速文件系统,以及管理第一非易失性存储器140上的可用空间。例如,由于在写之前可能必须显性地擦除所述块,闪速控制器可以在设备100空闲的同时擦除未使用的区块以节省时间。另外,闪速控制器可以将写均匀地分布在整个第一非易失性存储器140上来减少或防止磨损均衡,其发生在当所述块中的一个通过被重复地重写而磨损时。
擦除模块可以与闪速控制器通信来确定多个分段142-1到142-n的映射和第一非易失性存储器140的块之间的相关性。擦除模块还可以与闪速控制器通信来保留不被擦除的多个分段142-1到142-n的高速缓存信息。例如,如果擦除第一分段142-1也会擦除第二分段142-2中的至少部分(诸如如果第一和第二分段142-1和142-2共享相同块的部分),则擦除模块可以与闪速存储器通信来首先将要被擦除的块中的第二分段142-2的高速缓存信息保存到诸如另一个存储器块之类的另一个位置。可替换地,要被擦除的块中的第三分段142-3的高速缓存信息可以被保存到诸如存储介质320或第二非易失性存储器之类的另一个存储器。然后,擦除模块可以与闪速存控制器通信以通过擦除存储第一分段142-1的高速缓存信息的一个或多个块来擦除第一分段142-1。然后,取决于第三分段142-3的高速缓存信息被存储在哪里,擦除模块可以指引高速缓存控制器回写第三分段142-3的高速缓存信息。
此外,在方框530处,擦除模块可以与OS通信来延迟设备100进入降低功率状态直到完成一个或多个分段142-1到142-n的擦除为止。然而,在设备100进入降低功率状态之前,如果多个分段142-1到142-n中的一个或多个的擦除没有被完成,则当设备100返回到诸如上电状态之类的高功率状态时,擦除模块要继续擦除多个分段142-1到142-n中的一个或多个。另外,正在被擦除的多个分段142-1到142-n中的一个或多个可能不对存储高速缓存信息可用,直到多个分段142-1到142-n中的一个或多个的擦除被完成为止。虽然实施例已经描述了关于擦除的上述步骤,实施例不被限制于此。例如,设备100也可以执行用于重写和/或加密/解密分段142-1到142-n中的至少一个的高速缓存信息的类似过程。
根据前述内容,实施例提供用于分段和锁定存储高速缓存信息的第一非易失性存储器的方法和/或设备。例如,第一类型的软件的高速缓存信息可以被锁定到多个分段中的第一分段。因此,在实施例中,即使对于第一类型的软件的第一次访问或即使在第一类型的软件的访问之间大量地使用第二类型的软件,第一类型的软件也可以是立即响应的或最初更响应迅速的。

Claims (15)

1.一种用于对高速缓存进行分段的方法,包括:
将用以存储高速缓存信息的第一非易失性存储器划分成多个分段,以及
将多个类型的软件中的第一类型的软件锁定到所述多个分段中的第一分段,其中
第一锁定分段存储与第一类型的软件关联的高速缓存信息。
2.根据权利要求1所述的方法,其中
所述锁定将所述多个类型的软件中的第二类型的软件锁定到所述多个分段中的第二分段,以及
第二锁定分段存储与第二类型的软件关联的高速缓存信息。
3.根据权利要求2所述的方法,其中
第一和第二类型的软件是与操作系统(OS)相关的过程类型和应用类型中的至少一个,
所述应用是web浏览器、用户应用和厂商应用中的至少一个,并且
所述过程是引导、冬眠、关闭和休眠过程中的至少一个。
4.根据权利要求3所述的方法,其中
所述锁定不锁定所述多个分段中的第三分段,
在第一分段充满的情况下,所述锁定将与第一类型的软件关联的高速缓存信息存储到第三分段,并且
在第二分段充满的情况下,锁定模块将与第二类型的软件关联的高速缓存信息存储到第三分段。
5.根据权利要求1所述的方法,其中
基于厂商规范、用户命令、和第一非易失性存储器的大小中的至少一个,所述划分最初设置所述多个分段的数量和大小,
基于用户命令和所述多个类型的软件的使用模式中的至少一个,所述划分动态地改变所述多个分段的数量和大小中的至少一个。
6.根据权利要求1所述的方法,其中基于所述多个类型的软件的使用模式和用户命令中的至少一个,所述锁定将所述多个类型的软件中的一个动态地锁定到所述多个分段中的一个。
7.根据权利要求1所述的方法,其中,
所述锁定确定被分类为第一类型的软件的第一和第二应用的使用率,以及
基于所确定的使用率,所述锁定将第一和第二应用中的一个动态地锁定到第一锁定分段。
8.根据权利要求1所述的方法,其中,
在第一类型的软件被修改和被启动中的至少一个的情况下,所述锁定更新第一锁定分段,并且
所述锁定进行以下动作中的至少一个:从第一锁定分段中启动第一类型的软件以及将对第一类型的软件的调用指向第一锁定分段。
9.根据权利要求1所述的方法,进一步包括:
在包括第一非易失性存储器的设备要进入降低功率状态以及用户选择所述多个分段中的一个或多个以被擦除中的至少一个的情况下,单独地擦除所述多个分段中的一个或多个。
10.根据权利要求9所述的方法,其中
在所述设备进入降低功率状态之前所述多个分段中的一个或多个的擦除未被完成的情况下,当所述设备返回到高功率状态时,所述擦除要继续擦除所述多个分段中的一个或多个,并且
正在被擦除的多个分段中的一个或多个不对存储高速缓存信息可用直到擦除被完成为止。
11.一种存储指令的非临时计算机可读存储介质,如果所述指令被设备的处理器执行,则使所述处理器进行以下动作:
将用以存储高速缓存信息的第一非易失性存储器分段成多个分段;以及
将多个类型的软件中的第一类型的软件锁定到所述多个分段中的第一分段,其中
第一锁定分段存储与第一类型的软件关联的高速缓存信息。
12.根据权利要求11所述的非临时计算机可读存储介质,进一步包括指令,如果所述指令被所述处理器执行,则使所述处理器进行以下动作:
将所述多个类型的软件中的第二类型的软件锁定到所述多个分段中的第二分段,其中
第二锁定分段存储与第二类型的软件关联的高速缓存信息,并且
第一和第二类型的软件中的至少一个基于用户命令、厂商规范和使用率中的至少一个而被选择以被锁定。
13.根据权利要求12所述的非临时计算机可读存储介质,进一步包括指令,如果所述指令被所述处理器执行,则使所述处理器进行以下动作:
在第一分段充满的情况下,将与第一类型的软件关联的信息存储到所述多个分段中的第三分段,并且
在第二分段充满的情况下,将与第二类型的软件关联的信息存储到所述第三分段。
14.一种设备,包括:
第一非易失性存储器,用来存储高速缓存信息;
分段模块,用来将所述第一非易失性存储器划分成多个分段;以及
锁定模块,用来将多个类型的软件中的第一类型的软件锁定到所述多个分段中的第一分段,其中
第一锁定分段存储与第一类型的软件关联的高速缓存信息。
15.根据权利要求14所述的方法,进一步包括:
第二非易失性存储器,用来存储第一类型的软件;以及
存储器控制器,用来控制第一和第二非易失性存储器,其中
所述分段和锁定模块经由操作系统(OS)与所述存储器控制器进行通信来进行以下动作中的中的至少一个:创建以及锁定所述多个分段。
CN201180075893.0A 2011-10-26 2011-10-26 经分段的高速缓存 Pending CN103999062A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/057913 WO2013062542A1 (en) 2011-10-26 2011-10-26 Segmented caches

Publications (1)

Publication Number Publication Date
CN103999062A true CN103999062A (zh) 2014-08-20

Family

ID=48168213

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180075893.0A Pending CN103999062A (zh) 2011-10-26 2011-10-26 经分段的高速缓存

Country Status (9)

Country Link
US (1) US9697115B2 (zh)
EP (1) EP2771795B1 (zh)
JP (1) JP2014534520A (zh)
KR (1) KR101842321B1 (zh)
CN (1) CN103999062A (zh)
BR (1) BR112014009920B1 (zh)
IN (1) IN2014CN02958A (zh)
TW (2) TWI498811B (zh)
WO (1) WO2013062542A1 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10613982B1 (en) 2012-01-06 2020-04-07 Seagate Technology Llc File-aware caching driver
US9268692B1 (en) * 2012-04-05 2016-02-23 Seagate Technology Llc User selectable caching
US9542324B1 (en) * 2012-04-05 2017-01-10 Seagate Technology Llc File associated pinning
US10185501B2 (en) * 2015-09-25 2019-01-22 Intel Corporation Method and apparatus for pinning memory pages in a multi-level system memory
US11165751B2 (en) * 2017-02-16 2021-11-02 Emerald Cactus Ventures, Inc. System and method for establishing simultaneous encrypted virtual private networks from a single computing device
US11165825B2 (en) * 2017-02-16 2021-11-02 Emerald Cactus Ventures, Inc. System and method for creating encrypted virtual private network hotspot
US11122013B2 (en) * 2017-02-16 2021-09-14 Emerald Cactus Ventures, Inc. System and method for encrypting data interactions delineated by zones
US20180336131A1 (en) * 2017-05-22 2018-11-22 Dell Products L.P. Optimizing Memory/Caching Relative to Application Profile
TWI649652B (zh) * 2017-12-29 2019-02-01 國科美國研究實驗室 Fast and safe data storage device and method

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0216654A (ja) * 1988-07-05 1990-01-19 Hitachi Ltd キャッシュメモリ制御方法
JPH0511933A (ja) * 1991-07-08 1993-01-22 Kawasaki Steel Corp ハードデイスクエミユレータ及びその固定キヤツシユエリア割付方法
JPH09114737A (ja) * 1995-10-16 1997-05-02 Hitachi Ltd キャッシュディスク制御
JP2004030090A (ja) * 2002-06-25 2004-01-29 Hitachi Ltd キャッシュメモリ管理方法
CN101213525A (zh) * 2005-06-30 2008-07-02 英特尔公司 任务上下文高速缓存替换的方法、装置及系统
CN100442250C (zh) * 2005-02-15 2008-12-10 株式会社日立制作所 存储系统
US20100082904A1 (en) * 2008-09-30 2010-04-01 Dale Juenemann Apparatus and method to harden computer system
US20110066792A1 (en) * 2008-02-10 2011-03-17 Rambus Inc. Segmentation Of Flash Memory For Partial Volatile Storage

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0389151A3 (en) * 1989-03-22 1992-06-03 International Business Machines Corporation System and method for partitioned cache memory management
EP0475639A3 (en) 1990-08-31 1992-06-03 Kawasaki Steel Corporation Hard disk emulator
JPH06282488A (ja) * 1993-03-25 1994-10-07 Mitsubishi Electric Corp キャッシュ記憶装置
JPH10154101A (ja) 1996-11-26 1998-06-09 Toshiba Corp データ記憶システム及び同システムに適用するキャッシュ制御方法
JPH10333984A (ja) 1997-05-30 1998-12-18 Matsushita Electric Ind Co Ltd 記録再生装置
US20020112116A1 (en) * 2000-11-17 2002-08-15 Nelson Mark Edward Methods, systems, and computer program products for storing data in collections of tagged data pieces
US7089371B2 (en) 2002-02-12 2006-08-08 Ip-First, Llc Microprocessor apparatus and method for prefetch, allocation, and initialization of a block of cache lines from memory
JP2004118305A (ja) * 2002-09-24 2004-04-15 Sharp Corp キャッシュメモリ制御装置
KR100970933B1 (ko) 2003-07-26 2010-07-20 엘지전자 주식회사 오퍼레이팅 시스템의 고속 부팅장치 및 방법
US7620773B2 (en) 2005-04-15 2009-11-17 Microsoft Corporation In-line non volatile memory disk read cache and write buffer
KR100755702B1 (ko) 2005-12-27 2007-09-05 삼성전자주식회사 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 그 동작방법
US20080005462A1 (en) 2006-06-30 2008-01-03 Mosaid Technologies Incorporated Method of configuring non-volatile memory for a hybrid disk drive
KR101128234B1 (ko) 2006-08-23 2012-03-23 엘지전자 주식회사 메모리 접근 제어 장치 및 방법
US7554855B2 (en) 2006-12-20 2009-06-30 Mosaid Technologies Incorporated Hybrid solid-state memory system having volatile and non-volatile memory
JP2008250718A (ja) 2007-03-30 2008-10-16 Toshiba Corp 不揮発性キャッシュメモリを用いた記憶装置とその制御方法
US7890691B2 (en) 2007-09-28 2011-02-15 Intel Corporation Memory cache sharing in hybrid hard disk
US7895374B2 (en) 2008-07-01 2011-02-22 International Business Machines Corporation Dynamic segment sparing and repair in a memory system
US8407398B2 (en) 2008-10-01 2013-03-26 Lenovo (Singapore) Pte. Ltd. Cache mapping for solid state drives
US20100088459A1 (en) 2008-10-06 2010-04-08 Siamak Arya Improved Hybrid Drive
KR20140040870A (ko) 2009-07-07 2014-04-04 엘에스아이 코포레이션 계층화된 비휘발성 스토리지를 위한 시스템 및 방법

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0216654A (ja) * 1988-07-05 1990-01-19 Hitachi Ltd キャッシュメモリ制御方法
JPH0511933A (ja) * 1991-07-08 1993-01-22 Kawasaki Steel Corp ハードデイスクエミユレータ及びその固定キヤツシユエリア割付方法
JPH09114737A (ja) * 1995-10-16 1997-05-02 Hitachi Ltd キャッシュディスク制御
JP2004030090A (ja) * 2002-06-25 2004-01-29 Hitachi Ltd キャッシュメモリ管理方法
CN100442250C (zh) * 2005-02-15 2008-12-10 株式会社日立制作所 存储系统
CN101213525A (zh) * 2005-06-30 2008-07-02 英特尔公司 任务上下文高速缓存替换的方法、装置及系统
US20110066792A1 (en) * 2008-02-10 2011-03-17 Rambus Inc. Segmentation Of Flash Memory For Partial Volatile Storage
US20100082904A1 (en) * 2008-09-30 2010-04-01 Dale Juenemann Apparatus and method to harden computer system

Also Published As

Publication number Publication date
KR20140091532A (ko) 2014-07-21
TW201546712A (zh) 2015-12-16
TWI574203B (zh) 2017-03-11
KR101842321B1 (ko) 2018-03-26
BR112014009920A2 (pt) 2017-04-25
JP2014534520A (ja) 2014-12-18
EP2771795B1 (en) 2016-06-01
TWI498811B (zh) 2015-09-01
TW201329858A (zh) 2013-07-16
EP2771795A4 (en) 2015-08-05
EP2771795A1 (en) 2014-09-03
US20140297937A1 (en) 2014-10-02
WO2013062542A8 (en) 2014-07-03
BR112014009920B1 (pt) 2021-06-15
WO2013062542A1 (en) 2013-05-02
IN2014CN02958A (zh) 2015-07-03
US9697115B2 (en) 2017-07-04

Similar Documents

Publication Publication Date Title
CN103999062A (zh) 经分段的高速缓存
US10503635B2 (en) System and method for adaptive optimization for performance in solid state drives based on segment access frequency
US11341059B2 (en) Using multiple memory elements in an input-output memory management unit for performing virtual address to physical address translations
US9811456B2 (en) Reliable wear-leveling for non-volatile memory and method therefor
US20120117328A1 (en) Managing a Storage Cache Utilizing Externally Assigned Cache Priority Tags
CN105630405B (zh) 一种存储系统及采用该存储系统的读写方法
KR20080017886A (ko) 메모리 접근 제어 장치 및 방법
CN103999042A (zh) 加载引导数据
JPH07219848A (ja) キャッシュ制御システム
CN109086141B (zh) 内存管理方法和装置以及计算机可读存储介质
CN105608016B (zh) Dram与mram结合的固态硬盘及使用mram的存储卡
US20180349287A1 (en) Persistent Storage Device Information Cache
CN109313604A (zh) 压缩虚拟存储器的动态配置
US8543791B2 (en) Apparatus and method of reducing page fault rate in virtual memory system
US8433873B2 (en) Disposition instructions for extended access commands
CN110727470B (zh) 一种混合式非失性存储装置
US10678706B2 (en) Cache memory with scrubber logic
JP6877381B2 (ja) 情報処理装置、情報処理方法およびプログラム
US20210200584A1 (en) Multi-processor system, multi-core processing device, and method of operating the same
TWI674531B (zh) 資料儲存裝置及操作該資料儲存裝置的方法
WO2018112738A1 (en) Power state management
US11868254B2 (en) Using epoch counter values for controlling the retention of cache blocks in a cache
US11556253B1 (en) Reducing power consumption by selective memory chip hibernation
KR101974731B1 (ko) 플래시 스토리지 장치 및 플래시 스토리지 장치에 데이터를 기록하는 방법
Ryu et al. Fast Application Launch on Personal {Computing/Communication} Devices

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20140820