A data access method for accessing a rewritable non-volatile memory module through a plurality of thread modules, wherein the rewritable non-volatile memory module has a plurality of physical blocks, each of the physical blocks has a plurality of physical pages arranged with a sequence, the thread modules comprise a first thread module and a second thread module, and the second thread module executes a write command to write pieces of page data into a second physical block among the physical blocks, the data access method comprising:
- determining whether an amount of unwritten page data among the page data is smaller than a predetermined threshold;
- if the amount of the unwritten page data is smaller than the predetermined threshold, assigning the access executing right to the second thread module and writing the unwritten page data into the second physical block via a data bus by using the second thread module;
- if the amount of the unwritten page data is not smaller than the predetermined threshold, assigning an access executing right to the second thread module, and writing a predetermined amount of page data among the page data into a predetermined number of physical pages among the physical pages of the second physical block via a data bus by using the second thread module, wherein the second thread module releases the access executing right after writing the predetermined amount of the page data into the second physical block via the data bus, and the predetermined amount of the page data is a part of the page data;
- determining whether an access command needed to be executed by the first thread module is received after the second thread module releases the access executing right;
- and
- if the access command needed to be executed by the first thread module is received, assigning the access executing right to the first thread module and executing the access command on a first physical block among the physical blocks via the data bus by using the first thread module, wherein the first thread module releases the access executing right after executing the access command,
- wherein the first thread module is configured to execute a first command having a stricter requirement on a data processing timeline and the second thread module is configured to execute a second command having a more flexible requirement on the data processing timeline.