[dpdk-dev] [PATCH v6 0/7] rte_hash_crc reworked to be platform-independent

Yerden Zhumabekov e_zhumabekov at sts.kz
Thu Jan 29 09:48:11 CET 2015


This is a rework of my previous patches improving performance of rte_hash_crc.

Summary of changes:
* software implementation of CRC32 introduced;
* in the runtime, algorithm can fall back to software version if CPU doesn't support SSE4.2;
* best available algorithm is automatically detected upon application startup;
* redundant compile checks removed from test utilities;
* assembly code for emitting SSE4.2 instructions is used instead of built-in intrinsics;
* rte_hash_crc() function performance significantly improved.

v6 changes:
* added 'const' qualifier to crc32c lookup tables declaration.

v5 changes:
* given up gcc's builtin SSE4.2 intrinsics;
* add assembly code for emitting SSE4.2 instructions.

v4 changes:
* icc-specific compile checks removed.

v3 changes:
* setting default algorithm implementation as a constructor while application startup;
* crc32 software implementation improved;
* removed compile-time checks from test_hash_perf and test_hash.

v2 changes:
* added CRC32 software implementation;
* added rte_hash_crc_set_alg() function to control availability of SSE4.2;
* added fallback to sw crc32 in case SSE4.2 is not available, or if SSE4.2 is intentionally disabled.

Initial version (v1) changes:
* added rte_hash_crc_8byte() function to calculate CRC32 on 8-byte operand;
* reworked rte_hash_crc() function which leverages both versions of CRC32 hash calculation functions with 4 and 8-byte operands.


Yerden Zhumabekov (7):
  hash: add software CRC32 implementation
  hash: add assembly implementation of CRC32 intrinsics
  hash: replace built-in functions implementing SSE4.2
  hash: add rte_hash_crc_8byte function
  hash: add fallback to software CRC32 implementation
  hash: rte_hash_crc() slices data into 8-byte pieces
  test: remove redundant compile checks

 app/test/test_hash.c           |    7 -
 app/test/test_hash_perf.c      |   11 -
 lib/librte_hash/rte_hash_crc.h |  459 +++++++++++++++++++++++++++++++++++++++-
 3 files changed, 448 insertions(+), 29 deletions(-)

-- 
1.7.9.5



More information about the dev mailing list