Введение
Кодирование с ограниченной длиной серии или RLL-кодирование – это метод линейного кодирования, используемый для передачи произвольных данных по каналу связи с ограничениями по полосе пропускания. Коды RLL определяются четырьмя основными параметрами: m, n, d, k. Первые два, m/n, относятся к скорости кода, а остальные два задают минимальное d и максимальное k количество нулей между последовательными единицами. Это применяется как в телекоммуникациях, так и в системах хранения данных, где носитель перемещается мимо фиксированной записывающей головки. В частности, RLL ограничивает длину последовательностей (серий) повторяющихся битов, в течение которых сигнал не изменяется. Если серии слишком длинные, восстановление тактовой частоты затруднено; если они слишком короткие, высокие частоты могут быть ослаблены каналом связи. Модулируя данные, RLL снижает неопределенность во времени при декодировании сохраненных данных, что может привести к ошибочной вставке или удалению битов при чтении данных. Этот механизм обеспечивает точное определение границ между битами (предотвращая сдвиг битов) и эффективное использование носителя для надежного хранения максимального объема данных в заданном пространстве. Первые дисковые накопители использовали очень простые схемы кодирования, такие как RLL (0,1) FM-код, за которым последовал RLL (1,3) MFM-код, которые широко применялись в жестких дисках до середины 1980-х годов и до сих пор используются в цифровых оптических дисках, таких как CD, DVD, MD, Hi MD и Blu-ray. Более плотные коды RLL (2,7) и RLL (1,7) стали де-факто отраслевым стандартом для жестких дисков к началу 1990-х годов.
Run length limited or RLL coding is a line coding technique that is used to send arbitrary data over a communications channel with bandwidth limits. RLL codes are 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. This is used in both telecommunication and storage systems that move a medium past a fixed recording head. 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. Early disk drives used very simple encoding schemes, such as RLL (0,1) FM code, followed by RLL (1,3) MFM code, which were widely used in hard disk drives until the mid 1980s and are still used in digital optical discs such as CD, DVD, MD, Hi MD and Blu ray. Higher density RLL (2,7) and RLL (1,7) codes became the de facto industry standard for hard disks by the early 1990s.
Необходимость кодирования RLL
На жестком диске информация представлена изменениями направления магнитного поля на диске, а на магнитных носителях выход воспроизведения пропорционален плотности переходов магнитного потока. В компьютере информация представляется напряжением на проводнике. Отсутствие напряжения на проводнике относительно заданного уровня земли соответствует бинарному нулю, а положительное напряжение относительно земли – бинарной единице. Магнитные носители, напротив, всегда несут магнитный поток, либо с "северным", либо с "южным" полюсом. Для преобразования магнитных полей в бинарные данные необходимо использовать метод кодирования, переводящий одно представление в другое. Один из простейших практических кодов – модифицированный NRZI (Non-Return to Zero Inverted) – кодирует 1 как переход магнитной полярности, также известный как "инверсия потока", а 0 – как отсутствие перехода. При постоянной скорости вращения диска каждому биту отводится равный промежуток времени – "окно данных" – для магнитного сигнала, представляющего этот бит, и инверсия потока, если она есть, происходит в начале этого окна. (Примечание: в старых жестких дисках использовалась фиксированная длительность окна данных для всего диска, но современные диски более сложны; подробнее см. в разделе о зонной битовой записи.) Этот метод не совсем прост, поскольку выход воспроизведения пропорционален плотности единиц, а длинная последовательность нулей приводит к полному отсутствию выходного сигнала. В качестве простого примера рассмотрим двоичную последовательность 101 с окном данных 1 нс (одна наносекунда, или одна миллиардная доля секунды). Она будет записана на диске как изменение, затем отсутствие изменения, и снова изменение. Если предыдущая магнитная полярность была положительной, результирующая последовательность может выглядеть так: −−+. Значение 255, или все двоичные единицы, будет записано как −+−+−+−+ или +−+−+−+−. Нулевой байт будет записан как ++++++++ или −−−−−−−−. 512-байтовый сектор, заполненный нулями, будет записан как 4096 последовательных бит с одинаковой полярностью. Поскольку жесткий диск – это физическое устройство, скорость его вращения может незначительно меняться из-за изменения скорости двигателя или теплового расширения пластин. Физические носители, такие как дискеты, также могут деформироваться, вызывая более серьезные ошибки синхронизации, а схема синхронизации на самом контроллере может иметь небольшие колебания скорости. Проблема заключается в том, что при длинной последовательности нулей контроллер диска не может точно определить положение головки чтения и, следовательно, точно установить количество нулей. Даже изменение скорости на 0,1%, что точнее, чем у любого практического дисковода, может привести к добавлению или удалению 4 бит из 4096-битного потока данных. Без какой-либо синхронизации и коррекции ошибок данные станут совершенно бесполезными. Другая проблема связана с ограничениями магнитных носителей: в определенном пространстве можно записать лишь ограниченное количество изменений полярности, поэтому существует верхний предел количества единиц, которые можно записать последовательно. Это зависит от линейной скорости и зазора головки. Чтобы избежать этой проблемы, данные кодируются таким образом, чтобы не возникало длинных повторений одного и того же двоичного значения. Ограничивая количество последовательно записанных нулей максимальным значением k, можно обеспечить синхронизацию контроллера диска. Ограничивая количество нулей, записанных подряд, минимальным значением d между каждым из них, снижается общая частота изменений полярности, что позволяет диску хранить больше данных в том же объеме, либо уменьшить размер носителя для того же объема данных, либо увеличить объем хранения при том же размере носителя.
История
Все коды, используемые для записи на магнитные диски, имеют ограничение на длину непрерывных последовательностей без переходов и поэтому могут быть охарактеризованы как коды RLL. Самым ранним и простым вариантам были даны собственные названия, такие как модифицированная частотная модуляция (MFM), а название "RLL" обычно используется только для более сложных вариантов, не имеющих таких названий, хотя технически этот термин применим ко всем им. Первым кодом "RLL", использованным в жестких дисках, был RLL (2,7), разработанный инженерами IBM и впервые примененный в коммерческих целях в 1979 году на IBM 3370 DASD для использования с мейнфреймами серии 4300. В конце 1980-х годов жесткие диски для ПК начали использовать RLL в строгом смысле (то есть варианты, более сложные, чем те, которые получили собственные названия, такие как MFM). Коды RLL получили почти повсеместное распространение в практике записи на оптические диски с 1980 года. В потребительской электронике RLL, такие как код EFM (rate = 8/17, d = 2, k = 10), используются в компакт-дисках (CD) и MiniDisc (MD), а код EFMPlus (rate = 8/16, d = 2, k = 10) – в DVD. Параметры d и k представляют собой минимальную и максимальную допустимую длину последовательности. Для более подробного изучения технологий хранения полезны ссылки, указанные в данной статье.
Технический обзор
Длина серии – это количество бит, в течение которых сигнал остается неизменным. Серия длиной 3 для бита 1 представляет собой последовательность 111. Например, схема магнитной поляризации на диске может быть +−−−++−−−++++++, с сериями длиной 1, 4, 2, 3 и 6. Однако терминология кодирования с ограничением длины серии предполагает кодирование NRZI, поэтому 1 обозначает изменение, а 0 – отсутствие изменения. В этом случае вышеуказанная последовательность будет выражена как 11000101001000001, и учитываются только серии нулевых бит. Довольно запутанно, длина серии – это количество нулей (0, 3, 1, 2 и 5 в предыдущем примере) между соседними единицами, что на единицу меньше, чем количество моментов времени, в течение которых сигнал фактически остается неизменным. Последовательности с ограничением длины серии характеризуются двумя параметрами, d и k, которые задают минимальную и максимальную длину серии нулевых бит, допустимую в последовательности. Таким образом, коды RLL обычно указываются как RLL(d,k), например: RLL(1,3).
Кодирование
В кодированном формате бит "1" обозначает изменение магнитного потока, а бит "0" указывает на отсутствие изменения магнитного поля на диске в течение данного интервала времени.
Плотность
Предположим, магнитная лента может содержать до 3200 изменений потока на дюйм. Модифицированная частотная модуляция, или (1,3) RLL-кодирование, сохраняет каждый бит данных в виде двух битов на ленте, но поскольку гарантируется наличие одного 0 (без изменения потока) бита между любыми 1 (с изменением потока) битами, то можно сохранить 6400 кодированных битов на дюйм ленты, или 3200 битов данных на дюйм. RLL-кодирование (1,7) также может сохранить 6400 кодированных битов на дюйм ленты, но поскольку для хранения 2 битов данных требуется всего 3 кодированных бита, это соответствует 4267 битам данных на дюйм. RLL-кодирование (2,7) использует 2 кодированных бита для хранения каждого бита данных, но поскольку между любыми 1 битами гарантируется наличие двух 0 битов, то можно сохранить 9600 кодированных битов на дюйм ленты, или 4800 битов данных на дюйм. Плотность изменений потока на жестких дисках значительно выше, но аналогичные улучшения плотности хранения достигаются за счет использования различных систем кодирования.