Es mucho más difícil desarrollar carreras de datos realmente nefastas con una sola CPU. Quiero decir, claro, puedes lograr un desgarro entre palabras si interrumpes una sola CPU, pero ¿puedes construir escenarios exóticos donde no haya un solo entrelazado de hilos que haga lo que quieres?
De acuerdo, tal vez hacer errores insidiosos no cuenta como un uso válido de los avances de múltiples códigos. Como resultado, no hay mucho que mutli-core pueda hacer que un solo núcleo no pueda dar tiempo. El motivo es simple. Si intenta evitar esas razas de datos malvados, debe tener puntos de sincronización en su código. Si modela su código como una red de cómputos donde las entradas deben estar completas y sincronizadas antes de que pueda calcular y producir salidas, es fácil ver que una sola CPU simplemente puede avanzar a lo largo de la red, calculando el siguiente bloque de trabajo disponible .
De hecho, si puede demostrar que su algoritmo puede ser resuelto por una máquina de Turing (que es prácticamente todos los algoritmos que nos interesan), se puede demostrar que el algoritmo puede hacerlo no solo una CPU de núcleo único, sino que de hecho máquina de estado con un trozo de cinta muy largo para la memoria!
El AJEDREZ detector de carrera realmente aprovecha esto para encontrar casos de carrera. Ejecuta todo de una sola hebra y explora sistemáticamente todas las posibles intercalaciones entre subprocesos, tratando de encontrar casos en los que una prueba falle debido a un caso de carrera. CHESS depende del hecho de que puede ejecutar cualquier aplicación multiproceso en un solo núcleo.
Los casos en los que necesita multinúcleo aparecen cuando comienza a extender los límites del hardware. La obvia es cuando tienes limitaciones de tiempo. Algunos problemas con restricciones de tiempo real son imposibles de hacer con un solo núcleo porque simplemente no pueden manejar el reloj de un solo núcleo lo suficientemente rápido. Hay una razón por la cual las CPU subieron hasta 4Ghz y luego se asentaron un poco, prefiriendo más núcleos a velocidades más bajas.
Una versión más exótica de esta restricción de tiempo está en los sistemas de tiempo real duro. En algunos sistemas difíciles en tiempo real, el servicio de interrupciones es tan exigente que realmente tiene que elegir una CPU de múltiples núcleos que le permita dividir las interrupciones en los núcleos, o se encuentra con limitaciones de tiempo.
Otro límite surge con los buses de datos. Considere el Blue Gene / P como ejemplo. JUGENE, una supercomputadora Blue Gene / P particular, tiene 144 terabytes de memoria. Simplemente no hacen computadoras con una sola CPU que puedan acceder a toda esa memoria.