842 , 8-4-2 o EFT es un algoritmo de compresión de datos sin pérdidas . Es una variación de la compresión Lempel-Ziv con una longitud de diccionario limitada. Con datos típicos, 842 ofrece entre el 80 y el 90 por ciento de la compresión de LZ77 con un rendimiento mucho mayor y menor consumo de memoria. [ 1 ] Las implementaciones de hardware también proporcionan un consumo mínimo de energía y un área mínima en el chip.
La compresión 842 se puede utilizar para la compresión de memoria virtual , para bases de datos (especialmente para almacenes orientados a columnas ) y al transmitir entrada/salida (por ejemplo, para hacer copias de seguridad o escribir en archivos de registro) .
Algoritmo
El algoritmo opera sobre bloques de 8 bytes con subfrases de 8, 4 y 2 bytes. Se utiliza un hash de cada frase para buscar en una tabla hash con desplazamientos a un búfer de ventana deslizante de datos codificados anteriores. Las coincidencias pueden reemplazarse por el desplazamiento, por lo que el resultado para cada bloque puede ser una mezcla de datos coincidentes y nuevos datos literales. [ 2 ] [ 1 ] [ 3 ]
Implementaciones
IBM añadió aceleradores de hardware e instrucciones para la compresión 842 a sus procesadores Power a partir de POWER7+ . [ 4 ] Además, POWER9 y Power10 añadieron aceleración de hardware para el algoritmo Deflate RFC 1951 , que utilizan zlib y gzip . [ 5 ]
En 2011 se añadió al kernel de Linux un controlador de dispositivo para la compresión 842 asistida por hardware en un procesador POWER. [ 6 ] Más recientemente, Linux puede recurrir a una implementación por software, que por supuesto es mucho más lenta. [ 7 ] zram , un módulo del kernel de Linux para unidades de RAM comprimidas , se puede configurar para usar 842.
Los investigadores han implementado 842 usando unidades de procesamiento gráfico y encontraron una descompresión aproximadamente 30 veces más rápida usando GPU dedicadas. [ 8 ] Una biblioteca de código abierto proporciona 842 para CUDA y OpenCL . [ 9 ] Una implementación de 842 en FPGA demostró un rendimiento 13 veces mejor que una implementación de software. [ 10 ]
Referencias
- 1 2 Plauth, Max; Polze, Andreas. "Hacia la mejora de la eficiencia de la transferencia de datos para aceleradores mediante compresión de hardware" .
- ↑ Franaszek, Peter A; Lastras-Montaño, Luis A; Peng, Song; Robinson, John T (14 de septiembre de 2016). "Compresión de datos con análisis restringidos" . IBM Research . IBM . Recuperado el 13 de julio de 2021 .
- ↑ Blaner, B.; Abali, B.; Bass, BM; Chari, S.; Kalla, R.; Kunkel, S.; Lauricella, K.; Leavens, R.; Reilly, JJ; Sandon, PA (noviembre de 2013). "Aceleradores en chip del procesador IBM POWER7+ para criptografía y expansión de memoria activa" . IBM Journal of Research and Development . 57 (6): 3:1–3:16. doi : 10.1147/JRD.2013.2280090 . Recuperado el 13 de julio de 2021 .
- ↑ "Compresión POWER NX842 para Db2" (PDF) . IBM . Consultado el 13 de julio de 2021 .
- ↑ Veale, Brian F (14 de marzo de 2022). "Aceleración de GZip con AIX en Power Systems" . Comunidad IBM Power . IBM . Recuperado el 22 de octubre de 2022 .
- ↑ "Torvalds/Linux" . GitHub . 12 de febrero de 2022.
- ↑ "Torvalds/Linux" . GitHub . 12 de febrero de 2022.
- ↑ Plauth, Max; Polze, Andreas (2019). "Descompresión basada en GPU para el algoritmo 842". Séptimo Simposio Internacional de Talleres sobre Computación y Redes (CANDARW) de 2019. págs. 97–102 . doi : 10.1109/CANDARW.2019.00025 . ISBN 978-1-7281-5268-4. S2CID 210694935 .
- ↑ "Lib842" . GitHub . 3 de noviembre de 2020.
- ↑ Sukhwani, Bharat; Abali, Bulent; Brezzo, Bernard; Asaad, Sameh (2011). "Compresión de datos sin pérdidas y de alto rendimiento en FPGAs". 2011 IEEE 19th Annual International Symposium on Field-Programmable Custom Computing Machines . IEEE Xplore. pp. 113–116 . doi : 10.1109/FCCM.2011.56 . ISBN 978-1-61284-277-6. S2CID 7828316 .
- Algoritmos de compresión sin pérdidas
- Compresión de datos