Geschichte der Rechnerarchitektur

Werbung
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Fachhochschule Rhein-Sieg
Fachbereich Angewandte Informatik
Grundlagen
Rechnerstruktur und -organisation
Vorlesungsunterlage
2-semestrige 2-stündige Vorlesung
G. Wagner
GMD, 1998
1
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Geschichte der Rechnerarchitektur ..............................................................
Definitionen ........................................................................................................................................ 9
Architekturprinzipien ..................................................................................................................... 12
Die von Neumann Maschine oder der Princeton Computer ......................................................................... 18
Komponenten eines Rechners ................................................................................................................... 20
Schaltnetze ............................................................................................................................................ 22
Schaltalgebra ..................................................................................................................................... 22
Codes ................................................................................................................................................ 36
Coder, Decoder ................................................................................................................................. 38
Einfache Schaltnetze ......................................................................................................................... 41
Schaltwerke ........................................................................................................................................... 43
RS- Flipflop ....................................................................................................................................... 45
JK-Flipflop ........................................................................................................................................ 47
JK - Master – Slave Flipflop ............................................................................................................. 48
Register: ............................................................................................................................................ 49
Automaten ............................................................................................................................................. 51
Das Rechenwerk .................................................................................................................................... 55
Rechner – Arithmetik ........................................................................................................................ 55
Polyadische Zahlensysteme: .............................................................................................................. 56
Nichtpolyadische Zahlensysteme ..................................................................................................... 57
Arithmetisch logische Einheit (ALU) ................................................................................................ 61
Eine einfache ALU ............................................................................................................................ 62
Eine mögliche Zentraleinheit: ........................................................................................................... 65
Hardwarebeschreibungssprachen: ......................................................................................................... 67
Kompatibilität der Operanden ............................................................................................................... 70
Normierung und Runden: .................................................................................................................. 70
Abschneiden .................................................................................................................................. 71
Normales Runden .......................................................................................................................... 71
Jamming ........................................................................................................................................ 71
R* - Runden................................................................................................................................... 71
Struktur eines RSA: ........................................................................................................................... 71
Multiplikation:................................................................................................................................... 79
Division ......................................................................................................................................... 80
Beschleunigungen: ................................................................................................................................ 80
Das Steuerwerk ..................................................................................................................................... 82
Allgemeines ....................................................................................................................................... 82
Mikroprogramme .............................................................................................................................. 85
Semaphoren: ...................................................................................................................................... 90
Die Befehlsabarbeitung (Befehlszyklus) ................................................................................................... 92
Pipelining .............................................................................................................................................. 92
Hazards.............................................................................................................................................. 94
Struktur-Hazards ........................................................................................................................... 96
Daten - Hazards ............................................................................................................................. 98
Bypassing: ................................................................................................................................. 98
Steuer-Hazards ............................................................................................................................ 107
Verzweigeverhalten in Programmen........................................................................................ 109
Reduzierung der Pipeline-Verzweigungsverluste .................................................................... 109
Adressierungsmodi .............................................................................................................................. 114
Registeradressierung: ...................................................................................................................... 114
Speicheradressierung: ...................................................................................................................... 114
RISC Prozessoren (Reduced Instruction Set Computer) ..................................................................... 125
Das Speicherwerk ................................................................................................................................ 126
Speicherverwaltung ......................................................................................................................... 126
Lineare Speicherverwaltung ........................................................................................................ 127
Paging............................................................................................. Error! Bookmark not defined.
2
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Virtuelle Adressierung .................................................................................................................... 129
Speicherhierarchien ............................................................................................................................. 135
E/A-Werk und Kommunikation .......................................................................................................... 139
Direkte Kopplung ............................................................................................................................ 139
Kanalkopplung ................................................................................................................................ 139
Speicherkopplung ............................................................................................................................ 139
Bussysteme ...................................................................................................................................... 140
Zentrale Bussteuerung ..................................................................................................................... 141
Dezentrale Steuerung ...................................................................................................................... 144
Protokolle ........................................................................................................................................ 146
Leistungsbewertung ............................................................................................................................. 150
Beobachtende Leistungsbewertung (Monitoring) ................................................................................ 157
Parallele Rechnerstrukturen................................................................................................................. 159
SIMD Rechner ................................................................................................................................ 159
MIMD Rechner .............................................................................................................................. 159
Vektorrechner .............................................................................................................................. 161
SIMD Rechner ................................................................................................................................ 162
Verbindungsnetzwerke (VN): ...................................................................................................... 166
Verbindungsaufbau: .................................................................................................................... 168
Arbeitsweise: ............................................................................................................................... 168
Topologie: ................................................................................................................................... 168
Statische Verbindungsnetzwerke : ................................................................................................... 168
N2............................................................................................................................ 169
N-1 .......................................................................................................................... 170
Topologien statischer VN........................................................................................................... 170
Dynamische Verbindungsnetzwerke: .......................................................................................... 171
Abb. Schaltfunktionen des shuffle Netzwerkes ...................................................... 174
3
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Architektur und Organisation von Rechensystemen:
(Vorlesungsvorlage)
Geschichte der Rechnerarchitektur
(aus: Weizenbaum, Haefner: Sind Computer die besseren Menschen? Ein
Streitgespräch, Piper Verlag, 1992)
Die Idee, daß alle Naturprozesse und so auch das menschliche Denken ein
physikalischer Prozeß und demnach nachzubilden sein müßten, ist so alt wie die mit
der Philosophie der Antike beginnende abendländische Kultur. Sie wurde mit dem
Beginn der aufgeklärten Neuzeit konkret: die Natur - eine Maschine?
Descartes schnitt sie etwa in seiner „Universalsprache der Logik“ an, und auch der
deutsche Philosoph Gottfried Wilhelm Leibniz warf sie auf. Seine Überlegungen
kreisten um das neue System einer binären, also zweiwertigen Logik, mit der sich
sämtliche Operationen der am Dezimalsystem orientierten, allgemeinen Mathematik
nachvollziehen lassen sollten. Die Gedankenspielerei von Leibniz brachte aber auch
eine Rechenmaschine hervor, die neben Blaise Pascals Addiermaschine oder der
„analytical engine“ des Briten Charles Babbage als ein mechanischer Vorläufer des
elektronischen Rechners gelten kann.
Babbage hatte seine Maschine in den 30er Jahren des vorigen Jahrhunderts zu dem
Zweck konzipiert, die Versicherungsmathematik zur Berechnung des Risikos zu
vereinfachen. Zusammen mit seiner Assistentin Lady Augusta Ada, der Tochter Lord
Byrons, kam er auf die Idee, einer Maschine die Daten für die Berechnungen erstmals in der Geschichte der angewandten Mathematik - auf Lochkarten
einzuspeisen. Diese Art der Programmierung hatte er bei den neuartigen
mechanischen Webstühlen abgeschaut, die in England entscheidend zum Ausbruch
der industriellen Revolution beigetragen hatten. Die Lochkartentechnik sollte in der
Folgezeit für die Statistik, die Buchhaltung und Unternehmensplanung, aber auch zur
Planung der Kriegswirtschaft und vor allem bei der Durchsetzung des
nationalsozialistischen Überwachungsapparates eine wichtige Rolle spielen.
Kaum 10 Jahre nach Babbage und Lady Ada, in der Mitte des 19. Jahrhunderts,
entwickelte ein Landsmann der beiden, George Boole, mit der formalen Logikjenes
System, nach dem heute alle Computer arbeiten. In seiner Arbeit „Die Gesetze des
Denkens“ wollte Boole über ein reines Rechensystem hinaus eine „Mathematik des
menschlichen Verstandes“ zeichnen, „die Grundgesetze jener Geistesvorgänge
untersuchen, durch die Vernunftschlüsse gezogen werden: ihnen in der
symbolischen Sprache eines Kalküls Ausdruck verleihen“ (Zit. nach: Hanson, 1984,
S. 59).
Boole erkannte, daß man mit einer einfachen Kombinationslogik nach Art der von
Leibniz entworfenen binären Algebra nicht nur Zahlen addieren, sondern, bei
entsprechender Komplexität einer Datenverarbeitungsmaschine, auch Logik
ausdrücken kann.
In der formalen Logik der Boolschen Algebra werden Aussagen und deren
Verknüpfungen mit wahr oder unwahr bewertet, und diese Bewertung mit plus oder
minus, Eins oder Null bezeichnet. Die Entscheidung für einen dieser beiden Werte
4
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
gilt als Information; in der Computersprache wird diese Information bit (binary digit)
genannt; sie bezeichnet bis heute die Speicherkapazität der Computer.
So kann jede der Aussagen “heute ist Samstag“ (a), „es ist Markt“ (b), „ich kaufe ein“
© jeweils nur wahr oder unwahr sein. Das gilt auch für das Ergebnis einer
Verknüpfung zweier oder mehrerer solcher Aussagen. Die zusammengesetzte
Aussage a und b ist nur in dem Fall wahr, wenn sowohl Samstag als auch Markt ist,
wenn a und b also zutreffen. An diese neue „wahre“ Aussage läßt sich nun als dritte
Aussage „ich kaufe ein“ hängen, und dann wieder entscheiden, ob dies wahr oder
unwahr ist.
Die Verknüpfung „oder“ macht die Gesamtaussage dann wahr, wenn mindestens
eine der Teilaussagen stimmt, also wenn Samstag ist oder Markt - kaufe ich ein.
Das „nicht“ schließlich kehrt den Wahrheitswert einer Aussage um, aus wahr wird
unwahr, aus Plus Minus.
Für die logische Verknüpfung jeder Aussage benutzte Boole die Operatoren „und“ /
„oder“ /“nicht“ (ähnlich wie die in der Mathematik gängigen Operatoren +/-/*/:).
Ausgangspunkt waren also bei Boole Aussagen, die nur zwei Möglichkeiten
offenließen: wahr oder unwahr respektive Eins oder Null und Plus oder Minus. Mit
dieser Zweiwertigkeit läßt sich alles mögliche kodieren und als Information
darstellen, zum Beispiel die in Buchstaben-Sequenzen aufgelösten Wörter und
Sätze. Nach Auffassung der gläubigen Sendboten der zweiwertigen Logik müßte
sich gar das gesamte Universum in den binären Code zwingen lassen - auch bislang
noch rätselhafte Facetten der menschlichen Geistesleistungen: Geist, Humor,
Intuition etwa.
Bei der Anwendung dieser Logik sind für die einzelnen Operationen ungeheuer
lange Ketten von zweiwertigen Befehlen notwendig; die Computer haben sich trotz
ihrer inzwischen ungeheuren Leistungsfähigkeit nicht von dieser Logik entfernt: Die
zu ihrer Steuerung entwickelten Programme gehen auf die boolsche Mathematik
zurück. Denn für die Computerentwicklung war diese zweiwertige „mathematische
Logik“ deshalb bahnbrechend, weil die zwei Aussagewerte auch Plus oder Minus
sein können wie in der Elektrizität, wo digitale Schaltungen gesteuert werden: Je
nachdem, ob Strom fließt oder kein Strom fließt, sind sie geöffnet oder geschlossen.
Der erste Konstrukteur, der die Eigenschaften der Elektronik zur Umsetzung der
zweiwertigen Logik nutzte, war der Deutsche Konrad Zuse. Dem Tüftler war bei den
stupiden Berechnungen während seines Bauingenieurstudiums Ende der 20er Jahre
der Gedanke an eine Rechenmaschine gekommen. 1936 konnte der 26jährige an
die Verwirklichung seines Traumes gehen und eine Maschine bauen - um, so eine
Eintragung in sein Tagebuch im Jahre 1937, „sämtliche Denkaufgaben zu lösen, die
von Mechanismen erfaßbar sind“ (Zuse 1970, S. 68). In der Berliner Wohnung seiner
Eltern hatte er mit Hilfe von Studienkameraden bald seine - aus Kosten- und
Platzgründen noch ganz mechanische - Z1 gebaut. In einer Weiterentwicklung, der
1940 fertiggestellten Z2, benutzte er bereits das Relais, mechanisch funktionierende
Elektroschaltungen also, um die digitalen Rechenoperationen auf seiner Maschine
zu beschleunigen. 1941 stellte er schließlich die nur noch mit elektrischen Relais
arbeitende Z3 fertig. Auch soll er die Verwendung von Vakuumröhren erwogen
haben, dem späteren Herzstück der ersten Generation von Computern, doch
schienen sie ihm zu unzuverlässig.
Die Nazis erkannten die Bedeutung des digitalen, programmgesteuerten
Rechenautomaten nicht, obwohl das Militär, namentlich die Artillerie, die Berechnung
5
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
ballistischer Kurven für großkalibrige Geschosse mit sehr großer Reichweite nicht
effizient zu lösen vermochte. Und der Staatsbürokratie genügte zur Verwaltung ihres
Apparats die in den 20er Jahren weit verbreitete mechanische Lochkartentechnik.
Der erste Röhrenrechner entstand, angestoßen durch die Erfordernisse des Krieges,
nach 1940 auf dem Herrensitz Blechley bei London. Dort fand sich eine bunte
Truppe von Wissenschaftlern zu dem Projekt Ultra zusammen: Kryptographen,
Literaturprofessoren, Mathematiker und Fachleute aus allen möglichen Disziplinen
versuchten hier, die über die deutsche Chiffriermaschine Enigma laufenden
Nachrichten zu entschlüsseln. Die Maschine, von der ein Exemplar aus Polen
geschmuggelt worden war, galt als absolut sicher. Um alle
Verschlüsselungsoptionen von Enigma durchzurechnen, schätzte der
Mitkonstrukteur Arthus Scherlius, hätte ein einzelner Mensch 42.000 Jahre rund um
die Uhr rechnen müssen.
Unter dem Team in Blechley befand sich auch der junge Mathematiker Alan Turing.
Er hatte 1936 in seiner Abhandlung „On Computable Numbers with an Application to
the Entscheidungsproblem“ eine imaginäre Maschine entworfen, die mit Symbolen
arbeiten sollte, die auf Papierstreifen gestanzt waren. Das Projekt Ultra wurde zu
einer erfolgreichen, wenn auch auf das Dechiffieren eingeschränkten Spielwiese für
seine neuartige Idee. Mit Hilfe eines noch primitiven Relaissystems mit dem
Codenamen Bombe ließen sich Funksprüche analysieren und teilweise auch
entschlüsseln. 1943 stellte das Team dann den Rechner Colossus fertig. Nach
Turings Konzept gebaut, wurde das Ungetüm mit seinen 1500 Röhren der erste
funktionsfähige Röhrencomputer der Welt. In den letzten beiden Kriegsjahren
knackten die Engländer mit Hilfe dieses Spezialcomputers deutsche Enigma-Codes.
Der erste amerikanische Computer war ein gewaltiges, mit 17.000 Elektronenröhren
bestücktes und 30 Tonnen schweres Monstrum namens Eniac (Electronic Numerical
Integrator and Computer) des Mathematikers John Mauchley und des Elektronikers
J.P. Eckert. Sie konnten 1943 das Pentagon davon überzeugen, einen
Röhrenrechner zu bauen, der die ballistischen Berechnungen weit schneller
durchführen könnte als die schwerfälligen semimechanischen Relaisrechner, wie der
1944 fertiggestellte Mark I. Doch Eniac wurde quasi ein verspätetes Abfallprodukt
des Zweiten Weltkriegs: Nach einigen Probeläufen ging er erst 1946 an der
Universität von Pennsylvania in Betrieb.
Jene Maschine konnte die bahnbrechende, 1945 von dem Mathematiker John von
Neumann entwickelte Speicherprogrammierung noch nicht nutzen. Diese Methode
bot erstmals die Möglichkeit, komplizierte Rechenprozesse nach logischen Regeln
und Befehlen abwickeln zu lassen eine enorme Aufwertung für die nun Software
genannten Prozeßabläufe in den kompliziert verkabelten Rechenanlagen, der
Hardware. Bei Eniac hatte noch eine Truppe von Mathematikerinnen, die „EniacGirls“, wie Telephonistinnen durch Stöpseln die verschiedenen Verbindungen
herstellen müssen.
In den Von - Neumann - Maschinen - 1949 wurde mit Edsac in Großbritannien die
erste von ihnen gebaut - war nun auch die Architektur der Rechner festgelegt und
nicht mehr von verschiedenen Steckverbindungen abhängig. In den neuartigen
Rechnern arbeitete ein Rechenwerk und ein Steuerwerk - die Grundstruktur des
sogenannten Prozessors -, mit einem internen (heute: Arbeitsspeicher) und einem
externen Speicher. Mit dieser Struktur waren die Rechner auf eine sogenannte
6
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
serielle Arbeitsweise festgelegt, bei der die Aufgaben nacheinander zu je einer
anderen zeit erledigt werden (dieses Konzept wird erst derzeit mit „Parallelrechnern“
genannten Konstruktionen aufgebrochen). Durch die serielle Abwicklung wirken die
Programme wie festgelegte, gleichbleibende Prozeduren, die der Rechner bei seiner
Arbeit jedesmal abfragen und zu Hilfe nehmen kann. Sie verkürzen die Rechenzeit
erheblich.
Die Amerikaner nutzten Eniac und die folgenden Rechner bei der Fortentwicklung
der Atombombe.; als dann der Krieg gewonnen war, hatte das Pentagon das große
Interesse an der aufwendigen Computerei verloren. Die zivile Entwicklung ging nur
schleppend weiter; immerhin, 1951 wurden beim neuen Rechner Univac I die
Lochkarten von Magnetbändern abgelöst. Doch erst der Kalte Krieg, vor allem aber
der Sputnik - Schock weckte das Staatsinteresse Mitte der 50er Jahre erneut. 1958
gründete Präsident Eisenhower, jener eiserne Staatsmann, der am Ende seiner
Amtszeit unvermittelt vor der macht der Rüstungsindustrie warnte, die „Advanced
Research Projects Agency“ (Arpa), die Anfang der 70er Jahre ihren Namen in
„Defense Advanced Research Projects Agency“ (Darpa) wandelte. Sie sollte die
militärische Grundlagenforschung koordinieren und die Mittel bereitstellen. Die
Erforschung der Computer-Möglichkeiten machte nun wieder rasant Fortschritte;
man entwickelte die Idee der Künstlichen Intelligenz und neue Möglichkeiten der
militärisch reizvollen Miniaturisierung der Rechner.
Als sich 1970 das politische Klima langsam wandelte, und drei liberale Abgeordnete
im US-Senat sich mit dem Begehren durchsetzten, die militärische Forschung zu
reglementieren, hatte sich die Computerwelt radikal verändert: 1968 war der junge
Ingenieur Gilbert Hyatt - und offenbar nicht, wie sich nach 20jährigem Rechtsstreit
herausstellte, der Stanford-Ingenieur Ted Hoff vom damals neu gegründeten
Elektronik Konzern Intel - auf die Idee gekommen, hunderte von miniaturisierten
Transistoren auf einer nur wenige Quadratmillimeter großen Silizium-Leiterplatte
(Chip) zu vereinen. Ob nun Gilbert Hyatt oder Ted Hoff das Erstgeburtsrecht besitzt:
die kommerzielle erfolgreiche Verwertung dieser Idee präsentierte Intel Ende 1970
mit seinem Mikroprozessor. Tatsächlich konnte dieser eine Chip über elektrische
Impulse immer wieder andere Anweisungen entgegennehmen und darum wie ein
eigenständiger Computer funktionieren.
....... Der Chip wurde nun in alle möglichen Geräte eingebaut, in Armbanduhren,
Kaffemaschinen und auch Autos. Eine weitere, viel spezifischere Verwendung
drängte sich auf.
Bald nachdem die Intel-Chips auf dem Markt waren, kamen Informatik Studenten auf
die Idee, einige der an sich für die Großrechner produzierten Siliziumplättchen
zusammenzustecken und sie mit Befehlsketten zu füttern, die in einfachen
Programmiersprachen gehalten waren. Hierfür eignete sich die 1965 entworfenen,
relativ einfache Sprache Basic (Beginners All-Purpose Symbolic Instruction Code),
die konzipiert worden war, um Lernwilligen den Zugang zum Computer zu
erleichtern. .........
Durchschlagenden Erfolg hatte schließlich Ende der 70er Jahre der HarvardStudent Bill Gates als er zusammen mit seinem Freund Paul Allen in wochenlanger
Arbeit die Basic-Sprache neu konzipierte. Das Produkt vermarkteten sie über ihre
neu gegründete Firma Microsoft; fünf Jahre später war sie zur weltweit größten
Software Firma aufgestiegen.......
7
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Mit der Entwicklung in der Mikroelektronik hat auch die Entwicklung von
Rechensystemen einen stürmischen Verlauf genommen. Während die Leistungen
der Chips und Bauelemente erheblich gestiegen sind, gaben die Preise nach. Dies
führte zu einem unvergleichlich hohen Umsatz bei rasant steigendem Wettbewerb.
8
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Definitionen
Was verstehen wir unter Rechnerarchitektur ?
Wenn wir von Rechnerarchitektur sprechen, betrachten wir die Hardware eines
Rechners und das Zusammenwirken ihrer Komponenten mit Hilfe von Firmware
und Software. Dabei beziehen sich die Überlegungen zunehmend auf Systeme, in
die auch mehrere leistungsfähige Prozessoren integriert sind.
Wir definieren also moderne
Rechnerarchitektur als die Synthese von Struktur, Organisation und den
zugehörigen Algorithmen.
Die Kommunikation zwischen den Moduln eines Rechnersystems ist sicherlich
Bestandteil des Systems.
Die Hauptaufgabe eines Rechensystems ist nicht das Rechnen, sondern das
Sammeln, Speichern, Verarbeiten und die Präsentation von Daten.
Datenbanksysteme sind ein passendes Beispiel: hier wird nicht in erster Linie
gerechnet, sondern geeignet gesammelt, sortiert und die Ergebnisse für den
Benutzer aufbereitet. Die oben angegebenen Algorithmen arbeiten dabei im
Hintergrund: sie adressieren in geeigneter Weise die Daten in den Speichern,
bestimmen die Sequenz der zu durchlaufenden Schritte während einer Abfrage und
stellen die Ergebnisse für den Benutzer der Anlage in lesbarer Form dar.
Diese erwähnten Algorithmen werden vom Programmierer über ein Programm
formuliert. Es versteht sich, daß auch Sortiervorgänge und dergleichen
Rechenoperationen auf den Datenstrukturen bedingen.
Definitionen: (nach Giloi: Rechnerarchitektur)
Eine Berechnung besteht in einer Folge von Transformationen, durch die eine
Quelldarstellung über eine Folge von Zwischendarstellungen in eine Enddarstellung
überführt wird.
Daten sind Träger der Information, die von einer Rechenanlage gesammelt,
gespeichert, verarbeitet und dargestellt wird.
Die im Zusammenhang mit dem Berechnen auftretenden Datenmengen sind
üblicherweise in irgendeiner Form strukturiert. Eine solche strukturierte
Datenmenge wollen wir Datenstruktur nennen.
Nach Giloi wird die Folge von Transformationen beim Berechnen notwendig durch
die extreme Verschiedenartigkeit der Quelldarstellung, das ist die Darstellung, die
der Programmierer oder die Programmiererin liefert und die Darstellung, die die
Hardware versteht und bearbeiten kann. Die Daten des Programmierers sind
strukturierte Mengen von Zahlen oder Zeichen, die transformierenden Algorithmen
werden beschrieben als eine Folge von Anweisungen, die zum Teil
Organisationsanweisungen sind, zum Teil Ausführungsanweisungen für numerische
oder logische Operationen. Die Objekte der Hardware sind Bitketten, d.h. Vektoren
mit zweiwertigen Elementen. Die von der Hardware ausgeführten Operationen sind
elementare logische Verknüpfungen.
Die Folge von Transformationen von Darstellungen führt zu einer Hierarchie von
Interpretationssystemen, wobei wir unter einem Interpretationssystem folgendes
verstehen wollen:
9
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Ein Interpretationssystem ist ein geordnetes Paar (L,P), wobei L eine Sprache und P
ein (abstrakter) Prozessor ist, durch den Darstellungen in L transformiert werden
können.
Ein Rechensystem enthält mehrere Interpretationsebenen. Damit wird die
notwendige Existenz auch von mehreren entsprechend geschichteten
Intepretationssystemen begründet. Unter einem solchen geschichteten
Interpretationssystem verstehen wir eine Folge (L0,P0) (L1,P1)(L2,P2)....(Ln-1, Pn-1) .
Der Prozessor P kann dabei als Übersetzer oder auch Interpreter arbeiten.
Erklärung: Wenn Pi ein Übersetzer ist, dann besteht die Bearbeitung einer
Darstellung in Li durch Pi in der Erzeugung einer neuen, vollständigen Darstellung in
Li+1. Falls Pi ein Interpreter ist, dann besteht die Bearbeitung einer Darstellung in L i
durch Pi in der Erzeugung einer Zwischendarstellung in Li+1, die eine Bearbeitung
der Darstellung in Li durch den Prozessor Pi+1 erlaubt. Der Unterschied zwischen
der übersetzenden und der interpretierenden Arbeitsweise des Prozessors besteht
also darin, daß im ersten Fall aus einer Darstellung in L i durch Pi eine vollständige
Darstellung des gleichen Programms in Li+1 erzeugt wird, während im zweiten Fall
z.B. nur die Kontrollanweisungen der Darstellungen in Li durch Pi interpretiert
werden mögen. Mit dieser Vorgehensweise über die geschichtete Hierarchie von
Interpretationssystemen gelangen wir nur dann zu einer einfachen Kette von
hintereinandergeschalteten Blöcken, bei der die Ausgabegröße eines Blocks die
Eingabegröße des nächsten Blocks in der Hierarchie ist, wenn alle Prozessoren als
Übersetzer arbeiten.
Irgendwo in dieser Hierarchie liegt die Grenzlinie zwischen Hard- und Software.
Dabei werden die Elemente der Folge (Li+1,Pi+1) bis (Ln-1,Pn-1) immer in Hardware,
die vorhergehenden in Software realisiert. Es ist direkt einleuchtend, geht man von
realen Systemen aus, daß die Menge der durch Hardware realisierten Prozessoren
nie leer sein kann. Wo die Grenze zwischen Hard- und Software in einem System zu
ziehen ist, hängt von der Architektur des Rechnersystems ab. Die Organisation
eines Rechnersystems legt fest, wieviele Ebenen von Interpretationssystemen
innerhalb der Rechner-Hardware zu unterscheiden sind. Ein übliches
Schichtenmodell ist das des von Neumann Computers:
1.
2.
3.
4.
5.
Höhere Programmiersprache
Assembler
Betriebssystem
Maschinensprache
Hardware und Resultate
Dabei verstehen wir unter einem Betriebssystem (OS-operating system) eines
Computers einen abstrakten Prozessor, der als Interpreter arbeitet und den Betrieb
der Rechenanlage überwacht und steuert.
Unter einer Maschinensprache verstehen wir die Menge der Anweisungen an die
Maschine, wie man sie im Prozessorhandbuch der Maschine erläutert findet. Die
Programmdarstellung in dieser Sprache wird durch den Assembler erzeugt. Unter
einer Mikroprogrammsprache verstehen wir die Menge der Mikroinstruktionen, mit
denen die Mikroprogramme zur Ausführung der Operationen der konventionellen
Maschinensprache formuliert werden. Ein Mikroprogramm besteht aus einem oder
mehreren Mikrobefehlen.
10
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Unter einem Mikroprogramm wollen wir die Darstellung eines Hardware-Algorithmus
eines Prozessors verstehen; d.h. eines Algorithmus, der direkt von
Funktionseinheiten der Prozessor-Hardware ausgeführt wird und damit eine
Maschinenoperation ausführt. Ein Mikroprogramm kann fest verdrahtet sein, aber
auch in einem Mikroprogrammspeicher aufgehoben werden. Dieses Programm
nennt man dann auch Firmware.
Im folgenden werden grundlegende Definitionen eingeführt (siehe auch: Giloi,
Rechnerarchitektur):
Rechnerarchitektur:
Eine Rechnerarchitektur ist bestimmt durch ein Operationsprinzip für die Hardware
und die Struktur ihres Aufbaus aus den einzelnen Hardware-Betriebsmitteln.
Operationsprinzip:
Das Operationsprinzip definiert das funktionelle Verhalten der Architektur durch
Festlegung einer Informationsstruktur und einer Kontrollstruktur
(Hardware-) Struktur:
Die Struktur einer Rechnerarchitektur ist gegeben durch Art und Anzahl der
Hardware- Betriebsmittel sowie den Regeln für die Kommunikation und Kooperation
zwischen ihnen.
Informationsstruktur
Die Informationsstruktur einer Rechnerarchitektur wird durch die (semantischen)
Typen der Informationskomponenten in der Maschine bestimmt, der Repräsentation
dieser Informationskomponenten und der Menge der auf sie anwendbaren
Operationen. Die Informationsstruktur läßt sich als eine Menge von abstrakten
Datentypen definieren.
Kontrollstruktur:
Die Kontrollstruktur einer Rechnerarchitektur wird durch Spezifikation der
Algorithmen für die Interpretation und Transformation der Informationskomponenten
der Maschine bestimmt.
Hardware-Betriebsmittel:
Hauptsächliche Hardware-Betriebsmittel einer Rechnerarchitektur sind Prozessoren,
Speicher, Verbindungseinrichtungen (Busse, Kanäle, Verbindungsnetzwerke) und
Peripheriegeräte.
Kommunikations- und Kooperationsregeln:
Die Kommunikationsregeln werden gegeben durch die Protokolle, die den
Informationsaustausch zwischen den Hardware-Betriebsmitteln regeln. Die
Kooperationsregeln legen fest, wie die Hardware-Betriebsmittel zur Erfüllung einer
gemeinsamen Aufgabe zusammenwirken. (Beispiele: Master Slave Prinzip,
kooperative Autonomie)
11
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Benutzerschnittstelle einer Rechnerarchitektur:
Die Benutzerschnittstelle einer Rechnerarchitektur besteht aus der Sprache, in der
der Benutzer dem Betriebssystem Anweisungen erteilen kann, den auf dem System
verfügbaren Programmiersprachen und den Direktiven zur Benutzung der Anlage.
Architekturprinzipien
Nach Flynn gibt es vier Klassifikationen von Rechnern:
00:
01:
10:
11:
Single Instruction
Single Instruction
Multiple Instruction
Multiple Instruction
Single Data
(SISD)
Multiple Data
(SIMD)
Single Data
(MISD)
Multiple Data
(MIMD)
Was ist ein Prozessor? Was ist ein Verarbeitungselement ?
Nach Giloi ist ein Prozessor oder Verarbeitungssystem ein Hardware-Betriebsmittel,
welches autonom sowohl den Programmfluß steuern als auch die
datentransformierenden Operationen des Programms ausführt.
Im Gegensatz dazu nennen wir ein Hardware-Betriebsmittel, welches die
datentransformierenden Operationen zwar ausführt, jedoch nicht den Programmfluß
steuert und damit auch nicht autonom ist, sondern von außen gesteuert werden
muß, ein Verarbeitungselement.
Wir unterscheiden vier Architekturprinzipien:




Einprozessorsysteme (serielle Verarbeitung)
Arrays von gleichartigen Verarbeitungselementen (Feldrechner)
Pipelinerechner
Multiprozessorsysteme (Parallelverarbeitung9
Anhand eines Beispiels wollen wir diese vier Prinzipien nun vorstellen. Dazu soll uns
n
die Berechnung eines Skalarproduktes
 a (i )b(i )
i 1
dienen und eine Abschätzung
für den Zeitaufwand gemacht werden:
Einprozessorsysteme stellen die klassischen Rechnersysteme dar. PCs sind z.B.
solche Einprozessorsysteme. Alle von-Neumann Rechner sind von diesem Typ.
Bei der seriellen Verarbeitung wird zu einem definierten Zeitpunkt ein Befehl
ausgeführt. Bei der Berechnung des oben angegebenen Beispiels wird zunächst das
Produkt a(i) *b(i) berechnet und dann zur Zwischensumme addiert. Der Startwert für
12
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
die Summe ist Null. Es werden hierbei n Multiplikationen und n Additionen,
insgesamt also 2n Zeitschritte für die Berechnung benötigt. Man sagt dazu auch, die
Komplexität der Berechnung beträgt O(n). Die untenstehende Abbildung verdeutlicht
das Verfahren:
0
a(1)
b(1)
a(2)
b(2)
a(3)
b(3)
a(4)
b(4)
Zeit
Operation *
Operation +
Resultat
Serielle Verarbeitung
Arrays von gleichartigen Prozessorelementen, Feldrechner:
Bei diesen Rechnern sind die Verarbeitungselemente zu einem ein- oder
mehrdimensionalen Array verbunden. Das bedeutet, daß jedes Element nur mit
seinem nächsten Nachbarn verbunden ist. Die Steuerung, man spricht auch vom
Leitwerk, ist nur einmal vorhanden und steuert damit als master alle
Verarbeitungseinheiten im Gleichtakt. Bei der Verarbeitung eines Befehls können
Teile der Verarbeitungselemente ausgeblendet werden, d.h. sie nehmen an der
Befehlsausführung nicht teil. Das Beispiel Skalarprodukt führt hier zu einem
Verarbeitungsbaum:
13
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
a(1)
b(1)
a(2)
b(2)
a(3)
b(3)
a(4)
b(4).......
Zeit
Resultat
Feldrechner Verarbeitung
Die Komplexität der bekannten Aufgabe läßt sich hier beim Feldrechner auf O (log n)
reduzieren.
Pipelines:
Pipelines sind in der Regel eindimensionale Anordnungen aus
Verarbeitungselementen, die meist stärker spezialisiert sind als die
Verarbeitungselemente eines Arrays. Es gibt aber auch Pipelines, die aus
universellen Prozessoren aufgebaut sind. Der Unterschied zwischen einem Array
und einer Pipeline von Verarbeitungselementen ist, daß im ersten Falle alle
Elemente in einem bestimmten Rechenschritt dieselbe Operation ausführen,
während sie im zweiten Falle in der Regel verschiedene Operationen ausführen.
Dabei ist die (Arithmetisch Logische Einheit, Verarbeitungselement) ALU in
Funktionseinheiten aufgespalten, die unabhängig voneinander arbeiten können. Die
CD6600 (Control Data) hatte z.B. 10 Verarbeitungselemente z.B. für die Addition,
die Multiplikation, Komplementbildung, Shifts (Schiebeoperationen) etc. Allerdings
werden die verschiedenen Verarbeitungseinheiten nur in wenigen Fällen immer zu
100% (parallel) ausgenutzt. Eine Aufgabe wird also in mehrere kleine Teilaufgaben
zerlegt, die mögliche gleiche oder vergleichbare Verarbeitungszeiten aufweisen und
dann hintereinander ausgeführt. Die Automontage ist ein gutes Beispiel für das
Pipeline - Prinzip.
Betrachten wir nun als weiteres Beispiel die Gleitpunktaddition. Sie läßt sich in vier
Teiloperationen zerlegen:
 den Exponentenvergleich und Mantissenanpassung
 Mantissenaddition
14
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
 Normieren des Ergebnisses
 Runden
Wir erhalten eine Pipeline mit vier Verarbeitungsschritten:
Operand 1
Expon. vergleichen.
Mantisse. anpassen
Operand 2
Mantissenaddition
*1
*2
Normieren
Runden
*3
*4
Gleitpunktaddition
Ähnlich lassen auch die anderen Operationen zerlegen. Gehen wir von einer
Multiplikation aus, so ergibt sich als Teiloperation der Multiplikation:
Dabei ist zu beachten, daß die Verarbeitungszeit pro Sachritt wesentlich kleiner ist
als in den beiden vorhergehenden Zeitdiagrammen. Das Pipeline - Konzept ist nur
dann von Vorteil, wenn eine große Zahl gleichartiger Operationen hintereinander
ausgeführt wird.
15
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
a(1)
b(1)
a(2)
b(2)
a(3)
b(3)
a(4)
b(4)
Zeit
*1
*2
*3
*4
zur Additions Pipeline
Pipelineprinzip
Das Multiprozessor Prinzip:
Multiprozessor Systeme bestehen aus mehr als einem Prozessor. Sie heißen
homogen, wenn alle Prozessoren hardwaremäßig gleich aufgebaut sind, sonst
inhomogen. Sind den einzelnen Prozessoren im System verschiedene Rollen
zugeteilt, so nennt man das System asymmetrisch. Sind jedoch die Prozessoren
bezüglich ihrer Rollen im System austauschbar, so nennt man das System
symmetrisch. (Ein symmetrisches System muß übrigens auch homogen sein, aber
nicht umgekehrt. Schlechthin sprechen wir von einem Multiprozessorsystem, wenn
es eine zentrale Systemaufsicht gibt. Bei Multiprozessorsystemen ohne zentrale
Systemaufsicht sprechen wir von einem verteilten System. Hierbei arbeiten die
einzelnen Prozessoren autonom, kommunizieren aber miteinander. Die Prozessoren
führen zu einem bestimmten Zeitpunkt im allgemeinen unterschiedliche Befehle
aus, die ihnen vor der Ausführung durch einen Zentralprozessor, den
Steuerungsprozessor zugeteilt werden. Nach ihrer Abarbeitung müssen sich die
Prozessoren wieder synchronisieren. Für unser Beispiel des Skalarprodukts gehen
16
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
wir von vier Prozessoren aus. Die Berechnung zerlegen wir dann in vier Teile, die
von den einzelnen Prozessoren bearbeitet werden. Es folgt:
k
Prozessor P1 berechnet S1   a (i )b(i ) , P2 berechnet S 2 
Prozessor P3 berechnet S 3 
i 1
m
l

 a(i)b(i) und P4 berechnet S 4 
i  l 1
a ( i )b( i ) ,
i  k 1
n
 a( i)b( i) .
i  m 1
Die Anzahl der Operanden pro Prozessor kann dabei durchaus beliebig sein.
Zeitlich verhalten sich die einzelnen Prozessoren wie Einzelprozessoren. Nach der
Berechnung der Teilsummen werden diese über das Kommunikationsnetz einem
Prozessor übertragen, der dann die Endsumme aus den Teilergebnissen ermittelt.
17
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Die von Neumann Maschine oder der Princeton Computer
Das obige Bild erläutert grob die Struktur des von Neumann Rechners. Seine
Struktur wurde von Burks, Goldstine und v. Neumann definiert. Die Hardware besteht
CPU
BefehlsProzessor
Daten Prozessor
Ein /AusgabeProzessor
BUS
Speicher
Struktur eines einfachen von Neumann Rechners
hierbei
aus folgenden Einheiten:
1. der central processing unit (CPU), in der die Befehle eines Programms bearbeitet
(interpretiert und ausgeführt) werden, soweit es sich nicht um Ein /
Ausgabebefehle handelt.
2. dem Speicher, in dem die Daten und das auszuführende Programm gespeichert
sind
3. dem Ein / Ausgabe Prozessor, der zusammen mit den Ein/ Ausgabegeräten
(Peripheriegeräten) die Kommunikation zwischen dem Rechner und der
Außenwelt steuert. Peripheriegeräte sind z.B. Drucker, Monitoren (Displays),
Bandgeräte wie Streamer etc. und
4. die Datenverbindungen, die den Datenaustausch zwischen den verschiedenen
Einheiten des Rechners ermöglichen.
Wie wir bereits wissen, wird ein Rechner nicht allein durch seine Hardware
repräsentiert; sondern auch durch seine Software auf verschiedenen Ebenen.
18
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Hiermit wird im wesentlichen das Organisationsprinzip des Rechners festgelegt.
Nach von Neumann wird eine Operation immer auf den Inhalt der in der
Operationsanweisung (dem Maschinenbefehl) referierten Speicherzelle angewandt,
ohne Rücksicht auf die etwaige Bedeutung des Inhalts der Speicherzelle. Die
Speicherzelle wird hierbei einzig durch seine Adresse beschrieben.
Man nennt das auch das Prinzip des minimalen Speicheraufwand. Mit der rasanten
Weiterentwicklung von integrierten Speicherbausteinen sind die Kosten pro Bit
drastisch gesunken. Damit werden neue Möglichkeiten gegeben, auch über andere
Rechner-Architekturen nachzudenken. Zum andern beobachten wir, daß jeder
Befehl und jede Ausgabe aus der CPU einen Speicherzugriff benötigt. Das führt
dazu, daß die Verbindung zwischen CPU und dem Speicher zu einem Datenengpaß
führt, der auch „von Neumannscher Flaschenhals“ genannt wird. Gleichzeitig führt
dieser Flaschenhals zu Leistungseinbußen des Rechners. Jede Umgehung dieses
Weges, sei es durch schnelle Pufferspeicher (Caches) oder andere Architekturen
wie assoziative Strukturen oder die ein Form, die es ermöglicht, zu einem Zeitpunkt
mehr als nur eine Operation eines Algorithmus auszuführen, trägt dazu bei die
Leistungsfähigkeit des Rechners zu erhöhen.
Zur Definition von Berechnung und Algorithmus gehen wir davon aus, daß
zusätzlich zu den M Speicherzellen im Haupt-Speicher weitere r Registerzellen, die
auch Speicherfunktion haben, zur Verfügung stehen. Damit kann der
Speicherzustand eines Rechners durch die Abbildung :
 : 0: M  1  Ri i  0: r  1  B n , mit B = 0,1 und n = Speicherwortlänge
Die Funktion  ordnet also den verfügbare Adressen genau dasjenige Bitmuster
 bn1 ,.... b0   B n zu, das im betrachteten Augenblick den Inhalt der adressierten
Speicherzelle bildet. Dabei müssen wir erwähnen, daß man im Normalfall nicht
bitweise, sondern byte- oder wortweise adressiert.
Berechnung:
Eine Berechnung besteht in der Veränderung des Speicherzustands des Rechners
derart, daß, von einem Anfangszustand 0 ausgehend, über eine Folge von
möglichen Zwischenzuständen eine Endzustand t erreicht wird. Diese Änderung
des Speicherzustands wird bewirkt durch ein Maschinenprogramm, welches,
ausgehend von einem beliebigen Anfangszustand, zu einem definierten
Endzustand führt. Ein solches Programm nennt man auch Algorithmus.
Algorithmus:
Ein Algorithmus ist eine Verarbeitungsvorschrift. Man bezeichnet ihn formal als ein
Quadrupel (Z,E,A,f). Dabei bedeutet Z eine Menge von Zwischenergebnissen, E  Z
die Menge der Eingaben und A  Z die Ausgabemenge. f : Z  Z wird als
Überführungsfunktion oder auch Transitionsfunktion bezeichnet. Ein Algorithmus
beginnt mit einem Anfangszustand 0 und führt zum Endzustand t.
Eine vollständige Betrachtung der möglichen Speicherzustände ist technisch
unmöglich, bedenkt man die Anzahl der möglichen Zustände eines Speichers. Hat
19
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
ein Register z.B. die Größe von auch nur 16 bit mit nur 1 Ausgang, so ergeben sich
16
damit 22 mögliche Zustände, die im Testfall zu überprüfen wären. Dies entspricht
allein bei diesem kleinen Speichervolumen 264000 zu beobachtenden Zuständen.
Diese Überlegung wende man auf einen Speicher mit einem Volumen von 16 Mbit
an! Wie aus diesen Überlegungen direkt sichtbar wird, ist eine Betrachtung aller
möglichen Speicherzustände eines Rechners - wenigstens zur Zeit - nicht möglich.
Sie wäre in den meisten Fällen auch nicht sinnvoll! Hingegen scheint eine
Betrachtung von elementaren Transformationen, aus denen sich die
Transformationen beliebiger Algorithmen aufbauen lassen, durchaus sinnvoll und
wünschenswert. Solche Transformationen sind:
 die Speicherplatz – Zuweisung
 die Wert – Zuweisung
 die Speicherplatz Freigabe
 die Identitätstransformation und
 die total undefinierte Transformation.
Der Benutzer des Rechners denkt bei seiner Programmierung natürlich nicht an
„absolute“ Speicheradressen. Er benutzt symbolische Adressen, die eine
Adressierung der Objekte vereinfachen. Man spricht hierbei auch von der
Speicherplatz Zuweisung. Der Benutzer ist nicht an der wirklichen Adresse
interessiert (siehe auch höhere Programmiersprachen: Variable :  Namen , Wert .
Komponenten eines Rechners
In allen Rechnern finden sich folgende Elemente:
1. das Rechenwerk
2. das Steuerwerk
3. der Speicher
4. die Ein /Ausgabe, Kommunikation
Das Rechenwerk hat die Aufgabe, arithmetische, logische und SchiebeOperationen durchzuführen und die notwendige „Infrastruktur“, die zur Ausführung
notwendig ist, bereitzustellen. Dazu gehören z.B. die Operandenregister und ein
Zielregister, in dem das Ergebnis einer Operation festgehalten
(zwischengespeichert) werden kann.
20
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Dazu wollen wir kennenlernen, nach welchen Regeln diese Operationen
durchgeführt werden.
Im Binärsignal liegen nur zweiwertige Ergebnisse vor: entweder ein Signal hat den
Wert „1“ oder ein Signal hat den Wert „0“. Diese Werte gilt es, durch Schaltelemente
geeignet zu realisieren. Wir wir wissen, werden solche Systeme digitale Systeme
genannt. Ihnen werden physikalische Größen (0 Volt; 3,3 Volt etc. ) zugeordnet; sie
werden durch elektronische Schalter (Transistoren) nach den Gesetzen der
Boolschen Logik realisiert.
21
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Schaltnetze
Definition
Schaltnetze sind Funktionsblöcke, die aus kombinatorischen Schaltungen bestehen.
Sie verarbeiten Schaltvariablen, deren Werte am Ausgang nur von den
Eingangswerten (oder -Wert) zum gleichen Zeitpunkt abhängen. (DIN 44300/93)
Schaltalgebra
Alle gängigen Rechner nutzen heute die Regeln der boolschen Algebra, d.h. sie
verwenden „binäre“ d.h. zweiwertige Signale zur Verknüpfung. UND, ODER oder die
NEGATION sind heute auch in nicht technischen Disziplinen häufig verwendete
Operationen. Wir wollen diese Operationen wegen ihrer Bedeutung für unsere
Rechenanlagen nun einführen:
Wir sprechen bei den oben genannten Operationen von der Schaltalgebra. Sie geht
auf Shannon zurück, der in den 30-er Jahren dieses Jahrhundert die Ergebnisse
von George Boole ausarbeitete, die dieser in seinem Buch „ An Investigation of the
Laws of Thought“ niedergelegt hatte. Man bezeichnet diese spezielle Schaltalgebra
auch als die Boolsche Algebra.
Definition einer Boolschen Algebra aus einem Axiomensystem (nach Klar):
Eine Menge B von Elementen, über der zwei zweistellige Operationen (+) und (*)
erklärt sind, ist genau dann eine Boolsche Algebra, wenn für beliebige Elemente
a,b,c aus B folgende Axiome gelten:
1)
a+b=b+a
a*b=b*a
Die Operationen + und * sind kommutativ
2)
0+a=a
1*a=a
Für jede der Operationen + bzw. * existiert
in B ein „Eins“-Element „0“ bzw. „1“
3)
(a + b) * c = (a * c) + (b * c)
(a * b) + c = (a + c) * (b + c)
Jeder Operation ist distributiv bezüglich
der anderen
4)
a + a = 1
a * a = 0
Zu jedem Element a B existiert ein
komplementäres Element a  B mit
a + a = 1 und a * a = 0. a heißt auch
„Komplement“ von a.
Aus diesen Axiomen lassen sich folgende Aussagen ableiten:
Satz 1: Dualitätsprinzip: Zu jeder Aussage, die sich aus diesen vier Axiomen ableiten
läßt, existiert dazu eine duale Aussage. Sie entsteht dadurch daß man die
22
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Operationen + und * und gleichzeitig die Eins-Elemente 1 und 0 vertauscht. Beweis:
Axiome sind symmetrisch bezüglich der 2 Operationen und der beiden EinsElemente. Jede abgeleitete Aussage muß damit auch wieder diese Symmetrie
aufweisen.
Für jedes Element einer Boolschen Algebra gilt:
Satz 2:
a+1=1
a* 0=0
Beweis der Aussage a + 1 = 1:
Es gilt:
1
= a + a
= (1 * a ) + a
= ( 1 + a) * ( a + a)
= ( 1 + a) * 1
= (a+1)
nach Axiom 4 und 1
nach Axiom 2
nach Axiom 3
nach Axiom 1 und 4
nach Axiom 2 und 1 ; q.e.d.
Nach dem Dualitätsprinzip ist mit dem Beweis von a + 1 = 1 auch a * 0 = 0
bewiesen.
Weiterhin gilt Satz 3:
a (a  B) gilt: a + a = a
a*a=a
Satz 4:
a, b (a  B, b  B) gilt: a + ( a * b) = a
a * ( a + b) = a
Satz 5: (Assoziativgesetz)
a, b, c (a  B, b  B, c  B) gilt:
a+(b+c)=(a+b)+c
a * (b * c) = (a * b) * c
Satz 6: (Eindeutigkeit des Komplements)
a (a  B) existiert genau ein Komplement a (a  B ) .
23
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_

Insbesondere gilt: a  a
Satz 7: Die beiden Eins-Elemente sind komplementär zueinander
1  0 und 0  1
Satz 8: (De Morgansches Theorem)
a, b (a  B, b  B) gilt:
a  b 
 a * b und
a * b)  a  b
das De Morgansche Theorem läßt sich auf Boolsche Funktionen erweitern:
f ( x1 , x2 , x3 ,....., xn ; # ,*)  f ( x1 , x2 , x3 ,....., xn ;*, # )
wobei f eine Boolsche Funktion und xi (i= 1,2,3,...,n) Boolsche Variablen sind
24
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Mit „Boolsche Algebra“ und „Schaltalgebra“ werden in der Praxis häufig dieselben
Eigenschaften bezeichnet. Im folgenden wollen wir den Begriff der Schaltalgebra
weiter verwenden.
Die wichtigsten Verknüpfungen der Schaltalgebra sind:
 das logische Produkt, die Konjunktion (AND, UND); sie wird durch die
Operatoren  bzw.  repräsentiert.
 die logische Summe, die Disjunktion (OR, ODER); sie wird durch die
Operatoren  oder + repräsentiert. .
 die Inversion (NOT); sie wird durch den Balken über den Variablen dargestellt.
In der untenstehenden Tabelle sind die in der Schaltalgebra gängigen Operationen
aufgeführt:
Alle Variablen, mit denen wir arbeiten, können zwei Zustände annehmen: aktiv oder
inaktiv. Damit ergibt sich die Anzahl der möglichen Verknüpfungen von n (2wertigen)
Eingangsvariablen x0 bis xn-1 auf insgesamt 2n Kombinationen der Eingangsgrößen.
Hat die Ausgangsgröße y auch zwei Zustände (und das ist ja üblich in unseren
Schaltungen) so können allen möglichen 2n Eingangszuständen nochmals 2
Ausgangszustände zugeordnet werden. Aus diesem Grund gibt es zu n
n
Eingangsvariablen insgesamt 2 2 mögliche Belegungen.
y(x0, x1, x2,.........xn-1) = f (x0, x1, x2, ........xn-1)
Die obige Gleichung wird Schaltfunktion, Funktionsgleichung, aber auch Term
genannt. Es ist auch üblich, diese Funktion direkt als Wahrheitstafel darzustellen.
Zu einer (1) Eingangs-Variablen sind 4 Ausgangswerte zuordenbar. (Nullfunktion,
Identität, Negation und die Einsfunktion) Lediglich die Negation ist hierbei von
praktischer Bedeutung. Ihre Wahrheitstafel lautet:
x
y
Betrachtet man alle die Zustände, die durch die
Permutationen der Eingangsvariablen und
Ausgangsvariablen möglich sind, so kommt man schnell zu
1
0
dem Schluß, daß aus der Vielzahl eigentlich nur wirklich
wenige von größerem Interesse sind. Bei zwei
0
1
Eingangsvariablen erhalten wir - ich erinnere - bereits 16
Ausgangsgrößen! Hier stellen wir fest, daß nur 4
Verknüpfungen, nämlich AND, OR, sowie NAND, NOR von
Bedeutung sind. Sheffer und Peirce haben sich mit diesen
Problemen näher beschäftigt und herausgefunden, daß alle logische Verknüpfungen
nur aus AND und Negation oder OR und Negation aufgebaut werden können. Das
hilft uns zwar theoretisch, in der Praxis ist das Ziel jedoch nicht die Verwendung nur
eines und zweier Gattertypen , sondern die optimale Kombination verschiedener
25
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Gatter bei gleichzeitig geringen Kosten. Dabei hat sich Verwendung vornehmlich
von NAND, NOR und Inverter Gattern als vorteilhaft herausgestellt.
Um die Übersichtlichkeit auch von Schaltungen höherer Komplexität zu
gewährleisten, werden statt der Darstellung auf Bauelementen - Ebene die
entsprechenden Logiksymbole verwendet; sie bilden den Logikplan. Es soll hier aber
auch darauf hingewiesen werden, daß bei der Beschreibung von ganzen System
Modulen wie z.B. Mikroprozessoren auch die Darstellung der Schaltung durch
Logikgatter bei weitem nicht ausreicht. In diesen Fällen bedient man sich
Beschreibungsmitteln, die oberhalb der Logikebene angesiedelt sind, z.B.
Registertransfersprachen (HDL: MIMOLA, KARL, etc. , VHDL).
Zurück zu den Logiksymbolen: Hier waren in der Vergangenheit mehrere
Darstellungen für dieselbe Funktion gängig. Seit einigen Jahren setzen sich die
Schaltsymbole nach DIN vermehrt durch. Einige Beispiele sind weiter unten
angeführt.
Nicht alle Schaltungen, die in der Praxis Verwendung finden, lassen sich durch die
oben beschriebenen Grundgatter realisieren. In diesem Zusammenhang seien
Schwellwertelemente genannt oder auch Dekoder, die m Elemente aus n
Elementen herausfiltern.
Aus der Vielfalt gleichwertiger Darstellungen einer Schaltfunktion ist man bemüht,
die „einfachste“ Schaltungsrealisierung abzuleiten. „Normalformen“ bilden hierzu ein
Werkzeug; sie enthalten nur Konjunktionen, Negationen und Disjunktionen. Es gibt
zwei Arten von Normalformen: die disjunktive und die konjunktive Normalform.
Die disjunktive Normalform definieren wir wie folgt:
Unter der disjunktiven Normalform verstehen wir die logische Summe von
logischen Produkten.
Beispiel:
y = (x0  x1 )  (x7 x6  x4)  x3
Unter der konjunktiven Normalform verstehen wir das logische Produkt von
logischen Summen.
Beispiel:
y = (x0  x1)  x7  (x6  x4  x3)
In den Termen dürfen auch negierte Größen aufgeführt werden.
Eine kanonische Normalform (egal ob disjunktiv oder konjunktiv) enthält jeweils alle
Variablen negiert oder nicht negiert.
26
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Definition:
Unter einer Volldisjunktion wollen wir die ODER - Verknüpfung aller
Eingangsvariablen verstehen, egal ob sie negiert oder nicht negiert auftreten.
(Maxterme) Bei n Eingangsvariablen gibt es insgesamt 2n Maxterme, z.B. bei 2
Variablen 2n , d.h. vier Maxterme: (x0 + x1); (x0 + x1); (x0 + x1); ( x0 + x1)
Definition:
Unter einer Vollkonjunktion verstehen wir die UND - Verknüpfung aller
Eingangsvariablen, gleichgültig, ob sie negiert oder nicht negiert auftreten.
(Minterme) Bei n Eingangsvariablen gibt es insgesamt 2n Minterme.
27
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Schaltfunktionen ist
Benennung, Operator
Schaltzeichen nach DIN
x0
UND -Gatter
&
y
1
y
1
y
x1
ODER - Gatter
x0
x1
Negation - Gatter
x0
x0
NAND - Gatter
&
y
x1
x0
NOR - Gatter
1
y
x1
x0
Exclusiv - Oder Gatter
(Antivalenz)
=1
y
x1
Der Wert der Minterme bzw. Maxterme ist nur für eine spezielle
Variablenkombination gleich eins (null).
28
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Beispiel (zwei Variable):
x0
x1
0
0 0
1 1
0
1
1
x0  x1
0
0
0
1
x0  x1
0
0
1
0
x0  x1
0
1
0
0
x0  x1
1
0
0
0
x0  x1
0
1
1
1
x0  x1
1
0
1
1
x0  x1
1
1
0
1
x0  x1
1
1
1
0
In obiger Tabelle ist das Zeichen  äquivalent zu .
Eine Kanonische Normalform enthält nur Terme, in denen jeweils alle Variablen
(negiert oder nicht negiert) auftreten.
Für die Kanonische disjunktive Normalform bedeutet das:
y   mi
(mit mi = Mintermanzahl, für die y =
Um
i
den Wert = 1 annimmt)
i
i
Beispiel einer Kanonischen Disjunktiven Normalform (KDNF):
y( x0 , x1 , x2 , x3 )  x0 x1 x2 , x3  x0 x1 x2 x3  x0 x1 x2 x3
und für die Kanonische konjunktive Normalform gilt dann:
y   Mi
(mit Mi = Maxtermanzahl, für die y  I Mi den Wert = 0 annimmt).
i
i
Beispiel einer Kanonischen Konjunktiven Normalform (KKNF):
y  ( x0  x1  x2 )( x0  x1  x2 )( x0  x1  x2 )
29
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Nach de Morgan kann man zeigen, daß die beiden Normalformen gleichwertig sind;
sie lassen sich ineinander überführen.
Beispiel:
Sei y = m1 + m2 + m3 = m1  m2  m3 gegeben. Dann folgt nach de Morgan:
y  m1  m2  m3  M1 M2 M3
und nach einer weiteren Negation:
y  M1 M2 M3  M0 M4 M5 M6
Wir wir gesehen haben, bestehen beide Formen der Normalformen aus zwei
Operationstypen: der Konjunktion und der Disjunktion. Realisiert man nach der
DNF, z.B. dann, wenn die Ausgangsfunktion mehr Nullen als Einsen enthält, so
bearbeitet man zuerst die Konjunktionen und danach faßt man die Ergebnisse aus
den Konjunktionen über eine Disjunktion zusammen. Bei der KNF verfährt man
komplementär.
Zur Minimisierung von Schaltfunktionen:
Es existieren zumindest drei Arten, den Schaltungsaufwand einer Schaltung zu
optimieren:
1. über algebraische Verfahren (Schaltalgebra)
2. graphische Verfahren (Karnaugh - Veitch Diagramme)
3. tabellarische (algorithmische) Verfahren. (Quine - McCluskey)
Grundlage des Verfahrens nach 1) sind die erwähnten Rechen-Regeln. Unter 2) ist
ein graphisches Verfahren aufgeführt, welches jedoch nur bis zu einer
Variablenanzahl von etwa 4 geeignet scheint. Das unter 3) erwähnte Verfahren
beschreibt eine Methode für komplexe Systeme mit vielen Variablen. Es wird dem
Entwickler deshalb vorzugsweise mit den Werkzeugen, die zur Synthese von großen
Schaltungen dienen, zur Verfügung gestellt.
Wir wollen uns hier näher mit den graphischen Methoden nach Karnaugh - Veitch
(KV) beschäftigen:
Bei der KV Methode ersetzen die KV Diagramme, auch KV - Tafeln genannt, die
Wahrheitstabellen, wie wir sie oben vorgestellt haben. Die KV - Tafel wird in Felder
unterteilt, die einer Kombination der Eingangsvariablen entsprechen. Bei n Variablen
erhalten wir 2n Felder, von denen jedes einzelne Feld entweder einen Minterm oder
einen Maxterm repräsentiert. Ihre Zuordnung ist so beschaffen, daß sich die
Eingangskombinationen in den direkt benachbarten Feldern unterscheiden. Als
benachbart gelten hier aber auch die am Tafelrand genau gegenüber angeordneten
Felder.
30
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
In die Felder werden die zu den Eigangskombinationen gehörigen Funktionswerte
eingetragen. An den Rand der Tafel (Zeilen und Spalten) werden die Werte der
möglichen Kombination geschrieben. Da die Felder in der KV Tafel den Zeilen der
zugehörigen Wertetabelle entsprechen und die Feldeinträge den
Ausgangsvariablen, kann die Schaltfunktion direkt aus der Tabelle abgelesen
werden. Hierauf basiert dieses Minimierungsverfahren.
Die folgende Skizze zeigt Beispiele von KV - Tafeln:
31
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
x0
x1
x1
0
x1
x0
1
Zelle 10
oder:
Zelle x0  x1
0
x0
1
x0
Zelle x0 x2  x1
oder:
Zelle 101
x0
x2
x2
x1
x1
x1
x0
x0
x3
x2
x3
x2
x3
x1
x1
32
x1
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Das Verfahren geht davon aus, daß die zu realisierende Schaltfunktion in der
KDNF zur Verfügung steht und in die KV-Tabelle eingetragen ist. Das bedeutet, daß
diejenigen Felder, die Minterme darstellen, durch eine 1 gekennzeichnet sind. Die
Minimisierung erfolgt nun durch Zusammenfassung aller benachbarter „Einsen“,
auch über die Matrixgrenzen hinaus; so wie oben beschrieben wurde. Je mehr
Felder mit Einsen man zu Blöcken zusammenfassen kann, desto einfacher wird
letztendlich die resultierende Schaltung. Einzelne, mit „ Eins“ gekennzeichnete
Felder werden einzelnen in die resultierende Schaltfunktion übernommen. Die
Felder, die mit Null gekennzeichnet sind, fallen raus. Bei der Blockbildung von „Eins“
- Feldern entfällt:
 bei 2 zusammenhängenden „Eins“ Feldern eine Eingangsvariable und
 bei 4 bzw 8 zusammenhängenden „Eins“ Feldern 2 bzw. 3 Eingangsvariablen.
An zwei einfachen Beispielen wollen wir das Verfahren näher untersuchen:
Gegeben sei folgende Schaltfunktion:
y = (x0  x1)  (x0  x1)  (x0  x1)
In einem ersten Schritt tragen wir diese Gleichung in eine KV-Tafel für zwei Variable
ein. Diejenigen Minterme, die zu einer „Eins“ führen, werden in der Tafel mit einer
„Eins“ notiert. Es ergibt sich folgendes Bild:
x0
x1
x1
x0
1
1
Es ergibt sich, wie aus der Skizze leicht zu
ersehen ist, ein Block, der drei Felder umfaßt.
Diesem Block sind die Variablen x0 und x1
zugeordnet, und zwar so, daß jeweils sämtliche
Felder der Variablen überstrichen werden. Auf
diese Weise ergibt sich sofort die minimisierte
Schaltfunktion (disjunktive Minimalform).
1
Gegeben sei nun folgende Disjunktive Normalform mit 4 Variablen:
y = (x0  x1  x2 x3)  (x0  x1  x2  x3)  (x0 x1  x2  x3)
 (x0  x1  x2  x3)  (x0  x1  x2  x3)  (x0  x1  x2  x3)
 (x0  x1  x2  x3)  (x0  x1  x2  x3)  (x0  x1  x2  x3)
33
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Für die KV Tafel ergibt sich damit:
x0
x0
1 (8)
1 (1)
1 (5)
x1
1 (3)
1 (4)
1 (6)
1 (2)
x3
1 (9)
1 (7)
x1
x2
x2
x2
Wir fassen nun die Felder mit Nachbarn zusammen und erhalten die folgende
Minimal - Funktion:
y = (x0  x1)  (x0  x3)  (x0  x1  x2  x3)
Für die allgemeine Ermittlung der Minimalform können wir folgendes Verfahren
angeben:
1. Schritt:
Für n - Variablen generieren wir eine KV Tafel mit 2n Feldern.
2. Schritt:
Die Minterme mit den „Eins“ - Werten tragen wir in die Tafel ein.
3. Schritt:
Zusammenfassen von „Eins“ Feldern mit ihren Nachbarn zu Blöcken gemäß
folgender Vorschrift:
34
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
 Jeder Block, der 2, 4, oder 8 benachbarte Felder enthält, muß ein möglichst
großes Rechteck oder ein Quadrat sein.
 Jedes „Eins“ Feld muß berücksichtigt werden. Die Anzahl der Blöcke soll so
klein wie möglich sein. „Eins“ Felder können Teil mehrerer Blöcke sein.
 Jeder Block ergibt einen Produktterm der minimalen Schaltfunktion
Das Verfahren ist natürlich auch auf die konjunktive Normalform anwendbar; in
diesem Fall sind die Felder mit „Nullen“ entsprechend zusammenzufassen. Für eine
Variablenanzahl unter 6 ist das Minimieren mittels KV- Tafeln übersichtlich, bei einer
größeren Anzahl wird das Verfahren schnell unüberschaubar.
Einige Vereinbarungen:
1. Unter positiver Logik wollen wir die Logik verstehen, die im aktiven Zusatnd
einen logischen Pegel = 1, eine „Eins“ oder auch HIGH (H) erzeugt. Der
äquivalente elektrische Pegel ist eine positive Spannung, die in der Regel bei
MOS Schaltkreisen 5 Volt beträgt, bei hochkomplexen schnellen Schaltkreisen
aber auch z.B. 3,3 Volt betragen kann.
2. Negative Logik ist komplementär zur positven Logik. Die entsprechenden
Spannungen, die den aktiven Zustand beschreiben, sind negativer als die
entsprechenden Spannungen im inaktivenZustand. Der logische Pegel, der den
aktiven Zustand beschreibt wird 0, „Null“ , „aktiv LOW“ oder auch nur „LOW“ (L)
genannt. Die entsprechenden Spannungen liegen hier in der MOS Technik bei 0
Volt.
Ein Schaltnetz generiert also in Abhängigkeit der Eingangsvariablen (des
Eingabevektors x1, ...,xm ) und der Architektur des Schaltnetzes am Ausgang einen
Ausgabevektor y1,...., yn.
Y = F (X)
mit den Komponenten:
y1 = f1 (x0,...,xm-1)
y2 = f2 (x0,...,xm-1)
.
.
.
yn = fn (x0,....,xm-1)
Bemerkung: Durch F werden nur rückkopplungsfreie Verknüpfungen mit UND-,
ODER- oder Negations-Gattern realisiert.
Signallaufzeiten spielen bei Schaltnetzen eine untergeordnete Rolle. Daher ergibt
sich hier häufig das Problem von „Hazards“. Die Entstehung eines Hazardtypen ist
in der untenstehenden Abbildung skizziert.
35
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
a
c
clk
b
Beispiele von Schaltnetzen sind z.B. Multiplexer, bei denen aus n an einem Baustein
anliegenden Signalen genau 1 Signal ausgewählt wird, aber auch sog. Arrays, in
denen Grundverknüpfungsglieder feldartig angeordnet sind.
Codes
Codes finden in der Technik breite Verwendung. Mit ihrer Hilfe ist man in der Lage,
Daten zu verschlüsseln, so daß sie von Dritten nicht gelesen werden können
(wenigstens sollen) und man verwendet sie, um mit Hilfe weniger Signale große
Mengen an Information zu übermitteln. Dabei muß natürlich sichergestellt werden,
daß der Adressat der codierten Signale auch in der Lage ist, diese Signale wieder so
aufzubereiten, daß er die Information, die in diesen Signalen „versteckt“ ist,
interpretieren kann. In der Datenverarbeitung unterscheiden wir Codes, die zur
Reduzierung der Datenmengen verwendet werden und Codes, die zur
Datensicherung verwendet werden. Solche Codes zur Datensicherung, also der
Sicherung vor dem Zugriff durch Dritte bestehen häufig aus komplexen
Hardwarelösungen, verbunden mit implementierten spezifischen Algorithmen.
Besondere Bedeutung erlangen diese Algorithmen (Verschlüsselungsverfahren) bei
Datennetzen.
Wir wollen uns hier aber auf die Verfahren der „Datenreduktion“ durch Codes
beschränken.
Eine sehr bekannte Anwendung von Codierern ist die Anzeige auf den Digitaluhren.
Hierbei wird von einem internen Code aus (z.B. dem sogenannten BCD Code) die
Steuerung der Displaysegmente durchgeführt. (Zur Erinnerung: BCD: Binary Coded
Decimal bedeutet: Binärcode zur Ausgabe von Dezimalziffern). So, wie man von
Binärcode nach Dezimal umwandelt, kann man natürlich auch vom Dezimalcode in
36
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
binären Code umwandeln. Es gibt eine Vielzahl verschiedener Codes, die hier aber
nur auszugsweise erwähnt werden sollen:
 der 8 4 2 1 - Code. Hier dienen die ersten 10 Kombinationen der Dualzahlen zur
Darstellung. Die übrigen Kombinationen werden nicht benutzt. Die Gewichtung der
Stellen entspricht der im Dualsystem; aus diesem Grund gelten auch hier die
Rechenregeln der Dualzahladdition.
 der 3-excess - Code. Er erlaubt eine einfache Generierung des
Neunerkomplements. Der Code ist nicht gewichtet. Als hervorstechendes Merkmal
wir in diesem Code in jeder benutzten Bitkombination mindestens ein Bit gesetzt
und gleichzeitig ein anderes zurückgesetzt. Dadurch, daß die Kombinationen
1111 und 0000 nicht existieren, wird dieser Code in gewisser Weise auch
störunfälliger. Auch der
 der AIKEN - Code erlaubt eine einfache Bildung des Neunerkomplements. Die
einzelnen Stellen sind gewichtet. Durch einfache Inversion können hier die
negativen Dezimalzahlen dargestellt werden.
 der 2 - aus - 5 - Code enthält pro Dezimalziffer immer genau 2 Binärstellen, die
auf 1 gesetzt sind. Dadurch wird eine Fehlererkennung erleichtert.
 Der 1 - aus - 10 - Code findet Anwendung in der Fernsprechtechnik. Hier werden
die 10 Binärstellen nacheinander mit genau einem 1 Signal belegt.
 Alphanumerische Codes (z.B. EBCDIC (8 Bit) , ASCII - Code (6+1)) erlauben
neben der Kodierung von Zahlen auch die Verschlüsselung von Buchstaben,
Trenn- und Sonderzeichen. Hier kommt man allerdings nicht mehr mit 4 Bit aus,
sondern benötigt im allgemeinen 7 und 8- Bit Codes.
37
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Coder, Decoder
In digitalen Systemen wird die Information je nach Anwendung in unterschiedlichen
Codes dargestellt. Für eine Dezimalausgabe z.B. ist ein sogenannter 1-aus 10 Code
günstig; man verwendet hier vorzugsweise eine 7-Segment Anzeige. Dagegen
arbeiten Zähler meist im BCD-Code (Binary Code Decimal). Man spricht von einer
Code-Wandlung oder einem Code-Umsetzer.
Definition:
Ein Code-Umsetzer ist ein Schaltnetz, welches die Information eines Eingangswortes
(n-Bit) im Code A in die Information eines Ausgangswortes (m-bit) im Code B
umformt.
Zwei Formen werden besonders häufig verwendet: der Decoder und der Codierer,
auch Encoder genannt.
Decoder:
Ein Decoder wandelt ein n-bit Eingangswort in ein 1-aus-m Code mit m= 2n
Ausgangssignalen. Hierbei führt genau ein Ausgangssignal den Wert „1“, alle
anderen haben den Wert „0“.
Beispiel:
Dieser Dekoder soll folgendes leisten:
X0
0
0
1
1
X1
0
1
0
1
Y0
1
0
0
0
Y1
1
0
0
Y2
0
0
1
0
Y3
0
0
0
1
x0
x0 x1 x1
1
Wahrheitstafel
1
Y0
Y1
1
Y2
1
Y3
Schaltnetz
38
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Bei einem Dekoder, der bei Uhrenanzeigen angewendet wird, sieht die
entsprechende Tabelle folgendermaßen aus:
X
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
X0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
X1
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
X2
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
X3
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
Y0
1
0
0
0
1
1
1
0
1
1
#
#
#
#
#
#
Y1
1
0
1
1
0
1
1
1
1
1
#
#
#
#
#
#
Y2
1
1
1
1
1
0
0
1
1
1
#
#
#
#
#
#
Y3
1
1
0
1
1
1
1
1
1
1
#
#
#
#
#
#
Y4
1
0
1
1
0
1
1
0
1
1
#
#
#
#
#
#
Y5
1
0
1
0
0
0
1
0
1
0
#
#
#
#
#
#
Y6
0
0
1
1
1
1
1
0
1
1
#
#
#
#
#
#
Y1
Y0
Y2
Y6
Y5
Y3
Y2
Decoder finden breite Anwendung in der Datenverarbeitung, z.B. als Adreßdekoder
in Speichern. Zur Adressierung eines Wortes in einem 1k-Speichers benötigt man
also 10 bit.
39
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Kodierer realisieren die Umkehrfunktion der Encoder.
Das eingangsseitig anliegende Wort im 1-aus-m-Code wird in ein (dual)-kodiertes
Ausgangswort überführt. Er hat also m Eingänge (von denen jeweils nur eines
aktiviert ist) und erzeugt einen n-Bit-Ausgangscode. Das untenstehende Beispiel
stellt einen 4:2-Codierer dar. Immer dann, wenn einer der 4 Eingänge aktiviert ist,
entsteht ein zugehöriges Ausgangswort. Wir wollen als Beispiel hierzu nun die
Zahlen 0 bis 9 mit 10 Tasten in den Dualcode umformen und auf diese Weise für
eine Weiterverarbeitung durch einen Rechner verfügbar machen. Von den 10
Eingängen führt jeweils genau einer einen „1“ Pegel, alle übrigen haben einen „0“Pegel. An den 4 Ausgängen tritt das zugehörige BCD-Wort auf.
Taste
0
1
2
3
4
5
6
7
8
9
Dualzahl
Y3
0
0
0
0
0
0
0
0
1
1
Y2
0
0
0
0
1
1
1
1
0
0
Y1
0
0
1
1
0
0
1
1
0
0
Y0
0
1
0
1
0
1
0
1
0
1
Eine Realisierung mit ODER-Gattern, analog zu obigen Beispiel, bleibe dem Leser
zur Übung überlassen.
40
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Einfache Schaltnetze
Multiplexer werden als „Weiche“ für logische Signale eingesetzt. Das folgende
Prinzipschaltbild erläutert seine Funktion:
Gatter a
x1
y1
x2
Gatter b
x3
Multiplexer
Zur Funktion des oben dargestellten Multiplexers (Muxer):
Die beiden Signale x1 und x2 sind die Datensignale; x3 dient als Steuersignal für den
Multiplexer. Es wird gewährleistet, daß jeweils nur genau ein Signal von den
Dateneingängen an den Ausgang weitergeschaltet wird.
Demultiplexer haben die Aufgabe, ein Signal wahlweise auf verschiedene Leitungen
zu übertragen. Zur Steuerung von n Ausgangssignalen benötigen wir log 2 (n)
Kontrollsignale. Bei 8 Ausgängen benötigt man also 3 Steuersignale. Es wird im
Regelfall immer nur genau ein Ausgang (1 aus n) aktiviert. Die folgende Skizze gibt
die Struktur ohne die Steuersignale wieder:
Y1
Y2
Y3
Y4
X
1
Y5
Y6
Demultiplexer
Y7
Y8
41
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Arrays stellen einen weiteren Typ von Schaltnetzen dar. Zu diesen Arrays gehören
die „Read -only- memories“ (ROMs) oder auch die „Programmable Logic Arrays“
(PLAs). Bei diesen Bausteinen werden Schalter (Transistoren) in einem Feld so
plaziert, daß eine festdefinierte Funktion realisiert wird. Als Beispiel für ein PLA sei
seine Struktur angegeben:
AND
x1
OR
xn
y1
ym
evtl.
Rückkopplung
PLA
Ein PLA teilt sich in zwei Bereiche auf, den AND - Bereich und den ODER - Bereich.
Ausgehende von einer DNF werden im ersten Schritt UND - Verknüpfungen
geschaltet und im anschließenden Schritt die einzelnen Terme der Disjunktion
„geodert“. Ein PLA ist im Normalfall über seine Ein- und Ausgänge nicht
rückgekoppelt. Daher kann es in diesem Falle als kombinatorische Schaltung oder
als Schaltnetz bezeichnet werden.
Achtung: Sobald man mindestens einen Ausgang auf den Eingang desselben PLA
rückkoppelt, ist die Bedingung für Schaltnetze nicht mehr erfüllt. In diesem Fall wird
dann häufig ein Taktpuls eingeführt: nun haben wir es mit einer sequentiellen
Schaltung, einem Schaltwerk zu tun.
42
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Schaltwerke
Fügt man einem Schaltnetz Rückkopplungen und/oder Speicherelemente hinzu, so
erhält man ein Schaltwerk. Schaltwerke repräsentieren sogenannte sequentielle
Schaltungen. In der Darstellung ihrer Funktion durch Graphen sind diese
Rückkopplungen durch gerichtete Zykel gekennzeichnet. Wir unterscheiden
synchrone und asynchrone Schaltwerke. Synchrone Schaltwerke werden durch
einen zentralen Takt gesteuert; asynchrone Schaltwerke enthalten z.B. lediglich
Rückkopplungen. Ein solches Schaltwerk erhalten wir, wenn wir ein NAND Gatter
vom Ausgang zu einem der beiden Eingänge rückkoppeln.
Im Gegensatz zu den kombinatorischen Schaltungen (Schaltnetzen) sehen wir hier
sehr schnell, daß der Ausgang nicht unabhängig vom Ausgang der vorhergehenden
Belegung ist. Wir müssen also bei sequentiellen Schaltungen das Zeitverhalten der
Bauelemente in die Berechnung mit einbeziehen. Man kennzeichnet diese Tatsache
durch den Index t oder durch Schreiben als Funktion, z.B. y = f(xt).
xt
&
f(xt)
Rückkopplung am Beispiel eines NAND Gatters
Für die Wertetabelle des rückgekoppelten NAND Gatters gilt dann:
x
ft+t
ft+t+t
ft+t+t+t
0
..1..
..1..
..1..
..1..
.ft
ft
.ft
Wie man leicht sieht, schwingt das Gatter in dem Takt, den die Signaldurchlaufszeit
des Gatters bestimmt. Dabei ist, wie wir schon wissen, die Durchlaufszeit nicht
konstant, sondern durch Parameter wie Alterung, Temperatur und Widerstand der
Verbindungsleitungen unter den Komponenten bestimmt.
Eine weitere einfache Schaltung bildet die „bistabile“ Kippstufe. Sie kann aus NAND
aber auch aus ODER Gattern aufgebaut werden.
43
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Qt+t = xt  P
&
xt
Wie wir aus den
Vorbemerkungen
Pt+t = yt Qt
yt
&
oben folgern können,
schalten die beiden
Gatter nicht gleich
schnell. Bezeichnen
wir mit Q und P die durchschnittlichen Verzögerungen der beiden Gatter. Dann
definieren wir mit t = max(Q,P).
Das Zeitverhalten dieser Schaltung hängt offensichtlich davon ab, welches Gatter
schneller schaltet. Gilt Q  P, dann schaltet das Gatter mit dem Ausgang P
schneller. Nachdem zuerst P einen neuen Wert erhält und dann Q, wird nach der
Zeit t das Gesamt-Gatter in den stabilen Zustand zurückgekehrt sein.
Qt+t =xt Pt+t
Pt+2t=ytQt+t
Qt+2t=xtPt+2t
xt
yt
..0
0
1
1
1
1
..0
1
Qt
1
0
1
1
0
1
0
1
0
1
1
Qt
Qt
Qt
Qt
Pt+t =yt Qt


Wie man direkt aus der Tabelle ablesen kann, werden nach der Zeit t+2t für die
Eingabewerte 00, 01 und 10 stabile Werte für Q erreicht. Analoge Ergebnisse
erhalten wir, wenn wir die Tabelle für den Fall, daß P  Q gilt, aufstellen.
Wir erhalten also eine „Kippstufe“, die zwei stabile Zustände unterscheidet.
xt
yt
Pt+2t
Qt+2t
0
1
0
1
1
0
1
0
Zustände der bistabilen Kippstufe
Für Eingaben mit xt  yt folgt unabhängig
von der Schaltreihenfolge der Gatter ein
eindeutiges Ergebnis mit Pt+2t  Qt+2t.
Solange die Bedingung P  Q gilt, ist die
Eingabe der Werte xt = yt = 1
unproblematisch. Der gespeicherte Wert
Qt+2t = Qt oder Pt als auch Pt+2t =Pt oder
Qt bleiben erhalten. Damit kann diese
Eingangsbelegung als Lesesignal genutzt
werden.
44
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Wird die Eingangsbelegung x = y = 0 gewählt, so erhalten wir an den Ausgängen
Pt+2t und Qt+2 eine 1. Damit ist die Belegung P  Q jedoch nicht mehr erfüllt. In
diesem Fall hängt der Zustand nach einer neuen Eingangsbelegung von der
Verzögerung der beiden NAND Gatter ab. Dieses Verhalten ist unerwünscht; daher
wird die Eingangsbelegung x = y = 0 verboten.
Pt+2t
Qt+2t
(0)
(1)
(1)
0
1
0
1
1
0
1
0
1
1
Qt
Qt
xt
yt
(0)
Zusammenfassung:
Die bistabile Kippstufe kann für Pt  Qt einen binären Wert Qt speichern. Legt man
an die Eingänge den Wert xt = yt = 1 an, kann man nach der Zeit t+2t diesen Wert
wieder auslesen. Die Werte P = 0 und Q = 1 können mit der Eingangsbelegung x t = 0
und yt = 1 in die Kippstufe eingeschrieben werden. Die Werte P = 1 und Q = 0
können mittels der Eingangsbelegung xt = 1 und yt = 0 in die Kippstufe
eingeschrieben werden. Die Eingangsbelegung xt = yt = 0 ist unzulässig.
In der Praxis kann man in der Regel nicht sicherstellen, daß die Eingangsbelegung
an der Kippstufe nicht auftritt. (Gefahr von sogenannten Hazards). Um diesem
Problem vorzubeugen, führen wir die Taktung ein. Sie garantiert, daß die
Eingangswerte nur dann zu einer Zustandsänderung in der Kippstufe führen können,
wenn die Signale stabil anliegen. Diese Forderung wird durch die Einführung eines
Taktsignals erfüllt. Nur dann, wenn das Taktsignal aktiv an der Kippstufe anliegt,
können die Eingangssignale zu Zustandsänderungen führen.
RS- Flipflop
Wir sind damit zu den synchronen, den synchronen, sequentiellen Schaltungen
gelangt und nennen diesen Typ einer getakteten Kippstufe RS-Flip-Flop. RS-FlipFlops werden in der Digitaltechnik als digitale 1 Bit -Speicherelemente verwendet.
Ein RS- Flip-Flop sieht in der Gatterdarstellung wie folgt aus:
45
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
xt= S T
St
&
&
Qt+2t
&
Pt+2t
Takt
&
yt = R T
Rt
RS - Flip-Flop
Nach obigem Plan gilt:
Qt+2t = xt  ytQt,
Dann ergibt durch Einsetzen von:
xt = T  St
yt = T  Rt und
Qt+2t = T  (St  RtQt) TQt
Das RS-Flip-Flop schaltet also nur bei T = 1 (Eingabe eines Taktsignals). Während
T aktiv ist, kann man das Schaltverhalten wie folgt beschreiben:
Qt+2t = St RtQt
Pt+2t = St (Rt Qt) = Qt+2t
Damit kann die Wahrheitstabelle für das RS - Flip-Flop wie folgt aufgeschrieben
werden:
46
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Mit der Einschränkung , die
beiden Eingänge des FlipSt
Rt
Qt+2t = St RtQt
Flop mit 1 zu belegen, ist
ein wesentliches Defizit
gegeben. Möchte man
Qt
0
0
dennoch RS - Flip-Flops
0
einsetzen, so muß man
0
1
darauf achten, daß diese
1
1
0
„verbotene“ Belegung nicht
auftreten kann. Das D.....
1
1
Flip-Flop garantiert eine
Eingangsbelegung, die zu
jedem Zeitpunkt während
RS - Flip-Flop
einer aktiven Taktphase R
= S setzt. Dazu gibt das
D-Flip-Flop das Eingangssignal jeweils um einen Takt verzögert weiter. Der Nachteil
des D -Flip-Flops ist, daß es bei jedem Takt neu geladen wird. Die
Informationsspeicherung über mehrere Taktphasen hinweg ist - wie beim RS - FlipFlop nicht möglich. Der Unterschied des D - Flip-Flop in der Schaltung besteht
einfach darin , den R(eset) Eingang beim RS - Flip-Flop „aktiv Low“ auszulegen.
JK-Flipflop
Eine andere Erweiterung des RS- Flip-Flop besteht darin, die Schaltung so
auszulegen, daß bei einer Eingangsbelegung von R = 1 und S = 1 kein undefinierter
Ausgang zu erwarten ist, sondern der Zustand aus dem vorhergehenden Takt
komplementiert wird. Diesen Typ nennt man JK - Flip-Flop. Seine Struktur sieht wie
folgt aus:
J
&
S
Takt
T
K
R
&
47
Q
Q
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Für die Wahrheitstabelle ergibt sich:
J
K
Qt
0
0
0
0
0
0
Qt+t
S
R
0
0
-
Zustand lesen
1
1
-
0
Zustand lesen
1
0
0
0
-
Zustand löschen
0
1
1
0
0
1
Zustand löschen
1
0
0
1
1
0
Zustand setzen
1
0
1
1
-
0
Zustand setzen
1
1
0
1
1
0
Komplementieren
1
1
1
0
0
1
Komplementieren
JK - Master – Slave Flipflop
K
J
Qt+t
0
0
Qt
0
1
0
1
0
1
1
1
Qt
Ein weiterer Flip-Flop Typ, der häufig
Verwendung findet, ist das Master - Slave
Flip-Flop. Hierbei wird die an den
Eingängen in einem ersten Taktschritt in den
„Master“ übernommen und in einem zweiten
Schritt in den „Sklave“ übernommen.
Dadurch ergibt sich jeweils eine
Verzögerung von einer Takt- Halbperiode,
ehe die übernommene Information an dem
Ausgang erscheint.
Durch das Taktsignal wird der
„Steuerspeicher“ geladen (der Master),
durch das invertierte Taktsignal wird die am
Masterausgang liegende Information dann in den „Hauptspeicher“ (Slave)
übernommen. Der Vorteil dieses Typ liegt darin, daß das Flip-Flop noch ausgelesen
werden kann, während der Master bereits wieder geladen wird. Legt man beide
Eingänge J und K auf 1, so ergibt sich ein Frequenzteiler (T/2). Diese Betriebsart
wird Trigger - Flip-Flop genannt und findet in Zählern häufig Verwendung (z.B.
48
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Digitale Uhr). Zum Setzen eines definierten Grundzustandes werden häufig
sogenannte „Clear“ oder „Reset“ Eingänge an den Flip-Flops bereitgestellt.
J
&
T
K
S
J
T
T
&
R
Q
T
K
Q
JK - Master – Slave – Flipflop
Register:
Setzt man mehrere solche Flip-Flops in Reihe, so erhält man Mehrbit -„Register“;
diese Funktionseinheiten kann man dann als kleinere Speicher verwenden oder bei
entsprechender Beschaltung als sogenannte Schieberegister verwenden. Wir
unterscheiden Serien Schieberegister und Parallele Schieberegister. Bei den
seriellen Schieberegistern wird die Information an einem Eingang eingespeist und
dann mit jedem folgenden Takt um eine Stelle in dem Register weiter
durchgeschoben. Bei den parallelen Schieberegistern kann eine Anfangsbelegung
parallel auf allen Stellen besetzt werden. Wir unterscheiden Links- und RechtsSchiebeoperationen (Shift - Operationen). Damit werden wir in Lage versetzt
Multiplikationen oder Divisionen durch 2 auf sehr einfache Weise durchzuführen.
49
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
x0
x1
x2
x3
x4
x5
x6
x7
Ser/Par
CLK
8 Bit Schieberegister
Clear
Din
y0
y1
y2
y3
y4
y5
y6
y7
Wie in der obigen Skizze angedeutet, lassen sich mittels Kopplungen z.B. mehrerer
D-Flip-Flops Register aufbauen, die z.B. 8 Bit speichern können. Eine wichtige Art
von Registern sind die Schieberegister (Shift-register). Sie dienen dazu,
Informationen bitweise einzulesen bzw. auszulesen und zu verschieben. Man
unterscheidet den Links- bzw. den Rechtsshift. Damit wird eine sehr einfache
Multiplizier bzw. Dividieroperation (mit 2) möglich. Der oben dargestellte Block
enthält jeweils 8 Ein- und Ausgänge, einen Takteingang, einen seriellen Eingang Din,
einen Rücksetzeingang (Clear) und einen Steuerungseingang für die Arbeitsmodi
seriell bzw parallel. Schiebt man eine Information, die man an dem Eingang Din
angelegt hatte, mit 8 Takten durch, so kann man diese Information dann am
Ausgang y7 ablesen. Dieser Arbeitsmodus ist nicht mit einem Kellerspeicher zu
verwechseln. Ein Kellerspeicherprinzip wäre gegeben, wenn sich das Register wie
eine Röhre mit einem verschlossenen Ausgang verhalten würde. Diese Arbeitsweise
kann man natürlich dann erreichen, wenn man die Möglichkeit der Links- und
Rechtsshifts geeignet ausnutzt.
Register dienen als Speicherelemente für „relativ“ kleine Datenmengen; Größen von
etwa 64 kBit bilden hierbei schon die Ausnahme. Allerdings sind die
Halbleiterspeicher in der Regel sehr schnell und lassen daher für Aufgaben wie
schnelle Zwischenspeicherungen (Caches) sehr gut verwenden. Je nach
Anforderung an die Schaltzeiten werden verschiedene Technologien eingesetzt. Zu
nennen sind die Bipolar - Technologie, die ECL Technologie und die gewöhnlich
verwendete MOS Technologie. Die MOS Technologie hat in den vergangenen
Jahren hervorragende Verbesserungen erlebt und ist heute durchaus geeignet,
auch schnelle Schaltvorgänge zu bewerkstelligen (Inverser etwa 1ns, auch
schneller.) Zudem haben die MOS Schaltkreise den Vorteil des geringen
Leistungsverbrauchs. Kühlung wird hier zum sekundären Problem.
50
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Automaten
Endliche Automaten
Rechner stellen einen Typ von Automat dar. Sie besitzen eine endliche Zahl von
Zuständen, die vorherbestimmbar sind. Damit zeigen sie deterministisches
Verhalten. Neben vielen anderen Beispielen von Automaten (Kaugummi, Zigaretten,
Schokolade, etc.) stellen die Rechner ein besonders komplexes Beispiel dafür dar.
Allen Automaten ist gemeinsam:
 man wirft was ein (Eingabe)
 aufgrund des Einwurfs reagiert der Automat mit dem gewünschten Verhalten
(hoffentlich)
 der Automat gibt ein Ergebnis aus.
Dieses Vorgehen kann man auf eine formale Ebene heben, um das Verhalten von
Automaten allgemein darzustellen und sich nicht auf einen speziellen Typ
einschränken zu müssen.
Wir definieren also:
Ein Automat ist beschreibbar durch ein Quintupel A = ( X,Y,Z,,) mit
X: endliche Menge von Eingabesymbolen (Eingabealphabet)
Y:endliche Menge von Ausgabesymbolen (Ausgabealphabet)
Z: endliche Menge von Zuständen und Abbildungen
: Z  X  Z (Zustandsüberführungsfunktion) und
: Z  X  Y. (Ausgabefunktion)
Die Arbeitsweise eines Automaten können wir - in Anlehnung an unser Verständnis
über Rechner - wie folgt darstellen:
51
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Eingabe u  X*
x1
xi
xn
Automat A im Zustand z  Z
Automat A im Zustand zZ
y1
yi
yn
Ausgabe v  Y*
Automat
Der obige Automat verfügt über einen Lesekopf und einen Schreibkopf, deren
Positionen sich jeweils wohl definiert relativ zum Eingabe und Ausgabeband
befinden. Der Automat befindet sich jeweils in einem Zustand z  Z, der die
jeweilige Vergangenheit speichert.
Eingegeben werden Wörter u  X*. In einem Schritt liest der Automat entsprechend
der Position des Eingabebandes ein x X und festgelegt durch die
Transitionsfunktion  ändert er seinen Zustand und schreibt gemäß der Position des
Ausgabebandes ein y  Y gemäß der Ausgabefunktion . Danach werden Ein - und
Ausgabeband eine Position nach links bewegt. Der Automat reagiert auf jedes x  X
und z  Z, d.h. er ist vollständig; für ein (z,x)  Z  X reagiert er immer gleich, . h. er
ist determiniert.
Als Beispiel wählen wir X =  x1,x2,....,xp, Y = y1,y2,....ym, Z =  z1,z2,...,zn, a  .
Wir definieren  durch die Matrix D = (dij)n,k. mit dij =  (zi,xj) und  durch eine Matrix
L = (lij)n,k. mit lij = (zi, xj).
 2
 0
 
 
. 
. 
Sei nun X = 1, Y = 0,1, Z = 1,...,a, D   .  und L   . 
 
 
 a
 0
 
 
1 
 1
52
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Der so definierte Automat zählt in seinen Zuständen modulo a. Wird für den
Anfangszustand z = 1 u X* mit l(u) = r eingegeben, so gibt der Automat 0...0 1
0....0 1 0....0 1 0... aus
Die Matrizen D und L faßt man zu der sogenannten Automatentafel zusammen.
Sei a = 4; dann folgt für die Automatentafel:
XY
1
1
(2,0)
2
(3,0)
3
(a-1,0)
a
(a,1)
Um das Verhalten eines Automaten vollständig beschreiben zu können, erweitern wir
 zu einer Abbildung Z  X*  Z und  zu einer Abbildung Z  X*  Y*.
Sei nun A = (X,Y,Z ,) wieder ein Automat. Dann werden * und *
folgendermaßen definiert:
* (z,) =def z für alle z  Z
* (z,u,x) =def  ( * (z,u), x) für alle x  X, u  X*, z  Z und
* (z,) = def  für alle z  Z
* (z,u,x) = def * (z,u)  (* (z,u),x) für alle x  X, u  X*, z  Z.
Satz:
Sei A = ( X,Y,Z,,). Für alle z  Z und u,v  X* gilt dann:
* (z, uv) = * (*(z,u),v) und
* (z,uv) = * (z,u) * (*(z,u), v)
Der Beweis wird durch Induktion über l(v) geführt:
Für l(v) = 0:
* (z,u) = * (z,u) = * (* (z,u), )
* (z, u) = * (z,u) = * (z,u) = * (z,u) *(*(z,u),)
für l(v) = 1:
siehe Definitionen zu *
für l(v)  1 : v = v´ x mit x  X
* (z,uv) =
* (z,uv´x) = Def. zu *  ( * ( z, uv´), x) =
 (*(* (z,u), v´) , x) = def zu *
*(*(z,u), v´x) = * (*(z,u),v) 
53
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Ein anderes Beschreibungsmittel bildet der Zustandsgraph des Automaten:
Sei M eine endliche Menge und R eine zweistellige Relation in M. Dann heißt G =
(M,R) ein gerichteter Graph mit der Knotenmenge M und der Menge der gerichteten
Kanten R.
Eine Folge k1, k2, k3, ...., kr von Elementen aus M mit r  1 heißt Weg in G von k1
nach kr  Def ( i  1,...,r-1)((ki, ki+1)  R)
Ein Weg k1, ,kr in G mit k1,...,kr heißt Zyklus des Graphen G; r-1 heißt Länge des
Weges k1,...kr.
Ist G(M,R) ein gerichteter Graph, so bezeichnet man die Knoten als Punkte und die
Kanten als (a,b)  R als Pfeile von a nach b.
Sei nun A = (X,Y,Z, ,  ) ein Automat. Dann wird der Zustandsgraph wie folgt
definiert:
M = def Z
R =def (a,b) (a,b)  Z  Z  ( x  X)(  (a,x) = b)
Gilt nun (a,b)  R für G A = (M,R), so notieren wir an a ---- b x i1 /y1i, ..., xis / yis,
wenn für alle j   1,....,s gilt:
 (a, xij) = b und
 (a, xij) = yij
 1/b

Beispiel: Seien X = 0,1, Y = a,b, Z = 0,1,2 und D/L sei  2 / a

 2/ a
54
2 /b
2/a
1/b





datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Für diesen definierten Automaten GA gilt dann der folgende Graph:
0
1/b
0/b
0/a
1/b
2
2
0/a, 1/a
1
2
Zustandsgraph eines Automaten
Das Rechenwerk
Rechner – Arithmetik
Das Rechenwerk hat die Aufgabe, arithmetische als auch logische Operationen
durchzuführen und die notwendige „Infrastruktur“, die zur Ausführung notwendig ist,
bereitzustellen. Dazu gehören z.B. die Operandenregister und ein Zielregister, in
dem das Ergebnis einer Operation festgehalten (zwischengespeichert) werden
kann.
Heutige Mikroprozessoren bedienen sich arithmetischer Verfahren, die der ANSIIEEE 754 entsprechen und dadurch die Arithmetik untereinander kompatibel
machen.
Um Rechenoperationen durchführen zu können, müssen wir uns auf eine geeignete
Zahlendarstellung einigen.
Wir sind gewohnt, im Dezimalsystem zu denken und zu rechnen. Es zeigt sich aber,
daß es wesentlich einfacher ist, Module basierend auf zwei verschiedenen Ziffern
aufzubauen, als auf solchen, die zwischen zehn verschiedenen Ziffern zu
unterscheiden haben. Eine Realisierung kann entweder durch einen mechanischen
Schalter, einen Transistor, einen hydromechanischen Schaltkreis erfolgen. Zudem
wird eine eventuelle Fehlersuche dadurch einfacher, da man auch hier nur unter
zwei verschiedenen Symbolen zu unterscheiden hat.
Zur Beschreibung zweiwertig dargestellter Information stehen logische und
mathematische Hilfsmittel zur Verfügung:
55
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
 die formale Logik, die sämtliche Aussagen in zweiwertiger Logik macht. (tertium
non datur)
 die Boolsche Algebra über einer Menge von 2 Elementen, die z.B. die
Konstruktion minimaler Funktionen unterstützt.
 die Automaten, welche in der Lage sind, auch analoge Werte zu verarbeiten,
indem sie jeweils eine passende Konvertierung durchführen.
Polyadische Zahlensysteme:
Ist eine Zahl X nach Potenzen einer Basis B zerlegbar, so wird dieses Zahlensystem
B-adisches Zahlensystem genannt. Es versteht sich bei der Beschränktheit von
Stellen in einem Rechner von selbst, daß diese Zahlendarstellungen immer
natürliche Zahlen beschreiben oder endliche Brüche darstellen. Eine natürliche Zahl
läßt sich durch folgende Summe darstellen:
N
n   bi  Bi
i0
wobei
B Basis des Zahlensystems B  N, B  2 und
bi Ziffern (bi  N  0 , 0  bi  B) genannt werden.
Bei B = 10 sprechen wir vom Dezimalsystem, bei B = 2 vom Dualsystem.
In den Darstellungen wollen wir uns auf vier Stellen beschränken: Es gilt folgende
Zuordnung:
Dezimal
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Binär
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
Neben dem Dualsystem sind das Oktalsystem (Basis 8) und das
Hexadezimalsystem (Basis 16) von besonderer Bedeutung bei Rechenautomaten.
56
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Endliche Brüche werden entsprechend dargestellt. Hierbei gilt:
N
x   bi B i
M
und
x = ( bN bN-1 bN-2....b0, b-1.... b-M
Nichtpolyadische Zahlensysteme
Während die Zeitrechnung (Tag, Stunde, Sekunde, etc.) oder die Währungen
gemischt polyadische Systeme darstellen, stellt das sogenannte Restklassensystem
ein völlig anderes Prinzip dar.
Ein Restklassensystem RKN der Ordnung N wird durch N natürliche Zahlen Pi
(i=1,2,....,N), die zueinander paarweise prim sind, definiert. Eine natürliche Zahl n
wird dementsprechend dargestellt durch N Ziffern zi (i=1,2,...,N), die durch folgende
Kongruenzen definiert sind, dargestellt:
n  zi mod pi
(i = 1,2,...,N)
N
Mit RKN ist in dem endlichen Zahlenbereich 0  n   p i eine eindeutige
i 1
Zahlendarstellung möglich.
Beispiel: RK2 mit p1 = 5, p2 = 7
Die größte darstellbare Zahl ist hier ( 5 * 7) -1 = 34
Die Zahl (29)10 hat in diesem System die Darstellung (41) RK2
weil: 29 / 5 = 4 mod 5
29 / 7 = 1 mod 7
ist.
Es gelten folgende Kongruenzen:
n + m  zi + zi´ mod pi
n * m  zi * zi´ mod pi
mit i = 1,2,...,N
Rechenoperationen im Restklassensystem lassen sich also so durchführen, daß
man die jeweilige Operation an jeder Stelle durchführt. Es entstehen keine
Überträge, die bei der Berechnung von nachfolgenden Stellen berücksichtigt werden
müßten. Diese Vereinfachung macht sich besonders bei der Multiplikation positiv
bemerkbar. Bei der Division jedoch ist eine eindeutige Operation nicht immer
möglich; auch die Vorzeichenerkennung und die Konvertierung bereiten
Schwierigkeiten.
57
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Beispiel: RK3 mit p1 = 3; p2 = 7 ; p3 = 11
Die Zahlen n = (12) 10 und m = (17)10 seien additiv bzw. multiplikativ zu verknüpfen:
n+m: 0 + 2 mod 3 = 2 d.h. n+m = (217) RK3
5 + 3 mod 7 = 1
1 + 6 mod 11 = 7
Probe: (12)10 + (17)10 = (29)10 = (217) RK3
n * m: 0 * 2 mod 3 = 0 d.h. n * m = (016)RK3
5 * 3 mod 7 = 1
1 * 6 mod 11 = 6
Probe: (12)10 * (17)10 = (240)10 = (016)RK3
Die obige Tabelle (siehe Seite 55) läßt sich einfach auf einem Zahlenkreis
auftragen:
58
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
0000
1110
0
14
1100
0010
2
12
4
0100
6
10
8
1010
0110
1000
Die Addition
zweier
vorzeichenlosen
Zahlen kann
entsprechend in
den Kreis
eingetragen
werden. Es wird
erkennbar, falls
die Summe
größer als 1510
wird, der
entsprechende
Zählpfeil „eine
neue Runde“ im
Zahlenkreis
beginnt.
Zahlenkreis (B Komplement)
0000
1110
0
-2
1100
0010
2
-4
4
0100
Zur Darstellung
negativer Zahlen
6
im B-8
0110
1010
Komplement
wird der
1000
Zahlenkreis so
aufgeteilt, wie es
in der
Zahlenkreis mit Zuordnung von Binärzahlen
untenstehenden
zu positiven und negativen Dezimalzahlen
Skizze
erkennbar ist.
Dabei werden die Binärzahlen, die an der höchstwertigen Stelle eine Eins
aufweisen, als negative Zahlen interpretiert.
-6
59
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Beispiele: (B-Komplement Darstellung)
Addition zweier Zahlen:
0110
0111
(6)
(7)
1101
(13)
1100
0111
(12)
(7)
0011
(19)
(kein Übertrag)
(Übertrag!)
Addition von Zahlen mit ungleichem Vorzeichen:
1010
0100
(-6)
(+4)
1110
(-2)
1100
0111
(-4)
(+7)
0011
(+3)
(Überlauf: nein; Übertrag: nein)
(Überlauf: nein; Übertrag: ja)
Addition zweier positiver Zahlen:
0100
0010
(+4)
(+2)
0110
(+6)
0110
0111
(+6)
(+7)
1101
(13)
(Überlauf: nein; Übertrag: nein)
(Überlauf: ja; Übertrag: nein)
60
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Arithmetisch logische Einheit (ALU)
Die Arithmetisch Logische Einheit führt arithmetische und logische Operationen
durch. Typische arithmetische Operationen sind die Addition, die Subtraktion, die
Multiplikation und die Division. Alle Operationen lassen sich auf die Addition
zurückführen. Somit kommt der Addition eine besondere Bedeutung zu. Wir wollen
uns deshalb hier auf die Addition zweier dualer Zahlen beschränken. Schaltungen,
die diese Operationen ausführen, heißen Addierer.
Bei der Addition von n Dualzahlen gibt es 2n Ergebnisse. Hinzu kommen die evtl.
Überträge.
Folgende Tabelle soll dies deutlich machen:
ai plus bi
0 plus 0
0 plus 1
1 plus 0
1 plus 1
Summe
si
0
1
1
0
Übertrag
ci+1
0
0
0
1
Wie wir sehen, entsteht eine Summe und im letzten Fall auch ein Übertrag (Carry).
Die Summe wird immer genau dann „1“, wenn an den Eingängen ungleiche Werte
anliegen. Wir sprechen in diesem Fall von „Antivalenz“. Für die Funktionsgleichung
in disjunktiver Normalform ergibt sich:
si = ai  bi = (ai bi  aibi) = ( ai  bi)  (ai  bi)
(EXOR, Antivalenz)
ci+1 = aibi = ai  bi
(AND)
Definition:
Ein Schaltnetz, welches zwei einstellige Dualzahlen (wie oben dargestellt) addiert,
nennt man Halbaddierer.
Im folgenden wird die Logik für einen Halbaddierer (HA) angegeben:
61
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
a
b
=1
S
C
&
Definition:
Ein Schaltnetz mit drei Eingängen (2 zu addierende Variablen, 1 Übertragsbit) und „
Ausgängen (1 Summenbit, 1 Übertragsbit) nennen wir Volladdierer.
Mit Hilfe der Wahrheitstafel für den Volladdierer, in der zu 2 einstelligen Zahlen a i, bi
noch der Übertrag ci (aus der vorhergehenden Stufe) addiert wird, läßt sich die
zugehörige DNF ableiten:
si = ai bi ci  ai bi ci  aibi ci  ai bi ci bzw.
ci+1 = ai bi ci  ai bi ci  ai bici  ai bi ci
Die Aufgaben eines Rechenwerkes können in drei Aufgabenklassen unterteilt
werden:
1. Arithmetische Operationen
2. Logische Operationen
3. Schiebeoperationen
4. Vergleichsoperationen
Eine einfache ALU
Ergebnisse arithmetischer, logischer, von Verschiebe- oder Vergleichsoperationen
werden in einem Statusregister angezeigt. Es erzeugt bei einer n-stelligen ALU aus
dem Ergebnis s1,....sn und den Überträgen cn und cn+1 folgende Anzeigen:
62
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
xn
xn-1
x1
yn yn-1
y1
cn
a
b
c
d
=1
ALU
cn+1
C
N
Z
V
1
sn
sn-1
s0
Beispiel einer Statusregister Konfiguration
 Übertragsbit C = cn+1 der n-ten ALU-Zelle (CARRY). Es zeigt an, ob eine
arithmetische Operation ein Übertragsbit erzeugt hat.
 Vorzeichenbit N = sn. Es zeigt bei N=1 ein Minuszeichen an.
 Nullbit Z = s1   sn. .Es zeigt an, ob das Ergebnis aus lauter Nullen besteht.
 Überlaufbit V = cn  cn+1 für Zweier-Komplemente B-Komplement-Darstellung). Es
berechnet aus beiden Überlaufbits cn und cn+1 die Überlaufbedingung (Overflow).
Das Statusregister erlaubt den Vergleich von Eingaben x und y. Der Vergleich wird
als Subtraktion zweier Zahlen durchgeführt. Das Ergebnis wird nicht gespeichert.
Das Vergleichsergebnis steht im Statusregister an den Stellen C, Z, N und V.
Geht man von vorzeichenlosen Binärzahlen x und y aus und subtrahiert diese
voneinander, d.h. x-y,, dann wird genau dann Z=1 gesetzt, wenn x-y = 0 wird, d.h.
X=Y gilt. Wenn wir die Subtraktion mit den Ansteuersignalen ab und c
durchführen, dann wird die Operation im Einerkomplement, d.h. x + 2 n-1-y
durchgeführt. Daraus folgt dann sofort, daß C=1 wird, falls xy ist bzw. C=0, falls x 
y gilt. Bei der Subtraktion im Zweierkomplement, d.h. falls das Steuersignal c = 1
gilt, können wir aus Z=1 x = y folgern. Aus N = 0 ohne Überlauf V folgt x y wegen
63
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
des positiven Resultats. Das gleiche gilt bei V = 1 mit dem dadurch geänderten
negativen Vorzeichen N = 1. Aus N = V kann man also x  y folgern. Ein negatives
Vorzeichen N = 1 ohne Überlauf, ebenso wie ein positives Vorzeichen mit Überlauf
bedeutet hingegen x  y. Die folgende Tabelle faßt diese Folgerungen nochmals
zusammen:
Relation
Vorzeichenlose
Zahl
Zweierkomplement
x=y
Z=1
Z
Z=1
Z
xy
Z=0
Z
Z=0
Z
xy
C=1
C
N=V
NV
xy
C=0
C
NV
NV
xy
C = 1 und Z = 0
CZ
N = V und Z = 0
CZ
xy
C = 0 oder Z = 1
C + Z
N  V oder Z = 1
(N V) + Z
Wie wir gesehen haben, werden in einer Arithmetisch - Logischen Einheit mit Hilfe
von Steuersignalen Operationen durchgeführt, die Auswirkungen auf die Daten
haben, die im Rechner verarbeitet werden sollen, als auch auf die Daten, die für den
Ablauf der gewünschten Operationen verantwortlich sind. Die Adreßrechnung ist
hierbei besonders hervorzuheben. Die Steuersignale, die damit auf der untersten
Ebene den Zustand der Hardware bestimmen, werden durch Taktsignale aktiviert.
Diese Taktsignale werden parallel generiert; damit werden zeitgleich mehrere
Operationen angestoßen. Jeder einzelne Steuerschritt wird durch ein Steuerwort
beschrieben, welches die Steuersignale für genau diesen Steuerschritt enthält. Wie
wir bereits wissen, werden zur Codierung verschiedene Ebenen benutzt: wir kennen
Hochsprachen wie FORTRAN, C oder PASCAL, in denen der Benutzer sein Problem
auf einer sehr abstrakten Weise definiert. ASSEMBLER als Maschinensprache liegt
schon „viel näher“ an der Hardware, als z. B. eine Hochsprache, in der nicht
einzelne Register explizit angesprochen werden. Die Steuersignale für eine ALU z.B.
benötigen aber genaue Information darüber, welche Register als Quelle dienen,
welche Steuersignale bei einer „ADD“ Operation aktiviert werden müssen und
welche Zielregister bei einem bestimmten Befehl addressiert werden sollen. Diese
Informationen sind im Steuerwort enthalten. Steuerworte sind Teil der sogenannten
mikroprogrammierten Steuerung, die bei den meisten Rechnern fest über ROM o. ä.
vorgegeben ist. Manche Rechner erlauben die Mikroprogrammierung. Hier kann
also ein völlig neuer Befehlssatz für den Rechner kreiert werden. Im allgemeinen
aber sind die Rechner, wie wir aus dem Bereich der Mikroprozessoren wissen, aus
gutem Grund nicht mikroprogrammierbar. Die Steuerworte mikroprogrammierbarer
Rechner sind meist lang; sie verfügen über eine Länge von bis zu 100 Bit. (VAX
11/780 hat 99 Bit)
64
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Eine mögliche Zentraleinheit:
Außer der eigentlichen Recheneinheit benötigen wir für die sogenannte
Zentraleinheit (Central Processing Unit, CPU)
 eine programmierbaren Hauptspeicherzugriff,
 eine Steuerung zur Verarbeitung der gespeicherten Programmbefehle und
 die Steuerung der Ein- und Ausgabe
Der Hauptspeicher, der meist als dynamischer Speicher ausgelegt ist, ist
gewöhnlich byteadressiert. Im Regelfall werden Speicherworte ausgelesen. Dazu
muß eine Adresse bereitgestellt werden. Diese Adresse steht im
Speicheradreßregister (SAR), welches im allgemeinen ein Speicherwort
zwischenspeichern kann. Die Daten, die eingelesen oder ausgelesen werden,
werden im Speicherdatenregister (SDR) zwischengespeichert. Die Länge des
Speicheradreßregisters entspricht dem logisch adressierbaren
Hauptspeicheradreßbereich. Demgegenüber steht der physikalisch adressierbare
Bereich.
Die Steuerung zur Speicherung der gespeicherten Programmbefehle wird durch
Maschinenbefehle, die in ihrer Gesamtheit ein Maschinenprogramm darstellen,
bewerkstelligt. Auf dieses und die darunter liegende Mikroprogrammierung wird
später noch näher eingegangen.
Zum Zugriff auf die Ein- und Ausgabegeräte wird jedem Gerät eine bestimmte
Speicheradresse zugewiesen, auf der die Adresse und die Größe des Bereiches
vermerkt ist, der z.B. ausgelesen werden soll. Für die Programmierung
unterscheidet sich dieser Zugriff auf die I/O Einheiten nicht vom Speicherzugriff.
(memory mapped I/O).
Wie wir bereits wissen, unterscheiden wir Programmiersprachen, die auf
verschiedenen Ebenen des Rechners wirken:
1. Hochsprachen, wie FORTRAN, ALGOL, COBOL, PASCAL, C, SMALLTALK etc.
2. Maschinensprachen, z.B. die ASSEMBLER
3. die Mikroprogrammierung (Nanoprogrammierung), die für die einzelnen
Rechenanlagen sehr spezifisch sind und meist für den Benutzer nicht mehr
zugänglich ist.
Die oben angegebenen Hochsprachen werden durch Übersetzer (Compiler) in
maschinenverständliche Form gebracht. Wie wir auch bereits wissen, ist die
Programmierung mit Maschinensprachen wie ASSEMBLER , weil sie näher an der
eigentlichen Struktur des Rechners liegt, meist wesentlich aufwendiger, dafür aber
auch in der Ausführung merklich flinker. Aus diesen Gründen werden bestimmte
Teile von Programmen, bei denen es auf die schnelle Ausführung ankommt, häufig
in ASSEMBLER programmiert.
65
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Die noch hardwarenähere Form der Programmierung ist die Mikroprogrammierung.
Mit ihr können neue Befehlsstrukturen wie ASSEMBLER Sprachen definiert werden.
Diese Programmierung ist sehr aufwendig, fehleranfällig und wird deshalb dem
Programmierer bei den gängigen Maschinen überhaupt nicht zur Verfügung gestellt.
Noch darunter, d.h. noch näher an der Hardware liegt die Nanoprogrammierung. Ihr
Anteil liegt in der Festlegung der Prozeßabläufe auf der Ebene von PROMS etc.
Beschränken wir uns hier auf die Maschinensprachen. Ihre Programmierung erfolgt
mit den Maschinenbefehlen (z.B. ADD, SHIFT, MOVE, JUMP etc.). Diese Befehle
werden in ein ausführbares Programm umgesetzt. Das bedeutet: die
Maschinenbefehle werden interpretiert (z.B. durch ein Mikroprogramm) und als
Befehlsfolge ( Bitfolgen) im Hauptspeicher gespeichert. Die Adressen der
auszuführenden Befehle werden dabei aus dem Befehlszähler (program counter)
erhalten. Dessen Inhalt wird häufig nur inkrementiert, bei Sprüngen jedoch werden
im Befehl explizit angegebene Adressen geladen. Die aus dem Hauptspeicher
ausgelesenen Befehle (meist wortweise) werden im Befehlsregister gespeichert und
mit Hilfe des Steuerwerks in die gewünschten Steuersignale umgesetzt. Nachdem
ein Befehl ausgeführt ist, dient der neue Befehlszählerinhalt über das
Speicheradreßregister zur Adressierung des nächsten Befehls aus dem
Hauptspeicher. Über das Speicherdatenregister wird dann der neue Befehl in das
Befehlsregister geladen.
Merke:
Im Befehlsregisters steht immer ein Zeiger (pointer), der auf die Stelle zeigt,
wo der nächste auszuführende Befehl steht.
Die beschriebenen Prozesse bestehen aus folgenden Schritten:
 Hole den nächsten Befehl
 Entschlüssele den Befehl
 Führe den geholten Befehl aus
 Speichere das Ergebnis
66
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
BR
Steuerwerk
Register
Vom Hauptspeicher
SDR
Zum Hauptspeicher
SAR
ALU
BZ
Shifter
Befehlshol und -ausführzyklus in einer CPU
Hardwarebeschreibungssprachen:
Zur formalen Beschreibung der einzelnen Arbeitsschritte in einem Rechner oder
auch allgemein, in einem technischen System benötigt man wegen der rapide
ansteigenden Komplexität zunehmend Werkzeuge und Hilfsmittel. Dies gilt im
besonderen zur Synthese der Systeme.
In den vergangenen Jahren seit 1975 wurden eine große Anzahl von
Hardwarebeschreibungssprachen, bzw. Registertransfersprachen (HDL, RTL))
entwickelt, die jede für sich ihre Stärken, aber auch Schwächen aufweisen. Zu
nennen sind da im besonderen z.B. MIMOLA der Universität Kiel , KARL der
Universität Kaiserslautern, CAP der Universität Dortmund (Paderborn). RTL
beschreiben die Hardwareeigenschaften eines Systems mit Hilfe geeigneter Modelle.
Dabei beschränkt man sich z.Z. noch weitgehend auf das elektrische/elektronische
Verhalten der Schaltung. Neuere Ansätze beziehen auch mechanische,
67
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
hydraulische oder Sensorsysteme in die Beschreibung mit ein. VHDL (VHSIC
Hardware Description Language; VHSIC = Very High Speed Integrated Circuits)
wurde in den Mitachtzigern von einem amerikanischen Firmenkonsortium entwickelt
und stellt heute bereits einen „Quasistandard“ einer HDL dar. Eine weitere Methode
der Synthese von Systemen
besteht in der zeitgleichen Generierung von Hard- und Software. Man nennt diese
Verfahren auch Hardware / Software - Codesign. Diese Methode biete die
Möglichkeit, schon beim Entwurf eine Optimierung dahingehend durchzuführen, ob
man ein Problem vorzugsweise mit Hardware und/oder Software lösen sollte. Es
stellt sich bei vielen Problemen z.B. di Frage, ob man auf standardmäßige
(preiswerte) Baugruppen zurückgreift, einzelne kleinere Schaltungen entwickelt; das
Hauptproblem jedoch durch geeignete Software löst.
Wir wollen uns auf die elektronische Beschreibung beschränken. RTL gehen i.a.
nicht herunter bis auf die Transistorebene, sondern beschränken sich auf die
logischen Ebenen der Register, Busse, Leitungen und Gatter. Die Darstellung des
zeitlichen Verhaltens der Schaltung spielt eine hervorgehobene Rolle. Als kleines
Beispiel von VHDL sei ein Halbaddierer beschrieben:
Das tragende Element einer Hardware-Struktur ist das Modul (components), die
Ein- und Ausgänge (ports) und natürlich die Information in Form der Signale. Unter
components werden dabei Blöcke verschiedener Komplexität verstanden (Gatter,
Chip oder eine komplettes PCB). Signale sind über die elektrischen Verbindungen
wie Leitungen Bindeglieder zwischen zwei components. Components werden durch
die „design entity“ charakterisiert. Sie besteht aus der „entity declaration“ und dem
„architectural body“. Die „entity“ Beschreibung enthält die Charakterisierung der
Schaltung „von außen“ gesehen mit den zuvor definierten „declarations“ und dem
„body“.
X
Y
Summe
Halbaddierer
(Half_adder)
Übertrag
Die folgende Deklaration enthält zwei Input - Ports und zwei Output - Ports. Dann
kann man schreiben:
68
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
-- Entity Deklaration eines Halbaddierers
entity Half_adder is
port (
X : in Bit ;
Y : in Bit ;
Sum : out Bit ;
Carry : out Bit) ;
end Half_adder ;
Die beiden „— „ markieren einen Kommentar in VHDL.
In eienr entity declaration wird die entity selbst und jeder ihrer ports mit einem
identifier bezeichnet. Ein VHDL identifier ist eine Folge von „characters“ ohne
Leerzeichen und müssen , den folgenden Regeln genügen.
 Jeder character in der Folge ist entweder ein Buchstabe (a bis z, Groß- und/oder
Kleinschreibung), eine Ziffer (0 bis 9) oder ein Unterstrich (_).
 Das erste Zeichen der Folge muß ein Buchstabe sein.
 Die Zeichenfolge enthält keine aufeinanderfolgende Unterstriche noch darf eine
Folge mit einem Unterstrich enden.
In VHDL gibt es reservierte Worte (wie in jeder Programmiersprache auch).
Beispiele hierfür sind begin, end, entity und port ; sie werden in den
Beschreibungen immer fettgedruckt.
Der architecture body stellt den detaillierten Blick auf die beschriebene Schaltung
zur Verfügung; hier wird das Verhalten beschrieben. Das folgende Beispiel gibt den
architecture body eines „Halbaddierers“ wieder. Dies ist eine Addierschaltung, die
aus zwei Summanden eine Summe mit Übertragsbit erzeugt:
-- Der architectural body eines Halbaddierers
architecture Verhaltensbeschreibung of Half_adder is
begin
process
Summe <= X xor Y after 5 ns ;
Übertrag <= X and Y after 5 ns ;
wait on X, Y ;
end process ;
end Verhaltensbeschreibung ;
Die obige Beschreibung enthält ein process-statement, welches zwei signal
assignment statements und ein wait statement enthält. Das erste Signal,
bezeichnet mit Summe, enthält das Ergebnis der Exclusiv-Oder Verknüpfung mit
den den Eingängen X und Y nach 5 ns. Analog ist das zweite Ausgangssignal zu
betrachten.
69
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Kompatibilität der Operanden
Heutige Mikroprozessoren bedienen sich arithmetischer Verfahren, die der ANSIIEEE 754 Norm entsprechen und dadurch die Arithmetik untereinander kompatibel
machen.
Um Rechenoperationen durchführen zu können, müssen wir uns auf eine geeignete
Zahlendarstellung einigen. Es werden - basierend auf der binären Darstellung von
Zahlen - das sogenannte Zweier (B) Komplement und das Einer (B-1) Komplement
verwendet. In den Darstellungen wollen wir uns auf vier Stellen beschränken: Sei
1
 m 1
B
Statt des Exponenten e wird häufig die sogenante Charakteristik verwendet. Stehen
E-Stellen zur Darstellung des Exponenten e zur verfügung, so erhält man die
Charakteristik, indem man zum Exponenten ½ BE addiert.
Beispiel:
Sei B = 10, E = 2. Dann würde der Exponent von –50 bis 49 laufen
können, bei der Charakteristik aber von 0 bis 99. Dem Exponenten +7 erspräche
die Charakteristik 57 ( da Exponent + ½ BE = 7 + 50 = 57) oder für –7 erhielte man
die Charakteristik –7 + 50 = 43.
In der binären Darstellung mit E-Stellen ist die Charakteristik c für den Exponenten e
analog gegeben durch e:= e + ½ BE = e + 2E-1.
Die Mantisse wird meist durch den Betrag ( M-Stellen) und Vorzeichen (1 Stelle)
dargestellt, so daß eine typische Gleitpunktdartsellung folgende Struktur hat:
V
Charakteristik
Betrag (Mantisse)
Es gelten weiter die folgenden Vereinbarungen:
Normierung und Runden:
Abgesehen von der oben darstellten internen Darstellung der Zahlen z.B. als
Operanden an eine arithmetisch logischen Einheit (ALU) wollen wir zur Übersichtlich
auf eine höhere Darstellungsebene ausweichen. Wir wollen ganze Zahlen in der
Form bn-1 bn-2..... b1 b0 verwenden. Gleitpunktzahlen wollen wir mit m Be bezeichnen.
Dabei steht m für Mantisse, B für Basis und e für Exponent.
Um z.B. führende Nullen einer Zahl (e.g. 0000234) nicht unnötig mit verarbeiten zu
müssen und damit die Leistung des Rechners merklich zu reduzieren, werden die
Mantissen „normiert“, d.h. führende Nullen werden vor der Weiterverarbeitung der
Zahl gestrichen. Die Normierungsbedingungen sind dabei abhängig von der Basis
der Mantisse. Bei einer Zahl mit der Basis 2 gilt eine Mantisse dann als normiert,
70
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
wenn die erste Stelle hinter dem B-Punkt (Komma) eine 1 ist. Bei einer Basis 16
gilt eine Mantisse als normiert , wenn der Wert der ersten vier Stellen  0000 ist.
Man schiebt also die Mantisse soweit nach links, bis die Normierungsbedingung
erfüllt ist. Entsprechend der Anzahl der Schiebeoperationen muß der Exponent
erniedrigt werden.
Bei der Rundung eines Ergebnisses unterscheidet man vier Verfahren:
Abschneiden
hierbei wird der Teil der Mantisse, der die Anzahl der zulässigen Mantissenstellen
überschreitet, einfach abgeschnitten.
Normales Runden
Die erste Ziffer, die über der Anzahl der zulässigen Mantissenstellen liegt, bestimmt
das weitere Vorgehen. Ist sie gleich 0, dann wird abgeschnitten, ist sie gleich 1, wird
auch abgeschnitten und zusätzlich auf die letzte verbleibende Stelle eine 1 addiert.
Jamming
Dasselbe Vorgehen wie beim Abschneiden, jedoch wird die letzte verbleibende
Stelle immer auf 1 gesetzt.
R* - Runden
Dasselbe Vorgehen wie beim „Normalen Runden“, jedoch mit der Ausnahme, daß
1.00.........0 zu 1.00.......01 wird.
Als Beispiel für eine Operation sei ein Addierer vorgeführt. Die preiswerteste aber
auch die langsamste Implementierung eines Addierers ist die des „ripple-carryAddierers“ (RCA). Hierbei werden bei der Addition von n Bitstellen n sogenannte
Volladdierer in Serie geschaltet. Entsprechend der seriellen Abarbeitung der Addition
ist der Zeitaufwand für eine Addition direkt von der Stellenzahl n abhängig. und
deshalb 2n, wenn  die Schaltzeit eines Gatters ist. Es sei hier erwähnt, daß ein
Signal zum Durchlaufen eines Volladdierers zwei Gatterlaufzeiten benötigt.
Struktur eines RCA:
71
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
an-1
bn-1
cn-2
a1
VA
b1
c0
a0
VA
b0
c -1
VA
Ripple Carry Adder
Denselben Zeitaufwand , aber mit weniger Hardware benötigt der Carry -Save Adder (CSA). Seine Struktur sieht wie folgt aus:
an-1
a1
Summenbit
a0
VA
bn-1
b1
b0
Übertragsbit
D-FF
Carry - Save - Adder
Es ist klar, daß bei wesentlich erhöhtem Hardwareaufwand, d.h. bei Bereitstellung
von n Addierern, die aufsteigend von 1 Eingang (a0,b0) bis zu n Eingängen (an-1,bn1) parallel die Summen generieren, sich der erforderliche Zeitaufwand auf 2
72
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
reduziert. Dies ist jedoch das andere Extrem zur Berechnung mit dem Ripple Carry
Adder. Im Zwischenraum beider Extreme findet sich der Carry look-ahead Adder.
Seine Struktur sieht wie folgt aus:
ai
ai
bi
&
ci 1
ci-1
bi
&
&
1
&
1
1
gi = ai bi
pi = ai  bi
Dabei gilt für gi = aibi
und für pi = ai  bi
ci = ai bi v ci-1 (ai  bi)
si = ai  bi  ci-1
=1: Ein Carry wird an dieser Stelle generiert
=0: An dieser Stelle wird kein Carry erzeugt
=1: Ein Carry aus einer niedrigeren Stelle wird
weitergeleitet
=0: Von einer niedrigeren Stelle liegt kein Carry zur
Weiterleitung vor.
Der Vorteil dieses Verfahrens liegt bei der Anwendung von Gruppen oder auch
Bitslice-Operationen. Dabei werden meist je vier Bitstellen mit vier Volladdierern zu
einem Bitslice Baustein zusammengefaßt.
73
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Ein neuer Gruppenübertrag ergibt sich, wenn entweder G = 1 ist oder wenn P = 1
a3 b3
a2 b2
a1
b1
a0
b0
C
P
C
P
VA3
VA2
VA1
VA0
G
G
s3
s2
s1
s0
Bitslice Addition
ist und C-1 = 1 ist. Die Analyse der zugehörigen Schaltung ergibt einen Zeitaufwand
von 6; die Erzeugung der pi bzw. der gi und die Überträge zwischen den einzelnen
Addierern machen dabei jeweils einen Anteil von 2 aus.
74
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Carry Look Ahead Adder:
Quelle: Lewin, Theory and Design of Digital Computers, Nelson, 1972
Die Idee dieser Methode besteht darin, die Eingänge der einzelnen Addierstufen zu
prüfen und gleichzeitig die Überträge für jede dieser Stufen zu ermitteln. Die
entstehenden Carries werden dann an die zugehörigen Addierstufen angelegt, die
dann die Endsummen generieren.
Anstatt jeweils auf die Carries zu warten, die in jeder Stufe als Folge der
vorhergehenden Stufen generiert werden und dann erst den endgültigen Wert
liefern, sind die korrekten Carries und Summen unmittelbar an den Ausgängen
verfügbar.
Theoretisch könnte die Methode für alle Addierstufen angewandt werden, in der
Praxis reduziert man jedoch wegen der Kosten diese Methode jeweils auf Gruppen
von Stufen (z.B. jeweils 4 bit Addierer).
Das generelle Konzept sieht wie folgt aus:
Gi  Ai Bi (Carry Generate) und
Pi  Ai Bi  Ai Bi (Carry Propagate).
Das 1-Carry für die n-te Stufe , Cn bildet sich entsprechend den Bedingungen aus:
C n  Gn  Pn C n 1
Diese Gleichung sieht nach Rekursion aus, denn:
C n  G n  Pn G n 1  Pn 1C n  2 
 G n  Pn G n 1  Pn Pn 1C n  2
Daraus folgt dann unmittelbar:
C n  Gn  Pn Gn1  Pn Pn1Gn 2  .......  Pn Pn 1 Pn 2 ....P1C 0
Wenn wir C0 = G0 setzen, können wir folgendermaßen schreiben:
 n

 n

 n

 n

C n  G n    Pi G n 1    Pi G n  2    Pi G n 3  ......    Pi G0
 i n 
 i  n 1 
 i n2 
 i 1 
Wie wir in der obigen Gleichung sehen, besteht jeder Term des Ausdrucks aus
einem Generate-Term und dem Produkt einer Zahl von Propatgate-Terme.
In der n-ten Stufe wird also ein Carry genau dann gebildet, wenn:
a) Die Stufe n generiert selbst ein Carry;
75
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
b) die vorhergehende Stufe (n-1) generiert ein Carry und die n-te Stufe propagiert
es, oder die (n-2)-te Stufe generiert ein Carry und es wird durch die Stufen n
und (n-1) propagiert, etc.
c) ein Carry wird an der ersten (niedrigstwertigen) Stelle generiert und alle Stufen
propagieren es.
Daher kann die Carry-Gleichung auch in der folgenden Form geschrieben werden:
n
n
C n    Pi G j
j  0 i  j 1
76
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Quelle: Lewin: Theory and Design of Digital Computers, Nelson , 1972
77
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
78
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Multiplikation:
Die Multiplikation bzw. Division erfolgt durch sukzessives Addieren / Subtrahieren
des Faktor / Divisors. Eine (unter vielen Variationen ) mögliche Struktur sieht
folgendermaßen aus:
Register A
Register Q
ADD
&
Register B
Multiplizierer
Die beiden Operanden stehen in Register Q und B. Register A wird zu Beginn der
Operation auf Null gesetzt. Abhängig von der niedrigstwertigen Stelle in Q werden
die Inhalte von B und A addiert oder nicht. Anschließend erfolgt eine
Rechtsschiebeoperation um eine Stelle in A und Q. Register A und Q sind
hintereinandergeschaltet, d.h. diejenige Stelle, die bei Register A rechts herausfällt,
fließt bei Q links hinein. Folgende Operationen werden ausgeführt:
1)
q0 = 1:
q0 = 0:
ausgeführt;
A+BA
A+0A
(diese Operation wird natürlich nicht
Register A bleibt unverändert)
2)
in
2
AQ / 2  AQ
d.h. Rechtschiebeoperation um eine Bitstelle
AQ, gleichbedeutend mit einer Division durch
79
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
3) Wenn alle Stellen der Operanden (Faktoren) bearbeitet wurden , ist die
Multiplikation abgeschlossen. Das Ergebnis ist dann in Register AQ abrufbar. Die
Länge des Ergebnisses hat doppelte Länge.
Division
Bei der Division geht man analog vor, d.h.
1) 2 AQ  AQ
2)
(Linkschiebeoperation um eine
Bitstelle in AQ)
A-BA
Fallunterscheidung:
A  0: q0 = 1
A < 0: q0 = 0 und A + B  A
3)
(Restaurierung von A)
Nach n Schritten steht das Ergebnis in Q.
Beschleunigungen:
Beschleunigungen werden heute durch den Einsatz spezieller Prozessoren erreicht,
sogenannter Coprocessoren. Dabei werden Gleitkommaoperationen nicht vom
Rechner (Mikroprozessor selbst, sondern dem dafür optimierten Coprozessor
ausgeführt.
Damit durch den Einsatz eines Coprozessors wirklich Vorteile erwartet werden
können, muß der Coprozessor sehr eng an den Haupt-Prozessor gekoppelt sein; es
dürfen keine zusätzlichen, unnötigen Operationen notwendig werden. Diese
Forderungen werden z.B. beim Prozessor AM29000 und seinem Coprozessor
AM29027 erfüllt. Das untenstehende Blockschaltbild gibt eine grobe Übersicht über
die Kopplung.
80
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
AM29000
AM29027
A
S
D
R
I
F
CTL 0-7
CTL 0-7
CTL 0-2
CTL 0-2
Prozessor AM 29000 / Coprozessor AM29027
Alle Datenleitungen sind 32 Bit breit. Die Operanden werden in die Register S und R
geladen. Die auszuführende Operation in das Register I (Instruction). Nach
Abarbeitung der Instruction (des Befehls) wird das Ergebnis aus F in den Prozessor
übertragen.
Eine andere Möglichkeit der Kopplung der beiden Prozessoren besteht im
gemeinsamen Zugriff auf den Systembus. In diesem Modus ist der Coprozessor
direkt an den Systembus gekoppelt, an den auch der Hauptprozessor
angeschlossen ist. Aus der Statusinformation des Hauptprozessors kann man
erkennen, wann ein Speicherzugriff bevorsteht. In diesem
Fall greift der Coprozessor synchron auf den Bus zu und prüft, ob der
auszuführende Befehl eine arithmetische Operation enthält. Wenn ja, übernimmt
der Coprozessor die Ausführung des Befehls. Er übernimmt die Operanden und führt
das Ergebnis selbständig an den Speicher ab. Während dieser zeit kann der
Hauptprozessor bereits weitere Befehle aus der Befehlswarteschlange abarbeiten,
sofern er dazu keinen Zugriff auf den Bus durchführen muß. Nach Ausführung des
Befehls durch den Coprozessor erhält der Hauptprozessor eine entsprechende
Fertigmeldung.
81
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Haupt Prozessor
Coprozessor
Speicher
Adreßbus
Steuerung
Datenbus
Kommunikation über gemeinsamen Speicher
Das Steuerwerk
Allgemeines
Das Steuerwerk ist für die Abarbeitung der Befehle zuständig. Befehle werden
während der Befehlsholphase aus dem Speicher geladen, dekodiert und während
der Ausführungsphase ausgeführt. Die verschiedenen Typen von Mikroprozessoren
weisen hier verschiedene Anzahlen von Assemblerbefehlen auf; sie unterscheiden
sich im Umfang der Befehle und der daraus resultierenden Realisierung des
Steuerwerks. Die Größe der Befehle ist abhängig von der Anzahl der im Befehl
enthaltenen Adressen. Es gibt:
 Stack - Maschinen (Keller Maschinen). Hier ist keine Adresse im Befehl
enthalten. Ein Operator arbeitet auf den Operanden im Stack und schreibt das
Ergebnis wieder in den Kellerspeicher.
 Einadreßmaschinen: Im Befehl ist maximal eine Adresse enthalten. Der Operator
verknüpft den Inhalt des Akkumulators (das ist ein Register, welches als
temporärer Speicher verwendet wird) mit dem Inhalt der adressierten
Speicherzelle. (<A> := <A> op <Adr>)
 Zweiadreßmaschinen (z.B. INTEL 80486, Motorola 68020): Im Befehl sind
maximal zwei Adressen enthalten. Der Operator verknüpft den Inhalt der
adressierten Speicherzellen und schreibt das Ergebnis in den Akkumulator ( <A>
:= <Adr.1> op <Adr.2>)
 Dreiadreßmaschinen (RISC- Prozessoren): Hier sind maximal drei Adressen im
Befehl enthalten. Der im Befehl angegebene Operator verknüpft die Inhalte von
82
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
zwei der drei adressierten Speicherzellen und schreibt das Ergebnis in die dritte
adressierte Speicherzelle. (<Adr.3> := <Adr.1> op <Adr.2). Wegen der langen
Adressen sowie der großen Anzahl der Befehle wird diese Form bis auf die RISC
Prozessoren nicht mehr häufig angewendet. Bei RISC Prozessoren wird dieser
Nachteil durch die z.T. erheblich vereinfachte Befehlssätze (Reduced Instruction
Set Computer) ausgeglichen.
Wie sieht nun ein Befehl in praxi aus? Am Beispiel des Motorola 68020 wollen wir
ein Beispiel geben.
Der minimale Befehl hat hier 16 Bit, der maximale Befehl ist 11 mal so lang. Man
sagt auch, das Befehlswort hat eine Länge von 16 Bit. Diese Länge ist identisch mit
der Wortbreite des Rechners. Wortbreiten können 4, 8, 16, 32 oder ein Vielfaches
davon sein. Es hat sich herausgestellt, daß Wortbreiten von 32 bzw. 64 Bit für
leistungsstarke Rechnersysteme sehr günstig sind.
Im Motorola 68020 ist die Wortbreite 16 Bit, für einen Mikroprozessor eine übliche
Länge.
Unabhängig, wie lang der Befehl im 68020 auch ist, das erste Befehlswort mit 16 Bit
ist immer vorhanden. Es kann jedoch erweitert werden, wie oben beschrieben wurde.
Das erste Befehlswort hat folgende Form:
Unter dem Mode verstehen wir die Adressierungsart; z.B. die Byte- oder
Wortadressierung.
Bei der Kurzform kommen zu diesem ersten Befehlswort zwei sogenannte
Ergänzungswort à 16 Bit mit identischem Aufbau hinzu. Dabei bezieht sich das
15
6
Befehlscode
5
3
Mode
2
0
Register
1. Befehlswort beim Motorola 68020
erste Ergänzungswort auf den Quellbereich, d.h. wo Daten hergeholt werden; das
zweite Ergänzungswort bezieht sich auf den Zielbereich, d.h. dort wird angegeben,
wo ein Datum abgelegt werden soll.
Ein solches Ergänzungswort hat folgendes Aussehen:
83
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
15
D
8
REG
W
SC
7
0
0
OFFSET
Kennzeichnung Kurzform
Skalierung 1,2,4 oder 8
Registerbreite 16/32 Bit
Indexregister aus
Daten- und Adreßregistersatz
68020 Ergänzungswort Kurzform
Die Skalierung erleichtert die Byte- bzw. Wortadressierung. Dabei wird die Adresse
(z.B. im Indexregister ) mit dem Skalierungsfaktor multipliziert.
Bei der Langform haben wir folgende Situation: Hier wird das 1. Befehlswort durch
bis zu 5 mal 16 Bit für den Quelloperanden ergänzt und bis zu 5 mal 16 Bit für den
Zieloperanden. Die Registerbezeichnungen für das 1. Befehlswort behalten dabei
ihre Bedeutungen. Das 8. Bit kennzeichnet dabei Lang- oder Kurzform. Die
einzelnen Felder haben folgende Bedeutung:
B:
das Registerfeld im Operationswort dient der Adreßberechnung.
I:
das Registerfeld im 1. Ergänzungswort dient zur Adreßberechnung
BDS: Länge des 1. Offsets (relative Adressierung)
IS:
Länge des 2. Offsets. Zur Berechnung wird hierbei auf das Feld MODE
zurückgegriffen.
Statt des 1. und 2. Offsets kann bei direkter Adressierung auch ein Datum
angegeben werden.
84
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
15
D
0
REG
W
SC
1
B
I
BDS
0
IS
1. Offset zum Basisregister
(0, 1 oder 2 Worte)
2. Offset zur indirekten Speicheradresse
(0, 1 oder 2 Worte)
Ergänzungwort der Langform
Mikroprogramme
Nachdem nun eine Befehlsstruktur vorliegt, stellt sich die Frage, wie ein solcher
Befehl „umgesetzt“ wird. Uns ist klar, daß die vorliegende Befehlsstruktur auf einer
Hardware- nahen Ebene wirkt. Man nennt die Sprache auch Assembler, weil sie eine
direkte Zuordnung der Befehlsinhalte zu den auszuführenden Operationen (logisch
oder arithmetisch) repräsentiert. Selbst der Assemblercode verwendet bereits
Synonyme für durchzuführende Operationen (z.B. ADD für Addieren etc.). Solche
Befehlscode müssen jedoch der Maschine verständlich gemacht werden, d.h. so
dekodiert werden, daß die ausführende Einheit „versteht“, was sie zu tun hat.
Für die Praxis bedeutet dies, daß jeder Assemblerbefehl in eine Folge von weiter
heruntergebrochenen, hardwarenäheren Codes zerlegt wird. Eine solche Folge von
Codes nennt man dann Mikroprogramm.
85
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Definition: Mikroprogramm
Ein Mikroprogramm ist die Darstellung eines Algorithmus, der von den
Funktionseinheiten der Prozessor-Hardware ausgeführt wird und damit eine
Maschinenoperation ausführt. Ein Mikroprogramm kann fest verdrahtet sein oder es
kann in einem speziellen Speicher („control store“ mit sehr kleiner Zugriffszeit
implementiert sein (Firmware Realisierung). Ein Mikroprogramm besteht in der
Regel aus einer Folge von Mikrooperationen. Mikrooperationen, die zur gleichen
Taktzeit ablaufen können, werden zu Mikrobefehlen zusammengefaßt.
Mikroprogramme dürfen bedingte Verzweigungen aufweisen.
Die folgende Skizze gibt das Prinzip der Mikroprogrammierung an:
86
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Konnektionsmatrix
s1
s2
s3
Steuermatrix
s4
si
sn-1
sn
F
MZ
Entschlüsseler
1 aus n
Prinzip der Mikroprogrammierung
Die Bitleitungen des F-MZ Registers bilden die Eingangsleitungen des
Entschlüsslers (Dekoder). Entsprechend dem anliegenden Bitmuster aktiviert er
genau eine seiner n Ausgangsleitungen. Die gekennzeichneten Kreuzungspunkte
stellen dann eine Verbindung zu den Steuerungs-Ausgängen s1 bis sn her und
aktivieren damit die zugehörigen Funktionselemente. In der Konnektionsmatrix wird
durch deren aktivierte Verbindungen der Inhalt des F-MZ neu gesetzt. Damit erhält
der Dekoder wieder neue Eingangsinformation, die zu einer neuen Ansteuerung der
angeschlossene Funktionselemente (z.B. arithmetisch logische Einheit) führt. Die
87
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Kapazität von Mikroprgrammspeichern ist relativ zu den Kapazitäten der
Hauptspeicher oder gar zu den der Plattenspeicher geradezu winzig. Ihr Umfang ist
abhängig vom Prozessortyp und liegt bei etwa 30.000 Bit.
Wir wollen diesen Sachverhalt detaillierter erläutern, dazu gehen wir von folgender
Struktur aus:
Statusregister
Befehlsregister
Operation
AF
EF
Adresse
F
V
R
Berechnung
der
nächsten Adresse
Z N C
Steuer
adress
register
Steuerwort
speicher
S
(PROM)
U
Ext. Signale
Mikroprogrammierung
Für jeden Takt ti werden Steuersignale sj generiert, die die Ausführung z.B. der
Registertransferbefehle gewährleisten. Die n Steuersignale werden in dem
Steuerwort s = s1.....sj....sn zusammengefaßt. Für jede Zeile Z z.B. eines
Registertransfers wird ein Steuerwort s(Z) bereitgestellt, das genau dann ausgeführt
wird, wenn die Transferbedingung (Z) erfüllt ist. Die Umsetzung eines
Maschinenbefehls in eine Folge von Steuerworten des Prozessors ist selbst ein
kleines Programmstück, welches wir als Mikroprogramm bezeichnen. Die
Steuerworte s haben eine feste Länge, nämlich n Bit; sie sind in dem
Mikroprogrammspeicher S abgelegt. Diese Mikroprogrammspeicher haben immer
eine kleine Kapazität (etwa 30 k bit). Bei der Ausführung eines Steuerwortes muß die
Adresse des nachfolgenden Steuerwortes abhängig vom aktuellen Steuerwort und
aktueller Operation im Befehlsregister, von Flags (Ausgabeflag (AF) und Eingabeflag
(EF) bzw. externen Unterbrechungen U bestimmt werden. Im einfachen Fall hat jede
Mikroprogrammzeile ein eigenes Steuerwort. Der Verarbeitungszyklus wird durch
die Sequentialisierungsflags F und R und die Taktfolge t 0,....,ti gesteuert. Das
88
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Statusregister enthält folgende Informationen: C (Carry), N (Vorzeichenbit), Z
(Nullbit) V (Überlaufbit).
Das nächste Adreßbit wird durch eine kombinatorische Schaltung, wie sie oben
bereits angedeutet wurde, berechnet, das Steuerwort aus einem (kombinatorischen)
ROM Speicher ausgelesen. Ist der Mikroprogrammspeicher als kombinatorische
Schaltung ausgelegt, muß er über ein Steuerwortregister getaktet werden. Dieses
Steuerwortregister kann durch die Statusregister unterbrochen werden.
Man unterscheidet zwei Arten der Mikroprogrammierung: die horizontale und die
vertikale.
Bei der horizontalen Mikroprogrammierung enthalten die Steuerwortspeicher die
Steuersignale uncodiert. Die Länge der Steuerworte beträgt hierbei 64, 124 oder
auch mehr bit. Bei der vertikalen Mikroprogrammierung werden die Steuersignale
durch die Zwischenschaltung eines Demultiplexers generiert.. Hierbei beträgt die
Länge der Steuerworte bis zu 32 bit. In den sogenannten RISC-Architekturen oder
auch den integrierten Mikroprozessoren ist die Mikroprogrammsteuerung fest
verdrahtet. Bei manchen Rechnern mittlerer Größe aber auch Großrechnern wird
dem (System)-Programmierer die Möglichkeit gegeben, eigene Maschinenbefehle
durch Mikroprogramme zu definieren. Diesen Speicher, den der Programmierer dann
zur Verfügung hat, liegt in einem Teil des RAM-Mikroprogrammspeichers, der dem
äußeren Zugriff zugänglich ist. Bei der VAX 11/750 z.B. besteht der
Mikroprogrammspeicher aus Steuerworten von 80 bit Länge, wobei 6k als ROMSpeicher für die festen Maschinenbefehle installiert sind und ein RAM-Speicher mit
1024 Worten vom Benutzer programmiert werden kann. Jedes dieser Speicherworte
ist wie die vorgegebenen Maschinenbefehle während eines Verarbeitungszyklus des
Rechners zugänglich. Im RAM-Teil kann der bestehende Maschinenbefehlssatz mit
neuen benutzerspezifischen Befehlen erweitert werden. Für bestimmte
Anwendungsklassen , z.B. für die graphische Datenverarbeitung kann so eine
spezifische , für diese Problemklasse optimierte Maschinensprache definiert
werden. Auch kann ein mikroprogrammierbarer Rechner durch seine Möglichkeit,
auf verschiedenen Befehlssätzen zu arbeiten , einen anderen Rechner auf der
Ebene der Maschinensprache simulieren. Man nennt das Verfahren auch Emulation.
Um die Rechenkapazität des Rechners auszunutzen, ist es vorteilhaft, wenn
möglichst viele Elemente des Rechners gleichzeitig arbeiten; damit erhöht sich die
Leistung des Rechners.
Eine solche Steuerung der Prozesse bedarf über die geeignete Hardware hinaus
Programmen, die diese Auslastung des Rechners ermöglichen; auf der anderen
Seite müssen sie in der Lage sein, Konflikte zu lösen, die z.B. durch gleichzeitigen
Zugriff von Prozessen auf ein Betriebsmittel wie z.B. dem Speicher oder Drucker
entstehen können.
Erinnern wir uns an den Begriff des Algorithmus. Er beschreibt eine
Verarbeitungsvorschrift, die, beginnend mit einem definierten Anfangswert über eine
Folge von Zwischenzuständen (Zustandstransformationen) zu einem definierten
Endzustand führt. Beschrieben wird ein solcher Algorithmus durch ein Programm;
seine Ausführung nennen wir Programmausführung. Den Vorgang der
Programmausführung mit einem Satz von Anfangswerten wollen wir Prozeß nennen.
89
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Dabei müssen wir beachten, daß durch den Prozeß die Datenobjekte manipuliert
(transformiert) werden; der Algorithmus oder das Programm durch die Ausführung
aber nicht verändert wird. Solche Programme nennen wir invariant. Ein Prozeß
interagiert mit seiner Umwelt; damit wird die Programmausführung nicht nur
abhängig von den inneren Zuständen, sondern von den äußeren Zuständen dieses
Prozesses. Wir können also einen Prozeß folgendermaßen präzisieren (nach Giloi):
Ein Prozeß ist eine funktionelle Einheit, bestehend aus:
 einem zeitlich invarianten Programm
 einem Satz von Daten zur Initialisierung des Prozesses,
 einem zeitlich varianten Zustand.
Mit diesen Voraussetzungen können wir eine höhere Ebene der Parallelarbeit
einführen: Enthält das System mehrere Prozessoren (z.B. Haupt- und Coprozessor),
so können nebenläufige (konkurrente) Prozesse parallel abgearbeitet werden.
Dabei nennen wir zwei Prozesse konkurrent, wenn es mindestens ein Zeitintervall
gibt, in dem sie beide zwar begonnen, aber den Prozeß nicht abgeschlossen haben.
In einem echten Einprozessorsystem können daher „konkurrente Prozesse“ nur
abschnittsweise sequentiell bearbeitet werden.
Semaphoren:
Konkurrente Prozesse sind häufig kooperierend, d.h. sie greifen auf gemeinsam
benutzte Daten zu (data sharing). Dabei kann es zu Konflikten kommen, wenn beide
Prozesse wirklich gleichzeitig auf dieses Datum zugreifen wollen. Als Folge können
undefinierte oder unkorrekte Zustände auftreten. Ein einfacher Mechanismus, der
solche Zugriffskonflikte vermeiden hilft, ist der Semaphor-Mechanismus:
Ein Semaphor sei eine boolsche Variable, deren beiden Wahrheitswerte den
Zustand „frei“ oder „belegt“ anzeigen mögen. (0,1). Gegeben seien ferner zwei
Prozeduren (das sind Werkzeuge zur Programm- und Datenkontrolle) P(S) und
V(S), durch die der Wert eines Semaphors S verändert werden kann. Sei nun
folgende Kontrollstruktur gegeben:
P(S): begin if
end;
V(S): begin
S = 1 then <wait until S = 0>;
S: = 1;
S:= 0 end;
Sollen sich nun zwei Prozesse gegenseitig aus einem kritischen Zustand
(gleichzeitiger Zugriff auf dasselbe Betriebsmittel) ausschließen, so kann das nach
obiger Vorschrift folgendermaßen geschehen:
P1
.
.
P2
.
.
90
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
.
.
.
.
P(S)
<Anweisungen des kritischen
Abschnitts (Datenzugriff)>
V(S)
.
.
.
P(S)
<Anweisungen des kritischen
Abschnitts (Datenzugriffs)>
V(S)
.
.
.
Derjenige Prozeß, der den kritischen Abschnitt zuerst erreicht, führt die Operation
P(S) ohne Verzögerung aus. (S ist mit dem Wert 0 initialisiert) Der zweite, später
kommende Prozeß findet den Wert 1 vor und muß solange warten, bis der erste
Prozeß seine Fertigmeldung mit dem Rücksetzen auf S = 0 dokumentiert.
Neben den oben erwähnten Problemen bei der Zuteilung von Betriebsmitteln wie
Speichern können weitere interne Ursachen für einen Konflikt auftreten wie Division
durch Null, ungültiger Befehlscode, Stack-Überlauf o.ä. Während dieser Typ von
Unterbrechung (interrupt) immer behandelt wird, wird z.B. bei RESET, einem BUSFehler oder Anforderungen von externen Geräten erst überprüft, ob das InterruptEnable Bit überhaupt gesetzt ist. Nur , wenn diese Bit gesetzt ist, kann der
gewünschte Interrupt Vorgang aktiviert werden.
Wir unterscheiden verschiedene Arten von Interrupts: diejenigen mit niedriger
Priorität und diejenigen mit hoher Priorität. Dazu wird der anstehende InterruptWunsch mit einer Interrupt-Maske verglichen und die Behandlung nur dann
eingeleitet, wenn die Priorität größer oder zumindest gleich der Maske ist.
Nachdem die Überprüfung auf das gesetzte Interrupt Bit geschehen ist und die
Priorität bestimmt ist, wird die „Interrupt Routine“ wie folgt fortgesetzt,
vorausgesetzt, die Priorität ist genügend hoch:
 der aktuelle Befehl wird zu Ende geführt, soweit dies sinnvoll erscheint
 die für die spätere Programmfortsetzung erforderlichen Daten in den Registern
werden in den Kellerspeicher (stack) gerettet
 die Ursache (Quelle) für den interrupt wird festgestellt
 bei externen Geräten wird der interrupt quittiert
 die Startadresse für die Interrupt - Routine wird ermittelt. Bei externen Geräten
legt das unterbrechende Gerät nach der Quittung die ihm zugeordnete InterruptVektornummer auf den Datenbus; der Prozessor ermittelt damit die Startadresse
aus der Vektortabelle.
 Das Interrupt- Enable Signal wird deaktiviert, um sicherzustellen, daß die
Interrupt-Behandlung nicht unterbrochen wird.
 die Interrupt - Routine wird ausgeführt
 das Interrupt - Enable - Bit (Flag) wird wieder gesetzt
 die Register aus dem Stack werden restauriert und das unterbrochene Programm
mit dem nächsten Befehl weitergeführt.
91
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Falls mehrere Geräte dieselbe Priorität besitzen, muß das Gerät selbst indentifiziert
werden. Eine einfache Art ist das „daisy chaining“. Man führt hierbei eine Ordnung
der Geräte mit gleicher Priorität ein und arbeitet sequentiell ab.
Die Befehlsabarbeitung (Befehlszyklus)
Das zu Beginn der Vorlesung besprochen Prinzip des Pipelining ist in vielen
Rechnern implementiert. Durch die Aufteilung von Befehlen in Teilaufgaben erreicht
man eine Beschleunigung bei der Abarbeitung, weil die einzelnen Teilaufgaben
bestimmte Betriebsmittel besser nutzen können.
Pipelining
Den Teilaufgaben sind dabei hardwaremäßig bestimmte Verarbeitungseinheiten
zugeordnet. Die Teilaufgaben (unterschiedlicher) Gesamtaufgaben werden dabei
den einzelnen Verarbeitungsstationen überlappend zugeteilt. Beziehen wir dieses
Vorgehen auf die Befehlsverarbeitung, so können wir folgende Teilaufgaben
erkennen:
 Befehl holen (instruction fetch, IF)
 Befehl dekodieren und Registerinhalte holen (instruction decoding, ID)
 Befehlsausführung (instruction execution)
 Speicherzugriff auf Operanden (operand fetch)
 Ergebnis ins Zielregister
Man bezeichnet das folgende Vorgehen als Befehls- oder Phasenpipelining.
Um den Ausführungs-Takt der Befehle möglichst groß zu erhalten, ist man bestrebt,
die Taktzeiten für die einzelnen Teilaufgaben möglichst kurz und vor allem gleich
groß zu halten, da die langsamste Teilaufgabe den Gesamttakt bestimmt.
Nehmen wir an, daß jede Verarbeitungsstation ein Fünftel der Ausführungszeit einer
Befehlsausführung ohne Pipeline benötigt. In diesem Fall ist die Bearbeitungszeit für
einen Befehl ist dann ohne oder mit Pipelining identisch. Da in einem
Pipeliningssystem die Teilaufgaben jedoch zeitüberlappend ausgeführt werden, d.h.
die Pipeline überlappend arbeitet, die Pipeline dauernd nachgefüllt wird, verläßt pro
Takt ein abgearbeiteter Befehl die Pipeline. Damit wird die Befehlsabarbeitung bei
dem Pipieline - Konzept in unserem Beispiel fünfmal so schnell wie ohne dieses
Prinzip.
92
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
instruction
fetch
instruction
decoding
operand
fetch
instruction
execution
result to destination
register
Befehls - Pipeline
Teilaufgabe
=
Takt t=1
2
3
4
5
IF
ID
OF
IE
RD
i
i+1
i+2
i+3
i+4
i
i+1
i+2
i+3
i
i+1
i+2
i
i+1
i
Überlappende Verarbeitung in einer Pipeline
Nicht alle Befehle müssen diese Stationen durchlaufen., z.B. Befehle, deren
Operanden bereits im Befehl enthalten sind. Überspring“-Befehle gibt es nicht und
so müssen die Befehle warten, bis die nächste Teilaufgaben-Verarbeitungseinheit
dran ist.
93
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Hazards
Wie in der Hardware bei Schaltnetzen gibt es auch hier Hazards. Wir wollen drei
Hazardklassen unterscheiden:
 die Structural Hazards
 die Data Hazards und
 die Control Hazards.
Bei den Structural Hazards kommt es zu Hardware- Zuteilungskonflikten, da sich
nicht alle möglichen Befehlskombinationen gleichzeitig ausführen lassen.
Bei den Data Hazards greift ein Befehl auf Daten zu, die im vorhergehenden Befehl
berechnet werden.
Control Hazards treten bei Veränderungen des Programmzählers auf, die u.a. durch
Verzweigungsbefehle hervorgerufen werden können.
Um diese Hazards zu vermeiden, wendet man Wartezyklen an, in denen diejenigen
Befehle der Pipeline warten müssen, die hinten in der Schlange stehen; die vorne in
der Schlange jedoch weiter abgearbeitet werden.
Wie wir bereits gesehen haben, führt das Pipelining im allgemeinen zu erheblichen
Leistungssteigerungen eines Rechnersystems. Dies dadurch, daß die Befehle
zeitüberlappt abgearbeitet werden können. Allerdings gibt es hierbei auch
Situationen, die wir Hazard nennen, die die Ausführung des nächsten Befehls aus
dem Befehlsstrom im eigentlich zugeordneten Taktzyklus verhindern. Damit
vermindern Hazards in bestimmten Fällen die Leistung des Rechners. Wir
unterscheiden 3 Hazard - Klassen:

Struktur - Hazards (structural hazards), die aus Ressourcenkonflikten
resultieren, wenn die Hardware nicht alle mögliche Befehlskombinationen
simultan ausführen kann.
 Daten - Hazards (data hazards), die durch einen Befehl verursacht werden, der
vom Ergebnis des vorangegangenen Befehls in einer Weise abhängt, die sich
durch die überlappte Abarbeitung ergibt.
 Steuer - Hazards (control hazards); sie ergeben sich aus dem Pipelining von
Verzweigungen und anderen Befehlen, die den program counter (PC) ändern.
Treten Hazards auf, so machen diese i. a. Wartezyklen (stalls) erforderlich. Bei
Pipelining Maschinen befinden sich dabei bei einem Wartezyklus gleichzeitig
mehrere Befehle in der pipe, die auf ihre Abarbeitung warten. Diese Befehle sind in
diesen Fällen genau zu markieren und bei einem folgenden Takt wieder zu
aktivieren. Es ist offensichtlich, daß deshalb bei Pipelining Maschinen gegenüber
Maschinen ohne Pipelining ein größerer Verwaltungaufwand getrieben werden muß.
Bei Pipelining Maschinen erfordert ein Wartezyklus häufig, daß einige Befehle
weiter abgearbeitet werden können und manche Befehle verzögert werden. Wenn
ein Befehl angehalten wird, dann ist es anderseits auch typisch, daß die
nachfolgenden Befehle auch angehalten werden: sie stauen sich sozusagen in der
94
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
pipe. Dagegen werden die Befehle vor dem angehaltenen Befehl weiter
abgearbeitet; ein neuer Befehl wir jedoch nicht geholt.
Die Ausführung machen bereits deutlich, daß sich bei Auftreten von Wartezyklen die
Pipeline - Leistung reduziert. Wir wollen dieses Verhalten durch eine Gleichung
beschreiben:
Pipeline Beschleunigung 

Durchschnittliche Befehlszeit ohne Pipelining
Durchschnittliche Befehlszeit mit Pipelining
Taktzyklus ohne Pipelining
Taktzyklus mit Pipelining

CPI ohne Pipelining
CPI mit Pipelining
Interpretieren kann man die Folge von Pipelining auch so, daß die CPI (cycles per
instruction) oder auch der Taktzyklus reduziert wird. Stellen wir die Abhängigkeit
bezüglich CPI dar, so ergibt sich:
Ideal  CPI 
CPI ohne Pipelining
Pipeline  Tiefe
Setzen wir die obige Beziehung in die Gleichung zur Pipeline - Bechleunigung ein, so
erhalten wir:
Beschleunigung 
Taktzyklus ohne Pipelining
Ideal CPI  Pipeline Tiefe

Taktzyklus mit Pipelining
CPI mit Pipelining
Beschränken wir uns auf die Pipeline-Wartezyklen, ergibt sich:
CPI mit Pipelining  Ideal CPI  Pipeline Wartezyklen pro Befehl
Damit ergibt sich weiter:
Beschleunigung 
Taktzyklus ohne Pipelining
Ideal CPI  Pipeline Tiefe

Taktzyklus mit Pipelining
Ideal CPI  Pipeline Wartezyklen
Vernachlässigt man die Erhöhung der Taktzykluszeit bei sich ergebendem
Pipelineoverhead, so wird der erste Bruch in obiger Gleichung zu 1 und damit ergibt
sich:
Pipeline Beschleunigung 
Ideal CPI  PipelineTiefe
Ideal CPI  Pipeline Wartezyklen
95
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Im allgemeinen darf man den möglichen Einfluß auf die Taktfrequenz bei der
Bewertung von Pipeline Strategien natürlich nicht vernachlässigen.
Struktur-Hazards
Pipelining erfordert Mehraufwand an Ressourcen, um allen Anforderungen, die durch
die Befehle entstehen, genügen zu können. Können jedoch einige
Befehlskombinationen wegen Resourcenkonflikten nicht ausgeführt werden, dann
spricht man von strukturellen Hazards oder Struktur-Hazards. Das bedeutet
andererseits, daß bestimmte Funktionseinheiten zur Abarbeitung der Befehle nicht
pipeline-gemäß implementiert sind. Meist werden zur Vermeidung solcher
Zugriffskonflikten Funktionseinheiten dupliziert. Steht jedoch zur Abarbeitung nur
eine Funktionseinheit, z.B. ein Registerfile-Schreibport zur Verfügung, so wird hier
ein Struktur-Hazard generiert. Als Folge läßt man die Pipeline einen Befehl warten,
bis die gewünschte Ressource frei ist.
Als Beispiel sei eine Pipeline Maschine gewählt, die für Daten und Befehle nur über
eine (1) Speicher-Pipeline verfügt. Die folgende Grafik verdeutlicht diesen Fall:
Befehl
Ladebefehl
Befehl i+1
Befehl i+2
Befehl i+3
Befehl i+4
Taktzyklennummer
1
2
IF
ID
IF
3
4
5
EX
ID
IF
MEM
EX
ID
stall
WB
MEM
EX
IF
6
7
8
9
10
WB
MEM
ID
IF
WB
EX
ID
MEM
EX
WB
MEM
WB
Grafik: Beispiel eines Struktur-Hazards: ein Ladebefehl mit einem Speicherport
Mit nur einem Speicherport kann die Pipeline nicht in einem Zyklus zugleich Befehlsund Datenholen einleiten. Ein Ladebefehl stiehlt in der Wirkung einen
Befehlsholzyklus, indem die Pipeline zu einem Wartezyklus veranlaßt wird. Im
Taktzyklus 4 wird als Folge kein Befehl geholt. Es wird angenommen, daß die
Befehle i+1 bis i+4 keine Hazards der beschriebenen Art generieren. Eine Tabelle,
die die möglichen Operationen während der einzelnen Zyklen darstellt, wird im
folgenden angegeben. Sie stellt eine unter mehreren Möglichkeiten dar.
Stufe
ALU Befehle
Lade- und Speicher Befehle
Verzweige - Befehle
IF
IR<---Mem[PC] PC<---PC+4
IR<--Mem[PC]
PC<---PC+4
IR<---Mem[PC]
PC<---PC+4
ID
A<---Rs1; B<---Rs2;
PC1<---PC; IR1<---IR
A<---Rs1; B<---Rs2;
A<---Rs1; B<---Rs2;
PC1<---PC; IR1<---IR PC1<---PC; IR1<---IR;
EX
DMAR  A+;
ALUoutput<---A op B; oder
ALUoutput<---A op ((IR16)16## IR116...31); ((IR116)16##IR1 16...31);
SMDR  B;
96
ALUoutput - PC1 +
((IR116)16##IR1 16...31);
cond  (A op 0);
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
MEM
ALUoutput1 - ALUoutput;
LMDR<---Mem[DMAR]; if (Bedingung)
PC<--ALUoutput
oder
Mem[DMAR]<--SMDR
WB
Rd  ALUoutput1;
Rd  LDMR;
Während der zu holende Befehl wartet, werden alle anderen Befehle normal
abgearbeitet. Nach dem Wartezyklus wird die normale Pipeline fortgesetzt.
Beispiel:
Angenommen, Datenzugriffe machen 30% im einem Testmix aus. Der Wert von
Ideal-CPI der Pipeline-Maschine bei Vernachlässigung von Struktur-Hazards betrage
1,2. Wieviel mal schneller ist, unter Vernachlässigung aller anderen
Leistungsverluste, die ideale Maschine ohne Struktur-Hazards des Speichers?
Antwort:
Die ideale Maschine wird um das Verhältnis der idealen zur realen Maschine
schneller gegenüber der realen Maschine sein. Weil der Taktzyklus unverändert ist,
kann die folgende Formel für die Pipeline-Beschleunigung genutzt werden:
Pipeline Beschleunigung 
Ideal CPI  PipelineTiefe
Ideal CPI  PipelineWartezyklen
Weil die Idealmaschine keine Wartezyklen hat, ist ihre Beschleunigung einfach:
1,2  Pipeline Tiefe
1,2
Die Beschleunigung der Realmaschine ist
1,2  Pipeline Tiefe 1,2  Pipeline Tiefe

1,2  0,3  1
1,5
 1,2  Pipeline Tiefe


 1,5
1,2
Beschleunigung( ideal ) 


 1,25
Beschleunigung( real )  1,2  Pipeline Tiefe 1,2




1,5
Damit ist die Maschine ohne Struktur Hazards um 25% schneller.
97
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Es braucht an dieser Stelle nicht eigens erklärt werden, daß Struktur - Hazards nicht
in jedem Fall vermieden werden können, wenn man das pipelining ohne
Einschränkungen weiterführen will. Will man jedoch ein pipelining ohne die Gefahr
von Hazards , so muß man unter Umständen eine Menge Hardware spendieren, die
diese Gefahr ausschließt. Meist ist jedoch die Leistungsreduzierung durchaus
tragbar, wenn der Zustand, der einen Hazard generiert, nur selten auftritt.
Daten - Hazards
Daten Hazards ergeben sich genau dann, wenn aufeinanderfolgende Befehle
teilweise auf dieselben Daten zugreifen. Betrachten wir dazu als Beispiel zwei
aufeinander folgende Additionen: Ri bedeutet hierbei Register i.
R1 = R2 + R3
R4 = R1 + R5
Bei der ersten Addition werden die Inhalte der Register R1 und R2 addiert und im
Zielregister R3 abgespeichert. Der zweite Befehl enthält als Operanden das
Register R5 und das Register R1, wobei wohlgemerkt das Register R1 das Ergebnis
der Addition aus dem Befehl bereits enthalten soll.
Wenn wir und nun das uns bereits bekannte Schema der Abarbeitung von Befehlen
verdeutlichen, so ergibt sich:
Befehl
Taktzyklennummer
1
2
ADD1
ADD2
IF
ID
IF
3
4
5
6
EX
ID
MEM
EX
WB
MEM
WB
7
Bypassing:
Wie man aus der obigen Abarbeitungstabelle sofort ersehen kann, wird durch den
zweiten Befehl bereits der Operand geholt, der durch den ersten Befehl eigentlich
noch gar nicht zur Verfügung steht. Der vom zweiten Befehl geholte Wert für R1 ist
eigentlich völlig unbestimmt. Der zweite Befehl übernimmt den Wert von R1, dessen
aktueller Inhalt nicht determiniert ist. Damit wird dieses Verhalten des Rechners
nicht annehmbar.
Dieses aufgetretene Problem kann durch eine relativ einfachen Hardware-Trick
umgangen werden. Es ist unter dem Namen Forwarding,
und auch Short-circuiting bekannt: Hierbei wird das Ergebnis an der ALU immer
zum ALU Eingangsregister, genauer gesagt, Latch weitergeleitet und damit im
98
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Voraus bereitgestellt. Erkennt nun diese spezielle Hardware, daß die
vorausgegangene ALU Operation ein Register zu beschreiben hat, welches im
nachfolgenden Befehl bereits wieder als Source- (Quell)Register benutzt werden soll,
wählt dieses Spezial-Hardware das in dem temporären Register vorliegende
Ergebnis als ALU - Eingangswert für den nächsten Befehl aus, anstelle des Wertes
im Registerfile. Besteht jedoch zwischen den zwei Befehlen eine Unterbrechung der
Befehls-Abarbeitung (Interrupt), der die ordnungsgemäße Beendigung des ersten
Befehls zuläßt, wird der Forwarding- Algorithmus nicht aktiviert. In diesem Fall dient
das Register 1 ganz normal als Daten-Quellregister zur Ausführung des zweiten
Addier-Befehls.
Im folgenden soll ein Beispiel angegeben werden, das Forwarding erfordert.
ADD
ADD R1,
R1, R2,
R2, R3
R3
SUB R4, R1, R5
AND R6, R1, R5
OR R7, R1, R4
IF
ID
EX
IF
ID
IF
MEM
WB
EX
MEM
WB
ID
EX
MEM
IF
ID
XOR R8, R7, R1
IF
EX
ID
W
B
MEM
EX
WB
MEM
W
B
Wie oben dargestellt wurde, berechnet der erste Befehl einen Wert, der in R1
gespeichert wird. Die nachfolgenden Befehle nutzen alle diese Quelle R1. Das
Problem besteht nun darin, daß das Ergebnis aus dem ersten Befehl noch nicht die
Abspeicherphase WB durchlaufen hat, das Ergebnis also „offiziell“ noch nicht zur
Verfügung steht. In diesen Fällen wird also der Wert, der in Register R1 steht als
Quellregister an die nachfolgenden Befehle weitergeleitet, bis die Write Back Phase
des ersten Befehls abgeschlossen ist. Erst, wenn der Befehl XOR durchgeführt wird,
steht das Ergebnis aus dem ersten Befehl „offiziell“ zur Verfügung und kann als
„normale“ Quelle genutzt werden.
Die Nutzung des Bypass ist immer aufwendig, weil jeder Befehl, der einen Bypass
nutzt, eine spezielle Hardware benötigt. Dadurch wächst die erforderliche Hardware
möglicherweise stark an. Eine Möglichkeit, den „richtigen“ Wert von R1 schneller zu
erhalten und verarbeiten zu können und auf einen Bypass zu verzichten, wird im
99
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
folgenden aufgezeigt. In einem Taktzyklus wird nun nämlich auf die Register
zweimal zugegriffen; damit kann man in der ersten Takthälfte von WB schreiben
und in der zweiten Hälfte von ID lesen. In der folgenden Skizze ist dieses Verhalten
dargestellt.
ADD R1, R2, R3
IF
ID
EX
MEM
WB
w
SUB R4, R1, R5
AND R6, R1, R5
OR R7, R1, R4
IF
ID
r
EX
MEM
IF
ID
r
EX
MEM
IF
ID
r
EX
XOR R8, R7, R1
IF
W
B
w
ID
r
WB
w
MEM
WB
w
EX
MEM
WB
w
Jede Bypass Ebene benötigt ein Komparatorpaar und ein Latch, um zu testen, ob
die nächsten Befehle dieselben Register als Ziel und Quelle haben. Im folgenden
Bild ist eine Struktur angegeben, die solche Bypass-Einheiten enthält: Hierbei
werden 2 Ergebnis-Register am ALU Ausgang eingefügt, um die Ergebnisse in den
nächsten beiden WB-Stufen in die Zielregister zu speichern. Bei ALU-Operationen
wird Forwarding immer dann ausgeführt, wenn Befehle, die ein Resultat als Quelle
benötigen, in die Execute-Phase eintreten. Die Ergebnisse in den Latches können
entweder als Eingang zu den der ALU vorgeschalteten Multiplexern sein oder aber
auch als Eingang zu den Registern dienen. Die Steuerung der Multiplexer ist
Aufgabe der Steuereinheit des Rechners, sie muß alle Ziele und Quellen in der
Pipeline überwachen. Eine andere Möglichkeit besteht in der direkten Steuerung
durch die Steuerlogik der Bypass-Einheit. In diesem Fall muß der Bypass-Puffer
100
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
tags mit der Registernummer des Wertes enthalten, für die er bestimmt ist. Bei
jedem Ereignis muß die Logik also überprüfen, ob ein Quellregister eines nächsten
Befehls mit dem Zielregister des aktuellen Befehls identisch ist. Wenn das zutrifft,
wird der Multiplexer angesteuert, um das entsprechende Resultatsregister anstelle
des Busses auszuwählen. Da die ALU in einer einzigen Pipeline Stufe arbeitet,
benötigt man, falls der Bypass implementiert gewesen ist, keinen Pipeline Wartezyklus mit irgendeiner Kombination von ALU-Befehlen.
Die Inhalte der Latches in der folgenden Skizze sind für den Augenblick aufgezeigt,
in dem der AND-Befehl der Beispiels-Befehlsfolge dabei ist, die Execute Stufe zu
starten. Der ADD-Befehl, der R1 (2. Latch) berechnet, ist in seiner WB-Stufe, der
linke Eingangsmuxer ist gesetzt, um den gerade berechneten Wert von R1 als den
ersten Operanden des AND-Befehl (nicht den von Register-File gelesenen)
durchzustellen. Das Ergebnis der Subtraktion, R4, ist im 1. Latch vorhanden.
101
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Bisher haben wir nur Operationen mit Quell- und Zielregistern betrachtet. Jedoch
ErgebnisSchreibbus
Register-File
MUX
MUX
Bypass Pfad
ALU
R4
R1
Ergebnis Latches
Ergebnis Schreibbus
ALU Bypass Einheit
wird im Regelfall nicht ein Register das Ziel einer Operation sein, sondern das
Resultat wird an einer bestimmten Stelle im Haupt-Speicher abgelegt.
102
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Cachezugriffe, d. h. Zugriffe auf schnelle Zwischenspeicher zwischen Prozessor und
Hauptspeicher können auch dazu führen, daß Speicherzugriffe in der gewünschten
Reihenfolge nicht korrekt behandelt werden. Das kann dann passieren, wenn wir
dem Prozessor erlauben, spätere Befehle abzuarbeiten, während ein
vorhergehender Befehl , der den Cache verfehlte, zum Speicher zugriff. In unserem
Fall stoppen wir einfach die gesamte Pipeline und erreichen damit, daß derjenige
Befehl, der den Fehlzugriff enthielt, mehrere Taktzyklen zur Abarbeitung läuft. Bei
der Erklärung der Daten-Hazards haben wir immer nur die CPU Register betrachtet.
In einem Rechner gibt es jedoch als mögliche Quellen und Ziele von
Datentransporten auch andere Speichertypen. Speicher-Speicherbefehle sind
Beispiele dafür.
Das Forwarding können wir so verstehen, daß das Ergebnis direkt zu dem Eingang
der anderen funktionellen Einheit weitergeleitet wird, die es anfordert anstatt es vom
Ausgang dem Eingang derselben funktionellen Einheit zur Verfügung zu stellen.
Beispiel:
ADD
R1, R2, R3
SW
25 (R1), R1
Bei dieser Befehlsfolge müßten wir den Wert von R1 von der ALU zur ALU
bereitstellen, so daß er zur Berechnung der effektiven Adresse genutzt werden kann
und auch zum Memory Data Register (MDR) weiterleiten, damit er ohne einen
Wartezyklus gespeichert werden kann.
Daten - Hazards können durch einen der drei Typen, abhängig von der Reihenfolge
der Lese- und Schreibzugriffe in den Befehlen gekennzeichnet werden. Der Name
der Hazards richtet sich
nach der Reihenfolge im Programm. Betrachten wir zwei Befehle i und j, wobei i
Vorgänger von j ist:
 RAW (read after write):
j versucht, eine Quelle zu lesen, bevor sie i
schreibt, d.h. zur Verfügung stellt. Auf diese Weise erhält j den alten Wert von i
und damit einen unkorrekten Wert.
 WAR (write after read) j versucht, ein Ziel zu schreiben, bevor es durch i gelesen
wurde. So erhält i unkorrekt den neuen Wert. In unserer Beispielpipeline kann
dieser Effekt nicht auftreten, da alle Leseoperationen früh (während ID) und alle
Schreiboperationen spät (nämlich in WB) liegen. Dieser Hazards tritt dann auf,
wenn es Befehle gibt, die früh in der Befehlspipeline Ergebnisse schreiben und
andere Befehle in der Pipeline , die eine Quelle nach dem Schreiben im Befehl
lesen. Zum Beispiel kann eine Autoinkrement-Adressierung einen WAR-Hazard
verursachen.
 WAW (write after write) j versucht, einen Operanden zu schreiben, bevor er durch
i geschrieben wurde. Die abgeschlossenen Schreiboperationen werden in der
falschen Reihenfolge ausgeführt und hinterlassen so den Wert von i anstelle des
von j geschriebenen Wertes im Ziel. Allerdings ist dieser Hazard-Typ nur in
pipelines möglich, die in mehr als einer Stufe schreiben oder die einem Befehl
auch dann die Fortsetzung erlauben, wenn ein vorangegangener Befehl
103
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
angehalten wurde. Unser eingeführter Pipelinetyp jedenfalls vermeidet diesen
Hazardtyp: er beschreibt ein Register nur im WB - Zyklus.
 Die vierte Möglichkeit, der RAR (read after read) ist gar kein Hazard - Typ. Da
der Inhalt der Register beim Lesen nicht verändert wird, können hierbei keine
Hazards entstehen.
Wie wir gesehen haben, können Daten- Hazards im allgemeinen ohne
Leistungsverlust behandelt werden. Das Bypassing bzw. Forwarding stellt hierzu ein
wichtiges Werkzeug dar. Allerdings gilt dies nicht für alle auftretenden Hazards.
Folgendes Beispiel sei dazu gegeben:
LW
R1, 32 (R6)
ADD R4, R1, R7
SUB R5, R1, R8
AND R6, R1, R7
Der LW-Befehl enthält erst dann die richtigen Daten, wenn der MEM-Zyklus beendet
ist. Das bedeutet, daß der ADD-Befehl den korrekten Wert aus R1 nicht rechtzeitig
zu Beginn des nächsten Taktzyklus erhält. Mit unseren eingeführten Hilfsmitteln wie
forwarding kann der Daten-Hazard in diesem Fall nicht vermieden werden. Jedoch
können wir das Ergebnis des LW-Befehls unmittelbar an den SUB-Befehl
übergeben, der zwei Taktzyklen nach dem Laden startet und damit das korrekte
Ergebnis aus LW übernehmen kann. Für den ADD-Befehl jedoch kommt das durch
Forwarding bereitgestellte Ergebnis zu spät. Statt am Ende eines Taktzyklus müßte
es bereits zu Beginn verfügbar sein.
LW R1, 32 (R6)
ADD R4, R1, R7
SUB R5, R1, R8
AND R6, R1, R7
IF
ID
IF
EX
ID
IF
MEM
EX
ID
IF
WB
MEM
EX
ID
Das Besondere an dem Ladebefehl (Speicherzugriff!) ist, daß er eine
Verzögerungszeit (Latenzzeit) hat, die i.a. nicht durch Forwarding allein eliminiert
werden kann. Ein Weg zur Lösung dieses Problems liegt in der Einführung einer
Pipeline-Blockierung (pipeline-interlock). Wird ein Hazard durch eine PipelineBlockierung erkannt, so hält sie die Pipeline an (stall) und wartet, bis die
erforderlichen Daten korrekt zur Verfügung gestellt sind. Dieser Verzögerungszyklus
wird auch Wartezyklus (pipeline-stall oder bubble) genannt. Danach können die
Daten aus dem Ladebefehl durch Forwarding weitergeleitet werden.
104
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Das folgende Beispiel zeigt die beschriebene Situation:
beliebiger
IF
Befehl
LW R1, 32 (R6)
ADD R4, R1, R7
SUB R5, R1, R8
AND R6, R1, R7
ID
EX
MEM WB
IF
ID
IF
EX
ID
IF
MEM
stall
stall
stall
WB
EX
ID
IF
MEM WB
EX
MEM WB
ID
EX
MEM WB
Der Prozeß der Befehlsübergabe von der Befehlsdekodierungsstufe (ID) in die
Ausführungsstufe (EX) dieser Pipeline wird i.a. Befehlsübergabe (instruction issue)
genannt und der übergebene Befehl als issued bezeichnet. In unserer Struktur
werden alle diese Daten-Hazards während der ID-Stufe der Pipeline getestet und
bei Vorliegen eines Hazards der Befehl zurückgehalten, bevor er übergeben wird.
Es gibt jedoch auch Situationen, die im Vergleich zu den hier besprochenen
wesentlich komplexer sind. Je früher aber ein Hazard (eine Blockierung) in einer
Pipeline erkannt wird, desto „einfacher“ ist der dazu notwendige zusätzliche
Hardwareaufwand.
Wartezyklen werden in Abhängigkeit von der Umgebung, in der sie auftreten,
charakterisiert. Viele Wartezyklustypen treten recht häufig auf. Dazu gehören z.B.
die Zyklen, die im Zusammenhang mit den Ladebefehlen auftraten. Soll z.B. eine
Addition A = B + C durchgeführt werden, so muß der „Codegenerator“ einen
Steuercode generieren, der diese Addition korrekt auszuführen gestattet. In
unserem Beispiel müssen wir einen Wartezyklus zum Laden des zweiten Operanden
einfügen. Die folgende Tabelle zeigt, daß das Speichern nicht zu einem weiteren
Wartezyklus führen muß, weil das Ergebnis der Addition durch Forwarding zum MDR
weitergeleitet werden kann. Maschinen, bei denen die Operanden für arithmetische
Operationen vom Speicher kommen können, erfordern einen Pipeline-Wartezyklus in
der Mitte des Befehls, um auf die Beendigung seines Speicherzugriffs zu warten.
LW R1, B
LW R2, C
ADD R3, R1, R2
SW A, R3
IF
ID
IF
EX
ID
IF
MEM WB
EX MEM
ID
stall
IF
stall
WB
EX
ID
MEM WB
EX MEM
WB
Anstatt einen Pipeline-Wartezyklus zu erlauben, könnte der Compiler versuchen,
durch Umordnung der Codefolge das Auftreten von Hazards zu vermeiden
(Scheduling der Pipeline).
Zum Beispiel würde der Compiler vermeiden, Code mit einem Ladebefehl zu
generieren, dem die unmittelbare Nutzung des Ladezielregisters folgt. Diese
Methode bezeichnen wir mit pipeline scheduling oder instruction scheduling.
Es gibt Maschinen, die entsprechende Software voraussetzen, um solche DatenHazards zu vermeiden. Ein Ladebefehl, der verbietet, daß der folgende Befehl
bereits sein Ergebnis benutzt, wird als verzögerter Ladebefehl (delayed load)
bezeichnet. Der Platz nach einem Ladebefehl wird bei Pipelining oft Lade-
105
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Verzögerungsplatz (load delay slot) genannt. Kann der Compiler eine Blockierung
beim Scheduling nicht vermeiden, so wird ein Leerbefehl eingefügt (noop operation)
Das beeinflußt nicht die Laufzeit, vergrößert aber den benötigten Codespeicherplatz
gegenüber einer
Maschine mit Blockierung. Ob nun eine Hardware diese Blockierung erkennt und
diese Pipeline anhält oder auch nicht; in beiden Fällen wird die Leistung durch
Schedulierung der Befehle im Compiler verbessert. Wenn ein Wartezyklus auftritt,
wird der Leistungseinfluß derselbe sein, unabhängig davon , ob die Maschine einen
Leerzyklus oder eine noop- Operation durchführt.
Wie wir bereits früher erwähnt haben, betrachten wir in unseren einfachen
Beispielen meist die unmittelbare Nutzung der Ergebnisse nach dem Ladebefehl.
Das kann durch eine einfachen Vergleicher erfolgen, der auf die Registeradressen
des Ladeziels und der Quelle achtet. Eine Hardware dafür erfordert, den Ladebefehl
Daten-Hazard zu erkennen, zu steuern und das Ladeergebnis durch Forwarding wie
folgt, bereitzustellen:
 zusätzliche Multiplexer an den Eingängen der ALU (dieselben, wie für die
Bypass-Hardware der Register-Register-Befehle notwendig sind)
 Einen zusätzliche Pfad vom MDR zu beiden Multiplexereingängen der ALU
 Einen Puffer, um die Zielregisteradressen der vorangegangenen zwei Befehle zu
speichern (dasselbe wie beim Register-Register-Forwarding)
 Vier Vergleicher, um die zwei möglichen Quellregisterfelder mit den
Zielregisterfeldern der vorangegangenen Befehle zu vergleichen , bzw. auf
Übereinstimmung zu achten.
106
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Die Vergleicher prüfen auf Ladebefehls-Blockierungen zu Beginn eines EX-Zyklus.
Die vier Möglichkeiten und die dann erforderlichen Maßnahmen sind in der
folgenden Tabelle ersichtlich.
Situation
Keine Abhängigkeit
Beispiels - Befehlsfolge
LW R1, 45 (R2)
ADD R5, R6, R7
SUB R8, R6, R7
OR R9, R6, R7
Abhängigkeit erfordert einen LW R1, 45 (R2)
Wartezyklus
ADD R5, R1, R7
SUB R8, R6, R7
OR R9, R6, R7
Abhängigkeit durch
Forwarding vermieden
LW R1, 45 (R2)
ADD R5, R6, R7
SUB R8, R1, R7
OR R9, R6, R7
Abhängigkeit von Zugriffen LW R1, 45 (R2)
in zeitgerechter Reihenfolge ADD R5, R6, R7
SUB R8, R6, R7
OR R9, R1, R7
Aktion
Kein Hazard möglich, weil
keine Abhängigkeit zu R1 in
den drei unmittelbar
folgenden Befehlen gegeben
ist
Vergleicher erkennen die
Nutzung von R1 in ADD und
halten den ADD-Befehl (und
SUB und OR) an, bevor ADD
mit EX beginnt.
Vergleicher erkennen die
Nutzung von R1 in SUB und
stellen das
Ladebefehlsergebnis der ALU
rechtzeitig für SUB zu Beginn
von EX bereit
Keine Aktion erforderlich, weil
das lesen von R1 durch OR in
der zweiten Hälfte der IDPhase und das Schreiben de
zu ladenden Daten in der
ersten Hälfte erfolgt
Im Normalfall, bei der die Pipelines (häufig auch kurz pipes genannt) eine
wesentlich größere Tiefe als in unseren Beispielen haben, werden die
entsprechenden Überlegungen zur Vermeidung von Hazards wesentlich komplexer.
Steuer-Hazards
Steuer Hazards verursachen in der Pipe - wenn sie auftreten - meist einen größeren
Leistungsverlust als Daten - Hazards. Wenn ein Verzweigebefehl ausgeführt wird,
kann der PC um einen Wert ungleich 4 inkrementiert werden. (im Normalfall wird die
Adresse im PC um 4 erhöht). Wenn der Befehl i eine auszuführende Verzweigung
ist, dann wird normalerweise der PC bis zum Ende von MEM , d.h. der Beendigung
der Adreßberechnung und des Vergleiches nicht geändert. Das bedeutet drei
Wartezyklen , bis der neue PC bekannt ist und der korrekte Befehl geholt werden
kann. Dieser Effekt wird Steuer- oder Verzweige-Hazard genannt. In der
untenstehenden Tabelle ist die (ideale) Situation nach einem Steuer-Hazard
aufgezeigt. Man erkennt sofort die Schwierigkeit, nämlich , daß der Verzweigebefehl
nicht dekodiert ist, bis der Befehl i+1 geholt worden ist. Das bedeutet auch, daß die
107
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
folgende Pipeline in der Praxis gar nicht arbeiten könnte, weil wir nicht wissen, daß
der Befehl ein Verzweigebefehl ist, bis wir den nächsten Befehl geholt haben.
Verzweigebefehl
Befehl i+1
Befehl i+2
Befehl i+3
Befehl i+4
Befehl i+5
Befehl i+6
IF
ID
stall
EX
stall
stall
MEM
stall
stall
stall
WB
IF
stall
stall
stall
ID
IF
stall
stall
stall
EX
ID
IF
stall
stall
stall
MEM WB
EX MEM WB
ID
EX MEM
IF
ID
EX
stall
IF
ID
stall stall
IF
ID
IF
stall
stall
stall
EX
ID
IF
stall
stall
stall
MEM WB
EX MEM WB
ID
EX MEM
IF
ID
EX
stall
IF
ID
stall stall
IF
In der Praxis sieht das meist wie folgt aus:
Verzweigebefehl
Befehl i+1
Befehl i+2
Befehl i+3
Befehl i+4
Befehl i+5
Befehl i+6
IF
ID
IF
EX
stall
stall
MEM
stall
stall
stall
WB
IF
stall
stall
stall
In der obigen Tabelle wird folgendes klar: Der Befehl i+1 ist geholt, aber der Befehl
wird ignoriert und das Holen erneut gestartet, wenn das Ziel der Verzweigung
bekannt ist. Es wird auch offensichtlich, daß im Falle einer nicht ausgeführten
Verzweigung das zweite IF für Befehl i+1 redundant ist.
Das Verschwenden von drei Taktzyklen bei jedem Verzweigebefehl führt zu einem
signifikanten Leistungsverlust in der Pipeline. Mit einer Verzweigebefehlshäufigkeit
von etwa 30% und einem CPI-Wert von 1 erreicht die Maschine mit drei
Verzweigewartezyklen nur etwa die Hälfte der idealen Leistungssteigerung einer
Pipeline. Damit werden die Verzweigungsverluste ein signifikantes Problem. Jedoch
kann man diesem Leistungsverlust durch folgende Maßnahmen entgegenwirken:
 Frühes Herausfinden des ausgeführten oder nicht ausgeführten
Verzweigebefehls in der Pipeline.
 Frühes Berechnen der Zieladresse für den PC bei auszuführender Verzweigung.
Will man den Vorgang optimieren, dann wendet man vorteilsweise beide Verfahren
an.
Dabei erfordert die Berechnung der Verzweige-Zieladresse einen separaten
Addierer, der während der ID-Phase addieren kann. Mit einem separaten Addierer
und einer während ID zu treffenden Entscheidung gibt es nur einen Wartezyklus bei
Verzweigungen.
In einigen Maschinen sind die Verzweige-Hazards noch wesentlich aufwendiger als
in dem folgenden Beispiel, weil die Zeit für die Bewertung der Verzweigebedingung
und die Berechnung des Zieles sogar noch länger sein kann.
108
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Pipeline-Stufe
IF
Verzweigebefehl
IR  MEM[PC];
PC  PC + 4;
ARs1; BRs2; PC1PC; IR1IR;
BTA  PC +((IR16)16 ## IR 16...31)
if (Rs1 op 0) PC  BTA
ID
EX
MEM
WB
Die Operationen, die neu oder verändert sind, sind fett gedruckt. Weil die
Verzweigezieladreß- (branch target address (BTA)) - Addition sich während ID
ereignet , wird sie bei allen Befehlen ausgeführt; für die Verzweigungsbedingungen
(Rs1 op 0) ist dies auch zutreffend. Die letzte Operation in ID ist das Ersetzen des
PC. Bevor wir den Befehl ausführen, müssen wir wissen, daß der Befehl eine
Verzweigung ist. Das erfordert die Dekodierung des Befehls vor dem Ende von ID
oder ganz zu Beginn von EX, wenn der Wert des PC weitergeleitet wird. Weil die
Verzweigung am Ende von ID ausgeführt wird, sind die Stufen EX, MEM und WB für
Verzweigungen ungenutzt. Eine weitere Schwierigkeit ergibt sich für Sprünge
(jumps), deren Offset länger ist. Dieses Problem wird durch einen weiteren Addierer
gelöst, der den Wert im PC und die niederen 26 Bit des IR addiert. Eine Alternative
hierzu wäre ein Schema, das eine 16-Bit-Addition ausführt und bestimmt, ob 10 Bit
von IR in der zweiten Zyklushälfte zu addieren sind, indem der SprungOperationscode früh dekodiert wird.
Verzweigeverhalten in Programmen
Verzweigungen können die Pipeline-Leistung erheblich beeinflussen. Aus unserer
Programmierpraxis wissen wir bereits, daß Verzweigungen (Sprünge) im
Programmablauf recht häufig vorkommen. In der folgenden Tabelle sind
Gesamthäufigkeiten von Sprüngen aufgeführt. Die darin enthaltenen Daten
repräsentieren den Durchschnitt über gemessene Programme. Befehle werden in
zwei Klassen, die unbedingten und bedingten Sprünge unterteilt.
Intel 8086
VAX
unbedingt
bedingt
unbedingt
bedingt
0,02
0,11
0,08
0,17
Zu der Unterscheidung, ob es sich um einen bedingten oder unbedingten Sprung
handelt, ist die Beobachtung von Bedeutung, ob der vorhandene Sprung auch
tatsächlich ausgeführt wird. Dadurch wird eine Strategie zur Reduzierung der
Leistungsverluste durch die Sprünge (Verzweigungen) sicherlich beeinflußt.
Reduzierung der Pipeline-Verzweigungsverluste
109
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Wir wollen in diesem Abschnitt statische, d.h. für die gesamte Zeit der Ausführung
feste Verfahren besprechen. Die einfachste Möglichkeit ist natürlich, die gesamte
Pipeline während der Verzweigung einzufrieren, in dem alle Befehle, die sich hinter
dem aktuellen Befehl in der Pipe befinden, angehalten werden, bis das
Verzweigungsziel bekannt ist. Diese Methode haben wir bereits besprochen.
Ein leicht aufwendigeres Verfahren ist, die Ausführungen als nicht ausgeführt
anzunehmen und so der Hardware einfach die Fortsetzung der Abarbeitung zu
erlauben, als ob die Verzweigung nicht auszuführen wäre. Dazu wollen wir uns
folgendes Schema näher ansehen:
NAV
Befehl i+1
Befehl i+2
Befehl i+3
Befehl i+4
IF
AV
Befehl i+1
Befehl i+2
Befehl i+3
Befehl i+4
IF
ID
IF
ID
IF
EX
ID
IF
EX
IF
stall
MEM
EX
ID
IF
MEM
ID
IF
stall
WB
MEM
EX
ID
IF
WB
MEM
EX
ID
WB
MEM
EX
WB
MEM
WB
WB
EX
ID
IF
stall
MEM
EX
ID
IF
WB
MEM
EX
ID
WB
MEM
EX
WB
MEM
Legende:
NAV : Nicht ausgeführter Verzweigungsbefehl
AV : Ausgeführter Verzweigungsbefehl
Die Skizze ist wie folgt zu verstehen: Wenn die Verzweigung während ID nicht
ausgeführt ist, haben wir den nächsten Befehl geholt und setzen die Bearbeitung
fort. Das Problem tritt genau dann ein, wenn eine Abfrage im Programm enthalten
ist, die auf „wahr“ oder „falsch“ eines Zustandes abprüft, z.B. if „Zustand“ „wahr“
dann mache mit dem nächsten Befehl weiter, sonst „springe nach Adresse xyz“
Wenn jedoch die Verzweigung während ID als ausgeführt erkannt wird, starten wir
das Befehlsholen beim Verzweigeziel. Das aber verursacht bei allen der
Verzweigung folgenden Befehlen einen Wartezyklus von einem Takt.
Ein Problem des beschriebenen Algorithmus liegt darin, daß wir darauf achten
müssen, uns die Zustände des Rechners zu merken, bis das Ergebnis der Abfrage
zur Verzweigung, definitiv feststeht. Dazu müßte man bei Bedarf die Pipe leeren
(pipeline flushing) und mit den aktuellen Daten überschreiben.
Manche Maschinen nutzen eine andere verzögerte Verzweigung (delayed branch).
Die verzögerte Verzweigung nutzt dabei eine Verzögerung der Länge n, wobei n die
Anzahl der zwischengeschobenen sequentiellen Befehle (ohne Sprungbefehl)
angibt:
Verzweigebefehl
110
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
sequentieller Nachfolger 1
sequentieller Nachfolger 2
sequentieller Nachfolger i
......
sequentieller Nachfolger n-1
sequentieller Nachfolger n
Verzweigebefehl, wenn ausgeführt
Die oben angegebenen „sequentiellen Nachfolger j befinden sich in den
Verzweigeverzögerungsplätzen (branch delay slots). Wie bei den
Ladeverzögerungsplätzen ist es Aufgabe der Software, die Nachfolgebefehle
geeignet anzuordnen. Die folgende Skizze zeigt drei mögliche Strategien:
Scheduling Strategie
Leistung?
Voraussetzungen
Wann erhöht sich
Von vor der Verzweigung Verzweigungen dürfen nicht von
den durch Scheduling
umgeordneten Befehlen abhängen
Immer
Vom Ziel
Bei ausgeführter
Verzweigung.
Kann Programm
bei
Kann Duplizierung von Befehlen
erfordern. Umgeordnete Befehle
müssen bei nicht ausgeführter
bei der Verzweigung korrekt
abgearbeitet werden
Duplizierung von
Befehlen
vergrößern
Von den der Verzweigung Die Befehle müssen bei auszufolgenden Befehle
führender Verzweigung korrekt
abgearbeitet werden.
Wenn die Verzweigung
nicht ausgeführt wird.
Die Scheduling Strategie wird also durch den Ausgangspunkt des durch das
Scheduling in den Verzögerungsplatz einzuordnenden Befehls bestimmt. Der
Compiler muß dabei die Voraussetzungen beachten, wenn er nach Befehlen für das
Scheduling des Verzögerungsplatzes sucht. Können die Plätze nicht zugeordnet
werden, werden sie mit Leerbefehlen gefüllt.
Bei der zweiten Strategie, bei der das Verzweigeziel auch von einem andern Punkt
des Programms zugreifbar ist -wie es am Anfang einer Schleife sein würde - muß der
Zielbefehl kopiert und kann nicht einfach verlagert werden.
111
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
a) Vor der
Verzweigung
b) Vom Ziel
ADD R1, R2, R3
c) nach der Verzweigung
SUB R4, R5, R6
if R2 = 0 then
ADD R1, R2, R3
if R1 = 0 then
ADD R1, R2, R3
Delay slot
ergibt
Delay slot
if R1 = 0 then
Delay slot
SUB R4, R5, R6
ergibt
ergibt
ADD R1, R2, R3
if R1 = 0 then
If R2 = 0 then
ADD R1, R2, R3
ADD R1, R2, R3
SUB R4, R5, R6
if R1 = 0 then
SUB R4, R5, R6
Scheduling des Verzweigungsplatzes
Erläuterung:
Die obere Blockzeile jeden Befehlspaares zeigt den Code vor dem Scheduling und
die untere Blockzeile die Resultate des Schedulers. In a) weist der Scheduler dem
Verzögerungsplatz (delay slot) einen von der Verzweigung unabhängigen Befehl vor
der Verzweigung zu.
Die Strategien b) und c) werden genutzt, wenn a) nicht möglich ist. In der
Befehlsfolge b) und c) verhindert die Nutzung von R1 als Verzweigebedingung die
Verschiebeoperation des ADD-Befehls (dessen Ziel R1 ist). In b) z.B belegt der
Scheduler den delay slot mit dem Verzweigungsziel (genauer: der Zieladresse); dazu
muß der Zielbefehl gewöhnlich kopiert werden, weil er von einem anderen Pfad
erreicht werden kann. Die Strategie b) ist zu bevorzugen, wenn es mit hoher
112
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Wahrscheinlichkeit ein auszuführender Sprungbefehl ist wie z.B. eine
Schleifenverzweigung. Der Scheduler kann aber auch, wie in c) angedeutet, den bei
nicht ausgeführter Verzweigung folgenden Befehl (Geradeauszweig) nutzen. Um
diese Optimierung (b) und c)) überhaupt anwendbar zu machen, muß der SUBBefehl korrekt ausführbar sein, falls die Verzweigung nicht in die erwartete Richtung
geht. Dieser Fall tritt genau dann ein, wenn z.B. R4 ein temporäres Register wäre,
das ungenutzt bleibt, wenn die Verzweigung in die nicht erwartete Richtung geht. Im
allgemeinen werden die Strategien a) und b) vorzugsweise genutzt.
Betrachtet man diese Schedulingstrategie anhand von häufig genutzten
Anwendungsprogrammen wie TeX oder SPICE, stellt man fest, daß etwa die Hälfte
der delay-slots sinnvoll ausgelastet und damit die Hälfte der möglichen Wartezyklen
verhindert wird.
Für verzögerte Verzweigung gibt es geringe zusätzliche Hardware-Kosten. Aufgrund
der verzögernden Wirkung ist der PC (program counter) mehrfach erforderlich, um
den Zustand bei einer Programmunterbrechung (interrupt) korrekt zurückspeichern
zu können.
Es sei nun angenommen, daß der Interrupt nach einem beendeten (ausgeführten)
Verzweigebefehl auftritt, jedoch vor Beendigung aller Befehle in den delay-slots und
dem Verzweigeziel. In diesem Fall sind der PC des delay-slots und der PC des
Verzweigezieles zu retten, weil ihre Adressen nicht aufeinanderfolgen.
Im folgenden wollen wir uns einige Gedanken über die Leistung dieser verfahren
machen. Die effektive Pipeline-Beschleunigung mit Verzweigungsverlusten ist:
Pipeline  Beschleunigung 
Ideal  CPI  Pipeline  Tiefe
Ideal  CPI  Pipeline  Wartezyklen
Wenn wir die Leistung der Ideal-CPI mit 1 annehmen, können wir schreiben:
Pipeline  Beschleunigung 
Pipeline  Tiefe
1  Pipeline  Wartezyklen von Verzweigungen
Da
Pipeline-Wartezyklen von Verzweigungen = Verzweigungshäufigkeit *
Verzweigeverluste
ist, gilt:
Pipeline  Beschleunigung 
Pipeline  Tiefe
1  Verzweigungshäufigkeit  Verzweigungsverluste
Neben Pipelining wird die Ausführungsgeschwindigkeit des Programms auch durch
den Aufbau und die Verwendung von Befehlen beeinflußt.
113
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Adressierungsmodi
Die Berechnung der effektiven Operandenadressen kann bis zu zwei
Adreßrechnungen mit einer Vielzahl von Speicherzugriffen erforderlich machen. In
Mikroprozessoren gibt für die Adressrechnung ein spezielles Adressierwerk. Logisch
kann man es zwischen Steuer- und Speicherwerk einordnen.
Folgende Adressierungsarten kann man unterscheiden:
Registeradressierung:
 implizite Adressierung. Hierbei ist die Angabe des Registers im Befehlscode
enthalten. Es wird immer nur ein bestimmtes Register z.B. der Akkumulator oder
auch nur ein Flag - Bit in einem Statusregister angesprochen.
 explizite Registeradressierung. Hierbei wird explizit ein bestimmtes Register im
Befehlscode angegeben, z.B. R1.
Neben der Registeradressierung gibt es die
Speicheradressierung:
 unmittelbare Adressierung. Charakteristisch für diese Adressierungsart ist die
Angabe eines absoluten Wertes als Operand im Befehl, z.B. LDA ´10´. Dieser
Befehl bewirkt, daß der Wert 10 in den Akkumulator geladen wird. Die Größe des
Operanden wird durch die Wortbreite begrenzt.
Befehlscode
Datenwort
Akkumulator
Unmittelbare Adressierung
(Operand: Datenwort)
114
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
 direkte Adressierung. Hierbei enthält das dem Befehlswort folgende Speicherwort
die Adresse des Operanden. Im Befehl können wir die Adresse auch absolut
angeben, z.B. JMP $00FF (Sprung auf die Adresse FF). Die Adresse ist als
hexadezimaler Wert angegeben; durch das $ - Zeichen wird der Wert als Adresse
gekennzeichnet. Auch symbolische Adressen sind möglich. Hierbei setzt der
Compiler bei der Ausführung als Adresse den aktuellen Wert für die symbolische
Adresse ein, z.B. STA GEHALT.
Adresse
Befehlscode
Speicher
Direkte Adressierung
(Operand: effektive Adresse)
 indirekte Adressierung
 indirekte Registeradressierung. Hierbei enthält das im Registerfeld
angegebene Register die Adresse des Operanden (pointer), z.B. DEC (R1).
Der Befehl bewirkt, daß der Inhalt des Speicherworts, dessen Adresse in
Register R1 angegeben ist, um 1 dekrementiert wird.
115
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
 indirekte Adressierung; hier enthält das adressierte Speicherwort einen
Pointer auf den Operanden. Es besteht die Variante, daß auch der Pointer
nochmals durch einen 2. Offset und ein 2. Register modifiziert wird.
Befehlscode
Adresse
Speicher
Indirekte Adressierung
(Operand: Adresse der Speicherzelle, in der die
effektive Adresse steht)
 indizierte Adressierung. Bei diesem Verfahren wird die effektive Speicheradresse
durch Addition eines Offset, der auch negativ sein kann, zum Inhalt eines
Registers berechnet, z.B. LDA $01AF (R1). Eine Variante hiervon ist die Angabe
eines Basisregisters, eines Indexregisters und eines Offset im Befehl. Dort werden
die Inhalte der beiden Register und der Offset addiert, was dann die effektive
Adresse (aktuelle Adresse) ergibt.
Beobachtet man die Ausführungszeiten der Befehle, so liegt der Schluß nahe, nach
schnelleren Verfahren zu suchen. Hier lag der Grund zur Entwicklung der RISC
116
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Prozessoren. (reduced instruction set computer) Mit Hilfe des Monitoring wurde
erkannt, daß die am häufigsten auftretende Befehlsgruppe die der Transportbefehle
(etwa 45%) ist, gefolgt von Verzweigungsbefehlen (etwa 30%) und arithmetischen
Befehlen mit etwa 10%. Wir stellen also fest, daß Rechner in erster Linie, wie auch
zu Anfang der Vorlesung behauptet, keine arithmetischen Befehle, sondern vielmehr
Transportbefehle wie Sortieren, Schieben, etc. ausführt.
Basis - Register
Befehlscode
Basisadresse
Indexadresse
ADD
Basis
Index
Basis + Index
Indizierte Adressierung
Als Beispiele und zur Vertiefung der Adressierungsarten sollen im folgenden anhand
des Befehlssatzes des Motorola 68000 die Adressierungsmodi vorgeführt werden.
Die MC 68000 Architektur verwendet als Datenformate Byte, 16bit-Worte,
Doppelworte mit 32 bit und Quadworte mit 64 bit. Das jeweils MSB enthält das
Vorzeichenbit. Bei vorzeichenlosen Daten ist das MSB mit dem Wert „0“ gesetzt.
Intern stehen im MC68000 folgende programmierbare Register bereit:
117
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
 8 Datenregister D0,...., D7 für 32 bit Worte. Die Datenregister können Langworte
(32bit), Worte und Bytes speichern.
 8 Adreßregister A0,..., A7 für 32 bit-Worte. Beim 68000 werden davon aber nur
die unteren 24 bit verwendet; damit kann hier ein Adreßraum von 16 Megabyte
adressiert werden. Beim 68020 werden alle 32 Bit genutzt; das entspricht einem
Adreßraum von 4 Gigabyte. Das Register A7 hat eine Sonderfunktion; es
speichert die Rücksprungadressen bei Unterprogrammen und wird als
Stackpointer bezeichnet. In der Realisierung ist dieses Register doppelt
vorhanden; einmal ist es von Benutzer her adressierbar und nennt sich USP
(user stack pointer) zum andern steht es dem „supervisor“ zur Verfügung und wird
mit SSP (supervisor stack pointer) genannt.
 Das Register PC wird als Befehlszähler (Program Counter) genutzt.
 Das Statusregister SR ist ein 16bit-Register, in welchem ein „Benutzerbyte“ und
ein „Systembyte“ verfügbar ist. Das Benutzerbyte besteht aus den Statusbits
(Flags) die den Charakter der ALU-Ergebnisse (Carry, Overflow,... etc) anzeigen.
Zusätzlich gibt es ein X-Bit (X-Extension). Bei einfachen Instruktionen wird in X
der C-Wert kopiert; bei Operationen mit Zahlen, die in mehreren Registern
dargestellt werden (erweiterte Genauigkeit) zeigt das X Bit das für alle betroffenen
Register gemeinsame Carry Bit. Das Systembit des Statusregisters ist
befehlsunabhängig und für den normalen Benutzer nicht zugänglich. Es maskiert
mit I2 I1 I0 die Klasse der vom Prozessor akzeptierten Unterbrechungssignale. S
zeigt den Supervisor-Modus und T den sogenannten Trace-Modus des
Prozessors an, in dem nach jeder Operation automatisch die Belegung des
Statusregisters ausgegeben wird.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
T 0 S 0 0 I2 I1 I0 0 0 0 0 X N V C
Systembyte
Benutzerbyte
Statusregister des MC 68000
Der Hauptspeicher wird vom MC68000-Prozessors byteweise fortlaufend adressiert.
Wortadressen sind immer gradzahlig; Quadadressen immer durch 4 teilbar. Man
unterscheidet zwische dem MSB (most significant byte oder auch Hi-Byte) und dem
LSB (lowest significant byte oder auch Lo-Byte) Das Hi-Byte gibt dann entsprechend
die „Wortadresse“ an.
118
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Die Adressen gibt man i.a. in Hexedezimalschreibweise an..
Byteadre
ssen
Hi Byte
000000
000002
000004
000006
000008
Wortadres
sen
Lo-Byte
000001
000003
000005
000007
000009
000000
000002
000004
000006
000008
FFFFF8
FFFFFA
FFFFFC
FFFFFE
FFFFF9
FFFFFB
FFFFFD
FFFFFF
FFFFF8
FFFFFA
FFFFFC
FFFFFE
Langwortad
ressen
Hi-Word
Lo-Word
000000
000004
000008
FFFFF8
FFFFFC
Zur Unterscheidung von Speicheradresse und Speicherinhalt werden die Adressen
i.a. durch eine 6-stelligen Hexadezimalzahl s5,....,s0 angegeben und der Inhalt des
adressierten Speicherplatzes entsprechend geklammert (s5,....,s0). Wird also unter
der Adresse 00FFFE16 z.B. der Wert 081516 gespeichert, so wird das mit (0FFFE16)
= 081516 angegeben.
In den Assemblern verschiedener Prozessoren gibt es verschiedene Vereinbarungen
über Zahlendarstellungen. Meist jedoch finden wir die folgenden Konventionen
realisiert: Häufig wird stillschweigend die Dezimaldarstellung vereinbart, wenn nicht
ausdrücklich andere Darstellungen wie z.B. die Hexadezimal- oder auch die
Binärdarstellung vereinbart wird. Eine Hexadezimaldarstellung zeigt sich durch ein
vorangestelltes $ (Präfix) ($1101) und bei der Binärdarstellung durch ein % als Präfix
(%1101). ASCII-Zeichen werden i.a. durch Hochkommata eingeschlossen.
119
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Im MC68000 ist eine Vielzahl von Adreßmodi wählbar. Hier gibt es drei
Adreßmodusbits, die mit 3 Registerindexbits für 12 verschiedene Adreßmodi benutzt
werden können. In den Modi 000 bis 110 werden die Registeradressen r2r1r0 = 000
bis r2r1r0= 110 angegeben. Mit dem Modus 111 können 5 weitere Adressierungsarten
ohne eine spezielle Registerangabe ausgewählt werden. Aus Adreßmodus und den
im Befehl spezifizierten Registern wird die effektive Adresse berechnet. Die
folgende Tabelle zeigt die verschiedenen Adreßmodi des MC68000:
000r2r1r0
001r2r1r0
010r2r1r0
011r2r1r0
100r2r1r0
101r2r1r0
110r2r1r0
111000
111001
111010
111011
111100
Datenregisterdirekt
Adreßregisterdirekt
Adreßregisterindirekt
Adreßregisterindirekt mit Postinkrement
Aderßregisterindirekt mit Prädekrement
Adreßregisterindirekt mit Verschiebung
Adreßregisterindirekt mit Verschiebung und Index
Kurze absolute direkte Adresse
(Lange) absolute direkte Adresse
Befehlszählerrelativ mit Verschiebung
Befehlszählerrelativ mit Verschiebung und Index
Unmittelbare Adresse
Bei der datenregisterdirekten Adressierung steht der Operand im spezifischen
Datenregister:
ADD.W D7, D4
Bemerkung: Der Inhalt des Datenregisters D4 wird zum Inhalt von D7 addiert. Das
Ergebnis steht in D4.
Die adreßregisterdirekte Adressierung funktioniert mit Operanden im spezifische
Adreßregister:
MOVE.L A7,D5
Bemerkung: Der Inhalt des Adreßregisters A7 (Stackpointer) wird in das
Datentegister D5 kopiert. Das Suffix .L gibt an, daß Langworte (32 bit) verarbeitet
werden.
Adreßregisterindirekt Adressierung verwendet eine Operandenadresse aus dem
speuzifizierten Adreßregister. Verarbeitet wird der Inhalt (Ai) des Adreßregisters Ai:
AND.W (A3), D6
120
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Bemerkung: Die indirekte Adressierung wird durch die Klammerung des Registers
angegeben. Der Inhalt des Speicherwortes X, dessen Adresse in A3 steht, wird
bitweise mit dem Inhalt des LoWords von D6 konjunktiv verknüpft. (UND-Funktion)
Bei der unmittelbaren Adressierung (immediate address mode) von Wortbefehlen
steht der Operand direkt im Speicherwort hinter dem Maschinenbefehlscode:
ADDI.W #$123F, D3
Bemerkung: ADDI gibt an, daß der Addierbefehl einen unmittelbaren Operanden hat.
Das Suffix .W gibt dabei an, daß es sich um einen Wortbefehl handelt, das Präfix #
zeigt einen unmittelbaren Operanden, nämlich die Hexadezimalzahl $123F 16. Der
Befehl addiert also $123F16 zum Inhalt des Datenregisters D3. Der Befehlszähler
wird nach dem Lesen der Operation ADD mit Adreßmodus und Registerindex D3 um
2 erhöht, findet dann den unmittelbaren Operanden #123F und erhöht, nachdem er
diesen gelesen hat, den Befehlszähler nochmals um 2.
Bei der kurzen absoluten direkten Adressierung steht die Operandenadresse direkt
im Speicherwort hinter dem Befehlscode. Die Adresse ist kurz, d.h. 16 Bit lang.
Insgesamt können also nur 64 kB als absolut kurze Adresse angesprochen werden,
d.h. die Hauptspeicheradressen 00000016 bis 007FFF16 oder zwischen FF800016 bis
FFFFFF16 ansprechbar (exklusiv!!). Diese beiden je 32KB großen
Hauptspeicherbereiche am Anfang und Ende des Adreßbereiches können als
Zwischenspeicher verwendet werden. Durch die kurze absolute Adressierung sind
sie mit einem einzigen Befehlswort adressierbar.
SUB.W $0815, D5
Bemerkung: Auch hier wird der Befehlszähler um insgesamt 4 erhöht (erst zu der
16 bit langen Adresse im Programmtext, dann zum nächsten Befehl).
Bei der absoluten direkten Adressierung (auch absolut lang) folgt die
Operandenadresse in 2 Worten hinter dem Befehlscode. Die Adresse beginnt im
LoByte des ersten Operandenwortes und umfaßt auch das nächste Speicherwort;
sie kann dadurch 24 Bit nutzen, und es sind alle Hauptspeicheradressen des
MC68000 von 00000016 bis FFFFFF16 ansprechbar.
ADD.B $AFFE07, D6
Das Suffix .B zeigt Byteverarbeitung an. Das Byte, welches unter der Adresse
AFFE07 steht, wird zum Inhalt von datenregister D6 addiert.
Adreßregisterindirekte Adressierung bietet die Möglichkeit der Adreßfortschaltung.
Es bieten sich hier 2 Möglichkeieten:
 nachträgliches Inkrementieren (Postinkrement)
1. Die Operandenadresse steht im spezifizierten Adreßregister. Nachdem die
Adresse verarbeitet ist, wird sie um 1,2,oder 4 erhöht. Das Postinkrement
121
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
der indirekten Adresse (Ai) wird durch ein nachgestelltes + ausgedrückt:
ADD.B (A3)+, D6
Da es sich um einen Bytebefehl handelt, wird A3 um 1
erhöht.
2. vorheriges Dekrementieren (Prädekrement)
Die Operandenadresse steht im Adreßregister; bevor die Adresse verarbeitet
wird, wird sie um 1,2oder 4 erniedrigt. Das Prädekrement wird durch ein
der indirekten Adresse (Ai) vorangestelltes - bezeichnet.
SUB.W -(A4), D5
Bemerkung: Da es sich hier um eine Wortbefehl handelt, wird A4 um 2 erhöht
(Wortlänge).
Eine andere Klasse von Adreßmodi bezieht sich bei der Adressierung auf eine
Basisadresse, auf die sich dann die weiteren Adreßberechnungen beziehen. Es gibt
hierbei eine doppelt indirekte Adressierung, bei der zusätzlich ein Indexregister
benutzt wird:
Bei der adreßregisterindirekten Adressierung mit Verschiebung wird die
Operandenadresse als Summe aus Adreßregister und einem festen
Verschiebungssummanden gebildet. Die Verschiebung ist eine
Zweierkomplementzahl mit 16 Bit und wird im Befehl direkt oder als Variablenname
angegeben.
ADD.B $100(A3), D6
Der Inhalt des Speicherwortes X , dessen Adresse die Summe des Inhalts von A3 und
der Basisadresse 10016 ist, wird zum Datenregister D6 addiert. Eine typische
Anwendung liegt in der Bearbeitung komplexer Datenstrukturen, z.B. von ARRAYs
von Speicherworten. Der ARRAY Z bestehe aus den Elementen Z 0,...Zn. Er beginne
mit der Adresse $100 für Z0. Alle siene Elemente können nun einfach als $100 + i
berechnet werden. Es genügt also, im Adreßregister den Wert i anzugeben. Noch
einfacher wird die Adressierung, wenn für $100 ein Variablenname (symbolische
Adresse) wie z.B. ANFANG angegeben wird, dann ist Zi als ANFANG + i
adressierbar.
Manchmal ist eine weitere Stufe der Indizierung nützlich. Dies geschieht mit der
adreßregisterindirekten Adressierung mit Verschiebung und Indizierung. Die
Operandenadresse wird als Summe aus Adreßregister, einem festen
Verschiebungssummanden (Offset) und dem Wert eines Indexregisters (d.i. ein
beliebiges Daten- oder Adreßregister) gebildet. Beim Indexregister muß angegeben
werden, ob alle 32 oder nur 16 Bit addiert werden sollen. Dies geschieht durch
Angabe eines Suffix .L oder .W. Die Verschiebung ist eine bytelange
122
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Zweierkomplementzahl. Sie liegt zwischen also -128 und +127 und wird im Befehl
direkt oder als Variablenname angegeben.
ADD.W $12(A3,A6.W),D4
Bemerkung: Die Verschiebung steht im LoByte im zweiten Speicherwort des Befehls.
Im HiByte stehen die Informationen über das Indexregister.
In A3 stehe die Adresse 0002100016; in A6 stehe die Adresse 000010016. Dann ergibt
sich für die erste Operandenadresse X = $12 +(A3) + (A6.W) = 12 16 + 2100016 +
10016 = 02111216. Diese Adresse enthält den ersten Operanden; es sei der Wert
0ADE. Dieser Wert wird dann zum Inhalt des Datenregisters D4 addiert und das
Ergebnis in D4 abgespeichert.
Die beiden zuletzt vorgestellten Adressierungsverfahren nehmen eine „Basisadresse“
die sie als „Referenz“ für weitere Adreßrechnungen nutzen. Man nennt diese
Adressierung auch relative Adressierung. Die Spezialfälle werden durch eine
eigene Modebitkombination angegeben. Sei PC der Befehlszähler. Dann kann man
mit Hilfe der befehlszählerrelativen Adressierung mit Verschiebung den Befehl:
ADD.W $1000(PC), D6
verwenden. Auch die befehlszählerrelative Adressierung mit Verschiebung und Index
ist möglich:
ADD.W $1000(PC,A3), D6
Die unten stehende Tabelle zeigt einige Adressierungsarten, die im folgenden
nochmals erklärt werden. Hierbei repräsentieren die Befehlstypen Unmittelbar
(Immediate) die Speicheradressierungsarten. Wir haben auch Adressierungsarten
erhalten, die vom Befehlszähler abhängen. Sie werden als PC-relative Adressierung
bezeichnet. PC-relative Adressierung wird primär für die Spezifikation von
Befehlsadressen in Steuerbefehlen genutzt. Die Anwendung von PC-relativer
Adressierung in Steuerbefehlen soll hier nicht näher betrachtet werden.
Die Tabelle zeigt die bekanntesten Bezeichnungen für Adressierungsarten, die in
verschieden Architekturen abweichend sind. In diesem Beispiel wird eine
Erweiterung der Programmiersprache C als eine Hardware-Beschreibungssprache
verwendet. Jedoch werden zwei nicht C-compatible Schreibweisen verwendet: der
Pfeil zeigt nach links und das Speicherfeld M wird als Speichername verwendet.
123
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Adressierung Beispiel
sart
Register
ADD R4, R3
Wirkung
Anwendung
R4  R4 + R3
Wert ist im Register
Unmittelbar
ADD R4, #3
R4  R4 + 3
Displacement
oder Based
ADD R4, 100(R1)
R4  R4 + M[100 +
R1]
Operand ist eine
Konstante
Zugriff zu lokalen
Variablen
Register
indirekt
ADD R4, (R1)
R4  R4 + M[R1]
Indiziert
ADD R3, (R1 + R2) R3  R3 + M[R1+R2]
Direkt oder
absolut
ADD R1, (1001)
R1  R1 + M[1001]
Speicherindirekt
ADD R1, @(R3)
R1  R1 + M[M[R3]]
Autoinkrement ADD R1, (R2)+
R1  R1 + M[R2]
R2  R2 + d
Autoinkrement ADD R1, -(R2)
R2  R2 -d
R1  R1 + M[R2]
Skaliert oder
indexiert
R1  R1 + M[100 +
R2 + R3 *d]
ADD R1,
100(R2)[R3]
124
Register dient als
Pointer (Zeiger)
Manchmal nützlich für
Feld-Adressierung
R1 = Basis des Feldes
R2 = Index des Feldes
Zugriff zu statischen
Daten; notwendige
Adreßkonstante kann
groß sein
Speicher dient als
Pointer p; Wert = *p
Für den Zugriff zu
Feldern in Schleifen
nützlich; R2 zeigt auf
den Anfang eines
Feldes; jeder Zugriff
erhöht R2 um die
Länge d eines
Elements
Dieselbe Anwendung
wie Autoinkrement;
beide können auch zur
Implementierung der
Stackoperation Push
und Pop genutzt
werden
Indexierung von
Feldern mit
Datentypen der Länge
d
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
RISC Prozessoren (Reduced Instruction Set Computer)
Charakteristische Merkmale sind:
 Kleiner Befehlssatz in einheitlichem Format
 Einfache Adressierungsarten
 Load/Store Architektur, d.h. der Zugriff auf den Speicher erfolgt mit den Befehlen
Load und Store; Speicher -Speicher Befehle gibt es nicht
 Bis auf die Load/Store Befehle arbeiten alle Befehle mit Daten, die in Registern
zur Verfügung stehen oder direkt im Befehl angegeben werden.
 Dreiadreßmaschine (Ausnahme: Load/Store).
 Ausführungszeit für alle Befehle ist ein Taktzyklus (Befehlspipeline)
 Alle Datenpfade haben eine Breite von 32 Bit.
 Großer Registersatz
Durch diese Merkmale läßt sich die Steuerung vereinfachen, es führt zu einem
festverdrahteten Steuerwerk ohne Mikroprogrammierung. Die Folge sind hohe
Taktfrequenzen.
125
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Das Speicherwerk
Die Aufgabe des Speicherwerks besteht darin, mit Hilfe der nach obigen
Adressierungsverfahren berechneten Adresse den Speicher hardwaremäßig
anzusteuern und das Datum einzuschreiben oder auszulesen. In einem Rechner
existieren zur Realisierung eines Arbeitsspeichers unterschiedliche Speichertypen
wie statisches Random Access Memory (RAM) , Read Only Memory (ROM) und das
dynamische RAM. Statische RAMs (auch CAMs) werden als sogenannte CACHE Speicher realisiert; sie werden dann eingesetzt, wenn es um schnellen Zugriff zu
Information geht und der merklich langsamere Daten Zugriff z.B. über einen
externen (Platten)Speicher nicht tolerierbar wird.
Adressen
F......F
ROM
E0.....0
DF.....F
Dynamisches
RAM
Die nebenstehende Abbildung
gibt eine Beispiel für eine
mögliche Aufteilung des
Speichers wider.
Dabei enthält das ROM das
sogenannte Boot- Programm
und Konstanten und kann
nicht verändert werden., das
statische RAM enthält den
sogenannten Cache und der
dynamische Speicher die
übrigen Daten.
Aufgrund der Adressen
werden die verschiedenen
Bausteine angesteuert.
40.......0
3F.......F
Statisches RAM
0.......0
Speicherverwaltung
Mit der parallelen Verarbeitung mehrerer Prozesse auf einem Rechner besteht die
Forderung einer Steuerung für die Rechnerkernzuteilung. Dabei wollen wir unter
dem Rechnerkern die Verarbeitungseinheit ALU mit ihren assoziierten Registern
verstehen. Zugleich müssen wir eine Speicherverwaltung durchführen, die die vom
126
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Befehl vorgegebenen Operationen korrekt durchführt. Zu dieser korrekten
Arbeitsweise gehört die korrekte Bereitstellung der Operanden, die häufig aus dem
Arbeitsspeicher geholt werden müssen.
Verschiedene Speicherorganisationsprinzipen sind denkbar; wir wollen drei davon
näher betrachten:
Lineare Speicherverwaltung
Bei diesem Prinzip wird ein real vorhandener Speicher vorausgesetzt. Konkurrieren
nun n verschiedene Prozesse um den Rechnerkern, so müssen (n-1)-Prozesse
zwischengelagert werden. Diese Prozesse belegen einen Adreßraum im Speicher.
Im einfachen Fall ist dies ein linear zusammenhängender Bereich. Häufig jedoch
werden im Speicher nur Teilmengen des benötigten Platz verfügbar sein. Dieses
geschieht z.B. durch häufiges Zwischenlagern von Prozessen, die einen
Speicherraum zurücklassen, der zersplittert ist und keinen, für eine erneute
Zwischenlagerung benötigten, genügend großen und linear zusammenhängenden
Speicherraum aufweist (Speicherverschnitt).
Der Speicherbereich, der einem Prozeß zugeordnet ist, wird durch seine Anfangsund Endadresse im Speicher beschrieben. Damit ist die Korrektheit eines Prozesses
schon über seine gültige Speicherraumadresse nachprüfbar.
Um das Problem genügend großer Speicherbereiche zu lösen, schiebt man die
belegten Speicherbereiche so zusammen, daß endlich wieder ein größerer linear
zusammenhängender Bereich entsteht (garbage collection). Dieser Vorgang ist mit
einer intensiven Adreßrechnung verbunden, was evtl. sehr zeitintensiv ist.
127
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Paging
Aus diesen Gründen wurde ein anderes Verfahren zur effizienten
Speicherverwaltung entwickelt, das Paging
Beim Paging wird der real vorhandene Speicher in physikalische Seiten (Kacheln)
aufgeteilt, z.B. 1k Worte. Entsprechend wird der Adreßbereich der Prozesse auch in
Teile (Seiten) gleicher Größe aufgeteilt.
15
10
Seiten - Nummer
9
0
Adreßteil relativ zum Seitenanfang
Seiten - Kachel - Tabelle
15
10
Kachel - Nummer
9
0
Adreßteil relativ zum Seitananfang
Adreßumrechnung
Das Größenverhältnis Seite zu Kachel ist 1 : 1.
Seite
Kachel
1
2
3
4
4
7
19
31
128
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Wird nun ein Prozeß in den Arbeitsspeicher geladen, so wird eine Seite des
Prozesses auf eine entsprechende freie Kachel im Speicher abgebildet. Diese
Zuordnung merkt man sich in einer Tabelle. In der oben angegebenen Tabelle
besteht ein Programm aus 4 Seiten, im Speicher sind die Kacheln 4,7,19 und 31 frei.
Die Adresse wird dabei in einen Seitenteil und einen Teil, der relativ zum Anfang der
Seite adressiert, geteilt. Wie aus der Skizze zu erkennen ist, ändert sich der Teil mit
den Bits 0 bis 10 nicht. Die Bits 10 bis 15 jedoch werden gemäß der obigen Tabelle
aufeinander abgebildet (Seite auf die zugehörige Kachel). Die endgültige
Speicheradresse ergibt sich aus der Konkatenation von Kachelnummer und des
seitenrelativen Teils.
Bei der Befehlsausführung muß also zunächst geprüft werden, ob sich die referierte
Seite in einer Kachel befindet. Ist dies der Fall, dann wird die logische
Seitenadresse durch die physikalische Seitenadresse ersetzt, andernfalls muß wie
oben beschrieben, die referierte Seite erst in eine Kachel des (Haupt)-Speichers
geladen werden, bevor die Adreßumsetzung durchgeführt werden kann.
Da die real zur Verfügung stehende Arbeits-Speicherkapazität meist sehr viel kleiner
als die logisch adressierbare Kapazität (Platte!) ist, kann ein Nachladen einer Seite
in eine Kachel nur so erfolgen, daß eine bisher im Arbeits-Speicher befindliche
Kachel überschrieben wird. Um hier zu verhindern, daß statt einer seit längerer Zeit
nicht mehr benutzten Kachel eine soeben geladene Kachel überschrieben wird,
versieht man die Kachel mit einem „Veränderungsbit“, was bei jedem schreibenden
Zugriff auf diese Kachel neu gesetzt wird. Diese Strategie wird auch Least recently
used (LRU) Strategie genannt. Soll eine Seite im Arbeitsspeicher überschrieben
werden, so muß sie vorher in den Hintergrundspeicher, z.B. den Plattenspeicher
zurückgeschrieben werden. Um schnell die zu verdrängende Seite zu finden, wird
bei jedem Zugriff auf eine Seite diese zur jüngsten gemacht, alle Seiten, die jünger
als diese waren, werden um eins gealtert. Den (im Normalfall nicht gewünschten)
Zugriff auf den Plattenspeicher nennt man „page fault“.
Ziel des Verfahrens ist, den Eindruck zu erhalten, als ob die Daten, die dem
Rechnerkern zur Verarbeitung zur Verfügung gestellt werden, alle im Arbeitsspeicher
vorhanden wären. Durch die „page faults“ kann dieses Ziel jedoch nicht erreicht
werden.
Virtuelle Adressierung
Zusätzlich zum paging wird bei vielen Rechnern das Prinzip der Segmentierung (
virtuelle Adressierung) eingesetzt. In einem Segment werden logisch
zusammenhängende Adreßräume zusammengefaßt. Damit erhält man z.B. ein oder
mehrere Befehlssegmente oder Datensegmente.
Im folgenden wollen wir uns am Beispiel des INTEL 80386 die Berechnung der
physikalischen Adresse mit Hilfe von Segment- und Seitentabellen verdeutlichen:
Im 80386 gibt es neben 8 allgemeinen Registern einen Satz von 6 Segmentregistern
der Größe 16 Bit zur Verwaltung des Arbeitsspeichers. Eine virtuelle Adresse des
129
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
80386 besteht aus einem 16Bit Selektorteil (Segmentregister) und einem 32 Bit
Offset.
47
32 31
Selektor
0
Offset
Basisadresse
der LDT
63
LDT
Größe
der LDT
47
15
0
LDTR
Berechnung der Adresse des Segmentdeskriptors
Zu dem aktuell aktiven Prozeß gehört ein Register, das Local Descriptor Table
Register (LDTR). In diesem Register ist die Basisadresse der LDT und deren Länge
(64 kByte) enthalten.
Die Konkatenation der Basisadresse mit dem Selektor führt zu einem 8 Byte
umfassenden Eintrag in dieser Tabelle, dem Segmentdekriptor. Dabei muß der
Selektor kleiner oder höchstens gleich der Größe der LDT sein (siehe obige Skizze).
Der Segmentdeskriptor enthält eine Basisadresse, die Segmentgröße , Zgriffsrechte
und andere Angaben.
Bits 31 - 24
der Basisadresse
G
D O
V
Seg. Gr.
Bits 19-16
P
DPL
Bits 15 - 0 der Basisadresse
S
Type
Bits 23 - 16
der Basisadresse
Bits 15 - 0 der Segmentgröße
Segmentdeskriptor
Es bedeutet:
G
P
DPL
Granularität byte/ 4 kbyte
Present bit
Descriptor Pivilege Level
130
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Type
A
S
Hier wird z.B. vermerkt, ob lesend oder schreibend zugegriffen
werden darf oder ob es sich um ein Daten- oder Befehlssegment
handelt
Access Bit
Segment- oder Kontrolldeskriptor
Die Segmentgröße wird in insgesamt 20 Bit dargestellt. Bei einer Granularität von
einem (1) Byte bedeutet dies eine Segmentgröße von 220 Byte (1 MB), bei einer
Granularität von 4 kByte eine Größe von 4 Gbyte. Das Present bit gibt an, ob das
Segment im Hauptspeicher vorhanden ist oder erst nachgeladen werden muß. Das
access bit wird bei jedem Zugriff auf das Segment gesetzt und kann vom Prozessor
zurückgesetzt werden. Damit läßt sich eine gewisse Zugriffshäufigkeit in einem
bestimmten Zeitintervall ermitteln.
Die Basisadresse aus dem Segmentdeskriptor wird zum Offset der virtuellen
Adresse addiert. Wir erhalten damit eine lineare Adresse. Mit dieser linearen
Adresse und dem Seitentabellenverzeichnis können wir die physikalische
Speicheradresse ermitteln.
Die Konkatenation der höchstwertigen 20 Bit des Registers CR3 (Spezialregister)
mit den 10 Bit des directory-Teils der linearen Adresse führen zu einem 4 Byte
großen Eintrag im Seitentabellenverzeichnis (page directory). Das
Seitentabellenverzeichnis wird für jeden Prozeß angelegt und ist 4kByte groß.
Die Konkatenation der Seitentabellenbasisadresse mit dem page-table-Teil in der
linearen Adresse führt zu einem Eintrag in der Seitentabelle (page table). Das
sogenannte „dirty bit“ gibt an, ob eine Seite verändert wurde (Schreibzugriff).
Die physikalische Adresse ergibt sich schließlich aus der Konkatenation der
Seitenbasisadresse mit dem Offset in der linearen Adresse
131
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
31
21
Directory
11
Page Table
0
Offset
31
K
K
K
12
Basisadresse
Seitentabellen
verzeichnis
Seitentabelle
Register CR3
Physikalische Adresse
Datum
4 kbyte Seite
im
Hauptspeicher
Umrechnung lineare Adresse in die physikalische Adresse
132
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
31
12
Seitentabellenbasisadresse
Access bit
user/ supervisor
read / write
present bit
Eintrag im Seitentabellenverzeichnis
31
12
Seitenbasisadresse
(Kachel-Nr.)
Dirty bit
accessed bit
user / supervisor
read / write
present bit
Eintrag in der Seitentabelle
Abschhließend sehen wir, daß sich bei der Segmentierung und dem paging ein nicht
unerheblicher Aufwand ergibt, um aus der virtuellen Adresse die physikalische
Adresse zu berechnen. Hinzu kommt dann noch das Laden der entsprechenden
Daten in den Hauptspeicher, wenn diese dort nicht vorhanden sind.
133
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Andererseits kann man nun einen schnellen Speicher zwischen Rechnerkern und
Arbeitsspeicher schalten und versuchen, diesem Speicherverbund die
Geschwindigkeit des schnelleren Speichers zu verleihen. Man nennt einen solchen,
zwischen Rechnerkern (CPU- Central Processing Unit) geschaltetem Speicher einen
Cache. Dieser Cache ist viel leistungsfähiger als der Arbeitsspeicher, wesentlich
teuer und in der Kapazität wesentlich kleiner. Üblich sind heute Caches von etwa
256 kBit.. Beim Schreiben und Lesen greift die CPU deshalb zunächst auf den
Cache zu. Erst wenn festgestellt wird, daß die gewünschte Adresse sich nicht im
Cache befindet, wird ein Zugriff auf den Arbeitsspeicher durchgeführt. In diesem Fall
(miss) wird das Datum aus dem Arbeitsspeicher gleichzeitig in die CPU und den
Cache übertragen. Für den Programmierer wird dabei nicht erkenntlich, ob die Daten
für den Prozessor aus dem Cache oder dem Arbeitsspeicher stammen. Man nennt
das Prinzip auch transparent. Beim Schreiben in den Speicher kann das Datum
einmal parallel in Arbeitsspeicher und Cache geschrieben werden und anderseits nur
in den Cache. Die erste Variante ist zeitaufwendig. Bei der zweiten Variante (dem
Rückschreibverfahren) wird das Datum nur in den Cache geschrieben und
vermerkt, daß eine Änderung stattgefunden hat. Für jedes geänderte Datum wird ein
spezielles Bit (dirty bit) gesetzt. Erst, wenn dieses Datum im Cache durch ein
anderes ersetzt werden soll, wird es in den Arbeitsspeicher geschrieben.
Nach dem gleichen Prinzip kann man nun andererseits einen sehr schnellen
Speicher zwischen Rechnerkern und Arbeitsspeicher schalten und versuchen,
diesem Speicherverbund die Geschwindigkeit des schnelleren Speichers zu
verleihen. Man nennt einen solchen, zwischen Rechnerkern (CPU- Central
Processing Unit) geschaltetem Speicher einen Cache. Dieser Cache ist viel
leistungsfähiger als der Arbeitsspeicher, wesentlich teuer und in der Kapazität
wesentlich kleiner. Üblich sind heute Caches von etwa 256 kBit.. Beim Schreiben
und Lesen greift die CPU deshalb zunächst auf den Cache zu. Erst wenn
festgestellt wird, daß die gewünschte Adresse sich nicht im Cache befindet, wird ein
Zugriff auf den Arbeitsspeicher durchgeführt. In diesem Fall (miss) wird das Datum
aus dem Arbeitsspeicher gleichzeitig in die CPU und den Cache übertragen. Für den
Programmierer wird dabei nicht erkenntlich, ob die Daten für den Prozessor aus dem
Cache oder dem Arbeitsspeicher stammen. Man nennt das Prinzip auch transparent.
Beim Schreiben in den Speicher kann das Datum einmal parallel in Arbeitsspeicher
und Cache geschrieben werden und anderseits nur in den Cache. Die erste
Variante ist zeitaufwendig. Bei der zweiten Variante (dem Rückschreibverfahren)
wird das Datum nur in den Cache geschrieben und vermerkt, daß eine Änderung
stattgefunden hat. Für jedes geänderte Datum wird ein spezielles Bit (dirty bit)
gesetzt. Erst, wenn dieses Datum im Cache durch ein anderes ersetzt werden soll,
wird es in den Arbeitsspeicher geschrieben.
134
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Speicherhierarchien
Hintergrund
speicher
CPU
Cache
< 256 KB
sehr
schnell
Arbeits
speicher
bis 4 GB
(z.B. Platte)
Hohe Kapazität
langsam
preiswert
Speicherhierarchie
Dadurch, daß im Arbeitsspeicher nicht immer die aktuellen Daten stehen, sondern
sich noch teilweise im Cache befinden, führt zu einer zeitlichen Dateninkonsistenz,
falls andere Einheiten auf den Speicher zugreifen wollen. Ein direkter Speicherzugriff
(direct memory access, DMA) wird dadurch sicherlich erschwert.
Diese Probleme treten dann nicht auf, wenn der Cache als reiner Befehlscache
verwendet wird; in diesem Fall wird nur gelesen; ein Rückschreiben mit den
möglichen Komplikationen findet nicht statt.
Transparenz des Caches wird durch die Architektur als Assoziativspeicher erreicht.
Ein Assoziativspeicher (content addressable memory, CAM) arbeitet
inhaltsadressiert. Das bedeutet, daß der Speicher sehr günstig vergleichende
Operationen auf der Suche nach bestimmten Mustern durchführen kann. In diesen
Fällen wird gleichzeitig mit jedem Speicherwort auch seine Adresse im Cache
abgespeichert. Die Arbeitsspeicheradressen stellen die Schlüsselinformation dar,
die vom Cache verarbeitet werden. Wird ein Wort in einem Befehl referiert, so wird
zunächst mit seiner Adresse als Schlüssel im Cache nachgesehen, ob sich das
Wort dort befindet. Ist dies nicht der Fall, so muß, wie bereits oben beschrieben, im
Arbeitsspeicher selbst nachgesehen werden. Der Cache enthält einen Vergleicher,
eine Adressenliste und eine Datenliste. Jeder Adresse ist dabei nicht nur ein
Datenwort zugeordnet, sondern ein ganzer Block. Damit trägt man der Vermutung
Rechnung, daß mit großer Wahrscheinlichkeit beim Zugriff auf eine bestimmtes
Datum auch die Daten seiner näheren Umgebung benötigt werden. Der Vergleich
135
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
nutzt das Prinzip einer assoziativen Struktur: er wird parallel durchgeführt. Bei
einem Treffer (hit) wird das zugehörige Datum auf den Datenbus gelegt und bleibt
solange verfügbar, bis der Prozessor dieses Datum abgeholt hat.
Das Prinzip der Caches mit Assoziativspeicher wendet man wegen des
Hardwareaufwands nur bei relativ kleinen Speichern an, ansonsten bedient man
sich Kombinationsstrukturen von Orts- und Inhaltadressierung. Bei diesem
Verfahren wird die Adresse in einen Indexteil (Ortsadressierung) und einen
inhaltsbezogenen Teil, das sogenannte „tag“ oder Etikett, welches als Adreßteil im
Cache abgelegt wird.
n-1
i
i-1
tag
0
Index
Adreßaufteilun
g
Mit dem Indexteil der Adresse (Bits 0 bis (i-1)) wird im Cache eine Zeile der
insgesamt 2i Einträge ausgewählt. Der Inhalt dieser Zeile, das tag, wird mit dem tagTeil der Adresse (bits i bis (n-1)) (parallel!!) verglichen. Bei Gleichheit kann das
Datum direkt geschrieben oder gelesen werden.
Die Größe des Caches mit 2i Elementen bestimmt die logische Einteilung des
Arbeitsspeichers in 2n-i Seiten mit ebenfalls jeweils 2i Worten. Ein Wort mit der
Adresse k ( 0  k  2 i ) innerhalb einer Seite des Arbeitsspeichers (Indexteil der
Adresse) wird auf die Zeile k im Cache abgebildet. Die Wörter mit der Adresse k in
den 2n-i Seiten unterscheiden sich durch das tag. (Faltung des Arbeitsspeichers auf
den Cache). Man bezeichnet dies auch als „direct mapped cache“.
Um den Prozessor zu entlasten, werden diese Cache-Arbeitsspeicher Operationen
aus den Prozessor heraus verlagert und die Steuerung einem sogenannten Direct
Memory Access Controller (DMA Controller) zugeordnet. Zu Beginn eines
Datentransportes versorgt der Prozessor den DMA Controller mit der nötigen
Information, die im folgenden aufgelistet wird. Dazu gehören
 die Startadresse des Datenbereiches im Speicher
 die Startadresse eines zweiten Datenbereichs im Speicher oder der Adresse
einer I/O-Schnittstelle je nach Transferart
 die Anzahl der Daten
 die Richtung des Transfers (Lesen oder Schreiben)
 Steuerinformation
Der Transfer der Informationen wird nun vom DMA-Controller selbstständig
ausgeführt; der Prozessor kann derweil andere Aufgaben bearbeiten. Der DMAController hat dazu Zugriffsrechte auf den Datenbus und kommuniziert bei einem
Zugriffswunsch auf den Bus mit dem Prozessor. Man unterscheidet zwei Arten für
die Übertragung:
136
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
 Einzeltransfer oder cycle stealing. Bei diesem Modus wird genau ein Datum
übertragen und der Bus anschließend wieder freigegeben. Dieser Vorgang
benötigt einen Buszyklus und entzieht damit dem Prozessor während dieser Zeit
den Zugang zum Bus.
 Blocktransfer oder burst mode. Hierbei werden alle Daten des aktuellen
Transportauftrags übertragen. Erst danach wird die Buskontrolle dem Prozessor
zurückgegeben. Nur bei einem notwendigen „Refresh“- Zyklus für einen
dynamischen RAM-Speicher kann dieser Vorgang unterbrochen werden.
Bei beiden Übertragungsmodi kann das Datum zunächst in einen Pufferspeicher im
DMA-Controller zwischengelagert werden und zu einem späteren Zeitpunkt dann
zum eigentlichen Ziel weitergeleitet werden (explicit addressing oder flow-through).
Fall es sich um einen Daten-Transfer zwischen Speicher und I/O-Schnittestelle
handelt, kann der Controller die Operandenadresse direkt dem Speicher mitteilen
und die gewünschte Schnittstelle auswählen. In diesem Fall werden die Daten direkt
aus dem Speicher zur Schnittstelle (oder umgekehrt) transferiert. Dieses Verfahren
wird auch implicit addressing oder fly-by transfer genannt.
(n - i) - Bit (Tag)
i - Bit
Seitenadresse (n-i ) Bit
(Index)
Speicherwort (i - Bit)
Komparator
Datenbus
Cache fault
Cache - Organisation
137
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
138
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
E/A-Werk und Kommunikation
Rechner heutiger Generationen erlauben den Anschluß einer Vielzahl externer
Geräte, z.B. Drucker, Monitore, Prozeßrechner, Rechner zur Kommunikation,
Faxgeräte etc. In dieser Liste sind nur Ausgabegeräte aufgeführt. Als mögliche
Eingabegeräte wären zu nennen: die Tastatur, ein Mobilfunkgerät,
Prozeßeingabedaten über ein Modem oder z.B. einen Kommunikationsrechner. Als
Element in einem Multiprozessorsystem, wie es heute für die Verarbeitung
komplexer Datenmengen benötigt wird (Klima- und Wetteranalyse,
Multimediasysteme, Techniken der virtuellen Realität , etc.) kommt den
Verbindungen hin zur Außenwelt und her von der Außenwelt eine rasch steigende
Bedeutung zu.
Generell unterscheiden wir folgende Möglichkeiten der Kopplung:
 Direkte Kopplung
 Kanalkopplung
 Speicherkopplung
 Kopplung über Bussysteme
 Netzwerke
Direkte Kopplung
Bei der direkten Kopplung sind zwei Geräte über eine Leitung direkt miteinander
verbunden (Prozessor - Prozessor oder z.B. Prozessor - Drucker). Die Kontrolle
(Steuerung) wird dabei von einem der beteiligten Geräte durchgeführt. Zu dieser
Kommunikation werden genormte Schnittstellen verwendet: eine serielle V24
Verbindung oder die parallele Centronics Standard Leitung oder aber die
Verbindung ist direkt hardwaremäßig realisiert.
Kanalkopplung
Bei der Kanalkopplung übernimmt ein eigener Kanalprozessor die Steuerung der
Kommunikation zwischen Prozessor und z.B. einem Plattenspeicher (Harddisk). Er
verfügt über die Möglichkeit, direkt auf die Speicher des Rechners zuzugreifen
(DMA). Die Kontrolle zur Kommunikation mit einem Netz (ETHERNET) ist ein
weiteres Beispiel für die Kanalkopplung. Nach der Übermittlung von
Steuerinformation werden die entsprechenden Daten (Anfangsadresse, Länge der
zu übertragenden Information als auch Paritätbits bzw. CRC - Check Information)
übertragen. Hierbei spricht man auch von der Übertragung von Paketen (paket
switching).
Speicherkopplung
139
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Speicherkopplung findet Verwendung bei Multiprozessorsystemen. Solche
Systeme besitzen häufig als Kommunikationsglied zwischen einzelnen Prozessoren
einen Speicher, der von beiden Prozessoren adressiert werden kann. Dabei muß
natürlich sichergestellt werden, daß es zu keinen Zugriffskonflikten kommt.
Multiportspeicher oder das bereits besprochene Prinzip der Semaphore verhindern
solche Konflikte.
Bussysteme
Bussysteme gibt es in sehr unterschiedlichen Formen, z.B. prozessorinterne Datenund Control-Busse, Busse zum Anschluß externer Geräte wie SCSI oder Busse zur
Kopplung mehrerer Prozessoren wir ETHERNET. Folgende Merkmale sind hier
anzuführen:




Anzahl, Art und Breite des Busses
Kommunikationstechnik und das Trägermedium (2-Draht, Lichtleiter, Infrarot etc.)
Sicherheit
Busverwaltung und Kommunikationsprotokoll
Anzahl, Art und Breite des Busses
Häufig wird die Kommunikation in einem Rechnersystem nicht nur über einen
einzigen Systembus ausgeführt, sondern man führt eine funktionelle Aufteilung in
logisch und physikalisch unabhängige Busse durch. Dazu teilt man Daten- ,
Befehls- und Steuerinformation je einen getrennten Bus zu. Sicherheitsaspekte und
Kapazitätsüberlegungen sind andere Gründe für eine Aufteilung. Mit der Busbreite
wird die Anzahl der Bit angegeben, die parallel übertragbar sind. Hierbei sind Prüfbit
(Parity, CRC) nicht enthalten.
Kommunikationstechnik und das Trägermedium
Die Kommunikationstechnik liefert uns die technische Möglichkeit, Informationen
zu übertragen. Dabei unterscheidet man zwischen synchroner und asynchroner
Technik und der Möglichkeit, den Takt selbst mit zu übertragen oder ihn aus der
Nachricht zu gewinnen (Demodulation). Als Trägermedium zur Übertragung stehen
dazu unterschiedliche Kabelarten wie 2-Draht Leitungen, Koaxialkabel,
Lichtwellenleiter, Funktechnik oder z.B. Infrarottechnik zur Verfügung. Hierzu muß
man festhalten, daß die Lichtwellenleiter das preiswerteste und gleichzeitig das
leistungsstärkste Trägermedium ist. Zudem ist es einfach zu installieren.
Sicherheit
140
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Unter Sicherheit verstehen wir einerseits die Ausfallsicherheit der an der
Übertragung beteiligten Komponenten, zum andern die Robustheit, Fehler, die bei
der Übertragung auftreten, zu erkennen und zu beheben.
Fehler, die durch Störungen bei der Übertragung auftreten, können z.B. durch den
bereits erwähnten Paritätstest hardwaremäßig erkannt werden und beseitigt werden.
Sender und Empfänger tauschen dazu entsprechende Quittungssignale aus.
Korrekte Busverwaltung und Kommunikationsprotokoll sind unabdingbare
Voraussetzungen für einen funktionierenden Informationstransfer zwischen zwei
Moduln. Um dieses sicherzustellen, wurde eine umfangreiche Bus-Organisation
entwickelt.
Die Geräte, die über einen Bus kommunizieren, teilen wir in drei Kategorien ein:
Listener, Talker und Mastern.
Listener stellen Geräte dar, die den Bus nur abhören. Sie empfangen Nachrichten
und haben keine Möglichkeit, auf den Bus zu senden. Stellglieder (Ventile, Motoren,
etc.) in einem technischen System sind Beipiele hierfür.
Talker hingegen können Nachrichten empfangen als auch senden. Angeschlossene
Rechner, externe Speicher, aber auch Ausgabegeräte (z.B. Drucker) mit
Rückmeldemöglichkeit (kein Papier) gehören dazu.
Master sind Geräte, die die Bussteuerung durchführen. Man unterscheidet hier
zwischen zentraler und dezentraler Verwaltung.
Bei der zentralen Verwaltung gibt es genau einen Master, der die Buszuteilung
steuert. Fällt er aus, so bricht die gesamte Kommunikation zusammen.
Demgegenüber sind bei dezentraler Kontrolle alle angeschlossenen Geräte
gleichberechtigt. Bei diesem Konzept muß man sicherstellen, daß immer nur
höchstens ein angeschlossenes Gerät auf den Bus schreiben darf, d.h. die Talker Funktion übernimmt. Bei beiden Steuerungsprinzipien unterscheiden wir drei
Verfahren:
 Reihung oder daisy chaining
 Wählverfahren
 Verfahren unabhängiger Anforderungen oder random access
Zentrale Bussteuerung
Bei der Reihung oder dem daisy chaining teilen die angeschlossenen Geräte dem
master die Busanforderung, d.h. den Wunsch, auf den Bus zu senden, mit. Die
Zuteilung bekommt das Gerät, welches in einer Reihung dem master am nächsten
ist. Es funktioniert wie folgt:
141
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
1. Ein oder mehrere Geräte melden durch Setzen der Bus request-Leitung einen
Zuteilungswunsch an den master.
2. master prüft, ob der Bus frei ist. Dies ist genau dann der Fall, wenn die busyLeitung nicht gesetzt ist.
3. Ist der Bus frei, dann setzt der master die Bus available Leitung
4. Diese Bus available-Leitung wird von allen nicht sendewilligen Geräten
durchgeschaltet bis zum ersten sendewilligen Gerät. Dieses Gerät schaltet das
Bus available Signal inaktiv , löscht sein Bus request Signal und setzt das Bus
busy-Signal auf der Bus busy Leitung.
5. Nach dem Absetzen der Nachricht wird das Bus busy Signal zurückgesetzt.
Das obige Prinzip funktioniert sehr einfach und ist preiswert zu installieren. Allerdings
sind diejenigen Geräte in der Zuteilung benachteiligt, die weit ab vom master
liegen.
Bus available
Gerät 1
Master
Gerät 2
Gerät 3
Bus request
Bus busy
BUS
Zentrale Steuerung: Reihung
Beim Wählverfahren mit zentraler Steuerung werden die ersten zwei Schritte wie im
ersten Fall durchgeführt, also:
1. wie beim daisy chaining
2. wie beim daisy chaining
3. Ist der Bus frei, legt der master eine Geräteadresse auf den poll-count. Alle
Geräte sind an diesen poll count angeschlossen und hören damit diese Leitung
ab. Hat das adressierte Gerät das Signal bus-request aktiv geschaltet, so kann
142
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
es nun das bus-busy Signal auf die entsprechende Leitung geben. hat es keinen
Zuteilungswunsch, bleibt es passiv.
4. Nach Ablauf eines Zeitintervalls prüft der master die bus-busy Leitung, ob das
adressierte Gerät reagiert hat. Wenn das adressierte Gerät passiv geblieben ist,
legt er den poll-count auf ein anderes Gerät.
Die Auswahl der Geräte durch den master kann nach mehreren Verfahren erfolgen.
(Prioritäten, zufallsgesteuert, Hochzählen der Adresse o.ä.).
Poll Count
master
Gerät 1
Gerät 2
Gerät 3
Bus request
Bus busy
BUS
Wählverfahren bei zentraler Steuerung
Da der master nur einen Zuteilungswunsch erfährt, aber nicht weiß, von welchem
Gerät, kann es unter Umständen bis zur Zuteilung eine längere Zeit dauern. Dieser
Nachteil wird durch das „Verfahren unabhängiger Anforderungen“ vermieden. Hier
erfährt der master, welches Gerät eine Zuteilungsanforderung stellt und kann gezielt
reagieren. Allerdings ist bei diesem Verfahren der Hardwareaufwand wegen der
Leitungsvielfalt recht hoch (Bus request Leitungen, Bus granted Leitungen, Bus
assigned Leitungen und der eigentliche Daten Bus). Auch die Erweiterbarkeit ist
dadurch beschränkt.
Die Zuteilung erfolgt in folgenden Schritten:
1. Hat ein Gerät i einen Zuteilungswunsch, so meldet es diesen über die Leitung
„Bus request“ i an den master.
2. Der master prüft, ob der Bus frei ist (Bus assigned ist nicht gesetzt)
3. Ist der Bus frei, so wählt der master aus allen Zuteilungswünschen ein Gerät aus
und weist ihm über die Leitung „Bus granted“ i den Bus zu.
143
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
4. Das Gerät setzt seinen „Bus request“ i zurück und setzt die „Bus assigned“
Leitung
5. Nach Ende der Übertragung setzt das Gerät „Bus assigned“ wieder zurück.
master
Gerät 1
Gerät 2
Gerät 3
Bus
request
Bus granted
Bus assigned
BUS
Unabhängige Anforderung mit zentraler Steuerung
Dezentrale Steuerung
Bei dezentraler Steuerung entfällt der master. In diesem Fall wird der
Zuteilungsmechanismus besonders einfach:
1. Hat ein Gerät einen Zuteilungswunsch, dann prüft es, ob der Bus verfügbar
(available) ist.
2. Ist der Bus frei, wird das Signal Bus request gesetzt und die Daten (Nachricht)
auf den Bus gegeben. Bus available ist die Negation von Bus request. Damit wist
dann automatisch der Bus als belegt gekennzeichnet.
144
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Dieses Verfahren erzeugt möglicherweise Zugriffskonflikte auf dem Bus. Wenn z.B.
mehrere Geräte gleichzeitig das Signal Bus request aktivieren weil sie vorher alle
das Signal bus available als aktiv erkannt hatten.
Bus available
Gerät
1
Gerät
3
Gerät
2
INV
Bus request
Bus
Reihung mit dezentraler Steuerung
Poll count
Gerät 1
Gerät 2
Gerät 3
Bus available
Bus accept
BUS
Wählverfahren bei dezentraler Steuerung
Ähnlich wie bei der zentralen Steuerung legt beim Wählverfahren das Gerät, welches
seine Nachricht abgesetzt hat, eine neue Adresse auf den poll-count. Auch muß
sichergestellt werden (durch Timer), daß ein sendewilliges Gerät angesprochen wird.
Dabei wird über die Bus available Leitung der Bus freigegeben und bei
Zuteilung über Bus accept belegt.
145
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Das Verfahren bei unabhängigen Anforderungen mit dezentraler Steuerung ist von
besonderer Bedeutung, weil das ETHERNET danach arbeitet.
Bei diesem Verfahren aktiviert ein Gerät die Bus request Leitung, falls das Bus
assigned Signal nicht gesetzt ist. Diese Anforderung kann von mehreren Geräten
gleichzeitig kommen. Durch geeignete Methoden werden hierbei die Zugriffskonflikte
aufgelöst. Beim Ethernet wird dazu das CSMA/CD Verfahren (Carrier sense multiple
access collision detection) verwendet. Her wir auch auf die beiden in der
untenstehenden Skizze aufgeführten Steuerleitungen verzichtet. Jedes sendewilliges
gerät hört den Bus ab und sendet, sobald der Bus als frei erkannt wird.
Gerät 1
Gerät 2
Gerät 3
Bus request
Bus assigned
BUS
Verfahren unabhängiger Anforderungen mit dezentraler Steuerung
Busse sind Elemente zum Aufbau von Rechnern. Dabei können mehrere
Prozessoren und deren Speicher zu einem System zusammengefaßt werden.
Innerhalb dieses Systems werden Kommunikationsleitungen unterhalten, die einen
fehlerfreien Betrieb der Elemente untereinander gewährleisten sollen. Mit dieser
Annahme kommen wir zu den Netzwerken.
Ein Beispiel hierfür ist das Internet oder das öffentliche Datennetz der Telekom.
Zum korrekten Betrieb solcher Netze sind Protokolle zur Regelung der
Kommunikation notwendig. In der Praxis werden 2 Protokolle genutzt: das OSI
(Open System Inteconnection) und das TCP/IP (Transmission Control Protocol/
Internet Protocol).
Protokolle
146
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Auf der TCP/IP Anwendungsebene (application layer) befinden sich die
Anwendungsprogramme, die INTERNET als Kommunikationswerkzeug verwenden.
Ein Teil der Software für die TCP/IP Umgebung auf der Anwendungsebene
unterstützt die standardisierten Protokolle der Anwendungsebene, die unmittelbar
Benutzerunterstützung bereitstellen. Andere Software auf dieser Ebene unterstützt
das generieren von application programming interfaces (APIs), die zur Erstellung
von Anwendungsprogrammen für den Benutzer dienen und über das Internet
miteinender kommunizieren. TCP/IP definiert einen weiten Bereich von
Anwendungsebene-Protokollen, die den INTERNET Benutzer mit remote login,
Kopieren von Dateien und sharing, electronic mail (e-mail), VerzeiochnisOrganisation al auch Netzwerk-Organisations-Hilfsmitteln ausstattet. Einige der
Anwendungs-Protokolle werden häufig genutzt, andere nur für spezielle Aufgaben.
Die folgende Skizze gibt einen Überblick über die einzelnen Architektur Ebenen:
APPLICATION
PRESENTATION
APPLICATION
SESSION
TRANSPORT
TRANSPORT
NETWORK
INTERNET
DATA LINK
NETWORK INTERFACE
PHYSICAL
HARDWARE
OSI Model Functional Layers
TCP / IP Functional Layers
Vergleich: TCP/IP und OSI Architektur Ebene
147
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Die Anwendungs Ebene (application layer)
Die oberste Ebene, auf der der Benutzer arbeitet, ist die Anwendungsebene. Auf ihr
laufen die Anwendungs-Programme zum Informationsaustausch unter den
Rechnern. Die darunter liegenden Ebenen mit ihrer Komplexität werden hier nicht
sichtbar. Auf der Anwendungsebene werden lediglich die Sende- bzw.
Empfangswünsche artikuliert; Details, wie dies z.B. technisch realisiert wird, ist
Aufgabe der darunter liegenden Ebenen.
Die Darstellungsebene (presentation layer )
Die Darstellungsebene ist die unterste Ebene, auf der die Bedeutung der
übertragenen Bits eine Rolle spielt. Das OSI Modell definiert zwei Bedeutungen der
Darstellungsebene:
1. Die Darstellungsebenen in den beiden miteinander kommunizierenden Systemen
müssen sich über die Sprache einigen, mit Hilfe derer sie Daten übertragen
sollen.
2. Die Darstellungsebene darf sich nicht darum kümmern müssen, wie die interne
Datendarstellung im jeweils anderen Rechner aussieht. Wenn z.B. auf zwei
kommunizierenden PCs BASIC Programme laufen, gibt es keine Schwierigkeiten,
jedoch, wenn auf einer VAX ein FORTRAN läuft und auf einer mit der VAX
kommunizierenden IBM ein COBOL Programm, werden die Darstellungsebenen
wichtig. Das FORTRAN Programm z.B. stellt eine INTEGER Zahl durch ein 32 Bit
Binärzahl dar; das COBOL Programm hingegen stellt eine INTEGER als gepackte
Dezimalzahl dar. Die Darstellungsebene sorgt dafür, daß jedes Programm in dem
für sich selbst günstigsten Datenformat arbeiten kann, ohne sich um das des
Kommunikationspartners kümmern zu müssen.
Die Sitzungsebene (session layer)
Die Sitzungsebene ist für die Organisation des Dialogs zwischen den beiden
kommunizierenden Programmen zuständig und den Datenaustatusch. Dafür werden
drei Dialog-Typen von der Ebene angeboten:
1. Duplex - Typ, wobei beide Programme gleichzeitig senden und empfangen
können
2. Simplex - Typ , wobei ein Programm sendet und das zweite Programm (die zweite
Seite) empfängt
3. die Sitzungsebene legt „Synchronisationszeitpunkte“ fest, zu denen der Dialog
unterbrochen und später wieder korrekt weitergeführt werden kann (interrupt).
Die Transportebene (transport layer)
Das OSI Modell klassifiziert jedes System im Netzwerk als eines der beiden
folgenden Typen:
1. End- Systeme, die als Datenquelle oder Datensenke dienen und
2. die Systeme, die das Routing und Verschalten der im Netz interagierenden
Rechner bewerkstelligen.
Die Transportebene ist damit die unterste Ebene, die nur in den unter 1. erwähnten
End-Systeme notwendig sind. Die Systeme, die das Routing etc. übernehmen und
keine End-Systeme dartsellen, finden nur in den restlichen unteren drei Ebenen
Verwendung. Die Transportebene verbirgt vor dem Benutzer all die Details, die zum
148
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Übertragen der Daten notwendig sind. Dazu gehören z.B. die Kontrollmechanismen
bei Datenverlust. Der Nutzer sieht nur die komfortable Oberfläche.
Die Netzwerkebene (network layer)
Auf der Netzwerkebene findet der eigentliche Datenverkehr statt. Hier werden die
Verbindungen zwischen der Datenquelle und dem Datenempfänger hergestellt. Es
ist dabei unerheblich, wieviele Zwischenstationen geschaltet werden müssen. Der
Nutzer sieht von diesen „internen“ Vorgängen nichts; er gibt nur seinen Wunsch ins
Netzwerk, mit dem Rechner irgendwo kommunizieren zu wollen. Die Daten, die
dabei von einem Rechner zum Ziel (Target) Rechner transportiert werden , nennt
man Pakete (packets).
Die Datenverbindungsebene (data link layer)
Diese Ebene ist für die Daten - Verbindung von einem Rechner zum Ziel-Rechner
zuständig. Mechanismen auf dieser Ebene steuern die Übertragung von
Dateneinheiten, frames genannt, über eine Leitung. Sie ist auch für das Packen von
Bits in frames zuständig; gleichzeitig werden hier ÜbertragungsfehlerErkennungsmechanismen eingesetzt. Bei manchen Verbindungen führt diese
Ebene auch Prozeduren zur Datenflußkontrolle und Fehlerkorrektur durch.
Die Physikalische Ebene (physical layer)
Diese Ebene liegt zuunterst und ist damit verantwortlich aktuelle Signalübertragung
von elektrischen optischen oder auch Radiosignalen zwischen den
kommunizierenden Rechnern. Hier werden die Signal als Bits mit logischen Werten 0
und 1 mit ihren assoziierten elektrischen Werten z.B. 0 Volt und 3 Volt verarbeitet.
Eine Interpretation der Bedeutung dieser Signale findet auf dieser Ebene nicht statt.
149
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Leistungsbewertung
Ziel der Leistungsbewertung von Rechenanlagen ist es, eine objektive Aussage mit
Hilfe meßbarer Größen zu treffen.
Leistungsbeeinflussende Größen eines oder mehrerer Rechensysteme sind:
 Hardware: Prozessor, Arbeitsspeicher, Cachegröße, Speicherhierarchie,
Busssystem , Befehlssatz, Mikroprammierung, Ein / Ausgabe
 Kommunikation: Art und Breite der Kommunikationspfade, Synchronisation
 Betriebssystem: Sprachen, Komponenten, Parallelisierung
 Algorithmen: Parallelisierung, Zuverlässigkeit
Methoden der Leistungsbewertung sind:






Ermittlung von Kenngrößen und Leistungskriterien
Beobachtende und berechnende Leistungsbewertung
Benchmarks
Leistungsdatenbanken
Parameter bei der Parallelverarbeitung
Algebraische Leistungsbewertung
Beabsichtigt man den Kauf eines Rechners (z.B. PC), so macht man sich ein Bild
von der Leistung des gewünschten Rechners anhand von Prospekten und
Handbüchern. In diesen Prospekten sind sogenannte Kenngrößen“ der angebotenen
Rechner angegeben.
Als Kenngrößen gelten bei Prozessoren:
 benötigte Zeiten für Addition und Multiplikation
 wie hoch ist der Befehlsdurchsatz (MIPS: millions of instructions per second)
 wie hoch ist der Befehlsdurchsatz an „floating point operations per second“
(Gleitkommaoperationen, FLOPS)
 Wortbreite
Als Kenngrößen bei Speichern gelten:




die Zugriffsart (wahlfrei, sequentiell)
die Kapazität
die Zugriffs- und Zykluszeit
die Bandbreite
Die angegebenen Kenngrößen werden von den verschiedenen Herstellern
unterschiedlich interpretiert. Die Kenngrößen werden daher nur als Leistung
verstanden, die mit Sicherheit überschritten werden kann (peak performance. Geht
man realistisch vor, so kann der Benutzer im Regelfall etwa 30% dieser
Spitzenleistung erreichen. Das gilt im besonderen für Mehrprozessorsysteme, bei
150
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
denen eine gleichmäßige Spitzenauslastung aller Prozessoren nicht möglich scheint.
Die mittlere Befehlsausführungszeit ist eine weitere Kenngröße, die der Realität
schon näher kommt. Diese Zeit basiert auf der Ausführung von Befehlsmixen.
Hierbei wird die Ausführungszeit eines Befehls oder einer Befehlsklasse mit der
relativen Häufigkeit gewichtet. Die mittlere Ausführungszeit ergibt sich zu:
n
T   pi ti
i 1
Der bekannteste Befehlsmix ist der Gibson-Mix. Die Befehle sind in 13 Klassen,
z.B. Laden und Speichern, Integeraddition, Vergleiche, logische Befehle etc.
unterteilt. Die relativen Häufigkeiten der Klassen wurden durch Messungen an
Programmen aus dem technisch-wissenschaftlichen Bereich ermittelt. Für andere
Anwendungsbereiche ergeben sich damit möglicherweise andere Kennzahlen für die
einzelnen Häufigkeiten.
Der GAMM Mix stellt einen anderen Mix dar. In ihm werden Aufgaben wie die
Addition von n Zahlen, Tabellensuche etc. definiert. Dieser Mix wird auch als
Funktionsmix bezeichnet. Die Ausführungszeiten folgender Funktionen werden im
GAMM Mix gemessen:





t0:
t1:
t2:
t4:
t5:
Skalarprodukt zweier Vektoren mit je 30 Elementen
Summe zweier Vektoren mit je 30 Elementen
Horner Methode für ein Polynom 10. Grades
Wurzelziehen mit dem Newton Verfahren
Maximumbestimmung unter 100 Tabellenwerten.
Für den GAMM Mix ergibt sich dann:
T = 1/300 ( t0 + 2t1 + 3t2 + 4t3 + t4/5)
Durch Mixe lassen sich zwar Prozessoren oder einzelne Verarbeitungselemente
bewerten, die Systembewertung jedoch ist mit diesen Methoden allein unzureichend.
Kernels sind Programme, die in bestimmten Anwenderprogrammen häufig
verwendet werden.
Hier spielen z.B. Matrixinversionen oder die Behandlung von großen
Gleichungssystemen eine herausragende Rolle. Jedoch: Auch hierbei ist das
Ergebnis nicht für jedes Benutzerprofil günstig, es werden nur bestimmte, meist
wenige Hardwarekomponenten angesprochen und Nebenläufigkeiten werden hierbei
auch nicht betrachtet.
Wir stellen also fest:
Ein allgemeingültige, umfassende Leistungsbewertung ist wenn überhaupt nur sehr
schwer erreichbar. Diese Verfahren spielen deshalb bei der Leistungsbewertung
heute nur noch eine untergeordnete Rolle.
Wir wollen im folgenden nicht mehr mit der Bewertung selbst, sondern mit Kriterien
zur Bewertung befassen.
151
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Um ein Maß oder einen Anhaltspunkt zu erhalten, wie die Leistung beim Einsatz ein
oder mehrerer Rechner sich verändert, wollen wir die Komplexitätstheorie bemühen.
Dort gibt es einen Satz:
Es gibt Probleme , die keinen optimalen Algorithmus besitzen. Das bedeutet,
daß es zu jedem Algorithmus A, der bereits ein bestimmtes Problem löst,
einen anderen Algorithmus B gibt, der das Problem schneller als Algorithmus
A löst. (Speed - up Theorem)
Das hört sich ungut an. Wir können also nicht von vornherein verkünden, daß wir
einen optimalen Algorithmus für ein Problem entwickeln werden. Die Eigenschaft
reduziert damit unsere Möglichkeit, die Leistungsfähigkeit eines Rechners oder
ganzen Rechnersystems vorauszusagen.
Eine zweite Aussage, die hier auch nicht bewiesen werden soll, sagt aus, daß
bei zwei Rechnern, von denen der eine schnell, der andere langsam arbeitet,
es bestimmte Probleme und Zeitvorgaben (Zeitgrenzen) gibt, bei denen der
langsamere Rechner den schnelleren Rechner einholt. (GAP - Theorem).
Ein einfaches Kriterium für die Leistungsfähigkeit kann die benötigte Ausführungszeit
für einen Algorithmus darstellen. Sei dabei p die Anzahl der beteiligten Prozessoren
und n ein Maß für die Anzahl der Eingabegrößen:
Tp (n) = cp (n) + op (n)
Hierbei ist Tp(n) die Ausführungszeit für einen Algorithmus, cp die Rechenzeit und op
ein Maß für den Overhead bei der Verwendung von p Prozessoren. Der Overhead
beinhaltet z.B. die Zeit für die Kommunikation der Prozessoren untereinander, um
den Algorithmus auszuführen. Im seriellen Fall ist er natürlich gleich Null!
Für den Speed - up (Beschleunigung) ergibt sich damit:
Speed - up Sp (n)
T1 (n)
Tp (n)
Dieser Ansatz zur Ermittlung der Beschleunigung ist einer unter vielen möglichen,
weil bereits bei den Größen T1(n) und Tp(n) mehrere Interpretationsmöglichkeiten
bestehen.
Erhard gibt drei unterschiedliche Definitionen an:
152
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
1)
Speed  up 
Re chenzeit des A lg orithmus A für Re chner X mit 1 Pr ozessor
Re chenzeit des A lg orithmus A für Re chner Y mit p Pr ozessoren
2)
Speed  up 
Re chenzeit des schnellste n ser . A lg . am Re chner X mit 1 Pr oz
Re chenzeit des schnellste n par A lg am Re chner Y mit p Pr oz.
3)
Speed  up 
Hypothetische Re chenzeit am Re chner X mit 1 Pr ozessoren.
Re chenzeit am Re chner Y mit p Pr ozessoren
Wie man leicht sieht, ergeben sich hierbei für das Speed - up jeweils
unterschiedliche Werte.
Der Leistungsgewinn, der durch die Verbesserung einer Komponente (Hard- oder
Software) eines Rechners erreicht werden kann, wird durch das Amdahlsche Gesetz
bestimmt. Es sagt aus, daß die aus der Verwendung einer schnelleren Komponente
resultierende Gesamtleistung auf den Zeitanteil begrenzt ist, in dem sie genutzt
wird.
Zur Erklärung diene ein Beispiel aus Hennessy / Patterson:
Angenommen, Sie müssen von Nevada nach Kalifornien über die Sierra Nevada und
durch die Wüste nach Los Angeles. Sie haben verschiedene Fahrzeuge zur
Auswahl, aber leider geht die Route so durch das Gebirge, daß Sie dort laufen
müssen. Ihr Fußweg dauert 20 Stunden. Die letzten 200 Meilen können Sie auch
mit einem Fahrzeug zurücklegen. Sie haben fünf Möglichkeiten:
1.
2.
3.
4.
5.
Laufen mit durchschnittlich 4 Meilen / Stunde
Fahrradfahren mit durchschnittlich 100 Meilen / Stunde
Fahren mit einem Hyundai mit 50 Meilen / Stunde
Fahren mit einem Ferrari mit 120 Meilen / Stunde
Fahren mit einem Raketenauto mit 600 Meilen / Stunde
153
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Wie lange dauert die gesamte Reise, und welche Beschleunigung erreicht man auf
der ganzen Strecke?
Fahrzeug für Stunden für
Beschleunigung in Stunden für
Beschleunigung
den zweiten den zweiten
der Wüste
die
für die ganze
Teil der Reise Teil der Reise
Ganze Reise
Reise
Fußmarsch
50,00
1,0
70,00
1,0
Fahrrad
20,00
2,5
40,00
1,8
Hyundai
4,00
12,5
24,00
2,9
Ferrari
1,67
30,0
21,67
3,2
Raketenauto
0,33
150,0
20,33
3,4
Wie wir aus der obigen Tabelle ersehen können, hängt die erreichte
Beschleunigung stark davon ab, daß wir durch die Berge laufen müssen. Die
Beschleunigung in der Wüste ergibt sich aus dem Quotienten der benötigten Zeit mit
dem entsprechenden Fahrzeug und der zeit des Fußmarsches; die letzte Spalte gibt
an, wievielmal schneller die ganze reise im Vergleich zum Fußmarsch ist.
Wir erhalten die Antwort, wenn wir die Zeit für den zweiten Teil der Reise bestimmen
und sie zu den 20 Stunden des Fußmarsches durch die Berge addieren.
Mit dem Amdahlschen Gesetz ermitteln wir schnell die von zwei Faktoren
abhängige Beschleunigung:
1. Der Anteil der Rechenzeit in der Originalmaschine, der durch Veränderung
verbessert werden kann. Im Beispiel ist der Anteil 50 / 70. Dieser Wert, den wir
Anteilverändert nennen wollen, ist immer kleiner oder gleich 1.
2. Die Verbesserung, die durch die veränderte Ausführung erreicht wird, d.h.
wievielmal schneller eine Task ablaufen würde, wenn nur die Veränderung
genutzt würde. Im Beispiel ergibt sich dieser Wert aus der Spalte
„Beschleunigung in der Wüste“. Dieser Wert ist die Originalzeit bezogen auf die
Zeit mit der Veränderung und istr immer größer als 1. Wir nennen den Wert
Beschleunigungverändert.
Die Ausführungszeit der Originalmaschine mit dem veränderten Modus ergibt sich
aus der Summe der Zeiten der unveränderten Teils der Maschine und des Teils
unter Nutzung der Veränderung:
Ausführungszeitneu 


Anteilverändert

Ausführungszeit alt *  1  Anteilverändert  
Beschleuni
gung
verändert


Die Gesamtbeschleunigung ist das Verhältnis der Ausführungszeiten:
154
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Beschleuni gunggesamt 
Ausführungszeit alt
Ausführungszeit neu

1
1  Anteilverändert  
Anteilverändert
Beschleuni gung verändert
Ein Overhead, der zur Kommunikation unter den Prozessen zusätzlich notwendig ist,
ist hier nicht berücksichtigt.
Noch ein Beispiel:
Angenommen, wir nehmen eine Veränderung vor, die zu einer 10 mal schnelleren
Laufzeit führt, aber nur i 40% der Zeit nutzbar ist. Welche Gesamtbeschleunigung
ergibt sich?
Lösung:
Anteilverändert  0,4
Beschleuni gungverändert  10
Beschleuni gung gesamt 
1
0,6 
0,4
10

1
0,64
 1,56
Weiteres Beispiel:
Angenommen, wir können die Geschwindigkeit einer CPU um den Faktor fünf (ohne
Beeinflussung der E / A Leistung) zu erhöhen. Die CPU soll 50% der Zeit aktiv sein,
die restliche Zeit wartet sie auf E/ A. Wenn die CPU ein Drittel der Computerkosten
ausmacht, ist dann die Erhöhung der Geschwindigkeit um den Faktor fünf eine gute
Investition aus Sicht des Kosten / Leistungsverhältnisses?
Lösung:
Die Beschleunigung beträgt:
Beschleuni gung

1
0,5
0,5 
5

1
0,6
 1,67
Die neue Maschine kostet das
2
1
*1 
* 5  2,33 fache der Originalmaschine.
3
3
Da die Kosten offenbar stärker steigen als die Leistung, wird sich das Kosten /
Leistungsverhältnis nicht verbessern.
155
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Eine wichtige Folgerung aus dem Amdahlsche Gesetz ist, daß, wenn eine
Veränderung nur für einen Teil einer Task nutzbar ist, man die Task nicht mehr
beschleunigen kann als 1 minus dem Teil und davon den reziproken Wert.
Ein häufiger Fehler bei der Anwendung des Amdahlschen Gesetzes ist die
Verwechslung folgender Vorstellungen:
a)
zu ändernder Zeitanteil, um die Verbesserung zu nutzen und
b)
Zeitanteil, nachdem die Verbesserung genutzt wird.
Wenn wir anstatt der Zeit, die eine Verbesserung während einer Berechnung bereits
nutzen könnte, die Zeit nach der Nutzung einer Verbesserung messen, wird das
Resultat falsch sein.
Merke:
Über dem Amdahlschen Gesetz erhalten wir Hinweise darüber, wie eine
Veränderung die Leistung verbessert und wie die Ressourcen zu verteilen sind, um
das Kosten/Leistungs-Verhältnis zu verbessern. Ziel muß es sein, die Ressourcen
proportional zum Zeitanteil aufzuteilen.
Neben diesen erwähnten Kriterien gibt es eine Vielzahl anderer Kriterien, auf die
aber nicht näher eingegangen werden soll. Dazu gehören:
Antwortzeit:
Bedienzeit:
Durchsatz:
Verweilzeit:
Wartezeit:
Wartezeit bis zum Eintreffen eines Resultats
Gesamtzeit, die ein Auftrag im System bearbeitet wird
Anzahl der Aufträge, die pro Zeitintervall bearbeitet werden
Zeit, die ein Auftrag im System verweilt
Zeit, die ein Auftrag auf Bearbeitung wartet
156
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Beobachtende Leistungsbewertung (Monitoring)
Um Istzustände in einem Rechensystem feststellen zu können, bedient man sich des
Monitoring. Es wird eingesetzt zum:
1. Vergleich verschiedener Rechensysteme vor einer Kaufentscheidung
2. zur Validierung theoretischer Voraussagen, z.B. werden die Prognosen nach
dem Bau der Rechner überprüft
3. zur Überprüfung des Betriebs . Hier können Engpässe bei definierten und
wechselnden Lastbedingungen festgestellt werden und als Folge Maßnahmen
zum Tuning des Systems durchgeführt werden.
4. Einsicht in den inneren Ablauf von Prozessen im System. Beobachtung des
dynamischen Systemverhaltens (siehe auch Punkt 3)
Bei den Monitoring Methoden unterscheidet man:
Hardware Monitoring und
Software Monitoring
Hybrides Monitoring als Mischform von Software- und Hardware
Monitoring
Bei dem Hardware Monitoring verwendet man Meßgeräte (den Hardware Monitor),
welche direkt an die Schaltkreise des Rechensystems angeschlossen werden. Über
die Meßergebnisse kann man direkt Rückschlüsse auf die Hardwaregrößen als auch
auf das Verhalten der (Objekt) - Programme schließen. Bei den Hardwaregrößen
werden Kanalauslastung oder Nutzung des Befehlsvorrates gemessen, bei den
Objektprogrammen sind Rückschlüsse auf die Objekt-Software möglich.
Die Messungen sind rückkopplungsfrei, es sei denn, eine Rückführung von Signalen
hinein in das System wird bei dem Monitoring ausdrücklich vorgesehen.
Durch die Miniaturisierung ergeben sich beim Hardware Monitoring zunehmend
Probleme dadurch, daß ein Abgriff der gewünschten Signale durch die Kapselung
komplexer Schaltungen in Chips nicht mehr möglich ist. Zum andern muß darauf
geachtet werden, daß durch die Belastung durch den Meßfühler (vornehmlich
kapazitiv) eine Messungsverfälschung auftreten kann.
Probleme, wie sie oben geschildert wurden, treten beim Software Monitoring nicht
auf. Hierbei läuft im Rechensystem selbst ein Meßprogramm, welches Zustände und
Ereignisse aufzeichnet. Es ist klar, daß durch dieses zusätzliche Programm das
Verhalten des Rechners verändert wird und dadurch auch das Resultat des
Meßprogramms entsprechend gewertet werden muß.
Wie auch beim Hardware Monitoring ist die Qualität der erzielten Ergebnisse
abhängig vom Takt der Meßzyklen. Um verwertbare Ergebnisse zu erhalten, ist die
157
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Auflösung der Meßergebnisse von der Auflösung der Uhr des Objektrechners
abhängig.
Das Monitoring verteilter Systeme wirft besondere Fragestellungen auf: Hier muß
nicht nur ein einzelner Rechner beobachtet werden, sondern eine
Zusammenschaltung von Rechnern, die über ein Netz miteinander kommunizieren.
Wir unterscheiden dabei:
 Knotenmonitore, d.h. die Rechner, die in dem Rechnernetz zusammengeschaltet
sind und sich als Knoten des Netzes darstellen, werden gemessen und
 Verbindungsmonitore, d.h. die Verbindungen zwischen den Rechnern werden
gemessen. dabei stellen die Monitore wieder eigene - wenn auch Knoten mit
kleinerer Komplexität - dar.
Das Hauptproblem bei diesen Messungen liegt in der Wechselwirkung der
Komponenten eines verteilten Systems aufeinander. Die Interpretation der
Messungen eines Monitorsystems, mit denen man es üblicherweise in
Multiprozessorsystemen zu tun hat, ist nur dann erfolgversprechend, wenn man sich
in dem Gesamtsystem auf eine globale Taktung verständigt.
Wir merken uns:
Im allgemeinen ist das Monitoring ein sehr gutes Werkzeug zur Beobachtung des
dynamischen (auch statischen) Verhaltens eines Rechensystems. Mit den
erhaltenen Ergebnissen lassen sich Rückschlüsse auf bisher verborgene Probleme
wie Kanalengpässe aufdecken.
Der Einsatz von Hardware Monitoren wird durch den Fortschritt in den Schaltungen
laufend erschwert:
 Meßdaten bei virtuellen Speicherkonzepten lassen keine Rückschlüsse
mehr auf einen bestimmten Prozeß zu. Sie können nicht mehr eindeutig
zugeordnet werden.
 bei RISC Architekturen beeinflussen die Compiler die Reihenfolge der
Abarbeitung; ein Rückschluß auf die Programmfolge ist dadurch kaum noch
möglich
 die Komplexität der Prozessor- Chips erhöht sich laufend. Daten- und
Befehlscaches werden zunehmend mit auf die CPU integriert. Damit
besteht für den Monitor keine Zugriffsmöglichkeit mehr, auf diese Daten
zuzugreifen.
 Die ständig steigenden hohen Taktraten bedingen Meßgeräte, die diese
schnellen Vorgänge noch eindeutig identifizieren können.
158
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Parallele Rechnerstrukturen
In der Klassifikation nach Flynn wurden 4 Klassen von Rechnern vorgestellt. Dabei
sind , wie wir bereits gesehen haben, der SISD für den sequentielle Anwendungen,
der SIMD und der MIMD Rechnertyp von herausragender Bedeutung für die
parallele Rechentechnik.
SIMD Rechner
SIMD Rechner sind die einfachsten Rechner zum Einsatz als Parallelrechner. Sie
sind einfach aufgebaut: sie wenden eine Instruktion (Befehl) auf einen ganzen
Datensatz an. Das abarbeitende Programm ist dabei ein ganz konventionelles
sequentielles Programm.
Hat man viele „processing elements“ (z.B. Feldrechner), so führen alle Prozessoren
die gleiche Operation durch, aber auf möglicherweise verschiedenen Daten. Ein
bekannter Rechnertyp des SIMD Klasse ist der Vektorrechner. Hier gilt genau das
vorher Gesagte. Das besondere Merkmal der Vektorrechner liegt in ihren speziellen
Funktionseinheiten für Gleitkomma-Operationen, die nach dem Pipelining-Konzept
arbeiten. Damit wird die Performance des Rechners auf ein Vielfaches gesteigert, je
nachdem wie die Pipelinetiefe ist. Zum andern liegt es bei Vektorrechnern nahe, die
Anzahl der parallel arbeitenden Prozessoren (processing elements) nach der
Dimension der zu verarbeitenden Vektoren auszurichten. Programmiersprachen wie
FORTRAN90 unterstützen die Programmierung von Vektor Systemen. HPF (High
Performance FORTRAN) , eine auf FORTRAN90 basierende Version von
FORTRAN wurde eigens für die Parallelverarbeitung entwickelt.
Obwohl SIMD-Architekturen (Supercomputer wie CRAY Y, NEC SX2, CM-2, etc)
große Erfolge verzeichnen konnten, stellt die Ausführung nur genau eines
Befehlsstromes während einer Zeitscheibe eine zu große Einschränkung dar.
Eigentliche Parallelität wird dadurch nicht erreicht.
MIMD Rechner
MIMD-Rechner sind die eigentlichen Rechnertypen zur Parallelverarbeitung. Bei
ihnen können verschiedene Schritte eines Programms (threads) gleichzeitig
ablaufen und dabei natürlich auch unterschiedliche Daten zugreifen. Den Spezialfall
dieser Rechnertypen bildet der bereits besprochene SIMD-Rechner.
Sind sehr viele Prozessoren in einem System enthalten, so wird der Modus SPMD
(single program multiple data) verwendet, da der Programmierer sicherlich nicht
sehr viele, für jeden Prozessor angepaßte Programme schreiben wird. Er schreibt 1
Programm, welches auf allen Prozessoren gleichzeitig abläuft, aber während des
Ablaufes sich in den einzelnen Prozessoren durchaus in verschiedenen status
befinden kann. Es können also von jedem Knoten verschiedene Programmteile
bearbeitet werden.
159
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
MIMD-Architekturen verfügen im Gegensatz zu SIMD Architekturen über keine
zentrale Steuereinheit. Die verschiedenen Verarbeitungseinheiten können
verschiedene Programmsequenzen autonom bearbeiten; sie verfügen jeweils über
einen eigenen Programmzähler. Man spricht hierbei auch von lokaler Autonomie. In
diesen Fällen greift man gerne auf Standardprozessoren zurück (of-the-shelf
processors) , die meist kostengünstig zu erhalten sind. Zudem erlauben sie meist
den kostengünstigen Einsatz sequentieller Softwarepakete für die Entwicklung oder
die Portierung von Anwendungen auf den SIMD-Parallelrechner.
Der Transputer bildet jedoch hierzu bereits eine Ausnahme: er bietet auf demselben
Chip den Prozessor und auch bereits eine Kommunikationseinheit.
160
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Vektorrechner
Instruktions
Puffer
InstruktionsHol-Einheit
Skalareinheit
Instruktionsausgabe
Skalarkontrolleinheit
Skalar
Registe
r
SkalarLade/speichereinheit
Hauptspeicher
Skalar
verarbeitungs
einheit
Vektoreinheit
Vektorkontrolleinheit
VektorRegister
Vektorlade/speicherEinheit
Architektur eines Vektorrechners
VektorVerarbeitungs- Pipeline
Vektor- VerarbeitungsPipeline
datei: arch.doc
161
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
SIMD Rechner
162
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Instruktion
SkalarKontroleinheit
SkalarRegister
Speicher
Programmspeicher
Maske
Maskiereinheit
SkalarVerarbeitun
gseinheit
VNKontrolleinheit
InstruktionsHoleeinheit
PE
Instruktionsausgabe
Instruktionsnetzwerk
PE
PE
Verbindungsnetzwerk
Maskiereinheit
Architektur des Feldrechners
PE
Datenpfad
Instruktionspfad
datei: arch.doc
163
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
SIMD Maschinen haben statische Netzwerke. Der Datenaustausch wird durch ein
zentrales Steuerwerk gesteuert, das Verbindungsnetz arbeitet meist synchron.
Beim MIMD Rechner gibt es zwei Verbindungsstrukturen, die von der Organisation
des Adreßraums des Rechners abhängen: manche Systeme verwenden lokale
Adreßräume (hier kann ein Knoten nur auf den Speicher eines benachbarten
Knotens direkt zugreifen. Andere Systeme benutzen einen globalen Adreßraum, so
daß jeder Knoten auf den gesamten Adreßraum zugreifen kann. Um diese
verschiedenen Prinzipien zu realisieren, werden unterschiedliche
Kommunikationsmechanismen angewandt.
Im untenstehenden Bild ist ein MIMD-Rechner mit seinen wesentlichen
Komponenten dargestellt. Die Rechnerknoten, bestehend aus dem Rechnerkern R,
einem Speicher M und dem Kommunikationsinterface C sind über ein
Verbindungsnetz V miteinander verbunden. Je nachdem, wie der einzelne Knoten
aufgebaut ist, erhält man Systeme mit verschiedenen Programmiermodellen. Der
erste Typ kann auf gemeinsame Informationen nur dann zugreifen, wenn die
betreffenden Daten zuvor durch Nachrichten ausgetauscht worden sind. Man spricht
hierbei auch von message passing systems.
Ist das Kommunikationsinterface jedoch in der Lage, durch direkten Datenzugriff
(direct memory access) Daten zu holen oder abzuspeichern, kann der Durchsatz
(die Effizienz und damit auch die Leistung) erhöht werden. Der Datenfluß ergibt sich
dann also zu M  C  V  C M.
Eine Alternative besteht darin, daß über eine Programmschleife Daten aus dem
Speicher geholt werden, dem Kommunikationsinterface übergeben werden, die
Empfängerseite ihrerseits Daten aus dem Kommunikationsinterface ab und legt sie
im Speicher ab. Es gilt also in diesem Fall:
M  R  C  V  C  R  M. Der Rechnerkern wird also bei diesem Prinzip
einmal zum Aufsetzen der Nachricht auf der Sendeseite und zum andern zum
Verarbeiten der Unterbrechungen auf der Empfängerseite benötigt.
Die zweite Rechnerart kann auf jede Speicherzelle des Gesamtsystems wegen des
globalen Adreßraums lesend oder schreibend zugreifen. Man nennt sie auch
Systeme mit virtuellem gemeinsamem Speicher (VGS-Systeme). Hierbei geht jeder
Speicherzugriff an den lokalen Speicher , der alle Anforderungen insofern bedient,
als er wirklich lokale Zugriffe selbst behandelt und diejenigen Anforderungen auf
daten in entfernteren Speichern entsprechend weiterleitet. Wir stellen also fest, daß
die Zugriffe auf entferntere Speicher mehr Aufwand und damit auch mehr Zeitbedarf
bedeutet, als ein lokaler Zugriff. Man nennt diese Zugriffsart denn auch „non uniform
memory access“ (NUMA). Beispiele für diesen Rechnertyp sind die KSR-2, die
CRAY T3D und der MANNA Rechner der GMD.
Die andere Rechner-Kategorie die „uniform memory access“ (UMA) kann man sich
die Rechnerkerne alle auf einer Seite des Verbindungsnetzwerkes denken und die
Speicher auf der anderen. Das Verbindungsnetzwerk ist dabei als sogenannter
„Kreuzschienenverteiler“ (crossbar) ausgebildet.
164
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
M
Allgemeine MIMD - Struktur
R
C
Verbindungsnetzwerk
Verbindungsnetzwerk
C
C
R
R
M
M
165
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Verbindungsnetzwerke (VN):
(siehe auch Waldschmidt: Parallelrechner, Teubner Verlag)
In den vorangegangenen Kapiteln haben wir Verbindungsnetzwerke, soweit sie eine
Rolle spielten, als „black box“ betrachtet. Wenn wir aber näher hinschauen, so
stellen wir fest, daß gerade die verbindenden Elemente zwischen Prozessoren, die
miteinander kommunizieren sollen, wesentlichen Einfluß auf die Gesamtleistung
haben.
Deshalb wollen wir diese Hardwareressourcen ein wenig näher betrachten.
Verbindungsnetzwerke dienen zum Transport von Steuerbefehlen und Daten
zwischen Prozessoren als auch innerhalb der Module einzelner Prozessoren.
Innerhalb eines SIMD Rechners stellen solche Verbindungsnetzwerke die Kopplung
zwischen Speicher und Prozessor oder z.B. die Konfiguration von Pipelines dar.
Bei MIMD Rechnern dienen die Verbindungsnetzwerke zur Kommunikation unter
den Prozessen zwischen den Prozessoren. Eine solche Kommunikation kann dabei
über einen gemeinsamen Speicher (shared memory) geführt werden oder kann
auch nur über ein Verbindungsnetzwerk (message passing) ablaufen.
Verbindungsarten:
Bei den Verbindungsarten unterscheiden wir zwischen Leitungsvermittlung und
Paketvermittlung. Bei der Leitungsvermittlung wird eine physikalische Verbindung
(Leitung) für die gesamte Dauer der Datenübertragung zwischen den Teilnehmern
hergestellt. Sie eignet sich im besonderen zur schnellen Übertragung vieler
Nachrichten zwischen denselben Teilnehmern. Der Nachteil liegt in der Blockierung
der benutzten Verbindungen und Schaltstellen für die gesamte Zeit der bestehenden
Verbindung.
Bei der Paketvermittlung wird dagegen ein möglichst großer Datenblock (Paket) an
das Verbindungswerk abgegeben und nicht erst eine physikalische Verbindung
aufgebaut. Dieses Verbindungsnetzwerk transportiert das Paket über
Zwischenstationen mit Hilfe der Adreßinformation (routing) zu dem Zielteilnehmer.
Die Leitungen können damit von mehreren Datenpaketen mit unterschiedlichen
Zielen benutzt werden.
Bei der Paketvermittlung unterschiedliche man zwei wesentliche
Übertragungsstrategien, die „store-and-forward“ Strategie und die „worm-hole“
Strategie. Bei der store-and-forward werden die Pakete in jeder Vermittlungsstation
vollständig zwischengespeichert. Die Adreßinformation wird interpretiert und, wenn
die erforderliche Leitung zur Verfügung steht, das anstehende Paket zur nächsten
Vermittlungsstation weitergereicht. Diese Art der Vermittlung ist völlig dezentral
organisiert. Bei der worm-hole Strategie wird das Paket vom Sender in das
Vermittlungsnetzwerk gegeben, welches dann einen Weg – wie ein Wurm – durch
die Vermittlungsstationen sucht. In den Vermittlungsstellen selbst ist nur ein kleiner
Speicher vorhanden, der gerade mal den Kopf (head) der anstehenden Nachricht
aufnehmen kann und interpretieren kann. Der Rest der Nachricht liegt dann in den
zuvor benutzten Vermittlungsstellen und wird durch die automatische Flußkontrollle
beim Weiterschalten des Kopfes „hinterhergezogen“. Am Ende des Pakets befindet
sich eine „End“-information, die den Weg für andere Pakete freigibt. Die Vorteile
dieser Strategie liegen also in der geringen Speicherkapazität in den
166
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Vermittlungsstellen und dem schnellen Weitertransport (Pipelining) durch das
Netzwerk.
167
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Verbindungsaufbau:
Die Steuerung des Verbindungsaufbaus ist nur bei „dynamischen“, also bei
Verbindungsnetzwerken, die konfigurierbar sind , zu unterscheiden. Erfolgt die
Einstellung des momentanen Verbindungsweges in jedem Schalterelement selbst,
so spricht man von verteilter Steuerung. Gibt es hingegen eine konzentrierte
Hardwareeinrichtung für die Einstellung, so handelt es sich um eine zentrale
Steuerung.
Arbeitsweise:
Hinsichtlich der Arbeitsweise unterscheidet man die synchrone und die asynchrone
Betriebsart. In gewisser Weise kann man dies mit den synchronen und asynchronen
Schaltnetzen vergleichen, die zu Anfang dieses Kurses eingeführt wurden. Im
synchronen Mode wird das Verbindungsnetzwerk zu bestimmten Zeiten von allen
Teilnehmern gleichzeitig zum Datenaustausch benutzt, während im asynchronen Fall
jeder Teilnehmer seinen individuellen Verbindungsaufbauwunsch an das
Verbindungsnetzwerk absetzen kann.
Topologie:
Die Topologie, d.h. die räumliche Anordnung des Verbindungsnetzwerkes, spielt
eine herausragende Rolle; sie bestimmt die Eigenschaften wie z.B. die Skalierbarkeit
eines Parallelrechners, wesentlich mit.
Bei der Topologie unterscheidet man reguläre und irreguläre Strukturen. Bei
Parallelrechnern werden mit wenigen Ausnahmen immer reguläre Strukturen
verwendet. Sie haben den Vorteil, daß die Prozessoren und Prozesse in regulären
Strukturen so angeordnet sind, daß sie den Problemstellungen angepaßt sind. Je
nach Anwendung unterscheidet man hier statische und dynamische
Verbindungsnetzwerke. Statische Verbindungsnetzwerke sind feste Punkt-zuPunkt-Verbindungen zwischen den Prozessoren. Dynamische
Verbindungsnetzwerke enthalten demgegenüber Schaltelemente, die durch
Konfigurationsinformation in eine bestimmte Leitungsanordnung gebracht
(geschaltet) werden können. Ein weiteres Unterscheidungsmerkmal bildet die Anzahl
der Stufen, die die Daten durchlaufen müssen.
Statische Verbindungsnetzwerke :
Massive Parallelrechner benutzen meist statische Verbindungsnetzwerke. Ihre
Verbindungsstruktur ist fest geschaltet und besteht aus Punkt-zu-PunktVerbindungen zwischen den einzelnen Verarbeitungsknoten. Stellt man die
168
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Prozessoren als Knoten und die Verbindungen als Kanten dar, so lassen sich die
statischen Verbindungsnetzwerke auch als Graphen darstellen.
Von diesen VN wird häufig das Gitter (grid, nearest neighbour mesh) zur Lösung von
zweidimensionalen Problemen eingesetzt. Der Vorteil dieses VN liegt darin, daß
jeder Prozessor 4 feste Verbindungskanäle bei beliebiger Größe des Netzes hat.
(Transputer-Systeme)
Um die Kommunikation an den „Rändern“ des Netzes nicht abbrechen zu lassen,
kann das Gitter zu einem 2D-Torus ergänzt werden. (siehe auch Karnaugh-Veitch
Tabellen, bei denen die Felder an den Rändern von entgegengesetzten Seiten
miteinander verbunden werden können und so zur Effektivitätssteigerung des
Verfahrens beitragen).
Das hexagonale Gitter wird häufig bei sogenannten systolischen Algorithmen
verwendet; ist als Raumdarstellung als Graph eines 3D-Torus darstellbar. Da neben
den 2-dimensionalen auch viele 3-dimensionale Problemstellungen existieren
(Multimedia, Virtual Reality), kann hierbei die Anordnung der Verbindungen
zwischen den Verarbeiutungsknoten als 3D-Gitter erfolgen. Die Klasse der
sogenannten Mehrgitter-Algorithmen (Strömungsmechaniken, Prozeßsimulation)
läßt sich auf solche Architekturen besonders gut abbilden.
Hypercube-Topologien finden nicht so häufige Verwendung wie die oben
beschriebenen Gittertypen. Sei die Dimension n des Hypercubes gegeben, so
enthält er 2n(n-1) Verbindungen und n Verbindungen pro Knoten. Eine wichtige
Eigenschaft hierbei ist, daß die maximale Verbindungslänge zwischen 2 beliebigen
Knoten nur n Stufen beträgt. Damit ist er dem Gitter überlegen, aber durch die von n
abhängige Zahl der Verbindungskanäle schlecht skalierbar. Durch die geringe
Anzahl der Verbindungsschritte (hops) fand er zu Beginn der MIMD-Parallelrechner
große Verbreitung.
Die Topologie der vollständigen Vernetzung (siehe auch Neuronale Netzwerke)
verbindet alle Knoten mit je 1 Verbindungskanal (link) untereinander und stellt damit
die aufwendigste Verbindungsstruktur dar. Der Aufwand von (N-1)
Kommunikationskanälen pro Knoten und die hohe Anzahl von Verbindungen ist aber
ist aber – auch schon bei kleinen Netzwerken – z.Z. kaum vertretbar. (Obwohl sie
nur 1 Verbindungsschritt (hop) benötigen und keine Ressourcenkonflikte kennen)
Die folgende Tabelle beschreibt die Verbindungseigenschaften statischer
Verbindungsnetzwerke:
Topologie
Ring
Baum
2D-Torus
3D-Torus
Hexagon. Gitter
Hypercube
Anzahl der
Verbindungskanäle
pro Knoten
2
3
4
6
6
log2N
169
Maximale
Entfernung
(diameter)
N
2*(log2N-1)
N2
N3
N3
log2N
Gesamtzahl der
Verbindungskanäle
N-1
N-1
2*N
3*N
3*N
N log2 (N/2)
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Vollst. Vernetzung
N-1
1
N* (N-1)/2
Skizze:
Topologien statischer VN
170
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Dynamische Verbindungsnetzwerke:
Wie bereits erwähnt, enthalten VN konfigurierbare Schaltelemente und
unterscheiden sich in der Stufenanzahl in ein- oder mehrstufige. Zu den einstufigen
zählen das „Shuffle“-Netzwerk, der Crossbar und der Bus. In untenstehender
Abbildung sind diese drei Prinzipien dargestellt:
Skizze!!!!
Der Crossbar (auch Kreuzschienenverteiler genannt) ist das universellste VN, denn
es gestattet, in einer Stufe jeweils beliebige Paare von Ein- und Ausgängen
miteinander zu verbinden. Es besitzt auch die Möglichkeit, an alle Empfänger
gleichzeitig eine Nachricht zu senden (broadcast). Wie beim Bus, den wir bereits
früher besprochen haben, müssen auch hier die Regeln beim Senden eingehalten
werden: Auf eine Leitung darf jeweils immer nur genau ein Sender seine Information
leiten; ansonsten wird das Signal auf dem Bus verfälscht. Dieser mögliche
Konfliktfall wird durch einen sogenannten „Arbiter“, der die Zuteilungsaufgabe zu
erledigen hat, geleistet. Die Komplexität einer solchen Schaltung ist recht hoch,
insbesondere dann, wenn gleichzeitig 8, 16, 32 oder gar 64 bit gleichzeitig geschaltet
werden müssen. Mit der Verfügbarkeit hochkomplexer integrierter Schaltkreise stellt
dies jedoch kein Problem mehr dar.
Bei Parallelrechnern ergeben sich für das Crossbar-Prinzip zwei
Anwendungsbereiche, die leicht unterschiedliche Implementierungen erfordern. Bei
der Verwendung als VN zwischen Prozessoren und Speichern in einem System mit
physikalisch gemeinsamem Speicher wird eine große Wortbreite der Verbindungen
mit möglichst geringer Durchlaufzeit benötigt. Die Anzahl der Worte pro
vermitteltem Paket ist klein und beträgt selten mehr als eine Cache-Zeile.(
typischerweise 4 oder 8 Worte).
Die Auswahl der Ausgangskanäle erfolgt über die Adreßbits der Speicheradresse
(Selektion der Speichermoduln). Durch Hinzufügen von Eingangs- und
Ausgangsregistern können die Schaltfunktionen des Crossbars in die Pipeline des
Speicherzugriffs integriert werden, was hohen Durchsatz bedeutet. Durch die geringe
Anzahl von Steuerleitungen ist auch eine Aufteilung der benötigten Wortbreite
(slicing) auf mehrere parallel und synchron arbeitende integrierte Bausteine (VLSI)
möglich. Solche Crossbar-Bausteine können auch zur Konfiguration von
Verbindungen zwischen Verarbeitungseinheiten dienen.
Bei der Anwendung des Crossbars als VN zur Kommunikation in einem
Parallelrechner wird eine hohe Anzahl von Ein-/Ausgangskanälen mit genügend
großer Bandbreite benötigt, um damit eine Verbindung zwischen möglichst vielen
Knoten mit nur einem Verbindungsschritt (hop) zu ermöglichen. Bei kleinen zu
überbrückenden Entfernungen innerhalb eines „Cabinet“ (das ist i.a. der Rahmen,
das „Gerippe“ eines Rechners) kann die Wortbreite 8 bit oder breiter sein, da hier
171
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
die Verbindungskanäle in die Rückwandverdrahtung (backplane) integriert werden
können.
Bei längeren Verbindungen ist die bitserielle Übertragung und Vermittlung (z.B. 1 bit,
32x32 links) mit höheren Taktraten vorteilhafter, weil dadurch die Verbindungen
durch Kabel einfacher sind. Wünschenswert sind für die größeren datenpakete des
Botschaftenaustauschs pro Kanal Pufferregister (FIFO) und eine Flußkontrolle, um
bei blockiertem Ausgangskanal einen Paketverlust zu vermeiden. Die vermittlung
wird durch Interpretation des Nachrichtenkopfes vorgenommen, der den Nutzdaten
der Nachricht vorangestellt ist. Zum Aufbau größerer VN sind verschiedene
Anordnungen von mehreren Crossbars notwendig und möglich.
Eines der einfachsten und sehr verbreiteten VN ist der BUS. Der Bus ist ein
Crossbar in der Konfiguration m x 1, und stellt damit eine Spalte dieses VN dar. Er
ist kostengünstig realisierbar und seine Schalterfunktionen sind physikalisch auf die
Busmoduln verteilt. Seine wesentliche Begrenzung ist die Schaltgeschwindigkeit und
die Anzahl der Busteilnehmer. Die Schaltgeschwindigkeit hängt dabei von der Länge
der Busleitungen, der Ankoppelkapazität und den verwendeten Signalpegeln ab.
Moderne Bussysteme, wie z.B. der VME-Bus, der PCI-Bus oder der Future-Bus+
erlauben Datenraten von 120 Mbyte / s bis zu 1,2, Gbyte/s bei Bitbreiten von 32 –
256 bit. Verwendung finden sie hauptsächlich bei kleineren Parallelrechensystemen,
da ihre Bandbreite nicht mit der Anzahl der Busteilnehmer steigt. Für die Ein/Ausgabe und den Anschluß von Peripheriegeräten finden Bussysteme auch in
größeren Parallelrechenanlagen Verwendung.
Das „Shuffle“ Netzwerk läßt sich ebenfals aus der Crossbar-Struktur herleiten. Es ist
ein 2 x 2 Crossbar mit eingeschränkter Steuerfunktion. Bei Q1 unwahr erfolgt die
Verbindung von I1 nach O1 und von I2 nach O2. Ist Q1 wahr, so vertauscht sich die
Zuordnung der Ausgänge.
Einige Realisierungen erweitern diese einfache Ansteuerung durch eine
Duplizierungsfunktion von je einem Eingang auf beide Ausgänge. Diese
Schaltfunktionen werden von einem zusätzlichen Kontrolleingang gesteuert und als
„broadcast“ bezeichnet. Das „shuffle“ VN ist durch seine eingeschränkte 2 x 2
Grundstruktur nicht skalierbar, wird aber als Element für den Aufbau von
mehrstufigen VN benutzt. Mehrstufige sind aus mehreren Lagen der
Grundschaltung des „shuffle“ Netzwerkes aufgebaut.
Skizze : Schaltfunktionen des shuffle- Netzwerkes
172
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Folgende Topologien gehören zu der Klasse der mehrstufigen VN: Banyan,
Baseline, Cube, Delta, Flip, Indirect cube und Omega.
Die folgende Skizze zeigt ein mehrstufiges VN (Banyan):
173
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Abb. Schaltfunktionen des shuffle Netzwerkes
Als Schaltelemente werden „shuffle“ V eingesetzt. Unterschiede gibt es nur in der Art
der Leitungsführung zwischen den Schaltelementen. Sie benötigen bei N Ein- und
Ausgängen zu ihrer Realisierung N/2(log2N)-1 „shuffle“ Elemente und bestehen aus
(log2N) –1 Ebenen. Die aufgezählten VN sind nicht alle blockierungsfrei. Bereits ei
einziger Verbindungsweg für eine Anforderung zwischen dem Eingang und einem
Ausgang, wie in den obigen Abbildungen schattiert dargestellt, läßt viele andere
Anforderungen nicht mehr zu. Um das Blockierungsverhalten zu verbessern, kann
man diese Netzwerke mit zusätzliche Ebenen ausstatten, damit im Falle von
Blockierungen die Verbindungswege umgeordnet werden können. Das Benes
Netzwerk ist eine Beispiel für eine solche Anordnung.
Abb. Benes Netzwerk
Das Benes Netzwerk gestattet die Schaltung aller permutationen zwischen Ein- und
Ausgängen. Wie in der Abb zu erkennen ist, besteht es aus der
Hintereinanderschaltung von zwei Banyan-VN und besitzt 2(log2N)-1 Ebenen. Die
Nachteile der Benes Netzwerke – die Möglichkeit von Blockierungen - werden
durch die Verwendung von Crossbar anstelle der shuffle Elemente vermieden. Die
als CLOS-Netzwerke bezeichneten VN kombinieren die Vorteile des Crossbars mit
der annehmbaren Komplexität der mehrstufigen VN. Sie bestehen aus mehreren
Stufen (meist drei), und die Crossbars jeder Stufe haben eine unterschiedliche
Konfiguration. In der folgenden Abbildung ist ein Beispiel eines CLOS-VN mit den
Parametern m, n und r dargestellt. Wählt man aus Gründen einer einfachen
Realisierung m = n = r
Und nimmt zudem ein 16 x 16 Crossbar als Grundelement an, so verbindet ein
solches Netzwerk 256 Eingänge mit ebenso vielen Ausgängen.
Abb. CLOS – Verbindungsnetzwerk
174
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Eine weitere Klasse von VN bilden die hierarchischen VN. Darunter wollen wir die
einfache Verwendung des gleichen VN oder unterschiedlicher VN zum Aufbau von
VN mit höherer Verbindungskomplexität verstehen. Da hierbei auch die Vermischung
von statischen und dynamischen VN möglich ist, ergibt sich eine Vielzahl von
unterschiedliche Strukturen.
Einige Beispiele von hierarchischen VN sollen die Vielfältigkeit ihrer Realisierungen
veranschaulichen.
Ersetzt man die Verbindungsknoten in einem statischen VN wie dem binären Baum
durch Schaltelemente und erhöht auf jeder Ebene die Anzahl der Verbindungen, so
erhält man den sogenannten „Leisersonschen Baum“ und den „fat tree“ wie in der
untenstehenden Abb. Gezeigt.
Abb. „fat tree mit Crossbar Schaltern
Diese Struktur mit dem fat tree vermeidet durch ein höhere Anzahl von leitungen
zur Wurtzel hin den beim binären Baum auftretenden Engpaß der
Kommunikationsbandbreite in der Wurzel. Als Schaltelemente in den
Verbindungsknoten kommen Crossbars mit unterschiedlichen Konfigurationen zur
Verwendung.
Die rekursive Verwendung von gleichen Crossbarkonfigurationen ergibt Hierarchien
von Crossbars, die zu den unterschiedlichsten sehr kompakten Realisierungen von
VN führen. Bei der Crossbarhierarchie füht die Verbindung von zwei Knoten über
maximal 2h+1 Vermittlungsstufen, wenn h die Höhe der Hierarchie ist. Da ein
solches hierarchisches Crossbar-Netzwerk berteits bei einer geringen Höhe h viele
Knotenrechner mit sehr wenigen Verbindungsschritten verbinden kann, wird es in
Zukunft in vielen Parallelrechnern zu finden sein.
175
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
(Hardware-) Struktur .......................11
2D-Torus ........................................168
absoluten direkten Adressierung120
Ada .....................................................4
Additionen .......................................13
Adreßmodusbits ...........................119
Adreßregisterindirekte .................120
Algebra ..............................................4
Algorithmen ......................................9
ALU ..................................................14
Amdahlsche Gesetz .....................152
Anfangszustand ..............................53
Antwortzeit ....................................155
application layer ...........................146
Arbeitsspeicher ................................6
Architekturprinzipien......................12
Arpa ...................................................7
Assoziativspeicher .......................134
Ausgabealphabet ............................51
Ausgabefunktion ............................51
Ausgabesymbol ..............................51
Automaten .......................................51
Babbage ............................................4
Basic ..................................................7
Bedienzeit......................................155
Befehlsausführungszeit ...............150
befehlszählerrelativen Adressierung
....................................................122
Benutzerschnittstelle .....................12
Berechnung.......................................9
Beschleunigung............................153
Betriebssystem ...............................10
binär ...................................................4
bistabile ...........................................43
bit .......................................................5
Bitketten ............................................9
black box .......................................165
Boole .................................................4
Boolschen Algebra ...........................4
bubble ............................................103
burst mode ....................................136
Bus-Organisation .........................140
Byron .................................................4
CACHE ...........................................125
Cachezugriffe ............................... 101
Chip ................................................... 7
CM-2 .............................................. 158
Colossus .......................................... 6
CRAY............................................. 158
CRC ............................................... 139
CSMA/CD ...................................... 145
cycle stealing ............................... 135
daisy chaining .............................. 140
Darpa ................................................ 7
data link layer ............................... 148
Daten ................................................. 9
Datenblock ................................... 165
datenregisterdirekten .................. 119
Datenstruktur ................................... 9
Datenverarbeitungsmaschine ........ 4
Dekrementieren ........................... 121
Demodulation ............................... 139
Descartes ......................................... 4
deterministisches Verhalten ......... 51
Dezimalsystem ................................. 4
D-Flip-Flop ...................................... 47
digitale .............................................. 5
direct mapped cache ................... 135
Direct Memory Access ................ 135
Direkte Kopplung ......................... 138
dirty bit ......................................... 133
DMA .............................................. 134
Duplex ........................................... 147
Durchsatz ..................................... 155
Dynamische Verbindungsnetzwerke
.................................................... 170
Eckert................................................ 6
Edsac ................................................ 6
Eingabealphabet ............................ 51
Eingabeband .................................. 52
Eingabesymbol .............................. 51
Einprozessorsysteme .................... 12
Eniac ................................................. 6
Enigma .............................................. 6
explicit addressing ...................... 136
Feldrechner ............................ 12, 158
Firmware ......................................... 11
Flipflop ............................................ 45
176
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
FLOPS ...........................................149
flow-through..................................136
fly-by transfer................................136
Flynn ................................................12
formalen Logik ..................................4
Forwarding ..............................97, 102
Frequenzteiler .................................48
garbage collection ........................126
Gates .................................................7
gerichteter Graph ...........................54
Gesamtbeschleunigung ...............154
Gibson-Mix ....................................150
grid .................................................168
Hardware ...........................................6
Hardware-Betriebsmittel ................11
Hauptspeicheradressen ...............120
Hazards ...........................................45
Hennessy / Patterson ...................152
hops ...............................................168
Horner ............................................150
Hypercube .....................................168
implicit addressing .......................136
indirekte Adressierung.................114
indizierte Adressierung ................115
industriellen Revolution ...................4
Informationsstruktur ......................11
Infrarottechnik ..............................139
Inkrementieren ..............................120
instruction scheduling. ................104
Intel ....................................................7
INTERNET......................................146
Interpretationssystem ....................10
Interrupt ...........................................98
Istzustände ....................................156
JK - Master – Slave Flipflop ...........48
Kacheln .........................................127
Kanalkopplung..............................138
kapazitiv ........................................156
Kapselung .....................................156
Kippstufe .........................................44
Kombinationslogik ...........................4
Kommunikation ................................9
Kommunikations- und
Kooperationsregeln .....................11
Kommunikationstechnik ..............139
Komplementbildung .......................14
Komplexität .....................................14
Komplexitätstheorie .................... 151
Konkatenation .............................. 128
Kontrollanweisungen .................... 10
Kontrollstruktur ............................. 11
Kopplung über Bussysteme ....... 138
Kreuzschienenverteiler ............... 163
Künstlichen Intelligenz.................... 7
Latenzzeit ..................................... 103
Leibniz .............................................. 4
Leitungsvermittlung .................... 165
Leitwerk .......................................... 13
Lichtwellenleiter .......................... 139
link ................................................ 168
Listener ......................................... 140
load delay slot)............................. 105
Lochkarten ....................................... 4
Logik ................................................. 4
logische Verknüpfung ..................... 5
LRU ............................................... 128
MANNA.......................................... 163
Mark I ................................................ 6
Maschinensprache ........................ 10
Master ........................................... 140
Master - Slave Flip-Flop ................ 48
Matrixinversionen ........................ 150
Mauchley .......................................... 6
Maximumbestimmung ................. 150
Mehrgitter-Algorithmen ............... 168
Mehrprozessorsysteme ............... 149
message passing systems. ........ 163
Mikroprogramm ............................. 11
Mikroprogrammsprache ................ 10
Mikroprozessor ................................ 7
MIMD ............................................... 12
MIPS .............................................. 149
MISD................................................ 12
miss .............................................. 133
Moduln .............................................. 9
Monitoring .................................... 156
Multimedia .................................... 168
Multiplikationen ............................. 13
Multiprozessorsysteme ................. 12
nearest neighbour mesh ............. 168
Nebenläufigkeiten ........................ 150
NEC ............................................... 158
network layer ............................... 148
Netzwerke ..................................... 138
177
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Neuronale Netzwerke ...................168
NUMA .............................................163
of-the-shelf processors ................159
Operandenadresse .......................120
operating system ............................10
Operationsprinzip ...........................11
Operatoren ........................................5
Organisation .....................................9
Overhead .......................................154
page fault.......................................128
Paging ...........................................127
Paketvermittlung ..........................165
Parallelität .....................................158
Parity..............................................139
Pascal ................................................4
peak performance.........................149
physical layer ................................148
pipeline flushing ...........................109
pipeline scheduling ......................104
Pipelinerechner...............................12
pipeline-stall..................................103
poll-count ......................................141
Polynom ........................................150
Portierung .....................................159
presentation layer .........................147
processing elements ....................158
Program Counter ..........................117
Programme........................................5
Programmierung...............................4
Prozessor ........................................10
Punkt-zu-Punkt-Verbindungen ....167
random access .............................140
Random Access Memory .............125
RAR ................................................103
RAW ...............................................102
Rechenautomaten ............................5
Rechenmaschine ..............................4
Rechensystem ............................4, 10
Rechnerarchitektur.....................9, 11
Rechnerkernzuteilung ..................125
Refresh ..........................................136
Registerindexbits .........................119
Relais .................................................5
Relation ...........................................54
Röhrenrechner ..................................6
Routing ..........................................147
RS-Flip-Flop ....................................46
Rücksprungadressen .................. 117
Schichtenmodell ............................ 10
Schiebeoperationen ................ 14, 49
Schieberegister .............................. 50
serielle .............................................. 7
session layer ................................ 147
Short-circuiting .............................. 97
Sicherheit ..................................... 140
Signaldurchlaufszeit...................... 43
SIMD................................................ 12
SIMD-Architekturen ..................... 158
Simplex ......................................... 147
SISD ................................................ 12
Skalierbarkeit ............................... 167
Software ........................................... 6
Speicherelemente .......................... 45
Speicherkopplung ....................... 138
Speicherprogrammierung ............... 6
SPMD ............................................ 158
Stackpointer ................................. 117
Statusregister .............................. 117
Steuer Hazards ............................ 106
Steuerwerk ....................................... 6
store-and-forward ........................ 165
Struktur ............................................. 9
supervisor .................................... 117
Synthese ........................................... 9
systolische Algorithmen ............. 168
tag ................................................. 135
Taktung ........................................... 45
Talker ............................................ 140
TCP/IP ........................................... 145
threads .......................................... 158
Topologie ..................................... 167
Trace-Modus ................................ 117
Transformationen ............................ 9
Transitionsfunktion ....................... 52
transport layer.............................. 147
Transputer .................................... 159
Transputer-Systeme .................... 168
Tuning ........................................... 156
Turing ............................................... 6
Übersetzer ...................................... 10
Ultra .................................................. 6
UMA............................................... 163
Univac ............................................... 7
unmittelbaren Adressierung ....... 120
178
datei: arch.doc
Rechnerarchitektur und -organisation
Allgemeines nach COY, ERHARD, GILOI, HENNESSY/PATTERSON, KLAR, PAUL
_________________________________________________________________________________________
_
Vakuumröhren ..................................5
Validierung ....................................156
Vektorrechner ...............................158
Verbindungsarten .........................165
Verbindungsaufbau ......................167
Verbindungsnetzwerke ................165
Verbindungsnetzwerkes ..............163
Vergleicher ....................................106
verteilter Steuerung ......................167
Verweilzeit .....................................155
Verzweige-Hazard .........................106
Virtual Reality................................168
vollständige Vernetzung ..............168
Von - Neumann .................................6
Wählverfahren .............................. 140
WAR .............................................. 102
Wartezeit ....................................... 155
Wartezyklen .................................. 104
WAW ............................................. 102
worm-hole .................................... 165
Wurzelziehen ................................ 150
zentrale Steuerung. ..................... 167
Zuse .................................................. 5
Zustände ......................................... 51
Zuständen ...................................... 51
Zustandsgraph ............................... 54
Zustandsüberführungsfunktion ... 51
zweiwertig ........................................ 4
179
datei: arch.doc
Herunterladen