[ntp:questions] Dual-core systems - AMD - Windows Vista

David L. Mills mills at udel.edu
Wed Dec 5 18:35:05 UTC 2007


David,

Don't look in the NTP distribution for interpolation code; that's in the 
kernel, for the Alpha the nanokernel code. All the code there, by the 
way, is in C for portability. By the way, I see that code is no longer 
available via http, only anonymous ftp.

Dave

David J Taylor wrote:
> David L. Mills wrote:
> 
>>David,
>>
>>The multiple-CPU nanokernel code that left here and is in the Alpha
>>kernel assumes each CPU has an individual cycle counter and the timer
>>interupts are vectored to a designated CPU. There is a data structure
>>associated with each CPU that holds the measured current cycle counter
>>scaling and offset, which is updated once each second by
>>interprocessor interrrupt. A call to read the system clock lands on a
>>j-random CPU, which reads the global time maintained by timer
>>interrupts and interpolates according to the current CPU values.
>>
>>I don't know if Vista attempts to provide granularity within the tick;
>>but if it does, I would expect it to use a similar strategy.
>>
>>Dave
> 
> 
> Thanks for that, Dave.  I haven't needed to touch assembler for a little 
> wile now, so I'm not up to speed on whether the various Intel and AMD 
> architectures (hyper-threading, dual/quad-core, and physical 
> multi-processor etc.) provide access to every cycle counter from a single 
> CPU or executing thread.
> 
> The Windows implementation does try to provide granularity within the 
> tick, but I have no idea how the Meinberg port I'm using handles 
> multi-processors.  Checking.  I see the routine: nt_clockstuff.c mentions 
> that how to handle multi-processors is not yet decided, but that seems 
> very old code (year 2000).  I can't find the RDTSC instruction anywhere in 
> version ntp-4.2.4p4.  So I'm a bit stuck right now!
> 
> Cheers,
> David 
> 
> 




More information about the questions mailing list