CN104077174B - 用于提供存储系统逻辑块地址的数据固化的方法及系统 - Google Patents

用于提供存储系统逻辑块地址的数据固化的方法及系统 Download PDF

Info

Publication number
CN104077174B
CN104077174B CN201410289009.9A CN201410289009A CN104077174B CN 104077174 B CN104077174 B CN 104077174B CN 201410289009 A CN201410289009 A CN 201410289009A CN 104077174 B CN104077174 B CN 104077174B
Authority
CN
China
Prior art keywords
data
data write
order
solid state
bridge
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.)
Expired - Fee Related
Application number
CN201410289009.9A
Other languages
English (en)
Other versions
CN104077174A (zh
Inventor
罗斯·斯藤福特
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.)
Seagate Technology LLC
Original Assignee
Seagate Technology 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
Priority claimed from US12/413,329 external-priority patent/US20100250830A1/en
Priority claimed from US12/413,307 external-priority patent/US8090905B2/en
Priority claimed from US12/413,312 external-priority patent/US8230159B2/en
Application filed by Seagate Technology LLC filed Critical Seagate Technology LLC
Publication of CN104077174A publication Critical patent/CN104077174A/zh
Application granted granted Critical
Publication of CN104077174B publication Critical patent/CN104077174B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • 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
    • 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/0625Power saving in storage 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • 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/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/0661Format or protocol conversion 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/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/14Power supply arrangements, e.g. power down, chip selection or deselection, layout of wirings or power grids, or multiple supply levels
    • G11C5/141Battery and back-up supplies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/30Means for acting in the event of power-supply failure or interruption, e.g. power-supply fluctuations
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明公开了用于提供存储系统逻辑块地址的数据固化的方法及系统。存储系统逻辑块地址(LBA)的释放管理和数据固化提供了对使用的性能、效率和效用的改进。任选地,第一格式(例如,与第一协议相关联)的LBA释放信息被转换为第二格式(例如,与第二协议相关联)。第一协议的实施例为小型计算机系统接口(SCSI)协议,而第二协议的实施例为高级技术附件(ATA)协议。任选地,LBA释放状态信息通过诸如固态硬盘(SSD)的存储装置来确定,并且被传送至诸如启动器、扩展器或桥接器的另一器件。任选地,诸如响应于确定SSD将被断电,将存储在SSD上的数据固化。经由通过诸如超级电容器或电池的能量存储元件所提供的电能来进行固化。

Description

