CN115617503A - 用于异构存储器系统中的负载均衡的系统和方法 - Google Patents
用于异构存储器系统中的负载均衡的系统和方法 Download PDFInfo
- Publication number
- CN115617503A CN115617503A CN202210832184.2A CN202210832184A CN115617503A CN 115617503 A CN115617503 A CN 115617503A CN 202210832184 A CN202210832184 A CN 202210832184A CN 115617503 A CN115617503 A CN 115617503A
- Authority
- CN
- China
- Prior art keywords
- storage device
- memory
- load balancing
- storage
- statement
- 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
- 238000000034 method Methods 0.000 title claims description 79
- 230000005012 migration Effects 0.000 claims description 38
- 238000013508 migration Methods 0.000 claims description 38
- 230000008569 process Effects 0.000 claims description 26
- 230000001427 coherent effect Effects 0.000 claims description 18
- 238000004519 manufacturing process Methods 0.000 description 29
- 238000013507 mapping Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 11
- 239000007787 solid Substances 0.000 description 10
- 238000013519 translation Methods 0.000 description 9
- 230000004044 response Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 230000003993 interaction Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000029305 taxis Effects 0.000 description 1
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/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
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0626—Reducing size or complexity of storage systems
-
- 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
-
- 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/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0617—Improving the reliability of storage systems in relation to availability
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- 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
-
- 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/10—Providing a specific technical effect
- G06F2212/1056—Simplification
-
- 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/72—Details relating to flash memory management
- G06F2212/7202—Allocation control and policies
-
- 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/72—Details relating to flash memory management
- G06F2212/7207—Details relating to flash memory management management of metadata or control data
-
- 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/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
-
- 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/72—Details relating to flash memory management
- G06F2212/7211—Wear leveling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Computer Networks & Wireless Communication (AREA)
Abstract
公开了一种系统。该系统可以包括处理器和连接到处理器的存储器。第一存储设备可以连接到处理器。第一存储设备可以包括第一存储部分,该第一存储部分可以包括存储页。第一存储部分可以扩展存储器。第二存储设备也可以连接到处理器。第二存储设备还可以包括第二存储部分。第二存储部分也可以扩展存储器。负载均衡守护进程可以至少部分地基于第一存储设备的第一更新计数和第二存储设备的第二更新计数,将存储器页从第一存储设备的第一存储部分迁移到第二存储设备的第二存储部分。
Description
相关申请数据
本申请要求2021年07月15日提交的、序列号63/222,406的美国临时专利申请和2021年10月26日提交的、序列号17/511,540的美国专利申请的权益,这些专利申请为所有目的通过引用并入于此。
技术领域
本公开一般地涉及计算机系统,并且更具体地涉及使用存储设备来扩展系统存储器的计算机系统。
背景技术
包括多个存储设备的计算机系统可能具有不同的工作负载。一个存储设备可能比另一个存储设备花费更多的时间来写入数据。对于其中写入数据可能比读取数据花费更长时间的存储设备,诸如固态驱动器(SSD),这种工作负载不均衡可能导致计算机系统的整体性能降低。
仍然存在均衡跨存储设备的负载的需要。
附图说明
下面描述的附图是可以如何实施本公开的实施例的示例,并且不旨在限制本公开的实施例。本公开的各个实施例可以包括在特定附图中未示出的元件和/或可以省略在特定附图中示出的元件。附图旨在提供图示,并且可能不按比例。
图1示出了根据本公开的实施例的包括存储设备的系统,该存储设备可以用于异构存储器系统中的负载均衡。
图2示出了根据本公开的实施例的图1的机器的细节。
图3示出了根据本公开的实施例的支持负载均衡的固态驱动器(SSD)。
图4示出了根据本公开的实施例的应用、图1的存储器和图1的存储设备之间的交互的高级视图。
图5示出了根据本公开的实施例,图3的闪存转换层(FTL)中的逻辑到物理地址表的更新。
图6示出了根据本公开的实施例的图3的主机管理的设备存储器(HDM)的细节。
图7示出了根据本公开的实施例的图1的页表的细节。
图8示出了根据本公开的实施例的图1的页表的示例实施方式。
图9示出了根据本公开的实施例,在异构存储器系统中执行负载均衡的图1的负载均衡守护进程(daemon)。
图10示出了根据本公开的实施例的图1的存储设备的部分。
图11示出了根据本公开的实施例的图1的负载均衡守护进程的细节。
图12示出了根据本公开的实施例的在图1的系统中执行负载均衡的过程的流程图。
图13A示出了根据本公开的实施例的在图1的系统中执行负载均衡的示例过程的替选流程图。
图13B继续根据本公开的实施例在图1的系统中执行负载均衡的示例过程的替选流程图。
图14示出了根据本公开的实施例,用于图1的负载均衡守护进程在图1的系统中标识在其间可以迁移存储器页的存储设备的示例过程的流程图。
图15示出了根据本公开的实施例,用于图1的负载均衡守护进程在图1的系统中选择要迁移的存储器页的示例过程的流程图。
图16示出了根据本公开的实施例,用于图1的负载均衡守护进程在图1的系统中标识用于迁移的存储设备或存储器页的替选过程的流程图。
图17示出了根据本公开的实施例,用于在图1的系统中发生的存储器页的迁移的过程的流程图。
发明内容
本公开的实施例包括负载均衡守护进程。负载均衡守护进程可以标识从其迁移页的存储设备,以及存储设备上要迁移的页。负载均衡守护进程还可以标识页可以迁移到的另一个存储设备。负载均衡守护进程然后可以管理从第一存储设备到第二存储设备的页的迁移。
具体实施方式
现在将详细地参考本公开的实施例,其示例在附图中示出。在以下的详细描述中,阐述了许多具体细节,以使得能够彻底的理解本公开。然而,应当理解,本领域普通技术人员可以在没有这些具体细节的情况下实践本公开。在其他情况下,没有详细地描述公知的方法、过程、组件、电路和网络,以免不必要地模糊实施例的方面。
将理解的是,尽管术语第一、第二等可以在本文中用来描述各种元件,但是这些元件不应当被这些术语所限制。这些术语仅用来将一个元件与另一个元件相区分。例如,在不脱离本公开的范围的情况下,第一模块可以被称为第二模块,并且类似地,第二模块可以被称为第一模块。
对本文公开的描述中使用的术语仅用于描述特定实施例的目的,并且不旨在限制本公开。当在对本公开和所附权利要求的描述中使用时,单数形式“一”、“一个”和“该”也旨在包括复数形式,除非上下文清楚地指出不是这样。还将理解的是,本文使用的术语“和/或”指代并且包含相关联列举的项目中的一个或多个的任何和所有可能的组合。还将理解的是,术语“包括”和/或“包含”当在本说明书中使用时,指定所陈述的特征、整数、步骤、操作、元件和/或组件的存在,但是不排除一个或多个其他特征、整数、步骤、操作、元件、组件和/或其分组的存在或添加。附图的组件和特征不一定按比例绘制。
计算机系统可以包括不同形式的用于数据的存储装置。通常,计算机系统包括主机存储器(其可以是易失性存储装置,意味着如果电力中断,则存储在其中的信息可能丢失)和存储设备(其可以是非易失性存储器,意味着即使电力中断,存储在其中的信息也可以保留)。
这些不同形式的存储装置可能具有不同的优点和缺点。例如,主机存储器除了如果电力中断则数据丢失的风险之外,大量购买可能更加昂贵,但是可能具有相对地快的(读取和/或写入数据)响应时间。另一方面,非易失性存储装置如果电力中断则不可能丢失数据,并且可以廉价地大量购买,但是可能具有较慢的响应时间。
一些计算机系统尝试将所有存储装置(系统存储器和存储设备)呈现为一个扩展存储装置。应用可以在不知道数据究竟存储在哪里的情况下,以扩展存储装置观点从该的地址读取或向其写入:计算机系统可以管理这些细节。
但是针对与读取数据相比具有更慢的写入数据响应时间的存储设备,尤其是固态驱动器(SSD),花费大量时间写入数据的存储设备可能最终减慢发送到该存储设备的读取请求。如果存在其他存储设备可用,并且这些其他存储设备具有较小的负载,则系统的整体性能可能由于一个存储设备处理大量写入请求而降低。
基于数据被存储在存储设备内的哪里的更新,通过标识最繁忙和最空闲的设备,本公开的实施例解决了这些问题。如果最繁忙和最空闲设备之间的工作负载的差异超过阈值,则热页(hot page)可以从最繁忙的设备迁移到最空闲的设备,以尝试平衡它们的相对负载并且提高整体系统性能。
图1示出了根据本公开的实施例的包括可以用于异构存储器系统中的负载均衡的存储设备的系统。在图1中,机器105(也可以被称为主机、主机机器或主机计算机)可以包括处理器110(也可以被称为主机处理器)、存储器115(也可以被称为主机存储器)和存储设备120。处理器110可以是任何种类的处理器。(为了便于说明,处理器110连同下面讨论的其他组件被示出在机器外部:本公开的实施例可以在机器内包括这些组件。)虽然图1示出了单个处理器110,但是机器105可以包括任何数量的处理器,每个处理器可以是单核或多核处理器,每个处理器可以实施精简指令集计算机(RISC)架构或复杂指令集计算机(CISC)架构(以及其他可能性),并且可以以任何期望的组合混合。
处理器110可以耦合到存储器115。存储器115可以是任何种类的存储器,诸如闪速存储器、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、永久随机存取存储器、铁电随机存取存储器(FRAM);或非易失性随机存取存储器(NVRAM),诸如磁阻随机存取存储器(MRAM)等。存储器115也可以是不同存储器类型的任何期望的组合,并且可以由存储器控制器125管理。存储器115可以用于存储可以被称为“短期”的数据:即,不期望被存储延长的(extended)时间段的数据。短期数据的示例可以包括临时文件、由应用在本地使用的数据(其可能已经从其他存储位置复制)等。
处理器110和存储器115还可以支持操作系统,在该操作系统下可以运行各种应用。这些应用可以发出请求(也可以被称为命令),以从存储器115或存储设备120-1和/或120-2(可以被统称为存储设备120)读取数据或向其写入数据。可以使用设备驱动器(driver)130来访问存储设备120。虽然图1使用通用术语“存储设备”,但是本公开的实施例可以包括可以受益于使用负载均衡的任何存储设备格式,其示例可以包括硬盘驱动器和固态驱动器(SSD)。以下对“SSD”或任何其他特定形式的存储设备的任何引用应当被理解为包括本公开的这些其他实施例。另外,虽然图1示出了两个存储设备120,但是本公开的实施例可以包括任何数量(一个或多个)的存储设备。此外,虽然图1示出了两个存储设备120两者均使用单个设备驱动器130来访问,但是本公开的实施例可以包括使用不同的设备驱动器130来访问不同的存储设备120。
在本公开的一些实施例中,存储设备120可以与存储器115结合使用,以作为异构存储器系统进行操作。在异构存储器系统中,应用可以使用与应用相关联的虚拟地址发出加载(load)和/或存储请求。然后,系统可以使用页表135来确定数据实际存储在哪里:存储器115、存储设备120-1或存储设备120-2。然后,系统可以如请求地加载或存储数据,而应用不知道存储数据的实际位置。页表135可以存储在存储器115中(如图所示),即使存储设备120-1和120-2可以被用于扩展存储器115以实施异构存储器系统,该异构存储器系统使用例如高速缓存一致互连协议,诸如Compute Express(CXL,计算快速链接)协议,以向应用呈现组合的存储器(Compute Express Link是Compute Express Link Consortium公司的注册商标)。
如下面参考图3和图7所讨论地,在本公开的一些实施例中,存储数据的物理设备——存储器115、存储设备120-1或存储设备120-2——可以通过虚拟地址所映射到的地址来暗示,并且因此,页表135可以仅存储地址而不还标识存储数据的特定设备。在本公开的其他实施例中,页表135可以包括链接,例如链接140-1和140-2,其指向在异构存储器系统中使用的各种设备。这些链接140-1和140-2可以被绑定到页表135中的特定条目,以指示哪些条目标识存储在特定设备上的数据。
在理想情况下,数据将以相等的频率被读取和/或写入。但是从实践的角度来看,并不是所有的数据都被平等地处理,即使是由单个应用处理。一些数据可以被写入一次并且被读取多次;其他数据可以重复地写入。例如,应用可以存储临时数据,诸如中间计算结果。随着中间结果被更新,应用可以存储更新的结果。该处理可以继续,直到确定最终结果,在该点处可以存储最终结果。
因为不同的应用可能不同地使用数据——并且单个应用可能不同地使用多个数据——所以可能发生的是:不同的存储器地址经受不同级别(和类型)的活动。例如,在诸如图1所示的异构存储器系统中,存储设备120-1可能变得繁忙,而存储设备120-2可能空闲。由于写入操作——特别是对于SSD——可能比读操作花费更多的时间,所以如果期望存储设备120-1处理写入请求和读取请求两者,则那些读取请求可能被延迟;而如果数据反而被写入到存储设备120-2,则读取请求可以被更快地处理。
负载均衡守护进程(daemon)145可以管理存储设备120,从而以尝试均衡存储设备120上的负载的方式来分发数据。(由于存储器115和存储设备120可以用于呈现异构存储器系统,所以负载均衡守护进程145也可以管理存储器115上的负载。)
图2示出了根据本公开的实施例的图1的机器105的细节。在图2中,通常,机器105包括一个或多个处理器110,该处理器110可以包括存储器控制器125和时钟205,其可以用于协调机器的组件的操作。处理器110还可以耦合到存储器115,作为示例,存储器115可以包括随机存取存储器(RAM)、只读存储器(ROM)或其他状态保存介质。处理器110还可以耦合到存储设备120和网络连接器210,该网络连接器210可以是例如以太网连接器或无线连接器。处理器110还可以连接到总线215,用户接口220和可以使用I/O引擎225管理的输入/输出(I/O)接口端口以及其他组件可以附接到总线215。
图3示出了根据本公开的实施例的支持负载均衡的固态驱动器(SSD)。在图3中,SSD 120可以包括接口305。接口305可以是被用来将SSD 120连接到图1的机器105的接口。SSD 120可以包括多于一个的接口305:例如,一个接口可以被用于加载和存储(当SSD 120的一部分或全部被用来扩展图1的存储器115时所发出的)请求,另一个接口可以被用于基于块的读取和写入请求,以及第三接口可以被用于键值读取和写入请求。虽然图3表明接口305是图1的SSD 120和机器105之间的物理连接,但是接口305也可以表示可以跨通用(common)物理接口使用的协议差异(protocol difference)。例如,SSD 120可以使用U.2或M.2连接器连接到机器105,但是可以支持加载/存储请求、基于块的请求和键值请求:处理不同类型的请求可以由不同的接口305来执行。
SSD 120还可以包括可以管理接口305的主机接口层310。如果SSD 120包括多于一个的接口305,则单个主机接口层310可以管理所有接口,SSD 120可以包括用于每个接口的主机接口层,或者可以使用其某些组合。
SSD 120还可以包括SSD控制器315、各种通道320-1、320-2、320-3和320-4,沿着通道可以排列各种闪速存储器芯片325-1、325-2、325-3、325-4、325-5、325-6、325-7和325-8。SSD控制器315可以管理沿着通道320-1至320-4向闪速存储器芯片325-1至325-8发送读取请求和写入请求。尽管图3示出了四个通道和八个闪速存储器芯片,但是本公开的实施例可以包括任何数量(一个或多个,无限制)的通道,该通道包括任何数量(一个或多个,无限制)的闪速存储器芯片。
在每个闪速存储器芯片内,空间可以被组织为块,块可以被进一步细分为页并且可以被分组为超级块。页大小可以根据需要变化:例如,页可以是4KB的数据。如果少于一整页要被写入,则多余的(excess)空间是“未使用的”。块可以包含任何数量的页:例如,128或256。而超级块可以包含任何数量的块。闪速存储器芯片可能不将数据组织为超级块,而只是组织为块和页。
虽然可以写入和读取页,但SSD通常不允许覆盖(overwrite)数据:也就是说,现有数据不可以被新数据“就地”替换。相反,当要更新数据时,新数据会写入到SSD上的新页,而原始页会失效(标记为准备擦除)。因此,SSD页通常具有三种状态之一:空闲(准备好被写入)、有效(包含有效数据)和无效(不再包含有效数据,但在被擦除之前不可用)(这些状态的确切名称可能变化)。
然而,虽然页可以单独地写入和读取,但是块是可以擦除的数据的基本单位。也就是说,页不是单独地被擦除:块中的所有页通常同时被擦除。例如,如果块包含256页,那么块中的所有256页同时被擦除。这种安排可能导致针对SSD的一些管理问题:如果选择擦除仍包含一些有效数据的块,则在该块可以被擦除之前,该有效数据可能需要被复制到SSD上其他地方的空白页。(在本公开的一些实施例中,擦除单位可以不同于块:例如,可以是超级块,如上所述,超级块可以是多个块的集合。)
因为写入数据和擦除数据的单位不同(页与块),所以如果在擦除块前,SSD等待直到该块仅包含无效数据,则SSD可能会耗尽可用的存储空间,即使有效数据量可能少于SSD宣传的容量。为了避免这种情况,SSD控制器315可以包括垃圾收集控制器(图3中未示出)。垃圾收集的功能可以是:标识包含所有或几乎所有无效页的块,并且释放这些块,使得有效数据可以再次被写入其中。但是如果被选择用于垃圾收集的块包括有效数据,则该有效数据将被垃圾收集逻辑擦除(因为擦除的单位是块,而不是页)。为了避免这些数据丢失,垃圾收集逻辑可以将有效数据从这些块中编程到其他块中。一旦数据已经被编程到新的块中(并且将逻辑块地址(LBA)映射到物理块地址(PBA)的表被更新以反映数据的新位置),则该块可以被擦除,将该块中的页的状态返回到空白状态。
SSD还具有在单元可能不被信任为正确地保持数据之前每个单元可以被写入的有限次数。该数量通常被测量为单元经历的编程/擦除循环的数量的计数。通常,单元可以支持的编程/擦除循环的数量意味着SSD将在合理的时间段保持可靠的功能:对于个人用户,比因为已经超过了编程/擦除循环的数量,用户可能更有可能由于存储容量不足而替换SSD。但是在数据可能被更加频繁地写入和擦除的企业环境中,单元超过其编程/擦除循环计数的风险可能更加显著。
为了帮助抵消这种风险,SSD控制器315可以采用损耗平衡控制器(图3中未示出)。损耗平衡可以涉及基于块的编程/擦除循环计数来选择数据块以编程数据。通过选择具有较低编程/擦除循环计数的块来编程新的数据,SSD可以能够避免增加超过其可靠操作点的一些块的编程/擦除循环计数。通过将每个块的损耗等级保持为尽可能的接近,SSD可以在更长的时间段保持可靠。
SSD控制器315可以包括主机管理的设备存储器(HDM)330和闪存转换层(FTL)335(对于不使用闪速存储装置的存储设备,其可以更一般地称为转换层)。当在异构存储器系统中使用时,SSD 120可以使用HDM 330向图1的处理器110呈现存储器地址的范围。以这种方式,图1的处理器110可以发出加载和/或存储请求,而不关心数据实际存储在哪里。例如,考虑诸如图1的机器105的系统,包括图1的8千兆字节(GB)的存储器115和SSD 120上的16GB的存储装置。在这样的系统中,图1的处理器110可以能够在范围从0x0 0000 0000到0x5FFFF FFFF的地址中加载和/或存储数据,其中地址0x0 0000 0000到0x1 FFFF FFFF是图1的存储器115内的地址,并且地址0x2 0000 0000到0x5 FFFF FFFF是SSD 120内的地址。给定特定的存储器地址,SSD 120可以确定存储数据的适当的块,并且可以基于所提供的存储器地址按照图1的处理器110的请求读取和/或写入数据。
在本公开的一些实施例中,SSD 120中的所有可用存储装置可以暴露给图1的处理器110,以扩展图1的存储器115。换句话说,如果SSD 120提供总共16GB的存储装置,则HDM330可以管理对定义的存储器地址范围中的任何地址的加载和/或存储请求。在本公开的其他实施例中,由SSD 120提供的存储装置的一部分可以用于扩展图1的存储器115,而由SSD120提供的存储装置的另一部分可以由向SSD 120发出读取和/或写入请求的应用直接地访问(而不是加载和/或存储请求,其可以由图1的存储器控制器125首先处理)。在本公开的这样的实施例中,可以使用HDM 330暴露的地址的范围可以小于SSD 120的可用存储装置。
HDM 330可以被认为在FTL 335之“上”操作。也就是说,HDM 330可以使用由图1的处理器110(或运行在处理器110上的应用)确定的并且使用图1的页表135处理的地址,而不是使用数据实际存储在SSD 120上的物理地址(由FTL 335确定)。
在本公开的一些实施例中,HDM 330可以能够直接地处理对任何支持的存储器地址的访问。但是在本公开的其他实施例中(例如,在可以使用块寻址而不是字节寻址的诸如SSD 120的存储设备中),HDM 330可以包括缓冲区(图3中未示出)。该缓冲区可以是例如SSD120内的DRAM存储装置。当加载或存储请求被发送到SSD 120时,HDM 330可以尝试从缓冲区访问数据。如果数据当前不在缓冲区中,则SSD 120可以向闪速存储器芯片325-1至325-8提交(commit)任何未完成的存储请求,并且然后可以将来自闪速存储器芯片325-1至325-8的新的数据区段(section)加载到缓冲区中。
缓冲区的大小可以是SSD 120所提供的存储装置的任何期望部分(fraction)。例如,缓冲区可以是被用作异构存储器的SSD 120所提供的存储装置的1/10:如果SSD 120支持总共16GB的存储装置用于异构存储器,则缓冲区的大小可以是1.6GB。如果DRAM用于缓冲区,则本公开的这样实施例可以在支持字节寻址和用作缓冲区的DRAM的成本之间提供平衡。缓冲区也可以是任何种类的易失性存储器或非易失性存储器。下面将参考图6进一步讨论HDM 330。
FTL 335可以处理LBA或其他逻辑ID(如由图1的处理器110所使用的)与PBA或其他物理地址的转换,在该PBA或其他物理地址中数据存储在闪速存储器芯片325-1至325-8中。FTL 335还可以负责将数据从一个PBA重新定位到另一个PBA,如在执行垃圾收集和/或损耗平衡时可能发生地那样。下面将参考图4至图6进一步讨论FTL 335。
SSD控制器315还可以包括处理器340。处理器340可以是SSD 120的本地处理器,其可以从SSD 120内提供一些计算能力。处理器340是可选的,如虚线边框所示。
如果包括处理器340,则处理器340可以包括高速缓存345。高速缓存345可以类似于传统的高速缓存进行操作,提供更接近处理器340(并且可能比处理器340更快)的存储装置。但是如果高速缓存345用于存储也存储在闪速存储器芯片325-1至325-8中的信息,则这产生了潜在的问题。如果高速缓存345中的数据被更新但是没有被立即地冲刷(flush),则可能的是:通过HDM 330访问的闪速存储器芯片325-1至325-8中的(当前被高速缓存的)数据相对于高速缓存345中存储的值可能是陈旧的。由于图1的负载均衡守护进程145可能访问闪速存储器芯片325-1至325-8,而是不访问高速缓存345,所以图1的负载均衡守护进程145可能在其计算中使用陈旧的数据。这个问题的解决方案可以是:使得通过HDM 330访问的数据不可缓存(即,通过HDM 330访问的数据可以不存储在高速缓存345中),或者确保对高速缓存345中的数据的任何更新被自动地冲刷到闪速存储器芯片325-1至325-8。
最终,SSD控制器315还可以包括中断逻辑350。在本公开的一些实施例中,图1的负载均衡守护进程145可以不访问HDM 330,并且因此,可以向SSD 120查询(或轮询)其当前信息,而不是试图通过HDM 330访问该信息。然后,中断逻辑350可以通过例如中断图1的负载均衡守护进程145来向图1的负载均衡守护进程145提供所请求的信息。中断逻辑350可以被实施为硬件电路或软件(例如,运行在处理器340上)。中断逻辑350是可选的,如虚线边框所示。注意,中断逻辑350可以使用相同的中断或不同的中断来向图1的负载均衡守护进程145通知各种信息,如下面参考图6所讨论的。
图4示出了根据本公开的实施例的,应用、图1的存储器115和图1的存储设备120之间的交互的高级视图。在图4中,应用405可以向存储器115发出加载或存储请求,和/或向存储设备120发出读取或写入请求。加载或存储请求可以使用虚拟存储器410中的虚拟存储器地址。存储器管理单元415(可以包括图4中未示出的转换缓冲区)可以使用图1的页表135(图4中未示出)来确定主机系统存储器420中与由应用405所使用的虚拟地址相关联的物理地址。
可以看出,主机系统存储器420可以被划分为多个区段。在图4中,主机系统存储器420可以包括:主机存储器地址425,其可以是存储器115内的地址;以及HDM地址430,其可以是HDM 330内的地址。(在包括用于扩展存储器115的多于一个的存储设备120的本公开的实施例中,可能存在与每个存储设备相关联的HDM地址的范围。出于理解的目的,图4仅示出了一个存储设备120和一个HDM地址范围430。)
对于主机存储器地址425中的物理地址,存储器管理单元415可以经由存储器总线向存储器115发出加载或存储请求。对于HDM地址430中的物理地址,存储器管理单元415可以使用例如高速缓存一致互连协议,诸如CXL.mem协议,来发出加载或存储请求。存储设备120可以在存储器接口435处接收这样的加载或存储请求。然后,HDM 330可以被用来从图3的闪速存储器芯片325-1至325-8访问数据。注意,HDM 330可以访问LBA 440中的一些或所有(作为由存储器管理单元415确定的物理地址)。然后,这些LBA 440可以由闪存转换层335映射到PBA 445。
在图4中,应用405也被示出为经由设备驱动器130向存储设备120发出读取或写入请求。这些读取或写入请求可以通过连接到存储设备120的适当的总线从设备驱动器130发送到存储设备120:例如,Peripheral Component Interconnect Express(PCIe,外围组件互连快车)总线。这些读取或写入请求可以由主机接口450接收,该主机接口450可以是例如Non-Volatile Memory Express(NVMe,非易失性存储器快车)接口。然后,存储设备120可以确定LBA 440中的、在读取或写入请求中正在被访问的(一个或多个)LBA。然后,这些LBA可以由闪存转换层335映射到PBA 445。注意,如果存储设备120支持经由存储器接口435和主机接口450两者的访问,则存储设备120可以启用多种模式来访问相同的数据。在本公开的一些实施例中,这可以被阻止:即,可以经由存储器接口435使用加载或存储请求或者经由主机接口450使用读取或写入请求来访问特定的LBA,但是不能使用两者来访问。
图5示出了根据本公开的实施例的,图3的FTL 335中的逻辑到物理地址表的更新。在图5中,图3的SSD 120可以接收存储请求505。存储请求505可以包括要写入的存储器页的地址(回想一下,就考虑图1的处理器110而言,存储请求正在访问图1的存储器115:只是图1的存储设备120正在被用来扩展图1的存储器115)连同数据本身。为了避免混淆“页”是指代存储器的页还是指代图3的闪速存储器芯片325中的块中的页,对“页”(没有修饰语)的引用通常可以理解为指代图3的闪速存储器芯片325中的块中的页,而对“存储器页”的引用通常可以理解为指代存储器中的页(无论是在图1的存储器115内还是在扩展存储器内)。
如上所述,诸如图3的SSD 120的SSD通常不允许数据被就地覆盖。相反,可以使旧数据无效,并且将新数据写入到图3的SSD 120中的新物理块地址(PBA)。由于LBA(就考虑图3的SSD 120而言)仅是标识数据的逻辑地址,所以存储请求505中的存储器页的地址可以被用作LBA。图3的FTL 335可以包括LBA到PBA表510,其可以标识图3的SSD 120上实际存储数据的物理块。以这种方式,应用可以如需要那样频繁地将数据写入到指定的LBA:图3的SSD120可以在LBA到PBA表510中简单地更新数据的存储在哪里,并且应用可以不必处理数据的实际物理地址。
在图5的左侧,可以看到LBA到PBA表510。LBA到PBA表510可以包括各种对,其指定由应用所使用的LBA和实际存储数据的PBA。例如,LBA 515可以被映射到PBA 520,指示由应用使用LBA 515“2”所标识的数据可以被存储在PBA 520“3”中。
当接收到存储请求505时,图3的FTL 335可以更新LBA到PBA表510,如图5的右侧所示。PBA 520“3”可以被PBA 525“6”替换,标识存储数据的新PBA。
虽然图5将LBA到PBA表510示为包括三个条目(将三个LBA映射到三个PBA),但是本公开的实施例可以在LBA到PBA表510中包括任何数量(零个或更多个)的条目。
图6示出了根据本公开的实施例的,图3的HDM 330的一部分的细节。在图6中,除了支持对图3的闪速存储器芯片325-1至325-8中的数据的访问之外,HDM 330还可以存储信息,诸如逻辑到物理更新计数605(其可以被称为更新计数605)和每页610-1至610-6写入计数(其可以被统称为写入计数610)。更新计数605可以对在图3的SSD 120中任何数据(或者至少自上次更新计数605被重置以来)已经被更新的次数进行计数;写入计数610可以对每个相关联的页(或者至少自上次写入计数610被重置以来)已经被更新的次数进行计数。注意,更新计数605和写入计数610可以跟踪与由图1的机器105发送的存储器页地址相关联的信息,而不是由图3的SSD 120使用的PBA(当数据围绕图3的SSD 120移动时,PBA可以改变,但是由机器105使用的存储器页地址可以保持相同)。因此,对“每页写入计数”中的“页”的引用可以被理解为指代存储器页而不是图3的SSD 120上的块中的物理页。但是在本公开的一些实施例中,写入计数610可以与实际存储数据的PBA相关联,而不是与正在被访问的存储器页的地址相关联。
每当接收到新的存储请求时,诸如图5的存储请求505,递增逻辑615可以递增更新计数605以及与正在被更新的存储器页相关联的写入计数610。每个写入计数610可以与特定的存储器页相关联(这种关联未在图6中示出):例如,每个写入计数可以与存储器页相关联,该存储器页按照与图5的LBA到PBA表510中所示出的相同顺序而被用作LBA。因此,例如,当图3的SSD 120接收到图5的存储请求505时,可以是图3的FTL 335的一部分的递增逻辑615可以递增更新计数605和写入计数610-2(与存储器页2相关联的写入计数)。注意,图5的LBA到PBA表510可以存储在HDM 330中,和/或与写入计数610组合,而不是包括两个单独的表的图3的SSD 120。
如上所述,由于SSD擦除块而不是页,有时可能发生有效数据存在于被选择用于垃圾收集的块中,并且这样的数据可能被编程到SSD上的新块中。另外,如上所述,为了在每个单元经历了多少编程/擦除循环方面使闪速存储器的单元保持相对地平衡,有时可能发生的是:由于损耗平衡而将数据移动到另一个块。在本公开的一些实施例中,图3的FTL 335可以对按诸如图5的存储请求505的存储请求数据被写入的次数进行计数,但是可以排除由于垃圾收集和/或损耗平衡的编程操作。在本公开的其他实施例中,图3的FTL335也可以在更新计数605和写入计数610中包括数据由于垃圾收集和/或损耗平衡而被编程的次数。如上所述,更新计数605和写入计数610可以与存储器页而不是PBA相关联,而垃圾收集和/或损耗平衡可以与PBA相关联。但是因为存储器页地址可以被图3的SSD 120用作LBA,并且因为图3的FTL 335可以被用来进行基于LBA确定PBA和基于PBA确定LBA两者,所以在本公开的一些实施例中,对于更新计数605和写入计数610可以基于垃圾收集和/或损耗平衡来跟踪数据编程。
如果图1的存储设备120被用来进行扩展图1的存储器115和允许图4的应用405直接访问两者,则图1的存储设备120可以接收存储请求(诸如存储请求505)和写入请求两者。两种类型的请求之间的差异可以是下述:存储请求可以使用图1的存储设备120作为图1的存储器115的扩展(使用存储器页地址来引用数据),而写入请求可以使用存储设备120作为存储设备(使用LBA来引用数据)。在可以使用存储请求和写入请求两者来访问特定LBA的本公开的实施例中,可以取决于下述实施方式:写入请求是否被认为是对LBA处的、可以触发更新计数605和写入计数610的递增的数据的更新。在本公开的一些实施例中,更新计数605和写入计数610可以仅响应于存储请求而被更新(经由写入请求的更新可以被视为不更新“存储器”中的数据,即使LBA与“存储器”中的数据的LBA相同)。在本公开的其他实施例中,更新计数605和写入计数610可以响应于存储请求和写入请求两者而被更新(将对该LBA处的数据的更新视为更新存储器中的数据,而不管请求所采取的路径)。
因为图3的SSD 120可以包括图3的闪速存储器和FTL 335来跟踪数据物理地存储在图3的SSD 120上的哪里,并且因为闪速存储器可以以不同的粒度级别被编程和擦除,所以图3的SSD 120可以进行跟踪更新计数605和写入计数610所需的大部分:所有需要的只是为这些计数器增加存储装置。诸如硬盘驱动器的其他存储设备可能不一定跟踪这样的信息,例如因为数据可能就地更新。但是在本公开的一些实施例中,这样的其他存储设备类型也可以跟踪更新计数605和写入计数610。
虽然图6将HDM 330示出为包括六个写入计数610-1至610-6,但是本公开的实施例可以在HDM 330中包括任何数量(零个或更多个)的写入计数610,对于每个存储器页地址的一个写入计数610写入到图1的存储设备120。
当更新计数605和写入计数610存储在HDM 330中时,图1的负载均衡守护进程145可以使用标准加载请求来访问更新计数605和写入计数610。注意,HDM 330的一部分(即,图1的存储设备120的存储装置的一部分)可以被保留来存储更新计数605和写入计数610。但是如以上参考图3所讨论地,在本公开的一些实施例中,图1的存储设备120可以使用图3的中断逻辑350来向图1的负载均衡守护进程145提供各种信息。例如,图1的负载均衡守护进程145可以查询更新计数605或写入计数610。在使用中断的本公开的实施例中,图1的存储设备120可以使用图3的中断逻辑350来向图1的负载均衡守护进程145提供这样的信息。这样的信息可以同时地被提供,或者可以在单独的时间被提供。例如,图1的存储设备120可以同时提供更新计数605和写入计数610两者,或者可以在不同的时间提供这样的信息(因为图1的负载均衡守护进程145可能仅对于可以从其迁移数据的繁忙存储设备的写入计数610感兴趣)。如果使用多个中断来提供这样的信息,则中断逻辑350可以使用相同的中断信号或不同的中断信号来提供各种信息。
图7示出了根据本公开的实施例的图1的页表135的细节。如以上所讨论地,异构存储器系统可以将数据存储在图1的存储器115或图1的存储设备120中,而应用不知道数据实际存储在哪里。应用可以使用逻辑地址(被称为“虚拟地址”),然后页表135可以将该逻辑地址映射到存储数据的“物理地址”。术语“物理地址”可以被理解为指代当存储数据时在异构存储器系统中使用的存储器地址。如果数据存储在图1的存储器115中,则“物理地址”可以是存储器115中的实际(物理)地址。但是在数据实际存储在图3的SSD 120上的情况下,存储器页地址可以被图3的SSD 120解释为LBA。因此,“物理地址”还应当被理解为指代当数据被存储在图3的SSD 120或其他存储设备上时的逻辑地址,该其他存储设备可以内部地将逻辑地址映射到存储数据的存储设备中的物理位置。因此,在页表135的上下文中,依赖于存储数据的设备,术语“物理地址”可以指代物理地址或逻辑地址。
因为图1的处理器110可以从异构存储器系统中的任何位置访问数据,并且因为图1的处理器110可以将异构存储器系统的整体视为其为图1的所有存储器115,所以存储在页表中的物理地址可以唯一地标识存储数据的设备。例如,继续上面参考图3描述的情况,页表135可以将图2的应用405使用的虚拟地址映射到地址范围0x0 0000 0000至0x5 FFFFFFFF中的任何物理地址。采用地址0x0 0000 0000至0x1 FFFF FFFF标识存储在图1的存储器115中的数据并且采用地址0x2 0000 0000至0x5 FFFF FFFF标识存储在图3的SSD 120中的数据,任何特定的地址可以与特定的设备(其可以是图1的存储器115或者图1的存储设备120)相关联,并且因此,可以标识存储数据的特定设备。以这种方式,特定的加载或存储请求可以指向适当的设备(例如,通过图1的存储器控制器125)。但是在本公开的一些实施例中,页表135还可以存储标识存储数据的特定设备的信息(这可以加快数据访问,因为可能不需要检查物理地址来确定数据存储在哪里)。
在图7中,页表135被示出为将三个虚拟地址映射到三个物理地址。虚拟地址705-1可以映射到物理地址710-1,虚拟地址705-2可以映射到物理地址710-2,以及虚拟地址705-3可以映射到物理地址710-3。虚拟地址705-1至705-3可以统称为虚拟地址705,并且物理地址710-1至710-3可以统称为物理地址710。虽然图7将页表135示出为包括三个虚拟地址到物理地址的映射,但是本公开的实施例可以在页表135中包括任何数量(零个或更多个)的这样的映射。
在本公开的一些实施例中,由不同应用使用的虚拟地址可以重叠。例如,两个不同的应用可能都使用虚拟地址0x1000。为了避免混淆和避免多个应用访问公共异构存储器系统地址的风险,每个应用可以具有其自己的页表135,将由该应用使用的虚拟地址映射到由图1的机器105使用的物理地址。以这种方式,两个应用可以各自使用虚拟地址0x1000,但是一个应用的虚拟地址0x1000可以映射到例如物理地址0x0 0000 0000,而另一个应用的虚拟地址0x1000可以映射到例如物理地址0x3 0000 0000。
当然,在本公开的一些实施例中,应用可以共享对特定的物理地址的访问,以启用数据共享和/或应用间通信。在这样的情况下,针对每个应用的页表135可以将虚拟地址映射到公共物理地址:这种映射可以来自相同的虚拟地址或不同的虚拟地址。但是这样的情况反映了有意的数据共享,而不是无意的数据共享。
图8示出了根据本公开的实施例的图1的页表135的示例实施方式。在图8中,示出了四个级别的页表135。对于虚拟地址705,一些比特可以用于确定对各种表的偏移:通过使用所有各种表和偏移,可以确定特定的物理地址。例如,比特39至47可以被用作对表805-1的偏移,比特30至38可以被用作对表805-2的偏移,比特21至29可以被用作对表805-3的偏移,比特12至20可以被用作对表805-4的偏移以及比特0至11可以被用作对表805-5的偏移。可以使用图1的处理器110中的寄存器810(可以被称为CR3寄存器)或者通过使用图1的处理器110中的寄存器810内的一些比特来访问表805-1的基地址(base address)。表805-1至805-4中的每个条目可以标识下一个表的基地址,并且表805-5中的条目可以是将由页表135返回的实际物理地址。以这种方式,页表135可以允许访问跨图1的存储器115的大片(large swath)的虚拟地址(如使用图1的存储设备120扩展),而不必存储来自每个可能的虚拟地址的映射(这可能需要大量的图1的存储器115)。
虽然图8示出了使用四个级别的页表的实施方式,该四个级别的页表具有使用9比特偏移访问的52比特条目,但是本公开的实施例可以支持任何期望的页表实施方式,可以包括任何数量(包括一个)的级别(也称为层级)、条目包括任何数量(一个或多个)比特,并且使用任何数量(一个或多个)的比特来确定对表的偏移。
图9示出了根据本公开的实施例,在异构存储器系统中执行负载均衡的图1的负载均衡守护进程145。在图9中,负载均衡守护进程145可以考虑存储设备120上的负载。例如,假设针对存储设备120-1的图6的更新计数605是13,而针对存储设备120-2的图6的更新计数605是2。负载均衡守护进程145可以通过访问来自存储设备120的图3的HDM 330,或者通过向存储设备120轮询图6的更新计数605,来确定针对存储设备120的图6的更新计数605。这些值将意味着,从上次针对存储设备120的图6的更新计数605被重置起,应用已经将更新写入到存储设备120-1上的数据13次,但是应用将更新写入到存储设备120-2上的数据仅两次。负载均衡守护进程145可以访问图6的更新计数605,并且可以根据图6的更新计数605来确定存储设备120上的相对负载。
然后,负载均衡守护进程145可以选择两个存储设备,其中一个可以被标识为“繁忙”存储设备,而另一个可以被标识为“空闲”存储设备。在本公开的一些实施例中,特别是在图1的系统105包括多于两个存储设备120的情况下,负载均衡守护进程可以选择作为“最繁忙”存储设备的一个存储设备120(即,具有最高的图6的更新计数605的存储设备)和作为“最空闲”存储设备的另一个存储设备120(即,具有最低的图6的更新计数605的存储设备);在本公开的其他实施例中,负载均衡守护进程145可以选择两个存储设备,而不一定选择“最繁忙”或“最空闲”的存储设备,而且这两个存储设备也不必相对地“繁忙”或“空闲”。
虽然存储设备120可能相对地“繁忙”或“空闲”,但仅该事实不意味着负载均衡守护进程145自动地需要在存储设备之间迁移数据。例如,假设存储设备120-1具有为2的相关联的图6的更新计数605,并且存储设备120-2具有为1的相关联的图6的更新计数605。将页从存储设备120-1移动到存储设备120-2将改变哪个存储设备是“繁忙”的,但是可能不会提高图1的系统105的整体性能。因此,负载均衡守护进程145可以使用图6的更新计数605来确定相对负载是否证明存储设备120之间迁移数据是合理的。负载均衡守护进程145可以使用任何期望的方法来确定相对负载是否证明迁移是合理的。例如,在选择“繁忙”存储设备和“空闲”存储设备之后,负载均衡守护进程145可以确定针对存储设备的图6的更新计数605之间的差异,并且将该差异与阈值进行比较。如果图6的更新计数605之间的差超过某个阈值,则负载均衡守护进程145可以开始在存储设备120之间迁移一些数据的处理;否则,负载均衡守护进程145可以让存储设备120保持原样。该阈值可以是绝对阈值——例如,如果针对选择的存储设备的图6的更新计数605之间的差异大于10——或者是相对阈值,例如,针对存储设备120-1的图6的更新计数605比针对存储设备120-2的图6的更新计数605大10%。
一旦负载均衡守护进程145确定存储设备120-1具有比存储设备120-2足够更大的负载以证明迁移数据是合理的,则负载均衡守护进程145可以确定存储设备120-1上的(哪些)存储器页要迁移到存储设备120-2。负载均衡守护进程145可以使用任何期望的算法来选择存储器页。例如,负载均衡守护进程145可以尝试标识存储设备120-1上的存储器页的集合,该存储器页的集合如果从存储设备120-1移动到存储设备120-2,则其图6的写入计数610将导致存储设备120-1和120-2的更新计数605大致相等或接近相等。负载均衡守护进程145可以通过访问来自存储设备120的图3的HDM 330,或者通过向存储设备120轮询图6的写入计数610,来确定针对存储设备120的图6的写入计数610。负载均衡守护进程145可以选择例如下述存储器页的集合:该存储器页的集合的图6的写入计数610是用于迁移的存储设备120-1和120-2的图6的更新计数605之间的差异的大约1/2。(针对要迁移的存储器页的图6的写入计数610的总数(total)可以是图6的更新计数605之间的差异的1/2,因为迁移涉及下述两者:从与存储设备120-1相关联的图6的更新计数605中减去图6的那些写入计数610,并且将图6的那些写入计数610相加到与存储设备120-2相关联的图6的更新计数605。)
虽然本公开的实施例可以包括选择任何的存储器页的集合来在存储设备120之间迁移,但是迁移存储器页会花费一些时间,这可能影响对存储设备120-2的其他请求,尤其是其他写入请求。因此,在本公开的一些实施例中,可以在存储设备120之间迁移存储器页的最小集合。为了保持被选择用于迁移的存储器页的数量尽可能小,可以选择具有最大的图6的写入计数610的存储器页。例如,图5的存储器页515可以与图6的写入计数610-2相关联,其可以是存储在存储设备120-1上的存储器页的最大的写入计数:迁移仅一个存储器页可以比迁移具有图6的写入计数610-3、610-4和610-6(总体上(collectively)具有比图6的写入计数610-2更低的写入计数)的存储器页花费更少的时间。因此,如图9所示,负载均衡守护进程145可以指令将存储器页905从存储设备120-1迁移到存储设备120-2,这可以在均衡存储设备120上的负载与最小化在存储设备120之间迁移的存储器页的数量之间取得平衡。
但是如果数据从存储设备120-1迁移到存储设备120-2,并且如果页表135将由应用使用的虚拟地址映射到数据的“物理地址”,则在存储器页905从存储设备120-1迁移到存储设备120-2之后,页表135中的信息可能是过时的(out-of-date)。例如,考虑这样的情况,其中存储器地址0x0 0000 0000至0x1 FFFF FFFF标识存储在图1的存储器115中的数据,地址0x2 00000000至0x3 FFFF FFFF标识存储在存储设备120-1上的数据,以及地址0x400000000至0x5 FFFF FFFF标识存储在存储设备120-2上的数据。如果存储器页905从存储设备120-1迁移到存储设备120-2,而不更新页表135中的物理地址,则存储器地址与设备之间的关系可能被破坏。至少存在两种解决方案来解决这个问题:或者可以更新存储器页地址以反映异构存储器系统中存储数据的新位置,或者页表135可以将图7的虚拟地址705映射到图7的物理地址710和实际存储数据的设备(图1的存储器115、存储设备120-1或存储设备120-2)的标识符。
由于数据正在异构存储器系统内从一个存储器页迁移到另一个存储器页,所以更新页表135中虚拟地址映射到的物理地址是合理的。因此,为了支持应用能够访问其数据,负载均衡守护进程145可以更新页表135中的页表条目910,以反映存储数据的新位置。例如,尽管图7的物理地址710-2指示与图7的虚拟地址705-2相关联的数据先前与存储器页地址5相关联,但是在迁移之后,页表910可以被更新为反映存储器页地址现在是15。但是在本公开的实施例中,异构存储器系统中的任何设备(图1的存储器115、存储设备120-1或存储设备120-2)可以存储具有任何存储器页地址的数据,页表135不仅可以反映存储器页地址,还可以标识存储数据的设备(在图1中象征性地示为链接140)。
在上面的讨论中,负载均衡守护进程145被描述为在存储设备120之间迁移数据。由于负载均衡守护进程120可以关注于均衡存储设备120的负载,所以这是合理的。但是本公开的实施例也可以考虑图1的存储器115上的负载,并且负载均衡守护进程145也可以安排图1的存储器115和存储设备120之间的数据迁移(在任一方向上:将数据移动到图1的存储器115或者从图1的存储器115移动数据)。负载均衡守护进程145可以使用其他阈值来确定数据是否足够热(即,足够频繁地被访问)以证明将数据从存储设备120移动到图1的存储器115是合理的,或者确定数据是否足够冷(即,足够不频繁地被访问)以证明将数据从图1的存储器115移动到存储设备120是合理的。负载均衡守护进程145也可以基于所考虑的设备来使用不同的阈值。例如,用于确定是否将数据从SSD迁移到硬盘驱动器(或存储器)的阈值可能不同于用于将数据从硬盘驱动器(或存储器)迁移到SSD的阈值。或者,阈值可以部分基于设备的特性。例如,较高的阈值可以与这样的设备相关联:该设备可能比其他设备更快地处理请求,而较低的阈值可以与这样的设备相关联:该设备可能比其他设备更慢地处理请求。
上面的讨论还将负载均衡守护进程145描述为关注于向存储设备120发出的写入请求。对于其中写入请求可能比读取请求花费更长时间的存储设备,诸如SSD,均衡写入请求负载可能是合理的。但是在本公开的一些实施例中,负载均衡守护进程145还可以将由读取请求施加的负载考虑在内(factor in)(或者可以仅关注于由读取请求施加的负载)。例如,在其中数据相对静态的系统中,读取请求可能占主导地位。负载均衡守护进程145可以尝试以导致大致相等数量的读取操作的方式跨存储设备120分布数据,这可以提高整体性能。
最后,上述讨论假设存储设备120具有大致相等的性能。也就是说,存储设备120-1写入数据所需的时间量可以预期与存储设备120-2写入数据所需的时间量大致相同,并且对于读取数据是类似的。如果存储设备120的性能可以变化,则负载均衡守护进程145可以将存储设备120执行其操作所需的时间考虑在内。例如,假设存储设备120-1花费平均100微秒(μs)来响应写入请求,并且存储设备120-2花费平均200μs来响应写入请求。如果存储设备120-1已经处理了13个写入请求(基于图6的更新计数605),则存储设备120-1已经花费了大约1300μs(1.3毫秒(ms))来处理写入请求。如果存储设备120-2在相同的时间间隔中仅必须处理2个写入请求,则存储设备120-2已经花费了大约400μs来处理写入请求,并且将一些数据从存储设备120-1迁移到存储设备120-2可能是有利的,即使存储设备120-2可能具有较慢的写入请求响应时间。但是如果存储设备120-2在该时间间隔中必须处理7个写入请求,则存储设备120-2已经花费了大约1400μs(1.4ms)来处理写入请求:比存储设备120-1处理写入请求所花费的时间更多,即使存储设备120-1比存储设备120-2处理了更多的写入请求。在这种情况下,将数据从存储设备120-1迁移到存储设备120-2实际上可能会劣化性能,而不是增强性能。因此,为了在使用不同性能水平的存储设备的系统中操作,估计存储设备120处理写入请求所花费的时间量可以提供比图6的更新计数605更好的分析。以类似的方式,读取性能可以变化,负载均衡守护进程145也可以考虑这点。
负载均衡守护进程145可以周期性地重置图3的HDM 330中的针对存储设备120的图6的更新计数605和/或图6的写入计数610。例如,在负载均衡守护进程145迁移了图1的系统105中的数据之后,负载均衡守护进程145可以重置图3的HDM 330中的针对存储设备120的图6的更新计数605和/或图6的写入计数610,使得负载均衡守护进程145下一次确定是否在存储设备120之间迁移数据时,基于对先前数据迁移之后的图6的更新计数605和图6的写入计数610的分析来做出确定。如果负载均衡守护进程145可以访问图3的HDM 330,则负载均衡守护进程145可以重置图6的更新计数605和/或图6的写入计数610;否则,负载均衡守护进程145可以请求存储设备120来重置图3的HDM 330中图6的更新计数605和/或图6的写入计数610。
还要注意,有时应用可能不再使用特定的数据,并且可能从将其从存储器释放。因为该数据在将来不会被使用,所以与该地址相关联的写入计数可以立即地被重置。另外,因为由图6的更新计数605表示的负载可以将对已经从存储器释放的数据的写入考虑在内,所以对于已经从存储器释放的相关联的存储器页,图6的更新计数605可以减少图6的写入计数610的值。以这种方式,异构存储器系统可以避免可能不反映未来负载的存储设备120上的负载的观察(view)。
虽然图9示出了负载均衡守护进程145将一个存储器页905从存储设备120-1迁移到存储设备120-2,但是本公开的实施例可以支持将任何数量(一个或多个)的页从存储设备120-1迁移到存储设备120-2。另外,如果存储设备120-1和120-2的负载足够接近(在阈值内),则负载均衡守护进程145可以确定当前不需要数据迁移。
图10示出了根据本公开的实施例的图1的存储设备120的部分。在图10中,存储设备120可以包括页1005-1至1005-8。如上所讨论的,页1005-1至1005-8可以被组织为块,这些块转而可以被组织为超级块。
但是除了这种组织之外,存储设备120的不同部分可以被分配给不同的用途。例如,页1005-1至1005-8可以被组织为两个部分1005和1010。部分1005可以与如上所述的异构存储器系统一起使用。部分1010可以由应用按照正常的存储访问来访问。也就是说,应用可以发出读取或写入请求来访问存储在部分1010中的数据,而不是可能看起来指向图1的存储器115的加载或存储请求。虽然图10示出了部分1005和1010没有重叠,但是在本公开的一些实施例中,部分1005和1010可以重叠,使得应用能够使用加载/存储请求和读取/写入请求两者来访问这些重叠页中的数据。也就是说,应用可以使用图4的主机接口450在那些重叠的页中写入数据,并且可以使用图4的存储器接口435和HDM 330读取该数据,或者反之亦然。
虽然以上描述关注于以页为单位的页1005-1至1005-8,但是本公开的实施例可以将其他单位,诸如块或超级块,组织为部分1005和1010。另外,存储设备120可以包括任何数量(一个或多个)的部分,其中没有、一些或所有可以不同程度地重叠。
图11示出了根据本公开的实施例的图1的负载均衡守护进程145的细节。负载均衡守护进程145可以包括访问逻辑1105、迁移逻辑1110、页表更新逻辑1115和重置逻辑1120。访问逻辑1105可以被用来从图1的存储设备120的图3的HDM 330读取数据。迁移逻辑1110可以指令图1的存储设备120按照负载均衡守护进程145的指示迁移图9的存储器页905。当诸如图9的存储器页905的数据从图1的存储设备120-1迁移到图1的存储设备120-2时,页表更新逻辑1115可以更新图1的页表135。重置逻辑1120可以被用来重置图1的存储设备120的图3的HDM 330中的数据。
如以上参考图9所讨论地,在本公开的一些实施例中,负载均衡守护进程145可以向图1的存储设备120轮询图3的HDM 330中的信息,而不是直接地访问这样的数据。在本公开的这些实施例中,负载均衡守护进程145可以包括轮询器1125,轮询器1125可以向存储设备120轮询信息。
图12示出了根据本公开的实施例的在图1的系统中执行负载均衡的过程的流程图。在图12中,在块1205,图1的负载均衡守护进程145可以标识图1的存储设备120-1。图1的负载均衡守护进程145可以使用图11的访问逻辑1105来访问图6的更新计数605,以标识图1的存储设备120-1。在块1210,图1的负载均衡守护进程145可以标识图1的存储设备120-2。图1的负载均衡守护进程145可以使用图11的访问逻辑1105来访问图6的更新计数605,以标识图1的存储设备120-2。在块1215,图1的负载均衡守护进程145可以标识图1的存储设备120-1上的图9的存储器页905。图1的负载均衡守护进程145可以使用图11的访问逻辑1105来访问图6的写入计数610,以标识图9的存储器页905。最后,在块1220,图1的负载均衡守护进程145可以发起图9的存储器页905从图1的存储设备120-1到图1的存储设备120-2的迁移。图3的负载均衡守护进程145可以使用图11的迁移逻辑1110来执行该迁移。
图13A至图13B示出了根据本公开的实施例的在图1的系统中执行负载均衡的示例过程的替选流程图。图13A至图13B类似于图12,但是更加一般化。在图13A中,在块1305,图1的存储设备120可以接收针对图9的存储器页905的图5的存储请求505。在块1310,作为执行图5的存储请求505的一部分,图6的递增逻辑615可以递增图6的更新计数605,并且在块1315,图6的递增逻辑615可以针对被更新的存储器页递增图6的写入计数610。
在块1205,图1的负载均衡守护进程145可以标识图1的存储设备120-1。图1的负载均衡守护进程145可以使用图11的访问逻辑1105来访问图6的更新计数605,以标识图1的存储设备120-1。在块1210,图1的负载均衡守护进程145可以标识图1的存储设备120-2。图1的负载均衡守护进程145可以使用图11的访问逻辑1105来访问图6的更新计数605,以标识图1的存储设备120-2。在块1215,图1的负载均衡守护进程145可以标识图1的存储设备120-1上的图9的存储器页905。图1的负载均衡守护进程145可以使用图11的访问逻辑1105来访问图6的写入计数610,以标识图9的存储器页905。
在块1220(图13B),图1的负载均衡守护进程145可以发起图9的存储器页905从图1的存储设备120-1到图1的存储设备120-2的迁移。图1的负载均衡守护进程145可以使用图11的迁移逻辑1110来执行该迁移。在块1320,图1的负载均衡守护进程145可以更新图1的页表135,以反映图9的存储器页905从图1的存储设备120-1到图1的存储设备120-2的迁移。图1的负载均衡守护进程145可以使用图11的页表更新逻辑1115来执行图1的页表135的更新。
在块1325,图1的负载均衡守护进程145可以重置图3的HDM 330中的针对存储设备120-1的图6的更新计数605。在块1330,图1的负载均衡守护进程145可以重置图3的HDM 330中的针对存储设备120-2的图6的更新计数605。最后,在块1335,图1的负载均衡守护进程145可以重置针对图1的存储设备120-1中的图9的存储器页905的图6的写入计数610。更一般地,在块1335,图1的负载均衡守护进程145可以重置针对图1的存储设备120-1中的所有存储器页的图3的HDM 330中的图6的写入计数610,并且重置针对图1的存储设备120-2中的所有存储器页的图3的HDM 330中的图6的所有写入计数610。负载均衡守护进程145可以使用重置逻辑1120来执行在块1325、1330和1335中描述的重置。
图14示出了根据本公开的实施例,用于图1的负载均衡守护进程145在图1的系统中标识在其间以迁移存储器页的图1的存储设备120的示例过程的流程图。在图14中,在块1405,图1的负载均衡守护进程145可以使用图11的访问逻辑1105来访问来自图3的HDM 330的针对图1的存储设备120的图6的更新计数605。对于图1的每个存储设备120,在块1410,图1的负载均衡守护进程145可以考虑相关联的图6的更新计数605。如果针对图1的存储设备120的图6的更新计数605是最大值(即,跨图1的存储设备120的最高更新计数——更一般地,如果针对存储设备120的图6的更新计数605高于针对图1的某个其他存储设备120的图6的更新计数605)——则在块1415,负载均衡守护进程145可以选择图1的存储设备120作为用于数据迁移的源存储设备。如果针对图1的存储设备120的图6的更新计数605是最小值(即,跨图1的存储设备120的最低更新计数——更一般地,如果针对存储设备120的图6的更新计数605低于图1的某个其他存储设备120的图6的更新计数605)——则在块1420,负载均衡守护进程145可以选择图1的存储设备120作为用于数据迁移的目的地存储设备。对于下述图1的存储设备120:其相关联的图6的更新计数605不足够高或低,而不能被认为是用于数据迁移的源或目的地存储设备,则图1的负载均衡守护进程145可以跳过(pass)该图1的存储设备120。
图15示出了根据本公开的实施例,用于图1的负载均衡守护进程145在图1的系统105中选择要迁移的图9的存储器页905的示例过程的流程图。在图15中,在块1505,图1的负载均衡守护进程145可以使用图11的访问逻辑1105来从图3的HDM 330访问针对源存储设备的图6的写入计数610。在块1510,图1的负载均衡守护进程145可以确定针对特定的存储器页的图6的写入计数610是否具有最大值(即,针对图1的存储设备120上的页的最高写入计数——更一般地,图1的负载均衡守护进程145可以确定针对特定的存储器页的图6的写入计数610是否高于针对图1的存储设备120上的其他存储器页的图6的写入计数610——然后在块1515,图1的负载均衡守护进程145可以选择相关联的图9的存储器页905用于从图1的存储设备120-1到图1的存储设备120-2的迁移。
图16示出了根据本公开的实施例,用于图1的负载均衡守护进程145在图1的系统105中标识用于迁移的图1的存储设备120或图9的存储器页905的替选过程的流程图。在图16中,在块1605,图1的负载均衡守护进程145可以向图1的存储设备120轮询其图6的更新计数605和/或其图6的写入计数610。在块1610,图1的负载均衡守护进程145可以接收源自图1的存储设备120的中断,其具有针对图1的存储设备120的图6的更新计数605和/或图6的写入计数610。
图17示出了根据本公开的实施例,用于在图1的系统105中发生的图9的存储器页905的迁移的过程的流程图。在图17中,在块1705,图1的负载均衡守护进程145可以请求从图1的存储设备120-1读取图9的存储器页905。在块1710,图1的负载均衡守护进程145可以请求将图9的存储器页905写入到图1的存储设备120-2。最后,在块1715,图1的负载均衡守护进程145可以请求从图1的存储设备120擦除图9的存储器页905。注意,块1715在技术上不是必需的,因为扩展存储器内的页的迁移意味着用于该页的原始存储器地址可以被释放,这将意味着图1的存储设备120上的页可以被擦除。
在图12至图17中,示出了本公开的一些实施例。但是本领域技术人员将认识到,通过改变块的顺序、通过省略块或通过包括附图中未示出的链接,本公开的其他实施例也是可能的。无论是否明确描述,流程图的所有这样的变化都被认为是本公开的实施例。
本公开的实施例引入了一种新的机制,该机制使用图1的固态驱动器(SSD)120中的间接机制来检测热页,并且当SSD被用于扩展存储器时,基于页的热度来执行设备发起的数据迁移。本公开的实施例可以缓解当与存储器一起使用SSD时的耐久性问题,其中细粒度数据更新可能加速介质损耗。
如在实施例中所公开地,在图1的异构存储器系统105中,热页可以从一种系统存储器迁移到另一种系统存储器,以均衡负载并且实现更好的性能。在本文的实施例中,非易失性存储器可以使用高速缓存一致互连协议被展示(expose)为系统存储器。这样的非易失性存储器设备的闪存转换层(FTL)可以监视逻辑页更新和内部逻辑块地址(LBA)到物理块地址(PBA)映射更新的数量。
本公开的实施例可以通过跟踪图1的SSD 120中的LBA到PBA映射改变来对更新的数量进行计数。本公开的一些实施例可以将更新计数存储在可以由主机和设备两者访问的主机管理的设备存储器(HDM)中。本公开的一些实施例可以保留HDM来记录针对每页的写入计数。本公开的一些实施例可以具有下述特:图1的负载均衡守护进程145通过检查HDM中的更新计数来周期性地检查每个设备的负载。在本公开的一些实施例中,负载均衡守护进程可以在主机侧执行从最繁忙设备到最空闲设备的页迁移:例如,使用CXL.mem。
本公开的实施例的优点可以包括增加非易失性存储器的寿命,诸如SSD、相变存储器(PCM)、和具有有限写入耐久性的其他非易失性随机存取存储器(NVRAM)。此外,本公开的实施例可以通过减少垃圾收集运行的次数来提高SSD的整体性能。
本公开的实施例可以包括用于负载均衡的页迁移。在本公开的一些实施例中,这样的页迁移可以将页从非易失性存储器迁移到另一个非易失性存储器以用于负载均衡。在本公开的一些实施例中,为了找到最繁忙设备和最空闲设备,图3的FTL 335可以在特定时段上的写入的总数进行计数。
本公开的实施例可以包括用于针对CXL SSD进行负载均衡的图1的系统105,CXLSSD经由CXL.mem向主机系统展示空间。
本公开的实施例可以包括图3的FTL 335,其能够监视LBA-PBA映射更新的数量以找到热页。
本公开的实施例可以包括将映射更新计数存储在可以从主机和设备两者访问的图3的HDM 330中。
本公开的实施例可以包括用于负载均衡的页迁移,并且还可以包括更新特定时段中的写入的总数量的图3的FTL 335。本公开的一些实施例还可以包括周期性地检查和重置总写入计数的图3的负载均衡守护进程145。此外,本公开的一些实施例可以包括从最繁忙设备迁移到最空闲设备的热页。
本公开的实施例允许负载均衡守护进程确定关于对异构存储器系统中的存储设备的写入的信息。基于可以包括指示对存储设备的写入总数量的更新计数的该信息,负载均衡守护进程可以基于对每个存储设备的写入的相对数量来选择繁忙存储设备和空闲存储设备。负载均衡守护进程还可以使用诸如对繁忙存储设备中每页的写入的总数量的其他信息,来选择一个或多个页以用于迁移到空闲存储设备。负载均衡守护进程可以将页从繁忙存储装置迁移到空闲的存储装置。然后,负载均衡守护进程可以更新主机系统中的信息,以反映从繁忙存储设备到空闲存储设备的页的迁移。
以下讨论旨在提供其中可以实施本公开的某些方面的一个或多个合适机器的简要概括描述。一个或多个机器可以至少部分地通过下述来控制:来自诸如键盘、鼠标等的传统输入设备的输入;以及通过从另一个机器接收的指令、与虚拟现实(VR)环境的交互、生物反馈或其他输入信号。当在本文中使用时,术语“机器”旨在广泛地涵盖单个机器、虚拟机或下述的系统:通信地耦合的、一起操作的机器、虚拟机或设备的系统。示例性机器包括:计算设备,诸如个人计算机、工作站、服务器、便携式计算机、手持设备、电话、平板设备等;以及运输设备,诸如私人或公共运输,例如汽车、火车、出租车等。
一个或多个机器可以包括嵌入式控制器,诸如可编程或不可编程逻辑器件(device)或阵列、专用集成电路(ASIC)、嵌入式计算机、智能卡等。一个或多个机器可以利用到一个或多个远程机器的一个或多个连接,诸如通过网络接口、调制解调器或其他通信耦合。机器可以通过物理和/或逻辑网络互连,诸如内联网、互联网、局域网、广域网等。本领域技术人员将理解,网络通信可以利用各种有线和/或无线短程或远程载波和协议,包括射频(RF)、卫星、微波、电气和电子工程师协会(IEEE)802.11、光学、红外、线缆、激光等。
本公开的实施例可以通过参考或结合相关联的数据来描述,该数据包括功能、过程、数据结构、应用程序等,该数据在被机器访问时导致机器执行任务或定义抽象数据类型或低级硬件上下文。相关联的数据可以存储在例如易失性和/或非易失性存储器中,例如RAM、ROM等;或者存储在其他存储设备及其相关联的存储介质中,包括硬盘驱动器、软盘、光存储装置、磁带、闪速存储器、记忆棒、数字视频盘、生物存储装置等。相关联的数据可以以分组、串行数据、并行数据、传播信号等的形式在包括物理和/或逻辑网络的传输环境中传递,并且可以以压缩或加密格式使用。相关联的数据可以在分布式环境中使用,并且本地和/或远程存储以供机器访问。
本公开的实施例可以包括有形的、非暂时性的机器可读介质,该介质包括可由一个或多个处理器执行的指令,该指令包括执行如本文所述的本公开的元件的指令。
上述方法的各种操作可以由能够执行操作的任何合适的装置来执行,诸如各种硬件和/或软件组件、电路和/或模块。该软件可以包括用于实现逻辑功能的可执行指令的有序列表,并且可以具体体现在任何“处理器可读介质”中,以供下述使用或与下述接合:指令执行系统、装置或设备,诸如单核或多核处理器或包含处理器的系统。
结合本文公开的实施例描述的方法或算法和功能的块或步骤可以直接地具体体现在硬件、由处理器执行的软件模块或两者的组合中。如果在软件中实现,则功能可以作为有形的非暂时性计算机可读介质上的一个或多个指令或代码来存储或传输。软件模块可以驻留在随机存取存储器(RAM)、闪速存储器、只读存储器(ROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、寄存器、硬盘、可移动盘、CD ROM或本领域已知的任何其他形式的存储介质中。
已经参考所示出的实施例描述和示出了本公开的原理,将认识到,所示出的实施例可以在布置和细节上进行修改而不背离这样的原理,并且可以以任何期望的方式进行组合。并且,尽管前面的讨论关注于特定的实施例,但是也可以考虑其他的配置。具体地,尽管在本文中使用了诸如“根据本公开的实施例”等表述,但是这些短语旨在一般地指代实施例的可能性,而不是旨在将本公开限制于特定的实施例配置。当在本文中使用时,这些术语可以指代可组合成其他实施例的相同或不同的实施例。
前述说明性实施例不应被解释为限制该实施例的公开。尽管已经描述了若干实施例,但是本领域技术人员将容易理解,在本质上不脱离本公开的新颖的教导和优点的情况下,对这些实施例的许多修改是可能的。因此,所有这样的修改旨在包括在权利要求中定义的本公开的范围内。
本公开的实施例可以扩展到以下声明,而不受到限制:
声明1.本公开的实施例包括系统,该系统包括:
处理器;
连接到处理器的存储器;
连接到处理器的第一存储设备,该第一存储设备包括第一存储部分,该第一存储部分包括存储器页,该第一存储部分扩展存储器;
连接到处理器的第二存储设备,该第二存储设备包括第二存储部分,该第二存储部分扩展存储器;以及
负载均衡守护进程,至少部分地基于第一存储设备的第一更新计数和第二存储设备的第二更新计数,将存储器页从第一存储设备的第一存储部分迁移到第二存储设备的第二存储部分。
声明2.本公开的实施例包括根据声明1的系统,其中,负载均衡守护进程包括迁移逻辑,用于将存储器页从第一存储设备的第一存储部分迁移到第二存储设备的第二存储部分。
声明3.本公开的实施例包括根据声明1的系统,其中,第一存储部分和第二存储部分经由高速缓存一致互连协议来扩展存储器。
声明4.本公开的实施例包括根据声明3的系统,其中,高速缓存一致互连协议包括快速计算链接(CXL)协议。
声明5.本公开的实施例包括根据声明3的系统,其中,存储器从包括下述的集合中取出:闪速存储器、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、永久随机存取存储器、铁电随机存取存储器(FRAM)或非易失性随机存取存储器(NVRAM)。
声明6.本公开的实施例包括根据声明3的系统,其中:
第一存储设备包括第一固态驱动器(SSD);和
第二存储设备包括第二SSD。
声明7.本公开的实施例包括根据声明3的系统,其中负载均衡守护进程包括可由处理器执行的软件。
声明8.本公开的实施例包括根据声明3的系统,其中:
第一存储设备包括存储第一更新计数的第一主机管理的设备存储器(HDM);和
第二存储设备包括存储第二更新计数的第二HDM。
声明9.本公开的实施例包括根据声明8的系统,其中,第一更新计数是不可缓存的。
声明10.本公开的实施例包括根据声明8的系统,其中,第一存储设备包括第二处理器,该第二处理器包括高速缓存第一更新计数的高速缓存,该第二处理器使用高速缓存一致互连协议来保持高速缓存和第一HDM中的第一更新计数之间的一致性。
声明11.本公开的实施例包括根据声明8的系统,其中,负载均衡守护进程包括访问逻辑,用于来自第一更新计数的第一HDM访问并且访问来自第二HDM的第二更新计数。
声明12.本公开的实施例包括根据声明8的系统,其中,负载均衡守护进程包括重置逻辑,用于重置第一HDM中的第一更新计数以及重置第二HDM中的第二更新计数。
声明13.本公开的实施例包括根据声明8的系统,其中,第一HDM还存储针对存储器页的写入计数。
声明14.本公开的实施例包括根据声明13的系统,其中,负载均衡守护进程包括访问逻辑,用于访问来自第一HDM的写入计数。
声明15.本公开的实施例包括根据声明3的系统,其中,负载均衡守护进程包括轮询器,用于向第一存储设备轮询第一更新计数并且向第二存储设备轮询第二更新计数。
声明16.本公开的实施例包括根据声明3的系统,其中:
第一存储设备包括用于中断负载均衡守护进程以提供第一更新计数的第一中断逻辑;和
第二存储设备包括用于中断负载均衡守护进程以提供第二更新计数的第二中断逻辑。
声明17.本公开的实施例包括根据声明3的系统,其中,负载均衡守护进程被配置为至少部分地基于第一更新计数超过第二更新计数,将存储器页从第一存储设备的第一存储部分迁移到第二存储设备的第二存储部分。
声明18.本公开的实施例包括根据声明17的系统,其中,负载均衡守护进程被配置为至少部分地基于第一更新计数和第二更新计数之间的差超过阈值,将存储器页从第一存储设备的第一存储部分迁移到第二存储设备的第二存储部分。
声明19.本公开的实施例包括根据声明18的系统,其中:
存储器页与写入计数相关联;
第一存储部分还存储第二存储器页,该第二存储器页与第二写入计数相关联;和
负载均衡守护进程被配置为至少部分地基于第一更新计数和第二更新计数之间的差超过阈值并且该写入计数高于第二写入计数,将存储器页从第一存储设备的第一存储部分迁移到第二存储设备的第二存储部分。
声明20.本公开的实施例包括根据声明3的系统,其中,存储设备包括递增逻辑,用于至少部分地基于正在写入到第一存储设备的新数据来递增第一更新计数。
声明21.本公开的实施例包括根据声明20的系统,其中,递增逻辑被配置为至少部分地基于正被写入存储器页的新数据来递增与存储器页相关联的写入计数。
声明22.本公开的实施例包括根据声明3的系统,其中:
第一存储部分包括第二存储器页;和
负载均衡守护进程被配置为至少部分地基于第一存储设备的第一更新计数以及与第二存储器页相关联的第二写入计数超过阈值,将第二存储器页从第一存储设备的第一存储部分迁移到存储器。
声明23.本公开的实施例包括根据声明3的系统,其中,存储器存储第二存储器页和针对第二存储器页的第二写入计数。
声明24.本公开的实施例包括根据声明23的系统,其中,负载均衡守护进程被配置为至少部分地基于第二写入计数小于阈值,将第二存储器页从存储器迁移到第二存储设备的第二存储部分。
声明25.本公开的实施例包括根据声明3的系统,其中:
第一存储设备还包括第三存储部分,该第三存储部分可由运行在处理器上的应用访问;和
第二存储设备还包括第四存储部分,该第四存储部分可由运行在处理器上的应用访问。
声明26.本公开的实施例包括存储设备,包括:
包括第一存储部分的存储装置,该第一存储部分包括存储器页;
控制器,用于处理发送到存储设备的加载请求或存储请求中的至少一个;以及
递增逻辑,用于管理标识数据已被写入到存储装置的第一次数的更新计数和标识数据已被写入到存储器页的第二次数的写入计数,
其中,存储装置扩展存储器。
声明27.本公开的实施例包括根据声明26的存储设备,其中,该存储设备支持高速缓存一致互连协议。
声明28.本公开的实施例包括根据声明27的存储设备,其中,高速缓存一致互连协议包括快速计算链接(CXL)协议。
声明29.本公开的实施例包括根据声明26的存储设备,其中,该存储设备包括固态驱动器(SSD)。
声明30.本公开的实施例包括根据声明29的存储设备,其中,SSD包括包含递增逻辑的闪存转换层(FTL)。
声明31.本公开的实施例包括根据声明30的存储设备,其中,递增逻辑被配置为忽略存储器页的垃圾收集。
声明32.本公开的实施例包括根据声明30的存储设备,其中,递增逻辑被配置为忽略存储器页的损耗平衡。
声明33.本公开的实施例包括根据声明26的存储设备,还包括用于存储更新计数和写入计数的HDM。
声明34.本公开的实施例包括根据声明33的存储设备,其中,更新计数和写入计数是不可缓存的。
声明35.本公开的实施例包括根据声明33的存储设备,其中,第一存储设备包括处理器,该处理器包括高速缓存更新计数的高速缓存,该处理器使用保持高速缓存和HDM中的更新计数之间的一致性的高速缓存一致互连协议来。
声明36.本公开的实施例包括根据声明26的存储设备,其中,存储设备还包括由运行在处理器上的应用可访问的第二存储部分。
声明37.本公开的实施例包括根据声明26的存储设备,还包括中断逻辑,用于中断负载均衡守护进程以提供更新计数。
声明38.本公开的实施例包括方法,该方法包括:
由运行在处理器上的负载均衡守护进程标识第一存储设备;
由运行在处理器上的负载均衡守护进程标识第二存储设备;
由运行在处理器上的负载均衡守护进程标识存储在第一存储设备上的存储器页;和
将存储器页从第一存储设备迁移到第二存储设备,
其中,第一存储设备和第二存储设备扩展存储器。
声明39.本公开的实施例包括根据声明38的方法,其中,第一存储设备和第二存储设备经由高速缓存一致互连协议来扩展存储器。
声明40.本公开的实施例包括根据声明39的方法,其中,高速缓存一致互连协议包括计算快速链接(CXL)协议。
声明41.本公开的实施例包括根据声明39的方法,其中:
第一存储设备包括第一固态驱动器(SSD);和
第二存储设备包括第二SSD。
声明42.本公开的实施例包括根据声明39的方法,其中:
由运行在处理器上的负载均衡守护进程标识第一存储设备包括确定第一存储设备的第一更新计数;和
由运行在处理器上的负载均衡守护进程标识第二存储设备包括确定第二存储设备的第二更新计数。
声明43.本公开的实施例包括根据声明42的方法,其中:
确定第一存储设备的第一更新计数包括访问来自第一存储设备的第一HDM的第一更新计数;和
确定第二存储设备的第二更新计数包括访问来自第二存储设备的第二HDM的第二更新计数。
声明44.本公开的实施例包括根据声明42的方法,其中:
由运行在处理器上的负载均衡守护进程标识第一存储设备还包括确定第一更新计数大于第二更新计数;和
由运行在处理器上的负载均衡守护进程标识第二存储设备包括确定第二更新计数小于第一更新计数。
声明45.本公开的实施例包括根据声明42的方法,其中:
确定针对第一存储设备的第一更新计数包括:
向第一存储设备轮询第一更新计数;和
从第一存储设备接收第一更新计数;以及
确定针对第二存储设备的第二更新计数包括:
向第二存储设备轮询第二更新计数;和
从第二存储设备接收第二更新计数。
声明46.本公开的实施例包括根据声明42的方法,还包括:
在第一存储设备处接收存储请求;和
至少部分地基于接收到存储请求来更新第一更新计数。
声明47.本公开的实施例包括根据声明46的方法,其中
在第一存储设备处接收存储请求包括在第一存储设备处接收更新存储器页的存储请求;和
该方法还包括更新与第一存储设备上的存储器页相关联的写入计数。
声明48.本公开的实施例包括根据声明42的方法,还包括:
由负载均衡守护进程重置针对第一存储设备的第一更新计数;和
由负载均衡守护进程重置针对第二存储设备的第二更新计数。
声明49.本公开的实施例包括根据声明42的方法,还包括由负载均衡守护进程重置与第一存储设备上的存储器页相关联的写入计数。
声明50.本公开的实施例包括根据声明39的方法,其中,由运行在处理器上的负载均衡守护进程标识存储在第一存储设备上的存储器页包括:由运行在处理器上的负载均衡守护进程至少部分地基于针对存储器页的写入计数来标识存储在第一存储设备上的存储器页。
声明51.本公开的实施例包括根据声明50的方法,其中,由运行在处理器上的负载均衡守护进程标识存储在第一存储设备上的存储器页还包括:
确定针对存储器页的写入计数;
确定针对存储在第一存储设备上的第二存储器页的第二写入计数;以及
至少部分地基于写入计数大于第二写入计数来标识存储器页。
声明52.本公开的实施例包括根据声明51的方法,其中:
确定针对存储器页的写入计数包括访问来自存储设备的HDM的写入计数;和
确定针对存储在第一存储设备上的第二存储器页的第二写入计数包括访问来自存储设备的HDM的第二写入计数。
声明53.本公开的实施例包括根据声明51的方法,其中:
确定针对存储器页的写入计数包括:
向第一存储设备轮询写入计数;和
从第一存储设备接收写入计数;以及
确定针对存储在第一存储设备上的第二存储器页的第二写入计数包括:
向第一存储设备轮询第二写入计数;和
从第一存储设备接收第二写入计数。
声明54.本公开的实施例包括根据声明53的方法,其中:
从第一存储设备接收写入计数包括从第一存储设备接收第一中断,第一中断包括写入计数;和
从第一存储设备接收第二写入计数包括从第一存储设备接收第二中断,第二中断包括第二写入计数。
声明55.本公开的实施例包括根据声明39的方法,其中,将存储器页从第一存储设备迁移到第二存储设备包括将存储器页从第一存储设备迁移到存储器。
声明56.本公开的实施例包括根据声明39的方法,其中,将存储器页从第一存储设备迁移到第二存储设备包括将存储器页从存储器迁移到第二存储设备。
声明57.本公开的实施例包括根据声明39的方法,其中,将存储器页从第一存储设备迁移到第二存储设备包括:
从第一存储设备读取存储页;和
将存储页写入到第二存储设备。
声明58.本公开的实施例包括根据声明57的方法,其中,将存储器页从第一存储设备迁移到第二存储设备还包括从第一存储设备擦除存储器页。
声明59.本公开的实施例包括根据声明39的方法,其中,将存储器页从第一存储设备迁移到第二存储设备包括至少部分地基于存储器页到第二存储设备的迁移来更新页表。
声明60.本公开的实施例包括根据声明39的方法,其中,第一存储设备包括包含存储器页的第一存储部分。
声明61.本公开的实施例包括根据声明60的方法,其中,第一存储设备还包括第二存储部分,该第二存储部分由运行在处理器上的应用可访问。
声明62.本公开的实施例包括方法,该包括:
在存储设备处接收存储请求;和
至少部分地基于接收到存储请求来更新针对存储设备的更新计数。
声明63.本公开的实施例包括根据声明62的方法,其中
在存储设备处接收存储请求包括在存储设备处接收更新存储器页的存储请求;和
该方法还包括更新与存储设备上的存储器页相关联的写入计数。
声明64.本公开的实施例包括根据声明62的方法,还包括:
在存储设备处从负载均衡守护进程接收针对更新计数的轮询;和
将更新计数从存储设备发送到负载均衡守护进程。
声明65.本公开的实施例包括根据声明64的方法,其中,从存储设备向负载均衡守护进程发送更新计数包括:从存储设备向负载均衡守护进程发送中断,该中断包括更新计数。
声明66.本公开的实施例包括根据声明62的方法,还包括:
在存储设备处从负载均衡守护进程接收针对写入计数的轮询;和
将写入计数从存储设备发送到负载均衡守护进程。
声明67.本公开的实施例包括根据声明66的方法,其中,从存储设备向负载均衡守护进程发送写入计数包括:从存储设备向负载均衡守护进程发送中断,该中断包括写入计数。
声明68.本公开的实施例包括根据声明62的方法,还包括:
在存储设备处接收重置更新计数的请求;和
重置针对存储设备的更新计数。
声明69.本公开的实施例包括根据声明62的方法,还包括:
在存储设备处接收重置写入计数的请求;和
重置针对存储设备的写入计数。
声明70.本公开的实施例包括根据声明62的方法,其中,第一存储设备包括包含存储器页的第一存储部分。
声明71.本公开的实施例包括根据声明70的方法,其中,第一存储设备还包括第二存储部分,该第二存储部分由运行在处理器上的应用可访问。
声明72.本公开的实施例包括制品,该制品包括非暂时性存储介质,该非暂时性存储介质上存储有指令,该指令当由机器执行时导致:
由运行在处理器上的负载均衡守护进程标识第一存储设备;
由运行在处理器上的负载均衡守护进程标识第二存储设备;
由运行在处理器上的负载均衡守护进程标识存储在第一存储设备上的存储器页;和
将存储器页从第一存储设备迁移到第二存储设备。
声明73.本公开的实施例包括根据声明72的制品,其中,第一存储设备和第二存储设备经由高速缓存一致互连协议来扩展存储器。
声明74.本公开的实施例包括根据声明73的制品,其中,高速缓存一致互连协议包括计算快速链接(CXL)协议。
声明75.本公开的实施例包括根据声明73的制品,其中:
第一存储设备包括第一固态驱动器(SSD);和
第二存储设备包括第二SSD。
声明76.本公开的实施例包括根据声明73的制品,其中:
由运行在处理器上的负载均衡守护进程标识第一存储设备包括确定第一存储设备的第一更新计数;和
由运行在处理器上的负载均衡守护进程标识第二存储设备包括确定第二存储设备的第二更新计数。
声明77.本公开的实施例包括根据声明76的制品,其中:
确定第一存储设备的第一更新计数包括访问来自第一存储设备的第一HDM的第一更新计数;和
确定第二存储设备的第二更新计数包括访问来自第二存储设备的第二HDM的第二更新计数。
声明78.本公开的实施例包括根据声明76的制品,其中:
由运行在处理器上的负载均衡守护进程标识第一存储设备还包括确定第一更新计数大于第二更新计数;和
由运行在处理器上的负载均衡守护进程标识第二存储设备包括确定第二更新计数小于第一更新计数。
声明79.本公开的实施例包括根据声明76的制品,其中:
确定第一存储设备的第一更新计数包括:
向第一存储设备轮询第一更新计数;和
从第一存储设备接收第一更新计数;以及
确定第二存储设备的第二更新计数包括:
向第二存储设备轮询第二更新计数;和
从第二存储设备接收第二更新计数。
声明80.本公开的实施例包括根据声明76的制品,非暂时性存储介质上存储有进一步的指令,该指令当由机器执行时导致:
在第一存储设备处接收存储请求;和
至少部分地基于接收到存储请求来更新第一更新计数。
声明81.本公开的实施例包括根据声明80的制品,其中
在第一存储设备处接收存储请求包括在第一存储设备处接收更新存储器页的存储请求;和
非暂时性存储介质在其上存储有进一步的指令,该指令当由机器执行时导致更新与第一存储设备上的存储器页相关联的写入计数。
声明82.本公开的实施例包括根据声明76的制品,非暂时性存储介质上存储有进一步的指令,该指令当由机器执行时导致:
由负载均衡守护进程重置第一存储设备的第一更新计数;和
由负载均衡守护进程重置第二存储设备的第二更新计数。
声明83.本公开的实施例包括根据声明76的制品,非暂时性存储介质上存储有进一步的指令,该指令当由机器执行时导致由负载均衡守护进程重置与第一存储设备上的存储器页相关联的写入计数。
声明84.本公开的实施例包括根据声明73的制品,其中,由运行在处理器上的负载均衡守护进程标识存储在第一存储设备上的存储器页包括:由运行在处理器上的负载均衡守护进程至少部分地基于针对存储器页的写入计数来标识存储在第一存储设备上的存储器页。
声明85.本公开的实施例包括根据声明84的制品,其中,由运行在处理器上的负载均衡守护进程标识存储在第一存储设备上的存储器页还包括:
确定针对存储器页的写入计数;
确定针对存储在第一存储设备上的第二存储器页的第二写入计数;和
至少部分地基于写入计数大于第二写入计数来标识存储器页。
声明86.本公开的实施例包括根据声明85的制品,其中:
确定针对存储器页的写入计数包括访问来自存储设备的HDM的写入计数;和
确定针对存储在第一存储设备上的第二存储器页的第二写入计数包括访问来自存储设备的HDM的第二写入计数。
声明87.本公开的实施例包括根据声明85的制品,其中:
确定针对存储器页的写入计数包括:
向第一存储设备轮询写入计数;和
从第一存储设备接收写入计数;以及
确定针对存储在第一存储设备上的第二存储器页的第二写入计数包括:
向第一存储设备轮询第二写入计数;和
从第一存储设备接收第二写入计数。
声明88.本公开的实施例包括根据声明87的制品,其中:
从第一存储设备接收写入计数包括从第一存储设备接收第一中断,该第一中断包括写入计数;和
从第一存储设备接收第二写入计数包括从第一存储设备接收第二中断,该第二中断包括第二写入计数。
声明89.本公开的实施例包括根据声明73的制品,其中,将存储器页从第一存储设备迁移到第二存储设备包括将存储器页从第一存储设备迁移到存储器。
声明90.本公开的实施例包括根据声明73的制品,其中,将存储器页从第一存储设备迁移到第二存储设备包括将存储器页从存储器迁移到第二存储设备。
声明91.本公开的实施例包括根据声明73的制品,其中,将存储器页从第一存储设备迁移到第二存储设备包括:
从第一存储设备读取存储页;和
将存储页写入到第二存储设备。
声明92.本公开的实施例包括根据声明91的制品,其中,将存储器页从第一存储设备迁移到第二存储设备还包括从第一存储设备擦除存储器页。
声明93.本公开的实施例包括根据声明73的制品,其中,将存储器页从第一存储设备迁移到第二存储设备包括至少部分地基于存储器页到第二存储设备的迁移来更新页表。
声明94.本公开的实施例包括根据声明73的制品,其中,第一存储设备包括包含存储器页的第一存储部分。
声明95.本公开的实施例包括根据声明94的制品,其中,第一存储设备还包括第二存储部分,该第二存储部分由运行在处理器上的应用可访问。
声明96.本公开的实施例包括制品,该制品包括非暂时性存储介质,该非暂时性存储介质上存储有指令,该指令当由机器执行时导致:
在存储设备处接收存储请求;和
至少部分地基于接收到存储请求来更新针对存储设备的更新计数。
声明97.本公开的实施例包括根据声明96的制品,其中
在存储设备处接收存储请求包括在存储设备处接收更新存储器页的存储请求;和
非暂时性存储介质上存储有进一步的指令,该指令当由机器执行时导致更新与存储设备上的存储器页相关联的写入计数。
声明98.本公开的实施例包括根据声明96的制品,非暂时性存储介质上存储有进一步的指令,该指令当由机器执行时导致:
在存储设备处从负载均衡守护进程接收针对更新计数的轮询;和
将更新计数从存储设备发送到负载均衡守护进程。
声明99.本公开的实施例包括根据声明98的制品,其中,从存储设备向负载均衡守护进程发送更新计数包括从存储设备向负载均衡守护进程发送中断,该中断包括更新计数。
声明100.本公开的实施例包括根据声明96的制品,非暂时性存储介质上存储有进一步的指令,该指令当由机器执行时导致:
在存储设备处从负载均衡守护进程接收针对写入计数的轮询;和
将写入计数从存储设备发送到负载均衡守护进程。
声明101.本公开的实施例包括根据声明100的制品,其中,从存储设备向负载均衡守护进程发送写入计数包括从存储设备向负载均衡守护进程发送中断,该中断包括写入计数。
声明102.本公开的实施例包括根据声明96的制品,非暂时性存储介质上存储有进一步的指令,该指令当由机器执行时导致:
在存储设备处接收重置更新计数的请求;和
重置针对存储设备的更新计数。
声明103.本公开的实施例包括根据声明96的制品,非暂时性存储介质上存储有进一步的指令,该指令当由机器执行时导致:
在存储设备处接收重置写入计数的请求;和
重置针对存储设备的写入计数。
声明104.本公开的实施例包括根据声明96的制品,其中,第一存储设备包括包含存储器页的第一存储部分。
声明105.本公开的实施例包括根据声明104的制品,其中,第一存储设备还包括第二存储部分,该第二存储部分由运行在处理器上的应用可访问。
因此,鉴于本文描述的实施例的各种排列变换,该详细描述和所附材料仅旨在说明,而不应被视为限制本公开的范围。因此,本公开所要求保护的是可以落入以下权利要求及其等同物的范围和精神内的所有这种修改。
Claims (20)
1.一种系统,包括:
处理器;
连接到所述处理器的存储器;
连接到所述处理器的第一存储设备,所述第一存储设备包括第一存储部分,所述第一存储部分包括存储器页,所述第一存储部分扩展所述存储器;
连接到所述处理器的第二存储设备,所述第二存储设备包括第二存储部分,所述第二存储部分扩展所述存储器;以及
负载均衡守护进程,至少部分地基于所述第一存储设备的第一更新计数和所述第二存储设备的第二更新计数,将所述存储器页从所述第一存储设备的所述第一存储部分迁移到所述第二存储设备的所述第二存储部分。
2.根据权利要求1所述的系统,其中,所述第一存储部分和所述第二存储部分经由高速缓存一致互连协议来扩展所述存储器。
3.根据权利要求2所述的系统,其中,所述高速缓存一致互连协议包括计算快速链接CXL协议。
4.根据权利要求2所述的系统,其中:
所述第一存储设备包括存储所述第一更新计数的第一主机管理的设备存储器HDM;和
所述第二存储设备包括存储所述第二更新计数的第二HDM。
5.根据权利要求4所述的系统,其中,所述负载均衡守护进程包括访问逻辑,用于访问来自所述第一HDM的所述第一更新计数以及来自所述第二HDM的所述第二更新计数。
6.根据权利要求4所述的系统,其中,所述负载均衡守护进程包括重置逻辑,用于重置所述第一HDM中的所述第一更新计数以及重置所述第二HDM中的所述第二更新计数。
7.根据权利要求4所述的系统,其中,所述第一HDM还存储针对所述存储器页的写入计数。
8.一种存储设备,包括:
包括第一存储部分的存储装置,所述第一存储部分存储存储器页;
控制器,用于处理发送到所述存储设备的加载请求或存储请求中的至少一个;以及
递增逻辑,用于管理标识数据已被写入到所述存储装置的第一次数的更新计数和标识数据已被写入到所述存储器页的第二次数的写入计数,
其中,所述存储装置扩展所述存储器。
9.根据权利要求8所述的存储设备,其中,所述存储设备支持高速缓存一致互连协议。
10.根据权利要求9所述的存储设备,其中,所述高速缓存一致互连协议包括计算快速链接CXL协议。
11.根据权利要求8所述的存储设备,还包括用于存储所述更新计数和所述写入计数的主机管理的设备存储器HDM。
12.一种方法,包括:
由运行在处理器上的负载均衡守护进程标识第一存储设备;
由运行在所述处理器上的所述负载均衡守护进程标识第二存储设备;
由运行在所述处理器上的所述负载均衡守护进程标识存储在所述第一存储设备上的存储器页;以及
将所述存储器页从所述第一存储设备迁移到所述第二存储设备,
其中,所述第一存储设备和所述第二存储设备扩展存储器。
13.根据权利要求12所述的方法,其中,所述第一存储设备和所述第二存储设备经由高速缓存一致互连协议来扩展所述存储器。
14.根据权利要求13所述的方法,其中,所述高速缓存一致互连协议包括计算快速链接CXL协议。
15.根据权利要求13所述的方法,其中:
由运行在所述处理器上的所述负载均衡守护进程标识所述第一存储设备包括确定所述第一存储设备的第一更新计数;和
由运行在所述处理器上的所述负载均衡守护进程标识所述第二存储设备包括确定所述第二存储设备的第二更新计数。
16.根据权利要求15所述的方法,其中:
确定所述第一存储设备的所述第一更新计数包括访问来自所述第一存储设备的第一主机管理的设备存储器HDM的第一更新计数;和
确定所述第二存储设备的所述第二更新计数包括访问来自所述第二存储设备的第二HDM的第二更新计数。
17.根据权利要求15所述的方法,还包括:
由所述负载均衡守护进程重置所述第一存储设备的所述第一更新计数;以及
由所述负载均衡守护进程重置所述第二存储设备的所述第二更新计数。
18.根据权利要求15所述的方法,还包括由所述负载均衡守护进程重置与所述第一存储设备上的所述存储器页相关联的写入计数。
19.根据权利要求13所述的方法,其中,由运行在所述处理器上的所述负载均衡守护进程标识存储在所述第一存储设备上的所述存储器页包括:由运行在所述处理器上的所述负载均衡守护进程,至少部分地基于针对所述存储器页的写入计数来标识存储在所述第一存储设备上的所述存储器页。
20.根据权利要求13所述的方法,其中,将所述存储器页从所述第一存储设备迁移到所述第二存储设备包括:至少部分地基于所述存储器页到所述第二存储设备的迁移来更新页表。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163222406P | 2021-07-15 | 2021-07-15 | |
US63/222,406 | 2021-07-15 | ||
US17/511,540 US20230017824A1 (en) | 2021-07-15 | 2021-10-26 | Systems and methods for load balancing in a heterogeneous memory system |
US17/511,540 | 2021-10-26 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115617503A true CN115617503A (zh) | 2023-01-17 |
Family
ID=82594575
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210832184.2A Pending CN115617503A (zh) | 2021-07-15 | 2022-07-14 | 用于异构存储器系统中的负载均衡的系统和方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20230017824A1 (zh) |
EP (1) | EP4120089A1 (zh) |
KR (1) | KR20230012440A (zh) |
CN (1) | CN115617503A (zh) |
TW (1) | TW202307662A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024192888A1 (zh) * | 2023-03-17 | 2024-09-26 | 北京超弦存储器研究院 | 一种cxl内存模组、内存数据的置换方法及计算机系统 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230023696A1 (en) * | 2021-07-20 | 2023-01-26 | Vmware, Inc. | Migrating virtual machines in cluster memory systems |
US11922034B2 (en) | 2021-09-02 | 2024-03-05 | Samsung Electronics Co., Ltd. | Dual mode storage device |
US12026387B2 (en) * | 2022-03-24 | 2024-07-02 | Advanced Micro Devices, Inc. | Page swapping to protect memory devices |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7774556B2 (en) * | 2006-11-04 | 2010-08-10 | Virident Systems Inc. | Asymmetric memory migration in hybrid main memory |
US8239612B2 (en) * | 2007-09-27 | 2012-08-07 | Tdk Corporation | Memory controller, flash memory system with memory controller, and control method of flash memory |
US9513843B2 (en) * | 2010-04-13 | 2016-12-06 | Dot Hill Systems Corporation | Method and apparatus for choosing storage components within a tier |
KR20120128978A (ko) * | 2011-05-18 | 2012-11-28 | 삼성전자주식회사 | 데이터 저장 장치 및 그것의 데이터 관리 방법 |
US8886781B2 (en) * | 2011-12-13 | 2014-11-11 | Microsoft Corporation | Load balancing in cluster storage systems |
US8554963B1 (en) * | 2012-03-23 | 2013-10-08 | DSSD, Inc. | Storage system with multicast DMA and unified address space |
US20160026984A1 (en) * | 2013-04-15 | 2016-01-28 | Hitachi, Ltd. | Storage apparatus and control method of storage apparatus |
US10452302B2 (en) * | 2015-04-09 | 2019-10-22 | Hitachi, Ltd. | Storage system and data control method |
US11074208B1 (en) * | 2019-07-24 | 2021-07-27 | Xilinx, Inc. | Routing network using global address map with adaptive main memory expansion for a plurality of home agents |
KR20210089853A (ko) * | 2020-01-09 | 2021-07-19 | 에스케이하이닉스 주식회사 | 컨트롤러 및 컨트롤러의 동작방법 |
US12050938B2 (en) * | 2020-11-30 | 2024-07-30 | Netapp, Inc. | Balance workloads on nodes based on estimated optimal performance capacity |
CN114860150A (zh) * | 2021-02-04 | 2022-08-05 | 戴尔产品有限公司 | 在存储群集的存储系统之间执行损耗均衡 |
-
2021
- 2021-10-26 US US17/511,540 patent/US20230017824A1/en active Pending
-
2022
- 2022-07-13 EP EP22184665.2A patent/EP4120089A1/en active Pending
- 2022-07-14 CN CN202210832184.2A patent/CN115617503A/zh active Pending
- 2022-07-14 TW TW111126409A patent/TW202307662A/zh unknown
- 2022-07-15 KR KR1020220087382A patent/KR20230012440A/ko unknown
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024192888A1 (zh) * | 2023-03-17 | 2024-09-26 | 北京超弦存储器研究院 | 一种cxl内存模组、内存数据的置换方法及计算机系统 |
Also Published As
Publication number | Publication date |
---|---|
EP4120089A1 (en) | 2023-01-18 |
US20230017824A1 (en) | 2023-01-19 |
KR20230012440A (ko) | 2023-01-26 |
TW202307662A (zh) | 2023-02-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111033477B (zh) | 逻辑到物理映射 | |
EP2895958B1 (en) | Address mapping | |
KR100823171B1 (ko) | 파티션된 플래시 변환 계층을 갖는 컴퓨터 시스템 및플래시 변환 계층의 파티션 방법 | |
EP4120089A1 (en) | Systems and methods for load balancing in a heterogeneous memory system | |
JP2018125025A (ja) | 適応持続性システム、方法、インタフェース | |
US20110145474A1 (en) | Efficient Use Of Flash Memory In Flash Drives | |
US9195579B2 (en) | Page replacement method and memory system using the same | |
CN108595349B (zh) | 大容量存储设备的地址转换方法与装置 | |
JP2013152676A (ja) | 不揮発性記憶装置 | |
KR20150055882A (ko) | 불휘발성 메모리 시스템 및 그것의 동작 방법 | |
US8112589B2 (en) | System for caching data from a main memory with a plurality of cache states | |
US10769062B2 (en) | Fine granularity translation layer for data storage devices | |
CN102792284A (zh) | 存储器设备耗损均衡技术 | |
KR20170110810A (ko) | 데이터 처리 시스템 및 그것의 동작 방법 | |
WO2017000821A1 (zh) | 存储系统、存储管理装置、存储器、混合存储装置及存储管理方法 | |
EP4099171A1 (en) | Systems, methods, and apparatus for page migration in memory systems | |
US20130173855A1 (en) | Method of operating storage device including volatile memory and nonvolatile memory | |
US20240053917A1 (en) | Storage device, operation method of storage device, and storage system using the same | |
KR20230040057A (ko) | 시스템의 읽기 성능을 개선하기 위한 장치 및 방법 | |
KR102425470B1 (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
US11782854B2 (en) | Cache architecture for a storage device | |
KR20210043001A (ko) | 하이브리드 메모리 시스템 인터페이스 | |
KR101480420B1 (ko) | 메모리-디스크 통합 시스템 | |
US8990541B2 (en) | Compacting Memory utilization of sparse pages | |
KR102210536B1 (ko) | 비휘발성 메모리 장치의 데이터 관리 시스템 및 그 방법 |
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 |