76
Universität Hamburg MIN-Fakultät Fachbereich Informatik 64-040 Rechnerstrukturen 64-040 Modul IP7: Rechnerstrukturen http://tams.informatik.uni-hamburg.de/ lectures/2012ws/vorlesung/rs – Kapitel 15 – Andreas Mäder Universität Hamburg Fakultät für Mathematik, Informatik und Naturwissenschaften Fachbereich Informatik Technische Aspekte Multimodaler Systeme Wintersemester 2012/2013 A. Mäder 1

64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

  • Upload
    haanh

  • View
    216

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

64-040 Rechnerstrukturen

64-040 Modul IP7: Rechnerstrukturenhttp://tams.informatik.uni-hamburg.de/

lectures/2012ws/vorlesung/rs

– Kapitel 15 –

Andreas Mäder

Universität HamburgFakultät für Mathematik, Informatik und NaturwissenschaftenFachbereich InformatikTechnische Aspekte Multimodaler Systeme

Wintersemester 2012/2013

A. Mäder 1

Page 2: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15 Instruction Set Architecture 64-040 Rechnerstrukturen

Kapitel 15Instruction Set Architecture

SpeicherorganisationBefehlssatzBefehlsformateAdressierungsartenIntel x86-ArchitekturLiteratur

A. Mäder 848

Page 3: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15 Instruction Set Architecture 64-040 Rechnerstrukturen

Befehlssatzarchitektur – ISA

ISA – Instruction Set Architecture⇒ alle für den Programmierer sichtbaren Attribute eines Rechners

I der (konzeptionellen) StrukturI Funktionseinheiten der Hardware:

Recheneinheiten, Speichereinheiten, Verbindungssysteme, . . .I des Verhaltens

I Organisation des programmierbaren SpeichersI Datentypen und Datenstrukturen: Codierungen und DarstellungenI BefehlssatzI BefehlsformateI Modelle für Befehls- und DatenzugriffeI Ausnahmebedingungen

A. Mäder 849

Page 4: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15 Instruction Set Architecture 64-040 Rechnerstrukturen

Befehlssatzarchitektur – ISA (cont.)I Befehlssatz: die zentrale Schnittstelle

software

hardware

instruction set

[PH12]

A. Mäder 850

Page 5: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15 Instruction Set Architecture 64-040 Rechnerstrukturen

Merkmale der Instruction Set Architecture

I Speichermodell Wortbreite, Adressierung, . . .

I Rechnerklasse Stack-/Akku-/RegistermaschineI Registersatz Anzahl und Art der Rechenregister

I Befehlssatz Definition aller BefehleI Art, Zahl der Operanden Anzahl/Wortbreite/Reg./SpeicherI Ausrichtung der Daten Alignment/Endianness

I Ein- und Ausgabe, Unterbrechungsstruktur (Interrupts)I Systemsoftware Loader, Assembler,

Compiler, DebuggerA. Mäder 851

Page 6: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15 Instruction Set Architecture 64-040 Rechnerstrukturen

Beispiele für charakteristische ISA

in dieser Vorlesung bzw. im Praktikum angesprochenI MIPS klassischer 32-bit RISCI D*CORE „Demo Rechner“, 16-bitI x86 CISC, Verwendung in PCs

I Assemblerprogrammierung, Kontrollstrukturen undDatenstrukturen werden am Beispiel der x86-Architekturvorgestellt

I viele weitere Architekturen (z.B. Mikrokontroller) werdenaus Zeitgründen nicht weiter behandelt

A. Mäder 852

Page 7: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15 Instruction Set Architecture 64-040 Rechnerstrukturen

Artenvielfalt vom „Embedded Architekturen“

< 512M1..64M

32 bit4..32 bit

DSP3 DSP

Prozessor 8 bit -

Speicher < 1K 1..64M

ASICs 1 uC 1 uC DSPs1 uP1 ASIC

32 bit 32 bit 8..64 bit

1 uP, 1 uP, ~ 100 uC,uP, DSP

< 64M

uP,ASIP

8..64M 1K..10M< 8K1K..1M

hochhochgeringgeringgeringgeringkeinemittelkeine

Echtzeit nein nein soft soft hard soft hard hardhard

Netzwerk - RS232 diverse GSM MIDIcardIO

Safety

V.90

ASIP

I2C,...

16..32 bit ..32 bit

CAN,...

I riesiges Spektrum: 4..64 bit Prozessoren, DSPs, digitale/analoge ASICs, . . .I Sensoren/Aktoren: Tasten, Displays, Druck, Temperatur, Antennen, CCD, . . .I Echtzeit-, Sicherheits-, Zuverlässigkeitsanforderungen

A. Mäder 853

Page 8: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.1 Instruction Set Architecture - Speicherorganisation 64-040 Rechnerstrukturen

Speicherorganisation

I Wortbreite, Größe / SpeicherkapazitätI „Big Endian“ / „Little Endian“I „Alignment“I „Memory-Map“I Beispiel: PC mit Windows

I spätere ThemenI Cache-Organisation für schnelleren ZugriffI Virtueller Speicher für MultitaskingI Synchronisation in Multiprozessorsystemen (MESI-Protokoll)

A. Mäder 854

Page 9: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.1 Instruction Set Architecture - Speicherorganisation 64-040 Rechnerstrukturen

Wortbreite

I Speicherwortbreiten historisch wichtiger Computer

[Tan09]

I heute dominieren 8/16/32/64-bit SystemeI erlaubt 8-bit ASCII, 16-bit Unicode, 32-/64-bit Floating-PointI Beispiel x86: „byte“, „word“, „double word“, „quad word“

A. Mäder 855

Page 10: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.1 Instruction Set Architecture - Speicherorganisation 64-040 Rechnerstrukturen

HauptspeicherorganisationDrei Organisationsformen eines 96-bit Speichers

[Tan09]

I diverse Varianten möglichI Speicherkapazität:

#Worte × #Bits/WortI meist Byte-adressiert

A. Mäder 856

Page 11: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.1 Instruction Set Architecture - Speicherorganisation 64-040 Rechnerstrukturen

Big- vs. Little Endian

[Tan09]

I Anordnung einzelner Bytes in einem Wort (hier 32 bit)I Big Endian (n . . . n + 3): MSB. . . LSB „String“-ReihenfolgeI Little Endian (n . . . n + 3): LSB . . .MSB „Zahlen“-Reihenfolge

I beide Varianten haben Vor- und NachteileI ggf. Umrechnung zwischen beiden Systemen notwendig→ siehe „8.6 Logische Operationen – Speicher-Organisation“

