# 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)