EP1964053A2 - Procede pour traiter un objet dans une plateforme a processeur(s) et memoire(s) et plateforme utilisant le procede - Google Patents

Procede pour traiter un objet dans une plateforme a processeur(s) et memoire(s) et plateforme utilisant le procede

Info

Publication number
EP1964053A2
EP1964053A2 EP06847180A EP06847180A EP1964053A2 EP 1964053 A2 EP1964053 A2 EP 1964053A2 EP 06847180 A EP06847180 A EP 06847180A EP 06847180 A EP06847180 A EP 06847180A EP 1964053 A2 EP1964053 A2 EP 1964053A2
Authority
EP
European Patent Office
Prior art keywords
sub
specific
platform
operations
processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
EP06847180A
Other languages
German (de)
English (en)
Inventor
Bruno Liege
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
GoPro Inc
Original Assignee
Dxo Labs SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Dxo Labs SA filed Critical Dxo Labs SA
Publication of EP1964053A2 publication Critical patent/EP1964053A2/fr
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing

Definitions

  • the present invention relates to a method for processing, in a processor platform (s) and memory (s), an object consisting of basic information. It also relates to a platform using such a method.
  • an elementary information element is an information element to be processed, represented by one or more numerical values.
  • This information can be encoded according to various types of coding such as 8-bit coding, 10-bit coding or signed 16-bit coding.
  • the elementary information will be the pixels of this image.
  • the processing that will be applied to the object in the platform corresponds to an algorithm that can intervene in different domains such as, for example, image processing, data compression or decompression, sound processing, signal modulation and demodulation. , measurement, data analysis, indexing or searching a database, computer vision, graphic processing, simulation or any area that uses a large amount of data.
  • the programmable processors for example of the scalar processor, vector processor, signal processing processor or vector processor, particularly SIMD type ("Single Instruction Multiple Data"), allow to apply an algorithm on a compound object elementary information and decomposed into blocks, or sub-objects, that is, into groups of elementary information.
  • Each operation is usually applied to a complete block, then the next operation is carried out on a block which has been reduced in size. Indeed, some of these operations have the effect of reducing the size of the blocks, resulting in edge effects during the application of the following operations. Consequently, when it is desired to apply an algorithm with a known processor, it is necessary to perform a large number of memory accesses, since an operation is applied to all the blocks successively before going on to the next operation. this situation leads to frequent writing and reading in the memory. It is also necessary to use large blocks to reduce edge effects, and therefore must have a memory of relatively large size to store these large blocks. In addition, a large number of loops means that the initialization code of the loops and end of loop is present a large number of times, which induces a large code size.
  • mapping tables or the application of local displacement, are not suitable for implementation on a vector processor with a shift or swap communication scheme.
  • each platform has its own characteristics, both in terms of hardware (for example number and type of processors or size and type of memory), and in terms of language used (C for a scalar processor and assembler for a vector processor ).
  • the object of the invention is to provide a method for treating an object in a platform, by overcoming at least one of the disadvantages mentioned above.
  • the invention makes it possible to optimize the processing in terms of code size, calculation time, memory access rate, and memory size. This optimization makes it possible to reduce the calculation time of an algorithm and the power consumption required for a computing power and a memory size, and therefore a silicon surface, data.
  • the invention relates to a method for processing, in a processor (s) and memory (s) platform, an object constituted by elementary information of the same nature, this method comprising the step of decomposing the object to be processed into at least two sub-objects consisting of N elementary information each, all the sub-objects having the same number N of elementary information, and the processing consisting of performing at least one sequence of specific operations on the elementary information of each sub-object, the method further comprising the step of performing, for each sub-object, at least N times each specific operation, so, of on the one hand, to involve at least once each elementary information of each sub-object, and, on the other hand, to produce N results for each specific operation, the sequence of specific operations being such that at least one specific operation k of the sequence produced at least once during its N applications, a result used for the processing of another sub-object.
  • the specific sequence of operations does not include a loop.
  • the platform comprises Q processors.
  • the processing of each sub-object is distributed over the Q processors, which each perform at least one specific operation IS8 of the specific sequence of operations. So that all the processors are used for each sub-object and so that the same processor is used for all the sub-objects. Thus, it is not necessary to assign the sub-objects to the processors.
  • the same specific operation is also performed by the same processor for the processing of all other sub-objects.
  • the processing is thus regular: the specific operations are assigned to the processors and carried out periodically thereafter for each sub-object subprocessing.
  • all the loops required for processing depend on the topology of the object and the platform, but are independent of the sequence of specific operations.
  • the loops are nested within each other around the specific sequence of operations complete.
  • the loops encapsulate the whole of the specific sequence of operations and the specific sequence of operations is not split into subsequences each surrounded by loops.
  • the sub-objects are composed of contiguous elementary information.
  • processor chaining comprising at least one queue.
  • a queue makes it possible to transmit and / or store elementary information or results of specific operations.
  • a queue may include or use a memory.
  • a queue can be implemented using one or more FIFO processes ("First in first out").
  • a queue has at least one entry and at least one exit.
  • a queue may be functionally connected by any means to an input computing unit and an output computing unit.
  • a queue can also be connected functionally by any means to PR input calculation units and PR calculation units output, in this case the queue behaves like PR files each connecting an input calculation unit with a calculation unit output.
  • a queue makes it possible to independently manage several streams of data, each stream being associated with a specific specific instruction.
  • a queue uses at least one unit of memory making it possible to store, for each stream, an identical number NF of data.
  • NF is determined according to the relative disposition of the sub-objects and the mode of travel, so that NF-I sub-objects are processed between the processing of a sub-object producing a datum and the processing of the sub-object. object using the data.
  • a chaining comprising calculation units and a queue comprises a mechanism for managing the boot: the queue is initialized regularly, for example at the beginning of each line if the queue is part of a horizontal chaining and the object is an image; as long as the queue does not understand NF data, the processor that follows the queue in the chaining takes as input the data that it sends out; then, the processor that follows the queue in the chaining takes the oldest data in the queue as input and removes it from the queue.
  • the queue makes it possible to output the data in the same order as they were entered in the queue.
  • the circular chaining is unidirectional.
  • the circular chaining is such that there is a single input link and a single output link per calculation unit.
  • a queue is, for example, implemented using a microprocessor.
  • each of the specific operations of the sequence is performed N times in total and N / Q times by each of the Q processors.
  • each processor performs the part of the sequence taking into account these conditional branches.
  • the sub-objects have no overlap in at least one dimension. So that at least one specific operation result produced when processing a sub-object is used when processing another sub-object.
  • the sub-objects have no overlap in any dimension. So that we can use each processor 100% without repeating calculation.
  • the sequence of specific operations is such that at least one specific operation k of the sequence occurs at least once during its N applications, a result used for the processing of another sub-object.
  • the queue is shared between all the circular chaining of the same dimension.
  • there is exactly one queue per dimension of the sub-object and each queue is shared between all the circular chaining in the same dimension. So the communication between the processors is particularly simple. So that the organization of memory is particularly simple.
  • the invention also makes it possible to obtain, for a given algorithm, a performance proportional to the number of processors, without changing the algorithm or the memory size, and while using small processors.
  • the invention makes it possible to make available, on a component, a computing power of several tens of billions of operations per second per mm 2 , for a component etched with a 0.09 ⁇ m process. These densities usually require an optimized cable architecture, which is therefore long to develop, and has no flexibility to change. algorithm. On the contrary, the invention makes it possible to program any algorithm with great ease and therefore in a very short time.
  • the invention makes it possible to make a treatment consisting of operations with edge effects regular.
  • the objects treated by a process such as that described above are preferably raw images (of the "raw” type) before the demosaicing operation, in which case:
  • the elementary information is a pixel represented by a corresponding numerical value, according to the absolute position of the pixel, for example to red, green or blue;
  • an elementary item of information is a group of pixels (for example a group of 2 * 2 green, red, blue and green pixels corresponding to a "Bayer") represented by a numerical value per pixel.
  • the objects can also be visible images, in which case the elementary information is a pixel represented, for example, by three numerical values, each of the values representing a color, for example red, green and blue.
  • the objects can also be sequences of images, in particular raw or visible, in which case the elementary information is a pixel of an image of the image sequence.
  • the objects therefore correspond, for example, to videos.
  • the image may be from an image capture apparatus and / or intended for an image rendering apparatus:
  • An image capture apparatus is, for example, example, a disposable camera, digital camera, SLR camera (digital or not), scanner, fax, endoscope, camera, camcorder, surveillance camera, toy, camera or integrated or connected camera a telephone, personal assistant or computer, a thermal camera, an ultrasound machine, an MRI (magnetic resonance) imaging device, an X-ray machine.
  • An image rendering apparatus is, for example, a screen, a projector, a television set, virtual reality glasses, or a printer.
  • a device for capturing and restoring images is, for example, a scanner / fax / printer, a mini lab for printing photos, a video conference device.
  • the processing platform can take various forms depending on the application.
  • the object is an image
  • An image capture device that produces images processed for example a digital camera that incorporates a processing platform.
  • An image rendering apparatus which displays or prints processed images, for example a video projector or a printer including a processing platform.
  • a mixed device that corrects the defects of its elements, for example a scanner / printer / fax including a processing platform.
  • a professional image capture device that produces processed images, for example an endoscope including a processing platform.
  • the processing platform may be deported in whole or in part to a server.
  • An algorithm, or an object processing corresponds, for example, without the list being limiting in the case where the object is an image to: a calculation, in particular of statistics, for a white balance, and / or
  • a treatment notably for improving color rendition, and / or a treatment, in particular for improving the rendering of the contrast, and / or
  • a treatment in particular for improving the rendering of the details, and / or
  • noise reduction and / or - a measurement, and / or - compression, and / or
  • the processing applied to the object may consist of a sequence of operations, also called specific operations.
  • the results of specific operations are also called basic information and may or may not be of the same type as the basic information of the object.
  • Sub-objects are sets of basic information with a shape and size that, depending on the case, depend on the characteristics of the platform, including the size and type of memory and, in the case of a vector processor , the size of a vector, but also the characteristics of the object to be treated.
  • the objects and sub-objects as well as the logical blocks have several dimensions.
  • the dimensions of the subobjects and logical blocks correspond to all or part of the dimensions of the object.
  • the dimensions can be of various natures, in particular:
  • -spatial for example a distance, an angle or a course in a mesh
  • -frequency for example color, frequency, frequency band
  • a decomposition according to a vector space base for example a decomposition into wavelets, or a decomposition into heavy weights, low weights, -in general, the dimensions of any topology space.
  • a raw fixed image with 2 dimensions, each corresponding to distances, the pixels being each provided with a color, for example red, green or blue,
  • a medical image with dimensions of distance and, possibly, channel dimensions, a hologram with dimensions of angle of view,
  • a modulated signal with one or more dimensions, corresponding to time and, optionally, a frequency and, possibly, a position in space or an angle,
  • an object with one or more dimensions.
  • the elementary information of an object can have a position and / or an absolute scale notably spatial and / or temporal and / or frequency and / or in any other dimension of the object:
  • an elementary information of an object "sound” can correspond to an intensity; in this case, the elementary information has an absolute position corresponding to a given instant and in the case of a multichannel sound for a given channel, - an elementary information of an "image" object can correspond to a pixel; in this case, the elementary information has an absolute position corresponding to a position in the image and, in the case of a video image at a given instant, an elementary information of a "simulation data" object can correspond to a state; in this case, an elementary information has an absolute position corresponding to a mesh node and at a given instant,
  • an elementary information of a "modulated signal" object may correspond to an intensity and / or a phase; in this case, an elementary information has an absolute position corresponding to a given instant and possibly a given frequency and possibly a given position if several antennas or transmitters are used.
  • the relative positions and the absolute or relative scales, according to at least one dimension, in particular spatial and / or temporal, can correspond to various concepts according to the nature of the object. They apply between any 2 blocks, whatever their type (in the case of an image as described above, a logic block can notably be raw, red, green, 8 bits, etc.).
  • the absolute or relative position may correspond, in one embodiment, to 2 values (vertical and horizontal) and the absolute or relative scale to 2 values (vertical and horizontal) .
  • the pixels of the top line of an object can have as absolute positions (0; 0) (0; 1) (0; 2) ..., and the pixels of the n th line can have as absolute positions (n 0) (n; 1) (n; 2).
  • the relative positions can be coded in the following way: (-1; 0) indicates at the top, (0; 0) corresponds to a zero displacement, (0; 1) indicates to the right and (2; -2 ) indicates 2 pixels below and 2 on the left; a relative scale of (0.5; 0.5) corresponds to a resolution of half in each direction.
  • the absolute or relative position may correspond to 2 values (vertical and horizontal) and the scale absolute or relative to 2 values (vertical and horizontal);
  • the pixels of the top line of an object can have as absolute positions (0; 0) (0; 1) (0; 2) ...
  • the pixels of the n th line can have as absolute positions (n 0.5) (n; 1.5) (n; 2.5) if the line is odd, and (n; 0) (n; 1) (n; 2) if the line is even.
  • the relative position can correspond to 2 values (vertical and horizontal), for example (-0.5, 0.5) indicates upper right, (0.1) indicates right and (-0.5; ) indicates the pixel to the right of the pixel at the top right.
  • a relative scale of (0.5; 0.5) corresponds to a resolution of half in each direction.
  • a combination of relative displacement and relative scale can be coded using 2 functions f and g as follows: (f (x; ⁇ ); g (x; ⁇ ))) for each pixel absolute position x, y. It should be noted that a rounding rule is necessary in order to take, for example, the nearest pixel.
  • the absolute or relative position can correspond to 3 values (vertical, horizontal and temporal), for example (- 1; 0; 0) indicates the pixel located above in the same image, (0; 0; -1) indicates the pixel having the same position in the previous image and (2; -2, -1) indicates the pixel located 2 pixels below and 2 on the left in the image. previous picture.
  • a combination of relative displacement and relative scale can be encoded using 3 functions f, g, h as follows: (f (x; ⁇ ; t); g (x; y; t )); h (x; y; t)) for each pixel of absolute position x, y at time t. It should be noted that a rounding rule is necessary in order to take, for example, the nearest pixel.
  • the absolute or relative position may correspond to 1 value
  • the absolute or relative position can correspond to 2 values
  • (Time, channel), for example (-1, 0) indicates the previous instant of the same channel, and (2.1) indicates 2 instants after the next channel, ordered for example spatially in a circular manner.
  • a combination of relative displacement and relative scale can be encoded using 2 functions f, g as follows: (f (t; c); g (t; c)) for each sound sample position at time t for channel c. It should be noted that a rounding rule is necessary to take, for example, the instant and the nearest channel.
  • the absolute or relative position may correspond to n values each corresponding to a spatial or temporal dimension, a function of the topology of the mesh.
  • n functions each corresponding to a spatial or temporal dimension, a function of the topology of the mesh.
  • a combination of relative displacement and relative scale can be encoded using n functions. It should be noted that a rounding rule is necessary in order to take, for example, the node and the nearest instant.
  • the absolute or relative position may correspond to n values respectively corresponding to the time, if any, to the frequency channel (transmission or reception on several frequencies) and if necessary (several transmitters or spatially arranged receivers) to a spatial dimension.
  • a combination of relative displacement and relative scale can be encoded using n functions, and a rounding rule should be chosen.
  • the absolute or relative position may correspond to n values each corresponding to a dimension of the object which, depending on the case, may be temporal, spatial, frequency, phase Or other.
  • a combination of relative displacement and relative scale can be coded using n functions and a rounding rule should be chosen.
  • the absolute or relative position may correspond to n values each corresponding to a dimension of the object which, depending on the case, may be of a temporal, spatial, frequency, phase nature. Or other.
  • n values each corresponding to a dimension of the object which, depending on the case, may be of a temporal, spatial, frequency, phase nature. Or other.
  • a combination of relative displacement and relative scale can be encoded using n functions and a rounding rule should be chosen.
  • FIGS. 1a-1d Different types of non-overlapping sub-objects are illustrated by FIGS. 1a-1d.
  • the same image can be cut into lines (lines 90, 91, 92 and 93 in FIG. (columns 94, 95, 96 and 97 in FIG. 1b), in sub-objects of a completely different shape (forms 70, 71, 72 and 73 in FIG. 1c), or in rectangles (forms 60, 61, 62, 63, 64, 65, 66 and 67 in Figure 1d).
  • the sub-objects are without overlap, it is necessary to access elementary information of at least one other sub-object to process the elementary information of a sub-object without losing an edge during the calculation of filters.
  • the object to be processed having DO dimensions, and being decomposed into sub-objects having DSO dimensions selected from the DO dimensions of the object the decomposition of the object is such that, according to at least one dimension sub-object, the sub-objects have no overlap.
  • the method further comprises the step of performing, for each sub object, exactly N times each specific operation. Preferably one will choose DSO equal to DO.
  • the method further comprises the step of adding at least one elementary information to the object so that it can be decomposed into sub-object without overlap.
  • the sub-object decomposition can also depend on the sequence of operations to be performed on the object, including the number and type of filters, horizontal or vertical, present in this sequence.
  • FIG. 1a shows a sub-object composed of 6 ⁇ 6 elementary information, in the case where the sequence of operations loses a pixel on each edge, and FIG represents an object comprising 100 basic information.
  • the sub-objects are four rectangles 80, 82, 83 and 84 each containing 36 elementary information.
  • the rectangle 80 consists of the 36 elementary information located at the top left in the image, and the rectangle 82 is made up of the 36 elementary information at the top right of the image.
  • the 8 elementary information 86 is common to the two sub-objects 80 and 82.
  • the 8 elementary information 85 is common to both sub-objects 80 and 83.
  • the 8 elementary information 88 is common to both sub-objects 82 and 84.
  • the 8 elementary information 89 are common to both sub-objects 83 and 84.
  • the 4 basic information 87 are common to the four subobjects 80, 82, 83 and 84.
  • the object is an image
  • the image is decomposed into juxtaposed rectangular sub-objects
  • the sub-objects are processed, for example, from left to right and then from top to bottom.
  • the sub-objects are chosen and stored in one of the following ways, without the list being exhaustive:
  • the size of the sub-objects is chosen to be able to perform the processing of a sub-object without access to the slow memory; For example, sub-objects corresponding to squares of 32x32 pixels may be taken, the result of the calculation on the preceding sub-object being transferred to slow memory during the calculation relating to the current sub-object, and during the transfer of the slow memory to the fast memory of the data necessary for calculation relating to the following sub-object
  • the size of the sub-objects is chosen to be able to process a sub-object using the most cache memory possible; for example, sub-objects corresponding to squares of 32x32 pixels or sub-objects of 1 pixel or sub-objects of 4 pixels (2 * 2) or Nl * 2 pixels may be taken, in particular in the case raw image, type "raw"
  • the size of the sub-objects is chosen as equal to, or multiple of, the size of a vector that the platform knows how to process and store, it will be possible, for example, to take sub-objects objects corresponding to 64 horizontal pixels.
  • the decomposition into sub-object can be adapted in a manner similar to the platform.
  • the method according to the invention makes it possible to regularize the sequencing of the specific operations performed on the sub-objects, since the same number N of operations is performed each time.
  • N the number of operations performed each time.
  • the fact of carrying out N operations each time is made possible by the fact that, in carrying out these operations, elementary information belonging to a sub-object different from that on which the operations are applied is involved.
  • the elementary information on which the operation k applies may belong to the same sub-object or to different sub-objects, depending on the type of specific operation and the position of the elementary information in the sub-objects. objects.
  • the platform comprises at least one inter-object communication memory for storing the elementary information and / or results of specific operations calculated during the processing of a sub-object and used for the processing of another sub-object. object.
  • the redundant calculations are reduced.
  • sequence of specific operations comprises only one specific operation implementing the same data during the processing of the object.
  • communication data will be called elementary information and / or results of operations that are used for the processing of several sub-objects or for several different specific operations.
  • the communication data between sub-objects will be chosen such that their size is the number of computations being minimized.
  • the inter-object communication data according to one dimension includes, in particular, the input data of a filter according to this dimension, as well as the data to be combined with the output of the filter, if they are not correctly aligned between they.
  • the inter-object communication memory that is to say the memory used to store the inter-object communication data, is of different nature depending on the necessary storage time and the bit rate.
  • this memory may consist of registers and / or local memory, for communication according to the size of the inner loop of the sub-objects, and / or a local memory and / or shared for communication according to the other dimensions.
  • the object comprises DO dimensions
  • the elementary information is transmitted to the platform first according to a selected dimension DE, then according to the other dimensions.
  • the sub-objects have DSO dimensions, selected from the DO dimensions of the object, and including the dimension DE, and the processing comprises at least one inner loop of sub-object traversing performed according to the dimension DE.
  • An internal loop corresponds to a loop for processing a sub-object, which makes it possible to process the N data using Q processors.
  • This embodiment is particularly adapted to the case of a component processing data "on the fly", that is to say in real time at the input speed of the elementary information in the platform, using, for inter-object communication, a memory located on the same component as the calculation units used for processing.
  • a component processing data "on the fly” that is to say in real time at the input speed of the elementary information in the platform, using, for inter-object communication, a memory located on the same component as the calculation units used for processing.
  • the cost of the component is reduced, and the access rate to the memory is proportional to the number of calculation units.
  • this embodiment is used in the case of a scalar processor, or vector, or pipeline.
  • the sub-objects are such that DSO is one, or DSO is two in the case of a raw image. In the latter case, the size of the sub-object in the second dimension is two.
  • the specific operations are performed by calculation units arranged according to the dimension DE.
  • the size of the sub-objects in each dimension is a multiple of the size of the processor matrix in the considered dimension.
  • the DSO dimensions are the DE dimension, as well as the smaller ones of the OD dimensions to limit the necessary inter-object communication memory.
  • the loops of the sub-object are nested in the same order as the dimensions according to which the elementary information arrives at the platform.
  • the elementary information is transmitted to the platform according to the dimension DE of the object, then according to the other dimensions.
  • the sub-objects comprise the OD dimensions of the object or DO-I dimensions selected from the DO dimensions of the object, the dimension DE being not included.
  • the processing further comprises at least one inner loop of sub-object traversing performed according to the dimension DE.
  • the size of the sub-objects in each dimension is determined according to the size of the object, and / or the transmission rate of the elementary information transmitted to the platform, and / or the speed of calculation of the the platform and / or the size and throughput of at least one platform memory.
  • This embodiment is particularly adapted to the case of a component processing data "on the fly" at the input speed of the elementary information in the platform using for inter-object communication, a local memory located on the same component as the units of calculation used for the processing serving as a relay to an external memory shared slower used for long-term storage of communication data according to the DO-I a dimension not corresponding to DE.
  • the size of the local memory increases with the size of the sub-object
  • the bit rate with the shared memory decreases with the size of the sub-object
  • the size of the external memory increases with the size of the sub-object according to the dimensions other than the dimension DE, it is thus possible to adjust the size of the internal and external memories and the bit rate of the external memory by adjusting the size of the sub-object.
  • the cost is reduced, the throughput with the memory is independent of the size of the object, and a component can be optimized for an object size and reused with external memory for larger objects.
  • This embodiment is also more particularly adapted to the case of a component processing the elementary information more slowly than the input speed of the elementary information in the platform, and using a memory to store the object during the processing.
  • it is sought to limit the size of the internal memory and the processing speed to reduce the internal memory size, the number of calculation units and the memory capacity required.
  • This embodiment applies in particular to a scalar or vector processor or pipeline.
  • the specific operations are carried out by Q units of computation arranged a dimension of size greater than Q.
  • the size of the sub-objects in each dimension is a multiple of the size of the processor matrix in the considered dimension.
  • the DSO dimensions are, in addition to the dimension DE, the smallest of the OD dimensions to limit the inter-object communication memory required.
  • the loops are nested and the code is compact.
  • the inter-object communication data produced during the calculation of the previous sub-object is transferred from the local memory to the external memory, and is transferred from the external memory to the local memory.
  • the inter-object communication data necessary for the calculation of the next sub-object Since the internal loop of the subobjects travels according to the dimension DE, the transfers between internal and external memory concern only the inter-object communication data according to the DO-I dimensions which exclude the dimension DE.
  • the necessary local memory is limited to 3 times the size of the inter-object communication data according to these DO-I dimensions plus once the size of the inter-object communication data according to the DE dimension.
  • the size of the required internal memory is limited to a few hundred or thousands of bytes to process several tens of millions of pixels per second.
  • the data flows in the following way: the elementary information of the object is stored in the external memory, the sub-objects are read from the external memory when at least one sub-object is present in shared memory, the inter-object communication data according to the DO-I dimensions which exclude the dimension DE are read from the shared memory, the result of the processing of the sub-object and the inter-object communication data according to the DO-I dimensions which exclude the dimension DE are written in shared memory, when the complete data according to the dimension used for the output are present in shared memory, they are read in shared memory and available.
  • the transit is thus predictable, simple and regular.
  • the loops of the subobjects are nested in the same order as the dimensions according to which the elementary information arrives at the platform.
  • the specific operation sequence comprises at least one specific selection operation which selects a parameter value among C parameter values at the same time on the Q calculation units. This selection is done in a differentiated manner by processor, according to at least one elementary information and / or at least one specific operation result and / or at least one parameter value.
  • C is 8.
  • a specific selection operation can be used as a function of the input value n giving the interpolation coefficient.
  • the Q processors corresponding to a one-dimensional vector the constant C's are extended in a register of Q constants by duplication: C constant to the right of the vector, then C constants then ...; the specific selection operation makes it possible to choose one of the C values on the left of each element of the vector.
  • the sequence of specific operations comprises at least one specific selection operation performing the selection of one of C data given at the same time on the Q calculation units in a differentiated manner by processor, as a function of a relative displacement obtained from d at least one elementary information and / or at least one specific operation result and / or at least one parameter value.
  • each computing unit can access data from its left neighbors C simultaneously and independently.
  • the specific selection operation may be conditional, in order to allow selection from a number of 2 * C or more of data.
  • a local deformation for example a distortion according to a position
  • the displacement requiring more than C data can be decomposed into at least one uniform displacement followed by a differentiated local displacement carried out using at least one selection operation, the uniform displacement can be realized, in particular, by applying several selection operations, or by using a communication memory.
  • the relative displacement is common to all the elementary information of a sub-object, and / or an object. In another example, it is different for each elementary information, and may or may not depend on the absolute position of the elementary information in the sub-object and / or the sub-object in the object. More generally, this displacement is the result of a calculation based on at least elementary information and / or at least one specific operation result and / or at least one parameter value.
  • the position specific operation produces position information according to one of the DO dimensions.
  • the position can be, in particular, without the list being limiting, an absolute position of elementary information in an object, a sub-object position, a modulo C processor position, a multi-scale data position in a sub-object. object, a relative position with respect to a grid or any other position.
  • the sequence of specific operations comprises at least one specific operation producing a relative position as a function of at least one elementary information and / or at least one specific operation result and / or at least one parameter value.
  • the specific operation of relative position calculation can be used before a specific selection operation.
  • the relative position is common to all the elementary information belonging to a sub-object, and / or to an object. In another example, it is different for each elementary information, or it may depend, or not, on the absolute position of the elementary information in the sub-object and / or the sub-object in the object. More generally, it can be the result of a computation based on at least one elementary information and / or at least one specific operation result and / or at least one parameter value.
  • the size of the sub-objects namely the number N of elementary information present in each object, is, for example, determined according to the architecture of the platform used for processing.
  • at least a portion of the specific operations is performed by Q units of calculations, Q being equal to N or a sub-multiple of N. The fact that N is a multiple of Q makes the treatment even more regular, since all calculation units at the same time complete a same calculation step.
  • the number of processors Q and the number of elementary information N are different, and the processing of the sub-object comprises a single internal loop of N / Q iterations.
  • the processing is regular, the memory and the number of registers used are minimized, and the communication within each sub-object is preferably done with registers.
  • the number of calculation units is from a few tens to a few hundreds, which makes it possible, in particular, to perform calculations of a few hundred operations on images at several tens of millions of pixels per second using manufacturing processes of 0.13 ⁇ components.
  • the number of calculation units is from several thousand to several million, and the invention makes it possible to use this computing power to process objects while keeping a great simplicity of programming and with a performance proportional to the number of calculation units.
  • the number P of specific operations can also be a multiple of Q.
  • specific operations are determined upstream of the platform by a compiler, which is configured from so that, if the number of specific operations is not a multiple of Q, it creates specific operations with no effect in order to obtain this relation (the number of specific operations is a multiple of Q).
  • the treatment will be perfectly regular.
  • the Q calculation units present in the platform are identical.
  • parameters may, for example, be multiplying coefficients.
  • These parameters may correspond, for example, without the list being limiting to: filter coefficients, and / or
  • saturation values and / or offset values, and / or mapping tables.
  • the values of the parameters used by the specific operations depend on the position in the sub-objects of the elementary information involved, directly or indirectly, in these specific operations.
  • defects may appear on the image, due to the optics used to take the picture. These defects are, in general, not homogeneous throughout the image, especially on the edges.
  • the use of a parameter common to all the elementary information for a filter makes it possible to increase the sharpness in a uniform manner.
  • the use of a parameter depending on the absolute position of the elementary information in the object to processing, for a filter makes it possible to increase the sharpness more importantly at the edge in order to compensate for an optical defect.
  • the use of a parameter dependent on the absolute position of the elementary information in the object to be treated, for a vignetting correction makes it possible to obtain a stronger edge compensation in order to compensate for an optical defect.
  • a parameter depending on the absolute position of the elementary information in the object to be treated for a de-keying makes it possible to treat the red pixels, the green pixels and the blue pixels differently.
  • second data in particular a displacement
  • zoom which depends on the absolute position of the elementary information in the object to be processed for a numerical zooming calculation ("zoom") or a distortion correction
  • a parameter depending on the nature of this parameter, can:
  • the parameter value may, in particular, be transmitted to the processing means or to the platform, and / or to extension of the origin or destination of the object, for example in the case where the object to be processed is an image from an apparatus provided with a given optic, the value of the parameter may depend on the type of optics that has an impact on the level of blur in the image; in this case, the parameter value can in particular be transmitted to the processing means or to the platform, and / or
  • the value of the parameter may depend on the gain of the sensor actually used to capture said object that has an impact on the noise level in the image; in this case, the parameter value may, in particular, be transmitted, chosen or calculated by the platform, and / or
  • the parameter value can in particular be transmitted, chosen or calculated by the platform, and / or
  • the parameter value can be determined simultaneously or a posteriori with respect to the definition of the algorithm.
  • the value of the parameter is calculated at each change.
  • the possible values of the parameter are calculated a priori, and, at each change, the index or the address making it possible to access the value of the parameter for example in a table is determined.
  • a limited number of sets of parameter values are determined, each set is stored and, for each sub-object, the set to be used is selected, for example by calculating a function of the position giving the address of the game to use.
  • the assignment of the specific operations to the calculation units depends on both the type of operation, the sequence, and the calculation units themselves.
  • the calculation units are specialized, that is to say that the N results from the same specific operation are calculated by the same calculation unit.
  • the fact of having specialized computing units saves time, since the computing unit in charge of this operation can realize a memory access at the beginning of the processing, to retrieve the parameter, then apply the operation N times without having to perform a memory access again.
  • this specific operation when at least one specific operation implements at least one parameter, this specific operation is performed by at least one calculation unit having access to a memory unit containing a part of the parameter values, this part being determined according to the specific operations performed by that computing unit.
  • this specific operation For storage of these parameter values, there may be different hardware configurations, which will be detailed later.
  • each calculation unit may have its own memory, or there may be a memory common to all units, or else the calculation units may be grouped together, and have a memory for each group.
  • the value of this parameter is a function of the position of the sub-object and / or the elementary information in the object to be processed.
  • the value of the parameter will be fixed for all the object to be treated, while for others, this value will be variable depending on the position.
  • the coefficients of an image blur correction filter may be more or less strong depending on whether one is at the center or at the edge of the image.
  • the configuration of the computing units may vary.
  • the specific operations are performed by chained calculation units.
  • the calculation units can be chained "in series" or according to a tree, and the results of the calculations on a basic information to be processed transit from one unit to another.
  • Such a configuration is made possible by the fact that the processing is regular, and that the transit of the elementary information can therefore also be done regularly.
  • the calculation units can also be placed in parallel, in order to process several basic information simultaneously.
  • the calculation units are chained to be able to combine calculation results from different elementary information, for example filters.
  • the calculation units are chained according to a one-dimensional chaining. In another embodiment, the calculation units are chained according to at least one circular chaining. This last embodiment makes it possible to obtain uninterrupted processing, since when elementary information has passed through all the calculation units, and has undergone a certain number of specific operations, it is immediately transmitted again to the first calculation unit.
  • the chaining also comprises at least one queue.
  • This embodiment of the process can be implemented as such.
  • the specific operations are performed by computation units chained according to at least one circular chaining for each dimension of the sub-object; the circular chaining (s) for each particular dimension D1 of the sub-object further comprising at least one shared or non-shared queue between the circular chaining (s) for the particular dimension D1 of the subobject.
  • the queue is shared between all the circular chaining of the same dimension.
  • there is exactly one queue per dimension of the sub-object and each queue is shared between all the circular chaining in the same dimension.
  • the specific operations are performed by computation units chained to a given dimension DD of the sub-object by means of at least one circular chaining CCI; said circular chaining CCI further comprising at least one file.
  • the method further comprises the step, for at least one specific instruction, for each application of said specific instruction to transmit the result of this application of the specific instruction performed on a UCl unit to the unit.
  • the sub-object comprises DSO dimensions
  • the specific operations are performed by calculation units chained to a given dimension DD of the sub-object by means of at least one circular chaining CCI; said chaining circular CCI further comprises at least one file; the method further comprises the step, for at least one specific instruction, for each application of said specific instruction - to transmit the result of said application of the specific instruction performed on a computing unit
  • the computing units each belong to at least one string, in each of the dimensions of the sub-object.
  • the method further comprises the step, for at least two specific instructions, for each application of one of the two specific instructions, to transmit the result of said application the specific instruction performed on a UCl calculation unit. to the calculation unit UC2 or file which follows said calculation unit UCl according to a predetermined predetermined chaining for each specific instruction.
  • the chaining used depends in practice on the type of filter performed (vertical or horizontal, for example) by the specific instruction sequence.
  • the specific operations are of two types: either they do not implement any chaining, or they systematically implement a chaining, that is to say each time they are performed; in this case, all chaining implemented by the same specific operation by the different processors are in the same dimension.
  • the specific operations are performed by computation units chained according to at least one circular chaining; said chaining makes it possible to transmit the result of a specific operation to the next processor or file in the chaining the processor having produced said result.
  • the specific operations are performed by computation units chained according to at least one circular chaining; said circular chaining further comprising at least one file; said queue for transmitting the results of specific operations required to calculate at least one other sub-object.
  • the invention further comprises the step of grouping in memory the results of specific operations used when subprocessing another sub-object as a function of the relative position of said other sub-object relative to to the said sub-object.
  • the method further comprises the step of grouping in at least one queue the results of specific operations used during the subprocessing of another sub-object.
  • the method includes the additional step of providing the platform with instructions for keeping in memory or in line at least a portion of these results of specific operations.
  • the method comprises the step of assigning the operations specific to the calculation units according to the chaining of the calculation units, and the sequence. This step can also be performed by a compiler located upstream of the platform.
  • programmable computing units that is, the sequence of specific operations and / or the assignment of operations specific to the different calculation units may be modified after completion of the component containing these calculation units.
  • the order and / or the nature of the specific operations are modifiable.
  • the calculation units are programmable, they can be programmed a first time at the time of the realization of the component.
  • the specific operations are performed by hardwired computing units according to at least one predetermined sequence of specific operations.
  • This embodiment makes it possible, for example, to dispense with the use of an external memory. Indeed, instead of having such a memory containing the sequencing of the operations to be performed for an algorithm, it is possible to wire the calculation units in such a way that the operations are performed in an order corresponding to this algorithm that we want apply to an object.
  • the platform on which the processing is performed can have different types of memory that vary, both in terms of capacity and in terms of access rate.
  • a fast memory and / or registers can be used to store results of short-term operations, in the case of operations such as filters that require the immediate reuse of certain data.
  • at least one specific operation is performed by at least one calculation unit with a limited capacity memory unit for storing elementary information and / or results of specific operations, this memory containing at most Sixteen basic information and / or results of specific operations.
  • Fast memories here usually having a limited capacity, it is necessary, in in some cases, also having a larger capacity memory to store more basic information and / or results of specific operations.
  • At least one specific operation is performed by at least one calculation unit having access to a communication memory unit, containing at least one elementary information and / or at least one of the specific operation result. from other sub-objects.
  • This communication memory is generally used to store elementary information and / or results of specific long-term operations used for processing other sub-objects. Only a portion of the specific operations produce or use such data, and the required throughput is therefore limited.
  • the regularity provided by the invention makes it possible to very simply determine what these data are and thus to dispense with a cache memory mechanism, which reduces the complexity and the cost of the platform.
  • the communication memory unit has an access rate less than 0.3 * N access / sub-object / specific operation. Such memory, with a relatively slow access rate, will be less expensive than if one wanted to use a memory both fast and large capacity. This is an advantage of the invention.
  • the processing platform is such that the memory capacity is reduced, it is necessary to choose a size of sub-objects such that one can correctly apply a treatment.
  • the value of Q is set at 1 and the value of N is between 2 and 16.
  • the platform is intended to handle photographs taken by the mobile phone, all operations will apply to only one pixel at a time.
  • the platform comprises a vector processor, it is possible to have a large number of calculation units.
  • This hardware configuration makes it possible, if the computing units are used wisely, to speed up the process of processing an object. For this purpose, in one embodiment, at least one specific operation is performed simultaneously by at least two identical calculation units. The invention then makes it possible, by the regularity of the processing, to make the best use of the processors.
  • the specific operations comprise at least one specific calculation operation taken in the group comprising: addition, subtraction, multiplication, application of a correspondence table, the minimum, the maximum, the selection
  • At least one specific calculation operation also produces an offset, and / or a saturation and / or a rounding.
  • the specific selection calculation operation makes it possible to choose one of at least two data as a function of the value of a third data item.
  • the application of a correspondence table is performed by a calculation implementing the entry of the table and a limited number of coefficients.
  • the limited number of coefficients is set to 8.
  • the specific operations are performed by computation units chained by means of at least one circular chaining CCI; said circular chaining CCI further comprising at least one file; at least one specific instruction IS4 of the specific instruction sequence transmitting the result of a specific instruction IS5 performed on a calculation unit UCl to the calculation unit UC2 or file which follows said calculation unit UCl according to said chaining.
  • the specific instruction IS4 transmits, from the queue, to the UCO calculation unit that follows the queue, the result of a specific instruction IS5 performed during a previous subprocessing.
  • the queue makes it possible to output the data in the same order as they were entered in the queue.
  • N and Q vary according to the achievements. Each of the achievements has different advantages. Thus, in one embodiment N is not multiple of Q. In a variant of this embodiment, Q is equal to the number of specific operations of the sequence obtained by translating the generic sequence of operations.
  • N is a multiple of Q. This makes the processing regular.
  • N Q. This makes it possible to reduce the amount of memory required for storing temporary results.
  • Q> 1 and N Q. This makes it possible to use the Q units of calculation of a vector processor at 100%.
  • Q> 1 and N is a multiple of Q. This makes it possible to use the Q units of computation of a vectorial processor at 100%, reducing the number of result of specific operations carried out during the processing of a sub-object and used for processing another sub-object.
  • each processor performs all operations of the sequence of specific operations. In one embodiment, all the processors perform the same specific operation at the same time. In another embodiment, all the processors perform the same specific operation successively, which makes it possible to perform recursive filters.
  • Memory storage of basic information and results of operations requires the use of relatively simple addressing, so as not to lose too much time when searching for basic information.
  • at least a portion of the results of specific operations are stored in memory at an address of the form "base address + offset" or “base address + offset modulo (size of a buffer memory ) ", The offset being constant for all the results of the same specific operation.
  • the buffer memory is preferably integrated in one of the memories of the platform used for processing.
  • the buffer memory can be, in particular, a queue.
  • the base address is changed each time a sub-object is changed in the processing process. In one embodiment, this addressing may be used in particular for the communication data between the sub-objects according to at least one dimension.
  • the address calculation is common to all the processors and to a memory delivering groups of elementary information and / or the result of operations specific to the size of a sub-unit. -object can be used.
  • each computing unit had its own memory.
  • a given address can be relative to several memories, that is to say that a memory address as defined here actually represents the set of memory addresses used by all the calculation units performing the same operation. specific.
  • At least a portion of the results of specific operations are stored in memory at a predetermined address for all results of the same specific operation.
  • the method defined above is such that the number of calculation units needed to perform the treatment can be relatively small.
  • the number of transistors of the platform of processing is less than 10000 per computing unit, including the associated register unit without communication memory.
  • the platform is provided, preferably directly, specific formatted data calculated from generic formatted data, these generic formatted data including first data describing at least one sequence of generic operations, the calculation specific formatted data being performed taking into account a basic information flow mode in the platform and specific operations from the generic operations, these specific operations forming the sequence of specific operations to be performed on an object during its processing in the platform.
  • Generic operations are operations that apply to logical blocks, that is to abstract entities, without notion of size or shape, composed of basic information, and may constitute all or part of the object.
  • generic formatted data is digital data for describing a processing to be performed on an object by a data processing platform, regardless of the platform itself.
  • the specific formatted data can be provided directly or indirectly by using a compiler to generate a platform-specific binary from the specific formatted data.
  • the generic operations comprise at least one elementary generic operation included in the group comprising: the addition of logic blocks and / or parameters, the subtraction of logic blocks and / or parameters, the calculation of the absolute value of the difference between logical blocks, the multiplication of logical blocks and / or parameters, the maximum among at least two logical blocks and / or parameters, the minimum of at least two logical blocks and / or parameters, the application of a correspondence table, the conditional choice of logical blocks and / or parameters, this choice being made as follows: if a> b we choose c, otherwise we choose d, with a, b, c and d which are logical blocks and / or parameters, the histogram of a block logic, the scaling of a logic block, and an operation producing a block containing at least one coordinate.
  • the elementary information is represented by fixed-point numeric values, and wherein the elementary generic operations include offset operations, a saturation operation, and / or at least one elementary generic operation combined with this saturation operation. .
  • the object to be processed is an image
  • the elementary information is pixels of this image.
  • the processing platform is, for example, part of an image capture and / or rendering apparatus
  • the operations implement parameters whose values depend on the sequence of operations and / or of the processing platform and / or the object to be processed, these parameter values being related to the characteristics of the optics and / or the sensor and / or the imager and / or the electronics and / or the software of the camera for capturing and / or restoring the image.
  • the characteristics may be, for example, fixed intrinsic characteristics for all objects or variables depending on the object, for example noise characteristics that vary according to the gain of a sensor.
  • the characteristics may be identical for all the elementary or variable information depending on the absolute position of the elementary information, for example the fuzziness characteristics of the optics.
  • the object to be processed is a digitized sound signal and the elementary information is the sound samples of this signal, or else the object to be process is a digital mesh and the elementary information is the spatial and temporal information characterizing each point of the mesh.
  • the invention also relates to a processor (s) and memory (s) platform for processing an object (55) consisting of elementary information of the same kind (54, 56, 58, 60, 154, 156, 158, and 160), comprising means for decomposing the object to be treated into at least two sub-objects (50, 51, 52 and 53) consisting of N elementary information each (54, 56, 58, 154, 156, 158), all the sub-objects (50, 51, 52 and 53) having the same number N of elementary information and means for performing at least one sequence of specific operations on the elementary information of each sub-object (50, 51, 52, 53), these processing means further comprising means for performing, for each sub-object, at least N times each specific operation, so as, on the one hand, to involve at least once each elementary information of each sub-object, and secondly to produce N results for each specific operation, the average wherein the processing set is such that at least one specific operation (62) of the sequence of specific operations implements, directly or indirectly, at least once during its N applications
  • the object to be processed comprises DO dimensions
  • the sub-objects comprise DSO dimensions selected from the DO dimensions of the object
  • the means for decomposing the object are such that, according to at least one dimension of the sub-object, object, the sub-objects have no overlap.
  • the specific operations are performed by calculation units chained according to at least one circular chaining according to the dimension according to which the sub-objects have no overlap.
  • the sub-objects have no overlap in any dimension.
  • the platform comprises at least one inter-object communication memory for storing the elementary information and / or results of specific operations carried out thinking of the processing of a sub-object, and used for the processing of another sub-object. -object.
  • the platform comprises means for performing a sequence of specific operations comprising only a specific operation implementing the same data during the processing of the object.
  • the object comprises DO dimensions
  • the elementary information is received in the platform according to a dimension DE of the object and then according to the other dimensions
  • the sub-objects comprise DSO dimensions selected from the DO dimensions of the object and comprising the dimension DE
  • the platform is such that an inner loop of the sub-objects, included in the processing, is performed according to the dimension DE.
  • the object comprises DO dimensions
  • the elementary information is received in the platform according to a dimension DE of the object and, according to the other dimensions, the sub-objects comprise the DO dimensions of the object or DO-I dimensions selected from the DO dimensions of the object, the dimension DE not being understood
  • the platform is such that an internal loop of travel of the subobjects included in the processing is performed according to the dimension DE.
  • the means for breaking down the object to be processed are such that the size of the sub-objects in each dimension is determined according to the size of the object and / or the bit rate of the elementary information received by the platform, and / or the speed of calculation of the platform and / or the size and the speed of at least one memory of the platform.
  • the platform comprises Q calculation units calculating the same specific operation simultaneously, and the platform further comprises means for performing the same operation. minus a sequence of specific operations comprising at least one specific operation of selection, this specific selection operation performing the selection of a parameter value among C parameter values at the same time on the Q calculation units in a differentiated manner by processor, according to at least one elementary information and / or at least one specific operation result and / or at least one parameter value.
  • the platform comprises Q calculation units calculating the same specific operation simultaneously, and further comprises means for performing at least one sequence of specific operations comprising at least one specific selection operation, this specific selection operation performing the same operation. selecting one of C given at the same time on the Q calculation units in a differentiated manner by processor, as a function of at least one elementary information and / or at least one specific operation result and / or at least one parameter value.
  • the platform includes means for performing a sequence of specific operations including at least one specific positional operation, and, the object having DO dimensions, this specific positional operation producing position information according to one of the DO dimensions.
  • the platform comprises means for performing a sequence of specific operations comprising at least one specific operation producing a relative position as a function of at least one elementary information and / or at least one specific operation result and / or at least one parameter value.
  • the platform comprises Q calculation units for performing at least a portion of the specific operations, Q being equal to N or a submultiple of N.
  • the number of computation units Q is different from N, and wherein the processing of the sub-object comprises a single internal loop of N / Q iterations.
  • the platform is such that the
  • the platform comprises means for the N results from the same specific operation to be calculated by the same calculation unit.
  • the platform comprises means, when at least one specific operation implementing at least one parameter, to perform this specific operation, and the platform further comprises a computing unit having access to a memory unit containing a part of the values of the parameters, the platform being such that this part being determined according to the specific operations performed by this calculation unit.
  • the platform comprises means so that, when at least one specific operation implements at least one parameter, this parameter is a function of the position of the sub-object in an object to be processed.
  • the platform comprises chained calculation units.
  • the platform comprises computation units chained in one-dimensional chaining.
  • the platform comprises computation units chained according to at least one circular chaining.
  • This chaining may, in addition, in one embodiment, include at least one queue.
  • the platform comprises computation units chained according to at least one circular chaining for each dimension of the sub-object.
  • the circular chaining (s) for each particular dimension D1 of the sub-object also comprise at least one shared queue, or not between the circular chaining (s) for the particular dimension D1 of the under object.
  • the platform comprises computation units chained according to at least one determined dimension DD of the sub object by means of a circular chaining CCI.
  • the circular chaining further comprises at least one file; and the platform is such that for each application of a specific instruction, the result of this application in a first calculation unit UCl is transmitted to a calculation unit UC2 or file which follows said first calculation unit UCl according to said chaining.
  • the platform comprises at least one memory for storing the results of specific operations used during the sub-processing of another sub-object according to the relative position of said other sub object with respect to said sub object.
  • the platform comprises computation units chained according to at least one circular chaining, and means for allocating the operations specific to the calculation units according to the chaining of the calculation units and the sequence
  • the platform comprises means for the order and / or the nature of the specific operations to be modifiable (s).
  • the platform includes hardwired computing units for performing the specific operations according to at least one predetermined sequence of specific operations.
  • the platform comprises at least one calculation unit with a limited capacity memory unit for storing elementary information and / or specific operation results, this memory containing at most sixteen basic information and / or results. specific operations.
  • the platform comprises at least one computing unit having access to a communication memory unit, containing elementary information and / or results of specific operations from other sub-objects.
  • the platform is such that the communication memory unit has an access rate less than 0.3 * N access / sub-object / specific operation.
  • the platform is in particular integrated in a mobile phone, and comprises means for the value of Q to be set to 1 and for the value of N to be between 2 and 16.
  • the platform comprises at least two identical calculation units simultaneously performing at least one specific operation.
  • the platform includes means for at least a portion of the results of specific operations to be stored in memory at an address of the form.
  • Base address + offset or “base address + modulo offset (buffer size)", the offset being constant for all results of the same specific operation.
  • the platform includes means for changing the base address each time a sub-object is changed in the processing process.
  • the platform includes means for at least a portion of the results of specific operations to be stored in memory at a predetermined address for all results of the same operation.
  • the platform comprises at least one calculation unit provided with a memory, and in which the number of transistors is less than 10,000 per calculation unit, including the associated memory unit.
  • the platform comprises means for receiving, preferably directly, specific formatted data computed from generic formatted data, these generic formatted data comprising first data describing at least one generic operation sequence, the calculation specific formatted data being performed taking into account a basic information pathway mode in the platform and specific operations derived from the generic operations, these specific operations forming a sequence of specific operations, and the platform comprising means for performing this sequence of specific operations on an object.
  • the platform comprises means for processing an object consisting of an image, the elementary information being pixels of this image.
  • the platform is part of an image capture and / or rendering apparatus, the operations implementing parameters whose values depend on the sequence of operations and / or that platform and / or the object to be processed, these parameter values being related to the characteristics of the optics and / or the sensor and / or the imager and / or the electronics and / or the software of the capture apparatus and / or image restitution.
  • the platform comprises means for processing an object consisting of a digitized sound signal, the elementary information being the sound samples of this signal.
  • the platform comprises means for processing an object consisting of a digital mesh
  • the elementary information is the spatial and temporal information characterizing each point of the mesh.
  • the invention also relates to an object treated by a treatment method according to the method described above.
  • FIGS. 1a, 1b, 1c Id, 1 e and 1e already described, represent examples of decomposition of an image into sub-objects, in accordance with the invention
  • FIG. 2 represents a device using a method according to the invention
  • FIG. 3 represents an example of a sequence of generic operations applied to several logical blocks and a parameter
  • FIG. 4 represents the structure of specific formatted data provided to a platform, in a method according to the invention
  • FIG. 5 represents the application of an operation specific to an object
  • FIGS. 6, 7 and 8 show different architectures of platforms that can process objects according to a method according to the invention
  • FIGS. 9a, 9b and 9c show examples of chaining processors in a platform according to the invention.
  • the device shown in FIG. 2 is used to process an image 22, this image being a set of pixels represented by at least one numerical value.
  • generic data formatted data 12 is provided to digital data processing means 12.
  • This processing means is for example a compiler.
  • the generic formatted data provided by a method according to the invention, includes first and second data that describe generic operation sequences and that provide the relative positions of the logical blocks involved in these generic operations. These first and second data will be illustrated with Figure 3.
  • the processing means 10 also receives, as input, a mode of travel 24 of the elementary information in the platform determined according to the characteristics of a processing platform 20, such as a camera for capturing or restoring images.
  • the processing means 10 provides the processing platform 20 with specific formatted data 18.
  • the specific formatted data contains different types of data, such as data concerning the organization of the pixels in the platform memory, the order in which the pixels are processed by the platform or the grouping of the operations performed by the platform.
  • FIG. 3 show an example of generic formatted data in the form of a sequence of generic operations applied to a logic block B1. This sequence comprises three generic operations. The columns of the array represent in order: the rank of the operation in the sequence, - the name of the generic operation, the logical block (output) on which the result of the generic operation is written.
  • the first input (input 1) of the generic operation which may be a logic block or a parameter, the relative position of the logic block to be used with respect to the input logic block 1, if any, - the second input (input 2) of the generic operation, which may also be a logic block or a parameter, and the relative position of the logic block to be used with respect to the input logic block 2, if any.
  • the information in the "relative position" columns is the information present in the second data provided to a processing means by a method according to the invention.
  • the second data relates to the relative position, according to at least one dimension of the object, in particular spatial and / or temporal, of the blocks and / or parameters with respect to each other, and / or relating to the relative scale, according to at least one dimension of the particular spatial and / or temporal object, logical blocks and / or parameters with respect to each other.
  • this information is in the form "left” and "right” to be understandable, but in fact, in generic formatted data, it can also be encoded by numeric values such as (0; 1) and / or by functions such as
  • a generic operation makes it possible to obtain a logical block consisting of the absolute position according to one dimension of the object
  • another generic operation known as indirection makes it possible to obtain a block by displacement and / or scaling. indicated by a second block from a third block.
  • Table 4 is only an example of coding, the first data and second data can be encoded in various ways in tabular form, but also in symbolic form, in graphic form or in any other form.
  • the first logic block used in this sequence of operations is a logic block B1 (51).
  • the first generic operation is an addition (52) between the left-shifted logic block B1 (51g), and the right-shifted logic block B (5Id).
  • the second operation (54) is a transformation of the block B2 (53) with respect to a table. This operation therefore has the B2 block (53) and a Param1 parameter (55) which represents the modification table.
  • the third and last operation (57) of this sequence is a multiplication of logical blocks.
  • the logic block B4 (58) is thus the block obtained at the end of the sequence of generic operations.
  • the generic formatted data in the example in Table 4 are independent of the platform, the decomposition of the object into subobjects, the way in which the elementary information of the object is browsed, and the order in which the basic information will be processed in the platform, as well as the organization in memory. Indeed, the generic formatted data of table 1 can be translated in various ways into specific formatted data or into code for the platform, for example, without the list being limiting, according to the following translations.
  • a first example of a translation that is not optimal in terms of memory and computation time makes it possible to illustrate a simple translation without going through a decomposition into sub-objects:
  • a second example of translation shows that the size of the memory used can be decreased without changing the generic formatted data. Indeed, in the first example, 4 physical blocks of size close to the image are used. Only 2 physical blocks can be used using the same memory for BP2, BP3 and BP4. We obtain the following translation:
  • a third example of translation shows that we can reduce the calculation time without changing the data generic formatted.
  • two physical blocks of size close to the image are used, but the physical block BP2 is written 3 times entirely, the physical block BP1 is read out twice, and the physical block BP2 is read out 2 times entirely. .
  • a fourth example more particularly adapted to a scalar processor with cache, the result is written in the same memory area as the input. This makes it possible to further reduce the size of the memory and to make memory access local, which is very favorable in the case of a cache memory or a paged memory. In this case a sub-object consists of one pixel. We thus obtain the following translation:
  • a fifth example of a translation is particularly suitable for a signal processing processor with a small fast memory and a large slow memory, each sub-object is a rectangle, for example 32x32, or any other value that maximizes the use of the fast memory. rectangles being joined. We thus obtain the following translation:
  • the sub-objects are traveled from left to right and then from top to bottom
  • each sub-object is a rectangle for example 64 horizontal pixels or any other value equal to the size of a vector that the platform knows how to process and store. This translation does not require any memory because a vector is processed at a time. We thus obtain the following translation:
  • each line create a vector VO containing on the right the 2 left pixels of the line Extract of VO and Vl, the vector V2 corresponding to the two pixels of right of VO and the pixels of left of Vl excluding the 2 pixels of right of VO; add V1 and V2 to obtain V2, apply the table to each pixel of V2 to obtain V2, Extract from VO and V1, the vector V3 corresponding to the right pixel of VO and the left pixels of V1 excluding the pixel from the right of VO; copy Vl into VO for the next iteration; multiply V2 by V3 to obtain V2, store the result V2 in the current output physical block.
  • the third, fourth, fifth and sixth examples above correspond to embodiments according to the invention for various platforms with different architectures in particular in terms of memory and parallelism.
  • the invention makes it possible to: reduce the size of the code by using only one loop, and / or
  • the examples produce a smaller image than the input image. You can easily, if necessary, get an output image of the same size as the input image by adding code at the beginning and end of each line to duplicate the edge pixel.
  • FIG. 4 represents the structure of the formatted data specific to the output of a processing means 10, these data being intended to be supplied to a processing platform 20, according to a method according to the invention.
  • the specific formatted data is computed by processing means from generic formatted data provided to the processing means and a mode of browsing of the elementary information in the platform determined by this processing means.
  • the generic formatted data includes first data 36 containing data 38 describing at least one generic operation or sequence of operations to be performed by the processing means.
  • the data Generic formats also include second data 40 relating to the relative position and scale of logical blocks relative to one another for generic operations involving at least two logical blocks. From these generic formatted data and the browse mode 34, the processing means provides data 42 relating to the specific operations, and data 44 relating to the loops. These data 42 and 44 are part of the specific formatted data 30.
  • FIG. 5 illustrates the application of an operation or operation specific to an object.
  • the object 55 is divided into four sub-objects 250, 251, 252 and 253. Each of these sub-objects is composed of six elementary information items.
  • the operation 262 This operation is applied six times on each sub-object (262a, 262b, 262c, 262d, 262e and 262f) so as to produce six results. (264).
  • the operation 262 involves elementary information of another sub-object.
  • the application 262a involves the elementary information 254 and 256
  • the application 262b involves the elementary information 256 and 258
  • the application 262c involves the elementary information 258 and 260, elementary information 260 belonging to sub-object 252.
  • application 262d involves elementary information 154 and 156
  • application 62e involves elementary information 156 and 158
  • application 62f involves the elementary information 158 and 160, the elementary information 160 belonging to the sub-object 252.
  • the processing platform comprises five processors chained in one dimension, that is to say that the result of the calculations coming out of the processor Proc A is used at the input of the processor ProcB, and thus right now.
  • the basic information coming out of the ProcE processor is applied to the input of the ProcA processor.
  • Each of the processors is provided with a memory unit of limited capacity, denoted MemA to MemE. This memory unit is intended to store the values of parameters that are useful for the specific operations performed by the processor, or elementary information or results of operations that are intended to be reused quickly by the processor.
  • the processing consists in applying to the elementary information comprising the object a sequence of eight operations denoted OP1 to 0P8.
  • OP1 to 0P8 In order to process the object, it must be broken down into sub-objects of N elementary information each.
  • OP9 and OP10 are created by processing means located upstream of the platform, so that the number of specific operations to be performed on each sub-object is a multiple of the number of available processors.
  • each operation is assigned to a processor.
  • the processor A realizes OP1 and 0P6, the processor B realizes 0P2 and 0P7, the processor C realizes 0P3 and 0P8,
  • the processor D realizes 0P4 and 0P9, and
  • the processor E realizes 0P5 and OP10.
  • Each processor executes a set of instructions (InsA to InsE) corresponding to the specific operations that have been assigned to it. This assignment also depends on the parameters stored in the limited capacity memories. For example, if OP1 is a multiplication by 2, the memory MemA will contain the number 2.
  • Each line represents one of the 10 specific operations OP1 to OP10.
  • Each column represents one of the elementary information IE1 to IE5 composing each of the sub-objects to be processed.
  • This notation IE1 to IE5 is formal; it does not necessarily correspond to a spatial or temporal reality. Indeed, certain specific operations have as their effect of moving elementary information.
  • the information IE1 processed by the specific operation 0P2 may not be the result of the specific operation OP1 applied to the information IE1, but the result of this specific operation OP1 applied to the information IE2, for example if the specific operation OP1 consists of a shift to the left.
  • Each box in this table contains the name of the processor that performs the specific operation, as well as the time when that specific operation is performed during processing.
  • this table represents only part of the treatment. It is assumed here that all the results of specific operations required have been calculated beforehand in the processing. Thus, it can be seen that at the instant Tl, the processor
  • ProcA performs the operation OP1 on the first information IE1 of the sub-object 1.
  • the other processors are carrying out other operations not shown on this table.
  • each of the processors performs an operation on one of the information of the sub-object 1.
  • the processor ProcA performs, from T6, the operation 0P6.
  • This sequencing is obtained by the one-dimensional circular chaining of the processors.
  • Basic information can therefore transit from one computing unit to another.
  • the elementary information IE1 passes through all the processors to "undergo" the specific operations OP1 to 0P5, then it goes back to the processor ProcA to restart a cycle and "undergo" the operations 0P6 to 0P7.
  • the basic information IE1 initially will not necessarily be the information IE1 at all stages.
  • the platform contains five processors connected to a common memory.
  • a common memory such as a vector processor ("Single Instruction Multiple Data" or SIMD in English).
  • SIMD Single Instruction Multiple Data
  • each processor is individually connected to a small memory that can contain parameters such as a correspondence table T.
  • each processor performs all the specific operations.
  • all processors receive the same set of INS instructions.
  • one of the operations consists of using a table to modify one or more elementary information items.
  • each of the processors has access to its own table, all the tables being identical.
  • each memory is shared by a group of processors.
  • all the processors share the same memory and simultaneously obtain the same parameter; in this case, the application of a correspondence table must be performed by calculation using one or more parameters allowing, for example, to calculate a polynomial.
  • the platform comprises a vector processor composed of five processors connected to a common memory, similar to the vector processor notably present in a computer of personal type (PC) .. They are also all connected to a small memory that can contain parameters, including a correspondence table.
  • each processor performs all the specific operations.
  • all processors receive the same set of INS instructions with data describing all the specific operations to be performed.
  • the operation 0P4 is performed by the processors ProcA to ProcE respectively at times T4 to T8. If it is assumed that the operation 0P5 also uses a table, we will have the same way: the operation 0P5 is performed by the processors ProcA to ProcE respectively at times T9 to T13.
  • FIG. 9a shows an exemplary embodiment of a platform, comprising several circular chaining according to one dimension of the sub-object.
  • the object is a two-dimensional image
  • the sub-object has 4 basic information
  • the platform has 4 processors arranged in a grid of 4 * 1 processors corresponding to a rectangle of 4 processors horizontally and 1 processor vertically.
  • the processors are called from left to right: Pl, P2, P3, and P4.
  • the method also implements in this example 2 files:
  • a horizontal line FHa is connected at the input to an output of P4 and at the output to an input of the processor P1.
  • An output of P1 is connected to an input of P2.
  • An output of P2 is connected to an input of P3, and an output of P3 is connected to an input of P4.
  • a vertical queue FVa is connected at the input to an output of P1, P2, P3 and P4 and at the output to an input of the processor P1, P2, P3 and P4.
  • the sequence of specific operations can implement an arbitrary number of FH horizontal filters while using the 4 processors at 100%. For example, in the case of a specific operation 0S2 performing the calculation of a filter consisting of an addition between the result of a specific operation OS1 and the result of the same specific operation
  • the result of the operation OS1 of the processor P3 is transferred to the processor P4 to be used by 0S2 on P4 in combination with the result of OS1 on P4, the result of the operation OS1 of the processor P2 is transferred to the processor P3 to be used by 0S2 on P3 in combination with the result of OS1 on P3; the result of operation OS1 of processor P1 is transferred to processor P2 to be used by O2 on P2 in combination with the result of
  • Another specific operation 0S3 of the sequence can implement another horizontal filter, the queue allows to recover the data in the right order.
  • the sequence of specific operations can implement an arbitrary number of FV vertical filters while using the 4 processors at 100%,
  • sequence of specific operations can implement an arbitrary number of non-separable filters according to the 2 horizontal and vertical dimensions FVH while using the 4 processors at 100%; for example a 3x3 non-separable filter applied on 4 results of a specific operation 0S4, can twice solicit FVa then six times FHa, to obtain the 8 sets of 4 previously calculated results of 0S4 to be combined with the result set of OS4 of the current subobject; for example, these non-separable filters can be used in combination with vertical and / or horizontal filters, the 2 files make it possible to recover the data in the right order.
  • the sequence of specific operations is such that at least two specific operations distinct from the sequence each produce at least one time during their N applications, a result used for the processing of data. another sub-object.
  • the result used for the processing of another sub-object passes through the file (s).
  • FIG. 9b shows a second example, in which the object is a two-dimensional image, the sub-object comprises 4 elementary information, and the platform comprises 4 processors arranged according to a grid of corresponding 2 * 2 processors. to a rectangle of 2 processors horizontally and 2 processors vertically.
  • the processors are called from left to right: P4 and P5 on the top line and P6 and P7 on the bottom line.
  • the method also implements in this example 2 files:
  • a horizontal line FHb is connected as an input to the output of P3 and P6 and as an output to the input of P1 and P4
  • a vertical queue FVb is connected as an input to an output of P4 and P5 and as an output to an input of the processor P6 and
  • the sequence of specific operations can implement an arbitrary number of vertical and / or horizontal and / or non-separable filters while using the 4 processors at 100%.
  • the platform comprises a single processor P8, connected to a horizontal queue FHc and to a vertical queue FVc. These two files can be used by the processor to store results of specific operations intended to be reused later.
  • the sequence of specific operations can implement an arbitrary number of vertical and / or horizontal and / or non-separable filters while using the 100% processor.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Image Processing (AREA)
  • Hardware Redundancy (AREA)
  • Multi Processors (AREA)

Abstract

L'invention se rapporte à un procédé pour traiter, dans une plate-forme à processeur (s) et mémoire (s), un objet (55) constitué d'informations élémentaires (254, 256, 258, 260, 154, 156, 158, 160) de même nature, ce procédé comprenant l'étape de décomposer l'objet à traiter (255) en au moins deux sous- objets (250, 251, 252 et 253) constitués de N informations élémentaires (254, 256, 258, 154, 156, 158) chacun, tous les sous objets (250, 251, 252 et 253) ayant le même nombre N d'informations élémentaires et, le traitement consistant à effectuer au moins une séquence d'opérations spécifiques sur les informations élémentaires de chaque sous objet, le procédé comprenant en outre l'étape d'effectuer, pour chaque sous objet, au moins N fois chaque opération spécifique , de façon d'une part à faire intervenir au moins une fois chaque information élémentaire de chaque sous objet (250, 251, 252 et 253), et d'autre part à produire N résultats (264) pour chaque opération spécifique, la séquence d'opérations spécifiques étant telle qu'au moins une opération spécifique de la séquence (262) produit, au moins une fois au cours de ses N applications (262a, 262b, 262c, 262d, 262e et 262f ) , un résultat utilisé pour le traitement d'un autre sous objet 260, 160) .

Description

FlROCEDE POUR TRAITER UN OBJET DANS UNE PLATEFORME A PROCESSEUR(S) ET MEMOIRE(S) ET PLATEFORME UTILISANT LE PROCEDE
La présente invention concerne un procédé pour traiter, dans une plateforme à processeur (s) et mémoire (s), un objet constitué d'informations élémentaires. Elle concerne aussi une plateforme utilisant un tel procédé.
Dans la présente description, une information élémentaire est un élément d' information à traiter, représenté par une ou plusieurs valeurs numériques . Ces informations peuvent être codées selon divers types de codage tels que le codage sur 8 bits, le codage sur 10 bits ou encore le codage sur 16 bits signé. Dans le cas où l'objet à traiter est une image, les informations élémentaires seront les pixels de cette image.
Le traitement qui sera appliqué à l'objet dans la plateforme correspond à un algorithme, pouvant intervenir dans différents domaines tels que par exemple le traitement d'image, la compression ou décompression de données, le traitement de son, la modulation et démodulation de signal, la mesure, l'analyse de données, l'indexation ou la recherche dans une base de données, la vision par ordinateur, le traitement graphique, la simulation ou encore tout domaine mettant en œuvre un grand nombre de données . Lorsque l'on souhaite traiter, dans une plateforme à processeur et mémoire, un objet constitué d'informations élémentaires de même nature, on a une grande latitude pour déterminer l'ordre de traitement des informations élémentaires, les boucles, et la séquence d'opération correspondante.
Cependant, les contraintes de taille de code, de temps de calcul, de débit d'accès à la mémoire, de taille de la mémoire, et de régularité, peuvent être contradictoires et il est difficile d'exploiter au mieux le parallélisme d'un plateforme pour un algorithme donné.
Afin de résoudre ce problème, il est connu d'utiliser des librairies de bas niveau capables d'effectuer divers traitements sur des blocs physiques, tels que des convolutions, des multiplications, ou encore l'application de tables de correspondance. Ceci permet de n'optimiser qu'une fois ces librairies pour chaque plateforme. Toutefois, cette méthode présente de nombreux inconvénients :
- la taille des librairies, et donc du code, est importante,
- compte tenu du temps d'appel à des librairies, il est nécessaire d'utiliser des blocs physiques de taille relativement importante, ce qui se traduit par une utilisation mémoire importante, - les boucles internes sur les informations élémentaires se trouvant à l'intérieur des librairies, il n'est pas possible d'optimiser des séquences d'opérations, et les performances sont ainsi limitées, et - les blocs physiques sont stockés en mémoire, ce qui se traduit par une utilisation intensive de la mémoire et beaucoup de temps passé à écrire et lire des données intermédiaires depuis la mémoire . Par ailleurs, les processeurs programmables, par exemple de type processeur scalaire, processeur vectoriel, processeur de traitement du signal ou encore processeur vectoriel, notamment de type SIMD (« Single Instruction Multiple Data ») , permettent d'appliquer un algorithme sur un objet composé d'informations élémentaires et décomposé en blocs, ou sous-objets, c'est-à-dire en groupes d'informations élémentaires .
On applique habituellement chaque opération sur un bloc complet, puis on passe à l'opération suivante sur un bloc qui a pu être réduit en taille. En effet, certaines de ces opérations ont pour effet de réduire la taille des blocs, ayant pour conséquence des effets de bord lors de l'application des opérations suivantes. En conséquence, lorsqu'on souhaite appliquer un algorithme avec un processeur connu, il est nécessaire d'effectuer un grand nombre d'accès mémoire, car on applique une opération à tous les blocs, successivement, avant de passer à l'opération suivante, cette situation entraînant une écriture et une lecture fréquentes dans la mémoire. II est également nécessaire d'utiliser des blocs de grande taille pour réduire effets de bords, et il faut donc disposer d'une mémoire de taille relativement importante pour pouvoir stocker ces blocs de grande taille. En outre, un grand nombre de boucles signifie que le code d'initialisation des boucles et de fin de boucle est présent un grand nombre de fois, ce qui induit une taille de code importante.
En outre, certaines opérations telles que les tables de correspondances, ou l'application d'un déplacement local, se prêtent mal à une implantation sur un processeur vectoriel doté d'un schéma de communication par décalage ou permutation.
Par ailleurs, on a constaté que le code présente des problèmes de régularité, puisque la taille des blocs sur lesquels s'appliquent les opérations varie d'une opération à une autre. Il est donc difficile d'optimiser ce code en terme de mémoire et/ou de temps de calcul, puisque les optimisations sont limitées à une opération par bloc, au lieu de la séquence complète . II est donc très difficile d'optimiser la taille du code, la taille de la mémoire et le nombre d'instructions nécessaires, sans passer un temps considérable pour optimiser chaque combinaison algorithme + plateforme. En effet, chaque plateforme a ses propres caractéristiques, tant en terme de matériel (par exemple nombre et type de processeurs ou taille et type de mémoire), qu'en terme de langage utilisé (C pour un processeur scalaire et assembleur pour un processeur vectoriel) .
L' invention a pour but un procédé permettant de traiter un objet dans une plateforme, en remédiant à au moins un des inconvénients cités précédemment. Notamment, l'invention permet d'optimiser le traitement en terme de taille de code, de temps de calcul, de débit d'accès à la mémoire, de taille de la mémoire. Cette optimisation permet de réduire le temps de calcul d'un algorithme et la consommation électrique nécessaires pour une puissance de calcul et une taille mémoire, et donc une surface de silicium, données.
Elle permet également de réaliser une économie sur des caractéristiques matérielles telles que la surface de silicium, et la consommation électrique nécessaires à l'exécution d'un algorithme pour un temps de calcul donné.
Ainsi, l'invention concerne un procédé pour traiter, dans une plateforme à processeur (s) et mémoire (s), un objet constitué d' informations élémentaires de même nature, ce procédé comprenant l'étape de décomposer l'objet à traiter en au moins deux sous-objets constitués de N informations élémentaires chacun, tous les sous-objets ayant le même nombre N d'informations élémentaires et, le traitement consistant à effectuer au moins une séquence d'opérations spécifiques sur les informations élémentaires de chaque sous-objet, le procédé comprenant en outre l'étape d'effectuer, pour chaque sous-objet, au moins N fois chaque opération spécifique, de façon, d'une part, à faire intervenir au moins une fois chaque information élémentaire de chaque sous-objet, et, d'autre part, à produire N résultats pour chaque opération spécifique, la séquence d'opérations spécifiques étant telle qu'au moins une opération spécifique k de la séquence produit au moins une fois au cours de ses N applications, un résultat utilisé pour le traitement d'un autre sous-objet.
De préférence la séquence d'opérations spécifique ne comprend pas de boucle. Dans une réalisation, la plateforme comprend Q processeurs. De préférence, le traitement de chaque sous-objet est réparti sur les Q processeurs, qui effectuent chacun au moins une opération spécifique IS8 de la séquence d'opérations spécifique. De sorte que tous les processeurs sont utilisés pour chaque sous-objet et de sorte qu'un même processeur est utilisé pour l'ensemble des sous-objets. Ainsi, il n'est pas nécessaire d'affecter les sous-objets aux processeurs.
De préférence, lorsqu'une opération spécifique est effectuée par un processeur pour le traitement d'un sous-objet, la même opération spécifique est également effectuée par le même processeur pour le traitement de tous les autres sous-objets. Le traitement est ainsi régulier : les opérations spécifiques sont affectées aux processeurs et réalisées périodiquement ensuite pour chaque sous-traitement de sous-objet. De préférence, l'ensemble des boucles nécessaires au traitement dépendent de la topologie de l'objet et de la plateforme, mais sont indépendantes de la séquence d'opérations spécifiques .
De préférence, les boucles sont imbriquées les unes dans les autres autour de la séquence d'opérations spécifique complète. De cette façon, les boucles encapsulent l'ensemble de la séquence d'opérations spécifique et on ne découpe pas la séquence d'opérations spécifique en sous-séquences entourées chacune de boucles. De la même manière, il est possible de traiter l'objet en traitant un sous-objet à la fois sans qu'il soit nécessaire de stocker l'objet complet ni de stocker l'ensemble des résultats d'une opération spécifique, mais en stockant uniquement de manière temporaire les résultats qui sont nécessaires au traitement d'un autre sous-objet. L'utilisation de la mémoire est ainsi réduite.
De préférence, les sous-objets sont composés d' informations élémentaires contiguës . Ceci permet de mettre en œuvre des chaînages de processeurs comprenant au moins une file. On va maintenant définir la notion de file selon l'invention. Une file permet de transmettre et/ou stocker des informations élémentaires ou des résultats d' opérations spécifiques . Une file peut comporter ou utiliser une mémoire. Une file peut être implémentée à l'aide de un ou plusieurs processus de type FIFO (« First in first out » en anglais) . Une file comporte au moins une entrée et au moins une sortie.
- Une file peut être connectée fonctionnellement par tout moyen à une unité de calcul en entrée et une unité de calcul en sortie.
- Une file peut être également connectée fonctionnellement par tout moyen à PR unités de calcul en entrée et PR unités de calcul en sortie, dans ce cas la file se comporte comme PR files reliant chacune une unité de calcul d' entrée avec une unité de calcul en sortie.
De préférence, une file permet de gérer de manière indépendante plusieurs flux de données, chaque flux étant associé à une instruction spécifique déterminée.
Dans une réalisation, il est possible de lire et écrire simultanément dans une file. De préférence une file utilise au moins une unité de mémoire permettant de stocker, pour chaque flux, un nombre NF identique de données .
De préférence NF est déterminé en fonction de la disposition relative des sous-objets et du mode de parcours, de sorte que NF-I sous-objets soient traités entre le traitement d'un sous- objet produisant une donnée et le traitement du sous-objet utilisant la donnée. De préférence, un chaînage comprenant des unités de calcul et une file comprend un mécanisme permettant de gérer l'amorçage : la file est initialisée régulièrement, par exemple en début de chaque ligne si la file fait partie d'un chaînage horizontal et l'objet est une image ; tant que la file ne comprend pas NF données, le processeur qui suit la file dans le chaînage, prend en entrée la donnée qu'il envoie en sortie ; ensuite, le processeur qui suit la file dans le chaînage prend en entrée la donnée la plus ancienne dans la file et la retire de la file. De préférence la file permet de sortir les données dans le même ordre qu'elles ont été entrées dans la file. De préférence, le chaînage circulaire est unidirectionnel. De préférence, le chaînage circulaire est tel qu'il y a un seul lien en entrée et un seul lien en sortie par unité de calcul .
L'utilisation d'au moins une file permet ainsi de transmettre les résultats d'opérations spécifiques nécessaires au calcul d'au moins un autre sous-objet.
Une file est, par exemple, mise en œuvre à l'aide d'un microprocesseur.
Il est à noter que, dans toute la description, les termes « unité de calcul » et « processeur » ont la même signification. Dans une réalisation, pour traiter un sous-objet composé de N informations élémentaires, chacune des opérations spécifiques de la séquence est effectuée N fois au total et N/Q fois par chacun des Q processeurs. Dans le cas où la séquence d'opérations spécifique comprend des branchements conditionnels, chaque processeur effectue la partie de la séquence tenant compte de ces branchements conditionnels.
Dans une réalisation, les sous-objets n'ont pas de recouvrement selon au moins une dimension. De sorte qu'au moins un résultat d'opération spécifique produit lors du traitement d'un sous-objet est utilisé lors du traitement d'un autre sous- objet .
De préférence, les sous-objets n'ont de recouvrement selon aucune dimension. De sorte que l'on peut utiliser chacun des processeurs à 100% sans répéter de calcul.
De préférence, la séquence d'opérations spécifiques est telle qu'au moins une opération spécifique k de la séquence produit au moins une fois au cours de ses N applications, un résultat utilisé pour le traitement d'un autre sous-objet. De préférence, dans le cas où il y a plusieurs chaînages circulaires selon une même dimension du sous-objet (notamment lorsque les processeurs sont disposés selon une grille) , la file est partagée entre tous les chaînages circulaires selon la même dimension. De préférence, il y a exactement une file par dimension du sous-objet, et chaque file est partagée entre tous les chaînages circulaires selon la même dimension. De sorte que la communication entre les processeurs est particulièrement simple. De sorte que l'organisation de la mémoire est particulièrement simple.
L'invention permet également d'obtenir, pour un algorithme donné, une performance proportionnelle au nombre de processeurs, sans changer l'algorithme ni la taille mémoire, et tout en utilisant des processeurs de petite taille. Ainsi, l'invention permet de rendre disponible, sur un composant, une puissance de calcul de plusieurs dizaines de milliard d' opérations par seconde par mm2 , pour un composant gravé avec un procédé de 0.09μ. Ces densités nécessitent habituellement une architecture câblée optimisée, donc longue à développer, et ne présentant aucune flexibilité pour changer d'algorithme. Au contraire, l'invention permet de programmer tout algorithme avec une très grande facilité et donc en un temps très court.
Ceci rend en outre atteignable, sur un seul composant, des performances se comptant en milliers de milliards d'opérations par seconde.
A cet effet, l'invention permet de rendre régulier un traitement composé d' opérations présentant des effets de bords .
Les objets traités par un procédé tel que celui décrit ci-dessus sont de préférence des images brutes (de type « raw ») avant opération de dématriçage (« demosaicing ») , auquel cas :
- dans une variante, l'information élémentaire est un pixel représenté par une valeur numérique correspondant, selon la position absolue du pixel, par exemple à du rouge, à du vert ou à du bleu
- dans une autre variante, une information élémentaire est un groupe de pixels (par exemple un groupe de 2*2 pixels vert, rouge, bleu, vert correspondant à un « Bayer ») représenté par une valeur numérique par pixel .
Les objets peuvent également être des images visibles, auquel cas l'information élémentaire est un pixel représenté, par exemple, par trois valeurs numériques, chacune des valeurs représentant une couleur, par exemple le rouge, le vert et le bleu.
Les objets peuvent également être des séquences d'images, notamment brutes ou visibles, auquel cas l'information élémentaire est un pixel d' une image de la séquence d' images . Les objets correspondent donc, par exemple, à des vidéos.
Dans le cas où l'objet est une image, l'image peut être issue d'un appareil de capture d'image et/ou destinée à un appareil de restitution d' images : - Un appareil de capture d'images est, par exemple, un appareil photo jetable, un appareil photo numérique, un appareil reflex (numérique ou non) , un scanner, un fax, un endoscope, une caméra, un caméscope, une caméra de surveillance, un jouet, une caméra ou un appareil photo intégré ou relié à un téléphone, à un assistant personnel ou à un ordinateur, une caméra thermique, un appareil d'échographie, un appareil d'imagerie IRM (résonance magnétique) , un appareil de radiographie à rayons X.
Un appareil de restitution d'images est, par exemple, un écran, un projecteur, un téléviseur, des lunettes de réalité virtuelle, ou une imprimante.
- Un appareil de capture et de restitution d'images, est, par exemple, un scanner/fax/imprimante, un mini lab d'impression photos, un appareil de vidéo conférence.
La plateforme de traitement peut prendre diverses formes selon l'application. A titre d'exemple, dans le cas où l'objet est une image, on citera notamment le cas où la plateforme de traitement est intégrée à l'un des appareils suivants : - Un appareil de capture d'images qui produit des images traitées, par exemple un appareil photo numérique qui intègre une plateforme de traitement.
- Un appareil de restitution d' images qui affiche ou imprime des images traitées, par exemple un projecteur vidéo ou une imprimante incluant une plateforme de traitement.
- Un appareil mixte qui corrige les défauts de ses éléments, par exemple un scanner/imprimante/télécopieur incluant une plateforme de traitement.
- Un appareil de capture d'image professionnel qui produit des images traitées, par exemple un endoscope incluant une plateforme de traitement.
La plateforme de traitement peut être déportée en tout ou partie sur un serveur. Un algorithme, ou un traitement d'objet, correspond, par exemple, sans que la liste soit limitative dans le cas où l'objet est une image à : un calcul, notamment de statistiques, pour une balance des blancs, et/ou
- un calcul, notamment de statistiques, pour une exposition automatique, et/ou
- un calcul, notamment de statistiques, pour une mise au point automatique, et/ou - un calcul, notamment de statistiques, pour une amélioration de contraste automatique, et/ou
- une conversion image brute en image visible (« image pipe » ou « Image Signal Processing (ISP) » en anglais) , et/ou
-une correction de défauts d'optique, et/ou - une amélioration de profondeur de champ, et/ou
- un traitement tel que décrit dans la demande de brevet PCT/FR2006/050022 « Procédé de réalisation d'un appareil de capture et/ou de restitution d' image, et appareil obtenu par ce procédé » et/ou dans la demande de brevet PCT/FR2006/050197 pour « Procédé pour commander une action, notamment une modification de netteté, à partir d'une image numérique en couleurs , et/ou
- une correction de défauts de capteur, et/ou -une correction de défauts d'imageur, et/ou
-un traitement notamment d'amélioration de netteté, et/ou
-un traitement, notamment d'amélioration de rendu couleur, et/ou - un traitement, notamment d'amélioration de rendu du contraste, et/ou
-un traitement, notamment d'amélioration de rendu des détails, et/ou
- une réduction de bruit, et/ou - une mesure, et/ou - une compression, et/ou
- une décompression, et/ou
- une interpolation ou zoom, et/ou
- un scan, et/ou - un effet spécial .
Selon l'invention, le traitement appliqué à l'objet peut être constitué d'une séquence d'opérations, également appelées opérations spécifiques . Les résultats des opérations spécifiques sont également appelés informations élémentaires et peuvent, ou non, être du même type que les informations élémentaires de l'objet.
Les sous-objets sont des ensembles d'informations élémentaires ayant une forme et une taille qui, selon les cas, dépendent des caractéristiques de la plateforme, notamment de la taille et du type de mémoire ainsi que, dans le cas d'un processeur vectoriel, de la taille d'un vecteur, mais aussi des caractéristiques de l'objet à traiter.
Dans une réalisation, les objets et sous-objets, ainsi que les blocs logiques ont plusieurs dimensions .
Les dimensions des sous-objets et des blocs logiques correspondent à toutes ou une partie des dimensions de l'objet. Les dimensions peuvent être de diverses natures, notamment :
-spatiale, par exemple une distance, un angle ou un parcours dans un maillage,
-temporelle,
-fréquentielle, par exemple couleur, une fréquence, une bande de fréquence
-une phase,
-une décomposition selon une base d'espace vectoriel, par exemple une décomposition en ondelettes, ou une décomposition en poids forts, poids faibles, -de manière générale, les dimensions de tout espace de topologie quelconque.
La liste suivante, non limitative, donne des exemples d'objets avec leurs dimensions :
-une image fixe avec 2 dimensions, correspondant chacune à des distances, notamment mesurées en pixels,
-une image fixe brute avec 2 dimensions, correspondant chacune à des distances, les pixels étant chacun doté d'une couleur, par exemple rouge, vert ou bleu,
-une image fixe en couleur, avec 2 dimensions, correspondant chacune à des distances, et une dimension correspondant à une fréquence représentant le canal couleur, par exemple rouge/vert/bleu, -une image animée avec 3 dimensions, correspondant, pour 2 d'entre elles, à des distances, notamment mesurées en pixels et, pour une d'entre elles, au temps,
-une image en relief avec 3 dimensions, correspondant à des distances, -une image en relief avec 3 dimensions, correspondant, pour 2 d'entre elles, à des distances, et pour la troisième à un angle de vue,
-une image médicale avec des dimensions de distance et, éventuellement des dimensions de canal, -un hologramme avec des dimensions d'angle de vue,
-de manière plus générale, une image des dimensions de distance et/ou d'angle et/ou temporelle, et/ou fréquentielle, -un son avec une dimension correspondant au temps, -un son avec 2 dimensions, correspondant au temps et à un canal,
-un signal modulé avec une ou plusieurs dimensions, correspondant au temps et, éventuellement, une fréquence et, éventuellement, une position dans l'espace ou un angle,
-la modulation et démodulation de signal, la mesure, l'analyse de données, l'indexation ou la recherche dans une base de données, la vision par ordinateur, le traitement graphique, la simulation représentés par des informations élémentaires disposés selon une ou plusieurs dimensions,
-de manière plus générale, un objet avec une ou plusieurs dimensions.
Selon l'invention, les informations élémentaires d'un objet peuvent avoir une position et/ou une échelle absolue notamment spatiale et/ou temporelle et/ou fréquentielle et/ou dans tout autre dimension de l'objet :
- une information élémentaire d'un objet « son » peut correspondre à une intensité ; dans ce cas, l'information élémentaire a une position absolue correspondant à un instant donné et dans le cas d'un son multicanaux pour un canal donné, - une information élémentaire d'un objet « image » peut correspondre à un pixel ; dans ce cas, l'information élémentaire a une position absolue correspondant à une position dans l'image et, dans le cas d'une image vidéo à un instant donné, - une information élémentaire d' un objet « donnée de simulation » peut correspondre à un état ; dans ce cas, une information élémentaire a une position absolue correspondant à un nœud de maillage et à un instant donné,
- une information élémentaire d'un objet « signal modulé » peut correspondre à une intensité et/ou une phase; dans ce cas, une information élémentaire a une position absolue correspondant à un instant donné et éventuellement une fréquence donnée et éventuellement une position donnée si plusieurs antennes ou émetteurs sont utilisés .
Les positions relatives et les échelles absolues ou relatives, selon au moins une dimension, notamment spatiales et/ou temporelles peuvent correspondre à divers concepts selon la nature de l'objet. Elles s'appliquent entre 2 blocs quelconques, quel que soit leur type (dans le cas d'une image comme décrit plus haut un bloc logique peut être notamment brut, rouge, vert, 8 bits...) .
Dans le cas où l'objet est une image fixe à pixels carrés, la position absolue ou relative peut correspondre, dans une réalisation, à 2 valeurs (verticale et horizontale) et l'échelle absolue ou relative à 2 valeurs (verticale et horizontale) . Les pixels de la ligne du haut d'un objet peuvent avoir comme positions absolues (0 ;0) (0 ;1) (0 ;2) ..., et les pixels de la n ième ligne peuvent avoir comme positions absolues (n ;0) (n ;1) (n ;2) . Dans ce cas, les positions relatives peuvent être codées de la façon suivante : (-1 ; 0) indique en haut, (0 ; 0) correspond à un déplacement nul, (0 ;1) indique à droite et (2 ; -2) indique 2 pixels au dessous et 2 à gauche ; une échelle relative de (0,5 ;0,5) correspond alors à une résolution de moitié dans chaque direction.
De manière plus générale, une combinaison de déplacement relatif et d' échelle relative peut être codée à l'aide de 2 fonctions f et g de la façon suivante : (f(x ;y) ;g(x ;y))) pour chaque pixel de position absolue x,y. II est à noter qu'une règle d'arrondi est nécessaire afin de prendre, par exemple, le pixel le plus proche. Ainsi : une position relative au-dessus se code avec f (x ;y)= -1 et g(x ;y)=0
- une échelle relative de 0,7 se code avec f (x ;y) = 0,7*(x-x0) et g(x ;y) =0, 7* (y-yO) ; xO et yO correspondant à un paramètre relatif à une position absolue;
- une correction de distorsion se code avec f et g correspondant au champ de distorsion
- un changement de format YUV 4 :2 :2, à savoir YYUV à partir des informations de luminance et de chrominance Y, U et V séparées, peut utiliser pour obtenir Yl Y2 xx xx Y3 Y4 xx xx ... à partir de Yl Y2 Y3 Y4 ... les fonctions suivantes f (x ; y) = x- xO)*O,5 si x pair et (x+l-xO)*O,5 si x-xO impair, et f (y) =y-yθ ; xO et yO correspondant à un paramètre relatif à une position absolue; La liste suivante, non limitative, donne d'autres exemples de réalisation avec divers types d'objets:
- Dans le cas où l'objet est une image fixe à pixels hexagonaux disposés par ligne, deux lignes successives étant décalées d'un demi-pixel, la position absolue ou relative peut correspondre à 2 valeurs (verticale et horizontale) et l'échelle absolue ou relative à 2 valeurs (verticale et horizontale) ; les pixels de la ligne du haut d'un objet peuvent avoir comme positions absolues (0 ;0) (0 ;1) (0 ;2) ..., et les pixels de la n ième ligne peuvent avoir comme positions absolues (n ;0,5) (n ;1,5) (n ;2,5) si la ligne est impaire, et (n ;0) (n ;1) (n ;2) si la ligne est paire. La position relative peut correspondre à 2 valeurs (verticale et horizontale) , par exemple (-0,5 ; 0,5) indique en haut à droite, (0,1) indique à droite et (-0,5 ; 1,5) indique le pixel situé à droite du pixel en haut à droite. Une échelle relative de (0,5 ;0,5) correspond alors à une résolution de moitié dans chaque direction. De même, une combinaison de déplacement relatif et d'échelle relative peut être codée à l'aide de 2 fonctions f et g de la façon suivante : (f(x ;γ) ;g(x ;γ))) pour chaque pixel de position absolue x,y. Il est à noter qu'une règle d'arrondi est nécessaire afin de prendre, par exemple, le pixel le plus proche.
- Dans le cas où l'objet est une image animée à pixels carrés, la position absolue ou relative peut correspondre à 3 valeurs (verticale, horizontale et temporelle) , par exemple (- 1 ; 0 ;0) indique le pixel situé au-dessus dans la même image, (0 ; 0 ; -1) indique le pixel ayant la même position dans l' image précédente et (2 ; -2, -1) indique le pixel situé 2 pixels au dessous et 2 à gauche dans l'image précédente. De même, une combinaison de déplacement relatif et d'échelle relative peut être codée à l'aide de 3 fonctions f, g, h de la façon suivante : (f(x ;γ ;t) ;g(x ;y ;t)) ; h(x ;y ;t)) pour chaque pixel de position absolue x,y à l'instant t. Il est à noter qu'une règle d'arrondi est nécessaire afin de prendre, par exemple, le pixel le plus proche. - Dans le cas où l'objet est un son monocanal, la position absolue ou relative peut correspondre à 1 valeur
(temporelle), par exemple (-1) indique l'instant précédent, et (2) indique 2 instants après, une fonction f(t) permet alors de coder un déplacement et échelle relatifs . Une règle d' arrondi étant utilisée pour prendre l'instant le plus proche.
- Dans le cas où l'objet est un son multi canal, la position absolue ou relative peut correspondre à 2 valeurs
(temporelle, canal), par exemple (-1, 0) indique l'instant précédent du même canal, et (2,1) indique 2 instants après du canal suivant, ordonnés par exemple spatialement de façon circulaire. De même, une combinaison de déplacement relatif et d'échelle relative peut être codée à l'aide de 2 fonctions f, g de la façon suivante : (f(t ;c) ;g(t ;c)) pour chaque échantillon sonore de position à l'instant t pour le canal c. Il est à noter qu'une règle d'arrondi est nécessaire afin de prendre, par exemple, l'instant et le canal le plus proche.
Dans le cas où l'objet est un maillage de simulation, la position absolue ou relative peut correspondre à n valeurs correspondant chacune à une dimension spatiale ou temporelle, fonction de la topologie du maillage. De même, une combinaison de déplacement relatif et d' échelle relative peut être codée à l'aide de n fonctions. Il est à noter qu'une règle d'arrondi est nécessaire afin de prendre par exemple le nœud et l'instant le plus proche.
- Dans le cas où l'objet est un signal modulé, la position absolue ou relative peut correspondre à n valeurs correspondant respectivement au temps, le cas échéant au canal fréquentiel (émission ou réception sur plusieurs fréquences) et le cas échéant (plusieurs émetteurs ou récepteurs disposés spatialement) à une dimension spatiale. De même, une combinaison de déplacement relatif et d'échelle relative peut être codée à l'aide de n fonctions, et une règle d'arrondi doit être choisie. - Dans le cas où l'objet est un ensemble de mesures, la position absolue ou relative peut correspondre à n valeurs correspondant chacune à une dimension de l'objet qui, selon le cas, peuvent être de nature temporelle, spatiale, fréquentielle, phase ou autre. De même, une combinaison de déplacement relatif et d'échelle relative peut être codée à l'aide de n fonctions et une règle d'arrondi doit être choisie.
- Dans le cas général où l'objet est de dimension n, la position absolue ou relative peut correspondre à n valeurs correspondant chacune à une dimension de l'objet qui, selon le cas, peuvent être de nature temporelle, spatiale, fréquentielle, phase ou autre. De même, une combinaison de déplacement relatif et d' échelle relative peut être codée à l'aide de n fonctions et une règle d'arrondi doit être choisie.
Différents types de sous-objets sans recouvrement sont illustrés par les figures la à Id. Sur ces figures, on voit qu'une même image peut être découpée en lignes (lignes 90, 91, 92 et 93 sur la figure la), en colonnes (colonnes 94, 95, 96 et 97 sur la figure Ib), en sous-objets d'une tout autre forme (formes 70, 71, 72 et 73 sur la figure Ic) , ou encore en rectangles (formes 60, 61, 62, 63, 64, 65, 66 et 67 sur la figure Id) . Dans le cas où les sous-objets sont sans recouvrement, il faut accéder à des informations élémentaires d'un moins un autre sous-objet pour traiter les informations élémentaires d'un sous-objet sans perdre de bord lors du calcul de filtres .
Ainsi, dans une réalisation, l'objet à traiter ayant DO dimensions, et étant décomposé en sous-objets ayant DSO dimensions sélectionnées parmi les DO dimensions de l'objet, la décomposition de l'objet est telle que, selon au moins une dimension du sous-objet, les sous-objets n'ont pas de recouvrement . Dans cette configuration, il n'est pas nécessaire de recalculer les instructions spécifiques mettant en œuvre, directement ou indirectement, des informations élémentaires appartenant à deux sous-objets. Dans une réalisation préférentielle, le procédé comprend en outre l'étape d'effectuer, pour chaque sous objet, exactement N fois chaque opération spécifique. De préférence on choisira DSO égal à DO.
Dans une réalisation, le procédé comprend en outre l'étape d'ajouter au moins une informations élémentaire à l'objet de sorte qu'il puisse être décomposé en sous-objet sans recouvrement .
La décomposition en sous-objets peut également dépendre de la séquence d'opérations à effectuer sur l'objet, notamment du nombre et du type de filtres, horizontaux ou verticaux, présents dans cette séquence.
Par ailleurs, lorsque certaines des opérations spécifiques de la séquence ont des effets de bord, il est nécessaire, pour qu'aucune information élémentaire ne soit perdue lors de l'exécution de l'algorithme, de décomposer l'image en sous-objets ayant un recouvrement non nul. Cette configuration est illustrée sur les figures le et If : la figure le représente un sous-objet composé de 6x6 informations élémentaires, dans le cas où la séquence d'opérations perd un pixel sur chaque bord, et la figure If représente un objet comprenant 100 informations élémentaires.
Sur cette figure le, on voit que les sous-objets sont quatre rectangles 80, 82, 83 et 84 contenant chacun 36 informations élémentaires. Le rectangle 80 est constitué des 36 informations élémentaires situées en haut à gauche dans l'image, et le rectangle 82 est constitué des 36 informations élémentaires en haut à droite de l'image. Ainsi, les 8 informations élémentaires 86 sont communes aux deux sous-objets 80 et 82. De même, les 8 informations élémentaires 85 sont communes aux deux sous-objets 80 et 83. De même, les 8 informations élémentaires 88 sont communes aux deux sous-objets 82 et 84. De même, les 8 informations élémentaires 89 sont communes aux deux sous-objets 83 et 84 Enfin, les 4 informations élémentaires 87 sont communes aux quatre sous-objets 80, 82, 83 et 84.
Dans le cas où l'objet est une image, dans une réalisation l'image est décomposé en sous-objets rectangulaires juxtaposés, les sous-objets sont traités, par exemple, de gauche à droite puis de haut en bas. Selon la plateforme, les sous- objets sont choisis et stockés selon l'une des façons suivantes, sans que la liste soit limitative :
- dans le cas d'un processeur de traitement du signal disposant d'une petite mémoire rapide et d'une grosse mémoire lente, la taille des sous-objets est choisie pour pouvoir effectuer le traitement d'un sous-objet sans accès à la mémoire lente ; on pourra, par exemple, prendre des sous-objets correspondant à des carrés de 32x32 pixels, le résultat du calcul sur le sous-objet précédent étant transféré en mémoire lente pendant le calcul relatif au sous-objet courant, et pendant le transfert de la mémoire lente vers la mémoire rapide des données nécessaires au calcul relatifs au sous-objet suivant
- dans le cas d'un processeur scalaire disposant d'une petite mémoire cache et d'une grosse mémoire lente, la taille des sous-objets est choisie pour pouvoir effectuer le traitement d'un sous-objet en utilisant la mémoire cache le plus possible ; on pourra, par exemple, prendre des sous-objets correspondant à des carrés de 32x32 pixels ou des sous-objets de 1 pixel ou des sous-objets de 4 pixels (2*2) ou de Nl*2 pixels, notamment dans le cas d'une image brute, de type « raw »
- dans le cas d'un processeur vectoriel, la taille des sous-objets est choisie comme égale à, ou multiple de, la taille d'un vecteur que la plateforme sait traiter et stocker, on pourra, par exemple, prendre des sous-objets correspondant à 64 pixels horizontaux. Dans le cas où l'objet est d'un autre type qu'une image, la décomposition en sous-objet peut être adaptée de manière similaire à la plateforme.
Le procédé selon l'invention permet de régulariser le séquencement des opérations spécifiques effectuées sur les sous- objets, puisqu'on effectue le même nombre N d'opérations à chaque fois. Ainsi, on peut simplifier les architectures matérielles et les algorithmes. Le fait de réaliser N opérations à chaque fois est rendu possible par le fait qu'on fait intervenir, dans la réalisation de ces opérations, des informations élémentaires appartenant à un sous-objet différent de celui sur lequel les opérations sont appliquées .
De cette façon, les informations élémentaires sur lesquelles s'applique l'opération k peuvent appartenir au même sous-objet ou à des sous-objets différents, en fonction du type d' opération spécifique et de la position des informations élémentaires dans les sous-objets.
Ceci permet également d'éviter l'apparition d' « effets de bord » aux limites des différents sous-objets. En effet, le fait de prévoir N opérations spécifiques produisant N résultats à chaque fois oblige à traiter toutes les informations élémentaires, y compris celles se trouvant sur le bord d'un sous-objet. C'est dans ce cas que l'on fait appel, lors de l'exécution des opérations, à des informations élémentaires appartenant aux autres sous-objets.
Par ailleurs, ce procédé permet d'appliquer plusieurs opérations spécifiques successives à un même sous-objet, par exemple une ligne d'une image, avant de passer au sous-objet suivant. Ainsi, le nombre d'accès mémoire peut être limité puisqu'on peut lire une ligne, et lui appliquer plusieurs opérations spécifiques avant d'écrire uniquement les résultats nécessaires au traitement d'autres sous-objets en mémoire et de passer à la ligne suivante. Dans une réalisation, la plateforme comprend au moins une mémoire de communication inter-objet pour stocker les informations élémentaires et/ou résultats d'opérations spécifiques calculés pendant le traitement d'un sous-objet et utilisés pour le traitement d'un autre sous-objet. Ainsi, on réduit les calculs redondants .
Dans une autre réalisation encore, la séquence d'opérations spécifiques ne comporte qu'une seule opération spécifique mettant en oeuvre les mêmes données lors du traitement de l'objet.
Dans la suite de la description, on appellera « données de communication » des informations élémentaires et/ou résultats d'opérations qui sont utilisés pour le traitement de plusieurs sous-objets ou pour plusieurs opérations spécifiques différentes.
De préférence, on choisira les données de communications entre sous-objets de telle façon que leur taille est le nombre de calculs soient minimisés . Par exemple, les données de communication inter-objet selon une dimension comprennent, notamment, les données d'entrée d'un filtre selon cette dimension, ainsi que les données à combiner avec la sortie du filtre, si elles ne sont pas alignées correctement entre elles .
La mémoire de communication inter-objet, c'est-à-dire la mémoire utilisée pour stocker les données de communication inter-objets, est de nature différente selon la durée de stockage nécessaire et le débit. Par exemple, cette mémoire peut consister en des registres et/ou en une mémoire locale, pour la communication selon la dimension de la boucle interne de parcours des sous-objets, et/ou en une mémoire locale et/ou partagée pour la communication selon les autres dimensions . Dans une réalisation de l'invention dans laquelle l'objet comprend DO dimensions, les informations élémentaires sont transmises à la plateforme d'abord selon une dimension sélectionnées DE, puis selon les autres dimensions. Dans cette réalisation, les sous-objets ont DSO dimensions, sélectionnées parmi les DO dimensions de l'objet, et comprenant la dimension DE, et le traitement comprend au moins une boucle interne de parcours des sous-objets effectuée selon la dimension DE.
Une boucle interne correspond à une boucle pour traiter un sous-objet, qui permet de traiter les N données à l'aide de Q processeurs.
Cette réalisation est particulièrement adaptée au cas d'un composant traitant les données « au vol », c'est-à-dire en temps réel à la vitesse d'entrée des informations élémentaires dans la plateforme, en utilisant, pour la communication interobjets, une mémoire située sur le même composant que les unités de calcul utilisées pour le traitement. Ainsi, le coût du composant est réduit, et le débit d'accès à la mémoire est proportionnel au nombre d'unités de calcul. Notamment, cette réalisation est utilisée dans le cas d'un processeur scalaire, ou vectoriel, ou pipeline.
De préférence, les sous-objets sont tels que DSO vaut un, ou DSO vaut deux dans le cas d'une image brute. Dans ce dernier cas, la taille du sous-objet dans la seconde dimension est deux.
De préférence, les opérations spécifiques sont effectuées par des unités de calculs disposées selon la dimension DE.
De préférence, la taille des sous-objets dans chaque dimension est un multiple de la taille de la matrice de processeurs dans la dimension considérée.
De préférence, les DSO dimensions sont la dimension DE, ainsi que les plus petites parmi les DO dimensions pour limiter la mémoire de communication inter-objets nécessaire. De préférence, il n'y a de recouvrement des sous- objets dans aucune des DO dimensions, de sorte que chaque information élémentaire n'est traitée qu'une seule fois ; de sorte que les boucles sont imbriquées, de sorte que le code est compact .
De préférence, aucun calcul n'est refait lors du traitement de 2 sous-objets
De préférence, les boucles de parcours des sous-objet sont imbriquées selon le même ordre que les dimensions selon lesquelles les informations élémentaires arrivent à la plateforme.
Dans une réalisation, dans laquelle l'objet comprend DO dimensions, les informations élémentaires sont transmises à la plateforme selon la dimension DE de l'objet, puis selon les autres dimensions. Dans cette réalisation les sous-objets comprennent les DO dimensions de l'objet ou DO-I dimensions sélectionnées parmi les DO dimensions de l'objet, la dimension DE n'étant pas comprise. Le traitement comprend en outre au moins une boucle interne de parcours des sous-objets effectuée selon la dimension DE.
Dans une autre réalisation, la taille des sous-objets dans chaque dimension est déterminée en fonction de la taille de l'objet, et/ou du débit de transmission des informations élémentaires transmises à la plateforme, et/ou de la vitesse de calcul de la plateforme et/ou de la taille et du débit d'au moins une mémoire de la plateforme .
Cette réalisation est particulièrement adaptée au cas d'un composant traitant les données « au vol » à la vitesse d' entrée des informations élémentaires dans la plateforme en utilisant pour la communication inter objets, une mémoire locale située sur le même composant que les unités de calcul utilisées pour le traitement servant de relais à une mémoire externe partagée plus lente utilisée pour le stockage à long terme des données de communication selon les DO-I une dimensions ne correspondant pas à DE. Dans ce cas, la taille de la mémoire locale augmente avec la taille du sous-objet, le débit avec la mémoire partagée diminue avec la taille du sous-objet et la taille de la mémoire externe augmente avec la taille du sous- objet selon les dimensions autres que la dimension DE, on peut ainsi ajuster la taille des mémoires internes et externes et le débit de la mémoire externe en ajustant la taille du sous-objet. Ainsi, le coût est réduit, le débit avec la mémoire est indépendant de la taille de l'objet, et un composant peut être optimisé pour une taille d'objet et réutilisé avec une mémoire externe pour des objets de taille plus importante.
Cette réalisation est également plus particulièrement adaptée au cas d'un composant traitant les informations élémentaires plus lentement que la vitesse d'entrée des informations élémentaires dans la plateforme, et utilisant une mémoire pour stocker l'objet pendant le traitement. Dans ce cas, on cherche à limiter la taille de la mémoire interne et la vitesse du traitement pour réduire la taille mémoire interne, le nombre d'unités de calcul et le débit mémoire nécessaire.
Cette réalisation s'applique notamment à un processeur scalaire ou vectoriel ou pipeline.
De préférence, les opérations spécifiques sont effectuées par Q unités de calculs disposées une dimension de taille supérieure à Q.
De préférence la taille des sous-objets dans chaque dimension est un multiple de la taille de la matrice de processeurs dans la dimension considérée. De préférence, les DSO dimensions sont, outre la dimension DE, les plus petites parmi les DO dimensions pour limiter la mémoire de communication inter-objets nécessaire.
De préférence, il n'y a de recouvrement des sous- objets dans aucune des DO dimensions, de sorte que chaque information élémentaire peuvent n'être traitées qu'une seule fois. Ainsi, les boucles sont imbriquées et le code est compact. De préférence, il n'y a pas de recouvrement des sous- objets et aucun calcul n'est refait lors du traitement de 2 sous-objets dans les dimensions de taille faible, alors que dans les dimensions de taille importante c'est moins important car les recalculs ont un coût marginal.
De préférence, pendant le calcul du sous-objet courant, on transfère depuis la mémoire locale vers la mémoire externe les données de communication inter-objets produites lors du calcul du sous-objet précédent, et on transfère depuis la mémoire externe vers la mémoire locale les données de communication inter-objets nécessaires pour le calcul du sous- objet suivant. Puisque la boucle interne de parcours des sous- objets se fait selon la dimension DE, les transferts entre mémoire interne et externes ne concernent que les données de communication inter-objets selon les DO-I dimensions qui excluent la dimension DE. Ainsi, la mémoire locale nécessaire est limitée à 3 fois la taille des données de communication inter-objets selon ces DO-I dimensions plus une fois la taille des données de communication inter-objets selon la dimension DE. Par exemple, dans le cas d'un algorithme de traitement d' image, la taille de la mémoire interne nécessaire se limite à quelques centaines ou milliers d'octets pour traiter plusieurs dizaines de millions de pixels par seconde.
De préférence, les données transitent de la façon suivante : les informations élémentaires de l'objet sont stockées dans la mémoire externe, les sous-objets sont lus depuis la mémoire externe lorsqu'au moins un sous-objet est présent en mémoire partagée, les données de communication interobjets selon les DO-I dimensions qui excluent la dimension DE sont lus depuis la mémoire partagée, le résultat du traitement du sous-objet et les données de communication inter-objets selon les DO-I dimensions qui excluent la dimension DE sont écrites en mémoire partagée, lorsque les données complètes selon la dimension utilisée pour la sortie sont présentes en mémoire partagée, elles sont lues en mémoire partagée et disponibles. Le transit est ainsi prédictible, simple et régulier.
De préférence, les boucles de parcours des sous-objets sont imbriqué selon le même ordre que les dimensions selon lesquelles les informations élémentaires arrivent à la plateforme.
Les réalisations qui vont maintenant être décrites dans le cas d'un processeur vectoriel peuvent s'appliquer à tout traitement sur Q unités de calcul consistant en une séquence d'opérations spécifiques simultanément effectuées sur les Q unités de calcul, cette séquence n'étant pas nécessairement appliquée à un objet constitué d'informations élémentaires de même nature. Ces réalisations décrivent une nouvelle façon d' établir une communication entre les différentes unités de calcul, par exemple dans le cas d'un processeur vectoriel.
Dans une réalisation, dans laquelle au moins une partie des opérations spécifiques met en œuvre au moins une valeur de paramètre, et dans laquelle les opérations spécifiques sont effectuées par Q unités de calculs calculant la même opération spécifique simultanément : la séquence d'opérations spécifiques comprend au moins une opération spécifique de sélection qui effectue la sélection d'une valeur de paramètre parmi C valeurs de paramètres en même temps sur les Q unités de calcul. Cette sélection se fait de manière différentiée par processeur, en fonction d'au moins une information élémentaire et/ou d'au moins un résultat d'opération spécifique et/ou d'au moins une valeur de paramètre.
Dans un exemple, C vaut 8.
Pour calculer une table de correspondance on peut, par exemple, utiliser 3 opérations spécifiques de sélection en fonction de la valeur d'entrée X de la table modulo C, pour obtenir a, b et c fonction de X et calculer a*X2+b*X+c, ce qui correspond à un calcul en parallèle de Q fonctions splines .
Pour déterminer un coefficient de filtre d'interpolation correspondant à un déphasage de n/C, on peut utiliser une opération spécifique de sélection en fonction de la valeur d'entrée n donnant le coefficient d'interpolation.
Pour choisir une valeur de paramètre fonction d'une position absolue, on peut calculer une fonction de la position donnant un résultat entre 1 et C, puis utiliser le résultat de ce calcul en entrée d'une opération spécifique de sélection donnant la valeur de paramètre pour la position absolue. On peut ainsi, par exemple, adapter une intensité de déflouage fonction de la position.
Pour choisir une valeur différentiée par canal entrelacé en couleur, résolution..., on peut, de même, calculer une fonction de la position entre 1 et C, puis utiliser le résultat de ce calcul en entrée d'une opération spécifique de sélection donnant la valeur de paramètre pour la position absolue. II est connu d'avoir, dans des processeurs vectoriels, des opérations spécifiques qui choisissent des données soit par décalage soit par permutation, par contre les processeurs vectoriels ne permettent par d'effectuer une indirection sur C données, notamment dans le cas où C est plus petit que Q afin d'optimiser la complexité du processeur.
Dans une réalisation, les Q processeurs correspondant à un vecteur à une dimension, on étend les C constantes dans un registre de Q constantes par duplication : C constantes à droite du vecteur, puis C constantes puis... ; l'opération spécifique de sélection permet de choisir une valeur parmi les C valeurs de gauche de chaque élément du vecteur.
Dans une réalisation, dans laquelle au moins une partie des opérations spécifiques est effectuée par Q unités de calculs calculant la même opération spécifique simultanément : la séquence d'opérations spécifiques comprend au moins une opération spécifique de sélection effectuant la sélection d'une donnée parmi C données en même temps sur les Q unités de calcul de manière différentiée par processeur, en fonction d'un déplacement relatif obtenu à partir d'au moins une information élémentaire et/ou d'au moins un résultat d'opération spécifique et/ou d'au moins une valeur de paramètre.
En pratique, dans l'exemple où les Q unités de calcul sont disposées selon un vecteur chaîné de manière circulaire, chaque unité de calcul peut accéder à des données issues de ses C voisins de gauche de manière simultanée et indépendante.
L' opération spécifique de sélection peut être conditionnelle, afin de permettre le choix parmi un nombre de 2*C, ou plus, de données.
Ainsi, on peut calculer une déformation locale, par exemple une distorsion fonction d'une position, et l'appliquer localement à un vecteur. On peut également aussi combiner des données localement pour faire un filtre, changer d'échelle ou effectuer toute autre opération mettant en œuvre un déplacement local .
Dans une réalisation, le déplacement nécessitant plus de C données peut être décomposé en au moins un déplacement uniforme suivi d'un déplacement local différentié réalisé à l'aide d'au moins une opération de sélection, le déplacement uniforme peut être réalisé, notamment, par application de plusieurs opérations de sélections, ou en utilisant une mémoire de communication.
Dans un exemple, le déplacement relatif est commun à toutes les informations élémentaires d'un sous-objet, et/ou d'un l'objet. Dans un autre exemple, il est différent pour chaque information élémentaire, et peut dépendre, ou non, de la position absolue de l'information élémentaire dans le sous-objet et/ou du sous-objet dans l'objet. De manière plus générale, ce déplacement est le résultat d'un calcul en fonction d'au moins une information élémentaire et/ou d'au moins un résultat d'opération spécifique et/ou d'au moins une valeur de paramètre.
Dans une réalisation, dans laquelle la séquence d' opérations spécifiques comprend au moins une opération spécifique de position et l'objet comporte DO dimensions, l'opération spécifique de position produit une information de position selon une des DO dimensions.
La position peut être, notamment, sans que la liste soit limitative, une position absolue d'information élémentaire dans un objet, une position de sous-objet, une position de processeur modulo C, une position de données multi-échelle dans un sous-objet, une position relative par rapport à une grille ou toute autre position.
Dans une réalisation, la séquence d'opérations spécifiques comprend au moins une opération spécifique produisant une position relative en fonction d' au moins une information élémentaire et/ou d'au moins un résultat d'opération spécifique et/ou d'au moins une valeur de paramètre.
L' opération spécifique de calcul de position relative peut être utilisée avant une opération spécifique de sélection.
Dans un exemple, la position relative est commune à toutes les informations élémentaires appartenant à un sous- objet, et/ou à un l'objet. Dans un autre exemple, elle est différente pour chaque information élémentaire, ou bien elle peut dépendre, ou non, de la position absolue de l'information élémentaire dans le sous-objet et/ou du sous-objet dans l'objet. De manière plus générale, elle peut être le résultat d'un calcul en fonction d' au moins une information élémentaire et/ou d' au moins un résultat d' opération spécifique et/ou d' au moins une valeur de paramètre. La taille des sous-objets, à savoir le nombre N d'informations élémentaires présentes dans chaque objet, est, par exemple, déterminée en fonction de l'architecture de la plateforme utilisée pour le traitement. Ainsi, dans une réalisation, au moins une partie des opérations spécifiques est effectuée par Q unités de calculs, Q étant égal à N ou un sous- multiple de N. Le fait que N soit un multiple de Q permet de rendre le traitement encore plus régulier, puisqu' ainsi toutes les unités de calcul terminent en même temps une même étape de calcul.
Dans une réalisation, le nombre de processeurs Q et le nombre d'informations élémentaires N sont différents, et le traitement du sous-objet comprend une seule boucle interne de N/Q itérations . Ainsi, le traitement est régulier, la mémoire et le nombre de registres utilisés sont minimisés, et la communication à l'intérieur de chaque sous-objet est réalisée de préférence avec des registres .
Dans une réalisation, le nombre d'unités de calcul est de quelques dizaines à quelques centaines, ce qui permet, notamment, de réaliser des calculs de quelques centaines d' opérations sur des images à plusieurs dizaines de millions de pixels par seconde en utilisant des procédés de fabrication de composants de 0.13μ.
Dans une autre réalisation, le nombre d'unités de calcul est de plusieurs milliers à plusieurs millions, et l'invention permet d'utiliser cette puissance de calcul pour traiter des objets en gardant une grande simplicité de programmation et avec une performance proportionnelle au nombre d'unités de calcul.
Pour améliorer encore cette régularité, le nombre P d'opérations spécifiques peut également être un multiple de Q. Généralement, les opérations spécifiques sont déterminées en amont de la plateforme par un compilateur, qui est configuré de telle sorte que, si le nombre d'opérations spécifiques n'est pas un multiple de Q, il crée des opérations spécifiques sans effet afin d'obtenir cette relation (le nombre d'opérations spécifiques est un multiple de Q) . Ainsi, quelle que soit l'affectation des opérations spécifiques aux différentes unités de calculs, le traitement sera parfaitement régulier.
Dans une réalisation de l'invention, les Q unités de calcul présentes dans la plateforme sont identiques .
Certaines opérations spécifiques utilisent des paramètres, et, dans ce cas, on traite également les valeurs de ces paramètres. Ces paramètres peuvent, par exemple, être des coefficients multiplicateurs . Ces paramètres peuvent correspondre, par exemple, sans que la liste soit limitative à : -des coefficients de filtres, et/ou
-des valeurs de saturation, et/ou -des valeurs de décalages, et/ou -des tables de correspondances .
Dans une réalisation, les valeurs des paramètres utilisés par les opérations spécifiques dépendent de la position dans les sous-objets des informations élémentaires mises en jeu, directement ou indirectement, dans ces opérations spécifiques . Par exemple, dans le cas où l'objet à traiter est une image, des défauts peuvent apparaître sur l'image, dus à l'optique ayant servi à faire la prise de vue. Ces défauts ne sont, en général, pas homogènes sur toute l'image, notamment sur les bords.
Dans ce cas, pour compenser ce flou, on n'appliquera pas les mêmes coefficients de compensation sur tous les pixels de l' image .
Par exemple, l'utilisation d'un paramètre commun à toutes les informations élémentaires, pour un filtre, permet d'augmenter la netteté de manière uniforme.
Par exemple, l'utilisation d'un paramètre dépendant de la position absolue des informations élémentaires dans l'objet à traiter, pour un filtre, permet d'augmenter la netteté de manière plus importante au bord afin de compenser un défaut optique.
Par exemple, l'utilisation d'un paramètre dépendant de la position absolue des informations élémentaires dans l'objet à traiter, pour une correction de vignetage, permet d'obtenir une compensation plus forte au bord afin de compenser un défaut optique.
Par exemple, l'utilisation d'un paramètre dépendant de la position absolue des informations élémentaires dans l'objet à traiter pour un dé matriçage (« demosaicing ») permet de traiter différemment les pixels rouges, les pixels verts et les pixels bleus d'une image brute issue d'un capteur.
Par exemple, l'utilisation de secondes données, notamment un déplacement, dépendant de la position absolue des informations élémentaires dans l'objet à traiter pour un calcul d'agrandissement (« zoom ») numérique ou une correction de distorsion, permet d'obtenir les pixels nécessaires au calcul de l'interpolation en chaque point. Ainsi, la valeur d'un paramètre, selon la nature de ce paramètre, peut :
-être constante et intrinsèque à l'algorithme ; dans ce cas la valeur de paramètre peut, notamment, être transmise au moyen de traitement ou à la plateforme, et/ou -dépendre de la provenance ou la destination de l'objet, par exemple dans le cas où l'objet à traiter est une image issue d'un appareil muni d'une optique donnée, la valeur du paramètre peut dépendre du type d'optique qui a un impact sur le niveau de flou dans l'image ; dans ce cas, la valeur de paramètre peut notamment être transmise au moyen de traitement ou à la plateforme, et/ou
-dépendre de l'objet à traiter, par exemple, dans le cas où l'objet à traiter est une image issue d'un capteur, la valeur du paramètre peut dépendre du gain du capteur effectivement utilisé pour capturer ledit objet qui a un impact sur le niveau de bruit dans l'image ; dans ce cas, la valeur de paramètre peut, notamment, être transmise, choisie ou calculée par la plateforme, et/ou
-dépendre de la position absolue de l'information élémentaire dans l'objet ; dans ce cas, la valeur de paramètre peut notamment être transmise, choisie ou calculée par la plateforme, et/ou
-ne pas dépendre de la position absolue de l'information élémentaire dans l'objet.
La valeur de paramètre peut être déterminée simultanément ou a posteriori par rapport à la définition de l'algorithme.
On a vu que la valeur de certains paramètres peut varier d'un objet à l'autre, d'un sous-objet à l'autre ou d'une information élémentaire à l'autre.
Dans ce cas, dans une réalisation, on calcule la valeur du paramètre à chaque changement. Dans une autre réalisation, on calcule a priori les valeurs possibles du paramètre, et, à chaque changement, on détermine l'index ou l'adresse permettant d'accéder à la valeur du paramètre par exemple dans une table.
Dans une autre réalisation, plus particulièrement adaptée aux paramètres dont la valeur varie d'un sous-objet à l'autre en fonction de la position absolue du sous-objet et dont le nombre de valeurs est limité, par exemple les paramètres correspondant aux caractéristiques de flou de l'optique, on détermine un nombre limité de jeux de valeurs de paramètres, on stocke chaque jeu et, pour chaque sous-objet, on sélectionne le jeu à utiliser, par exemple en calculant une fonction de la position donnant l'adresse du jeu à utiliser.
L' affectation des opérations spécifiques aux unités de calcul dépend à la fois du type d'opération, de la séquence, et des unités de calcul en elles-mêmes. Par exemple, dans une réalisation, les unités de calcul sont spécialisées, c'est-à-dire que les N résultats issus d'une même opération spécifique sont calculés par une même unité de calcul . Dans le cas où une opération spécifique fait appel à un paramètre présent dans une mémoire de la plateforme, le fait de disposer d'unités de calcul spécialisées permet de gagner du temps, puisque l'unité de calcul en charge de cette opération peut réaliser un accès mémoire au début du traitement, pour récupérer le paramètre, puis appliquer l'opération N fois sans avoir besoin d'effectuer à nouveau un accès mémoire.
Ainsi, dans une réalisation, lorsqu'au moins une opération spécifique met en œuvre au moins un paramètre, cette opération spécifique est effectuée par au moins une unité de calcul ayant accès à une unité de mémoire contenant une partie des valeurs des paramètres, cette partie étant déterminée en fonction des opérations spécifiques effectuées par cette unité de calcul. Pour le stockage de ces valeurs de paramètres, il peut exister différentes configurations matérielles, qui seront détaillées par la suite. Par exemple, chaque unité de calcul peut disposer de sa propre mémoire, ou il peut exister une mémoire commune à toutes les unités, ou bien encore les unités de calcul peuvent être regroupées, et disposer d'une mémoire pour chaque groupe.
Dans une réalisation, lorsqu'au moins une opération spécifique met en œuvre au moins un paramètre, la valeur de ce paramètre est fonction de la position du sous-objet et/ou de l'information élémentaire dans l'objet à traiter.
Pour certaines opérations, la valeur du paramètre sera fixe pour tout l'objet à traiter, alors que pour d'autres, cette valeur sera variable en fonction de la position. Ainsi, par exemple, les coefficients d'un filtre de correction de flou d'image pourront être plus ou moins forts selon que l'on se trouve au centre ou au bord de l'image. Selon la plateforme utilisée pour effectuer le traitement, la configuration des unités de calcul peut varier. Ainsi, dans une réalisation, les opérations spécifiques sont réalisées par des unités de calcul chaînées . En fait, dans ce cas, les unités de calcul peuvent être chaînées « en série » ou selon un arbre, et les résultats des calculs sur une information élémentaire à traiter transitent d'une unité à l'autre. Une telle configuration est rendue possible par le fait que le traitement est régulier, et que le transit des informations élémentaires peut donc également se faire de façon régulière.
Les unités de calcul peuvent également être placées en parallèle, afin de traiter plusieurs informations élémentaires simultanément. Dans ce cas, les unités de calculs sont chaînées pour pouvoir combiner des résultats de calculs issus d' informations élémentaires différentes par exemple des filtres .
Dans une réalisation, pour faciliter le câblage du composant comprenant les différents processeurs, les unités de calcul sont chaînées selon un chaînage à une dimension. Dans une autre réalisation, les unités de calcul sont chaînées selon au moins un chaînage circulaire. Cette dernière réalisation permet d' obtenir un traitement ininterrompu, puisque lorsqu' une information élémentaire a transité par toutes les unités de calcul, et a subi un certain nombre d'opérations spécifiques, elle est aussitôt transmise de nouveau à la première unité de calcul .
Dans une réalisation, dans laquelle les unités de calcul sont chaînées selon au moins un chaînage circulaire, le chaînage comporte en outre au moins une file.
Cette réalisation du procédé peut être mise en œuvre en tant que telle.
Dans une autre réalisation de l'invention, dans laquelle le sous-objet comporte DSO dimensions, les opérations spécifiques sont effectuées par des unités de calcul chaînées selon au moins un chaînage circulaire pour chaque dimension du sous-objet ; le (s) chaînage (s) circulaire (s) pour chaque dimension particulière Dl du sous-objet comportant en outre au moins une file partagée ou non entre le (s) chaînage (s) circulaire (s) pour la dimension particulière Dl du sous-objet.
Cette réalisation du procédé peut être mise en œuvre en tant que telle. Elle sera décrite ultérieurement en détail à l'aide des figures . De préférence, dans le cas où il y a plusieurs chaînages circulaires selon une dimension du sous-objet (notamment lorsque les processeurs sont disposés selon une grille) , la file est partagée entre tous les chaînages circulaires selon la même dimension. De préférence, il y a exactement une file par dimension du sous-objet, et chaque file est partagée entre tous les chaînages circulaires selon la même dimension.
Dans une autre réalisation de l'invention, dans laquelle le sous-objet comporte DSO dimensions, les opérations spécifiques sont effectuées par des unités de calcul chaînées selon une dimension déterminée DD du sous-objet au moyen d' au moins un chaînage circulaire CCI ; ledit chaînage circulaire CCI comportant en outre au moins une file. Dans cette réalisation, le procédé comprenant en outre l'étape, pour au moins une instruction spécifique, pour chaque application de ladite instruction spécifique de transmettre le résultat de cette application de l'instruction spécifique effectuée sur une unité de calcul UCl à l'unité de calcul UC2 ou file qui suit ladite unité de calcul UCl selon ledit chaînage. Cette réalisation du procédé peut être mise en œuvre en tant que telle.
De préférence, le sous-objet comporte DSO dimensions, les opérations spécifiques sont effectuées par des unités de calcul chaînées selon une dimension déterminée DD du sous-objet au moyen d'au moins un chaînage circulaire CCI ; ledit chaînage circulaire CCI comporte en outre au moins une file ; le procédé comprend en outre l'étape, pour au moins une instruction spécifique, pour chaque application de ladite instruction spécifique - de transmettre le résultat de ladite application de l'instruction spécifique effectuée sur une unité de calcul
UCl à l'unité de calcul UC2 ou file qui suit ladite unité de calcul UCl selon ledit chaînage de transmettre depuis la file à l'unité de traitement UCO qui suit la file, de manière conditionnelle en fonction de la position du sous-objet dans l'objet, un résultat de l'application de l'instruction spécifique transmis à la file lors du traitement d'un autre sous-objet.
Dans une réalisation, les unités de calcul appartiennent chacune à au moins un chaîne, ce dans chacune des dimensions du sous- objet .
Dans une réalisation, le procédé comprend en outre l'étape, pour au moins deux instructions spécifiques, pour chaque application de l'une des deux instruction spécifique, de transmettre le résultat de ladite application l'instruction spécifique effectuée sur une unité de calcul UCl à l'unité de calcul UC2 ou file qui suit ladite unité de calcul UCl selon un chaînage prédéterminé de manière indépendante pour chaque instruction spécifique. Le chaînage utilisé dépend en pratique du type de filtre effectué (vertical ou horizontal par exemple) par la séquence d'instruction spécifique.
Dans une réalisation, les opérations spécifiques sont de deux types : - soit elles ne mettent en œuvre aucun chaînage, soit elles mettent systématiquement en œuvre un chaînage, c'est à dire à chaque fois qu'elles sont effectuées; dans ce cas, tous les chaînages mis en œuvre par la même opération spécifique par les différents processeurs sont selon la même dimension. Dans une réalisation, les opérations spécifiques sont effectuées par des unités de calcul chaînées selon au moins un chaînage circulaire ; ledit chaînage permet de transmettre le résultat d'une opération spécifique au processeur ou file suivant dans le chaînage le processeur ayant produit ledit résultat.
Dans une réalisation, les opérations spécifiques sont effectuées par des unités de calcul chaînées selon au moins un chaînage circulaire ; ledit chaînage circulaire comportant en outre au moins une file ; ladite file permettant de transmettre les résultats d'opérations spécifiques nécessaires au calcul d'au moins un autre sous-objet.
Dans une autre réalisation, l'invention comprend en outre l'étape de grouper en mémoire les résultats d'opérations spécifiques utilisées lors du sous-traitement d'un autre sous- objet en fonction de la position relative dudit autre sous-objet par rapport au dit sous-objet.
Dans une réalisation, le procédé comprend en outre l'étape de grouper dans au moins une file les résultats d'opérations spécifiques utilisées lors du sous-traitement d'un autre sous-objet.
Par ailleurs, dans certaines réalisations, le procédé comprend l'étape supplémentaire de fournir à la plateforme des instructions permettant de garder en mémoire ou en file au moins une partie de ces résultats d'opérations spécifiques.
Le traitement doit, bien entendu, s'adapter à configuration de la plateforme, ceci afin d'utiliser au mieux les capacités matérielles de cette plateforme. A cet effet, dans une réalisation, le procédé comprend l'étape d'affecter les opérations spécifiques aux unités de calcul en fonction du chaînage des unités de calcul, et de la séquence. Cette étape peut également être réalisée par un compilateur situé en amont de la plateforme. Par ailleurs, toujours afin d'utiliser au mieux les capacités de la plateforme, il peut être intéressant d'utiliser des unités de calcul programmables, c'est-à-dire que la séquence d'opérations spécifiques et/ou l'affectation des opérations spécifiques aux différentes unités de calcul peut être modifiée après réalisation du composant contenant ces unités de calcul. Ainsi, dans une réalisation, l'ordre et/ou la nature des opérations spécifiques sont modifiables. Par contre, même si les unités de calcul sont programmables, elles peuvent être programmées une première fois au moment de la réalisation du composant. De cette façon, dans une réalisation de l'invention, les opérations spécifiques sont effectuées par des unités de calcul câblées selon au moins une séquence prédéterminée d'opérations spécifiques. Cette réalisation permet, par exemple, de se dispenser de l'utilisation d'une mémoire externe. En effet, au lieu de disposer d'une telle mémoire contenant le séquencement des opérations à réaliser pour un algorithme, on peut câbler les unités de calcul de façon telle que les opérations soient réalisées dans un ordre correspondant à cet algorithme que l'on veut appliquer à un objet.
La plateforme sur laquelle est effectuée le traitement peut disposer de différents types de mémoire qui varient, tant en terme de capacité qu'en terme de débit d'accès. Par exemple, une mémoire rapide et/ou des registres peuvent être utilisés pour stocker des résultats d'opérations à court terme, dans le cas d'opérations telles que des filtres qui nécessitent la réutilisation immédiate de certaines données. Ainsi, dans une réalisation, au moins une opération spécifique est effectuée par au moins une unité de calcul dotée d'une unité de mémoire de capacité limitée pour stocker des informations élémentaires et/ou des résultats d'opérations spécifiques, cette mémoire contenant au plus seize informations élémentaires et/ou résultats d'opérations spécifiques. Les mémoires rapides ici ayant généralement une capacité limitée, il est nécessaire, dans certains cas, de disposer également d'une mémoire de plus grande capacité afin de stocker davantage d' informations élémentaires et/ou résultats d' opérations spécifiques .
À cet effet, dans une réalisation, au moins une opération spécifique est effectuée par au moins une unité de calcul ayant accès à une unité de mémoire de communication, contenant au moins une information élémentaire et/ou au moins un des résultat d'opération spécifique issus d'autres sous-objets.
Cette mémoire de communication est, généralement, utilisée pour stocker des informations élémentaires et/ou résultats d'opérations spécifiques à long terme, utilisés pour des traitements d'autres sous-objets. Seulement une partie des opérations spécifiques produisent ou utilisent de telles données, et le débit nécessaire est donc limité. La régularité apportée par l'invention permet de déterminer très simplement quelles sont ces données et donc de se passer d'un mécanisme de mémoire cache, ce qui réduit la complexité et le coût de la plateforme. Ainsi, dans une réalisation, l'unité de mémoire de communication a un débit d'accès inférieur à 0.3*N accès/sous- objet/opération spécifique. Une telle mémoire, avec un débit d'accès relativement lent, sera moins onéreuse que si l'on souhaitait utiliser une mémoire à la fois rapide et de grande capacité. Ceci est un avantage de l'invention.
Si la plateforme de traitement est telle que la capacité mémoire est réduite, il faut choisir une taille de sous-objets telle qu'on peut appliquer correctement un traitement. Ainsi dans une réalisation, utilisée notamment dans le cas où la plateforme est intégrée dans un téléphone mobile, la valeur de Q est fixée à 1 et la valeur de N est comprise entre 2 et 16. Par exemple, si la plateforme est destinée à traiter des photographies prises par le téléphone mobile, toutes les opérations s'appliqueront à un seul pixel à la fois. Au contraire, dans certains cas comme, par exemple, lorsque la plateforme comporte un processeur vectoriel, on peut disposer d'un grand nombre d'unités de calcul. Cette configuration matérielle permet, si les unités de calcul sont utilisées à bon escient, d'accélérer le processus de traitement d'un objet. À cet effet, dans une réalisation, au moins une opération spécifique est effectuée simultanément par au moins deux unités de calcul identiques. L'invention permet alors, par la régularité du traitement, d'exploiter au mieux les processeurs.
Selon les réalisations, les opérations spécifiques comprennent au moins une opération spécifique de calcul prise dans le groupe comprenant : l'addition, la soustraction, la multiplication, l'application d'une table de correspondance, le minimum, le maximum, la sélection
Ainsi, dans une réalisation, au moins une opération spécifique de calcul réalise en outre un décalage, et/ou une saturation et/ou un arrondi. Selon l'invention, l'opération spécifique de calcul de sélection permet de choisir une donnée parmi au moins deux données en fonction de la valeur d'une troisième donnée
Dans une réalisation, l'application d'une table de correspondance est réalisée par un calcul mettant en œuvre l'entrée de la table et un nombre limité de coefficients. Dans une réalisation, le nombre limité de coefficients est fixé à 8.
Par ailleurs, dans d'autres réalisations, les opérations spécifiques sont effectuées par des unités de calcul chaînées au moyen d' au moins un chaînage circulaire CCI ; ledit chaînage circulaire CCI comportant en outre au moins une file ; au moins une instruction spécifique IS4 de la séquence d'instruction spécifique transmettant le résultat d'une instruction spécifique IS5 effectuée sur une unité de calcul UCl à l'unité de calcul UC2 ou file qui suit ladite unité de calcul UCl selon ledit chaînage . Dans une réalisation l'instruction spécifique IS4 transmet, depuis la file, à l'unité de calcul UCO qui suit la file, le résultat d'une instruction spécifique IS5 effectuée lors d'un sous-traitement précédent. De préférence la file permet de sortir les données dans le même ordre qu' elles ont été entrées dans la file. De préférence, un chaînage comprenant des unités de calcul et une file comprend un mécanisme permettant de gérer l'amorçage : la file est initialisée régulièrement, par exemple en début de chaque ligne si la file fait partie d'un chaînage horizontal et l'objet est une image ; à la première exécution de l'instruction spécifique IS4, aucune donnée n'est transmise à UCO depuis la file ; ensuite, l'instruction spécifique IS4 transmet, depuis la file, à l'unité de calcul UCO qui suit la file, le résultat d'une instruction spécifique IS5 effectuée lors d'un sous-traitement précédent.
Les valeurs de N et de Q varient selon les réalisations . Chacune des réalisations présentent des avantages différents . Ainsi, dans une réalisation N n'est pas multiple de Q. Dans une variante de cette réalisation, Q est égal au nombre d'opérations spécifiques de la séquence obtenue en traduisant la séquence d'opérations générique.
Dans une réalisation N est un multiple de Q. Ceci permet de rendre régulier le traitement. De préférence N = Q. Ceci permet de réduire la quantité de mémoire nécessaire au stockage de résultats temporaires .
Dans une réalisation Q=I et N=4. Ceci permet de réutiliser une même valeur de paramètre pour plusieurs application d'une même opération spécifique. Dans une réalisation Q>1 et N=Q. Ceci permet d'utiliser les Q unités de calcul d'un processeur vectoriel à 100%.
Dans une réalisation Q>1 et N est un multiple de Q. Ceci permet d'utiliser les Q unités de calcul d'un processeur vectoriel à 100%, en réduisant le nombre de résultat d'opérations spécifiques effectuées lors du traitement d'un sous-objet et utilisées pour le traitement d'un autre sous- objet .
Dans une réalisation, chaque processeur effectue toutes les opérations de la séquence d' opérations spécifiques . Dans une réalisation, tous les processeurs effectuent la même opération spécifique en même temps . Dans une autre réalisation, tous les processeurs effectuent la même opération spécifique successivement, ce qui permet d'effectuer des filtres récursifs. Le stockage en mémoire des informations élémentaires et des résultats d'opérations nécessite l'utilisation d'un adressage relativement simple, afin de ne pas perdre trop de temps lors de la recherche d'informations élémentaires. À cet effet, dans une réalisation, au moins une partie des résultats d'opérations spécifiques est stockée en mémoire à une adresse de la forme « adresse de base + décalage » ou « adresse de base + décalage modulo (taille d'une mémoire tampon) » , le décalage étant constant pour tous les résultats d'une même opération spécifique. La mémoire tampon est, de préférence, intégrée dans une des mémoires de la plateforme utilisée pour le traitement. La mémoire tampon peut être, notamment, une file.
Dans une autre réalisation, l'adresse de base est modifiée à chaque fois qu'on change de sous-objet dans le processus de traitement. Dans une réalisation, cet adressage peut être utilisé notamment pour les données de communication entre les sous- objets selon au moins une dimension.
Dans le cas particulier d'un processeur vectoriel, le calcul d'adresse est commun à l'ensemble des processeurs et à une mémoire délivrant des groupes d' informations élémentaires et/ou de résultat d'opérations spécifiques de la taille d'un sous-objet peut être utilisée.
On a vu plus haut que, dans certaines configurations matérielles, chaque unité de calcul disposait de sa propre mémoire. Dans ce cas, une adresse donnée peut être relative à plusieurs mémoires, c'est-à-dire qu'une adresse mémoire telle que définie ici représente en fait l'ensemble des adresses mémoire utilisées par toutes les unités de calcul effectuant une même opération spécifique.
Dans une réalisation, au moins une partie des résultats d' opérations spécifiques est stockée en mémoire à une adresse prédéterminée pour tous les résultats d'une même opération spécifique. Le procédé défini ci-dessus est tel que le nombre d'unités de calcul nécessaires pour effectuer le traitement peut être relativement réduit. Ainsi, dans une réalisation, lorsque les opérations spécifiques sont effectuées par au moins une unité de calcul dotée d'au moins une unité de registres et d'au moins une mémoire de communication entre sous-objets, le nombre de transistors de la plateforme de traitement est inférieur à 10000 par unité de calcul, y compris l'unité de registres associée sans la mémoire de communication.
Dans une réalisation de l'invention, on fournit à la plateforme, de préférence directement, des données formatées spécifiques calculées à partir de données formatées génériques, ces données formatées génériques comprenant des premières données décrivant au moins une séquence d'opérations génériques, le calcul des données formatées spécifiques étant effectué en tenant compte d'un mode de parcours des informations élémentaires dans la plateforme et d'opérations spécifiques issues des opérations génériques, ces opérations spécifiques formant la séquence d'opérations spécifiques à effectuer sur un objet lors de son traitement dans la plateforme. Ainsi, on peut facilement modifier le traitement de l'objet en changeant les données formatées génériques et obtenir automatiquement des données formatées spécifiques optimisées pour la plateforme. De sorte que la mise sur le marché des plateformes est accéléré. De sorte que la taille de code, le temps de calcul et la quantité de mémoire sont optimisés . De sorte que la consommation électrique et le coût de la plateforme sont réduits .
Les opérations génériques sont des opérations qui s'appliquent à des blocs logiques, c'est-à-dire à des entités abstraites, sans notion de taille ni de forme, composées d'informations élémentaires, et pouvant constituer tout ou partie de l'objet.
Dans la présente description, des données formatées génériques sont des données numériques permettant de décrire un traitement à apporter sur un objet par une plateforme de traitement de données, indépendamment de la plateforme elle- même. Les données formatées spécifiques peuvent être fournies directement ou indirectement en utilisant un compilateur pour générer un binaire adapté à la plateforme à partir des données formatées spécifiques.
Il existe différents modes de parcours possibles, dont certains seront décrits plus loin. A partir de ces modes de parcours, on peut ainsi générer automatiquement les opérations spécifiques qui doivent être appliquées à l'objet à traiter. Ceci permet une mise sur le marché des algorithmes en un temps relativement court.
Dans une réalisation, les opérations génériques comprennent au moins une opération générique élémentaire comprise dans le groupe comprenant : l'addition de blocs logiques et/ou de paramètres, la soustraction de blocs logiques et/ou de paramètres, le calcul de la valeur absolue de la différence entre des blocs logiques, la multiplication de blocs logiques et/ou de paramètres, le maximum parmi au moins deux blocs logiques et/ou paramètres, le minimum parmi au moins deux blocs logiques et/ou paramètres, l'application d'une table de correspondance, le choix conditionnel de blocs logiques et/ou paramètres, ce choix se faisant de la façon suivante : si a > b on choisit c, sinon on choisit d, avec a, b, c et d qui sont des blocs logiques et/ou des paramètres, l'histogramme d'un bloc logique, le changement d'échelle d'un bloc logique, et une opération produisant un bloc contenant au moins une coordonnée.
Dans une autre réalisation, les informations élémentaires sont représentées par des valeurs numériques en virgule fixe, et dans lequel les opérations génériques élémentaires comprennent des opérations de décalage, une opération de saturation et/ou au moins une opération générique élémentaire combinée à cette opération de saturation.
Toutes les caractéristiques matérielles qui viennent d'être définies sont, bien entendu, valables quel que soit le type de plateforme utilisée, et quel que soit le type d'objet à traiter.
Ainsi, dans une réalisation, l'objet à traiter est une image, et les informations élémentaires sont des pixels de cette image. Dans ce cas, la plateforme de traitement fait, par exemple, partie d'un appareil de capture et/ou de restitution d' image, et les opérations mettent en œuvre des paramètres dont les valeurs dépendent de la séquence d' opérations et/ou de la plateforme de traitement et/ou de l'objet à traiter, ces valeurs de paramètres étant liées aux caractéristiques de l'optique et/ou du capteur et/ou de l'imageur et/ou de l'électronique et/ou du logiciel de l'appareil de capture et/ou de restitution d'image. Les caractéristiques peuvent être par exemple des caractéristiques intrinsèques fixes pour tous les objets ou variables selon l'objet, par exemple des caractéristiques de bruit qui varient en fonction du gain d'un capteur. Les caractéristiques peuvent être identiques pour toutes les informations élémentaires ou variables selon la position absolue de l'information élémentaire, par exemple les caractéristiques de flou de l'optique.
Dans d'autres réalisations, l'objet à traiter est un signal sonore numérisé et les informations élémentaires sont les échantillons sonores de ce signal, ou bien encore l'objet à traiter est un maillage numérique et les informations élémentaires sont les informations spatiales et temporelles caractérisant chaque point du maillage.
L' invention concerne également une plateforme à processeur (s) et mémoire (s), destinée à traiter un objet (55) constitué d'informations élémentaires de même nature (54, 56, 58, 60, 154, 156, 158, et 160) , comprenant des moyens pour décomposer l'objet à traiter en au moins deux sous-objets (50, 51, 52 et 53) constitués de N informations élémentaires chacun (54, 56, 58, 154, 156, 158), tous les sous-objets (50, 51, 52 et 53) ayant le même nombre N d'informations élémentaires et, des moyens pour effectuer au moins une séquence d'opérations spécifiques sur les informations élémentaires de chaque sous- objet (50 , 51 , 52 , 53) , ces moyens de traitement comprenant en outre des moyens pour effectuer, pour chaque sous-objet, au moins N fois chaque opération spécifique, de façon, d'une part à faire intervenir au moins une fois chaque information élémentaire de chaque sous-objet, et d'autre part à produire N résultats pour chaque opération spécifique, les moyens de traitement étant tels qu'au moins une opération spécifique (62) de la séquence d'opérations spécifiques met en œuvre, directement ou indirectement, au moins une fois au cours de ses N applications (62a, 62b, 62c, 62d, 62e, 62f) , une information élémentaire appartenant à un autre sous-objet (60, 160) .
Dans une réalisation, l'objet à traiter comprend DO dimensions, les sous-objets comprennent DSO dimensions sélectionnées parmi les DO dimensions de l'objet, et les moyens pour décomposer l'objet sont tels que, selon au moins une dimension du sous-objet, les sous-objets n'ont pas de recouvrement .
Ainsi, de préférence, les opérations spécifiques sont effectuées par des unités de calcul chaînées selon au moins un chaînage circulaire selon la dimension selon laquelle les sous objets n'ont pas de recouvrement.
De préférence également, les sous objets n'ont de recouvrement selon aucune dimension. Dans une réalisation, la plateforme comprend au moins une mémoire de communications inter-objet pour stocker les informations élémentaires et/ou résultats d'opérations spécifiques réalisés pensant le traitement d'un sous-objet, et utilisés pour le traitement d'un autre sous-objet.
Dans une réalisation, la plateforme comprend des moyens pour effectuer une séquence d' opérations spécifiques ne comportant qu'une opération spécifiques mettant en œuvre les mêmes données lors du traitement de l'objet.
Dans une réalisation, l'objet comprend DO dimensions, les informations élémentaires sont reçues dans la plateforme selon une dimension DE de l'objet puis selon les autres dimensions, les sous-objets comprennent DSO dimensions sélectionnées parmi les DO dimensions de l'objet et comprenant la dimension DE, et la plateforme est telle qu'une boucle interne de parcours des sous-objets, comprise dans le traitement, s'effectue selon la dimension DE.
Dans une réalisation, l'objet comprend DO dimensions, les informations élémentaires sont reçues dans la plateforme selon une dimension DE de l'objet puis selon les autres dimensions, les sous-objets comprennent les DO dimensions de l'objet ou DO-I dimensions sélectionnées parmi les DO dimensions de l'objet, la dimension DE n'étant pas comprise, et la plateforme est telle qu'une boucle interne de parcours des sous- objets, comprise dans le traitement s'effectue selon la dimension DE. Dans une réalisation, les moyens pour décomposer l'objet à traiter sont tels que la taille des sous-objets dans chaque dimension est déterminée en fonction de la taille de l'objet et/ou du débit des informations élémentaires reçues par la plateforme, et/ou de la vitesse de calcul de la plateforme et/ou de la taille et du débit d'au moins une mémoire de la plateforme.
Dans une réalisation, dans le cas où au moins une partie des opérations spécifiques met en œuvre au moins une valeur de paramètres, la plateforme comprend Q unités de calculs calculant la même opération spécifique simultanément, et la plateforme comprend en outre des moyens pour effectuer au moins une séquence d'opérations spécifiques comprenant au moins une opération spécifique de sélection, cette opération spécifique de sélection effectuant la sélection d'une valeur de paramètre parmi C valeurs de paramètres en même temps sur les Q unités de calcul de manière différentiée par processeur, en fonction d'au moins une information élémentaire et/ou d' au moins un résultat d'opération spécifique et/ou d'au moins une valeur de paramètre.
Dans une réalisation, la plateforme comprend Q unités de calculs calculant la même opération spécifique simultanément, et comprend en outre des moyens pour effectuer au moins une séquence d'opérations spécifiques comprenant au moins une opération spécifique de sélection, cette opération spécifique de sélection effectuant la sélection d'une donnée parmi C donnée en même temps sur les Q unités de calcul de manière différentiée par processeur, en fonction d'au moins une information élémentaire et/ou d'au moins un résultat d'opération spécifique et/ou d'au moins une valeur de paramètre.
Dans une réalisation, la plateforme comprend des moyens pour effectuer une séquence d' opérations spécifiques comprenant au moins une opération spécifique de position, et, l'objet comportant DO dimensions, cette opération spécifique de position produisant une information de position selon une des DO dimensions .
Dans une réalisation, la plateforme comprend des moyens pour effectuer une séquence d' opérations spécifiques comprenant au moins une opération spécifique produisant une position relative en fonction d' au moins une information élémentaire et/ou d'au moins un résultat d'opération spécifique et/ou d'au moins une valeur de paramètre.
Dans une réalisation, la plateforme comprend Q unités de calculs pour effectuer au moins une partie des opérations spécifiques, Q étant égal à N ou un sous-multiple de N.
Dans une réalisation, le nombre d'unités de calcul Q est différent de N, et dans laquelle le traitement du sous-objet comprend une seule boucle interne de N/Q itérations .
Dans une réalisation, la plateforme est telle que les
Q unités de calcul sont identiques .
Dans une réalisation, la plateforme comprend des moyens pour que les N résultats issus d'une même opération spécifique soient calculés par une même unité de calcul.
Dans une réalisation, la plateforme comprend des moyens, lorsqu'au moins une opération spécifique mettant en œuvre au moins un paramètre, pour effectuer cette opération spécifique, et la plateforme comprend en outre une unité de calcul ayant accès à une unité de mémoire contenant une partie des valeurs des paramètres, la plateforme étant telle que cette partie étant déterminée en fonction des opérations spécifiques effectuées par cette unité de calcul. Dans une réalisation, la plateforme comprend des moyens pour que, lorsqu'au moins une opération spécifique met en oeuvre au moins un paramètre, ce paramètre soit fonction de la position du sous-objet dans un objet à traiter.
Dans une réalisation, la plateforme comprend des unités de calcul chaînées .
Dans une réalisation, la plateforme comprend des unités de calcul chaînées selon un chaînage à une dimension.
Dans une réalisation, la plateforme comprend des unités de calcul chaînées selon au moins un chaînage circulaire. Ce chaînage peut, en outre, dans une réalisation, comporter au moins une file.
Dans une réalisation, dans laquelle le sous-objet comporte DSO dimensions, la plateforme comprend des unités de calcul chaînées selon au moins un chaînage circulaire pour chaque dimension du sous objet. Le (s) chaînage (s) circulaire (s) pour chaque dimension particulière Dl du sous objet comportent en outre au moins une file partagée, ou non entre le (s) chaînage (s) circulaire (s) pour la dimension particulière Dl du sous objet.
Dans une réalisation, la plateforme comporte des unités de calcul chaînées selon au moins une dimension déterminée DD du sous objet au moyen d'un chaînage circulaire CCI . Le chaînage circulaire comporte en outre au moins une file ; et la plateforme est telle que pour chaque application d'une instruction spécifique, le résultat de cette application dans une première unité de calcul UCl est transmis à une unité de calcul UC2 ou file qui suit ladite première unité de calcul UCl selon ledit chaînage. Dans une réalisation, la plateforme comporte au moins une mémoire pour enregistrer les résultats d'opérations spécifiques utilisées lors du sous traitement d'un autre sous objet en fonction de la position relative dudit autre sous objet par rapport au dit sous objet.
Dans une autre réalisation encore, la plateforme comporte des unités de calcul chaînées selon au moins un chaînage circulaire, et des moyens pour affecter les opérations spécifiques aux unités de calcul en fonction du chaînage des unités de calcul et de la séquence
Dans une réalisation, la plateforme comprend des moyens pour que l'ordre et/ou la nature des opérations spécifiques soi (en) t modifiable (s) .
Dans une réalisation, la plateforme comprend des unités de calcul câblées pour effectuer les opérations spécifiques selon au moins une séquence prédéterminée d'opérations spécifiques.
Dans une réalisation, la plateforme comprend au moins une unité de calcul dotée d'une unité de mémoire de capacité limitée pour stocker des informations élémentaires et/ou des résultats d'opérations spécifiques, cette mémoire contenant au plus seize informations élémentaires et/ou résultats d'opérations spécifiques.
Dans une réalisation, la plateforme comprend au moins une unité de calcul ayant accès à une unité de mémoire de communication, contenant des informations élémentaires et/ou des résultats d'opérations spécifiques issus d'autres sous-objets. Dans une réalisation, la plateforme est telle que l'unité de mémoire de communication a un débit d'accès inférieur à 0.3*N accès/sous-objet/opération spécifique.
Dans une réalisation, la plateforme est notamment intégrée dans un téléphone mobile, et comprend des moyens pour que la valeur de Q soit fixée à 1 et pour que la valeur de N soit comprise entre 2 et 16.
Dans une réalisation, la plateforme comprend au moins deux unités de calcul identiques effectuant simultanément au moins une même opération spécifique.
Dans une réalisation, la plateforme comprend des moyens pour qu'au moins une partie des résultats d'opérations spécifiques soit stockée en mémoire à une adresse de la forme
« adresse de base + décalage » ou « adresse de base + décalage modulo (taille d'une mémoire tampon) », le décalage étant constant pour tous les résultats d'une même opération spécifique.
Dans une réalisation, la plateforme comprend des moyens pour modifier l'adresse de base à chaque fois que l'on change de sous-objet dans le processus de traitement.
Dans une réalisation, la plateforme comprend des moyens pour qu' au moins une partie des résultats d' opérations spécifiques soit stockée en mémoire à une adresse prédéterminée pour tous les résultats d'une même opération.
Dans une réalisation, la plateforme comprend au moins une unité de calcul dotée d'une mémoire, et dans laquelle le nombre de transistors est inférieur à 10000 par unité de calcul, y compris l'unité de mémoire associée. Dans une réalisation, la plateforme comprend des moyens pour recevoir en entrée, de préférence directement, des données formatées spécifiques calculées à partir de données formatées génériques, ces données formatées génériques comprenant des premières données décrivant au moins une séquence d'opérations génériques, le calcul des données formatées spécifiques étant effectué en tenant compte d'un mode de parcours des informations élémentaires dans la plateforme et d'opérations spécifiques issues des opérations génériques, ces opérations spécifiques formant une séquence d'opérations spécifiques, et la plateforme comprenant des moyens pour effectuer cette séquence d'opérations spécifiques sur un objet.
Dans une réalisation, la plateforme comprend des moyens pour traiter un objet étant constitué par une image, les informations élémentaires étant des pixels de cette image.
Dans une réalisation, la plateforme fait partie d'un appareil de capture et/ou de restitution d' image, les opérations mettant en œuvre des paramètres dont les valeurs dépendent de la séquence d'opérations et/ou de cette plateforme et/ou de l'objet à traiter, ces valeurs de paramètres étant liées aux caractéristiques de l'optique et/ou du capteur et/ou de l'imageur et/ou de l'électronique et/ou du logiciel de l'appareil de capture et/ou de restitution d'image.
Dans une réalisation, la plateforme comprend des moyens pour traiter un objet étant constitué par un signal sonore numérisé, les informations élémentaires étant les échantillons sonores de ce signal.
Dans une réalisation, la plateforme comprend des moyens pour traiter un objet étant constitué par un maillage numérique, les informations élémentaires sont les informations spatiales et temporelles caractérisant chaque point du maillage. L'invention concerne également un objet traité par un procédé de traitement conforme au procédé précédemment décrit.
D'autres caractéristiques et avantages de l'invention apparaîtront avec la description non limitative de certains de ses modes de réalisation, cette description étant effectuée à l'aide des figures sur lesquelles : les figures la, Ib, Ic Id, Ie et If, déjà décrites, représentent des exemples de décomposition d'une image en sous-objets, conformément à l'invention
- la figure 2 représente un dispositif utilisant un procédé conforme à l'invention,
- la figure 3 représente un exemple d' une séquence d'opérations génériques appliquée à plusieurs blocs logiques et à un paramètre, la figure 4 représente la structure de données formatées spécifiques fournies à une plateforme, dans un procédé conforme à l'invention, - la figure 5 représente l'application d'une opération spécifique à un objet, et les figures 6, 7 et 8 présentent différentes architectures de plateformes pouvant traiter des objets selon un procédé conforme à l'invention, - les figures 9a, 9b et 9c montrent des exemples de chaînage des processeurs dans une plateforme conforme à l'invention.
Le dispositif représenté sur la figure 2 est utilisé pour traiter une image 22, cette image étant un ensemble de pixels représentés par au moins une valeur numérique.
Dans ce dispositif, on fournit à un moyen de traitement de données numériques 10 des données formatées génériques 12. Ce moyen de traitement est par exemple un compilateur. Les données formatées génériques, fournies par un procédé conforme à l'invention, comprennent des premières et secondes données 14 qui décrivent des séquences d'opérations génériques et qui fournissent les positions relatives des blocs logiques impliqués dans ces opérations génériques . Ces premières et secondes données seront illustrées avec la figure 3.
Le moyen de traitement 10 reçoit également en entrée un mode de parcours 24 des informations élémentaires dans la plateforme déterminé en fonction des caractéristiques d'une plateforme de traitement 20, telle qu'un appareil de capture ou de restitution d' images .
A partir de ces données formatées génériques 12 et de ces paramètres, le moyen de traitement 10 fournit à la plateforme de traitement 20 des données formatées spécifiques 18.
Les données formatées spécifiques contiennent différents types de données, telles que des données concernant l'organisation des pixels dans la mémoire de la plateforme, l'ordre dans lequel les pixels sont traités par la plateforme ou encore le groupement des opérations effectuées par la plateforme.
La plateforme 20 utilise alors ces données formatées spécifiques 18 pour traiter l'image 22 qu'elle reçoit en entrée. Le tableau 4 ci-dessous et la figure 3 montrent un exemple de données formatées génériques sous la forme d'une séquence d' opérations génériques appliquées à un bloc logique Bl. Cette séquence comporte trois opérations génériques. Les colonnes du tableau représentent dans l'ordre : le rang de l'opération dans la séquence, - le nom de l'opération générique, le bloc logique (sortie) sur lequel est inscrit le résultat de l'opération générique, c'est-à-dire l'emplacement où se trouverait ce résultat si on reconstituait l'objet à l'issue de chaque opération, la première entrée (entrée 1) de l'opération générique, qui peut être un bloc logique ou un paramètre, la position relative du bloc logique à utiliser par rapport au bloc logique mis en entrée 1, s'il y a lieu, - la seconde entrée (entrée 2) de l'opération générique, qui peut également être un bloc logique ou un paramètre, et la position relative du bloc logique à utiliser par rapport au bloc logique mis en entrée 2, s'il y a lieu.
Les informations se trouvant dans les colonnes « position relative » sont les informations présentes dans les secondes données fournies à un moyen de traitement grâce à un procédé selon l'invention. Dans une réalisation, les secondes données se rapportent à la position relative, selon au moins une dimension de l'objet notamment spatiale et/ou temporelle, des blocs et/ou des paramètres les uns par rapport aux autres, et/ou se rapportant à l'échelle relative, selon au moins une dimension de l'objet notamment spatiale et/ou temporelle, des blocs logiques et/ou des paramètres les uns par rapport aux autres .
Dans ce tableau, ces informations se trouvent sous la forme « gauche » et « droite » pour être compréhensibles, mais en réalité, dans les données formatées génériques, elles peuvent également être codées par des valeurs numériques telles que (0 ;1) et/ou par des fonctions telle que
(f (x ;y) ;g(x ;y) ) .
Dans une réalisation, une opération générique permet d'obtenir un bloc logique constitué de la position absolue selon une dimension de l'objet, une autre opération générique dite d' indirection permet d' obtenir un bloc par déplacement et/ou changement d' échelle indiqué par un deuxième bloc à partir d'un troisième bloc. On peut alors effectuer les calculs des fonctions donnant la position relative et/ou l'échelle relative par exemple 0,5*(x-100) à l'aide d'opérations génériques sur les blocs puis utiliser l'opération générique d' indirection pour effectuer le déplacement relatif et/ou le changement d'échelle relatif correspondant .
Le tableau 4 n'est qu'un exemple de codage, les premières données et secondes données peuvent être codées de diverses façons sous forme tabulée, mais également sous forme symbolique, sous forme graphique ou sous toute autre forme.
10 De plus des informations supplémentaires relatives aux type des données, aux décalages et saturations ne sont pas représentées à des fins de simplification de l'exemple.
TABLEAU IV
15
Le premier bloc logique utilisé dans cette séquence d'opérations est un bloc logique Bl (51). La première opération générique est une addition (52) entre le bloc logique Bl décalé 20 à gauche (51g), et le bloc logique Bl décalé à droite (5Id) . Le résultat de cette addition est inscrit dans le bloc B2 (53) : B2=Blgauche + Bldroite.
La deuxième opération (54) est une transformation du bloc B2 (53) par rapport à une table. Cette opération a donc en 25 entrée le bloc B2 (53) et un paramètre Paraml (55) qui représente la table de modification. Le résultat de cette opération est inscrite dans le bloc B3 (56) : B3 = LUT (Paraml, B2) .
La troisième et dernière opération (57) de cette 30 séquence est une multiplication de blocs logiques. Cette opération a pour entrées le bloc logique B3 (56) et le bloc logique Bl (51) : B4 = B3*Bl .
Le bloc logique B4 (58) est ainsi le bloc obtenu à l'issue de la séquence d'opérations génériques.
Les données formatées génériques de l'exemple du tableau 4 sont indépendantes de la plateforme, de la décomposition de l'objet en sous-objets, du mode de parcours des informations élémentaires de l'objet, de l'ordre dans lequel les informations élémentaires seront traitées dans la plateforme, ainsi que de l'organisation en mémoire. En effet, les données formatées génériques du tableau 1 peuvent être traduites de diverses façons en données formatées spécifiques ou en code pour la plateforme, par exemple, sans que la liste soit limitative, selon les traductions suivantes.
Un premier exemple de traduction bien que non optimal en terme de mémoire et de temps de calcul permet d' illustrer une traduction simple sans passer par une décomposition en sous- objets :
Pour chaque pixel de l'objet d'entrée BPl
(correspondant au bloc logique Bl) en excluant les deux colonnes de gauche et de droite, les pixels étant parcourus de gauche à droite puis de haut en bas
Additionner le pixel situé à gauche du pixel courant et le pixel situé à droite, stocker le résultat dans un bloc physique BP2 (correspondant au bloc logique B2) .
Pour chaque pixel de BP2 parcouru de gauche à droite puis de haut en bas appliquer la table au pixel courant et stocker le résultat dans un bloc physique BP3 (correspondant au bloc logique B3) Pour chaque pixel de BP3 parcouru de gauche à droite puis de haut en bas
Multiplier le pixel courant par le pixel correspondant de BPl et stocker le résultat dans le bloc physique de sortie BP4 (correspondant au bloc logique B4)
Un deuxième exemple de traduction montre que l'on peut diminuer la taille de la mémoire utilisée sans changer les données formatées génériques. En effet, dans le premier exemple on utilise 4 blocs physiques de taille voisine de l'image. On peut n'utiliser que 2 blocs physique en utilisant la même mémoire pour BP2, BP3 et BP4. On obtient la traduction suivante :
Pour chaque pixel de l'objet d'entrée BPl (correspondant au bloc logique Bl) en excluant les deux colonnes de gauche et de droite, les pixels étant parcourus de gauche à droite puis de haut en bas Additionner le pixel situé à gauche du pixel courant et le pixel situé à droite, stocker le résultat dans un bloc physique BP2 (correspondant au bloc logique B2) .
Pour chaque pixel de BP2 parcouru de gauche à droite puis de haut en bas appliquer la table au pixel courant et stocker le résultat dans un bloc physique BP2 (correspondant maintenant au bloc logique B3)
Pour chaque pixel de BP2 parcouru de gauche à droite puis de haut en bas
Multiplier le pixel courant par le pixel correspondant de BPl et stocker le résultat dans le bloc physique de sortie BP2 (correspondant maintenant au bloc logique B4)
Un troisième exemple de traduction montre que l'on peut réduire le temps de calcul sans changer les données formatées génériques . En effet, dans le deuxième exemple on utilise 2 blocs physiques de taille voisine de l'image, mais on écrit 3 fois entièrement le bloc physique BP2, on lit 2 fois entièrement le bloc physique BPl et on lit 2 fois entièrement le bloc physique BP2. On peut se limiter à une lecture et une écriture seulement avec un mode de parcours différent et des blocs différents . Ceci réduit le nombre d' instructions nécessaires, mais également les accès à la mémoire. Dans ce cas un sous-objet est constitué de un pixel. On obtient la traduction suivante :
Pour chaque pixel de l'objet d'entrée BPl
(correspondant au bloc logique Bl) en excluant les deux colonnes de gauche et de droite, les pixels étant parcourus de gauche à droite puis de haut en bas
Effectuer la séquence d'opération spécifique suivante : Additionner le pixel situé à gauche du pixel courant et le pixel situé à droite, appliquer la table au résultat et multiplier la sortie de la table par le pixel courant , stocker le résultat dans le bloc physique courant de sortie BP2 (correspondant au bloc logique B4)
Dans un quatrième exemple, plus particulièrement adapté à un processeur scalaire avec cache, on écrit le résultat dans la même zone mémoire que l'entrée. Ceci permet de réduire encore la taille de la mémoire et de rendre local les accès mémoire, ce qui est très favorable dans le cas d'une mémoire cache ou une mémoire paginée. Dans ce cas un sous-objet est constitué de un pixel. On obtient ainsi la traduction suivante :
Pour chaque pixel de l'objet d'entrée BPl
(correspondant au bloc logique Bl) en excluant les deux colonnes de gauche et de droite, les pixels étant parcourus de gauche à droite puis de haut en bas Effectuer la séquence d' opération spécifique suivante : Additionner le pixel situé à gauche du pixel courant et le pixel situé à droite, appliquer la table au résultat et multiplier la sortie de la table par le pixel courant , stocker le résultat dans le bloc physique courant de sortie BPl à la place du pixel situé à la gauche du pixel courant (le pixel de gauche n'est plus utilisé par la suite contrairement au pixel courant qui va devenir le pixel de gauche pour la prochaine itération ; BPl correspond partiellement au bloc logique B4 et partiellement au bloc logique Bl)
Un cinquième exemple de traduction est particulièrement adaptée à un processeur de traitement du signal avec une petite mémoire rapide et une grosse mémoire lente, chaque sous-objet est un rectangle par exemple 32x32 ou toute autre valeur maximisant l'utilisation de la mémoire rapide, les rectangles étant jointifs. On obtient ainsi la traduction suivante :
Pour chaque sous-objet, les sous-objets étant parcourus de gauche à droite puis de haut en bas
Lancer un transfert par un mécanisme de DMA. (« direct memory access » du bloc physique d'entrée suivant depuis la mémoire lente vers la mémoire rapide, correspondant au sous-objet suivant étendu de une colonne à gauche et à droite, soit 32x34
Lancer un transfert par un mécanisme de DMA.
(« direct memory access » du bloc physique de sortie précédent depuis la mémoire rapide vers la mémoire lente On prend en entrée le bloc physique correspondant au sous-objet courant étendu de une colonne à gauche et à droite, soit 32x34 et obtenu à l'issue du DMA de l'itération précédente
Effectuer la séquence d'opération spécifique suivante : Pour chaque pixel du bloc physique d' entrée (correspondant au bloc logique Bl) en excluant les deux colonnes de gauche et de droite parcouru de gauche à droite puis de haut en bas
Additionner le pixel situé à gauche du pixel courant et le pixel situé à droite, appliquer la table au résultat et multiplier la sortie de la table par le pixel courant du bloc, stocker le résultat dans le bloc physique courant de sortie (correspondant au bloc logique B4)
Un sixième exemple de traduction est particulièrement adaptée à un processeur vectoriel capable d'appliquer un même calcul aux différents pixels du vecteur, chaque sous-objet est un rectangle par exemple 64 pixels horizontaux ou toute autre valeur égale à la taille d'un vecteur que la plateforme sait traiter et stocker. Cette traduction ne nécessite aucune mémoire car un vecteur est traité à la fois. On obtient ainsi la traduction suivante :
Pour chaque sous-objet Vl de l'objet d'entrée BPl (correspondant au bloc logique Bl) en excluant les deux colonnes de gauche, les sous-objets étant parcourus de gauche à droite puis de haut en bas, effectuer la séquence d'opération spécifique suivante :
En début de chaque ligne créer un vecteur VO contenant à droite les 2 pixels de gauche de la ligne Extraire de VO et Vl, le vecteur V2 correspondant aux deux pixels de droite de VO et aux pixels de gauche de Vl en excluant les 2 pixels de droite de VO; additionner Vl et V2 pour obtenir V2, appliquer la table à chaque pixel de V2 pour obtenir V2, Extraire de VO et Vl, le vecteur V3 correspondant au pixel de droite de VO et aux pixels de gauche de Vl en excluant le pixel de droite de VO; copier Vl dans VO pour l'itération suivante ; multiplier V2 par V3 pour obtenir V2 , stocker le résultat V2 dans le bloc physique courant de sortie. Les troisième, quatrième, cinquième et sixième exemples ci-dessus correspondent à des réalisations selon l'invention pour diverses plateformes avec des architectures diverses notamment en terme de mémoire et de parallélisme. En particulier l'invention permet de : réduire la taille du code en n'utilisant qu'une seule boucle, et/ou
- réduire la taille mémoire, à 0 dans l'exemple, mais dans le cas plus général où il y a des filtres verticaux, il faut quand même quelques lignes de mémoire si on veut éviter de refaire des calculs pour les données en entrée des filtre verticaux, et/ou réduire le nombre d'instructions nécessaires, notamment en groupant les boucles, et/ou - s'adapter à toute taille de vecteur, et/ou s'adapter à toute architecture mémoire
Afin de simplifier, les exemples produisent une image plus petite que l'image d'entrée. On peut facilement si c'est nécessaire, obtenir une image de sortie de taille identique à l'image d'entrée en ajoutant du code en début et fin de chaque ligne pour dupliquer le pixel du bord.
La figure 4 représente la structure des données formatées spécifiques à la sortie d'un moyen de traitement 10, ces données étant destinées à être fournies à une plateforme de traitement 20, selon un procédé conforme à l'invention.
Les données formatées spécifiques sont calculées par un moyen de traitement à partir de données formatées génériques 32 fournies au moyen de traitement et d'un mode de parcours 34 des informations élémentaires dans la plateforme, déterminé par ce moyen de traitement . Les données formatées génériques comportent des premières données 36 contenant des données 38 décrivant au moins une opération générique ou séquence d'opérations à réaliser par le moyen de traitement. Les données formatées génériques comportent également des secondes données 40 se rapportant à la position et l'échelle relative de blocs logiques les uns par rapport aux autres, pour les opérations génériques impliquant au moins deux blocs logiques . A partir des ces données formatées génériques et du mode de parcours 34, le moyen de traitement fournit des données 42 relatives aux opérations spécifiques, et des données 44 relatives aux boucles. Ces données 42 et 44 font partie des données formatées spécifiques 30. La figure 5 représente l'application d'une opération ou opération spécifique à un objet. Dans cette figure, l'objet 55 est découpé en quatre sous-objets 250, 251, 252 et 253. Chacun de ces sous-objets est composé de six informations élémentaires . Parmi la séquence d' opérations à appliquer à l'objet 255 se trouve l'opération 262. Cette opération est appliquée six fois sur chaque sous-objet (262a, 262b, 262c, 262d, 262e et 262f) de manière à produire six résultats (264) . Au cours de ses six applications sur un sous-objet, l'opération 262 fait intervenir des informations élémentaires d'un autre sous-objet. Par exemple, son application au sous-objet 250 se déroule de la façon suivant : l'application 262a fait intervenir les informations élémentaires 254 et 256, l'application 262b fait intervenir les informations élémentaires 256 et 258, l'application 262c fait intervenir les informations élémentaires 258 et 260, l'information élémentaire 260 appartenant au sous- objet 252. De même l'application 262d fait intervenir les informations élémentaires 154 et 156, l'application 62e fait intervenir les informations élémentaires 156 et 158, l'application 62f fait intervenir les informations élémentaires 158 et 160, l'information élémentaire 160 appartenant au sous- objet 252.
On va maintenant décrire plusieurs exemples de modes de parcours pouvant être déterminés par un procédé conforme à l'invention. Chacun de ces modes de parcours est destiné à être utilisé dans une plateforme dont l'architecture est représentée sur l'une des figures 5 à 7.
Dans un premier exemple, illustré par la figure 6, la plateforme de traitement comporte cinq processeurs chaînés en une dimension, c'est-à-dire que le résultat des calculs sortant du processeur Proc A est utilisée en entrée du processeur ProcB, et ainsi de suite. L'information élémentaire sortant du processeur ProcE est appliquée à l'entrée du processeur ProcA. Chacun des processeurs est doté d'une unité de mémoire de capacité limitée, notée MemA à MemE Cette unité de mémoire est destinée à stocker les valeurs de paramètres utiles aux opérations spécifiques effectuées par le processeur, ou des informations élémentaires ou résultats d' opérations qui sont destinés à être réutilisés rapidement par le processeur.
Dans ce premier exemple, le traitement consiste à appliquer aux informations élémentaires composant l'objet une séquence de huit opérations notées OPl à 0P8. Afin de traiter l'objet, celui-ci doit être décomposé en sous-objets de N informations élémentaires chacun. N, qui doit être un multiple de Q (Q = 5, nombre d'unités de calculs), est déterminé en amont de la plateforme par un procédé conforme à l'invention, en fonction notamment des capacités mémoire de la plateforme. Dans l'exemple N = 5.
Par ailleurs, afin d'assurer un séquencement régulier des opérations spécifiques utiles, on crée des opérations spécifiques sans effet, 0P9 et OPlO par un moyen de traitement situé en amont de la plateforme, de telle sorte que le nombre d'opérations spécifiques à réaliser sur chaque sous-objet soit un multiple du nombre de processeurs disponibles.
En fonction du type des opérations spécifiques, on affecte chaque opération à effectuer à un processeur. Ici,
- le processeur A réalise OPl et 0P6, - le processeur B réalise 0P2 et 0P7, - le processeur C réalise 0P3 et 0P8,
- le processeur D réalise 0P4 et 0P9, et
- le processeur E réalise 0P5 et OPlO.
Chaque processeur exécute un jeu d'instructions (InsA à InsE) correspondant aux opérations spécifiques qui lui ont été affectées . De cette affectation dépendent également les paramètres stockés dans les mémoires à capacité limitée. Par exemple, si OPl est une multiplication par 2, la mémoire MemA contiendra le chiffre 2.
Une fois ces affectations réalisées, les opérations se déroulent selon un séquencement décrit par le tableau I ci- dessous :
Dans ce tableau, les instants d' avancement du processus sont notés Tl, T2, T14.
Tableau I
Chaque ligne représente une des 10 opérations spécifiques OPl à OPlO . Chaque colonne représente une des informations élémentaires IEl à IE5 composant chacun des sous- objets à traiter. Cette notation IEl à IE5 est formelle ; elle ne correspond pas forcément à une réalité spatiale ou temporelle. En effet, certaines opérations spécifiques ont pour effet de déplacer les informations élémentaires. Ainsi, l'information IEl traitée par l'opération spécifique 0P2 peut ne pas être le résultat de l'opération spécifique OPl appliquée à l'information IEl, mais le résultat de cette opération spécifique OPl appliquée à l'information IE2, par exemple si l'opération spécifique OPl consiste en un décalage vers la gauche .
Chaque case de ce tableau contient le nom du processeur qui effectue l'opération spécifique, ainsi que le moment où cette opération spécifique est effectuée au cours du traitement. Bien entendu, ce tableau ne représente qu'une partie du traitement. On suppose ici que tous les résultats d'opérations spécifiques nécessaires ont été calculés au préalable dans le traitement. Ainsi, on peut voir qu'à l'instant Tl, le processeur
ProcA effectue l'opération OPl sur la première information IEl du sous-objet 1. A cet instant, les autres processeurs sont en train d' effectuer d' autres opérations non représentées sur ce tableau. A l'instant T5, on voit que chacun des processeurs effectue une opération sur une des informations du sous-objet 1. Lorsqu'un processeur a effectué une opération spécifique sur toutes les informations élémentaires d'un sous- objet, il passe à l'opération suivante parmi celles qui lui ont été affectées. Ainsi, le processeur ProcA effectue, à partir de T6, l'opération 0P6.
Lorsqu'un processeur a effectué toutes les opérations spécifiques qui lui ont été affectées, le bloc suivant est traité. Deux sous-objets différents (sous-objet 1 et sous-objet 2) sont donc traités en même temps dans la plateforme.
Sur ce tableau on constate bien que chaque opération spécifique est effectuée N fois (ici N = 5) .
Ce séquencement est obtenu par le chaînage circulaire en une dimension des processeurs. Les informations élémentaires peuvent donc transiter d'une unité de calcul à l'autre. Par exemple, l'information élémentaire IEl passe par tous les processeurs pour « subir » les opérations spécifiques OPl à 0P5, puis elle remonte au processeur ProcA pour recommencer un cycle et « subir » les opérations 0P6 à 0P7. On rappelle que l'information élémentaire IEl de départ ne sera pas forcément l'information IEl à toutes les étapes.
Dans un deuxième exemple, illustré sur la figure 7, la plateforme contient cinq processeurs reliés à une mémoire commune. Une telle structure est classique : elle correspond à celle d'un processeur vectoriel (« Single Instruction Multiple Data » ou SIMD en anglais). Dans l'exemple, chaque processeur est relié individuellement à une petite mémoire pouvant contenir des paramètres tels qu'une table de correspondance T. Dans cette structure, chaque processeur effectue toutes les opérations spécifiques. Ainsi, tous les processeurs reçoivent le même jeu d' instructions INS .
On considère dans ce deuxième exemple le cas où l'une des opérations consiste en l'utilisation d'une table pour modifier une ou plusieurs informations élémentaires . Comme vu précédemment, chacun des processeurs à accès à sa propre table, toutes les tables étant identiques . Dans une variante chaque mémoire est partagée par un groupe de processeurs . Dans une variante, l'ensemble des processeurs partagent la même mémoire et obtiennent simultanément le même paramètre ; dans ce cas, l'application d'une table de correspondance doit être effectuée par calcul en utilisant un ou plusieurs paramètres permettant, par exemple, de calculer un polynôme.
II s'agit d'une réalisation parallèle : à chaque instant du processus, tous les processeurs réalisent la même opération sur des informations élémentaires différentes. Ce déroulement est illustré par le tableau II ci-dessous : Dans ce tableau, les instants d' avancement du processus sont notés Tl, T2, TlO.
Tableau II
On peut voir dans ce tableau qu'à un instant donné Ti, l'opération spécifique OPi est effectuée par chacun des processeurs ProcA à Proc E respectivement sur les informations élémentaires IEl à IE5. Au bout du lOième incrément, on constate bien que chaque opération spécifique de la séquence d'opérations spécifiques a été réalisée sur chacune des informations élémentaires d'un sous-objet.
Dans ce cas, il apparaît qu'il n'est pas nécessaire de compléter la séquence d'opérations spécifiques par des opérations sans effet, puisque les opérations spécifiques sont réalisées en parallèle par tous les processeurs. De cette façon, une fois l'opération 0P8 terminée, on peut recommencer le processus en appliquant l'opération OPl sur les informations élémentaires constituant le sous-objet suivant.
Dans un troisième exemple, illustré par la figure 8, la plateforme comporte un processeur vectoriel composé de cinq processeurs reliés à une mémoire commune, similaire au processeur vectoriel notamment présent dans un ordinateur de type personnel (PC) .. Ils sont également tous reliés à une petite mémoire pouvant contenir des paramètres, et notamment une table de correspondance. Dans cette structure, chaque processeur effectue toutes les opérations spécifiques. Ainsi, tous les processeurs reçoivent le même jeu d'instructions INS comportant des données décrivant toutes les opérations spécifiques à réaliser.
On considère dans cet exemple le cas où deux opérations spécifiques de suite consistent en l'utilisation d'une table pour modifier une ou plusieurs informations élémentaires. Ici, les tables ne sont présentes qu'à un seul endroit, et les processeurs doivent donc se les partager.
Au début du processus, on est dans une réalisation parallèle, puisque tous les processeurs réalisent en même temps une même opération sur les différentes informations élémentaires d'un sous-objet. Ce déroulement est illustré par le tableau III ci-dessous :
Dans ce tableau, les instants d'avancement du processus sont notés Tl, T2, T18.
Tableau III
On peut voir dans les trois premières lignes de ce tableau qu'à un instant donné Ti, l'opération spécifique OPi est effectuée par chacun des processeurs ProcA à Proc E respectivement sur les informations élémentaires IEl à IE5.
Lorsqu'on arrive à l'opération 0P4 qui utilise une table, on se retrouve face à un problème d'accès, puisque tous les processeurs ne peuvent pas accéder en même temps à cette table. Les processeurs sont donc obligés « d'attendre leur tour », c'est-à-dire d'attendre que le processeur précédent ait fini d'utiliser la table pour pouvoir s'en servir. Ainsi, l'opération 0P4 est effectuée par les processeurs ProcA à ProcE respectivement aux instants T4 à T8. Si l'on suppose que l'opération 0P5 fait également appel à une table, on aura de la même façon : l'opération 0P5 est effectuée par les processeurs ProcA à ProcE respectivement aux instants T9 à T13.
Une fois ces opérations effectuées, le processus peut reprendre normalement.
La figure 9a montre un exemple de réalisation d'une plateforme, comportant plusieurs chaînages circulaires selon une dimension du sous-objet. Dans ce premier exemple, l'objet est une image à deux dimensions, le sous-objet comporte 4 informations élémentaires, et le la plateforme comporte 4 processeurs disposés selon une grille de 4*1 processeurs correspondant à un rectangle de 4 processeurs horizontalement et 1 processeur verticalement. Les processeurs sont appelés de gauche à droite : Pl, P2, P3, et P4. Le procédé met en œuvre également dans cet exemple 2 files :
- une file horizontale FHa est connectée en entrée à une sortie de P4 et en sortie à une entrée du processeur Pl. Une sortie de Pl est connectée à une entrée de P2. Une sortie de P2 est connectée à une entrée de P3, et une sortie de P3 est connectée à une entrée de P4.
- une file verticale FVa est connectée en entrée à une sortie de Pl, P2, P3 et P4 et en sortie à une entrée du processeur Pl, P2, P3 et P4. La séquence d'opérations spécifiques peut mettre en œuvre un nombre arbitraire de filtres horizontaux FH tout en utilisant les 4 processeurs à 100%. Par exemple, dans le cas d'une opération spécifique 0S2 effectuant le calcul d'un filtre constitué d'une addition entre le résultat d'une opération spécifique OSl et le résultat de la même opération spécifique
051 située à gauche : le résultat de l'opération OSl du processeur P4 est mise dans la file FHa et sera utilisé par
052 sur Pl lors du calcul d'un prochain sous-objet ; le résultat de l'opération OSl du processeur P3 est transférée au processeur P4 pour être utilisée par 0S2 sur P4 en combinaison avec le résultat de OSl sur P4;le résultat de l'opération OSl du processeur P2 est transférée au processeur P3 pour être utilisée par 0S2 sur P3 en combinaison avec le résultat de OSl sur P3; le résultat de l'opération OSl du processeur Pl est transférée au processeur P2 pour être utilisée par 0S2 sur P2 en combinaison avec le résultat de
051 sur P2; le résultat de l'opération OSl effectuée par P4 lors d'un calcul d'un précédent sous-objet est sorti de la file FHa et transféré au processeur Pl pour être utilisée par
052 sur Pl en combinaison avec le résultat de OSl sur Pl; Une autre opération spécifique 0S3 de la séquence peut mettre en œuvre un autre filtre horizontal, la file permet de récupérer les données dans le bon ordre . - Mutatis mutandis, la séquence d'opérations spécifiques peut mettre en œuvre un nombre arbitraire de filtres verticaux FV tout en utilisant les 4 processeurs à 100%,
- Enfin, la séquence d'opérations spécifiques peut mettre en œuvre un nombre arbitraire de filtres non séparables selon les 2 dimensions horizontale et verticale FVH tout en utilisant les 4 processeurs à 100% ; par exemple un filtre non séparable 3x3 appliqué sur 4 résultats d'une opération spécifique 0S4, peut solliciter deux fois FVa puis six fois FHa, pour obtenir les 8 jeux de 4 résultats de 0S4 précédemment calculés à combiner avec le jeu de résultat de OS4 du sous-objet courant; par exemple ces filtres non séparables peuvent être utilisés en combinaison avec des filtres verticaux et/ou horizontaux, les 2 files permettent de récupérer les données dans le bon ordre. Lorsque l'on met en œuvre 2 filtres, la séquence d'opérations spécifiques est donc telle qu'au moins deux opérations spécifiques distinctes de la séquence produisent chacune au moins une fois au cours de leurs N applications, un résultat utilisé pour le traitement d'un autre sous-objet. Le résultat utilisé pour le traitement d'un autre sous-objet transite par la (les) file (s) .
De la même façon, la figure 9b montre un second exemple, dans lequel l'objet est une image à deux dimensions, le sous- objet comporte 4 informations élémentaires, et la plateforme comporte 4 processeurs disposés selon une grille de 2*2 processeurs correspondant à un rectangle de 2 processeurs horizontalement et 2 processeurs verticalement. Les processeurs sont appelés de gauche à droite : P4 et P5 sur la ligne du haut et P6 et P7sur la ligne du bas. Le procédé met en œuvre également dans cet exemple 2 files :
- une file horizontale FHb est connectée en entrée à la sortie de P3 et de P6 et en sortie à l'entrée de Pl et P4
- une file verticale FVb est connectée en entrée à une sortie de P4 et P5 et en sortie à une entrée du processeur P6 et
P7.
De même que dans l'exemple de la figure 9a, la séquence d'opérations spécifiques peut mettre en œuvre un nombre arbitraire de filtres verticaux et/ou horizontaux et /ou non séparables tout en utilisant les 4 processeurs à 100%.
Dans une troisième exemple, illustré sur la figure 9c, la plateforme comporte un seul processeur P8, connecté à une file horizontale FHc et à une file verticale FVc. Ces deux files peuvent être utilisées par le processeur pour stocker des résultats d'opérations spécifiques destinées à être réutilisées ultérieurement .
De même que dans l'exemple de la figure 9a, la séquence d'opérations spécifiques peut mettre en œuvre un nombre arbitraire de filtres verticaux et/ou horizontaux et /ou non séparables tout en utilisant le processeur à 100%.

Claims

REVENDICATIONS
1. Procédé pour traiter, dans une plateforme à processeur (s) et mémoire (s), un objet (255) constitué d'informations élémentaires de même nature (254, 256, 258, 260, 154, 156, 158, et 160), ce procédé comprenant l'étape de décomposer l'objet à traiter en au moins deux sous-objets
(250, 251, 252 et 253) , constitués de N informations élémentaires chacun (254, 256, 258, 154, 156, 158), tous les sous-objets (250, 251, 252 et 253) ayant le même nombre N d'informations élémentaires et, le traitement consistant à effectuer au moins une séquence d'opérations spécifiques sur les informations élémentaires de chaque sous-objet (250 , 251 , 252 , 253, le procédé comprenant en outre l'étape d'effectuer, pour chaque sous-objet, au moins N fois chaque opération spécifique, de façon d'une part à faire intervenir au moins une fois chaque information élémentaire de chaque sous-objet, et d' autre part à produire N résultats pour chaque opération spécifique, la séquence d'opérations spécifiques étant telle qu'au moins une opération spécifique (262) de la séquence produit au moins une fois au cours de ses N applications (262a, 262b, 22c, 262d, 262e, 262f) , un résultat utilisé pour le traitement d'un autre sous-objet (260, 160) .
2. Procédé selon la revendication 1 dans lequel, l'objet comprenant DO dimensions et les sous-objets comprenant DSO dimensions sélectionnées parmi les DO dimensions de l'objet, la décomposition de l'objet en sous-objet est telle que, selon au moins une dimension du sous-objet, les sous-objets n'ont pas de recouvrement.
3. Procédé selon l'une des revendication précédentes dans lequel la plateforme comprend au moins une mémoire de communication inter-objet pour stocker les informations élémentaires et/ou résultats d'opérations spécifique réalisés pendant le traitement d'un sous-objet et utilisés pour le traitement d'un autre sous-objet.
4. Procédé selon l'une des revendication précédentes dans lequel la séquence d'opérations spécifique ne comporte qu'une seule opération spécifique mettant en œuvre les mêmes données lors du traitement de l'objet.
5. Procédé selon l'une des revendication précédentes dans lequel, l'objet comprenant DO dimensions, les informations élémentaires sont transmises à la plateforme selon la dimension DE de l'objet puis selon les autres dimensions, les sous-objets comprennent DSO dimensions sélectionnées parmi les DO dimensions de l'objet et comprenant la dimension DE et le traitement comprenant en outre au moins une boucle interne de parcours des sous-objets effectuée selon la dimension DE
6. Procédé selon l'une des revendication précédentes dans lequel, l'objet comprenant DO dimensions, les informations élémentaires sont transmises à la plateforme selon la dimension DE de l'objet puis selon les autres dimensions, les sous-objets comprennent les DO dimensions de l'objet ou les sous-objets comprennent DO-I dimensions sélectionnées parmi les DO dimensions de l'objet et ne comprenant pas la dimension DE, et le traitement comprenant en outre au moins une boucle interne de parcours des sous-objets effectuée selon la dimension DE.
7. Procédé selon l'une des revendications précédentes dans lequel la taille des sous-objets dans chaque dimension est déterminée en fonction de la taille de l'objet, et/ou du débit de transmission des informations élémentaires transmises à la plateforme, et/ou de la vitesse de calcul de la plateforme et/ou de la taille et du débit d'au moins une mémoire de la plateforme.
8. Procédé selon l'une des revendications précédentes dans lequel au moins une partie des opérations spécifiques met en œuvre au moins une valeur de paramètre et sont effectuées par Q unités de calculs calculant la même opération spécifique simultanément, et dans lequel, la séquence d'opérations spécifiques comprenant au moins une opération spécifique de sélection, l' opération spécifique de sélection effectue la sélection d' une valeur de paramètre parmi C valeurs de paramètres en même temps sur les Q unités de calcul de manière différentiée par unité de calcul en fonction d'au moins une information élémentaire et/ou d'au moins un résultat d'opération spécifique et/ou d'au moins une valeur de paramètre.
9. Procédé selon l'une des revendications précédentes dans lequel au moins une partie des opérations spécifiques sont effectuées par Q unités de calculs calculant la même opération spécifique simultanément, et dans lequel, la séquence d' opérations spécifiques comprenant au moins une opération spécifique de sélection, l' opération spécifique de sélection effectue la sélection d'une donnée parmi C données en même temps sur les Q unités de calcul de manière différentiée par unité de calcul en fonction d' un déplacement relatif obtenu à partir d' au moins une information élémentaire et/ou d' au moins un résultat d' opération spécifique et/ou d' au moins une valeur de paramètre .
10. Procédé selon l'une des revendications précédentes dans lequel la séquence d'opérations spécifiques comprend au moins une opération spécifique de position et l'objet comporte DO dimensions, cette opération spécifique de position produisant une information de position selon une des DO dimensions.
11. Procédé selon l'une des revendications précédentes dans lequel la séquence d'opérations spécifiques comprend au moins une opération spécifique produisant une position relative en fonction d'au moins une information élémentaire et/ou d'au moins un résultat d'opération spécifique et/ou d'au moins une valeur de paramètre.
12. Procédé selon l'une des revendications précédentes dans lequel au moins une partie des opérations spécifiques est effectuée par Q unités de calculs, Q étant égal à N ou un sous- multiple de N.
13. Procédé selon la revendication 12 sans lequel Q et N sont différents et le traitement du sous-objet comprend une seule boucle interne de N/Q itérations .
14. Procédé selon la revendication 12 ou 13 dans lequel les Q unités de calcul sont identique.
15. Procédé selon l'une des revendications précédentes dans lequel les N résultats issus d'une même opération spécifique sont calculés par une même unité de calcul.
16. Procédé selon l'une des revendications précédentes dans lequel, au moins une opération spécifique mettant en œuvre au moins un paramètre, cette opération spécifique est effectuée par au moins une unité de calcul ayant accès à une unité de mémoire contenant une partie des valeurs des paramètres, cette partie étant déterminée en fonction des opérations spécifiques effectuées par cette unité de calcul.
17. Procédé selon l'une des revendications précédentes dans lequel, au moins une opération spécifique mettant en oeuvre au moins un paramètre, la valeur de ce paramètre est fonction de la position du sous-objet et/ou de l'information élémentaire dans l'objet à traiter.
18. Procédé selon l'une des revendications précédentes dans lequel les opérations spécifiques sont effectuées par des unités de calcul chaînées .
19. Procédé selon l'une des revendications précédentes dans lequel les opérations spécifiques sont effectuées par des unités de calcul chaînées selon un chaînage à une dimension.
20. Procédé selon l'une des revendications précédentes dans lequel les opérations spécifiques sont effectuées par des unités de calcul chaînées selon au moins un chaînage circulaire.
21. Procédé selon l'une des revendications précédentes dans lequel les opérations spécifiques sont effectuées par des unités de calcul chaînées selon au moins un chaînage circulaire ; ledit chaînage circulaire comportant en outre au moins une file .
22. Procédé selon l'une des revendications précédentes dans lequel le sous-objet comporte DSO dimensions, les opérations spécifiques sont effectuées par des unités de calcul chaînées selon au moins un chaînage circulaire pour chaque dimension du sous-objet ; le (s) chaînage (s) circulaire (s) pour chaque dimension particulière Dl du sous-objet comportant en outre au moins une file partagée ou non entre le (s) chaînage (s) circulaire (s) pour la dimension particulière Dl du sous-objet.
23. Procédé selon l'une des revendications précédentes dans lequel le sous-objet comporte DSO dimensions, les opérations spécifiques sont effectuées par des unités de calcul chaînées selon une dimension déterminée DD du sous-objet au moyen d' au moins un chaînage circulaire CCI ; ledit chaînage circulaire CCI comportant en outre au moins une file ; le procédé comprenant en outre l'étape, pour au moins une instruction spécifique, pour chaque application de ladite instruction spécifique de transmettre le résultat de ladite application de l'instruction spécifique effectuée sur une unité de calcul UCl à l'unité de calcul UC2 ou file qui suit ladite unité de calcul UCl selon ledit chaînage.
24. Procédé selon l'une des revendications précédentes comprenant en outre l'étape de grouper en mémoire les résultats d'opérations spécifiques utilisées lors du sous-traitement d'un autre sous-objet en fonction de la position relative dudit autre sous-objet par rapport au dit sous-objet.
25. Procédé selon l'une des revendications précédentes dans lequel les opérations spécifiques sont effectuées par des unités de calcul chaînées /ledit procédé comprenant l'étape d'affecter les opérations spécifiques aux unités de calcul en fonction du chaînage des unités de calcul et de la séquence.
26. Procédé selon l'une des revendications précédentes dans lequel l'ordre et/ou la nature des opérations spécifiques sont modifiables.
27. Procédé selon l'une des revendications précédentes dans lequel les opérations spécifiques sont effectuées par des unités de calcul câblées selon au moins une séquence prédéterminée d'opérations spécifiques.
28. Procédé selon l'une des revendications précédentes dans lequel au moins une opération spécifique est effectuée par au moins une unité de calcul dotée d'une unité de mémoire de capacité limitée pour stocker des informations élémentaires et/ou des résultats d'opérations spécifiques, cette mémoire contenant au plus seize informations élémentaires et/ou résultats d' opérations spécifiques .
29. Procédé selon l'une des revendications précédentes dans lequel au moins une opération spécifique est effectuée par au moins une unité de calcul ayant accès à une unité de mémoire de communication, contenant au moins une information élémentaire et/ou au moins un résultat d'opération spécifique issus d'autres sous-objets.
30. Procédé selon la revendication 29 dans lequel l'unité de mémoire de communication a un débit d'accès inférieur à 0.3*N accès/sous-objet/opération spécifique.
31. Procédé selon l'une des revendications précédentes, notamment utilisé dans le cas où la plateforme de traitement est intégrée dans un téléphone mobile, dans lequel la valeur de Q est fixée à 1 et N est compris entre 2 et 16.
32. Procédé selon l'une des revendications précédentes dans lequel au moins une opération spécifique est effectuée simultanément par au moins deux unités de calcul identiques .
33. Procédé selon l'une des revendications précédentes dans lequel au moins une partie des résultats d'opérations spécifiques est stockée en mémoire à une adresse de la forme « adresse de base + décalage » ou « (adresse de base + décalage) modulo (taille d'une mémoire tampon) », le décalage étant constant pour tous les résultats d'une même opération spécifique .
34. Procédé selon la revendication 33 dans lequel on modifie l'adresse de base à chaque fois que l'on change de sous- objet dans le processus de traitement.
35. Procédé selon l'une des revendications précédentes dans lequel au moins une partie des résultats d'opérations spécifiques est stockée en mémoire à une adresse prédéterminée pour tous les résultats d'une même opération.
36. Procédé selon l'une des revendications précédentes dans lequel, les opérations spécifiques étant effectuées par au moins une unité de calcul dotée d' au moins une unité de registres et d'au moins une mémoire de communication entre sous- objets, le nombre de transistors de la plateforme de traitement est inférieur à 10000 par unité de calcul, y compris l'unité de registre associée sans la mémoire de communication.
37. Procédé selon l'une des revendications précédentes dans lequel on fournit à la plateforme, de préférence directement, des données formatées spécifiques calculées à partir de données formatées génériques, ces données formatées génériques comprenant des premières données décrivant au moins une séquence d'opérations génériques, le calcul des données formatées spécifiques étant effectué en tenant compte d'un mode de parcours des informations élémentaires dans la plateforme et d'opérations spécifiques issues des opérations génériques, ces opérations spécifiques formant la séquence d'opérations spécifiques à effectuer sur un objet lors de son traitement dans la plateforme.
38. Procédé selon l'une des revendications précédentes dans lequel l'objet à traiter est une image et les informations élémentaires sont des pixels de cette image.
39. Procédé selon l'une des revendications précédentes dans lequel la plateforme de traitement fait partie d'un appareil de capture et/ou de restitution d'image, et dans lequel, les opérations mettant en œuvre des paramètres dont les valeurs dépendent de la séquence d'opérations et/ou de la plateforme de traitement et/ou de l'objet à traiter, ces valeurs de paramètres sont liées aux caractéristiques de l'optique et/ou du capteur et/ou de l'imageur et/ou de l'électronique et/ou du logiciel de l'appareil de capture et/ou de restitution d'image.
40. Procédé selon l'une des revendications 1 à 37 dans lequel l'objet à traiter est un signal sonore numérisé et les informations élémentaires sont les échantillons sonores de ce signal.
41. Procédé selon l'une des revendications 1 à 37 dans lequel l'objet à traiter est un maillage numérique et les informations élémentaires sont les informations spatiales et temporelles caractérisant chaque point du maillage.
42. Plateforme à processeur (s) et mémoire (s), destinée à traiter un objet (55) constitué d'informations élémentaires de même nature (54, 56, 58, 60, 154, 156, 158, et 160) , comprenant des moyens pour décomposer l'objet à traiter en au moins deux sous-objets (50, 51, 52 et 53) constitués de N informations élémentaires chacun (54, 56, 58, 154, 156, 158) , tous les sous- objets (50, 51, 52 et 53) ayant le même nombre N d'informations élémentaires et, des moyens pour effectuer au moins une séquence d'opérations spécifiques sur les informations élémentaires de chaque sous-objet (50 , 51 , 52 , 53) , ces moyens de traitement comportant des moyens pour effectuer, pour chaque sous-objet, au moins N fois chaque opération spécifique, de façon, d'une part, à faire intervenir au moins une fois chaque information élémentaire de chaque sous-objet, et, d'autre part, à produire N résultats pour chaque opération spécifique, les moyens de traitement étant tels qu' au moins une opération spécifique (62) de la séquence d'opérations spécifiques produit au moins une fois au cours de ses N applications (62a, 62b, 62c, 62d, 62e, 62f) , à un résultat utilisé pour le traitement d'un autre sous-objet (60, 160) .
43. Plateforme selon la revendication 42 dans laquelle, l'objet à traiter comprenant DO dimensions, les sous-objets comprennent DSO dimensions sélectionnées parmi les DO dimensions de l'objet et les moyens pour décomposer l'objet sont tels que, selon au moins une dimension du sous-objet, les sous-objets n'ont pas de recouvrement.
44. Plateforme selon la revendication 42 ou 43 comprenant au moins une mémoire de communication inter-objet pour stocker les informations élémentaires et/ou résultats d'opérations spécifiques réalisés pendant le traitement d'un sous-objet et utilisés pour le traitement d'un autre sous- objet .
45. Plateforme selon l'une des revendications 42 à 44comprenant des moyens pour effectuer une séquence d'opérations spécifiques ne comportant qu'une seule opération spécifique mettant en œuvre les mêmes données lors du traitement de l'objet.
46. Plateforme selon l'une des revendications 42 à 45 dans laquelle, l'objet comprenant DO dimensions, les informations élémentaires sont reçues selon la dimension DE de l'objet puis selon les autres dimensions, les sous-objets comprenant DSO dimensions sélectionnées parmi les DO dimensions de l'objet et comprenant la dimension DE, la plateforme étant telle qu'une boucle interne de parcours des sous-objets, comprise dans le traitement s'effectue selon la dimension DE.
47. Plateforme selon l'une des revendications 42 à 46 dans laquelle, l'objet comprenant DO dimensions, les informations élémentaires sont reçues selon la dimension DE de l'objet puis selon les autres dimensions, les sous-objets comprenant les DO dimensions de l'objet ou DO-I dimensions sélectionnées parmi les DO dimensions de l'objet, la dimension DE n'étant pas comprise, la plateforme étant telle qu'une boucle interne de parcours des sous-objets, comprise dans le traitement, s'effectue selon la dimension DE.
48. Plateforme selon l'une des revendications 42 à 47 dans laquelle les moyens pour décomposer l'objet à traiter sont tels que la taille des sous-objets dans chaque dimension est déterminée en fonction de la taille de l'objet et/ou du débit des informations élémentaires reçues par la plateforme, et/ou de la vitesse de calcul de la plateforme et/ou de la taille et du débit d'au moins une mémoire de la plateforme.
49. Plateforme selon l'une des revendications 42 à 48 comprenant, dans le cas où au moins une partie des opérations spécifiques met en œuvre au moins une valeur de paramètres, Q unités de calculs calculant la même opération spécifique simultanément, la plateforme comprenant en outre des moyens pour effectuer au moins une séquence d'opérations spécifiques comprenant au moins une opération spécifique de sélection, cette opération spécifique de sélection effectuant la sélection d'une valeur de paramètre parmi C valeurs de paramètres en même temps sur les Q unités de calcul de manière différentiée par unité de calcul, en fonction d'au moins une information élémentaire et/ou d'au moins un résultat d'opération spécifique et/ou d'au moins une valeur de paramètre.
50. Plateforme selon l'une des revendications 42 à 49 comprenant Q unités de calculs calculant la même opération spécifique simultanément, la plateforme comprenant en outre des moyens pour effectuer au moins une séquence d'opérations spécifiques comprenant au moins une opération spécifique de sélection, cette opération spécifique de sélection effectuant la sélection d'une donnée parmi C donnée en même temps sur les Q unités de calcul de manière différentiée par unité de calcul, en fonction d'au moins une information élémentaire et/ou d'au moins un résultat d' opération spécifique et/ou d' au moins une valeur de paramètre.
51. Plateforme selon l'une des revendications 42 à 50 comprenant des moyens pour effectuer une séquence d' opérations spécifiques comprenant au moins une opération spécifique de position, et, l'objet comportant DO dimensions, cette opération spécifique de position produisant une information de position selon une des DO dimensions .
52. Plateforme selon l'une des revendications 42 à 51 comprenant des moyens pour effectuer une séquence d' opérations spécifiques comprenant au moins une opération spécifique produisant une position relative en fonction d'au moins une information élémentaire et/ou d'au moins un résultat d'opération spécifique et/ou d'au moins une valeur de paramètre.
53. Plateforme selon l'une des revendication 42 à 52 comprenant Q unités de calculs pour effectuer au moins une partie des opérations spécifiques, Q étant égal à N ou un sous- multiple de N.
54. Plateforme selon la revendication 53 dans laquelle le nombre d'unités de calcul Q est différent de N, et dans laquelle le traitement du sous-objet comprend une seule boucle interne de N/Q itérations .
55. Plateforme selon la revendication 53 ou 54 dans laquelle les Q unités de calcul sont identique.
56. Plateforme selon l'une des revendications 42 à 55 comprenant des moyens pour que les N résultats issus d'une même opération spécifique soient calculés par une même unité de calcul .
57. Plateforme selon l'une des revendications 42 à 56 comprenant : des moyens pour, lorsqu'au moins une opération spécifique met en œuvre au moins un paramètre, effectuer cette opération spécifique, et une unité de calcul ayant accès à une unité de mémoire contenant une partie des valeurs des paramètres, la plateforme étant telle que cette partie étant déterminée en fonction des opérations spécifiques effectuées par cette unité de calcul.
58. Plateforme selon l'une des revendications 42 à 57 comprenant des moyens pour que, lorsqu'au moins une opération spécifique met en oeuvre au moins un paramètre, la valeur de ce paramètre soit fonction de la position du sous-objet et/ou de l'information élémentaire dans l'objet à traiter.
59. Plateforme selon l'une des revendications 42 à 58 comprenant des unités de calcul chaînées .
60. Plateforme selon l'une des revendications 42 à 59 comprenant des unités de calcul chaînées selon un chaînage à une dimension.
61. Plateforme selon l'une des revendications 42 à 60 comprenant des unités de calcul chaînées selon au moins un chaînage circulaire.
62. Plateforme selon l'une des revendications 42 à 61 comprenant des unités de calcul chaînées selon au moins un chaînage circulaire, ce chaînage circulaire comportant en outre au moins une file.
63. Plateforme selon l'une des revendications 42 à 62, comportant des unités de calcul chaînées selon au moins un chaînage circulaire pour chaque dimension du sous objet, le sous objet comportant DSO dimensions, et le (s) chaînage (s) circulaire (s) pour chaque dimension particulière Dl du sous objet comportant en outre au moins une file partagée, ou non entre le (s) chaînage (s) circulaire (s) pour la dimension particulière Dl du sous objet.
64. Plateforme selon l'une des revendications 42 à 63 comportant des unités de calcul chaînées selon au moins une dimension déterminée DD du sous objet au moyen d'un chaînage circulaire CCI ; ledit chaînage circulaire comportant en outre au moins une file ; et la plateforme étant telle que pour chaque application d'une instruction spécifique, le résultat de cette application dans une première unité de calcul UCl à une unité de calcul UC2 ou file qui suit ladite première unité de calcul UCl selon ledit chaînage.
65. Plateforme selon l'une des revendications 42 à 64 comportant au moins une mémoire pour enregistrer les résultats d'opérations spécifiques utilisées lors du sous traitement d'un autre sous objet en fonction de la position relative dudit autre sous objet par rapport au dit sous objet.
66. Plateforme selon l'une des revendications 42 à 65 comprenant des unités de calcul chaînées selon au moins un chaînage circulaire, et des moyens pour affecter les opérations spécifiques aux unités de calcul en fonction du chaînage des unités de calcul et de la séquence.
67. Plateforme selon l'une des revendications 42 à 66 comprenant des moyens pour que l'ordre et/ou la nature des opérations spécifiques soi (en) t modifiable (s) .
68. Plateforme selon l'une des revendications 42 à 67 comprenant des unités de calcul câblées pour effectuer les opérations spécifiques selon au moins une séquence prédéterminée d'opérations spécifiques.
69. Plateforme selon l'une des revendications 42 à 68 comprenant au moins une unité de calcul dotée d'une unité de mémoire de capacité limitée pour stocker des informations élémentaires et/ou des résultats d'opérations spécifiques, cette mémoire contenant au plus seize informations élémentaires et/ou résultats d' opérations spécifiques .
70. Plateforme selon l'une des revendications 42 à 69 comprenant au moins une unité de calcul ayant accès à une unité de mémoire de communication, contenant au moins une information élémentaire et/ou au moins un résultat d'opérations spécifiques issus d'autres sous-objets.
71. Plateforme selon la revendication 70 dans laquelle l'unité de mémoire de communication a un débit d'accès inférieur à 0.3*N accès/sous-objet/opération spécifique.
72. Plateforme selon l'une des revendications 42 à 71, notamment intégrée dans un téléphone mobile, comprenant des moyens pour que la valeur de Q soit fixée à 1 et pour que la valeur de N soit comprise entre 2 et 16.
73. Plateforme selon l'une des revendications 42 à 72 comprenant au moins deux unités de calcul identiques effectuant simultanément au moins une même opération spécifique.
74. Plateforme selon l'une des revendications 42 à 73 comprenant des moyens pour qu'au moins une partie des résultats d'opérations spécifiques soit stockée en mémoire à une adresse de la forme « adresse de base + décalage » ou « adresse de base + décalage modulo (taille d'une mémoire tampon) », le décalage étant constant pour tous les résultats d'une même opération spécifique .
75. Plateforme selon la revendication 74 comprenant des moyens pour modifier l'adresse de base à chaque fois que l'on change de sous-objet dans le processus de traitement.
76. Plateforme selon l'une des revendications 42 à 75 comprenant des moyens pour qu'au moins une partie des résultats d'opérations spécifiques soit stockée en mémoire à une adresse prédéterminée pour tous les résultats d'une même opération.
77. Plateforme selon l'une des revendications 42 à 76 comprenant au moins une unité de calcul dotée d' au moins une unité de registres et d'au moins une mémoire de communication, et dans laquelle le nombre de transistors est inférieur à 10000 par unité de calcul, y compris l'unité de registre associée sans la mémoire de communication.
78. Plateforme selon l'une des revendications 42 à 77 comprenant des moyens pour recevoir en entrée, de préférence directement, des données formatées spécifiques calculées à partir de données formatées génériques, ces données formatées génériques comprenant des premières données décrivant au moins une séquence d'opérations génériques, le calcul des données formatées spécifiques étant effectué en tenant compte d'un mode de parcours des informations élémentaires dans la plateforme et d'opérations spécifiques issues des opérations génériques, ces opérations spécifiques formant une séquence d' opérations spécifiques, et la plateforme comprenant des moyens pour effectuer cette séquence d'opérations spécifiques sur un objet.
79. Plateforme selon l'une des revendications 42 à 78 comprenant des moyens pour traiter un objet étant constitué par une image, les informations élémentaires étant des pixels de cette image.
80. Plateforme selon l'une des revendications 42 à 79 faisant partie d'un appareil de capture et/ou de restitution d' image, les opérations mettant en œuvre des paramètres dont les valeurs dépendent de la séquence d'opérations et/ou de cette plateforme et/ou de l'objet à traiter, ces valeurs de paramètres étant liées aux caractéristiques de l'optique et/ou du capteur et/ou de l'imageur et/ou de l'électronique et/ou du logiciel de l'appareil de capture et/ou de restitution d'image.
81. Plateforme selon l'une des revendications 42 à 80 comprenant des moyens pour traiter un objet étant constitué par un signal sonore numérisé, les informations élémentaires étant les échantillons sonores de ce signal .
82. Plateforme selon l'une des revendications 2 à 81 comprenant des moyens pour traiter un objet étant constitué par un maillage numérique, les informations élémentaires sont les informations spatiales et temporelles caractérisant chaque point du maillage.
83. Objet traité par un procédé de traitement conforme à l'une des revendications 1 à 41.
EP06847180A 2005-12-19 2006-12-19 Procede pour traiter un objet dans une plateforme a processeur(s) et memoire(s) et plateforme utilisant le procede Ceased EP1964053A2 (fr)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR0553945A FR2895102B1 (fr) 2005-12-19 2005-12-19 Procede pour traiter un objet dans une plateforme a processeur(s) et memoire(s) et plateforme utilisant le procede
PCT/FR2006/051390 WO2007071884A2 (fr) 2005-12-19 2006-12-19 Procede pour traiter un objet dans une plateforme a processeur(s) et memoire(s) et plateforme utilisant le procede

Publications (1)

Publication Number Publication Date
EP1964053A2 true EP1964053A2 (fr) 2008-09-03

Family

ID=37307163

Family Applications (1)

Application Number Title Priority Date Filing Date
EP06847180A Ceased EP1964053A2 (fr) 2005-12-19 2006-12-19 Procede pour traiter un objet dans une plateforme a processeur(s) et memoire(s) et plateforme utilisant le procede

Country Status (7)

Country Link
US (1) US8412725B2 (fr)
EP (1) EP1964053A2 (fr)
JP (1) JP5025658B2 (fr)
KR (1) KR101391498B1 (fr)
CN (1) CN101375311A (fr)
FR (1) FR2895102B1 (fr)
WO (1) WO2007071884A2 (fr)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2002317219A1 (en) * 2001-07-12 2003-01-29 Do Labs Method and system for modifying a digital image taking into account its noise
US8515052B2 (en) 2007-12-17 2013-08-20 Wai Wu Parallel signal processing system and method
US8755515B1 (en) 2008-09-29 2014-06-17 Wai Wu Parallel signal processing system and method
NZ603057A (en) 2010-03-18 2014-10-31 Nuodb Inc Database management system
US20150070138A1 (en) * 2012-07-06 2015-03-12 Alan Haddy Detection of buried assets using current location and known buffer zones
US9501363B1 (en) 2013-03-15 2016-11-22 Nuodb, Inc. Distributed database management system with node failure detection
US11176111B2 (en) 2013-03-15 2021-11-16 Nuodb, Inc. Distributed database management system with dynamically split B-tree indexes
US10740323B1 (en) 2013-03-15 2020-08-11 Nuodb, Inc. Global uniqueness checking in distributed databases
US10037348B2 (en) 2013-04-08 2018-07-31 Nuodb, Inc. Database management system with database hibernation and bursting
US10255547B2 (en) * 2014-12-04 2019-04-09 Nvidia Corporation Indirectly accessing sample data to perform multi-convolution operations in a parallel processing system
US10884869B2 (en) 2015-04-16 2021-01-05 Nuodb, Inc. Backup and restore in a distributed database utilizing consistent database snapshots
US10067969B2 (en) 2015-05-29 2018-09-04 Nuodb, Inc. Table partitioning within distributed database systems
US10180954B2 (en) 2015-05-29 2019-01-15 Nuodb, Inc. Disconnected operation within distributed database systems
SG11202001323XA (en) 2017-08-15 2020-03-30 Nuodb Inc Index splitting in distributed databases

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4839801A (en) * 1986-11-03 1989-06-13 Saxpy Computer Corporation Architecture for block processing computer system
US4939642A (en) * 1989-02-01 1990-07-03 The Board Of Trustees Of The Leland Stanford Jr. University Virtual bit map processor
DE69421103T2 (de) * 1993-01-22 2000-06-08 Matsushita Electric Industrial Co., Ltd. Programmgesteuertes Prozessor
JP3316901B2 (ja) * 1993-01-22 2002-08-19 松下電器産業株式会社 データ分配回路
JP3305406B2 (ja) * 1993-04-26 2002-07-22 松下電器産業株式会社 プログラム制御のプロセッサ
WO1999052040A1 (fr) * 1998-04-08 1999-10-14 Stellar Technologies, Ltd. Architecture pour traitement graphique
FR2827459B1 (fr) * 2001-07-12 2004-10-29 Poseidon Procede et systeme pour fournir a des logiciels de traitement d'image des informations formatees liees aux caracteristiques des appareils de capture d'image et/ou des moyens de restitution d'image
US7532766B2 (en) * 2001-07-12 2009-05-12 Do Labs Method and system for producing formatted data related to geometric distortions
AU2002317219A1 (en) * 2001-07-12 2003-01-29 Do Labs Method and system for modifying a digital image taking into account its noise
US6980980B1 (en) * 2002-01-16 2005-12-27 Microsoft Corporation Summary-detail cube architecture using horizontal partitioning of dimensions
US7158141B2 (en) * 2002-01-17 2007-01-02 University Of Washington Programmable 3D graphics pipeline for multimedia applications
US20070285429A1 (en) * 2003-12-22 2007-12-13 Koninklijke Philips Electronic, N.V. System for Generating a Distributed Image Processing Application

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See references of WO2007071884A2 *

Also Published As

Publication number Publication date
KR20080080398A (ko) 2008-09-03
CN101375311A (zh) 2009-02-25
WO2007071884A2 (fr) 2007-06-28
US8412725B2 (en) 2013-04-02
JP2009524123A (ja) 2009-06-25
FR2895102B1 (fr) 2012-12-07
WO2007071884A3 (fr) 2007-08-16
US20080320038A1 (en) 2008-12-25
JP5025658B2 (ja) 2012-09-12
KR101391498B1 (ko) 2014-05-07
FR2895102A1 (fr) 2007-06-22

Similar Documents

Publication Publication Date Title
WO2007071884A2 (fr) Procede pour traiter un objet dans une plateforme a processeur(s) et memoire(s) et plateforme utilisant le procede
WO2007071883A2 (fr) Procede et systeme de traitement de donnes numeriques
CN111194458B (zh) 用于处理图像的图像信号处理器
EP0248729B1 (fr) Dispositifs de calcul de transformées cosinus monodimensionnelles, et dispositif de codage et dispositif de décodage d'images comportant de tels dispositifs de calcul
TW202134997A (zh) 用於對影像進行去雜訊的方法、用於擴充影像資料集的方法、以及使用者設備
EP1523730B1 (fr) Procede et systeme pour calculer une image transformee a partir d'une image numerique
Liu et al. Tape: Task-agnostic prior embedding for image restoration
Henz et al. Deep joint design of color filter arrays and demosaicing
EP0206847B1 (fr) Dispositifs de calcul de transformées cosinus, dispositif de codage et dispositif de décodage d'images comportant de tels dispositifs de calcul
EP0369854B1 (fr) Procédé et circuit de traitement par bloc de signal bidimensionnel d'images animées
BE897441A (fr) Calculateur associatif permettant une multiplication rapide
FR3091375A1 (fr) Instruction de chargement-stockage
FR2782592A1 (fr) Dispositif et procede de compression de donnees d'images recues a partir d'un capteur d'images a configuration bayer, et systeme utilisant ce dispositif
FR2588142A1 (fr) Systeme permettant le traitement a haute vitesse par convolutions de donnees d'image.
WO2007071882A2 (fr) Procede pour fournir des donnees a un moyen de traitement numerique
Mazumdar et al. A hardware-friendly bilateral solver for real-time virtual reality video
CN116547694A (zh) 用于对模糊图像去模糊的方法和系统
Ma et al. Searching for fast demosaicking algorithms
CN113298740A (zh) 一种图像增强方法、装置、终端设备及存储介质
FR2823050A1 (fr) Dispositif implementant conjointement un post-traitement et un decodage de donnees
EP2901411B1 (fr) Dispositif de decomposition d'images par transformee en ondelettes
US9779470B2 (en) Multi-line image processing with parallel processing units
EP2221727A1 (fr) Système et procédé de traîtement de données numériques
Sambamurthy et al. Scalable intelligent median filter core with adaptive impulse detector
Liang et al. Pixel-wise exposure control for single-shot HDR imaging: A joint optimization approach

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

17P Request for examination filed

Effective date: 20080606

AK Designated contracting states

Kind code of ref document: A2

Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LI LT LU LV MC NL PL PT RO SE SI SK TR

17Q First examination report despatched

Effective date: 20081014

111Z Information provided on other rights and legal means of execution

Free format text: AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU LV MC NL PL PT RO SE SI SK TR

Effective date: 20100420

Free format text: AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU LV MC NL PL PT RO SE SI SK TR

Effective date: 20090813

111Z Information provided on other rights and legal means of execution

Free format text: AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU LV MC NL PL PT RO SE SI SK TR

Effective date: 20090813

Free format text: AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU LV MC NL PL PT RO SE SI SK TR

Effective date: 20100420

Free format text: AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU LV MC NL PL PT RO SE SI SK TR

Effective date: 20100906

APBK Appeal reference recorded

Free format text: ORIGINAL CODE: EPIDOSNREFNE

APBN Date of receipt of notice of appeal recorded

Free format text: ORIGINAL CODE: EPIDOSNNOA2E

APBR Date of receipt of statement of grounds of appeal recorded

Free format text: ORIGINAL CODE: EPIDOSNNOA3E

APAF Appeal reference modified

Free format text: ORIGINAL CODE: EPIDOSCREFNE

111Z Information provided on other rights and legal means of execution

Free format text: AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU LV MC NL PL PT RO SE SI SK TR AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU LV MC NL PL PT RO SE SI SK TR AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU LV MC NL PL PT RO SE SI SK TR AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU LV MC NL PL PT RO SE SI SK TR

Effective date: 20090813

DAX Request for extension of the european patent (deleted)
111Z Information provided on other rights and legal means of execution

Free format text: AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU LV MC NL PL PT RO SE SI SK TR AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU LV MC NL PL PT RO SE SI SK TR AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU LV MC NL PL PT RO SE SI SK TR AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU LV MC NL PL PT RO SE SI SK TR AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU LV MC NL PL PT RO SE SI SK TR

Effective date: 20090813

RAP1 Party data changed (applicant data changed or rights of an application transferred)

Owner name: GOPRO TECHNOLOGY FRANCE SAS

RAP1 Party data changed (applicant data changed or rights of an application transferred)

Owner name: GOPRO, INC.

REG Reference to a national code

Ref country code: DE

Ref legal event code: R003

APBT Appeal procedure closed

Free format text: ORIGINAL CODE: EPIDOSNNOA9E

APAM Information on closure of appeal procedure modified

Free format text: ORIGINAL CODE: EPIDOSCNOA9E

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION HAS BEEN REFUSED

18R Application refused

Effective date: 20171115