77721

Кодирование данных с ограничением длины поля записи

Лекция

Информатика, кибернетика и программирование

Для жестких дисков вскоре был изобретен более эффективный метод кодирования информации: RLL. В случае с гибкими дисками новые методы уже не использовались в силу отсутствия необходимости в переносе больших объемов данных на гибких дисках это было бы достаточно не надежно а также в случае с гибкими дисками требуется совместимость новых стандартов кодирования и старых: любой современный дисковод может читать как FM так и MFMкодированные диски в то время как принцип RLLкодирования принципиально отличается от двух предыдущих. Этот тип...

Русский

2015-02-05

64.5 KB

1 чел.

Кодирование данных с ограничением длины поля записи

RLL-кодирование

MFM-кодирование использовалось в ранних винчестерах, а также в флоппи-дисководах. Т.к. MFM-кодирование в два раза поднимало объем записываемой информации, такие гибкие диски назывались "double density". MFM-кодирование до сих пор используется в дисководах на магнитных дисках. Для жестких дисков, вскоре, был изобретен более эффективный метод кодирования информации: RLL. В случае с гибкими дисками, новые методы уже не использовались, в силу отсутствия необходимости в переносе больших объемов данных на гибких дисках (это было бы достаточно не надежно), а также, в случае с гибкими дисками требуется совместимость новых стандартов кодирования и старых: любой современный дисковод может читать как FM-, так и MFM-кодированные диски, в то время как принцип RLL-кодирования принципиально отличается от двух предыдущих.

RLL — run length limited или кодирование с ограничением длины поля записи. Этот тип кодирования был более сложным, и, строго говоря, это было семейство схем кодирования. У RLL-кодирования было два параметра, описывающих данный метод кодирования и в связи с этим было именно семейство схем кодирования, а не один метод кодирования.

FM-кодирование имеет простое соотношение между кодируемым битом и методом записи на диск. Требуется только знать текущий бит данных. MFM-кодирование улучшило эффективность по сравнению с FM-кодированием с помощью более умной схемы, которая следила за предыдущим записанным битом и клоковой информацией.

RLL-кодирование было шагом вперед по сравнению с MFM-кодированием. Этот метод кодирования рассматривает группы из нескольких бит, вместо рассмотрения одного бита в один промежуток времени. Идея кодирования состоит в том, чтобы смешивать клоковые смены полярности и смены полярности данных, чтобы допустить более плотную запись на поверхность магнитной пластины. Два параметра, описывающих RLL есть run length и run limit (отсюда и следует имя данного семейства кодирующих схем). Слово run здесь относится к последовательности записываемой информации без смены полярности. Параметр run length — это минимальная длина между двумя сменами полярности, в то время как run limit — это максимальная длина без смены полярности. Как и было сказано ранее, длина между двумя сменами полярности не может быть слишком длинной, иначе у нас потеряется синхронизация бит.

Конкретная схема кодирования пишется как RLL(x,y) или x,y RLL, где x это run length, а y это run limit. Наиболее часто встречающаяся схема кодирования информации на накопителях это RLL(1,7) и RLL(2,7). Для того чтобы произвести кодирование, нужно иметь некий словарь, ставящий в соответствие входные данные выходным, давайте посмотрим на данный словарь в случае 2,7 RLL:

Битовая последовательность

Кодированная последовательность

Количество смен полярности на бит

Вероятность встречи в случайном потоке данных

11

RNNN

1/2

25%

10

NRNN

1/2

25%

011

NNRNNN

1/3

12.5%

010

RNNRNN

2/3

12.5%

000

NNNRNN

1/3

12.5%

0010

NNRNNRNN

2/4

6.25%

0011

NNNNRNNN

1/4

6.25%

Взвешенное среднее

0.4635

100%

