基于NAND的存储装置的固件事件跟踪及其执行方法和指令集与流程

文档序号:17586283发布日期:2019-05-03 21:20阅读:186来源:国知局
基于NAND的存储装置的固件事件跟踪及其执行方法和指令集与流程

本申请要求于2017年10月26日提交的申请号为62/577,571的美国临时申请的权益,其全部内容通过引用并入本文。

本公开的实施例涉及一种用于基于nand的存储装置的固件事件跟踪器,以及对这种装置执行固件事件跟踪的方法,该方法包括跟踪和记录在执行固件期间发生的事件并且分析所记录的事件。



背景技术:

计算机环境范例已经转变成可以被随时随地使用的普适计算系统。因此,诸如移动电话、数码相机以及笔记本计算机的便携式电子装置的使用已经迅速增加。通常,这些便携式电子装置使用具有存储器装置的存储器系统,即,数据存储装置。数据存储装置用作便携式电子装置的主存储器装置或辅助存储器装置。

由于使用存储器装置的数据存储装置不具有移动部件,因此它们提供优良的稳定性、耐用性、高信息访问速度以及低功耗。具有这些优点的数据存储装置的示例包括通用串行总线(usb)存储器装置、具有各种接口的存储卡以及固态硬盘(ssd)。

ssd可以包括闪速存储器部件和控制器,该控制器包括将闪速存储器部件桥接到ssd输入/输出(i/o)接口的电子器件。ssd控制器可以包括执行诸如固件的功能部件的嵌入式处理器。ssd功能部件通常是特定于装置的,并且在大多数情况下可以被更新。

两种主要类型的闪速存储器部件以nand或nor逻辑门来命名。各个闪速存储器单元表现出与它们的相应栅极类似的内部特性。nand型闪速存储器可以以通常远小于整个存储器空间的块(或页面)的形式而被写入并读取。nor型闪存将单个机器字(字节)单独写入到擦除位置或单独地读取。nand型闪速存储器主要以存储卡、usb闪存驱动、固态硬盘以及相似产品的形式来操作,以用于一般的数据存储和传输。

涉及生产基于nand的存储装置的过程。该过程包括许多主要步骤,其包括部件设计(nand、片上系统(soc)、固件、电路板(board)等)、部件集成、产品操作稳定、准备工程样品和客户样品、准备核发候选、批量生产和退货授权(rma)支持。各个部件的失效分析(fa)也是过程的一部分。执行fa的一个这种部件为固件。

针对固件的现有fa能力包括联合测试行动组(jtag)调试器、通用异步接收器-发送器(uart)串行端口输出和内部日志记录(统计和流程类型)。虽然这些技术中的每一种都具有优点,但其每一种也有缺点。

在该背景下,提出本发明的实施例。更具体地,本发明提供了在用于基于nand的存储装置的固件事件跟踪器以及跟踪方法方面的改进,这增强了供应方和客户端问题的fa。



技术实现要素:

本发明的方面包括:计算机可读存储介质,存储用于执行操作的指令集;执行用于操作的方法;以及用于实现执行指令集和方法的部件。

一方面,一种非暂时性计算机可读存储介质存储用于指示装置执行跟踪关于固件的事件的操作的指令集。指令集包括用于以下的指令:创建包括多个事件项的跟踪器事件日志,所述事件项属于在执行固件期间发生的事件,事件项中的每一个包括时间戳、唯一标识符和描述相应事件的至少一个参数;根据基于阵列的列表结构将事件项存储在易失性存储器中;建立用于将事件项从易失性存储器清除到非易失性存储器的清除策略;针对事件项中的每一个建立清除访问路径以用于将相应事件项从易失性存储器清除到非易失性存储器;并且根据所建立的清除策略和针对待被清除的事件项所建立的清除访问路径将事件项选择性地从易失性存储器清除到非易失性存储器。

另一方面,一种非暂时性计算机可读存储介质存储使用固件事件跟踪器的指令集,固件事件跟踪器存储在nand存储器装置中并且包括多个事件项,事件项属于在执行存储装置中的固件期间发生的事件。事件项中的每一个包括时间戳、唯一标识符和描述相应事件的至少一个参数。事件项以组的方式布置,每组具有其自身的组标识符。指令集包括用于以下的指令:解析跟踪器事件日志中的源文件和头文件以检测和定义所有唯一标识符、检测和定义所有组标识符并且构建和定义唯一标识符与组标识符之间的映射;生成具有对输入跟踪器事件日志中的所有解析后的事件项的描述的文件;并且生成具有所有源定义的索引文件。

