一种数据传输方法及设备与流程

文档序号:11681192阅读:190来源:国知局
一种数据传输方法及设备与流程
本发明涉及数据传输
技术领域
,尤其涉及一种数据传输方法及设备。
背景技术
:目前,在以太网数据传输过程中,主机的外围设备接收主机发送的以太网报文的方式为:主机向外围设备发送bd(bufferdescriptor,缓存描述符);外围设备接收主机发送的bd,并根据该bd对应的物理缓存地址以及该bd中的报文长度,从该bd对应的主机的缓存中读取以太网报文。外围设备向主机发送以太网报文的方式为:外围设备向主机申请用于写入以太网报文的内存空间;主机为外围设备分配其申请的内存空间;外围设备将以太网报文写入主机分配的内存空间,并将以太网报文的存储地址以及报文的长度写入外围设备的指定寄存器中。上述外围设备进行数据传输的方式均依赖于主机为外围设备发送bd或主机为外围设备分配内存空间,即,外围设备每次执行接收或者发送以太网报文的操作时,均需要主机参与分配用于接收以太网报文的缓存或者用于发送以太网报文的内存空间,这就会造成以太网报文的传输速度慢、传输效率低的问题,在以太网报文数量较大的场景下,以太网报文的传输速度慢、传输效率低的问题更加突出。技术实现要素:本发明提供一种数据传输方法及设备,用以解决现有技术中存在的以太网报文的传输速度慢、传输效率低的问题。本发明实施例提供一种数据发送方法,应用于主机的外围设备,包括:从第一bd链中读取一个对所述外围设备可用的第一bd,其中,所述第一bd链位于所述主机内存中且应用于所述外围设备向所述主机发送以太网报文的过程中,所述第一bd对所述主机不可用;将以太网报文写入所述第一bd对应的缓存中,并对所述第一bd进行更新使所述第一bd对所述主机可用且对所述外围设备不可用;若所述第一bd更新完成,生成发送完成中断并写入位于所述主机的中断缓存区;通知所述主机处理所述发送完成中断。本发明实施例还提供一种数据接收方法,应用于主机的外围设备,包括:从第二bd链中读取一个对所述外围设备可用的第二bd,其中,所述第二bd链位于所述主机内存中且应用于所述外围设备接收所述主机发送的以太网报文的过程中,所述第二bd对所述主机不可用;从所述第二bd对应的缓存中提取以太网报文,并将提取到的以太网报文写入用于存储主机发送的以太网报文的缓存空间;对所述第二bd进行更新使所述第二bd对所述外围设备不可用且对所述主机可用;若所述第二bd更新完成,生成接收完成中断并写入位于所述主机的中断缓存区;通知所述主机处理所述接收完成中断。本发明实施例还提供一种数据接收方法,应用于主机,包括:接收到所述主机的外围设备发送的中断处理通知时,对写入所述主机的中断缓存区的中断进行轮询处理;若当前轮询到的中断为发送完成中断,从第一bd链中读取一个对所述主机可用的第一bd,其中,所述第一bd链位于所述主机内存中且应用于所述主机接收所述外围设备发送的以太网报文的过程中,所述第一bd对所述外围设备不可用;从所述第一bd对应的缓存中提取以太网报文,并对所述第一bd进行更新使所述第一bd对所述主机不可用且对所述外围设备可用。本发明实施例还提供一种数据发送方法,应用于主机,包括:从第二bd链中读取一个对所述主机可用的第二bd,其中,所述第二bd链位于所述主机内存中且应用于所述主机向所述外围设备发送以太网报文的过程中,所述第二bd对所述外围设备不可用;将以太网报文写入所述第二bd对应的缓存中,并对所述第二bd进行更新使所述第二bd对所述外围设备可用且对所述主机不可用;以及,接收所述外围设备发送的接收完成中断通知,若轮询到的中断为接收完成中断,释放所述第二bd对应的缓存中内容,其中,接收到所述主机的外围设备发送的中断处理通知时,对写入所述主机的中断缓存区的中断进行轮询处理。本发明实施例还提供一种用于数据发送的外围设备,所述外围设备为主机的外围设备,包括:读取模块,用于从第一bd链中读取一个对所述外围设备可用的第一bd,其中,所述第一bd链位于所述主机内存中且应用于所述外围设备向所述主机发送以太网报文的过程中,所述第一bd对所述主机不可用;写入模块,用于将以太网报文写入所述第一bd对应的缓存中;更新模块,用于对所述第一bd进行更新使所述第一bd对所述主机可用且对所述外围设备不可用;生成模块,用于若所述第一bd更新完成,生成发送完成中断并写入位于所述主机的中断缓存区;通知模块,用于通知所述主机处理所述发送完成中断。本发明实施例还提供一种用于数据接收的外围设备,所述外围设备为主机的外围设备,包括:读取模块,用于从第二bd链中读取一个对所述外围设备可用的第二bd,其中,所述第二bd链位于所述主机内存中且应用于所述外围设备接收所述主机发送的以太网报文的过程中,所述第二bd对所述主机不可用;写入模块,用于从所述第二bd对应的缓存中提取以太网报文,并将提取到的以太网报文写入用于存储主机发送的以太网报文的缓存空间;更新模块,用于对所述第二bd进行更新使所述第二bd对所述外围设备不可用且对所述主机可用;生成模块,用于若所述第二bd更新完成,生成接收完成中断并写入位于所述主机的中断缓存区;通知模块,用于通知所述主机处理所述接收完成中断。本发明实施例还提供一种用于数据接收的主机,包括:处理模块,用于接收到所述主机的外围设备发送的中断处理通知时,对写入所述主机的中断缓存区的中断进行轮询处理;读取模块,用于若所述处理模块当前轮询到的中断为发送完成中断,从第一bd链中读取一个对所述主机可用的第一bd,其中,所述第一bd链位于所述主机内存中且应用于所述主机接收所述外围设备发送的以太网报文的过程中,所述第一bd对所述外围设备不可用;提取模块,用于从所述第一bd对应的缓存中提取以太网报文;更新模块,用于对所述第一bd进行更新使所述第一bd对所述主机不可用且对所述外围设备可用。本发明实施例还提供一种用于数据发送的主机,包括:读取模块,用于从第二bd链中读取一个对所述主机可用的第二bd,其中,所述第二bd链位于所述主机内存中且应用于所述主机向所述外围设备发送以太网报文的过程中,所述第二bd对所述外围设备不可用;写入模块,用于将以太网报文写入所述第二bd对应的缓存中;更新模块,用于对所述第二bd进行更新使所述第二bd对所述外围设备可用且对所述主机不可用;处理模块,用于接收所述外围设备发送的接收完成中断通知,若轮询到的中断为接收完成中断,释放所述第二bd对应的缓存中内容,其中,接收到所述主机的外围设备发送的中断处理通知时,对写入所述主机的中断缓存区的中断进行轮询处理。利用本发明实施例提供的数据传输方法及设备,具有以下有益效果:主机中预先存储了第一bd链或第二bd链,外围设备在进行以太网报文发送或接收时,从位于主机内存中的第一bd链或第二bd链读取对外围设备可用的第一bd或第二bd,将以太网报文写入第一bd对应的缓存中,或者,从第二bd对应的缓存中读取以太网报文,即外围设备可主动从主机中读取bd,避免了由主机为外围设备分配内存空间,从而能够在一定程度上提高以太网报文的传输速度、传输效率,尤其在以太网报文数量较大的场景下,本发明实施例的效果更加明显。此外,本发明实施例,避免了主机与外围设备之间传输以太网报文的过程中,主机被外围设备频繁中断的现象,也能够防止因漏处理外围设备发送的中断而导致的丢包现象的出现。附图说明图1为本发明实施例一提供的数据发送方法的流程图示意图;图2为本发明实施例一提供的与图1对应的读取第一bd的方法流程示意图;图3为本发明实施例一提供的与图1对应的将中断写入中断缓存区的方法流程图示意图;图4为本发明实施例的应用场景示意图;图5为本发明实施例一提供的与图4对应的dma控制器中发送状态机的流程示意图;图6为本发明实施例二提供的数据接收方法的流程示意图;图7为本发明实施例二提供的与图6对应的对中断进行轮询处理的方法流程示意图;图8为本发明实施例三提供的数据接收方法的流程示意图;图9为本发明实施例三提供的与图8对应的读取第二bd的方法流程示意图;图10为本发明实施例三提供的与图8对应的将中断写入中断缓存区的方法流程图示意图;图11为本发明实施例三提供的与图4对应的dma控制器中接收状态机的流程示意图;图12为本发明实施例四提供的数据发送方法的流程示意图;图13为本发明实施例提供的对第一bd链中的bd进行更新后的bd示意图;图14为本发明实施例提供的对第二bd链中的bd进行更新后的bd示意图;图15为本发明实施例提供的对中断进行写入和处理后的中断示意图;图16为本发明实施例五提供的外围设备的结构示意图;图17为本发明实施例六提供的主机的结构示意图;图18为本发明实施例七提供的外围设备的结构示意图;图19为本发明实施例八提供的主机的结构示意图。具体实施方式下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。下面结合具体实施例对本发明实施例提供的数据传输方法及设备进行详细说明。实施例一本发明实施例一提供一种数据发送方法,应用于主机的外围设备,具体应用于主机的外围设备向主机发送以太网报文的过程,如图1所示,包括:步骤101,从第一bd链中读取一个对所述外围设备可用的第一bd,其中,所述第一bd链位于所述主机内存中且应用于所述外围设备向所述主机发送以太网报文的过程中,所述第一bd对所述主机不可用。本发明实施例中,外围设备根据预设的读取规则,从第一bd链中读取一个对外围设备可用的bd,作为第一bd。其中,第一bd链位于主机内存中,且应用于主机的外围设备向主机发送以太网报文的过程中,第一bd链中的bd对主机的外围设备可用时,对主机不可用,第一bd链中的bd对主机的外围设备不可用时,对主机可用。具体实施时,主机中预先设置第一bd(bufferdescriptor,缓存描述符)链,该第一bd链中包括至少两个bd,可供外围设备向主机发送以太网报文。第一bd链设置在主机内存中,主机和外围设备共同访问和维护。优选地,第一bd链中任意相邻的两个bd中,前一bd的结束物理基地址与后一bd的开始物理基地址连续。步骤102,将以太网报文写入所述第一bd对应的缓存中,并对所述第一bd进行更新使所述第一bd对所述主机可用且对所述外围设备不可用。具体实施时,根据第一bd中的物理缓存地址,将以太网报文写入第一bd的物理缓存地址对应的缓存中。同时,将第一bd中用于表示该bd是否可用的字段更新为对主机可用且对外围设备不可用。其中,可用0表示对主机可用且对外围设备不可用,用1表示对主机不可用且对外围设备可用。需要说明的是,第一bd链中各个bd对应的缓存为主机中的缓存。需要说明的是,本发明实施例中提及的对外围设备可用的bd默认对主机不可用,即对外围设备可用且对主机不可用;对主机可用的bd默认对外围设备不可用,即对外围设备不可用且对主机可用,其中,第一bd链中对外围设备可用的bd表示外围设备可将以太网报文写入该可用bd对应的缓存中。优选地,对所述第一bd进行更新使所述第一bd中的报文长度为写入所述第一bd对应的缓存中的以太网报文的长度。具体实施时,将第一bd中用于表示以太网报文长度的字段内容更新为写入第一bd对应的缓存中的以太网报文的长度,从而保证第一bd中信息的完整性,以使主机能够准确的从该第一bd对应的缓存中读取以太网报文。步骤103,若所述第一bd更新完成,生成发送完成中断并写入位于所述主机的中断缓存区。其中,中断缓存区用于缓存外围设备写入的中断。具体实施时,外围设备将以太网报文写入第一bd对应的缓存之后,对第一bd进行更新,在第一bd更新完成之后,生成发送完成中断以通知主机以太网报文发送完成。主机可根据该发送完成中断对成功写入第一bd的以太网报文进行提取以及后续处理。步骤104,通知所述主机处理所述发送完成中断。本发明实施例,主机中预先存储了第一bd链,外围设备在进行以太网报文的发送时,从位于主机内存中的第一bd链读取对外围设备可用的第一bd,将以太网报文写入第一bd对应的缓存中,即外围设备可主动从主机中读取bd,避免了由主机为外围设备分配内存空间,从而能够在一定程度上提高以太网报文的传输速度、传输效率,尤其在以太网报文数量较大的场景下,本发明实施例的效果更加明显。此外,本发明实施例在将以太网报文写入第一bd后,生成发送完成中断并写入位于主机的中断缓存区以及通知主机,以使主机处理发送完成中断。作为一种优选地实施方式,从第一bd链中读取一个对所述外围设备可用的第一bd,如图2所示,具体包括:步骤201,根据第一bd链中最近一个被读取的bd的索引,读取所述第一bd链中的当前bd,所述当前bd与所述最近一个被读取的bd相邻。需要说明的是,第一bd链中最近一个被读取的bd为读取时间距离当前时间最近的一个已被读取的bd。在第一bd链中,当前bd与最近一个被读取的bd相邻,且当前bd位于最近一个被读取的bd之后。步骤202,判断读取的当前bd是否对所述外围设备可用,若是,执行步骤204,否则,执行步骤203。具体实施时,在读取的当前bd对外围设备可用的情况下,执行步骤204,在读取的当前bd对外围设备不可用的情况下,执行步骤203。步骤203,生成所述当前bd不可用中断并写入位于所述主机的中断缓存区;通知所述主机处理所述当前bd不可用中断;以及,继续执行步骤201。本步骤中,具体生成当前bd对外围设备不可用中断,由于读取的当前bd对外围设备不可用,则继续执行步骤201,并继续步骤202的判断过程,直到读取到的当前bd可用为止。举例说明:假设第一bd链包括三个bd,这三个bd的索引分别为1、2、3,第一bd链中最近一个被读取的bd的索引为1,则读取第一bd链中的当前bd(即索引为2的bd),此时,如果读取的索引为2的bd对外围设备不可用,则此时,第一bd链中最近一个被读取的bd的索引为2,此时,根据索引2读取索引为3的当前bd。步骤204,将读取的当前bd作为第一bd。本步骤中,将读取的对外围设备可用的当前bd作为第一bd。利用本发明实施例,在读取的当前bd对外围设备不可用的情况下,生成当前bd不可用中断,并继续从第一bd链中读取bd,直到读取到对外围设备可用的bd时,将读取的对外围设备可用的bd作为第一bd,从而能够保证读取到对外围设备可用的第一bd。优选地,第一bd链为环形数据结构,这样外围设备可循环从第一bd链中读取bd。具体实施时,可按照以下方式读取第一bd链中的当前bd:方式一:预先为第一bd链中的每个bd设定不同编号,其中,相邻bd的编号连续,将每个bd的编号作为对应bd的索引;确定与最近一个被读取的bd的第一编号相邻且比最近一个被读取的bd的编号大的第二编号,读取第二编号对应的bd作为当前bd;若第一bd链中最近一个被读取的bd的编号为第一bd链中编号最大的bd,则读取第一bd链中编号最小的bd作为当前bd;其中,按照bd编号由小到大的顺序依次读取第一bd链中的bd,为第一bd链中的bd设定编号的规则可以为:bd的起始物理基地址越小编号越小。方式二:确定第一bd链中最近一个被读取的bd的起始物理基地址加上设定值为当前bd的起始物理基地址,根据当前bd的起始物理基地址以及设定值读取当前bd,若第一bd链中最近一个被读取的bd的起始物理基地址加上设定值为第一bd链的结束物理基地址,则确定当前bd的起始物理基地址为第一bd链的起始物理基地址;其中,外围设备按照第一bd链中物理基地址由小到大的顺序依次读取第一bd链中的bd,各个bd所占的空间大小相同,设定值等于单个bd所占的空间大小,第一bd链的物理基地址预先写入外围设备中。优选地,设定值等于2k,设定值的也可以为其它值,这里不做限定。方式二中以bd的起始物理基地址作为bd的索引。举例说明第一bd链中的bd的循环利用过程:假设第一bd链中bd的个数为3,bd编号(索引)依次为1、2、3,外围设备按照bd编号由小到大的顺序读取bd,首先读取的bd编号为1,其次读取的bd编号为2,再次读取的bd编号为3,外围设备需要继续读取第一bd链中的bd时,确定最近一次读取的bd的编号为3(第一bd链中编号最大的一个bd),则继续从编号1开始,按照编号由小到大的顺序,依次读取第一bd链中的bd。优选地,若外围设备与主机之间的pci(peripheralcomponentinterconnect,外设部件互连标准)总线被超时占用,生成pci总线被占用中断并写入位于所述主机的中断缓存区;通知所述主机处理所述pci总线被占用中断。具体实施时,外围设备在从第一bd链中读取bd之前,检查pci总线是否被超时占用,或者,若连续从第一bd链中读取同一bd失败的次数超过第一次数阈值,确定pci总线被超时占用,或者,若连续将同一以太网报文写入同一bd对应的缓存失败的次数超过第二次数阈值,确定pci总线被超时占用,或者,若连续对同一bd进行更新失败的次数超过第三次数阈值,确定pci总线被超时占用。其中,第一次数阈值、第二次数阈值以及第三次数阈值的大小可以相同也可以不同,优选地,第一次数阈值、第二次数阈值以及第三次数阈值的大小相同,比如均等于14。其中,可根据实际应用场景设置用于判断pci总线是否被超时占用的时间阈值,比如该时间阈值可设定为1000*30ns,当pci总线被占用的时长超过1000*30ns时,确定pci总线被超时占用,时间阈值也可以为其它数值,这里不做限定。具体实施过程中,针对外围设备生成的任一中断,将所述生成的任一中断写入位于所述主机的中断缓存区,如图3所示,具体包括:步骤301,确定所述中断缓存区内指定中断缓存的索引,其中,所述中断缓存区包括多个中断缓存,一个中断缓存用于缓存一个中断,所述指定中断缓存为所述中断缓存区内最近一个被写入中断的中断缓存。需要说明的是,中断缓存区内最近一个被写入中断的中断缓存为写入中断时间距离当前时间最近的一个已被写入中断的中断缓存。优选地,中断缓存区包括128个中断缓存,也可以包括其它数值的中断缓存,这里不做赘述。其中,中断缓存区为主机预先设置的专门用于缓存来自外围设备的中断的区域,具体的,将中断缓存区预先划分为多个子缓存区,一子缓存区作为一个中断缓存,并且,一个中断缓存用于缓存一个中断,当前一中断缓存被写入中断后,外围设备生成的下一个中断则被写入前一中断缓存之后且与前一中断缓存相邻的下一中断缓存。优选地,每个中断缓存对应的缓存空间的大小相同,比如每个中断缓存对应的缓存空间的大小均为64比特,也可为其它大小,这里不做限定。步骤302,根据所述指定中断缓存的索引,确定位于所述指定中断缓存之后且与所述指定中断缓存相邻的当前中断缓存。其中,在中断缓存区内,当前中断缓存与最近一个被写入中断的中断缓存相邻且位于最近一个被写入中断的中断缓存之后。步骤303,将所述生成的任一中断写入所述当前中断缓存。优选地,中断缓存区为环形数据结构,这样外围设备可循环地利用中断缓存区内的中断缓存。具体实施时,针对任意相邻的两个中断缓存,前一中断缓存的结束物理地址与后一中断缓存的起始物理地址连续,即中断缓存区内各个中断缓存保持物理地址的连续,这样便于外围设备循环利用中断缓存区内的中断缓存。本发明实施例中读取中断缓存区内的当前中断缓存的方式与读取第一bd链中的当前bd的方式类似,这里不做赘述。循环利用中断缓存区内中断缓存的方式与循环利用第一bd链中的bd的方式类似,比如:若最近一个被写入中断的中断缓存为中断缓存区内编号最大的中断缓存,将中断缓存区内编号最小的中断缓存作为当前中断缓存。本发明实施例,按照最近一个被写入中断的中断缓存的索引确定位于该最近一个被写入中断的中断缓存之后且与该中断缓存相邻的当前中断缓存,从而顺序的、循环的使用中断缓存区内的中断缓存。如图4所示,为本发明实施例提供的数据发送方法的应用场景示意图,需要注意的是,上述应用场景仅是为了便于理解本发明的精神和原理而示出,本发明的实施方式在此方面不受任何限制。相反,本发明的实施方式可以应用于适用的任何场景。图4中,fpga(field-programmablegatearray,现场可编辑门阵列)相当于本发明实施例中的外围设备,fpga中包括dma(directmemoryaccess,直接存储器访问)控制器、mac(physicalaccesscontrol,物理访问控制器)和pci控制器。dma控制器通过pci总线与主机连接,mac通过gmii(gigabitmediumindependentinterface,千兆媒体独立接口)接口与以太网进行以太网报文的传输,dma控制器将来自主机的以太网报文经mac发送至以太网,dma控制器从mac中获取来自以太网的以太网报文发送给主机;其中,dma控制器可以包括发送缓存和接收缓存,发送缓存用于缓存从mac获取的以太网报文,接收缓存用于缓存从主机接收的以太网报文,发送缓存可包括两个子缓存ram0和ram1,接收缓存可包括两个子缓存ram2和ram3。具体实施时,dma控制器向主机发送以太网报文的过程中,会维护一个发送状态机,如图5所示,为dma控制器中发送状态机的流程示意图,其中,除了图5中所示的dma控制器处于空态(等待状态)的情况外,在pci总线复位、系统复位时,发送状态机也处于空态;当dma控制器中的发送缓存中存储完整以太网报文时,发送状态机进入发送开始状态并由发送开始状态进入发送检查状态;在发送检查状态,dma控制器检查pci总线是否被超时占用,如果否,则进入读当前bd状态,如果是,则进入发送丢帧状态;其中,在发送丢帧状态下请求将发送缓存中的以太网报文清除,并转入空态;在读当前bd状态,判断是否在第一次数阈值内读取到当前bd,如果否,进入pci总线被超时占用,发送失败状态并转入空态,如果是,则判断当前bd是否可用,如果可用,进入写以太网报文状态,如果不可用,则继续进入读当前bd状态;在写以太网报文状态,判断是否在第二次数输阈值内成功写入以太网报文,如果否,进入pci总线被超时占用,发送失败状态并转入空态,如果是,则进入更新bd状态;若更新失败的次数超过第三次数阈值,则进入pci总线被超时占用,发送失败状态并转入空态,如果bd更新完成,则确定以太网报文发送完成并进入空态。实施例二本发明实施例二提供一种数据接收方法,应用于主机,具体应用于主机接收主机的外围设备发送的以太网报文的过程,如图6所示,包括:步骤601,接收到所述主机的外围设备发送的中断处理通知时,对写入所述主机的中断缓存区的中断进行轮询处理。具体实施时,主机可按照先写入的中断先处理的原则,对中断缓存区内的中断进行轮询处理。步骤602,若当前轮询到的中断为发送完成中断,从第一bd链中读取一个对所述主机可用的第一bd,其中,所述第一bd链位于所述主机内存中且应用于所述主机接收所述外围设备发送的以太网报文的过程中,所述第一bd对所述外围设备不可用。具体实施时,主机若轮询到主机的外围设备写入的发送完成中断,则主机从第一bd链中读取对主机可用的第一bd,该第一bd为对主机可用且对外围设备不可用的bd。需要说明的是,本发明实施例中提及的对外围设备可用的bd默认对主机不可用,即对外围设备可用且对主机不可用;对主机可用的bd默认对外围设备不可用,即对外围设备不可用且对主机可用,其中,第一bd链中对主机可用的bd表示主机可从该可用bd对应的缓存中提取以太网报文。步骤603,从所述第一bd对应的缓存中提取以太网报文,并对所述第一bd进行更新使所述第一bd对所述主机不可用且对所述外围设备可用。具体实施时,根据第一bd中的物理缓存地址,从第一bd的物理缓存地址对应的缓存中提取以太网报文。同时,将第一bd中用于表示该bd是否可用的字段更新为对主机不可用且对外围设备可用,以便外围设备再次使用该bd。需要说明的是,本发明实施例中的第一bd链与实施例一中的第一bd链为同一bd链,针对外围设备来说,第一bd链为用于向主机发送以太网报文的bd链,针对主机来说,第一bd链为用于接收外围设备发送的以太网报文的bd链,其中,第一bd链中对主机可用的bd表示主机可从该可用bd对应的缓存中提取外围设备写入的以太网报文。本发明实施例,主机对外围设备生成的中断进行轮询处理,在处理过程中若轮询到的中断为发送完成中断,则根据对主机可用的第一bd,提取外围设备发送的以太网报文从而接收外围设备发送的以太网报文,并将第一bd进行更新,以便外围设备可循环使用第一bd链中的bd。本发明实施例中,按照以下方式从第一bd链中读取一个对所述主机可用的第一bd:根据第一bd链中最近一个被读取的bd的索引,读取所述第一bd链中的当前bd,当前bd与最近一个被读取的bd相邻,且当前bd位于最近一个被读取的bd之后;若当前bd可用,则将当前bd作为第一bd;若当前bd不可用,则确定未读取到第一bd,此时主机可继续轮询下一个中断并进行相应的中断处理。优选地,接收到所述主机的外围设备发送的中断处理通知时,对写入所述主机的中断缓存区的中断进行轮询处理,如图7所示,具体包括:步骤701,接收到所述外围设备发送的中断处理通知时,判断主机是否正执行外围设备中断处理程序,若是,执行步骤702,否则,执行步骤703至705。如果主机正执行外围设备中断处理程序,执行步骤702;如果所述主机未执行外围设备中断处理程序,执行以下步骤703至步骤705。本发明实施例所述的外围设备中断处理程序的作用是,对外围设备写入中断缓存区的中断进行轮询处理,直至中断缓存区的所有中断处理完成。步骤702,等待被外围设备中断处理程序轮询。步骤703,触发主机进入外围设备中断处理程序,并关闭中断。具体实施时,外围设备将中断写入中断缓存区后,会向主机发送中断处理通知,主机接收到外围设备发送的中断处理通知后,一种情况是主机正在执行外围设备中断处理程序,也就是正在对中断缓存区中外围设备写入的中断进行轮询处理,则该中断处理通知对应的中断等待被外围设备中断处理程序的轮询,另一种情况是,主机未执行外围设备中断处理程序,也就是主机没有进入外围设备中断处理程序而是在执行其它程序,此时,该中断处理通知会触发主机进入外围设备中断处理程序。主机进入外围设备中断处理程序,关闭中断,关闭中断可以使主机不被任何中断所打断而进入另一个中断处理程序,使得主机对写入中断缓存区的中断进行轮询处理,直至中断缓存区的所有中断处理完成。步骤704,对写入所述主机的中断缓存区的中断进行轮询处理,其中,中断缓存区包括多个中断缓存,一个中断缓存用于缓存一个中断。具体实施时,按照以下方式对中断缓存区内的中断进行轮询处理:根据上一个中断缓存的索引,获取位于上一个中断缓存之后且与上一个中断缓存相邻的当前中断缓存;从该当前中断缓存中读取中断并进行处理;并将当前中断缓存作为上一个中断缓存,继续执行获取当前中断缓存的步骤,其中,上一个中断缓存为最近一个被处理的中断所属的中断缓存。本发明实施例中,获取中断缓存区内的当前中断缓存的方式与读取第一bd链中的当前bd的方式类似,这里不做赘述。循环利用中断缓存区内中断缓存的方式与循环利用第一bd链中的bd的方式类似,这里不做赘述。优选地,中断缓存区为环形数据结构,这样可循环地利用中断缓存区内的中断缓存。具体实施时,针对任意相邻的两个中断缓存,前一中断缓存的结束物理地址与后一中断缓存的起始物理地址连续,即中断缓存区内各个中断缓存保持物理地址的连续。步骤705,若所述中断缓存区内的所有中断处理完成,退出外围设备中断处理程序,并打开中断。具体实施时,外围设备发送的一个中断触发主机进入外围设备中断处理程序后,主机关闭中断,主机关闭中断后,外围设备有可能还会向中断缓存区写入新的中断,但是,主机不会被再次打断进入到新的中断处理程序,而是按照外围设备的中断在中断缓存区的顺序,对中断缓存区中所有中断进行轮询处理,直至中断缓存区中没有可处理的中断。这样,主机在处理中断缓存区的中断的过程中,外围设备写入新的中断也会被主机轮询到,达到了批量处理外围设备的中断的目的,而不是外围设备的中断频繁中断主机,使主机进入到新的中断处理程序。中断缓存区中没有中断时(即中断缓存区内的中断处理完成),退出外围设备中断处理程序,并打开中断。如果外围设备产生新的中断,主机再次进入外围设备中断处理程序,关闭中断,对中断缓存区的中断进行轮询处理,直至中断缓存区中没有可处理的中断,即直到中断缓存区内的中断处理完成。本发明实施例,不仅主机不会因非外围设备发送的中断而中止处理外围设备发送的中断,而且,主机在处理外围设备的某个中断时,也不会外围设备新的中断的到来而中止当前处理。因为,主机进入中断处理程序后,是对外围设备写入的中断缓存中的中断进行轮询处理,实现了批量处理外围设备发送的中断,避免了主机与外围设备之间传输以太网报文的过程中,主机被外围设备频繁中断的现象,也能够防止因漏处理外围设备发送的中断而导致的丢包现象的出现。优选地,采用如下方式确定所述中断缓存区内的所有中断处理完成:若所述外围设备写入中断所使用的中断缓存的索引与所述主机处理的中断所属的中断缓存的索引相同,确定所述中断缓存区内的所有中断处理完成。具体实施时,当外围设备写入中断所使用的中断缓存与主机处理的中断所属的中断缓存为同一中断缓存时,说明中断缓存区内的所有中断已被轮询到,此时若主机处理完成该同一中断缓存中的中断则说明中断缓存区内的所有中断处理完成,即说明主机轮询到了外围设备写入最后一个中断所使用的中断缓存,此时若主机处理完成该最后一个中断缓存中的中断,则中断缓存区内的所有中断处理完成。本发明实施例,主机可较准确的判断中断缓存区内的中断是否均已处理完成,使得在中断缓存区的所有中断都被处理后才会退出中断处理程序,从而提高了主机接收和发送以太网报文的效率。实施例三本发明实施例三提供一种数据接收方法,应用于主机的外围设备,具体应用于主机的外围设备从主机接收以太网报文的过程。如图8所示,包括:步骤801,从第二bd链中读取一个对所述外围设备可用的第二bd,其中,所述第二bd链位于所述主机内存中且应用于所述外围设备接收所述主机发送的以太网报文的过程中,所述第二bd对所述主机不可用。本发明实施例中,第二bd链设置在主机内存中,主机和外围设备共同访问和维护。外围设备根据预设的读取规则,从第二bd链中读取一个对外围设备可用的bd,作为第二bd。其中,第二bd链位于主机内存中,且应用于主机的外围设备接收主机发送的以太网报文的过程中,第二bd链中的bd对主机的外围设备可用时,对主机不可用,第二bd链中的bd对主机的外围设备不可用时,对主机可用。具体实施时,主机中预先设置第二bd链,第二bd链中包括至少两个bd可供外围设备接收主机发送的以太网报文。优选地,第二bd链中任意相邻的两个bd中,前一bd的结束物理基地址与后一bd的开始物理基地址连续。步骤802,从所述第二bd对应的缓存中提取以太网报文,并将提取到的以太网报文写入用于存储主机发送的以太网报文的缓存空间。具体实施时,外围设备根据第二bd中记录的物理缓存地址以及报文长度从第二bd记录的物理缓存地址对应的缓存内提取以太网报文,并将提取到的以太网报文存储到用于存储主机发送的以太网报文的缓存空间,其中,用于存储主机发送的以太网报文的缓存空间就是上文中提到的接收缓存。步骤803,对所述第二bd进行更新使所述第二bd对所述外围设备不可用且对所述主机可用。具体的,将第二bd中用于表示该bd是否可用的字段更新为对主机可用且对外围设备不可用。其中,可用0表示对主机可用且对外围设备不可用,用1表示对主机不可用且对外围设备可用。第二bd链中各个bd对应的缓存为主机中的缓存。需要说明的是,本发明实施例中提及的对外围设备可用的bd默认对主机不可用,即对外围设备可用且对主机不可用;对主机可用的bd默认对外围设备不可用,即对外围设备不可用且对主机可用,其中,第二bd链中对外围设备可用的bd表示外围设备可从该bd对应的缓存中提取以太网报文。步骤804,若所述第二bd更新完成,生成接收完成中断并写入位于所述主机的中断缓存区。其中,中断缓存区用于缓存外围设备写入的中断。具体实施时,外围设备提取以太网报文之后,对第二bd进行更新,在第二bd更新完成之后,生成接收完成中断,主机可根据该接收完成中断选择重新利用该第二bd。步骤805,通知所述主机处理所述接收完成中断。本发明实施例,主机中预先存储了第二bd链,外围设备在进行以太网报文的接收时,从位于主机内存中的第二bd链读取对外围设备可用的第二bd,从第二bd对应的缓存中读取以太网报文,即外围设备可主动从主机中读取bd,避免了由主机为外围设备发送bd,从而能够在一定程度上提高以太网报文的传输速度、传输效率,尤其在以太网报文数量较大的场景下,本发明实施例的效果更加明显。此外,本发明实施例在将以太网报文写入第二bd后,生成接收完成中断并写入位于主机的中断缓存区以及通知主机,以使主机处理接收完成中断。其中,第一bd链的结束物理基地址可以和第二bd链的起始物理基地址连续,第二bd链的结束物理基地址可以和第一bd链的起始物理基地址连续。具体实施时,若用于存储主机发送的以太网报文的缓存空间的可用空间在预设时长内未出现大于预设空间阈值的情况,生成可用空间不足中断并写入位于所述主机的中断缓存区;通知所述主机处理所述可用空间不足中断中断。其中,在从第二bd链中读取bd之前,通过用于存储主机发送的以太网报文的缓存空间发送的满信号确定可用空间是否大于预设空间阈值,如果可用空间不大于预设空间阈值,继续确定可用空间是否大于预设空间阈值,若在预设时长内均未出现可用空间大于预设空间阈值的情况,则生成可用空间不足中断,并写入主机的中断缓存区以及通知主机处理可用空间不足中断。其中,预设时长可以为1000*30ns,也可以为其它数值,这里不做限定。优选地,从第二bd链中读取一个对所述外围设备可用的第二bd,如图9所示,具体包括:步骤901,根据第二bd链中最近一个被读取的bd的索引,读取所述第二bd链中的当前bd,所述当前bd与所述最近一个被读取的bd相邻。步骤902,判断所述当前bd是否对所述外围设备可用,如果是,执行步骤904,否则,执行步骤903。步骤903,生成当前bd不可用中断并写入位于所述主机的中断缓存区;通知所述主机处理所述当前bd不可用中断;以及,继续执行步骤901。步骤904,将读取的当前bd作为第二bd。其中,针对图9提供的实施例的详细解释与图2提供的实施例的相似解释类似,这里不做赘述。本发明实施例,在读取的当前bd对外围设备不可用的情况下,生成当前bd不可用中断,并继续从第二bd链中读取bd,直到读取到对外围设备可用的bd时,将读取的对外围设备可用的bd作为第二bd,从而能够保证读取到对外围设备可用的第二bd。优选地,第二bd链为环形数据结构,这样外围设备可循环从第二bd链中读取bd。具体实施时,读取第二bd链中的当前bd的方式与读取第一bd链中的当前bd的方式类似,这里不做赘述,循环读取第二bd链中bd的方式与第一bd链中的bd循环利用类似,过程这里不做赘述。优选地,若所述外围设备与所述主机之间的外设部件互连标准pci总线被超时占用,生成pci总线被占用中断并写入位于所述主机的中断缓存区;通知所述主机处理所述pci总线被占用中断。具体实施时,外围设备在从第二bd链中读取bd之前,检查pci总线是否被超时占用,或者,若连续从第二bd链中读取同一bd失败的次数超过第四次数阈值,确定pci总线被超时占用,或者,若连续从同一bd中提取以太网报文失败的次数超过第五次数阈值,确定pci总线被超时占用,或者,若连续对同一bd进行更新失败的次数超过第六次数阈值,确定pci总线被超时占用。其中,第四次数阈值、第五次数阈值以及第六次数阈值的大小可以相同也可以不同,优选地,第四次数阈值、第五次数阈值以及第六次数阈值的大小相同,比如均等于14。其中,可根据实际应用场景设置用于判断pci总线是否被超时占用的时间阈值,比如该时间阈值可设定为1000*30ns,当pci总线被占用的时长超过1000*30ns时,确定pci总线被超时占用,时间阈值也可以为其它数值,这里不做限定。具体实施过程中,针对生成的任一中断,将所述生成的任一中断写入位于所述主机的中断缓存区,如图10所示,具体包括:步骤1001,确定所述中断缓存区内指定中断缓存的索引,其中,所述中断缓存区包括多个中断缓存,一个中断缓存用于缓存一个中断,所述指定中断缓存为所述中断缓存区内最近一个被写入中断的中断缓存。步骤1002,根据所述指定中断缓存的索引,确定位于所述指定中断缓存之后且与所述指定中断缓存相邻的当前中断缓存。步骤1003,将所述生成的任一中断写入所述当前中断缓存。图10提供的实施例的详细实施过程及其有益效果参见上文中对图3提供的实施例的详细描述以及有益效果的描述,这里不做赘述。本发明实施例的应用场景如图4所示,需要注意的是,上述应用场景仅是为了便于理解本发明的精神和原理而示出,本发明的实施方式在此方面不受任何限制。相反,本发明的实施方式可以应用于适用的任何场景。具体实施时,dma控制器接收主机发送的以太网报文的过程中,会维护一个接收状态机,如图11所示,为dma控制器中接收状态机的流程示意图,其中,除了图11中所示的dma控制器处于空态的情况外,在pci总线复位、系统复位时,接收状态机也处于空态;当pc通过dma控制器中的准备完成寄存器通知dma控制器接收以太网报文后,接收状态机进入接收开始状态;接收状态机由接收开始状态转入可用空间检查状态,在可用空间检查状态,判断用于存储主机发送的以太网报文的缓存空间的可用空间在预设时长内是否大于预设空间阈值的情况,如果是,进入读bd状态,如果否,进入空态;在读bd状态,判断是否在第四次数阈值内成功读取到当前bd,如果否,进入pci总线被超时占用,接收失败状态并转入空态,如果是,判断当前bd是否可用,如果当前bd可用,进入提取以太网报文状态,如果当前bd不可用,进入当前bd不可用状态,并转入读当前bd状态;在提取以太网报文状态,判断是否在第五次数阈值内读取到以太网报文,如果是,进入更新bd状态,如果否,进入pci总线被占用,接收失败状态并转入空态;在更新bd状态,如果在第六次数阈值内更新bd成功,确定接收完成并进入空态,如果更新bd失败的次数超过第六次数阈值,则进入pc总线被占用,接收失败状态并转入空态。实施例四本发明实施例四提供一种数据发送方法,应用于主机,具体应用于主机向外围设备发送以太网报文的过程,如图12所示,包括:步骤1201,从第二bd链中读取一个对所述主机可用的第二bd,其中,所述第二bd链位于所述主机内存中且应用于所述主机向所述外围设备发送以太网报文的过程中,所述第二bd对所述外围设备不可用。具体的,主机从第二bd链中读取对主机可用的第二bd,该第二bd为对主机可用且对外围设备不可用的bd。需要说明的是,本发明实施例中提及的对外围设备可用的bd默认对主机不可用,即对外围设备可用且对主机不可用;对主机可用的bd默认对外围设备不可用,即对外围设备不可用且对主机可用,其中,第二bd链中对主机可用的bd表示主机将以太网报文写入该可用bd对应的缓存中。步骤1202,将以太网报文写入所述第二bd对应的缓存中,并对所述第二bd进行更新使所述第二bd对所述外围设备可用且对所述主机不可用。具体实施时,根据第二bd中的物理缓存地址,将以太网报文写入第二bd的物理缓存地址对应的缓存。同时,将第二bd中用于表示该bd是否可用的字段更新为对主机不可用且对外围设备可用,以便外围设备再次使用该bd。优选地,对所述第二bd进行更新使所述第二bd中的报文长度为写入所述第二bd对应的缓存中的以太网报文的长度。具体实施时,将第二bd中用于表示以太网报文长度的字段内容更新为写入第二bd对应的缓存中的以太网报文的长度,从而保证第二bd中信息的完整性,以使外围设备能够准确的从该第二bd对应的缓存中提取以太网报文。需要说明的是,本发明实施例中的第二bd链与实施例三中的第二bd链为同一bd链,针对外围设备来说,第二bd链为用于接收主机发送的以太网报文的bd链,针对主机来说,第二bd链为用于向外围设备发送以太网报文的bd链,其中,第二bd链中对主机可用的bd表示主机将以太网报文写入该可用bd对应的缓存中。步骤1203,接收外围设备发送的接收完成中断通知,若轮询到的中断为接收完成中断,释放所述第二bd对应的缓存中内容。具体实施时,主机可按照先写入的中断先处理的原则,对中断缓存区内的中断进行轮询处理。需要说明的是,步骤1201和步骤1203执行的先后顺序没有限定,二者可以并行执行,也可以先执行步骤1203再执行步骤1201。其中,接收到所述主机的外围设备发送的中断处理通知时,对写入所述主机的中断缓存区的中断进行轮询处理。关于主机对写入所述主机的中断缓存区的中断进行轮询处理的实施方式,与图7对应实施例描述的方法相同,请参见图7对应实施例的描述,在此不再赘述。本发明实施例,主机根据第二bd链中的第二bd,将预发送给外围设备的以太网报文写入第二bd对应的缓存中,并将第二bd更新为对外围设备可用,以使外围设备接收主机发送的以太网报文,此外,主机还对外围设备生成的中断进行轮询处理。需要说明的是,上述各实施例中涉及的中断缓存区为同一中断缓存区。需要说明的是,上述各实施例中涉及的bd的格式可如表一所示,其中,单个bd共占四个双字,一个双字包括32个比特。表一具体实施时,每个bd对应一个包含128个比特位的二进制字符串,不同的比特位可用于标识不同的含义,表一中“--”表示外围设备不可进行任何操作,“ro”表示外围设备只可进行读操作,“rw”表示外围设备可进行读或写操作。“未用”和“保留”表示在本发明实施例中,该比特位未被使用。本发明实施例中,第一bd链中的bd和第二bd链中的bd的格式相同,只不过第一bd链中的bd和第二bd链中的bd中不同的比特位的含义可能有所不同。其中,当bd为第一bd链中的bd时,若bd的可用标志位为0,则表明该bd对外围设备不可用且对主机可用,若该bd的可用标志位为1,则表明该bd对外围设备可用且对主机不可用;当bd为第二bd链中的bd时,若该bd的可用标志位为0,则表明该bd对外围设备不可用且对主机可用,若该bd的可用标志位为1,则表明该bd对外围设备可用且对主机不可用。具体实施时,将第一bd链中特定bd(比如第一bd链中起始物理基地址最大的一个bd或者编号最大的一个bd)中第0个双字的第25个比特位置为1,以表示该bd为第一bd链中最后一个bd,当读取到的bd中用于表示该bd是否为第一bd链中最后一个bd的比特位置高,则从第一bd链的第一个bd(比如第一bd链中起始物理基地址最小的一个bd或者编号最小的一个bd)开始读取bd,第一bd链中非特定bd的第0个双字的第25个比特位置为0,以表示该bd不是第一bd链中最后一个bd;类似地,将第二bd链中特定bd(比如第二bd链中起始物理基地址最大的一个bd或者编号最大的一个bd)中第0个双字的第25个比特位置为1,以表示该bd为第二bd链中最后一个bd,当读取到的bd中用于表示该bd是否为第二bd链中最后一个bd的比特位置高,则从第二bd链的第一个bd(比如第一bd链中起始物理基地址最小的一个bd或者编号最小的一个bd)开始读取bd,第二bd链中非特定bd的第0个双字的第25个比特位置为0,以表示该bd不是第二bd链中最后一个bd。基于表一提供的bd的格式,主机预先将第一bd链中各个bd的中断使能标志位置高,以使外围设备生成的中断可以被触发,以及,将第二bd链中各个bd的中断使能标志位置高,以使外围设备生成的中断可以被触发。下面举例说明本发明实施例利用表一提供的bd格式,对bd进行bd更新:举例说明外围设备向主机发送以太网报文的过程中,外围设备对bd进行更新的方式:如图13所示,假设外围设备在向主机发送以太网报文的过程中读取到的第一bd链中的第一bd为图13中主机侧所示的bd(该bd的可用标志位为1,用于标识对主机不可用且对外围设备可用),外围设备将报文写入该bd的第二个双字对应的物理缓存中,并将该bd的第一个双字的可用标志位更新为0,用于表示该bd对外围设备不可用且对主机可用,同时,将以太网报文的长度更新至该bd的第一个双字中,即在比特0-比特10填写以太网报文的长度,如图13中,以太网报文的长度为[10:0]=0001001100;举例说明,主机在接收外围设备发送的以太网报文的过程中,主机对bd进行更新的方式:若主机获取到的第一bd链的第一bd为图13中外围设备侧的bd,则主机根据该bd中记录的以太网报文长度,从该bd的第二双字对应的物理缓存中提取以太网报文,并将该bd的可用标志位更新为1,用于表示该bd对主机不可用且对外围设备可用,其中,主机可将该bd中的以太网报文长度对应的比特为均置为0,主机更新后的bd如图13中主机对应的bd,其中,主机也可不对该以太网报文长度对应的比特位进行更新,待外围设备再次读取到该bd时,由外围设备将以太网报文对应的比特位更新为新写入的以太网报文的长度。举例说明外围设备接收主机发送的以太网报文的过程中,外围设备对bd进行更新的方式:如图14所示,假设外围设备在接收主机发送的以太网报文的过程中读取到的第二bd链中的第二bd为图14中主机侧所示的bd(该bd的可用标志位为1,用于标识对主机不可用且对外围设备可用,第一个双字中比特0-比特10对应的二进制串为该bd对应的物理缓存中保存的报文的长度),外围设备根据该bd中记录的以太网报文的长度,从该bd的第二个双字中记录的该bd对应的物理缓存中提取以太网报文,并将该bd的第一个双字的可用标志位更新为0,用于表示该bd对外围设备不可用且对主机可用,更新后的bd如图14的外围设备侧对应的bd;举例说明,主机在接收外围设备发送的以太网报文的过程中,主机对bd进行更新的方式:若主机获取到的第二bd链的第二bd为图14中外围设备侧对应的bd,则主机将以太网报文写入该bd的第二个双字中记录物理缓存中,并将以太网报文长度更新至该bd的第一个双字中,即在比特0-比特10填写以太网报文的长度,如图14中,以太网报文的长度为[10:0]=0001111100,以及将该bd的可用标志位更新为1,用于表示该bd对主机不可用且对外围设备可用。本发明实施例中,外围设备生成的中断以包括32个比特的二进制字符串的形式写入中断缓存区,该32位的二进制字符串中各个比特位默认为0,将不同比特位置高代表不同的中断,如表二所示,为不同比特位标识的不同中断。表二比特顺序位宽读写中断0bit[0]wo发送完成1bit[1]wo接收完成2bit[2]wo可用空间不足3bit[3]wobd不可用4bit[4]wopci总线被超时占用5bit[5]wo保留6bit[6]wo保留7bit[7]wo保留8bit[8]wo保留9bit[9]wo保留……wo保留31bit[31]wo保留具体实施时,表二中不同的比特位置高可用于标识不同的中断,其中,“ro”表示外围设备只可进行写操作,表二中保留的比特位的值默认为0,保留的比特位也可用于标识其它类型的中断,比如接收或发送校验错误中断,bd异步中断等以后可能出现的中断。基于表二提供的不同比特位标识的不同中断,举例说明本发明实施例中外围设备向中断缓存区写入中断,以及主机处理中断的过程,如图15所示,预先将中断缓存区划分为128个中断缓存,图15中每个中断缓存对应一个中断缓存标识,外围设备生成中断后,从中断缓存区内中断缓存标识最小的一个中断缓存开始,将中断写入标识为“int_info0”的中断缓存中,写入的中断为“32’h0000_0001”,即写入的中断为以太网报文发送完成中断,其中,外围设备每次将生成的中断写入上次使用的中断缓存的下一个中断,当外围设备写入中断所使用的中断缓存的标识为中断缓存区内最后一个中断时,则外围设备下次继续从中断缓存区的第一个中断缓存开始写入中断。外围设备写入中断后通知主机处理其写入的中断,主机对中断缓存区内的中断进行轮询处理,直到中断缓存区内的所有中断均被处理完成,主机每处理完成一个中断,将该中断所在的中断缓存区中的所有比特为置为0,如图15所示,主机处理完成以太网报文发送完成中断后,将标识为“int_info0”的中断缓存从“32’h0000_0001”修改为“32’h0000_0000”,从而达到释放中断缓存的目的。实施例五基于与实施例一同样的发明构思,本发明实施例五提供一种用于数据发送的外围设备,外围设备为主机的外围设备,如图16所示,包括:读取模块1601,用于从第一bd链中读取一个对外围设备可用的第一bd,其中,第一bd链位于主机内存中且应用于外围设备向主机发送以太网报文的过程中,第一bd对主机不可用;写入模块1602,用于将以太网报文写入第一bd对应的缓存中;更新模块1603,用于对第一bd进行更新使第一bd对主机可用且对外围设备不可用;生成模块1604,用于若第一bd更新完成,生成发送完成中断并写入位于主机的中断缓存区;通知模块1605,用于通知主机处理发送完成中断。可选地,外围设备,还包括判断模块1606,其中:读取模块具体用于,根据第一bd链中最近一个被读取的bd的索引,读取第一bd链中的当前bd,当前bd与最近一个被读取的bd相邻;判断模块,用于判断读取的当前bd是否对外围设备可用;生成模块还用于,在判断模块判断否的情况下,生成当前bd不可用中断并写入位于主机的中断缓存区;通知模块还用于,通知主机处理当前bd不可用中断;以及,通知读取模块继续执行根据第一bd链中最近一个被读取的bd的索引,读取第一bd链中的当前bd的步骤;读取模块还用于,在判断模块判断是的情况下,将读取的当前bd作为第一bd。可选地,外围设备中,更新模块还用于:对第一bd进行更新使第一bd中的报文长度为写入第一bd对应的缓存中的以太网报文的长度。可选地,外围设备中,生成模块还用于,若外围设备与主机之间的外设部件互连标准pci总线被超时占用,生成pci总线被占用中断并写入位于主机的中断缓存区;通知模块还用于,通知主机处理pci总线被占用中断。可选地,外围设备中,生成模块在将生成的任一中断写入位于主机的中断缓存区时,具体用于:确定中断缓存区内指定中断缓存的索引,其中,中断缓存区包括多个中断缓存,一个中断缓存用于缓存一个中断,指定中断缓存为中断缓存区内最近一个被写入中断的中断缓存;根据指定中断缓存的索引,确定位于指定中断缓存之后且与指定中断缓存相邻的当前中断缓存;将生成的任一中断写入当前中断缓存。实施例六基于与实施例二同样的发明构思,本发明实施例六还提供一种用于数据接收的主机,如图17所示,包括:处理模块1701,用于接收到主机的外围设备发送的中断处理通知时,对写入主机的中断缓存区的中断进行轮询处理。读取模块1702,用于若处理模块当前轮询到的中断为发送完成中断,从第一bd链中读取一个对主机可用的第一bd,其中,第一bd链位于主机内存中且应用于主机接收外围设备发送的以太网报文的过程中,第一bd对外围设备不可用。提取模块1703,用于从第一bd对应的缓存中提取以太网报文。更新模块1704,用于对第一bd进行更新使第一bd对主机不可用且对外围设备可用。可选地,主机中,处理模块,具体用于:接收到外围设备发送的中断处理通知时,关闭中断;对写入主机的中断缓存区的中断进行轮询处理;若中断缓存区内的所有中断处理完成,打开中断;其中,中断缓存区包括多个中断缓存,一个中断缓存用于缓存一个中断。可选地,主机中,处理模块用于采用如下方式确定中断缓存区内的所有中断处理完成:若外围设备写入中断所使用的中断缓存的索引与主机处理的中断所属的中断缓存的索引相同,确定中断缓存区内的所有中断处理完成。实施例七基于与实施例三同样的发明构思,本发明实施例七还提供一种用于数据接收的外围设备,外围设备为主机的外围设备,如图18所示,包括:读取模块1801,用于从第二bd链中读取一个对外围设备可用的第二bd,其中,第二bd链位于主机内存中且应用于外围设备接收主机发送的以太网报文的过程中,第二bd对主机不可用。写入模块1802,用于从第二bd对应的缓存中提取以太网报文,并将提取到的以太网报文写入用于存储主机发送的以太网报文的缓存空间。更新模块1803,用于对第二bd进行更新使第二bd对外围设备不可用且对主机可用。生成模块1804,用于若第二bd更新完成,生成接收完成中断并写入位于主机的中断缓存区。通知模块1805,用于通知主机处理接收完成中断。可选地,外围设备中,生成模块还用于,若用于存储主机发送的以太网报文的缓存空间的可用空间在预设时长内未出现大于预设空间阈值的情况,生成可用空间不足中断并写入位于主机的中断缓存区;通知模块还用于,通知主机处理可用空间不足中断。可选地,外围设备,还包括判断模块1806,其中:读取模块具体用于,根据第二bd链中最近一个被读取的bd的索引,读取第二bd链中的当前bd,当前bd与最近一个被读取的bd相邻。判断模块,用于判断当前bd是否对外围设备可用。生成模块还用于,在判断模块判断否的情况下,生成当前bd不可用中断并写入位于主机的中断缓存区。通知模块还用于,通知主机处理当前bd不可用中断;以及,通知第二读取模块继续执行根据第二bd链中最近一个被读取的bd的索引,读取第二bd链中的当前bd的步骤。读取模块还用于,在判断模块判断是的情况下,将读取的当前bd作为第二bd。可选地,外围设备中,生成模块还用于,若外围设备与主机之间的外设部件互连标准pci总线被超时占用,生成pci总线被占用中断并写入位于主机的中断缓存区;通知模块还用于,通知主机处理pci总线被占用中断。可选地,外围设备中,生成模块在将生成的任一中断写入位于主机的中断缓存区时,具体用于:确定中断缓存区内指定中断缓存的索引,其中,中断缓存区包括多个中断缓存,一个中断缓存用于缓存一个中断,指定中断缓存为中断缓存区内最近一个被写入中断的中断缓存。根据指定中断缓存的索引,确定位于指定中断缓存之后且与指定中断缓存相邻的当前中断缓存;将生成的任一中断写入当前中断缓存。实施例八基于与实施例四同样的发明构思,本发明实施例还提供一种用于数据发送的主机,如图19所示,包括:读取模块1901,用于从第二bd链中读取一个对主机可用的第二bd,其中,第二bd链位于主机内存中且应用于主机向外围设备发送以太网报文的过程中,第二bd对外围设备不可用。写入模块1902,用于将以太网报文写入第二bd对应的缓存中。更新模块1903,用于对第二bd进行更新使第二bd对外围设备可用且对主机不可用。处理模块1904,用于接收所述外围设备发送的接收完成中断通知,若轮询到的中断为接收完成中断,释放所述第二bd对应的缓存中内容,其中,接收到主机的外围设备发送的中断处理通知时,对写入主机的中断缓存区的中断进行轮询处理。可选地,主机中,更新模块还用于:对第二bd进行更新使第二bd中的报文长度为写入第二bd对应的缓存中的以太网报文的长度。可选地,主机中,处理模块,具体用于:接收到外围设备发送的中断处理通知时,如果主机正执行外围设备中断处理程序,等待被外围设备中断处理程序轮询;如果主机未执行外围设备中断处理程序,执行以下步骤:触发所述主机进入外围设备中断处理程序,并关闭中断;对写入主机的中断缓存区的中断进行轮询处理;若中断缓存区内的所有中断处理完成,退出外围设备中断处理程序,并打开中断;其中,中断缓存区包括多个中断缓存,一个中断缓存用于缓存一个中断。可选地,主机中,处理模块用于采用如下方式确定中断缓存区内的所有中断处理完成:若外围设备写入中断所使用的中断缓存的索引与主机处理的中断所属的中断缓存的索引相同,确定中断缓存区内的所有中断处理完成。利用本发明实施例提供的数据传输方法及设备,具有以下有益效果:外围设备可主动从主机中读取bd,避免了由主机为外围设备分配内存空间,从而能够在一定程度上提高以太网报文的传输速度、传输效率,尤其在以太网报文数量较大的场景下,本发明实施例的效果更加明显。本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1