CN102480426A - 基于pcie交换总线的通信方法及一种pcie交换系统 - Google Patents
基于pcie交换总线的通信方法及一种pcie交换系统 Download PDFInfo
- Publication number
- CN102480426A CN102480426A CN2010105693287A CN201010569328A CN102480426A CN 102480426 A CN102480426 A CN 102480426A CN 2010105693287 A CN2010105693287 A CN 2010105693287A CN 201010569328 A CN201010569328 A CN 201010569328A CN 102480426 A CN102480426 A CN 102480426A
- Authority
- CN
- China
- Prior art keywords
- pcie
- terminal
- accepting state
- state formation
- idle queues
- 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.)
- Granted
Links
Images
Landscapes
- Information Transfer Systems (AREA)
Abstract
本发明提供了一种基于高速外设组件互连标准(PCIE)交换总线的通信方法,该方法应用于由N个PCIE终端组成的PCIE交换系统,所述N个PCIE终端通过PCIE交换总线实现相互连接。该通信方法中,在发送端创建发送空闲队列,该队列的读操作在发送端本地完成,而写操作由各个PCIE对端设备通过PCIE交换网络写入;接收端创建接收状态队列,该队列的读操作在接收端本地完成,而写操作由各个对端设备通过PCIE交换网络写入,而报文的发送都是写操作。这样,整个PCIE交换总线就完全杜绝了PCIE读操作,最大限度的提高了PCIE的操作效率。本发明还提供了一种PCIE交换系统。
Description
技术领域
本发明涉及网络通信技术,尤其涉及网络通信领域的分布式系统中的板间通信技术,特别涉及基于PCIE交换总线的通信方法及一种PCIE交换系统。
背景技术
目前,单CPU集中式架构的通信设备的处理能力已经不能满足日益增长的通信业务处理要求。由多张板卡组成的分布式架构的通信设备由于能够并行处理业务,能够成倍的提高业务处理量,在通信产品的设计中越来越普及。
典型的分布式架构系统,一般由主控板、交换板和各种线卡板组成。其中,主控板用于管理整个系统,接收用户的管理命令,修改整个系统的工作方式,例如,关闭其中一张线卡板的所有功能,或者收集每张线卡板的工作状态;交换板用于传递各个线卡板间的报文,有些报文是需要多张线卡板配合处理的,报文处理的中间结果就需要通过交换板卡传递给下一个需要处理的线卡板,由于任意两个线卡板间都可能通信,因此就需要一张交换板卡来统一处理板卡的报文交换;各种线卡板通过交换总线连接到交换板上,线卡板主要处理报文,报文可能来自于主控卡,也可能来自于线卡板上的网络通信接口,能够本卡处理完的报文,就在本卡完成所有报文的处理,如果不能完成所有的处理,需要交下一张板卡继续处理,就将报文交给交换板卡,由交换板卡转发给下一张线卡板继续处理。
在运行过程中,当业务报文需要进行跨板卡通信时,由交换板通过交换总线实现线卡板间的报文交换。由于所有的线卡板都需要通过交换总线实现报文交换,因此交换板卡的吞吐能力和交换效率成为整个分布式系统性能的关键点。
常用的交换总线标准为高速外设组件互连标准(PCIE,PeripheralComponent Interconnect-Express)。随着PCIE2.0标准的发布,PCIE中的一路(lane)的速率已经提高到5G,可以将4个Lane甚至8个Lane组成的20G或40G的PCIE总线。而遵循PCIE2.0规范的交换芯片也能够实现全线速交换。
PCIE总线的通信方式为直接的共享内存读写。以下将连接到PCIE交换总线上的设备称为PCIE终端,多个相互连接的PCIE终端构成一个PCIE交换系统。在PCIE交换系统中,需要预先设置空间映射关系,即每个PCIE终端都将自己的一段内存映射到PCIE地址空间;同时,也需要将PCIE地址空间映射到自己的内存空间中。设置好空间映射关系后,第一PCIE终端向内存空间中写入报文,该报文就能被发送到PCIE交换系统的第二PCIE终端的内存空间中。
为了要在PCIE交换系统中完成高效、连续的报文传输,需要遵循如下规则:作为发送方的PCIE终端要能够知道报文要写入的地址,要能够在报文发送完成之后通知接收端:有新的报文到达,并且已经发送完成;作为接收方的PCIE终端要能够知道报文已经写入,并且要持续通告发送端新的可以写入报文的缓存(buffer)地址。有了共同遵循的规则,通信两端才能最大限度的减小通信过程中的延迟和等待,最大限度的做到连续通信。同时,由于PCIE规范的设计原因,PCIE写操作的效率要远远大于读操作的效率,因此,如何减少软件操作中的读操作也是提高PCIE效率的关键。
发明内容
本发明提供了一种基于PCIE交换总线的通信方法及一种PCIE交换系统,可以提高PCIE交换总线的工作效率。
本发明实施例提出一种基于高速外设组件互连标准PCIE交换总线的通信方法,该方法应用于由N个PCIE终端组成的PCIE交换系统,所述N个PCIE终端通过PCIE交换总线实现相互连接,所述每个PCIE终端创建三块内存区域,分别作为接收缓存区、接收状态队列和发送空闲队列;每个PCIE终端的这三块内存区域都映射到PCIE交换系统的地址空间,且不同PCIE终端映射的地址空间彼此不发生重叠;
该方法包括如下步骤:
A、所述PCIE交换系统中的每一个PCIE终端从本地接收缓存区中申请一定数目的缓存单元,将记录每个缓存单元对应的PCIE地址和缓存大小的空闲缓存描述符分别写入其他N-1个PCIE终端中和自己对应的发送空闲队列;
B、PCIE交换系统中的第一PCIE终端从本地与第二PCIE终端对应的发送空闲队列中查找是否有空闲缓存描述符,如果有,则从与第二PCIE终端对应的发送空闲队列中提取一个空闲缓存描述符,将要发送的报文写入该空闲缓存描述符指定的地址空间中;
C、第一PCIE终端向第二PCIE终端的接收状态队列中写入一个报文状态描述符;
D、第二PCIE终端检测到本地与第一PCIE终端对应的接收状态队列中有新增的有效报文状态描述符,先在本地接收缓存区中申请一个新的空闲缓存单元,并向第一PCIE终端中对应的发送空闲队列写入一个新的空闲缓存描述符,然后根据收到的报文状态描述符从缓存单元中取出报文并上交。
较佳地,所述第一PCIE终端本地与第二PCIE终端对应的发送空闲队列的长度与第二PCIE终端本地与第一PCIE终端对应的接收状态队列的长度相等。较佳地,步骤C所述第一PCIE终端向第二PCIE终端的接收状态队列中写入一个报文状态描述符之后,进一步包括:
若当前接收状态队列的位置不等于接收状态队列的长度,将当前接收状态队列的位置加1;若当前接收状态队列的位置等于接收状态队列的长度,将当前接收状态队列的位置返回初始值。
较佳地,步骤D所述向第一PCIE终端的发送空闲队列写入一个新的空闲缓存描述符之后进一步包括:
若当前发送空闲队列的位置不等于发送空闲队列的长度,将当前发送空闲队列的位置加1;若当前发送空闲队列的位置等于发送空闲队列的长度,将当前接收状态队列的位置返回初始值。
较佳地,步骤D中,如果第二PCIE终端在本地接收缓存区中申请一个新的空闲缓存单元不成功,则进一步包括:所述第二PCIE终端从接收状态队列中取出报文状态描述符中的缓存单元地址和缓存大小,将其作为一个新的空闲缓存单元写入到发送端的发送空闲队列中。
较佳地,所述PCIE终端为线卡板。
本发明实施例提出一种高速外设组件互连标准PCIE交换系统,所述系统包括N个PCIE终端,所述N个PCIE终端通过PCIE交换总线实现相互连接,任一个所述PCIE终端包括:内存管理模块、发送处理模块和接收处理模块;
所述内存管理模块,用于创建三块内存区域,分别作为接收缓存区、接收状态队列和发送空闲队列;并将这三块内存区域映射到PCIE交换系统的地址空间,且与其他PCIE终端映射的地址空间彼此不发生重叠;
所述发送处理模块,用于从本地接收缓存区中申请一定数目的缓存单元,将记录每个缓存单元对应的PCIE地址和缓存大小的空闲缓存描述符写入其他N-1个PCIE终端的发送空闲队列当中;当本PCIE终端作为发送端时,用于从本地与作为接收端的第二PCIE终端对应的发送空闲队列中查找是否有空闲缓存描述符,如果有,则从与所述第二PCIE终端对应的发送空闲队列中提取一个空闲缓存描述符,将要发送的报文写入该空闲缓存描述符指定的地址空间中,并向所述第二PCIE终端的接收状态队列中写入一个报文状态描述符;
所述接收处理模块,用于当本PCIE终端作为接收端时,检测到本地与作为发送端的第三PCIE终端对应的接收状态队列中有新的有效报文状态描述符时,接收端从本地接收缓存区中申请一个空闲的缓存单元,将记录所述空闲的缓存单元对应的PCIE地址和缓存大小的空闲状态描述符,写入所述第三PCIE终端中和其对应的发送空闲队列当中;然后将所述新的有效报文状态描述符对应的缓存单元地址中取出该报文并上交。
较佳地,所述发送空闲队列的长度与接收状态队列的长度相等。
较佳地,所述发送处理模块进一步包括:
当前接收状态队列位置记录单元,用于当本PCIE终端作为发送端时,记录当前作为接收端的第二PCIE终端中对应的接收状态队列的位置;在所述本PCIE终端的发送处理模块向所述第二PCIE终端的接收状态队列中写入一个报文状态描述符之后,用于判断当前接收状态队列的位置是否等于接收状态队列的长度,若是,将所记录的当前接收状态队列的位置返回初始值,否则,将所记录的当前接收状态队列的位置加1。
较佳地,所述接收处理模块进一步包括:
当前发送空闲队列位置记录单元,用于当本PCIE终端作为接收端时,记录当前作为发送端的第三PCIE终端对应的发送空闲队列的位置;在所述本PCIE终端的接收处理模块向第三PCIE终端的发送空闲队列写入一个新的空闲缓存描述符之后,用于判断当前发送空闲队列的位置是否等于发送空闲队列的长度,若是,将当前接收状态队列的位置返回初始值,否则将当前发送空闲队列的位置加1。
较佳地,所述PCIE终端为线卡板。
从以上技术方案可以看出,发送空闲队列在发送端创建,该队列的读操作在发送端本地完成,不需要经过PCIE,而写操作由各个PCIE对端设备通过PCIE交换网络写入。接收状态队列的读操作由接收端在本地完成,不需要经过PCIE,而写操作由各个对端设备通过PCIE交换网络写入;而报文的发送都是写操作。这样,整个PCIE交换总线就完全杜绝了PCIE读操作,最大限度的提高了PCIE的操作效率。
附图说明
图1为典型的PCIE交换系统示意图;
图2为本发明实施例提出的基于PCIE交换总线的通信方法的处理流程图;
图3为本发明实施例中各个PCIE终端映射的地址空间的示意图。
具体实施方式
图1所示为典型的PCIE交换系统示意图。该PCIE交换系统包括N个PCIE终端以及PCIE交换总线,这N个PCIE终端分别连接到PCIE交换总线上。
每个PCIE终端创建三块内存区域,分别是接收缓存区,接收状态队列和发送空闲队列。接收状态队列和发送空闲队列的长度按照约定的长度创建。为了避免对队列是否溢出进行判断,可以使发送空闲队列长度等于接收状态队列长度。初始化时,每个PCIE终端的接收状态队列为空。
该PCIE交换系统采用报文传输的方式,定义如下描述符:
空闲缓存描述符,用于描述接收端接收报文的空闲缓存的PCIE地址和该空闲缓存的大小;
报文状态描述符,用于描述接收端接收到报文的长度和存放报文的PCIE地址以及报文有效性标志。
在发送报文的PCIE终端(以下简称为发送端)的内存中创建发送空闲队列。为支持报文发送,一个发送端要创建N-1个发送空闲队列,每个发送空闲队列对应该PCIE交换结构中的一个接收报文的PCIE终端(以下简称为接收端)。在初始化完成后,每个发送空闲队列中保存空闲缓存描述符。当需要发送报文时,从接收端对应的发送空闲队列中取出一个空闲缓存描述符,从该空闲缓存描述符中获得空闲缓存的PCIE地址,向该PCIE地址写入报文即可实现报文发送。只要发送空闲队列中有空闲缓存描述符,发送端就可以连续不断的向对端发送报文,直到接收端由于无法及时处理报文,导致没有新的空闲缓存描述符加入到发送端中对应的发送空闲队列。在完成报文发送之后,发送端向接收端的接收状态队列中写入本次报文发送的报文状态描述符。
在接收端创建接收状态队列,所述接收状态队列用于接收发送端写过来的报文状态描述符。每个PCIE终端在本地对应于每一个其他PCIE终端创建一个接收状态队列,因此共需创建N-1个接收状态队列。接收端需要检查报文状态描述符的有效性标志,以确定是否有新的报文到达,在检查到报文状态描述符有效时,表明新的报文已经到达,将报文从报文状态描述符携带的的PCIE地址对应的本地缓存单元中取出,并向发送端的发送空闲队列写入一个新的空闲缓存描述符。接收端可以采用一定的调度策略来接收各个发送端发送来的报文,例如,采用公平调度的方式来检查每个接收状态队列,从而实现公平接收各个发送端的报文。
发送空闲队列在发送端创建,该队列的读操作在发送端完成,不需要经过PCIE交换总线,而写操作由接收端通过PCIE交换总线写入。接收状态队列的读操作由接收端在本地完成,不需要经过PCIE交换总线,而写操作由各个对端设备通过PCIE交换网络写入;而报文的发送都是写操作。这样,整个软件实现中就完全杜绝了PCIE读操作,最大限度的提高了PCIE的操作效率。
本发明实施例提出的基于PCIE交换总线的通信方法的处理流程如图2所示,包括如下步骤:
步骤201:每个PCIE终端创建三块内存区域,分别是接收缓存区,接收状态队列和发送空闲队列。
其中,接收状态队列和发送空闲队列的长度按照约定的长度创建。较佳地,每个作为发送端的PCIE终端本地创建的和其它每个PCIE终端分别对应的发送空闲队列的长度,与其作为接收端时本地创建的与其它每个PCIE终端对应的接收状态队列的长度相等。更为简单的情况,所有PCIE终端的发送空闲队列长度和接收状态队列长度均相等。初始化时,接收状态队列和发送空闲队列都为空。
步骤202:将每个PCIE终端的这三块内存区域都映射到PCIE交换系统的地址空间,且不同PCIE终端映射的地址空间彼此不发生重叠。图3为各个PCIE终端映射的地址空间的示意图。
一种可能的实施方式为:每个PCIE终端按照自身在PCIE交换系统中的槽位号计算得到该PCIE终端的地址空间,以保证不同PCIE终端映射的地址空间彼此不发生重叠。
步骤203:所述PCIE交换系统中的每一个PCIE终端从本地接收缓存区中申请一定数目的缓存单元,然后将这些缓存单元对应的PCIE地址和缓存大小按照空闲缓存描述符的格式写入其他N-1个PCIE终端的发送空闲队列当中。
每个PCIE终端将自己的接收缓存区切分为多个缓存单元,并采用缓存池的方式管理这些缓存单元,可以通过软件接口向缓存池申请和释放缓存单元。
步骤204:发送端要向一个接收端发送报文时,发送端从本地与该接收端对应的发送空闲队列中查找是否有空闲缓存描述符,如果有,则提取一个空闲缓存描述符,将要发送的报文写入该空闲缓存描述符指定的地址空间,即缓存单元中。
步骤205:在完成报文写入后,发送端向接收端的接收状态队列中按照写入一个报文状态描述符,并记录当前接收状态队列的位置。
所述报文状态描述符记录了报文的大小和存放报文的PCIE地址。为了在接收端的接收状态队列的正确位置写入报文状态描述符,发送端需要记录和其对应的当前接收状态队列的位置(rcv_stat_head),初始状态下,rcv_stat_head=0,表示从接收状态队列的起始位置开始写入报文状态描述符,每写入一个报文状态描述符,若当前接收状态队列的位置不等于接收状态队列的长度,当前接收状态队列的位置加1,即rcv_stat_head=rcv_stat_head+1。若当前接收状态队列的位置等于接收状态队列的长度,将当前接收状态队列的位置返回初始值,即rcv_stat_head=0。
步骤206:接收端通过轮询本地内存中分别与每个PCIE终端对应的接收状态队列的方式来检测是否有新的报文到达,当检测到某个接收状态队列中有新报文到达的有效标志时,首先要从本地接收缓冲区中申请一个新的缓存单元,向发送端的对应发送空闲队列中添加记录该缓存单元对应的PCIE地址和缓存大小的新的空闲缓存描述符,然后接收端从接收状态队列中取出的存放报文的PCIE地址,将这个地址转为为其本地缓存单元地址后上交给后续的软件处理,后续的软件模块就可以通过这个地址访问到自己需要处理的保存在缓存单元中的报文。然后返回步骤204进行新的报文的发送与接收。
注意,本步骤中,如果接收端申请缓存单元不成功,说明所有分配用来接收报文的缓存单元都在被占用,仍然需要处理接收状态队列,从接收状态队列中取出缓存单元的地址,但是这个地址不再上交,而是要作为一个空闲缓存单元加入到发送端的发送空闲队列中,因为每处理一个接收状态队列表项,就需要向对端的发送空闲队列中补充一个新的空闲缓存描述符,保证发送端有新的空闲缓存描述符可用,而这个空闲缓存描述符必须指向一个没有软件模块使用的缓存单元,因此在申请不到新的缓存单元的情况下,只能将刚刚完成报文接收的缓存单元再次利用起来,即丢弃刚刚收到的报文。
另外,接收端为了在发送端的发送空闲队列的正确位置写入空闲缓存描述符,接收端需要记录当前发送空闲队列的位置(snd_buff_head),初始状态下,snd_buff_head=0,表示从队列的起始位置开始写入报文状态描述符。每写入一个空闲缓存描述符,若当前发送空闲队列的位置不等于发送空闲队列的长度,将当前发送空闲队列的位置加1,即snd_buff_head=snd_buff_head+1。若当前发送空闲队列的位置等于发送空闲队列的长度时,将当前接收状态队列的位置返回初始值,即snd_buff_head=0。
本发明实施例还提出一种高速外设组件互连标准PCIE交换系统,所述系统包括N个PCIE终端,所述N个PCIE终端通过PCIE交换总线实现相互连接,任一个所述PCIE终端包括:内存管理模块、发送处理模块和接收处理模块;
所述内存管理模块,用于创建三块内存区域,分别作为接收缓存区、接收状态队列和发送空闲队列;并将这三块内存区域映射到PCIE交换系统的地址空间,且与其他PCIE终端映射的地址空间彼此不发生重叠;
所述发送处理模块,用于从本地接收缓存区中申请一定数目的缓存单元,将记录每个缓存单元对应的PCIE地址和缓存大小的空闲缓存描述符写入其他N-1个PCIE终端的发送空闲队列当中;当本PCIE终端作为发送端时,用于从本地与作为接收端的第二PCIE终端对应的发送空闲队列中查找是否有空闲缓存描述符,如果有,则从与所述第二PCIE终端对应的发送空闲队列中提取一个空闲缓存描述符,将要发送的报文写入该空闲缓存描述符指定的地址空间中,并向所述第二PCIE终端的接收状态队列中写入一个报文状态描述符;
所述接收处理模块,用于当本PCIE终端作为接收端时,检测到本地与作为发送端的第三PCIE终端对应的接收状态队列中有新的有效报文状态描述符时,接收端从本地接收缓存区中申请一个空闲的缓存单元,将包括所述空闲的缓存单元对应的PCIE地址和缓存大小的空闲状态描述符,写入所述第三PCIE终端中和其对应的发送空闲队列当中;然后将所述新的有效报文状态描述符对应的缓存单元地址中取出该报文并上交。
较佳地,所述发送空闲队列的长度与接收状态队列的长度相等。
较佳地,所述内存管理模块进一步包括:
地址计算单元,用于按照本PCIE终端在PCIE交换系统中的槽位号计算得到三块内存区域的地址空间。
较佳地,所述发送处理模块进一步包括:
当前接收状态队列位置记录单元,用于当本PCIE终端作为发送端时,记录当前作为接收端的第二PCIE终端中对应的接收状态队列的位置;在所述本PCIE终端的发送处理模块向所述第二PCIE终端的接收状态队列中写入一个报文状态描述符之后,用于判断当前接收状态队列的位置是否等于接收状态队列的长度,若是,将所记录的当前接收状态队列的位置返回初始值,否则,将所记录的当前接收状态队列的位置加1。
较佳地,所述接收处理模块进一步包括:
当前发送空闲队列位置记录单元,用于当本PCIE终端作为接收端时,记录当前作为发送端的第三PCIE终端对应的发送空闲队列的位置;在所述本PCIE终端的接收处理模块向第三PCIE终端的发送空闲队列写入一个新的空闲缓存描述符之后,用于判断当前发送空闲队列的位置是否等于发送空闲队列的长度,若是,将当前接收状态队列的位置返回初始值,否则将当前发送空闲队列的位置加1。
较佳地,所述PCIE终端为线卡板。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (11)
1.一种基于高速外设组件互连标准PCIE交换总线的通信方法,该方法应用于由N个PCIE终端组成的PCIE交换系统,所述N个PCIE终端通过PCIE交换总线实现相互连接,其特征在于,所述每个PCIE终端创建三块内存区域,分别作为接收缓存区、接收状态队列和发送空闲队列;每个PCIE终端的这三块内存区域都映射到PCIE交换系统的地址空间,且不同PCIE终端映射的地址空间彼此不发生重叠;
该方法包括如下步骤:
A、所述PCIE交换系统中的每一个PCIE终端从本地接收缓存区中申请一定数目的缓存单元,将记录每个缓存单元对应的PCIE地址和缓存大小的空闲缓存描述符分别写入其他N-1个PCIE终端中和自己对应的发送空闲队列;
B、PCIE交换系统中的第一PCIE终端从本地与第二PCIE终端对应的发送空闲队列中查找是否有空闲缓存描述符,如果有,则从与第二PCIE终端对应的发送空闲队列中提取一个空闲缓存描述符,将要发送的报文写入该空闲缓存描述符指定的地址空间中;
C、第一PCIE终端向第二PCIE终端的接收状态队列中写入一个报文状态描述符;
D、第二PCIE终端检测到本地与第一PCIE终端对应的接收状态队列中有新增的有效报文状态描述符,先在本地接收缓存区中申请一个新的空闲缓存单元,并向第一PCIE终端中对应的发送空闲队列写入一个新的空闲缓存描述符,然后根据收到的报文状态描述符从缓存单元中取出报文并上交。
2.根据权利要求1所述的基于PCIE交换总线的通信方法,其特征在于,所述第一PCIE终端本地与第二PCIE终端对应的发送空闲队列的长度与第二PCIE终端本地与第一PCIE终端对应的接收状态队列的长度相等。
3.根据权利要求1所述的基于PCIE交换总线的通信方法,其特征在于,步骤C所述第一PCIE终端向第二PCIE终端的接收状态队列中写入一个报文状态描述符之后,进一步包括:
若当前接收状态队列的位置不等于接收状态队列的长度,将当前接收状态队列的位置加1;若当前接收状态队列的位置等于接收状态队列的长度,将当前接收状态队列的位置返回初始值。
4.根据权利要求1所述的基于PCIE交换总线的通信方法,其特征在于,步骤D所述向第一PCIE终端的发送空闲队列写入一个新的空闲缓存描述符之后进一步包括:
若当前发送空闲队列的位置不等于发送空闲队列的长度,将当前发送空闲队列的位置加1;若当前发送空闲队列的位置等于发送空闲队列的长度,将当前接收状态队列的位置返回初始值。
5.根据权利要求1所述的基于PCIE交换总线的通信方法,其特征在于,步骤D中,如果第二PCIE终端在本地接收缓存区中申请新的空闲缓存单元不成功,则进一步包括:所述第二PCIE终端从接收状态队列中取出报文状态描述符中的缓存单元地址和缓存大小,将其作为一个新的空闲缓存单元写入发送端的对应的发送空闲队列中。
6.根据权利要求1-5任一项所述的基于PCIE交换总线的通信方法,其特征在于,所述PCIE终端为线卡板。
7.一种高速外设组件互连标准PCIE交换系统,所述系统包括N个PCIE终端,所述N个PCIE终端通过PCIE交换总线实现相互连接,其特征在于,任一个所述PCIE终端包括:内存管理模块、发送处理模块和接收处理模块;
所述内存管理模块,用于创建三块内存区域,分别作为接收缓存区、接收状态队列和发送空闲队列;并将这三块内存区域映射到PCIE交换系统的地址空间,且与其他PCIE终端映射的地址空间彼此不发生重叠;
所述发送处理模块,用于从本地接收缓存区中申请一定数目的缓存单元,将记录每个缓存单元对应的PCIE地址和缓存大小的空闲缓存描述符写入其他N-1个PCIE终端的发送空闲队列当中;当本PCIE终端作为发送端时,用于从本地与作为接收端的第二PCIE终端对应的发送空闲队列中查找是否有空闲缓存描述符,如果有,则从与所述第二PCIE终端对应的发送空闲队列中提取一个空闲缓存描述符,将要发送的报文写入该空闲缓存描述符指定的地址空间中,并向所述第二PCIE终端的接收状态队列中写入一个报文状态描述符;
所述接收处理模块,用于当本PCIE终端作为接收端时,检测到本地与作为发送端的第三PCIE终端对应的接收状态队列中有新的有效报文状态描述符时,接收端从本地接收缓存区中申请一个空闲的缓存单元,将记录所述空闲缓存单元的对应的PCIE地址和缓存大小的空闲状态描述符,写入所述第三PCIE终端中和其对应的发送空闲队列当中;然后将所述新的有效报文状态描述符对应的缓存单元中取出该报文并上交。
8.根据权利要求7所述的PCIE交换系统,其特征在于,所述发送空闲队列的长度与接收状态队列的长度相等。
9.根据权利要求7所述的PCIE交换系统,其特征在于,所述发送处理模块进一步包括:
当前接收状态队列位置记录单元,用于当本PCIE终端作为发送端时,记录当前作为接收端的第二PCIE终端中对应的接收状态队列的位置;在所述本PCIE终端的发送处理模块向所述第二PCIE终端的接收状态队列中写入一个报文状态描述符之后,用于判断当前接收状态队列的位置是否等于接收状态队列的长度,若是,将所记录的当前接收状态队列的位置返回初始值,否则,将所记录的当前接收状态队列的位置加1。
10.根据权利要求7所述的PCIE交换系统,其特征在于,所述接收处理模块进一步包括:
当前发送空闲队列位置记录单元,用于当本PCIE终端作为接收端时,记录当前作为发送端的第三PCIE终端对应的发送空闲队列的位置;在所述本PCIE终端的接收处理模块向第三PCIE终端的发送空闲队列写入一个新的空闲缓存描述符之后,用于判断当前发送空闲队列的位置是否等于发送空闲队列的长度,若是,将当前接收状态队列的位置返回初始值,否则将当前发送空闲队列的位置加1。
11.根据权利要求7-10任一项所述的PCIE交换系统,其特征在于,所述PCIE终端为线卡板。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010569328.7A CN102480426B (zh) | 2010-11-25 | 2010-11-25 | 基于pcie交换总线的通信方法及一种pcie交换系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010569328.7A CN102480426B (zh) | 2010-11-25 | 2010-11-25 | 基于pcie交换总线的通信方法及一种pcie交换系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102480426A true CN102480426A (zh) | 2012-05-30 |
CN102480426B CN102480426B (zh) | 2014-07-09 |
Family
ID=46092910
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010569328.7A Active CN102480426B (zh) | 2010-11-25 | 2010-11-25 | 基于pcie交换总线的通信方法及一种pcie交换系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102480426B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102752223A (zh) * | 2012-07-26 | 2012-10-24 | 杭州海康威视数字技术股份有限公司 | 并行系统间数据传输方法及其系统 |
CN103218313A (zh) * | 2013-04-02 | 2013-07-24 | 杭州华三通信技术有限公司 | 用于实现缓存描述符交互的方法和电子设备 |
CN103430161A (zh) * | 2012-11-15 | 2013-12-04 | 华为技术有限公司 | 一种基于PCIE Switch通信的方法、装置及系统 |
CN103812838A (zh) * | 2012-11-13 | 2014-05-21 | 中国移动通信集团公司 | 一种服务调用方法和设备及系统 |
CN108021438A (zh) * | 2016-10-31 | 2018-05-11 | 联芯科技有限公司 | 一种内存共享方法与基于多处理器的终端设备 |
CN109257431A (zh) * | 2018-10-12 | 2019-01-22 | 微网云(深圳)技术有限公司 | 分布式服务器系统 |
CN109286564A (zh) * | 2017-07-20 | 2019-01-29 | 迈普通信技术股份有限公司 | 一种报文转发方法及装置 |
CN109684269A (zh) * | 2018-12-26 | 2019-04-26 | 成都九芯微科技有限公司 | 一种pcie交换芯片内核及工作方法 |
CN110457251A (zh) * | 2018-05-07 | 2019-11-15 | 大唐移动通信设备有限公司 | 一种多处理器间的数据通信方法及装置 |
CN110990318A (zh) * | 2019-11-11 | 2020-04-10 | 福州瑞芯微电子股份有限公司 | 一种PCIe总线地址扩展方法、装置、设备和介质 |
CN114415969A (zh) * | 2022-02-09 | 2022-04-29 | 杭州云合智网技术有限公司 | 交换芯片报文动态存储方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101122892A (zh) * | 2007-08-17 | 2008-02-13 | 中国科学院计算技术研究所 | 一种cpci信号处理板 |
CN101136754A (zh) * | 2006-09-27 | 2008-03-05 | 中兴通讯股份有限公司 | 一种以太网芯片的数据传输控制系统 |
CN101150527A (zh) * | 2007-11-09 | 2008-03-26 | 杭州华三通信技术有限公司 | 一种pcie数据传输的方法、系统及设备 |
CN101669082A (zh) * | 2007-02-28 | 2010-03-10 | Lsi公司 | 集群化多个独立的高速pci层次结构的装置和方法 |
-
2010
- 2010-11-25 CN CN201010569328.7A patent/CN102480426B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101136754A (zh) * | 2006-09-27 | 2008-03-05 | 中兴通讯股份有限公司 | 一种以太网芯片的数据传输控制系统 |
CN101669082A (zh) * | 2007-02-28 | 2010-03-10 | Lsi公司 | 集群化多个独立的高速pci层次结构的装置和方法 |
CN101122892A (zh) * | 2007-08-17 | 2008-02-13 | 中国科学院计算技术研究所 | 一种cpci信号处理板 |
CN101150527A (zh) * | 2007-11-09 | 2008-03-26 | 杭州华三通信技术有限公司 | 一种pcie数据传输的方法、系统及设备 |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102752223B (zh) * | 2012-07-26 | 2014-11-05 | 杭州海康威视数字技术股份有限公司 | 并行系统间数据传输方法及其系统 |
CN102752223A (zh) * | 2012-07-26 | 2012-10-24 | 杭州海康威视数字技术股份有限公司 | 并行系统间数据传输方法及其系统 |
CN103812838A (zh) * | 2012-11-13 | 2014-05-21 | 中国移动通信集团公司 | 一种服务调用方法和设备及系统 |
CN103430161A (zh) * | 2012-11-15 | 2013-12-04 | 华为技术有限公司 | 一种基于PCIE Switch通信的方法、装置及系统 |
CN103430161B (zh) * | 2012-11-15 | 2016-12-21 | 华为技术有限公司 | 一种基于PCIE Switch通信的方法、装置及系统 |
CN103218313A (zh) * | 2013-04-02 | 2013-07-24 | 杭州华三通信技术有限公司 | 用于实现缓存描述符交互的方法和电子设备 |
CN103218313B (zh) * | 2013-04-02 | 2015-12-23 | 杭州华三通信技术有限公司 | 用于实现缓存描述符交互的方法和电子设备 |
CN108021438A (zh) * | 2016-10-31 | 2018-05-11 | 联芯科技有限公司 | 一种内存共享方法与基于多处理器的终端设备 |
CN109286564A (zh) * | 2017-07-20 | 2019-01-29 | 迈普通信技术股份有限公司 | 一种报文转发方法及装置 |
CN110457251A (zh) * | 2018-05-07 | 2019-11-15 | 大唐移动通信设备有限公司 | 一种多处理器间的数据通信方法及装置 |
CN109257431A (zh) * | 2018-10-12 | 2019-01-22 | 微网云(深圳)技术有限公司 | 分布式服务器系统 |
CN109257431B (zh) * | 2018-10-12 | 2021-04-13 | 微网云(深圳)科技有限公司 | 分布式服务器系统 |
CN109684269A (zh) * | 2018-12-26 | 2019-04-26 | 成都九芯微科技有限公司 | 一种pcie交换芯片内核及工作方法 |
CN110990318A (zh) * | 2019-11-11 | 2020-04-10 | 福州瑞芯微电子股份有限公司 | 一种PCIe总线地址扩展方法、装置、设备和介质 |
CN114415969A (zh) * | 2022-02-09 | 2022-04-29 | 杭州云合智网技术有限公司 | 交换芯片报文动态存储方法 |
CN114415969B (zh) * | 2022-02-09 | 2023-09-29 | 杭州云合智网技术有限公司 | 交换芯片报文动态存储方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102480426B (zh) | 2014-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102480426B (zh) | 基于pcie交换总线的通信方法及一种pcie交换系统 | |
US5315707A (en) | Multiprocessor buffer system | |
CN102594660B (zh) | 一种虚拟接口交换方法、装置及系统 | |
CN104796337A (zh) | 一种转发报文的方法及装置 | |
CN110995598B (zh) | 一种变长报文数据处理方法和调度装置 | |
CN202084028U (zh) | 一种模块化多串口扩展装置 | |
CN101616083A (zh) | 一种报文转发方法和装置 | |
CN105376129B (zh) | 一种1394总线事务层-链路层数据包发送电路及方法 | |
CN201639589U (zh) | 基于arm的嵌入式双冗余网卡 | |
CN2938595Y (zh) | 一种用于板间通信的高速串行接口装置 | |
CN102970202A (zh) | 基于抢占式策略的1553b总线通信方法 | |
CN103218337A (zh) | 基于wishbone总线实现主与主、从与从通信的片上系统和方法 | |
CN103530245A (zh) | 一种基于fpga的srio互联交换装置 | |
CN102662908A (zh) | 对片上多核系统中的高速接口进行控制的方法及系统 | |
CN105426260A (zh) | 一种支持分布式系统的透明进程间通信系统及方法 | |
CN111290979B (zh) | 数据传输方法、装置及系统 | |
CN101901199B (zh) | 一种数据透明传输的方法及系统 | |
CN103617132B (zh) | 一种基于共享存储的以太网终端发送实现方法及终端装置 | |
CN103607360A (zh) | 一种报文处理方法、线卡及交换设备 | |
CN101175073B (zh) | 基于硬盘控制器的双控制器通讯系统及其方法 | |
CN102117261B (zh) | 一种芯片内部处理器之间的通信方法 | |
CN104714832A (zh) | 一种用于机载数据网络异步数据交互区的缓冲管理方法 | |
CN102420734A (zh) | 一种can总线拓扑结构实现系统 | |
CN102857443B (zh) | 一种数据写入的方法、装置及系统 | |
CN101702714A (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |