非阻塞命令的制作方法

文档序号:10699114阅读:256来源:国知局
非阻塞命令的制作方法
【专利摘要】提供处理贮存器命令的方法、系统和设备。基于来自主机的在贮存设备处接收的读取命令,数据可以从贮存设备处的贮存存储器中读取。可以在从贮存设备处的贮存存储器读取的数据中检测到错误。响应于错误,占位符数据可以从贮存设备传输至主机,而不传输读取命令失败或成功的指示。校正数据可以从贮存设备传输至主机,在该处主机替换占位符数据为校正数据。
【专利说明】
非阻塞命令
技术领域
[0001] 本申请设及胆存系统,更具体地,本申请设及胆存器命令。
【背景技术】
[0002] 主机可W传输胆存器命令至胆存设备W从胆存设备读取数据、向胆存设备写入数 据和/或在胆存设备上执行管理操作。主机可W是计算机、便携式计算机、台式计算机、刀片 式服务器、移动设备、平板电脑、手机、智能设备、个人数字辅助设备或任何其他处理设备。
[0003] 胆存设备可W执行胆存器命令。例如,当执行读取命令时,胆存设备可W从胆存设 备向主机传输数据。在一些示例中,胆存器命令可W符合诸如非易失性胆存器标准(NVMe) 的胆存协议。NVMe标准描述了基于PCI标准(PCIEi货)固态硬盘的寄存器接口、命令集和特 征集。PCre是俄勒冈州波特兰市PCI-SIG公司的注册商标。

【发明内容】

