表项数据获取方法、装置及通信设备与流程

文档序号:16899910发布日期:2019-02-19 17:52阅读:640来源:国知局
表项数据获取方法、装置及通信设备与流程

本申请涉及通信技术领域,具体而言,涉及一种表项数据获取方法、装置及通信设备。



背景技术:

随着通信技术的发展,用户的业务需求对数据传输的带宽和时延也越来越高,路由器和交换机作为数据传输的管道设备,处理数据和管理表项数据的效率直接影响到数据传输的带宽和时延。

表项数据同步机制的目的是将存在于交换芯片中的硬件表项数据整体读取到处理器cpu中建立映射表,例如,将mac地址表项读取到cpu中建立映射表,使得上层软件在进行二层地址(也就是硬件mac地址)操作的时候不用访问交换芯片中的表项,而是直接通过映射表来进行相关数据转发处理,保证业务处理不至于因为底层io操作而出现大规模延迟,提高cpu处理数据的效率。

而现有技术中,交换芯片的管理通道通常由同步串行接口(serialperipheralinterface,spi)接口提供,处理器通过spi接口来获取交换芯片的mac地址表、端口报文统计数据表等寄存器中的表项数据,以及端口状态等交换芯片内部的信息。处理器在获取mac地址表时,为了保证mac地址表刷新的实时性,处理器一般以spi能提供的最高速率来连续对交换芯片进行访问操作,以获取交换芯片中的表项数据。

虽然交换芯片spi管理接口最高速率可以支持40mhz的速率,但是处理器的spi控制器总线速率最高只有5mhz,处理器如果以5mhz的速率来管理交换芯片会导致处理器更新一次mac地址表或mib数据表会消耗较长时间资源,造成处理器资源浪费,且处理器中的表项刷新时间过慢,影响数据转发效率,不能满足某些实时转发业务应用要求。

为了避免上述问题,传统的解决方案是更换spi总线速率更高的处理器,但这样显然会大幅增加设计成本,同时处理器通过串行接口读取交换芯片中的大容量数据表,也会连续耗费处理器的大量资源,且影响表项的读取效率。



技术实现要素:

本申请实施例的目的在于提供一种表项数据获取方法、装置及通信设备。

第一方面,本申请实施例提供了一种表项数据获取方法,应用于分别与交换芯片和处理器连接的可编程逻辑器件,所述方法包括:通过第一总线从所述交换芯片中获取表项数据,并将所述表项数据存储在先进先出fifo队列中;确定所述fifo队列已满时,通过第二总线向所述处理器发送读取通知,以使所述处理器基于所述读取通知通过所述第二总线从所述fifo队列中读取所述表项数据;或者设置所述fifo队列已满的标识,以使所述处理器在轮询到所述标识时通过所述第二总线从所述fifo队列中读取所述表项数据。

在上述实现过程中,通过可编程逻辑器件通过第一总线从交换芯片中获取表项数据,所述处理器再通过所述第二总线从所述fifo队列中读取所述表项数据,从而使得处理器可以通过第二总线快速的获取到表项数据,在保证低成本的情况下,提高了处理器刷新内部表项数据的时间周期,有效地降低了处理器的资源开销,使得处理器有更多的资源用于处理其他业务,提升了处理器的整体性能。

可选地,所述第一总线为spi总线,所述第二总线为localbus总线。

在上述实现过程中,可编程逻辑器件可通过所述spi总线从交换芯片中获取表项数据,使得处理器可以通过localbus总线从可编程逻辑器件中获取表项数据,进而提高了处理器的数据读取效率。

可选地,所述通过第二总线向所述处理器发送读取通知,包括:通过所述第二总线以中断的方式向所述处理器发送读取通知。

在上述实现过程中,可编程逻辑器件以中断的方式向处理器发送读取通知,即可编程逻辑器件暂停当前的处理任务,如停止继续从交换芯片中获取表项数据,转而向处理器发送读取通知,从而可以提高可编程逻辑器件的处理能力,及时向处理器发送读取通知,使得处理器可以及时从fifo队列中取走表项数据。

可选地,所述表项数据包括mac地址表中的mac地址,所述fifo队列包括第一fifo队列,所述通过第一总线从交换芯片中获取表项数据,并将所述表项数据存储在fifo队列中,包括:通过所述第一总线从所述交换芯片按照索引号依次获取mac地址;依次按照获取顺序将获取的mac地址存储到所述第一fifo队列中。

在上述实现过程中,可编程逻辑器件可通过所述第一总线从交换芯片中获取全部的mac地址后存储于第一fifo队列中,使得处理器可以从第一fifo队列中读取到全部的mac地址,进而提高了处理器的数据读取效率。

可选地,所述表项数据还包括统计寄存器的数据,所述统计寄存器用于保存每个端口的报文统计数据,所述fifo队列还包括第二fifo队列,通过第一总线从所述交换芯片中获取表项数据,并将所述表项数据存储在fifo队列中,包括:通过所述第一总线从所述交换芯片中按照端口号依次从所述统计寄存器中获取对应的报文统计数据;依次按照获取顺序将获取的报文统计数据存储到所述第二fifo队列中。

在上述实现过程中,可编程逻辑器件可通过所述第一总线从交换芯片中获取全部的报文统计数据后存储于第二fifo队列中,使得处理器可以从第二fifo队列中读取到全部的报文统计数据,进而提高了处理器的数据读取效率。

第二方面,本申请实施例提供了一种表项数据获取装置,应用于分别与交换芯片和处理器连接的可编程逻辑器件,所述装置包括:表项数据获取模块,用于通过第一总线从所述交换芯片中获取表项数据,并将所述表项数据存储在先进先出fifo队列中;消息发送模块,用于确定所述fifo队列已满时,通过第二总线向所述处理器发送读取通知,以使所述处理器基于所述读取通知通过所述第二总线从所述fifo队列中读取所述表项数据;或者设置所述fifo队列已满的标识,以使所述处理器在轮询到所述标识时通过所述第二总线从所述fifo队列中读取所述表项数据。

可选地,所述第一总线为spi总线,所述第二总线为localbus总线。

可选地,所述消息发送模块,具体用于通过所述第二总线以中断的方式向所述处理器发送读取通知。

可选地,所述表项数据包括mac地址表中的mac地址,所述fifo队列包括第一fifo队列,所述表项数据获取模块,具体用于通过所述第一总线从所述交换芯片按照索引号依次获取mac地址;依次按照获取顺序将获取的mac地址存储到所述第一fifo队列中。

可选地,所述表项数据还包括统计寄存器的数据,所述统计寄存器用于保存每个端口的报文统计数据,所述fifo队列还包括第二fifo队列;所述表项数据获取模块,具体用于通过所述第一总线从所述交换芯片中按照端口号依次从所述统计寄存器中获取对应的报文统计数据;依次按照获取顺序将获取的报文统计数据存储到所述第二fifo队列中。

第三方面,本申请实施例提供一种通信设备,所述通信设备包括处理器、可编程逻辑器件以及交换芯片,所述可编程逻辑器件通过第二总线与所述处理器连接,所述可编程逻辑器件通过第一总线与所述交换芯片连接;所述可编程逻辑器件,用于通过第一总线从所述交换芯片中获取表项数据,并将所述表项数据存储在先进先出fifo队列中;所述可编程逻辑器件,还用于确定所述fifo队列已满时,通过第二总线向所述处理器发送读取通知,以使所述处理器基于所述读取通知通过所述第二总线从所述fifo队列中读取所述表项数据;或者设置所述fifo队列已满的标识,以使所述处理器在轮询到所述标识时通过所述第二总线从所述fifo队列中读取所述表项数据。

第四方面,本申请实施例提供一种可编程逻辑器件,包括处理器以及存储器,所述存储器存储有计算机可读取指令,当所述计算机可读取指令由所述处理器执行时,运行如第一方面提供的所述方法中的步骤。

本申请实施例提供了一种表项数据获取方法、装置及通信设备,该方法通过可编程逻辑器件通过第一总线从交换芯片中获取表项数据,并将所述表项数据存储在fifo队列中,然后在确定所述fifo队列已满时,通过第二总线向所述处理器发送读取通知,以使所述处理器基于所述读取通知通过所述第二总线从所述fifo队列中读取所述表项数据;或者设置所述fifo队列已满的标识,以使所述处理器在轮询到所述标识时通过所述第二总线从所述fifo队列中读取所述表项数据,从而使得处理器可以通过第二总线快速的获取到表项数据,在保证低成本的情况下,提高了处理器刷新内部表项数据的时间周期,有效地降低了处理器的资源开销,使得处理器有更多的资源用于处理其他业务,提升了处理器的整体性能。

