V 9 Computer Algorithmus Programm



Ähnliche Dokumente
Primzahlen und RSA-Verschlüsselung

Brückenkurs / Computer

Grundlagen der Theoretischen Informatik, SoSe 2008

1. Übung - Einführung/Rechnerarchitektur

Grundbegriffe der Informatik

1 Mathematische Grundlagen

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Informationsblatt Induktionsbeweis

Brückenkurs / Computer

Computeria Urdorf. Treff vom 16. Januar Was ist ein Computer?

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Theoretische Informatik SS 04 Übung 1

Die Geschichte des Computers

Zeichen bei Zahlen entschlüsseln

Einführung. Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Vorlesungen zur Komplexitätstheorie. K-Vollständigkeit (1/5)

Lineare Gleichungssysteme

Die Mikroprogrammebene eines Rechners

HISTORISCHES INFORMATIK-MUSEUM DER UNIVERSIDAD POLITECNICA DE MADRID

Motivation. Formale Grundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen. Informales Beispiel. Informales Beispiel.

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

Datenübernahme von HKO 5.9 zur. Advolux Kanzleisoftware

Übung Theoretische Grundlagen

Datensicherung. Beschreibung der Datensicherung

Mathematik: Mag. Schmid Wolfgang Arbeitsblatt 3 1. Semester ARBEITSBLATT 3 RECHNEN MIT GANZEN ZAHLEN

Facharbeit Informatik. Thema:

Mächtigkeit von WHILE-Programmen

Kann ein Computer denken?

50. Mathematik-Olympiade 2. Stufe (Regionalrunde) Klasse Lösung 10 Punkte

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

1 Informationelle Systeme begriffliche Abgrenzung

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

Professionelle Seminare im Bereich MS-Office

Guide DynDNS und Portforwarding

Inhalt. Allgemeine Einführung. Argumentationsvermögen. Räumliches Vorstellungsvermögen. Begabungen und Fähigkeiten messen

Lizenzierung von System Center 2012

Eigene Dokumente, Fotos, Bilder etc. sichern

Kapiteltests zum Leitprogramm Binäre Suchbäume

Eine Logikschaltung zur Addition zweier Zahlen

Erstellen einer digitalen Signatur für Adobe-Formulare

Nicht kopieren. Der neue Report von: Stefan Ploberger. 1. Ausgabe 2003

Handbuch B4000+ Preset Manager

Das große ElterngeldPlus 1x1. Alles über das ElterngeldPlus. Wer kann ElterngeldPlus beantragen? ElterngeldPlus verstehen ein paar einleitende Fakten

4 Aufzählungen und Listen erstellen

Projekt 2HEA 2005/06 Formelzettel Elektrotechnik

Daten verarbeiten. Binärzahlen

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

Theoretische Grundlagen der Informatik

Einführung in PHP. (mit Aufgaben)

Einführung in. Logische Schaltungen

Einführung in die Algebra

Zwischenablage (Bilder, Texte,...)

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

x 2 2x + = 3 + Es gibt genau ein x R mit ax + b = 0, denn es gilt

geben. Die Wahrscheinlichkeit von 100% ist hier demnach nur der Gehen wir einmal davon aus, dass die von uns angenommenen

OLXTeamOutlook 1.5 für Outlook 2003, 2002/XP, 2000 und 97/98

1 Vom Problem zum Programm

Binärdarstellung von Fliesskommazahlen

Installation und Inbetriebnahme von SolidWorks

3. Ziel der Vorlesung

7 Rechnen mit Polynomen

Kapitel 1: Einführung. Was ist Informatik? Begriff und Grundprobleme der Informatik. Abschnitt 1.1 in Küchlin/Weber: Einführung in die Informatik

Informatik und Informationstechnik (IT)

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Skript und Aufgabensammlung Terme und Gleichungen Mathefritz Verlag Jörg Christmann Nur zum Privaten Gebrauch! Alle Rechte vorbehalten!

Grundbegriffe der Informatik

Hochleistungsrechnen für Wissenschaft und Wirtschaft im internationalen Verbund

Elektromechanische Computer

3. GLIEDERUNG. Aufgabe:

Um zusammenfassende Berichte zu erstellen, gehen Sie folgendermaßen vor:

1 topologisches Sortieren

SANDBOXIE konfigurieren

Dokumentation von Ük Modul 302

Datenbanken Kapitel 2

ONLINE-AKADEMIE. "Diplomierter NLP Anwender für Schule und Unterricht" Ziele

2.5.2 Primärschlüssel

Zuschauer beim Berlin-Marathon

Das RSA-Verschlüsselungsverfahren 1 Christian Vollmer

Wichtig ist die Originalsatzung. Nur was in der Originalsatzung steht, gilt. Denn nur die Originalsatzung wurde vom Gericht geprüft.

Data Mining: Einige Grundlagen aus der Stochastik

PTV VISWALK TIPPS UND TRICKS PTV VISWALK TIPPS UND TRICKS: VERWENDUNG DICHTEBASIERTER TEILROUTEN

Folge 19 - Bäume Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

2 Die Terminaldienste Prüfungsanforderungen von Microsoft: Lernziele:

Modellbildungssysteme: Pädagogische und didaktische Ziele

Welche Unterschiede gibt es zwischen einem CAPAund einem Audiometrie- Test?

Konzepte der Informatik

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: )

Was Sie bald kennen und können

Urlaubsregel in David

10.1 Auflösung, Drucken und Scannen

Auszug aus der Auswertung der Befragung zur Ermittlung der IT-Basiskompetenz

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)

Nutzung von GiS BasePac 8 im Netzwerk

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

Gutes Leben was ist das?

FAQ Spielvorbereitung Startspieler: Wer ist Startspieler?

Tangentengleichung. Wie lautet die Geradengleichung für die Tangente, y T =? Antwort:

Beweisbar sichere Verschlüsselung

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

Transkript:

Vorlesung 9 Inhalt 1 Computer 1 1.1 Was ist ein Computer? 1 1.2 Analogrechner 2 1.3 Die Ausführungsvarianten moderner Computer 4 1.4 Die Leistungsfähigkeit (Performance) moderner Computer 6 2 Zur Geschichte des Computers 6 2.1 Die grundlegenden Eigenschaften eines Computers 7 2.2 Die Entwicklungen bis 1950 8 2.3 Entwicklung ab 1950 11 2.4 Der moderne Computer 13 3 Modelle des Computers 14 3.1 Turingmaschinen 14 3.2 Registermaschinen 16 3.3 Minimalmaschinen 18 4 Algorithmen 19 4.1 Der Begriff Algorithmus 19 4.2 Formulierung von Algorithmen 19 4.3 Der Euklidische Algorithmus 21 5 Programme 22 5.1 Die historische Entwicklung der Programmiersprachen 25 5.2 Programmiersprachenparadigmen 28 5.3 Compiler versus Interpreter 31 5.4 Virtuelle Maschinen 33

Vorlesung 9 V 9 Computer Algorithmus Programm Ziel dieser Vorlesung ist die Klärung von drei grundlegenden Begriffen: Computer, Algorithmus und Programm. Der geschichtliche Hintergrund wird kurz behandelt und die Begriffe versucht zu erläutern und zu diskutieren. Ausführliche historische Betrachtungen wurden in einen Anhang verbannt (und ist auch noch nicht vollständig). Für eine Grundlagenvorlesung ist er viel zu umfangreich geworden, aber für die eine oder andere LeserIn vielleicht interessant. 1 Computer Bisher gingen wir bei allen Betrachtungen davon aus, dass die den Programmen zugrunde liegenden Rechenmaschinen vorgegeben sind. Computer sind selbstverständlich geworden in der heutigen Welt aber was sind eigentlich Computer? In einem Satz sei dies nach heutigem Verständnis formuliert: Ein Computer ist eine (digitalelektronische) Maschine zur Speicherung und automatischen Verarbeitung von Daten, respektive Informationen (z.b. für mathematische Berechnungen oder allgemeiner Zeichenersetzungen) durch Angabe einer programmierbaren (flexiblen, veränderbaren) (Rechen-)vorschrift.. Dies ist vielleicht richtig, aber ist es auch vollständig? Informatikerinnen und Informatiker sollten es schon etwas genauer wissen: Wir wollen dies in diesem Kapitel näher untersuchen. 1.1 Was ist ein Computer? Zwar behauptete der bekannte Informatiker Edsger Dijkstra, In der Informatik geht es genauso wenig um Computer wie in der Astronomie um Teleskope.., aber, wenn wir nicht alle zu Zauberlehrlingen werden wollen, die Rituale anwenden, aber sie nicht beherrschen, dann müssen wir auch unser Hauptgerät verstehen: In allen Informatik-Curricula ist die technische Informatik (auch wenn sie heute in die Systeminformatik eingegliedert wird) essentieller Bestandteil: Elektronik, Rechnertechnologien, Digitale Schaltungen, Rechnerarchitekturen ( in Ihrem Studium mindestens durch die Module Hardware und das Hardwarepraktikum vertreten). Vieles, was in der Software (den Programmen) möglich und üblich ist, ist durch die benutze Hardware (die Rechnertechnik) bedingt. Ändert sich unsere Hardwarebasis, so ändern sich auch die Sprachelemente, um sie zu bedienen. Der Begriff Computer steht für Rechner oder Rechenanlage und lässt sich aus 1

