Claims
- 1. A programmable digital signal processing device for implementing a Viterbi algorithm having a plurality of add-compare-select operations (ACS) operating on a plurality of Viterbi state metrics, the device comprising:
a first vector unit comprising a plurality of first registers; a second vector unit comprising a plurality of second registers and connected to the first vector unit via a connection; and a vector pointer unit connected to the first vector unit, the vector pointer unit storing and processing pointers for indirectly addressing the plurality of first registers, wherein the first vector unit and the second vector unit perform concurrent operations for executing a subset of the plurality of add-compare-select operations (ACS).
- 2. Apparatus according to claim 1, wherein the connection comprises a feedback connection from the second vector unit to the first vector unit for storing Viterbi state metrics computed in the second vector unit to a subset of the plurality of first registers in the first vector unit.
- 3. Apparatus according to claim 1, wherein the plurality of second registers comprises a plurality of vector accumulator registers.
- 4. Apparatus according to claim 1, wherein each of the vector pointer unit, the first vector unit, and the second vector unit comprises multiple arithmetic/logic units.
- 5. Apparatus according to claim 4, wherein at least one of the arithmetic/logic units of the vector pointer unit comprises a carry-wrap adder for generating a sequence of bit-wise rotated addresses.
- 6. Apparatus according to claim 1, further comprising a shift register for collecting a plurality of bit decisions corresponding to Viterbi state metric selection operations through bit insertion operations and a shift operation (vmshl).
- 7. A method of performing a first compute-and-move instruction comprising performing a first vector operation on source operands from a first vector unit and placing the results of the first vector operation into a second vector unit.
- 8. A method for operating a first vector unit and a second vector unit in tandem, the method comprising performing a first compute-and-move instruction by performing a first vector operation on source operands from the first vector unit and placing the results of the first vector operation into the second vector unit and
concurrently performing a second compute-and-move instruction in the second vector unit for computing a second vector operation on source operands from the second vector unit and placing the results of the second vector operation via a feedback connection into the first vector unit.
- 9. A method for operating a first vector unit and a second vector unit in tandem, the method comprising performing a first compute-and-move instruction by performing a first vector operation on source operands from the first vector unit and placing the results of the first vector operation into the second vector unit and
concurrently performing a second compute-and-move instruction in the second vector unit for computing a second vector operation on source operands from the second vector unit and placing the results of the second vector operation via a feedback connection into the first vector unit, wherein the first vector operation in the first vector unit is performed by the first compute-and-move instruction (vitadd) comprising the steps of
executing a permutation of Viterbi state metrics through an indirect vector read operation from a plurality of first registers of the first vector unit under control of a vector pointer; adding Viterbi branch metrics to Viterbi state metrics; and moving the results to a vector accumulator register in the second vector unit.
- 10. A method for operating a first vector unit and a second vector unit in tandem, the method comprising performing a first compute-and-move instruction by performing a first vector operation on source operands from the first vector unit and placing the results of the first vector operation into the second vector unit and
concurrently performing a second compute-and-move instruction in the second vector unit for computing a second vector operation on source operands from the second vector unit and placing the results of the second vector operation via a feedback connection into the first vector unit, wherein the second vector operation in the second vector unit is performed by the second compute-and-move instruction (vitsel-vitmax/vitmin) comprising the steps of
executing an element-wise selection (maximum/minimum) of Viterbi survivor metrics from vectors of incremented Viterbi state metrics in a plurality of vector accumulator registers of the second vector unit; obtaining bit decisions corresponding to the element-wise selection of Viterbi survivor metrics; and executing an inverse permutation of the Viterbi survivor metrics through an indirect vector write operation under control of a vector pointer, wherein the Viterbi survivor metrics are moved to a plurality of first registers of the first vector unit via a feedback connection.
- 11. The method according to claim 10, further comprising recording the bit decisions corresponding to the element-wise selection of Viterbi survivor metrics in a shift register for a subsequent Viterbi traceback operation (vmshl).
- 12. A method for implementing in a programmable digital signal processing device a Viterbi algorithm comprising a plurality of add-compare-select operations (ACS) operating on a plurality of Viterbi state metrics, the method comprising the step of:
performing in a first vector unit and a second vector unit concurrent operations for executing a subset of the plurality of add-compare-select operations (ACS).
- 13. A method for implementing in a programmable digital signal processing device a Viterbi algorithm comprising a plurality of add-compare-select operations (ACS) operating on a plurality of Viterbi state metrics, the method comprising the step of:
performing in a first vector unit and a second vector unit concurrent operations for executing a subset of the plurality of add-compare-select operations (ACS), wherein a first vector operation in the first vector unit is performed by a first compute-and-move instruction (vitadd) comprising executing a permutation of Viterbi state metrics through an indirect vector read operation from a plurality of first registers of the first vector unit under control of a vector pointer; adding Viterbi branch metrics to Viterbi state metrics; and moving the results to a vector accumulator register in the second vector unit.
- 14. A method for implementing in a programmable digital signal processing device a Viterbi algorithm comprising a plurality of add-compare-select operations (ACS) operating on a plurality of Viterbi state metrics, the method comprising the step of:
performing in a first vector unit and a second vector unit concurrent operations for executing a subset of the plurality of add-compare-select operations (ACS), wherein a second vector operation in the second vector unit is performed by a second compute-and-move instruction (vitsel-vitmax/vitmin) comprising the steps of
executing an element-wise selection (maximum/minimum) of Viterbi survivor metrics from vectors of incremented Viterbi state metrics in a plurality of vector accumulator registers of the second vector unit; obtaining bit decisions corresponding to the element-wise selection of Viterbi survivor metrics; and executing an inverse permutation of the Viterbi survivor metrics through an indirect vector write operation under control of a vector pointer, wherein the Viterbi survivor metrics are moved to a plurality of first registers of the first vector unit via a feedback connection.
- 15. The method according to claim 8, further comprising generating through carry-wrap addition from a bitwise-rotated pointer (p) and an offset (q) an updated bitwise-rotated pointer (S) by wrapping around a carry-output from a output-bit of an enhanced adder selectable by a first index (m) to the carry-input of the enhanced adder's least significant bit and by suppressing carry propagation in a position selectable by a second index (α).
- 16. The method according to claim 12, further comprising generating through carry-wrap addition from a bitwise-rotated pointer (p) and an offset (q) an updated bitwise-rotated pointer (S) by wrapping around a carry-output from a output-bit of an enhanced adder selectable by a first index (m) to the carry-input of the enhanced adder's least significant bit and by suppressing carry propagation in a position selectable by a second index (α).
- 17. A computer program comprising program code means for performing a method of performing a first compute-and-move instruction when said program is run on a programmable digital signal processor, the method comprising performing a first vector operation on source operands from a first vector unit and placing the results of the first vector operation into a second vector unit.
- 18. A computer program comprising program code means for performing a method of operating a first vector unit and a second vector unit in tandem when said program is run on a programmable digital signal processor, the method comprising performing a first compute-and-move instruction by performing a first vector operation on source operands from the first vector unit and placing the results of the first vector operation into the second vector unit and
concurrently performing a second compute-and-move instruction in the second vector unit for computing a second vector operation on source operands from the second vector unit and placing the results of the second vector operation via a feedback connection into the first vector unit.
- 19. A computer program comprising program code means for performing a method of implementing a Viterbi algorithm comprising a plurality of add-compare-select operations (ACS) operating on a plurality of Viterbi state metrics when said program is run on a programmable digital signal processor, the method comprising performing in a first vector unit and a second vector unit concurrent operations for executing a subset of the plurality of add-compare-select operations (ACS).
- 20. A computer program product stored on a computer usable medium, comprising computer readable program means for causing a programmable digital signal processor to perform a method of performing a first compute-and-move instruction, the method comprising performing a first vector operation on source operands from a first vector unit and placing the results of the first vector operation into a second vector unit.
- 21. A computer program product stored on a computer usable medium, comprising computer readable program means for causing a programmable digital signal processor to perform a method of operating a first vector unit and a second vector unit in tandem, the method comprising performing a first compute-and-move instruction by performing a first vector operation on source operands from the first vector unit and placing the results of the first vector operation into the second vector unit and
concurrently performing a second compute-and-move instruction in the second vector unit for computing a second vector operation on source operands from the second vector unit and placing the results of the second vector operation via a feedback connection into the first vector unit.
- 22. A computer program product stored on a computer usable medium, comprising computer readable program means for causing a programmable digital signal processor to perform a method of implementing a Viterbi algorithm comprising a plurality of add-compare-select operations (ACS) operating on a plurality of Viterbi state metrics, the method comprising performing in a first vector unit and a second vector unit concurrent operations for executing a subset of the plurality of add-compare-select operations (ACS).
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] The present application is a continuation in part of U.S. patent application Ser. No. 10/197,733, entitled “Digital Signal Processor with SIMD Organization and Flexible Data Manipulation” filed Jul. 18, 2002.
[0002] The present application is related to U.S. patent application Ser. No. 09/514,497, entitled “Vector Register File with Arbitrary Vector Addressing” filed Feb. 29, 2000 which is incorporated herein by reference.
[0003] The present application is related to U.S. patent application Ser. No. 60/391,778, entitled “Digital Signal Processor with Cascaded SIMD Organization” filed Jun. 26, 2002 which is incorporated herein by reference.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60391778 |
Jun 2002 |
US |
Continuation in Parts (1)
|
Number |
Date |
Country |
Parent |
10197733 |
Jul 2002 |
US |
Child |
10243567 |
Sep 2002 |
US |