CN108701080A - 使用参考值确保存储设备动作有效 - Google Patents

使用参考值确保存储设备动作有效 Download PDF

Info

Publication number
CN108701080A
CN108701080A CN201680075470.1A CN201680075470A CN108701080A CN 108701080 A CN108701080 A CN 108701080A CN 201680075470 A CN201680075470 A CN 201680075470A CN 108701080 A CN108701080 A CN 108701080A
Authority
CN
China
Prior art keywords
value
memory
storage device
reference value
currentelement
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
Application number
CN201680075470.1A
Other languages
English (en)
Other versions
CN108701080B (zh
Inventor
K·J·米利
J·伊沃南
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jiangbolong Electronics Hong Kong Co ltd
Original Assignee
Memory Technologies LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Memory Technologies LLC filed Critical Memory Technologies LLC
Publication of CN108701080A publication Critical patent/CN108701080A/zh
Application granted granted Critical
Publication of CN108701080B publication Critical patent/CN108701080B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1433Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a module or a part of a module
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/80Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in storage media based on magnetic or optical technology, e.g. disks with sectors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement

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)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Abstract

本文描述了多项技术,用于确保与储存值的存储设备的元素相关的动作(例如由主机设备等读取或写入)在与参考值进行比较时有效。所述参考值与内存的实际特征相关联。存储所述值的元素可以存储在内存的一个区域中,该区域被配置用于存储元数据。存储设备制造完成后,所述元素可以进行重新编程,因此,存储在所述元素中的值可以由主机设备修改,使其错误或不准确地反应所述内存的特征。相反,所述参考值存储在内存的一个单独区域中,且该参考值是真值。

Description

