双控之间通信方法和系统.pdf

上传人:e2 文档编号:4074209 上传时间:2018-08-14 格式:PDF 页数:12 大小:1.51MB
返回 下载 相关 举报
摘要
申请专利号:

CN201410510221.3

申请日:

2014.09.28

公开号:

CN104486365A

公开日:

2015.04.01

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):H04L 29/08申请日:20140928|||公开

IPC分类号:

H04L29/08; H04L29/12

主分类号:

H04L29/08

申请人:

浪潮(北京)电子信息产业有限公司

发明人:

刘变红; 闫永刚; 吴庆民

地址:

100085北京市海淀区上地信息路2号2-1号C栋1层

优先权:

专利代理机构:

北京安信方达知识产权代理有限公司11262

代理人:

王丹; 李丹

PDF下载: PDF下载
内容摘要

本发明提供了一种双控之间通信方法,包括:基于PCI Express NTB,在第一主机和第二主机之间进行地址翻译;NTB中包括门铃寄存器,通过门铃寄存器在第一主机和第二主机之间发送中断,实现第一主机和第二主机之间的通信。本发明适用于本地系统的第一主机和远端系统的第二主机之间,能够简化协议,并能够保证数据的安全可靠。

权利要求书

权利要求书1.  一种双控之间通信方法,其特征在于,包括: 基于外设部件互连标准PCI Express非透明桥NTB,在第一主机和第二 主机之间进行地址翻译,其中第一主机为主设备,第二主机为从设备; 所述NTB中包括门铃寄存器,通过所述门铃寄存器在第一主机和第二主 机之间发送中断,实现第一主机和第二主机之间的通信。 2.  根据权利要求1所述的双控之间通信方法,其特征在于,所述基于 PCI Express NTB,在第一主机和第二主机之间进行地址翻译,包括: 在第一主机和第二主机通信链路建立时,建立第一主机和第二主机之间 内存区域的地址映射关系,当第一主机和第二主机之的内存区域进行地址映 射时,进行地址翻译。 3.  根据权利要求2所述的双控之间通信方法,其特征在于,所述当第 一主机和第二主机之的内存区域进行地址映射时,进行地址翻译,包括:当 第一主机和第二主机之的内存区域进行地址映射时,通过基地址寄存器BAR 在基址上加上一偏移量进行地址翻译。 4.  根据权利要求1所述的双控之间通信方法,其特征在于,所述第一 主机和第二主机之间的通信,包括第一主机向第二主机发送数据和第二主机 从第一主机接收数据。 5.  根据权利要求4所述的双控之间通信方法,其特征在于,所述第一 主机向第二主机发送数据,包括: 第一主机接收第二主机发送的数据请求; 如果发送队列中有自由入口free_entry,第一主机从所述发送队列的 tx_free_q中获取free_entry,对所述free_entry进行填充形成填充入口 pend_entry,将pend_entry放入到发送队列的tx_pend_q中,通过异步发送队 列向第二主机发送数据,其中,所述tx_free_q在发送队列中保存free_entry, 所述tx_pend_q在发送队列中保存pend_entry; 数据发送完后,第一主机向第二主机发起中断,并通知第二主机接收数 据; 释放free_entry,并将free_entry添加到tx_free_q中。 6.  根据权利要求4所述的双控之间通信方法,其特征在于,所述第二 主机从第一主机接收数据,包括: 第二主机在接收到第一主机发起的中断后,从接收队列的rx_free_q中获 取free entry,获取到free_entry后,对所述free_entry进行填充形成pend_entry, 将所述pend_entry添加至接收队列的rx_pend_q,并唤醒线程进行数据接收, 通过异步接收队列进行数据接收,其中,所述rx_free_q在接收队列中保存 free_entry,所述rx_pend_q在接收队列中保存pend_entry; 接收完数据后,第二主机判断第一主机是否是进入了发送拥塞状态,如 果没有发送拥塞,第二主机向第一主机发起中断,并通知第一主机进行数据 发送; 释放free_entry,并将free_entry添加到tx_free_q中。 7.  根据权利要求5或6所述的双控之间通信方法,其特征在于,所述 PCI Express使用数据包做数据请求传输单位,所述数据包包括传输层协议包 头head_type、应用层包头APL_head、数据Data和完成标志Doen_flag。 8.  根据权利要求5或6所述的双控之间通信方法,其特征在于,所述 对free_entry进行填充,包括:在free_entry中填充包头类型、值和长度及发 送的状态。 9.  根据权利要求6所述的双控之间通信方法,其特征在于,所述第二 主机判断第一主机是否是进入了发送拥塞状态,包括:判断第二主机发送的 index等于第一主机接收的index,如果相等,则第一主机进入了发送拥塞状 态。

说明书

