¿Cómo implementa la CPU multinúcleo la coordinación asincrónica?

8

Vengo de la ciencia de la computación y quiero estudiar el cálculo de procesos para usar en el diseño de circuitos asíncronos.

Entonces, estoy mirando alrededor de la práctica actual en circuitos asincrónicos. Hay muchos artículos que dicen que la incapacidad para aumentar la velocidad del reloj conduce a una arquitectura de CPU de múltiples núcleos . Sin embargo, ninguno realmente dice cómo se logra la coordinación asincrónica entre núcleos.

Quiero que confirme / corrija mis siguientes suposiciones sobre cómo la CPU multinúcleo actual maneja la coordinación asincrónica:

  1. Cada núcleo tiene señales de reloj separadas, que no necesitan estar en fase entre sí. De lo contrario, el problema de distribución de la señal del reloj no se resolvería realmente, ¿verdad?
  2. Los núcleos se coordinan solo en el nivel de programación. Es decir, hacer pruebas y establecer en alguna memoria (RAM o registro). Y no es algo de bajo nivel como el protocolo de estrechar la mano usando un circuito de encuentro .
Apiwat Chantawibul
fuente
1
Las CPU grandes de un solo núcleo tienen múltiples relojes, utilizados para la reducción de potencia. Algunos relojes están cerrados, otros se ralentizan dinámicamente. Agregue otro núcleo y, por supuesto, tiene varios relojes. La distribución más fácil del reloj es un efecto secundario, pero no es la razón por la que hay varios relojes.
2
Eche un vistazo a este documento sobre cómo cruzar dominios de reloj entre diferentes frecuencias: w2.cadence.com/whitepapers/cdc_wp.pdf
pjc50
1
(acerca de la distribución de la señal de reloj: la solución es un árbol de búfer donde todos los nodos hoja tienen el mismo tiempo de propagación desde el origen. Puede construir esto algorítmicamente. No es trivial pero funciona)
pjc50
1
Las desventajas de los árboles de amortiguación son muchas: puede consumir la mayoría de la energía y el 10-30% del área disponible. Sin embargo, como descubrió nuestra startup, el principal problema con el diseño asincrónico es la necesidad de cambiar toda su cadena de herramientas de software para usarla de manera efectiva. Las empresas de CI son sorprendentemente conservadoras, debido a los costos de fabricación y los riesgos de fracaso.
pjc50
1
@ pjc50 ISTR que algunos procesadores de diseño de cuadrícula, orientados al paso de mensajes (¿posiblemente de Tilera?) tenían el "flujo" del reloj de izquierda a derecha y de abajo hacia arriba, ya que solo los vecinos más cercanos necesitaban comunicarse directamente (una especie de variedad de asíncrono globalmente localmente síncrono).
Paul A. Clayton

Respuestas:

1

Combina dos ideas independientes (ortogonales) en la teoría de circuitos digitales: circuitos asíncronos y procesadores de múltiples núcleos.

Circuitos asíncronos: circuitos que tienen más de un reloj, y los relojes son asíncronos (es decir, tienen una relación de fase no constante e impredecible).

Algunos circuitos pueden usar dos relojes (por ejemplo), pero uno es solo una división entre 2 del otro. Estos circuitos no son asíncronos porque existe una relación de fase conocida entre los dos relojes, aunque las frecuencias de los relojes son diferentes.

Es posible que tenga una CPU de un solo núcleo con pocos relojes asíncronos, y una CPU de varios núcleos con todos sus núcleos funcionando en el mismo reloj (este último es solo una CPU imaginaria; todas las CPU de varios núcleos reales tienen muchos relojes que consisten en varios entre sí) conjuntos de reloj asíncrono).

Los circuitos asincrónicos son un tema importante en el diseño digital. La explicación anterior es básica.

CPU multinúcleo: pocos microprocesadores (núcleos) conectados en paralelo que emplean hardware y software sofisticado para lograr un alto rendimiento.

La práctica habitual es hacer que los núcleos sean lo más independientes posible en términos de relojes / potencia / ejecución / etc. Esto permite el ajuste dinámico (en tiempo de ejecución) de la actividad de las CPU (es decir, la energía consumida) a las necesidades reales del sistema.

Mi impresión es que lo que está buscando es una explicación sobre las CPU multinúcleo , no los circuitos asíncronos.

Este tema es mucho, mucho más grande que cualquier cosa que uno pueda poner en la respuesta.

Sin embargo, las respuestas a sus preguntas:

  1. Los relojes utilizados por diferentes núcleos (que yo sepa) tienen las mismas fuentes (pueden ser más de uno: cristal, VCO, ...). Cada núcleo (generalmente) tiene pocos conjuntos de reloj mutuamente asíncronos. Cada núcleo tiene una lógica de regulación y aceleración de reloj dedicada que permite apagar o ralentizar el reloj, de forma independiente para cada núcleo. Nuevamente, si solo le interesa el aspecto algorítmico del paralelismo de los núcleos, olvídese de los relojes (por ahora).
  2. Acaba de indicar el aspecto principal del paralelismo de los núcleos: ¿cómo ejecuta múltiples núcleos en paralelo de manera eficiente ? Este tema es enorme y contiene soluciones HW y SW. Desde la perspectiva de HW, los núcleos modifican una memoria común e intercambian señales de control y estado con lógica de secuencia y entre ellos. La imagen se complica mucho debido a la existencia de cachés : te sugiero que comiences leyendo en cachés, luego coherencia de caché y solo luego en cobros en sistemas de múltiples núcleos.

Espero que esto ayude.

Vasiliy
fuente
El hecho de que las CPU tengan que funcionar a una velocidad diferente no implica que tengan que ser asíncronas. Tener una ventana alrededor de cada reloj cuando se garantiza que las señales no cambien es extremadamente útil. Incluso si dos módulos tienen frecuencias de reloj que no son múltiplos entre sí, puede ser útil tener ambos generados por un dispositivo que garantice que nunca se conmuten demasiado juntos.
supercat