[{"@context":"http:\/\/schema.org\/","@type":"BlogPosting","@id":"https:\/\/wiki.edu.vn\/wiki10\/2020\/12\/24\/zeitstempelzahler-wikipedia\/#BlogPosting","mainEntityOfPage":"https:\/\/wiki.edu.vn\/wiki10\/2020\/12\/24\/zeitstempelzahler-wikipedia\/","headline":"Zeitstempelz\u00e4hler – Wikipedia","name":"Zeitstempelz\u00e4hler – Wikipedia","description":"before-content-x4 Das Zeitstempelz\u00e4hler ((TSC) ist ein 64-Bit-Register, das seit dem Pentium auf allen x86-Prozessoren vorhanden ist. Es z\u00e4hlt die Anzahl","datePublished":"2020-12-24","dateModified":"2020-12-24","author":{"@type":"Person","@id":"https:\/\/wiki.edu.vn\/wiki10\/author\/lordneo\/#Person","name":"lordneo","url":"https:\/\/wiki.edu.vn\/wiki10\/author\/lordneo\/","image":{"@type":"ImageObject","@id":"https:\/\/secure.gravatar.com\/avatar\/44a4cee54c4c053e967fe3e7d054edd4?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/44a4cee54c4c053e967fe3e7d054edd4?s=96&d=mm&r=g","height":96,"width":96}},"publisher":{"@type":"Organization","name":"Enzyklop\u00e4die","logo":{"@type":"ImageObject","@id":"https:\/\/wiki.edu.vn\/wiki4\/wp-content\/uploads\/2023\/08\/download.jpg","url":"https:\/\/wiki.edu.vn\/wiki4\/wp-content\/uploads\/2023\/08\/download.jpg","width":600,"height":60}},"image":{"@type":"ImageObject","@id":"https:\/\/en.wikipedia.org\/wiki\/Special:CentralAutoLogin\/start?type=1x1","url":"https:\/\/en.wikipedia.org\/wiki\/Special:CentralAutoLogin\/start?type=1x1","height":"1","width":"1"},"url":"https:\/\/wiki.edu.vn\/wiki10\/2020\/12\/24\/zeitstempelzahler-wikipedia\/","wordCount":1499,"articleBody":" (adsbygoogle = window.adsbygoogle || []).push({});before-content-x4Das Zeitstempelz\u00e4hler ((TSC) ist ein 64-Bit-Register, das seit dem Pentium auf allen x86-Prozessoren vorhanden ist. Es z\u00e4hlt die Anzahl der Zyklen seit dem Zur\u00fccksetzen. Die Anleitung RDTSC Gibt die TSC in EDX: EAX zur\u00fcck. Im x86-64-Modus RDTSC l\u00f6scht auch die h\u00f6heren 32 Bit von RAX und RDX. Sein Opcode ist 0F 31.[1]Pentium-Konkurrenten wie der Cyrix 6×86 hatten nicht immer einen TSC und k\u00f6nnten dies in Betracht ziehen RDTSC eine illegale Anweisung. Cyrix hat einen Zeitstempelz\u00e4hler in sein MII aufgenommen. Der Zeitstempelz\u00e4hler war einst eine hervorragende hochaufl\u00f6sende Methode mit geringem Overhead f\u00fcr ein Programm, um Informationen zum CPU-Timing abzurufen. Mit dem Aufkommen von Multi-Core- \/ Hyper-Threaded-CPUs, Systemen mit mehreren CPUs und Betriebssystemen im Ruhezustand kann man sich nicht darauf verlassen, dass die TSC genaue Ergebnisse liefert – es sei denn, es wird gro\u00dfe Sorgfalt darauf verwendet, die m\u00f6glichen Fehler zu korrigieren: Tick-Rate und ob Alle Kerne (Prozessoren) haben identische Werte in ihren Zeitregistern. Es gibt kein Versprechen, dass die Zeitstempelz\u00e4hler mehrerer CPUs auf einem einzelnen Motherboard synchronisiert werden. Daher kann ein Programm nur dann zuverl\u00e4ssige Ergebnisse erzielen, wenn es sich auf die Ausf\u00fchrung auf einer bestimmten CPU beschr\u00e4nkt. Selbst dann kann sich die CPU-Geschwindigkeit aufgrund von Energiesparma\u00dfnahmen \u00e4ndern, die vom Betriebssystem oder BIOS ergriffen werden, oder das System kann in den Ruhezustand versetzt und sp\u00e4ter wieder aufgenommen werden, wodurch der TSC zur\u00fcckgesetzt wird. In letzteren F\u00e4llen muss das Programm den Z\u00e4hler regelm\u00e4\u00dfig neu kalibrieren, um relevant zu bleiben.Das Verlassen auf die TSC verringert auch die Portabilit\u00e4t, da andere Prozessoren m\u00f6glicherweise keine \u00e4hnliche Funktion haben. Neuere Intel-Prozessoren enthalten eine TSC mit konstanter Rate (identifiziert durch das System kern.timecounter.invariant_tsc auf FreeBSD oder durch das “constant_tsc“Flag in Linux \/proc\/cpuinfo). Bei diesen Prozessoren tickt der TSC mit der Nennfrequenz des Prozessors, unabh\u00e4ngig von der tats\u00e4chlichen CPU-Taktfrequenz aufgrund von Turbo- oder Energiesparzust\u00e4nden. Daher z\u00e4hlen TSC-Ticks den Zeitablauf und nicht die Anzahl der verstrichenen CPU-Taktzyklen.Auf Windows-Plattformen r\u00e4t Microsoft aus genau diesen Gr\u00fcnden dringend davon ab, die TSC f\u00fcr hochaufl\u00f6sendes Timing zu verwenden, und stellt stattdessen die Windows-APIs bereit QueryPerformanceCounter und QueryPerformanceFrequency.[2] Auf POSIX-Systemen kann ein Programm eine \u00e4hnliche Funktion erhalten, indem es den Wert von liest CLOCK_MONOTONIC_RAW Uhr mit der clock_gettime Funktion.[3] Beginnend mit dem Pentium Pro haben Intel-Prozessoren die Ausf\u00fchrung au\u00dferhalb der Reihenfolge ge\u00fcbt, bei der Anweisungen nicht unbedingt in der Reihenfolge ausgef\u00fchrt werden, in der sie im Programm angezeigt werden. Dies kann dazu f\u00fchren, dass der Prozessor ausgef\u00fchrt wird RDTSC fr\u00fcher als ein einfaches Programm erwartet, was zu einer irref\u00fchrenden Zyklusz\u00e4hlung f\u00fchrt.[4] Der Programmierer kann dieses Problem l\u00f6sen, indem er einen Serialisierungsbefehl wie z. B. die CPUID einf\u00fcgt, um zu erzwingen, dass jeder vorhergehende Befehl abgeschlossen wird, bevor das Programm fortgesetzt werden kann, oder indem er den Befehl verwendet RDTSCP Anweisung, die eine serialisierende Variante der RDTSC Anweisung.Table of ContentsImplementierung in verschiedenen Prozessoren[edit]Verwendung des Betriebssystems[edit]Verwendung beim Ausnutzen von Cache-Seitenkanalangriffen[edit]Andere Architekturen[edit]Siehe auch[edit]Verweise[edit]Externe Links[edit]Implementierung in verschiedenen Prozessoren[edit]Intel-Prozessorfamilien erh\u00f6hen den Zeitstempelz\u00e4hler unterschiedlich:[5]F\u00fcr Pentium M-Prozessoren (Familie [06H]Modelle [09H, 0DH]); f\u00fcr Pentium 4-Prozessoren Intel Xeon-Prozessoren (Familie) [0FH]Modelle [00H, 01H, or 02H]); und f\u00fcr Prozessoren der P6-Familie: Der Zeitstempelz\u00e4hler erh\u00f6ht sich mit jedem internen Prozessortaktzyklus. Der interne Prozessortaktzyklus wird durch das aktuelle Verh\u00e4ltnis von Kerntakt zu Bustakt bestimmt. \u00dcberg\u00e4nge der Intel SpeedStep-Technologie k\u00f6nnen sich auch auf die Prozessortaktung auswirken.F\u00fcr Pentium 4-Prozessoren Intel Xeon-Prozessoren (Familie) [0FH]Modelle [03H and higher]); f\u00fcr Intel Core Solo und Intel Core Duo Prozessoren (Familie [06H]Modell [0EH]); f\u00fcr den Intel Xeon Prozessor der Serie 5100 und die Intel Core 2 Duo Prozessoren (Familie) [06H]Modell [0FH]); f\u00fcr Intel Core 2 und Intel Xeon Prozessoren (Familie [06H], display_model [17H]); f\u00fcr Intel Atom Prozessoren (Familie [06H], display_model [1CH]): Der Zeitstempelz\u00e4hler erh\u00f6ht sich mit einer konstanten Rate. Diese Rate kann durch das maximale Verh\u00e4ltnis von Kerntakt zu Bustakt des Prozessors oder durch die maximal aufgel\u00f6ste Frequenz eingestellt werden, mit der der Prozessor gestartet wird. Die maximal aufgel\u00f6ste Frequenz kann von der maximal qualifizierten Frequenz des Prozessors abweichen.Die spezifische Prozessorkonfiguration bestimmt das Verhalten. Das konstante TSC-Verhalten stellt sicher, dass die Dauer jedes Taktticks gleichm\u00e4\u00dfig ist, und erm\u00f6glicht die Verwendung des TSC als Wandtakt-Timer, selbst wenn der Prozessorkern die Frequenz \u00e4ndert. Dies ist das Architekturverhalten aller sp\u00e4teren Intel-Prozessoren. AMD-Prozessoren bis zum K8-Kern haben den Zeitstempelz\u00e4hler bei jedem Taktzyklus immer erh\u00f6ht.[6] Auf diese Weise konnten Energieverwaltungsfunktionen die Anzahl der Inkremente pro Sekunde \u00e4ndern und die Werte zwischen verschiedenen Kernen oder Prozessoren im selben System nicht mehr synchronisieren. F\u00fcr Windows bietet AMD ein Dienstprogramm[7] um die Z\u00e4hler auf mehreren Kern-CPUs regelm\u00e4\u00dfig zu synchronisieren. Seit der Familie 10h (Barcelona \/ Phenom) verf\u00fcgen AMD-Chips \u00fcber eine konstante TSC, die entweder durch die HyperTransport-Geschwindigkeit oder den h\u00f6chsten P-Zustand gesteuert werden kann. Ein CPUID-Bit (Fn8000_0007:EDX_8) wirbt daf\u00fcr; Intel-CPUs melden auch ihre invariante TSC f\u00fcr dieses Bit.Verwendung des Betriebssystems[edit]Ein Betriebssystem kann Methoden bereitstellen, die das verwenden und nicht verwenden RDTSC Anleitung zur Zeitmessung unter Administratorkontrolle. In einigen Versionen des Linux-Kernels wird beispielsweise der Seccomp-Sandbox-Modus deaktiviert RDTSC.[8] Es kann auch mit dem deaktiviert werden PR_SET_TSC Argument zum prctl() Systemaufruf.[9]Verwendung beim Ausnutzen von Cache-Seitenkanalangriffen[edit]Der Zeitstempelz\u00e4hler kann verwendet werden, um Anweisungen genau zu zeitigen, die bei den Sicherheitsl\u00fccken Meltdown und Spectre ausgenutzt werden k\u00f6nnen[10][11]. Wenn dies jedoch nicht verf\u00fcgbar ist, k\u00f6nnen andere Z\u00e4hler oder Timer verwendet werden, wie dies bei ARM-Prozessoren der Fall ist, die f\u00fcr diese Art von Angriff anf\u00e4llig sind.Andere Architekturen[edit]Andere Prozessoren haben ebenfalls Register, die CPU-Taktzyklen z\u00e4hlen, jedoch unterschiedliche Namen haben. Auf dem AVR32 wird es beispielsweise als PCCNT-Register (Performance Clock Counter) bezeichnet. SPARC V9 bietet dieTICK registrieren. ARMv7[12] und ARMv8[13] Architekturen stellen einen generischen Z\u00e4hler bereit, der mit einer konstanten Frequenz z\u00e4hlt. PowerPC bietet das 64-Bit TBR registrieren.Siehe auch[edit]Verweise[edit]Externe Links[edit] (adsbygoogle = window.adsbygoogle || []).push({});after-content-x4"},{"@context":"http:\/\/schema.org\/","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"item":{"@id":"https:\/\/wiki.edu.vn\/wiki10\/#breadcrumbitem","name":"Enzyklop\u00e4die"}},{"@type":"ListItem","position":2,"item":{"@id":"https:\/\/wiki.edu.vn\/wiki10\/2020\/12\/24\/zeitstempelzahler-wikipedia\/#breadcrumbitem","name":"Zeitstempelz\u00e4hler – Wikipedia"}}]}]