amd64_timer 1.2.0

Get CPU ticks.
Documentation

x86/x86_64 Timer

This is a low level CPU cycle count timer. What it returns is the value held within the processor time stamp counter. This counter is incremented every CPU cycle.


####Considerations

When bench marking with this crate you want to assure your CPU is set to a fixed multipler. This mean Intel Turbo Boost must be OFF. You can do this in via the bios.

This crate requires Rust Nightly (as it uses asm! macro)


####Functions

fn ticks() -> u64;

This returns the number of CPU cycles that have passed since the last time the CPU counter has rolled over. OR Power on.


####In Depth Documentation

This function step by step:

#Intel Syntax

ldfence		#cheapest fence on x86
		    #this prevents instruction re-ordering
		    #ensures all loads are complete
		    #on x64 this is done for you by the memory model
		    #so this fence is _free_
		    #this fence is here to prevent speculative
		    #execution of rdtsc.

rdtsc		#puts timestamp counter values into the low
		    #32bits of rdx and rax.


shl rdx, $32	#move the high section, into the high 32bits of
		        #its register

or rax, rdx	#combine bits

retq		#leave function

Reference


###License

Consider this crate licensed under the MIT.


###x86 support

This crate does implement 32bit x86 support, but it is untested.