CRC Pipeline for Overlapping Window Checksums

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing methods for calculating cyclic redundancy checks (CRCs) for large data blocks require significant circuit logic, which can be cost-prohibitive and inefficient, especially when calculating sequential CRCs for overlapping portions of a data block, leading to increased space and time requirements.

Innovation Solution

A CRC pipeline with multiple stages, each using CRC calculators and shifters to modify CRC values by removing the effect of a sub-portion and adding a neighboring portion, optimizing circuitry by using progressively smaller offsets and leveraging leading or trailing zeros to reduce logic complexity, allowing for the calculation of sequential CRCs without the need for parallel CRC calculators.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If parallel CRC calculators are used to calculate sequential CRCs for overlapping portions of data block, then calculation speed is improved, but circuit logic size increases exponentially

Engineering Contradiction:
Improvecalculation speedVSAvoidcircuit logic size
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent segments the calculation process into multiple stages, where each stage handles a specific offset value. Instead of using parallel CRC calculators for all possible offsets, the system divides the work into sequential stages that process different offset ranges, reducing the circuit logic required in each individual stage while maintaining overall calculation capability.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces a new dimension to the problem by adding an offset parameter to the CRC calculation. Instead of simply calculating CRCs for fixed-size blocks, the system calculates CRCs with variable offsets, allowing overlapping portions to be handled through a single unified calculation framework rather than requiring separate parallel calculators for each overlap scenario.

Inventive Principle:
Principle #17Another dimension (Dimensionality change)

2Reliability

If CRC calculators are used to calculate sequential CRCs with overlapping portions, then data transmission error detection capability is improved, but space requirements increase

Engineering Contradiction:
Improveerror detection capabilityVSAvoidspace requirements
Core Design Contradiction:
ReliabilityVSArea of stationary object

Solution Approach 1:

The patent segments the data block processing into multiple stages, each handling a specific offset range. This segmentation allows the system to maintain comprehensive error detection coverage across all overlapping portions while using a single CRC calculator that processes data in sequential stages, thereby reducing the space requirements compared to having parallel calculators for each overlap scenario.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent makes a single CRC calculator universal by enabling it to handle multiple offset values through staged processing. The same calculator unit is reused across different stages with different offset configurations, allowing it to perform the function of multiple specialized calculators while occupying only the space of one, thus reducing overall space requirements while maintaining error detection capability.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Data Source

PatentUS9154161B1Calculating cyclic redundancy checks over overlapping windows of streaming data
Publication Date: 2015.10.06 CISCO TECHNOLOGY INC
  • US9154161B1 patent drawing
  • US9154161B1 patent drawing
  • US9154161B1 patent drawing

AI summary

To calculate sequential CRCs, a CRC pipeline may be used to calculate the sequential CRCs for a block of data The CRC pipeline includes a plurality of stages, where, in each subsequent stage a CRC calculated from a previous stage is used to calculate an offset CRC. For example, using at least one CRC calculator and CRC shifter, a stage in the pipeline removes an effect of first portion of the data represented by a previously calculated CRC from the CRC and then adds an effect of a second portion of data neighboring the first portion in a received data block to yield an offset CRC. For example, a stage may change CRC(0:63) to CRC(32:95) by removing the effect of bytes 0:31 and adding the effect of bytes 64:95. At each stage, the byte offset may get smaller until all the sequential CRCs have been calculated.