A memory controller can perform prefetching, in a way which increases the
efficiency with which data can be read from an external memory. More
specifically, the memory controller operates such that it performs
prefetching only under certain conditions, which are chosen such that
there is a high probability that the data requested in the prefetching
operation will be the data which is next required. The memory controller
may be implemented in a programmable logic device (PLD), and be optimized
for retrieving data from an external flash or SRAM memory device, which
is used for storing configuration data for the PLD. By examining a read
request, it is possible to determine whether a prefetching operation can
be performed, with a high probability that it will be the required data
which is prefetched.