FAST项目的主要特色是基于FPGA硬件与多核CPU软件的协同处理实现SDN交换的数据平面。虚拟地址空间(Virtual Address Space,以下简称VAS)定义了FPGA硬件与CPU软件间的界面,在FAST项目研发中占有重要地位。

    掌握VAS的概念和使用方法是进行平台相关的FPGA OS逻辑开发、平台无关的FAST UM开发、平台相关软件以及平台无关的用户程序(UA)开发的前提和基础。

1、软件可访问的硬件资源抽象

    FAST硬件中平台相关的FPGA OS和平台无关的FAST UM中都存在一些需要软件参与管理的寄存器、计数器和RAM等资源。硬件设计时必须对这些资源进行抽象并形成详细的文档,为软件访问提供基础。

1.1FPGA OS的资源抽象

    FPGA OS是平台相关的,不同平台中FPGA OS实现的方式可能存在较大差异。但这些平台需要为软件的管理操作提供相同的抽象,例如接口状态寄存器、接口控制寄存器,接口计数器等。

    每个FPGA OS都需要提供一个物理接口状态寄存器,每个物理端口的状态对应其中的一个比特位。比特位为0表示该接口处于down状态,为1表示接口处于up状态。CPU相关软件通过定时轮询该寄存器获取端口状态的变化,当发现某个物理端口对应的状态位由0变成1时,表示该接口状态由down变成up。对于标准的openflow交换机,此时会触发向控制器发送一个异步消息。控制器获取交换机特定接口由down变成up后,会立刻触发LLDP协议,启动通过交换机的接口进行拓扑发现过程。

    FPGA OS中还需要提供其他软件可管理的资源,例如每个接口对应的分组收发计数器,接口的配置寄存器等。如果平台还有一些软件通过FPGA进行控制的外部设备(如PHY芯片,面板指示灯等),也需要在FPGA中提供相关寄存器,由软件配置这些寄存器进行管理。

    如果平台提供了查表协处理器,支持FAST UM通过ToMatchFromMatch接口实现关键字的查表,那么FPGA OS必须向软件提供管理查表协处理器的接口,即软件通过FPGA OS实现对查表规则的管理,而不需要FAST UM的干预。

1.2 FAST UM的资源抽象

   FAST UM内部也有大量的状态和配置信息需要软件进行管理,典型包括以下几类。

1)保存在UM内部RAM中的控制分组转发的数据结构,如openflow流表等。

2UM内部的各种计数器,如流表项匹配分组次数计数器,Meter丢弃分组个数计数器等;

3)控制UM内部模块工作的参数表,如令牌桶、输出调度参数表等;

4)模块处理的状态寄存器,例如输出调度模块中当前输出队列的长度等。

    与FPGA OS中可管理的硬件资源的数量和种类相对固定不同,FAST UM中需要软件管理的资源在类型和数量上随着UM功能的不同而不同。例如,同样是UM内部的RAM,可能包含的是openflow的流表、标准二层交换机的转发表,路由器的FIB表,网络接口的邻接表等,这些表具有不同的语法和语义,这对软件的管理提出了较大的挑战。

2.虚拟地址空间的原理

   虚拟地址空间就是将FPGA OSFAST UM中需要软件访问的资源(寄存器、计数器、控制表等)统一编址到一个32位的地址空间(4GB),为FAST平台软件(如表管理软件、设备管理软件)和各类用户定义软件(UA,如FAST白皮书中提到的精准测量服务AMS软件)访问这些硬件资源提供统一的接口和方法。

2.1虚拟地址空间的组织

     

     FAST4GB的虚拟地址空间划分为2部分,其中低2GB空间FAST UM定义的空间(称为UA地址),高2GB空间为平台相关的FPGA OS定义的空间。如图1所示。

    FPGA OS中的端口状态寄存器、端口计数器和外设控制寄存器分别映射到OAddrxOAddryOAddrz地址。而FAST UM中流表项分别映射到UAddr0UAddr1UAddrN-1等。

1 虚拟地址空间的原理

2.2虚拟地址空间的访问

       如果软件应用UA1需要管理FAST UM中的流表项i,首先需要根据VAS的定义,获取其在VAS中的地址UAddri,然后通过平台提供的VAS访问库函数(read/write),直接对地址UAddri进行访问。平台相关通信库解析VAS的访问请求,通过PCIe或者以太网将访问请求(读写指令以及地址等信息)发送给FPGAFPGA OS将接收到的访问请求送VAS访问控制模块,由该模块通过对操作地址的译码,将访问定向到FAST UMFAST UMCtrl接口(Ctrl接口的定义见FAST UM设计规范)接收到操作命令后,再次译码,将访问请求定向到流表管理模块,由流表管理模块最终完成对地址UAddri的操作。如果是读操作,返回值会按照相反的顺序,依次经过VAS访问控制模块、FPGACPU的通信通道、通信库软件,最终返回到UA1

