Was versteht man unter einem Akkumulatormaschine?
nur ein Register für arithmetische/logische Operationen
übrige Operanden im Speicher
Was für Operationen gibt es (Ort der Operanden)?
Speicher - Register Operationen
Register - Register Operationen
Speicher - Speicher Operationen
Was versteht man unter einer Stackmaschine?
keine frei adressierbaren Register, nur ein Stack
Operationen passieren mit der obersten Stackposition
kurze Instruktionen
Was versteht man unter einer Speicher - Speicher Architektur?
Operanden müssen sich im Hauptspeicher befinden
Operanden sind Adressen des Hauptspeichers
keine Register
Was versteht man unter einer Register - Register Architektur?
frei adressierbare Register
Instruktionen verwenden ausschließlich Register als Operanden
auch load-store Maschine genannt
Moin Alex
Spaß haha zieh ab
Hallo Scheppers
Tschüß Schepers keiner will dich sehen
Wie sieht die Grundstruktur einer Computers aus?
besteht aus Prozessor, Speicher und Ein/Ausgabe
Speicher enthält Daten und Instruktionen
Prozessor besteht aus Rechenwerk und Steuerwerk
-> Spezielles Register, Program Counter (PC, Befehlszähler), beinhaltet Speicheradresse der auszuführenden Instruktion
-> zusätzliche Register im Rechenwerk (schnellere Rechenoperationen als mit Operanden im Speicher)
Wie läuft der Instruktionszyklus ab?
Welche Sichtweisen gibt es auf Computer?
Klassische Sichtweise:
Ein- und Ausgabe
Speicher
Rechenwerk und Steuerwerk (Prozessor)
Moderne Sichtweise:
Datenpfad und Kontroller
Wie sind MIPS Arithmetikoperationen aufgebaut?
drei Operanden
hinteren beiden Operanden sind Quellregister
erster Operand ist Zielregister
nur Register als Operanden
Wie viele Register hat eine MIPS Architektur und wie groß sind diese?
Die MIPS Architektur hat 32 allgemeine Register, die 32 Bit breit sind.
Welche Instruktionsformate gibt es?
R-Typ (Register-Format) -> wird für arithmetische und logische Instruktionen verwendet.
I-Typ (Immediate-Format) -> wird für immediate-Versionen (Konstanten) der arithmetische und logischen Instruktionen, für Datentransferinstruktionen und für Verzweigungsinstruktionen verwendet.
J-Typ (Jump-Format) -> wird für unbedingte Sprünge verwendet.
Wie ist das R-Typ Instruktionsformat aufgebaut?
Wie ist das I-Typ Instruktionsformat aufgebaut?
-> Der immediate-Wert ist eine 16-Bit vorzeichenbehaftete Zahl im 2er-Komplement.
Wie ist das J-Typ Instruktionsformat aufgebaut?
-> Der target-Wert ist eine 26-Bit Zahl, die als Wortadresse interpretiert wird.
Wovon ist die Performance eines Computers abhängig?
Wie setzt sich die Relative Performance zweier Computer A und B zusammen?
Woraus ergibt sich die Prozessorausführungszeit T_exe für ein Programm?
Was bedeuten die einzelnen Bestandteile der Gleichung?
T_exe: Prozessorausführungszeit für ein Programm
I_c: instruction count -> Anzahl der Maschineninstruktionen, die bei der Programmausführung abgearbeitet werden
CPI: cycles per instruction -> Durchschnittliche Anzahl der benötigten Taktzyklen pro Instruktion
T: Taktperiode -> Taktfrequenz f = 1/T
Wie lässt sich der CPI-Wert (cycles per instruction) beschreiben?
CPI_i: CPI-Wert der Instruktionsklasse i
F_i: relative Häufigkeit der Instruktionsklasse i im asugeführten Programm
Wie berechnet sich die MIPS-Rate (million instructions per second)?
Wie setzt sich die relative Performance zweier Computer A und B als Verhältnis der Gesamtausführungszeiten zusammen?
Wie lässt sich die Performanceverbesserung darstellen?
Wie lautet Amdahls Gesetz?
Wie groß muss die Taktperiode einer Rechnerarchitektur mindestens sein?
Die Taktperiode muss mindestens so groß sein wie die maximale Summe aller kombinatorischen Verzögerungszeiten zwischen zwei Registerstufen.
Was macht die Einzyklenimplementierung aus?
Jede Instruktion erfolgt innerhalb eines Taktzyklusses
Jede Komponente des Datenpfades kann während eines Instruktionszyklus maximal einmal verwendet werden -> Getrennte Speicher für Instruktionen und Daten
Damit alle Instruktionsklassen die gleichen Datenpfadelemente nutzen können, benötigt man mehrere Multiplexer
Was sind die Vor- und Nachteile einer Einzyklenimplementierung:
Vorteile:
einfache Implementierung
einfacher Kontrollerentwurf
CPI-Wert von 1
Nachteile:
Instruktionen benötigen unterschiedliche Datenpfadelemente und daher unterschiedliche kombinatorische Gesamtverzögerungen
-> Taktperiode T muss so groß wie das Maximum aller Verzögerungen sein
Anhand welcher Kriterien kann man die Mehrzyklenimplementierung beschreiben?
Instruktionsabarbeitung wird in mehrere Schritte aufgeteilt
Jeder Schritt benötigt dabei einen Taktzyklus
Je nach Instruktion ist eine verschiedene Anzahl an Schritten notwendig
Was spricht für und was gegen die Mehrzyklenimplementierung?
Kürzere Taktperiode T als bei der Einzyklenimplementierung
Datenpfadelemente können mehrmals in einem Instruktionszyklus verwendet werden -> Reduktion der Hardware beispielsweise ist nur ein Speicher nötig
Register zur Speicherung der Signale zwischen den Taktschritten nötig
komplexerer Kontroller
Wie setzt sich der Speedup durch Pipelining gegenüber einer Implementierung ohne Pipelining zusammen?
Was bedeuten die einzelnen Bestandteile der Formel?
mit k Pipelinestufen und n Instruktionen
Wenn man die Anzahl der Instruktionen n beim Speedup durch Pipelining gegen unendlich laufen lässt, was ist das Ergebnis?
Wie wird dieser Speedup genannt?
Wie kann man die Mittlere Zugriffszeit (MZZ) bei Speicherhierarchien beschreiben?
Wie lassen sich die dazugehörigen Terme erklären?
Mittlere Zugriffszeit (MZZ, average access time) = hit-time + miss-rate * miss - penalty
hit-time: Zeit die benötigt wird bei einem erfolgreichen Zugriff auf Speicher in einer Ebene -> beinhaltet Zeit zum Feststellen des hits und die Zeit für den Datenzugriff
miss-rate: Anteil der Speicherzugriffe, die nicht erfolgreich sind -> miss-rate = 1 - hit-rate
miss-penalty(Miss-Strafe): Zeit für das Bereitstellen der Daten aus der unteren Ebene
Unter Einbeziehung der cache misses, wie berechnet sich die Ausführungszeit T_exe eines Programmes?
-> Der Performanceverlust durch memory stalls schlägt sich in einem größeren CPI-Wert nieder
Wie adressiert der MIPS seinen Speicher?
Wie werden die Wörter (4 Byte) im Speicher abgelegt?
Der Speicher wird mit Byteadressen adressiert
MIPS verwendet die “Big-Endian” Konvention -> Wort wird mit der Adresse seines höchstwertigsten Bytes adressiert
Wie lauten die MIPS Datentransferinstruktionen inklusive jeweils einem Beispiel?
load word: lw target, source -> lw $t0, 32($s3) # $t0 = Memory[$s3+32]
lw $t0, 32($s3) # $t0 = Memory[$s3+32]
store word: sw source, target -> sw $t0, 48($s3) # Memory[$s3+48] = $t0
sw $t0, 48($s3) # Memory[$s3+48] = $t0
Wie lang sind MIPS Instruktionen?
Alle MIPS Instruktionen sind 32 Bit lang
Welche Adressierungsarten verwendet die MIPS Architektur?
Basisadressierung
PC-relative Adressierung
Pseudodirekte Adressierung
Was ist der Unterschied zwischen CISC und RISC Prozessoren?
CISC (complex instruction set computer):
variable Instruktionslänge
Register/Speicher Operationen
viele, komplexe Adressierungsarten
viele Varianten von Instruktionen
RISC (reduced instruction set computer):
feste Instruktionslänge
load/store Architektur
wenige Adressierungsarten
wenige Instruktionen
Wie kann die Leistungsfähigkeit (Leistung, Performance) eines Computers ausgedrückt werden?
Durch die Ausführugnszeit (execution time, [s]) eines Programms
Durch den Durchsatz (throughput, [s^-1]), sprich der Anzahl an Programmen pro Zeiteinheit
Wie lauten die Schritte eines Instruktionszyklus einer Mehrzyklenimplementierung?
Was wird durch Pipelining verbessert?
Durch Pipelining wird der Instruktionsdurchsatz erhöht, nicht aber die Ausführungszeit einer Instruktion verkürzt.
Welche Konflikte (Hazards) können bei Pipelining auftreten und wie können diese möglicherweise gelöst werden?
structural hazards (strukturelle Konflikte):
Hardware unterstützt das Pipelining bestimmter Instruktionskombinationen nicht, beispielsweise bei gleichzeitigem Zugriff auf Daten
-> getrennte Speicher für Programme und Daten und getrennte Busse (Harvard - Architektur)
-> Cache splitting in Instruktions- und Datencache
-> Schreiben und Lesen des Registerfiles in einem Taktzyklus
-> sonst muss Pipeline angehalten werden (pipeline stall)
data hazards (Datenkonflikte):
Eine Instruktion wartet auf das Ergebnis einer vorhergegangenen Instruktion
auch RAW- (read after write) Abhängigkeit genannt
-> Registerfile mit Halbtaktzugriff
-> pipeline stall durch Einfügen von Leeroperationen (Bubbles) -> Performanceverlust
-> Daten früher bereitstellen (Forwarding/Bypassing)
-> Umordnen der Instruktionen durch optimierte Compiler beispielsweise
control hazards (Steuerkonflikte):
treten bei Verzweigungen und Sprüngen auf
Ergebnis einer Sprunginstruktion ist noch nicht bekannt, während nächste Instruktionen ausgeführt werden sollen
-> pipeline freeze (Anhalten der Pipeline)
-> branch delay slots (Nutzen der Sprungverzögerung, auf Verzweigungsinstruktion folgen eine Reihe von Instruktionen, die unabhängig vom Ergebnis des Sprungs sind)
-> static branch prediction (statische Sprungvorhersage, es wird angenommen dass nie verzweigt wird, was im korrekten Fall zu keinem branch penalty und im falschen Fall zu einem branch Penalty von ein paar Taktzyklen führt, siehe z.B. ATMega und MIPS)
-> dynamic branch prediction (dynamische Sprungvorhersage, es werden vergangene Sprungentscheidungen gemerkt (branch taken oder branch not token), branch prediction buffer speichert die Vergangenheit der Sprunginstruktionen und branch target buffer speichert die zuletzt berechneten Zieladressen der Sprünge)
Was ist ein Bussystem und was sind Vor- bzw. Nachteile dieser Technologie?
Ein Bus ist eine von mehreren Einheiten gemeinsam genutzte Kommunikationsverbindung
geringer Hardwareaufand und Kosten
leichte Einbindung neuer Komponenten
“broadcast” leicht umsetzbar (Ein Teilnehmer schreibt auf den Bus und alle anderen Teilnehmer lesen die Daten)
Bus kann zum bottleneck werden, da nur eine Kommunikation zu einem Zeitpunkt stattfinden kann
bei Ausfall des Busses funktioniert die Kommunikation unter allen Teilnehmern nicht mehr
Mit welchen Kriterien lässt sich die Performance eines Busses charakterisieren?
Datenrate [MB/s], auch als Bandbreite bezeichnet
Latenz [s], Zeit von der Anforderung bis zur Übertragung der Daten
Welche Busarten gibt es?
Prozessor-Speicher Busse:
geringe Länge, hohe Datenrate (Speicherbandbreite)
IO Busse:
längere Verbindungen, geringere Datenraten
viele Geräte mit unterschiedlichen Datenraten/Latenzen anschließbar
z.B. USB, FireWire
Backplane Busse:
verbinden unterschiedliche Komponenten (Prozessoren, Speicher, IO-Einheiten)
langsam, geringe Systemkosten
z.B. VME, PCIE
Wie läuft eine Bustransaktion typischerweise ab?
Master reserviert den Bus
Master sendet Anforderung (request) an die adressierte Einheit
Slave antwortet (acknowledge) auf die Anfrage
Master und Slave senden und empfangen Daten
Master gibt den Buus frei
Anhand welcher Charakteristiken kann man Busse unterscheiden?
synchron oder asynchron
Anzahl der Busmaster
Busbreite (Anzahl der Bits die parallel übertragen werden, Übertragung auf seperaten Leitungen oder auf denselben gemultiplext)
Blockgrösse (Anzahl Wörter)
Übertragungsart (eine Transaktion oder mehrere -> split transaction)
Was sind Unterschiede der asynchronen und der synchronen Übertragung und welche Vor- bzw. Nachteile bringen diese mit sich?
Asynchrone Übertragung:
kein gemeinsamer Takt
-> Einheiten können unterschiedlich schnell sein
-> aufwendigere Bussteuerungen mit “Handshake-Signalen” (Acknowledges), langsamer als synchrone Übertragung
Synchrone Übertragung:
alle Einheiten arbeiten mit dem gleichen Takt
-> leichte Implementierung, wenig Hardware und schnelle Übertragung
-> gleicher Takt ist ungünstig bei stark unterschiedlichen Datenraten
-> Taktverschiebung (clock skew) beschränkt eine schnelle Übertragung auf kurzen Entfernungen
-> Prozessor-Speicher Busse sind meist sind meist synchrone Busse
Was ist eine Arbitrierung bei Bussen?
Wenn es mehrere Master auf einem Bus gibt muss der Bus arbitriert werden
-> Master muss den Bus anfordern und warten bis dieser frei ist
-> Nach der Übertragung muss der Bus wieder freigegeben werden
Welche Arten der Busarbitrierung gibt es?
zentrale Arbitrierung
Daisy-Chain Arbitrierung
verteilte Arbitrierung
Was ist ein DMA und was tut dieser?
Der DMA (direct memory access) ist ein controller der Daten zwischen Speicher und IO-Einheiten austauscht
entlastet Prozessor indem er Busmaster wird und Datenblöcke überträgt
erhält von Prozessor Start- und Zieladresse und die Anzahl der zu übertragenden Wörter
DMA controller übernimmt Bus und generiert Adressen und Steursingale für den Speicher und die IO-Einheit
Anschließend generiert der DMA controller einen Interrupt
Welche Arten von Lokalität gibt es und wie lassen sich diese Prinzipien Speichersysteme übertragen?
Zeitliche Lokalität sagt aus, dass bei einem Zugriff auf eine Adresse, diese Adresse bald weider verwendet wird
Räumliche Lokalität meint, dass bei einem Zugriff auf eine Adresse auf in der Nähe liegende Adressen ebenfalls bald zugegriffen wird
-> Durch Lokalitäten ist es möglich Speicehr hierarchisch aufzubauen
Wie funktioniert die direkte Abbildung bei Caches (direct mapped cache)?
jeder Speicherblock kann nur an einer Stelle im Cache stehen
Cacheblockadresse (Index) = Speicherblockadresse mod (Anzahl Cacheblöcke)
Was ist ein Cache Tag?
Da der Index nicht eindeutig einer Speicheradresse zugeordnet werden kann, verwendet man die restlichen Bits der Speicheradresse als Tag, der im Cache mit der Adresse abgelegt wird. Durch Vergleich der Tags lässt sich sagen, ob sich die gesuchten Daten im Cache befinden.
Was ist das Valid Bit?
Am Anfang und nach jedem Leeren des Cache erhält dieser keine gültigen Daten. Wenn der Cacheeintrag gültig ist erhält dieser ein Valid Bit (Gültigkeitsbit).
Wie ist ein assoziativer Cache aufgebaut?
Der assoziative Cache besitzt für jeden Cacheindex k Einträge (Blöcke)
Die Menge an Blöcken nennt man Satz (set)
Der Index der Speicheradresse selektiert den Satz, der Tag der Speicheradresse wird parallel mit allen k Tags der Cacheblöcke in diesem Satz verglichen (k parallel arbeitende Caches)
bei p Cacheblöcken:
k = 1: Cache mit direkter Abbildung
k > 1: k-fach satzassoziativer Cache (k-way set associative cache)
k = p: voll assoziativer Cache (fully associative cache)
Wie können bei einem assoziativen Cache die Blocks ausgetauscht bzw. ersetzt werden?
zufällige Auswahl
LRU (least recently used): der am längsten nicht genutzte Block
Was ist ein memory stall und wann tritt er auf?
Ein cache miss führt dazu, dass der cache controller die Daten aus dem Speicher holen muss, wobei der Prozessor angehalten werden muss. Dieses Phänomen wird als memory stall bezeichnet.
Welche Methoden kommen beim Schreiben von Caches und Hauptspeicher zum Einsatz und wie funktionieren diese?
Durchgängiges Schreiben (write-through):
gleichzeitiges Schreiben eines Wortes in den Cache und den Hauptspeicehr -> ständige Konsistenz der beiden Speicher
write-miss führt meist zu laden des Blocks in den Cache, woraufhin dann das Wort gleichzeitig in den Cache und in den Hauptspeicher geschrieben wird
Verwendung eines Pufferspeichers (write-buffer) um die lange Schreibezeit vom Prozessor auf den Hauptspeicher zu umgehen
Zurückkopieren (write-back):
Schreiben erfolgt lediglich auf den Cache -> Inkosistenz zwischen Cache und Hauptspeicher
Erst wenn Cacheblock ersetzt werden muss wird der Block in den Hauptspeicher geschrieben
-> Cacheblöcke erhalten ein dirty bit das bei jedem Schreibzugriff auf den Block im Cache gesetzt wird und das signalisiert ob der Block beim Ersetzen zurückkopiert werden muss in den Hauptspeicher
Wie lassen sich Caches optimieren?
Reduktion der miss-rate:
Cacheorganisation: größere Blöcke, größere Caches, höhere Assoziativität
Compileroptimierungen: Organisation der Instruktionen, Reduzierung der instruction misses
Reduktion der miss-penalty:
Multi-level cache: 1st level cache optimiert auf hit-time, 2nd level cache optimiert auf miss-rate
victim cache: zusätzlicher cache, der zuvor ersetzte Cacheblöcke (“victims”) speichert
Reduktion der miss-penalty und der miss-rate:
Blöcke auf Verdacht in Register, Caches oder prefetch-buffer laden
->Hardware Prefetching: Prefetching von Instruktionen und Daten
->Software Prefetching: der Compiler fügt spezielle prefetch-Instruktionen ein
Wie berechnet sich der Overhead eines Caches?
Wie lassen sich Bits in Bytes und weiter in Kilo-, Mega- und Gigabytes umrechnen? Welche Potenzen zur Basis 2 ergeben sich daraus?
Wie berechnen sich die Kosten pro Die, die Dies pro Wafer und die Ausbeute eines Wafers?
Last changed2 years ago