Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Vertiefungsstoff zum Thema: Mikrocomputer

Ähnliche Präsentationen


Präsentation zum Thema: "Vertiefungsstoff zum Thema: Mikrocomputer"—  Präsentation transkript:

1 Vertiefungsstoff zum Thema: Mikrocomputer
Anbindung von Ein- und Ausgabegeräten Plattenspeicher - Aufbau - RAID Technik Überblick zu gängigen Bus-Systemen Mikro- / Maschinen- / Assemblerprogrammierung höhere Programmiersprachen / Programmierparadigmen

2 Vom Rechenwerk zum Universal-Rechner
Zur Kommunikation (d.h. zum Datenaustausch) mit der Außenwelt wird der Micro-Computer (bestehend aus CPU, RAM und ROM) zum DVS ausgebaut durch: - Kopplung mit einem Ein- sowie mit einem Ausgabewerk - Anbindung eines externen Massenspeichers Datenverarbeitungssystem (DVS) Peripherie m-Comp Eingabe- werk Ausgabe- werk V A E : Steuerbus : Adressbus : Datenbus Speicherung (extern) S

3 Verwendung eines eigenen E/A-Prozessors
Motivation: Entlastung der CPU von Ein- Ausgabeaufgaben. Vorteilhaft z.B. bei massiver Graphik- und Videoausgabe. Lösung: - CPU plus E/A Prozessor (d.h. weitere CPU mit speziellen Programmen zur Bewältigung von Ein- und Ausgabeaufgaben). - CPU stößt E/A-Prozessor an, falls erforderlich. - CPU und E/A-Prozessor arbeiten weitgehend unabhängig nebeneinander (auch nebenläufige oder parallele Verarbeitung). I/O Gerät1 CPU E/A Prozessor I/O Gerätn Datennetz Anmerkung: - Evtl. Verwendung mehrerer spezialisierte E/A Prozessoren. - CPU und E/A-Prozessor sind Kanal-gekoppelt.

4 Verwendung externer Speichermedien
Motivation: Da große RAM-Speicher relativ teuer sind (waren), weicht man auf billigere Massenspeicher aus, z.B. auf Magnetplattenspeicher (Festplattenspeicher, Hard disk). Aufbau: Magnetisierbares Material wird auf eine Rotationsscheibe aufgetragen. Ähnlich einem Plattenspieler, positioniert man einen Lese- Schreibekopf an einer Plattenposition. Schreiben eines Bits entspricht dem Ausrichten eines magnetisierbaren Partikels

5 Organisation der Datenablage auf einer Festplatte
Magnetplattenspeicher sind blockorganisierte Speicher mit quasi-wahlfreiem Zugriff. Die Aufteilung der magnetisierbaren Plattenfläche erfolgt in Spuren und Sektoren, über die der Lese-Schreibkopf positioniert werden kann. Die logische Strukturierung der abzulegenden Daten erfolgt in Blöcken von Bytes, die bei einem Zugriff gemeinsam gelesen oder geschrieben werden. (Es gibt viele verschiedene Varianten, z.B. DOS, UNIX, ...) Blöcke werden zu Cluster und/oder Partitionen zusammengefasst. Eine Dateiordnungstabelle (File Address Table, FAT) führt darüber Buch, wo welche Daten auf der Platte abgelegt sind bzw. abgelegt werden sollen. (Beispiel FAT32 unter Windows XP)

6 RAID - Redundant Array of Inexpensive Disks
Motivation: Verwendung mehrerer Festplatten, um: - Schreib-Leseoperationen zu beschleunigen - Datenverlust bei technischen Fehlern zu minimieren Aufbau: verschieden Varianten (RAID-Levels): RAID 0: Striping (mindestens zwei Platten) Beschleunigung ohne Redundanz Die Blöcke A,B,C,D werden als Streifen (stripes) einer großen Platte betrachtet. Ein zu schreibendes Datum wird ebenfalls in Streifen zerlegt, so dass jede Platte weniger Schreiben muss. (Damit wird auch das Lesen beschleunigt). RAID 1: Mirroring - Spiegelung - volle Redundanz, daher hohe Datensicherheit - verteuert den Speicher um den Faktor 2

7 RAID - Redundant Array of Inexpensive Disks
RAID 5: Performance + Parität Beschleunigung plus Redundanz Man bildet Paare von Blöcken (Si, Sj) und legt für jedes Paar Paritätsinformation P(Si, Sj) an, die man dann jeweils auf einer anderen Platte ablegt. => Man braucht mindestens 3 Platten Paritätsinformation für das Paar (A,B) - Sei ai das in Block A unter der Adresse i abgelegte Byte und - sei bi das in Block B unter der Adresse i abgelegte Byte dann berechnet man die Paritätsinformation pi (für ai und bi ) durch: pi := ai XOR bi Vorteil: Ist beispielsweise Block A nach einem Plattencrash nicht mehr lesbar, so kann man das Byte ai aus den beiden Bytes bi und pi wieder herstellen (Durchführen eines „Rebuild“).

