CN104885052A - 读写存储设备的数据映像中的虚拟边界码 - Google Patents
读写存储设备的数据映像中的虚拟边界码 Download PDFInfo
- Publication number
- CN104885052A CN104885052A CN201380066018.5A CN201380066018A CN104885052A CN 104885052 A CN104885052 A CN 104885052A CN 201380066018 A CN201380066018 A CN 201380066018A CN 104885052 A CN104885052 A CN 104885052A
- Authority
- CN
- China
- Prior art keywords
- block
- read
- memory device
- data
- dummy block
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/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
- 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/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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/0688—Non-volatile semiconductor memory 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/72—Details relating to flash memory management
- G06F2212/7202—Allocation control and policies
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/70—Masking faults in memories by using spares or by reconfiguring
- G11C29/78—Masking faults in memories by using spares or by reconfiguring using programmable devices
- G11C29/80—Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout
- G11C29/816—Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout for an application-specific layout
- G11C29/82—Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout for an application-specific layout for EEPROMs
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)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
Abstract
本发明提供了用于配置具有数据映像的读写存储设备的方法、系统和设备。该方法包括:基于针对读写存储设备指定的一系列虚拟块的虚拟块大小,来确定数据映像分布。将该数据映像分割成一个或多个数据映像部分,其中向这些数据映像部分中的至少一个添加虚拟边界码。将这些数据映像部分存储在上述一系列的虚拟块的各个虚拟块中,跳过该读写存储设备中的任何坏块(即使是虚拟块之间)。
Description
背景技术
闪存是可以进行电擦除和重新编程的非易失性计算机存储芯片。NAND闪存(还称为NAND存储器)是可以按照块或页来编程和读取的高密度型的读写存储器。NAND存储器用于存储卡、U盘、固态硬盘和类似产品中,以进行通常的存储和数据传输,以及在众多的数字设备中用于存储配置数据。
只读存储器(ROM)是在计算机和其它电子设备中使用的一种类型的存储介质。传统的ROM是只读存储器,不能够进行修改,或者只能慢速地或困难地进行修改,所以其主要用于分配固件。固件是指专门被设计用于特定硬件的软件。设备的固件可能很少或者从未在其经济寿命期间被改变。更新固件的通常原因包括:修复问题或者向使用它的硬件添加功能特征。用于更新固件的一种方式是利用结合ROM使用的特殊程序闪存进行重新编程。与ROM不同,NAND存储器可以被多次擦除和重新编程。
NAND存储器通常被以多个块来进行组织,每个块包含多个页。当NAND存储器的实际的页或块的长度由制造商进行设置时,它就被永久固定在该长度。“块”(由于其涉及计算机存储器,特别是NAND存储器)包括具有标称长度的存储字节或比特序列。该长度称为块大小。将数据存储到块中的过程,通常是一次完成整个页,而擦除数据则是以块为单位进行。
每个块还可以被组织成多个页,其中页的大小通常为2,048字节(~2KB)或4,096字节(~4KB)。与每一个块的至少一页相关联的是少许字节(通常是数据大小的1/32),该少许字节可以用于存储纠错码(ECC)校验和。典型的块大小包括:
·64页,每一页具有2,048字节(~2KB)和64字节的备用区,其意味着128KB(对应于页数据)加4KB(对应于诸如纠错码、坏块信息、元数据等等之类的备用数据)的块大小;
·64页,每一页具有4,096字节(~4KB)和128字节的备用区,其意味着对应于页数据的256KB的块大小;以及
·128页,每一页具有2,048字节(~2KB)和128字节的备用区,其意味着对应于页数据的256KB的块大小。
在NAND存储器的制造中经常发生制造缺陷,其可能使一些存储单元不具有功能和不可用。包括有缺陷的存储单元的块称为“坏块”。由于制造过程,许多NAND设备出厂时就具有一些坏块。例如,通过允许一些坏块,与所有块都必须被验证是好的相比,制造商实现了高得多的产量。这显著地降低了NAND闪存成本,并且只稍微地减少这些部件的存储容量。尽管如此,NAND存储器的制造一般保证初始块(Block 0)是好的,但并不保证剩余的数据块。
一些坏块管理方案在NAND存储器上设置用于标识该芯片上的坏块的信息。这样的坏块信息可以包括:指示要访问的用于存储映像的好块或者要略过的坏块的列表。但是,NAND存储器自身的特性的变化,以及特定于经销商和/或制造商的坏块检测方案/格式,往往需要定制的NAND存储器处理和编程。
另外,计算设备中的ROM固件设计与软件相比受到某种程度的限制,这是由于一旦该计算设备被制造完成,则这些例行程序在稍后的开发周期中几乎不能被改写,并且通常是永久设定的。从而,由于闪存上的数据映像的全部或一部分可以被改写并因此进行更新,所以闪存被用来运行引导加载例程。如本文所使用的,术语“数据映像”是指读写存储设备(例如,NAND存储设备)的一个或多个存储单元中所保存的信息。对于趋于复杂的当代引导装载程序来说,数据映像会耗尽闪存,这是由于它们试图适应特定于NAND设备的特性,而如上所述,这些特性在经销商和/或制造商之间有很大的不同。
发明内容
各个实施例包括在诸如闪存之类的读写存储器上存储数据映像,其中该读写存储器接纳坏块,并使计算设备使用单一算法而不管存储器制造商,在从该存储器读取数据时能够跳过坏块。该方法包括:配置数据映像与数据的好块的边界处的码或特殊值一起保存在读写存储器中。本文将这些码或特殊值称为“虚拟边界码”,当计算设备识别出这些码或特殊值时,其指示所标识的块包含有效数据。可以将数据映像以一个或多个虚拟块的方式保存在存储器中,其中所述一个或多个虚拟块具有与指示虚拟块的起始或结束的虚拟块边界相对应的虚拟块大小。与NAND设备的实际块大小相比,每一个虚拟块的大小可以更小或者相等。可以将虚拟块大小设置成预期该产品将支持的最低公共实际块大小。用于在NAND存储器上存储数据映像的系统,使用该存储器制造商所规定的算法来识别坏块,随后将数据映像存储在好块中,同时跳过这些坏块。虚拟边界码包含于用于存储数据映像的每一个好块的虚拟块边界处。因此,数据映像包括虚拟边界码,其中当计算设备访问读写存储器时,可以查找虚拟边界码以识别要读取的数据块,而无需必须遵循特定于经销商的参数来识别该存储器芯片中的好块或坏块。
另一个方面包括可以在计算设备中实现的、用于从读写存储器中读取数据映像的方法。该方法可以包括:访问存储器的第一虚拟块中的数据,并针对虚拟边界码,对该存储设备进行扫描。该虚拟边界码指示第一虚拟块之后的第二虚拟块的边界。此外,该方法还可以包括:响应于识别出虚拟边界码,访问第二虚拟块中的数据。此外,该方法还可以包括:至少基于在第一虚拟块中访问的数据和在第二虚拟块中访问的数据,读取数据映像。此外,该方法还可以包括:响应于在其它虚拟块中识别的虚拟边界码,访问其它虚拟块中的数据。
另外的方面包括具有处理器的计算设备,其中该处理器配置有处理器可执行指令,以执行与上面所讨论的方法相对应的各种操作。
另外的方面包括计算设备,其中该计算设备具有用于执行与上面所讨论的方法操作相对应的功能的各种单元。
另外的方面包括其上存储有处理器可执行指令的非临时性处理器可读存储介质,其中所述处理器可执行指令被配置为使处理器执行与上面所讨论的方法操作相对应的各种操作。
附图说明
被并入本文并且构成本说明书一部分的附图,描绘了本发明的示例性实施例,并且连同上面给出的概括描述以及下面给出的详细描述一起来解释本发明的特征。
图1是根据一个实施例的读写存储设备封装的图。
图2示出了用于配置图1的读写存储设备的处理步骤。
图3根据一个实施例,示出了五种读写存储设备封装场景。
图4根据一个实施例,示出了两个另外的读写存储设备封装场景。
图5是示出用于在读写存储器上保存数据映像的一个方面方法的处理流程图。
图6是从读写存储设备中读取引导装载程序并进行执行的一个方面方法的处理流程图。
图7示出了用于在读写存储设备上重写映像的处理步骤。
图8是在读写存储设备上重写映像的一个方面方法的处理流程图。
图9是适合于结合各种实施例使用的计算设备的部件图。
图10是适合于结合各种实施例使用的另一种计算设备的部件图。
图11是适合于结合各种实施例使用的另一种计算设备的部件图。
具体实施方式
现在参照附图来详细地描述各个实施例。在可以的地方,贯穿附图使用相同的附图标记来指代相同或者类似的部件。对于特定示例和实现的引用只是用于说明目的,而不是旨在限制本发明或者权利要求的保护范围。在不脱离本发明的保护范围的基础上,可以设计替代性的实施例。此外,为了避免造成本发明的相关细节的模糊,没有详细描述或者省略了本发明的一些公知单元。
本文所使用的“示例性的”一词意味着“用作例子、实例或说明”。本文中描述为“示例性”的任何实施方式不应被解释为比其它实现更优选或更具优势。另外,为了清楚地区分多个描述的组成元素,本文使用“第一”、“第二”、“第三”、“主要”、“辅助”、“第三级”之类的词语或者类似的措词,但其并不旨在将本发明限于元素的特定顺序或者层次。如本文所使用的术语“访问”或“访问到”指代与电子存储设备进行交互的动作,或者当指定其特定部分时,用于扫描或读取其上的数据或信息。此外,如本文所使用的术语“扫描”或“扫描到”意味着检查、解读或查看数据或信息,特别是电子存储设备中的数据或信息。相比而言,如本文所使用的术语“读取”或“读取到”意味着获得、提取、复制或获取数据或信息,特别是电子存储设备中的数据或信息。
本文所公开的各个方面提供用于将数据映像存储到读写存储器(例如,闪存),并从这些存储器中读取数据映像的机制,其避免了对定制化的和/或特定于设备的坏块检测/管理例程的需要。所公开的技术的一个方面包括:将数据映像存储到读写存储设备(例如,闪存设备)的方法。该方法包括:基于针对读写存储设备指定的一系列虚拟块的虚拟块大小,来确定数据映像分布。这些虚拟块是根据本发明的方面来生成的,而实际块是该读写存储器(如,闪存)的固定参数。读取存储设备的实际块大小可被虚拟块大小整除,而没有余数。用此方式,一个或多个虚拟块将精确地等于实际块。如果数据映像大于虚拟块大小,则将其分割成多个部分,以便适应用于存储该数据映像的读写存储器的块大小。向这些数据映像部分中的至少一个添加虚拟边界码。可以将虚拟边界码添加到数据映像部分的开始处,作为虚拟块的初始边界。数据映像可以是引导启动进程中计算设备所使用的数据和软件的一部分。可以根据虚拟块大小和整个数据映像的大小,按照需要将数据映像分割成尽可能多的部分。数据映像的全部或一部分,可以仍然存储在NAND存储器的块0中。此外,该方法还包括:将该数据映像部分存储在所述一系列虚拟块中的一个虚拟块里。在存储数据映像部分时,跳过任何中间的坏块。用此方式,一个或多个坏块被布置在各个虚拟块中所保存的存储的数据映像部分之间。可以将数据映像第一部分和第二部分布置在读写存储设备的共享实际块中。该数据映像的后续部分中的每一个部分可以具有添加到自身的虚拟边界码。这种方式利用虚拟边界码在读写存储器上存储数据映像,其中计算设备可以查找虚拟边界码以定位要读取的存储器的虚拟块,而无需必须依赖好块/坏块列表。这避免了对计算设备进行编程,以适应变化非常大的各种好块/坏块方案的需求。用此方式,可以将相同的数据映像部分(包括那些具有添加到自身的虚拟边界码的数据映像部分)存储在另外的读写设备上。这些另外的读写设备甚至可以彼此之间具有不同的特定于页、块和/或设备的坏块算法特性。
计算设备可以实现从读写存储器中读取数据映像的方面的方法,其中该读写存储器利用使用上述方法所生成的数据映像。当使用读写存储器来存储引导加载程序映像时,可以在针对计算设备所执行的引导加载例程中实现该方法。该引导加载程序映像不需要是针对计算设备执行的专有引导加载程序。该方法包括:访问读写存储器的虚拟块中的数据。读取存储设备的实际块大小可被虚拟块大小整除,而没有余数,其包括实际块大小等于虚拟块大小的场景。如果在该虚拟块中不包含被访问的完整的数据映像,则该方法可以在读写存储器中向前扫描以查找虚拟边界码,其中虚拟边界码指示另一个虚拟块的边界(例如,开始)。当识别出虚拟边界码时,计算设备数据装载例程(例如,引导加载例程)可以访问该其它虚拟块中的数据。由于存储器是通过上述方法来装载的,因此虚拟边界码指示虚拟块(在该虚拟块中标识出该虚拟边界码)是好块,并包括可以读取的该数据映像的一部分。在数据的其它块中进行读取之后,如果仍然还没有访问完整的数据映像,则计算设备数据装载例程继续针对另外的虚拟边界码和数据块对存储器进行扫描,直到读取了完整的数据映像为止。可以根据映像头信息来确定数据映像的量/大小。当数据装载例程认识到已装载了完整的数据映像时,该过程结束。通过针对虚拟边界码,对存储器进行扫描,将自动地跳过坏块(由于它们不包括虚拟边界码),并且只从好块中读取数据,而无需计算设备提前确定哪些块是坏块或好块。根据另一个方面,该方法可以基于第一块中(例如,在数据映像的前导部分中)存储的信息,来推断该数据映像的大小或者虚拟块大小。可以根据数据映像的第一块或者前导部分,来推断该读写存储器的页大小,转而其可以用于确定每一虚拟块的页数量。
另外的方面包括用于向闪存重写更新的或者新的数据映像的方法(例如,当更新或者替换存储器中存储的现有数据映像时)。该方法包括读写存储器的至少一个初始虚拟块中的初始数据映像。此外,从所述至少一个初始虚拟块向前扫描该读写存储器中可用的至少一个后续虚拟块。可以将新数据映像的第一部分存储在后续的虚拟块中,该虚拟块包括添加到其的虚拟边界码。此外,该方法还包括:在存储了完整的新数据映像之后,从所述至少一个初始虚拟块中擦除初始数据映像。可以将新数据映像重写到所述至少一个初始虚拟块中。事实上,可以将新数据的重写和旧数据的擦除执行为一个动作。但是,不需要将新数据映像写入到第一虚拟块中,可以将其写入到后面跟着的一个或多个虚拟块中。一旦将完整的新数据映像写入到所述至少一个初始虚拟块或者第一虚拟块后面跟着的一个或多个虚拟块中,则作为该方法的一部分,该方法还可以包括:从新数据映像临时写到的后续虚拟块中擦除该新数据映像。
当计算设备第一次加电时,该计算设备的处理器通常并不具有ROM或RAM中装载的操作系统。因此,处理器初始时执行ROM固件中存储的程序代码(其称为引导加载程序),该程序开始启动该系统的进程。引导加载程序的工作是将处理器随后执行的其它数据和程序装载到随机存取存储器(RAM)中。主引导加载程序通常存储在ROM中,并在设备加电或者该设备重置时执行。其后,在操作性地耦合到CPU的NAND设备上存储的一个或多个辅助引导加载程序可以允许装载和执行新的和/或额外的应用代码。传统情况下,使用多阶段引导加载程序,在此期间,越来越复杂的几个程序在链式加载过程中一个接一个地加载。但是,在NAND闪存中具有单一可变大小的引导加载程序是有利的,其中该引导加载程序在存储器的不同的页面和/或块大小和坏块特性中具有可扩展性。这种NAND存储器引导加载程序可以仍然是辅助引导加载程序,和/或与其它引导加载程序一起工作。
NAND存储器制造商和经销商并不使用统一标准格式来识别它们的存储设备中的坏块。尽管如此,计算设备必须知道如何处理存储器中的坏块,否则它将无法正常工作或持续。因此,坏块软件例程通常被包含于数据加载例程(其包括辅助引导加载程序)中,坏块软件例程被配置为适应坏块,并提供处理每一个制造商/经销商的NAND存储设备的方法,其中预期这些存储设备将结合该计算设备进行使用。但是,NAND存储芯片可能是从多个制造商或经销商中的任何一个购买的,并且经销商可能改变它们的坏块检测信息/方法。当代坏块软件例程通过将多种不同的例程包含到被编程进它们的计算设备的引导加载程序中,来处理多种不同的坏块检测方案。这通过尝试处理经销商的多变的要求和规定来实现。适应坏块例程中的这种变化,可能使引导加载程序的ROM固件变得复杂,通常并不希望对这些例程进行改变来适应经销商改变。此外,当设计第一引导加载程序完全地位于NAND存储器的最小典型块0之内时(其中保证该块是好块),这可能使系统的整体启动变得复杂,并常常使驱动程序和引导加载程序重复。本文的一个方面减少了这种复杂度和/或重复性,并使ROM能够加载跨度超过第一好块的引导加载程序。
所公开的实施例包括:用于限制和/或消除对NAND存储器经销商针对将数据映像装载到存储芯片上的过程,而实现的不同的坏块检测方案的需求的方法。通过增加虚拟边界码以使计算设备能够识别要装载的数据块,而无须使用资源来查找坏块。针对正在处理(即,装载该数据映像)的读写存储器来实现通用的坏块检测/处理例程,可以实现为机器设置的一部分。
在各个方面,要在读写存储器上存储的数据映像配置有一个或多个虚拟边界码,每一个虚拟边界码位于该数据映像中与虚拟块相对应的位置。这些虚拟块的大小与计算设备中实现的读写存储器的块大小相兼容。虚拟块大小可以匹配存储器的实际块大小。但是,为了适应存储器的不同配置(即,具有不同大小的实际块的存储芯片),可以将虚拟块大小设置成:在该计算设备中可能实现的所有存储器的实际块的最小公分母的大小。这使得本发明的方面方法能支持不同页大小(例如,2K和4K)的NAND设备,而不会针对每一种类型的存储器都要求单独的数据映像。通过将虚拟边界码添加在虚拟块内的固定位置(至少在初始块之后),可以在能够实现的任何存储器的好块中存储同一个数据映像,并且跳过任何中间的坏块。可以将这些虚拟边界码添加在虚拟块中的几乎任何位置(例如,开始位置)。
当将数据映像存储到读写存储器(例如,NAND存储器)上时,使用特定于经销商的坏块检测方法,以避免坏块,并且只使用存储器中的好块。但是,传统的系统需要接下来读取该数据映像的例程也使用特定于经销商的坏块检测方法。相比而言,所公开的实施例的方面最小化或者消除了在读取数据映像时对使用这些特定于经销商的方法的需求,提供适用于实质上任何读写存储设备的更通用方法。本文所公开的方面将数据映像存储在读写存储器上的一个或多个虚拟块中。可以将数据映像存储在读写存储器的一个或多个虚拟块中。如果需要一个以上的虚拟块来容纳整个的数据映像,则可以使用接下来的可用虚拟块(或者多个块,如果需要的话)来存储该数据映像的剩余部分,其中跳过任何中间的坏块,直到存储了全部的数据映像为止。虚拟块通过添加在放置在每个虚拟块中的数据映像的部分中的虚拟边界码来限定和划分界线。一个实施例将虚拟边界码放置在各个虚拟块的起始位置。此外,第一虚拟块可以不需要虚拟边界码,特别是由于通常都保证设备上的第一块是好块。此外,如果将虚拟边界码放置在下一个和/或后续虚拟块的起始位置,则它们标识数据映像的部分存储的位置。只将数据映像与添加到其的虚拟边界码存储在存储器的好的实际块中,因此虚拟边界码对应于存储器的好的实际块内的好的虚拟块。结果,引导加载程序可以使用根据本文的方面来使用单一映像读取处理,以适应实质任何读写存储器的方式,来识别虚拟边界码并确定要读取的存储器的块,而不用管制造商或经销商。本发明的方面方法可以用于从NAND存储器来启动设备(如上所述的编程),例如,智能电话或者具有计算能力的其它电子产品。此外,这些方面方法也可应用于处理辅助引导加载程序的故障保护更新。
这些方面方法特别适用于存储在闪存中,并由计算设备(例如,智能电话或其它移动计算设备)使用为在加电或重启时装载的初始软件的初始引导软件映像。一般情况下,这种引导软件被操作系统、处理器或设备制造商紧紧地控制。控制引导软件的公司通常将主引导加载映像“烧制”到ROM存储器中,随后作为计算设备的引导例程的一部分,计算设备访问读写存储器(例如,NAND存储器)来装载初始软件映像。
本发明的方面方法、系统和设备提供坏块处理,从实质任何NAND设备实现单一辅助引导加载程序(本文称为引导加载程序并简称为“BL”)体系结构。在当代的系统中,辅助引导加载程序的大小可以通过内部SRAM存储器的大小来规定。所以,例如,如果在NAND设备中SRAM大小是256KB,则减去通常放置在块0中的前导的千字节,并减去用于各种各样的其它数据(例如,证书(Cert)或填充(PAD))的额外千字节,在该初始实际块中可以剩下大约240KB。该240KB大小对应于多个单独的引导加载程序的最大大小,并大于如今通常在读写存储器中实现的128KB的最小NAND块大小。本文的一个方面将虚拟块大小设置成与128KB的当代最小NAND块大小相对应。因此,为了从SRAM执行240KB BL,则需要主引导加载程序读取一个以上的虚拟块。尽管一些当代闪存设备具有大于128KB最小值的块大小(其中一些具有256KB,并且正在开发更大的存储器),但这些更大的实际块可以包括两个或更多个128KB的虚拟块。此外,本文方法的方面也可以扩展到更小的块大小(例如,32KB)。
应当理解的是,本文将128KB的分段大小使用成例子,其只是用于说明目的;根据考虑的具体NAND设备,这些分段可以更大或者更小。例如,如果使用128KB虚拟块大小,则可能不支持每个块小于64页或者每个块少于128KB的NAND设备。但是,由于随着虚拟块大小变得越来越小,所需要的虚拟块的数量增加,因此对于更小的块大小具有一些实际限制。更多的虚拟块意味着:为了找到有效的数据映像需要进行更多的扫描,这可能转换成增加启动时间。
本发明的方面方法将放置在NAND设备上的BL映像分割为可以放置在128KB虚拟块大小中的分段。由于128KB虚拟块大小对应于NAND设备的当代最小值,因此选择该虚拟块大小,但也可以根据需要使用不同的虚拟块大小。通过在至少第二128KB分段中添加标记来生成虚拟块。第一128KB分段通常包括BL前导和其它可读代码,并因此不需要包括虚拟边界码。虚拟边界码所标记的每一个分段,规定了虚拟块及其边界(虚拟块的两端——本文还将其称为“虚拟块边界”)。对BL映像的剩余部分进行分割,并分布到所需要的多个虚拟块以容纳整个映像。可以增加封装的数据,以填充不完整的数据虚拟块。
各个方面允许ROM固件的开发人员不再必须适应NAND存储器经销商所规定的坏块检测方案。各个方面不再依赖于预编程的保存坏/好块表的页。所公开的技术简化了闪速工具和构建管理的设计,而以前针对不同的NAND设备则需要不同的工具/构建。另外,所公开的设备、系统和方法实现了引导加载程序的故障保护更新以及其处理。此外,该NAND设计可扩展以支持不同的页/大小的NAND设备。
图1根据各个方面,示出了具有单独的引导加载程序15的NAND设备100的封装。在该实施例中,使用128KB虚拟块大小,其工作于2KB或4KB NAND设备(如上所述)。因此,为了建立128KB虚拟块,可以通过虚拟边界码14来指出虚拟块边界。这种虚拟边界码14是唯一的和可识别的数据模式,其可以如12字节数据一样小。举例而言,虚拟边界码14可以是十六进制数字:844bdc56 73531014 d48b54c6。虽然可以使用比这种情况更大或更小的虚拟边界码14,但其不需要很大,这是由于只需要很小数量的数据来标定虚拟块边界。此外,还可以考虑SRAM中为主引导加载程序栈、共享区域和块0的开始处的其它数据所保留的其它部分。因此,与实际SRAM大小相比,可用的SRAM可能更小。
图1还示出了前导5,其包括可以称为前导存储码的一个或多个存储码10。即使包括几个前导内存码10,也可以假定前导不超过10KB。因此,可以在NAND设备100的块0的前10KB之后,开始写入BL 15。在图1所示的例子中,BL 15的前80字节包括映像头12(其指定引导加载程序第一部分15a的起始位置),并可以包括额外的信息(例如,针对虚拟块设置的大小)。其后,可以通过将虚拟边界码14添加在128KB边界处(跟着是下一个128KB中的引导加载程序第二部分15b),来标记虚拟块边界。虚拟边界码14可以位于典型的辅助引导加载程序的中间,因此BL 15被分割成一个以上的部分15a、15b。通过知道前导大小、映像头大小和虚拟块的大小,可以确定第一引导加载程序部分15a的大小。随后,可以将引导加载程序的剩余部分包括在引导加载程序第二部分15b中,或者甚至包括在额外的虚拟块中的另外部分中(如果需要的话)。因此,在对被分割的BL 15的每一个部分多大进行确定时,可以包括一些已知的或者假定的变量。例如,考虑下面的参数:
·SRAM大小=256KB
·保留/使用的SRAM=~16KB
·虚拟块大小=128KB
·前导(5)大小(其包括前导存储码10)=10KB
·引导加载程序映像头(12)大小=80B
·签名和证书(16)加填充(18)=6KB
·虚拟边界码(VBC)大小=12B。
从SRAM大小中减去所使用的上面字节的总数,在NAND存储器中剩下大约223KB用于引导加载程序,该引导加载程序可以存储在两个128KB虚拟块中。
图2示出了用于考虑引导加载程序15的间隔和分布的另一种方式。首先在20处,可以按照128KB建立虚拟块大小,因此在256KB SRAM中包括两个这种的虚拟块。在22处,可以考虑BL 15的大小,其跨度虚拟块中的至少两个。随后,在24处,向BL 15映像的总长度增加映像头12和证书16。此外,在26处,向该映像的总长度增加前导5(其包括前导存储码10)和填充18。此外,在28处,在BL 15的两个部分15a、15b之间,添加虚拟边界码,在该实施例中,其对应于第一128KB虚拟边界。在考虑这些参数的情况下,实际设备的页大小决定将使用多少实际块,以及将使用多少虚拟块。例如,考虑页大小为4K的NAND设备。该设备具有256KB的实际块,在块0中大约留下223KB用于引导加载程序。因此,4K NAND设备只需要一个好块来保存该BL。如果使用128KB的虚拟块大小,那么一个好的实际块包括两个虚拟块。现在考虑页大小仅为2K的NAND设备。该设备将需要两个好的实际块。这些实际块的大小与128KB的虚拟块大小一致。因此,2K NAND的块0只留下近似118KB的空间用于第一BL部分15a(128KB减去10KB前导5,减去80B的映像头12)。然后,可以将剩余的第二BL部分15b放置在通过虚拟边界码14所指定的下一个好块中。
图3示出了各种场景中,示例性引导加载程序如何分布。所描述的五种场景均使用128KB虚拟块大小(在这五种场景上,示出为一系列虚拟块)。三种场景考虑2KB NAND设备,另两种场景考虑4KB NAND设备。在2KB场景中,虚拟块大小与128KB的实际块大小相一致。在4KB场景中,虚拟块是实际块大小的一半。
在2KB场景1中,引导加载程序的分割和分布是简单明了的,其中虚拟边界码14放置在块1的开始位置处,其与该设备上标记的第一虚拟块边界相一致。应当注意的是,在2KB场景中,虚拟块与实际块相一致。关于上面所描述的NAND存储器的编码,块0还包括前导5(其具有前导存储码10)、引导加载映像头12和第一引导加载程序部分15a。第二引导加载程序部分15b跟着添加的虚拟边界码14,其中在该实施例中,虚拟边界码14标记虚拟块的开始。这种2KB场景1应用于块1是好块的NAND设备,所以第一和第二虚拟块是连续的好块。但是,制造商通常只保证块0是好的,因此考虑2K NAND设备的第二和第三场景。在2KB场景2中,块1是坏的,但块2是好的。因此,由于块1是坏的,所以虚拟边界码14不能写到该块中。相反,虚拟边界码14以及第二引导加载程序部分15b写入的是下一个好块(即,块2)。2KB场景3具有跟着块0的两个初始坏块(块1和块2)。因此,在该情况下,在这两个坏块中的最后一个坏块之后的边界处(其是下一个好块(块3)的开始位置)写入虚拟边界码14。类似地,在该场景下,将该BL的剩余部分(BL第二部分15b)写入到块3中。
在4KB场景下,其实质上并不关心块1是好块还是坏块,这是由于引导加载程序通常可以被完全容纳在块0中,块0足够大到包括两个虚拟块。因此,4KB场景1示出了块1是好块的情形,但其是不需要的,这是由于BL第一部分15a和BL第二部分15b二者均被完全地写入到块0中。此外,4KB场景2示出了两部分的BL 15a、15b如何仍然能够完全地写入到其块0中,而与在该场景中,块1是坏的无关。
图4示出了引导加载程序分布的另外两个场景。图4中的第一场景是4KB场景3,该场景包括需要分割成三个部分15a、15b、15c的更大BL。由于第二实际块(块1)是好的,因此该数据映像扩展到连续的虚拟/实际块。但是,当块1是坏块时,第二虚拟边界码14和BL第三部分15c将被存储在块2中。图4中的第二场景是2KB场景4。再一次使用需要被分割成三个部分15a、15b、15c的更大BL,但在这里,第三块(块2)是坏的。因此,使用第四块(块3)来存储第二虚拟边界码14和BL第三部分15c。
图5示出了在读写存储设备上存储数据映像的方面方法500。该数据映像可以是根据本文的方面的引导加载程序。在方框510中,装载读写设备(例如,NAND设备)并准备在其上进行数据存贮。在方框520中,基于针对该读写存储设备指定的一系列虚拟块的虚拟块大小,来确定数据映像分布以便对该数据映像进行封装。作为该确定操作的一部分,如果整个数据映像对于单一虚拟块来说太大的话,需要将该数据映像分割成至少数据映像第一部分和数据映像第二部分。此外,可以向数据映像第一部分和数据映像第二部分中的至少一个添加虚拟边界码。在该实施例中,将虚拟边界码添加到数据映像第二部分的开始处,因此在方框530中,将数据映像第一部分存储在一系列虚拟块中的第一虚拟块里。在方框540中,存储虚拟边界码(VBC),形成下一个虚拟块(并因此指出一系列虚拟块中的第二虚拟块),其中该下一个虚拟块自然地与好的实际块相一致。在存储VBC和指明虚拟块之后,该读写存储器中的第一虚拟块和第二虚拟块之间的任何中间坏块都被跳过。用于物理地写入数据映像的编程工具,可以执行针对于工厂所标记的坏块的特定于经销商的检查,并根据需要跳过这些坏块。这些编程工具的目标是存储数据映像和/或将VBC合并在数据映像中。因此,编程工具不需要识别或者甚至处理VBC,这是由于将VBC作为数据映像的一部分,以生成可以独立于经销商的坏块管理方案来读取的模式。这些编程工具也可以具有NAND驱动器,但与ROM中的NAND驱动器不同,编程工具NAND驱动器不需要在大小或复杂度方面受到限制。这允许编程工具遵循修订或者对产品的更新来修复错误,甚至处理新的特定于NAND经销商的坏块检查方案。用此方式,与ROM中的NAND驱动器相比,可以对这些编程工具中的功能进行增加、删除、更改或者增强。在方框550中,可以将数据映像的第二(下一个)部分存储在与VBC相同的虚拟块中,其中该虚拟块是该系列虚拟块的第二虚拟块。判断框560判断是否存储了完整的数据映像。如果没有,则该方法返回到方框540,在下一个可用的虚拟块存储另一个VBC,同样在方框550中,存储该数据映像的下一个部分。继续该循环,直到存储了该数据映像的所有部分为止。一旦在判断框560中做出了已存储了完整的数据映像(例如,引导加载程序映像)的肯定判断,则针对在方框510中开始/准备的读写设备装载,该处理在570中结束。因此,该处理可以与其它读写设备串行地或并行地重复执行。
将VBC放置在虚拟块的开始位置,有助于立即检测到好块,并可以优化引导装载进程。虚拟块的单一通道读取可以检测VBC,并同时读取在该块中包含的引导加载程序数据映像。替代地,不需要将虚拟边界码放置在虚拟块的开始位置。例如,可以将VBC放置在每一个虚拟块(其包括块0)的结束位置,或者实质上可以根据期望放置在任何位置。关于一个或多个VBC的位置信息,可以包括在上面所讨论的映像头中。
一旦NAND设备具有向其写入的一个或多个虚拟边界码,则主引导加载程序可以解析该设备,以找到这些虚拟边界码,并使用类似于路标的虚拟边界标记来读取、认证和运行完整的辅助引导加载程序。图6示出了从读写设备中读取数据映像的一个方面方法。
图6示出了从读写存储器中读取数据映像的一个方面方法600。例如,主引导加载程序中的NAND解析器可以实现方法600,来读取、装载和认证辅助引导加载程序。在方框605中,以块0中的前导(其还与该设备的页0相一致)为起始,对该读写设备进行读取。该前导可以包含可以由数据装载例程使用的设备宽度和页大小信息。在方框610中,可以执行纠错编码(ECC)检测,这是由于当前方法优选地启用ECC。该操作可以缺省为4比特BCH纠错编码或者其它编码。如果对编程的页的读取不成功,从而没有检测到ECC,则在方框612中,可以检查另外的ECC配置。例如,可以使用8比特BCH ECC,也可以使用4比特BCH ECC(如果其不是缺省的话)。因此,可以检查一个或多个额外的ECC配置,使得如果在方框614中也没有检测到ECC,则在方框616中结束,其意味着没有找到引导加载程序(BL),该处理退出。替代地,该方法可以使用AUTO_DETECT例程和加权的算法检查,来检查有效的前导。否则,如果在方框610或方框614中检测到ECC,则该方法转到方框620处,在其中执行页大小检测。在方框620中,可以读取连续的页来验证虚拟边界码大小和/或位置,以便计算实际NAND页大小。如果在判断框620处没有检测到页大小,则在另外的判断框622处,判断是否检测到任何虚拟边界码(VBC)。如果在622处检测到VBC,则在624处,读取指出其偏移(位置和大小)的VBC,并移动到下一个页,返回到页大小检测判断框620。如果在622中没有检测到VBC,则在方框616中结束,其意味着没有找到引导加载程序(BL),该处理退出。如果在判断框620中检测到页大小,则通过将虚拟块大小除以页大小,来确定每一个虚拟块的页数量。ROM可以使用该确定结果,来了解在转到下一个虚拟块之前,需要读取多少固定的页。一旦检测到页大小,则可以在方框630中访问第一虚拟块中的数据映像,甚至进行复制。因此,可以读完该第一虚拟块中的剩余页,其使得该数据映像的第一虚拟块中的所有数据都被访问到。随后,该处理可以转到针对VBC,扫描下一个虚拟块。如果在640处没有检测到VBC,则下一个虚拟块是坏的和/或损坏的。因此,在方框642中,该处理针对虚拟边界码,扫描下一个虚拟块。对于可以检查多少虚拟块,可以使用门限(其还称为超时功能),以便确保该处理不会变成为死循环。因此,可以使用诸如15个虚拟块之类的门限,如果在644处达到该门限,则这可能意味着没有能够找到BL,该处理在616处结束。如果没有达到虚拟块门限,则该循环继续进行/返回到方框640处,直到在方框640中检测到虚拟边界码为止。一旦在640处检测到VBC,则在650中,可以访问下一个虚拟块中的所有数据。该下一个虚拟块对应于找到VBC并且可以访问的虚拟块。在660处,可以判断是否读取了完整的数据映像(例如,完整的BL)。如果在660处还没有读取完整的BL,则在方框642中,该处理针对虚拟边界码来扫描下一个虚拟块,如上面所述的进行进一步处理。如果在方框660处读取了完整的BL,则在670处,可以对该BL进行认证和执行,因此根据由第一虚拟块和第二虚拟块中的数据映像所表示的数据来装载该BL。BL装载可以跳过(不需要包括)虚拟边界码字节,这些字节仅仅表示标记,不需要进行装载。
图6中所示出的方面方法示出了如何跳过坏块,使得当在第一虚拟块和第二虚拟块之间或者后续的虚拟块之间存在坏块时,数据装载例程(例如,主引导加载程序)能够读取整个的数据映像(例如,辅助引导加载程序),而不用首先识别该存储器中的好块或坏块。因此,数据装载例程将跳过跟着第一虚拟块的坏块,这是因为在坏的虚拟块中不会检测到虚拟边界码。此外,可以剩下第一虚拟边界码,而不由辅助引导加载程序执行(这是由于只需要将这些字节作为标记)。
另外的方面包括故障保护更新提供,例如通过针对无线设备的空中(OTA)下载。在该方面,包括读写存储器的很多设备(例如,包括闪存的智能电话)通常需要对固件进行升级或者更新。所公开的坏块管理设计方案使用上面所描述的技术的扩展,以可靠/故障保护方式来实现这些升级。初始时,系统检测当前引导加载程序所在的块。随后,提前转到可用于写入新的/替代的引导加载程序的一个或多个其它好块。其后,可以将新的好块位置用作备份,对新的引导加载程序进行编程,以防止某些事情中断该升级/更新过程。随后,可以在初始位置处(例如,其以块0开始),擦除旧引导加载程序,并在块0和后续的好块处,重新编程新的辅助引导加载程序(如果需要的话)。
图7根据各个方面,示出了对NAND设备上的映像进行修订的方法的例子。这种升级方法与使用上面所描述的虚拟边界码的虚拟块指定完全兼容。在初始状态70下,系统访问当前引导加载程序所在的第一块内的数据。这些块可以包括前导5(其具有前导存储码10)和映像头12。在所示出的例子中,将引导加载程序分割成布置在两个初始块中的两个部分15a、15b,其中根据NAND设备,这两个初始块可以对应于虚拟块或实际块,并且根据本文的方面,其可以包括虚拟边界码14。替代地,根据现有技术(可以根据本发明的方法来替代该技术),原始引导加载程序可以是单一的连续引导加载程序。在该阶段,系统可以确定实际块的大小(或者虚拟块的大小(如果存在的话)),以便进一步确定新数据映像(其包括任何引导加载程序部分15a’、15b’、新前导5’(其具有新的前导内存码10’)、新映像头12’和任何必需的新VBC 14’)需要多少块。系统可以在闪存设备上向前扫描,以便寻找下一个可用的好块。如果新的引导加载程序需要一个以上的好块,则系统可以继续在闪存设备上向前扫描,直到找到足够的可用好块来容纳该新数据映像为止。在72处所示出的阶段中,系统随后在所识别的可用的好块中存储新的数据映像(其包括引导加载程序部分15a’、15b’、具有新的前导内存码10’的新前导5’、新映像头12’和新VBC 14’)。根据本发明的一个方面,可用的好块不需要是紧接着的下一个顺序可用的好块。在所示出的例子中,作为该方法的一部分,为了在旧块和改变的新块之间提供缓冲,跳过了至少两个块。留下至少一对块,也使得该方法能考虑初始引导加载程序的大小的未来成长,与当代系统所需要的一个或两个初始块相比,未来可能占用更多的块。此外,留下一些空间还可以避免设备的这些初始块中有坏块。在擦除旧的引导加载程序之前,可以对新数据映像执行验证检查。在72处所示出的阶段,在新数据映像没有正确地装载、被损坏或者不可使用的情况下,系统仍然从旧的引导加载程序部分15a、15b进行引导,以作为故障保护。一旦装载了新数据映像(并可选地进行验证),则在74所示出的状态中,可以擦除旧的引导加载程序或者至少其初始部分。具体而言,如果擦除旧前导5、旧映像头12或者引导加载程序15a的初始部分中的至少一个,则寻找这些元素的主引导加载程序可以跳过旧的引导加载程序。虽然没有将74处所示出的第二块示出为被擦除,但可以在转到下一步之前,对该块进行擦除。其后,在76所示出的状态中,系统随后在第一块中存储新的数据映像,其实质上与先前在阶段72处所存储的新数据映像相同。因此,在阶段76处,可以在NAND设备上的两个地方找到新数据映像,在标记第一块出现错误的情况下,这可以用作备份。一旦对初始块中的数据映像进行了认证,则该修订方法可以结束。可以在NAND设备上留下新数据映像的第二复本作为备份。替代地,在78处所示出的状态中,该方法可以进一步从72处示出的状态中所标记的好块里,擦除新数据映像的第二复本。
在图7中,与目标数据映像无关的各个块被指示成“擦除的”。但是,这些块并不需要是空白的,或者是被擦除的。根据本文的方面,这些方法可以使用前导和虚拟边界码来确定引导加载程序的大小和位置,因此被注释成“擦除的”那些块旨在指示该数据块与引导加载程序映像无关。
在图8中,示出了在读写存储器上重写数据映像的方面方法800。在方框810中,在读写存储器的至少一个第一虚拟块中,访问初始数据映像。所述至少一个第一虚拟块可以包括一个以上的第一虚拟块。在方框820中,该方法针对该读写存储器中可用的至少一个第二虚拟块,从所述至少一个第一虚拟块向前扫描。因此,如果包括的所述至少一个第一虚拟块超过一个虚拟块,则如方法800中所规定的“第二虚拟块”将跟着这些在先的第一虚拟块。在方框830中,将新数据映像的第一部分存储在第二虚拟块中。在方框840中,该方法从第二虚拟块向前扫描到第三虚拟块。一旦定位到第三虚拟块,则在850处,将新数据映像的第二部分存储在第三虚拟块中。方框860包括:擦除所述至少一个第一虚拟块的至少一部分中的初始数据映像。在方框860中,可以擦除整个的初始数据映像或者仅仅其一部分。例如,在方框860中,可以从一个以上的第一虚拟块中擦除初始数据映像。在870处,将包括VBC的新数据映像第一部分和第二部分存储在所述至少一个第一虚拟块中。在方框880中,从第二虚拟块中擦除新数据映像第一部分。在方框890中,从第三虚拟块中擦除新数据映像第二部分。
前导块可以用于获取各种设备特性。如果初始没有发现有效的前导块,则该处理可以继续穿过这些块以尝试找到一个前导块。可以通过在作为闪存读取命令的一部分所读取的块的初始字节(例如,前12字节)中,检查特定的编码(例如,虚拟边界码)来检测前导块。根据所公开的方面,可以期望通用的NAND设备宽度处理技术。可以使用一种算法来计数所检测到的被指定的虚拟块。如果使用这一技术没有获得虚拟块计数,则该处理可以退出,并以没有找到辅助引导加载程序来结束。否则,在这种方式下,可以使用虚拟边界码来确定虚拟块和NAND设备自身的大小。此外,可以将ECC检测和页大小检测实现成本文所公开的方法的一部分。例如,自动页大小检测算法可以读取利用特定的虚拟边界码来标记的页的数量,以便确定在该设备上有多少页,并因此确定其页大小。
另外,各个实施例可以使用和/或利用各种各样的移动计算设备中的任何一种来实现,在图9中以蜂窝电话的形式示出了其一个例子。典型的移动计算设备900通常都具有图9中所示出的部件。例如,移动计算设备900可以包括耦合到内部存储器902的处理器901和触摸表面输入设备/显示器903(例如,电阻式感应触摸屏904、电容感应触摸屏、红外线感测触摸屏、声学/压电感应触摸屏等等)。移动计算设备900可以具有用于发送和接收电磁辐射的无线装置/天线906,后者连接到无线数据链路和/或耦合到处理器901的蜂窝电话收发机902。移动计算设备900还可以包括耦合到处理器901的GPS接收机,以确定该设备的位置。此外,移动计算设备900还可以包括用于接收用户输入的物理按键908。
各个实施例可以使用和/或利用各种各样的计算设备中的任何一种(例如,平板计算机)来实现,图10示出了其一个例子。例如,无线设备1000可以包括耦合到内部存储器1004和1006的处理器1002。内部存储器1004和1006可以是易失性存储器或非易失性存储器,还可以是安全和/或加密存储器,或者非安全和/或非加密存储器、或者其任意组合。此外,处理器1002还可以耦合到用户接口,例如触摸屏显示器1016(例如,电阻式感应触摸屏、电容感应触摸屏、红外线感测触摸屏等等)或者传统的按键(例如,1012a和1012b)和非触摸屏显示器。另外,无线设备1000可以包括一个或多个网络收发机,其被配置为使处理器1002能够通过一个或多个有线或无线网络与其它计算设备进行通信的。举一个特定的例子,无线设备1000的网络收发机可以包括用于发送和接收电磁辐射的一付或多付天线1018,后者可以连接到一个或多个无线数据链路收发机和/或耦合到处理器1002的蜂窝电话收发机1010。此外,无线设备1000还可以包括用于接收用户输入的物理按键1012a和1012b。
上面所描述的各个实施例还可以在各种各样的个人计算设备(例如,如图11中所示的膝上型计算机1100)之中实现和/或利用各种各样的个人计算设备来实现。很多膝上型计算机包括用作该计算机的指取设备的触摸板触摸表面1107,因此可以接收拖拽、滚动和轻打手势(其类似于在装备有触摸屏显示器和上面所描述的移动计算设备上所实现的那些)。通常,膝上型计算机1100包括处理器1101,后者耦合到易失性存储器和大容量非易失性存储器(例如,闪存设备1102)。此外,膝上型计算机1100还可以包括耦合到处理器1101的软盘驱动器和激光光盘(CD)驱动器。此外,膝上型计算机1100还可以包括耦合到处理器1101的多个网络收发机或网络连接器端口,其配置为使处理器1101能够通过一个或多个有线或无线网络与其它计算设备进行通信。举一个特定的例子,膝上型计算机1100的网络收发机可以包括以太网、USB或火线连接器插座/收发机、耦合到一付或多付天线用于发送和接收电磁辐射的一个或多个无线调制解调器收发机(例如,Wi-Fi和/或蜂窝数据网络收发机)。此外,膝上型计算机1100还可以包括用于将处理器1101耦合到未来可能开发的网络的其它类型的网络连接电路。在笔记本配置中,计算机壳体包括触摸板触摸表面1107、键盘1108和显示器1109,所有这些部件都耦合到处理器1101。如本领域所公知的,计算设备的其它配置可以包括耦合(例如,通过USB输入)到处理器的计算机鼠标或者跟踪球,它们也可以结合各种实施例进行使用。
本文描述的各种实施例中的处理器可以是能通过软件指令(应用)配置,以执行各种功能(其包括上面所描述的各种实施例的功能)的任何可编程微处理器、微计算机或者多处理器芯片或芯片集。在一些设备中,可以提供多个处理器,例如,一个处理器专用于无线通信功能,一个处理器专用于运行其它应用。通常,在访问软件应用并将它们装载到处理器之前,可以将这些软件应用存储在内部存储器中。处理器可以包括足够用于存储这些应用软件指令的内部存储器。在很多设备中,内部存储器可以是易失性存储器或者非易失性存储器(例如,闪存)、或者二者的混合。为了便于说明目的,对于存储器的引用通常指代处理器可访问的存储器,其包括内部存储器或者插入在设备之中的可移除存储器、以及处理器自身中的存储器。
上述的方法描述和处理流程图仅仅是用作为说明性例子,而不是旨在要求或者隐含着必须以所给出的顺序来执行各个实施例的模块。如本领域普通技术人员所应当理解的,可以以任何顺序来执行上述的实施例中的模块顺序。
诸如“其后”、“转而”、“接着”等等之类的词语,并不旨在限制这些模块的顺序;这些词语仅仅只是用于引导读者遍历该方法的描述。此外,任何对权利要求元素的单数引用(例如,使用冠词“一个(a)”、“某个(an)”或者“该(the)”),不应被解释为将该元素限制为单数形式。
结合本文所公开的实施例描述的各种示例性的逻辑框和处理流程图模块均可以实现成电子硬件、计算机软件或二者的组合。为了清楚地表示硬件和软件之间的这种可交换性,上面对各种示例性的部件、框、模块、电路和模块均围绕其功能进行了总体描述。至于这种功能是实现成硬件还是实现成软件,取决于特定的应用和对整个系统所施加的设计约束条件。熟练的技术人员可以针对每个特定应用,以变通的方式实现所描述的功能,但是,这种实现决策不应解释为背离本发明的保护范围。
用于执行本文所述功能的通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件部件或者其任意组合,可以用来实现或执行结合本文所公开实施例描述的用于实现各种示例性的逻辑、逻辑框、模块和电路的硬件。通用处理器可以是微处理器,或者,该处理器也可以是任何常规的处理器、控制器、微控制器或者状态机。处理器也可以实现为计算设备的组合,例如,DSP和微处理器的组合、若干微处理器、一个或多个微处理器与DSP内核的结合,或者任何其它此种结构。替代地,一些模块或方法可以由特定于给定的功能的电路来执行。
在一个或多个示例性方面,本文所述功能可以用硬件、软件、固件或它们任意组合的方式来实现。当在软件中实现时,可以将这些功能存储成非临时性计算机可读存储介质或者非临时性处理器可读存储介质上的一个或多个指令或代码。本文所公开的方法或算法的步骤,可以体现在处理器可执行软件模块中,后者可以位于非临时性计算机可读或者处理器可读存储介质上。非临时性计算机可读或者处理器可读存储介质可以是计算机或处理器能够存取的任何存储介质。举例而言,但非做出限制,这种非临时性计算机可读或处理器可读介质可以包括RAM、ROM、EEPROM、闪存、CD-ROM或其它光盘存储器、磁盘存储器或其它磁存储设备、或者能够用于存储具有指令或数据结构形式的期望的程序代码并能够由计算机进行存取的任何其它介质。如本文所使用的,磁盘和光盘包括压缩光盘(CD)、激光光盘、光盘、数字通用光盘(DVD)、软盘和蓝光光盘,其中磁盘通常磁性地复制数据,而光盘则用激光来光学地复制数据。上述的组合也应当包括在非临时性计算机可读和处理器可读介质的保护范围之内。另外,一种方法或算法的操作可以作为一个代码和/或指令集或者其任意组合,位于非临时性处理器可读介质和/或计算机可读介质上,其中该非临时性处理器可读介质和/或计算机可读介质可以并入到计算机程序产品中。
本领域普通技术人员应当认识到,可以使用所公开实施例的方面的多种可能修改和组合,同时仍然利用相同的基本底层机制和方法。为了便于说明起见,参照特定的实施例来给出前面的描述。但是,上面的这些示例性讨论并不是详尽的,或者并不旨在将本发明限于所公开的精确形式。在了解了上面的教示内容之后,可以实现多种修改和变型。选择和描述这些实施例以解释本发明的基本原理以及它们的实际应用,使本领域其它普通技术人员能够通过各种修改以适合于预期的具体使用,来最佳地利用本发明和各种实施例。因此,本发明并不限于这些实施例和本文所示出和描述的所公开技术的各个方面,而是与所附权利要求书和本文公开的原理和新颖性特征的最广范围相一致。
Claims (68)
1.一种在读写存储设备上存储数据映像的方法,所述方法包括:
基于针对第一读写存储设备指定的一系列虚拟块的虚拟块大小,来确定数据映像分布,所述第一读写存储设备包括一系列实际块;
向数据映像第一部分添加虚拟边界码,所述虚拟边界码代表用于定位所述数据映像第一部分的标记;以及
将所述数据映像第一部分与添加到其的所述虚拟边界码存储在所述第一读写存储设备上的所述一系列虚拟块中的虚拟块里。
2.根据权利要求1所述的方法,其中,所述虚拟边界码被添加在所述数据映像第一部分的开始处。
3.根据权利要求1所述的方法,其中,所述一系列实际块中的每一个实际块的大小可被所述虚拟块大小整除,而没有余数。
4.根据权利要求1所述的方法,还包括:
将数据映像第二部分存储在所述第一读写存储设备上的所述一系列虚拟块中的另一个虚拟块里,其中,所述数据映像被分割成一个以上的部分,所述一个以上的部分包括所述数据映像第一部分和所述数据映像第二部分。
5.根据权利要求4所述的方法,其中,所述第一读写存储设备中的坏块位于所述数据映像第一部分和所述数据映像第二部分之间。
6.根据权利要求4所述的方法,其中,所述数据映像第一部分和所述数据映像第二部分被存储在所述第一读写存储设备上的所述一系列实际块中的共享实际块里。
7.根据权利要求4所述的方法,其中,所述数据映像第二部分占据所述第一读写存储设备的块0。
8.根据权利要求4所述的方法,其中,所述数据映像第二部分包括映像头,其中所述映像头包含关于以下各项中的至少一项的信息:所述第一读写存储设备上的所述虚拟边界码的位置以及所述数据映像的大小。
9.根据权利要求4所述的方法,还包括:
向数据映像第三部分添加虚拟边界码;以及
将所述数据映像第三部分与添加到其的所述虚拟边界码存储在所述一系列虚拟块中的第三虚拟块里。
10.根据权利要求1所述的方法,还包括:
将所述数据映像第一部分与添加到其的所述虚拟边界码存储在第二读写存储设备上的虚拟块中,其中,特定于页、块和设备的坏块算法特性中的至少一个,在所述第一读写存储设备和所述第二读写存储设备之间是不同的。
11.一种用于在读写存储设备上存储数据映像的计算设备,所述计算设备包括:
存储器;以及
处理器,其耦合到所述存储器并且配置有处理器可执行指令以执行操作,所述操作包括:
基于针对第一读写存储设备指定的一系列虚拟块的虚拟块大小,来确定数据映像分布,所述第一读写存储设备包括一系列实际块;
向数据映像第一部分添加虚拟边界码,所述虚拟边界码代表用于定位所述数据映像第一部分的标记;以及
将所述数据映像第一部分与添加到其的所述虚拟边界码存储在所述第一读写存储设备上的所述一系列虚拟块中的虚拟块里。
12.根据权利要求11所述的计算设备,其中,所述处理器配置有处理器可执行指令以执行操作,使得所述虚拟边界码被添加在所述数据映像第一部分的开始处。
13.根据权利要求11所述的计算设备,其中,所述处理器配置有处理器可执行指令以执行操作,使得所述一系列实际块中的每一个实际块的大小可被所述虚拟块大小整除,而没有余数。
14.根据权利要求11所述的计算设备,其中,所述处理器配置有处理器可执行指令以执行操作,所述操作还包括:
将数据映像第二部分存储在所述第一读写存储设备上的所述一系列虚拟块中的另一个虚拟块里,其中,所述数据映像被分割成一个以上的部分,所述一个以上的部分包括所述数据映像第一部分和所述数据映像第二部分。
15.根据权利要求14所述的计算设备,其中,所述处理器配置有处理器可执行指令以执行操作,使得所述第一读写存储设备中的坏块位于所述数据映像第一部分和所述数据映像第二部分之间。
16.根据权利要求14所述的计算设备,其中,所述处理器配置有处理器可执行指令以执行操作,使得所述数据映像第一部分和所述数据映像第二部分被存储在所述第一读写存储设备上的所述一系列实际块中的共享实际块里。
17.根据权利要求14所述的计算设备,其中,所述处理器配置有处理器可执行指令以执行操作,使得所述数据映像第二部分占据所述第一读写存储设备的块0。
18.根据权利要求14所述的计算设备,其中,所述处理器配置有处理器可执行指令以执行操作,使得所述数据映像第二部分包括映像头,其中所述映像头包含关于以下各项中的至少一项的信息:所述第一读写存储设备上的所述虚拟边界码的位置以及所述数据映像的大小。
19.根据权利要求14所述的计算设备,其中,所述处理器配置有处理器可执行指令以执行操作,所述操作还包括:
向数据映像第三部分添加虚拟边界码;以及
将所述数据映像第三部分与添加到其的所述虚拟边界码存储在所述一系列虚拟块中的第三虚拟块里。
20.根据权利要求11所述的计算设备,其中,所述处理器配置有处理器可执行指令以执行操作,所述操作还包括:
将所述数据映像第一部分与添加到其的所述虚拟边界码存储在第二读写存储设备上的虚拟块中,其中,特定于页、块和设备的坏块算法特性中的至少一个,在所述第一读写存储设备和所述第二读写存储设备之间是不同的。
21.一种用于在读写存储设备上存储数据映像的计算设备,所述计算设备包括:
用于基于针对第一读写存储设备指定的一系列虚拟块的虚拟块大小,来确定数据映像分布的单元,所述第一读写存储设备包括一系列实际块;
用于向数据映像第一部分添加虚拟边界码的单元,其中所述虚拟边界码代表用于定位所述数据映像第一部分的标记;以及
用于将所述数据映像第一部分与添加到其的所述虚拟边界码存储在所述第一读写存储设备上的所述一系列虚拟块中的虚拟块里的单元。
22.根据权利要求21所述的计算设备,其中,所述虚拟边界码被添加在所述数据映像第一部分的开始处。
23.根据权利要求21所述的计算设备,其中,所述一系列实际块中的每一个实际块的大小可被所述虚拟块大小整除,而没有余数。
24.根据权利要求21所述的计算设备,还包括:
用于将数据映像第二部分存储在所述第一读写存储设备上的所述一系列虚拟块中的另一个虚拟块里的单元,其中,所述数据映像被分割成一个以上的部分,所述一个以上的部分包括所述数据映像第一部分和所述数据映像第二部分。
25.根据权利要求24所述的计算设备,其中,所述第一读写存储设备中的坏块位于所述数据映像第一部分和所述数据映像第二部分之间。
26.根据权利要求24所述的计算设备,其中,将所述数据映像第一部分和所述数据映像第二部分被存储在所述第一读写存储设备上的所述一系列实际块中的共享实际块里。
27.根据权利要求24所述的计算设备,其中,所述数据映像第二部分占据所述第一读写存储设备的块0。
28.根据权利要求24所述的计算设备,其中,所述数据映像第二部分包括映像头,其中所述映像头包含关于以下各项中的至少一项的信息:所述第一读写存储设备上的所述虚拟边界码的位置以及所述数据映像的大小。
29.根据权利要求24所述的计算设备,还包括:
用于向数据映像第三部分添加虚拟边界码的单元;以及
用于将所述数据映像第三部分与添加到其的所述虚拟边界码存储在所述一系列虚拟块中的第三虚拟块里的单元。
30.根据权利要求21所述的计算设备,还包括:
用于将所述数据映像第一部分与添加到其的所述虚拟边界码存储在第二读写存储设备上的虚拟块中的单元,其中,特定于页、块和设备的坏块算法特性中的至少一个,在所述第一读写存储设备和所述第二读写存储设备之间是不同的。
31.一种其上存储有处理器可执行软件指令的非临时性计算机可读存储介质,其中所述处理器可执行软件指令被配置为使处理器执行操作,以管理具有存储器的计算设备上的存储器,所述操作包括:
基于针对第一读写存储设备指定的一系列虚拟块的虚拟块大小,来确定数据映像分布,所述第一读写存储设备包括一系列实际块;
向数据映像第一部分添加虚拟边界码,所述虚拟边界码代表用于定位所述数据映像第一部分的标记;以及
将所述数据映像第一部分与添加到其的所述虚拟边界码存储在所述第一读写存储设备上的所述一系列虚拟块中的虚拟块里。
32.根据权利要求31所述的非临时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使处理器执行操作,使得所述虚拟边界码被添加在所述数据映像第一部分的开始处。
33.根据权利要求31所述的非临时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使处理器执行操作,使得所述一系列实际块中的每一个实际块的大小可被所述虚拟块大小整除,而没有余数。
34.根据权利要求31所述的非临时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使处理器执行操作,所述操作还包括:
将数据映像第二部分存储在所述第一读写存储设备上的所述一系列虚拟块中的另一个虚拟块里,其中,数据映像被分割成一个以上的部分,所述一个以上的部分包括所述数据映像第一部分和所述数据映像第二部分。
35.根据权利要求34所述的非临时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使处理器执行操作,使得所述第一读写存储设备中的坏块位于所述数据映像第一部分和所述数据映像第二部分之间。
36.根据权利要求34所述的非临时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使处理器执行操作,使得所述数据映像第一部分和所述数据映像第二部分被存储在所述第一读写存储设备上的所述一系列实际块中的共享实际块里。
37.根据权利要求34所述的非临时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使处理器执行操作,使得所述数据映像第二部分占据所述第一读写存储设备的块0。
38.根据权利要求34所述的非临时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使处理器执行操作,使得所述数据映像第二部分包括映像头,其中所述映像头包含关于以下各项中的至少一项的信息:所述第一读写存储设备上的所述虚拟边界码的位置以及所述数据映像的大小。
39.根据权利要求34所述的非临时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使处理器执行操作,所述操作还包括:
向数据映像第三部分添加虚拟边界码;以及
将所述数据映像第三部分与添加到其的所述虚拟边界码存储在所述一系列虚拟块中的第三虚拟块里。
40.根据权利要求31所述的非临时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使处理器执行操作,所述操作还包括:
将所述数据映像第一部分与添加到其的所述虚拟边界码存储在第二读写存储设备上的虚拟块中,其中,特定于页、块和设备的坏块算法特性中的至少一个,在所述第一读写存储设备和所述第二读写存储设备之间是不同的。
41.一种从读写存储设备中读取数据映像的方法,包括:
访问第一读写存储设备的第一虚拟块中的第一数据,所述第一读写存储设备的实际块大小可被虚拟块大小整除,而没有余数;
针对指定所述第一虚拟块之后的第二虚拟块的第二虚拟块边界的虚拟边界码,扫描所述第一读写存储设备;
响应于识别出所述第二虚拟块中的所述虚拟边界码,访问所述第二虚拟块中的第二数据;以及
基于所述第一数据和所述第二数据来读取第一设备数据映像。
42.根据权利要求41所述的方法,还包括:
响应于确定所述第一数据和所述第二数据不包括所述数据映像的完整映像,针对指定所述第二虚拟块之后的第三虚拟块的第三虚拟块边界的虚拟边界码,扫描所述第一读写存储设备;
响应于识别出所述第三虚拟块中的虚拟边界码,访问所述第三虚拟块中的第三数据;以及
进一步基于所述第三数据来读取所述数据映像。
43.根据权利要求41所述的方法,还包括:
基于所述第一数据和所述第二数据来执行引导装载程序。
44.根据权利要求41所述的方法,还包括:
响应于在所述实际块中没有检测到所述虚拟边界码,跳过所述第一读写存储设备的、所述第一虚拟块之后的实际块。
45.根据权利要求41所述的方法,还包括:
响应于在所述第一读写存储设备上的、与所述第一虚拟块的大小相对应的中间距离中没有检测到所述虚拟边界码,跳过所述中间距离。
46.根据权利要求45所述的方法,还包括:
扫描所述第一虚拟块中的所述第一数据里包含的头信息;以及
基于所述头信息,来确定所述数据映像和所述虚拟块大小中的至少一个的大小。
47.根据权利要求41所述的方法,还包括:
访问第二读写存储设备的第三虚拟块中的第三数据,其中,特定于页、块和设备的坏块算法特性中的至少一个,在所述第一读写存储设备和所述第二读写存储设备之间是不同的;
针对所述虚拟边界码,扫描所述第二读写存储设备;
响应于识别出所述虚拟边界码,访问所述第二读写存储设备的第四虚拟块中的第四数据;以及
基于所述第三数据和所述第四数据来读取第二设备数据映像。
48.一种计算设备,包括:
存储器;以及
处理器,其耦合到所述存储器并且配置有处理器可执行指令以执行操作,所述操作包括:
访问第一读写存储设备的第一虚拟块中的第一数据,所述第一读写存储设备的实际块大小可被虚拟块大小整除,而没有余数;
针对指定所述第一虚拟块之后的第二虚拟块的第二虚拟块边界的虚拟边界码,扫描所述第一读写存储设备;
响应于识别出所述第二虚拟块中的所述虚拟边界码,访问所述第二虚拟块中的第二数据;以及
基于所述第一数据和所述第二数据来读取第一设备数据映像。
49.根据权利要求48所述的计算设备,其中,所述处理器配置有处理器可执行指令以执行操作,所述操作还包括:
响应于确定所述第一数据和所述第二数据不包括数据映像的完整映像,针对指定所述第二虚拟块之后的第三虚拟块的第三虚拟块边界的虚拟边界码,扫描所述第一读写存储设备;
响应于识别出所述第三虚拟块中的所述虚拟边界码,访问所述第三虚拟块中的第三数据;以及
进一步基于所述第三数据来读取所述数据映像。
50.根据权利要求48所述的计算设备,其中,所述处理器配置有处理器可执行指令以执行操作,所述操作还包括:
基于所述第一数据和所述第二数据来执行引导装载程序。
51.根据权利要求48所述的计算设备,其中,所述处理器配置有处理器可执行指令以执行操作,所述操作还包括:
响应于在所述实际块中没有检测到所述虚拟边界码,跳过所述第一读写存储设备的、所述第一虚拟块之后的实际块。
52.根据权利要求48所述的计算设备,其中,所述处理器配置有处理器可执行指令以执行操作,所述操作还包括:
响应于在所述第一读写存储设备上的、与所述第一虚拟块的大小相对应的中间距离中没有检测到所述虚拟边界码,跳过所述中间距离。
53.根据权利要求52所述的计算设备,其中,所述处理器配置有处理器可执行指令以执行操作,所述操作还包括:
扫描所述第一虚拟块中的所述第一数据里包含的头信息;以及
基于所述头信息,来确定所述数据映像和所述虚拟块大小中的至少一个的大小。
54.根据权利要求48所述的计算设备,其中,所述处理器配置有处理器可执行指令以执行操作,所述操作还包括:
访问第二读写存储设备的第三虚拟块中的第三数据,其中,特定于页、块和设备的坏块算法特性中的至少一个,在所述第一读写存储设备和所述第二读写存储设备之间是不同的;
针对所述虚拟边界码,扫描所述第二读写存储设备;
响应于识别出所述虚拟边界码,访问所述第二读写存储设备的第四虚拟块中的第四数据;以及
基于所述第三数据和所述第四数据来读取第二设备数据映像。
55.一种用于从读写存储设备中读取数据映像的计算设备,所述计算设备包括:
用于访问第一读写存储设备的第一虚拟块中的第一数据的单元,其中,所述第一读写存储设备的实际块大小可被虚拟块大小整除,而没有余数;
用于针对指定所述第一虚拟块之后的第二虚拟块的第二虚拟块边界的虚拟边界码,扫描所述第一读写存储设备的单元;
用于响应于识别出所述第二虚拟块中的所述虚拟边界码,访问所述第二虚拟块中的第二数据的单元;以及
用于基于所述第一数据和所述第二数据来读取第一设备数据映像的单元。
56.根据权利要求55所述的计算设备,还包括:
用于响应于确定所述第一数据和所述第二数据不包括所述数据映像的完整映像,针对指定所述第二虚拟块之后的第三虚拟块的第三虚拟块边界的虚拟边界码,扫描所述第一读写存储设备的单元;
用于响应于识别出所述第三虚拟块中的虚拟边界码,访问所述第三虚拟块中的第三数据的单元;以及
用于进一步基于所述第三数据来读取所述数据映像的单元。
57.根据权利要求55所述的计算设备,还包括:
用于基于所述第一数据和所述第二数据来执行引导装载程序的单元。
58.根据权利要求55所述的计算设备,还包括:
用于响应于在所述实际块中没有检测到所述虚拟边界码,跳过所述第一读写存储设备的、所述第一虚拟块之后的实际块的单元。
59.根据权利要求55所述的计算设备,还包括:
用于响应于在所述第一读写存储设备上的、与所述第一虚拟块的大小相对应的中间距离中没有检测到所述虚拟边界码,跳过所述中间距离的单元。
60.根据权利要求59所述的计算设备,还包括:
用于扫描所述第一虚拟块中的所述第一数据里包含的头信息的单元;以及
用于基于所述头信息,来确定所述数据映像和所述虚拟块大小中的至少一个的大小的单元。
61.根据权利要求55所述的计算设备,还包括:
用于访问第二读写存储设备的第三虚拟块中的第三数据的单元,其中,特定于页、块和设备的坏块算法特性中的至少一个,在所述第一读写存储设备和所述第二读写存储设备之间是不同的;
用于针对所述虚拟边界码,扫描所述第二读写存储设备的单元;
用于响应于识别出所述虚拟边界码,访问所述第二读写存储设备的第四虚拟块中的第四数据的单元;以及
用于基于所述第三数据和所述第四数据来读取第二设备数据映像的单元。
62.一种其上存储有处理器可执行软件指令的非临时性计算机可读存储介质,其中所述处理器可执行软件指令被配置为使处理器执行操作,以读取具有存储器的计算设备上的存储器,所述操作包括:
访问第一读写存储设备的第一虚拟块中的第一数据,所述第一读写存储设备的实际块大小可被虚拟块大小整除,而没有余数;
针对指定所述第一虚拟块之后的第二虚拟块的第二虚拟块边界的虚拟边界码,扫描所述第一读写存储设备;
响应于识别出所述第二虚拟块中的所述虚拟边界码,访问所述第二虚拟块中的第二数据;以及
基于所述第一数据和所述第二数据来读取第一设备数据映像。
63.根据权利要求62所述的非临时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使处理器执行操作,所述操作还包括:
响应于确定所述第一数据和所述第二数据不包括所述数据映像的完整映像,针对指定所述第二虚拟块之后的第三虚拟块的第三虚拟块边界的虚拟边界码,扫描所述第一读写存储设备;
响应于识别出所述第三虚拟块中的所述虚拟边界码,访问所述第三虚拟块中的第三数据;以及
进一步基于所述第三数据来读取所述数据映像。
64.根据权利要求62所述的非临时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使处理器执行操作,所述操作还包括:
基于所述第一数据和所述第二数据来执行引导装载程序。
65.根据权利要求62所述的非临时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使处理器执行操作,所述操作还包括:
响应于在所述实际块中没有检测到所述虚拟边界码,跳过所述第一读写存储设备的、所述第一虚拟块之后的实际块。
66.根据权利要求62所述的非临时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使处理器执行操作,所述操作还包括:
响应于在所述第一读写存储设备上的、与所述第一虚拟块的大小相对应的中间距离中没有检测到所述虚拟边界码,跳过所述中间距离。
67.根据权利要求66所述的非临时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使处理器执行操作,所述操作还包括:
扫描所述第一虚拟块中的所述第一数据里包含的头信息;以及
基于所述头信息,来确定数据映像和所述虚拟块大小中的至少一个的大小。
68.根据权利要求62所述的非临时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使处理器执行操作,所述操作还包括:
访问第二读写存储设备的第三虚拟块中的第三数据,其中,特定于页、块和设备的坏块算法特性中的至少一个,在所述第一读写存储设备和所述第二读写存储设备之间是不同的;
针对所述虚拟边界码,扫描所述第二读写存储设备;
响应于识别出所述虚拟边界码,访问所述第二读写存储设备的第四虚拟块中的第四数据;以及
基于所述第三数据和所述第四数据来读取第二设备数据映像。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/720,532 US9442840B2 (en) | 2012-12-19 | 2012-12-19 | Virtual boundary codes in a data image of a read-write memory device |
US13/720,532 | 2012-12-19 | ||
PCT/US2013/068939 WO2014099169A1 (en) | 2012-12-19 | 2013-11-07 | Virtual boundary codes in a data image of a read-write memory device |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104885052A true CN104885052A (zh) | 2015-09-02 |
CN104885052B CN104885052B (zh) | 2017-12-05 |
Family
ID=49759531
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380066018.5A Expired - Fee Related CN104885052B (zh) | 2012-12-19 | 2013-11-07 | 读写存储设备的数据映像中的虚拟边界码 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9442840B2 (zh) |
EP (1) | EP2936295A1 (zh) |
JP (1) | JP6157637B2 (zh) |
KR (1) | KR20150096782A (zh) |
CN (1) | CN104885052B (zh) |
WO (1) | WO2014099169A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107025144A (zh) * | 2015-10-21 | 2017-08-08 | 罗伯特·博世有限公司 | 用于写入以及读取数据集的方法 |
CN109992197A (zh) * | 2017-12-29 | 2019-07-09 | 苏州迈瑞微电子有限公司 | 一种数据读写方法、装置、电子设备和存储介质 |
CN112437924A (zh) * | 2018-05-11 | 2021-03-02 | 美国莱迪思半导体公司 | 用于可编程逻辑器件的安全引导系统和方法 |
CN113287316A (zh) * | 2018-10-23 | 2021-08-20 | 联发科技股份有限公司 | 减少环路滤波缓冲器的方法及装置 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10223018B2 (en) * | 2017-04-19 | 2019-03-05 | Sandisk Technologies Llc | Bad page and bad block management in memory |
US10515701B1 (en) * | 2017-10-31 | 2019-12-24 | Pure Storage, Inc. | Overlapping raid groups |
CN111275657A (zh) * | 2018-11-20 | 2020-06-12 | 华为技术有限公司 | 虚焦检测方法、设备及计算机可读介质 |
KR20200145752A (ko) * | 2019-06-19 | 2020-12-30 | 한국전자통신연구원 | 비디오 영상 부/복호화를 위한 가상 경계 시그널링 방법 및 장치 |
US11222120B2 (en) * | 2019-11-19 | 2022-01-11 | Dell Products L.P. | Storage device firmware bootloader recovery system and method therefor |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006009322A2 (en) * | 2004-07-23 | 2006-01-26 | Kabushiki Kaisha Toshiba | Memory card, nonvolatile semiconductor memory, and method of controlling semiconductor memory |
CN101271429A (zh) * | 2007-03-23 | 2008-09-24 | 华为技术有限公司 | 一种数据存储方法及装置 |
CN101876945A (zh) * | 2009-11-24 | 2010-11-03 | 西安奇维测控科技有限公司 | 针对逻辑地址不同数据自动配置虚拟块的方法 |
CN101930345A (zh) * | 2010-08-24 | 2010-12-29 | 苏州国芯科技有限公司 | 一种基于块访问的闪存读写方法 |
US20120030691A1 (en) * | 2010-07-27 | 2012-02-02 | Qualcomm Innovation Center, Inc. | Method and Apparatus for Supporting Diverse Memory Access Schemes |
CN102446137A (zh) * | 2010-10-08 | 2012-05-09 | 群联电子股份有限公司 | 数据写入方法、存储器控制器与存储器储存装置 |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4611272A (en) | 1983-02-03 | 1986-09-09 | International Business Machines Corporation | Key-accessed file organization |
JP3615299B2 (ja) * | 1996-03-29 | 2005-02-02 | 三洋電機株式会社 | 書換え可能romの記憶方法及び記憶装置 |
US8296467B2 (en) | 2000-01-06 | 2012-10-23 | Super Talent Electronics Inc. | Single-chip flash device with boot code transfer capability |
US7136982B2 (en) * | 2001-11-09 | 2006-11-14 | Danger, Inc. | Apparatus and method for allocating memory blocks |
JP4062429B2 (ja) * | 2002-08-30 | 2008-03-19 | セイコーエプソン株式会社 | メモリ書き換え制御方法及びメモリ書き換え制御方法の各工程を実行させるプログラム |
JP4129381B2 (ja) * | 2002-09-25 | 2008-08-06 | 株式会社ルネサステクノロジ | 不揮発性半導体記憶装置 |
JP4177292B2 (ja) * | 2004-05-31 | 2008-11-05 | Tdk株式会社 | メモリンコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 |
KR100622349B1 (ko) | 2004-08-04 | 2006-09-14 | 삼성전자주식회사 | 불량 블록 관리 기능을 가지는 플레시 메모리 장치 및플레시 메모리 장치의 불량 블록 관리 방법. |
KR20060014320A (ko) | 2004-08-10 | 2006-02-15 | 삼성전자주식회사 | 다중 부트 로더 코드를 갖는 nand 플래시 메모리를이용한 부트 처리 장치 및 방법 |
US7313648B2 (en) * | 2004-09-30 | 2007-12-25 | Rockwell Automation Technologies, Inc. | Corruption tolerant method and system for deploying and modifying data in flash memory |
US7454673B2 (en) | 2005-07-15 | 2008-11-18 | Kyocera Wireless Corp. | Apparatus, system, and method for accessing persistent files in non-execute-in-place flash memory |
US20070050675A1 (en) | 2005-08-29 | 2007-03-01 | Moxa Technologies Co., Ltd. | [method for restoring a booted system] |
JP2007299249A (ja) * | 2006-05-01 | 2007-11-15 | Hagiwara Sys-Com:Kk | Nand型フラッシュメモリデバイス及びこれを利用したコンピューティングシステムの起動方法 |
WO2008026466A1 (fr) * | 2006-08-31 | 2008-03-06 | Sharp Kabushiki Kaisha | Système de fichiers |
US7900032B2 (en) | 2006-10-06 | 2011-03-01 | Broadcom Corporation | Method and system for NAND flash support in autonomously loaded secure reprogrammable system |
US7721040B2 (en) * | 2007-01-18 | 2010-05-18 | Sandisk Il Ltd. | Method and system for facilitating fast wake-up of a flash memory system |
US8332574B2 (en) | 2007-04-30 | 2012-12-11 | Sandisk Il Ltd. | Method for efficient storage of metadata in flash memory |
US7953965B2 (en) | 2007-06-15 | 2011-05-31 | Black & Decker Inc. | One wire boot loader |
US8082384B2 (en) | 2008-03-26 | 2011-12-20 | Microsoft Corporation | Booting an electronic device using flash memory and a limited function memory controller |
US8327066B2 (en) | 2008-09-30 | 2012-12-04 | Samsung Electronics Co., Ltd. | Method of managing a solid state drive, associated systems and implementations |
US8555050B2 (en) * | 2010-07-15 | 2013-10-08 | Broadcom Corporation | Apparatus and method thereof for reliable booting from NAND flash memory |
JP2012173778A (ja) * | 2011-02-17 | 2012-09-10 | Sony Corp | 管理装置、および管理方法 |
US9026887B2 (en) * | 2012-03-15 | 2015-05-05 | Micron Technology, Inc. | Physical page, logical page, and codeword correspondence |
US20140173187A1 (en) | 2012-12-19 | 2014-06-19 | Qualcomm Incorporated | Virtual boundary codes in a data image of a read-write memory device |
-
2012
- 2012-12-19 US US13/720,532 patent/US9442840B2/en active Active
-
2013
- 2013-11-07 KR KR1020157019521A patent/KR20150096782A/ko not_active Application Discontinuation
- 2013-11-07 WO PCT/US2013/068939 patent/WO2014099169A1/en active Application Filing
- 2013-11-07 CN CN201380066018.5A patent/CN104885052B/zh not_active Expired - Fee Related
- 2013-11-07 EP EP13803317.0A patent/EP2936295A1/en not_active Ceased
- 2013-11-07 JP JP2015549390A patent/JP6157637B2/ja not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006009322A2 (en) * | 2004-07-23 | 2006-01-26 | Kabushiki Kaisha Toshiba | Memory card, nonvolatile semiconductor memory, and method of controlling semiconductor memory |
CN101271429A (zh) * | 2007-03-23 | 2008-09-24 | 华为技术有限公司 | 一种数据存储方法及装置 |
CN101876945A (zh) * | 2009-11-24 | 2010-11-03 | 西安奇维测控科技有限公司 | 针对逻辑地址不同数据自动配置虚拟块的方法 |
US20120030691A1 (en) * | 2010-07-27 | 2012-02-02 | Qualcomm Innovation Center, Inc. | Method and Apparatus for Supporting Diverse Memory Access Schemes |
CN101930345A (zh) * | 2010-08-24 | 2010-12-29 | 苏州国芯科技有限公司 | 一种基于块访问的闪存读写方法 |
CN102446137A (zh) * | 2010-10-08 | 2012-05-09 | 群联电子股份有限公司 | 数据写入方法、存储器控制器与存储器储存装置 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107025144A (zh) * | 2015-10-21 | 2017-08-08 | 罗伯特·博世有限公司 | 用于写入以及读取数据集的方法 |
CN107025144B (zh) * | 2015-10-21 | 2022-04-05 | 罗伯特·博世有限公司 | 用于写入以及读取数据集的方法 |
CN109992197A (zh) * | 2017-12-29 | 2019-07-09 | 苏州迈瑞微电子有限公司 | 一种数据读写方法、装置、电子设备和存储介质 |
CN112437924A (zh) * | 2018-05-11 | 2021-03-02 | 美国莱迪思半导体公司 | 用于可编程逻辑器件的安全引导系统和方法 |
CN113287316A (zh) * | 2018-10-23 | 2021-08-20 | 联发科技股份有限公司 | 减少环路滤波缓冲器的方法及装置 |
CN113287316B (zh) * | 2018-10-23 | 2023-07-21 | 寰发股份有限公司 | 减少环路滤波缓冲器的方法及装置 |
US11743458B2 (en) | 2018-10-23 | 2023-08-29 | Hfi Innovation Inc. | Method and apparatus for reduction of in-loop filter buffer |
Also Published As
Publication number | Publication date |
---|---|
EP2936295A1 (en) | 2015-10-28 |
KR20150096782A (ko) | 2015-08-25 |
US20140173179A1 (en) | 2014-06-19 |
JP6157637B2 (ja) | 2017-07-05 |
WO2014099169A1 (en) | 2014-06-26 |
US9442840B2 (en) | 2016-09-13 |
JP2016501417A (ja) | 2016-01-18 |
CN104885052B (zh) | 2017-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104885052A (zh) | 读写存储设备的数据映像中的虚拟边界码 | |
US9256744B2 (en) | System-on-chip and booting method thereof | |
US7774382B2 (en) | Method and apparatus for configuring a control device, and corresponding control device | |
US10403369B2 (en) | Memory system with file level secure erase and operating method thereof | |
US9158476B2 (en) | Method for switching operation mode, memory controller and memory storage apparatus | |
US7471535B2 (en) | Programable identification circuitry | |
US10083114B2 (en) | Data storage device and operating method thereof | |
US11243759B2 (en) | Data storage device, operation method thereof, and firmware providing server therefor | |
US8645624B2 (en) | Portable electronic device, smartcard and control method for portable electronic device | |
US20130091322A1 (en) | Electronic System and Memory Managing Method Thereof | |
US20140173187A1 (en) | Virtual boundary codes in a data image of a read-write memory device | |
US8819664B2 (en) | Upgrade firmware with upgrade information from a tape cartridge in a wireless manner | |
US10606520B2 (en) | Methods and apparatus to read from a nonvolatile memory device | |
US20090077445A1 (en) | Nonvolatile storage device, controller of nonvolatile memory, and nonvolatile storage system | |
US8312205B2 (en) | Method for identifying a page of a block of flash memory, and associated memory device | |
US7346730B2 (en) | Mobile electronic device | |
CN110119247A (zh) | 非易失性存储器 | |
JP5786702B2 (ja) | セキュリティトークン、セキュリティトークンにおける命令の実行方法及びコンピュータプログラム | |
US12014074B2 (en) | System and method for storing dump data | |
JP4656063B2 (ja) | メモリカードの特定方法 | |
US20080005449A1 (en) | Generalized flash memory and method thereof | |
JP2015187896A (ja) | セキュリティトークン、セキュリティトークンにおける命令の実行方法、及びコンピュータプログラム | |
JP2016076153A (ja) | 携帯可能電子装置および方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20171205 Termination date: 20181107 |