Informatik II. - B - Vorlesung an der Universität Bonn im Sommersemester 2002. B Rechnerarchitektur und maschinennahe Programmierung



Ähnliche Dokumente
Programme werden durch den Ablauf eines oder mehrerer Prozesse (engl.: process, task) von einem Rechner abgearbeitet.

B.4. B.4 Betriebssysteme Prof. Dr. Rainer Manthey Informatik II 1

B.5 Prozessverwaltung B.5. Prozessverwaltung Prof. Dr. Rainer Manthey Informatik II 1

Teil VIII Von Neumann Rechner 1

Die Mikroprogrammebene eines Rechners

Softwarelösungen: Versuch 4

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

Kap 4. 4 Die Mikroprogrammebene eines Rechners

Monitore. Klicken bearbeiten

1. Übung - Einführung/Rechnerarchitektur

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz

Prozeß P1 Prozeß P2. Zur Synchronisation stehen den beiden Prozessen binäre Semaphore und die beiden Funktionen

5 Speicherverwaltung. bs-5.1 1

Mikroprozessor als universeller digitaler Baustein

2.2 Rechnerorganisation: Aufbau und Funktionsweise

Architektur Verteilter Systeme Teil 2: Prozesse und Threads

Technische Informatik 2 Adressierungsarten

Computer-Architektur Ein Überblick

TIMI: Technische Informatik für Medieninformatiker

Es kann maximal ein Prozess die Umladestelle benutzen.

OPERATIONEN AUF EINER DATENBANK

Dämon-Prozesse ( deamon )

Zahlensysteme: Oktal- und Hexadezimalsystem

Johann Wolfgang Goethe-Universität

Mikrocontroller Grundlagen. Markus Koch April 2011

Im Original veränderbare Word-Dateien

leave: mov flag, 0 ; 0 in flag speichern: Lock freigeben ret

Mikroprozessor bzw. CPU (Central Processing. - Steuerwerk (Control Unit) - Rechenwerk bzw. ALU (Arithmetic Logic Unit)

bereits in A,3 und A.4: Betrachtung von Addierschaltungen als Beispiele für Schaltnetze und Schaltwerke

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

J.5 Die Java Virtual Machine

Betriebssysteme. Dipl.-Ing.(FH) Volker Schepper

Bitte verwenden Sie nur dokumentenechtes Schreibmaterial!

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

4D Server v12 64-bit Version BETA VERSION

Prozessor HC680 fiktiv


Grundlagen der Informatik

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Übung 9 - Lösungsvorschlag

Instruktionssatz-Architektur

Zeichen bei Zahlen entschlüsseln

INFORMATIK Oberstufe. Funktionsweise eines Rechners

Einführung (0) Erster funktionsfähiger programmgesteuerter Rechenautomat Z3, fertiggestellt 1941 Bild: Nachbau im Deutschen Museum München

Einführung in die technische Informatik

Daten verarbeiten. Binärzahlen

1 Aufgaben zu Wie funktioniert ein Computer?

Dokumentation IBIS Monitor

Handbuch B4000+ Preset Manager

S/W mit PhotoLine. Inhaltsverzeichnis. PhotoLine

Rechner Architektur. Martin Gülck

Einführung in PHP. (mit Aufgaben)

icloud nicht neu, aber doch irgendwie anders

Binäre Gleitkommazahlen

Dateiname Name(n) und Matrikelnr. des/der Bearbeiter Tel.-Nr. und -Adresse für den Fall, dass die Diskette nicht lesbar ist.

Einrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me

Welche der folgenden Aussagen gelten? a) Im allgemeinen gilt: ein Deadlock tritt auf gdw. der Resource-Allocation Graph einen Zykel

2. Computer (Hardware) K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16

A.3. A.3 Spezielle Schaltnetze Prof. Dr. Rainer Manthey Informatik II 1

Rechnernutzung in der Physik. Betriebssysteme

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Objektorientierte Programmierung

Struktur der CPU (1) Die Adress- und Datenpfad der CPU: Befehl holen. Vorlesung Rechnerarchitektur und Rechnertechnik SS Memory Adress Register

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Wolfram Burgard

(Prof. Dr. J. Schlichter, WS 2011 / 2012) Übungsleitung: Dr. Wolfgang Wörndl (gbs-ws11@mailschlichter.informatik.tu-muenchen.de)

Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken

Übung: Verwendung von Java-Threads

Programmierkurs Java

schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv

VBA-Programmierung: Zusammenfassung

Computeria Solothurn

Lizenzierung von System Center 2012

2. Negative Dualzahlen darstellen

Grundlagen verteilter Systeme

Grundlagen der Rechnerarchitektur

Memeo Instant Backup Kurzleitfaden. Schritt 1: Richten Sie Ihr kostenloses Memeo-Konto ein

Schedulingalgorithmen Rechenzeitverteilung auf Betriebssystemebene. Andi Drebes Fachbereich Informatik Universität Hamburg

Grundlagen der Informatik (BSc) Übung Nr. 5

Systemsoftware (SYS) Fakultät für Informatik WS 2008/2009 Christian Baun. Übungsklausur

3 Rechnen und Schaltnetze

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage

Enterprise Computing Einführung in das Betriebssystem z/os. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth WS2012/13

Mikrocomputertechnik. Adressierungsarten

Besprechung des 3. Übungsblattes MIMA-Interpreter MIMA-Aufgabe: Primzahltest Weitere MIMA-Aufgaben online

CA Übung Christian kann heute nicht kommen => ich bin heute da, Christian das nächste Mal wieder

SharePoint Demonstration

Betriebssysteme. Dipl.-Ing.(FH) Volker Schepper

Übungen zu C++ Kapitel 1

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

ICS-Addin. Benutzerhandbuch. Version: 1.0

N Bit binäre Zahlen (signed)

Microcontroller Kurs Microcontroller Kurs/Johannes Fuchs 1

Übersicht. Nebenläufige Programmierung. Praxis und Semantik. Einleitung. Sequentielle und nebenläufige Programmierung. Warum ist. interessant?

