next up previous contents
Next: Processor Memory Unit Up: RSIM_EVENT and the Out-of-order Previous: Exception handling

Principal data structures

 

Source files: src/Processor/active.cc, src/Processor/freelist.cc, src/Processor/tagcvt.cc, src/Processor/stallq.cc, src/Processor/branchqelt.cc, src/Processor/branchresolve.cc, src/Processor/instheap.c

Header files: incl/Processor/active.h, incl/Processor/freelist.h, incl/Processor/tagcvt.h, incl/Processor/stallq.h, incl/Processor/circq.h, incl/Processor/branchq.h, incl/Processor/heap.h, incl/Processor/instheap.h, incl/Processor/hash.h, incl/Processor/memq.h, incl/Processor/FastNews.h

The majority of the data structures used in the out-of-order execution engine are associated with the processor's state structure.

The first type of data structures are concerned with instruction fetching, decoding, and graduation. These structures include the register freelist class, the activelist class, the tag converted (tag_cvt), the register mapping tables ( fpmapper, intmapper, and activemaptable), the busy-bit arrays (fpregbusy and intregbusy), and the processor stall queue (stallq).

The second class of data structures include those associated with branch prediction. These include the branchq structure, which holds the shadow mappers; the BranchDepQ, which holds branches waiting for shadow mappers (in our system, only one branch can be in this queue at a time); and the actual branch prediction tables (BranchPred and PrevPred) and the return address stack fields (ReturnAddressStack and rasptr).

The third class of data structures deal with instruction issue, execution, and completion. Several time-based heaps are included in this class: FreeingUnits, Running, DoneHeap, and MemDoneHeap. Several MiniStallQ structures are also used in this class. These include the UnitQ structures, which include instructions waiting for functional units; and the dist_stallq (distributed register stall queue) structures, which include instructions stalling for register dependences.

The final important class of data structures used in the out-of-order execution engine deals with simulator memory allocation and are provided to speed up memory allocation for common data structures which have an upper bound on their number of instantiations. These Allocator data structures include instances for instance structures, bqes for elements of the branch queue, mappers for shadow mappers, stallqs for elements of the processor stall queue, ministallqs for elements of the functional unit and register stall queues, actives for active list elements, and tagcvts for elements of the tag converter. Structures are dynamically allocated from and returned to these structures through the inline functions provided in incl/Processor/FastNews.h.


next up previous contents
Next: Processor Memory Unit Up: RSIM_EVENT and the Out-of-order Previous: Exception handling

Vijay Sadananda Pai
Thu Aug 7 14:18:56 CDT 1997