A buffer is disclosed for storing data being transferred using a plurality
of control channels, a data item of said data being transferred between a
data source and a data destination using one of said plurality of control
channels, said buffer comprising: a data input port operable to receive
said data being transferred using said plurality of control channels; a
data output port operable to output data to be transferred using said
plurality of control channels; and a data store operable to store data
received from said data input port prior to it being output by said data
output port, said data store comprising a plurality of storage locations
each operable to store a data item, said storage locations being arranged
in groups, a storage location being allocated to a group in dependence on
the control channel that a data item that it stores is received from,
such that each group comprises storage locations storing data items
received from a same one of said plurality of control channels. Free
storage locations are not allocated to any of the plurality of groups, so
that new data items received can be stored in any of the free storage
locations, these locations then being allocated to the group
corresponding to the channel being used.