En informática, grabación codificada de grupo o grabación de código de grupo (GCR, Group coded recording) se refiere a varios métodos de codificación distintos pero relacionados para representar datos en medios magnéticos. El primero, utilizado en cinta magnética de 6250 bits por pulgada desde 1973, es un código de corrección de errores combinado con un esquema de codificación ejecución de longitud limitada (RLL), perteneciente al grupo de códigos de modulación. Los otros son diferentes métodos de codificación de discos duros de mainframes así como disqueteras utilizados en algunas microcomputadoras hasta finales de la década de 1980. GCR es una forma modificada de un código NRZI, pero necesariamente con una densidad de transición más alta.
Cinta magnética
La grabación codificada en grupo se utilizó por primera vez para cinta magnética de almacenamiento de datos en cinta de carrete a carrete de 9 pistas. El término fue acuñado durante el desarrollo de la unidad de cinta magnética IBM 3420 modelo 4/6/8 y la correspondiente unidad de control de cinta 3803 modelo 2, both introduced in 1973. IBM se refirió al código de corrección de errores en sí mismo como «grabación codificada en grupo». Sin embargo, GCR ha llegado a referirse al formato de grabación de la cinta de 6250 bpi (250 bits/mm) en su totalidad y, posteriormente, a formatos que utilizan códigos RLL similares sin el código de corrección de errores.
Para leer y escribir de manera confiable en cinta magnética, se deben seguir varias restricciones en la señal que se va a escribir. La primera es que dos inversiones de flujo adyacentes deben estar separados por una cierta distancia en el medio, definida por las propiedades magnéticas del medio en sí. La segunda es que debe haber una inversión con la frecuencia suficiente para mantener el reloj del lector en fase con la señal escrita; es decir, la señal debe ser de reloj automático y, lo que es más importante, mantener la salida de reproducción lo suficientemente alta, ya que es proporcional a la densidad del flujo de transiciones. Antes de las cintas 6250 bpi, las cintas de 1600 bpi cumplían con estas restricciones utilizando una técnica llamada codificación de fase (PE), que solo tenía una eficiencia del 50%. Para las cintas GCR de 6250 bpi, se usa un código RLL (0, 2), o más específicamente un código de bloque (0, 2) que a veces también se denomina codificación GCR (4B-5B). Este código requiere que se escriban cinco bits por cada cuatro bits de datos. El código está estructurado de modo que no más de dos bits 0 (que están representados por la falta de una inversión de flujo) puedan aparecer en una fila, ya sea dentro de un código o entre códigos, sin importar los datos. Este código RLL se aplica de forma independiente a los datos que van a cada una de las nueve pistas.
De los 32 patrones de cinco bits, ocho comienzan con dos bits cero consecutivos, otros seis terminan con dos bits cero consecutivos y uno más (10001) contiene tres bits cero consecutivos. Eliminando el patrón de todos unos (11111) del resto deja 16 palabras de código adecuadas.
El código GCR RLL de 6250 bpi: Valor 4-bit Código 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 0x17Valor 4-bit Código 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
Once de los nibbles (distintos de xx00 y 0001) tienen su código formado anteponiendo el complemento del bit más significativo; es decir, abcd está codificado como abcd. A los otros cinco valores se les asignan códigos que comienzan con 11. Nibbles de la forma ab00 tienen códigos 11ba , es decir, el bit inverso del código para ab11. Al código 0001 se le asigna el valor restante 11011.
Debido a la densidad extremadamente alta en ese entonces de la cinta de 6250 bpi, el código RLL no es suficiente para garantizar un almacenamiento de datos confiable. En la parte superior del código RLL, se aplica un código de corrección de errores llamado código rectangular óptimo (ORC). Este código es una combinación de una pista de paridad y código polinomial similar a un CRC, pero estructurado para la corrección de errores en lugar de la detección de errores. Por cada siete bytes escritos en la cinta (antes de la codificación RLL), se calcula y se escribe un octavo byte de verificación. Al leer, la paridad se calcula en cada byte y se hace OR-exclusivo con el contenido de la pista de paridad, y el código de verificación polinomial calculado se hace OR exclusivo con el código de verificación recibido, lo que da como resultado dos palabras de 8 bits de coincidencia. Si ambos son cero, los datos están libres de errores. De lo contrario, la lógica de corrección de errores en el controlador de cinta corrige los datos antes de que se reenvíen al host. El código de corrección de errores puede corregir cualquier número de errores en una sola pista, o en dos pistas cualesquiera si las pistas erróneas pueden identificarse por otros medios.
En las unidades de cinta IBM más nuevas de 18 pistas y 12,7 mm que graban a 24000 bpi, el GCR (0, 2) fue reemplazado por un código de modulación (0, 3) más eficiente, que asigna ocho bits a nueve bits.
Discos duros
A mediados de la década de 1970, la División ISS de Sperry Univac estaba trabajando en grandes discos duros para el mercado de mainframes utilizando codificación de grupo.
Disquetes
Al igual que las unidades de cinta magnética, las unidades de disquete tienen límites físicos en el espaciado de las inversiones de flujo (también llamadas transiciones, representadas bits 1).
Micropolis
Ofreciendo unidades de disquete compatibles con GCR y controlador de disquete s (como el 100163-51-8 y 100163-52-6), Micropolis avaló la codificación de datos con grabación codificada en grupo en unidades de disquete de 77 pistas a 100 tpi de 5¼ pulgadas para almacenar doce sectores de 512 bytes por pista desde 1977 o 1978.
Micro Peripherals
Micro Peripherals, Inc. (MPI) comercializaba unidades de disco de doble densidad de 5¼ pulgadas (como las unidades B51 y las unidades B52) y un controlador que implementa GCR desde principios de 1978.
Durango
El Durango Systems F-85 (introducido en septiembre de 1978) usaba unidades de disquete de 5¼ pulgadas de una sola cara 100 tpi que proporcionaban 480 kB utilizando una codificación de grupo 4/5 grupo de alta densidad propia patentada. La máquina utilizaba un controlador de disquete Western Digital FD1781, diseñado por un ex ingeniero de Sperry ISS, con unidades Micropolis de 77 pistas. En modelos posteriores, como la serie Durango 800, se amplió a una opción de doble cara de 960 kB (946 kB con formato) por disquete.
Apple
Para la unidad de disquete para el Apple II, Steve Wozniak inventó un controlador de disquete que (junto con la propia unidad Disk II) imponía dos restricciones: Entre dos bits 1 cualquiera, puede haber un máximo de un bit cero. Cada byte de 8 bits debe comenzar con un bit 1.
El esquema más simple para garantizar el cumplimiento de estos límites es registrar una transición de «reloj» adicional antes de cada bit de datos de acuerdo con la codificación diferencial Manchester o FM (digital) (modulación de frecuencia). Conocida como codificación 4-y-4, la implementación de Apple resultante permitió que solo se registraran diez sectores de 256 bytes por pista en un disquete de 5¼ pulgadas de densidad simple. Utiliza dos bytes para cada byte.
Tabla de codificación 4-y-4
Valor Código 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