<p>A method of decoding a stream of encoded bits received via a transmission channel to produce decoded bits. The method comprises: storing a first operand comprising a sequence of bits output from a trace-back execution unit; storing a second operand comprising a sequence of history bits generated by a forward trellis iteration in the Viterbi decoder; generating a result operand by using a set of bits of the first operand to select a bit from the second operand, and replacing a bit of the first operand with the selected bit from the second operand, wherein a sequence of decoded bits is produced by carrying out the steps of using and replacing multiple times.</p>