Procesador multinúcleo
De Wikipedia, la enciclopedia encyclopedia
Un procesador multinúcleo es un microprocesador en un solo circuito integrado con dos o más unidades de procesamiento separadas, llamadas núcleos, cada una de las cuales lee y ejecuta instrucciones de programa.[1] Las instrucciones son instrucciones ordinarias de CPU (como agregar, mover datos y bifurcar), pero el procesador único puede ejecutar instrucciones en núcleos separados al mismo tiempo, lo que aumenta la velocidad general de los programas que admiten subprocesos múltiples u otras técnicas de computación paralela.[2] Los fabricantes suelen integrar los núcleos en un solo chip de circuito integrado (conocido como chip multiprocesador o CMP) o en varios chips en un solo paquete de chip. Los microprocesadores que se utilizan actualmente en casi todas las computadoras personales son multinúcleo.
Un procesador multinúcleo implementa el multiprocesamiento en un solo paquete físico. Los diseñadores pueden acoplar núcleos en un dispositivo multinúcleo de forma ajustada o suelta. Por ejemplo, los núcleos pueden o no compartir cachés, y pueden implementar métodos de comunicación entre núcleos de memoria compartida o paso de mensajes. Las topologías de red comunes utilizadas para interconectar núcleos incluyen bus, anillo, malla bidimensional y barra transversal. Los sistemas homogéneos de múltiples núcleos incluyen solo núcleos idénticos; los sistemas multinúcleo heterogéneos tienen núcleos que no son idénticos (por ejemplo, big.LITTLE tienen núcleos heterogéneos que comparten el mismo conjunto de instrucciones, mientras que las unidades de procesamiento acelerado de AMD tienen núcleos que no comparten el mismo conjunto de instrucciones). Al igual que con los sistemas de un solo procesador, los núcleos en los sistemas de varios núcleos pueden implementar arquitecturas como VLIW, superescalar, vectorial o multiproceso.
Los procesadores multinúcleo se utilizan ampliamente en muchos dominios de aplicaciones, incluidos los de uso general, integrados, de red, de procesamiento de señales digitales (DSP) y de gráficos (GPU). El recuento de núcleos llega incluso a docenas, y para chips especializados de más de 10 000,[3] y en supercomputadoras (es decir, grupos de chips) el recuento puede superar los 10 millones (y en un caso hasta 20 millones de elementos de procesamiento en total además del host). procesadores).[4]
La mejora en el rendimiento obtenida por el uso de un procesador multinúcleo depende en gran medida de los algoritmos de software utilizados y su implementación. En particular, las posibles ganancias están limitadas por la fracción del software que puede ejecutarse en paralelo simultáneamente en múltiples núcleos; este efecto es descrito por la ley de Amdahl. En el mejor de los casos, los llamados problemas vergonzosamente paralelos pueden generar factores de aceleración cercanos a la cantidad de núcleos, o incluso más si el problema se divide lo suficiente como para caber dentro de los cachés de cada núcleo, evitando el uso de una memoria del sistema principal mucho más lenta. Sin embargo, la mayoría de las aplicaciones no se aceleran tanto a menos que los programadores inviertan esfuerzo en la refactorización.[5]
La paralelización del software es un importante tema de investigación en curso. La cointegración de aplicaciones multiprocesador proporciona flexibilidad en el diseño de arquitectura de red. La adaptabilidad dentro de modelos paralelos es una característica adicional de los sistemas que utilizan estos protocolos.[6]