Interleaving (data)
{{short description|Ordering fields of data sequentially}}
{{unreferenced|date=September 2016}}
{{Other uses|Interleaving (disambiguation){{!}}Interleaving}}
In computing, interleaving of data refers to the interspersing of fields or channels of different meaning sequentially in memory, in processor registers, or in file formats. For example, for coordinate data,
:x0 y0 z0 w0 x1 y1 z1 w1 x2 y2 z2 w2
:x0 x1 x2 x3 y0 y1 y2 y3 z0 z1 z2 z3 w0 w1 w2 w3
the former is interleaved while the latter is not.
A processor may support permute instructions, or strided load and store instructions, for moving between interleaved and non-interleaved representations.
Interleaving has performance implications for cache coherency, ease of leveraging SIMD hardware, and leveraging a computer's addressing modes. (e.g. - interleaved data may require one address to be calculated, from which individual fields may then be accessed via immediate offsets; conversely if only one field is required by index, de-interleaved data may leverage scaled index addressing).