改进数据传送的控制器设备和方法

文档序号:6512776阅读:264来源:国知局
专利名称:改进数据传送的控制器设备和方法
技术领域
本发明涉及诸如串行ATA(SATA)主控制器的控制器。更具体地,本发明涉及减小主机和主存储器的数据传送任务从而减少主机和控制器之间的接口上的数据传送量的增强型控制器。
背景技术
在计算机和计算机体系结构领域中,数据存储部件和它们的接口在制造上和操作上变得更加复杂,从而造成数据传送率和存储率的提高。诸如计算机硬盘的部件和诸如光盘读/写(CD-RW)驱动器的驱动器之间的数据传送率按照比主计算机的存储器的周期时间(时钟脉冲速度)的提高更大的比例增大。例如,采用称为高级技术附加装置(ATA),也称为集成驱动电子设备(IDE),的盘驱动接口标准的数据存储部件目前具有至少每秒2.4吉位(Gb/s)的传送率。已进化到称为串行ATA(SATA或S-ATA)标准的ATA标准的特征在于部件本身集成有部件控制器。
各部件间的数据传送典型地涉及从第一部件向主存储器传送数据,并且然后从该主存储器向第二部件传送数据。通过和控制器,例如主控制器,进行接口(一般经由例如IDE电缆的接口电缆),数据存储部件和主计算机连接。诸如ATA控制器或SATA控制器的控制器通过总线,例如PCI总线或PCI快速总线(express bus),和主计算机以及它的存储器接口。PCI总线是根据外设部件互连(PCI)总线标准制造和操作的接口总线。
在以上面提到的相对高的数据传送率从数据存储部件存取数据对主机、主存储器、以及把该主机连接到控制器的总线施加负载。此外,其它部件和它们的接口,例如通用串行总线(USB)和固件接口,在和主机以及主存储器连接的总线上竞争数据传送时间。
因此,希望具有一种改进型的控制器设备和方法,其通过卸载通常要求主机、主存储器以及主机和该控制器间的总线参与的任务来减少在数据传送操作期间主机、主存储器以及主机和该控制器之间的总线的使用。

发明内容
本发明用一种在计算机系统内的数据存储部件间传送数据的增强型控制器设备来体现。该增强型控制器设备包括用于使该控制器和多个数据存储部件,例如硬盘部件和CD-RW部件,连接的部件接口逻辑,并且包括用于使该控制器通过诸如PCI总线的总线和主机或主计算机连接的主机接口逻辑。该主机包括若干其它部件,例如与其连接的主存储器。在数据存储部件间的常规数据传送中,来自源部件的数据由该控制器读并且经总线从该控制器传送到主机和/或主存储器部件。接着,数据从该主存储器部件和/或该主机经总线传送到该控制器,然后从该控制器写到目的地部件上。这样,在常规数据传送中,数据在主机和控制器之间的总线上传送数次,并且暂时地占用主机的计算资源以及主存储器的存储资源。依据本发明的各实施例,该控制器包括能使数据直接从源数据存储部件传送到至少一个的目的地数据存储部件的切换电路,即,传送的数据不必经总线从控制器传送到主机和/或主存储器。该切换电路包括适当的缓冲电路和多路复用电路,以便经源部件接口和源部件接口逻辑把数据直接从源部件经由目的地部件接口逻辑和目的地部件接口传送到目的地部件。该多路复用电路允许该缓冲电路从数据存储部件或者按常规方式从主总线接收数据。依据本发明的一些替代实施例,该增强型控制器还包括用来检验数据传送完整性的数据检验逻辑。依据本发明的各实施例,该增强型控制器在大多数数据传送操作期间大大减轻主机、主存储器、以及主机和该控制器间的总线的数据传送责任。此外,依据本发明的各实施例,数据传送所需的时间被减少并且各数据传送部件消耗较少的功。


