# Asynchrone Prozessorarchitektur

Asynchrone Prozessorarchitektur beschreibt eine bisher noch wenig verbreitete Prozessorarchitektur, die ohne zentralen Taktgeber auskommt. Anstatt alle Bauelemente mit einem gemeinsamen Taktsignal zu versorgen, ist der Prozessor aus asynchronen Schaltkreisen aufgebaut, die sich selbst takten. Durch diese Eigenschaften im Gegensatz zur synchronen Prozessorarchitektur können insbesondere ein niedrigerer Leistungsumsatz und höhere Robustheit erreicht werden.

## Funktionsweise

Einzelne asynchrone Schaltkreise als Logikblöcke bilden zusammen einen asynchronen Prozessor. Jeder dieser Schaltkreise besteht aus einer Logikeinheit als Datenpfad und einer Kontroll-Logik. Der Datenpfad ist für die eigentlichen Berechnungen verantwortlich, während die Kontroll-Logik die Übertragung der Daten zwischen den einzelnen Bauelementen steuert. Diese darf dann erfolgen, wenn die Logikeinheit fertig gerechnet hat und die korrekten Daten am Ausgaberegister stehen. Außerdem muss der nächste Logikblock bereit sein, neue Daten im Eingangsregister aufzunehmen.

## Delaymodelle

Solange die Berechnungen einer Logikeinheit noch laufen, sind die Daten am Ausgangsregister nicht konsistent und können damit ungültig sein. Es existieren mehrere Delaymodelle, um die Datenübergabe aus dem Ausgaberegister im richtigen Moment erfolgen zu lassen (Liste unvollständig):

### Bounded delay Modell

Beim bounded delay Modell (englisch "begrenzte Verzögerung") wird für jeden Datenpfad eine Obergrenze für die Zeitverzögerung festgelegt. Diese Verzögerung stellt die maximale Zeit dar, die die betroffene Logikeinheit benötigt, um ihre Berechnungen abzuschließen. Dabei wird immer vom worst case (engl. „schlimmster Fall“) ausgegangen. Das bedeutet, man geht von den schlechtesten zulässigen Werten für Faktoren, die die Berechnungszeit beeinflussen, aus. Solche Faktoren können beispielsweise Temperatur, Spannungsversorgung oder der Aufbau der zu berechnenden Daten sein.
Für jeden Datenpfad steuert eine Kontroll-Logik mittels der für diesen Datenpfad spezifischen maximalen Verzögerungszeit die Datenübergabe an den nächsten Logikblock. Dies erfolgt über ein Verzögerungselement, das die Übergabe, nach Ablauf der spezifischen Verzögerung, auslöst. Dann kann die nachfolgende Komponente mit den Daten weiterarbeiten.
Dieses Modell vereinfacht das Entwerfen von asynchronen Prozessoren, da bestehende Designs von Logikeinheiten aus synchronen Prozessoren übernommen und in das bounded delay Modell eingebettet werden können. Das zeigt auch, dass hier das asynchrone Verhalten nicht die Berechnungen an sich betrifft, sondern nur die Übergabe der Daten von Logikblock zu Logikblock.
Die Datenübertragung zwischen einzelnen bounded delay Elementen regeln meistens micropipelines (engl. „Mikrorohrleitungen“) nach dem Prinzip von Ivan Sutherland. Diese bilden die asynchrone Schnittstelle zwischen den Bauteilen, indem sie einen Datenpfad nach bounded delay Modell benutzen. Die Übertragung wird dann mittels eines Verzögerungselementes ausgelöst. Die Logik zur Übertragung selbst kommt dann ohne Schätzungen über Verzögerungszeiten aus.

### Delay-insensitive circuits

Bei delay-insensitive circuits (englisch "verzögerungsunempfindliche Schaltkreise") wird, anders als beim bounded delay Modell, nicht davon ausgegangen, dass die Ausgangsdaten nach Ablauf einer festen Zeitspanne bereitstehen. Da dennoch ein zuverlässiger Datentransfer notwendig ist, wird das stabile Anliegen der gültigen Daten am Eingang des Empfängers erkannt. Dies wird mit Hilfe einer speziellen Codierung (zum Beispiel Dual-Rail) der Daten und einem Handshaking Protokoll (zum Beispiel 2-Phase Dual-Rail oder 4-Phase Dual-Rail) realisiert. Sobald der Empfänger alle Daten übernommen hat, wird dem Sender dies durch eine Empfangsbestätigung quittiert. Die Implementierung des Handshaking Protokolls und der notwendigen Dual-Rail Encodierung benötigen enorme Mengen an zusätzlichen Transistoren (Faktor 2–10). Dennoch bieten delay-insensitive Schaltkreise Vorteile: Sie haben eine enorme Robustheit gegenüber äußeren Einflüssen, wie Temperaturänderungen, Änderungen der Versorgungsspannung oder Produktionsvariationen, welche so weder von anderen asynchronen Schaltkreisen, noch von synchronen Schaltkreisen erreicht werden können.

