Групповая кодированная запись (, GCR) означает несколько различных, но связанных между собой методов кодирования для представления данных на магнитных накопителях. Первый из этих методов, используемый на магнитных лентах с плотностью записи 6250 бит на дюйм с 1973 года, представляет собой корректирующий код в сочетании со схемой кодирования с ограничением длины пробега (RLL), принадлежащей группе кодов модуляции. Другие методы — это схожие методы кодирования использовались в жёстких дисках мейнфреймов или дискетах микрокомпьютера до конца 1980-х годов. GCR является модифицированной формой кода NRZI, но обязательно с более высокой плотностью переходов.
Магнитная лента Групповая кодированная запись впервые была применена для накопителей на 9-дорожечных магнитных лентах. Этот термин появился в процессе разработки лентопротяжного устройства IBM 3420 (модели 4/6/8) и соответствующего блока управления устройством (модель 2), которые были представлены в 1973 году. IBM называла сам код коррекции ошибок «групповой кодированной записью». Однако, со временем GCR стала обозначать формат записи на ленте с плотностью 6250 бит/дюйм (250 бит/мм), а затем и форматы, использующие аналогичные коды RLL без кода коррекции ошибок.
Для надёжного чтения и записи на магнитную ленту, необходимо соблюдать ряд ограничений относительно записываемого сигнала. Во-первых, между двумя соседними изменениями полярности магнитного поля должно быть определённое расстояние на носителе, определяемое магнитными свойствами самого носителя. Во-вторых, изменения должны происходить достаточно часто, чтобы синхронизировать тактовый генератор считывающего устройства с записывающим сигналом. Это означает, что сигнал должен быть самосинхронизирующимся, и, что самое важное, чтобы выходной сигнал оставался достаточно высоким, поскольку он пропорционален плотности переходов магнитного потока. До лент с плотностью 6250 бит/дюйм ленты с плотностью 1600 бит/дюйм удовлетворяли этим требованиям с помощью техники, называемой фазовым кодированием, которая имела эффективность всего 50%. Для GCR лент с плотностью 6250 бит/дюйм используется код RLL (0, 2), а точнее, блоковый код 4/5 (0, 2) иногда также называемый кодированием GCR (4B-5B). Этот код требует записи пяти бит для каждых четырех бит данных. Структура кода такова, что не более двух нулевых бит (т.е. отсутствие изменения полярности) могут следовать друг за другом как внутри кода, так и между кодами, независимо от исходных данных. Этот код RLL применяется независимо к данным, поступающим на каждую из девяти дорожек.
Из 32 пятибитных комбинаций восемь начинаются с двух нулей подряд, шесть других заканчиваются двумя нулями подряд, а ещё одна (10001) содержит три нуля подряд. Исключив комбинацию из одних единиц (11111) из оставшихся, получаем 16 подходящих кодовых слов.
Код GCR RLL с плотностью записи 6250 бит/дюйм: 4-битное значение код GCR hex bin bin hex 0x0 0000 1 1001 0x19 0x1 0001 1 1011 0x1B 0x2 0010 1 0010 0x12 0x3 0011 1 0011 0x13 0x4 0100 1 1101 0x1D 0x5 0101 1 0101 0x15 0x6 0110 1 0110 0x16 0x7 0111 1 0111 0x174-битное значение код GCR hex bin bin hex 0x8 1000 1 1010 0x1A 0x9 1001 0 1001 0x09 0xA 1010 0 1010 0x0A 0xB 1011 0 1011 0x0B 0xC 1100 1 1110 0x1E 0xD 1101 0 1101 0x0D 0xE 1110 0 1110 0x0E 0xF 1111 0 1111 0x0F 11 из полубайтов (кроме xx00 и 0001) имеют код, образованный добавлением инверсии старшего бита в начало; то есть abcd кодируется как abcd. Остальные пять значений получают коды, начинающиеся с 11. Полубайты вида ab00 имеют коды 11ba, то есть обратный порядок битов кода для ab11. Коду 0001 назначается оставшееся значение 11011.
Поскольку код из единиц не используется, может встретиться максимум 8 единиц подряд. Последовательность из 9 или более единиц (на практике, используется 14 или 70 единиц) используется в качестве .
Ввиду крайне высокой плотности (по времени) лент 6250 бит/дюйм RLL код недостаточен для надёжного хранения данных. Поверх RLL кода применялся корректирующий код под названием «Оптимальный прямоугольный код» (, ORC). Этот код представляет собой комбинацию дорожки чётности и полиномиального кода, похожего на CRC, но предназначенного для коррекции ошибок, а не для их обнаружения. Для каждых семи байт, записанных на ленту (до кодирования RLL) вычисляется восьмой байт и записывается на ленту. При чтении чётность вычисляется для каждого байта и объединяется побитовым XOR с содержимым дорожки чётности. Вычисляется полиномиальный проверочный код и объединяется побитовым XOR, получаем два 8-битных слова. Если оба слова равны нулю, ошибок нет. В противном случае, логика коррекции ошибок данных в контроллере ленты исправляет данные перед передачей на хост. Код коррекции ошибок способен исправлять любое количество ошибок на любой отдельной дорожке или на любых двух дорожках, если ошибочные дорожки могут быть идентифицированы другими способами.
В новых полудюймовых 18-дорожечных ленточных накопителях IBM, записывающих с плотностью 24000 бит/дюйм, код GCR 4/5 (0, 2) был заменён более эффективным кодом модуляции 8/9 (0, 3), отображающим восемь бит в девять бит.
Жёсткие диски В середине 1970-х годов подразделение ISS компании Sperry Univac работало над большими жёсткими дисками для бизнеса мэйнфреймов, используя групповое кодирование.
Дискеты Как и в случае приводов магнитных лент, дисководы дискет обращениями магнитного потока (также называемыми переходами, представленными единицами).
Micropolis Предлагая дисководы дискет, совместимые с GCR, и контроллеры гибких дисков (такие как 100163-51-8 и 100163-52-6), компания с 1977 или 1978 года поддерживала групповое кодирование данных на 5¼-дюймовых дисководах с плотностью 100 дорожек/дюйм и 77 дорожками, позволяя хранить двенадцать 512-байтных секторов на дорожку
Micro Peripherals Micro Peripherals, Inc. (MPI) с начала 1978 года продавала дисководы для гибких дисков размером 5¼ дюйма с двойной плотностью (такие как односторонние дисководы B51 и двусторонние B52), а также контроллерное решение, реализующее GCR
Durango , представленная в сентябре 1978, использовала односторонние дискеты формата 5¼ дюйма с плотностью 100 дорожек/дюйм, обеспечивающие ёмкость 480 КБ благодаря запатентованному групповому кодированию 4/5. В машине применялся контроллер гибких дисков , разработанный бывшим инженером Sperry ISS, с дисководами Micropolis на 77 дорожек. В более поздних моделях, таких как серия , эта возможность была расширена до двухстороннего варианта, обеспечивающего 960 КБ (946 КБ в отформатированном виде) на дискету.
Apple Для дисковода гибких дисков Apple II Стив Возняк разработал контроллер, который (вместе с самим дисководом Disk II) накладывал два ограничения: Между любыми двумя единицами может быть максимум один нуль. Любой 8-битный байт должен начинаться с единицы. Простейшим способом обеспечить соблюдение этих ограничений является запись дополнительного «тактового» перехода перед каждым битом данных согласно дифференциальному манчестерскому кодированию или (цифровой) частотной модуляции. Известная как кодирование 4 и 4, реализованная в Apple схема, позволяла записывать только десять секторов по 256 байт на дорожку на одной 5¼-дюймовой дискете одинарной плотности. Она использует два байта на каждый байт данных.
|+Таблица кодировки 4 и 4
Значение Кода hex bin bin hex 0x00 0000 0000 1010 1010 1010 1010 0xAA 0xAA 0x01 0000 0001 1010 1010 1010 1011 0xAA 0xAB 0x02 0000 0010 1010 1011 1010 1010 0xAB 0xAA 0x03 0000 0011 1010 1011 1010 1011 0xAB 0xAB 0x04 0000 0100 1010 1010 1010 1110 0xAA 0xAE 0x05 0000 0101 1010 1010 1010 1111 0xAA 0xAF 0x06 0000 0110 1010 1011 1010 1110 0xAB 0xAE 0x07 0000 0111 1010 1011 1010 1111 0xAB 0xAF 0x08 0000 1000 1010 1110 1010 1010 0xAE 0xAA 0x09 0000 1001 1010 1110 1010 1011 0xAE 0xAB 0x0A 0000 1010 1010 1111 1010 1010 0xAF 0xAA 0x0B 0000 1011 1010 1111 1010 1011 0xAF 0xAB 0x0C 0000 1100 1010 1110 1010 1110 0xAE 0xAE 0x0D 0000 1101 1010 1110 1010 1111 0xAE 0xAF 0x0E 0000 1110 1010 1111 1010 1110 0xAF 0xAE 0x0F 0000 1111 1010 1111 1010 1111 0xAF 0xAF 0x10 0001 0000 1010 1010 1011 1010 0xAA 0xBA 0x11 0001 0001 1010 1010 1011 1011 0xAA 0xBB 0x12 0001 0010 1010 1011 1011 1010 0xAB 0xBA 0x13 0001 0011 1010 1011 1011 1011 0xAB 0xBB 0x14 0001 0100 1010 1010 1011 1110 0xAA 0xBE 0x15 0001 0101 1010 1010 1011 1111 0xAA 0xBF 0x16 0001 0110 1010 1011 1011 1110 0xAB 0xBE 0x17 0001 0111 1010 1011 1011 1111 0xAB 0xBF 0x18 0001 1000 1010 1110 1011 1010 0xAE 0xBA 0x19 0001 1001 1010 1110 1011 1011 0xAE 0xBB 0x1A 0001 1010 1010 1111 1011 1010 0xAF 0xBA 0x1B 0001 1011 1010 1111 1011 1011 0xAF 0xBB 0x1C 0001 1100 1010 1110 1011 1110 0xAE 0xBE 0x1D 0001 1101 1010 1110 1011 1111 0xAE 0xBF 0x1E 0001 1110 1010 1111 1011 1110 0xAF 0xBE 0x1F 0001 1111 1010 1111 1011 1111 0xAF 0xBF 0x20 0010 0000 1011 1010 1010 1010 0xBA 0xAA 0x21 0010 0001 1011 1010 1010 1011 0xBA 0xAB 0x22 0010 0010 1011 1011 1010 1010 0xBB 0xAA 0x23 0010 0011 1011 1011 1010 1011 0xBB 0xAB 0x24 0010 0100 1011 1010 1010 1110 0xBA 0xAE 0x25 0010 0101 1011 1010 1010 1111 0xBA 0xAF 0x26 0010 0110 1011 1011 1010 1110 0xBB 0xAE 0x27 0010 0111 1011 1011 1010 1111 0xBB 0xAF 0x28 0010 1000 1011 1110 1010 1010 0xBE 0xAA 0x29 0010 1001 1011 1110 1010 1011 0xBE 0xAB 0x2A 0010 1010 1011 1111 1010 1010 0xBF 0xAA 0x2B 0010 1011 1011 1111 1010 1011 0xBF 0xAB 0x2C 0010 1100 1011 1110 1010 1110 0xBE 0xAE 0x2D 0010 1101 1011 1110 1010 1111 0xBE 0xAF 0x2E 0010 1110 1011 1111 1010 1110 0xBF 0xAE 0x2F 0010 1111 1011 1111 1010 1111 0xBF 0xAF 0x30 0011 0000 1011 1010 1011 1010 0xBA 0xBA 0x31 0011 0001 1011 1010 1011 1011 0xBA 0xBB 0x32 0011 0010 1011 1011 1011 1010 0xBB 0xBA 0x33 0011 0011 1011 1011 1011 1011 0xBB 0xBB 0x34 0011 0100 1011 1010 1011 1110 0xBA 0xBE 0x35 0011 0101 1011 1010 1011 1111 0xBA 0xBF 0x36 0011 0110 1011 1011 1011 1110 0xBB 0xBE 0x37 0011 0111 1011 1011 1011 1111 0xBB 0xBF 0x38 0011 1000 1011 1110 1011 1010 0xBE 0xBA 0x39 0011 1001 1011 1110 1011 1011 0xBE 0xBB 0x3A 0011 1010 1011 1111 1011 1010 0xBF 0xBA 0x3B 0011 1011 1011 1111 1011 1011 0xBF 0xBB 0x3C 0011 1100 1011 1110 1011 1110 0xBE 0xBE 0x3D 0011 1101 1011 1110 1011 1111 0xBE 0xBF 0x3E 0011 1110 1011 1111 1011 1110 0xBF 0xBE 0x3F 0011 1111 1011 1111 1011 1111 0xBF 0xBF