0 Bewertungen0% fanden dieses Dokument nützlich (0 Abstimmungen)
44 Ansichten1 Seite
Beschreibung:
Microcomputertechnik II, Uni Kassel, Prof. Dr. Ing. Hoffmann, Senior (hat geniales Skript; Hoffmann Jr. (geniale TET-Übungen, "rubbel die Katz' ) ist zu DLR gewechselt)
Microcomputertechnik II, Uni Kassel, Prof. Dr. Ing. Hoffmann, Senior (hat geniales Skript; Hoffmann Jr. (geniale TET-Übungen, "rubbel die Katz' ) ist zu DLR gewechselt)
Copyright:
Attribution Non-Commercial (BY-NC)
Verfügbare Formate
Als DOC, PDF, TXT herunterladen oder online auf Scribd lesen
Microcomputertechnik II, Uni Kassel, Prof. Dr. Ing. Hoffmann, Senior (hat geniales Skript; Hoffmann Jr. (geniale TET-Übungen, "rubbel die Katz' ) ist zu DLR gewechselt)
Copyright:
Attribution Non-Commercial (BY-NC)
Verfügbare Formate
Als DOC, PDF, TXT herunterladen oder online auf Scribd lesen
CACHE Also reagiert der direct mapped cache gegen Instruktionsströme z. B.
aus Programmschleifen mit
Befehlen oder Daten, die sich an der Adresse „x“ Modulo der Cachegröße befinden anfällig, da In einem 32-Bit Mikrorechnersystem ist ein Cache von 1kbyte vorhanden. jede Speicherzelle nur einen einzigen Eintrag in der Cache-Kopie besitzt. Gibt es nun beim Zugriff Das Laden des Caches erfolgt in Rahmen zu je 8 Bytes. auf einen solchen Cache einen Fehlversuch bei einer bestimmten Adresse „n“, muß die Maschine einen Buszylus zum Hauptspeicher initieren und man erhält solange die Schleife läuft, immer ein Die Hauptspeicheradresse ist 24 Bit lang. Miss , da man immer die gerade benötigte Instruktion durch eine neue ersetzen muß. Das nennt man auch „Trashing“. Durch die feste Zuordnung ist nur eine Blockversetzungstrategie möglich, 1 Byte = 8 Bit 2 Word = 1 DWord die auf zurückliegende Zugriffe keine Rücksicht nimmt. Ist der Cache höher assoziativ organisiert, 2 Byte = 1 Word 4 Word = 2 DWords n Bytes = n/4 DWords hat man also pro Hauptspeicheradresse mehrere Einträge, tritt dieser Kollisionsfall nicht oder viel seltener auf. a) Wieviele Zeilen umfaßt der Cache ? Die Cache Größe kann man mit folgender Formel berechnen: Eingesetzt in (2) wird also S = 1024 Byte / 2 D * 4 Byte = 128 Zeilen
Num (Sets) * Frames * Num (DW´s) * DW = Cache Size [Bytes] D.h. der Cache hätte dann eine Länge von 128 Zeilen.
Formel : C = S * F * D * DW, wobei Beispiele für 32 Bit Prozessoren:
D = Num (DW´s) C = Cache Size [Bytes] µP i486 128 Sets * 4 Frames * 4 DW´s * 4 Bytes/DW = 8192 Bytes ≈ 8 KB S = Num (Sets) ; Sets sind Sätze, Zeilen, oder Lines, µP 68040 64 Sets * 4 Frames * 4 DW´s * 4 Bytes/DW = 4096 Bytes ≈ 4 KB µP 601 64 Sets * 8 Frames * 8 DW´s * 8 Bytes/DWord = 32768 Bytes ≈ 32 KB Die gesuchte Anzahl an Zeilen entspricht den Sets, d.h.: S = C / ( F * D * DW ) (2) b) Wie sieht die Unterteilung des Hauptspeicher aus ? Da bei der Aufgabe keine Angabe über die Assozität gegeben ist, setzen wir als Der vollassoziative Cache hat die größte Flexibilität, da jeder Block des Hauptspeichers Einfachstes einen direct-mapped cache an. Damit wird Frames zu 1.Genauso könnte man jeden Rahmen des Caches belegen kann. Der direct mapped cache unterteilt dagegen den natürlich argumentieren, daß man einen vollassoziativen Cache annimmt, oder einen gesamten Arbeitsspeicher im Umfang von 2n Adressen bei 2i Einträgen in 2n-i Seiten mit üblichen 4-fach assoziativen Cache. Dies wirkt sich natürlich auf die Anzahl an jeweils 2i langen Blöcken notwendigen Adresskomparatoren aus, die bei voll assoziativem Cache gleich der Rahmenanzahl sind und bei n fach assoziativem Cache gleich der Anzahl Ramen pro Set c) Wieviele und welche Bitvergleicher werden in beiden Varianten benötigt ? sind. Bei Direct mapped cache braucht man nur noch einen Komparator. Beim Die Anzahl an notwendigen paralleler Adresskomparatoren ist bei voll assoziativem vollassoziativen Cache ist die Blockversetzungs-strategie sehr aufwendig. Die kann z.B. Cache gleich der Rahmenanzahl. D.h. bei einem aus n = 4 Byte breiten System ergibt sich nach dem LRU-Prizip oder zufällig erfolgen. für die Breite der Adresskomparatoren am Tag-Ram folgende Formel Ein direct mapped Cache hat die Gefahr der Kollision. Das sogennante Trashingproblem tritt insbesondere in diesen Architekturen auf, da jede Speicherzelle nur einen einzigen n * 8 - (2 * ld n) = 4 * 8 Bit/Byte - 2 * 2 = 28 Bit. Eintrag in der Cache-Kopie besitzt. Gibt es nun beim Zugriff auf einen solchen Cache einen Fehlversuch bei einer bestimmten Adresse „n“, muß die Maschine einen Buszyklus Bei n-fach assoziativem Cache sind die benötigten Adress-komparatoren gleich der zum Haupt-speicher initiieren. Kommt man im Instruktionsstrom, z.B. innerhalb einer Anzahl Ramen pro Set. Bei direct mapped cache braucht man nur noch einen einfachen 1 Programmschleife, an einen Befehl oder an eine Datum, das sich im Hauptspeicher an der aus n Decoder als Komparator, wobei n gleich der Anzahl an Zeilen des Caches ist. Adresse „x“ Modulo der Cache-Größe befindet, wird man erneut ein „Cache miss“ haben und einr gerade benötigte Instrukiotn durch eine neue ersetzten müssen. Solange man sich in der Programmschleife befindet, wird sich dieser Fall ständig wiederholen - man produziert ein „Cache miss“ nach dem anderen.