dem lateinischen computare (zählen, rechnen) herleiten. Im modernen Deutsch wurde es aber eher aus dem Englischen computer abgeleitet, was eine meist unbekannte Vorgeschichte hat. Der englische Begriff computer, abgeleitet vom Verb to compute (rechnen), bezeichnete Menschen, die beginnend im späten Mittelalter für Astronomen die quälend langwierigen Berechnungen vornahmen. Zunächst wurden die Hilfskräfte, die dies von Hand ausführten oder einfache Rechenhilfen bedienten, als Computer bezeichnet, später wurde der Begriff Computer auch für diese Maschinen benutzt. Noch Ende der 40er und Anfang der 50er Jahren untersagte der damalige Geschäftsführer der IBM (International Business Machines) Thomas J. Watson (Senior) die Benutzung des Begriffs Computer für die IBM- Systeme. Man nannte die Maschinen dann Calculator. Der Hauptgrund soll gewesen sein, dass er bei den Bedienern der damals üblichen Rechenmaschinen, den Computern, keine Angst bezüglich ihres Ersatzes und Arbeitsplatzverlustes hat aufkommen lassen wollen. Zu Anfang war die Informationsverarbeitung mit Computern meist auf die Verarbeitung von Zahlen beschränkt (es waren flexible Rechenhilfen!) mit Ausnahme von Colossus, siehe unten. Mit zunehmender Leistungsfähigkeit eröffneten sich viele neue Einsatzbereiche, so dass Computer heute aus unserem modernen Leben nicht mehr wegzudenken sind. 1.2 Analogrechner Wir haben uns in unserer Definition eingeschränkt auf Digitalrechner, also solche Rechner, die mit diskreten endlichen Zahlenmengen oder Zeichenmengen arbeiten. Historisch gibt es eine andere Art: die Analogcomputer oder Analogrechner: Diese führen ihre Berechnungen auf der Basis kontinuierlicher Zustandsübergänge durch. Sie repräsentieren ihre Daten nicht als diskrete Werte (wie die Digitalcomputer), sondern als kontinuierliche eben analoge Größen, zum Beispiel in Form von geometrischen Längen oder Winkeln (mechanisch, z.b. Rechenschieber, Planimeter) oder elektrischen Spannungen oder Strömen. Abgesehen von den frühen Rechenhilfsmitteln wurden elektronische Analogrechner insbesondere in den 1930/40er (bis 60er)Jahren entwickelt, vor allem zur Lösung Gewöhnlicher Differentialgleichungen (das war mit Digitalrechnern zu der Zeit noch nicht realisierbar). Angewendet wurden diese Rechner zum Beispiel zur Simulation von Flugbahnen von Artilleriegeschossen und vor allem in der Regelungstechnik. Elementare Bausteine des Programmierens eines Analogrechners sind damit mathematische Operationen wie z. B. Integratoren, Summierer, Multiplizierer, Funktionssignalerzeuger (Sinus, Sprung, Impuls, etc.), Koeffizientenpotentiometer zur Eingabe von Parametern k (realisiert durch Spannungsteiler mit der Beziehung U a = k*u i ) mit denen insbesondere gewöhnliche Differenzialgleichungssysteme nachgebildet werden können. Die Ergebnisse stehen als physikalische Messwerte sofort (nach kurzem Stabilisieren) zur Verfügung und werden mittels Messgeräten, z. B. Voltmeter oder Oszillograph, angezeigt. In Abbildung 1a) ist ein solcher Aufbau gezeigt. Ein Beispielproblem, die Simulation eines Räuber-Beute-Systems, ist als Schaltung in Abbildung 1b) abgebildet. Die Messergebnisse, der zeitliche Verlauf der Signale, ist in Abbildung 1c) vorhanden. Näheres dazu ist in Anhang 1 beschrieben. 2