本申请的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请实施例了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为现有技术提供的一种通信设备的结构示意图;

图2为现有技术提供的另一种通信设备的结构示意图;

图3为本申请实施例提供的一种通信设备的结构示意图;

图4为本申请实施例提供的一种表项数据获取方法的流程图;

图5为本申请实施例提供的另一种通信设备的结构示意图;

图6为本申请实施例提供的一种表项数据获取装置的结构框图;

图7为本申请实施例提供的一种可编程逻辑器件的结构示意图。

具体实施方式

下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

现有技术中,交换芯片的管理通道通常由spi接口提供,处理器通过spi接口来获取交换芯片的mac地址表、报文统计寄存器、vlan表、acl等寄存器表中的表项数据,以及端口状态等交换芯片内部的信息。这些表的数据量通常较大,以mac地址表为例,即使最低端的交换芯片,其mac地址表也有1kb的容量,对于高端的交换芯片,mac地址表有16kb甚至更多。处理器在获取mac地址表时,为了保证mac地址表刷新的实时性,处理器一般以spi总线能提供的最高速率来连续对交换芯片进行访问操作,以获取交换芯片中的表项数据,如图1所示。

虽然交换芯片spi管理接口最高速率可以支持40mhz的速率,但是处理器的spi控制器总线速率最高只有5mhz,处理器如果以5mhz的速率来管理交换芯片会导致处理器更新一次mac地址表等表项数据会消耗较长时间资源,造成处理器资源浪费,且处理器中的表项刷新时间过慢,影响数据转发效率,不能满足某些实时转发业务应用要求。

为了避免上述问题,传统的解决方案是更换spi总线速率更高的处理器,但这样显然会大幅增加设计成本,同时处理器通过串行接口读取交换芯片中的大容量数据表,也会连续耗费处理器的资源。另一种解决方案是如图2所示,处理器通过并行总线接口localbus管理交换芯片,在可编程逻辑器件中实现并行总线localbus转spi串行接口功能,由可编程逻辑器件提供高速率spi接口连接交换芯片。

但是第二种解决方案的优点是实现起来比较简单,可以提高处理器获取交换芯片的表项数据的效率,但是处理器在访问mac地址表时,需要处理器发送地址后,等待串行移位完成一次操作后再读取数据,这种操作依然会带来处理器资源的耗费,另外,处理器的localbus总线下通常外挂了其他设备,如flash、fpga等,处理器访问mac地址表的操作占用总线时间过长可能影响处理器对其他设备的业务访问。

通信设备中,对于交换芯片的管理,交换芯片中的数据表需要实时同步到处理器中,包括二层mac地址表和mib数据表,表项数据获取的效率高低直接影响到设备的转发性能和处理器的资源耗费率,如果处理器花费较长时间在获取表项数据上,则直接影响处理器处理其他实时业务的性能,对于mac地址表,如果刷新速度过慢,还会影响到应用业务或转发延迟,目前的解决方案选择处理性能和spi总线速率更高的处理器,需要承担更多的硬件成本。

所以,为了减少处理器在获取交换芯片中的表项数据的资源占用率,提升处理器对交换芯片的管理效率和系统整体性能,本申请实施例提供了一种表项数据获取方法。

请参照图3,图3为本申请实施例一种通信设备100的结构示意图,所述通信设备100包括处理器110、可编程逻辑器件120以及交换芯片130,所述可编程逻辑器件120通过第二总线与所述处理器110连接,所述可编程逻辑器件120通过第一总线与所述交换芯片130连接。

其中,可编程逻辑器件120是采用一类可编程的存储器,用于其内部存储程序,执行逻辑运算、顺序控制、定时、计数与算术操作等面向用户的指令,并通过数字或模拟式输入/输出控制各种类型的机械或生产过程。

可选地,本申请实施例中的可编程逻辑器件120可以为复杂可编程逻辑器件(complexprogrammablelogicdevice,简称cpld)或者现场可编程门阵列(field-programmablegatearray,简称fpga)或者其他可编程的逻辑器件。

