基于制造技术

技术编号:39652718 阅读:6 留言:0更新日期:2023-12-09 11:21
本发明专利技术公开了一种基于

【技术实现步骤摘要】
基于PCIe XDMA实现多进程并发的方法


[0001]本专利技术涉及密码卡及数据加密
,特别是指一种基于
PCIe XDMA
实现多进程并发的方法


技术介绍

[0002]信息安全越来越受到人们的关注,密码卡系统是解决信息安全问题的有效手段

[0003]密码卡系统主要由密码卡硬件及控制程序

驱动程序和应用程序三个部分组成;密码卡硬件主控为
FPGA

Field Programmable Gate Array
,现场可编程门阵列)芯片,控制程序采用
FPGA
硬件逻辑编程,应用程序为上位机程序,驱动程序位于逻辑程序和应用程序之间,起到上下数据传递的作用;密码卡对外采用
PCIe

Peripheral Component Interconnect Express
,外围组件快速互连,是一种高速串行计算机扩展总线标准)
2.0
接口,
FPGA
芯片通过
XDMA

Xilinx
系列
FPGA
中官方自带的
PCIE
高级
IP

IP
核实现了
PCIe 2.0
协议和
DMA

Direct Memory Access
,直接存储器访问)传输功能

密码卡系统结构图参见图
1。
[0004]XDMA

FPGA
自带的
PCIe IP
核,该
IP
核里封装了
PCIe
协议的事务层

数据链路层和物理层,并在事务层留出数据端口用于进行开发
。XDMA
以内存空间作为数据交互的基础,通过操作
DMA
描述符来实现数据传输;
DMA
描述符包括源地址

目的地址和
DMA
长度等信息
。XDMA
数据传输方向分为主机到板卡
H2C

Host to Card
)和板卡到主机
C2H

Card to Host
),该
IP
核还提供多条用户中断线,用于向主机生成中断
。XDMA IP
核具有以下特点:支持轮询模式;支持多种数据位宽;支持
64
位源地址

目的地址和描述符地址;支持用户可配置接口;支持包括
MSI

Message Signaled Interrupt
,信息信号中断)和
MSI

X

Message Signaled Interrupt eXtended
,扩展的信息信号中断)在内的多种中断机制;可支持每个描述符
256MB
的数据传输;支持描述符连续获取;支持
PCIe
事务
DMA
引擎

[0005]PCIe
密码卡在实际使用中,会面临上位机应用程序多进程并发的需求,即多个应用程序进程同时访问
PCIe
密码卡的不同密码算法模块进行密码运算;为满足多进程并发的需求,一般采用多密码算法模块与多
DMA
通道相结合的方式,使用一个通道去对应一个应用进程;由于当前
PCIe 2.0 XDMA IP
核最多能支持两个
DMA
通道,在超过两个进程的情况下,无法满足一个通道去对应一个进程;因此,如何在现有的
PCIe 2.0 XDMA
基础上,去满足多进程并发的需求,成为当前需要解决的问题


技术实现思路

[0006]本专利技术要解决的技术问题是提供一种基于
PCIe XDMA
实现多进程并发的方法,以满足应用程序多进程并发的需求,并提升系统密码运算速度

[0007]为解决上述技术问题,本专利技术提供技术方案如下:一种基于
PCIe XDMA
实现多进程并发的方法,用于密码卡系统,所述密码卡系统包括主机和连接在所述主机上的密码卡,所述主机上安装有
DPDK
,所述密码卡上设有采用
XDMA

FPGA
,其中,所述
FPGA
包括依次连接的
H2C DMA
传输通道

数据包解析模块

密码算法
调度模块

密码算法模块

数据包整合模块和
C2H DMA
传输通道,所述密码算法模块为多个且并行运行;所述
FPGA
上的逻辑程序执行的方法包括:步骤
10

H2C DMA
传输通道收到主机上的应用程序经
DPDK
驱动程序发来的数据包后,经数据包解析模块对数据包进行解析和过滤;其中,所述数据包分为包头和数据两部分,在包头中定义了
proc_seq

