< previous page page_487 next page >

Page 487
0487-01.gif
Figure 7.44
Simple register file organization.
0487-02.gif
Figure 7.45
Centralized reorder buffer method.
for programs oriented toward the processing of large scientific code, but is generally unacceptable for other high-speed applications with significant interrupt frequency.
d87111c01013bcda00bb8640fdff6754.gif
There is an important caveat here: A load instruction that accesses a page not currently in memory can have disastrous consequences if several instructions that followed it are already in execution. When control returns to the process after the missing page is loaded, the load can execute together with instructions that depended upon it, but other instructions that were previously executed should not be reexecuted. The control for all this can be formidable. The only acceptable alternative would be to require that all pages used by a particular process be resident in memory before execution begins. In programming environments where this is feasible and practicalsuch as in large scientific applicationsthis may be a solution.
2. Create an actual or a virtual putaway that preserves the ordered use of the register set or at least allows the reconstruction of such an ordered register set.
It is the second approach that we look at in this section, following the work of Smith [265].
In order to provide a sequential model of program execution, some mechanism must be provided that properly manages the register file state. The key to any successful scheme [260, 149] is the efficient management of the register set and its state. If instructions execute in order, as in most pipelined machines discussed in the earlier part of this chapter, then a simple register file can be used (Figure 7.44). Instructions that can complete early must be held pending the completion of previously issued but incomplete instructions. This sacrifices concurrency and performance.
Suppose we allow instructions to execute out of order and provide a reorder buffer (Figure 7.45). The results arrive at the reorder buffer out of program sequence, but they are put away to the sequential register file in program order, thus preserving the register file state. In order to avoid conflicts at the reorder buffer, we can distribute the buffer across the various

 
< previous page page_487 next page >