其中,cpld主要是由可编程逻辑宏单元(mc,macrocell)围绕中心的可编程互连矩阵单元组成。其中mc结构较复杂,并具有复杂的i/o单元互连结构,可由用户根据需要生成特定的电路结构,完成一定的功能。由于cpld内部采用固定长度的金属线进行各逻辑块的互连,所以设计的逻辑电路具有时间可预测性,避免了分段式互连结构时序不完全预测的缺点。

fpga是在cpld可编程器件的基础上进一步发展的产物,它是作为专用集成电路(asic)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。

在本实施例中,为了提高数据读取的效率,可编程逻辑器件120选择cpld。

其中,为了提高处理器110的数据读取效率,所述第一总线为串行外设接口spi总线,所述第二总线为localbus总线。所述可编程逻辑器件120通过localbus总线与所述处理器110连接,所述可编程逻辑器件120通过spi总线与所述交换芯片130连接。

spi接口是一种同步串行接口,由4线信号cs片选、clk时钟、mosi主输出从输入、miso主输入从输出组成,硬件内部结构实际上是2个简单的移位寄存器,在主器件片选cs和时钟clk驱动下移位输出或输入。

所述可编程逻辑器件120,用于通过第一总线从所述交换芯片中获取表项数据,并将所述表项数据存储在先进先出fifo队列中。

所述可编程逻辑器件120,还用于确定所述fifo队列已满时,通过第二总线向所述处理器发送读取通知,以使所述处理器基于所述读取通知通过所述第二总线从所述fifo队列中读取所述表项数据;或者设置所述fifo队列已满的标识,以使所述处理器在轮询到所述标识时通过所述第二总线从所述fifo队列中读取所述表项数据。

所述处理器110,用于获取所述读取通知,并基于所述读取通知通过所述第二总线从所述fifo队列中读取所述表项数据,或者在轮询到所述fifo队列已满的标识时通过所述第二总线从所述fifo队列中读取所述表项数据。

上述具体实现过程请参照下述方法实施例的具体实现过程,在此先不过多赘述。

请参照图4,图4为本申请实施例提供的一种表项数据获取方法的流程图,该方法应用于可编程逻辑器件,所述方法包括如下步骤:

步骤s110:通过第一总线从所述交换芯片中获取表项数据,并将所述表项数据存储在先进先出fifo队列中。

可编程逻辑器件通过第一总线与交换芯片连接,所以,可编程逻辑器件可通过第一总线从交换芯片中获取表项数据,并将所述表项数据存储在fifo队列中。

可编程逻辑器件可基于fifo队列的状态来从交换芯片中读取表项数据,例如,可编程逻辑器件可实时监控fifo队列的状态,在fifo队列未满时,可编程逻辑器件则从交换芯片中继续获取表项数据。

当然,作为一种实施方式,可编程逻辑器件还可周期性从交换芯片中获取表项数据,然后将获取的表项数据存入fifo队列中。

其中,fifo队列是先进先出队列,其是按报文到达接口的先后顺序让报文进入队列,同时,fifo队列的出口让报文按进队的顺序出队,先进的报文将先出队,后进的报文后出队。

步骤s120:确定所述fifo队列已满时,通过第二总线向所述处理器发送读取通知。

可编程逻辑器件将获得表项数据存储在fifo队列中后,为了提高处理器的数据读取效率,还可以判断所述fifo队列是否已满,即可编程逻辑器件检测fifo队列是否已满,当检测到fifo队列已满时,停止从交换芯片中读取表项数据,并将fifo队列的状态赋值到第二总线接口下对应的状态寄存器,即在状态寄存器中将fifo队列的状态标记为数据满载状态,且在判断fifo队列已满时,通过第二总线向处理器发送读取通知。

可编程逻辑器件在检测到fifo队列已满时,通过第二总线向处理器发送读取通知,处理器在接收到读取通知后,则通过所述第二总线从所述fifo队列中读取所述表项数据,或者处理器在轮询到fifo队列已满的标识时通过所述第二总线从所述fifo队列中读取所述表项数据。

通过判断fifo队列是否已满,从而可在fifo队列已满时可以通知处理器进行数据读取,提高了处理器的数据读取效率。

所以,本实施例中,通过可编程逻辑器件通过第一总线从交换芯片中获取表项数据,并将所述表项数据存储在fifo队列中,然后在确定所述fifo队列已满时,通过第二总线向处理器发送读取通知,以使所述处理器基于所述读取通知通过所述第二总线从所述fifo队列中读取所述表项数据;或者设置所述fifo队列已满的标识,以使所述处理器在轮询到所述标识时通过所述第二总线从所述fifo队列中读取所述表项数据,从而使得处理器可以通过第二总线快速的获取到表项数据,提高了处理器刷新内部表项数据的时间周期,有效地降低了处理器的资源开销,使得处理器有更多的资源用于处理其他业务,提升了系统整体性能。

作为一种实施方式,可编程逻辑器件可以通过所述第二总线以中断的方式向所述处理器发送读取通知。例如,可编程逻辑器件在检测到fifo队列已满时,以中断的方式向处理器发送读取通知,即可编程逻辑器件暂停当前的处理任务,如停止继续从交换芯片中获取表项数据,转而向处理器发送读取通知,从而可以提高可编程逻辑器件的处理能力,及时向处理器发送读取通知,使得处理器可以及时从fifo队列中取走表项数据。

另外,所述表项数据包括mac地址表中的mac地址,所述fifo队列包括第一fifo队列,则可编程逻辑器件从交换芯片中获取mac地址的过程为:通过第一总线从所述交换芯片按照索引号依次获取mac地址,然后依次按照获取顺序将获取的mac地址存储到所述第一fifo队列中。

具体地,在交换芯片中,在mac地址表中的每条mac地址均设置有索引号,其从0开始依次排列,则可编程逻辑器件在读取交换芯片的mac地址时,可编程逻辑器件先向交换芯片发送索引号为0的mac地址读取请求,然后交换芯片将索引号为0的mac地址通过spi总线发送给可编程逻辑器件,可编程逻辑器件将获取到的索引号为0的mac地址存放到地址fifo队列中,由于可编程逻辑器件中的寄存器每次只能读取32bit的数据,构建1条96bit的mac地址表项数据,当然,每条mac地址表项数据除了包括mac地址外,还包括索引号以及预留信息等信息,所以,读取一条mac地址表项数据需要3次读取操作,可通过计数器记录次数,当完成3次读取后,将索引号进行加1,继续读取mac地址存放于地址fifo队列中,以此,按照索引号依次递增的方式直到完成所有mac地址的读取。然后按照mac地址的获取顺序将mac地址存储到第一fifo队列中,即先获取的mac地址存储在第一fifo队列中的底层,后获取的mac地址存储在第一fifo队列的上层,使得处理器在读取mac地址时,底层的mac地址后被读取,上层的mac地址先被读取。

所以,可编程逻辑器件可通过所述spi总线从交换芯片中获取全部的mac地址后存储于第一fifo队列中,使得处理器可以从第一fifo队列中读取到全部的mac地址,进而提高了处理器的数据读取效率。

可以理解地,假如,mac地址表中最后一条mac地址的索引号为j,则在读取完mac地址表中的所有mac地址后,可编程逻辑器件可判断所述第一fifo队列中是否存在索引号为j的mac地址,即是否存在最后一条mac地址,若存在,则表示第一fifo队列已满,可将第一fifo队列的状态标记上数据满载状态的标识,若不存在,表示第一fifo队列未满,则还需从交换芯片中继续获取mac地址,若地址fifo队列已满时,可编程逻辑器件可向处理器发送读取通知,以通知处理器尽快从该地址fifo队列中取走数据。当然,处理器可定时轮询查看第一fifo队列的状态,在检测到第一fifo队列标记有数据满载状态的标识时,则表明此时第一fifo队列已满,则通过第二总线从第一fifo队列中读取mac地址。

通过判断第一fifo队列是否已满,从而可在第一fifo队列已满时可以通知处理器进行数据读取,提高了处理器的数据读取效率。

另外,所述表项数据还包括统计寄存器的数据,所述统计寄存器用于保存每个端口的报文统计数据,是管理数据集的统称,包括普通数据和表结构数据,本实施例中指交换芯片内的端口的统计寄存器的数据。所述fifo队列还包括第二fifo队列,则可编程逻辑器件从交换芯片中读取报文统计数据存储到第二fifo队列中的过程为:通过所述第一总线从所述交换芯片中按照端口号依次从所述统计寄存器中获取对应的报文统计数据;依次按照获取顺序将获取的报文统计数据存储到所述第二fifo队列中。

具体地,交换芯片的每条报文统计数据设置有对应的端口号,可编程逻辑器件在读取报文统计数据时,按照预先置入的操作地址和指令,下发到交换芯片中,按照端口号递增的方式发送报文统计数据读取指令,依次读取交换芯片中的报文统计数据,以此完成所有端口号的报文统计数据的读取,然后将读取的报文统计数据存放到第二fifo队列中。

可编程逻辑器件可通过所述spi总线从交换芯片中获取全部的报文统计数据后存储于第二fifo队列中,使得处理器可以从第二fifo队列中读取到全部的报文统计数据,进而提高了处理器的数据读取效率。

可以理解地,若交换芯片的最后一个端口号为n,则在读取完交换芯片的所有端口的报文统计数据后,可编程逻辑器件可判断所述第二fifo队列中是否存在端口号为n的报文统计数据,即是否存在最后一条报文统计数据,若存在,则表示第二fifo队列已满,可将第二fifo队列的状态标记上数据满载状态的标识,若不存在或未进行对应置位,表示第二fifo队列未满,则还需从交换芯片中继续获取报文统计数据,若第二fifo队列已满时,可编程逻辑器件可向处理器发送读取通知,以通知处理器尽快从该第二fifo队列中取走报文统计数据。当然,处理器可定时轮询查看第二fifo队列的状态,在检测到第二fifo队列标记有数据满载状态的标识时,则表明此时第二fifo队列已满,则通过第二总线从第二fifo队列中读取报文统计数据。

通过判断第二fifo队列是否已满,从而可在第二fifo队列已满时可以通知处理器进行数据读取,提高了处理器的数据读取效率。

需要说明的是,表项数据可以不止包括上述两种表项数据,例如表项数据还可包括vxlan表项数据或acl表项数据,fifo队列也不止包括上述两种fifo队列,如可在可编程逻辑器件中设置不同种类的数据设置不同的存储队列,则在实际应用过程中,可编程逻辑器件可从交换芯片中获取多种表项数据,可编程逻辑器件可将获取的多种表项数据存储在各自对应的fifo队列中,从而处理器可从fifo队列中直接读取数据,提高了处理器的数据读取效率。

另外,请参照图5,图5为本申请实施例提供的另一种通信设备的结构示意图,可编程逻辑器件可包括spi轮转读取单元、fifo队列、表项状态反馈单元、localbus寄存器映射单元、spi总线透传单元和总线切换单元。

spi轮转单元负责完成从交换芯片中读取表项数据,并将读取的表项数据存放于fifo队列中。spi轮转单元中定义了访问交换芯片的表项数据的地址和读取操作命令,可编程逻辑器件通过启动spi轮转单元来从交换芯片中读取表项数据。

localbus寄存器映射单元是处理器读取fifo队列中表项数据的接口,包括mac地址数据寄存器和mib数据寄存器,mac地址数据寄存器由12个8bit的寄存器组成,构建1条96bit的mac地址表项数据,当然,每条mac地址表项数据除了包括mac地址外,还包括索引号以及预留信息等信息。当可编程逻辑器件收到处理器的读取命令后,可编程逻辑器件自动将第一fifo队列中的第一条mac地址赋值到mac地址寄存器中,当处理器读取到最后一个寄存器时,可编程逻辑器件自动将第一fifo队列中的第二条mac地址赋值到mac地址数据寄存器,并依次递增,直到处理器读取完整个mac地址。第二fifo队列中的报文统计数据则按端口号的形式排列,当可编程逻辑器件收到处理器读取报文统计数据的指令时,可编程逻辑器件将第二fifo队列中的第1条报文统计数据赋值到mib数据寄存器中,当处理器读取了第一条报文统计数据后,第二fifo队列自动将第2个端口的报文统计数据赋值到mib数据寄存器中,直到完成所有端口的报文统计数据为止。

fifo队列状态反馈单元,负责通告fifo队列的状态,即检测fifo队列是否已满,当fifo队列已满时,spi轮转单元停止从交换芯片中读取数据,并将fifo队列的状态赋值到localbus接口下对应的状态寄存器。

由于交换芯片除了mac地址和报文统计数据外,这些状态寄存器和控制寄存器数据量较少,通过处理器的低速spi接口即可完成管理,这部分功能在可编程逻辑器件中通过spi总线透传单元完成,可编程逻辑器件中仅对处理器发出的spi信号作透传处理,由可编程逻辑器件中的总线切换单元将交换芯片的spi接口连接到处理器互连的spi接口。

所以,处理器通过高性能并行接口loaclbus总线和低速spi总线协同管理交换芯片,大数据量的访问由可编程逻辑器件代理完成读取,小数据量的管理指令由低速spi总线来完成,即释放了loaclbus总线上的压力,又充分利用了处理器的spi接口资源,兼顾了处理器管理交换芯片的快速性和灵活性,有效地降低了处理器资源的开销。

请参照图6,图6为本申请实施例提供的一种表项数据获取装置200的结构框图,该装置运行于可编程逻辑器件,所述装置包括:

表项数据获取模块210,用于通过第一总线从所述交换芯片中获取表项数据,并将所述表项数据存储在先进先出fifo队列中;

消息发送模块220,用于确定所述fifo队列已满时,通过第二总线向所述处理器发送读取通知,以使所述处理器基于所述读取通知通过所述第二总线从所述fifo队列中读取所述表项数据;或者设置所述fifo队列已满的标识,以使所述处理器在轮询到所述标识时通过所述第二总线从所述fifo队列中读取所述表项数据。

可选地,所述第一总线为spi总线,所述第二总线为localbus总线。

可选地,所述消息发送模块220,具体用于通过所述第二总线以中断的方式向所述处理器发送读取通知。

可选地,所述表项数据包括mac地址表中的mac地址,所述fifo队列包括第一fifo队列,所述表项数据获取模块210,具体用于通过所述第一总线从所述交换芯片按照索引号依次获取mac地址;依次按照获取顺序将获取的mac地址存储到所述第一fifo队列中。

可选地,所述表项数据还包括统计寄存器的数据,所述统计寄存器用于保存每个端口的报文统计数据,所述fifo队列还包括第二fifo队列;所述表项数据获取模块210,具体用于通过所述第一总线从所述交换芯片中按照端口号依次从所述统计寄存器中获取对应的报文统计数据;依次按照获取顺序将获取的报文统计数据存储到所述第二fifo队列中。

请参照图7,图7为本申请实施例提供的一种可编程逻辑器件的结构示意图,所述可编程逻辑器件可以包括:至少一个处理器310,例如cpu,至少一个通信接口320,至少一个存储器330和至少一个通信总线340。其中,通信总线340用于实现这些组件直接的连接通信。其中,本申请实施例中设备的通信接口320用于与其他节点设备进行信令或数据的通信。存储器330可以是高速ram存储器,也可以是非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。存储器330可选的还可以是至少一个位于远离前述处理器的存储装置。存储器330中存储有计算机可读取指令,当所述计算机可读取指令由所述处理器310执行时,可编程逻辑器件执行上述图4所示方法过程。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置的具体工作过程,可以参考前述方法中的对应过程,在此不再过多赘述。

综上所述,本申请实施例提供了一种表项数据获取方法、装置及通信设备,该方法通过可编程逻辑器件通过第一总线从交换芯片中获取表项数据,并将所述表项数据存储在fifo队列中,然后在确定所述fifo队列已满时,通过第二总线向所述处理器发送读取通知,以使所述处理器基于所述读取通知通过所述第二总线从所述fifo队列中读取所述表项数据;或者设置所述fifo队列已满的标识,以使所述处理器在轮询到所述标识时通过所述第二总线从所述fifo队列中读取所述表项数据,从而使得处理器可以通过第二总线快速的获取到表项数据,在保证低成本的情况下,提高了处理器刷新内部表项数据的时间周期,有效地降低了处理器的资源开销,使得处理器有更多的资源用于处理其他业务,提升了处理器的整体性能。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

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