Lösungsvorschlag zur 4. Übung

Buddy - Algorithmus Handbuch für Endnutzer Stand

4. Mikroprogrammierung (Firmware)

Betriebssystembau (BSB)

Transkript:

Titelfolie Rechnerarchitektur und maschinennahe Programmierung Informatik II - B - Vorlesung an der Universität Bonn im Sommersemester 2002 B Rechnerarchitektur und maschinennahe Programmierung Prof. Dr. Rainer Manthey 2002 Prof. Dr. Rainer Manthey Informatik II 1 2002 Prof. Dr. Rainer Manthey Informatik II 2 Inhaltsverzeichnis Inhaltsverzeichnis (2) Teil B: Rechnerarchitektur und maschinennahe Programmierung Serielle Rechnerarchitektur 5 B.2 RISC-Prozessoren und ihre Programmierung 41 B.3 CISC-Prozessoren und ihre Programmierung 53 B.7 Dateiverwaltung 149 B.8 Deadlocks 161 B.9 Compiler und Interpreter 177 0 Rechnernetze 193 216 B.4 Betriebssysteme 81 B.5 Prozessverwaltung 93 B.6 Speicherverwaltung 129 2002 Prof. Dr. Rainer Manthey Informatik II 3 2002 Prof. Dr. Rainer Manthey Informatik II 4

Serielle Rechnerarchitektur Übersicht in diesem einleitenden Abschnitt zunächst: Vorstellung der allgemeinen Prinzipien serieller Rechner, wie sie heute noch weitgehend üblich sind Dabei zunächst nur Betonung der prinzipiellen Grundlagen ohne Bezug auf einen bestimmten Rechnertyp (oder gar ein bestimmtes Fabrikat) Serielle Rechnerarchitektur Literatur: Oberschelp/Vossen, Kapitel 8 Input "Zustand" Next-State Logik Speicher- Output- Elemente Logik Output 2002 Prof. Dr. Rainer Manthey Informatik II 5 2002 Prof. Dr. Rainer Manthey Informatik II 6 John von Neumann in Princeton (vor 1950) John von Neumann John von Neumann (1903-1957) heute übliche Rechnerarchitektur geht zurück auf Ideen dieses Mannes "If people do not believe that mathematics is simple, it is only because they do not realize how complicated life is." geboren in Budapest mathematisches "Wunderkind" nach Studium in Budapest, Berlin und Zürich zunächst Professor für Mathematik in Berlin (bis 1930) 1930 Emigration in die USA (Princeton) diverse mathematische Erfolge (u.a. Begründung der Spieltheorie) im 2. Weltkrieg Beteiligung am Manhattan Project (Entwicklung der Atombombe) nach 1945: Konzentration auf frühe Computerentwicklung am Institute for Advanced Studies in Princeton 2002 Prof. Dr. Rainer Manthey Informatik II 7 2002 Prof. Dr. Rainer Manthey Informatik II 8

Struktur eines von Neumann-Rechners CPU-Aufbau Input/Output Unit (dt.: Ein-/Ausgabe-Einheit) CPU Datenprozessor Taktgeber (clock) Befehlsprozessor Central Processing Unit (dt.: Zentraleinheit) Hauptspeicher Datenbus Adressbus 2002 Prof. Dr. Rainer Manthey Informatik II 9 2002 Prof. Dr. Rainer Manthey Informatik II 10 Datenprozessor Befehlsprozessor Aufbau des Datenprozessors Aufbau des Befehlsprozessors Multiplikatorregister (MR) Akkumulator Befehlsregister (Instruction Register IR) Rechenwerk (ALU) Steuerwerk zum Befehlsprozessor Link Register Pufferregister (Memory Buffer Register MBR) vom Datenprozessor Befehlszähler (Program Counter PC ) Speicheradressregister (Memory Address Register MAR) zum/vom Datenbus 2002 Prof. Dr. Rainer Manthey Informatik II 11 zum Adressbus 2002 Prof. Dr. Rainer Manthey Informatik II 12

Arbeitsweise eines von Neumann-Rechners Arbeitsweise eines von Neumann-Rechners (II) von Neumann-Rechner sind serielle Rechner: Die CPU führt stets nur einen Befehl aus, der höchstens einen Datenwert bearbeitet. Single Instruction - Single Data (SISD) Speicherinhalte (binär kodiert) können wahlweise als Daten Befehle Adressen interpretiert werden. charakteristisch für das von Neumann-Konzept: Speicherung von Programmen im Rechner dazu erforderlich: Interpretieren von Bitfolgen als elementare Befehle des Prozessors Maschinencode (Maschinensprache) zwei wesentliche Phasen der Befehlsbearbeitung: Fetch-Execute-Zyklus 1) Hole (fetch) den nächsten Befehl aus dem Speicher und dekodiere (interpretiere) ihn! 2) Führe den Befehl aus (execute) und speichere das Ergebnis! Jede Phase besteht aus weiteren Teilschritten. Insbesondere die Execute- Phase wird manchmal noch unterteilt in Vorbereitung (Decode-Phase) und eigentliche Befehlsausführung: Fetch-Decode-Execute Pro Schritt wird ein Takt der Systemuhr benötigt. Taktrate i.a. angegeben in MHz (Megahertz) - heute schon über 100 MHz bei guten PCs. Die Anzahl Takte, die für alle Schritte des Fetch-Execute-Zyklus benötigt wird, bestimmt die Geschwindigkeit des jeweiligen Rechners: Zykluszeit Registerbreite (Wortlänge) bestimmt Größe des adressierbaren Speichers. 2002 Prof. Dr. Rainer Manthey Informatik II 13 2002 Prof. Dr. Rainer Manthey Informatik II 14 Motivierendes Beispiel Maschinenbefehle der Beispielmaschine Ganz entscheidender Schritt für Verständnis der Funktionsweise von Rechnern: "Übergang" von Hardware zu Software Wird im von Neumann-Rechner deutlich durch Interpretation bestimmter Speicherinhalte (also von Binärzahlen) als Befehle, die das Verhalten des Rechners bestimmen. im folgenden: motivierendes "Mini-Beispiel" auf hypothetischer "Mini- Maschine" mit 8-Bit-Wortlänge (für alle Register und Speicherzellen) Ziel dieser Beispieldiskussion: Prototypisch Verständnis für entscheidende "Idee" der von Neumann-Rechner wecken! offenbar: "Wirkliche" Rechner sind viel komplexer, folgen aber alle demselben Prinzip! ausführliche Diskussion solcher "realer" Prozessoren: Kapitel 9 und 10 im Buch von Oberschelp/Vossen 2002 Prof. Dr. Rainer Manthey Informatik II 15 Maschinenbefehle der Beispielmaschine sind in ihrer Grundform einfach binäre Ziffernfolgen der Länge 8, die in ein Speicherwort passen. Befehle setzen sich aus zwei Teilen zusammen: Die ersten 4 Bit kodieren den auszuführenden Befehl. Die weiteren 4 Bit stellen die Adresse des Operanden dar. ("Ein-Adress-Befehle") Die Maschine kennt nur drei Befehlsarten: Laden des Inhalts der angegebenen Zelle in den Akkumulator Addieren des Inhalts der angegebenen Zelle zum Akku-Inhalt Speichern des Akku-Inhalts in der angegebenen Zelle Neben der Binärkodierung (dem Op-Code) gibt es für jeden Befehl noch eine "lesbare" Form (den Mnemo-Code): LOAD 1 0 0 1 ADD 1 1 0 0 STORE 1 1 1 0 2002 Prof. Dr. Rainer Manthey Informatik II 16

