CN107743620B - 用于耗损均衡的非易失性存储器的加速的地址间接表查找 - Google Patents
用于耗损均衡的非易失性存储器的加速的地址间接表查找 Download PDFInfo
- Publication number
- CN107743620B CN107743620B CN201680030450.2A CN201680030450A CN107743620B CN 107743620 B CN107743620 B CN 107743620B CN 201680030450 A CN201680030450 A CN 201680030450A CN 107743620 B CN107743620 B CN 107743620B
- Authority
- CN
- China
- Prior art keywords
- volatile memory
- memory
- ait
- address
- lookup
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
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]
-
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/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
- 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/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- 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
- G06F3/0649—Lifecycle management
-
- 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
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- 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/202—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/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/22—Employing cache memory using specific memory technology
-
- 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)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
实施例通常涉及用于耗损均衡的非易失性存储器的加速的地址间接表查找。存储器设备的实施例包括:非易失性存储器;存储器控制器;以及地址间接逻辑,用于提供针对非易失性存储器的地址间接,地址间接逻辑用于在非易失性存储器中维护地址间接表(AIT),所述AIT包括多个级别,并将所述AIT的至少一部分复制到第二存储器,第二存储器具有比第一存储器更少的延迟。
Description
技术领域
本文描述的实施例通常涉及电子设备的领域,更具体地,涉及用于耗损均衡的非易失性存储器的加速的地址间接表查找。
背景技术
计算机操作包括使用非易失性存储器(NVM)来维护某些数据。由于通过写入动作对非易失性存储器造成的耗损,基于NVM的存储器系统使用耗损均衡以便使写入耐久性最大化。
此外,数据通常使用地址重定向被映射到存储器中的不同位置,其中系统地址和非易失性存储器地址在通常被称为地址间接表(AIT)的表中被转换。
然而,取决于非易失性存储器的大小以及耗损级块的大小,AIT可以非常大。大型表通常需要驻留在非易失性存储器本身中,因此也需要进行耗损均衡,使得AIT成为具有高性能成本的多级查找结构。
附图说明
这里描述的实施例通过示例而非限制的方式在附图中示出,其中相同的附图标记表示相似的元件。
图1是根据实施例的具有影子表访问以提供加速的地址间接的非易失性存储器的示出;
图2是地址间接表结构的示例的示出;
图3是包括高速缓存的非易失性存储器的地址查找的示出;
图4是根据实施例的用于非易失性存储器的加速的查找的示出;
图5是用于说明根据本实施例的非易失性存储器模块的图;
图6是用于说明根据实施例的非易失性存储器查找的过程的流程图;且
图7是包括用于非易失性存储器的加速的查找的电子装置或系统的实施例的示出。
具体实施方式
本文描述的实施例通常涉及用于耗损均衡非易失性存储器的加速的地址间接表查找。
为了本说明的目的:
“主存储器”、“主要存储器”或“系统存储器”是处理器或计算机主要访问程序和数据的计算机存储器。主存储器通常是随机存取存储器(RAM),特别是通常的动态随机存取存储器(DRAM)。
“易失性存储器”是指在不连接到电源的情况下不保留存储值的存储器。易失性存储器包括RAM,诸如DRAM。
“非易失性存储器”是指在不连接到电源的情况下保存存储值的存储器。非易失性存储器包括但不限于,闪速存储器(包括NAND闪速存储器,诸如包括在非易失性存储器芯片中的,以及NOR闪速存储器)以及其它合适的非易失性存储器,例如相变存储器(PCM)、字节可寻址三维交叉点存储器、电阻存储器、纳米线存储器、铁电晶体管随机存取存储器(FeTRAM)、包含忆阻器技术的磁阻随机存取存储器(MRAM)存储器、自旋转移力矩(STT)-MRAM和字节可寻址随机存取非易失性存储器。
基于非易失性存储器(NVM)的存储器系统利用耗损均衡以扩展存储器的写入耐久性,其中非易失性存储器通常在存储器不再可靠之前具有有限数量的擦除周期。耗损均衡包括将写入从一个物理NVM块重定向到另一个,以确保所有块的均匀耗损。重定向写入意味着一种地址间接机制,其可以将CPU生成的存储器地址(系统地址)重新映射到可以基于耗损均衡算法重定位的NVM地址。
然而,非易失性存储器的地址间接表(AIT)可以非常大,这取决于NVM的大小以及耗损级块的大小。这样的大表通常需要驻留在NVM本身中,因此需要进行耗损均衡以使存储器的使用寿命最大化。因此,AIT呈现了具有非常高的性能成本的多级查找结构。
为了减轻耗损均衡中地址重定向的影响,通常使用某些常规加速机制,例如对查找结构的每个级别进行的高速缓存,而高速缓存通常驻留在NVM控制器中。然而,这样的高速缓存通常对于随机访问模式不能很好地执行,因为在地址查找过程中将存在大量的未命中。
在一些实施例中,设备、系统或过程针对耗损均衡的非易失性存储器提供加速的地址间接表查找,从而允许以有效的方式跨所有类型的存取模式的存储器操作。在一些实施例中,除了维护用于AIT的高速缓存之外,第一非易失性存储器的多级AIT表结构的影子副本被存储在第二存储器中,其中这样的表将包括AIT的全部或一部分。更具体地,第二存储器中的AIT可以包括一级或多级AIT。第二存储器通常是具有比非易失性存储器更少的延迟的存储器,例如可以包括DRAM存储器的易失性存储器。在一些实施例中,第二存储器不是CPU(中央处理单元)可见的系统的主存储器的一部分。在本说明书中,第二存储器通常被称为易失性存储器。
在一些实施例中,包含在易失性存储器中的表至少包括所述AIT的最后一级,并且因此将提供成功的非易失性存储器查找,假设AIT数据已被存储并且没有错误。在一些实施例中,易失性存储器副本与NVM控制器中的AIT结构的多级高速缓存紧密相关,存储在易失性存储器中的AIT表和存储在非易失性存储器中的AIT表在耗损级别移动时被同步更新。
在一些实施例中,在利用易失性存储器中的AIT表的同步影子副本的过程中,来自控制器中的AIT高速缓存的任何未命中通常只能进入易失性存储器副本以获得最终的转换。同时,任何异常情况仍然可以在需要时使用非易失性存储器表。以这种方式,随机和顺序访问当中的一致性性能最多受到用于访问影子AIT的易失性存储器延迟的限制。
在一些实施例中,影子AIT副本的操作允许实现基于非易失性存储器的AIT结构的正常耗损均衡,同时使用高速缓存和易失性存储器副本单独提供一致的访问延迟。相比之下,传统系统通常避免对基于非易失性存储器的AIT结构的耗损均衡,以便维持AIT结构的单个级别。然而,一般来说,缺乏耗损均衡将降低存储器的整体寿命。注意,应用于非易失性存储器的特定耗损均衡算法可以是本领域技术人员已知的用于存储器的适用的耗损均衡算法中的任何一种,并且这种算法的细节在本文提供的讨论之外。
在一些实施例中,与使用例如页大小的耗损级块的常规操作、装置、系统或过程相比,装置、系统或过程进一步在耗损均衡中应用小的粒度。相比之下,传统操作中的耗损均衡粒度使用较大的块,增加了耗损均衡的开销。这种更大的粒度通常针对块存储使用,其取决于大的顺序访问以最大化吞吐量。在一些实施例中,具有用于耗损均衡的低开销的较小、页面大小的耗损级块也被优化用于类似存储器语义的精细粒度随机访问。
图1是根据实施例的具有影子表访问以提供加速的地址间接的非易失性存储器的示出。图1旨在作为概念示出,并不意图表示物理位置、大小或连接。如图所示,诸如闪存或其他非易失性存储器的非易失性存储器110包括用于存储数据的某些存储器组110。非易失性存储器110还包括包含了用于地址间接控制的逻辑的非易失性存储器控制器120,其中控制可以包括用于存储用于地址间接的条目的高速缓存125。在一些实施例中,非易失性存储器存储地址间接表130以提供系统地址和非易失性存储器地址之间的映射。在一些实施例中,非易失性存储器可以是计算系统的一部分。
在一些实施例中,AIT 130的存储包括将存储AIT 130的元素的块的耗损均衡应用于数据110,这由表的某些块(AIT_1、AIT_2、AIT_3、并直至AIT_n)在存储器位置被加扰来示出。耗损均衡可以包括例如示出的AIT表数据的块AIT_1的传输。
在一些实施例中,装置、系统或过程提供存储在易失性存储器160中的影子AIT(影子表)175,影子表175包括存储在非易失性存储器110中的一级或多级AIT 130。由于易失性存储器可以将表存储在单个级中,因此所有地址可以在对易失性存储器的查找中可用。
在一些实施例中,影子表175和存储器高速缓存允许对地址间接表的加速的查找,允许在存储器高速缓存125中未命中时从存储在易失性存储器中的影子AIT中读取完整地址。用于支持多级表中的耗损均衡的AIT结构,允许结构本身的耗损均衡,并且因此在非易失性存储器内可重定位。
图2是地址间接表结构的示例的示出。如图所示,在传统的表访问中,用于多级表的系统地址200的查找导致通常被称为“Page-Walk(页遍历)”的查找的正常序列。在该结构中,该表包括2M字节(M位地址)非易失性存储器地址空间的四个级别,级别被示为级别0、级别1、级别2和级别4。因此,在该示例中,级别0的每个条目映射NVM空间的N3页,级别1的每个条目映射NVM空间的N2页,级别2的每个条目映射NVM空间的N页,并且级别3的每个条目映射NVM空间的一页。然而,图2所示的特定结构仅是表结构的一个示例,并且实施例不限于该示例。
在图2中,每页的大小与耗损级块的大小相同。利用这种结构,AIT结构的每页可以根据耗损均衡要求被重定位。当针对耗损均衡的这种重定位发生时,上一级的表中的指针被适当地修改。最后一级的表具有可由系统地址访问的NVM地址空间的最终转换。
在没有任何高速缓存的情况下,图2所示的结构将在获得地址以满足原始CPU访问之前需要4次NVM查找。为了避免针对每次访问的这种查找次数,NVM控制器可以包含针对每个级别的高速缓存,最后一级高速缓存提供整个转换。使用这种结构,任何CPU访问将首先仅查找最后一级,有时称为TLB(转换检测缓冲区),并且只有当TLB中的此查找未命中时,才根据需要继续查找先前的级别,以获得NVM地址从而找到非易失性存储器中的转换。但是,本示例中的页遍历可能需要五次读取、针对每级的高速缓存的读取以及非易失性存储器地址空间的读取。
图3是包括高速缓存的非易失性存储器的地址查找的示出。在该示出中,对于包括用户数据302并且包括用于地址重映射的NVM AIT 304的非易失性存储器300,来自CPU请求或重放未命中312的调用(示出为由多路复用器314选择的)最初通过TLB 320中的地址查找来访问,TLB 320已经接收到被示为NVM填充322的数据。如图3所示,因此,正常路径(高速缓存命中)导致对用户数据330的访问。
然而,如果TLB 320中存在未命中,则接着调用N-1级高速缓存332(4级结构的3级高速缓存),级别N查找。如果这导致未命中,则会调用N-2级高速缓存334(级别N-1查找)。如果这也导致未命中,那么就会调用基础高速缓存336(级别N-2查找)。
图3所示的过程在高速缓存命中率高时提供了可接受的性能,当CPU请求地址中存在足够的位置时,这可能会发生。然而,许多应用具有足够的随机行为而使得高速缓存性能不可接受,因为会有很多未命中。这样的应用可能会看到NVM延迟中非常高的变化水平,例如,在一个实现方式中,无负载的读取延迟变化多达5倍。
在一些实施例中,为了防止读取延迟的变化,并且为了提供更接近地址查找的最高效路径的一致性延迟,通过实现基于DRAM(或其他存储器)的影子副本来提供增强和加速的查找过程,DRAM副本提供AIT结构的单级表示,代表AIT结构的最后一级。
图4是根据实施例的用于非易失性存储器的加速的查找的示出。如图4所示,非易失性存储器400存储用于地址重映射的用户数据440和NVM AIT450。通过查找已经接收到用于正常查找路径430的示出为NVM填充422的数据的TLB 415中的地址来初始地访问来自CPU请求或重放未命中412的调用(经由多路复用器414)。
在一些实施例中,如果在TLB 415中存在未命中,则在具有比非易失性存储器400更少的延迟的第二存储器中查找AIT的一个或多个级别表的副本,例如用于所示的AIT副本474的DRAM。在一些实施例中,DRAM不是系统的主存储器的一部分。在一些实施例中,在系统上电时,用于AIT的一个或多个级别表的DRAM副本由微控制器480从NVM 400加载到DRAM。在一些实施例中,DRAM AIT副本474包括最后一级AIT,因此(如果AIT表被加载和完成),则AIT将发生命中,并且可以访问用户数据402。
然而,当针对DRAM的AIT的加载正在进行时,CPU可以访问NVM 400(如所示出的,由DRAM AIT加载器472驱动的,经由多路复用器455的DRAM填充),并且因此AIT副本474的数据可能不完整。在一些实施例中,如果DRAM AIT条目无效(当加载未完成或存在错误时,示出为针对DRAM控制器470的DRAM-AIT未命中),经由N-1级高速缓存432、N-2级高速缓存434、以及基础高速缓存436的例外路径460是可用的。因此,可以以与当没有DRAM副本AIT存在时相同或相似的方式遍历例外路径。
在一些实施例中,当DRAM AIT副本474被填充时,TLB未命中将查找DRAM并将其用于填充高速缓存以及查找NVM地址。以这种方式,在纯粹随机访问的情况下,高速缓存未命中的最大成本最多是在保存AIT副本的第二存储器中查找的成本,对于DRAM而言这大约为50ns(纳秒)。相比之下,遍历例外路径460中的NVM页表可能需要数百纳秒,因此在常规情况下提供了在延迟方面超过常规查找的显著的改进,并且在需要例外路径的最坏情况下,该过程提供了与常规操作相似的延迟。
除了在DRAM的初始加载期间,例外路径460也可以在不可校正的DRAM查找错误的情况下被遍历。在这种情况下,主表将被查找以检索转换。如果DRAM位置有硬错误,则可以将该转换永久高速缓存在NVM控制器中。
在一些实施例中,在每次耗损级别移动时,微控制器480将同时更新DRAM AIT副本474和NVM AIT 404。此过程允许维护表彼此同步。此外,DRAM和NVM的同步避免了在掉电时将DRAM中的任何内容写回NVM表的必要性。
图5是示出了根据实施例的非易失性存储器模块的图。如图5所示,非易失性存储器(NVM)模块520可以使用主机接口524经由存储器通道515与中央处理单元(CPU)510耦合。NVM模块520包括经由非易失性存储器接口534链接的NVM控制器522和非易失性存储器元件538。
在一些实施例中,NVM控制器522包括经受用于提供存储器538的耗损均衡的耗损管理536的地址间接控制530。在一些实施例中,NVM控制器528包括AIT高速缓存528,其可以包括用于存储器结构的多个级别中的每一个的高速缓存。此外,NVM控制器522包括用于与易失性存储器540(位于NVM模块520外部)连接的易失性存储器接口526,其中用于非易失性存储器538的地址间接表的副本被存储到易失性存储器540,并且包括NVM读/写逻辑533,其用于处理对NVM 538的读和写操作的请求。
图6是示出了根据实施例的用于非易失性存储器查找的过程的流程图。在一些实施例中,在开始系统操作602时,例如在系统的上电或复位时,微控制器将操作以将非易失性存储器AIT的全部或部分的副本(示出为NVM AIT 606)从非易失性存储器加载到易失性存储器中(或具有比非易失性存储器更少的延迟的其他存储器)。当系统运行时,在将AIT加载到易失性存储器期间可能存在非易失性存储器访问608,易失性存储器608然后遵循正常查找路径616,下面将进一步描述。
在完成针对易失性存储器AIT的加载过程之后,系统可以进行系统操作612。在一些实施例中,在非易失性存储器请求614时,查找过程利用包括TLB中的初始查找的正常查找路径616。如果成功查找,则从非易失性存储器读取用户数据620。然而,如果存在TLB未命中618,则查找路径继续在AIT的易失性存储器副本中进行查找622,如果成功则允许从非易失性存储器读取用户数据620。然而,如果存在易失性存储器AIT未命中(例如在易失性存储器的加载期间的存储器访问608)或者如果存在错误624,则该过程继续到例外路径,利用针对每个级别的高速缓存存储器存储626来获得用于从非易失性存储器读取用户数据620的地址。
在一些实施例中,在系统操作630期间的任何时间,还应用了适用的耗损均衡算法,并且在任何耗损级别移动时632,系统同时更新非易失性存储器AIT和易失性存储器AIT副本634,这允许将AIT版本保持彼此同步。
图7是包括用于非易失性存储器的加速的查找的电子装置或系统的实施例的示出。在该示出中,未示出与本说明书无关的某些标准和公知的组件。可以组合示出为单独元件的元件,包括例如在单个芯片上组合多个元件的SoC(片上系统)。该装置或系统(通常称为系统700)可以包括但不限于计算系统。
在一些实施例中,系统700可以包括诸如耦合到一个或多个总线或互连(一般示为总线705)以处理信息的一个或多个处理器710的处理单元。处理器710可以包括一个或多个物理处理器和一个或多个逻辑处理器。在一些实施例中,处理器可以包括一个或多个通用处理器,例如CPU或专用处理器处理器。
总线705是用于传输数据的通信单元。为简单起见,总线705被示出为单个总线,但是可以表示多个不同的互连或总线,并且到这种互连或总线的组件连接可以变化。图7所示的总线705是表示任何一个或多个单独的物理总线、点对点连接或两者通过适当的桥接器、适配器或控制器连接的抽象。
在一些实施例中,系统700还包括易失性存储器715或其他动态存储设备或元件,其包括用于存储信息和由处理器710执行的指令的主存储器716。易失性存储器715可以包括但不限于,动态随机存取存储器(DRAM)。系统700还包括非易失性存储器720,其中非易失性存储器可以包括地址间接表AIT 725和控制器722,其可以包含用于存储器结构的每个级别的高速缓存存储器723。在一些实施例中,易失性存储器还包括存储在非易失性存储器720中的AIT 725的全部或部分的影子副本717。在一些实施例中,如果对非易失性存储器720的TLB的查找导致未命中,则用于非易失性存储器720的查找路径包括对易失性存储器715的影子副本AIT 717的查找。
系统700还可以包括用于数据的存储装置730,其可以包括硬盘驱动器或固态驱动器(SSD),以及只读存储器(ROM)735或用于存储处理器710的静态信息和指令的其他静态存储设备。
在一些实施例中,系统700包括耦合到总线705的一个或多个发射机或接收机740。在一些实施例中,系统700可以包括一个或多个天线744,例如偶极或单极天线,用于使用无线发射机、接收机或两者经由无线通信发送和接收数据,以及用于经由有线通信发送和接收数据的一个或多个端口742。无线通信包括但不限于Wi-Fi、BluetoothTM、近场通信和其他无线通信标准。
在一些实施例中,系统700包括用于输入数据的一个或多个输入设备750,包括硬按钮和软按钮、操纵杆、鼠标或其他指示设备、键盘、语音命令系统或手势识别系统。
在一些实施例中,系统700包括输出显示器755,其中显示器755可以包括用于向用户显示信息或内容的液晶显示器(LCD)或任何其他显示技术。在一些环境中,显示器755可以包括也用作输入设备750的至少一部分的触摸屏。输出显示器755还可以包括音频输出,包括一个或多个扬声器、音频输出插孔或其他音频,以及针对用户的其他输出。
系统700还可以包括电池或其他电源760,其可以包括太阳能电池、燃料电池、充电电容器、近场感应耦合或用于在系统700中提供或产生电力的其它系统或设备。由电源760提供的电力可以根据需要分配到系统700的元件。
在上面的描述中,为了解释的目的,阐述了许多具体细节以便提供对所描述的实施例的透彻理解。然而,对于本领域技术人员显而易见的是,可以在没有这些具体细节中的一些的情况下实践实施例。在其他情况下,公知的结构和设备以框图形式示出。所示组件之间可能存在中间结构。本文描述或示出的组件可以具有未示出或描述的附加输入或输出。
各种实施例可以包括各种过程。这些过程可以由硬件组件执行,或者可以体现在计算机程序或机器可执行指令中,其可以用于使通用或专用处理器或用指令编程的逻辑电路执行该过程。可替代地,可以通过硬件和软件的组合来执行该过程。
各种实施例的部分可以被提供为计算机程序产品,其可以包括其上存储有计算机程序指令的计算机可读介质,计算机程序指令可以用于对计算机(或其他电子设备)进行编程以由一个或多个处理器来执行以执行根据某些实施例的处理。计算机可读介质可以包括但不限于磁盘、光盘、光盘只读存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁盘或光卡,闪存或适用于存储电子指令的其他类型的计算机可读介质。此外,实施例也可以作为计算机程序产品下载,其中该程序可以从远程计算机传送到请求计算机。
许多方法以其最基本形式描述,但是可以从方法中的任何一个添加或删除任何过程,并且可以从所描述的消息中中的任何一个添加或减少信息,而不脱离本实施例的基本范围。对于本领域技术人员显而易见的是,可以进行许多进一步的修改和改编。没有提供特定实施例来限制概念,而是为了说明它。实施例的范围不由上面提供的具体示例来确定,而仅由权利要求限定。
如果说元件“A”耦合到元件“B”或与元件“B”耦合,则元件A可以直接耦合到元件B,或者通过例如元件C间接耦合。当说明书或权利要求声称组件、特征、结构、过程或特性A“使得”组件、特征、结构、过程或特性B,这意味着“A”至少是“B”的部分原因,但也可能存在辅助使得“B”的至少一个其它组件、特征、结构、过程或特性。如果说明书指出“可以”、“可能”或“可”包括组件、特征、结构、过程或特性,则不要求包括特定的组件、特征、结构、过程或特性。如果说明书或权利要求涉及“一个(a)”或“一(an)”元件,则这并不意味着仅存在所描述的元素中的一个。
实施例是实现方式或示例。说明书中对“实施例”、“一个实施例”、“一些实施例”或“其他实施例”的引用意味着结合实施例描述的特定特征、结构或特性包括在至少一些实施例中,但是不一定是所有实施例。“实施例”、“一个实施例”或“一些实施例”的各种出现不一定全部指代相同的实施例。应当理解,在示例性实施例的前述描述中,为了简化本公开并且帮助理解各种新颖方面中的一个或多个的目的,各种特征有时在单个实施例、示出或其描述中组合在一起。然而,这种披露方式不应被解释为反映所要求保护的实施例需要比每个权利要求中明确叙述的更多的特征的意图。相反,如以下权利要求所反映的,新颖的方面在于少于单个前述公开的实施例的所有特征。因此,权利要求书明确地并入本说明书中,其中每个权利要求独立地作为单独的实施例。
在一些实施例中,存储器设备包括:第一非易失性存储器;存储器控制器;以及提供针对非易失性存储器的地址间接的地址间接逻辑,其中为了提供地址间接,所述地址间接逻辑用于在所述非易失性存储器中维护地址间接表(AIT),所述AIT包括多个级别,并且复制AIT的至少一部分到第二存储器,第二存储器具有比第一存储器更少的延迟。
在一些实施例中,存储器控制器包括AIT高速缓存,AIT高速缓存包括用于存储在非易失性存储器中的AIT的每个级别的高速缓存。
在一些实施例中,在非易失性存储器的转换检测缓冲器(TLB)中未命中时,对非易失性存储器的查找包括对第二存储器中的AIT的副本的查找。
在一些实施例中,在第二存储器中的AIT的一个或多个级别未命中或错误时,对非易失性存储器的查找包括对AIT高速缓存中的至少一个的查找。
在一些实施例中,非易失性存储器经受耗损均衡,耗损均衡包括非易失性存储器中的存储AIT的一部分。在某些实施例中,存储在非易失性存储器中的AIT和存储在第二存储器中的AIT分别在耗损级别移动时更新。
在一些实施例中,AIT中的被复制到第二存储器的至少一部分包括所述AIT的最后一级。
在一些实施例中,第二存储器包括动态随机存取存储器(DRAM)。
在一些实施例中,一种方法包括:将非易失性存储器的地址间接表(AIT)的一个或多个级别存储到第二存储器中,所述第二存储器包括易失性存储器;接收针对所述非易失性存储器的地址的请求;以及执行对所述地址的查找,包括执行对所述非易失性存储器中的地址的查找,并且在所述地址查找导致未命中时,执行对存储在所述易失性存储器中的所述AIT的查找。
在一些实施例中,该方法还包括对AIT高速缓存中的AIT的每个级别的地址条目进行高速缓存,并且对存储在易失性存储器中的AIT的查找导致未命中时,执行对AIT高速缓存中的至少一个的查找。
在一些实施例中,该方法还包括执行非易失性存储器的耗损均衡,其中耗损均衡的执行包括存储在非易失性存储器中的AIT的存储器位置的耗损均衡。
在一些实施例中,该方法还包括在执行耗损均衡时的耗损级别移动时更新非易失性存储器中的AIT和存储在易失性存储器中的AIT。
在一些实施例中,在包括非易失性存储器的系统的上电时,执行将非易失性存储器的所述AIT的最后一级存储到易失性存储器中。
在一些实施例中,AIT的一个或多个级别的存储包括存储所述AIT的最后一级。
在一些实施例中,易失性存储器包括动态随机存取存储器(DRAM)。
在一些实施例中,计算系统包括:网络接口;用于处理数据和指令并与网络接口通信耦合的中央处理单元(CPU);易失性存储器,该易失性存储器包括用于存储用于处理的数据和指令的主存储器;以及非易失性存储器设备,包括非易失性存储器、存储器控制器和用于提供针对非易失性存储器的地址间接的地址间接逻辑,其中所述地址间接逻辑用于:在所述非易失性存储器中维护地址间接表(AIT),所述AIT包括多个级别,并将AIT的一个或多个级别复制为易失性存储器的一部分中的影子表中。
在一些实施例中,易失性存储器的部分不包括在主存储器内。
在一些实施例中,存储器控制器包括AIT高速缓存,AIT高速缓存包括用于存储在非易失性存储器中的AIT的每个级别的高速缓存。在一些实施例中,在对非易失性存储器的查找中未命中时,对非易失性存储器的查找将包括对影子表的查找。在一些实施例中,在影子表中的未命中或错误时,对非易失性存储器的查找将包括对AIT高速缓存中的至少一个的查找。
在一些实施例中,非易失性存储器经受耗损均衡,耗损均衡包括非易失性存储器中的存储AIT的一部分。
在一些实施例中,至少一个非暂时计算机可读存储介质,其上存储有代表指令序列的数据,当由一个或多个处理器执行时,该指令序列使得处理器执行操作,所述操作包括:将非易失性存储器的地址间接表(AIT)的一个或多个级别存储在第二存储器中,所述第二存储器包括易失性存储器;接收针对所述非易失性存储器的地址的请求;以及执行对所述地址的查找,包括执行对所述非易失性存储器中的地址的查找,并且在所述地址查找导致未命中时,执行对存储在所述易失性存储器中的所述AIT的查找。
在一些实施例中,指令还包括用于对AIT的每个级别的高速缓存地址条目的指令,并且对存储在易失性存储器中的AIT的查找导致未命中时,执行对AIT高速缓存中的至少一个的查找。
在一些实施例中,指令还包括用于执行非易失性存储器的耗损均衡的指令,其中耗损均衡的执行包括非易失性存储器中的存储AIT的一部分的耗损均衡。
在一些实施例中,一种装置包括:用于将非易失性存储器的地址间接表(AIT)的一个或多个级别存储到第二存储器中的单元,所述第二存储器包括易失性存储器;用于接收针对所述非易失性存储器的地址的请求的单元;以及用于执行地址查找的单元,包括用于执行对非易失性存储器中的地址的查找的单元,以及用于在地址查找导致未命中时执行对存储在易失性存储器中的AIT的查找的单元。
在一些实施例中,所述装置还包括用于对AIT的每个级别的地址条目进行高速缓存的单元,以及用于对存储在所述易失性存储器中的AIT的查找导致未命中时执行对所述AIT高速缓存中的至少一个的查找的单元。
在一些实施例中,该装置还包括用于执行非易失性存储器的耗损均衡的单元,其中耗损均衡的执行包括非易失性存储器中的存储AIT的一部分的耗损均衡。
Claims (19)
1.一种存储器设备,包括:
非易失性存储器;
存储器控制器;以及
地址间接逻辑,其用于提供针对所述非易失性存储器的地址间接,其中,为了提供地址间接,所述地址间接逻辑用于:
在所述非易失性存储器中维护地址间接表AIT,所述地址间接表AIT包括多个级别,以及
将所述地址间接表AIT的至少一部分复制到第二存储器,所述第二存储器具有比所述非易失性存储器更少的延迟;
其中,所述存储器控制器包括地址间接表AIT高速缓存,所述地址间接表AIT高速缓存包括针对以下的高速缓存:被存储在所述非易失性存储器中的地址间接表AIT的每个级别;并且
其中,在所述非易失性存储器的转换检测缓冲器(TLB)中未命中时,对所述非易失性存储器的查找包括对所述第二存储器中的所述地址间接表AIT的副本的查找。
2.根据权利要求1所述的存储器设备,其中,在所述第二存储器中的所述地址间接表AIT的一个或多个级别中未命中或错误时,对所述非易失性存储器的查找包括对所述地址间接表AIT高速缓存中的至少一个的查找。
3.根据权利要求1所述的存储器设备,其中,所述非易失性存储器经受耗损均衡,所述耗损均衡包括所述非易失性存储器中的存储所述地址间接表AIT的一部分。
4.根据权利要求3所述的存储器设备,其中,存储在所述非易失性存储器中的地址间接表AIT和存储在所述第二存储器中的地址间接表AIT被同步更新。
5.根据权利要求1所述的存储器设备,其中,所述地址间接表AIT中的被复制到所述第二存储器的至少一部分包括所述地址间接表AIT的最后一级。
6.根据权利要求1所述的存储器设备,其中,所述第二存储器包括动态随机存取存储器(DRAM)。
7.一种方法,包括:
将非易失性存储器的地址间接表AIT的一个或多个级别的副本存储到第二存储器中,所述第二存储器包括易失性存储器;
将所述地址间接表AIT的每个级别的地址条目高速缓存在针对所述非易失性存储器的存储器控制器的地址间接表AIT高速缓存中;
接收针对所述非易失性存储器的地址的请求;以及执行对所述地址的查找,包括:
执行对所述非易失性存储器中的地址的查找,
在所述地址查找导致未命中时,执行对存储在所述易失性存储器中的地址间接表AIT的查找,以及
在所述非易失性存储器的转换检测缓冲器(TLB)中未命中时,对所述非易失性存储器的查找包括对所述第二存储器中的所述地址间接表AIT的一个或多个级别的副本的查找。
8.根据权利要求7所述的方法,还包括执行所述非易失性存储器的耗损均衡,其中,所述耗损均衡的执行包括存储在所述非易失性存储器中的所述地址间接表AIT的存储器位置的耗损均衡。
9.根据权利要求8所述的方法,还包括同步更新所述非易失性存储器中的地址间接表AIT和存储在所述易失性存储器中的地址间接表AIT。
10.根据权利要求7所述的方法,其中,所述非易失性存储器的地址间接表AIT的最后级别到所述易失性存储器中的存储是在包括所述非易失性存储器的系统上电时被执行的。
11.根据权利要求7所述的方法,其中,对所述地址间接表AIT的一个或多个级别的存储包括存储所述地址间接表AIT的最后一级。
12.根据权利要求7所述的方法,其中,所述易失性存储器包括动态随机存取存储器(DRAM)。
13.一种计算系统,包括:
网络接口;
中央处理单元(CPU),其用于处理数据和指令并且与所述网络接口通信地耦合;
易失性存储器,所述易失性存储器包括主存储器,所述主存储器用于存储数据和指令以用于处理;以及
非易失性存储器设备,包括:
非易失存储器,
存储器控制器,以及
地址间接逻辑,其用于提供针对所述非易失性存储器的地址间接;
其中,所述地址间接逻辑用于:
在所述非易失性存储器中维护地址间接表AIT,所述地址间接表AIT包括多个级别,以及
将所述地址间接表AIT的一个或多个级别复制为所述易失性存储器的一部分中的影子表;
其中,所述存储器控制器包括地址间接表AIT高速缓存,所述地址间接表AIT高速缓存包括针对以下的高速缓存:被存储在所述非易失性存储器中的地址间接表AIT的每个级别;并且其中,在所述非易失性存储器的转换检测缓冲器(TLB)中未命中时,对所述非易失性存储器的查找包括对所述非易失性存储器中的所述影子表中的所述地址间接表AIT的一个或多个级别的副本的查找。
14.根据权利要求13所述的系统,其中,所述易失性存储器的所述部分不包括在所述主存储器内。
15.根据权利要求13所述的系统,其中,在所述影子表中未命中或错误时,对所述非易失性存储器的查找包括对所述地址间接表AIT高速缓存中的至少一个的查找。
16.根据权利要求13所述的系统,其中,所述非易失性存储器经受耗损均衡,所述耗损均衡包括所述非易失性存储器中的存储所述地址间接表AIT的一部分。
17.一种装置,包括用于执行根据权利要求7-12中的任一项所述的方法的单元。
18.一种设备,包括:
存储指令的存储器;以及
耦合到所述存储器的处理器,所述指令在被所述处理器执行时执行根据权利要求7-12中的任一项所述的方法。
19.一种具有指令的计算机可读介质,所述指令在被处理器执行时,使所述处理器执行根据权利要求7-12中的任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/752,554 | 2015-06-26 | ||
US14/752,554 US9952801B2 (en) | 2015-06-26 | 2015-06-26 | Accelerated address indirection table lookup for wear-leveled non-volatile memory |
PCT/US2016/034395 WO2016209535A1 (en) | 2015-06-26 | 2016-05-26 | Accelerated address indirection table lookup for wear-leveled non-volatile memory |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107743620A CN107743620A (zh) | 2018-02-27 |
CN107743620B true CN107743620B (zh) | 2022-04-12 |
Family
ID=57586194
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680030450.2A Active CN107743620B (zh) | 2015-06-26 | 2016-05-26 | 用于耗损均衡的非易失性存储器的加速的地址间接表查找 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9952801B2 (zh) |
CN (1) | CN107743620B (zh) |
WO (1) | WO2016209535A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10761739B2 (en) | 2018-08-23 | 2020-09-01 | Micron Technology, Inc. | Multi-level wear leveling for non-volatile memory |
US11537307B2 (en) | 2018-08-23 | 2022-12-27 | Micron Technology, Inc. | Hybrid wear leveling for in-place data replacement media |
US10817187B2 (en) * | 2019-01-24 | 2020-10-27 | Western Digital Technologies, Inc. | Balancing the block wearing leveling for optimum SSD endurance |
CN111581117A (zh) * | 2019-02-19 | 2020-08-25 | 睿宽智能科技有限公司 | 固态硬盘的未映像地址的重导向方法 |
US11442631B2 (en) * | 2019-12-26 | 2022-09-13 | Micron Technology, Inc. | Memory operations with consideration for wear leveling |
FR3106422B1 (fr) * | 2020-01-20 | 2021-12-10 | Continental Automotive | Passerelle de communication de trames de données pour véhicule automobile |
US12118240B2 (en) * | 2020-08-07 | 2024-10-15 | Intel Corporation | Controller and persistent memory shared between multiple storage devices |
US20220342655A1 (en) * | 2021-04-22 | 2022-10-27 | STMicroelectronics (Grand Ouest) SAS | Microcontroller, computer program product, and method for adding an additional function to a computer program |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1048938A (zh) * | 1989-06-09 | 1991-01-30 | 国际商业机器公司 | 计算系统的命令传递 |
CN103946819A (zh) * | 2011-09-30 | 2014-07-23 | 英特尔公司 | 用于非易失性系统存储器的统计耗损均衡 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7925925B2 (en) | 2008-12-30 | 2011-04-12 | Intel Corporation | Delta checkpoints for a non-volatile memory indirection table |
US8417871B1 (en) * | 2009-04-17 | 2013-04-09 | Violin Memory Inc. | System for increasing storage media performance |
US8935458B2 (en) * | 2011-01-05 | 2015-01-13 | Intel Corporation | Drive assisted system checkpointing via system restore points |
CN103946812B (zh) | 2011-09-30 | 2017-06-09 | 英特尔公司 | 用于实现多级别存储器分级体系的设备和方法 |
US9229853B2 (en) * | 2011-12-20 | 2016-01-05 | Intel Corporation | Method and system for data de-duplication |
US9846641B2 (en) | 2012-06-18 | 2017-12-19 | International Business Machines Corporation | Variability aware wear leveling |
US9418700B2 (en) | 2012-06-29 | 2016-08-16 | Intel Corporation | Bad block management mechanism |
US10380030B2 (en) * | 2012-12-05 | 2019-08-13 | Arm Limited | Caching of virtual to physical address translations |
DE102014100800A1 (de) * | 2014-01-24 | 2015-07-30 | Hyperstone Gmbh | Verfahren zur zuverlässigen Adressierung eines großen Flash-Speichers |
US20160019160A1 (en) * | 2014-07-17 | 2016-01-21 | Sandisk Enterprise Ip Llc | Methods and Systems for Scalable and Distributed Address Mapping Using Non-Volatile Memory Modules |
-
2015
- 2015-06-26 US US14/752,554 patent/US9952801B2/en active Active
-
2016
- 2016-05-26 WO PCT/US2016/034395 patent/WO2016209535A1/en active Application Filing
- 2016-05-26 CN CN201680030450.2A patent/CN107743620B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1048938A (zh) * | 1989-06-09 | 1991-01-30 | 国际商业机器公司 | 计算系统的命令传递 |
CN103946819A (zh) * | 2011-09-30 | 2014-07-23 | 英特尔公司 | 用于非易失性系统存储器的统计耗损均衡 |
Also Published As
Publication number | Publication date |
---|---|
WO2016209535A1 (en) | 2016-12-29 |
US20160378396A1 (en) | 2016-12-29 |
US9952801B2 (en) | 2018-04-24 |
CN107743620A (zh) | 2018-02-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107743620B (zh) | 用于耗损均衡的非易失性存储器的加速的地址间接表查找 | |
US10331356B2 (en) | Data writing processing into memory of a semiconductor memory device by using a memory of a host device | |
US11119940B2 (en) | Sequential-write-based partitions in a logical-to-physical table cache | |
US9996466B2 (en) | Apparatus, system and method for caching compressed data | |
US10296224B2 (en) | Apparatus, system and method for increasing the capacity of a storage device available to store user data | |
US8938601B2 (en) | Hybrid memory system having a volatile memory with cache and method of managing the same | |
US10565124B2 (en) | Memory system and method for controlling nonvolatile memory | |
KR102711044B1 (ko) | 메모리 시스템에서의 유효 데이터 체크 방법 및 장치 | |
KR20170087044A (ko) | Os 및 애플리케이션 투명 메모리 압축 기술 | |
JP2013137770A (ja) | Lbaビットマップの使用 | |
CN113535605A (zh) | 存储装置及其操作方法 | |
US11403011B1 (en) | Host memory buffer allocation management | |
US20190324683A1 (en) | Offload defrag operation for host-managed storage | |
KR20200019421A (ko) | 메모리 시스템 내 대용량 데이터 저장이 가능한 블록에서의 유효 데이터 체크 방법 및 장치 | |
US20240231663A1 (en) | Storage device and method of operating the same | |
KR20210011176A (ko) | 메모리 시스템의 액세스 동작 방법 및 장치 | |
US20240094903A1 (en) | Hybrid logical to physical mapping for zns based ssds | |
CN115809018A (zh) | 改善系统的读取性能的设备和方法 | |
US20200042459A1 (en) | Storage device providing a virtual memory region, electronic system including the same, and method of operating the same | |
US11556249B2 (en) | Delaying random data relocation for reducing write amplification in storage devices | |
US11704055B2 (en) | Storage device, controller and method for operating thereof | |
US11604735B1 (en) | Host memory buffer (HMB) random cache access | |
JP2018136970A (ja) | 情報処理装置 | |
JP2022144314A (ja) | メモリシステム及びストレージ装置 | |
US11657000B2 (en) | Controller and memory system including the same |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |