[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.Los microprocesadores que se utilizan actualmente en casi todas las computadoras personales son multinúcleo.Los diseñadores pueden acoplar núcleos en un dispositivo multinúcleo de forma ajustada o suelta.Las topologías de red comunes utilizadas para interconectar núcleos incluyen bus, anillo, malla bidimensional y barra transversal.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.Sin embargo, la mayoría de las aplicaciones no se aceleran tanto a menos que los programadores inviertan esfuerzo en la refactorización.Este artículo utiliza los términos "multinúcleo" y "doble núcleo" para las CPU fabricadas en el mismo circuito integrado, a menos que se indique lo contrario.Un competidor especialmente fuerte para los mercados establecidos es la mayor integración de funciones periféricas en el chip.Estas señales de mayor calidad permiten enviar más datos en un período de tiempo determinado, ya que las señales individuales pueden ser más breves y no es necesario repetirlas con tanta frecuencia.Además, los núcleos comparten algunos circuitos, como la memoria caché L2 y la interfaz con el bus frontal (FSB).Esto puede ser un factor importante en los dispositivos móviles que funcionan con baterías.Finalmente, la potencia de procesamiento bruta no es la única restricción en el rendimiento del sistema.La composición y el equilibrio de los núcleos en la arquitectura multinúcleo muestran una gran variedad.La forma en que se implementan e integran varios núcleos afecta significativamente tanto las habilidades de programación del desarrollador como las expectativas del consumidor sobre las aplicaciones y la interactividad frente al dispositivo.[...] Atsushi Hasegawa, un ingeniero jefe sénior en Renesas, generalmente estuvo de acuerdo.Una versión desactualizada de una aplicación antivirus puede crear un nuevo subproceso para un proceso de escaneo, mientras que su subproceso GUI espera comandos del usuario (por ejemplo, cancelar el escaneo).Si los desarrolladores no pueden diseñar software para aprovechar al máximo los recursos proporcionados por múltiples núcleos, finalmente alcanzarán un techo de rendimiento insuperable.Algunos modelos de programación paralela existentes, como Cilk Plus, OpenMP, OpenHMPP, FastFlow, Skandium, MPI y Erlang, se pueden usar en plataformas multinúcleo.Otros esfuerzos de investigación incluyen Codeplay Sieve System, Cray's Chapel, Sun's Fortress y IBM's X10.Esto requiere el uso de bibliotecas numéricas para acceder al código escrito en lenguajes como C y Fortran, que realizan cálculos matemáticos más rápido que los lenguajes más nuevos como C#.Los usuarios simplemente programan usando estas abstracciones y un compilador inteligente elige la mejor implementación según el contexto.Los pasos básicos en el diseño de aplicaciones paralelas son: Por otro lado, del lado del servidor, los procesadores multinúcleo son ideales porque permiten que muchos usuarios se conecten a un sitio simultáneamente y tienen hilos de ejecución independientes.Las soluciones de software como OpenAMP se utilizan para ayudar con la comunicación entre procesadores.Los puntos de referencia existentes incluyen SPLASH-2, PARSEC y COSMIC para sistemas heterogéneos.