Respuesta corta: los gerentes quieren una PRUEBA de función simple, comprobable antes de comprometerse con millones (o más) de dólares para un diseño. Las herramientas actuales, simplemente no dan diseños asincrónicos esas respuestas.
Las microcomputadoras y los microcontroladores suelen utilizar un esquema de sincronización para asegurar el control del tiempo. Todas las esquinas del proceso deben mantener el tiempo en todos los efectos de voltaje, temperatura, proceso, etc.en las velocidades de propagación de la señal. No hay compuertas lógicas actuales que cambien instantáneamente: cada compuerta cambia según el voltaje que se suministra, la unidad que recibe, la carga que maneja y el tamaño de los dispositivos que se utilizan para hacerlo (y, por supuesto, el nodo del proceso (tamaño del dispositivo) y qué tan rápido se está ejecutando ESE proceso --- ESTO pasa a través del fab). Para llegar a la conmutación "instantánea", tendría que usar la lógica cuántica, y eso supone que los dispositivos cuánticos pueden cambiar instantáneamente; (No estoy seguro).
La lógica de reloj hace que PROVING tenga en cuenta que la sincronización en todo el procesador funciona a través de las variables de voltaje, temperatura y procesamiento esperadas. Hay muchas herramientas de software disponibles que ayudan a medir este tiempo, y el proceso neto se llama "cierre de tiempo". El reloj puede (y, en mi experiencia, lo hace ) tomar entre 1/3 y 1/2 de la potencia utilizada en un microprocesador.
Entonces, ¿por qué no un diseño asincrónico? Existen pocas, si es que hay alguna, herramientas de cierre de sincronización para apoyar este estilo de diseño. Existen pocas, si es que hay alguna, herramientas automáticas de ubicación y ruta que puedan manejar y gestionar un gran diseño asíncrono. Por lo menos, los gerentes NO aprueban nada que no tenga una PRUEBA de funcionalidad directa, generada por computadora.
El comentario de que el diseño asincrónico requiere "una tonelada" de señales de sincronización, que requirió "muchos más transistores", ignora los costos de enrutamiento y sincronización de un reloj global, y el costo de todos los flip-flops que requiere el sistema de reloj. Los diseños asincrónicos son, (o deberían ser), más pequeños y más rápidos que sus contrapartes cronometradas. (Uno simplemente toma el ONE ruta de señal más lenta, y los usos que para alimentar de vuelta una señal de "listo" para la lógica anterior).
La lógica asincrónica es más rápida, porque nunca tiene que esperar un reloj que tuvo que extenderse para otro bloque en otro lugar. Esto es especialmente cierto en las funciones de registro a lógica a registro. La lógica asincrónica no tiene múltiples problemas de "configuración" y "retención", ya que solo las estructuras de sumidero (registros) finales tienen esos problemas, a diferencia de un conjunto de lógica canalizada con flip-flops intercalados para espaciar los retrasos de propagación de la lógica al reloj fronteras
Se puede hacer? Ciertamente, incluso en un diseño de mil millones de transistores. ¿Es más difícil? Sí, pero solo porque PROBAR que funciona en un chip completo (o incluso en un sistema) está mucho más involucrado. Obtener el tiempo en papel es razonablemente directo para cualquier bloque o subsistema. Controlar esa sincronización en un lugar y sistema de ruta automatizados es mucho más difícil, porque las herramientas NO están configuradas para manejar el conjunto potencial mucho mayor de restricciones de sincronización.
Los microcontroladores también tienen un conjunto potencialmente grande de otros bloques que se conectan a señales externas (relativamente) lentas, agregadas a toda la complejidad de un microprocesador. Eso hace que el tiempo sea un poco más complicado, pero no demasiado.
Lograr un mecanismo de señal de "bloqueo" de "primero en llegar" es un problema de diseño de circuito, y hay formas conocidas de lidiar con eso. Las condiciones de carrera son un signo de 1). mala práctica de diseño; o 2). Señales externas que entran en el procesador. El cronometraje en realidad introduce una condición de carrera de señal contra reloj que se relaciona con violaciones de "configuración" y "retención".
Yo, personalmente, no entiendo cómo un diseño asincrónico podría entrar en una condición de carrera estancada o cualquier otra . Esa podría ser mi limitación, pero a menos que suceda en los datos que ingresan al procesador, NUNCA debería ser posible en un sistema lógico bien diseñado, e incluso entonces, ya que puede suceder a medida que ingresan las señales, usted diseña manejarlo.
(Espero que esto ayude).
Todo lo dicho, si tienes el dinero ...