A memory controller for accessing a memory module comprising a plurality
of memory banks. The memory controller is operable to write copies of
program data to one or more memory banks according to the size of the
program data. The memory controller is additionally operable to read
program data, e.g. in response to an access request, from whichever
memory bank is next available for access.