INFORMATIK ÜBUNGSBLATT 6 1. Der Rechner ist logisch und räumlich eichgeteilt in: * Rechnerwerk Rechneroperationen, logische Verknüpfungen * Speicher Speicherung von Programmen und Daten * Steuerwerk Steuert Programmablauf Interpretation von Instruktionen Steuerung der Ausführung * Ein- / Ausgabe Für E/A von Daten und Programmen 2. Speicherprogrammierung („Universalrechner“) * Struktur des Rechner unabhängig von der zu bearbeitenden Aufgabe * Bearbeitungsvorschrift (Programm) wird für jede Aufgabe eingegeben und im Speicher abgelegt 3. Gleichheit von Daten und Programmen * Ablage in einheitlichem Speicher (auch Programme sind Daten) 4. Adress-Speicherung * Jeder Speicherplatz erhält eine numerische Adresse * Daten sind über diese numerische Adresse abrufbar. 5. Sequentielle Programmspeicherung * Aufeinanderfolgende Programmbefehle (Einzelschritte der Bearbeitungsvorschrift) werden in aufeinanderfolgenden Speicherplätzen abgelegt * Holen des nächsten Befehls: Erhöhung der Adresse um 1 (bzw. um Befehlslänge) 6. Verfügbarkeit von Adress-Sprüngen * Sprungbefehle: Nach Befehl aus Adresse a kann Befehl aus Adresse b != a + 1 ausgeführt werden * „in a steht Sprungbefehl nach b“ 7. Verfügbarkeit bedingter Sprungbefehle * Nach Ausführung des Befehls aus Adresse a wird mit dem Befehl aus Adresse b != a + 1 fortgesetzt, falls Bedingung p erfüllt ist, sonst (falls p nicht erfüllt) mit Befehl aus a + 1 Zwischenergebnis determinieren, wie das Programm abläuft Abhängigkeit von zunächst unbekannte Größen 8. Verwendung des dualen Zahlensystems * Von Neumann-Rechner sind Digitalrechner auf Binärzahlbasis 27, 5, +, 3, *, 12, PUSH PUSH ADD PUSH MULT PUSH SUBT POP 27 5 3 5 27 3 27 + 5 12 (27+5)*3 12 84 Speichere 84 und entferne aus dem Stack! (27+5)*312 Eineradressbefehlsfolge: LOAD MULT STORE LOAD ADD STORE B 8 MULTIPLICATION A MULTIPLICATION R Zweieradressbefehlsfolge: MULT ADD STORE B, 8 A R Dreieradressbefehlsfolge: MULT ADD (STORE B, 8 (R,) A R) Faustregeln bei Speicherbausteine: je größer die Kapazität, desto größer die Zugriffszeit je schneller, desto teurer Wichtige Eigenschaften vieler Programme (Lokalitätsprinzip): viele zeitliche beieinander liegende Speicherzugriffe betreffen benachbarte Adressen schnelle und teure Speicher werden ergänzt durch langsamere Speicher höherer Kapazität: Register Cache Arbeitsspeicher Plattenspeicher Magnetbänder, Netzwerkspeicher,… - Sprungbefehl Die Ausführung des Sprungbefehls bewirkt eine Übertragung des Operanden (Sprungziel) in den Befehlszähler Damit wird im nächsten Zyklus das Programm an einer anderen Stelle fortgesetzt - Unterprogrammaufruf Ausführung des Befehls „Unterprogrammaufruf“ bewirkt: Übertragung aller Registerinhalte auf den Stack (Stackpointer wird erhöht) Übertragung des Operanden (= Startadresse Unterprogramm) in den Befehlszähler - Unterprogrammende (return) Rückübertragung vom Stack in die Register Damit enthält der Befehlszähler die Adresse des nächsten Befehls des aufrufenden Programms - Reset Bewirkt das Laden einer fix vorgegebenen Adresse in den Befehlszähler Zusätzliche Indirektion über Indexregister Adressteil enthält Angaben über Basisregister, Indexregister, Distanz Effektive Adresse = [Basisregister] + [Indexregister] + Distanz Vorteil: Programmgesteuerter Zugriff auf zusammenhängende Speicherbereiche (arrays, Felder): Beispiel: Summe von 100 benachbarten Speicherzellen: Distanz gibt Anfang des Bereichs an Schleife über einen Addierbefehl, wobei Indexregister von 0 bis 99 hochgezählt wird Probleme: überschneiden von zwei oder mehreren Arbeitsschritten – Deadlock