A. Mäder 857

Page 12: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.1 Instruction Set Architecture - Speicherorganisation 64-040 Rechnerstrukturen

„Misaligned“ Zugriff

[Tan09]

I Beispiel: 8-Byte-Wort in Little Endian Speicher(a) „aligned“ bezüglich Speicherwort(b) „nonaligned“ an Byte-Adresse 12

I Speicher wird (meistens) Byte-weise adressiertaber Zugriffe lesen/schreiben jeweils ein ganzes Wort

⇒ was passiert bei „krummen“ (misaligned) Adressen?I automatische Umsetzung auf mehrere Zugriffe (x86)I Programmabbruch (MIPS)

A. Mäder 858

Page 13: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.1 Instruction Set Architecture - Speicherorganisation 64-040 Rechnerstrukturen

Memory Map

I CPU kann im Prinzip alle möglichen Adressen ansprechenI in der Regel: kein voll ausgebauter Speicher

32 bit Adresse entsprechen 4GiB Hauptspeicher, 64 bit . . .

I Aufteilung in RAM und ROM-BereicheI ROM mindestens zum Booten notwendigI zusätzliche Speicherbereiche für „memory mapped“ I/O

⇒ „Memory Map“I AdressdecoderI HardwareeinheitI Zuordnung von Adressen zu „realem“ Speicher

A. Mäder 859

Page 14: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.1 Instruction Set Architecture - Speicherorganisation 64-040 Rechnerstrukturen

Memory Map: typ. 16-bit System

I 16-bit erlaubt 64K Adressen: 0x0000. . . 0xFFFF

I ROM-Bereich für Boot / BetriebssystemkernI RAM-Bereich für HauptspeicherI RAM-Bereich für Interrupt-Tabelle

I I/O-Bereiche für serielle / parallel SchnittstellenI I/O-Bereiche für weitere Schnittstellen

Demo und Beispiele: im RS-Praktikum (64-042)

A. Mäder 860

Page 15: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.1 Instruction Set Architecture - Speicherorganisation 64-040 Rechnerstrukturen

Memory Map: Windows 9x

1 MB inklusive "8086 A20 bug": real mode Bereich

4 MB

gemeinsamgenutzt für

Anwendungen

knapp 2 GB

1 GB

1 GB

AnwendungenAndreßbereich

privater

genutztergemeinsam

Systembereich

C0000000h

80000000h

00400000h

FFFFFFFFh

0010FFF0h00000000h

V86 Bereich

ungenutzt

I DOS-Bereich immer nochfür Boot / Geräte (VGA)reserviert

I Kernel, Treiber, usw. imoberen 1GiB-Bereich

I 2GiB für Anwendungen

A. Mäder 861

Page 16: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.1 Instruction Set Architecture - Speicherorganisation 64-040 Rechnerstrukturen

Memory Map: Windows 9x (cont.)

I 32-bit Adressen, 4 GiByte AdressraumI Aufteilung 2GiB für Programme, obere 1+1GiB für WindowsI Beispiel der Zuordnung, diverse Bereiche für I/O reserviert

A. Mäder 862

Page 17: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.1 Instruction Set Architecture - Speicherorganisation 64-040 Rechnerstrukturen

Memory Map: Windows 9x (cont.)

I/O-Speicherbereiche

I x86 I/O-Adressraum gesamt nur 64 KiByteI je nach Zahl der I/O-Geräte evtl. fast voll ausgenutztI Adressen vom BIOS zugeteilt

A. Mäder 863

Page 18: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.1 Instruction Set Architecture - Speicherorganisation 64-040 Rechnerstrukturen

Speicherhierarchie

Registers

On-chip L1 cache (SRAM)

Main memory (DRAM)

Local secondary storage (local disks)

Larger, slower and cheaper (per byte) storage devices

Remote secondary storage (distributed file systems, Web servers)

Local disks hold files retrieved from disks on remote network servers.

Main memory holds disk blocks retrieved from local disks.

Off-chip L2 cache (SRAM)

L1 cache holds cache lines retrieved from the L2 cache memory.

CPU registers hold words retrieved from L1 cache.

L2 cache holds cache lines retrieved from main memory.

L0:

L1:

L2:

L3:

L4:

L5:

Smaller, faster, and costlier (per byte) storage devices

[BO11]

später mehr. . .A. Mäder 864

Page 19: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.1 Instruction Set Architecture - Speicherorganisation 64-040 Rechnerstrukturen

Cache-Speicher

Mainmemory

(DRAM)

Memorybridge

Bus interfaceL2 cache

(SRAM)

ALU

Register file

CPU chip

Cache bus System bus Memory bus

L1

cache

(SRAM)

[BO11]

I Cache StrategienI Welche Daten sollen in Cache?I Welche werden aus Cache entfernt?

I Cache Abbildung: direct-mapped, n-fach assoz., voll assoziativI Cache Organisation: Größe, Wortbreite, etc.

A. Mäder 865

Page 20: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.1 Instruction Set Architecture - Speicherorganisation 64-040 Rechnerstrukturen

Speicher ist wichtig!

I Speicher ist nicht unbegrenztI muss zugeteilt und verwaltet werdenI viele Anwendungen werden vom Speicher dominiert

I Fehler, die auf Speicher verweisen, sind besonders gefährlichI Auswirkungen sind sowohl zeitlich als auch räumlich entfernt

I Speicherleistung ist nicht gleichbleibendWechselwirkungen: Speichersystem ⇔ ProgrammeI „Cache“- und „Virtual“-Memory Auswirkungen können

Performance/Programmleistung stark beeinflussenI Anpassung des Programms an das Speichersystem kann

Geschwindigkeit bedeutend verbessern

→ siehe „18 Speicherhierarchie“

A. Mäder 866

Page 21: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.2 Instruction Set Architecture - Befehlssatz 64-040 Rechnerstrukturen

ISA-Merkmale des Prozessors

I BefehlszyklusI BefehlsklassenI RegistermodellI n-Adress MaschineI Adressierungsarten

A. Mäder 867

Page 22: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.2 Instruction Set Architecture - Befehlssatz 64-040 Rechnerstrukturen

Befehlszyklus

I Prämisse: von-Neumann PrinzipI Daten und Befehle im gemeinsamen Hauptspeicher

I Abarbeitung des Befehlszyklus in EndlosschleifeI Programmzähler PC adressiert den SpeicherI gelesener Wert kommt in das Befehlsregister IRI Befehl decodierenI Befehl ausführenI nächsten Befehl auswählen