用于提供存储系统逻辑块地址的数据固化的方法及系统
本申请是申请日为2010年3月27日、申请号为201080023094.4、发明名称为“用于提供存储系统逻辑块地址的释放管理的方法及设备”的专利申请的分案申请,其全部内容结合于此作为参考。
技术领域
需要对存储系统的使用进行发展以用于提高使用的性能、效率和效用。
背景技术
一些SSD进行存储数据不同于一些HDD。例如,一些HDD为每个LBA分配空间的物理扇区,并且(分配的)物理扇区和LBA之间的映射保持不变。概念上讲,LBA在HDD上的物理位置不会移动。然而,一些SSD不为每个LBA(预)分配物理空间。另外,一些SSD被操作为周期性地将所存储的数据从一个位置移动到另一位置以避免数据损失。在一些情况下,数据的这种移动会在SSD上会导致性能损耗和附加磨损。为了减少和/或避免该问题,期望操作系统在包含于这些LBA中的数据不再有效时“释放”SSD上的LBA。此外,一些SSD具有超级电容器或电池来提供电能,从而使得在意外丢失电能的情况下能够将SSD中的所有易失性数据清除转储至非易失性闪存中,由此防止了数据丢失。这些超级电容器和电池具有相对较高的成本,并且相对更容易产生故障。
发明内容
为了减少和/或避免一些SSD中的数据这种移动会在SSD上会导致性能损耗和附加磨损该问题,期望操作系统在包含于这些LBA中的数据不再有效时“释放”SSD上的LBA。
根据本发明的一个方面提供了一种用于提供存储系统逻辑块地址的释放管理的方法,包括:接收与第一协议相关联的第一格式的逻辑块地址释放信息;将所述逻辑块地址释放信息从所述第一格式转换为与第二协议相关联的第二格式;以及确定与所述逻辑块地址释放信息相关联的用户数据或保护数据之一是否可以被独立释放;以及如果确定了与所述逻辑块地址释放信息相关联的所述用户数据和所述保护数据之一可以被独立地释放,则独立地释放所述用户数据或所述保护数据之一。
根据本发明的另一个方面提供了一种用于提供存储系统逻辑块地址的释放管理的方法,包括:接收与第一协议相关联的第一格式的逻辑块地址释放信息;将所述第一格式的所述逻辑块地址释放信息转换为与第二协议相关联的第二格式;以及其中,将所述第一格式的所述逻辑块地址释放信息转换为所述第二格式包括将SCSI UNMAP命令转换为ATA数据集管理命令。
根据本发明的又一个方面提供了一种用于提供存储系统逻辑块地址的释放管理的方法,包括:接收与第一协议相关联的第一格式的逻辑块地址释放信息;将所述第一格式的所述逻辑块地址释放信息转化为与第二协议相关联的第二格式;接收与所述第一协议相关联的所述第一格式的电能损耗信息;将所述第一格式的所述电能损耗信息转换为与所述第二协议相关联的所述第二格式;以及其中,将所述第一格式的所述电能损耗信息转换为所述第二格式包括将SCSI电能损耗基元转换为ATA转储高速缓存命令。
根据本发明的再一个方面提供一种用于提供存储系统逻辑块地址的释放管理的方法,包括:接收与第一协议相关联的第一格式的逻辑块地址释放信息;将所述第一格式的所述逻辑块地址释放信息转换为与第二协议相关联的第二格式;接收与所述第一协议相关联的所述第一格式的写入数据模式的命令;将所述第一格式的所述写入数据模式的命令转换为与所述第二协议相关联的所述第二格式;以及其中,所述写入数据模式的命令包括WRITE SAME命令或FORMAT命令之一。
根据本发明的再一个方面提供一种用于提供存储系统逻辑块地址的释放管理的方法,包括:接收与第一协议相关联的第一格式的逻辑块地址释放信息;将所述第一格式的所述逻辑块地址释放信息转换为与第二协议相关联的第二格式;其中,将所述第一格式的所述逻辑块地址释放信息转换为所述第二格式包括将SATA逻辑块地址块对齐转换为SCSI逻辑块地址块对齐。
根据本发明的再一个方面提供一种用于提供存储系统逻辑块地址的释放管理的设备,包括:桥接器,用于接收与第一协议相关联的第一格式的逻辑块地址释放信息并用于将所述第一格式的所述逻辑块地址释放信息转换为与第二协议相关联的第二格式;以及将所述第一格式的所述逻辑块地址释放信息转换为所述第二格式包括将SCSI UNMAP命令转换为ATA数据集管理命令。
可以以多种方式来实施本发明,包括处理、制造物、设备、系统、物质组成以及诸如计算机可读存储介质(例如,诸如磁盘的光学和/或磁性大容量存储装置中的介质或者具有诸如闪存的非易失性存储的集成电路)的计算机可读介质或其中在光学或电通信链路上发送程序指令的计算机网络。在该说明书中,这些实现方式或者本发明可以采取的任何其他形式均可以被称为技术。详细描述提供了对本发明的一个或多个实施方式的说明,这些实施方式能够提高以上所述的领域中的使用的性能、效率和效用。详细描述包括有助于更快速地理解详细描述的剩余部分的引言。引言包括根据本文所描述的概念的系统、方法、制造物和计算机可读介质的一个或多个的示例性实施方式。如结论中更加详细讨论的,本发明包括所有可能的修改和变化,它们均在所发布的权利要求的范围内。
附图说明
图1示出了提供存储系统逻辑块地址释放管理和数据固化(data hardening)的系统的实施方式的所选细节。
图2示出了提供存储系统逻辑块地址释放管理和数据固化的系统的另一实施方式的所选细节。
图3A示出了用于将第一格式的逻辑块地址(LBA)释放信息转换为第二格式的实施方式的所选细节。
图3B示出了用于将小型计算机系统接口(SCSI)格式的LBA释放信息转换为高级技术附件(ATA)格式的实施方式的所选细节。
图4A示出了用于发送LBA释放状态信息的实施方式的所选细节。
图4B示出了用于发送LBA释放状态信息的另一实施方式的所选细节。
图5A示出了用于固化存储在固态硬盘(SSD)上的数据的实施方式的所选细节。
图5B示出了用于固化存储在SSD上的数据的另一实施方式的所选细节。
图5C示出了用于检验SSD的超级电容器或电池的实施方式的所选细节。
图6示出了用于存储用户数据和保护数据的LBA扇区的所有或任何部分的实施方式的所选细节。
图7示出了根据另一实施方式的用于发送LBA释放状态信息的实施方式的所选细节。
图8A示出了包括使用用于访问和控制非易失性存储器的映射的SSD控制器的SSD的实施方式的所选细节。
图8B示出了包括图8A的SSD的系统的实施方式的所选细节。
图8C示出了包括图8A的SSD的系统的实施方式的所选细节。
图9示出了可以实施先前各个实施方式的各种架构和/或功能性的示例性系统。
具体实施方式
详细说明
下文与用于示出本发明的所选细节的附图一起提供了对本发明的一个或多个实施方式的详细说明。结合实施方式描述本发明。本文中的实施方式应被理解为仅是示例性的,本发明明显不限于本文中的任何或所有实施方式,或者由本文中的任一或所有实施方式限制,并且本发明包括各种变形、修改和等价物。为了避免说明的单调,各种文字标签(包括但不限于:第一、最后、特定、各种、进一步、其他、特殊、选择、一些和值得注意)可以应用于实施方式的各个集合;本文使用这些标签明显不是为了传达性质或任何形式的喜好或偏见,而仅仅是为了便于区别各个集合。所公开的处理的一些操作的顺序可以在本发明的范围之内改变。无论在什么情况下,多个实施方式用于描述处理、方法和/或程序指令特征的变化,根据预定或动态确定的准则所预期的其他实施方式均执行分别对应于多个实施方式的多个操作模式中的一个的静态和/或动态选择。在以下描述中阐述了多种具体细节以提供对本发明的完全理解。提供细节是为了示例性的目的,并且可以根据不具有一些或所有细节的权利要求来实践本发明。为了清楚的目的,没有详细地描述与本发明相关的在技术领域中已知的技术材料,从而本发明不会不必要地难以理解。
引言
包括该引言只是为了帮助更快速地理解详细说明;由于任何引言的段落必定是整个主题的精简部分,并且不旨在作为排外或限制性的描述,所以本发明不限于引言中所提出的概念(包括明确的实施例,如果有的话)。例如,以下的介绍仅向特定的实施方式提供了由空间和组织所限定的概述信息。在整个说明书的权衡中讨论了包括权利要求最终引出的许多其他实施方式。
首字母缩略词
本文中其他地方的各种速记缩写词或首字母缩写词指的是特定元素。下文是对至少一些首字母缩略词的描述。
一些SSD进行存储数据不同于一些HDD。例如,一些HDD为每个LBA分配空间的物理扇区,并且(分配的)物理扇区和LBA之间的映射保持不变。概念上讲,LBA在HDD上的物理位置不会移动。然而,一些SSD不为每个LBA(预)分配物理空间。另外,一些SSD被操作为周期性地将所存储的数据从一个位置移动到另一位置以避免数据损失。在一些情况下,数据的这种移动会在SSD上会导致性能损耗和附加磨损。为了减少和/或避免该问题,期望操作系统在包含于这些LBA中的数据不再有效时“释放”SSD上的LBA。此外,一些SSD具有超级电容器或电池来提供电能,从而使得在意外丢失电能的情况下能够将SSD中的所有易失性数据清除转储至非易失性闪存中,由此防止了数据丢失。这些超级电容器和电池具有相对较高的成本,并且相对更容易产生故障。
存储系统LBA的释放管理和数据固化用于提高使用的性能、效率和效用。任选地,第一格式(例如,与第一协议相关联)的LBA释放信息被转换为第二格式(例如,与第二协议相关联)。第一协议的实例为SCSI协议,而第二协议的实例为ATA协议。任选地,LBA释放状态信息通过诸如SSD的存储装置来确定,并且被传送至诸如启动器、扩展器和桥接器的另一装置。任选地,诸如响应于确定SSD将被断电,而固化存储在SSD上的数据。该固化是经由由诸如超级电容器或电池的能量存储元件所提供的电能来进行的。
一些类型的SSD使用闪存来提供非易失性存储(例如,闪存在不应用电能的情况下保持信息)。一些SSD与磁性和/或光学非易失性存储(诸如HDD、CD驱动器和DVD驱动器)所使用的形状尺寸、电接口和/或协议相兼容。一些SSD能够经由所包括的SSD控制器的主机接口而耦接至计算主机。一些SSD控制器能够经由一个或多个所包括的闪存接口而耦接至闪存。
根据各个实施方式,主机接口与USB接口标准、CF接口标准、MMC接口标准、SD接口标准、记忆棒接口标准、xD图像卡接口标准、IDE接口标准、SATA接口标准、SCSI接口标准、SAS接口标准和PCIe接口标准中的一个或多个兼容。根据各个实施方式,计算主机为计算机、工作站计算机、服务器计算机、存储服务器、PC、膝上型计算机、笔记本计算机、上网本计算机、PDA、媒体播放器、媒体记录器、数码相机、蜂窝手机、无线手持电话和电子游戏机的所有或任一部分。在一些实施方式中,对接主机(诸如SAS/SATA桥接器或SCSI扩展器)作为计算主机进行操作。
示例性实施方式
结束了对详细说明的介绍,下文是示例性实施方式的集合,其至少包括一些明确列举的“EC”(实施例组合),并且根据本文所描述的概念提供各种实施方式类型的附加描述;这些实施例不意味着彼此是排除、穷举或限制的;并且本发明不限于这些示例性实施方式,而是包括所发出权利要求的范围内的所有可能的修改和变化。
EC1)一种系统,包括:
第一I/O接口,能够接收第一存储协议命令;
第二I/O接口,能够输出第二存储协议命令;
转换单元,能够将所接收的第一存储协议命令中的至少一些转换为第二存储协议命令,并且
其中,第一存储协议命令的第一存储协议释放命令以第一格式被第一接口接收,并被转换为第二格式并以第二格式输出为所述第二存储协议命令的第二存储协议释放命令。
EC2)根据EC1的系统,其中,释放命令是包括至少一个逻辑块地址的逻辑块释放命令。
EC3)根据EC1的系统,还包括响应于第二存储协议命令的大容量存储器。
EC4)根据EC3的系统,其中,关于至少一个逻辑块地址,释放命令请求释放用户数据和保护数据中的所选择的一个,并且只要用户数据和保护数据能够被独立地释放,大容量存储器就有条件地履行该请求。
EC5)根据EC3的系统,还包括第一存储协议命令的启动器。
EC6)根据EC5的系统,还包括扩展器。
EC7)根据EC1的系统,其中,第一I/O接口、第二I/O接口和转换单元被实现为统一组件。
EC8)根据EC7的系统,其中,统一组件为能够与生成第一存储协议命令的启动器单元相耦接的桥接单元,并且桥接单元还能够与响应于第二存储协议命令的大容量存储器单元耦接。
EC9)根据EC8的系统,其中,响应于由桥接单元的第一I/O接口接收的电能特定信息的至少一种情况,桥接单元的第二I/O接口输出电能特定命令,并且大容量存储器单元对电能特定命令的响应包括对数据进行固化。
EC10)根据EC9的系统,其中,通过使用闪存来实现大容量存储器单元。
EC11)根据EC9的系统,其中,大容量存储器单元为固态驱动器。
EC12)根据EC1的系统,其中,第一存储协议与SCSI协议兼容,而第二存储协议与ATA协议兼容。
EC13)根据EC12的系统,其中,第一存储协议释放命令为SCSI UNMAP命令,而第二存储协议释放命令为ATA数据集管理命令。
EC14)根据EC12的系统,其中,第一存储协议释放命令为写入数据模式的命令。
EC15)根据EC14的系统,其中,写入数据模式的命令是WRITE SAME命令和FORMAT命令中的所选择的一个。
EC16)根据EC14的系统,其中,数据模式与预定的标准一致。
EC17)根据EC1的系统,其中,第一存储协议与SAS协议兼容,而第二存储协议与SATA协议兼容。
EC18)根据EC3的系统,其中,通过使用闪存来实施大容量存储器。
EC19)根据EC3的系统,其中,大容量存储器为固态驱动器。
EC20)根据EC3的系统,其中,第一I/O接口、第二I/O接口、转换单元和大容量存储器被实施为统一组件。
EC21)根据EC20的系统,其中,统一组件为能够与生成第一存储协议命令的启动器单元耦接的驱动单元。
EC22)根据EC21的系统,其中,通过使用闪存来实施大容量存储器。
EC23)根据EC1的系统,其中,至少部分地通过专用逻辑来实现转换单元。
EC24)根据EC1的系统,其中,转换单元包括至少一个专用存储缓冲器。
EC25)根据EC1的系统,其中,转换单元包括硬件状态机。
EC26)根据EC1的系统,其中,转换单元包括微编码状态机。
EC27)根据EC1的系统,其中,转换单元包括在嵌入式处理器上运行的软件代理(software agent)。
EC28)一种方法,包括:
经由第一I/O接口接收第一存储协议命令;
经由第二I/O接口输出第二存储协议命令;
经由转换单元将所接收的第一存储协议命令的至少一些转换为第二存储协议命令;以及
其中,第一存储协议命令的第一存储协议释放命令以第一格式被第一接口接收,并被转换为第二格式并被以第二格式输出为第二存储协议命令的第二存储协议释放命令。
EC29)根据EC28的方法,其中,释放命令是包括至少一个逻辑块地址的逻辑块释放命令。
EC30)根据EC28的方法,还包括通过大容量存储器接收和响应第二存储协议命令。
EC31)根据EC30的方法,还包括通过启动器生成第一存储协议命令。
EC32)根据EC31的方法,还包括通过扩展器接收第一存储协议命令,并通过扩展器将第一存储协议命令转发至第一I/O接口。
EC33)根据EC28的方法,其中,第一I/O接口、第二I/O接口和转换单元被实现为统一组件。
EC34)根据EC33的方法,其中,统一组件为桥接单元,该方法还包括在启动器单元中生成第一存储协议命令,并通过大容量存储器单元接收和响应第二存储协议命令。
EC35)根据EC28的方法,其中,第一存储协议与SCSI协议兼容,而第二存储协议与ATA协议兼容。
EC36)根据EC35的方法,其中,第一存储协议释放命令为SCSI UNMAP命令,而第二存储协议释放命令为ATA数据集管理命令。
EC37)根据EC35的方法,其中,第一存储协议释放命令为写入数据模式的命令。
EC38)根据EC37的方法,其中,写入数据模式的命令是WRITE SAME命令和FORMAT命令中的所选择的一个。
EC39)根据EC37的方法,其中,数据模式与预定标准一致。
EC40)根据EC28的方法,其中,第一存储协议与SAS协议兼容,而第二存储协议与SATA协议兼容。
EC41)根据EC30的方法,其中,通过使用闪存来实现大容量存储器。
EC42)根据EC30的方法,其中,大容量存储器为固态驱动器。
EC43)根据EC30的方法,其中,第一I/O接口、第二I/O接口、转换单元和大容量存储器被实现为统一组件。
EC44)根据EC43的方法,其中,统一组件为驱动单元,并且该方法还包括经由启动器单元生成第一存储协议命令。
EC45)根据EC44的方法,其中,通过使用闪存来实现大容量存储器。
EC46)根据EC28的方法,其中,至少部分地通过专用逻辑来实现转换。
EC47)根据EC28的方法,其中,经由至少一个专用存储缓冲器来执行转换。
EC48)根据EC28的方法,其中,转换包括执行由硬件状态机所定义的状态转换。
EC49)根据EC28的方法,其中,转换包括执行由微编码定义的状态转换。
EC50)根据EC28的方法,其中,转换包括在嵌入式处理器上运行软件代理。
EC51)一种设备,包括:
用于接收第一存储协议命令的第一I/O接口装置;
用于输出第二存储协议命令的第二I/O接口装置;以及
转换装置,用于将所接收的第一存储协议命令的至少一些转换为第二存储协议命令,转换包括将第一存储协议命令的且为第一格式的第一存储协议释放命令转换为第二存储协议命令的且为第二格式的第二存储协议释放命令。
EC52)根据EC51的设备,其中,释放命令是包括至少一个逻辑块地址的逻辑块释放命令。
EC53)根据EC51的设备,还包括用于接收并响应第二存储协议命令的大容量存储装置。
EC54)根据EC53的设备,还包括用于生成第一存储协议命令的启动装置。
EC55)根据EC54的设备,还包括用于接收第一存储协议命令并将第一存储协议命令转发至第一I/O接口装置的扩展装置。
EC56)根据EC51的设备,其中,第一I/O接口装置、第二I/O接口装置和转换装置被实现为统一组件。
EC57)根据EC56的设备,其中,统一组件为桥接单元,所述设备还包括用于生成第一存储协议命令的启动装置以及用于接收并响应第二存储协议命令的大容量存储装置。
EC58)根据EC51的设备,其中,第一存储协议与SCSI协议兼容,而第二存储协议与ATA协议兼容。
EC59)根据EC58的设备,其中,第一存储协议释放命令为SCSI UNMAP命令,而第二存储协议释放命令为ATA数据集管理命令。
EC60)根据EC58的设备,其中,第一存储协议释放命令为写入数据模式的命令。
EC61)根据EC60的设备,其中,写入数据模式的命令是WRITE SAME命令和FORMAT命令中的所选择的一个。
EC62)根据EC60的设备,其中,数据模式与预定标准一致。
EC63)根据EC51的设备,其中,第一存储协议与SAS协议兼容,而第二存储协议与SATA协议兼容。
EC64)根据EC53的设备,其中,通过使用闪存来实现大容量存储器。
EC65)根据EC53的设备,其中,大容量存储器为固态驱动器。
EC66)根据EC53的设备,其中,第一I/O接口装置、第二I/O接口装置、转换装置和大容量存储装置被实现为统一组件。
EC67)根据EC66的设备,其中,统一组件为驱动单元,并且该设备还包括用于生成第一存储协议命令的启动装置。
EC68)根据EC67的设备,其中,通过使用闪存来实现大容量存储器。
EC69)根据EC51的设备,其中,转换装置包括专用逻辑。
EC70)根据EC51的设备,其中,转换装置包括至少一个专用存储缓冲器。
EC71)根据EC51的设备,其中,转换装置包括硬件状态机。
EC72)根据EC51的设备,其中,转换装置包括微编码状态机。
EC73)根据EC51的设备,其中,转换装置包括在嵌入式处理器上运行的软件代理。
EC74)一种方法,包括:
接收与第一协议相关联的第一格式的逻辑块地址释放信息;以及
将第一格式的逻辑块地址释放信息转换为与第二协议相关联的第二格式。
EC75)根据EC74的方法,其中,第一协议包括小型计算机系统接口(SCSI)协议,而第二协议包括AT附件(ATA)协议。
EC76)根据EC74的方法,其中,第一协议包括ATA协议,而第二协议包括SCSI协议。
EC77)根据EC74的方法,其中,逻辑块地址释放信息包括释放命令。
EC78)根据EC77的方法,其中,释放命令包括释放用户数据和保护信息中的至少一个的命令。
EC79)根据EC74的方法,其中,逻辑块地址释放信息包括释放状态。
EC80)根据EC74的方法,其中,将第一格式的逻辑块地址释放信息转换为第二格式包括将SCSI UNMAP(未映射)命令转换为ATA数据集管理命令。
EC81)根据EC74的方法,还包括确定与逻辑块地址释放信息相关联的用户数据或保护数据中的一个是否能够被独立地释放。
EC82)根据EC81的方法,还包括如果确定与逻辑块地址释放信息相关联的用户数据或保护数据中的一个能够被独立地释放,则就独立地释放用户数据或保护数据中的一个。
EC83)根据EC74的方法,还包括接收与第一协议相关联的第一格式的电能损耗信息。
EC84)根据EC83的方法,还包括将第一格式的电能损耗信息转换为与第二协议相关联的第二格式。
EC85)根据EC84的方法,其中,将第一格式的电能损耗信息转换为第二格式包括将电能损耗基元(primitive)或电能损耗命令中的一个转换为用于固化数据的基元或命令中的一个。
EC86)根据EC84的方法,其中,将第一格式的电能损耗信息转换为第二格式包括:将SCSI电能损耗基元转换为ATA转储清除高速缓存命令(ATA flush cache command)。
EC87)根据EC74的方法,还包括:接收以与第一协议相关联的第一格式写入数据模式的命令。
EC88)根据EC87的方法,还包括:将第一格式的写入数据模式的命令转换为与第二协议相关联的第二格式。
EC89)根据EC88的方法,其中,写入数据模式的命令包括WRITE SAME命令或FORMAT命令中的一个。
EC90)根据EC89的方法,其中,基于所转换的写入数据模式的命令来释放用户数据或保护数据中的至少一个。
EC91)根据EC74的方法,其中,将第一格式的逻辑块地址释放信息转换为第二格式包括:将SATA逻辑块地址块对齐转换为SCSI逻辑块地址块对齐。
EC92)一种嵌入在计算机可读介质上的计算机程序产品,包括:
用于接收与第一协议相关联的第一格式的逻辑块地址释放信息的计算机代码;以及
用于将第一格式的逻辑块地址释放信息转换为与第二协议相关联的第二格式的计算机代码。
EC93)一种设备,包括:
桥接器,用于接收与第一协议相关联的第一格式的逻辑块地址释放信息,并将第一格式的逻辑块地址释放信息转换为与第二协议相关联的第二格式。
EC94)一种方法,包括:
接收与第一协议相关联的第一格式的电能损耗信息;以及
将第一格式的电能损耗信息转换为与第二协议相关联的第二格式;
其中,将第一格式的电能损耗信息转换为第二格式包括:将电能损耗基元(primitive)或电能损耗命令中的一个转换为用于固化数据的基元或命令中的一个。
EC95)一种嵌入在计算机可读介质上的计算机程序产品,包括:
用于接收与第一协议相关联的第一格式的电能损耗信息的计算机代码;以及
用于将第一格式的电能损耗信息转换为与第二协议相关联的第二格式的计算机代码;
其中,将第一格式的电能损耗信息转换为第二格式包括将电能损耗基元(primitive)或电能损耗命令中的一个转换为用于固化数据的基元或命令中的一个。
EC96)一种设备,包括:
桥接器,用于接收与第一协议相关联的第一格式的电能损耗信息,并且用于将第一格式的电能损耗信息转换为与第二协议相关联的第二格式;
其中,将第一格式的电能损耗信息转换为第二格式包括将电能损耗基元(primitive)或电能损耗命令中的一个桥式转换为用于固化数据的基元或命令中的一个。
EC97)一种方法,包括:
确定与逻辑块地址相关联的存储器的至少一部分的释放状态;
基于该确定而生成释放状态信息;以及
将释放状态信息发送至一装置。
EC98)根据EC97的方法,其中,释放状态信息包括用于表示与逻辑块地址相关联的存储器的至少一部分是否被释放的指示符。
EC99)根据EC98的方法,其中,当与逻辑块地址相关联的存储器的至少一部分被分配时,指示符表示映射状态。
EC100)根据EC98的方法,其中,当与逻辑块地址相关联的存储器的至少一部分被释放时,指示符表示未映射状态。
EC101)根据EC97的方法,还包括针对释放状态查询与逻辑块地址相关联的存储器的至少一部分。
EC102)根据EC101的方法,其中,通过查询来启动释放状态的确定。
EC103)根据EC102的方法,其中,查询包括发送释放状态查询命令和释放命令中的至少一个。
EC104)根据EC97的方法,还包括指定从与逻辑块地址相关联的存储器的至少一部分中释放的数据。
EC105)根据EC104的方法,其中,利用命令或模式页(mode page)来指定被释放的数据或者将返回用于释放数据的数据的格式中的一个。
EC106)根据EC104的方法,其中,被释放的数据包括用户数据或保护数据中的至少一个的至少一部分。
EC107)根据EC97的方法,其中,与逻辑块地址相关联的存储器的至少一部分包括多个逻辑块地址扇区中的一个、一个逻辑块地址扇区或者逻辑块地址扇区中的一部分。
EC108)根据EC97的方法,其中,将释放状态信息发送至所述装置包括如果未映射的存储块被读取,则发送故障状态(bad state)。
EC109)根据EC97的方法,还包括检测写入数据模式的命令。
EC110)根据EC109的方法,其中,写入数据模式的命令包括WRITE SAME命令或FORMAT命令中的一个。
EC111)根据EC109的方法,其中,基于写入数据模式的命令来释放用户数据或保护数据中的至少一个。
EC112)根据EC97的方法,还包括:将与保护数据分开的用户数据存储在与逻辑块地址相关联的存储器的至少一部分中。
EC113)根据EC97的方法,其中,闪存控制器将释放状态信息发送至所述装置。
EC114)根据EC97的方法,其中,所述装置包括协议芯片或基于协议的缓冲器中的至少一个。
EC115)一种嵌入在计算机可读介质上的计算机程序产品,包括:
用于确定与逻辑块地址相关联的存储器的至少一部分的释放状态的计算机代码;
用于基于该确定而生成释放状态信息的计算机代码;以及
用于将释放状态信息发送至一装置的计算机代码。
EC116)一种设备,包括:
存储控制器,用于确定与逻辑块地址相关联的存储器的至少一部分的释放状态,基于该确定生成释放状态信息,并用于将释放状态信息发送至一装置。
EC117)一种方法,包括:
确定固态硬盘是否将被断电;以及
如果确定固态硬盘将被断电,则固化存储在固态硬盘上的数据。
EC118)根据EC117的方法,其中,固化存储在固态硬盘上的数据包括发出固化数据的命令。
EC119)根据EC118的方法,其中,固化数据的命令包括转储清除高速缓存命令。
EC120)根据EC118的方法,其中,固化数据的命令包括以下命令中的一个或多个:
SATA睡眠命令,
SATA待机命令,
SATA立即待机命令,
SATA转储清除高速缓存命令,
SATA转储清除高速缓存Ext命令,
SATA空闲命令,和
SATA立即空闲命令。
EC121)根据EC118的方法,其中,固化数据的命令包括转储清除高速缓存ext命令。
EC122)根据EC118的方法,其中,固化数据的命令包括睡眠命令。
EC123)根据EC118的方法,其中,固化数据的命令包括待机命令。
EC124)根据EC118的方法,其中,固化数据的命令包括立即待机命令。
EC125)根据EC118的方法,其中,固化数据的命令包括空闲命令。
EC126)根据EC118的方法,其中,固化数据的命令包括立即空闲命令。
EC127)根据EC118的方法,其中,确定对固态硬盘断电是否作为电能循环的一部分。
EC128)根据EC127的方法,其中,电能循环为错误恢复的结果。
EC129)根据EC128的方法,其中,桥接器发出固化数据的命令。
EC130)根据EC129的方法,还包括:在桥接器发出固化数据的命令之后,执行电能循环。
EC131)根据EC117的方法,还包括向固态硬盘发送命令,以检验与固态硬盘相关联的超级电容器或电池中的一个。
EC132)根据EC131的方法,其中,通过启动器发送检验与固态硬盘相关联的超级电容器或电池中的一个的命令。
EC133)根据EC132的方法,其中,通过桥接器发送检验与固态硬盘相关联的超级电容器或电池中的一个的命令。
EC134)根据EC117的方法,还包括从固态硬盘接收信息。
EC135)根据EC134的方法,其中,信息包括表示上次检验与固态硬盘相关联的超级电容器或电池中的一个的状态。
EC136)根据EC135的方法,其中,固态硬盘发送表示与固态硬盘相关联的超级电容器或电池中的一个上次被检验的状态。
EC137)根据EC134的方法,其中,信息包括与固态硬盘相关联的超级电容器或电池中的一个的检验结果。
EC138)根据EC135的方法,其中,结果表示超级电容器的检验的成功或失败。
EC139)一种嵌入在计算机可读介质上的计算机程序产品,包括:
用于确定固态硬盘是否将被断电的计算机代码;以及
用于如果确定固态硬盘将被断电、则固化存储在固态硬盘上的数据的计算机代码。
EC140)一种设备,包括:
用于确定固态硬盘是否将被断电以及如果确定固态硬盘将被断电、则固化存储在固态硬盘上的数据的装置。
EC141)根据EC140的设备,其中,该装置包括桥接器。
系统
图1示出了提供存储系统逻辑块地址释放管理和数据固化的系统的实施方式的所选细节。在一些实施方式中,系统100将第一格式的逻辑块地址释放信息转换为第二格式。在一些实施方式中,系统100发送逻辑块地址释放状态信息。在一些实施方式中,系统100固化存储在SSD上的数据。
如图所示,系统100可以包括一个或多个启动器102。启动器102可以耦接至一个或多个扩展器104并与其进行通信。在这种情况下,扩展器104可以表示任何适当的开关。此外,一个或多个桥接器106可以被定位成使得从启动器102和/或扩展器104传输的信息在传送至一个或多个存储装置108之前被一个或多个桥接器106接收。
在各个实施方式中,一个或多个桥接器106可以包括一个或多个串行SCSI(SAS)桥接器。此外,在各个实施方式中,一个或多个存储装置108可以包括一个或多个串行ATA(SATA)驱动器。在这种情况下,系统100可以作为具有SAS桥接器的SAS系统进行操作,以将串行SCSI协议(SSP)信息或串行管理协议(SMP)信息转换为SATA和ATA信息。
如图进一步所示,存储装置108可以包括一个或多个超级电容器110。应当注意,尽管在包括超级电容器110的情况下讨论了存储装置108,但超级电容器110可以等效地表示一个或多个电池。应当注意,在另一实施方式中,超级电容器110可以不包括在存储装置108中。例如,在一个实施方式中,存储装置108可以在没有超级电容器110或电池的情况下运行。
应当注意,桥接器106可以从启动器102接收各种信息和/或将各种信息发送至存储装置108。在操作中,一个或多个桥接器106可以接收逻辑块地址释放信息,诸如释放一个或多个存储装置108的至少一部分的命令。在本说明书的上下文中,释放信息是指与存储器的释放相关联的任何信息。例如,在各个实施方式中,释放信息可以包括释放命令(即,释放存储器等的一个或多个部分的命令)、分配或释放状态和/或与释放相关联的任何其他信息。该释放命令可以为与第一协议相关联的第一格式,诸如SSP或SMP格式。
然后,一个或多个桥接器106可以将SSP或SMP格式的释放命令转换为与第二协议相关联的第二格式,诸如与一个或多个存储装置108(例如,SATA驱动器)相关联的ATA格式。在一个实施方式中,将第一格式的逻辑块地址释放信息转换为第二格式可以包括将SCSIUNMAP命令转换为ATA数据集管理命令(例如,使用TRIM设置和/或位等)。然后,存储装置(例如,驱动器)108可以响应于所转换的释放命令来释放数据。
在一些实施方式中,一个或多个桥接器包括:第一I/O接口,能够接收第一协议的命令;转换单元,能够将来自第一协议的命令转换为第二协议;以及第二I/O接口单元,能够输出第二协议中的所转换的命令。在各个实施方式中,转换单元包括以下装置中的一个或多个:专用硬件逻辑、专用存储缓冲器、硬件状态机、微编码状态机和在嵌入式处理器上运行的软件代理。
应当注意,释放命令可以包括释放存储在存储装置108中的用户数据、保护数据/信息以及用户和保护数据的命令。此外,释放命令可以包括释放LBA阵列、LBA扇区和/或LBA扇区的一部分的命令。
在本说明书的上下文中,保护数据是指存储在存储器中的用于确保用户数据的精确性和/或有效性的任何数据。在这种情况下,用户数据是指存储在存储器中的不为保护数据的任何数据。
还应当注意,释放信息转换不限于释放命令。例如,在一个实施方式中,桥接器106可以将任何SCSI信息转换为ATA命令。这些命令可以包括数据查询、电能通知(例如,诸如NOTIFY基元等的电能损耗基元等)和各种其他信息。
此外,桥接器106并非必需限于在一个方向上转换信息。桥接器106还可以转换从存储装置108传送来的信息。例如,在一个实施方式中,可以从存储装置108发送释放状态。在这种情况下,逻辑块地址释放信息可以包括释放状态。在各个实施方式中,该状态可以响应于发送至存储装置108的查询或其他命令。
在另一实施方式中,可以使用桥接器106将SATA逻辑块地址块对齐信息转换为SCSI逻辑块地址块对齐信息。在这种情况下,将第一格式的逻辑块地址释放信息转换为第二格式可以包括将SATA逻辑块地址块对齐转换为SCSI逻辑块地址块对齐。块对齐可以为奇数或偶数,或者可以具有一些其他对齐。
在一个实施方式中,一个或多个桥接器106和/或与其相关联的逻辑可以接收与第一协议相关联的第一格式的逻辑块地址块对齐信息。然后,桥接器106和/或与其相关联的逻辑可以将第一格式的逻辑块地址块对齐信息转换为与第二协议相关联的第二格式。在这种情况下,将第一格式的逻辑块地址块对齐信息转换为第二格式可以包括将SATA逻辑块地址块对齐转换为SCSI逻辑块地址块对齐。
在一些情况下,可以独立地释放存储在存储装置108中的用户数据和保护数据。在一个实施方式中,可以确定是否可以独立地释放与逻辑块地址释放信息相关联的用户数据或保护数据中的一个。作为选择,一个或多个桥接器106可以进行这种确定。
如果确定可以独立地释放与逻辑块地址释放信息相关联的用户数据或保护数据中的一个,则可以独立地释放用户数据和/或保护数据。在一个实施方式中,可以基于用户数据或保护数据的模式来进行这种确定。
例如,用户数据和/或保护数据可以说明一种模式,使得可以释放存储器中除完全产生模式的一个数据之外的任何数据。在这种情况下,可以在LBA阵列、LBA扇区和/或LBA扇区的一部分中发生释放。
在操作中,可以确定与逻辑块地址相关联的存储装置108的至少一部分的释放状态。在一个实施方式中,可以通过一个或多个存储装置108的一个或多个部件来确定释放状态。例如,可以通过存储装置108的控制器来确定释放状态。在另一实施方式中,可以通过与存储装置108相关联的芯片和/或逻辑来确定释放状态。
一旦确定了释放状态,就可以生成释放状态信息。在这种情况下,可以通过与存储装置108相关联的任何部件或逻辑来生成释放状态信息。在一个实施方式中,这些部件还可以将释放状态信息发送至一个或多个装置。
在这种情况下,该装置可以包括查询释放状态信息的装置(例如,存储控制器等)。在一个实施方式中,释放状态信息可以包括用于表示与逻辑块地址相关联的存储器的至少一部分是否被释放的指示符。作为选择,指示符可以表示与逻辑块地址相关联的存储器的至少一部分何时被分配的映射状态。
作为另一选择,指示符可以表示与逻辑块地址相关联的存储器的至少一部分何时被释放的未映射状态。在另一实施方式中,将释放状态信息发送至该装置可以包括如果读取未映射存储块则发送故障状态。例如,如果试图读取被释放的存储器或存储器的一部分,则可以利用故障状态指示来表示存储器部分的释放状态。
可以以各种方式来启动释放状态确定。例如,在一个实施方式中,可以存在针对释放状态的查询。在这种情况下,可以通过查询启动释放状态。查询可以为各种形式。例如,查询可以包括发送释放状态查询命令和/或释放命令。
一旦从存储装置108的至少一部分中释放数据,则可以利用用于记录或指定已经被释放的数据的命令、模式页面或任何其他技术来指定已被释放的数据。此外,可以使用命令或模式页来指定将被返回用于释放后的数据的数据格式。在这种情况下,格式可以包括数据、标记或数据和标记的组合。
应当注意,被释放的数据可以包括用户数据、保护数据或者用户数据和保护数据。此外,与被释放的逻辑块地址相关联或者被提供有释放状态信息的存储器的一部分可以包括多个逻辑块地址扇区的一个、一个逻辑块地址扇区或者逻辑块地址扇区的一部分。
在一个实施方式中,可以基于数据模式来释放存储器或者存储器的一部分。例如,如果所存储的数据(例如,用户数据、保护数据或者用户和保护数据等)表现出一种模式,则可以释放该数据的至少重复部分。作为选择,可以通过命令、模式页或其他技术来指定将被释放的该数据。
在一个实施方式中,可以检测写入数据模式的命令。例如,写入数据模式的命令可以包括WRITE SAME命令、FORMAT命令或者能够使模式被写入的任何其他命令中的一个。在这种情况下,可以基于写入数据模式的命令来释放用户数据或保护数据中的至少一个。应当注意,用户数据可以与保护数据分开存储在存储器中。
在操作中,确定至少一个存储装置108是否将被断电。例如,在一个实施方式中,一个启动器102可以确定存储装置108将被断电。在另一实施方式中,与存储装置108相关联的存储控制器或协议芯片可以确定存储装置108将被断电。在又一实施方式中,一个或多个桥接器106可以确定至少一个存储装置108是否将被断电。在各个实施方式中,可以基于断电/掉电命令、睡眠命令和立即待机命令的一个或多个的接收和/或发出(诸如在桥接器106中或通过桥接器106)来确定存储装置108将被断电。
在又一实施方式中,可以接收(例如,通过桥接器106、存储装置的控制器等)与第一协议相关联的第一格式的电能损耗信息。在这种情况下,第一格式的电能损耗信息可以被转换为与第二协议相关联的第二格式。例如,电能损耗信息可以包括SCSI电能损耗基元(例如,NOTIFY基元等)。因此,将第一格式的电能损耗信息转换为第二格式可以包括将SCSI电能损耗基元转换为ATA转储清除高速缓存命令。在一个实施方式中,转换还可以包括将电能损耗基元转换为睡眠命令或立即待机命令。
此外,将第一格式的电能损耗信息转换为第二格式可以包括将电能损耗基元或电能损耗命令转换为用于固化数据的基元或命令。在本说明书的上下文中,固化数据是指将易失性存储器(例如,高速缓存)中的数据写至非易失性存储器(例如,闪存)中或者可选地将高速缓存中的数据写至诸如闪存的存储器中的任何技术。因此,电能损耗基元或命令可以被桥接器106接收,并且可以被转换为用于固化所存储的数据的任何命令或基元。
如果确定存储装置108将被断电,则可以固化存储在存储装置108上的任何数据。应当注意,可以固化存储在存储装置108上的任何或所有数据。例如,被固化的数据可以包括用户数据、保护数据或者用户数据和保护数据。
在各个实施方式中,存储装置108可以将信息发送至任何桥接器106或任何启动器102中的任一个或多个。例如,信息可以包括表示上次检验超级电容器110的状态。在这种情况下,结果可以表示超级电容器110的检验成功或失败。
桥接器106并非必需限于接收信息。在一个实施方式中,桥接器106还可以转换从存储装置108传送来的信息。例如,在一个实施方式中,可以从存储装置108发送释放状态。在各个实施方式中,该状态可以响应于发送至存储装置108的查询或者另一命令。
图2示出了提供存储系统逻辑块地址释放管理和数据固化的系统的另一实施方式的所选细节。系统200类似于系统100(图1),但是概念上使用单个SAS驱动器来代替SAS桥接器和SATA驱动器的每个组合。更具体地,如图所示,系统200可以包括一个或多个启动器202。启动器202可以耦接至一个或多个扩展器204并与其进行通信。此外,启动器202和扩展器204可以耦接至一个或多个存储装置208并与其进行通信。
在各个实施方式中,一个或多个存储装置208可以包括一个或多个串行附件SCSI(SAS)驱动器。在这种情况下,系统200可以作为具有SAS驱动器的串行SCSI(SAS)系统进行操作。在各个其他实施方式中,一个或多个存储装置208可以包括任何类型的固态硬盘。
如图进一步所示,一个或多个存储装置208可以包括一个或多个超级电容器210。应当注意,尽管在包括超级电容器210的情况下讨论了存储装置208,但超级电容器210可以等效地表示一个或多个电池。应当注意,在另一实施方式中,超级电容器210可以不包括在存储装置208中。例如,在一个实施方式中,存储装置208可以在没有超级电容器210或电池的情况下运行。
在结构和操作方面,系统200类似于系统100(图1)。更具体地,图2的启动器、扩展器和超级电容器类似于图1的对应元件,并且一个或多个存储装置208(图2)类似于耦接至一个或多个存储装置108的一个或多个桥接器106的组合(图1)。因此,与图1相关联的这些元件及其操作的先前描述等效地应用于图2,同时理解与图1的桥接器相关联的功能代替地与图2的存储装置206(诸如SAS驱动器)相关联(除了与图1的扩展器相关联的功能与图2的扩展器相关联之外)。
其他实施方式包括图1的变型,其中,启动器更直接地耦接至SAS桥接器,诸如没有介入扩展器。相关的实施方式包括图2的变化,其中,启动器更直接地耦接至一个或多个存储器(例如,SAS驱动器),诸如没有介入扩展器。其他实施方式包括图1的变化,其中,启动器更直接地耦接至一个或多个存储装置(例如,SATA驱动器),诸如没有介入扩展器和SAS桥接器。其他实施方式包括图1的变化,其中,一个或多个SAS桥接器分别耦接至多个存储装置(诸如两个SAS桥接器分别耦接至相应的一对SATA驱动器)。图1和图2的先前描述可应用于前述变化。
操作
图3A示出了用于将第一格式的逻辑块地址(LBA)释放信息转换为第二格式的实施方式300A的所选细节。如图所示,接收与第一协议相关联的第一格式的逻辑块地址释放信息。参见操作301。
在本说明书的上下文中,逻辑块地址是指能够表示存储在存储装置上的数据块的位置的任何项。例如,在一个实施方式中,逻辑块地址可以包括数据块在存储器中的地址。在另一实施方式中,逻辑块地址可以包括存储器的一部分(例如,LBA扇区、LBA扇区的一部分等)的地址。
存储器可以包括任何类型的存储器。例如,存储器可以包括一个或多个固态硬盘(SSD)。在这种情况下,SSD可以包括RAM(例如,SRAM、DRAM等)。
在另一实施方式中,SSD可以包括闪存。在这种情况下,闪存可以包括非易失性闪存。在各个实施方式中,闪存可以包括单层单元(SLC)闪存和/或多层单元(MLC)闪存。
此外,在本说明书的上下文中,释放信息是指与存储器的释放相关联的任何信息。例如,在各个实施方式中,释放信息可以包括释放命令(即,释放存储器的一个或多个部分的命令等)、分配或释放状态和/或与释放相关联的任何其他信息。在这种情况下,释放是指能够释放存储器中的逻辑块地址或其一部分的任何技术。
除接收逻辑块地址释放信息之外,将第一格式的逻辑块地址释放信息转换为与第二协议相关联的第二格式。参见操作303。第一协议和第二协议可以包括用于物理地在装置(例如,计算装置、外围装置等)之间连接和/或传送数据的任何协议或标准集合。
在一个实施方式中,第一协议和第二协议可以包括小型计算机系统接口(SCSI)协议和AT附件(ATA)协议中的一个。例如,第一协议可以包括SCSI协议,而第二协议可以包括ATA协议。作为另一实施例,第一协议可以包括ATA协议,而第二协议可以包括SCSI协议。
在这些情况下,与协议相关联的格式可以包括协议的任何标准格式。例如,与SCSI协议相关联的格式可以包括用于释放命令、包含电能或释放信息的任务或基元以及传送信息的任何其他技术的标准SCSI格式。类似地,与ATA协议相关联的格式可以包括用于释放命令、电能命令、基元和任何其他信息的标准ATA格式。
因此,在一个实施方式中,SCSI格式的逻辑块地址释放信息可以被转换为与ATA协议相关联的ATA格式。在另一实施方式中,ATA格式的逻辑块地址释放信息可以被转换为与SCSI协议相关联的SCSI格式。当然,这些格式仅为实施例,因为与协议相关联的任何格式的释放信息可以被转换为与另一协议相关联的任何其他格式。
图3B示出了用于将SCSI格式的LBA释放信息转换为ATA格式的实施方式300B的所选细节。
如图所示,确定是否在桥接器(例如,SAS桥接器等)处接收到信息。参见操作302。在一个实施方式中,可以在桥接器中进行该确定。在这种情况下,桥接器可以包括用于进行这种确定以及用于进行任何其他决定和/或执行其他功能的逻辑和/或硬件。
如果在桥接器处接收到信息,则确定该信息是否包括SCSI释放命令。参见操作304。如果该信息包括SCSI释放命令,则将SCSI释放命令转换为ATA释放命令。参见操作306。
在一个实施方式中,该转换可以包括将SCSI UNMAP命令转换为ATA DATA SETMANAGEMENT命令。一旦SCSI释放命令被转换为ATA释放命令,就发送命令并释放数据。参见操作308。释放可以包括释放用户数据、保护数据或用户数据和保护数据二者。
在本说明书的上下文中,保护数据是指存储在存储器中的用于确保用户数据的精确性和/或有效性的任何数据。在这种情况下,用户数据是指存储在存储器中不是保护数据的任何数据。
如图进一步所示,确定该信息是否包括SCSI释放状态查询。参见操作310。应当注意,在一个实施方式中,并不需要发送释放查询来接收释放状态信息。例如,存储装置可以自动地发送释放状态信息(例如,在刚释放时、以一定时间隔等)。
如果该信息包括SCSI释放状态查询,则将SCSI释放状态查询转换为ATA释放状态查询。参见操作312。一旦SCSI释放状态查询被转换为ATA释放状态查询,就将释放状态查询发送至存储装置(例如,SATA驱动器等)。参见操作314。
然后,确定是否接收到ATA状态响应。参见操作316。在这种情况下,ATA状态响应是指表示作为ATA格式的释放状态的任何响应。该状态可以包括用户数据释放状态和/或保护数据释放状态。
如果接收到ATA状态响应,则将ATA状态响应转换为与SCSI协议相关联的格式。参见操作318。然后,可以将释放状态响应发送至启动该查询的装置(例如,存储控制器等)。参见操作320。
除确定被桥接器接收的信息是否包括释放状态信息之外,还确定所接收的信息是否包括WRITE SAME命令或其他模式启动命令(例如,FORMAT命令等)。参见操作322。如果接收到的信息包括WRITE SAME命令或其他模式启动命令,则可以基于该命令而释放存储在存储装置中的数据。参见操作324。
在这种情况下,WRITE SAME命令、FORMAT命令和包括写入模式的其他命令可以用于确定可释放存储或专用于存储复制数据(例如,在初始数据之后的数据的任何模式等)的存储位置。该数据可以包括用户数据和/或保护数据。此外,应当注意,尽管在一个实施方式中桥接器可以用于进行这种检测,但在其他实施方式中,不同的装置可以用于进行这种检测(例如,存储控制器、协议芯片等)。因此,可以在不具有桥接器的系统中实现这种技术。
以这种方式,可以使用WRITE SAME或其他类似的写入命令而在ATA和SCSI中自动地确定用户数据和/或保护数据是否可以被独立地释放。例如,可以接收命令(例如,WRITESAME命令、FORMAT命令等)来写入与第一协议相关联的第一格式的数据模式。然后,可以将第一格式的写入数据模式的命令转换为与第二协议相关联的第二格式。可以基于所转换的写入模式的命令来释放用户数据和/或保护数据。
还可以确定被桥接器接收的信息是否包括电能损耗通知。参见操作326。如果检测到电能损耗通知,则可以固化存储在存储器中的数据。参见操作328。
例如,如果桥接器接收到NOTIFY(POWER LOSS)基元,则桥接器可以将该该信息传送至SSD,以使其可以固化数据。在各个实施方式中,可以通过利用带外数据(OOB)命令使通信链接中断或者通过发送另一命令来转换(translate)该信息。在一个实施方式中,可以发送FLUSH CACHE ATA命令作为桥接器接收NOTIFY(POWER LOSS)基元的结果。在另一实施方式中,电能损耗基元可以被转换为睡眠命令或立即待机命令。
以这种方式,可以将从启动器传送至桥接器以及从桥接器传送至SSD的释放信息用于释放LBA,在一个实施方式中,桥接器可以被配置为支持最大的UNMAP LBA计数和最大块描述符计数。这些可以以与桥接器相关联的固件为基础。
应当注意,ATA协议和SCSI协议均具有将会释放存储块的命令。例如,ATA协议利用数据集管理命令来释放块。在表1中示出了该命令的格式。
表1
然后,主机将数据发送至装置作为“引脚数据”。在表2中示出了该数据的格式。
表2
计数字段可以确定将发送多少个512字节数据结构。在表3中示出了引脚数据条目(pin data entry)的格式。
表3
引脚数据条目0
63:48范围长度
47:0LBA值
应当注意,用于该范围的值“0”使得条目无效。另外,可以以上升LBA顺序来对数据分类,并且这些数据可以不重叠。
此外,在识别数据中存在使主机确定关于该装置的信息的信息。在表4中示出了该数据。应当注意,用于改变支持的命令为装置配置识别命令。
表4
SCSI协议还使能块(例如,LBA)的释放。例如,在SBC-3中具有能够实现精简配置(例如,基于正好足够和准时使得诸如存储空间的资源被灵活地分配给服务器)的多个命令和相关字段。在BLOCK LIMITS VPD PAGE中,存在一些相关字段。例如,最大UNMAP LBA计数字段为可以在单个命令中未映射的LBA的最大数目。如果可以不映射的LBA的最大数目仅通过包含在UNMAP参数列表中的数据量来限制,则可以将该字段设置为FFFF_FFFFh。值0表示该字段不被支持。
最大UNMAP块描述符计数为可以包含在用于UNMAP命令的参数数据中的UNMAP块描述符的最大数。如果没有限制,则该字段可以被设置为FFFF_FFFFh。如果该字段不被支持,则可以将该字段设置为0。
FORMAT UNIT也是相关的。当对精简配置的装置进行格式化时,如果能够进行保护,则保护字段应当为64’hFFFF_FFFF_FFFF_FFFF。如果不能进行保护,则该装置可以基于初始化模式描述符而被格式化为初始化模式。应当注意,初始化模式类型字段可以被设置为“00”(例如,一个装置使用缺省模式等),以及初始化模式长度可以被设置为“0”。“初始化模式类型”的其他值将基于被发送至该装置的数据来产生模式。因此,该装置可以被指示为利用所有FF的模式“X,Y,Z,”保护字节、所有LBA的UNMAP来进行格式化,或者由于如何存储数据而导致没有未映射的LBA。
读取容量命令还具有用于精简配置的多个相关参数字段。在表5中示出了这些字段。
表5
表6示出了保护解码字段。在这种情况下,如果能够进行保护且P_I_EXPONENT字段为非零,则对于每个LBA存在多于一个的保护字段。
表6
在一些情况下,当校验命令被发给未映射块时,其可以具有特殊操作。如果BYTECHK为“0”,则该装置可以假设已经针对未映射块校验了LBA。如果BYTECHK为“1”,则该装置将利用检查条件来终止命令。
UNMAP命令可以用于从精简配置的装置中释放LBA。一旦执行了UNMAP功能,来自未映射LBA的数据可以不被任何其他LBA读取。此外,来自未映射LBA的数据可以是不确定的或者可以是确定的。此外,UNMAP操作之后的来自未映射LBA的数据不应当变化(例如,未映射LBA的多重读取将总是返回相同的数据)。此外,当数据未映射时,如果能够进行保护,则可以不将保护数据设置为64’hFFFF_FFFF_FFFF_FFFF。
在表7中示出了UNMAP命令中的相关字段。
表7
参数列表可以使结构被建立为传送UNMAP块描述符的列表。在表8中示出了描述符中的相关字段。
表8
应当注意,当传递多个描述符时,LBA可以为任何顺序并且可以重叠。如果LBA加上块的数量超过了装置的容量,则可以返回检查条件。另外,如果逻辑块的数量为0,则这通常不是错误条件。如果UNMAP块描述符中的逻辑块的数量超过VPD允许的设置或者UNMAP描述符的数量超过VPD设置,则可以返回检查条件。
WRITE SAME命令可以用于将同一数据写入许多个LBA。然而,根据LBDATA和PBDATA位,该信息可以是不相同的。如果设置UNMAP位,则块应当为未映射的且如果可能则不被写入。当进行未映射时,用户数据可以为0,以及保护数据可以为64’hFFFF_FFFF_FFFF_FFFF。如果WRITE SAME设置不满足该条件,则即使当设置UNMAP位时也不发生写入。
应当注意,期望如果数据被读回,则预期利用和不利用UNMAP位设置而发出的WRITE SAME命令具有精确的相同结果。在表9中示出了可能数据模式的置换。
表9
如果由于没有更多资源而不能够完成写入,则可以返回检查条件来通知启动器写入失败,但是资源正在被释放并且应当再次尝试写入。如果不期望具有用于该命令的空间,则可以将状态返回至该条件的启动器。
应当注意,目前,在SAT中描述了FORMAT翻译。然而,存在可以提高驱动器寿命的最优化。如果LBA将要在所有用户字段中写入所有的0’s且没有保护,或者在用户字段中写入所有的0’s、在保护字段中写入64’hFFFF_FFFF_FFFF_FFFF,则可以使用DATA SETMANAGEMENT/TRIM命令。这可以基于FORMAT命令中的IP位。
在一些实施方式中,将SCSI FORMAT命令转换为ATA DATA SET MANAGEMENT命令至少部分地如下进行操作。UNMAP命令具有包含8字节LBA的一些数量的UNMAP块描述符以及指定在LBA处开始释放多少块的4字节数量的逻辑块。描述符不按任何特定的顺序(例如,较低编码的LBA的描述符可以跟随具有较高编码的LBA的描述符,反之亦然)。此外,由描述符指定的逻辑块可以重叠。描述符可以以任何顺序指定释放。
通过将特征寄存器的位0(有时被称为TRIM位)设置为一来指定数据集管理命令/TRIM操作。由该命令提供的数据是均具有6字节LBA值和2字节长度的描述符的列表。根据LBA值,以上升顺序来对列表进行分类。
将UNMAP转换为TRIM包括从每一个描述符中提取逻辑块信息的LBA和数量。如果任一LBA在两个最高有效字节中具有任何非零位,则存在错误。如果多个逻辑块中的任一个在两个最高有效字节的一个中具有任何非零位,则描述符被处理为在多个逻辑块值中的两个最高有效字节中的一个中均不具有非零位的描述符的集合,并且该集合覆盖与原始描述符相同的LBA。以上升顺序来对从所有描述符得到的LBA进行分类,并且作为描述符以分类的顺序提供(截短至最低有效的六个字节)给TRIM命令(与逻辑块值的对应号一起,长度被截短至最低有效的两个字节)。
通过TRIM位设置从SCSI UNMAP转换为SATA IO SEND FPDMA命令是类似的,由于只有基本的传送不同,因此执行相同的描述符转换。
应当注意,ATA协议和SCSI协议命令以及本文所提供的相关描述是命令和字段的实施例,这些命令和字段可以通过使用上述技术和功能性而被转换至不同的格式或者从不同的格式转换来。在其他实施方式中,第一协议格式的任何命令或信息均可以被转换为第二协议格式。
图4A示出了用于发送LBA释放状态信息的实施方式400A的所选细节。如图所示,确定与逻辑块地址相关联的存储器的至少一部分的释放状态。参见操作401。
存储器可以包括任何类型的存储器。例如,存储器可以包括固态硬盘(SSD)。在这种情况下,SSD可以包括RAM(例如,SRAM、DRAM等)。
在另一实施方式中,SSD可以包括闪存。在这种情况下,闪存可以包括非易失性闪存。在各个实施方式中,闪存可以包括单层单元(SLC)闪存和/或多层单元(MLC)闪存。
此外,在本说明书的上下文中,释放状态信息是指与存储器的释放状态相关联的任何信息。例如,在各个实施方式中,释放状态信息可以包括用于表示与逻辑块地址相关联的存储器的一部分是否被分配或释放的指示符、用于表示与逻辑块地址相关联的整个存储器是否被分配或释放的指示符和/或与释放状态相关联的任何其他信息。在这种情况下,释放是指能够释放存储器中的逻辑块地址或其一部分的任何技术。
一旦确定了与逻辑块地址相关联的存储器的至少一部分的释放状态,就基于该确定生成释放状态信息。参见操作403。因此,基于存储器的确定状态,生成释放状态信息。
然后,将释放状态信息发送至装置。参见操作405。该装置可以包括能够接收释放状态信息的任何装置。例如,该装置可以包括协议芯片、基于协议的缓冲器、桥接器、存储控制器和/或能够接收释放状态信息的任何其他装置中的至少一个。在一个实施方式中,协议芯片和/或基于协议的缓冲器可以与小型计算机系统接口(SCSI)协议和AT附件(ATA)协议中的一个相关联。
类似地,可以确定释放状态并且可以使用各种装置生成释放状态。例如,在一个实施方式中,可以通过存储控制器(例如,闪存控制器等)生成和/或发送释放状态信息。在另一实施方式中,桥接器可以生成释放状态信息并将其发送至装置。在又一实施方式中,协议芯片可以生成释放状态信息并将其发送至装置。
图4B示出了用于发送LBA释放状态信息的另一实施方式400B的所选细节。如图所示,确定信息是否被接收。参见操作402。在一个实施方式中,可以在一个或多个闪存控制器或存储装置的其他控制器中进行该确定。在这种情况下,闪存控制器可以包括用于进行这种确定以及用于进行任何其他决定和/或执行附加功能的逻辑和/或硬件。
如果信息被接收,则确定接收到的信息是否包括WRITE SAME命令或其他模式启动命令(例如,FORMAT命令等)。参见操作404。如果接收到的信息包括WRITE SAME命令或其他模式启动命令,则可以基于该命令而释放存储在存储装置中的数据。参见操作406。
在这种情况下,WRITE SAME命令、FORMAT命令和包括写入模式的其他命令可以用于确定可以释放存储或专用于存储复制数据(例如,在初始数据之后的数据的任何模式等)的存储位置。此外,应当注意,尽管在一个实施方式中闪存控制器可以用于进行这种检测,但在其他实施方式中,不同的装置也可以用于进行这种检测(例如,桥接器、协议芯片等)。因此,可以在实现桥接器的系统中实施这种技术。
除确定接收到的信息是否包括WRITE SAME命令或其他模式启动命令之外,还确定该信息是否包括释放命令。参见操作408。如果该信息包括释放命令(例如,SCSI释放命令、ATA释放命令等),则可以基于该命令而释放存储在存储装置中的数据。在一个实施方式中,这可以包括将SCSI UNMAP命令转换为ATA DATA SET MANAGEMENT命令。释放可以包括对用户数据、保护数据或者用户数据和保护数据二者释放。
如图进一步所示,确定接收到的信息是否包括释放状态查询。参见操作410。应当注意,在一个实施方式中,不需要发送释放来接收释放状态信息。例如,存储装置可以自动地发送释放状态信息(例如,在刚刚释放时,以定时间隔等)。
如果该信息包括SCSI释放状态查询,则生成释放状态信息。参见操作412。然后,可以将释放状态信息发送至能够接收释放状态信息的装置。参见操作414。
图5A示出了用于固化存储在SSD上的数据的实施方式500A的所选细节。在操作中,确定固态硬盘是否将被断电。参见操作501。可以基于不同的标准来确定固态硬盘将被断电。
例如,在一个实施方式中,可以基于接收断电命令来确定固态硬盘将被断电。在另一实施方式中,可以基于接收循环电能命令来确定固态硬盘将被断电。在又一实施方式中,可以基于接收错误信号来确定固态硬盘将被断电。
如果确定固态硬盘将被断电,则固化存储在固态硬盘上的数据。参见操作503。在本说明书的上下文中,固化数据是指将高速缓存或易失性存储器中的数据写入诸如闪存的非易失性存储器中的任何技术。
在一个实施方式中,固化存储在固态硬盘上的数据可以包括发出固化数据的命令。在这种情况下,固化数据的命令可以被发给固态硬盘或与其相关联的存储控制器。固化数据的命令可以包括固化数据的任何命令。
例如,在一个实施方式中,固化数据的命令可以包括转储清除高速缓存命令。在另一实施方式中,固化数据的命令可以包括睡眠命令。在又一实施方式中,固化数据的命令可以包括立即待机命令。
在一个实施方式中,可以确定固态硬盘将被断电为电能循环的一部分。在这种情况下,电能循环可以为错误恢复(error recovery)的结果。因此,装置(例如,桥接器、存储控制器等)可以发出固化数据的命令。在一个实施方式中,在装置发出固化数据的命令之后,可以对数据固化,并且固态硬盘可以进行电能循环。
图5B示出了用于固化存储在SSD上的数据的另一实施方式500B的所选细节。如图所示,确定是否接收到对固态硬盘断电的命令。参见操作502。在一个实施方式中,可以确定固态硬盘将被断电为电能循环的一部分。例如,电能循环可以为错误恢复的结果。
如果接收到命令以对固态硬盘断电,则确定是否发出转储高速缓存命令。参见操作504。如果确定发出转储高速缓存命令,则就发出转储高速缓存命令。参见操作506。在一个实施方式中,桥接器可以发出转储高速缓存命令。
进一步确定是否发出睡眠命令。参见操作508。如果确定发出睡眠命令,则就发出睡眠命令。参见操作510。在一个实施方式中,桥接器可以发出睡眠命令。
另外,确定是否发出立即待机命令。参见操作512。如果确定发出立即待机命令,则发出立即待机命令。参见操作514。同样,在一个实施方式中,桥接器可以发出立即待机命令。
如果确定没有发出转储清除高速缓存命令、睡眠命令和立即待机命令,则在对固态硬盘进行断电之前发出另一个数据固化命令。参见操作516。一旦发出了数据固化命令,就发送断电或电能循环命令。参见操作518。
应当注意,通过在断电之前发出固化数据的命令(例如,转储清除高速缓存命令、睡眠命令、立即待机命令或一些其他命令等),可以在不具有超级电容器或电池的情况下实施固态硬盘。这可以增加固态硬盘的可靠性。
然而,在一个实施方式中,固态硬盘可以包括超级电容器或电池。例如,固态硬盘可以具有超级电容器或电池,使得当去除电能时,固态硬盘可以将所有数据转储清除到闪存而没有丢失数据。在这种情况下,启动器或桥接器可以发送命令至固态硬盘以检验超级电容器或电池。另外,固态硬盘可以返回关于上次检验超级电容器或电池的状态。
因此,除确定针对固态硬盘是否接收断电命令之外,在一个实施方式中,还可以确定是否发送命令来检验与固态硬盘相关联的一个超级电容器或电池。参见操作520。如果确定检验超级电容器或电池,则发送检验与固态硬盘相关联的超级电容器或电池的命令。参见操作522。
在一个实施方式中,可以通过启动器发出检验与固态硬盘相关联的超级电容器或电池的命令。在另一实施方式中,可通过桥接器发出检验与固态硬盘相关联的超级电容器或电池的命令。
还可以确定是否从固态硬盘接收到任何信息。该信息可以包括任何类型的信息。例如,在一个实施方式中,可以从固态设备接收释放状态信息。
此外,可以确定信息是否接收到包括表示与固态硬盘相关联的超级电容器或电池上次被检测的状态的信息。参见操作524。在这种情况下,固态硬盘可以发送表示与固态硬盘相关联的超级电容器或电池上次被检测的状态。
使用该信息。可以识别出超级电容器或电池上次被检测。参见操作526。基于该识别,可以进一步确定超级电容器或电池的检验应当被启动。
除确定是否接收到超级电容器或电池的状态之外,还可以确定是否接收到超级电容器或电池检验的结果。参见操作528。如果接收到检验结果,则识别该结果。参见操作530。
在这种情况下,检验结果可以表示超级电容器或电池的检验的成功或失败。基于这些结果,可以确定应当启动超级电容器或电池的另一检验。以这种方式,可以确定超级电容器或电池的状态,并且可以确定是否检验超级电容器或电池。
图5C示出了用于检验SSD的超级电容器或电池的实施方式500C的所选细节。在操作中,SSD任选地被提供有其将被断电的预先通知。参见操作511。然后,将SSD断电。参见操作513。随后,对SSD通电。参见操作515。然后,关于数据是否被正确地固化而查询SSD。参见操作517。如果数据被正确固化,则任选地做出SSD的超级电容器或电池用于操作的报告。参见操作519。
在各个实施方式中,通过桥接器(诸如图1的任一桥接器106)、扩展器(诸如图1的扩展器104或图2的扩展器204中的任一个)和/或启动器(诸如图1的启动器102或图2的启动器202中的任一个)或者在它们的控制下来执行图中的一个或多个操作。在各个实施方式中,图中所涉及的SSD对应于SATA装置或SAS驱动器,以具有包含在其中或者与其耦接的ESD(诸如超级电容器)。例如,SSD包含在图1的一个或多个存储装置108中,并且超级电容器包括在一个或多个超级电容器110中。对于另一实施例,SSD包括在图2的一个或多个存储装置208中,并且超级电容器包括在一个或多个超级电容器210中。
在各个实施方式中,通过图1、图2中的元件的所有或任何部分和/或所描述的其变型的任何一个或多个来实施关于图3A、图3B、图4A、图4B、图5A和/或图5B所描述的操作的所有或任何部分。例如,图3A的操作301和303由图1的桥接器106实施,或者可选地由图2的一个或多个存储装置208实施。对于另一实施例,图3B的操作312由图1的桥接器106实施,或者可选地由图2的一个或多个存储装置208实施。对于又一实施例,图4A的操作401和403由图1的一个或多个存储装置108实施,或者可选地由图2的一个或多个存储装置208实施。对于再一实施例,图4B的操作412和414由图1的一个或多个存储装置108实施,或者可选地由图2的一个或多个存储装置208实施。对于再一实施例,图5A的操作501和图5B的操作522由图1的桥接器106实施,或者可选地由图2的一个或多个存储装置208实施。
图6示出了用于存储用户数据和保护数据的LBA扇区的所有或任何部分的实施方式600的所选细节。如图所示,LBA扇区可以分开地存储用户数据602和保护数据604。这可以被实施为使得在不扰乱包括在操作中的数据的情况下对用户数据602和或保护数据604分开地操作。
图7示出了根据另一实施方式700的用于发送LBA释放状态信息的实施方式的所选细节。如图所示,系统700包括一个或多个块或芯片702-704。在具有两个块或两个芯片(其中,一个为芯片上的协议引擎/缓冲器,另一个为闪存控制器)的配置中,可以以受控方式实施释放处理和读取数据。这可以以各种方式来完成。
例如,在一个实施方式中,闪存控制器702可以将用于UNMAPPED LBA的数据发送至与协议芯片704相关联的协议缓冲器。然而,在这种情况下,协议缓冲器可能需要模拟特定的特性,因为缓冲器可能不具有裁剪LBA的任何知识。此外,在这种情况下,可能不适当地实施BYTE CHK=1的VERITY命令。作为选择,可以利用闪存控制器702中的恒定字段。
在另一实施方式中,闪存控制器702可以向协议芯片704或协议缓冲器报告LBA已被释放。在读取时,协议缓冲器可以随后需要生成数据。当协议缓冲器可以具有更多的异常分支(hook)来生成该信息时,这可以更加灵活地考虑保护字段。除数据完整性字段(DIF)保护之外,这还可以更灵活地提供保护技术。当随机数据在保护字段中时,可以实施其他技术,因为这可以考虑具有BYTE CHK=1的VERIFY命令来生成CHECK条件。
在又一实施方式中,闪存控制器702在块中可以具有两个独立的数据段。例如,其可以具有用户数据和保护数据。如果用户数据和保护数据被独立地读取、写入和/或释放,则可以支持任何保护方案。另外,可以支持FORMAT和WRITE SAME命令的大多数技术。表10示出了根据一个实施方式的可以支持的选择。
表10
因此,通过使用系统700,闪存控制器702可以向协议芯片704、块或者基于协议的缓冲器(块或者一段块未被映射)返回信息。另外,代替数据,闪存控制器702可以向协议芯片704、块或者基于协议的缓冲器(块或者一段块未被映射)返回信息。此外,闪存控制器702可以向协议芯片704、块或者基于协议的缓冲器(块中的数据的一部分未被映射)返回块的一部分,并且返回用于映射后的一部分数据的数据。
如上所述,在一个实施方式中,闪存控制器可以接收命令或查询块的状态以确定该块是否被映射的其他数据。该命令或其他查询可以任选地包括参数,并且可以不需要将块中的数据提供给查询装置。这与字节检查等于1的读取校验不同,因为这可以要求启动器为块提供数据。此外,分开存储用户数据和保护数据可以考虑不使用保护的读取命令而在不扰乱保护数据的情况下进行操作。
SSD控制器
图8A示出了包括使用用于访问和控制非易失性存储器的映射的SSD控制器的SSD的实施方式的所选细节。SSD控制器800经由一个或多个外部接口810而通信地耦接至主机(未示出)。根据各个实施方式,外部接口810是以下接口中的一个或多个:SATA接口、SAS接口、PCIe接口、纤维通道接口、以太网接口(诸如10吉位以太网)、任何非标准版本的先前接口、定制接口(custom interface)或者用于互连存储和/或通信和/或计算装置的任何其他类型的接口。例如,在一些实施方式中,SSD控制器800包括SATA接口和PCIe接口。
SSD控制器800进一步经由一个或多个器件接口890而通信地耦接至包括一个或多个存储装置(诸如闪存装置892)的非易失性存储器899。根据各个实施方式,器件接口890是以下接口中的一个或多个:ONFI兼容接口(诸如ONFI 2.2兼容接口)、触发模式兼容闪存接口、任何非标准版本的先前接口、定制接口或者用于连接至存储装置的任何其他类型的接口。
在一些实施方式中,闪存器件892包括一个或多个独立的闪存芯片(flash die)894。根据特定的一个闪存器件892的类型,可任选和/或选择性地并行访问特定闪存装置892中的多个闪存芯片894。闪存器件892仅仅代表能够通信地耦接至SSD控制器800的一种类型的存储装置。在各个实施方式中,可以使用任何类型的存储装置,诸如SLC NAND闪存、MLC NAND闪存、NOR闪存、只读存储器、静态随机存取存储器、动态随机存取存储器、铁磁存储器、相变存储器、赛道存储器(racetrack memory)或者任何其他类型的存储装置或存储介质。
根据各个实施方式,器件接口890被组织为:一条或多条总线,每条总线均具有一个或多个闪存器件892;一个或多个总线组,每条总线均具有一个或多个闪存器件892,其中,通常并行地访问组中的总线;或者闪存器件892在器件接口890上的任何其他组织。
继续参照图8A,SSD控制器800具有一个或多个模块,诸如主机接口811、数据处理821、缓冲器831、映射841、再循环器851、ECC 861、器件接口逻辑891和CPU 871。图8A所示的特定模块和互连仅代表一个实施方式,并且可以设想一些或所有模块以及未示出的附加模块的许多配置和互连。在第一实施例中,在一些实施方式中,具有两个或多个主机接口811来提供双端口(dual-porting)。在第二实施例中,在一些实施方式中,数据处理821和/或ECC 861与缓冲器831相结合。在第三实施例中,在一些实施方式中,主机接口811直接耦接至缓冲器831,并且数据处理821任选和/或选择性地对存储在缓冲器831中的数据进行操作。在第四实施例中,在一些实施方式中,器件接口逻辑891直接耦接至缓冲器831,并且ECC861任选和/或选择性地对存储在缓冲器831中的数据进行操作。
主机接口811经由外部接口810发送和接收命令和/或数据,并且在一些实施方式中,经由标签跟踪813来跟踪各个命令的进展。例如,命令包括指定要读取的地址(诸如LBA)和数据量(诸如LBA量(例如扇区)的数量)的读取命令,响应于此,SSD提供读取状态和/或读取数据。对于另一实施例,命令包括指定要写入的地址(诸如LBA)和数据量(诸如LBA量(例如扇区)的数量)的写入命令,响应于此,SSD提供写入状态和/或请求写入数据,并且任选地随后提供写入状态。对于又一实施例,命令包括指定不再需要被分配的地址(诸如LBA)的释放命令,响应于此,SSD相应地修改映射并任选地提供释放状态。对于再一实施例,命令包括超级电容器检验命令或数据固化成功查询,响应于此,SSD提供适当的状态。在一些实施方式中,主机接口811与SATA协议兼容,并通过使用NCQ命令而能够具有高达32个待决命令,每一个待决命令均具有表示为0至31的号码的唯一标签。在一些实施方式中,标签跟踪813能够将用于经由外部接口810接收的命令的外部标签与用于在利用SSD控制器800的处理期间用于跟踪该命令的内部标签相关联。
根据各个实施方式,进行以下处理中的一个或多个:数据处理821任选地和/或选择性地处理在缓冲器831和外部接口810之间发送的一些或所有数据;以及数据处理821任选地和/或选择性地处理存储在缓冲器831中的数据。在一些实施方式中,数据处理821使用一个或多个引擎823来执行以下处理中的一个或多个:格式化、重新格式化、自动译码以及任何其他数据处理和/或操作任务。
缓冲器831存储从外部接口810发送至器件接口890以及从器件接口890发送至外部接口810的数据。在一些实施方式中,缓冲器831附加地存储由SSD控制器800使用的系统数据(诸如一些或所有映射表)以管理闪存器件892。在各个实施方式中,缓冲器831具有用于数据的临时存储的存储器837、用于控制数据到和/或从缓冲器831的运动的DMA 833以及其他的数据移动和/或操作功能中的一个或多个。
根据各个实施方式,进行以下处理中的一个或多个:ECC 861任选和/或选择性地处理在缓冲器831和器件接口890之间发送的一些或所有数据;以及ECC861任选和/或选择性地处理存储在缓冲器831中的数据。
器件接口逻辑891经由器件接口890来控制闪存器件892。器件接口逻辑891能够根据闪存器件892的协议向闪存器件892发送数据和发送来自闪存器件892的数据。器件接口逻辑891包括调度893,以经由器件接口890选择性地顺次控制闪存器件892。例如,在一些实施方式中,调度893能够对闪存器件892进行队列操作,并且当对应的闪存器件892(或闪存芯片894)可用时,选择性地将这些操作发送至对应的一个闪存器件892(或闪存芯片894)。
映射841通过使用表格843而在外部接口810上使用的数据寻址与在器件接口890上使用的数据寻址之间进行转换,以将外部数据地址映射至非易失性存储器899中的位置。例如,在一些实施方式中,映射841经由由表格843提供的映射而将在外部接口810上使用的LBA转换为目标为一个或多个闪存芯片894的块和/或页地址。对于自从驱动制造或释放而从未被写入的LBA,映射指向缺省值以返回LBA是否被读取。例如,当处理释放命令时,修改映射,使得对应于释放的LBA的条目指定缺省值中的一个。在各个实施方式中,具有多个缺省值,其每一个均具有对应的指向器。多个缺省值使能读取一些释放的LBA(诸如在第一范围中)作为一个缺省值,而读取其他释放的LBA(诸如在第二范围中)作为另一缺省值,在各个实施方式中,通过闪存、硬件、固件、命令/原始自变量(primitive argument)/参数、可编程寄存器或者它们的各种组合来定义缺省值。
在一些实施方式中,再循环器851执行无用信息(garbage)收集。例如,在一些实施方式中,闪存器件892包含在可以重写之前必须被擦除的块。再循环器851能够诸如通过扫描由映射841维持的映射来确定闪存器件892的哪些部分正被有效使用(例如,代替释放而进行分配),或者能够通过擦除闪存器件892未使用(例如,释放)的部分来而使这些部分可用于写入。在又一些实施方式中,再循环器851能够移动存储在闪存器件892内的数据,以使闪存器件892的较大相邻部分可用于写入。
CPU 871控制SSD控制器800的各个部分。CPU 871包括CPU核881。根据各个实施方式,CPU核881为一个或多个单核或多核处理器。在一些实施方式中,CPU核881中的各个处理器核是多线程的。CPU核881包括指令和/或数据高速缓存和/或存储器。例如,指令存储器包含使CPU核881能够执行软件(有时称为固件)以控制SSD控制器800的指令。在一些实施方式中,由CPU核881执行的一些或所有固件被存储在闪存器件892上。
在各个实施方式中,CPU核871还包括:命令管理873,在命令进展的同时跟踪和控制经由外部接口810接收的命令;缓冲器管理875,控制缓冲器831的分配和使用;转换管理877,控制映射841;相干性管理879,控制数据寻址的一致性,并且避免诸如在外部数据访问和再循环数据访问之间的冲突;器件管理881,控制器件接口逻辑891;以及任选的其他管理单元。根据各个实施方式,没有由CPU 871执行的管理功能通过硬件、通过软件(诸如在CPU核881上或者在经由外部接口810连接的主机上执行的软件)或它们的任何组合来控制和/或管理,或者由CPU 871执行的管理功能的任何或所有管理功能通过硬件、软件(诸如在CPU核881上或者在经由外部接口810连接的主机上执行的软件)或它们的任何组合来控制和/或管理。
在一些实施方式中,CPU核871能够执行其他管理任务,诸如以下任务中的一个或多个:聚集和/或报告性能统计;实施SMART;控制电能顺序,控制和/或监测和/或调整电能损耗;响应电能故障;控制和/或监测和/或调整时钟速率以及其他管理任务。
各种实施方式包括计算主机闪存控制器,其类似于SSD控制器800并诸如经由采用主机接口811和/或外部接口810而与各种计算主机的操作相兼容。各种计算主机包括计算机、工作站计算机、服务器计算机、存储服务器、PC、膝上型计算机、笔记本计算机、上网计算机、PDA、媒体播放器、媒体记录器、数码相机、蜂窝手机、无线电话和电子游戏机的一种或任一组合。
在一些实施方式中,图7的系统700对应于SSD控制器800的所有或任何部分的实施。在一些实施方式中,经由类似于SSD控制器800的元件的元件来实施图7的闪存控制器702和/或协议芯片704的所有或任何部分。
在各个实施方式中,在单个IC、多管芯IC的单个管芯、多管芯IC的多个管芯或者多个IC上实施SSD控制器(或者计算主机闪存控制器)的所有或任何部分。例如,在与SSD控制器800的其他元件相同的管芯上实施缓冲器831。对于另一实施例,在与SSD控制器800的其他元件不同的管芯上实施缓冲器831。
图8B示出了包括图8A的SSD的系统的实施方式的所选细节。SSD 801包括经由器件接口890耦接至非易失性存储器899的SSD控制器800。SSD经由外部接口810耦接至主机802。在一些实施方式中,SSD 801(或其变化)对应于耦接至作为主机802进行操作的启动器的SAS驱动器或SATA驱动器。
图8C示出了包括图8A的SSD的系统的实施方式的所选细节。如图8B所示,SSD 801包括经由器件接口890耦接至非易失性存储器899的SSD控制器800。SSD经由外部接口810耦接至主机802,外部接口810又耦接至中间控制器803,然后经由中间接口804耦接至主机802。在各个实施方式中,SSD控制器800经由一个或多个中间级的其他控制器(诸如RAID控制器)而耦接至主机。在一些实施方式中,SSD 801(或者其变型)对应于SAS驱动器或SATA驱动器,以及中间控制器803对应于扩展器(其又耦接至启动器),或者可选地,中间控制器803对应于经由扩展器直接耦接至启动器的桥接器。
在各个实施方式中,SSD控制器和/或计算主机控制器与一个或多个非易失性存储器相结合而被实施为非易失性存储部件,诸如USB存储部件、CF存储部件、MMC存储部件、SD存储部件、记忆棒存储部件和xD图像卡存储部件。
其他信息
在各个实施方式中,电能损耗检测电路、电能损耗状态检测器、掉电命令接收器/解码器或者它们的任何组合均包括在SSD控制器的任何适当的元件中,并提供固化数据的请求。例如,掉电命令接收器/解码器均包括在一个或多个图8A的外部接口810中,并且能够从耦接至外部接口的计算和/或连接主机接收并解码掉电命令。
图9示出了可以实施各个先前实施方式的各种架构和/或功能的示例性系统900。如图所示,所提供的系统900包括连接至通信总线902的至少一个主机处理器901。系统900还包括主存储器904。控制逻辑(软件)和数据均被存储在采用随机存取存储器(RAM)形式的主存储器904中。
系统900还包括图形处理器906和显示器908,即,计算机监测器。在一个实施方式中,图形处理器906可以包括多个阴影模块、光栅化模块等。前述模块的每一个甚至可以位于单个半导体平台上以形成图形处理单元(GPU)。
在本说明书中,单个半导体平台可以指唯一单独的基于半导体的集成电路或芯片。应当注意,术语单个半导体平台还可以指模拟芯片上操作的具有增加连接性的多芯片模块,并且在利用传统的中央处理单元(CPU)和总线实施上进行实质性的改进。当然,各种模块还可以单独地定位或者根据用户的需求而定位在半导体平台的各种组合中。
系统900还可以包括次存储910。例如,次存储910包括硬盘驱动器和/或可移除存储驱动器以代表软盘驱动器、磁带驱动器、压缩盘驱动器等。可移除存储驱动器以已知的方式从可移除存储单元中进行读取和/或向可移除存储单元写入。
计算机程序或者计算机控制逻辑算法可以被存储在主存储器904和/或次存储910中。当执行计算机程序时,这些计算机程序使系统900能够执行各种功能。存储器904、存储910和/或任何其他存储为计算机可读介质的可能实施例。
在一个实施方式中,可以在主机处理器901、图形处理器906、能够具有主机处理器901和图形处理器906的至少一部分能力的集成电路(未示出)、芯片集(即,被设计为作为执行相关功能的单元进行工作和出售的集成电路组等)和/或用于该问题的任何其他集成电路的环境中,实施各个先前示图的架构和/或功能性。
此外,可以在通用计算机系统、电路板系统、专用于娱乐目的的游戏控制台、专用系统和/或任何其他期望系统的环境中实施各个先前示图的架构和/或功能性。
此外,尽管没有示出,但系统900可以耦接至网络(例如,电信网络、局域网(LAN)、无线网络、诸如因特网的广域网(WAN)、对等网络、电缆网络等)以用于通信。
示例性实施技术
在一些实施方式中,通过与计算机系统的处理兼容的规范来指定由计算主机闪存控制器或SSD控制器(诸如图8A的SSD控制器800)执行的所有或部分操作以及处理器、微处理器、芯片上系统、专用集成电路、硬件加速器或提供所有或部分上述操作的其他电路的各种组合。该规范与各种描述相一致,诸如硬件描述语言、电路描述、网表描述、掩码描述或布局描述。实例描述包括:Verilog、VHDL、SPICE、诸如PSpice的SPICE变量、IBIS、LEF、DEF、GDS-II、OASIS或其他描述。在各个实施方式中,处理包括解释、编译、模拟和合成的任何组合以生成、验证或指定适合于包括在一个或多个集成电路上的逻辑和/或电路。根据各个实施方式,每个集成电路都可以根据各种技术来设计和/或制造。技术包括可编程技术(诸如现场或掩码可编程栅极阵列集成电路)、半定制技术(诸如整体或部分基于单元的集成电路)和全定制技术(诸如基本上专用的集成电路)、任何它们的组合或者与集成电路的设计和/或制造相兼容的其他技术。
在一些实施方式中,通过一个或多个程序指令的执行和/或解释或者通过一个或多个源和/或脚本语言语句的解释和/或编辑,或者通过执行由编辑、翻译和/或解释在编程和/或脚本语言中表示的信息所产生的二进制指令,来执行如具有存储在其中的指令集合的计算机可读介质所描述的所有或部分操作的各种组合。语句与任何标准编程或脚本语言(诸如C、C+、Fortran、Pascal、Ada、Jave、VBsript和Shell)兼容。一个或多个程序指令、语言语句或者二进制指令任选地存储在一个或多个计算机可读存储介质元件上。在各个实施方式中,程序指令的一些、所有或各个部分被实现为一个或多个功能、例行程序、子例行程序、嵌入例行程序、过程、宏或其一部分。
总结
在描述中进行的特定选择仅仅是为了利于准备文本和附图,并且除非另有指定,否则选择本身不应当被理解为限于传达关于所描述实施方式的结构或操作的附加信息。选择的实施例包括:用于附图编号的的设计的特定组织或分配以及用于识别和参考实施方式的特征和元件的元件标示符(例如,编号或数字标示符)的特定组织或分配。
词语“包括,include”或“包括,including”明确旨在被解释为开放式范围的抽象描述逻辑集合,并且其并不意味着传达物理封闭,除非明确由词语“在...之内”跟随。
尽管为了清晰的描述和理解在一些细节上描述了前述实施方式,但本发明不限于所提供的细节。存在本发明的许多实施方式。所公开的实施方式是示例性的,并且不是限制性的。
应当理解,构造、配置和使用的许多变化均可能符合描述,并且均在所发布的专利的权利要求的范围内。例如,互连、功能单元位宽度、时钟速度和所使用的技术的类型可以根据每个部件块中的各个实施方式来变化。互连和逻辑所给定的名称仅是示例性的,并且不应当被理解为限制所描述的概念。流程图的顺序和配置以及流程图处理、动作和功能元件可以根据各个实施方式来变化。此外,除非专门有相反的陈述,否则所指定的值范围、所使用的最大和最小值或者其他特定说明(诸如闪存存储技术类型以及寄存器和缓冲器中的条目或存储的数量)仅是所描述的实施方式的范围、值或说明,并且期望在实施技术中进行改进和变化,并且不应当被理解为限制。
代替实施各种部件、子系统、操作、功能、例行程序、子例行程序、嵌入例行程序、过程、宏或其一部分所描述的内容,可以采用本领域已知的功能上等效的技术。还应当理解,可以选择性地在硬件(即,通用电路)或软件(即,经由编程控制器或处理器的某一方式)来实现实施方式的许多功能方面,作为依赖更快速处理(有助于先前硬件中的功能向软件迁移)和更高集成密度(有助于先前软件中的功能向硬件迁移)的设计约束和技术趋向的实施方式的功能。各个实施方式中的特定变化包括但不限于:分割不同;形式要素和结构不同;使用不同的操作系统和其他系统软件;使用不同的接口标准、网络协议或通信链路;以及当根据特定应用的唯一工程和商业约束来实施本文所描述概念时,期望有其他的变型。
通过超出所述实施方式的许多方面的最小实施所要求的范围外的细节和环境背景,已经详细描述了实施方式。本领域的技术人员应当意识到,一些实施方式省略了公开的部件或特征,而不改变剩余元件的基本操作。因此,应当理解,不要求所公开的许多细节来实施所描述的实施方式的各个方面。为了使剩余元件与现有技术相区别,省略的部件和特征不限于本文所描述的概念。
设计中的所有这些变型是对描述的实施方式所传达的技术的非本质变化。还应当理解,本文所描述的实施方式可以广泛应用于其他计算和网络应用,并且不限于所描述的实施方式的特定应用或工业。因此,本发明被理解为包括在所发布专利的权利要求范围内的所有可能的修改和变化。