b) Grundsätzlich ist deshalb jeder Rechner einem Digitalcomputer vorzuziehen, der die für ein Problem notwendigen Operationen direkt mit Hilfe physikalischer Effekte umsetzen kann. Beispielsweise sind einfache Mustererkennungsoperationen ultraschnell in Hardware implementierbar, so dass sie anstelle digitaler Rechner bei der Analyse von Elementarteilchenprozessen im CERN verwendet werden. Solche spezialisierten Computer, bei denen die Prozessoreinheit direkt aus physikalischen Prozessen bestehen, werden auch heute noch in Spezialfällen gebaut und eingesetzt. Ein Stichwort dafür sind Molekulare Compua) c) Abbildung 1: a) Typischer Aufbau eines Analog-(Tisch!)computers um 1970, hier mit einem Telefunken RA 741. b) zeigt ein Programmierschaltbild, hier für das Volterra -Differentialgleichungssystem, das die Populationsdynamik einer Räuber Beute Beziehung beschreibt. Näheres siehe Anhang 1. c) zeigt das charakteristische Ergebnis dieses Systems als Ausgabe auf dem Oszilloskop: Die Populationskurven bilden also stabile periodische Wellen mit zeitlich versetzten Maxima. Auf das Maximum der Beutepopulation erfolgt das Maximum der Räuberpopulation. Zur Ableitung des Schaltbilds siehe Anhang 1. [Quelle: Bernd Ullmann, Workshop Analog Computing, 19.April 2006 (siehe http://www.vaxman.de )]. Ein entscheidendes Problem analoger Rechner ist ihre Rechengenauigkeit. Selbst heute haben Messgeräte einen maximalen Arbeitsbereich von 6 7 Zehnerpotenzen, mehr ist technisch nicht realisierbar. Damit könnte man zwar das Gewicht eines Lkws auf wenige Milligramm genau messen, aber das reicht bei vielen Problemen nicht aus, beispielsweise für den Umsatz eines Großunternehmens in Cent (z.b. 10 11 Cent) oder die Berechnung einer Flugbahn zum Mars. Hinzu kommt das grundsätzliche Problem der physikalischen Genauigkeit der Signale (Rauschen) aller elektronischen Geräte. Generell ist damit auch eine Zeichenverarbeitung, z.b. Textverarbeitung, sehr schwierig zu realisieren. Heute spielen Analogrechner deshalb quasi keine Rolle mehr. Ende der sechziger Jahre hat man zwar versucht, mit so genannten Hybridrechnern (Kombinationen aus Digital- und Analogrechnern) Probleme lösbar zu machen, die digitaltechnisch schwierig zu lösen sind. Warum? Beachten Sie: Die Lösung schon eines einfachen Differentialgleichungssystems auf einem Digitalrechner ist wesentlich aufwendiger als auf einem Analogrechner, da Integrieren und Differenzieren nicht zu den elementaren Operationen eines Digitalrechners gehören. Hier muss ein erheblicher Grad algorithmischen und numerischen Wissens herangezogen werden (siehe Numerische Mathematik) um solche elementaren mathematischen Operationen zu simulieren. 3

ter auf Molekülbasis oder auch DNA-Computer auf Basis der biologischen Mechanismen der DNA-Stränge und Replikation. Allerdings haben sie sich als Spezialmaschinen nicht gegen die allgemeinen Rechner durchgesetzt und blieben bisher auf ihre Spezialanwendungen beschränkt. Heute verstehen wir unter Computer eigentlich nur noch Digitalcomputer, also solche Rechner, die auf diskreter Basis, in aller Regel der binären Basis, arbeiten. 1.3 Die Ausführungsvarianten moderner Computer Computer sind heute extrem vielgestaltig, z.b. als PDA: Personal Digital Assistant ist ein handflächengroßer tragbarer Computer (Handcomputer; Palmtop); seit 1993 verfügbar der Erste unter der Bezeichnung Newton Message- Pad von der US-amerikanischen Firma Apple. Laptop (= "auf dem Schoß"), oder Notebook (notebook = Notizbuch) ist ein tragbarer Personal-Computer (persönlicher Rechner) in der Größe eines Buches. Speziell für den Einssatz im Internet ist eine nur mit kleinem Bildschirm und geringen Ressourcen ausgestattete (Sub-)Notebook-Version vorgesehen, das Netbook. Personalcomputer oder PC: übersetzt "persönlicher Rechner", ist ursprünglich der Handelsname einer Reihe von Computersystemen, die von Firma IBM hergestellt wurden (Einführung 1981) Der Begriff PC wird heute aber auch als Gattungsbezeichnung benutzt. Es handelt sich um einen Rechner, der nur einer einzelnen Person zur Verfügung steht und auf deren Bedürfnisse anpasst ist oder werden kann. Davor war der Rechnerzugang für Menschen nur über mehrere so genannte Terminals möglich, die an größere Rechner angeschlossen waren: mehrere Nutzer teilten sich einen Rechner (multi-user Betrieb / Teilnehmerbetrieb). Ein Arbeitsplatzrechner (Workstation, Desktop/Deskside Computer, Arbeitsplatzsystem), ist seit Ende der 70er Jahre gebräuchlich (XEROX Star, Apple Lisa, PERQ, SUN, SGI, etc.). Hierunter versteht man Einbenutzersysteme (wie ein PC) direkt am Arbeitsplatz des Benutzers im Unterschied zu den großen Rechnern, die nur in klimatisierten Räumen laufen. Wünschenswert für Einbenutzersysteme sind gute ergonomische Eigenschaften, u.a. geringe Geräusch- und Wärmeentwicklung, keine oder sehr geringe Strahlung und geringer Energieverbrauch der sehr leistungsfähigen Bildschirme (ggf. auch Lautsprecher) sowie Netzwerkfähigkeit. Zumindest zur Zeit der Einführung des PCs war dieser wesentlich weniger leistungsfähig als die konkurrierenden Workstations heute aber verwischen sich die Grenzen zunehmend: Eine Unterscheidung zwischen PC und Workstation ist kaum noch sinnvoll! Workstations sind heute Kernelemente einer modernen Client-Server -Infrastruktur. Ein Server ist ein Rechner, "auf dem ein Serverprogramm läuft", der für sogenannte Clients, z.b. auf Arbeitsplatzsystemen spezifische Dienstleistungen anbietet: Print-Server (Zugriff auf Drucker), Mailserver (E-Mail-Server), Datenbankserver; Webserver; Dateiserver, etc. Die Hardware, auf der ein oder mehrere Serverprogramme laufen, bezeichnet man manchmal als Host. Ein Mainframe (Großrechner, ggf. Host) ist ein großes und umfangreiches Computersystem, das weit über die Kapazitäten eines Personal Computers und oft sogar über die typischer Serversysteme hinausgeht, und wird meist im kommerziellen und kaufmännischen 4

Bereich eingesetzt (z.b. für Buchungssysteme, etc.). Im Gegensatz zu Supercomputern, die auf hohe Rechenleistung ausgelegt sind, ist ein Großrechner auf Zuverlässigkeit und hohen Datendurchsatz optimiert, um tausende parallel auszuführende Transaktionen (z.b. Geldüberweisungen) durchzuführen. Eine Datensicherung und die Konsistenz der Daten ist auf einem Mainframe leichter zu gewährleisten als in einem Netzwerk verteilter Daten. Deshalb werden Mainframes gern im Bankenbereich eingesetzt. Supercomputer sind Hochleistungsrechner, die zum Zeitpunkt ihrer Einführung im obersten realisierbaren Leistungsbereich operieren, siehe http://www.top500.org (Vierteljährlich wird die Liste der 500 schnellsten Supercomputer veröffentlicht).ein typisches Merkmal eines heutigen Supercomputers ist seine große Anzahl an Prozessoren (einige Hundert bis mehr als Hunderttausend), die oft auf einen sehr großen Hauptspeicher zugreifen. Zum Vergleich: Sämtliche Berechnungen aller Computer weltweit, im Zeitraum on 1960 bis 1970 (innerhalb 10 Jahre) könnte ein heutiger Supercomputer in etwa 30 Minuten durchführen. Spezialrechner (also Hardware) für spezielle Anwendungsprobleme waren früher z.b. gebräuchlich für die Bildverarbeitung, Computergraphik, Sichtsimulation, etc heute eher selten, da diese vergleichsweise teuer wären. Die Leistungsfähigkeit moderner Universalrechner reicht oft aus; ggf. werden stattdessen Cluster, also mehrere Universalrechner, benutzt. Ein besonderer Fall von Spezialrechnern sind Spielkonsolen. Sie haben meist eine normale Systemstruktur, verfügen aber über spezielle Grafikprozessoren und spezielle Hardware, um den Spielern einen schnellen Spielverlauf zu präsentieren oder spezielle Eingabegeräte zu ermöglichen. Dies gilt auch für PCs, die als Spielcomputer genutzt werden. Sie enthalten meist sehr anspruchsvolle Hardware (schneller, großer Speicher, Multi-Prozessorkerne, schnelle Festplatten, schnelle Grafikkarten), so dass sie inzwischen die Vorreiter der PC-Entwicklung repräsentieren. Treibendes Element dieser Entwicklung ist die Notwendigkeit, die reale Welt für Spiele möglichst gut und schnell zu simulieren. Von dieser Entwicklung profitieren natürlich auch andere Simulationen, etwa in der Medizin oder bei Industrieprozessen. Ein Embedded (eingebettetes) System ist ein (voll-)integriertes Computersystem, häufig nicht sichtbar, in einem Gesamtgerät oder -system: Handy, Waschmaschine, Auto, etc. 90 % der heute hergestellten Prozessoren arbeiten bereits in eingebetteten Systemen. Der Wertanteil der Computersysteme am Endprodukt nimmt beständig zu. Man erwartet, dass dieser bis 2010 folgende Anteile annimmt: Industrieautomation 22%, Telekommunikation 37% Consumer Electronics and Intelligent Homes 41% Medizintechnik 33% Automobile 30% (heute schon ca. 20%) in Oberklasseautos sind heute schon bis zu 160 Prozessoren. Die embedded systems sind ein Aspekt des sog. ubiquitous Computing. Die Ubiquitäre Computertechnik (kurz UbiComp); ubiquitous = allgegenwärtig) bezeichnet die Allgegenwärtigkeit der Informationsverarbeitung im Alltag von Unternehmen und Menschen überhaupt. Der Begriff wurde von Mark Weiser in seinem Aufsatz The Computer for the 21st Century geprägt. Grundidee ist dabei, dass Computer immer kleiner werden, dann direkt in den Gegenständen wie Teppiche oder Kleidung integriert verschwinden bzw. durch "intelligente Gegenstände" ersetzt und dabei überall gegenwärtig werden. 5

1.4 Die Leistungsfähigkeit (Performance) moderner Computer Computer bestehen aus verschiedenen Komponenten. Schnelle Speicher oder Prozessoren sind nur eine Vorraussetzung für einen schnellen Computer, reichen aber nicht aus. Entscheidend ist das gut aufeinander abgestimmte Zusammenspiel der Komponenten. Aus diesem Grund wurden gerade für den kommerziellen Einsatz Vergleichsmaßstäbe gesucht, um die Leistungsfähigkeit des Gesamtsystems beurteilen zu können. Früher wurde die Leistungsfähigkeit (Performanz, performance) gemessen in MIPS (Millionen Instruktionen pro Sekunde) und/oder MFLOPS (Millionen Floating Point Operationen pro Sekunde) = Gleitkommaoperationen Diese Maße haben aber sehr weinig Aussagekraft für die Gesamtleistung eines Systems, da Rechenoperationen nicht den Hauptteil von Programmen ausmachen. In den frühen 80er- Jahren wurde deshalb eine Messung durch sogenannte Benchmarks definiert. Sie sind fest vereinbarte Test-Programme, die jeweils einen typischer Mix von Anweisungen für eine Anwendungsart aufweisen. Bei jedem ist die Anzahl der Operationen dieser Mischung angegeben. Whetstone (dt. Wetzstein) wurde schon 1976 in den National Physical Laboratories in Großbritannien entwickelt. Er verwendet Fließkomma-Operationen, aber auch Integer- Arithmetik und Zugriffe auf Array-Elemente: [KWIPS oder MWIPS] entsprechend den damals vorherrschenden numerischen Berechnungen. Dhrystone (von Reinhold Weicker 1984 entwickelt) enthält nur Integer-Operationen (Ganze Zahlen). Sein Name ist ein Wortspiel auf den damals sehr populären Gleitkomma- Benchmark Whetstone. Heute wird meist SPEC verwendet (seit 1989): Es handelt sich um eine Serie von Anwendungen (z.b. neuronale Netze, finite Elemente, Videoenkodierung usw.), die in Integer-bezogene (SpecInt) und Floating-point-bezogene (SpecFp)-Programme eingeteilt werden. Entsprechend bilden das Endergebnis der Tests immer zwei Zahlen, die die Leistung bezogen auf eine Referenzmaschine (benchmark) angeben. Bei Spec2000 ist dies z.b. eine Sun UltraSparcIIi/256MB. 2 Zur Geschichte des Computers In vielen einführenden Büchern zur Informatik findet man hier mehr oder weniger geistreiche Ausführungen zur Geschichte. Oft beginnt man beim Abakus, beleuchtet kurz die Leibnitzschen Rechenmaschinen, kommt dann je nach Herkunft auf die Z1 und Z3 zu sprechen (Zuses Entwicklungen in Deutschland) oder auf die ENIAC (mit Mauchly und Eckert in den USA) oder auf die Analytical Engine (Babbage) oder gar Collossus und den Entwicklungen in England. Wir haben dies in einen Anhang verbannt hier können Sie, wenn Sie Lust haben durchaus interessante Details nachlesen. Um uns nicht mitten in den plumpen Streit über den Erfinder des modernen Computers hineinzubegeben (Wer baute den erste Computer?), müssen wir uns kritisch mit den kennzeichnenden Attributen eines Computers auseinandersetzen, denn etwa ab Mitte der 30er Jahre des 20. Jahrhunderts gab es diverse Entwicklungen, die wegbereitend waren. Wir kehren also zu unserer eingangs vorgestellten Definition zurück: 6

2.1 Die grundlegenden Eigenschaften eines Computers Ein Computer ist eine (digitalelektronische) Maschine zur Speicherung und automatischen Verarbeitung von Daten, respektive Informationen (z.b. für mathematische Berechnungen oder allgemeiner Zeichenersetzungen) durch Angabe einer programmierbaren (flexiblen veränderbaren) (Rechen-)vorschrift. Die hieraus abzuleitenden Eigenschaften sind: 1. (digital-elektronisch) 2. Speicherung von Daten 3. automatische Verarbeitung von Daten 4. programmierbare (flexibel veränderbare) Rechenvorschrift. Zu 1.: Mit dieser Eigenschaft rein mechanische oder elektromechanische (auf Relais basierende) Lösungen auszuschließen ist nach heutigem Stand zwar kennzeichnend, aber dieses als ausschließende Eigenschaft zu betrachten ist schon sehr willkürlich und steht deshalb in Klammern! Zu 2.: Tatsächlich war die zuverlässige Speicherung von Daten zumindest in größerem Umfang (z.b. 1000 zehnstellige Zahlen) anfangs ein erhebliches Problem, deren unvollkommene (weil unzuverlässige) Lösung einige frühe Ansätze (Z1, ABC) zum Scheitern brachten. Hier gab es also erhebliche technologische Probleme zu lösen. Aber auch die Repräsentation der Daten (anfangs nur Zahlen) war verschieden: Dezimal vs. Binär und Festkomma vs. Gleitkomma. Zu 3.: Was heißt automatisch? - Automatisch bedeutet selbsttätig ablaufend. Der Wortstamm ist aus zwei altgriechischen Stämmen zusammengesetzt und bedeutet etwa von selbst tun, sich selbst bewegend. (Wikipedia). Was soll der Computer selbst tun? Nach der Eingabe der Aufgabe (insbesondere der Eingabeparameter) soll das Ergebnis also ohne weitere menschliche Intervention ggf. schrittweise errechnet werden. Was braucht man dazu minimal? Eine Antwort hierauf liefert die Theorie: Alles was intuitiv berechenbar ist, kann mit einer Maschine schrittweise errechnet werden, welche die folgende Operationen ausführen und sich die Zwischenergebnis merken (speichern) kann: das Nullsetzen eines Wertes, das Inkrement bilden (um 1 erhöhen zählen) eines Wertes und eine datenabhängige Verzweigung:, z.b. der Form: Wenn ein (Zwischen-) Wert 0 ist, dann führe die Operationsfolge 1 aus, sonst die Operationsfolge 2. Eine solche Maschine nennt man Turing-vollständig (Turing-complete). Dies ist (erschreckend) wenig, aber auch wenig praktisch: die Anzahl der Schritte, selbst für einfache Aufgaben, wäre viel zu groß, die nötigen Operationsfolgen schwer zu finden und setzt auch einen theoretisch unendlich großen Speicher voraus, etc. Allerdings ist dies minimal, um alle (überhaupt) vom Menschen berechenbare Funktionen zu errechnen (Church-Turing-These). Zu 4.: Die Programmierbarkeit unterscheidet einen Computer von Rechenhilfsmitteln wie dem Abakus oder einer Rechenmaschine, die nur einige spezielle Rechenoperationen (entweder ein- 7

fache, wie Addition und Subtraktion, oder auch aufwendigere, wie die Division komplexer Zahlen) ausführen kann und ggf. darauf angewiesen ist, dass der Benutzer die benötigten Rechenschritte für eine kompliziertere Berechnung nacheinander veranlasst. Allerdings: Wie die Programmiermöglichkeit realisiert wurde ist prinzipiell unerheblich. Hier wurden durchaus verschiedene Varianten implementiert: durch Umlöten von elektrischen Verbindungen (z.b. noch 1957: Versandsystem für Quelle von Karl Steinbuch Preisänderung durch Lötkolben-Eingriff - 11 Jahre in Betrieb), durch Stecken von Schaltdrähten, durch Lochstreifen, durch Eingabe und Speicherung eines Programms (speicherprogrammierbare Rechenanlage, stored program computer). Ein im Computer gespeichertes Programm erlaubt prinzipiell, dass sich dieses Programm selbst modifiziert. Wenn man unterstellt, dass neben einer Verzweigung mindestens ein unbedingter Sprung realisiert ist, ergeben damit sich die Möglichkeit, bedingte Sprünge zu realisieren und auch das Programm im Speicher beliebig zu verschieben. Auf der Basis dieser knappen Diskussion und beim Betrachten der nachfolgenden Tabelle wird klar, dass es nicht möglich ist, den Erfinder des Computers zweifelsfrei auszumachen. Viele haben mit ihren Ideen und Entwicklungen zum heutigen Rechnerstand beigetragen. Das ist nicht selbstverständlich: Als klar wurde, dass die elektronischen Rechenmaschinen auch wirtschaftlich bedeutend wurden, war es unvermeidbar das Patentstreite entstanden, insbesondere in den USA von Eckert und Mauchly (vs. Atanasoff) betrieben und in Deutschland von Zuse. Auch wenn die Gerichte lange benötigten (bis fast 1970), so wurde (zum Glück!) kein Patent für die Erfindung des Computers vergeben. Je nachdem, welche Eigenschaften und Ideen man wie gewichtet: das Konzept oder die Realisierung die Technologie: Mechanik Relais Röhren (Transistoren) (oder gar integrierte Schaltkreise) die Programmierbarkeit und das Programmmedium die theoretische Turing-Vollständigkeit oder (praktische) Verfügbarkeit eines bedingten Sprungs oder weitere Kriterien, die von Zeit zu Zeit angeführt werden, wie Dezimal vs. Binär Repräsentationen, Festkomma vs. Gleitkomma Repräsentation, sequentielle oder parallele Arithmetik, usw. kommt man zu sehr verschiedenen Ergebnissen, was als erster Computer bezeichnet werden darf! Wer Lust hat, darf also weiter streiten! 2.2 Die Entwicklungen bis 1950 Nach Babbages wegweisender Entwicklung der Analytical Engine (die er allerdings nicht rea- 8

lisieren konnte) brauchte es einhundert Jahre, bis viele seiner Ideen neuentwickelt und umgesetzt wurden. Obwohl (die Mathematiker) Howard Aiken in Havard, Vannevar Bush. und Georg Stibitz an den Bell Laboratories seine Ideen kannten, war der direkte Einfluss vermutlich sehr beschränkt: Konrad Zuse kannte diese Ideen nach eigenem Bekunden nicht! Man muss auch feststellen, dass viele Entwicklungen im Zeitraum 1939 1945 ihre Finanzierung aufgrund der Kriegsereignisse und der Einstufung als kriegswichtig erlangten, so insbesondere Colossus in England (zur Dechiffrierung der deutschen ENIGMA-Codes), Havard Mark 1 (ASCC) zum Berechnen von Tabellenwerken von ballistischen Kurven für die Marine, ENIAC (ballistische Geschoßbahnberechnung /Tafelwerke für die Army). Auch Zuse hat dem deutschen Militär seine Entwicklungen mehrfach angeboten, aber ohne Erfolg. Diese militärische Einflussnahme setzte sich in der Geschichte fort: Der Koreakrieg beflügelte die US- Computerindustrie enorm und später die Entwicklungen für den kalten Krieg. Bei den ersten Entwicklungen gab es sowohl tischgrosse Systeme (Z1, Z3, ABC) als auch mechanische Ungetüme wie die Havard Mark 1 (Gewicht 35 Tonnen sowie eine Frontlänge von 16 Metern), und auch elektronische Ungetüme. Die komplette ENIAC Anlage war in U-Form aufgebaut und beanspruchte eine Fläche von 10m 17m bei 27 Tonnen Gewicht. Bis 1948 hatte keines der realisierten Rechensysteme alle geforderten Qualitäten erfüllt, die einen richtigen Computer ausmachen, siehe nachfolgende Tabelle. Name Analytical Engine nicht realisiert Hauptentwickler Charles Babbage Jahr der Rechen- Fertigstellung Technologie (1833-1842) Programmierbar? Turingvollständig Mechanik Lochstreifen Ja Z 1 Conrad Zuse 1938 Mechanik Lochstreifen Nein CNC 1 Complex Number Computer George Stibitz S.Williams Bell Labs 1940 Relais Nein Nein 1941 Nein Nein Harvard Mark I (ASCC) ENIAC Z 4 von Neumann Architektur Howard H. Aiken Havard Univ. IBM John Mauchley Presper Eckert U Pennsylvania Conrad Zuse Zuse AG 1944 Mechanik Lochstreifen Ja 1946 1944 1950 an ETH Atanasoff-Berry Computer (ABC) nicht voll John V. Atanasoff Clifford Berry funktionsfähig realisiert Iowa State Elektronenröhren Z 3 Konrad Zuse 1941 Relais Lochstreifen Ja Datenband M.H. Newman I.J. Elektronenröhren 1944 und Nein Bletchley Park Good Verkabelung Elektronenröhren Relais Verkabelung Lochstreifen John von Neumann 30.6.1945 Architekturkonzept Ja Ja (1950 bedingter Sprung ergänzt!) 9

Manchester Mark I Prototyp Baby SSEC EDVAC - Electronic Discreet Variable Computer EDSAC - Electronic Delay Storage Automatic Calculator UNIVAC I (1103) Universal Automatic Computer F. Williams U Manchester Ferranti Wallace Eckert IBM Eckert Mauchly von Neumann U Pennsylvania. Maurice Wilkes Alan Turing, U Cambridge UK) 1948 1948 Relais (1949) 1951 1949 Elektronenröhren Elektronenröhren Elektronenröhren 1951 Eckert Mauchly Elektronenröhren 1950 Prototyp ATLAS UNIVAC Whirlwind I MIT 1951 Elektronenröhren IBM 650 IBM 1953 Elektronenröhren stored program stored program stored program stored program stored program stored program stored program Ja Ja Ja Ja Ja Ja Ja Tabelle 1 Kerneigenschaften früher Rechensysteme der ersten Computer Ein entscheidender und bedenkenswerter Wendepunkt trat ein, als John von Neuman den First Draft of Report on the EDVAC vorlegte mit Datum vom 30.6.1945, der Geburtstag der von Neumann-Architektur und des stored program computers, siehe http://www.virtualtravelog.net/entries/2003-08-thefirstdraft.pdf. Er war zu der Zeit militärischer Consultant (Manhattan Projekt, Target Group) und Mitglied des Teams um Eckert und Mauchly (Moore School an der University of Pennsylvania). Dieses Team stand kurz vor der Inbetriebnahme der ENIAC. Viele Mitglieder des Teams hatten Urlaub genommen und von Neuman machte wohl nicht mehr und nicht weniger, als die Ideen und Diskussionen zusammen zu fassen, die wohl maßgeblich von Eckert und Mauchly geführt worden waren so zumindest eine Anekdote. Es war lediglich als internes Memo gedacht, das einen Zwischenstand dokumentierte, nicht als Veröffentlichung. Das dieses Papier dann sehr weit bekannt wurde und seinen grundlegenden Einfluss auf die weitere Computerentwicklung ausübte, lag wohl daran, dass es viel Streit gab im Team von Eckert und Mauchly gab und diese auch im Frühjahr 1946 ausschieden (Sie gründeten eine Firma.) Nachdem das Papier fast ein Jahr herum gelegen hatte (als handschriftliche Notiz), entschloss Herman Hine Goldstine, es auf Maschine abschreiben zu lassen, setzte von Neumann als alleinigen Autor darauf und verschickte am 25.6.46 mindestens 24 Kopien an Teammitglieder und viele Kollegen an Universitäten in den ganzen USA und auch nach England damit war es öffentlich und entwickelte seine bahnbrechende Wirkung! Dieses Papier war wohl den meisten Teilnehmers des Seminars an der Moore School der U Pennsylvania Theorie and Techniques of Electronic Digital Computers im Zeitraum 8.7. bis 31.8. 1946 bekannt. Quasi alle bedeutenden Computerentwickler waren vertreten: Stibitz (Bell Labs), Eckert und Mauchly (früher Moore School), Aiken (Havard), von Neuman, Goldstine (Princeton), D.R. Hartree (UK), usw. Dabei spielte von Neumann eine Nebenrolle, aber hielt zumindest auch einen Vortrag. Die notwendige Neuorientierung vieler an zuvor militärischen Projekten beteiligten hat diese erste Computer-Konferenz ermöglicht und sicher zur Verbreitung der von Neumann Architektur entscheidend beigetragen. Ab 1948 basierten eigentlich alle Rechner auf den Ideen und Konzepten, die von Neumann zusammengefasst hatte. Das Papier selbst enthält keine Architekturzeichnung. Auch wenn die Prinzipien meist einheitlich beschrieben werden, so findet man in der Literatur doch sehr verschiedene Varianten. Nachfolgendes Bild illustriert die Kernideen und ist direkt mit Textauszügen aus dem Originalpapier beschriftet. 10

R outside recording medium... a stack of punch-cards, a teletype tape, etc.: information can be produced directly by human action and sensed directly by human organs I input: organs to transfer numerical (or other) information from R to M O output: organs to transfer numerical information from M to R M conciderable memory for at least the four following phases a) intermediate (partial) results must be remembered b) the instructions which govern the complicated problems c) specific functions, usually in form of a table d)... h) diverse other data... tempting to treat the entire memory as one organ instructions CC proper sequencing of the machines operations... a general / central organ functions: (1) receive orders from M (2) interpret them (3) carry them out or stimulate other organs to carry them out A very high speed automatic digital computing system I CA J CA (numerical) data CA + x perform the elementary operations of aritmetic: +,, x, O CA C Abbildung 2: Die Original von Neumann-Architektur. Extrahiert aus dem Text First Draft of Report on the EDVAC mit Datum 30.6.1945. (DK) Die Kernideen der von Neumann Architektur sind: 1. Ein Computer besteht aus 5 Funktionseinheiten: Speicher, Steuerwerk oder Leitwerk, Rechenwerk, Eingabe, Ausgabe (Steuerwerk und Rechenwerk bilden den Prozessor) 2. Im Speicher sind sowohl die zu bearbeitenden Daten als auch das Programm abgelegt. 3. Ein Befehls-Ausführungszyklus besteht aus der Folge: Befehl aus dem Speicher holen FETCH Befehl im Steuerwerk interpretieren DECODE Operanden holen FETCH OPERANDS Befehl ausführen (von einer der Funktionseinheiten) EXECUTE (Erhöhen des Befehlszählers UPDATE INSTRUCTION POINTER Das Konzept des Befehlszählers ist in dem Konzept nicht explizit erwähnt, aber notwenig.) Natürlich gab es Weiterentwicklungen oder Alternativkonzepte wie z.b. die sogenannte Harvard Architektur (Aiken) mit der Trennung von Daten und Programm in zwei verschiedene Speicher, die den so genannten von Neumann Flaschenhals vermeidet, aber das stored program Prinzip wurde allgegenwärtig. 2.3 Entwicklung ab 1950 Waren bis etwa 1950 alle Rechner Laborprototypen ggf. mit wenigen Kopien, z.b. Collossus oder one-of-a-kind Systeme, so entwickelte sich um diese Zeit die Kommerzialisierung der Rechnerentwicklung (und dabei auch die zum Teil hoffnungslos übertriebenen Erwartungen wie Elektronengehirn ) und es etablierten sich ab 1950 verschiedene Computerhersteller mit speziellen Rechnern für wissenschaftliche Zwecke, andere für kaufmännische Anwendungen sowie wieder andere für Militärzwecke: 11

