专利名称::降低的本地总线通信量的磁盘驱动器操作的智能存储引擎的制作方法
技术领域:
:本发明涉及数字计算系统,特别涉及降低与所选磁盘驱动器操作有关的本地总线通信量的方法和装置。技术背景很多现代计算机器(包括如台式或膝上型个人计算机)采用一个或一个以上硬盘驱动器来存储操作系统、应用程序和数据文件。在一些情况下,多个磁盘驱动器可连接到单个PC,作为用以将操作系统与数据文件分开的构件、作为专门的音频-视频磁盘文件,或者以冗余独立磁盘阵列(RAID)的配置彼此耦合以提高性能和可靠性。磁盘驱动器可以多种配置部署在机器内部或作为可移动设备部署在外部等。为了本申请案的目的,所有这些布置都认为是"连接的"驱动器。换句话说,我们在这里使用术语"连接的"意味着不需要使数据通过网络就可以在本地总线和连接的驱动器之间传输数据。出于这个目的,可移动驱动器也认为是"连接的"。而且,在本申请案中,存储设备如通过正EE1394、USB、SATA或其它类型的连接与主机耦合的磁盘驱动器也认为是直接"连接的",以与网络连接区分。不论连接的磁盘驱动器存储系统的数量、类型和布置如何,许多主机应用程序或操作涉及到将数据从一个磁盘驱动器上的一个位置移动(或复制)至同一驱动器上的另一位置、或至另一个逻辑分区、或者至一个物理上独立的磁盘驱动器。其它常见操作包括在存储在硬盘驱动器上的文件中查找特定数据,或者在备份应用程序中同步文件。这类操作或应用的例子包括文件复制、移动、磁盘驱动器碎片整理、反病毒扫描、数据扫描(査找),以及数据迁移和转换。上述应用的已知实施方式需要涉及主机CPU,并且明显地增加所述磁盘驱动器所连接的主机总线的负荷。(在本申请案中,术语"主机总线"和"本地总线"是可互换的。存在许多此类总线,其中PCI总线便是一个众所周知的例子。)增加CPU负担并在本地总线上强加繁重通信量的磁盘操作会因此导致其它不涉及文件移动操作的应用程序变慢,因为用于执行这些后台操作的同一主机数据总线也供其它应用程序使用。例如,关于如今存在的备份和反病毒应用程序最常见的抱怨之一是它们经常是强行执行的,艮卩,它们会打断当前的应用程序并且由于大量的数据需要穿过系统总线往复传递而经常将高速计算机的性能降低。最糟糕的是,当扫描或备份过程开始执行时,如果系统内存几乎用尽,这些基本的操作会导致过多的磁盘交换发生。为了图示说明,图1在简化的概念图10中表示计算机和连接的磁盘驱动器。所述图显示了一个正在运行的文件复制操作12,由一对进出磁盘驱动器16的数据流14表示。另外,正在运行的应用程序20使得CPU22对分别存储在驱动器26和28上的其它数据执行各种读、写和处理。涉及这些驱动器的读和写操作引起额外的数据流,如30、32所示。图中的所有四个数据流导致本地总线34上的通信量。仍然需要通过硬件和软件的智能应用来提高计算机系统的性能以更好地利用现有的资源。如果由特定的常见应用程序和操作(特别是那些涉及进出连接的存储设备的数据传送的应用程序和操作)强加在CPU和其本地总线上的负荷能够减轻,那么整个系统的性能将会显著提高。通过下面参照附图对优选实施例的详细描述,可显而易见地得知其它的方面和好处。
发明内容无图1是一个主机系统和连接的DAS磁盘驱动器的简化概念图(现有技术)。图2是本发明一实施例中,采用"智能存储引擎"(在下文中称为"ISE")的主机系统和连接的DAS磁盘驱动器的简化概念图。图3是用于说明本发明中ISE的一个实施例的简化硬件方框图。图4是用于说明本发明中ISE的替代实施例的简化硬件方框图。图5是用于说明本发明中ISE的一个实施例的简化软件方框图。具体实施方式现有技术的缺陷和局限性可以通过新颖的智能存储引擎概念的不同实施例解决。所述利用本地处理器智能且通过合适的应用编程接口(API)访问的存储引擎不增加CPU负荷并且不在本地CPU总线上强加数据通信量而执行磁盘访问操作,除了适当情况下的结果数据。本发明应用于基于PC的存储等,其中一个硬驱动器密切耦合或直接连接在主机CPU内部本地总线上,或者支持外部直接连接存储的外部扩展端口上,称为"直接连接存储"或数据采集系统(DAS)。这样的CPU内部总线可以是,例如,总线规格中PCI族中的一种。外部端口可以是例如USB2,1394或者外部SATA端口。本发明可通过描绘图2进行概念上的说明。所述图显示了与图1相同的主机,其运行有与上述相同的文件复制操作以及应用程序。主要的不同在于ISE(智能存储引擎)40,其在示例中为逻辑上部署在所述本地总线34和磁盘驱动器16,26,28之间的硬件和软件的组合。图1中的文件复制过程12不再是由CPU执行而使得数据通过本地总线34往复地流动。在这里,改为由一个新的ISE过程42执行文件复制操作,并且数据流不再在本地总线中移动,因此降低了本地总线和CPU的负荷。复制由ISE执行,其仅仅通过本地总线传递很少的高级命令44。来自ISE的简单应答能够表明操作完成。在这个例子中,没有用户数据经过本地总线以执行复制操作12。因此,在一方面,本发明能够通过使用一个专门的,独立的处理器或"存储引擎"实施,其能够从主机CPU上卸去某些与磁盘相关的功能的负荷,从而降低CPU以及这些驱动器正常连接的主机总线的额外开销和负荷。本发明的另一方面,以对应用程序透明的方式支持存储引擎。本发明的另一方面,所述存储引擎能够通过应用程序编程接口执行增强功能,以便增强PC的整体性能。主机应用程序,库函数,设备驱动器等能够优选地通过适合的API利用ISE。例如,单一命令"DS—DiskdataBlockC叩y"可用于CPU以通知ISE从驱动器16(或其它驱动器)的源位置向目的地位置复制一个数据块。(见下面说明性的API函数和可能的语法)本发明的ISE通常包括一个主机接口,用于连接主机总线或"本地总线";一个驱动器接口,用于连接一个或一个以上磁盘驱动器;以及一个处理器,位于ISE本地。如图3,换句话说,所述ISE处理器独立于所述主机CPU或处理器。在一些实施例中,所述ISE还可以包括本地高速缓存存储器。以及,所述ISE可以包括其它的存储器用于存储软件,例如闪存存储器(FLASHmemory)。在一个实施例中,所述主机接口实施标准接口,如ATA,快速ATA,AT应用编程接口(ATAPI)等,这些都是众所周知的存储设备接口。根据一个替代实施例,主机接口实施串行链路接口,如SATA接口。通常,所述ISE针对直接存储连接应用程序而从主机上卸去特定任务的负荷,正如下面所详细说明的。其能够减轻主机CPU的负荷以及降低主机本地总线(比如PCI总线)上的通信量,以提高系统性能。在一个当前优选实施例中,主机应用程序或者主机操作系统可以直接调用ISE。多个客户应用程序或过程同样能够在很少或不对主机造成负荷的情况下部署。实例包含病毒扫描、备份同步支持、迁移、索引、碎片整理等等。几乎任何在CPU和连接的磁盘驱动器存储器之间的CPU本地总线上强加通信量的操作都可以全部或部分地卸荷给ISE,以提高整个系统的性能。在驱动器侧,可以部署一个或一个以上磁盘驱动器的几乎任何配置,这取决于所采用的磁盘控制器的能力。RAID功能实施为一个控制器设备(集成电路,专用集成电路(ASIC),系统芯片(SOC),印刷电路板(PCB)等)是有利的,其还可以实施ISE的功能。本发明包括如下有益效果复制或备份大的数千兆字节级视频文件不再占用主机总线或CPU。在减少涉及主机CPU的情况下支持数据流。反病毒程序可以在不中断应用程序的情况下在后台运行。在数据经过驱动器的接口时对其进行活动扫描(反病毒)。后台碎片整理可以更频繁进行。图3是简化的硬件方框图,用于说明ISE76的一个实施例。在这个当前优选实施例中,所述ISE包括一个ISE处理器内核80,其可以包括,例如,66兆赫或100兆赫IP内核处理器。所述引擎具有主机接口78,用于连接到主机本地总线84,如通常用于个人计算机和其它基于微处理器的系统的PCI总线。一个主机直接存储器访问(DMA)块82用本地总线(或"CPU总线"——在这里的意义相同)实施DMA操作。一个本地高速缓存存储器86可以被所述存储引擎访问或者设在所述存储引擎内用于数据缓冲以优化整个系统性能。可以使用SDRAM等在主机接口和驱动器接口之间的数据路径中进行数据缓冲。对于目前的技术,大约512MB缓存应所述足够,这也可以根据存储器和相关接口的发展而变化。另外,本地软件存储器,例如使用FLASH存储器88,优选地实施为能存储和更新可以由所述ISE处理器80执行的软件。也可以使用各种形式的只读存储器(ROM)。如果需要,主机接口78可以实施ATA模拟,如共同转让的标题为"RAIDControllerSystemandMethodwithATAEmulationHostInterface"的第6,772,108Bl号美国专禾lj所述,其以引用的形式并入本文中。在一个实施例中,数据路径带宽可以是高速缓存器800MB/S;主机533MB/S;以及驱动器400MB/S。标记为"RAIDXOR"的方框90指用于实施RAID操作的构件,优选地是在数据路径上"即时"的。磁盘驱动器存储系统的即时的异或(XOR)冗余操作在第6,018,778号美国专利中描述,其以引用的形式并入本文中。磁盘驱动器接口92可以采用各种形式。在一个简单的例子中,其包括标准ATA接口,用于连接最多4个IDE磁盘驱动器。其可包括一个或一个以上UDMA接口;或者一个或一个以上SATA接口;或其它技术。本发明的ISE概念可应用于DAS系统中可用的任何需要的磁盘驱动器/驱动器接口技术。标记为驱动器切换器94的方框本质上包括数据路径切换和匹配函数,如申请人的第WO2004/095255A2号PCT国际公开案以及相应的第US-2004-0264309Al号美国专利申请公开案,其均以引用的形式并入本文中。在当前优选商业实施例中,RAID异或引擎包括在这个驱动器切换器94中,尽管在图3中表示为一个独立的方框。图4为存储引擎另一实施例的简化的方框图。类似图3或4的实施例可以方便地实施为磁盘控制器单元的一部分,例如,在主板或者子板上。在这个例子中,设有一个100兆赫的专门存储处理器,尽管根据需要支持的所要功能或者性能要求,其频率可高出或低出许多。高速缓存器可以包含1GB或者更多,这取决于应用程序要求。在图4的例子中,数据路径带宽可以是高速缓存器2GB/S;PCI-Express主机接口250MB/S(IX)或者1GB/S(4X);以及驱动器1.2GB/S。另一实施例实施多达如512个64位字的数据活动扫描和匹配,用于类似病毒签名扫描的应用程序。RAID等级O,1,XL,5都可以包括在内。在进出所述主机总线的数据传送之前,也可对数据流和数据流队列进行管理。操作在运行中,有两个一般类型的操作。根据第一模式,标准文件操作,如文件复制和文件移动,被文件系统过滤器截取并且直接送到所述ISE以在驱动器之间移动数据块。在第二模式中,定义一个API用于第三方应用程序,如反病毒软件、备份软件、磁盘镜像、磁盘碎片整理工具等等。其中每个都将依次讨论。现在参考图5,这个简化的命令和数据流程图表示应用程序50,其可以使用或可以不使用DriectStorAPI命令。文件系统过滤器模块54监视给操作系统(OS)文件系统56的命令。其检查给出的命令是否指向当前连接在与所述存储引擎66相关的控制器的磁盘驱动器。如果所述命令指向这样的驱动器(例如,图5中的驱动器B(72))并且如果一个命令被所述过滤器54辨识出是其能够处理的预定命令集中的一个,那么所述过滤器54截取所述命令,这样所述命令不会到达标准操作系统文件系统,所述文件系统由内核56和标准磁盘驱动器代码58实施。而是,所述过滤取54使用DirectStorAPI直接向经装配以实施所述API的特定驱动器60发送一个或一个以上命令。所述驱动器60设置为能够识别DirectStorAPI命令并且将它们直接转递到所述存储引擎66以执行。在另一实施例中,第三方应用程序50在其代码中使用了DSAPI52。因而,所述应用程序将命令直接发送给所述驱动器60,驱动器60又将它们转递给所述存储引擎66。所述存储引擎响应于DSAPI而执行代码,以执行磁盘驱动器操作,如本地移动和复制,意味着不需要在PCI总线62上放置任何数据。对所述引擎的每次调用都被分配一个标签用于识别,正如下面进一步说明的。所述引擎66可选地包括高速缓存存储器68用于缓冲进出连接的驱动器A(70)和/或B(72)的数据传送,从而直到操作完成为止不需要穿过所述PCI本地总线以及不使用主机CPU循环。正如所提到的,任何合适的随机访问存储器都可以用来实施所述高速缓存,如DRAM或SDRAM。在一个实施例中,一个磁盘控制器印刷电路板在其板上包括存储引擎和高速缓存,连同主机和驱动器接口。这些API为独立软件开发商(ISV)定义,如反病毒、游戏、流数字媒体密集的应用程序、可能会要求私人安全隐藏存储空间的应用程序、备份和碎片整理软件。通过调用这些API,所述应用程序能够直接向NetCellISE发送命令。所述API能够以任何形式实施或者发布,包括但不限于——动态连接库(DLL)。--Windows月艮*。——组建对象模型(COM)对象。下面是ISE激活的主机应用程序/库/设备驱动器与本发明一个实施例的ISE之间的ISEATA命令接口的说明性例子。这个实施例中使用商标"DirectStor"作为智能存储引擎的简写形式。DirectStor说明性命令特征集块复制/移动命令1、说明这些命令/子命令定义为在两个数组之间复制或移动数据块,或者在同一数组内移动数据。第二数组可以是与第一数组连接到同一个卡的内部数组或者是连接到eSATA端口的外部数组。2、命令代码83h3、子命令先前的特征寄存器的目录具体说明这些子命令。-MOVE—SET—SRC—LBA-MOVE—SET丄AST—LBA-MOVE—SET—DEST—LBA-MOVE—PROCEED-MOVE—SUSPEND-MOVE—ABORT-MOVE_STATUSMOVE—SET—SRC—LBA用于设置所述源数组的起始逻辑块地址(LBA)的子命令。输入<table>tableseeoriginaldocumentpage11</column></row><table>注意所述命令标签为任意8位正数。其必须与序列的第一个命令匹配。输出<table>tableseeoriginaldocumentpage11</column></row><table><table>tableseeoriginaldocumentpage12</column></row><table>输出<table>tableseeoriginaldocumentpage12</column></row><table><table>tableseeoriginaldocumentpage13</column></row><table><table>tableseeoriginaldocumentpage14</column></row><table>注意如果有状态错误,检査错误寄存器的值以确定错误。命令标签是任意8位正数。MOVE—PROCEED用于进行己发出的块复制/移动命令的执行的子命令。输入<table>tableseeoriginaldocumentpage14</column></row><table>注意所述命令标签为任意8位正数。其必须与序列的第一个命令匹配。<table>tableseeoriginaldocumentpage14</column></row><table><table>tableseeoriginaldocumentpage15</column></row><table>MOVE—SUSPEND用于挂起已发出的块复制/移动命令的执行的子命令。输入<table>tableseeoriginaldocumentpage15</column></row><table>MOVE_ABORT用于取消正在发出的块复制/移动命令的子命令。输入<table>tableseeoriginaldocumentpage16</column></row><table>输出<table>tableseeoriginaldocumentpage16</column></row><table>MOVE—STATUS用于获取正在发出的块复制/移动命令的进程状态的子命令。输入<table>tableseeoriginaldocumentpage17</column></row><table>状态注意-如果有状态错误,检查错误寄存器的值以确定错误。命令标签是任意8位正数。下面是本发明的高层API的一些例子。这些仅为说明性的而不是完全的。本发明的一些实施例不需要使用API;—些实施方法对于应用程序将是透明的。快速块移动APIDS一DiskdataBlockCopy这个函数将数据块从一个位置复制到同一磁盘巻的另一位置或者与ISE相连的另一磁盘巻。intDS一DiskdataBlockCopy(DS_RE(^UESTDsr,DS一VOL一BLOCK—LOCATION*DestBlockLocation,DS一VOL一BLOCK—LOCATION*SrcBlockLocation,PFN一PROGRESSProgressCallback);参数DsrDirectStor请求参数。每个请求与一个标签值相关。通过回调函数向调用程序通知这个标签值。所述API的调用程序可以通过用相同的标签调用取消API来取消操作。DestBlockLocation包含目的地巻块的位置信息。SrcBlockLocation包含源巻块的位置信息。ProgressCallback回调函数的指针,将每隔特定的时间调用所述回调函数以向调用程序进程通知已发出的命令。返回值如果成功返回0,如果有错误返回非零值。错误代码说明请见5.5节。DS—DiskdataBlockMove这个函数将数据块从一个位置移动到相同磁盘巻的另一位置或者与ISE连接的另一磁盘巻。intDS—DiskdataBlockMove(DS—REQUESTDsr,DS—VOL—BLOCK—LOCATION*DestBlockLocation,DS_VOL—BLOCK—LOCATION*SrcBlockLocation,PFN—PROGRESSProgressCallback);参数DsrDirectStor请求参数。每个请求与一个标签值相关。通过回调函数向调用程序通知这个标签值。所述API的调用程序可以通过用相同的标签调用取消API来取消操作。DestBlockLocation包含目的地巻块的位置信息。SrcBlockJLocation包含源巻块的位置信息。ProgressCallback回调函数的指针,将每隔特定的时间调用所述回调函数以向调用程序进程通知已发出的命令。返回值如果成功返回O,如果有错误返回非零值。错误代码说明请见5.5节。DS一DiskdataBlockErase所述函数从磁盘巻上删除数据块。intDS—DiskdataBlockErase(DS—REQUESTDsr,DS—VOL一BLOCK丄OCATION*BlockLocation,PFN一PROGRESSProgressCallback);参数DsrDirectStor请求参数。每个请求与一个标签值相关。通过回调函数向调用程序通知这个标签值。所述API的调用程序可以通过用相同的标签调用取消API来取消操作。BlockLocation包含巻块的位置信息。ProgressCallback回调函数的指针,将每隔特定的时间调用所述回调函数以向调用程序进程通知已发出的命令。返回值如果成功返回0,如果有错误返回非零值。错误代码说明请见5.5节。DS一DiskdataBIoc訓I所述函数用给定的数据模式填充磁盘巻上的块。intDS—DiskdataBlockFill(DS一REQUESTDsr,DS一VOL一BLOCK—LOCATION*BlockLocation,ULONGPattern,P既PROGRESSProgressCalback);参数DsrDirectStor请求参数。每个请求与一个标签值相关。通过回调函数向调用程序通知这个标签值。所述API的调用程序可以通过用相同的标签调用取消API来取消操作。BlockLocation包含巻块的位置信息。Pattern包含数据模式。ProgressCallback回调函数的指针,将每隔特定的时间调用所述回调函数以向调用程序进程通知已发出的命令。返回值如果成功返回O,如果有错误返回非零值。错误代码说明请见5.5节。DS—CreatDisklmage所述函数在目标巻上创建巻的完全磁盘镜像。intDS一CreatDisklmage(DS一charDestVolume,charSrcVolume,USHORTCommadTag,PFN_PROGRESSProgressCallback);参数Volume由操作系统分配的目的地巻字母。Volume由操作系统分配的源巻字母。CommandTag每个DirectStorAPI用命令标签标记。这个标签在调用程序提供的回调函数中传递。这将有助于使调用程序对于所有或一群API具有单个回调函数。同时,API的调用程序也可以通过将同一标签传给取消命令API来取消操作。ProgressCallback回调函数的指针,将每隔特定的时间调用所述回调函数以向调用程序进程通知己发出的命令。返回值如果成功返回O,如果有错误返回非零值。错误代码说明请见5.5节。DS—DiskdataBlockRead应用程序调用这个函数以从磁盘巻中读取数据块。intDS_DiskdataBlockRead(DS一REQUESTDsr,DS—VOL—BLOCKJLOCAT腹*BIockLocation,PBYTEDataBuffer);参数DsrDirectStor请求参数。每个请求与一个标签值相关。通过回调函数向调用程序通知这个标签值。所述API的调用程序可以通过用相同的标签调用取消API来取消操作。BlockLocation包含巻块的位置信息。DataBuffer指向输入数据缓冲器的指针。返回值如果成功返回0,如果有错误返回非零值。错误代码说明请见5.5节。DSDiskdataBlockWrite应用程序调用这个函数以将数据块写入磁盘巻。intDS—DiskdataBlockWriteCDS—REQUESTDsr,DS—VOL—BLOCK—LOCATION*BlockLocation,PBYTEDataB函r);参数DsrDirectStor请求参数。每个请求与一个标签值相关。通过回调函数向调用程序通知这个标签值。所述API的调用程序可以通过用相同的标签调用取消API来取消操作。BlockLocation包含巻块的位置信息。DataBuffer指向输出数据缓冲器的指针。返回值如果成功返回0,如果有错误返回非零值。错误代码说明请见5.5节。DS—Abort使用这个函数取消已向ISE发出的命令。intDS—Abort(DS—REQUESTDsr,);参数DsrDirectStor请求参数。每个请求与一个标签值相关。通过回调函数向调用程序通知这个标签值。所述API的调用程序可以通过用相同的标签调用取消API来取消操作。返回值如果成功返回O,如果有错误返回非零值。说明性反病毒APIDS—ScanVolumeforSignature这个函数对巻进行扫描以寻找特定签名。所述应用程序能够略过实际的病毒签名或者指向存储在安全磁盘区域上的签名的标签。间隔特定时间调用略过的回调函数以通知进程。intDS—ScanVolumeforSignature(charVolume,USHORTCommadTag,DS—SIGNATURE*pSignaturePFN一PROGRESSProg訓Callback);参数Volume由操作系统分配的目标巻字母。CommandTag每个DirectStorAPI用命令标签标记。这个标签在调用程序提供的回调函数中传递。这将有助于使调用程序对于所有或一群API具有单个回调函数。同时,API的调用程序也可以通过将同一标签传给取消命令API来取消操作。pSignature病毒签名。其可以是实际病毒签名或者是指向存储在安全区域上的签名的标签。请参见数据结构节获取更多信息。返回值如果成功返回0,如果有错误返回非零值。错误代码说明请见5.5节。其它说明性的函数可包括以下函数DS—AbortScanDS—ScanVolumeBlockDS一StorSignatureDS—WriteToSecureDiskZoneDS—ReadFromSecureDiskZoneDS—SavePasswordDS—VerifyPassword数据结构DS一RE(JUEST在一个实施例中,对ISE的每个请求都与一个标签值相关联。这个标签可在调用程序回调函数中传回给调用程序。这将有助于使调用程序对于所有或一群API具有单个回调函数。API的调用程序可以通过用相同的标签调用取消API来取消操作。typedefstructWORDRequestTag;DWORDTimeout;/*延时以毫秒计,由DirectStor强制为最大30秒*/DWORDNotificationlnterval;/*以毫秒计的回调函数间隔,由DirectStor强制为最小0.5秒,最大30秒*/intProcessID;intThreadID;}DS_REQUEST;DS_VOL—BLOCK—LOCATIONtypedefstructcharVolume;/*由操作系统分配的磁盘巻字母*/WORDControlWord;/*1=整个巻,2=巻块*/ULONGLONGStartLBA;/*巻块的起始逻辑块地址*/ULONGLONGSizelnSectors;/*扇区中巻块的大小*/}DS—VOL—BLOCK—LOCATION;DS—SIGNATURE/*搜索特定的参考签名*/根据以上描述,本发明的一些主要特征和方面可描述为包括一种存储引擎装置,其针对直接连接到至少一个硬盘驱动器而设置,且配置成执行通常由主机CPU执行的功能,所述主机CPU通过高速本地总线或者主机串行链路而连接到存储处理设备以作为直接连接的存储设备。通常,所述存储引擎接收命令,响应于接收到的命令对数据执行数据移动或处理指令(所述数据是存储在硬盘驱动器上的数据,或者是去往主机或者磁盘驱动器的在本地RAM存储器上高速缓存的数据),并向所述连接的主机处理器返回结果。如上所示,这些命令可为在同一驱动器内或者跨驱动器复制或者移动数据,或者执行如病毒扫描的操作。重要的是,这些操作是由存储引擎执行的,其在本地总线或主机串行链路上移动用户数据通信。将使用所述存储引擎的命令可以通过截取从主机处理器到操作系统的命令而发生,或者通过预定的应用程序编程接口(API)而发生。这使得特殊数据操作可供应用程序(如反病毒程序)使用,而不会为主机CPU和/或本地总线增加负荷。这样的指令能够基于逻辑地址块(LBA)源和目的地信息识别目标数据。这里所揭示的类型的存储引擎可以通过不同的方式实施和使用,其中包括大体上在单一集成电路中;大体上在单一电路板中;集成在PC中;在数字视频记录系统中实施;在数字视频系统中实施,或者以所属领域的技术人员通过上述内容将容易得知的其它许多方式实施。对于所属领域的技术人员,显而易见可以在不脱离本发明的基本原理的情况下对上述实施例的细节进行变化。本发明的范围应该仅由所附权利要求书确定。权利要求1.一种智能存储引擎装置,用于降低关于连接的存储器操作的主机总线通信量,所述装置包括主机接口,用于从主机应用程序接收预定的指令或函数调用;驱动器接口,将所述引擎耦合到至少一个连接的磁盘驱动器以用于数据传送;以及所述存储引擎的板载处理器,用于响应于接收到的指令而实施与连接的存储设备的数据传送;所述存储引擎经配置而实施与所述连接的存储设备的所述数据传送,而不将用户数据放置在所述主机总线或主机串行链路上。2.根据权利要求l所述的存储引擎装置,其中,所述驱动器接口包括驱动器切换器,用于与多个磁盘驱动器进行可配置的连接。3.根据权利要求1所述的存储引擎装置,包括DMA组件,用于与连接的主机进行DMA传送。4.根据权利要求l所述的存储引擎装置,经设置通过预定的应用程序编程接口(API)从所述主机CPU接收数据移动或处理指令。5.根据权利要求l所述的存储引擎装置,包括本地高速缓存存储器,用于临时存储用户数据。6.根据权利要求l所述的存储引擎装置,包括用于在选取的文件流中即时扫描数据且将所述扫描数据与预定的参考序列匹配的构件。7.—种用于以降低的本地总线通信量执行磁盘驱动器操作的方法,所述方法包括-定义至少一个主机应用程序函数,其要求访问至少一个磁盘驱动器并且具有对应的函数调用;在存储引擎装置中实施所述函数调用;将所述存储引擎装置连接到主机本地总线以及至少一个连接的磁盘驱动器;监视所述本地总线,以便当被断言时检测所述函数调用;以及响应于所述检测到的函数调用,在所述存储引擎装置中执行相应的函数,而不将用户数据放置在所述本地总线上;以及完成后通过所述本地总线返回所述执行的函数的结果。8.根据权利要求7所述的执行磁盘驱动器操作的方法,其中,在所述存储引擎中实施的所述主机应用程序函数包括文件复制和文件移动操作。9.根据权利要求7所述的执行磁盘驱动器操作的方法,包括通过以下方式在主机软件内执行操作以完成操作系统调用操作避开标准内建操作内核系统文件缓存软件层和硬件接口函数调用而改为将至少一个相应的命令直接发送给所述存储引擎。10.根据权利要求7所述的方法,包括在两个磁盘驱动器之间移动数据,而不为所述主机本地总线或串行连接加载负荷。11.根据权利要求7所述的执行磁盘驱动器操作的方法,包括提供文件系统过滤器模块,用于监视到所述操作系统文件系统的命令;在所述文件系统过滤器模块中,检査给出的命令是否指向当前连接到所述存储引擎的磁盘驱动器;以及如果命令是指向连接的磁盘驱动器,并且如果所述命令被所述过滤器模块识别出为预定的其可以处理的命令集中的一个,则拦截所述命令以在所述存储引擎中处理。12.根据权利要求11所述的方法,包括向所述主机提供关于操作状态的周期性信息、排列请求的操作的状态以及在所述操作完成时提供全部结果。13.根据权利要求11所述的方法,其中,最终结果包括对主机的指示,指示所述请求的操作没有完成或者所述操作成功地完成。14.根据权利要求ll所述的方法,其中,所述最终结果包括所请求的结果数据的递送。15.根据权利要求11所述的方法,其中,操作包括从第一磁盘驱动器向第二磁盘驱动器移动文件、文件复制操作、磁盘巻合并、病毒扫描、RAID驱动-阵列重建中的一项操作。16.根据权利要求ll所述的方法,其中,所述操作包括搜索存储的用户数据。17.—种用于以降低的本地总线通信量执行磁盘驱动操作的方法,所述方法包括定义至少一个应用程序函数,其需要访问至少一个磁盘驱动器;在具有本地处理器和本地存储器的存储引擎装置中实施所述函数;将所述存储引擎装置连接到主机本地总线以及至少一个连接的磁盘驱动器;通过预定的API从应用程序接收函数调用;响应于所述接收到的函数调用,在所述存储引擎装置中执行相应的函数,而不将用户数据放置在所述本地总线上,所述执行包括访问所述至少一个连接的磁盘驱动器;以及,在完成后向所述应用程序返回所述执行的函数的结果。18.根据权利要求17所述的方法,其中,所述应用程序是反病毒应用程序。19.根据权利要求17所述的方法,其中,所述API包括磁盘块操作。20.根据权利要求17所述的方法,其中,所述API包括搜索操作。全文摘要本发明揭示一种新颖的智能存储引擎的概念,其是针对例如文件复制和移动这样的连接磁盘驱动器操作,以及例如搜索、病毒扫描以及卷合并这样的更加精细的过程。在一个实施例中,利用本地处理器的智能并通过适合的驱动器(60)和API(App.B)访问的存储引擎(40)进行磁盘访问操作,而不会加重主机CPU(22)的负担且不会向本地CPU总线(34)上强加数据通信量,除了在适当的情况下返回结果数据。文档编号G08C15/00GK101305334SQ200580048835公开日2008年11月12日申请日期2005年12月22日优先权日2004年12月29日发明者安迪·米尔斯,肯特·P·费希尔申请人:辉达公司