Beispielprogramm Register der Beispielmaschine Beispiel für einen Befehl der Maschine: 1 0 0 1 1 0 1 0 Op-Code: LOAD Adresse: 10 10 in zwei separaten Blöcken des Speichers der Maschine stehen: Daten (unter Adressen 10 und 11) Befehle (unter 100-102) geladenes Beispielprogramm (im Mnemo-Code): LOAD 10 10 ADD 11 10 STORE 12 10 2 10 3 10 Speicher 00000010 00000011 10011010 11001011 11101100 Adressen (dezimal) 9 10 11 12 100 101 102 PC IR MAR MBR 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 100 10 Ausserdem besitzt der Beispielrechner noch die vier "von Neumann-Register" PC, IR, MAR und MBR. PC und MAR sind bereits mit der Adresse des 1. Befehls initialisiert. 00000010 00000011 10011010 11001011 11101100 9 10 11 12 100 101 102 2002 Prof. Dr. Rainer Manthey Informatik II 17 2002 Prof. Dr. Rainer Manthey Informatik II 18 Befehlszyklus im Detail 1. Zyklus: Fetch Der Befehlszyklus der Beispielmaschine sieht folgendermassen aus: Fetch MBR := MAR ; IR := MBR ; PC := PC + 1 ; Dekodiere IR! ; MAR := Adressteil von IR ; MBR := [MAR] ; PC IR MAR MBR 0 1 1 0 0 1 0 1 1 0 0 1 1 0 1 0 0 1 1 0 0 1 0 0 1 0 0 1 1 0 1 0 101 10 Adresse des 1. Befehls (binär kodiert) 00000010 00000011 9 10 11 12 Execute IF Op-Code-Teil von IR LOAD THEN A := MBR ; ELSE IF ADD THEN Bilde A + MBR! ELSE IF STORE THEN MBR := A ; [MAR] := MBR ; Laden des ersten Befehls ins MBR Übertragen dieses Befehls ins IR Inkrementieren des PC 10011010 11001011 11101100 100 101 102 [MAR]: Inhalt der Speicherzelle, deren Adresse in MAR steht 2002 Prof. Dr. Rainer Manthey Informatik II 19 2002 Prof. Dr. Rainer Manthey Informatik II 20

1. Zyklus: Execute-Dekodierphase 1. Zyklus: Execute PC 0 1 1 0 0 1 0 1 PC 0 1 1 0 0 1 0 1 IR MAR 1 0 0 1 1 0 1 0 0 0 0 0 1 0 1 0 00000010 00000011 9 10 11 12 IR MAR 1 0 0 1 1 0 1 0 0 0 0 0 1 0 1 0 00000010 00000011 9 10 11 12 MBR 1 0 0 1 1 0 1 0 MBR 0 0 0 0 0 0 1 0 1 0 0 1 1 0 1 0 LOAD 10 10 10011010 100 Akkumulator 0 0 0 0 0 0 1 0 10011010 100 Dekodieren des IR-Inhalts durch Steuerwerk Laden des Adressanteils von IR in MAR 11001011 11101100 101 102 Laden des Inhalts der Zelle mit Adresse MAR in MBR (Datenzugriff) Übertragen von MBR in den Akkumulator 11001011 11101100 101 102 2002 Prof. Dr. Rainer Manthey Informatik II 21 2002 Prof. Dr. Rainer Manthey Informatik II 22 1. Zyklus: Vorbereitung des nächsten Schritts 2. Zyklus: Fetch PC 0 1 1 0 0 1 0 1 101 10 PC 0 1 1 0 0 1 1 0 102 10 IR MAR 1 0 0 1 1 0 1 0 0 1 1 0 0 1 0 1 00000010 00000011 9 10 11 12 IR MAR 1 1 0 0 1 0 1 1 0 1 1 0 0 1 0 1 Adresse des 2. Befehls 00000010 00000011 9 10 11 12 MBR 0 0 0 0 0 0 1 0 MBR 1 1 0 0 1 0 1 1 10011010 100 10011010 100 Laden der Adresse des 2. Befehls von PC in MAR 11001011 11101100 101 102 Laden des 2. Befehls ins MBR Übertragen dieses Befehls ins IR Inkrementieren des PC 11001011 11101100 101 102 2002 Prof. Dr. Rainer Manthey Informatik II 23 2002 Prof. Dr. Rainer Manthey Informatik II 24

