一种存储设备中多路控制器间的通信方法及装置与流程

文档序号:13004509阅读:227来源:国知局
一种存储设备中多路控制器间的通信方法及装置与流程

本发明涉及通信技术领域,特别涉及一种存储设备中多路控制器间的通信方法及装置。



背景技术:

随着科技的发展,各种存储设备中多路控制器的横向扩展越来越流行,很多厂家就是利用这种横向扩展的方法对产品进行升级的。横向扩展是指在存储设备中添加新的多路控制器,与原来的多路控制器一起工作。有很多方法可以实现这种横向扩展,例如,传统网络、infinband、pcie等。尤其以pcie技术应用最广,用pcie技术实现横向扩展离不开pcie交换机,这里所说的交换机主要包括pcie芯片、多个pcie桥、自带非透明桥,有的还带有dma功能,并且支持多种配置,pcie芯片配置灵活,管理方便。

在存储设备的多路控制器中,每个多路控制器上都包含有多个cpu,并且cpu之间通常是通过qpi进行通信。但是qpi通信过程中,多路控制器之间数据传输效率低,更换不同硬件平台时软件开发周期长。

由此可见,如何克服qpi通信带来的数据传输效率低的问题是本领域技术人员亟待解决的问题。



技术实现要素:

本申请实施例提供了一种存储设备中多路控制器间的通信方法及装置,以解决现有技术中数据传输效率低的问题。

为解决上述技术问题,本发明提供了一种存储设备中多路控制器间的通信方法,包括:

开启所述存储设备中各多路控制器上的cpu的使能端;

所述存储设备上电后,对各所述多路控制器上的交换机进行枚举,并为各所述交换机分配各自存储空间;

判断所述交换机是否自带dma引擎,如果否,则根据目标ntb端口与目标cpu的对应关系,为所述交换机挂载与所述目标cpu对应的dma引擎。

优选地,所述交换机为pcie交换机。

优选地,所述dma引擎的工作方式具体为:通过描述符的方式工作。

优选地,所述描述符包括源地址、目的地址以及数据长度。

优选地,所述cpu使能端具体通过bios开启。

为解决上述技术问题,本发明还提供一种存储设备中多路控制器间的通信装置,包括:

开启单元,用于开启所述存储设备中各多路控制器上的cpu的使能端;

内存分配单元,用于对所述多路控制器上的交换机枚举后,为所述交换机分配各自的存储空间;

判断单元,用于判断所述交换机是否自带dma引擎,如果否,则触发挂载单元;

所述挂载单元,用于为所述交换机挂载与所述目标cpu对应的dma引擎。

优选地,所述交换机为pcie交换机。

优选地,所述dma引擎的工作方式具体为:通过描述符的方式工作。

优选地,所述描述符包括源地址、目的地址以及数据长度。

优选地,所述cpu使能端具体通过bios开启。

相对于现有技术,本发明所提供的存储设备中多路控制器间的通信方法及装置,当枚举出的多路控制器上的交换机本身不带dma引擎时,就会根据目标ntb端口与目标cpu的对应关系,为对应的交换机挂载目标cpu对应的dma引擎。由此可见,一方面,该交换机可通过挂载的dma引擎,实现各个多路控制器上cpu之间的数据传输,而不再像现有技术中需要通过qpi实现cpu之间的数据传输,进而提高了数据传输速率;另一方面,由于交换机所挂载的dma引擎是根据与ntb端口相对应的cpu的dma引擎得到的,因此,能够实现ntb端口与cpu的对应,进一步提高数据传输速率。另外,当更换不同硬件平台时,只需要为交换机挂载相适应的dma引擎即可,因此避免了软件开发周期长的问题。

附图说明

为了更清楚地说明本发明实施的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种存储设备中多路控制器间的通信方法的流程图;

图2为本发明实施例存储设备中多路控制器间进行ntb通信的硬件示意图;

图3为一个多路控制器的内部结构图;

图4为本发明实施例提供的一种存储设备中多路控制器间的通信装置组成示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明的核心是提供一种存储设备中多路控制器间的通信方法及装置,可以提高多路控制器之间数据传输效率,减少更换不同硬件平台时软件开发的周期。

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。

图1为本发明实施例存储设备中多路控制器间的通信方法流程图,如图1所示,包括以下步骤:

步骤s101:开启存储设备中各多路控制器上的cpu的使能端;

cpu使能端通过bios开启,只有开启多路控制器上cpu使能端后,系统内核才能使用该cpu的dma引擎。

步骤s102:存储设备上电后,对各多路控制器上的交换机进行枚举,并为各交换机分配各自存储空间;

在存储设备中,一般有不止一个多路控制器,每个多路控制器上都有交换机,系统需要实现多路控制器上cpu之间的数据传输时,就枚举出与之相对应的交换机,并为枚举出的交换机分配各自存储空间。

例如,现在需要实现第一多路控制器与第二多路控制器上cpu之间的数据传输,系统内核就自动的枚举出与第一多路控制器和第二多路控制器相对应的交换机,并为枚举出的交换机分配存储空间。在本申请实施例中所述的交换机为pice交换机,当然,也可以是其它符合要求的交换机,交换机的类型并不影响本申请实施例的实现。

步骤s103:判断枚举出的交换机是否自带dma引擎,如果否,则进入步骤s104;

步骤s104:根据目标ntb端口与目标cpu的对应关系,为枚举出的交换机挂载与目标cpu对应的dma引擎。

