Method and apparatus for implementing a single cycle operation in a data processing system
First Claim
1. A method for performing an add-compare-select butterfly operation for implementing a Viterbi decoder in a processor having an XY memory and extension arithmetic logic unit (ALU) associated therewith, comprising:
- disposing old path metrics in said XY memory;
providing a single operand add-compare-select (ACS) instruction within the instruction set of said processor, said instruction having at least one short immediate (shimm) data field;
providing said old path metrics as inputs to said extension ALU;
controlling at least a portion of the operation of said extension ALU using said at least one shimm field; and
providing at least one addressing mode for said XY memory that allows new path metrics to be written back to XY memory subsequent to execution of said ACS instruction.
2 Assignments
0 Petitions
Accused Products
Abstract
An improved method and apparatus for performing single-cycle operations (such as Viterbi decode) in digital processors is disclosed. In one aspect, the invention comprises methods for storing (“packing”) old and new metric data in memory that cooperate with a single operand instruction adapted to perform single cycle calculations such as the Viterbi butterfly. Accordingly, such calculations can be computed effectively in software in a single cycle. In another aspect, an improved memory addressing mode is used to write back two new output results at the completion of instruction execution. The improved packing of state metrics in memory, single operand instruction, and addressing mode can advantageously be integrated into any processor (e.g., DSP, RISC-DSP, or configurable processor) with appropriate memory. The user of such a processor may accordingly write software using the single operand instruction to perform Viterbi decode with the efficiency comparable to a dedicated hardware implementation.
45 Citations
60 Claims
-
1. A method for performing an add-compare-select butterfly operation for implementing a Viterbi decoder in a processor having an XY memory and extension arithmetic logic unit (ALU) associated therewith, comprising:
-
disposing old path metrics in said XY memory;
providing a single operand add-compare-select (ACS) instruction within the instruction set of said processor, said instruction having at least one short immediate (shimm) data field;
providing said old path metrics as inputs to said extension ALU;
controlling at least a portion of the operation of said extension ALU using said at least one shimm field; and
providing at least one addressing mode for said XY memory that allows new path metrics to be written back to XY memory subsequent to execution of said ACS instruction.
-
-
2. A method for performing an operation in a processor having a memory associated therewith, said memory being functionally partitionable into at least two components, said processor having an arithmetic logic unit (ALU) associated therewith, comprising:
-
disposing first metrics associated with said operation in said memory;
providing a single operand instruction within said processor'"'"'s instruction set;
providing said first metrics to said ALU;
controlling at least a portion of the operation of said ALU using at least one data field of said instruction; and
providing at least one addressing mode for said memory that allows at least second metrics of said operation to be written back to said memory subsequent to execution of said instruction. - View Dependent Claims (3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A data processor, comprising:
-
a multi-stage instruction pipeline;
an instruction set architecture having a plurality of instructions adapted to run on said processor in said pipeline, at least one of said plurality of instructions comprising a single operand instruction;
a plurality of extension registers;
an arithmetic logic unit (ALU) operatively coupled to at least a portion of said plurality of extension registers; and
wherein said processor further comprises at least one addressing mode adapted for addressing an associated storage device, said at least one mode being further adapted to write back at least one metric to said storage device subsequent to execution of said single operand instruction. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18, 19, 20)
-
-
21. An arithmetic logic unit adapted for use with an extended data processor architecture, comprising:
-
a plurality of multiplexers;
a plurality of arithmetic operation units, each of said arithmetic operation units receiving a single operand as one input, and the output of a corresponding one of said plurality of multiplexers as a second input. - View Dependent Claims (22, 23, 24, 25, 26)
-
-
27. A method of generating a design for an extended digital processor, said processor being optimized for performance of at least one function, comprising:
-
defining at least one single operand instruction in a computer language;
generating a computer program utilizing said at least one single operand instruction, said program being adapted to perform said at least one function;
simulating the operation of said computer program;
defining at least one hardware configuration adapted for implementing said at least one instruction to form at least one hardware description language (HDL) definition; and
generating the design of said extended processor based at least in part on said at least one HDL definition. - View Dependent Claims (28, 29, 30, 31, 32, 33, 34, 35, 36)
-
-
37. Apparatus for performing at least one arithmetic operation in a data processor, comprising:
-
a plurality of multiplexers each having a plurality of inputs and at least one output;
a plurality of arithmetic units, each of said arithmetic units receiving a single operand from at least one single-operand instruction as one input thereto, and said at least one output of a corresponding one of said plurality of multiplexers as a second input;
wherein each of said plurality of arithmetic units are controlled at least in part by data present in said at least one single operand instruction. - View Dependent Claims (38, 39, 40, 41, 42, 43, 44)
-
-
45. Data processor arithmetic logic unit apparatus, comprising:
-
at least one operand bus adapted to carry at least one operand thereon;
a plurality of constant busses each adapted to carry at least one value;
at least one control bus adapted to carry at least one control signal thereon;
a plurality of selection units, each of said units having a plurality of inputs and at least one output, at least one of said plurality of inputs comprising one of said constant busses, each of said selection units being adapted to multiplex between said plurality of inputs, the control of said multiplex function being related at least in part to said control signal present on said control bus;
a plurality of arithmetic units, each of said arithmetic units having as inputs (i) at least a portion of said at least one operand bus, and (ii) said at least one output of at least one of said selection units, the control of said arithmetic units being related at least in part to a signal present on said control bus;
at least one compare unit, said at least one compare unit having as an input the output of at least one of said arithmetic units, said at least one compare unit further having an output; and
at least one result multiplexer, said at least one multiplexer having the same inputs as the respective one of said at least one compare unit, said at least one result multiplexer being controlled by said output of said respective one of said at least one compare unit. - View Dependent Claims (46, 47, 48, 49, 50)
-
-
51. A method of processing metrics, comprising:
-
storing a first portion of input metrics in a first portion of a storage device, said first portion of said storage device having a data width of A bits;
storing a second portion of said input metrics in a second portion of said storage device, said second portion of said storage device having a data width of B bits; and
using a single pointer to read said first and second portions of said input metrics from said first and second portions of said storage device. - View Dependent Claims (52, 53, 54, 55, 56, 57)
-
-
58. Apparatus for performing at least one arithmetic operation in a data processor, comprising:
-
a plurality of means for multiplexing, each of said means having a plurality of inputs and at least one output;
a plurality of arithmetic means, each of said arithmetic means receiving a single operand from at least one single-operand instruction means as one input thereto, and said at least one output of a corresponding one of said plurality of means for multiplexing as a second input;
wherein each of said plurality of arithmetic means are controlled at least in part by data present in said at least one single operand instruction means.
-
-
59. Data processing means, comprising:
-
a multi-stage instruction pipeline means;
an instruction set architecture having a plurality of instructions adapted to run on said processor in said pipeline, at least one of said plurality of instructions comprising a single operand instruction means;
a plurality of means for storing data bits;
an arithmetic logic unit means operatively coupled to at least a portion of said plurality of means for storing data bits; and
wherein said processor means further comprises at least one addressing mode adapted for addressing an associated means for storing data, said at least one mode being further adapted to write back at least one metric to said means for storing data subsequent to execution of said single operand instruction means.
-
-
60. A method of processing metrics, comprising the steps of:
-
storing a first portion of input metrics in a first portion of a storage device for subsequent use as an input, said first portion of said storage device having a data width of A bits;
storing a second portion of said input metrics in a second portion of said storage device for subsequent use as an input, said second portion of said storage device having a data width of B bits; and
using a single pointer to read multiple input metrics packed into said first or second portions of said input metrics from said first or second portions of said storage device.
-
Specification