Короткий ответ: менеджеры хотят простой, проверяемой, ДОКАЗАТЕЛЬНОЙ функции, прежде чем тратить миллионы (или более) долларов на дизайн. Текущие инструменты, просто не дают асинхронным проектам такие ответы.
Микрокомпьютеры и микроконтроллеры обычно используют схему синхронизации для обеспечения контроля времени. Все технологические углы должны поддерживать синхронизацию всех влияний напряжения, температуры, процесса и т. Д. На скорость распространения сигнала. Там нет ни одного тока логических вентилей изменяются мгновенно: каждые ворота переключаются в зависимости от напряжения она поставляется, привод он получает, нагрузку он управляет, и размер устройств, которые используются , чтобы сделать это, (и, конечно , узел процесса (размер устройства), в котором он сделан, и насколько быстро этот процесс выполняется на самом деле - ЭТО ПРОХОД через ФАБ). Чтобы перейти к «мгновенному» переключению, вы должны использовать квантовую логику, и это предполагает, что квантовые устройства могут переключаться мгновенно; (Я не уверен).
Тактовая логика подтверждает, что синхронизация по всему процессору работает в зависимости от ожидаемого напряжения, температуры и переменных обработки. Есть много доступных программных инструментов, которые помогают измерить это время, и сетевой процесс называется «закрытием времени». Синхронизация может (и, по моему опыту, делает ) потреблять от 1/3 до 1/2 мощности, используемой в микропроцессоре.
Итак, почему не асинхронный дизайн? Есть немного, если таковые имеются, инструменты закрытия времени для поддержки этого стиля дизайна. Существует немного, если таковые имеются, автоматических средств определения местоположения и маршрутов, которые могут работать с большой асинхронной конструкцией и управлять ею. Если ничего другого, менеджеры НЕ одобряют ничего, что не имеет прямой, сгенерированной компьютером, ДОКАЗАТЕЛЬСТВА функциональности.
Комментарий о том, что асинхронный дизайн требует «тонны» синхронизирующих сигналов, что требует «намного больше транзисторов», игнорирует затраты на маршрутизацию и синхронизацию глобальных тактовых импульсов и стоимость всех триггеров, которые требует система синхронизации. Асинхронные конструкции (или должны быть) меньше и быстрее, чем их синхронизированные аналоги. (Один просто берет ОДИН самый медленный путь сигнала и использует его для передачи сигнала «готовности» к предыдущей логике).
Асинхронная логика работает быстрее, потому что она никогда не должна ждать часов, которые должны были быть расширены для другого блока где-то еще. Это особенно верно в функциях «от регистра к логике к регистру». Асинхронная логика не имеет множественных проблем «установки» и «удержания», поскольку эти проблемы имеют только конечные структуры приемников (регистры), в отличие от конвейерного набора логики с триггерами, чередующимися с пространством, распространение логики задерживает тактирование границы.
Это можно сделать? Конечно, даже на миллиарде транзисторов. Это сложнее? Да, но только потому, что доказать, что он работает на всем чипе (или даже системе), гораздо сложнее. Получение сроков на бумаге достаточно прямолинейно для любого блока или подсистемы. Управлять этим временем в автоматизированном месте и системе маршрутов гораздо сложнее, потому что инструмент НЕ настроен для обработки гораздо большего потенциального набора временных ограничений.
Микроконтроллеры также имеют потенциально большой набор других блоков, которые взаимодействуют с (относительно) медленными внешними сигналами, что увеличивает сложность микропроцессора. Это делает время немного более сложным, но не намного.
Достижение механизма «блокировки» «первым прибывшим» является проблемой проектирования схемы, и существуют известные способы решения этой проблемы. Расовые условия являются признаком 1). плохая практика проектирования; или 2). внешние сигналы, поступающие в процессор. Синхронизация фактически вводит состояние гонки сигнал-тактовая частота, которое связано с нарушениями «установки» и «удержания».
Лично я не понимаю, как асинхронный проект мог зайти в тупик или в любое другое состояние гонки. Это вполне может быть моим ограничением, но если это не произойдет при вводе данных в процессор, это НИКОГДА не должно быть возможным в хорошо спроектированной логической системе, и даже тогда, так как это может произойти при поступлении сигналов, вы решаете с ними справиться.
(Надеюсь, это поможет).
Все, что сказал, если у вас есть деньги ...