用于因特网小型计算机系统接口的直接内存访问系统的制作方法

文档序号:7621263阅读:87来源:国知局
专利名称:用于因特网小型计算机系统接口的直接内存访问系统的制作方法
技术领域
本发明涉及一种直接内存访问系统,具体而言,涉及一种用于因特网小型计算机系统接口(iSCSI)的直接内存访问系统。
背景技术
因特网小型计算机系统接口(iSCSI)是一种新兴起的存储网络技术和传输协议。此传输协议主要功能是将SCSI的命令和数据,通过iSCSI协议数据单元(PDU)在目前发展已非常成熟的IP网络上传送。因此,通过iSCSI协议,将也可使IP网络成为存储网络。
以IP网络作为存储网络时的最大优点为,对使用者而言,只需将其服务器和存储设备换成iSCSI接口,并使用原有的IP网络的交换设备,就可建置出价廉物美的存储网络。
从iSCSI协议的负荷(loading)分析得知,在TCP/IP的传送与接收工作的负荷最大。其次为运算iSCSI的循环冗余码(CRC)工作。由于iSCSI循环冗余码是重复性的运算,须耗费大量的CPU处理时间,因此须将iSCSI循环冗余码的运算改成由硬件实现比较适当。但如果以硬件化的模块实现iSCSI循环冗余码的运算后,如果单独使用iSCSI循环冗余码模块,那么处理iSCSI循环冗余码(CRC)运算时,则必须要有读取内存时间和等待处理时间,因此,单独的硬件化iSCSI循环冗余码模块并非达到最好的效能。
常规的直接内存访问(Direct Memory Access,DMA)机制已经是提出相当久的技术,且大多作为数据搬移的硬件工具。参考美国专利公开第20040123013号专利申请案“Direct memory access controller system”。所述常规专利申请案揭示在处理DMA数据时,同时嵌入计算错误检测码(error detection codes,EDCs),以减少额外计算EDC的时间。然而,其针对单一数据块计算EDC,并利用DMA的消息格式(Message Format)启动DMA并决定EDC的操作码与计算。再将计算的EDC值利用DMA响应消息(ResponseMessage)来传送计算的结果。
另外,所述常规技术假设数据仅存在单一数据缓冲区(data buffer),如果数据具有复数个区块,那么所述DMA系统的中断次数会增加。
因此,有必要提供一种创新并具有进步性的直接内存访问系统,以解决上述问题。

发明内容
本发明提供一种用于因特网小型计算机系统接口(iSCSI)的直接内存访问系统,其包括一第一总线接口、一第二总线接口、一先进先出内存、一iSCSI循环冗余码模块和一直接内存访问控制器。所述先进先出内存连接到所述第一总线接口和所述第二总线接口。所述iSCSI循环冗余码模块连接到所述先进先出内存,用以由所述先进先出内存取得一iSCSI协议数据单元,根据所述iSCSI协议数据单元计算得到一循环冗余码。所述直接内存访问控制器连接到所述先进先出内存和所述iSCSI循环冗余码模块,用以控制所述先进先出内存和所述iSCSI循环冗余码模块的运动。
本发明将所述iSCSI循环冗余码模块嵌入所述直接内存访问系统中,以减少读取内存时间和等待处理时间,提高处理iSCSI循环冗余码的速度与效能。因此,在高速iSCSI主机总线适配器(Host Bus Adapter,HBA)的设计结构中,本发明的直接内存访问系统可更有效地处理iSCSI循环冗余码。本发明的直接内存访问系统提供iSCSI协议与TCP/IP协议的数据传输接口,在DMA传送iSCSI协议数据单元的过程中,自动产生iSCSI循环冗余码,并自动更新iSCSI协议数据单元的摘要值(digest)。在不影响原有iSCSI协议与TCP/IP协议的情形下,能提供快速且高效能的iSCSI循环冗余码处理。因此,利用本发明的直接内存访问系统可降低CPU的负荷(loading),并减少重复读取iSCSI协议数据单元的时间(latency),以提高处理iSCSI循环冗余码的速度与效能。


图1为本发明用于因特网小型计算机系统接口(iSCSI)的直接内存访问系统的示意图;图2显示在iSCSI协议与TCP/IP协议之间利用本发明的直接内存访问系统直接访问iSCSI协议数据单元的示意图;图3为本发明的iSCSI循环冗余码模块的示意图;和图4为本发明的循环冗余码控制模块的数据处理流程示意图。
具体实施例方式
参考图1,其显示本发明用于因特网小型计算机系统接口(iSCSI)的直接内存访问系统的示意图。本发明用于因特网小型计算机系统接口的直接内存访问系统10包括一第一总线接口11、一第二总线接口12、一先进先出内存13、一iSCSI循环冗余码(CRC)模块14和一直接内存访问(DMA)控制器15。所述第一总线接口11为一主机计算机(Host)总线接口。所述第二总线接口12为一特定应用集成电路(Application Specific IntegratedCircuit,ASIC)总线接口。
所述先进先出内存(First-In-First-Out Memory)13连接到所述第一总线接口11和所述第二总线接口12。所述先进先出内存13包括复数个内存单元组,每一内存单元组包括一写入内存单元和一读出内存单元,所述写入内存单元用以存储来自所述第一总线接口或所述第二总线接口的数据,所述读出内存单元用以存储读出到所述第一总线接口或所述第二总线接口的资料。
所述iSCSI循环冗余码(CRC)模块14连接到所述先进先出内存13,用以由所述先进先出内存13的写入内存单元取得一iSCSI协议数据单元,根据所述iSCSI协议数据单元计算得到一循环冗余码。所述直接内存访问(DMA)控制器15连接到所述先进先出内存13和所述iSCSI循环冗余码模块14,用以控制所述先进先出内存13和所述iSCSI循环冗余码模块14启动的运动。所述直接内存访问(DMA)控制器15可对所述第一总线接口11和所述第二总线接口12发出读写数据的请求信号。
参考图2,其显示在iSCSI协议与TCP/IP协议之间利用本发明的直接内存访问系统10直接访问iSCSI协议数据单元的示意图。所述iSCSI协议处理方框20中,所产生的iSCSI协议数据单元21包括iSCSI表头211(Header)、表头摘要212(Header Digest)、数据213(Data)和数据摘要214(Data Digest)。所述iSCSI协议数据单元中的数据213可由复数个数据缓冲区(Data Buffer)所组成。所述iSCSI协议数据单元21中的表头摘要212(Header Digest)与数据摘要214(Data Digest)由iSCSI协商过程时决定有无此功能,且当有数据213时,才会需要计算所述数据摘要214。另外,所述iSCSI协议数据单元21可以只有所述iSCSI表头211。
将所述iSCSI协议中的iSCSI协议数据单元21传送到TCP/IP协议处理方框30中,会将所述iSCSI协议数据单元21的数据由所述直接内存访问系统10分送到一个或复数个TCP协议数据单元31、32中。每一TCP协议数据单元包括TCP表头和iSCSI协议数据单元片段。以第一TCP协议数据单元31为例说明。所述第一TCP协议数据单元31包括TCP表头311和iSCSI协议数据单元第一片段312(iSCSI PDU fragment 1)。
当由iSCSI协议将数据传到TCP/IP协议时(也就是为传送模式,Txmode),本发明的直接内存访问系统10将一个单一的iSCSI协议数据单元的数据分送到一个或复数个TCP协议数据单元,并且根据所述iSCSI协议数据单元计算得到一循环冗余码,所述循环冗余码将取代所述iSCSI协议数据单元中已有的数据摘要或表头摘要值。
当由TCP/IP协议将数据传到iSCSI协议时(也就是为接收模式,Rx mode),本发明的直接内存访问系统10将一个或复数个TCP协议数据单元传送到iSCSI所指定的iSCSI协议数据单元中,并且根据所述iSCSI协议数据单元计算得到一循环冗余码,所述循环冗余码会与所述iSCSI协议数据单元中的数据摘要或表头摘要值进行比较。如果相同,就将数据摘要或表头摘要值设为0;如果不同,就不改变数据摘要或表头摘要值。
参考图3,其为所述iSCSI循环冗余码模块14的方框示意图。所述iSCSI循环冗余码模块14包括一先进先出内存(FIFO)侧接口141、一直接内存访问(DMA)控制器侧接口142、一循环冗余码(CRC)计算模块143和一循环冗余码(CRC)控制模块144。所述先进先出内存侧接口141用以访问到所述先进先出内存13的数据或控制信号。所述直接内存访问控制器侧接口142,用以接受到所述直接内存访问控制器15的数据或控制信号,也就是,将来自所述直接内存访问控制器15的控制信号传到所述循环冗余码控制模块144;或接收所述循环冗余码控制模块144的控制信号并传到所述直接内存访问控制器15。
所述循环冗余码(CRC)计算模块143用以计算得到所述iSCSI协议数据单元的所述循环冗余码。所述循环冗余码(CRC)控制模块144用以控制所述循环冗余码计算模块143的运算,和控制所述先进先出内存侧接口141和所述直接内存访问控制器侧接口142。所述循环冗余码控制模块144包括一循环冗余码(CRC)控制信号端口145、一先进先出内存(FIFO)控制信号端口146、一直接内存访问(DMA)控制信号端口147、一循环冗余码(CRC)寄存器檔148。
所述循环冗余码(CRC)控制信号端口145用以控制所述循环冗余码计算模块143的运动。所述循环冗余码(CRC)控制信号端口145包括一循环冗余码(CRC)输出控制埠、一循环冗余码(CRC)输出数据端口和一循环冗余码(CRC)输入数据端口。所述循环冗余码(CRC)输出控制埠用以重置(Reset)所述循环冗余码计算模块143所计算的所述循环冗余码值,和启动所述循环冗余码计算模块143开始计算所述循环冗余码,以及控制向所述循环冗余码计算模块143取得所计算的所述循环冗余码。
所述循环冗余码(CRC)输出数据端口用以将所需的数据传送到所述循环冗余码计算模块143。所述循环冗余码(CRC)输入数据端口用以取得所述循环冗余码计算模块143所计算的所述循环冗余码。
所述先进先出内存(FIFO)控制信号端口146包括一先进先出内存(FIFO)数据输入端口、一先进先出内存(FIFO)数据输出端口和一先进先出内存(FIFO)输出控制埠。所述先进先出内存(FIFO)数据输入端口用以读取所述先进先出内存13中的写入内存单元的所述iSCSI协议数据单元。所述先进先出内存(FIFO)数据输出端口用以将修改后的所述iSCSI协议数据单元写入所述先进先出内存13中的读出内存单元。所述先进先出内存(FIFO)输出控制埠用以将读取或写入的控制信号传送到所述先进先出内存13。
所述直接内存访问(DMA)控制信号端口147包括一直接内存访问(DMA)输入控制端口和一直接内存访问(DMA)输出控制埠。所述直接内存访问(DMA)输入控制埠用以接收所述直接内存访问(DMA)控制器15所传送的控制消息、设定是否计算所述iSCSI协议数据单元的表头摘要、设定是否计算所述iSCSI协议数据单元的数据摘要、设定所述iSCSI协议数据单元的表头大小、设定所述iSCSI协议数据单元的数据在所述所述先进先出内存13的位置、判别所述直接内存访问(DMA)控制器15是否已经将数据都搬到所述先进先出内存13的所述写入内存单元中、将目前的直接内存访问模式设定为传送模式(Txmode)或接收模式(Rx mode)并取得所述循环冗余码(CRC)控制模块144的状态。所述直接内存访问(DMA)输出控制端口用以将响应信号传送到所述直接内存访问(DMA)控制器15。
所述循环冗余码(CRC)寄存器檔(Register File)148包括一循环冗余码(CRC)控制寄存器和一循环冗余码(CRC)状态寄存器。所述循环冗余码(CRC)控制寄存器用以存储目前所述直接内存访问(DMA)控制器15的设定、目前是否启动所述iSCSI协议数据单元的表头摘要的计算、目前是否启动所述iSCSI协议数据单元的数据摘要的计算、目前处理的所述iSCSI协议数据单元的表头的大小和目前所述iSCSI协议数据单元的数据在所述先进先出内存13的位置。所述循环冗余码(CRC)状态寄存器用以存储目前所述循环冗佘码(CRC)控制模块144的处理状态。
参考图4,其显示所述循环冗余码控制模块144的数据处理流程示意图。所述循环冗余码控制模块144另外包括一第一比较器161、一第二比较器162、一第三比较器163、一第四比较器164、一第五比较器165、一第六比较器166、一循环冗余码(CRC)取代和比较电路167。首先由所述FIFO数据输入端口读取所述iSCSI协议数据单元的数据。从所述第一比较器161判别是否启动iSCSI循环冗余码的运算,如果没有,就将数据写回所述FIFO数据输出端口。如果启动iSCSI循环冗余码的运算,就由所述第二比较器162判别目前所述iSCSI协议数据单元的数据是否为表头(Header),如果为表头,就到所述第三比较器163;如果不是表头而是数据,就到所述第五比较器165。
所述第三比较器163用以判别是否启动表头的循环冗余码(CRC)的运算,如果不启动,就将数据写回所述FIFO数据输出端口;如果启动表头的循环冗余码(CRC)的运算,就到所述第四比较器164。所述第四比较器164用以判别是否具有表头摘要(Header digest),如果没有,就将数据写回所述FIFO数据输出端口;如果有表头摘要,就将数据传到所述循环冗余码计算模块143以计算所述循环冗余码。
所述第五比较器165用以判别是否启动数据(Data)的循环冗余码(CRC)的运算,如果不启动,就将数据写回所述FIFO数据输出端口;如果有启动数据的循环冗余码(CRC)的运算,就到所述第六比较器166。所述第六比较器166用以判别是否具有数据摘要(Data digest),如果没有,就将数据写回所述FIFO数据输出端口;如果有数据摘要,就将数据传到所述循环冗余码计算模块143以计算所述循环冗余码。
所述循环冗余码(CRC)取代和比较电路167用以接收所述循环冗余码计算模块143所计算的所述循环冗余码,在传送模式时,所述循环冗余码将取代所述iSCSI协议数据单元中已有的数据摘要或表头摘要值;在接收模式时,所述循环冗余码会与所述iSCSI协议数据单元中的数据摘要或表头摘要值进行比较。如果相同就将数据摘要或表头摘要值设为0;如果不同,就不改变数据摘要或表头摘要值。并将修改后的所述iSCSI协议数据单元传送到所述FIFO数据输出端口,以写入所述先进先出内存13的所述读出内存单元。
本发明的直接内存访问系统10提供iSCSI协议与TCP/IP协议的数据传输接口,在直接访问iSCSI协议数据单元的过程中,自动产生iSCSI循环冗余码,并自动更新iSCSI协议数据单元的摘要值(digest)。在不影响原有的iSCSI协议与TCP/IP协议的情形下,能提供快速且高效能的iSCSI循环冗余码处理。因此,利用本发明的直接内存访问系统可降低CPU的负荷(loading),并减少重复读取iSCSI协议数据单元的时间(latency),以提高处理iSCSI循环冗余码的速度与效能。
但上述实施例仅为说明本发明的原理和其功效,而非用以限制本发明。因此,所属领域的技术人员在不违背本发明的精神的情况下可对上述实施例进行修改和变化。本发明的权利范围应由上述权利要求书所界定。
权利要求
1.一种用于因特网小型计算机系统接口(iSCSI)的直接内存访问系统,其包含一第一总线接口;一第二总线接口;一先进先出内存,其连接到所述第一总线接口和所述第二总线接口;一iSCSI循环冗余码模块,其连接到所述先进先出内存,用以由所述先进先出内存取得一iSCSI协议数据单元,根据所述iSCSI协议数据单元计算得到一循环冗余码;和一直接内存访问控制器,其连接到所述先进先出内存和所述iSCSI循环冗余码模块,用以控制所述先进先出内存和所述iSCSI循环冗余码模块的运动。
2.根据权利要求1所述的直接内存访问系统,其中所述第一总线接口为一主机计算机总线接口。
3.根据权利要求1所述的直接内存访问系统,其中所述第二总线接口为一特定应用集成电路(ASIC)总线接口。
4.根据权利要求1所述的直接内存访问系统,其中所述先进先出内存包括复数个内存单元组,每一内存单元组包括一写入内存单元和一读出内存单元,所述写入内存单元用以存储来自所述第一总线接口或所述第二总线接口的数据,所述读出内存单元用以存储读出到所述第一总线接口或所述第二总线接口的资料。
5.根据权利要求4所述的直接内存访问系统,其中所述iSCSI循环冗余码模块包括一先进先出内存侧接口,其用以访问所述先进先出内存的数据;一直接内存访问控制器侧接口,其用以访问所述直接内存访问控制器的数据;一循环冗余码计算模块,其用以计算得到所述iSCSI协议数据单元的所述循环冗余码;和一循环冗余码控制模块,其用以控制所述循环冗余码计算模块的运算,和控制所述先进先出内存侧接口和所述直接内存访问控制器侧接口。
6.根据权利要求5所述的直接内存访问系统,其中所述循环冗余码控制模块包括一循环冗余码控制信号端口,其用以控制所述循环冗余码计算模块;一先进先出内存控制信号端口,其用以控制读取所述写入内存单元的所述iSCSI协议数据单元,或将经修改的所述iSCSI协议数据单元写入到所述读出内存单元;一直接内存访问控制信号端口,其用以接收所述直接内存访问控制器的数据和将响应数据传送到所述直接内存访问控制器;和一循环冗余码寄存器槽,其用以存储所述循环冗余码控制模块的状态和设定。
7.根据权利要求6所述的直接内存访问系统,其中所述循环冗余码控制模块另外包括复数个比较器,其用以判断是否进行计算所述循环冗余码;一循环冗余码取代电路,其用以在一传送模式时,将所述循环冗余码取代所述iSCSI协议数据单元内的表头摘要或数据摘要;和一循环冗余码比较电路,其用以在一接收模式时,将所述循环冗余码与所述iSCSI协议数据单元内的表头摘要或数据摘要比较。
全文摘要
本发明涉及一种用于因特网小型计算机系统接口的直接内存访问系统,其包括一第一总线接口、一第二总线接口、一先进先出内存、一iSCSI循环冗余码模块和一直接内存访问控制器。本发明将所述iSCSI循环冗余码模块嵌入所述直接内存访问系统中,以提供iSCSI协议与TCP/IP协议的数据传输接口,在直接访问iSCSI协议数据单元的过程中,自动计算iSCSI循环冗余码,并自动更新iSCSI协议数据单元的摘要值(digest)。因此,利用本发明的直接内存访问系统可降低CPU的负荷,并减少重复读取iSCSI协议数据单元的时间,以提高处理iSCSI循环冗余码的速度和效能,并减少读取内存时间和等待处理时间。
文档编号H04L29/06GK1904870SQ20051008730
公开日2007年1月31日 申请日期2005年7月28日 优先权日2005年7月28日
发明者吴正毅, 陈汉强 申请人:财团法人工业技术研究院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1