Patent Publication Number: US-8117526-B2

Title: Apparatus and method for generating a transmit signal and apparatus and method for extracting an original message from a received signal

Description:
This application claims the benefit of U.S. Provisional Application No. 60/983,239, filed on Oct. 29, 2007, entitled “Method and Apparatus for Generating a Transmit Signal,” which application is hereby incorporated herein by reference. 
    
    
     TECHNICAL FIELD 
     Embodiments of the present invention generally relate to signal transmission and, in particular, to apparatuses and methods for data bus inversion. 
     BACKGROUND 
     Data bus inversion is known to be an important aspect of bus power management and electrical reliability. Data bus inversion can aid bus power management by guarantying that no more than 50% of data bus lines carrying data bits need to change state, i.e., change state between “0” and “1” or “1” and “0”, at any time. If the data bus is, e.g., 64 bits wide, any binary number can be represented on the data bus from 0 to 2 64 −1. When sending 64 bit message words on the data bus, state changes of certain bus lines will occur between succeeding message words. If it is encountered that more than half of the bus lines would need to have a change state from one message word to the next, the next message word can be inverted. Thus, every logical “1” becomes a logical “0”, and every logical “0” becomes a logical “1”. 
     An error correction code (ECC) can be used in order to recover from single or multiple errors due to transmission over noisy channels. 
     SUMMARY OF THE INVENTION 
     An embodiment of the present invention provides an apparatus for generating a transmit signal comprising data bits, the apparatus comprising a circuit for providing an indicator indicating whether the data bits represent an original message or an inverted version thereof, a processor for determining check information which depends on the data bits and the indicator, and a transmitter for transmitting the transmit signal including the data bits, the indicator and at least a part of the check information. 
     A further embodiment of the present invention provides an apparatus for extracting an original message from a received signal carrying information on data bits representing the original message or an inverted version thereof. An indicator indicates whether the data bits represent the original message or the inverted version thereof, and a check information which depends on the data bits and the indicator. The apparatus includes a processor for determining a check information based on the received data bits and the received indicator. A circuit compares the determined check information with the received check information, and an extractor extracts the original message based on the result of the comparison. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       In the following, embodiments of the present invention are explained in more detail with reference to the accompanying drawings, in which: 
         FIG. 1  shows a flow chart of a method for generating a transmit signal according to an embodiment of the present invention; 
         FIG. 2  shows a block diagram of an apparatus for generating a transmit signal according to a further embodiment of the present invention; 
         FIG. 3  shows a block diagram of an apparatus for generating a transmit signal according to yet a further embodiment of the present invention; 
         FIG. 4  shows a flow chart of a method for generating a transmit signal according to an embodiment of the present invention; 
         FIG. 5  depicts a concept for generating a transmit signal according to an embodiment of the present invention; 
         FIG. 6  shows a flow chart of a method for extracting an original message from a received signal according to an embodiment of the present invention; 
         FIG. 7  shows a block diagram of an apparatus for extracting an original message from a received signal according to an embodiment of the present invention; 
         FIG. 8  shows exemplarily the structures for DDR2 as DRAM; 
         FIG. 9  shows a burst packet format according to an embodiment of the present invention; 
         FIG. 10  shows a burst packet format according to an embodiment of the present invention; and 
         FIG. 11  shows a decoding scheme according to an embodiment of the present invention. 
     
    
    
     DETAILED DESCRIPTION OF ILLUSTRATIVE EMBODIMENTS 
     With regard to the following description it should be noted, that in the different embodiments equal or equally operating functional elements of the same reference numerals in the description of those functional elements are interchangeable in the different embodiments are illustrated in the following. 
     Throughout this specification bold lower case letters, e.g., m, denote vectors comprising one or more vector-components, and bold capital letters, e.g., G, denote matrices comprising one or more lines and columns of matrix entries. 
     Embodiments of the present invention provide a concept which protects one or more inversion signaling bits with ECC. This may be achieved by using the linearity of ECC codes. The one or more inversion signaling bits can be error protected and the ECC calculation on an original message m can be done in parallel. 
       FIG. 1  shows the flow chart of a method for generating a transmit signal t according to an embodiment of the present invention. 
     The transmit signal t comprises data bits d, wherein the data bits d represent an original message m or an inverted version thereof. In data bus inversion techniques, the original message m is conditionally inverted based on a matrix, i.e., minimize the data bus activity or minimize the frequency of symbols that consume more power in bus line terminations. In a first step  12  an indicator is provided, wherein the indicator indicates whether the data bits d represent the original message m or an inverted version thereof. According to an embodiment of the present invention the indicator may be an inversion signaling bit b or an inversion signaling vector b comprising a plurality of inversion signaling bits each referring to a different part of the original message word m. After the provision of the indicator in step  12  check information which depends on the data bits d and the indicator is determined in step  14 . According to an embodiment of the present invention the check information may be a parity bit or a checksum comprising a plurality of ECC bits. Having determined the check information the transmit signal t is formed in step  16 , wherein the transmit signal t includes the data bits d, the indicator and at least a part of the check information. 
     A block diagram of an apparatus  20  for generating the transmit signal t comprising the data bits d according to the method described referring to  FIG. 1  is schematically shown in  FIG. 2 . 
     The apparatus  20 , which may, e.g., be a memory controller, obtains the original message word m as input. A circuit  22  for providing the indicator in the form of an inversion signaling bit b processes the original message word m in order to check whether the bits of the original message word m have to be inverted or not. The circuit  22  outputs the indicator b and the data bits d which represent the original message m or the inverted version thereof in case the original message m has to be inverted. Together with the original message m the indicator b is input to a processor  24  for determining the check information c which depends on both the original message m and the indicator b. At the same time it can also be said, that the check information c depends on both the data bits b and the indicator b. This dependence will be explained in further detail below. In a transmitter  26  for transmitting the transmit signal t the data bits d, the indicator b and the check information c are combined to form the transmit signal t. According to embodiments, the apparatus  20  is capable of being coupled to a plurality of channels via which the data bits of the transmit signal are to be transmitted simultaneously in parallel, e.g., the signal lines of a memory bus. 
     In the following the functionality of the apparatus  20  and, in particular, of the processor  24  will be described in more detail. 
     For the sake of simplicity it is now assumed that the data bus inversion is performed on the whole original message word m. The case of inverting chunks of m will lead to more inversion signaling bits and the described concept can be easily generalized. 
     By using the linearity of ECC codes the inversion signaling bit b can be error protected and still the ECC calculation on the original message m can be done temporarily in parallel. 
     Referring now to  FIG. 3  a more detailed block diagram of the processor  24  is shown. 
     The processor  24  comprises a circuit  32  to extend the original message m by at least one bit value indicating no inversion of the original message to obtain an extended original message m′. According to an embodiment of the present invention the original message m is, based on the assumption that the bus inversion is performed on the whole original message word m, extended by 0 to obtain the extended original message m′=(m,0). The extended original message m′ is then multiplied by a code generator matrix G in a processing block  34  to obtain a first check information c 1 . For this first check information c 1  a first state, e.g., 0, was assumed for the indicator or the signaling bit b. The first check information c 1  is then added, e.g., by a modulo-2 addition, to a second predetermined check information c 2  multiplied by the value of the indicator b to obtain the check information c. As can be seen, the second predefined check information c 2  is only added to the first check information c 1  in case the actual state of the indicator b is different from the first state assumed for obtaining the extended original message m′. In other words, the first check information c 1  is obtained when assuming that the signaling bit b indicates no inversion, and the second check information c 2  is only added to the first check information c 1  in case an inversion of the original message is performed. According to embodiments of the present invention the first and the second check information correspond to ECC checksums obtained by multiplying certain vectors with the code generator matrix G. The first check information c 1  is obtained by multiplying the extended original message m′ with the code generator matrix G, i.e.,
 
 m·G =( m, 0)· G =( m, 0 ,c   1 ).  (1)
 
     The second check information c 2  can be obtained by:
 
(1,1)· G =(1,1 ,c   2 ).  (2)
 
wherein 1 denotes an all-ones-vector having a length equal to the bit length of the original message m.
 
     The vector (m,0) can be inverted by a modulo-2 addition with the all-ones-vector (1,1). Hence, it can be seen that in case of no inversion, i.e. b=0, the transmit signal is t=(m,0,c 1 ). In case of an inversion this transmit signal is modified by a modulo-2 addition with (1,1,c 2 ) leading to (  m ,1,c 1 ⊕c 2 ), wherein  m  denotes the inverted original message word and ⊕ denotes the modulo-2 addition. This is due to the linearity of the ECC code, i.e.,
 
(   m , 1)· G =(( m, 0)⊕(1,1))· G =( m, 0)· G ⊕(1,1)· G   (3)
 
     Note that c 2  is a fixed check information or checksum that can be stored. This means that effectively the ECC encoding and the bus inversion can be done temporarily in parallel and nevertheless the indicator b will be error protected. 
     The algorithm carried out by the apparatus  20 , in case the data bus inversion takes place on the whole original message m resulting in only one inversion signaling bit b, can be summarized referring to  FIG. 4 . 
     In a first step  41  the original message m is obtained. Then, the first check information c 1  of the extended original message m′ is determined assuming an inversion signaling bit indicating no inversion, that is e.g. b=0, in a step  42 . Temporarily in parallel to step  42  it is checked in a step  43  whether the original message m has to be inverted or not. In case no inversion needs to take place, a transmit signal t=(m,0,c 1 ) is transmitted in a step  44 . On the other hand, if step  43  yields that an inversion has to be performed, a modulo-2 addition of (1,1,c 2 ) and (m,0,c 1 ) is performed in a step  45 . In a step  46  the result of this modulo-2 addition is transmitted as the transmit signal. 
     In general, the transmit signal can be computed according to:
 
 t =(( m⊕b· 1), b ,( c   1   ⊕b·c   2 )).  (4)
 
     Moreover, a design optimization can be performed in case of data bus inversion of the whole message signal m. If the code generator matrix G is chosen such that 1·G=1, which is true if G is chosen such that the weights of the columns of G are odd, then (  m ,1)·G=(  m ,1,  c   1 ), with  c   1  being the inverted form of the first checksum c 1 , meaning that data bus inversion of the original message m extended by one position leads to a simple inversion of the encoded message. Hence, in this case only the inversion signaling bit b and the first check information c 1  is required to form the transmit signal. If the inversion signaling bit b indicates that an inversion of the original message word m has to be performed, the original message word m and the first checksum c 1  are simply inverted. Since in this case the second check information corresponds to an all-ones vector having a length corresponding to the bit length of the first check information c 1 , it does not need to be pre-computed and stored. The above described algorithm or concept is graphically summarized in  FIG. 5 . 
     The above described algorithm can easily be extended to a plurality of inversion signaling bits b, which is applied on the original message m in chunks. For this case the apparatus  20  is configured to provide a first indicator for a first portion of the data bits and to provide a second indicator for a second portion of the data bits, and to determine the checksum based on the data bits and the first and second indicators. For instance, in case the original message m has a bit length of 64 bits then the data bus inversion can, e.g., be performed on two halves, each comprising 32 bits. This would require an ECC code that is capable of error protecting messages having a length of 66 bits. Such an ECC code is, e.g., an extended Hamming code H(256,247,9). 
     Let us express the original message m as a vector of two halves m 1 , m 2 , each one being 32 bits long, i.e. m=(m 2 ,m 1 ). Let c 12  and c 22  be the predefined second checksums belonging to the two inversion possibilities, which can be obtained based on:
 
