PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Speichert ein Cache reale oder virtuelle Adressen?


GloomY
2003-09-04, 00:12:41
Wo findet bei einem modernen Prozessor die Übersetzung von realer in virtuelle Adresse statt? "Vor" oder "nach" L1/L2 Cache (von der CPU aus gesehen) ?

Ist es nicht schneller, die Übersetzung erst nach den Caches zu machen, also wenn wirklich eine Anfrage die CPU verlässt, da man damit dann die Zugriffszeit der Caches verringern kann (man spart sich die Zeit für die Umsetzung)?

Wie sieht das z.B. mit dem AGP Fenster aus, das keinen realen Adressebereich besitzt, sehr wohl aber einen virtuellen...? ??? Gehe ich richtig in der Annahme, dass bei obiger Anordnung dieser Bereich dann nicht gecached werden könnte?

Warum gibt es eigentlich zwei Levels mit TLBs? Die Tabellen sind nun wirklich nicht so groß, so dass man diese ja auch in einer TLB speichern könnte. Oder braucht jeder Cache seine eigene TLB, weil er doch virtuelle Adressen speichert? ???

Fragen über Fragen...

Muh-sagt-die-Kuh
2003-09-04, 12:39:17
Original geschrieben von GloomY
Wo findet bei einem modernen Prozessor die Übersetzung von realer in virtuelle Adresse statt? "Vor" oder "nach" L1/L2 Cache (von der CPU aus gesehen) ?Kommt drauf an, es gibt grundsätzlich 3 Vorgehensweisen:

"Physically addressed, physically tagged" (eigentlich jeder aktuelle L2)
"Virtually addressed, physically tagged" (wird von fast allen aktuellen L1 Caches verwendet)
"Virtually addressed, virtually tagged"Ist es nicht schneller, die Übersetzung erst nach den Caches zu machen, also wenn wirklich eine Anfrage die CPU verlässt, da man damit dann die Zugriffszeit der Caches verringern kann (man spart sich die Zeit für die Umsetzung)?Das ist schon richtig, nur vergisst du bei dieser Überlegung, dass bei einem rein virtuellen Cache jeder Kontextswitch zwangsläufig einen Flush benötigt. Deswegen auch meist "virtually addressed, physically tagged". Die Addresse des Datums im Cache wird parallel (da man normalerweise in einem L1 nicht mehr als die 12 bits einer 4K Page zur Addressbestimmung braucht) zum MMU Lookup bestimmt. So erhält man schnelle Cache-Lookups ohne das Problem mit dem Kontextswitch.Wie sieht das z.B. mit dem AGP Fenster aus, das keinen realen Adressebereich besitzt, sehr wohl aber einen virtuellen...? ??? Gehe ich richtig in der Annahme, dass bei obiger Anordnung dieser Bereich dann nicht gecached werden könnte?Das sollte eigentlich von keinem Cache, egal ob virtual oder physical gecached werden...das einzige was diese ja unterscheidet ist der Zeitpunkt zu dem die MMU in Aktion tritt.Warum gibt es eigentlich zwei Levels mit TLBs? Die Tabellen sind nun wirklich nicht so groß, so dass man diese ja auch in einer TLB speichern könnte. Oder braucht jeder Cache seine eigene TLB, weil er doch virtuelle Adressen speichert? ???

Fragen über Fragen... Nein, prinzipiell braucht nicht jeder Cache seinen eigenen TLB, auch nicht bei virtuellen Addressen.

Der P3 benutzt z.B. nur einen einzigen TLB, der P4 einen einzelnen für den Code, aber eine 2-Level Hierachie für die Daten, der Athlon immer 2 Levels.

Wieso das so ist? Hmmmm....mein Tipp wären Latenzen ;)

BlackBirdSR
2003-09-04, 12:49:45
Original geschrieben von Muh-sagt-die-Kuh
bla bla bla...[/SIZE]

siehst du, darum weiss ich nicht warum ich da GPU Guru stehen habe, Muh Kuh aber nicht.

mapel110
2003-09-04, 15:04:11
Original geschrieben von BlackBirdSR
siehst du, darum weiss ich nicht warum ich da GPU Guru stehen habe, Muh Kuh aber nicht.

meinst wohl CPU Guru
*mitspamm*
*undmitbefürwort*
:)

BlackBirdSR
2003-09-04, 15:27:57
Original geschrieben von mapel110
meinst wohl CPU Guru
*mitspamm*
*undmitbefürwort*
:)

Stimmt.. danke für den Hinweis
irgendwie hab ich mir ein paar Eiweisklumpen in der Großhirnrinde eingefangen. Es funktioniert einfach nichts mehr wie es soll :D

GloomY
2003-09-04, 22:12:14
Original geschrieben von Muh-sagt-die-Kuh
Kommt drauf an, es gibt grundsätzlich 3 Vorgehensweisen:

"Physically addressed, physically tagged" (eigentlich jeder aktuelle L2)
"Virtually addressed, physically tagged" (wird von fast allen aktuellen L1 Caches verwendet)
"Virtually addressed, virtually tagged"Oh ja, das hab' ich zumindst schon mal irgendwo gehört ;) Verstehen tu' ich's aber bisher nicht... :(

Hmm, mal good old friend Google fragen...
Original geschrieben von Muh-sagt-die-Kuh
Das ist schon richtig, nur vergisst du bei dieser Überlegung, dass bei einem rein virtuellen Cache jeder Kontextswitch zwangsläufig einen Flush benötigt.Meinst du einen Thread-Wechsel?
Original geschrieben von Muh-sagt-die-Kuh
Deswegen auch meist "virtually addressed, physically tagged". Die Addresse des Datums im Cache wird parallel (da man normalerweise in einem L1 nicht mehr als die 12 bits einer 4K Page zur Addressbestimmung braucht) zum MMU Lookup bestimmt. So erhält man schnelle Cache-Lookups ohne das Problem mit dem Kontextswitch.Das heisst, während man die Tags prüft, erzeugt man die virtuelle Adresse (bzw. Adressen bei mehrfach assotiativen Caches)?
Original geschrieben von Muh-sagt-die-Kuh
Das sollte eigentlich von keinem Cache, egal ob virtual oder physical gecached werden...Achso...
Original geschrieben von Muh-sagt-die-Kuh
das einzige was diese ja unterscheidet ist der Zeitpunkt zu dem die MMU in Aktion tritt.Ja ok, das ist klar.
Original geschrieben von Muh-sagt-die-Kuh
Nein, prinzipiell braucht nicht jeder Cache seinen eigenen TLB, auch nicht bei virtuellen Addressen.

Der P3 benutzt z.B. nur einen einzigen TLB, der P4 einen einzelnen für den Code, aber eine 2-Level Hierachie für die Daten, der Athlon immer 2 Levels.

Wieso das so ist? Hmmmm....mein Tipp wären Latenzen Sind zwei Cache Level nicht langsamer als wenn man das ganze in einen Level packen könnte?

edit: Ja, ich bin auch beeindruckt von Muhs Kenntnisstand =)

edit: Argh, ich Idiot habe physikalisch mit virtuell verwechselt... :bonk: Ich glaube ich muss mich hier einfach mal wirklich damit befassen, bevor ich hier weiterschreibe. Sonst kommt hier noch mehr Unsinn dabei heraus...

Muh-sagt-die-Kuh
2003-09-04, 23:10:07
Original geschrieben von GloomY
Oh ja, das hab' ich zumindst schon mal irgendwo gehört ;) Verstehen tu' ich's aber bisher nicht... :(

Hmm, mal good old friend Google fragen...Ich hab den Freund schon gefragt ;)

http://www.cse.unsw.edu.au/~cs9242/02/lectures/03-cache/node9.htmlMeinst du einen Thread-Wechsel?Nein, echte Prozesswechsel. Threads benutzen ja den gleichen virtuellen Addressraum, das ist also kein Problem.Das heisst, während man die Tags prüft, erzeugt man die virtuelle Adresse (bzw. Adressen bei mehrfach assotiativen Caches)?Man bestimmt die Position des Datums im Cache (Also Set und Block-Offset bei einem Mengenassoziativen Cache) parallel zum TLB lookup.
Sind zwei Cache Level nicht langsamer als wenn man das ganze in einen Level packen könnte?L1 und L2 einer CPU könnte man auch in ein Level packen, man macht es aber nicht...ist wahrscheinlich genau der gleiche Grund wie hier ;)edit: Ja, ich bin auch beeindruckt von Muhs Kenntnisstand =) Danke!

Frank
2003-09-05, 09:25:29
GloomY,
evtl leierst du dir mal das Script hier rein:
http://os.inf.tu-dresden.de/Studium/Bs/
(Speicherverwaltung)

Muh-sagt-die-Kuh
2003-09-05, 10:23:46
Original geschrieben von Frank
GloomY,
evtl leierst du dir mal das Script hier rein:
http://os.inf.tu-dresden.de/Studium/Bs/
(Speicherverwaltung) Das enthält gerade mal eine Seite mit etwas oberflächlichen Informationen zu diesem Thema ;)

GloomY
2003-09-05, 14:22:32
Danke Frank =)Original geschrieben von Muh-sagt-die-Kuh
Das enthält gerade mal eine Seite mit etwas oberflächlichen Informationen zu diesem Thema ;) Ja, zu Caches steht da nicht viel drinnen, aber dort gibt es eine prinzipielle Einführung, die ich mir nochmal durchlesen werde. Bei dem Thema bin ich noch recht unwissend, da kann das nicht schaden :)