8 Zur Zukunft der Festplatte?
Seagate: „By 2010 we should see densities of at least a terabit per square inch — that is 1 trillion bits.“ 2,54 cm Ansatz: Magnetisierbares Material wird punktgenau mit einem Laserstrahl erhitzt und gleichzeitig durch den magnetischen Schreib-Lesekopf beschrieben / gelesen. => Höhere Speicherdichten auf dem Datenträger (z.B. Festplatte).

9 Zur Zukunft der Festplatte?
IBM „Millipede“ - (n*m) Nadeln schmelzen parallel Löcher in einen Kunststoffträger -

10 Anbindung von weiteren Geräten über Busse
Peripheriegeräten bzw. zum Datenaustausch mit anderen Computern über ein Netzwerk wurden verschiedene Schnittstellen-Technologien entwickelt: 1:1-Verbindungen: - Serielle Schnittstellen (RS-232) - Parallele Schnittstellen („Centronics Schnittstelle“) 1:n- bzw. n:n-Verbindungen durch Busse Unterscheidung nach: - Art der zu übertragenden Information in > Datenbus > Adressbus > Kontrollbus (Steuerbus) - Art der Übertragung in parallel vs. seriell arbeitende Busse - Abhängigkeit von spezieller Hardware: z.B. Systembusse vs. Standardbusse - Leistungsmerkmale wie: > Busbreite (Anzahl der parallelen Leitungen) > Taktrate (z.B. 66 MHz) > Übertragungsrate (z.B. 12 Mbit/sec)

11 Serielle Schnittstellen (EIA-232, RS-232, V.24)
Die EIA-232-Schnittstelle (ehemals RS-232) ist eine so genannte Spannungsschnittstelle. Entspricht einer V.24/V.28/ISO-2110-Schnittstelle hinsichtlich Signalsemantik, Elektrik und Steckerbelegung. Technisch wird sie meist in Form einer 9-poligen Leitung realisiert. Ursprünglich entwickelt für die Datenfernübertragung zwischen Computern über das Telefonnetz entwickelt und enthält daher noch verschiedene Signale, die heute für die meisten Anwendungen nicht benötigt werden. => Nicht alle 9 Leitungen werden effektiv zum Datentransfer genutzt. Prinzip: Einzelne Bits werden nacheinander (d.h., seriell) über eine Datenleitung gesendet. Beispiel: Übertragung des Zeichens A in ASCII Code:

12 Pinbelegung der EIA-232 Schnittstelle
Einsatzmöglichkeit: z.B. Anbindung von Modems, z.B. 56KBit Modem.

13 Parallel Schnittstelle ("Centronics" , IEEE 1284 )
Centronics-Schnittstelle: in den 1970er-Jahren vom gleichnamigen Druckerhersteller entwickelte Schnittstelle zur parallelen Datenübertragung. Entwickelte sich zum Quasi-Standard und wurde ab 1994 Teil des IEEE 1284 Standards (Standard Signaling Method for a Bi-directional Parallel Peripheral Interface for Personal Computers). Prinzip: Standard-Centronics-Stecker besitzt 36 Pins, davon werden 17 Pins für Datentransfer und Handshake genutzt, die anderen liegen an Masse. Die Datenübertragung erfolgt nach folgendem Protokoll: 1. Der Sender überprüft anhand der Busy-Leitung, ob der Empfänger bereit ist. Falls ja, wird das Datenbyte auf die Datenleitungen gelegt 2. Durch Aktivierung des Strobe-Signals (mind. 1 bis max. 50 Mikrosekunden) wird dem Empfänger die Gültigkeit des Datums mitgeteilt 3. Durch Aktivierung von Busy signalisiert der Empfänger, dass er mit der Verarbeitung der Daten beschäftigt ist 4. Der erfolgreiche Empfang und Verarbeitung des Datenbytes wird vom Endgerät durch das Acknowledge-Signal bestätigt

14 Parallel Schnittstellen
Vorteil: höhere Übertragungsraten gegenüber seriellen Schnittstellen, z.B. 150 KBit/sec. Nachteile paralleler Schnittstellen: dickere Kabel Gefahr der gegenseitigen Störungen der einzelnen Adern Störungen durch Laufzeitunterschiede in den parallelen Adern. Um diese zu verhindern, darf – abhängig von Übertragungsgeschwindigkeit und der Kabelqualität – eine maximale Länge nicht überschritten werden, z.B., max. 1,8 Meter Kabellänge bei Centronics Schnittstelle. (Bei hochwertigen Kabeln bis zu max. 5 Metern möglich). Moderne parallele Schnittstellen unterstützen EPP (Enhanced Parallel Port) bzw. eine Weiterentwicklung mit Namen ECP (Enhanced Capabilities Port). EPP / EPC verwendet bidirektionale Datenübertragung und kann Geschwindigkeiten von bis zu 2 MiB/s erreichen. Findet Verwendung vor allem für Netzwerkadapter, externe Datenträger und zum Anschluss von Druckern.

15 Anbindung von weiteren Geräten über Busse
Vorteil des Bus-Konzepts: Gemeinsame Nutzung eines Leitungsstrangs erlaubt den Anschluss mehrer Busnutzer. => Gute Skalierbarkeit, neue Geräte können angehängt werden. Komponenten einer Bus-Schnittstelle Bus- anforderung ( Bus Master) Interrupt- anforderung Interrupt- verarbeitung Übertragungs- steuerung ( Bus Slave) Lokale Busfunktionen Busleitungen (Daten, Adressen, Steuerung, Versorgung) Globale Busfunktionen Arbiter (Buszuteilung) Strom- und Taktversorgung

16 Bus-Mastering Prinzip:
Beim Bus-Mastering gibt die CPU zeitweilig die Kontrolle über den Bus an eine Adapterkarte, den sogenannten Busmaster ab. Der Busmaster adressiert in der Folge selbständig Speicher und Ein-Ausgabe-Bereiche zum Zweck des Datentransfers. => Busmaster wirkt als eine Art Bridge bzw. wie eine eigenständige CPU. Vorteil: Busmastering entlastet die CPU – sie kann somit für andere Aufgaben eingesetzt werden. Meist ist der Bus zum Speicher hin noch teilweise nutzbar, es herrscht somit Time-Sharing. Time-Sharing macht sich insbesondere bei modernen Multitaksing-Betriebssystemen positiv in der Reaktionsfähigkeit bemerkbar, wobei die Busmaster-Aktivität oftmals über ein Interrupt-Signal mit dem Betriebssystem verkoppelt ist. Die Adapterkarte hat dabei den Sinn, bestimmte Aufgaben asynchron zu anderen Tasks zu bedienen.

17 Bussysteme UART "Universal Asynchronous Receiver Transmitter".
Ein Serial-Parallelwandler Baustein, der als universeller asynchroner Sender und/oder Empfänger arbeitet. Beispielsweise sind serielle PC-Schnittstellen mit einem UART-Chip realisiert. ISA (Industry Standard Architecture): Früher Bus-Standard für IBM-kompatible PCs, welches die XT-Bus-Architektur auf 16 Bits erweitert. Wird üblicherweise mit 8 MHz getaktet. EISA (Extended Industry Standard Architecture): Standardbus der den ISA-Bus auf 32 Bit erweitert. Außerdem fügt er die Möglichkeit hinzu, den Bus zwischen mehreren CPUs zu teilen. Die Unterstützung für das Bus Mastering ist auch weiter verbessert worden, so dass nun 4 GB Speicher erreichbar sind. EISA kann ältere Karten vom XT-Bus und von ISA-Bus einsetzen. VLB (VESA-Local-Bus): von der Video Electronics Standards Association (VESA) entwickeltes 32-Bit Bussystem. Überträgt mit 32-Bit und dem Prozessortakt (25 bis 66 MHz) bis zu 80 MByte/sec. HyperTransport Industriekonsortium (verschiedene Busbreiten, 2-32 Bit, bis zu 22.4 GB/sec schnell).

18 PCI Bus PCI (Peripheral Component Interconnect): Bus-Standard zur Verbindung von Peripheriegeräten mit dem Chipsatz eines Prozessors. Verschiedene Varianten des Standards für verschiedene Einsatzgebiete: (PC, Industrie, Telekommunikation). Im PC-Umfeld findet hauptsächlich die Variante PCI Conventional Verwendung. PC‘s haben meist zwei bis sieben Steckplätzen für PCI-Karten (z.B. Netzwerkkarten, Modems, Soundkarten und (ältere) Grafikkarten.) PCI-Bus ist ein synchroner Bus mit MHz Taktrate (30 ns pro Takt). Auf dem PCI-Bus kommuniziert immer ein Master mit einem Target. In vielen PC-Systemen ist der Host der einzige Master. Ein Bus kann aber mehrere Master haben, über einen Arbiter wird ein Master ausgewählt. Der ausgewählte Master kann einen Transfer beginnen, wobei er eine Adresse an die 32 Daten/Adressleitungen und ein Kommando an 4 Kommando/Byte-Leitungen anlegt. Ein zusätzlich Paritätsleitung erlaubt das Erkennen von Fehlern. Übertragungsrate: 4 Bytes pro Takt (30 nsec), also maximal 133 MByte/sec. PCI-Express ist möglicher Nachfolger von PCI und AGP. PCI-Express verfügt über Slots mit unterschiedlichen Datenübertragungsraten: - PCI x1: 250 MByte/sec, x4 PCI-Express: 1 Gbyte/sec - PCI Express x16: 4 Gbyte/sec

19 PCMCIA (PC-Card) PCMCIA (Personal Computer Memory Card International Association). Standard für Erweiterungskarten für mobile Computer. Statt "PCMCIA-Karte" hat sich der Begriff "PC-Karte" (PC Card) durchgesetzt. Grundfläche im Scheckkartenformat (85,6 × 54 mm), jedoch in verschiedenen Dicken. PCMCIA-Karten lassen sich nach ihrer Datenbreite unterscheiden: 16 Bit: Die Kommunikation mit dem Computer erfolgt über die 68-polige Buchse an einer Stirnseite der Karte. Die mit diesem Kartentyp erzielbaren Datenraten entsprechen etwa der von 16-Bit-ISA- Karten (etwa 16 MB/s). 32 Bit "Cardbus"-Karten: Übertragungsrate ist mit PCI-Karten vergleichbar (max. 133 MB/s). Cardbus-Karten erlauben Bus-Mastering. PCMCIA-Karten arbeiten stromsparend und unterstützen Plug and Play, sind also im laufenden Betrieb wechselbar.