(1 (32) ,0 (32) ,1,0)· G =(1 (32) ,0 (32) ,1,0 ,c   12 ),  (5)
 
(0 (32) ,1 (32) ,0,1)· G =(0 (32) ,1 (32) ,0,1 ,c   22 ),  (6)
 
with 1 (32)  being a 32-bit vector made of all ones and 0 (32)  being a 32-bit vector made of all zeros.
 
     Let now b 1 , b 2 ε{0,1} be the inversion signaling bits of the two 32-bit original message word halves. According to an embodiment of the present invention the algorithm for obtaining the corresponding transmit signal t can be, e.g., performed as follows. 
     Firstly, calculate the first check information or checksum c 1  of the original message m based on (m,0,0)*G. Calculate, temporarily in parallel, the inversion signaling bits b 1  and b 2  based on m 1  and m 2 . Then, send the transmit signal:
 
 t =( m ⊕( b   1 ·1 (32)   ,b   2 ·1 (32) ), b   1   ,b   2   ,c   1   ⊕b   1   ·c   12   ⊕b   2   ·c   22 ).  (7)
 
     Note, that m⊕(b 1 ·1 (32) ,b 2 ·1 (32) ) means a simple inversion of the bits of the original message m and c 1 ⊕b 1 ·c 12 ⊕b 2 ·c 22  is a modulo-2 addition which can be implemented as pure combinatorial logic and does not require any carry chain. A modulo-2 addition can, e.g., be easily realized by an application of an XOR-gate. 
     After having described the principle of some embodiments of encoders for a data bit inversion with ECC, it shall be mentioned that further embodiments also provide concepts for extracting the original message m from an encoded received signal comprising the data bits d representing the original message m or an inverted version thereof, the indicator b indicating whether the data bits d represent the original message m or the inverted version thereof, and the check information c which depends on the data bits d and the indicator b. A flow chart related to a method for extracting the original message m from a received signal is depicted in  FIG. 6 . 
     In a first step  52  a signal comprising information on the data bits d, the indicator b and the check information c is received. In the following step  54  check information based on the received data bits d and the received indicator b is determined. In a further step  56  the determined check information is compared with the received check information, such that error correction and/or error detection can be performed in order to extract the original message m based on the result of the comparison in a step  58 . 
     Assuming a single bit indicator, i.e., b=b, the determination of the check information c′ can be performed based on:
 
