a block diagram 50 of the concurrent dispatch unit according to the presentinvention is shown in fig1 . instruction data is received from a source , such as program memory 52 which comprises a 72 bit word consisting of 64 bits of instruction data and 8 bits of parity data as illustrated in fig2 discussed below . the instructions provided by the source 52 are received and stored by an instruction cache 54 having an even and odd section 56 and 58 therein . transfer of the instruction data from the source 52 to the cache 54 is controlled by a cache control element 60 . each instruction stored in the exemplary cache 54 comprises a 64 bit message which comprises a single 64 bit quadword instruction 93 or two 32 bit longword instructions 91 and 92 . the instructions 92 stored in the oddsection 58 of the instruction cache 54 are received directly by the floating point processor 62 . the instructions 91 stored in the even portion 56 of the instruction cache 54 are received by a multiplexer 64 , which selectively provides either an instruction from the even 56 or odd 58 portion of the instruction cache 54 to the integer processor 66 and fp processor 62 . when an instruction is received from even section 56 by the integer processor 66 , the instruction in odd section 58 is stored in a pre - fetch register 70 . since the subsequent instruction will be received by the integer processor 66 from the pre - fetch register 70 , the program counter register 74 will be incremented by 0 rather than by 8 , thereby inhibiting the transfer of new instructions to the instruction cache 54 . a more detailed view of the integer processor 66 is also shown in fig1 wherein the integer processor includes an instruction register 102 which receives a 32 bit instruction from the output of the multiplexer 64 or theoutput of the pre - fetch register 70 , when enabled by the signal on lead 68 . the instruction stored in the instruction register 102 is received by the execution unit 100 , the decode and control logic unit 65 , and other logic elements 112 , 120 . the address of this instruction is stored in the decodeprogram counter 122 . the address stored in the fetch program counter 104 results from a manipulation of the instruction in register 102 . the manipulated is performed by a logic process dependant on the instruction itself , for instance , as previously discussed and illustrated by the tables 1 - 4 below . according to the present invention , 64 bit instructions are loaded into the instruction cache 54 , corresponding to eight bytes of data , comprising eight bits per byte . therefore , the pc fetch register 74 maintains the least significant bits , 00 , 01 , 02 at a logical value of 0 , such that the instructions are received at address intervals of eight . in general , the instructions proceed through the integer processor 66 successively through the instruction register 102 , the fetch program counter ( fetch pc ) 104 , the program counter adjust logic 120 , the decode program counter 122 , the execution program counter 124 , the last instruction program counter 126 , and the trap program counter 128 . except for the third least significant bit , 02 of decode program counter 122 , program counters 122 , 124 , 126 and 128 provide information for use elsewhere in the integer processor 66 , not shown , to analyze the instruction status of present and previous instructions for other uses such as recovery from a trap or stall condition , as are known in the art . if an even longword instruction is received from the instruction cache 54 on leads 103 through the multiplexer 64 , the state of bit 31 ( see fig2 of the instruction stored in register 102 indicates that the instruction is a longword or longword instruction . the state of bit 02 is maintained from the instruction register 102 to the fetch program counter 104 . the program counter adjust logic 120 selectively modifies only bit 02 of decode program counter ( dec pc ) 122 in response to a taken branch signal 121 provided by the decode and control logic 65 which in turn responded tothe instruction from instruction register 102 . the taken branch signal on lead 121 serves to indicate whether the next instruction is a sequentiallyprovided instruction or is the result of a taken branch , and controls the multiplexer 119 . if a branch is taken , the condition of bit 02 of dec pc 122 is maintained through the multiplexer 119 . except when a branch instruction is taken , if neither the instruction register bit 31 nor the program counter bit 02 is set , indicating that the next instruction to be read is the adjacent odd instruction from the instruction cache 54 , the bit 02 is set in the decode program counter 122 , indicating that the instruction decoded is arriving from the odd section 58 of the instructioncache 54 through the pre - fetch register 70 , while the multiplexer 64 is disabled according to the signal on lead 68 . the multiplexer 106 selects the numeric value of 0 which is added by adder 108 to the current value ofthe program counter 104 and in turn restored unchanged to the fetch programcounter 104 by selection of the multiplexer 110 . the state of the branch signal on lead 121 is determined by the decode a control unit 65 which uses a portion of the signal from the instruction register 102 , as well asthe condition code signal cc provided by the execution unit 100 on lead 101 . when a branch is made directly to an odd longword , the instruction is received from the odd section 58 of the instruction cache 54 on lead 107 through the multiplexer 64 , when enabled by a signal on lead 68 and selected by the signal on lead 105 . as discussed above , the signal on lead105 is derived from bit 02 of the decode program counter 122 which is maintained by operation of the multiplexer 119 . the address provided to the multiplexer 119 from the fetch program counter 104 may result from a direct branch resulting from the addition of the instruction value in the fetch program counter 104 added to the instruction provided by the instruction register 102 by the adder 112 . the resulting address is selected by the multiplexer 114 under control of the decode and control logic 65 , which also passes the signal at the output of adder 112 to the input of the fetch program counter 104 via multiplexer 110 , wherein it is stored and forwarded on subsequent execution clock cycles . according to conditions determined by the decode and control logic 65 and the executionunit 100 , an indirect branch may be taken , wherein the indirect branch address is provided from internal register ra ( not shown ) of the executionunit 100 , and passed to the fetch program counter 104 through correspondingly enabled multiplexers 114 and 110 . the instruction data word 90 is illustrated in fig2 which may selectivelycomprise two longword instructions 91 and 92 of 32 bits each , or a single 64 bit quadword 93 . an 8 bit error detecting parity word 94 may be or has been appended to the 64 bits of instruction , which for simplicity , will bedeleted from subsequent discussion of the instruction data . the longword 91or 92 each comprises 4 bytes of data 95 , 96 , 97 and 98 , wherein the most significant byte is byte 0 . a typical byte 99 comprises 8 bits wherein bit7 is the most significant bit . the format of this instruction corresponds to the motorola 68000 data format , of which the corresponding data sheets are incorporated by reference . the instruction lengths supported by the concurrent dispatch unit of the cpu according to the present invention comprise a 64 bit quadword aligned or 32 bit longword aligned instruction . instructions are generically classified as either integer or floating point . integer instruction types comprise integer register - to - register , branch and memory reference instructions . floating point instruction types comprise floating point register - to - register instructions . the longword aligned instruction only comprises integer instruction types . the quadword aligned instruction format comprises an integer instruction in the even ( most significant ) longword half of the quadword instruction and a floating point instructionin the odd ( least significant ) longword half of the quadword instruction . for the longword form , the fetched instruction is sent to the integer processor . for the quadword form , the even ( most significant ) longword instruction is sent to the integer processor 66 . the odd longword instruction is sent only to the floating point processor 62 . in addition to simultaneously transferring instructions to both the integerprocessor 66 and floating point processor 62 from a single instruction wordin the instruction cache 54 , the present invention also transfers select bits from the even sections 56 of the instruction cache to the floating point processor to provide control of the memory references to / from the floating point processor 62 . the integer processor 66 makes quadword references to the instruction cache 54 . external pre - fetch buffer 70 is used to hold the odd longword in the event two integer instructions fall on an aligned quadword boundary . as an instruction is being fetched from the instruction cache , the integer processor specifies the next fetch address via signals on lead 72 , which comprises a 29 bit pc src data bus for addressing the instruction cache 54 . a multiplexer 64 connected to the integer processor 66 is used exclusively for selectively fetching an instruction from either the even or odd section of the instruction cache 54 . the odd section 58 may be selected only during the fetch of a taken branch target . the pre - fetch ir select signal on lead 68 is used to select the instruction from the cache 54 or the pre - fetch register 70 . the pre - fetch register 70 is selected when the prior instruction dispatch was a quadword aligned 32 - bit instruction and the current fetch is not due to a taken branch target . the pre - fetch select signal also signals the memory management unit ( mmu ), including thecache control 60 , that the integer processor is not referencing the instruction cache in the current cycle and therefore inhibits the generation of a cache miss or exception relative to the current fetch . thepre - fetch register 70 and the external program counter are normally loaded provided that the integer processor 66 or floating point processor 62 is not signaling a fetch stall . the pre - fetch register select signal on lead 68 and the multiplex 64 control are normally supplied by the integer processor 66 . however , during an instruction cache miss event , the memory management unit ( mmu ), including cache control 60 , is responsible for supplying these controls with the returning miss instruction provided thatthe memory management unit pcsrc busy signal is asserted . detailed state tables 1 , 2 , 3 and 4 below , illustrate the integer processorhardware requirement . table 1__________________________________________________________________________sequential instruction fetch requirements : lw next next next * fetchir alignment decode -- pc fetch -- pc fetch -- pc decode -- pc ir request__________________________________________________________________________32 - bit int even i i + 8 fet -- pc + 0 dec -- pc + 1 pre -- ir disable odd i i + 4 fet -- pc + 8 fet -- pc icache -- e enable32 - bit int / fp even i i + 8 fet -- pc + 8 fet -- pc icache -- e enable__________________________________________________________________________note : next fetch -- pc ( 2 ) will equal ` 0 ` for all above cases table 2__________________________________________________________________________call instruction fetch requirements : lw next return next next * fetchir alignment decode -- pc fetch -- pc fetch -- pc address decode -- pc ir request__________________________________________________________________________32 - bit call even32 - bit shadow odd i i + 8 i + 8 dec -- pc + 1 pre -- ir disabletaken target even odd target32 - bit call odd32 - bit shadow even i i + 4 i + 8 fet -- pc icache -- e enabletaken target even odd target64 - bit call even32 - bit shadow even i i + 8 i + 12 fet -- pc icache -- e enabletaken target even odd target__________________________________________________________________________ * assumes fetch -- pc is ` not ` a branch target table 3__________________________________________________________________________branch instruction fetch requirements : lw next next next next * fetchir alignment decode -- pc fetch -- pc fetch -- pc fetch -- pc ( 2 ) decode -- pc ir request__________________________________________________________________________32 - bit branch even32 - bit shadow odd i i + 8 dec -- pc + 4 pre -- ir disablenot taken target even fet -- pc + 0 0taken target even 0 odd i i + 8 target 132 - bit branch odd32 - bit shadow even i i + 4 fet -- pc icache -- e enablenot taken target odd fet -- pc + 2 0taken target even 0 odd i i + 4 target 132 - bit branch odd64 - bit shadow even i i + 4 fet -- pc icache -- e enablenot taken target even fet -- pc + 2 0taken target even 0 odd i i + 4 target 164 - bit branch even32 - bit shadow even i i + 8 fet -- pc icache -- e enablenot taken target odd fet -- pc + 2 0taken target even 0 odd i i + 8 target 164 - bit branch even64 - bit shadow even i i + 8 fet -- pc icache -- e enablenot taken target even fet -- pc + 2 0taken target even 0 odd i i + 8 target 1__________________________________________________________________________ * assumes fetch -- pc is ` not ` a branch target table 4______________________________________branch target fetch requirements : lw next fetchfetch pc alignment ir request______________________________________branch target even icache -- e enable odd icache -- o enablesequential ( see above tables ) ______________________________________the below state equations define prefetch control functionality . function next -- ip -- pc ( 2 ) : boolean ; beginif dec . taken -- branchthen next -- ip -- pc ( 2 ) := pcsrc ( 2 ) else next -- ip -- pc ( 2 ) := false ; end ; function next -- if . taken -- branch : boolean ; beginif dec . taken -- branchthen next -- if . taken -- branch := trueelse next -- if . taken -- branch := false ; end ; function ip -- preir -- sel : boolean ; beginif (-( dec . f ) & amp ; -( dec -- pc ( 2 )) & amp ; -( if . taken -- branch ) then ip -- preir -- sei := trueelse ip -- preir -- sei := false ; end ; procedure dec -- pc . assign ; beginif ip -- preir -- seithen next -- dec -- pc := dec -- pc + 1else next -- dec -- pc := fetch -- pc ; end ; procedure state -- transition : beginif - fetch -- stall & amp ; - exec -- stallthenbeginip -- pc ( 2 ) := next -- ip -- pc ( 2 ); dec -- pc := next -- dec -- pc ; if . taken -- branch := next -- if . taken -- branch : elsebeginip -- pc ( 2 ) := ip -- pc ( 2 ); dec -- pc := dec -- pc ; if . taken -- branch := if . taken -- branch ; end ; procedure assign -- prefetch -- controls ; beginif mmu -- pcsrc -- busythen begin pc ( 2 ) := mmu -- pc ( 2 ); preir -- sei := mmu -- preir -- sei ; end ; else begin pc ( 2 ) := ip -- pc ( 2 ); preir -- sei := ip -- preir -- sei ; end ; end ; ______________________________________ the pre - fetch instruction register select control signals 68 is provided bythe integer processor 66 network for selecting the pre - fetch register 70 asthe source of the next instruction to be loaded into the integer processor instruction register 102 . the program counter bit 2 provides control from the integer processor 66 for selecting the odd longword of the instructioncache as the next instruction to be loaded into the integer processor &# 39 ; s instruction register . the pre - fetch instruction register control is illustrated by the state equations as expressed in pseudocode given in table 4 , above . the integer processor 66 and the floating point processor 62 each include adecoder / controller section 65 and 63 , respectively , wherein the received instruction word is decoded . in one embodiment of the present invention , the floating point processor 62also stores instruction signals provided by the multiplexer 64 with regard to fig3 the floating point processor 62 includes an instruction register 76 , which receives the signals inst 31 : 00 from the odd portion 58of the instruction cache 54 , wherein the floating point instructions are then forwarded to the arithmetic registers 78 and the multiplier registers80 , according to the design of the floating point processor . the floating point instruction register 76 also receives the inst int 31 : 20 , 15 , 13 : 11 instruction signals from the even portion of the instruction cache 54 through the multiplexer 64 , wherein the storage signals are received by the input output ( i / 0 ) control pipeline registers 82 . the i / 0 control signals are then used for controlling of data transfers between memory andthe floating point unit registers . the floating point instruction register 76 also receives signals from a stall logic unit 75 . other modifications and substitutions made by one of ordinary skill in the art according to the teachings of the present invention are considered to be within the scope of the present invention which is not to be limited except by the claims which follow . result status , astat 9 : 0 and mstat 9 : 0 , from the floating point arithmetic and logic unit ( alu ) ( not shown ) and the floating point multiplier ( mul ) ( not shown ) respectively , is returned to the floating point control chip ( fpc ) included in the floating point processor 62 where the result status is used to update bits in a processor status word ( psw ) stored in fp psw register 83 , and is used to update a status control register fp statctl 85 .