2. Zyklus: Dekodieren 2. Zyklus: Execute PC 0 1 1 0 0 1 0 1 PC IR MAR 0 1 1 0 0 1 1 0 1 1 0 0 1 0 1 1 0 0 0 0 1 0 1 1 00000010 00000011 9 10 11 12 IR MAR MBR 1 0 0 1 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 00000010 00000011 9 10 11 12 MBR 1 1 0 0 1 0 1 0 Akkumulator 0 0 0 0 0 0 1 1 1 1 0 0 1 0 1 1 ADD 11 10 10011010 100 0 0 0 0 0 0 1 0 10011010 100 Dekodieren des IR-Inhalts durch Steuerwerk Laden des Adressanteils von IR in MAR 11001011 11101100 101 102 Laden des Inhalts der Zelle mit Adresse MAR in MBR (Datenzugriff) Übertragen von MBR in den Akkumulator (vorher: alter Akku-Inhalt in Rechenwerk) 11001011 11101100 101 102 2002 Prof. Dr. Rainer Manthey Informatik II 25 2002 Prof. Dr. Rainer Manthey Informatik II 26 2. Zyklus: Execute (Forts.) 2. Zyklus: Execute (Forts.) PC 0 1 1 0 0 1 0 1 PC 0 1 1 0 0 1 0 1 IR 1 0 0 1 1 0 1 0 ADD [11 10 ] IR 1 0 0 1 1 0 1 0 MAR 0 0 0 0 1 0 1 0 9 MAR 0 0 0 0 1 0 1 0 9 MBR Akkumulator 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 00000010 00000011 10 11 12 MBR Akkumulator 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 1 00000010 00000011 10 11 12 In + 0 0 0 0 0 0 1 0 In + 0 0 0 0 0 0 1 0 Out 0 0 0 0 0 1 0 1 10011010 11001011 100 101 Out 0 0 0 0 0 1 0 1 10011010 11001011 100 101 11101100 102 11101100 102 Durchführen der Addition und Zwischenspeichern des Resultats im Rechenwerk Ergebnis in Akkumulator umspeichern 2002 Prof. Dr. Rainer Manthey Informatik II 27 2002 Prof. Dr. Rainer Manthey Informatik II 28

2. Zyklus: Vorbereitung des nächsten Schritts 3. Zyklus: Fetch PC 0 1 1 0 0 1 1 0 102 10 PC 0 1 1 0 0 1 1 1 103 10 IR MAR MBR 1 0 0 1 1 0 1 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 1 0 00000010 00000011 9 10 11 12 IR MAR MBR 1 1 1 0 1 1 0 0 0 1 1 0 0 1 1 0 1 1 1 0 1 1 0 0 Adresse des 3. Befehls 00000010 00000011 9 10 11 12 Laden der Adresse des 3. Befehls von PC in MAR 10011010 11001011 11101100 100 101 102 Laden des 3. Befehls ins MBR Übertragen dieses Befehls ins IR Inkrementieren des PC 10011010 11001011 11101100 100 101 102 2002 Prof. Dr. Rainer Manthey Informatik II 29 2002 Prof. Dr. Rainer Manthey Informatik II 30 3. Zyklus: Dekodieren 3. Zyklus: Execute PC 0 1 1 0 0 1 1 1 PC 0 1 1 0 0 1 1 1 IR MAR 1 1 1 0 1 1 0 0 0 0 0 0 1 1 0 0 00000010 00000011 9 10 11 12 IR MAR 1 1 1 0 1 1 0 0 0 0 0 0 1 1 0 0 00000010 00000011 00000101 9 10 11 12 MBR 1 1 1 0 1 1 0 0 MBR 0 0 0 0 0 1 0 1 1 1 0 0 1 1 0 0 STORE 12 10 10011010 11001011 11101100 100 101 102 Dekodieren des IR-Inhalts durch Steuerwerk Laden des Adressanteils von IR in MAR Akkumulator 0 0 0 0 0 1 0 1 Laden des Inhalts des Akkumulators in MBR Abspeichern des MBR-Inhalts in der Speicherzelle 12 10011010 11001011 11101100 100 101 102 2002 Prof. Dr. Rainer Manthey Informatik II 31 2002 Prof. Dr. Rainer Manthey Informatik II 32

Zustand bei Programmende Assemblersprachen PC IR MAR MBR 0 1 1 0 0 1 1 1 1 1 1 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 00000010 00000011 00000101 9 10 11 12 Unser Beispielprogramm wurde in zwei verschiedenen Darstellungsformen verwendet: Mnemo-Code + dezimale Adresse LOAD 10 10 ADD 11 10 STORE 12 10 Bezeichnungen für diese beiden Varianten: Assemblersprache binärer Op-Code + binäre Adresse 10011010 11001011 11101100 Maschinensprache (auch: Mikrobefehle) Programmende: Zelle 12 enthält Resultat der Addition PC zeigt auf nächste Zelle im Befehlsteil des Speichers 10011010 11001011 11101100? 100 101 102 Offenbar ist Assemblersprache für Menschen besser lesbar als Maschinensprache. Dafür ist letztere aber die einzige maschinenlesbare Form. "In principle, we could write microprograms in binary. Masochistic programmers might even enjoy that; certainly nobody else would." (A. Tanenbaum: "Structured Computer Organization") 2002 Prof. Dr. Rainer Manthey Informatik II 33 2002 Prof. Dr. Rainer Manthey Informatik II 34 Assembler CISC-Computer normalerweise: 1 Befehl in Assemblersprache 1 Mikrobefehl Spezielle "Übersetzungsprogramme" sorgen für Umsetzung von Assemblerbefehlen in Maschinenbefehle: Assembler (engl. "to assemble": zusammenstellen, -bauen) Aufgabe eines Assemblers im wesentlichen: Dekodieren des Mnemo-Codes und Umsetzen in Op-Code Binärverschlüsseln der Operanden Umrechnen von Adressen (u.u. etwas aufwändig) Anzahl und Leistungsfähigkeit der Maschinenbefehle wurden im Lauf der Zeit zum Unterscheidungskriterium für verschiedene Computertypen. speziell in 1970er Jahren: immer vielfältigere Maschinenbefehle (> 200 Befehlstypen! ) einzelne Assemblerbefehle decken immer mehr M.befehle ab Complex Instruction Set Computer (CISC) Ziel: Laufzeitgewinne durch spezialisierte Maschinenbefehle in vielen Rechnern: einzelne Assemblerbefehle werden umgesetzt in mehrere Mikrobefehle (Mikroprogramm) time program = instructions program cycles instruction time cycle Assemblerprogramme können i.a. auch Marken enthalten, die "Unterprogramme" markieren und zu denen gesprungen werden kann. "performance equation" weniger Code = kürzere Laufzeit hohe Taktrate wichtig! 2002 Prof. Dr. Rainer Manthey Informatik II 35 2002 Prof. Dr. Rainer Manthey Informatik II 36

RISC-Computer Ausblick seit Mitte der 1970er Jahre alternative Entwurfsstrategie: wenige und einfache Maschinenbefehle Funktionalität von Hardware zurück in Software verlagern! seitdem mehrere Generationen von Rechnern nach diesem Prinzip Reduced Instruction Set Computer (RISC) Ziel: möglichst kurze Bearbeitungszeit der einzelnen Maschinenbefehle (möglichst nur 1 Takt pro Befehl; 1 "Clock per Instruction" CPI) heute: Koexistenz beider Architekturprinzipien z.b.: CISC - Intel-Prozessoren (386, 486, Pentium) RISC - Sparc-Architektur von SUN oft schwierig, genaue Zuordnung zu CISC oder RISC zu treffen Folgekapitel bei Oberschelp/Vossen: exemplarische Vorstellung beider Konzepte Kapitel 9: RISC am Beispiel PowerPC Kapitel 10: CISC am Beispiel WE32100 time program = instructions program cycles instruction kürzere Zykluszeit = kürzere Laufzeit time cycle in der Vorlesung: vorwiegend Diskussion grundsätzlicher Aspekte der Rechnerarchitektur, kaum Details zu Beispielprozessoren O/V-Kapitel 9/10 weitgehend als ergänzende Lektüre zum Selbststudium und Material für Übungsbetrieb 2002 Prof. Dr. Rainer Manthey Informatik II 37 2002 Prof. Dr. Rainer Manthey Informatik II 38 2002 Prof. Dr. Rainer Manthey Informatik II 39 2002 Prof. Dr. Rainer Manthey Informatik II 40

RISC-Prozessoren "Load and Store" Assembler- und Maschinensprache des motivierenden Beispiels aus weist bereits wesentliches Merkmal eines RISC-Prozessors auf: "Load-and-Store"-Stil Operanden werden stets in Registern abgelegt, bevor sie verarbeitet werden. B.2 RISC-Prozessoren und ihre Programmierung Resultate werden ebenfalls in Registern zwischengespeichert, bevor sie weiterverarbeitet oder gespeichert werden können. Ziel: Vermeidung komplexer Adressierung von Speicherzellen, damit einheitliche und einfache Speicherverwaltung Stehen genügend Register in der CPU zur Verfügung, lassen sich zahlreiche Hauptspeicher(RAM)-Zugriffe vermeiden, weil viele Operanden bereits als Resultate früherer Schritte in Registern liegen. "Caching" 2002 Prof. Dr. Rainer Manthey Informatik II 41 2002 Prof. Dr. Rainer Manthey Informatik II 42 PowerPC PowerPC-Architektur im folgenden: genauere Vorstellung der Assembler-/Maschinensprache eines typischen RISC-Prozessors PowerPC-Mikroprozessor Ergebnis einer Zusammenarbeit der Firmen Apple, IBM und Motorola (derzeit Hauptalternative zu Prozessoren der Intel-Serie) POWER: Akronym für Performance Optimization With Enhanced RISC Power-PC ist ein 32-Bit-Rechner, d.h. Register haben Wortlänge 2 5. Für Gleitkommaoperationen werden auch 64-Bit-Register ("double") verwendet. Wenige Typen von Befehlen, aber viele Varianten pro Typ: ungewöhnlich grosses Befehlsspektrum für RISC-Rechner ("Reduced.. "?) Detailliertere Schilderung in Oberschelp/Vossen, Kapitel 9. Architektur der verschiedenen PowerPC-Varianten: Komponenten des von Neumann-Konzepts nur noch schwer zu erkennen viele spezialisierte Unterkomponenten und Register Details s. O/V, Kap. 9.1 FPU: Floating Point Unit IU: Integer Unit (3-fach parallel vorhanden) FPR: Floating Point Register GPR: General Purpose Register PowerPC 604 2002 Prof. Dr. Rainer Manthey Informatik II 43 Graphik: W. Oberschelp, G. Vossen 2002 Prof. Dr. Rainer Manthey Informatik II 44

PowerPC-Maschinensprache Integer-Befehlstypen Ziel der folgenden, detaillierteren Diskussion einiger Aspekte der PowerPC- Maschinensprache: Eindruck vom Variantenreichtum einer "realen" Maschinensprache Grundkenntnis der wichtigsten Klassen von RISC-Befehlen "Gefühl" für den Stil des Programmierens auf einer sehr maschinennahen Ebene zu vermitteln. Vier Klassen von Maschinen- bzw. Assemblerbefehlen beim PowerPC: Integer-Befehle Floating Point-Befehle Load/Store-Befehle Prozessor-Kontroll-Befehle Kein einheitlicher Aufbau dieser Befehle, sondern zwölf 32-Bit-Formate (I, B, SC, D, DS, X, XL, XFX, XFL, XO, A, M) vier 64-Bit-Formate (DS, XS, MD, MDS) Arithmetische Integer-Befehle: Übersicht über Befehlstypen (Mnemo-Codes) add (und verschiedenste Varianten: addc, adde, addi, addic,...) subf subtract from mull multiply low mulh multiply high divw divide word Logische Integer-Befehle: and, or, xor, nand, nor eqv equivalent exts extended sign cntlzw count leading zeros word rlwnm rotate left word then AND with mask sl shift left sr shift right u.v.a. 2002 Prof. Dr. Rainer Manthey Informatik II 45 2002 Prof. Dr. Rainer Manthey Informatik II 46 Additionsbefehl im Maschinenformat Additionsbefehl unter der Lupe exemplarisch: Grundform der Integer-Addition in Maschinensprache Links-rechts- Nummerierung! Resultat Operanden primärer Op-Code: 31 10 Integer-Befehl Format aus X-Kategorie sekundärer Op-Code: 266 10 Overflow-Bit und Record- Bit nicht gesetzt Bezeichner von drei Hauptspeicherregistern (3-Adress-Befehl) 0 1 1 1 1 1 1 0 0 1 0 0 0 1 1 1 1 1 1 0 1 0 1 0 0 0 0 1 0 1 0 0 Beispielbefehl in Assemblernotation: add r18, r7, r29 zugehöriger 32-Bit-Maschinenbefehl: 0 1 1 1 1 1 1 0 0 1 0 0 0 1 1 1 1 1 1 0 1 0 1 0 0 0 0 1 0 1 0 0 binär kodierte Registernummern 18, 7, 29 (von 32 Registern) Integer Exception Register nicht betroffen Feld 0 im Condition Register nicht betroffen 2002 Prof. Dr. Rainer Manthey Informatik II 47 2002 Prof. Dr. Rainer Manthey Informatik II 48

