专利名称:存储设备硬件调试的方法及系统的制作方法
技术领域:
本发明涉及计算机技术领域,更具体地涉及存储设备的硬件调试技术。
背景技术:
随着材料科学的发展以及一些应用对存储带宽和延迟的较高需求,一些新的高 速存储设备逐渐被研究开发出来,如闪存(Flash Memory)、固态硬盘(SSD :Solid State Disk)以及基于内存颗粒的存储设备等,以弥补磁盘性能的不足。这一类产品尚无足够的技 术积累,而且本身高带宽低延迟的特性也容易导致缺陷(Bug)的产生。产生一次缺陷通常 对应于某一种读写模式(Pattern),开发者经常需要利用这一序列来重现缺陷进行调试。
为了较全面地对一个开发中的存储产品进行测试和调试,采用确定的读写序列作 为输入往往不能较好地覆盖所有可能的问题。将存储设备接入真实的计算机系统,由多种 应用程序、基准测试程序(Benchmark)通过操作系统对该设备发送读写请求,是比较好的 检测方法。然而由于操作系统进程调度、1/0调度等服务的不确定性,能够导致一次设备缺 陷的读写模式很难被记录并重现。本发明解决了这一问题,可以在操作系统内核中以较小 的开销来记录和重现导致存储设备bug产生的读写模式。 现有技术有两种途径可以一定程度上解决这种问题硬件发包器或者软件构造读 写模式。前者直接对设备控制器发送特定的读写序列,并检测结果。 一般的检测方式都是先 向某一位置写,然后再读进行比较,从而判断功能上是否正常。这意味着对于所有写操作, 必须保存其所写入的内容,为之后的读校验提供基准。如果导致一次bug产生需要大量的 不同位置的写操作,那么发包器很难拥有大的空间来保存之前写的内容。因此,一种替代的 方案即用软件来构造读写序列,通过操作系统对设备进行访问。这种方法只能勉强适用于 模式比较规整的读写,比如顺序写、顺序读、逆序写、逆序读等。随机的读写序列在操作系统 中会被重排,即使是前述规整的读写也可能被重排。
因此,目前需要一种不依赖于读写序列的硬件调试技术。
发明内容
为了解决上述问题之一,本发明提出了一种存储设备硬件调试的方法,包括以下 步骤建立被调试存储设备的镜像,该镜像的存储单元与被调试存储设备的存储单元一一 映射;对被调试存储设备和镜像进行读写操作;根据镜像定位被调试存储设备的缺陷。
根据本发明的实施例,对被调试存储设备和镜像进行读写操作包括在对被调试 存储设备进行写操作时,对镜像中的相应的存储单元进行相同的写操作;在对被调试存储 设备中的存储单元进行读操作时,读取镜像中相应的存储单元的数据。 根据本发明的实施例,根据镜像定位被调试存储设备的缺陷的步骤包括将被调
试存储设备中读取的数据与镜像中相应的存储单元进行对比,若不一致则报错。 根据本发明的实施例,对被调试存储设备和镜像进行写操作包括在镜像中设置
位图,该位图指示被调试存储设备的相应的存储单元是否进行过写操作。
4
根据本发明的实施例,对被调试存储设备进行写操作包括检查被调试存储设备 相应的存储单元所对应的位图,如果位图指示存储单元未进行过写操作,则在镜像中申请 一个新的存储单元,对新的存储单元进行写操作,并将对应的位图置位。 根据本发明的实施例,对被调试存储设备和镜像进行读操作包括根据位图判断 存储设备的相应的存储单元是否进行过写操作;如果存储单元进行过写操作,则读取存储 设备和镜像中相对应的存储单元的数据。 根据本发明的实施例,根据镜像定位被调试存储设备的缺陷包括如果存储单元 未进行过写操作,则报错;如果存储设备和镜像中相对应的存储单元的数据不一致,则报 错。 根据本发明的实施例,该方法还包括记录读写请求的序列,并将读写请求所对应 的镜像中的存储单元的数据按时间备份。 根据本发明的实施例,镜像设置于虚拟磁盘或物理磁盘上。 本发明还提出了一种存储设备硬件调试的系统,包括中央处理器、被调试存储设 备和被调试存储设备的镜像,镜像的存储单元与被调试存储设备的存储单元一一映射。其 中,中央处理器用于对被调试存储设备和镜像进行读写操作,并根据镜像定位被调试存储 设备的缺陷。 本发明所提出的存储设备硬件调试的方法及系统,可以辅助高速设备的硬件调 试,使调试难度降低,縮减硬件的开发周期。
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变 得明显和容易理解,其中 图1为根据本发明的一个实施例的存储设备硬件调试方法的流程图;
图2为根据本发明的一个实施例的存储设备硬件调试方法的流程图;
图3为根据本发明的一个实施例的存储设备硬件调试系统的结构示意图。
具体实施例方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出。下面通过参考
附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。 本发明的一个实施例是在其他的高速存储介质(Media)上建立被调试存储设备
的一个镜像,操作系统所发出来的读写请求在驱动层除了交给被调试存储设备,或称被调
试磁盘处理外,也向镜像发送一份。如果设备的某个位置进行过写操作,那么再次读的时
候,需要从镜像上读相应位置的数据,二者比较以确定设备上数据的正确性。作为本发明
的一个实施例,可以记录之前的读写请求序列,备份特定时刻特定位置的数据,用来辅助调试。 如图1所示为本发明的一个实施例的存储设备硬件调试方法的流程图。如图1所 示,该方法100包括以下步骤 S101 :建立被调试存储设备的镜像,该镜像的存储单元与被调试存储设备的存储 单元一一映射。
作为本发明的一个实施例,存储设备的镜像设置于高可靠性和高速读写的设备 上,例如,可以采用虚拟磁盘。被调试设备和驱动的功能正确性将以虚拟磁盘的内容作为比 较和判断的基准,因此使用高可靠性的设备作为镜像能够提高调试的准确性。虚拟磁盘的 读写速度优选地高于被调试设备的读写速度,特别地,如果高于一个数量级以上为最佳。这 样可以尽量避免和排除虚拟磁盘读写所带来的一些干扰因素,例如延迟,从而利于问题的 准确定位。 作为本发明的一个实施例,被调试存储设备为高速设备,被调试存储设备的镜像 采用物理内存作为虚拟磁盘的载体,对于现有所有高速外设而言,物理内存都满足上述高 可靠性和高速读写的要求。 作为本发明的一个实施例,可以以物理内存页面簇作为虚拟磁盘的基本单元,簇 的大小一般为1、2、4个页面,视系统内存的资源可用性和碎片程度而定,在编译期或者运 行期手工指定,例如,如果系统内存较大、碎片较少,则可以将簇的大小指定得稍大一些。
S102 :对被调试存储设备和镜像进行读写操作。 作为本发明的一个实施例,驱动程序从操作系统获得读写请求,处理之后最终要 发送给被调试存储设备,或称目标设备。若驱动程序发出了对设备写的命令,则对被调试存 储设备和其镜像执行相同的写操作。若驱动中发出了对设备读的命令,则返回被调试存储 设备和镜像中的相应位置的数据。
S103 :根据镜像定位被调试存储设备的缺陷。 作为本发明的一个实施例,在中央处理器发出读命令时,将被调试存储设备和镜 像中的相应位置的数据进行对比,如果不一致则报错。 作为本发明的一个实施例,还可以在镜像中设备位图(bitm即)指示某个存储单 元是否被写过,例如,将被写过的存储单元对应的位图置位。 如图2所示为本发明的另一个实施例的存储设备硬件调试方法的流程图。如图2 所示,该方法包括以下步骤 S201 :驱动程序从操作系统(0S)获得读写请求; S202 :将读写请求进行处理之后要发送给目标设备,即被调试存储设备;
S203 :判断请求类型,如果为写请求,则转到S204,如果为读请求,则转到S205 ;
S204 :如果为写请求,则对被调试存储设备的镜像例如虚拟磁盘进行与被调试存 储设备相同的写操作,如果所对应的存储单元的位置未被写过,则申请一个页面簇,并将相 应块的bitmap位置位; S205 :检查虚拟磁盘上相应块的bitmap,如果该bitmap指示所对应的存储单元被 写过,则转到S206,如果未被写过,则转到S208 ;
S206 :从虚拟磁盘中读取数据; S207 :将虚拟磁盘中读取的数据与被调试存储设备中读取的数据进行比较,如果 相同,则程序结束,如果不同,则转到S208 ;
S208 :报告缺陷(bug dump)数据。 作为本发明的一个实施例,可以在必要的时候可以记下出错的测试用例下的读写 序列,并将相应块的数据按时间备份,以便于硬件调度者进行分析。 举例来说,以二元组〈读写位置,读写类型(R为读,W为定)〉构成的序列来来表示一个读写模式〈1,R〉,〈2,W〉,〈3,R〉,〈4,W〉,〈2,R〉。此模式经过操作系统的I/O调度之 后可能变为〈1, R>, 〈3, R>, 〈2, W>, 〈4, W>, 〈2, R>。假设在此之前,系统对被调试设备无读 写操作,那么驱动程序中将要执行的操作为 1)获得请求〈1, R〉,处理完请求后直接发送至存储设备。读操作完成后检查虚拟 磁盘位置1的bitm即,为O,表示之前没被写过,不做额外操作。
2)获得请求〈3, R>,同1); 3)获得请求〈2, W>,由于是写请求,无条件地将要写的内容写至虚拟磁盘的位置 2,将将此位置的bitm即置为1 ; 4)获得请求〈4, W>,同3),但是目标位置不同; 5)获得请求〈2, R>,处理完请求后直接发送至存储设备,读操作完成后查看虚拟 磁盘位置2的bitm即,为l,表示之前被写过。则从虚拟磁盘中读出位置2的内容,与存储 设备读回来的内容进行比较。 这里所说的位置,通常是以磁盘块为单位,例如,采用的磁盘块大小可以为512字 节。 如图3所示为根据本发明的一个实施例的存储设备硬件调试系统的结构示意图, 其中该系统包括中央处理器301 、被调试存储设备302和被调试存储设备的镜像303。其中, 镜像303的存储单元与被调试存储设备302的存储单元一一映射,中央处理器301用于对 被调试存储设备302和镜像303进行读写操作,并根据镜像303定位被调试存储设备302 的缺陷。 在本发明的具体实施中,镜像用的物理内存也可以用读写速度高、可靠的存储设 备来替代。 本发明所提出的存储设备硬件调试的方法及系统可以辅助高速设备的硬件调试, 使调试难度降低,縮减了硬件的开发周期。 尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以 理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换 和变型,本发明的范围由所附权利要求及其等同限定。
权利要求
一种存储设备硬件调试的方法,其特征在于,包括以下步骤建立被调试存储设备的镜像,所述镜像的存储单元与所述被调试存储设备的存储单元一一映射;对所述被调试存储设备和所述镜像进行读写操作;根据所述镜像定位所述被调试存储设备的缺陷。
2. 根据权利要求1所述的存储设备硬件调试的方法,其特征在于,对所述被调试存储 设备和所述镜像进行读写操作包括在对所述被调试存储设备进行写操作时,对所述镜像中的相应的存储单元进行相同的 所述写操作;在对所述被调试存储设备中的存储单元进行读操作时,读取所述镜像中相应的存储单 元的数据。
3. 根据权利要求2所述的存储设备硬件调试的方法,其特征在于,根据所述镜像定位 所述被调试存储设备的缺陷的步骤包括将所述被调试存储设备中读取的数据与所述镜像中相应的存储单元进行对比,若不一 致则报错。
4. 根据权利要求1所述的存储设备硬件调试的方法,其特征在于,对所述被调试存储 设备和所述镜像进行写操作还包括在所述镜像中设置位图,所述位图指示所述被调试存储设备的相应的存储单元是否进 行过写操作。
5. 根据权利要求4所述的存储设备硬件调试的方法,其特征在于,对所述被调试存储设备进行写操作包括检查所述被调试存储设备相应的存储单元所对应的位图,如果所述位图指示所述存储 单元未进行过写操作,则在所述镜像中申请一个新的存储单元,对所述新的存储单元进行 所述写操作,并将所述对应的位图置位。
6. 根据权利要求4所述的存储设备硬件调试的方法,其特征在于,对所述被调试存储设备和所述镜像进行读操作包括所述中央处理器根据所述位图判断所述存储设备的相应的存储单元是否进行过写操作;如果所述存储单元进行过写操作,则读取所述存储设备和所述镜像中相对应的存储单 元的数据。
7. 根据权利要求6所述的存储设备硬件调试的方法,其特征在于,根据所述镜像定位 所述被调试存储设备的缺陷包括如果所述存储单元未进行过写操作,则报错;如果所述存储设备和所述镜像中相对应的存储单元的数据不一致,则报错。
8. 根据权利要求1所述的存储设备硬件调试的方法,其特征在于,还包括 记录所述读写请求的序列,并将所述读写请求所对应的所述镜像中的存储单元的数据按时间备份。
9. 根据权利要求1所述的存储设备硬件调试的方法,其特征在于,所述镜像设置于虚 拟磁盘或物理磁盘上。
10. —种存储设备硬件调试的系统,其特征在于,包括中央处理器、被调试存储设备和 被调试存储设备的镜像,所述镜像的存储单元与所述被调试存储设备的存储单元一一映 射,其中,所述中央处理器用于对所述被调试存储设备和所述镜像进行读写操作,并根据所述镜 像定位所述被调试存储设备的缺陷。
全文摘要
本发明提出了一种存储设备硬件调试的方法及系统。该方法包括以下步骤建立被调试存储设备的镜像,该镜像的存储单元与被调试存储设备的存储单元一一映射;对被调试存储设备和镜像进行读写操作;根据镜像定位被调试存储设备的缺陷。本发明所提出的存储设备硬件调试的方法及系统,可以辅助高速设备的硬件调试,使调试难度降低,缩减硬件的开发周期。
文档编号G11C29/00GK101697285SQ20091023529
公开日2010年4月21日 申请日期2009年9月30日 优先权日2009年9月30日
发明者历军, 聂华, 邵宗有, 郑规 申请人:曙光信息产业(北京)有限公司;