[comp.lang.ada] Ada Interrupt Rate Survey

hawk@hpavla.HP.COM (Dave Hawk) (01/05/90)

   I am interested in learning what the current "state of the art" is
for feasible interrupt response rates for Ada based systems on 68xxx 
and 80x86 microprocessors.  I am interrested in Ada systems which run
directly on the hardware itself with an Ada vendor's run time (no 
intermediate OS such as Unix or OS/2).  If you have knowledge of an 
Ada system using interrupts on one of these microprocessors could you 
please post a brief response to this basenote listing:
    1.) Approximate interrupt rate,
    2.) Processor and clock speed,
    3.) Name of compiler vendor,
    4.) A comment on margin (i.e. are you near the limits of
            what the system can do, or do you still have
            processor time to burn?)

Thanks,
David Hawk
Hewlett-Packard Co.
Avondale, Pa.

griest@ajpo.sei.cmu.edu (Tom Griest) (01/09/90)

Regarding David Hawks posting on Interrupt Rates for Ada programs:

>>    1.) Approximate interrupt rate,

            The system I am currently working on has several different
            interrupts, the highest rate is 500Hz.  The implementation
            uses "fast" interrupt entries in that the compiler essentially
            generates code to save/restore registers, places this around
            your Ada "accept" statement, and vectors directly to this
            code.  Thus, the interrupt rate is the same as for assembly
            language, and incurs only the overhead of processor interrupt
            handling and register preservation.  In our case this is about
            10 usec. round-trip.  Latency is primarily determined by how
            long interrupts are disabled during runtime calls and are
            typically held very short (under 20usec) but I don't have a 
            number for the worst case possibility.

            The maximum interrupt rate is therefore limited by what
            is done during the interrupt.  If an entry call is made during
            the interrupt, it is treated in a special way and is effectively
            deferred until after the interrupt is completed.  Such a call
            is believed to have low overhead (we have not measured it
            recently, but we recall numbers well under 100usec).  Our
            application must process interrupts very frequently in order
            to prevent the loss of data.  Less frequently it wakes up
            another task to perform extended processing on the data received.
            
 >>   2.) Processor and clock speed,

            We are using a 16MHz 80386, currently running in "Real-Mode".
            Accesses within 4KB memory pages incur no wait states, switching
            pages forces a wait state.

>>    3.) Name of compiler vendor,

            DDC-I Inc.

>>    4.) A comment on margin (i.e. are you near the limits of
>>            what the system can do, or do you still have
>>            processor time to burn?)

            Our application is very close to margin, and to a limited extent
            is designed to degrade gracefully as it exceeds the available
            CPU cycles.  (The processing load is highly dependent on the
            number of targets and rockets that require tracking, what
            flight phase the rockets are in, and even computations that
            vary depending on parameters like square roots performed in
            software.)  Our system has the ability to become distributed
            to obtain additional processing resources, but this characteristic
            has little or no impact on the way in which interrupts are
            processed.  However it is used to offload rocket trajectory 
            calculations, graphics processing, and various other operations 
            and therefore can provide isolation from the activities with 
            high interrupt rates.

            The system is strictly real-time and when rocket calculation
            deadlines are missed, it degrades very rapidly.  In particular,
            the processor closes the servo loop between the rocket attitude
            data and the trajectory planner of the rocket to intercept the
            target.  These equations are based on accelerations computed on
            presumed fixed intervals between reports.  If the intervals
            become aperiodic, the rocket stability suffers substantially and
            the hit rate is dramatically reduced.  Also, if the update 
            deadlines are missed during the final ingress phase and targets
            change acceleration then the extrapolated positions will be 
            incorrect resulting in missed targets.
            
Tom Griest
LabTek Corporation
griest@ajpo.sei.cmu.edu