40
Nächste Aufgabe: Vergleich von 2 Zahlen Ausgabe 0, wenn gleich 1 wenn kleiner 2 wenn größer

Nächste Aufgabe: Vergleich von 2 Zahlen Ausgabe 0, wenn ...xmatter/VElek-IF-SS19/elek_ss19_9web.pdf · Akkumulator Register X ALU Dekoder Adressbus C Rechenwerk Befehl Argument(e)

  • Upload
    hakhanh

  • View
    213

  • Download
    0

Embed Size (px)

Citation preview

Nächste Aufgabe:

Vergleich von 2 Zahlen

Ausgabe 0, wenn gleich

1 wenn kleiner

2 wenn größer

Lösung: Verzweigung

„Goethe 4“

LDA, LDX

Vergleiche (CPX)

LDA #$0

STA $2

Gleich?Ja

LDA #$1

STA $2

Größer?

Ja

Nein

LDA #$2

STA $2

Nein

CPX mit ALU

C=1 wenn A>X

Z=1 wenn A=X

(neues Flag)Wie funktioniert

eine

Verzweigung?

Akkumulator Register X

ALU

Dekoder

Adressbus

C

Rechenwerk

Befehl Argument(e)

Ablaufsteuerung

(Zustandsautomat)

PC

Steuerwerk Speicher

Befehle,

Argumente,

Daten

Datenbus

Toy-Model-Prozessor „Goethe4“

Z

Maschinencode

start:

LDA $0

LDX $1

CPX

BEQ gleich

BCS groesser

LDA #$2

JMP ende

gleich:

LDA #$0

JMP ende

groesser:

LDA #$1

ende:

STA $2

● Neue Befehle:▪ JMP $adresse

• Überschreibt PC mit adresse

▪ BEQ $adresse• „branch if equal“

• Überschreibt PC nur wenn Z=1

▪ BCS $adresse• „branch if carry set“

• Überschreibt PC nur wenn C=1

● Effekt: Nächster Takt lädt Befehl von neuer Adresse

● Speicher linear: Blöcke liegen hintereinander

● Markierung mit „Labels“▪ den Rest legt der Assembler

zurecht

Assembler benötigt die

Info, dass "start:"=$3

Was passiert am

Ende des Programms?

Möchte neu starten!

Code-Recycling

● Können Code mehrmals ablaufen lassen (mit JMP start)

● Aufgabe: Neustart durch Betätigung einer anderen Taste:

ende:

LDX $1

loop:

LDA $1

CPX

BEQ loop

JMP start

Schleife bis

Taste 2 sich

geändert hat

Verbraucht

„sinnlose“

Rechenzeit

Andere

Vorschläge?

Interrupt

● Führen für jede Taste noch ein spezielles IRQ-Register ein

● Memory Map:

0 Inhalt Taste 1

1 Inhalt Taste 2

2 Ausgabe

3 IRQ1-Zeiger

4 IRQ2-Zeiger

● IRQ=Interrupt Request

● IRQ1: Adresse für Taste 1

● IRQ2: Adresse für Taste 2

● Funktion:

▪ Nachdem IRQ ausgelöst wird (Taste gedrückt), soll PC auf die neue Adresse zeigen

IRQ-Anwendung

● Neuer Vorschlag

ende:

STA $2

LDA #irq_taste

STA IRQ2

loop:

„irgendein code“

JMP loop

irq_taste:

JMP start

● Ist nicht sinnvoll, da:

▪ „irgendein code“ vielleicht was sinnvolles gemacht hat

● Alternativ:

▪ Mache Berechnung in Interrupt

▪ Rückkehr an alte Stelle nach Beendigung des IRQ

▪ Zwischenspeicherung des PC

● Neuer Befehl: RTI (Return from Interrupt)

▪ Holt alten PC wieder zurück

Stack

● Bsp: Taste1-IRQ

● Während IRQ-Ablauf Taste2-IRQ

● Wohin PC speichern?

● Lösung: Stack

● IRQ1 legt PC auf Stack ab

● IRQ2 legt PC auf Stack ab

● RTI (von IRQ2) holt alten PC ab

● RTI (von IRQ1) holt alten PC ab

IRQ1-PC-Stand

IRQ2-PC-Stand

● Konzept auch für Unterprogramme

▪ JSR (=Jump Subroutine)

▪ RTS (=Return from SR)

