Intel® QAT加速卡之Linux上编程说明
QAT Software for Linux
1. Introduction
该程序员指南提供了有关软件体系结构和使用指南的信息。 相关的英特尔QAT软件库文档中记录了有关使用英特尔QuickAssist技术(英特尔QAT)API的信息,这些API提供了加速服务(加密和数据压缩)的接口。
1.1 术语
- 软件包用作硬件版本1.7的英特尔QAT软件包的通用术语
- 加速驱动程序用作允许英特尔QAT软件库API访问英特尔QAT端点的通用术语
Table 1. 常用术语列表
Term | Description |
---|---|
ADF | Acceleration Driver Framework |
AES | Advanced Encryption Standard |
ASIC | Application Specific Integrated Circuit |
BDF | Bus Device Function |
CBC | Cipher Block Chaining mode |
CCM | Counter with CBC-MAC mode |
CnV | Compress and Verify |
CnVnR | Compress and Verify and Recover |
CY | Cryptography |
DC | Data Compression |
DID | Device ID |
DMA | Direct Memory Access |
DTLS | Datagram Transport Layer Security |
DRAM | Dynamic Random Access Memory |
DSA | Digital Signature Algorithm |
ECC | Elliptic Curve Cryptography |
EVP | Envelope (OpenSSL high-level cryptographic functions) |
GCM | Galois/Counter Mode |
GPL | General Public License |
HMAC | Hash-based Message Authentication Mode |
IA | Intel Architecture |
IDS/IPS | Intrusion Detection System/Intrusion Prevention System |
IEEE | Institute of Electrical and Electronics Engineers |
IKE | Internet Key Exchange |
Intel QAT | Intel QuickAssist Technology |
IOCTL | Input Output Control function |
IOMMU | Input-Output Memory Management Unit |
IPSec | Internet Protocol Security |
LKCF | Linux* Kernel Cryptographic Framework |
MGF | Mask Generation Function |
MSI | Message Signaled Interrupts |
NUMA | Non-uniform Memory Access |
PCH | Platform Controller Hub. In this manual, a Platform Controller Hub device includes standard interfaces and Intel QAT Endpoint and I/O interfaces. |
RSA | Rivest-Shamir-Adleman |
SAL | Service Access Layer |
SATA | Serial Advanced Technology Attachment |
SGL | Scatter Gather List |
SHA | Secure Hash Algorithm |
SoC | System-on-a-Chip |
SPI | Serial Peripheral Interconnect |
SR-IOV | Single Root I/O Virtualization |
SSC | Storage Subsystem Class |
SSL | Secure Sockets Layer |
TCG | Trusted Computing Group |
TLS | Transport Layer Security |
TPM | Trusted Platform Module |
USDM | User Space DMA-able Memory |
VF | Virtual Function |
VPN | Virtual Private Network |
WAN | Wide Area Network |
Table 2. 文档索引编号
Document | Document #/ Location |
---|---|
Intel QuickAssist Technology Software for Linux* Release Notes (Hardware Version 1.7) | 336211 |
Intel QuickAssist Technology Software for Linux* Getting Started Guide (Hardware Version 1.7) | 336212 |
Intel QuickAssist Technology API Programmer’s Guide | 330684 |
Intel QuickAssist Technology Cryptographic API Reference Manual | 330685 |
Intel QuickAssist Technology Data Compression API Reference Manual | 330686 |
Using Intel Virtualization Technology (Intel VT) with Intel QuickAssist Technology Application Note | 330689 |
1.2 印刷说明
略。
2. Software Overview
除了第3.1节“硬件/软件概述”中提到的硬件外,各个平台还包含一些重要的软件组件,这些组件是产品的一部分。 该软件包括在英特尔架构(IA)CPU和英特尔QAT端点上运行的驱动程序和加速代码 。
2.1 通讯芯片系列兼容性
尽管本文档的重点是针对硬件版本1.7的英特尔QAT软件,但也支持英特尔通信芯片组8925至8955系列。
2.2 逻辑实例
逻辑实例可被视为通往硬件的通道。 逻辑实例允许地址域(即内核空间和单个用户空间进程)配置要由该地址域使用的环,并定义该环的行为。
逻辑实例详细说明及各结构间的组织关系
2.2.1 响应处理
在内核空间中,可以将每个逻辑实例配置为在以下其中一个中运行:两种模式:
- 中断模式
- 轮询模式
在用户空间中,可以将每个逻辑实例配置为在两个实例之一中运行模式:
轮询模式
epoll轮询模式
2.2.1.1 中断模式
只有在内核空间中才支持中断模式。 在用户空间中,不再支持中断模式; 因此,不能再将用户空间实例配置为中断模式。在中断模式下配置时,加速器驱动程序框架(ADF)注册一个中断处理程序到响应环处理中。由于服务中断的等待时间可能很昂贵,因此硬件辅助环提供了一种机制,可将中断成本摊销为(可为多个响应提供服务的)单个中断。 配置文件的中断合并部分允许用户选择使用以下方法摊销响应中断:基于时间的中断方案或基于响应数的方案。
ADF注册了一个中断处理程序来处理环形存储区中断。 触发中断时,ADF为该中断提供服务并创建一个中断处理程序的下半部分,以消耗响应环的响应。 当支持MSI-X时,将创建中断处理程序的下半部分并将其关联到已配置的内核, 对应用程序代码的回调发生在此Tasklet的上下文中。 下图显示了此序列(为清楚起见,对整个处理流程进行了精简)。
2.2.1.2 Polled Mode
由于使用中断服务和在中断下半部中执行中断处理程序成本较高,用户不想使用中断模式,则可以选择禁用中断并轮询响应。 通过将配置文件中逻辑实例的Dc / CyXIsPolled属性设置为1,可以基于每个逻辑实例配置此机制。配置为1时,ADF不为该逻辑实例提供中断服务。
ADF框架提供了一组API,允许客户轮询给定加速器上的单个存储区或所有存储区:
icp_sal_pollBank : 轮询指定加速器上指定存储区上的响应环
icp_sal_pollAllBanks :轮询指定加速器上所有存储区上的响应环
服务访问层(SAL)提供了一组API来轮询单个逻辑实例:
icp_sal_CyPollInstance : 轮询特定的加解密逻辑实例
icp_sal_DcPollInstance :轮询特定的数据压缩逻辑实例
2.2.1.3 Epolled Mode
基于事件的轮询模式称为“ epoll模式”。 英特尔QAT技术驱动程序的新模式支持Linux epoll接口。 Linux epoll是一种可扩展的I / O事件通知机制,旨在替代较早的select / poll系统调用。
要使用Linux epoll,用户空间应用程序需要使用以下API:
- ***epoll_create()/ epoll_create1()***:创建一个epoll实例并返回引用该实例的文件描述符
- ***epoll_ctl()***:在发生轮询的地方注册文件描述符。
- ***epoll_wait()***:等待通过epoll_ctl注册的文件描述符的I / O事件,如果当前没有可用事件,则阻塞调用线程。
驱动程序的epoll模式由两部分组成:内核空间部分和用户空间部分。合并字段为epoll模式公开了相同的行为。 如果通过更改合并字段延迟了中断,则向用户空间的事件传递也将延迟。
要启用epoll模式,请确保遵循以下步骤:
①. 在配置文件中,请对用户空间实例使用“ IsPolled = 2”; 例如:
Cy0Name = “SSL0”
Cy0IsPolled = 2
②. 无论应用程序以同步方式还是异步方式使用驱动程序,它都应创建一个线程来调用英特尔QuickAssist Technology驱动程序的epoll API和Linux标准epoll接口。
QAT驱动程序的epoll API接口如下:
Crypto:
icp_sal_CyGetFileDescriptor()
icp_sal_CyPutFileDescriptor()
Compression:
icp_sal_DcGetFileDescriptor()
icp_sal_DcPutFileDescriptor()
Linux 标准epoll接口如下:
epoll_create()
epoll_ctl()
epoll_wait()
当存储区采用epoll模式时,这意味着该存储区只有一个实例(加密或压缩)。 当某一个进程正在使用此实例时,意味着此进程是该存储区的唯一用户。 其他进程暂时无法使用此存储区。 但是,如果进程释放该实例,则其他进程可以使用该库。 由于该存储区只有一个实例,因此最多有16个用户空间实例可用于为epoll模式配置所有存储区。 (对于英特尔通信芯片组8925-8955系列,最多可以使用32个用户空间实例。)
如果一个进程需要同时提供压缩和加密服务,则将需要两个实例,这意味着该进程需要两个存储体。 在这种情况下,最多只能使用八个进程。 (对于英特尔通信芯片组8925-8955系列,最多可以使用16个进程。)
为了进行比较,当CPU处于空闲状态时,对于用户空间实例,标准轮询模式(“ IsPolled = 1”)将定期轮询空环,并且轮询将消耗一些CPU周期(例如当CPU处于空闲状态时,CPU使用率可能维持在2% )。 但是,如果使用epoll模式,则当CPU处于空闲状态时,CPU使用率将保持为0%。
对于用户空间实例,不再支持中断模式。 当响应环中没有数据时,用户空间的中断模式不会占用CPU周期,而与轮询模式不同,轮询模式会按指定的时间间隔继续进行检查。 有了epoll支持,可以使用标准的Linux * epoll API,例如epoll_create()/ epoll_ctl()/ epoll_wait()。
目前,大多数Web服务器和基于套接字的应用程序(例如Nginx *,Apache *等)都会使用epoll / select / poll之一来进行通知(当套接字可用于读取或写入时),然后采取适当的措施。 通过epoll模式,QAT驱动程序将与现有应用程序进行更无缝的集成,例如作为Nginx *,因为它将使用标准的通知机制。
Intel® QAT加速卡之Linux上编程说明的更多相关文章
- Intel® QAT加速卡之加密、哈希操作流程和示例
Intel QAT 加密API介绍 文章主要讲述了Intel QAT 加密API接口的说明,以及多种应用场景下的使用方法. 文章目录 Intel QAT 加密API介绍 1. 概述 1.1 会话(se ...
- Intel® QAT加速卡之逻辑实例
Intel QAT加速卡逻辑实例 1. QAT相关的名词组织关系 在本手册中描述的平台上,处理器可以连接到一个或多个英特尔通信芯片组8925至8955系列(PCH)设备. 从软件角度来看,每个PCH设 ...
- Intel® QAT 加速卡之IPSec示例
Intel QAT 加速卡之IPSec示例 文章目录 Intel QAT 加速卡之IPSec示例 1. QAT处理IPSec入站报文 2. QAT处理IPSec出站报文 3. 组织架构 4. 示例源码 ...
- Intel® QAT加速卡之同步异步模式
QAT 的两种操作模式 Intel QAT API同时支持同步和异步两种操作模式. 为了获得最佳性能,该应用程序应能够向加速引擎提交多个未完成的请求. 提交多个未完成的请求可最大程度地减少加速引擎上的 ...
- Intel® QAT加速卡之性能简介
Intel QuickAssist Adapter 8950 设备简介 支持英特尔QuickAssist技术的英特尔QuickAssist适配器提供加密加速和压缩加速服务. 1. Key featur ...
- Intel® QAT加速卡之编程demo框架
QAT demo流程框架 示例一: 代码路径:qat1.5.l.1.13.0-19\quickassist\lookaside\access_layer\src\sample_code\functio ...
- Intel® QAT加速卡之Ring & Ring Bank
1. QAT的应用模式 Intel 通讯系列芯片对于每种受支持的加速服务(加密,数据压缩),都支持以下应用模式: 内核模式,其中应用程序和加速服务都在内核中运行空间. 用户空间直接访问在用户空间中运行 ...
- Intel® QAT 加速卡之数据面流程(图)
QAT数据面流程 sessionSetupData数据结构 pOpData数据结构
- 使用.NetCore在Linux上写TCP listen 重启后无法绑定地址
拥抱.net core的过程中, 将公司的一套java项目改成了.net core 2.0版的. 里面的tcp服务被我用msdn的SocketAsyncEventArgs方式重写了, 然而在测试的过程 ...
随机推荐
- 双击映射坚果云网盘并打开的AHK源代码
双击映射坚果云网盘并打开的AHK源代码 #SingleInstance,force ;当此脚本已经运行时自动替换旧实例再次运行.#Persistent ;让脚本持久运行(即直到用户关闭或遇到 Exit ...
- for,while,until三种循环
目录 一.echo命令-改变输出字符串或者提取shell变量的值 1.1..格式 2.2.常用参数 二.for循环语句 2.1.for循环结构 示例1 示例2 三.while循环语句结构 示例1 示例 ...
- ip地址分配
目录 一.子网划分基础 二.子网划分的原理 三.IP地址汇总 四.ip地址规划 一.子网划分基础 二进制: 特点:基数为2,数值部分用2个不同的数字符号0.1表示逢二进一 IP地址:IP地址由32位二 ...
- Java书单-比较全的一篇
本文已收录至码云:https://gitee.com/jalon2015/java-book 前言 之前写过一篇,Java核心书单,里面涵盖了几本主要的Java书籍: 后来有朋友反馈说,这几本太少了, ...
- 关于c++ STL map 和 unordered_map 的效率的对比测试
本文采用在随机读取和插入的情况下测试map和unordered_map的效率 笔者的电脑是台渣机,现给出配置信息 处理器 : Intel Pentium(R) CPU G850 @ 2.90GHz × ...
- MySQL Replication Thread States
1.主节点线程状态(Replication Master Thread States): Finished reading one binlog; switching to next binlog 线 ...
- Java面板Panel的使用,监听窗口关闭事件
面板Panel的使用 待解决问题: 1.设计模式:适配器模式 2.frame.setLayout(null); package GUI; import javax.swing.*; import ja ...
- 零基础学Java之Java学习笔记(二):Java快速入门
提出要求: 开发一个 HelloWorld.java 程序,可以输出 "Hello,world!" 开发步骤: (1)将 Java 代码编写到扩展名为 HelloWorld.jav ...
- 题解 P5038 [SCOI2012]奇怪的游戏
题解 题目 做这题之前,做了一道叫星际战争的题,很容易想到二分 \(+\) 网络流,那么二分啥呢? 我们先推一下式子,因为是对相邻格子加数,那么可以联想到黑白染色类问题. 设有黑色格子 \(B\) 个 ...
- flutter 常用视图组件
1.custom class widget main.dart 1 import 'package:flutter/material.dart'; 2 import './pages/custom.d ...