The division with the Frequency (or multiplication with InvFrequency,
respective) always produces a floatingpoint number. So at least if you want
to know how much seconds or milliseconds (*1000) passed you need single
or double [which is better for such big numbers].

"what style of hardware dont have this avaliable?"
I don't know. Just know that this feature is abundant nowadays.
Wiki says its even integreated in CPU, so forget my Mainboard statement
(English Wiki shows a table how much counters are integrated in which
CPU; it mentions AMD Athlon and Pentium III).