Memory bandwidth is the rate at which data can be read from or stored into a semiconductor memory by a processor. Memory bandwidth is usually expressed in units of bytes/second, though this can vary for systems with natural data sizes that are not a multiple of the commonly used 8-bit bytes.
Perhaps surprisingly, there are at least three different conventions for counting the quantity of data transferred in the numerator of bytes/second, as discussed in more detail in [1].
The bcopy convention is self-consistent, but is not easily extended to cover cases with more complex access patterns, for example three reads and one write. The STREAM convention is most directly tied to the user code, but may not count all the data traffic that the hardware is actually required to perform. The hardware convention is most directly tied to the hardware, but may not represent the minimum amount of data traffic required to implement the user's code. For example, some computer systems have the ability to avoid write allocate traffic using special instructions, leading to the possibility of misleading comparisons of bandwidth based on different amounts of data traffic performed.
Memory bandwidth that is advertised for a given memory or system is usually the maximum theoretical bandwidth. In practice the observed memory bandwidth will be less than (and is guaranteed not to exceed) the advertised bandwidth. A variety of computer benchmarks exist to measure sustained memory bandwidth using a variety of access patterns. These are intended to provide insight into the memory bandwidth that a system should sustain on various classes of real applications.
[
Read more on Wikipedia]