.idea
Writerside
cfg
images
topics
02
BS
OOAD
RA
ARM_Befehlsübersicht.md
Caches.md
Historie.md
Klassifikation.md
MU0Rechner.md
MU1Rechner.md
MU2-3Rechner.md
MU4-5Rechner.md
MU6Rechner.md
MU7Rechner.md
Multicore.md
Prozessorkonzepte.md
Rechnersysteme_Intro.md
arm.md
arm_adressierung.md
arm_befehle.md
arm_hochsprache_strukturen.md
arm_hochsprache_typen.md
arm_toolchain.md
armref.md
04
06
StartPage.md
c.list
in.tree
v.list
writerside.cfg
.gitlab-ci.yml
README.md
2.3 KiB
2.3 KiB
Rechnersysteme Intro
Rechnerarchitektur
- Interne Funktionsweise
- Architektur eines Rechners
- Design von Maschinenbefehlen → ISA
- Programmierung in Maschinensprache
- Befehle
- arithmetic / logic
- Vergleich
- Flags
- Bedingungen
- Sprünge
- Speicherzugriff über Adressen
- Verwendung eines Compilers
- Umsetzung von Hochsprachenkonstrukten in Assembler
- Befehle
Entwicklung von Mikroprozessoren
Einfache In-Order-CPU mit kurzer Pipeline
- Grundprinzipien:
- Minimaler Hardware-Aufwand
- Höhere Dichte
- Höhere Frequenz
Out-of-Order superskalare CPU mit vielfältigen Optimierungen
- Grundprinzipien:
- Pipelining (Fließband)
- Parallelisierung
- Prinzip der Lokalität
Erhöhung der Performance durch Superskalarität
Speicherhierarchie
Prinzip der Lokalität
Temporäre Lokalität
- Tendenz zur Wiederverwendung zuvor genutzter Datenelemente
- bspw. Instruktionen einer Schleife
Räumliche Lokalität
- Tendenz auf Datenelemente zuzugreifen, die in der Nähe von bereits Zugegriffenen liegen
- bspw. sequenzielle Instruktionen, Felder
Cache
- Pufferspeicher, die Lokalität ausnutzen
- zeitlich/räumlich lokale Daten werden im SRAM vorgehalten
Performance
- Zielsetzung
- Architekturvergleich von CPU & Speicherarchitektur
- Identifikation ovn Einflussfaktoren auf Performance
IPC = instructions per cycle
- Durchsatz
- Arbeitsmenge pro Zeiteinheit
CPI = cycles per instructions = 1/IPC
- Latenz
- Zeit pro Befehl
CPU-Zeit = Rechenzeit für n Instruktionen (messbar)
t_{cycle} = frac{1}{f}
t_{CPU} = n_{instr} * t_{instr}
= n_{instr} * CPI * t_{cycle}
= \frac{n_{instr}*t_{cycle}}{IPC}
IPC = \frac{n_{instr}}{f*t_{CPU}}
Einfluss von Unterbrechungen
- Idealsituation:
CPI = IPC = 1
- Einzelne Pipeline
- Keine Hazards
- Speicherzugriff: Hit im 1st Level Cache
- Tatsächliche Situation
Performance-Vergleich & Speedup
- Vergleich
\frac{performance_A}{performance_B}=\frac{t_{cpuA}}{t_{cpu_B}}
- Speedup
- $\frac{t_{cpuOrig}}{t_{cpuEnhanced}}