FPGA片间互连的Crossbar交换单元设计方法与流程

文档序号:18791849发布日期:2019-09-29 18:57阅读:957来源:国知局
FPGA片间互连的Crossbar交换单元设计方法与流程

本发明属于通信技术领域,更进一步涉及一种crossbar交换单元的设计方法,可用于专用大容量交换机。



背景技术:

现有的单级交换网络结构主要有共享缓存交换结构和crossbar交换结构。共享缓存交换结构中所有待转发的数据分组都用一个统一的缓存来暂存,都通过同一条读写总线传输,简化了交换结构的内部逻辑设计,但是也限制了整个交换单元的吞吐量。crossbar交换结构可以实现多套总线同时传输,大大提升了交换容量。但是随着输入、输出端口数的增加,交叉节点数量和虚拟输出队列数量的增加,对fpga资源的需求也提出了更高的需求。

中国人民解放军理工大学在申请的专利文献“一种交叉点小缓存的高性能crossbar调度方法”(申请号200910233916.0,申请公开号cn101695052a,公开日为2010.04.14)中提出了一种交叉点小缓存的高性能crossbar调度方法,其包括排队技术和crossbar调度算法,此系统通过在交叉点设立较小容量的缓存,使分组在输入端和crossbar交叉点两处存储,解开了输入与输出调度匹配的耦合,具有高速、多端口、大容量的优点。但是此系统仍然存在一定的缺陷,其一,此方法只适用于交叉点数量较少的情况,当交叉点数量增多时,对缓存的需求大大提高;其二,此方法采用基于最长队列预测的轮转型调度算法,每次都优先调度队列最长的队列,当队列具有优先级时,不能支持队列的优先级调度。



技术实现要素:

本发明目的在于克服上述现有技术的不足,提出一种fpga片间互连的crossbar交换单元设计方法,以将交叉点网络分割为两部分设置在两个芯片上,降低单片fpga资源的占用比例,减小芯片资源对交换容量的限制,实现专用大容量交换机。

为实现上述目的,本发明的技术方案包括如下:

(1)确定数据帧要去往的交叉节点位置:

(1a)根据公平轮询调度算法轮询4个输出端口,选择状态指示为1的输出端口;

(1b)根据绝对优先级调度算法轮询所选输出端口下包含的8个优先级队列,从中选择一个非空队列;

(1c)判断非空队列对应的交叉节点缓存是否空闲:若空闲,则出队调度成功,并将调度信息写入对应优先级的出队调度信息fifo中;否则,等待直到该节点空闲;

(1d)根据绝对优先级调度算法轮询8个优先级的出队调度信息fifo,从中选择一个非空出队调度信息fifo,对其进行读取并解析,获得目的端口号;

(1e)根据目的端口号,确定数据帧要去往的交叉节点的位置:

若目的端口号为1、2中的任意一个,则数据帧要去往的交叉节点在第一个fpga中;

若目的端口号为3、4中的任意一个,则数据帧要去往的交叉节点在第二个fpga中;

(2)获取要添加的6个帧信息参数:单/多播标志位、优先级、帧长、交叉节点比特码表、总线比特码表参数、输出端口比特码表;

(3)对数据帧添加获取的6个帧信息参数:

(3a)设交换单元基于两个fpga芯片,共4个端口,每个fpga芯片都包括一个用于添加帧信息的内帧成帧模块及一个用于解析帧信息的内帧拆帧模块;

(3b)建立端口与总线的对应关系:

设置4条总线用来传输数据,将端口号为1的端口数据用第一条总线传输,将端口号为2的端口数据用第二条总线传输,将端口号为3的端口数据用第三条总线上进行传输,将端口号为4的端口数据用第四条总线传输;

(3c)将从端口进来要去往另一个fpga交叉节点的数据帧送至芯片上的内帧成帧模块,内帧成帧模块在该数据帧前添加(2)获取的6个帧信息参数,生成新的数据帧;

(4)将新的数据帧送至另一个fpga由另一个fpga上的内帧拆帧模块解析帧头信息,获取(3)添加的6个帧信息参数;

(5)根据(4)中获取的6个帧信息参数中的总线比特码表参数,确定数据帧对应的总线,即将总线比特码表参数中为1的比特位确定为数据帧对应的总线;

(6)根据(4)中获取的6个帧信息参数中的交叉节点比特码表参数,确定数据帧对应的交叉节点,即将比特码表参数中为1的比特位确定为数据帧对应的交叉节点,并将数据帧搬移至(5)所确定总线上的对应交叉节点;

