diff --git a/Writerside/images/image_495.png b/Writerside/images/image_495.png new file mode 100644 index 0000000..ef72123 Binary files /dev/null and b/Writerside/images/image_495.png differ diff --git a/Writerside/images/image_496.png b/Writerside/images/image_496.png new file mode 100644 index 0000000..ef72123 Binary files /dev/null and b/Writerside/images/image_496.png differ diff --git a/Writerside/images/image_497.png b/Writerside/images/image_497.png new file mode 100644 index 0000000..c03b734 Binary files /dev/null and b/Writerside/images/image_497.png differ diff --git a/Writerside/images/image_498.png b/Writerside/images/image_498.png new file mode 100644 index 0000000..9663402 Binary files /dev/null and b/Writerside/images/image_498.png differ diff --git a/Writerside/images/image_499.png b/Writerside/images/image_499.png new file mode 100644 index 0000000..3c5f6b7 Binary files /dev/null and b/Writerside/images/image_499.png differ diff --git a/Writerside/images/image_500.png b/Writerside/images/image_500.png new file mode 100644 index 0000000..d692e32 Binary files /dev/null and b/Writerside/images/image_500.png differ diff --git a/Writerside/images/image_501.png b/Writerside/images/image_501.png new file mode 100644 index 0000000..1061d22 Binary files /dev/null and b/Writerside/images/image_501.png differ diff --git a/Writerside/in.tree b/Writerside/in.tree index e5bbe23..40040c7 100644 --- a/Writerside/in.tree +++ b/Writerside/in.tree @@ -66,6 +66,10 @@ + + + + diff --git a/Writerside/topics/RA/Rechnersysteme_Intro.md b/Writerside/topics/RA/Rechnersysteme_Intro.md new file mode 100644 index 0000000..50747e7 --- /dev/null +++ b/Writerside/topics/RA/Rechnersysteme_Intro.md @@ -0,0 +1,96 @@ +# Rechnersysteme Intro +## Rechnerarchitektur +![image_495.png](image_495.png) +- **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 + +## Entwicklung von Mikroprozessoren +### Einfache In-Order-CPU mit kurzer Pipeline +![image_496.png](image_496.png) +- Grundprinzipien: + - Minimaler Hardware-Aufwand + - Höhere Dichte + - Höhere Frequenz + +### Out-of-Order superskalare CPU mit vielfältigen Optimierungen +![image_497.png](image_497.png) +- Grundprinzipien: + - Pipelining (Fließband) + - Parallelisierung + - Prinzip der Lokalität + +### Erhöhung der Performance durch Superskalarität +![image_498.png](image_498.png) + + +## Speicherhierarchie +![image_499.png](image_499.png) +### 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 + - ![image_500.png](image_500.png) + + +### Performance-Vergleich & Speedup +- Vergleich + - $\frac{performance_A}{performance_B}=\frac{t_{cpuA}}{t_{cpu_B}}$ +- Speedup + - $\frac{t_{cpuOrig}}{t_{cpuEnhanced}} + +#### Speedup durch Multicore +![image_501.png](image_501.png) +