EP2332067A1 - Device for the parallel processing of a data stream - Google Patents

Device for the parallel processing of a data stream

Info

Publication number
EP2332067A1
EP2332067A1 EP09779672A EP09779672A EP2332067A1 EP 2332067 A1 EP2332067 A1 EP 2332067A1 EP 09779672 A EP09779672 A EP 09779672A EP 09779672 A EP09779672 A EP 09779672A EP 2332067 A1 EP2332067 A1 EP 2332067A1
Authority
EP
European Patent Office
Prior art keywords
data
processing
calculation
block
registers
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.)
Withdrawn
Application number
EP09779672A
Other languages
German (de)
French (fr)
Inventor
Laurent Letellier
Mathieu Thevenin
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.)
Commissariat a lEnergie Atomique et aux Energies Alternatives CEA
Original Assignee
Commissariat a lEnergie Atomique CEA
Commissariat a lEnergie Atomique et aux Energies Alternatives CEA
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 Commissariat a lEnergie Atomique CEA, Commissariat a lEnergie Atomique et aux Energies Alternatives CEA filed Critical Commissariat a lEnergie Atomique CEA
Publication of EP2332067A1 publication Critical patent/EP2332067A1/en
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • G06F15/8015One dimensional arrays, e.g. rings, linear arrays, buses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Definitions

  • the invention relates to a device for processing a data stream. It is located in the field of computational architectures and finds particular utility in embedded multimedia type applications incorporating a video sensor. These include mobile telephony, mobile media players, cameras and digital camcorders.
  • the invention is also useful in telecommunications applications and, more generally, in any signal processing chain processing high speed digital data. Signal processing in general, and image processing in particular, require significant computing power, especially in recent years with the rapid increase in the resolution of image sensors.
  • strong constraints in terms of manufacturing costs are added to the power consumption constraints (of the order of a few hundred milliwatts). To meet these constraints, image processing is commonly performed from dedicated computing modules operating in data flow mode.
  • the "data flow” mode commonly called “data flow” in the Anglo-Saxon literature, is understood as a data processing mode according to which the data entering the calculation module are processed as and when rate of their arrival, a result being provided at the output of the calculation module at the same rate, possibly after a latency time.
  • the dedicated calculation modules make it possible to comply with manufacturing cost constraints due to their small silicon surface and the performance constraints, particularly as regards computing power and power consumption.
  • the supported processing can not be modified after the realization of the modules. At best, these modules are configurable. Otherwise, said, a number of processing related parameters may be modified after the implementation.
  • a circuit includes a data processing unit with very long instruction words, called VLIW unit for "Very Long Instruction Word”, and a unit for executing an instruction on several calculation units, called unit SIMD for "Single Instruction Multiple Data”.
  • VLIW and / or SIMD type calculation units are installed in the circuit as a function of the computing power required.
  • the choice of the type of unit to be included in the circuit, of their number and their chaining is decided before the realization of the circuit by an analysis of the application code and the necessary resources.
  • the order in which the units are chained is fixed and it does not allow to change thereafter the sequence of treatments.
  • the units are generally quite complex because the control code of the application is not separated from the processing code. Thus, the processing operators of these units are large, which leads to an architecture whose silicon surface and power consumption are greater at equal computing power.
  • a code in C language can be transformed into a set of elementary instructions by a specific compiler.
  • the set of instructions is then implemented on a configurable matrix of predefined operators.
  • This technology can be compared to that of gate arrays programmable by the user, better known by the acronym FPGA for "Field Programmable Gate Array", the computing grain being larger. It therefore does not allow to obtain programmable circuits, but only configurable circuits by compiling the code. If it is desired to integrate program code portions not initially planned, then computing resources that are not present in the circuit are required. It becomes difficult or impossible to implement this code.
  • the data is processed by a so-called parallel architecture. Such an architecture comprises several calculation tiles interconnected by an interconnection bus.
  • Each calculation tile includes a storage unit for locally storing the data, a control unit providing instructions for performing processing on the stored data, processing units executing instructions received from the control unit on the stored data. and an input / output unit carrying the data either between the interconnect bus and the storage unit, or between the processing units and the interconnect bus.
  • This architecture has several advantages.
  • a first advantage is the ability to modify the code to be executed by the processing units, even after the realization of the architecture.
  • the code to be executed by the processing units generally comprises only calculation instructions but no control or address calculation instructions.
  • a second advantage is the possibility of performing in parallel, either an identical processing on several data, or more complex processes for the same number of clock cycles taking advantage of the paralleling of the processing units.
  • a third advantage is that the calculation tiles can be chained according to the processing to be performed on the data, the interconnection bus carrying the data between the calculation tiles in a configurable order.
  • the parallel architecture can be extended by adding additional calculation tiles, so as to adapt its processing capabilities to the treatments to be performed.
  • the management of data in the calculation tiles is complex and usually requires significant memory resources.
  • a calculation tile when processing on a data neighborhood, it must have all the data of that neighborhood at the same time, while the data arrives as a continuous stream. The storage unit of the calculation tile must then store a large portion of the data of the stream before processing on a neighborhood.
  • An object of the invention is to provide a calculation structure that is programmable and adapted to the processing of a data stream, especially when processing must be performed on data neighborhoods.
  • the subject of the invention is a device for processing a stream of data coming from a device generating matrices of NI lines by Nc columns of data.
  • the processing device includes K calculation tiles and interconnection means for transferring the data stream between the calculation tiles.
  • At least one calculation tile comprises:
  • each processing unit executing the instructions received from a control unit on a neighborhood of Vl lines by Vc columns of data
  • the storage unit making it possible to put the data of the stream in the form of neighborhoods of Vl lines by (n + Vc-1) columns of data, the storage unit comprising a block of formatting memories of dimension VIxNc and a neighborhood register block of dimension Vlx (n + Vc-1),
  • an input / output unit for routing the data stream between the interconnection means and the storage unit on the one hand, and between the processing units and the interconnection means on the other hand.
  • An advantage of the invention is that the storage unit of a calculation tile in which a processing is performed on a data neighborhood is particularly suitable for such processing, particularly in terms of sizing the memory registers and managing the data. access to the memory registers by the processing units.
  • FIG. 1 an example of a device for processing a data stream according to the invention
  • FIG. 2 an exemplary processing unit comprising a processor with very long instruction words
  • FIG. 3 an exemplary management of a block of formatting memories
  • FIG. 4 an example of management of a block of neighborhood registers in a case where the data of the memory block of implementation of FIG. form are in order
  • FIG. 5 an example of management of the neighborhood register block in the case where the data of the formatting memory block are not in order
  • FIG. 6 a set of chronograms illustrating the temporal management of a block of neighborhood registers
  • FIG. 7 an exemplary embodiment of a calculation tile comprising several processing units in parallel
  • FIG. 8 a set of timing diagrams illustrating the temporal management of a storage unit of a calculation tile comprising two parallel processing units
  • FIG. 11 a schematic representation of a Bayer filter
  • FIG. 12 an example of format registers for splitting the data of the stream
  • FIG. 13 an example of a mechanism allowing access to a register containing metadata
  • FIG. 14 an exemplary embodiment of a calculation tile comprising several processing units, the processing units receiving specific instructions as a function of metadata,
  • the following description is made in connection with a processing chain of a video data stream from a video sensor such as a CMOS sensor.
  • the processing chain makes it possible, for example, to reconstruct color images from a monochrome video sensor on which a color filter, for example a Bayer filter, is applied, to improve the quality of the images rendered, or to produce images.
  • morphological operations such as erosion / dilatation or low-level processing pixels of advanced applications such as image stabilization, red-eye correction or face detection.
  • the device according to the invention may equally well be suitable for processing a data stream other than those originating from a video sensor.
  • the device can for example process a stream of audio data or data in the Fourier space.
  • the device is of particular interest for the processing of data which, although conveyed as a stream, have coherence in a two-dimensional space.
  • FIG. 1 schematically represents a device 1 for processing a data stream according to the invention.
  • a video sensor 2 generates a digital data stream directed to the processing device 1, via a data bus 3.
  • the data from the video sensor 2 is referred to as raw data.
  • the device 1 processes this raw data in order to generate data qualified as final data.
  • the device 1 according to the invention comprises processing units UT, control units UC, storage units UM and input / output units UES grouped into K calculation tiles TC.
  • the device 1 also comprises interconnection means 4 such as data buses 41, 42. These interconnection means 4 make it possible to transfer the flow of data between the different calculation tiles TC.
  • Each calculation tile TC comprises a storage unit UM, one or more control units UC, at least one processing unit UT per control unit UC and an input / output unit UES.
  • the storage units UM make it possible to format the data of the stream so that it can be processed by the processing units UT according to code instructions issued by the control units UC.
  • the input / output units UES make it possible to route the data flow between the interconnection means 4 and the storage units UM on the one hand, and between the processing units UT and the interconnection means 4 on the other hand. In the example of FIG.
  • the device 1 comprises 4 calculation tiles TC, the first and the fourth calculation tiles TC1 and TC4 each comprising a storage unit UM, a control unit UC, a processing unit UT, and an input / output unit UES, the second calculation tile TC2 comprising a storage unit UM, a control unit UC, two processing units UT and an input / output unit UES, and the third calculation tile TC3 comprising a storage unit UM, two control units UC, two processing units UT per control unit UC and an input / output unit UES.
  • Each calculation tile TC makes it possible to perform a function or a series of functions from code instructions.
  • each calculation tile TC performs for example one of the following functions: correction of the white balance, demosaicing, noise reduction, sharpening of the outlines.
  • the composition of a calculation tile TC depends in particular on the function or functions it has to perform.
  • the number of control units UC composing a calculation tile TC depends on the number of different treatments to be performed simultaneously by the calculation tile TC.
  • Each control unit UC within the calculation tile TC may include its own code, a calculation tile TC comprises for example as many UC control units as separate processing to be performed in parallel on the data.
  • the UT processing units can be more or less complex. In particular, they may comprise either simple dedicated operators, for example composed of logic blocks, or processors. Each UT processing unit is independent of the others and may have different operators or processors. Dedicated operators are for example multipliers, adders / subtracters, assignment operators or shift operators.
  • the processing units UT contain only the dedicated operators commonly used for the treatment envisaged.
  • a processing unit UT may also include a processor.
  • the processor comprises a single arithmetic and logical unit.
  • the processor is a processor with a very long instruction word, commonly referred to as VLIW's English-language processor for "Very Long Instruction Word".
  • VLIW's English-language processor for "Very Long Instruction Word”.
  • Such a processor may comprise several arithmetic and logical units.
  • a VLIW processor comprises for example instruction decoders, no longer arithmetic and logical units but only calculation operators, a local memory and data registers.
  • only the computation operators necessary for the execution of the computation codes to be produced are implanted in the processor during its design. Then two or more of them can be used in the same cycle to perform separate operations in parallel.
  • the VLIW processor comprises two channels. In other words, it can execute up to two instructions in the same clock cycle.
  • the processor comprises a first instruction decoder 21, a second instruction decoder 22, a first set of multiplexers 23, a set of calculation operators 24, a second set of multiplexers 25, a set of data registers 26 and local memory 27.
  • the instruction decoders 21 and 22 receive instructions from a control unit UC. According to the instructions received, the multiplexers 23 direct data to be processed on an input of one of the calculation operators 24 and the multiplexers 25 direct the processed data to the data registers 26.
  • the data registers 26 containing the processed data can be linked to processor outputs.
  • the size of the very long instruction words is for example 48 bits, ie 24 bits per channel.
  • Calculation operators 24 thus work in 24-bit precision.
  • the calculation operators 24 are advantageously two adders / subtracters, a multiplier, an assignment operator, a write operator in the local memory and an offset operator.
  • the execution of the instructions may be conditioned by a positioning of a flag.
  • the instruction can then be completed with a prefix indicating the execution condition.
  • the flag is for example a bit of a register containing the result of an instruction executed during the preceding clock cycle. This bit may correspond to the zero, sign or carry indicators of the register.
  • instruction decoders 21 and 22 test the positioning of the flag linked to this instruction. If this positioning conforms to the execution condition, the operation is executed, otherwise it is replaced by a non-operation instruction, called NOP.
  • NOP non-operation instruction
  • each instruction word is coded on 24 bits.
  • the first 3 bits (bits 0 to 2) can contain the instruction condition
  • the next two bits (bits 3 and 4) can encode the data access mode
  • the sixth, seventh, and eighth bits (bits 5 through 7) can encode the identifier of the operation
  • the next four bits (bits 8 to 1 1) can designate the destination register
  • the next four bits (bits 12 to 15) can designate the source register
  • the last 8 bits bits 16 to 23) can contain a constant.
  • An example of programming using such a coding is given in the appendix.
  • the device 1 for processing a data stream comprises M control units UC, M being between 1 and N, where N is the number of processing units UT.
  • each processing unit UT can have its own control unit UC.
  • at least one calculation tile TC comprises several processing units UT, as in the example of FIG. TC2, TC3).
  • a control unit UC of this calculation tile TC then provides instructions to several processing units UT, these processing units UT being said in parallel.
  • a control unit UC may include a memory for storing the code instructions for the processing unit (s) UT that it serves.
  • a UC control unit can also include an ordinal counter, an instruction decoder and an address manager.
  • the address manager and the ordinal counter make it possible to apply a different treatment according to the color of the current pixel.
  • the code may be divided into code segments, each code segment including instructions for one of the colors of the filter.
  • the address manager may indicate to the ordinal counter the color of the current pixel, for example red, green or blue.
  • the address manager comprises a two-bit word for encoding up to four colors or different types of pixels in a pixel neighborhood of size two by two.
  • the ordinal counter is incremented by an offset value depending on the value of the word. The ordinal counter then makes it possible to point to the segment of code corresponding to the color of the current pixel.
  • the four offset values are determined at code compilation based on the number of instructions in each code segment.
  • the use of an address manager and an ordinal counter makes it possible to unload the programmer and thus avoids that he himself determines programmatically the nature of the current pixel. This management becomes automatic and allows a shorter execution time and simpler programming.
  • the same instructions are applied to all the pixels.
  • the offset values are then equal and determined so that the ordinal counter points to the first instruction after the initialization code.
  • the device 1 for processing a data stream also comprises K storage units UM, K being between 1 and M.
  • a calculation tile TC may comprise several control units UC, as in the example of FIG. TC3).
  • the same data of the flow, or neighboring data, present in the storage unit UM can then be processed differently by the processing units UT of the calculation tile, each control unit UC providing instructions to at least one unit of calculation. UT treatment.
  • the units of memory UM have for main function of formatting the data of the flow in order to facilitate the access of the processing units UT to these data.
  • a storage unit UM comprises a number of data registers equal to the number of processing units UT located in the calculation tile TC of the storage unit UM considered.
  • a storage unit UM formats the data in the form of neighborhoods and manages access to the data when UT processing units are in parallel.
  • a storage unit UM may comprise a first memory block called formatting memory block and a second memory block called neighborhood register block.
  • the storage units UM of the different calculation tiles TC being independent of one another, the data flow processing device 1 may comprise both storage units UM according to the first embodiment and storage units UM according to the second embodiment.
  • the second embodiment allows processing on data neighborhoods.
  • a neighborhood can be defined as a mesh of adjacent pixels, this mesh being generally square or at least rectangular.
  • a rectangular mesh may be defined by its dimension VIxVc where Vl is the number of pixels of the neighborhood along the lines and Vc is the number of pixels of the neighborhood according to the columns.
  • the block of formatting memories stores the data of the stream so that it can be copied systematically at each arrival of a new datum.
  • the neighborhood register block allows access to the pixels of the current neighborhood by the processing unit (s) UT of the considered calculation tile.
  • FIG. 3 illustrates, by a block 31 of formatting memories represented at different time steps T, an example of management of the block 31 for data corresponding to a stream of pixel values coming from a device generating matrixes of NI rows by Nc columns of data, such as a video sensor 32.
  • the video sensor 32 is of Nc resolution columns by NI rows of pixels. The resolution is for example VGA (640x480), "HD Ready” (1080x720) or "FuII HD" (1920x1080). Pixels are sent and stored as they arrive to block 31 formatting memories.
  • This block 31 is advantageously of dimension VIxNc to allow generation of neighborhoods of dimension VIxVc.
  • the block 31 comprises VIxNc memory cells arranged along a mesh of Vl lines and Nc columns.
  • block 31 may consist of one or more memory modules.
  • Block 31 can be managed as a shift register. In other words, at each time step or clock cycle, the data is shifted to make room for the new incoming data.
  • the block 31 is managed as a conventional memory so that the pixels are copied in their order of arrival.
  • a CPT counter is considered incrementing to each incoming data item.
  • Each new pixel coming from the data stream is then copied into a cell 33 of the formatting memory block 31 located at the line corresponding to E (CPTVNc), where E (x) is the function returning the integer part of a number x, and the column corresponding to the rest of CPT / Nc.
  • the counter CPT is reset each time it reaches the value equal to VIxNc.
  • a CPTC counter is considered to increment after each incoming data and a counter CPTL is incremented each time the counter CPTC reaches the value Nc.
  • the counter CPTC is reset each time it reaches the value Nc and the counter CPTL is reset each time it reaches the value Vl.
  • Each new pixel coming from the data stream is then copied into the cell 33 with the line number corresponds to the CPTL value and whose column number corresponds to the CPTC value.
  • FIG. 4 illustrates an exemplary management of the neighborhood register block for data from block 31 of formatting memories.
  • the block 34 of neighborhood registers for example comprises a number of neighborhood registers equal to VIxVc. These neighborhood registers are arranged in the same way as the neighborhood of pixels, that is to say they form a mesh of Vl lines and Vc columns of registers.
  • the copy of the data from the block 31 of formatting memories to the neighborhood registers starts as soon as there is a number of data in the block 31 equal to (VI-1) xNc + 1.
  • the copying of the data begins thus when two lines of data plus one datum are present in block 31.
  • the data is copied at each clock cycle by groups of data items of the same column.
  • the number of the column to be copied is given by the value of CPTC.
  • This column indeed includes the last pixel arrived in block 31.
  • a column 35 of V1 data registers is added to the neighborhood registers.
  • This column 35 makes it possible to block access to the registers of the block 34 by the processing units UT only during a single clock cycle, that of the shifting of the values in the block 34. Otherwise, the accesses are blocked both during the offset values and while copying data from block 31.
  • the data of the column of the block 31 indicated by the counter CPTC are copied into the registers of the column 35.
  • all the data of the block 34 and the column 35 are shifted by one column.
  • FIG. 5 illustrates such a case where the last data of the stream are stored on the first line of block 31.
  • the copying of the pixels in the column 35 can be managed by the following placement steps: the last arriving pixel always goes to the third line 347 of the neighborhood register column 35;
  • the pixel of the second line 312 of the block 31 is copied to the first row 345 of the column 35 the pixel of the third line 313 of the block 31 is copied to the second line 346 of the column 35;
  • the pixel of the first line of the block 31 is copied to the second line 346 of the column 35, the pixel of the third line 313 of the block 31 is copied to the first line 345 of the column 35;
  • the pixel of the first line 31 1 of the block 31 is copied to the first row 345 of the column 35, where the pixel of the second line 312 of the block 31 is copied to the second line 346 of the column 35.
  • the pixel of the block 31 of formatting memories located on the line NoLigne and the column indicated by CPTC is in particular copied in column 35, or, where appropriate, in the first column 341 of block 34, to the line defined by (CPTL + NoLigne + 1) modulo Vl.
  • NoLine takes all the positive integer values between 1 and Vl so as to allow the copying of the pixels for all the lines of the neighborhood.
  • the copying of the pixels of the block 31 in the register column 35 is not performed simultaneously with the offset of the pixels in the block 34.
  • This embodiment allows the UT processing units to access the data. present in block 34 of neighborhood registers for a longer period.
  • Figure 6 shows a set of timing diagrams for implementing this embodiment.
  • the temporal offset between the copying of the pixels and the offset of the pixels in the block 34 can be achieved by introducing, in addition to a first clock, called the pixel clock 61 and allowing to clock the data flow and the copying of the pixels, a second clock, called offset pixel clock 62.
  • This offset pixel clock 62 may be at the same frequency as the pixel clock 61 but shifted in time.
  • This offset corresponds, for example, to a period of the clock of the processing units UT 63.
  • the data present in the block 34 are then accessible during the entire period separating two clock ticks from the offset pixel clock 62.
  • Access to the neighborhood registers by the processing units UT can be achieved by an input / output port, for example integrated to each unit UT processing, whose number of connections is equal to the number of neighborhood registers multiplied by the size of the data.
  • Each neighborhood register is connected to the input / output port.
  • each storage unit UM comprises a multiplexer whose number of inputs is equal to the number of neighborhood registers of the block 34 and the number of outputs is equal to the number of data that can be processed simultaneously by the processing unit UT of the TC calculation tile considered.
  • the processing unit UT may then comprise an input / output port whose number of connections is equal to the number of data that can be processed simultaneously multiplied by the size of the data.
  • a processing unit UT comprising a two-way VLIW processor processing 12-bit data may comprise an input / output port with 24 (2x12) connections.
  • the same storage unit UM provides data to several processing units UT in parallel.
  • the processing device 1 comprises a calculation tile TC comprising several processing units UT.
  • This embodiment advantageously uses the storage units UM comprising a block 31 of formatting memories and a block 34 of neighborhood registers.
  • the size of the block 34 of neighborhood registers needs to be adapted.
  • FIG. 7 illustrates an example of a calculation tile TC in which a storage unit UM supplies data with n processing units UT in parallel, n being less than or equal to the number N of processing units UT of the device 1.
  • the instructions are supplied to the n UT processing units by one or more UC control units.
  • the block 34 of neighborhood registers is of dimension Vlx (n + Vc-1).
  • the block 34 comprises Vlx (n + Vc-1) data registers arranged along a mesh of Vl lines and n + Vc-1 columns.
  • a column 35 of VL registers of data can be added to block 34.
  • the data processing is performed when n new data has arrived in block 31.
  • the access to neighborhood registers by the n processing units UT can also be achieved by a port integrated input / output to each UT processing unit.
  • the number of connections of the input / output port of each processing unit UT is then equal to the number of neighborhood registers to which the processing unit UT requires access multiplied by the size of the data.
  • the storage unit UM may comprise a multiplexer whose number of inputs is equal to the number of neighborhood registers of the block 34 and the number of outputs is equal to the number of data that can be processed simultaneously by the n units of UT processing, each UT processing unit comprising an input / output port whose number of connections is equal to the number of data that can be processed simultaneously by said processing unit UT multiplied by the size of the data.
  • FIG. 8 illustrates, by a set of timing diagrams, an example of management of a calculation tile TC comprising two processing units UT in parallel.
  • a first timing diagram 81 represents the clock of the processing units UT of the frame rate F arc hi.
  • a second timing diagram 82 represents the clock pixel clock F piX ⁇
  • the pixel clock sets the rate at which the data of the stream arrive, which are sent in the block 31 of formatting memories.
  • the rate F arc hi may be equal to pxF piX ⁇ ⁇ with p a positive integer. According to FIG. 8, the rate F piX ⁇ ⁇ is four times greater than the clock rate F arc.
  • Each processing unit UT thus has four clock cycles per data to be processed.
  • a third timing diagram 83 represents an offset clock.
  • This clock generates two successive 831, 832 clock ticks after a clock pulse on two of the pixel clock.
  • the data of block 34 is shifted by one column.
  • a fourth timing diagram 84 represents the offset pixel clock.
  • the rate of this clock is substantially equal to half the rate F piX ⁇ ⁇ , a clock stroke 840 being generated after the two clock ticks 831, 832 of the shift clock.
  • the rate of the offset pixel clock is equal to 1 / n times the rate F piX ⁇ ⁇ of the pixel clock.
  • the data is copied from block 31 to block 35. Access to the neighborhood registers by the processing units UT is possible between two clock ticks 840. offset pixel clock.
  • the interconnection means 4 comprise a number Nb_bus of data bus.
  • Nb_bus can be defined by the following relation:
  • the time division multiplex Mux_t report defines an equal number of time slots, the read and write access permissions can be set for each time interval.
  • each UES input / output unit can handle the read and write access permissions according to the number bus bus Nb_bus and the time division multiplex report Mux_t.
  • each input / output unit UES may comprise registers for determining the time intervals during which the calculation tile CT considered has a read or write access authorization on one of the data buses and , for each of these time slots, the data bus for which read or write access is allowed.
  • An input / output unit UES comprises, for example, for the management of write access permissions, Nb_bus registers of size log2 (Mux_t) bits, where Iog2 (x) is the function returning the logarithm in base 2 of the number x and, for the management of read access permissions, a register of size log2 (Nb_bus) bits specifying the number of the bus to read and a log size log2 (Mux_t) bits specifying the time interval.
  • the input / output unit UES comprises two registers 91 and 92 of 2 bits each, the register 91 managing the authorization of write access on the bus 41 and the register 92 managing the write access authorization on the bus 42.
  • the contents of the registers 91 and 92 are compared with the value of the current time interval, for example by means of comparators 93 and 94 and, in case of equality, the writing of data is allowed on the bus 41 or 42 concerned.
  • the input / output unit UES also comprises a register 95 of 1 bit specifying the number of the bus 41 or 42 to be read and a register 96 of 2 bits specifying the time interval for the reading.
  • the contents of the register 96 are also compared to the current time interval, for example by a comparator 97 and, in the case of equality, the reading of the data is authorized on the bus 41 or 42 concerned.
  • This embodiment has the advantage that each UES input / output unit individually manages the access authorizations between the calculation tiles TC and the buses 41 and 42. Consequently, no centralized control unit is necessary.
  • the value of the registers of each input / output unit UES is set at the start of the system according to the desired chaining of the calculation tiles TC.
  • An unused CT calculation tile may have the values of the registers of its input / output unit UES initialized so as to have no read or write rights on the bus 41 or 42.
  • each calculation tile TC furthermore comprises a series block BS comprising as many data registers as of UT processing units present in the tile considered, the size of the registers being size at least equal to the size of the feed data.
  • the serial block BS of a calculation tile TC receives as input the data coming from the processing unit or units UT and is connected at the output to the input / output unit UES. During write authorization on one of the buses 41 or 42, the data present in the serial block (BS) are sent sequentially on this bus 41 or 42.
  • FIG. 10 illustrates an exemplary implementation of the device 1 for processing a data stream for treatments to be carried out on raw images.
  • the raw images are for example from a Bayer filter 1 10, for example shown in Figure 1 1.
  • a color image is constituted by a mosaic of pixels of red, green and blue colors.
  • the mosaic consists of an alternation of blue and green pixels on a first type of line and an alternation of green and red pixels on a second type of line, the types of lines being alternated so as to form diagonals of green pixels.
  • the device 1 according to the invention is particularly suitable for such data. Indeed, for each type of line, it is possible to constitute a calculation tile TC capable of simultaneously processing several pixels although they are of different color. In one embodiment, shown in FIG.
  • the calculation tile TC comprises, on the one hand, a first control unit UC1 supplying a first code to a first and a third processing unit UT1 and UT3 and, d secondly, a second control unit UC2 providing a second code to a second and a fourth processing unit UT2 and UT4.
  • the first code is specific to a first pixel color, for example red
  • the second code is specific to a second pixel color, for example green.
  • the code can also be divided into code segments, an address manager then indicating to the control units UC1 and UC2 the color of the processed pixel.
  • the processing units UT1, UT2, UT3 and UT4 then act on the data present in the block 34 of neighborhood registers according to the instructions they receive.
  • the first and third processing units UT1 and UT3 act on red pixels and the second and fourth processing units UT2 and UT4 act on the green pixels.
  • the calculation tile thus makes it possible to process simultaneously, but distinctly, four pixels of the block 34 of neighborhood registers.
  • two control units UC1 and UC2 per line suffice because a line has only two different colors.
  • the calculation tiles can be adapted according to the applied color filter.
  • the data in transit on the interconnection means 4 may contain the data to be processed, but also additional information, called metadata.
  • metadata can be used to transport different information associated with the data.
  • a metadata contains for example a value representative of a noise correction or gain to be applied to the pixels. The same correction can thus be applied to all the pixels of the image.
  • the metadata can also relate to the three values R, G and B (Red, Green and Blue), intermediate results to be associated with a pixel, or information to control the program according to the characteristics of the pixel.
  • R, G and B Red, Green and Blue
  • the data in transit can be divided into different formats.
  • the cutting format is specified in registers of format M r i, as represented in FIG. 12 (four in this particular case M 1 -O, M r 1, M r 2, M r 3).
  • M 1 -O M 1 -O
  • M r 1, M r 2, M r 3 a 24-bit data word was split into three parts 121, 122, 123 while cutting up to four was possible.
  • These format registers are defined for a calculation tile TC and their respective value is fixed during the loading of the program.
  • the accesses to the data are then systematically made by a mechanism as shown in FIG.
  • the format registers 134 are connected by a multiplexer 131b controlled by the current position to be recovered CMr to a logical AND cell 133d making it possible to zero the bits of the register 136 which are not concerned by the defined position, then the position registers 135 are connected to a shift register 132b which allows the preceding result to be shifted a good number of times in order to have a value set to the right which is the final value to be recovered for the position considered.
  • the data to be written Val is shifted to the right position by virtue of the position register 135 connected to a multiplexer 131c controlled by the current position to write CMw, multiplexer 131c itself connected to a register to shift 132a.
  • a logical AND cell 133a connected to the multiplexer 131a which gives the bits to be masked by the format register 134. Finally, these bits are concatenated with those already present in the destination register. 136.
  • the format register 134 is inverted by a logical NO cell 137 and then a logical AND is made by a cell 133b between the inverted format register and the value of the register 136, thus making it possible to manufacture a new mask which Attacks a logical OR cell 133c to associate the new data to the register 136 without touching the bits not concerned.
  • the processing device according to the invention can thus advantageously be used for processing in the Fourier (frequency) domain, for example.
  • the processing device according to the invention can also be adapted to accelerate the emulation of floating-point numbers using fixed-point operators.
  • metadata can be used to determine instructions to transmit to processors. Indeed, the additional information (metadata) can indicate the specific treatment to be performed on the data with which they are associated. It is sufficient to extract the necessary information from the data word as soon as it enters the calculation tile TC, illustrated by the example of FIG. and transmit it to the UC control unit that manages the UT processing units in multi-SIMD mode.
  • the metadata can be extracted when the neighborhood manager organizes the data for transmission to the processing units UT via multiplexers 141.
  • An additional communication 142 between the input / output unit UES and the communication unit. UC control allows the transfer of the metadata, as shown in Figure 15.
  • the interconnection means 4 can be adapted in terms of capacity.
  • the size of the data buses 41, 42 can be increased depending on the size of the metadata.
  • the device 1 according to the invention may include an insertion operator for concatenating each data flow with a metadata.
  • FIG. 15 shows such an insertion operator 150.
  • the insertion operator 150 comprises an input bus 151 connected to an input of an insertion block 152 whose output is connected to an output bus 153.
  • the insertion operator 150 may also include a memory 154 for storing the metadata.
  • the memory 154 is linked to the insertion block 152 to allow the transfer of the metadata.
  • the size of this data must be less than or equal to the difference between the maximum size of the data that can be transferred by the interconnection means 4 and the size of the data of the stream.
  • the size of the input bus 151 must be adapted to the size of the data of the stream while the size of the output bus 153 must be adapted to the size of the stream data concatenated with the metadata.
  • the insertion operator 150 may be inserted on one of the data buses 41, 42, for example between the video sensor 2 and the calculation tiles TC or between two calculation tiles TC. In one embodiment, the insertion operator 150 is made by a calculation tile TC.
  • the calculation tile TC then comprises a storage unit UM containing the complementary data and a processing unit UT making it possible to concatenate the data of the stream with the complementary data item.
  • the additional data is for example stored in a data register of the storage unit UM.
  • Postfix instructions Allows you to choose the source r (D, A, B): R [D] destination register; R [A] source register, R [B] source register c (D, A, C): R [D] destination register; R [A] source register, C Constant v (D, A, V): R [D] destination register; R [A] source register, Neighbor [V]
  • VLIW VLIW Allows to work on two ways:
  • a signed offset operator allows you to shift values to the right or to the left according to the offset sign
  • R [D] R [A] C if (C ⁇ 0)

