Eingabe- Eingabe- gerät information Ausgabegerät Ausgabeinformation Zentralspeicher Zentralprozessor Peripheriesteuerung Massenspeicher Adressbu s Datenbu Steuerbu s Zentral -einheit Abb. 2.1: Aufbau eines Von-Neumann-Rechners Merkmale eines Von-Neumann schen Universalrechners: Die Struktur des Rechners ist unabhängig vom Problem. Es handelt sich um einen Universalrechner, der durch Austausch eines Programms an die Problemstellung angepasst werden kann. (programmgesteuerter Universalrechner) Wesentliche Bestandteile eines Universalrechners sind: Zentralprozessor (CPU, die ihrerseits wiederum aus Rechenwerk und Steuerwerk besteht), Zentralspeicher (Hauptspeicher), Peripheriesteuerung und Bussystem. Der Zentralspeicher besteht aus Zellen fester Wortlänge (gleicher Größe). Jede Speicherzelle besitzt eine eindeutige Adresse. Alle Speicherzellen sind fortlaufend adressiert. Über die Adresse kann auf den Inhalt zugegriffen werden. Der Zentralspeicher enthält Programmcode und Daten. Der Inhalt einer Speicherzelle ist nicht selbstidentifizierend oder selbstbeschreibend. Alle Speicherworte sind als Befehle oder Daten brauchbar. Binärcodierung Sequenzielle Verarbeitung: Ein Programm besteht aus einer Folge von Befehlen, die i.allg. nacheinander ausgeführt werden. Die CPU übernimmt die Ablaufsteuerung. Sie dekodiert den Programmcode und unterscheidet zwischen Programmcode und Daten nach der Dekodierung eines Befehles anhand des Kontextes. Technisch wird dieses Problem durch das Zwei-Phasen-Konzept gelöst. (Fetch-Execute- Zyklus) Die fortlaufende Verarbeitung in der Reihenfolge der Speicherung der Befehle kann durch Sprünge unterbrochen werden. Dadurch ist jede Berechnung programmierbar (falls theoretisch berechenbar). Es besteht grundsätzlich keine Möglichkeit, die Daten vor unberechtigtem Zugriff zu schützen. Der Rechner kann selbstständig Programmdaten ändern. Die Verbindung zur Außenwelt erfolgt über die Peripheriesteuerung (I/O-Einheit). Extern eingebbare Programme und Daten können intern gespeichert werden. Arbeitsprinzip SISD (Single Instruction, Single Data): Je Befehl wird genau ein Datenwort bearbeitet. Anmerkung: Die fett gedruckten Merkmale unterscheiden den Von-Neumann schen Rechner von anderen Universalrechnern.
-d 1CB3:0000 EB 0F 90 47 75 74 65 6E-20 54 61 67 20 21 0D 0A...Guten Tag!.. 1CB3:0010 24 8C CB 8E DB BA 03 00-B4 09 CD 21 B0 00 B4 4C $...!...L 1CB3:0020 CD 21 FB E2 07 E4 01 1E-FB E2 80 3E FF E2 00 75.!...>...u 1CB3:0030 0D C7 87 07 E4 2A 2E 43-43 83 06 01 E3 02 C7 87...*.CC... 1CB3:0040 07 E4 2A 00 83 06 01 E3-01 5B C3 57 8B 3E FD E2..*...[.W.>.. 1CB3:0050 AC AA 0A C0 75 FA 5F C3-57 8B 3E FB E2 EB F1 53...u._.W.>...S 1CB3:0060 A1 01 E3 BB 0B E5 03 D8-80 7F FF 5C 74 04 C6 07...\t... 1CB3:0070 5C 43 89 1E FD E2 5B C3-56 57 51 52 55 8B 36 FB \C...[.VWQRU.6. Abb. 2.2: Speicherdump eines Maschinenprogrammes -u 1CB3:0000 EB0F JMP 0011 1CB3:0002 90 NOP 1CB3:0003 47 INC DI 1CB3:0004 7574 JNZ 007A 1CB3:0006 65 DB 65 1CB3:0007 6E DB 6E 1CB3:0008 205461 AND [SI+61],DL 1CB3:000B 67 DB 67 1CB3:000C 2021 AND [BX+DI],AH 1CB3:000E 0D0A24 OR AX,240A 1CB3:0011 8CCB MOV BX,CS 1CB3:0013 8EDB MOV DS,BX 1CB3:0015 BA0300 MOV DX,0003 1CB3:0018 B409 MOV AH,09 1CB3:001A CD21 INT 21 1CB3:001C B000 MOV AL,00 1CB3:001E B44C MOV AH,4C 1CB3:0020 CD21 INT 21 Abb. 2.3: Das disassemblierte (rückübersetzte) Speicherabbild PrgAnfang: jmp Ausgabe GRUSS db 'Guten Tag!', 13, 10, '$' Ausgabe: mov bx, cs mov ds, bx mov dx, OFFSET GRUSS mov ah, 9 int 21h mov al, 00 mov ah, 4ch int 21h Abb. 2.4: Und so sieht der Quelltext dieses Programmes aus
Datenprozessor Befehlsprozessor Multiplikations- Linkregister Akkumulator Decodier- und Steuerwerk Arithmetic Logical Unit Instruktion- Memory- Buffer- Memory- Adress- Program- Counter Adreßbus Datenbus Abb. 2.5: Aufbau einer Von-Neumann-CPU Einige wichtige gehören nicht zum Programmiermodell des Rechners. (MAR, MBR, IR) Das Zwei-Phasen-Konzept Fetch-Phase: MAR PC MBR [MAR] IR MBR decodiere IR falls kein Sprungbefehl dann stelle Operanden bereit PC PC + 1 sonst PC Sprungzieladresse Execution-Phase: Befehlsausführung Initialisierung der nächsten Fetch-Phase Von Neumannscher Flaschenhals Die Ausführungszeit eines Befehls (durch die ALU) beträgt im Allgemeinen nur noch einen Bruchteil der Zeit, die benötigt wird, um einen Speicherinhalt zu lesen und über den Bus zur CPU zu übertragen oder von der CPU über den Bus zum Speicher zu übertragen und zu schreiben.
Abb. 2.6. DRAM Adressdekodierung (Quelle: Wikipedia) Abb. 2.7. DRAM Timings: trcd, tcl Der Parameter trcd ( Row to Column Delay ) beschreibt die Zeit, die nach Aktivierung einer Wortleitung verstrichen sein muss, bevor ein Lesekommando gesendet werden darf. Der Parameter CL ( CAS Latency ) beschreibt die Zeit, die zwischen der Absendung eines Lesekommandos ( Read ) und dem Erhalt der Daten vergeht. (Quelle: Wikipedia)
Abb. 2.8. DRAM Timings tras, trc, trp Der Parameter t RAS ( RAS pulse width, Active Command Period, Bank Active Time ) beschreibt die Zeit, die nach der Aktivierung einer Zeile (bzw. einer Zeile in einer Bank) verstrichen sein muss, bevor ein Kommando zum Deaktivieren der Zeile ( Precharge, Schließen der Bank) gesendet werden darf. Der Parameter t RP ( Row Precharge Time ) beschreibt die Zeit, die nach einem Precharge-Kommando mindestens verstrichen sein muss, bevor ein erneutes Kommando zur Aktivierung einer Zeile in der gleichen Bank gesendet werden darf. Der Parameter t RC ( Row Cycle Time ) beschreibt die Zeitdauer, die zwischen zwei aufeinanderfolgenden Aktivierungen zweier beliebiger Zeilen in derselben Bank verstrichen sein muss. (Quelle: Wikipedia) Abb. 2.9. SDRAM Burst Read Die hohe Datenrate innerhalb eines Bursts erklärt sich dadurch, dass innerhalb eines Bursts nur noch lesend (oder schreibend) auf die Leseverstärker zugegriffen werden muss. (Quelle: Wikipedia)
Abb. 2.10. Was so alles geschieht, wenn man ein 'lumpiges' Byte abspeichern möchte... Quelle: c't 3/2000/263