A checksum calculator employs a tree structure of reduction stages to
process words of a checksum data array. The number of words in the
checksum data array is compared to the number of words each of the
reduction stages might process. If the number of words in the checksum
data array is greater than the number of words that the highest level
reduction stage might process, then a portion of the checksum data array
is processed, remaining words of the checksum data array are appended to
the processed portion, and the process is repeated. If the number of
words in the checksum data array is less than or equal to the number of
words that the highest level reduction stage might process, then the
checksum data array is processed by the lowest level reduction stage that
can process the entire checksum data array.