说明书双控之间通信方法和系统
技术领域
本发明涉及存储系统技术领域,尤其涉及一种双控之间通信方法和系统。
背景技术
目前,双控磁盘阵列已经成为构建大规模存储系统的基本组成单元,双控之间的通信作为磁盘阵列的核心部件,它的性能直接决定磁盘阵列的性能。因此,设计和实现高可靠性和高可用性的双控通信方法成为了存储系统中研究的热点问题。对现代企业来说,利用计算机系统来提供及时可靠的信息和服务是必不可少的,另一方面,计算机硬件和软件都不可避免地会发生故障,这些故障有可能给企业打来极大的损失,甚至将正在使用的服务或者进程终止,严重的造成网络的瘫痪。
作为传输通道而言,随着存储容量和需求的增长,在一个存储系统的设计之中,数据传输通道的优劣可以直接的影响着存储系统的整体性能的发挥。可以说,一个好的存储系统和高速快捷的传输通道是分不开的。
传统的双控之间通信利用万兆网卡,基于传输控制协议(TCP,Transmission Control Protocol)/因特网互联协议(IP,Internet Protocol)协议,实现多种数据的传输通信。TCP/IP协议适合于远距离传输,支持的主机个数非常多,但通信协议包与包头较为复杂,处理时需占用中央处理器(CPU,Central Processing Unit)资源也较多,因此,传统的双控之间通信适合于较为复杂、多主机的通信环境,而对于双控之间环境简单、传输距离近、主机个数少的通信环境,使用TCP/IP协议并不合适。
发明内容
为了解决上述技术问题,本发明提供了一种双控之间通信方法和系统,能够简化协议,并能够保证数据的安全可靠。
为了达到本发明目的,本发明提供了一种双控之间通信方法,包括:基于PCI Express NTB,在第一主机和第二主机之间进行地址翻译;NTB中包 括门铃寄存器,通过门铃寄存器在第一主机和第二主机之间发送中断,实现第一主机和第二主机之间的通信。
进一步地,基于PCI Express NTB,在第一主机和第二主机之间进行地址翻译,包括:在第一主机和第二主机通信链路建立时,建立第一主机和第二主机之间内存区域的地址映射关系,当第一主机和第二主机之的内存区域进行地址映射时,进行地址翻译。
进一步地,当第一主机和第二主机之的内存区域进行地址映射时,进行地址翻译,包括:当第一主机和第二主机之的内存区域进行地址映射时,通过基地址寄存器BAR在基址上加上一偏移量进行地址翻译。
进一步地,第一主机和第二主机之间的通信,包括第一主机向第二主机发送数据和第二主机从第一主机接收数据。
进一步地,第一主机向第二主机发送数据,包括:第一主机接收第二主机发送的数据请求;如果发送队列中有自由入口free_entry,第一主机从所述发送队列的tx_free_q中获取free_entry,对free_entry进行填充形成填充入口pend_entry,将pend_entry放入到发送队列的tx_pend_q中,通过异步发送队列向第二主机发送数据,其中,tx_free_q在发送队列中保存free_entry,tx_pend_q在发送队列中保存pend_entry;数据发送完后,第一主机向第二主机发起中断,并通知第二主机接收数据;释放free_entry,并将free_entry添加到tx_free_q中。
进一步地,第二主机从第一主机接收数据,包括:第二主机在接收到第一主机发起的中断后,从接收队列的rx_free_q中获取free entry,获取到free_entry后,对free_entry进行填充形成pend_entry,将pend_entry添加至接收队列的rx_pend_q,并唤醒线程进行数据接收,通过异步接收队列进行数据接收,其中,rx_free_q在接收队列中保存free_entry,rx_pend_q在接收队列中保存pend_entry;接收完数据后,第二主机判断第一主机是否是进入了发送拥塞状态,如果没有发送拥塞,第二主机向第一主机发起中断,并通知第一主机进行数据发送;释放free_entry,并将free_entry添加到tx_free_q中。
进一步地,PCI Express使用数据包做数据请求传输单位,所述数据包包 括传输层协议包头head_type、应用层包头APL_head、数据Data和完成标志Doen_flag。
进一步地,对free_entry进行填充,包括:在free_entry中填充包头类型、值和长度及发送的状态。
进一步地,第二主机判断第一主机是否是进入了发送拥塞状态,包括:判断第二主机发送的index等于第一主机接收的index,如果相等,则第一主机进入了发送拥塞状态。
与现有技术相比,本发明包括:基于PCI Express NTB,在第一主机和第二主机之间进行地址翻译;NTB中包括门铃寄存器,通过门铃寄存器在第一主机和第二主机之间发送中断,实现第一主机和第二主机之间的通信。本发明针对双控之间环境简单、传输距离近、主机个数少的通信环境,通过在通信链路建立时进行地址翻译,地址翻译实现双控之间的内存区域的物理隔离和逻辑一致性;通过Doorbell寄存器与内存地址映射实现双控之间的通信,基于PCI Express的通信方式保证了数据存储的安全性,并提高了传输带宽。
附图说明
图1是本发明PCI Express进行互联通信的系统框架图。
图2是本发明双控之间通信方法的流程示意图。
图3是本发明从主设备端地址映射到从设备端地址的偏移过程的流程示意图。
图4是本发明第一主机向第二主机发送数据的流程示意图。
图5是本发明第二主机从第一主机接收数据的流程示意图。
具体实施方式
下面结合附图对本发明进行进一步的详细说明。通过足够详细的描述这些实施示例,使得本领域技术人员能够实践本发明。在不脱离本发明的主旨和范围的情况下,可以对实施做出逻辑的、实现的和其他的改变。
外设部件互连标准(PCI Express,Peripheral Component Interconnect Express)非透明桥(NTB,Non-Transparent Bridge)技术是一个新的互连标 准,该技术适用于高性能的芯片到芯片、板子到板子、背板和机箱之间的互连。PCI Express是基于层次化的、高速的串行通信技术,其协议栈可分为物理层、数据链路层和传输层。物理层包括低电压差分信号的高速串行接口、8B/10B编码以及AC耦合差分信号。PCI Express允许将多个通道合并成一个更大更宽的端口,如x1x2……直到x32。数据链路层可支持与临近PCIExpress实体交换数据包,同时支持数据完整性(data integrity)和顺序性检查,以及数据包的确认和流量控制的能力。传输层可在主机和终端设备间传送读/写请求,并可选择性的提供传输层的端到端(end-to-end)数据包的完整性检查(CRC-32)。双控磁盘阵列高速数据PCI Express同步通道,采用的是PCI Express的传输协议,可以提供高速的I/O扩展模式。
本发明双控之间通信方法适用于本地系统的第一主机和远端系统的第二主机之间,提供一种高性能、低开销的通信方法。图1是PCI Express进行互联通信的系统框架图。
如图1所示,基于PCI Express的NTB提供了两个主机系统,例如Host A和Host B,之间内存映射的功能,Host A和Host B分别包括应用层、传输层和物理层,应用层中包括虚拟网卡和高速通信,此外还分别包括接收区和发送区,由于NTB内存映射为单向传输,因此需要分开接收区和发送区,本端发送区即为映射的对端接收区,本端接收区需要映射至对端的发送区。
图2是本发明双控之间通信方法的流程示意图,如图2所示,具体可以包括:
步骤21,利用PCI Express NTB,在第一主机和第二主机之间进行地址翻译,其中第一主机为主设备,第二主机为从设备。
在本步骤中,地址翻译在通信链路建立时完成,具体地,在第一主机和第二主机通信链路建立时,建立第一主机和第二主机之间内存区域的地址映射关系,当第一主机和第二主机之的内存区域进行地址映射时,进行地址翻译。
在NTB环境中,PCI Express系统需要在从一个内存地址空间映射到另一个地址空间时进行地址翻译。每一个NTB端口都具有两组基地址寄存器(BAR,Base Address Register),一组应用于主设备端,另一组应用于从设 备端。基地址寄存器可用来定义在非透明桥另一端的内存地址空间的地址翻译窗口,并允许该翻译被映射到本地的内存或I/O空间。每个BAR定义了一个设置寄存器(Setup Register)可用来定义窗口的大小、类型以及一个地址翻译寄存器。与透明桥基于总线转发所有私有寄存器(CSR,Control and Status Register)不同,非透明桥设备只接受针对本设备的CSR。
地址翻译有查表地址翻译和直接地址翻译,其中,查表地址翻译是通过查找表对事务进行地址翻译,地址中的索引域可通过编程来调节窗口大小,通常索引被用来提供新内存地址的高位比特;直接地址翻译是在地址翻译的过程是基于事务终结的BAR基址加上一个偏移量,可如图3所示的从主设备端地址(Primary Address Map)映射到从设备端地址(Secondary Address Map)的偏移(offset)过程。
地址翻译实现了双控之间内存区域的物理隔离和逻辑一致性。允许第一控制器独立配置和控制本地的子系统,提供远程内存区域和本地内存区域的隔离,启用两个内存区域之间的状态和数据交换。这样,保证了第一控制器和第二控制器之间内存区域在建立映射之后,通过向发送区和接收区写入数据,实现数据传输。
步骤22,NTB中包括门铃(doorbell)寄存器,通过doorbell寄存器在第一主机和第二主机之间发送中断,实现第一主机和第二主机之间的通信。
在本步骤中,NTB允许桥两边的主机通过便笺寄存器、门铃寄存器和心跳消息来交换状态信息。其中,便笺寄存器在NTB的两端都是可读写的,它们可以被桥两边的设备用来传送状态信息,也可作为通用的可读可写寄存器使用;门铃寄存器被用来从NTB的一边向另一边发送中断,NTB的两边一般都有软件可以控制的中断请求寄存器和相应的中断屏蔽寄存器,这些寄存器在NTB的两边都是可以被访问的。
具体地,通过doorbell寄存器在第一主机和第二主机之间发送中断,实现第一主机和第二主机之间的通信,包括发送流程和接收流程,其中,
发送流程可以参考图4所示,具体包括如下步骤:
步骤221,第一主机接收第二主机发送的数据请求;
具体地,PCI Express使用数据包做数据请求传输单位,使用包封装协议来保证数据包的有效性、完整性和有序性。由于PCI Express用于双控之间互联通信环境,因此没有使用传统的OS七层协议封装,而使用简单的数据包协议封装。
第一主机和第二主机之间通信的数据包结构,包括:head_type为传输层协议包头,APL_head为应用层包头。Data为上层提交的数据请求。Doen_flag对应完成标志,用于检测数据请求释放全部传输完毕。
步骤222、判断发送队列中是否有自由入口(free_entry),如果有,进入步骤223,如果没有,返回错误;
具体地,在发送队列中包括tx_free_q参数,该tx_free_q用于保存free_entry,则NTB传输层判断发送队列的tx_free_q中是否有free_entry,如果可以从tx_free_q中获取到free_entry,则表示发送队列中有free_entry;如果没有获取到free_entry,则向应用层返回错误,返回上层应用重试,如果可以起到拥塞控制的作用。
步骤223,获取到free_entry后,对该free_entry进行填充形成填充入口(pend_entry),将pend_entry放入到发送队列的tx_pend_q中,通过异步发送队列进行数据发送。
具体地,获取到free_entry后,对该free_entry进行填充,该填充包括记录包头类型、值和长度及发送的状态,填充完成形成pend_entry。
在发送队列中还包括tx_pend_q参数,该tx_pend_q用于保存pend_entry。
步骤224,发送完后,向第二主机发起中断,并通知第二主机接收数据;
步骤225,释放free_entry,并将free_entry添加到tx_free_q中。
接收流程可以参考图5所示,具体包括如下步骤:
步骤226,第二主机在接收到第一主机发起的中断后,从接收队列中获取free entry;
具体地,接收队列中包括rx_free_q参数,该rx_free_q用于保存free entry。当第二主机在接收到第一主机发起的中断后,从rx_free_q中获取free entry。
步骤227,获取到free_entry后,对该free_entry进行填充形成pend_entry, 将该pend_entry添加至rx_pend_q,并唤醒线程进行数据接收。
具体地,接收队列中包括rx_pend_q参数,该rx_pend_q用于保存pend_entry。
该线程的作用是监听处理接收,只要收到中断,就唤醒线程触发接收过程。
步骤228,通过异步接收队列进行数据接收。
步骤229,接收完数据后,判断第一主机是否是进入了发送拥塞状态,如果发生了发送拥塞,则进行等待;如果没有发生发送拥塞,进入步骤130;
具体地,当第二主机的发送命令的index等于第一主机接收的index时,表明发送忙,也即出现了发送拥塞状态。
步骤230,向第一主机发起中断,并通知第一主机进行数据发送。
步骤231,释放free_entry,并将free_entry添加到tx_free_q中。
本发明针对双控之间环境简单、传输距离近、主机个数少的通信环境,通过在通信链路建立时进行地址翻译,地址翻译实现双控之间的内存区域的物理隔离和逻辑一致性;通过Doorbell寄存器与内存地址映射实现双控之间的通信,基于PCI Express的通信方式保证了数据存储的安全性,并提高了传输带宽。
应当理解,虽然本说明书根据实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施方式中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用于限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。

