- Lernen
- Informatik & Informationswissenschaften
- Informatik
- Rechnerarchitektur – Prozessoren, Speicher und RISC-V
- Abstraktion und Rechenleistung
Abstraktion und Rechenleistung
MittelEinheit 1 von 6 in Kurs: Rechnerarchitektur – Prozessoren, Speicher und RISC-V
Was du lernst
- Erkläre, wie Abstraktionsschichten eine Anwendung mit den Transistoren verbinden, die sie ausführen, verfolge eine Anweisung vom Hochsprachencode bis zu den Maschinenbefehlen und erkenne die Befehlssatzarchitektur als Vertrag zwischen Software und Hardware.
- Verfolge die Abstraktionsschichten von Anwendungen bis zu TransistorenBenenne die Schichten eines Rechnersystems, gib an, was jede bereitstellt und verbirgt, und erkläre, warum Abstraktion den Entwurf komplexer Systeme ermöglicht.
- Verfolge ein Programm vom Hochsprachencode bis zu den MaschinenbefehlenBeschreibe, wie Compiler, Assembler, Linker und Lader aus einem Hochsprachenprogramm binäre Maschinenbefehle machen, und verfolge eine Anweisung bis zu ihrem Bitmuster.
- Erkläre die Befehlssatzarchitektur als Hardware-Software-SchnittstelleUnterscheide ISA, Binärschnittstelle und Implementierung und erkläre, warum eine ISA viele Implementierungen mit unterschiedlicher Rechenleistung haben kann.
- Verfolge die Abstraktionsschichten von Anwendungen bis zu Transistoren
- Definiere Rechenleistung anhand von Ausführungszeit und Durchsatz, vergleiche zwei Rechner korrekt und miss die für ein Programm wichtigen Zeiten.
- Vergleiche Rechner anhand von Antwortzeit und DurchsatzDefiniere Antwortzeit und Durchsatz, drücke Rechenleistung als Kehrwert der Ausführungszeit aus und gib korrekt an, um welchen Faktor ein Rechner schneller als ein anderer ist.
- Miss Gesamtlaufzeit, CPU-Zeit und TaktzyklenUnterscheide Gesamtlaufzeit und CPU-Zeit, interpretiere Zeitmessungen und rechne mit den richtigen Einheiten zwischen Taktperiode und Taktfrequenz um.
- Vergleiche Rechner anhand von Antwortzeit und Durchsatz
- Stelle den Zusammenhang zwischen CPU-Zeit, Befehlsanzahl, Taktzyklen pro Befehl und Taktfrequenz her, berechne jede dieser Größen aus den anderen und beurteile, welche Entwurfsentscheidungen und Aussagen zur Rechenleistung die Ausführungszeit tatsächlich beeinflussen.
- Stelle den Zusammenhang zwischen CPU-Zeit, Taktzyklen und Taktfrequenz herBerechne die CPU-Zeit aus Taktzyklen und Taktfrequenz und löse Entwurfsaufgaben, bei denen ein schnellerer Takt zusätzliche Zyklen kostet.
- Berechne den CPI-Wert aus einem BefehlsmixDefiniere die Taktzyklen pro Befehl, berechne den durchschnittlichen CPI-Wert als gewichtetes arithmetisches Mittel über Befehlsklassen und vergleiche damit Befehlsfolgen.
- Wende die klassische CPU-Leistungsgleichung anBerechne und vergleiche Ausführungszeiten mit CPU-Zeit = Befehlsanzahl × CPI × Taktperiode und bestimme, welche Faktoren durch Algorithmus, Sprache, Compiler, ISA, Organisation und Technologie beeinflusst werden.
- Beurteile Aussagen zur Rechenleistung und zusammengefasste Benchmark-ErgebnisseErkläre, warum MIPS und Taktfrequenz täuschen, wie Benchmark-Suites wie SPEC CPU Ergebnisse als Verhältniszahlen angeben und warum das geometrische Mittel für ihre Zusammenfassung verwendet wird.
- Stelle den Zusammenhang zwischen CPU-Zeit, Taktzyklen und Taktfrequenz her
- Berechne den Gesamt-Speedup, wenn nur ein Teil eines Programms schneller wird, bestimme die Schranke dieses Speedups und wende dieselbe Überlegung auf Programme an, die auf vielen Prozessorkernen laufen.
- Berechne den Gesamt-Speedup durch eine VerbesserungWende das amdahlsche Gesetz auf eine teilweise Verbesserung an, bestimme die für einen angestrebten Speedup nötige Verbesserung und erkenne, wann ein Ziel unmöglich ist.
- Untersuche mit dem amdahlschen Gesetz den Speedup von MehrkernprozessorenBerechne den Speedup und die Effizienz eines teilweise parallelen Programms auf vielen Kernen, erkläre, warum reale Speedups niedriger ausfallen, und stelle Probleme mit fester und wachsender Größe gegenüber.
- Berechne den Gesamt-Speedup durch eine Verbesserung
- Berechne, wie Spannung, Frequenz und Kapazität die Leistungsaufnahme und den Energieverbrauch eines Chips bestimmen, erkläre, warum die steigende Leistungsaufnahme die Ära immer schnellerer Einzelkerne beendete, und erkläre, warum Prozessoren mehrere Kerne erhielten und welche Anforderungen sich daraus an die Software ergeben.
- Berechne die dynamische Leistungsaufnahme und den dynamischen Energieverbrauch von CMOS-ChipsNutze die Zusammenhänge zwischen Kapazität, Spannung, Frequenz, Leistungsaufnahme und Energie, um die Wirkung von Entwurfsänderungen abzuschätzen, und unterscheide dynamische und statische Leistungsaufnahme.
- Erkläre die Power Wall und das Ende der Dennard-SkalierungBeschreibe, wie kleinere Transistoren einst höhere Taktfrequenzen bei konstanter Leistungsdichte ermöglichten und warum Leckströme und die Spannungsgrenze den Anstieg der Taktfrequenzen nach Mitte der 2000er-Jahre stoppten.
- Erkläre, warum Prozessoren mehrere Kerne erhielten und welche Anforderungen sich daraus an die Software ergebenZeige anhand der Leistungsgleichung, warum mehrere langsamere Kerne einen schnellen Kern übertreffen können, und erkläre, warum die Beschleunigung durch Mehrkernprozessoren von paralleler Software abhängt.
- Berechne die dynamische Leistungsaufnahme und den dynamischen Energieverbrauch von CMOS-Chips
Abstraktion und Rechenleistung einfach erklärt
1Verbinde Software und Hardware
Eine Quellcodezeile durchläuft mehrere Schnittstellen, bevor ein Prozessor sie ausführen kann. Anwendungen stützen sich auf Systemsoftware, Maschinenbefehle auf eine ISA, und Hardwareentwickler implementieren diese Befehle mit Logik und Transistoren. Wenn du diesen Weg verfolgst, kannst du das geforderte Verhalten eines Programms von den Entwurfsentscheidungen trennen, die seine Geschwindigkeit bestimmen, und verstehen, warum kompatible Prozessoren sehr unterschiedlich schnell sein können.
1.1 Von Anwendungen zu physischen Schaltern
Eine Abstraktion zeigt, was eine Komponente tut, und verbirgt zugleich die Einzelheiten ihrer Funktionsweise. Ein Browser kann das Betriebssystem bitten, eine Datei zu lesen, ohne die Schaltungen des Speichergeräts zu steuern. Definierte Schnittstellen ermöglichen es, Teile eines Systems zu entwerfen, zu testen und auszutauschen, ohne alle Schichten zugleich neu aufzubauen.
Die Schichten und ihre Aufgaben
Eine häufige Reihenfolge von der Aufgabe des Nutzers bis zu den physischen Bauelementen lautet:
- Anwendungssoftware erledigt Aufgaben wie das Bearbeiten einer Tabelle oder das Surfen im Web.
- Systemsoftware stellt gemeinsam genutzte Dienste bereit und übersetzt Programme. Dazu gehören Betriebssysteme, Compiler, Assembler, Linker und Bibliotheken.
- Die Befehlssatzarchitektur (ISA) legt die Maschinenbefehle und weiteres Verhalten fest, das für maschinennahe Software sichtbar ist.
- Die Mikroarchitektur oder Organisation implementiert diese ISA mit einem Datenpfad, einem Steuerwerk, Pipelines und Caches.
- Digitale Logik setzt Operationen und Speicher aus Gattern, Addierern, Multiplexern und Registern zusammen.
- Schaltungen verbinden elektronische Komponenten, um diese Logik umzusetzen.
- Bauelemente, vor allem Transistoren, stellen das physische Schaltverhalten bereit.
Diese Grenzen bieten nützliche Sichten auf eine Maschine. Verschiedene Diagramme können benachbarte Schichten zusammenfassen. Ein Betriebssystem ist Software: Die CPU führt seine Befehle aus, darunter privilegierte Befehle, mit denen es Ressourcen sicher verwalten kann.
Verfolge eine Addition
Betrachte die C-Anweisung total = price + tax;. Ein Compiler wählt aus, wo Werte liegen und welche Befehle die Addition ausführen. Er kann einen Additionsbefehl wählen, ohne einen Addierer zu entwerfen. Beim Entwurf der Mikroarchitektur wird dieser Befehl auf Ausführungshardware abgebildet. Die Logik des Addierers wird aus Gattern aufgebaut; beim Schaltungsentwurf werden die elektrischen Einzelheiten hinter diesen Gattern behandelt. Jede beteiligte Person nutzt eine einfachere Schnittstelle zur darunterliegenden Ebene.
Der physische Rechner hat fünf klassische Komponenten: Eingabe, Ausgabe, Speicher, Datenpfad und Steuerwerk. Der Datenpfad führt Operationen auf Daten aus. Das Steuerwerk steuert die Operationen und koordiniert Speicher sowie Ein- und Ausgabe. Zusammen bilden Datenpfad und Steuerwerk den Prozessor oder die CPU.
| Speicher | Hauptaufgabe | Behält Daten ohne Strom? |
|---|---|---|
| DRAM | Hauptarbeitsspeicher | Nein |
| SRAM | Kleine, schnelle Caches nahe am Prozessor | Nein |
| Flash-Speicher oder Magnetfestplatte | Sekundärspeicher | Ja |
Ein Transistor wirkt als elektrisch gesteuerter Schalter. Ein integrierter Schaltkreis oder Chip vereint viele Transistoren auf einem Stück Silizium. Diese Schalter bilden die Grundlage für Logik; die Logik ermöglicht Befehle; Befehle ermöglichen Software.
Mehr Transistoren und unterschiedliche Geschwindigkeiten
Das mooresche Gesetz begann mit Gordon Moores Beobachtung von 1965 und wurde 1975 zu einem Trend der ungefähren Verdopplung der Transistoranzahl alle zwei Jahre überarbeitet. Zehn solcher Verdopplungen vervielfachen eine Anzahl über etwa 20 Jahre um den Faktor . Dies ist ein Herstellungstrend, keine physikalische Garantie; sein Tempo hat sich verlangsamt.
Die Einhaltung einer Schnittstelle bewahrt das von ihr zugesagte Verhalten. Sie legt weder Rechenleistung noch Energieverbrauch oder Kosten fest. Zwei Prozessoren können denselben Additionsbefehl korrekt implementieren und dabei unterschiedliche Schaltungen, Caches und Taktfrequenzen nutzen. Die Anwendung erhält dasselbe Rechenergebnis, wartet aber unterschiedlich lange darauf.
Wichtige Erkenntnisse
- Eine Abstraktion zeigt nützliches Verhalten und verbirgt Einzelheiten der Implementierung.
- Die Schichten verbinden Anwendungen, Systemsoftware, ISA, Mikroarchitektur, Logik, Schaltungen und Bauelemente.
- Die CPU vereint Datenpfad und Steuerwerk; Speicher sowie Ein- und Ausgabe vervollständigen die klassische Sicht mit fünf Komponenten.
- DRAM und SRAM sind flüchtig; Flash-Speicher und Magnetfestplatten behalten Daten ohne Strom.
- Das mooresche Gesetz beschreibt einen Trend der Transistoranzahl, kein garantiertes Wachstum der Rechenleistung.
- Kompatible Schnittstellen bewahren das festgelegte Verhalten, während Geschwindigkeit und Energie weiterhin von den unteren Schichten abhängen.
1.2 Wie aus Quellcode Befehle werden
Ein Prozessor führt Maschinensprache aus, also als Bits kodierte Befehle. Hochsprachencode beschreibt eine Berechnung mit Variablen, Ausdrücken, Schleifen und Funktionen. Die Übersetzung verbindet diese beiden Sichten und erweitert eine kurze Anweisung häufig zu mehreren Befehlen.
Der Weg eines kompilierten Programms
Bei einem C-Programm sind dies die wichtigsten Schritte:
| Schritt | Eingabe und Ergebnis |
|---|---|
| Compiler | Übersetzt Quellcode in Assemblersprache oder direkt in Objektcode |
| Assembler | Wandelt symbolische Assemblersprache in Maschinencode in einer Objektdatei um |
| Linker | Verbindet Objektdateien und Bibliothekscode und löst Verweise zwischen ihnen auf |
| Lader | Bildet die ausführbare Datei im Speicher ab und startet das Programm |
Eine Objektdatei kann Maschinencode enthalten, ohne bereits ein vollständiges lauffähiges Programm zu sein. Beispielsweise muss der Linker bei einem Aufruf einer in einer anderen Datei definierten Funktion diesen Verweis auflösen. Der Lader ist Teil der Ausführungsunterstützung des Betriebssystems und kein weiterer Quellcodeübersetzer.
Verfolge eine C-Anweisung
Angenommen, price liegt in Register x6, tax in x7, und der Compiler legt total in x5 ab. Dann kann:
total = price + tax;
zu diesem RISC-V-Befehl werden:
add x5, x6, x7
Das Ziel steht im Assemblertext zuerst. Der Befehl addiert die Werte in x6 und x7 und schreibt das Ergebnis nach x5. Seine Kodierung im 32-Bit-R-Format ordnet die Felder anders an:
| Feld | Bedeutung hier | Bits |
|---|---|---|
| funct7 | Wählt zusammen mit den anderen Operationsfeldern die Addition aus | 0000000 |
| rs2 | Quellregister 7 | 00111 |
| rs1 | Quellregister 6 | 00110 |
| funct3 | Operationsauswahl | 000 |
| rd | Zielregister 5 | 00101 |
| opcode | Befehlsfamilie | 0110011 |
Das Aneinanderfügen der Felder ergibt 0000000 00111 00110 000 00101 0110011 oder 0x007302B3. Die Leerzeichen machen die Felder lesbar; sie werden nicht als Teil des Befehls gespeichert.
Eine Quellcodeanweisung muss nicht einem einzelnen Befehl entsprechen. Selbst wenn alle Operanden in Registern stehen, benötigt f = (g + h) - (i + j); zwei Additionen und eine Subtraktion. Das Laden von Operanden aus dem Speicher fügt Befehle hinzu. Die Anzahl der ausgeführten Befehle hängt daher von der Übersetzung und der ISA ab, nicht nur von der Anzahl der Quellcodezeilen.
Weitere Wege zum Maschinencode
Ein Hochsprachenprogramm kann oft für eine andere ISA neu kompiliert werden. Seine vorhandene ausführbare Datei ist an ihre ISA und die Konventionen des Betriebssystems gebunden. Damit eine ausführbare x86-64-Datei auf einem Arm- oder RISC-V-Rechner läuft, der sie nicht nativ ausführen kann, braucht sie eine Neukompilierung, Emulation oder Binärübersetzung.
Bytecode ist ein Zwischenformat für Befehle einer Sprachlaufzeitumgebung. CPython kompiliert Python-Quellcode zu Bytecode und interpretiert ihn mit einem Interpreterprogramm. Virtuelle Java-Maschinen verwenden häufig die Just-in-time-Kompilierung, um häufig verwendeten Bytecode während der Programmausführung in Maschinencode umzuwandeln. In beiden Fällen führt die physische CPU letztlich Maschinenbefehle aus.
Assemblersprache bleibt Text, selbst wenn eine Zeile einem echten Befehl sehr ähnelt. Ein Pseudobefehl ist eine vom Assembler akzeptierte Vereinfachung: Aus RISC-V mv x5, x6 wird addi x5, x6, 0. Die genaue Kontrolle über Befehle kann in Betriebssystemcode und kritischen Schleifen nützlich sein, verzichtet aber auf einen Teil der Portabilität und des Optimierungsspielraums für Compiler, die Hochsprachencode bietet.
Wichtige Erkenntnisse
- Kompilieren, Assemblieren, Linken und Laden erfüllen unterschiedliche Aufgaben.
- Assemblersprache ist symbolischer Text; Maschinencode ist die binäre Kodierung, die der Prozessor ausführt.
- Eine Hochsprachenanweisung kann mehrere Befehle ausführen lassen, darunter Speicheroperationen.
- Interpreter und JIT-Compiler sind auf Hardwareebene weiterhin auf Maschinenbefehle angewiesen.
- Ein Quellprogramm kann für eine andere ISA neu kompiliert werden; seine vorhandene ausführbare Datei ist im Allgemeinen nicht portierbar.
1.3 ISA, ABI und Prozessorentwurf
Die Befehlssatzarchitektur (ISA) ist der Vertrag zwischen Hardware und Software auf der untersten Ebene. Sie sagt Programmierenden in Maschinensprache, welche Operationen existieren und was diese bedeuten. Der interne Aufbau eines Prozessors kann sich ändern, während dieser Vertrag stabil bleibt.
Was der Vertrag festlegt
Eine ISA definiert Befehle und ihre binären Kodierungen, für Programmierende sichtbare Register, das Adressierungsverhalten, unterstützte Datentypen und die Architekturmechanismen für den Zugriff auf die Ein- und Ausgabe. Ein Compiler richtet sich beim Übersetzen einer Berechnung in Befehle nach diesen Merkmalen.
Eine Implementierung ist ein physischer Entwurf, der die ISA einhält. Seine Mikroarchitektur beschreibt interne Entscheidungen, etwa zu Ausführungseinheiten, Pipelinestufen, Cachegrößen und Sprungvorhersage. Diese Entscheidungen beeinflussen die Ausführungszeit stark.
| Frage | Art der Entscheidung |
|---|---|
| Gibt es einen Multiplikationsbefehl und welches Ergebnis liefert er? | ISA |
| Dauert diese Multiplikation einen oder vier Zyklen? | Mikroarchitektur |
| Welche Register enthalten Funktionsargumente? | ABI-Konvention |
| Wie groß ist der Cache der ersten Stufe? | Mikroarchitektur |
Der Unterschied betrifft das zugesagte Verhalten. Ein Programm muss das festgelegte Multiplikationsergebnis erhalten. Gewöhnlich muss es nicht wissen, wie der Multiplizierer aufgebaut wurde, um dieses Ergebnis zu erhalten.
Warum eine ISA allein für Binärkompatibilität nicht ausreicht
Die Binärschnittstelle (ABI) ergänzt die für Anwendungsprogramme sichtbare ISA um die Betriebssystemschnittstelle und binäre Konventionen. Sie legt Aufrufkonventionen wie Argumentregister sowie Datenlayout und Konventionen für Systemaufrufe fest. Zwei Maschinen können dieselben Befehlskodierungen ausführen und dennoch unterschiedlich festlegen, wie eine Funktion ein Argument erhält.
Binärkompatibilität setzt voraus, dass die ISA-Merkmale und die ABI des Programms unterstützt werden. Selbst innerhalb der x86-Familie, die 1978 mit Intels 8086 begann, sind Betriebssystemunterstützung und Ausführungsmodi wichtig. Abwärtskompatibilität hat viele ältere Programme bewahrt, während sich Prozessorimplementierungen verändert haben. Ein gemeinsamer Familienname garantiert jedoch nicht, dass jede historische ausführbare Datei in jeder Umgebung läuft.
Eine Architektur, viele Implementierungen
Intel und AMD implementieren x86-64 mit unterschiedlichen internen Entwürfen. Auch Arm und RISC-V unterstützen Implementierungen mit sehr unterschiedlichen Leistungsbudgets und unterschiedlicher Rechenleistung. RISC-V entstand 2010 an der University of California, Berkeley, und ist eine offene, lizenzgebührenfreie ISA. Zu den Basisbefehlssätzen für Ganzzahlen gehören RV32I und RV64I; zu den Standarderweiterungen gehören M für Ganzzahlmultiplikation und -division sowie F und D für Gleitkommaoperationen.
Ein Programm, das eine optionale Erweiterung nutzt, benötigt eine Implementierung, die diese unterstützt. Eine gemeinsame Basis macht nicht jede Erweiterung allgemein verfügbar. Das RISC-V-Additionsbeispiel veranschaulicht dieselbe Hardware-Software-Grenze wie bei Arm und x86, obwohl sich deren Befehle und Kodierungen unterscheiden.
Befehlsumfang und Ausführungszeit
Eine ISA kann mit einem Befehl mehr Arbeit ausdrücken und so die Befehlsanzahl verringern. Dieser Befehl kann aber auch mehr Zyklen benötigen oder eine längere Taktperiode verlangen. Entscheidend ist das vollständige Produkt:
Ein umfangreicherer Befehlssatz reicht nicht aus, um festzustellen, welche Maschine schneller ist. Ebenso wenig bedeutet eine gemeinsame ISA gleiche Geschwindigkeit: Kompatible Prozessoren können unterschiedliche Taktfrequenzen, Caches und Ausführungseinheiten nutzen, um dieselben geforderten Ergebnisse zu liefern.
Wichtige Erkenntnisse
- Die ISA legt das für Programmierende sichtbare Maschinenverhalten fest; die Mikroarchitektur implementiert es.
- Die ABI ergänzt die binären Konventionen und die Betriebssystemschnittstelle, die ausführbare Dateien benötigen.
- Binärkompatibilität setzt die relevanten ISA-Merkmale, die Ausführungsumgebung und die ABI voraus.
- RISC-V kombiniert eine Basis-ISA für Ganzzahlen mit optionalen Standarderweiterungen.
- Der Befehlsumfang verändert die Zielkonflikte zwischen Befehlsanzahl, CPI-Wert und Taktperiode.
2Miss die Rechenleistung, auf die es ankommt
Bei der Rechenleistung geht es zunächst um die Arbeit, die erledigt werden soll: eine einzelne Aufgabe, einen Strom von Anfragen oder eine Mischung aus beidem. Die passende Zeitmessung hängt davon ab, was gebraucht wird. Unterscheide die Zeit, die ein Nutzer wartet, von der Zeit, in der ein Prozessor rechnet, und rechne dann zwischen Taktfrequenz und Zyklusdauer um. Diese Unterscheidungen verhindern, dass sich hinter demselben Wort drei verschiedene Aussagen verbergen: ein schneller Prozessor, ein leistungsfähiger Server und eine schnell reagierende Anwendung.
2.1 Zeit für eine Aufgabe und Arbeit pro Sekunde
Wer auf die Umwandlung einer Datei wartet, möchte eine kurze Antwortzeit. Ein Dienst, der viele Umwandlungen verarbeitet, benötigt außerdem einen hohen Durchsatz. Diese Größen beantworten unterschiedliche Fragen, selbst wenn beide denselben Rechner beschreiben.
Wähle die zur Aufgabe passende Größe
Die Antwortzeit, auch Ausführungszeit oder Latenz genannt, reicht vom Beginn einer Aufgabe bis zu ihrem Abschluss. Sie umfasst Berechnungen, Zugriffe auf Arbeits- und Datenspeicher, Ein- und Ausgabe sowie relevante Betriebssystemaktivität. Wartet die Aufgabe nach ihrer Einreichung in einer Warteschlange, trägt diese Wartezeit zur Antwortzeit für den Nutzer bei.
Durchsatz ist die pro Zeiteinheit abgeschlossene Arbeit. Seine Einheiten können Anfragen pro Sekunde oder Aufträge pro Stunde sein. Eine Maschine kann viele Aufträge pro Stunde abschließen, während jeder einzelne Auftrag dennoch lange dauert.
| Bedarf | Nützliche Größe | Verbesserung |
|---|---|---|
| Eine interaktive Anfrage abschließen | Antwortzeit | Weniger Sekunden pro Anfrage |
| Eine große unabhängige Arbeitslast verarbeiten | Durchsatz | Mehr Anfragen pro Sekunde |
| Viele Personen zufriedenstellend bedienen | Beide | Mehr abgeschlossene Arbeit bei akzeptablen Wartezeiten |
Zusätzliche Prozessoren können den Durchsatz erhöhen, indem sie unabhängige Aufgaben gleichzeitig ausführen. Sie müssen die Berechnung einer einzelnen Aufgabe nicht verkürzen, können aber die Wartezeit auf einen freien Prozessor verringern. Ein schnellerer Prozessor verbessert oft beide Größen.
Vergleiche Rechenleistung in der richtigen Richtung
Für dieselbe Aufgabe definieren wir:
Benötigt A 10 s und B 15 s, beträgt die Rechenleistung von A im Verhältnis zu B:
A ist 1,5-mal so schnell. Die Rechenleistung von B beträgt zwei Drittel der Rechenleistung von A. Setze die größere Ausführungszeit über die kleinere, wenn du angibst, um welchen Faktor der schnellere Rechner schneller ist.
Bei einer Verbesserung ist der Speedup die alte Zeit geteilt durch die neue Zeit. Wird ein Build von 60 s auf 48 s verkürzt, beträgt der Speedup:
Die Zeitverkürzung beträgt:
Die Rechenleistung stieg um 25 %, während die Zeit um 20 % sank. Diese Prozentangaben haben unterschiedliche Nenner. Die Aussage „20 % schneller“ kann verdecken, welche Größe sich verändert hat; das Verhältnis und die gemessenen Zeiten machen die Aussage klar.
Gleicher Durchsatz kann unterschiedliche Wartezeiten verbergen
Ein Dienst, der 1.200 Anfragen pro Minute abschließt, erledigt 20 Anfragen pro Sekunde. Diese Rate könnte dadurch entstehen, dass alle 50 ms eine Anfrage verarbeitet wird, wobei jede Anfrage 50 ms dauert. Sie könnte auch durch die parallele Verarbeitung von zehn Anfragen entstehen, die jeweils 500 ms dauern: Zehn Abschlüsse pro halber Sekunde ergeben wiederum 20 pro Sekunde.
Die zweite Anordnung hat denselben Durchsatz, aber die zehnfache Verarbeitungszeit pro Anfrage. Ein Durchsatzergebnis allein kann die Latenz, die ein Nutzer erlebt, nicht bestimmen. Vergleiche dieselbe abgeschlossene Arbeit, gib das Zeitintervall an und behalte beim Umrechnen zwischen Minuten und Sekunden die Einheiten bei.
Wichtige Erkenntnisse
- Die Antwortzeit misst die Dauer einer Aufgabe; der Durchsatz misst die abgeschlossene Arbeit pro Zeiteinheit.
- Für dieselbe Aufgabe ist die Rechenleistung der Kehrwert der Ausführungszeit.
- Der Speedup ist die alte Zeit geteilt durch die neue Zeit; die prozentuale Zeitverkürzung hat die alte Zeit als Nenner.
- Zusätzliche Prozessoren können den Durchsatz erhöhen, ohne die Berechnung einer sequenziellen Aufgabe zu verkürzen.
- Gleicher Durchsatz kann mit sehr unterschiedlichen Latenzen für Anfragen einhergehen.
2.2 Lies Zeitmessergebnisse und rechne Takteinheiten um
Eine Stoppuhr misst alles zwischen Start und Ende. Die CPU-Leistungsgleichung misst die Prozessorarbeit. Wenn du diese Sichten trennst, schreibst du einer Prozessoraufrüstung keine Verkürzung von Wartezeiten zu, die sie nicht beseitigen kann.
Gesamtlaufzeit und Prozessorzeit
Die Gesamtlaufzeit oder Wanduhrzeit umfasst Berechnungen, das Warten auf Dateien oder das Netzwerk sowie Zeitabschnitte, in denen andere Prozesse laufen. Die CPU-Zeit erfasst die Prozessorzeit, die der Aufgabe zugerechnet wird. In der Benutzer-CPU-Zeit wird der Programmcode ausgeführt; in der System-CPU-Zeit wird Betriebssystemcode im Auftrag des Programms ausgeführt.
Angenommen, der Unix-Befehl time meldet „real 2.50 s, user 1.80 s, sys 0.20 s.“ Das Programm verbrauchte:
CPU-Zeit. In diesem Zeitmessungsbeispiel mit einem einzelnen Thread stehen die verbleibenden 0,50 s für Zeit, die nicht als CPU-Ausführung zugerechnet wurde, etwa beim Warten oder während der Prozess nicht zur Ausführung eingeplant war. Halbiert eine Prozessorverbesserung den CPU-Anteil, während diese Wartezeit gleich bleibt, wird die Gesamtlaufzeit zu:
Würdest du die gesamten 2,50 s halbieren, würdest du fälschlich auch die Wartezeit beschleunigen. Bei der CPU-Leistung steht oft die Benutzerzeit im Mittelpunkt; die Systemleistung wird anhand der Gesamtlaufzeit bei kontrollierter Systemlast beurteilt.
Bei einem parallelen Programm wird die CPU-Zeit über seine Threads und Kerne summiert. Vier Kerne, die den größten Teil einer Sekunde arbeiten, können während 1,0 s Gesamtlaufzeit 3,6 s Benutzerzeit erzeugen. In diesem Fall misst die Differenz aus Gesamtlaufzeit und summierter CPU-Zeit nicht die Wartezeit.
Die Taktfrequenz ist der Kehrwert der Taktperiode
Ein Takt gibt synchroner Hardware einen zeitlichen Rhythmus. Die Taktperiode ist die Anzahl der Sekunden pro Zyklus; die Taktfrequenz ist die Anzahl der Zyklen pro Sekunde:
Bei 4 GHz beträgt die Frequenz vier Milliarden Zyklen pro Sekunde. Ein Zyklus dauert:
Bei 2,5 GHz beträgt die Taktperiode 400 ps. Umgekehrt ergeben 312,5 ps pro Zyklus:
| Präfix oder Einheit | Wert |
|---|---|
| GHz | Zyklen/s |
| ns | s |
| ps | s |
| KiB | Byte |
| GiB | Byte |
Präfixe für Zeit und Frequenz verwenden dezimale Potenzen. Binäre Speicherpräfixe verwenden Zweierpotenzen. Bezeichnungen wie „GB“ werden mitunter ungenau für binäre Größen verwendet; prüfe deshalb vor dem Umrechnen einer Größe, was gemeint ist.
Deute eine Messung als Ergebnis eines Laufs
Die beworbene Frequenz eines Prozessors hält nicht jeden Augenblick seiner Ausführung fest. Kurzzeitige Takterhöhungen, Energieverwaltung und thermische Drosselung verändern die Frequenz. Auch Cacheinhalte und Hintergrundaktivität verändern die gemessene Zeit. Wiederhole eine Messung und gib einen typischen Wert wie den Median an. Das hilft, ein stabiles Ergebnis von einem ungewöhnlich günstigen Lauf zu unterscheiden. Verwende Zeit- und Frequenzmessungen aus demselben Ausführungsintervall, wenn du sie mit Zyklenanzahlen verknüpfst.
Wichtige Erkenntnisse
- Die Gesamtlaufzeit umfasst Wartezeiten; die CPU-Zeit umfasst die der Aufgabe zugerechnete Benutzer- und Systemzeit.
- Die über mehrere Kerne summierte CPU-Zeit kann die Gesamtlaufzeit übersteigen.
- Taktperiode und Taktfrequenz sind Kehrwerte; achte auf einheitliche Sekunden, Nanosekunden und Pikosekunden.
- GHz verwendet dezimale Zehnerpotenzen; KiB und GiB verwenden binäre Zweierpotenzen.
- Takterhöhung, Drosselung, Caches und Hintergrundarbeit können das Ergebnis von Lauf zu Lauf verändern.
- Ein CPU-Speedup verringert den CPU-Anteil der Gesamtlaufzeit; nicht betroffene Wartezeiten bleiben bestehen.
3Berechne und vergleiche CPU-Zeiten
Die CPU-Zeit eines Programms ergibt sich daraus, wie viele Befehle es ausführt, wie viele Zyklen diese Befehle benötigen und wie lange jeder Zyklus dauert. Diese Faktoren können sich in entgegengesetzte Richtungen verändern, wenn sich ein Compiler oder Prozessor ändert. Berechne zunächst Zyklenbudgets und Befehlsmixe, bevor du vollständige Ausführungszeiten vergleichst. Nutze dann dieselben Zusammenhänge, um Aussagen zur Taktfrequenz und Befehlsrate sowie zusammengefasste Benchmark-Ergebnisse zu beurteilen.
3.1 Berechne aus einem Zyklenbudget die CPU-Zeit
Ein Taktzyklus ist eine Einheit der Prozessorzeit, kein Befehl. Manche Befehle benötigen viele Zyklen, und durch überlappende Ausführung können mehrere Befehle pro Zyklus abgeschlossen werden. Beginne mit den insgesamt für das Programm benötigten Zyklen.
Teile Zyklen durch Zyklen pro Sekunde
Benötigt ein Programm eine bekannte Anzahl von Zyklen, beträgt seine CPU-Zeit:
Für sechs Milliarden Zyklen bei 3 GHz:
Die Einheiten erklären die Division: Zyklen geteilt durch Zyklen pro Sekunde ergeben Sekunden. Die Multiplikation von Zyklen mit der Frequenz würde Zyklen zum Quadrat pro Sekunde ergeben, keine Dauer. Die Multiplikation mit der Taktperiode funktioniert, weil ihre Einheit Sekunden pro Zyklus ist.
Mit derselben Gleichung kannst du eine andere Unbekannte bestimmen. Multipliziere Zeit und Frequenz, um die Zyklenanzahl zu erhalten; dividiere die Zyklenanzahl durch die Zielzeit, um die benötigte Frequenz zu finden. Gib die Frequenz in Hz an, wenn die Zeit in Sekunden angegeben ist, oder kürze entsprechende Milliardenfaktoren ausdrücklich.
Wenn ein schnellerer Takt mehr Zyklen erfordert
Prozessor A führt ein Programm bei 3 GHz in 10 s aus. Sein Zyklenbudget beträgt:
Ein vorgeschlagener Entwurf B erhöht diese Zyklenanzahl um 20 %. B muss daher ausführen:
Um in 9 s fertig zu werden, benötigt B:
Das Verhältnis der Taktfrequenzen beträgt vier Drittel, etwa 1,33. Der tatsächliche Speedup beträgt nur zehn Neuntel, etwa 1,11, weil B mehr Taktzyklen braucht, um die Arbeit abzuschließen. Würdest du annehmen, dass die alte Zyklenanzahl unverändert bleibt, würdest du eine Taktfrequenz vorhersagen, die zu niedrig ist, um das Ziel zu erreichen.
Vergleiche einen Zielkonflikt ohne bestimmte Programmgröße
Ein Entwurf multipliziere die alte Zyklenanzahl mit einem Faktor und die alte Taktfrequenz mit einem Faktor . Dann gilt:
Der Entwurf ist schneller, wenn der Wachstumsfaktor der Zyklenanzahl kleiner ist als der Wachstumsfaktor der Frequenz. Wachsen beide um denselben Faktor, bleibt die CPU-Zeit unverändert. Dieses Verhältnis ist nützlich, wenn ein Entwurfsvorschlag prozentuale Änderungen, aber keine absolute Zyklenanzahl angibt.
Warum die Taktperiode eine physikalische Schranke hat
Zwischen Registern durchlaufen Signale kombinatorische Logik und müssen sich stabilisieren, bevor ihre Ergebnisse übernommen werden. Der langsamste benötigte Pfad ist der kritische Pfad. Die Schaltungstechnologie und der einer Stufe zugewiesene Arbeitsumfang begrenzen, wie kurz eine sichere Taktperiode sein kann.
Beim Entwurf kann die Arbeit auf kürzere Pipelinestufen verteilt werden, um einen schnelleren Takt zu ermöglichen; die Umgestaltung kann aber auch die Zyklenanzahl verändern. Mehr GHz ist daher eine Aussage über die Taktfrequenz. Um eine Verbesserung der Rechenleistung festzustellen, verbinde sie mit der Anzahl der Zyklen, die das Programm bei diesem Entwurf tatsächlich benötigt.
Wichtige Erkenntnisse
- Die CPU-Zeit entspricht der Zyklenanzahl mal Taktperiode oder der Zyklenanzahl geteilt durch die Taktfrequenz.
- Zeit mal Taktfrequenz ergibt die Zyklenanzahl; die Zyklenanzahl geteilt durch die Zielzeit ergibt die benötigte Taktfrequenz.
- Vergleiche den Faktor der Zyklenanzahl mit dem Frequenzfaktor, wenn sich beide ändern.
- Der kritische Pfad begrenzt die Taktperiode, und eine Neuordnung der Arbeit kann die Zyklenanzahl verändern.
3.2 Gewichte den CPI-Wert nach den ausgeführten Befehlen
Taktzyklen pro Befehl (CPI) ist die Gesamtzahl der CPU-Taktzyklen eines Programms geteilt durch seine Anzahl ausgeführter Befehle. Der CPI-Wert ist ein Durchschnitt über einen Lauf, kann also gebrochen sein und hängt davon ab, welche Befehle ausgeführt werden und wie sie mit der Maschine zusammenwirken.
Addiere die Zyklen vor der Mittelwertbildung
Für Befehlsklassen mit den Anzahlen und den CPI-Werten gilt:
Gleichwertig dazu kannst du jeden CPI-Wert einer Klasse mit ihrem Anteil an der Befehlsanzahl multiplizieren und die Beiträge addieren. Die Anteile müssen ausgeführte Befehle beschreiben, nicht Quellcodezeilen oder die Anzahl der Befehlsarten.
Angenommen, ALU-Befehle benötigen 1 Zyklus, Lade- und Speicherbefehle 4 und bedingte Sprünge 2. Ein Mix von 50 %, 30 % und 20 % ergibt:
Für fünf Milliarden Befehle bei 3 GHz ergeben sich insgesamt 10,5 Milliarden Zyklen und eine CPU-Zeit von 3,5 s. Das ungewichtete Mittel der drei Zyklenzahlen pro Klasse von etwa 2,33 ist falsch: Die Klassen kommen nicht gleich häufig vor.
Mehr Befehle können trotzdem weniger Zyklen bedeuten
Zwei Compilerversionen verwenden dieselben Zyklenzahlen pro Klasse:
| Klasse | Zyklen pro Befehl | Version 1, Millionen | Version 2, Millionen |
|---|---|---|---|
| ALU | 1 | 400 | 600 |
| Laden/Speichern | 4 | 300 | 150 |
| Bedingter Sprung | 2 | 100 | 100 |
Version 1 führt 800 Millionen Befehle aus. Die Beiträge der Klassen betragen 400, 1.200 und 200 Millionen Zyklen, insgesamt 1.800 Millionen. Ihr CPI-Wert beträgt:
Version 2 führt 850 Millionen Befehle aus. Ihre Beiträge betragen 600, 600 und 200 Millionen Zyklen, insgesamt 1.400 Millionen. Ihr CPI-Wert beträgt:
Bei 3 GHz betragen die Zeiten 0,60 s und etwa 0,467 s. Version 2 ist etwa 1,29-mal so schnell, obwohl sie 50 Millionen Befehle mehr ausführt. Der Ersatz vieler aufwendiger Speicherbefehle durch mehr günstige ALU-Befehle kann diesen Kompromiss lohnend machen.
Der CPI-Wert gehört zu einer Arbeitslast auf einer Maschine
Speicherwartezyklen, Cache-Fehlzugriffe, Sprungverhalten und Compilerentscheidungen verändern den effektiven CPI-Wert. Ein einzelner „Prozessor-CPI-Wert“ kann nicht jedes Programm beschreiben. Hardware-Leistungszähler oder ein Simulator können die Gesamtzahl der Befehle und Zyklen für die untersuchte Arbeitslast messen.
Befehle pro Taktzyklus (IPC) setzt dieselben Gesamtzahlen in umgekehrter Reihenfolge ins Verhältnis:
Ein IPC-Wert von 2,5 ergibt einen CPI-Wert von 0,4. In einem Prozessor, der mehrere Befehle pro Zyklus ausgibt und abschließt, können mehrere Befehle überlappend ausgeführt werden. Ein Durchschnitt unter eins bedeutet nicht, dass ein einzelner Befehl seinen gesamten Weg innerhalb eines Bruchteils eines Taktzyklus zurücklegt.
Wichtige Erkenntnisse
- Berechne die Gesamtzahl der Zyklen, indem du für jede Klasse ihre Befehlsanzahl mit ihrem CPI-Wert multiplizierst und die Ergebnisse addierst.
- Der durchschnittliche CPI-Wert gewichtet die Zyklenzahlen der Klassen mit ihren Anteilen an den ausgeführten Befehlen.
- Eine längere Befehlsfolge kann schneller laufen, wenn ihre Gesamtzahl an Zyklen kleiner ist.
- Der CPI-Wert hängt vom Programm, vom Compiler und vom Verhalten der Maschine während des Laufs ab.
- Der IPC-Wert ist der Kehrwert des CPI-Werts; überlappende Ausführung kann einen CPI-Wert unter eins ergeben.
3.3 Kombiniere Befehlsanzahl, CPI-Wert und Taktfrequenz
Die CPU-Leistungsgleichung führt die drei Zeitfaktoren zusammen:
Dabei zählt die ausgeführten Befehle und ist die während der Ausführung geltende Taktfrequenz. Befehle mal Zyklen pro Befehl ergeben Zyklen. Die Division durch Zyklen pro Sekunde ergibt anschließend Sekunden.
Berechne eine Zeit und bestimme eine Unbekannte
Ein Programm führt auf einem 2,5-GHz-Prozessor zwei Milliarden Befehle bei einem CPI-Wert von 1,5 aus. Bestimme zuerst die Gesamtzahl der Zyklen und rechne sie dann in Zeit um:
Um den CPI-Wert aus der gemessenen Zeit zu bestimmen, forme dieselbe Gleichung um:
Für 1,6 Milliarden Befehle in 0,8 s bei 3,2 GHz ergeben sich 2,56 Milliarden Zyklen. Die Division durch 1,6 Milliarden Befehle ergibt einen CPI-Wert von 1,6.
Vergleiche vollständige Produkte
Zwei Prozessoren führen dasselbe kompilierte Programm mit derselben Befehlsanzahl aus. A hat 4 GHz und CPI 1,8; B hat 2,5 GHz und CPI 1,0. Ihre Zeit pro Befehl beträgt:
B ist 1,125-mal so schnell. Sein niedrigerer CPI-Wert gleicht seinen langsameren Takt mehr als aus. Die Befehlsanzahl kürzt sich hier heraus, weil sie gleich ist; sie würde sich nicht herauskürzen, wenn die beiden Programme unterschiedlichen Befehlsfolgen folgen würden.
Ebenso verändert eine Compileroption, die bei gleicher Frequenz die Befehlsanzahl um 10 % senkt, den CPI-Wert aber um 15 % erhöht, die Zeit um folgenden Faktor:
Die Zeit steigt um 3,5 %. Die Verringerung der Befehlsanzahl allein weist in die falsche Richtung.
Verbinde Entwurfsentscheidungen mit den Faktoren
| Entscheidung | Faktoren, die sie verändern kann |
|---|---|
| Algorithmus | Befehlsanzahl und möglicherweise CPI-Wert |
| Programmiersprache oder Compiler | Befehlsanzahl und CPI-Wert |
| ISA | Befehlsanzahl, CPI-Wert und Taktfrequenz |
| Organisation | CPI-Wert und Taktfrequenz |
| Schaltungstechnologie | Taktfrequenz |
Diese Zusammenhänge sind für die Analyse nützlich, aber keine unabhängigen Stellgrößen, die sich immer ohne Folgen verändern lassen. Ein Cache verringert Speicherwartezyklen und senkt so den effektiven CPI-Wert. Pipelining überlappt aufeinanderfolgende Befehle und kann den effektiven CPI-Wert senken oder eine kürzere Taktperiode ermöglichen. Solche Änderungen können andere Kosten mit sich bringen, die in den gemessenen Gesamtzahlen sichtbar werden.
Halte das Messintervall einheitlich
Miss CPU-Zeit, Befehlsanzahl, Zyklen und Frequenz für dieselbe Arbeit. Zähler oder Simulationen liefern Befehls- und Zyklenanzahlen. Die GHz-Nennfrequenz eines Produkts dokumentiert nicht den Frequenzverlauf eines Laufs mit Takterhöhung oder Drosselung. Wenn die Frequenz schwankt, ist der passende Mittelwert die Gesamtzahl der gezählten Zyklen geteilt durch die CPU-Zeit für dieses Intervall.
Die Gleichung sagt die CPU-Ausführungszeit voraus. Das Warten auf Datenspeicher oder Netzwerk gehört zur Gesamtlaufzeit und muss gesondert berücksichtigt werden, wenn dieses Ergebnis gebraucht wird.
Wichtige Erkenntnisse
- Die CPU-Zeit ist die Befehlsanzahl mal CPI-Wert geteilt durch die Taktfrequenz.
- Forme die Gleichung um, um aus gemessenen Größen den CPI-Wert, die Befehlsanzahl oder die benötigte Frequenz zu bestimmen.
- Kürze die Befehlsanzahl nur heraus, wenn die verglichenen Ausführungen dieselbe Anzahl haben.
- Änderungen an Compiler und Hardware können einen Faktor verbessern und gleichzeitig einen anderen verschlechtern.
- Verwende die Frequenz und die Anzahlen desselben Laufs, nicht eine beworbene Taktfrequenz.
- Addiere nicht betroffene Wartezeiten gesondert, wenn du die Gesamtlaufzeit vorhersagst.
3.4 Beurteile Benchmark-Ergebnisse und Aussagen zur Befehlsrate
Eine nützliche Aussage zur Rechenleistung bezieht sich auf Arbeit, die für den Nutzer wichtig ist. Ein Benchmark führt eine ausgewählte Arbeitslast aus, um die Rechenleistung zu messen. Eine Benchmark-Suite erfasst mehrere Arbeitslasten, wenn eine Anwendung den gesamten Bedarf nicht repräsentieren kann.
Lies die Art des SPEC-Ergebnisses
SPEC CPU 2026, veröffentlicht im Mai 2026, folgt auf SPEC CPU 2017. Seine Suites beanspruchen Prozessoren, Speichersysteme und Compiler. SPECspeed misst die Zeit bis zum Abschluss einer einzelnen Programminstanz; diese Instanz kann selbst mehrere Threads nutzen. SPECrate misst den Durchsatz mit mehreren Instanzen. Ganzzahl- und Gleitkomma-Suites dienen unterschiedlichen Arbeitslastarten, und das Produkt unterstützt auch Energiekennzahlen.
Eine Geschwindigkeitsverhältniszahl für ein einzelnes Programm vergleicht die Referenzzeit mit der gemessenen Zeit:
Eine Referenzzeit von 3.000 s und eine gemessene Zeit von 250 s ergeben 12. Ein höherer Wert ist besser. Eine Durchsatzverhältniszahl berücksichtigt die Anzahl der im gemessenen Intervall abgeschlossenen Instanzen. Vergleiche gleichartige Kennzahlen und dieselbe Suite-Version; ein Geschwindigkeits- und ein Durchsatzergebnis beantworten unterschiedliche Fragen.
Fasse Verhältniszahlen mit einem geometrischen Mittel zusammen
Für positive Verhältniszahlen verwendet die Suite:
Die Verhältniszahlen 2, 8 und 4 ergeben ein Produkt von 64 und eine Kubikwurzel von 4. Ihr arithmetisches Mittel beträgt etwa 4,67, ein anderes Ergebnis.
Der Vergleich der geometrischen Mittel hängt nicht davon ab, welcher Referenzrechner die Verhältniszahlen bestimmt. Angenommen, X benötigt für zwei Programme 10 s und 40 s, während Y 20 s und 25 s benötigt. Referenzzeiten von jeweils 100 s ergeben für X die Verhältniszahlen 10 und 2,5 und für Y 5 und 4. Die geometrischen Mittel sind 5 und etwa 4,47, sodass X um etwa den Faktor 1,12 vorn liegt.
Ändere die Referenzzeiten auf 50 s und 200 s: X erhält die Verhältniszahlen 5 und 5, Y erhält 2,5 und 8. Ihre geometrischen Mittel bleiben 5 und etwa 4,47. Die arithmetischen Mittel ändern sich dagegen von 6,25 gegenüber 4,5 auf 5 gegenüber 5,25 und kehren die Rangfolge um. Die Normierung auf eine Referenz darf nicht entscheiden, welche Maschine schneller erscheint.
Warum MIPS langsameren Code belohnen kann
MIPS, Millionen Befehle pro Sekunde, ist:
Befehle leisten bei verschiedenen ISAs unterschiedlich viel nützliche Arbeit. Selbst auf einer Maschine ändert sich MIPS mit dem Programm, und eine höhere Befehlsrate kann mit einer längeren Ausführungszeit einhergehen.
Bei 3 GHz benötigen ALU-Befehle, Lade- und Speicherbefehle sowie bedingte Sprünge 1, 4 und 2 Zyklen. Code Q führt davon 400, 300 und 100 Millionen aus: 800 Millionen Befehle, 1.800 Millionen Zyklen, 0,60 s, etwa 1.333 MIPS. Code P führt 1.500, 100 und 100 Millionen aus: 1.700 Millionen Befehle, 2.100 Millionen Zyklen, 0,70 s, etwa 2.429 MIPS. P schließt Befehle schneller ab, beendet die Aufgabe aber später.
Spitzenleistungen beschreiben die ideale Leistungsfähigkeit der Hardware. Reale Arbeitslasten können aufgrund von Abhängigkeiten, Speicherwartezeiten und anderen Beschränkungen viel weniger erreichen. Beurteile die Leistung bei einer Aufgabe anhand ihrer tatsächlichen Dauer; Frequenz, MIPS und Spitzenleistungen erklären davon nur ausgewählte Teile.
Wichtige Erkenntnisse
- Wähle Benchmarks, die die vorgesehene Arbeitslast repräsentieren.
- SPECspeed misst die Abschlusszeit einer Instanz; SPECrate misst den Durchsatz über mehrere Instanzen.
- Ein größeres Verhältnis von Referenzzeit zu gemessener Zeit zeigt eine bessere Rechenleistung an.
- Verwende das geometrische Mittel, um positive normierte Verhältniszahlen zusammenzufassen, ohne dass die Rangfolge von der Referenz abhängt.
- MIPS kann steigen, während eine Aufgabe langsamer wird, und Befehle verschiedener ISAs leisten unterschiedlich viel Arbeit.
- Spitzenleistungen beschreiben die ideale Leistungsfähigkeit, nicht die gemessene Ausführungszeit einer Aufgabe.
4Bestimme die Grenzen einer Verbesserung
Eine Verbesserung wirkt sich nur auf den Teil einer Aufgabe aus, der sie nutzen kann. Eine schnellere Recheneinheit verändert die Wartezeiten auf Dateien nicht, und zusätzliche Kerne lassen sequenzielle Arbeit auf einem Kern. Das amdahlsche Gesetz macht aus dieser Aufteilung ein Zeitbudget und zeigt sowohl wahrscheinliche Gewinne als auch feste Schranken. Dieselbe Überlegung hilft, eine Optimierung auszuwählen, von einem Ziel aus rückwärtszurechnen und zu erklären, warum parallele Arbeitslasten mit fester und mit wachsender Größe unterschiedliche Ergebnisse zeigen.
4.1 Berechne den Gewinn durch die Verbesserung eines Aufgabenteils
Das amdahlsche Gesetz beginnt damit, die ursprüngliche Ausführungszeit in einen betroffenen Anteil und einen nicht betroffenen Anteil aufzuteilen. Beschleunige nur die betroffene Zeit und addiere die Teile anschließend wieder. So wendest du eine lokale Verbesserung nicht auf Arbeit an, die sie nicht verändern kann.
Berechne die neue Zeit aus den alten Zeiten
Wird der betroffene Teil -mal so schnell, gilt:
Sei der betroffene Anteil der ursprünglichen Ausführungszeit. Die Division durch die ursprüngliche Zeit ergibt die Speedup-Form:
Ein Programm mit 120 s Laufzeit verbringt 90 s mit Gleitkommaoperationen und 30 s mit anderer Arbeit. Der betroffene Anteil ist somit 0,75. Werden die Gleitkommaoperationen dreimal so schnell, sinkt ihre Zeit auf 30 s:
Die Gleitkommaarbeit wird um den Faktor drei schneller, das vollständige Programm um den Faktor zwei. Die unveränderten 30 s erklären den Unterschied.
Rechne von einem Ziel aus rückwärts
Um dieselbe Aufgabe in 40 s abzuschließen, benötigt die unveränderte Arbeit weiterhin 30 s. Für den ursprünglichen Gleitkommateil von 90 s bleiben nur 10 s. Daher gilt:
Ein Ziel von 30 s ließe keine Zeit für diese Arbeit. Keine endliche Beschleunigung lässt eine positive Menge betroffener Arbeit genau null Zeit benötigen. Wächst der lokale Speedup unbegrenzt, nähert sich der Gesamt-Speedup:
Hier ist die Schranke 4; sie wird von unten angenähert. Bei einem nicht betroffenen Anteil von einem Halb liegt die Schranke bei 2. Ist die gesamte Arbeit betroffen, gibt es keine unveränderte positive Zeit, die eine solche endliche obere Schranke setzt.
Optimiere dort, wo die Zeit verbraucht wird
Das Prinzip Beschleunige den häufigen Fall bedeutet, zu bestimmen, wo tatsächlich Ausführungszeit verbraucht wird. Profiling misst diese Aufteilung. Eine Verdopplung der Geschwindigkeit eines Teils, der 60 % der Zeit beansprucht, ergibt:
Eine zehnfache Verbesserung eines Anteils von 10 % ergibt nur:
Ein großer lokaler Faktor kann weniger bringen als eine mäßige Verbesserung, die auf einen größeren Teil der Aufgabe wirkt.
Der betroffene Anteil muss ein Zeitanteil sein. Machen Lade- und Speicherbefehle 30 % der Befehle aus, benötigen aber 60 % der Zyklen, beträgt ihr Zeitanteil bei fester Taktfrequenz 0,60. Wer Befehle gleich zählt, übersieht ihren höheren Aufwand.
Wende dieselbe Aufteilung auf Wartezeiten an
Bei einer Aufgabe mit 2,00 s CPU-Arbeit und 0,50 s fester Wartezeit auf Dateien ergibt eine Verdopplung der CPU-Geschwindigkeit insgesamt 1,50 s. Der Speedup beträgt etwa 1,67. Dasselbe Zeitbudget funktioniert für Verbesserungen an Hardware, Software und Ein- und Ausgabe: Bestimme genau, welche ursprüngliche Zeit sich verändert, bevor du den Faktor anwendest.
Wichtige Erkenntnisse
- Das amdahlsche Gesetz beschleunigt die betroffene Zeit und behält die nicht betroffene Zeit in der Gesamtzeit bei.
- Der betroffene Anteil ist ein Anteil der ursprünglichen Zeit, nicht der Befehle oder Quellcodezeilen.
- Ziehe die nicht betroffene Zeit von der Zielzeit ab, um die erforderliche lokale Verbesserung zu bestimmen.
- Ein positiver nicht betroffener Anteil setzt dem Speedup die Schranke eins geteilt durch diesen Anteil.
- Profiling hilft, Verbesserungen zu finden, die einen großen Anteil der Ausführungszeit betreffen.
4.2 Schätze Speedup und Effizienz über mehrere Kerne ab
Mehr Kerne verkürzen eine Aufgabe nur, wenn Arbeit gleichzeitig ausgeführt werden kann. Teile die ursprüngliche Zeit einer festen Aufgabe auf einem einzelnen Kern in einen sequenziellen und einen parallelen Teil auf und betrachte dann, was zusätzliche Kerne verändern können.
Das amdahlsche Gesetz für eine Aufgabe fester Größe
Sei der parallelisierbare Anteil der ursprünglichen Zeit auf einem einzelnen Kern. Bei perfekter Aufteilung auf Kerne und ohne zusätzlichen Aufwand gilt:
Bei einem parallelisierbaren Anteil von 0,95 beträgt der sequenzielle Anteil 0,05. Acht Kerne ergeben:
Bei 100 Kernen beträgt der Speedup etwa 16,8; bei 1.000 Kernen etwa 19,6. Die sequenziellen 5 % halten den Speedup bei fester Größe unter 20, unabhängig davon, wie viele Kerne hinzukommen.
Die parallele Effizienz ist der Speedup geteilt durch die Anzahl der Kerne. Die Effizienz bei acht Kernen beträgt etwa 0,74 oder 74 %. Bei 100 Kernen beträgt sie etwa 17 %. Ein größerer Speedup kann mit geringerer Effizienz einhergehen, weil jeder zusätzliche Kern weniger zur festen Aufgabe beiträgt.
Warum gemessene Gewinne kleiner sein können
Das ideale Modell verteilt die parallele Arbeit gleichmäßig und setzt keine Koordinationskosten voraus. Reale Programme kommunizieren und synchronisieren sich, und einige Kerne erhalten mehr Arbeit als andere.
Bei 100 gleichen Einheiten unabhängiger Arbeit auf vier identischen Kernen erhält bei einer gleichmäßigen Zuweisung jeder 25 Einheiten. Erhält einer 40 Einheiten, während die übrigen früher fertig werden, muss der Abschluss auf diesen am stärksten ausgelasteten Kern warten. Der Speedup beträgt 100 geteilt durch 40, also 2,5, noch bevor Kommunikationskosten hinzukommen. Die Addition der früheren Fertigstellungszeiten der anderen Kerne würde nicht die Abschlusszeit ergeben: Das letzte benötigte Ergebnis bestimmt sie.
Ein Programm mit einem einzelnen Thread hat keinen parallelisierbaren Anteil, der verteilt werden kann. Mehr Kerne können dennoch andere Programme ausführen und den Systemdurchsatz verbessern, teilen den Befehlsstrom dieses Programms aber nicht automatisch auf.
Feste und wachsende Arbeit beantworten unterschiedliche Fragen
Starke Skalierung hält die Gesamtgröße des Problems fest und fragt, um welchen Faktor mehr Prozessoren es schneller abschließen können. Schwache Skalierung lässt die Gesamtarbeit proportional zur Prozessoranzahl wachsen, sodass die Arbeit pro Prozessor etwa konstant bleibt. Eine größere Simulation kann ein feineres Gitter verwenden und dabei ungefähr dieselbe Arbeitslast pro Prozessor beibehalten.
Das gustafsonsche Gesetz beschreibt skalierte Arbeit, wenn die sequenzielle Zeit fest bleibt, während die parallele Arbeit wächst. Sein sequenzieller Anteil wird beim parallelen Lauf gemessen, anders als der ursprüngliche Anteil auf einem einzelnen Kern bei Amdahl:
Für einen gemessenen sequenziellen Anteil von 0,05 auf 100 Kernen beträgt der skalierte Speedup 95,05. Das widerspricht nicht Amdahls Schranke von 20 für eine feste Aufgabe, deren ursprünglicher sequenzieller Anteil 5 % betrug. Die Aufgabengröße und die Messgrundlage des Anteils unterscheiden sich.
Parallele Software muss unabhängige Arbeit bereitstellen, sie gleichmäßig verteilen und die Ergebnisse koordinieren. Mehr Hardware stellt Kapazität bereit; die Struktur des Programms bestimmt, wie viel davon seine Abschlusszeit verkürzt.
Wichtige Erkenntnisse
- Teile bei idealer Skalierung mit fester Größe nur die ursprüngliche parallele Zeit durch die Anzahl der Kerne.
- Der ursprüngliche sequenzielle Anteil setzt Amdahls Schranke für den Speedup mit mehreren Kernen.
- Die parallele Effizienz ist der Speedup geteilt durch die Anzahl der Kerne.
- Kommunikation, Synchronisierung und ungleichmäßige Arbeitsverteilung verringern die Gewinne.
- Bei starker Skalierung bleibt die Gesamtarbeit fest; bei schwacher Skalierung bleibt die Arbeit pro Prozessor ungefähr fest.
- Das gustafsonsche Gesetz verwendet für eine wachsende Arbeitslast einen beim parallelen Lauf gemessenen sequenziellen Anteil.
5Verbinde Leistungsgrenzen mit dem Entwurf von Mehrkernprozessoren
Ein Prozessor muss Arbeit sowohl innerhalb eines Zeitbudgets als auch innerhalb eines Leistungsbudgets abschließen. Das Schalten von Transistoren verbraucht Energie, die Spannung beeinflusst diesen Verbrauch stark, und Wärme begrenzt, wie stark ein Chip betrieben werden kann. Verbinde diese Zusammenhänge mit dem Ende der idealen Transistorskalierung und dem Übergang zu mehreren Kernen. So wird verständlich, warum mehr Transistoren weiterhin nützlich sein können, selbst wenn höhere Taktfrequenzen allein den nächsten Leistungsgewinn nicht liefern können.
5.1 Berechne Schaltleistung und Energie für eine Aufgabe
CMOS-Prozessoren verbrauchen Energie, wenn Signale schalten, und im eingeschalteten Zustand auch durch Leckströme. Dynamischer Energieverbrauch entsteht beim Schalten; statische Leistungsaufnahme fällt auch ohne nützliche Schaltvorgänge an. Ihre jeweiligen Anteile hängen vom Chip und seiner Arbeitslast ab.
Die Spannung wirkt quadratisch
Die Energie eines Übergangs skaliert mit der Kapazität und dem Quadrat der Versorgungsspannung. Ein gebräuchlicher Ausdruck verwendet die Hälfte der Kapazität mal Spannung zum Quadrat; ein vollständiger Lade- und Entladeimpuls skaliert mit Kapazität mal Spannung zum Quadrat. Für die mittlere dynamische Leistungsaufnahme gilt:
Dabei ist die kapazitive Last, die Versorgungsspannung, die Taktfrequenz und beschreibt die Schaltaktivität gemäß der gewählten Zählkonvention. Manche Konventionen nehmen den Faktor ein Halb in den Aktivitätsfaktor auf. Verhältnisrechnungen funktionieren eindeutig, wenn die Konvention für die Aktivität gleich bleibt.
Bei unveränderter Kapazität und Aktivität ergibt eine Senkung von Spannung und Frequenz um jeweils 20 %:
Die neue dynamische Leistungsaufnahme beträgt 51,2 % der ursprünglichen. Eine Senkung allein der Spannung um 10 % ergibt den Faktor 0,81, eine Verringerung der dynamischen Leistungsaufnahme und der Energie pro Übergang um 19 %.
Eine niedrigere Spannung verlangsamt auch das Schalten der Transistoren. Die dynamische Spannungs- und Frequenzskalierung (DVFS) passt Spannung und Frequenz gemeinsam an, damit die Schaltung weiterhin mit der gewählten Geschwindigkeit arbeiten kann.
Leistungsaufnahme und Energie beantworten unterschiedliche Fragen
Leistungsaufnahme ist eine Rate, gemessen in Watt; ein Watt ist ein Joule pro Sekunde. Die Energie für eine Aufgabe ist die mittlere Leistungsaufnahme mal Dauer:
| Ausführung | Mittlere Leistungsaufnahme | Zeit | Energie |
|---|---|---|---|
| A | 20 W | 3 s | 60 J |
| B | 30 W | 1,5 s | 45 J |
B nimmt während der Ausführung mehr Leistung auf, verbraucht aber weniger Energie, um die Aufgabe abzuschließen. Die Kühlung muss die Wärmeabgabe pro Zeit bewältigen; für Akku und Stromverbrauch summiert sich der Energieverbrauch über die Zeit.
Bei fester Arbeit mit derselben Anzahl von Übergängen sowie gleicher Spannung und Aktivität verteilt eine Senkung allein der Frequenz diese Übergänge über mehr Zeit. Die dynamische Leistungsaufnahme sinkt, der dynamische Energieverbrauch der Aufgabe bleibt aber unverändert. Eine Spannungssenkung verringert auch die Energie jedes Übergangs. Fällt während des längeren Laufs weiterhin statische Leistungsaufnahme an, kann eine Verlangsamung diesen Anteil des Energieverbrauchs der Aufgabe sogar erhöhen.
Leckströme und ungenutzte Hardware
Eigentlich ausgeschaltete Transistoren lassen weiterhin Leckstrom durch. Kleinere Bauelemente und niedrigere Schwellenspannungen machen Leckströme zu einer wichtigen Entwurfsfrage. Power-Gating trennt einen ungenutzten Bereich von der Stromversorgung, um seine statische Leistungsaufnahme zu verringern.
Ein gering ausgelasteter Server kann dennoch einen erheblichen Anteil seiner maximalen Leistungsaufnahme benötigen. Den Verbrauch an die nützliche Arbeit anzupassen, genannt Energieproportionalität, ist ein Entwurfsziel. Eine Aufgabe schnell abzuschließen und in einen stromsparenden Zustand überzugehen, kann Energie sparen, weil das Intervall kürzer wird, in dem Leckströme und andere Hintergrundlasten Leistung aufnehmen. Rechenleistung und Energieeffizienz können sich daher gemeinsam verbessern.
Wichtige Erkenntnisse
- Die dynamische Leistungsaufnahme skaliert mit Schaltaktivität, Kapazität, Spannung zum Quadrat und Frequenz.
- Eine Spannungssenkung verringert die Energie pro Übergang und erfordert gewöhnlich eine Frequenzanpassung.
- Die Energie einer Aufgabe ist die mittlere Leistungsaufnahme mal Dauer; ein Lauf mit höherer Leistungsaufnahme kann weniger Energie verbrauchen.
- Eine Senkung allein der Frequenz lässt den dynamischen Energieverbrauch einer Aufgabe mit fester Anzahl von Übergängen unverändert.
- Leckstrom verursacht statische Leistungsaufnahme, und Power-Gating verringert die Leistungsaufnahme ungenutzter Bereiche.
- Geringe Auslastung garantiert keine geringe Leistungsaufnahme; Energieproportionalität ist ein Entwurfsziel.
5.2 Warum höhere Taktfrequenzen an eine Leistungsgrenze stießen
Über Jahrzehnte brachten kleinere Transistoren sowohl mehr Bauelemente als auch schnelleres Schalten innerhalb eines beherrschbaren Wärmebudgets. Die Power Wall entstand, als die Spannung nicht mehr ausreichend weiter sinken konnte, um dieses Muster aufrechtzuerhalten. Sie veränderte, wie beim Entwurf neue Transistoren in nützliche Rechenleistung umgesetzt wurden.
Der ideale Zusammenhang der Dennard-Skalierung
Im idealen Skalierungsmodell, das Robert Dennard und Kollegen 1974 entwickelten, beschreibe ein Faktor die Verkleinerung. Abmessungen, Kapazität, Spannung und Verzögerung werden durch diesen Faktor geteilt. Die Frequenz kann mit dem Faktor multipliziert werden. Die dynamische Leistungsaufnahme pro Transistor verändert sich daher um:
Auch die Fläche pro Transistor sinkt um das Quadrat des Verkleinerungsfaktors. Dieselbe Fläche kann entsprechend mehr Transistoren aufnehmen, was die niedrigere Leistungsaufnahme pro Bauelement ausgleicht. Die Leistungsdichte, Watt pro Flächeneinheit, bleibt in diesem idealen Modell ungefähr konstant.
Bei einem Faktor von 1,4 sinken Kapazität und Spannung auf etwa 0,71 ihrer ursprünglichen Werte und die Frequenz steigt um den Faktor 1,4. Die Leistungsaufnahme pro Transistor sinkt auf etwa 0,51. Es passen etwa 1,96-mal so viele Transistoren auf die Fläche, sodass die gesamte Leistungsaufnahme auf derselben Fläche ungefähr unverändert bleibt.
Warum die Spannung nicht weiter mit der Größe sank
Transistoren benötigen eine brauchbare Schwellenspannung zum Schalten. Eine zu starke Senkung der Schwellenspannung erhöht den Leckstrom stark. Mitte der 2000er-Jahre konnte die Versorgungsspannung nicht mehr im gleichen Maße wie die Transistorabmessungen sinken. Bei nahezu fester Spannung erhöht eine höhere Frequenz die dynamische Leistungsaufnahme, und mehr aktive Transistoren auf einer Fläche erhöhen die abzuführende Wärme.
Die historischen Zahlen zeigen das Ausmaß der früheren Veränderung: Die Taktfrequenzen von Desktop-Rechnern stiegen von etwa 10 MHz Anfang der 1980er-Jahre auf 3,8 GHz im Jahr 2004, während die Versorgungsspannungen von ungefähr 5 V in Richtung 1 V sanken. Dies sind grobe historische Werte, keine allgemein gültigen Spezifikationen. Etwa 100 W waren für viele gängige Entwürfe jener Zeit bereits ein schwer zu bewältigendes Kühlbudget.
Intels Streichung des geplanten Pentium 4 mit 4 GHz und des Tejas-Entwurfs im Jahr 2004 markierte diesen Übergang zu Entwürfen mit stärkerer Beachtung der Leistungsaufnahme und zu zwei Kernen. Die Taktfrequenzen blieben danach im Bereich einiger Gigahertz, statt dem früheren raschen Anstieg zu folgen. Die Mikroarchitektur verbesserte weiterhin die Rechenleistung einzelner Kerne, aber Frequenzsteigerungen trugen deutlich weniger zum Gewinn bei.
Verwalte das Wärmebudget
Die Thermal Design Power (TDP) ist ein Zielwert für den Wärmeentwurf, anhand dessen eine Kühllösung für festgelegte Betriebsbedingungen dimensioniert wird. Sie ist weder eine momentane Leistungsmessung noch ein allgemeiner Höchstwert. Werden thermische Grenzen erreicht, senkt die thermische Drosselung die Betriebsgeschwindigkeit, um die Wärme zu verringern.
Enthält ein Chip mehr Hardware, als sein Leistungsbudget gleichzeitig mit voller Geschwindigkeit betreiben kann, müssen einige Bereiche verlangsamt oder abgeschaltet werden. Dark Silicon bezeichnet diese Lücke zwischen verfügbaren Transistoren und gleichzeitig nutzbarer aktiver Hardware.
Das mooresche Gesetz und die Dennard-Skalierung beschreiben unterschiedliche Trends: die Transistoranzahl beziehungsweise das Skalierungsverhalten unter Berücksichtigung der Leistungsaufnahme. Das Ende des Letzteren bedeutete nicht, dass die Transistoranzahl nicht weiter wuchs. Das Hindernis für eine unbegrenzte Erhöhung der Frequenz sind hauptsächlich Leistungsaufnahme und Wärme, nicht eine plötzliche Unfähigkeit der Transistoren, noch schneller zu schalten.
Wichtige Erkenntnisse
- Die ideale Dennard-Skalierung senkte die Spannung zusammen mit der Bauelementgröße und hielt die Leistungsdichte ungefähr konstant.
- Leckströme und Beschränkungen der Schwellenspannung verhinderten, dass die Spannung weiterhin ideal skaliert wurde.
- Ohne entsprechende Spannungssenkungen erhöhen schnellere Takte und mehr aktive Bauelemente die Leistungsdichte.
- Die TDP dient zur Auslegung der Kühlung unter festgelegten Bedingungen; thermische Drosselung reduziert bei thermischen Grenzen die Geschwindigkeit.
- Dark Silicon beschreibt Hardware, die innerhalb des Leistungsbudgets nicht vollständig gleichzeitig mit voller Geschwindigkeit aktiv sein kann.
- Moores Trend der Transistoranzahl unterscheidet sich von Dennards Skalierungszusammenhang.
5.3 Nutze mehr Kerne innerhalb eines Leistungsbudgets
Ein Mehrkernprozessor vereint mehrere Kerne auf einem Chip. Jeder Kern führt einen Befehlsstrom aus, während sich die Kerne den Hauptspeicher und oft einige Caches teilen. Gängige Desktop- und Laptop-Entwürfe gingen um 2005–2006 zu zwei Kernen über, da die Erhöhung der Taktfrequenz eines einzelnen Kerns immer mehr Leistung kostete.
Vergleiche zwei langsamere Kerne mit einem schnelleren Kern
Betrachte einen Kern mit 4 GHz und 1,2 V gegenüber zwei Kernen mit 3 GHz und 1,0 V. Halte für diesen Vergleich die Kapazität pro Kern und die Schaltaktivität gleich. Die relative dynamische Leistungsaufnahme beträgt:
Bei gleicher Arbeit pro Zyklus und genügend unabhängiger Arbeit für beide Kerne verändert sich der ideale Durchsatz um den Faktor:
Das Paar bietet etwa 50 % mehr Durchsatz für etwa 4 % mehr dynamische Leistungsaufnahme. Durch die quadrierte Spannungssenkung ist der zusätzliche Kern in diesem Modell innerhalb des Budgets möglich. Statische Leistungsaufnahme, Grenzen des gemeinsamen Speichers und Koordinationskosten bleiben bei der Beurteilung eines vollständigen Chips wichtig.
Für ein sequenzielles Programm, das nur einen neuen Kern nutzt, sinkt die Rechenleistung bei gleicher Arbeit pro Zyklus auf drei Viertel des ursprünglichen Werts. Es benötigt vier Drittel der ursprünglichen Zeit. Die Zusammenfassung der beiden 3-GHz-Frequenzen zu „6 GHz“ würde dieses Ergebnis verdecken: Keiner der Kerne taktet mit 6 GHz.
Die Software muss die Arbeit bereitstellen
Vor der Power Wall beschleunigten höhere Frequenzen und überlappende Ausführung durch Hardware oft vorhandenen Code ohne größere Änderungen. Zusätzliche Kerne benötigen unabhängige Befehlsströme. Ein Programm profitiert davon, indem es seine Arbeit in nebenläufige Aufgaben aufteilt, die Zuweisungen gleichmäßig verteilt und Ergebnisse koordiniert. Parallele Bibliotheken können diese Struktur bereitstellen, die Arbeit muss aber weiterhin eine brauchbare parallele Form haben.
Befehlsparallelität überlappt Befehle innerhalb eines Stroms mithilfe von Hardware- und Compilertechniken wie Pipelining und Mehrfachausgabe. Threadparallelität führt verschiedene Threads auf mehreren Kernen aus. Dies sind unterschiedliche Quellen der Nebenläufigkeit: Die erste stellt nicht sicher, dass ein Programm jeden Kern auslasten kann.
Unabhängige Serveranfragen liefern auf natürliche Weise viele Ströme, sodass mehrere Kerne den Durchsatz verbessern können, selbst wenn jede Anfrage sequenziell bleibt. Um die Berechnung einer einzelnen Anfrage zu verkürzen, ist Parallelität innerhalb dieser Anfrage nötig. Ihr sequenzieller Anteil setzt dann die Schranke nach Amdahl.
Setze Transistoren für effiziente Arten von Arbeit ein
Mehr Transistoren können größere Caches, mehrere Allzweckkerne oder spezialisierte Hardware ermöglichen. GPUs und domänenspezifische Beschleuniger sind auf Arbeitslasten wie Grafik, maschinelles Lernen und Videokodierung ausgerichtet. Chips können auch schnelle Kerne mit hoher Leistungsaufnahme mit kleineren, effizienteren Kernen kombinieren, wie bei Arm-big.LITTLE-Entwürfen.
Bei einem festen Leistungsbudget vergleicht die Rechenleistung pro Watt die nützliche Rechenleistung mit der Leistungsaufnahme. SPEC CPU 2026 unterstützt neben Leistungskennzahlen auch Energiemessungen. Eine gute Entwurfsentscheidung berücksichtigt die Abschlusszeit der Arbeitslast, ihren Energieverbrauch und die Leistungsaufnahme, die das System dauerhaft bewältigen kann.
Wichtige Erkenntnisse
- Mehrkernchips führen mehrere Befehlsströme auf getrennten Kernen aus.
- Eine niedrigere Spannung und Frequenz pro Kern können den Gesamtdurchsatz innerhalb eines ähnlichen Budgets für die dynamische Leistungsaufnahme verbessern.
- Eine sequenzielle Aufgabe erhält durch ungenutzte Kerne keine zusätzliche Ausführungskapazität.
- Die Überlappung von Befehlen und Threadparallelität sind unterschiedliche Mechanismen.
- Unabhängige Anfragen können den Systemdurchsatz verbessern, ohne die Rechenzeit jeder einzelnen Anfrage zu verringern.
- Spezialisierte Hardware und Hardware mit unterschiedlichen Kernen bieten weitere Möglichkeiten, Transistoren effizient zu nutzen.
Abstraktion und Rechenleistung: Beispiele
1Verfolge eine Berechnung vom Code bis zur Hardware
16 Schritte
- 1EinführungEine Addition, mehrere Sichten
Die C-Anweisung
total = price + tax;beschreibt ein Ergebnis, lässt aber Register, Befehlskodierungen und Schaltungen unerwähnt. Diese Einzelheiten liegen in unterschiedlichen Schichten, von denen jede eine Abstraktion ist, die ihre Arbeit hinter einer Schnittstelle verbirgt.Verfolge die Addition nach unten und frage dann, was übereinstimmen muss, damit eine Binärdatei auf einer anderen Maschine läuft: die ISA und ihre Konventionen. So trennst du das Verhalten, auf das Software angewiesen ist, von den Hardwareentscheidungen, die ihre Rechenleistung bestimmen.
- 2ErklärungEine Schnittstelle verbirgt interne Arbeit
Eine Abstraktion stellt einen nützlichen Dienst bereit und verbirgt dessen interne Implementierung. Eine Anwendung kann das Lesen einer Datei anfordern, ohne die Elektronik des Speichergeräts zu steuern.
Ein häufiger Weg nach unten lautet Anwendungen → Systemsoftware → ISA → Mikroarchitektur → digitale Logik → Schaltungen → Transistoren. Jede Sicht macht das System beherrschbar, indem sie eine Grenze bereitstellt, an der eine andere Person beim Entwurf arbeiten kann.
- 3BeispielWer entscheidet was bei der Addition?
Für
total = price + tax;kann der Compiler Register und einen Additionsbefehl auswählen. Er muss die Gatter des Addierers nicht entwerfen.Beim Entwurf der Mikroarchitektur wird die Ausführungshardware ausgewählt; beim Logikentwurf wird ein Addierer aus Gattern aufgebaut; beim Schaltungsentwurf wird das elektrische Verhalten behandelt. Die Einhaltung der Schnittstellen ermöglicht es, jede Entscheidung in die vollständige Berechnung einzufügen, ohne Programmierenden jedes darunterliegende Detail offenzulegen.
- 4VerbindungOrdne die physischen Komponenten ein
Die fünf klassischen Komponenten sind Eingabe, Ausgabe, Speicher, Datenpfad und Steuerwerk. Die CPU vereint Datenpfad und Steuerwerk: Der eine führt Operationen auf Daten aus, das andere steuert die Arbeit.
DRAM dient als Arbeitsspeicher, SRAM stellt kleine schnelle Caches bereit, und beide sind flüchtig. Flash-Speicher und Magnetfestplatten behalten Daten ohne Strom. Ein Betriebssystem verwaltet diese Ressourcen als Software, die auf der CPU läuft.
- 5HerausforderungErkenne die veränderte Schicht
Eine Fachkraft ersetzt die Gatter innerhalb eines Addierers. Seine Maschinenbefehle liefern weiterhin alle geforderten Ergebnisse. Hat die Fachkraft notwendigerweise die ISA verändert? Erkläre.
---reveal---
Nein. Die Fachkraft hat die Implementierung der digitalen Logik verändert. Die ISA legt das sichtbare Verhalten der Addition fest; verschiedene Gatteranordnungen können dieselbe Spezifikation erfüllen. Sie können sich dennoch in Verzögerung, Leistungsaufnahme oder Fläche unterscheiden.
- 6KernaussageMehr Bauelemente legen keine Aufgabendauer fest
Ein Transistor wirkt als elektrisch gesteuerter Schalter, und ein Chip vereint viele solcher Bauelemente. Das mooresche Gesetz beschreibt den historischen Trend einer ungefähren Verdopplung der Transistoranzahl etwa alle zwei Jahre.
Zehn Verdopplungen ergeben über etwa 20 Jahre den Faktor 1.024. Dieser Herstellungstrend, dessen Tempo sich verlangsamt hat, legt nicht fest, wie schnell ein einzelnes Programm läuft. Die zusätzlichen Bauelemente benötigen weiterhin eine nützliche Organisation und ein praktikables Leistungsbudget.
- 7ErklärungErstelle eine ausführbare Datei
Ein Compiler übersetzt Hochsprachenquellcode in Assemblersprache oder Objektcode. Ein Assembler kodiert Assemblersprache in eine Objektdatei. Ein Linker verbindet Objektdateien und Bibliothekscode und löst Verweise zwischen ihnen auf.
Der Lader bildet die ausführbare Datei anschließend im Speicher ab und startet sie. Dies sind unterschiedliche Aufgaben: Bei übersetztem Code muss möglicherweise noch ein Bibliotheksverweis aufgelöst werden, bevor daraus die ausführbare Datei für den Lauf entsteht.
- 8BeispielWähle Register und einen Befehl
Angenommen,
pricesteht inx6,taxinx7, und das Ergebnis gehört nachx5. Aus der C-Addition kann werden:add x5, x6, x7Das Ziel steht in dieser Assemblersyntax zuerst. Der Befehl liest die beiden Quellregister, addiert ihre Werte und schreibt das Ergebnis in das Zielregister. Der Text ist ein symbolischer Befehl; der Prozessor benötigt seine binäre Kodierung.
- 9BeispielKodiere dieselbe Addition
Die Felder der Kodierung im R-Format lauten in der gespeicherten Bitreihenfolge:
- funct7:
0000000 - rs2:
00111 - rs1:
00110 - funct3:
000 - rd:
00101 - opcode:
0110011
Zusammen kodieren sie
0x007302B3. Die Quellregisterfelder stehen in der Bitanordnung vor dem Zielfeld, obwohl das Ziel im Assemblertext zuerst kommt. Die Feldpositionen ermöglichen es der Hardware, dieselben Bits einheitlich zu interpretieren. - funct7:
- 10TippZähle Operationen, nicht Quellcodezeilen
Selbst wenn Operanden bereits in Registern stehen, benötigt
f = (g + h) - (i + j);zwei Additionen und eine Subtraktion. Liegen Daten zunächst im Speicher, kommen Ladebefehle hinzu.Auch eine Kurzform in Assemblersprache kann einen Übersetzungsschritt verbergen: Aus
mv x5, x6wirdaddi x5, x6, 0. CPython interpretiert zwischengeschalteten Bytecode und Java verwendet häufig JIT-Kompilierung, doch auf jedem Weg führt die physische CPU letztlich Maschinenbefehle aus. - 11HerausforderungFinde eine nicht aufgelöste Funktion
Assemblersprache wurde in Objektcode umgewandelt, aber ein Aufruf verweist noch auf eine Funktion in einer anderen Objektdatei. Welcher Schritt behandelt diesen Verweis und welcher spätere Schritt startet das Programm?
---reveal---
Der Linker löst den Verweis auf, während er die Objektdateien verbindet. Der Lader bildet die entstandene ausführbare Datei später im Speicher ab und startet sie. Das Laden ersetzt nicht die Übersetzung und Auflösung von Verweisen in den früheren Erstellungsschritten.
- 12ErklärungTrenne den Vertrag von seiner Implementierung
Die ISA legt Befehle, Kodierungen, Register, Adressierung und weiteres sichtbares Maschinenverhalten fest. Die Mikroarchitektur bestimmt interne Pipelines, Ausführungseinheiten, Caches und zugehörige Strukturen.
Ob eine Multiplikation existiert und welches Ergebnis sie liefert, sind Fragen der ISA. Ob diese Multiplikation einen oder vier Zyklen dauert, ist eine Frage der Implementierung. Zwei kompatible Prozessoren können daher dasselbe Ergebnis mit unterschiedlicher Geschwindigkeit berechnen.
- 13VerbindungErgänze die binären Konventionen
Die ABI ergänzt die für Anwendungsprogramme sichtbare ISA um Betriebssystemschnittstellen und Konventionen wie Argumentregister und Datenlayout. Eine Binärdatei benötigt sowohl die von ihr verwendeten Befehlsmerkmale als auch eine kompatible Ausführungsumgebung.
RISC-V bietet die Basen RV32I und RV64I sowie optionale Erweiterungen, darunter M für Ganzzahlmultiplikation und -division sowie F und D für Gleitkommaoperationen. Eine gemeinsame Basis-ISA allein garantiert nicht jede Erweiterung oder ABI, die ein Programm erwartet.
- 14HerausforderungBestimme, was Kompatibilität wirklich erfordert
Eine Binärdatei läuft auf einer neuen Maschine mit anderer Cachegröße, scheitert aber auf einer anderen Maschine, der eine von ihr verwendete Befehlserweiterung fehlt. Was erklärt die unterschiedlichen Ergebnisse?
---reveal---
Die Cachegröße ist eine Implementierungsentscheidung, die die Geschwindigkeit beeinflussen und zugleich das geforderte ISA-Verhalten bewahren kann. Durch die fehlende Erweiterung fehlt die Unterstützung für Befehle, die die Binärdatei benötigt. Die Wiederverwendung einer Binärdatei setzt die relevanten ISA-Merkmale und die ABI voraus; identische Caches gehören nicht zu dieser Anforderung.
- 15HerausforderungBeurteile die Aussage zum umfangreicheren Befehl
Ein vorgeschlagener ISA-Befehl ersetzt mehrere ältere Befehle. Sein Entwickler behauptet, dass dies allein ein schnelleres Programm auf der neuen Maschine beweise. Was muss noch verglichen werden?
---reveal---
Vergleiche Befehlsanzahl, durchschnittliche Taktzyklen pro Befehl und Taktperiode für die vollständige Aufgabe. Der neue Befehl kann die Anzahl verringern, während er den Zyklenaufwand erhöht oder eine längere Taktperiode erfordert. Der Vorteil bei der Übersetzung wird erst durch das vollständige Zeitprodukt zu einem Leistungsgewinn.
- 16ZusammenfassungBetrachte den ganzen Weg
Ein Quellcodeausdruck wird durch Übersetzung und Linken zu Befehlen und läuft anschließend auf Hardware, die eine ISA implementiert. Die ABI ergänzt die Konventionen, die die Umgebung der ausführbaren Datei benötigt.
Nutze diesen Weg, um eine Änderung einzuordnen: Codeentscheidungen verändern den Befehlsstrom; Implementierungsentscheidungen verändern, wie er läuft. Bei Kompatibilität geht es um das geforderte Verhalten, während die Rechenleistung von Arbeit und Zeitverhalten in den unteren Schichten abhängt.
2Wähle und interpretiere eine Leistungsgröße
12 Schritte
Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.
- 1EinführungBestimme, was Abschluss bedeutet
- 2ErklärungMiss eine Aufgabe oder einen Strom
- 3BeispielKehre das Zeitverhältnis um
- 4HerausforderungKann dieselbe Rate dieselbe Wartezeit bedeuten?
- 5ErklärungLies Gesamt-, Benutzer- und Systemzeit
- 6KernaussageParallele CPU-Sekunden addieren sich
- 7BeispielBilde den Kehrwert in Sekunden
- 8TippHalte dezimale und binäre Präfixe auseinander
- 9HerausforderungBestimme eine Taktperiode
- 10TippBeschreibe einen tatsächlichen Lauf
- 11HerausforderungSage die Gesamtlaufzeit nach einer CPU-Aufrüstung voraus
- 12ZusammenfassungOrdne der Aussage die richtige Einheit zu
3Erstelle und prüfe eine Vorhersage der CPU-Zeit
21 Schritte
Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.
- 1EinführungDrei Faktoren ergeben eine Ausführungszeit
- 2ErklärungBeginne mit dem Zyklenbudget
- 3BeispielBestimme die Zyklenanzahl vor der Entwurfsänderung
- 4VerbindungDer Takt kann die benötigte Logik nicht überholen
- 5HerausforderungReicht die Takterhöhung aus?
- 6ErklärungDer CPI-Wert ist ein nach Ausführung gewichtetes Mittel
- 7BeispielBerechne einen Befehlsmix
- 8BeispielEine längere Folge kann insgesamt weniger Zyklen benötigen
- 9KernaussageEin Durchschnitt unter eins ist möglich
- 10HerausforderungBerechne Zyklen und die Rate als Kehrwert
- 11ErklärungRechne Befehle bis zur Zeit um
- 12BeispielVergleiche zwei gleiche Befehlsanzahlen
- 13VerbindungFinde den Ansatzpunkt im Entwurf
- 14HerausforderungBestimme einen gemessenen CPI-Wert
- 15ErklärungWähle die Benchmark-Kennzahl
- 16BeispielMultipliziere Verhältniszahlen und ziehe dann die Wurzel
- 17HerausforderungLies eine Durchsatzverhältniszahl
- 18BeispielPrüfe, was ein hoher MIPS-Wert belohnt
- 19TippLies Spitzenwerte als Leistungsfähigkeit
- 20HerausforderungFühre Compiler- und Hardwareänderungen zusammen
- 21ZusammenfassungPrüfe die vollständige Aussage
4Finde heraus, welcher Teil einen Speedup begrenzt
15 Schritte
Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.
- 1EinführungBehalte die unveränderte Arbeit im Budget
- 2ErklärungTeile die ursprüngliche Zeit vor der Beschleunigung auf
- 3BeispielBeschleunige den Gleitkommateil
- 4BeispielRechne von der Zielzeit aus rückwärts
- 5KernaussageUntersuche den aufwendigen Teil mit Profiling
- 6HerausforderungWähle die bessere Verbesserung
- 7ErklärungNutze Kerne nur für parallele Zeit
- 8BeispielErgänze viele Kerne für eine zu 95 % parallele Aufgabe
- 9ErklärungTeile den Speedup durch die Kernanzahl, um die Effizienz zu bestimmen
- 10BeispielDer Abschluss wartet auf den am stärksten ausgelasteten Kern
- 11HerausforderungBestimme die sequenzielle Beschränkung
- 12VerbindungÄndere die Frage, wenn die Arbeit wächst
- 13HerausforderungPrüfe, ob sich zwei Aussagen widersprechen
- 14HerausforderungBerücksichtige CPU-Arbeit und Warten auf Dateien
- 15ZusammenfassungBestimme zuerst die verbleibende Zeit
5Erkläre die Power Wall und die Antwort durch Mehrkernprozessoren
19 Schritte
Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.
- 1EinführungRechenleistung hat ein Wärmebudget
- 2ErklärungBerücksichtige Schalten und Leckstrom getrennt
- 3BeispielBerücksichtige die Spannung zum Quadrat
- 4BeispielVergleiche den Energieverbrauch einer vollständigen Aufgabe
- 5KernaussageEine niedrigere Frequenz beseitigt keine Übergänge
- 6HerausforderungHalte die statische Komponente unverändert
- 7ErklärungDie ideale Verkleinerung hielt die Leistungsdichte stabil
- 8BeispielPrüfe eine ideale Technologiegeneration
- 9ErklärungDie Spannung konnte der Größe nicht weiter folgen
- 10VerbindungVerstehe thermische Grenzen als Betriebsbeschränkungen
- 11HerausforderungUntersuche das Scheitern der Skalierung
- 12ErklärungMehr Kerne stellen getrennte Ströme bereit
- 13BeispielBerechne die dynamische Leistungsaufnahme zweier langsamerer Kerne
- 14BeispielFrage, ob die Arbeitslast beide Kerne nutzen kann
- 15VerbindungUnterscheide Befehls- und Threadüberlappung
- 16VerbindungNutze spezialisierte Hardware für geeignete Arbeit
- 17HerausforderungWähle einen Entwurf für unabhängige Arbeit
- 18HerausforderungVerbinde Verlangsamung, Energie und Abschlusszeit
- 19ZusammenfassungStimme den Entwurf auf seine nützliche Arbeit ab
Abstraktion und Rechenleistung: Übungsaufgaben
Set 1: Verbinde die Schichten und grundlegende Leistungsgrößen10 Übungsfragen
Frage 1 von 10
Antwort zeigenAntwort ausblenden
Frage 2 von 10
Antwort zeigenAntwort ausblenden
Frage 3 von 10
Antwort zeigenAntwort ausblenden
Frage 4 von 10
Antwort zeigenAntwort ausblenden
Frage 5 von 10
Antwort zeigenAntwort ausblenden
Frage 6 von 10
Antwort zeigenAntwort ausblenden
Frage 7 von 10
Antwort zeigenAntwort ausblenden
Frage 8 von 10
Antwort zeigenAntwort ausblenden
Frage 9 von 10
Antwort zeigenAntwort ausblenden
Frage 10 von 10
Antwort zeigenAntwort ausblenden
Set 2: Interpretiere Arbeitslasten, Befehlsmixe und Entwurfsänderungen10 Übungsfragen
Speichere diese Einheit, um jede Antwort zu sehen und jedes Set zu üben.
Frage 1 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 2 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 3 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 4 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 5 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 6 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 7 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 8 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 9 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 10 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Set 3: Finde Engpässe und vergleiche vollständige Entwürfe10 Übungsfragen
Speichere diese Einheit, um jede Antwort zu sehen und jedes Set zu üben.
Frage 1 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 2 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 3 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 4 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 5 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 6 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 7 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 8 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 9 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 10 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Set 4: Untersuche Aussagen und bestimme fehlende Größen10 Übungsfragen
Speichere diese Einheit, um jede Antwort zu sehen und jedes Set zu üben.
Frage 1 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 2 von 10
mv x9, x10 als addi x9, x10, 0 assembliert werden. Was für ein Assemblerkonstrukt ist mv hier?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 3 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 4 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 5 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 6 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 7 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 8 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 9 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 10 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Set 5: Verbinde Zeit, Parallelität und Leistungsbudgets10 Übungsfragen
Speichere diese Einheit, um jede Antwort zu sehen und jedes Set zu üben.
Frage 1 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 2 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 3 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 4 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 5 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 6 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 7 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 8 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 9 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 10 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Hängst du bei deiner eigenen Aufgabe fest? Hausaufgabenhilfe
Schlüsselbegriffe
A
Abstraktion
Abwärtskompatibilität
Aktivitätsfaktor
Amdahlsches Gesetz
Antwortzeit
Assembler
add x5, x6, x7 in seine binäre Kodierung um und erweitert unterstützte Pseudobefehle.Assemblersprache
add x5, x6, x7 nennt ein Zielregister und zwei Quellregister.Aufrufkonvention
Ausführbare Datei
B
Befehle pro Taktzyklus
Befehlsanzahl
Befehlsmix
Befehlsparallelität
Befehlssatzarchitektur
Benchmark
Benchmark-Suite
Benutzer-CPU-Zeit
Beschleunigbarer Anteil
Beschleuniger
Betriebssystem
Binärpräfix
Binärschnittstelle (ABI)
Bytecode
C
CMOS
Compiler
CPU-Leistungsgleichung
CPU-Taktzyklen
CPU-Zeit
D
Dark Silicon
Datenpfad
Dennard-Skalierung
DRAM
Durchsatz
DVFS
Dynamische Leistungsaufnahme
Dynamischer Energieverbrauch
E
Effektive mittlere Taktfrequenz
Energie
Energieproportionalität
G
Geometrisches Mittel
Gesamtlaufzeit
Gewichtetes arithmetisches Mittel
Gustafsonsches Gesetz
H
Heterogene Prozessorkerne
I
Integrierter Schaltkreis
Interpreter
J
Just-in-time-Kompilierung
K
Kapazitive Last
Kritischer Pfad
L
Lader
Lastungleichgewicht
Leckstrom
Leistungsaufnahme
Leistungsdichte
Leistungszähler
Linker
Lokaler Speedup
M
Maschinensprache
0x007302B3 stellt eine maschinensprachliche Kodierung für eine RISC-V-Addition dar.Mehrkernprozessor
Mikroarchitektur
MIPS
Mooresches Gesetz
O
Objektdatei
P
Parallele Effizienz
Parallelisierbarer Anteil
Pipelining
Power Wall
Power-Gating
Profiling
Pseudobefehl
mv x5, x6 ist ein Pseudobefehl, der als addi x5, x6, 0 umgesetzt werden kann.R
Rechenleistung
Rechenleistung pro Watt
RISC-V
S
Schwache Skalierung (Weak Scaling)
Sequenzieller Anteil
SPECrate
SPECspeed
Speedup
Spitzenleistung
SRAM
Starke Skalierung (Strong Scaling)
Statische Leistungsaufnahme
Steuerwerk
System-CPU-Zeit
Systemsoftware
T
Taktfrequenz
Taktperiode
Taktzyklen pro Befehl
Thermal Design Power (TDP)
Thermische Drosselung
Threadparallelität
Transistor
Z
Zyklenbudget
- 1Abstraktion und Rechenleistung
- 2Befehlssätze und Assemblersprache
- 3Rechnerarithmetik
- 4Prozessor-Datenpfad und Pipelining
- 5Speicherhierarchie und Caches
- 6Mehrkernprozessoren
Über diese Einheit
Erstelle deine eigenen Lernmaterialien
Mach aus deinen Notizen, Folien und Dokumenten Lernleitfäden, Übungsfragen, Karteikarten und 6 weitere Tools.