Читать книгу ICT-Virtualisierung - Johann Widmer - Страница 13
Eigenschaften des von Neumann Rechners
ОглавлениеMöchte man nun mit einer solchen Maschine rechnen, so müssen noch einige weitere grundsätzliche Eigenheiten bekannt sein.
1 Eine CPU versteht nur Anweisungen in binärer Form. Alle Anweisungen und Daten müssen somit in „Worte“ von 8, 16, 32 oder neuerdings 64 Bit Länge umgewandelt werden.5
2 Jede CPU „versteht“ nur eine ganz bestimmte Anzahl von speziellen Maschinen-Befehlen (instructions). Da diese Befehle alle in binärer Form vorliegen müssen (eine Folge von 8 ... 64 Einsen und Nullen), hat man sich besser merkbare Namen für diese Maschinenbefehle ausgedacht. Diese Sprache nennt man Mnemonic, ein englisches Wort, das etwa „Gedächtnisstütze“ bedeutet. Als Beispiel soll in einem Game Boy Gerät mit einem erweiterten, auf dem Z80 basierenden 8080 8-Bit-Prozessor der Zahlenwert 5 in ein Register (Speicher) geschrieben werden6. Das Mnemonic für ‹Load Data to/from Registers/Memory› ist LD. RP bezeichnet bei diesem Prozessor einen 16 Bit Speicher (oder besser ein Speicherpaar aus zwei 8-Bit-Speichern). Mit #(data) wird der Wert, der in das Register geschrieben werden soll, bezeichnet. Der Befehl lautet somit LD RP,#5.Die Mnemonic-Programmanweisungen müssen nun von einem ASSEMBLER-Systemprogramm7 in die gewünschten Maschinenbefehle umgewandelt werden. Der Zusammenhang zwischen Mnemonic und Maschinensprache wird am besten durch das folgende Beispiele erklärt: Das Mnemonic LD RP,#5 besteht aus einem Befehl (LD RP) und Daten (5) und wird durch das Assemblieren in 8-Bit-Folgen in der Maschinensprache umgewandelt; 0011’0010 für den Befehl (LD RP) und 0000’0000’0000’0101 für die Daten (5) im zweimal 8-Bit-Speicherpaar (RP).
3 Der Speicher ist entsprechend der Wortlänge der Maschine in 8, 16, 32 oder 64 Bit breite Speicherzellen eingeteilt. Jede Zelle hat eine Adresse.
4 Im Speicherwerk befinden sich sowohl Daten (z.B. Zahlenwerte) als auch Anweisungen. Aus diesem Grund muss das Steuerwerk gut „aufpassen“, dass jeweils die richtige Art der Speicherinhalte dem Rechenwerk übergeben wird.
5 Die Abarbeitung der Speicherinhalte geschieht in zwei Schritten: 1. Schritt: Der Speicherplatzinhalt aus Zelle 1 wird gelesen, als Anweisung interpretiert und dem Rechenwerk zur Ausführung übergeben8. 2. Schritt: Hier wird der Speicherplatzinhalt der durch den Befehl spezifizierten Adresse (in unserem Beispiel oben mit dem Befehl ADD z.B. Platz 10 oder 11) gelesen und dem Rechenwerk zur Bearbeitung (im Beispiel Addieren) übergeben9.
6 Es ist keine Parallel-Bearbeitung mehrerer Befehle oder Daten möglich. Ein von Neumann-Rechner bearbeitet zu jedem Zeitpunkt immer nur einen Befehl (sequenziell), der immer eine Datenoperation im Rechenwerk bewirkt. Dies ist auch als von Neumannscher Flaschenhals bekannt. Eine Abhilfe dafür bieten Parallel-Rechner, indem solche Rechner-Architekturen ein paralleles Abarbeiten von Befehlen aus dem Speicher ermöglichen.
7 Es existiert nur ein Verbindungsweg zwischen dem Prozessor und dem Speicherwerk. Es lässt sich somit immer nur ein Wort auf einmal über die Verbindungen transportieren.
Benutzung des von Neumann Rechners
Möchte nun ein Benutzer eines von Neumann Rechners (oder auch eines modernen PCs) eine Aufgabe10 lösen, muss er zuerst in einer Programmiersprache mit Hilfe eines Editors11 eine Abfolge von Befehlen programmieren12. Er muss auch festlegen, woher beispielsweise die Eingabewerte für die Berechnung von Ausgabewerten stammen sollen13.
Anwendersoftware wird von speziell ausgebildeten Programmierern erstellt. Es besteht eine klare Trennung zwischen den Programmierern und den Benutzern eines Rechners, respektive der Anwendersoftware. Dies nicht nur, weil die Benutzer in der Regel weder die Hardware noch das Programmieren verstehen, sondern auch aus Gründen der Sicherheit. Es wäre sonst zum Beispiel möglich, dass ein Benutzer einer Bank-Applikation im Programm, das er anschliessend selber nutzen soll, einen „Fehler“ einprogrammiert, der alle Rundungsdifferenzen aus Banktransaktionen seinem Konto gutschreibt!
Programme werden heute nicht unbedingt in der maschinennahen Programmiersprache Mnemonic geschrieben, sondern in höher entwickelten und somit einfacher zu bedienenden Sprachen wie C++, Pascal, Delphi und anderen. Diese Programme müssen zuerst in Maschinensprache umgewandelt werden. Dies geschieht mit einem sogenannten Compiler14. Diese wandeln die Programmanweisungen in Maschinensprache um. Für jeden Prozessor-Typ wird dabei ein charakteristischer Befehlssatz in binärer Form erzeugt15.
Damit man nicht immer alle Standardbefehlsfolgen, wie sie zum Beispiel für die Bildschirmausgabe (in Bild 3: writeln(’zaehler =’ ,zaehler);), das Einlesen der Mausklicks und Ähnliches vorkommen, selber programmieren muss, werden diese Programmteile einmal geschrieben und in Bibliotheken (libraries) zusammengefasst.
Sollen diese Bibliotheken genutzt werden, so müssen sie mit dem Programmcode gelinkt werden. Erst ein vollständig compiliertes und gelinktes Programm ist auf einer dafür bestimmten CPU lauffähig. Diese Programme werden nun über die Peripheriegeräte und das Eingabewerk in das Speicherwerk des Rechners geladen.
Das Steuerwerk bearbeitet die Befehle in einem bestimmten Takt (einer nach dem anderen) und übergibt sie wie oben beschrieben der Recheneinheit. Diese führt die Befehle aus und schreibt die Resultate wieder in den Speicher zurück.
Die Resultate werden gemäss den Anweisungen im Programm via das Ausgabewerk an die Peripheriegeräte zurückgeliefert und beispielsweise an einem Bildschirm dargestellt.