Erlaubt

modulares programmieren!

IRQ-Service-Routine

● IRQ-Service-Routine überschreibt Akku

● Im IRQ muss noch mehr gemacht werden:

● Register retten

● Prolog

▪ PUSH rettet Akku auf Stack

● Epilog

▪ PULL holt Akku wieder zurück

start:

LDA #irq_taste

STA IRQ1

loop:

„irgendein code“

JMP loop

irq_taste:

LDA $0

STA $30

RTI

irq_taste:

PUSH

LDA $0

STA $30

PULL

RTI

Weitere Feinheiten

● IRQ-Maskierung mit Register

▪ Zum Ein- und Ausschalten

● Mehr Register

▪ Z.B. Y-Register

● Direkte Transfers

▪ TAY

▪ Kopiere Akku nach Y

● Weitere Adressierungen:

▪ Absolut, X

• LDA $40,X

• Lade von Speicherstelle $40+X

▪ Indirekt

• LDA ($40)

• Lade aus Speicherstelle die in $40,$41 definiert ist

• Pointer-Arithmetik

▪ Indirekt,X

• LDA ($40,X)

• LDA ($40),Y

Zusammenfassung Toy-Model

● 1. Fetch

● Befehl wird aus Speicher geholt

● 2. Decode

● Befehl wird dekodiert und Anzahl der Argument bestimmt

● 3. Argumente holen

● 4. Operation ausführen

● 5. Write back

● Diverse Ladebefehle:

▪ LDA #$4

▪ LDA $4

● Vergleiche

▪ CPX

▪ CMP #$40

● Sprungbefehle▪ JMP

▪ JSR

▪ BEQ

▪ BCS

Zusammenfassung Toy-Model (2)

● ALU-Befehle

▪ ADD

▪ SUB

▪ Auch unmittelbar

▪ ADD #$05

▪ AND, OR, XOR…

● Interrupts

● Stack

● Spezielle Register, memory mapped

● Zeropage

● RAM under ROM

Nur Toy-Model?

MOS 65xx

● Hergestellt von MOS Industries

● Tochterfirma von Commodore

● Eingesetzt in: C64, ZX Spektrum, Apple I

Teil 4: Prozessoren

4c: Entwicklung

Zitate

● 1943: Thomas Watson, IBM-ChefIch glaube es gibt einen weltweiten Bedarf an vielleicht fünf Computern.

● 1949: Fachblatt “Popular Mechanics”In Zukunft könnte es Computer geben, die weniger als 1,5 Tonnen wiegen.

● 1957: Der Lektor für Wirtschaftsbücher des renommierten Verlags “Pretentice Hall”Ich habe das ganze Land bereist und mit allen Experten gesprochen, und ich sage Ihnen: “Datenverarbeitung ist ein Modefimmel, der nicht einmal das Jahr überstehen wird”.

● 1968: Ein IBM-Ingenieur über die Idee des MikroprozessorsSchön.. Aber wozu soll er gut sein ?

● 1977: Ken Olsen, Präsident und Gründer des Rechnerherstellers Digital Equipment CorporationEs gibt keinen erdenklichen Grund, weshalb jemand einen Computer für zu Hause haben sollte.

● 1981: Bill Gates640 kByte sind genug für jeden

Von-Neumann-Architektur

● Vorgeschlagen 1946 von John von Neumann

● Universeller Rechner

● Toy-Model ist von-Neumann-Rechner

● Prinzipien:

▪ Ablaufsteuerung

▪ Rechenwerk

▪ Speicher für Befehle und Daten

1903-1957Logische Struktur

Von-Neumann-Rechner

Von-Neumann-Rechner

CISC vs. RISC

● RISC: Reduced Instruction Set Computer

▪ Nur notwendige Befehle

▪ Dafür fest verdrahtet (wie Toy-Model ohne spezielle Adressierungen)

● CISC: Complex Instruction Set Computer

▪ Drang nach immer mehr Befehlen

▪ Z.B. Argumente nicht nur in Register, sondern auch im Speicher (ADD $40, $41)

▪ Braucht Microcode als Ablaufsteuerung

▪ Typischer Vertreter: Intel x86-Reihe

● Heute akademischer Streit

Intel 4004 (1971)(Integrated Electronics)

● 4 Bit, PMOS

● 12 Bit Adressraum

● Stack mit 3 Plätzen