使用参考值确保存储设备动作有效
相关申请案的交叉引用
本专利申请主张对2016年12月19日提交的序列号为15/383,631的美国实用新型专利申请的优先权,该专利申请主张于2015年12月21日提交的编号为62/270,493的美国临时专利申请的优先权。申请序列号15/383,631和62/270,493通过引用全部结合在本文中。
背景技术
存储设备(例如存储模块),如托管NAND存储模块与不同类型的“主机”设备结合使用,包括移动电话设备(例如智能手机)、平板设备、全球定位系统(GPS)设备、电子书设备、媒体播放设备等。存储设备的例子包括安全数字(SD)卡、嵌入式多媒体卡(eMMC)、通用闪存(UFS)、固态硬盘(SSD)模块等。存储设备存储由偶联到存储设备的主机设备使用的数据,包括操作系统代码、应用程序和用户数据(例如照片数据、视频数据等)。此外,存储设备还存储由主机设备或存储设备自身使用的其他类型的数据,包括元数据和配置数据。
随着主机设备功能的增加,以及用户创建更多的用户数据(例如已下载的应用程序、图像、消息等),存储设备需要存储更多的数据。因此,准确地反映存储设备的存储容量和其他特征对主机设备用户以及存储设备自身(例如为实现最佳性能)就显得尤为重要。例如,用户可能需要一个能存储64GB的存储设备(例如用于用户移动电话的64GB的SDXC卡)来代替一个存储16GB的存储设备(例如16GB的SDHC卡)。
最近,伪造者一直在修改存储在存储设备中的信息,使得当从存储设备访问和读取这些信息时,内存容量无法准确地反映出来。此外,其他存储在存储设备中的信息可能与存储设备的实际特征不匹配,从而阻碍存储设备以最佳的方式运行。例如,一个16GB存储设备的分区信息可能被修改,使得其对主机错误地显示为一个64GB的存储设备。因此,此分区信息可能是不正确或不准确的、修改后的信息。也就是说,存储设备实际上可能是一张由伪造者修改过的卡,看上去存储密度较高(例如一张64GB的SDXC卡),而实际密度更低(例如,一张16GB的SDHC卡)。在另一个例子中,分区的实际数据区的初始位置可能不在适当的块边界内。
在某些情况下,客户可能支付了价格来购买看上去能够存储较大数据量(例如64GB)的存储设备,而该存储设备实际上只能存储较小的数据量(例如16GB)。基于不准确和错误的信息,客户最终对存储设备的性能感到失望。例如,客户可能意识到存储设备无法将数据写入超过存储设备实际密度的地址。或者,客户可能意识到当数据写入超过存储设备实际密度的地址时,该存储设备会被损坏。
附图说明
图1所示为一种环境示例,在该环境中,通过使用参考值对存储设备进行了配置,以确保与存储值的元素相关联的动作有效。元素存储的值可以表示与至少一个存储分区相关的特征(例如容量)。
图2所示为另一个存储设备示例的额外细节,其中参考值存储在内存的一个区域中,而与动作相关联的值存储在内存的另一个区域中,该区域很容易在该存储设备制造完成后被重新编程。
图3所示为一个流程示例,该流程监视与存储值的元素相关联的动作的发生,并确保(i)该动作有效或(ii)存储在该元素中的值有效。该示例流程可以通过存储设备来实施。
图4所示为一个流程示例,该流程对参考值或派生参考值进行了评估,以确保与存储值的元素相关联的写入动作有效,或确保存储在所述元素中的值有效。该示例流程可以通过存储设备来实施。
图5所示为一个流程示例,该流程对参考值或派生参考值进行了评估,以确保与存储值的元素相关联的读取动作有效,或确保存储在所述元素中的值有效。该示例流程可以通过存储设备来实施。
图6所示为主机设备和存储设备之间进行的交互示例,这些交互确保(i)主机设备的写入动作有效或(ii)已存储在元素中的当前值有效。
图7所示为示例存储设备(例如SD卡),本文描述的技术可以在该存储设备中执行。图7所示为一个单个物理分区,该分区实施主引导记录(MBR)分区和文件分配表(FAT)文件系统。
图8所示为存储设备示例,本文描述的技术可以在该存储设备中实施。图8所示为单个物理分区,该分区实施GUID分区表(GPT)分区和FAT文件系统。
图9所示为存储设备示例(例如eMMC),本文描述的技术可以在该存储设备中实施。图9所示为可以单独实施MBR分区和FAT文件系统的多个物理分区和多个主分区。
该图仅出于说明的目的,对本发明的实施例和/或示例进行了描述。该领域的技术人员根据以下讨论将很容易意识到,在不背离本文描述的原则的情况下,可以采用本文所示的结构和方法的替代实施方式和/或替代示例。
具体实施方式
以下说明的呈现是为了使该领域的普通技术人员能够进行并使用各种实施方式。提供了特定设备、技术和申请案的描述作为示例。在不背离各种实施范围的情况下,对本文描述的示例进行各种修改对于该领域的技术人员可能是显而易见的,
本文定义的一般原则可能适用于其他示例。因此,各种实施方式不限于本文描述的示例,而是被赋予符合权利要求的范围。
本公开描述了多项技术,用于确保与存储值的存储设备的元素相关的动作(例如由主机设备等读取或写入)在与参考值(例如导致一个有效结果)进行比较时有效。该参考值与存储设备的实际特征相关联(例如,内存容量的大小或数量,主分区容量的大小或数量等)。在至少一个实施方式中,存储所述值的元素被存储在用于存储元数据(例如分区元数据、与存储设备的系统结构相关的数据)的内存的一个区域中。包含该元素的这个区域对主机设备可见,因此,该元素可以在存储设备制造完成之后被读取和重新编程。因此,存储在元素中的值可以由主机设备修改(例如由伪造者控制),使其错误或不准确地反映所述存储设备的实际特征。
相反,参考值存储在内存的一个区域中(例如与寄存器、描述符、属性、标记等相关联),该内存包含的设置可以被读取,但是(i)无法在存储设备制造之后进行重新编程(例如,该设置为一次性可编程设置),(ii)只能在存储设备而不是主机设备的控制下(例如,由存储设备发起并控制的动态容量调整)重新编程或改变,或(iii)如果需要修改存储在主机设备中的参考值时,需要认证主机设备。包含该参考值的存储设备的这个区域对主机设备可能可见或不可见。在不同示例中,参考值只能由存储设备的制造商在制造阶段进行编程,因此,该参考值无法在该存储设备制造后由主机设备修改。因此,参考值是正确并准确地反映存储设备实际特征的真值。
在不同的示例中,如果要写入元素的值(例如主机设备写入)、最终写入元素的值(例如由内存控制器写入),或者保持存储在所述元素中的值在与参考值进行比较时有效,则与存储值的元素有关的“写入”动作有效。在不同的示例中,如果从元素读取的值与参考值进行比较时有效,或如果有效值根据参考值正在输出到主机设备,则与存储值的元素有关的“读取”动作有效。
在其中一个实施方式中,参考值可能与存储设备的内存容量有关。例如,由一组CSD寄存器组成的安全数据(SD)卡可以包含特定的C_SIZE寄存器,该寄存器存储反映或可用于派生出SD卡的实际内存容量(例如,在SD卡的单个物理分区范围内的主引导记录(MBR)主分区的大小)的参考值。因此,SD卡可以使用存储在C_SIZE寄存器中的参考值,以确保由主机设备写入到C_SIZE寄存器之外的SD卡区域中(例如,本文进一步讨论的可以位于分区元数据区域中的“元素”)的容量值是有效的(例如,通过比较写入值与存储在C_SIZE寄存器中的参考值)。SD卡还可以使用存储在C_SIZE寄存器中的参考值来派生出(例如计算)一个派生值,并确保由主机设备从SD卡(而不是C_SIZE寄存器)读取的容量值有效。例如,派生参考值可以是存储在C_SIZE寄存器中的参考值(例如,SD卡单个物理分区的大小)减去分区元数据区域的大小。在这种情况下,关于内存容量,不论是写入值还是读取值,如果小于或等于参考值或派生参考值,则该内存容量以及与其相关联的动作有效,但是如果超过参考值或派生参考值,则无效。
因此,本文讨论的技术在以下值之间建立了联系:(i)存储在内存的其中一个区域中的参考值,该区域无法被重新编程,只能在处于存储设备的控制中被重新编程或改变,或进行重新编程时需要认证,与(ii)当前存储在内存另一个区域中的相对值,该区域可以被重新编程(例如,无需认证)。这些技术使用已建立的联系来确保与相对值有关的动作(例如,由主机设备读取或写入)有效。
图1所示为示例环境100,可以在该环境中实施本公开案。例如,在示例环境100中,对存储设备102进行了配置,以确保与存储值的元素相关联的动作与参考值比较时有效。该动作可以通过或依照主机设备104来执行。例如,该动作可以与主机设备104执行的读取或写入有关。
主机设备104可以包括智能手机设备、可穿戴设备(例如手表、一副眼镜、心率监测设备等)、笔记本电脑、平板设备、图像采集设备(例如相机、录像设备等)、上网本设备、游戏控制台设备、个人计算设备(例如台式电脑)、服务器设备、机顶盒设备、家庭设备(例如电器设备、恒温器装置、车库门装置等),或可能需要通过连接或偶联到主机设备的存储设备进行存储的任何其他电子设备。在一些示例中,主机设备104可以包括一个显示器(例如触摸屏),将显示器连接到处理器的总线,和/或处理显示器上的图形和文本显示的图形子系统。主机设备104还可以包含以下一个或多个:主机系统内存,例如动态随机存取存储器(DRAM)、传感器(例如加速计、陀螺仪、GPS等)、输入/输出组件(I/O)(例如扬声器、麦克风或键盘),和通信接口(例如蜂窝、USB、Wi-Fi、蓝牙或其他有线或无线接口)。
在不同的实施方式中,存储设备102可以被包含在封装中,例如,被设计成安装在印刷电路板上的球栅阵列(BGA)。例如,存储设备102可以是一个嵌入式多媒体卡(eMMC)或一个通用闪存(UFS)模块。或者,存储设备102可以被包含在一个可移除的卡内(例如SD卡),这个可移除的卡可以安装在主机设备104上的插槽内,在诸如固态设备(SSD)模块的半可移除的设备内,或在PC/服务器卡/模块(例如外围设备互联(PCIe)卡内)。此外,存储设备102可以是一个独立装置或可以作为互联设备集合来实施。
存储设备102包括控制器106(例如内存控制器)。控制器106被配置为根据读取和/或写入请求,在存储设备102(例如,通常被称为大容量存储器、非易失性存储器或大容量内存)的内存(例如存储器)和主机设备104之间进行数据通信。在各种实施方式中,控制器106可以包括用于控制控制器106的操作的控制电路、用于存储操作信息和/或用于在存储设备102内提供临时存储的随机存取存储器(RAM)、用于生成内部时钟信号的时钟生成电路、用于接收来自主机设备104(例如,主机设备的主机控制器或其他处理单元)的数据和/或命令的接收器电路,和/或用于将数据和/或状态信息传输到主机设备104(例如主机控制器)的发射电路。此外,控制器106可以通过至少一根总线连接到存储设备102的内存,使得控制器106与内存通信,例如从内存读取数据和向内存写入数据。在各种示例中,存储可以使用非易失性存储器来实现,例如具有存储电路和存储单元(例如NAND单元)的NAND闪存,每个存储单元能够存储一位(单级单元)或多位(多级单元)数据。在不背离本公开案的情况下,也可以使用其他形式的非易失性存储器。例如,非易失性存储器可以包括相变内存(PCM)、磁阻随机存取存储器(MRAM)、电阻式随机存取存储器(RRAM)、铁电随机存取存储器(FRAM)等。
存储设备102的内存可以包括对主机设备104可见的地址空间。可见地址空间可以被视为物理地址空间(例如,主机可以访问非易失性存储器的物理地址,如NAND闪存),或者可以将其视为逻辑地址空间(例如,托管NAND存储设备的闪存管理功能通过使用逻辑到物理的映射表,将从主机接收的地址转换为非易失性存储器的物理地址)。例如,地址空间可以包括一个或多个内存段。在一些示例中,内存段可以包括MBR主分区、GUID分区表(GPT)分区、物理分区(例如,eMMC标准中定义的通用分区)、或逻辑单元(LU)(例如,如UFS标准所述定义)。如上所述,存储设备102的内存(存储器)可以分成多个区域,其中区域可以是:(i)内存单个段内的指定区(例如MBR主分区、GPT分区、物理分区或LU的部分),(ii)内存的一部分(例如,区域包括MBR主分区、GPT分区、物理分区或LU),或(iii)一个或多个寄存器、描述符、属性、标记等。例如,第一区域和第二区域,如本文关于图1的进一步讨论,可以是内存单个段的一部分(例如,只有一个物理分区的SD卡包含用于主引导记录的第一区域以及包含MBR主分区的第二区域)。或者,第一区域和第二区域可以各自包括内存的单独段(例如,元数据存储在第一分区中,用户数据存储在第二分区中)。
相应地,图1所示为用于存储元数据110的内存的第一区域108。元数据110包括与主机设备104如何在存储设备102中布置数据有关的数据。因此,元数据110可以由存储设备102的控制器106(例如,根据由主机设备104发起的读取或写入)在内部使用(例如评估)。在各种实施方式中,元数据110可以包括存储设备102的分区信息,例如主引导记录(MBR)、GUID分区表(GPT)或卷引导记录(VBR)。MBR包含有关如何在存储设备102的内存上组织(例如定位)MBR主分区的信息。MBR还可以包含可执行代码,用于作为安装在主机设备104上的操作系统的加载程序。GPT包含使用全局唯一识别码(GUID)的分区表的布局标准。VBR包含存储在所述存储设备其他部分的引导程序(例如,操作系统)代码(例如本文关于图1所讨论的内存的第二区域)。
存储在内存108第一区域中的元数据110可以包含一个或多个元素112,其中单个元素112被指定来存储该存储设备102的特征114的指示值。特征114可以与内存的一个段或存储区的一个区域相关联。可以为单个元素112分配特定地址,使得在发生与读取或写入有关的请求时能被主机设备104识别。在一个示例中,单个元素112可以包括一个字段(例如一个四字节的字段),该字段可以被主机设备104通过一个已知地址访问,并且该字段表示:所述存储设备中内存的一个段或一个区域的第一地址、所述存储设备中内存的一个段或一个区域的最后一个地址、所述存储设备中内存的一个段或一个区域的大小(或长度)。如上所述,存储在元素112中的特征114的指示值可以被重新编程,因此,元素112很容易被伪造者修改,这些伪造者想让存储设备102错误或不准确地反映其特征和/或能力(例如,内存容量)。例如,特征114的错误值或不准确值的反映可以与主机设备的动作关联,例如读取请求或写入请求。
例如,内存的第二区域116可存储用户数据118。如上所述,内存的第二区域116可以包括用于存储用户数据118的内存的一个或多个段,该用户数据118包括已下载的应用程序、图像(例如图片、照片、视频等)、音乐、传感器数据等,内存的第二区域116也可以作为该内存的一个或多个段的一部分。在不同的实施方式中,内存的第二区域116还可以存储与诸如操作系统等有关的主机数据。在一些示例中,(例如SD卡),内存的第二区域116可以存储文件系统结构,例如分区引导扇区、文件分配表(FAT)和/或根目录。如图1中的虚线所示,且本文进一步讨论所述,特征114的指示值可以对应于内存的第二区域116的特征。
内存的第三区域120保持设置122,其中单个设置122存储与存储设备102的实际特征有关的参考值124。如上所述,存储在单个设置122中的参考值是正确且准确的值(例如,真实或最佳),因为存储设备102的制造商在制造阶段对内存的第三区域120进行了编程。在不同的实施方式中,内存的第三区域120中的设置122可以被保护,从而禁止主机设备104随后对存储在其中的参考值进行重新编程。因此,内存的第三区域120可以包含设置,这些设置用于存储在存储设备102被制造和部署后无法由主机设备104进行修改的值。在替代实施方式中,内存的第三区域120中的设置122可以受到保护,使得只有在主机设备104被认证的情况下(例如,主机设备被授权修改存储在设置122中的参考值),可以随后对存储在其中的参考值进行重新编程。在另一个替代实施方式中,参考值可以在受到存储设备控制的情况下被重新编程(例如,与主机设备相互握手)。
因此,内存的第三区域120可以包括存储有关存储设备102功能的实际信息的一组硬件寄存器、描述符、属性或标记(例如SD卡中的CSD寄存器)。由参考值表示的实际特征124可以与以下一个或多个项目关联:存储设备的总容量、内存的一个区域的容量(例如,内存的第二区域116)、内存的第一区域108与内存的第二区域116的组合容量、内存的单个段的容量(例如主分区、物理分区等)、内存单个段或单个区域的起始地址、内存单个段和/或单个区域的起始地址的对齐(例如,有利的地址边界)、内存一个段的分配单元、存储设备的最大和/或默认延迟、存储设备的电流消耗值等。本文描述的技术确保了由实际特征124表示的信息不失真,从而防止存储设备传送处于实际操作边界之外的错误信息(例如,防止传送使存储设备表现出与实际不符的被重新编程后的信息)。这些技术还可以确保存储设备102实现更优化(例如,更高的性能、更长的寿命等)的运行。
因此,本文讨论的技术在内存的第一区域108的元素112与内存的第三区域120的设置122之间建立了联系(例如,存储在元素中的相对值与存储在设置中的参考值之间的联系)。如126所引用,存储设备102的控制器106可以评估(例如评估、读取等)与存储在内存的第三区域120的设置122中的实际特征124相关联的参考值,以确保与存储相同特征114的相对指示值的元素112有关的动作有效,或确保留在该元素中的值有效。存储设备102的控制器106也可以和/或从存储在设置122中的参考值中派生出一个派生参考值。如128所引用,该动作可以由主机设备104发起,例如读取或写入请求。如130所引用,如果从内存的第一区域108的元素112中读取或写入元素112的值不正确或不准确,则该动作可能无效。例如,如果一张SD卡的实际内存容量为16GB,而某个动作读取或写入的值显示该SD卡的主分区的容量为(接近)64GB,则该动作无效。因此,本文描述的技术对参考值或派生参考值进行了评估,以确保从元素112读取或向元素112写入正确或准确的值,如132所引用。在这种情况下,该动作被视为有效。
在不同的实施方式中,从元素112读取或向元素112写入的值不一定为了正确以及为了使该动作有效而必须与参考值或派生参考值匹配。例如,主机设备104可以执行一个有效的动作,向元素112中写入一个小于存储在设置122中对应容量的容量(例如,主分区容量、物理分区容量)值(例如,当参考值或派生参考值显示容量为16GB或接近16GB时,主机设备104对值进行编程以显示12GB的主分区容量)。但是,主机设备104将执行一个无效动作,向元素112中写入一个大于存储在设置122中对应容量的主分区容量(例如,当参考值显示容量为(接近)16GB时,主机设备104对值进行编程以显示64GB或接近64GB的主分区容量)。
在不同的实施方式中,并且由于存储在设置122中的信息格式与存储在元素112中的信息格式不同,控制器106可以在不同格式之间进行转换。例如,控制器106可以根据评估将参考值或派生参考值从第一个格式转换到第二格式。在一个示例中,SD卡的内存容量(以字节为单位)由以下公式计算得出:
(C_SIZE+1)*512*1024。
当存储在元素112中的MBR信息包括主分区的起始地址和大小时,该大小可以表示为512字节扇区的数量。因此,可以进行以下转换以进行比较,如果以下关系成立,则访问有效:
(C_SIZE+1)*512*1024≥(MBR偏移的4字节值+1BEh+0Ch)*扇区大小(例如512B)
在至少一个实施方式中,主分区的文件系统区(例如FAT)可以是内存的第一区域108的一部分,并且文件系统区可以包含与主分区的实际数据区的实际特征相关的元素112,其中实际数据区包括内存的第二区域116,或实际数据区是内存的第二区域116的一部分。
图2所示为存储设备102的额外细节,其中参考值存储在内存的其中一个区域(例如内存的第三区域120),而存储对主机设备104可见的(例如可访问)值的元素112存储在可以被重新编程的内存的不同区域中(例如内存的第一区域108)。在替代实施方式中,内存的第三区域120可以位于:存储设备102的闪存中(例如NAND),控制器106的嵌入式非易失性存储器中(例如MRAM、闪存等),控制器106的ROM中,嵌入到或连接到控制器106的RAM中(例如SRAM或DRAM),或位于任意这些组合中(例如,永久存储在闪存,但被高速缓存在RAM中)。
如图2,内存的第一区域108和内存的第二区域116可能与一个或多个内存段202(1)…202(N)(其中N为整数)相关联。如上所述,内存段202(1)…202(N)可以包括一个主分区、一个物理分区或一个逻辑单元(LU)。在不同的示例中,一个内存段202(1)…202(N)可以划分为块,块可以进一步划分为页面。相应地,存储设备102的内存可以包括多个寻址存储器位置。一个可寻址存储器位置可以包括并识别一个内存段202(1)…202(N)的至少一部分,例如存储块、存储页面、扇区、存储字节等。地址可以是逻辑地址,也可以是物理地址。
图2进一步说明了由存储在图1的设置122中的参考值表示的实际特征124的示例。如上所述,为了保护参考值的完整性,使其正确且准确反映存储设备的操作参数和/或边界,设置122可以是一次性可编程设置,使其在存储设备制造商对参考值进行初始编程后无法被重新编程。或者,设置122的编程可以与认证相关联,以确保仅在合适的情形下对存储在其中的参考值进行修改。甚至,对设置122的编程可以在存储设备的控制下进行,但不在主机设备的控制下实现(例如,由存储设备发起和控制的与存储设备和主机设备之间的握手相关联的动态容量调整)。在一些情况下,可以对设置122进行配置,使其禁止对在存储设备的已知操作边界之外的参考值进行修改。例如,存储表示内存容量的参考值的设置可以允许减小参考值来分配额外的保留内存,但是该设置可能禁止增加该参考值。此处,内存容量的减小仍然在存储设备的操作边界范围内,但是内存容量的增加有可能会导致参考值超出操作边界,因此将不允许增加(以防止伪造行为)。
在一个示例中,实际特征可以表示存储设备102中内存的总容量204。在一个实施方式中,总容量204可以反映内存的第一区域108和内存的第二区域116的组合。在一些情况下,总容量204表示存储设备的有效密度(例如,一张64GB的SD卡可具有62GB的有效密度,16GB的SD卡可具有15GB的有效密度等)。由于保留内存(例如,用于响应故障块而被调用的替换块)、内存控制器固件的存储、寄存器空间的存储等的创建和管理,设备的有效密度可能小于内存的整体总量。在一些实施方式中,总容量204是一个动态的可配置设置,在该设置中,可以对参考值进行修改以响应主机设备104与存储设备102之间的握手。因此,如果之前的保留内存块被调用来响应故障或错误,则可以减小总容量204来分配新的保留内存。在eMMC中,可以对控制器106进行配置以执行“动态容量”功能,使主机设备动态地减小存储设备提供的密度(例如,存储设备从内存的第二区域释放内存块)。
在另一个示例中,实际特征可以表示内存的单个段206的容量(例如,主分区、物理分区),也可以表示内存的单个区域的容量(例如,一个或多个段,一个段的一部分等)。因此,内存的每个段可以与一个或多个单独设置以及一个或多个存储相应值的元素相关联。
在另一个示例中,实际特征可以表示内存的单独段或单独区域208的起始地址。
在进一步的示例中,实际特征可以表示内存的单独段和/或单独区域210的起始地址的对齐情况。与内存页大小和/或内存块大小对齐可以提高存储设备的性能,并延长存储设备的寿命。
在又一个示例中,实际特征可以表示内存单个段212的分配单元的大小。将主机文件系统所使用的集群大小与存储设备所使用的分配单元对齐,可以提高存储设备的性能。
本文所描述的流程示例在图3-5中所示为逻辑流程图,表示可以在硬件、软件或其组合中执行的一系列操作。这些操作可以表示可执行的指令,当这些指令由一个或多个处理器执行时,则执行所述操作。可执行指令可以包括执行特定功能的例程、程序、对象、组件、模块、数据结构等。图3-5描述的操作顺序并不代表解释为限制,并且所描述的操作的任何数字可以以任何顺序组合和/或并行来实施该流程。可执行指令可以存储在非暂时性计算机存储介质上,包括易失性和非易失性、可移除和不可移除的介质上,所述介质以信息存储的任何方式或技术来实施,例如计算机可读指令、数据结构、程序模块或其他数据。计算机存储介质包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、闪存或其他存储技术、磁存储设备,或可以用于存储被主机设备或存储设备访问的信息的任何其他非传输介质。
图3所示为一个示例流程300,该流程监视与存储值的元素相关联的动作的发生,并确保该动作有效。示例流程300可以通过图1和/或图2的上下文中的存储设备102(例如,存储设备102的控制器106)来实施。
在302处,存储设备监视与一个元素(或多个元素)相关联的动作的发生,所述元素单独存储与存储设备、存储设备的内存或存储设备的操作有关的特征的指示值。如上所述,该动作可以是来自主机设备的读取请求,也可以是来自主机设备的写入请求。在不同的实施方式中,存储该值的元素被存储在内存的一个区域中(例如图1和2中内存108的第一区域),该内存用于存储元数据110(例如,分区元数据、与存储设备的系统结构有关的数据等)。该元素可以与对主机设备可见的已知地址相关联。因此,当前存储在元素中的值可以由该主机设备修改(例如由伪造者控制),使其不正确或不准确地反映存储设备的实际特征。
在304处,存储设备确定与元素相关联的动作在与和实际特征相关联的参考值比较时是否有效。在不同的实施方式中,参考值存储在位于内存的一个区域中(例如图1和2中的内存120的第三区域)的设置中,该区域与元素所位于的内存区域分开。位于该内存区域中的设置可以包括寄存器、描述符、属性、标记等。在此内存区域中,参考值可以被读取,但是该参考值(i)在存储设备制造完成后无法被重新编程(例如,设置为一次性可编程),(ii)只能在处于存储设备的控制下且不处于主机设备的控制下被重新编程或改变(例如,有存储设备发起并控制的动态容量调整),或(iii)如果需要修改参考值,可要求认证主机设备。因此,参考值是正确并准确地反映存储设备实际特征的真值。
在不同的示例中,如果要写入元素的值(例如主机设备写入)、最终写入元素的值(例如由内存控制器写入),或者保持存储在元素中的值在与参考值进行比较时有效(小于参考值),则与储存值的元素有关的动作有效。在不同的示例中,如果从元素读取的值与参考值进行比较时有效,或如果有效值根据参考值正在输出到主机设备,则与储存值的元素有关的动作有效。
在306处,如果与所述元素有关的动作被确定为无效,则存储设备执行校正动作。例如,校正动作可以(i)防止当前存储在元素中的值被从元素中读取,或(ii)如果从主机设备接收的已更新值为无效值,则防止该更新值被写入所述元素中(例如,更新值表示的容量超过由参考值表示的容量)。否则,(如果与所述元素有关的动作被确定有效),该存储设备完成该动作。例如,存储设备将存储在元素中的当前值返回,以响应读取请求,或者存储设备向元素中写入已更新值以响应写入请求(例如,已写入的更新值代替存储在元素中的当前值)。
图4所示为一个示例流程400,该流程对参考值或派生参考值进行了评估,以确保与存储值的元素相关联的写入动作有效。示例流程400可以通过图1和/或图2的上下文中的存储设备102(例如,存储设备102的控制器106)来实施。
在402处,存储设备确定将更新的元素值写入存储当前元素值的元素中的请求的发生。例如,该请求可能由主机设备发起,尝试向内存108第一区域的元数据110中写入指示存储设备容量的新值。
在404处,存储设备对参考值进行评估。如上所述,参考值存储在设置中,该设置与存储当前元素值的元素对应,因此,该参考值与当前元素值相关。该设置位于内存的一个区域中,该区域与存储元素的位置分开。相应地,该存储设备可以在此单独的区域中对参考值进行评估。该参考值可以反映存储设备的总容量、内存单个段的容量、内存的一个段或一个区域的起始地址等。
在一些实施方式中,在406处,该存储设备可以确定派生参考值。例如,为了确定物理分区中主分区的容量,存储设备从物理分区的容量(例如,如参考值所示)中减去用于将元数据110存储在物理分区(例如,内存的第一区域108的大小)的内存量。因此,派生参考值可以通过从存储设备中内存的一个段(例如物理分区)的容量大小中减去内存第一区域的大小来获得(例如计算)。
在另一个示例中,为了确定物理分区中多个主分区(例如,至少两个)的特定主分区的容量,存储设备从物理分区的容量(例如,如参考值所示)中减去(i)用于将元数据110存储在物理分区(例如,内存的第一区域108的大小)的内存量,以及(ii)物理分区中其他主分区的大小。因此,可以通过从物理分区的容量大小中减去物理分区中的内存第一区域的大小和其他主分区的大小来获得(例如计算)。
在不同的实施方式中,前两个段落中任意一个段落所述的物理分区可以是由所述存储设备的内存组成的多个物理分区中的一个。在得到派生参考值后,流程移至408。
或者,在进行比较之前不需要派生出参考值的情况下,可以跳过(例如,如环绕在406外面的箭头所示)与406有关的操作(例如,存储在设置中的参考值已经是从存储设备中内存的一段的容量中减去内存第一区域的大小的结果)。
在判定408处,存储设备确定来自请求的已更新元素值是否超过参考值或派生参考值(例如,指明主机设备尝试写入存储设备操作边界范围外的值,或主机设备尝试写入的值对存储设备的操作来说并不是最佳的值)。例如,可以根据比较结果来做出判定。
如果408处的判定结果为“否”,则流程移至410,在其中,存储设备允许将更新的元素值写入元素中,以响应从主机接收到的写入请求(例如,该动作有效和/或要写入的更新元素值有效)。
在第一个示例中,如果判定408的结果为“是”,则流程移至412,在其中,存储设备防止更新的元素值被写入元素中(即,例如因为主机设备正在尝试将一个伪造值写入元数据中——写入大约64GB的主分区容量来代替实际为大约16GB的主分区容量,则该动作无效)。在一些情况下,在414处,存储设备可以选择性地将参考值或派生参考值写入元素,而不是写入从与写入请求相关的主机设备处接收到的更新元素值。在某些情况下,有效值可能预先存在于所述元素中,因此,根本不需要更新有效值。
在第二个示例中,如果判定408的结果为“是”,则流程移至416,在其中,存储设备允许将更新的元素值写入元素中,即使该动作被确定无效和/或已更新的元素值已被确定无效。但是,在418处,存储设备可以在内部标记该元素,使得校正动作与存储在已标记的元素中的当前值的任何读取相关联(例如,当前值是基于主机设备写入的已更新元素值的伪造值)。例如,当试图从已标记的元素中读取时,存储设备不提供当前存储在已标记元素中的伪造值(例如无效值),而是存储设备执行校正动作,以保护存储设备的完整性(例如,该存储设备可能在读取阶段访问并提供相应的参考值或派生参考值)。
图5所示为一个示例流程500,该流程对参考值或派生参考值进行了评估,以确保与存储值的元素相关联的读取动作有效。示例流程500可以通过图1和/或图2的上下文中的存储设备102(例如,存储设备102的控制器106)来实施。
在502处,所述存储设备确定读取(当前)存储在元素中的当前元素值的请求的发生。例如,该请求可能由主机设备发起,试图从内存108第一区域的原数据110中读取信息(例如,存储设备的主分区的容量)。
在504处,存储设备对参考值进行评估。如上所述,参考值存储在设置中,该设置与存储当前元素值的元素对应,因此,该参考值与当前元素值相关。该设置位于内存的一个区域中,该区域与存储元素的位置分开。相应地,该存储设备可以在此单独的区域中对参考值进行评估。该参考值可以反映存储设备的总容量、内存单个段的容量、内存的一个段或一个区域的起始地址等。
在一些实施方式中,在506处,该存储设备可以确定派生参考值。例如,为了确定一个物理分区中主分区的容量,存储设备从物理分区的容量(例如,如参考值所示)中减去用于将元数据110存储在物理分区(例如,内存108第一区域的大小)的内存量。因此,派生参考值可以通过从存储设备中内存的一个段(例如物理分区)的容量大小中减去内存第一区域的大小来获得(例如计算)。
在另一个示例中,为了确定物理分区中多个主分区(例如,至少两个)的特定主分区的容量,存储设备从物理分区的容量(例如,如参考值所示)中减去(i)用于将元数据110存储在物理分区(例如,内存的第一区域108的大小)的内存量,以及(ii)物理分区中其他主分区的大小。因此,可以通过从物理分区的容量大小中减去物理分区中的内存第一区域的大小和其他主分区的大小来获得(例如计算)。
在不同的实施方式中,前两个段落中任意一个段落所述的物理分区可以是由所述存储设备的内存组成的多个物理分区中的一个。在得到派生参考值后,流程移至508。
或者,在进行比较之前不需要派生出参考值的情况下,可以跳过(例如,如环绕在506外面的箭头所示)与506有关的操作(例如,存储在设置中的参考值已经是从存储设备中内存的一段的容量中减去内存第一区域的大小的结果)。
在判定508处,存储设备确定已经存储在元素中的当前元素值是否超过参考值或派生参考值(例如,指明主机设备尝试读取存储设备操作边界范围外的值)。例如,可以根据比较结果来做出判定。
如果判定508的结果为“否”,则流程移至510,在其中存储设备向主机设备提供当前元素值,以响应从主机接收到的读取请求(例如,该动作有效和/或当前元素值有效)。
如果508处的判定结果为“是”,则流程移至512,在其中存储设备防止当前元素值被读出到主机设备中(例如,因为主机设备正在从元数据中读取一个伪造值——读取到大约64GB的主分区容量来代替实际为大约16GB的主分区容量,则该动作和/或当前元素值无效)。
在514处,存储设备向主机设备提供参考值或派生参考值,而不是当前元素值。
图6所示为主机设备104和存储设备102之间进行的交互示例,以确保(i)主机设备的写入动作有效或(ii)以储存在元素中的当前值有效。图6的示例交互可以在图1和/或图2的上下文中来实施。
图6所示为内存的第一区域108(来自图1)。内存的第一区域108包括存储值的第一元素602,存储值的第二元素604,以及存储值的第三元素606。而图6显示了三个不同的元素,可以理解为元数据110可以包括存储指示存储设备特征值的任意数量的元素。
在交互608处,主机设备104请求将更新的元素值写入元素604中,并且存储设备102接收将更新元素值写入元素604的请求。
在判定610处,存储设备102确定是否启用对与元素604相关联的动作的验证。例如,存储设备102可以访问内存120第三区域中的设置(例如,寄存器、属性等),该设置指示与元素604相关联的验证被启用或被禁用。指示验证被启用或被禁用的设置可以与存储参考值的设置分开,所述参考值用于确定与元素604相关联的动作是否有效。
如果对610的判定结果为“否”(例如,验证被禁用),则在612处,存储设备102将从主机设备104接收到的已更新元素值写入到元素604中,而不验证写入请求和/或已更新的元素值,并且在交互614处,存储设备102将成功的更新确认返回至主机设备104。
如果对610的判定结果为“是”(例如,验证被启用),则在判定616处,存储设备102确定从主机设备104接收到的并且要写入元素604的已更新元素值是否有效。例如,存储设备102可以执行与图4的示例流程400中的408相关联的比较。
如果对616的判定结果为“是”,则在618处,存储设备102将从主机设备104接收到并且被确定有效的已更新元素值写入元素604,因为该动作有效,并且在交互620处,存储设备102将成功的更新确认返回至主机设备104。
如果对616的判定结果为“否”,则在判定622处,存储设备102确定是否启用对写入/更新的自动校正(例如,校正无效动作和无效的更新元素值)。例如,存储设备102可以访问内存的第三区域120中的另一个设置(例如,寄存器、属性等),该设置指示是否对与元素604相关联的无效动作启用或禁用自动校正。指示自动校正被启用或被禁用的设置也可以与存储参考值的设置分开,所述参考值用于确定与元素604相关联的动作是否有效。
如果对622的判定结果为“否”,则在交互624处,存储设备102将失败的更新确认返回至主机设备104,并且由于该写入动作被确定无效,因此存储在元素604中的当前值不会被更新。
如果对622的判定结果为“是”,则在626处,存储设备102确定一个有效的更新值(例如,如上所述的参考值或派生参考值)。然后,在628处,存储设备102将有效的更新值写入元素604,而不是从主机设备104接收到的已更新元素值,并且在交互630处,存储设备102将成功的更新确认返回至主机设备104。
图7所示为示例存储设备(例如SD卡),本文描述的技术可以在该存储设备中执行。图7所示为单个物理分区702(例如,“单个初始物理分区”),该分区实施主引导记录(MBR)分区和文件分配表(FAT)文件系统。在这个示例中,单个物理分区包括大约62GB的存储空间(例如,也可以被称为与SD卡有关的“用户数据区”),该存储空间对主机设备和/或主机设备的用户可见,例如通过地址空间0000 0000h至F7FF FFFFh。单个物理分区702包括如上所述内存的一个段。
图7还说明了用于寄存器(例如CSD、CID、SCR、SD状态、C_Size、AU_Size等)的内存区域704,以及用于保留块、固件(FW)、数字权限管理(DRM)等的内存区域706。内存区域704可以与内存120的第三区域相关联,如以上关于图1的描述。图7示例中所示的SD卡包括一张64GB的SD卡,单个物理分区702的大约62GB是对主机设备可见的SD卡的总容量,该容量是从64GB中减去内存区域704和内存区域706后得到的容量。
图7进一步更详细地说明了单个物理分区702。例如,单个物理分区702包括一个分区元数据区域708和一个以地址XXXX开头的MBR主分区710。分区元数据区域708可以与内存的第一区域108相关联,如以上关于图1的描述。此外,MBR主分区710可以与内存的第二区域116相关联,如以上关于图1的描述,因此,MBR主分区710对已连接的主机设备的文件系统层可见。
在不同示例中,主机设备可执行与分区元数据区域708中的元素相关联的读取或写入动作,该分区元数据区域708存储表示MBR主分区710的容量(例如,大小)的值(如图7中的YYYY表示)。该动作可能是由伪造者针对分区元数据区域708中的元素所实施的动作(例如,试图写入假值)。如上所述,在内存区域704的寄存器设置中存储了一个参考值(例如,真值),该参考值可以指示(i)初始物理分区702的容量,或(ii)MBR主分区710的容量。然后,存储设备可使用上述技术来确保从分区元数据区域708读取的值,或写入分区元数据区域708的值,在与存储在内存区域704的寄存器设置中的参考值比较时有效。例如,如果参考值指示了MBR主分区710的容量,则存储设备可以直接将要读取或写入的值与参考值进行比较。在另一个示例中,存储设备可以通过从单个物理分区的容量(例如,由参考值所指示)中减去分区元数据区域708的大小来获得派生参考值,使派生参考值指示MBR主分区710的真正容量(如图7中的YYYY表示)。在某些情况下,存储设备可能需要再减去潜在的分区外空间(例如,未对齐部分)的大小来获得MBR主分区710的真正容量。将要写入的值与指示物理分区大小的参考值进行比较,这一点可以被认为已足够充分。
图7提供了分区元数据区域708和MBR主分区710的更多详细信息。例如,分区元数据区域708可以包含存储了表示起始地址(例如“XXXX”)和主引导记录主分区710大小(例如“YYYY”)的信息的MBR712(例如,如上所述的一个或多个“元素”)。在另一个示例中,MBR主分区710可以包含一个分区引导扇区714、一个第一文件分配表(FAT)716、一个第二FAT 718、一个根目录720,以及一个主分区722的实际数据区,该MBR主分区710可以通过已连接的主机设备的文件系统层访问应用程序。
图8所示为存储设备示例,本文描述的技术可以在该存储设备中实施。图8所示为单个物理分区802(例如,“单个初始物理分区”),该分区实施GUID分区表(GPT)分区和FAT文件系统。与图7类似,在此示例中,单个物理分区802可以包括对主机设备和/或主机设备用户可见的大约62GB的内存空间(例如NAND内存)。单个物理分区802包括如上所述内存的一个段。
图8还说明了用于寄存器的内存区域804,以及用于保留块、固件(FW)等的内存区域806。内存区域804可以与内存120的第三区域相关联,如以上关于图1的描述。
图8进一步更详细地说明了单个物理分区802。例如,单个物理分区802包括一个第一分区元数据区域808、一个第二分区元数据区域810(用于备份),以及一个GUID分区812,其以地址XX开始,以地址YY结尾(例如,XX和YY为逻辑快地址(LBA))。第一分区元数据区域808和第二分区元数据区域810可以各自与内存108的第一区域相关联,如以上关于图1的描述。此外,GUID分区812可以与内存116的第二区域相关联,如以上关于图1的描述,因此,GUID分区812对已连接的主机设备的文件系统层可见。
在不同示例中,主机设备可执行与分区元数据区域808中的元素相关联的读取或写入动作,该分区元数据区域808存储表示GUID分区812容量(例如,大小)的值(基于图8中的起始地址XX和结束地址YY)。该动作可能是由伪造者针对分区元数据区域808中的元素所实施的动作(例如,试图写入假值)。如上所述,在内存区域804的寄存器设置中存储了一个参考值(例如,真值),该参考值可以指示(i)初始物理分区802的容量,或(ii)GUID分区812的容量。然后,存储设备可使用上述技术来确保从分区元数据区域808读取的值,或写入分区元数据区域808的值,在与存储在内存区域804的寄存器设置中的参考值比较时有效。例如,如果参考值指示了GUID分区812的容量,则存储设备可以直接将要读取或写入的值与参考值进行比较。在另一个示例中,存储设备可以通过从单个物理分区802的容量(例如,由参考值所指示)中减去分区元数据区域808的大小和分区元数据区域810的大小来获得派生参考值,使派生参考值指示GUID分区812的真正容量。在某些情况下,存储设备可能需要再减去潜在的分区外空间(例如,未对齐部分)的大小来获得GUID分区812的真正容量。
图8提供了第一分区元数据区域808、第二分区元数据区域810和GUID分区812的更多详细信息。例如,第一分区元数据区域808可以包含主引导记录(MBR)814、主GUID分区表头816和存储了表示GUID分区812的起始地址(例如“XX”)和末尾地址(例如“YY”)的信息的主GUID分区项818(例如,如上述一或多个“元素”)。在另一个示例中,GUID分区812可以包含(i)一个包含分区引导扇区、分配表、根目录条目等的文件系统区820,和(ii)主GUID分区812的实际数据区822,主GUID分区812可以通过已连接的主机设备的文件系统层访问应用程序。在另一个示例中,第二分区元数据区域810可以包含一个备份GUID分区表头824和备份GUID分区项826。
图9所示为存储设备示例(例如eMMC),本文描述的技术可以在该存储设备中实施。图9所示为可以单独实施MBR分区和FAT文件系统的多个物理分区和多个主分区。
例如,图9中的eMMC存储设备包括物理回放保护内存块(RPMB)分区902,第一物理引导分区904,第二物理引导分区906和初始物理分区908。在这个示例中,初始物理分区908包括大约60GB的存储空间(例如,也可以被称为与eMMC有关的“用户数据区”),该存储空间对主机设备和/或主机设备的用户可见。
图9还说明了用于寄存器的内存区域910(例如CSD、CID、EXT_CSD、SEC_Count等),以及用于保留块、固件(FW)等的内存区域912。内存区域910可以与内存120的第三区域相关联,如以上关于图1的描述。
在此示例中,初始物理分区908可以划分为多个物理通用分区(GPP)。例如,可以将空间分配给每个第一物理GPP 914、第二物理GPP 916、第三物理GPP 918以及第四物理GPP920,从而创建五个物理分区,包含用户数据区-初始物理分区908,以及第一物理GPP914、第二物理GPP 916、第三物理GPP 918和第四物理GPP 920的剩余空间。物理GPP的大小是可配置的,因此,每个GPP大小可能会有所差异(例如,第一物理GPP 914的大小可能是2GB,第二物理GPP 916的大小可能是4GB,第三物理GPP 918的大小可能是8GB等)。为此,具有60GB初始用户数据器的eMMC,可能在对物理GPP进行配置后,将用户数据器减小至大约40GB,如图9所示。
为了便于讨论,图9对物理GPP 914进行了更详细地说明。例如,第一物理GPP 914包括分区元数据区域922,以地址XXX1起始的第一MBR主分区924,以及以地址XXX2起始的第二MBR主分区926。分区元数据区域922可以与内存的第一区域108相关联,如以上关于图1的描述。此外,第一MBR主分区924和第二MBR主分区926可以与内存116的第二区域相关联,如以上关于图1的描述,因此,第一MBR主分区924和第二MBR主分区926每一个都对已连接的主机设备的文件系统层可见。
在不同示例中,主机设备可执行与分区元数据区域922中的元素相关联的读取或写入动作,该分区元数据区域922存储表示第一MBR主分区924容量(例如,大小)的值(如图9中的YYY1表示)。该动作可能是由伪造者针对分区元数据区域922中的元素所实施的动作(例如,试图写入假值)。如上所述,在内存区域910的寄存器设置中存储了一个参考值(例如,真值),该参考值可以指示(i)第一物理GPP 914的容量,或(ii)第一MBR主分区924的容量。然后,存储设备可使用上述技术来确保从分区元数据区域922读取的值,或写入分区元数据区域922的值,在与存储在内存区域910的寄存器设置中的参考值比较时有效。例如,如果参考值指示了第一MBR主分区924的容量,则存储设备可以直接将要读取或写入的值与参考值进行比较。在另一个示例中,存储设备可以通过从第一物理GPP 914的容量(例如,由参考值所指示)中首先减去分区元数据区域922的大小,然后再减去其他主分区的大小来获得派生参考值,(如图9中的YYY2所示的第二MBR主分区926),使派生参考值指示第一MBR主分区924的真正容量(如图9中的YYY1表示)。在某些情况下,存储设备可能需要再减去潜在的分区外空间(例如,未对齐部分)的大小来获得第一MBR主分区924的真正容量。
图9提供了分区元数据区域922和MBR主分区924和926的更多详细信息。例如,分区元数据区域922可以包含存储了表示起始地址(例如“XXX1”和“XXX2”)和主引导记录主分区924和926大小(例如“YYY1”和“YYY2”)的信息的MBR(例如,如上所述的一个或多个“元素”)。在另一个示例中,MBR主分区924和926的每一个都可以包含分区引导扇区、第一文件分配表(FAT)、第二FAT、根目录,以及实际数据区,该实际数据区可以通过已连接的主机设备的文件系统层访问应用程序。
根据另一个替代实施方式,存储设备可以将元素值(或主机设备尝试写入的更新元素值)不仅与参考值或派生参考值比较,而且还与另一个元素值(或多个值)进行比较。这可以确保以不同方式与存储设备的相同特征相关联或定义相同特征的元素值能够存储收敛值。例如,主分区的大小可以用两种方式体现在MBR中:通过柱面、磁头、扇区(CHS)方式或通过逻辑快地址(LBA)方式。在这种情况下,存储设备可以考虑将其中一个方式(一个或多个元素)作为二级参考(除了第三区域的参考之外),并且存储设备可以根据本申请案中描述的方式,将值保持存储在聚合的元素(即,不同的方式)中,或由聚合元素来表示。
在一些情况下,参考值可以是单个值(例如,0Fh、16d、00001111b),一组值(例如,02h、0Ah、0Fh),一个范围内的值(例如,02h–0Ah),或此处所述的任意组合。如本文所述,有效的动作可以意味着与参考值的比较结果是以下结果之一:等于(例如,读取元素的值/写入元素的值等于参考值)、不同、小于、大于、在范围内、超出范围、一组值中的一个或多个、超出一组值、多个,或这些动作的任意组合。
在一些情况下,例如,派生参考值可能是以下运算的结果:一个或多个参考值的函数、一个或多个更新元素值的函数、或一个或多个当前元素值的函数。例如,派生值可以包括但不限于:由内存容量(例如,内存区域的大小)减去参考值、参考值加第二个值,或覆盖了参考值的更新元素值。
在一些情况下,动作包括来自主机设备的从元素读取当前元素值的请求。更多的操作可能包括由(内存)控制器阻止将当前元素值读出到主机设备,并向主机设备提供参考值(或派生参考值)而不是当前元素值,响应接收到的读取当前元素值的请求,以确保读取当前元素值的请求有效。
示例子句
示例A,存储设备包括:由以下部分组成的内存:内存的第一区域,其存储包括一个或多个元素的元数据,以存储一个或多个指示至少一个与内存的一个段相关的特征的值;和内存的第二区域,其存储至少部分处于内存段中的数据;以及控制器,其经配置后以确保与一个或多个元素的元素相关的动作在与参考值进行比较时有效,该参考值与与内存段相关的实际特征相关联。
示例B,示例A的存储设备,其中内存段由以下至少一项组成:一个主分区、一个物理分区、主分区的实际数据区或一个逻辑单元。
示例C,示例A的存储设备,其中内存的单个区域由以下至少一项组成:一个主分区、主分区的一个段、物理分区的一个段、主分区的文件系统元数据区,或逻辑单元的一个段。
示例D,从示例A到示例C中的任意一个示例的存储设备,其中与内存段相关的实际特征与以下项目中的其中一个相关联:存储设备的总容量;内存第一区域和内存第二区域的组合容量;内存段的容量;内存第二区域的容量;内存段或区域的起始地址;内存段或区域起始地址的对齐;或内存段的分配单元的大小。
示例E,从示例A到示例D的任意一个示例的存储设备,其中:所述元素值包括已经存储在元素中的当前元素值;所述动作包括来自主机设备的将已更新元素值写入元素以替代已经存储在元素中的当前元素值的请求;与内存段有关的实际特征与存储设备的容量相关联;以及所述控制器,被配置为:监视来自主机设备的将更新的元素值写入元素的请求;评估所述参考值;确定更新的元素值超过参考值;并防止将更新的元素值写入元素。
示例F,示例E的存储设备,其中所述控制器被进一步配置,将参考值写入元素,而不是更新的元素值,来响应接收到的写入更新元素值的请求。
示例G,从示例A到示例D的任意一个示例的存储设备,其中:所述元素值包括已经存储在元素中的当前元素值;所述内存段包括物理分区;所述动作包括来自主机设备的将已更新元素值写入元素以替代已经存储在元素中的当前元素值的请求;与物理分区有关的实际特征包括所述物理分区的容量;以及所述控制器,被配置为:监视来自主机设备的将更新的元素值写入元素的请求;评估所述参考值;从物理分区的容量中减去内存第一区域的大小来获得派生参考值;确定更新的元素值超过派生参考值;并防止将更新的元素值写入元素。
示例H,示例G的存储设备,其中所述控制器被进一步配置,将派生参考值写入元素,而不是更新的元素值,来响应接收到的写入更新元素值的请求。
示例I,示例G或示例H的存储设备,其中派生参考值表示物理分区内的单个主分区的容量,并且该物理分区是由存储设备的内存组成的一个或多个物理分区中的其中一个。
示例J,从示例A到示例D的任意一个示例的存储设备,其中:所述元素值包括已经存储在所述元素中的当前元素值,所述当前元素值与主分区相关联;所述内存段包括一个物理分区;所述动作包括来自主机设备的将已更新元素值写入元素以替代已经存储在元素中的当前元素值的请求;与物理分区有关的实际特征包括所述物理分区的容量;以及所述控制器,被配置为:监视来自主机设备的将更新的元素值写入元素的请求;评估所述参考值;从物理分区的容量中同时减去内存第一区域的大小和其他主分区的大小来获得一个与主分区相关联的派生参考值;确定更新的元素值超过派生参考值;并防止将更新的元素值写入元素。
示例K,从示例A到示例D的任意一个示例的存储设备,其中:所述元素值包括已经存储在元素中的当前元素值;所述动作包括来自主机设备的从所述元素中读取当前元素值的请求;与内存段有关的实际特征与存储设备的容量相关联;以及所述控制器,被配置为:监视来自主机设备的从所述元素中读取当前元素值的请求;评估所述参考值;确定已存储在元素中的当前元素值超过所述参考值;防止向主机设备读出当前元素值;并向主机设备提供所述参考值而不是当前元素值来响应接收到的读取当前元素值的请求,以确保读取当前元素值的请求有效。
示例L,从示例A到示例D的任意一个示例的存储设备,其中:所述元素值包括已经存储在元素中的当前元素值;所述内存段包括一个物理分区;所述动作包括来自主机设备的从所述元素中读取当前元素值的请求;与物理分区有关的实际特征包括所述物理分区的容量;以及所述控制器,被配置为:监视来自主机设备的从所述元素中读取当前元素值的请求;评估所述参考值;从物理分区的容量中减去内存第一区域的大小来获得一个派生参考值;确定已存储在元素中的当前元素值超过所述派生参考值;防止向主机设备读出当前元素值;并向主机设备提供所述派生参考值而不是当前元素值来响应接收到的读取当前元素值的请求,以确保读取当前元素值的请求有效。
示例M,示例L的存储设备,其中派生参考值表示物理分区内的单个主分区的容量,其中所述物理分区是由存储设备的内存组成的一个或多个物理分区中的其中一个。
示例N,从示例A到示例D的任意一个示例的存储设备,其中:所述元素值包括已经存储在所述元素中的当前元素值,所述当前元素值与主分区相关联;所述内存段包括一个物理分区;所述动作包括来自主机设备的从所述元素中读取当前元素值的请求;与物理分区有关的实际特征包括所述物理分区的容量;以及所述控制器,被配置为:监视来自主机设备的从所述元素中读取当前元素值的请求;评估所述参考值;从物理分区的容量中同时减去内存第一区域的大小和其他主分区的大小来获得一个与主分区相关联的派生参考值;确定已存储在元素中的当前元素值超过所述派生参考值;防止向主机设备读出当前元素值;并向主机设备提供所述派生参考值而不是当前元素值来响应接收到的读取当前元素值的请求,以确保读取当前元素值的请求有效。
示例O,从示例A至示例N的任意一个示例的存储设备,其中所述控制器被进一步配置,以通过内存的第三区域访问参考值,所述内存的第三区域至少包括寄存器、描述符、属性或标记中的至少其中一个。
示例P,示例A的存储设备,其中:与所述内存段相关的实际特征与内存的第一区域和内存的第二区域的大小组合相关联;并且参考值可基于主机设备和存储设备之间的握手来动态配置以减小容量。
示例Q,从示例A至示例P的任意一个示例的存储设备,包括安全数据(SD)卡、嵌入式多媒体卡(eMMC)存储设备、通用闪存(UFS)卡、外围设备互联(PCIe)卡或固态硬盘(SSD)的其中一个。
示例R,从示例A至示例Q的任意一个示例的存储设备,其中元数据与主引导记录(MBR)、全局唯一标识符(GUID)分区表(GPT)或卷引导记录(VBR)相关联。
示例S,从示例A至示例R的任意一个示例的存储设备,其中参考值存储在设置中,该设置可以由主机设备制造商进行一次性编程。
示例T,从示例A至示例R的任意一个示例的存储设备,其中参考值存储在设置中,该设置需要在对参考值进行重新编程之前对主机设备进行验证。
示例U,一种方法,包括:通过存储设备的控制器,确保与一个或多个元素相关联的动作在与参考值比较时有效,所述参考值与和内存段有关的实际特征相关联,其中所述内存包括一个存储包括了一个或多个元素的元数据的第一区域,这些元素存储一个或多个指示至少一个与内存段相关的特征的元素值,以及一个存储至少部分处于内存段内的数据的第二区域。
示例V,示例U的方法,其中内存段由以下至少一项组成:主分区、物理分区、主分区的实际数据区或逻辑单元。
示例W,示例U的方法,其中内存的单个区域由以下至少一项组成:主分区、主分区的一段、物理分区的一段、主分区的文件系统元数据区,或逻辑单元的一段。
示例X,从示例U到示例W的任意一个示例的方法,其中与内存段相关的实际特征与以下项目中的其中一个相关联:存储设备的总容量;内存第一区域和内存第二区域的组合容量;内存段的容量;内存第二区域的容量;内存段或区域的起始地址;内存段或区域起始地址的对齐;或内存段的分配单元的大小。
示例Y,从示例U到示例X的任意一个示例的方法,其中:所述元素值包括已经存储在元素中的当前元素值;所述动作包括来自主机设备的将已更新元素值写入元素以替代已经存储在元素中的当前元素值的请求;与内存段有关的实际特征与存储设备的容量相关联;以及所述方法进一步包括:监视来自主机设备的将更新的元素值写入元素的请求;评估所述参考值;确定更新的元素值超过参考值;并防止将更新的元素值写入元素。
示例Z,示例Y的方法,进一步包括,将参考值写入元素,而不是更新的元素值,来响应接收到的写入更新元素值的请求。
示例AA,从示例U到示例X的任意一个示例的方法,其中:所述元素值包括已经存储在元素中的当前元素值;所述内存段包括物理分区;所述动作包括来自主机设备的将已更新元素值写入元素以替代已经存储在元素中的当前元素值的请求;与物理分区有关的实际特征包括所述物理分区的容量;以及所述方法,进一步包括:监视来自主机设备的将更新的元素值写入元素的请求;评估所述参考值;从物理分区的容量中减去内存第一区域的大小来获得派生参考值;确定更新的元素值超过派生参考值;并防止将更新的元素值写入元素。
示例BB,示例AA的方法,进一步包括,将派生参考值写入元素,而不是更新的元素值,来响应接收到的写入更新元素值的请求。
示例CC,示例AA或示例BB的方法,其中派生参考值表示物理分区内的单个主分区的容量,并且该物理分区是由存储设备的内存组成的一个或多个物理分区中的其中一个。
示例DD,从示例U到示例X的任意一个示例的方法,其中:所述元素值包括已经存储在所述元素中的当前元素值,所述当前元素值与主分区相关联;所述内存段包括物理分区;所述动作包括来自主机设备的将已更新元素值写入元素以替代已经存储在元素中的当前元素值的请求;与物理分区有关的实际特征包括所述物理分区的容量;以及所述方法,进一步包括:监视来自主机设备的将更新的元素值写入元素的请求;评估所述参考值;从物理分区的容量中同时减去内存第一区域的大小和其他主分区的大小来获得与主分区相关联的派生参考值;确定更新的元素值超过派生参考值;并防止将更新的元素值写入元素。
示例EE,从示例U到示例X的任意一个示例的方法,其中:所述元素值包括已经存储在元素中的当前元素值;所述动作包括来自主机设备的从所述元素中读取当前元素值的请求;与内存段有关的实际特征与存储设备的容量相关联;以及所述方法,进一步包括:监视来自主机设备的从所述元素中读取当前元素值的请求;评估所述参考值;确定已存储在元素中的当前元素值超过所述参考值;防止向主机设备读出当前元素值;并向主机设备提供所述参考值而不是当前元素值来响应接收到的读取当前元素值的请求,以确保读取当前元素值的请求有效。
示例FF,从示例U到示例X的任意一个示例的方法,其中:所述元素值包括已经存储在元素中的当前元素值;所述内存段包括物理分区;所述动作包括来自主机设备的从所述元素中读取当前元素值的请求;与物理分区有关的实际特征包括所述物理分区的容量;以及所述方法,进一步包括:监视来自主机设备的从所述元素中读取当前元素值的请求;评估所述参考值;从物理分区的容量中减去内存第一区域的大小来获得派生参考值;确定已存储在元素中的当前元素值超过所述派生参考值;防止向主机设备读出当前元素值;并向主机设备提供所述派生参考值而不是当前元素值来响应接收到的读取当前元素值的请求,以确保读取当前元素值的请求有效。
示例GG,示例FF的方法,其中派生参考值表示物理分区内的单个主分区的容量,其中,该物理分区是由存储设备的内存组成的一个或多个物理分区中的其中一个。
示例HH,从示例U到示例X的任意一个示例的方法,其中:所述元素值包括已经存储在所述元素中的当前元素值,所述当前元素值与主分区相关联;所述内存段包括物理分区;所述动作包括来自主机设备的从所述元素中读取当前元素值的请求;与物理分区有关的实际特征包括所述物理分区的容量;以及所述方法,进一步包括:监视来自主机设备的从所述元素中读取当前元素值的请求;评估所述参考值;从物理分区的容量中同时减去内存第一区域的大小和其他主分区的大小来获得与主分区相关联的派生参考值;确定已存储在元素中的当前元素值超过所述派生参考值;防止向主机设备读出当前元素值;并向主机设备提供所述派生参考值而不是当前元素值来响应接收到的读取当前元素值的请求,以确保读取当前元素值的请求有效。
示例II,从示例U至示例HH的任意一个示例的方法,进一步包括:通过内存的第三区域访问参考值,所述内存的第三区域至少包括寄存器、描述符、属性或标记中的至少其中一个。
示例JJ,示例U的方法,其中:与所述内存段相关的实际特征与内存的第一区域和内存的第二区域的大小组合相关联;并且参考值可基于主机设备和存储设备之间的握手来动态配置以减小容量。
示例KK,从示例U至示例JJ的任意一个示例的方法,其中存储设备包括安全数据(SD)卡、嵌入式多媒体卡(eMMC)存储设备、通用闪存(UFS)卡、外围设备互联(PCIe)卡或固态硬盘(SSD)的其中一个。
示例LL,从示例U至示例KK的任意一个示例的方法,其中元数据与主引导记录(MBR)、全局唯一标识符(GUID)分区表(GPT)或卷引导记录(VBR)相关联。
示例MM,从示例U至示例LL的任意一个示例的方法,其中参考值存储在设置中,该设置可以由主机设备制造商进行一次性编程。
示例NN,从示例U至示例LL的任意一个示例的方法,其中参考值存储在设置中,该设置需要在对参考值进行重新编程之前对主机设备进行验证。
示例OO,存储指令的一个或多个计算机可读的存储介质,当执行这些指令时,所述存储介质运用示例U至示例NN的任意一个示例的方法。
尽管特点可能看上去是结合特定实施例进行的描述,但是本领域的技术人员将认识到,可以对所描述实施例的各种特点进行组合。此外,结合实施例描述的方面可以独立使用。

