1. A method for turbo decoding, the method comprises: initializing a first iteration of a turbo decoding process by setting a state metric of a window of multiple windows of a channel data block with data stored in a memory unit, and setting the remaining state metrics of the remaining multiple windows to zero; calculating in parallel, during the first iteration, at least forward state metrics and backward state metrics of the multiple windows; and performing multiple additional iterations of the turbo decoding process until the turbo decoding process is completed; wherein the performing the multiple additional iterations comprises repeating the stages of: initializing at least one state metric of multiple windows of the channel data block for a current iteration of the turbo decoding process by at least one corresponding state metric that was calculated during a previous iteration of the turbo decoding process; and calculating in parallel, during the current iteration, at least forward state metrics and backward state metrics of the multiple windows.