A check node processing unit implemented in a decoder, said decoder being configured to decode a signal encoded using an error correcting code, said error correcting code being a non-binary LDPC code, said signal comprising symbols, the check node processing unit being configured to receive at least two input messages, and to generate at least one output message, each message comprising a plurality of components, each component comprising a value of a symbol and a reliability metric associated with said symbol, each input message being represented by a vector, wherein the check node processing unit comprises: - a data structure configured to store said input messages, the data structure comprising a number of columns for storing the input messages, each column corresponding to the transpose of the vector representing one of the input messages, each component of an input message being associated with a row index and a column index in the data structure; - a data processing unit configured to apply one or more iterations of a transformation operation to at least a part of the data structure, said transformation operation corresponding to a permutation of at least some columns of the data structure, each iteration of the transformation operation being performed to arrange the components of the input messages in said data structure depending on at least some of the components of the input messages associated with a given value of an integer index, by performing a permutation of at least some columns of the data structure, which provides a transformed data structure, said integer index corresponding to the row index of the data structure; - a calculation unit configured to determine said at least one output message from the components of the input messages comprised in said transformed data structure, wherein each iteration of a transformation operation is performed to arrange the components of the input messages in said data structure according to a given order of the reliability metrics of the components of the messages associated with said given value of the integer index. - a data structure configured to store said input messages, the data structure comprising a number of columns for storing the input messages, each column corresponding to the transpose of the vector representing one of the input messages, each component of an input message being associated with a row index and a column index in the data structure; - a data processing unit configured to apply one or more iterations of a transformation operation to at least a part of the data structure, said transformation operation corresponding to a permutation of at least some columns of the data structure, each iteration of the transformation operation being performed to arrange the components of the input messages in said data structure depending on at least some of the components of the input messages associated with a given value of an integer index, by performing a permutation of at least some columns of the data structure, which provides a transformed data structure, said integer index corresponding to the row index of the data structure; - a calculation unit configured to determine said at least one output message from the components of the input messages comprised in said transformed data structure, <EOS>