又一方面,一种非暂时性计算机可读存储介质存储用于指示主机装置使用固件事件跟踪器对固件执行失效分析的指令集,固件事件跟踪器存储在nand存储器装置中并且包括多个事件项,事件项属于在执行存储装置中的固件期间发生的事件。事件项中的每一个包括时间戳、唯一标识符和描述相应事件的至少一个参数。事件项以组的方式布置,每组具有其自身的组标识符。指令集包括用于以下的指令:建立主机装置与nand存储器装置之间的通信;使用事件项各自的唯一标识符选择各个事件项或使用事件项各自的组标识符选择一个或多个事件项组;读取所选择的事件项;解析所选择的事件项的数据;通过时间戳对所选择的事件项进行分类;对所分类的事件项的细节进行分析以对固件执行失效分析。

从下面的描述中,本发明的其它方面将变得显而易见。

附图说明

图1是示出根据本发明的实施例的存储器系统的框图。

图2是示出根据本发明的实施例的存储器系统的框图。

图3是示出根据本发明的实施例的存储器系统的存储器装置的存储块的电路图。

图4是示出根据本发明的实施例的用于存储器系统的存储器装置的固件事件跟踪器的示意图。

图5是示出根据本发明的实施例的与跟踪事件项的存储有关的示例性多核固态硬盘(ssd)的示意图。

图6示出了根据本发明的实施例的ablist数据结构。

图7是示出根据本发明的实施例的将事件项清除到非易失性存储器的示意图。

图8是示出根据本发明的实施例的将跟踪器事件日志存储在nand存储器装置中的示意图。

图9是示出根据本发明的实施例的与预构建脚本相关联的操作的流程图。

图10是示出根据本发明的实施例的来自客户端的跟踪器缓冲器请求的示意图。

图11-图13是根据本发明的实施例的跟踪固件中的事件和使用固件事件跟踪器,特别是跟踪器事件日志信息的方法的步骤的流程图。

具体实施方式

以下参照附图更详细地描述各个实施例。然而,本发明可以不同的形式来实现,并且因此不应被解释为限制本文阐述的实施例。相反,提供这些实施例使得本公开全面且完整,并且向本领技术人员充分传达本发明的范围。而且,对“实施例”、“另一实施例”等的参考不一定是仅针对一个实施例,并且对任意这种短语的不同参考不一定是针对相同实施例。在整个本公开中,相同的附图标记在本发明的附图和实施例中表示相同的部件。

本发明可以包括以下的多种方式来实施:进程、设备、系统、物质的组合、实现在计算机可读存储介质上的计算机程序产品和/或处理器,诸如适于执行存储在与处理器联接的存储器上和/或由该存储器提供的指令的处理器。在本说明书中,这些实施例或本发明可以进行的任何其它形式可以称为技术。一般地,所公开进程的步骤顺序可以在本发明的范围内进行改变。除非另有说明,否则被描述为适于执行任务的诸如处理器或存储器的部件可以被实施为临时被配置成在给定时间执行任务的通用部件或被制造为执行任务的特定部件。如本文所使用的,术语“处理器”等指适于处理诸如计算机编程指令的数据的一个或多个装置、电路和/或处理核。

以下提供对本发明的实施例的详细描述和示出了本发明的方面的附图。结合这些实施例来描述本发明,但是本发明不限于任意实施例。本发明的范围仅由权利要求限定。本发明包含权利要求范围内的许多替换方案、修改方案和等同方案。为了提供对本发明的全面理解,在以下描述中阐述了许多具体细节。提供这些细节是为了示例的目的;可以在没有一些或全部这些具体细节的情况下根据权利要求来实施本发明。为了清楚起见,未详细描述本发明涉及的技术领域中已知的技术材料,以免使本发明不必要地模糊。

图1是示意性示出根据本发明的实施例的存储器系统的框图。

参照图1,存储器系统10可以包括存储器控制器100和半导体存储器装置200,可以表示多于一个这种装置。半导体存储器装置200可以是闪速存储器装置,特别是nand型。

存储器控制器100可以控制半导体存储器装置200的全部操作。

半导体存储器装置200可以在存储器控制器100的控制下执行一个或多个擦除操作、编程操作和读取操作。半导体存储器装置200可以通过输入/输出(i/o)线接收命令cmd、地址addr和数据data。半导体存储器装置200可以通过电源线接收电力pwr并且通过控制线接收控制信号ctrl。控制信号ctrl可以包括命令锁存使能(cle)信号、地址锁存使能(ale)信号、芯片使能(ce)信号、写入使能(we)信号、读取使能(re)信号等。

