I need a clock like `Stopwatch.GetTimestamp()` that

1. has little overhead when acquiring the value
2. is accurate to at least 1 millisecond (without decreasing the os wide timer interval)
3. does not have to be pegged to the actual time of day (like e.g. `DateTime.Now` is)
4. **increases monotonically, although not necessarily strictly** (calling it multiple times in the same millisecond with 1ms accuracy will produce the same value)
5. **maintains all the above run concurrently on multiple cores and processors**

`Stopwatch` seems to [fail to provide the last of these properties](http://msdn.microsoft.com/en-us/library/ebf7z0sw.aspx):

> 
> On a multiprocessor computer, it does not matter which processor the
>  thread runs on. However, because of bugs in the BIOS or the Hardware
>  Abstraction Layer (HAL), you can get different timing results on
>  different processors. To specify processor affinity for a thread, use
>  the ProcessThread.ProcessorAffinity method.
> 
> 
> 

To enable real concurrency, for obvious reasons I cannot pin all threads to a single processor.

Any alternative I can use in .net? Or is the above warning outdated / restricted to some rare models (my production environment is unlikely to house)?

**Edit:**

Here's my main concern: I don't mind values being off by one (e.g. millisecond) or so on different processors, but they need to be always be more or less the same no matter what processor they are retrieved from.