Claims
- 1. A multiple execution unit processor, the processor comprising:
a memory unit storing a plurality of instruction stages; a buffer storage unit for storing the instruction stage; a dispatch unit for directing each instruction stage applied thereto to a preselected execution unit; a termination condition register, the termination condition register having a value loaded therein prior to initiation of the software pipeline procedure, the value of the termination condition register being decremented each time at least one execute packet is applied to decode/execution units, the termination condition value being tested prior to initiation of the software pipeline procedure; and a program memory control unit for retrieving a instruction stage from the memory unit, the program memory unit having a first prolog state wherein an execution packet from the memory unit is applied to the dispatch unit and to the buffer storage unit, the execution packet applied to the buffer storage unit being stored therein, wherein in the first state the retrieved execution packet and any corresponding instruction stage execution packet stored in the buffer storage unit are applied to the dispatch unit simultaneously, the program control memory unit having a second kernel state wherein the execution packets stored in the buffer storage unit are simultaneously applied to the dispatch buffer unit, the program control memory unit having a third epilog state wherein after the earliest stored execution packet in the buffer storage unit is eliminated after application of the corresponding execution packet of all stored instruction stages to the dispatch crossbar unit, the program memory control unit responsive to a preselected instruction for initiating a software pipeline loop operation without testing the value in the termination condition register.
- 2. The processor as recited in claim 1 wherein the program memory control unit can operate in a fourth over-lap state, the fourth state permitting the execution of an epilog of a first software pipeline program and a prolog of a second software pipeline program to overlap.
- 3. The processor as recited in claim 1 wherein the program memory controller can operate in a fifth early-exit state, the fifth state permitting an early exit from the prolog state in response to a preselected condition.
- 4. The processor as recited in claim 4 further comprising an second instruction, the second instruction indicating when the transition from the first to the second state is to occur, the second instruction further delaying the program counter a predetermined number of clock cycles following the end of the second state.
- 5. An instruction for inclusion in a software pipeline loop program, the instruction initiating a first prolog state of the processor implementing the software pipeline procedure, the initiating the first state including storing of a termination condition value in a termination condition register, the instruction disabling a test of a value stored in the termination condition register.
- 6. The instruction as recited in claim 5 wherein the termination condition register indicates the number of times each instruction stage is to be executed.
- 7. An instruction for inclusion in a software pipeline loop program, the instruction resulting in a transition from a SP_PROLOG state to an SP_KERNAL state, the instruction including a parameter delaying the initiation of the program counter for a predetermined number of clock cycles after identification of the termination condition.
- 8. The instruction as recited in claim 7, the instruction being positioned in the program in the last execute of the last instruction stage.
- 10. A method of reducing the number of NOP instructions associated with software pipelined loop program, the method comprising at least one procedure selected from the list of procedure consisting of:
initiating the software loop program with a first instruction disabling from testing a value in a termination condition register, the value in the termination condition register identifying the number of times that each instruction stage is to be performed; and transitioning from the SP_PROLOG state to the SP_KERNAL state using a second instruction, the second instruction including a parameter delaying the initiation of the fetching of instructions by a program following the software pipeline procedure by a preselected number of clock cycles following the end of the SP_KERNAL state.
- 11. In a software pipeline loop procedure program being executed on a processor, an SPLOOPD instruction, the instruction comprising:
a test portion, the test portion testing a current value against a predetermined value; a delay parameter portion, the delay parameter portion resulting in the processor delay implementation of the test portion for a preselected number of clock cycles; and a termination condition parameter, the termination condition parameter being the predetermined value, the termination condition including the delay parameter.
- 12. The instruction as recited in claim 11 wherein the preselected number of clock cycles is determined by the delay in the hardware pipeline of the processor.
- 13. The instruction as recited in claim 11 wherein the SPLOOPD instructions eliminates NOP instructions otherwise required as a result of the hardware pipeline of the processor.
- 14. The instruction as recited in claim 11 wherein the SPLOOPD instruction is positioned in the final execution packet of the first instruction stage.
- 15. In a software pipeline loop procedure program being executed on a processor, an SPKERNEL instruction, the instruction comprising:
a parameter portion, the parameter indicating the clock cycles before beginning fetching instruction packets for a program following the software pipeline loop program; a test portion for determining whether the parameter is present; and; a implementation portion, the implementation portion causing the fetching of instructions for the following program when the parameter is present.
- 16. The instruction as recited in claim 15 wherein the delay in fetching instructions for the following program is the result of the availability of appropriate execution units.
- 17. The method for delaying the fetching of instruction packets of a following program following a software pipeline loop program, the method comprising:
inserting kernel instruction in the last execution packet of the last instruction stage, the kernel instruction identifying the delay parameter; and when the delay parameter is present, fetching instruction packets for the following program.
- 18. The method compensating for hardware pipeline delays in executing a software pipeline loop procedure, the method comprising:
inserting a SPLOOPD instruction to initiate a prolog procedure, the SPLOOP instruction including a delay parameter, the SPLOOPD instruction including a test for portion for testing a condition; and delaying execution of the test portion by the delay parameter.
Parent Case Info
[0001] RELATED APPLICATION
[0002] This application claims priority from provisional patent application No. 60/342,706 entitled APPARATUS AND METHOD FOR A SOFTWARE PIPELINE LOOP PROCEDURE IN A DIGITAL SIGNAL PROCESSOR, invented by Eric J. Stotzer, Steve D. Krueger, and Timothy D. Anderson, filed on Dec. 20, 2001, and assigned to the assignee of the present Application: and provisional patent application No. 60/342,728 entitled APPARATUS AND METHOD FOR IMPROVED EXECUTION OF A SOFTWARE PIPELINE LOOP PROCEDURE IN A DIGITAL SIGNAL PROCESSOR, invented by Timothy D. Anderson, Michael D. Asal, and Eric J. Stotzer, filed on Dec. 20, 2001, and assigned to the assignee of the present Application:
[0003] U.S. patent application 09/855,140 (Attorney Docket TI-25737) entitled LOOP CACHE MEMORY AND CACHE CONTROLLER FOR PIPELINED MICROPROCESSORS, invented by Richard H. Scales, filed on May 14, 2001, and assigned to the assignee of the present Application: U.S. patent application (Attorney Docket TI-33895), entitled APPARATUS AND METHOD FOR A SOFTWARE PIPELINE LOOP PROCEDURE IN A DIGITAL SIGNAL PROCESSOR, invented by Eric J. Stotzer, Steve D. Krueger, and Timothy D. Anderson, filed on even date herewith, and assigned to the assignee of the present Application: U.S. patent application (Attorney Docket TI-34336), entitled APPARATUS AND METHOD FOR PROCESSING AN INTERRUPT IN A SOFTWARE PIPELINE LOOP PROCEDURE IN A DIGITAL SIGNAL PROCESSOR, invented by Eric J. Stotzer, Steve D. Krueger, Timothy D. Anderson, and Michael D. Asal filed on filed on even data herewith, and assigned to the assignee of the present Application: U.S. patent (Attorney Docket TI-34337), entitled APPARATUS Asal, filed on filed on even data herewith, and assigned to the assignee of the present Application; and U.S. patent application (Attorney Docket TI-34565), entitled APPARATUS AND METHOD FOR RESOLVING AN INSTRUCTION CONFLICT IN A SOFTWARE PIPELINE NESTED LOOP PROCEDURE IN A DIGITAL SIGNAL PROCESSOR, invented by Michael D. Asal and Eric J. Stotzer, filed on filed on even date herewith, and assigned to assignee of the present invention; U.S. patent application (Attorney Docket TI-34335) entitled APPARATUS AND METHOD FOR EXITING FROM A SOFTWARE PIPELINE LOOP PROCEDURE IN A DIGITAL SIGNAL PROCESSOR, invented by Elana D Granston, Eric J. Stotzer Steve D. Krueger, and Timothy D. Anderson, filed on even date herewith and assigned to the assignee of the present application are related applications.
Provisional Applications (2)
|
Number |
Date |
Country |
|
60342706 |
Dec 2001 |
US |
|
60342728 |
Dec 2001 |
US |