Krótka odpowiedź: menedżerowie chcą prostej, testowalnej, DOWODZONEJ funkcji, zanim zaangażują się w projekt w postaci milionów (lub więcej) dolarów. Obecne narzędzia, po prostu nie udzielaj odpowiedzi asynchronicznych.
Mikrokomputery i mikrokontrolery zwykle wykorzystują schemat taktowania w celu zapewnienia kontroli czasu. Wszystkie rogi procesu muszą utrzymywać synchronizację we wszystkich wpływach napięcia, temperatury, procesu itp. Na prędkości propagacji sygnału. Nie ma aktualnych bramek logicznych, które zmieniają się natychmiast: każda bramka przełącza się w zależności od napięcia, które jest dostarczane, napędu, jaki pobiera, obciążenia, które napędza oraz wielkości urządzeń, które są do niego użyte (i oczywiście węzeł procesu (rozmiar urządzenia), w którym jest wykonany, i jak szybko ten proces faktycznie wykonuje --- TO przechodzi przez fab). Aby przejść do „natychmiastowego” przełączania, musisz użyć logiki kwantowej, a to zakłada, że urządzenia kwantowe mogą się natychmiast przełączać; (Nie jestem pewien).
Logika taktowania sprawia, że DOWODZENIE, że taktowanie w całym procesorze działa w oparciu o oczekiwane zmienne napięcia, temperatury i przetwarzania. Dostępnych jest wiele narzędzi programowych, które pomagają mierzyć ten czas, a proces netto nazywa się „zamykaniem czasu”. Taktowanie może (i z mojego doświadczenia wynika ) , że zajmuje około 1/3 do 1/2 mocy zużywanej przez mikroprocesor.
Dlaczego więc nie projekt asynchroniczny? Istnieje kilka, jeśli w ogóle, narzędzi do zamykania synchronizacji, które wspierają ten styl projektowania. Istnieje niewiele, jeśli w ogóle, zautomatyzowanych narzędzi do wyznaczania miejsc i tras, które mogą poradzić sobie z dużym projektem asynchronicznym i nim zarządzać. Jeśli nic więcej, menedżerowie NIE zatwierdzają niczego, co nie ma prostej, wygenerowanej komputerowo, DOWÓD funkcjonalności.
Komentarz, że projektowanie asynchroniczne wymaga „tony” sygnałów synchronizujących, które wymagały „znacznie większej liczby tranzystorów”, ignoruje koszty routingu i synchronizacji zegara globalnego oraz koszt wszystkich przerzutników wymaganych przez system taktowania. Projekty asynchroniczne są (lub powinny być) mniejsze i szybsze niż ich taktowane odpowiedniki. (Jeden po prostu bierze JEDNĄ najwolniejszą ścieżkę sygnału i wykorzystuje ją do sprzężenia zwrotnego sygnału „gotowości” z poprzednią logiką).
Logika asynchroniczna jest szybsza, ponieważ nigdy nie musi czekać na zegar, który musiał zostać przedłużony o kolejny blok w innym miejscu. Jest to szczególnie prawdziwe w przypadku funkcji rejestracji do logiki do rejestracji. Logika asynchroniczna nie ma wielu problemów z „konfiguracją” i „wstrzymaniem”, ponieważ takie problemy występują tylko w końcowych strukturach ujścia (rejestrach), w przeciwieństwie do zestawów logicznych potokowych z przerzutnikami rozmieszczonymi w przestrzeni, opóźnienia propagacji logicznej opóźniają się w taktowaniu Granic.
Czy da się to zrobić? Z pewnością nawet w przypadku miliarda tranzystorów. Czy to trudniejsze? Tak, ale tylko dlatego, że DOWODZENIE, że działa na całym układzie (lub nawet systemie), jest znacznie bardziej zaangażowane. Ustalenie czasu na papierze jest rozsądnie bezpośrednie dla dowolnego bloku lub podsystemu. Kontrolowanie taktowania w automatycznym systemie miejsc i tras jest znacznie trudniejsze, ponieważ oprzyrządowanie NIE jest skonfigurowane do obsługi znacznie większego potencjalnego zestawu ograniczeń czasowych.
Mikrokontrolery mają również potencjalnie duży zestaw innych bloków, które łączą się z (względnie) wolnymi sygnałami zewnętrznymi, dodając do całej złożoności mikroprocesora. To sprawia, że czas jest trochę bardziej zaangażowany, ale niewiele.
Osiągnięcie mechanizmu „blokowania” jako „pierwszy przybywający” jest problemem związanym z projektowaniem obwodu i istnieją znane sposoby radzenia sobie z tym. Warunki wyścigu są oznaką 1). zła praktyka projektowania; lub 2). sygnały zewnętrzne przychodzące do procesora. W rzeczywistości taktowanie wprowadza warunek wyścigu sygnał-zegar, który jest związany z naruszeniem ustawień i wstrzymania.
Ja osobiście nie rozumiem, w jaki sposób projekt asynchroniczny może utknąć w martwym punkcie lub jakikolwiek inny stan wyścigu. To może być moje ograniczenie, ale chyba że dzieje się to przy wejściu danych do procesora, NIGDY nie powinno być to możliwe w dobrze zaprojektowanym systemie logicznym, a nawet wtedy, ponieważ może się to zdarzyć w momencie wejścia sygnałów, planujesz sobie z tym poradzić.
(Mam nadzieję, że to pomoże).
Wszystko to powiedziało, jeśli masz pieniądze ...