¿Por qué no solo construimos microprocesadores asíncronos?

La respuesta simple es que no sabemos cómo diseñar sistemas asincrónicos del tamaño de un microprocesador; particularmente uno que sería competitivo en el mercado actual. La mayor parte de la base de conocimiento existente sobre diseño de microprocesadores, herramientas EDA (automatización de diseño electrónico) necesarias para diseñar chips y flujos de diseño / verificación RTL se basan en un diseño sincrónico. El diseño digital asíncrono, al menos aquí en 2015, todavía está en una infancia relativamente pequeña en los círculos académicos. Las herramientas y metodologías necesarias para diseñar grandes circuitos asincrónicos aún no se han desarrollado e inventado.

No puedo recordar una sola instancia de un diseño de microprocesador asíncrono comercialmente exitoso en la historia reciente. Una empresa llamada Fulcrum Microsystems hizo afirmaciones impresionantes sobre el diseño asincrónico a principios de la década de 2000, y supuestamente estaban diseñando complejos SoC asíncronos de redes. Se transformaron en una compañía de chips de red con productos mucho más convencionales hasta que Intel los adquirió hace bastante poco. No estoy seguro de lo que salió de su iniciativa de diseño asincrónico, pero ciertamente presentaron muchas patentes sobre diseño lógico asincrónico y bloques de construcción asincrónicos para microprocesadores (ver la patente de EE. UU. US7698535 por ejemplo)

Los circuitos asincrónicos son atractivos de muchas maneras:

  • velocidad más alta: tan pronto como se completa una operación, el resultado puede transferirse a otro bloque para su posterior procesamiento, sin esperar a que finalice un ciclo de reloj completo,
  • menor consumo de energía: la alimentación del reloj es uno de los principales contribuyentes,
  • sin problemas con la distribución del reloj (sesgo, etc.),

y más.

Hay pocas formas posibles de detectar cuándo se realiza una operación:

  • usando lógica complementaria (basada en el elemento C), duplica el tamaño del circuito (por lo tanto, también la potencia), o incluso más;
  • medición de corrientes de conmutación: difícil de detectar de una manera simple;
  • usando elementos de retardo predefinidos para señalar el final de la operación, sin embargo, es menos confiable que el reloj y, en primer lugar, no se beneficia;

y algunos otros, sin embargo, es solo la mitad de la historia. Tenga en cuenta que ninguna de estas técnicas generalmente ofrece una ventaja significativa sobre el sistema de reloj, por lo que se utilizan solo en algunos segmentos muy específicos.

El dominio de los circuitos sincrónicos reside en su simplicidad . Incluso si implementó con éxito cuando se completa una operación, hay un inconveniente: casi todos los equivalentes asíncronos requieren una lógica de apretón de manos más o menos pesada para bloquear el resultado, luego verifique si la siguiente etapa está disponible, etc., mientras que la sincronización simplemente “voltea” “en el borde del reloj, ya que es por diseño garantizado que el resultado está disponible y la siguiente etapa en la tubería es libre de aceptar / bloquear el resultado para su posterior procesamiento.

Entonces, usar síncrono no es tan malo cuando cuentas muchas técnicas usadas para reducir el consumo de energía, etc. Está lejos de ser perfecto, pero funciona bien y sigue la curva de progresión (¿hasta que aparece algo nuevo?).