A memory access unit for handling transfer of a sample in a d-dimensional array between one of m data buses, where m≥1, and k*m memories, where k≥2, the memory access unit comprising:
- k address calculators, each address calculator configured to receive a bus address, to add a respective offset to generate a sample bus address and to generate, from the sample bus address according to an addressing scheme, a respective address in each of the d dimensions for accessing the sample;
- and
- k sample collectors, each sample collector operable to generate a memory select for a respective one of the k*m memories so as to transfer the sample between a predetermined position in a bus data word and the respective one of the k*m memories,
- wherein each sample collector is configured to calculate a respective memory select in dependence upon the address in each of the d dimensions such that each sample collector selects a different one of the k*m memories so as to allow the sample collectors to access k of the k*m memories concurrently.