Cacheable area überschreiten...wirklich so dramatisch?

Auswahl, Einrichtung und Betrieb von Rechnern und Komponenten
Antworten
Benutzeravatar
Mystery
DOS-Guru
Beiträge: 670
Registriert: Sa 6. Mär 2010, 17:56
Wohnort: NRW

Cacheable area überschreiten...wirklich so dramatisch?

Beitrag von Mystery »

Ich stöbere schon einige Zeit um herauszufinden wie groß der tatsächliche Performanceverlust ist, wenn die RAM Bestückung auf einem Board die cacheable area überschreitet, besonders auch bei CPUs die noch keinen eigenen L2 Cache haben.

Fakt ist wohl, dass Windows den RAM so addressiert, dass in einem solchen Fall unsinnigerweise erst der RAM benutzt wird, der nicht vom L2 Cache unterstützt wird.

Wenn man die Wahl hat zwischen uncached RAM und Benutzen Auslagerungsdatei, ist letzteres immer noch die schlechtere Wahl.

Falls der Speicherverbrauch so gering ist, dass das System die cacheable Area nicht erreicht, ist das Ganze natürlich langsamer.

Die Frage ist: Wieviel? Macht sich das tatsächlich bemerkmar?
Ich habe viele Aussagen gefunden, die von "kein spürbarer Performanceeinbruch" bis hin zu "mehr als 40% Verlust der Systemleistung" reichen, aber irgendwelche Benchmarks, welche das Ganze untermauern, fehlen gänzlich.
Wie sieht es aus bei Anwendungen, Spielen und synthetischen Benchmarks? Hat hier jemand mal ein paar Tests durchgeführt?

Wie sieht es unter DOS aus? Wird der Speicher hier genauso adressiert wie unter Windows oder fällt das Problem hier nochmal weniger ins Gewicht, da die Unterstützung diverser Hardwarefeatures durch Treiber von Windows entfällt?
Benutzeravatar
Dosenware
DOS-Gott
Beiträge: 3745
Registriert: Mi 24. Mai 2006, 20:29

Re: Cacheable area überschreiten...wirklich so dramatisch?

Beitrag von Dosenware »

schalte einfach mal den L2 Cache ab, dann weißt du wie groß der Performanceeinbruch ist wenn du auf Speicher außerhalb der Cacheable Area zugreifst.

wie sich die Gesamtperformance des Systems verändert lässt sich jedoch kaum vorhersagen, da man dazu wissen müsste welche Prozesse wie stark genutzt werden und wo sie sich im Speicher befinden...
Benutzeravatar
Mystery
DOS-Guru
Beiträge: 670
Registriert: Sa 6. Mär 2010, 17:56
Wohnort: NRW

Re: Cacheable area überschreiten...wirklich so dramatisch?

Beitrag von Mystery »

Mein Retro-PC ist momentan leider platt, Mainboard ausgefallen, daher kann ich es derzeit nicht selber testen. Zumal die Deaktivierung vom L2 Cache eventuell zu einem größeren Performanceverlust führen kann als bei einer Überschreitung der cacheable area.
Bei der Suche nach einem Ersatz (habe bereits was gefunden, braucht aber noch ein paar Tage mit der Post) bin ich auf das Thema gestoßen und mich interessiert nun ob jemand mal ein paar praktische Tests durchgeführt hat. Andere Systeme haben ja auch andere Speicheranforderungen und CPU Leistung, je mehr Daten man hat, desdo besser kann man sich einen Überblick verschaffen.

Ich werde sicher auch ein wenig testen, sobald meine Kiste wieder läuft.
elianda
DOS-Übermensch
Beiträge: 1150
Registriert: Mi 31. Jan 2007, 19:04
Wohnort: Halle
Kontaktdaten:

Re: Cacheable area überschreiten...wirklich so dramatisch?

Beitrag von elianda »

Mystery hat geschrieben:Zumal die Deaktivierung vom L2 Cache eventuell zu einem größeren Performanceverlust führen kann als bei einer Überschreitung der cacheable area.
Den Punkt verstehe ich nicht ganz. Wo soll jetzt der große Unterschied sein zwischen 'deaktivieren des L2 Cache' und 'RAM kann nicht von L2 Cache abgedeckt werden' ?

Schalt einfach den L2 Cache ab und benchmarke dein System, dann siehst Du den Unterschied.

