CN102375790B - 共享总线传输***及方法 - Google Patents
共享总线传输***及方法 Download PDFInfo
- Publication number
- CN102375790B CN102375790B CN201010252455.4A CN201010252455A CN102375790B CN 102375790 B CN102375790 B CN 102375790B CN 201010252455 A CN201010252455 A CN 201010252455A CN 102375790 B CN102375790 B CN 102375790B
- Authority
- CN
- China
- Prior art keywords
- ring
- passage
- write
- main frame
- sharing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Information Transfer Systems (AREA)
Abstract
本发明公开了一种共享总线传输***及方法。本发明设置一个可被所有通道共用的共享缓冲区描述符(BD)环,主机可将任意通道的待发送数据的内存空间地址写入至共享BD中的BD,因而多通道硬件控制器突发读取共享BD环所能够读取到的有效BD的比例就会有所提高,从而能够提高共享总线的利用率;而且,本发明中还设置有可供多通道硬件控制器向主机反馈发送完成状态的回写BD环,以供主机回收内存资源,因而主机无需依靠共享BD环中每个BD的状态是否为可用来判断对应数据块是否完成发送,从而能够避免共享BD环阻塞。
Description
技术领域
本发明涉及数据总线的传输技术,特别涉及一种共享总线传输***、一种基于共享总线的主机、一种基于共享总线的多通道硬件控制器、一种基于共享总线的数据传输方法、以及一种共享总线数据传输中的发送调度管理方法和一种共享总线数据传输中的数据分发管理方法。
背景技术
周边器件互连(Peripheral component interconnect,PCI)等共享总线由于其易用性及可扩展性,因而在现有技术中被广泛使用。
共享总线虽然能够支持多个设备的共享,但在同一时刻只允许一个设备使用总线。具体说,每一个设备在使用总线与主机进行读写操作的数据传输之前,都要向仲裁器申请总线,只有获取到总线使用权后才能开始与主机之间用于数据传输的交易。
如图1所示,每个交易依次包括地址段、目标设备译码后申明交易、一个或多个数据段、以及传输结束期;包含一个数据段的读/写操作被称为单次读/写传输(single read/write transfer),例如PCI总线定义的存储器读(Memory Read,MR);包含多个数据段的读/写操作被称为突发读/写传输(burst read/write transfer),例如PCI总线定义的存储器行读(Memory ReadLine,MRL)、存储器多行读(Memory Read Multiple Line,MRM)都属于突发传输。
其中,读操作是指主机从设备接收数据、写操作是指主机向设备发送数据;在主机接收数据的方向上,由于每台设备的带宽有限,因而共享总线上不会出现突发性数据传输,此时就无需关注共享总线的利用率;而在主机发送数据的方向上,由于发送的数据不受限制,因而共享总线上易出现突发性数据传输,此时,就需要考虑如何提高共享总线的利用率。因此,本文对于主机接收数据的方向不再赘述、而主要针对主机发送数据方向上的数据传输进行说明。
实际应用中,每台设备与主机之间的交易均是通过该设备的硬件控制器来实现,即,每台设备的硬件控制器用于实现该设备的数据处理部分与主机之间的数据转发。对于仅具有一个通道(物理通道)的设备来说,其硬件控制器为单通道硬件控制器,而对于具有多个通道(物理通道或逻辑通道)的设备(例如CPOS业务卡的一个通道可拆分为83个T1或63个E1或3个E3/T3、每个E1/T1/E3/T3还可进一步拆分)来说,其硬件控制器为多通道硬件控制器。
对于单通道硬件控制器,如图2所示(图2中仅示出了竞争到总线使用权的一个设备的单通道硬件控制器、而并未示出未竞争到总线使用权的其他设备),主机的内存中可设置一个缓冲区描述符(Buffer Descriptor,BD)环,该BD环中包括若干BD(图中示为扇形块)、每个BD用于描述对应的数据特征、数据特征会包括主机需要交互的对应数据的内存空间地址,且单通道硬件控制器知晓该BD环所在的内存空间。
当主机需要向设备发送数据块、即写数据时,其驱动层中的发送管理模块在应用层软件(图2中未示出)的调用下,为待发送数据块分配内存空间,并将待发送数据块的内存空间地址写入至BD环中可用的空闲BD、同时将该BD的状态从可用的空闲修改为不可用的有效,此后,即可依据BD是否可用的状态,来识别单通道硬件控制器是否已完成该BD对应数据块的发送;
单通道硬件控制器驱动层中的数据读取模块从BD环中读取(可定时查询读取、或依据主机的通知读取)到BD后,可从读取的有效BD中解析得到待发送数据块在主机中的内存空间地址,然后,数据读取模块从解析到的内存空间地址读取对应的待发送数据块、并由数据转发模块向通道转发(可以先缓存、再转发),待转发完毕后再向主机中的发送管理模块产生回应、表示对应的数据块已完成发送,以使发送管理模块释放本次转发的数据块所占用的内存空间、并将对应BD的状态从不可用的有效修改回可用的空闲,即,每个BD只有在对应数据块完成发送后才可再次使用。
从而,只要单通道硬件控制器每次尽可能多地读取BD,即可使每次交易过程中的有效数据段数量越多,总线利用率自然也就越高。
对于多通道硬件控制器,如图3所示(图3中仅示出了竞争到总线使用权的一个设备的多通道硬件控制器、而并未示出未竞争到总线使用权的其他设备),主机(例如路由器)的内存中分别设置有对应每一通道i的缓冲区描述符(Buffer Descriptor,BD)环i,每个BD环i中包括若干BD、每个BD用于描述对应的数据特征、数据特征会包括主机需要交互的对应数据的内存空间地址,且多通道硬件控制器知晓各BD环1~n所在的内存空间;i为大于等于1且小于等于n的正整数、n为大于1的正整数;
当主机需要通过向设备的通道i发送数据块、即写数据时,其驱动层中对应通道i的发送管理模块i在应用层软件(图3中未示出)的调用下,为通道i的待发送数据块分配内存空间,并将通道i的待发送数据块的内存空间地址写入至BD环i中可用的空闲BD、同时将该BD的状态从可用的空闲修改为不可用的有效,并依据BD是否可用来识别多通道硬件控制器是否已完成该BD对应数据块的发送,从而实现多通道的发送调度管理;
多通道硬件控制器驱动层中的数据读取模块i负责对应通道i的数据分发管理,具体说,通道i所对应的数据读取模块i(每个通道的数据读取模块仅会读取主机中对应该通道的BD环)在从BD环i中读取(可定时查询读取、或依据主机的通知读取)到BD后,可从读取的有效BD中解析得到通道i的待发送数据块在主机内存中的内存空间地址,然后,数据读取模块i从解析到的内存空间地址读取通道i对应的待发送数据块、并由数据转发模块i向通道i转发(可以先缓存于通道i的缓冲区域、然后再转发),待转发完毕后再向主机中的发送管理模块i产生回应、表示对应的数据块已完成发送,以使发送管理模块i释放本次转发的数据块所占用的内存空间、并将BD环i中的该BD的状态从不可用的有效修改回可用的空闲,即,该BD只有在对应数据块完成发送后才可再次使用。
然而,由于主机每一时段内所要发送的数据并不一定集中在某一个通道、而多数情况下会分布在不同的多个通道,例如小包转发,每个BD环中只有少量BD为有效BD、而多数BD为空闲BD,此时,由于多通道硬件控制器每次只是读取一个BD环中的BD,因此,即便多通道硬件控制器每次尽可能多地从一个BD环中读取BD,通常也只能够读取到大量的空闲BD,从而使共享总线上仍只有少量有效数据传输、即无法提高共享总线的利用率。参见图4,对于每个BD环中只有一个BD为有效BD的极端情况,每次从BD环中突发读取越多的BD,读取到的有效BD与空闲BD的比例就会越小,共享总线的利用率就越低。
而且,如图3所示的现有方案中将每个通道i均看作是一个物理带宽相同的独立单通道接口,并为所有通道1~n分配BD数量相同的BD环。但由于各通道1~n实际所占用的物理带宽却并不一定相同,因而各通道1~n的数据发送速率不同,由此,就有可能会出现物理带宽高的某个通道的BD环中的BD数量由于突发流量大不足以满足需要、而物理带宽低的某个通道的BD环中的BD由于该通道流量小多为空闲BD。
此外,当通道数量较多时,例如多于512个通道,则由于内存资源的约束,每个通道的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环中是否存在空闲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为现有技术中基于单通道硬件控制器的共享总线传输***示意图;
图3为现有技术中基于多通道硬件控制器的共享总线传输***示意图;
图4为现有技术中多通道硬件控制器读取BD环的一实例示意图;
图5为共享BD环阻塞的一实例示意图;
图6a为本发明中主机维护共享BD环的示意图;
图6b为本发明中多通道硬件控制器维护共享BD环的示意图;
图6c为本发明中共享BD环维护的一实例示意图;
图6d为本发明中共享BD环维护的另一实例示意图;
图7为本发明中基于多通道硬件控制器的共享总线传输***示意图;
图8a为本发明共享总线传输***中的主机侧初始化过程示意图;
图8b为本发明共享总线传输***中的主机侧调度数据过程示意图;
图8c为本发明共享总线传输***中的主机侧回收资源过程示意图;
图9a为本发明共享总线传输***中的多通道硬件控制器侧分发数据过程示意图;
图9b为本发明共享总线传输***中的多通道硬件控制器侧BD回写过程示意图;
图10为本发明中基于共享总线的数据传输方法的示例性流程图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
本实施例在主机的内存中设置一个可被所有通道共用的共享BD环、而非按照现有技术中如图3所示的方式为每个通道分别对应设置一个独立的BD环,即,共享BD环对应所有通道、而非仅对应一个通道。
相应地,主机在每个通道有数据块需要发送、并为该通道的待发送数据块分配内存空间(如何分配内存空间可按照现有任意方式来实现)后,均可依据其写指针(可称之为“主机写指针”)将该通道待发送数据的内存空间地址写入至共享BD中的BD,因而多通道硬件控制器依据其读指针(可称之为“控制器读指针”)突发读取共享BD环时,所能够读取到的有效BD的比例会明显高于仅突发读取对应一个通道的独立BD环,从而多通道硬件控制器依据有效BD中解析得到的内存空间地址所读取的有效数据量也会增多,进而也就提高了共享总线的利用率。
由于共享BD环对应所有的通道,因而当某个通道出现故障而无法完成数据块的发送时,共享BD环中的对应BD会由于持续为有效状态而不可用,从而会造成共享BD环阻塞。例如,主机将通道i的待发送数据块的内存空间地址写入至共享BD环中可用的空闲BD、并将该BD的状态从可用的空闲修改为不可用的有效之后,会依据该BD的状态是否恢复为可用,来识别多通道硬件控制器是否已完成该BD对应的通道i的数据块发送;只有在多通道硬件控制器转发完毕并产生表示对应数据块已完成发送的回应后,主机才会释放本次转发的数据块所占用的内存空间、并将共享BD环中该BD的状态从不可用的有效修改回可用的空闲,即,该BD只有在对应数据块完成发送后才可再次使用。那么,如果多通道硬件控制器无法完成通道i的数据块转发,则该BD的状态会一直持续保持不可用,从而使得主机对共享BD环的写指针无法移位至该BD、即该写指针只能停止在该BD之前的可用BD处,进而使得主机无法针对其他通道对共享BD环执行写操作。
具体参见图5,主机依据其维护的可循环移位的主机写指针实现对共享BD环中各BD的写操作,当某个通道出现故障而无法完成数据块的发送时,共享BD环中的对应BD会由于持续为有效状态而不可用,此时,即便该BD之后的其他BD为可用的空闲BD,共享BD环的写指针也只能停留在该BD之前的一个BD处而无法继续循环移位,即,该BD成为了BD环中的空洞、并导致BD环阻塞,从而导致主机无法继续对所有通道所共用的共享BD环进行写操作,进而使所有通道的待发送数据块均无法继续发送。
为了避免共享BD环阻塞,在本实施例中,主机并不是如现有技术那样依靠共享BD环中每个BD的状态是否为可用来判断对应数据块是否完成发送、也无须在任意BD所对应的数据块完成发送之前保持该BD为不可用的有效状态,而是依据主机自身维护的对共享BD环的写指针位置、以及多通道硬件控制器对共享BD环的读指针位置,来维护共享BD环中当前可用的空闲BD数量,只要所维护的空闲BD总数大于0、即共享BD环中有空闲BD,主机即可循环地向共享BD环中的BD继续写入任意通道待发送数据的内存空间地址。
需要说明的是,本实施例所述的空闲BD总数主要用来表示整个共享BD环使用状况、属于广义上的空闲,区别于现有技术中仅表示某个BD的对应数据块已完成发送的空闲。
具体参见图6a,主机依据其维护的可循环移位的主机写指针实现对共享BD环中各BD的写操作,每写一个BD即将主机写指针移位至下一个BD、而无需关注下一个BD对应的数据块是否已完成发送;为了获知多通道硬件控制器针对共享BD环的控制器读指针位置,主机侧也需要利用如图6b所示的多通道硬件控制器针对共享BD环的控制器读指针位置,更新主机侧维护的针对共享BD环的控制器读指针位置,以使主机维护的针对共享BD环的控制器读指针位置与多通道硬件控制器侧维护的针对共享BD环的控制器读指针位置相同。
其中,由于共享BD环一定是先写、再读,因而图6a中主机维护的针对共享BD环的主机写指针位置,一定不落后主机维护的针对共享BD环的控制器读指针位置、且已超越该读指针多半圈,那么,共享BD环中,在主机维护的针对共享BD环的主机写指针移位方向上,主机维护的针对共享BD环的主机写指针与主机维护的针对共享BD环的控制器读指针之间的BD,就表示已被多通道硬件控制器读取、但尚未被主机再次写入的BD;相应地,主机可依据其维护的针对共享BD环的主机写指针相比于其维护的针对共享BD环的控制器读指针,在该写指针移位方向上相距的BD数量,判断出共享BD环中当前的空闲BD总数;而且,由于主机在其维护的空闲BD数为0时即不会再对共享BD环执行写操作,因而主机维护的针对共享BD环的主机写指针,不会整圈超越主机维护的针对共享BD环的控制器读指针。
这样,即便某个通道出现故障而无法完成数据块的发送,只要图6a中主机维护的针对共享BD环的主机写指针未整圈超越主机维护的针对共享BD环的控制器读指针,主机就能够向共享BD环中的BD继续写入任意通道待发送数据的内存空间地址;而且,由于主机维护的针对共享BD环的控制器读指针所经过的BD已被多通道硬件控制器读取,因而主机在向共享BD环中的BD继续写入任意通道待发送数据的内存空间地址时,无需关注所写的BD对应的数据块是否已完成发送,从而能够避免共享BD环的阻塞。
参见图6b,多通道硬件控制器会自身维护一个可循环移位的控制器读指针,并依此实现对共享BD环的读操作,当突发读取共享BD环后即将自身维护的该控制器读指针偏移所读取的BD数量。
其中,由于共享BD环一定是先写、再读,因而图6b中多通道硬件控制器维护的针对共享BD环的控制器读指针位置,通常会落后于主机维护的针对共享BD环的主机写指针位置,那么,在共享BD环中,多通道硬件控制器维护的针对共享BD环的控制器读指针落后于主机维护的针对共享BD环的主机写指针的BD、即多通道硬件控制器维护的针对共享BD环的控制器读指针在其移位方向上落后于主机维护的针对共享BD环的主机写指针之间的BD,就表示已被主机写入、但尚未被多通道硬件控制器读取的BD,相应地,多通道硬件控制器在突发读取时,是以多通道硬件控制器维护的针对共享BD环的控制器读指针当前位置为起点、以主机维护的针对共享BD环的主机写指针当前位置为终点。
如此一来,再参见图6c、并结合图6a和图6b,多通道硬件控制器维护的针对共享BD环的控制器读指针跟随主机维护的针对共享BD环的主机写指针,主机维护的针对共享BD环的控制器读指针又跟随多通道硬件控制器维护的针对共享BD环的控制器读指针,从而,在多通道硬件控制器读取共享BD环中所有已写的BD、且主机已依据多通道硬件控制器对共享BD环的读指针位置完成对其自身的读指针位置更新后,共享BD环中的全部BD均为可用的空闲BD。
但参见图6d、并结合图6a和图6b,由于主机并不一定实时更新其维护的针对共享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总数,即,当所有通道的发送信度均为0时,共享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为本发明中基于多通道硬件控制器的共享总线传输***示意图。如图7所示,本实施例中的共享总线传输***包括主机、以及通过共享总线连接主机的若干多通道硬件控制器(图7中仅示出了竞争到总线使用权的一个设备的多通道硬件控制器、而并未示出未竞争到总线使用权的其他设备及多通道硬件控制器)。
在图7中,主机包括多通道发送管理模块和内存。
内存中存放各通道的待发送数据块、以及一共享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环。
在图7中,多通道硬件控制器包括一个多通道数据分发模块、以及分别对应每个通道的数据转发模块;
多通道数据分发模块为多通道硬件控制器侧维护前述针对共享BD环的控制器读、以及针对回写BD环的控制器写指针;
且,多通道数据分发模块从为多通道硬件控制器侧维护的针对共享BD环的控制器读指针当前位置开始、直至主机侧维护的针对共享BD环的主机写指针当前位置(可直接从主机侧读取),突发读取(可以一次或多次突发读取)主机内存中的共享BD环的若干BD,并更新其为多通道硬件控制器侧维护的针对共享BD环的控制器读指针当前位置;依据从所读取的BD中解析得到的内存空间地址,从主机内存突发读取各通道的待发送数据块、并向对应通道发送。
多通道数据分发模块还在各通道完成发送后,依据其为多通道硬件控制器侧维护的针对回写BD环的控制器写指针当前位置,顺序向回写BD环的BD中写入表示对应通道的对应数据块已完成发送的回写信息、并更新其为多通道硬件控制器侧维护的该控制器写指针当前位置,即每完成一个通道的一个数据块的发送,即向回写BD环中的一个BD写入该通道的该数据块已完成发送的一个回写信息,以供主机回收对应的内存资源、并回收该通道的发送信度。
可选地,多通道硬件控制器中的多通道数据分发模块可在反馈回写信息后向主机中的多通道发送管理模块上报中断、通知主机中的多通道发送管理模块读取回写BD环;当然,或者,主机中的多通道发送管理模块也可以周期性地主动读取回写BD环。
另需要说明的是,由于各通道的发送速率不同,因而各通道完成一个数据块发送的时间也就不同,那么,回写信息的顺序与从共享BD环中读取BD的顺序不一定相同。
以下针对最优实现方式,分别对主机侧和多通道控制器侧的处理过程进行详细说明。
图8a为本发明共享总线传输***中的主机侧初始化过程示意图。如图8a所示,主机设置共享BD环和回写BD环、以及为各通道分配发送信度和缓存队列的初始化过程,可以由主机的多通道发送管理模块执行如下的具体流程:
S801,依据物理带宽参数确定共享BD环的长度和回写BD环的长度。
例如,本步骤中可以依据各通道的物理带宽之和、多通道硬件控制器与主机之间的接口物理带宽、以及多通道硬件控制器可配置的最小物理带宽,确定共享BD环的长度和回写BD环的长度。
当然,本领域技术人员可根据需要选用任意的物理带宽参数、和/或任意的计算方式确定,本文不再一一列举。
S802,依据所确定的长度,在内存中初始化得到共享BD环和回写BD环。
S803,依据各通道的物理带宽初始化得到各通道的发送信度和缓存队列。
S804,初始化多通道硬件控制器,以将共享BD环和回写BD环在内存中的地址配置于多通道硬件控制器。
至此,初始化的过程结束。
图8b为本发明共享总线传输***中的主机侧调度数据过程示意图。如图8b所示,主机调度多通道数据的过程,可以由主机的多通道发送管理模块分别针对每一通道执行如下的发送调度流程(该流程可以由上层应用层触发):
S821,判断当前通道是否有数据要发送,如果是,则跳转至S822,否则返回S821继续等待。
S822,获取当前通道的发送信度,然后跳转至S823。
S823,判断当前通道的发送信度是否足够,如果是,则跳转至S824,否则跳转至S827。
S824,判断共享BD环中是否有空闲BD,如果是,则跳转至S825,否则跳转至S827。
S825,为当前通道的待发送数据块分配内存空间,并向共享BD环中的BD写入当前通道待发送数据块的内存空间地址、更新共享BD环的写指针位置,然后跳转至S826。
S826,按照写入BD的数量减少当前通道的发送信度、并更新主机侧维护的针对共享BD环的主机写指针当前位置,本步骤之后即表示发送成功、然后即可结束本流程。
S827,判断当前通道的缓存队列中的剩余空间是否足以缓存待发送数据块,如果是,则跳转至S828,否则,表示发送失败、并结束本流程。
S828,将当前通道的待发送数据块缓存至对应的缓存队列中,然后结束本流程。
至此,针对每一通道执行的发送调度流程结束。
图8c为本发明共享总线传输***中的主机侧回收资源过程示意图。如图8c所示,主机实现多通道管理的过程,可以由主机的多通道发送管理模块执行如下的维护管理流程(该流程可以由多通道硬件控制器上报的中断触发、或由主机的多通道发送管理模块主动触发):
S841,读取回写BD环中当前读位置的BD,然后跳转至S842。
S842,判断当前读位置的BD中是否有回写信息,如果是,则跳转至S843,否则,跳转至S846。
S843,解析回写信息、获取完成数据块发送的对应通道,然后跳转至S844。
S844,回收回写信息所对应数据块的内存空间、以及对应通道的发送信度,然后跳转至S845。
S845,判断对应通道的缓存队列中是否有待发送数据块,如果是,则跳转至图8b中的S824,针对对应通道的缓存队列中的待发送数据块继续执行图8b中的后续流程;否则,将回写BD环的读指针移位、并返回S841继续对回写BD环中下一个读位置的BD读取。
需要说明的是,在缓存队列中存放待发送数据块,是由于对应通道的发送信度不足、或共享BD环无空闲BD的原因造成的,那么,如果是对应通道的发送信度不足的原因,则已通过在S844回收信度予以克服,因而无需跳转至图8b中的S823再次进行判断;如果是共享BD环无空闲BD的原因,则虽然也在S844更新了空闲BD数量,但共享BD环是由多个通道竞争,因而在S844更新了空闲BD数量之后,更新的空闲BD仍有可能被其他通道占用,因而仍需跳转至图8b中的S824进行判断。
当然,由于每个通道的发送信度的一个单位值对应共享BD环中的一个BD,因此,如果所有通道的发送信度的单位值的总和应当等于共享BD环中的BD总数,即,当所有通道的发送信度均为0时,共享BD环中的所有BD恰好均被使用,则能够从理论上基本避免某个通道仍有足够的发送信度、但共享BD环中不存在空闲BD的情况,从而在判断发送信度足够时可无需再判断是否有空闲BD,进而减少不必要的判断过程,即直接跳转至图8b中的S825;
然而,在实际应用中,会存在如前主机侧更新延迟的问题,即,主机侧维护的针对共享BD环的控制器读指针,暂时落后于多通道硬件控制器侧维护的针对共享BD环的控制器读指针,从而造成发送信度剩余的单位值总和暂时大于共享BD环中可用的BD总数。
因此,在具体实现时,最好在判断发送信度是否足够后、仍再判断共享BD环中是否存在空闲BD,即,无论所有通道的发送信度的单位值总和与共享BD环中BD总数的关系如何,较佳地,在判断出对应通道的缓存队列中有待发送数据块之后,还是跳转至图8b中的S824进行判断;或者,也可以在内存足够的情况下,可以设置共享BD环中的BD总数大于所有通道的发送信度的单位值的总和,以弥补上述延迟问题出现时所导致的空闲BD不足,但会较大程度地浪费内存资源。
而且,在具体工程实现时,也有可能存在其他问题,因此,为了确保方案的完整性和严谨性,在判断出对应通道的缓存队列中有待发送数据块之后,仍应当跳转至图8b中的S824进行判断;同理,在执行如图8b所示流程时,也应现在S823判断出发送信度足够时、再通过S824判断是否存在空闲BD。
S846,依据本流程已在S845对回写BD环读指针所移位的位数,更新主机侧维护的针对回写BD环的主机读指针当前位置,并读取多通道硬件控制器侧维护的针对共享BD环的控制器读指针当前位置,以更新主机侧维护的针对共享BD环的控制器读指针当前位置,然后结束本流程。
也就是说,本流程中并不是每次对回写BD环读指针移位后,均执行对维护信息的更新,而是在回写BD环中已没有BD可读取时再更新维护信息,从而简化操作。而且,主机侧维护信息中所记录的共享BD环读指针的当前位置也不需要实时更新。
至此,维护管理流程。
图9a为本发明共享总线传输***中的多通道硬件控制器侧分发数据过程示意图。如图9a所示,多通道硬件控制器实现多通道数据的分发过程,可以由多通道数据分发模块周期性地执行如下流程:
S901,判断主机内存中的共享BD环是否有BD需要读取,如果是,则跳转至S902,否则跳转至S905。
S902,突发读取主机内存中的共享BD环、并移位共享BD环的读指针,然后跳转至S903。
S903,解析读取到的BD,得到各通道待发送数据块在主机内存中的内存空间地址,然后跳转至S904。
S904,依据解析得到的内存空间地址,从主机内存中读取各通道的待发送数据块、并利用对应的数据转发模块向对应通道发送,然后返回S901再次判断共享BD环是否有BD需要读取。
S905,依据本流程已在S902对共享BD环读指针所移位的位数,更新多通道硬件控制器侧维护的针对共享BD环的控制器读指针当前位置,然后结束本流程。
也就是说,本流程中并不是每次对共享BD环读指针移位后,均执行对维护信息的更新,而是在共享BD环中已没有BD可读取时再更新维护信息,从而简化操作。
至此,多通道硬件控制器的多通道数据分发流程结束。
图9b为本发明共享总线传输***中的多通道硬件控制器侧BD回写过程示意图。如图9b所示,多通道硬件控制器实现回写BD过程,可以由多通道数据分发模块执行如下流程:
S921,判断是否有通道已完成数据块发送,如果是,则跳转至S922,否则,跳转至S923。
S922,生成对应的回写信息写入至主机内存中的回写BD环的写指针位置、并将回写BD环写指针移位,然后返回S921继续判断是否有通道已完成数据块发送。
S923,依据本流程已在S922对回写BD环写指针所移位的位数,更新多通道硬件控制器侧维护的针对回写BD环的控制器写指针的当前位置,然后结束本流程。
也就是说,本流程中并不是每次对回写BD环写指针移位后,均执行对维护信息的更新,而是在已没有要写入回写BD环的回写信息时再更新维护信息,从而简化操作。
至此,多通道硬件控制器的回写BD流程结束。
以上,是对本实施例中共享总线传输***及其主机和多通道硬件控制器的详细说明。下面,再对本实施例中基于共享总线的数据传输方法、以及共享总线数据传输中的发送调度管理方法和共享总线数据传输中的数据分发管理方法进行说明。
图10为本发明中基于共享总线的数据传输方法的示例性流程图。如图10所示,本实施例中基于共享总线的数据传输方法包括:
步骤1001,主机在共享BD环中存在所述的空闲BD时,为各通道的待发送数据块分配内存空间、从当前写位置(即,针主机侧维护的针对共享BD环的主机写指针当前位置)开始向共享BD环写入各通道待发送数据块的内存空间地址、以及更新主机对共享BD环的当前写位置。
在本步骤之前,主机可以依据其对共享BD环的当前写位置、以及多通道硬件控制器对共享BD环的当前读位置,判断共享BD环中是否存在已被多通道硬件控制器读取、但尚未被再次写入的空闲BD,即,如图6a所示出的主机侧维护的针对共享BD环的主机写指针当前位置与主机侧维护的针对共享BD环的控制器读指针当前位置,在该主机写指针移位方向上相距的BD。
实际应用中,在共享BD环中没有空闲BD(例如某个通道出现突发流量等情况)时,则不会执行本流程、并可以选择丢弃待发送数据块,但显然,丢弃待发送数据块会造成数据丢失,因此,较佳地,还可以进一步依据各通道实际占用的物理带宽、或能够决定通道发送速率的其他参数为各通道分别分配对应的缓存队列,并在共享BD环中没有空闲BD时将待发送数据块缓存至对应通道的缓存队列中,以待后续共享BD环中出现空闲BD时再分配内存空间、并将分配的内存空间地址写入共享BD环,最优地,待后续共享BD环中出现空闲BD时,每个通道的缓存队列中的待发送数据块,应优先于该通道未缓存的待发送数据块。
步骤1002,多通道硬件控制器从其对共享BD环的当前读位置(即多通道硬件控制器侧维护的针对共享BD环的控制器读指针当前位置)开始突发读取共享BD环、直至主机对共享BD环的当前写位置,并更新其对共享BD环的当前读位置。
步骤1003,多通道硬件控制器依据所读取的BD中的内存空间地址从主机内存突发读取各通道待发送数据块、并向对应通道发送。
步骤1004,多通道硬件控制器在各通道完成发送后顺序向回写BD环写入表示已完成发送的回写信息。
步骤1005,主机读取回写BD环,回收所读取到的回写信息对应的内存资源。
至此,上述流程结束。
除了上述流程中的步骤之外,本实施例中基于共享总线的数据传输方法可以进一步依据各通道实际占用的物理带宽、或能够决定通道发送速率的其他参数为各通道分别分配对应的发送信度,物理带宽越大的通道、其分配的发送信度的单位值上限越大,用于确保各通道所能够分配到的BD数量与该通道实际占用的物理带宽成正比,进而避免物理带宽高的某个通道的BD数量由于该通道数据流量大而不足以满足需要、而物理带宽低的某个通道的BD数量由于该通道流量小而过剩。
具体说,在有通道需要发送数据块时,先由主机判断该通道的发送信度是否足够,如果该通道当前的发送信度足够,则判断共享BD环中是否有空闲BD,待判断共享BD环中存在空闲BD时,再开始执行如图10所示的流程、并将该通道的发送信度减少一个单位值;否则,将该通道的待发送数据块缓存至该通道对应的缓存队列中,以待该通道的发送信度回收后、再判断共享BD环中是否有空闲BD;
而每当由主机从回写BD环中读取到任意通道的一个回写信息后,除了回收该通道已完成发送的数据块所对应的内存资源之外,还应该回收该通道发送信度的一个单位值,以避免该通道的发送信度被耗尽后导致该通道无法继续发送数据块。
此外,本实施例中基于共享总线的数据传输方法中,由主机执行的步骤可以构成本实施例中共享总线数据传输中的发送调度管理方法(最优的具体实现方式可参照如图8b和8c所示的流程)、由多通道硬件控制器执行的步骤则可构成本实施例中共享总线数据传输中的数据分发管理方法(最优的具体实现方式可参照如图9a和9b所示的流程)。
除了本实施例中已列举出的效果之外,由于对主机来说,其仅知晓多通道硬件控制器与其接口的存在、而并不知晓多通道控制器下的多个通道,因而采用任意类型的通道均不会影响主机,从而,本实施例还能够适用于数据特征完全相同的多个物理通道、数据特征不全相同的多个物理通道、以及多个逻辑通道。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换以及改进等,均应包含在本发明的保护范围之内。
Claims (14)
1.一种共享总线传输***,其特征在于,包括主机、以及通过共享总线连接主机的多通道硬件控制器,其中,
主机的内存中设置有一对应所有通道的共享BD环、以及一回写BD环;
主机依据其对共享BD环的当前写位置、以及主机自身维护的多通道硬件控制器对共享BD环的当前读位置,判断共享BD环中是否存在已被多通道硬件控制器读取、但尚未被再次写入的空闲BD;在共享BD环中存在所述的空闲BD时,为各通道的待发送数据块分配内存空间、从当前写位置开始向共享BD环写入各通道待发送数据块的内存空间地址、以及更新主机对共享BD环的当前写位置;
多通道硬件控制器从其对共享BD环的当前读位置开始突发读取共享BD环、直至主机对共享BD环的当前写位置,并更新多通道硬件控制器自身维护的对共享BD环的当前读位置;依据所读取的BD中的内存空间地址从主机内存突发读取各通道待发送数据块、并向对应通道发送;以及,在各通道完成发送后顺序向回写BD环写入表示已完成发送的回写信息,以供主机回收对应的内存资源、并更新主机自身维护的多通道硬件控制器对共享BD环的当前读位置。
2.如权利要求1所述的共享总线传输***,其特征在于,主机进一步依据各通道实际占用的物理带宽为各通道分别分配对应的发送信度;
对于任意通道,主机进一步在判断出任意通道的发送信用度足够时,才针对该通道判断共享BD环中是否存在空闲BD,并进一步在判断出共享BD环中存在空闲BD之后减少该通道的发送信度,以及,进一步在从回写BD环中读取到该通道对应的回写信息后回收该通道的发送信度。
3.如权利要求2所述的共享总线传输***,其特征在于,主机进一步依据各通道实际占用的物理带宽为各通道分别分配对应的缓存队列;
每个通道的缓存队列用于在该通道的发送信度不足、或共享BD环中没有空闲BD时,缓存该通道的待发送数据块。
4.一种基于共享总线的主机,其通过共享总线连接有多通道硬件控制器,其特征在于,该主机包括多通道发送管理模块和内存,其中,
内存中存放各通道的待发送数据块、以及一共享BD环和一回写BD环;
多通道发送管理模块依据其对共享BD环的当前写位置、以及其自身为主机维护的多通道硬件控制器对共享BD环的当前读位置,判断共享BD环中是否存在已被多通道硬件控制器读取、但尚未被再次写入的空闲BD;在共享BD环中存在所述的空闲BD时,为各通道的待发送数据块分配内存空间、从当前写位置开始向共享BD环写入各通道待发送数据块的内存空间地址、以及更新主机对共享BD环的写位置,以供多通道硬件控制器突发读取共享BD环后,依据所读取的BD中的内存空间地址从主机内存突发读取各通道待发送数据块、并向对应通道发送;
多通道发送管理模块还从回写BD环的BD中读取多通道硬件控制器写入的表示任意通道的待发送数据块已完成发送的回写信息,回收回写信息对应的内存资源、并更新其自身为主机维护的多通道硬件控制器对共享BD环的当前读位置。
5.如权利要求4所述的主机,其特征在于,多通道发送管理模块进一步依据各通道实际占用的物理带宽为各通道分别分配对应的发送信度;
对于任意通道,多通道发送管理模块进一步在判断出任意通道的发送信用度足够时,才针对该通道判断共享BD环中是否存在空闲BD,并进一步在判断出共享BD环中存在空闲BD之后减少该通道的发送信度,以及,进一步在从回写BD环中读取到该通道对应的回写信息后回收该通道的发送信度。
6.如权利要求5所述的主机,其特征在于,多通道发送管理模块进一步依据各通道实际占用的物理带宽为各通道分别分配对应的缓存队列;
每个通道的缓存队列用于在该通道的发送信度不足、或共享BD环中没有空闲BD时,缓存该通道的待发送数据块。
7.一种基于共享总线的多通道硬件控制器,其通过共享总线连接主机,其特征在于,该多通道硬件控制器包括一个多通道数据分发模块、以及分别对应每个通道的数据转发模块,其中,
多通道数据分发模块从其对共享BD环的当前读位置开始突发读取共享BD环、直至主机对共享BD环的当前写位置,并更新其自身为多通道硬件控制器维护的对共享BD环的当前读位置;依据所读取的BD中的内存空间地址从主机内存突发读取各通道待发送数据块、并向对应通道发送;
多通道数据分发模块还在各通道完成发送后顺序向回写BD环写入表示已完成发送的回写信息,以供主机回收对应的内存资源、并更新主机自身维护的多通道硬件控制器对共享BD环的当前读位置;
其中,共享BD环和回写BD环位于主机内存中。
8.一种基于共享总线的数据传输方法,其特征在于,该方法在主机的内存中设置一共享BD环、以及一回写BD环,且该方法包括:
主机依据其对共享BD环的当前写位置、以及主机自身维护的多通道硬件控制器对共享BD环的当前读位置,判断共享BD环中是否存在已被多通道硬件控制器读取、但尚未被再次写入的空闲BD;
主机在共享BD环中存在所述的空闲BD时,为各通道的待发送数据块分配内存空间、从当前写位置开始向共享BD环写入各通道待发送数据块的内存空间地址、以及更新主机对共享BD环的当前写位置;
多通道硬件控制器从其对共享BD环的当前读位置开始突发读取共享BD环、直至主机对共享BD环的当前写位置,并更新多通道硬件控制器自身维护的对共享BD环的当前读位置;
多通道硬件控制器依据所读取的BD中的内存空间地址从主机内存突发读取各通道待发送数据块、并向对应通道发送;
多通道硬件控制器在各通道完成发送后顺序向回写BD环写入表示已完成发送的回写信息,以供主机回收对应的内存资源、并更新主机自身维护的多通道硬件控制器对共享BD环的当前读位置。
9.如权利要求8所述的数据传输方法,其特征在于,该方法进一步由主机依据各通道实际占用的物理带宽为各通道分别分配对应的发送信度;
该方法对于任意通道,由主机进一步在判断出任意通道的发送信用度足够时,再针对该通道判断共享BD环中是否存在空闲BD,并进一步在判断出共享BD环中存在空闲BD之后减少该通道的发送信度,以及,进一步在从回写BD环中读取到该通道对应的回写信息后回收该通道的发送信度。
10.如权利要求9所述的数据传输方法,其特征在于,该方法进一步由主机依据各通道实际占用的物理带宽为各通道分别分配对应的缓存队列;
每个通道的缓存队列用于在该通道的发送信度不足、或共享BD环中没有空闲BD时,缓存该通道的待发送数据块。
11.一种共享总线数据传输中的发送调度管理方法,其特征在于,该方法在主机的内存中设置有一共享BD环、以及一回写BD环,且该方法包括:
依据主机对共享BD环的当前写位置、以及为主机维护的多通道硬件控制器对共享BD环的当前读位置,判断共享BD环中是否存在已被多通道硬件控制器读取、但尚未被再次写入的空闲BD;
在共享BD环中存在所述的空闲BD时,为各通道的待发送数据块分配内存空间、从当前写位置开始向共享BD环写入各通道待发送数据块的内存空间地址、以及更新主机对共享BD环的写位置,以供多通道硬件控制器突发读取共享BD环后,依据所读取的BD中的内存空间地址从主机内存突发读取各通道待发送数据块、并向对应通道发送;
从回写BD环的BD中读取多通道硬件控制器写入的表示任意通道的待发送数据块已完成发送的回写信息,回收回写信息对应的内存资源、并更新为主机维护的多通道硬件控制器对共享BD环的当前读位置。
12.如权利要求11所述的发送调度管理方法,其特征在于,该方法进一步依据各通道实际占用的物理带宽为各通道分别分配对应的发送信度;
对于任意通道,该方法在判断出任意通道的发送信用度足够时,才针对该通道判断共享BD环中是否存在空闲BD,并进一步在判断出共享BD环中存在空闲BD之后减少该通道的发送信度,以及,进一步在从回写BD环中读取到该通道对应的回写信息后回收该通道的发送信度。
13.如权利要求12所述的发送调度管理方法,其特征在于,该方法进一步依据各通道实际占用的物理带宽为各通道分别分配对应的缓存队列;
每个通道的缓存队列用于在该通道的发送信度不足、或共享BD环中没有空闲BD时,缓存该通道的待发送数据块。
14.一种共享总线数据传输中的数据分发管理方法,其特征在于,该方法包括:
从多通道硬件控制器对共享BD环的当前读位置开始,突发读取共享BD环、直至主机对共享BD环的当前写位置,并更新为多通道硬件控制器维护的对共享BD环的当前读位置;
依据所读取的BD中的内存空间地址从主机内存突发读取各通道待发送数据块、并向对应通道发送;
各通道完成发送后顺序向回写BD环写入表示已完成发送的回写信息,以供主机回收对应的内存资源、并更新主机自身维护的多通道硬件控制器对共享BD环的当前读位置;
其中,共享BD环和回写BD环位于主机内存中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010252455.4A CN102375790B (zh) | 2010-08-12 | 2010-08-12 | 共享总线传输***及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010252455.4A CN102375790B (zh) | 2010-08-12 | 2010-08-12 | 共享总线传输***及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102375790A CN102375790A (zh) | 2012-03-14 |
CN102375790B true CN102375790B (zh) | 2014-03-12 |
Family
ID=45794419
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010252455.4A Active CN102375790B (zh) | 2010-08-12 | 2010-08-12 | 共享总线传输***及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102375790B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103064807B (zh) * | 2012-12-17 | 2015-08-19 | 福建星网锐捷网络有限公司 | 多通道直接存储器存取控制器 |
CN104346227B (zh) * | 2013-07-23 | 2017-11-28 | 比亚迪股份有限公司 | 用于can总线的数据分发方法和装置 |
CN107193766B (zh) * | 2017-05-12 | 2020-04-10 | 苏州中科集成电路设计中心有限公司 | 一种PCIe设备与主机之间的多路有序数据传输方法 |
CN109388590B (zh) * | 2018-09-28 | 2021-02-26 | 中国电子科技集团公司第五十二研究所 | 提升多通道dma访问性能的动态缓存块管理方法和装置 |
CN112311696B (zh) * | 2019-07-26 | 2022-06-10 | 瑞昱半导体股份有限公司 | 网络封包接收装置及方法 |
CN113126882A (zh) * | 2019-12-30 | 2021-07-16 | 深圳市中兴微电子技术有限公司 | 数据处理方法及装置、存储介质、电子装置 |
CN117411842B (zh) * | 2023-12-13 | 2024-02-27 | 苏州元脑智能科技有限公司 | 事件抑制方法、装置、设备、异构平台及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1189826C (zh) * | 2002-05-23 | 2005-02-16 | 华为技术有限公司 | 一种基于多业务多通道的数据收发处理方法 |
CN101192911B (zh) * | 2006-11-23 | 2010-09-22 | 大唐移动通信设备有限公司 | 一种时分复用模式下传输数据的方法和*** |
CN101788956B (zh) * | 2009-12-15 | 2012-02-22 | 福建星网锐捷网络有限公司 | 多通道数据存储方法、装置和多通道数据接收*** |
-
2010
- 2010-08-12 CN CN201010252455.4A patent/CN102375790B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN102375790A (zh) | 2012-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102375790B (zh) | 共享总线传输***及方法 | |
CN102622316B (zh) | 选择性地使能主机传递中断 | |
CN101582786B (zh) | 一种及时消息及时处理的方法及装置 | |
CN100517236C (zh) | 智能卡嵌入式操作***及其控制方法 | |
US7788435B2 (en) | Interrupt redirection with coalescing | |
CN101127685A (zh) | 一种进程间通讯装置及其进程间通讯方法 | |
CN101729386B (zh) | 一种基于令牌调度的流量控制方法及装置 | |
TW201015289A (en) | Coordinated link power management | |
CN101365999A (zh) | 发送完成事件批处理 | |
CN109918203A (zh) | 接入服务器内存管理优化方法、接入服务器及通信*** | |
CN109960575A (zh) | 一种计算能力共享方法、***及相关设备 | |
CN102609307A (zh) | 多核多线程双操作***网络设备及其控制方法 | |
CN101237346B (zh) | 网络处理器及网络处理器的读写串口的方法 | |
CN101567873B (zh) | 一种多任务并行处理方法及*** | |
US20060047856A1 (en) | Computer architecture and process for implementing a virtual vertical perimeter framework for an overloaded CPU having multiple network interfaces | |
CN111371848A (zh) | 一种请求处理方法、装置、设备及存储介质 | |
CN110290009A (zh) | 一种数据调度方法、装置及计算机可读存储介质 | |
CN109933433B (zh) | 一种gpu资源调度***及其调度方法 | |
CN101634956B (zh) | 多核处理器消息调度方法及调度器 | |
US8042111B2 (en) | Information processing system and computer readable recording medium storing an information processing program | |
CN102170401A (zh) | 一种数据的处理方法和设备 | |
CN101908025A (zh) | 一种串口使用权控制装置及控制方法 | |
CN115550284A (zh) | 消息处理方法、装置和设备 | |
JP2010218445A (ja) | マルチコアプロセッサシステム、スケジューリング方法およびスケジューラプログラム | |
CN109460291A (zh) | 电子装置、弹性控制服务器集群的方法及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address |
Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No. Patentee after: Xinhua three Technology Co., Ltd. Address before: 310053 Hangzhou hi tech Industrial Development Zone, Zhejiang province science and Technology Industrial Park, No. 310 and No. six road, HUAWEI, Hangzhou production base Patentee before: Huasan Communication Technology Co., Ltd. |
|
CP03 | Change of name, title or address |