In USA mit Starthilfe von Howard Aiken der Computerhersteller IBM sowie Eckert und Mauchly UNIVAC In England F. Williams ( U Manchester) Ferranti In Deutschland Konrad Zuse Zuse KG (AG) Während Zuse seine Z22 (ab 1957) für ihn sehr erfolgreich ca. 50 Mal weltweit verkaufte, arbeitete IBM in dieser Zeit in schon ganz anderen Dimensionen. Allein das Modell 650 wurde weltweit 800 Mal verkauft. Wenn man um 1960 in den USA über den Computermarkt sprach, so sprach man von IBM und den sieben Zwergen gemeint waren UNIVAC 12 % Marktanteil, Burroughs 3 %, NCR 3 %, CDC, RCA, Honeywell, GE mit kleineren Anteilen: IBM beherrschte 70% des US Marktes (und auch des Weltmarktes). Diese absolute Dominanz blieb bis weit in die 70er Jahre erhalten, etwas eingeschränkt durch das Aufkommen so genannter Minicomputer (z.b. von Digital Equipment DEC) ab Ende der 60er Jahre. Wirklich ändern sollte sich die Situation aber erst in den 80er Jahren, mit dem Aufkommen integrierten Schaltungen und damit der PCs, Workstations und des Internets. Wollte man die Geschichte der Computer weitererzählen, so müsste man ab den siebziger Jahren verschiedene Entwicklungslinien verfolgen, jede mit ihren eigenen Wurzeln und spezifischen Entwicklungen für Arbeitsplatzrechner (Workstations) Personalcomputer (PCs) und Laptops Server Hosts und Mainframes. Homecomputer Spielkonsolen PDAs: Personal Digital Assistant Spezialrechner Embedded (eingebettetes) System Rechnernetze Rechnertechnologie Diese verschiedenen Linien zu verfolgen, würde eindeutig zu weit führen und tragen kaum noch was zu Verständnis des Begriffs Computer bei. Vielleicht noch einige Quantitäten zum Schluss: 2005 wurden weltweit ca. 300 Millionen PCs und Laptops verkauft. Das sind nur 10% der verkauften Prozessoren, die übrigen 90% stecken im Wesentlichen in Embedded Systems! Vielleicht noch ein weiterer Aspekt: die heute üblichen Begriffe Software und Hardware traten erst relativ spät in Erscheinung. In der heutigen Bedeutung wurde der Begriff erstmalig 1958 von John W. Tukey benutzt. Software bezeichnet alle nichtphysischen Funktionsbestandteile eines Computers bzw. eines jeden technischen Gegenstandes, der mindestens einen Prozessor (in embedded systems) enthält. Dies umfasst vor allem Computerprogramme sowie die zur Verwendung mit Computerprogrammen bestimmten Daten und auch die technischen Beschreibungen hierzu. Also alles das, was nach damaligem Kenntnisstand das relativ einfach zu Ändernde war. Hardware hingegen ist der Oberbegriff für die maschinentechnische Ausrüstung eines Computersystems. Dazu gehören alle Baugruppen (Prozessor, Arbeitsspeicher etc.) und Peripheriegeräte, insbesondere also der Computer selbst. 12