( d,b )· H =( d,b,c ′),  (8)
 
wherein H denotes the parity-check matrix related to the code generator matrix G and c′ denotes the determined check information.
 
       FIG. 7  shows a schematic block diagram of an apparatus for performing the method described referring to  FIG. 6 . 
     The apparatus  60  comprises a processor  62  for determining the check information c′ based on the received data bits d and the received indicator b. According to embodiments of the present invention the processor  62  is configured to compute the check information c′ based on equation (8). 
     Further, the apparatus  60  comprises a circuit  64  for comparing the determined check information c′ with the received check information C to obtain information  65  based on which error detection and/or correction can be performed. To extract the original message m the apparatus  60  further comprises the circuit  66 , which extracts the original message m based on the result  65  of the comparison and the received signal comprising the received data bits and the received indicator b. With the result  65  the received signal can be error corrected. Based on the error corrected received signal, the original message m can then easily be derived regarding the error corrected inversion signaling bit b. 
     Embodiments of the present invention can, e.g., be applied for burst communication in memory interfaces in order to avoid the necessity of additional signals for bit inversion signaling, avoiding the decoding of the inversion signaling bit b in the SDRAM or the storage of the additional inversion signaling bits. By encoding larger blocks of data, i.e., larger message words, less redundancy is needed for error detection and correction. The freed bits can be used for signaling the data bus inversion. Moreover, the encoded data is written within a burst in a well defined order and is read back in the same order or with a finite number of permutations. This can be exploited in order to compute the bus inversion at a memory controller only, making possible the use of industry standard SDRAMS. 
     Substantial modifications of main stream DRAM components can be avoided by reusing the already present redundancy for error protection and detection. In main memory interfaces, e.g., for servers, ECC bits are added. For example, in a 64-bit interface 8 additional ECC bits are sufficient to implement an extended Hamming code capable of correcting single errors and detecting double errors. Hence, communication to a main memory is usually done in bursts of 4 or 8 memory words of 72 bits each, 64 bits of data and 8 bits for ECC. 
     Referring now to  FIG. 8  two tables of the burst structures for a burst length of 4 and 8, respectively, are shown. 
     Burst mode operation is used to provide a constant flow of data to memory locations in write cycles or from memory locations in read cycles. Parameters that define how the burst mode will operate are, e.g., burst sequence and burst length. DDR2 SDRAM supports bursts with a burst length of 4 and bursts with a burst length of 8 only. The ordering of the burst, however, depends on the requested address, and the configured burst type option: sequential or interleaved. Typically, a memory controller will require one or the other. 
     When the burst length is 1 or 2, the burst type does not matter. For a burst length of 1, the requested word is the only word accessed. For a burst length of 2, the requested word is accessed first, and the other word in the aligned block is accessed second. This is the following word if an even address was specified, and the previous word if an odd address was specified. For the sequential burst mode, later words are accessed in increasing address order, wrapping back to the start of the block when the end is reached. So, for example, for a burst length of 4, and a requested column address of 5, the words would be accessed in the order 5-6-7-4. If the burst length were 8, the access order would be 5-6-7-0-1-2-3-4. This is done by adding a counter to the column address, and ignoring carries past the burst length. The interleaved burst mode computes the address using an exclusive “or” operation between the counter and the address. Using the same starting address of 5, a 4-word burst would return words in the order 5-4-7-6. An 8-word burst would be 5-4-7-6-1-0-3-2. 
     Regarding a burst with a burst length of 4, data bus inversion can lead to minimizing the state transitions of bus lines between the first and second message word of the burst, the second and third message word and the third and fourth message word of the burst. When the first word of a burst is sent, the bus lines of the data bus are in high impedance mode, respectively, i.e. floating at mid potential. Therefore, any bit to be transmitted over the bus line will lead to the same IO power consumption for the first message word of the burst. Hence, minimizing state transitions of bus lines between the last message word of a burst and the first message word of a succeeding burst is not possible. 
     When performing the data bus inversion of a burst of length 4, the following algorithm is applied. Firstly, send the data belonging to the first message word to be sent within the burst. In a second step, starting from the second burst, compare the message belonging to the current burst with the message belonging to the preceding burst and, if needed, perform the data bus inversion. Thirdly, send data. Fourthly, repeat from second step until data to be sent belongs to the last message word of the burst. 
     For a burst length of 8 the algorithm is modified as described in the following paragraphs. 
     Firstly, for the first or fourth burst, send the data belonging to the first or fourth message word. In a second step, compare the message belonging to the current burst to be sent with the message belonging to the preceding burst and, if needed, perform the data bus inversion. Thirdly, send data. Fourthly, repeat from first step until data to be sent belongs to the last message word of the burst. 
     In order to combine data bus inversion with error protection, without requiring additional pins for bus inversion signaling, the burst structure is modified according to an embodiment. Memory words of 64 bits are logically grouped in pairs and the check information or the ECC word is hence computed over 128 data bits. The code length is augmented, so less redundancy is needed. The freed bits are used for bit inversion signaling. The burst of data to be read from or written to the memory can be organized in a frame with an organization as depicted in the table shown in  FIG. 9 . 
       FIG. 9  shows an example of a frame organization for a burst length of 4. A frame for a burst length of 8 can be obtained by simple repetition of the depicted structure. 
     The frame is made up of 4 bursts, each burst comprising 72 bits. The frame can be logically grouped into two pairs of bursts as the ECC coding will be computed over two successive memory words collectively comprising 128 bits (64 bits each). The ECC bits protecting the inversion signaling bits can be obtained with a Hamming code using concepts according to embodiments of the present invention described before. In order to achieve error correction and error detection capabilities of the modified ECC code comparable to current industry standard, parity bits are added. 
     According to an embodiment, the ECC code is modified by encoding two 64 bit messages as a 128 bit message. In order to have single error correction and double error detection e.g. the Hamming (255,247) code can be used. Therefore, 8 redundancy bits are sufficient to correct single errors on 247 bit long messages. With the data structure according to an embodiment, each 72 bit memory word carries 64 data bits, 4 bits of ECC (half of the total 8-bit ECC word), 3 bits for bus inversion signaling and one parity bit. 
     Hence, for embodiments of the present invention the apparatus  20  is configured to determine the checksum based on first data bits, at least one first indicator, second data bits and at least one second indicator indicating whether the second data bits represent an original second message or an inverted version thereof, wherein said second data bits and said at least one second indicator are part of a second transmit signal to be transmitted in a second burst via the plurality of channels prior to or after the first transmit signal transmitted in the first burst. According to embodiments, the apparatus  20  is configured to form the first transmit signal including a first portion of the checksum and to form the second transmit signal including a second portion of the checksum. 
     In order to compute the 8-bit first check information or the ECC word c 1 , the original 128 bit message m=(m 1 ,m 2 ), where m 1 , m 2  are the two 64 bit message words to be successively transmitted, is first augmented with 119 zeros in order to reach a correct size, i.e., 247 bits. Let G be the generator matrix of the Hamming (255,247) code, and let us consider G in the canonical form. Then, the first check information c 1  can be obtained based on:
 