### Quasi delay insensitive circuits

Innerhalb des Delay-Insensitiven Delay Modells können keine allgemeinen Schaltkreise entwickelt werden. Es sind lediglich Müller-C Elemente und Inverter zulässig. Es ist weiterhin nicht erlaubt, dass sich die Leitungen teilen. Um allgemeine Schaltkreise zu entwickeln, wurde die zusätzliche Anforderung gestellt, dass Leitungsteilungen isochron sein müssen, d. h. die Signale müssen an allen Enden der Leitung gleichzeitig ankommen.

### Dual-rail Kodierung

| X(0) | X(1) | Bedeutung |
| 0 | 0 | Leerwort |
| 0 | 1 | 0 |
| 1 | 0 | 1 |
| 1 | 1 | Fehler |
Mithilfe der Dual-rail Kodierung und einem entsprechenden Handshaking Protokoll ist es möglich die Vollständigkeit von Daten zu erkennen. Dadurch wird jedes Bit durch zwei Leitungen repräsentiert. Dadurch entstehen 4 mögliche Kombinationen, von denen nur 2 für die eigentlichen Daten benötigt werden. Die anderen beiden Kombinationen werden für ein Null-Wort und einen Fehlerzustand benutzt.

### 4-Phase Dual-Rail Handshaking Protokoll

Dieses Handshaking Protokoll findet bei Delay-Insensitiven, bzw. Quasi-Delay-Insensitiven Schaltkreisen Anwendung. Zusammen mit der Dual-Rail Encodierung kann es sicherstellen, dass nur vollständig berechnete und somit gültige Daten übertragen werden. Wie schon der Name andeutet, werden 4 Phasen für die Übertragung benötigt:
* Der Ausgangszustand ist, dass alle Leitungspaare auf 0 gesetzt sind.
* In der ersten Phase werden die zu sendenden Daten an den Ausgang des Senders angelegt.
* In der zweiten Phase übernimmt der Empfänger die Daten, sofern er „frei“ ist.
* In der dritten Phase signalisiert der Empfänger dem Sender durch eine Empfangsbestätigung, dass er die Daten übernommen hat.
* In der vierten Phase setzt der Sender seinen Ausgang wieder zurück auf 0. Ein neuer Zyklus kann beginnen.

### Current sensing completion detection

Beim current sensing completion detection (engl. „Feststellung der Fertigstellung über Stromaufnahmemessung“) (kurz: CSCD) Verfahren wird das Ende der Berechnungen über eine Messung der Stromaufnahme der betroffenen Logikeinheit festgestellt. Dies wird ermöglicht durch die Tatsache, dass die Stromaufnahme beim Umschalten der Gatter ansteigt und nach dem Schaltvorgang wieder auf den Ruhepegel abfällt.
Problematisch ist hierbei jedoch, dass eine zuverlässige Messung nicht immer möglich ist. Wenn wenige Bits sich ändern, kann dies zu einer geringen Anzahl Schaltvorgänge führen, wodurch die Stromaufnahme nur geringfügige Änderungen zeigt. Für diesen Fall muss noch ein minimum delay generator (engl. „Mindestverzögerungserzeuger“) eingebaut werden, der analog zum bounded delay Modell die Übertragung auslöst. Dieser wird zu Beginn der Berechnungen aktiviert und löst die Übertragung nach der längsten zu erwartenden Schaltzeit aus.
Damit ist eine Struktur gegeben, die ihr Timing selbst bestimmen kann, sofern die Messung der Stromaufnahme erfolgreich ist. Nachteilig ist an dieser Technik jedoch der erhöhte Bauteileaufwand, da für die Strommessung auch analoge Bauteile eingebaut werden müssen.

## Praktische Durchsetzung

Asynchrone Prozessoren sind ein Forschungsgebiet und einer stärkeren kommerziellen Verbreitung stehen vor allem der Mangel an Erfahrung und Entwicklungs-Tools entgegen. Außerdem ist für viele praktische Problemstellungen die Integration in eine Umgebung mit synchroner Technik zu leisten.

### Asynchrone Prozessoren

Exemplarisch seien hier einige Vertreter genannt:
| Jahr | Prozessor | Hersteller | Beschreibung |
| 1969 | MU5 | University of Manchester/ICL | ein asynchroner Mainframe an der Universität Manchester |
| 1990 | AMULET1 | University of Manchester/ARM | ein asynchroner ARM-Prozessor an der Universität Manchester |
| 1997 | n.n. | Intel | Prototypen eines pentiumkompatiblen Chips mit asynchronem Design. Nie zur Marktreife gebracht |
| 1998 | 80C51 | Philips | zum Beispiel im PCA5007 |
| 2005 | ACT11 | Epson | erster flexibler Prozessor für die Verwendung in E-Paper |
| 2006 | ARM996HS | ARM | erster kommerzieller ungetakteter Prozessor |