有的交换机自身带有dma引擎,而有的交换机自身不带有dma引擎,当交换机自身带有dma引擎时就使用交换机自带的dma引擎,如果交换机自身不带有dma引擎则根据交换机下行ntb端口寻找到对应的上行端口,该上行端口与下行ntb端口在同一个交换机上,根据上行端口的bus、device、function扫描寻找到与之相连接的cpu,并自动挂载该cpu的dma引擎。ntb端口通过使用对应cpu的dma引擎进行收发数据,实现各个多路控制器之间cpu的数据传输。

dma引擎其实是通过描述符的方式进行的,描述符里包括很多信息,例如,源地址、目的地址、数据长度,通常,这些描述符形成一个队列供dma引擎使用。

在本申请实施例中,当枚举出的多路控制器上的交换机本身不带dma引擎时,系统自动根据目标ntb端口与目标cpu的对应关系,为对应的交换机挂载目标cpu对应的dma引擎。实现各个多路控制器上cpu之间的数据传输,而不再像现有技术中需要通过qpi实现cpu之间的数据传输,进而提高了数据传输速率。

如图2、图3所示,图2为本发明实施例存储设备中多路控制器间进行ntb通信的硬件示意图;图3为一个多路控制器的内部结构图。

一个存储设备201中,包含多路控制器202,当然,也可以是单路控制器,不管是单路控制器还是多路控制器并不影响本申请实施例的实现。一个多路控制器202上有多个cpu,一个多路控制器202上的多个cpu之间可以进行数据传输,各个多路控制器202上的cpu之间也可以进行数据传输,即各个多路控制器202之间可以进行数据传输。

如图3所示,一个多路控制器202包括cpu0、cpu1、交换机pcieswitch,交换机pcieswitch在同一时刻可进行多个端口对之间的数据传输,交换机pcieswitch上有上行口和下行口nbt0、nbt1。在图3中只画出了cpu0、cpu1和ntb0、ntb1,下文统称cpu和ntb,cpu和ntb的个数不一定是两个,也可以是多个,它们的个数多少并不影响本申请实施例的实现。ntb端口又称作非透明桥端口,上行口可以与cpu的端口连接,ntb口可以与进行数据传输的另一个多路控制器202上的交换机的对应ntb口连接,数据是通过ntb口进行转发传输的。首先,创建ntb内核态处理事件主进程,用于管理整个ntb通信过程。在cpu复位、系统上电后对交换机pcieswitch进行枚举,交换机pcieswitch枚举成功后,系统识别出交换机pcieswitch上的透明桥与非透明桥nbt,cpu对枚举出的交换机pcieswitch进行初始化,并为相应的交换机pcieswitch分配存储空间。然后,系统内核软件会同时记录对应交换机pcieswitch的归属信息,根据交换机pcieswitch的归属信息,寻找与之对应的交换机pcieswitch的上行端口,并记录该交换机pcieswitch编号。当枚举到的交换机pcieswitch自身带有dma引擎时,就使用自带的dma引擎进行cpu之间的数据传输,如果枚举到的交换机pcieswitch自身不带有dma引擎则根据该交换机pcieswitch的nbt与cpu的对应关系,为该交换机pcieswitch挂载cpudma引擎,挂载cpu的dma引擎时,并不是基于cpu的具体型号进行查找,而是根据上行端口的交换机的编号进行检索,最后实现多路控制器202之间的数据传输。

在挂载相应cpu的dma引擎时,不是根据cpu的具体型号进行查找,而是根据上行端口的交换机的编号进行检索,所以当需要更换新的硬件平台时,例如,更换cpu型号,内核软件无需修改仍能自动寻找到对应的dma引擎并为交换机挂载使用,避免了软件开发周期长的问题。

上文中对于存储设备中多路控制器间的通信方法的实施例进行了详细描述,本发明实施例还提供了一种与该方法对应的存储设备中多路控制器间的通信装置。由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参照方法部分的实施例描述,这里不再赘述。

图4为该装置组成示意图,如图4所示,包括:开启单元401,内存分配单元402,判断单元403,挂载单元404;

开启单元401,用于开启存储设备中各多路控制器上的cpu的使能端;

内存分配单元402,用于对多路控制器上的交换机枚举后,并为交换机分配各自的存储空间;

判断单元403,用于判断枚举出的交换机是否自带dma引擎,如果否,则触发挂载单元;

挂载单元404,用于为枚举出的交换机挂载与目标cpu对应的dma引擎。

本实施例提供的存储设备中多路控制器间的通信装置,首先开启存储设备中各多路控制器上的cpu的使能端;然后对多路控制器上的交换进行机枚举,并为枚举出的交换机分配各自的存储空间;最后,系统自动判断枚举出的交换机是否自带dma引擎,如果否,则触发挂载单元为枚举到的交换机挂载与目标cpu对应的dma引擎。

由此可见,为枚举到的交换机挂载与目标cpu对应的dma引擎,实现了多路控制器之间的数据传输,不再是通过qpi实现数据传输,提高了数据传输效率。

作为优选地实施方式,交换机为pcie交换机。

作为优选地实施方式,dma引擎的工作方式具体为:通过描述符的方式工作。

作为优选地实施方式,描述符包括源地址、目的地址以及数据长度。

作为优选地实施方式,cpu使能端具体通过bios开启。

以上对本发明所提供的存储设备中多路控制器间的通信方法及装置进行了详细介绍。本文中运用几个实例对本发明的原理及实施方式进行了阐述,以上实施例的说明,只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制,本领域技术人员,在没有创造性劳动的前提下,对本发明所做出的修改、等同替换、改进等,均应包含在本申请中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1