EP0924601A2

Parallel data processing in a single processor

Abstract

A system allows parallel data processing within a single processor. In order to allow for parallel processing of data, an arithmetic logic unit (26) or other operation executing entity within the processing system such as a shifter (29) is partitioned. Within each partition (41,51), operations are performed on a portion of one or more operands. When the operation is to be performed on full word length operands, there is no parallel processing. Thus data is allowed to freely propagate across boundaries between the partitions (41,51). When performing the operation in parallel using a plurality of operands of less than one full word in length, data is prevented from being propagated across at least one boundary between the partitions (41,51). The principles of the present invention may also be utilized to implement a multiplier (301-316,320) which performs parallel multiplication of partial word multiplicands.

EP0924601A2, drawing sheet 1
Sheet 1 of 29

Term

Term ended

Projected expiry passed 5 July 2014, 12.2 years ago.

  1. Priority
  2. Filed
  3. Published
  4. Projected expiry
  5. Today

10 claims: 2 independent, 8 dependent

  1. 1
    A functional unit within a processing system, the functional unit comprising:first partition circuitry (41,71,111) which performs an arithmetic operation on a first set of bits from a plurality of operands to produce first results, the first partition circuitry (41,71,11) performing the arithmetic operation on low order bits of the plurality of operands;second partition circuitry (51,81,121), having an identical logic structure as the first partition circuitry (41,71, 111), which performs the arithmetic operation on a second set of bits from the plurality of operands to produce second results, the second partition circuitry (51,81,121) performing the arithmetic operation on high order bits of the plurality of operands;first selection means (50,80,120), coupled between the first partition circuitry (41,71,111) and the second partition circuitry (41,71,111) for allowing data to propagate from the first partition circuitry (41,71,111) to the second partition circuitry (51,81,121) and for preventing data from propagating from the first partition circuitry (41,71,111) to the second partition circuitry (51,81,121);and a preshifter (27) for preshifting a subset of the first set of bits and for preshifting a subset of the second set of bits;wherein when the data is allowed to propagate from the first partition circuitry (41,71,111) to the second partition circuitry (51,81,121), preshifts by the preshifter (27) are allowed to propagate from the subset of the first set of bits to the subset of the second set of bits, and the arithmetic operation is performed on full word length operands to produce results which are of full word length, the results including a concatenation of the second results and the first results;wherein when the data is prevented from propagating from the first partition circuitry (41,71,111) to the second partition circuitry (51,81,121), preshifts by the preshifter (27) are not allowed to propagate from the subset of the first set of bits to the subset of the second set of bits, and the arithmetic operation is performed in parallel on operands with bit lengths which are smaller than a bit length of the full word length operands.
  2. 6
    A method for providing for parallel data processing within a single processor, the parallel data processing including performing addition and subtraction, the method comprising the steps of:(a) performing within each of a plurality of partitions (41,51,71,81,111,121) implemented in hardware, a first operation on a set of bits from at least one operand, including performing within each of the plurality of partition (41,51,71,81,111,121) a preshift operation on a subset of the set of bits;(b) when performing the first operation on at least one full word length operand, allowing data to affect calculations across boundaries between the plurality of partitions (41,51,71,81,111,121), including allowing preshifts to propagate between the partitions;and (c) when performing the first operation in parallel using a plurality of less than one full word length operands, performing the following substep: (c.1) preventing data from affecting calculations across at least one boundary between the plurality of partitions (41,51,71,81,111,121), including preventing preshifts from propagating across the at least one boundary between the plurality of partitions (41,51,71, 81,111,121).