CN103077148B - 一种基于pcie的主机通讯方法和主机 - Google Patents

一种基于pcie的主机通讯方法和主机 Download PDF

Info

Publication number
CN103077148B
CN103077148B CN201310001525.2A CN201310001525A CN103077148B CN 103077148 B CN103077148 B CN 103077148B CN 201310001525 A CN201310001525 A CN 201310001525A CN 103077148 B CN103077148 B CN 103077148B
Authority
CN
China
Prior art keywords
main frame
bag
memory
local terminal
register
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
Application number
CN201310001525.2A
Other languages
English (en)
Other versions
CN103077148A (zh
Inventor
王少锋
吴庆民
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur Beijing Electronic Information Industry Co Ltd
Original Assignee
Inspur Beijing Electronic Information Industry Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Inspur Beijing Electronic Information Industry Co Ltd filed Critical Inspur Beijing Electronic Information Industry Co Ltd
Priority to CN201310001525.2A priority Critical patent/CN103077148B/zh
Publication of CN103077148A publication Critical patent/CN103077148A/zh
Application granted granted Critical
Publication of CN103077148B publication Critical patent/CN103077148B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

一种基于PCIE的主机通讯方法和主机,该方法和主机实现了直接利用地址总线以内存地址映射实现两个主机之间的通信,因此高效地完成两个主机之间互连通信;并且主机提供了PCIE接口,具有很好的扩展性;另外,因为采用PCIE总线传输,没有经过外部链路实现传输,省掉了中间处理流程,实现简单。

Description

一种基于PCIE的主机通讯方法和主机
技术领域
本发明涉及主机通讯技术,具体涉及一种基于PCIE的主机通讯方法和主机。
背景技术
实现两主机系统之间通讯有很多种方法,可以通过TCP/IP协议、IB协议等。
主机系统之间最常用的通信方式是使用TCP/IP协议,设置网卡IP地址,使用IP地址实现数据传输,但由于TCP/IP为互联网通信协议,封装了很多层协议包,传输性能比不高。适合于长距离、不可靠的传输环境,不适用于本地系统之间高速互联通信。
IB(InfiniBand)协议适用于本地服务器之间互联通信,但其成本高,系统复杂,布局繁琐。适用于大规模的主机系统之间通信,不适用于少量主机系统之间的通信。
PCI Express(PCIE)是外设部件外连标准,用于替代PCI总线标准,具有高速率,低延迟的特性,可用于高速数据的传输。
但是相关技术中还没有一种基于PCIE协议的主机之间通信的方法。
发明内容
有待于此,本发明要解决的技术问题是提供一种基于PCIE的主机通讯方法和主机,以提供另一种实现两主机系统之间内部互连通信方式。
为了解决上述问题,本发明实施例采用如下技术方案:
一种基于PCIE的主机通讯方法,本端主机的PCIE设备包括中断寄存器、暂存寄存器和基址寄存器,该方法包括如下步骤:
步骤A、通过读取本端主机的PCIE设备的配置空间,在本端主机的内存虚拟地址空间为所述PCIE设备映射出一段与所述配置空间对应的虚拟内存;在本端主机的内存虚拟地址空间为所述中断寄存器和所述暂存寄存器映射出一段相应的虚拟内存;在本端主机的内存虚拟地址空间为所述基址寄存器映射出一段与所述基址寄存器相应的虚拟内存,映射出的所有虚拟内存形成内存映射窗口,所述基址寄存器中存储有与所述基址寄存器相应的虚拟内存对应的空间地址;对对端主机进行同样的配置,将本端主机与对端主机通过PCIE总线进行互连;
步骤B、本端主机根据与所述配置空间对应的虚拟内存和与所述暂存寄存器相应的虚拟内存将要发送的数据缓存在所述暂存寄存器中;
步骤C、本端主机将所述基址寄存器中存储的空间地址翻译成对端主机的对应空间地址,将缓存在所述暂存寄存器中的数据发送到对端主机的相应地址、对端主机的暂存寄存器通过与对端主机的PCIE设备的配置空间对应的虚拟内存和与该暂存寄存器对应的虚拟内存将接收到的数据进行缓存;本端主机发送的数据达到预定量或者发送完所有的数据时,由本端主机的中断寄存器通过相应的虚拟内存向对端主机发送中断;
步骤D、对端主机接收到所述中断后,开始将缓存的数据写入自身的内存映射窗口对应的区域中。
可选地,所述步骤B之前,该方法还包括:将本端主机的内存映射窗口对应的区域以固定大小为单位顺序分成K个包,所述K为将要分成的包的个数;
所述步骤B包括:本端主机将根据与所述配置空间对应的虚拟内存和与所述暂存寄存器映相应的虚拟内存缓存在所述暂存寄存器中的缓存数据以所述固定大小为单位顺序分成K个包;
所述步骤C包括:本端主机以包为单位进行数据发送,将所述基址寄存器中存储的空间地址翻译成对端主机的对应空间地址,将包发送到对端主机的相应地址,对端主机的暂存寄存器通过与所述配置空间对应的虚拟内存和与所述暂存寄存器对应的虚拟内存将接收到的包进行缓存;本端主机发送的包的个数达到预定个数或者发完最后一个包时,由本端主机的中断寄存器通过相应的虚拟内存向对端主机发送中断。
可选地,本端主机和对端主机的内存映射窗口对应的区域均包括两个逻辑上的队列,一个为发送队列,另外一个为接收队列,发送队列用于存储要发送的数据,接收队列用于存储接收到的数据,发送队列和接收队列均为循环队列。
可选地,该方法还包括:将本端主机的内存映射窗口对应的区域以固定大小为单位顺序分成K个包之前,在本端主机的内存映射窗口对应的区域中设置以下变量:发送端最大传输序号TxPktSn;
本端主机将缓存在所述暂存寄存器中的缓存数据以所述固定大为单位顺序分成K个包的步骤还包括:本端主机在顺序分成的K个包的头部顺序加上包序号PktSn;
本端主机发送的包的个数达到预定个数或者发完最后一个包时,该方法还包括:将TxPktSn设置为相应的值。
可选地,本端主机以包为单位进行数据发送,将所述基址寄存器中存储的空间地址翻译成对端主机的对应空间地址,将包发送到对端主机的相应地址,对端主机的暂存寄存器通过与所述配置空间对应的虚拟内存和与所述暂存寄存器对应的虚拟内存将接收到的包进行缓存;本端主机发送的包的个数达到预定个数或者发完最后一个包时,由本端主机的中断寄存器通过相应的虚拟内存向对端主机发送中断的步骤包括:
本端主机初始化所述PktSn和与自身内存映射窗口对应的区域的偏移offset为0;
本端主机从自身内存映射窗口对应区域的发送队列的PktSn处开始发送包,将包写入到所述offset处,每执行一次写操作所述PktSn加一,所述offset加包大小,当offset大于等于本端主机的内存映射窗口大小时,置offset=0;
当发送的包的个数达到预定个数或者发完最后一个包时,本端主机写TxPktSn,并由本端主机的中断寄存器向对端主机发送中断,该中断中包含该TxPktSn。
可选地,该方法还包括:
当本端主机接收到对端主机发送的中断时,读取该中断中所包含的RxPktSn,并从该RxPktSn处开始重新发送包。
可选地,该方法还包括:
将本端主机的内存映射窗口对应的区域以固定大小为单位顺序分成K个包之前,在对端主机的内存映射窗口对应的区域中设置以下变量:接收端最新接收的包的序号RxPktSn和接收队列的索引RxPoint;
对端主机每次中断接收完成之后都写RxPktSn。
可选地,对端主机接收到所述中断后,开始将缓存的包写入自身的内存映射窗口对应的区域中的步骤包括:
步骤a、对端主机接收本端主机发送的中断,从该中断中读取TxPktSn,确定应该接收的包数为:TxPktSn-RxPktSn,并将缓存的包写入自身的内存映射窗口对应的区域的接收队列中;
步骤b、对端主机查询自身内存映射窗口对应区域的offset处的包序号是否等于RxPktSN+1,且offset加一个包大小处的包序号是否等于RxPktSN+2,如果是,则说明包传输完毕,将RxPktSn加1,将所述接收队列的索引RxPoint加1,RxPoint从RxPktSn开始递增,一直递增到TxPktSn,Offset加包大小,如果offset大于等于本端内存映射窗口大小,则置offset为0,之后执行步骤c;
步骤c、对端主机的中断寄存器向本端主机发送中断,该中断中包含RxPktSn,本端主机从RxPktSn处开始发送包;
如果offset处的包序号不等于RxPktSN+1,或offset加一个包大小处的包序号不等于RxPktSN+2,则执行步骤d;
步骤d、等待一段时间再重复执行所述步骤B,重复次数达到预定次数时,认为传输失败,发中断给本端主机,该中断中包含RxPktSn,以通知本端主机从RxPktSn处重新发送包;
如果RxPktn=TxPktSn,说明本次中断需要接收的包已经接收完毕。
一种基于PCIE的主机,所述主机包括映射模块、PCIE设备和发送模块,其中,所述PCIE设备包括中断寄存器、暂存寄存器、基址寄存器和PCIE总线接口,其中:
所述映射模块设置成:通过读取所述主机的PCIE设备的配置空间,在所述主机的内存虚拟地址空间为所述PCIE设备映射出一段与所述配置空间对应的虚拟内存;在所述主机的内存虚拟地址空间为所述中断寄存器和所述暂存寄存器映射出一段相应的虚拟内存;在所述主机的内存虚拟地址空间为所述基址寄存器映射出一段与所述基址寄存器相应的虚拟内存;映射出的所有虚拟内存形成内存映射窗口;
所述PCIE总线接口设置成:和与所述主机有同样配置的其它主机的PCIE设备通过PCIE总线进行互连;
所述基址寄存器设置成:存储与所述基址寄存器相应的虚拟内存对应的空间地址;
所述暂存寄存器设置成:根据与所述配置空间对应的虚拟内存和与所述暂存寄存器相应的虚拟内存缓存要发送的数据缓存;
所述发送模块设置成:将所述基址寄存器中存储的空间地址翻译成所互连主机的对应空间地址,将缓存在所述暂存寄存器中的数据发送到所互连主机的相应地址;
所述中断寄存器设置成:所述发送模块发送的数据达到预定量或者发送完所有的数据时,通过所述中断寄存器相应的虚拟内存向所互连的主机发送中断。
可选地,所述主机还包括接收模块,其中:
所述接收模块设置成:接收所互连主机发来的数据;
所述暂存寄存器还设置成:通过与所述配置空间对应的虚拟内存和与该暂存寄存器对应的虚拟内存将接收到的数据进行缓存。
可选地,所述主机还包括数据写入模块,其中:
所述接收模块还设置成:接收所互连主机发来的中断;
所述数据写入模块设置成:所述接收模块接收到所述中断后,开始将缓存的数据写入所述内存映射窗口对应的区域中。
可选地,该主机还包括分割模块,其设置成:将所述内存映射窗口对应的区域按照固定大小为单位顺序分成K个包,所述K为将要分成的包的个数;将缓存在所述暂存寄存器中的缓存数据按照所述固定大小为单位顺序分成K个包;
所述发送模块设置成按照以下方式将所述基址寄存器中存储的空间地址翻译成所互连主机的对应空间地址,将缓存在所述暂存寄存器中的数据发送到所互连主机的相应地址:以包为单位进行数据发送,将所述基址寄存器中存储的空间地址翻译成所互连主机的对应空间地址,将包发送到所互连主机的相应地址;
所述中断寄存器设置成按照以下方式通过所述中断寄存器相应的虚拟内存向所互连的主机发送中断:所述发送模块发送的包的个数达到预定个数或者发完最后一个包时,通过所述中断寄存器相应的虚拟内存向所互连的主机发送中断。
可选地,其中,所述主机的内存映射窗口对应的区域包括两个逻辑上的队列,一个为发送队列,另外一个为接收队列,发送队列用于存储要发送的数据,接收队列用于存储接收到的数据,所述发送队列和所述接收队列均为循环队列。
可选地,所述主机还包括变量处理模块,其中:
所述变量处理模块设置成:在所述内存映射窗口对应的区域中设置以下变量:发送端最大传输序号TxPktSn。
可选地,所述变量处理模块还设置成:当所述发送模块发送了预定个包以后或者传送完最后一个包后,将TxPktSn设置为相应的值,以使得所互连主机通过读取TxPktSn来得知所述发送模块已经发送的包的个数;
所述变量处理模块还设置成:在将缓存数据顺序分成的K个包的头部顺序加上包序号PktSn。
可选地,所述变量处理模块还设置成:初始化所述PktSn和所述内存映射窗口对应的区域的偏移offset为0;
所述发送模块还设置成:从所述内存映射窗口对应的区域的发送队列的PktSn处开始发送包,将包写入到所述offset处;
所述变量处理模块还设置成:每执行一次写操作所述PktSn加一,所述offset加包大小,当offset大于等于所述内存映射窗口大小时,置offset=0;当发送模块发送的包的个数达到预定个数或者发完最后一个包时,写TxPktSn;
所述中断寄存器还设置成:当发送模块发送的包的个数达到预定个数或者发完最后一个包时,向所互连主机发送中断,该中断中包含所述发送模块已经发送的包的个数;
所述发送模块还设置成:当接收到所互连主机发送的中断时,读取中断中所包含的RxPktSn,并从RxPktSn处开始重新发送包。
可选地,所述主机的内存映射窗口对应的区域包括两个逻辑上的队列,一个为发送队列,另外一个为接收队列,发送队列用于存储要发送的数据,接收队列用于存储接收到的数据,所述发送队列和所述接收队列均为循环队列。
可选地,所述主机还包括变量处理模块,其中:
所述变量处理模块设置成:在所述内存映射窗口对应的区域中设置以下变量:接收端最新接收的包的序号RxPktSn和接收队列的索引RxPoint。
可选地,所述暂存寄存器设置成按照以下方式通过与所述配置空间对应的虚拟内存和与该暂存寄存器对应的虚拟内存将接收到的数据进行缓存:通过与所述配置空间对应的虚拟内存和与该暂存寄存器对应的虚拟内存将接收到的包进行缓存;
所述数据写入模块设置成按照以下方式将缓存的数据写入所述内存映射窗口对应的区域中:所述接收模块接收到所互连主机发送的中断时,将所述暂存寄存器缓存的包写入所述主机内存映射窗口对应的区域的接收队列中;
所述变量处理模块还设置成:每次中断接收完成之后都写RxPktSn;当所述接收模块接收到所互连主机发送的中断时,从该中断中读取TxPktSn,确定应该接收的包数为:TxPktSn-RxPktSn;查询所述主机的内存映射窗口对应的区域offset处的包序号是否等于RxPktSN+1,且offset加一个包大小处的包序号是否等于RxPktSN+2,如果是,则说明包传输完毕,将RxPktSn加1,接收队列的索引RxPoint加1,RxPoint从RxPktSn开始递增,一直递增到TxPktSn,Offset加包大小,如果offset大于等于内存映射窗口大小,则置offset为0;如果offset处的包序号不等于RxPktSN+1,或offset加一个包大小处的包序号不等于RxPktSN+2,则等待一段时间再重复所述查询所述主机的内存映射窗口对应的区域offset处的包序号是否等于RxPktSN+1的步骤,重复次数达到预定次数时,认为传输失败;如果RxPktn=TxPktSn,认为本次中断需要接收的包已经接收完毕;
所述中断寄存器还设置成:传输完成后或传输失败时,发中断给所互连的主机,该中断中包含RxPktSn。
本发明实施例的基于PCIE的主机和主机之间的通讯方法,产生了以下有益的技术效果:
实现了直接利用地址总线以内存地址映射实现两个主机之间的通信,因此高效地完成两个主机之间互连通信;并且主机提供了PCIE接口,具有很好的扩展性;另外,因为采用PCIE总线传输,没有经过外部链路实现传输,省掉了中间处理流程,实现简单。
附图说明
图1为本发明实施例的基于PCIE的主机通讯方法;
图2为本发明实施例的两个主机之间的互连示意图;
图3为本发明实施例的主机结构示意图。
具体实施方式
下面将结合附图及实施例对本发明的技术方案进行更详细的说明。
需要说明的是,如果不冲突,本发明实施例以及实施例中的各个特征可以相互结合,均在本发明的保护范围之内。另外,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
PCIE的基本结构一般都包含有根节点、桥设备、端点设备。PCIE设备都有自己的空间地址,可以将这些地址映射到主机系统内存空间当中去,实现系统与PCIE设备交互。这样,当两个PCIE设备相互关联之后,以PCI-E设备空间作为交互区域,可以实现两个主机系统之间内存地址的相互映射。
另外,非透明桥可以连接两端独立的主机系统,其中,非透明桥扮演了一个在本地系统和远端系统之间高性能,低开销的通信的网关的角色。
两个系统之间PCIE设备相互关联可以使用很多种方法,当然也可以采用非透明桥的方式。采用非透明桥的连接方式时,非透明桥“装扮”成一个端点设备阻止总线继续向下遍历设备。当本地主机枚举设备时,发现非透明桥设备就将非透明桥设备当成一个逻辑的端点设备,并分配内存空间。相应的,对端主机枚举端点设备时,发现非透明桥设备,也将非透明桥当成一个端点设备,并分配内存空间。这样非透明桥设备在两端主机中分别被当成一个端点设备,并在两端主机系统内存空间中都有自己的内存空间。基于上述考虑,本发明实施例提供了一种基于PCIE的主机通讯方法和装置。
本发明实施例的一种基于PCIE的主机通讯方法,如图1所示,包括如下步骤:
步骤101、通过读取本端主机的PCIE设备的配置空间,在本端主机的内存虚拟地址空间为所述PCIE设备映射出一段与所述配置空间对应的虚拟内存;在本端主机的内存虚拟地址空间为所述中断寄存器和暂存寄存器映射出一段相应的虚拟内存;在本端主机的内存虚拟地址空间为所述基址寄存器映射出一段与所述基址寄存器相应的虚拟内存,映射出的所有虚拟内存形成内存映射窗口,所述基址寄存器中存储有与所述基址寄存器相应的虚拟内存对应的空间地址。
其中,所述配置空间中包括配置口、各个寄存器的地址信息等。
在对数据进行缓存时,需要用到所述配置空间对应的虚拟内存,在此不再赘述。
对对端主机进行同样的配置,将本端主机与对端主机通过PCIE总线进行互连。
步骤101的所述操作具体如图2所示。
步骤102、本端主机根据与所述配置空间对应的虚拟内存和与所述暂存寄存器相应的虚拟内存将要发送的数据缓存在所述暂存寄存器中;
步骤103、本端主机将所述基址寄存器中存储的空间地址翻译成对端主机的对应空间地址,将缓存在所述暂存寄存器中的数据发送到对端主机的相应地址、对端主机的暂存寄存器通过与对端主机的PCIE设备的配置空间对应的虚拟内存和与该暂存寄存器对应的虚拟内存将接收到的数据进行缓存;本端主机发送的数据达到预定量或者发送完所有的数据时,由本端主机的中断寄存器通过相应的虚拟内存向对端主机发送中断;
步骤104、对端主机接收到所述中断后,开始将缓存的数据写入自身的内存映射窗口对应的区域中。
可选地,所述步骤102之前,该方法还包括:将本端主机的内存映射窗口对应的区域按照固定大小S为单位顺序分成K个包,该包为基本的通信包单元。
可选地,所述步骤102包括:本端主机将缓存在所述暂存寄存器中的I/O缓存数据按照固定大小S为单位顺序分成K个包。
可选地,所述步骤103包括:本端主机以包为单位进行数据发送,将所述基址寄存器中存储的空间地址翻译成对端主机的对应空间地址,将包发送到对端主机的相应地址,对端主机的暂存寄存器通过与所述配置空间对应的虚拟内存和与所述暂存寄存器对应的虚拟内存将接收到的包进行缓存;本端主机发送的包的个数达到预定个数或者发完最后一个包时,由本端主机的中断寄存器通过相应的虚拟内存向对端主机发送中断。
该步骤中,将所述基址寄存器中存储的空间地址翻译成对端主机的对应空间地址的技术术语已知技术,在此不再赘述。
可选地,本端主机和对端主机的内存映射窗口对应的区域均包括两个逻辑上的队列,一个为发送队列,另外一个为接收队列,发送队列用于存储要发送的包,接收队列用于存储接收到的包。这两个队列一般是循环队列。
可选地,该方法还包括:本端主机将缓存在所述暂存寄存器中的I/O缓存数据按照固定大小S为单位顺序分成K个包之前,在本端主机的内存映射窗口对应的区域中设置以下变量:发送端最大传输序号TxPktSn。
可选地,本端主机将缓存在所述暂存寄存器中的I/O缓存数据按照固定大小S为单位顺序分成K个包的步骤包括:本端主机在顺序分成的K个包的头部顺序加上包序号PktSn。
可选地,该方法还包括:当本端主机发送了预定个包以后或者传送完最后一个包后,将TxPktSn设置为相应的值,以使得对端主机通过读取TxPktSn来得知本端主机已经发送的包的个数。
可选地,本端主机以包为单位进行数据发送,将所述基址寄存器中存储的空间地址翻译成对端主机的对应空间地址,将包发送到对端主机的相应地址,对端主机的暂存寄存器通过与所述配置空间对应的虚拟内存和与所述暂存寄存器对应的虚拟内存将接收到的包进行缓存;本端主机发送的包的个数达到预定个数或者发完最后一个包时,由本端主机的中断寄存器通过相应的虚拟内存向对端主机发送中断的步骤可以包括以下步骤:
步骤201、本端主机初始化所述PktSn和与自身内存映射窗口对应的区域的偏移offset为0;
步骤202、本端主机从自身内存映射窗口对应区域的发送队列的PktSn处开始发送包,将包写入到所述offset处,每执行一次写操作所述PktSn加一,所述offset加包大小,当offset大于等于本端主机的内存映射窗口大小时,置offset=0。
步骤203、当发送的包的个数达到预定个数或者发完最后一个包时,写TxPktSn,并由本端主机的中断寄存器向对端主机发送中断,该中断中包含本端主机已经发送的包的个数。
步骤204、当本端主机接收到对端主机发送的中断时,读取中断中所包含的RxPktSn,并从RxPktSn处开始重新发送包。
可选地,该方法还包括:将本端主机的内存映射窗口对应的区域以固定大小为单位顺序分成K个包之前,在对端主机的内存映射窗口对应的区域中设置以下变量:接收端最新接收的包的序号RxPktSn和接收队列的索引RxPoint。
对端主机每次中断接收完成之后都写RxPktSn,本端主机通过读取RxPktSn来判断对端主机接收情况;RxPoint作为接收队列的索引,用于本端主机判断接收队列是否已满。
可选地,对端主机接收到所述中断后,开始将缓存的包写入自身的内存映射窗口对应的区域中的可以包括以下步骤:
步骤301、对端主机的暂存寄存器通过对应的虚拟内存将接收到的包进行缓存;
步骤302、对端主机接收本端主机发送的中断,从该中断中读取TxPktSn,确定应该接收的包数为:TxPktSn-RxPktSn,并将缓存的包写入自身的内存映射窗口对应的区域的接收队列中;
步骤303,对端主机查询自身内存映射窗口对应区域的offset处的包序号是否等于RxPktSN+1,且offset加一个包大小处的包序号是否等于RxPktSN+2,如果是,则说明包传输完毕,将RxPktSn加1,将所述接收队列的索引RxPoint加1,RxPoint从RxPktSn开始递增,一直递增到TxPktSn,Offset加包大小,如果offset大于等于本端内存映射窗口大小,则置offset为0,之后执行步骤304;
步骤304、对端主机的中断寄存器向本端主机发送中断,该中断中包含RxPktSn,本端主机从RxPktSn处开始发送包。
如果offset处的包序号不等于RxPktSN+1,或offset加一个包大小处的包序号不等于RxPktSN+2,则执行步骤305;
步骤305、等待一段时间再重复执行步骤302,重复次数达到预定次数时,认为传输失败,发中断给本端主机,该中断中包含RxPktSn,以通知本端主机从RxPktSn处重新发送包。
如果RxPktn=TxPktSn,说明本次中断需要接收的包已经接收完毕。
本发明实施例的一种基于PCIE的主机,如图3所示,包括映射模块21、PCIE设备22和发送模块23,其中,PCIE设备包括中断寄存器221、暂存寄存器222、基址寄存器223和PCIE总线接口224,其中:
映射模块21设置成:通过读取所述主机的PCIE设备的配置空间,在所述主机的内存虚拟地址空间为所述PCIE设备映射出一段与所述配置空间对应的虚拟内存;在所述主机的内存虚拟地址空间为所述中断寄存器和暂存寄存器映射出一段相应的虚拟内存;在所述主机的内存虚拟地址空间为所述基址寄存器映射出一段与所述基址寄存器相应的虚拟内存;映射出的所有虚拟内存形成内存映射窗口;
其中,所述配置空间中包括配置口、各个寄存器的地址信息等。
PCIE总线接口224设置成:和与所述主机有同样配置的其他主机的PCIE设备通过PCIE总线进行互连。
基址寄存器223设置成:存储与所述基址寄存器223相应的虚拟内存对应的空间地址;
暂存寄存器222设置成:根据与所述配置空间对应的虚拟内存和与所述暂存寄存器222相应的虚拟内存缓存要发送的数据缓存;
发送模块23设置成:将所述基址寄存器223中存储的空间地址翻译成所互连主机的对应空间地址,将缓存在所述暂存寄存器222中的数据发送到所互连主机的相应地址;
中断寄存器221设置成:所述发送模块23发送的数据达到预定量或者发送完所有的数据时,通过所述中断寄存器相应的虚拟内存向所互连的主机发送中断。
可选地,所述主机还包括接收模块24,接收模块24设置成:接收所互连主机发来的数据;
相应的,暂存寄存器222还设置成:通过与所述配置空间对应的虚拟内存和与该暂存寄存器222对应的虚拟内存将接收到的数据进行缓存。
可选地,所述主机还包括数据写入模块25,其中:
接收模块24还设置成:接收所互连主机发来的中断;
数据写入模块25设置成:接收模块24接收到所述中断后,开始将缓存的数据写入所述内存映射窗口对应的区域中。
可选地,该主机还包括分割模块26,其设置成:将所述主机的内存映射窗口对应的区域按照固定大小S为单位顺序分成K个包;将缓存在暂存寄存器222中的I/O缓存数据按照固定大小S为单位顺序分成K个包。
发送模块23设置成按照以下方式将所述基址寄存器中存储的空间地址翻译成所互连主机的对应空间地址,将缓存在所述暂存寄存器中的数据发送到所互连主机的相应地址:以包为单位进行数据发送,将所述基址寄存器中存储的空间地址翻译成所互连主机的对应空间地址,将包发送到所互连主机的相应地址。
中断寄存器221设置成按照以下方式通过所述中断寄存器相应的虚拟内存向所互连的主机发送中断:发送模块23发送的包的个数达到预定个数或者发完最后一个包时,通过中断寄存器221相应的虚拟内存向所互连的主机发送中断。
其中,所述主机的内存映射窗口对应的区域均包括两个逻辑上的队列,一个为发送队列,另外一个为接收队列,发送队列用于存储要发送的数据,接收队列用于存储接收到的数据。这两个队列一般是循环队列。
所述主机还包括变量处理模块27,其中:
变量处理模块27设置成:在所述主机的内存映射窗口对应的区域中设置以下变量:发送端最大传输序号TxPktSn。
变量处理模块27还设置成:当发送模块23发送了预定个包以后或者传送完最后一个包后,将TxPktSn设置为相应的值,以使得所述第二主机通过读取TxPktSn来得知所述主机已经发送的包的个数。
变量处理模块27还设置成:在将I/O缓存数据顺序分成的K个包的头部顺序加上包序号PktSn。
变量处理模块27还设置成:初始化所述PktSn和所述主机的内存映射窗口对应的区域的偏移offset为0;
发送模块23还设置成:从所述主机内存映射窗口对应的区域的发送队列的PktSn处开始发送包,将包写入到所述offset处。
所述变量处理模块27还设置成:每执行一次写操作所述PktSn加一,所述offset加包大小,当offset大于等于所述主机的内存映射窗口大小时,置offset=0;当发送模块23发送的包的个数达到预定个数或者发完最后一个包时,写TxPktSn。
中断寄存器221还设置成:当发送模块23发送的包的个数达到预定个数或者发完最后一个包时,写TxPktSn,向所述第二主机发送中断,该中断中包含所述主机已经发送的包的个数。
所述发送模块23还设置成:当所述主机接收到所述第二主机发送的中断时,读取中断中所包含的RxPktSn,并从RxPktSn处开始重新发送包。
可选地,变量处理模块27还设置成:在所述内存映射窗口对应的区域中设置以下变量:接收端最新接收的包的序号RxPktSn和接收队列的索引RxPoint。
变量处理模块27还设置成:每次中断接收完成之后都写RxPktSn,使得第三主机通过读取RxPktSn来判断所述主机接收情况。
暂存寄存器222设置成按照以下方式通过与所述配置空间对应的虚拟内存和与该暂存寄存器对应的虚拟内存将接收到的数据进行缓存:通过与所述配置空间对应的虚拟内存和与该暂存寄存器对应的虚拟内存将接收到的包进行缓存;
数据写入模块25设置成按照以下方式将缓存的数据写入所述内存映射窗口对应的区域中:接收模块24接收到所互连主机发送的中断时,将所述暂存寄存器222缓存的包写入所述主机内存映射窗口对应的区域的接收队列中;
变量处理模块27还设置成:每次中断接收完成之后都写RxPktSn;当所述主机接收到所互连主机发送的中断时,从该中断中读取TxPktSn,确定应该接收的包数为:TxPktSn-RxPktSn;查询所述主机的内存映射窗口对应的区域offset处的包序号是否等于RxPktSN+1,且offset加一个包大小处的包序号是否等于RxPktSN+2,如果是,则说明包传输完毕,将RxPktSn加1,接收队列的索引RxPoint加1,RxPoint从RxPktSn开始递增,一直递增到TxPktSn,Offset加包大小,如果offset大于等于内存映射窗口大小,则置offset为0;
如果offset处的包序号不等于RxPktSN+1,或offset加一个包大小处的包序号不等于RxPktSN+2,则等待一段时间再重复所述查询所述主机的内存映射窗口对应的区域offset处的包序号是否等于RxPktSN+1的步骤,重复次数达到预定次数时,认为传输失败;
如果RxPktn=TxPktSn,说明本次中断需要接收的包已经接收完毕。
中断寄存器221还设置成:传输完成后或传输失败时,发中断给所互连主机,该中断中包含RxPktSn,以通知所述第三主机从RxPktSn处重新发送包。
本发明实施例的基于PCIE的主机和主机之间的通讯方法,产生了以下有益的技术效果:
实现了直接利用地址总线以内存地址映射实现两个主机之间的通信,因此高效完成两个主机之间互连通信;并且主机提供了PCIE接口,具有很好的扩展性;另外,因为采用PCIE总线传输,没有经过外部链路实现传输,省掉了中间处理流程,实现简单。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明的权利要求的保护范围。

Claims (19)

1.一种基于PCIE的主机通讯方法,其特征在于,本端主机的PCIE设备包括中断寄存器、暂存寄存器和基址寄存器,该方法包括如下步骤:
步骤A、通过读取本端主机的PCIE设备的配置空间,在本端主机的内存虚拟地址空间为所述PCIE设备映射出一段与所述配置空间对应的虚拟内存;在本端主机的内存虚拟地址空间为所述中断寄存器和所述暂存寄存器映射出一段相应的虚拟内存;在本端主机的内存虚拟地址空间为所述基址寄存器映射出一段与所述基址寄存器相应的虚拟内存,映射出的所有虚拟内存形成内存映射窗口,所述基址寄存器中存储有与所述基址寄存器相应的虚拟内存对应的空间地址;对对端主机进行同样的配置,将本端主机与对端主机通过PCIE总线进行互连;
步骤B、本端主机根据与所述配置空间对应的虚拟内存和与所述暂存寄存器相应的虚拟内存将要发送的数据缓存在所述暂存寄存器中;
步骤C、本端主机将所述基址寄存器中存储的与所述基址寄存器相应的虚拟内存对应的空间地址翻译成对端主机的对应空间地址,将缓存在所述暂存寄存器中的数据发送到对端主机的相应地址、对端主机的暂存寄存器通过与对端主机的PCIE设备的配置空间对应的虚拟内存和与该暂存寄存器对应的虚拟内存将接收到的数据进行缓存;本端主机发送的数据达到预定量或者发送完所有的数据时,由本端主机的中断寄存器通过相应的虚拟内存向对端主机发送中断;
步骤D、对端主机接收到所述中断后,开始将缓存的数据写入自身的内存映射窗口对应的区域中。
2.如权利要求1所述的主机通讯方法,其特征在于:
所述步骤B之前,该方法还包括:将本端主机的内存映射窗口对应的区域以固定大小为单位顺序分成K个包,所述K为将要分成的包的个数;
所述步骤B包括:本端主机将根据与所述配置空间对应的虚拟内存和与所述暂存寄存器映相应的虚拟内存缓存在所述暂存寄存器中的缓存数据以所述固定大小为单位顺序分成K个包;
所述步骤C包括:本端主机以包为单位进行数据发送,将所述基址寄存器中存储的与所述基址寄存器相应的虚拟内存对应的空间地址翻译成对端主机的对应空间地址,将包发送到对端主机的相应地址,对端主机的暂存寄存器通过与所述配置空间对应的虚拟内存和与所述暂存寄存器对应的虚拟内存将接收到的包进行缓存;本端主机发送的包的个数达到预定个数或者发完最后一个包时,由本端主机的中断寄存器通过相应的虚拟内存向对端主机发送中断。
3.如权利要求2所述的主机通讯方法,其特征在于:
本端主机和对端主机的内存映射窗口对应的区域均包括两个逻辑上的队列,一个为发送队列,另外一个为接收队列,发送队列用于存储要发送的数据,接收队列用于存储接收到的数据,发送队列和接收队列均为循环队列。
4.如权利要求3所述的主机通讯方法,其特征在于:
该方法还包括:将本端主机的内存映射窗口对应的区域以固定大小为单位顺序分成K个包之前,在本端主机的内存映射窗口对应的区域中设置以下变量:发送端最大传输序号TxPktSn;
本端主机将缓存在所述暂存寄存器中的缓存数据以所述固定大为单位顺序分成K个包的步骤还包括:本端主机在顺序分成的K个包的头部顺序加上包序号PktSn;
本端主机发送的包的个数达到预定个数或者发完最后一个包时,该方法还包括:将TxPktSn设置为相应的值。
5.如权利要求4所述的主机通讯方法,其特征在于,本端主机以包为单位进行数据发送,将所述基址寄存器中存储的与所述基址寄存器相应的虚拟内存对应的空间地址翻译成对端主机的对应空间地址,将包发送到对端主机的相应地址,对端主机的暂存寄存器通过与所述配置空间对应的虚拟内存和与所述暂存寄存器对应的虚拟内存将接收到的包进行缓存;本端主机发送的包的个数达到预定个数或者发完最后一个包时,由本端主机的中断寄存器通过相应的虚拟内存向对端主机发送中断的步骤包括:
本端主机初始化所述PktSn和与自身内存映射窗口对应的区域的偏移offset为0;
本端主机从自身内存映射窗口对应区域的发送队列的PktSn处开始发送包,将包写入到所述offset处,每执行一次写操作所述PktSn加一,所述offset加包大小,当offset大于等于本端主机的内存映射窗口大小时,置offset=0;
当发送的包的个数达到预定个数或者发完最后一个包时,本端主机写TxPktSn,并由本端主机的中断寄存器向对端主机发送中断,该中断中包含该TxPktSn。
6.如权利要求5所述的主机通讯方法,其特征在于,该方法还包括:
当本端主机接收到对端主机发送的中断时,读取该中断中所包含的RxPktSn,并从该RxPktSn处开始重新发送包。
7.如权利要求3所述的主机通讯方法,其特征在于,该方法还包括:
将本端主机的内存映射窗口对应的区域以固定大小为单位顺序分成K个包之前,在对端主机的内存映射窗口对应的区域中设置以下变量:接收端最新接收的包的序号RxPktSn和接收队列的索引RxPoint;
对端主机每次中断接收完成之后都写RxPktSn。
8.如权利要求7所述的主机通讯方法,其特征在于,对端主机接收到所述中断后,开始将缓存的包写入自身的内存映射窗口对应的区域中的步骤包括:
步骤a、对端主机接收本端主机发送的中断,从该中断中读取TxPktSn,确定应该接收的包数为:TxPktSn-RxPktSn,并将缓存的包写入自身的内存映射窗口对应的区域的接收队列中;
步骤b、对端主机查询自身内存映射窗口对应区域的offset处的包序号是否等于RxPktSN+1,且offset加一个包大小处的包序号是否等于RxPktSN+2,如果是,则说明包传输完毕,将RxPktSn加1,将所述接收队列的索引RxPoint加1,RxPoint从RxPktSn开始递增,一直递增到TxPktSn,Offset加包大小,如果offset大于等于本端内存映射窗口大小,则置offset为0,之后执行步骤c;
步骤c、对端主机的中断寄存器向本端主机发送中断,该中断中包含RxPktSn,本端主机从RxPktSn处开始发送包;
如果offset处的包序号不等于RxPktSN+1,或offset加一个包大小处的包序号不等于RxPktSN+2,则执行步骤d;
步骤d、等待一段时间再重复执行所述步骤B,重复次数达到预定次数时,认为传输失败,发中断给本端主机,该中断中包含RxPktSn,以通知本端主机从RxPktSn处重新发送包;
如果RxPktn=TxPktSn,说明本次中断需要接收的包已经接收完毕。
9.一种基于PCIE的主机,其特征在于,所述主机包括映射模块、PCIE设备和发送模块,其中,所述PCIE设备包括中断寄存器、暂存寄存器、基址寄存器和PCIE总线接口,其中:
所述映射模块设置成:通过读取所述主机的PCIE设备的配置空间,在所述主机的内存虚拟地址空间为所述PCIE设备映射出一段与所述配置空间对应的虚拟内存;在所述主机的内存虚拟地址空间为所述中断寄存器和所述暂存寄存器映射出一段相应的虚拟内存;在所述主机的内存虚拟地址空间为所述基址寄存器映射出一段与所述基址寄存器相应的虚拟内存;映射出的所有虚拟内存形成内存映射窗口;
所述PCIE总线接口设置成:和与所述主机有同样配置的其它主机的PCIE设备通过PCIE总线进行互连;
所述基址寄存器设置成:存储与所述基址寄存器相应的虚拟内存对应的空间地址;
所述暂存寄存器设置成:根据与所述配置空间对应的虚拟内存和与所述暂存寄存器相应的虚拟内存缓存要发送的数据缓存;
所述发送模块设置成:将所述基址寄存器中存储的与所述基址寄存器相应的虚拟内存对应的空间地址翻译成所互连主机的对应空间地址,将缓存在所述暂存寄存器中的数据发送到所互连主机的相应地址;
所述中断寄存器设置成:所述发送模块发送的数据达到预定量或者发送完所有的数据时,通过所述中断寄存器相应的虚拟内存向所互连的主机发送中断。
10.如权利要求9所述的主机,其特征在于,所述主机还包括接收模块,其中:
所述接收模块设置成:接收所互连主机发来的数据;
所述暂存寄存器还设置成:通过与所述配置空间对应的虚拟内存和与该暂存寄存器对应的虚拟内存将接收到的数据进行缓存。
11.如权利要求10所述的主机,其特征在于,所述主机还包括数据写入模块,其中:
所述接收模块还设置成:接收所互连主机发来的中断;
所述数据写入模块设置成:所述接收模块接收到所述中断后,开始将缓存的数据写入所述内存映射窗口对应的区域中。
12.如权利要求9-11中任一项所述的主机,其特征在于,
该主机还包括分割模块,其设置成:将所述内存映射窗口对应的区域按照固定大小为单位顺序分成K个包,所述K为将要分成的包的个数;将缓存在所述暂存寄存器中的缓存数据按照所述固定大小为单位顺序分成K个包;
所述发送模块设置成按照以下方式将所述基址寄存器中存储的与所述基址寄存器相应的虚拟内存对应的空间地址翻译成所互连主机的对应空间地址,将缓存在所述暂存寄存器中的数据发送到所互连主机的相应地址:以包为单位进行数据发送,将所述基址寄存器中存储的与所述基址寄存器相应的虚拟内存对应的空间地址翻译成所互连主机的对应空间地址,将包发送到所互连主机的相应地址;
所述中断寄存器设置成按照以下方式通过所述中断寄存器相应的虚拟内存向所互连的主机发送中断:所述发送模块发送的包的个数达到预定个数或者发完最后一个包时,通过所述中断寄存器相应的虚拟内存向所互连的主机发送中断。
13.如权利要求12所述的主机,其特征在于,
其中,所述主机的内存映射窗口对应的区域包括两个逻辑上的队列,一个为发送队列,另外一个为接收队列,发送队列用于存储要发送的数据,接收队列用于存储接收到的数据,所述发送队列和所述接收队列均为循环队列。
14.如权利要求13所述的主机,其特征在于,所述主机还包括变量处理模块,其中:
所述变量处理模块设置成:在所述内存映射窗口对应的区域中设置以下变量:发送端最大传输序号TxPktSn。
15.如权利要求14所述的主机,其特征在于:
所述变量处理模块还设置成:当所述发送模块发送了预定个包以后或者传送完最后一个包后,将TxPktSn设置为相应的值,以使得所互连主机通过读取TxPktSn来得知所述发送模块已经发送的包的个数;
所述变量处理模块还设置成:在将缓存数据顺序分成的K个包的头部顺序加上包序号PktSn。
16.如权利要求15所述的主机,其特征在于:
所述变量处理模块还设置成:初始化所述PktSn和所述内存映射窗口对应的区域的偏移offset为0;
所述发送模块还设置成:从所述内存映射窗口对应的区域的发送队列的PktSn处开始发送包,将包写入到所述offset处;
所述变量处理模块还设置成:每执行一次写操作所述PktSn加一,所述offset加包大小,当offset大于等于所述内存映射窗口大小时,置offset=0;当发送模块发送的包的个数达到预定个数或者发完最后一个包时,写TxPktSn;
所述中断寄存器还设置成:当发送模块发送的包的个数达到预定个数或者发完最后一个包时,向所互连主机发送中断,该中断中包含所述发送模块已经发送的包的个数;
所述发送模块还设置成:当接收到所互连主机发送的中断时,读取中断中所包含的RxPktSn,并从RxPktSn处开始重新发送包。
17.如权利要求11所述的主机,其特征在于,其中,所述主机的内存映射窗口对应的区域包括两个逻辑上的队列,一个为发送队列,另外一个为接收队列,发送队列用于存储要发送的数据,接收队列用于存储接收到的数据,所述发送队列和所述接收队列均为循环队列。
18.如权利要求17所述的主机,其特征在于,所述主机还包括变量处理模块,其中:
所述变量处理模块设置成:在所述内存映射窗口对应的区域中设置以下变量:接收端最新接收的包的序号RxPktSn和接收队列的索引RxPoint。
19.如权利要求18所述的主机,其特征在于,
所述暂存寄存器设置成按照以下方式通过与所述配置空间对应的虚拟内存和与该暂存寄存器对应的虚拟内存将接收到的数据进行缓存:通过与所述配置空间对应的虚拟内存和与该暂存寄存器对应的虚拟内存将接收到的包进行缓存;
所述数据写入模块设置成按照以下方式将缓存的数据写入所述内存映射窗口对应的区域中:所述接收模块接收到所互连主机发送的中断时,将所述暂存寄存器缓存的包写入所述主机内存映射窗口对应的区域的接收队列中;
所述变量处理模块还设置成:每次中断接收完成之后都写RxPktSn;当所述接收模块接收到所互连主机发送的中断时,从该中断中读取TxPktSn,确定应该接收的包数为:TxPktSn-RxPktSn;查询所述主机的内存映射窗口对应的区域offset处的包序号是否等于RxPktSN+1,且offset加一个包大小处的包序号是否等于RxPktSN+2,如果是,则说明包传输完毕,将RxPktSn加1,接收队列的索引RxPoint加1,RxPoint从RxPktSn开始递增,一直递增到TxPktSn,Offset加包大小,如果offset大于等于内存映射窗口大小,则置offset为0;如果offset处的包序号不等于RxPktSN+1,或offset加一个包大小处的包序号不等于RxPktSN+2,则等待一段时间再重复所述查询所述主机的内存映射窗口对应的区域offset处的包序号是否等于RxPktSN+1的步骤,重复次数达到预定次数时,认为传输失败;如果RxPktn=TxPktSn,认为本次中断需要接收的包已经接收完毕;
所述中断寄存器还设置成:传输完成后或传输失败时,发中断给所互连的主机,该中断中包含RxPktSn。
CN201310001525.2A 2013-01-04 2013-01-04 一种基于pcie的主机通讯方法和主机 Active CN103077148B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310001525.2A CN103077148B (zh) 2013-01-04 2013-01-04 一种基于pcie的主机通讯方法和主机

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310001525.2A CN103077148B (zh) 2013-01-04 2013-01-04 一种基于pcie的主机通讯方法和主机

Publications (2)

Publication Number Publication Date
CN103077148A CN103077148A (zh) 2013-05-01
CN103077148B true CN103077148B (zh) 2015-09-23

Family

ID=48153679

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310001525.2A Active CN103077148B (zh) 2013-01-04 2013-01-04 一种基于pcie的主机通讯方法和主机

Country Status (1)

Country Link
CN (1) CN103077148B (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9465760B2 (en) * 2013-11-18 2016-10-11 Futurewei Technologies, Inc. Method and apparatus for delivering MSI-X interrupts through non-transparent bridges to computing resources in PCI-express clusters
CN103605595A (zh) * 2013-12-10 2014-02-26 浪潮电子信息产业股份有限公司 一种基于dos环境的ntb通讯的测试方法
CN104750634B (zh) * 2013-12-27 2018-09-21 华为技术有限公司 读取方法及系统,互联设备控制器
CN103905453A (zh) * 2014-04-04 2014-07-02 浪潮电子信息产业股份有限公司 一种基于地址映射多路复用的通信模型及方法
CN105765545B (zh) 2014-07-15 2018-10-12 华为技术有限公司 PCIe I/O设备共享方法及设备与互联系统
CN110457251B (zh) * 2018-05-07 2021-10-26 大唐移动通信设备有限公司 一种多处理器间的数据通信方法及装置
CN110795374B (zh) * 2019-10-16 2021-06-11 苏州浪潮智能科技有限公司 一种设备访问的方法、装置及可读存储介质
CN111045817B (zh) * 2019-11-08 2023-09-26 瑞芯微电子股份有限公司 一种PCIe传输管理方法、系统和装置
CN112948291B (zh) * 2019-12-11 2024-07-02 中科寒武纪科技股份有限公司 数据传输方法、电子设备和可读存储介质
CN113835831B (zh) * 2021-09-01 2024-08-20 南京南瑞继保电气有限公司 一种数据内存映射方法、装置、电子设备和存储介质
CN116501666B (zh) * 2023-06-29 2023-09-01 北京大禹智芯科技有限公司 一种PCIe Switch仿真器的实现方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101150527A (zh) * 2007-11-09 2008-03-26 杭州华三通信技术有限公司 一种pcie数据传输的方法、系统及设备
CN101227296A (zh) * 2007-12-27 2008-07-23 杭州华三通信技术有限公司 一种pcie数据传输的方法、系统及板卡

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7213094B2 (en) * 2004-02-17 2007-05-01 Intel Corporation Method and apparatus for managing buffers in PCI bridges
US7613898B2 (en) * 2006-01-17 2009-11-03 Globalfoundries Inc. Virtualizing an IOMMU

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101150527A (zh) * 2007-11-09 2008-03-26 杭州华三通信技术有限公司 一种pcie数据传输的方法、系统及设备
CN101227296A (zh) * 2007-12-27 2008-07-23 杭州华三通信技术有限公司 一种pcie数据传输的方法、系统及板卡

Also Published As

Publication number Publication date
CN103077148A (zh) 2013-05-01

Similar Documents

Publication Publication Date Title
CN103077148B (zh) 一种基于pcie的主机通讯方法和主机
US10152441B2 (en) Host bus access by add-on devices via a network interface controller
KR101725755B1 (ko) 적응형 라우팅을 이용하여 자원 활용도를 제어하기 위한 메커니즘
US9430432B2 (en) Optimized multi-root input output virtualization aware switch
US20050132089A1 (en) Directly connected low latency network and interface
CN106257434B (zh) 一种基于增强型外设互连协议总线的数据传输方法及装置
CN106155960A (zh) 基于gpio握手和edma的uart串口通信方法
CN102263698B (zh) 虚拟通道的建立方法、数据传输的方法及线卡
WO2016191990A1 (zh) 一种报文转换方法及装置
CN102185833B (zh) 一种基于fpga的fc i/o并行处理方法
CN104461979A (zh) 基于环形总线的多核片上通信网络实现方法
US7596148B2 (en) Receiving data from virtual channels
CN111641566B (zh) 数据处理的方法、网卡和服务器
CN103136163B (zh) 可配置实现fc-ae-asm和fc-av协议的协议处理器芯片
CN102752219B (zh) 用于实现vd互连的方法和交换设备
CN108768667B (zh) 一种用于多核处理器片内核间网络通信的方法
CN110417780A (zh) 定制化数据传输协议的多通道高速数据接口转化模块
CN103106169A (zh) 基于aurora协议的高速总线接口的扩展架构
CN105471852A (zh) 一种udp高速数据收发系统及方法
US10877911B1 (en) Pattern generation using a direct memory access engine
US7313146B2 (en) Transparent data format within host device supporting differing transaction types
CN106372013A (zh) 远程内存访问方法、装置和系统
KR20140125311A (ko) 멀티 코어를 가진 네트워크 인터페이스 카드를 이용한 트래픽 처리 장치 및 방법
CN102089750B (zh) 将串行scsi阵列控制器连接至存储区域网络的系统
CN107168909A (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