3、对FPGA OS的设计要求

3.1强制实现地址

    FASTVAS空间中定义了FPGA OS需强制实现的硬件资源抽象集合(A1),A1包括访问以下资源的地址。

  • 接口状态寄存器
  • 接口控制寄存器
  • 本地时间戳寄存器

   所有支持FAST的平台必须实现上述强制要求的寄存器,但实现方法可以有所不同。

   以FPGA OS中的接口状态寄存器为例,一些平台的FPGA OS可能通过芯片管理引脚(MDC/MDIO)从物理层芯片中读取对应端口的up/down状态,而另外一些平台可能从内嵌的MAC核中获取接口的up/down状态。如何获取寄存器信息对软件是透明的,软件只需使用VAS空间定义的接口状态寄存器地址就可以获取该寄存器的值,因此是可以跨平台迁移的。

    因此,FAST VAS规范通过对A1集合的定义,向平台实现的功能提出了强制性的要求,每个平台的文档都需声明对A1集合中的每个地址是否支持。

3.2可选实现地址

   不同平台FPGA OS也可定义一些可选的VAS地址集合A2,用以反应该平台特定的功能,例如

  • 接口收发分组的计数器
  • 支持查表协处理器的规则空间
  • 外设(如LED灯,7段显示器等)的控制寄存器
  • 平台相关的其他硬件资源抽象

4FAST UM的设计要求

    每个不同的FAST UM都可能会有不同的硬件资源抽象集合(A3),A3包含UM中所有需要软件访问的寄存器、计数器、各种控制表的地址。两个完全可替换的UM实现必须具有完全相同的A3定义。

    FAST UM中映射到A3空间的可以是片上RAM,使用逻辑单元实现的寄存器,甚至是某个FIFO的读端口和写端口。

   FAST Ctrl接口逻辑必须实现正确的地址译码逻辑,确保软件可以访问到所有映射到UM空间的资源。

5 基于虚拟地址空间的FAST设计流程

5.1虚拟地址空间定义   

    FAST VAS的定义代表了设计的软硬件界面划分,因此在任何FAST设计之前,必须首先确定VASA1A2A3的定义,步骤如下:

1)检查平台的手册,确认平台FPGA OS支持的VAS是否满足FAST规范中对A1的强制要求。

2)检查平台手册,了解平台扩展的A2集合;

3)确定平台实现功能在FAST UMUA之间的划分,确定A3集合;

4)根据VAS的定义生成设计规范文档以及共软件开发使用的VAS.h头文件。

上述过程中的(3)十分关键,功能在软硬件中的划分需根据实现的功能需、性能需求、开发周期等综合考虑。

5.2独立的UA软件开发

  完成设计的VAS.h定义后,就可以独立于硬件进行UA开发,具体步骤包括:

1)根据VAS.h的定义,设计平台硬件开发的SDK API。例如将对访问openflow流表的读写操作进行进一步封装成流表项的增加,删除,查找等操作;

2)基于SDK API进行相关功能的开发;

3)当系统中存在多个UA时,需要设计一种机制对不同UA可访问的硬件资源进行隔离。

5.3独立的FAST UM开发

   在设计的VAS定义完成后,可独立地进行FAST UM的开发,主要步骤包括:

1)规划Ctrl接口逻辑中的A3地址译码逻辑,实现将Ctrl接口接收到的软件读写命令MUX/DMUXUM中相应的功能模块上;

2)定义每个功能模块到Ctrl接口逻辑的接口,确保Ctrl接口逻辑可以按照对VAS.h中定义A3地址的译码能正确访问到功能模块内部的硬件寄存器或RAM

3)实现每个功能模块的其他逻辑。

5.4虚拟地址空间的软硬件联合调试

   开发完成后,使用软件VAS调试程序,以及FPGA内嵌的波形观测工具(如Altera FPGASignalTap工具)对FAST UMCtrl接口逻辑的正确性,VASA3地址访问的正确性进行调试。

 

分类: FAST Spec

发表评论

电子邮件地址不会被公开。 必填项已用*标注