Electrical computers and digital processing systems: multicomput – Computer-to-computer data routing – Least weight routing
Reexamination Certificate
1998-04-06
2002-04-16
Courtenay, III, St. John (Department: 2151)
Electrical computers and digital processing systems: multicomput
Computer-to-computer data routing
Least weight routing
C709S241000, C710S260000, C713S502000
Reexamination Certificate
active
06374286
ABSTRACT:
FIELD OF THE INVENTION
The present invention relates generally to computer systems which operate in real-time. More particularly, the present invention relates to real-time processors which run JAVA™ programs (JAVA is a trademark of Sun Microsystems, Inc.) and, specifically, to real time processors which can concurrently run several independent JAVA processing machines.
BACKGROUND OF THE INVENTION
Electronic systems, such as, computerized devices or computer controlled apparatus, are employed in dramatic numbers to perform various operations in diverse applications. These electronic systems range in complexity from simple consumer products, such as, home appliances and children's toys to complex arrangements, such as, aircraft autopilot systems, chemical processing controls or safety devices for complicated applications. Many of these electronic systems rely on internal, or embedded, computers for at least a portion of their functionality.
Such embedded computer systems often carry out such operations as sensing, computation, display, and control in response to stimuli from internal and external sources. Certain sensing and control applications have demanding speed requirements which can be described as “real time” speed requirements. Real time speed requirements demand that the embedded computer system responded to events or stimuli within a strict, specified amount of time. For example, embedded computer systems are utilized in most modern automobiles to control tasks, such as, fuel injection, anti-lock braking, air bag deployment, engine ignition, anti-lock braking, air bag deployment, engine ignition and other operations.
The amount of time allowed for computer response is generally very small. For example, an embedded computer system must rapidly analyze deceleration data to accurately and appropriately deploy an air bag in an automobile. This ability to meet stringent timing requirements often requires that processing resources be available upon demand in a predictable amount of time. Consequently, real-time computer systems typically utilize specialized and complex software to meet real time speed requirements. Many prior art real-time systems have been programmed in relatively “low-level” languages, such as assembly language, so that the programmer can maintain the strict control over the system operation which is necessary to meet the strict time requirements.
A significant consideration in the performance and effectiveness of a real-time computer system is the programming language methodology that is used to create and maintain the software elements that ultimately determine the functionality of the embedded computer system. With present day hardware fabrication costs, the software development costs often far outweigh the hardware costs. Consequently, it would be advantageous to reduce software development and maintenance costs. One problem with programs written in low-level languages is that they are often costly to develop and difficult to maintain.
A wide range of programming methods and languages have historically been used to develop the software elements or programs. The programming methods have ranged from the previously-discussed low level machine specific assembly languages to high level languages which are not specific to a particular hardware element or platform. Generally, high level languages are more efficient in both the design and maintenance of software programs so that their use is particularly advantageous. A broadly emerging type of programming methodology which promises to offer even more favorable efficiencies in program development and maintenance is object oriented programming software design. Object oriented programming software design is based on the concept of extracting particular characteristics from some item of interest along with a set of operations that may be performed on that information and grouping those pieces together to form an object. There are several benefits that may be realized by the implementation of a computer system in an object oriented programming environment. For example, compiler output including both generated program code and symbolic object references may be directly received, stored and integrated into an existing runtime system without further coordination with the already resident program and object references in the system. This capability is of significant value when large programs are created in pieces by large teams of programmers. Currently available object oriented programming languages include ADA 95, C, C++ and JAVA™ languages.
The JAVA programming language was created and propagated by Sun Micro Systems, Inc. to meet the need for an object oriented, platform independent and network enabled programming environment. The JAVA language has been quickly embraced by the computer software community and has been demonstrated to be efficient and robust for a wide variety of general purpose computing applications while generally providing improved development productivity. The successful performance of the JAVA programming language has resulted in a great interest in the use of the JAVA programming language for a wide variety of computing applications, including real time, embedded computing applications.
A program written in the JAVA language is compiled from the JAVA source code into as a series of platform independent commands called “bytecodes.” Generally, a JAVA host computer system utilizes a JAVA run time environment to interpret and execute the bytecodes. The JAVA run time environment is called a “JAVA virtual machine” (JVM) and it can either interpret the bytecodes directly or use a “just-in-time” compiler to convert the bytecodes to platform dependent codes which run directly on the host platform. The JVM allows a flexible run-time environment.
However, in real-time embedded processor applications, the JVM has some significant drawbacks including speed and difficulty in meeting the strict timing requirements normally found in such environments. Consequently, in such applications, another type of processor is often used in which the JAVA bytecodes generated by a JAVA compiler are executed directly on the platform. In this case, the JAVA bytecodes are the low level assembly language of the processor and the JAVA program could be said to be running on a “JAVA machine” rather than on a JVM. Such processors are called “direct execution” JAVA processors.
In the direct execution JAVA processor context, the term JAVA Virtual Machine refers to a logical address space for JAVA classes within which one or more threads can execute. Within such a logical address space, several JAVA applications can concurrently run. Each JAVA application may also create multiple class name spaces by creating one or more class loaders, but, in the absence of application-created class loaders, only one class name space is created by the default class loader in a JVM.
In accordance with normal JVM operation, the JVM assigns each application its own “runtime” instance of the class java.lang.Runtime. Therefore, each application has its own runtime system, which both isolates applications from each other and provides a security model. However, the java.lang.Runtime class does not necessarily encompass everything that could be separate for each separate application. If multiple applications each use some of the same classes, a single copy of the static data structures will be created. Without separate JVMs or another class loader, multiple copies of the same static data cannot be created.
Although there may be multiple applications running in a JVM, there are many circumstances when it would be desirable to have multiple JVMs running on a single processor. For example, in an avionics system, there are generally several subsystems which have differing priorities. The flight controller, or the autopilot, have the highest priority (called level 1 priority) whereas other systems, such as in-flight entertainment systems, have a much lower priority (called level 5 priority). The level 1 priority systems are critical and there
Gee John K.
Greve David A.
Hardin David S.
Mass Allen P.
Masters Michael H.
Courtenay III St. John
Eppele Kyle
Jensen Nathan O.
Nguyen Van H.
Rockwell Collins, Inc.
LandOfFree
Real time processor capable of concurrently running multiple... does not yet have a rating. At this time, there are no reviews or comments for this patent.
If you have personal experience with Real time processor capable of concurrently running multiple..., we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Real time processor capable of concurrently running multiple... will most certainly appreciate the feedback.
Profile ID: LFUS-PAI-O-2928549