Electrical computers and digital processing systems: processing – Instruction fetching – Of multiple instructions simultaneously
Reexamination Certificate
2000-08-31
2002-03-26
Treat, William M. (Department: 2183)
Electrical computers and digital processing systems: processing
Instruction fetching
Of multiple instructions simultaneously
C712S024000, C712S207000, C710S027000
Reexamination Certificate
active
06363475
ABSTRACT:
BACKGROUND OF THE INVENTION
1. Field of the Invention
The present invention relates to the field of microprocessor architecture. More specifically, the present invention relates to high performance processors such as digital signal processors that use very long instruction words (VLIW) or employ superscalar architectures.
2. Description of the Related Art
Two types of parallelism are commonly employed in microprocessor systems. In program level parallelism, more than one program is executed at the same time, normally on multiple processors. This form of parallelism is common, for example, in servers employing four to eight processors, all of which are connected to a single bus. Instruction level parallelism is another form of parallelism, in which a single instruction stream is executed on a single processor, but the instructions are dispatched to multiple functional units in the same cycle. This latter type of parallelism is used by Very Long Instruction Word (VLIW) and superscalar processors.
Program level parallelism includes task oriented parallelism and multithreading. In the simplest form of program level parallelism, different tasks are executed on different processors, so that the server handles more users, but no one user's program can finish faster than it would if it had executed on a single processor system. In multithreading, a single program forks execution onto more than one processor, so that the program runs faster than it would on just one processor. Both forms of program level parallelism increase the net amount of useful work done in a given time interval. Task oriented parallelism allows the processor to perform parallel processing even when the individual programs are not specifically developed for parallel execution. Unfortunately, current VLIW machines are not well suited to any of these forms of program level parallelism.
VLIW architectures are rapidly gaining popularity and acceptance. The concept of VLIW is to fetch a very long instruction word, and to dispatch subinstructions contained in this very long word to a set of parallel functional units. For example, the very long instruction word might contain 256 bits, so that eight functional units each concurrently receive one 32-bit sub-instruction. In prior art systems, if all the sub-instruction words are not needed, the dispatcher can take multiple cycles to dispatch the instructions of the 256-bit instruction word to the functional units. One difference between VLIW machines and superscalar machines is that in VLIW machines the compiler schedules the instructions for parallel execution, so that the dispatch unit of a VLIW machine is very simple. In superscalar machines, the dispatch unit handles the parallel instruction scheduling using hardware algorithms, so that the dispatch unit of a superscalar machine is usually more complex.
One significant problem with VLIW machines is that, while they are capable of very high peak instruction per second counts, their performances may be much lower when executing actual programs. For example, consider the execution of a hypothetical VLIW processor having sixteen functional units. If the functional units are grouped into four sets of four cooperating functional units, with each group of functional units having primary access to a specific register file, then the system has four processing groups or has four sub-processors. These sub-processors all receive their instructions from the same instruction stream and follow the same control flow. That is, a branch taken in the program affects all four of the sub-processors in the system In many processing situations, the separate sub-processors may need to take different branches. However, there is only one instruction stream, so the various sub-processors executing various data sets must all execute in lock-step. One way this is handled is to make extensive use of conditionally executed instructions. Using conditional execution, there can be a single execution flow and only the sub-processors that need to execute instructions in a particular path do so, whereas the sub-processors that do not need to execute instructions sit idle. For example, assume four data streams are being processed in parallel on this hypothetical VLIW machine, and further assume that the code involves an IF-THEN-ELSE construct. At the machine level, a condition must be checked, and then a branch must be taken to either the THEN or the ELSE portions of the code. Since there are four data paths, it is very likely that among the four sub-processors, both the THEN and the ELSE program paths must be traversed. In the prior art, the processor executes both paths using conditionally executed instructions. In this way, each sub-processor performs useful operations on one path while effectively inserting “no operation” (NOP) instructions on the other. Since NOPs represent wasted cycles, performance is adversely affected.
Other problems arise when the various sub-processors work together on the same data. For example, if two data streams are to be processed on the same processor and the data involves complex numbers each having a real and an imaginary part, it would be advantageous for two processing groups to work together to deal with the real and imaginary parts of the complex data and to quickly compute the cross terms. This type of processing is quite common in communication systems processing and whenever a Fast Fourier Transform (FFT) is involved. In a hypothetical processor of sixteen functional units, eight functional units are available for each of two complex data streams. If all of the units are busy all the time, the peak number of instructions per cycle is achieved. In practice, however, it is very difficult to keep all functional units busy, and thus much lower efficiencies are achieved.
There are still other problems that create delays and inefficiencies. For example, if a branch is taken, multiple cycles need to be inserted while the pipelines empty and the new instruction flow makes its way through the pipeline. Other delays occur since the compiler must structure the code to avoid pipeline conflicts due to resource and data dependencies. These issues limit the amount of instruction-level parallelism that can be exploited in a program. That is, the local instruction level structure of the program very rarely allows a full set of instructions to be mapped onto the complete set of functional units in a given cycle.
Another problem with current VLIW architectures is the need to respond to interrupts. When interrupts occur, they can cause new programs to be fetched that will overwrite program words stored in the on-board cache, while creating their own sequence of cache misses. Cache misses are very expensive in VLIW machines. In the hypothetical processor having 16 functional units, the cache line fill involves sixteen slower external memory accesses per instruction, instead of a single on-chip cache-hit fetch cycle.
In short, while VLIW processors can theoretically achieve very high peak processing speeds, it is very difficult in practice to achieve these peak speeds on actual programs. This difficulty is compounded by inefficient branching, by conditionally executed instructions, and by difficulties arising from the need to perform multitasking and to respond efficiently to interrupts.
SUMMARY OF THE INVENTION
One aspect of the present invention is an enhanced VLIW architecture capable of alleviating the aforementioned shortcomings in the prior art. Another aspect of the present invention is a VLIW processor capable of executing multiple programs concurrently, allowing one program to execute in a cycle steal mode to make use of inefficiencies in another program. Yet another aspect of the present invention is a system to allow interrupts that can be processed with minimal cost in terms of clock cycles. The present invention further allows programs to fork execution down a plurality of branch paths in an efficient manner so that few cycles are wasted. The present invention provides a functional unit, a control unit, a dispatch uni
LandOfFree
Apparatus and method for program level parallelism in a VLIW... does not yet have a rating. At this time, there are no reviews or comments for this patent.
If you have personal experience with Apparatus and method for program level parallelism in a VLIW..., we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Apparatus and method for program level parallelism in a VLIW... will most certainly appreciate the feedback.
Profile ID: LFUS-PAI-O-2876389