存储器控制器100和半导体存储器装置200可以被集成在诸如固态硬盘(ssd)的单个半导体装置中。ssd可以包括用于将数据存储在其中的存储装置。当半导体存储器系统10被用在ssd中时,可以显著提高与存储器系统10联接的主机(未示出)的操作速度。

存储器控制器100和半导体存储器装置200可以被集成在诸如存储卡的单个半导体装置中。例如,存储器控制器100和半导体存储器装置200可以被如此集成以形成:个人计算机存储卡国际协会(pcmcia)的pc卡、紧凑型闪存(cf)卡、智能媒体(sm)卡、记忆棒、多媒体卡(mmc)、缩小尺寸的多媒体卡(rs-mmc)、微型mmc(mmc微型)、安全数字(sd)卡、迷你安全数字(迷你sd)卡、微型安全数字(微型sd)卡、安全数字高容量(sdhc)和/或通用闪存(ufs)。

在另一实施例中,存储器系统10可以被设置为诸如以下的电子装置中的各种部件之中的一种:计算机、超移动pc(umpc)、工作站、上网本计算机、个人数字助理(pda)、便携式计算机、网络平板pc、无线电话、移动电话、智能电话、电子书阅读器、便携式多媒体播放器(pmp)、便携式游戏装置、导航装置、黑盒、数码相机、数字多媒体广播(dmb)播放器、3维电视、智能电视、数字音频记录器、数字音频播放器、数字图片记录器、数字图片播放器、数字视频记录器、数字视频播放器、数据中心存储装置、能够在无线环境中接收和发送信息的装置、射频识别(rfid)装置以及家庭网络的各种电子装置之一、计算机网络的各种电子装置之一、远程信息处理网络的电子装置之一或计算系统的各种部件之一。

图2是示出根据本发明的实施例的存储器系统的详细框图。例如,图2的存储器系统可以描述图1所示的存储器系统10。

参照图2,存储器系统10可以包括存储器控制器100和半导体存储器装置200。存储器系统10可以响应于来自主机装置的请求进行操作,并且特别地,存储待由主机装置访问的数据。

主机装置可以用各种类型的电子装置中的任意一种来实施。在一些实施例中,主机装置可以包括诸如以下的电子装置:台式计算机、工作站、三维(3d)电视、智能电视、数字音频记录器、数字音频播放器、数字图片记录器、数字图片播放器和/或数字视频记录器和数字视频播放器。在一些实施例中,主机装置可以包括诸如以下的便携式电子装置:移动电话、智能电话、电子书、mp3播放器、便携式多媒体播放器(pmp)和/或便携式游戏播放器。

存储器装置200可以存储待由主机装置访问的数据。

存储器装置200可以用诸如动态随机存取存储器(dram)和/或静态随机存取存储器(sram)的易失性存储器装置来实施,或用诸如以下的非易失性存储器装置来实施:只读存储器(rom)、掩膜rom(mrom)、可编程rom(prom)、可擦除可编程rom(eprom)、电可擦除可编程rom(eeprom)、铁电随机存取存储器(fram)、相变ram(pram)、磁阻ram(mram)和/或电阻ram(rram)。

控制器100可以控制将数据存储在存储器装置200中。例如,控制器100可以响应于来自主机装置的请求来控制存储器装置200。控制器100可以将从存储器装置200读取的数据提供至主机装置,并且可以将从主机装置提供的数据存储在存储器装置200中。

控制器100可以包括存储装置110、可以被实施为诸如中央处理单元(cpu)的处理器的控制部件120、错误校正码(ecc)部件130、主机接口(i/f)140和存储器接口(i/f)150,这些通过总线160联接。

存储装置110可以用作存储器系统10和控制器100的工作存储器,并且存储用于驱动存储器系统10和控制器100的数据。当控制器100控制存储器装置200的操作时,存储装置110可以存储由控制器100和存储器装置200用于诸如读取操作、写入操作、编程操作和擦除操作的这些操作所使用的数据。

存储装置110可以用诸如静态随机存取存储器(sram)或动态随机存取存储器(dram)的易失性存储器来实施。如上所示,存储装置110可以将由主机装置使用的数据存储在存储器装置200中,以用于读取和写入操作。为了存储数据,存储装置110可以包括编程存储器、数据存储器、写入缓冲器、读取缓冲器和映射缓冲器等。