I minimal benötigte RegisterPC Program Counter Adresse des BefehlsIR Instruction Register aktueller Befehl

R0. . . R31 Registerbank Rechenregister (Operanden)

A. Mäder 868

Page 23: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.2 Instruction Set Architecture - Befehlssatz 64-040 Rechnerstrukturen

Instruction Fetch„Befehl holen“ Phase im Befehlszyklus

1. Programmzähler (PC) liefert Adresse für den Speicher2. Lesezugriff auf den Speicher3. Resultat wird im Befehlsregister (IR) abgelegt4. Programmzähler wird inkrementiert (ggf. auch später)

I Beispiel für 32 bit RISC mit 32 bit BefehlenI IR = MEM[PC]I PC = PC + 4

I bei CISC-Maschinen evtl. weitere Zugriffe notwendig,abhängig von der Art (und Länge) des Befehls

A. Mäder 869

Page 24: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.2 Instruction Set Architecture - Befehlssatz 64-040 Rechnerstrukturen

Instruction Decode„Befehl decodieren“ Phase im Befehlszyklus

B Befehl steht im Befehlsregister IR1. Decoder entschlüsselt Opcode und Operanden2. leitet Steuersignale an die Funktionseinheiten

Operand FetchI wird meist zu anderen Phasen hinzugezählt

RISC: Teil von Instruction DecodeCISC: –"– Instruction Execute

1. Operanden holen

A. Mäder 870

Page 25: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.2 Instruction Set Architecture - Befehlssatz 64-040 Rechnerstrukturen

Instruction Execute„Befehl ausführen“ Phase im Befehlszyklus

B Befehl steht im Befehlsregister IRB Decoder hat Opcode und Operanden entschlüsseltB Steuersignale liegen an Funktionseinheiten1. Ausführung des Befehls durch Aktivierung der

Funktionseinheiten2. ggf. Programmzähler setzen/inkrementieren

I Details abhängig von der Art des BefehlsI Ausführungszeit –"–I Realisierung

I fest verdrahtete HardwareI mikroprogrammiert

A. Mäder 871

Page 26: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.2 Instruction Set Architecture - Befehlssatz 64-040 Rechnerstrukturen

Welche Befehle braucht man?

Befehlsklassen BeispieleI arithmetische Operationen add, sub, inc, dec, mult, div

logische Operationen and, or, xorschiebe Operationen shl, sra, srl, ror

I Vergleichsoperationen cmpeq, cmpgt, cmpltI Datentransfers load, store, I/OI Programm-Kontrollfluss jump, jmpeq, branch, call, returnI Maschinensteuerung trap, halt, (interrupt)

A. Mäder 872

Page 27: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.2 Instruction Set Architecture - Befehlssatz 64-040 Rechnerstrukturen

CISC – Complex Instruction Set Computer

I Computer-Architekturen mit irregulärem, komplexemBefehlssatz

I typische MerkmaleI sehr viele Befehle, viele DatentypenI komplexe Befehlscodierung, Befehle variabler LängeI viele AdressierungsartenI Mischung von Register- und Speicheroperanden⇒ komplexe Befehle mit langer Ausführungszeit− Problem: Compiler benutzen solche Befehle gar nicht

I MotivationI aus der Zeit der ersten Großrechner, 60er JahreI Assemblerprogrammierung: Komplexität durch viele

(mächtige) Befehle umgehenI Beispiele: Intel 80x86, Motorola 68K, DEC Vax

A. Mäder 873

Page 28: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.2 Instruction Set Architecture - Befehlssatz 64-040 Rechnerstrukturen

RISC – Reduced Instruction Set Computer

I Oberbegriff für moderne Rechnerarchitekturen entwickelt abca. 1980 bei IBM, Stanford, Berkeley

I auch bekannt unter: „Regular Instruction Set Computer“I typische Merkmale

I reguläre Struktur, z.B. 32-bit Wortbreite, 32-bit BefehleI nur ein-Wort BefehleI alle Befehle in einem Taktschritt ausführbarI „Load-Store“ Architektur, keine SpeicheroperandenI viele universelle Register, keine SpezialregisterI optimierende Compiler statt Assemblerprogrammierung

I Beispiele: IBM 801, MIPS, SPARC, DEC Alpha, ARM→ Diskussion und Details später: „17 Computerarchitektur“

A. Mäder 874

Page 29: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.2 Instruction Set Architecture - Befehlssatz 64-040 Rechnerstrukturen

Befehls-Decodierung

B Befehlsregister IR enthält den aktuellen BefehlB z.B. einen 32-bit Wert

31 0

0 1 0 0 1 1 1 0 011 0 0 0 010 0000 00000011 1 1 1

Wie soll die Hardware diesen Wert interpretieren?I direkt in einer Tabelle nachschauen (Mikrocode-ROM)I Problem: Tabelle müsste 232 Einträge haben

⇒ Aufteilung in Felder: Opcode und Operanden⇒ Decodierung über mehrere, kleine Tabellen⇒ unterschiedliche Aufteilung für unterschiedliche Befehle:

BefehlsformateA. Mäder 875

Page 30: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.3 Instruction Set Architecture - Befehlsformate 64-040 Rechnerstrukturen

Befehlsformateunbenutzt

31 0

0 1 0 0 1 1 1 0 011 0 0 0 010 0000 00000011 1 1 1

ZielregisterImmediate-WertOpcode

I Befehlsformat: Aufteilung in mehrere FelderI Opcode eigentlicher BefehlI ALU-Operation add/sub/incr/shift/usw.I Register-Indizes Operanden / ResultatI Speicher-Adressen für SpeicherzugriffeI Immediate-Operanden Werte direkt im Befehl

I Lage und Anzahl der Felder abhängig vom BefehlssatzA. Mäder 876

Page 31: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.3 Instruction Set Architecture - Befehlsformate 64-040 Rechnerstrukturen

Befehlsformat: drei Beispielarchitekturen

I MIPS: Beispiel für 32-bit RISC ArchitekturenI alle Befehle mit 32-bit codiertI nur 3 Befehlsformate (R, I, J)

I D*CORE: Beispiel für 16-bit ArchitekturI siehe RS-Praktikum (64-042) für Details

I Intel x86: Beispiel für CISC-ArchitekturenI irreguläre Struktur, viele FormateI mehrere Codierungen für einen BefehlI 1-Byte. . . 36-Bytes pro Befehl

A. Mäder 877

Page 32: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.3 Instruction Set Architecture - Befehlsformate 64-040 Rechnerstrukturen