Bei Windows muss man stark darauf achten, ob man von NT oder 9x spricht. Denn das Speichermanagement ist sehr unterschiedlich. Bei NT wächst z.B. der HD-Cache von oben nach unten, so dass dort die staerksten EInbußen zu erwarten sind.
Unter DOS ist es recht einfach zu umgehen, indem man im oberen physikalischen Bereich ein RamDrive macht. Damit kann man sicher sein, dass DOS Applikationen den unteren Speicher nutzen, der noch vom L2 abgedeckt wird. Selbst einfache 386er sollten noch um die 16 MB abdecken.
Diverse Retro-Computer vorhanden.
Benutzeravatar
Mystery
DOS-Guru
Beiträge: 670
Registriert: Sa 6. Mär 2010, 17:56
Wohnort: NRW

Re: Cacheable area überschreiten...wirklich so dramatisch?

Beitrag von Mystery »

Wenn der L2 Cache deaktiviert wird, ist kein Bereich des RAMs gecached.
Wird nur ein Teil des RAMs gecached (bei Überschreitung des durch den L2 abgedeckten Bereichs), so ist z.B. bei Win9x ab einem gewissen Verbrauch des RAMs die cacheable area wieder im Einsatz und der Performanceverlust nicht so hoch wie bei Deaktivierung des L2 Caches.
So verstehe ich das Ganze zumindest. Oder wird, sobald der L2 Cache nicht mehr alles abdeckt, gar nichts mehr gecached? Dann habe ich das Prinzip falsch verstanden :)

Das mit dem RamDrive für DOS ist eine gute Idee, DOS Anwendungen/Spiele benötigen ja in der Regel sowieso nicht soviel RAM.
elianda
DOS-Übermensch
Beiträge: 1150
Registriert: Mi 31. Jan 2007, 19:04
Wohnort: Halle
Kontaktdaten:

Re: Cacheable area überschreiten...wirklich so dramatisch?

Beitrag von elianda »

Unter Windows haengt es eben stark davon ab, wo der Speicher gerade hergenommen wird, den ein Programm anfordert.
Das kann man nicht so pauschal sagen.
Du kannst nur durch deaktivieren des L2 herausfinden, was der langsamste Fall sein kann.
Diverse Retro-Computer vorhanden.
freecrac
DOS-Guru
Beiträge: 861
Registriert: Mi 21. Apr 2010, 11:44
Wohnort: Hamburg Horn

Re: Cacheable area überschreiten...wirklich so dramatisch?

Beitrag von freecrac »

Mystery hat geschrieben:Ich stöbere schon einige Zeit um herauszufinden wie groß der tatsächliche Performanceverlust ist, wenn die RAM Bestückung auf einem Board die cacheable area überschreitet, besonders auch bei CPUs die noch keinen eigenen L2 Cache haben.

Fakt ist wohl, dass Windows den RAM so addressiert, dass in einem solchen Fall unsinnigerweise erst der RAM benutzt wird, der nicht vom L2 Cache unterstützt wird.

Wenn man die Wahl hat zwischen uncached RAM und Benutzen Auslagerungsdatei, ist letzteres immer noch die schlechtere Wahl.

Falls der Speicherverbrauch so gering ist, dass das System die cacheable Area nicht erreicht, ist das Ganze natürlich langsamer.

Die Frage ist: Wieviel? Macht sich das tatsächlich bemerkmar?
Ich habe viele Aussagen gefunden, die von "kein spürbarer Performanceeinbruch" bis hin zu "mehr als 40% Verlust der Systemleistung" reichen, aber irgendwelche Benchmarks, welche das Ganze untermauern, fehlen gänzlich.
Wie sieht es aus bei Anwendungen, Spielen und synthetischen Benchmarks? Hat hier jemand mal ein paar Tests durchgeführt?

