A method for accessing memory in a data storage system, the method comprising: receiving at a first master circuit, a first virtual address, the first virtual address corresponding, according to a mapping function, to a first physical address of a first physical memory bank which is to be accessed by the first master circuit; implementing the mapping function at the first master circuit to spread memory access by the first master circuit across a plurality of physical memory banks, wherein the plurality of physical memory banks include the first physical memory bank and a second physical memory bank; accessing by the first master the first physical memory bank at the first physical address to perform a first read operation to read a first portion of data stored in the first physical memory bank at the first physical address, or a first write operation to write the first portion of the data to the first physical memory bank at the first physical address; receiving at a second master circuit separate from the first master circuit a second virtual address, the second virtual address corresponding, according to the mapping function, to a second physical address of the second physical memory bank which is to be accessed by the second master; implementing the mapping function at the second master circuit to spread memory access by the second master circuit across the plurality of physical memory banks; and concurrently with access by the first master circuit to the first physical memory bank at the first physical address, accessing by the second master circuit the second physical memory bank at the second physical address to perform a second read operation to read a second portion of the data stored in the second physical memory bank at the second physical address, or a second write operation to write the second portion of the data to the second physical memory bank at the second physical address. receiving at a first master circuit, a first virtual address, the first virtual address corresponding, according to a mapping function, to a first physical address of a first physical memory bank which is to be accessed by the first master circuit; implementing the mapping function at the first master circuit to spread memory access by the first master circuit across a plurality of physical memory banks, wherein the plurality of physical memory banks include the first physical memory bank and a second physical memory bank; accessing by the first master the first physical memory bank at the first physical address to perform a first read operation to read a first portion of data stored in the first physical memory bank at the first physical address, or a first write operation to write the first portion of the data to the first physical memory bank at the first physical address; a first read operation to read a first portion of data stored in the first physical memory bank at the first physical address, or a first write operation to write the first portion of the data to the first physical memory bank at the first physical address; receiving at a second master circuit separate from the first master circuit a second virtual address, the second virtual address corresponding, according to the mapping function, to a second physical address of the second physical memory bank which is to be accessed by the second master; implementing the mapping function at the second master circuit to spread memory access by the second master circuit across the plurality of physical memory banks; and concurrently with access by the first master circuit to the first physical memory bank at the first physical address, accessing by the second master circuit the second physical memory bank at the second physical address to perform a second read operation to read a second portion of the data stored in the second physical memory bank at the second physical address, or a second write operation to write the second portion of the data to the second physical memory bank at the second physical address. a second read operation to read a second portion of the data stored in the second physical memory bank at the second physical address, or a second write operation to write the second portion of the data to the second physical memory bank at the second physical address.