CN108694135A - 用于在页高速缓存中持久性地高速缓存存储数据的方法和设备 - Google Patents
用于在页高速缓存中持久性地高速缓存存储数据的方法和设备 Download PDFInfo
- Publication number
- CN108694135A CN108694135A CN201810166314.7A CN201810166314A CN108694135A CN 108694135 A CN108694135 A CN 108694135A CN 201810166314 A CN201810166314 A CN 201810166314A CN 108694135 A CN108694135 A CN 108694135A
- Authority
- CN
- China
- Prior art keywords
- data
- page cache
- cache
- persistence
- request
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing 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/0873—Mapping of cache memory to specific storage devices or parts thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0882—Page mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing 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/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/76—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in application-specific integrated circuits [ASIC] or field-programmable devices, e.g. field-programmable gate arrays [FPGA] or programmable logic devices [PLD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/22—Employing cache memory using specific memory technology
- G06F2212/225—Hybrid cache memory, e.g. having both volatile and non-volatile portions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/28—Using a specific disk cache architecture
- G06F2212/283—Plural cache memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/608—Details relating to cache mapping
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及用于在页高速缓存中持久性地高速缓存存储数据的方法和装置。在一个实施例中,一种设备包括用来存储操作系统的可执行指令的存储器;以及处理器,其用来:识别来自应用程序的对数据的请求;确定持久性页高速缓存是否存储数据的拷贝,其中该持久性页高速缓存可由处理器直接寻址并且用来高速缓存不可由处理器直接寻址的存储设备的数据;以及从持久性页高速缓存访问数据。
Description
技术领域
本公开一般涉及计算机开发的领域,并且更具体地涉及数据高速缓存。
背景技术
计算机系统可以包括可以与一个或多个存储设备通信的一个或多个中央处理单元(CPU)。CPU可以包括用以执行利用耦合到该CPU的存储设备的操作系统和/或其它软件应用的处理器。软件应用可以将数据写入到存储设备并从存储设备读取数据。
附图说明
图1图示出根据某些实施例的计算机系统的组件的框图。
图2图示出根据某些实施例的实现基于操作系统的高速缓存的计算机系统的组件的框图。
图3图示出根据某些实施例的实现持久性页高速缓存的计算机系统的组件的框图。
图4图示出根据某些实施例的实现持久性存储器文件系统和持久性页高速缓存的计算机系统的组件的框图。
图5图示出根据某些实施例的实现持久性存储器文件系统中介层(shim layer)和持久性页高速缓存的计算机系统的组件的框图。
图6图示出根据某些实施例的用于将数据从页高速缓存提供给处理器的示例流程。
在各图中的同样的参考标号和指名指示同样的元素。
具体实施方式
虽然附图描绘了特定的计算机系统,但是各实施例的观念可适用于任何适当的计算机系统。其中可以使用本公开的教导的系统的示例包括台式计算机系统、服务器计算机系统、存储系统、手持式设备、平板电脑、其它薄笔记本、片上系统(SoC)设备以及嵌入式应用。手持式设备的一些示例包括蜂窝电话、数字相机、媒体播放器、个人数字助理(PDA)以及手持式PC。嵌入式应用可以包括微控制器、数字信号处理器(DSP)、SOC、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机或可以执行下文教导的功能和操作的任何其它系统。可以在任何适当的计算环境中使用本公开的各种实施例,所述计算环境诸如个人计算设备、服务器、大型机、云计算服务提供商基础设施、数据中心、通信服务提供商基础设施(例如,演进分组核心的一个或多个部分)或包括一个或多个计算设备的其它环境。
图1图示出根据某些实施例的计算机系统100的组件的框图。系统100包括耦合到外部输入/输出(I/O)控制器104的中央处理单元(CPU)102、存储设备106、易失性系统存储器设备108和持久性系统存储器设备110。在操作期间,数据可以在存储设备106和CPU 102之间、在易失性系统存储器设备108和CPU 102之间、在持久性系统存储器设备110和CPU102之间或在存储设备106、易失性系统存储器设备108和持久性系统存储器设备110中的任何之间进行传输。在各种实施例中,可以由操作系统122和/或由处理器111执行的其它逻辑(例如,应用124)发布涉及到存储设备106、易失性系统存储器设备108或持久性系统存储器设备110的特定的数据操作(例如,读取或写入操作)。
基于操作系统的高速缓存是这样的高速缓存技术:其中主机计算设备(例如,CPU)执行逻辑,所述逻辑控制对存储在存储设备(例如,硬盘驱动)上的数据到更小且更快的高速缓存存储设备(例如,固态驱动(SSD))的高速缓存。当主机所执行的应用请求主机当前并未高速缓存的数据时,可以从存储设备中检索所述数据并将所述数据存储在主机计算设备可以更加容易地访问的存储器中(即,所述数据可以由主机来高速缓存)。例如,可以通过将检索到的数据存储在高速缓存存储设备(例如,SSD)、系统存储器设备和/或CPU的一个或多个较低级别的高速缓存中来对从存储设备(例如,硬盘驱动(HDD))检索的数据进行高速缓存。在高速缓存了数据之后,可以从所述高速缓存中的一个而非从存储设备来检索所述数据,从而降低了用于由主机访问数据的等待时间的量。
在基于操作系统的高速缓存系统中,操作系统可以协调来自存储设备的存储数据在包括持久性(即,非易失性)存储器的存储高速缓存设备以及易失性系统存储器(例如,动态随机存取存储器(DRAM))中的页高速缓存中的高速缓存。页高速缓存(其有时也称为缓冲器高速缓存或盘高速缓存)是用于对应于存储设备(诸如,HDD)的数据的页的高速缓存。操作系统可以将页高速缓存维持在系统存储器的本来未使用的部分中(例如,操作系统可以使用未直接分配给应用的物理存储器用于页高速缓存),从而得到对所高速缓存的页的内容的更快速的访问。页高速缓存一般对应用是透明的(即,应用并不知晓关于所检索的数据是来自页高速缓存还是来自存储设备)。
一般而言,系统存储器可以是CPU可寻址的(例如,可由处理器直接寻址),而存储设备不是。例如,如果CPU能够基于在由处理器执行的指令中提供的地址来构建数据的物理地址,则存储器空间可以可由处理器直接寻址。作为示例,CPU 102的处理器111可以通过使用加载和存储基元(例如,由核114A和114B执行的加载和存储指令)来直接对系统存储器寻址。在各种实施例中,在加载和存储基元中指定的地址可以是系统存储器的物理地址或被CPU 102(例如,经由CPU的存储器管理单元)解译成物理地址的虚拟地址。与之相对,外部存储设备(例如,存储设备106或高速缓存存储设备)不是CPU可寻址的,因为CPU 102必须将由指令指定的存储器地址(或与由处理器指定的虚拟地址相对应的物理地址)解译成存储设备106的逻辑块地址(存储设备106然后将该逻辑块地址解译成所请求的数据在存储设备106上的物理地址)。作为另一示例,如果存储器空间可以(例如,响应于由处理器的加载指令)将数据提供到处理器内的位置,则存储器空间可以是可由处理器直接寻址的。例如,系统存储器可以将所请求的数据提供给处理器的寄存器使得所述数据立即可用,而存储设备必须在所述数据可由处理器使用之前首先将所述数据拷贝到系统存储器(这可能要求处理器在所述数据已被带到系统存储器中之后重试指令)。
虽然存储系统存储器中的页高速缓存提供了CPU可寻址性,但是在存储高速缓存设备中进行高速缓存提供了持久性(即,电力故障将不会导致所存储的数据的丢失)。然而,利用易失性页高速缓存和存储高速缓存设备导致各种缺陷。由于页高速缓存的易失性,操作系统通常必须通过将数据从存储高速缓存设备拷贝到易失性页高速缓存来在每次重启计算机系统时填充(populate)页高速缓存。附加地,易失性页高速缓存的容量通常比高速缓存存储设备的容量小得多。这使得存储数据被从易失性页高速缓存驱逐到高速缓存存储设备并且然后基于应用访问模式被重新填充回易失性页高速缓存中,导致了附加开销。附加地,因为页高速缓存是易失性的,因此需要频繁地将存储于其中的数据冲刷到高速缓存存储设备以实现持久性。该频繁冲刷造成了大量的性能开销,尤其是针对同时写入。与存储在易失性系统存储器中的其它数据并行,管理页高速缓存还引发相对大的成本,例如在当不活动的页被驱逐到交换空间时扫描页列表期间。附加地,将存储数据高速缓存在易失性页高速缓存中可能消耗珍贵的易失性存储器,因而降低了可用于操作系统和应用以存储相关联的代码和易失性数据的易失性存储器的量。
在本公开的各种实施例中,计算系统100包括存储在诸如三维(3D)交叉点存储器(或本文中描述的其它持久性存储器)之类的持久性存储器134中的页高速缓存136。持久性页高速缓存136提供了CPU可寻址性和针对所高速缓存的存储数据(即,具有存储在存储设备106中的对应副本的数据)的持久性二者。相应地,所高速缓存的数据即使在计算机系统重启之后也在CPU 102的地址空间中可用,而不必在重启之后将所述数据从存储设备106的地址空间移动。也降低了在易失性系统存储器设备与非易失性存储高速缓存设备之间频繁地拷贝存储数据的需要。可观地降低了命中持久性页高速缓存中的I/O请求(其可能在易失性页高速缓存中错过)的等待时间。持久性提交基元(例如,请求将数据从页高速缓存移动到持久性存储器的指令,诸如对fsync和msync的调用)导致了最小量的开销,因为相关联的数据将已经被存储在持久性页高速缓存中(例如,这样的指令可以仅包括更新用以指示所述数据被存储在持久性存储器中的元数据)。易失性存储器的使用被降低,从而使易失性存储器空出以供应用使用(操作系统通常使用易失性系统存储器的一部分用于页高速缓存,而存储器的其余部分可以由应用来使用)。附加地,可以更快速地完成扫描页列表以释放易失性存储器用于应用,因为不需要扫描持久性页高速缓存136中的页。最终,持久性页高速缓存136可以使得能够实现用于实现文件系统中的事务的高效的数据记录(journaling)。通过使用持久性页高速缓存136作为隐含的数据记录日志,消除了对分离的数据记录的需要。通常的文件系统分级执行(stage)基于DRAM的页高速缓存中的事务,并然后将所述事务冲刷到事务提交上的持久性(即,冲刷到高速缓存存储设备)。由于页高速缓存136是持久性,因此可以使用轻微修改的日志记录协议来提交持久性页高速缓存136中的事务,而无需将数据冲刷到持久性存储设备,从而导致文件系统(或诸如对象存储系统之类的其它存储管理软件)中的改进的事务性能。
CPU 102包括处理器111,诸如微处理器、嵌入式处理器、DSP、网络处理器、手持式处理器、应用处理器、协处理器、SOC或用以执行代码(即,软件指令)的其它设备。在所描绘的实施例中,处理器111包括两个处理元件(所描绘的实施例中的核114A和114B),其可以包括不对称处理元件或对称处理元件。然而,处理器可以包括任何数量的处理元件,其可以是对称的或不对称的。
在一个实施例中,处理元件是指用以支持软件线程的硬件或逻辑。硬件处理元件的示例包括:线程单元、线程槽、线程、处理单元、上下文、上下文单元、逻辑处理器、硬件线程、核和/或能够保持针对处理器的状态(诸如执行状态或架构状态)的任何其它元件。换言之,在一个实施例中,处理元件是指能够与代码(诸如软件线程、操作系统、应用或其它代码)独立地相关联的任何硬件。物理处理器(或处理器插座)通常指代集成电路,其潜在包括任何数目的其他处理元件,诸如核或硬件线程。
核114可以指代定位于能够维持独立架构状态的集成电路上的逻辑,其中每个独立维持的架构状态都与至少一些专用执行资源相关联。硬件线程可以指代定位于能够维持独立架构状态的集成电路上的任何逻辑,其中独立维持的架构状态共享对执行资源的访问。如可以看到的,当某些资源被共享并且其他专用于一个架构状态时,硬件线程的命名与核之间的行重叠。但经常,由操作系统将核和硬件线程视为单独逻辑处理器,在这里该操作系统能够在每个逻辑处理器上分别地调度操作。
在各种实施例中,该处理元件还可以包括一个或多个算术逻辑单元(ALU)、浮点单元(FPU)、高速缓存、指令流水线、中断处置硬件、寄存器或促进处理元件的操作的其他硬件。
I/O控制器112是包括用于在CPU 102和I/O设备之间传达数据的逻辑的集成I/O控制器,其可以指代能够将数据传递至电子系统(诸如CPU 102)和/或从电子系统(诸如CPU102)接收数据的任何适当逻辑。例如,I/O设备可以包括:诸如图形加速度计的音频/视频(A/V)设备的控制器;诸如SSD、HDD、非易失性双列直插式存储器模块(NVDIMM)或光学存储盘的数据存储设备(例如存储设备106)的控制器;无线收发器;网络处理器;网络接口控制器;或用于另一输入设备(诸如监控器、打印机、鼠标、键盘或扫描仪)的控制器;或其他适当的设备。在一个特定实施例中,I/O设备可以包括存储设备106的存储设备控制器(未被示出)。
I/O设备可以使用任何适当的信令协议与CPU 102的I/O控制器112通信,该任何适当的信令协议诸如外围部件互连(PCI)、快速PCI(PCIe)、通用串行总线(USB)、串行附接SCSI(SAS)、串行ATA(SATA)、光纤通道(FC)、IEEE 802.3、IEEE 802.11、或其他当前或将来信令协议。在特定实施例中,I/O控制器112和底层的I/O设备可以根据诸如(例如如由在www.nvmexpress.org/specifications/处可得的规范中的一个或多个所述的)快速非易失性存储器(NVMe)或(例如如由在http://www.intel.com/content/www/us/en/io/serial-ata/serial-ata-ahci-spec-rev1-3-1.html处可得的一个或多个AHCI规范(诸如串行ATAAHCI:规范,修订1.3.1)所述的)高级主机控制器接口(AHCI)的逻辑设备接口规范来传达数据和命令。在各种实施例中,耦合至I/O控制器的I/O设备可以被定位成在芯片外(即不在与CPU 102相同的芯片上)或可以被集成在与CPU 102相同的芯片上。
存储器控制器116是包括用来控制去到和来自诸如易失性系统存储器设备108或持久性系统存储器设备110的一个或多个系统存储器设备(有时被称为主存储器)的数据流的逻辑的集成存储器控制器。存储器控制器116可以包括可操作用来从系统存储器设备读取、写入到系统存储器设备或从系统存储器设备请求其他操作的逻辑。在各种实施例中,存储器控制器116可以从核114和/或I/O控制器112接收写入请求(例如当存储设备106执行直接存储器存取(DMA)操作时)并且可以向系统存储器设备提供这些请求中指定的数据以便存储在其中。存储器控制器116还可以从系统存储器设备读取数据并且向I/O控制器112或核114提供读取数据。在操作期间,存储器控制器116可以发出包括系统存储器设备的一个或多个地址的命令以便从存储器读取数据或将数据写入到存储器(或者以便执行其他操作)。在一些实施例中,存储器控制器116可以被实施在与CPU 102相同的芯片上,而在其他实施例中,存储器控制器116可以被实施在与CPU 102的芯片不同的芯片上。I/O控制器112可以执行关于一个或多个存储设备106的类似操作。
易失性存储器控制器118可以与易失性系统存储器设备108传达命令和数据并且持久性存储器控制器120可以与持久性系统存储器设备110传达命令和数据。在所描绘的实施例中,易失性系统存储器设备108和持久性系统存储器设备110被示出为分立设备,尽管在其他实施例中,易失性存储器126和持久性存储器134可以被集成在同一设备上。类似地,存储器控制器116被示出为包括分开的易失性和持久性存储器控制器(118和120),尽管在其他实施例中,单个存储器控制器可以与易失性系统存储器设备108和持久性系统存储器设备110二者(或包括易失性存储器126和持久性存储器134的单个设备)通信。存储器控制器116可以可操作用来基于请求的地址来确定应该将请求发送至易失性存储器126还是发送至持久性存储器134,并且可以相应地格式化该请求。
CPU 102还可以通过外部I/O控制器104耦合至一个或多个其他I/O设备(诸如上面列出的那些或其他适当I/O设备中的任一个)。在一个特定实施例中,外部I/O控制器104可以将存储设备106耦合至CPU 102。外部I/O控制器104可以包括用来管理一个或多个CPU102和I/O设备之间的数据流的逻辑。在特定实施例中,将外部I/O控制器104连同CPU 102一起定位在母板上。外部I/O控制器104可以使用点对点或其他接口与CPU 102的部件交换信息。
易失性系统存储器设备108可以存储任何适当数据,诸如被处理器111用来提供计算机系统100的功能的数据。在所描绘的实施例中,易失性存储器126存储页高速缓存128、应用程序代码130和应用程序数据132。在一个特定实施例中,易失性存储器126不存储页高速缓存128(作为代替在持久性存储器134中实施整个页高速缓存)。然而,如在下面更详细解释的,在某些情况下针对高速缓存的存储数据的一部分将页高速缓存128维持在易失性存储器126中以及针对高速缓存的存储数据将页高速缓存136维持在持久性存储器134中可能是有利的。
页高速缓存128或136可以高速缓存存储设备106的存储数据的物理页(有时被称为帧)。可以由操作系统122使用易失性存储器126(其还被由处理器111执行的应用程序使用)来维持页高速缓存128(例如可以使用在易失性存储器126的其他部分被用于应用程序代码和数据之后剩余的存储器来实施页高速缓存128),而至少在一些实施例中,页高速缓存136可以专用于存储数据的高速缓存。应用程序代码130可以包括与应用程序(例如文本段)相关联的可执行指令。应用程序数据132可以包括:存储帧集合的堆栈段,其存储函数参数、返回地址、局部变量、或其他数据;当应用程序在运行时间动态分配存储器时使用的堆积段;数据段,其包括静态变量和初始化全局变量;存储未初始化的全局和静态变量的段;以及/或者与通过操作系统122执行的一个或多个应用程序124相关联的任何其他适当数据。
在一个特定实施例中,页高速缓存128或136可以使用基数树结构高速缓存文件数据。可以用基数树来表示将数据存储在页高速缓存中的每个文件(其可以例如由基于Linux的操作系统中的索引节点来识别)。基数树将文件偏移量(其是使用基数树的页节点来表示的)映射至页高速缓存的数据页。当页被高速缓存在页高速缓存中时,从存储设备读取文件数据并且将其存储在基数树叶节点中。基数树中的废数据(已经被处理器111修改并且还没有被回写到存储设备106的数据)被同步(例如使用完全同步(fsync)操作)或异步(例如使用周期性回写)写入到存储设备106。
在各种实施例中,操作系统122可以维持对于每个活动应用程序的页表,其存储用来基于(例如由核114执行的指令的)虚拟地址来确定驻留在系统存储器设备中的物理存储器页的信息。在一些实施例中,该页表可以被存储在易失性存储器设备或持久性存储器设备中,并且单独虚拟页地址可以映射到易失性存储器设备或持久性存储器设备中的物理页地址。
系统存储器设备(例如易失性系统存储器设备108和/或持久性系统存储器设备110)可专用于特定CPU 102或者与计算机系统100的其他设备(例如一个或多个其他处理器或其他设备)共享。在各种实施例中,系统存储器设备可以被检查以查看它在作出CPU 102的最后一级高速缓存不包括所请求的数据的决定之后是否存储所请求的数据。
在各种实施例中,系统存储器设备可以包括存储器,其包括任何数目的存储器模块、存储器设备控制器和其他支持逻辑(未被示出)。存储器模块可以包括持久性存储器和/或易失性存储器。易失性系统存储器设备108包括易失性存储器126并且持久性系统存储器设备110包括持久性存储器134,尽管在一些实施例中任一系统存储器设备都可以包括易失性存储器和持久性存储器。
易失性存储器是一种需要功率来维持由介质存储的数据的状态的存储介质。易失性存储器的示例可以包括各种类型的随机存取存储器(RAM),诸如动态随机存取存储器(DRAM)或静态随机存取存储器(SRAM)。可在存储器模块中使用的一种特定类型的DRAM是同步动态随机存取存储器(SDRAM)。在一些实施例中,存储器108的作为易失性存储器的任一部分都可以遵从JEDEC标准,其包括但不限于双数据率(DDR)标准(例如DDR3、4和5)或低功率DDR4(LPDDR4)以及新兴标准。
持久性存储器是一种不需要功率来来维持由介质存储的数据的状态的存储介质。在各种实施例中,持久性存储器可以是字节或块可寻址的。持久性存储器的非限制性示例可以包括以下各项中的任一个或组合:固态存储器(诸如平面或3D NAND闪速存储器或NOR闪速存储器)、3D交叉点存储器、使用硫属化合物相变材料(例如硫属化合物玻璃)的存储器、铁电体存储器、氧化硅-氧化氮-硅(SONOS)存储器、聚合物存储器(例如铁电体聚合物存储器)、铁氧体晶体管随机存取存储器(Fe-TRAM)双向存储器、纳米线存储器、电可擦除可编程只读存储器(EEPROM)、忆阻器、单级或多级相变存储器(PCM)、自旋霍尔效应磁性RAM(SHE-MRAM)、和自旋转移矩磁性RAM(STTRAM)。
存储设备106可以存储任何适当的数据,诸如被处理器111用来提供计算机系统100的功能的数据。例如,与被核114A和114B执行的程序或被核114A和114B访问的文件相关联的数据可以被存储在存储设备106中。在各种实施例中,存储设备106可以存储甚至在到存储设备106的功率被移除之后维持其状态的持久性数据(例如用户的文件或软件应用程序代码)。存储设备106可专用于CPU 102或者与计算机系统100的其他设备(例如另一CPU或其他设备)共享。
在各种实施例中,系统设备106可以包括固态驱动器;硬盘驱动器;存储器卡;NVDIMM;磁带驱动器;或其他适当的大容量存储设备。在特定实施例中,存储设备106是基于块的存储设备,其存储可由主机计算设备(例如CPU 102)通过局部块地址(LBA)可寻址的数据块。
存储设备106可以包括用来使用任何适当的通信协议(诸如基于DDR的协议、PCI、PCIe、USB、SAS、SATA、FC、系统管理总线(SMBus)或其他适当协议)与I/O控制器112或外部I/O控制器104通信的任何适当接口。存储设备106还可以包括用来根据任何适当逻辑设备接口规范(诸如NVMe、AHCI或其他适当规范)与I/O控制器112或外部I/O控制器104通信的通信接口。
在各种实施例中,该存储设备106还包括地址解译引擎,其包括用来存储和更新逻辑地址空间(例如耦合至存储设备106的计算主机可见的地址空间)和存储设备106的存储介质的物理地址空间(其可能暴露于计算主机或可能不会暴露于计算主机)之间的映射的逻辑(例如一个或多个逻辑对物理(L2P)地址表)。该逻辑地址空间可以暴露多个数据逻辑组,它们被物理存储在由存储设备106通过存储设备106的物理地址空间可寻址的对应物理存储器组上。因此,L2P地址表可以在由主机提供的LBA和对应数据的物理地址之间解译。在一个特定实施例中,LBA指定可使用写入或读取命令引用的最小数据量(其有时可以被称为页)。在各种示例中,LBA可以指代512字节、1千字节(KB)、2KB、4KB或其他适当块尺寸的块尺寸。
在一些实施例中,系统100的所有元件或一些元件被驻留在(或耦合至)同一电路板(例如母板)上。在各种实施例中,在各元件之间可能存在任何适当的分区。例如,在CPU102中描绘的元件可以被定位在单个管芯(即芯片上)或封装上或者CPU 102的元件中的任一个可以被定位在芯片外或封装外。
可以以任何适当的方式将系统100的部件耦合在一起。例如,总线可以将各部件中的任一个耦合在一起。总线可以包括任何已知的互连,诸如多点分支总线、网格互连、环互连、点对点互连、串行互连、并行总线、一致性(例如高速缓存一致性)总线、分层协议架构、差分总线和射型收发器逻辑(GTL)总线。在各种实施例中,集成I/O子系统包括系统100的各种部件(诸如核114、存储器控制器116、I/O控制器112、集成I/O设备、直接存储器存取(DMA)逻辑(未被示出)等等)之间的点对点复用逻辑。在各种实施例中,可以通过包括任何数目的居间网络节点(诸如路由器、交换机或其他计算设备)的一个或多个网络将计算机系统100的部件耦合在一起。例如,计算主机(例如CPU 102)和存储设备106可以通过网络通信耦合。
尽管没有被描绘,但是系统100可以使用用来接收功率的电池和/或电源出口连接器以及相关联的系统、用来输出由CPU 102提供的数据的显示器、或允许CPU 102通过网络进行通信的网络接口。在各种实施例中,电池、电源出口连接器、显示器和/或网络接口可以被通信耦合至CPU 102。可以使用其他功率源,诸如可再生能源(例如太阳能或基于运动的能源)。
图2图示根据某些实施例实施基于操作系统的高速缓存的计算机系统200的部件的框图。系统200可以包括系统100的部件中的任一个。系统200的各种部件(例如虚拟文件系统204、文件系统206、易失性页高速缓存管理器208、块层210、存储高速缓存层212、以及存储设备驱动器214和216)可以包括由操作系统122A实施的逻辑(例如软件模块),其可以具有操作系统122的任何适当特性。
在所描绘的实施例中,应用程序124发出读取或写入系统调用202。该系统调用可以指定识别数据的任何适当信息,诸如识别要被访问的文件的文件描述符(在某些情况下这可以包括文件的路径和/或名称)、读取或写入的数量(例如字节数目)、进入文件中的偏移量(例如依据从文件开始起的字节)、将读取数据置于其中或者将写入数据存储在其中的缓冲器、或与要被读取或写入的数据相关联的其他适当数据。
由虚拟文件系统204来接收系统调用202。该虚拟文件系统204可以是文件系统206的抽象概念,以使得应用程序可以在不根据可由操作系统实施的许多文件系统中的任一个格式化请求的情况下生成系统调用。如果由操作系统122A实施多个文件系统,则虚拟文件系统204可以确定系统调用应该被发送到的适当文件系统206。该虚拟文件系统204可以以与系统调用发送至的特定文件系统206兼容的方式来格式化系统调用。
文件系统206可以表示任何适当的文件系统,诸如文件分配表(FAT)、新技术文件系统(NTFS)、弹性文件系统(ReFS)、HFS+、本地Linux文件系统、ISOFS、或其他适当文件系统。一般来说,文件系统使得所存储的数据对于应用程序或用户可见(例如通过以分层命名空间来组织存储)。文件系统可以管理对文件的内容和关于这些文件的元数据二者的访问。
文件系统206可以基于所接收的系统调用来调用页高速缓存应用程序接口(API)。在其他实施例中,该虚拟文件系统可以基于所接收的系统调用直接调用页高速缓存API(这样的调用由图2和3中的虚拟文件系统204和易失性页高速缓存管理器208和308之间的虚线来指示)。API调用可以包括上面描述的如被包括在系统调用中的信息或从其导出的信息中的任一个。在一个实施例中,API调用包括文件标识符(诸如如在Linux操作系统中使用的索引节点或其他类似标识符)、文件偏移量、和字节数。将API调用发送至易失性页高速缓存管理器208,其确定所请求的数据是否被存储在易失性页高速缓存128中。易失性页高速缓存管理器208可以维持存储在易失性页高速缓存128内的数据的记录以及此类数据的状态。
在读取系统调用的情况下,如果所请求的数据被存储在易失性页高速缓存128中,则将数据提供给请求应用程序(例如易失性页高速缓存管理器208可以通过易失性存储器控制器118将对于数据的请求发送至易失性系统存储器设备108)。如果所请求的数据不在易失性页高速缓存128中,则易失性页高速缓存管理器208向文件系统206通知这一点。文件系统然后确定对应于系统调用202中指定的数据的一个或多个LBA。例如,该文件系统206可以将文件描述符和偏移量映射至LBA。
将(一个或多个)LBA传递至块层210。在一个特定实施例中,由文件系统206确定的(一个或多个)LBA可以是相对LBA(例如文件系统106可能不知道存储设备106上的一个或多个其他分区并且因此所确定的(一个或多个)LBA可以是对于与文件系统相关联的分区专用的)。该块层210已知存储设备106上的其他分区并且可以将所确定的(一个或多个)LBA解译至(一个或多个)绝对LBA。在一些实施例中,该块层210可以向I/O调度器提交具有(一个或多个)绝对LBA的请求,该I/O调度器在将聚集的请求发送至存储高速缓存层212之前聚集类似的请求。该存储高速缓存层212确定存储高速缓存设备218(例如SSD或比存储设备106更快的其他存储设备)是否具有对应于所确定的(一个或多个)LBA的经过高速缓存的数据。如果存储高速缓存设备218当前高速缓存数据,则存储高速缓存层212可以将请求发送至存储设备驱动器216以检索数据并且存储设备驱动器216可以将对于数据的请求发送至存储高速缓存设备218(例如经由控制器,诸如I/O控制器112)。如果存储高速缓存设备218不具有被高速缓存的数据,则存储高速缓存层212将对于存储在所确定的(一个或多个)LBA处的数据的请求发送至存储设备驱动器214,其然后从存储设备106请求数据(例如经由I/O控制器112)。然后将该数据高速缓存在存储高速缓存设备中。在任一种情况下,可以将数据发送至易失性页高速缓存128以便存储在其中(例如经由直接存储器存取(DMA)操作),以使得处理器111可以从易失性页高速缓存128访问数据。
在写入系统调用的情况下,作为系统调用202的结果,可以执行对应(尽管不完全相同)操作并且可以将数据写入到易失性页高速缓存128、存储高速缓存设备218和/或存储设备106的任一个或多个。在一个特定实施例中,写入系统调用将数据写入到易失性页高速缓存128或持久性页高速缓存136并且操作系统将废页高速缓存页异步地冲刷到存储设备106。因此,完成写入系统调用自身并不一定保证数据是持久的(的确如果仅将数据存储在易失性页高速缓存128中则数据不是持久的)。为了确保持久性,应用程序可以发出附加系统调用(例如fsync或msync)来指示操作系统将废页从页高速缓存同步冲刷到存储设备106。当将数据写入到易失性页高速缓存128时,这包括将数据冲刷到存储设备106。当将数据写入到持久性页高速缓存136时,此类系统调用可能仅仅包括将冲刷来自一个或多个CPU高速缓存(例如L1高速缓存、L2高速缓存、LLC等等)的数据,之后是更新元数据以反映数据是持久的并且不一定会促使数据被同步冲刷到存储设备106(尽管在特定实施例中,响应于这些系统调用将此类数据冲刷到存储设备106)。
图3图示根据某些实施例的实施持久性页高速缓存136的计算机系统300的部件的框图。系统300可以包括系统100或200的部件中的任一个。由操作系统122B(包括易失性页高速缓存管理器308和持久性页高速缓存管理器312)来实施系统300的各种部件,该操作系统122B可以具有本文中描述的其他操作系统的任何适当特性。
在所描绘的实施例中,存储高速缓存设备218已经被省略,因为持久性页高速缓存136可以提供也不可由处理器111直接寻址的经过高速缓存的数据的持久性存储。如在图2的系统中那样,读取或写入系统调用202可以导致文件系统206将页高速缓存API调用发送至易失性页高速缓存管理器308(其可以包括易失性页高速缓存管理器208的特性中的任一个)。然而,易失性页高速缓存管理器308包括页高速缓存选择和转发逻辑310,其可操作用来确定API调用是表示对易失性页高速缓存128还是对持久性页高速缓存136的请求。如果该请求是对易失性页高速缓存128的,则易失性页高速缓存管理器308为该请求提供服务(例如通过确定所请求的数据是否被易失性页高速缓存128存储以及或者从易失性页高速缓存128请求数据或者向文件系统206提供数据没有被存储在易失性页高速缓存128中的指示)。如果该请求是对持久性页高速缓存136的,则逻辑310将请求转发至持久性页高速缓存管理器312。持久性页高速缓存管理器312可以执行与易失性页高速缓存管理器类似但关于持久性页高速缓存136的功能。该持久性页高速缓存管理器312可以为所接收的请求提供服务(例如通过确定所请求的数据是否被持久性页高速缓存136存储以及或者从持久性页高速缓存136请求数据或者例如经由逻辑310向文件系统206提供数据没有被存储在持久性页高速缓存136中的指示)。
如果数据没有被所选的页高速缓存存储,则(以与上面结合图2描述的方式类似的方式)从存储设备106请求数据。然后将所请求的数据写入到所选页高速缓存,在这里处理器111可以访问它(例如经由加载指令)并且将所请求的数据提供给应用程序124。
在特定实施例中,持久性页高速缓存136可以包括易失性页高速缓存128的核数据结构的持久性版本。仅作为一个示例,持久性页高速缓存136可以包括持久性基数树。在一个特定实施例中,对象缓存(slab)分配器(操作系统122使用它来管理易失性存储器)管理易失性页高速缓存128,但是不管理持久性页高速缓存136。在另一实施例中,单个分配器可以管理易失性页高速缓存128和持久性页高速缓存136。
因为几乎所有现有文件系统都利用页高速缓存,所以这些文件系统可以在对文件系统有很少改变到没有改变的情况下与系统300兼容,尽管可以对操作系统存储器管理系统作出改变来适应附加页高速缓存(即持久性页高速缓存136)的地址空间。例如,操作系统122B可以管理文件映射表,其包括对于指示对应的文件要被高速缓存在易失性页高速缓存128中还是要被高速缓存在持久性页高速缓存136中的每个文件映射的一个位。当确定API调用应用被转发至持久性页高速缓存管理器312还是由易失性页高速缓存管理器308来提供服务时,逻辑310(或下面描述的其他选择逻辑)可以访问适当的条目来确定该位的值。
因为在一些实施例中持久性存储器134的性能可能比易失性存储器126(例如DRAM)的性能更低,所以将一些文件高速缓存在易失性页高速缓存128中并且将其他文件高速缓存在持久性页高速缓存136中可能是有利的。操作系统122(或本文中描述的其变体中的任一个)可以支持易失性页高速缓存128或持久性页高速缓存136中的文件的选择性高速缓存。在一个示例中,可以基于来自应用程序的提示(例如在系统调用中接收到的标志诸如file open()或fadvise())来决定是否高速缓存在持久性页高速缓存136中。在另一示例中,OS 122可以基于试探法来作出确定。例如,被打开用于写入的文件或启动时间文件可以被高速缓存在持久性页高速缓存136中。作为另一示例,OS 122可以最初将文件高速缓存在持久性页高速缓存136中并且跟踪文件的高速缓存命中率。如果该命中率增大超过某一阈值,则文件可以另外或备选地被高速缓存在易失性页高速缓存128中以改进访问时间。在其他实施例中,不是基于每个文件地选择页高速缓存,而是可以指定整个文件系统用于高速缓存在持久性页高速缓存136中。例如,当盘或盘的分区安装有持久性高速缓存选项时,从该盘读取的文件结构的所有地址映射可以被标记有持久性标志,从而促使文件被高速缓存在持久性页高速缓存136中(当被高速缓存时)。
图4图示根据某些实施例的实施持久性存储器文件系统404和持久性页高速缓存136的计算机系统400的部件的框图。图4图示根据某些实施例的实施持久性页高速缓存的计算机系统的部件的框图。系统400可以包括系统100或本文中所述的其他系统的部件中的任一个。由操作系统122C(包括持久性存储器文件系统404)来实施系统400的各个部件,该操作系统122C可以具有本文中描述的操作系统中的任一个的任何适当特性。
如在图2的系统中,读取或写入系统调用可以导致将系统调用传递至文件系统206A。该文件系统可以具有文件系统206的任何适当特性。文件系统206A可以另外包括文件系统选择和转发逻辑402,其可操作用来确定系统调用是表示对易失性页高速缓存128还是对持久性页高速缓存136的请求。如果该请求是对易失性页高速缓存128的,则逻辑402允许由文件系统206A来对该请求提供服务(例如以与上面描述的方式类似的方式)。如果该请求是对持久性页高速缓存136的,则逻辑402可以对持久性存储器文件系统404作出API调用。该API调用可以包括来自系统调用202的任何适当参数或从其导出的其他参数。在一个特定实施例中,该API调用是如在基于Linux操作系统中使用的文件系统-高速缓存API调用或类似API调用。
持久性存储器文件系统404是任何适当的持久性存储器感知文件系统,诸如实施持久性存储器文件系统(PMFS)、基于Linux的DAX-EXT4或DAX-XFS文件系统、基于Windows的DAS或DAX模式NTFS、或其他适当文件系统的功能的文件系统。传统文件系统被配置成在访问存储装置之前检查页表。在各种实施例中,持久性存储器感知文件系统被配置成直接对存储设备执行读取和写入(即不用首先检查数据在页高速缓存中的拷贝)。因此,PM文件系统404可以被配置成创建在数据访问请求时直接访问的持久性页高速缓存136(不用首先检查传统页高速缓存,诸如易失性页高速缓存128)。在一个特定实施例中,持久性存储器文件系统404被配置成向持久性页高速缓存136发送请求,但是不向易失性页高速缓存128发送请求。
当PM文件系统404接收到API调用时,持久性页高速缓存管理器406可以为该请求提供服务(例如通过确定所请求的数据是否被持久性页高速缓存136存储以及或者从持久性页高速缓存136请求数据或者例如经由逻辑402向文件系统206A提供数据没有被存储在持久性页高速缓存136中的指示)。
当文件系统206A接收到表示对易失性页高速缓存128的请求的系统调用时,可以由文件系统206A作出对易失性页高速缓存管理器208的API调用并且易失性页高速缓存管理器208可以为该请求提供服务(例如通过确定所请求的数据是否被易失性页高速缓存128存储以及或者从易失性页高速缓存128请求数据或者向文件系统206提供数据没有被存储在易失性页高速缓存128中的指示)。在各种实施例中,操作系统可以将存储数据高速缓存在易失性页高速缓存128和持久性页高速缓存136二者中。在一个特定实施例中,在确定易失性页高速缓存128不包括该请求的数据时,文件系统(例如本文中描述的文件系统中任一个)可以对持久性页高速缓存管理器作出API调用以确定持久性页高速缓存136是否包括该数据。
不管被检查的页高速缓存如何,当文件系统206A接收到数据没有被存储在所选页高速缓存中的指示(或者在一些实施例中数据没有被存储在任一页高速缓存中的指示)时,它可以请求来自存储设备106的数据并且然后可以将该数据存储到所选页高速缓存以用于由处理器111检索。
在系统400中,PM文件系统404被有效地用作对文件系统206A的高速缓存。因此,将文件系统206A修改成对于某些数据将PM文件系统404用作页高速缓存(代替易失性页高速缓存128)。当PM文件系统404尝试访问数据时,它可以避免易失性页高速缓存128并尝试访问持久性页高速缓存136中的数据。在各种实施例中,该应用程序不知道PM文件系统404并且处在文件系统206A处置所有读取和写入系统调用的假设下。该PM文件系统404可以直接访问持久性页高速缓存136(例如不经过设备驱动器和块层)。
图5图示根据某些实施例的实施持久性存储文件系统中介层502和持久性页高速缓存136的计算机系统500的部件的框图。系统500可以包括系统100或本文中描述的其他系统的部件中的任一个。由操作系统122D(包括持久性存储器文件系统中介层502)来实施系统500的各种部件,该操作系统122D可以具有本文中描述的操作系统中的任一个的任何适当特性。
该中介层502拦截(例如由应用程序124和/或虚拟文件系统204)发送至文件系统206的请求。中介层502确定该请求与要被高速缓存在持久性页高速缓存136中的文件还是与要被高速缓存在易失性页高速缓存128中的文件有关。如果该请求与被标记成由易失性页高速缓存128进行高速缓存的文件有关,则允许将该请求经过中介层502传递至文件系统206,在那里以与上面描述的方式类似的方式来处理该请求。如果该请求与被标记成由持久性页高速缓存136进行高速缓存的文件有关,则中介层502将该请求重新指引至PM文件系统404。在一些实施例中,该中介层502还可以将该请求重新格式化成与PM文件系统404兼容的格式。然后由持久性页高速缓存管理器406以与上面描述的方式类似的方式为该请求提供服务。如果持久性页高速缓存136不包括所请求的数据,则由PM文件系统404通知中介层502并且通过文件系统206作出用于将数据从存储设备106拷贝到持久性页高速缓存136的请求。来自中介层的请求还可以向文件系统指示在访问存储设备106之前不(例如使用DIRECTI/O)在易失性页高速缓存中检查。
在一个特定实施例中,不是在将被拦截的系统调用传递至文件系统206或将该调用(例如经由API调用)重新指引至PM文件系统404之间进行确定,而是中介层502可以默认作出对PM文件系统404的API调用。如果持久性页高速缓存管理器406确定数据没有在持久性页高速缓存136中,则可以通知中介层502并且然后中介层可以将系统调用传递至文件系统206以进行处理。这有效地使得中介层能够通过将数据高速缓存在持久性存储器文件系统404中来向操作系统和应用程序呈现在尺寸上与存储设备106相同的新持久性存储器文件系统。
在一个特定实施例中,操作系统122D的滤波器驱动器(例如一些基于Windows的操作系统提供可以在文件系统顶部上运行的滤波器驱动器)可以被用来实施中介层502中的至少一部分。因此,在一个示例中,滤波器驱动器可以在不需要对NTFS的任何显著修改的情况下在NTFS顶部上运行以实施系统500。
图6图示根据某些实施例的用于将数据从页高速缓存提供给处理器111的示例流程600。可以由系统100的任何适当逻辑(诸如CPU 102、易失性页高速缓存128、持久性页高速缓存136、或存储设备106)来执行流程600的各种操作。
在602处,例如从由处理器111执行的应用程序接收数据请求。在604处,作出关于数据与易失性页高速缓存128还是与持久性页高速缓存136相关联的确定。作为一个示例,可以访问将文件映射至页高速缓存的表以确定指定哪个页高速缓存来高速缓存数据请求所引用的文件的数据。
如果易失性页高速缓存与数据相关联,则在606处作出关于易失性页高速缓存是否存储所请求的数据的确定。如果易失性页高速缓存存储数据,则在608处将该数据从易失性页高速缓存提供给处理器。可以以任何适当的方式来提供该数据。仅作为一个示例,该数据可以被易失性系统存储器设备108放置在总线上并且被拷贝到处理器111的寄存器中。如果该数据没有在易失性页高速缓存中,则在610处(例如基于数据请求的文件描述符和偏移量)确定对应于该数据的LBA并且将具有LBA的请求发送至存储设备。在612处将所请求的数据从存储设备拷贝到易失性页高速缓存并且然后在608处将其提供给处理器。
如果持久性页高速缓存与数据相关联,则在614处作出关于持久性页高速缓存是否存储所请求的数据的确定。如果持久性页高速缓存存储数据,则在616处将该数据从持久性页高速缓存提供给处理器。可以以任何适当的方式来提供该数据。仅作为一个示例,该数据可以被持久性系统存储器设备110放置在总线上并且被拷贝到处理器111的寄存器中。如果该数据没有在持久性页高速缓存中,则在618处(例如基于数据请求的文件描述符和偏移量)确定对应于该数据的LBA并且将具有LBA的请求发送至存储设备。在620处将所请求的数据从存储设备拷贝到持久性页高速缓存并且然后在616处将其提供给处理器。
图6中描述的流程仅仅是可能在特定实施例中发生的操作的表示。在其他实施例中,可以由系统100的部件来执行附加操作。本公开内容的各种实施例预期用于完成本文中描述的功能的任何适当的信令机制。在适当的情况下图6中图示的操作中的一些可以被重复、组合、修改或删除。另外,可以在不偏离特定实施例的范围的情况下以任何适当的顺序来执行操作。
设计可以经历从创建到模拟到制造的各个阶段。表示设计的数据可以以许多方式来表示该设计。首先,如在模拟中有用的,可以使用硬件描述语言(HDL)或另一功能描述语言来表示硬件。另外,可以在设计过程的某些阶段产生具有逻辑和/或晶体管门的电路级模型。此外,在某一阶段大部分设计都达到在硬件模型中表示各个设备的物理放置的数据级。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是为用于产生集成电路的掩模指定各个特征在不同掩模层上的存在或不存在的数据。在一些实施方式中,可以以数据库文件格式(诸如图形数据系统II(GDS II)、开放式艺术品系统交换标准(OASIS)或类似格式)来存储此类数据。
在一些实施方式中,除了其他示例之外,基于软件的硬件模型和HDL和其他功能描述语言对象可以包括寄存器传递语言(RTL)文件。此类对象可以是机器可解析的以使得设计工具可以接受HDL对象(或模型),针对所述硬件的属性解析HDL对象,以及根据对象确定物理电路和/或芯片上布局。设计工具的输出可以被用来制造物理设备。例如,设计工具可以根据HDL对象(除了将被实施以便实现在HDL对象中建模的系统的其他属性之外,诸如总线宽度、寄存器(包括尺寸和类型)、存储器块、物理链路路径、结构拓扑)来确定各个硬件和/或固件元件的配置。设计工具可以包括用于确定芯片上系统(SoC)和其他硬件设备的拓扑和结构配置的工具。在一些示例中,HDL对象可以被用作用于开发模型和设计文件的基础,该开发模型和设计文件可以被制造设备用来制造所述硬件。的确,HDL文件自身可以被提供为制造系统软件的输入以促使所述硬件的制造。
在设计的任何表示中,可以以机器可读介质的任何形式来存储表示设计的数据。存储器或者磁性或光学存储装置(诸如盘)可以是用来存储经由光波或电波而传送的信息的机器可读介质,该光波或电波被调制或以其他方式生成以传送此类信息。当指示或载送代码或设计的电载波被传送时,在执行电信号的拷贝、缓冲或再传输的范围内,作出新的拷贝。因此,通信提供商或网络提供商可以将条款(诸如编码在载波中的信息)存储在有形机器可读介质上,从而体现本公开内容的实施例的技术。
在各种实施例中,可以向制造系统(例如能够制造集成电路和/或有关部件的半导体制造系统)提供用于存储设计的表示的介质。该设计表示可以指示该系统制造能够执行上面描述的功能的任何组合的设备。例如,设计表示可以关于制造哪些部件、应该如何将部件耦合在一起,应该将部件放置在设备上的哪里,以及/或关于与要被制造的设备有关的其他适当规范来指示系统。
因此,可以由存储在机器可读介质上的表示性指令来实施至少一个实施例的一个或多个方面,该表示性指令表示处理器内的各个逻辑,当被机器读取时该表示性指令促使该机器制造逻辑来执行本文中描述的技术。此类表示(常常被称为“IP核”)可以被存储在非暂时有形机器可读介质上并且被供给各个顾客或制造设施以加载到制造逻辑的制造机器或处理器中。
可以以硬件、软件、固件或此类实现方法的组合来实施本文中公开的机制的实施例。本公开内容的实施例可以被实施为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备和至少一个输出设备。
可以将程序代码应用于输入指令以执行本文中所述的功能并且生成输出信息。可以以已知的方式将输出信息应用于一个或多个输出设备。为了该申请的目的,处理系统包括具有处理器(诸如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器)的任何系统。
可以以高级程序或面向对象的编程语言来实施程序代码以便与处理系统通信。如果需要的话,还可以以汇编或机器语言来实施该程序代码。事实上,本文中所述的机制在范围上不限于任何特定编程语言。在各个实施例中,该语言可以是编译或解释语言。
可以经由存储在可由处理元件执行的(或在其他方面访问的)机器可访问、机器可读、计算机可访问、或计算机可读介质上的指令或代码来实施上面阐述的方法、硬件、软件、固件或代码的实施例。非瞬时机器可访问/可读介质包括提供(即存储和/或传送)以机器(诸如计算机或电子系统)可读形式的信息的任何机制。例如,非暂时机器可访问介质包括随机存取存储器(RAM),诸如静态RAM(SRAM)或动态RAM(DRAM);ROM;磁性或光学存储介质;闪速存储器设备;电气存储设备;光学存储设备;声学存储设备;用于保持从暂时(传播)信号(例如载波、红外信号、数字信号)接收的信息的其他形式的存储设备等等,要将它们与可能从其中接收信息的非暂时介质区分开来。
可以将用来对逻辑编程以执行本公开内容的实施例的指令存储在系统中的存储器(诸如DRAM、高速缓存、闪速存储器或其他存储装置)中。此外,可以经由网络或通过其他计算机可读介质的方式来分配指令。因此,机器可读介质可以包括用于存储或传送以机器(例如计算机)可读形式的信息的任何机制,但不限于软式磁碟片、光盘、压缩盘、只读存储器(CD-ROM)、和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁性或光学卡、闪速存储器、或在通过互联网经由电气、光学、声学或其他形式的传播信号(例如载波、红外信号、数字信号等等)的信息传输中使用的有形机器可读存储装置。因此,计算机可读介质包括适合于存储或传送以机器(例如计算机)可读形式的电子指令或信息的任何类型的有形机器可读介质。
逻辑可以被用来实施遍及该图描绘的系统的各种部件(诸如CPU 102、外部I/O控制器104、存储设备106、系统存储器设备108和110、本文中描述的其他部件或其子部件)中的任一个的流程(例如流程600)或功能中的任一个。“逻辑”可以指代用来执行一个或多个功能的硬件、固件、软件和/或每一个的组合。作为一个示例,逻辑可以包括与非暂时介质相关联的硬件(诸如微控制器或处理器)以存储被适配成由该微控制器或处理器执行的代码。因此,在一个实施例中,对逻辑的引用指代硬件,其被具体配置成识别和/或执行要在非暂时介质上保持的代码。此外,在另一实施例中,逻辑的使用指代包括代码的非暂时介质,其被具体适配成由微控制器执行以实行预定操作。并且如可以推断的,在又另一实施例中,术语逻辑(在该示例中)可以指代硬件和非暂时介质的组合。在各个实施例中,逻辑可以包括可操作用来执行软件指令的微处理器或其他处理元件、分立逻辑(诸如专用集成电路(ASIC))、编程逻辑设备(诸如现场可编程门阵列(FPGA))、包含指令的存储器设备、逻辑设备的组合(例如如将在印刷电路板上找到的)、或其他适当硬件和/或软件。逻辑可以包括可通过例如晶体管实施的一个或多个门或其他电路部件。在一些实施例中,逻辑还可以被完全体现为软件。软件可以被体现为软件包、代码、指令、指令集和/或记录在非暂时计算机可读存储介质上的数据。固件可以被体现为代码、指令或指令集和/或被硬编码(例如非易失性的)在存储器设备中的数据。常常是,被图示为分开的逻辑边界通常会改变并且潜在重叠。例如,第一和第二逻辑可以在潜在保持某一独立硬件、软件或固件的同时共享硬件、软件、固件或其组合。
在一个实施例中,短语‘用来’或‘被配置成’的使用指代布置、放在一起、制造、提供来销售、输入和/或设计设备、硬件、逻辑或元件来执行指定或确定的任务。在该示例中,如果没有进行操作的设备或其元件被设计、耦合和/或互连以执行指定的任务,则没有进行操作的该设备或其元件仍‘被配置成’执行所述指定的任务。作为一个纯粹的说明性示例,逻辑门在操作期间可以提供0或1。但是‘被配置成’向时钟提供启用信号的逻辑门不包括可以提供1或0的每个潜在逻辑门。作为代替,逻辑门是以在操作期间该1或0输出用来启用时钟的某一方式耦合的一个逻辑门。要再次指出,术语‘被配置成’的使用不需要操作,而是作为代替关注于设备、硬件和/或元件的潜在状态,在这里在潜状态中当该设备、硬件和/或元件正在操作时该设备、硬件和/或元件被设计成执行特定任务。
此外,在一个实施例中,短语‘能够/能够用来’和或‘可操作用来’的使用指代以使得能够以具体方式来使用该设备、逻辑、硬件和/或元件的这种方式而设计的某一设备、逻辑、硬件和/或元件。在一个实施例中,如在上面指出的,用来、能够用来、或可操作用来的使用指代设备、逻辑、硬件和/或元件的潜在状态,在这里该设备、逻辑、硬件和/或元件不进行操作但以使得能够以具体方式使用该设备的此类方式来设计。
如在本文中所使用的,值包括数字、状态、逻辑状态或二进制逻辑状态的任何已知表示。常常是,逻辑电平、逻辑值或多个逻辑值的使用也被指代为1和0,它们简单地表示二进制逻辑状态。例如,1指代高逻辑电平并且0指代低逻辑电平。在一个实施例中,诸如晶体管或闪速单元的存储单元可能能够保持单个逻辑值或多个逻辑值。然而,已经在计算机系统中使用值的其他表示。例如,十进制数十也可以被表示为1010的二进制值和十六进制字母A。因此,值包括能够在计算机系统中保持的信息的任何表示。
此外,可以用值或值的各部分来表示状态。作为一个示例,诸如逻辑一的第一值可以表示默认或初始状态,而诸如逻辑零的第二值可以表示非默认状态。此外,在一个实施例中,术语重置和设置分别指代默认和已更新值或状态。例如,默认值潜在地包括高逻辑值(即重置),而已更新值潜在包括低逻辑值(即设置)。要指出,可以利用值的任何组合来表示任何数目的状态。
在至少一个实施例中,一种装置包括用来存储操作系统的可执行指令的存储器;以及处理器,其用来识别来自应用程序的对数据的请求;确定持久性页高速缓存是否存储数据的拷贝,其中该持久性页高速缓存可由处理器直接寻址并且用来高速缓存不可由处理器直接寻址的存储设备的数据;以及从持久性页高速缓存访问数据。
在一个实施例中,该处理器用来识别来自第二应用程序的对第二数据的请求;确定易失性页高速缓存是否存储数据的拷贝,其中该易失性页高速缓存可由处理器直接寻址并且用来高速缓存存储设备的数据;以及从易失性页高速缓存访问数据。在一个实施例中,该处理器用来实施易失性页高速缓存管理器,其用来确定包括该数据的文件被标记成高速缓存在持久性页高速缓存中;以及向持久性页高速缓存管理器发送对数据的请求。在一个实施例中,该处理器用来实施操作系统的第一文件系统,其中该第一文件系统用来确定包括该数据的文件被标记成高速缓存在持久性页高速缓存中还是易失性页高速缓存中;以及响应于确定该文件被标记成高速缓存在持久性页高速缓存中,向第二文件系统发送对数据的请求。在一个实施例中,该处理器用来实施用来朝向易失性页高速缓存发送数据请求的第一文件系统;实施用来朝向持久性页高速缓存发送数据请求的第二文件系统;以及实施用来拦截发送至第一文件系统的数据请求且将该数据请求传达给第二文件系统的中介层。在一个实施例中,对数据的请求包括文件描述符。在一个实施例中,该处理器用来在确定持久性页高速缓存不存储该数据的拷贝时向存储设备发送将该数据拷贝到持久性页高速缓存的请求。在一个实施例中,该处理器用来将对数据的请求的文件描述符和偏移量解译成逻辑块地址并且在对存储设备的请求中将该逻辑块地址发送至存储设备。在一个实施例中,该易失性页高速缓存要被存储在易失性存储器中,该易失性存储器进一步用来存储应用程序代码和应用程序数据。在一个实施例中,该持久性页高速缓存要被存储在3D交叉点存储器中。在一个实施例中,该处理器用来基于来自发出引用该数据的系统调用的应用程序的提示;是否该数据被开放用于写入;是否需要该数据来进行启动;或者该数据是文件数据还是元数据中的至少一个来确定将数据高速缓存在易失性页高速缓存还是持久性页高速缓存中。在一个实施例中,该处理器用来在接收到对持久性页高速缓存的同步废数据的请求时更新持久性页高速缓存中的元数据以便将废数据标记为持久的。
在至少一个实施例中,一种方法包括识别来自应用程序的对数据的请求;确定持久性页高速缓存是否存储数据的拷贝,其中该持久性页高速缓存可由处理器直接寻址并且用来高速缓存不可由处理器直接寻址的存储设备的数据;以及从持久性页高速缓存访问数据。
在一个实施例中,该方法进一步包括识别来自第二应用程序的对第二数据的请求;确定易失性页高速缓存是否存储数据的拷贝,其中该易失性页高速缓存可由处理器直接寻址并且用来高速缓存存储设备的数据;以及从易失性页高速缓存访问数据。在一个实施例中,该方法进一步包括实施易失性页高速缓存管理器,其用来确定包括该数据的文件被标记成高速缓存在持久性页高速缓存中;以及向持久性页高速缓存管理器发送对数据的请求。在一个实施例中,该方法进一步包括实施操作系统的第一文件系统,其中该第一文件系统用来确定包括该数据的文件被标记成高速缓存在持久性页高速缓存中还是易失性页高速缓存中;以及响应于确定该文件被标记成高速缓存在持久性页高速缓存中,向第二文件系统发送对数据的请求。在一个实施例中,该方法进一步包括实施用来朝向易失性页高速缓存发送数据请求的第一文件系统;实施用来朝向持久性页高速缓存发送数据请求的第二文件系统;以及实施用来拦截发送至第一文件系统的数据请求且将该数据请求传达给第二文件系统的中介层。在一个实施例中,对数据的请求包括文件描述符。在一个实施例中,该方法进一步包括在确定持久性页高速缓存不存储该数据的拷贝时向存储设备发送将该数据拷贝到持久性页高速缓存的请求。在一个实施例中,该方法进一步包括将对数据的请求的文件描述符和偏移量解译成逻辑块地址并且在对存储设备的请求中将该逻辑块地址发送至存储设备。在一个实施例中,该易失性页高速缓存要被存储在易失性存储器中,该易失性存储器进一步用来存储应用程序代码和应用程序数据。在一个实施例中,该持久性页高速缓存要被存储在3D交叉点存储器中。在一个实施例中,该方法进一步包括基于来自发出引用该数据的系统调用的应用程序的提示;是否该数据被开放用于写入;是否需要该数据来进行启动;或者该数据是文件数据还是元数据中的至少一个来确定将数据高速缓存在易失性页高速缓存还是持久性页高速缓存中。在一个实施例中,该方法进一步包括在接收到对持久性页高速缓存的同步废数据的请求时更新持久性页高速缓存中的元数据以便将废数据标记为持久的。
在至少一个实施例中,一种非暂时机器可读存储介质包括存储在其上的指令,当被处理器执行时该指令促使该处理器识别来自应用程序的对数据的请求;确定持久性页高速缓存是否存储数据的拷贝,其中该持久性页高速缓存可由处理器直接寻址并且用来高速缓存不可由处理器直接寻址的存储设备的数据;以及从持久性页高速缓存访问数据。
在一个实施例中,当被执行时该指令用来进一步促使处理器识别来自第二应用程序的对第二数据的请求;确定易失性页高速缓存是否存储数据的拷贝,其中该易失性页高速缓存可由处理器直接寻址并且用来高速缓存存储设备的数据;以及从易失性页高速缓存访问数据。在一个实施例中,当被执行时该指令用来进一步促使处理器实施易失性页高速缓存管理器,其用来确定包括该数据的文件被标记成高速缓存在持久性页高速缓存中;以及向持久性页高速缓存管理器发送对数据的请求。在一个实施例中,当被执行时该指令用来进一步促使处理器实施操作系统的第一文件系统,其中该第一文件系统用来确定包括该数据的文件被标记成高速缓存在持久性页高速缓存中还是易失性页高速缓存中;以及响应于确定该文件被标记成高速缓存在持久性页高速缓存中,向第二文件系统发送对数据的请求。在一个实施例中,当被执行时该指令用来进一步促使处理器实施用来朝向易失性页高速缓存发送数据请求的第一文件系统;实施用来朝向持久性页高速缓存发送数据请求的第二文件系统;以及实施用来拦截发送至第一文件系统的数据请求且将该数据请求传达给第二文件系统的中介层。
在至少一个实施例中,一种计算机系统包括:用来存储易失性页高速缓存的易失性存储器;用来存储持久性页高速缓存的持久性存储器;以及处理器,其用来识别来自应用程序的对数据的请求;确定持久性页高速缓存是否存储数据的拷贝,其中该持久性页高速缓存可由处理器直接寻址并且用来高速缓存不可由处理器直接寻址的存储设备的数据;以及从持久性页高速缓存访问数据。
在一个实施例中,该处理器被用来识别来自第二应用程序的对第二数据的请求;确定易失性页高速缓存是否存储数据的拷贝,其中该易失性页高速缓存可由处理器直接寻址并且用来高速缓存存储设备的数据;以及从易失性页高速缓存访问数据。在一个实施例中,该易失性页高速缓存要被存储在易失性存储器中,该易失性存储器进一步用来存储应用程序代码和应用程序数据。在一个实施例中,该计算机系统进一步包括存储设备。在一个实施例中,该计算机系统进一步包括以下各项中的一个或多个:通信耦合至处理器的电池、通信耦合至处理器的显示器、或通信耦合至处理器的网络接口。
在至少一个实施例中,一种系统包括:用来识别来自应用程序的对数据的请求的部件;用来确定持久性页高速缓存是否存储数据的拷贝的部件,其中该持久性页高速缓存可由处理器直接寻址并且用来高速缓存不可由处理器直接寻址的存储设备的数据;以及用来从持久性页高速缓存访问数据的部件。
在一个实施例中,该系统进一步包括:用来识别来自第二应用程序的对第二数据的请求的部件;用来确定易失性页高速缓存是否存储数据的拷贝的部件,其中该易失性页高速缓存可由处理器直接寻址并且用来高速缓存存储设备的数据;以及用来从易失性页高速缓存访问数据的部件。
在一个实施例中,该系统进一步包括用来实施易失性页高速缓存管理器的部件,该易失性页高速缓存管理器用来确定包括该数据的文件被标记成高速缓存在持久性页高速缓存中;以及用来向持久性页高速缓存管理器发送对数据的请求的部件。在一个实施例中,该系统进一步包括用来实施操作系统的第一文件系统的部件,其中该第一文件系统用来确定包括该数据的文件被标记成高速缓存在持久性页高速缓存中还是易失性页高速缓存中;以及响应于确定该文件被标记成高速缓存在持久性页高速缓存中,向第二文件系统发送对数据的请求。在一个实施例中,该系统进一步包括用来实施用来朝向易失性页高速缓存发送数据请求的第一文件系统的部件;用来实施用来朝向持久性页高速缓存发送数据请求的第二文件系统的部件;以及用来实施用来拦截发送至第一文件系统的数据请求且将该数据请求传达给第二文件系统的中介层的部件。
遍及该说明书对“一个实施例”或“实施例”的参考意指结合该实施例描述的特定特征、结构或特性被包括在本公开内容的至少一个实施例中。因此,短语“在一个实施例中”或“在实施例中”在遍及该说明书的各个地方的出现不一定所有都指代同一实施例。此外,在一个或多个实施例中可以以任何适当方式来组合该特定特征、结构或特性。
在前述说明书中,已经参考具体示例性实施例给出了详细描述。然而,很明显可以在不偏离如在所附权利要求中阐述的本公开内容的更广阔精神和范围的情况下对其作出各种修改和改变。相应地该说明书和附图要被视为说明性意义而非限制性意义。此外,实施例以及其他示例性语言的前述使用不一定指代相同实施例或同一示例,而是可以指代不同且有区别的实施例,以及潜在的相同实施例。
Claims (22)
1.一种设备,包括:
用来存储操作系统的可执行指令的存储器;以及
处理器,其用来:
识别来自应用程序的对数据的请求;
确定持久性页高速缓存是否存储数据的拷贝,其中该持久性页高速缓存可由处理器直接寻址并且用来高速缓存不可由处理器直接寻址的存储设备的数据;以及
从持久性页高速缓存访问数据。
2.根据权利要求1所述的处理器,其中该处理器用来:
识别来自第二应用程序的对第二数据的请求;确定易失性页高速缓存是否存储数据的拷贝,其中该易失性页高速缓存可由处理器直接寻址并且用来高速缓存存储设备的数据;以及
从易失性页高速缓存访问数据。
3.根据权利要求1-2中的任一项所述的处理器,其中该处理器用来:
实施易失性页高速缓存管理器,其用来确定包括该数据的文件被标记成高速缓存在持久性页高速缓存中;以及
向持久性页高速缓存管理器发送对数据的请求。
4.根据权利要求1-2中的任一项所述的处理器,其中该处理器用来实施操作系统的第一文件系统,其中该第一文件系统用来:
确定包括该数据的文件被标记成高速缓存在持久性页高速缓存中还是易失性页高速缓存中;以及
响应于确定该文件被标记成高速缓存在持久性页高速缓存中,向第二文件系统发送对数据的请求。
5.根据权利要求1-2中的任一项所述的处理器,其中该处理器用来:
实施用来朝向易失性页高速缓存发送数据请求的第一文件系统;
实施用来朝向持久性页高速缓存发送数据请求的第二文件系统;以及
实施用来拦截发送至第一文件系统的数据请求且将该数据请求传达给第二文件系统的中介层。
6.根据权利要求1-5中的任一项所述的处理器,其中该处理器用来基于以下各项中的至少一个来确定将数据高速缓存在易失性页高速缓存还是持久性页高速缓存中:
来自发出引用该数据的系统调用的应用程序的提示;
是否该数据被开放用于写入;
是否需要该数据来进行启动;或者
该数据是文件数据还是元数据。
7.根据权利要求1-6中的任一项所述的处理器,其中该处理器用来在确定持久性页高速缓存不存储该数据的拷贝时向存储设备发送将该数据拷贝到持久性页高速缓存的请求。
8.根据权利要求1-7中的任一项所述的处理器,其中该处理器用来将对数据的请求的文件描述符和偏移量解译成逻辑块地址并且在对存储设备的请求中将该逻辑块地址发送至存储设备。
9.根据权利要求1-8中的任一项所述的处理器,其中该易失性页高速缓存要被存储在易失性存储器中,该易失性存储器进一步用来存储应用程序代码和应用程序数据。
10.根据权利要求1-9中的任一项所述的处理器,其中该处理器被用来在接收到对持久性页高速缓存的同步废数据的请求时更新持久性页高速缓存中的元数据以便将废数据标记为持久的。
11.一种方法,包括:
识别来自应用程序的对数据的请求;
确定持久性页高速缓存是否存储数据的拷贝,其中该持久性页高速缓存可由处理器直接寻址并且用来高速缓存不可由处理器直接寻址的存储设备的数据;以及
从持久性页高速缓存访问数据。
12.根据权利要求11所述的方法,进一步包括:
识别来自第二应用程序的对第二数据的请求;
确定易失性页高速缓存是否存储数据的拷贝,其中该易失性页高速缓存可由处理器直接寻址并且用来高速缓存存储设备的数据;以及
从易失性页高速缓存访问数据。
13.根据权利要求11-12中的任一项所述的方法,进一步包括:
实施易失性页高速缓存管理器,其用来确定包括该数据的文件被标记成高速缓存在持久性页高速缓存中;以及
向持久性页高速缓存管理器发送对数据的请求。
14.根据权利要求11-12中的任一项所述的方法,进一步包括实施操作系统的第一文件系统,其中该第一文件系统用来:
确定包括该数据的文件被标记成高速缓存在持久性页高速缓存中还是易失性页高速缓存中;以及
响应于确定该文件被标记成高速缓存在持久性页高速缓存中,向第二文件系统发送对数据的请求。
15.根据权利要求11-12中的任一项所述的方法,进一步包括:
实施用来朝向易失性页高速缓存发送数据请求的第一文件系统;
实施用来朝向持久性页高速缓存发送数据请求的第二文件系统;以及
实施用来拦截发送至第一文件系统的数据请求且将该数据请求传达给第二文件系统的中介层。
16.根据权利要求11-15中的任一项所述的方法,其中对数据的请求包括文件描述符。
17.根据权利要求11-16中的任一项所述的方法,进一步包括在确定持久性页高速缓存不存储该数据的拷贝时向存储设备发送将该数据拷贝到持久性页高速缓存的请求。
18.根据权利要求11-17中的任一项所述的方法,进一步包括将对数据的请求的文件描述符和偏移量解译成逻辑块地址并且在对存储设备的请求中将该逻辑块地址发送至存储设备。
19.根据权利要求11-18中的任一项所述的方法,其中该易失性页高速缓存要被存储在易失性存储器中,该易失性存储器进一步用来存储应用程序代码和应用程序数据。
20.根据权利要求11-19中的任一项所述的方法,其中该持久性页高速缓存要被存储在3D交叉点存储器中。
21.一种包括用来执行权利要求11-20中的任一项的方法的部件的系统。
22.根据权利要求21所述的系统,其中该部件包括机器可读代码,当被执行时该机器可读代码促使机器执行权利要求11-20中的任一项的方法的一个或多个步骤。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/476126 | 2017-03-31 | ||
US15/476,126 US10402335B2 (en) | 2017-03-31 | 2017-03-31 | Method and apparatus for persistently caching storage data in a page cache |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108694135A true CN108694135A (zh) | 2018-10-23 |
Family
ID=61599003
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810166314.7A Pending CN108694135A (zh) | 2017-03-31 | 2018-02-28 | 用于在页高速缓存中持久性地高速缓存存储数据的方法和设备 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10402335B2 (zh) |
EP (1) | EP3382557B1 (zh) |
CN (1) | CN108694135A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109902033A (zh) * | 2019-02-13 | 2019-06-18 | 山东华芯半导体有限公司 | 应用于NVMe SSD控制器的namespace的LBA分配方法和映射方法 |
CN111240588A (zh) * | 2019-12-31 | 2020-06-05 | 清华大学 | 一种持久性内存对象存储系统 |
CN111352864A (zh) * | 2018-12-21 | 2020-06-30 | 美光科技公司 | 快闪存储器持久性高速缓存技术 |
CN114625433A (zh) * | 2020-11-27 | 2022-06-14 | 北京字跳网络技术有限公司 | 应用程序启动方法和系统 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10771601B2 (en) * | 2017-05-15 | 2020-09-08 | Red Hat, Inc. | Distributing requests for data among servers based on indicators of intent to access the data |
US10977198B2 (en) * | 2018-09-12 | 2021-04-13 | Micron Technology, Inc. | Hybrid memory system interface |
WO2020231392A1 (en) * | 2019-05-10 | 2020-11-19 | Futurewei Technologies, Inc. | Distributed virtual file system with shared page cache |
US20220404994A1 (en) * | 2019-11-27 | 2022-12-22 | Hewlett-Packard Development Company, L.P. | Direct access (dax) file access responsive to interception of file access function call |
US11422903B2 (en) | 2020-07-30 | 2022-08-23 | Netapp Inc. | Maintaining and recomputing reference counts in a persistent memory file system |
CN112416569B (zh) * | 2020-09-17 | 2022-12-06 | 上海哔哩哔哩科技有限公司 | 缓存内存调整方法、装置及计算机设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4305778B2 (ja) * | 2006-12-28 | 2009-07-29 | コニカミノルタビジネステクノロジーズ株式会社 | メモリ装置、キャッシュ制御方法、およびキャッシュ制御プログラム |
US9213717B1 (en) * | 2011-09-28 | 2015-12-15 | Emc Corporation | Managing concurrent I/OS in file systems |
WO2016122491A1 (en) | 2015-01-28 | 2016-08-04 | Hewlett-Packard Development Company, L.P. | Page cache in a non-volatile memory |
KR20170019799A (ko) | 2015-08-12 | 2017-02-22 | 삼성전자주식회사 | 파일 시스템을 제어하는 전자 장치 및 그 동작 방법 |
-
2017
- 2017-03-31 US US15/476,126 patent/US10402335B2/en active Active
-
2018
- 2018-02-28 CN CN201810166314.7A patent/CN108694135A/zh active Pending
- 2018-03-07 EP EP18160609.6A patent/EP3382557B1/en active Active
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111352864A (zh) * | 2018-12-21 | 2020-06-30 | 美光科技公司 | 快闪存储器持久性高速缓存技术 |
CN111352864B (zh) * | 2018-12-21 | 2023-07-04 | 美光科技公司 | 快闪存储器持久性高速缓存技术 |
CN109902033A (zh) * | 2019-02-13 | 2019-06-18 | 山东华芯半导体有限公司 | 应用于NVMe SSD控制器的namespace的LBA分配方法和映射方法 |
CN109902033B (zh) * | 2019-02-13 | 2023-03-14 | 山东华芯半导体有限公司 | 应用于NVMe SSD控制器的namespace的LBA分配方法和映射方法 |
CN111240588A (zh) * | 2019-12-31 | 2020-06-05 | 清华大学 | 一种持久性内存对象存储系统 |
CN111240588B (zh) * | 2019-12-31 | 2021-09-24 | 清华大学 | 一种持久性内存对象存储系统 |
CN114625433A (zh) * | 2020-11-27 | 2022-06-14 | 北京字跳网络技术有限公司 | 应用程序启动方法和系统 |
CN114625433B (zh) * | 2020-11-27 | 2024-05-07 | 北京字跳网络技术有限公司 | 应用程序启动方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
EP3382557A1 (en) | 2018-10-03 |
EP3382557B1 (en) | 2021-05-19 |
US10402335B2 (en) | 2019-09-03 |
US20180285276A1 (en) | 2018-10-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108694135A (zh) | 用于在页高速缓存中持久性地高速缓存存储数据的方法和设备 | |
US20170344430A1 (en) | Method and apparatus for data checkpointing and restoration in a storage device | |
US10296250B2 (en) | Method and apparatus for improving performance of sequential logging in a storage device | |
US9092426B1 (en) | Zero-copy direct memory access (DMA) network-attached storage (NAS) file system block writing | |
KR20210147976A (ko) | 확장 가능하고 일관성 있는 메모리 장치를 위한 시스템 및 방법 | |
US20200117368A1 (en) | Method for achieving data copying in ftl of solid state drive, system and solid state drive | |
US9875192B1 (en) | File system service for virtualized graphics processing units | |
US10402338B2 (en) | Method and apparatus for erase block granularity eviction in host based caching | |
JP2017016691A (ja) | テーブル・オブ・コンテンツエントリを使用してデータを格納するためのシステムおよび方法 | |
CN107025070B (zh) | 版本化存储设备和方法 | |
EP3926451A1 (en) | Communication of data relocation information by storage device to host to improve system performance | |
US10126962B2 (en) | Adapted block translation table (BTT) | |
US20220004488A1 (en) | Software drive dynamic memory allocation and address mapping for disaggregated memory pool | |
CN109871182A (zh) | 存储装置及其操作方法及发出命令的方法 | |
CN109643574B (zh) | 用于在完成数据加载操作之前启动预读取操作的方法和设备 | |
US11836087B2 (en) | Per-process re-configurable caches | |
US20170255565A1 (en) | Method and apparatus for providing a contiguously addressable memory region by remapping an address space | |
EP4202704A1 (en) | Interleaving of heterogeneous memory targets | |
US20240053917A1 (en) | Storage device, operation method of storage device, and storage system using the same | |
US9760577B2 (en) | Write-behind caching in distributed file systems | |
US11010091B2 (en) | Multi-tier storage | |
US10331385B2 (en) | Cooperative write-back cache flushing for storage devices | |
US7206906B1 (en) | Physical address mapping framework | |
US20240211406A1 (en) | Systems, methods, and apparatus for accessing data from memory or storage at a storage node | |
Stratikopoulos | Low Overhead & Energy Efficient Storage Path for Next Generation Computer Systems |
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 |