控制部件120可以响应于来自主机装置的写入操作或读取操作,控制存储器系统10的一般操作以及对存储器装置200的写入操作或读取操作。控制部件120可以驱动称为闪存转换层(ftl)的固件以控制存储器系统10的一般操作。例如,ftl可以执行诸如逻辑到物理(l2p)映射、损耗均衡、垃圾收集和/或坏块处理的操作。l2p映射称为逻辑块地址(lba)。

ecc部件130可以在读取操作期间检测并校正从存储器装置200读取的数据中的错误。当错误位的数量大于或等于可校正错误位的阈值数量时,ecc部件130可以不校正错误位,并且相反地,可以输出指示校正错误位中失败的错误校正失败信号。

在一些实施例中,ecc部件130可以基于诸如以下的编码调制来执行错误校正操作:低密度奇偶校验(ldpc)码、博斯-查德胡里-霍昆格姆(bose-chaudhuri-hocquenghem,bch)码、turbo码、turbo产品码(tpc)、里德-所罗门(reed-solomon,rs)码、卷积码、递归系统码(rsc)、网格编码调制(tcm)或分组编码调制(bcm)。如此,ecc部件130可以包括适于错误校正操作的所有电路、系统或装置。

主机接口140可以通过诸如以下的各种接口协议中的一种或多种与主机装置通信:通用串行总线(usb)、多媒体卡(mmc)、高速外围组件互连(pci-e)、小型计算机系统接口(scsi)、串列scsi(sas)、串行高级技术附件(sata)、并行高级技术附件(pata)、增强型小型磁盘接口(esdi)、电子集成驱动器(ide)和高速非易失性存储器(nvme)。

存储器接口150可以提供控制器100和存储器装置200之间的接口连接以使控制器100响应于来自主机装置的请求来控制存储器装置200。存储器接口150可以在cpu120的控制下生成用于存储器装置200的控制信号并且处理数据。当存储器装置200为诸如nand闪速存储器的闪速存储器时,存储器接口150可以在cpu的控制下生成用于存储器的控制信号并且处理数据。

存储器装置200可以包括存储器单元阵列210、控制电路220、电压生产电路230、行解码器240、呈页面缓冲器阵列形式的页面缓冲器250、列解码器260和输入/输出电路270。存储器单元阵列210可以包括多个存储块211,该多个存储块211可以存储数据。电压生成电路230、行解码器240、页面缓冲器阵列250、列解码器260和输入/输出电路270可以形成存储器单元阵列210的外围电路。外围电路可以对存储器单元阵列210执行编程操作、读取操作或擦除操作。控制电路220可以控制外围电路。

电压生成电路230可以产生各种电平的操作电压。例如,在擦除操作中,电压生成电路230可以产生诸如擦除电压和通过电压的各种电平的操作电压。

行解码器240可以与电压生成电路230和多个存储块211通信。行解码器240可以响应于由控制电路220生成的行地址radd在多个存储块211中选择至少一个存储块,并且将由电压生成电路230供给的操作电压传输至所选择存储块。

页面缓冲器250可以通过位线bl(如图3所示)与存储器单元阵列210通信。页面缓冲器250可以响应于由控制电路220生成的页面缓冲器控制信号用正电压对位线bl预充电,在编程操作中将数据传输至所选择存储块和在读取操作中从所选择存储块接收数据,或临时存储传输的数据。

列解码器260可以将数据传输至页面缓冲器250和从页面缓冲器250接收数据,或将数据传输至输入/输出电路270/从输入/输出电路270接收数据。

输入/输出电路270可以将从外部装置(例如存储器控制器100)接收的命令和地址传输至控制电路220,将来自外部装置的数据通过输入/输出电路270传输至列解码器260或将来自列解码器260的数据通过输入/输出电路270输出至外部装置。

控制电路220可以响应于命令和地址来控制外围电路。

图3是示出根据本发明的实施例的半导体存储器装置的存储块的电路图。例如,图3的存储块可以是图2所示的存储器单元阵列210的存储块211的任意一个。

参照图3,示例性存储块211可以包括联接到行解码器240的多个字线wl0至wln-1、漏极选择线dsl和源极选择线ssl。这些线可以平行布置,且多个字线位于dsl和ssl之间。

示例性存储块211可以进一步包括分别联接到位线bl0至blm-1的多个单元串221。每列的单元串可以包括一个或多个漏极选择晶体管dst和一个或多个源极选择晶体管sst。在所示实施例中,每个单元串具有一个dst和一个sst。在单元串中,多个存储器单元或存储器单元晶体管mc0至mcn-1可以串联联接在选择晶体管dst和sst之间。存储器单元中的每一个可以被形成存储多位数据信息的多层单元(mlc)。