(7)根据(4)中获取的6个帧信息参数中的输出端口比特码表参数,确定数据帧对应的输出端口,即将输出端口比特码表参数中为1的比特位确定为数据帧对应的输出端口,并将交叉节点处的数据帧搬移至对应输出端口。本发明与现有技术相比,具有以下优点:

第一,由于本发明将交叉节点网络分割为两部分设置在两个芯片上,有效地克服了现有技术中单片fpga资源对交换机容量的限制问题,提高了交换机容量。

第二,由于本发明将交叉节点网络分割为两部分设置在两个芯片上,将资源进行了重新分配,降低了单片fpga资源占用比例,提高了资源利用率。

附图说明

图1为本发明的实现框图;

图2为本发明中添加必要帧信息后的内帧格式图。

具体实施方式

下面结合附图对本发明的实施例做详细描述。

本实例是基于两个现场可编程逻辑门阵列芯片fpga1和fpga2进行分组交换,其中,第一现场可编程逻辑门阵列芯片包含端口号为1、2的两个输入输出端口、1个内帧成帧模块、1个内帧拆帧模块及规模为4×2的交叉节点网络。第二现场可编程逻辑门阵列芯片包含端口号为3、4的输入输出端口、1个内帧成帧模块、1个内帧拆帧模块及规模为4×2的交叉节点网络。这两个现场可编程逻辑门阵列芯片fpga1和fpga2通过两个使用aurora协议的高速串行收发器gtx相连,将数据帧从一个现场可编程逻辑门阵列芯片传输到另一个现场可编程逻辑门阵列芯片。

参照图1,本发明的实现步骤如下:

步骤1:将从输入端口进来的数据帧搬移至队列中。

1.1)根据fpga1和fpga2上的输出端口个数构建队列:

fpga1和fpga2上共有4个输出端口,给每个输出端口都分配8个队列用于表示数据帧的8个优先级,共构建32个队列;

1.2)根据从输入端口进来的数据帧的输出端口号和优先级将其搬移至对应队列中:

若输出端口号为1,优先级为n,则将该数据帧搬移至队列n中;

若输出端口号为2,优先级为n,则将该数据帧搬移至队列n+8中;

若输出端口号为3,优先级为n,则将该数据帧搬移至队列n+16中;

若输出端口号为4,优先级为n,则将该数据帧搬移至队列n+24中;

步骤2:确定数据帧要去往的交叉节点位置。

2.1)每个输出端口都设置一个状态指示,若该状态指示为1,表示有要去往该输出端口的数据帧在队列中等待;

2.2)根据公平轮询调度算法轮询4个输出端口,从中选择一个状态指示为1的输出端口,表示要将去往该输出端口的数据帧搬移至交叉节点,其轮询过程是先设当前输出端口号为n,下次再从输出端口号为n+1的输出端口开始轮询,输出端口号依次加1,当输出端口号加到4时,将输出端口号值赋为1,以此循环,直到从中找到一个状态指示为1的输出端口;

2.3)根据绝对优先级调度算法轮询所选输出端口下包含的8个优先级队列,从中选择一个非空队列,表示要将该优先级队列中的数据帧搬移至交叉节点,其轮询过程是:每次都从优先级为7的队列开始轮询,优先级依次减1,当优先级减到0时,将优先级值赋为7,以此循环,直到从中找到一个非空队列;

2.4)根据非空队列与交叉节点的对应关系判断交叉节点是否为空:

队列与交叉节点的对应关系如下:

队列1~8对应第一个交叉节点;

队列9~16对应第二个交叉节点;

队列17~24对应第三个交叉节点;

队列25~32对应第四个交叉节点;

若对应交叉节点为空,表示可以将该队列中的数据帧搬移至交叉节点,即出队调度成功,并将该数据帧的输出端口号和优先级等调度信息写入对应优先级的出队调度信息fifo中;否则,等待直到该节点为空;

2.5)根据绝对优先级调度算法轮询8个优先级的出队调度信息fifo,即每次都从优先级为7的出队调度信息fifo开始轮询,优先级依次减1,当优先级减到0时,将优先级值赋为7,以此循环,直到从中找到一个非空的出队调度信息fifo;

2.6)根据2.5)中绝对优先级调度算法从8个优先级的出队调度信息fifo中选择一个非空的出队调度信息fifo,对其进行读取并解析,获得目的端口号;