Abstract

The present invention relates to a device for processing a data stream from a device generating data matrices of Nl-lines by Nc-columns. The processing device includes K calculation tiles (TC) and an interconnection means (4) for transferring the data stream between the calculation tiles (TC). According to the invention, at least one calculation tile (TC) comprises: one or more control units (UC) for providing instructions; n processing units (UT), each processing unit (UT) implementing the instructions received from a control unit (UC) on a region of Vl lines by Vc columns of data; a storage unit (UM) for converting the streamed data into regions of Vl lines by (n+Vc-1) columns of data, the storage unit (UM) including a block (31) of converting memories having a size of VlxNc and a block of region registers having a size of Vlx(n+Vc-1); an input/output unit (UES) for conveying the data stream between the interconnection means (4) and the storage unit (UM) as well as between the processing units (UT) and the interconnection means (4). The invention enables a high modularity in the processing of a data stream while limiting power consumption.

Description

Dispositif de traitement en parallèle d'un flux de données Device for parallel processing of a data stream
L'invention concerne un dispositif de traitement d'un flux de données. Elle se situe dans le domaine des architectures de calcul et trouve une utilité particulière dans les applications embarquées de type multimédia intégrant un capteur vidéo. Il s'agit notamment de la téléphonie mobile, des lecteurs multimédia mobiles, des appareils photographiques et des caméscopes numériques. L'invention trouve également une utilité dans les applications relatives aux télécommunications et, plus généralement, dans toute chaîne de traitement du signal traitant des données numériques à cadence élevée. Le traitement du signal en général, et le traitement d'images en particulier, demandent des puissances de calcul importantes, surtout depuis quelques années avec l'augmentation rapide de la résolution des capteurs d'images. Dans le domaine des applications embarquées à destination du grand public, de fortes contraintes en termes de coût de fabrication viennent s'ajouter aux contraintes de consommation électrique (de l'ordre de quelques centaines de milliwatts). Pour répondre à ces contraintes, le traitement des images est couramment réalisé à partir de modules de calcul dédiés fonctionnant en mode flot de données. Le mode "flot de données", couramment appelé "data flow" dans la littérature anglo-saxonne, est entendu comme un mode de traitement des données selon lequel les données entrant dans le module de calcul sont traitées au fur et à mesure, à la cadence de leur arrivée, un résultat étant fourni en sortie du module de calcul à la même cadence, éventuellement après un temps de latence. Les modules de calcul dédiés permettent de respecter les contraintes de coût de fabrication du fait de leur faible surface silicium et les contraintes de performance, notamment quant à la puissance de calcul et la consommation électrique. Cependant, de tels modules souffrent d'un problème de flexibilité, les traitements supportés ne pouvant pas être modifiés après la réalisation des modules. Tout au mieux, ces modules sont paramétrables. Autrement, dit, un certain nombre de paramètres liés au traitement peuvent être modifiés après la réalisation.The invention relates to a device for processing a data stream. It is located in the field of computational architectures and finds particular utility in embedded multimedia type applications incorporating a video sensor. These include mobile telephony, mobile media players, cameras and digital camcorders. The invention is also useful in telecommunications applications and, more generally, in any signal processing chain processing high speed digital data. Signal processing in general, and image processing in particular, require significant computing power, especially in recent years with the rapid increase in the resolution of image sensors. In the field of embedded applications intended for the general public, strong constraints in terms of manufacturing costs are added to the power consumption constraints (of the order of a few hundred milliwatts). To meet these constraints, image processing is commonly performed from dedicated computing modules operating in data flow mode. The "data flow" mode, commonly called "data flow" in the Anglo-Saxon literature, is understood as a data processing mode according to which the data entering the calculation module are processed as and when rate of their arrival, a result being provided at the output of the calculation module at the same rate, possibly after a latency time. The dedicated calculation modules make it possible to comply with manufacturing cost constraints due to their small silicon surface and the performance constraints, particularly as regards computing power and power consumption. However, such modules suffer from a problem of flexibility, the supported processing can not be modified after the realization of the modules. At best, these modules are configurable. Otherwise, said, a number of processing related parameters may be modified after the implementation.
Une solution à ce manque de flexibilité consiste à utiliser des processeurs complètement programmables. Les processeurs les plus couramment utilisés sont les processeurs de traitement du signal, bien connus dans la littérature anglo-saxonne sous l'acronyme "DSP" pour "Digital Signal Processor". Des inconvénients de ces processeurs sont leur empreinte silicium importante et leur consommation électrique les rendant souvent inadaptés aux applications embarquées très contraintes. Des compromis entre les modules de calcul dédiés et les processeurs complètement programmables sont actuellement en cours de développement. Selon un premier compromis, un circuit comprend une unité de traitement des données à mots d'instructions très longs, appelée unité VLIW pour "Very Long Instruction Word", et une unité permettant d'exécuter une instruction sur plusieurs unités de calcul, appelée unité SIMD pour "Single Instruction Multiple Data". Dans certaines réalisations actuelles, des unités de calcul de type VLIW et/ou SIMD sont implantées dans le circuit en fonction de la puissance de calcul nécessaire. Le choix du type d'unité à inclure dans le circuit, de leur nombre et de leur chaînage est décidé avant la réalisation du circuit par une analyse du code applicatif et des ressources nécessaires. L'ordre dans lequel sont chaînées les unités est fixe et il ne permet pas de changer par la suite l'enchaînement des traitements. De plus, les unités sont globalement assez complexes car le code de contrôle de l'application n'est pas séparé du code de traitement. Ainsi, les opérateurs de traitement de ces unités sont de taille importante, ce qui amène une architecture dont la surface silicium et la consommation électrique sont plus importantes à puissance de calcul égale.One solution to this lack of flexibility is to use fully programmable processors. The most commonly used processors are the signal processing processors, well known in the literature Anglo-Saxon under the acronym "DSP" for "Digital Signal Processor". Disadvantages of these processors are their large silicon footprint and their power consumption making them often unsuitable for embedded applications very constraints. Compromises between dedicated computing modules and fully programmable processors are currently under development. According to a first compromise, a circuit includes a data processing unit with very long instruction words, called VLIW unit for "Very Long Instruction Word", and a unit for executing an instruction on several calculation units, called unit SIMD for "Single Instruction Multiple Data". In some current embodiments, VLIW and / or SIMD type calculation units are installed in the circuit as a function of the computing power required. The choice of the type of unit to be included in the circuit, of their number and their chaining is decided before the realization of the circuit by an analysis of the application code and the necessary resources. The order in which the units are chained is fixed and it does not allow to change thereafter the sequence of treatments. In addition, the units are generally quite complex because the control code of the application is not separated from the processing code. Thus, the processing operators of these units are large, which leads to an architecture whose silicon surface and power consumption are greater at equal computing power.
Selon un deuxième compromis, un code en langage C peut être transformé en un ensemble d'instructions élémentaires par un compilateur spécifique. L'ensemble d'instructions est alors implanté sur une matrice configurable d'opérateurs prédéfinis. Cette technologie peut être comparée à celle des réseaux prédiffusés programmables par l'utilisateur, mieux connus sous l'acronyme anglo-saxon FPGA pour "Field Programmable Gâte Array", le grain de calcul étant plus gros. Elle ne permet donc pas d'obtenir des circuits programmables, mais uniquement des circuits configurables par compilation du code. Si l'on souhaite intégrer des parties de code programme non prévues au départ, il faut alors des ressources de calcul qui ne sont pas présentes dans le circuit. Il devient donc difficile voire impossible d'implémenter ce code. Selon un troisième compromis, les données sont traitées par une architecture dite parallèle. Une telle architecture comprend plusieurs tuiles de calcul reliées entre elles par un bus d'interconnexion. Chaque tuile de calcul comprend une unité de mémorisation permettant de stocker localement les données, une unité de contrôle fournissant des instructions pour réaliser un traitement sur les données stockées, des unités de traitement réalisant les instructions reçues de l'unité de contrôle sur les données stockées et une unité d'entrée/sortie acheminant les données soit entre le bus d'interconnexion et l'unité de mémorisation, soit entre les unités de traitement et le bus d'interconnexion. Cette architecture présente plusieurs avantages. Un premier avantage est la possibilité de modifier le code à exécuter par les unités de traitement, même après la réalisation de l'architecture. En outre, le code à exécuter par les unités de traitement ne comprend généralement que des instructions de calcul mais aucune instruction de contrôle ou de calcul d'adresse. Un deuxième avantage est la possibilité de réaliser en parallèle, soit un traitement identique sur plusieurs données, soit des traitements plus complexes pour un même nombre de cycles d'horloge en profitant de la mise en parallèle des unités de traitement. Un troisième avantage est que les tuiles de calcul peuvent être chaînées selon les traitements à réaliser sur les données, le bus d'interconnexion acheminant les données entre les tuiles de calcul dans un ordre configurable. De plus, l'architecture parallèle peut être étendue en ajoutant des tuiles de calcul supplémentaires, de manière à adapter ses capacités de traitement aux traitements à réaliser. Cependant, la gestion des données dans les tuiles de calcul est complexe et nécessite généralement des ressources mémoires importantes. En particulier, lorsqu'une tuile de calcul effectue un traitement sur un voisinage de données, elle doit disposer simultanément de toutes les données de ce voisinage, alors que les données arrivent sous forme d'un flux continu. L'unité de mémorisation de la tuile de calcul doit alors stocker une partie importante des données du flux avant de pouvoir effectuer un traitement sur un voisinage. Ce stockage et la gestion des données stockées nécessitent une optimisation afin de limiter la surface silicium et la consommation électrique de l'architecture parallèle tout en offrant des performances de calcul adaptées au traitement d'un flot de données. Un but de l'invention est de proposer une structure de calcul qui soit programmable et adaptée au traitement d'un flux de données, notamment lorsque des traitements doivent être réalisés sur des voisinages de données. A cet effet, l'invention a pour objet un dispositif de traitement d'un flux de données provenant d'un dispositif générant des matrices de NI lignes par Nc colonnes de données. Le dispositif de traitement comprend K tuiles de calcul et des moyens d'interconnexion pour transférer le flux de données entre les tuiles de calcul. Au moins une tuile de calcul comporte :According to a second compromise, a code in C language can be transformed into a set of elementary instructions by a specific compiler. The set of instructions is then implemented on a configurable matrix of predefined operators. This technology can be compared to that of gate arrays programmable by the user, better known by the acronym FPGA for "Field Programmable Gate Array", the computing grain being larger. It therefore does not allow to obtain programmable circuits, but only configurable circuits by compiling the code. If it is desired to integrate program code portions not initially planned, then computing resources that are not present in the circuit are required. It becomes difficult or impossible to implement this code. According to a third compromise, the data is processed by a so-called parallel architecture. Such an architecture comprises several calculation tiles interconnected by an interconnection bus. Each calculation tile includes a storage unit for locally storing the data, a control unit providing instructions for performing processing on the stored data, processing units executing instructions received from the control unit on the stored data. and an input / output unit carrying the data either between the interconnect bus and the storage unit, or between the processing units and the interconnect bus. This architecture has several advantages. A first advantage is the ability to modify the code to be executed by the processing units, even after the realization of the architecture. In addition, the code to be executed by the processing units generally comprises only calculation instructions but no control or address calculation instructions. A second advantage is the possibility of performing in parallel, either an identical processing on several data, or more complex processes for the same number of clock cycles taking advantage of the paralleling of the processing units. A third advantage is that the calculation tiles can be chained according to the processing to be performed on the data, the interconnection bus carrying the data between the calculation tiles in a configurable order. In addition, the parallel architecture can be extended by adding additional calculation tiles, so as to adapt its processing capabilities to the treatments to be performed. However, the management of data in the calculation tiles is complex and usually requires significant memory resources. In particular, when a calculation tile is processing on a data neighborhood, it must have all the data of that neighborhood at the same time, while the data arrives as a continuous stream. The storage unit of the calculation tile must then store a large portion of the data of the stream before processing on a neighborhood. This storage and the management of the stored data require an optimization in order to limit the silicon surface and the power consumption of the parallel architecture while offering computing performances adapted to the processing of a data stream. An object of the invention is to provide a calculation structure that is programmable and adapted to the processing of a data stream, especially when processing must be performed on data neighborhoods. For this purpose, the subject of the invention is a device for processing a stream of data coming from a device generating matrices of NI lines by Nc columns of data. The processing device includes K calculation tiles and interconnection means for transferring the data stream between the calculation tiles. At least one calculation tile comprises:
- une ou plusieurs unités de contrôle permettant de fournir des instructions,- one or more control units to provide instructions,
- n unités de traitement, chaque unité de traitement réalisant les instructions reçues d'une unité de contrôle sur un voisinage de Vl lignes par Vc colonnes de données,n processing units, each processing unit executing the instructions received from a control unit on a neighborhood of Vl lines by Vc columns of data,
- une unité de mémorisation permettant de mettre les données du flux sous forme de voisinages de Vl lignes par (n+Vc-1 ) colonnes de données, l'unité de mémorisation comprenant un bloc de mémoires de mise en forme de dimension VIxNc et un bloc de registres de voisinage de dimension Vlx(n+Vc-1 ),a storage unit making it possible to put the data of the stream in the form of neighborhoods of Vl lines by (n + Vc-1) columns of data, the storage unit comprising a block of formatting memories of dimension VIxNc and a neighborhood register block of dimension Vlx (n + Vc-1),
- une unité d'entrée/sortie permettant d'acheminer le flux de données entre les moyens d'interconnexion et l'unité de mémorisation d'une part, et entre les unités de traitement et les moyens d'interconnexion d'autre part.an input / output unit for routing the data stream between the interconnection means and the storage unit on the one hand, and between the processing units and the interconnection means on the other hand.
Un avantage de l'invention est que l'unité de mémorisation d'une tuile de calcul dans laquelle est réalisé un traitement sur un voisinage de données est particulièrement adaptée à un tel traitement, notamment en termes de dimensionnement des registres mémoire et de gestion des accès aux registres mémoire par les unités de traitement.An advantage of the invention is that the storage unit of a calculation tile in which a processing is performed on a data neighborhood is particularly suitable for such processing, particularly in terms of sizing the memory registers and managing the data. access to the memory registers by the processing units.
L'invention sera mieux comprise et d'autres avantages apparaîtront à la lecture de la description détaillée d'un mode de réalisation donné à titre d'exemple, description faite en regard de dessins annexés qui représentent :The invention will be better understood and other advantages will become apparent on reading the detailed description of an embodiment given by way of example, a description given with regard to the appended drawings which represent:
- la figure 1 , un exemple de dispositif de traitement d'un flux de données selon l'invention, - la figure 2, un exemple d'unité de traitement comportant un processeur à mots d'instructions très longs,FIG. 1, an example of a device for processing a data stream according to the invention, FIG. 2, an exemplary processing unit comprising a processor with very long instruction words,
- la figure 3, un exemple de gestion d'un bloc de mémoires de mise en forme, - la figure 4, un exemple de gestion d'un bloc de registres de voisinage dans un cas où les données du bloc de mémoires de mise en forme sont dans l'ordre,FIG. 3, an exemplary management of a block of formatting memories, FIG. 4, an example of management of a block of neighborhood registers in a case where the data of the memory block of implementation of FIG. form are in order,
- la figure 5, un exemple de gestion du bloc de registres de voisinage dans le cas où les données du bloc de mémoires de mise en forme ne sont pas dans l'ordre,FIG. 5, an example of management of the neighborhood register block in the case where the data of the formatting memory block are not in order,
- la figure 6, un ensemble de chronogrammes illustrant la gestion temporelle d'un bloc de registres de voisinage,FIG. 6, a set of chronograms illustrating the temporal management of a block of neighborhood registers,
- la figure 7, un exemple de réalisation d'une tuile de calcul comprenant plusieurs unités de traitement en parallèle, - la figure 8, un ensemble de chronogrammes illustrant la gestion temporelle d'une unité de mémorisation d'une tuile de calcul comportant deux unités de traitement en parallèle,FIG. 7, an exemplary embodiment of a calculation tile comprising several processing units in parallel, FIG. 8, a set of timing diagrams illustrating the temporal management of a storage unit of a calculation tile comprising two parallel processing units,
- la figure 9, un exemple de réalisation d'une unité d'entrée/ sortie, - la figure 10, un exemple de mise en œuvre du dispositif selon l'invention pour des images vidéo,FIG. 9, an exemplary embodiment of an input / output unit, FIG. 10, an exemplary implementation of the device according to the invention for video images,
- la figure 1 1 , une représentation schématique d'un filtre de Bayer,FIG. 11, a schematic representation of a Bayer filter,
- la figure 12, un exemple de registres de format permettant le découpage des données du flux,FIG. 12, an example of format registers for splitting the data of the stream,
- la figure 13, un exemple de mécanisme permettant l'accès à un registre contenant des métadonnées,FIG. 13, an example of a mechanism allowing access to a register containing metadata,
- la figure 14, un exemple de réalisation d'une tuile de calcul comportant plusieurs unités de traitement, les unités de traitement recevant des instructions spécifiques en fonction de métadonnées,FIG. 14, an exemplary embodiment of a calculation tile comprising several processing units, the processing units receiving specific instructions as a function of metadata,
- la figure 15, un exemple de réalisation d'un opérateur d'insertion.- Figure 15, an embodiment of an insertion operator.
La suite de la description est faite en relation avec une chaîne de traitement d'un flux de données vidéo provenant d'un capteur vidéo tel qu'un capteur CMOS. La chaîne de traitement permet par exemple de reconstruire des images couleurs à partir d'un capteur vidéo monochrome sur lequel est appliqué un filtre de couleur, par exemple un filtre de Bayer, d'améliorer la qualité des images restituées, ou encore de réaliser des opérations morphologiques telles que l'érosion/dilatation ou la partie bas niveau traitant les pixels des applications évoluées telles que la stabilisation d'images, la correction des yeux rouges ou la détection de visages. Cependant, le dispositif selon l'invention peut tout aussi bien convenir au traitement d'un flux de données autres que celles issues d'un capteur vidéo. Le dispositif peut par exemple traiter un flux de données audio ou des données dans l'espace de Fourier. De manière générale, le dispositif présente un intérêt particulier pour le traitement de données qui, bien qu'étant acheminées sous forme d'un flux, possèdent une cohérence dans un espace à deux dimensions.The following description is made in connection with a processing chain of a video data stream from a video sensor such as a CMOS sensor. The processing chain makes it possible, for example, to reconstruct color images from a monochrome video sensor on which a color filter, for example a Bayer filter, is applied, to improve the quality of the images rendered, or to produce images. morphological operations such as erosion / dilatation or low-level processing pixels of advanced applications such as image stabilization, red-eye correction or face detection. However, the device according to the invention may equally well be suitable for processing a data stream other than those originating from a video sensor. The device can for example process a stream of audio data or data in the Fourier space. In general, the device is of particular interest for the processing of data which, although conveyed as a stream, have coherence in a two-dimensional space.
La figure 1 représente schématiquement un dispositif 1 de traitement d'un flux de données selon l'invention. Un capteur vidéo 2 génère un flux de données numériques dirigé vers le dispositif 1 de traitement, par l'intermédiaire d'un bus 3 de données. Les données issues du capteur vidéo 2 sont qualifiées de données brutes. Le dispositif 1 traite ces données brutes afin de générer en sortie des données qualifiées de données finales. A cette fin, le dispositif 1 selon l'invention comprend des unités de traitement UT, des unités de contrôle UC, des unités de mémorisation UM et des unités d'entrée/sortie UES regroupées en K tuiles de calcul TC. Le dispositif 1 comprend également des moyens 4 d'interconnexion tels que des bus 41 , 42 de données. Ces moyens 4 d'interconnexion permettent de transférer le flux de données entre les différentes tuiles de calcul TC. Chaque tuile de calcul TC comporte une unité de mémorisation UM, une ou plusieurs unités de contrôle UC, au moins une unité de traitement UT par unité de contrôle UC et une unité d'entrée/sortie UES. Les unités de mémorisation UM permettent de mettre en forme les données du flux afin de pouvoir être traitées par les unités de traitement UT en fonction d'instructions de code délivrées par les unités de contrôle UC. Les unités d'entrée/sortie UES permettent d'acheminer le flux de données entre les moyens 4 d'interconnexion et les unités de mémorisation UM d'une part, et entre les unités de traitement UT et les moyens 4 d'interconnexion d'autre part. Dans l'exemple de la figure 1 , le dispositif 1 comprend 4 tuiles de calcul TC, la première et la quatrième tuile de calcul TC1 et TC4 comportant chacune une unité de mémorisation UM, une unité de contrôle UC, une unité de traitement UT et une unité d'entrée/sortie UES, la deuxième tuile de calcul TC2 comportant une unité de mémorisation UM, une unité de contrôle UC, deux unités de traitement UT et une unité d'entrée/sortie UES, et la troisième tuile de calcul TC3 comportant une unité de mémorisation UM, deux unités de contrôle UC, deux unités de traitement UT par unité de contrôle UC et une unité d'entrée/sortie UES. Chaque tuile de calcul TC permet de réaliser une fonction ou une suite de fonctions à partir d'instructions de code. Dans le cadre d'une chaîne de traitement vidéo, chaque tuile de calcul TC réalise par exemple l'une des fonctions suivantes : correction de la balance des blancs, dématriçage, diminution du bruit, accentuation des contours. La composition d'une tuile de calcul TC dépend notamment de la ou des fonctions qu'elle a à réaliser. En particulier, le nombre d'unités de contrôle UC composant une tuile de calcul TC dépend du nombre de traitements différents devant être réalisés simultanément par la tuile de calcul TC. Chaque unité de contrôle UC au sein de la tuile de calcul TC pouvant comporter son propre code, une tuile de calcul TC comporte par exemple autant d'unités de contrôle UC que de traitements distincts à réaliser en parallèle sur les données.FIG. 1 schematically represents a device 1 for processing a data stream according to the invention. A video sensor 2 generates a digital data stream directed to the processing device 1, via a data bus 3. The data from the video sensor 2 is referred to as raw data. The device 1 processes this raw data in order to generate data qualified as final data. For this purpose, the device 1 according to the invention comprises processing units UT, control units UC, storage units UM and input / output units UES grouped into K calculation tiles TC. The device 1 also comprises interconnection means 4 such as data buses 41, 42. These interconnection means 4 make it possible to transfer the flow of data between the different calculation tiles TC. Each calculation tile TC comprises a storage unit UM, one or more control units UC, at least one processing unit UT per control unit UC and an input / output unit UES. The storage units UM make it possible to format the data of the stream so that it can be processed by the processing units UT according to code instructions issued by the control units UC. The input / output units UES make it possible to route the data flow between the interconnection means 4 and the storage units UM on the one hand, and between the processing units UT and the interconnection means 4 on the other hand. In the example of FIG. 1, the device 1 comprises 4 calculation tiles TC, the first and the fourth calculation tiles TC1 and TC4 each comprising a storage unit UM, a control unit UC, a processing unit UT, and an input / output unit UES, the second calculation tile TC2 comprising a storage unit UM, a control unit UC, two processing units UT and an input / output unit UES, and the third calculation tile TC3 comprising a storage unit UM, two control units UC, two processing units UT per control unit UC and an input / output unit UES. Each calculation tile TC makes it possible to perform a function or a series of functions from code instructions. As part of a video processing chain, each calculation tile TC performs for example one of the following functions: correction of the white balance, demosaicing, noise reduction, sharpening of the outlines. The composition of a calculation tile TC depends in particular on the function or functions it has to perform. In particular, the number of control units UC composing a calculation tile TC depends on the number of different treatments to be performed simultaneously by the calculation tile TC. Each control unit UC within the calculation tile TC may include its own code, a calculation tile TC comprises for example as many UC control units as separate processing to be performed in parallel on the data.
Les unités de traitement UT peuvent être plus ou moins complexes. En particulier, elles peuvent comporter soit de simples opérateurs dédiés, par exemple composés de blocs logiques, soit des processeurs. Chaque unité de traitement UT est indépendante des autres et peut comporter des opérateurs ou des processeurs différents. Les opérateurs dédiés sont par exemple des multiplieurs, des additionneurs/ soustracteurs, des opérateurs d'affectation ou des opérateurs de décalage. Avantageusement, les unités de traitement UT ne contiennent que les opérateurs dédiés couramment utilisés pour le traitement envisagé.The UT processing units can be more or less complex. In particular, they may comprise either simple dedicated operators, for example composed of logic blocks, or processors. Each UT processing unit is independent of the others and may have different operators or processors. Dedicated operators are for example multipliers, adders / subtracters, assignment operators or shift operators. Advantageously, the processing units UT contain only the dedicated operators commonly used for the treatment envisaged.
Une unité de traitement UT peut également comporter un processeur. Dans un premier mode de réalisation, le processeur comprend une seule unité arithmétique et logique. Dans un deuxième mode de réalisation, le processeur est un processeur à mot d'instruction très long, couramment appelé d'après la littérature anglo-saxonne processeur VLIW pour "Very Long Instruction Word". Un tel processeur peut comporter plusieurs unités arithmétiques et logiques. Dans une variante préférée, un processeur VLIW comporte par exemple des décodeurs d'instructions, non plus des unités arithmétiques et logiques mais seulement des opérateurs de calcul, une mémoire locale et des registres de données. Avantageusement, seuls les opérateurs de calcul nécessaires à l'exécution des codes de calcul à réaliser sont implantés dans le processeur lors de sa conception. Ensuite, deux d'entre eux ou plus peuvent être utilisés dans le même cycle pour effectuer en parallèle des opérations distinctes. Les opérateurs non utilisés ne reçoivent pas les signaux d'horloge. La consommation électrique des unités de traitement UT s'en trouve ainsi réduite. Ces caractéristiques avantageuses ont conduit à une forme particulière de réalisation, représentée à la figure 2. Dans cette figure, le processeur VLIW comporte deux voies. Autrement dit, il peut exécuter jusqu'à deux instructions dans un même cycle d'horloge. Le processeur comporte un premier décodeur d'instructions 21 , un deuxième décodeur d'instructions 22, un premier ensemble de multiplexeurs 23, un ensemble d'opérateurs de calcul 24, un deuxième ensemble de multiplexeurs 25, un ensemble de registres de données 26 et une mémoire locale 27. Les décodeurs d'instructions 21 et 22 reçoivent des instructions en provenance d'une unité de contrôle UC. En fonction des instructions reçues, les multiplexeurs 23 dirigent des données à traiter sur une entrée de l'un des opérateurs de calcul 24 et les multiplexeurs 25 dirigent les données traitées vers les registres de données 26. Les registres de données 26 contenant les données traitées peuvent être mis en liaison avec des sorties du processeur. La taille des mots d'instructions très longs est par exemple de 48 bits, soit 24 bits par voie. Les opérateurs de calcul 24 travaillent ainsi en précision 24 bits. Dans le cadre d'un traitement vidéo et plus particulièrement d'une reconstruction d'image à partir de données issues d'un capteur vidéo, les opérateurs de calcul 24 sont avantageusement deux additionneurs/soustracteurs, un multiplieur, un opérateur d'affectation, un opérateur d'écriture dans la mémoire locale et un opérateur de décalage.A processing unit UT may also include a processor. In a first embodiment, the processor comprises a single arithmetic and logical unit. In a second embodiment, the processor is a processor with a very long instruction word, commonly referred to as VLIW's English-language processor for "Very Long Instruction Word". Such a processor may comprise several arithmetic and logical units. In a preferred variant, a VLIW processor comprises for example instruction decoders, no longer arithmetic and logical units but only calculation operators, a local memory and data registers. Advantageously, only the computation operators necessary for the execution of the computation codes to be produced are implanted in the processor during its design. Then two or more of them can be used in the same cycle to perform separate operations in parallel. Unused operators do not receive clock signals. The power consumption of the UT processing units is thereby reduced. These advantageous characteristics have led to a particular embodiment, shown in FIG. 2. In this figure, the VLIW processor comprises two channels. In other words, it can execute up to two instructions in the same clock cycle. The processor comprises a first instruction decoder 21, a second instruction decoder 22, a first set of multiplexers 23, a set of calculation operators 24, a second set of multiplexers 25, a set of data registers 26 and local memory 27. The instruction decoders 21 and 22 receive instructions from a control unit UC. According to the instructions received, the multiplexers 23 direct data to be processed on an input of one of the calculation operators 24 and the multiplexers 25 direct the processed data to the data registers 26. The data registers 26 containing the processed data can be linked to processor outputs. The size of the very long instruction words is for example 48 bits, ie 24 bits per channel. Calculation operators 24 thus work in 24-bit precision. In the context of a video processing and more particularly an image reconstruction from data from a video sensor, the calculation operators 24 are advantageously two adders / subtracters, a multiplier, an assignment operator, a write operator in the local memory and an offset operator.
Toujours selon une forme particulière de réalisation, l'exécution des instructions peut être conditionnée par un positionnement d'un drapeau. L'instruction peut alors être complétée par un préfixe indiquant la condition d'exécution. Le drapeau est par exemple un bit d'un registre contenant le résultat d'une instruction exécutée durant le cycle d'horloge précédent. Ce bit peut correspondre aux indicateurs de zéro, de signe ou de report (carry) du registre. A chaque instruction, les décodeurs d'instructions 21 et 22 testent le positionnement du drapeau lié à cette instruction. Si ce positionnement est conforme à la condition d'exécution, l'opération est exécutée, sinon elle est remplacée par une instruction de non-opération, appelée NOP. A la fin du cycle de chaque instruction, la valeur du drapeau est envoyée aux deux décodeurs d'instructions 21 et 22 afin de pouvoir tester l'éventuelle condition d'une instruction suivante.Still according to a particular embodiment, the execution of the instructions may be conditioned by a positioning of a flag. The instruction can then be completed with a prefix indicating the execution condition. The flag is for example a bit of a register containing the result of an instruction executed during the preceding clock cycle. This bit may correspond to the zero, sign or carry indicators of the register. At each instruction, instruction decoders 21 and 22 test the positioning of the flag linked to this instruction. If this positioning conforms to the execution condition, the operation is executed, otherwise it is replaced by a non-operation instruction, called NOP. At the end of the cycle of each instruction, the flag value is sent to the two instruction decoders 21 and 22 in order to test the possible condition of a next instruction.
Selon une forme particulière de réalisation, chaque mot d'instruction est codé sur 24 bits. Les 3 premiers bits (bits 0 à 2) peuvent contenir la condition d'instruction, les deux bits suivants (bits 3 et 4) peuvent coder le mode d'accès à la donnée, les sixième, septième et huitième bits (bits 5 à 7) peuvent coder l'identifiant de l'opération, les quatre bits suivants (bits 8 à 1 1 ) peuvent désigner le registre de destination, les quatre bits suivants (bits 12 à 15) peuvent désigner le registre source et les 8 derniers bits (bits 16 à 23) peuvent contenir une constante. Un exemple de programmation utilisant un tel codage est donné en annexe.According to a particular embodiment, each instruction word is coded on 24 bits. The first 3 bits (bits 0 to 2) can contain the instruction condition, the next two bits (bits 3 and 4) can encode the data access mode, the sixth, seventh, and eighth bits (bits 5 through 7) can encode the identifier of the operation, the next four bits (bits 8 to 1 1) can designate the destination register, the next four bits (bits 12 to 15) can designate the source register and the last 8 bits (bits 16 to 23) can contain a constant. An example of programming using such a coding is given in the appendix.
Le dispositif 1 de traitement d'un flux de données comprend M unités de contrôle UC, M étant compris entre 1 et N, N étant le nombre d'unités de traitement UT. Dans le cas où le nombre M d'unités de contrôle UC est égal au nombre N d'unités de traitement UT, chaque unité de traitement UT peut disposer de sa propre unité de contrôle UC. Dans le cas où le nombre M d'unités de contrôle UC est inférieur au nombre N d'unités de traitement UT, alors au moins une tuile de calcul TC comprend plusieurs unités de traitement UT, comme dans l'exemple de la figure 1 (TC2, TC3). Une unité de contrôle UC de cette tuile de calcul TC fournit alors des instructions à plusieurs unités de traitement UT, ces unités de traitement UT étant dites en parallèle. Une unité de contrôle UC peut comprendre une mémoire permettant de stocker les instructions de code pour la ou les unités de traitement UT qu'elle sert. Une unité de contrôle UC peut également comporter un compteur ordinal, un décodeur d'instructions et un gestionnaire d'adresse.The device 1 for processing a data stream comprises M control units UC, M being between 1 and N, where N is the number of processing units UT. In the case where the number M of control units UC is equal to the number N of processing units UT, each processing unit UT can have its own control unit UC. In the case where the number M of control units UC is smaller than the number N of processing units UT, then at least one calculation tile TC comprises several processing units UT, as in the example of FIG. TC2, TC3). A control unit UC of this calculation tile TC then provides instructions to several processing units UT, these processing units UT being said in parallel. A control unit UC may include a memory for storing the code instructions for the processing unit (s) UT that it serves. A UC control unit can also include an ordinal counter, an instruction decoder and an address manager.
Dans le cadre d'un traitement d'images brutes obtenues par un filtre de couleur, le gestionnaire d'adresse et le compteur ordinal permettent d'appliquer un traitement différent en fonction de la couleur du pixel courant. En particulier, le code peut être découpé en segments de code, chaque segment de code comportant des instructions pour l'une des couleurs du filtre. Le gestionnaire d'adresse peut indiquer au compteur ordinal la couleur du pixel courant, par exemple rouge, vert ou bleu. Selon une forme particulière de réalisation, le gestionnaire d'adresse comporte un mot de deux bits permettant de coder jusqu'à quatre couleurs ou natures différentes de pixels dans un voisinage pixel de taille deux par deux. A chaque cycle d'horloge, le compteur ordinal est incrémenté d'une valeur de décalage (offset) dépendant de la valeur du mot. Le compteur ordinal permet alors de pointer sur le segment de code correspondant à la couleur du pixel courant. Les quatre valeurs de décalage sont déterminées à la compilation du code en fonction du nombre d'instructions de chacun des segments de code. L'utilisation d'un gestionnaire d'adresse et d'un compteur ordinal permet de décharger le programmeur et évite ainsi qu'il détermine lui-même par programme la nature du pixel courant. Cette gestion devient automatique et permet un temps d'exécution plus court et une programmation plus simple. Dans le cas particulier où les images traitées sont monochromes, les mêmes instructions sont appliquées à tous les pixels. Les valeurs de décalage sont alors égales et déterminées afin que le compteur ordinal pointe la première instruction après le code d'initialisation.In the context of a raw image processing obtained by a color filter, the address manager and the ordinal counter make it possible to apply a different treatment according to the color of the current pixel. In particular, the code may be divided into code segments, each code segment including instructions for one of the colors of the filter. The address manager may indicate to the ordinal counter the color of the current pixel, for example red, green or blue. According to a particular embodiment, the address manager comprises a two-bit word for encoding up to four colors or different types of pixels in a pixel neighborhood of size two by two. At each clock cycle, the ordinal counter is incremented by an offset value depending on the value of the word. The ordinal counter then makes it possible to point to the segment of code corresponding to the color of the current pixel. The four offset values are determined at code compilation based on the number of instructions in each code segment. The use of an address manager and an ordinal counter makes it possible to unload the programmer and thus avoids that he himself determines programmatically the nature of the current pixel. This management becomes automatic and allows a shorter execution time and simpler programming. In the particular case where the processed images are monochrome, the same instructions are applied to all the pixels. The offset values are then equal and determined so that the ordinal counter points to the first instruction after the initialization code.
Le dispositif 1 de traitement d'un flux de données comprend également K unités de mémorisation UM, K étant compris entre 1 et M. Une tuile de calcul TC peut comprendre plusieurs unités de contrôle UC, comme dans l'exemple de la figure 1 (TC3). Les mêmes données du flux, ou des données voisines, présentes dans l'unité de mémorisation UM peuvent alors être traitées différemment par les unités de traitement UT de la tuile de calcul, chaque unité de contrôle UC fournissant des instructions à au moins une unité de traitement UT. Les unités de mémorisation UM ont pour principale fonction de mettre en forme les données du flux afin de faciliter l'accès des unités de traitement UT à ces données.The device 1 for processing a data stream also comprises K storage units UM, K being between 1 and M. A calculation tile TC may comprise several control units UC, as in the example of FIG. TC3). The same data of the flow, or neighboring data, present in the storage unit UM can then be processed differently by the processing units UT of the calculation tile, each control unit UC providing instructions to at least one unit of calculation. UT treatment. The units of memory UM have for main function of formatting the data of the flow in order to facilitate the access of the processing units UT to these data.
Selon une première forme de réalisation, une unité de mémorisation UM comprend un nombre de registres de données égal au nombre d'unités de traitement UT situées dans la tuile de calcul TC de l'unité de mémorisation UM considérée.According to a first embodiment, a storage unit UM comprises a number of data registers equal to the number of processing units UT located in the calculation tile TC of the storage unit UM considered.
Selon une deuxième forme de réalisation, particulièrement adaptée au traitement d'images vidéo, une unité de mémorisation UM met en forme les données sous forme de voisinages et gère l'accès aux données lorsque des unités de traitement UT sont en parallèle. Une telle unité de mémorisation UM peut comprendre un premier bloc mémoire appelé bloc de mémoires de mise en forme et un deuxième bloc mémoire appelé bloc de registres de voisinage. Les unités de mémorisation UM des différentes tuiles de calcul TC étant indépendantes les unes des autres, le dispositif 1 de traitement du flux de données peut comprendre à la fois des unités de mémorisations UM selon la première forme de réalisation et des unités de mémorisation UM selon la deuxième forme de réalisation. La deuxième forme de réalisation permet de réaliser des traitements sur des voisinages de données. Pour une image vidéo, un voisinage peut être défini comme une maille de pixels adjacents, cette maille étant généralement carrée ou au moins rectangulaire. Une maille rectangulaire peut être définie par sa dimension VIxVc où Vl est le nombre de pixels du voisinage selon les lignes et Vc est le nombre de pixels du voisinage selon les colonnes. Le bloc de mémoires de mise en forme stocke les données du flux de sorte qu'elles puissent être recopiées de manière systématique à chaque arrivée d'une nouvelle donnée. Le bloc de registres de voisinage permet un accès aux pixels du voisinage courant par la ou les unités de traitement UT de la tuile de calcul considérée.According to a second embodiment, particularly adapted to the processing of video images, a storage unit UM formats the data in the form of neighborhoods and manages access to the data when UT processing units are in parallel. Such a storage unit UM may comprise a first memory block called formatting memory block and a second memory block called neighborhood register block. The storage units UM of the different calculation tiles TC being independent of one another, the data flow processing device 1 may comprise both storage units UM according to the first embodiment and storage units UM according to the second embodiment. The second embodiment allows processing on data neighborhoods. For a video image, a neighborhood can be defined as a mesh of adjacent pixels, this mesh being generally square or at least rectangular. A rectangular mesh may be defined by its dimension VIxVc where Vl is the number of pixels of the neighborhood along the lines and Vc is the number of pixels of the neighborhood according to the columns. The block of formatting memories stores the data of the stream so that it can be copied systematically at each arrival of a new datum. The neighborhood register block allows access to the pixels of the current neighborhood by the processing unit (s) UT of the considered calculation tile.
La figure 3 illustre, par un bloc 31 de mémoires de mise en forme représenté à différents pas de temps T, un exemple de gestion du bloc 31 pour des données correspondant à un flux de valeurs de pixels provenant d'un dispositif générant des matrices de NI lignes par Nc colonnes de données, tel qu'un capteur vidéo 32. Le capteur vidéo 32 est de résolution Nc colonnes par NI lignes de pixels. La résolution est par exemple VGA (640x480), "HD Ready" (1080x720) ou "FuII HD" (1920x1080). Les pixels sont envoyés et stockés au fur et à mesure de leur arrivée vers le bloc 31 de mémoires de mise en forme. Ce bloc 31 est avantageusement de dimension VIxNc pour permettre de générer des voisinages de dimension VIxVc. Autrement dit, le bloc 31 comprend VIxNc cellules mémoire agencées suivant une maille de Vl lignes et de Nc colonnes. Des valeurs courantes pour Vl sont trois, quatre, cinq, six ou sept. Physiquement, le bloc 31 peut être constitué d'un ou plusieurs modules mémoire. Le bloc 31 peut être géré comme un registre à décalage. Autrement dit, à chaque pas de temps ou cycle d'horloge, les données sont décalées pour laisser place à la nouvelle donnée entrante. Avantageusement, le bloc 31 est géré comme une mémoire classique de manière à ce que les pixels soient recopiés dans leur ordre d'arrivée.FIG. 3 illustrates, by a block 31 of formatting memories represented at different time steps T, an example of management of the block 31 for data corresponding to a stream of pixel values coming from a device generating matrixes of NI rows by Nc columns of data, such as a video sensor 32. The video sensor 32 is of Nc resolution columns by NI rows of pixels. The resolution is for example VGA (640x480), "HD Ready" (1080x720) or "FuII HD" (1920x1080). Pixels are sent and stored as they arrive to block 31 formatting memories. This block 31 is advantageously of dimension VIxNc to allow generation of neighborhoods of dimension VIxVc. In other words, the block 31 comprises VIxNc memory cells arranged along a mesh of Vl lines and Nc columns. Current values for Vl are three, four, five, six or seven. Physically, block 31 may consist of one or more memory modules. Block 31 can be managed as a shift register. In other words, at each time step or clock cycle, the data is shifted to make room for the new incoming data. Advantageously, the block 31 is managed as a conventional memory so that the pixels are copied in their order of arrival.
Dans ce dernier cas et dans un premier mode de réalisation, on considère un compteur CPT s'incrémentant à chaque donnée entrante. Chaque nouveau pixel venant du flux de données est alors recopié dans une cellule 33 du bloc 31 de mémoires de mise en forme située à la ligne correspondant à E(CPTVNc), où E(x) est la fonction renvoyant la partie entière d'un nombre x, et à la colonne correspondant au reste de CPT/Nc. Le compteur CPT est remis à zéro chaque fois qu'il atteint la valeur égale à VIxNc. Dans un deuxième mode de réalisation, on considère un compteur CPTC s'incrémentant après chaque donnée entrante et un compteur CPTL s'incrémentant à chaque fois que le compteur CPTC atteint la valeur Nc. Le compteur CPTC est remis à zéro chaque fois qu'il atteint la valeur Nc et le compteur CPTL est remis à zéro chaque fois qu'il atteint la valeur Vl. Chaque nouveau pixel venant du flux de données est alors recopié dans la cellule 33 dont le numéro de ligne correspond à la valeur CPTL et dont le numéro de colonne correspond à la valeur CPTC.In the latter case and in a first embodiment, a CPT counter is considered incrementing to each incoming data item. Each new pixel coming from the data stream is then copied into a cell 33 of the formatting memory block 31 located at the line corresponding to E (CPTVNc), where E (x) is the function returning the integer part of a number x, and the column corresponding to the rest of CPT / Nc. The counter CPT is reset each time it reaches the value equal to VIxNc. In a second embodiment, a CPTC counter is considered to increment after each incoming data and a counter CPTL is incremented each time the counter CPTC reaches the value Nc. The counter CPTC is reset each time it reaches the value Nc and the counter CPTL is reset each time it reaches the value Vl. Each new pixel coming from the data stream is then copied into the cell 33 with the line number corresponds to the CPTL value and whose column number corresponds to the CPTC value.
La figure 4 illustre un exemple de gestion du bloc de registres de voisinage pour des données provenant du bloc 31 de mémoires de mise en forme. Le bloc 34 de registres de voisinage comprend par exemple un nombre de registres de voisinage égal à VIxVc. Ces registres de voisinage sont agencés de la même manière que le voisinage de pixels, c'est-à-dire qu'ils forment une maille de Vl lignes et Vc colonnes de registres. La recopie des données du bloc 31 de mémoires de mise en forme vers les registres de voisinage débute dès qu'il y a un nombre de données dans le bloc 31 égal à (VI-1 )xNc+1 . Dans le cas d'un voisinage de dimension 3x3, représenté à la figure 4, la recopie des données débute ainsi lorsque deux lignes de données plus une donnée sont présentes dans le bloc 31 . Dans un mode de réalisation, les données sont recopiées à chaque cycle d'horloge par groupes de Vl données d'une même colonne. A un pas de temps donné, le numéro de la colonne à recopier est donné par la valeur de CPTC. Cette colonne comprend en effet le dernier pixel arrivé dans le bloc 31 . Avantageusement, une colonne 35 de Vl registres de données est ajoutée aux registres de voisinage. Cette colonne 35 permet de ne bloquer les accès aux registres du bloc 34 par les unités de traitement UT que pendant un seul cycle d'horloge, celui du décalage des valeurs dans le bloc 34. Autrement, les accès sont bloqués à la fois pendant le décalage des valeurs et pendant la recopie des données à partir du bloc 31 . Pendant un premier cycle d'horloge, les données de la colonne du bloc 31 indiquée par le compteur CPTC sont recopiées dans les registres de la colonne 35. Pendant un deuxième cycle d'horloge, toutes les données du bloc 34 et de la colonne 35 sont décalées d'une colonne. Ainsi, pour un voisinage de dimension 3x3, dans un même cycle d'horloge, les données d'une première colonne 341 sont décalées vers une deuxième colonne 342, pendant que les données de cette colonne 342 sont décalées vers une troisième colonne 343 et que les données de la colonne 35 sont décalées vers la colonne 341 .FIG. 4 illustrates an exemplary management of the neighborhood register block for data from block 31 of formatting memories. The block 34 of neighborhood registers for example comprises a number of neighborhood registers equal to VIxVc. These neighborhood registers are arranged in the same way as the neighborhood of pixels, that is to say they form a mesh of Vl lines and Vc columns of registers. The copy of the data from the block 31 of formatting memories to the neighborhood registers starts as soon as there is a number of data in the block 31 equal to (VI-1) xNc + 1. In the case of a neighborhood of dimension 3x3, represented in FIG. 4, the copying of the data begins thus when two lines of data plus one datum are present in block 31. In one embodiment, the data is copied at each clock cycle by groups of data items of the same column. At a given time step, the number of the column to be copied is given by the value of CPTC. This column indeed includes the last pixel arrived in block 31. Advantageously, a column 35 of V1 data registers is added to the neighborhood registers. This column 35 makes it possible to block access to the registers of the block 34 by the processing units UT only during a single clock cycle, that of the shifting of the values in the block 34. Otherwise, the accesses are blocked both during the offset values and while copying data from block 31. During a first clock cycle, the data of the column of the block 31 indicated by the counter CPTC are copied into the registers of the column 35. During a second clock cycle, all the data of the block 34 and the column 35 are shifted by one column. Thus, for a neighborhood of dimension 3 × 3, in the same clock cycle, the data of a first column 341 are shifted to a second column 342, while the data of this column 342 are shifted to a third column 343 and that the data in column 35 is shifted to column 341.
Du fait de la gestion cyclique du bloc 31 , les données ne sont pas toujours stockées dans le bloc 31 suivant l'ordre des lignes du capteur vidéo 32. Dans ce cas, les pixels doivent être recopiés dans la colonne 35 ou, le cas échéant, dans la colonne 341 du bloc 34, dans un ordre différent. La figure 5 illustre un tel cas où les dernières données du flux se trouvent stockées sur la première ligne du bloc 31 . Dans le cas d'un voisinage de dimension 3x3, la recopie des pixels dans la colonne 35 peut être gérée par les étapes de placement suivantes : - le pixel dernier arrivant va toujours sur la troisième ligne 347 de la colonne 35 des registres de voisinage ;Because of the cyclic management of the block 31, the data are not always stored in the block 31 in the order of the lines of the video sensor 32. In this case, the pixels must be copied in the column 35 or, where appropriate in column 341 of block 34 in a different order. FIG. 5 illustrates such a case where the last data of the stream are stored on the first line of block 31. In the case of a 3 × 3-dimensional neighborhood, the copying of the pixels in the column 35 can be managed by the following placement steps: the last arriving pixel always goes to the third line 347 of the neighborhood register column 35;
- si le compteur CPTL est égal à zéro, autrement dit si le dernier pixel est arrivé à la première ligne 31 1 du bloc 31 , alors o le pixel de la deuxième ligne 312 du bloc 31 est recopié à la première ligne 345 de la colonne 35, o le pixel de la troisième ligne 313 du bloc 31 est recopié à la deuxième ligne 346 de la colonne 35 ;if the counter CPTL is equal to zero, in other words if the last pixel has arrived at the first line 31 1 of the block 31, then the pixel of the second line 312 of the block 31 is copied to the first row 345 of the column 35 the pixel of the third line 313 of the block 31 is copied to the second line 346 of the column 35;
- si le compteur CPTL est égal à un, autrement dit si le dernier pixel est arrivé à la deuxième ligne 312 du bloc 31 , alors o le pixel de la première ligne du bloc 31 est recopié à la deuxième ligne 346 de la colonne 35, o le pixel de la troisième ligne 313 du bloc 31 est recopié à la première ligne 345 de la colonne 35 ;if the counter CPTL is equal to one, in other words if the last pixel has arrived at the second line 312 of the block 31, then the pixel of the first line of the block 31 is copied to the second line 346 of the column 35, the pixel of the third line 313 of the block 31 is copied to the first line 345 of the column 35;
- si le compteur CPTL est égal à deux, autrement dit si le dernier pixel est arrivé à la troisième ligne 313 du bloc 31 , alors o le pixel de la première ligne 31 1 du bloc 31 est recopié à la première ligne 345 de la colonne 35, o le pixel de la deuxième ligne 312 du bloc 31 est recopié à la deuxième ligne 346 de la colonne 35. Plus généralement, dans le cas d'un voisinage de taille VIxVc, le pixel du bloc 31 de mémoires de mise en forme situé à la ligne NoLigne et à la colonne indiquée par CPTC est notamment recopié à la colonne 35, ou, le cas échéant, dans la première colonne 341 du bloc 34, à la ligne définie par (CPTL + NoLigne + 1 ) modulo Vl. NoLigne prend toutes les valeurs entières positives comprises entre 1 et Vl de manière à permettre la recopie des pixels pour toutes les lignes du voisinage.if the counter CPTL is equal to two, in other words if the last pixel has arrived at the third line 313 of the block 31, then the pixel of the first line 31 1 of the block 31 is copied to the first row 345 of the column 35, where the pixel of the second line 312 of the block 31 is copied to the second line 346 of the column 35. More generally, in the case of a neighborhood of size VIxVc, the pixel of the block 31 of formatting memories located on the line NoLigne and the column indicated by CPTC is in particular copied in column 35, or, where appropriate, in the first column 341 of block 34, to the line defined by (CPTL + NoLigne + 1) modulo Vl. NoLine takes all the positive integer values between 1 and Vl so as to allow the copying of the pixels for all the lines of the neighborhood.
Selon un mode particulier de réalisation, la recopie des pixels du bloc 31 dans la colonne 35 de registres n'est pas effectuée simultanément au décalage des pixels dans le bloc 34. Cette forme de réalisation permet aux unités de traitement UT d'accéder aux données présentes dans le bloc 34 de registres de voisinage pendant une plus grande période. La figure 6 représente un ensemble de chronogrammes permettant de mettre en œuvre ce mode de réalisation. Le décalage temporel entre la recopie des pixels et le décalage des pixels dans le bloc 34 peut être réalisé en introduisant, en plus d'une première horloge, appelée horloge pixel 61 et permettant de cadencer le flux de données et la recopie des pixels, une deuxième horloge, appelée horloge pixel décalée 62. Cette horloge pixel décalée 62 peut être à la même fréquence que l'horloge pixel 61 mais décalée dans le temps. Ce décalage correspond par exemple à une période de l'horloge des unités de traitement UT 63. Les données présentes dans le bloc 34 sont alors accessibles pendant toute la période séparant deux coups d'horloge de l'horloge pixel décalée 62. L'accès aux registres de voisinage par les unités de traitement UT peut être réalisé par un port d'entrée/sortie, par exemple intégré à chaque unité de traitement UT, dont le nombre de connexions est égal au nombre de registres de voisinage multiplié par la taille des données. Chaque registre de voisinage est relié au port d'entrée/sortie. Avantageusement, chaque unité de mémorisation UM comprend un multiplexeur dont le nombre d'entrées est égal au nombre de registres de voisinage du bloc 34 et le nombre de sorties est égal au nombre de données pouvant être traitées simultanément par l'unité de traitement UT de la tuile de calcul TC considérée. L'unité de traitement UT peut alors comprendre un port d'entrée/sortie dont le nombre de connexions est égal au nombre de données pouvant être traitées simultanément multiplié par la taille des données. En l'occurrence, une unité de traitement UT comprenant un processeur VLIW à deux voies traitant des données sur 12 bits peut comporter un port d'entrée/sortie à 24 (2x12) connexions.According to a particular embodiment, the copying of the pixels of the block 31 in the register column 35 is not performed simultaneously with the offset of the pixels in the block 34. This embodiment allows the UT processing units to access the data. present in block 34 of neighborhood registers for a longer period. Figure 6 shows a set of timing diagrams for implementing this embodiment. The temporal offset between the copying of the pixels and the offset of the pixels in the block 34 can be achieved by introducing, in addition to a first clock, called the pixel clock 61 and allowing to clock the data flow and the copying of the pixels, a second clock, called offset pixel clock 62. This offset pixel clock 62 may be at the same frequency as the pixel clock 61 but shifted in time. This offset corresponds, for example, to a period of the clock of the processing units UT 63. The data present in the block 34 are then accessible during the entire period separating two clock ticks from the offset pixel clock 62. Access to the neighborhood registers by the processing units UT can be achieved by an input / output port, for example integrated to each unit UT processing, whose number of connections is equal to the number of neighborhood registers multiplied by the size of the data. Each neighborhood register is connected to the input / output port. Advantageously, each storage unit UM comprises a multiplexer whose number of inputs is equal to the number of neighborhood registers of the block 34 and the number of outputs is equal to the number of data that can be processed simultaneously by the processing unit UT of the TC calculation tile considered. The processing unit UT may then comprise an input / output port whose number of connections is equal to the number of data that can be processed simultaneously multiplied by the size of the data. In this case, a processing unit UT comprising a two-way VLIW processor processing 12-bit data may comprise an input / output port with 24 (2x12) connections.
Selon un mode particulier de réalisation, une même unité de mémorisation UM fournit des données à plusieurs unités de traitement UT en parallèle. Autrement dit, le dispositif 1 de traitement comporte une tuile de calcul TC comprenant plusieurs unités de traitement UT. Ce mode de réalisation utilise avantageusement les unités de mémorisation UM comportant un bloc 31 de mémoires de mise en forme et un bloc 34 de registres de voisinage. Cependant, la dimension du bloc 34 de registres de voisinage nécessite d'être adaptée. La figure 7 illustre un exemple de tuile de calcul TC où une unité de mémorisation UM fournit des données à n unités de traitement UT en parallèle, n étant inférieur ou égal au nombre N d'unités de traitement UT du dispositif 1. Les instructions sont fournies aux n unités de traitement UT par une ou plusieurs unités de contrôle UC. Selon ce mode de réalisation, le bloc 34 de registres de voisinage est de dimension Vlx(n+Vc-1 ). Autrement dit, le bloc 34 comprend Vlx(n+Vc-1 ) registres de données agencés suivant une maille de Vl lignes et n+Vc-1 colonnes. Par exemple, pour trois unités de traitement UT en parallèle et un voisinage de dimension 5x5, une maille de 7 (=3+5-1 ) colonnes et 5 lignes de registres sont nécessaires. De plus, une colonne 35 de Vl registres de données peut être ajoutée au bloc 34. Ainsi, l'accès aux registres de voisinage par les unités de traitement UT n'est bloqué que pendant un seul cycle des unités de traitements UT. La recopie des données du bloc 31 vers la colonne 35 de registres débute alors lorsque le bloc 31 de mémoires de mise en forme comporte (VI-1 )xNc+1 données. Par ailleurs, pour n unités de traitement UT en parallèle, le traitement des données est réalisé lorsque n nouvelles données sont arrivées dans le bloc 31. L'accès aux registres de voisinage par les n unités de traitement UT peut également être réalisé par un port d'entrée/sortie intégré à chaque unité de traitement UT. Le nombre de connexions du port d'entrée/sortie de chaque unité de traitement UT est alors égal au nombre de registres de voisinage auxquels l'unité de traitement UT nécessite un accès multiplié par la taille des données. De même, l'unité de mémorisation UM peut comprendre un multiplexeur dont le nombre d'entrées est égal au nombre de registres de voisinage du bloc 34 et le nombre de sorties est égal au nombre de données pouvant être traitées simultanément par les n unités de traitement UT, chaque unité de traitement UT comprenant un port d'entrée/sortie dont le nombre de connexions est égal au nombre de données pouvant être traitées simultanément par ladite unité de traitement UT multiplié par la taille des données.According to a particular embodiment, the same storage unit UM provides data to several processing units UT in parallel. In other words, the processing device 1 comprises a calculation tile TC comprising several processing units UT. This embodiment advantageously uses the storage units UM comprising a block 31 of formatting memories and a block 34 of neighborhood registers. However, the size of the block 34 of neighborhood registers needs to be adapted. FIG. 7 illustrates an example of a calculation tile TC in which a storage unit UM supplies data with n processing units UT in parallel, n being less than or equal to the number N of processing units UT of the device 1. The instructions are supplied to the n UT processing units by one or more UC control units. According to this embodiment, the block 34 of neighborhood registers is of dimension Vlx (n + Vc-1). In other words, the block 34 comprises Vlx (n + Vc-1) data registers arranged along a mesh of Vl lines and n + Vc-1 columns. For example, for three parallel UT processing units and a 5x5-sized neighborhood, a cell of 7 (= 3 + 5-1) columns and 5 rows of registers is required. In addition, a column 35 of VL registers of data can be added to block 34. Thus, access to neighborhood registers by UT processing units are blocked only during a single cycle of UT processing units. The copy of the data from block 31 to register column 35 then begins when block 31 of formatting memories includes (VI-1) xNc + 1 data. Furthermore, for n UT processing units in parallel, the data processing is performed when n new data has arrived in block 31. The access to neighborhood registers by the n processing units UT can also be achieved by a port integrated input / output to each UT processing unit. The number of connections of the input / output port of each processing unit UT is then equal to the number of neighborhood registers to which the processing unit UT requires access multiplied by the size of the data. Similarly, the storage unit UM may comprise a multiplexer whose number of inputs is equal to the number of neighborhood registers of the block 34 and the number of outputs is equal to the number of data that can be processed simultaneously by the n units of UT processing, each UT processing unit comprising an input / output port whose number of connections is equal to the number of data that can be processed simultaneously by said processing unit UT multiplied by the size of the data.
La figure 8 illustre, par un ensemble de chronogrammes, un exemple de gestion d'une tuile de calcul TC comportant deux unités de traitement UT en parallèle. Un premier chronogramme 81 représente l'horloge des unités de traitement UT de cadence Farchi- Un deuxième chronogramme 82 représente l'horloge pixel de cadence FpiXΘ|. L'horloge pixel fixe la cadence à laquelle arrivent les données du flux, lesquelles sont envoyées dans le bloc 31 de mémoires de mise en forme. La cadence Farchi peut être égale à pxFpiXθι avec p un entier positif. Selon la figure 8, la cadence FpiXθι est quatre fois supérieure à la cadence Farchi- Chaque unité de traitement UT dispose ainsi de quatre cycles d'horloge par donnée à traiter. Un troisième chronogramme 83 représente une horloge de décalage. Cette horloge génère deux coups d'horloge 831 , 832 successifs après un coup d'horloge sur deux de l'horloge pixel. A chaque coup d'horloge de l'horloge de décalage, les données du bloc 34 sont décalées d'une colonne. Un quatrième chronogramme 84 représente l'horloge pixel décalé. La cadence de cette horloge est sensiblement égale à la moitié de la cadence FpiXθι, un coup d'horloge 840 étant généré après les deux coups d'horloge 831 , 832 de l'horloge de décalage. De manière générale, la cadence de l'horloge pixel décalée est égale à 1/n fois la cadence FpiXθι de l'horloge pixel. A chaque coup d'horloge 840 de l'horloge pixel décalée, les données sont recopiées du bloc 31 vers le bloc 35. L'accès aux registres de voisinage par les unités de traitement UT est possible entre deux coups d'horloge 840 de l'horloge pixel décalée.FIG. 8 illustrates, by a set of timing diagrams, an example of management of a calculation tile TC comprising two processing units UT in parallel. A first timing diagram 81 represents the clock of the processing units UT of the frame rate F arc hi. A second timing diagram 82 represents the clock pixel clock F piXΘ |. The pixel clock sets the rate at which the data of the stream arrive, which are sent in the block 31 of formatting memories. The rate F arc hi may be equal to pxF piXθ ι with p a positive integer. According to FIG. 8, the rate F piXθ ι is four times greater than the clock rate F arc. Each processing unit UT thus has four clock cycles per data to be processed. A third timing diagram 83 represents an offset clock. This clock generates two successive 831, 832 clock ticks after a clock pulse on two of the pixel clock. At each clock stroke of the shift clock, the data of block 34 is shifted by one column. A fourth timing diagram 84 represents the offset pixel clock. The rate of this clock is substantially equal to half the rate F piXθ ι, a clock stroke 840 being generated after the two clock ticks 831, 832 of the shift clock. In general, the rate of the offset pixel clock is equal to 1 / n times the rate F piXθ ι of the pixel clock. At each clock stroke 840 of the offset pixel clock, the data is copied from block 31 to block 35. Access to the neighborhood registers by the processing units UT is possible between two clock ticks 840. offset pixel clock.
Selon une forme particulière de réalisation, les moyens 4 d'interconnexion comprennent un nombre Nb_bus de bus de données. Nb_bus peut être défini par la relation suivante :According to a particular embodiment, the interconnection means 4 comprise a number Nb_bus of data bus. Nb_bus can be defined by the following relation:
NbJ)US = Kx(Fpi|/Farchi)+1 -NbJ ) US = Kx ( Fpi XΘ | / Farchi) +1 -
Cette forme de réalisation permet de connecter les K tuiles de calcul TC les unes aux autres en réalisant un multiplexage spatiotemporel dont le rapport Mux_t de multiplexage temporel est défini par la relation : MUXJ = Farchl/Fpixβi.This embodiment makes it possible to connect the K calculation tiles TC to each other by performing a spatiotemporal multiplexing whose time division multiplexing ratio Mux_t is defined by the relation: MUXJ = Farchl / Fpixβi.
Le rapport Mux_t de multiplexage temporel permet de définir un nombre égal d'intervalles de temps, les autorisations d'accès en lecture et en écriture pouvant être définis pour chaque intervalle de temps. Par exemple, pour une cadence FpiXθι égale à 50 MHz et une cadence Farchi à 200 MHz, les quatre tuiles de calcul TC de la figure 1 peuvent être chaînées dans un ordre quelconque si les moyens 4 d'interconnexion comportent au minimum deux (4x(50/200)+1 ) bus de données, les tuiles de calcul TC étant adressées par un multiplexage temporel de rapport quatre (=200/50). Selon cette forme de réalisation, chaque unité d'entrée/sortie UES peut gérer les autorisations d'accès en lecture et en écriture en fonction du nombre Nb_bus de bus et du rapport Mux_t de multiplexage temporel. En particulier, chaque unité d'entrée/sortie UES peut comporter des registres permettant de déterminer les intervalles de temps pendant lesquels la tuile de calcul TC considérée a une autorisation d'accès en lecture ou en écriture sur l'un des bus de données et, pour chacun de ces intervalles de temps, le bus de données pour lequel l'accès en lecture ou en écriture est autorisé. Une unité d'entrée/sortie UES comporte par exemple, pour la gestion des autorisations d'accès en écriture, Nb_bus registres de taille log2(Mux_t) bits, où Iog2(x) est la fonction renvoyant le logarithme en base 2 du nombre x et, pour la gestion des autorisations d'accès en lecture, un registre de taille log2(Nb_bus) bits précisant le numéro du bus à lire et un registre de taille log2(Mux_t) bits précisant l'intervalle de temps. Un exemple de réalisation d'une telle unité d'entrée/sortie UES est représenté à la figure 9. L'unité d'entrée/sortie UES comporte deux registres 91 et 92 de 2 bits chacun, le registre 91 gérant l'autorisation d'accès en écriture sur le bus 41 et le registre 92 gérant l'autorisation d'accès en écriture sur le bus 42. Le contenu des registres 91 et 92 est comparé à la valeur de l'intervalle de temps courant, par exemple par des comparateurs 93 et 94 et, en cas d'égalité, l'écriture des données est autorisée sur le bus 41 ou 42 concerné. L'unité d'entrée/sortie UES comporte également un registre 95 de 1 bit précisant le numéro du bus 41 ou 42 à lire et un registre 96 de 2 bits précisant l'intervalle de temps pour la lecture. Le contenu du registre 96 est également comparé à l'intervalle de temps courant, par exemple par un comparateur 97 et, en cas, d'égalité, la lecture des données est autorisée sur le bus 41 ou 42 concerné. Cette forme de réalisation présente l'avantage que chaque unité d'entrée/sortie UES gère individuellement les autorisations d'accès entre les tuiles de calcul TC et les bus 41 et 42. Par conséquent, aucun organe de contrôle centralisé n'est nécessaire. La valeur des registres de chaque unité d'entrée/sortie UES, est fixée au démarrage du système en fonction du chaînage souhaité des tuiles de calcul TC. Une tuile de calcul TC non utilisée pourra avoir les valeurs des registres de son unité d'entrée/sortie UES initialisées de manière à n'avoir aucun droit de lecture ou d'écriture sur le bus 41 ou 42.The time division multiplex Mux_t report defines an equal number of time slots, the read and write access permissions can be set for each time interval. For example, for a rate F piXθ ι equal to 50 MHz and a rate f arch i at 200 MHz, the four calculation tiles TC of FIG. 1 can be linked in any order if the interconnection means 4 comprise at least two (4x (50/200) +1) data bus, the calculation tiles TC being addressed by a time multiplexing ratio four (= 200/50). According to this embodiment, each UES input / output unit can handle the read and write access permissions according to the number bus bus Nb_bus and the time division multiplex report Mux_t. In particular, each input / output unit UES may comprise registers for determining the time intervals during which the calculation tile CT considered has a read or write access authorization on one of the data buses and , for each of these time slots, the data bus for which read or write access is allowed. An input / output unit UES comprises, for example, for the management of write access permissions, Nb_bus registers of size log2 (Mux_t) bits, where Iog2 (x) is the function returning the logarithm in base 2 of the number x and, for the management of read access permissions, a register of size log2 (Nb_bus) bits specifying the number of the bus to read and a log size log2 (Mux_t) bits specifying the time interval. An exemplary embodiment of such an input / output unit UES is shown in FIG. 9. The input / output unit UES comprises two registers 91 and 92 of 2 bits each, the register 91 managing the authorization of write access on the bus 41 and the register 92 managing the write access authorization on the bus 42. The contents of the registers 91 and 92 are compared with the value of the current time interval, for example by means of comparators 93 and 94 and, in case of equality, the writing of data is allowed on the bus 41 or 42 concerned. The input / output unit UES also comprises a register 95 of 1 bit specifying the number of the bus 41 or 42 to be read and a register 96 of 2 bits specifying the time interval for the reading. The contents of the register 96 are also compared to the current time interval, for example by a comparator 97 and, in the case of equality, the reading of the data is authorized on the bus 41 or 42 concerned. This embodiment has the advantage that each UES input / output unit individually manages the access authorizations between the calculation tiles TC and the buses 41 and 42. Consequently, no centralized control unit is necessary. The value of the registers of each input / output unit UES is set at the start of the system according to the desired chaining of the calculation tiles TC. An unused CT calculation tile may have the values of the registers of its input / output unit UES initialized so as to have no read or write rights on the bus 41 or 42.
Selon une forme particulière de réalisation, représentée à la figure 1 , chaque tuile de calcul TC comprend en outre un bloc série BS comportant autant de registres de données que d'unités de traitement UT présentes dans la tuile considérée, la taille des registres étant de taille au moins égale à la taille des données du flux. Le bloc série BS d'une tuile de calcul TC reçoit en entrée les données provenant de la ou des unités de traitement UT et est connecté en sortie à l'unité d'entrée/sortie UES. Lors d'une autorisation en écriture sur l'un des bus 41 ou 42, les données présentes dans le bloc série (BS) sont envoyées séquentiellement sur ce bus 41 ou 42.According to a particular embodiment, represented in FIG. 1, each calculation tile TC furthermore comprises a series block BS comprising as many data registers as of UT processing units present in the tile considered, the size of the registers being size at least equal to the size of the feed data. The serial block BS of a calculation tile TC receives as input the data coming from the processing unit or units UT and is connected at the output to the input / output unit UES. During write authorization on one of the buses 41 or 42, the data present in the serial block (BS) are sent sequentially on this bus 41 or 42.
La figure 10 illustre un exemple de mise en œuvre du dispositif 1 de traitement d'un flux de données pour des traitements à réaliser sur des images brutes. Les images brutes sont par exemple issues d'un filtre de Bayer 1 10, par exemple représenté à la figure 1 1. Avec un tel filtre, une image couleur est constituée par une mosaïque de pixels de couleurs rouge, vert et bleu. En particulier, la mosaïque est constituée d'une alternance de pixels bleus et verts sur un premier type de ligne et d'une alternance de pixels verts et rouges sur un deuxième type de ligne, les types de lignes étant également alternés de façon à former des diagonales de pixels verts. Le dispositif 1 selon l'invention est particulièrement adapté à de telles données. En effet, pour chaque type de ligne, il est possible de constituer une tuile de calcul TC capable de traiter simultanément plusieurs pixels bien qu'ils soient de couleur différente. Dans un mode de réalisation, représenté à la figure 10, la tuile de calcul TC comporte, d'une part, une première unité de contrôle UC1 fournissant un premier code à une première et à une troisième unité de traitement UT1 et UT3 et, d'autre part, une deuxième unité de contrôle UC2 fournissant un deuxième code à une deuxième et à une quatrième unité de traitement UT2 et UT4. Le premier code est spécifique à une première couleur de pixel, par exemple rouge, et le deuxième code est spécifique à une deuxième couleur de pixel, par exemple vert. Le code peut également être découpé en segments de code, un gestionnaire d'adresse indiquant alors aux unités de contrôle UC1 et UC2 la couleur du pixel traité. Les unités de traitement UT1 , UT2, UT3 et UT4 agissent alors sur les données présentes dans le bloc 34 de registres de voisinage en fonction des instructions qu'elles reçoivent. En l'occurrence, les première et troisième unités de traitement UT1 et UT3 agissent sur des pixels rouges et les deuxième et quatrième unités de traitement UT2 et UT4 agissent sur les pixels verts. La tuile de calcul permet ainsi de traiter simultanément, mais distinctement, quatre pixels du bloc 34 de registres de voisinage. Dans le cas du filtre de Bayer 1 10, deux unités de contrôle UC1 et UC2 par ligne suffisent car une ligne ne comporte que deux couleurs différentes. Bien évidemment, les tuiles de calcul peuvent être adaptées en fonction du filtre de couleur appliqué.FIG. 10 illustrates an exemplary implementation of the device 1 for processing a data stream for treatments to be carried out on raw images. The raw images are for example from a Bayer filter 1 10, for example shown in Figure 1 1. With such a filter, a color image is constituted by a mosaic of pixels of red, green and blue colors. In particular, the mosaic consists of an alternation of blue and green pixels on a first type of line and an alternation of green and red pixels on a second type of line, the types of lines being alternated so as to form diagonals of green pixels. The device 1 according to the invention is particularly suitable for such data. Indeed, for each type of line, it is possible to constitute a calculation tile TC capable of simultaneously processing several pixels although they are of different color. In one embodiment, shown in FIG. 10, the calculation tile TC comprises, on the one hand, a first control unit UC1 supplying a first code to a first and a third processing unit UT1 and UT3 and, d secondly, a second control unit UC2 providing a second code to a second and a fourth processing unit UT2 and UT4. The first code is specific to a first pixel color, for example red, and the second code is specific to a second pixel color, for example green. The code can also be divided into code segments, an address manager then indicating to the control units UC1 and UC2 the color of the processed pixel. The processing units UT1, UT2, UT3 and UT4 then act on the data present in the block 34 of neighborhood registers according to the instructions they receive. In this case, the first and third processing units UT1 and UT3 act on red pixels and the second and fourth processing units UT2 and UT4 act on the green pixels. The calculation tile thus makes it possible to process simultaneously, but distinctly, four pixels of the block 34 of neighborhood registers. In the case of the Bayer 1 10 filter, two control units UC1 and UC2 per line suffice because a line has only two different colors. Of course, the calculation tiles can be adapted according to the applied color filter.
Selon une forme particulière de réalisation, les données en transit sur les moyens 4 d'interconnexion peuvent contenir la donnée à traiter, mais aussi des informations supplémentaires, appelées métadonnées. Ces métadonnées peuvent être utilisées pour le transport de différentes informations associées aux données. Dans le cadre d'un traitement d'image vidéo, où les données sont relatives à des pixels, une métadonnée contient par exemple une valeur représentative d'une correction de bruit ou de gain à appliquer aux pixels. La même correction peut ainsi être appliquée à tous les pixels de l'image. Les métadonnées peuvent également concerner les trois valeurs R, G et B (Rouge, Vert et Bleu), des résultats intermédiaires à associer à un pixel, ou encore des informations permettant de contrôler le programme en fonction des caractéristiques du pixel. L'utilisation de ces métadonnées permet de découper aisément les algorithmes en plusieurs parties et de les exécuter sur différentes tuiles de calcul TC en mode multi- SIMD. Les données en transit peuvent être découpées selon différents formats. Le format de découpage est spécifié dans des registres de format Mri, comme représenté sur la figure 12 (au nombre de quatre dans ce cas particulier M1-O, Mr1 , Mr2, Mr3). Dans le cas présenté sur la figure 12, un mot de données de 24 bits a été scindé en trois parties 121 , 122, 123 alors qu'un découpage jusqu'à quatre était possible. Ces registres de format sont définis pour une tuile de calcul TC et leur valeur respective est fixée lors du chargement du programme. Les accès aux données sont ensuite systématiquement réalisés par un mécanisme tel que présenté sur la figure 13, composé de multiplexeurs 131 a, 131 b, 131 c, 131d, de registres à décalage 132a, 132b et de portes logiques 133a, 133b, 133c, 133d, 137. Sur cette figure 13, on retrouve les registres de format Mri 134 associés à des registres de position Dri 135. Ces registres Dri 135 sont déduits des registres Mri 134 par le logiciel de chargement des paramètres du programme. Ils permettent d'obtenir la position de début de la métadonnée considérée. Seuls les registres de format Mri 134 sont donnés par le programmeur, les registres de position Dri 135 étant automatiquement obtenus à partir des registres de format Mri 134. Dans l'exemple de la figure 13, M1-O est associé à Dr0=0, Mr1 est associé à Dr1 =8, Mr2 est associé à Dr2=16 et Mr3 est associé à Dr1 =24. Une réalisation possible d'un mécanisme de lecture et d'écriture des métadonnées dans un registre de 24 bits 136, permettant l'accès au réseau de communication, est donnée figure 13. Pour la partie lecture des métadonnées, les registres de format 134 sont reliés par un multiplexeur 131 b commandé par la position courante à récupérer CMr à une cellule de ET logique 133d permettant de mettre à zéro les bits du registre 136 qui ne sont pas concernés par la position définie, puis les registres de position 135 sont reliés à un registre à décalage 132b qui permet de décaler le résultat précédent du bon nombre de fois afin de disposer d'une valeur calée à droite qui est la valeur finale à récupérer pour la position considérée. Pour la partie écriture des métadonnées, la donnée à écrire Val est décalée à la bonne position grâce au registre de position 135 relié à un multiplexeur 131 c commandé par la position courante à écrire CMw, multiplexeur 131 c lui- même relié à un registre à décalage 132a. Seuls les bits concernés ne sont pas mis à zéro grâce à une cellule de ET logique 133a reliée au multiplexeur 131 a qui donne les bits à masquer grâce au registre de format 134. Enfin ces bits sont concaténés avec ceux déjà présents dans le registre de destination 136. Pour cela, le registre de format 134 est inversé par une cellule de NON logique 137 puis un ET logique est réalisé par une cellule 133b entre le registre de format inversé et la valeur du registre 136, permettant ainsi de fabriquer un nouveau masque qui attaque une cellule OU logique 133c permettant d'associer la nouvelle donnée au registre 136 sans toucher les bits non concernés.According to a particular embodiment, the data in transit on the interconnection means 4 may contain the data to be processed, but also additional information, called metadata. These metadata can be used to transport different information associated with the data. In the context of a video image processing, where the data relate to pixels, a metadata contains for example a value representative of a noise correction or gain to be applied to the pixels. The same correction can thus be applied to all the pixels of the image. The metadata can also relate to the three values R, G and B (Red, Green and Blue), intermediate results to be associated with a pixel, or information to control the program according to the characteristics of the pixel. The use of these metadata makes it easy to split the algorithms into parts and run them on different TC calculation tiles in multi-SIMD mode. The data in transit can be divided into different formats. The cutting format is specified in registers of format M r i, as represented in FIG. 12 (four in this particular case M 1 -O, M r 1, M r 2, M r 3). In the case shown in Figure 12, a 24-bit data word was split into three parts 121, 122, 123 while cutting up to four was possible. These format registers are defined for a calculation tile TC and their respective value is fixed during the loading of the program. The accesses to the data are then systematically made by a mechanism as shown in FIG. 13, composed of multiplexers 131a, 131b, 131c, 131d, shift registers 132a, 132b and logic gates 133a, 133b, 133c, 133d, 137. In this FIG. 13, we find the registers of format M r 134 associated with position registers D r i 135. These registers D r i 135 are deduced from the registers M r i 134 by the loading software program settings. They make it possible to obtain the starting position of the metadata considered. Only the registers of format M r i 134 are given by the programmer, the position registers D r i 135 being automatically obtained from the registers of format M r i 134. In the example of FIG. 13, M 1 -O is associated with D r 0 = 0, M r 1 is associated with D r 1 = 8, M r 2 is associated with D r 2 = 16 and M r 3 is associated with D r 1 = 24. A possible embodiment of a mechanism for reading and writing metadata in a 24-bit register 136, allowing access to the communication network, is given in FIG. 13. For the reading part of the metadata, the format registers 134 are connected by a multiplexer 131b controlled by the current position to be recovered CMr to a logical AND cell 133d making it possible to zero the bits of the register 136 which are not concerned by the defined position, then the position registers 135 are connected to a shift register 132b which allows the preceding result to be shifted a good number of times in order to have a value set to the right which is the final value to be recovered for the position considered. For the write part of the metadata, the data to be written Val is shifted to the right position by virtue of the position register 135 connected to a multiplexer 131c controlled by the current position to write CMw, multiplexer 131c itself connected to a register to shift 132a. Only the bits concerned are not set to zero by a logical AND cell 133a connected to the multiplexer 131a which gives the bits to be masked by the format register 134. Finally, these bits are concatenated with those already present in the destination register. 136. For this purpose, the format register 134 is inverted by a logical NO cell 137 and then a logical AND is made by a cell 133b between the inverted format register and the value of the register 136, thus making it possible to manufacture a new mask which Attacks a logical OR cell 133c to associate the new data to the register 136 without touching the bits not concerned.
Avec cette gestion des métadonnées, le calcul de nombres complexes ou à virgule fixe se trouve grandement facilité. Le dispositif de traitement selon l'invention peut ainsi être avantageusement utilisé pour les traitements dans le domaine de Fourier (fréquentiel) par exemple. Le dispositif de traitement selon l'invention peut également être adapté pour accélérer l'émulation de nombres à virgule flottante à l'aide d'opérateurs à virgule fixe. Dans une architecture multi-SIMD, les métadonnées peuvent être utilisées pour déterminer les instructions à transmettre aux processeurs. En effet, les informations complémentaires (métadonnées) peuvent indiquer le traitement spécifique à exécuter sur les données auxquelles elles sont associées. Il suffit d'extraire l'information nécessaire du mot de données dès son entrée dans la tuile de calcul TC, illustrée par l'exemple de la figure 14, et de la transmettre à l'unité de contrôle UC qui gère les unités de traitement UT en mode multi-SIMD. En l'occurrence, la métadonnée peut être extraite lorsque le gestionnaire de voisinage organise les données pour les transmettre aux unités de traitement UT via des multiplexeurs 141. Une communication supplémentaire 142 entre l'unité d'entrée/sortie UES et l'unité de contrôle UC permet le transfert de la métadonnée, comme représenté sur la figure 15.With this metadata management, the calculation of complex or fixed-point numbers is greatly facilitated. The processing device according to the invention can thus advantageously be used for processing in the Fourier (frequency) domain, for example. The processing device according to the invention can also be adapted to accelerate the emulation of floating-point numbers using fixed-point operators. In a multi-SIMD architecture, metadata can be used to determine instructions to transmit to processors. Indeed, the additional information (metadata) can indicate the specific treatment to be performed on the data with which they are associated. It is sufficient to extract the necessary information from the data word as soon as it enters the calculation tile TC, illustrated by the example of FIG. and transmit it to the UC control unit that manages the UT processing units in multi-SIMD mode. In this case, the metadata can be extracted when the neighborhood manager organizes the data for transmission to the processing units UT via multiplexers 141. An additional communication 142 between the input / output unit UES and the communication unit. UC control allows the transfer of the metadata, as shown in Figure 15.
Afin de permettre le transfert des métadonnées, les moyens 4 d'interconnexion peuvent être adaptés en termes de capacité. En particulier, la taille des bus 41 , 42 de données peut être augmentée en fonction de la taille des métadonnées. De plus, le dispositif 1 selon l'invention peut comporter un opérateur d'insertion permettant de concaténer chaque donnée du flux avec une métadonnée. La figure 15 représente un tel opérateur d'insertion 150. L'opérateur d'insertion 150 comprend un bus d'entrée 151 relié à une entrée d'un bloc d'insertion 152 dont la sortie est reliée à un bus de sortie 153. L'opérateur d'insertion 150 peut également comprendre une mémoire 154 permettant de stocker la métadonnée. La mémoire 154 est en liaison avec le bloc d'insertion 152 pour permettre le transfert de la métadonnée. La taille de cette donnée doit être inférieure ou égale à la différence entre la taille maximale des données pouvant être transférées par les moyens 4 d'interconnexion et la taille des données du flux. La taille du bus d'entrée 151 doit être adaptée à la taille des données du flux alors que la taille du bus de sortie 153 doit être adaptée à la taille des données du flux concaténées avec la métadonnée. L'opérateur d'insertion 150 peut être inséré sur l'un des bus 41 , 42 de données, par exemple entre le capteur vidéo 2 et les tuiles de calcul TC ou entre deux tuiles de calcul TC. Dans un mode de réalisation, l'opérateur d'insertion 150 est réalisé par une tuile de calcul TC. La tuile de calcul TC comprend alors une unité de mémorisation UM contenant la donnée complémentaire et une unité de traitement UT permettant de concaténer les données du flux avec la donnée complémentaire. La donnée complémentaire est par exemple stockée dans un registre de données de l'unité de mémorisation UM. Ce mode de réalisation présente l'avantage d'éviter l'insertion d'un composant supplémentaire dans la chaîne de traitement du flux de données. Il est rendu possible grâce à la modularité du dispositif 1 selon l'invention. In order to allow the transfer of the metadata, the interconnection means 4 can be adapted in terms of capacity. In particular, the size of the data buses 41, 42 can be increased depending on the size of the metadata. In addition, the device 1 according to the invention may include an insertion operator for concatenating each data flow with a metadata. FIG. 15 shows such an insertion operator 150. The insertion operator 150 comprises an input bus 151 connected to an input of an insertion block 152 whose output is connected to an output bus 153. The insertion operator 150 may also include a memory 154 for storing the metadata. The memory 154 is linked to the insertion block 152 to allow the transfer of the metadata. The size of this data must be less than or equal to the difference between the maximum size of the data that can be transferred by the interconnection means 4 and the size of the data of the stream. The size of the input bus 151 must be adapted to the size of the data of the stream while the size of the output bus 153 must be adapted to the size of the stream data concatenated with the metadata. The insertion operator 150 may be inserted on one of the data buses 41, 42, for example between the video sensor 2 and the calculation tiles TC or between two calculation tiles TC. In one embodiment, the insertion operator 150 is made by a calculation tile TC. The calculation tile TC then comprises a storage unit UM containing the complementary data and a processing unit UT making it possible to concatenate the data of the stream with the complementary data item. The additional data is for example stored in a data register of the storage unit UM. This embodiment has the advantage of avoiding the insertion of a component additional in the processing chain of the data flow. It is made possible thanks to the modularity of the device 1 according to the invention.
ANNEXEANNEX
Jeu d'instructions (sur 48 bits : 24 bits par voie)Instruction Set (on 48 bits: 24 bits per channel)
Composition du mot d'instruction sur 24 bits : 0..2 - > 3 bits Condition ;Composition of the 24-bit instruction word: 0..2 -> 3 bits Condition;
3..4 -> 2 bits Mode d'accès à la donnée 5..7 -> 3 bits Identifiant de l'opération 8..11 -> 4 bits Registre Destination3..4 -> 2 bits Data access mode 5..7 -> 3 bits Operation identifier 8..11 -> 4 bits Register Destination
12..15 -> 4 bits Registre Source 16..23 -> 8 bits de constante12..15 -> 4 bits Source register 16..23 -> 8 bits of constant
Préfix des instructions : F_ : Exécution si flag= 1 NF_ : Exécution si flag=0 fC : Mise a jour du flag sur Carry fZ : Mise a jour du flag sur Résultat à ZERO fS : Mise à jour du flag sur Signe (1 si >0, 0 si <0)Prefix of the instructions: F_: Execution if flag = 1 NF_: Execution if flag = 0 fC: Update of the flag on Carry fZ: Update of the flag on Result at ZERO fS: Update of the flag on Sign (1 if > 0, 0 if <0)
Postfix des instructions : Permet de choisir la source r (D, A, B) : R[D] registre destination; R[A] registre source, R[B] registre source c (D, A, C) : R[D] registre destination; R[A] registre source, C Constante v (D, A, V) : R[D] registre destination; R[A] registre source, Voisin[V]Postfix instructions: Allows you to choose the source r (D, A, B): R [D] destination register; R [A] source register, R [B] source register c (D, A, C): R [D] destination register; R [A] source register, C Constant v (D, A, V): R [D] destination register; R [A] source register, Neighbor [V]
Si les 8 bits de l'argument B sont formés de la manière suivante : "10...0<V>" au lieu de "0..<V>" " on prendra comme voisin la valeur stockée par le registre V soit VoIsIn[R[V]] m (D, A ,M) : R[D] registre destination; R[A] registre source, M adresse Mémoire de la mémoire localeIf the 8 bits of the argument B are formed in the following way: "10 ... 0 <V>" instead of "0 .. <V>" "we will take as neighbor the value stored by the register V is VoIsIn [R [V]] m (D, A, M): R [D] destination register; R [A] source register, M address memory of local memory
Utilisation : Le VLIW Permet de travailler sur deux voies :Use: The VLIW Allows to work on two ways:
OPi(Dm ...) /OPj(Dn)OPi (Dm ...) / OPj (Dn)
II faut toutefois que j != i et que m != nHowever, j! = I and that m! = N
Sauf dans le cas des instructions conditionnelles complémentaires :Except in the case of additional conditional instructions:
F OP ; Aucune opération si FLAG = 1 NF_OP ; Aucune opération si FLAG = 0F OP; No operation if FLAG = 1 NF_OP; No operation if FLAG = 0
On peut donc écrire sur la même ligne FjOP(Dm...) /NFjOP(Dn...)We can write on the same line FjOP (Dm ...) / NFjOP (Dn ...)
Puisque quelle que soit la valeur du Flag, une seule sera effectivement exécutée Liste des opérations - NOPSince whatever the Flag value is, only one will actually be executed List of Operations - NOP
PREFIX : F_ NF_PREFIX: F_NF_
NOPNOP
F_NOP NF_NOPF_NOP NF_NOP
- LD- LD
PREFIX : F_ NF_ fZ_ fC_ fS_PREFIX: F_ NF_ fZ_ fC_ fS_
LDr(D, A) : R[D] = R[A]LDr (D, A): R [D] = R [A]
LDc(D, C) : R[D] = C ; C constante signée LDv(D, V) : R[D] = VoIs[V]LDc (D, C): R [D] = C; C signed constant LDv (D, V): R [D] = VoIs [V]
LDv(D, V) ; R[D] = VoIs[R[V]]LDv (D, V); R [D] = VoIs [R [V]]
LDm(D, M) ; R[D] = SP[M]LDm (D, M); R [D] = SP [M]
- ADD; SUB; MUL PREFIX : F NF fZ fC fS Deux additionneurs signés sont disponibles, on a donc ADDO et ADDI utilisables simultanément sans restriction sur la voie.- ADD; SUB; MUL PREFIX: F NF fZ fC fS Two signed adders are available, so ADDO and ADDI can be used simultaneously without restriction on the channel.
PREFIX : F_ NF_ fZ_ fC_ fS_ ADDOr(D, A , B) : R[D] = R[A] + R[B]PREFIX: F_ NF_ fZ_ fC_ fS_ ADDOr (D, A, B): R [D] = R [A] + R [B]
ADDOc(D, A, C) : R[D] = R[A] + C ; C constante signée ADDOv(D, A, V) : R[D] = R[A] + VoIs[V] ADDOv(D, A, -V) ; R[D] = R[A] + VoIs[R[V]] ADDOm(D, A, M) ; R[D] = R[A] + SP[M]ADDOc (D, A, C): R [D] = R [A] + C; C constant signed ADDOv (D, A, V): R [D] = R [A] + VoIs [V] ADDOv (D, A, -V); R [D] = R [A] + VoIs [R [V]] ADDOm (D, A, M); R [D] = R [A] + SP [M]
IDEM pour les ADDO, SUBO SUB1, et MUL; toutes ces opérations sont signéesIDEM for ADDO, SUBO SUB1, and MUL; all these operations are signed
- SHIFT- SHIFT
PREFIX : F_ NF_ fZ_ fC_ fS_PREFIX: F_ NF_ fZ_ fC_ fS_
Un opérateur de décalage signé permet de décaler les valeurs à droite ou a gauche selon le signe du décalageA signed offset operator allows you to shift values to the right or to the left according to the offset sign
Un décalage de 0 équivaut à une affectation SHIFTc(D1A1C) : si (C > 0)An offset of 0 equals a SHIFTc assignment (D 1 A 1 C): if (C> 0)
R[D] = R[A] « C si (C < 0)R [D] = R [A] C if (C <0)
R[D] = R[A] » C - INV INVr(D,A) : R[D] = -R[A]R [D] = R [A] »C - INV INV (D, A): R [D] = -R [A]
INVc(D, C) : R[D] = -C INVv(D, V) : R[D] = -VoIs[V] INVv(D,-V) : R[D] = -VoIs[R[V]] INVm(D,M) : R[D] = -SP[M]INVc (D, C): R [D] = -C INVv (D, V): R [D] = -VoIs [V] INVv (D, -V): R [D] = -VoIs [R [V] ]] INVm (D, M): R [D] = -SP [M]
Exemple de code programme Ce code réalise l'opération suivante :Program code example This code performs the following operation:
Pour un voisinage 2x2, met R1 à la moyenne des pixels du voisinage et met RO à 255 si la valeur de la moyenne est > 128 ; incrémente R2 si le pixel est à 255 (pour avoir le compte des pixels > 128 à la fin du traitement)For a 2x2 neighborhood, set R1 to the average of neighborhood pixels and set RO to 255 if the average value is> 128; increments R2 if the pixel is 255 (to count the pixels> 128 at the end of processing)
1 #include "macros ;.h"1 #include "macros; .h"
2 . initcode2. initcode
3 LDc (RO, 0) ; / NOP3 LDc (RO, O); / NOP
4 LDc (Rl, 0) ; / NOPLDc (R1, O); / NOP
5 LDc (R2, 0) ; / NOPLDc (R2, O); / NOP
6 LDc (R3, 0) ; / NOPLDc (R3, O); / NOP
7 LDc (R4, 0) ; / NOPLDc (R4, O); / NOP
8 LDc (R5, 0) ; / NOPLDc (R5, O); / NOP
9 NOP / NOP9 NOP / NOP
10 .pixelcodeO10 .pixelcodeO
11 LDv(Rl, VO) / NOP11 LDv (Rl, VO) / NOP
12 LDv (R2, Vl) / ADDOv (Rl, Rl, VO)12 LDv (R2, Vl) / ADDOv (R1, R1, VO)
13 ADDOv (R2,R2 ,V2) / ADDIv(Rl, Rl, V3)ADDOv (R2, R2, V2) / ADDIv (R1, R1, V3)
14 ADDO (Rl, Rl, R2) / NOP14 ADDO (R1, R1, R2) / NOP
15 SHIFTc (Rl, Rl, -2) / NOP15 SHIFTc (R1, R1, -2) / NOP
16 fS_SUBc(R7, Rl, 128) / NOP16 fS_SUBc (R7, R1, 128) / NOP
11 F_LDc (RO, 0) / NF_LDc (RO, 255) ; dans ce cas exceptionnel on peut appeler 2x LD car 1 'un est exécuté et pas 1 'autre 18 NF_ADD0v (R2,R2, 1) / NOP 19 NOP /NOP 20 .pixelcodel11 F_LDc (RO, 0) / NF_LDc (RO, 255); in this exceptional case we can call 2x LD because one is executed and not the other 18 NF_ADD0v (R2, R2, 1) / NOP 19 NOP / NOP 20 .pixelcodel
21 . pixelcode221. pixelcode2
22 .pixelcode3 On pourrait écrire en profitant au maximum des 2 voies du VLIW22 .pixelcode3 We could write by taking advantage of the 2 channels of the VLIW
10 .pixelcodeO10 .pixelcodeO
11 LDv (Rl, VO) / NF_ADD0v(R2,R2, 1)11 LDv (R1, VO) / NF_ADD0v (R2, R2, 1)
12 LDv (R2, Vl) / ADDOv (Rl , Rl , VO)12 LDv (R2, Vl) / ADDOv (R1, R1, VO)
13 ADDOv (R2,R2,V2) / ADDIv (Rl, Rl, V3) 14 ADDO (Rl, Rl, R2) / NOP13 ADDOv (R2, R2, V2) / ADDIv (R1, R1, V3) 14 ADDO (R1, R1, R2) / NOP
15 SHIFTc (Rl, Rl, -2) / NOP15 SHIFTc (R1, R1, -2) / NOP
16 fS_SUBc (Rl1Rl, 128) / NOP16 fS_SUBc (R1 1 R1, 128) / NOP
17 F_LDc (RO, 0) / NF_LDc (RO, 255) 17 F_LDc (RO, 0) / NF_LDc (RO, 255)

Claims

REVENDICATIONS
1. Dispositif de traitement d'un flux de données provenant d'un dispositif générant des matrices de NI lignes par Nc colonnes de données, caractérisé en ce qu'il comprend K tuiles de calcul (TC) et des moyens (4) d'interconnexion pour transférer le flux de données entre les tuiles de calcul (TC), au moins une tuile de calcul (TC) comportant :1. A device for processing a data stream coming from a device generating matrices of NI lines by Nc columns of data, characterized in that it comprises K calculation tiles (TC) and means (4) of interconnection for transferring the data stream between the calculation tiles (TC), at least one calculation tile (TC) comprising:
- une ou plusieurs unités de contrôle (UC) permettant de fournir des instructions,- one or more control units (CU) to provide instructions,
- n unités de traitement (UT), chaque unité de traitement (UT) réalisant les instructions reçues d'une unité de contrôle (UC) sur un voisinage de Vl lignes par Vc colonnes de données,n processing units (UT), each processing unit (UT) carrying instructions received from a control unit (UC) on a neighborhood of Vl lines by Vc columns of data,
- une unité de mémorisation (UM) permettant de mettre les données du flux sous forme de voisinages de Vl lignes par (n+Vc-1 ) colonnes de données, l'unité de mémorisation (UM) comprenant un bloc (31 ) de mémoires de mise en forme de dimension VIxNc et un bloc (34) de registres de voisinage de dimension Vlx(n+Vc-1 ),a storage unit (UM) for putting the data of the stream in the form of neighborhoods of Vl lines by (n + Vc-1) columns of data, the storage unit (UM) comprising a block (31) of memories VIxNc dimensioning and a block (34) of Vlx neighborhood register (n + Vc-1),
- une unité d'entrée/sortie (UES) permettant d'acheminer le flux de données entre les moyens (4) d'interconnexion et l'unité de mémorisation (UM) d'une part, et entre les unités de traitement (UT) et les moyens (4) d'interconnexion d'autre part.an input / output unit (UES) for routing the data stream between the interconnection means (4) and the storage unit (UM) on the one hand, and between the processing units (UT); ) and the interconnection means (4) on the other hand.
2. Dispositif selon la revendication 1 , caractérisé en ce que le bloc (34) de registres de voisinage comprend, en outre, une colonne (35) de Vl registres de données.2. Device according to claim 1, characterized in that the block (34) of neighborhood registers further comprises a column (35) of Vl data registers.
3. Dispositif selon l'une des revendications 1 et 2, caractérisé en ce qu'il comporte un compteur CPTC et un compteur CPTL, le compteur CPTC s'incrémentant après chaque donnée entrante et étant remis à zéro à chaque fois qu'il atteint la valeur Nc, le compteur CPTL s'incrémentant à chaque fois que le compteur CPTC atteint la valeur Nc et étant remis à zéro à chaque fois qu'il atteint la valeur Vl, la donnée entrante étant stockée dans une cellule (33) du bloc (31 ) de mémoires de mise en forme dont le numéro de ligne correspond à la valeur CPTL et dont le numéro de colonne correspond à la valeur CPTC. 3. Device according to one of claims 1 and 2, characterized in that it comprises a CPTC counter and a CPTL counter, the counter CPTC incrementing after each incoming data and being reset each time it reaches the value Nc, the counter CPTL incrementing each time the counter CPTC reaches the value Nc and is reset to zero each time it reaches the value Vl, the incoming data being stored in a cell (33) of the block (31) formatting memories whose line number corresponds to the value CPTL and whose column number corresponds to the value CPTC.
4. Dispositif selon les revendications 2 et 3, caractérisé en ce que la colonne de données du bloc (31 ) de mémoires de mise en forme repérée par la valeur CPTC est recopiée, à chaque coup d'horloge du flux de données, dans la colonne (35) de Vl registres de données puis décalée dans une première colonne (341 ) du bloc (34) de registres de voisinage.4. Device according to claims 2 and 3, characterized in that the data column of the block (31) formatting memories marked by the CPTC value is copied, at each clock stroke of the data stream, in the column (35) of V1 data registers and then shifted to a first column (341) of the neighborhood register block (34).
5. Dispositif selon la revendication 4, caractérisé en ce que chaque donnée du bloc (31 ) de mémoires de mise en forme située à la colonne repérée par la valeur CPTC et à la ligne repérée par NoLigne est recopiée dans la colonne (35) de Vl registres de données à la ligne repérée par (CPTL+NoLigne+1 ) modulo Vl, où NoLigne prend toutes les valeurs entières positives comprises entre 1 et Vl.5. Device according to claim 4, characterized in that each datum of the block (31) shaping memories located in the column marked by the CPTC value and the line marked by NoLigne is copied in column (35) of Vl data registers at the line marked by (CPTL + NoLine + 1) modulo Vl, where NoLine takes all positive integer values between 1 and Vl.
6. Dispositif selon l'une quelconque des revendications précédentes, caractérisé en ce que des unités de contrôle (UC) comportent chacune une mémoire dans laquelle est stocké un programme, le programme pouvant être découpé en segments de code, chaque segment de code comportant des instructions différentes pour permettre un traitement différent des données du flux en fonction de leur nature.6. Device according to any one of the preceding claims, characterized in that control units (UC) each comprise a memory in which is stored a program, the program can be divided into code segments, each code segment comprising different instructions to allow different processing of data flow according to their nature.
7. Dispositif selon la revendication 6, caractérisé en ce que le flux de données provient d'un capteur vidéo (2) délivrant des images de Nc colonnes par NI lignes de pixels, chaque image comportant une alternance de deux types de lignes, chaque type de ligne comportant deux types de pixels, au moins une tuile de calcul (TC) comportant deux unités de contrôle (UC), le programme de chacune de ces unités de contrôle (UC) étant découpé en quatre segments de code, chaque segment de code correspondant aux différents types de pixels à prendre en compte.7. Device according to claim 6, characterized in that the data stream comes from a video sensor (2) delivering images of Nc columns by NI rows of pixels, each image comprising an alternation of two types of lines, each type. line having two types of pixels, at least one calculation tile (TC) comprising two control units (UC), the program of each of these control units (UC) being divided into four code segments, each code segment corresponding to the different types of pixels to take into account.
8. Dispositif selon la revendication 7, caractérisé en ce que le type de pixel dépend de sa couleur.8. Device according to claim 7, characterized in that the pixel type depends on its color.
9. Dispositif selon l'une quelconque des revendications précédentes, caractérisé en ce qu'au moins une tuile de calcul (TC) comporte : - une unité de mémorisation (UM) permettant de stocker des données du flux,9. Device according to any one of the preceding claims, characterized in that at least one calculation tile (TC) comprises: a storage unit (UM) for storing stream data,
- une unité de contrôle (UC) permettant de fournir des instructions pour réaliser un traitement sur les données stockées, - plusieurs unités de traitement (UT), chaque unité de traitementa control unit (UC) for providing instructions for performing processing on the stored data, a plurality of processing units (UT), each processing unit;
(UT) réalisant les instructions reçues de l'unité de contrôle (UC) sur une partie des données stockées,(UT) executing the instructions received from the control unit (UC) on part of the stored data,
- une unité d'entrée/sortie (UES) permettant d'acheminer le flux de données entre les moyens (4) d'interconnexion et l'unité de mémorisation (UM) d'une part, et entre les unités de traitement (UT) et les moyens (4) d'interconnexion d'autre part, l'unité de mémorisation (UM) comprenant un nombre de registres de données égal au nombre d'unités de traitement (UT).an input / output unit (UES) for routing the data stream between the interconnection means (4) and the storage unit (UM) on the one hand, and between the processing units (UT); ) and the interconnection means (4) on the other hand, the storage unit (UM) comprising a number of data registers equal to the number of processing units (UT).
10. Dispositif selon l'une quelconque des revendications précédentes, caractérisé en ce que les moyens (4) d'interconnexion comprennent un nombre Nb_bus de bus de données (41 , 42) défini par la relation : Nb_bus = Kx(Fpiχθ|/Farchi)+1 , où Fpiχθι est une fréquence du flux de données et Farchi est une fréquence de fonctionnement des unités de traitement (UT), la fréquence Farchi étant égale à pxFpiXθι avec p un entier positif.10. Device according to any one of the preceding claims, characterized in that the interconnection means (4) comprise a number Nb_bus data bus (41, 42) defined by the relation: Nb_bus = Kx (Fpiχ θ | / F a rchi) +1, where Fpiχ θ ι is a frequency of the data flow and F arch i is an operating frequency of the processing units (UT), the frequency F arch i being equal to pxF piXθ ι with p an integer positive.
1 1 . Dispositif selon la revendication 10, caractérisé en ce que des unités d'entrée/sortie (UES) comportent chacune Nb_bus registres de taille log2(Mux_t) bits pour gérer les autorisations d'accès en écriture, un registre de taille log2(Nb_bus) bits et un registre de taille log2(Mux_t) bits pour la gestion des autorisations d'accès en lecture, Mux_t étant défini par la relation MuX_t = Farchi/Fpiχθ|.1 1. Device according to Claim 10, characterized in that input / output units (UES) each comprise Nb_bus registers of log2 (Mux_t) bits size to manage the write access permissions, a register of size log2 (Nb_bus) bits and a register of size log2 (Mux_t) bits for the management of read access authorizations, Mux_t being defined by the relation MuX_t = Farchi / Fpiχ θ |.
12. Dispositif selon la revendication 1 1 , caractérisé en ce que les tuiles de calcul (TC) sont adressées par un multiplexage temporel dont le rapport est défini par la relation : MUXj = Farchl/Fpixβi. 12. Device according to claim 1 1, characterized in that the calculation tiles (TC) are addressed by a time division multiplexing whose ratio is defined by the relationship: MUXj = Farchl / Fpixβi.
13. Dispositif selon l'une quelconque des revendications précédentes, caractérisé en ce que des tuiles de calcul (TC) comprennent chacune un bloc série (BS) comportant un nombre de registres de données égal au nombre d'unités de traitement (UT) de la tuile de calcul (TC) considérée, chaque bloc série (BS) d'une tuile de calcul (TC) recevant en entrée des données provenant des unités de traitement (UT) de la tuile de calcul (TC) considérée et étant connecté en sortie à l'unité d'entrée/sortie (UES) de ladite tuile de calcul (TC).13. Device according to any one of the preceding claims, characterized in that calculation tiles (TC) each comprise a series block (BS) having a number of data registers equal to the number of processing units (UT) of the calculation tile (TC) considered, each serial block (BS) of a calculation tile (TC) receiving as input data from the processing units (UT) of the calculation tile (TC) considered and being connected in output to the input / output unit (UES) of said calculation tile (TC).
14. Dispositif selon l'une quelconque des revendications précédentes, caractérisé en ce que des unités de traitement (UT) comprennent chacune un processeur comportant deux décodeurs d'instructions (21 , 22), un premier ensemble de multiplexeurs (23), des opérateurs de calcul (24), un deuxième ensemble de multiplexeurs (25), des registres de données (26) et une mémoire locale (27), les décodeurs d'instructions (21 , 22) recevant des instructions en provenance d'une unité de contrôle (UC), le premier ensemble de multiplexeurs (23) dirigeant les données à traiter sur un ou deux opérateurs de calcul (24) de l'ensemble des opérateurs disponibles, le deuxième ensemble de multiplexeurs (25) dirigeant les données traitées vers les registres de données (26) et le processeur pouvant exécuter jusqu'à deux instructions par cycle d'horloge du processeur.14. Device according to any one of the preceding claims, characterized in that processing units (UT) each comprise a processor comprising two instruction decoders (21, 22), a first set of multiplexers (23), operators a second set of multiplexers (25), data registers (26) and a local memory (27), the instruction decoders (21, 22) receiving instructions from a control (UC), the first set of multiplexers (23) directing the data to be processed on one or two computing operators (24) of all the available operators, the second set of multiplexers (25) directing the processed data to the data registers (26) and the processor being able to execute up to two instructions per processor clock cycle.
15. Dispositif selon l'une quelconque des revendications précédentes, caractérisé en ce que des données du flux sont concaténées avec une donnée complémentaire, des tuiles de calcul (TC) étant aptes à dissocier les données du flux de la donnée complémentaire afin que les unités de traitement (UT) desdites tuiles de calcul (TC) réalisent des instructions sur les données du flux en fonction de la donnée complémentaire.15. Device according to any one of the preceding claims, characterized in that stream data are concatenated with complementary data, calculation tiles (TC) being able to dissociate the data from the flow of complementary data so that the units processing (UT) said calculation tiles (TC) perform instructions on the flow data according to the complementary data.
16. Dispositif selon la revendication 15, caractérisé en ce que la concaténation de données du flux avec une donnée complémentaire est réalisée par un opérateur d'insertion (120) inséré sur les moyens (4) d'interconnexion. Device according to claim 15, characterized in that the concatenation of data of the flow with a complementary data is performed by an insertion operator (120) inserted on the interconnection means (4).
EP09779672A 2008-09-30 2009-06-08 Device for the parallel processing of a data stream Withdrawn EP2332067A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR0805369A FR2936626B1 (en) 2008-09-30 2008-09-30 DEVICE FOR PARALLEL PROCESSING OF A DATA STREAM
PCT/EP2009/057033 WO2010037570A1 (en) 2008-09-30 2009-06-08 Device for the parallel processing of a data stream

