Run-length limited
Run-length limited (RLL) is a line coding technique that is used to send arbitrary data over a communications channel with bandwidth limits. RLL is used in both telecommunication and storage systems that move a medium past a fixed recording head.
Different run-length limited codes are often distinguished with the parametrized nomenclature (d,k) RLL, but they are actually defined by four main parameters: m, n, d, k. The first two, m/n, refer to the rate of the code, while the remaining two specify the minimal d and maximal k number of zeroes between consecutive ones. Specifically, RLL bounds the length of stretches (runs) of repeated bits during which the signal does not change. If the runs are too long, clock recovery is difficult; if they are too short, the high frequencies might be attenuated by the communications channel. By modulating the data, RLL reduces the timing uncertainty in decoding the stored data, which would lead to the possible erroneous insertion or removal of bits when reading the data back. This mechanism ensures that the boundaries between bits can always be accurately found (preventing bit slip), while efficiently using the media to reliably store the maximal amount of data in a given space.
Degenerate RLL encoding schemes, such as FM and MFM code, which were widely used in hard disk drives until the mid-1980s. Higher-density (2,7) RLL and (1,7) RLL codes became the de facto industry standard for hard disks by the early 1990s. Higher order RLL codes are still used in digital optical discs such as CD, DVD, MD, Hi-MD and Blu-ray.