Befehlsformat: Beispiel MIPS

I festes BefehlsformatI alle Befehle sind 32 Bit lang

I Opcode-Feld ist immer 6-bit breitI codiert auch verschiedene Adressierungsmodi

wenige BefehlsformateI R-Format

I Register-Register ALU-OperationenI I-/J-Format

I Lade- und SpeicheroperationenI alle Operationen mit unmittelbaren OperandenI Jump-RegisterI Jump-and-Link-Register

A. Mäder 878

Page 33: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.3 Instruction Set Architecture - Befehlsformate 64-040 Rechnerstrukturen

MIPS: Übersicht„Microprocessor without Interlocked Pipeline Stages“

I entwickelt an der Univ. Stanford, seit 1982I Einsatz: eingebettete Systeme, SGI Workstations/Server

I klassische 32-bit RISC ArchitekturI 32-bit Wortbreite, 32-bit Speicher, 32-bit BefehleI 32 Register: R0 ist konstant Null, R1. . . R31 UniversalregisterI Load-Store Architektur, nur base+offset Adressierung

I sehr einfacher Befehlssatz, 3-Adress-BefehleI keinerlei HW-Unterstützung für „komplexe“ SW-KonstrukteI SW muss sogar HW-Konflikte („Hazards“) vermeidenI Koprozessor-Konzept zur Erweiterung

A. Mäder 879

Page 34: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.3 Instruction Set Architecture - Befehlsformate 64-040 Rechnerstrukturen

MIPS: Registermodell

I 32 Register, R0. . . R31, jeweils 32-bitI R1 bis R31 sind UniversalregisterI R0 ist konstant Null (ignoriert Schreiboperationen)

I R0 Tricks R5 = -R5 sub R5, R0, R5R4 = 0 add R4, R0, R0R3 = 17 addi R3, R0, 17if (R2 == 0) bne R2, R0, label

I keine separaten StatusflagsI Vergleichsoperationen setzen Zielregister auf 0 bzw. 1

R1 = (R2 < R3) slt R1, R2, R3

A. Mäder 880

Page 35: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.3 Instruction Set Architecture - Befehlsformate 64-040 Rechnerstrukturen

MIPS: Befehlssatz

I Übersicht und Details: [PH11, PH12]DavidA. Patterson, John L. Hennessy: Computer Organization andDesign – The Hardware/Software Interface

I dort auch hervorragende Erläuterung der Hardwarestruktur

I klassische fünf-stufige BefehlspipelineI Instruction-Fetch Befehl holenI Decode Decodieren und Operanden holenI Execute ALU-Operation oder AdressberechnungI Memory Speicher lesen oder schreibenI Write-Back Resultat in Register speichern

A. Mäder 881

Page 36: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.3 Instruction Set Architecture - Befehlsformate 64-040 Rechnerstrukturen

MIPS: Hardwarestruktur

Instruction memory

Address

4

32

0

Add Add result

Shift left 2

Inst

ruct

ion

IF/ID EX/MEM MEM/WB

M u x

0

1

Add

PC

0Write data

M u x

1Registers

Read data 1

Read data 2

Read register 1

Read register 2

16Sign

extend

Write register

Write data

Read data

1

ALU result

M u x

ALUZero

ID/EX

Data memory

Address

[PH12]

PC Register ALUs SpeicherI-Cache (R0 .. R31) D-Cache

A. Mäder 882

Page 37: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.3 Instruction Set Architecture - Befehlsformate 64-040 Rechnerstrukturen

MIPS: BefehlsformateBefehl im R-Format

rs rt rd funct

6 bits 5 bits 5 bits 5 bits 5 bits 6 bits

op shift

1111 1 0 0 0 0 00 0 0 0001 1 001000031

01 11 10 0 0

I op: Opcode Typ des Befehls 0=„alu-op“rs: source register 1 erster Operand 23=„r23“rt: source register 2 zweiter Operand 30=„r30“rd: destination register Zielregister 3=„r3“shift: shift amount (optionales Shiften) 0=„0“funct: ALU function Rechenoperation 34=„sub“

⇒ r3 = r23 - r30 sub r3, r23, r30

A. Mäder 883

Page 38: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.3 Instruction Set Architecture - Befehlsformate 64-040 Rechnerstrukturen

MIPS: BefehlsformateBefehl im I-Format

0 1031 0

0 0 0 0 000 00000

op

5 bits5 bits6 bits

rtrs

16 bits

address

1 1 1 10 0 00 0 00 11 0 0 0 1

I op: Opcode Typ des Befehls 35=„lw“rs: base register Basisadresse 8=„r8“rt: destination register Zielregister 5=„r5“addr: address offset Offset 6=„6“

⇒ r5 = MEM[r8+6] lw r5, 6(r8)

A. Mäder 884

Page 39: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.3 Instruction Set Architecture - Befehlsformate 64-040 Rechnerstrukturen

Befehlsformat: Beispiel M*CORE

I 32-bit RISC Architektur, Motorola 1998I besonders einfaches Programmiermodell

I Program Counter PCI 16 Universalregister R0. . . R15I Statusregister C („carry flag“)I 16-bit Befehle (um Programmspeicher zu sparen)

I VerwendungI häufig in Embedded-SystemsI „smart cards“

A. Mäder 885

Page 40: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.3 Instruction Set Architecture - Befehlsformate 64-040 Rechnerstrukturen

D*CORE

I ähnlich M*COREI gleiches Registermodell, aber nur 16-bit Wortbreite

I Program Counter PCI 16 Universalregister R0. . . R15I Statusregister C („carry flag“)

I Subset der Befehle, einfachere CodierungI vollständiger Hardwareaufbau in Hades verfügbar

I [Hen] Hades Webdemo: 60-dcore/t3/chapteroder Simulator mit Assembler (alt)I tams.informatik.uni-hamburg.de/publications/onlineDoc

(winT3asm.exe / t3asm.jar)

A. Mäder 886

Page 41: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.3 Instruction Set Architecture - Befehlsformate 64-040 Rechnerstrukturen

D*CORE: Registermodell

C

nOE

nWE

15 0

PC IR

MRR

MDR

MAR

(SP)

R15

015

R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0

(Link)

- 1 Carry-Flag

- 16 Universalregister- Programmzähler

- Bus-Interface

- Befehlsregister

I sichtbar für Programmierer: R0. . . R15, PC und CA. Mäder 887

Page 42: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.3 Instruction Set Architecture - Befehlsformate 64-040 Rechnerstrukturen

D*CORE: Befehlssatz

