Hat Intel Q8200 einen Cache-Prefetcher?

417
RicoRico

Intel Prozessoren, die auf Intel Microarchitecture basieren, sollten Cache Hardware Prefetching unterstützen .

Ich verwende einen Q8200, finde aber im BIOS keine Option zum Aktivieren / Deaktivieren des Prefetchers. Auch ich modifiziert, um die MSR 0x1A0 aber es scheint keine Auswirkungen auf die Leistung zu erzeugen (ich es über einen Speicher - Benchmark gemessen).

Daher vermute ich, dass der Q8200 keinen Cache-Hardware-Prefetcher hat. Im Datenblatt des Q8000-Serie wird der Cache-Prefetcher nie erwähnt.

Kann jemand meinen Zweifel bestätigen oder dementieren?

0
Was versuchst du eigentlich zu tun? Journeyman Geek vor 7 Jahren 1
Messen Sie die Auswirkungen bestimmter Prozesse in einem Echtzeit-Linux-System auf den Cache. Der Prefetcher kann jedoch meine Messung verschmutzen. RicoRico vor 7 Jahren 0

1 Antwort auf die Frage

2
Margaret Bloom

Der Intel Core 2 Quad 8200 basiert auf der Intel Core Microarchitecture .

Wenn Sie sich die Leistungsindikatorereignisse für diese Mikroarchitektur ansehen (Kapitel 19.10 des Intel-Handbuchs 3 ), finden Sie ein Ereignis mit dem Namen L2_LD (Core, Prefetch, Cache Line State), das liest

Dieses Ereignis zählt L2-Cache-Leseanforderungen, die vom L1-Datencache und den L2-Prefetchern stammen . Das Ereignis kann Vorkommen zählen:
• Für diesen Kern oder beide Kerne.
• Aufgrund von Bedarfsanforderungen und L2-Hardware-Prefetch- Anforderungen zusammen oder getrennt.
• Zugriffe auf Cache-Zeilen in verschiedenen MESI-Zuständen.

Der L2-Cache ist der Last Level Cache für Yorkfield-6M (der Kern, der die Core-Mikroarchitektur implementiert).

Kapitel 35.1 bestätigt auch, dass der MSR IA32_MISC_ENABLE (1a0h) das Bit 9 zum Deaktivieren der Prefetchers hat.


So sind die Prefetchers da.

Das Datenblatt ist für Elektroingenieure gedacht, es beschreibt nicht die Funktionalität der CPU, da es zu komplex ist, um es in einem zweiten Band zu trennen.

Das Benchmarking des internen CPU-Verhaltens wie beim Prefetcher ist schwierig. Der Prefetcher wird nur durch bestimmte Muster ausgelöst.
Sie können die L2-Cache-Anforderungen aufgrund des Prefetchers durch Leistungsereignisse besser messen.

Wie dies zu erreichen ist, würde den Rahmen dieser Antwort sprengen . Sie können sich jedoch das Perf- Tool ansehen .

Das Problem ist, dass nach dem Deaktivieren der Prefetchers über 0x1a0 das `perf`-Tool scheinbar die Prefetching-Ereignisse weiterhin protokolliert. Daher bin ich mir nicht sicher, ob Leistungsindikatoren in diesem Fall nicht zuverlässig sind oder ob 0x1a0 nicht modifiziert wird. RicoRico vor 7 Jahren 0
@RicoRico Welche Ereignisse haben Sie genutzt? Nach einer kurzen Einführung in die Intel-Handbücher würde ich die Ereignisse "-e rD029, rC029" verwenden, bei denen der erste L2-Referenzwert nur aufgrund des PF und der zweite L2-Ref ohne den PF zählt ("rF029" würde beide zählen). . Ich bin kein Experte für * perf *. Überprüfen Sie daher [diese Frage] (https://stackoverflow.com/questions/16062244/ using-perf-to-monitor-raw-event-counters), ob die richtige Syntax angegeben ist benutzerdefinierte Ereignisse. In diesem Fall ist die Ereignisnummer 0x29 und die * umasks * sind 0xd0, 0xc0 und 0xf0. Margaret Bloom vor 7 Jahren 1
@RicoRico Amend: Die Umasks sollten 0xdf, 0xcf, 0xff sein. Die Ereignisse sollten also "-e rDF29, rCF29, rFF29" sein Margaret Bloom vor 7 Jahren 1
Vielen Dank! Die von "perf" verwendeten Standard-Leistungsindikatoren sind möglicherweise nicht die richtigen. Deaktivieren der Prefetcher-Funktionen und rDF29-Berichte 0! RicoRico vor 7 Jahren 0