Wie sieht es unter DOS aus? Wird der Speicher hier genauso adressiert wie unter Windows oder fällt das Problem hier nochmal weniger ins Gewicht, da die Unterstützung diverser Hardwarefeatures durch Treiber von Windows entfällt?
So ein Benchmark für eine bestimmte Anwendung wäre auch wenig aussagekräftig, da es daneben auch noch unterschiedliche Cache-Grössen und verschiedene Cache-Architekturen und Protokolle gibt.
Die Menge an Code und Daten die sich damit cachen lassen ist eh begrenzt und wenn sich der Code und/oder die Daten sich nicht mehr im Cache befinden, dann müssen sie aus dem langsameren RAM
erstmal erneut gechached werden, damit die nachfolgenden Zugriffe auf den schnelleren Cache erfolgen können. So manche kleine DOS-Anwendung passt jedoch komplett in den L1-Cache. Wer jedoch im
Speicher Zugriff auf megabyte grosse Bildaten macht, der versucht schon seine Daten sinnvoll zusammenzupacken, flasht bzw. prefetched den Cache, oder macht an den Grenzen der Cacheseiten
Dummy-Lesezugriffe um ausgewählte Datenbereiche schon vorher in den Cache zu bekommen, damit zeitkritische Vollzugriffe auf jedes Byte dieses Bereiches danach sich schon im Cache befinden.
Siehe dazu auch folgenden Beitrag (leider wie vieles von diesem Thema nur auf englisch):
http://groups.google.de/group/comp.lang ... 3cc3e093be

Ich denke für den L1,L2,L3-Cache macht es keinen Unterschied ob die CPU sich im Realmode oder im Protectmode befindet.

Dirk
Benutzeravatar
Mystery
DOS-Guru
Beiträge: 670
Registriert: Sa 6. Mär 2010, 17:56
Wohnort: NRW

Re: Cacheable area überschreiten...wirklich so dramatisch?

Beitrag von Mystery »

Sehr interessanter Link, vielen Dank.

Die CPU Architektur macht also auch noch einen entscheidenden Beitrag zu der Geschichte. Den Aspekt hatte ich übersehen.
Bei "neueren" Systemen ist der L2 Cache ja teil des Prozessors und genießt somit schnellere Zugriffszeiten, denke ich. Bei so einer Anbindung ist man ja schnell bei dem bekannten Szenario angelangt, dass eine CPU mit etwas weniger MHz aber dem größeren L2 Cache gegenüber einem Prozessor mit mehr MHz aber weniger L2 Cache überlegen ist.

Wissenswert wäre vielleicht noch, wie schnell die Anbindung vom L2 Cache auf den Mainboards damals im Vergleich zum RAM war. Aber ich denke du hast recht, es spielen scheinbar zu viele Faktoren mit hinein die etwas allgemeiner gefasste Aussagen sehr schwer machen dürften.
Benutzeravatar
philscomputerlab
DOS-Übermensch
Beiträge: 1273
Registriert: Fr 1. Okt 2010, 10:40
Wohnort: Australien
Kontaktdaten:

Re: Cacheable area überschreiten...wirklich so dramatisch?

Beitrag von philscomputerlab »

Ich teste zur Zeit viele CPUs und Boards und vergleiche die Performance mit und ohne Cache (siehe mein thread 386/486 Zeitmaschine).

Mein benchmarks zeigen dass der L2 cache schon einen Unterschied macht, allerdings nicht wiklich einen grossen, besonders bei den neueren System. Bei einem 386er und 486er ist er aber sehr wichtig.

e.g. hier die speedsys Resultate von einem K6-2+ der L1 und L2 auf dem chip hat und dann noch L3 auf dem mainboard.

Der Speicherdurchsatz von L3 ist nicht viel schneller als direkt auf den RAM.

Ler L2 hingegen ist viel schneller, bei diesem system ca. 10x so schnell wie auf den RAM zuzugreifen.

Bild

Ich habe folgende Beobachtungen gemacht:

- Bei einem 386er ist der mainboard cache sehr wichtig. Diese CPUs haben keinen L1 cache und hier hilft jedes extra an performance
- Bei einem 486er ist der L2 cache noch sehr schnell im Vergleich zum L1 cache. Er ist daher auch noch sehr entscheidend fuer die Performance
- Pentium habe ich keinen also bin ich mir nicht sicher
- Pentium 2, 3 und K6-2 hier hat sich das thema mainboard cache fast erledigt weil es CPUs gibt die on chip cache haben. Hier einfach eine solche CPU verwenden
Benutzeravatar
Mystery
DOS-Guru
Beiträge: 670
Registriert: Sa 6. Mär 2010, 17:56
Wohnort: NRW

Re: Cacheable area überschreiten...wirklich so dramatisch?

Beitrag von Mystery »

Ah, an dem Bild sieht man sofort den Vorteil von direkt an die CPU angebundenem Cache.