Claims (20)

1.一种数据固化方法,包括:
在桥接器中,接收断电命令并且响应地将所述断电命令转换成数据固化命令;
从所述桥接器发送所述数据固化命令至固态硬盘;
响应于所述数据固化命令,将存储在所述固态硬盘上的数据固化,所述固化包括将易失性存储器中的数据写入至非易失性存储器,其中所述易失性存储器和所述非易失性存储器均位于所述固态硬盘中;以及
其中,被固化的所述数据包括用户数据和保护数据。
2.根据权利要求1所述的数据固化方法,其中,所述数据固化命令包括转储清除高速缓存命令、睡眠命令以及立即待机命令中的一个或多个。
3.根据权利要求2所述的数据固化方法,进一步包括确定所述转储清除高速缓存命令、所述睡眠命令以及所述立即待机命令未被发送,并且响应地发送另一数据固化命令。
4.根据权利要求3所述的数据固化方法,其中,被固化的所述数据存储在所述固态硬盘上。
5.根据权利要求1所述的数据固化方法,其中,所述非易失性存储器包括闪存。
6.根据权利要求1所述的数据固化方法,进一步包括所述桥接器接收从一个或多个启动器传输的信息。
7.根据权利要求6所述的数据固化方法,其中,所述桥接器包括一个或多个串行附件SCSI(SAS)桥接器。
8.根据权利要求1所述的数据固化方法,进一步包括所述桥接器向所述固态硬盘发送命令以检验所述固态硬盘的能量存储装置,所述能量存储装置包括超级电容器和电池中的一个或多个。
9.根据权利要求8所述的数据固化方法,进一步包括所述固态硬盘返回关于上次检验所述能量存储装置的状态。
10.一种数据固化系统,包括:
桥接器;
固态硬盘;
其中所述桥接器被使能以接收断电命令并且响应地将所述断电命令转换成数据固化命令;
其中,所述桥接器被进一步使能以发送所述数据固化命令至所述固态硬盘;
其中,所述系统被使能为响应于所述数据固化命令,对存储在所述固态硬盘上的数据进行固化,所述固化包括将易失性存储器中的数据写入至非易失性存储器,其中所述易失性存储器和所述非易失性存储器均位于所述固态硬盘中;以及
其中,被固化的所述数据包括用户数据和保护数据。
11.根据权利要求10所述的数据固化系统,其中,所述数据固化命令包括转储清除高速缓存命令、睡眠命令以及立即待机命令中的一个或多个。
12.根据权利要求11所述的数据固化系统,其中,确定所述转储清除高速缓存命令、所述睡眠命令以及所述立即待机命令未被发送,并且响应地发送另一数据固化命令。
13.根据权利要求12所述的数据固化系统,其中,被固化的所述数据存储在所述固态硬盘上。
14.根据权利要求10所述的数据固化系统,其中,所述非易失性存储器包括闪存。
15.根据权利要求10所述的数据固化系统,其中,所述桥接器被进一步被使能以接收从一个或多个启动器传输的信息。
16.根据权利要求15所述的数据固化系统,其中,所述桥接器包括一个或多个串行附件SCSI(SAS)桥接器。
17.根据权利要求10所述的数据固化系统,其中,所述固态硬盘包括能量存储装置,所述能量存储装置包括超级电容器和电池中的一个或多个,并且所述桥接器被使能为向所述固态硬盘发送命令以检验所述能量存储装置。
18.根据权利要求17所述的数据固化系统,其中,所述固态硬盘被使能以返回关于上次检验所述能量存储装置的状态。
19.一种数据固化系统,包括:
用于在桥接器中接收断电命令并且响应地将所述断电命令转换成数据固化命令的装置;
用于从所述桥接器发送所述数据固化命令至固态硬盘的装置;
用于响应于所述数据固化命令,对存储在所述固态硬盘上的数据进行固化的装置,所述固化包括将易失性存储器中的数据写入至非易失性存储器,其中所述易失性存储器和所述非易失性存储器均位于所述固态硬盘中;以及
其中,被固化的所述数据包括用户数据和保护数据。
20.根据权利要求19所述的数据固化系统,其中,所述数据固化命令包括转储清除高速缓存命令、睡眠命令以及立即待机命令中的一个或多个。
CN201410289009.9A 2009-03-27 2010-03-27 用于提供存储系统逻辑块地址的数据固化的方法及系统 Expired - Fee Related CN104077174B (zh)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US12/413,329 2009-03-27
US12/413,329 US20100250830A1 (en) 2009-03-27 2009-03-27 System, method, and computer program product for hardening data stored on a solid state disk
US12/413,307 US8090905B2 (en) 2009-03-27 2009-03-27 System, method, and computer program product for converting logical block address de-allocation information in a first format to a second format
US12/413,312 US8230159B2 (en) 2009-03-27 2009-03-27 System, method, and computer program product for sending logical block address de-allocation status information
US12/413,307 2009-03-27
US12/413,312 2009-03-27
CN201080023094.4A CN102449610B (zh) 2009-03-27 2010-03-27 用于提供存储系统逻辑块地址的释放管理的方法及设备

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201080023094.4A Division CN102449610B (zh) 2009-03-27 2010-03-27 用于提供存储系统逻辑块地址的释放管理的方法及设备

