Kurze Antwort: Manager möchten einen einfachen, überprüfbaren Funktionsnachweis, bevor sie sich auf Millionen (oder mehr) Dollar für ein Design festlegen. Aktuelle Tools geben diese Antworten einfach nicht bei asynchronen Designs.
Mikrocomputer und Mikrocontroller verwenden typischerweise ein Taktschema, um die Zeitsteuerung sicherzustellen. Bei allen Prozessecken muss das Timing für alle Spannungs-, Temperatur-, Prozess- usw. Auswirkungen auf die Signalausbreitungsgeschwindigkeit eingehalten werden. Es gibt keine aktuellen logischen Gatter, die sich sofort ändern: Jedes Gatter schaltet abhängig von der Spannung, dem Laufwerk, der Last und der Größe der Geräte, mit denen es hergestellt wird (und natürlich vom Prozessknoten) (Gerätegröße) wird in gemacht und wie schnell DIESER Prozess tatsächlich abläuft - DIESER Durchlauf durch die Fabrik). Um zum "sofortigen" Umschalten zu gelangen, müssten Sie Quantenlogik verwenden, und dies setzt voraus, dass Quantengeräte sofort umschalten können. (Ich bin mir nicht sicher).
Durch die getaktete Logik wird sichergestellt, dass das Timing des gesamten Prozessors mit den erwarteten Spannungs-, Temperatur- und Verarbeitungsvariablen übereinstimmt. Es gibt viele Softwaretools, die bei der Messung dieses Timings helfen. Der Nettoprozess wird als "Timing Closure" bezeichnet. Clocking (und, in meiner Erfahrung ist ) nimmt irgendwo zwischen 1/3 bis 1/2 der Leistung in einem Mikroprozessor verwendet.
Warum also nicht asynchrones Design? Es gibt, wenn überhaupt, nur wenige Timing-Schließwerkzeuge, die diesen Designstil unterstützen. Es gibt, wenn überhaupt, nur wenige automatisierte Orts- und Routentools, die sich mit einem großen asynchronen Entwurf befassen und diesen verwalten können. Wenn nichts anderes festgelegt ist, genehmigen Manager NICHT alles, was keinen einfachen, computergenerierten Funktionsnachweis aufweist.
Der Kommentar, dass asynchrones Design "eine Tonne" Synchronisationssignale erfordert, die "viel mehr Transistoren" erfordern, ignoriert die Kosten für das Leiten und Synchronisieren eines globalen Takts und die Kosten aller Flip-Flops, die das Taktsystem benötigt. Asynchrone Designs sind (oder sollten) kleiner und schneller als ihre getakteten Gegenstücke. (Man nimmt einfach die ONE langsamsten Signalweg und verwendet , dass ein „Ready“ -Signal an den vorhergehenden logisch zu).
Asynchrone Logik ist schneller, weil sie nie auf eine Uhr warten muss, die für einen anderen Block an einer anderen Stelle erweitert werden musste. Dies gilt insbesondere für Register-zu-Logik-zu-Register-Funktionen. Asynchrone Logik weist keine mehrfachen "Einrichtungs-" und "Halte" -Probleme auf, da diese Probleme nur bei den End-Senken-Strukturen (Registern) auftreten, im Gegensatz zu einem Satz von Logik-Pipelines, bei denen Flip-Flops eingesetzt sind, um die logischen Ausbreitungsverzögerungen für die Taktung zu verteilen Grenzen.
Kann es gemacht werden? Sicherlich sogar auf eine Milliarde Transistordesigns. Ist es schwieriger Ja, aber nur, weil es sehr viel komplizierter ist, zu beweisen, dass es über einen gesamten Chip (oder sogar über ein System) funktioniert. Das Timing auf Papier zu bekommen, ist für einen Block oder ein Subsystem relativ direkt. Die Steuerung dieses Timings in einem automatisierten Orts- und Routensystem ist viel schwieriger, da die Werkzeuge NICHT für die Bewältigung des viel größeren potenziellen Satzes von Timing-Einschränkungen eingerichtet sind.
Mikrocontroller verfügen auch über einen potenziell großen Satz anderer Blöcke, die eine Schnittstelle zu (relativ) langsamen externen Signalen bilden, was zu der Komplexität eines Mikroprozessors beiträgt. Das macht das Timing etwas komplizierter, aber nicht viel.
Das Erreichen eines "First-to-Arrival" - "Lock-Out" -Signalmechanismus ist ein Schaltungsentwurfsproblem, und es gibt bekannte Möglichkeiten, damit umzugehen. Die Rennbedingungen sind ein Zeichen von 1). schlechte Designpraxis; oder 2). In den Prozessor eingehende externe Signale. Tatsächlich führt die Taktung eine Signal-gegen-Takt-Rennbedingung ein, die mit Verstößen gegen "Einrichten" und "Halten" zusammenhängt.
Ich persönlich verstehe nicht, wie eine asynchrone Konstruktion in einen Stillstand geraten kann oder in eine andere Racebedingung. Das mag wohl meine Einschränkung sein, aber es sei denn, es passiert bei der Eingabe von Daten in den Prozessor, sollte dies NIEMALS in einem gut konzipierten Logiksystem möglich sein, und selbst dann, da es passieren kann , wenn die Signale eingegeben werden, entwerfen Sie, um damit umzugehen.
(Ich hoffe das hilft).
Alles, was gesagt wurde, wenn Sie das Geld haben ...