mov move registeraddu, addc Addition (ohne, mit Carry)subu Subtraktionand, or, xor logische Operationenlsl, lsr, asr logische, arithmetische Shiftscmpe, cmpne, ... Vergleichsoperationenmovi, addi, ... Operationen mit Immediate-Operandenldw, stw Speicherzugriffe, load/storebr, jmp unbedingte Sprüngebt, bf bedingte Sprüngejsr Unterprogrammaufruftrap Software interruptrfi return from interrupt

A. Mäder 888

Page 43: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.3 Instruction Set Architecture - Befehlsformate 64-040 Rechnerstrukturen

D*CORE: Befehlsformate

015

8 41215 0

015 12 48

015

12 8 415 0

RYoffset4

12-bit immediateOPC

RXRYsub-opcOPC

imm4OPC sub-opc RX

RXOPC

ALU

Branch

Load/Store

Immediate

IR

IR<11:0> IMM12

STW.XA

ALU.OPC

REG.RY

REG.RX

I 4-bit Opcode, 4-bit RegisteradressenI einfaches Zerlegen des Befehls in die einzelnen Felder

A. Mäder 889

Page 44: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.4 Instruction Set Architecture - Adressierungsarten 64-040 Rechnerstrukturen

Adressierungsarten

I Woher kommen die Operanden /Daten für die Befehle?I Hauptspeicher, Universalregister, Spezialregister

I Wie viele Operanden pro Befehl?I 0- / 1- / 2- / 3-Adress Maschinen

I Wie werden die Operanden adressiert?I immediate / direkt / indirekt / indiziert / autoinkrement / usw.

⇒ wichtige Unterscheidungsmerkmale für Rechnerarchitekturen

I Zugriff auf Hauptspeicher: ≈ 100× langsamer als RegisterzugriffI möglichst Register statt Hauptspeicher verwenden (!)I „load/store“-Architekturen

A. Mäder 890

Page 45: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.4 Instruction Set Architecture - Adressierungsarten 64-040 Rechnerstrukturen

Beispiel: Add-Befehl

B Rechner soll „rechnen“ könnenB typische arithmetische Operation nutzt 3 Variablen

Resultat, zwei Operanden: X = Y + Zadd r2, r4, r5 reg2 = reg4 + reg5

„addiere den Inhalt von R4 und R5und speichere das Resultat in R2“

I woher kommen die Operanden?I wo soll das Resultat hin?

I SpeicherI Register

I entsprechende Klassifikation der Architektur

A. Mäder 891

Page 46: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.4 Instruction Set Architecture - Adressierungsarten 64-040 Rechnerstrukturen

Beispiel: Datenpfad

I Register (-bank)I liefern OperandenI speichern Resultate

I interne HilfsregisterI ALU, typ. Funktionen:

I add, add-carry, subI and, or, xorI shift, rotateI compareI (floating point ops.)

[Tan09]

A. Mäder 892

Page 47: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.4 Instruction Set Architecture - Adressierungsarten 64-040 Rechnerstrukturen

Woher kommen die Operanden?

I typische ArchitekturI von-Neumann Prinzip: alle Daten im HauptspeicherI 3-Adress-Befehle: zwei Operanden, ein Resultat

⇒ „Multiport-Speicher“ mit drei Ports ?I sehr aufwendig, extrem teuer, trotzdem langsam

⇒ Register im Prozessor zur Zwischenspeicherung !I Datentransfer zwischen Speicher und Registern

Load reg=MEM[addr]Store MEM[addr]= reg

I RISC: Rechenbefehle arbeiten nur mit RegisternI CISC: gemischt, Operanden in Registern oder im Speicher

Regs

data3

data2

data1

addr3

addr2

addr1

Speicher

Speicher

A. Mäder 893

Page 48: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.4 Instruction Set Architecture - Adressierungsarten 64-040 Rechnerstrukturen

n-Adress Maschine n = {3 . . . 0}

3-Adress Format I X = Y + ZI sehr flexibel, leicht zu programmierenI Befehl muss 3 Adressen codieren

2-Adress Format I X = X + ZI eine Adresse doppelt verwendet:für Resultat und einen Operanden

I Format wird häufig verwendet1-Adress Format I ACC = ACC + Z

I alle Befehle nutzen das Akkumulator-RegisterI häufig in älteren / 8-bit Rechnern

0-Adress Format I TOS = TOS + NOSI Stapelspeicher: top of stack, next of stackI Adressverwaltung entfälltI im Compilerbau beliebt

A. Mäder 894

Page 49: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.4 Instruction Set Architecture - Adressierungsarten 64-040 Rechnerstrukturen

Beispiel: n-Adress Maschine

load D

1-Adress-Maschine

mul E

add C

stor Z

load A

sub B

div Z

stor Z

push E

0-Adress-Maschine

push D

mul

push B

div

pop Z

add

push A

sub

push C

sub Z, A, B

3-Adress-Maschine

mul T, D, E

add T, C, T

div Z, Z, T

mov Z, A

2-Adress-Maschine

sub Z, B

mov T, D

mul T, E

add T, C

div Z, T

TBeispiel: Z = (A-B) / (C + D*E) Hilfsregister:

A. Mäder 895

Page 50: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.4 Instruction Set Architecture - Adressierungsarten 64-040 Rechnerstrukturen

Beispiel: Stack-Maschine / 0-Adress Maschine

TOS NOS Stack

Beispiel: Z = (A-B) / (C + D*E)

pop Z

push A

push B

push C

push D

push E

div

sub

add

mul

E

ED

D*E

D*EC

C+D*E

C+D*E

C+D*E

B

BA

C+D*EA-B(A-B)/(C+D*E)

0-Adress-Maschine

A. Mäder 896

Page 51: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.4 Instruction Set Architecture - Adressierungsarten 64-040 Rechnerstrukturen

Adressierungsarten

I „immediate“I Operand steht direkt im BefehlI kein zusätzlicher SpeicherzugriffI aber Länge des Operanden beschränkt

I „direkt“I Adresse des Operanden steht im BefehlI keine zusätzliche AdressberechnungI ein zusätzlicher SpeicherzugriffI Adressbereich beschränkt

I „indirekt“I Adresse eines Pointers steht im BefehlI erster Speicherzugriff liest Wert des PointersI zweiter Speicherzugriff liefert OperandenI sehr flexibel (aber langsam)

A. Mäder 897

Page 52: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.4 Instruction Set Architecture - Adressierungsarten 64-040 Rechnerstrukturen

Adressierungsarten (cont.)I „register“

I wie Direktmodus, aber Register statt SpeicherI 32 Register: benötigen 5 bit im BefehlI genug Platz für 2- oder 3-Adress Formate

I „register-indirekt“I Befehl spezifiziert ein RegisterI mit der Speicheradresse des OperandenI ein zusätzlicher Speicherzugriff

I „indiziert“I Angabe mit Register und OffsetI Inhalt des Registers liefert BasisadresseI Speicherzugriff auf (Basisadresse+offset)I ideal für Array- und ObjektzugriffeI Hauptmodus in RISC-Rechnern (auch: „Versatz-Modus“)

A. Mäder 898

Page 53: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.4 Instruction Set Architecture - Adressierungsarten 64-040 Rechnerstrukturen

Immediate Adressierung

immediate32

unusedregsopcode

15 031

immediate16regsopcode

2-Wort Befehl

1-Wort Befehl

I Operand steht direkt im Befehl, kein zusätzlicherSpeicherzugriff

I Länge des Operanden < (Wortbreite - Opcodebreite)I Darstellung größerer Zahlenwerte

I 2-Wort Befehle (x86)zweites Wort für Immediate-Wert

I mehrere Befehle (MIPS, SPARC)z.B. obere/untere Hälfte eines Wortes

I Immediate-Werte mit zusätzlichem Shift (ARM)A. Mäder 899

Page 54: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.4 Instruction Set Architecture - Adressierungsarten 64-040 Rechnerstrukturen

Direkte Adressierung

addr 32

unusedregsopcode

15 031

Speicher

Registerbank

I Adresse des Operanden steht im BefehlI keine zusätzliche AdressberechnungI ein zusätzlicher Speicherzugriff: z.B. R3 = MEM[addr32]I Adressbereich beschränkt, oder 2-Wort Befehl (wie Immediate)

A. Mäder 900

Page 55: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.4 Instruction Set Architecture - Adressierungsarten 64-040 Rechnerstrukturen

Indirekte AdressierungRegisterbank

Speicher

addr 32

unusedregsopcode

15 031

1tmp

2

4

3

I Adresse eines Pointers steht im BefehlI keine zusätzliche AdressberechnungI zwei zusätzliche Speicherzugriffe:

z.B. tmp = MEM[addr32] R3 = MEM[tmp]I typische CISC-Adressierungsart, viele TaktzyklenI kommt bei RISC-Rechnern nicht vor

A. Mäder 901

Page 56: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.4 Instruction Set Architecture - Adressierungsarten 64-040 Rechnerstrukturen

Indizierte Adressierung

op rt rd ...rs

Register

RegisterWord

Memory

Indexaddressing

WordRegister

Memoryop rtrs Address1.

2.

Updateaddressing

I indizierte Adressierung, z.B. für ArrayzugriffeI addr = 〈Sourceregister〉 + 〈Basisregister〉I addr = 〈Sourceregister〉 + offset;

Sourceregister = addrA. Mäder 902

Page 57: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.4 Instruction Set Architecture - Adressierungsarten 64-040 Rechnerstrukturen

Beispiel: MIPS Adressierungsarten

PC & address

op rtrs Immediate immediate1. Immediate addressing

op rt rdrs ... functRegister

Registers

register

2. Register addressing

WordHalfwordByteRegister

op rtrs Address Memory

index + offset

3. Base addressing

WordPC

op rtrs Address Memory

PC + offset

4. PC-relative addressing

WordPC

op Address

(31..28)

Memory

&

5. Pseudodirect addressing

A. Mäder 903

Page 58: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.4 Instruction Set Architecture - Adressierungsarten 64-040 Rechnerstrukturen

typische Adressierungsarten

welche Adressierungsarten / Varianten sind üblich?I 0-Adress (Stack-) Maschine Java virtuelle MaschineI 1-Adress (Akkumulator) Maschine 8-bit Mikrokontroller

einige x86 BefehleI 2-Adress Maschine 16-bit Rechner

einige x86 BefehleI 3-Adress Maschine 32-bit RISC

I CISC Rechner unterstützen diverse AdressierungsartenI RISC meistens nur indiziert mit OffsetI siehe en.wikipedia.org/wiki/Addressing_mode

A. Mäder 904

Page 59: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.5 Instruction Set Architecture - Intel x86-Architektur 64-040 Rechnerstrukturen

Intel x86-Architektur

I übliche Bezeichnung für die Intel-ProzessorfamilieI von 8086, 80286, 80386, 80486, Pentium. . . Pentium-IV,

Core 2, Core-i. . .I eigentlich „IA-32“ (Intel architecture, 32-bit). . . „IA-64“

I irreguläre Struktur: CISCI historisch gewachsen: diverse Erweiterungen (MMX, SSE, . . . )I Abwärtskompatibilität: IA-64 mit IA-32 EmulationI ab 386 auch wie reguläre 8-Register Maschine verwendbar

Hinweis: niemand erwartet, dass Sie sich alle Details merken

A. Mäder 905

Page 60: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.5 Instruction Set Architecture - Intel x86-Architektur 64-040 Rechnerstrukturen

Intel x86: EvolutionChip Datum MHz Transistoren Speicher Anmerkungen4004 4/1971 0,108 2 300 640 erster Mikroprozessor auf einem Chip8008 4/1972 0,108 3 500 16KiB erster 8-bit Mikroprozessor8080 4/1974 2 6 000 64KiB „general-purpose“ CPU auf einem Chip8086 6/1978 5–10 29 000 1MiB erste 16-bit CPU auf einem Chip8088 6/1979 5–8 29 000 1MiB Einsatz im IBM-PC80286 2/1982 8–12 134 000 16MiB „Protected-Mode“80386 10/1985 16–33 275 000 4GiB erste 32-Bit CPU80486 4/1989 25-100 1,2M 4GiB integrierter 8K CachePentium 3/1993 60–233 3,1M 4GiB zwei Pipelines, später MMXPentium Pro 3/1995 150–200 5,5M 4GiB integrierter first und second-level CachePentium II 5/1997 233–400 7,5M 4GiB Pentium Pro plus MMXPentium III 2/1999 450–1 400 9,5–44M 4GiB SSE-EinheitPentium IV 11/2000 1 300–3 600 42–188M 4GiB HyperthreadingCore-2 5/2007 1 600–3 200 143–410M 4GiB 64-bit Architektur, MehrkernprozessorenCore-i. . . 11/2008 2,500–3,600 > 700M 64GiB Taktanpassung (Turbo Boost). . .

A. Mäder 906

Page 61: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.5 Instruction Set Architecture - Intel x86-Architektur 64-040 Rechnerstrukturen

Beispiel: Core i7-960 Prozessor

Taktfrequenz bis 3,46 GHzAnzahl der Cores 4 (× 2 Hyperthreading)QPI Durchsatz 4,8 GT/s(quick path interconnect)

Bus Interface 64 BitsL1 Cache 4× 32 kB I + 32kBDL2 Cache 4× 256 kB (I+D)L3 Cache 8192 kB (I+D)Prozess 45 nmVersorgungsspannung 0,8 - 1,375VWärmeabgabe ∼ 130WPerformance (SPECint 2006) ∼ 38Quellen: ark.intel.com, www.spec.org

A. Mäder 907

Page 62: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.5 Instruction Set Architecture - Intel x86-Architektur 64-040 Rechnerstrukturen

x86: Speichermodell

Byte 0Byte 1Byte 2Byte 3

07831 23 15Bit-Offset

0

4

8

12

16

20

24

28

kleinste Adresse

Byte-Offset

I „little endian“: LSB eines Wortes bei der kleinsten Adresse

A. Mäder 908

Page 63: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.5 Instruction Set Architecture - Intel x86-Architektur 64-040 Rechnerstrukturen

x86: Speichermodell (cont.)I Speicher voll byte-adressierbarI misaligned Zugriffe langsam

I Beispiel

EH

DH7AH

CHFEH

BH06H

AH36H

9H1FH

8HA4H

7H23H

6H0BH

5H

4H

3H74H

2HCBH

1H31H

0H

Quadword at Address 6HContains 7AFE06361FA4230BH

Doubleword at Address AHContains 7AFE0636H

Word at Address BHContains FE06H

Byte at Address 9HContains 1FH

Word at Address 6HContains 230BH

Word at Address 1HContains CB31H

Word at Address 2HContains 74CBH

A. Mäder 909

Page 64: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.5 Instruction Set Architecture - Intel x86-Architektur 64-040 Rechnerstrukturen

x86: Register

79 0

31 15 0

Exx ab 386

8086

PC

EFLAGS

IPEIP FP Status

FPR0

FPR7GS

FS

extra data segment

data segment

stack segment

code segment

ES

DS

SS

CS

SI

DIEDI

ESI

SP

BPEBP

ESP

EBX

EDX

ECX

EAX

BH BL

DLDH

BX

DX

CX

AX

CLCH

ALAH accumulator

count: String, Loop

data, multiply/divide

base addr

stackptr

index, string src

base of stack segment

index, string dst

statusA. Mäder 910

Page 65: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.5 Instruction Set Architecture - Intel x86-Architektur 64-040 Rechnerstrukturen

x86: EFLAGS Register

[IA64]

31 2930 28 27 26 25 24 23 22 21 20 19 18 17 16

0RF

ID

AC

VM

X Virtual-8086 Mode (VM)X Resume Flag (RF)X Nested Task (NT)X I/O Privilege Level (IOPL)S Overflow Flag (OF)C Direction Flag (DF)X Interrupt Enable Flag (IF)

X Alignment Check (AC)

X ID Flag (ID)X Virtual Interrupt Pending (VIP)

15 1314 12 11 10 9 8 7 6 5 4 3 2 1 0

0CF

AF

PF 1

DF

IF

TF

SF

ZF

NT 000 0 0 0 0 0 0 0 0

VIP

VIF

OF

IOPL

X Virtual Interrupt Flag (VIF)

X Trap Flag (TF)S Sign Flag (SF)S Zero Flag (ZF)S Auxiliary Carry Flag (AF)S Parity Flag (PF)S Carry Flag (CF)

S Indicates a Status FlagC Indicates a Control FlagX Indicates a System Flag

Reserved bit positions. DO NOT USE.Always set to values previously read.

A. Mäder 911

Page 66: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.5 Instruction Set Architecture - Intel x86-Architektur 64-040 Rechnerstrukturen

x86: Datentypen

31

15

63

(two digits per byte, multiple bytes)(one digit per byte, multiple bytes)

float / double / extended

byte stringbit stringbit fieldfar pointernear pointer

BCDordinalinteger

packed BCD

quadworddoublewordwordbytes

(16 bit segment + 32 bit offset)(32 bit offset)

(unsigned b/w/dw/qw)(2-complement b/w/dw/qw)

b b

b

2**32 -1 bytes

2**32-1 bits

6379 32 31 0

lowhigh

low wordhigh word

low doublewordhigh doubleword

NN+1N+2N+3N+4Adressen:

A. Mäder 912

Page 67: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.5 Instruction Set Architecture - Intel x86-Architektur 64-040 Rechnerstrukturen

x86: Befehlssatz

Datenzugriff mov, xchg

Stack-Befehle push, pusha, pop, popa

Typumwandlung cwd, cdq, cbw (byte→word), movsx,. . .Binärarithmetik add, adc, inc, sub, sbb, dec, cmp, neg,. . .

mul, imul, div, idiv,. . .Dezimalarithmetik (packed/unpacked BCD) daa, das, aaa,. . .Logikoperationen and, or, xor, not, sal, shr, shr,. . .Sprungbefehle jmp, call, ret, int, iret, loop, loopne,. . .String-Operationen ovs, cmps, scas, load, stos,. . .„high-level“ enter (create stack frame),. . .diverses lahf (load AH from flags),. . .Segment-Register far call, far ret, lds (load data pointer)

I CISC: zusätzlich diverse Ausnahmen/SpezialfälleA. Mäder 913

Page 68: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.5 Instruction Set Architecture - Intel x86-Architektur 64-040 Rechnerstrukturen

x86: Befehlsformate

I außergewöhnlich komplexes Befehlsformat1. prefix repeat / segment override / etc.2. opcode eigentlicher Befehl3. register specifier Ziel / Quellregister4. address mode specifier diverse Varianten5. scale-index-base Speicheradressierung6. displacement Offset7. immediate operand

I außer dem Opcode alle Bestandteile optionalI unterschiedliche Länge der Befehle, von 1. . . 36Bytes⇒ extrem aufwendige Decodierung⇒ CISC – Complex Instruction Set Computer

A. Mäder 914

Page 69: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.5 Instruction Set Architecture - Intel x86-Architektur 64-040 Rechnerstrukturen

x86: Befehlsformat-Modifier („prefix“)

I alle Befehle können mit Modifiern ergänzt werden

segment override Adresse aus angewähltem Segmentregisteraddress size Umschaltung 16/32-bit Adresseoperand size Umschaltung 16/32-bit Operanden

