La descarga de computación consiste en transferir tareas computacionales intensivas en recursos a un procesador independiente, como un acelerador de hardware , o a una plataforma externa, como un clúster , una red o la nube . La descarga a un coprocesador puede utilizarse para acelerar aplicaciones como la renderización de imágenes y los cálculos matemáticos. Descargar la computación a una plataforma externa a través de una red puede proporcionar potencia de cálculo y superar las limitaciones de hardware de un dispositivo, como la potencia de cálculo, el almacenamiento y la energía limitados.
Historia
Los primeros conceptos de computadoras con programas almacenados se desarrollaron con el diseño de la ENIAC , la primera computadora digital de propósito general. La ENIAC tenía un rendimiento limitado a tareas individuales, lo que impulsó el desarrollo de la EDVAC , que se convertiría en la primera computadora diseñada para ejecutar instrucciones de diversos tipos. El desarrollo de las tecnologías informáticas facilitó el aumento del rendimiento de las computadoras y, posteriormente, dio lugar a una variedad de configuraciones y arquitecturas.
Los primeros ejemplos de descarga de computación consistieron en el uso de subprocesadores simples para gestionar el procesamiento de entrada/salida mediante un sistema independiente llamado E/S de canal . Este concepto mejoró el rendimiento general del sistema, ya que el ordenador central solo necesitaba establecer los parámetros para las operaciones, mientras que los procesadores de canal se encargaban del formateo y procesamiento de la E/S. Durante la década de 1970, se empezaron a utilizar coprocesadores para acelerar la aritmética de punto flotante, superando la velocidad de los procesadores de 8 y 16 bits anteriores que utilizaban software. Como resultado, los coprocesadores matemáticos se hicieron comunes para cálculos científicos y de ingeniería. Otro tipo de coprocesador fue el coprocesador gráfico. A medida que el procesamiento de imágenes se popularizó, se empezaron a utilizar chips gráficos especializados para descargar la creación de imágenes de la CPU. Los coprocesadores eran comunes en la mayoría de los ordenadores; sin embargo, su uso disminuyó debido al desarrollo de las tecnologías de microprocesadores, que integraban muchas funciones de coprocesador. No obstante, las unidades de procesamiento gráfico dedicadas siguen siendo ampliamente utilizadas por su eficacia en numerosas tareas, como el procesamiento de imágenes, el aprendizaje automático, la computación paralela, la visión artificial y la simulación física.
El concepto de tiempo compartido, es decir, el uso compartido de recursos informáticos, fue implementado por primera vez por John McCarthy . En aquel entonces, la computación en mainframes no era práctica debido a los costos asociados con la compra y el mantenimiento de estos equipos. El tiempo compartido representó una solución viable para este problema, ya que el tiempo de computación podía estar disponible para empresas más pequeñas. En la década de 1990, las compañías de telecomunicaciones comenzaron a ofrecer servicios de red privada virtual (VPN) . Esto permitió a las empresas equilibrar el tráfico en los servidores, lo que resultó en un uso eficiente del ancho de banda. El símbolo de la nube se convirtió en sinónimo de la interacción entre proveedores y usuarios. Esta computación se extendió más allá de los servidores de red y permitió que la potencia de cálculo estuviera disponible para los usuarios a través del tiempo compartido. La disponibilidad de computadoras virtuales permitió a los usuarios descargar tareas de un procesador local. [ 1 ]
En 1997, distributed.net buscaba obtener recursos informáticos voluntarios para resolver tareas computacionalmente intensivas utilizando el rendimiento de ordenadores conectados en red. Este concepto, conocido como computación en malla, estaba asociado a los sistemas de computación en la nube.
El primer concepto de conectar grandes mainframes para proporcionar una forma efectiva de paralelismo fue desarrollado en la década de 1960 por IBM . La computación en clústeres utilizada por IBM tenía como objetivo aumentar el rendimiento del hardware, el sistema operativo y el software, al tiempo que permitía a los usuarios ejecutar aplicaciones existentes. Este concepto cobró impulso durante la década de 1980 con la aparición de microprocesadores de alto rendimiento y redes de alta velocidad, herramientas para la computación distribuida de alto rendimiento. Los clústeres podían dividir y descargar eficientemente la computación a nodos individuales para aumentar el rendimiento y, al mismo tiempo, lograr escalabilidad . [ 2 ]
Concepto
Las tareas computacionales son gestionadas por un procesador central que ejecuta instrucciones mediante operaciones aritméticas básicas , lógica de control y operaciones de entrada/salida. La eficiencia de las tareas computacionales depende de las instrucciones por segundo que puede ejecutar una CPU, las cuales varían según el tipo de procesador. [ 3 ] Ciertos procesos de aplicación pueden acelerarse descargando tareas del procesador principal a un coprocesador , mientras que otros procesos pueden requerir una plataforma de procesamiento externa.
aceleración de hardware
El hardware ofrece un mayor rendimiento posible para ciertas tareas en comparación con el software. El uso de hardware especializado puede realizar funciones más rápido que el software procesado en una CPU. El hardware tiene la ventaja de la personalización, lo que permite utilizar tecnologías específicas para distintas funciones. Por ejemplo, una unidad de procesamiento gráfico (GPU) , que consta de numerosos núcleos de bajo rendimiento, es más eficiente en el cálculo gráfico que una CPU, que cuenta con menos núcleos de alta potencia. [ 4 ] Sin embargo, los aceleradores de hardware son menos versátiles en comparación con una CPU.
Acceso directo a la memoria
Un dispositivo periférico puede utilizar el acceso directo a la memoria para leer o escribir en la memoria del sistema , sin involucrar a la CPU. Un dispositivo periférico puede utilizar el acceso directo a la memoria para descargar ciertas cargas de trabajo de la CPU. [ 5 ] Si bien la aceleración de hardware suele ser específica del proveedor, el controlador de clase puede utilizar el acceso directo a la memoria .
computación en la nube
La computación en la nube se refiere tanto a las aplicaciones que se transportan a través de Internet como al hardware y software en los centros de datos que brindan servicios; que incluyen almacenamiento de datos y procesamiento. [ 6 ] Esta forma de computación depende del acceso a Internet de alta velocidad y de la inversión en infraestructura. [ 7 ] Mediante el acceso a la red, una computadora puede migrar parte de su procesamiento a la nube. Este proceso implica el envío de datos a una red de centros de datos que tienen acceso a la potencia de procesamiento necesaria para el cálculo.
computación en clúster
Un clúster de computadoras es un tipo de sistema de procesamiento paralelo que combina computadoras independientes interconectadas para funcionar como un único recurso informático. [ 8 ] Los clústeres emplean un modelo de programación paralela que requiere tecnologías de interconexión rápidas para admitir un alto ancho de banda y baja latencia para la comunicación entre nodos. [ 2 ] En un modelo de memoria compartida, los procesos paralelos tienen acceso a toda la memoria como un espacio de direcciones global. Múltiples procesadores pueden operar de forma independiente, pero comparten la misma memoria; por lo tanto, los cambios en la memoria realizados por un procesador se reflejan en todos los demás. [ 8 ]
Computación en malla
La computación en malla es un grupo de computadoras interconectadas que trabajan juntas como una supercomputadora virtual para realizar tareas computacionales intensivas, como el análisis de grandes conjuntos de datos. Mediante la nube, es posible crear y utilizar mallas de computadoras para fines y períodos específicos. La distribución de las tareas computacionales entre múltiples máquinas reduce significativamente el tiempo de procesamiento, lo que aumenta la eficiencia y minimiza el desperdicio de recursos. A diferencia de la computación paralela, las tareas de computación en malla generalmente no tienen dependencia temporal; en cambio, utilizan computadoras que forman parte de la malla solo cuando están inactivas, y los usuarios pueden realizar tareas no relacionadas con la malla en cualquier momento. [ 9 ]
Ventajas
Existen varias ventajas al delegar el procesamiento a un procesador externo:
- Las unidades de procesamiento externas pueden ofrecer un mayor rendimiento computacional, capacidad de almacenamiento y flexibilidad en comparación con un ordenador local.
- Las limitaciones computacionales de un dispositivo podrían ignorarse descargando la carga de trabajo a otros sistemas con mejor rendimiento y recursos. Otros aspectos del dispositivo podrían mejorarse, como el consumo de energía, el costo y la portabilidad. [ 10 ]
- Las empresas que requieren hardware para operar no tienen que destinar recursos al desarrollo de tecnologías de la información e infraestructura.
- La computación en clúster es más rentable que un solo ordenador y mucho más flexible en cuanto a la posibilidad de añadir más unidades de procesamiento.
Limitaciones
Existen varias limitaciones al delegar cálculos a un procesador externo:
- Los servicios de computación en la nube presentan problemas relacionados con el tiempo de inactividad, ya que pueden producirse interrupciones cuando los proveedores de servicios están sobrecargados de tareas.
- El procesamiento informático externo requiere dependencia de la red, lo que podría provocar tiempos de inactividad si se producen problemas en la conexión de red.
- La computación a través de una red introduce latencia, lo cual no es deseable para aplicaciones sensibles a la latencia, como la conducción autónoma y el análisis de vídeo. [ 11 ]
- Los proveedores de servicios en la nube no siempre son seguros y, en caso de una brecha de seguridad, podría revelarse información importante.
- Los ordenadores modernos integran diversas tecnologías, como gráficos, hardware de sonido y redes, dentro de la placa base, lo que hace que muchos aceleradores de hardware resulten irrelevantes.
- El uso de servicios en la nube elimina el control individual sobre el hardware y obliga a los usuarios a confiar en que los proveedores de la nube mantendrán la infraestructura y protegerán adecuadamente sus datos.
- Es posible que el software de aplicación no esté disponible en el procesador o sistema operativo de destino. Quizás sea necesario reescribir el software para el entorno de destino. Esto puede generar costos y desarrollo de software adicionales, así como mayores gastos.
Solicitud
Servicios en la nube
Los servicios en la nube se pueden describir mediante tres modelos principales: SaaS , PaaS e IaaS . El software como servicio (SaaS) es un servicio alojado externamente al que un usuario puede acceder fácilmente a través de un navegador web. La plataforma como servicio (PaaS) es un entorno de desarrollo donde se puede crear, probar e implementar software sin que el usuario tenga que preocuparse por la creación y el mantenimiento de la infraestructura computacional. La infraestructura como servicio (IaaS) proporciona acceso a los recursos, la tecnología de red y el cumplimiento de las normas de seguridad de una infraestructura, que las empresas pueden utilizar para desarrollar software. Los servicios de computación en la nube ofrecen a los usuarios acceso a grandes cantidades de potencia computacional y almacenamiento que no serían viables en ordenadores locales sin un gasto significativo. [ 7 ]
computación en la nube móvil
Los dispositivos móviles, como los teléfonos inteligentes y los dispositivos portátiles, tienen limitaciones en cuanto a potencia de cálculo, almacenamiento y consumo de energía. A pesar del constante desarrollo de componentes clave como la CPU, la GPU, la memoria y las tecnologías de acceso inalámbrico, los dispositivos móviles deben ser portátiles y energéticamente eficientes. La computación móvil en la nube combina la computación en la nube con la computación móvil, donde los dispositivos móviles realizan descargas de computación para equilibrar la potencia de la nube, acelerando así la ejecución de aplicaciones y ahorrando energía. En esta descarga de computación, un dispositivo móvil traslada parte de su procesamiento a la nube. Este proceso implica la partición de aplicaciones, la decisión de descarga y la ejecución distribuida de tareas. [ 12 ] [ 13 ]
videojuegos
Los videojuegos son juegos electrónicos que implican entrada, interacción con una interfaz de usuario, y generan salida, generalmente retroalimentación visual en un dispositivo de visualización de video. Estas operaciones de entrada/salida dependen de una computadora y sus componentes, incluyendo la CPU, la GPU, la RAM y el almacenamiento. Los archivos del juego se almacenan en una forma de memoria secundaria que luego se carga en la memoria principal cuando se ejecuta. La CPU es responsable de procesar la entrada del usuario y pasar la información a la GPU. La GPU no tiene acceso a la memoria principal de la computadora, por lo que los recursos gráficos deben cargarse en la VRAM , que es la memoria de la GPU. La CPU es responsable de dar instrucciones a la GPU mientras que la GPU usa la información para renderizar una imagen en un dispositivo de salida. Las CPU pueden ejecutar juegos sin una GPU mediante renderizado por software; sin embargo, descargar el renderizado a una GPU que tiene hardware especializado resulta en un mejor rendimiento. [ 14 ]
Véase también
Referencias
- ↑ Foote, Keith D. (22 de junio de 2017). "Una breve historia de la computación en la nube" . DATAVERSITY . Recuperado el 17 de octubre de 2019 .
- 1 2 Yeo, Chin; Buyya, Rajkumar; Pourreza, Hossien; Eskicioglu, Rasit; Peter, Graham; Sommers, Frank (10 de enero de 2006). Cluster Computing: High-Performance, High-Availability, and High-Throughput Processing on a Network of Computers . Boston, MA: Springer. ISBN 978-0-387-40532-2.
- ↑ "Frecuencia de CPU" . www.cpu-world.com . Consultado el 16 de octubre de 2019 .
- ↑ Cardoso, Joao; Gabriel, José; Pedro, Diniz (15 de junio de 2017). Computación integrada para alto rendimiento . Morgan Kaufman. ISBN 9780128041994.
- ↑ https://blogs.infoservices.com/embedded-system/how-dma-frees-up-your-cpu-and-why-it-matters/
- ↑ Armbrust, Michael; Fox, Armondo; Griffith, Rean; Joseph, Anthony; Katz, Randy; Konwinski, Andrew; Lee, Gunho; Patterson, David; Rabkin, Ariel (10 de febrero de 2009). Por encima de las nubes: una visión de Berkeley sobre la computación en la nube .
- 1 2 "¿Cómo funciona la computación en la nube? | Blog de Cloud Academy" . Cloud Academy . 25 de marzo de 2019. Consultado el 22 de octubre de 2019 .
- 1 2 "Introducción a la computación en clúster: fundamentos de la computación distribuida" . selkie.macalester.edu . Consultado el 22 de octubre de 2019 .
- ↑ "¿Qué es la computación en malla? - Definición | Microsoft Azure" . azure.microsoft.com . Consultado el 22 de octubre de 2019 .
- ↑ Akherfi, Khadija; Gerndt, Micheal; Harroud, Hamid (2018-01-01). "Computación en la nube móvil para la descarga de computación: problemas y desafíos" . Applied Computing and Informatics . 14 (1): 1– 16. doi : 10.1016/j.aci.2016.11.002 . ISSN 2210-8327 .
- ^ Ananthanarayanan, Ganesh; Bahl, Paramvir; Bodik, Peter; Chintalapudi, Krishna; Philipose, Matthai; Ravindranath, Lenin; Sinha, Sudipta (2017). "Análisis de vídeo en tiempo real: la aplicación excelente para la computación perimetral". Computadora . 50 (10): 58– 67. doi : 10.1109/mc.2017.3641638 . ISSN 0018-9162 . S2CID 206449115 .
- ↑ Lin, L.; Liao, X.; Jin, H.; Li, P. (agosto de 2019). "Descarga de computación hacia la computación de borde". Actas del IEEE . 107 (8): 1584– 1607. doi : 10.1109/JPROC.2019.2922285 . S2CID 199017142 .
- ↑ Ma, X.; Zhao, Y.; Zhang, L.; Wang, H.; Peng, L. (septiembre de 2013). "Cuando los terminales móviles se encuentran con la nube: la descarga de computación como puente". IEEE Network . 27 (5): 28– 33. doi : 10.1109/MNET.2013.6616112 . S2CID 16674645 .
- ↑ "Cómo funcionan las tarjetas gráficas - ExtremeTech" . www.extremetech.com . Consultado el 11 de noviembre de 2019 .
- Arquitectura de computación distribuida