복수의 메모리 칩들을 구비하는 메모리 모듈을 제어하는 메모리 컨트롤러는 에러 정정 회로 및 상기 에러 정정 회로를 포함하는 프로세서를 포함한다. 상기 에러 정정 회로는 인코딩 회로를 포함한다. 상기 인코딩 회로는, 기입 동작에서, 사용자 데이터 세트를 복수의 데이터 비트들을 각각 구비하는 복수의 데이터 유닛들로 분할하고, 상기 복수의 데이터 유닛들 각각의 상기 데이터 비트들의 특성에 기초하여 상기 복수의 데이터 유닛들 각각을 복수의 타입들 중 하나로 식별하면서, 상기 복수의 타입들을 나타내는 데이터 플래그들을 생성하고, 상기 복수의 데이터 유닛들에 제1 에러 정정 코드(error correction code, 이하 'ECC') 인코딩을 수행하여 데이터 패리티들을 생성하고, 상기 데이터 플래그들에 제2 ECC 인코딩을 수행하여 플래그 패리티들을 생성하고, 상기 복수의 데이터 유닛들 중 포함되는 데이터 비트들의 전부 또는 절반이 제로인 적어도 하나의 데이터 유닛을 상기 복수의 데이터 유닛들 중 데이터 비트들의 전부 또는 절반이 유효한 데이터 유닛을 복제하는 데이터 복제 공간으로 사용하여 인코딩된 사용자 데이터 세트를 생성하고, 상기 인코딩된 사용자 데이터 세트, 상기 데이터 패리티들, 상기 데이터 플래그들, 상기 플래그 패리티들 및 널 비트를 비트 단위로 인터리빙하여 코드워드 세트를 생성하고, 상기 코드워드 세트를 상기 메모리 모듈에 전송한다.