每个单元串中的sst的源极可以联接到公共源极线csl,并且每个dst的漏极可以联接到相应位线。单元串中的sst的栅极可以联接到ssl,并且单元串中的dst的栅极可以联接到dst。横跨单元串的存储器单元的栅极可以联接到各个字线。也就是说,存储器单元mc0的栅极联接到相应字线wl0,存储器单元mc1的栅极联接到相应字线wl1等。联接到特定字线的存储器单元组可以称作物理页面。因此,存储块211中的物理页面的数量可以对应于字线的数量。

页面缓冲器阵列250可以包括联接到位线bl1至blm-1的多个页面缓冲器251。页面缓冲器251可以响应于页面缓冲器控制信号进行操作。例如,在读取或验证操作期间,页面缓冲器251可以临时存储通过位线bl0至blm-1接收的数据或感测位线的电压或电流。

在一些实施例中,存储块211可以包括nand型闪速存储器单元。然而,存储块211不限于这种单元类型,而是可以包括nor型闪速存储器单元。存储器单元阵列210可以被实施为其中组合了两种或更多种类型的存储单元的混合闪速存储器,或控制器被嵌入在存储器芯片内部的1-nand闪速存储器。

本发明的方面涉及在用于基于nand的存储装置的固件事件跟踪器方面的改进,还涉及方法和指令集,以用于跟踪事件、创建跟踪器事件日志并且使用该日志来对固件进行评估,例如执行失效分析。

使用jtag的fa方法实际上停止了装置固件执行并提供了最丰富的能力来控制执行流程(存储器和调用栈概述,指令步进,断点集等)。jtag在严格定义的失效场景中非常有用,或者可以使用断点进行本地化。当连接jtag并设置断点时,驱动性能通常会下降。而且,由于各种原因,例如,禁用接口、无法到达调试接口或物理无法到达失效的样本并连接jtag,jtag调试在装置被制造之后通常是不适用的。在连接jtag时,高压操作下与固件或硬件模块上的高压相关的驱动器失效甚至可能不会发生,并且整体驱动性能降低。

通过串行端口的调试通常适用于大量信息正被输出到终端的内部装置稳定。但是,由于性能限制,装置的生产版本通常具有较小的串行端口输出。硬件,即nand装置和主机接口的操作频率通常远高于串行端口硬件接口。一个串行端口调试瓶颈是输出转储存储。由驱动器通过串行闪存输出的数据应该被存储在外部。这应该由外部软件工具在物理串行端口连接链的帮助下完成。可以在装置的生产版本中禁用串行端口和jtag,以限制对装置的硬件部件和内部操作的访问。

利用内部日志记录进行调试需要将装置事件存储在装置本身内并且具有通过主机接口提取它们的能力。日志类型可以分为统计或流程。前者捕获对内部事件发生的统计,而后者捕获具有时间戳和参数的事件。统计日志对于装置fa期间的通用概述是有用的,并且可以非常快速地缩小有问题的情况。例如,对正处于温度过高的装置的递增统计给出了与可能失效的根本原因有关的线索,但没有给出确切的时间戳,即事件在何时和在什么情况下发生。另一方面,流程日志提供装置上发生的事件的完整历史。但是,流程日志的缺点是内存使用和性能。统计日志通常使用简单的全局变量增量来实现,并且可以紧凑地存储。流程日志需要更多空间,因为它们使用时间戳和自定义参数。因为内存资源有限,所以流程日志通常支持日志重写机制,并且当没有更多的空间用于新日志时,删除最旧的日志以释放内存。

本发明的实施例提供固件事件跟踪器方面的改进,包括使用跟踪器事件日志跟踪关于固件的事件,然后可以使用跟踪器事件日志来分析固件,即执行fa。在一些实施例中,这种固件事件跟踪器重量轻且高度自动化并且具有最小的性能影响。本发明的固件事件跟踪器非常适合于基于多核nand的存储装置。有利地,固件事件跟踪器的技术增强了供应方和客户端问题的fa。

跟踪器事件日志