[0004] 提供一种处理胆存器命令的方法。来自主机的读取命令可W在胆存设备处接收。 读取命令可W包括对由标识符识别的数据的请求。基于标识符可W从胆存设备处的胆存存 储器中读取数据。在从胆存设备处的胆存存储器中读取的数据中可能检测到错误。占位符 (placeholder)数据可W从胆存设备传输至主机,而不传输读取命令失败或成功的指示,并 且占位符数据可W被指示给主机作为由标识符标识的数据。可生成不包含从胆存存储器读 取的数据中检测到的错误的校正数据。校正数据可W从胆存设备传输至主机,在该处,校正 数据替换主机中的占位符数据为由标识符标识的数据。
[0005] 提供一种处理胆存器命令的系统。该系统可W包括胆存存储器、读取模块、错误检 测模块、通信模块和错误校正模块。胆存存储器可W包含由标识符标识的数据,在该处来自 主机的读取命令请求该数据。读取模块可W从胆存存储器中读取数据。错误检测模块可W 在从胆存存储器读取的数据中检测到错误。通信模块可W传输占位符数据至主机,而不传 输读取命令成功或失败的指示,在该处,占位符数据被表示给主机作为由标识符标识的数 据。错误校正模块可W校正从胆存存储器读取的数据中的错误。通信模块可W将校正数据 传输至主机,在该处校正数据被表示给主机作为由标识符标识的数据。读取命令可W在校 正数据传输至主机之后完成(complete)。
[0006] 提供一种处理胆存器命令的胆存设备。胆存设备可W包括胆存存储器、错误检测 模块、通信模块和错误校正模块。胆存存储器可W包含数据。从主机接收到的读取命令可W 请求该数据。错误检测模块可W检测从胆存存储器读取的数据中的错误。通信模块可W传 输占位符数据至主机,而不传输读取命令失败或成功的指示,在该处占位符数据被表示为 由读取命令请求的数据。错误校正模块可W生成校正数据。通信模块可W传输校正数据至 主机,在该处,校正数据被表示为由读取命令请求的数据。校正数据和占位符数据可W被传 输W完成读取命令。
【附图说明】
[0007]可通过参考附图和说明更好地理解实施例。图中的组件不必要按比例绘制。此外, 图中相似引用的数字指示不同视图中相应的部分。
[000引图1说明了处理胆存器命令的系统;
[0009] 图2说明了处理胆存器命令的系统的示例性逻辑的流程图;W及
[0010] 图3说明了处理胆存器命令的系统的第二个示例性逻辑的流程图。
【具体实施方式】
[0011] 在一个示例中,提供一种W可W减少胆存器命令执行的阻塞的方式处理胆存器命 令的胆存设备。胆存设备可W包括诸如闪胆存存器的胆存存储器。此外,胆存设备可W包括 错误检测模块、通信模块和错误校正模块。
[0012] 胆存存储器可W包含数据。从主机接收的读取命令可W请求该数据。例如,读取命 令可W包含对包含在胆存存储器中的数据的逻辑数据块的请求。胆存设备中的错误检测模 块可W在从胆存存储器读取数据后检测数据中的错误。例如,错误检测模块可W包括可W 标识从胆存存储器读取的数据中的错误的纠错码化CC)逻辑。
[0013] 响应于检测到错误,胆存设备的通信模块可W传输占位符数据至主机,而不传输 读取命令失败或成功的指示,在该处占位符数据被表示为由读取命令请求的数据。例如,读 取命令可W包括对由偏移值标识的一页数据的请求,并且占位符数据可W被表示为由偏移 值标识的该页数据。占位符数据可W是任何数据。例如,占位符数据可W是从胆存存储器读 取的包含错误的数据。胆存设备的错误校正模块可W生成校正数据。通信模块可W传输校 正数据至主机,在该处校正数据被表示为由读取命令请求的数据。主机可W在主机缓存区 中替换占位符数据为校正数据。胆存设备可W在校正数据传输至主机时传输读取命令成功 完成的指示。
[0014] 图1说明了处理诸如读取命令102的胆存器命令的系统100。系统可W包括主机104 和胆存设备106。系统100可W包括更多的、更少的或不同的组件。例如,系统100可W包括仅 胆存设备106或胆存设备106的一部分。
[0015] 主机104可W是执行逻辑操作的任何设备,例如,主机104可W是计算机、便携式计 算机、台式计算机、刀片式服务器、移动设备、平板电脑、手机、智能设备、个人数字辅助设备 或任何其他计算设备。
[0016] 胆存设备106可W是响应于胆存器命令胆存和/或检索数据的设备。胆存设备106 可W是块胆存设备。胆存设备106的示例可W包括硬盘、闪存驱动器、固态硬盘、通用串行总 线化SB)驱动器、软盘和光盘驱动器。在一些示例中,胆存设备106可W是提供对胆存的块级 访问的任何类型设备,例如扫描仪或照相机。胆存设备106可W在主机104的内部或外部。胆 存设备106可W包括物理和数据层模块108、胆存协议模块110、后端模块112和胆存存储器 114。
[0017] 诸如读取命令102的胆存器命令,可W是指示或描述胆存设备106将要执行的和/ 或已执行的动作的任何数据结构。胆存器命令可W是由NVMe标准或任何其他胆存协议描述 的命令集(command set)中的命令。胆存器命令的示例可W包括输入/输出(I/0)命令和管 理命令。第一个I/O命令示例可W包括写入命令,执行时将一个或多个逻辑数据块写入到胆 存器。第二个I/O命令示例可W包括读取命令102,执行时从胆存器读取一个或多个逻辑数 据块,或者读取和/或写入胆存器的任何其他命令。管理命令可W在胆存器上执行管理动作 的任何命令。管理命令的示例可W包括中止命令、命名空间配置命令和/或与数据胆存器的 管理或控制相关的任何其他命令。
[0018] 胆存协议可W是提供对块设备的块级访问的任何协议。块设备是W块的形式胆存 和检索数据的设备。例如,块可W是逻辑数据块。胆存协议的示例可W包括NVMe、串行高级 技术附件(也称为串行ΑΤΑ或SATA)、SCSI (小型计算机系统接口)、光纤通道、 INFINIBAND? (INFINIBAND是俄勒冈州比佛顿市系统I/O公司的注册商标)、PATAQDE) 或传输数据至胆存设备的任何协议。
[0019] 读取命令102当执行时可逻辑数据块或不同于逻辑数据块的单位读取数据。 执行时,读取命令102可W读一个单位的数据、多个单位的数据、和/或多个单位的数据集。 读取命令102可W显式地标识要被读取的数据。此外,读取命令102可W隐式地标识要被读 取的数据,并且胆存设备106可W响应于读取命令102确定要读取的数据。
[0020] 物理和数据层模块108可W是如开放系统互连(OSI)模型(ISO/IEC 7498-1)中描 述的物理网络层和数据层的实现。物理网络层可W是媒体访问控制(MAC)层、10BASE-T层、 802. lla/b/g/n PHY层或任何其他物理网络层。数据层可W是PCIe层、光纤通道层、 802.1 la/b/g/n MC/LLC层或任何其他数据层。
[0021] 胆存协议模块110可W胆存协议整体或部分的实现。胆存协议模块110的示例可W 包括NVMe控制器、SATA控制器、SCSI控制器、光纤通道控制器和ΙΝΠΝ旧AND饭控制器。 在一些示例中,胆存协议可W符合于OSI模型中的传输层和/或网络层。
[0022] 胆存存储器114可W是其中胆存主机数据的任何计算机可读存储器。胆存存储器 114的示例可W包括闪存、二维闪存、Ξ维闪存、随机存取存储器(RAM)、只读胆存器(ROM)、 可擦可编程只读胆存器化PRCM)或任何其他类型的计算机可读存储器。胆存存储器114可W 是易失性的或非易失性的存储器。
[0023] 后端模块112可W是访问胆存存储器114的模块。后端模块112可W包括一个或多 个诸如读取命令102的胆存器命令的全部或部分实现。后端模块112可W包括一个公共逻辑 模块116、并行逻辑模块118和错误校正模块120。
[0024] 并行逻辑模块118可W是至少部分地由多个线程122并行执行的逻辑。相比之下, 公共逻辑模块116可W是至少部分地单线程的逻辑。单线程的逻辑可W在一次只能由一个 线程执行。然而,多线程可W执行单线程的逻辑,只是不能同时执行。公共逻辑模块116可W 包括或使用一个或多个锁定机制来限制对一个线程的在一次的访问。锁定机制的示例可W 包括互斥量、信号量和/或限制一次对一个线程的访问的任何其他机制。
[0025] 线程122可W是线程和/或进程。在一些示例中,每个线程122可W是一个相应的进 程。在其他示例中,每个线程122可W是一个进程的一部分。在其他示例中,线程122可W包 括进程和线程的组合。
[00%]公共逻辑模块116可W包括读取模块124、错误检测模块126、决策模块128和通信 模块130。公共逻辑模块116可W包括较少的、额外的或不同的组件。例如,并行逻辑模块118 可W包括读取模块124和/或错误检测模块126,而代替公共逻辑模块116。
[0027] 读取模块124可W是从胆存存储器114读取数据132的任何组件。读取模块124可W 包括从胆存存储器114检索数据132的任何组件。例如,读取模块124可W包括诸如直接存储 器访问(DMA)控制器、存储器控制器或磁盘控制器的硬件控制器。
[0028] 错误检测模块126可W是检测数据132中错误的任何组件。例如,错误检测模块126 可W包括部分的错误校正码化CC),其中错误校正码检测从胆存存储器114读取的数据132 中的错误。ECC可W基于由全部或部分数据132生成的代码来检测错误。此外或额外地,错误 检测模块126可W包含检查奇偶校验位的逻辑。在其他示例中,错误检测模块126可W包含 检测数据132中的或从胆存存储器112对数据132的读取中的任何错误的组件。
[0029] 错误校正模块120可W是校正从胆存存储器114读取的数据132中的一个或多个错 误的任何组件。在一些示例中,错误校正模块120可W包含部分的错误校正码化CC),其中错 误校正码基于全部或部分数据132生成的代码校正错误。此外或额外地,错误校正模块120 可W通过从胆存存储器114重新读取数据132和/或通过任何其他机制校正错误。
[0030] 决策模块128可W是当错误检测模块126检测到数据132中的错误时决定是否传输 占位符数据134至主机104W替代数据132的组件。如下面更详细地讨论,决策模块128可W 基于一个或多个标准做出确定。
[0031] 通信模块130可W是处理通过胆存协议模块110与主机104的通信的任何组件。例 如,通信模块130可W是传输数据132和/或占位符数据134至主机104的组件。信息的传输可 W意味着发起信息传输和/或信息的实际传输。例如,当通信模块130传输信息时,通信模块 130可W只是发起数据的传输。诸如物理和数据层模块108或通信接口(未示出)的第二组件 可W实际上传输信息至主机104。同样,从主机104接收信息可W意味着直接从主机104接收 信息或者间接地从实际上从主机104接收信息的第二组件接收信息。
[0032] 在系统100处理胆存器命令的操作期间,胆存设备106可W从主机104接收读取命 令102。例如,主机104可W已响应于试图读取文件或文件的一部分、而发送读取命令102至 胆存设备。
[0033] 胆存协议模块110可W从由物理和数据层模块108处理的一个或多个数据包 (packet)或其他单位的网络数据中提取命令102。
[0034] -个或多个线程122可W执行包含在并行逻辑模块118和公共逻辑模块116中的逻 辑,W完成读取命令102。胆存设备106可W与读取命令102并行地处理一个或多个胆存器命 令。在一些示例,一个或多个试图执行公共逻辑模块116中的逻辑的线程122可W变得阻塞 (block),等待正在执行公共逻辑模块116中逻辑的线程。一旦该线程完成公共逻辑模块116 中的逻辑的执行和/或另外释放公共逻辑模块116的逻辑上的线程锁,然后阻塞的线程122 中的一个可W开始执行公共逻辑模块116中的逻辑。公共逻辑模块116的一个或多个入口点 可W被认为是线程122的收敛点或阻塞点。
[0035] 减少线程在公共逻辑模块116的逻辑上保留锁的时间可W减少阻塞的线程122保 持锁定的时间。如下面更细节的描述,当检测到数据132中错误时,执行公共逻辑模块116的 逻辑的线程可W在错误校正模块120执行前或执行完成前释放公共逻辑模块116的逻辑上 的锁。
[0036] 数据132中的错误可W在并行逻辑模块118和/或公共逻辑模块116中检测到。例 如,当线程122中的一个在并行逻辑模块118中执行错误检测模块126时,可W检测到错误。 此外或额外地,当线程122中的一个在公共逻辑模块116中执行错误检测模块126时,可W检 测到错误。如果检测到错误,则线程可W执行140错误校正模块120。错误检测模块126可W 生成校正数据142。然后该线程可W试图执行138公共逻辑模块116中的逻辑W传输校正数 据142至主机104。在替代的示例中,执行错误检测模块126的线程可W不同于执行错误校正 模块120的线程。
[0037] 通过错误检测模块126检测数据132中的错误的线程可W在检测到错误时在公共 逻辑模块116的逻辑上加锁。线程可W在错误校正模块120的执行之前、同时或期间释放锁, W在错误校正模块120生成校正数据142之前解锁一个或多个阻塞的线程122。
[0038] 在锁释放和校正数据142生成之前,线程可W通过通讯模块130将占位符数据124 传输至主机104,而不发送读取命令102失败或成功的指示。线程可W不传输读取命令102失 败的指示,因为主机可W需要传输第二读取指令W便接收数据132。另一方面,线程可W不 传输读取命令102成功的指示,因为主机104可W错误地把占位符数据134当成是胆存存储 器114中胆存的数据132。
[0039] 可W有在释放锁和/或传输校正数据之前线程不传输读取命令102失败或成功的 指示的另一个原因。在一些示例中,在占位符数据124传输时,错误检测模块126可W尚未检 测到错误。换句话说,除主机104外,胆存设备106可W也在占位符数据134传输之后不知道 占位符数据134是否是正确的数据132。因此,胆存设备106处的错误检测W及错误校正可W 异步于占位符数据134从胆存设备106至主机104的传输而被执行。占位符数据134可W是任 何数据。例如,占位符数据134可W是从胆存存储器114读取的包含由错误检测模块126检测 到的错误的数据132。换句话说,占位符数据134可W是未校正数据。在另一示例中,占位符 数据134可W是诸如全部是0或全部是1的预定的二进制数字模式。在另一示例中,占位符数 据134可W是数据缓存区中的最后传输至主机104的数据。在另一示例中,占位符数据134可 W是从胆存存储器114读取的不包含任何错误的数据132。
[0040] 校正数据142可W是不包含由错误检测模块126检测到的错误的数据132。校正数 据142可W不一定通过包含错误的数据生成。例如,可W通过从胆存存储器114重新读取数 据132生成校正数据142。
[0041 ] 一旦主机接收校正142,主机可W重写之前接收的并胆存在主机104缓存区中的占 位符数据134。主机104可W不会在读取命令102完成前指示在两次接收由标识符144标识的 数据时出现的错误。读取命令102可W在占位符数据134和校正数据142传输至主机104后完 成。此外或额外地,响应于在传输占位符数据134后、胆存设备106的错误检测模块12如角定 占位符数据134不包含错误,读取命令102可W在胆存设备106传输读取命令102成功的指示 之后完成。
[0042] 考虑胆存协议是NVMe的示例。NVMe包括在其中胆存器命令可不同于从主机 104接收的命令顺序的顺序执行的特征。NVMe还包括在其中可W响应于读取命令读取的块 或区块数据可任何顺序返回的特征。标识符144可W连同诸如占位符数据134或校正数 据142的块或区块的数据传输至主机104。标识符144可W标识该块或区块数据。例如,标识 符144可W是块偏移、逻辑块地址或任何其他标识符。标识符144可W特定于或独立于胆存 协议。
[0043] 在一个示例中,由胆存协议模块110接收的读取命令102可W包括16千字节的数据 的请求,该数据可WW每页4千字节跨4页胆存在胆存存储器114中。当使用NVMe胆存协议 时,胆存协议模块110可W包括NVMe控制器。例如,后端模块112可W成功地读取和解码第一 页和第二页。然而,第Ξ页的数据可W有错误,可W需要时间来通过包含在错误校正模块 120中的解码器146纠正。其他胆存器命令的执行可W与试图解码第Ξ页中的4千字节数据 的解码器146并行进行。同时,为了不阻塞NVMe控制器内部的数据流动,可W在胆存设备106 中的为第Ξ页中的4千字节数据预留的缓存区(未示出)中提供4千字节的数据(占位符数据 134)。NVMe控制器可W传输占位符数据134和标识符144到主机104。标识符144可W标识占 位符数据134为由读取命令102请求的第Ξ页数据。然而,NVMe控制器可W不传输读取16千 字节的命令完成或失败的指示。当线程完成传输占位符数据134至主机后,线程可W释放公 共逻辑模块116的逻辑上的锁。
[0044] 解码器146可W应用具有多个软性位(soft bit)的软解码到胆存在胆存存储器 114的第Ξ页中的代码字(codeword)中。在成功解码为校正数据后,NVMe控制器可W传输校 正数据142到主机104,替换在主机104处错误的4千字节占位符数据134。在传输第Ξ页数据 的校正数据142的之后或同时,胆存协议模块110可W传输完成信号或任何类型的读取命令 102成功的指示到主机104。如果在第Ξ页数据的校正数据142传输之后,剩余的第四页数据 尚未传输至主机l〇4,NVMe控制器可W等待传输直到剩余的第四页数据传输至主机104之后 读取命令才完成的指示。或者,如果试图通过解码器146解码第Ξ页失败,并且如果没有进 一步试图成功读取数据132的第Ξ页数据的尝试,失败信号或者任何类型的读取命令102失 败的指示可W传输至主机104。
[0045] 不管读取命令102最终失败或成功,错误校正模块146的执行不会阻塞胆存协议模 块110内部的数据流动,并且不会阻塞与主机104的通信。因此,在解码器146试图解码第Ξ 页时,其他胆存器命令可W并行于解码器146进行。胆存设备106通过在从胆存存储器114第 一次读取的数据132中检测到错误后指示读取命令102失败或成功,可W不误导主机104。此 夕h胆存设备106可W传输占位符数据134到主机104,而不指示占位符数据134是不正确数 据。或者,胆存设备106可W传输占位符数据134到主机104,同时指示占位符数据134是不正 确数据,但不传输读取命令102失败或成功的指示。占位符数据134是不正确数据的指示可 W是任何占位符不是所请求的数据132的指示。然而,占位符数据134是不正确数据的指示 不进一步指示读取命令102失败。
[0046] 更一般地,系统100可W在不仅仅是读取命令的任何命令已部分完成的示例中类 似地操作。如果胆存设备106可W乱序地执行命令,然后胆存设备106可确定是否(1)传输与 未完成命令有关的部分数据至主机(而无成功或失败的指示),并继续在后台线程中执行未 完成命令(不阻塞其他命令),或者(2)放弃部分完成的命令,并传输失败指示到主机104。
[0047] 在一些示例中,系统100可W总是当从胆存存储器114读取的数据132中检测到错 误时传输占位符数据134。另外,系统100可W在检测到错误时有条件地传输占位符数据 134。例如,决策模块128可W分析由部分完成的读取命令102的占位符数据134的传输和随 后的校正数据142的生成和传输导致的延时的代价相比于承受由传输失败指示到主机104 和完全地重新执行读取命令102导致的延时的代价。在一个示例中,当由未完成的读取命令 102的占位符数据134的传输导致的延时的代价小于由读取命令102失败指示的传输和读取 命令102重新完全执行导致的代价时,决策模块128可W确定传输占位符数据134。
[0048] 由占位符数据134的传输和随后的校正数据142的生成和传输导致延时的代价取 决于胆存存储器114错误率。例如在老化的闪存胆存设备中,不可解码的代码字的数量和/ 或需要较长的解码时间的代码字的数量随着闪存胆存设备年龄的增长而增加。老化的闪存 胆存设备的较长的解码时间可W归因于为生成校正数据142而读取额外的软性位和执行更 长的解码迭代的需求。因此,当运种代码字相对于代码字总数的百分比低于阔值百分比时, 决策模块128可W决定传输占位符数据134到主机104,并在后台线程中继续执行解码器 146,而不是完全重新执行命令。或者,当不可解码的代码字和/或需要较长解码时间的代码 字的百分比增加超过阔值百分比时,将传输读取命令102失败的指示而不是传输占位符数 据134至主机104。
[0049] 决策模块128可W基于任何类型的条件或多个条件决定是否传输占位符数据134 代替于在读取命令102的执行中发生错误的指示。例如,当胆存存储器114的年龄低于阔值 时,决策模块128可W确定发送占位符数据134。例如,当胆存存储器114的循环计数低于循 环计数阔值时,决策模块128可W确定发送占位符数据134,但当胆存存储器114的循环计数 高于循环计数阔值时不发送占位符数据134。
[0050] 系统100可W实现为具有额外的、不同的或更少的组件。例如,系统100可W只包含 公共逻辑模块116、并行逻辑模块118和错误校正模块120。
[0051] 每个组件可W包括额外的、不同的或更少的组件。例如,公共逻辑模块116可W只 包括读取模块124和通信模块130。在另一示例中,胆存设备106可W包括处理器148和存储 器 150。
[0化2] 处理器148可W与存储器150通信。在一个示例中,处理器148也可W与诸如胆存协 议模块110的额外的组件通信。处理器148的示例可W是微控制器、通用处理器、中央处理单 元、专用集成电路(ASIC)、数字信号处理器、现场可编程口阵列(FPGA)、数字电路、模拟电路 或其组合。
[0053] 处理器148可W是可操作为执行包含在一个或多个模块中的逻辑的一个或多个设 备,模块诸如并行逻辑模块118、公共逻辑模块116和/或错误校正模块120。逻辑可W包括计 算机可执行的指令或体现在存储器150或其他存储器中的计算机代码,由处理器148执行 时,使处理器执行相应的模块和/或多个模块的功能。计算机代码可W包括可由处理器148 执行的指令。
[0054] 系统100可许多不同的方式实现。诸如物理和数据层模块108、胆存协议模块 110、后端模块112、公共逻辑模块116、并行逻辑模块118、错误校正模块120、读取模块124、 错误检测模块126、决策模块128和/或通信模块130的每个模块可W是硬件或硬件与软件的 组合。例如,每个模块可W包括专用集成电路(ASIC)、现场可编程口阵列(FPGA)、电路、数字 逻辑电路、模拟电路、离散电路组合、Π 或任何其他类型的硬件或其组合。此外或额外地,每 个模块可包括诸如存储器150的一部分的存储器硬件,例如,其包含可由处理器148或其他 处理器执行的W实现模块的一个或多个功能的指令。当任何一个模块包含包括可由处理器 148执行的指令的存储器的部分时,模块可W包括或可W不包括处理器148。在一些示例中, 个别的一个模块可W恰好是包括可由处理器148或其他处理器执行的指令的存储器150的 一部分或其他物理存储器,该指令的执行可W实现该模块的功能而无需该模块包含任何其 他硬件。由于每个模块包含至少一些硬件,即使包含的硬件包括软件,每个模块可W可替换 地被称为硬件模块,诸如读取硬件模块124、错误检测硬件模块126、通信硬件模块130和错 误校正的硬件模块120。
[0055] -些功能被描述为胆存于计算机可读胆存介质中(例如,应用为计算机可执行的 指令或存储器150中数据结构的逻辑)。系统100的整体或部分及其逻辑和数据结构可被胆 存于、分布在一个或多个类型的计算机可读胆存介质中或从一个或多个类型的计算机可读 胆存介质中读取。计算机可读胆存介质的示例可W包括硬盘、软盘、光盘、闪存驱动器、缓 存、易失性胆存器、非易失性胆存器、随机存取存储器、闪胆存存器或任何其他类型的计算 机可读胆存介质或胆存介质。计算机可读胆存介质可W包括任何类型的永久性的计算机可 读介质,如光盘、易失性胆存器、非易失性胆存器、只读胆存器(ROM)、随机存取存储器(RAM) 或任何其他合适的胆存设备。
[0056] 系统100的处理能力可W分布在多个实体之间,如多处理器和存储器之间,另外也 可W包括多个分布式处理系统。参数、数据库和其他数据结构可W分开地胆存和管理,可W 合并入单个存储器或数据库,可W W许多不同的方式逻辑地和物理地组织,W及可W采用 不同类型的数据结构实现,如链表、哈希表或隐式胆存机制。诸如程序或电路的逻辑,可在 多个程序间组合或分割、分布在几个存储器和处理器之间,并可W在库中实现。
[0057] 图2说明了系统100示例性逻辑的流程图。操作可W开始于在胆存设备106处接收 (210)来自主机104的读取命令102。读取的命令102可W包括由标识符144标识的数据132的 请求。基于标识符144,可W从胆存设备106处的胆存存储器114中读取(220)数据132。
[0058] 可W在胆存设备106处做出是否在从胆存存储器114读取的数据132中检测到错误 的确定(230)。如果未检测到错误,然后数据132可W传输(240)至主机104,操作可W结束。
[0059] 或者,如果检测到错误,然后占位符数据134可W从胆存设备106传输(250)至主机 104,而不传输读取命令102失败或成功的指示。当传输之后,占位符数据134可W被表示给 主机104作为由标识符144标识的数据132。
[0060] 校正数据142可W被生成(260),W使校正数据142不包含从胆存存储器114读取的 数据132中检测到的错误。校正数据142可W从胆存设备106传输(270)至主机104,在该处校 正数据替换主机104中的占位符数据134为由标识符144标识的数据132。然后操作可W结 束。
[0061] 例如,通过传输读取命令102已成功完成的指示至主机104,操作可W结束。
[0062] 图2所示的逻辑可W包括额外的、不同的或更少的操作。操作可不同于图2所 示的顺序执行。
[0063] 例如,图3说明了不同于图2所示的逻辑的系统100的示例性逻辑的流程图。操作可 W开始于在胆存设备106处接收(310)来自主机104的读取命令102。读取命令102可W包含 由标识符144标识的数据132的请求。基于标识符144,可W从胆存设备106处的胆存存储器 114中读取(320)数据132。
[0064] 占位符数据134可W从胆存设备106传输(350)到主机104,而不传输读取命令102 失败或成功的指示。占位符数据134可W是从胆存存储器114读取的原始数据。原始数据可 W包括或不包括错误。
[0065] 可W在胆存设备106处做出是否在从胆存存储器114读取的数据132中检测到错误 的确定(330)。在一个示例中,确定(330)可W与占位符134的传输(350)并行或之后做出。如 果未检测到错误,然后包括由读取命令102请求的正确数据的占位符数据134已被传输或正 在传输的过程中。相应地,操作可W结束。
[0066] 或者,如果检测到错误,校正数据142可W生成(360)?使校正数据142不包含从胆 存存储器114读取的数据132中检测到的错误。校正数据142可W从胆存设备106传输(370) 至主机104,在该处校正数据替换主机104中的占位符数据134为由标识符144标识的数据 132。然后操作可W结束。
[0067] 例如,通过传输读取命令102已成功完成的指示至主机104,操作可W结束。
[0068] 不管所描述的具体实现,所有讨论实质上都是典型的而不是限制的。例如,尽管选 定的方面、功能或实现的组件被描述为胆存在存储器中,系统或多个系统的全部或部分可 W胆存于、分布在其他计算机可读胆存介质中或可从其他计算机可读胆存介质中读取,例 如,硬盘、闪存驱动器、软盘和光盘的二级胆存器。此外,多种模块和屏幕显示功能仅仅是运 种功能的一个示例,任何其他包含类似的功能的配置是可W的。
[0069] 分别用于实现上述讨论的进程、方法和/或技术的逻辑、软件或指令可W提供在计 算机可读胆存介质上。图中所示或在此描述的功能、动作或任务可W响应于胆存在计算机 可读介质内或上的逻辑或指令集被执行。功能、动作或任务独立于指令集、胆存介质、处理 器或处理策略的特定类型,并可被软件、硬件、集成电路、固件、微代码及其类似单独执行或 组合地执行。同样,处理策略可W包括多重处理、多任务处理、并行处理等。在一个实施例 中,指令胆存在可移动的媒体设备中用于本地或远程系统读取。在其他实施例中,逻辑或指 令胆存在远程位置中用于通过计算机网络或通过电话线传送。在其它实施例中,逻辑或指 令胆存在给定的计算机、中央处理单元("CPU")、图形处理器("GPU")或系统中。
[0070] 此外,虽然W上描述了特定的组件,运里描述的方法、系统和制造文件可W包括额 外的、较少的或不同的组件。例如,处理器可微处理器、微控制器、专用集成电路 (ASIC)、离散逻辑或其他类型的电路或逻辑的组合实现。同样,存储器可W是动态随机存取 胆存器、静态随机存取胆存器或任何其他类型的存储器。标志、数据、数据库、表、实体和其 他数据结构可W分别地胆存和管理,可合并入单个存储器或数据库,可W是分布的,或者可 许多不同的方式逻辑地和物理地组织。组件可W独立地操作,或者作为同一程序或装 置的一部分。组件和/或设备可W是驻留在诸如独立的可移动的电路板的独立的硬件上,或 者是诸如用于实现来自存储器的指令的同一存储器和处理器的共享硬件上。程序可W是单 个程序或独立程序的几个部分,或者分布于几个存储器和处理器间。
[0071] 为澄清短语的使用并在此向公众提供注意,"至少<A〉、<B〉、...和<於中的一 个"或者"至少<A〉、<B〉、· · ·<Ν>中的一个"或其组合或"<A〉、<B〉、· · ·和/或<龄"等短 语由
【申请人】W最广泛的意义定义,取代在此之前或在此之后的任何其他默认的定义,意味 着从包括A、B、· ··和N的组中选定的一个或多个元素,除非
【申请人】明确地说明与此相反。 换句话说,短语意味着一个或多个元素 A、B、· ··或N的任何组合,包括任何单独一个元素 或一个元素与其他一个或多个元素的组合,其也可W包括未列出的额外元素的组合。
[0072] 虽然描述了各种实施例,本领域技术人员应清楚,更多实施例和实现是可能的。因 此,运里描述的实施例和实现不应该被认为是唯一可能的实施例和实现。
【主权项】
1. 一种处理贮存器命令的方法,所述方法包括: 在贮存设备处从主机接收读取命令,所述读取命令包括对由标识符标识的数据的请 求; 在所述贮存设备处基于所述标识符读取来自贮存存储器的数据; 在所述贮存设备处检测从所述贮存存储器读取的数据中的错误; 从所述贮存设备传输占位符数据至所述主机,而不传输所述读取命令失败或成功的指 示,所述占位符数据被指示给所述主机作为由标识符标识的数据; 生成不包含从所述贮存存储器读取的数据中检测到的错误的校正数据;以及 从所述贮存设备传输所述校正数据至所述主机,其中所述校正数据替换所述主机中的 占位符数据为由标识符标识的数据。2. 如权利要求1所述的方法,其中传输所述占位符数据包括传输所述占位符数据,而不 传输占位符数据不正确的指示。3. 如权利要求1所述的方法,其中传输所述占位符数据包括在检测到数据中的错误后 传输所述占位符数据。4. 如权利要求1所述的方法,其中所述占位符数据包括包含错误的数据。5. 如权利要求1所述的方法,其中所述占位符数据包括预定的样式。6. 如权利要求1所述的方法,进一步包括在所述校正数据的传输之后或同时从所述贮 存设备传输读取命令已完成的指示至所述主机。7. -种处理贮存器命令的系统,所述系统包括: 包括由标识符标识的数据的贮存存储器,其中从主机接收的读取命令请求该数据; 读取模块,配置为读取来自所述贮存存储器的数据; 错误检测模块,配置为检测从所述贮存存储器读取的数据中的错误; 通信模块,配置为传输占位符数据至所述主机而不传输读取命令失败或成功的指示, 其中占位符数据被表示给所述主机作为由标识符标识的数据;以及 错误校正模块,配置为校正从所述贮存存储器读取的数据中的错误,其中所述通信模 块进一步配置为传输校正数据至所述主机,其中所述校正数据被表示给主机作为由标识符 标识的数据,并且其中在所述校正数据传输至所述主机之后,所述读取命令完成。8. 如权利要求7所述的系统,进一步包括决策模块,配置为基于代价分析来确定是否传 输占位符数据至所述主机。9. 如权利要求8所述的系统,其中当由所述占位符数据的传输和所述校正数据的生成 导致的延时的代价小于由所述读取命令失败的指示的传输和所述读取命令的完成的重新 执行导致的延时的代价时,所述决策模块确定传输所述占位符数据。10. 如权利要求8所述的系统,其中当所述贮存存储器的错误率低于阈值错误率时,所 述决策模块确定传输所述占位符数据。11. 如权利要求7所述的系统,其中所述通信模块配置为传输所述占位符数据至所述主 机而不传输所述占位符数据不是由所述读取命令请求的数据的指示。12. 如权利要求7所述的系统,其中所述读取模块包括硬件控制器。13. 如权利要求7所述的系统,其中所述读取命令是符合贮存协议的贮存器命令,并且 所述贮存协议提供对块设备的块级访问。14. 一种处理贮存器命令的贮存设备,所述贮存设备包括: 包括数据的贮存存储器,其中从主机接收的读取命令请求所述数据; 错误检测模块,配置为在从所述贮存存储器读取数据之后检测数据中错误; 通信模块,配置为传输占位符数据至所述主机而不传输所述读取命令失败或成功的指 示,其中所述占位符数据被表示为由所述读取命令请求的数据;以及 错误校正模块,配置为生成校正数据,其中所述通信模块进一步配置为传输所述校正 数据至所述主机,所述校正数据被表示为由所述读取命令请求的数据,其中所述校正数据 和所述占位符数据被传输以完成所述读取命令。15. 如权利要求14所述的贮存设备,其中所述贮存设备包括决策模块,配置为响应于检 测到数据中的错误,来确定是传输占位符数据至所述主机还是传输所述读取命令失败的指 不。16. 如权利要求15所述的贮存设备,其中当所述贮存存储器的年龄的指示小于阈值时, 所述决策模块确定传输所述占位符数据。17. 如权利要求14所述的贮存设备,其中所述错误校正模块由不同于传输占位符数据 至所述主机的线程的线程执行。18. 如权利要求14所述的贮存设备,其中所述通信模块包括作为单线程的逻辑。19. 如权利要求14所述的贮存设备,其中所述错误检测模块是单线程的,但所述错误校 正模块不是单线程的。20. 如权利要求14所述的贮存设备,进一步包括从所述贮存存储器读取数据的直接存 储器访问控制器。
【文档编号】G06F11/10GK106068499SQ201580003427
【公开日】2016年11月2日
【申请日】2015年1月22日 公开号201580003427.X, CN 106068499 A, CN 106068499A, CN 201580003427, CN-A-106068499, CN106068499 A, CN106068499A, CN201580003427, CN201580003427.X, PCT/2015/12448, PCT/US/15/012448, PCT/US/15/12448, PCT/US/2015/012448, PCT/US/2015/12448, PCT/US15/012448, PCT/US15/12448, PCT/US15012448, PCT/US1512448, PCT/US2015/012448, PCT/US2015/12448, PCT/US2015012448, PCT/US201512448
【发明人】A.塞格夫, T.沙里菲, S.贝尼斯蒂
【申请人】桑迪士克科技有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1