Diese Begriffsbildung ist möglicherweise die Lebenslüge der Informatik, denn schon bald stellte sich heraus, das die Software das eigentlich beständige werden sollte Hardware kommt und geht: Viele Softwareprogramme aus den 60er Jahren laufen bis heute mehr oder weniger unverändert die Hardware hat sich, z.b. Emulation (Nachbildung von Systemen) ggf. in der Zwischenzeit mehrfach angepasst. 2.4 Der moderne Computer Bis heute hat sich trotzt vielfältiger Kritik, Überlegungen und Variantenbildung die von Neumann Architektur erhalten. Fast alle Computer enthalten die von Neumann Architektur. In den heutigen Computern sind die ALU (Arithmetisch-Logische Unit) und die Steuereinheit meistens in einem Baustein verschmolzen, der so genannten CPU (Central Processing Unit, zentraler Prozessor). Der Speicher ist eine Anzahl von ganzzahlig durchnummerierte Zellen, die heute in der Regel 8 bit (0 oder 1) umfassen. Die Nummer einer Zelle nennt man Adresse. Ein Charakteristikum der Von Neumann-Architektur ist, dass der Inhalt einer Speicherzelle entweder (als Teil) eines Datums (also zum Beispiel der Buchstabe A ), oder auch als (Teil eines) Befehls für die CPU ( Addiere... ) betrachtet werden kann. Das Steuerwerk ist dafür zuständig, den aktuell auszuführenden Befehl oder eher die Speicherzelle, in der dieser steht, zu kennen. Diese Adresse wird in einem speziellen Register, dem Befehlszähler (program counter) gehalten. Das Steuerwerk liest einen Befehl aus dem Speicher, erkennt zum Beispiel 01101110, erkennt dies als Springe zu und holt den Operanden, in diesem Fall die Sprungadresse (ein bis acht Byte lang). Dann setzt sie den Befehlszähler auf eben diese Speicherzelle, um dort wiederum ihren nächsten Befehl auszulesen; der Sprung ist vollzogen. Wenn der Befehl zum Beispiel Addiere lauten würde, dann würde sie aus der in der Folge angegebenen Adresse den Inhalt auslesen, um ihn dann beispielsweise an die ALU als Operanden weiterzuleiten. Operanden können in heutigen Prozessoren sehr verschieden adressiert werden: direkt (die vollständige Adresse folgt direkt dem Begfehl) oder indirekt, z. B. über ein weiteres spezielles Register, dem Indexregister., als Einadress-, Zweiadress oder Dreiadressbefehl, usw. Hier gibt es sehr viele Varianten. Die ALU hat neben der Logik zur Ausführung der Operationen in der Regel mindestens ein Register, den so genannten Akkumulator, meistens aber einen Registersatz, die als Zwischenspeicher für Operanden dienen. Aktuell ist nach wie vor die Diskussion um die Prozessorarchitekturen RISC (reduced instruction set computer) oder CISC ( complex instruction set computer) aktuell. Historisch hatten sich immer mehr und mächtige Befehlsarten entwickelt, was zwar einen erheblichen Dekodierungsaufwand bedeutete, aber für einen Befehl nur wenig des teuren Speicherplatzes belegte. Mit dem Aufkommen billigen Halbleiterspeichers kam die Idee auf, bei viel Codespeicher mit möglichst wenigen, einfachen Befehlen auszukommen und durch den geringen Dekodierungsaufwand pro Befehl den Prozessortakt und dadurch die Geschwindigkeit erheblich erhöhen zu können. Worin unterscheiden sich RISC- und CISC-Prozessoren besonders? 13

