Abstract:
A data processing apparatus having a pipeline computer architecture with an input pipeline latch is disclosed. The data processing apparatus includes an ALU that executes a plurality of processing instructions. At least some of the instructions have an immediate data format including a field for intermediate data and a field for specifying a destination for an output. The ALU uses two operands for performing at least some of the instructions having the immediate data format. The ALU conditionally accepts either the contents of the input pipeline latch or the ALU output of the previous instruction as a second operand to an immediate instruction depending on the destination specified in the destination field of the previous instruction.

Description:
BACKGROUND 
     1. Field of the Invention 
     The present invention is directed to a pipelined processor. Specifically, the present invention is directed to a pipelined processor having sequential processing instructions wherein at least some of the processing instructions conditionally use an operand. 
     2. Prior Art 
     A typical processor architecture may include a series of processing instructions where an instruction having an immediate data format can use one or more operands. Because immediate instructions can not specify all the operands they need, they use implied operands that are typically the result of the prior instruction. The typical implied operands are an &#34;accumulator,&#34; a register usually located in the arithmetic unit of a processor, or a &#34;top of stack,&#34; the last memory location used in a last in first out data memory mechanisms. In addition to an accumulator or top of stack a pipeline architecture has several pipeline latches or bus states that may contain useful data that could also be used as an implied operand. 
     Restricting an immediate instruction&#39;s second operand to be the outputs of the previous instruction or data supplied by a single pipeline latch limits the functionality of the immediate instruction in the processor. It is therefore an object of the present invention to provide a pipelined processor enhanced functionality through an expanded availability of operands that can be received by an immediate instruction. 
     SUMMARY 
     One object of an embodiment of the present invention is to provide a pipelined processor enhanced functionality by expanding the availability of second input operands that an immediate instruction can receive. 
     It is another object of an embodiment of the present invention to provide a pipelined processor where the immediate instruction may utilize either the output of a previous instruction or data stored in a pipeline latch as an operand based upon the execution of the prior instruction. 
     Briefly, an embodiment of the present invention is directed to a data processing apparatus having a pipelined computer architecture. The pipelined computer architecture performs a plurality of sequential processing instructions. Each processing instruction provides an output that is written to a destination in a register or a memory defined by a destination address. An immediate instruction uses the output generated by the prior instruction as a second operand. An immediate instruction may use based upon the destination operand selected by the previous instruction, either an input operand of that previous instruction or the output of the previous instruction as a second operand. 
    
    
     BRIEF DESCRIPTION OF THE FIGURES 
     FIG. 1 shows a block diagram of a system within which an embodiment of the present invention operates. 
     FIG. 2 shows a block diagram describing the interaction between the controller and the coprocessor of a preferred embodiment. 
     FIG. 3a shows a two-operand immediate instruction format in an embodiment having thirty two bit instructions. 
     FIG. 3b shows a three-operand immediate instruction format in an embodiment having thirty two bit instructions. 
     FIG. 4 shows a specific application of an embodiment for performing a clipping operation. 
    
    
     DETAILED DESCRIPTION 
     FIG. 1 shows a block diagram of a system within which an embodiment of the present invention operates. Such a system may be within a hand held digital cordless phone or some other radio frequency device for receiving and transmitting signals having real-time processing requirements and requirements for low power, light weight and small volume. In a preferred embodiment, a controller 40, a coprocessor 50, and a baseband modem 80 are incorporated in a single application specific integrated circuit (ASIC) 30. The controller 40 may be a general purpose processor such as the 6502 processor. The coprocessor 50 is preferably a specialized processor for performing repetitive operations at high speed. The baseband modem 80 provides spread spectrum modulation. 
     In transmitting, the microphone/speaker 10 provides audio signals to a codec 20. The codec 20 digitally samples the audio signals and provides digital data to the ASIC 30 for processing according to algorithms stored in the ASIC 30. The controller 40 commands the coprocessor 50 to process the sampled data provided by the codec 20 using digital signal processing operations. These signal processing operations may include speech data compression using adaptive differential pulse code modulation such as those set forth in the CCITT G721 standard. Once processed, the resultant data is provided to the controller for supplying encoded data to the baseband modem 80, which provides a modulation signal to the R/F unit 60 to be converted into a signal in the 900 megahertz frequency band and then amplified and transmitted over the antenna 70. 
     In receiving, the R/F unit 60 amplifies and converts to the baseband frequency the signals received from the antenna 70 to provide to the baseband modem 80 a signal which it demodulates into digital data which is passed to the controller 40. The received data is provided to the coprocessor 50 where it is decoded. The decoded digital data is then passed to the codec 20 through the controller 40. The codec 20 converts the decoded digital data into an amplified analog signal that is provided to microphone/speaker 10. 
     FIG. 2 shows a block diagram describing how the controller 140 controls the execution of the coprocessor 150. The start address from the start address register 160 is moved to the program counter 180 to indicate the location of the first instruction to be performed in a procedure commanded by the controller 140. After each instruction is performed, the program counter 180 increments. The stop address from the stop address register 170 is provided to halt logic 145 so that processing halts when the program counter 180 reaches stop address 170. 
     In a preferred embodiment, the ROM 155 provides instructions and immediate data to the decoder 185 and the ALU 165 over the Immediate Data bus 195. This embodiment may implement a three stage pipelined processor. In such a three stage processor, at any particular cycle a first instruction is being executed in the ALU 165 using data from the Shared Data Memory 175 or the immediate data supplied by the ROM 155 over the Immediate Data bus 195, while a second instruction, which is expected to be executed immediately following the execution of the first instruction, is being decoded in the instruction decoder 185 and a third instruction, which is expected to be executed immediately following the execution of the second instruction, is being fetched from ROM 155 according to the program counter 180. 
     In one embodiment, as shown in FIGS. 3a and 3b the coprocessor may utilize thirty two bit instructions and can have at least two types of instruction formats, a two-operand immediate instruction format and a three-operand instruction format. FIG. 3a shows the immediate instruction format 200 which includes sixteen bits for an immediate data field 210, a six bit destination field for specifying the address of the destination of the output 220, a seven bit field for specifying an ALU function in ALU operation field 230 and three bits for specifying an opcode in opcode field 240. The opcode in opcode field 240 preferably identifies the type of instruction format, among other things. 
     The three-operand instruction format 250 shown in FIG. 3b differs from the immediate instruction format 200 in that two input operands are specified in the fields 260 and 265. A shift field 255 preferably specifies the number of bits to shift the &#34;A&#34; input operand. 
     With the immediate instruction format 200, on the other hand, the sixteen bits in the immediate data field 210 specify only one operand. Some immediate data format instructions require only one input operand. Other immediate data instructions may require a second input operand. For executing immediate data format instructions requiring a second operand, the ALU uses an implied second operand based upon the nature of the instruction. For example, an immediate data instruction for addition requires an implied second operand. The opcode shown in field 240 of the immediate data instruction format 200 shown in FIG. 3a along with the specified instruction in the ALU operation field 230 are used by the ALU logic for determining whether an implied second operand is needed in performing the instruction. 
     In one embodiment, the implied second input operand in the immediate instruction format is either the result of performing a previous instruction or the data stored in a pipelined latch. In particular, the instruction sequencer 190 in performing an immediate instruction has the available for use of the state the ALU output bus immediately following the execution of the previous instruction such as that which may be stored in a destination latch (not shown). Depending on the destination specified in the destination field 220 or 270 of the prior instruction, the instruction decoder means such as an instruction sequencer or decoder in performing the immediate instruction either loads the output bus state of the previous instruction into the ALU B-input pipeline latch or preserves the contents of the pipelined input latch. In effect, when the instruction sequencer does not load the output bus state of the previous instruction into the ALU B-input pipeline latch and preserves the contents of the ALU B-input pipeline latch, the instruction sequencer may use the data already stored in the pipeline latch as the second operand again in the current or a later instruction. 
     There is also one destination specified by the destination field that specifies that the ALU result is not to be written to any destination (e.g. &#34;Noplace&#34;). When an instruction specifies that destination, the instruction sequencer preferably uses the state of the ALU output bus as the implied second operand for an immediate instruction. 
     In an embodiment, for some immediate data format instructions requiring first and second operands, the ALU passes either the first operand or the second operand to the destination specified in the current instruction. In particular, the ALU passes to the destination of the current instruction either the immediate data or the implied second operand, the contents of the ALU B-input latch for example, based upon the output bus state following the execution of the previous instruction. The ALU may also select which value to load to the destination based upon ALU status bits set as a result of the execution of the previous instruction such as an ALU a sign out flag, a carry in flag, or an ALU zero out flag. 
     FIG. 4 illustrates a specific application of an embodiment for performing a clipping operation. However, it is understood that this embodiment can implement other procedures employing level testing operations on the amplitudes of digitally sampled signals. FIG. 4 shows this particular clipping operation for an eight bit word. However, it is understood that this clipping operation may also be performed for words of other sizes. In the clipping operation of FIG. 4, input values are clipped to be between 1111000b and 00001000b (-8 and 8 base ten). If the input value exceeds 00001000b, the ALU forces the output to be 00001000b. If the input value is between 11111000b and 00001000b, the ALU returns the input value as the output value. If the input value is less than 11111000b, the ALU forces the output value to be 11111000b. 
     Steps 400 represent an instruction having 3-operand format 250 while steps 405, 410, 415 and 420 represent instructions having the immediate instruction format 200 as shown in FIG. 3b and 3a, respectively, for performing the clipping operation. The values shown in quotations in each of the steps represent the binary immediate data of the instruction corresponding to the step such as &#34;00001000b&#34; in step 405. Columns 450 and 460 show values of first and second general purpose registers, Registers 1 and 2, before and after each instruction performed by the ALU. Column 470 shows the state of an output bus, reflecting the output of the ALU after performing the previous instruction and before performing the next instruction. Alternatively, the output of the ALU can be loaded to a destination latch. Column 480 labeled &#34;B-in Latch&#34; shows the contents of the ALU B-input latch which is a pipeline latch. Thus, the values shown in the four boxes disposed between each step represent the contents of the respective registers, output bus state and contents of the ALU B-input latch, where &#34;X&#34; represents an indeterminate value. The shaded boxes 490, 492, 494 and 496 show the actual calculation being performed. 
     It should be noted that the output bus state is not always loaded into the ALU the B-input latch. Whether the output bus state of a previous instruction is loaded into the ALU B-input latch depends on the destination specified in the destination field of the previous instruction and the SRC B field of the current instruction when it is a three-operand instruction. 
     The instructions shown in FIG. 4 designate &#34;Noplace,&#34; &#34;SAVEB,&#34; &#34;Reg1&#34; (Register 1) and &#34;Reg2&#34; (Register 2) as destinations (memory locations) for the results from performing the instructions corresponding to the destination fields shown in FIGS. 3a and 3b. The destinations &#34;SAVEB&#34; and &#34;Reg2&#34; as used in instruction steps 405, 410, 415 and 420 correspond to the destination field 220 of the immediate instruction format shown in FIG. 3a. Where an instruction has the destination &#34;SAVEB&#34;, the contents of the B-in latch are preserved to be used by the following instruction. 
     At step 400, the contents of Register 1, which is the input value for this clipping operation &#34;01000000b&#34;, is both loaded into B-in latch at 404 and becomes the output bus state at 403. However, it is understood that &#34;01000000b&#34; can loaded into the B-in latch by other methods. Step 400 merely illustrates initialization. 
     At step 405, the ALU performs the instruction &#34;SubR --  Imed `00001000b` to SAVEB&#34; to subtract the immediate data, &#34;00001000b&#34;, from the output state &#34;01000000b&#34; shown at 403. Since the instruction at step 400 does not specify &#34;SAVEB&#34; as the destination, the output bus state resulting from the previous instruction at 403 (&#34;01000000b&#34;) is also loaded to the B-in latch at 404. Performing the instruction at step 405 changes the state of the output bus to reflect the value shown at 408 to &#34;00111000b&#34;. As &#34;01000000b&#34;, the input value, exceeds &#34;00001000b&#34;, the positive limit of the clipping operation, a positive value results from performing this instruction. 
     At step 410 since the instruction at step 405 specifies &#34;SAVEB&#34; as the destination (&#34;01000000b&#34;) the previous B-in latch value is preserved at 409. Step 410, the instruction &#34;MovGT --  Imed `00001000b` to Reg2&#34; loads either the immediate data (&#34;00001000b&#34;) to Reg2 or the value stored in the B-in latch, depending on the sign of the state of the output bus at 408. Since the sign of the state of the output bus at 408 is positive, the ALU when performing this instruction loads the immediate data (which is the maximum &#34;clipped&#34; output value) into Reg2 at 412 and changes the state of the output bus at 413 to be the immediate data. 
     At step 415, the ALU performs instruction &#34;SubR --  Imed `11111000b` to SAVEB&#34; to subtract the immediate data, which is the negative limit of the clipping operation (&#34;11111000b&#34;). Since the instruction at step 410 does not specify &#34;SAVEB&#34; as the destination, the output bus state resulting from the previous instruction at 413 (&#34;00001000b&#34;) is also loaded to the B-in latch at 414. The output bus state is changed to reflect the result of this instruction (&#34;00010000b&#34;) as shown at 418. 
     At step 420, since the instruction at step 455 specifies &#34;SAVEB&#34; as the destination, (&#34;00001000b&#34;) the previous B-in latch value is preserved at 419. Step 420, the instruction &#34;MovLT --  Imed `11111000b` to Reg2&#34; loads either the immediate data &#34;11111000b&#34; or the contents of the B-in latch depending on the sign of the output bus state at 418 resulting from the previous instruction. This instruction clips the output of the instruction at step 410 to the negative limit of the clipping operation if the input initialized at step 400 is less than the negative limit. Since the sign of the output bus state at 418 (&#34;00010000b&#34;) is positive, this instruction does not change the state of the output bus according to the immediate data &#34;11111000b&#34;. Hence, the output of the instruction at step 410 is not clipped to the negative limit as the input data at step 400 is greater than that lower clipping limit. The contents of Reg2 are preserved from 417 to 422 and the output bus state is changed to be the contents of Reg2. 
     As illustrated above, the pipelined processor includes an instruction sequencer that performs immediate data format instructions that may require a second operand. The instruction sequencer may select either the contents of the ALU B-input pipeline latch or the output bus state resulting from the previous instruction as the second operand of the current instruction depending on the destination specified in the destination field of the previous instruction. Additionally, in executing some of the immediate data format instructions having implied second operands, the ALU loads to the destination and the output bus either the immediate data of the current instruction or the contents of the pipelined latch depending on the ALU status of the previous instruction. Accordingly, the instruction sequencer is afforded greater flexibility in the selection of a second operand for an immediate data format instruction. 
     While the description above refers to particular embodiments of the present invention, it will be understood that many modifications may be made without departing from the spirit thereof. The accompanying claims are intended to cover such modifications as would fall within the true scope and spirit of the present invention. The presently disclosed embodiments are therefore to be considered in all respects as illustrative and not restrictive, the scope of the invention being indicated by the appended claims, rather than the foregoing description, and all changes which come within the meaning and range of equivalency of the claims are therefore intended to be embraced therein.