From: "Marin David Condic, 407.796.8997, M/S 731-93" <condicma@PWFL.COM>
Subject: Re: Ariane 5 failure
Date: 1996/10/14
Date: 1996-10-14T00:00:00+00:00 [thread overview]
Message-ID: <96101416363982@psavax.pwfl.com> (raw)
Alan Brain <aebrain@DYNAMITE.COM.AU> writes:
>more, tolerances. And with diamond-grade Hard Real Time slices, where
>any
>over-run, no matter how slight, means disaster. In this case, Formal
>Proof
>and strict attention to the no of CPU cycles in all possible paths seems
>the only way to go.
>But this leaves you so open to error in all but the simplest, most
>trivial
>tasks, (just the race analysis would be nightmarish) that these slices
>had
>better be a very small part of the task, or the task itself must be very
>simple indeed. Either way, not having much bearing on the vast majority
>
In my experience with this sort of "Hard Real Time" code, you are
typically talking about relatively straightforward code - albeit
difficult to develop. (Ask A. Einstein how long it took him to
write the "E := M * C**2 ;" function.)
The parts which typically have hard deadlines tend to be heavy on
math or data motion and rather light on branching and call chain
complexity. You want your "worst case" timing to be your nominal
path and you'd like for it to be easily analyzed and very
predictable. Usually, it's a relatively small part of the system
and maybe (MAYBE!) you can turn off runtime checks for just this
portion of the code, leaving it in for the things which run at a
lower duty cycle.
Of course the truly important thing to remember is that compiler
generated runtime checks are not a panacea. They *may* have helped
with the Ariane 5, if there was an appropriate accommodation once
the error was detected. (Think about it. If the accommodation was
"Shut down the channel and pass control to the other side" {Very
common in a dual-redundant system} it would have made no
difference.) But most of the errors I've encountered in realtime
systems have been of the "logic" variety. ("Gee! We thought 'x'
was the proper course of action when this condition comes up and
really it should have been 'y'" or "I didn't know the control
would go unstable if parameter 'x' would slew across its range
that quickly!?!?!") Runtime checks aren't ever going to save us
from that sort of mistake - and those are the ones which show up
most often. (Unless, of course, you program in C ;-)
An aside which has something to do with Ada language constructs:
In most of our work (control systems) it would be far more useful
for math over/underflows to saturate and continue on, rather than
raise an exception and halt processing. Ada never defined any
numeric types with this sort of behavior - and I find it difficult
to believe that many others in similar embedded applications
wouldn't also desire this behavior from some predefined floating,
fixed, and integer types. Of course, the language allows us to
define our own types and (if there's proper hardware and compiler
support for dealing with it) efficient "home-brew" solutions can
be built. Still, it would have seemed appropriate for the language
designers to have built some direct support for a very common
embedded need.
MDC
Marin David Condic, Senior Computer Engineer ATT: 561.796.8997
M/S 731-96 Technet: 796.8997
Pratt & Whitney, GESP Fax: 561.796.4669
P.O. Box 109600 Internet: CONDICMA@PWFL.COM
West Palm Beach, FL 33410-9600 Internet: CONDIC@FLINET.COM
===============================================================================
"The speed with which people can change a courtesy into an
entitlement is awe-inspiring."
-- Miss Manners, February 8, 1994
===============================================================================
next reply other threads:[~1996-10-14 0:00 UTC|newest]
Thread overview: 104+ messages / expand[flat|nested] mbox.gz Atom feed top
1996-10-14 0:00 Marin David Condic, 407.796.8997, M/S 731-93 [this message]
1996-10-15 0:00 ` Ariane 5 failure Robert I. Eachus
1996-10-15 0:00 ` Robert Dewar
1996-10-16 0:00 ` Michael F Brenner
1996-10-16 0:00 ` Robert Dewar
1996-10-23 0:00 ` robin
-- strict thread matches above, loose matches on Subject: below --
1996-10-31 0:00 Marin David Condic, 561.796.8997, M/S 731-93
1996-10-28 0:00 Marin David Condic, 561.796.8997, M/S 731-93
1996-10-29 0:00 ` Ken Garlington
1996-11-08 0:00 ` robin
1996-10-28 0:00 Marin David Condic, 561.796.8997, M/S 731-93
1996-10-21 0:00 Marin David Condic, 407.796.8997, M/S 731-93
1996-10-22 0:00 ` Adam Beneschan
1996-10-16 0:00 Marin David Condic, 407.796.8997, M/S 731-93
1996-10-18 0:00 ` Ken Garlington
1996-10-19 0:00 ` Frank Manning
1996-10-21 0:00 ` Norman H. Cohen
1996-10-03 0:00 Marin David Condic, 407.796.8997, M/S 731-93
1996-10-03 0:00 Marin David Condic, 407.796.8997, M/S 731-93
1996-10-03 0:00 Marin David Condic, 407.796.8997, M/S 731-93
1996-10-01 0:00 Marin David Condic, 407.796.8997, M/S 731-93
1996-10-02 0:00 ` Alan Brain
1996-10-02 0:00 ` Ken Garlington
1996-10-02 0:00 ` Matthew Heaney
1996-10-04 0:00 ` Robert S. White
1996-10-05 0:00 ` Alan Brain
1996-10-06 0:00 ` Robert S. White
1996-10-05 0:00 ` Robert Dewar
1996-10-03 0:00 ` Alan Brain
1996-10-04 0:00 ` Ken Garlington
1996-10-01 0:00 Marin David Condic, 407.796.8997, M/S 731-93
1996-10-02 0:00 ` Ken Garlington
1996-10-01 0:00 Marin David Condic, 407.796.8997, M/S 731-93
1996-10-02 0:00 ` Robert I. Eachus
1996-10-02 0:00 ` Ken Garlington
1996-10-02 0:00 ` Matthew Heaney
1996-10-04 0:00 ` Ken Garlington
1996-10-05 0:00 ` Robert Dewar
1996-10-06 0:00 ` Keith Thompson
1996-10-10 0:00 ` Ken Garlington
1996-10-14 0:00 ` Matthew Heaney
1996-10-15 0:00 ` Robert Dewar
1996-10-16 0:00 ` Ken Garlington
1996-10-18 0:00 ` Keith Thompson
1996-10-18 0:00 ` Ken Garlington
1996-10-18 0:00 ` Samuel T. Harris
1996-10-21 0:00 ` Ken Garlington
1996-10-23 0:00 ` robin
[not found] <agrapsDy4oJH.29G@netcom.com>
1996-09-25 0:00 ` @@ robin
1996-09-25 0:00 ` Michel OLAGNON
1996-09-25 0:00 ` Chris Morgan
1996-09-25 0:00 ` Byron Kauffman
1996-09-25 0:00 ` A. Grant
1996-09-25 0:00 ` Ken Garlington
1996-09-26 0:00 ` Byron Kauffman
1996-09-27 0:00 ` A. Grant
1996-09-26 0:00 ` Sandy McPherson
1996-09-25 0:00 ` Bob Kitzberger
1996-09-26 0:00 ` Ronald Kunne
1996-09-26 0:00 ` Matthew Heaney
1996-09-27 0:00 ` Ronald Kunne
1996-09-27 0:00 ` Lawrence Foard
1996-10-04 0:00 ` @@ robin
1996-09-28 0:00 ` Ken Garlington
1996-09-28 0:00 ` Ken Garlington
1996-09-29 0:00 ` Alan Brain
1996-09-29 0:00 ` Robert A Duff
1996-09-30 0:00 ` Wayne L. Beavers
1996-10-01 0:00 ` Ken Garlington
1996-10-01 0:00 ` Wayne L. Beavers
1996-10-01 0:00 ` Ken Garlington
1996-10-02 0:00 ` Sandy McPherson
1996-10-03 0:00 ` Richard A. O'Keefe
1996-10-01 0:00 ` Ken Garlington
1996-09-27 0:00 ` Wayne Hayes
1996-09-27 0:00 ` Richard Pattis
1996-09-29 0:00 ` Chris McKnight
1996-09-29 0:00 ` Alan Brain
1996-09-29 0:00 ` Dann Corbit
1996-10-01 0:00 ` Ken Garlington
1996-09-28 0:00 ` Ken Garlington
1996-09-27 0:00 ` Alan Brain
1996-09-28 0:00 ` Ken Garlington
1996-09-27 0:00 ` Ken Garlington
1996-09-29 0:00 ` Louis K. Scheffer
1996-09-27 0:00 ` John McCabe
1996-10-01 0:00 ` Michael Dworetsky
1996-10-04 0:00 ` Steve Bell
1996-10-07 0:00 ` Ken Garlington
1996-10-09 0:00 ` @@ robin
1996-10-09 0:00 ` Steve O'Neill
1996-10-12 0:00 ` Alan Brain
1996-10-04 0:00 ` @@ robin
1996-10-04 0:00 ` Michel OLAGNON
1996-10-09 0:00 ` @@ robin
1996-10-04 0:00 ` Joseph C Williams
1996-10-06 0:00 ` Wayne Hayes
1996-10-17 0:00 ` Ralf Tilch
1996-10-17 0:00 ` Ravi Sundaram
1996-10-22 0:00 ` shmuel
1996-10-22 0:00 ` Jim Carr
1996-10-24 0:00 ` hayim
1996-10-25 0:00 ` Ken Garlington
1996-10-25 0:00 ` Michel OLAGNON
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox