CT_00_ - CRC Support (GCC)

CT_00_ - CRC Support (GCC)

About

Cyclic Redundancy Check (CRC) is a standardized way to implement a degree of data validation and is used in various over the wire protocols, data checksums, etc.  Naive implementations are a bitwise loop over an input message and highly inefficient.  Detection of a CRC loop and transformation into either a table lookup or a combination of clmul + shift operations can speed up such code by 2X or more.  This would include the CRC loop in the Coremark benchmark – detecting and optimizing that idiom results in about a 10% improvement in Coremark scores.

 

The detection of a CRC loop is a complex optimization with elements of vectorization, feedback loops, pattern matching, etc.  It is further complicated by function inlining.  At this time we have patches for upstream GCC that can detect and generate code (either table lookup or clmul) for a variety of CRC implementations.  An aggressive schedule would be integration in time for gcc-14, but more likely it will fall into gcc-15.

 

Stakeholders/Partners

RISE:

Ventana: 1 FTE Contractor, ~1yr.  Mariam Harutyunyan, lead developer

Ventana: Jeff Law – oversight

 

External:

 

Dependencies

 

Status

Development

IN PROGRESS

 

Development Timeline

NA

 

Upstreaming

NOT STARTED

 

Upstream Version

 

 

 

 

Contacts

Jeff Law (Ventana)

 

Dependencies

None

 

 

Updates

Jun 28, 2023 

  • Note Stakeholders/Partners in a consistent way

Jun 1, 2023– Dates on or before June 1 are approximate

  • Project reported as priority for 2H23