Publications (1)

Publication Number Publication Date
EP2332067A1 true EP2332067A1 (en) 2011-06-15

Family

ID=40350007

Family Applications (1)

Application Number Title Priority Date Filing Date
EP09779672A Withdrawn EP2332067A1 (en) 2008-09-30 2009-06-08 Device for the parallel processing of a data stream

Country Status (5)

Country Link
US (1) US8836708B2 (en)
EP (1) EP2332067A1 (en)
JP (1) JP2012504264A (en)
FR (1) FR2936626B1 (en)
WO (1) WO2010037570A1 (en)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW201322022A (en) 2011-11-24 2013-06-01 Alibaba Group Holding Ltd Distributed data stream processing method
FR2988190A1 (en) 2012-03-13 2013-09-20 Commissariat Energie Atomique PROCESS FOR ACQUIRING AND PROCESSING SIGNALS
US9514094B2 (en) * 2012-07-10 2016-12-06 Maxeler Technologies Ltd Processing data sets using dedicated logic units to prevent data collision in a pipelined stream processor
US9905200B2 (en) 2015-10-19 2018-02-27 Yahoo Holdings, Inc. Computerized system and method for automatically creating and applying a filter to alter the display of rendered media
US10942673B2 (en) 2016-03-31 2021-03-09 Hewlett Packard Enterprise Development Lp Data processing using resistive memory arrays
US11114138B2 (en) 2017-09-15 2021-09-07 Groq, Inc. Data structures with multiple read ports
US11868804B1 (en) 2019-11-18 2024-01-09 Groq, Inc. Processor instruction dispatch configuration
US11360934B1 (en) 2017-09-15 2022-06-14 Groq, Inc. Tensor streaming processor architecture
US11243880B1 (en) 2017-09-15 2022-02-08 Groq, Inc. Processor architecture
US11170307B1 (en) 2017-09-21 2021-11-09 Groq, Inc. Predictive model compiler for generating a statically scheduled binary with known resource constraints
US20190294443A1 (en) * 2018-03-20 2019-09-26 Qualcomm Incorporated Providing early pipeline optimization of conditional instructions in processor-based systems
CN111971662A (en) 2018-04-30 2020-11-20 慧与发展有限责任合伙企业 Resistor and digital processing core
US10652162B2 (en) * 2018-06-30 2020-05-12 Intel Corporation Scalable packet processing
US11455370B2 (en) 2018-11-19 2022-09-27 Groq, Inc. Flattened input stream generation for convolution with expanded kernel
CN109542985B (en) * 2018-11-27 2023-09-19 南京擎天科技有限公司 Universal stream data analysis model and construction method thereof

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5784631A (en) * 1992-06-30 1998-07-21 Discovision Associates Huffman decoder
US6041400A (en) * 1998-10-26 2000-03-21 Sony Corporation Distributed extensible processing architecture for digital signal processing applications
US20070242074A1 (en) * 1999-04-09 2007-10-18 Dave Stuttard Parallel data processing apparatus
US6961084B1 (en) * 1999-10-07 2005-11-01 Ess Technology, Inc. Programmable image transform processor
US7196708B2 (en) * 2004-03-31 2007-03-27 Sony Corporation Parallel vector processing
WO2007049282A2 (en) * 2005-10-26 2007-05-03 Cortica Ltd. A computing device, a system and a method for parallel processing of data streams
US7788468B1 (en) * 2005-12-15 2010-08-31 Nvidia Corporation Synchronization of threads in a cooperative thread array
US7912889B1 (en) * 2006-06-16 2011-03-22 Nvidia Corporation Mapping the threads of a CTA to the elements of a tile for efficient matrix multiplication
US8250555B1 (en) * 2007-02-07 2012-08-21 Tilera Corporation Compiling code for parallel processing architectures based on control flow

Non-Patent Citations (1)

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

Also Published As

Publication number Publication date
WO2010037570A1 (en) 2010-04-08
US20110273459A1 (en) 2011-11-10
JP2012504264A (en) 2012-02-16
US8836708B2 (en) 2014-09-16
FR2936626B1 (en) 2011-03-25
FR2936626A1 (en) 2010-04-02

Similar Documents

Publication Publication Date Title
EP2332067A1 (en) Device for the parallel processing of a data stream
EP3660849B1 (en) Memory circuit suitable for performing computing operations
US7609297B2 (en) Configurable hardware based digital imaging apparatus
EP0154340B1 (en) Inverse discrete cosine transform processor
EP0558125B1 (en) Neural processor with distributed synaptic cells
FR2860313A1 (en) COMPONENT WITH RECONFIGURABLE ARCHITECTURE DYNAMICALLY
EP1964053A2 (en) Method for processing an object on a platform having one or more processors and memories, and platform using same
FR3091375A1 (en) LOADING-STORAGE INSTRUCTION
FR3091389A1 (en) REGISTER BENCHES IN A MULTIPLE PERFORMANCE WIRE PROCESSOR
WO2015090885A1 (en) Signal processing module, especially for a neural network and a neuronal circuit
EP4020475A1 (en) Memory module suitable for performing computing functions
EP1803061B1 (en) Reconfigurable, modular and hierarchical parallel processor system
FR2724741A1 (en) ELECTRONIC CIRCUIT FOR MODULAR CALCULATION IN A FINISHED BODY
FR2865290A1 (en) METHOD FOR MANAGING DATA IN A MATRIX PROCESSOR AND MATRIX PROCESSOR EMPLOYING THE METHOD
EP3394799A1 (en) Electronic circuit, particularly for the implementation of neural networks with multiple levels of precision
EP2553655B1 (en) Data stream processing architecture enabling extension of neighborhood mask
EP0674444B1 (en) Filter for matrix of pixels
EP2208143B1 (en) Structure and method for saving and retrieving data
BE1007202A6 (en) An apparatus for communication between computers.
FR2556902A1 (en) Method and device for specified rank filtering of a digital signal and application to separable two-dimensional median filtering.
WO2009068419A1 (en) Circuit comprising a microprogrammed machine for processing the inputs or the outputs of a processor so as to enable them to enter or leave the circuit according to any communication protocol
FR2793628A1 (en) TRANSMISSION SYSTEM, RECEIVER AND INTERCONNECTION NETWORK
EP4226256A1 (en) Method and device for processing data to be supplied as input for a first shift register of a systolic neural electronic circuit
FR2754924A1 (en) INPUT / OUTPUT BUFFER MEMORY CIRCUIT CAPABLE OF MINIMIZING THE DATA TRANSFER REQUIRED IN INPUT AND OUTPUT BUFFER OPERATIONS
FR3131428A1 (en) Direct data transfer system

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: 20110328

AK Designated contracting states

Kind code of ref document: A1

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

AX Request for extension of the european patent

Extension state: AL BA RS

DAX Request for extension of the european patent (deleted)
17Q First examination report despatched

Effective date: 20160105

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

Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN

18D Application deemed to be withdrawn

Effective date: 20160518