Eigenschaften CISC RISC Anzahl der Register Wenige ( ca. 20) Viele (bis zu 200) Befehlssatz Ca. 300 Befehle und mehr als Nur rund 100 meist Registerorientierte 50 Befehlstypen Befehle Adressierungsarten Viele, z.b. 12 unterschiedlicher Nur 3 bis 5 Arten, alle gleich Befehlscodelänge lang Speicher /Caches Gemeinsame Caches, aber Getrennte Daten und Befehls- heute auch getrennte Caches (nach Harvard) Taktzyklen zur Ausführung 1 bis 20, durchschnittlich z.b. 1 bei den meisten Befehlen, eines Befehls (CPI) 4 im Schnitt 1,5 Befehlssteuerung Mikrocode, z.t. auch hartverdrahtet Meistens hartverdrahtet Beispielprozessoren Intel x86 und AMD Sun UltraSparc und PowerPC Tabelle 2 Übersicht: Eigenschaften von CISC- und RISC-Prozessoren Die Eigenschaften sind durch die unterschiedlichen Architekturen bedingt. In Abbildung 3 sind beide Architekturen gegenüber gestellt. Abbildung 3 : Aufbau eines CISC und eines RISC-Prozessors Hierzu werden Sie noch viele weitere Details in der Veranstaltung Hardware im 2. Semester hören. 3 Modelle des Computers Insbesondere für theoretische Untersuchungen lassen sich konkrete Rechnerarchitekturen, die sich ja auch ständig ändern, wenig gebrauchen. Modellbildung ist eine der zentralen Methoden der Informatik und zwingend findet dies in verschiedenen Formen auch für die Subjekte der Informatik selbst statt. Ziel der Modellbildung und die Art der Abstraktion können dabei sehr verschieden sein. Wir wollen zwei Modelle kurz betrachten. 3.1 Turingmaschinen Die Turingmaschine ist ein von dem britischen Mathematiker Alan Turing schon 1936 entwickeltes Modell, um eine Klasse von berechenbaren Funktionen zu bilden. Sie wurde speziell 14

zur Lösung des so genannten Entscheidungsproblems (nach Hilbert) in der Schrift "On Computable Numbers, with an Application to the Entscheidungsproblem" vorgestellt. Alan Turing beabsichtigte mit der Turingmaschine, ein Modell des mathematisch arbeitenden Menschen zu schaffen. In der Theorie der Berechenbarkeit spielt dieses Modell eine große Rolle, für Sie erst im 4. Semester. Abbildung 4: Funktionsschema einer Turing Maschine Die so genannte deterministische Turing Maschine arbeitet auf Zuständen und benutzt Einund Ausgabezeichen, die zu Alphabeten zusammengefasst werden können. Formal besteht sie aus einem 7-Tupel: M = ( Q, Σ, Γ, δ, q, ε, F ) Q ist die endliche Zustandsme nge Σ ist das endliche Eingabealp habet Γ ist δ : Q x Γ Q x Γx 0 ε Γ \ Σ 0 das endliche Bandalphab et q ist der Anfangszu stand { links, unveränder t, rechts } steht für das leere Feld F Q ist die Menge der Endzuständ e ist die Überführun gsfunktion Die Turingmaschine führt eine Berechnung aus, indem sie schrittweise eine Eingabe in eine Ausgabe umwandelt. Ein-, Ausgabe und Zwischenergebnisse werden auf dem ggf. unendlich langen Band gespeichert. Zu Beginn steht ein Wort als Eingabe auf dem Band (pro Bandfeld ein Zeichen des Eingabewortes), der Rest des Bandes ist mit dem leeren Feld formatiert. Der Schreib-/Lesekopf steht auf dem ersten Zeichen der Eingabe und die TM befindet sich im (Start-)Zustand q 0. Die Überführungsfunktion gibt an, wie die Turingmaschine schrittweise den Bandinhalt, ihren Zustand und die Position des Schreib-/Lesekopfes ändert. Diese Funktion nimmt als Argument den aktuellen Zustand und das Zeichen, was sich im aktuellen Schritt unter dem Schreib- /Lesekopf befindet. Als Ergebnis liefert sie dann genau einen Zustand (dieses wird dann der Nachfolgezustand der Turingmaschine), ein Zeichen (mit diesem Zeichen wird dann der Inhalt des Feldes, auf das der Schreib-/Lesekopf weist, überschrieben) und entweder das Symbol links (in diesem Fall bewegt sich der Schreib-/Lesekopf um ein Feld nach links), ein rechts (in diesem Fall bewegt er sich ein Feld nach rechts) oder ein unverändert (dann verharrt er auf dem selben Feld). Damit hat die Turing Maschine einen Schritt ihres Arbeitsablaufs durchlaufen und steht für einen weiteren bereit. Erreicht die Turingmaschine einen Endzustand, also einen Zustand der Menge F, ist die Berechnung beendet. Die Ausgabe ist dann der Inhalt des Bandes. Je nach Bandalphabet können Ein-/Ausgaben und Zwischenspeicherungen ggf. unterschiedlich kenntlich gemacht werden. 15

Das Besondere an einer Turingmaschine ist ihre konstruktive Einfachheit und die Tatsache, dass man mit einer Turing Maschine alle Probleme lösen kann, die von einem Computer überhaupt gelöst werden könnten. Turing bewies dies, bevor echte Computer realisiert waren und zeigte damit das Potential, aber auch die Grenzen des Berechenbaren auf. Die Church-Turing- These stellt schließlich die Behauptung auf, (beweisen lässt sich das nicht,) dass eine Turingmaschine alle überhaupt von Menschen berechenbaren mathematischen Funktionen lösen kann. Umgekehrt aber kann der Mensch Probleme formulieren, so z.b. das sog. Halteproblem, die nicht von Menschen (und folglich auch nicht von einer Turingmaschine) berechnet werden können. Im Kern bedeutet das Halteproblem, ob es möglich ist, bei jedem beliebigen Programm anzugeben, ob es irgendeinmal anhalten (zu Ende gehen) wird. Die wichtigste Fragestellung bezüglich des Halteproblems ist, ob es entscheidbar ist, also ob eine Turingmaschine existiert, die für jedes Paar aus kodierter Turingmaschine und Eingabe berechnen kann, ob die kodierte Maschine auf dieser Eingabe anhält. In der praktisch/angewandten Informatik lautet dieselbe Frage: Kann man ein Programm entwickeln, das als Eingabe den Quelltext eines zweiten Programms sowie dessen Eingabewerte erhält und entscheiden kann, ob das zweite Programm terminiert, d. h. nicht endlos weiterläuft? Alan Turing bewies 1936, dass es einerseits keine Turingmaschine gibt, die das Halteproblem für alle Eingaben löst. Zum anderen zeigte Turing, dass auch andere Herangehensweisen, die menschliches Denken formalisieren, nicht erfolgreicher sein können. So wurde von Turing historisch zuerst die Äquivalenz von Churchs Lambdakalkül zur Turingmaschine bewiesen. Es folgten darauf viele weitere vorgeschlagene Algorithmenbegriffe (Rechenmodelle), die alle in ihrer Berechnungsfähigkeit nicht mehr leisteten als die Turingmaschine. Man bezeichnet diese Berechnungsmöglichkeiten demzufolge als Turingvollständig. Dies ließ vermuten, dass es keinen mächtigeren Formalismus als den der Turingmaschine hinsichtlich der Berechenbarkeit gebe und der Mensch ebenfalls algorithmisch arbeitend auch nicht mehr Funktionen ausrechnen könne: die Church-Turing-These. Setzt man nun die Churchsche-Turing-These als wahr voraus, so können Maschinen und letztlich Menschen das Halteproblem (und viele andere Probleme) grundsätzlich nicht lösen. Das führt zu der philosophisch weitreichenden Aussage, dass nicht jedes Problem lösbar ist, selbst dann nicht, wenn man eigentlich alle relevanten Informationen kennt und sich streng an einen mächtigen Formalismus hält. Für die Softwareentwicklung bedeutet die Nichtentscheidbarkeit des Halteproblems, dass im Allgemeinen eine automatisierte Überprüfung jeder beliebigen Programmlogik nicht möglich ist (siehe auch Verifikation). Insbesondere bedeutet das, dass es nicht möglich ist, automatisiert festzustellen, welche Programme jemals zu einem Ende finden werden, d. h. anhalten werden. 3.2 Registermaschinen Eine Modellbildung, die vor allem in der Komplexitätstheorie (2. und 3. Semster) in der Theorie benutzt wird, sind sog. Registermaschinen. Das Modell geht auf eine Arbeit von John C. Shepherdson und Howard E. Sturgis aus dem Jahr 1963 zurück. Diese Modelle sind sehr ähnlich zu RISC-Prozessoren, nur noch ein wenig mehr vereinfacht. Die Registermaschine besteht aus einem Programm. Dieses enthält endlich viele durchnummerierte Befehle (beginnend mit Nummer 1), einen Befehlszähler b, einen Akkumulator c(0) und 16