( m   1   ,m   2 ,0 (119) )· G =( m   1   ,m   2 ,0 (119)   ,c   1 ),  (9)
 
with c 1  comprising the 8 check bits.
 
     The bus inversion is performed on each half of the vector m=(m 1 ,m 2 ) in, e.g., three chunks of respectively 22, 22 and 20 bits, as 64 is not a multiple of 3. Of course these numbers are only exemplary numbers and further embodiments of the present invention are not limited to the examples given in this specification. To each inversion signaling bit b 1,1 , b 1,2 , b 1,3  (b 2,1 , b 2,2 , b 2,3 ) is associated the chunk of the vector m 1  (m 2 ) obtained by calculating the check bits of the vector having ones in the positions that have to be inverted, a one in the relative check bit position, and zeros elsewhere. For instance, if the first inversion signaling bit b 1,1  is related to the first 22 bits of m 1 , then the related second check information c 12  can be obtained based on:
 
 h   1,1 =(1 (22) ,0 (106) ,1,0 (118) )· G =(1 (22) ,0 (106) ,1,0 (118)   ,c   1,1 )  (10)
 
where 1 (n)  is a n-bit long all-ones vector and 0 (n)  is a n-bit long all-zeros vector.
 
     If the second inversion signaling bit b 1,2  is related to the second chunk of 21 bits of m 1 , then the related second check information c 22  can be obtained based on:
 
 h   1,2 =(0 (22) ,1 (21) ,0 (86) ,1,0 (117) )· G =(0 (22) ,1 (21) ,0 (86) ,1,0 (117)   ,c   1,2 ).  (11)
 
     If the third inversion signaling bit b 1,3  is related to the third chunk of 21 bits of m 1 , then the related second check information c 32  can be obtained based on:
 
 h   1,3 =(0 (43) ,1 (21) ,1 (66) ,1,0 (116) )· G =(0 (43) ,1 (21) ,1 (66) ,1,0 (116)   ,c   1,3 ).  (12)
 
     h 2,1 , h 2,2  and h 2,3  can be obtained similarly related to the inversion signaling bits b 2 , 1 , b 2 , 2  and b 2 , 3  related to the first, second and third chunk of m 2 , respectively. The transmit word can, e.g., be obtained based on: 
                     t   =       (       m   1     ,     m   2     ,     0     (   119   )       ,     c   1       )     ⊕       ∑     j   =   1     3     ⁢       ∑     i   =   1       i   =   3       ⁢       b     i   ,   j       ⁢     h     i   ,   j                 ,           (   13   )               