Claims (20)

1.一种存储设备,包括:
内存,包括:
至少一个物理分区,其包括:
存储了元数据的所述内存的第一区域,所述元数据包括一个或多个元素,用于存储指示与所述内存的所述至少一个物理分区的一段相关的至少一个特征的一个或多个元素值;和
所述内存的第二区域,其存储了至少部分位于所述内存的所述段中的数据;和
控制器,经过配置以确保与所述一个或多个元素中的一个元素相关联的动作在与参考值比较时有效,所述参考值与所述内存的所述至少一个物理分区的相关实际特征相关联。
2.根据权利要求1的存储设备,其中所述内存段包括以下至少一项:主分区、主分区的实际数据区或逻辑单元。
3.根据权利要求1的存储设备,其中所述内存的单个区域包括以下至少一项:主分区、主分区的一段、物理分区的一段、主分区的文件系统元数据区,或逻辑单元的一段。
4.根据权利要求1的存储设备,其中与所述内存的所述至少一个物理分区有关的实际特征与以下其中一项相关联:
所述存储设备的总容量;
所述内存的所述第一区域和所述第二区域的组合容量;
所述内存的所述段的容量;
所述内存的所述第二区域的容量;
所述内存的所述段或一个区域的起始地址;
所述内存的所述段或一个区域的起始地址的对齐;或
所述内存的所述段的分配单元的大小。
5.根据权利要求1的存储设备,其中:
所述一个或多个元素值包括已存储在所述元素的当前元素值;
所述动作包括来自主机设备的将更新的元素值写入所述元素来替代已存储在所述元素的当前元素值的请求;
与所述内存的所述至少一个物理分区有关的所述实际特征与所述存储设备的容量相关联;且
所述控制器被进一步配置,以:
监视来自所述主机设备的将所述更新的元素值写入所述元素的所述请求;
评估所述参考值;
确定所述更新的元素值超过所述参考值,和
防止将所述更新的元素值写入所述元素。
6.根据权利要求5的存储设备,其中所述控制器被进一步配置,将所述参考值写入所述元素,而不是所述更新的元素值,来响应接收到的写入所述更新元素值的所述请求。
7.根据权利要求1的存储设备,其中:
所述一个或多个元素值包括已存储在所述元素的当前元素值;
所述动作包括来自主机设备的从所述元素读取当前元素值的请求;
与所述内存的所述至少一个物理分区有关的所述实际特征与所述存储设备的容量相关联;且
所述控制器被进一步配置,以:
监视来自所述主机设备的从所述元素读取当前元素值的所述请求;
评估所述参考值;
确定已存储在所述元素中的所述当前元素值超过了所述参考值;
防止将所述当前元素值读出至所述主机设备;和
在响应接收到的读取所述当前元素值的所述请求时,向所述主机设备提供所述参考值而不是所述当前元素值,以确保读取所述当前元素值的所述请求有效。
8.根据权利要求1的存储设备,其中所述控制器被进一步配置,以通过所述内存的第三区域访问所述参考值,所述内存的所述第三区域包括寄存器、描述符、属性或标记中的至少一个,
其中所述内存的所述第三区域(i)可由主机设备的第一制造商或所述存储设备的第二制造商进行一次性编程;或(ii)在对所述第三区域的所述参考值进行重新编程之前,需要对主机设备进行验证。
9.根据权利要求1的存储设备,包括安全数据(SD)卡、嵌入式多媒体卡(eMMC)存储设备、通用闪存(UFS)卡、外围设备互联(PCIe)卡或固态硬盘(SSD)的其中一个。
10.根据权利要求1的存储设备,其中所述元数据与主引导记录(MBR)、全局唯一标识符(GUID)分区表(GPT)或卷引导记录(VBR)中的一个相关联。
11.一种方法,包括:
通过存储设备的控制器,确保与一个或多个元素中的元素相关联的动作在与参考值比较时有效,所述参考值与内存的至少一个物理分区有关的实际特征相关联,
其中,所述内存包括存储了元数据的第一区域,所述元数据包括一个或多个元素,用于存储指示与所述内存的一段相关的至少一个特征的一个或多个元素值,以及存储至少部分位于所述内存的所述段的数据的第二区域。
12.根据权利要求11的方法,进一步包括:其中所述内存的所述段由以下至少一项组成:主分区、主分区的实际数据区或一个逻辑单元。
13.根据权利要求11的方法,其中所述内存的单个区域包括以下至少一项:主分区、主分区的一段、物理分区的一段、主分区的文件系统元数据区,或逻辑单元的一段。
14.根据权利要求11的方法,其中与所述内存的所述至少一个物理分区有关的实际特征与以下其中一项相关联:
所述存储设备的总容量;
所述内存的所述第一区域和所述第二区域的组合容量;
所述内存的所述段的容量;
所述内存的所述第二区域的容量;
所述内存的所述段或一个区域的起始地址;
所述内存的所述段或一个区域的起始地址的对齐;或
所述内存的所述段的分配单元的大小。
15.根据权利要求11的方法,其中:
所述一个或多个元素值包括已存储在所述元素的当前元素值;
所述动作包括来自主机设备的将更新的元素值写入所述元素来替代已存储在所述元素的当前元素值的请求;
与所述内存的所述至少一个物理分区有关的所述实际特征与所述存储设备的容量相关联;且
所述方法进一步包括:
监视来自所述主机设备的将所述更新的元素值写入所述元素的所述请求;
评估所述参考值;
确定所述更新的元素值超过所述参考值,和
防止将所述更新的元素值写入所述元素。
16.根据权利要求11的方法,其中:
所述一个或多个元素值包括已存储在所述元素的当前元素值;
所述动作包括来自主机的从所述元素读取当前元素值的请求;与所述内存的所述至少一个物理分区有关的所述实际特征与所述存储设备的容量相关联;且
所述方法进一步包括:
监视来自所述主机设备的从所述元素读取当前元素值的所述请求;
评估所述参考值;
确定已存储在所述元素中的所述当前元素值超过了所述参考值;
防止将当前元素值读出至主机设备;和
在响应接收到的读取所述当前元素值的所述请求时,向所述主机设备提供所述参考值而不是所述当前元素值,以确保读取所述当前元素值的所述请求有效。
17.一种系统,包括:
内存,包括:
存储了元数据的所述内存的第一区域,所述元数据包括一个或多个元素,用于存储指示与所述内存的一段相关的至少一个特征的一个或多个元素值;和
所述内存的第二区域,其存储了至少部分位于所述内存的所述段中的数据;和
控制器,经过配置以确保与所述一个或多个元素中的一个元素相关联的动作在与参考值比较时有效,所述参考值与所述内存的物理分区的相关实际特征相关联。
18.根据权利要求17的系统,其中:
所述一个或多个元素值包括已存储在所述元素的当前元素值;
所述动作包括来自主机设备的将更新的元素值写入所述元素来替代已存储在所述元素的当前元素值的请求;
与所述物理分区相关的所述实际特征包括所述物理分区的容量;且
所述控制器被进一步配置,以:
监视来自所述主机设备的将所述更新的元素值写入所述元素的所述请求;
评估所述参考值;
至少从所述物理分区的所述容量中减去内存的所述第一区域的大小,以获得派生参考值;
确定所述更新的元素值超过所述派生参考值,和
防止将所述更新的元素值写入所述元素。
19.根据权利要求18的系统,其中所述控制器被进一步配置,将所述派生参考值写入所述元素,而不是所述更新的元素值,来响应接收到的写入所述更新元素值的所述请求。
20.根据权利要求17的系统,其中:
所述一个或多个元素值包括已存储在所述元素的当前元素值;
所述动作包括来自主机设备的从所述元素读取当前元素值的请求;
与所述物理分区相关的所述实际特征包括所述物理分区的容量;且
所述控制器被进一步配置,以:
监视来自所述主机设备的从所述元素读取当前元素值的所述请求;
评估所述参考值;
从所述物理分区的所述容量中减去内存的所述第一区域的大小,以获得派生参考值;
确定已存储在所述元素中的所述当前元素值超过了所述派生参考值;
防止将所述当前元素值读出至所述主机设备;和
在响应接收到的读取所述当前元素值的所述请求时,向所述主机设备提供所述派生参考值而不是所述当前元素值,以确保读取所述当前元素值的所述请求有效。
CN201680075470.1A 2015-12-21 2016-12-20 使用参考值确保存储设备动作有效 Active CN108701080B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562270493P 2015-12-21 2015-12-21
US62/270,493 2015-12-21
US15/383,631 US10140055B2 (en) 2015-12-21 2016-12-19 Ensuring that memory device actions are valid using reference values
US15/383,631 2016-12-19
PCT/US2016/067720 WO2017112649A1 (en) 2015-12-21 2016-12-20 Ensuring that memory device actions are valid using reference values

