the following variables will be used in describing the present invention : α k is the state metric of the map decoder in the forward direction at the k - th step ; a k is a natural log value of the state metric α k of the map decoder in the forward direction at the k - th step ; β k is the state metric of the map decoder in the reverse direction at the k - th step ; b k is the natural log value of the state metric β k of the map decoder in the reverse direction at the k - th step ; lle k is the extrinsic information of the map decoder for the k - th symbol ; llr k is the natural log value of the extrinsic information of the map decoder for the k - th symbol ; m (= 2 m ) is the number of discrete states in the collection state space s ; y k is the k - th parity code word on the decoding path ; dp k is the k - th parity code word fed into the decoder ; s + is the sub - collection of the states transferred from s ′ to s , ( s ′→ s ), when x k =+ 1 ; s − is the sub - collection of the states transferred from s ′ to s , ( s ′→ s ), when x k =− 1 ; fig1 is a simple block diagram representing a turbo encoder and a turbo decoder . the turbo encoder 107 is formed by a combination of two simple encoders 109 and 110 . assuming a source data frame 101 with length information bits , the first encoder 109 receives as its input the information bits in its original from . the same length information bits are fed through an interleaver 111 that permutes the information bits before inputting them into the second encoder 110 . the two encoders 109 and 110 generate parity symbols 103 ( y ) and 104 ( y ′) from two recursive convolutional codes , respectively . the parity symbols are used in the two recursive decoders at the receiver , respectively , to produce independent , extrinsic information to help decoding algorithm convergence . these encoded information bit streams , as well as source data 102 ( x ) are then punctured by the puncturing mechanism 118 to save bandwidth . puncturing is a selection scheme for parity symbols 103 ( y ) and 104 ( y ′) according to the coding rate . the punctured information bit streams are transmitted through a noisy discrete memoryless channel 117 , and received and de - punctured at a puncturing mechanism 119 at the decoder 108 . in the decoder 108 , a demodulator ( not shown ) sends soft information relating to the received bit stream , i . e ., probabilities of the received values . these probabilities can be interpreted as containing the received information bit value and the associated confidence value , which indicates how likely this information bit is correct . firstly , the parity bit streams 105 a ( ds ) and 105 ( dp ) of the received information bits are fed to the first decoder 112 . the first decoder 112 evaluates and combines the probabilities of the input bit streams to refine the soft information so that the confidence level of individual bits being correct is maximized , since the maximum a posteriori decoding based on the bcjr algorithm is used in the decoder . the refined probabilities are fed into the second decoder 115 along with the de - interleaved information bit stream and the second parities bit stream 106 ( dp ′), again producing enhanced soft information . after a predetermined number of iterations , the decoding process is completed , and the soft values are available at the output . according to the study in “ near shannon limit error - correcting coding and decoding turbo codes ,” proc . 1993 int . conf . on comm ., pp . 1064 - 1070 , which is incorporated herein by reference , the improvement of bit error rate ( ber ) worsens with the increase in the number of iteration . to simplify the implementation , the number of iterations is preferably selected as 7 or slightly bigger , although the invention is not limited to this range . when data is exchanged between the two decoders 112 and 115 , the soft values are reordered to match the interleaving structure . this is preformed by the interleaver 113 and de - interleaver 116 . an interleaver is a device that rearranges the ordering of a sequence of symbols in some one to one deterministic manner . associated with any interleaver is a de - interleaver , which is the device that restores the reordered sequence to its original ordering . the parity symbol information from two parallel recursive convolutional encoders is used in two decoders respectively . the extrinsic information from decoder i 112 must be interleaved to produce the same sequence order with the parity information generated by encoder ii 110 . the interleaved extrinsic information and source symbol information are fed into decoder ii 115 with the parity information generated by encoder ii 110 to perform the second decoding step . the extrinsic information from decoder ii 115 is fed into de - interleaver 116 to restore its original ordering , which is the same ordering with source symbol information ds 104 and parity information dp 119 generated by encoder i 109 . thus , decoder i 112 can work correctly to calculate the extrinsic information for the next iteration . fig2 is a simplified decoding path for the turbo code with a length = 17 and s = 8 . in a map decoder , there are 8 states 202 corresponding to each step . each state transits to two states of the next step corresponding to the input information bit being zero 203 and one 204 , respectively . the map decoder evaluates and combines the probabilities of the received data 201 from head to tail to obtain forward state metrics α , and from tail to head to obtain reverse state metrics β . then the map decoder uses the forward and reverse state metrics to refine the soft information , i . e ., the map decoder finds out the optimal decoding path 205 from all possible paths . the optimal decoding path 205 is the best guess for all input data . in the forward direction , the state metrics α k =( α k ( 0 ), α k ( 1 ), . . . , α k ( m − 1 )) are obtained with α k − 1 =( α k − 1 ( 0 ), α k − 1 ( 1 ), . . . , α k − 1 ( m − 1 )). in the reverse direction , the state metrics β k =( β k ( 0 ), β k =( 1 ), . . . , β k ( m − 1 )) are obtained with β k + 1 =( β k − 1 ( 0 ), β k − 1 ( 1 ), . . . , β k − 1 ( m − 1 ). according to the map algorithm , the state metrics represent the state transition probabilities from one step to the next step . if overflow occurs during state metrics updating due to the limited bit width of the state metrics in the implementation , errors are generated , and the errors will propagate inside the map decoder . thus , the state metrics must be normalized by the term σ s σ s ′ α k − 1 ( s ′) γ k ( s ′, s )· α k and β k − 1 are calculated as following α k ⁡ ( s ) = ∑ s ′ ⁢ α k - 1 ⁡ ( s ′ ) ⁢ γ k ⁡ ( s ′ , s ) ∑ s ⁢ ∑ s ′ ⁢ α k - 1 ⁡ ( s ′ ) ⁢ γ k ⁡ ( s ′ , s ) ( 1 ) β k - 1 ⁡ ( s ′ ) = ∑ s ⁢ β k ⁡ ( s ) ⁢ γ k ⁡ ( s ′ , s ) ∑ s ⁢ ∑ s ′ ⁢ α k - 1 ⁢ ( s ′ ) ⁢ γ k ⁢ ( s ′ , s ) ( 2 ) the state transition probability γ k ( s ′, s ), the branch metrics , is defined as γ k ⁡ ( s ′ , s ) = p ⁡ ( s k = s / s k - 1 = s ′ ) = exp ⁡ [ 1 2 ⁢ x k ⁡ ( lle k + l c ⁢ ds k s ) + 1 2 ⁢ l c ⁢ dp k ⁢ y k ] = exp ⁡ [ 1 2 ⁢ x k ⁡ ( lle k + l c ⁢ ds k s ) ] · γ k e ⁡ ( s ′ , s ) where γ k e ⁡ ( s ′ , s ) = exp ⁡ [ 1 2 ⁢ l c ⁢ dp k ⁢ y k ] . fig3 is a simplified schematic block diagram of representative , illustrative interconnection of resources detailing the operations of the map decoder using a known method . the received data 302 and the extrinsic information of the previous iteration 308 are fed into the branch metric calculation unit 303 from the received data memory 301 and the extrinsic information of the previous iteration 314 , respectively , to generate the branch metric γ k e 304 for the likelihood ratio calculation , γ kƒ 310 for the state metrics updating in the forward direction and γ kr 309 for the state metrics updating in the reverse direction . the state metrics - updating unit in the forward direction 312 uses γ kƒ 310 from the branch metric calculation unit 303 and the state metrics in the previous step α kƒ 319 from the metric buffer / memory 316 to update the state metrics α kƒ + 1 318 in the forward direction . the state metrics - updating unit in the reverse direction 311 uses γ kr 309 from the branch metric calculation unit 303 and the state metrics in the previous step β kr 315 from the metric buffer / memory 316 to update the state metrics β kr − 1 317 in the reverse direction . when the branch metrics γ k e 304 and the state metrics ( α k − 1 , β k ) 313 in both recursion directions are available at the inputs of the likelihood ratio calculation unit 305 , the likelihood ratio lle ( k ) 306 is generated and stored in the extrinsic information buffer / memory for the next iteration . in order to simplify the computation , the known log - map algorithm , such as has been shown in robertson et al . “ a comparison of optimal and suboptimal map decoding algorithms operation in the log domain ,” proc . 1995 int . conf . on comm ., pp . 1009 - 1013 and in viterbi , “ an intuitive justification and a simplified implementation of the map decoder for convolutional codes ,” ieee jsac , pp . 260 - 264 , february 1998 , each of which is incorporated herein by reference , is employed in most implementations . the simplification is llr k = ∑ s + ⁢ α k - 1 ⁡ ( s ′ ) ⁢ γ e ⁡ ( s ′ , s ) ⁢ β k ⁡ ( s ) ∑ s - ⁢ α k - 1 ⁡ ( s ′ ) ⁢ γ e ⁡ ( s ′ , s ) ⁢ β k ⁡ ( s ) ; ( 4 ) γ k ⁡ ( s ′ , s ) = ln ⁡ ( p ⁡ ( s k = s / s k - 1 = s ′ ) ) = 1 2 ⁢ x k ⁡ ( llr k + l c ⁢ ds k s ) + 1 2 ⁢ l c ⁢ dp k ⁢ y k = 1 2 ⁢ x k ⁡ ( llr k + l c ⁢ ds k s ) + γ k e ⁡ ( s ′ , s ) where γ k e ⁡ ( s ′ , s ) = 1 2 ⁢ l c ⁢ dp k ⁢ y k . jacobian equality can be used to simplify the exponential computation in log - map algorithm as follows : in ( e a + e b )= log_sum ( a , b )= max ( a , b )+ ln ( 1 + exp (−| b − a |) ( 5 ) for implementation , in ( 1 + exp (−| b − a |)) can be realized with a lookup table . according to previous studies , e . g ., in robertson et al ., mentioned above , a lookup table size of 8 can provide enough accuracy . according to the idea of map and log map algorithms , state metrics at each step consists of a set of numbers limited within upper and lower boundaries . a state metric with the largest value means the state is the correct state on the optimal decoding path with the highest probability . if a k ( s ) is the maximum , s is the correct state with the highest probability at the k - th step in the forward direction . if b k ( s ) is the maximum , s is the correct state with the highest probability at the k - th step in the reverse direction . in equations ( 3 ) and ( 8 ), the maximum of { α k − 1 ( s ′)}/{ a k − 1 ( s ′)} and the maximum of { β k ( s )}/{ b k ( s )} give the main contribution to lle k and llr k . if ds k =+ 1 transmits at the output of the encoder and the estimate of the decoder is correct , lle k / llr k is close to the upper boundary . if ds k =− 1 transmits at the output of the encoder and the estimate of the decoder is correct , lle k / llr k is close to the lower boundary . if the value of lle k / lle k is closer to the upper or lower boundary , the confidence of the estimate is higher at the k - th step . if the current maximum metric is much larger than the previous maximum metric , lle k / lle k will converge at the correct estimate sooner . thus , it is important to know which state has the relative maximum , rather than the absolute maximum . for a map algorithm in turbo decoding , including the max log - map algorithm , any one of the updated state metrics from equations ( 1 ) and ( 2 ) of each recursion direction can be selected as the embedded metric , for example , α ′ k ( 0 ) and β ′ k − 1 ( 0 ) are selected as the embedded metrics for the forward and reverse directions , respectively . the embedding procedure is as follows : β k − 1 ( s )= β ′ k − 1 ( s )/ β ′ k − ( 0 ), s ∈ s ( 10 ). for a log - map algorithm in turbo decoding , any one of the updated state metrics from equations ( 6 ) and ( 7 ) of each recursion direction can be selected as the embedded metric , for example , a ′ k ( 0 ) and b ′ k − 1 ( 0 ) are selected as the embedded metrics for the forward and reverse directions , respectively . the embedding procedure is as follows : a k ( s )= a ′ k ( s )− a ′ k ( 0 ), s ∈ s ( 11 ); b k − 1 ( s )= b ′ k − 1 ( s )− b ′ k − 1 ( 0 ), s ∈ s ( 2 ). after the embedding procedure of map and log - map , the original relationship among the updated state metrics is maintained in the new set of state metrics due to the linear operations of division and subtraction . the embedded metric is always equal to a constant , i . e ., one for a map decoder and zero for log a map decoder . thus , { α ( 0 )}={ α 0 ( 0 ), α 1 ( 0 ), . . . , α length ( 0 )}/{ a ( 0 )}={ a 0 ( 0 ), a 1 ( 0 ), . . . , a length ( 0 )} and { β ( 0 )}={ β 0 ( 0 ), β 1 ( 0 ), . . . , β length ( 0 )}/{ b ( 0 )}={ b 0 ( 0 ), b 1 ( 0 ), . . . , b length ( 0 )} are not required to be stored in the state metrics memory . this technique is called embedded state metric storage ( emsm ). it can reduce the memory requirement by a factor of 1 / m . since α k ( 0 )/ a k ( 0 ) and β k ( 0 )/ b k ( 0 ) are always constant , one for a map decoder and zero for a log - map decoder after the embedding procedure , the calculation using the embedded metric as an input signal can be omitted during state metrics updating and extrinsic information calculation . thus , emsm will not increase the computational load . the contribution of the embedded metrics during the state metrics updating and extrinsic information calculation is provided by the embedded relationship among the other state metrics , and emsm can achieve the same result with known methods . fig4 is a simplified schematic block diagram of representative , illustrative interconnection of resources detailing the operations of map decoder and log - map decoder using the present invention . the received data ( ds , dp , dp ′) 402 and the extrinsic information of the previous iteration lle_in 408 are fed into the branch metric calculation unit 403 from the received data memory 401 and the memory of the extrinsic information of the previous iteration 414 , respectively , to generate the branch metric γ k e 404 which is applied to the likelihood ratio calculation unit 405 , which produces at its output lle k 406 likelihood ratio calculation . the branch metric calculation unit 403 also produces the branch γ kƒ 410 for the state metrics updating in the forward direction and the branch metric γ kr 409 for the state metrics updating in the reverse direction . the embedded state metrics - updating unit in the forward direction 412 , in which multiplication for map algorithm or addition for log - map algorithm with the embedded metric are omitted , uses the branch metric γ kƒ 410 from the branch metric calculation unit 403 and the state metric in the previous step α kƒ 419 from the metric buffer / memory 416 to update the state metric α kƒ + 1 418 in the forward direction . the embedded state metrics - updating unit in the reverse direction 411 , in which multiplication for map algorithm or addition for log - map algorithm with the embedded metric is omitted , uses the branch metric γ kr 409 from the branch metric calculation unit 403 and the state metric in the previous step β kr 415 from the metric buffer / memory 416 to update the state metric β kr − 1 417 in the reverse direction . the embedded metric is not stored in the state metric buffer / memory 416 . updating of state metrics is preferably done in accordance with the known sliding window ( sw ) technique in practical systems to reduce the memory requirement . as mentioned in the background section , all of the metric information of the forward and reverse directions must be temporarily stored to calculate the extrinsic information . if the data frame length is large , the temporary memory will be huge . in practical systems , only part of the frame , called a window , instead of the whole frame is used to compute the extrinsic information , ignoring some of the extrinsic information , thus causing performance degradation . however , with a window sliding from the head to the end of the frame , all of the extrinsic information is obtained . the sliding window works as follows : a ) the window starts at the end of the data frame , let step number k = 0 , source symbol frame length = l , window size = w and training size = t ; b ) perform forward metric update from the k th source symbol information , save the forward metric from k to k + w − 1 ; if (( k + w + t )& gt ; l , then perform forward metric update from k th source symbol information , save the forward metric from k to l − 1 ; c ) perform reverse metric update from the ( k + w + t ) th source symbol information , save the forward metric from k + w to k + 1 ; if (( k + w + t )& gt ; l , then perform reverse metric update from the ( l ) th source symbol information , save the forward metric from l to k + 1 ; d ) calculate extrinsic information from k to the ( k + w − 1 ) for source symbols ; if ( k + w + t )& gt ; l , then calculate extrinsic information from k to the ( l − 1 ) for source symbols ; e ) update k = k + w ; if k & lt ; l then go to step b ; otherwise this iteration terminates . thus the temporary memory depth reduces from 2 frame lengths to 2 window sizes . in generally , the training size should at least be 3 or 4 times of the state size . emsm can help the sw technique to reduce metric memory requirement in the same way as mentioned in the previous paragraph . when the branch metric γ k e 404 and the state metrics ( α k − 1 , β k ) 413 in both recursion directions are available at the input of the likelihood ratio calculation unit 405 , the embedded likelihood ratio lle k 406 , in which multiplication for the map algorithm or addition for the log - map algorithm with the embedded metric is omitted , is generated and stored in the extrinsic information buffer / memory for the next iteration . fig5 shows the performance comparison curves 501 comparing the log - map decoder in accordance with the present invention and the known method on an awgn channel . the turbo code used in this performance analysis is based on the cdma2000 standard with length = 1146 and code rate = ⅓ . the log - map decoder with emsm 502 can achieve the same performance with the known method 503 , and emsm can reduce the memory used by 12 . 5 % compared to the known method . in fig5 we find that there is almost no difference between the two curves , indicating that emsm can achieve the same decoding performance as the traditional decoding scheme . fig6 shows the performance comparison curves 601 comparing the log - map decoder in accordance with the present invention and the known method on an awgn channel . the turbo code used in this performance analysis is based on the cdma2000 standard with length = 3066 and code rate = ⅓ . the log - map decoder with emsm 602 can achieve the same performance with the known method 603 , and emsm can reduce the memory used by 12 . 5 % compared to the known method . again , we find that there is almost no difference between the two curves , indicating that emsm can achieve the same decoding performance as the traditional decoding scheme . by virtue of the above techniques , a map decoder can be produced that has performance nearly identical to the conventional map decoder , yet which requires much less memory . the architecture shown in fig4 can be used to construct the map decoder , which is implemented in an fpga , plc or asic with emsm technique . the present invention has been described above in connection with certain illustrative embodiments . however , the present invention is in no way limited to the disclosed embodiment , which are exemplary and not intended to limit the scope of the invention , which is to be interpreted in accordance with the appended claims .