Asynchrone und synchrone Datenübertragung
Synchronisation
Die
Kommunikation innerhalb eines Bussystems findet zwischen zwei Geräten
statt, die in der Regel als Primary und Secondary bezeichnet werden. Das
Gerät welches die Kommunikation anstößt ist der Primary (Primaries
können einen Bus anfordern; dies ist einem Secondary nicht möglich).
Der Kommunikationsanstoß entspricht dem Start der Synchronisation.
Ein weiterer Grund für eine Synchronisation ist, dass die
Geräte unterschiedlich schnell sein können.
Asynchrone Datenübertragung
Beispiel einer Lesetransaktion von Secondary (z.B. Speicher) zu Primary:

Signal-Zeit-Diagramm einer asynchronen Datenübertragung
-
Der Primary legt eine Leseanforderung auf den Bus (Read Request = engl. Leseanforderung). Gleichzeitig legt der Primary eine Adresse auf den Bus (Data).
-
Nach einer bestimmten Zeit (1) legt der Secondary ein Erkennungssignal auf den Bus (Acknowledge = engl. bestätigen). Dies führt dazu, dass der Primary eine Zeit danach seine Adresse und Leseanforderung (2) zurücknimmt.
-
Nach Zurücknahme der Primary-Signale (2) nimmt der Secondary (3) seine Erkennung (Ack) ebenfalls zurück.
-
Nach einer bestimmten Zeit legt der Secondary die gewünschten Daten und ein Data Ready (4) auf den Bus.
-
In Abhängigkeit von DataRdy legt der Primary ein Ack (5), zum Zeichen dafür, dass die Daten übernommen wurden, auf den Bus.
-
Danach werden die Daten und das DataRdy vom Bus genommen (6).
-
Der Primary nimmt das angelegte Ack zurück (7).
Damit ist das
Handshake-Verfahren beendet.
Synchrone Datenübertragung
Bei dieser Art der Synchronisation gibt es kein Handshaking der beteiligten Geräte, was einen Geschwindigkeitsvorteil mit sich bringt:
Beispiel einer Lesetransaktion von Secondary (z.B. Speicher) zu Primary:

Signal-Zeit-Diagramm einer synchronen Datenübertragung
Der für beide
gemeinsame Takt regelt die Kommunikation. Adresse und Datum werden
mit der positiven Taktflanke angelegt und z.B. mit der negativen als
gültig erklärt; deshalb aktive Taktflanke.
Bei einem
synchronen Bus unterliegt die Übertragung einem festen Zeitraster.
Z.B. wird ein Transfer vom Primary durch ein Startsignal ausgelöst,
das dem Secondary den Beginn des Buszyklus anzeigt. Danach gibt es feste,
"durch den Bustakt vorgegebene Zeitpunkte für die Gültigkeit
des vom Sender (Master oder Slave) ausgegebenen Datums sowie für die
Übernahme des Datums durch den Empfänger (Slave oder Master), d.h.
für den Abschluss des Buszyklus."1
Nachteil
dieser Steuerung ist, dass die Bustaktfrequenz an den langsamsten
Secondary angepasst werden muss, um dessen Zeitbedarf für die
Datenbereitstellung oder -übernahme gerecht zu werden. Abhilfe
schafft ein vom adressierten Secondary erzeugtes /READY-Signal, dass
ebenfalls mit dem Bustakt synchronisiert ist. "Langsamere Slaves
halten dieses Signal über den kürzest möglichen Buszyklus hinaus
inaktiv, wodurch der Master den Buszyklus um einen oder mehrere
Bustaktschritte (Wartezyklen, Wait Cycles) verlängert."1
Ein Buszyklus ist erst dann durch einen Primary abgeschlossen, wenn
der Secondary seine Bereitschaft durch das Aktivieren von READY
signalisiert.
Synchrone Busse weisen die Intel- sowie die
meisten anderen CISC-Prozessoren diverser Hersteller auf. Gleiches
gilt für die meisten RISC-Prozessoren