20 SCSI Bus SCSI (Small Computer System Interface): Familie standardisierter Schnittstellen zur Datenübertragung beruhend auf dem Bus-Konzept. (1986: SCSI-1 5 MB/sec , 1989: SCSI-2, ..., 2004 Ultra MB/sec). Der Anschluss von SCSI-Geräten erfordert einen SCSI-Hostadapter, der den Datentransfer auf dem SCSI-Bus kontrolliert und rückseitig an die I/O-Baugruppen des Computers angebunden ist (meist der PCI-Bus). das anzuschließende SCSI-Gerät besitzt einen SCSI-Controller, um die Daten über den Bus zu übertragen und mit dem Hostadapter zu kommunizieren. Der SCSI-Controller ist heute generell in die Geräteelektronik eingebettet. SCSI-3 Controller mit 50 Pin Kabel SCSI wird meist zur Anbindung von Festplatten und Bandlaufwerken genutzt, kann jedoch auch mit einer Reihe von weiteren Geräten verwendet werden, wie z. B. Scanner, CD-ROM-Laufwerken, CD-Brenner und DVD-Laufwerke. Ausblick: eine Einbettung von SCSI-3 über TCP/IP (iSCSI-Standard).

21 USB USB (Universal Serial Bus) ist ein 4 adriger serieller Bus.
2-Leitungen (D+ und D-) zur Datenübertragung wovon eine invertierte Daten überträgt (differenziellen Datenleitung). => reduzierte Abstrahlung => höhere Übertragungssicherheit. 2 Leitungen zur Stromversorgung externern Geräte => praktisch, man spart Netzteile Im Gegensatz zum klassischen parallel-arbeitenden Bus bezieht sich Bus bei USB auf die logische Vernetzung. - An einen Host können mehrere Geräte angeschlossen werden, jedoch grundsätzlich über Hubs. An einer elektrischen Leitung ist immer nur ein einzelnes USB-Gerät angeschlossen. Durch den Einsatz von Hubs entstehen Baumstrukturen, die alle in einem Host-Controller enden. USB Hostadapter Tastatur Maus Drucker Tablett

22 USB An einen Hostcontroller können bis zu 127 verschiedene Geräte angeschlossen werden. Durch Verwendung mehrerer Hostcontroller können auch noch mehr Geräte angeschlossen werden (jedoch abhängig vom verwendeten Betriebssystem, Windows beispielsweise wird lange vor Erreichen der 127 Geräte instabil). Theoretisch maximale Übertragungsraten: - Low Speed: 1,5 MBit/sec - Full Speed: 12 MBit/sec - High Speed (ab USB 2.0): 480 MBit/sec für isochrone Übertragung. Übertragungsraten basieren auf dem Systemtakt der jeweiligen USB-Geschwindigkeit. In der Praxis muss mit einer spürbar geringeren Übertragungsrate gerechnet werden. Geräte übermitteln erwünschte Übertragungsbandbreiten durch Signal (Leitung D+ := High-Speed Gerät) Da die Kommunikation vom Host (meist PC) gesteuert werden muss, kommunizieren USB-Geräte nicht direkt miteinander. Sämtliche Daten werden zuerst vom Host gelesen und von dort wieder herausgeschrieben werden. Die USB-Spezifikation sieht das Zufügen und Entfernen der Peripherie-Geräte im laufenden Betrieb vor. Man spricht dabei von Hot-Plugging.

23 FireWire / IEEE 1394 / (i.Link bei Apple)
FireWire ist ein seriell-arbeitendes Peer-to-Peer-Bus (entwickelt von der Firma Apple, Markteinführung ab 1995). FireWire kennt keinen fest definierten zentralen Host zu Steuerung von Übertragung und Adressierung. Fast jedes Gerät hat zusätzlich zwei oder mehrere Ports und fungiert gleichzeitig als Hub und Repeater. Die eingehenden Signale werden an alle anderen Ports weitergereicht. Maximal sind 63 Geräte pro Bus möglich, wobei es keinen Ringschluss (erstes Gerät ist mit dem letzten verbunden) geben darf. Bei Firewire IEEE1394b sind Ringschlüsse gestattet. Bis zu 1023 Busse können mit Brücken verbunden werden, so dass insgesamt fast Geräte verbindbar sind. Der maximale Abstand zwischen zwei Geräten ist 4,5 m, die maximale Gesamtlänge des Busses beträgt 72 m.

24 FireWire / IEEE 1394 / i.Link (bei Apple)
Verändert sich die Topologie, so wird ein neuer Taktgeber mittels eines Protokolls „demokratischen“ ermittelt. - Auswahl z.Teil vom Zufall abhängig bzw. von der bereits aufgebauten Topologie. - ausgewählter Taktgeber übernimmt die Takterzeugung und das Bestätigen der Sende-Anforderungen der übrigen Geräte. => Nachteile von FireWire: Bestätigen der Sende-Anforderungen kostet viel Zeit und vergeudet einen Teil der Bandbreite. Übertragungsrate von FireWire beträgt bis zu 400 MBit/sec (50 MByte/sec) seit Einführung. Einsatzfelder: Für Digital-Video ist FireWire (IEEE 1394) seit Festlegung des DV-Standards die Schnittstelle in jedem DV-Camcorder. Jedoch auch andere Geräte, z.B., schnelle externe Festplatten. Aktuelle Weiterentwicklung zum sog. Wireless FireWire: WFW baut auf der FireWire-Infrastruktur auf, so dass Datenformate und Verbindungsmanagement von FireWire weiterverwendet werden können.

25 Vergleich verschiedener Bus-Systeme

26 Kopplung unterschiedlicher Busse über eine Bridge
m-Comp CPU 1 GByte/s interne Wege 528 MByte/s 528 MByte/s Grafik- Chip Bussteuerung (PCI-Bridge) Hauptspeicher I/O-IF-Logik 132 MByte/s externe Wege EIDE- Chip SCSI- Controller USB- Controller ISA- Bridge I/O-IF I/O-IF I/O-IF I/O-IF I/O-IF : Systembus : Peripheriebus : extern

27 Sprachebenen der Programmierung
Abstraktionsgrad hoch Anwender programmierbar Plattform-unabhängig symbolisch, mit Sprachkonstrukten zur bequemeren Programmierung. Hochsprachen Abbildung auf Anwender programmierbar durch Emulatoren unabhängiger vom verwendeten Prozessor symbolisch => besser lesbar Assembler Abbildung auf Befehle einer virtuellen Maschine Anwender programmierbar prozessorabhängig schwer lesbar (binär) Abbildung auf Maschinen-Befehle Abbildung auf abhängig vom Prozessor elementare Funktionen vom Hersteller programmiert schwer lesbar (binär) Mikro-Befehle niedrig

28 Beispielhafte Struktur eines 32 Bit Mikro-Befehls
MemIF BAL calc m-ROM-IF Befehls-register MIR enM as ld-MAR ld-MDR ds B A S F SH enS js iADR 8 Bit zur Ablage von Befehlsadressen 5 Bit 12 Bit 4 Bit j und s Bit zur Codierung der Sprungbedingung zusätzliches Steuerbit (enableS). Falls nicht gesetzt, wird ALU Ergebnis nicht in Ergebnis-Register transferiert. => nur Test von N oder Z 11 Bit 32 Bit Anmerkung: nicht alle denkbaren Bit-Kombinationen (= 232) werden als Befehle genutzt.

29 Entwicklung von Mikro-Programmen
Satz: Mit seriellen Anweisungen zur Inkrementierung und Dekrementierung von Datenwerten und bedingten Sprungbefehlen lassen sich alle prinzipiell berechenbaren Funktionen programmieren. Die zur Programmierung verwendbaren Mikro-Befehle unterscheiden sich in Anzahl und Format zum Teil erheblich von CPU zu CPU. => Mikro-Programme sind nicht portabel. => minimale Befehlssätze ziehen oft aufwändige Programm- Formulierungen nach sich. CISC vs. RISC- Architekturen CISC (Complex Instruction Set Computer): oft mehr als 200 Befehle, 3 bis 10 Takte pro Befehl, komplexer Aufbau. RISC (Reduced Instruction Set Computer): meist weniger als 100 Befehle, wenig Takte pro Befehl, mehrere Register (> 32), einfacherer Aufbau des Steuerwerks. (Bekannter Vertreter: Sun Microsystems) RISC ist derzeit dominant auf Mikro-Code Ebene. Jedoch nicht auf ISA-Ebne

30 Vorgehen bei der Entwicklung von Mikro-Programmen
Gegeben: Anwendungsproblem / Programmieraufgabe Schritt 1: Problemanalyse, Spezifikation der Ein- und Ausgabe Schritt 2: Aufteilung in Teilprobleme und Formulierung eines Ablaufs (Verfahren, Algorithmus) zur Problemlösung. (Varianten zur Notation: Text, Diagramme, mathematische Notation, ...) Schritt 3: Festlegung, wo welche Daten abgelegt werden sollen (RAM, Registerfile) Übersetzung der Lösungsschritte in einzelne Mikro-Befehle bzw. Mikro-Programm-Bausteine. Schritt 4: Codierung des gesamten Ablaufs als Sequenz von Mikrobefehlen (die evtl. Sprünge enthalten kann). Festlegung der Adressen, unter denen die Befehle abgelegt werden. Schritt 5: Übersetzung der Mikro-Befehle in Maschinenworte (Bitfolgen) Schritt 6: Laden des Mikro-Programms in den Befehlsspeicher und Programmtest.

31 Vorgehen bei der Entwicklung von Mikro-Programmen
Schritt 5: Übersetzung der Mikro-Befehle in Maschinenworte (Bitfolgen) Schritt 6: Laden des Mikro-Programms in den Befehlsspeicher und Programmtest. Neuere Prozessoren (z.B. die Pentium Serie) erlauben es, den Mikrocode (partiell) zu ändern. Motivation: „In the design of the Pentium(tm) processor, historical averages were used to predict the number of fatal microcode bugs which could be expected in the production silicon. At the equivalent of 360K bytes of microcode data, it was anticipated that there would be approximately 25 fatal bugs. 32 patch registers were included to allow for the remapping of up to 32 microinstruction words“ Realisierung: zusätzliches Registerset: Microcode Patch Register (MPR's), sowie zwei zusätzliche Befehle: - PMPR Push Patch Register - EMX Execute Microcode Extension

32 Beispiel 1: Mittelwertberechnung zweier Zahlen
Aufgabe: Berechne den ganzzahligen Mittelwert m der beiden Zahlen a und b. Schritt 1: Eingabe: zwei Zahlen a und b. Ausgabe: m = (a+b)/2 Schritt 2: Aufgabe lässt sich durch Addition mit anschließendem Rechts- Shift lösen. Schritt 3: Die Operanden a und b sowie das Ergebnis m werden in Registern abgelegt. Z.B. a in R6, b in R7 und m in R8. Es genügt dann der Befehl: R8 <- rsh(R6 + R7) Schritt 4: Entfällt, da Programm aus nur einem Befehl besteht. Schritt 5: .... Schritt 6: ....

33 Beispiel 2: „Erzeugen“ einer Zahl a als Registerinhalt
Aufgabe: Für eine Berechnung soll eine Zahl a in ein Register geladen werden. Schritt 1: Ausgangslage: Zur Konstruktion der Zahl a kann auf die bereits im Register abgelegte Zahl 1 zurückgegriffen werden. Schritt 2: Die Zahl a lässt sich durch Addition und Shift-Operationen (d.h. Verdoppeln) aus der Zahl 1 erzeugen. Beispiel: a = 8 = 2  2 (1+1) Schritt 3: Die Zahl 1 stehe im Register R1, die zu konstruierende Zahl a soll im Register R6 abgelegt werden. Schritt 4: Beispiel: a=8 kann mit folgender Befehlssequenz erzeugt werden: 1. R6 <- lsh(R1 + R1) ;; in R6 steht jetzt 2  (1+1) = 4 2. R6 <- lsh(R6) ;; in R6 steht jetzt 2  4 = 8

34 Beispiel 3: Programmierung einer Zählerschleife
Aufgabe: Es soll eine Schleife mit n Durchgängen programmiert werden. Ansatz: Verwende eine Zählvariable, die bei jedem Schleifendurchgang um 1 dekrementiert wird, bis der Wert 0 erreicht ist. Die Schleife lässt mit zwei Sprungbefehlen realisieren. 1. Bedingter Sprung zum Abbruch der Schleife, falls Zählervariable den Wert 0 hat. 2. Unbedingter Sprung am Ende des Rumpfs zum Schleifenanfang. Beispiel: Zählvariable steht im Register R7 Struktur der Schleife: Befehlsadresse: Befehl n R7; if Z goto n+k n+1 ;;; Rumpfbefehle n+(k-2) R7 <- R7 –1 n+(k-1) goto n n+k ;;; erster Befehl nach Schleife

35 Beispiel 4: Zugriff auf das RAM
Aufgabe: Der Inhalt einer RAM-Speicherzelle z1 soll um den Wert 1 inkrementiert werden und das Resultat soll in die Zelle z2 abgelegt werden. Ansatz: Folgende Schritte sind durchzuführen: 1. Adresse der RAM-Speicherzelle z1 ins Memory- Adress- Register (MAR) laden 2. Inhalt der Speicherzelle aus dem MDR in eine CPU Register laden 3. Registerinhalt inkrementieren 4. Adresse der RAM-Speicherzelle z2 ins Memory- Adress- Register (MAR) laden, 5. Ergebnis aus Register in MDR schreiben MAR <- R1; rd R2 <- MDR R2 <- R2+1 R1 <- R1+1 MAR <- R1 MDR <- R2; wr

36 Beispiel 5: Abtesten eines bestimmten Bits
Aufgabe: Gegeben ein Maschinewort w der Länge n. Stelle fest, ob das k-te Bit aus w gesetzt ist oder nicht. Ansatz: w sei im Register R abgelegt. 1. Wende auf R n-k Links-Shift-Operationen an, bis Bit k zum Vorzeichenbit wird. R <- lsh(R); ...; R<- lsh(R); ;; insgesamt (n-k) mal 2. Das Vorzeichnbit kann über das Statusregister N (Negativ) der ALU abgefragt werden. R; if N goto x; Test ob MSB= 0 mit Negation: Not(R); if N goto x

37 Beispiel 6: Multiplikation zweier Zahlen
Aufgabe: Berechne das Produkt der beiden Zahlen a und b, die beide in Binärdarstellung im RAM abgelegt seien. Schritt 1: Eingabe: zwei Zahlen a und b im RAM. Ausgabe: Ergebnis erg = a  b Schritt 2: Lösungsansatz: Multiplikation durch wiederholte Addition, d.h., erg = b-malige Addition der Zahl a Beispiel: a = 10= (1010)2, b = 11 = (1011)2 Variante 1 (analog zur klassischen Schulmathematik): 1010 * (a3a2a1a0)  b =  a3  b  a2  b  a1  b  a0  b

38 Beispiel 6: Multiplikation zweier Zahlen
Schritt 2: Variante 2: (a3a2a1a0)  b = 23a3b + 22a2b + 21a1b + 20a0b = 2 (2 (2a3b + a2b) + a1b) + a0b aus dieser Darstellung lässt sich folgendes Verfahren ableiten: 1. erg = a3b 2. erg = 2  erg Beispiel: a = 10 = (1010)2, b = 11 = (1011)2 3. erg = erg + a2b 4. erg = 2  erg 5. erg = erg + a1b 6. erg = 2  erg 7. erg = erg + a0b 1010 * 1011 ;; 1. erg = a3b = 1b = b ;; 2. erg = lsh(erg) ;; 3. erg = erg+a2b = erg+0 ;; 4. erg = lsh(erg) ;; 5. erg + a1b = ;; 6. erg = lsh(erg) ;; 7. erg = erg+a0b = erg+0

39 Beispiel 6: Multiplikation zweier Zahlen
Schritt 2: Formulierung des Verfahrens als Programm-Ablauf-Plan (PAP) (a3a2a1a0)  b = 2 (2 (2a3b + a2b) + a1b) + a0b Start z:= 4; erg = 0; N = a3 ja z = 0 nein erg = 2* erg; ja N = 0 nein erg = erg + b; N = ai-1 d.h. lsh(a) z = z – 1; erg

40 Zusammenfassung: Mikro-Programmierung
CPU spezifischer Befehlssatz (Art, Anzahl und Format der Befehle). Darstellung der Befehle als Bitfolgen fester Länge. Mikro-Programme sind meist auf dem CPU Chip in einem ROM abgelegt. Mikro-Programme sind meist nicht änderbar (Firmware). Programmierung durch Anwender ist meist nicht vorgesehen. Mikro-Befehle korrespondieren zu den elementaren Schalt-Funktionen, die ein Rechenwerk ausführen kann. => Entwicklung von Mikro-Programmen wir schnell aufwändig und unübersichtlich. Als Leistungskenngröße von Prozessoren verwendet man häufig die Anzahl der Mikro-Befehle (OPS), die er pro Sekunde ausführen kann. (MIPS = Million Instructions per Second)

41 Leistungsbewertung von Mikro-Prozessoren
Zur Bewertung der Leistungsfähigkeit von Prozessoren verwendet man meisten die folgenden beide Maße: - Cycles per Instruction - Leistungszahl L in MIPS (Million Instructions per Second) Cycles per Instruction Dieses Maß hängt vom Befehlssatz des Prozessors ab. Man nimmt als Maß die durchschnittliche Anzahl der Zyklen, die die n Befehle des Prozessors brauchen. Da jedoch nicht alle Befehle gleich häufig vorkommen, berücksichtigt man die Auftrittswahrscheinlichkeit pi des i-ten Befehls. Somit definiert man als Maß: CPI = Σi zi  pi n: Anzahl der Maschinenbefehle, zi : Anzahl Maschinenzyklen des i-ten Befehls pi : Wahrscheinlichkeit für das Auftreten des i-ten Befehls n

42 Leistungsbewertung von Mikro-Prozessoren
Leistungszahl L in MIPS (Million Instructions per Second) Dieses Maß gibt an, wie viele Befehle der Prozessor pro Sekunde im Durchschnitt ausführt. Dazu muss neben der durchschnittlichen Zyklenzahl pro Befehl (CPI) auch noch die Dauer eines Zyklus berücksichtigt werden. Man definiert Das Leistungsmaß L: L = 1 / (CPI  T) T = Dauer eines Zyklus in Sekunden Beispiel: Ein Prozessor kennt 6 Befehle, die sich auf zwei Gruppen verteilen. Gruppe1 umfasst 4 Befehle wovon jeder jeweils 2 Zyklen benötigt, Gruppe2 umfasst 2 Befehle wovon jeder jeweils 10 Zyklen benötigt. Die Befehle aus Gruppe 1 kommen jeweils mit einer Auftrittswahrscheinlichkeit p = 0.2 vor. Einer der Befehle aus Gruppe 2 hat eine Auftritts- wahrscheinlichkeit von p = 0.15, für den anderen gilt p= 0.05 Die Zykluszeit des Prozessors beträgt 5 Nano Sekunden (= sec) => CPI = 42 10 10  = = 3.6 L = 1 / (3.6  ) = Instructions/sec ~ 55 MIPS

43 Sprachebenen der Programmierung
Abstraktionsgrad hoch Hochsprachen Abbildung auf Assembler Abbildung auf Befehle einer virtuellen Maschine Abbildung auf Maschinen-Befehle Abbildung auf Mikro-Befehle niedrig

44 Maschinen-Sprache und Maschinen-Programme
Während der Mikrocode für den Anwendungsprogrammierer nur schwer oder überhaupt nicht zugänglich und änderbar ist (z.B. wegen Speicherung in ROM auf Prozessorchip, „Firmware“), stellt Maschinen-Sprache eine Schnittstelle zwischen Prozessor und System- und Anwendungssoftware dar. Man spricht hier auch von der Befehlssatzarchitektur eines Prozessors. engl.: Instruction Set Architecture (ISA) Maschinenbefehle werden entweder direkt auf entsprechende Mikrobefehle abgebildet oder auf eine Sequenz von Mikro-Befehlen. In diesem Fall hat der Maschinen-Befehl die Funktion eines Makros (= Zusammenfassung von mehreren Befehlen). Beim ISA-Entwurf werden die Befehlsformate und Maschinen-Befehlstypen des Prozessors sowie die von außen her zugreifbaren Prozessor-Register definiert. Die Unterscheidung zwischen RISC und CISC auf Mikrocode-Ebne spiegelt sich auch auf der ISA-Ebne wider. Es ist jedoch möglich, dass CISC auf ISA-Ebene auf eine RISC-Prozessorarchitektur abgebildet wird (Beispiel: P6-Mikroarchitektur des Pentium Pro Prozessors).

45 Typen von Maschinen-Befehlen
Der Befehlssatz eines Prozessors umfasst im Allgemeinen mindestens folgende Befehlstypen: Verarbeitungsbefehle - arithmetische Verknüpfung - logische Verknüpfung - Schiebe- und Rotations-Operatoren Transportbefehle - Daten und Adressen laden - Daten im Register / Speicher ablegen Steuerbefehle - Vergleiche, Abfrage von Statusregistern - Sprungbefehle - Unterbrechungsbefehle (Interrupts) - Befehle zur Beeinflussung des Systemzustands (Clear-Flag, Set, ...)

46 Format von Maschinen-Befehlen
Der Aufbau eines Maschinen-Befehls umfasst folgende Komponenten: - Operationscode, kurz Opcode (welche Funktion hat der Befehl?) z.B. Laden von Daten in Register, Operanden Verknüpfen, Shift, ... - Adressen der Operanden (wo stehen die zu verarbeitenden Daten?) - Ergebnisadresse (wo soll das Ergebnis abgelegt werden?) - Adressierungsart (wie findet man zu einer Adressangabe die effektiven Adressen der Speicherzellen / Register) Genaue Struktur der Befehle, d.h. Anzahl und Reihenfolge der Bits pro Komponente, hängt vom jeweiligen Prozessor ab. => Maschinen-Befehle gleicher Länge (z.B. 16 oder 32 Bit) unterschiedlicher Prozessoren sind nicht austauschbar!

47 Geläufige Formate für Maschinen-Befehle
OPCode OPAdr 1-Adress-Befehl: Bedeutung: <Acc> op <OpAdr> -> Acc Der spezifizierte Operand wird mit dem Inhalt eines ausgezeichneten Registers ("Akkumulator", kurz: Acc) gemäß dem OpCode verknüpft, das Ergebnis wird im Akkumulator gespeichert. 2-Adress-Befehl: Bedeutung: OpAdr1> op <OpAdr2> OpAdr2 Ergebnis wird im 2. Operanden abgelegt 3-Adress-Befehl: Bedeutung: <OpAdr1> op <OpAdr2> ResAdr Man gibt zusätzlich an, wo Ergebnis abgelegt wird. Anmerkung: Je nach Befehlsformat redet man von: 1-, 2- oder 3-Adress-Maschinen. OPCode OPAdr1 OPAdr2 OPCode OPAdr1 OPAdr2 ErgAdr

48 Arten von Befehlssatz-Architekturen
Akkumulatorarchitektur: ein Akkumulatorregister, das bei arithmetisch-logischen Befehlen immer implizit eine Quelle und das Ziel darstellt, so dass 1-Adress-Befehle genügen. Register-Speicher-Architektur: in arithmetisch-logischen Befehlen adressiert mindestens einer der Operanden ein Register bzw. einen Speicherplatz im Hauptspeicher. Lade-/Speicher­ oder Register-Register-Architektur: nur die Lade- und Speicherbefehle transportieren Daten zwischen dem Hauptspeicher (bzw. Cache-Speicher) und den Registern Kellerarchitekturen: nur Nulladressbefehle, Operandenregister werden als Keller (Stack) verwaltet.

49 Assembler Beispiele: Mikroprozessor 68HC11
Der 68HC11Micro-Controller von Motorola (1984) besitzt vier 8-Bit-Register und fünf 16-Bit-Register:

50 Assembler Beispiele: Mikroprozessor 68HC11
Schiebe- und Rotationsbefehle Logische Shifts LSRA (Akku nach rechts) LSLA (Akku nach links) Arithmetische Shifts (erhält Vorzeichen) ASRA (Akku nach rechts) ASLA (Akku nach links) Rotationen ROLA (Akku links rotieren) RORA (Akku rechts rotieren) Schieben: mit 0 auffüllen, Rotieren: erhält Bitmuster


Herunterladen ppt "Vertiefungsstoff zum Thema: Mikrocomputer"

Ähnliche Präsentationen


Google-Anzeigen