repeat Stringoperationen: für alle Elementelock Speicherschutz bei Multiprozessorsystemen

A. Mäder 915

Page 70: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.5 Instruction Set Architecture - Intel x86-Architektur 64-040 Rechnerstrukturen

x86 Befehlscodierung: Beispiele

JE

JE EIP + displacement

Offset

CALL

MOV EBX, [EDI + 45]

PUSH

PUSH ESI

ADD w

ADD EAX, #6765

Reg

4 4 8

6

8 32

5 3

4 13 32

Immediate

Condition

MOV

1

w

1

d

8 8

TEST EDX, #42

7 1 8 32

TEST Postbyte Immediatew

Reg

f.

e.

d.

c.

b.

a.

CALL

Displacementr-m

postbyte

Displacement [PH12]

I 1Byte. . . 36BytesI vollkommen irregulärI w: Auswahl 16/32 bit

A. Mäder 916

Page 71: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.5 Instruction Set Architecture - Intel x86-Architektur 64-040 Rechnerstrukturen

x86 Befehlscodierung: Beispiele (cont.)

JE name

JMP name

CALL name

MOVW EBX,[EDI + 45]

PUSH ESI

POP EDI

ADD EAX,#6765

TEST EDX,#42

MOVSL

If equal (CC) EIP= name}; EIP–128 ≤ name < EIP + 128

{EIP = NAME};

SP = SP – 4; M[SP] = EIP + 5; EIP = name;

EBX = M [EDI + 45]

SP = SP – 4; M[SP] = ESI

EDI = M[SP]; SP = SP + 4

EAX = EAX + 6765

Set condition codea (flags) with EDX & 42

M[EDI] = M[ESI]; EDI = EDI + 4; ESI = ESI + 4

FunctionInstruction

[PH12]A. Mäder 917

Page 72: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.5 Instruction Set Architecture - Intel x86-Architektur 64-040 Rechnerstrukturen

x86: Assembler-Beispiel print(. . . )addr opcode assembler c quellcode-------------------------------------------------------------------------------

.file "hello.c"

.text0000 48656C6C .string "Hello x86!\\n"

6F20783836210A00

.textprint:

0000 55 pushl %ebp | void print( char* s ) {0001 89E5 movl %esp,%ebp0003 53 pushl %ebx0004 8B5D08 movl 8(%ebp),%ebx0007 803B00 cmpb $0,(%ebx) | while( *s != 0 ) {000a 7418 je .L18

.align 4.L19:

000c A100000000 movl stdout ,%eax | putc( *s, stdout );0011 50 pushl %eax0012 0FBE03 movsbl (%ebx),%eax0015 50 pushl %eax0016 E8FCFFFF call _IO_putc

FF001b 43 incl %ebx | s++;001c 83C408 addl $8,%esp | }001f 803B00 cmpb $0,(%ebx)0022 75E8 jne .L19

.L18:0024 8B5DFC movl -4(%ebp),%ebx | }0027 89EC movl %ebp,%esp0029 5D popl %ebp002a C3 ret

A. Mäder 918

Page 73: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.5 Instruction Set Architecture - Intel x86-Architektur 64-040 Rechnerstrukturen

x86: Assembler-Beispiel main(. . . )addr opcode assembler c quellcode-------------------------------------------------------------------------------

.Lfe1:

.Lscope0:002b 908D7426 .align 16

00main:

0030 55 pushl %ebp | int main( int argc, char** argv ) {0031 89E5 movl %esp,%ebp0033 53 pushl %ebx

0034 BB00000000 movl $.LC0,%ebx | print( "Hello x86!\\n" );0039 803D0000 cmpb $0,.LC0

0000000040 741A je .L260042 89F6 .align 4

.L24:0044 A100000000 movl stdout ,%eax0049 50 pushl %eax004a 0FBE03 movsbl (%ebx),%eax004d 50 pushl %eax004e E8FCFFFFFF call _IO_putc0053 43 incl %ebx0054 83C408 addl $8,%esp0057 803B00 cmpb $0,(%ebx)005a 75E8 jne .L24

.L26:005c 31C0 xorl %eax,%eax | return 0;005e 8B5DFC movl -4(%ebp),%ebx | }0061 89EC movl %ebp,%esp0063 5D popl %ebp0064 C3 ret

A. Mäder 919

Page 74: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.6 Instruction Set Architecture - Literatur 64-040 Rechnerstrukturen

Literatur

[BO11] R.E. Bryant, D.R. O’Hallaron:Computer systems – A programmers perspective.2nd edition, Pearson, 2011. ISBN 0–13–713336–7Grafiken z.T. aus: Foliensatz

[Tan06] A.S. Tanenbaum: Computerarchitektur – Strukturen,Konzepte, Grundlagen. 5. Auflage, Pearson Studium, 2006.ISBN 3–8273–7151–1

[Tan09] A.S. Tanenbaum: Structured Computer Organization.5th rev. edition, Pearson International, 2009.ISBN 0–13–509405–4

A. Mäder 920

Page 75: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.6 Instruction Set Architecture - Literatur 64-040 Rechnerstrukturen

Literatur (cont.)

[PH11] D.A. Patterson, J.L. Hennessy: Rechnerorganisation und-entwurf – Die Hardware/Software-Schnittstelle.4. Auflage, Oldenbourg Verlag, 2011.ISBN 978–3–486–58190–3

[PH12] D.A. Patterson, J.L. Hennessy: Computer Organizationand Design – The Hardware/Software Interface.4th rev. edition, Morgan Kaufmann Publishers, 2012.ISBN 978–0–12–374750–1Grafiken z.T. aus: Foliensatz

A. Mäder 921

Page 76: 64-040- Modul IP7: Rechnerstrukturen · UniversitätHamburg MIN-Fakultät FachbereichInformatik 15InstructionSetArchitecture 64-040Rechnerstrukturen Artenvielfaltvom„EmbeddedArchitekturen“

Universität Hamburg

MIN-FakultätFachbereich Informatik

15.6 Instruction Set Architecture - Literatur 64-040 Rechnerstrukturen

Literatur (cont.)

[Hen] N. Hendrich: HADES — HAmburg DEsign System.Universität Hamburg, FB Informatik, Lehrmaterial.tams.informatik.uni-hamburg.de/applets/hades

[IA64] Intel 64 and IA-32 Architectures Software Developer’sManual – Volume 1: Basic Architecture.Intel Corp.; Santa Clara, CA.www.intel.com

A. Mäder 922