Rate This Document
Findability
Accuracy
Completeness
Readability

Overview

Kunpeng Accelerator Engine (KAE) is a hardware acceleration solution based on Kunpeng 920 series processors. It includes KAE encryption and decryption as well as KAEzip. This document describes KAEzip, its installation and test procedures, and use cases.

KAE encryption and decryption and KAEzip are used to accelerate SSL/TLS applications and data compression, respectively. They can significantly reduce processor consumption and improve processor efficiency. In addition, KAE shields the internal processing details from the application layer. You can quickly migrate services by using the standard OpenSSL, zstd, LZ4, and zlib interfaces.

KAE Version Description

KAE is an accelerator developed based on the Kunpeng 920 processor. It uses two driver frameworks: Warpdriver (WD) and User Space Accelerator Development Kit (UADK). It has two sets of code for different kernel versions: KAE 1.0 and KAE 2.0. Table 1 describes the differences.

Table 1 Differences between two KAE code branches

Code Branch

KAE 1.0

KAE 2.0

Supported Kernel Version

4.19

5.10

Corresponding KAE Version

1.x.x

2.x.x

Modules Contained in the Source Code

Kernel driver, user-mode driver, OpenSSL-based KAE, and zlib library

KAE kernel driver, UADK framework, KAEOpensslEngine, KAEZstd, KAELz4, and KAEZlib

KAEZlib

KAEZlib is a compression module of KAE. It uses the Kunpeng hardware acceleration module to implement the Deflate algorithm and works with the lossless user-mode driver framework to provide an interface for high-performance compression in gzip or zlib format.

  • It supports the zlib and gzip data formats, and complies with the RFC1950 and RFC1952 standards.
  • It supports the Deflate algorithm.
  • The compression level and window length can be configured.
  • It supports the synchronous mode.
  • Maximum compression bandwidth of a single Kunpeng 920 processor: 7 GB/s; maximum decompression bandwidth of a single Kunpeng 920 processor: 8 GB/s
  • Supported compression ratio: approximately equal to 2, which is the same as that of the zlib 1.2.11 interface.

KAE can be used to improve application performance in different scenarios. For example, in distributed storage scenarios, the zlib library is used to accelerate data compression and decompression. In addition, the KAEGzip compression tool is provided based on the zlib library, enabling you to compress and decompress files without calling APIs.

KAEZstd

KAEZstd is a compression module of KAE. It uses the Kunpeng hardware acceleration module to implement the lz77_zstd algorithm and provides the standard zstd library interface.

  • It allows general compression and decompression, but does not support the zstd dictionary mode or multi-thread mode.
  • It supports compression hardware acceleration but not decompression hardware acceleration.
  • Both small packets (less than 64 KB) and large packets (greater than 1 GB) can be compressed.
  • The zstd compression level can be configured.

KAE can improve application performance in different scenarios and significantly enhances compression efficiency.

KAELz4

KAELz4 is a compression module of KAE. It uses the Kunpeng hardware acceleration module to implement the lz77_lz4 algorithm and provides the standard LZ4 library interface.

  • The lz4_block_format and lz4_frame_format formats are supported.
  • It supports compression hardware acceleration but not decompression hardware acceleration.

For details about the operations and applications of KAEZlib, KAEZstd, and KAELz4, see the following sections.