Habe probeweise ein Zweitsystem von mit entstaubt mit einem P200 (kein MMX) und speedsys drüberlaufen lassen.
Der L2 Cache (119,02MB) ist immerhin fast doppelt so schnell wie der onboard RAM (67,76MB).

Die Deaktivierung vom L2 Cache brachte kaum eine Veränderung der Werte in Speedsys, ich vermute mal, dass ich mir dafür andere Tests suchen sollte.
Benutzeravatar
Dosenware
DOS-Gott
Beiträge: 3745
Registriert: Mi 24. Mai 2006, 20:29

Re: Cacheable area überschreiten...wirklich so dramatisch?

Beitrag von Dosenware »

Die Deaktivierung vom L2 Cache brachte kaum eine Veränderung der Werte in Speedsys
Prozessorbenchmarks taugen dafuer auch kaum (passen haeufig komplett in den L1), dazu brauchts einen Systembenchmark
freecrac
DOS-Guru
Beiträge: 861
Registriert: Mi 21. Apr 2010, 11:44
Wohnort: Hamburg Horn

Re: Cacheable area überschreiten...wirklich so dramatisch?

Beitrag von freecrac »

Mystery hat geschrieben:Sehr interessanter Link, vielen Dank.

Die CPU Architektur macht also auch noch einen entscheidenden Beitrag zu der Geschichte. Den Aspekt hatte ich übersehen.
Wenn ich mich nicht täusche begann man beim Pentium Pro damit zwei paralell arbeitende Integereinheiten zu verwenden die eine gewisse Kombination von zwei unmittelbar hintereinander folgenden Befehlen paralell ausführen können.
Ein Athlon kann drei Integer-Befehle paralell ausführen. Ein Intel Core2 hat vier Integereinheiten. Von der Möglichkeit den Microcode der CPU zu verändern wie das BIOS beim P4-Div-Bug es macht mal abgesehen, gibt es für Anwendungen
darauf kaum eine Einflussmöglichkeit solche CPU-internen Optimierungen, von denen es noch einige mehr gibt und die ich hier nur mal am Rande erwähnen möchte, völlig zu deaktivieren. Einige diese CPU-internen Optimierungen wirken
sich auch auf ältere Anwendungen unter DOS aus die weit vor dieser Zeit entwickelt wurden.
Bei "neueren" Systemen ist der L2 Cache ja teil des Prozessors und genießt somit schnellere Zugriffszeiten, denke ich.
Der internen Cache ist so schnell getaktet wie die CPU.
Bei so einer Anbindung ist man ja schnell bei dem bekannten Szenario angelangt, dass eine CPU mit etwas weniger MHz aber dem größeren L2 Cache gegenüber einem Prozessor mit mehr MHz aber weniger L2 Cache überlegen ist.
Bei Anwendungen die kaum den Speicher benutzen sind wohl nur die MHZ entscheidend. Gutes Beispiel AMD K6-2@550 im Vergleich zum K6-3@450.
(Leider hatte ich nie einen K6-3 aber dafür ein DFI-MoBo mit zusätzlichen 2MB-Onboard-Cache.)
Wissenswert wäre vielleicht noch, wie schnell die Anbindung vom L2 Cache auf den Mainboards damals im Vergleich zum RAM war.
Bei einem eher ungewöhnlichen extremen Ramzugriff möglicherweise messbar bis zweistellige Prozentwerte.
Aber ich denke du hast recht, es spielen scheinbar zu viele Faktoren mit hinein die etwas allgemeiner gefasste Aussagen sehr schwer machen dürften.
Auch geben solche doch eher synthetischen Benchmarks nicht wirklich eine Auskunft darüber wie die Masse der Anwendungen davon beeinflußt wird.

Dirk
Benutzeravatar
philscomputerlab
DOS-Übermensch
Beiträge: 1273
Registriert: Fr 1. Okt 2010, 10:40
Wohnort: Australien
Kontaktdaten:

Re: Cacheable area überschreiten...wirklich so dramatisch?

Beitrag von philscomputerlab »

Mystery hat geschrieben: Die Deaktivierung vom L2 Cache brachte kaum eine Veränderung der Werte in Speedsys, ich vermute mal, dass ich mir dafür andere Tests suchen sollte.
Ja da braucht es andere tests! Z.b. den PCPBENCH oder 3DBENCH, da sieht man sofort wenn der L2 Cache abgedreht wurde.
Antworten