Without the signal processing code, the interrupt handler does very little work. For the DPC version, the signal processing is done in a DPC. Figure 4 shows the times spent inside of the interrupt handler and the queued DPC. In the THR and RES versions, the DPC execution time is replaced by the scheduled thread execution time.
While the ISR execution time has been reduced from milliseconds to a few microseconds, the time spent inside the DPC is still too large. The PC 99 specifications suggest that at any instant in time, the total execution time required for all DPCs that have been queued by a driver-based modem, but have not been executed should not exceed 500μs.
3.5 Interference with Other Applications
Figure 5 – Latency histogram for a 1ms callback routine without the soft modem
In order to understand the effects of long running ISRs and DPCs, we measured the observed latencies of a callback routine that uses the Windows Multimedia Timers. The timers have been set to fire every millisecond and the routine is called with priority 31, the highest priority for a real-time thread.
Figures 5 and 6 show histograms of the measured latencies when the soft modem is not running and for the INT version. The experiment captured 30,000 wakeups over a 30-second period. Samples are accumulated into 50µs buckets. While not ideal, the control case (Figure 5) shows
Figure 6 – Latency histogram for a 1ms callback routine with the vendor driver version (INT)