图4是固件事件跟踪器40的示意图,示出了跟踪器事件日志41的创建。跟踪器事件日志包括多个事件项42,例如事件项42a至42d。事件项42a至42d中的每一个由时间戳、唯一标识符(id)以及一到五个自定义参数来定义。自定义参数可以标识特定信道、管芯、块、页面和/列。自定义参数中的每一个可以是双字(dword)类型。在所示实施例中,事件项42a具有三个自定义参数(dw0、dw1、dw2),事件项42b具有一个自定义参数(dw0),事件项42c具有四个自定义参数(dw0、dw1、dw2、dw3),并且事件项42d具有两个自定义参数(dw0、dw1)。

事件项42根据执行固件而生成。示例性固件代码执行流程43被示出为具有分别对应于事件项42的事件的时间线44。例如,时间线44中的event#1、event#2、event#3和event#4分别对应于事件项42a、42b、42c和42d。

跟踪器存储

参照图5,示出了示例性多核固态硬盘(ssd)51以示出跟踪器事件的存储。可以为基于nand的装置的ssd51包括片上系统(soc)52,该片上系统52具有多个内核,例如core1和core2。事件中的每一个属于内核中的特定一个。在所示实施例中,event#1和event#2(和它们各自的事件项42a和42b)属于core1,而event#3和event#4(和它们各自的事件项42c和42d)属于core2。

ssd51进一步包括易失性存储器53和非易失性存储器装置54。易失性存储器53可以是外部的或内部的,并且可以被实现为紧联接存储器(tcm)、动态随机存取存储器(dram)或静态随机存取存储器(sram)。也可以是外部的或内部的非易失性存储器53可以为nand型闪速存储器。易失性存储器53包括针对多个内核的每一个的跟踪器缓冲器。因此,在所示实施例中,易失性存储器53包括core1跟踪器缓冲器56和core2跟踪器缓冲器57。

为了满足ssd性能和服务质量(qos)要求,表示所跟踪事件的事件项42被首先存储在易失性存储器53中。然后,当易失性存储器53变满时,事件项42被清除到非易失性存储器54。

结合该存储过程,每个事件项保持与其所属内核的关联。因此,分别针对均属于core1的event#1和event#2的事件项42a和42b初始存储在core1跟踪器缓冲器56中,并且分别针对均属于core2的event#3和event#4的事件项42c和42d初始存储在core2跟踪器缓冲器57中。当易失性存储器53变满时,存储在其中的事件项42被清除到非易失性存储器54。

具有自定义格式(时间戳、唯一标识id和参数)的跟踪器事件项42被初始存储在易失性存储器53中。为了更有效地利用缓冲器,使用基于阵列的列表(ablist)61来将事件项42存储在易失性存储器53中。图6所示的ablist数据结构是单向链表,其中每个条目具有标题和指针,其中标题具有条目长度并且指针指向表中的下一条目。因为跟踪器缓冲器的每一个是循环的,所以需要ablist条目标题的条目长度。跟踪器系统配置允许缓冲器以循环方式,例如后进先出(lifo)的方式来重写。然而,为了避免丢失事件项42,选择在跟踪器缓冲器变满时禁止重写并清除跟踪缓冲器。可以基于缓冲器的充满或通过请求的清除策略或政策可以被设置为跟踪器系统配置的部分。也可以在发生诸如断电的紧急事件时将存储的事件项42从易失性存储器53清除到非易失性存储器54。

当跟踪器缓冲器56、57正被清除时,跟踪缓冲器56、57应是完整的,即应保护跟踪缓冲器56、57免于新事件项被存储在其中。为了实现这一点,当仍然允许将新跟踪的事件日志为事件项42时,使用辅助缓冲器。参照图7,具有与可以被认为是主缓冲器的跟踪器缓冲器56相关联的辅助跟踪器缓冲71,以及与可以被认为是主缓冲器的跟踪器缓冲器57相关联的辅助跟踪缓冲器72,主-辅缓冲器对56、71与core1相关联,并且主-辅缓冲器对57、72与core2相关联。

在清除操作期间,存储在主缓冲器56、57中的事件项42被复制并且该复制被分别传输至辅助缓冲器71、72。然后辅助缓冲器71、72被清除到非易失性存储器54。使用辅助缓冲器71、72允许连续记录事件项42,同时不中断清除操作。

ssdsoc的一些内核可能不能直接访问非易失性存储器54,在这种情况下,采用直接访问内核的“邮箱”方法以在不直接访问的情况下存储内核的辅助缓冲器的内容。ssd内部的不同内核具有不同的用途和外围。例如,一个内核可以负责主机接口操作,诸如sata或nvme,并且另一内核可以负责与闪速存储器一起操作。为了履行其职责,每个内核应具有多个特定功能的硬件外围。为了最小化soc大小,每个外围通常仅映射到一个内核。在本实施例中,core1可以用于主机操作,并且core2可以用于nand操作。在这种情况下,core1不能通过其本身将数据存储到nand,因为core1不能访问闪存外围。因此,core1对core2执行邮箱请求,请求core2将core1的缓冲器内容存储到非易失性存储器54,例如nand。