2.7)根据目的端口号,确定数据帧要去往的交叉节点的位置:

对于第一个fpga,若目的端口号为1、2中的任意一个,则数据帧要去往的交叉节点在本fpga中,执行步骤8;若目的端口号为3、4中的任意一个,则数据帧要去往的交叉节点在第二个fpga中,执行步骤3;

对于第二个fpga,若目的端口号为3、4中的任意一个,则数据帧要去往的交叉节点在本fpga中,执行步骤8;若目的端口号为1、2中的任意一个,则数据帧要去往的交叉节点在第一个fpga中,执行步骤3。

步骤3:获取要添加的6个帧信息参数。

5个帧信息参数包括单/多播标志位、优先级、帧长、交叉节点比特码表、总线比特码表参数、输出端口比特码表,其中:

所述单/多播标志位参数,其由数据帧帧头中的帧类型字段获取:若帧类型字段为单播,则该参数值为1;若帧类型字段为多播,则该参数值为0;

所述优先级参数,其由数据帧帧头中的优先级字段获取;

所述帧长参数,其通过计算数据帧的长度获取;

所述交叉节点比特码表参数,其由输出端口号获取:

若输出端口号为1,将该参数的第一个比特置1;

若输出端口号为2,将该参数的第二个比特置1;

若输出端口号为3,将该参数的第三个比特置1;

若输出端口号为4,将该参数的第四个比特置1;

所述总线比特码表参数,其由输入端口号获取:

若输入端口号为1,将该参数的第一个比特置1;

若输入端口号为2,将该参数的第二个比特置1;

若输入端口号为3,将该参数的第三个比特置1;

若输入端口号为4,将该参数的第四个比特置1;

所述输出端口比特码表参数,其由输出端口号获取。

步骤4:对数据帧添加步骤3获取的6个帧信息参数。

4.1)交换单元基于两个fpga芯片,共4个端口,设置4条总线用来传输数据,每个fpga芯片都包括一个用于添加帧信息的内帧成帧模块及一个用于解析帧信息的内帧拆帧模块;

4.2)建立端口与总线的对应关系:

将端口号为1的端口数据用第一条总线传输,将端口号为2的端口数据用第二条总线传输,将端口号为3的端口数据用第三条总线上进行传输,将端口号为4的端口数据用第四条总线传输;

4.3)将从端口进来要去往另一个fpga交叉节点的数据帧送至芯片上的内帧成帧模块,内帧成帧模块在该数据帧前添加步骤3获取的6个帧信息参数,生成新的数据帧,新的数据帧格式参见图2。

步骤5:将新的数据帧用aurora协议的高速串行收发器gtx传输至另一个fpga。

5.1)通过高速串行收发器gtx发送器完成对数据帧的并串转换及8b/10b编码功能;

5.2)通过高速串行收发器gtx接收器完成对数据帧的串并转换及8b/10b解码功能。

步骤6:将新的数据帧送至另一个fpga与第一个fpga总线相同的第二个fpga总线,由另一个fpga上的内帧拆帧模块解析帧头信息,获取步骤4添加的6个帧信息参数。

步骤7:确定数据帧对应的交叉节点:

7.1)确定数据帧对应的总线:

根据步骤6中获取的6个帧信息参数中的总线比特码表参数,确定数据帧对应的总线,即将总线比特码表参数中为1的比特位确定为数据帧对应的总线;

7.2)确定数据帧在对应总线上的对应交叉节点:

根据步骤6中获取的6个帧信息参数中的交叉节点比特码表参数,确定数据帧对应的交叉节点,即将比特码表参数中为1的比特位确定为数据帧在对应总线上的对应交叉节点。

步骤8:将数据帧搬移至步骤2或步骤7所确定的对应交叉节点。

步骤9:将步骤8中已搬移至交叉节点处的数据帧再搬移至对应输出端口:

根据步骤6中获取的6个帧信息参数中的输出端口比特码表参数,确定数据帧对应的输出端口,即将输出端口比特码表参数中为1的比特位确定为数据帧对应的输出端口,并将步骤8中已搬移至交叉节点处的数据帧再搬移至对应输出端口。

以上描述仅是本发明的一个具体实例,并未构成对本发明的任何限制,显然对于本领域的专业人员来说,在了解了本发明内容和原理后,都可能在不背离本发明原理、结构的情况下,进行形式和细节上的各种修改和改变,但是这些基于本发明思想的修正和改变仍在本发明的权利要求保护范围之内。

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