Publications (2)

Publication Number Publication Date
CN108701080A true CN108701080A (zh) 2018-10-23
CN108701080B CN108701080B (zh) 2023-07-14

Family

ID=59064296

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680075470.1A Active CN108701080B (zh) 2015-12-21 2016-12-20 使用参考值确保存储设备动作有效

Country Status (6)

Country Link
US (1) US10140055B2 (zh)
EP (1) EP3387537A1 (zh)
JP (1) JP6791967B2 (zh)
KR (1) KR20180096660A (zh)
CN (1) CN108701080B (zh)
WO (1) WO2017112649A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101964436B1 (ko) 2016-09-20 2019-04-01 주식회사 엘지화학 접착력 및 자외선 차단 기능이 우수한 광학 필름, 및 이를 포함하는 편광판
KR101886176B1 (ko) * 2016-10-25 2018-08-08 시큐리티플랫폼 주식회사 소유자만 기록 가능한 부트영역을 포함하는 저장장치
CN107247674B (zh) * 2017-06-16 2020-07-31 深圳市万普拉斯科技有限公司 内存块类型处理方法、装置、电子设备及可读存储介质
JP7362349B2 (ja) * 2019-08-23 2023-10-17 キヤノン株式会社 制御装置

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030135709A1 (en) * 2001-02-23 2003-07-17 Niles Ronald Steven Dynamic allocation of computer memory
US20070271609A1 (en) * 2006-05-18 2007-11-22 Phison Electronics Corp. Security system of flash memory and method thereof
CN101174288A (zh) * 2006-11-03 2008-05-07 三星电子株式会社 增强drm权限的方法和drm权限内容以及便携式终端
CN101460931A (zh) * 2006-05-29 2009-06-17 微软公司 在复制期间保留阴影副本数据
US20100281208A1 (en) * 2009-04-30 2010-11-04 Qing Yang System and Method for Data Storage
CN102148668A (zh) * 2011-01-04 2011-08-10 华为技术有限公司 处理方法与设备
US20120089805A1 (en) * 2010-10-08 2012-04-12 Phison Electronics Corp. Memory storage device, memory controller thereof, and method for automatically creating fill-file thereof
US20120137061A1 (en) * 2009-04-30 2012-05-31 Velobit, Inc. Pre-cache similarity-based delta compression for use in a data storage system
US8605502B1 (en) * 2012-05-22 2013-12-10 Sandisk Technologies Inc. Systems and methods of updating read voltages
CN103778149A (zh) * 2012-10-23 2014-05-07 腾讯科技(深圳)有限公司 文件系统及其对文件进行存储管理的方法
CN104350496A (zh) * 2012-05-30 2015-02-11 汤姆逊许可公司 用于数字媒体的大规模更新的方法和装置
CN104658610A (zh) * 2015-01-14 2015-05-27 广东省电子信息产业集团有限公司 一种动态调整的闪存错误检测方法及装置
CN104798063A (zh) * 2012-10-30 2015-07-22 株式会社东芝 存储设备和主机设备
CN104951405A (zh) * 2014-03-28 2015-09-30 三星电子株式会社 存储系统以及对存储系统执行和验证写保护的方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101404083B1 (ko) 2007-11-06 2014-06-09 삼성전자주식회사 반도체 디스크 및 그것의 동작 방법
US8412909B2 (en) 2009-04-08 2013-04-02 Samsung Electronics Co., Ltd. Defining and changing spare space and user space in a storage apparatus
KR102098697B1 (ko) 2013-03-15 2020-04-08 삼성전자주식회사 비휘발성 메모리 시스템, 이를 포함하는 시스템 및 상기 비휘발성 메모리 시스템의 적응적 사용자 저장 영역 조절 방법

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030135709A1 (en) * 2001-02-23 2003-07-17 Niles Ronald Steven Dynamic allocation of computer memory
US20070271609A1 (en) * 2006-05-18 2007-11-22 Phison Electronics Corp. Security system of flash memory and method thereof
CN101460931A (zh) * 2006-05-29 2009-06-17 微软公司 在复制期间保留阴影副本数据
CN101174288A (zh) * 2006-11-03 2008-05-07 三星电子株式会社 增强drm权限的方法和drm权限内容以及便携式终端
US20100281208A1 (en) * 2009-04-30 2010-11-04 Qing Yang System and Method for Data Storage
US20120137061A1 (en) * 2009-04-30 2012-05-31 Velobit, Inc. Pre-cache similarity-based delta compression for use in a data storage system
US20120089805A1 (en) * 2010-10-08 2012-04-12 Phison Electronics Corp. Memory storage device, memory controller thereof, and method for automatically creating fill-file thereof
CN102148668A (zh) * 2011-01-04 2011-08-10 华为技术有限公司 处理方法与设备
US8605502B1 (en) * 2012-05-22 2013-12-10 Sandisk Technologies Inc. Systems and methods of updating read voltages
CN104350496A (zh) * 2012-05-30 2015-02-11 汤姆逊许可公司 用于数字媒体的大规模更新的方法和装置
CN103778149A (zh) * 2012-10-23 2014-05-07 腾讯科技(深圳)有限公司 文件系统及其对文件进行存储管理的方法
CN104798063A (zh) * 2012-10-30 2015-07-22 株式会社东芝 存储设备和主机设备
CN104951405A (zh) * 2014-03-28 2015-09-30 三星电子株式会社 存储系统以及对存储系统执行和验证写保护的方法
CN104658610A (zh) * 2015-01-14 2015-05-27 广东省电子信息产业集团有限公司 一种动态调整的闪存错误检测方法及装置

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
何耀等: "SCMPFS:面向SCM的聚合文件系统", 《计算机研究与发展》 *
何耀等: "SCMPFS:面向SCM的聚合文件系统", 《计算机研究与发展》, 15 December 2015 (2015-12-15) *
陈荔;张菁;: "NAND型闪存不溢出存储设计", 长安大学学报(自然科学版), no. 04, pages 99 - 104 *

