CN108536612B - 确定用于非易失性存储器中的地址映射的控制状态 - Google Patents
确定用于非易失性存储器中的地址映射的控制状态 Download PDFInfo
- Publication number
- CN108536612B CN108536612B CN201810168239.8A CN201810168239A CN108536612B CN 108536612 B CN108536612 B CN 108536612B CN 201810168239 A CN201810168239 A CN 201810168239A CN 108536612 B CN108536612 B CN 108536612B
- Authority
- CN
- China
- Prior art keywords
- network
- switch
- ordered list
- pba
- generating
- 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
- 238000013507 mapping Methods 0.000 title claims abstract description 174
- 230000015654 memory Effects 0.000 title claims abstract description 105
- 238000000034 method Methods 0.000 claims abstract description 87
- 230000001186 cumulative effect Effects 0.000 claims abstract description 43
- 230000006870 function Effects 0.000 claims description 101
- 230000001174 ascending effect Effects 0.000 claims description 4
- 238000012163 sequencing technique Methods 0.000 claims description 4
- 230000000694 effects Effects 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 64
- 230000008569 process Effects 0.000 description 54
- 238000003860 storage Methods 0.000 description 49
- 238000012545 processing Methods 0.000 description 38
- 101100520663 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) ADD66 gene Proteins 0.000 description 23
- 238000004364 calculation method Methods 0.000 description 14
- 101150101057 PBA1 gene Proteins 0.000 description 9
- 238000012546 transfer Methods 0.000 description 9
- 230000008859 change Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 239000011159 matrix material Substances 0.000 description 6
- 239000007787 solid Substances 0.000 description 6
- 238000009825 accumulation Methods 0.000 description 5
- 238000013459 approach Methods 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 4
- 102000020897 Formins Human genes 0.000 description 3
- 108091022623 Formins Proteins 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000005055 memory storage Effects 0.000 description 3
- 101150030566 CCS1 gene Proteins 0.000 description 2
- 230000002146 bilateral effect Effects 0.000 description 2
- 101150104736 ccsB gene Proteins 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000000737 periodic effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 101710178035 Chorismate synthase 2 Proteins 0.000 description 1
- 101710152694 Cysteine synthase 2 Proteins 0.000 description 1
- 230000003321 amplification Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 239000005022 packaging material Substances 0.000 description 1
- 238000011112 process operation Methods 0.000 description 1
- 239000000047 product Substances 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 210000000352 storage cell Anatomy 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000007704 transition 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0607—Interleaved addressing
-
- 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
- G06F2212/1044—Space efficiency 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/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- 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)
- Information Transfer Between Computers (AREA)
- Memory System (AREA)
Abstract
公开了用于确定用于将逻辑块地址(LBA)映射到物理块地址(PBA)的累积控制状态的系统和方法。一个这样的系统包括:双调网络,该双调网络包含第一开关并且配置为接收第一随机排序列表和随机开关设定,在第一开关处使用随机开关设定来确定第一随机排序列表的置换,其中置换包含第二随机排序列表,并且输出第二随机排序列表;双调排序器,该双调排序器包含第二开关并且配置为接收第二随机排序列表,对所述第二随机排序列表进行排序,并且输出用于实现排序的第二开关的设定,其中第二开关设定限定累积控制状态;以及访问网络,该访问网络配置为使用累积控制状态来确定非易失性存储器(NVM)的PBA以使能对应的LBA的数据访问。
Description
相关申请的交叉引用
本申请是2017年3月3日提交的美国专利申请第15/449,612号的部分继续申请,其代理人案号为HGST-1010(H20151149US4),标题为“ACCESS NETWORK FOR ADDRESS MAPPINGIN NON-VOLATILE MEMORIES”,该申请要求2016年7月11日提交的美国临时申请第62/360,916号的优先权和权益,其代理人案卷号为HGST-1011PROV(H20161077),标题为“GENERATION OF RANDOM ADDRESS MAPPING IN NON-VOLATILE MEMORIES USING LOCALAND GLOBAL INTERLEAVING”,并且是2015 年12月11日提交的美国专利申请第14/967,169号的部分继续申请,其代理人案号为HGST-1003(H20151149US2),标题为“GENERATION OFRANDOM ADDRESS MAPPING IN NON-VOLATILE MEMORIES USING LOCALAND GLOBALINTERLEAVING”,其要求2015年7月14日提交的美国临时申请第62/192,509号的优先权和权益,其代理人案卷号为 HGST-1003P(H20151149),标题为“SYSTEMS AND METHODS FORPROVIDING DYNAMIC WEAR LEVELING IN NON-VOLATILE MEMORIES”,以上引用的每个申请的全部内容通过引用并入本文。
技术领域
本公开的各方面通常涉及映射存储器地址,并且更具体而言涉及确定用于非易失性存储器中的地址映射的控制状态。
背景技术
在各种消费电子产品中,结合非易失性存储器(NVM)的固态驱动器经常替代或补充用于大容量储存的传统旋转硬盘驱动器。这些非易失性存储器可以包括一个或多个闪存装置,可以将闪存装置逻辑地划为块,并且可以将每一个块进一步逻辑地划分为可寻址页面。这些可寻址页面可以是各种大小(例如,512字节、1千字节、2千字节、4千字节)中的任何一种,其可以匹配或不匹配由主机计算装置使用的逻辑块地址大小。
在写入操作期间,可以将数据写入闪存装置的块中的单独可寻址页面。然而,通常必须擦除整个块,以便擦除或重写页面。当然,取决于储存在其中的数据,可以或多或少地擦除每个闪存装置中的不同块。因而,由于闪存装置的储存单元的寿命与擦除周期的数量相关,所以许多固态驱动器进行损耗均衡操作(静态和动态),以便将擦除更均匀地分布在闪存装置的所有的块之上。
为了确保均匀地使用NVM(例如闪存装置)中的所有物理页面,通常的做法是维护所有逻辑页面的使用频率的表格,并且周期性地将最频繁访问的逻辑地址映射到物理线路。然而,这些基于表格间接寻址的方法会在表格大小上产生显著的开销。例如,对于具有512字节的页面的2太字节(TB) 的储存装置使用表格方法,将需要137千兆字节(GB)的表格。这显然不实际。
发明内容
在一个方面,本公开提供了用于确定累积控制状态的系统,累积控制状态用于将逻辑块地址(LBA)映射到物理块地址(PBA),该系统包括:双调网络,双调网络包括第一开关,并且配置为接收第一随机排序列表和随机开关设定,在第一开关处使用随机开关设定来确定第一随机排序列表的置换,其中置换包括第二随机排序列表;并且输出第二随机排序列表;双调排序器,其包括第二开关,并且配置为接收第二随机排序列表,对第二随机排序列表进行排序,并且输出用于实现排序的第二开关的设定,其中第二开关设定限定累积控制状态;以及访问网络,其配置为使用累积控制状态来确定非易失性存储器(NVM)的PBA,以使能对应的LBA的数据访问。
在另一个方面,本公开提供了用于确定用于将逻辑块地址(LBA)映射到物理块地址(PBA)的累积控制状态的方法,该方法包括:随机生成第一开关设定;接收第一随机排序列表和第一开关设定;使用第一开关设定来生成第一随机排序列表的置换,其中置换包括第二随机排序列表;使用双调排序对第二随机排序列表进行排序;确定用于实现双调排序的第二开关的设定,其中第二开关设定限定累积控制状态;并且使用累积控制状态来确定非易失性存储器(NVM)的PBA,以使能对应的LBA的数据访问。
在另一个方面,本公开提供了用于确定用于将逻辑块地址(LBA)映射到物理块地址(PBA)的累积控制状态的系统,该系统包括:随机生成第一开关设定的装置;接收第一随机排序列表和第一开关设定的装置;使用第一开关设定来生成第一随机排序列表的置换的装置,其中置换包括第二随机排序列表;使用双调排序来对第二随机排序列表进行排序的装置;确定用于实现双调排序的第二开关的设定的装置,其中第二开关限定限定累积控制状态;以及使用累积控制状态来确定非易失性存储器(NVM)的PBA以使能对应的LBA的数据访问的装置。
附图说明
图1是根据本公开的一个实施例的可以进行本地地址映射的固态装置 (SSD)的框图。
图2是根据本公开的一个实施例的用于进行本地地址映射的系统的框图,该系统包含可以用于将逻辑块地址(LBA)映射到物理块地址(PBA)的访问网络和累积状态计算块。
图3是根据本公开的一个实施例的用于损耗均衡的过程的流程图。
图4是根据本公开的一个实施例的将LBA映射到PBA的访问网络的框图,该访问网络包含可以在图2的地址映射系统中使用的选择逻辑块。
图5是根据本公开的一个实施例的用于将LBA映射到PBA的过程的流程图。
图6-图9是根据本公开的一个实施例的在离散时间处的示例性物理块地址的图,其图示出对于PBA和移动索引变量的示例性值,关于将LBA映射到PBA的选择逻辑装置的操作。
图10是根据本公开的一个实施例的累积状态计算块的框图,其包含可以在图2的地址映射系统中使用的双调网络和双调排序器。
图11是根据本公开的一个实施例的双调网络的图。
图12是根据本公开的一个实施例的双调排序器的图,该双调排序器包含排序器表和比较类型表。
图13是根据本公开的一个实施例的用于确定用于将LBA映射到PBA 的累积控制状态的过程的流程图。
图14是根据本公开的一个实施例的配置为确定用于将LBA映射到PBA 的累积控制状态的设备的示例性硬件实现方式的框图。
图15是根据本公开的一个实施例的用于本地地址映射的另一个系统的框图,该系统包含访问网络和用于储存预计算的累积状态值的一个或多个只读存储器(ROM)。
图16a、图16b、图16c是根据本公开的一个实施例的用于储存可在图 15的系统中使用的控制状态值、累积控制状态值和使用指示符的ROM的示意图。
图17是根据本公开的一个实施例的用于损耗均衡的过程的流程图。
图18是根据本公开的一个实施例的将LBA映射到PBA的另一个访问网络的框图,该访问网络包含可以在图15的地址映射系统中使用的选择逻辑块。
图19是根据本公开的一个实施例的间接表的图示的框图。
图20是根据本公开的一个实施例的用于使用本地交织和全局交织来执行随机地址映射的总体系统的框图。
图21是根据本公开的一个实施例的使用全局映射和本地交织来执行随机地址映射的过程的流程图。
图22是根据本公开的一个实施例的使用全局映射的位反转(G个位) 和本地交织的置换(N-G个位)执行随机地址映射的系统的框图。
图23是示出根据本公开的一个实施例的使用对G个位的位反转的全局映射的数值示例的表。
图24是示出根据本公开的一个实施例的使用对N-G个位的置换的本地交织的数值示例的表。
图25是示出根据本公开的一个实施例示出使用位反转的全局映射和使用置换的本地交织的数值示例的表。
图26是根据本公开的一个实施例的可以用于执行本地交织的多级互联网络(MIN)的框图。
图27是根据本公开的一个实施例的可以用于执行本地交织的蝶形MIN 的框图。
图28是根据本公开的一个实施例的可以用于执行本地交织的Benes MIN的框图。
图29是根据本公开的一个实施例的可以用于执行本地交织的Omega MIN的框图。
图30示出了根据本公开的一个实施例的可以用于执行本地交织的修改的OmegaMIN的框图。
具体实施方式
现在参考附图,公开了用于确定用于将逻辑块地址(LBA)映射到物理块地址(PBA)的累积控制状态的系统和方法。一个示例性系统包含双调网络,双调网络包含第一开关,并且配置为接收第一随机排序列表和随机开关设定,在第一开关处使用随机开关设定来确定第一随机排序列表的置换,其中置换包含第二随机排序列表,并且输出第二随机排序列表。该示例性系统还包含双调排序器,双调排序器包含第二开关,并且配置为接收第二随机排序列表,对第二随机排序列表进行排序,并且输出用于实现排序的第二开关的设定,其中第二开关设定限定累积控制状态;以及访问网络,访问网络配置为使用累积控制状态来确定非易失性存储器(NVM)的PBA,以使能对应的LBA的数据访问。在一个方面,双调网络和双调排序器可以一起工作以生成用于损耗均衡的随机映射,同时还提供回到给定映射中的任何一个的路径,以稍后准确地确定可以将哪个逻辑地址映射到哪个物理地址。在一个方面,双调网络工作以生成随机映射,而双调排序器工作以生成“密钥”(例如,累积控制状态或CCS)以稍后回到随机映射。
一个示例性方法涉及随机生成第一开关设定,接收第一随机排序列表和第一开关设定,使用第一开关设定来生成第一随机排序列表的置换,其中置换包括第二随机排序列表,使用双调排序来对第二随机排序列表进行排序,确定用于实现双调排序的第二开关的设定,其中第二开关设定限定累积控制状态,并且使用累积控制状态来确定非易失性存储器(NVM)的PBA,以使能对应的LBA的数据访问。
这些映射系统和对应的方法的实施例可以基本上包括比以上所述的间接表更少的硬件,更具体而言,包含更少的用于管理将LBA映射到PBA的储存体。此外,使用如图20-图30所示且以下详细讨论的本地和全局交织,这些映射系统和方法可以很好地结合非易失性存储器中的随机地址映射工作。
图1是可以根据本公开的一个实施例的可以进行本地地址映射的固态装置(SSD)的框图。系统100包含主机102和耦合到主机102的SSD储存装置104。主机102向SSD储存装置104提供命令,以在主机102与SSD储存装置104之间传输数据。例如,主机102可以向SSD储存装置104提供写入命令,以向SSD储存装置104写入数据;或者向SSD储存装置104提供读取命令,以从SSD储存装置104读取数据。主机102可以是具有对于数据储存或取回的需求和用于与SSD储存装置104通信的可兼容接口的任何系统或装置。例如,主机102可以是计算装置、个人计算机、便携式计算机、或工作站、服务器、个人数字助理、数码相机、数字电话等。
SSD储存装置104包含主机接口106、控制器108、存储器110和非易失性存储器112。主机接口106耦合到控制器108,并且促进主机102与控制器108之间的通信。附加地,控制器108耦合到存储器110和非易失性存储器112。主机接口106可以是任何类型的通信接口,诸如集成驱动电子设备(IDE)接口、通用串行总线(USB)接口、串行外设(SP)接口、高级技术附件(ATA)接口、小型计算机系统接口(SCSI)、IEEE 1394(火线) 接口等。在一些实施例中,主机102包含SSD储存装置104。在其它实施例中,SSD储存装置相对于主机102是远程的,或包含在与主机102通信地耦合的远程计算系统中。例如,主机102可以通过无线通信链路与SSD储存装置104通信。
控制器108控制SSD储存装置104的操作。在各种实施例中,控制器 108通过主机接口106从主机102接收命令,并且执行命令以在主机102与非易失性存储器112之间传输数据。控制器108可以包含任何类型的处理装置(诸如微处理器、微控制器、嵌入式控制器、逻辑电路、软件、固件等) 用于控制SSD储存装置104的操作。
在一些实施例中,本文中所述的由控制器108执行的功能的一些或全部可以替代地由SSD储存装置104的另一个元件执行。例如,SSD储存装置 104可以包含微处理器、微控制器、嵌入式控制器、逻辑电路、软件、固件或任何类型的处理装置,用于执行本文中所述的由控制器108所执行的功能中的一个或多个。在一些实施例中,本文中所述的由控制器108执行的功能中的一个或多个可以替代地由主机102执行。在一些实施例中,本文中所述的由控制器108执行的功能中的一个或多个可以替代地由另一个元件执行,诸如包含非易失性存储器元件与磁储存元件的混合驱动器中的控制器。
存储器110可以是能够储存数据的任何存储器、计算装置或系统。例如,存储器110可以是随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、同步动态随机存取存储器(SDRAM)、闪存储存装置、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)等。在各种实施例中,控制器108使用存储器110或其部分以在主机102与非易失性存储器112之间传输数据期间储存数据。例如,存储器110或存储器110的部分可以是缓存存储器。
非易失性存储器(NVM)112从控制器108接收数据并储存数据。非易失性存储器112可以是任何类型的非易失性存储器,诸如闪存储存系统、固态驱动器、闪存卡、安全数字(SD)卡、通用串行总线(USB)存储器装置、 CompactFlash卡、SmartMedia装置、闪存储存阵列等。
控制器108或NVM 112可以配置为执行本文中所述的本地地址映射方案的任何一个。
解决以上背景部分针对基于页面的NVM所讨论的大间接表问题的一种方法是改善将逻辑页面映射到物理页面的过程,更具体而言,将逻辑块地址 (LBA)映射到物理块地址(PBA)的过程。
用于损耗均衡的本地地址映射
图2是根据本公开的一个实施例的用于执行本地地址映射的系统200的框图,系统200包含可以用于将逻辑块地址(LBA)映射到物理块地址(PBA) 的访问网络202和累积状态计算块204。系统200还包含初始和第二存储器映射块206、后台交换调度器208、以及映射状态生成和改变块210。在一个方面,访问网络202可以以硬件实现(例如,具有3个周期流水线延迟的超低延迟,低逻辑装置和存储器等同于少于10000个逻辑门),并且系统200 的剩余部件可以以固件和/或软件实现。
以下将更详细地讨论访问网络202,访问网络202从累积控制状态块204 接收CCS1和CCS2中的最新的两个累积控制状态,以及从后台交换调度器 208接收移动索引(moveindex)。使用这些输入,访问网络202可以使用两个从属网络(例如,双调网络或Benes网络)来确定将给定的逻辑块地址(LBA) 映射到哪个物理块地址(PBA),两个从属网络中的每一个接收两个累积控制状态中的一个以生成可能的映射。
以下将更详细地讨论累积状态计算块204,累积状态计算块204(例如,累积控制状态确定器)初始时从初始和第二存储器映射块206接收cs1和cs2 以及CCS1中的控制状态。在一个方面,初始控制状态可以具有随机值并且可以将CCS1设定为cs1。在初始周期之后,累积状态计算块204可以从映射状态生成改变块210接收这些输入。使用这些输入,累积状态计算块204 可以确定第二累积控制状态CCS2,其为CCS1和cs2的函数。控制状态cs1 和cs2可以用作主双调网络或其它合适的网络的输入,并且最终用于确定第二累积控制状态CCS2。累积控制状态CCS1和CCS2可以由访问网络202 使用以确定当前的LBA到PBA映射。在一个方面,当一旦系统完成后台中的所有传输,系统周期性地改变映射时,可以使用主双调网络在固件中计算累积状态。可以使用新的控制状态(例如,cs2)在具有另一个双调网络的固件中调度后台移动。
在诸如损耗均衡的若干应用中,在周期的基础上改变其从LBA到PBA 的随机存储器映射,系统200可能需要在任何给定的时间点计算累积随机映射,使得给定的LBA可以精确地位于正确的PBA。在一个示例中,假设在时间t1有具有映射函数f1(t1)的大小为2^32的存储器的随机映射,在时间t2有具有映射函数f2的大小为2^32的存储器的随机映射、在时间t3有具有映射函数f3的大小为2^32的存储器的随机映射,...,在时间tn有具有映射函数fh的大小为2^32的存储器的随机映射。在操作中,系统200可以在时间tn计算累积函数(cfn),使得cfn=fh(cfm),其中cfm是在时间tm 的累积函数,并且tm=tn-1。在一个方面,系统200可以使用双调网络和随机控制开关种子(例如,使用累积状态计算块204)来生成随机映射函数(fh)。双调网络可以配置为使用随机控制开关种子(例如,cs1、cs2、...、csn)来提供随机映射函数(fh)。现在累积函数(cfn)可以通过主双调排序器,并且将控制开关位置记录在排序过程中。现在可以使用这些控制开关位置 CCSn来编程数据宽度为1并且网络大小为32的双调网络,从而为2^32个条目生成累积随机映射(例如,使用访问网络202)。在任何时候,2^32个条目中的任何一个可以通过该网络以生成一个置换的地址。将在以下更详细地描述这些操作,更具体而言,关于图10-图13描述。
后台交换调度器208配置为执行储存在预选择的PBA处的数据的周期性交换。在一个方面,后台交换调度器208可以配置为每100个主机写入执行一次交换。在另一个方面,后台交换调度器208可以配置为每X个主机写入执行一次交换,其中X是正整数。在一个方面,后台交换调度器208配置为根据对于两个页面的新映射(交换)执行移动,因而对于每200个主机写入调度移动。后台交换调度器208可以维护移动计数器,移动计数器可以对于每200个主机写入增长1。在一个方面,用使用新的控制状态(例如,cs2) 的双调网络的查找,以物理存储器上的结构化方式完成移动。在一个方面,移动计数器(例如,移动索引)从1增长到N/2。移动计数器可以被称为移动索引、move_index、MOVE_INDEX、move_counter和movecounter。对于每个值,调度交换使得移动计数器处的物理存储器与该物理存储器交换。例如,在一个实施例中,后台交换调度器208可以如下执行交换:
Physical addr1=MOVE_INDEX;
Physical addr2=f_cs2(Physical_addr1);
SWAP(Physical Addr1,Physical Addr2)
在这种情况下,f_cs2是基于控制状态cs2生成的随机映射函数。以下将在图10的讨论中更详细地描述cs2的确定。在一个示例中,cs2可以是对于具有32个输入和32个输出的双调网络长度为320位的随机生成的位序列。
在一个实施例中,MOVE_INDEX在初始存储器和第二存储器块206中设定为0,且还在映射状态生成和改变块210中设定为0。在后台交换调度器208中,对于任意数量的主机写入(例如,如在图2中每100个主机写入或每200个主机写入或其它合适的数量的主机写入),MOVE_INDEX可以增长1。在另一个实施例中,由于可能更容易以硬件跟踪主机写入,所以可以以硬件实现MOVE_INDEX增长逻辑。在这种情况下,MOVE_INDEX可以从实现MOVE_INDEX增长逻辑的新硬件逻辑块通信到后台交换调度器 208,并且直接将MOVE_INDEX通信到访问网络块202,而不是从后台交换调度器208(例如,固件)通信到访问网络202(例如,硬件)。
在一个方面,后台交换调度器208的这些操作可能导致1%的写入放大。在一个方面,假设交换操作是原子的。
映射状态生成和改变块210配置为一旦完成所有交换传输就更新控制状态和累积控制状态。在一个方面,当移动索引等于N/2时,则应当完成从之前的映射到当前映射的所有交换。一旦完成,则映射状态生成和改变块210 可以生成新映射。在一个方面,移动计数器(例如,移动索引)可以被复位(例如,到0或者1)。每当映射改变完成时,可以在固件中计算累积控制状态,并且可以将累积控制状态供应到硬件。可以在固件中略微提前调度这些值(例如,在映射状态生成和改变块210中)以确保到硬件(例如,访问网络202)的及时通信。在一个方面,可以将旧的控制状态(cs1)设定为新的控制状态(cs2),并且可以将旧的累积控制状态(CCS1)设定为新的累积控制状态(CCS2)。
将在以下更详细地讨论访问网络202和累积状态计算块204的方面。
示例性损耗均衡过程
图3是根据本公开的一个实施例的用于损耗均衡的过程300的流程图。在一个实施例中,过程300可以由图2的损耗均衡系统200或本文中所述的其它损耗均衡系统的任何一个执行。
在块302中,该过程确定指示物理块地址(PBA)与逻辑块地址(LBA) 之间的随机映射的状态的累积控制状态。在某些方面,块302的动作可以通过控制器108来实现,或者如图1所示通过控制器108结合主机102来实现。在某些方面,块302可以通过图2的包含累积状态计算确定器204的损耗均衡系统200、图1的控制器108和/或那些部件的任何组合来实现。在一个方面,块302可以通过累积状态计算确定器204来实现。
在块304中,该过程基于累积控制状态将逻辑块地址(LBA)转换为物理块地址(PBA)。在某些方面,块304的动作可以通过控制器108来实现,或者如图1所示通过控制器108结合主机102来实现。在某些方面,块304 可以通过图2的包含访问网络202的损耗均衡系统200、图1的控制器108 和/或那些部件的任何组合来实现。在一个方面,块304可以通过访问网络 202来实现。
在块306中,该过程基于控制状态交换分配给预选择的LBA的PBA。在某些方面,块306的动作可以通过控制器108来实现,或者如图1所示通过控制器108结合主机102来实现。在某些方面,块306可以通过图2的包含后台交换调度器208的损耗均衡系统200、图1的控制器108和/或那些部件的任何组合来实现。在一个方面,块306可以通过后台交换调度器208来实现。
在一个方面,累积控制状态包含第一累积控制状态和第二累积控制状态,其中控制状态包含第一控制状态和第二控制状态,且其中第二累积控制状态是第一累积控制状态和第二控制状态的函数。以上关于图2和以下关于图11 更详细地描述累积控制状态(例如,CCS1和CCS2)和控制状态(例如,cs1、 cs2)。
在一个方面,该过程还可以包含在交换预选择数量的PBA之后,将第一存储器映射改变为第二存储器映射,其中第一存储器映射和第二存储器映射各自包含预选择数量的PBA。在一个方面,这可以由图2的映射状态块 210执行。
在一个方面,基于控制状态交换分配给预选择的LBA的PBA包含在对非易失性存储器系统的非易失性存储器的预选择数量的访问之后交换PBA。在一个方面,预选择数量的访问可以是非易失性存储器的100次写入。
在一个方面,过程300还包含使用第一函数从LBA生成第一PBA候选,使用第二函数从LBA生成第二PBA候选,并且基于与储存在第一PBA候选处的数据的后台交换和储存在第二PBA候选处的数据的后台交换相关的信息,选择第一PBA候选或第二PBA候选用于数据访问。在一个方面,这些动作可以由图2的访问网络202或图3的访问网络300执行。在一个方面,第一函数或第二函数中的至少一个包含由多级互连网络或分组密码(block cipher)中的至少一个执行的函数。在一个方面,第二累积控制状态反映用于实现第一累积控制状态的置换的排序的开关设定,其中使用第二控制状态生成该置换。
图4是根据本公开的一个实施例的将LBA映射到PBA的访问网络400 的框图,访问网络400包含可以在图2的地址映射系统中使用的选择逻辑块 402。在一个方面,访问网络400可以在图2的系统中用作访问网络202。系统400还包含第一双调网络404和第二双调网络406。第一双调网络404可以接收LBA和新的累积控制状态(CCS2)并且生成第二可能物理块地址 (PBA2)。类似地,第二双调网络406可以接收LBA和旧的累积控制状态 (CCS1)并且生成第一可能物理块地址(PBA1)。然后选择逻辑装置402 可以分析页面中的可能的PBA的位置,以使用预选择的算法来确定哪个是正确的映射。更具体而言,选择逻辑装置402可以将PBA2与页面中的PBA 的数量(N)除以2(例如,N/2)进行比较。如果PBA2小于N/2,则临时变量(Pba_mc)设定为PBA2。否则,Pba_mc设定为PBA1。如果Pba_mc 小于来自图2的后台交换调度器208的移动索引(OVE_INDEX),则正确的 PBA(例如,输出PBA)为PBA2。否则,正确的PBA为PBA1。以下将进一步描述选择逻辑装置402的操作。
在一个方面,选择逻辑块402可以有效地确定两个可能PBA(例如,PBA1 和PBA2)中的哪个含有对应于所关心的LBA的实际数据。该确定基于页面中的PBA的中点(例如,N/2)和移动索引。在将PBA1和PBA2的地址与中点和移动索引进行比较时,选择逻辑块402有效地确定两个PBA中的哪一个含有对应于在给定时间所关心的LBA的实际数据。例如,在以下将更详细地讨论的图6中,在时间段CF0,LBA 9储存在PBA 3中,在CF1储存在PBA 8中,在CFn-1储存在PBA 14中,并且在CFn储存在PBA4中。该系统可以跟踪最后两个可能位置PBA14和PBA4,它们是ccs1和ccs2的函数的输出。然后选择逻辑块402可以准确地确定与LBA9相关的数据是仍然存在于PBA 14或是移动到PBA4。
在一个方面,第一双调网络404和第二双调的406可以分别由第一网络和第二网络替换。在这种情况下,第一网络可以配置为使用第一函数从LBA 生成第一PBA候选,并且配置为使用第二函数从LBA生成第二PBA候选。在一个方面,第一函数和/或第二函数可以是由多级互连网络和/或分组密码执行的函数。多级互连网络可以用Benes网络、逆Benes网络、双调网络、逆双调网络、Omega网络、逆Omega网络、蝶形网络或逆蝶形网络中的一个或多个来实现。在一个方面,第一函数和/或第二函数可以包含异或 (exclusive OR)函数和由多级互连网络和/或分组密码执行的函数
在一个方面,选择逻辑装置402、第一双调网络404和/或第二双调网络 406的任何一个可以是专用目的处理器或专门地配置为/编程为执行包含在该应用内的任何函数(诸如图5中示出的函数)的其它合适的硬件(诸如专用集成电路或以上所述的其它硬件)。
图5是根据本公开的一个实施例的用于将LBA映射到PBA的过程500 的流程图。在一个实施例中,过程500可以由图4的访问网络400或本文中所述的其它本地地址映射系统中的任何一个执行。在块502中,该过程使用第一函数从LBA生成第一物理块地址(PBA)候选。在一个方面,第一函数可以是由如以上所述的第一网络(例如,图4的第一双调网络404)执行的函数。在某些方面,块502的动作可以通过控制器108来实现,或者如图1所示通过控制器108结合主机102来实现。在某些方面,块502可以通过图4的第一双调网络404、图4的第二双调网络406、图4的选择逻辑装置 402、图1的控制器108和/或那些部件的任何组合来实现。在一个方面,块 502可以通过第一双调网络404来实现。在一个方面,块502可以表示使用第一函数从LBA生成第一PBA候选的一个装置。
在块504中,该过程使用第二函数从LBA生成第二物理块地址(PBA) 候选。在一个方面,第二函数可以是由如以上所述的第二网络(例如,图4 的第二双调网络406)执行的函数。在某些方面,块504的动作可以通过控制器108来实现,或者如图1所示通过控制器108结合主机102来实现。在某些方面,块504可以通过图4的第一双调网络404、图4的第二双调网络 406、图4的选择逻辑装置402、图1的控制器108和/或那些部件的任何组合来实现。在一个方面,块504可以通过第二双调网络406来实现。在一个方面,块504可以表示使用第二函数从LBA生成第二PBA候选的一个装置。
在块506中,该过程基于与储存在第一PBA候选处的数据的后台交换和储存在第二PBA候选处的数据的后台交换相关的信息,选择第一PBA候选或第二PBA候选用于数据访问。在一个方面,该过程选择可以由图4的选择逻辑装置402执行。在某些方面,块506的动作可以通过控制器108来实现,或者如图1所示通过控制器108结合如主机102来实现。在某些方面,块506可以通过图4的选择逻辑装置402、图1的控制器108和/或那些部件的任何组合来实现。在一个方面,块506可以通过选择逻辑装置402来实现。在一个方面,块506可以代表一个装置,该装置基于与储存在第一PBA候选处的数据的后台交换和储存在第二PBA候选处的数据的后台交换相关的信息,选择第一PBA候选或第二PBA候选用于数据访问。
在一个方面,与储存在第一PBA候选处的数据的后台交换和与储存在第二PBA候选处的数据的后台交换相关的信息包含储存在第一PBA候选处的数据的后台交换的状态和储存在第二PBA候选处的数据的后台交换的状态。在一个方面,第一PBA候选和第二PBA候选可以包含在PBA映射内。在这种情况下,状态数据的示例可以包含第二PBA候选相对于PBA映射中的所有条目的中点的位置、基于第二PBA候选的位置的PBA移动计数器和 /或指示在PBA映射内的PBA交换的当前位置的移动索引。以下将更详细地描述选择过程和映射状态数据的使用的示例。
在一个方面,处理器500还可以包含使用后台数据移动或后台数据交换中的至少一个将含有所选择的PBA候选的物理地址空间的一部分映射到物理地址空间的另一个部分。在一个方面,该映射可以由图2的后台交换调度器208执行。
在替代实施例中,可以使用存储器表(参见图12的示例性系统1200,其可以在ROM或其它合适的存储器中储存各种控制状态)来执行选择第一 PBA候选或第二PBA候选。
在一个方面,该过程使能NVM的数据访问,其中数据访问可以是读取访问或写入访问。
图6-图9是根据本公开的一个实施例的在离散时间处的示例性物理块地址的图,图示了对于PBA和移动索引变量的示例性值,关于将LBA映射到 PBA的选择逻辑装置的操作。
图6示出了具有PBA和移动索引变量的示例性值的选址逻辑装置的操作,其中满足第一条件(例如,PBA2<N/2)并且不满足第二条件(例如,PBA_mc<move_index),使得正确的PBA是PBA1或槽14。图示 600示出了在不同时间阶段(例如,CF0到CFn)的物理块地址(PBA)存储器映射。选择逻辑装置使用最后两个存储器映射(CFn和CFn-1)操作。输入变量包含移动索引(move_index=2)、PBA映射中的条目的数量(N=16)、置换的本地位(L=8)和置换的全局位(G=1)。虽然示出了变量L和G,它们可以用于选择逻辑装置中或可以不用于选择逻辑装置中。由于PBA2是没有被交换的位置——由于它小于移动索引(对于该示例,move_index=2),所以选择逻辑装置有效地确定PBA2不正确并且选择它知道为正确的PBA1。更具体而言,在第一种条件中,选择逻辑装置确定PBA2=4小于N/2=8。因而,Pba_mc设定为PBA2=4。在第二种条件中,选择逻辑装置确定Pba_mc =4不小于move_index=2,因而将输出PBA设定为PBA1=14。
在一个方面,可以改变第一条件以将PBA1与N/2进行比较(例如,PBA1 >=N/2))。
图7示出了具有PBA和移动索引变量的示例性值的选址逻辑装置的操作,其中满足第一条件(例如,PBA2<N/2)并且满足第二条件(例如,PBA_mc <move_index),使得正确的PBA是PBA2或槽4。图示700示出了在不同时间阶段(例如,CF0到CFn)的物理块地址(PBA)存储器映射。选择逻辑装置使用最后两个存储器映射(CFn和CFn-1)操作。输入变量包含移动索引(move_index=5)、PBA映射中的条目的数量(N=16)、置换的本地位(L=8)和置换的全局位(G=1)。虽然示出了变量L和G,它们可以用于选择逻辑装置中或可以不用于选择逻辑装置中。由于PBA2是已经被交换的槽——由于它小于移动索引(对于该示例,move_index=5),所以选择逻辑装置有效地确定PBA2正确并且选择它。更具体而言,在第一种条件中,选择逻辑装置确定PBA2=4小于N/2=8。因而,Pba_mc设定为PBA2=4。在第二种条件中,选择逻辑装置确定Pba_mc=4小于move_index=5,因而将输出PBA设定为PBA2=4。
图8示出了具有PBA和移动索引变量的示例性值的选址逻辑装置的操作,其中满足第一条件(例如,PBA2<N/2)并且满足第二条件(例如,PBA_mc <move_index),使得正确的PBA是PBA1或槽5。图示800示出了在不同时间阶段(例如,CF0到CFn)的物理块地址(PBA)存储器映射。选择逻辑装置使用最后两个存储器映射(CFn和CFn-1)操作。输入变量包含移动索引(move_index=2)、PBA映射中的条目的数量(N=16)、置换的本地位(L=8)和置换的全局位(G=1)。虽然示出了变量L和G,它们可以用于选择逻辑装置中或可以不用于选择逻辑装置中。由于PBA2是没有被交换的槽(例如,槽10)——由于它大于移动索引(对于该示例,move_index= 2),所以选择逻辑装置有效地确定PBA2不正确并且选择它知道为正确的PBA1。更具体而言,在第一种条件中,选择逻辑装置确定PBA2=10不小于N/2=8。因而,Pba_mc设定为PBA1=5。在第二种条件中,选择逻辑装置确定Pba_mc=5不小于move_index=2,因而将输出PBA设定为PBA1= 5。
图9示出了具有PBA和移动索引变量的示例性值的选址逻辑装置的操作,其中不满足第一条件(例如,PBA2<N/2)并且不满足第二条件(例如, PBA_mc<move_index),使得正确的PBA是PBA2或槽10。图示900示出了在不同时间阶段(例如,CF0到CFn)的物理块地址(PBA)存储器映射。选择逻辑装置使用最后两个存储器映射(CFn和CFn-1)操作。输入变量包含移动索引(move_index=6)、PBA映射中的条目的数量(N=16)、置换的本地位(L=8)和置换的全局位(G=1)。虽然示出了变量L和G,它们可以用于选择逻辑装置中或可以不用于选择逻辑装置中。由于PBA2是已经被交换的槽(例如,槽10)——由于将PBA1交换到PBA2(move-index= 6大于PBA1=5),所以选择逻辑装置有效地确定PBA2正确并且选择它。更具体而言,在第一种条件中,选择逻辑装置确定PBA2=10不小于N/2=8。因而,Pba_me设定为PBA1=5。在第二种条件中,选择逻辑装置确定Pba_me =5小于move_index=6,因而将输出PBA设定为PBA2=10。
累积状态计算示例
图10是根据本公开的一个实施例的累积状态计算块1000的框图,其包含可以在图2的地址映射系统中使用的双调网络1002和双调排序器1004。累积状态计算块1000还包含累积映射块1006,累积映射块1006可以生成/ 执行一些初始映射并且经由反馈接收双调网络1002的下一个输出。时变网络双调网络1002还可以是该系统中的主双调网络,其接收累积映射块1006 的输出和控制状态(cs)并且生成新的累积映射。双调排序器1004接收新的累积映射并且确定从初始累积映射到新的累积映射所需要的开关设定(例如,累积控制状态或CCS2)。
在一个方面,在任何给定时间,系统可以储存CCS的最后两个值(用于硬件或访问网络中的访问确定)和CS的当前值(用于移动)。所以在一个示例中,控制状态存储器只有大约960位(例如,320x3位)。在这种情况下,可能需要保存这三个映射的全局映射位(即,三个更多的位)。
对于与Benes网络相比的双调网络的使用(在以上图4的讨论中所述的),双调网络可以具有log2(L/2)*(log2(L/2)+1)/2*L/2个开关,而Benes网络可以具有2*log2(L/2)*L/2个开关。例如,L的值=32,使得L/2=16,Benes 网络可以具有8(=2*log2(16))个开关的级,其中每个级由16(=L/2)个开关构成。在这种情况下,双调网络具有20(=4*(4+1)/2(=log2(16)*(log2(16)+1)/2) 个开关的级,其中每个级由16(=L/2)个开关构成。因此,双调网络可能需要更多的流水线以实现一个周期的一个地址查找。因此,在一个方面,双调网络所需要的2乘2开关的数量可以因而是320,相比之下,Benes网络是128,其仍然很小。在一个方面,每个开关具有两个1位多路复用器,并且每个开关需要3个门(2个AND门和1个OR门)。因此,似乎可以使用大约2000 个门相对于大约700个门(准确的计算是320x6个门相对于128x6个门) 来实现每个网络。在一个方面,这可能导致双调网络的4000个门,相对于Benes网络的1400个门。然而,对于双调网络,固件可能简单得多。
以下将更详细地描述双调排序器和双调网络的方面。在一个方面,这两个部件可以一起工作以生成用于损耗均衡的随机映射,同时还提供回到任何一个给定映射的路径,以稍后准确地确定可以将什么逻辑地址映射到哪个物理地址。在一个方面,双调网络工作以生成随机映射,而双调排序器工作以生成“密钥”(例如,累积控制状态或CCS)以稍后回到随机映射。
图11是根据本公开的一个实施例的双调网络1100的图。在所示出的实施例中,双调网络1100是具有8个输入和8个输出的8乘8类型的网络。在其它实施例中,双调网络可以具有不同数量的输入和输出。双调网络1100 包含24个2乘2的开关(Sn)1102,其中每个开关1102处于通过配置1102a 或交叉配置1102b。在通过配置1102a中,对应的输入连接到对应的输出(例如,A传输到A’并且B传输到B’)。在交叉配置1102b中,输入连接到非对应的输出(例如,A传输到B’并且B传输到A’)。每个开关1102接收确定开关配置的控制输入“C”。
在操作中,双调网络1100可以接收8位输入(其可以是第一随机排序列表)和每个开关1102开关设定(其可以是随机开关设定),并且双调网络 1100可以使用随机开关设定来确定输入的置换(例如,第一随机排序列表),其中置换(输出)是第二随机排序列表。在一个方面,8位输入或第一随机排序列表可以是初始累积控制状态(CCS)或随后的CCS。在一个方面,可以根据当前的控制状态(CS)来设定开关设定。
图12是根据本公开的一个实施例的双调排序器1200的图,双调排序器 1200包含排序器表1202和比较类型表1204。双调排序器可以具有log2(L/2) *(log2(L/2)+1)/2*L/2个比较器。比如说L=8,因而L/2=4。在这种情况下,双调排序器可以具有六级比较器,其中log2(8)*(log2(8)+1)/2= 3*(3+1)/2=6,每级由4(=L/2)个比较器构成。
比较类型表1204或“cmp_type”是具有以下大小的矩阵:其中行的数量等于log2(L/2)*(log2(L/2)+1)/2(例如,等于比较器的级的数量=6),并且列的数量等于L/2(例如,等于在每个级中的比较器的数量=4)。因此,对于L=8,与在工作示例中一样,cmp_type1204是大小为6x4的矩阵。在该 cmp_type矩阵1204中的第一行(或一般来说第i行)对应于图示1200中第一级的比较器(或一般来说第i级的比较器)的比较器类型。比较器类型0 (例如,cmp_type 1204的行1、列1)意味着比较器1206(“Comp Type 0”) 采用两个输入(A,B)并且呈现两个输出(out1,out2),使得第一输出是在两个输入之中更小的数(例如,outl=minimum(A,B)或Min(A,B)),并且第二输出是在两个输入之中更大的数(例如,out2=maximum(A,B)或 Max(A,B))。这以图示1200中的向下箭头示出。在一个方面,如果输入A 小于输入B,则比较器1206还给出等于1的输出位(例如,“c”)。在另一个方面,如果交换发生(例如,out1=B,out2=A),则比较器还可以给出等于1的输出位,如果没有交换发生(例如,out1=A并且out2=B),则比较器还可以给出等于0的输出位。这方面没有在图示1200中示出。
比较器类型1(例如,cmp_type 1204的行1、列2)意味着比较器1208 (“Comp Type1”)采用两个输入(A,B)并且呈现两个输出(out1,out2),使得第一输出是在两个输入之中更大的数(例如,out1=maximum(A,B)或 Max(A,B)),并且第二输出是在两个输入之中更小的数(例如,out2= minimum(A,B)或Min(A,B))。这以图示1200中的向上箭头示出。在一个方面,如果输入A大于输入B,则比较器1208还给出等于1的输出位(例如,“c”)。在另一个方面,如果交换发生(例如,out1=B,out2=A),则比较器1208还给出等于1的输出位,如果没有交换发生(例如,out1=A,out2 =B),则比较器1208还给出等于0的输出位。这方面没有在图示 1200中示出。
排序器表1202或“sorter_ind”是具有以下大小的矩阵:其中行的数量等于log2(L/2)*(log2(L/2)+1)/2(例如,等于比较器的级的数量或6),并且列的数量等于L(例如,等于比较器的每个级的输入的数量或8)。因此,对于 L=8,与在工作示例中一样,sorter_ind1202是大小为6x8的矩阵。该 sorter_ind矩阵1202中的第一行(或者一般来说第i行)对应于连接到双调网络的每个级的输入的端口号。
在一个方面,如果序列单调增加然后单调减少,或者如果它可以被循环移位以单调递增然后单调减少,则序列可以是双调的。
在一个方面,双调网络可以具有与双调排序器1200相同的拓扑,除了比较器由具有控制输入的2乘2开关替代。
图13是根据本公开的一个实施例的用于确定用于将LBA映射到PBA 的累积控制状态的过程1300的流程图。在一个实施例中,该过程可以用于确定本文中所述的地址映射系统中的任何一个的累积控制状态,包含例如图2的累积状态计算块204和图10的累积状态计算块1000。在块1302中,该过程随机生成第一开关设定。在一个方面,可以使用随机数生成器来生成第一开关设定。在一个方面,可以使用以上对于图2和图10所述的系统中的控制状态(CS)来生成第一开关设定。在块1304中,该过程接收第一随机排序列表和第一开关设定。在块1306中,该过程使用第一开关设定来生成第一随机排序列表的置换,其中置换包含第二随机排序列表。在一个方面,该置换产生第二随机排序列表。在一个方面,块1304和1306的动作可以由图10的双调网络1002或图11的双调网络1100(其中可以将第一开关设定应用于开关1102,并且可以将第一随机排序列表应用于输入In1到In8)执行。
在块1308中,该过程使用双调排序来对第二随机排序列表排序。在一个方面,该排序可以是上升的。在一个方面,该排序可以是下降的。在一个方面,该排序可以是自然顺序排序。在一个方面,该排序涉及生成自然排序列表。在一个方面,该自然排序列表包含从0到M-1的数字,其中M是到双调网络的输入的数量。在块1310中,该过程确定用于实现双调排序的第二开关的设定,其中第二开关设定限定累积控制状态(CCS)。在一个方面,块1308和1310的动作可以由图10的双调排序器1004或图12的双调排序器1200执行,其中第二开关的设定对应于图12的比较器(1206,1208)的“c”输出位。在块1312中,该过程使用累积控制状态来确定非易失性存储器(NVM)的PBA,以使能对应LBA的数据访问。在一个方面,块1312 的动作可以由图2的访问网络202或图4的访问网络400执行。在一个方面, NVM可以是图1的NVM 112。
图14是根据本公开的一个实施例的配置为确定用于将LBA映射到PBA 的累积控制状态的设备1400的示例性硬件实现方式的框图。设备1400可以体现为或实现在固态驱动器内,在NVM内、或支持损耗均衡的一些其它类型的存储器装置。
设备1400包含主机接口(例如,与主机或控制器通信的电路)1402、储存介质1404、用户接口1406、存储器装置(例如,诸如NVM的存储器电路)1408和处理电路1410(例如,至少一个处理器)。在各种实现方式中,用户接口1406可以包含以下中的一个或多个:键盘、显示器、扬声器、麦克风、触摸屏显示器、用于从用户接收输入或向用户发送输出的一些其它电路。
这些部件可以经由信号总线或其它合适的部件(通常由图14中的连接线表示)耦合到彼此和/或置于与彼此电通信。取决于处理电路1410的特定应用和总体设计约束,信号总线可以包含任何数量的互连总线和桥。信号总线将各种电路链接在一起,使得主机接口1402、储存介质1404、用户接口 1406和存储器装置1408的每一个耦合到处理电路1410和/或与处理电路 1410电通信。该信号总线还可以链接各种其它电路(未示出),诸如定时源、外围设备、电压调节器和电源管理电路,这些在本领域中是熟知的,因此将不再描述。
主机接口1402提供通过传输介质与其它设备通信的手段。在一个方面,主机接口1402可以实现为图1的主机接口106。
存储器装置1408可以表示一个或多个存储器装置。在一个方面,存储器装置1408可以实现为NVM,诸如图1的NVM 112。在一个方面,存储器装置1408可以含有生产(production)或用户数据。在一些实现方式中,存储器装置1408和储存装置1404实现为共同的存储器部件。存储器装置 1408还可以用于储存由处理电路1410或设备1400的一些其它部件操纵的数据。
储存介质1404可以代表一个或多个计算机可读、机器可读和/或处理器可读装置,用于储存程序,诸如处理器可执行代码或指令(例如,软件、固件)、电子数据、数据库或其它数字信息。储存介质1404还可以用于储存当执行程序时由处理器1410操纵的数据。储存介质1404可以是可以由通用处理器或专用处理器访问的任何可用介质,包含RAM、NVM、便携式或固定储存装置、光储存装置和能够储存、含有或携带程序的各种其它介质。在一个方面,储存装置1404可以实现为图1的存储器110。
作为示例而不是限制,储存介质1404可以包含磁储存装置(例如,硬盘、软盘、磁条)、光盘(例如,压缩光盘(CD)或数字多功能光盘(DVD))、智能卡、闪存装置(例如,卡、棒或钥匙驱动器)、随机存取存储器(RAM)、只读存储器(ROM)、可编程ROM(PROM)、可擦除PROM(EPROM)、电可擦除PROM(EEPROM)、寄存器、可移动磁盘、以及用于储存可由计算机访问和读取的软件和/或指令的任何其它合适的介质。储存介质1404可以体现为制品(例如,计算机程序产品)。作为示例,计算机程序产品可以包含封装材料中的计算机可读介质。鉴于以上,在一些实现方式中,储存介质1404可以是非暂时性(例如,有形)储存介质。
储存介质1404可以耦合到处理电路1410,使得处理电路1410可以从储存介质1404读取信息,并且向储存介质1404写入信息。也就是说,储存介质1404可以耦合到处理电路1410,使得储存介质1404至少可由处理电路 1410访问,包含其中至少一个储存介质与处理电路1410一体的示例和/或其中至少一个储存介质与处理电路1410分开(例如,位于设备1400中,在设备1400外部,分布在多个实体上等)的示例。
当由储存介质1404储存的程序由处理电路1410执行时,该程序引起处理电路1410执行本文中所述的各种函数和/或处理操作中的一个或多个。例如,储存介质1404可以包含这样的操作,其配置用于调节处理电路1410的一个或多个硬件块处的操作,以及使用它们各自的通信协议利用主机接口 1402与主机进行通信。
处理电路1410通常适用于处理,包含执行储存在储存介质1404上的这种程序。如本文中所使用的,术语“代码”或“程序”应被广泛地解释为包含但不限于指令、指令集、数据、代码、代码段、程序代码、程序、编程、子程序、软件模块、应用程序、软件应用程序、软件包、例程、子例程、对象、可执行文件、执行线程、过程、功能等,无论它们被称为软件、固件、中间件、微代码、硬件描述语言或其它。
处理电路1410布置为获得、处理和/或发送数据,控制数据访问和储存,发布命令并且控制其它期望的操作。在至少一个示例中,处理电路1410可以包含配置为实现由合适的媒体提供的期望的程序的电路。例如,处理电路 1410可以实现为一个或多个处理器、一个或多个控制器和/或配置为执行可执行程序的其它结构。处理电路1410的示例可以包含通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑部件、分立的门或晶体管逻辑装置、分立的硬件部件或设计为执行本文中所述的功能的其任何组合。通用处理器可以包含微处理器以及任何常规处理器、控制器、微控制器或状态机。处理电路1410还可以实现为计算部件的组合,诸如DSP和微处理器的组合、若干微处理器、结合DSP 核的一个或多个微处理器、ASIC和微处理器,或者任何其它数量的不同的配置。处理电路1410的这些示例仅用于说明,并且本公开范围内的其它合适的配置也是可以预期的。
根据本公开的一个或多个方面,处理电路1410可适用于执行本文中所述的设备的任何一个或全部的特征、过程、功能、操作和/或例程的任何一个或全部。例如,处理电路1410可以配置为执行关于图1-图13和图15-图30 所述的任何步骤、功能和/或过程。如本文中所使用的,关于处理电路1410 的术语“适用于”可以指处理电路1410是配置为、体现为、实现为和/或编程为执行根据本文中所述的各种特征的特定过程、功能、操作和/或例程中的一个或多个。
处理电路1410可以是专用处理器,诸如专用集成电路(ASIC),其用作执行结合图1-图13、图15-图30所述的操作的任何一个的装置(例如,结构)。处理器电路1410用作执行其中所描绘的功能的装置的一个示例。在各种实现方式中,处理电路1410可以并入图1的控制器108或NVM 112(例如,其中含有的处理器)、图2的累积状态计算块204或访问网络202、图 10的双调网络1002或双调排序器1004、图11的双调网络1100、或图12的双调排序器1200的功能。
根据设备1400的至少一个示例,处理电路1410可以包含以下中的一个或多个:用于随机生成第一开关设定的电路/模块1420、用于接收第一随机排序列表和第一开关设定的电路/模块1422、用于使用第一开关设定来生成第一随机排序列表的置换的电路/模块1424、用于使用双调排序来对第二随机排序列表进行排序的电路/模块1426、用于确定用于实现双调排序的第二开关的设定的电路/模块1428、或者用于使用累积控制状态来确定非易失性存储器(NVM)的PBA以使能对应LBA的数据访问的电路/模块1429。
在各种实现方式中,用于随机生成第一开关设定的电路/模块1420、用于接收第一随机排序列表和第一开关设定的电路/模块1422、用于使用第一开关设定来生成第一随机排序列表的置换的电路/模块1424、用于使用双调排序来对第二随机排序列表进行排序的电路/模块1426、用于确定用于实现双调排序的第二开关的设定的电路/模块1428、或者用于使用累积控制状态来确定非易失性存储器(NVM)的PBA以使能对应LBA的数据访问的电路/模块1429可以至少部分地对应于图1的控制器108或NVM 112(例如,其中含有的处理器)、图2的累积状态计算块204或访问网络202、图10的双调网络1002或双调排序器1004、图11的双调网络1100、或者图12的双调排序器1200的功能。
如以上所提到的,当由储存介质1404储存的程序由处理电路1410执行时,该程序引起处理电路1410执行本文中所述的各种函数和/或过程操作中的一个或多个。例如,当该程序由处理电路1410执行时,该程序可能引起处理电路1410执行本文参考图1-图13、图15-图30中各种实施例所述的各种函数、步骤和/或过程。如图14中所示出,储存介质1404可以包含以下中的一个或多个:用于随机生成第一开关设定的代码1430、用于接收第一随机排序列表和第一开关设定的代码1432、用于使用第一开关设定来生成第一随机排序列表的置换的代码1434、用于使用双调排序来对第二随机排序列表进行排序的代码1436、用于确定用于实现双调排序的第二开关的设定的代码 1438、或者用于使用累积控制状态来确定非易失性存储器(NVM)的PBA 以使能对应LBA的数据访问的代码1440。
在各种实现方式中,可以执行或以其它方式使用用于随机生成第一开关设定的代码1430、用于接收第一随机排序列表和第一开关设定的代码1432、用于使用第一开关设定来生成第一随机排序列表的置换的代码1434、用于使用双调排序来对第二随机排序列表进行排序的代码1436、用于确定用于实现双调排序的第二开关的设定的代码1438、或者用于使用累积控制状态来确定非易失性存储器(NVM)的PBA以使能对应LBA的数据访问的代码1440 从而为电路/模块提供本文中所述的功能:用于随机生成第一开关设定的电路 /模块1420、用于接收第一随机排序列表和第一开关设定的电路/模块1422、用于使用第一开关设定来生成第一随机排序列表的置换的电路/模块1424、用于使用双调排序来对第二随机排序列表进行排序的电路/模块1426、用于确定用于实现双调排序的第二开关的设定的电路/模块1428、或者用于使用累积控制状态来确定非易失性存储器(NVM)的PBA以使能对应LBA的数据访问的电路/模块1429。
使用预储存的控制状态的本地地址映射
图15是根据本公开的一个实施例的用于本地地址映射的系统1500的另一个框图,系统1500包含访问网络1502和用于储存预计算的累积控制状态值的一个或多个只读存储器(ROM)(1504a,1504b,1504c)。系统1500 还包含后台映射调度器1508以及映射状态生成和改变块1510。在一个方面,访问网络1502和ROM(1504a,1504b,1504c)可以以硬件实现(例如,具有3个周期流水线延迟的超低延迟,低逻辑装置和存储器等效于少于 10000个逻辑门)并且系统1500的剩余部件可以以固件实现。在操作中,系统1500的块可以类似于图2的系统200的那些块来操作。然而,系统1500 中的主要区别在于累积状态是使用主双调网络或其它合适的网络来离线计算,然后储存(例如,在表中)在ROM(1504a,1504b,1504c)中。在一个方面,与图2的系统相比,该方法可以涉及使用少量的附加存储器。
块1504a代表储存CCS值(例如,CCS1和CCS2)的非易失性存储器 (诸如CCS_ROM的ROM)。块1504b代表储存CS值(例如,cs1和cs2) 的非易失性存储器(诸如CS_ROM的ROM)。块1504c代表非易失性存储器(例如,诸如USE_PROM的可编程ROM),其有效地储存CS_ROM和CCS_ROM中的哪些线正在被使用,以防存在掉电。有效地,USE_PROM 可以用于在非易失性存储器空间中保存控制状态,以在掉电的情况下恢复。所储存的控制状态值可以包含MOVE_INDEX、cs2、ccs1、ccs2、 bg_transfer_address1、bg_transfer_address2、bg_transfer_status和/或 ROM_row_index。在一个方面,一旦电力恢复,系统1500可以使用 USE_PROM(例如,使用指示符)条目和控制状态执行一致性检查,并且恢复映射状态并继续任何中断的后台传输。
图16a、图16b、图16c是根据本公开的一个实施例的用于储存可在图 15的系统中使用的控制状态值、累积控制状态值和使用指示符的ROM的示意图。
图16a是本公开的一个实施例的可以用于储存图15的系统中使用的控制状态(CS)值的ROM(CS_ROM)1600的示意图。图16a示出了可以用于储存控制状态值的非易失性存储器的一种可能的实现方式。在另一个方面,还可以使用其它实现方式。
图16b是本公开的一个实施例的可以用于储存图15的系统中使用的累积控制状态(CCS)值的ROM(CCS_ROM)1602的示意图。图16b示出了可以用于储存累积控制状态值的非易失性存储器的一种可能实现方式。在另一个方面,还可以使用其它实现方式。
图16c是本公开的一个实施例的可以用于储存图15的系统中使用的控制状态(CS)值的PROM(USE_PROM)1604的示意图。更具体而言,USE_PROM 1604可以用于在非易失性存储器空间中储存与CS_ROM和 CCS_ROM中的当前位置相关的索引或占位符信息,以在掉电的情况下恢复。图16c示出了可以用于将索引信息储存进ROM的非易失性存储器的一种可能实现方式。在另一个方面,还可以使用其它实现方式。
在一个方面,每当映射被使用,图15的系统1500可以将ROM_row_index 增长1,其中ROM_row_index可以是CS_ROM和CCS_ROM的地址。系统还可以在USE_PROM中将1位条目编程为1以指示该条线已经被使用。
图17是根据本公开的一个实施例的用于损耗均衡的过程1700的流程图。在一个实施例中,可以由图16中的损耗均衡系统1600或本文中所述的其它损耗均衡系统的任何一个执行过程1700。
在块1702中,该过程将多个累积控制状态(其每一个指示在物理块地址(PBA)与逻辑块地址(LBA)之间的随机映射的状态)和多个控制状态储存在非易失性存储器中。在某些方面,块1702的动作可以通过控制器108 来实现,或者如图1所示通过控制器108结合主机102来实现。在某些方面,块1702可以通过包含ROM 1604a、ROM 1604b、ROM 1604c、图16中的其它ROM的图16的损耗均衡系统1600,图1的控制器108和/或那些部件的任何组合来实现。在一个方面,块1702可以通过ROM 1604a、ROM 1604b 和/或控制器108来实现。
在块1704中,该过程基于多个累积控制状态将逻辑块地址(LBA)转换为物理块地址(PBA)。在某些方面,块1704的动作可以通过控制器108 来实现,或者如图1所示通过控制器108结合主机102来实现。在某些方面,块1704可以通过包含访问网络1602的图16的损耗均衡系统1600、图1的控制器108和/或那些部件的任何组合来实现。在一个方面,块1704可以通过访问网络1602来实现。
在块1706中,该过程基于多个控制状态来交换分配给预选择的LBA的 PBA。在某些方面,块1706的动作可以通过控制器108来实现,或者如图1 所示通过控制器108结合主机102来实现。在某些方面,块1706可以通过包含后台交换调度器1608的图16的损耗均衡系统1600、图1的控制器108 和/或那些部件的任何组合来实现。在一个方面,块1706可以通过后台交换调度器1608来实现。
在一个方面,累积控制状态包含第一累积控制状态和第二累积控制状态,其中控制状态包含第一控制状态和第二控制状态,其中第二累积控制状态是第一累积控制状态和第二控制状态的函数。以上关于图2和以下关于图12 更详细地描述累积控制状态(例如,CCS1和CCS2)和控制状态(例如,cs1、 cs2)。
在一个方面,该过程还可以包含在交换预选择数量的PBA之后,将第一存储器映射改变为第二存储器映射,其中第一存储器映射和第二存储器映射中的每一个包含预选择数量的PBA。在一个方面,这可以由图16的映射状态块1610执行。
在一个方面,基于控制状态来交换分配给预选择的LBA的PBA包含在非易失性存储器系统的非易失性存储器的预选择数量的访问之后交换PBA。在一个方面,预选择数量的访问可以是非易失性存储器的100次写入。
在一个方面,过程1700还包含使用第一函数从LBA生成第一PBA候选,使用第二函数从LBA生成第二PBA候选,并且基于与储存在第一PBA 候选处的数据的后台交换和储存在第二PBA候选处的数据的后台交换相关的信息,选择第一PBA候选或第二PBA候选用于数据访问。在一个方面,这些动作可以由图16的访问网络1602或图4的访问网络400执行。在一个方面,第一函数或第二函数中的至少一个包含由多级互连网络或分组密码中的至少一个执行的函数。在一个方面,第二累积控制状态反映用于实现第一累积控制状态的置换的排序的开关设定,其中使用第二控制状态来生成该置换。
图18是根据本公开的一个实施例的另一个访问网络1800的框图,访问网络1800包含可以在图15的地址映射系统中使用的选择逻辑块1802。在一个方面,访问网络1800可以在图15的系统中用作访问网络1502。系统1800 还包含第一双调网络1804和第二双调网络1806。系统1800可以基本上与图 4的系统400相同地操作,除了是从ROM(例如,1504a、1504b、1504c) 而不是从在线累积控制状态(诸如图2的块204)接收累积控制状态值(CCS1,CCS2)。
以上所述的用于执行本地地址映射的系统和方法可以与使用本地和全局交织的采用随机地址映射的损耗均衡方案结合使用。以下章节描述了这种方法。
本地/全局交织
图19是根据本公开的一个实施例的间接表的图示1900的框图。例如,如图19中所描绘的,在具有M个页面/扇区的驱动器中,间接表具有M个条目。在这种情况下,每个条目是N位,其中N为log2(M)。对于具有512 字节页面的2TB驱动器,M=2x10^12B/512B=3.9x10^9,因而N等于32。因此,表的位所需要的存储器可以是M x log2M=125GB(~15GB)。使用表的频率也会消耗类似的空间(~15GB)。因此,对于该元数据,总体需求大约为30GB。在一些实现方式中,元数据可能必须用2+1冗余(two plus one redundancy)进行复制,从而将复杂度增加到90GB。在这种情况下,该存储器使用量约占磁盘空间的4.5%。因此,这种方法通常不实际。
图20是根据本公开的一个实施例的用于使用本地和全局交织来执行随机地址映射的总体系统的框图。系统2000包含查找表的块2002,块2002 可以用于储存深度为2^G且宽度为G的2^G个条目。系统2000还可以包含可以用于提供数据集合的置换的多级互连网络(MIN)2004、以及可以用于控制MIN 2004的控制状态块2006。系统2000示出了总体框架,其通过首先将地址位划分位G个位和N-G个位来将N位逻辑地址空间映射到N位物理空间。通常,可以使用另一个固定网络来选出N个位中的任何G个位。在这种情景下,固定网络可以简单地是连线的固定布置以到达特定的网络。与多级可编程互连网络相比,固定网络可能不具有可编程性。为了简单起见,所选择的G个位是N个位的最高有效(significant)位(MSB)。因此,系统可以在块2002中对2^G个条目执行映射,并且在块2004中对N-G个位执行位置换。可以使用2^G个条目块2002来映射G个位。在一个方面,可以执行映射,使得存在一对一的唯一映射,并且输入不等于输出。而且,在一个方面,选择G使得1<=G<=N。在一个方面,G<=6的情况可能是特别感兴趣的。如果G=N,则这种情况可以等同于常规的映射表方法。
在一个实施例中,全局映射可以满足一个或多个性质。例如,在一个方面,全局映射可以是一对一函数。在另一个方面,可以执行全局映射使得输入不等于输出。在另一个方面,可以执行交换使得数字(k)的全局映射等于kk,而kk的全局映射等于k。因此,用于全局映射的合适的函数可以包含位反转映射、随机交换、确定性交换和其它合适的函数。可以选择位反转映射用于简单的硬件实现方式。如果使用表,则所需要的表的最大大小可以是2^G个条目,其中每个条目具有G个位的宽度。由于在该示例中G不大于7,所以表方法也是合适的。
在一个实施例中,本地映射可以满足一个或多个性质。例如,在一个方面,本地映射可以是一对一函数。所以用于本地映射的合适的函数可以包含确定性映射和/或随机映射。在一个方面,可以选择随机映射。确定性映射或随机映射可以使用表或Omega网络、蝶形网络、Benes网络或其它合适的网络来实现。在一个方面,选择Benes网络(例如,主-从Benes网络),因为它具有对于计算开关状态所需要的最低复杂度。在该网络中,双调排序可以在具有某些特性的序列上的主Benes网络上实现,以导出用于从属Benes网络的开关状态。在一个实施例中,本地地址映射可以使用以上结合图1-图 18所述的本地地址映射方案中的任何一个来执行。
在一个实施例中,使用随机地址映射来实现的损耗均衡算法可以涉及在地址空间中操作、设定地址空间分区、以及地址空间中的本地和全局交织。在一个方面,损耗均衡算法可以涉及从一个存储器映射到另一个存储器映射的逐渐确定性转换。
图21是根据本公开的一个实施例的使用全局映射和本地交织来执行随机地址映射的过程的流程图。在一个实施例中,该过程可以用于在本文中所述的随机映射系统的任何一个中的损耗均衡或其它随机地址映射。在块2102 中,该过程标识非易失性存储器(NVM)的物理地址空间中的若干位(N)。在块2104中,该过程选择物理地址空间的N个位中的至少一位(G)用于全局交织,其中G小于N。在块2106中,该过程确定等于N减G(N-G) 的若干位用于本地交织。
在块2108中,该过程使用用于全局交织的映射函数来映射G个位。在一个实施例中,该映射函数可以是位反转映射函数、随机交换映射函数、确定性交换映射函数和/或其它合适的映射函数。
在块2110中,该过程使用用于本地交织的交织函数来交织(N-G)个位。在一个实施例中,交织函数可以是确定性交织函数、随机交织函数和/或其它合适的交织函数。在一个实施例中,交织函数可以使用Omega网络、蝶形网络、Benes网络、主-从Benes网络和/或其它合适的交织函数来实现。
在一些实施例中,用于全局映射的映射函数是位反转映射函数,并且交织函数使用主-从Benes网络来实现。在一个这种实施例中,G个位是NVM 的物理地址空间的最高有效的位,并且位反转映射函数涉及反转G个位中的每一个。
在块2112中,该过程生成包含映射的G个位和交织的(N-G)个位的组合的映射。在一个实施例中,组合的映射构成了映射的物理地址(参见例如以下将更详细地讨论的图25中的列2506)。
图22是根据本公开的一个实施例的使用全局映射的位反转(G个位) 和本地交织的置换(N-G个位)执行随机地址映射的系统的框图。系统2200 包含可以用于反转逻辑地址的所选择的位的位反转块2202。在一个方面,例如,如在图21的块2108中所述的,位反转块2202可以用于使用用于全局映射的映射函数来映射G个位,其中映射函数是位反转函数。系统2200还包含可以用于提供数据集合的置换(诸如逻辑地址的所选择的位的置换)的多级互连网络(MIN)2204。在一个方面,如图21的块2110中所述的,MIN 2204可以用于使用用于本地交织的交织函数来交织N-G个位。系统2200还包含可以用于控制MIN 2204的控制状态块2206。
该系统2200还包含处理器2208,处理器2208可以用于控制和/或执行位反转块2202和MIN 2204的计算。在该情景下,处理器2208是指能够执行一系列指令的任何机器或逻辑装置的选择,并且应该认为是包含但不限于通用微处理器、专用微处理器、中央处理单元(CPU)、数字信号处理器(DSP)、专用集成电路(ASIC)、信号处理器、微控制器和其它合适的电路。另外,应当理解的是,术语处理器、微处理器、电路、控制器和其它这种术语是指能够执行逻辑、命令、指令、软件、固件、功能或其它这样的信息的任何类型的逻辑装置或电路。在一个方面,如图21的框2102中所述的,处理器2208 可以用于标识非易失性存储器(NVM)的物理地址空间中的若干位(N),选择物理地址空间的N位中的至少一个位(G)用于全局交织,其中如图21 的框2104中所述的,G小于N,和/或如在图21的块2106中所述的,确定等于N减G(N-G)的若干位用于本地交织。在一个方面,如在图21的块 2112中所述的,处理器2208还可以用于生成包含映射的G个位和交织的 (N-G)个位的组合映射。在一个实施例中,组合映射替代地由块2202和/ 或块2206生成。
在说明地址空间操作的一个简单示例中,如图22中所述的,假设NVM 中的页面的数量(M)为16(即,M=16页)。在这种情况下,地址位的数量(N)可以计算为N=log2(M)=4个地址位。在这种情况下,配置的参数如以下:G=1(2^G个分区),L=N-G=4-1=3(3x3个网络)。该简单的示例将通过图23到图25来实现。
图23是示出根据本公开的一个实施例的使用对G个位的位反转的全局映射的示例的图表2300。在一个方面,图23的图表2300可以视为图22的块2202中所示出的全局映射的示例。在继续的简单的示例中,G是1位(即, 4个地址位的最高有效位(MSB))。在图23的示例中,图表2300示出了左列中的初始地址,以十进制和二进制示出。图表2300还示出了在使用对G 个位(即,MSB)的位反转的全局映射之后在地址的右列中的最终地址,以十进制和二进制示出。如在图23中可见的,使用位反转的全局映射是一对一函数,并且输入不等于输出。该实现方式与以上所讨论的可能的设计特征的一个或多个一致。
图24是示出根据本公开的一个实施例的使用对N-G个位的置换的本地交织的示例的图表2400。更具体而言,对于地址位的本地交织,假设3个地址位([x2 x1 x0])被置换为[x2 x0 x1]。在图24的示例中,图表2400示出了左列中的初始地址,以十进制和二进制示出。图表2400还示出了在使用所选择的置换的局部映射之后在地址的右列中的最终地址,以十进制和二进制示出。如在图24中可见的,使用置换的本地交织是一对一函数。该实现方式与以上所讨论的可能的设计特征的一个或多个一致。在一个方面,图24 的图表2400可以视为图22的块2204中所示出的局部映射的示例。
图25是示出根据本公开的一个实施例的使用位反转的全局映射和使用置换的本地交织的示例的图表2500。最左的列2502以十进制示出原始地址。中间列2504仅示出了全局映射/交织的效果,并且匹配图23的最终列(例如,结果)。最右的列2506示出了使用位反转的全局映射和使用所选择的置换的本地交织两者所产生的物理地址。该简单示例示出了图20-图22的系统和方法的一种可能的操作。更具体而言,图25的图表2500可以视为由图22的处理器2208、块2202和2204的任何组合生成的组合映射的示例。
图26是根据本公开的一个实施例的可以用于执行本地交织(例如,图 22中的块2204)的多级互联网络(MIN)2600的框图。用于从逻辑空间和物理空间生成随机映射的该MIN方法(例如,具有2^N个条目的多级互连网络或MIN)可能由于储存大小可能很大而是实现起来昂贵的。
更具体而言,在一个方面,移动项目必须基于由映射所限定的特定顺序来完成。对于读取过程,为了区分哪个芯片选择(CS)必须被使用,需要维护2^N个条目的另一个表和每个条目的宽度。相比之下,CS芯片储存装置对于Omega网络等于log2(N)*N/2,对于Benes网络等于log2(N)*N。
图27是根据本公开的一个实施例的可以用于执行本地交织的蝶形MIN 2700的框图。用于从逻辑空间和物理空间生成随机映射的该MIN方法(例如,关于2^N个条目的蝶形MIN)是合适的多级互连网络,其可以用于例如图22的MIN 2204或图20的MIN 2004。
对于物理空间的洗牌(shuffle)等于1的微不足道的情况,不需要网络,因为容易找出映射。在这种情况下,地址洗牌可以限定为物理地址的左循环移动,其为二进制字符串。考虑例如阶段1到M。在阶段k,逻辑地址的物理地址由(xn-1,xn-2,xn-3,xn-k,...,x1,x0)给定,转换为(经由反转)(Xn-1,Xn-2,Xn-3,Xn-k-1,...x1,x0)。在一个方面,另一个更简单的情况可以包含其中将MSB与LSB交换的蝶形置换、其中任何第i位与位0(例如,LSB)交换的替代置换和其中任何第i位与MSB交换的超置换。在另一个方面,本地交织可以涉及对于每个阶段使用任何开关组合。
通常,MIN可以用于两种模式中的一个。例如,在路由模式中,MIN 中的开关配置为在一次或多次传输中实现从输入端口到输出端口的所期望的映射。在这种情况下,每个输入端口采用多个位(比如m位)的字,并且每个输出端口给出m位的字,存在N个输入和N个输出。在第二模式——交织模式中,MIN中的开关配置为使用随机种子。这产生在单个传输中从输入端口到输出端口的随机映射。在若干方面,本文中所述的交织器或交织可以在交织模式中使用MIN,以按所期望的方式交织预选择的位。
图28是根据本公开的一个实施例的可以用于执行本地交织的Benes MIN 2800的框图。用于从逻辑空间和物理空间生成随机映射的该MIN方法 (例如,关于2^N个条目的Benes MIN)是合适的多级互连网络,其可以用于例如图22的MIN 2204或图20的MIN 2004。
图29是根据本公开的一个实施例的可以用于执行本地交织的Omega MIN 2900的框图。用于从逻辑空间和物理空间生成随机映射的该MIN方法 (例如,关于2^N个条目的Omega MIN)是合适的多级互连网络,其可以用于例如图22的MIN 2204或图20的MIN 2004。在一个方面,Omega网络可以仅能够提供开关的所有可能置换的子集,而Benes网络可以能够提供所有可能的置换。在一个方面,如果需要所期望的置换,则可能难以解决Benes 网络的芯片选择设定。为了解决这个潜在的问题,Benes网络的一个实现方式涉及随机设定芯片选择设定,这可以使芯片选择算法简单得多。也就是说,随机生成芯片选择设定降低计算时间需求和/或解决芯片选择设定所需要的计算挑战。
图30示出了根据本公开的一个实施例的可以用于执行本地交织的修改的(8x8)Omega MIN 3000的框图。通常,Omega网络是根据2的整数幂来确定大小的(N×N)多级互连网络。因而,Omega网络具有N=2、4、8、 16、32、64、128等大小。另外,Omega网络中的级的数量L等于log2(N),并且每个级的(2×2)开关的数量等于N/2。
Omega网络3000是(8×8)网络,该网络在八个输入端子A[0:7]处接收八个输入值,并且将八个输入值映射到八个输出端子B[0:7]。每个输入值可以是任何合适的值,诸如单个位、多个位、采样、或具有一个硬判定位和至少一个置信度值位的软值(诸如Viterbi对数似然比(LLR)值)。八个输入值使用log2(8)=3个可配置的级i映射到八个输出端子,其中i=1,2,3,其每一个包括8/2=4(2×2)个开关。
每个级i经由实现对八个输入值的完美洗牌的固定互连系统(例如,3002、 3004和3006),从之前的级接收八个输入值或者在级1的情况下从输入端子 A[0:7]接收八个输入值。完美洗牌是相当于(i)将一副牌分位两个相同的堆和(ii)将两个相同的堆以相同的方式洗在一起,使得第一堆中的牌与来自第二堆的牌交替的过程。
例如,级1经由固定互连系统3002从输入端子A[0:7]接收八个输入值。固定互连系统3002通过将在输入端子A[0:7]处接收的八个输入值分为对应于输入端子A[0:3]的第一集合和对应于输入端子A[4:7]的第二集合,执行对八个输入值的完美洗牌。类似地,固定互连系统3004执行对来自级1的开关的输出的完美洗牌,并且向级2的开关提供洗牌的输出,并且固定互连系统3006执行对级2的开关的输出的完美洗牌,并且向级3的开关提供洗牌的输出。
除了接收八个输入值,每个可配置的级i从控制信号存储器(例如,ROM) 接收四位控制信号Ci[0:3],其中四位控制信号的每个位配置级中的四个2× 2开关的不同的一个。因而,级1的开关基于控制位C1[0]、C1[1]、C1[2] 和C1[3]的值来配置,级2的开关基于控制位C2[0]、C2[1]、C2[2]和C2[3] 的值来配置,级3的开关配置为基于控制位C3[0]、C3[1]、C3[2]和C3[3]的值来配置。
将控制位设定为值为1,这将对应的开关配置为交叉连接,使得(i)将在上面的输入接收的值提供给下面的输出并且(ii)将在下面的输入接收的值提供给上面的输出。将控制位设定为值为0,这将对应的开关配置为直通连接,使得(i)将在上面的输入接收的值提供给上面的输出并且(ii)将在下面的输入接收的值提供给下面的输出。
在信号处理应用中,诸如Omega网络3000的多级互连网络经常用于路由目的,以将网络的一端上的处理器连接到另一端上的存储器元件。然而,多级互连网络还可以在信号处理应用中用于其它目的,诸如用于置换或交织连续的数据流。
图30示出了配置用于交织的合适的Omega MIN的一个实现方式。在其它的实施例中,还可以使用合适的Omega MIN的其它实现方式。
尽管以上描述含有本发明的许多特定实施例,这些不应被解释为对于本发明的范围的限制,而是其特定实施例的示例。相应地,本发明的范围不应仅由所示出的实施例确定,而应由所附的权利要求和它们的等同物确定。
以上所述的各种特征和过程可以彼此独立地使用,或者可以以各种方式组合。所有可能的组合和子组合均旨在落入本公开的范围内。此外,在一些实现方法中可能省略若干方法、事件、状态或过程块。本文中所述的方法和过程也不限于任何特定的序列,并且与其相关的块或状态可以以其它合适的序列来执行。例如,所述的任务或时间可以以除了具体公开的顺序执行,或者可以将多个组合在单个块或状态中。示例性任务或事件可以串行、并行或者以其它合适的方式执行。可以向所公开的示例性实施例中添加任务或事件,或者从其中移除任务或事件。本文中所述的示例性系统和部件可以配置为不同于所描述的。例如,与所公开的示例性实施例比较,可以添加元件、移除元件或重新布置元件。
Claims (28)
1.一种用于确定累积控制状态的系统,所述累积控制状态用于将逻辑块地址(LBA)映射到物理块地址(PBA),所述系统包括:
双调网络,其包括第一开关并且配置为:
接收第一随机排序列表和随机开关设定;
在所述第一开关处使用所述随机开关设定来确定所述第一随机排序列表的置换,其中所述置换包括第二随机排序列表;以及
输出所述第二随机排序列表;
双调排序器,其包括第二开关并且配置为:
接收所述第二随机排序列表;
对所述第二随机排序列表进行排序;以及
输出用于实现所述排序的所述第二开关的设定,其中第二开关设定限定所述累积控制状态;以及
访问网络,所述访问网络配置为使用所述累积控制状态来确定非易失性存储器(NVM)的PBA以使能对应的LBA的数据访问。
2.如权利要求1所述的系统,其中所述排序是上升的。
3.如权利要求1所述的系统,其中所述排序是下降的。
4.如权利要求1所述的系统,其中所述排序包括自然顺序排序。
5.如权利要求1所述的系统,其中所述双调排序器配置为输出自然排序列表。
6.如权利要求5所述的系统,其中所述自然排序列表包括从0到M-1的数字,其中M是到所述双调网络的输入的数量。
7.如权利要求1所述的系统,其中,所述访问网络还配置为:
使用第一函数从LBA生成第一PBA候选;
使用第二函数从所述LBA生成第二PBA候选;以及
基于与储存在所述第一PBA候选处的数据的后台交换和储存在所述第二PBA候选处的数据的后台交换相关的信息,选择所述第一PBA候选或所述第二PBA候选用于数据访问。
8.如权利要求7所述的系统,其中:所述第一函数或所述第二函数中的至少一个包括由多级互连网络或分组密码中的至少一个执行的函数。
9.一种用于确定累积控制状态的方法,所述累积控制状态用于将逻辑块地址(LBA)映射到物理块地址(PBA),所述方法包括:
随机生成第一开关设定;
接收第一随机排序列表和所述第一开关设定;
使用所述第一开关设定来生成所述第一随机排序列表的置换,其中所述置换包括第二随机排序列表;
使用双调排序来对所述第二随机排序列表进行排序;
确定用于实现所述双调排序的第二开关的设定,其中第二开关设定限定所述累积控制状态;以及
使用所述累积控制状态来确定非易失性存储器(NVM)的PBA以使能对应的LBA的数据访问。
10.如权利要求9所述的方法,还包括:
生成包括多个第一开关的双调网络;
生成包括多个第二开关的双调排序器;
其中接收所述第一随机排序列表和所述第一开关设定包括在所述双调网络处接收所述第一随机排序列表和所述第一开关设定;
其中使用所述第一开关设定来生成所述第一随机排序列表的置换包括在所述第一开关处使用所述第一开关设定生成所述第一随机排序列表的置换;
其中使用所述双调排序来对所述第二随机排序列表进行排序包括在所述双调排序器处对所述第二随机排序列表进行排序;以及
其中确定用于实现所述排序的所述第二开关的设定包括确定用于实现所述双调排序的所述双调排序器的第二开关的设定。
11.如权利要求10所述的方法,其中所述双调网络包括Benes网络、逆Benes网络、逆双调网络、Omega网络、逆Omega网络、蝶形网络或逆蝶形网络中的至少一个。
12.如权利要求9所述的方法,其中所述排序是上升的。
13.如权利要求9所述的方法,其中所述排序是下降的。
14.如权利要求9所述的方法,其中所述排序包括自然顺序排序。
15.如权利要求9所述的方法,其中使用所述双调排序来对所述第二随机排序列表进行排序包括生成自然排序列表。
16.如权利要求15所述的方法,还包括:
生成包括多个第一开关的双调网络;
其中接收所述第一随机排序列表和所述第一开关设定包括在所述双调网络处接收所述第一随机排序列表和所述第一开关设定;以及
其中所述自然排序列表包括从0到M-1的数字,其中M是到所述双调网络的输入的数量。
17.如权利要求9所述的方法,其中使用所述累积控制状态来确定所述NVM的PBA以使能所述对应的LBA的数据访问,包括:
使用第一函数从LBA生成第一PBA候选;
使用第二函数从所述LBA生成第二PBA候选;以及
基于与储存在所述第一PBA候选处的数据的后台交换和储存在所述第二PBA候选处的数据的后台交换相关的信息,选择所述第一PBA候选或所述第二PBA候选用于数据访问。
18.如权利要求17所述的方法,其中所述第一函数或所述第二函数中的至少一个包括由多级互连网络或分组密码中的至少一个执行的函数。
19.一种用于确定累积控制状态的系统,所述累积控制状态用于将逻辑块地址(LBA)映射到物理块地址(PBA),所述系统包括:
随机生成第一开关设定的装置;
接收第一随机排序列表和所述第一开关设定的装置;
使用所述第一开关设定来生成所述第一随机排序列表的置换的装置,其中所述置换包括第二随机排序列表;
使用双调排序来对所述第二随机排序列表进行排序的装置;
确定用于实现所述双调排序的第二开关的设定的装置,其中第二开关设定限定所述累积控制状态;以及
使用所述累积控制状态来确定非易失性存储器(NVM)的PBA以使能对应的LBA的数据访问的装置。
20.如权利要求19所述的系统,
其中使用所述第一开关设定来生成所述第一随机排序列表的置换的装置包括双调网络,所述双调网络包括多个第一开关;
其中使用所述双调排序来生成所述第二随机排序列表的装置包括多个第二开关;
其中接收所述第一随机排序列表和所述第一开关设定的装置包括在所述双调网络处接收所述第一随机排序列表和所述第一开关设定的装置;
其中使用所述第一开关设定来生成所述第一随机排序列表的置换的装置包括在所述第一开关处使用所述第一开关设定生成所述第一随机排序列表的置换的装置;
其中使用所述双调排序来对所述第二随机排序列表进行排序的装置包括在所述双调排序器处对所述第二随机排序列表进行排序的装置;以及
其中确定用于实现所述排序的所述第二开关的设定的装置包括确定用于实现所述双调排序的所述双调排序器的第二开关的设定的装置。
21.如权利要求20所述的系统,其中双调网络包括Benes网络、逆Benes网络、逆双调网络、Omega网络、逆Omega网络、蝶形网络或逆蝶形网络中的至少一个。
22.如权利要求19所述的系统,其中所述排序是上升的。
23.如权利要求19所述的系统,其中所述排序是下降的。
24.如权利要求19所述的系统,其中所述排序包括自然序列排序。
25.如权利要求19所述的系统,其中使用所述双调排序来对所述第二随机排序列表进行排序的装置包括生成自然排序列表的装置。
26.如权利要求25所述的系统,还包括:
生成包括多个第一开关的双调网络的装置;
其中接收所述第一随机排序列表和所述第一开关设定的装置包括在所述双调网络处接收所述第一随机排序列表和所述第一开关设定的装置;以及
其中所述自然排序列表包括从0到M-1的数字,其中M是到所述双调网络的输入的数量。
27.如权利要求19所述的系统,其中,使用所述累积控制状态来确定所述NVM的PBA以使能对应的LBA的数据访问的装置包括:
使用第一函数从LBA生成第一PBA候选的装置;
使用第二函数从所述LBA生成第二PBA候选的装置;以及
基于与储存在所述第一PBA候选处的数据的后台交换和储存在所述第二PBA候选处的数据的后台交换相关的信息来选择所述第一PBA候选或所述第二PBA候选用于数据访问的装置。
28.如权利要求27所述的系统,其中,所述第一函数或所述第二函数中的至少一个包括由多级互连网络或分组密码中的至少一个执行的函数。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/449,612 US10452533B2 (en) | 2015-07-14 | 2017-03-03 | Access network for address mapping in non-volatile memories |
US15/449,612 | 2017-03-03 | ||
US15/627,042 | 2017-06-19 | ||
US15/627,042 US10445232B2 (en) | 2015-07-14 | 2017-06-19 | Determining control states for address mapping in non-volatile memories |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108536612A CN108536612A (zh) | 2018-09-14 |
CN108536612B true CN108536612B (zh) | 2021-12-21 |
Family
ID=63486415
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810168239.8A Active CN108536612B (zh) | 2017-03-03 | 2018-02-28 | 确定用于非易失性存储器中的地址映射的控制状态 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108536612B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109522238B (zh) * | 2018-09-30 | 2020-01-03 | 上海恺英网络科技有限公司 | 一种排序方法及设备 |
US11042490B2 (en) * | 2018-11-15 | 2021-06-22 | Micron Technology, Inc. | Address obfuscation for memory |
US11061598B2 (en) * | 2019-03-25 | 2021-07-13 | Western Digital Technologies, Inc. | Optimized handling of multiple copies in storage management |
US11201280B2 (en) * | 2019-08-23 | 2021-12-14 | Western Digital Technologies, Inc. | Bottom leads chemical mechanical planarization for TMR magnetic sensors |
CN114416369B (zh) * | 2022-01-19 | 2024-04-26 | 重庆长安汽车股份有限公司 | 一种仪表内部数据分发方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013067542A1 (en) * | 2011-11-03 | 2013-05-10 | Genformatic, Llc | Device, system and method for securing and comparing genomic data |
CN104620120A (zh) * | 2012-05-02 | 2015-05-13 | 美国国家仪器有限公司 | 基于mems的开关系统 |
CN105556904A (zh) * | 2012-12-04 | 2016-05-04 | 北京大学深圳研究生院 | 基本自路由单元及其半清器、排序单元、网络集线器和组播交换网络构建方法 |
CN105704366A (zh) * | 2009-01-30 | 2016-06-22 | 英特赛尔美国有限公司 | 混合格式媒体传输系统和方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9921969B2 (en) * | 2015-07-14 | 2018-03-20 | Western Digital Technologies, Inc. | Generation of random address mapping in non-volatile memories using local and global interleaving |
-
2018
- 2018-02-28 CN CN201810168239.8A patent/CN108536612B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105704366A (zh) * | 2009-01-30 | 2016-06-22 | 英特赛尔美国有限公司 | 混合格式媒体传输系统和方法 |
WO2013067542A1 (en) * | 2011-11-03 | 2013-05-10 | Genformatic, Llc | Device, system and method for securing and comparing genomic data |
CN104620120A (zh) * | 2012-05-02 | 2015-05-13 | 美国国家仪器有限公司 | 基于mems的开关系统 |
CN105556904A (zh) * | 2012-12-04 | 2016-05-04 | 北京大学深圳研究生院 | 基本自路由单元及其半清器、排序单元、网络集线器和组播交换网络构建方法 |
Non-Patent Citations (2)
Title |
---|
A CUDA-MPI Hybrid Bitonic Sorting Algorithm for GPU Clusters;Sam White etc.;《2012 41st International Conference on Parallel Processing Workshops》;20120913;588-589 * |
基于计算智能应用映射的GPU体系结构研究;谭彩凤;《中国优秀硕士学位论文全文数据库 (信息科技辑)》;20111215;I137-53 * |
Also Published As
Publication number | Publication date |
---|---|
CN108536612A (zh) | 2018-09-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108536612B (zh) | 确定用于非易失性存储器中的地址映射的控制状态 | |
US10445232B2 (en) | Determining control states for address mapping in non-volatile memories | |
US10452533B2 (en) | Access network for address mapping in non-volatile memories | |
JP4357304B2 (ja) | 外部記憶装置 | |
US10871910B1 (en) | Non-volatile memory with selective interleaved coding based on block reliability | |
CN102483717B (zh) | 用于存储器磨损平衡的重映射方法及设备 | |
TWI515561B (zh) | 使用快閃記憶體之頁結構的資料樹儲存方法、系統以及電腦產品 | |
US9417803B2 (en) | Adaptive mapping of logical addresses to memory devices in solid state drives | |
US9921969B2 (en) | Generation of random address mapping in non-volatile memories using local and global interleaving | |
CN110888594A (zh) | 数据存储装置及其校验码处理方法 | |
US9454471B2 (en) | Electronic counter in non-volatile limited endurance memory | |
US8417879B2 (en) | Method for suppressing errors, and associated memory device and controller thereof | |
US9582224B2 (en) | Memory control circuit unit, memory storage apparatus and data accessing method | |
US8489942B1 (en) | Memory management method, and memory controller and memory storage device using the same | |
US10452560B2 (en) | Wear leveling in non-volatile memories | |
CN112740189B (zh) | 非易失性存储器的多级损耗均衡 | |
CN105988722A (zh) | 数据储存方法及嵌入式系统 | |
CN101655821A (zh) | 一种解决地址空间映射哈希地址冲突的方法及装置 | |
CN108536611B (zh) | 用于损耗均衡的系统和方法 | |
US10445251B2 (en) | Wear leveling in non-volatile memories | |
US10546640B2 (en) | Data protecting method and memory storage device | |
US9760301B2 (en) | WOM code emulation of EEPROM-type devices | |
TW202145231A (zh) | 記憶體裝置 | |
CN102541675B (zh) | 提升错误更正能力的方法、记忆装置及其控制器 | |
CN105825890A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20240919 Address after: Delaware, USA Patentee after: SANDISK TECHNOLOGIES Inc. Country or region after: U.S.A. Address before: California, USA Patentee before: Western Digital Technologies, Inc. Country or region before: U.S.A. |