VoCAL Print Logo
Software >  Error Correction >  Reed Solomon >  Performance

Reed Solomon Software Performance

The following table details performance numbers for a number of specific RS (n, k) implementations for two general purpose processing architectures and one digital signal processor. Numbers are provided for both decode in the presence of no error, as well as decode in the presence of maximum channel error. Note that correcting errors requires more processing power than simply validating blocks, and that the required processing power increases linearly with the error rate. Typical applications tend to keep the error rate low such that active correction is not required.

The two digit hexadecimal number in each column specifies the GF(255) primitive polynomial used to generate the underlying Galois field.

The listed performance numbers are:

  • CPB - Cycles Per Block, how many cpu cycles are required to perform this step of the algorithm for each block of data, and
  • MBPS @ 1GHz - maximum throughput in MBits/sec for each 1.0 GHz of processing power (bit rate measured on the data side, not the channel side.)

All measurements are for optimized C code for the particular architecture, compiled with GCC and -O4 optimizations. No hardware acceleration or SIMD instruction optimizations were used.



Table 1 - x86

 RS (255,191) 0x1DRS (255,223) CCSDS 0x87RS (255,239) 0xCFRS (255,247) 0x2DRS (255,251) 0x63
CPBMBPS @ 1GHzCPBMBPS @ 1GHzCPBMBPS @ 1GHzCPBMBPS @ 1GHzCPBMBPS @ 1GHz
Encode  10854164.410552.5181.26406.88308.45075.25395.6
Decode
(no errors)
  3899445.819597.597.69045218.54422454.1
Decode
(max errors)
  12066714.852511.2536.420602.595.910251195.9
Decode
(max erasures)
          



Table 2 - ARM 920T

 RS (255,191) 0x1DRS (255,223) CCSDS 0x87RS (255,239) 0xCFRS (255,247) 0x2DRS (255,251) 0x63
CPBMBPS @ 1GHzCPBMBPS @ 1GHzCPBMBPS @ 1GHzCPBMBPS @ 1GHzCPBMBPS @ 1GHz
Encode10000015.285125034.814100046.632966766.612300087.3
Decode
(no errors)
12400012.327050025.33500054.6318667105.868750229.49
Decode
(max errors)
4620003.312185008.169650019.814616742.82166792.68
Decode
(max erasures)
6480002.363025005.914225013.446933428.53316760.54



Table 3 - TI C5502

 RS (255,191) 0x1DRS (255,223) CCSDS 0x87RS (255,239) 0xCFRS (255,247) 0x2DRS (255,251) 0x63
CPBMBPS @ 1GHzCPBMBPS @ 1GHzCPBMBPS @ 1GHzCPBMBPS @ 1GHzCPBMBPS @ 1GHz
Encode1900008.0411000016.226500029.423500056.4620000100.4
Decode
(no errors)
1950007.8410000017.844500042.492500079.04133334150.6
Decode
(max errors)
5250002.912400007.4311000017.385500035.933000066.93
Decode
(max erasures)
6800002.253250005.4915500012.348000024.74000050.2