Also Published As

Publication number Publication date
KR20180096660A (ko) 2018-08-29
JP2019507918A (ja) 2019-03-22
EP3387537A1 (en) 2018-10-17
US10140055B2 (en) 2018-11-27
US20170177274A1 (en) 2017-06-22
WO2017112649A1 (en) 2017-06-29
JP6791967B2 (ja) 2020-11-25
CN108701080B (zh) 2023-07-14

Similar Documents

Publication Publication Date Title
CN103198450B (zh) 图像形成装置
KR101157433B1 (ko) 사용조건으로서 휴대 데이터 저장 디바이스의 사용자에게메시지의 전달
US7039799B2 (en) Methods and structure for BIOS reconfiguration
US11307992B2 (en) Method and apparatus for performing operations to namespaces of a flash memory device
CN108701080A (zh) 使用参考值确保存储设备动作有效
CN104541280A (zh) 用于利用非易失性存储器装置的备选引导路径支持
CN105830021B (zh) 可更新集成电路无线电
US8417902B2 (en) One-time-programmable memory emulation
US8255656B2 (en) Storage device, memory controller, and data protection method
EP2293195A2 (en) Memory drive that can be operated like optical disk drive and method for virtualizing memory drive as optical disk drive
US7958344B2 (en) Method for adjusting set-up default value of bios and mainboard using the same method
US9514040B2 (en) Memory storage device and memory controller and access method thereof
US20120151126A1 (en) Flash drive with multiple connectors
KR102388746B1 (ko) 세이프 어드레스 매핑을 이용한 메모리 셀 액세스 제어 방법
CN111694580B (zh) 存储设备升级及初始化的方法、装置、电子设备
WO2020113421A1 (zh) 一种挂载文件系统的方法、终端设备及存储介质
US11526454B2 (en) Data storage device with an exclusive channel for flag checking of read data, and non-volatile memory control method
CN211878599U (zh) 应用于现场可编辑门阵列fpga的仿真验证系统
US20210208808A1 (en) Host Supported Partitions in Storage Device
US20070208929A1 (en) Device information managements systems and methods
KR20060095133A (ko) 비휘발성 메모리에 저장된 시스템 프로그램을 구동시키는방법
US11204700B2 (en) Data storage device and non-volatile memory control method, with security extension
CN113805917A (zh) 固件更新方法、装置、电子设备和存储介质
CN111611217A (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
TA01 Transfer of patent application right

Effective date of registration: 20210719

Address after: 5A, 5 / F, second warehouse, China Travel Association warehouse, 1 Cheong Hang Road, Hung Hom, Kowloon, Hong Kong, China

Applicant after: Jiangbolong Electronics (Hong Kong) Co.,Ltd.

Address before: Nevada

Applicant before: Memory Technologies LLC

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant