Re: Different speed CPUs show up as same speed
Peter Hufnagel <[email protected]>
| Newsgroups | gmane.os.netbsd.devel.smp |
|---|---|
| Message-ID | <[email protected]> |
>> At my job we have a bunch of machines down in labs that have custom >> written code with "calibrated timing loops" written for the specific >> processor... and now, years after we have pretty much trashed all the >> 286/386 class machines, we've got guys in the labs looking for "spare" >> 12-Mhz 286 machines and 386SX/16's "because it would cost us $40k in >> engineering time to rewrite the code". > >Those are probably 'uncalibrated' loops! >Such tricks as 'jmps .+2' and 'shr al,cx' (when cx is large) >were used for delays on the 286. Some of that code worked >for a long time - typically because no one had allowed for the >time taken to call the delay routine. > >The kernel (probably) has a bit if code run during startup >that determines how many times it goes around a tight loop >between 2 clock ticks. This is used to calibrate loop >delays - often used for microsecond delays. Kernel? Oh, you mean DOS 3.2? These were programs written to, say, send a single-bit pulse out the parallel port, then delay say 2ms, and send the next pulse out. Or write a pulse out, and then wait for a pulse in 'reply' to it and based on the loop count, determine the time lapse. A lot of things that could have been calculated based on the Timer chip internal to the PC instead. True, the instructions *around* getting the timer value or such would take time, but as far as I know accuracy of several microseconds is not needed (the time of a few instructions changing wouldn't affect it based on Timer, while it would drastically affect the timing of a loop). Even back then, boards were available that could do this is hardware... of course, they were ISA boards. Nobody wants to spend the money to buy new hardware and update the code...