Nova Patents
EP0875854A2

Reconfigurable image processing pipeline

Abstract

The present invention relates to an image processor (242) comprising a control register block (1470), a decoding block (1468), a data object processor (1462), and flow control logic. The control register block (1470) stores all the relevant information about the image processing operation. The decoding block (1468) decodes the information into configuration signals, which configure an input data object interface (1460). The input data object interface (1460) accepts and stores data objects from outside, and distributes these data objects to the data object processor (1462). For some image processing operations, the input data object interface (1460) may also generate addresses for data objects, so that the source of these data objects can provide the correct data objects. The data object processor (1462) performs arithmetic operations on the data objects received. The flow control logic controls the flow of data objects within the data object processing logic (1462). More particularly, the data object processor (1462) can comprise a number of identical data object sub-processors, each of which processes part of an incoming data object.

EP0875854A2, drawing sheet 1
Sheet 1 of 276

Term

Term ended

Projected expiry passed 29 April 2018, 8.4 years ago.

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

173 claims: 29 independent, 144 dependent

  1. 1
    An apparatus for performing image processing operations on data objects, said apparatus including:data source means for providing a stream of said data objects;a plurality of operand source means for providing streams of operand objects, or providing operand objects in response to an address presented;instruction means for selecting an image processing operation, and enabling or disabling a plurality of options in said image processing operation;a configuration register for storing said image processing operation and options;a register file for storing information necessary for performing said image processing operation;decoding means connected to said configuration register for decoding said image processing operation and options;a control signal register connected to said decoding means for storing the output of said decoding means;input interface means, connected to said control signal register, said register file, said data source means and said plurality of said operand source means, for: (a) accepting, storing and rearranging said data objects from said data source means, and said operand objects from said operand source means, in accordance with the output of said control signal register, (b) generating addresses for said operand objects, in accordance with the output of said control signals register and said register file, and (c) updating said information in said register file to reflect a current status of the image processing operation;processing means, connected to said input interface means, said register file, and said control signal register, for performing arithmetic operations on the output of said input interface means in accordance with the output of said control signals register and said register file to produce processed data objects;and data destination means connected to said processing means for receiving said processed data objects.
  2. 6
    An apparatus for performing compositing between two streams of pixels and a stream of attenuation values, said apparatus including:data source means for providing a first one of said streams of pixels;first operand source means for providing a second one of said streams of pixels;second operand source means for providing said stream of attenuation values;instruction means for enabling or disabling a plurality of options in compositing operations;a configuration register for storing a compositing operation and said options of said instruction means;register file for storing information necessary for performing compositing operations;decoding means connected to said configuration register for decoding said options and said compositing operation;a control signal register connected to said decoding means for storing the output of said decoding means;input interface means, connected to said control signal register, said register file, said data source means, said first operand source means and said second operand source means, for: (a) accepting, storing and rearranging pixels from said data source means and said first operand source means, and attenuation values from said second operand source means in accordance with an output of said control signal register, (b) generating a stream of data objects to replace the second stream of pixels from said first operand source in accordance with the output of said control signal register and said register file, and (c) updating said information in said register file to reflect a current status of the compositing operation;processing means, connected to said input interface means, said register file, and said control signal register, for performing arithmetic operations on an output of said input interface means in accordance with the output of said control signal register and said register file to produce composited pixels;and data destination means connected to said processing means for receiving said composited pixels.
  3. 12
    An apparatus for performing general color space conversion on streams of interval values, fraction values, and colour table values, said apparatus including:data source means for providing said interval and fraction values;operand source means for providing said color table values in response to said interval values presented;instruction means for enabling or disabling a plurality of options for general color space conversion;a configuration register for storing instruction means;decoding means connected to said configuration register for decoding said instruction means;a control signal register connected to said decoding means for storing the output of said decoding means;input interface means, connected to said control signal register, said data source means, and said operand source means, for: (a) accepting, storing, rearranging and outputting said interval values and said fraction values from said data source means in accordance with the output of said control signal register, and (b) fetching said color table values from said operand source means using said interval value as an address, and storing, rearranging and outputting said color table values in accordance with the output of said control signal register;processing means, connected to said input interface means and said control signal register, for performing arithmetic operations on the output of said input interface means in accordance with the output of said control signal register to produce a result color;and data destination means connected to said processing means for receiving the result color.
  4. 16
    An apparatus for applying an affine image transformation on a source image, said apparatus including:data source means for providing a kernel descriptor and weights of a weighting function;first operand source means for providing index table values from a index table of said source image in response to an index table address presented;second operand source means for providing at least one pixel of said source image in response to a pixel address presented;an instruction means for enabling or disabling a plurality of options of said affine image transformation;a configuration register for storing instruction means;decoding means connected to said configuration register for decoding said instruction means;a control signal register connected to said decoding means for storing an output of said decoding means;a register file for storing information necessary for performing said affine image transformation;input interface means connected to said control signal register, said register file, said data source means, and said operand source means for: (a) accepting and storing said kernel descriptor and said weights of said weighting function from said data source means in accordance with the output of said control signal register, (b) generating coordinates of pixels to be fetched from said source image in accordance to said kernel descriptor and outputs of said register file and said control signal register, (c) calculating index table addresses from coordinates and the output of said register file, (d) fetching index table entries from said first operand source means, (e) calculating a pixel address from said index table entry and said coordinates, (f) fetching at least one of pixels from said second operand means, and storing and rearranging said pixels in accordance with the output of said control signals register;processing means, connected to said input interface means, said register file and said control signal register, for performing a plurality of arithmetic operations on the output of said input interface means in accordance with the output of said control signal register to produce a result pixel;and data destination means connected to said processing means for receiving the result pixel.
  5. 26
    An apparatus for applying a convolution using a convolution matrix to a source image, said apparatus including:data source means for providing a kernel descriptor and coefficients of said convolution matrix;first operand source means for providing index table values from an index table of said source image in response to an index table address presented;second operand source means for providing pixels of said source image in response to a pixel address presented;an instruction means for enabling or disabling a plurality of options in convolution;a configuration register for storing said instruction means;decoding means connected to said configuration register for decoding said instruction means;a control signal register connected to said decoding means for storing the output of said decoding means;a register file for storing information necessary for performing an affine image transformation;an input interface means, connected to said control signal register, said register file, said data source means, and said operand source means, for: (a) accepting and storing said kernel descriptor and said weights of a weighting function from said data source means in accordance with the output of said control signal register, (b) generating coordinates of pixels to be fetched from said image in accordance to said kernel descriptor and outputs of said register file and said control signal register, (c) calculating index table addresses from said coordinates and the output of said register file, (d) fetching index table entry from said first operand source means, (e) calculating pixel address from said index table entry and said coordinates, (f) fetching a plurality of pixels from said second operand means, and storing and rearranging said pixels in accordance with the output of said control signals register;processing means, connected to said input interface means, said register file and said control signal register, for performing arithmetic operation on the output of said input interface means in accordance with the output of said control signal register to produce a result pixel;and data destination means connected to said processing means for receiving the result pixel.
  6. 36
    An apparatus for performing a linear colour space conversion on a stream of source data objects with a conversion matrix, said apparatus including:data source means for providing said source data objects;operand source means for providing a plurality of coefficients of said conversion matrix in response to a line number presented;instruction means for enabling or disabling a plurality of options in linear color space conversion;a configuration register for storing said instruction means;decoding means connected to said configuration register for decoding said instruction means;a control signal register connected to said decoding means for storing the output of said decoding means;input interface means, connected to said control signal register, said data source means, and said operand source means, for: (a) accepting, storing and outputting said source data objects from said data source means in accordance with the output of said control signals register, (b) generating said line number to fetch a plurality of said coefficients from operand source means in accordance to said control signal register, and (c) storing, rearranging and outputting said coefficients in accordance with the output of said control signals register;processing means, connected to said input interface means and said control signal register, for performing a plurality of arithmetic operations on the output of said input interface means in accordance with the output of said control signal register to produce a result data object;and data destination means connected to said processing means for receiving the result data object.
  7. 41
    Apparatus for supplying multiple, separately addressed data items from a data table in external memory, said apparatus comprising:a cache memory having n separately addressable memories banks organised as m cache-lines, where n and m are both a plurality;n programmable address generators each coupled to a corresponding one of said n memory banks, the generators using an index to generate multiple addresses to simultaneously retrieve multiple data items from the memory banks, wherein each said generated address includes a tag address and a line address;a tag memory for storing tag addresses of the corresponding lines of the cache memory;a line-valid memory for storing line-valid status of the corresponding lines of the cache memory;n tag comparators, each comparing a tag address of a said generated address with a tag address stored in said tag memory corresponding to the line address of the generated address, and when there is a match and a line-valid status for that line is also asserted a hit signal is generated;and a cache controller for controlling the simultaneous retrieval from the cache memory of the multiple data items in response to said asserted hit signals and for controlling a fetching of one or more said lines containing one or more said data items from the external memory when said associated hit signals are not asserted;and a data organizer for positioning the retrieved data in an output packet.
  8. 46
    Apparatus as claimed in any one of the preceding claims, wherein each said multiple address is generated in the form of a complete external memory address.
  9. 50
    Apparatus as claimed in any one of the preceding claims, wherein said cache memory is a direct mapped cache.
  10. 54
    A method for supplying multiple, separately addressed data items from a data table in external memory via a cache memory having n separately addressable memories banks each having m lines, where n and m are both a plurality, the method comprising the steps of:generating multiple addresses, using an index, to simultaneously retrieve multiple data items from the memory banks, wherein each said generated address includes a tag address and a line address;storing tag addresses of the corresponding lines of the cache memory in a tag memory;storing line valid-status of the corresponding lines of the cache memory in a line-valid memory;comparing, for each said generated multiple address, a tag address of the generated address with a tag address stored in said tag memory corresponding to the line address of the generated address, and when there is a match and a line-valid status for that line is also asserted a hit signal is generated;and controlling the simultaneous retrieval from the cache memory of the multiple data items in response to said asserted hit signals and controlling a fetching of one or more said lines containing one or more said data items from the external memory when said associated hit signals are not asserted;and positioning the retrieved data in an output packet.
  11. 57
    Method as claimed in 55 or 56, further comprising the following step of:generating the multiple addresses in a manner determined by the current mode of operation.
  12. 66
    Method as claimed in any one of the claim 54, wherein said n address generators consist of n different combinational logic circuits, each having as their inputs;a base address, the current mode of operation setting, the index and each having as an output a said generated address in the form of a complete external memory address.
  13. 67
    Apparatus for supplying multiple, separately addressed data items from a data table in external memory, said apparatus comprising:a cache memory having n separately addressable memories banks organised as m cache-lines, where each said memory bank consists of m bank-lines, and each said cache-line consists of a said bank-line from each memory bank, and where n and m are both a plurality;n programmable address generators each coupled to a corresponding one of said n memory banks, each generator using an index to generate an external memory address to retrieve a corresponding data item from a said memory bank, wherein each said generated address includes a tag address, a line address and bank address;a tag memory for storing tag addresses of the corresponding cache-lines of the cache memory;a line-valid memory for storing line-valid status of the corresponding cache-lines of the cache memory;n tag comparators, each comparing a tag address of a said generated address with a tag address stored in said tag memory corresponding to the line address of the generated address, and when there is a match and a line-valid status for that line is also asserted a hit signal is generated;and a cache controller for controlling the retrieval from the cache memory of the data items in response to said asserted hit signals and for controlling a fetching of one or more said lines containing one or more said data items from the external memory when said associated hit signals are not asserted;and a data organizer for positioning the retrieved data in an output packet.
  14. 72
    Apparatus as claimed in any one of the preceding claims, wherein each said multiple address is generated in the form of a complete external memory address.
  15. 79
    Apparatus for supplying multiple, separately addressed data items from a data table in external memory, said apparatus comprising:a cache memory having n separately addressable memories banks organised as m cache-lines, where n and m are both a plurality;n programmable address generators each coupled to a corresponding one of said n memory banks, the generators using an index to generate multiple addresses to simultaneously retrieve multiple data items from the memory banks, wherein each said generated address includes a tag address and a line address;a tag memory for storing tag addresses of the corresponding lines of the cache memory;a line-valid memory for storing line-valid status of the corresponding lines of the cache memory;n tag comparators, each comparing a tag address of a said generated address with a tag address stored in said tag memory corresponding to the line address of the generated address, and when there is a match and a line-valid status for that line is also asserted a hit signal is generated;and a cache controller for controlling the simultaneous retrieval from the cache memory of the multiple data items in response to said asserted hit signals and for controlling a fetching of one or more said lines containing one or more said data items from the external memory when said associated hit signals are not asserted;a data organizer for positioning the retrieved data in an output packet;and an interface for setting a current mode of operation of the apparatus, wherein said address generators generate the multiple addresses in a manner determined by the current mode of operation which is dependent upon the table stored in external memory.
  16. 80
    An apparatus for normalising input data supplied in a data-word format, the apparatus including:a first-in-first-out (FIFO) buffer for receiving input data in the form of a first data word and a subsequent data word;an input register for receiving said first data word from an output of the FIFO buffer;a combinatorial circuit for transforming the first data word in the input register and the subsequent data word at the output of the FIFO buffer into a normalised output data word;a control unit to generate configuration signals for the combinatorial circuit;an output register to store the normalised output data word.
  17. 96
    A method of normalising input data supplied in a data word format, the method comprising the steps of:(a) feeding a first data word and a subsequent data word sequentially into a first-in-first-out (FIFO) buffer;(b) reading the first data word into an input register from an output of the FIFO buffer;(c) advancing the FIFO buffer to move the subsequent data word to the output of the FIFO buffer;(d) normalising the input data from the first data word in the input register and the subsequent data from the output of the FIFO, thereby to generate normalised data at an output of the normalising circuit;and (e) reading the normalised data from the output of the normalising circuit into an output register;wherein the normalising step takes place according to configuration signals generated by a control unit.
  18. 102
    A graphics processor for performing graphical operations on graphical objects, each of the graphical objects being represented in an external data format selected from a set thereof, the graphics processor including:first mapping means to map each of the external data formats to a corresponding internal data format selected from a set of internal data formats;calculation means to perform graphical operations on the graphical objects when in the internal data format;and second mapping means to map each of the data formats in the set of internal data formats to a data format selected from the set of external data formats after the graphical operations have been performed.
  19. 111
    A graphics processor according to any one of the preceding claims, wherein the first and second mapping means are provided with mapping instructions from a central processing unit associated with the graphics processor.
  20. 112
    A method for converting an input image in an input color space to an output image in an output color space, wherein said input image comprises a plurality of input pixels; said method comprises the steps of:storing, in a first memory, sparsely located output color values of said output color space;supplying a stream of neighbouring pixels of the input image;and performing the following steps on each pixel of the stream;storing, in a cache memory from said first memory, sparsely located output color values corresponding to the input pixels closest to the current input pixel of the stream, if not already present in the cache memory;retrieving, from said cache memory, sparsely located output color values corresponding to the input pixels closest to the current input pixel of the stream;interpolating the retrieved output color values to derive an output color value in said output color space.
  21. 117
    An apparatus for converting an input image in an input color space to an output image in an output color space, wherein said input image comprises a plurality of pixels; said apparatus comprising:a first memory for storing sparsely located output color values of said output color space;means for supplying a stream of neighbouring pixels of the input image;a cache memory for storing from said first memory, sparsely located output color values corresponding to the input pixels closest to the current input pixel of the stream, if not already present in the cache memory;retrieval means for retrieving, from said cache memory, sparsely located output color values corresponding to the input pixels closest to the current input pixel of the stream;interpolation means for interpolating the retrieved output color values to derive an output color value in said output color space.
  22. 122
    A multi-port burst dynamic random access memory (DRAM) system including:a memory array;a controller for controlling the memory array;a write port for writing data to the memory array;a read port for reading data from the memory array;and either: a first-in-first-out (FIFO) output buffer disposed between the memory array and the read port to temporarily store data read from the memory array;or a first-in-first-out (FIFO) input buffer disposed between the memory array and the write port to temporarily store data prior to writing to the memory array.
  23. 127
    A multi-port burst DRAM system according to any one of the preceding claims, further including:arbitration means for arbitrating access to the memory array by the read and write ports;and address communication means for providing address signals to said memory array, the address signals including row address and column address signals associated with data being written to or read from the memory array by the write ports or read ports respectively.
  24. 132
    A multi-port burst DRAM system according to any one of the preceding claims, further including means for supplying a refresh signal to said memory array.
  25. 137
    A method of improving access latency of a multi-port burst dynamic random access memory (DRAM) arrangement, the arrangement incorporating a memory array and a memory controller, the method including the steps of:providing a write port for writing data to the memory array;providing a read port for reading data from the memory array;providing either: a first-in-first-out (FIFO) output buffer disposed between the memory array and the read port;or a first-in-first-out (FIFO) input buffer disposed between the memory array and the write port;temporarily storing data from in the FIFO output buffer or the FIFO input buffer.
  26. 142
    A method of improving performance of a multi-port burst dynamic random access memory (DRAM) system having a memory array, a controller for controlling the memory array, a write port for writing data to the memory array and a read port for reading data from the memory array the method including the step of providing either:a first-in-first-out (FIFO) output buffer disposed between the memory array and the read port to temporarily store data read from the memory array;or a first-in-first-out (FIFO) input buffer disposed between the memory array and the write port to temporarily store data prior to writing to the memory array.
  27. 143
    A data store apparatus comprising:encoding means for receiving incoming data objects, and for encoding the incoming data objects using an encoding scheme which is dependent upon one of a multiplicity of operating modes of the data store apparatus;storage means for storing the encoded incoming data objects in accordance with said operating mode;decoding means for decoding the output of the storage means in accordance with said operating mode;address generation means for generating the read and write addresses to memory modules comprising the storage means in accordance with said operating mode;and control means for generating control signals for controlling the storage of the data objects in the storage means.
  28. 153
    A data store apparatus for storing first data objects containing a plurality of first data items and for storing second data objects containing one or more second data items, said apparatus comprising:first rearrangement means for rearranging the order of the first data items within the first data objects in accordance with a first rearranging mode and for outputting said rearranged first data objects ;storage means consisting of a plurality of separately addressable memory banks, said storage means organised as a plurality of memory lines, each memory line including a memory location from each memory bank;write means for writing said first rearranged data objects in said plurality of storage means in accordance with a first write mode whereby said first data objects are stored in separate said memory lines and for writing said second data objects in said plurality of storage means in accordance with a second write mode, read means for simultaneously and separately reading a plurality of said first data items, each from a different one of said first data objects, from said plurality of memory banks in accordance with a first read mode and for reading one or more said second data objects from said plurality of storage means in accordance with a second read mode;second rearrangement means for rearranging the order of said plurality of read first data items in accordance with a second arranging mode;and control means for generating control signals for controlling the rearranging modes, the write modes and the first read modes.
  29. 166
    A method for storing first data objects containing a plurality of first data items and for storing second data objects containing one or more second data items in storage means consisting of a plurality of separately addressable memory banks, said storage means organised as a plurality of memory lines and each memory line including a memory location from each memory bank, said method comprising the steps of:rearranging the order of the first data items within the first data objects in accordance with a first rearranging mode and for outputting said rearranged first data objects ;writing said first rearranged data objects in said plurality of storage means in accordance with a first write mode whereby said first data objects are stored in separate said memory lines and writing said second data objects in said plurality of storage means in accordance with a second write mode, simultaneously and separately reading a plurality of said first data items, each from a different one of said first data objects, from said plurality of memory banks in accordance with a first read mode and reading one or more said second data objects from said plurality of storage means in accordance with a second read mode;rearranging the order of said plurality of read first data items in accordance with a second arranging mode;and generating control signals for controlling the rearranging modes, the write modes, and the read modes.
Independent claims29