CN114402306A - 映射未经分类的存储器存取至经分类的存储器存取 - Google Patents
映射未经分类的存储器存取至经分类的存储器存取 Download PDFInfo
- Publication number
- CN114402306A CN114402306A CN202080064975.4A CN202080064975A CN114402306A CN 114402306 A CN114402306 A CN 114402306A CN 202080064975 A CN202080064975 A CN 202080064975A CN 114402306 A CN114402306 A CN 114402306A
- Authority
- CN
- China
- Prior art keywords
- memory
- data
- memory device
- virtual
- type
- 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
Images
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/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- 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/0284—Multiple user address space allocation, e.g. using different base addresses
-
- 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/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- 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/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- 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/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- 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/20—Employing a main memory using a specific memory technology
- G06F2212/205—Hybrid memory, e.g. using both volatile and non-volatile memory
-
- 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/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
-
- 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/68—Details of translation look-aside buffer [TLB]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Preparation Of Compounds By Using Micro-Organisms (AREA)
Abstract
本发明提供一种计算机系统,其包含将可随机存取数据存储在所述计算机系统的主存储器中的不同类型的物理存储器装置。在一种做法中,将数据存储在由操作系统分配给应用程序的一或多个逻辑地址处的存储器中。将所述数据物理地存储在第一存储器类型的第一存储器装置(例如NVRAM)中。所述操作系统确定所存储数据的存取模式。响应于确定所述存取模式,将所述数据从所述第一存储器装置移动到不同存储器类型的第二存储器装置(例如DRAM)。
Description
相关申请
本申请请求2019年9月17日申请且标题为“映射未经分类的存储器存取至经分类的存储器存取(MAPPING NON-TYPED MEMORY ACCESS TO TYPED MEMORY ACCESS)”的美国专利申请第16/573,541号的优先权,所述申请的全部公开内容特此以引用的方式并入本文中。
技术领域
本文中所公开的至少一些实施例大体而言涉及存储器系统,且更特定言的,涉及但不限于用于基于数据存取模式将数据映射到一类型的存储器装置的存储器系统。
背景技术
各种类型的存储器装置可用于将数据存储在计算机系统的主存储器中。一种类型的易失性存储器装置为动态随机存取存储器(DRAM)装置。各种类型的非易失性存储器装置可包含NAND闪存存储器装置或非易失性随机存取存储器(NVRAM)装置。
在操作系统中,存储器管理负责管理计算机系统的主存储器。存储器管理跟踪主存储器中的存储器位置的状态(例如已分配或空闲的存储器状态)。存储器管理进一步确定在操作系统上运行的各种程序当中的存储器的分配。当将存储器分配给程序时,操作系统确定将指配给程序的存储器位置。
在一种做法中,操作系统使用分页分配将主存储器划分成称为页框的固定大小的单元。将软件程序的虚拟地址空间划分成具有相同大小的页。硬件存储器管理单元将页映射到物理存储器中的框。在分页存储器管理做法中,每个程序通常在其自身地址空间中运行。
在一些情况下,存储器管理单元(MMU)称为分页存储器管理单元(PMMU)。MMU管理由操作系统使用的所有存储器参考且进行虚拟存储器地址到物理地址的转换。MMU通常将虚拟地址空间(其为由处理器使用的地址的范围)划分成页。
在一些做法中,MMU使用含有页表项的页表将虚拟页号映射到主存储器中的物理页号。在一些情况下,使用称为转换后备缓冲器(translation lookaside buffer;TLB)的页表项的高速缓存以避免在映射虚拟地址时存取存储在主存储器中的页表的需要。当使用虚拟存储器时,可将虚拟地址的相连范围映射到物理存储器的若干非相连块。
在一些情况下,页表项可包含关于页使用的信息。各种实例包含关于数据是否已写入到页、最后使用页的时间、可读取及写入页的处理程序的类型(例如用户模式或监督员模式)及是否应对页进行高速缓存的信息。
在一种做法中,TLB实施为内容可定址存储器(CAM)。搜索密钥为虚拟地址,且搜索结果为物理地址。如果所请求地址在TLB中,那么使用从搜索检索的物理地址存取物理存储器装置。如果所请求地址不在TLB中,那么在主存储器中存取页表。
在一些情况下,虚拟存储器管理系统使用处理程序识别符使每一页与处理程序相关联。处理程序识别符与虚拟页的关联可有助于选择用于页出的页。举例来说,如果处理程序的主代码页已页出,那么立即需要属于彼处理程序的其它页的可能性降低。
更大体而言,计算机系统可具有一或多个存储器子系统。存储器子系统可为存储器模块,例如双列直插式存储器模块(DIMM)、小外形DIMM(SO-DIMM),或非易失性双列直插式存储器模块(NVDIMM)。存储器子系统可包含存储数据的一或多个存储器组件。存储器组件可为例如非易失性存储器组件及易失性存储器组件。存储器组件的实例包含存储器集成电路。一些存储器集成电路为易失性的且需要电力来维持存储的数据。一些存储器集成电路为非易失性的,且即使在未供电时也可保留存储的数据。非易失性存储器的实例包含闪存存储器、只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)及电可擦除可编程只读存储器(EEPROM)存储器等。易失性存储器的实例包含动态随机存取存储器(DRAM)及静态随机存取存储器(SRAM)。大体而言,计算机系统可利用存储器子系统在存储器组件处存储数据且从存储器组件检索数据。
举例来说,计算机系统可包含附接到所述计算机系统的一或多个存储器子系统。计算机系统可具有与一或多个存储器子系统通信以存储及/或检索数据及指令的中央处理单元(CPU)。用于计算机的指令可包含操作系统、装置驱动器及应用程序。操作系统管理计算机中的资源且为应用程序提供公用服务,例如资源的存储器分配及时间共享。装置驱动器操作或控制计算机中的特定类型的装置;且操作系统使用装置驱动器来提供由所述类型的装置提供的资源及/或服务。计算机系统的中央处理单元(CPU)可运行操作系统及装置驱动器以将服务及/或资源提供到应用程序。中央处理单元(CPU)可运行使用服务及/或资源的应用程序。举例来说,实施某应用程序类型的应用程序可指示中央处理单元(CPU)将数据存储在存储器子系统的存储器组件中及从存储器组件检索数据。
计算机系统的操作系统可允许应用程序使用存储器的虚拟地址将数据存储在计算机系统的一或多个存储器子系统的存储器组件中,或从所述存储器组件检索数据。操作系统将虚拟地址映射到连接到计算机系统的中央处理单元(CPU)的一或多个存储器子系统的物理地址。操作系统将在虚拟地址处指定的存储器存取转换为存储器子系统的物理地址。
可将虚拟地址空间划分成页。可将虚拟存储器的页映射到存储器子系统中的物理存储器的页。操作系统可使用分页技术经由存储器模块中的存储器的页存取存储装置中的存储器的页。在不同时间个例下,可将存储器模块中的存储器的相同虚拟页用作代理以存取计算机系统中的存储装置或另一存储装置中的存储器的不同物理页。
计算机系统可包含超管理器(或虚拟机监视器)以创建或提供虚拟机。虚拟机为使用可用于计算机系统中的资源及服务来虚拟地实施的计算装置。超管理器将虚拟机呈现给操作系统,如同虚拟机的组件为专用物理组件一般。客操作系统以类似于在计算机系统中运行的主机操作系统的方式在虚拟机中运行以管理可用于虚拟机中的资源及服务。超管理器允许多个虚拟机共享计算机系统的资源,且允许虚拟机在计算机上大体上彼此独立地作业。
附图说明
在附图的各图中借助于实例(且非限制)来说明实施例,在所述图中,类似编号指示类似元件。
图1说明根据一些实施例的具有存储器子系统的实例计算机系统。
图2展示根据一些实施例的使用存储器总线存取存储器模块中的不同类型的存储器的移动装置。
图3说明根据一些实施例的存储用以存取存储器子系统中的存储器装置的元数据的实例计算机系统。
图4展示根据一些实施例的经配置用于由主机计算机系统对存储器模块的易失性及非易失性存储器进行的存储器总线存取的存储器模块。
图5展示根据至少一些实施例的使用存储器总线存取来存取存储器模块的主机操作系统。
图6展示根据一些实施例的用于基于所存储元数据来管理用于计算机系统的地址空间中的处理程序的存储器的方法,所述所存储元数据使用于地址空间中的处理程序的虚拟地址范围与用于计算机系统中的存储器装置的物理地址相关联。
图7为可操作本发明的实施例的实例计算机系统的框图。
图8说明根据一些实施例的使用一或多个页表来存取存储器总线上的存储器装置的实例计算机系统。
图9说明根据一些实施例的具有页表项的实例页表。
图10展示根据一些实施例的用于生成页表项以将虚拟页的虚拟地址映射到不同存储器类型的存储器装置中的物理地址的方法。
图11说明根据一些实施例的使用命名空间表将命名空间映射到计算机系统中的物理存储器的不同存储器类型的实例计算机系统。
图12说明根据一些实施例的具有将命名空间映射到计算机系统的不同类型的存储器的记录的实例命名空间表。
图13展示根据一些实施例的用于将数据绑定到具有不同存储器类型的物理存储器的存储器系统中的命名空间的方法。
图14说明根据一些实施例的使用用于将存储器存取映射到不同类型的物理存储器的存取表的实例计算机系统。
图15说明根据一些实施例的具有用以将存储器存取映射到不同类型的存储器的记录的实例存取表。
图16展示根据一些实施例的用于基于存取模式将存储器存取映射到存储器的方法。
具体实施方式
本文的至少一些实施例涉及存取所存储元数据以识别存储器系统的存储数据的存储器装置。在如本文中所论述的各种实施例中,元数据可由各种类型的计算机系统存储及存取。在一个实例中,计算机系统为片上系统(SoC)装置,其存储用于管理在SoC装置上运行的一或多个处理程序的存储器使用的元数据。在一个实例中,移动装置使用SoC装置来管理向在移动装置上运行的一或多个应用程序分配主存储器。
其它实施例涉及将虚拟页的虚拟地址映射到不同存储器类型的存储器装置中的物理地址的页表项。这些实施例描述于以下标题为“与存储器类型相关的页表”的章节中。
其它实施例涉及将数据绑定到具有不同存储器类型的物理存储器的存储器系统中的命名空间。这些实施例描述于以下标题为“将数据绑定到命名空间”的章节中。
额外实施例涉及基于所存储数据的存取模式将数据映射到一个类型的存储器装置。在一个实施例中,操作系统确定存储在第一类型的存储器装置中的数据的存取模式(例如读取及/或写入存取的频率)。基于存取模式,操作系统将数据从物理地存储在第一类型的存储器装置(例如NVRAM)中移动到不同类型的存储器装置(例如较快DRAM装置,或较慢NAND闪存,取决于使用情况)。
在另一实施例中,针对存储在对应于第一类型的存储器装置的第一地址范围中的数据确定存取模式。基于经确定存取模式,将数据存储在对应于不同类型的存储器装置的第二地址范围中。这些实施例描述于以下标题为“基于存取模式将数据映射到存储器类型”的章节中。
先前计算机系统常常使用不同类型的存储器装置来存储数据。通常使用的一种类型的存储器装置为DRAM,其通常视为提供快速读取及写入存取。DRAM通常用于将数据存储在计算机系统的主存储器中。
其它存储器装置(例如闪存存储器)通常视为慢于DRAM。举例来说,DRAM的读取或写入存取时延通常明显小于闪存存储器的读取或写入存取时延。作为特定实例,一些存储器装置的写入存取时延可比DRAM装置大数十或甚至数百倍。
在使用不同类型的物理存储器装置以将数据存储在主存储器中的先前计算机系统中,存在处理器无法察觉用于各种处理程序的存储器如何实际上映射到存储器装置的技术问题。举例来说,处理器可将虚拟地址范围分配给处理程序。然而,处理器未察觉如何将虚拟地址范围映射到不同存储器装置。
在一个实例中,如果将用于某一处理程序的虚拟地址范围映射到明显慢于其它存储器装置(例如DRAM)的物理存储器装置(例如闪存存储器),那么所述处理程序可因不能从主存储器快速存取继续执行所述处理程序所需的数据而被迫缓慢运行。举例来说,所述处理程序可能需要来自主存储器的响应以便继续数据计算或其它处理(例如包含用于处理器对主存储器的读取存取请求的数据以获得在由所述处理程序执行期间所需的数据的响应)。如果来自主存储器的所需数据实际上存储在缓慢物理存储器装置中,那么处理在等待响应时明显延迟。
本发明的各种实施例提供对以上技术问题中的一或多者的技术解决方案。在一些实施例中,计算机系统存储关于由计算机系统使用的存储器装置(例如用以提供主存储器的存储器装置)的时延的数据。在一个实例中,已知对计算机系统的处理器可见的各种存储器区的时延(例如由在所存储元数据中收集及/或聚合的信息表示,如下文所论述)。
在一些实施例中,处理器、操作系统及/或应用程序(如由软件设计者编程)可由计算机系统启动及/或进行动作以避免归因于缓慢存储器存取的明显处理程序延迟。举例来说,需要快速存储器响应的高优先级处理程序可经配置以在DRAM中运行。
在另一实例中,可监视在移动装置上执行的应用程序的优先级。当应用程序的优先级增加(例如从低变高)时,处理器及/或操作系统可将应用程序自动传送出主存储器的对应于缓慢存储器装置的地址范围,且将所述应用程序移动到对应于快速存储器装置的新地址范围。
在一个实例中,存储器装置类型包含DRAM、NVRAM及NAND闪存。处理程序的优先级由处理器(例如基于所述处理程序的数据使用模式)确定。基于关于映射到这些存储器装置类型的地址范围的所存储元数据,处理器将处理程序分配给具有适当存储器时延的地址范围。举例来说,处理器可确定处理程序具有低、中还是高优先级。基于确定处理程序具有中优先级,将与所述处理程序相关联的软件及/或数据存储在对应于NVRAM存储器装置类型中的物理存储的地址范围中,其具有中等时延。
在一个实例中,NVRAM装置类型为3D XPoint存储器。在一个实例中,NVRAM装置类型可为电阻式随机存取存储器、磁阻式RAM、相变RAM及/或铁电RAM。在一个实例中,将NVRAM芯片用作计算机系统的主存储器(例如NVDIMM-P)。在一个实例中,使用DIMM封装中的非易失性3D XPoint存储器来实施NVRAM装置。
在另一实例中,如果处理器及/或操作系统未经配置以响应于优先级改变而将应用程序自动传送到不同地址范围,那么应用程序的软件代码自身可经配置以从所存储元数据读取一或多个值。基于读取值,应用程序自身可管理数据存储,使得将数据优先存储在对应于更快存储器装置的地址范围中。在一个实例中,应用程序可基于读取或以其它方式提供有对所存储元数据的存取来确定计算机系统中的可用存储器装置的相对时延。在一个实例中,所存储元数据指定哪一数据在具有不同时延的各种不同存储器装置中的哪一存储器装置上。通过以这种方式指定存储器装置,应用程序可取决于正用以存储数据的存储器装置确定对特定数据的存取的时延。
在一个实例中,移动装置上的应用程序在由(例如在片上系统装置上执行的)操作系统请求主存储器的分配时读取所存储元数据。在一个实例中,应用程序提出对主存储器中的对应于特定类型的存储器装置及/或与存储器读取或写入存取相关联的特定时延的地址范围的请求。
在一个实例中,应用程序读取或以其它方式存取所存储元数据以确定哪一存储器为快速的,以及哪一存储器为缓慢的。在移动装置的第一上下文中,应用程序提出对快速存储器的分配的请求。在移动装置的第二上下文中,应用程序提出对缓慢存储器的分配的请求。在一个实例中,响应于预定上下文的检测,应用程序启动或提出对存储器的分配的改变的请求。在一个实例中,应用程序基于(例如由处理器)对所存储元数据的经更新查询及/或由计算机系统的处理器提供到应用程序的数据(例如移动装置的操作特性)确定上下文的改变。
在一个实施例中,计算机系统包含第一存储器装置(例如DRAM)及第二存储器装置(例如NVRAM或NAND闪存),及一或多个处理装置(例如CPU或片上系统(SoC))。计算机系统进一步包含含有指令的存储器,所述指令经配置以指示一或多个处理装置:存取由操作系统维护的地址空间中的存储器,所述存取包含使用所述地址空间中的地址来存取所述第一存储器装置及所述第二存储器装置;存储使所述地址空间的第一地址范围与所述第一存储器装置相关联且使所述地址空间的第二地址范围与所述第二存储器装置相关联的元数据;及由所述操作系统基于所存储元数据管理包含第一处理程序及第二处理程序的处理程序,其中将用于所述第一处理程序的数据存储在所述第一存储器装置中,且将用于所述第二处理程序的数据存储在所述第二存储器装置中。
在一个实施例中,计算机系统使用包含DRAM、NVRAM及NAND闪存的存储器装置类型。在一个实例中,DRAM快于NVRAM,NVRAM快于NAND闪存。计算机系统经配置以使得可由计算机系统的处理器使用虚拟存储器地址直接存取所有三种不同类型的存储器。在一个实例中,处理器与存储器管理单元通信以实施虚拟至物理地址映射系统。
在一个实施例中,应用程序未经预编程或未以其它方式经配置以基于不同类型的存储器装置管理或处置存储器分配的优化。举例来说,这可针对遗留软件程序发生。在这个类型的情况下,操作系统可经配置以管理针对应用程序的存储器分配的优化。
在一个实例中,操作系统检测或以其它方式确定应用程序的一或多个特性。基于特性,操作系统使用所存储元数据将主存储器中的一或多个地址范围指配给应用程序。在一个实例中,基于由应用程序自身(例如当应用程序在移动装置上启动时)提供的信息来确定特性。在另一实例中,除其上执行应用程序的计算机系统以外,由计算装置提供特性。在一个实例中,使用中央存储库来存储及更新应用程序的特性的数据库或表。在一个实例中,中央服务器将关于待使用的类型的物理存储器的指示提供到操作系统。
在一个实施例中,操作系统确定与计算机系统及/或应用程序的执行相关联的上下文。基于此上下文,操作系统使用所存储元数据将主存储器中的一或多个地址范围指配给应用程序。
在一个实施例中,所存储元数据用于识别存储数据的装置。存储器子系统具有可由存储器地址空间中的处理器(例如SoC)定址的多个物理存储器装置(例如DRAM、NVRAM及NAND闪存)。元数据用以指定将哪些存储器地址区映射到哪些物理存储器装置。元数据可载入到DRAM及/或处理器中(例如载入到处理器的高速缓存中)以确定哪一数据在哪一装置上,及/或用以估计对相应数据的存取的时延。
在一个实施例中,应用程序在具有使用主存储器的处理器的移动装置上执行。应用程序请求移动装置的操作系统分配主存储器的一部分以供应用程序使用。所分配存储器在逻辑/虚拟存储器空间中(例如由程序设计师及由处理器的执行单元所见的存储器地址为虚拟的)。在一个实施例中,通过页表将虚拟存储器地址映射到真实/物理存储器。将页表中的映射数据的一部分高速缓存于处理器的缓冲器中。在一个实例中,缓冲器为转换后备缓冲器(TLB)。
在一个实施例中,计算机系统包含DRAM、NVRAM及NAND闪存存储器装置。计算机系统的处理器按地址随机存取主存储器。主存储器内的地址对应于这三种类型的存储器装置上的数据存储的物理位置。在一个实例中,装置中的每一者由处理器使用同步存储器总线存取。在一个实例中,DRAM为同步动态随机存取存储器(SDRAM),其具有与在CPU与存储器控制器集线器之间承载数据的系统总线同步的接口。
图1说明根据一些实施例的具有存储器子系统110的实例计算环境100。存储器子系统110可包含媒体,例如存储器组件109A至109N。存储器组件109A至109N可为易失性存储器组件、非易失性存储器组件,或其组合。在一些实施例中,存储器子系统110为存储器模块。存储器模块的实例包含DIMM及NVDIMM。在一些实施例中,存储器子系统110为混合式存储器/存储子系统。大体而言,计算环境100可包含使用存储器子系统110的计算机系统120。举例来说,计算机系统120可将数据写入到存储器子系统110且从存储器子系统110读取数据。
计算机系统120可为计算装置,例如移动装置、IoT装置、台式计算机、膝上型计算机、网络服务器,或包含存储器及处理装置的这类计算装置。计算机系统120可包含或耦合到存储器子系统110,使得计算机系统120可从存储器子系统110读取数据或将数据写入到存储器子系统110。计算机系统120可经由物理主机接口耦合到存储器子系统110。如本文中所使用,“耦合到”通常是指组件之间的连接,其可为间接通信连接或直接通信连接(例如无中介组件)、有线或无线、包含例如电、光学、磁性的连接等。物理主机接口的实例包含但不限于串行高级技术附件(SATA)接口、快速外设组件互连(PCIe)接口、通用串行总线(USB)接口、光纤信道、串行附接SCSI(SAS)、双数据速率(DDR)存储器总线等。物理主机接口可用于在计算机系统120与存储器子系统110之间传输数据。当存储器子系统110通过PCIe接口与计算机系统120耦合时,计算机系统120可进一步利用NVM快速(NVMe)接口存取存储器组件109A至109N。物理主机接口可提供用于在存储器子系统110与计算机系统120之间传递控制、地址、数据及其它信号的接口。
图1说明存储器子系统110作为实例。大体而言,计算机系统120可经由共享通信连接、多个单独通信连接及/或通信连接的组合存取多个存储器子系统。在一个实例中,每一存储器子系统110可为由处理装置118经由存储器总线随机存取的不同类型的存储器装置。
计算机系统120包含处理装置118及控制器116。处理装置118可为例如微处理器、中央处理单元(CPU)、处理器的处理核心、执行单元等。在一些情况下,控制器116可称为存储器控制器、存储器管理单元及/或启动器。在一个实例中,控制器116控制经由耦合在计算机系统120与一或多个存储器子系统110之间的总线的通信。
大体而言,控制器116可将命令或请求发送到存储器子系统110以用于对存储器组件109A至109N的所要存取。控制器116可进一步包含接口电路系统以与存储器子系统110通信。接口电路系统可将从存储器子系统110接收到的响应转换成用于计算机系统120的信息。
计算机系统120的控制器116可与存储器子系统110的控制器115通信以进行操作,例如在存储器组件109A至109N处读取数据、写入数据或擦除数据,及其它这类操作。在一些情况下,控制器116集成于处理装置118的同一封装内。在其它情况下,控制器116与处理装置118的封装分开。控制器116及/或处理装置118可包含硬件,例如一或多个集成电路及/或离散组件、缓冲器存储器、高速缓存存储器或其组合。控制器116及/或处理装置118可为微控制器、专用逻辑电路系统(例如现场可编程门阵列(FPGA)、专用集成电路(ASIC)等),或另一合适的处理器。
存储器组件109A至109N可包含各种不同类型的非易失性存储器组件及/或易失性存储器组件的任何组合。非易失性存储器组件的实例包含与非(NAND)类型闪存存储器。在一个实例中,存储器组件109A至109N中的每一者可包含一或多个存储器单元阵列,例如单阶单元(SLC)或多阶单元(MLC)(例如三阶单元(TLC)或四阶单元(QLC))。在一些实施例中,特定存储器组件可包含存储器单元的SLC部分及MLC部分两者。存储器单元中的每一者可存储由计算机系统120使用的一或多个数据位(例如数据块)。
尽管例如NAND类型闪存存储器的非易失性存储器组件为一个实例,但存储器组件109A至109N可基于任何其它类型的存储器,例如易失性存储器。在一些实施例中,存储器组件109A至109N可为(但不限于)随机存取存储器(RAM)、只读存储器(ROM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(SDRAM)、相变存储器(PCM)、磁性随机存取存储器(MRAM)、自旋转移力矩(STT)-MRAM、铁电晶体管随机存取存储器(FeTRAM)、铁电RAM(FeRAM)、导电桥接RAM(CBRAM)、电阻式随机存取存储器(RRAM)、氧化物类RRAM(OxRAM)、或非(NOR)闪存存储器、电可擦除可编程只读存储器(EEPROM)、纳米线类非易失性存储器、并入有忆阻器技术的存储器,及非易失性存储器单元的3D XPoint阵列。非易失性存储器的交叉点阵列可基于体电阻的改变结合可堆叠交叉栅格数据存取阵列进行位存储。另外,与许多基于闪存的存储器相比,交叉点非易失性存储器可进行原地写入操作,其中可在先前未擦除非易失性存储器单元的情况下对所述非易失性存储器单元进行编程。另外,存储器组件109A至109N的存储器单元可分组为存储器页或数据块,其可指代用以存储数据的存储器组件单元。
存储器子系统110的控制器115可与存储器组件109A至109N通信以进行操作,例如在存储器组件109A至109N处读取数据、写入数据或擦除数据,及其它这类操作(例如响应于由控制器116在命令总线上调度的命令)。控制器115可包含硬件,例如一或多个集成电路及/或离散组件、缓冲器存储器或其组合。控制器115可为微控制器、专用逻辑电路系统(例如现场可编程门阵列(FPGA)、专用集成电路(ASIC)等),或另一合适的处理器。控制器115可包含经配置以执行存储在本地存储器119中的指令的处理装置117(处理器)。在所说明实例中,控制器115的本地存储器119包含嵌入式存储器,其经配置以存储用于进行控制存储器子系统110的操作的各种处理程序、操作、逻辑流程及例程的指令,包含处置存储器子系统110与计算机系统120之间的通信。在一些实施例中,本地存储器119可包含存储存储器指标、所提取数据等的存储器寄存器。本地存储器119还可包含用于存储微码的只读存储器(ROM)。尽管图1中的实例存储器子系统110已说明为包含控制器115,但在本发明的另一实施例中,存储器子系统110可不包含控制器115,且可改为依赖于外部控制(例如由外部主机或由与存储器子系统分开的处理器或控制器提供)。
大体而言,控制器115可从计算机系统120接收命令或操作,且可将所述命令或操作转换成指令或适当的命令以实现对存储器组件109A至109N的所要存取。控制器115可负责其它操作,例如耗损调平操作、碎片收集操作、错误检测及错误校正代码(ECC)操作、加密操作、高速缓存操作,及与存储器组件109A至109N相关联的逻辑块地址与物理块地址之间的地址转换。控制器115可进一步包含主机接口电路系统以经由物理主机接口与计算机系统120通信。主机接口电路系统可将从计算机系统接收到的命令转换成用以存取存储器组件109A至109N的命令指令,以及将与存储器组件109A至109N相关联的响应转换成用于计算机系统120的信息。
存储器子系统110还可包含未说明的额外电路系统或组件。在一些实施例中,存储器子系统110可包含高速缓存或缓冲器121(例如DRAM或SRAM),及可从控制器115接收地址且解码地址以存取存储器组件109A至109N的地址电路系统(例如行解码器及列解码器)。
计算环境100包含计算机系统120中的元数据组件113,其存储用以识别存储数据的存储器装置的元数据(例如上文的各种实施例中所论述)。元数据组件113的一部分可驻存在计算机系统120及/或存储器子系统110上。在一个实例中,将元数据的一部分存储在本地存储器119及/或缓冲器121中。在一个实例中,将元数据的一部分替代地及/或另外存储在控制器116的高速缓存中(例如存储在转换后备缓冲器中)。
在一个实例中,存储器子系统110可经由DDR或其它类型的同步存储器总线为计算机系统120提供对不同类型的存储器装置中的数据的存取。在一个实施例中,将存取提供到DIMM上的NVRAM中的数据及DRAM中的数据。在一个实例中,使数据在计算机系统120的随机存取存储器地址空间中可存取,以用于经由DDR存储器总线在主机读取/写入请求期间进行存取。
在一个实例中,计算机系统120将页入请求(用于对一页的存取)发送到控制器115。响应于接收到页入请求,控制器115将一页从缓慢媒体(例如非易失性存储器装置)移动到易失性存储器装置(例如存储器子系统110上的DRAM)。
在一个实例中,计算机系统120将页出请求发送到控制器115。响应于接收到页出请求,控制器115经由缓冲器121将数据从易失性存储器(例如存储器子系统110上的DRAM)移出至非易失性存储器。
在一些实施例中,计算机系统120中的控制器116及/或处理装置118包含元数据组件113的至少一部分。举例来说,控制器116及/或处理装置118可包含实施元数据组件113的逻辑电路系统。举例来说,计算机系统120的处理装置118(处理器)可经配置以执行存储在存储器中的指令,以用于进行识别用于元数据组件113的数据存储在哪些装置中的操作,如本文中所描述。在一些实施例中,元数据组件113为计算机系统120的操作系统的部分、装置驱动器或应用程序(例如在计算机系统120上执行的应用程序)。
在一些实施例中,存储器子系统110中的控制器115及/或处理装置117包含元数据组件113的至少一部分。举例来说,控制器115及/或处理装置117可包含实施元数据组件113的逻辑电路系统。
在一个实例中,中央处理单元(CPU)可存取连接到CPU的存储器系统中的存储器。举例来说,中央处理单元(CPU)可经配置以基于对元数据组件113的所存储元数据的查询来存取存储器。
图2展示根据一些实施例的使用存储器总线203存取存储器模块205中的不同类型的存储器的移动装置200。图2展示具有不同类型的存储器的计算机系统。图2的计算机系统包含移动装置200,及经由存储器总线203连接到移动装置200的存储器模块205。存储器模块205为图1中所说明的存储器子系统110的实例。
移动装置200包含处理装置118,其可为中央处理单元或具有一或多个处理核心的微处理器。移动装置200可具有高速缓存存储器211。高速缓存存储器211的至少一部分可任选地集成于处理装置118的同一集成电路封装内。
图2中所说明的存储器模块205具有多种类型的存储器(例如221及223)。举例来说,A型存储器221(例如DRAM)快于B型存储器223(例如NVRAM)。举例来说,存储器总线203可为双数据速率总线。大体而言,若干存储器模块(例如205)可耦合到存储器总线203。
处理装置118经由指令(例如操作系统及/或一或多个装置驱动器)经配置以使用元数据组件113存取计算机系统中的存储器的一部分。举例来说,可存取存储器模块205的B型存储器223(例如NVRAM)或可存取存储器模块205的A型存储器221(例如DRAM)。在一个实施例中,存储器模块205的B型存储器223仅可经由对存储器模块205的A型存储器221进行定址来存取。
控制器227可设置于存储器模块205中以管理对A型存储器221及B型存储器223的数据存取。在一个实施例中,当将数据传送到缓冲器121或从缓冲器121传送数据时,控制器227复用由移动装置200及存储器模块205对DRAM或NVRAM的存取。在一个实例中,存储器总线203提供主机DDR信道作为移动装置200与存储器模块205之间的DDR接口。在一个实例中,一旦将一页从NVRAM存储器检索到缓冲器121中,即可经由常规DDR4槽(例如主机DDR信道)载入所述页以供移动装置存取。
大体而言,存储器子系统(例如205)可包含媒体,例如存储器(例如221、……、223)。存储器(例如221、……、223)可包含易失性存储器、非易失性存储器(NVM)及/或其组合。处理装置118可直接或间接地将数据写入到存储器子系统(例如存储器模块205)中的每一者且从存储器子系统(例如存储器模块205)读取数据。
在一个实施例中,存储器模块205通过使用缓冲器121提供对非易失性存储器或易失性存储器的存储器总线存取。在一个实例中,存储器模块205为经由DDR总线耦合到移动装置200的DIMM。存储媒体为例如交叉点存储器。
在一个实施例中,移动装置经由用于读取/写入操作的通信信道(例如使用DDR4总线)与存储器模块通信。移动装置可具有可经由互连件与例如存储器模块的计算机周边装置附接的一或多个中央处理单元(CPU),所述互连件例如计算机总线(例如串行AT附件(SATA)、外围组件互连(PCI)、扩展PCI(PCI-X)、快速PCI(PCIe))、通信部分及/或计算机网络。
在一个实施例中,存储器模块可用于存储用于非易失性或易失性存储媒体中的处理器的数据。存储器模块具有使用通信信道实施与移动装置的通信的主机接口。在一个实施例中,存储器模块205具有响应于来自处理装置118的通信而运行例如固件以进行操作的控制器227。在一个实例中,存储器模块包含易失性动态随机存取存储器(DRAM)及NVRAM。DRAM及NVRAM将可由处理装置118存取的数据存储在存储器地址空间中。
如所说明,图2的计算机系统用以实施移动装置。处理装置118可从存储器子系统(例如205)读取数据或将数据写入到所述存储器子系统。
物理主机接口可用于在处理装置118与存储器子系统(例如205)之间传输数据。物理主机接口可提供用于在存储器子系统(例如205)与处理装置118之间传递控制、地址、数据及其它信号的接口。
大体而言,存储器子系统(例如存储器模块205)包含连接提供存储器(例如221、……、223)的存储器装置集合(例如存储器集成电路)的印刷电路板。存储器子系统(例如205)上的存储器(例如221、……、223)可包含不同类型的非易失性存储器装置及/或易失性存储器装置的任何组合。
在一些实施中,存储器(例如221、……、223)可包含但不限于随机存取存储器(RAM)、只读存储器(ROM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、同步动态随机存取存储器(SDRAM)、相变存储器(PCM)、磁性随机存取存储器(MRAM)、或非(NOR)闪存存储器、电可擦除可编程只读存储器(EEPROM),及/或非易失性存储器单元的交叉点阵列。
存储器子系统(例如存储器模块205)可具有响应于来自处理装置118的请求、命令或指令而与存储器(例如221、……、223)通信以进行操作的控制器(例如227),所述操作例如读取数据、写入数据或擦除存储器(例如221、……、223)中的数据及其它这类操作。控制器(例如227)可包含硬件,例如一或多个集成电路及/或离散组件、缓冲存储器或其组合。控制器(例如227)可为微控制器、专用逻辑电路系统(例如现场可编程门阵列(FPGA)、专用集成电路(ASIC)等),或另一合适的处理器。控制器(例如227)可包含经配置以执行存储在本地存储器中的指令的一或多个处理器(处理装置)。
控制器(例如227)的本地存储器可包含嵌入式存储器,其经配置以存储用于进行控制存储器子系统(例如205)的操作的各种处理程序、操作、逻辑流程及例程的指令,包含处置存储器子系统(例如205)与处理装置118之间的通信,及在下文更详细地描述的其它功能。控制器(例如227)的本地存储器可包含用于存储微码的只读存储器(ROM)及/或存储例如存储器指标、所提取数据等的存储器寄存器。
尽管图2中的实例存储器子系统205已说明为包含控制器227,但在本发明的另一实施例中,存储器子系统(例如205)可不包含控制器(例如227),且可改为依赖于外部控制(例如由与存储器子系统(例如205)分开的处理器或控制器提供)。
大体而言,控制器(例如227)可根据用于通信信道(例如203)的标准通信协议从处理装置118接收命令、请求或指令,且可将遵从标准协议的命令、请求或指令转换成存储器子系统(例如205)内的详细指令或适当的命令,以实现对存储器(例如221、……、223)的所要存取。举例来说,控制器(例如227)可负责操作,例如与存储器(例如221、……、223)相关联的逻辑地址与物理地址之间的地址转换。控制器(例如227)可进一步包含主机接口电路系统以经由物理主机接口与处理装置118通信。主机接口电路系统可将从处理装置118接收到的命令转换成命令指令以存取存储器装置(例如221、……、223),以及将与存储器装置(例如221、……、223)相关联的响应转换成用于处理装置118的信息。
存储器子系统(例如205)还可包含未说明的额外电路系统或组件。在一些实施中,存储器子系统(例如205)可包含高速缓存或缓冲器(例如DRAM),及可从控制器(例如227)接收地址且解码地址以存取存储器(例如221、……、223)的地址电路系统(例如行解码器及列解码器)。
在一个实例中,存储器总线203具有一或多个连接器以向存储器子系统(例如205)提供电力及/或经由预定协议与存储器子系统(例如205)通信;且存储器子系统(例如205)具有一或多个连接器以从处理装置118接收电力、数据及命令。在一个实例中,处理装置118可执行一或多个操作系统以提供服务,包含存储器存取,其中使用同步存储器存取来存取计算机系统中的存储器的一部分(例如存储在NVRAM中的一页)。
图3说明根据一些实施例的存储用以存取存储器子系统302中的存储器装置的元数据320的实例计算机系统300。在存储器子系统302中存取的存储器装置包含DRAM304、NVRAM 306及NAND闪存308。在一个实施例中,计算机系统300替代地及/或另外将元数据322存储在用以存取存储器装置的DRAM 304中。
在一个实施例中,计算机系统300的处理装置310存取地址空间中的存储器。在一个实例中,当执行一或多个应用程序时,存储器为由处理装置310使用的主存储器。处理装置310使用地址空间中的地址存取不同存储器装置。
在一个实施例中,元数据320、322使地址空间的第一地址范围与存储器装置(例如DRAM 304)相关联,且使地址空间的第二地址范围与不同存储器装置(例如NVRAM 306或NAND闪存308)相关联。在一个实例中,DRAM 304的时延小于NVRAM 306及NAND闪存308的时延。
在处理装置310上执行的应用程序包含应用程序312,其经配置以包含存储器类型314。当应用程序312初始启动时,应用程序312将存储器类型314连同对计算机系统300的主存储器中的存储器的分配的请求一起提供到处理装置310。
响应于对存储器的分配的请求,处理装置310作出对元数据320的查询及/或发送对元数据322的查询。基于来自这些查询中的一或两者的结果,处理装置310将地址空间中的地址范围分配给应用程序312。
在一个实施例中,应用程序312向处理装置310提出对与存储器装置相关联的时延的指示的请求。处理装置310存取元数据320、322以获得结果,且基于这个结果将时延的指示提供到应用程序312。响应于接收到时延的指示,应用程序312提出对对应于存储器装置中的特定一者(对应于存储器类型314的存储器装置)的存储器的分配的请求,或对具有符合至少一或多个预定阈值及/或要求的性能特性的存储器的分配的请求。
在一个实施例中,元数据322存储使虚拟地址空间中的地址范围与存储器子系统302的存储器装置中的物理地址相关联的数据。在一个实例中,元数据322存储用于NVRAM的地址范围324,及用于NAND闪存的地址范围326。在一个实例中,地址范围324将处理装置310的虚拟或逻辑地址映射到NVRAM 306的物理地址。在一个实例中,地址范围326将处理装置310的虚拟或逻辑地址映射到NAND闪存308的物理地址。在一个实施例中,元数据320或322存储映射用于存储在DRAM 304中的数据的处理装置310的地址的一或多个地址范围。
在一个实施例中,将元数据322存储为页表328的部分,所述页表328为计算机系统300的存储器管理单元316提供虚拟地址到物理地址的映射。处理装置310将虚拟地址提供到存储器管理单元316,其存取转换后备缓冲器318以获得存储器子系统302的存储器装置中的一者中的物理地址。
在一个实施例中,转换后备缓冲器318为存储来自页表328的数据的一部分的高速缓存。在一个实例中,缓冲器318存储元数据322的一部分。在一个实施例中,当存取存储器子系统302中的存储器装置时,将存储在计算机系统300上的元数据320的一部分复制到转换后备缓冲器318以供存储器管理单元316存取。
在一个实施例中,处理装置310将不同存储器装置的存储器特性提供到应用程序312。应用程序312基于所提供存储器特性提出对存储器的分配的请求。
在一个实施例中,处理装置310从应用程序312接收所请求时延。基于所请求时延将地址范围分配给应用程序312。
在一个实施例中,处理装置310确定与应用程序312相关联的优先级。基于经确定优先级将地址范围分配给应用程序312。在一个实例中,选择更快存储器装置类型以与经确定优先级一起使用。处理装置310使用元数据320、322来选择将数据物理地存储在选定更快存储器装置类型的存储器装置中的地址范围。
在一个实施例中,处理装置310确定应用程序312的优先级的改变。在一个实例中,基于应用程序312的优先级的增加,处理装置310改变用于地址空间中的应用程序312的存储器分配。在一个实例中,响应于优先级的增加,处理装置310存取元数据320、322以确定对应于更快物理存储器装置的地址范围。
在一个实施例中,处理装置310基于与地址空间中的应用程序312的数据存取相关联的观察特性来确定应用程序312的优先级。观察到的特性可用于为应用程序312分配存储器使用。在一个实施例中,处理装置310确定与物理存储器装置相关联的一或多个时延。元数据320、322存储关于经确定的一或多个时延的数据,其可在初始分配主存储器及/或改变主存储器的分配时由处理装置310使用。
图4展示根据一些实施例的经配置用于主机计算机系统(未展示)对易失性存储器402及非易失性存储器404的存储器总线存取的存储器模块401。存储器模块401为存储器子系统302或存储器模块205的实例。在一个实例中,存储器模块401为混合式DIMM。易失性存储器402为例如DRAM。
存储器模块401使用多路复用器408来提供存储器控制器416对易失性存储器402及非易失性存储器404的存取。存储器控制器416耦合到主机接口406以供主机系统处置读取/写入存取。在一个实施例中,响应于经由主机接口406从主机系统接收到读取或写入命令而基于从存储器控制器416接收到的信号来控制多路复用器408。
在一个实例中,主机系统存取存储器模块401(例如DIMM)上的存储器空间(例如DRAM存储器地址空间)。DIMM将自身暴露于主机作为DRAM的信道。在一个实施例中,主机系统的超管理器控制DIMM上的数据移动。举例来说,提出对将存储器块移入及移出DRAM地址空间且将DRAM页暴露于在主机上运行的软件的请求。软件例如在虚拟机(VM)中执行。
在一个实例中,为驱动器提供页入/页出控制路径以请求当前在DRAM中或NVRAM中的页。在一个实例中,NVRAM具有比DRAM大得多的容量。
在一个实例中,存储器模块401实施为DIMM。非易失性存储器404由3D XPoint存储器封装提供。在一个实例中,将从3D XPoint存储器获得的数据的页复制入及复制出缓冲器(页入/页出)。
在一个实例中,主机系统可使用正常DDR4时序对任何DRAM或NVRAM地址进行读取/写入存取。举例来说,主机可在那些时间期间根据DDR4规则生成任意业务。
在一个实例中,非易失性存储器404的完整DDR地址空间暴露于主机系统。根据各种实施例,计算机系统120的控制器(例如控制器116)可以与其存取常规DRAM相同的方式(例如相同读取/写入及刷新时序循环)操作。
图5展示根据至少一些实施例的使用存储器总线存取来存取存储器模块502的主机操作系统241。存储器模块502包含缓冲器410。缓冲器410为缓冲器121的实例。在一个实例中,缓冲器410存储元数据322及/或页表328的至少一部分。经由主机接口406从主机操作系统241接收到命令及数据。在一个实例中,主机操作系统241在计算机系统120或300上执行。
在一个实施例中,装置驱动器247(例如后端驱动器)经配置以用于经由超管理器245的存储器存取。在一个实例中,图5的系统实施于图1至3的计算机系统中。
在一个实例中,主机操作系统241在图1或2的计算机系统的处理装置118或图3的处理装置310上运行。主机操作系统241包含使用存储器子系统(例如存储器模块205或存储器子系统302)的存储器(例如221、……、223)提供存储器服务的一或多个装置驱动器(例如247)。
在一个实施例中,后端驱动器247维护映射表246。举例来说,驱动器247维护映射表246以包含存储在DRAM 304、NVRAM 306及NAND闪存308中的数据的页的映射。
在一个实施例中,主机操作系统241包含布建虚拟机249的超管理器245。虚拟机249具有经由主机操作系统241使用图1至3的计算系统的硬件提供的资源及服务实施的虚拟硬件。举例来说,超管理器245可使用存储器子系统(例如存储器模块205)的存储器(例如221、……、223)的一部分布建虚拟存储器作为虚拟机249的部分。
虚拟机249允许客操作系统243以如在物理计算机器上运行的操作系统243的方式将资源及/或服务提供到在客操作系统243中运行的应用程序(例如251、……、253),所述物理计算机器具有与虚拟机中的布建相同或类似的硬件集合。超管理器245管理布建于虚拟机中的虚拟硬件与由主机操作系统241管理的计算系统中的硬件的服务之间的映射。
装置驱动器248(例如前端驱动器)与后端驱动器247通信。当额外DDR容量(例如DRAM或NVRAM中的容量)可用时,驱动器247及驱动器248可通信以用于内存膨胀(memoryballooning)。
图5说明由超管理器245布建虚拟机249的情况。大体而言,超管理器245可布建可运行相同客操作系统243或不同客操作系统的若干虚拟机(例如249)。可指配不同用户及/或应用程序集合以使用不同虚拟机。
在一些情况下,主机操作系统241专用于为虚拟机的布建提供服务且不运行其它应用程序。替代地,主机操作系统241可提供额外服务以支持其它应用程序,例如应用程序(例如251、……、253)。
在一个实施例中,装置驱动器247可经配置以请求一页从较慢存储器(例如NVRAM)到较快存储器(例如DRAM)的页入以供虚拟机249使用。这个请求可响应于来自应用程序(例如图3的应用程序312)的请求而提出。在请求所述页之后,通过载入数据的页及/或将其从较慢存储器传送到较快存储器使所述页在较快存储器中可用。在一个实例中,处理装置310基于存储为元数据320、322的地址范围信息将页从较慢存储器移动到较快存储器。在一个实例中,较慢存储器可为存储器模块401中的非易失性存储器404,且较快存储器为同一存储器模块401中的易失性存储器402。
在一个实施例中,数据的传送(例如响应于主机操作系统241的页入请求而进行)是在同一存储器子系统内(例如同一存储器模块401内)进行,以避免或减少连接到处理装置118的通信信道(例如存储器总线203)中的拥塞。举例来说,在存储器模块205中的控制器227的控制下,可响应于来自装置驱动器247的一或多个命令、请求及/或指令,将数据从存储器模块205中的较慢存储器223(例如NVRAM或NAND闪存)复制到存储器模块205中的较快存储器221(例如DRAM)。
在一个实施例中,超管理器245不仅请求装置驱动器247存取存储器子系统(例如存储器模块205)中的存储器(例如221、……、223),且还向装置驱动器247提供可用于管理待使用的存储器(例如221、……、223、……、或225)中的页的信息。在一个实例中,所提供信息包含所存储元数据320或322。
在一个实例中,驱动器247为用以存取存储器模块502(例如DIMM)中的存储器地址空间的存储器模式驱动器。驱动器247控制在任一时间哪些页在DIMM的易失性存储器中。在一种做法中,例如,存储器地址空间暴露于客操作系统243。在这个超管理器环境中,客操作系统243查看DIMM中的非易失性存储器(例如NVRAM及DRAM)的完整存储容量。
在一个实例中,经由主机操作系统241主动地对DDR DRAM中的仅数个页进行页入。如果对不存在的页进行访客(guest)存取,那么主机系统的存储器管理单元(MMU)中的寻页缺失路径触发驱动器247以引起页的载入(页入)。在一个实例中,所述页经由控制寄存器载入。一旦所述页实际上存在于DDR DRAM中,那么驱动器247可设置MMU映射(经由映射表246),使得客应用程序可直接读取及写入所述数据。
在一个实例中,客户机的前端驱动器及主机的后端驱动器关于对存储器地址空间的存取而通信。在一个实例中,当确定页陈旧(例如基于预定阈值未频繁使用)时,提出将当前映射于DDR存储器地址空间中的数据的一部分(例如经由SRAM缓冲器)推出到NVRAM存储器以使DRAM存储器中的空间可用于待页入的其它页的请求。后端驱动器247传达页出请求以将数据从DDR DRAM移动到NVRAM存储器。
在一个实施例中,后端驱动器247作为存储器模式驱动器操作。直至驱动器247载入之前,不存在对存储器模块502的NVRAM存储器容量的存取。在作为存储器模式驱动器的这个操作期间,客操作系统243将存储器视为正常,且驱动器247保留存储器模块上的DRAM页以用于页入及页出操作。
驱动器247将NVRAM存储器暴露于客操作系统243且维护页映射(例如在映射表246中)。举例来说,驱动器247维护当前在DRAM中的页与在NVRAM存储器上的页之间的映射。
在一个实例中,驱动器247在主机系统处设置存储器管理单元映射表以映射当前存储在DRAM中的任何页。如果在映射页外部存在存取以触发页入请求,那么可使用来自客户机的寻页缺失路径。可进行页出请求以维护DRAM中的一些存储器空间。
在一个实施例中,操作不受限于存储器模式。驱动器247也可作为块模式驱动器操作,针对所述块模式驱动器,NVRAM存储器暴露作为块模式存储。
在一个实施例中,存储器模块502维护其自身的映射表,包含在SRAM缓冲器(未展示)中的页的列表。页一经移动到SRAM缓冲器,存储器模块502即可将页入完成信号返回到主机系统。这准许减少主机系统存取那些特定页的时延。驱动器247确保直至设置其映射之前,主机不会存取所述页,直至页入请求完成为止。
在一个实施例中,驱动器247实施页出操作。在一个实例中,触发这个操作作为线程。这个操作将空闲页交换出DRAM存储器且改变有效页的映射。
图6展示根据一些实施例的用于基于所存储元数据来管理用于计算机系统的地址空间中的处理程序的存储器的方法,所述所存储元数据使用于地址空间中的处理程序的虚拟地址范围与用于计算机系统中的存储器装置的物理地址相关联。举例来说,图6的方法可实施于图1至3的系统中。
图6的方法可由处理逻辑进行,所述处理逻辑可包含硬件(例如处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如在处理装置上运行或执行的指令),或其组合。在一些实施例中,图6的方法至少部分地由一或多个处理装置(例如图3的处理装置310)进行。
尽管以特定顺序或次序展示,但除非另有规定,否则可修改所述处理程序的次序。因此,所说明实施例应仅理解为实例,且所说明处理程序可以不同次序进行,且一些处理程序可并行进行。另外,可在各种实施例中省略一或多个处理程序。因此,在每一实施例中并非所有处理程序都是必需的。其它处理程序流程是可能的。
在框601处,操作系统维护地址空间中的存储器。存取存储器包含使用地址空间中的地址存取第一存储器装置及第二存储器装置。在一个实例中,操作系统在图3的处理装置310上执行。在一个实例中,第一存储器装置为DRAM 304,且第二存储器装置为NVRAM 306。在一个实例中,第一存储器装置为NVRAM 306,且第二存储器装置为NAND闪存308。
在框603处,存储使地址空间的第一地址范围与第一存储器装置相关联的元数据。元数据还使地址空间的第二地址范围与第二存储器装置相关联。在一个实例中,所存储元数据为图3的元数据320及/或322。在一个实例中,第一地址范围为地址范围324,且第二地址范围为地址范围326。
在框605处,基于所存储元数据来管理在计算机系统中运行的处理程序。处理程序包含第一处理程序及第二处理程序。将用于第一处理程序的数据存储在第一存储器装置中,且将用于第二处理程序的数据存储在第二存储器装置中。在一个实例中,将用于第一处理程序的数据存储在地址范围324中,且将用于第二处理程序的数据存储在地址范围326中。在一个实例中,将用于第一处理程序的数据存储在对应于DRAM 304中的物理存储器所存储元数据320、322的地址范围中。在一个实例中,计算机系统为计算机系统120或300。
在一个实施例中,一种方法包括:由计算机系统的处理装置(例如图3的处理装置310)存取地址空间中的存储器,其中所述计算机系统的存储器装置由所述处理装置使用所述地址空间中的地址存取;存储使所述地址空间的第一地址范围与第一存储器装置(例如DRAM 304)相关联且使所述地址空间的第二地址范围与第二存储器装置(例如NVRAM 306)相关联的元数据(例如元数据320及/或322),其中所述第一存储器装置的第一时延不同于所述第二存储器装置的第二时延;及基于所存储元数据将所述第一地址范围分配给在所述计算机系统上执行的应用程序(例如应用程序312)。
在一个实施例中,将所述第一地址范围分配给所述应用程序是响应于所述应用程序的请求而进行。
在一个实施例中,所述方法进一步包括:响应于所述应用程序的第一请求,提供所述第一时延大于所述第二时延的指示;基于所述指示接收由所述应用程序提出的第二请求;及响应于接收到所述第二请求,将所述第二地址范围分配给所述应用程序。
在一个实施例中,所述第一时延小于所述第二时延,且将所述元数据存储在所述第一存储器装置中。
在一个实施例中,所述计算机系统使用存储器总线来存取所述第一存储器装置及所述第二存储器装置,且其中将所述元数据存储在所述第二存储器装置中。
在一个实施例中,将所述元数据存储在所述第一存储器装置中,且所述方法进一步包括将所述元数据的至少一部分载入到缓冲器(例如转换后备缓冲器318)中,其中所述处理装置查询所述缓冲器以确定对应于所述第一地址范围中的虚拟地址的物理地址。
在一个实施例中,所述计算机系统为片上系统装置,且所述缓冲器为转换后备缓冲器。
在一个实施例中,所述方法进一步包括:将所述第一存储器装置及所述第二存储器装置的存储器特性提供到所述应用程序;其中将所述第一地址范围分配给所述应用程序是响应于由所述应用程序基于所提供存储器特性提出的请求。
在一个实施例中,所述方法进一步包括从所述应用程序接收所请求时延,其中将所述第一地址范围分配给所述应用程序是进一步基于所述所请求时延。
在一个实施例中,所述方法进一步包括确定与所述应用程序相关联的优先级,其中将所述第一地址范围分配给所述应用程序是进一步基于所述优先级。
在一个实施例中,所述第一时延小于所述第二时延;在将所述第一地址范围分配给所述应用程序之前,将所述第二地址范围分配给所述应用程序;且将所述第一地址范围分配给所述应用程序是响应于确定与所述应用程序相关联的优先级的增加而进行。
在一个实施例中,确定与所述应用程序相关联的所述优先级的所述增加是基于关于所述地址空间中的所述应用程序的数据存取的一或多个观察。
在一个实施例中,所述方法进一步包括由所述处理装置确定与所述存储器装置相关联的时延,其中存储所述元数据进一步包括存储经确定时延。
在一个实施例中,一种系统包括:第一存储器装置;第二存储器装置;至少一个处理装置;及存储器,其含有指令,所述指令经配置以指示所述至少一个处理装置:存取由操作系统维护的地址空间中的存储器,所述存取包含使用所述地址空间中的地址来存取所述第一存储器装置及所述第二存储器装置;存储使所述地址空间的第一地址范围与所述第一存储器装置相关联且使所述地址空间的第二地址范围与所述第二存储器装置相关联的元数据;及由所述操作系统基于所存储元数据管理包含第一处理程序及第二处理程序的处理程序,其中将用于所述第一处理程序的数据存储在所述第一存储器装置中,且将用于所述第二处理程序的数据存储在所述第二存储器装置中。
在一个实施例中,所述第一处理程序具有第一优先级,所述第二处理程序具有第二优先级,且响应于确定所述第一优先级高于所述第二优先级而选择所述第一存储器装置以存储用于所述第一处理程序的所述数据。
在一个实施例中,所述第一处理程序对应于第一应用程序;所述指令经进一步配置以指示所述至少一个处理装置从所述第一应用程序接收指示待用于存储数据的存储器类型的请求;且基于所指示类型的存储器选择所述第一存储器装置以存储用于所述第一处理程序的所述数据。
在一个实施例中,所述系统进一步包括缓冲器以存储所述元数据,其中所述操作系统从所述第一处理程序接收所述第一地址范围中的虚拟地址,且存取所述缓冲器以确定所述第一存储器装置的对应于所述虚拟地址的物理地址。
在一个实施例中,所述第一存储器装置的读取时延小于所述第二存储器装置的读取时延,且所述指令经进一步配置以指示所述至少一个处理装置将所述元数据存储在所述第一存储器装置中。
在一个实施例中,所述系统进一步包括存储器管理单元(例如存储器管理单元316),其经配置以在存取用于所述第一处理程序的存储的数据时将所述第一地址范围中的虚拟地址映射到所述第一存储器装置中的物理地址。
在一个实施例中,一种非暂时性机器可读存储媒体存储指令,所述指令在至少一个处理装置上执行时使得所述至少一个处理装置至少:存取地址空间中的存储器,其中由所述至少一个处理装置使用所述地址空间中的地址来存取计算机系统的存储器装置;存储使所述地址空间的第一地址范围与第一存储器装置相关联且使所述地址空间的第二地址范围与第二存储器装置相关联的元数据;将第一数据提供到在所述计算机系统上执行的应用程序,所述第一数据指示所述第一存储器装置的第一时延小于所述第二存储器装置的第二时延;响应于将所述第一数据提供到所述应用程序,从所述应用程序接收将与所述应用程序相关联的第二数据存储在所述第一存储器装置中的请求;响应于所述应用程序的存储所述第二数据的请求,查询所存储元数据以提供结果;及基于所述结果将所述第二数据存储在所述第一存储器装置中。
图7为可操作本发明的实施例的实例计算机系统的框图。图7说明计算机系统600的实例机器,其内可执行用于使得机器进行本文中所论述的方法中的任何一或多者的指令集。在一些实施例中,计算机系统600可对应于主机系统(例如图1的计算机系统120),所述主机系统包含、耦合到或利用存储器子系统(例如图1的存储器子系统110),或可用于进行元数据组件113的操作(例如执行指令以进行对应于参考图1至6所描述的元数据组件113的操作)。在替代性实施例中,机器可连接(例如网络连接)到LAN、企业内部网络、企业间网络及/或因特网中的其它机器。机器可操作于主从式网络环境中的服务器或客户端机器的容量中、操作为同级间(或分布式)网络环境中的同级机器,或操作为云端计算基础设施或环境中的服务器或客户端机器。
机器可为个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝式电话、网络设备、服务器、网络路由器、开关或桥、物联网(IOT)装置,或能够执行指定待由机器采取的动作的指令集(依序或以其它方式)的任何机器。另外,尽管说明单一机器,但术语“机器”还应视为包含个别地或联合地执行指令集(或多个集)以进行本文中所论述的方法中的任何一或多者的机器的任何集合。
实例计算机系统600包含处理装置602、主存储器604(例如只读存储器(ROM)、闪存存储器、动态随机存取存储器(DRAM)(例如同步DRAM(SDRAM)或Rambus DRAM(RDRAM))、静态随机存取存储器(SRAM)等)及数据存储系统618,其经由总线630(其可包含多个总线)彼此通信。
处理装置602表示一或多个通用处理装置,例如微处理器、中央处理单元或其类似者。更特定而言,处理装置可为复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器,或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置602也可为一或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器或其类似者。处理装置602经配置以执行用于进行本文中所论述的操作及步骤的指令626。计算机系统600可进一步包含网络接口装置608以经由网络620通信。
数据存储系统618可包含机器可读存储媒体624(也称为计算机可读媒体),其上存储有体现本文中所描述的方法或功能中的任何一或多者的一或多个指令626集或软件。在其由计算机系统600执行期间,指令626还可完全或至少部分地驻存在主存储器604内及/或处理装置602内,主存储器604及处理装置602也构成机器可读存储媒体。机器可读存储媒体624、数据存储系统618及/或主存储器604可对应于图1的存储器子系统110。
在一个实施例中,指令626包含实施对应于元数据组件113(例如参考图1至6所描述的元数据组件113)的功能性的指令。尽管在实例实施例中将机器可读存储媒体624展示为单一媒体,但术语“机器可读存储媒体”应视为包含存储一或多个指令集的单一媒体或多个媒体。
与存储器类型相关的页表
现在下文描述与将虚拟页的虚拟地址映射到不同存储器类型的存储器装置中的物理地址的页表项相关的各种实施例。以下描述的一般性不受上文所描述的各种实施例限制。
在使用不同类型的物理存储器装置以用于存储数据的计算机系统的先前存储器管理单元中,存在MMU未察觉如何将用于各种虚拟页的存储器物理地映射到不同类型的存储器装置(例如将虚拟页映射到DRAM还是NVRAM或是闪存存储器中的物理地址)的技术问题。举例来说,MMU未存储关于如何将每一虚拟页映射到不同类型的存储器装置的数据。此外,存储器类型不了解仅为一个限制。即使在均匀存储器系统中(例如在NUMA架构中),不同物理地址也可具有存取特性的差异(MMU未察觉所述差异)。
在一个实例中,如果用于处理程序的虚拟页比其它存储器装置(例如DRAM)明显更慢地映射到物理存储器装置(例如闪存存储器),那么所述处理程序可能因不能快速存取数据而被迫缓慢运行。举例来说,所述处理程序可能需要来自主存储器的虚拟页以便继续处理。如果所需虚拟页实际上存储在缓慢物理存储器装置中,那么处理程序在等待对虚拟页进行存取时明显延迟。
下文所描述的各种实施例提供对以上技术问题中的一或多者的技术解决方案。在一个实施例中,一种方法包含:由至少一个处理装置(例如CPU及/或MMU)使虚拟页与第一存储器类型相关联;生成页表项以将所述虚拟页的虚拟地址映射到所述第一存储器类型的第一存储器装置中的物理地址;及使用所述页表项将所述虚拟页存储在所述第一存储器装置中的所述物理地址处。在一个实例中,已将页表项复制到存储器管理单元及/或微处理器的高速缓存。在一个实例中,已将页表项复制到由存储器管理单元在将虚拟页存储在中央处理单元的主存储器中时使用的转换后备缓冲器(TLB)。
在一个实施例中,移动装置的操作系统管理与存储器类型相关联的虚拟页的位置。举例来说,存储器类型可为DRAM、NVRAM或NAND闪存。当虚拟页与特定存储器类型相关联时,操作系统生成页表项以将虚拟页的逻辑地址映射到对应存储器类型。处理器可请求通过改变其存储器类型将存储器页传送到不同类型的存储器。
在一个实例中,在计算装置上执行的应用程序或其它软件已将识别应用程序或其它软件需要用于处理的存储器类型的信息提供到操作系统。作为响应,操作系统使应用程序或软件的一或多个虚拟页与对应于由所述应用程序或软件所请求的所识别存储器类型的物理存储器装置相关联。举例来说,响应于由应用程序提出的对NVRAM存储器类型的请求,将虚拟页分配给应用程序。对应于所分配虚拟页的物理地址用于将数据存储在NVRAM装置(例如交叉点存储器装置)中。
图8说明根据一些实施例的使用一或多个页表804、806来存取存储器总线812上的存储器装置的实例计算机系统800。存储器装置可包含存储器子系统802的DRAM304、NVRAM306及NAND闪存308。
计算机系统800为图3的计算机系统300的实例。存储器子系统802为图3的存储器子系统302的实例。存储器总线812为图2的存储器总线203的实例。
操作系统808在处理装置310上运行。操作系统808将处理装置310的主存储器分配给各种应用程序。这些应用程序包含应用程序312,其具有存储器类型314。在一个实例中,存储器类型314嵌入于应用程序312的代码中。在一个实例中,由不同计算装置(未展示)将存储器类型314提供到处理装置310。在一个实例中,不同计算装置为提供与由应用程序312提出的对存储器分配的请求相关联的存储器类型314的服务器。
操作系统808使用存储器管理单元(MMU)316管理计算机系统800的存储器。在一个实施例中,将与包含应用程序312的应用程序相关联的虚拟页映射到驻存于存储器子系统802中的物理存储器。MMU 316存取页表项以确定存储器中的对应于应用程序需要存取的虚拟页的物理地址。
可将页表项存储在页表804及/或页表806中。在一个实例中,MMU 316通过提供对应于虚拟页的虚拟地址来查询页表804、806。来自查询的结果为存储器装置(例如DRAM304)的物理地址。
在一个实施例中,将页表804存储在DRAM 304中。在一个实施例中,将页表806存储在计算机系统800的存储器中。在一个实例中,当页表项未存在于计算机系统800中时,MMU316存取页表804。在一个实例中,页表项在页表804与页表806之间分裂。在一个实例中,页表806中的页表项对应于具有较高优先级的处理程序。在一个实例中,处理装置310基于由处理装置310接收到的对应于应用程序的存储器类型为对应于应用程序的处理程序指配优先级。
在一个实施例中,MMU 316使用页表804及元数据322两者以用于存储器管理。在一个实例中,MMU 316使用元数据322来选择用于存储对应于虚拟页的数据的存储器装置。选定存储器装置可对应于所请求存储器类型(例如存储器类型314)。在另一实施例中,MMU316使用页表806及元数据320两者以用于存储器管理。
在一个实施例中,将来自页表804、806的页表项中的一些复制到转换后备缓冲器(TLB)810。当将虚拟地址映射到物理地址时,MMU 316首先检查用于对应于虚拟地址的页表项的TLB 810。TLB 810中的页表项还可包含从元数据320、322复制的数据。
在一个实施例中,应用程序312请求由处理装置310进行存储器的分配。作为响应,操作系统808使用MMU 316来生成将应用程序312的虚拟页的虚拟地址映射到存储器装置中的物理地址的页表项。存储器装置经选择具有存储器类型314。在一个实施例中,使用元数据322来选择存储器装置。在一个实施例中,在生成页表项之后,将页表项的复本存储在TLB810中及/或更新元数据320、322。
在一个实施例中,处理装置310确定与应用程序312相关联的改变。在一个实例中,所述改变为由应用程序312进行的一或多个功能的优先级的改变。在一个实例中,所述改变为与应用程序312相关联的上下文(例如安全性上下文等)的改变。
响应于确定改变,操作系统808使应用程序312的一或多个虚拟页与新存储器类型相关联。举例来说,应用程序312的存储器类型可响应于确定应用程序312的较高优先级而由NVRAM改变为DRAM。响应于对新存储器类型的改变,更新页表项以将虚拟页的虚拟地址映射到新存储器类型的新存储器装置中的物理地址。接着,MMU 316使用经更新页表项将虚拟页从当前使用的存储器装置传送到新存储器装置。
在一个实施例中,计算机系统800及/或处理装置310为片上系统(SoC)。在一个实例中,SoC可为或包含集成计算装置的任何两个或更多个组件的集成电路或芯片。两个或更多个组件可包含中央处理单元(CPU)、图形处理单元(GPU)、存储器、输入/输出端口及辅助存储件中的至少一或多者。举例来说,SoC可包含单一电路裸片上的CPU、GPU、图形及存储器接口、硬盘、USB连接件、随机存取存储器、只读存储器、辅助存储件或其任何组合。此外,在处理器芯片为SoC的情况下,SoC可至少包含CPU及/或GPU。
在SoC的一个实例中,两个或更多个组件可嵌入于单一衬底或微芯片(芯片)上。大体而言,SoC不同于常规的基于母板的架构,不同之处在于SoC将所有其组件集成到单一集成电路中;而母板容纳及连接可拆卸或可更换组件。由于将两个或更多个组件集成于单一基底或芯片上,因此SoC比具有等效功能性的多芯片设计消耗更少功率且占据小得多的面积。在一些实施例中,本文中所描述的存储器系统或子系统可与移动计算装置中(例如智能型电话中)、嵌入式系统中及物联网(IoT)装置中的SoC连接或为所述SoC的一部分。在一个实施例中,存储器子系统802可为SoC或包含于SoC中。此外,在存储器子系统802为SoC的情况下,SoC可至少包含数据处理单元。
图9说明根据一些实施例的具有页表项902、904的实例页表900。每一页表项902、904包含虚拟地址、对应物理地址及存储器类型。在一个实例中,存储器类型为存储器类型314。在一个实例中,存储器类型314用以响应于对处理程序的主存储器的新分配或分配改变而更新页表项。在各种实施例中,每一项902、904可进一步包含处理程序识别符、使用数据及/或存储器装置识别符。页表900为页表804或806的实例。
在一个实施例中,对于每一页表项,虚拟地址对应于例如应用程序312的应用程序的虚拟页。物理地址对应于存储器子系统802的存储器装置中的位置。存储器类型对应于物理地址处的存储器装置的类型。
在一个实施例中,每一页表项的处理程序识别符用以识别在正使用虚拟地址处的虚拟页的处理装置310上执行的处理程序。举例来说,处理程序识别符为在计算机系统800中运行的每一处理程序的独特识别符。
在一个实施例中,每一页表项的使用数据可对应于关于与存储在页表项的虚拟地址处的虚拟页中的数据相关联的存取或其它使用的数据。在一个实例中,使用数据涉及虚拟页的使用模式。在一个实例中,使用模式为存取虚拟页中的数据的频率。在一个实例中,存取的频率可为读取及/或写入存取的频率。在一个实例中,使用数据涉及虚拟页中的数据的最后使用时间。
在一个实施例中,每一页表项可包含存储器装置识别符。在一个实例中,存储器装置识别符独特地识别存储对应于虚拟地址的数据的物理存储器装置。在一个实例中,存储器装置识别符独特地对应于DRAM 304或NVRAM 306。
在一个实施例中,每一页表项可进一步包含元数据320及/或322的至少一部分。在一个实例中,所包含元数据可为物理存储器装置的地址范围。
图10展示根据一些实施例的用于生成页表项以将虚拟页的虚拟地址映射到不同存储器类型的存储器装置中的物理地址的方法。举例来说,图10的方法可实施于图8的系统或图7的计算机系统600中。
图10的方法可由处理逻辑进行,所述处理逻辑可包含硬件(例如处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如在处理装置上运行或执行的指令),或其组合。在一些实施例中,图10的方法至少部分地由一或多个处理装置(例如图8的处理装置310)进行。
尽管以特定顺序或次序展示,但除非另有规定,否则可修改所述处理程序的次序。因此,所说明实施例应仅理解为实例,且所说明处理程序可以不同次序进行,且一些处理程序可并行进行。另外,可在各种实施例中省略一或多个处理程序。因此,在每一实施例中并非所有处理程序都是必需的。其它处理程序流程是可能的。
在框1001处,使虚拟页与第一存储器类型相关联。在一个实例中,第一存储器类型为DRAM、NVRAM或闪存存储器。在一个实例中,虚拟页对应于应用程序312。在一个实例中,虚拟页对应于响应于对由处理装置310使用的主存储器的分配的请求而分配给应用程序312的存储器。
在框1003处,生成页表项。页表项将虚拟页的虚拟地址映射到第一存储器类型的存储器装置中的物理地址。在一个实例中,页表项驻存于页表804或806中。在一个实例中,存储器装置为DRAM 304、NVRAM 306或NAND闪存308。
在框1005处,使用页表项,将虚拟页存储在存储器装置中的物理地址处。在一个实例中,存储器管理单元316使用在转换后备缓冲器810中高速缓存的页表项存储虚拟页。
在一个实施例中,一种方法包括:由至少一个处理装置(例如处理装置310及/或存储器管理单元316)使一虚拟页与第一存储器类型相关联;生成页表项(例如页表项902)以将所述虚拟页的虚拟地址映射到所述第一存储器类型的第一存储器装置(例如DRAM304)中的物理地址;及使用所述页表项将所述虚拟页存储在所述第一存储器装置中的所述物理地址处。
在一个实施例中,所述方法进一步包括:由至少一个处理装置使所述虚拟页与第二存储器类型相关联;更新所述页表项以将所述虚拟页的所述虚拟地址映射到所述第二存储器类型的第二存储器装置(例如NVRAM 306)中的物理地址;及使用经更新页表项将所述虚拟页从所述第一存储器装置传送到所述第二存储器装置。
在一个实施例中,操作系统(例如操作系统808)在所述至少一个处理装置上运行,且生成所述页表项是由所述操作系统响应于使所述虚拟页与所述第一存储器类型相关联而进行。
在一个实施例中,使所述虚拟页与所述第一存储器类型相关联是响应于由操作系统从应用程序(例如应用程序312)接收到的请求而进行。
在一个实施例中,向所述第一存储器类型(例如存储器类型314)提供来自所述应用程序的所述请求。
在一个实施例中,所述方法进一步包括由计算装置的操作系统管理存储在存储器装置中的虚拟页的物理位置,其中所述存储器装置包含所述第一存储器装置及第二存储器类型的第二存储器装置,且其中所述第一存储器装置的时延小于所述第二存储器装置的时延。
在一个实施例中,并非时延及/或除时延之外的差异可存在于第一存储器装置与第二存储器装置之间。在一个实例中,第一存储器装置的功率及/或性能特性不同于第二存储器装置,所述第二存储器装置具有低功率存储器及/或更持久存储器。不同存储器装置或类型或存储器之间的存储器特性的差异的实例可包含性能、功率、耐久性、错误率及/或其组合。在一些情况下,例如,这些差异可存在于相同存储器类型的装置之间(例如错误率针对用于存储处理程序数据的相同存储器类型的不同芯片而改变)。
在一个实施例中,所述第一存储器类型为动态随机存取存储器,且所述第二存储器类型为非易失性随机存取存储器或闪存存储器。
在一个实施例中,所述方法进一步包括:由操作系统监视在所述至少一个处理装置上运行的应用程序;及基于所述监视更新所述页表项以将所述虚拟页的所述虚拟地址映射到第二存储器类型的第二存储器装置中的物理地址。
在一个实施例中,所述方法进一步包括:确定与所述至少一个处理装置相关联的操作的上下文;基于经确定上下文选择第二存储器类型;及响应于选择所述第二存储器类型,更新所述页表项以将所述虚拟页的所述虚拟地址映射到所述第二存储器类型的第二存储器装置中的物理地址。
在一个实施例中,所述方法进一步包括:由所述至少一个处理装置使所述虚拟页与第二存储器类型相关联;响应于使所述虚拟页与所述第二存储器类型相关联,更新转换后备缓冲器(例如TLB 810)中的映射数据;及由存储器管理单元基于存取所述转换后备缓冲器中的经更新映射数据将所述虚拟页从所述第一存储器装置传送到第二存储器装置。
在一个实施例中,处理程序正在所述至少一个处理装置上执行,且所述页表项包括使用所述虚拟页的第一处理程序的处理程序识别符。
在一个实施例中,所述页表项包括关于在所述至少一个处理装置上运行的一或多个应用程序的使用模式的数据。
在一个实施例中,关于所述使用模式的所述数据为使用频率或最后使用时间中的至少一者。
在一个实施例中,一种系统包括:第一存储器装置;页表,其存储将虚拟地址映射到不同存储器类型的存储器装置中的物理地址的页表项,所述存储器装置包含所述第一存储器装置;至少一个处理装置;及存储器,其含有指令,所述指令经配置以指示所述至少一个处理装置:确定虚拟页与第一存储器类型的关联;确定所述第一存储器装置对应于所述第一存储器类型;及生成页表项以将所述虚拟页的虚拟地址映射到所述第一存储器装置的第一物理地址。
在一个实施例中,所述至少一个处理装置使用具有存储在所述存储器装置上的数据的主存储器,且其中确定所述虚拟页与所述第一存储器类型的所述关联是响应于由应用程序提出的对所述主存储器的分配的请求而进行。
在一个实施例中,所述指令经进一步配置以指示所述至少一个处理装置:存储使主存储器中的地址范围与所述存储器装置中的物理地址相关联的元数据(例如元数据320、322);其中确定所述第一存储器装置对应于所述第一存储器类型是基于所存储元数据。
在一个实施例中,所述指令经进一步配置以指示所述至少一个处理装置使用所述页表项将所述虚拟页存储在所述第一存储器装置中的所述第一物理地址处。
在一个实施例中,所述系统进一步包括存储器管理单元(例如存储器管理单元316)及转换后备缓冲器,其中所述指令经进一步配置以指示所述至少一个处理装置:基于与所述虚拟页相关联的存储器类型从所述第一存储器类型到第二存储器类型的改变来更新所述转换后备缓冲器中的映射数据;及由所述存储器管理单元基于经更新映射数据将所述虚拟页从所述第一存储器装置传送到所述第二存储器类型的第二存储器装置。
在一个实施例中,存储器类型的所述改变是响应于由在所述至少一个处理装置上执行的应用程序提出的请求而进行,或响应于由所述至少一个处理装置提出的处理程序或应用程序的优先级已改变的确定而进行。
在一个实施例中,一种非暂时性机器可读存储媒体存储指令,所述指令在至少一个处理装置上执行时使得所述至少一个处理装置至少:使虚拟页与第一存储器类型相关联;生成页表项以将所述虚拟页的虚拟地址映射到所述第一存储器类型的第一存储器装置中的物理地址;及使用所述页表项将所述虚拟页存储在所述第一存储器装置中的所述物理地址处。
将数据绑定到命名空间
现在下文描述与将数据绑定到具有不同存储器类型的物理存储器的存储器系统中的命名空间相关的各种实施例。以下描述的一般性不受上文所描述的各种实施例限制。
在先前存储器系统中,由操作系统使得应用程序可存取主存储器,且主存储器是从单一逻辑地址空间(例如从地址空间中的虚拟地址)分配。特定而言,操作系统未使得可由应用程序存取任何映射控制,且因此应用程序无法控制使用哪一类型的存储器来存储数据。实情为,操作系统及/或处理器经由页表及转换后备缓冲器控制映射。页表定义逻辑地址的页到计算机系统的存储器装置中的物理存储器单元的页之间的映射。页表的总大小相对较大。因此,将大部分页表存储在存储器(例如主存储器的DRAM)中。在处理器/存储器控制器的转换后备缓冲器中高速缓存来自页表的当前正用以寻找物理存储器地址的数据的一部分。
先前存储器系统的前述情形产生某一数据由于存储数据的实际物理存储器装置的时延较大而不可由应用程序及时存取的技术问题。因此,可长时间保持应用程序的执行。在一些情况下,这种延迟可导致需要及时响应或其它动作的系统故障。举例来说,实时控制系统可因来自主存储器的缓慢数据存取而发生故障。在一个实例中,针对自主车辆的导航的控制可因主存储器的存储关键数据的部分的过度时延而发生故障。
应用程序不能控制主存储器使用到某些物理存储器装置的映射还阻止了应用程序选择具有较高可靠性的存储器。这形成关键数据可因存储器的功能性故障(例如来自具有较高故障率的物理存储器装置的数据存取的故障)而丢失的技术问题。
下文所描述的各种实施例提供对以上技术问题中的一或多者的技术解决方案。在一个实施例中,应用程序通过指定待存储数据的存储器类型来管理到由操作系统用于随机存储器存取的物理存储器装置的映射。应用程序使用操作系统来分配存储器的一部分(例如基于由应用程序对操作系统提出的请求),且基于存储器单元的存储器地址来使用所指定存储器类型的存储器单元。在一个实例中,操作系统告知应用程序对应于所指定存储器类型的虚拟存储器地址范围。
在一个实施例中,由操作系统经由所述操作系统管理的命名空间表进行存取数据。在一个实施例中,命名空间表将名称指配给主存储器中的存储器地址。在一个实施例中,将名称指配给由应用程序使用的主存储器的地址空间中的一系列虚拟地址。在一个实施例中,通过命名空间识别符识别命名空间(例如使用任意识别符命名空间A、命名空间B及命名空间C,其中每一识别符与不同类型的存储器相关联)。
在一个实施例中,将命名空间用于存储器存取。每一命名空间为对其中定义存储器地址的存储器单元集合的命名逻辑参考。应用程序从命名空间分配存储器。操作系统提供可由应用程序调用以将命名空间绑定及/或重新绑定到特定类型的存储器(例如DRAM、NVRAM、NAND闪存)的服务。当将命名空间绑定到一个类型的存储器时,操作系统调整一或多个页表以将命名空间中的逻辑存储器地址映射到计算机系统中的特定存储器类型的物理存储器单元。当经由命名空间中的逻辑地址存取存储器单元时,在处理器/存储器控制器的转换后备缓冲器中载入及高速缓存来自一或多个页表的数据以用于转换为物理存储器地址。
在一个实施例中,命名空间创建于不同类型的存储器装置(例如DRAM、NVRAM及NAND闪存)中。应用程序可动态地改变数据集与命名空间之间的绑定以将数据移动到所要存储器装置。在一个实施例中,操作系统检测绑定的改变且使得数据移动。在一个实施例中,操作系统使得存储器管理单元更新页表,使得将数据从当前使用的存储器装置移动到所要存储器装置。
在一个实施例中,存储用于随机存取作为主存储器的数据是由各种虚拟地址范围组织。虚拟地址范围集合可与命名空间识别符相关联。
在一个实施例中,操作系统的核心在固件及装置驱动器的辅助下控制计算机系统中的所有硬件装置。核心管理对随机存取存储器(RAM)中的程序的存储器存取,且确定哪些程序获得对某些硬件资源的存取。
操作系统提供应用程序与计算机系统的计算机硬件之间的接口。应用程序基于由操作系统管理的程序与硬件交互。操作系统还向应用程序提供服务。当应用程序执行时,操作系统的核心创建处理程序。核心为处理程序指配存储器空间及优先级,将程序二进制码载入到存储器中,且启动应用程序的执行。
在一个实施例中,由核心指配存储器空间是至少部分基于从应用程序提供的命名空间数据。在一个实例中,应用程序提供对应于存储器类型的命名空间。作为响应,核心指配对应于所述存储器类型的物理存储器装置的存储器空间。在一个实例中,核心使用虚拟存储器定址(例如分页或分段)来确定每一程序在任何给定时间可存取的存储器。
图11说明根据一些实施例的使用命名空间表1104将命名空间映射到计算机系统中的物理存储器的不同存储器类型的实例计算机系统。使用物理存储器来提供可由计算机系统1100经由存储器总线812存取的随机存取存储器。存储器子系统1102提供用作随机存取存储器且由处理装置310使用存储器管理单元316存取的物理存储器。在一个实例中,计算机系统1100及存储器子系统1102在相同集成电路(IC)芯片上或不同IC芯片上。在一个实例中,计算机系统1100及存储器子系统1102各自为相同片上系统(SoC)的部分。
计算机系统1100为图8的计算机系统800的实例。存储器子系统1102为图8的存储器子系统802的实例。
物理存储器由不同存储器类型的存储器装置(包含DRAM 304、NVRAM 306及NAND闪存308)提供。在其它实施例中,可使用各种其它类型的存储器及/或存储器类型的其它组合。
每一存储器装置对应于命名空间识别符。举例来说,DRAM 304对应于识别符“命名空间A”。NVRAM 306对应于识别符“命名空间B”。NAND闪存308对应于识别符“命名空间C”。
在一个实施例中,每一存储器装置可存储与其所指配命名空间相关联的各种数据。相应命名空间数据在图11中指示为“命名空间A数据”、“命名空间B数据”及“命名空间C数据”。在一个实例中,命名空间数据包含命名空间识别符。在一个实例中,命名空间数据包含对应于DRAM 304的物理地址范围。在一个实例中,命名空间数据包含来自元数据320、322的数据的一部分。在一个实例中,命名空间数据包含来自页表804的数据的一部分。
在一个实施例中,将命名空间表1104存储在计算机系统1100的存储器中。命名空间表1104提供命名空间识别符与存储器类型之间的映射。举例来说,命名空间识别符“命名空间A”映射到DRAM的存储器类型。
在一个实施例中,当应用程序312向处理装置310提出对随机存取存储器的分配的请求时,操作系统808创建命名空间识别符,且使存储器类型与命名空间识别符相关联。更新命名空间表1104以存储这种关联。在一个实例中,存储器类型为如由应用程序312所提供的存储器类型314。在一个实例中,操作系统808基于与应用程序312相关联的特性来确定存储器类型。在一个实例中,操作系统808基于应用程序312的优先级确定存储器类型。
在一个实施例中,应用程序312将请求提供到与存储器管理相关的操作系统808。所述请求包含与所识别数据相关联或与所识别数据相关的命名空间识别符。响应于接收到请求,操作系统808存取命名空间表1104以用于进行与所识别数据相关联的一或多个各种动作或操作。在一个实例中,操作系统808将所识别数据从一个存储器类型的现有存储器装置移动到对应于接收到的命名空间识别符的另一存储器类型的新存储器装置。在一个实例中,操作系统808对所识别数据进行一或多个操作,且将操作的结果存储在与随请求提供的命名空间相关联的存储器类型中。在一个实例中,操作系统808将完成动作的确认提供到应用程序312。
在一个实施例中,分配存储器以供应用程序312使用。从命名空间分配存储器。在一个实例中,命名空间已存在于命名空间表1104中。在另一实例中,命名空间是响应于对存储器分配的请求而创建。将所创建命名空间存储在命名空间表1104中。
将现有或新创建的命名空间绑定到存储器类型。响应于将命名空间绑定到存储器类型,调整一或多个页表以将逻辑存储器地址及命名空间映射到所述存储器类型的存储器装置。在一个实例中,响应于将命名空间绑定到存储器类型而更新页表806及/或页表804。
在一个实施例中,操作系统808创建用于存储器装置的命名空间。将数据绑定到命名空间。在一个实例中,通过虚拟地址范围识别数据。响应于将数据绑定到命名空间,将数据存储在与所创建命名空间相关联的存储器装置中。在一个实例中,将数据绑定到命名空间包含存储命名空间的虚拟地址与存储器装置的物理地址之间的映射。
在一个实施例中,命名空间的一或多个虚拟地址对应于由操作系统808使用页表804管理的处理程序的虚拟页。在一个实例中,页表804包含将命名空间的虚拟地址映射到存储器装置的物理地址的页表项。
图12说明根据一些实施例的具有将命名空间映射到计算机系统的不同类型的存储器的记录1202、1204、1206的实例命名空间表1200。在一个实例中,计算机系统为计算机系统1100。命名空间表1200为命名空间表1104的实例。
每一记录包含与存储器类型(例如DRAM或NVRAM)相关联的命名空间识别符(例如命名空间A)。在一个实例中,记录1202的存储器类型的改变使得页表900经更新,使得页表项902具有匹配存储器类型。
每一记录可进一步包含虚拟地址、物理地址及/或数据识别符。在一个实例中,虚拟地址可为对应于记录的存储器类型的虚拟地址范围。在一个实例中,物理地址可为对应于记录的存储器类型的一或多个存储器装置的物理地址范围。
在一个实例中,数据识别符识别与命名空间识别符相关联的数据。在一个实例中,数据识别符为处理装置310的地址空间中的地址范围。在一个实例中,数据识别符为存储在记录的存储器类型的一或多个存储器装置中的数据的物理地址范围。
在一个实施例中,将来自所存储元数据320、322的数据的一部分复制到命名空间表1200中的记录。在一个实例中,数据的所述部分是响应于与记录的命名空间识别符相关联的存储器类型的改变而复制。在一个实例中,数据的所述部分是响应于与记录相关联的虚拟地址、物理地址及/或数据识别符的改变而复制。
图13展示根据一些实施例的用于将数据绑定到具有不同存储器类型的物理存储器的存储器系统中的命名空间的方法。举例来说,图13的方法可实施于图11的系统中。
图13的方法可由处理逻辑进行,所述处理逻辑可包含硬件(例如处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如在处理装置上运行或执行的指令),或其组合。在一些实施例中,图13的方法至少部分地由一或多个处理装置(例如图11的处理装置310)进行。
尽管以特定顺序或次序展示,但除非另有规定,否则可修改所述处理程序的次序。因此,所说明实施例应仅理解为实例,且所说明处理程序可以不同次序进行,且一些处理程序可并行进行。另外,可在各种实施例中省略一或多个处理程序。因此,在每一实施例中并非所有处理程序都是必需的。其它处理程序流程是可能的。
在框1301处,从命名空间分配存储器以供应用程序使用。所述命名空间为对其中定义物理地址的一或多个物理存储器装置的逻辑参考。在一个实例中,物理地址由操作系统808定义。在一个实例中,应用程序为应用程序312。
在框1303处,将命名空间绑定到存储器类型。在一个实例中,将命名空间绑定到存储器类型314。在一个实例中,将命名空间至存储器类型的绑定存储在命名空间表1104中。
在框1305处,响应于将命名空间绑定到存储器类型,调整页表以将命名空间中的逻辑存储器地址映射到所述存储器类型的存储器装置。在一个实例中,调整页表804及/或页表806。在一个实例中,逻辑存储器地址为应用程序312的虚拟页的虚拟地址。在一个实例中,存储器装置为DRAM 304。
在一个实施例中,一种方法包括:由至少一个处理装置(例如处理装置310及/或存储器管理单元316)创建用于不同存储器类型的存储器装置(例如DRAM 304、NVRAM306及NAND闪存308)的命名空间,所述命名空间包含用于第一存储器类型的第一存储器装置的第一命名空间(例如“命名空间A”),及用于第二存储器类型的第二存储器装置的第二命名空间(例如“命名空间B”);将数据绑定到所述第一命名空间(例如将绑定存储在命名空间表1104中);及响应于将所述数据绑定到所述第一命名空间,将所述数据存储在所述第一存储器装置中。
在一个实施例中,将所述数据存储在所述第一存储器装置中包括将所述数据从所述第二存储器装置移动到所述第一存储器装置。
在一个实施例中,将所述数据绑定到所述第一命名空间包括所述数据从所述第二命名空间到所述第一命名空间的绑定的改变。
在一个实施例中,操作系统(例如操作系统808)在所述至少一个处理装置上运行,且将所述数据绑定到所述第一命名空间是由所述操作系统响应于由应用程序(例如应用程序312)提出的请求而进行。
在一个实施例中,所述第一命名空间是由所述操作系统响应于由所述应用程序提出的请求而创建。
在一个实施例中,创建所述命名空间包括使相应虚拟地址(例如页表804、806中的虚拟地址;元数据320、322中的虚拟地址)与每一命名空间相关联。
在一个实施例中,将所述数据绑定到所述第一命名空间包括存储所述第一命名空间的虚拟地址(例如页表804、806中的虚拟地址;元数据320、322中的虚拟地址)与所述第一存储器装置的第一物理地址之间的映射。
在一个实施例中,所述第一命名空间的所述虚拟地址在所述一个处理装置的地址空间的第一地址范围中,且其中存储所述映射包括存储使所述第一地址范围与所述第一存储器装置相关联的元数据(例如元数据320、322)。
在一个实施例中,所述第一命名空间的所述虚拟地址对应于由操作系统使用页表(例如页表804、806)来管理的处理程序的虚拟页,且其中存储所述映射包括在所述页表中生成将所述第一命名空间的所述虚拟地址映射到所述第一物理地址的页表项。
在一个实施例中,所述方法进一步包括由操作系统将命名空间与绑定到所述命名空间的数据集之间的关联(例如针对命名空间表1104中的记录的绑定)存储在存储器中。
在一个实施例中,所述方法进一步包括:确定在所述至少一个处理装置上执行的应用程序的优先级的增加;其中将所述数据绑定到所述第一命名空间是响应于确定所述优先级的所述增加而进行,其中将所述数据绑定到所述第一命名空间包括从所述第二命名空间到所述第一命名空间的绑定的改变,且其中所述第一存储器装置(例如DRAM 304)的时延小于所述第二存储器装置(例如NVRAM 306或NAND闪存308)的时延。
在一个实施例中,创建所述第一命名空间包括将对所述第一命名空间的识别存储在所述第一存储器装置的存储器中(例如将命名空间识别符及/或另一识别存储为图11的“命名空间A数据”的部分)。
在一个实施例中,所述方法进一步包括从应用程序接收对存储器的分配的请求,其中所述请求指定将数据存储在所述第一存储器类型的物理存储器(例如DRAM)中。
在一个实施例中,一种系统包括:第一存储器类型的第一存储器装置;至少一个处理装置;及存储器,其含有指令,所述指令经配置以指示所述至少一个处理装置:由操作系统从命名空间分配存储器以供应用程序使用,其中所述命名空间为对其中定义物理地址的一或多个物理存储器装置的逻辑参考;将所述命名空间绑定到所述第一存储器类型;及响应于将所述命名空间绑定到所述第一存储器类型,由所述操作系统调整一页表以将所述命名空间中的逻辑存储器地址映射到所述第一存储器装置。
在一个实施例中,所述指令经进一步配置以指示所述至少一个处理装置:使用来自所述页表的数据存取所述第一存储器装置中的对应于所述命名空间中的所述逻辑存储器地址的第一物理地址处的数据。
在一个实施例中,在转换后备缓冲器(例如TLB 810)中高速缓存来自所述页表的所述数据,且存储器管理单元(例如MMU 316)存取所述转换后备缓冲器以将所述逻辑存储器地址转换为所述第一物理地址。
在一个实施例中,所述系统进一步包括第二存储器类型的第二存储器装置,其中所述指令经进一步配置以指示所述至少一个处理装置:使用来自所述页表的数据通过将所述数据从第二存储器类型的第二存储器装置移动到所述第一存储器装置将数据存储在所述第一存储器装置中。
在一个实施例中,一种非暂时性机器可读存储媒体存储指令,所述指令在至少一个处理装置上执行时使得所述至少一个处理装置至少:创建用于不同存储器类型的存储器装置的命名空间,所述命名空间包含用于第一存储器类型的第一存储器装置的第一命名空间,及用于第二存储器类型的第二存储器装置的第二命名空间;将数据绑定到所述第一命名空间;及响应于将所述数据绑定到所述第一命名空间,将所述数据存储在所述第一存储器装置中。
在一个实施例中,将所述数据绑定到所述第一命名空间是响应于从应用程序接收到对所述第一存储器类型(例如存储器类型314)的请求而进行;将所述数据绑定到所述第一命名空间包括所述数据从所述第二命名空间到所述第一命名空间的绑定的改变;且所述第一存储器装置的时延小于所述第二存储器装置的时延。
在一个实施例中,将所述数据绑定到所述第一命名空间包括存储所述第一命名空间的虚拟地址范围与所述第一存储器装置的第一物理地址之间的映射;且存储所述映射包括存储使所述虚拟地址范围与所述第一存储器装置相关联的元数据(例如元数据320、322)。
基于存取模式将数据映射到存储器类型
现在下文描述与基于数据存取模式将数据映射到一个类型的存储器装置相关的各种实施例。以下描述的一般性不受上文所描述的各种实施例限制。
在先前存储器系统中,为应用程序的数据分配的存储器(例如为应用程序的可执行代码及/或工作数据分配的随机存取存储器)未针对特定存储器类型显式地划分(例如应用程序未经译码以使用用于工作数据的特定存储器类型)。在一个实例中,在未实施不同类型的存储器(例如DRAM、NVRAM及NAND闪存)的任何概念的情况下写入遗留应用程序。因此,由操作系统在不考虑或管理存储器存取将如何在遗留应用程序的执行期间影响性能的情况下分配应用程序的所有数据。在许多情况下,数据将需要频繁地读取或写入,但将从相对缓慢存储器(例如NAND闪存装置,而非DRAM装置)读取或写入到相对缓慢存储器。因此,在存储器装置时延与各种类型的数据的存储器存取需要之间可存在明显失配。
先前存储器系统的前述情形产生某一数据由于存储某一关键数据的实际物理存储器装置的时延较大而不可由应用程序及时存取的技术问题。因此,可长时间保持应用程序的执行。在一些情况下,这种延迟可导致需要及时响应或其它动作的计算机系统的故障。举例来说,用于机器(例如制造设施中的机器,或例如物流包裹处置中心的其它情形下的车辆、机器或机器人)的实时控制系统可因来自主存储器的缓慢数据存取而无法满足所需服务质量(QoS)保证。
下文所描述的各种实施例提供对以上技术问题中的一或多者的技术解决方案。在一个实施例中,一种计算机系统经配置以基于数据的存取模式自动指配存储器类型。
在一个实例中,数据初始地默认寄存在NVRAM装置中(例如当分配用于启动安装在移动装置上的新应用程序的存储器时,操作系统的默认配置)。如果经确定存取模式指示正频繁使用数据(例如每给定时间段的读取或写入存取比存取的预定阈值数目更频繁),那么计算机系统通过改变其存储器类型(例如改变与数据相关联的存储器类型)将数据移动到DRAM装置。
如果经确定存取模式指示最近尚未使用数据(例如从最后使用起的时间段大于预定阈值),那么计算机系统将数据移动到NAND闪存装置。任选地,基于存取模式,计算机系统可进一步在预期频繁存取(例如经确定为可能在未来操作中发生的应用程序的频繁读取或写入存取)的情况下将数据从缓慢存储器装置预移动到快速存储器装置。在一个实施例中,基于存取模式,系统可在预期频繁存取的情况下预先将所存储数据从较慢存储器传送、移动及/或复制到较快存储器。
图14说明根据一些实施例的使用用于将存储器存取映射到不同类型的物理存储器的存取表1404的实例计算机系统1400。计算机系统1400读取数据且将数据写入到存储器子系统1402。将数据存储在包含DRAM 304、NVRAM 306及NAND闪存308的存储器装置中。在一个实例中,存储器子系统1402为处理装置310的主存储器提供随机存取存储器。
在一个实例中,处理装置310定址主存储器且使用存储器总线812(例如存储器总线812可包含多个总线,例如命令及控制、地址及数据总线)存取数据。主存储器的地址空间包含由物理存储器装置提供的随机存取存储器(RAM)。RAM用以读取及写入数据(例如SDRAM)。在一个实例中,RAM由DRAM 304及NVRAM 306寄存。
操作系统808在处理装置310上执行且管理存储器总线812的上的读取及写入存取。在数据由计算机系统1400存取时,操作系统808维护存取表1404中的数据。在一个实例中,经维护数据存储与对数据的读取或写入存取相关联的特性。在一个实例中,存储的特性包含关于对所存储数据的存取频率的数据。
在一个实施例中,存储在存取表1404中的存取数据与应用程序相关联。在一个实例中,将应用程序1420的数据存取模式(例如包含存取频率)存储在存取表1404中。在一个实例中,数据存取模式与由应用程序1420使用的数据的类型(例如可执行代码、工作数据或存储器堆叠)相关联。
在一个实施例中,高速缓存存储器(例如SRAM)与处理装置310位于相同芯片(例如SoC)上。在一个实例中,存取模式存储关于高速缓存存储器的使用的数据。在一个实例中,存储器类型集合进一步包含一或多个高速缓存存储器类型。在一个实例中,通过将与数据相关联的存储器类型由当前使用的存储器类型(例如DRAM)改变为高速缓存存储器类型(例如L1、L2或L3或其它“末级”高速缓存)来(例如基于存取表1404中的数据)实施某一所识别数据到高速缓存存储器中的存储的未来分配。
在一个实施例中,可在进行存取操作时收集关于对存储在存储器子系统1402中的数据的读取或写入存取的存取数据。举例来说,可在进行对DRAM 304中的数据的读取或写入存取时收集存取数据1408。在一个实例中,存取数据1408包含关于DRAM 304的操作的上下文的数据。
在一个实施例中,DRAM 304的上下文由DRAM 304及/或存储器子系统1402的传感器收集的传感器数据表示。在一个实施例中,传感器收集关于周围环境条件(例如温度、湿度、电场及/或磁场强度等)的数据。
在一个实施例中,存取数据1408包含关于DRAM 304中的记忆单元的性能及/或可靠性的数据。在一个实例中,存取数据1408包含关于DRAM 304中的一或多个数据或其它总线的电压特性的数据,及/或与对DRAM 304的读取或写入存取相关联的时序数据。在一个实例中,存取数据1408由DRAM 304的控制器或其它处理装置(未展示)收集。
在一个实施例中,针对NVRAM 306收集存取数据1410。存取数据1410可包含与存取数据1408类似类型的数据。类似地,针对NAND闪存308收集存取数据1412。在一个实施例中,存取数据1408、1410及/或1412由操作系统808收集且存储在存取表1404中。
在一个实施例中,操作系统808在未使用来自存取表1404的数据的情况下基于存取数据1408、1410及/或1412确定数据的存取模式。响应于确定存取模式,改变数据的存储器类型,使得将数据存储在一个存储器装置中及/或从一个存储器装置移动到另一存储器装置。在一个实例中,数据由存储器管理单元316移动。在一个实例中,在页表804、806中更新存储器类型的改变。在一个实例中,将新的存储器类型存储在转换后备缓冲器810中。
图15说明根据一些实施例的具有用以将存储器存取映射到不同类型的存储器的记录的实例存取表1500。存取表1500为图14的存取表1404的实例。
存取表1500包含记录1502及1504,其在进行读取或写入存取操作时由操作系统808创建及更新。记录1502、1504包含例如虚拟地址1506、物理地址1508、存储器类型1510、存取模式1512、存取数据1514及/或应用程序或处理程序识别符1516的各种字段。
虚拟地址1506为例如对应于虚拟页的数据的虚拟地址范围。在一个实例中,虚拟页与应用程序1420相关联。存储器类型1510为例如存储虚拟页的数据的存储器装置的类型。物理地址1508为数据存储在存储器装置中的物理地址范围。
在一个实例中,存取模式1512包含关于与存储在虚拟地址1506处的数据相关联的各种存储器存取操作的所收集数据。在一个实例中,存取模式1512为数据的存取频率及/或从对数据的最后存取起的时间。在一个实例中,页表900中的项902的使用数据对应于存取模式1512。
在一个实例中,存取数据1514包含从存储对应于虚拟地址1506及/或物理地址1508的数据的存储器装置接收到的存取数据。在一个实例中,存取数据1514包含来自存取数据1408、1410及/或1412的数据。在一个实例中,存取数据1408、1410及/或1412由处理装置310在由操作系统808管理时接收到。
在一个实施例中,识别符1516识别使用存储在虚拟地址1506处的数据的执行应用程序。在一个实施例中,识别符1516识别在处理装置310上运行的与在虚拟地址1506或物理地址1508的处存取的数据相关联的一或多个处理程序。在一个实例中,将处理程序识别符1516存储在页表900的具有对应于虚拟地址1506的虚拟地址的项中。
在一个实施例中,基于从元数据320及/或322检索到的数据来更新存取表1500。在一个实例中,使用基于虚拟地址1506的元数据320、322作为搜索输入来确定物理地址1508。在一个实例中,使用基于虚拟地址1506的元数据320、322作为输入来确定存储器类型1510。
图16展示根据一些实施例的用于基于存取模式将存储器存取映射到存储器的方法。举例来说,图16的方法可实施于图14的系统中。在一个实例中,将存取模式存储在存取表1404中。
图16的方法可由处理逻辑进行,所述处理逻辑可包含硬件(例如处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如在处理装置上运行或执行的指令),或其组合。在一些实施例中,图16的方法至少部分地由一或多个处理装置(例如图14的处理装置310)进行。
尽管以特定顺序或次序展示,但除非另有规定,否则可修改所述处理程序的次序。因此,所说明实施例应仅理解为实例,且所说明处理程序可以不同次序进行,且一些处理程序可并行进行。另外,可在各种实施例中省略一或多个处理程序。因此,在每一实施例中并非所有处理程序都是必需的。其它处理程序流程是可能的。
在框1601处,将数据存储在一或多个逻辑地址处的随机存取存储器中。将地址分配给由操作系统管理的应用程序,且将数据物理地存储在第一存储器装置中。在一个实例中,逻辑地址表示由操作系统808分配给应用程序1420的虚拟地址范围。在一个实例中,第一存储器装置为NVRAM 306。
在框1603处,确定所存储数据的存取模式。在一个实例中,存取模式为存取表1500的存取模式1512。在一个实例中,存取模式指示与应用程序1420相关联的数据的存取频率已增加(例如高于预定阈值)。在一个实例中,存取模式指示与所存储数据相关联的处理程序或应用程序的优先级已增加。
在框1605处,响应于确定存取模式,将数据从第一存储器装置移动到具有不同时延的第二存储器装置。在一个实例中,将数据从NVRAM 306移动到具有较低时延的DRAM304。
在一个实施例中,一种方法包括:由计算机系统的至少一个处理装置(例如图14的处理装置310)将数据存储在分配给在所述计算机系统上执行的应用程序(例如应用程序1420)的一或多个第一虚拟地址处,其中所述第一虚拟地址对应于第一存储器类型的第一存储器装置(例如NVRAM 306);确定所存储数据的存取模式(例如存储在存取表1404中的存取模式);及响应于确定所述存取模式,将所述数据存储在分配给所述应用程序的一或多个第二虚拟地址处,其中所述第二虚拟地址对应于第二存储器类型的第二存储器装置(例如DRAM 304)。
在一个实施例中,将所述数据存储在所述第二虚拟地址处包括存取将所述第二虚拟地址映射到所述第二存储器装置的一或多个物理地址的所存储元数据(例如元数据320、322)。
在一个实施例中,存取所述所存储元数据包括由存储器管理单元(例如MMU 316)存取来自所述所存储元数据的在转换后备缓冲器(例如TLB 810)中高速缓存的数据。
在一个实施例中,所述方法进一步包括基于所述存取模式将所述第二存储器类型指配给所述所存储数据。
在一个实施例中,所述方法进一步包括使用指配的第二存储器类型来确定存储所述数据的所述第二存储器装置的物理地址。在一个实例中,使用所存储元数据320、322确定物理地址。
在一个实施例中,将所述数据存储在所述第二虚拟地址处包括:将所述数据的存储器类型从所述第一存储器类型改变为所述第二存储器类型;及响应于改变所述存储器类型,将所述数据从所述第一存储器装置移动到所述第二存储器装置。在一个实例中,由存储器管理单元316响应于由操作系统808管理的存储器类型的改变而移动数据。
在一个实施例中,将所述数据从所述第一存储器装置移动到所述第二存储器装置包括更新页表(例如页表804)以将所述第二虚拟地址映射到所述第二存储器装置中的一或多个物理地址。
在一个实施例中,确定所述所存储数据的所述存取模式包括存取对应于所述第一虚拟地址的一或多个页表项中的使用数据。
在一个实施例中,所述页表项中的每一者包含具有所述第一存储器类型的字段。
在一个实施例中,确定所述所存储数据的所述存取模式包括确定使用频率或最后使用时间中的至少一者。
在一个实施例中,将所述数据存储在所述第二虚拟地址处包括:在命名空间表中将绑定到所述数据的命名空间从与所述第一存储器类型相关联的第一命名空间改变为与所述第二存储器类型相关联的第二命名空间。
在一个实施例中,确定所述所存储数据的所述存取模式包括确定所述数据的使用频率大于预定阈值。
在一个实施例中,所述第二存储器装置的时延小于所述第一存储器装置的时延,且其中确定所述所存储数据的所述存取模式包括确定所述数据的使用频率大于预定阈值。
在一个实施例中,所述第二存储器装置的时延大于所述第一存储器装置的时延,且确定所述所存储数据的所述存取模式包括以下中的至少一者:确定所述数据的使用频率小于预定阈值,或确定从最后使用所述数据起的时间段大于预定阈值。
在一个实施例中,所述第二存储器装置的时延小于所述第一存储器装置的时延;确定所述所存储数据的所述存取模式包括确定所述应用程序对数据的未来使用频率将大于预定阈值;且将所述数据存储在所述第二虚拟地址处包括:通过更新包含对应于所述第一虚拟地址的一或多个虚拟页的页表将所述所存储数据从所述第一存储器装置移动到所述第二存储器装置。
在一个实施例中,确定所述未来使用频率将大于所述预定阈值包括:确定所述应用程序或所述计算机系统中的至少一者的上下文;使经确定上下文与关于所述应用程序的历史存取模式的数据相关联;及确定所述历史存取模式对应于大于所述预定阈值的使用频率。在一个实例中,所述上下文是基于存储在存取表1500中的存取数据1514确定。
在一个实施例中,一种系统包括:第一存储器类型的第一存储器装置;第二存储器类型的第二存储器装置;至少一个处理装置;及存储器,其含有指令,所述指令经配置以指示所述至少一个处理装置:在随机存取存储器中将数据存储在分配给由操作系统(例如操作系统808)管理的应用程序的一或多个逻辑地址处,其中将所述数据存储在所述第一存储器装置中;由所述操作系统确定所存储数据的存取模式;及响应于确定所述存取模式,将所述数据从所述第一存储器装置移动到所述第二存储器装置。
在一个实施例中,通过改变由所述操作系统指配给所述数据的存储器类型将所述数据从所述第一存储器装置移动到所述第二存储器装置。
在一个实施例中,所述逻辑地址为所述应用程序的一或多个虚拟页的虚拟地址。
在一个实施例中,一种非暂时性机器可读存储媒体存储指令,所述指令在至少一个处理装置上执行时使得所述至少一个处理装置至少:将数据存储在分配给应用程序的地址范围处的随机存取存储器中,其中所述地址范围对应于第一存储器类型的第一存储器装置;确定所存储数据的存取模式;及响应于确定所述存取模式,将所述数据从所述第一存储器装置移动到第二存储器类型的第二存储器装置。
结语
本发明包含进行上文所描述的方法及实施上文所描述的系统的各种装置,包含进行这些方法的数据处理系统,及含有在数据处理系统上执行时使得系统进行这些方法的指令的计算机可读媒体。
描述及图式为说明性的且不应视为限制性的。描述众多特定细节以提供透彻理解。然而,在某些情况下,并不描述熟知或常规细节以便避免混淆描述。对本发明中的一个或一实施例的参考未必为对同一实施例的参考;且这类参考意味着至少一个。
在本说明书中,对“一个实施例”或“一实施例”的参考意味着结合实施例所描述的特定特征、结构或特性是包含于本发明的至少一个实施例中。说明书中各处的短语“在一个实施例中”的表达形式未必均是指同一实施例,也不均是指其它实施例的彼此排他性的单独或替代性实施例。此外,描述各种特征,所述特征可通过一些实施例而不通过其它实施例来呈现。类似地,描述各种要求,所述要求可为对于一些实施例的要求但并非对于其它实施例的要求。
在本说明书中,各种功能及操作可描述为由软件代码进行或由软件代码引起以简化描述。然而,本领域技术人员将认识到这类表述意味着功能由一或多个处理器对代码的执行产生,所述一或多个处理器例如微处理器、专用集成电路(ASIC)、图形处理器及/或现场可编程门阵列(FPGA)。替代地,或组合地,可在具有或不具有软件指令的情况下使用专用电路系统(例如逻辑电路系统)实施功能及操作。实施例可使用硬连线电路系统在不具有软件指令的情况下实施,或结合软件指令实施。因此,技术不限于硬件电路系统与软件的任何特定组合,也不限于由计算装置执行的指令的任何特定来源。
尽管一些实施例可实施于完全起作用的计算机及计算机系统中,但各种实施例能够以各种形式作为计算产品分布,且能够加以应用,无论用以实际上影响分布的机器或计算机可读媒体的特定类型如何。
所公开的至少一些方面可至少部分地体现于软件中。即,技术可响应于其处理器(例如微处理器)执行含于存储器(例如ROM、易失性RAM、非易失性存储器、高速缓存或远程存储装置)中的指令序列而在计算装置或其它系统中进行。
执行以实施实施例的例程可实施为操作系统、中间软件、服务递送平台、软件开发套件(SDK)组件、网页服务或称为“计算机程序”的其它特定应用程序、组件、程序、对象、模块或指令序列的部分。对这些例程的调用接口可暴露于软件开发社群作为应用程序编程接口(API)。计算机程序通常包括在各种时间在计算机中的各种存储器及存储装置中设定的一或多个指令,且当由计算机中的一或多个处理器读取及执行时,使得计算机进行执行涉及各种方面的元件所必需的操作。
机器可读媒体可用于存储在由计算装置执行时使得所述装置进行各种方法的软件及数据。可执行软件及数据可存储在各处,包含例如ROM、易失性RAM、非易失性存储器及/或高速缓存。所述软件及/或数据的部分可存储在这些存储装置中的任一者中。另外,数据及指令可从集中式服务器或同级间网络获得。数据及指令的不同部分可在不同时间且在不同通信会话或相同通信会话中从不同集中式服务器及/或同级间网络获得。可在应用程序的执行之前获得全部数据及指令。替代地,可在需要执行时动态地(实时)获得数据及指令的部分。因此,并不需要数据及指令在特定时刻全部处于机器可读媒体上。
计算机可读媒体的实例包含但不限于可记录及不可记录类型媒体,例如易失性及非易失性存储器装置、只读存储器(ROM)、随机存取存储器(RAM)、闪存存储器装置、固态驱动机存储媒体、可卸除磁盘、磁盘存储媒体、光学存储媒体(例如光盘只读存储器(CD ROM)、数字多功能光盘(DVD)等),以及其它。计算机可读媒体可存储指令。
大体而言,有形或非暂时性机器可读媒体包含提供(例如存储)信息的任何机构,所述信息呈可由机器(例如计算机、移动装置、网络装置、个人数字助理、制造工具、具有一或多个处理器集合的任何装置等)存取的形式。
在各种实施例中,硬连线电路系统可与软件及固件指令组合使用以实施技术。因此,技术既不限于硬件电路系统与软件的任何特定组合,也不限于由计算装置执行的指令的任何特定来源。
尽管图式中的一些以特定次序说明数个操作,但不依赖次序的操作可重新排序且可组合或拆解其它操作。尽管具体地提及一些重新排序或其它分组,但其它者将对所属领域的一般技术人员显而易见,且因此并不存在替代例的穷尽性列表。此外,应认识到,阶段可实施于硬件、固件、软件或其任何组合中。
在前述说明书中,已参考本发明的特定示范性实施例描述本发明。显而易见,在不脱离如以下权利要求书中所阐述的较宽广的精神及范围的情况下,可对其进行各种修改。因此,应在说明性意义上而非限制性意义上看待说明书及图式。
本文中所阐述的各种实施例可使用广泛多种不同类型的计算装置实施。如本文中所使用,“计算装置”的实例包含但不限于服务器、集中式计算平台、多个计算处理器及/或组件的系统、移动装置、用户终端机、载具、个人通信装置、穿戴式数字装置、电子信息站、通用计算机、电子文件阅读器、平板、膝上型计算机、智能型手机、数码相机、住宅家用器具、电视或数字音乐播放器。计算装置的额外实例包含作为称为“物联网”(IOT)的部分的装置。这类“物联”可与其所有者或管理员(其可监视所述物联或修改这些物联的设定)具有偶然交互。在一些情况下,这类所有者或管理员相对于“物联”装置扮演用户的角色。在一些实例中,用户的主要移动装置(例如苹果iPhone)可为相对于由用户穿戴的“物联”装置(例如苹果手表)的管理员服务器。
在一些实施例中,计算装置可为计算机或主机系统,其实施为例如台式计算机、膝上型计算机、网络服务器、移动装置或包含存储器及处理装置的另一计算装置。主机系统可包含或耦合到存储器子系统,使得主机系统可从存储器子系统读取数据或将数据写入到存储器子系统。主机系统可经由物理主机接口耦合到存储器子系统。大体而言,主机系统可经由同一通信连接、多个单独通信连接及/或通信连接的组合存取多个存储器子系统。
Claims (20)
1.一种方法,其包括:
由计算机系统的至少一个处理装置将数据存储在分配给在所述计算机系统上执行的应用程序的一或多个第一虚拟地址处,其中所述第一虚拟地址对应于第一存储器类型的第一存储器装置;
确定所存储数据的存取模式;及
响应于确定所述存取模式,将所述数据存储在分配给所述应用程序的一或多个第二虚拟地址处,其中所述第二虚拟地址对应于第二存储器类型的第二存储器装置。
2.根据权利要求1所述的方法,其中将所述数据存储在所述第二虚拟地址处包括存取将所述第二虚拟地址映射到所述第二存储器装置的一或多个物理地址的所存储元数据。
3.根据权利要求2所述的方法,其中存取所述所存储元数据包括由存储器管理单元存取来自所述所存储元数据的在转换后备缓冲器中高速缓存的数据。
4.根据权利要求1所述的方法,其进一步包括基于所述存取模式将所述第二存储器类型指配给所述所存储数据。
5.根据权利要求4所述的方法,其进一步包括使用指配的第二存储器类型来确定存储所述数据的所述第二存储器装置的物理地址。
6.根据权利要求1所述的方法,其中将所述数据存储在所述第二虚拟地址处包括:
将所述数据的存储器类型从所述第一存储器类型改变为所述第二存储器类型;及
响应于改变所述存储器类型,将所述数据从所述第一存储器装置移动到所述第二存储器装置。
7.根据权利要求6所述的方法,其中将所述数据从所述第一存储器装置移动到所述第二存储器装置包括更新页表以将所述第二虚拟地址映射到所述第二存储器装置中的一或多个物理地址。
8.根据权利要求1所述的方法,其中确定所述所存储数据的所述存取模式包括存取对应于所述第一虚拟地址的一或多个页表项中的使用数据。
9.根据权利要求8所述的方法,其中所述页表项中的每一者包含具有所述第一存储器类型的字段。
10.根据权利要求1所述的方法,其中确定所述所存储数据的所述存取模式包括确定使用频率或最后使用时间中的至少一者。
11.根据权利要求1所述的方法,其中将所述数据存储在所述第二虚拟地址处包括:在命名空间表中将绑定到所述数据的命名空间从与所述第一存储器类型相关联的第一命名空间改变为与所述第二存储器类型相关联的第二命名空间。
12.根据权利要求1所述的方法,其中确定所述所存储数据的所述存取模式包括确定所述数据的使用频率大于预定阈值。
13.根据权利要求1所述的方法,其中所述第二存储器装置的时延小于所述第一存储器装置的时延,且其中确定所述所存储数据的所述存取模式包括确定所述数据的使用频率大于预定阈值。
14.根据权利要求1所述的方法,其中所述第二存储器装置的时延大于所述第一存储器装置的时延,且其中确定所述所存储数据的所述存取模式包括以下中的至少一者:确定所述数据的使用频率小于预定阈值,或确定从最后使用所述数据起的时间段大于预定阈值。
15.根据权利要求1所述的方法,其中:
所述第二存储器装置的时延小于所述第一存储器装置的时延;
确定所述所存储数据的所述存取模式包括确定所述应用程序对数据的未来使用频率将大于预定阈值;且
将所述数据存储在所述第二虚拟地址处包括:通过更新包含对应于所述第一虚拟地址的一或多个虚拟页的页表将所述所存储数据从所述第一存储器装置移动到所述第二存储器装置。
16.根据权利要求15所述的方法,其中确定所述未来使用频率将大于所述预定阈值包括:
确定所述应用程序或所述计算机系统中的至少一者的上下文;
使经确定上下文与关于所述应用程序的历史存取模式的数据相关联;及
确定所述历史存取模式对应于大于所述预定阈值的使用频率。
17.一种系统,其包括:
第一存储器类型的第一存储器装置;
第二存储器类型的第二存储器装置;
至少一个处理装置;及
存储器,其含有指令,所述指令经配置以指示所述至少一个处理装置:
在随机存取存储器中将数据存储在分配给由操作系统管理的应用程序的一或多个逻辑地址处,其中将所述数据存储在所述第一存储器装置中;
由所述操作系统确定所存储数据的存取模式;及
响应于确定所述存取模式,将所述数据从所述第一存储器装置移动到所述第二存储器装置。
18.根据权利要求17所述的系统,其中通过改变由所述操作系统指配给所述数据的存储器类型将所述数据从所述第一存储器装置移动到所述第二存储器装置。
19.根据权利要求17所述的系统,其中所述逻辑地址为所述应用程序的一或多个虚拟页的虚拟地址。
20.一种非暂时性机器可读存储媒体,其存储指令,所述指令在至少一个处理装置上执行时使得所述至少一个处理装置至少:
将数据存储在分配给应用程序的地址范围处的随机存取存储器中,其中所述地址范围对应于第一存储器类型的第一存储器装置;
确定所存储数据的存取模式;及
响应于确定所述存取模式,将所述数据从所述第一存储器装置移动到第二存储器类型的第二存储器装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/573,541 US11269780B2 (en) | 2019-09-17 | 2019-09-17 | Mapping non-typed memory access to typed memory access |
US16/573,541 | 2019-09-17 | ||
PCT/US2020/051065 WO2021055471A1 (en) | 2019-09-17 | 2020-09-16 | Mapping non-typed memory access to typed memory access |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114402306A true CN114402306A (zh) | 2022-04-26 |
Family
ID=74868481
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080064975.4A Pending CN114402306A (zh) | 2019-09-17 | 2020-09-16 | 映射未经分类的存储器存取至经分类的存储器存取 |
Country Status (7)
Country | Link |
---|---|
US (3) | US11269780B2 (zh) |
EP (1) | EP4031975A4 (zh) |
JP (1) | JP2022548642A (zh) |
KR (1) | KR20220045216A (zh) |
CN (1) | CN114402306A (zh) |
TW (1) | TWI781439B (zh) |
WO (1) | WO2021055471A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11650742B2 (en) * | 2019-09-17 | 2023-05-16 | Micron Technology, Inc. | Accessing stored metadata to identify memory devices in which data is stored |
US11494311B2 (en) | 2019-09-17 | 2022-11-08 | Micron Technology, Inc. | Page table hooks to memory types |
US11269780B2 (en) | 2019-09-17 | 2022-03-08 | Micron Technology, Inc. | Mapping non-typed memory access to typed memory access |
US10963396B1 (en) | 2019-09-17 | 2021-03-30 | Micron Technology, Inc. | Memory system for binding data to a memory namespace |
US11579910B2 (en) * | 2019-09-20 | 2023-02-14 | Netapp, Inc. | Policy enforcement and performance monitoring at sub-LUN granularity |
US11061770B1 (en) * | 2020-06-30 | 2021-07-13 | EMC IP Holding Company LLC | Reconstruction of logical pages in a storage system |
US20220122686A1 (en) * | 2020-09-24 | 2022-04-21 | Ecole Polytechnique Federale De Lausanne (Epfl) | Method For Reading And Writing Unreliable Memories And A Corresponding Memory Controller Device and Memory |
EP4315754A1 (en) * | 2021-03-24 | 2024-02-07 | Corelight, Inc. | System and method for identifying authentication method of secure shell (ssh) sessions |
CN113094119B (zh) * | 2021-04-28 | 2022-07-12 | 杭州国芯科技股份有限公司 | 一种嵌入式设备程序动态加载方法 |
US20230342067A1 (en) * | 2022-04-26 | 2023-10-26 | Nvidia Corporation | Solid state memory interface |
US12007900B2 (en) | 2022-07-08 | 2024-06-11 | Realtek Semiconductor Corp. | Data accessing method and data accessing system capable of providing high data accessing performance and low memory utilization |
Family Cites Families (124)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6376034A (ja) * | 1986-09-19 | 1988-04-06 | Hitachi Ltd | 多重アドレス空間制御方式 |
EP0447145B1 (en) | 1990-03-12 | 2000-07-12 | Hewlett-Packard Company | User scheduled direct memory access using virtual addresses |
JP3086773B2 (ja) * | 1994-03-16 | 2000-09-11 | 株式会社東芝 | 光ディスク装置 |
US6256714B1 (en) | 1998-09-02 | 2001-07-03 | Sharp Laboratories Of America, Inc. | Computer system with efficient memory usage for managing multiple application programs |
US6681311B2 (en) | 2001-07-18 | 2004-01-20 | Ip-First, Llc | Translation lookaside buffer that caches memory type information |
US7346664B2 (en) | 2003-04-24 | 2008-03-18 | Neopath Networks, Inc. | Transparent file migration using namespace replication |
US7444547B2 (en) | 2003-06-19 | 2008-10-28 | International Business Machines Corproation | Method, system, and product for programming in a simultaneous multi-threaded processor environment |
JP2005216053A (ja) * | 2004-01-30 | 2005-08-11 | Matsushita Electric Ind Co Ltd | 最適メモリ配置演算装置及び最適メモリ配置方法 |
US7533195B2 (en) | 2004-02-25 | 2009-05-12 | Analog Devices, Inc. | DMA controller for digital signal processors |
US7269708B2 (en) | 2004-04-20 | 2007-09-11 | Rambus Inc. | Memory controller for non-homogenous memory system |
US7552282B1 (en) | 2004-08-04 | 2009-06-23 | Emc Corporation | Method, computer readable medium, and data storage system for selective data replication of cached data |
JP4643395B2 (ja) * | 2004-08-30 | 2011-03-02 | 株式会社日立製作所 | ストレージシステム及びデータの移動方法 |
JP5338859B2 (ja) | 2004-10-27 | 2013-11-13 | ソニー株式会社 | 記憶装置および情報処理システム |
US8452929B2 (en) | 2005-04-21 | 2013-05-28 | Violin Memory Inc. | Method and system for storage of data in non-volatile media |
US7669003B2 (en) | 2005-08-03 | 2010-02-23 | Sandisk Corporation | Reprogrammable non-volatile memory systems with indexing of directly stored data files |
US7949845B2 (en) | 2005-08-03 | 2011-05-24 | Sandisk Corporation | Indexing of file data in reprogrammable non-volatile memories that directly store data files |
US7409489B2 (en) | 2005-08-03 | 2008-08-05 | Sandisk Corporation | Scheduling of reclaim operations in non-volatile memory |
US7533198B2 (en) | 2005-10-07 | 2009-05-12 | International Business Machines Corporation | Memory controller and method for handling DMA operations during a page copy |
JP2007254204A (ja) | 2006-03-23 | 2007-10-04 | Seiko Epson Corp | マルチレンズアレイの強化処理方法 |
JP2008077325A (ja) | 2006-09-20 | 2008-04-03 | Hitachi Ltd | ストレージ装置及びストレージ装置に対する設定方法 |
US11336511B2 (en) | 2006-09-25 | 2022-05-17 | Remot3.It, Inc. | Managing network connected devices |
US8775717B2 (en) | 2007-12-27 | 2014-07-08 | Sandisk Enterprise Ip Llc | Storage controller for flash memory including a crossbar switch connecting a plurality of processors with a plurality of internal memories |
US8270356B2 (en) | 2008-01-22 | 2012-09-18 | Lg Electronics Inc. | Method for encoding data unit by using a plurality of CRC algorithms |
US8151076B2 (en) | 2008-04-04 | 2012-04-03 | Cisco Technology, Inc. | Mapping memory segments in a translation lookaside buffer |
US20090254851A1 (en) | 2008-04-08 | 2009-10-08 | Techneos Systems Inc. | Method and system for conducting a survey by using a wireless device |
US8725927B2 (en) | 2008-10-15 | 2014-05-13 | Micron Technology, Inc. | Hot memory block table in a solid state storage device |
US8117496B2 (en) | 2009-06-18 | 2012-02-14 | International Business Machines Corporation | Detecting and recovering from silent data errors in application cloning systems |
JP5531476B2 (ja) | 2009-07-15 | 2014-06-25 | 富士ゼロックス株式会社 | 情報処理装置及び情報処理プログラム |
JP2011154547A (ja) | 2010-01-27 | 2011-08-11 | Toshiba Corp | メモリ管理装置及びメモリ管理方法 |
US9075733B1 (en) | 2010-05-20 | 2015-07-07 | Seagate Technology Llc | Selective storage of address mapping metadata in a system having multiple memories |
DE112010000004B4 (de) | 2010-06-13 | 2016-03-03 | Lianyungang Zhongfu Lianzhong Composites Group Co., Ltd. | Verfahren zur Herstellung eines Turbinenflügelfusses einer Megawatt-Windturbine |
US8521944B2 (en) | 2010-08-31 | 2013-08-27 | Intel Corporation | Performing memory accesses using memory context information |
US8595463B2 (en) | 2010-09-15 | 2013-11-26 | International Business Machines Corporation | Memory architecture with policy based data storage |
US8706697B2 (en) | 2010-12-17 | 2014-04-22 | Microsoft Corporation | Data retention component and framework |
US9558040B2 (en) | 2011-06-20 | 2017-01-31 | Microsoft Technology Licensing, Llc | Memory manager with enhanced application metadata |
US8935491B2 (en) | 2011-07-15 | 2015-01-13 | Throughputer, Inc. | Memory architecture for dynamically allocated manycore processor |
US20150081965A1 (en) | 2012-04-27 | 2015-03-19 | Hitachi, Ltd. | Data management system and data management method |
US9678863B2 (en) | 2012-06-12 | 2017-06-13 | Sandisk Technologies, Llc | Hybrid checkpointed memory |
US9524248B2 (en) | 2012-07-18 | 2016-12-20 | Micron Technology, Inc. | Memory management for a hierarchical memory system |
US10303618B2 (en) | 2012-09-25 | 2019-05-28 | International Business Machines Corporation | Power savings via dynamic page type selection |
US9304828B2 (en) | 2012-09-27 | 2016-04-05 | Hitachi, Ltd. | Hierarchy memory management |
US9747000B2 (en) | 2012-10-02 | 2017-08-29 | Razer (Asia-Pacific) Pte. Ltd. | Launching applications on an electronic device |
US20140101370A1 (en) | 2012-10-08 | 2014-04-10 | HGST Netherlands B.V. | Apparatus and method for low power low latency high capacity storage class memory |
US9330736B2 (en) | 2012-11-09 | 2016-05-03 | Qualcomm Incorporated | Processor memory optimization via page access counting |
US20140189204A1 (en) | 2012-12-28 | 2014-07-03 | Hitachi, Ltd. | Information processing apparatus and cache control method |
US9652376B2 (en) | 2013-01-28 | 2017-05-16 | Radian Memory Systems, Inc. | Cooperative flash memory control |
US9229854B1 (en) | 2013-01-28 | 2016-01-05 | Radian Memory Systems, LLC | Multi-array operation support and related devices, systems and software |
CN103174406B (zh) | 2013-03-13 | 2015-12-02 | 吉林大学 | 一种油页岩地下原位加热的方法 |
US20140351151A1 (en) * | 2013-05-23 | 2014-11-27 | International Business Machines Corporation | Providing a lease period determination |
KR20150044370A (ko) | 2013-10-16 | 2015-04-24 | 삼성전자주식회사 | 이종 메모리들을 관리하는 시스템들 |
CN105612499B (zh) | 2013-10-29 | 2018-11-13 | 华中科技大学 | 混合高速缓存管理 |
US9619155B2 (en) | 2014-02-07 | 2017-04-11 | Coho Data Inc. | Methods, systems and devices relating to data storage interfaces for managing data address spaces in data storage devices |
WO2015132873A1 (ja) * | 2014-03-04 | 2015-09-11 | 株式会社 東芝 | 階層化ブロックストレージ装置を有するコンピュータシステム、ストレージコントローラ、及びプログラム |
JP6118285B2 (ja) | 2014-03-20 | 2017-04-19 | 株式会社東芝 | キャッシュメモリシステムおよびプロセッサシステム |
US10108220B2 (en) | 2014-05-01 | 2018-10-23 | Wisconsin Alumni Research Foundation | Computer architecture having selectable, parallel and serial communication channels between processors and memory |
US9450879B2 (en) | 2014-05-09 | 2016-09-20 | Nexgen Storage, Inc. | Adaptive bandwidth throttling |
US9792227B2 (en) | 2014-08-19 | 2017-10-17 | Samsung Electronics Co., Ltd. | Heterogeneous unified memory |
WO2016041156A1 (zh) | 2014-09-17 | 2016-03-24 | 华为技术有限公司 | Cpu调度的方法和装置 |
JP2016085677A (ja) | 2014-10-28 | 2016-05-19 | 富士通株式会社 | メモリ管理方法、メモリ管理プログラム及び情報処理装置 |
KR20160052240A (ko) * | 2014-11-04 | 2016-05-12 | 삼성전자주식회사 | 복수의 메모리 장치들을 관리하기 위한 방법 및 장치 |
US9977734B2 (en) | 2014-12-11 | 2018-05-22 | Toshiba Memory Corporation | Information processing device, non-transitory computer readable recording medium, and information processing system |
US9766819B2 (en) | 2014-12-30 | 2017-09-19 | Sandisk Technologies Llc | Systems and methods for managing storage endurance |
US10691375B2 (en) | 2015-01-30 | 2020-06-23 | Hewlett Packard Enterprise Development Lp | Memory network to prioritize processing of a memory access request |
WO2016134035A1 (en) | 2015-02-17 | 2016-08-25 | Coho Data, Inc. | Virtualized application-layer space for data processing in data storage systems |
US10049035B1 (en) | 2015-03-10 | 2018-08-14 | Reniac, Inc. | Stream memory management unit (SMMU) |
JP6384375B2 (ja) | 2015-03-23 | 2018-09-05 | 富士通株式会社 | 情報処理装置、記憶装置制御方法、記憶装置制御プログラム及び情報処理システム |
US10331384B2 (en) * | 2015-03-31 | 2019-06-25 | International Business Machines Corporation | Storing data utilizing a maximum accessibility approach in a dispersed storage network |
US10157008B2 (en) | 2015-04-29 | 2018-12-18 | Qualcomm Incorporated | Systems and methods for optimizing memory power consumption in a heterogeneous system memory |
WO2016194102A1 (ja) | 2015-06-01 | 2016-12-08 | 株式会社日立製作所 | 計算機システム、計算機、及び方法 |
JP6403162B2 (ja) | 2015-07-23 | 2018-10-10 | 東芝メモリ株式会社 | メモリシステム |
US9734009B2 (en) | 2015-10-08 | 2017-08-15 | Sandisk Technologies Llc | Data encoding techniques for a device |
US10289722B2 (en) | 2015-11-17 | 2019-05-14 | Samsung Electronics Co., Ltd. | System and methods for multi-level key-value store |
US10216643B2 (en) | 2015-11-23 | 2019-02-26 | International Business Machines Corporation | Optimizing page table manipulations |
US10248447B2 (en) | 2015-11-25 | 2019-04-02 | Red Hat, Inc. | Providing link aggregation and high availability through network virtualization layer |
US20170153892A1 (en) | 2015-11-30 | 2017-06-01 | Intel Corporation | Instruction And Logic For Programmable Fabric Hierarchy And Cache |
US10095413B2 (en) | 2016-01-28 | 2018-10-09 | Toshiba Memory Corporation | Memory system with address translation between a logical address and a physical address |
US10007614B2 (en) | 2016-02-02 | 2018-06-26 | Cavium, Inc. | Method and apparatus for determining metric for selective caching |
JP2017138852A (ja) | 2016-02-04 | 2017-08-10 | 株式会社東芝 | 情報処理装置、記憶装置およびプログラム |
JP2017138823A (ja) | 2016-02-04 | 2017-08-10 | キヤノン株式会社 | 情報処理装置、情報処理方法および撮像装置 |
JP6423809B2 (ja) | 2016-02-19 | 2018-11-14 | イーソル株式会社 | オペレーティングシステム、プログラミングシステム及びメモリ割り当て方法 |
US11977484B2 (en) | 2016-07-19 | 2024-05-07 | Sap Se | Adapting in-memory database in hybrid memory systems and operating system interface |
JP6674101B2 (ja) | 2016-07-27 | 2020-04-01 | 富士通株式会社 | 制御装置および情報処理システム |
US10223228B2 (en) | 2016-08-12 | 2019-03-05 | International Business Machines Corporation | Resolving application multitasking degradation |
JP6666813B2 (ja) | 2016-08-24 | 2020-03-18 | キオクシア株式会社 | 記憶装置及びその制御方法 |
US10372635B2 (en) | 2016-08-26 | 2019-08-06 | Qualcomm Incorporated | Dynamically determining memory attributes in processor-based systems |
JP2018049385A (ja) | 2016-09-20 | 2018-03-29 | 東芝メモリ株式会社 | メモリシステムおよびプロセッサシステム |
JP2018049381A (ja) | 2016-09-20 | 2018-03-29 | 東芝メモリ株式会社 | メモリ制御回路、メモリシステムおよびプロセッサシステム |
US20180173419A1 (en) | 2016-12-21 | 2018-06-21 | Western Digital Technologies, Inc. | Hybrid ssd with delta encoding |
US10409603B2 (en) | 2016-12-30 | 2019-09-10 | Intel Corporation | Processors, methods, systems, and instructions to check and store indications of whether memory addresses are in persistent memory |
JP6391719B2 (ja) | 2017-01-10 | 2018-09-19 | マイクロン テクノロジー, インク. | トレーニング、データ再構築および/またはシャドウィングを含むメモリシステムおよび方法 |
US11886732B2 (en) | 2017-01-31 | 2024-01-30 | Seagate Technology Llc | Data storage server with multi-memory migration |
US10482049B2 (en) | 2017-02-03 | 2019-11-19 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Configuring NVMe devices for redundancy and scaling |
US10866912B2 (en) | 2017-03-10 | 2020-12-15 | Toshiba Memory Corporation | Integrated heterogeneous solid state storage drive |
US10289555B1 (en) * | 2017-04-14 | 2019-05-14 | EMC IP Holding Company LLC | Memory read-ahead using learned memory access patterns |
US10747568B2 (en) | 2017-05-30 | 2020-08-18 | Magalix Corporation | Systems and methods for managing a cloud computing environment |
US10339067B2 (en) | 2017-06-19 | 2019-07-02 | Advanced Micro Devices, Inc. | Mechanism for reducing page migration overhead in memory systems |
KR102319189B1 (ko) | 2017-06-21 | 2021-10-28 | 삼성전자주식회사 | 스토리지 장치, 이를 포함하는 스토리지 시스템 및 스토리지 장치의 동작 방법 |
CN110753910A (zh) | 2017-06-22 | 2020-02-04 | 瑞典爱立信有限公司 | 用于在数据中心中分配存储器的设备和方法 |
US10310985B2 (en) * | 2017-06-26 | 2019-06-04 | Ati Technologies Ulc | Systems and methods for accessing and managing a computing system memory |
US10642744B2 (en) | 2017-06-28 | 2020-05-05 | Nvidia Corporation | Memory type which is cacheable yet inaccessible by speculative instructions |
US10152428B1 (en) | 2017-07-13 | 2018-12-11 | EMC IP Holding Company LLC | Virtual memory service levels |
US10540203B2 (en) | 2017-08-29 | 2020-01-21 | Micro Focus Llc | Combining pipelines for a streaming data system |
US20190095329A1 (en) * | 2017-09-27 | 2019-03-28 | Intel Corporation | Dynamic page allocation in memory |
CN109656833B (zh) | 2017-10-12 | 2022-11-11 | 慧荣科技股份有限公司 | 数据储存装置 |
US10678703B2 (en) | 2017-11-16 | 2020-06-09 | Micron Technology, Inc. | Namespace mapping structual adjustment in non-volatile memory devices |
US11138121B2 (en) * | 2017-11-20 | 2021-10-05 | Samsung Electronics Co., Ltd. | Systems and methods for efficient cacheline handling based on predictions |
US11231852B2 (en) | 2017-12-18 | 2022-01-25 | Microsoft Technology Licensing, Llc | Efficient sharing of non-volatile memory |
US20190213165A1 (en) | 2018-01-09 | 2019-07-11 | Qualcomm Incorporated | Priority scheme for fast arbitration procedures |
US11416395B2 (en) | 2018-02-05 | 2022-08-16 | Micron Technology, Inc. | Memory virtualization for accessing heterogeneous memory components |
US10528489B2 (en) | 2018-02-28 | 2020-01-07 | Micron Technology, Inc. | Multiple memory type memory module systems and methods |
JP6508382B1 (ja) | 2018-03-26 | 2019-05-08 | 日本電気株式会社 | 情報処理装置、情報処理方法、プログラム |
US20190370043A1 (en) | 2018-04-30 | 2019-12-05 | Nutanix, Inc. | Cooperative memory management |
KR102518095B1 (ko) * | 2018-09-12 | 2023-04-04 | 삼성전자주식회사 | 스토리지 장치 및 시스템 |
US10795586B2 (en) * | 2018-11-19 | 2020-10-06 | Alibaba Group Holding Limited | System and method for optimization of global data placement to mitigate wear-out of write cache and NAND flash |
US11144231B2 (en) | 2018-12-12 | 2021-10-12 | International Business Machines Corporation | Relocation and persistence of named data elements in coordination namespace |
WO2020142431A1 (en) | 2019-01-02 | 2020-07-09 | Formulus Black Corporation | Systems and methods for memory failure prevention, management, and mitigation |
US11307768B2 (en) | 2019-06-07 | 2022-04-19 | Seagate Technology Llc | Namespace auto-routing data storage system |
US10963396B1 (en) | 2019-09-17 | 2021-03-30 | Micron Technology, Inc. | Memory system for binding data to a memory namespace |
US11494311B2 (en) | 2019-09-17 | 2022-11-08 | Micron Technology, Inc. | Page table hooks to memory types |
US11650742B2 (en) | 2019-09-17 | 2023-05-16 | Micron Technology, Inc. | Accessing stored metadata to identify memory devices in which data is stored |
US11269780B2 (en) | 2019-09-17 | 2022-03-08 | Micron Technology, Inc. | Mapping non-typed memory access to typed memory access |
US11899952B2 (en) | 2020-10-29 | 2024-02-13 | Seagate Technology Llc | Lossless namespace metadata management system |
US20220147279A1 (en) | 2020-11-06 | 2022-05-12 | Seagate Technology Llc | Heat management solid-state data storage system |
US11474749B2 (en) | 2021-01-21 | 2022-10-18 | EMC IP Holding Company LLC | Configuring host access for virtual volumes |
-
2019
- 2019-09-17 US US16/573,541 patent/US11269780B2/en active Active
-
2020
- 2020-09-07 TW TW109130616A patent/TWI781439B/zh active
- 2020-09-16 EP EP20865596.9A patent/EP4031975A4/en active Pending
- 2020-09-16 JP JP2022517124A patent/JP2022548642A/ja active Pending
- 2020-09-16 WO PCT/US2020/051065 patent/WO2021055471A1/en unknown
- 2020-09-16 CN CN202080064975.4A patent/CN114402306A/zh active Pending
- 2020-09-16 KR KR1020227008386A patent/KR20220045216A/ko unknown
-
2022
- 2022-02-07 US US17/665,823 patent/US11868268B2/en active Active
-
2024
- 2024-01-05 US US18/405,653 patent/US20240152464A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4031975A4 (en) | 2023-10-18 |
US11868268B2 (en) | 2024-01-09 |
WO2021055471A1 (en) | 2021-03-25 |
TW202117536A (zh) | 2021-05-01 |
US20220156201A1 (en) | 2022-05-19 |
JP2022548642A (ja) | 2022-11-21 |
US11269780B2 (en) | 2022-03-08 |
EP4031975A1 (en) | 2022-07-27 |
TWI781439B (zh) | 2022-10-21 |
KR20220045216A (ko) | 2022-04-12 |
US20240152464A1 (en) | 2024-05-09 |
US20210081326A1 (en) | 2021-03-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI781439B (zh) | 映射未經分類之記憶體存取至經分類之記憶體存取 | |
US11494311B2 (en) | Page table hooks to memory types | |
CN114402282B (zh) | 存取存储的元数据以识别存储数据的存储器装置 | |
US10691611B2 (en) | Isolated performance domains in a memory system | |
TWI764265B (zh) | 用於將資料連結至記憶體命名空間的記憶體系統 |
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 |