"Moral von der Geschicht' " Beispielprogramm zur Assemblerprogrammierung Absicht bei der Diskussion der letzten drei Folien: Beispiel: ggt-berechnung in PowerPC-Assemblercode (nach Euklidischem Algorithmus) prototypische Illustration der Komplexität und des Detailreichtums bei "real-existierenden" Maschinen- und Assemblersprachen Kontext: Assemblerprogramm eingebettet in C-Programm (asm: Aufruf des Assemblers) nicht beabsichtigt: "Lernen" (und Behalten, etwa für Klausur) von Sprachdetails des PowerPC r3 < r4? (cmp: compare, cr0: condition register 0) wenn nein: Springe zu label! (bge: branch greater equal) asm int ggt(int, int) { fralloc cmp cr0, 0, r3, r4 bge label mr r5, r3 mr r3, r4 mr r4, r5 label:... Assembler-Direktive: Sprünge sind zugelassen wenn ja: Vertausche r3 und r4! (mr: move register; 1. Operand: Zielregister) 2002 Prof. Dr. Rainer Manthey Informatik II 49 2002 Prof. Dr. Rainer Manthey Informatik II 50 ggt-beispiel (2) ggt-beispiel (3) Teste ob Rest 0 ist! Wiederhole solange bis Rest 0 wird! (bne: branch not equal) {... label: bl mod mr r5, r3 mr r3, r4 mr r4, r5 cmpi cr0, 0, r4, 0 bne label frfree blr mod:... Springe zu mod zur Modulo-Berechnung r3 := r3 mod r4 (bl: branch label) nach Rückkehr von mod: Vertausche r3 und r4! Sprungmodus wird wieder deaktiviert Rücksprung ins "Hauptprogramm" (blr: branch label return) Modulo-Berechnung: divide word multiply low word subtract from {... mod: divw r5, r3, r4 mullw r5, r5, r4 subf r3, r5, r3 blr r5 := Quotient r5 := Quotient Divisor r3 := Rest Rücksprung zum Ort, von wo gesprungen wurde 2002 Prof. Dr. Rainer Manthey Informatik II 51 2002 Prof. Dr. Rainer Manthey Informatik II 52

CISC-Prozessoren Übersicht in diesem Kapitel: analog zu B.2 genauere Vorstellung wichtiger CISC- Eigenschaften am Beispiel eines repräsentativen Prozessors WE 32100-Mikroprozessor B.3 CISC-Prozessoren und ihre Programmierung Besonderes Augenmerk auf prinzipielle Aspekte, die nicht nur für diesen Prozessortyp wichtig, sondern generell CISC-spezifisch sind: Adressierungsarten Mikroprogrammierung ausserdem: andere charakteristische Form von Maschinen- und Assemblesprache näher diskutiert Vergleich: RISC CISC wieder: Viele Details bleiben Selbststudium überlassen! (Oberschelp/Vossen: Kapitel 10) 2002 Prof. Dr. Rainer Manthey Informatik II 53 2002 Prof. Dr. Rainer Manthey Informatik II 54 AT&T WE32100 Execute-Unit des WE32000 als "klassisches" Beispiel eines CISC-Prozessors diskutiert: WE32100 der Firma AT & T Technologies Inc. Execute-Unit des WE32000: Ablaufsteuerung für arithmetisch-logische Operationen eigener "instruction cache" eigenes Adress-Rechenwerk Graphik: W. Oberschelp, G. Vossen 2002 Prof. Dr. Rainer Manthey Informatik II 55 Akkumulatoren Graphik: W. Oberschelp, G. Vossen 2002 Prof. Dr. Rainer Manthey Informatik II 56

Programmiermodell des WE32000 WE 32100- Datentypen WE32100-Programmierer können 16 Register nutzen (%r0 bis %r15): %r0 - %r8: Akkumulatoren %r9 - %r15: Spezialregister WE32100 bietet Operationen für vier verschiedene "Datentypen" von 1 Bit, 1, 2 und 4 Byte Länge: 31... 24 23... 16 15... 8 7... 0 PSW: Prozessorstatus-Wort enthält u.a. vier 1-Bit-Flags für arithm. Operationen: negative flag (N), zero flag (Z), overflow flag (V), carry flag (C) Wort Halbwort Byte Bit Graphik: W. Oberschelp, G. Vossen 2002 Prof. Dr. Rainer Manthey Informatik II 57 2002 Prof. Dr. Rainer Manthey Informatik II 58 WE32100: Assemblersprache WE32100: Assemblersprache (2) zwei Arten von Assemblerbefehlen: Assembler-Direktive: wird nicht in Maschinenbefehle übersetzt Befehlsname beginnt stets mit Punkt Prozessor-Instruktion: wird in Maschinenbefehl(e) übersetzt Struktur: [Marke] Mnemo-Code [Operanden][Kommentar] Assembler-Direktiven dienen vorwiegend zum Strukturieren von Assemblerprogrammen, z.b.:.text: Teil, der Prozessorinstruktionen enthält.globl: Deklaration extern sichtbarer Namen.data: Teil, der Daten enthält.byte,.half,.word: Deklaration von Datentypen.zero: Initialisierung mit 0 Kommentare beginnen mit #. Mnemo-Code für Instruktionen kodiert Operation, Operandentyp und Ergebnistyp Prozessor-Instruktionen lassen sich in 5 Klassen einteilen: Transferbefehle arithmetische und logische Befehle Vergleiche und Tests unbedingte und bedingte Sprünge Unterprogrammsprünge Transferbefehle: Transport von Daten, die sich in Registern oder Speicherzellen befinden oder die Operanden des Befehls selbst sind Unterschied zu "Load&Store" bei RISC! meist Varianten des "Move"-Befehls mit zwei Operanden MOV <ziel> <quelle> Varianten geben dabei Datentyp oder Seiteneffekte an, z.b.: MOVB "move byte" MOVW "move word" MCOM "move complemented" MOVA "move address" 2002 Prof. Dr. Rainer Manthey Informatik II 59 2002 Prof. Dr. Rainer Manthey Informatik II 60

WE32100: Assemblersprache (3) WE32100: Assemblersprache (4) arithmetische Befehle: Varianten von ADD, SUB, MUL, DIV, MOD, sowie INC/DEC (Inkrementieren/Dekrementieren) Variantenbildung wieder durch Typangabe und durch Angabe der Operandenzahl, z.b. ADDB2 "add byte", 2 Operanden ADDH3 "add halfword", 3 Operanden 2-Operanden-Variante: <ziel> := <ziel> + <operand> 3-Operanden-Variante: <ziel> := <operand1> + <operand2> Alle arithmetischen Befehle haben Seiteneffekte auf "flags" N, Z, C, V. logische Befehle: AND, OR, XOR; Shifts, z.b. LLSH (logical left shift); Rotation (ROT) in analogen Varianten Vergleichsbefehle: CMP ("compare") durch Subtraktion und Flagsetzen diverse Varianten von Sprungbefehlen: BR "branch" JMP "jump" BE "branch on equal" BNE "branch on not equal" BL, BGE... JMP: unbedingter Sprung; Operand = neuer PC-Inhalt BR (und Varianten): bedingter Sprung; PC := PC + Operand weitere Variantenbildung durch Angabe der max. Entfernung des Sprungziels von der aktuellen Position, z.b. BLH "branch less than halfword" Sprung max. 128 Bits vor oder zurück 2002 Prof. Dr. Rainer Manthey Informatik II 61 2002 Prof. Dr. Rainer Manthey Informatik II 62 Hexadezimale Darstellung von Bitfolgen Maschinenbefehle des WE32100 für die "lesbarere" Darstellung binärer Registerinhalte und für Darstellung von Maschinenbefehlen oft verwendet: Hexadezimalsystem Bei der Erzeugung von Maschinencode ignoriert der WE32100-Assembler Marken und Kommentare und repräsentiert nur Befehlscode und Operanden gemäss einem festen Format: Zahlsystem zur Basis 16 ("hexa": gr. 6): 0, 1, 2,..., 9, A, B, C, D, E, F entspricht dezimal: 10 1 1 12 13 14 15 hexadezimale Darstellung eines 16-Bit-Binärwortes im Beispiel: ( 0000 0001 0010 1101 ) 2 ( 301 ) 10 ( 12D ) 16 301 = 1 256 + 2 16 + 13 1 2002 Prof. Dr. Rainer Manthey Informatik II 63 Beispiel: Assemblerbefehl "MOVW %r0, %r1" Op-Code: (1000 0100) 2 = (84) 16 Adressmodus "Register": (0100) 2 1. Operand: (0100 0000) 2 = (40) 16 2. Operand: (0100 0001) 2 = (41) 16 (84 40 41 00...) 16 Graphik: W. Oberschelp, G. Vossen 2002 Prof. Dr. Rainer Manthey Informatik II 64

Beispiel: Summation von 10 Zahlen Adressierungsarten Adresse der ersten zu addierenden Zahl WE32100 verfügt über 18 verschiedene Adressierungsarten, die von fast allen Befehlsarten zur Angabe der Operandenadressen verwendet werden können. "clear word" wichtigste Techniken zur Angabe von Operanden: Register-Modus Immediate-Modus Register-Deferred-Modus Register: Angabe des Registernamens, in dem Operand steht, z.b. %r1 (direkte Adressierung) Immediate (engl. "immediate": unmittelbar): Operand wird direkt in der Instruktion angegeben (dezimal, oktal oder hexadezimal) z.b.: &0x7F (&: Operand, 0x: hexadezimal, 7F: Operandenwert) MOVW &0x7F, %r1: Register r1 geladen mit 00 00 00 7F (auch: absolute Adressierung) Graphik: W. Oberschelp, G. Vossen 2002 Prof. Dr. Rainer Manthey Informatik II 65 2002 Prof. Dr. Rainer Manthey Informatik II 66 Indirekte Adressierung Adressierung durch Basisregister und "Displacement" Register-Deferred: Adresse des Operanden befindet sich in Register, nicht Operand selbst, z.b. MOVW2 (%r0), %r1 (indirekte Adressierung) %r0 0000 0100 0000 0111... Operand = 1031 10... 1031 10 von vielen Rechnern verwendet: noch flexiblere Art der Adressierung Befehl enthält Adresse eines Registers, das seinerseits Speicheradresse enthält (wie bei indirekter Adressierung): Basisregister zusätzlich noch Konstante, die relative Verschiebung von der im Basisregister gespeicherten Adresse aus angibt: "Displacement" (engl. "displace": verschieben) andere Terminologie für diese Konzepte: Indexregister statt Basisregister Offset statt Displacement ermöglicht leichte Verschiebbarkeit von Programmen Realisierung eines sehr grossen Adressraumes ohne Verlängerung der Wortgrösse für absolute Adressen 2002 Prof. Dr. Rainer Manthey Informatik II 67 2002 Prof. Dr. Rainer Manthey Informatik II 68

Adressierung mit Displacement 1-, 2- und 3-Adressbefehle MOVW3 (%r0), 0100001010, %r1 Basisregister %r0 0000 0100 0000 0111... 1031 10 = 1031 10... Displacement + 266 10 0100001010 = 266 10 Operand... 1297 10 generell (nicht nur bei WE 32100): Unterscheidung verschiedener Adressierungsarten anhand der Anzahl explizit angegebener Adressen von Operanden: 3-Adressbefehle: Adressen von Operanden und Resultat R := A + B 2-Adressbefehle: Adresse des 1. Operand ist auch Zieladresse A := A + B 1-Adressbefehle: 1. Operand im/resultat in Akkumulator (AC) AC := AC + B manchmal auch 0-Adressbefehle, z.b. AC := Komplement(AC) "Reale" Maschinen implementieren unterschiedliche Adressierungsstile. Dabei oft Nutzung nicht benötigter Adressbits in Befehlswort für verlängerte Op-Codes oder Zusatzinformationen zur Befehlssteuerung. 2002 Prof. Dr. Rainer Manthey Informatik II 69 2002 Prof. Dr. Rainer Manthey Informatik II 70 Mikroprogrammierung Mikroprogrammierung: Beispiel zentrale Aufgaben von CISC-Prozessoren werden heute nahezu ausschliesslich durch Mikroprogrammierung realisiert: Entschlüsselung von Adressen, Befehlen und Operanden Steuerung der Befehlsausführung (ALU-Operationen, Datentransfer) Mikroprogramm: Folge elementarer Maschinenbefehle (Mikrobefehle), die gemeinsam eine Assembleranweisung realisieren Prinzip der Mikroprogrammierung vorgeschlagen 1951 von Maurice Wilkes, (geb. 1913, einer der ältesten noch lebenden Computerpioniere: http://www.xorl.org/people/mvw/) ADDW2 %r1, %r0 Annahmen: Jedes Register R besitzt zwei Steuerleitungen R-in und R-out zum Steuern von Ein- und Auslesen von Inhalten. R-in R-out zur Illustration: Diskussion des Mikroprogramms der WE32100 für Addition zweier 32-Bit-Zahlen im 2-Adress-Modus ALU (als zentrale Komponente des Rechenwerks) besitzt interne Register zur temporären Aufnahme von Operanden und Resultaten: R Mikroprogramme sind im ROM-Speicher des Rechners abgelegt ("Control Memory"). Alternative (etwa bei RISC-Rechnern): fest "verdrahteter" Mikrobefehl pro Assemblerinstruktion tempa tempb tempc 2002 Prof. Dr. Rainer Manthey Informatik II 71 2002 Prof. Dr. Rainer Manthey Informatik II 72

Mikroprogrammierung: Bsp. (2) Mikroprogrammierung: Bsp. (3) erforderliche Einzelaktionen (Steuersignale): ADDW2 %r1, %r0 Assemblerinstruktion pro Schritt ein Befehlszyklus "logische" Fetch-Phase: "logische" Execute-Phase: ADDW2 %r1, %r0 Aufteilung der Einzelaktionen in Schritte: fetch "Read Completed Signal" execute Inkrementieren von PC Graphik: W. Oberschelp, G. Vossen 2002 Prof. Dr. Rainer Manthey Informatik II 73 Graphik: W. Oberschelp, G. Vossen 2002 Prof. Dr. Rainer Manthey Informatik II 74 Prinzip der Mikroprogrammierung Mikroprogrammierung: Bsp. (4) im Steuerwerk im ROM PLA zur Dekodierung von Befehlen Mikroprogramm zu den 17 Aktionen: jeweils in 8 Bit kodiert Maschinenzyklen "Ablauflogik" (Befehlsfolgematrix) Steuersignale eigentlicher Mikrobefehlsspeicher Graphik: W. Oberschelp, G. Vossen 2002 Prof. Dr. Rainer Manthey Informatik II 75 Graphik: W. Oberschelp, G. Vossen 2002 Prof. Dr. Rainer Manthey Informatik II 76

Mikroprogrammierung: Diskussion Kenndaten der Motorola MC 68000-Familie (Auswahl) Vorteile der Mikroprogrammierung (im Vergleich zu "fester Verdrahtung" jedes einzelnen Befehls): Wenige Mikrobefehle realisieren viele Assemblerbefehle. ROM für Mikroprogramme ist kostengünstig. Control Memory ist leicht austauschbar. kürzere Entwicklungszeit, leichtere Wartung Nachteil: Mikroprogrammierte Operationen sind meist langsamer als "direkt verdrahtete" aufgrund langsamer ROM-Zugriffe. abschliessend Übersicht über "Kenndaten" (Wort- und Speichergrössen, Zykluszeiten) einiger bekannter CISC-Rechnerfamilien von Motorola, DEC und IBM (Details zu diesen Rechnern s. O/V Kapitel 10.3) Motorola-Prozessoren: heute üblich: Unterscheidung zwischen zwei Varianten mikroprogrammierte Rechner: alle Mikrobefehle in einem ROM ("Firmware") Änderung nur durch Austauschen mikroprogrammierbare Rechner: besitzen Writable Control Store (WCS) realisiert durch PROM oder EPROM dadurch Verhalten des Rechners veränderbar u.a. Simulation verschiedener Rechner ("Emulation") 2002 Prof. Dr. Rainer Manthey Informatik II 77 Graphik: W. Oberschelp, G. Vossen 2002 Prof. Dr. Rainer Manthey Informatik II 78 Kenndaten der DEC VAX-11-Familie Kenndaten von IBM-Rechnern mit 370-Architektur (Auswahl) Graphik: W. Oberschelp, G. Vossen 2002 Prof. Dr. Rainer Manthey Informatik II 79 Graphik: W. Oberschelp, G. Vossen 2002 Prof. Dr. Rainer Manthey Informatik II 80