Version 1.3a: thrashing in Mess-Routine durch Umstellung vermindert: vorher 10-thrash-Adressen, Nachher 5-thrash-Adressen 1.3b: LA-Option (Port-80h-Ausgabe) als Compileroption 1.3c: 16 KB-Cache => IntelDX4 falls rel < 1.1 ET-Bit zur IBMSLC2/BL3-Unterscheidung geht nicht!! 1.3c Diskriminante bei L2-WB auf 4 Prozent verringert 1.4 Arbeitet mit Univers im extended von 2 M bis 4 M 4M Speicher Minimum!!! => ctcm3 1.4a getCachessize neu, Routine thrash viermal fr jeden Wert von Asso eine eigene Routine => innere Looptime krzer 1.4b Cachesize bei Useheap mit Startadr $10000 bei UseXMM mit Startadr extstartadr XMM-bedarf auf 1MB runtergestuft 1.4c Pentium-Timestamp eingefgt 1.4d Codemess relativ zu D40A eingefhrt da sonst bei schnellen Proz ohne L2 Messungen zu ungenau 1.4e codemess nach messunit ausgelagert 1.4f cpuerkennung nach getcpu ausgelagert Cpudetekterror falls cpuiD <> Timing Parameter jetzt zwingend mit /xxx Ausnahme die dokumentierten, die beides erlauben 1.5 1.- Messroutine wird jetzt als Messproc konstruiert alle Variablen als Konstante ersetzt=> weniger Thrashing 2.- Dirty und Write/Back-Erkennung nicht mehr via MOVSD, sondern schnelles, aufeinanderfolgendes Laden mit Adreádifferenz von 32, 3.- CacheSize-Detektion nach Unit Cachesiz verlagert neue CacheSize-Detektion ber MOVSD zugefgt 1.5b TransmessUntillMintime eingefgt Maxrange nicht mehr statisch auf 2MB, sondern bis zu Maxmemavail 1.5bx Startgr”áe fr Cache bei CX486SLC .. auf 0,5 KB 1.5by Ausgabe fr AMD5x86 mit CPUID 0E und 0F auf x4 WB oder x4 WT erweitert 1.5bz Default mit WBinvld in der Messroutine 1.6 Mit CodeCache-Ermittlung WBINvld nur bei AMD K5, oder Kommando /WBINVD 1.6a CPUID bei PPRO mit Cacheangabe 1.6b CodeCache-Ermittlung korrigiert. 1.6b mit AMD 5k86 PRxx-Angabe fr Model 0, 1,2 mit Pentium MMX 1.6c Mit Innerloop ber BX-Register fr L1-Cache-Hit-Transfer => gr”áere Genauigkeit bei L1-Transfer-Messung, ist auch erheblich schneller! 1.6c Neue Transfer-Messroutinen, nun komplett mit L2Fill und Preload in einem Rutsch ohne zwischenzeitlichen Datenzugriff!. Die mhsame Patchroutinen in Pascal sind komplett entfallen, das Transfer-Programm (in Assembler) patcht sich jedesmal selbst. L2Fill Reihenfolge nicht mehr 2->2, 0->0, 1->1, sondern 0->0, 1->1, 2->2 ... Fr I/O-Timer und usepentiumtimer, Fastmove nur ber I/O. 1.6d Hauptspeicher-Detektion sucht Memory holes und Noncacheable Areas 1.6e Mit Messmethode Pentx: benutzt Pentium-Performance-Timer falls /msr und /ex gesetzt. /msr=xx,yy setzt events 0,1 1.6f Neue Routine zur Parameter-Auswertung Nach Unit Common.pas verlagert 1.6g Videomessung erweitert, VESA-Modi Nach Unit Video verlagert 1.6h Memory-Holes/ NoncacheArea-Messung nach Unit Memory Umrechenfeld Block zu Adresse x[block] aufgel”st stattdessen Funktion blockadr(block) eingefgt (spart 4KByte Platz im Datensegment ) šbergabe an Messfunktionen hinfort Adresse, nicht Blocknr. Reihenfolge von Wohin/Woher in Transmess getauscht 1.6i MaxL1cacheSize (globaler Parameter) eingefhrt, fr Prozessoren der Familie 3,4: 32 KB >=5: 128 KB >= CX686 : 128 KB MaxL2CacheSize je nach verfgbaren Speicher wird bei nicht erkanntem L2-Cache ausgegeben Maximale Messl„nge in Messunit von 42 KB auf freien Platz im Real Heap vergr”áert 1.6j Messfeld umgebaut: Transfers mit L1/2 m”glich Messfeld global in Main Z[x,x,x,x,x,x] und Zlin aufgel”st, stattdessen Funktion getresult('name'): sucht nach Messname in Messfeld resultarray fr die Messergebnisse Angabe des Fillbocks m”glich (L in messrec eingefhrt) Blockbezeichnung ge„ndert, /0 statt 8, /1 statt 9 etc Messname erweitert um c/d fr L1-miss Zwei fehlerhafe TransferEintr„ge im Messfeld korrigiert Ausgabe von Write-Allokation und Hidden-Castoff Keine Simulation bei L2 > 1M, dazu Parameter /Nogew fr keine Gewichtung Neue CodeCacheSize-Detection WriteAlloc fr K6, M1,M2 ein/abschaltbar ; WritePipe beim K5 Parameter /WA= off/on 1.6k Partiell Windowstauglich gemacht: kein Protection Fault unter Windows; CPUID und Takt auch unter Windows VESAinfo " Ausgabe der VESA-Strings ge„ndert: statt bis Endemarke #0 wird nur so lange ausgegeben, wie char in Ascii neuer Parameter: /F : gibt CPUID.Features aus Transmess statt xmove in GetDataCachesize mit pentmsr => weniger Thrashing Parameter /XM: benutzt altes Xmove L1dis fr jeden Prozessor individuell (in Proztab) Haltepunkte neu sortiert p80inf neu sortiert Testwalloc mit p80inf Testwalloc berarbeitet (PII-tauglich) get/setmsr mit Fehlercode Result=0 ok, 6=Unknown, $D=protection fault setmsr mit option Flush: WBINVLD und Clear TLB/I-Cache Parameter Cache= gestrichen, dafr L1=xxx mit xxx =on/off (geplant sind auch WB, WT etc) L2=xxx mit xxx =on/off " Timerberlauf bei 1MByte L1-Caches, šberlauf wg. zu frh STI nicht erkannt + 54 ms bei šberlauf => Meázeit bis 108 ms bei IOTimer WBinv bei allen TransMessroutinen vor L2fill => erhebliche Perf. Verbesserung bei 6x86MX im L1 INT06 fr 386 abgefangen Perf. Montitoring fr Pentium und 6x86MX korrigiert TestWBINVD hinzugefgt (fhrt WBinvd zu L2-Flush ?) 1.6l TestWalloc nochmals ge„ndert (wg. 6x86) TestReplacement hinzugefgt Alle Messroutinen nach ctcmb.asm ausgelagert Messungen im 32-Bit Segment m”glich Messungen via FPU hinzugefgt 1.6m Setzt Žnderungen von MSR 11E beim PII zurck gibt bei ext MSR11E aus Writealloc von 0 1,2 auf (stay, on, off) umgesetzt Testwballoc erwartet bergabe von Cachesize FTransmess in FMOVmess umbenannt FLODmess hinzugefgt Testwalloc auf FLODmess ge„ndert WA fr PII via MSR 11E Bit 5 war Irrtum, stattdessen ECC Cachelinesize fr Showtakt (Parameter /L) eingefhrt (war Standard auf 16) jetzt bei Pentium und Co auf 32 gesetzt Timerberlauf bei langsamen Rechnern beseitigt L2-Latency-Anzeige bei PII /LAT erlaubt Eingabe der L2Latency Multilingualsupport (fr gr/us/nl), extended weiterhin nur gr Hilfefunktion /?, /H hinzugefgt 1.6n Untersttzung fr AMD K6-2 Fehlerbereinigt bezueglich Cyrix/IBM-Prozessoren