1. A method for turbo decoding, the method comprises: performing multiple iterations of a turbo decoding process until a turbo decoding process is completed; wherein the performing comprises repeating the stages of: initializing at least one state metric of multiple windows of a 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, at least forward state metrics and backward state metrics of the multiple windows, during the current iteration.