相比硬盘驱动器(hdd),ssd装置通常使用非直接方式来将数据存储在非易失性存储器,即nand中。复杂性来自于nand特定操作,例如基于页面的编程和基于块的擦除。ssd保存元数据(系统数据)以维持其操作。系统数据的部分也被存储在nand中。通常,使用统一的方法来存储系统数据以节省代码和nand空间。但是,将跟踪器事件日志与其它系统数据一起存储具有一些缺点。在系统存储中断或变为被禁用(因为代码中的任何位置都可能发生错误)的情况下,附加的跟踪器事件日志不可能被恢复。而且,在使用与其它系统数据一起存储的跟踪器事件日志之前,需要初始化存储装置;因此,这种初始化过程不能用跟踪器进行描述。此外,将跟踪器事件日志与其它系统数据一起存储影响一般系统区域状态,而这应该被最小化。

因此,本发明的实施例采用不同的方法。控制非易失性存储器54,即nand的物理块集来存储跟踪器事件日志41。相比主机数据,写入到nand块的写入操作的数量非常少;因此,对大量数据的写入性能不是要素。如图8所示,可以利用相对简单的算法来将跟踪器事件日志41逐块地(block-by-block)、逐页地(page-by-page)存储在非易失性存储器54,即nand中。

每当通电时,nand存储块被单独扫描。对每个nand物理块使用二进制搜索。使用每个页面中的时间戳,可以恢复存储清除序列。

固件代码中的跟踪器事件

有利地,如上述配置的固件事件跟踪器40易于用户,例如固件工程师使用。如下面的示例性代码列表所示,在固件代码中存在事件日志点以使用跟踪器。在track_debug命令中,channel,die,block,page,column是自定义参数,例如dw0,dw1,dw2,dw3,dw4。

固件工程师向跟踪器调用提供以下属性:(1)冗长级别(_info,_debug,_warning,_error);(2)唯一文字事件id(program_page);(3)唯一文字组id(nand_group);(4)自定义事件参数(channel,die,block,page,column),其可以对应于结合图4描述的dw0、...、dw4。

固件事件跟踪器40具有在反映系统冗长级别的固件代码内定义的系统配置。具有低于系统的冗长级别的跟踪器调用被编译出来并在执行期间不使用。

单个代码行,例如上面列表中的代码行,可能由于未定义的文字字符串而导致编译失败。通过在编译之前运行下面解释的预构建脚本来解决该问题,该编译将解析所有头文件和源文件,并在索引头文件和源文件中定义跟踪器唯一文字,同时将它们包含在固件构建中。

可以对跟踪器事件进行分类并且根据分类进行分组以便于管理。在编译或运行时可以禁用特定组。

跟踪器事件参数的数量是动态的;固件工程师可以提供从0到根据系统配置参数而设置的最大数量。跟踪器易失性存储装置被优化,以便以紧凑的方式存储数据。

跟踪器预构建解析器

为了简化跟踪器的使用,在构建之前启动预构建脚本以解析源文件和头文件,以便(1)检测和定义所有跟踪器id;(2)检测和定义所有跟踪器组;以及(3)构建和定义映射(id与组),以便能够在固件运行时间期间打开或关闭每个组以进行日志记录。

图9示出了示例性跟踪器预构建流程。在操作91中,将跟踪器条目添加到固件代码。在操作92中,启动预构建脚本来解析所有*.c和*.h文件。可以将跟踪器条目随机地添加到固件代码,因此预构建解析可以在不同的固件构建中检测不同顺序的id和组。为了定义跟踪器id和组的唯一列举数量,无论解析顺序如何,使用文字名字的散列。

响应于预构建脚本的启动(操作92),在操作93中进行跟踪器调用,例如描述xml,并且在操作94中生成索引文件。在生成索引文件(操作94)之后,流程进行到操作95中的固件(产品)构建。

跟踪器预构建过程的结果是(1)xml文件,其中描述了所有已解析的跟踪器条目,即事件项;(2)跟踪器索引文件,其中所有源定义都包括在固件构建中。

id与组的跟踪器映射将是相当稀疏的矩阵。为了最小化映射存储,使用基于位的2d阵列,诸如如下所示。