wherein Σ denotes a modulo-2 sum.
 
     Of course the transmit word t could also have a different bit ordering according to further embodiments. This would then also affect the bit ordering of h i,j . In any case, the check information c of the transmit word t can be computed according to 
               c   =       ∑     j   =   1     3     ⁢       ∑     i   =   1       i   =   3       ⁢       b     i   ,   j       ⁢     c     i   ,   j               ,         
wherein Σ denotes a modulo-2 sum.
 
     According to an embodiment, extra parity bits are added to the transmit signal t in order to detect double errors. This can be done on each burst of the frame, a burst comprising 64 bits of data, 4 check bits (the actual checksum of 8 bits is split among 2 subsequent bursts), and the three inversion signaling bits. The parity bit of the first burst can be, e.g., computed according to: 
                       p   1     =     ∑       (       m   1     ,     g   1       )     ⊕       ∑     j   =   1       j   =   3       ⁢       b     1   ,   j       ⁢     ∑     g     1   ,   j                   ,           (   14   )               
where g 1  is the vector comprising half of the check bits of the first check information c 1 , g 1,j  is the vector comprising half of the check bits c 1,j , and b 1,j  are the actual values of the bus inversion signaling bits. All additions are intended to be modulo 2. Please also note that all the values Σg 1,j  can be pre-calculated and the adjustment can be implemented with XOR-gates, as the effect will be just inverting or not the parity value Σ(m 1 ,g 1 ).
 
     An algorithm according to an embodiment for building the data burst can be summarized as follows. Group m 1  and m 2  in a 128-bit long vector and calculate the first check information c 1  according to equation (9). Calculate the parity bits p 1  and p 2  over (m 1 ,g 1 ) and (m 2 ,g 2 ), respectively. Calculate, temporarily in parallel to the previous steps, the inversion bit vectors b 1 =(b 1,1 ,b 1,2 ,b 1,3 ) and b 2 =(b 2,1 ,b 2,2 ,b 2,3 ). Determine the transmit word t according to equation (13) and perform a parity bit adjustment based on equation (14). Insert the parity bits p 1  and p 2  into transmit word t. Then, divide the transmit word t into two transmit words t 1  and t 2 , each comprising 64 data bits representing the respective original message or an inverted version thereof, 4 check bits (half of the actual check information), three inversion signaling bits and one parity bit, and send t 1  and t 2  over two consecutive bursts. Then, repeat the above steps for m 3  and m 4 . 
     Of course the above presented algorithm can be modified according to further embodiments. 
     The actual format of the data packets to be transmitted in burst mode of burst length 4 is shown in  FIG. 10 . b i =(b i,1 ,b i,2 ,b i,3 ) are 3-bit long vectors comprising all the inversion signaling bits relevant to one of the columns of the packet. As mentioned before, data bus inversion can lead to minimizing the state transitions of bus lines between the all message words within a burst. However, data bus inversion does not lead to minimizing the state transitions of bus lines between the last message word of a first burst and the first message word of a succeeding second burst, since the bus lines of the data bus are in high impedance mode, respectively, i.e., floating at mid potential, when the first word of a burst is sent. This can be exploited for design optimization and for in-band transmission of additional information. 
     The additional parity bits p i  are used in order to detect multiple errors. The decoding scheme for m 1  and m 2  is summarized in the table shown in  FIG. 11 , where s is the syndrome, e.g., calculated based on (m 1 ′,m 2 ′,c′,b 1 ,b 2 ,0 (113) )·H T , wherein m 1 ′, m 2 ′ are the received bus-inversion encoded form of m 1 , m 2 . c′ is the received check information or checksum adjusted for bus inversion as described above. b 1 , b 2 , are the vectors carrying the bus-inversion signaling bits and H T  is the transposed form of the parity check matrix of the Hamming (255,247) code. The fact that the last 113 bits are equal to zero can be exploited for obvious implementation optimizations. 
     Embodiments of the present invention may recover the original message words m 1  and m 2  if a single error occurred during the transmission of the two columns of the burst. Also, embodiments of the present invention may detect errors of even weight on the two columns of the burst. However, errors of odd weight greater than 1 on the two columns are not detected (i.e., an erroneous decoding will happen if 3 or more errors of even weight will occur during the transmission of the two columns). 
     To summarize, embodiments described herein relate to a novel combination of encoding for low power and error protection, which makes it possible to use the bus-invert technique in the presence of errors without any compromise on overall system reliability. Embodiments of the present invention modify an ECC coding and exploit burst communication in memory interfaces in order to reduce an encoding-decoding overhead. Moreover, embodiments of the present invention allow the use of industry standard memories avoiding the system cost increase due to specialized DRAMs. According to embodiments, a memory controller generates a transmit signal including data bits, an indicator indicating whether the data bits represent an original message or an inverted version thereof and further including at least part of a check information. Then the memory controller transmits the transmit signal to standard memory components, where the content of the transmit signal can be stored. In case of a read access, the stored transmit signal is transferred back from the standard memory components to the memory controller. The memory controller receives the transferred signal and the original message can be extracted from the received signal. 
     Hence, a further embodiment of the present invention also comprises a system, the system comprising a memory component for storing a signal comprising data bits and a memory controller for generating and receiving the signal. The memory component could be a standard DRAM component. According to embodiments the memory controller comprises a circuit for providing an indicator indicating whether the data bits represent an original message or an inverted version thereof, a processor for determining check information which depends on the data bits and the indicator, and a transmitter for transmitting the signal to the memory component, the signal including the data bits, the indicator and at least a part of the check information. The memory controller further comprises an extractor for extracting the original message from a received version of the signal received from the memory component, the extractor comprising a processor for determining a check information based on the received data bits and the received indicator, a circuit for comparing the determined check information with the received check information, and a circuit for extracting the original message based on the result of the comparison. 
     Depending on the circumstances, the inventive method may be implemented in hardware or in software. The implementation may be done on a digital storage medium, particularly a disk, a DVD or a CD with electronically readable control signals, which may cooperate with a programmable computer system so that the method is executed. In general the invention does also consist in a computer program product with a program code stored on a machine-readable carrier performing the inventive method, when the computer program runs on a computer. In other words, the invention may thus be realized as a computer program with a program code for performing the method when the computer program runs on a computer. 
     While this invention has been described in terms of several preferred embodiments, there are alterations, permutations and equivalents which fall within the scope of this invention. It should be also noted that there are many alternative ways of implementing the methods and compositions of the present invention. It is therefore intended that the following appended claims be interpreted as including all such alterations, permutations and equivalents as fall within the true spirit and scope of the present invention.