Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.
Uebungsblatt gra-ex-05 Aufgabe 1 d)
Also,
wir sind heute beim lernen auf ein problem mit dieser aufgabe gestossen, bei dem wir nicht weiterkommen. Und zwar geht es darum, dass bei der zuteilung der bits zu den einzelnen indizes in der fragestunde gesagt wurde, dass die Spaltenbits in der Adresse naeher an das LSB gelegt werden sollen als die Zeilenbits um die Auslastung bei naheliegenden Adressen zu verbessern. Warum die Byte-Adresse als niedrigste und die bank-adresse als zweit-niedrigstes kommen ist uns klar, nur warum die reihenfolge fuer zeilen und reihen index bits eine reihenfolge spielt nicht so ganz.
Ich denke, es spielt deswegen eine Rolle, weil dann benachbarte Worte in der gleichen Zeile sind.
Zu dieser Aufgabe habe ich auch noch eine Frage. In der Übungsstunde zu Blatt 5 habe ich mitgeschrieben, dass die Zeilengröße einer Bank 16kiBit, also 2kiB ist. Mit diesem Wissen lässt sich die Aufteilung der Adresse natürlich leicht berechnen - aber woher nimmt man diese Information?
Meine eigene Herangehensweise wäre gewesen:
Das Modul ist 64 Bit breit, also 8 Byte. Es besteht aus 4 Bänken, das wären also 2 Byte pro Zeile einer Bank. Ist in der Angabe vielleicht ein Fehler und es müsste dastehen “Aus einem 64 kiBit breiten Speichermodul…”
Hatten wir schon mal:
https://fsi.informatik.uni-erlangen.de/forum/thread/10655-Blatt-5-Aufgabe-1-d-f
Stimmt, aber das hilft mir leider trotzdem noch nicht weiter. Vielleicht stehe ich auch auf dem Schlauch…
Hier sind die 16384 Bit Zeilengröße schon wieder einfach so da, ohne dass ich nachvollziehen kann, woher sie kommen.
Und auch aus deiner Mitschrift werde ich nicht schlau:
2^24/2^3 soll 2^11 ergeben?
Die Angabe wurde kurz nach Ausgabe um diese Information erweitert. Die Übungsleiter haben (hoffentlich) in der folgenden Übung darauf hingewiesen.
Ohne diese Information klappt es nicht.
Ich habe dieselbe Frage und die Antwort leuchtet mir weniger ein. Denn bei dieser Aufgabe hat ein Speicherchip vier interne Bänke, d.h. das Wort neben Wort X in Bank 1 liegt auf Bank 2, usw. Also ist das „Nachbarwort“ von Wort X das viertnexte. Daher frage ich mich auch, warum die Spaltenauswahl vor der Zeilenauswahl kommt. Denn wenn man jetzt eine große Anzahl an benachbarten Worten ausliest - und die einzelnen ausgelesenen Zeilen werden ja, soweit ich weiß, nicht zwischengespeichert - dann „trifft“ man alle 4 Worte dieselbe Zeile (die sich ja dann immer „erholen“ muss) bevor man irgendwann in die nächste Zeile wechselt. Daher würde es doch mehr Sinn machen, wenn das viertnächstewort in der nächsten Zeile (also gleiche Spalte) ist und das achtnächste wieder in einer neuen. So könnte doch der Zugriff deutlich schneller sein, wenn man nacheinander benachbarte Wörter ausliest.
Nachdem in der Fragestunde die Aussage andersherum war: wo ist bei mir/uns der Denkfehler?
Durch Interleaving vermeidest du ja schon das Warten auf den Refresh. Warum also noch länger warten?
Hinzu kommt, dass Speicher eben Zeilenweise addressiert wird, weil ‘es eben so ist’ - soll heissen, dass es durch den JEDEC-Standard festgelegt ist.
Würdest du spaltenweise auslesen wollen, müsstest du vor jedem Burst immer eine neue Zeile aktivieren.
Vergleiche dazu mal das Datenblatt eines beliebigen Speicherchips:
http://www.micron.com/~/media/Documents/Products/Data%20Sheet/DRAM/4Gb_DDR3_SDRAM.pdf
Ab S. 156.
OK, danke!