CTCM Version 1.5b, c't im M„rz 96 Andreas Stiller ------------------------------------------------- Ursprngliche Aufgabe von ctcm (hieá zun„chst cmess) war es, bei Write-Back-Caches das Vorhandensein oder Fehlen des sogenannten Dirty-Tags zu ermitteln. Die Rechner laufen auch ohne dieses zus„tzliche SRAM, aber langsamer (insbesondere unter OS/2, NT, Linux, NextStep ..). Daneben eignet sich ctcm hervorragend, um die Performance des Datenflusses der CPU/Cache/Hauptspeicher-Implementation zu bestimmen. ctcm schlsselt auf, ob Cache Hits oder Cache Misses, Dirty- oder Clean-Zugriffe vorliegen und bestimmt mit einer durch Simulation gewonnenen Gewichtung einen Mittelwert fr typische DOS- (640 KB) und Windows-Anwendungen (4 MByte). Fr die Schreibzugriffe ben”tigt Ctcm sehr Patz, entweder im Heap oder im extended Memory. Platzbedarf ist > (2*L1-Cachesize + 1* L2-CacheSize). M”glichst daher fr Messungen mit ctcm den Rechner mit 4 MByte und mehr Speicher ausstatten. Bei Aufruf aus der Turbo-Vision-Shell CTSI heraus daher zuvor Platz im Extended memory reservieren mit SET DPMIMEM= !! Voraussetzungen und Einschr„nkungen !! Interner Cache (486er, Pentium) sollte eingeschaltet sein keine aktiven Watchdog-Timer und SMM-Interrrupts Zur Messung ist der unbedingt der Real-Mode n”tig! DOS-Boxen von Windows, OS/2, NT fallen daher aus, ebenso Memory Manager … la Qemm, Max und EMM386 Defaultm„áig (ohne Parameter)stoppt CTCM den Transfer-Befehl REP MOVSD aus Version 1.0 ver”ffentlicht in c't 1/93 Version 1.1 Fassung auf der Heft-Sammeldisk/Mailbox ct0193.zip (Korrekturen dazu siehe c't 4/93 S.12) Version 1.3 Fassung auf der ctsi-Info-Disk V1.0 Version 1.3a Weniger Thrashing zwischen Meácode und Daten leicht ge„nderte Cache-Routine 1.3c Letzte Žnderung war "Verschlimmbesserung", fhrte dazu, daá in schnellen Systemen der L2-Cache auf die doppelte Gr”áe bestimmt wurde. Eine neue Žnderung fhrt zu einer krzeren Meáschleife, so daá Timing-Unterschiede prozentual gr”áer und daher besser erkannt werden. Gleichzeitig wurde fr >486-Systeme die Diskriminate fr Write-Back-Erkennung von 1.1 auf 1.04 und fr L2-Erkennung von 1.2 auf 1.1 reduziert. Einbindung von iDX4. Dieser wurde von < V1.3c wg. der 16 KByte Cache als IBM486SCL/DLC erkannt. Version 1.4 Neue Cachesize-Erkennung Arbeitet im Extended Speicher, (nur noch ab 386 Prozessor). Diverse CPUs hinzugefgt. Fehlerhafte Dirty-Erkennung bei Intel Triton 1.5 TransferRoutine mit noch weniger Thrashing eingebaut => etwas gr”áere Datenraten im L1-Cache Write-Back-Erkennung fr L1 und L2-Cache Assoziativit„tserkennung fr L1 und L2-Cache Dirty-Erkennung ge„ndert fr Systeme mit optimalen Castoff-Buffern (Intel Triton). CPUID hinzugefgt Neue Prozessoren hinzugefgt Pentium-Pro (noch ohne Dirtyerkennung) Cyrix 6x86 (eingeschr„nkt wg. Cachefill on Write Miss, siehe c't 4/96 S.196ff) Optionalen SCAN-Modus eingefgt: Datenraten gemittelt ber Adressen 0,4,8,.. 28 Aufruf : ctcm /parameter Proz : ab 386SX Parameter: [Transfertyp][Timer][Cachegr”áe] Transfertyp: MOVSB (Default), MOVSW MOVSD STOSB STOSW STOSD LODSB LODSW LODSD Timer: /T0 (Default) System-Timer 0 /T1 Refresh-Timer 1 - ist exakter, kann aber zu Parity-Problemem fhren !!! nicht fr PS/2 !!! /T2 Timer 2 Cachegr”áe: /L1=xxx in KB, bersteuert die ermittelte L1-Cachegr”áe /L2=xxx in KB, bersteuert die ermittelte L2-Cachegr”áe VideoTransfer: /Vid Miát Transfers von und zum Videospeicher (Default Videomodus = $13); /Vid=xxx Miát im Videomodus xxx (dezimal) oder $XXX (hexadezimal) /SCAN miát ber Adreálagen 0, 4, 8 .. 28 und mittelt