17-2-2017
INVESTIGACIÓN: ACELERADORES DE HARDWARE Y CRC MICROPROCESADORES
PROFESOR: ING. DAVID VACA
JOSE BARCOS GONZALES ESCUELA SUPERIOR POLITÉCNICA DEL LITORAL
OBJETIVOS
Investigar características relevantes de los aceleradores de hardware existentes.
Complementar los conocimientos adquiridos en la clase, conociendo dispositivos reales que aplican la aceleración de hardware
Aumentar nuestras destrezas en desarrollo y presentación de investigaciones.
En las ciencias computacionales, la aceleración de hardware, es el uso de hardware de ordenador para llevar a cabo algunas de las funciones más eficientemente que lo que lograría un software sobre un procesador convencional. Ejemplos de aceleración de hardware incluyen funcionalidad blitting de aceleración, en unidades de procesamiento gráfico (GPU) y la expresión regular la aceleración de hardware para el control de correo no deseado en la industria de los servidores. “
”
Tradicionalmente, los procesadores han sido secuenciales (las instrucciones se ejecutan una a una), y están diseñados para ejecutar algoritmos de propósito general controlados por extracción de instrucción (por ejemplo, se desplazan resultados temporales hacia y desde un archivo de registro). Los Aceleradores de Hardware, mejoran la ejecución de un algoritmo específico, permitiendo una mayor concurrencia, teniendo rutas específicas para sus temporales, y posiblemente reduciendo la sobrecarga de control de instrucciones. Los procesadores modernos son multinúcleo y ofrecen a menudo Unidades SIMD paralelas. Sin embargo, la aceleración de hardware todavía produce beneficios. La aceleración de hardware es adecuada para cualquier algoritmo de clave repetitiva e intensiva. Dependiendo de granularidad, la aceleración de hardware puede variar de una unidad funcional pequeña, a un bloque funcional grande (como la estimación de movimiento en MPEG-2). El hardware que realiza la aceleración, cuando en una unidad separada de la CPU, se conoce como un Acelerador de Hardware, o a menudo más específicamente como un acelerador 3D, aceleradora de cifrado, etc. Esos términos, sin embargo, son mayores y se han sustituido por condiciones menos descriptivos como tarjeta de vídeo o adaptador de red.
Unidades de Procesamiento Gráfico Tarjetas Aceleradoras de Cifrado Unidades de Procesamiento de vídeo AI acelerador
Una unidad de procesamiento gráfico (GPU), de vez en cuando llama unidad de procesamiento visual (VPU), es un circuito electrónico diseñado para manipular y alterar rápidamente la memoria para acelerar la creación de imágenes en una memoria intermedia de trama destinado a la salida a un dispositivo de visualización. Las GPU se utilizan en sistemas embebidos, teléfonos móviles, ordenadores personales, estaciones de trabajo, y consolas de juegos. Las GPU modernas son muy eficientes en la manipulación de gráficos por ordenador y procesamiento de imágenes, y su estructura altamente paralela, las hace más eficientes que los CPUs de uso general de algoritmos, cuando el tratamiento de grandes bloques de datos se hace en paralelo. En un ordenador personal, una GPU puede estar presente en una tarjeta de vídeo, o puede ser incorporado en la placa base o en determinadas CPU-CPU en el troquel. El término fue popularizado por la GPU Nvidia en 1999, que comercializa la GeForce 256 como "la primera GPU del mundo", o unidad de procesamiento gráfico. Fue presentado como un "procesador de un solo chip integrado con la transformación, la iluminación, el triángulo de configuración/recorte, y motores de renderizado". Rival ATI Technologies acuñó el término "unidad de procesamiento visual" o VPU con el lanzamiento de la Radeon 9700 en 2002.
Un acelerador de AI es (a partir de 2016) una clase de microprocesador emergente (o coprocesador) diseñado para acelerar las redes neuronales artificiales, visión artificial y otros algoritmos de aprendizaje automático para la robótica, Internet de las cosas y otras tareas intensivas de datos o por el sensor. Con frecuencia son diseños multi-núcleos (que reflejan la naturaleza masivamente paralela de las redes neuronales biológicas). Están dirigidos a prácticas estrechas aplicaciones de AI, en lugar de la inteligencia general artificial de la investigación. Muchos proveedores, usan específicos términos para los dispositivos en este espacio. Son distintos de las GPU (que se utilizan comúnmente para el mismo papel) ya que no tienen ninguna unidad de función fija para los gráficos, y por lo general se centran en baja precisión aritmética.
Una comprobación de redundancia cíclica (CRC), es un código de detección de errores de uso común en redes digitales y dispositivos de almacenamiento, para detectar cambios accidentales en datos en bruto. Los bloques de datos que entran en estos sistemas reciben un corto valor de comprobación adjunto, basado en el resto de una división polinómica de su contenido. En la recuperación, el cálculo se repite y, en el caso de los valores de comprobación no coinciden, la acción correctiva puede ser tomada contra la corrupción de datos. La CRC es llamada así, porque la comprobación de valor (verificación de datos), es una redundancia (que se expande el mensaje sin la adición de información) y el algoritmo se basa en códigos cíclicos. Las CRCs son populares porque son fáciles de implementar en binario a nivel de hardware, fácil de analizar matemáticamente, y particularmente buenos en la detección de errores comunes causados por el ruido en los canales de transmisión. Debido a que el valor de comprobación tiene una longitud fija, la función que genera se utiliza de vez en cuando como una función de hash. El CRC fue inventada por W. Wesley Peterson en 1961; la función CRC de 32 bits de Ethernet y muchos otros estándares es el trabajo de varios investigadores y fue publicado en 1975.
Un dispositivo compatible con CRC calcula una, secuencia corta de longitud fija binario, conocido como el valor de comprobación o CRC, para cada bloque de datos a ser enviados o almacenados y lo anexa a los datos, la formación de una palabra de código. Cuando se recibe una palabra de código o leer, el dispositivo ya sea compara su valor de comprobación con un recién calculado a partir del bloque de datos, o de manera equivalente, realiza una CRC sobre toda la palabra de código y compara el valor de comprobación resultante con un esperado residuo constante. Si los valores de control CRC no coinciden, entonces el bloque contiene un error de datos. El dispositivo puede tomar medidas correctivas, tales como leer de nuevo el bloque o solicitar que se le envió de nuevo. De lo contrario, los datos se supone que es libre de errores (aunque, con cierta probabilidad pequeña, puede contener errores no detectados, lo que es la naturaleza fundamental de la comprobación de errores).
CRC están diseñados específicamente para proteger contra los tipos comunes de errores en los canales de comunicación, en el que puedan ofrecer garantías rápida y razonable de la integridad de los mensajes entregados. Sin embargo, no son adecuados para la protección contra la alteración intencional de datos.
En primer lugar, ya que no hay autenticación, un atacante puede editar un mensaje y vuelve a calcular la CRC sin que se detecte la sustitución. Cuando se almacena junto con los datos, los CRC y las funciones de hash criptográfica por sí solos no protegen contra intencional modificación de datos. Cualquier aplicación que requiera protección contra tales ataques deben utilizar mecanismos de autenticación criptográfica, tales como códigos de autenticación de mensajes o firmas digitales (que se basan comúnmente en resumen de cifrado funciones). En segundo lugar, a diferencia de las funciones hash criptográficas, CRC es una función fácilmente reversible, lo que lo hace inadecuado para su uso en las firmas digitales. En tercer lugar, el CRC es una función lineal con una propiedad que ( ⊕ ⊕ ) = () ⊕ () ⊕ (). Como resultado, incluso si el CRC se cifra con un cifrado de flujo que utiliza XOR como su operación de combinación (o modo de cifrado en bloque que convierte efectivamente en un cifrado de flujo, tales como OFB o CFB), tanto el mensaje y la CRC asociada puede ser manipulado sin el conocimiento de la clave de cifrado; este fue uno de los defectos de diseño bien conocidos de la Wired Equivalent Privacy protocolo (WEP).
Peterson, WW;Brown, DT (enero de 1961)."Códigos cíclicos para la detección de errores".ActasdelIRE. (1):228-235. doi :10.1109/JRPROC.1961.287814
Castagnoli, G.; Bräuer, S.; Herrmann, M. (junio de 1993). "Optimización de redundancia cíclica de Comprobación códigos con 24 y 32 bits de paridad". IEEE Transactions on Communications. (6): 883-892. doi : 10.1109 / 26.231911 .
Gaitonde, SS (1988). "Un tutorial sobre cálculos de CRC". IEEE Micro. (4): 6275. doi : 10.1109 / 40.7773 .
Hasitha Muthumala Waidyasooriya, Masanori Hariyama, "Hardware-Acceleration of Short-Read Alignment Based on the Burrows-Wheeler Transform", IEEE Transactions on Parallel & Distributed Systems, vol. 27, no., pp. 1358-1372, May 2016, doi:10.1109/TPDS.2015.2444376
Oriol Arcas-Abella, Adria Armejach, Timothy Hayes, Gorker Alp Malazgirt, Oscar Palomar, Behzad Salami, Nehir Sonmez, "Hardware Acceleration for Query Processing: Leveraging FPGAs, CPUs, and Memory", ComputinginScience&Engineering, vol. 18, no., pp. 80-87, Jan. - Feb. 2016, doi:10.1109/MCSE.2016.16