1. An apparatus for use in a microprocessor that executes traces, a trace comprising the instructions contained in one or a plurality of basic blocks encountered along a specific control flow path through a program, wherein said apparatus is comprised of an analysis of said trace prior to the execution of any instructions within said trace, the apparatus further consisting of: a step to divide said trace into a plurality of commit groups, wherein each commit group comprises one or a plurality of consecutive basic blocks in program order along said control flow path, and a step to identify and mark a specific subset of instructions within each commit group, this subset comprising only the instructions that perform the final write in the original program order to each unique architectural register or each unique memory location, such that a specific commit group can be committed to the architecturally visible state of the microprocessor only when commit groups preceding this said commit group in program order, if any, have been committed to the architecturally visible state of the microprocessor, and when the marked instructions in the said specific commit group have executed without errors or exceptions, where the commitment of any commit group consists of writing the results generated by only the said marked instructions in that commit group to the architecturally visible state of the microprocessor, but if a commit group cannot be committed, any of the results within this said commit group cannot be used to update the architecturally visible state, independent of previously committed commit groups within said trace, the said architecturally visible state comprising architectural registers, rename table registers, condition registers, control registers, memory locations or any combination thereof, and where the instructions within the said trace may be scheduled across a plurality of commit groups, by either static or dynamic means using any method of instruction scheduling known to those skilled in the art, and wherein said apparatus comprises one or a plurality of commit buffers, each containing a plurality of storage slots for temporarily holding results generated by said marked instructions within each commit group of said trace, wherein said commit buffers prevent stored results associated with a given commit group from updating the architecturally visible state until all other results associated with commit groups before the given group in the original program order have successfully updated said architecturally visible state, and if any of the said marked instructions within said group encountered errors, the said apparatus discards all results generated by instructions within said group and future groups, independent of previously committed commit groups within said trace, and wherein one or a plurality of facilities exist for directly writing the results generated by a directly committed subset of the instructions within a trace directly to the architectural state in lieu of writing said results to slots within one or a plurality of said commit buffers, wherein the said directly committed subset of instructions is comprised of instructions from the commit group following the last successfully committed group, and wherein one or a plurality of facilities are provided to restore the architectural state to the state existing as of the last successfully committed group in the event that one or a plurality of instructions in the said directly committed subset of instructions generates an error or otherwise violates assumptions made in generating the trace.