双控之间通信方法和系统.pdf_第1页
第1页 / 共12页
双控之间通信方法和系统.pdf_第2页
第2页 / 共12页
双控之间通信方法和系统.pdf_第3页
第3页 / 共12页
点击查看更多>>
资源描述

《双控之间通信方法和系统.pdf》由会员分享,可在线阅读,更多相关《双控之间通信方法和系统.pdf(12页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 (43)申请公布日 (21)申请号 201410510221.3(22)申请日 2014.09.28H04L 29/08(2006.01)H04L 29/12(2006.01)(71)申请人 浪潮(北京)电子信息产业有限公司地址 100085 北京市海淀区上地信息路 2 号2-1号C栋1层(72)发明人 刘变红 闫永刚 吴庆民(74)专利代理机构 北京安信方达知识产权代理有限公司 11262代理人 王丹 李丹(54) 发明名称双控之间通信方法和系统(57) 摘要本发明提供了一种双控之间通信方法,包括 :基于PCI Express NTB,在第一主机和第二主机之间进行地址翻译。

2、 ;NTB 中包括门铃寄存器,通过门铃寄存器在第一主机和第二主机之间发送中断,实现第一主机和第二主机之间的通信。本发明适用于本地系统的第一主机和远端系统的第二主机之间,能够简化协议,并能够保证数据的安全可靠。(51)Int.Cl.(19)中华人民共和国国家知识产权局(12)发明专利申请权利要求书2页 说明书5页 附图4页(10)申请公布号 CN 104486365 A(43)申请公布日 2015.04.01CN 104486365 A1/2 页21.一种双控之间通信方法,其特征在于,包括 :基于外设部件互连标准 PCI Express 非透明桥 NTB,在第一主机和第二主机之间进行地址翻译,其。

3、中第一主机为主设备,第二主机为从设备 ;所述 NTB 中包括门铃寄存器,通过所述门铃寄存器在第一主机和第二主机之间发送中断,实现第一主机和第二主机之间的通信。2.根据权利要求 1 所述的双控之间通信方法,其特征在于,所述基于 PCI Express NTB,在第一主机和第二主机之间进行地址翻译,包括 :在第一主机和第二主机通信链路建立时,建立第一主机和第二主机之间内存区域的地址映射关系,当第一主机和第二主机之的内存区域进行地址映射时,进行地址翻译。3.根据权利要求 2 所述的双控之间通信方法,其特征在于,所述当第一主机和第二主机之的内存区域进行地址映射时,进行地址翻译,包括 :当第一主机和第二。

4、主机之的内存区域进行地址映射时,通过基地址寄存器 BAR 在基址上加上一偏移量进行地址翻译。4.根据权利要求 1 所述的双控之间通信方法,其特征在于,所述第一主机和第二主机之间的通信,包括第一主机向第二主机发送数据和第二主机从第一主机接收数据。5.根据权利要求 4 所述的双控之间通信方法,其特征在于,所述第一主机向第二主机发送数据,包括 :第一主机接收第二主机发送的数据请求 ;如果发送队列中有自由入口 free_entry,第一主机从所述发送队列的 tx_free_q 中获取 free_entry,对所述 free_entry 进行填充形成填充入口 pend_entry,将 pend_entr。

5、y放入到发送队列的 tx_pend_q 中,通过异步发送队列向第二主机发送数据,其中,所述 tx_free_q 在发送队列中保存 free_entry,所述 tx_pend_q 在发送队列中保存 pend_entry ;数据发送完后,第一主机向第二主机发起中断,并通知第二主机接收数据 ;释放 free_entry,并将 free_entry 添加到 tx_free_q 中。6.根据权利要求 4 所述的双控之间通信方法,其特征在于,所述第二主机从第一主机接收数据,包括 :第二主机在接收到第一主机发起的中断后,从接收队列的rx_free_q中获取free entry,获取到 free_entry 。

6、后,对所述 free_entry 进行填充形成 pend_entry,将所述 pend_entry 添加至接收队列的 rx_pend_q,并唤醒线程进行数据接收,通过异步接收队列进行数据接收,其中,所述 rx_free_q 在接收队列中保存 free_entry,所述 rx_pend_q 在接收队列中保存 pend_entry ;接收完数据后,第二主机判断第一主机是否是进入了发送拥塞状态,如果没有发送拥塞,第二主机向第一主机发起中断,并通知第一主机进行数据发送 ;释放 free_entry,并将 free_entry 添加到 tx_free_q 中。7.根据权利要求 5 或 6 所述的双控之间。

7、通信方法,其特征在于,所述 PCI Express 使用数据包做数据请求传输单位,所述数据包包括传输层协议包头 head_type、应用层包头APL_head、数据 Data 和完成标志 Doen_flag。8.根据权利要求 5 或 6 所述的双控之间通信方法,其特征在于,所述对 free_entry 进行填充,包括 :在 free_entry 中填充包头类型、值和长度及发送的状态。9.根据权利要求 6 所述的双控之间通信方法,其特征在于,所述第二主机判断第一权 利 要 求 书CN 104486365 A2/2 页3主机是否是进入了发送拥塞状态,包括 :判断第二主机发送的 index 等于第一。

8、主机接收的index,如果相等,则第一主机进入了发送拥塞状态。权 利 要 求 书CN 104486365 A1/5 页4双控之间通信方法和系统技术领域0001 本发明涉及存储系统技术领域,尤其涉及一种双控之间通信方法和系统。背景技术0002 目前,双控磁盘阵列已经成为构建大规模存储系统的基本组成单元,双控之间的通信作为磁盘阵列的核心部件,它的性能直接决定磁盘阵列的性能。因此,设计和实现高可靠性和高可用性的双控通信方法成为了存储系统中研究的热点问题。对现代企业来说,利用计算机系统来提供及时可靠的信息和服务是必不可少的,另一方面,计算机硬件和软件都不可避免地会发生故障,这些故障有可能给企业打来极大。

9、的损失,甚至将正在使用的服务或者进程终止,严重的造成网络的瘫痪。0003 作为传输通道而言,随着存储容量和需求的增长,在一个存储系统的设计之中,数据传输通道的优劣可以直接的影响着存储系统的整体性能的发挥。可以说,一个好的存储系统和高速快捷的传输通道是分不开的。0004 传统的双控之间通信利用万兆网卡,基于传输控制协议(TCP,Transmission Control Protocol)/ 因特网互联协议 (IP,Internet Protocol) 协议,实现多种数据的传输通信。TCP/IP协议适合于远距离传输,支持的主机个数非常多,但通信协议包与包头较为复杂,处理时需占用中央处理器 (CPU。

10、,Central Processing Unit) 资源也较多,因此,传统的双控之间通信适合于较为复杂、多主机的通信环境,而对于双控之间环境简单、传输距离近、主机个数少的通信环境,使用 TCP/IP 协议并不合适。发明内容0005 为了解决上述技术问题,本发明提供了一种双控之间通信方法和系统,能够简化协议,并能够保证数据的安全可靠。0006 为了达到本发明目的,本发明提供了一种双控之间通信方法,包括:基于PCI Express NTB,在第一主机和第二主机之间进行地址翻译 ;NTB 中包 括门铃寄存器,通过门铃寄存器在第一主机和第二主机之间发送中断,实现第一主机和第二主机之间的通信。0007 。

11、进一步地,基于 PCI Express NTB,在第一主机和第二主机之间进行地址翻译,包括 :在第一主机和第二主机通信链路建立时,建立第一主机和第二主机之间内存区域的地址映射关系,当第一主机和第二主机之的内存区域进行地址映射时,进行地址翻译。0008 进一步地,当第一主机和第二主机之的内存区域进行地址映射时,进行地址翻译,包括 :当第一主机和第二主机之的内存区域进行地址映射时,通过基地址寄存器 BAR 在基址上加上一偏移量进行地址翻译。0009 进一步地,第一主机和第二主机之间的通信,包括第一主机向第二主机发送数据和第二主机从第一主机接收数据。0010 进一步地,第一主机向第二主机发送数据,包。

12、括 :第一主机接收第二主机发送的数据请求 ;如果发送队列中有自由入口 free_entry,第一主机从所述发送队列的 tx_free_q说 明 书CN 104486365 A2/5 页5中获取 free_entry,对 free_entry 进行填充形成填充入口 pend_entry,将 pend_entry 放入到发送队列的 tx_pend_q 中,通过异步发送队列向第二主机发送数据,其中,tx_free_q在发送队列中保存 free_entry,tx_pend_q 在发送队列中保存 pend_entry ;数据发送完后,第一主机向第二主机发起中断,并通知第二主机接收数据 ;释放 free_。

13、entry,并将 free_entry 添加到 tx_free_q 中。0011 进一步地,第二主机从第一主机接收数据,包括 :第二主机在接收到第一主机发起的中断后,从接收队列的 rx_free_q 中获取 free entry,获取到 free_entry 后,对 free_entry 进行填充形成 pend_entry,将 pend_entry 添加至接收队列的 rx_pend_q,并唤醒线程进行数据接收,通过异步接收队列进行数据接收,其中,rx_free_q 在接收队列中保存free_entry,rx_pend_q 在接收队列中保存 pend_entry ;接收完数据后,第二主机判断第一。

14、主机是否是进入了发送拥塞状态,如果没有发送拥塞,第二主机向第一主机发起中断,并通知第一主机进行数据发送 ;释放 free_entry,并将 free_entry 添加到 tx_free_q 中。0012 进一步地,PCI Express 使用数据包做数据请求传输单位,所述数据包包 括传输层协议包头 head_type、应用层包头 APL_head、数据 Data 和完成标志 Doen_flag。0013 进一步地,对free_entry进行填充,包括 :在free_entry中填充包头类型、值和长度及发送的状态。0014 进一步地,第二主机判断第一主机是否是进入了发送拥塞状态,包括 :判断第二。

15、主机发送的 index 等于第一主机接收的 index,如果相等,则第一主机进入了发送拥塞状态。0015 与现有技术相比,本发明包括 :基于 PCI Express NTB,在第一主机和第二主机之间进行地址翻译 ;NTB 中包括门铃寄存器,通过门铃寄存器在第一主机和第二主机之间发送中断,实现第一主机和第二主机之间的通信。本发明针对双控之间环境简单、传输距离近、主机个数少的通信环境,通过在通信链路建立时进行地址翻译,地址翻译实现双控之间的内存区域的物理隔离和逻辑一致性 ;通过 Doorbell 寄存器与内存地址映射实现双控之间的通信,基于 PCI Express 的通信方式保证了数据存储的安全性。

16、,并提高了传输带宽。附图说明0016 图 1 是本发明 PCI Express 进行互联通信的系统框架图。0017 图 2 是本发明双控之间通信方法的流程示意图。0018 图 3 是本发明从主设备端地址映射到从设备端地址的偏移过程的流程示意图。0019 图 4 是本发明第一主机向第二主机发送数据的流程示意图。0020 图 5 是本发明第二主机从第一主机接收数据的流程示意图。具体实施方式0021 下面结合附图对本发明进行进一步的详细说明。通过足够详细的描述这些实施示例,使得本领域技术人员能够实践本发明。在不脱离本发明的主旨和范围的情况下,可以对实施做出逻辑的、实现的和其他的改变。0022 外 设。

17、 部 件 互 连 标 准 (PCI Express,Peripheral Component Interconnect Express) 非透明桥 (NTB,Non-Transparent Bridge) 技术是一个新的互连标 准,该技术适用于高性能的芯片到芯片、板子到板子、背板和机箱之间的互连。PCI Express 是基于层说 明 书CN 104486365 A3/5 页6次化的、高速的串行通信技术,其协议栈可分为物理层、数据链路层和传输层。物理层包括低电压差分信号的高速串行接口、8B/10B 编码以及 AC 耦合差分信号。PCI Express 允许将多个通道合并成一个更大更宽的端口,如。

18、 x1x2直到 x32。数据链路层可支持与临近PCIExpress 实体交换数据包,同时支持数据完整性 (data integrity) 和顺序性检查,以及数据包的确认和流量控制的能力。传输层可在主机和终端设备间传送读 / 写请求,并可选择性的提供传输层的端到端 (end-to-end) 数据包的完整性检查 (CRC-32)。双控磁盘阵列高速数据 PCI Express 同步通道,采用的是 PCI Express 的传输协议,可以提供高速的 I/O扩展模式。0023 本发明双控之间通信方法适用于本地系统的第一主机和远端系统的第二主机之间,提供一种高性能、低开销的通信方法。图1是PCI Expr。

19、ess进行互联通信的系统框架图。0024 如图 1 所示,基于 PCI Express 的 NTB 提供了两个主机系统,例如 Host A 和 Host B,之间内存映射的功能,Host A 和 Host B 分别包括应用层、传输层和物理层,应用层中包括虚拟网卡和高速通信,此外还分别包括接收区和发送区,由于 NTB 内存映射为单向传输,因此需要分开接收区和发送区,本端发送区即为映射的对端接收区,本端接收区需要映射至对端的发送区。0025 图 2 是本发明双控之间通信方法的流程示意图,如图 2 所示,具体可以包括 :0026 步骤 21,利用 PCI Express NTB,在第一主机和第二主机。

20、之间进行地址翻译,其中第一主机为主设备,第二主机为从设备。0027 在本步骤中,地址翻译在通信链路建立时完成,具体地,在第一主机和第二主机通信链路建立时,建立第一主机和第二主机之间内存区域的地址映射关系当第一主机和第二主机之的内存区域进行地址映射时,进行地址翻译。0028 在 NTB 环境中,PCI Express 系统需要在从一个内存地址空间映射到另一个地址空间时进行地址翻译。每一个 NTB 端口都具有两组基地址寄存器 (BAR,Base Address Register),一组应用于主设备端,另一组应用于从设 备端。基地址寄存器可用来定义在非透明桥另一端的内存地址空间的地址翻译窗口,并允许。

21、该翻译被映射到本地的内存或 I/O 空间。每个 BAR 定义了一个设置寄存器 (Setup Register) 可用来定义窗口的大小、类型以及一个地址翻译寄存器。与透明桥基于总线转发所有私有寄存器 (CSR,Control and Status Register) 不同,非透明桥设备只接受针对本设备的 CSR。0029 地址翻译有查表地址翻译和直接地址翻译,其中,查表地址翻译是通过查找表对事务进行地址翻译,地址中的索引域可通过编程来调节窗口大小,通常索引被用来提供新内存地址的高位比特 ;直接地址翻译是在地址翻译的过程是基于事务终结的 BAR 基址加上一个偏移量,可如图 3 所示的从主设备端地址。

22、 (Primary Address Map) 映射到从设备端地址 (Secondary Address Map) 的偏移 (offset) 过程。0030 地址翻译实现了双控之间内存区域的物理隔离和逻辑一致性。允许第一控制器独立配置和控制本地的子系统,提供远程内存区域和本地内存区域的隔离,启用两个内存区域之间的状态和数据交换。这样,保证了第一控制器和第二控制器之间内存区域在建立映射之后,通过向发送区和接收区写入数据,实现数据传输。0031 步骤 22,NTB 中包括门铃 (doorbell) 寄存器,通过 doorbell 寄存器在第一主机和第二主机之间发送中断,实现第一主机和第二主机之间的通。

23、信。说 明 书CN 104486365 A4/5 页70032 在本步骤中,NTB 允许桥两边的主机通过便笺寄存器、门铃寄存器和心跳消息来交换状态信息。其中,便笺寄存器在 NTB 的两端都是可读写的,它们可以被桥两边的设备用来传送状态信息,也可作为通用的可读可写寄存器使用 ;门铃寄存器被用来从 NTB 的一边向另一边发送中断,NTB 的两边一般都有软件可以控制的中断请求寄存器和相应的中断屏蔽寄存器,这些寄存器在 NTB 的两边都是可以被访问的。0033 具体地,通过 doorbell 寄存器在第一主机和第二主机之间发送中断,实现第一主机和第二主机之间的通信,包括发送流程和接收流程,其中,003。

24、4 发送流程可以参考图 4 所示,具体包括如下步骤 :0035 步骤 221,第一主机接收第二主机发送的数据请求 ;0036 具体地,PCI Express 使用数据包做数据请求传输单位,使用包封装协议来保证数据包的有效性、完整性和有序性。由于 PCI Express 用于双控之间互联通信环境,因此没有使用传统的 OS 七层协议封装,而使用简单的数据包协议封装。0037 第一主机和第二主机之间通信的数据包结构,包括 :head_type 为传输层协议包头,APL_head 为应用层包头。Data 为上层提交的数据请求。Doen_flag 对应完成标志,用于检测数据请求释放全部传输完毕。0038。

25、 步骤 222、判断发送队列中是否有自由入口 (free_entry),如果有,进入步骤 223,如果没有,返回错误 ;0039 具体地,在发送队列中包括 tx_free_q 参数,该 tx_free_q 用于保存 free_entry,则 NTB 传输层判断发送队列的 tx_free_q 中是否有 free_entry,如果可以从 tx_free_q 中获取到 free_entry,则表示发送队列中有 free_entry ;如果没有获取到 free_entry,则向应用层返回错误,返回上层应用重试,如果可以起到拥塞控制的作用。0040 步骤 223,获取到 free_entry 后,对该 。

26、free_entry 进行填充形成填充入口 (pend_entry),将pend_entry放入到发送队列的tx_pend_q中,通过异步发送队列进行数据发送。0041 具体地,获取到 free_entry 后,对该 free_entry 进行填充,该填充包括记录包头类型、值和长度及发送的状态,填充完成形成 pend_entry。0042 在发送队列中还包括 tx_pend_q 参数,该 tx_pend_q 用于保存 pend_entry。0043 步骤 224,发送完后,向第二主机发起中断,并通知第二主机接收数据 ;0044 步骤 225,释放 free_entry,并将 free_entr。

27、y 添加到 tx_free_q 中。0045 接收流程可以参考图 5 所示,具体包括如下步骤 :0046 步骤 226,第二主机在接收到第一主机发起的中断后,从接收队列中获取 free entry ;0047 具体地,接收队列中包括rx_free_q参数,该rx_free_q用于保存free entry。当第二主机在接收到第一主机发起的中断后,从 rx_free_q 中获取 free entry。0048 步骤 227,获取到 free_entry 后,对该 free_entry 进行填充形成 pend_entry, 将该 pend_entry 添加至 rx_pend_q,并唤醒线程进行数据接。

28、收。0049 具体地,接收队列中包括 rx_pend_q 参数,该 rx_pend_q 用于保存 pend_entry。0050 该线程的作用是监听处理接收,只要收到中断,就唤醒线程触发接收过程。0051 步骤 228,通过异步接收队列进行数据接收。0052 步骤 229,接收完数据后,判断第一主机是否是进入了发送拥塞状态,如果发生了说 明 书CN 104486365 A5/5 页8发送拥塞,则进行等待 ;如果没有发生发送拥塞,进入步骤 130 ;0053 具体地,当第二主机的发送命令的index等于第一主机接收的index时,表明发送忙,也即出现了发送拥塞状态。0054 步骤 230,向第一。

29、主机发起中断,并通知第一主机进行数据发送。0055 步骤 231,释放 free_entry,并将 free_entry 添加到 tx_free_q 中。0056 本发明针对双控之间环境简单、传输距离近、主机个数少的通信环境,通过在通信链路建立时进行地址翻译,地址翻译实现双控之间的内存区域的物理隔离和逻辑一致性 ;通过Doorbell寄存器与内存地址映射实现双控之间的通信,基于PCI Express的通信方式保证了数据存储的安全性,并提高了传输带宽。0057 应当理解,虽然本说明书根据实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施方式中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。0058 上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用于限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。说 明 书CN 104486365 A1/4 页9图1图2说 明 书 附 图CN 104486365 A2/4 页10图3说 明 书 附 图CN 104486365 A。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 电学 > 电通信技术


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1