enc_seq
两个字段,分别代表应用程序进程的序列号和要调用的密码算法模块的序列号;步骤
11
:符合格式要求的数据包,被送入密码算法调度模块,该模块以数据包为单位,将数据包中的数据按
enc_seq
字段的序列号分发给对应的密码算法模块;其中,每个密码算法模块被预先赋予唯一的序列号,对应数据包报文中的
enc_seq
字段;步骤
12
:密码算法模块对数据包进行运算;步骤
13
:经过密码算法模块处理后的数据包,报文中的
proc_seq
字段和
enc_seq
字段保持不变,经数据包整合模块处理后通过
C2H DMA
传输通道经
DPDK
驱动程序发送给上位机软件

[0008]本专利技术具有以下有益效果:本专利技术提供的基于
PCIe XDMA
实现多进程并发的方法,在现有的
PCIe 2.0 XDMA
基础上,从底层
FPGA
硬件逻辑程序

驱动程序和上位机应用程序三个部分进行设计,相互配合,满足了应用程序多进程并发的需求,并提升了系统密码运算速度

附图说明
[0009]图1为本专利技术中密码卡系统的架构示意图;图2为本专利技术中
FPGA
硬件逻辑程序执行方法的流程示意图;图3为本专利技术中
DPDK
驱动程序执行方法的流程示意图;图4为本专利技术中应用程本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种基于
PCIe XDMA
实现多进程并发的方法,用于密码卡系统,其特征在于,所述密码卡系统包括主机和连接在所述主机上的密码卡,所述主机上安装有
DPDK
,所述密码卡上设有采用
XDMA

FPGA
,其中,所述
FPGA
包括依次连接的
H2C DMA
传输通道

数据包解析模块

密码算法调度模块

密码算法模块

数据包整合模块和
C2H DMA
传输通道,所述密码算法模块为多个且并行运行;所述
FPGA
上的逻辑程序执行的方法包括:步骤
10

H2C DMA
传输通道收到主机上的应用程序经
DPDK
驱动程序发来的数据包后,经数据包解析模块对数据包进行解析和过滤;其中,所述数据包分为包头和数据两部分,在包头中定义了
proc_seq

enc_seq
两个字段,分别代表应用程序进程的序列号和要调用的密码算法模块的序列号;步骤
11
:符合格式要求的数据包,被送入密码算法调度模块,该模块以数据包为单位,将数据包中的数据按
enc_seq
字段的序列号分发给对应的密码算法模块;其中,每个密码算法模块被预先赋予唯一的序列号,对应数据包报文中的
enc_seq
字段;步骤
12
:密码算法模块对数据包进行运算;步骤
13
:经过密码算法模块处理后的数据包,报文中的
proc_seq
字段和
enc_seq
字段保持不变,经数据包整合模块处理后通过
C2H DMA
传输通道经
DPDK
驱动程序发送给上位机软件
。2.
根据权利要求1所述的方法,其特征在于,所述步骤
10
中,不符合报文格式要求的数据包被丢弃
。3.
根据权利要求1所述的方法,其特征在于,所述步骤
13
中,上位机软件根据
proc_seq
字段,将数据包传递给相应的应用程序
。4.
根据权利要求1所述的方法,其特征在于,所述
DPDK
驱动程序执行的方法包括:步骤
20
:发送端
DPDK
驱动程序在发送函数开始处添加锁,当其中一个通道的发送进入临界区后,其他通道会在入口处等待,直到前一个发送结束退出临界区释放锁后,下一个通道的数据才继续发送
。5.
根据权利要求4所述的方法,其特征在于,所述步骤
20
包括:步骤
201
:当主机要向密码卡发送数据时,
DPDK
驱动程序接收应用程序传递的缓存区
mbuf
的地址,其中该
mbuf
由应用程序填充了待发送的数据;步骤
202

【专利技术属性】
技术研发人员:王磊管彦亮苏云学刘雪飞白家栋宗成强王荣欣王培培韩志伟
申请(专利权)人:山东华翼微电子技术股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1