einen unendlich großem Speicher aus durchnummerierten Speicherzellen (hier Register genannt) c(1), c(2), c(3),... Alle Register inklusive b und c(0) enthalten beliebig große, natürliche Zahlen. Zu Beginn enthält der Befehlszähler b den Wert 1, der Akkumulator den Wert 0. Die Speicherzellen ab Nummer 1 enthalten zu Beginn die endliche Eingabe das Programm und die Daten. Die restlichen Speicherzellen enthalten den Wert 0. Die Registermaschine führt nacheinander die Befehle des Programms aus. Es wird immer der Befehl mit der Nummer b ausgeführt. Wie man aus der Tabelle entnehmen kann, erhöhen fast alle Befehle den Befehlszähler um 1, so dass der nächste Befehl ausgeführt werden kann. Die Registermaschine endet, sobald sie den Befehl END ausführt. Das Ergebnis der Berechnung steht dann in (zuvor) definierten Registern. Das Programm kann aus folgenden Befehlen bestehen. Befehl Wirkung auf Register Wirkung auf b LOAD i c(0):=c(i) b:=b+1 CLOAD i c(0):=i b:=b+1 INDLOAD i c(0):=c(c(i)) b:=b+1 STORE i c(i):=c(0) b:=b+1 INDSTORE i c(c(i)):=c(0) b:=b+1 ADD i c(0):=c(0)+c(i) b:=b+1 CADD i c(0):=c(0)+i b:=b+1 INDADD i c(0):=c(0)+c(c(i)) b:=b+1 SUB i c(0): = max(c(0) c(i),0) b:=b+1 CSUB i c(0): = max(c(0) i,0) b:=b+1 INDSUB i c(0): = max(c(0) c(c(i)),0) b:=b+1 MUL i c(0):=c(0)*c(i) b:=b+1 CMUL i c(0):=c(0)*i b:=b+1 INDMUL i c(0):=c(0)*c(c(i)) b:=b+1 DIV i ( 0) : c(0) / c( i) c = b:=b+1 CDIV i ( 0) : c (0) / i ) c = b:=b+1 INDDIV i ( 0) : c (0) / c( c( i )) c = b:=b+1 GOTO i IF c(0) op l GOTO i b:=i b:=i falls Bedin- 17

op { <,, =,, > } gung c(0) op l wahr, b:=b+1 sonst. END b:=b Tabelle 3 Die Befehle der Registermaschine Wir erkennen unter den Befehlen die vier Grundrechenarten, jeweils in drei Varianten: (Ein-) adressbefehl, Direkt (Konstante) und indirekt adressiert. Hinzu kommen Lade und Speicherbefehle sowie Sprungbefehle und ein END. Wenn man so will, ist die Registermaschine eine extreme RISC-Variante, gerade so komfortabel, dass man viele Algorithmen noch bequem notieren kann, aber mathematisch noch so übersichtlich, dass man sie gut formal fassen kann. Eine Registermaschine kann alles das berechnen, was auch ein realer Rechner kann. Da man auch beweisen kann, dass sich die Registermaschine und die Turingmaschine gegenseitig (mit polynomieller Laufzeit) simulieren können, gelten Aussagen, die man für die Turingmaschine beweisen kann, auch für die Registermaschine und damit auch für reale Rechner. 3.3 Minimalmaschinen Sind all diese Befehle wirklich nötig? Eindeutig nein: Es geht sogar nur mit einem Befehl. Mit dem ultimativen RISC ist es möglich ist, einen Prozessor zu kreieren, der genau einen Befehl kennt und doch alle Aufgaben erledigen kann, die jeder andere Prozessor auch kann. Dabei wird angenommen, dass dem Computer ein unendlich großer Speicher zur Verfügung steht. Des Weiteren wird angenommen, dass die Konstante 1 fest in der Hardware vorhanden ist, woraus alle anderen Ganzzahlen konstruiert werden können. Der einzige Befehl, der gegeben wird, ist der folgende: STJ x,y,z steht dabei für "Substract, Test and Jump". Folgendes wird durch den Befehl ausgeführt: Substract: <x>:= <x> - <y>; if x<=0 then goto z else goto next instruction x, y und z sind Adressen des Speichers Wenn man unbedingt (unverzweigt) in der Befehlsfolge weitergehen will, benutzt man für z die relative Adressangabe ".+1". 18

4 Algorithmen In der Informatik haben wir es meist mit Programmen zu tun. Grundlage eines Programms ist aber ein sog. Algorithmus. Was verstehen wir darunter? 4.1 Der Begriff Algorithmus Unter einem Algorithmus versteht man allgemein eine genau definierte Handlungsvorschrift zur Lösung eines Problems oder einer bestimmten Art von Problemen. Im täglichen Leben lassen sich leicht Beispiele für Algorithmen finden: Zum Beispiel ist ein Koch- oder Backrezept ein Algorithmus zumindest dann, wenn alle Angaben genau genug sind und es ggf. für alle Teilaufgaben, wie Braten, Rühren, etc., ebenfalls (Teil-) Algorithmen gibt. Auch Reparatur- und Bedienungsanleitungen oder Hilfen zum Ausfüllen von Formularen sind prinzipiell Algorithmen. Das Wort Algorithmus ist eine Abwandlung oder Verballhornung des Namens von Muhammad ibn Musa al-chwarizmi (* ca. 783, ca. 850), dem Autor des Buchs Hisab al-dschabr wa-lmuqabala (825, Regeln zur Wiederherstellung und Reduktion), durch das die Algebra im Westen verbreitet wurde. Die lateinische Fassung beginnt mit Dixit Algoritmi... (Algoritmus sprach...), womit der Autor gemeint war. 4.2 Formulierung von Algorithmen Für Algorithmen gibt es unterschiedliche Repräsentationen, umgangsprachig, graphisch, als Pseudo-Programmiersprache und in einer Programmiersprache, als Maschinenprogramm einer Turingmaschine, usw. Diese reichen vom Algorithmus als abstraktes Gegenstück zum konkret auf eine Maschine zugeschnittenen Programm (d. h., die Abstraktion erfolgt hier im Weglassen der Details der realen Maschine, das Programm ist eine konkrete Form des Algorithmus, angepasst an die Notwendigkeiten und Möglichkeiten der realen Maschine) bis zur Ansicht, Algorithmen seien gerade die Maschinenprogramme von Turingmaschinen (wobei hier die Abstraktion in der Verwendung der Turingmaschine an sich erfolgt, d. h., in einem mathematischen Modell). Der erste für einen Computer gedachte Algorithmus wurde 1842 von Ada Lovelace in ihren Notizen zu Charles Babbages Analytical Engine festgehalten. Sie gilt deshalb als die erste Programmiererin. Die mangelnde mathematische Genauigkeit des Begriffs Algorithmus störte aber viele Mathematiker und Logiker des 19. und 20. Jahrhunderts. Insbesondere steht die natürliche Sprache mit ihren Unschärfen und Widersprüchlichkeiten der Forderung nach Eindeutigkeit und Widerspruchsfreiheit im Wege; man betrachte zum Beispiel nur einmal ein Kochrezept oder eine Bedienungsanleitung. Wir benötigen für den Computer eine erheblich höhere Präzision der Anweisungen als für den Menschen, der noch über semantisches Zusatzwissen verfügt. Insbesondere in der ersten Hälfte des 20. Jahrhunderts wurde eine ganze Reihe von Ansätzen entwickelt, um zu einer genauen Definition zu kommen. Formalisierungen des Berechenbarkeitsbegriffs sind die Turing-Maschine (Alan Turing), das Lambda-Kalkül (Alonzo Church), rekursive Funktionen und Chomsky-Grammatiken viele dieser Formalismen werden Sie in Ihrem Studium noch kennenlernen. 19