Claims
- 1. A microprocessor architecture comprising:
a central processing unit, said central processing unit is constructed and arranged to execute instructions, said central processing unit further capable of responding to an interrupt request; a register read bus; a multiplexer; a register write bus connected to said multiplexer; at least one register, said register connected to said register read bus and to said multiplexer, said register constructed and arranged to deposit data onto said register read bus and to accept data from said multiplexer; a mirror stack memory, said mirror stack memory connected to said multiplexer, said mirror stack memory constructed and arranged to receive data from said multiplexer and to deposit data onto said multiplexer, said mirror memory stack is associated with said register; and a mirror stack pointer, said mirror stack pointer is connected to said mirror stack memory, said stack pointer being adjusted during read operations;
wherein, during reads from said memory stack, one or more values are read from a previously pointed to location in said memory stack.
- 2. A microprocessor architecture as in claim 1, wherein said architecture further comprising an interrupt control logic, said interrupt control logic having a port to a program counter control logic in order to directly drive an interrupt vector address into a program counter before the completion of the execution of a current instruction.
- 3. A microprocessor architecture as in claim 1, wherein said register write bus is isolated from a common bus in order to enable simultaneous updates in a single system that employs multiple mirror stack memories.
- 4. A method of handling an interrupt of a central processing unit, said method comprising the steps of:
(a) providing a central processing unit responsive to interrupts; (b) placing the contents of an program counter register onto an address bus, said contents of said program counter register being an address to a first instruction, said program counter register having a program counter M-stack associated with said program counter register; (c) fetching said first instruction from a memory; (d) capturing said first instruction in an instruction register; (e) decoding said first instruction, if said decoded first instruction requires a read that is needed as part of said first instruction's operation, then performing a read; (f) during said step (e), adjusting said program counter register in order to point to a next instruction; (g) capturing an address for said next instruction from said program counter register; (h) if a first result from the execution of said first instruction is to be stored in said memory, then storing said first result in said memory, otherwise, if said first result from the execution of said first instruction is to be stored in a critical register, then storing said first result in said critical register and writing said first result to an M-stack associated with said critical register; (i) determining if an interrupt, if received, will be serviced and executing a current instruction, said current instruction being an instruction predefined to be executed after said execution of said first instruction; (j) if said interrupt is to be serviced, then enabling said program counter register to be driven with a value from an interrupt vector table that contains an address of a first interrupt service routine instruction; (k) capturing said address of said first interrupt service routine instruction with said program counter M-stack and writing a current result from the execution of said current instruction, if said current result are to be written to a critical register, then said current result shall also be written to a mirror stack corresponding to said critical register except on the condition that if said current instruction is a branching instruction, then said current result shall be written to said program counter M-stack; (l) executing said first interrupt service routine instruction and adjusting at least one M-stack pointer in order to store the at least one pre-interrupt register values of said critical registers; (m) returning from said interrupt service routine; and (n) adjusting said at least one M-stack pointer to point to said at least one pre-interrupt register values, said at least one pre-interrupt register values being simultaneously driven at a corresponding register input;
wherein after said step (n) said interrupt service routine will have ended and a starting point of the next instruction to be executed before said interrupt may be executed.
- 5. A method of handling an interrupt of a central processing unit as in claim 4, wherein said adjusting step (n) occurs during an execute phase.
CROSS REFERENCE TO RELATED PATENT APPLICATION
[0001] This application is related to pending U.S. patent application Ser. No. [MTI-1540] filed on, entitled “MIRRORING PROCESSOR STACK” in the name of Manuel R. Muro, Jr., that is assigned to the same assignee as the present application and is incorporated herein by reference for all purposes.