Publications (2)

Publication Number Publication Date
CN104077174A CN104077174A (zh) 2014-10-01
CN104077174B true CN104077174B (zh) 2018-05-01

Family

ID=42781949

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201410289009.9A Expired - Fee Related CN104077174B (zh) 2009-03-27 2010-03-27 用于提供存储系统逻辑块地址的数据固化的方法及系统
CN201080023094.4A Expired - Fee Related CN102449610B (zh) 2009-03-27 2010-03-27 用于提供存储系统逻辑块地址的释放管理的方法及设备

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201080023094.4A Expired - Fee Related CN102449610B (zh) 2009-03-27 2010-03-27 用于提供存储系统逻辑块地址的释放管理的方法及设备

Country Status (5)

Country Link
US (1) US9454319B2 (zh)
JP (2) JP5435763B2 (zh)
KR (1) KR101695364B1 (zh)
CN (2) CN104077174B (zh)
WO (1) WO2010111694A2 (zh)

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8671258B2 (en) 2009-03-27 2014-03-11 Lsi Corporation Storage system logical block address de-allocation management
CN104077174B (zh) 2009-03-27 2018-05-01 希捷科技有限公司 用于提供存储系统逻辑块地址的数据固化的方法及系统
US8090905B2 (en) 2009-03-27 2012-01-03 Sandforce, Inc. System, method, and computer program product for converting logical block address de-allocation information in a first format to a second format
US20110004718A1 (en) 2009-07-02 2011-01-06 Ross John Stenfort System, method, and computer program product for ordering a plurality of write commands associated with a storage device
US9792074B2 (en) 2009-07-06 2017-10-17 Seagate Technology Llc System, method, and computer program product for interfacing one or more storage devices with a plurality of bridge chips
US9411517B2 (en) 2010-08-30 2016-08-09 Vmware, Inc. System software interfaces for space-optimized block devices
US9052825B2 (en) 2010-08-30 2015-06-09 Vmware, Inc. System software interfaces for space-optimized block devices
JP5581256B2 (ja) 2011-03-28 2014-08-27 株式会社東芝 メモリシステム、コントローラ、およびメモリシステムの制御方法
US9170744B1 (en) 2011-04-06 2015-10-27 P4tents1, LLC Computer program product for controlling a flash/DRAM/embedded DRAM-equipped system
US9158546B1 (en) 2011-04-06 2015-10-13 P4tents1, LLC Computer program product for fetching from a first physical memory between an execution of a plurality of threads associated with a second physical memory
US8930647B1 (en) 2011-04-06 2015-01-06 P4tents1, LLC Multiple class memory systems
US9164679B2 (en) 2011-04-06 2015-10-20 Patents1, Llc System, method and computer program product for multi-thread operation involving first memory of a first memory class and second memory of a second memory class
US9176671B1 (en) 2011-04-06 2015-11-03 P4tents1, LLC Fetching data between thread execution in a flash/DRAM/embedded DRAM-equipped system
US9727570B2 (en) * 2011-06-03 2017-08-08 Apple Inc. Mount-time unmapping of unused logical addresses in non-volatile memory systems
US9116634B2 (en) 2011-06-10 2015-08-25 International Business Machines Corporation Configure storage class memory command
US9058275B2 (en) 2011-06-10 2015-06-16 International Business Machines Corporation Data returned responsive to executing a start subchannel instruction
US9021226B2 (en) 2011-06-10 2015-04-28 International Business Machines Corporation Moving blocks of data between main memory and storage class memory
US9021180B2 (en) 2011-06-10 2015-04-28 International Business Machines Corporation Clearing blocks of storage class memory
US9323668B2 (en) * 2011-06-10 2016-04-26 International Business Machines Corporation Deconfigure storage class memory command
US9069657B2 (en) 2011-12-12 2015-06-30 Apple Inc. LBA bitmap usage
US8756458B2 (en) 2011-12-12 2014-06-17 Apple Inc. Mount-time reconciliation of data availability
WO2013147894A1 (en) * 2012-03-30 2013-10-03 Intel Corporation Solid state drive management in power loss recovery
US9202577B2 (en) 2012-03-30 2015-12-01 Intel Corporation Solid state drive management in power loss recovery
KR101934519B1 (ko) 2012-11-26 2019-01-02 삼성전자주식회사 저장 장치 및 그것의 데이터 전송 방법
US9983992B2 (en) * 2013-04-30 2018-05-29 WMware Inc. Trim support for a solid-state drive in a virtualized environment
JP2014222528A (ja) * 2014-07-08 2014-11-27 株式会社東芝 メモリシステムおよび不揮発性メモリの制御方法
US9665451B2 (en) * 2014-10-07 2017-05-30 Sandisk Technologies Llc Method and device for distributing holdup energy to memory arrays
JP6142860B2 (ja) * 2014-11-05 2017-06-07 日本電気株式会社 ディスクアレイ装置、ディスク制御装置、ソリッドステートドライブ、ディスク制御方法、及びそのためのプログラム
US9992331B2 (en) * 2015-08-25 2018-06-05 Avaya Inc. Continuous call recording
DE102016213554A1 (de) * 2016-07-25 2018-01-25 Siemens Aktiengesellschaft Datenübertragung zwischen signaltechnisch sicheren Recheneinheiten
US10296454B2 (en) * 2017-03-14 2019-05-21 Vmware, Inc. Granular unmapping with variable addressing in a data store
US10198219B2 (en) * 2017-05-30 2019-02-05 Ati Technologies Ulc Method and apparatus for en route translation in solid state graphics systems
KR102418856B1 (ko) * 2017-11-02 2022-07-07 삼성전자주식회사 데이터 저장 장치
JP2019153363A (ja) * 2018-03-05 2019-09-12 株式会社東芝 磁気ディスク装置及びライト方法
US10789130B1 (en) 2018-03-09 2020-09-29 Toshiba Memory Corporation Capacitor energy management for unexpected power loss in datacenter SSD devices
TWI659359B (zh) * 2018-04-27 2019-05-11 慧榮科技股份有限公司 控制儲存裝置之方法
KR102649657B1 (ko) 2018-07-17 2024-03-21 에스케이하이닉스 주식회사 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템
KR102549346B1 (ko) * 2018-07-24 2023-06-28 삼성전자주식회사 솔리드 스테이트 드라이브 및 그의 메타 데이터 액세스 방법
CN109189694B (zh) * 2018-07-28 2020-09-08 华中科技大学 一种scm的数据编码方法及数据存储方法
US10909030B2 (en) * 2018-09-11 2021-02-02 Toshiba Memory Corporation Enhanced trim command support for solid state drives
CN111143249B (zh) * 2018-11-05 2023-08-08 佛山市顺德区顺达电脑厂有限公司 Pcie装置管理系统
KR20200068941A (ko) * 2018-12-06 2020-06-16 에스케이하이닉스 주식회사 메모리 시스템 내 저장된 데이터를 제어하는 방법 및 장치
US10976361B2 (en) * 2018-12-20 2021-04-13 Advantest Corporation Automated test equipment (ATE) support framework for solid state device (SSD) odd sector sizes and protection modes
TWI741296B (zh) * 2019-05-21 2021-10-01 慧榮科技股份有限公司 瞬間斷電回復處理方法及裝置以及電腦程式產品
CN111984441B (zh) 2019-05-21 2023-09-22 慧荣科技股份有限公司 瞬间断电回复处理方法及装置以及计算机可读取存储介质
TWI820473B (zh) * 2019-05-21 2023-11-01 慧榮科技股份有限公司 瞬間斷電回復處理方法及裝置以及電腦程式產品
KR20210069744A (ko) 2019-12-03 2021-06-14 삼성전자주식회사 스토리지 장치 및 그것의 데이터 백업 방법
CN111459864B (zh) * 2020-04-02 2021-11-30 深圳朗田亩半导体科技有限公司 一种存储器件及其制造方法
CN111752367B (zh) * 2020-06-12 2021-10-26 深圳忆联信息系统有限公司 固态硬盘功耗降低方法、装置、计算机设备和存储介质
CN113127389B (zh) * 2021-04-16 2022-08-26 无锡众星微系统技术有限公司 Sas stp业务加速方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101366011A (zh) * 2005-10-12 2009-02-11 存储器械有限公司 数据备份设备和备份数据的方法

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6173360B1 (en) * 1998-01-09 2001-01-09 International Business Machines Corporation Apparatus and method for allowing existing ECKD MVS DASD using an ESCON interface to be used by an open storage using SCSI-type interface
JP2000207137A (ja) * 1999-01-12 2000-07-28 Kowa Co 情報記憶装置
JP2001344076A (ja) * 2000-06-05 2001-12-14 Fujitsu Ltd ディスクアレイ装置
US20030212859A1 (en) * 2002-05-08 2003-11-13 Ellis Robert W. Arrayed data storage architecture with simultaneous command of multiple storage media
US7058749B2 (en) * 2003-11-13 2006-06-06 Dell Products L.P. System and method for communications in serial attached SCSI storage network
JP2005301419A (ja) * 2004-04-07 2005-10-27 Hitachi Ltd ディスクアレイ装置およびそのデータ処理方法
US7231545B2 (en) * 2004-08-05 2007-06-12 International Business Machines Corporation Apparatus and method to convert data from a first sector format to a second sector format
US7395396B2 (en) * 2004-08-30 2008-07-01 Hitachi, Ltd. Storage system and data relocation control device
KR100876084B1 (ko) * 2007-02-13 2008-12-26 삼성전자주식회사 플래시 저장 장치로 삭제 정보를 전달할 수 있는 컴퓨팅시스템
US20070005815A1 (en) * 2005-05-23 2007-01-04 Boyd William T System and method for processing block mode I/O operations using a linear block address translation protection table
US7631161B2 (en) * 2005-10-21 2009-12-08 International Business Machines Corporation Apparatus, system, and method for writing data to protected partitions of storage media
US20070121668A1 (en) * 2005-11-30 2007-05-31 Michael Moretti Firmware architecture of active-active fibre channel capability in SATA and SAS devices
US20070121621A1 (en) * 2005-11-30 2007-05-31 Michael Moretti Integrated active-active fibre channel capability in SATA and SAS devices
US7761657B2 (en) * 2006-07-10 2010-07-20 Hitachi, Ltd. Storage control system, control method for storage control system, port selector, and controller
US7809885B2 (en) * 2006-09-29 2010-10-05 Voom Technologies, Inc. Scalable hard-drive replicator
US8713283B2 (en) * 2007-06-08 2014-04-29 Sandisk Technologies Inc. Method of interfacing a host operating through a logical address space with a direct file storage medium
US20090063895A1 (en) * 2007-09-04 2009-03-05 Kurt Smith Scaleable and maintainable solid state drive
JP2009075643A (ja) * 2007-09-18 2009-04-09 Hitachi Ltd 記憶システム及びデータ再配置方法
JP2009187604A (ja) * 2008-02-04 2009-08-20 Fujitsu Ltd 磁気ディスク装置
JP4792062B2 (ja) * 2008-06-09 2011-10-12 株式会社東芝 メモリカードおよびメモリカードに搭載されるコントローラ
JP5107833B2 (ja) * 2008-08-29 2012-12-26 株式会社日立製作所 ストレージシステム及びストレージシステムの制御方法
CN104077174B (zh) 2009-03-27 2018-05-01 希捷科技有限公司 用于提供存储系统逻辑块地址的数据固化的方法及系统

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101366011A (zh) * 2005-10-12 2009-02-11 存储器械有限公司 数据备份设备和备份数据的方法

Also Published As

Publication number Publication date
CN102449610A (zh) 2012-05-09
KR101695364B1 (ko) 2017-01-11
WO2010111694A3 (en) 2011-01-13
US9454319B2 (en) 2016-09-27
KR20120023622A (ko) 2012-03-13
US20160018999A1 (en) 2016-01-21
JP5638686B2 (ja) 2014-12-10
CN102449610B (zh) 2014-07-16
WO2010111694A2 (en) 2010-09-30
JP2012522292A (ja) 2012-09-20
CN104077174A (zh) 2014-10-01
JP2014078257A (ja) 2014-05-01
JP5435763B2 (ja) 2014-03-05

Similar Documents

Publication Publication Date Title
CN104077174B (zh) 用于提供存储系统逻辑块地址的数据固化的方法及系统
CN103902403B (zh) 经由冗余阵列的非易失性存储器编程故障恢复
US8671259B2 (en) Storage system data hardening
JP6265746B2 (ja) 記憶アドレス空間と不揮発性メモリのアドレス、範囲、および長さとの間のマッピング/変換
KR101606718B1 (ko) 플래시 메모리 기반 데이터 저장을 위한 적응적 ecc 기술들
TWI702495B (zh) 對使用者資料執行選擇性下伏暴露映射之設備、方法以及多模式儲存裝置
CN103348330B (zh) 采用独立硅元件的动态较高级冗余模式管理
KR101562781B1 (ko) 비휘발성 스토리지에 대한 셀프-저널링 및 계층적 일치성
CN106055270B (zh) 用于超密集io数字保留的方法和装置
CN106990977A (zh) 主机看到的设备固件更新效果的管理
JP2014522066A (ja) 入出力デバイスとコンピューティングホストとの相互運用
US10296250B2 (en) Method and apparatus for improving performance of sequential logging in a storage device
Wu et al. Rethink the design of flash translation layers in a component-based view
US20230259453A1 (en) Memory system and method of controlling nonvolatile memory
CN102193869A (zh) 存储器管理与写入方法及其存储器控制器与储存系统
CN105224238B (zh) 存储器管理方法、存储器存储装置及存储器控制电路单元
CN111324414B (zh) Nvm存储介质模拟器
CN104142895B (zh) 写入方法、存储器控制器与存储器储存装置
CN102841853A (zh) 存储器管理表处理方法、存储器控制器与存储器储存装置
CN116069266B (zh) 磁盘漫游控制方法、装置、设备及计算机可读存储介质
Huang et al. Migration-based hybrid cache design for file systems over flash storage devices

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20160216

Address after: California, USA

Applicant after: Seagate Technology LLC

Address before: California, USA

Applicant before: LSI Corp.

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: 20180501