Для примера, возьмем следующую последовательность бит: 10001111 (0х8Fh), эта последовательность будет представлена контроллером, как 10-0011011 и закодирована как NRNN-NNNNRNNN-RNNN. Следует заметить, что в данной схеме кодирования, каждая кодируемая последовательность из словаря оканчивается как NN, отсюда и видно, что минимальная длина между двумя сменами полярности равна 2. Максимальная длина, равная 7, будет достигаться в случае кодирования двух последовательностей 0011-0011.

Сравнивая эту таблицу с такими же для FM и MFM, можно увидеть несколько интересных вещей. Наблюдается увеличивающаяся сложность кодирования: используется 7 различных последовательностей, и одновременно рассматривается до 4 бит. Среднее количество смен полярности на один бит равно 0.4635 или примерно 0.5. Это примерно одна треть от FM и примерно две трети от MFM. Так что, по сравнению с FM-кодированием, мы можем записать втрое больше информации на один и тот же участок поверхности.

На рисунке представлено кодированная форма записи байта "10001111" в случае FM, MFM и RLL 2,7 кодирования.

PRML-кодирование

Стандартные схемы чтения работают, используя определение смены полярности и представления их в соответствии с кодирующей схемой, которая была использована при записи информации. Сигнал читается с диска, используя головку и усилитель, после чего он подается на схему улавливания и декодирования. Контроллер переводит сигнал в цифровую форму, постоянно следя за сигналом с головок, синхронно с внутренним клоком и определяя маленькие всплески напряжения, которые означают смену полярности. Традиционный метод чтения и представления читаемой информации называется методом детектирования пиков.

Этот метод прекрасно работает, пока всплески напряжения достаточно большие, чтобы отличить их от шума. В то время как плотность записи растет, сигнал становится все сложнее и сложнее распознавать: амплитуда пиков падает, а также начинаются явления интерференции между двумя соседними всплесками. Получается интересная зависимость: для того, чтобы снизить интерференцию, надо уменьшить амплитуду записываемых данных, в то время как снижая амплитуду, мы уменьшаем помехозащищенность. При увеличении плотности записи, происходит увеличение интерференции. Следовательно, нужно снижать амплитуду записи, что приводит к более низкой помехозащищенности, и как следствие — к удорожанию и усложнению головок и схемы распознавания и декодирования.

Для борьбы с этой проблемой был предложен новый метод распознавания данных. Эта технология, называемая PRML (partial response, maximum likelihood) — частичный ответ, максимальное правдоподобие, которая в корне меняет принцип чтения и декодирования данных, полученных с поверхности накопителя. Вместо того чтобы пытаться отличать индивидуальные всплески, контроллер, использующий PRML, применяет большую тактовую частоту дискретизации при переводе аналогового сигнала в цифровой, восстанавливая структуру считанного сигнала в цифровой форме, фильтруя его и используя различные методы цифровой обработки сигналов. Рассматривает не один всплеск, а целый временной интервал, описывающий считанный сигнал. Далее контроллер сравнивает полученные результаты и подбирает наиболее похожий набор данных. Т.е. в данном методе не обязательно даже считать сигнал целиком, достаточно считать только его часть, после чего контроллер определит, на что именно похожа эта часть, и декодирует информацию.

Этот метод считывания и декодирования информации позволил поднять поверхностную плотность записи на 30-40% по сравнению со старой схемой, использовавшей детектирование всплесков.

EPRML

Революционным шагом явилось создание технологии EPRML — улучшенного варианта PRML. Сам принцип работы остался тем же, но были улучшены алгоритмы работы анализирующих схем. Это дало увеличение поверхностной плотности записи до 70% по сравнению со стандартным PRML методом.

Во всех современных винчестерах используются различные вариации именно EPRML метода при считывании информации. Таким образом, в любом современном винчестере происходит вероятностное считывание: информация никогда не считывается полностью, считывается только ее часть, и именно по части восстанавливается оригинальный битовый набор.

На верхнем рисунке представлен принцип перевода аналогового сигнала в цифровой в случае пикового детектирования, на нижнем — в случае PRML метода считывания информации.