Systembus
Mit dem Begriff Systembus fasst man die verschiedenen Datenschienen (Busse) zusammen, über die in einem Mikrorechner die CPU mit ihrer Umgebung kommuniziert. In der Regel werden drei solcher Busse unterschieden: der Datenbus, der Adressbus und der Steuerbus.
Systembus-Typen
Man unterscheidet drei unterschiedliche Systembus-Typen, die sich in ihrem Zeitverhalten unterscheiden. Die Spezifikation des Zeitverhaltens ist herstellerabhängig und wird auch als Systembus-Protokoll bezeichnet. Die beiden Haupttypen bilden synchrone und asynchrone Systembusse.
- Erstere (synchron) sind getaktet, so dass die Übernahme von Daten (in eine der beiden Richtungen) jeweils nur mit einer Taktflanke erfolgen kann.
- Der zweite Bustyp (asynchron) ist ungetaktet und verwendet in der Regel ein Handshake-Protokoll, um die Übernahme von Daten zu regeln.
- Dazwischen gibt es den dritten Typ, welcher eine Zwischenlösung darstellt: Zwar wird der Bus getaktet, doch die zusätzliche Verwendung von Steuerleitungen ermöglicht zusätzliche Wartezyklen, um auch langsame Komponenten an den Bus anschließen zu können. Diesen Bustyp bezeichnet man daher als semi-synchron. Die meisten modernen Mikroprozessoren verwenden einen semi-synchronen Systembus.
Zugriff auf den Systembus
Da viele verschiedene Komponenten auf den Systembus zugreifen möchten, muss dieser Zugriff gesteuert werden. Man spricht in diesem Zusammenhang von Bus Arbitration Control. Diese Kontrolle wird in der Regel von einem speziellen Baustein (z. B. einem Arbiter oder Koprozessor) geleistet. Zur Regelung dienen die drei Signale BREQ (Bus Request), BGRT (Bus Grant) und BGA (Bus Grant Acknowledge). Dieses Verfahren bezeichnet man auch als 3-Leitungshandshake.
Das Verfahren läuft grundsätzlich wie folgt ab. Der Prozessor habe gerade die Kontrolle über den Systembus inne. Beispielsweise könnte er eine Adresse auf dem Adressbus angelegt haben und nun gerade die so adressierten Daten über den Datenbus einlesen. Zur gleichen Zeit meldet eine externe Komponente dem Prozessor mittels des BREQ-Signals, dass sie Zugriff auf den Systembus benötigt. Sobald der Prozessor mit dem Einlesen der Daten über den Datenbus fertig ist, bearbeitet er das BREQ-Signal und gewährt der Komponente den Zugriff mittels BGRT. Die Komponente antwortet (unter Umständen optional) mit BGA auf die Erlaubnis und teilt so dem Prozessor und anderen Komponenten mit, dass sie die Kontrolle über den Bus übernommen hat. Da externe Komponenten in der Regel mit einer höheren Priorität auf den Bus zugreifen dürfen als der Prozessor selbst, muss der Prozessor bei anstehenden Requests die Kontrolle meist abgeben.
Was aber geschieht, wenn mehrere BREQ-Signale gleichzeitig vorliegen? Um derartige Situationen zu handhaben, setzt man meist einen Arbiter-Baustein ein, der die Anfragen bearbeitet, nach Prioritäten sortiert und dann sequentiell an den Prozessor weiterleitet. Die externen Komponenten wenden sich dann nicht mehr direkt mittels BREQ an den Prozessor, sondern verfügen über Steuerleitungen zum Arbiter, der alles Weitere regelt.
Systembusschnittstelle
Die Schnittstelle zwischen Prozessor und Systembus bezeichnet man als Systembusschnittstelle. Sie enthält in der Regel Puffer-Register für Daten und Adressen, die u. U. als FIFO organisiert sein können. Letzteres ist insbesondere dann der Fall, wenn der Prozessor anders getaktet ist als der Systembus, um eine effizientere Pufferung zu ermöglichen.
Zur Ankopplung an den Bus werden sogenannte Tristate-Gatter verwendet. Diese sind in der Lage, am Ausgang zusätzlich zu den Pegeln Low und High einen hochohmigen Sonderzustand einzunehmen, um den Prozessor vom Systembus abzukoppeln, wenn andere Geräte auf ihn zugreifen sollen.