A memory controller configured to check data stored in a memory unit for errors, wherein both the data and error correction code data related to the data are stored in the memory unit, the memory controller comprising: a sorting unit configured to: initialize a read list data structure corresponding to a page of data stored within the memory unit; receive one or more data read requests (640-2, 640-3) to access data from the page of data, wherein each of the one or more data read requests corresponds to a different data sector (D18, D19) included in the page of data; for each of the one or more data read requests, determine whether an ECC read request to access an ECC sector that is included in the page of data and associated with the data sector corresponding to the data read request is already included in the read list data structure, and if the ECC read request is not already included, then add the ECC read request to the read list data structure, and add the data read request to the read list data structure after the ECC read request (656, 658), or if the ECC read request is already included, then add the data read request to the read list data structure after the ECC read request; and transmit the read list data structure to an arbitration unit to access from the memory unit the data sectors corresponding to the one or more data read requests and one or more ECC sectors associated with the data sectors. a sorting unit configured to: initialize a read list data structure corresponding to a page of data stored within the memory unit; receive one or more data read requests (640-2, 640-3) to access data from the page of data, wherein each of the one or more data read requests corresponds to a different data sector (D18, D19) included in the page of data; for each of the one or more data read requests, determine whether an ECC read request to access an ECC sector that is included in the page of data and associated with the data sector corresponding to the data read request is already included in the read list data structure, and if the ECC read request is not already included, then add the ECC read request to the read list data structure, and add the data read request to the read list data structure after the ECC read request (656, 658), or if the ECC read request is already included, then add the data read request to the read list data structure after the ECC read request; and transmit the read list data structure to an arbitration unit to access from the memory unit the data sectors corresponding to the one or more data read requests and one or more ECC sectors associated with the data sectors. initialize a read list data structure corresponding to a page of data stored within the memory unit; receive one or more data read requests (640-2, 640-3) to access data from the page of data, wherein each of the one or more data read requests corresponds to a different data sector (D18, D19) included in the page of data; for each of the one or more data read requests, determine whether an ECC read request to access an ECC sector that is included in the page of data and associated with the data sector corresponding to the data read request is already included in the read list data structure, and if the ECC read request is not already included, then add the ECC read request to the read list data structure, and add the data read request to the read list data structure after the ECC read request (656, 658), or if the ECC read request is already included, then add the data read request to the read list data structure after the ECC read request; and determine whether an ECC read request to access an ECC sector that is included in the page of data and associated with the data sector corresponding to the data read request is already included in the read list data structure, and if the ECC read request is not already included, then add the ECC read request to the read list data structure, and add the data read request to the read list data structure after the ECC read request (656, 658), or if the ECC read request is already included, then add the data read request to the read list data structure after the ECC read request; and transmit the read list data structure to an arbitration unit to access from the memory unit the data sectors corresponding to the one or more data read requests and one or more ECC sectors associated with the data sectors.