跟踪器分析

为了使用包括跟踪器事件日志41和其相关联的跟踪事件项42的固件事件跟踪器40来执行失效分析(fa),通过装置/主机接口来实现供应商特定协议,其中装置/主机接口提供从非易失性存储器,即nand读取跟踪器缓冲器的能力。当读取了与事件项42有关的所有数据时,根据跟踪器布局来解析该数据并且通过时间戳来对事件项42进行分类。可以将解析后的数据导出到csv文件并且进行详细分析。

在驱动器运行时间期间,可以使用外部的软件工具来管理固件事件跟踪器40的系统配置。可以配置各种特征,例如系统启用/禁用特征;用于记录特定id/组的启用/禁用特征;以及nand清除策略。

图10是从客户端请求跟踪器缓冲器内容的示意图。ssd1001包括主机接口1002和非易失性存储器1003,其中一个或多个跟踪器缓冲器,即跟踪器缓冲器56、57的内容被存储在非易失性存储器1003中。已经从易失性存储器清除的该内容由跟踪器缓冲器1004来表示。

客户端1006包括ssd接口1007,该ssd接口1007根据供应商特定协议与ssd1001的主机接口1002通信。客户端1006还可以包括跟踪器可视化软件1008,从该跟踪器可视化软件1008发起请求。跟踪器可视化软件1008可以被配置成以人类可读的方式来显示事件项42及其细节。

图11至图13是描述根据本发明的实施例的跟踪固件中的事件并且使用固件事件跟踪器,特别是跟踪器事件日志信息的过程中的步骤的流程图。流程图所示的步骤是示意性的。本领域技术人员将理解,在不脱离本文所公开的发明构思的情况下,可以执行附加或替代步骤或可以改变步骤的顺序以实现本发明的方面。可以根据本文的教导由任意合适的部件来执行流程图的步骤。

图11是示出跟踪固件中的事件的流程图。参照图11,在步骤1101中,生成包括事件项42的跟踪器事件日志41,其中事件项42属于执行固件期间发生的事件。在步骤1102中,包括其事件项42的跟踪器事件日志41被存储在易失性存储器中。在步骤1103中,建立清除策略或政策以用于将事件项42从易失性存储器53清除到非易失性存储器54。在步骤1104中,建立针对事件项中的每一个的清除访问路径以用于将相应事件项从易失性存储器53清除到非易失性存储器54。在步骤1105中,执行根据所建立的清除策略并使用针对待被清除的事件项所建立的清除访问路径,将事件项选择性地从易失性存储器53清除到非易失性存储器54的操作。

图12是示出使用固件事件跟踪器40的方面的流程图,其中事件项已经被记录在跟踪器事件日志中。具体地,图12示出了预构建脚本过程的实施例。在步骤1201中,解析跟踪器事件日志41中的源文件和头文件,以检测和定义所有唯一标识符、检测和定义所有组标识符并且构建和定义唯一标识符与组标识符之间的映射。然后在步骤1202中,生成具有对输入跟踪器事件日志41的所有解析后的事件项42的描述的文件。在步骤1203中生成具有所有源定义的索引文件。

图13是示出使用固件事件跟踪器40来分析固件的另一方面的流程图。在该实施例中,主机装置使用存储在nand存储器装置中的跟踪器事件日志41来执行固件的失效分析。在步骤1301中,建立主机装置和nand存储器装置之间的通信。接下来,在步骤1302,使用事件项42的各自唯一标识符来选择跟踪器事件日志41中的各个事件项42,或使用事件项组的各自组标识符来选择事件项组。在步骤1303中,读取所选择事件项或事件项组。在步骤1304中执行解析所选择事件项42或所选择事件项42组的数据的操作。可以利用(图9的)操作94中生成的索引文件来解析数据。在步骤1305中,可以通过时间戳对单独或作为组的部分所选择的事件项42进行分类。然后在步骤1306中,对所分类事件项42的细节进行分析以执行fa。

如前所述,本发明的实施例提供一种改进的固件事件跟踪器以及使用该固件事件跟踪器的方法,特别是使用关于基于nand的存储装置的方法。固件事件跟踪器及相关方法增强供方和客户端问题的fa。

尽管前述实施例为了清楚和理解的目的已经描述了一些细节,但是本发明不限于提供的细节。本领域技术人员根据前述公开将理解,存在许多实施本发明的替代方式。因此公开的实施例是示意性的,而非限制性的。本发明旨在涵盖落入权利要求范围内的所有修改方案和替代方案。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1