Electrical computers and digital processing systems: support – Digital data processing system initialization or configuration
Reexamination Certificate
1999-11-22
2004-03-02
Butler, Dennis M. (Department: 2185)
Electrical computers and digital processing systems: support
Digital data processing system initialization or configuration
C713S001000, C713S002000, C713S400000, C710S200000
Reexamination Certificate
active
06701429
ABSTRACT:
BACKGROUND OF THE INVENTION
1. Technical Field of the Invention
The present invention relates in general to the computer systems field and, in particular, to a method for increasing the efficiency of a plurality of computer processors having shared memory in a telecommunication system.
2. Description of Related Art
The existing start-up procedures used to launch multiple processors simultaneously in a multiprocessing system are typically complicated and problematic. For example, during start-up of a conventional multiprocessing system, each processor initially reads the software code located in the first memory address accessed. In a multiprocessing system with distributed memory, a processor's software code is located in a physical memory location associated with that processor. In other words, each processor's code can reside in a different address space. Consequently, at start-up, each processor has no problem with accessing its own code.
However, in a multiprocessing system with shared memory, all of the processors' software code can share the same address space or a range of multiple address spaces located in a common physical memory. Consequently, an important design goal of existing multiprocessing systems has been to enable start-up of all processors so that each processor can initially access its correct software code. A problem for multiprocessing system designers is that this design goal has been difficult and costly to achieve.
Another problem with existing multiprocessing systems is that the distribution of interrupts between processors can be uneven, which reduces a system's efficiency. For example, using one method called static interrupt distribution, each processor handles a unique interrupt or set of interrupts. One approach is to hardwire different segments of an interrupt vector to specific processors for handling. Consequently, using this method, the overall distribution of interrupts always remains the same.
The static interrupt distribution method has been implemented in multiprocessing systems in a number of ways. For example, an existing approach is to use one processor to handle all of the interrupts in the system, while the other processors are used to execute just the non-interrupt software code. An advantage of this method is that new interrupts are always distributed to a known processor. Consequently, the system can be designed with less complexity, because there is no need to account for different processors handling different interrupts. Furthermore, only one interrupt controller is needed in such a system.
Nevertheless, there is a significant disadvantage of such a static interrupt distribution approach using one processor in a multiprocessing system. The statistical distribution of the interrupts can make this one processor very busy at certain times and not so busy at others. In that regard, a more level processing load is preferred. One solution to this problem is to divide the interrupts evenly between processors. For example, as illustrated by the diagram shown in
FIG. 1A
, one processor (P
0
) can be given the “highest” segment of the interrupt vector to handle, a second processor (P
1
) can be given the next “highest” segment of the interrupt vector to handle, and so on to the lowest segment. However, with this approach, the interrupts are not evenly distributed, because as illustrated by
FIG. 1A
, an interrupt can occur while its dedicated processor is not available, and there is no provision to execute that interrupt by another processor in the meantime.
An existing static interrupt distribution approach distributes the interrupts evenly in accordance with different interrupt priorities. As illustrated by the diagram shown in
FIG. 1B
, this interrupt priority distribution approach appears to produce a relatively even interrupt workload. However, as described above, a static interrupt distribution approach requires the development of very reliable distribution statistics, such as, for example, the amount of time it takes to handle individual interrupts and how often they are executed.
In any event, the existing static interrupt distribution approaches are relatively simple to implement, but their most significant disadvantage is that the designs are inflexible. For example, using an existing static interrupt distribution approach, if a processor's workload has changed over time for some reason (e.g., software evolution, etc.), then the interrupt hardware needs to be redesigned. However, each new design requires a study about the interrupt distribution statistics involved, which can be a time-consuming, inconvenient and complicated undertaking. Furthermore, the existing static interrupt distribution approaches introduce undesirable interrupt latencies into the systems involved. Such latency characteristics are very difficult to deal with, especially if the multiprocessing system is intended to run a realtime operating system. Consequently, as demonstrated above, a need exists for an improved method for distributing interrupts in a multiprocessing system.
A more flexible hardware interrupt distribution approach used for existing multiprocessing systems is called dynamic interrupt distribution. Using this dynamic approach, the interrupt distribution can be changed while the system is in operation. An obvious advantage of this approach is that there is no need to develop interrupt distribution statistics, because the hardware handles the interrupt distribution in realtime. Consequently, if the interrupt distribution statistics change overtime for some reason (e.g., new software development, etc.), there is no need to change the interrupt hardware or develop new distribution statistics in order to implement such a dynamic approach.
Theoretically, the use of a dynamic hardware interrupt distribution approach for a multiprocessing system is a viable alternative to the use of a static approach. Nevertheless, the existing dynamic hardware interrupt distribution approaches have significant disadvantages. For example, the hardware design for a dynamic interrupt distribution method is relatively complex, and the method itself is difficult to implement. The algorithm that controls the interrupt distribution has to be an extremely “smart” algorithm. In other words, the control logic for such an algorithm must be capable of determining which (if any) interrupts are currently being executed by each processor, and which interrupts have been queued by each processor for execution at a later time. Based on such information, an interrupt controller has to make relatively difficult decisions about where to send each new interrupt. With existing hardware interrupt distribution designs, the control units' integrated circuits require a very large number of gates and take up a large amount of silicon space as a result. Consequently, this design solution is relatively costly in terms of power consumption.
In any event, most computer systems function with a certain amount of interrupt dependency. In other words, certain interrupts must be processed in a specific order, at a specific time or specific number of times, or associated with specific memory that can be locked by a semaphore (or other hardware or software resources of any kind). This interrupt dependency complicates matters even more for static interrupt distribution approaches in which the distribution is not changed easily due to software development.
Still another problem with existing multiprocessing systems using shared resources (e.g., memory, Input/Output (I/O) areas, synchronization blocks, etc.) is that bus arbitration is used to distribute the shared resources to the different processors. As such, with existing bus arbitration methods, only one processor can use a bus at one time. However, the processors can still execute non-interrupt software code or interrupt code with different priorities. The higher priority interrupts are typically processed before the lower priority interrupts and the non-interrupt software code.
A significant problem arises with existi
Gustafsson Peter
Wendel Fredrik
Butler Dennis M.
Jenkens & Gilchrist P.C.
Patel Nitin C.
Telefonaktiebolaget LM Ericsson(Publ)
LandOfFree
System and method of start-up in efficient way for... does not yet have a rating. At this time, there are no reviews or comments for this patent.
If you have personal experience with System and method of start-up in efficient way for..., we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and System and method of start-up in efficient way for... will most certainly appreciate the feedback.
Profile ID: LFUS-PAI-O-3234414