CN116088861A - 面向可编程交换芯片的p4后端编译方法及系统 - Google Patents
面向可编程交换芯片的p4后端编译方法及系统 Download PDFInfo
- Publication number
- CN116088861A CN116088861A CN202310192236.9A CN202310192236A CN116088861A CN 116088861 A CN116088861 A CN 116088861A CN 202310192236 A CN202310192236 A CN 202310192236A CN 116088861 A CN116088861 A CN 116088861A
- Authority
- CN
- China
- Prior art keywords
- program
- switching chip
- programmable
- graph
- compiling
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种面向可编程交换芯片的P4后端编译方法及系统,将网络数据平面可编程语言P4编译成可编程交换芯片SDK API代码,同时分析生成P4程序的程序依赖图,并根据上述程序依赖图将P4程序功能映射到可编程交换芯片的固化模块,使P4语言编写的程序能运行在装载可编程交换芯片的交换机设备。本发明能够将网络数据平面编程语言P4编译为可编程交换芯片SDK API代码,扩展可编程交换芯片的P4编程能力,不仅能为可编程交换芯片提供较为灵活的协议无关的数据平面可编程能力,减少编程人员在数据平面编程的学习成本,同时还可提高可编程交换芯片的资源利用率。
Description
技术领域
本发明涉及计算机网络协议及编译器设计技术领域,具体涉及一种面向可编程交换芯片的P4后端编译方法及系统。
背景技术
P4是一种开源的网络数据平面编程语言,让网络用户可以自定义自己感兴趣的数据包首部结构和数据包的完整处理流程,实现理想的协议无关网络数据处理。P4定义了一个目标无关的数据包处理架构,称之为PSA架构(可编程交换机架构)。可编程交换芯片通常采用一套自成体系的SDK编程系统支持成熟的L2层交换、L3路由、VLAN转发等功能,同时,最新的可编程交换芯片也通过上述SDK支持数据平面编程能力,如支持报文解析、报文封装以及支持数据包首部数据的修改、丢弃、复制等数据包处理功能。程序依赖图分析和理解程序的基础工具之一,可以表示一个程序的控制依赖和数据依赖。程序依赖图将程序表示为一个图,其中节点是语句和谓词表达式(或运算符和操作数),而与节点相关的边表示节点操作所依赖的数据值和操作执行所依赖的控制条件。可编程交换芯片虽然支持数据平面编程,但如果用户想在可编程交换芯片上进行数据平面编程,只能是相关的专业人士,或者必须去学习可编程交换芯片提供的SDK语法和相关API具体功能,不具有通用性。同时,可编程交换芯片还具有很多不可编程的固化功能模块未被利用。
发明内容
本发明要解决的技术问题:针对现有技术的上述问题,提供一种面向可编程交换芯片的P4后端编译方法及系统,本发明能够将网络数据平面编程语言P4编译为可编程交换芯片SDK API代码,扩展可编程交换芯片的P4编程能力,不仅能为可编程交换芯片提供较为灵活的协议无关的数据平面可编程能力,减少编程人员在数据平面编程的学习成本,同时还可提高可编程交换芯片的资源利用率。
为了解决上述技术问题,本发明采用的技术方案为:
一种面向可编程交换芯片的P4后端编译方法,包括:
S101:获取输入的原始的P4程序;
S102:对P4程序进行前中端编译,生成中间表示形式IR;
S103:从中间表示形式IR中生成P4程序依赖图;
S104:根据匹配结果对中间表示形式IR进行后端编译,将P4程序依赖图和标准P4程序库的程序依赖图进行子图同构关系匹配,若匹配成功则将中间表示形式IR编译为可编程交换芯片的固化功能模块SDK API代码,否则利用编译器将中间表示形式IR编译为可编程交换芯片的可编程模块SDK API代码。
可选地,步骤S101之前还包括安装配置P4编译器编译环境的步骤,所述P4编译器编译环境包括P4前中端编译器和P4后端编译器,所述P4前中端编译器用于对P4程序进行前中端编译,所述P4后端编译器用于针对中间表示形式IR进行后端编译。
可选地,步骤S102包括:对P4程序进行前中端编译,包括对程序中每一条语句进行词法分析和语法分析以确定P4程序包含的数据类型及程序语句之间的依赖关系,并生成有向无环图作为中间表示形式IR,所述有向无环图的节点为P4程序中的程序语句,边为程序语句之间的依赖关系。
可选地,步骤S103包括:遍历构成的中间表示形式IR的有向无环图,将P4程序中的程序语句表示为P4程序依赖图中的图节点、将有向无环图中程序语句之间依赖关系表示为P4程序依赖图中的边,从而根据上述图节点和边生成P4程序依赖图。
可选地,步骤S104中对中间表示形式IR进行后端编译包括:将P4程序包含的数据类型转化为可编程交换芯片的SDK中的数据类型;初始化一个搜索关键字,根据P4程序中所定义的解析器使用对应的可编程交换芯片SDK API构造状态转化和数据包报头信息提取,同时确定提取的数据包报头的长度和搜索关键字的偏移量;将P4程序中所定义的表转换为可编程交换芯片中的表,将P4程序中定义的动作映射为可编程交换芯片中寄存器的操作指令。
可选地,所述可编程交换芯片的SDK中的数据类型包括数据头类型、无符号整数和带位宽的有符号整数。
可选地,步骤S104中将P4程序依赖图和标准P4程序库的程序依赖图进行子图同构关系匹配包括:将生成的P4程序依赖图和预设的标准P4程序库的程序依赖图进行子图同构关系匹配,若生成的P4程序依赖图和预设的标准P4程序库的程序依赖图中的某一个子图相同,则判定匹配成功,否则判定匹配失败。
可选地,步骤S104中将中间表示形式IR编译为可编程交换芯片的固化功能模块SDK API代码包括:根据生成的P4程序依赖图和预设的标准P4程序库的程序依赖图中的匹配的子图,利用编译器将原始P4程序编译为标准P4程序库中匹配的子图所对应的可编程交换芯片的固化功能模块SDK API代码。
此外,本发明还提供一种面向可编程交换芯片的P4后端编译系统,包括相互连接的微处理器和存储器,所述微处理器被编程或配置以执行所述面向可编程交换芯片的P4后端编译方法。
此外,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质中存储计算机程序,所述计算机程序用于被微处理器编程或配置以执行所述面向可编程交换芯片的P4后端编译方法。
与现有技术相比,本发明的主要优点在于:本发明对可编程交换芯片编译方法进行了P4语言编译扩展,相较于使用SDK编程的可编程交换芯片编译方法,本发明能够将网络数据平面编程语言P4编译为可编程交换芯片SDK API代码,扩展可编程交换芯片的P4编程能力,不仅能为可编程交换芯片提供较为灵活的协议无关的数据平面可编程能力,减少编程人员在数据平面编程的学习成本,同时还可提高可编程交换芯片的资源利用率。
附图说明
图1为本发明实施例方法的基本流程示意图。
具体实施方式
以下将结合说明书附图和具体实施例对本发明做进一步详细说明。
如图1所示,本实施例面向可编程交换芯片的P4后端编译方法包括:
S101:获取输入的原始的P4程序;
S102:对P4程序进行前中端编译,生成中间表示形式IR(IntermediateRepresentation);
S103:从中间表示形式IR中生成P4程序依赖图;
S104:根据匹配结果对中间表示形式IR进行后端编译,将P4程序依赖图和标准P4程序库的程序依赖图进行子图同构关系匹配,若匹配成功则将中间表示形式IR编译为可编程交换芯片的固化功能模块SDK API代码,否则利用编译器将中间表示形式IR编译为可编程交换芯片的可编程模块SDK API代码。
本实施例中,步骤S101之前还包括安装配置P4编译器编译环境的步骤,所述P4编译器编译环境包括P4前中端编译器和P4后端编译器,所述P4前中端编译器用于对P4程序进行前中端编译,所述P4后端编译器用于针对中间表示形式IR进行后端编译。
一般而言,可将编译器分为前端和中后端。其中,前端会对所输入的程序进行词法分析、语法分析、语义分析,然后生成中间表示形式IR(Intermediate Representation ),后端会对IR 进行优化,然后生成目标代码(SDK API代码)。本实施例中,步骤S102包括:对P4程序进行前中端编译,包括对程序中每一条语句进行词法分析和语法分析以确定P4程序包含的数据类型及程序语句之间的依赖关系,并生成有向无环图作为中间表示形式IR,所述有向无环图的节点为P4程序中的程序语句,边为程序语句之间的依赖关系。
本实施例中,步骤S103包括:遍历构成的中间表示形式IR的有向无环图,将P4程序中的程序语句表示为P4程序依赖图中的图节点、将有向无环图中程序语句之间依赖关系表示为P4程序依赖图中的边,从而根据上述图节点和边生成P4程序依赖图。
本实施例中,步骤S104中对中间表示形式IR进行后端编译包括:将P4程序包含的数据类型转化为可编程交换芯片的SDK中的数据类型(例如本实施例中可编程交换芯片的SDK中的数据类型包括数据头类型、无符号整数和带位宽的有符号整数);初始化一个搜索关键字,根据P4程序中所定义的解析器使用对应的可编程交换芯片SDK API构造状态转化和数据包报头信息提取,同时确定提取的数据包报头的长度和搜索关键字的偏移量;将P4程序中所定义的表转换为可编程交换芯片中的表,将P4程序中定义的动作映射为可编程交换芯片中寄存器的操作指令。参见图1,本实施例中P4后端编译器包括:类型模块:将P4程序中的数据类型转化为可编程交换芯片SDK中的数据类型,主要包括数据头类型、无符号整数和带位宽的有符号整数;解析器模块:编译器会初始化一个搜索关键字,根据P4程序定义的解析器使用相对应的可编程交换芯片SDK API构造状态转化和数据包报头信息提取,同时确定提取的数据包报头的长度和搜索关键字的偏移量;控制模块:将P4程序中定义的表转换为可编程交换芯片中的表,将P4程序中定义的动作映射为可编程交换芯片中寄存器的操作指令。
本实施例中,步骤S104中将P4程序依赖图和标准P4程序库的程序依赖图进行子图同构关系匹配包括:将生成的P4程序依赖图和预设的标准P4程序库的程序依赖图进行子图同构关系匹配,若生成的P4程序依赖图和预设的标准P4程序库的程序依赖图中的某一个子图相同,则判定匹配成功,否则判定匹配失败。匹配成功则表示原始的P4程序等价于标准P4程序库中匹配成功的某个标准P4程序,编译器会将原始P4程序编译为该标准P4程序对应的可编程交换芯片的固化功能模块SDK API代码,否则表示原始的P4程序无法映射到标准P4程序库,编译器会将原始P4程序中编译为相对应的可编程交换芯片的可编程模块SDK API代码。其中将生成的P4程序依赖图和预设的标准P4程序库的程序依赖图进行子图同构关系匹配时,可根据需要使用已有的子图同构匹配算法,本实施例不对此做出特别的限定。
本实施例中,步骤S104中将中间表示形式IR编译为可编程交换芯片的固化功能模块SDK API代码包括:根据生成的P4程序依赖图和预设的标准P4程序库的程序依赖图中的匹配的子图,利用编译器将原始P4程序编译为标准P4程序库中匹配的子图所对应的可编程交换芯片的固化功能模块SDK API代码。
综上所述,针对现有可编程交换芯片SDK编程的不灵活性问题,本实施例面向可编程交换芯片的P4后端编译方法将网络数据平面可编程语言P4编译成可编程交换芯片SDKAPI代码,同时分析生成P4程序的程序依赖图,并根据上述程序依赖图将P4程序功能映射到可编程交换芯片的固化模块,使P4语言编写的程序能运行在装载可编程交换芯片的交换机设备,从而能够将网络数据平面编程语言P4编译为可编程交换芯片SDK API代码,并充分利用可编程交换芯片的固化功能模块。本实施例面向可编程交换芯片的P4后端编译方法进行了P4语言编译扩展,相较于使用SDK编程的可编程交换芯片编译方法,本发明能够将网络数据平面编程语言P4编译为可编程交换芯片SDK API代码,扩展可编程交换芯片的P4编程能力,不仅能为可编程交换芯片提供较为灵活的协议无关的数据平面可编程能力,减少编程人员在数据平面编程的学习成本,同时还可提高可编程交换芯片的资源利用率。
此外,本发明还提供一种面向可编程交换芯片的P4后端编译系统,包括相互连接的微处理器和存储器,该微处理器被编程或配置以执行所述面向可编程交换芯片的P4后端编译方法。本发明还提供一种计算机可读存储介质,该计算机可读存储介质中存储计算机程序,该计算机程序用于被微处理器编程或配置以执行所述面向可编程交换芯片的P4后端编译方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种面向可编程交换芯片的P4后端编译方法,其特征在于,包括:
S101:获取输入的原始的P4程序;
S102:对P4程序进行前中端编译,生成中间表示形式IR;
S103:从中间表示形式IR中生成P4程序依赖图;
S104:根据匹配结果对中间表示形式IR进行后端编译,将P4程序依赖图和标准P4程序库的程序依赖图进行子图同构关系匹配,若匹配成功则利用编译器将中间表示形式IR编译为可编程交换芯片的固化功能模块SDK API代码,否则利用编译器将中间表示形式IR编译为可编程交换芯片的可编程模块SDK API代码。
2.根据权利要求1所述的面向可编程交换芯片的P4后端编译方法,其特征在于,步骤S101之前还包括安装配置P4编译器编译环境的步骤,所述P4编译器编译环境包括P4前中端编译器和P4后端编译器,所述P4前中端编译器用于对P4程序进行前中端编译,所述P4后端编译器用于针对中间表示形式IR进行后端编译。
3.根据权利要求1所述的面向可编程交换芯片的P4后端编译方法,其特征在于,步骤S102包括:对P4程序进行前中端编译,包括对程序中每一条语句进行词法分析和语法分析以确定P4程序包含的数据类型及程序语句之间的依赖关系,并生成有向无环图作为中间表示形式IR,所述有向无环图的节点为P4程序中的程序语句,边为程序语句之间的依赖关系。
4.根据权利要求3所述的面向可编程交换芯片的P4后端编译方法,其特征在于,步骤S103包括:遍历构成的中间表示形式IR的有向无环图,将P4程序中的程序语句表示为P4程序依赖图中的图节点、将有向无环图中程序语句之间依赖关系表示为P4程序依赖图中的边,从而根据上述图节点和边生成P4程序依赖图。
5. 根据权利要求1所述的面向可编程交换芯片的P4后端编译方法,其特征在于,步骤S104中对中间表示形式IR进行后端编译包括:将P4程序包含的数据类型转化为可编程交换芯片的SDK中的数据类型;初始化一个搜索关键字,根据P4程序中所定义的解析器使用对应的可编程交换芯片SDK API构造状态转化和数据包报头信息提取,同时确定提取的数据包报头的长度和搜索关键字的偏移量;将P4程序中所定义的表转换为可编程交换芯片中的表,将P4程序中定义的动作映射为可编程交换芯片中寄存器的操作指令。
6.根据权利要求5所述的面向可编程交换芯片的P4后端编译方法,其特征在于,所述可编程交换芯片的SDK中的数据类型包括数据头类型、无符号整数和带位宽的有符号整数。
7.根据权利要求1所述的面向可编程交换芯片的P4后端编译方法,其特征在于,步骤S104中将P4程序依赖图和标准P4程序库的程序依赖图进行子图同构关系匹配包括:将生成的P4程序依赖图和预设的标准P4程序库的程序依赖图进行子图同构关系匹配,若生成的P4程序依赖图和预设的标准P4程序库的程序依赖图中的某一个子图相同,则判定匹配成功,否则判定匹配失败。
8. 根据权利要求1所述的面向可编程交换芯片的P4后端编译方法,其特征在于,步骤S104中将中间表示形式IR编译为可编程交换芯片的固化功能模块SDK API代码包括:根据生成的P4程序依赖图和预设的标准P4程序库的程序依赖图中的匹配的子图,利用编译器将原始P4程序编译为标准P4程序库中匹配的子图所对应的可编程交换芯片的固化功能模块SDK API代码。
9.一种面向可编程交换芯片的P4后端编译系统,包括相互连接的微处理器和存储器,其特征在于,所述微处理器被编程或配置以执行权利要求1~8中任意一项所述面向可编程交换芯片的P4后端编译方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储计算机程序,所述计算机程序用于被微处理器编程或配置以执行权利要求1~8中任意一项所述面向可编程交换芯片的P4后端编译方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310192236.9A CN116088861A (zh) | 2023-03-02 | 2023-03-02 | 面向可编程交换芯片的p4后端编译方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310192236.9A CN116088861A (zh) | 2023-03-02 | 2023-03-02 | 面向可编程交换芯片的p4后端编译方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116088861A true CN116088861A (zh) | 2023-05-09 |
Family
ID=86204546
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310192236.9A Pending CN116088861A (zh) | 2023-03-02 | 2023-03-02 | 面向可编程交换芯片的p4后端编译方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116088861A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117408220A (zh) * | 2023-12-15 | 2024-01-16 | 湖北工业大学 | 一种可编程交换架构芯片资源排布方法及装置 |
-
2023
- 2023-03-02 CN CN202310192236.9A patent/CN116088861A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117408220A (zh) * | 2023-12-15 | 2024-01-16 | 湖北工业大学 | 一种可编程交换架构芯片资源排布方法及装置 |
CN117408220B (zh) * | 2023-12-15 | 2024-02-23 | 湖北工业大学 | 一种可编程交换架构芯片资源排布方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108628635B (zh) | 获取参数名和局部变量名的方法、装置、设备及存储介质 | |
US7784039B2 (en) | Compiler, compilation method, and compilation program | |
Schreiner et al. | Comparison of type-based and alias-based component recognition for embedded systems software | |
US7308680B2 (en) | Intermediate representation for multiple exception handling models | |
US7657878B2 (en) | Compiler, method of compiling and program development tool | |
US20080288915A1 (en) | Determining destinations of a dynamic branch | |
US20220121775A1 (en) | System and method for converting machine learning algorithm, and electronic device | |
JPH07105012A (ja) | 言語処理プログラムのコンパイル処理方式 | |
US20060200796A1 (en) | Program development apparatus, method for developing a program, and a computer program product for executing an application for a program development apparatus | |
US20080263524A1 (en) | Method and System for State Machine Translation | |
CN116088861A (zh) | 面向可编程交换芯片的p4后端编译方法及系统 | |
US10521209B2 (en) | Machine-based normalization of machine instructions | |
Naeem et al. | Programmer-friendly decompiled Java | |
JP2003196106A (ja) | プログラム変換方法、コンピュータ装置及びプログラム | |
US8117604B2 (en) | Architecture cloning for power PC processors | |
JP2006196002A (ja) | 非同期プログラムフローのモデリングを含むソフトウェアツール | |
US5561801A (en) | System and method for multilevel promotion | |
CN109271237B (zh) | 仿真控制方法和装置 | |
Dooley et al. | Detecting and using critical paths at runtime in message driven parallel programs | |
Livadas et al. | A new algorithm for the calculation of transitive dependences | |
CN112540750B (zh) | 自适应内建函数与指令操作选择翻译方法 | |
CN112579059A (zh) | 支持有限域数据类型和运算符的编译方法 | |
Preissl et al. | Exploitation of dynamic communication patterns through static analysis | |
CN109814869B (zh) | 应用于机器人的解析方法、系统及计算机可读存储介质 | |
CN103563300A (zh) | 网络设备中网络设备组件的实现 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |