Page 301 - ARM 64 Bit Assembly Language
P. 301

290 Chapter 8

                  The Patriot system was originally designed in 1974 to be mobile and to defend against aircraft
                  that move much more slowly than ballistic missiles. It was expected that the system would
                  be moved often, and therefore the computer would be rebooted frequently. Also, the slow-
                  moving aircraft would be much easier to track, and the error in predicting where it is expected
                  to be would not be significant. The system was modified in 1986 to be capable of shooting
                  down Soviet ballistic missiles. A SCUD missile travels at about twice the speed of the Soviet
                  missiles that the system was re-designed for.

                  The system was deployed to Iraq in 1990, and successfully shot down a SCUD missile in Jan-
                  uary of 1991. In mid-February of 1991, Israeli troops discovered that if the system became
                  inaccurate if it was allowed to run for long periods of time. They claimed that the system
                  would become unreliable after twenty hours of operation. U.S. military did not think the dis-
                  covery was significant, but on February 16th, a software update was released. Unfortunately,
                  the update could not immediately reach all units because of wartime difficulties in transporta-
                  tion. The Army released a memo on February 21st, stating that the system was not to be run
                  for “very long times,” but did not specify how long a “very long time” would be. The software
                  update reached Dhahran one day after the Patriot Missile system failed to intercept a SCUD
                  missile, resulting in the death of 28 Americans and many more injuries.
                  Part of the reason this error was not found earlier was that the program was written in assem-
                  bly language, and had been patched several times in its 15-year life. The code was difficult
                  to understand and maintain, and did not conform to good programming practices. The peo-
                  ple who worked to modify the code to handle the SCUD missiles were not as familiar with
                  the code as they would have been if it were written more recently, and time was a critical fac-
                  tor. Prolonged testing could have caused a disaster by keeping the system out of the hands of
                  soldiers in a time of war. The people at Raytheon Labs had some tough decisions to make.
                  It cannot be said that Raytheon was guilty of negligence or malpractice. The problem with
                  the system was not necessarily the developers, but that the system was modified often and
                  in inconsistent ways, without complete understanding. However, it should be noted that if
                  the hardware clock had counted time in eighths or sixteenths of a second, there would have
                  been no round off error at all. Using floating point for the calculations would not have solved
                  the problem, because the value  1  cannot be represented precisely using either fixed point or
                                             10
                  floating point.


                  8.10 Chapter summary

                  Sometimes it is desirable to perform calculations involving non-integral numbers. The two
                  common ways to represent non-integral numbers in a computer are fixed point and floating
                  point. A fixed point representation allows the programmer to perform calculations with non-
                  integral numbers using only integer operations. With fixed point, the programmer must track
   296   297   298   299   300   301   302   303   304   305   306