● 108 kHz

● 2250 Transistoren

● Ursprünglich für japanische Firma entwickelt (Rückkauf für 60.000$)

● Erster kommerzieller „Microprozessor“ (CPU auf einem Chip)

● 4040 (1974)

● Stack auf 7 erhöht

● Mehr Befehle

Intel 800X

● 8008 (1972), PMOS

● Grundlegendes Neudesign

● 8 Register

● Stack als separater Baustein

● 8080 (1974)

● 16 Adressleitungen -> 64 kByte Adressraum

● 4500 Transistoren, 2.5 MHz, NMOS

Intel 808X

● 8085

● 6500 Transistoren

● Lange im Einsatz als Microcontroller

● 8086 (1978), Quasi-16-Bit Prozessor

● Adressierung nur in 64 kByte-Fenstern (bis 1MByte)

● War eigentlich nur als Zwischenlösung bis zum 32-Bit-System gedacht

● Coprozessor: 8087 für Fließkomma-Arithmetik

Einschub: Fließkommazahlen

● Arbeiten mit Komma:

● Bsp.: Zerlege 8 Bit in 4 Vor- und 4 Nachkommabits:

▪ 1001.0011 (was ist das für eine Dezimalzahl?)

▪ = 9.0 + 0*0.5 + 0*0.25 + 1*0.125 + 1*0.0625= 9.1875

▪ Festkommazahl, Wertebereich stark eingeschränkt

● Alternativ:

▪ 9.1875

▪ =9.1875 * 100

▪ =0.091875 * 102

▪ =918.75 * 10-2

● Fließkommazahlen

Fließkommazahlen

● Brauchen noch 2. Zahl, den Exponenten

● 8 Bit mit „Bias“ von 127, d.h. 127 ist gleich 0

● Basis ist nicht 10, sondern 2

▪ 9.1875=1001.0011 * 2b01111111-127

▪ Oder: =100.10011 * 2b10000000-127

▪ Oder: =1.0010011 * 2b10000010-127

Finden immer

Darstellung, wo

Genau eine 1 vor

Komma

J-BitFraction

Normaldarstellung

1 Bit eingespart,

kann als

Vorzeichenbit

benutzt werden

IEEE-Standard 754

● Null wenn Exponent=Fraction=0…0

▪ (Es gibt +0 und -0)

● Unendlich, wenn Exponent=1…1 und Fraction=0…0

▪ (Es gibt +∞ und -∞)

● Not a Number (NaN), z.B. nach Teilung durch Null

▪ Exponent=1…1 und Fraction ungleich Null

Sign Exponent Fraction Bias

32 Bit

Single Precision

1 [31]

8

[30-23]

23

[22-00]

127

64 Bit

Double Precision

1[63]

11

[62-52]

52

[51-00]

1023

Teil 4: Prozessoren

4d: .

Die Anfänge von Commodore

● Jack Tramiel (1929-2012)

● Gründet 1954 Commodore Ltd.(vorher „Commodore“-Laden in der Bronx)

● Zunächst Herstellung von Schreibmaschinen (und größter Büromöbelherstellerin Kanada)

● 1969: Taschenrechner

● 1976 Übernahme vonMOSTek

MOS

● MOS 6502, vorgestellt 1976(VC-20, Atari 800L, Apple 2)

● 25 US$ (vergleich: I8080 175 US$)

● RISC-artig (3 Register, wenig Befehle, Operationen nur auf Register)

Commodore-Produkte

● C64

● Amiga

● 1984: Tramiel verlässt CBM

● Danach: CBM läuft Markt hinterher (Ära der Homecomputer zu Ende)

● 1994 Konkurs, ▪ Reste 1995 von ESCOM gekauft (1996 selbst pleite)

Atari

● Nolan Bushnell:

▪ Pong (Magnavox)

▪ 1972 Atari gegründet

▪ 1975 Breakout

● 1976 Verkauf an Time Warner

● 1978: Heimcomputer

● 1982: Pac-Man

● 1984 von Tramiel gekauft

● 1996 aus dem Markt verdrängt + von JTS aufgekauft(„Atari“ später von Infogrames übernommen, 2013 Insolvenz in USA)

Apple

● 1976: Apple I (6502, 8KByte)

● Apple II (Farbe, 4-64kByte)

▪ Casettenspeicher

▪ 1977 mit Diskette

● 1980: Apple III

▪ Finanzielles Desaster

● 1984: Macintosh (68000): Graphische Oberfläche, mit Menüs

● 1998: iMac

▪ Powerpc als resultat der aim (apple, ibm, motorola) allianz

● 2005: Umstellung auf Intel-Prozessoren

● 2007: Neuausrichtung auf Unterhaltungselektronik (iPod, iPhone, iPad)

SUN

● Andreas von Bechtolsheim -Bundessieger jugend Forscht –(Physik 1974)

● 1976 nach Stanford

● Idee: Rechner der Uni vernetzen (baute Hardware dafür). S.U.N.=Stanford University Network

● 1982 Gründung von SUN mit Studienkollegen (Joy, Kholsa, McNealy)

● Entwicklung von SunOS, SPARC (=RISC Prozessor), Java, etc…

● 2009 von Oracle übernommen

ARM

● Entwicklungprojekt (1983) von Acorn Computers

● ARM = Acorn Risc Machine

● 1990: Gründung von ARM ltd. mit Apple etc.: ARM = Advanced Risc Machines

● Lizenznehmer: Motorola, Intel, TI, …

● Kleingeräte-Bereich: Smartphones, Tablets, etc.

▪ Ca. 4 Milliarden Stück / Jahr (Stand 2010)

Advanced Micro Devices

● 1969 Gründung durch Jerry Sanders und Ed Turney (vorher: Fairchild)

● Risikokapital von Robert Noyce u.a.

● 1975: Speicherchips, Bauteile für Prozessoren (Am 2900)

● 1979: x86 mit Intel-Lizenz (bis 486)

● 1987: RISC-Prozessoren (Am29000): Unix-Systeme, Drucker

● 1996: K5, Übernahme von NexGen

● 1997: K6 (basierend auf NexGen-Entwicklung)

● 1998: Produktion in Dresden (später Globalfoundries)

● 1999: K7 (Athlon)

● 2003: K8 (AMD64 = x86-64 = Intel-64 ≠ IA-64)

● 2006: Übernahme von ATI (Grafikkarten)

R. Noyce, Physiker,

Gründer von Intel,

Fairchild

DEC

● 1957 von Ken Olsen gegründet

● PDP-Serie (sehr erfolgreich an Universitäten)

● VAX/VMS workstations

● Netzwerke (DECNet)

● DLT (Digital Linear Tape)

● ASCII-Terminals (vt102)

● Alpha-Prozessor (RISC)

▪ Verkauf der Prozessorsparte an Intel

● 1998 Übernahme durch Compaq

● 2002 Verkauf Compaq an HP

NAME

xterm - terminal emulator for X

DESCRIPTION

The xterm program is a terminal emulator for the X Window System. It provides DEC

VT102/VT220 (VTxxx) and . . .

Hewlett-Packard (HP)

● 1939 gegründet (William Hewlett + David Packard)

● 1972 Taschenrechner HP-35 (ca 400 $)

● 1980 PC‘s

● 1999 Abspaltungvon Agilent

● 2002 Fusion mit Compaq

● 2010 Kauf von 3comund Palm

● 2011: Abkehr vom PC-Geschäft

● 2015: Aufspaltung in HP Inc. Und HP Enterprise

XEROX

● Chester Carlson:

▪ 1942 Patent auf Xerographie

▪ 1947 an Haloid Company -> XEROX

▪ 1970 Patent auf Xerographie läuft aus

● PARC: Palo Alto Research Center (1970)

▪ Laserdrucker

▪ Ethernet (3com)

▪ Graphische Benutzeroberfläche

• GUI, WYSIWYG

▪ Interpress-Sprache

• Adobe, Postscript

NoteTaker

XEROX Alto

Motorola

● 1928 als Galvin Manufactoring Corporation gegründet

● 1930 erstes kommerzielles Autoradio

● 1947 Motorola

● Motorola 68000, z.B. Apple Macintosh▪ Heute Basis von Microcontrollerfamilie

● PowerPC▪ Teilweise als embedded Prozessor (XILINX-FPGAs)

● Graphikprozessoren

● Mobiltelefone (1983 DynaTAC ~4000$)

● Mobilfunk-Basisstationen (an Nokia-Siemens)

● 2011 in zwei Unternehmen aufgespalten (Solutions und Mobility, letzeres von Google übernommen, später an Lenovo weiterverkauft)