图1是在诸如PCI总线的总线和多个数据存储部件之间接口的常规ATA主控制器的简化示意图;图2是在二个外部部件间的拷贝操作期间常规控制器的作为时间函数的总线使用的简化图;图3是在诸如PCI总线的总线和多个数据存储部件之间接口的常规SATA主控制器的简化示意图;图4是依据本发明的各实施例的例如SATA主控制器的控制器的简化示意图;图5是采用图4的控制器情况下在二个外部部件间的拷贝操作期间的总线使用简化图;图6是依据本发明的一替代实施例,诸如其中带有数据检验逻辑的SATA主控制器的控制器的简化示意图;以及图7是依据本发明的一替代实施例,例如经由诸如PCI开关的总线开关与主机进行接口的SATA主控制器的多个控制器的简化示意图。
具体实施例方式
在下面的说明中,相同的参照数字表示相同的部件,以便通过各图的说明加强对本发明的理解。而且,尽管下面讨论具体的特征、配置和方案,应理解这些只是出于说明目的进行的。本领域技术人员会理解,在不背离本发明的精神和范围下其它步骤、配置和方案是有用的。
现参照图1,图中示出一个常规海量存储控制器10例如主控制器(HC)的简化示意图。常规地,该也称为主机总线适配器(HBA)的控制器10物理上位于一块插到母板上的PCI中槽的计算机电路板上。替代地,作为一个集成电路(IC)制造控制器10或控制器10的一部分,或者把控制器10集成到一块也包含(内部地)PCI总线的计算机芯片上。
控制器10经总线接口或总线14与主机或主计算机12连接。总线14的一种类型是PCI总线,这是一种具有根据外设部件互连(PCI)总线标准的规程的总线。典型地,总线14经由位于连接的各端上的适当接口逻辑或者控制逻辑与主计算机12连接。当独立标识时,这些逻辑有时称为输入控制器或接口控制器。但是,在本讨论中,把这些逻辑称为接口逻辑或控制逻辑以避免和控制器10混淆。
例如,总线14连接在作为主计算机12的一部分的第一接口逻辑16和作为控制器10的一部分的主机接口逻辑18之间。每个接口逻辑含有适当的控制逻辑,以允许主计算机12和控制器10经由总线14彼此正确地通信。另外,典型地,主计算机12内含有的第一接口逻辑16包括适当的控制逻辑允许主计算机12通过适当的主存储器总线24和存储器接口逻辑26或者通过某其它适用的接口配置与其它系统部件例如主存储器部件22接口。
多个数据存储部件和控制器10连接。例如,都采用称为高级技术附加装置(ATA),也称为集成驱动电子设备(IDE)的盘驱动接口标准的可读/可写硬盘32和可读/可写光盘(CD-RW)34通过诸如菊花链式IDE电缆的接口36以及适当部件接口逻辑38与控制器10连接。应理解,存在其它适用的把各数据存储部件和控制器10连接的方案。通常,接口36允许控制器10把数据从数据存储部件32、34之一传送到主存储器22(经主机22)或者把数据从主存储器22传送到数据存储部件32、34之一。
在从第一部件到第二部件的常规数据传送操作中,从第一或源部件,例如硬盘驱动器32,经控制器10和主机12把数据集或数据文件读到主存储器22中。接着,通过主机12和控制器10把该数据集从主存储器22写到第二或目的地部件,例如CD-RW驱动器34。从略微详细的角度看,数据传送操作分成多次数据传送,其中每次数据传送典型地传送不多于64千字节的数据。通常,在位级上,数据传送涉及使用含有多个物理区域描述符(PRD)的物理区域描述符表。
一旦主机注意到部件之一请求拷贝操作,主机建立PRD。典型地,每个PRD含有八个字节二个各为4字节的双字(Dword)。每个PRD的第一双字包含存储器区域物理基地址。在每个PRD的第二双字中,前二个字节被保留。但是,该保留字段的最高有效位例如利用逻辑1指示是否达到该表的结尾。每个PRD中的第二双字的后二个字节包含用于PRD字节计数的字段。该字节计数字段指示从该存储器区域物理基地址开始要传送多少字节。如果字节计数为零,则传送64升字节。例如对于600兆字节的从硬盘到CD-RW的拷贝操作,利用多个PRD表或者利用用新内容重新循环的同一个PRD表把该拷贝操作划分成大约10,000个PRD。
为了检验数据传送无差错地进行,通常回读传送的数据。在一种常规方法中,从源部件(例如硬盘驱动器32)向主机12回读原始数据,从目的地部件(例如CD-RW驱动器34)向主机12回读拷贝的数据,并且由主机12例如利用一个识别二个数据集之间的差别的常规程序来比较二者。在另一种常规数据检验方法中,主机12取拷贝数据集的数字签名或指纹并且使它和来自源数据集的预先计算的数字签名比较。在此方式下,只从目的地部件对主机12回读拷贝的数据集。例如,在拷贝源数据集之前,诸如MD5算法的算法预先计算称为源数据集的“消息摘要”的数字签名。拷贝操作后,从目的地部件把拷贝的数据集回读到主机12,并且典型地位于主机12内的MD5算法计算该拷贝的数据集的数字签名并且比较拷贝数据集的数字签名和源数据集的数字签名。
但是,在这二种方法中,必须把至少一个数据集通过总线14回读到主存储器22中,主机12可以主存储器22访问数据并且进行数据检验处理。这样,对于常规数据传送操作和检验,三次或四次传送全部数据集,其中每次数据集传送占用例如总线14、主存储器22和主机12等计算资源。
现参照图2并继续参照图1,图2简化示出在二个外部部件的数据传送操作期间,在常规主控制器(例如控制器10)和主计算机(例如主机12)之间连接的总线14的作为时间的函数的使用情况。例如,为了在硬盘32和CD-RW 34之间传送数据,主机12从源部件,例如硬盘驱动器32,接收数据传送请求。一旦接收该数据传送请求,主机12进行用于在总线14上进行数据读传送的初始设定(用42表示),包括例如前面讨论的建立PRD表。出于示意的目的,本文只示出和说明二个用于数据读操作的PRD表和二个用于数据写操作的PRD表。
在初始设定42后,控制器10访问第一PRD表(概括地用44表示)以得到关于要读的数据的字节计数和存储器地址(以及其它信息)。经接口36从硬盘32(即源部件)把数据集的数据的第一缓冲数据部分46读到控制器10,并且接着经总线14、主机12和主存储器总线24读到主存储器22。概括地用箭头48示出在总线14上的对数据的第一缓冲部分46的读操作。
控制器10接着访问下一个PRD表(概括地用52表示),并且该数据集的下一个缓冲部分,例如第二缓冲部分54从硬盘32读到控制器10,然后经总线14、主机12、主存储器总线24读到主存储器22。概括地用箭头56示出在总线14上的对数据的第二缓冲部分54的数据读。按该刚说明的方式,控制器14接着访问相继的PRD表(未示出)并且进行相继的数据读(未示出),直至从硬盘32把该数据集中的所有数据读到主存储器22。
在从硬盘32把该数据集读到主存储器22后,控制器10在总线14上发布中断(用58表示)。接着,主机12进行用于数据写操作的设定(用62表示),其中包括建立PRD表。接着控制器10访问写PRD表中的第一表(概括地用64表示),并从主存储器22经由主存储器总线24、主机12和总线14把事先已读到主存储器22中的数据的第一缓冲部分(用66表示)从主存储器22写到控制器10,接着该第一缓冲部分经部件接口36写到目的地部件(例如CD-RW 34)。概括地用箭头68表示数据集的第一缓冲部分66的数据写操作。
接着控制器10访问下一个PRD表(概括地用72表示),并且事先已从硬盘32读到主存储器22的该数据集的下一个缓冲部分(用74表示)从主存储器22写到控制器10(经主存储器总线24、主机12和总线14),然后经部件接口36写到目的地部件(例如CD-RW 34)。概括地用箭头76示出这种数据写操作。在把该数据集中的所有数据写到目的地部件后,控制器10对主机12发出一个中断(用78表示)。
现参照图3,图中简化示出另一种常规控制器80,例如与按照串行高级技术附加装置(SATA或S-ATA)盘驱动接口标准制造和操作的数据存储部件接口的主控制器,其中SATA标准是从ATA标准进化的。这种控制器80,即SATA主控制器,在主机12(经总线14)和多个数据存储部件例如硬盘32和CD-RW 34之间接口。控制器80包括允许控制器80和总线14接口的接口逻辑或控制逻辑82。
控制器80还包括允许每个数据存储部件直接和控制器80接口而不是通过例如图1中示出的菊花链式方案接口的独立的部件接口逻辑或控制逻辑。即,控制器80包括第一部件接口逻辑84,后者允许第一部件例如硬盘32经第一接口85与控制器80直接连接。此外,控制器80包括第二部件接口逻辑86,其允许第二部件例如CD-RW 34经第二接口87与控制器80直接连接。第一和第二接口中的每一个例如是IDE电缆或其它适当接口。
控制器80包括一对存储缓冲器92、93。这些存储缓冲器例如包括一些通过暂时存储正在传送的数据来平滑通过控制器80的数据传送的先进先出存储器(FIFO)。例如,第一存储缓冲器92包括连接在主机接口逻辑82和第一部件接口逻辑84之间的第一FIFO 95,以便平滑从硬盘32到主机12的数据传送。此外,第一存储缓冲器92包括连接在主机接口逻辑82和第一部件接口逻辑84之间的第二FIFO 96,以便平滑从主机12到硬盘32的数据传送,例如正从主存储器22写到硬盘32的数据。类似地,第二存储缓冲器93包括连接在主机接口逻辑82和第二部件接口逻辑86之间的第三FIFO 97和第四FIFO 98,以平滑主机12和CD-RW 34之间的数据传送。
此外,典型地,控制器80包括流控制硬件(未示出)以便防止二个缓冲器装填的数据超过某个水平。即,该流控制硬件在存储缓冲器目的地侧清空该缓冲器中存储的一些数据之前阻止存储缓冲器的源侧发送附加数据。在此方式下,不丢失正在传送的数据。
在图3中示出的常规方案中,二个部件32、34可同时对或从控制器80传送数据。但是,控制器80仍必须进行和图1示出方案里的控制器10相同的数据传送步骤,包括设定用于从源部件向主存储器22传送数据的PRD表的步骤,以及设定用于从主存储器22向目的地部件传送数据的PRD表的步骤。
对于至或从主存储器22的数据传送,控制器80包括支持直接存储器存取(DMA)传送的硬件。在DMA传送下,在无主机12的介入的情况下数据直接和主存储器22交互。例如,从源部件传送的数据将由控制器80读并且然后经主机接口逻辑16、主存储器总线24和存储器接口逻辑26从控制器80传送到主存储器22。类似地,从主存储器22传送的数据将经存储器接口逻辑26、主存储器总线24和主机接口逻辑16传送到控制器80。接着该数据会从控制器80写到目的地部件。
从操作观点上看,DMA传送涉及控制器80向总线仲裁器(未示出)请求和得到许可以成为控制器80和主机12之间的总线14的总线主控器。典型地,总线仲裁器不是控制器80的一部分,例如,总线仲裁器是主机12的一部分。一旦总线仲裁器赋予控制器80作为总线14的总线主控器的许可,控制器80直接与主存储器22(即无主机12的介入)进行交互,以便管理数据存储部件之间的数据传送。
如本文中前面讨论那样,许多常规数据传送操作涉及主机和控制器之间的总线上的若干次数据传送,并且涉及周期地占用主机和主存储器。对这些计算资源的占用负面地影响竞争部件以及它们的接口,例如通用串行总线(USB)和固件接口,使用这些资源的能力。
依据本发明的各实施例,控制器包括一种增强型的配置,其可在大多数数据传送操作期间大大减轻总线、主机和主存储器的数据传送责任。另外,数据传送所需的时间被缩短而且数据传送部件消耗较少的能功率。依据本发明的各实施例,该增强型控制器绕过控制器和主机(从而主存储器)之间的总线,把来自源部件的数据直接引导到目的地部件。备选地,该增强型控制器还在不占用诸如主机、主存储器、以及控制器和主机间的总线等计算资源的情况下进行数据检验操作。
现参照图4,图中示出依据本发明的各实施例的控制器100的简化示意图。依据本发明的各实施例,控制器100或者控制器100的一部分物理上位于一块插到母板上的PCI槽中的计算机电路板上。依据本发明的替代实施例,按集成电路制造控制器100或控制器100的一部分。
控制器100包括主机接口逻辑或控制逻辑102,第一部件接口逻辑104,第二接口逻辑106和切换电路108。主机接口逻辑102允许控制器100经总线14,例如PCI总线,与主机12(图1和3中示出)接口。如前面讨论那样,主机典型地与包括主存储器部件22(图1和3中示出)的其它系统部件接口。
第一部件接口逻辑104允许控制器100经接口85(其为IDE电缆或其它适当接口)与第一部件例如硬盘32接口。第二部件接口逻辑106允许控制器100经接口87(其为IDE电缆或其它适当接口)与第二部件例如CD-RW 34接口。
切换电路108连接在主机接口逻辑102和部件接口逻辑,即第一部件接口逻辑104和第二部件接口逻辑106之间。如下面更加详细地讨论那样,依据本发明的各实施例,切换电路108允许数据存储部件之间的数据传送保持在控制器100内,而不必涉及主机、主存储器、以及主机和控制器100之间的总线14的计算资源。
切换电路108的第一部分包括第一存储缓冲器112以及连接在主机接口逻辑102和第一部件接口逻辑104之间的第一多路复用电路114。切换电路108的另一部分包括第二存储缓冲器116以及连接在主机接口逻辑102和第二部件接口逻辑106之间的第二多路复用电路118。
第一存储缓冲器112暂时存储经第一部件接口逻辑104和接口85向和从第一部件(例如硬盘32)传送的数据。第一存储缓冲器112包括至少一个暂时存储从第一部件32读取的数据的缓冲部件(例如,第一FIFO存储器122),以及至少一个暂时存储要向第一部件32写的数据的缓冲部件(例如,第二FIFO存储器124)。
类似地,第二存储缓冲器116暂时存储经第二部件接口逻辑106和接口87向和从第二部(例如CD-RW 34)传送的数据。第二存储缓冲器116包括至少一个暂时存储从第二部件34读取的数据的缓冲部件(例如第三FIFO存储器126),以及至少一个暂时存储要向第二部件34写的数据的缓冲部件(例如第四FIFO存储器128)。
第一多路复用电路114包括一个电路,该电路允许用于存储要写到第一部件的数据的存储器部件(即第二FIFO存储器124)经主机接口逻辑102从总线14或经第三FIFO存储器126从第二部件34接收数据。类似地,第二多路复用电路118包括一个电路,该电路允许用于存储要写到第二部件的数据的存储器部件(即第四FIFO存储器128)经主机接口逻辑102从总线14或经第一FIFO存储器122从第一部件32接收数据。依据本发明,第一复用电路114和第二复用电路118是任何适用的、能够可控地允许从多于一个源接收数据的电路。
切换电路108包括适当的用控制电路(未示出),其用于通知第一和第二存储缓冲器112、116以及第一和第二多路复用电路114、118,从源部件读的数据是要例如以常规方式经总线14传送到主机(和主存储器)还是要经对应的存储缓冲器直接传送到目的地部件。切换电路108内的该控制电路还使能或者禁止第一和第二多路复用电路114、118从主机和从源部件的存储缓冲器接收数据的能力。
依据本发明的各实施例,主机通知切换电路中的控制电路数据是从源部件直接传送到目的地部件还是经主机和主存储器再传送到目的地部件。例如,主机在该切换电路中设定一个寄存器控制位以指示要传送的数据是从源部件直接写到目的地部件。在多路复用电路中设定适当的控制位以禁止该多路复用电路从主机接收数据的能力并且使能该多路复用电路从源部件的存储缓冲器接收数据的能力。否则,如果不设定寄存器控制位,则按常规方式传送数据,即从源部件到主存储器然后从主存储器到目的地部件。
现参照图5并继续参照图4,图5简化示出在源部件(例如硬盘32)和目的地部件(例如CD-RW 34)之间的数据传送操作期间,依据本发明的实施例连接在主机和控制器100间的总线14的使用作为时间的函数。最初,一旦接收来自源部件的数据传送请求,主机进行初始设定(用132概括表示)。该设定包括建立适当的PRD表。
例如,依据本发明的各实施例,主机同时建立一个或多个用于从源部件读出要传送的数据的PRD表以及一个或多个用于对目的地部件写入要传送的数据的PRD表。另外,如上面讨论那样,主机设定适当的寄存器位以通知切换电路108该用于传送的数据要直接从源部件经适当的读缓冲器传送到适当的多路复用电路输入端,并经适当的写缓冲器传送到目的地部件。在此方式下,切换电路108会使从源部件读出的数据绕过总线14(以及主机接口逻辑102)并且替代地被引导到目的地部件写路径中的多路复用电路(例如多路复用电路118)的输入端。而且,目的地部件写路径中的多路复用电路会知道从源部件的写路径中的存储缓冲器(例如第一FIFO 122)而不是从总线14接收数据。
一旦主机进行初始设定132并且建立适当的PRD表,控制器100访问第一PRD表(概括地用134表示)以得到字节计数。注意,依据本发明的实施例,控制器100不需要知道存储器地址,因为要传送的数据不写到主存储器的存储单元上。由于PRD表位于主机12或主存储器22中(例如参见图1和3),控制器100经总线14访问PRD表。一旦为了字节计数控制器100访问第一PRD表,要传送数据的第一部分(概括地用136表示)从源部件(例如硬盘32)经接口85和接口逻辑104读到控制器100。
数据的第一部分136暂时存储在源部件的适当存储缓冲器(例如第一FIFO存储器122)中。至此,控制器100典型地应访问第一写PRD表。但是,控制器100只需要字节计数,该字节计数在第一写PRD表中应和在第一读PRD表中相同。从而,依据本发明的各实施例,为了字节计数控制器100可以再次访问第一读PRD表。这样,不必建立第一写PRD表。在此方式下,减少必须建立的PRD表(即写PRD表)的数量,从而简化控制器100所需的总处理。一旦控制器100再次从第一读PRD表访问字节计数(概括地用138表示),经适当的多路复用电路(本例中为第二多路复用电路118)把数据的第一部分136直接传送到目的地部件的适当存储缓冲器(本例中为第四FIFO存储器128)中。
如本文前面讨论那样,主机已设定适当的控制寄存器位以使控制器100知道数据的第一部分136要绕过主机接口逻辑102并且经目的地部件多路复用电路从源部件存储缓冲器直接传送到目的地部件存储缓冲器。此外,目的地部件多路复用电路从该控制寄存器位的设定知道要从源部件存储缓冲器而不是从主机接口逻辑102接收的数据。从该目的地部件多路复用电路,数据的第一部分136经第二部件接口逻辑106和接口87写到目的地部件(例如CD-RW 34)。用箭头142概括地示出将数据的第一部分136写到目的地部件的写操作。
控制器100接着访问下一个读PRD表(概括地用144表示)以用于字节计数。一旦控制器100得到该字节计数,从硬盘32(即源部件)经接口85和部件接口逻辑104向控制器100读要传送数据的第二或下一个部分(概括地用146表示)。同样,数据的第二部分146暂时存储在第一FIFO存储器122中。接着,控制器100访问下一个写PRD表(概括地用148表示),并且从第一FIFO存储器122经第二多路复用电路118把数据的第二部分146直接传送到第四FIFO存储器128。然后,经第二部件接口逻辑106和接口87把数据的第二部分146写到CD-RW 34(目的地部件)。概括地用箭头152表示将第二数据部分146写入CD-RW 34的写操作。
类似地,控制器100接着访问相继的读PRD表和写PRD表(未示出),并且进行相继的数据读和数据写(未示出)直至数据集中的所有数据都从硬盘32读到CD-RW 34。在整个数据集已从硬盘32读并且已写到CD-RW 34后,控制器100在总线14上发出一个中断(用154表示)。
如可以图5中看出那样,在从源部件(例如硬盘驱动器32)向目的地部件(例如CD-RW 34)传送数据期间,仅对初始传送请求(初始设定132的一部分)、控制器100访问PRD表、以及控制器100发出中断154而使用主机和控制器100之间的总线14。与部件间常规数据传送例如图2所示的传送期间的总线使用相比,这种总线使用是有利的。
如本文前面对常规数据传送操作讨论的那样,一旦从源部件向目的地部件传送数据,通过采用某类型的数据检验操作来检验数据传送的完整性。例如,取得拷贝的数据集的数字签名如消息摘要,并且和原始数据集的(典型地)预先计算的数字签名比较。一般地,数据检验指令集或算法(例如MD5算法)通常驻留在主存储器中,并且主机进行数据检验处理以得到拷贝的数据集的数字签名而且比较该数字签名和原始数据集的预先计算的签名。但是,如本文前面讨论那样,此方式下的检验除了主机进行数据检验所需的计算资源之外,还涉及至少一次在总线上从控制器向主机(并且有时向主存储器)完整传送整个数据集。
因此,依据本发明的替代实施例,把控制器100配置成包含数据检验电路。通过包含数据检验电路,控制器100甚至更多地减轻主机、主存储器以及主机和控制器100间的总线14的责任,即,和数据传送操作的数据检验部分相关的数据传送和处理责任。
现参照图6,图中简化示出依据本发明的一个替代实施例的控制器100。该替代实施例中的控制器100的配置类似于图4所示控制器100的配置,但是,在该替代实施例中,该控制器还包括适当的数据检验逻辑或电路(用156表示)。依据本发明的实施例,数据检验电路156包括必要的硬件和/或软件以完成任何适当的数据检验操作,例如,诸如常规MD2或MD5算法的任何适合的消息摘要算法,或者诸如常规CRC-32或CRC-64电路的任何适合的循环冗余检验(CRC)电路。
取决于数据检验技术,与电路实现关联的尺寸和复杂性可决定哪种数据检验操作最适于包括作为控制器100的一部分。例如,实现某些消息摘要算法可能要求对现有控制器电路添加相对大的电路。类似地,采用某些冗余技术,例如CRC-32,可能要求控制器100的处理量相对大。但是,应理解,依据本发明的各实施例,控制器100中包括任何适用的数据检验技术。
如图6中所示,控制器100例如包括CRC-64数据检验电路156。在控制器100中把数据检验电路156实现成经操作可与主机接口逻辑102通信。另外,在控制器100中把数据检验电路156配置成使该数据检验电路156的输入与暂时存储从第一或第二部件读出的数据的缓冲器部件的输出连接。即,当第一部件32是源部件时暂时存储从第一部件(例如硬盘32)读出的数据的第一FIFO存储器122的输出是数据检验电路156的输入之一。数据检验电路156的另一个输入是第三FIFO存储器126的输出,当第二部件(例如CD-RW 34)是源部件时第三FIFO存储器暂时存储从该第二部件34读出的数据。
在操作上,数据检验电路156接收正在从源部件的存储缓冲器的输出端传送到目的地部件的多路复用电路的输入端的数据。当数据检验电路156接收该正在传送的数据时,数据检验电路156积累滚动的(running)数据检验信息,例如CRC-64值,直至整个数据集已传送到目的地部件的存储缓冲器。一旦传送了整个数据集,数据检验电路156已在其中存储了必需的数据检验信息,然后主机例如可以按常规方式读该信息。
如果主机已经具有用于原始数据集的数据检验信息,则主机读由数据检验电路156为拷贝的数据积累的数据检验信息并且将该信息和先前已存在的用于原始数据集的数据检验信息进行比较。如果主机不具有用于原始数据集的检验信息,则随原始数据集拷贝到目的地部件,数据检验电路156积累滚动的检验信息,例如如前面说明那样,接着,一旦整个数据集全都传送到目的地部件,数据检验电路156可以从把拷贝的数据集从目的地部件传送到数据检验电路156的相继的传送积累滚动数据检验信息。然后,主机可读该来自拷贝的数据集的数据检验信息并且把它和从原始数据集,即从源部件向目的地部件的原始的数据传送,积累的数据检验信息进行比较。
依据本发明的各实施例,在该刚说明的方式下,随着数据集直接从源部件传送到目的地部件而进行数据检验。与采用数据检验的常规方案不同,依据本发明的各实施例,不必为了数据检验计算而通过总线14将整个数据集从控制器100读到主机。替代地,通过控制器100中的数据检验电路156进行数据检验。只从控制器100向总线14传送最终数据检验结果。这样,在此方式下,对于数据检验目的,主机、主存储器和总线14的使用与常规方案相比减少。
现参照图7,其中简化示出依据本发明的另一替代实施例的多个控制器。依据本发明的实施例,数据传送不受和同一个控制器连接的部件的限制。可以把数据从和一个控制器接口的源部件传送到和一个不同的控制器接口的目的地部件上。
依据本发明的替代实施例的多控制器方案160例如包括诸如SATA主控制器的第一控制器162、诸如SATA主控制器的第二控制器164以及诸如总线开关或PCI开关的硬件开关166。第一控制器162连接着多个部件,例如,诸如硬盘的第一部件172和诸如CD-RW的第二部件174。类似地,第二控制器164连接着多个部件,例如,诸如硬盘的第三部件176和诸如CD-RW的第四部件178。这些部件通过适当的接口与各自的控制器连接,例如如前面对本发明的其它实施例讨论那样。尽管多控制器方案160示出和开关166连接的二个控制器,本发明的实施例包括其中通过适当的接口多于二个的控制器与开关166连接的方案。
和本发明的前面的其中单个控制器通过诸如PCI总线的总线直接和主机12接口的各实施例不同,依据本发明的该替代实施例,控制器162、164和硬件开关166连接。每个控制器通过适当接口,假如PCI直达连接(express connection)与开关166连接。开关166通过适当接口,例如总线14与主机12连接,总线14如上面讨论那样可以是PCI总线。
在操作中,在部件之一向主机12请求数据传送期间,进行(例如由主机12)检测以判定源部件和目的地部件是否和同一控制器连接。这种形式的检测能力可以是操作系统的一部分,例如如下面更详细讨论那样,或者可以是适当的驱动软件的一部分。
如果源部件和目的地部件连接到同一个控制器,则根据上面讨论的本发明的实施例或者按常规方式进行数据传送。如果源部件和目的地部件不连接到同一个控制器,则主机12中的以及控制器162、164中的控制逻辑管理经开关166与一个控制器连接的源部件以及与另一个控制器连接的目的地部件之间的数据传送。每个控制器内的数据传送由各个控制器内含有的切换电路和接口逻辑管理,例如如前面对本发明的其它实施例讨论那样。
例如,在从第一部件172向第四部件178传送数据集的过程中,例如如前面对本发明的各实施例讨论那样,从第一(源)部件172向第一控制器162传送数据。但是,由于目的地部件与另一个控制器连接,数据经第一控制器162和开关166之间的接口向开关166传送,并且接着经开关166和第二控制器164之间的接口从开关166向第二控制器164传送数据。然后例如如前面对本发明的各实施例讨论那样,数据从第二控制器164向第四(目的地)部件178传送。
这样,即使在与不同控制器连接的部件间传送数据,依据本发明的实施例,在各控制器和总线开关166之间的连接上发生数据传送。为某些工作,例如最初的数据传送请求(设置的一部分)、控制器对PRD表的访问、以及控制器发出的中断,使用开关166和主机12之间的总线14。但是,类似本发明的其它实施例,在本发明的此替代实施例中,主总线14、主机12以及主存储器(未示出)不用于传送数据。
依据本发明的各实施例,本文中说明的改进数据传送和可由主机和/或控制器采用的各种其它特征以及标准是兼容的。例如,许多控制器配置成按照所谓的SATA II标准来操作。在此标准中,存在允许数据存储部件优化诸如DMA传送的数据传送的可选特性。这些特性中的一些可以和上面说明的本发明数据传送方法接口,但其它特性不能。依据本发明的实施例,把主机配置成在执行本文所说明的本发明的数据传送方法之前禁止任何可能负面影响本发明的数据传送方法的可选特性,并且一旦完成该数据传送方法后使能这些可选特性。这些被禁止的特性例如包括称为“DMA设定帧信息结构(FIS)中的非零缓冲器偏置”的特性,该特性允许从数据集中非开头的位置进行数据传送并在以后的操作中传送该数据集的开头。由于该特性可能破坏本发明的数据传送,因此在进行依据本发明的各实施例的数据传送方法之前禁止该特性。另一种被禁止的特性例如是称为本机命令队列(NCQ)的特性,其允许多次部分数据传送。
对于不干扰本发明数据传送方法的可选特性,在进行本发明数据传送方法的同时仍可使能这些特性。这些保持使能的特性包括例如称为“保证按序数据传送”的特性,该特性通过返回无序送数据来停止数据存储部件进行优化。
对于本机命令队列(NCQ),依据本发明的一替代实施例,对现有开关电路108添加附加电路和控制逻辑,以便和依据本发明的各实施例的数据传送操作一起来适应NCQ操作。该附加电路和控制逻辑允许控制器100检测和识别多个源部件和目的地部件,以为要存储的附加数据提供适当的缓冲存储,并且从该多个部件中选择数据传送中要使用哪些源部件和目的地部件。该控制逻辑还设置适当的标志和控制位以在使能NCQ操作的同时控制数据传送。以这种方式,在不禁止NCQ特性的情况下进行依据本发明的实施例的数据传送。
最后,依据本发明的各实施例,用于上面说明的改进数据传送方法的各指令驻留在主机、主存储器或其它可由主机访问的适当位置。例如,这些指令是驻留在主存储器的一部分中的独立实用程序,其容易由主机的操作系统访问。替代地,这些指令是主操作系统的一部分。
例如,修改主操作系统的现有拷贝命令,以便含有用于依据本发明的各实施例的改进的数据传送方法的指令组。在此方式下,作为执行拷贝命令的一部分,主机会自动判定是否可以按照本发明的实施例进行数据传送,即,不必把数据传送到主机和主存储器。主机会判定源部件和目的地部件是连接到同一个控制器还是连接到例如如前面讨论那样通过总线开关适当链接在一起的不同控制器上。若是这样,该拷贝命令可对控制器(组)提供必要指令以进行依据本发明的各实施例的数据传送。如果不是这样,该拷贝命令指示控制器(组)按常规方式进行数据传送。
本领域技术人员清楚,在不背离由附后权利要求书以及其所有等同物定义的本发明的精神和范围下,可对本文说明的本发明的各实施例做出许多改变和替代。例如,依据本发明的实施例,可以通过同一个控制器或者通过在控制器和主机间连接的总线同时从一个源部件向多个目的地部件读数据。
权利要求
1.一种控制器(100),用于在计算机系统内控制从第一部件向至少一个第二部件的数据传送,该控制器包括主机接口逻辑(102),用于经第一总线使该控制器与主计算机接口,其中该主计算机具有一个经第二总线和它接口的主存储器;第一部件接口逻辑(104),用于经第一部件总线使该控制器与该第一部件接口,其中该第一部件接口逻辑经该第一总线从该第一部件读数据;第二部件接口逻辑(106),用于经第二部件总线使该控制器与该第二部件接口,其中该第二部件接口逻辑经该第二总线对该第二部件写数据;第一缓冲器(112),其连接在该第一部件接口逻辑和该主机接口逻辑之间,用于控制其间的数据传送;第二缓冲器(116),其连接在该第二部件接口逻辑和该主机接口逻辑之间,用于控制第二部件接口逻辑和主机接口逻辑间的数据传送;第一多路复用电路(114),其连接在该第一缓冲器和该主机接口逻辑之间并且连接在该第一缓冲器和该第二缓冲器之间,其中,该第一多路复用电路在数据不通过该主机接口逻辑以及不通过该第一总线、该主计算机、该第二总线和该主存储器中的至少一个的情况下控制从该第二缓冲器到该第一缓冲器的数据传送;以及第二多路复用电路(118),其连接在该第二缓冲器和该主机接口逻辑之间并且连接在该第二缓冲器和该第一缓冲器之间,其中,该第二多路复用电路在被传送的数据不通过该主机接口逻辑以及不通过该第一总线、该主计算机、该第二总线和该主存储器中的至少一个的情况下控制从该第一缓冲器到该第二缓冲器的数据传送。
2.如权利要求1所述的控制器,其中,从第一部件到第二部件的数据传送包括从第一部件向第二部件拷贝至少一个数据集。
3.如权利要求1所述的控制器,还包括与第一缓冲器以及第二缓冲器连接的数据检验逻辑,其中,该数据检验逻辑被配置成在被传送的数据不通过主机接口逻辑以及不通过第一总线、主计算机、第二总线和主存储器中的至少一个的情况下对在第一部件和第二部件之间传送的数据进行至少一个数据检验操作。
4.如权利要求1所述的控制器,其中,主计算机包括用来执行至少一个串行高级技术附加装置(SATA)II优化特性的逻辑,并且其中,当主计算机禁止该至少一个SATA II优化特性时,该控制器在被传送的数据不通过主机接口逻辑并且不通过第一总线、主计算机、第二总线和主存储器中的至少一个的情况下控制第一部件和第二部件之间的数据传送。
5.如权利要求1所述的控制器,其中,主计算机包括用来执行本机命令队列(NCQ)的逻辑,并且其中,该控制器还包括本机命令队列逻辑,其用于当使能本机命令队列时,在被传送的数据不通过第一总线、主计算机、第二总线和主存储器中的至少一个的情况下控制第一和第二部件间的数据传送。
6.如权利要求1所述的控制器,其中,该控制器还包括第一控制器和至少一个第二控制器;其中,该第一控制器经第一控制器接口与总线开关接口;其中,该至少一个第二控制器经对应的第二控制器接口与该总线开关接口;其中,该总线开关经第一总线按如下方式与主计算机接口,即,主计算机经第一总线、总线开关和对应的控制器接口与第一控制器以及至少一个第二控制器接口;并且其中,第一控制器、总线开关和至少一个第二控制器在被传送的数据不通过第一总线、主计算机、第二总线和主存储器中的至少一个的情况下控制第一控制器和第二控制器之间的数据传送。
7.如权利要求1所述的控制器,其中,第一缓冲器还包括第一先进先出(FIFO)缓冲器部件,其连接在第一部件逻辑接口和主机接口逻辑之间并且连接在第一部件接口逻辑和第二多路复用电路之间,以及第二FIFO缓冲器部件,其连接在第一多路复用电路和第一部件接口逻辑之间。
8.如权利要求1所述的控制器,其中,第二缓冲器还包括第三FIFO缓冲器部件,其连接在第二部件接口逻辑和主机接口逻辑之间并且连接在第二部件接口逻辑和第一多路复用电路之间,以及第四FIFO缓冲器部件,其连接在第二多路复用电路和第二部件接口逻辑之间。
9.如权利要求1所述的控制器,其中,第一总线、第一部件总线和第二部件总线中的至少一个还包括PCI总线。
10.如权利要求1所述的控制器,其中,该控制器的至少一部分是作为集成电路(IC)制造的。
全文摘要
一种用于在计算机系统内的数据存储部件间传送数据的控制器设备,包括用于使该控制器和多个数据存储部件连接的部件接口逻辑,用于使该控制器通过总线和主机或主计算机连接的主机接口逻辑。该主机包括例如与其连接的主存储器。该控制器包括能把数据直接从源数据存储部件传送到至少一个的目的地数据存储部件的切换电路,即,被传送的数据不从该控制器经总线传到主机和/或主存储器。该切换电路包括适当的缓冲电路和多路复用电路,以在大多数数据传送操作中大大减轻主机、主存储器以及主机和该控制器间的总线对数据传送的责任的方式下把数据从源部件直接传送到目的地部件。此外,该控制器减少数据传送所需的时间并使数据传送部件消耗较少的能量。
文档编号G06F13/38GK1737781SQ200510004578
公开日2006年2月22日 申请日期2005年1月18日 优先权日2004年8月19日
发明者艾伦·J·格林博格 申请人:艾格瑞系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1