Nova Patents
EP3779680A1

Permuting in a matrix-vector processor

Abstract

A circuit comprises an input register configured to receive an input vector of elements, a control register configured to receive a control vector of elements, wherein each element of the control vector corresponds to a respective element of the input vector, and wherein each element specifies a permutation of a corresponding element of the input vector, and a permute execution circuit configured to generate an output vector of elements corresponding to a permutation of the input vector. Generating each element of the output vector comprises accessing, at the input register, a particular element of the input vector, accessing, at the control register, a particular element of the control vector corresponding to the particular element of the input vector, and outputting the particular element of the input vector as an element at a particular position of the output vector that is selected based on the particular element of the control vector.

EP3779680A1, drawing sheet 1
Sheet 1 of 9

Term

11.4 yearsto projected expiry

Projected expiry 19 February 2038, counted from filing; an application has no term until it is granted.

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

16 claims: 9 independent, 7 dependent

  1. 1
    A circuit comprising:an input register configured to receive an input vector of input elements;a control register configured to receive a control vector of control elements, wherein each control element of the control vector corresponds to a respective input element of the input vector, and wherein each control element of the control vector specifies a permutation of a corresponding input element of the input vector, the permutation specifying a number of positions to rotate the corresponding input element of the input vector;and a permute execution circuit configured to generate an output vector of output elements corresponding to a permutation of the input vector, wherein generating each output element of the output vector comprises: accessing, at a particular position of the input register, a particular input element of the input vector;accessing, at the control register, a particular control element of the control vector corresponding to the particular input element of the input vector;selecting a particular position of the output vector based on i) the particular position of the particular input element in the input register and ii) a number of positions to rotate the particular element of the input vector specified by the particular control element of the control vector;and outputting the particular input element of the input vector as an output element at the particular position of the output vector.
  2. 4
    The circuit of one of claims 1 to 3, wherein the input vector is received as a staggered input such that each input element of the input vector is received at each cycle in an order beginning with a lowest-order bit position of the input vector.
  3. 8
    The circuit of one of claims 1 to 7, wherein the control vector is received from an off-chip processor that is separate from the circuit.
  4. 9
    The circuit of one of claims 1 to 8, wherein the permute execution circuit comprises a memory crossbar.
  5. 10
    The circuit of one of claims 1 to 8, wherein the permute execution circuit comprises multiple one-to-many multiplexors, and wherein an output of each one-to-many multiplexor of the permute execution circuit is controlled by a corresponding control element of the control vector.
  6. 11
    The circuit of one of claims 1 to 10, wherein the input vector of input elements corresponds to a row of an input matrix or a column of an input matrix.
  7. 12
    The circuit of one of claims 1 to 11, wherein the number of positions to rotate the particular element of the input vector specified by the particular control element of the control vector is a number of positions to rotate the particular element of the input vector in a particular direction.
  8. 13
    A circuit for permuting an input matrix, the circuit comprising:an input register configured to receive an input vector of input elements that corresponds to a vector included in the input matrix;a control register configured to receive a control vector of control elements, wherein each control element of the control vector corresponds to a respective input element of the input vector, and wherein each control element of the control vector specifies a permutation of a corresponding input element of the input vector, the permutation specifying a number of positions to rotate the corresponding input element of the input vector;and a permute execution circuit that is configured to generate an output vector of output elements corresponding to a permutation of the input vector, wherein generating each output element of the output vector comprises: accessing, at a particular position of the input register, a particular input element of the input vector;accessing, at the control register, a particular control element of the control vector corresponding to the particular input element of the input vector;selecting a particular position of the output vector based on i) the particular position of the particular input element in the input register and ii) a number of positions to rotate the particular element of the input vector specified by the particular control element of the control vector;and outputting the particular input element of the input vector as an output element at the particular position of the output vector.
  9. 15
    A circuit comprising:an input register configured to receive an input vector of input elements;a control register configured to receive a control vector of control elements, wherein each control element of the control vector corresponds to a respective input element of the input vector, and wherein each control element of the control vector is a pointer specifying a position of an output register to which the respective input element of the input vector is to be output;and a permute execution circuit configured to generate an output vector of output elements corresponding to a permutation of the input vector, wherein generating each output element of the output vector comprises: accessing, at a particular position of the input register, a particular input element of the input vector;accessing, at the control register, a particular control element of the control vector corresponding to the particular input element of the input vector, wherein the particular control element of the control vector is a particular pointer specifying a particular position of the output register to which the particular input element of the input vector is to be output;selecting a particular position of the output vector based at least on the particular control element of the control vector;and outputting the particular input element of the input vector as an output element at the particular position of the output vector.