WO2017207889A1 - Device and method for parallel data processing - Google Patents

Device and method for parallel data processing Download PDF

Info

Publication number
WO2017207889A1
WO2017207889A1 PCT/FR2017/051210 FR2017051210W WO2017207889A1 WO 2017207889 A1 WO2017207889 A1 WO 2017207889A1 FR 2017051210 W FR2017051210 W FR 2017051210W WO 2017207889 A1 WO2017207889 A1 WO 2017207889A1
Authority
WO
WIPO (PCT)
Prior art keywords
unit
binary words
parallel
words
circuit
Prior art date
Application number
PCT/FR2017/051210
Other languages
French (fr)
Inventor
Alessandro MARONGIU
Gaël PAUL
Daniele MODICA
Damien PRETET
Original Assignee
Plda Group
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 Plda Group filed Critical Plda Group
Publication of WO2017207889A1 publication Critical patent/WO2017207889A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • G06F30/347Physical level, e.g. placement or routing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4009Coupling between buses with data restructuring
    • G06F13/4018Coupling between buses with data restructuring with data-width conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • G06F30/343Logical level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled

Definitions

  • the present invention relates to a parallel data processing method, a parallel data processing device, and a method for producing a parallel data processing device.
  • parallellism or “parallelized data processing” is a technique consisting in using processor architectures capable of processing data simultaneously, under the control of programs specifically designed to provide such treatment. This technique aims to achieve the largest number of operations in the smallest possible time.
  • FPGAs Field Programmable Gate array integrated circuits
  • a virgin FPGA circuit is transformed into an operational integrated circuit by configuring the network of logic gates that it comprises.
  • This configuration is first defined in a hardware description language, called HDL ("Hardware Description Language"), or its variants (VHDL, Verilog 7), to describe the behavior and architecture of the hardware circuit.
  • HDL Hardware Description Language
  • VHDL Verilog
  • the circuit description in hardware description language is then compiled to obtain an FPGA circuit configuration.
  • each FPGA circuit manufacturer proposes so-called logical synthesis and routing placement tools which make it possible, from the HDL circuit, to obtain an FPGA configuration also called "bitstream", ready to be loaded into the configuration memory of the device.
  • FPGA to obtain an operational integrated circuit.
  • This architecture model presents a certain number of adjustable characteristics, chosen during a step of definition of the hardware constraints intervening before the HLS compilation, such as bus clock speeds, the number of data buses arranged in parallel. and the size of these buses (number of bits they carry).
  • the target architecture making it possible to implement the HDL circuit is generally not perfectly adapted to the particular needs of the function to be implemented, in particular as regards the number of parallel buses that it comprises relative to the number of data that the function can process simultaneously.
  • the number of parallel buses is generally a multiple of 2, even if the implemented function does not simultaneously process a number of data that is a multiple of 2.
  • the target architecture may have a number of data buses which, if not equal, is greater than the number of data that the function can handle simultaneously, in order to exploit its parallelism as much as possible.
  • the function capable of simultaneously processing the largest number of data that generally determines the degree of parallelism retained in the target architecture.
  • typed variables - that is to say of determined size -, such as CHAR (1 byte), INT ( 4 bytes with a 32-bit processor), and DOUBLE (8 bytes) in C or C ++, which are adapted to the number of parallelized data.
  • typed variables - such as CHAR (1 byte), INT ( 4 bytes with a 32-bit processor), and DOUBLE (8 bytes) in C or C ++, which are adapted to the number of parallelized data.
  • the variable "DOUBLE” will be used in the functional description of the circuit. This results in a kind of "contamination” of the functional description by material constraints, related to an inadequacy of the target architecture relative to the real needs of the function and the use of typed variables. This "contamination” complicates the expression of function in high-level abstraction language.
  • Embodiments of the invention provide a parallel data processing device, comprising: a first unit including parallel outputs for providing binary words in parallel, and a second unit including parallel inputs for receiving a set of binary words in parallel. parallel provided by the first unit, wherein the second unit is configured to read simultaneously, during a same reading step, all or part of the binary words of the set of binary words applied on its parallel inputs, and return a purge instruction of certain binary words of the set of binary words.
  • the device comprises a data matching unit connecting the parallel outputs of the first unit to the parallel inputs of the second unit and configured to provide the second unit with a first set of binary words provided by the first unit, and, after reading by the second unit of a part of the binary words of the first set of binary words, supplying to the second unit the word or words of the first set of binary words that have not been purged, and one or more binary words of a second set of binary words provided by the first unit.
  • the data matching unit is also configured to, when part of the second set of bit words has been purged, supply the second unit with the one or more binary words of the second set of binary words. not being purged and one or more binary words of a third set of binary words provided by the first unit.
  • the second unit is configured, when reading a part of the binary words applied to its parallel inputs, to read binary words present on inputs with a higher reading priority
  • the unit of data mapping is configured to, after purging by the second unit of a bit portion of the first set of bit words, applying to the higher priority entries of the second unit words of the first set of bit words previously applied to parallel inputs and not purged, and apply on parallel inputs with lower read priority of the second unit one or more binary words of the second set of binary words.
  • the data matching unit comprises at least two input registers arranged in parallel and each having parallel inputs connected to the outputs of the first unit, an output register having outputs connected to the inputs parallel of the second unit, a data reorganization circuit connecting outputs of the input registers to parallel inputs of the output register, and a control circuit configured to: load in the input registers of the provided binary bit sets by the first unit, and loading in the output register, via the data reorganization circuit, binary words present in the input registers, controlling the data reorganization circuit as a function of the number of binary words having have been purged, so as to load in cells with higher priority reading of the output register the binary words pr present in the input registers and not having been purged, and load in lower priority cells of the output register of the binary words present in the input registers and not yet presented to the second unit .
  • control circuit is configured to load in one of the input registers a new set of binary words provided by the first unit at least when all the binary words of the set of binary words present in the entry register have been purged.
  • the second unit is configured to determine the number of binary words that it reads during the same reading step as a function of the previously read binary words or as a function of an external setpoint.
  • the first unit is a processor, a serial / parallel communication interface circuit, a matching circuit of a number of buses arranged in parallel, a clock frequency modification circuit, or a combination of these elements.
  • Embodiments also relate to a programmable gate array integrated circuit, comprising a device as defined above.
  • Embodiments also relating to a data processing method by means of a parallel data processing device comprising a first unit comprising parallel outputs for providing binary words in parallel, and a second unit comprising parallel inputs for receiving a bit.
  • a set of parallel binary words provided by the first unit the method comprising the steps of: by means of the second unit, reading simultaneously, during a reading step, all or part of the binary words of the set of binary words applied on its parallel inputs, and returning, after a reading step, a purge instruction of certain binary words of the set of binary words, and after reading by the second unit of all or part of the binary words of the first set of binary words, supplying to the second unit the word or words of the first set of binary words that have not been purged s, and one or more binary words of a second set of binary words provided by the first unit.
  • the method comprises the step of, when a part of the second set of binary words has been purged, supplying to the second unit the one or more binary words of the second set of binary words that have not been purged and one or more binary words of a third set of binary words provided by the first unit.
  • the method comprises the steps of: when reading all or part of the binary words applied to the parallel inputs of the second unit, reading binary words present on inputs having a higher reading priority, and after purging a portion of the binary words of the first set of binary words, applying to the higher priority read inputs of the second unit words of the first set of bit words previously applied to entries of lower read priority and not purged, and applying to parallel entries with lower read priority of the second unit one or more binary words of the second set of binary words .
  • the method comprises the step of providing, between the first and second units, a data matching unit connecting the parallel outputs of the first unit to the parallel inputs of the second unit and comprising minus two input registers arranged in parallel and each having parallel inputs connected to the outputs of the first unit, an output register having outputs connected to the parallel inputs of the second unit, and a data reordering circuit connecting outputs of the first units; input registers to parallel inputs of the output register.
  • the method comprises a step of loading into one of the input registers a new set of binary words provided by the first unit, at least when all the binary words of the set of binary words present in the input register were purged.
  • Embodiments also relate to a method for performing, in a gate array integrated circuit, a device executing a parallel data processing function requiring steps for simultaneous reading of binary words in a set of binary words carried by buses. of parallel data, the method comprising: a step of functionally describing the processing function using a high-level abstraction language and using an unspecified variable of unspecified size to designate the binary words to be read simultaneously, a step of defining material constraints to be taken into account in the realization of the device and including a choice of a degree of parallelism of the device, from the functional definition and the material constraints, a step of hardware description of the device having the degree of parallelism chosen, in use reading as a target architecture a device as described above, wherein the second unit executes the data processing function, and from the hardware description of the device, a step of configuring the programmable gate array integrated circuit, for obtain the device with the degree of parallelism chosen.
  • the method comprises the steps of: testing the device, reworking the definition of the hardware constraints of the device so as to modify its degree of parallelism, without modifying the functional description of the processing function, reworking the hardware description of the device from the reworked definition of the hardware constraints, and from the redesigned hardware description of the device, reconfigure the programmable gate network integrated circuit, to obtain the device having the degree of modified parallelism.
  • FIG. 1 represents an example of a conventional device for parallel processing of data
  • FIG. 2 represents an embodiment of a parallel data processing device according to the invention
  • FIG. 3 shows an embodiment of a mapping unit represented in block form in FIG. 2,
  • FIG. 4 is a flowchart illustrating the operation of the mapping unit
  • FIG. 5 shows a data matching sequence executed by the mapping unit
  • FIG. 6 shows steps of a method for producing an FPGA integrated circuit according to the invention
  • FIGS. 7A, 7B, 7C illustrate the method of FIG. 6 and show various embodiments of a parallel data processing device according to the invention having different degrees of parallelism
  • FIG. 8 shows another embodiment of a parallel data processing device according to the invention.
  • FIG. 9 shows another embodiment of a parallel data processing device according to the invention.
  • FIG. 1 An example of a conventional device for parallel processing of data DV1 is shown in FIG. 1.
  • the device comprises a unit Ua ensuring the supply of parallel data, a unit Ub providing the parallel processing of the data provided by the unit Ua, and buses data B 0 to Bi_i connecting the two units.
  • the unit Ua comprises outputs So to Si_i each providing a binary word wo to WH of a set of binary words W and the unit Ub comprises inputs E 0 to En each receiving a binary word wo to WH of the set of binary words, each output Si of rank i of the unit Ua being connected to an input Ei of corresponding rank of the unit Ub by a data bus Bi.
  • the unit Ua sends the unit Ub a signal RDY ("Ready") when the set W of binary words w; is available on its outputs Si, and the unit Ub returns an acknowledgment signal ACK ("Acknowledge") when these binary words have been read via its inputs Ei.
  • RDY Ready
  • ACK acknowledgment signal
  • the unit Ua Upon receipt of the ACK signal, the unit Ua provides a new set W of binary words w; (w 0 to wn) and re-transmits the RDY signal.
  • the unit Ub If the function executed by the unit Ub simultaneously processes, at each processing step, a number of binary words less than the number I of binary words w; conveyed by the data bus Bi, the unit Ub must nevertheless read all the binary words and put in memory those to be treated during a next processing step, so that the unit Ua can present on its outputs the new set of binary words W before the next processing step.
  • This processing step may in fact require binary words of the new set of binary words W in addition to the previously stored binary words.
  • FIG. 2 An embodiment of a device for parallel processing of data DV2 according to the invention is shown in FIG. 2.
  • the device comprises a unit U0 providing the supply of parallel data, an unit UI providing the parallel processing of data, a set parallel data bus Bi (B 0 to Bi_i) connecting the units U0 and Ul, and a matching unit BDG arranged between the units U0 and Ul on the data buses Bi.
  • Bi set parallel data bus
  • Bi B 0 to Bi_i
  • Each data bus Bi comprises a first section Sa connecting the unit U0 to the unit BDG and a second section Sb connecting the unit BDG to the unit Ul.
  • the unit U0 comprises outputs Si (S 0 to Si_i) connected to inputs Ei (E 0 to En) of the unit BDG by the first section Sa of the set of buses Bi
  • the unit BDG comprises outputs Si (S 0 to Si_i) connected to inputs Ei (E 0 to En) of the unit Ul by the second section B of the set of buses Bi.
  • the unit U0 sends to the BDG unit a signal RDY1 when a set W of binary words wo to wi-i is available on its outputs Si, and the unit BDG returns an acknowledgment signal ACK1 when the set of binary words was read.
  • the unit U0 On receiving the signal ACK1, the unit U0 provides a new set W of binary words w0 'to wn', and so on.
  • the unit BDG sends to the unit UI a signal RDY2 when binary words wi are available on its outputs Si, and the unit U1 returns an acknowledgment signal ACK2 when these binary words have been read.
  • the BDG unit Upon receipt of the ACK2 signal, the BDG unit provides a new set of binary words, and so on.
  • the unit U1 is configured to read from among a set of binary words provided by the BDG unit only the binary words which it immediately needs, for example to execute a step of parallel processing of data.
  • the unit U1 then supplies the BDG unit with information on the binary words that have been read. This information is provided with the signal ACK2, or forms the signal ACK2.
  • the BDG unit presents again to the unit UI the binary words that have not been read during the preceding reading step, as well as binary words of the new set of binary words provided by the unit U0.
  • the unit BDG thus supplies the unit U with "hybrid" binary word sets comprising binary words w ;, w; from different sets of bit words provided by the unit U0.
  • the unit U1 is configured to read the binary words w; provided by the BDG unit according to a hierarchy of reading of its inputs, for example by giving its first entry Eo the highest priority of reading and its last entry In the most low reading priority.
  • the unit U1 firstly reads the binary words present on entries Ei with the highest priority of reading, ie here starting with the entry E0, and returns to the BDG unit the information on the binary words having been read in the form of a number "Nj" indicating the number of data read on its input, "j" being an index representing the rank of the reading step just executed.
  • the number Nj is included in the signal ACK2 (Nj), or forms the signal ACK2 (Nj).
  • the unit BDG is configured to, after having received the number Nj, to supply to the unit Ul the I-Nj binary words wi that have not been read by the unit Ul, as well as Nj Wi-bit words of a set of words following W provided by the unit U0.
  • the BDG unit shifts the position of the I-Nj binary words wi on its outputs so that they are presented on its outputs with the highest reading priority, and presents the Nj binary words wi 'of the set of next binary words on its lower priority outputs.
  • FIG. 3 represents an embodiment of the BDG unit implementing the mapping method that has just been described, with hierarchisation of the inputs and use of the number Nj to indicate the number of higher priority entries read. during a reading step of rank "j".
  • the BDG unit comprises two input registers R1, R2, a data reorganization circuit BS, here a circular shift circuit, an output register R3 and a control circuit CCT1.
  • Each register comprises I register cells each capable of receiving a binary word wi.
  • Entries E0 to En of the register R1, each corresponding to an input of a cell of the register, are connected to the outputs So to Si_i of the unit U0.
  • inputs E0 'to En' of the register R2 are connected to the outputs So to Sn of the unit U0.
  • Outputs So to Sn of the register R1, each corresponding to an output of a cell of the register are connected to inputs E 0 to En of the circular shift circuit BS.
  • the outputs SO 'to Sn' of the register R2 are connected to inputs E0 'to En' of the circular shift circuit BS.
  • the circuit BS comprises outputs So to Sn connected to inputs E 0 to En of the register R3, which includes outputs So to Sn connected to the inputs E 0 to En of the unit U1.
  • the circuit CCT1 manages the data exchanges with the unit U0 and the unit Ul. It receives the signal RDY1 and returns the signal ACK1 after having loaded into one of the registers R1, R2 a set of binary words provided by the unit U0. It also receives the signal ACK2 (Nj) from the unit U1 and sends it the signal RDY2 when a new set of binary words has been loaded into the register R3. For this purpose, the circuit CCT1 applies an LDI data loading signal to the register RI or a data loading signal LD2 to the register R2, and alternately charges, in each register, the sets of binary words received from the unit U0. . The circuit CCT1 ensures that these registers do not include obsolete data having been read by the unit U by executing a method of updating these registers, an example of which will be described later.
  • the circuit CCT1 also applies a shift signal SHIFT to the circuit BS, with the value of this signal the last value Nj received from the unit U1, indicating the number of binary words read by it.
  • the circuit CCT1 loads the binary words provided by the outputs So to Sn of the circuit BS into the output register R3, by applying a signal LD3 thereto, and sends the signal RDY2 to the unit Ul.
  • FIG. 4 is a flowchart describing an exemplary configuration of the circuit CCT1, this being for example realized in the form of a finite state machine or "FSM"("FiniteState"). Machine ").
  • the steps BO0 to B08 relate to the management of the data exchanges with the units U0, U1 and the control of the offsets executed by means of the circuit BS.
  • the steps COO to C04 form an update loop of the registers R1, R2.
  • the steps BO0 to B05 are intended to initialize the BDG unit at the beginning of a data transfer cycle between the units U0 and U1.
  • step BOO the circuit CCT1 waits for the signal RDY1 to be received from the unit BO, then loads the register R1 and sends the signal ACK1 to the step B01.
  • step B02 the circuit CCT1 waits for the signal RDY1 to be received from the unit BO, then loads the register R2 and sends the signal ACK1 to the step B03.
  • step B05 the circuit CCT1 loads the register R3 and sends the signal RDY2 to the unit U1.
  • step B06 the circuit CCT1 waits to receive the read acknowledgment ACK2 from the unit U1, including (or formed by) the number Nj of binary words read by the unit U1.
  • step B08 the circuit CCT1 loads the register R3 with the data supplied by the circuit BS and sends the signal RDY2 to the unit U1, then returns to the step B06 to wait for a new acknowledgment of receipt of the reading. part of the unit Ul and the corresponding number Nj.
  • the register update loop includes a COO initialization step that can be executed during the initialization of the BDG unit (steps BO0 to B05), during which the circuit CCT1 sets a variable "r" to zero. and a variable " ⁇ Nj" equal to the sum of the numbers Nj received from the unit U1 since the last reset of this variable.
  • step C01 the circuit CCT1 stores the last value Nj received in step B06 and refreshes the variable ⁇ Nj by adding to its previous value the new value Nj received.
  • step C02 the circuit CCT1 determines whether "r + ⁇ Nj" is greater than or equal to I, I being the number of binary words flowing in parallel on the buses Bi or the number of buses Bi. If the answer is positive, the circuit CCT1 goes to the step C03, if not out of the loop and goes to the step B07.
  • step C03 the circuit CCT1 verifies that the signal RDY1 has been sent by the unit U0, otherwise waits for this signal to be received.
  • the circuit CCT1 goes to the step C04 where it performs the following operations: the circuit CCT1 loads in the register RI or in the register R2 the new set of binary words provided by the unit UO.
  • the first register updated in step C04 after the initialization steps B01 and B03 is the register R1.
  • the circuit CCT1 loads the register R2, and so on so that the registers RI, R2 are updated alternately,
  • the circuit CCT1 sends the signal ACK1 to the unit UO,
  • the new value of r is equal to the remainder of the modular division of the sum of its previous value and the variable Nj.
  • the variable r represents the number of offsets beyond I or a multiple of I having been applied to the data in the registers RI, R2, - the circuit CCT1 sets the variable ⁇ Nj to zero. .
  • the successive offsets modulo I since the last reset of this variable are indeed now included in the new value of r.
  • FIG. 4 also shows steps P00 to P02 conducted by the unit Ul.
  • the unit U1 expects to receive the signal RDY2.
  • the unit U1 performs a step P01 where it reads Nj binary words wi from the set of binary words provided by the register R3 of the BDG unit, and sends the signal ACK2 (Nj) to the circuit CCT1 .
  • the unit U1 processes the data read, then returns to step P00 to verify that the signal RDY2 has been re-transmitted by the circuit CCT1 or wait for this signal to be re-transmitted before repeating the step P01.
  • the number of binary words necessary for the execution of the processing step P02 may be greater than I.
  • the unit U1 returns to the circuit CCT1 a number Nj less than the number of binary words read on its inputs, so that certain binary words read are presented again on its entries for the next reading step.
  • Nj constitutes, in essence, a purge instruction of certain binary words of the set of binary words initially presented to the unit NI, rather than information on the number of words. binary words that the unit Ul read.
  • the unit U1 may be a circuit in which data is written.
  • the number Nj then represents the number of binary words written in the unit U1.
  • the term "read binary words” as used herein and in the claims for designating an operation for receiving and processing binary words by the unit U1, can therefore also correspond to a receiving operation of binary words which are written in the Ul unit.
  • the higher read priority inputs are then higher write priority inputs.
  • the term "read” should therefore be understood in the broad sense to mean a data receiving operation for a given processing which may correspond to a writing of the data in the unit U1.
  • Another embodiment of the unit U1 can implement a method of matching the data without hierarchical entries.
  • the unit U1 then supplies the BDG unit, instead of the number Nj, with information on the binary words wi which it no longer needs (data to be purged). These binary words are not necessarily of adjacent "i" ranks.
  • the unit U1 can also indicate in which order the I-Nj binary words which have not been read (or which have been read but which it wishes to receive again) must be applied to its inputs.
  • the circuit BS is a "crossbar" type data reorganization circuit capable of connecting any of its inputs to any of its outputs.
  • mapping sequence described above is illustrated in FIG. 5 with indication of the corresponding steps performed among the above-described steps B00-B08, C00-C04. "I" is as previously assumed to be 8.
  • FIG. 5 is described in the Appendix, which forms an integral part of the description.
  • the BDG mapping unit may be configured to perform step C04 as a prefetch step before the number Nj is received, in order to reduce the number of clock cycles required to transfer the data from the unit U0 to the unit Ul.
  • This preloading step can be ensured by adding a third input register in parallel with the registers RI R2 and whose outputs are connected to additional inputs of the shift circuit circular BS. New data can be preloaded into one of the three input registers without waiting to know which data is present in the other two registers that have been read by the unit U1.
  • the outputs of the register R3 are returned to additional inputs of the circuit BS.
  • FIG. 6 represents steps of a method for producing an FPGA circuit according to the invention. We distinguish :
  • a step F02 for defining the hardware constraints of the circuit in particular the number of parallel buses, the clock frequency or the clock frequencies if the device comprises processing blocks having different clock frequencies, etc.
  • a step F05 the FPGA circuit is tested under actual operating conditions or in a simulation environment.
  • the production method ends at a step F06 if the circuit is considered satisfactory. If not, return to step F02 to redefine the hardware constraints.
  • This step may include defining a different number of parallel buses, for example to increase the degree of parallelism of the device.
  • a mapping unit or a plurality of matching units upstream of several processing units that may be affected by resizing the circuit
  • this step does not require changing the functional description of the circuit. In other words, it is not necessary to return to the FOI step.
  • F03 stages of compilation and obtaining of a hardware description, and F04 of logical synthesis and routing placement are executed on the basis of the new definition of the hardware constraints.
  • a new optimization cycle comprising the steps F02, F03, F04 can optionally be conducted until an optimal configuration of the FPGA circuit is obtained.
  • FIGS. 7A, 7B, 7C show three variants DV2a, DV2b, DV2c of the device DV2 performing the same processing function but having different degrees of parallelism retained in the step F02 of definition of the hardware constraints.
  • the DV2a device has a dual parallel bus architecture
  • the DV2b device has a four parallel bus architecture
  • the DV2c device has an eight parallel bus architecture.
  • the unit U1 is designated Ula, Ulb, Ulc
  • the BDG unit is designated BDGa, BDGb, BDGc in each of the variants, respectively.
  • the unit Ul (Ula, Ulb, Ulc) is an eight-input circuit E0 to E7 that can calculate the average value of data provided on all or part of its inputs.
  • the unit U1 is configured here to calculate the average value of 6 binary words provided on its inputs.
  • the unit U1 comprises for this purpose a control circuit CCT2 (CCT2a, CCT2b, CCT2c), a bank of 8 input registers r0, r1, r2 ... r7, the input of each register forming an input E0, El, E2 ... E7 of the unit Ul.
  • the control circuit CCT2 controls the loading of the registers r0 to r7 by means of charging signals LDO1 to LD07.
  • the outputs of the registers are applied to an adder ADD.
  • the output of the adder ADD is applied to a dividing circuit DIV / N configured here as a divider by 6 (DIV / 6) whose output provides the result R of the average value calculation.
  • the unit Ula is connected to a matching unit BDGa having two outputs S0, S1 and two inputs connected to two outputs of a data supply unit UOa.
  • the inputs E0, E1, E2 of the registers r0, r1, r2 are connected to the output S0 and the inputs E4, E5, E6 of the registers r4, r5, r6 are connected to the output S1.
  • Registers r3, r7 and their loading signals LD03, LD07 are not used. These registers can be deleted, or be connected to the outputs S0, SI and their contents maintained at 0.
  • the circuit CCT2a then activates divider DIV / 6 which provides the result R of the average value.
  • the unit Ulb is connected to a matching unit BDGb having four outputs S0, S1, S2, S3 and four inputs connected to four outputs of a data supply unit UOb.
  • the inputs E0, E1 of the registers r0, r1 are connected to the output S0
  • the inputs E2, E3 of the registers r2, r3 are connected to the output S1
  • the input E4 of the register r4 is connected to the output S2
  • the input E6 of the register r6 is connected to the output S3.
  • Registers r5, r7 and their load signals LD05, LD07 are not used. These registers can be deleted or connected to the outputs S2, S3 and their content maintained at 0.
  • the unit Ulb receives from the BDGb unit sets W, W of four binary words.
  • the circuit CCT2b then activates divider DIV / 6 which provides the result R of the average value.
  • the unit BDGb shifts on its outputs S0, SI the position of two unread words w2 ', w3' of the second set of words W, initially presented on its outputs S2, S3, and presents on these last words of a new set of words received.
  • the unit Ulc is connected to a BDGc matching unit having eight outputs S0, S1, S2, S3, S4, S5, S6, S7 and eight inputs connected to eight outputs of a UOc data supply unit.
  • the inputs E0, E1, E2, E3, E4, E5 of the registers r0, r1, r2, r3, r4, r5 are connected to the outputs S0, S1, S2, S3, S4, S5, respectively.
  • Registers r6, r7 and their load signals LD06, LD07 are not used. These registers can be deleted or connected to the outputs S6, S7 and their content maintained at 0.
  • the BDGc unit When the device DV2c is in operation, the BDGc unit supplies the unit Ulc with sets W of eight binary words.
  • the BDGc unit Upon reception of the command ACK2 (6), the BDGc unit shifts the position of two unread words w6, w7 of the word set W, initially presented on its outputs S6, S7, on its outputs S0, S1, and present on the outputs S2 to S7 words of a new set of words received.
  • variant DV2a was carried out during steps F03 and F04 after having chosen, during step F02, a two parallel bus architecture.
  • the variant DV2b was carried out during the steps F03 and F04 after the test step F05 showed that the two-bus architecture of the variant DV2a was not optimal, and after returning to the step F02 to increase the number of parallel buses, as well as possibly other variables such as the clock frequency.
  • the DV2c variant was carried out after the F05 test step showed that the parallel four-bus architecture of the DV2b variant was not optimal, or for other reasons, for example because the test of other parts of the circuit showed that an architecture with eight parallel buses was also desirable on this part of the FPGA circuit.
  • the method of producing the FPGA circuit shown in Fig. 6 should include a return to step FOI for rewriting the functional description of the unit U1, taking into account the reception by 2 , 4 or 8 bits of the six binary words needed to calculate an average value by the unit Ul. As indicated above, there would then be "contamination" of material constraints on the functional definition.
  • an instruction to declare an untyped variable, i.e., of unspecified size, to the high level of abstraction programming language used is step FOI.
  • the HLS compiler implements the untyped variable in step F03 using a target architecture including the BDG mapping unit and configuring the BDG unit as well as the unit U1 based on the number of buses. parallel, to obtain the configurations BDGa, BDGb, BDGc and Ula, Ulb, Ulc abovedescribed.
  • the material constraints can thus be modified after the test phase F05 without requiring a rewrite of the description of the function executed by the unit U1 since this function is independent of the material structure of the unit U1 through the use of the untyped variable.
  • the program executes an averaging function that reads samples ("samples") to a "while” stop condition.
  • the program calculates the average ("sum / count”). Since this is a static averaging function ("StaticAverage”), the stop condition is "the number of samples equals 6"("while (count ⁇ N)"). Similarly, a write Write function of the untyped variable can be provided.
  • the program is written without knowing the degree of parallelism available to the hardware device running this program. It is therefore independent of the hardware architecture, which can be modified after the F05 test phase until finding the optimum number of parallel buses for the intended application.
  • the HLS compiler of the C language implements the BUS variable and its read instruction READ (BUS) by means of the mapping unit BDG, and configuring the BDG unit and the unit Ul appropriately to the degree of parallelism retained (for example one of the configurations BDGa, BDGb, BDGc) (for example the unit Ul suitably.
  • FIG. 8 represents another embodiment DV2d of the device DV2 in which the unit U1 is, as before, a circuit for calculating the average value of data provided on its inputs E 0 to En.
  • the unit Ul comprises the adder ADD, a control circuit CCT2d, a bank of I input registers r 0 to rn whose inputs are connected to corresponding outputs of a matching unit BDGd and whose outputs are applied to the adder ADD.
  • the output of the adder ADD is applied to a dividing circuit DIV / N whose output provides the result R of the calculation of the average value of N binary words.
  • the number N is here a variable supplied to divider DIV / N by the control circuit CCT2d.
  • the circuit CCT2d also applies to the bank of registers r 0 to 3 ⁇ 4 loading signals LD01-LDi_i which are a function of N.
  • the circuit CCT2d for example monitors the evolution of the value of the result R and determines, after each computation step of an average value, the number N of binary words needed to calculate the next average value.
  • This program differs from the previous one in that it defines a dynamic averaging function "(DynamicAverage”) with a stop condition which is "the sum of the samples is less than 1000" ("while (sum ⁇ max)"). The number of samples read to calculate an average value thus depends on their value. Assuming that the samples are non-zero, the worst case considered is 1000 samples equal to 1. This program is therefore of the "data-dependent behavior" type.
  • a parallel data processing device can be implemented in the form of an integrated circuit by means of other known technological methods, in particular the ASICs ("Application Specifies Integrated Circuits")
  • ASICs Application Specifies Integrated Circuits
  • the device which has just been described has a particular advantage in the context of an implementation in the form of an FPGA circuit, which allows the adjustment of the bus size.
  • FIG. 9 shows an embodiment of the device DV2 in which the unit U0 is a circuit for matching the number of parallel buses and clock frequencies.
  • the unit U0 comprises K inputs E 0 to E K -i connected to a unit U2 which comprises K outputs So to S K - I , K being different from the number I of outputs of the unit U0.
  • the unit U2 is furthermore clocked by a clock signal CK2 different from a clock signal CK1 applied to the units BDG and U1.
  • the unit U0 makes the connection between these two clock domains having different degrees of parallelism, and transforms sets of binary words wo to W K - I into sets of binary words wo to wi_i.
  • the unit U0 uses a FIFO ("first input first out") stack for resizing the sets of binary words, receives the clock signals CK1, CK2 of each clock domain and controls the data exchange with the unit U2 by receiving a signal RDY3 therefrom and returning an acknowledgment signal ACK3 thereto.
  • the unit U0 can be any type of interface circuit providing parallel data, in particular an input port of the device.
  • the unit U1 may also be a memory, or another data processing unit, or a clock domain adaptation circuit and / or degrees of parallelism as shown in FIG. 9.
  • a device may comprise a plurality of processing units connected to the same set of data buses and each equipped with a BDG data matching unit enabling it to adjust its "consumption" of parallel data without worrying about the number of data units. data conveyed simultaneously by the set of buses.
  • the mapping unit has been described in the above as a separate block of the processing unit, it can in practice be integrated into the processing unit, the inputs of the setting unit in correspondence then forming the inputs of the processing unit.
  • the sets of binary words W1 and W2 are loaded into the registers R1, R2, the circular shift circuit BS receives on its 2 * 1 inputs the concatenated contents of the two registers:
  • R1 // R2 aO al a2 a3 a4 a5 a6 a7 b0 b1 b2 b3 b4 b5 b6 b7
  • the circuit CCT1 sets the signal SHIFT to 0 and loads in the register R3 the set W1:
  • R3 aO al a2 a3 a4 a5 a6 a7
  • R3 a5, a6, a7, b0, b1, b2, b3, b4
  • the circuit CCT1 loads the new set of words W3 binaries in the RI register.
  • R3 b1, b2, b3, b4, b5, b6, b7, cO It will be noted that the circuit BS executes the SHIFT command so that the content of the two registers is considered as an uninterrupted bit string which would be stored in an uninterrupted sequence of concatenated registers R1 // R2 // R3 // R4 / / R5 ... wherein R3 is the register R1 having received a first new set of binary words, the register R4 is the register R2 having received a new set of binary words, the register R5 is the register RI having received a second set of binary words set of binary words, etc.
  • the offset is executed by considering that the first bit of the register RI, here the bit c0, follows the last bit of the register R2.
  • the unit U1 reads the binary words b1 to b7 and c0, and returns the value N3! to the average circuit CCT1 of the acknowledgment signal ACK2 (8),
  • the circuit CCT1 loads the new set of binary words W4 into the register R2.
  • the circular shift circuit BS receives the concatenated contents of the two registers:
  • R3 cl, c2, c3, c4, c5, c6, c7, d0
  • the circuit CCT1 loads the new set of binary words W5 in the register RI.
  • the circular shift circuit BS receives the concatenated contents of the two registers:

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Logic Circuits (AREA)

Abstract

The invention relates to a method for processing data by means of a device (DV2) for parallel data processing comprising a unit (U1) configured to receive, on parallel inputs, a set (W) of binary words (wi). The method comprises a step consisting of reading, by means of the second unit (U1), all or some of the binary words of the set (W) of binary words (wi) applied on the parallel inputs of same, and sending a purge instruction (Nj) for purging certain binary words of the set of binary words, and a step consisting of supplying to the second unit (U1) the word or words (a5-a7) of the first set of binary words which have not been purged, and one or more binary words (b0-b4) of a new set of binary words (W', W2).

Description

DISPOSITIF ET PROCÉDÉ DE TRAITEMENT PARALLÉLISÉ DE DONNÉES  DEVICE AND METHOD FOR PARALLELIZED DATA PROCESSING
La présente invention concerne un procédé de traitement parallélisé de données, un dispositif de traitement parallélisé de données, ainsi qu'un procédé pour réaliser un dispositif de traitement parallélisé de données. The present invention relates to a parallel data processing method, a parallel data processing device, and a method for producing a parallel data processing device.
En microélectronique, le "parallélisme" ou "traitement parallélisé de données" ("parallelized data processing") est une technique consistant à utiliser des architectures de processeurs capables de traiter des données de manière simultanée, sous le contrôle de programmes spécifiquement prévus pour assurer un tel traitement. Cette technique a pour but de réaliser le plus grand nombre d'opérations en un temps le plus petit possible. In microelectronics, "parallelism" or "parallelized data processing" is a technique consisting in using processor architectures capable of processing data simultaneously, under the control of programs specifically designed to provide such treatment. This technique aims to achieve the largest number of operations in the smallest possible time.
Les circuits intégrés à réseau de portes programmables, ou FPGA ("Field Programmable Gâte Array") sont particulièrement adaptés à la réalisation d'architectures de processeurs parallélisées. Un circuit FPGA vierge est transformé en un circuit intégré opérationnel par configuration du réseau de portes logiques qu'il comprend. Cette configuration est tout d'abord définie dans un langage descriptif matériel, dit HDL ("Hardware Description Language"), ou ses variantes (VHDL, Verilog...), permettant de décrire le comportement ainsi que l'architecture du circuit matériel. La description du circuit en langage descriptif matériel est ensuite compilée pour obtenir une configuration de circuit FPGA. Chaque fabricant de circuit FPGA propose à cet effet des outils dits de synthèse logique et de placement routage permettant, à partir du circuit HDL, d'obtenir une configuration de FPGA également appelée "bitstream", prête à être chargée dans la mémoire de configuration du FPGA pour obtenir un circuit intégré opérationnel. Programmable gate array integrated circuits, or FPGAs ("Field Programmable Gate Array") are particularly suitable for the realization of parallel processor architectures. A virgin FPGA circuit is transformed into an operational integrated circuit by configuring the network of logic gates that it comprises. This configuration is first defined in a hardware description language, called HDL ("Hardware Description Language"), or its variants (VHDL, Verilog ...), to describe the behavior and architecture of the hardware circuit. The circuit description in hardware description language is then compiled to obtain an FPGA circuit configuration. For this purpose, each FPGA circuit manufacturer proposes so-called logical synthesis and routing placement tools which make it possible, from the HDL circuit, to obtain an FPGA configuration also called "bitstream", ready to be loaded into the configuration memory of the device. FPGA to obtain an operational integrated circuit.
La description d'un circuit en langage descriptif matériel étant une opération complexe réservée aux spécialistes, il est connu de décrire la fonction de traitement exécutée par le circuit en utilisant un langage à haut niveau d'abstraction, par exemple le langage C ou C++, pour obtenir une description dite fonctionnelle. La description fonctionnelle est ensuite compilée pour obtenir le circuit HDL, soit l'expression de la fonction dans le langage descriptif matériel, qui est elle-même compilée pour obtenir une configuration de circuit FPGA. Ce procédé permet de mettre la filière des circuits FPGA à la portée de programmeurs n'ayant pas d'expérience dans l'utilisation des langages descriptifs matériels. Le passage de la description fonctionnelle à la description matérielle fait intervenir un compilateur à synthèse de haut niveau HLS ("High Level Synthesis") qui effectue cette transformation à partir d'un modèle d'architecture matérielle, ou architecture cible, définissant les caractéristiques générales du circuit HDL. Ce modèle d'architecture présente un certain nombre de caractéristiques ajustables, choisies au cours d'une étape de définition des contraintes matérielles intervenant avant la compilation HLS, telles que des vitesses d'horloge de bus, le nombre de bus de données agencés en parallèle et la taille de ces bus (nombre de bits qu'ils véhiculent). L'architecture cible permettant de mettre en œuvre le circuit HDL n'est généralement pas parfaitement adaptée aux besoins particuliers de la fonction à mettre en œuvre, notamment en ce qui concerne le nombre de bus parallèles qu'elle comporte relativement au nombre de données que la fonction peut traiter simultanément. Ainsi, le nombre de bus parallèles est généralement un multiple de 2, même si la fonction mise en œuvre ne traite pas simultanément un nombre de données qui est un multiple de 2. Toutefois, l'architecture cible peut présenter un nombre de bus de données qui, à défaut d'être égal, est supérieur au nombre de données que la fonction peut traiter simultanément, afin d'exploiter au maximum son parallélisme. Lorsque plusieurs fonctions de traitement de données sont mises en œuvre dans le même circuit, c'est la fonction capable de traiter simultanément le plus grand nombre de données qui détermine généralement le degré de parallélisme retenu dans l'architecture cible. The description of a hardware descriptive language circuit being a complex operation reserved for specialists, it is known to describe the processing function executed by the circuit using a high level of abstraction language, for example the C or C ++ language, to obtain a so-called functional description. The functional description is then compiled to obtain the HDL circuit, the expression of the function in the hardware description language, which is itself compiled to obtain an FPGA circuit configuration. This method makes it possible to put the FPGA circuits die within the reach of programmers having no experience in the use of hardware descriptive languages. The transition from the functional description to the hardware description involves a High Level Synthesis (HLS) compiler that performs this transformation from a hardware architecture model, or target architecture, defining the general characteristics of the HDL circuit. This architecture model presents a certain number of adjustable characteristics, chosen during a step of definition of the hardware constraints intervening before the HLS compilation, such as bus clock speeds, the number of data buses arranged in parallel. and the size of these buses (number of bits they carry). The target architecture making it possible to implement the HDL circuit is generally not perfectly adapted to the particular needs of the function to be implemented, in particular as regards the number of parallel buses that it comprises relative to the number of data that the function can process simultaneously. Thus, the number of parallel buses is generally a multiple of 2, even if the implemented function does not simultaneously process a number of data that is a multiple of 2. However, the target architecture may have a number of data buses which, if not equal, is greater than the number of data that the function can handle simultaneously, in order to exploit its parallelism as much as possible. When several data processing functions are implemented in the same circuit, it is the function capable of simultaneously processing the largest number of data that generally determines the degree of parallelism retained in the target architecture.
Ces caractéristiques structurelles de l'architecture cible doivent être prises en compte au stade de la description fonctionnelle du circuit, en utilisant des variables typées - c'est-à- dire de taille déterminée -, telles que CHAR (1 octet), INT (4 octets avec un processeur 32 bits), et DOUBLE (8 octets) en C ou C++, qui sont adaptées au nombre de données parallélisées. Par exemple, si l'architecture cible présente 8 bus de données parallèles, la variable "DOUBLE" sera utilisée dans la description fonctionnelle du circuit. II s'ensuit une sorte de "contamination" de la description fonctionnelle par des contraintes matérielles, liée à une inadéquation de l'architecture cible relativement aux besoins réels de la fonction et à l'utilisation de variables typées. Cette "contamination" complexifîe l'expression de la fonction dans le langage à haut niveau d'abstraction. Elle complexifîe également le processus de réalisation et de mise au point d'un circuit FPGA. Un circuit FPGA étant en effet reconfigurable à volonté, il est habituel de remanier l'architecture cible après une période d'évaluation du circuit, en revenant à l'étape de définition des contraintes matérielles. La nouvelle définition des contraintes matérielles peut se traduire, notamment, par une augmentation du nombre de bus parallèles, afin de résoudre des cas de congestion de données identifiés au cours de la période d'évaluation. Dans ce cas, la description fonctionnelle du circuit doit être réécrite afin de prendre en compte les modifications apportées à l'architecture matérielle qui la met en œuvre. These structural characteristics of the target architecture must be taken into account at the stage of the functional description of the circuit, using typed variables - that is to say of determined size -, such as CHAR (1 byte), INT ( 4 bytes with a 32-bit processor), and DOUBLE (8 bytes) in C or C ++, which are adapted to the number of parallelized data. For example, if the target architecture has 8 parallel data buses, the variable "DOUBLE" will be used in the functional description of the circuit. This results in a kind of "contamination" of the functional description by material constraints, related to an inadequacy of the target architecture relative to the real needs of the function and the use of typed variables. This "contamination" complicates the expression of function in high-level abstraction language. It also complicates the process of realization and development of an FPGA circuit. As an FPGA circuit is indeed reconfigurable at will, it is usual to rework the target architecture after a period of evaluation of the circuit, returning to the definition stage of the constraints hardware. The new definition of hardware constraints may result, in particular, in an increase in the number of parallel buses, in order to solve cases of data congestion identified during the evaluation period. In this case, the functional description of the circuit must be rewritten in order to take into account the modifications made to the hardware architecture that implements it.
Il existe également des fonctions configurées pour traiter simultanément un nombre de données qui varie avec le temps. Cette variabilité peut dépendre d'une consigne externe ou d'un paramètre interne qui est fonction du résultat d'étapes de traitement précédentes (fonctions auto-adaptatives dites "à comportement dépendant des données"). Dans ce cas, une modification de l'architecture cible entraîne un encore plus grand nombre de modifications dans l'expression de la fonction dans le langage à haut niveau d'abstraction. There are also functions configured to simultaneously process a number of data that varies over time. This variability may depend on an external setpoint or an internal parameter which is a function of the result of previous processing steps (auto-adaptive functions called "data dependent behavior"). In this case, a change in the target architecture results in even more changes in the expression of the function in the high-level abstraction language.
Il pourrait donc être souhaité de prévoir un procédé et un dispositif de traitement parallélisé de données qui simplifie le processus de conception, de réalisation et d'optimisation d'un circuit FPGA. It may therefore be desirable to provide a method and a parallel data processing device which simplifies the process of designing, producing and optimizing an FPGA circuit.
Il pourrait également être souhaité de prévoir un procédé et un dispositif de traitement parallélisé de données qui simplifie le traitement d'un nombre de données différent du nombre de données véhiculées par un ensemble de bus parallèles. It may also be desired to provide a method and a parallel data processing device which simplifies the processing of a number of data different from the number of data conveyed by a set of parallel buses.
Des modes de réalisation de l'invention concernent un dispositif de traitement parallélisé de données, comprenant : une première unité comprenant des sorties parallèles pour fournir des mots binaires en parallèle, et une seconde unité comprenant des entrées parallèles pour recevoir un ensemble de mots binaires en parallèle fournis par la première unité, dans lequel la seconde unité est configurée pour lire simultanément, au cours d'une même étape de lecture, tout ou partie des mots binaires de l'ensemble de mots binaires appliqué sur ses entrées parallèles, et renvoyer une instruction de purge de certains mots binaires de l'ensemble de mots binaires. Le dispositif comprend une unité de mise en correspondance de données reliant les sorties parallèles de la première unité aux entrées parallèles de la seconde unité et configurée pour fournir à la seconde unité un premier ensemble de mots binaires fourni par la première unité, et, après lecture par la seconde unité d'une partie des mots binaires du premier ensemble de mots binaires, fournir à la seconde unité le ou les mots du premier ensemble de mots binaires n'ayant pas été purgés, et un ou plusieurs mots binaires d'un second ensemble de mots binaires fourni par la première unité. Selon un mode de réalisation, l'unité de mise en correspondance de données est également configurée pour, lorsqu'une partie du second ensemble de mots binaires a été purgée, fournir à la seconde unité le ou les mots binaires du second ensemble de mots binaires n'ayant pas été purgés et un ou plusieurs mots binaires d'un troisième ensemble de mots binaires fourni par la première unité. Embodiments of the invention provide a parallel data processing device, comprising: a first unit including parallel outputs for providing binary words in parallel, and a second unit including parallel inputs for receiving a set of binary words in parallel. parallel provided by the first unit, wherein the second unit is configured to read simultaneously, during a same reading step, all or part of the binary words of the set of binary words applied on its parallel inputs, and return a purge instruction of certain binary words of the set of binary words. The device comprises a data matching unit connecting the parallel outputs of the first unit to the parallel inputs of the second unit and configured to provide the second unit with a first set of binary words provided by the first unit, and, after reading by the second unit of a part of the binary words of the first set of binary words, supplying to the second unit the word or words of the first set of binary words that have not been purged, and one or more binary words of a second set of binary words provided by the first unit. According to one embodiment, the data matching unit is also configured to, when part of the second set of bit words has been purged, supply the second unit with the one or more binary words of the second set of binary words. not being purged and one or more binary words of a third set of binary words provided by the first unit.
Selon un mode de réalisation, la seconde unité est configurée pour, lors de la lecture d'une partie des mots binaires appliqués sur ses entrées parallèles, lire des mots binaires présents sur des entrées à plus haute priorité de lecture, et l'unité de mise en correspondance de données est configurée pour, après purge par la seconde unité d'une partie de mots binaires du premier ensemble de mots binaires, appliquer sur les entrées à plus haute priorité de la seconde unité des mots du premier ensemble de mots binaires précédemment appliqués sur des entrées parallèles et n'ayant pas été purgés, et appliquer sur des entrées parallèles à plus faible priorité de lecture de la seconde unité un ou plusieurs mots binaires du second ensemble de mots binaires. According to one embodiment, the second unit is configured, when reading a part of the binary words applied to its parallel inputs, to read binary words present on inputs with a higher reading priority, and the unit of data mapping is configured to, after purging by the second unit of a bit portion of the first set of bit words, applying to the higher priority entries of the second unit words of the first set of bit words previously applied to parallel inputs and not purged, and apply on parallel inputs with lower read priority of the second unit one or more binary words of the second set of binary words.
Selon un mode de réalisation, l'unité de mise en correspondance de données comprend au moins deux registres d'entrée agencés en parallèle et ayant chacun des entrées parallèles reliées aux sorties de la première unité, un registre de sortie ayant des sorties reliées aux entrées parallèles de la seconde unité, un circuit à réorganisation de données reliant des sorties des registres d'entrée à des entrées parallèles du registre de sortie, et un circuit de contrôle configuré pour : charger dans les registres d'entrée des ensembles de mots binaires fournis par la première unité, et charger dans le registre de sortie, par l'intermédiaire du circuit à réorganisation de données, des mots binaires présents dans les registres d'entrée, commander le circuit à réorganisation de données en fonction du nombre de mots binaires ayant été purgés, de manière à charger dans des cellules à plus haute priorité de lecture du registre de sortie les mots binaires présents dans les registres d'entrée et n'ayant pas été purgés, et charger dans des cellules de plus faible priorité du registre de sortie des mots binaires présents dans les registres d'entrée et n'ayant pas encore été présentés à la seconde unité. According to one embodiment, the data matching unit comprises at least two input registers arranged in parallel and each having parallel inputs connected to the outputs of the first unit, an output register having outputs connected to the inputs parallel of the second unit, a data reorganization circuit connecting outputs of the input registers to parallel inputs of the output register, and a control circuit configured to: load in the input registers of the provided binary bit sets by the first unit, and loading in the output register, via the data reorganization circuit, binary words present in the input registers, controlling the data reorganization circuit as a function of the number of binary words having have been purged, so as to load in cells with higher priority reading of the output register the binary words pr present in the input registers and not having been purged, and load in lower priority cells of the output register of the binary words present in the input registers and not yet presented to the second unit .
Selon un mode de réalisation, le circuit de contrôle est configuré pour charger dans l'un des registres d'entrée un nouvel ensemble de mots binaires fourni par la première unité au moins lorsque tous les mots binaires de l'ensemble de mots binaires présent dans le registre d'entrée ont été purgés. Selon un mode de réalisation, la seconde unité est configurée pour déterminer le nombre de mots binaires qu'elle lit au cours d'une même étape de lecture en fonction des mots binaires précédemment lus ou en fonction d'une consigne externe. Selon un mode de réalisation, la première unité est un processeur, un circuit d'interface de communication série/parallèle, un circuit d'adaptation d'un nombre de bus agencés en parallèle, un circuit de modification de fréquence d'horloge, ou une combinaison de ces éléments. Des modes de réalisation concernent également un circuit intégré à réseau de portes programmables, comprenant un dispositif tel que défini ci-dessus. According to one embodiment, the control circuit is configured to load in one of the input registers a new set of binary words provided by the first unit at least when all the binary words of the set of binary words present in the entry register have been purged. According to one embodiment, the second unit is configured to determine the number of binary words that it reads during the same reading step as a function of the previously read binary words or as a function of an external setpoint. According to one embodiment, the first unit is a processor, a serial / parallel communication interface circuit, a matching circuit of a number of buses arranged in parallel, a clock frequency modification circuit, or a combination of these elements. Embodiments also relate to a programmable gate array integrated circuit, comprising a device as defined above.
Des modes de réalisation concernant également un procédé de traitement de données au moyen d'un dispositif de traitement parallélisé de données comprenant une première unité comprenant des sorties parallèles pour fournir des mots binaires en parallèle, et une seconde unité comprenant des entrées parallèles pour recevoir un ensemble de mots binaires en parallèle fournis par la première unité, le procédé comprenant les étapes consistant à : au moyen de la seconde unité, lire simultanément, au cours d'une étape de lecture, tout ou partie des mots binaires de l'ensemble de mots binaires appliqué sur ses entrées parallèles, et renvoyer, après une étape de lecture, une instruction de purge de certains mots binaires de l'ensemble de mots binaires, et après lecture par la seconde unité de tout ou partie des mots binaires du premier ensemble de mots binaires, fournir à la seconde unité le ou les mots du premier ensemble de mots binaires n'ayant pas été purgés, et un ou plusieurs mots binaires d'un second ensemble de mots binaires fourni par la première unité. Embodiments also relating to a data processing method by means of a parallel data processing device comprising a first unit comprising parallel outputs for providing binary words in parallel, and a second unit comprising parallel inputs for receiving a bit. a set of parallel binary words provided by the first unit, the method comprising the steps of: by means of the second unit, reading simultaneously, during a reading step, all or part of the binary words of the set of binary words applied on its parallel inputs, and returning, after a reading step, a purge instruction of certain binary words of the set of binary words, and after reading by the second unit of all or part of the binary words of the first set of binary words, supplying to the second unit the word or words of the first set of binary words that have not been purged s, and one or more binary words of a second set of binary words provided by the first unit.
Selon un mode de réalisation, le procédé comprend l'étape consistant à, lorsqu'une partie du second ensemble de mots binaires a été purgée, fournir à la seconde unité le ou les mots binaires du second ensemble de mots binaires n'ayant pas été purgés et un ou plusieurs mots binaires d'un troisième ensemble de mots binaires fourni par la première unité. According to one embodiment, the method comprises the step of, when a part of the second set of binary words has been purged, supplying to the second unit the one or more binary words of the second set of binary words that have not been purged and one or more binary words of a third set of binary words provided by the first unit.
Selon un mode de réalisation, le procédé comprend les étapes consistant à : lors de la lecture de tout ou partie des mots binaires appliqués sur les entrées parallèles de la seconde unité, lire des mots binaires présents sur des entrées à plus haute priorité de lecture, et après purge d'une partie des mots binaires du premier ensemble de mots binaires, appliquer sur les entrées à plus haute priorité de lecture de la seconde unité des mots du premier ensemble de mots binaires précédemment appliqués sur des entrées de plus faible priorité de lecture et n'ayant pas été purgés, et appliquer sur des entrées parallèles à plus faible priorité de lecture de la seconde unité un ou plusieurs mots binaires du second ensemble de mot binaire. According to one embodiment, the method comprises the steps of: when reading all or part of the binary words applied to the parallel inputs of the second unit, reading binary words present on inputs having a higher reading priority, and after purging a portion of the binary words of the first set of binary words, applying to the higher priority read inputs of the second unit words of the first set of bit words previously applied to entries of lower read priority and not purged, and applying to parallel entries with lower read priority of the second unit one or more binary words of the second set of binary words .
Selon un mode de réalisation, le procédé comprend l'étape consistant à prévoir, entre la première et la seconde unité, une unité de mise en correspondance de données reliant les sorties parallèles de la première unité aux entrées parallèles de la seconde unité et comprenant au moins deux registres d'entrée agencés en parallèle et ayant chacun des entrées parallèles reliées aux sorties de la première unité, un registre de sortie ayant des sorties reliées aux entrées parallèles de la seconde unité, et un circuit à réorganisation de données reliant des sorties des registres d'entrée à des entrées parallèles du registre de sortie. Selon un mode de réalisation, le procédé comprend une étape consistant à charger dans l'un des registres d'entrée un nouvel ensemble de mots binaires fourni par la première unité, au moins lorsque tous les mots binaires de l'ensemble de mots binaires présent dans le registre d'entrée ont été purgés. Des modes de réalisation concernent également un procédé pour réaliser, dans un circuit intégré à réseau de portes programmables, un dispositif exécutant une fonction de traitement parallélisé de données nécessitant des étapes de lecture simultanée de mots binaires dans un ensemble de mots binaires véhiculés par des bus de données parallèles, le procédé comprenant : une étape de description fonctionnelle de la fonction de traitement en utilisant un langage à haut niveau d'abstraction et en utilisant une variable non typée de taille non spécifiée pour désigner les mots binaires devant être lus simultanément, une étape de définition de contraintes matérielles à prendre en compte dans la réalisation du dispositif et incluant un choix d'un degré de parallélisme du dispositif, à partir de la définition fonctionnelle et des contraintes matérielles, une étape de description matérielle du dispositif présentant le degré de parallélisme choisi, en utilisant comme architecture cible un dispositif tel que décrit ci-dessus, dans lequel la seconde unité exécute la fonction de traitement des données, et à partir de la description matérielle du dispositif, une étape de configuration du circuit intégré à réseau de portes programmables, pour obtenir le dispositif présentant le degré de parallélisme choisi. Selon un mode de réalisation, le procédé comprend les étapes consistant à : tester le dispositif, remanier la définition des contraintes matérielles du dispositif de manière à modifier son degré de parallélisme, sans modifier la description fonctionnelle de la fonction de traitement, remanier la description matérielle du dispositif à partir de la définition remaniée des contraintes matérielles, et à partir de la description matérielle remaniée du dispositif, reconfigurer le circuit intégré à réseau de portes programmables, pour obtenir le dispositif présentant le degré de parallélisme modifié. According to one embodiment, the method comprises the step of providing, between the first and second units, a data matching unit connecting the parallel outputs of the first unit to the parallel inputs of the second unit and comprising minus two input registers arranged in parallel and each having parallel inputs connected to the outputs of the first unit, an output register having outputs connected to the parallel inputs of the second unit, and a data reordering circuit connecting outputs of the first units; input registers to parallel inputs of the output register. According to one embodiment, the method comprises a step of loading into one of the input registers a new set of binary words provided by the first unit, at least when all the binary words of the set of binary words present in the input register were purged. Embodiments also relate to a method for performing, in a gate array integrated circuit, a device executing a parallel data processing function requiring steps for simultaneous reading of binary words in a set of binary words carried by buses. of parallel data, the method comprising: a step of functionally describing the processing function using a high-level abstraction language and using an unspecified variable of unspecified size to designate the binary words to be read simultaneously, a step of defining material constraints to be taken into account in the realization of the device and including a choice of a degree of parallelism of the device, from the functional definition and the material constraints, a step of hardware description of the device having the degree of parallelism chosen, in use reading as a target architecture a device as described above, wherein the second unit executes the data processing function, and from the hardware description of the device, a step of configuring the programmable gate array integrated circuit, for obtain the device with the degree of parallelism chosen. According to one embodiment, the method comprises the steps of: testing the device, reworking the definition of the hardware constraints of the device so as to modify its degree of parallelism, without modifying the functional description of the processing function, reworking the hardware description of the device from the reworked definition of the hardware constraints, and from the redesigned hardware description of the device, reconfigure the programmable gate network integrated circuit, to obtain the device having the degree of modified parallelism.
Des modes de réalisation de l'invention seront décrits dans ce qui suit, à titre non limitatif, en relation avec les dessins annexés parmi lesquels : Embodiments of the invention will be described in the following, without limitation, in relation to the appended drawings among which:
- la figure 1 représente un exemple de dispositif classique de traitement parallélisé de données,  FIG. 1 represents an example of a conventional device for parallel processing of data,
- la figure 2 représente un mode de réalisation d'un dispositif de traitement parallélisé de données selon l'invention,  FIG. 2 represents an embodiment of a parallel data processing device according to the invention,
- la figure 3 montre un mode de réalisation d'une unité de mise en correspondance représentée sous forme de bloc sur la figure 2, FIG. 3 shows an embodiment of a mapping unit represented in block form in FIG. 2,
- la figure 4 est un organigramme illustrant le fonctionnement de l'unité de mise en correspondance,  FIG. 4 is a flowchart illustrating the operation of the mapping unit,
- la figure 5 montre une séquence de mise en correspondance de données, exécutée par l'unité de mise en correspondance,  FIG. 5 shows a data matching sequence executed by the mapping unit,
- la figure 6 montre des étapes d'un procédé de réalisation d'un circuit intégré FPGA selon l'invention,  FIG. 6 shows steps of a method for producing an FPGA integrated circuit according to the invention,
- les figures 7 A, 7B, 7C illustrent le procédé de la figure 6 et montrent divers modes de réalisation d'un dispositif de traitement parallélisé de données selon l'invention présentant des degrés de parallélisme différents,  FIGS. 7A, 7B, 7C illustrate the method of FIG. 6 and show various embodiments of a parallel data processing device according to the invention having different degrees of parallelism,
- la figure 8 montre un autre mode de réalisation d'un dispositif de traitement parallélisé de données selon l'invention, et  FIG. 8 shows another embodiment of a parallel data processing device according to the invention, and
- la figure 9 représente un autre mode de réalisation d'un dispositif de traitement parallélisé de données selon l'invention.  - Figure 9 shows another embodiment of a parallel data processing device according to the invention.
Un exemple de dispositif classique de traitement parallélisé de données DVl est représenté sur la figure 1. Le dispositif comprend une unité Ua assurant la fourniture de données parallèles, une unité Ub assurant le traitement parallélisé des données fournies par l'unité Ua, et des bus de données B0 à Bi_i reliant les deux unités. L'unité Ua comprend des sorties So à Si_i fournissant chacune un mot binaire wo à WH d'un ensemble de mots binaires W et l'unité Ub comprend des entrées E0 à En recevant chacun un mot binaire wo à WH de l'ensemble de mots binaires, chaque sortie Si de rang i de l'unité Ua étant reliée à une entrée Ei de rang correspondant de l'unité Ub par un bus de données Bi. L'unité Ua envoie à l'unité Ub un signal RDY ("Ready") lorsque l'ensemble W de mots binaires w; est disponible sur ses sorties Si, et l'unité Ub renvoie un signal d'accusé de réception ACK ("Acknowledge") lorsque ces mots binaires ont été lus via ses entrées Ei. Sur réception du signal ACK, l'unité Ua fournit un nouvel ensemble W de mots binaires w;' (w0 à wn) et émet de nouveau le signal RDY. An example of a conventional device for parallel processing of data DV1 is shown in FIG. 1. The device comprises a unit Ua ensuring the supply of parallel data, a unit Ub providing the parallel processing of the data provided by the unit Ua, and buses data B 0 to Bi_i connecting the two units. The unit Ua comprises outputs So to Si_i each providing a binary word wo to WH of a set of binary words W and the unit Ub comprises inputs E 0 to En each receiving a binary word wo to WH of the set of binary words, each output Si of rank i of the unit Ua being connected to an input Ei of corresponding rank of the unit Ub by a data bus Bi. The unit Ua sends the unit Ub a signal RDY ("Ready") when the set W of binary words w; is available on its outputs Si, and the unit Ub returns an acknowledgment signal ACK ("Acknowledge") when these binary words have been read via its inputs Ei. Upon receipt of the ACK signal, the unit Ua provides a new set W of binary words w; (w 0 to wn) and re-transmits the RDY signal.
Si la fonction exécutée par l'unité Ub traite simultanément, à chaque étape de traitement, un nombre de mots binaires inférieur au nombre I de mots binaires w; véhiculés par les bus de données Bi, l'unité Ub doit néanmoins lire tous les mots binaires et mettre en mémoire ceux devant être traités au cours d'une étape de traitement suivante, afin que l'unité Ua puisse présenter sur ses sorties le nouvel ensemble de mots binaires W avant l'étape de traitement suivante. Cette étape de traitement peut en effet nécessiter des mots binaires du nouvel ensemble de mots binaires W en sus des mots binaires précédemment mémorisés. If the function executed by the unit Ub simultaneously processes, at each processing step, a number of binary words less than the number I of binary words w; conveyed by the data bus Bi, the unit Ub must nevertheless read all the binary words and put in memory those to be treated during a next processing step, so that the unit Ua can present on its outputs the new set of binary words W before the next processing step. This processing step may in fact require binary words of the new set of binary words W in addition to the previously stored binary words.
Cet écart entre le nombre de données traitées et le nombre de données fournies doit être pris en compte dans l'écriture de la fonction dans un langage à haut niveau d'abstraction, en faisant appel à des artifices de programmation tels que l'utilisation de variables de type tableau (par exemple en langage C la variable "TABLEAU[i][j]" pour un tableau de i*j variables) qui se traduisent, après réalisation du circuit opérationnel, par la réservation de zones mémoire dédiées à ces variables et l'exécution de cycles d'accès en lecture et écriture de ces zones mémoire. Comme indiqué plus haut, un remaniement de l'architecture du dispositif DV1, après une période d'évaluation, et notamment une augmentation du nombre I de bus parallèles, implique un remaniement de la description fonctionnelle du dispositif dans un langage à haut niveau d'abstraction et complexifïe le procédé de réalisation et de mise au point de ce dispositif. This gap between the number of processed data and the number of data provided must be taken into account when writing the function in a high level of abstraction language, using programming devices such as the use of variables of the array type (for example in the C language the variable "TABLE [i] [j]" for an array of i * j variables) which result, after completion of the operational circuit, by the reservation of memory zones dedicated to these variables and executing read and write access cycles of these memory areas. As indicated above, a reworking of the architecture of the DV1 device, after a period of evaluation, and in particular an increase in the number I of parallel buses, involves a reworking of the functional description of the device in a high-level language. abstraction and complexifïe the method of realization and development of this device.
Un mode de réalisation d'un dispositif de traitement parallélisé de données DV2 selon l'invention est représenté sur la figure 2. Le dispositif comprend une unité U0 assurant la fourniture de données parallèles, une unité Ul assurant le traitement parallélisé de données, un ensemble de bus de données parallèles Bi (B0 à Bi_i) reliant les unités U0 et Ul, et une unité de mise en correspondance BDG agencée entre les unités U0 et Ul sur les bus de données Bi. Il sera noté que, dans la présente description, le terme "mot binaire" désigne une unité de donnée pouvant être traitée par l'unité Ul et dont la taille est de plusieurs bits, par exemple 8, 16, 32, 64 bits, ou tout autre format. Ainsi, le terme "bus" désigne un groupe de plusieurs pistes conductrices en parallèle permettant de véhiculer un mot. An embodiment of a device for parallel processing of data DV2 according to the invention is shown in FIG. 2. The device comprises a unit U0 providing the supply of parallel data, an unit UI providing the parallel processing of data, a set parallel data bus Bi (B 0 to Bi_i) connecting the units U0 and Ul, and a matching unit BDG arranged between the units U0 and Ul on the data buses Bi. It will be noted that in the present description, the term "binary word" designates a unit of data that can be processed by the unit U1 and whose size is several bits, for example 8, 16, 32, 64 bits, or any other format. Thus, the term "bus" designates a group of several conductive tracks in parallel for conveying a word.
Chaque bus de données Bi comprend une première section Sa reliant l'unité U0 à l'unité BDG et une seconde section Sb reliant l'unité BDG à l'unité Ul . L'unité U0 comprend des sorties Si (S0 à Si_i) reliées à des entrées Ei (E0 à En) de l'unité BDG par la première section Sa de l'ensemble de bus Bi, et l'unité BDG comprend des sorties Si (S0 à Si_i) reliées à des entrées Ei (E0 à En) de l'unité Ul par la seconde section B de l'ensemble de bus Bi. Each data bus Bi comprises a first section Sa connecting the unit U0 to the unit BDG and a second section Sb connecting the unit BDG to the unit Ul. The unit U0 comprises outputs Si (S 0 to Si_i) connected to inputs Ei (E 0 to En) of the unit BDG by the first section Sa of the set of buses Bi, and the unit BDG comprises outputs Si (S 0 to Si_i) connected to inputs Ei (E 0 to En) of the unit Ul by the second section B of the set of buses Bi.
L'unité U0 envoie à l'unité BDG un signal RDY1 lorsqu'un ensemble W de mots binaires wo à wi-i est disponible sur ses sorties Si, et l'unité BDG renvoie un signal d'accusé de réception ACKl lorsque l'ensemble de mots binaires a été lu. Sur réception du signal ACKl, l'unité U0 fournit un nouvel ensemble W de mots binaires w0' à wn', et ainsi de suite. De même, l'unité BDG envoie à l'unité Ul un signal RDY2 lorsque des mots binaires wi sont disponibles sur ses sorties Si, et l'unité Ul renvoie un signal d'accusé de réception ACK2 lorsque ces mots binaires ont été lus. Sur réception du signal ACK2, l'unité BDG fournit un nouvel ensemble de mots binaires, et ainsi de suite. The unit U0 sends to the BDG unit a signal RDY1 when a set W of binary words wo to wi-i is available on its outputs Si, and the unit BDG returns an acknowledgment signal ACK1 when the set of binary words was read. On receiving the signal ACK1, the unit U0 provides a new set W of binary words w0 'to wn', and so on. Likewise, the unit BDG sends to the unit UI a signal RDY2 when binary words wi are available on its outputs Si, and the unit U1 returns an acknowledgment signal ACK2 when these binary words have been read. Upon receipt of the ACK2 signal, the BDG unit provides a new set of binary words, and so on.
Selon l'invention, l'unité Ul est configurée pour ne lire, parmi un ensemble de mots binaires fourni par l'unité BDG, que les mots binaires dont elle a immédiatement besoin, par exemple pour exécuter une étape de traitement parallélisé de données. L'unité Ul fournit alors à l'unité BDG une information sur les mots binaires ayant été lus. Cette information est fournie avec le signal ACK2, ou forme le signal ACK2. Sur réception de cette information, l'unité BDG présente de nouveau à l'unité Ul les mots binaires n'ayant pas été lus au cours de l'étape de lecture précédente, ainsi que des mots binaires du nouvel ensemble de mots binaires fourni par l'unité U0. L'unité BDG fournit ainsi à l'unité Ul des ensembles de mots binaires "hybrides" comprenant des mots binaires w;, w;' provenant d'ensembles de mots binaires différents fournis par l'unité U0. According to the invention, the unit U1 is configured to read from among a set of binary words provided by the BDG unit only the binary words which it immediately needs, for example to execute a step of parallel processing of data. The unit U1 then supplies the BDG unit with information on the binary words that have been read. This information is provided with the signal ACK2, or forms the signal ACK2. On receipt of this information, the BDG unit presents again to the unit UI the binary words that have not been read during the preceding reading step, as well as binary words of the new set of binary words provided by the unit U0. The unit BDG thus supplies the unit U with "hybrid" binary word sets comprising binary words w ;, w; from different sets of bit words provided by the unit U0.
Dans un mode de réalisation, l'unité Ul est configurée pour lire les mots binaires w; fournis par l'unité BDG selon une hiérarchie de lecture de ses entrées, par exemple en conférant à sa première entrée Eo la plus haute priorité de lecture et à sa dernière entrée En la plus faible priorité de lecture. Ainsi, lors d'une lecture partielle des mots binaires qui lui sont présentés par l'unité BDG, l'unité Ul lit prioritairement les mots binaires présents sur des entrées Ei à plus haute priorité de lecture, soit ici à commencer par l'entrée E0, et renvoie à l'unité BDG l'information sur les mots binaires ayant été lus sous la forme d'un nombre "Nj" indiquant le nombre de données lues sur ses entrée, "j" étant un indice représentant le rang de l'étape de lecture venant d'être exécutée. Le nombre Nj est inclus dans le signal ACK2(Nj), ou forme le signal ACK2(Nj). In one embodiment, the unit U1 is configured to read the binary words w; provided by the BDG unit according to a hierarchy of reading of its inputs, for example by giving its first entry Eo the highest priority of reading and its last entry In the most low reading priority. Thus, during a partial reading of the binary words presented to it by the BDG unit, the unit U1 firstly reads the binary words present on entries Ei with the highest priority of reading, ie here starting with the entry E0, and returns to the BDG unit the information on the binary words having been read in the form of a number "Nj" indicating the number of data read on its input, "j" being an index representing the rank of the reading step just executed. The number Nj is included in the signal ACK2 (Nj), or forms the signal ACK2 (Nj).
Dans ce cas, l'unité BDG est configurée pour, après avoir reçu le nombre Nj, fournir à l'unité Ul les I-Nj mots binaires wi n'ayant pas été lus par l'unité Ul, ainsi que Nj mots binaires Wi' d'un ensemble de mots suivant W fourni par l'unité U0. A cet effet, l'unité BDG décale la position des I-Nj mots binaires wi sur ses sorties de manière que ceux-ci soient présentés sur ses sorties à plus haute priorité de lecture, et présente les Nj mots binaires wi' de l'ensemble de mots binaires suivant sur ses sorties à plus faible priorité. In this case, the unit BDG is configured to, after having received the number Nj, to supply to the unit Ul the I-Nj binary words wi that have not been read by the unit Ul, as well as Nj Wi-bit words of a set of words following W provided by the unit U0. For this purpose, the BDG unit shifts the position of the I-Nj binary words wi on its outputs so that they are presented on its outputs with the highest reading priority, and presents the Nj binary words wi 'of the set of next binary words on its lower priority outputs.
Pour fixer les idées, un exemple de séquence de mise en correspondance de mots binaires sera maintenant décrit. On suppose ici que I est égal à 8 et que l'unité U0 fournit successivement à l'unité BDG les ensembles de mots binaires Wl, W2, W3, W4, W5 suivants : For the sake of clarity, an example bit matching sequence will now be described. It is assumed here that I is equal to 8 and that the unit U0 successively supplies the BDG unit with the following sets of binary words W1, W2, W3, W4, W5:
Wl = aO al a2 a3 a4 a5 a6 a7 Wl = aO al a2 a3 a4 a5 a6 a7
W2 = b0 bl b2 b3 b4 b5 b6 b7 W2 = b0 bl b2 b3 b4 b5 b6 b7
W3 = cO cl c2 c3 c4 c5 c6 c7 W3 = cO cl c2 c3 c4 c5 c6 c7
W4 = dO dl d2 d3 d4 d5 d6 d7 W4 = dO dl d2 d3 d4 d5 d6 d7
W5 = eO el e2 e3 e4 e5 e6 e7 W5 = eO el e2 e3 e4 e5 e6 e7
Ces ensembles de mots binaires sont lus séquentiellement par l'unité BDG et sont considérés par celle-ci comme formant une chaîne de mots binaires ininterrompue, soit : aO al a2 a3 a4 a5 a6 a7 bO bl b2 b3 b4 b5 b6 b7 cO cl c2 c3 c4 c5 c6 c7 dO dl d2 d3 d4 d5 d6 d7 eO el e2 e3 e4 e5 e6 e7 dans laquelle l'unité BDG peut former des ensembles de mots binaires différents des ensembles de mots binaires initiaux qui constituent la chaîne de mots. Au commencement d'un cycle de lecture de données par l'unité Ul, l'unité BDG fourni tout d'abord à l'unité Ul l'ensemble de mots binaires Wl : aO al a2 a3 a4 a5 a6 a7 These sets of binary words are read sequentially by the unit BDG and are considered by it as forming an uninterrupted string of binary words, ie: aO al a2 a3 a4 a5 a6 a7 b0 b1 b2 b3 b4 b5 b6 b7 c0 c1 c2 c3 c4 c5 c6 c7 d0 d1 d2 d3 d4 d5 d6 d7 e0 el e2 e3 e4 e5 e6 e7 wherein the BDG unit can form sets of binary words different from the sets of initial binary words that make up the word chain. At the beginning of a data reading cycle by the unit U1, the unit BDG first supplies the unit U1 with the set of binary words W1: a01 a2 a3 a4 a5 a6 a7
On suppose ici qu'au cours d'une première étape de lecture, l'unité Ul lit les mots binaires aO à a4 et renvoie l'information NI =5 à l'unité BDG. Celle-ci fournit alors l'ensemble de mots binaires suivant, qui se retrouve sur les entrées E0 à En de l'unité Ul : a5 a6 a7 bO bl b2 b3 b4 It is assumed here that during a first reading step, the unit U1 reads the binary words a0 to a4 and returns the information N1 = 5 to the unit BDG. This then provides the following set of binary words, which is found on the inputs E 0 to En of the unit U1: a5 a6 a7 b0 b1 b2 b3 b4
On suppose également qu'au cours d'une étape de lecture suivante, l'unité Ul lit les mots binaires a5, a6, a7, bO et renvoie l'information N2=4 à l'unité BDG. Celle-ci fournit alors à l'unité Ul l'ensemble de mots binaires suivant : bl b2 b3 b4 b5 b6 b7 cO It is also assumed that during a next read step, the unit U1 reads the binary words a5, a6, a7, b0 and returns the information N2 = 4 to the BDG unit. This then supplies the unit Ul with the following set of binary words: b1 b2 b3 b4 b5 b6 b7 c0
On suppose ensuite qu'au cours d'une étape de lecture suivante, l'unité Ul lit les mots binaires bl à b7 et cO et renvoie l'information N3= 8 à l'unité BDG. Celle-ci fournit alors à l'unité Ul l'ensemble de mots binaires suivant : cl c2 c3 c4 c5 c6 c7 dO It is then assumed that during a next read step, the unit U1 reads the binary words b1 to b7 and c0 and returns the information N3 = 8 to the unit BDG. This then supplies the unit Ul with the following set of binary words: c2 c3 c4 c5 c6 c7 d0
On suppose ensuite qu'au cours d'une étape de lecture suivante, l'unité Ul lit les mots binaires cl à c7 et renvoie l'information N4=7 à l'unité BDG. Celle-ci fournit alors à l'unité Ul l'ensemble de mots binaires suivant : dO dl d2 d3 d4 d5 d6 d7 It is then assumed that during a next read step, the unit U1 reads the binary words c1 to c7 and returns the information N4 = 7 to the BDG unit. This then supplies the unit U1 with the following set of binary words: dO d1 d2 d3 d4 d5 d6 d7
On suppose enfin qu'au cours d'une étape de lecture suivante, l'unité Ul lit les mots binaires dO à d5, et renvoie l'information N5=6 à l'unité BDG. Celle-ci fournit alors à l'unité Ul l'ensemble de mots binaires suivant : d6 d7 eO el e2 e3 e4 e5 La figure 3 représente un mode de réalisation de l'unité BDG mettant en œuvre le procédé de mise en correspondance qui vient d'être décrit, avec hiérarchisation des entrées et utilisation du nombre Nj pour indiquer le nombre d'entrées à plus haute priorité lues au cours d'une étape de lecture de rang "j". L'unité BDG comprend deux registres d'entrée RI , R2, un circuit à réorganisation de données BS, ici un circuit à décalage circulaire, un registre de sortie R3 et un circuit de contrôle CCT1. Chaque registre comprend I cellules de registre pouvant chacun recevoir un mot binaire wi. Des entrées E0 à En du registre RI , correspondant chacune à une entrée d'une cellule du registre, sont reliées aux sorties So à Si_i de l'unité U0. De façon similaire, des entrées E0' à En ' du registre R2 sont reliées aux sorties So à Sn de l'unité U0. Des sorties So à Sn du registre RI , correspondant chacune à une sortie d'une cellule du registre, sont reliées à des entrées E0 à En du circuit à décalage circulaire BS. De façon similaire des sorties SO' à Sn' du registre R2 sont reliées à des entrées E0' à En' du circuit à décalage circulaire BS. Le circuit BS comprend des sorties So à Sn reliées à des entrées E0 à En du registre R3, qui comprend des sorties So à Sn reliées aux entrées E0 à En de l'unité Ul . Finally, it is assumed that during a next reading step, the unit U1 reads the binary words d0 to d5, and returns the information N5 = 6 to the unit BDG. This then supplies the unit U1 with the following set of binary words: d6 d7 e0 el e2 e3 e4 e5 FIG. 3 represents an embodiment of the BDG unit implementing the mapping method that has just been described, with hierarchisation of the inputs and use of the number Nj to indicate the number of higher priority entries read. during a reading step of rank "j". The BDG unit comprises two input registers R1, R2, a data reorganization circuit BS, here a circular shift circuit, an output register R3 and a control circuit CCT1. Each register comprises I register cells each capable of receiving a binary word wi. Entries E0 to En of the register R1, each corresponding to an input of a cell of the register, are connected to the outputs So to Si_i of the unit U0. Similarly, inputs E0 'to En' of the register R2 are connected to the outputs So to Sn of the unit U0. Outputs So to Sn of the register R1, each corresponding to an output of a cell of the register, are connected to inputs E 0 to En of the circular shift circuit BS. Similarly, the outputs SO 'to Sn' of the register R2 are connected to inputs E0 'to En' of the circular shift circuit BS. The circuit BS comprises outputs So to Sn connected to inputs E 0 to En of the register R3, which includes outputs So to Sn connected to the inputs E 0 to En of the unit U1.
Le circuit CCT1 gère les échanges de données avec l'unité U0 et l'unité Ul . Il reçoit le signal RDY1 et renvoie le signal ACK1 après avoir chargé dans l'un des registres RI , R2 un ensemble de mots binaires fourni par l'unité U0. Il reçoit également le signal ACK2(Nj) de l'unité Ul et lui envoie le signal RDY2 lorsqu'un nouvel ensemble de mots binaires a été chargé dans le registre R3. A cet effet, le circuit CCT1 applique un signal de chargement de données LDI au registre RI ou un signal de chargement de données LD2 au registre R2, et charge en alternance, dans chaque registre, les ensembles de mots binaires reçus de l'unité U0. Le circuit CCT1 s'assure que ces registres ne comprennent pas de données obsolètes ayant été lues par l'unité Ul en exécutant un procédé de mise à jour de ces registres dont un exemple sera décrit plus loin. The circuit CCT1 manages the data exchanges with the unit U0 and the unit Ul. It receives the signal RDY1 and returns the signal ACK1 after having loaded into one of the registers R1, R2 a set of binary words provided by the unit U0. It also receives the signal ACK2 (Nj) from the unit U1 and sends it the signal RDY2 when a new set of binary words has been loaded into the register R3. For this purpose, the circuit CCT1 applies an LDI data loading signal to the register RI or a data loading signal LD2 to the register R2, and alternately charges, in each register, the sets of binary words received from the unit U0. . The circuit CCT1 ensures that these registers do not include obsolete data having been read by the unit U by executing a method of updating these registers, an example of which will be described later.
Le circuit CCT1 applique également un signal de décalage SHIFT au circuit BS, avec comme valeur de ce signal la dernière valeur Nj reçue de l'unité Ul , indiquant le nombre de mots binaires lus par celle-ci. Après avoir appliqué le signal SHIFT au circuit BS, le circuit CCT1 charge les mots binaires fournis par les sorties So à Sn du circuit BS dans le registre de sortie R3, en appliquant à celui-ci un signal LD3, et envoie le signal RDY2 à l'unité Ul . La figure 4 est un organigramme décrivant un exemple de configuration du circuit CCT1 , celui-ci étant par exemple réalisé sous forme d'automate fini ou "FSM" ("Finite State Machine"). On distingue des étapes B00 à B08 et des étapes COO à C04. Les étapes BOO à B08 se rapportent à la gestion des échanges de données avec les unités UO, Ul et au contrôle des décalages exécutés au moyen du circuit BS. Les étapes COO à C04 forment une boucle de mise à jour des registres RI, R2. The circuit CCT1 also applies a shift signal SHIFT to the circuit BS, with the value of this signal the last value Nj received from the unit U1, indicating the number of binary words read by it. After having applied the signal SHIFT to the circuit BS, the circuit CCT1 loads the binary words provided by the outputs So to Sn of the circuit BS into the output register R3, by applying a signal LD3 thereto, and sends the signal RDY2 to the unit Ul. FIG. 4 is a flowchart describing an exemplary configuration of the circuit CCT1, this being for example realized in the form of a finite state machine or "FSM"("FiniteState"). Machine "). B00 to B08 and steps COO to C04 are distinguished: The steps BO0 to B08 relate to the management of the data exchanges with the units U0, U1 and the control of the offsets executed by means of the circuit BS. The steps COO to C04 form an update loop of the registers R1, R2.
Les étapes BOO à B05 visent à initialiser l'unité BDG au commencement d'un cycle de transfert de données entre les unités UO et Ul . A l'étape BOO, le circuit CCT1 attend que le signal RDY1 soit reçu de l'unité BO, puis charge le registre RI et renvoie le signal ACK1 à l'étape B01. A l'étape B02, le circuit CCT1 attend que le signal RDY1 soit reçu de l'unité BO, puis charge le registre R2 et envoie le signal ACK1 à l'étape B03. A l'étape B04, le circuit CCT1 applique le signal SHIFT=0 au circuit à décalage circulaire BS. A l'étape B05, le circuit CCT1 charge le registre R3 et envoie le signal RDY2 à l'unité Ul . The steps BO0 to B05 are intended to initialize the BDG unit at the beginning of a data transfer cycle between the units U0 and U1. In step BOO, the circuit CCT1 waits for the signal RDY1 to be received from the unit BO, then loads the register R1 and sends the signal ACK1 to the step B01. In step B02, the circuit CCT1 waits for the signal RDY1 to be received from the unit BO, then loads the register R2 and sends the signal ACK1 to the step B03. In step B04, the circuit CCT1 applies the signal SHIFT = 0 to the circular shift circuit BS. In step B05, the circuit CCT1 loads the register R3 and sends the signal RDY2 to the unit U1.
A l'étape B06, le circuit CCT1 attend de recevoir l'accusé de réception de lecture ACK2 de l'unité Ul, incluant (ou formé par) le nombre Nj de mots binaires lus par l'unité Ul . Lorsque cette information est reçue, le circuit CCT1 va à l'étape COI pour exécuter la boucle de mise à jour des registres RI, R2, avant d'aller à l'étape B07 au cours de laquelle il applique le signal SHIFT=Nj au circuit à décalage circulaire BS. A l'étape B08, le circuit CCT1 charge le registre R3 avec les données fournies par le circuit BS et envoie le signal RDY2 à l'unité Ul, puis retourne à l'étape B06 pour attendre un nouvel accusé de réception de lecture de la part de l'unité Ul et le nombre Nj correspondant. In step B06, the circuit CCT1 waits to receive the read acknowledgment ACK2 from the unit U1, including (or formed by) the number Nj of binary words read by the unit U1. When this information is received, the circuit CCT1 goes to the step COI to execute the update loop of the registers R1, R2, before going to the step B07 during which it applies the signal SHIFT = Nj to circular shift circuit BS. In step B08, the circuit CCT1 loads the register R3 with the data supplied by the circuit BS and sends the signal RDY2 to the unit U1, then returns to the step B06 to wait for a new acknowledgment of receipt of the reading. part of the unit Ul and the corresponding number Nj.
La boucle de mise à jour des registres comprend une étape d'initialisation COO pouvant être exécutée lors de l'initialisation de l'unité BDG (étapes BOO à B05), au cours de laquelle le circuit CCT1 met à zéro une variable "r" ainsi qu'une variable "∑Nj" égale à la somme des nombres Nj reçus de l'unité Ul depuis la dernière remise à zéro de cette variable. The register update loop includes a COO initialization step that can be executed during the initialization of the BDG unit (steps BO0 to B05), during which the circuit CCT1 sets a variable "r" to zero. and a variable "ΣNj" equal to the sum of the numbers Nj received from the unit U1 since the last reset of this variable.
A l'étape C01, le circuit CCT1 mémorise la dernière valeur Nj reçue à l'étape B06 et rafraîchit la variable∑Nj en ajoutant à sa valeur précédente la nouvelle valeur Nj reçue. A l'étape C02, le circuit CCT1 détermine si "r+∑Nj" est supérieur ou égal à I, I étant le nombre de mots binaires circulant en parallèle sur les bus Bi ou encore le nombre de bus Bi. Si la réponse est positive, le circuit CCT1 va à l'étape C03, sinon sort de la boucle et va à l'étape B07. A l'étape C03, le circuit CCT1 vérifie que le signal RDY1 a été émis par l'unité U0, sinon attend que ce signal soit reçu. Lorsque le signal RDY1 est reçu, le circuit CCT1 va à l'étape C04 où il exécute les opérations suivantes : - le circuit CCT1 charge dans le registre RI ou dans le registre R2 le nouvel ensemble de mots binaires fourni par l'unité UO. Le premier registre mis à jour au cours de l'étape C04 après les étapes d'initialisation B01 et B03 est le registre RI . Ensuite, lors d'une nouvelle exécution de l'étape C04, le circuit CCT1 charge le registre R2, et ainsi de suite de manière que les registres RI , R2 soient mis à jour en alternance, In step C01, the circuit CCT1 stores the last value Nj received in step B06 and refreshes the variableΣNj by adding to its previous value the new value Nj received. In step C02, the circuit CCT1 determines whether "r + ΣNj" is greater than or equal to I, I being the number of binary words flowing in parallel on the buses Bi or the number of buses Bi. If the answer is positive, the circuit CCT1 goes to the step C03, if not out of the loop and goes to the step B07. In step C03, the circuit CCT1 verifies that the signal RDY1 has been sent by the unit U0, otherwise waits for this signal to be received. When the signal RDY1 is received, the circuit CCT1 goes to the step C04 where it performs the following operations: the circuit CCT1 loads in the register RI or in the register R2 the new set of binary words provided by the unit UO. The first register updated in step C04 after the initialization steps B01 and B03 is the register R1. Then, during a new execution of the step C04, the circuit CCT1 loads the register R2, and so on so that the registers RI, R2 are updated alternately,
- le circuit CCT1 envoie le signal ACK1 à l'unité UO, the circuit CCT1 sends the signal ACK1 to the unit UO,
- le circuit CCT1 met à jour la variable r au moyen de la relation "r = (r +∑Nj) mod I". Ainsi, la nouvelle valeur de r est égale au reste de la division modulaire de la somme de sa valeur précédente et de la variable∑Nj. Après cette mise à jour, la variable r représente le nombre de décalages au-delà de I ou d'un multiple de I ayant été appliqués aux données figurant dans les registres RI, R2, - le circuit CCT1 met à zéro la variable∑Nj. Les décalages successifs modulo I depuis la dernière remise à zéro de cette variable sont en effet désormais inclus dans la nouvelle valeur de r. the circuit CCT1 updates the variable r by means of the relation "r = (r + ΣNj) mod I". Thus, the new value of r is equal to the remainder of the modular division of the sum of its previous value and the variable Nj. After this update, the variable r represents the number of offsets beyond I or a multiple of I having been applied to the data in the registers RI, R2, - the circuit CCT1 sets the variable ΣNj to zero. . The successive offsets modulo I since the last reset of this variable are indeed now included in the new value of r.
La figure 4 montre également des étapes P00 à P02 conduites par l'unité Ul . Au cours d'une étape P00, l'unité Ul attend de recevoir le signal RDY2. Lorsque ce signal est reçu, l'unité Ul exécute une étape P01 où elle lit Nj mots binaires wi parmi l'ensemble de mots binaires fourni par le registre R3 de l'unité BDG, et envoie le signal ACK2(Nj) au circuit CCT1. Au cours d'une étape P02, l'unité Ul traite les données lues, puis retourne à l'étape P00 pour vérifier que le signal RDY2 a été réémis par le circuit CCT1 ou attendre que ce signal soit réémis avant de réitérer l'étape P01. FIG. 4 also shows steps P00 to P02 conducted by the unit Ul. During a step P00, the unit U1 expects to receive the signal RDY2. When this signal is received, the unit U1 performs a step P01 where it reads Nj binary words wi from the set of binary words provided by the register R3 of the BDG unit, and sends the signal ACK2 (Nj) to the circuit CCT1 . During a step P02, the unit U1 processes the data read, then returns to step P00 to verify that the signal RDY2 has been re-transmitted by the circuit CCT1 or wait for this signal to be re-transmitted before repeating the step P01.
Dans un mode de réalisation, le nombre de mots binaires nécessaire à l'exécution de l'étape de traitement P02 peut être supérieur à I. Dans ce cas, l'unité Ul lit plusieurs fois ses entrées Eo à En avant de traiter les données lues. Par exemple, l'unité Ul lit successivement plusieurs ensembles de I données en renvoyant après chaque lecture la valeur Nj=I, puis, lors d'une dernière étape de lecture, lit Nj mots binaires avec Nj < I de l'ensemble de mots binaires qui lui est fourni. Ainsi, l'unité Ul exécute les étapes P00 et P01 plusieurs fois avant d'exécuter l'étape de traitement P02. In one embodiment, the number of binary words necessary for the execution of the processing step P02 may be greater than I. In this case, the unit U1 reads several times its inputs Eo to In before processing the data. read. For example, the unit U1 reads successively several sets of I data by returning after each reading the value Nj = I, then, during a last reading step, reads Nj binary words with Nj <I of the set of words binaries that is provided to him. Thus, the unit U1 performs steps P00 and P01 several times before executing the processing step P02.
Dans un autre mode de réalisation, l'unité Ul renvoie au circuit CCT1 un nombre Nj inférieur au nombre de mots binaires lus sur ses entrées, afin que certains mots binaires lus soient de nouveau présentés sur ses entrées pour la prochaine étape de lecture. Ce mode de réalisation met en évidence le fait que le nombre Nj constitue, par essence, une instruction de purge de certains mots binaires de l'ensemble de mots binaires initialement présenté à l'unité NI, plutôt qu'une information sur le nombre de mots binaires que l'unité Ul a lus. In another embodiment, the unit U1 returns to the circuit CCT1 a number Nj less than the number of binary words read on its inputs, so that certain binary words read are presented again on its entries for the next reading step. This embodiment highlights the fact that the number Nj constitutes, in essence, a purge instruction of certain binary words of the set of binary words initially presented to the unit NI, rather than information on the number of words. binary words that the unit Ul read.
Dans d'autres modes de réalisation, l'unité Ul peut être un circuit dans lequel des données sont écrites. Le nombre Nj représente alors le nombre de mots binaires écrits dans l'unité Ul . Le terme "lire des mots binaires" utilisé ici et dans les revendications pour désigner une opération de réception et de traitement de mots binaires par l'unité Ul, peut donc également correspondre à une opération de réception de mots binaires qui sont écrits dans l'unité Ul . Les entrées à plus haute priorité de lecture sont alors des entrées à plus haute priorité d'écriture. Le terme "lecture" doit donc être compris au sens large comme désignant une opération de réception de données pour un traitement déterminé qui peut correspondre à une écriture des données dans l'unité Ul . In other embodiments, the unit U1 may be a circuit in which data is written. The number Nj then represents the number of binary words written in the unit U1. The term "read binary words" as used herein and in the claims for designating an operation for receiving and processing binary words by the unit U1, can therefore also correspond to a receiving operation of binary words which are written in the Ul unit. The higher read priority inputs are then higher write priority inputs. The term "read" should therefore be understood in the broad sense to mean a data receiving operation for a given processing which may correspond to a writing of the data in the unit U1.
Un autre mode de réalisation de l'unité Ul peut mettre en œuvre un procédé de mise en correspondance des données sans hiérarchisation des entrées. L'unité Ul fournit alors à l'unité BDG, au lieu du nombre Nj, une information sur les mots binaires wi dont elle n'a plus besoin (données à purger). Ces mots binaires ne sont pas nécessairement de rangs "i" adjacents. L'unité Ul peut également indiquer dans quel ordre les I-Nj mots binaires n'ayant pas été lus (ou qui ont été lus mais qu'elle souhaite de nouveau recevoir) doivent être appliqués à ses entrées. Dans un tel mode de réalisation, le circuit BS est un circuit à réorganisation de données de type "transversal" ("crossbar ") pouvant relier n'importe quelle de ses entrées à n'importe quelle de ses sorties. Another embodiment of the unit U1 can implement a method of matching the data without hierarchical entries. The unit U1 then supplies the BDG unit, instead of the number Nj, with information on the binary words wi which it no longer needs (data to be purged). These binary words are not necessarily of adjacent "i" ranks. The unit U1 can also indicate in which order the I-Nj binary words which have not been read (or which have been read but which it wishes to receive again) must be applied to its inputs. In such an embodiment, the circuit BS is a "crossbar" type data reorganization circuit capable of connecting any of its inputs to any of its outputs.
La séquence de mise en correspondance décrite plus haut est illustrée sur la figure 5 avec indication des étapes correspondantes exécutées parmi les étapes susdécrites B00-B08, C00-C04. "I" est comme précédemment supposé égal à 8. La figure 5 est décrite en Annexe, qui fait partie intégrante de la description. The mapping sequence described above is illustrated in FIG. 5 with indication of the corresponding steps performed among the above-described steps B00-B08, C00-C04. "I" is as previously assumed to be 8. FIG. 5 is described in the Appendix, which forms an integral part of the description.
Dans encore d'autres modes de réalisation, l'unité de mise en correspondance BDG peut être configurée pour réaliser l'étape C04 en tant qu'étape de préchargement ("prefetch") avant que le nombre Nj ne soit reçu, afin de réduire le nombre de cycles d'horloge nécessaire au transfert des données de l'unité U0 à l'unité Ul . Cette étape de préchargement peut être assurée en ajoutant un troisième registre d'entrée en parallèle avec les registres RI R2 et dont les sorties sont reliées à des entrées supplémentaires du circuit à décalage circulaire BS. De nouvelles données peuvent être préchargées dans l'un des trois registres d'entrée sans attendre de savoir quelles sont les données présentes dans les deux autres registres qui ont été lues par l'unité Ul . Dans un autre mode de réalisation, les sorties du registre R3 sont renvoyées sur des entrées supplémentaires du circuit BS. S'il s'avère à réception du nombre Nj que des données présentes dans registre R3 n'ont pas été lues par l'unité Ul mais ne sont plus présentes dans leur registre d'origine RI, R2 car son contenu a été renouvelé, ces données peuvent être renvoyées au circuit BS à partir du registre R3 pour être rechargées dans le registres R3 après décalage et combinaison avec de nouvelles données. In yet other embodiments, the BDG mapping unit may be configured to perform step C04 as a prefetch step before the number Nj is received, in order to reduce the number of clock cycles required to transfer the data from the unit U0 to the unit Ul. This preloading step can be ensured by adding a third input register in parallel with the registers RI R2 and whose outputs are connected to additional inputs of the shift circuit circular BS. New data can be preloaded into one of the three input registers without waiting to know which data is present in the other two registers that have been read by the unit U1. In another embodiment, the outputs of the register R3 are returned to additional inputs of the circuit BS. If it proves on receipt of the number Nj that data present in register R3 have not been read by the unit Ul but are no longer present in their original register RI, R2 because its content has been renewed, these data can be returned to the circuit BS from the register R3 to be reloaded in the register R3 after shift and combination with new data.
La figure 6 représente des étapes d'un procédé de réalisation d'un circuit FPGA selon l'invention. On distingue : FIG. 6 represents steps of a method for producing an FPGA circuit according to the invention. We distinguish :
- une étape FOI de description de la fonction de traitement de données visée (description fonctionnelle) dans un langage à haut niveau d'abstraction et en utilisant une variable non typée,  a step FOI describing the target data processing function (functional description) in a high level of abstraction language and using an untyped variable,
- une étape F02 de définition des contraintes matérielles du circuit, notamment le nombre de bus parallèles, la fréquence d'horloge ou les fréquences d'horloge si le dispositif comprend des blocs de traitement ayant des fréquences d'horloges différentes, etc., a step F02 for defining the hardware constraints of the circuit, in particular the number of parallel buses, the clock frequency or the clock frequencies if the device comprises processing blocks having different clock frequencies, etc.,
- une étape F03 de compilation de la description fonctionnelle dans une architecture cible utilisant une unité BDG selon l'invention, en tenant compte des contraintes matérielles, pour obtenir une description matérielle HDL du dispositif, ou circuit HDL. a step F03 of compiling the functional description in a target architecture using a BDG unit according to the invention, taking into account the hardware constraints, to obtain an HDL hardware description of the device, or HDL circuit.
- une étape F04 de configuration du circuit FPGA par synthèse logique et placement routage du circuit HDL, pour l'obtention d'un flot de données de configuration ("bitstream") qui est chargé dans la mémoire du circuit FPGA pour obtenir un circuit FPGA opérationnel.  a step F04 for configuring the FPGA circuit by logical synthesis and routing placement of the HDL circuit, in order to obtain a stream of configuration data (bitstream) which is loaded into the memory of the FPGA circuit to obtain an FPGA circuit operational.
Au cours d'une étape F05, le circuit FPGA est testé dans des conditions réelles de fonctionnement ou dans un environnement de simulation. Le procédé de réalisation s'achève à une étape F06 si le circuit est jugé satisfaisant. Dans la négative, on revient à l'étape F02 pour redéfinir les contraintes matérielles. Cette étape peut comprendre le fait de définir un nombre différent de bus parallèles, par exemple pour augmenter le degré de parallélisme du dispositif. Grâce à l'utilisation d'une unité de mise en correspondance (ou d'une pluralité d'unités de mise en correspondance en amont de plusieurs unités de traitement pouvant être concernées par le redimensionnement du circuit) cette étape ne nécessite pas de modifier la description fonctionnelle du circuit. En d'autres termes, il n'est pas nécessaire de retourner à l'étape FOI . Les étapes F03 de compilation et d'obtention d'une description matérielle, et F04 de synthèse logique et placement routage, sont exécutées sur la base de la nouvelle définition des contraintes matérielles. Au terme de l'étape de test F05, un nouveau cycle d'optimisation comprenant les étapes F02, F03, F04 peut éventuellement être conduit et ce jusqu'à obtention d'une configuration optimale du circuit FPGA. During a step F05, the FPGA circuit is tested under actual operating conditions or in a simulation environment. The production method ends at a step F06 if the circuit is considered satisfactory. If not, return to step F02 to redefine the hardware constraints. This step may include defining a different number of parallel buses, for example to increase the degree of parallelism of the device. By using a mapping unit (or a plurality of matching units upstream of several processing units that may be affected by resizing the circuit) this step does not require changing the functional description of the circuit. In other words, it is not necessary to return to the FOI step. F03 stages of compilation and obtaining of a hardware description, and F04 of logical synthesis and routing placement, are executed on the basis of the new definition of the hardware constraints. At the end of the test step F05, a new optimization cycle comprising the steps F02, F03, F04 can optionally be conducted until an optimal configuration of the FPGA circuit is obtained.
Le procédé de réalisation qui vient d'être décrit est illustré sur les figures 7A, 7B, 7C. Ces figures montrent trois variantes DV2a, DV2b, DV2c du dispositif DV2 réalisant la même fonction de traitement mais présentant des degrés de parallélisme différents retenus à l'étape F02 de définition des contraintes matérielles. Le dispositif DV2a présente une architecture à deux bus parallèles, le dispositif DV2b une architecture à quatre bus parallèles et le dispositif DV2c une architecture à huit bus parallèles. L'unité Ul est désignée respectivement Ula, Ulb, Ulc et l'unité BDG est désignée respectivement BDGa, BDGb, BDGc dans chacune des variantes. The embodiment method that has just been described is illustrated in FIGS. 7A, 7B, 7C. These figures show three variants DV2a, DV2b, DV2c of the device DV2 performing the same processing function but having different degrees of parallelism retained in the step F02 of definition of the hardware constraints. The DV2a device has a dual parallel bus architecture, the DV2b device has a four parallel bus architecture and the DV2c device has an eight parallel bus architecture. The unit U1 is designated Ula, Ulb, Ulc and the BDG unit is designated BDGa, BDGb, BDGc in each of the variants, respectively.
Dans le mode de réalisation choisi ici à titre d'exemple, l'unité Ul (Ula, Ulb, Ulc) est un circuit à huit entrées E0 à E7 pouvant calculer la valeur moyenne de données fournies sur toute ou partie de ses entrées. Selon une hypothèse prise ici à titre d'exemple et faisant partie de la définition fonctionnelle du dispositif DV2, l'unité Ul est configurée ici pour calculer la valeur moyenne de 6 mots binaires fournis sur ses entrées. L'unité Ul comprend à cet effet un circuit de contrôle CCT2 (CCT2a, CCT2b, CCT2c), une banque de 8 registres d'entrée rO, rl, r2... r7, l'entrée de chaque registre formant une entrée E0, El, E2...E7 de l'unité Ul . Le circuit de contrôle CCT2 commande le chargement des registres rO à r7 au moyen de signaux de chargement LDOl à LD07. Les sorties des registres sont appliquées à un additionneur ADD. La sortie de l'additionneur ADD est appliquée à un circuit diviseur DIV/N configuré ici en diviseur par 6 (DIV/6) dont la sortie fournit le résultat R du calcul de valeur moyenne. In the embodiment chosen here by way of example, the unit Ul (Ula, Ulb, Ulc) is an eight-input circuit E0 to E7 that can calculate the average value of data provided on all or part of its inputs. According to an assumption taken here by way of example and forming part of the functional definition of the device DV2, the unit U1 is configured here to calculate the average value of 6 binary words provided on its inputs. The unit U1 comprises for this purpose a control circuit CCT2 (CCT2a, CCT2b, CCT2c), a bank of 8 input registers r0, r1, r2 ... r7, the input of each register forming an input E0, El, E2 ... E7 of the unit Ul. The control circuit CCT2 controls the loading of the registers r0 to r7 by means of charging signals LDO1 to LD07. The outputs of the registers are applied to an adder ADD. The output of the adder ADD is applied to a dividing circuit DIV / N configured here as a divider by 6 (DIV / 6) whose output provides the result R of the average value calculation.
Dans la variante DV2a, figure 7 A, l'unité Ula est reliée à une unité de mise en correspondance BDGa ayant deux sorties S0, SI et deux entrées reliées à deux sorties d'une unité UOa de fourniture de données. Les entrées E0, El, E2 des registres rO, rl, r2 sont reliées à la sortie S0 et les entrées E4, E5, E6 des registres r4, r5, r6 sont reliées à la sortie SI . Les registres r3, r7 et leur signaux de chargement LD03, LD07 ne sont pas utilisés. Ces registres peuvent être supprimés, ou être reliés aux sorties S0, SI et leur contenu maintenu à 0. Lorsque le dispositif DV2a est en opération, l'unité Ula reçoit de l'unité BDGa des ensembles W, W, W" de deux mots binaires et le circuit CCT2a renvoie après chaque chargement de deux mots binaires la commande ACK2(Nj) avec Nj=2. Des mots wO et wl de l'ensemble W sont chargés dans les registres rO et r4, des mots wO', wl' de l'ensemble W sont chargés dans les registres rl, r5 et des mots wO", wl" de l'ensemble W" sont chargés dans les registres r2, r6. Le circuit CCT2a active ensuite le diviseur DIV/6 qui fournit le résultat R de la valeur moyenne. In the variant DV2a, FIG. 7A, the unit Ula is connected to a matching unit BDGa having two outputs S0, S1 and two inputs connected to two outputs of a data supply unit UOa. The inputs E0, E1, E2 of the registers r0, r1, r2 are connected to the output S0 and the inputs E4, E5, E6 of the registers r4, r5, r6 are connected to the output S1. Registers r3, r7 and their loading signals LD03, LD07 are not used. These registers can be deleted, or be connected to the outputs S0, SI and their contents maintained at 0. When the device DV2a is in operation, the unit Ula receives from the unit BDGa sets W, W, W "of two binary words and the circuit CCT2a returns after each loading of two binary words the command ACK2 (Nj) with Nj = W0 and w1 of the set W are loaded into the registers r0 and r4, words w0 ', w1' of the set W are loaded into the registers r1, r5 and words w0 ", w1" of the set W "are loaded into the registers r2, r6. The circuit CCT2a then activates divider DIV / 6 which provides the result R of the average value.
Dans la variante DV2b, figure 7B, l'unité Ulb est reliée à une unité de mise en correspondance BDGb ayant quatre sorties S0, SI, S2, S3 et quatre entrées reliées à quatre sorties d'une unité UOb de fourniture de données. Les entrées E0, El des registres rO, rl sont reliées à la sortie S0, les entrées E2, E3 des registres r2, r3 sont reliées à la sortie SI , l'entrée E4 du registre r4 est reliée à la sortie S2 et l'entrée E6 du registre r6 est reliée à la sortie S3. Les registres r5, r7 et leur signaux de chargement LD05, LD07 ne sont pas utilisés. Ces registres peuvent être supprimés ou être reliés aux sorties S2, S3 et leur contenu maintenu à 0. In the variant DV2b, FIG. 7B, the unit Ulb is connected to a matching unit BDGb having four outputs S0, S1, S2, S3 and four inputs connected to four outputs of a data supply unit UOb. The inputs E0, E1 of the registers r0, r1 are connected to the output S0, the inputs E2, E3 of the registers r2, r3 are connected to the output S1, the input E4 of the register r4 is connected to the output S2 and the input E6 of the register r6 is connected to the output S3. Registers r5, r7 and their load signals LD05, LD07 are not used. These registers can be deleted or connected to the outputs S2, S3 and their content maintained at 0.
Lorsque le dispositif DV2b est en opération, l'unité Ulb reçoit de l'unité BDGb des ensembles W, W de quatre mots binaires. Le circuit CCT2b charge les mots wO, wl, w2, w3 de l'ensemble W dans les registres rO, r2, r4, r6 et renvoie la commande ACK2(Nj) avec Nj=4. Le circuit CCT2b charge ensuite des mots wO', wl' de l'ensemble W dans les registres rl, r3 et renvoie la commande ACK2(Nj) avec Nj=2. Le circuit CCT2b active ensuite le diviseur DIV/6 qui fournit le résultat R de la valeur moyenne. Sur réception de la commande ACK2(2), l'unité BDGb décale sur ses sorties S0, SI la position de deux mots non lus w2', w3' du second ensemble de mot W, initialement présentés sur ses sorties S2, S3, et présente sur ces dernières des mots d'un nouvel ensemble de mots reçu. When the device DV2b is in operation, the unit Ulb receives from the BDGb unit sets W, W of four binary words. The circuit CCT2b loads the words wO, w1, w2, w3 of the set W into the registers r0, r2, r4, r6 and returns the command ACK2 (Nj) with Nj = 4. The circuit CCT2b then loads words w0 ', wl' of the set W into the registers r1, r3 and returns the command ACK2 (Nj) with Nj = 2. The circuit CCT2b then activates divider DIV / 6 which provides the result R of the average value. On reception of the command ACK2 (2), the unit BDGb shifts on its outputs S0, SI the position of two unread words w2 ', w3' of the second set of words W, initially presented on its outputs S2, S3, and presents on these last words of a new set of words received.
Dans la variante DV2c, figure 7C, l'unité Ulc est reliée à une unité de mise en correspondance BDGc ayant huit sorties S0, SI, S2, S3, S4, S5, S6, S7 et huit entrées reliées à huit sorties d'une unité UOc de fourniture de données. Les entrées E0, El, E2, E3, E4, E5 des registres rO, rl, r2, r3, r4, r5 sont reliées aux sorties S0, SI, S2, S3, S4, S5, respectivement. Les registres r6, r7 et leur signaux de chargement LD06, LD07 ne sont pas utilisés. Ces registres peuvent être supprimés ou être reliés aux sorties S6, S7 et leur contenu maintenu à 0. Lorsque le dispositif DV2c est en opération, l'unité BDGc fournit à l'unité Ulc des ensembles W de huit mots binaires. Le circuit CCT2c charge 6 mots binaires wO à w5 dans les registres rO à r5 et renvoie la commande ACK2(Nj) avec Nj=6. Sur réception de la commande ACK2(6), l'unité BDGc décale la position de deux mots non lus w6, w7 de l'ensemble de mot W, initialement présentés sur ses sorties S6, S7, sur ses sorties S0, SI, et présente sur les sortie S2 à S7 des mots d'un nouvel ensemble de mots reçu. In the variant DV2c, FIG. 7C, the unit Ulc is connected to a BDGc matching unit having eight outputs S0, S1, S2, S3, S4, S5, S6, S7 and eight inputs connected to eight outputs of a UOc data supply unit. The inputs E0, E1, E2, E3, E4, E5 of the registers r0, r1, r2, r3, r4, r5 are connected to the outputs S0, S1, S2, S3, S4, S5, respectively. Registers r6, r7 and their load signals LD06, LD07 are not used. These registers can be deleted or connected to the outputs S6, S7 and their content maintained at 0. When the device DV2c is in operation, the BDGc unit supplies the unit Ulc with sets W of eight binary words. The circuit CCT2c loads 6 binary words w0 to w5 in the registers r0 to r5 and returns the command ACK2 (Nj) with Nj = 6. Upon reception of the command ACK2 (6), the BDGc unit shifts the position of two unread words w6, w7 of the word set W, initially presented on its outputs S6, S7, on its outputs S0, S1, and present on the outputs S2 to S7 words of a new set of words received.
Grâce à l'utilisation de l'unité BDG prises dans ses variantes BDGa, BDGb, BDGc, les trois variantes correspondantes DV2a, DV2b, DV2c du dispositif DV2 sont générées à partir de la même description fonctionnelle. Par exemple, en référence à la figure 6, la variante DV2a a été réalisée au cours des étapes F03 et F04 après avoir choisi, au cours de l'étape F02, une architecture à deux bus parallèles. La variante DV2b a été réalisée au cours des étapes F03 et F04 après que l'étape de test F05 a montré que l'architecture à deux bus de la variante DV2a n'était pas optimale, et après retour à l'étape F02 pour augmenter le nombre de bus parallèles, ainsi qu'éventuellement d'autres variables telle que la fréquence d'horloge. La variante DV2c a été réalisée après que l'étape de test F05 a montré que l'architecture à quatre bus parallèles de la variante DV2b n'était pas optimale, ou pour d'autres raisons, par exemple parce que le test d'autres parties du circuit a montré qu'une architecture à huit bus parallèles était souhaitable également sur cette partie du circuit FPGA. Thanks to the use of the BDG unit taken in its variants BDGa, BDGb, BDGc, the three corresponding variants DV2a, DV2b, DV2c of the device DV2 are generated from the same functional description. For example, with reference to FIG. 6, variant DV2a was carried out during steps F03 and F04 after having chosen, during step F02, a two parallel bus architecture. The variant DV2b was carried out during the steps F03 and F04 after the test step F05 showed that the two-bus architecture of the variant DV2a was not optimal, and after returning to the step F02 to increase the number of parallel buses, as well as possibly other variables such as the clock frequency. The DV2c variant was carried out after the F05 test step showed that the parallel four-bus architecture of the DV2b variant was not optimal, or for other reasons, for example because the test of other parts of the circuit showed that an architecture with eight parallel buses was also desirable on this part of the FPGA circuit.
En l'absence de l'unité BDG, le procédé de réalisation du circuit FPGA montré sur la figure 6 devrait inclure un retour à l'étape FOI pour réécriture de la description fonctionnelle de l'unité Ul, prenant en compte la réception par 2, 4 ou 8 bits des six mots binaires nécessaires au calcul d'une valeur moyenne par l'unité Ul . Comme indiqué plus haut, il y aurait alors "contamination" des contraintes matérielles sur la définition fonctionnelle. In the absence of the BDG unit, the method of producing the FPGA circuit shown in Fig. 6 should include a return to step FOI for rewriting the functional description of the unit U1, taking into account the reception by 2 , 4 or 8 bits of the six binary words needed to calculate an average value by the unit Ul. As indicated above, there would then be "contamination" of material constraints on the functional definition.
Selon un aspect de certains modes de réalisation de l'invention, on ajoute une instruction de déclaration d'une variable non typée, c'est-à-dire de taille non spécifiée, au langage de programmation à haut niveau d'abstraction utilisé à l'étape FOI . Le compilateur HLS met en œuvre la variable non typée au cours de l'étape F03 en utilisant une architecture cible comprenant l'unité de mise en correspondance BDG et en configurant l'unité BDG ainsi que l'unité Ul en fonction du nombre de bus parallèles, pour obtenir les configurations BDGa, BDGb, BDGc et Ula, Ulb, Ulc susdécrites. Les contraintes matérielles peuvent ainsi être modifiées après la phase de test F05 sans nécessiter une réécriture de la description de la fonction exécutée par l'unité Ul puisque cette fonction est indépendante de la structure matérielle de l'unité Ul grâce à l'utilisation de la variable non typée. According to one aspect of some embodiments of the invention, an instruction to declare an untyped variable, i.e., of unspecified size, to the high level of abstraction programming language used is step FOI. The HLS compiler implements the untyped variable in step F03 using a target architecture including the BDG mapping unit and configuring the BDG unit as well as the unit U1 based on the number of buses. parallel, to obtain the configurations BDGa, BDGb, BDGc and Ula, Ulb, Ulc abovedescribed. The material constraints can thus be modified after the test phase F05 without requiring a rewrite of the description of the function executed by the unit U1 since this function is independent of the material structure of the unit U1 through the use of the untyped variable.
Le programme en pseudo-langage C ci-dessous est un exemple de description fonctionnelle de la fonction de calcul d'une valeur moyenne exécutée par l'unité Ul du dispositif DV2 (DV2a, DV2b, DV2c). L'instruction permettant de déclarer une variable non typée est désignée t untyped dans cet exemple et "bus" constitue donc la variable d'entrée du programme, qui est non typée. "StaticAverage" est une fonction dont le retour est de type "int" (soit integer" soit un nombre entier). "ReadBus" est une fonction complémentaire de lecture de la variable non typée. Les variables "sample", "sum" et "count" sont des entiers ("int"). N est un entier de valeur constante ("const int"). int StaticAverage (t_untyped bus) The program in pseudo-language C below is an example of a functional description of the calculation function of a mean value executed by the unit U1 of the device DV2 (DV2a, DV2b, DV2c). The instruction to declare an untyped variable is designated t untyped in this example and "bus" is the input variable of the program, which is untyped. "StaticAverage" is a function whose return is of type "int" (either integer "or an integer)." ReadBus "is a complementary function of reading the untyped variable." Sample "," sum "and" variable "variables. "count" are integers ("int") N is an integer of constant value ("const int"). int StaticAverage (t_untyped bus)
{ {
int sample;  int sample;
int sum = 0;  int sum = 0;
int count = 0;  int count = 0;
const int N = 6;  const int N = 6;
while (count < N) {  while (count <N) {
sample = ReadBus(bus);  sample = ReadBus (bus);
sum = sum + sample;  sum = sum + sample;
count = count + 1 ;  count = count + 1;
}  }
return sum/count;  return sum / count;
} }
Le programme exécute une fonction de moyennage qui lit des échantillons ("samples") jusqu'à une condition d'arrêt "while". A chaque itération du "while", le programme lit un échantillon ("ReadBus(bus)"), puis accumule les échantillons ("sum = sum + sample") et incrémente un compteur du nombre d'échantillons ("count = count + 1"). A la fin de la boucle du "while" (condition d'arrêt rencontrée), le programme calcule la moyenne ("sum/count"). S'agissant ici d'une fonction de moyennage statique ("StaticAverage"), la condition d'arrêt est "le nombre d'échantillons est égal à 6" ("while (count < N)"). De façon similaire, peut être prévue une fonction "WriteBus" d'écriture de la variable non typée. Le programme est écrit sans connaître le degré de parallélisme dont disposera le dispositif matériel exécutant ce programme. Il est donc indépendant de l'architecture matérielle, qui peut être modifiée après la phase de test F05 jusqu'à trouver le nombre de bus parallèle optimal pour l'application visée. Le compilateur HLS du langage C met en œuvre la variable BUS et son instruction de lecture READ (BUS) au moyen de l'unité de mise en correspondance BDG, et en configurant l'unité BDG et l'unité Ul de manière appropriée au degré de parallélisme retenu (par exemple l'une des configurations BDGa, BDGb, BDGc) (par exemple l'unité Ul de manière appropriée. The program executes an averaging function that reads samples ("samples") to a "while" stop condition. At each iteration of the "while", the program reads a sample ("ReadBus (bus)"), then accumulates the samples ("sum = sum + sample") and increments a count of the number of samples ("count = count + 1 "). At the end of the "while" loop (stop condition encountered), the program calculates the average ("sum / count"). Since this is a static averaging function ("StaticAverage"), the stop condition is "the number of samples equals 6"("while (count <N)"). Similarly, a write Write function of the untyped variable can be provided. The program is written without knowing the degree of parallelism available to the hardware device running this program. It is therefore independent of the hardware architecture, which can be modified after the F05 test phase until finding the optimum number of parallel buses for the intended application. The HLS compiler of the C language implements the BUS variable and its read instruction READ (BUS) by means of the mapping unit BDG, and configuring the BDG unit and the unit Ul appropriately to the degree of parallelism retained (for example one of the configurations BDGa, BDGb, BDGc) (for example the unit Ul suitably.
La figure 8 représente encore un exemple de réalisation DV2d du dispositif DV2 dans lequel l'unité Ul est comme précédemment un circuit de calcul de la valeur moyenne de données fournies sur ses entrées E0 à En . L'unité Ul comprend l'additionneur ADD, un circuit de contrôle CCT2d, une banque de I registres d'entrée r0 à rn dont les entrées sont reliées à des sorties correspondantes d'une unité de mise en correspondance BDGd et dont les sorties sont appliquées à l'additionneur ADD. La sortie de l'additionneur ADD est appliquée à un circuit diviseur DIV/N dont la sortie fournit le résultat R du calcul de la valeur moyenne de N mots binaires. Le nombre N est ici une variable fournie au diviseur DIV/N par le circuit de contrôle CCT2d. Le circuit CCT2d applique également à la banque de registres r0 à ¾ des signaux de chargement LD01-LDi_i qui sont fonction de N. Le circuit CCT2d surveille par exemple l'évolution de la valeur du résultat R et détermine, après chaque étape de calcul d'une valeur moyenne, le nombre N de mots binaires nécessaire au calcul de la prochaine valeur moyenne. Dans une variante, le circuit CCT2 reçoit la variable N de l'extérieur, en tant que valeur de consigne externe. Après chaque étape de lecture, le nombre Nj=N est fourni à l'unité BDG dans la commande ACK2(Nj) ou en tant que commande ACK2(Nj). FIG. 8 represents another embodiment DV2d of the device DV2 in which the unit U1 is, as before, a circuit for calculating the average value of data provided on its inputs E 0 to En. The unit Ul comprises the adder ADD, a control circuit CCT2d, a bank of I input registers r 0 to rn whose inputs are connected to corresponding outputs of a matching unit BDGd and whose outputs are applied to the adder ADD. The output of the adder ADD is applied to a dividing circuit DIV / N whose output provides the result R of the calculation of the average value of N binary words. The number N is here a variable supplied to divider DIV / N by the control circuit CCT2d. The circuit CCT2d also applies to the bank of registers r 0 to ¾ loading signals LD01-LDi_i which are a function of N. The circuit CCT2d for example monitors the evolution of the value of the result R and determines, after each computation step of an average value, the number N of binary words needed to calculate the next average value. In a variant, the circuit CCT2 receives the variable N from the outside, as an external setpoint value. After each reading step, the number Nj = N is supplied to the BDG unit in the command ACK2 (Nj) or as command ACK2 (Nj).
Le programme en pseudo-langage C ci-dessous est un exemple de description fonctionnelle de la fonction de calcul d'une valeur moyenne exécutée par l'unité Ul du dispositif DV2d de la figure 8 : int DynamicAverage (t_untyped bus) The program in pseudo-language C below is an example of a functional description of the calculation function of a mean value executed by the unit U1 of the device DV2d of FIG. 8: int DynamicAverage (t_untyped bus)
{ {
int sample;  int sample;
int sum = 0: int count = 0; int sum = 0: int count = 0;
const int max = 1000;  const int max = 1000;
while (sum < max) {  while (sum <max) {
sample = ReadBus(bus);  sample = ReadBus (bus);
sum = sum + sample;  sum = sum + sample;
count = count + 1 ;  count = count + 1;
}  }
return sum/count;  return sum / count;
}  }
Ce programme diffère du précédent en ce qu'il définit une fonction de moyennage dynamique "(DynamicAverage") avec une condition d'arrêt qui est "la somme des échantillons est inférieure à 1000" ("while (sum < max)"). Le nombre d'échantillons lus pour calculer une valeur moyenne dépend ainsi de leur valeur. En supposant que les échantillons soient non nuls, le pire cas considéré est 1000 échantillons égaux à 1. Ce programme est donc du type à "comportement dépendant des données" ("data-dependent behavior"). This program differs from the previous one in that it defines a dynamic averaging function "(DynamicAverage") with a stop condition which is "the sum of the samples is less than 1000" ("while (sum <max)"). The number of samples read to calculate an average value thus depends on their value. Assuming that the samples are non-zero, the worst case considered is 1000 samples equal to 1. This program is therefore of the "data-dependent behavior" type.
Outre les circuits intégrés à réseau de portes programmables FPGA ("Field Programmable Gâte Array"), un dispositif à traitement parallélisé de données selon l'invention peut être réalisé sous forme de circuit intégré par l'intermédiaire d'autres filières technologiques connues, notamment la filière des ASICs ("Application Spécifie Integrated Circuits, soit "Circuits Intégrés Propres à une Application"). Le dispositif qui vient d'être décrit présente un avantage particulier dans le cadre d'une mise en œuvre sous forme de circuit FPGA, qui permet l'ajustement de la taille des bus. In addition to the FPGA (Field Programmable Gate Array) programmable gate integrated circuits, a parallel data processing device according to the invention can be implemented in the form of an integrated circuit by means of other known technological methods, in particular the ASICs ("Application Specifies Integrated Circuits") The device which has just been described has a particular advantage in the context of an implementation in the form of an FPGA circuit, which allows the adjustment of the bus size.
La figure 9 montre un mode de réalisation du dispositif DV2 dans lequel l'unité U0 est un circuit d'adaptation du nombre de bus parallèles et de fréquences d'horloge. En sus de ses sorties reliées à l'unité BDG, l'unité U0 comporte K entrées E0 à EK-i reliées à une unité U2 qui comporte K sorties So à SK-I, K étant différent du nombre I de sorties de l'unité U0. L'unité U2 est par ailleurs cadencée par un signal d'horloge CK2 différent d'un signal d'horloge CK1 appliqué aux unités BDG et Ul . L'unité U0 fait le lien entre ces deux domaines d'horloge ayant des degrés de parallélisme différents, et transforme des ensembles de mots binaires wo à WK-I en des ensembles de mots binaires wo à wi_i . A cet effet, l'unité U0 utilise une pile FIFO ("Premier Entré Premier Sorti") pour le redimensionnement des ensembles de mots binaires, reçoit les signaux d'horloge CK1, CK2 de chaque domaine d'horloge et contrôle l'échange de données avec l'unité U2 en recevant de celle-ci un signal RDY3 et en lui renvoyant un signal d'accusé de réception ACK3. De façon générale, l'unité U0 peut être tout type de circuit d'interface fournissant des données parallèles, notamment un port d'entrée du dispositif. L'unité Ul peut également être une mémoire, ou une autre unité de traitement de données, ou un circuit d'adaptation de domaines d'horloges et/ou de degrés de parallélisme tel que représenté sur la figure 9. Un dispositif selon l'invention peut comprendre une pluralité d'unités de traitement reliées à un même ensemble de bus de données et équipées chacune d'une unité de mise en correspondance de données BDG lui permettant d'ajuster sa "consommation" de données parallèles sans se soucier du nombre de données véhiculées simultanément par l'ensemble de bus. Bien que l'unité de mise en correspondance ait été décrite dans ce qui précède comme un bloc distinct de l'unité de traitement, celle-ci peut en pratique être intégrée dans l'unité de traitement, les entrées de l'unité de mise en correspondance formant alors les entrées de l'unité de traitement. FIG. 9 shows an embodiment of the device DV2 in which the unit U0 is a circuit for matching the number of parallel buses and clock frequencies. In addition to its outputs connected to the BDG unit, the unit U0 comprises K inputs E 0 to E K -i connected to a unit U2 which comprises K outputs So to S K - I , K being different from the number I of outputs of the unit U0. The unit U2 is furthermore clocked by a clock signal CK2 different from a clock signal CK1 applied to the units BDG and U1. The unit U0 makes the connection between these two clock domains having different degrees of parallelism, and transforms sets of binary words wo to W K - I into sets of binary words wo to wi_i. For this purpose, the unit U0 uses a FIFO ("first input first out") stack for resizing the sets of binary words, receives the clock signals CK1, CK2 of each clock domain and controls the data exchange with the unit U2 by receiving a signal RDY3 therefrom and returning an acknowledgment signal ACK3 thereto. In general, the unit U0 can be any type of interface circuit providing parallel data, in particular an input port of the device. The unit U1 may also be a memory, or another data processing unit, or a clock domain adaptation circuit and / or degrees of parallelism as shown in FIG. 9. A device according to the The invention may comprise a plurality of processing units connected to the same set of data buses and each equipped with a BDG data matching unit enabling it to adjust its "consumption" of parallel data without worrying about the number of data units. data conveyed simultaneously by the set of buses. Although the mapping unit has been described in the above as a separate block of the processing unit, it can in practice be integrated into the processing unit, the inputs of the setting unit in correspondence then forming the inputs of the processing unit.
Annexe Annex
Description de la figure 5  Description of Figure 5
Initialisation de l'unité BDG Initializing the BDG unit
Les ensembles de mots binaires Wl et W2 sont chargés dans les registres RI, R2, le circuit à décalage circulaire BS reçoit sur ses 2*1 entrées les contenus concaténés des deux registres : The sets of binary words W1 and W2 are loaded into the registers R1, R2, the circular shift circuit BS receives on its 2 * 1 inputs the concatenated contents of the two registers:
R1//R2 = aO al a2 a3 a4 a5 a6 a7 bO bl b2 b3 b4 b5 b6 b7 R1 // R2 = aO al a2 a3 a4 a5 a6 a7 b0 b1 b2 b3 b4 b5 b6 b7
Le circuit CCT1 met le signal SHIFT à 0 et charge dans le registre R3 l'ensemble Wl : The circuit CCT1 sets the signal SHIFT to 0 and loads in the register R3 the set W1:
R3 = aO al a2 a3 a4 a5 a6 a7 R3 = aO al a2 a3 a4 a5 a6 a7
Les variables r et∑Nj sont mises à 0 (r = 0,∑Nj = 0). Première étape de lecture : - l'unité Ul lit les mots binaires aO à a4 et renvoie la valeur NI =5 au circuit CCTl au moyen du signal d'accusé de réception ACK2(5), The variables r etΣNj are set to 0 (r = 0, ΣNj = 0). First reading step: the unit U1 reads the binary words a0 to a4 and returns the value N1 = 5 to the circuit CCT1 by means of the acknowledgment signal ACK2 (5),
- le circuit CCTl met à jour la variable∑Nj :∑Nj =∑Nj + Nj = 5,  the circuit CCT1 updates the variable ΣNj: ΣNj = ΣNj + Nj = 5,
- le circuit CCTl exécute le test sur la valeur de r+∑Nj : r+∑Nj = 5 ^ 8.  the circuit CCT1 performs the test on the value of r + ΣNj: r + ΣNj = 5 ^ 8.
Comme la variable r+∑Nj n'est pas supérieure ou égale à 8, le circuit CCTl sort de la boucle de mise à jour des registres RI, R2 et applique la commande SHIFT = 5 au circuit BS (étape B07), puis charge le registre R3 avec les mots binaires sélectionnés dans les registres RI, R2 par le circuit BS (étape B08), soit : Since the variable r + ΣNj is not greater than or equal to 8, the circuit CCT1 exits the update loop of the registers R1, R2 and applies the command SHIFT = 5 to the circuit BS (step B07), then loads the register R3 with the binary words selected in the registers R1, R2 by the circuit BS (step B08), that is:
R3 = a5, a6, a7, bO, bl, b2, b3, b4 R3 = a5, a6, a7, b0, b1, b2, b3, b4
Seconde étape de lecture : - l'unité Ul lit les mots binaires a5, a6, a7, bO et renvoie la valeur N2=4 au circuit CCTl au moyen du signal d'accusé de réception ACK2(4), Second reading step: the unit U1 reads the binary words a5, a6, a7, b0 and returns the value N2 = 4 to the circuit CCT1 by means of the acknowledgment signal ACK2 (4),
- le circuit CCTl met à jour la variable∑Nj :∑Nj =∑Nj + Nj = 5 + 4 = 9,  the circuit CCT1 updates the variable ΣNj: ΣNj = ΣNj + Nj = 5 + 4 = 9,
- le circuit CCTl exécute le test sur la variable r+∑Nj : r+∑Nj = 0 + 9 = 9 > 8. Comme la variable r+∑Nj est supérieure ou égale à 8 : i) le circuit CCTl charge le nouvel ensemble de mots binaires W3 dans le registre RI . Le circuit à décalage circulaire BS reçoit les contenus concaténés des deux registres : R1//R2 = cO cl c2 c3 c4 c5 c6 c7 bO bl b2 b3 b4 b5 b6 b7 ii) le circuit CCTl met à jour la variable r : r = (r +∑Nj) mod 8 = 9 mod 8 = 1, iii) le circuit CCTl met la variable∑Nj à 0.  the circuit CCT1 executes the test on the variable r + ΣNj: r + ΣNj = 0 + 9 = 9> 8. As the variable r + ΣNj is greater than or equal to 8: i) the circuit CCT1 loads the new set of words W3 binaries in the RI register. The circular shift circuit BS receives the concatenated contents of the two registers: R1 // R2 = c0 c2 c3 c4 c5 c6 c7 b0 b1 b2 b3 b4 b5 b6 b7 ii) the circuit CCT1 updates the variable r: r = ( r + ΣNj) mod 8 = 9 mod 8 = 1, iii) the circuit CCTl sets the variableΣNj to 0.
Le circuit CCTl sort ensuite de la boucle de mise à jour des registres RI , R2 et applique la commande SHIFT = 4 au circuit BS (étape B07), puis charge le registre R3 avec les mots binaires sélectionnés dans les registres RI, R2 par le circuit BS (étape B08), soit : The circuit CCT1 then leaves the update loop of the registers R1, R2 and applies the command SHIFT = 4 to the circuit BS (step B07), then loads the register R3 with the selected binary words in the registers R1, R2 by the circuit BS (step B08), that is:
R3 = bl, b2, b3, b4, b5, b6, b7, cO Il sera noté que le circuit BS exécute la commande SHIFT de manière à ce que le contenu des deux registres soit considéré comme une chaîne de bits ininterrompue qui serait stockée dans une suite ininterrompue de registres concaténés R1//R2//R3//R4//R5... dans laquelle R3 est le registre RI ayant reçu un premier nouvel ensemble de mots binaires, le registre R4 est le registre R2 ayant reçu un nouvel ensemble de mots binaires, le registre R5 est le registre RI ayant reçu un second nouvel ensemble de mots binaires, etc. Ainsi, lorsque le cumul des valeurs des signaux SHIFT appliqués au circuit BS dépasse la taille des deux registres, le décalage est exécuté en considérant que le premier bit du registre RI, ici le bit cO, suit le dernier bit du registre R2. R3 = b1, b2, b3, b4, b5, b6, b7, cO It will be noted that the circuit BS executes the SHIFT command so that the content of the two registers is considered as an uninterrupted bit string which would be stored in an uninterrupted sequence of concatenated registers R1 // R2 // R3 // R4 / / R5 ... wherein R3 is the register R1 having received a first new set of binary words, the register R4 is the register R2 having received a new set of binary words, the register R5 is the register RI having received a second set of binary words set of binary words, etc. Thus, when the sum of the values of the SHIFT signals applied to the circuit BS exceeds the size of the two registers, the offset is executed by considering that the first bit of the register RI, here the bit c0, follows the last bit of the register R2.
Troisième étape de lecture : Third reading step:
- l'unité Ul lit les mots binaires bl à b7 et cO, et renvoie la valeur N3 ! au circuit CCTl moyen du signal d'accusé de réception ACK2(8), the unit U1 reads the binary words b1 to b7 and c0, and returns the value N3! to the average circuit CCT1 of the acknowledgment signal ACK2 (8),
- le circuit CCTl met à jour la variable∑Nj :∑Nj =∑Nj + Nj = 0 + 8 8, the circuit CCT1 updates the variable ΣNj: ΣNj = ΣNj + Nj = 0 + 8 8,
- le circuit CCTl exécute le test sur la variable r+∑Nj : r+∑Nj = 1 + 8 9 > 8,  the circuit CCT1 performs the test on the variable r + ΣNj: r + ΣNj = 1 + 8 9> 8,
Comme la variable r+∑Nj est supérieure ou égale à 8 : i) le circuit CCTl charge le nouvel ensemble de mots binaires W4 dans le registre R2. Le circuit à décalage circulaire BS reçoit les contenus concaténés des deux registres : Since the variable r + ΣNj is greater than or equal to 8: i) the circuit CCT1 loads the new set of binary words W4 into the register R2. The circular shift circuit BS receives the concatenated contents of the two registers:
R1//R2 = cO cl c2 c3 c4 c5 c6 c7 dO dl d2 d3 d4 d5 d6 d7 ii) le circuit CCTl met à jour la variable r : r = (r +∑Nj) mod 8 = 9 mod 8 = 1, R1 // R2 = cO cl c2 c3 c4 c5 c6 c7 d0 dl d2 d3 d4 d5 d6 d7 ii) the circuit CCT1 updates the variable r: r = (r + ΣNj) mod 8 = 9 mod 8 = 1,
iii) le circuit CCTl met la variable∑Nj à 0. iii) the circuit CCTl sets the variable ΣNj to 0.
Le circuit CCTl sort ensuite de la boucle de mise à jour des registres RI , R2 et applique la commande SHIFT = 8 au circuit BS (étape B07), puis charge le registre R3 avec les mots binaires sélectionnés dans les registres RI, R2 par le circuit BS (étape B08), soit : The circuit CCT1 then leaves the update loop of the registers R1, R2 and applies the command SHIFT = 8 to the circuit BS (step B07), then loads the register R3 with the selected binary words in the registers R1, R2 by the circuit BS (step B08), that is:
R3 = cl, c2, c3, c4, c5, c6, c7, dO R3 = cl, c2, c3, c4, c5, c6, c7, d0
Quatrième étape de lecture : - l'unité Ul lit les mots binaires cl à cl, et renvoie la valeur N4=7 au circuit CCTl au moyen du signal d'accusé de réception ACK2(7), Fourth reading step: the unit U1 reads the binary words cl at cl, and returns the value N4 = 7 to the circuit CCT1 by means of the acknowledgment signal ACK2 (7),
- le circuit CCTl met à jour la variable∑Nj :∑Nj =∑Nj + Nj = 0 + 7 = 7,  the circuit CCT1 updates the variable ΣNj: ΣNj = ΣNj + Nj = 0 + 7 = 7,
- le circuit CCTl exécute le test sur la variable r+∑Nj : r+∑Nj = l + 7 = 8 > 8,  the circuit CCT1 executes the test on the variable r + ΣNj: r + ΣNj = l + 7 = 8> 8,
Comme la variable r+∑Nj est supérieure ou égale à 8 : i) le circuit CCTl charge le nouvel ensemble de mots binaires W5 dans le registre RI . Le circuit à décalage circulaire BS reçoit les contenus concaténés des deux registres : Since the variable r + ΣNj is greater than or equal to 8: i) the circuit CCT1 loads the new set of binary words W5 in the register RI. The circular shift circuit BS receives the concatenated contents of the two registers:
R1//R2 = eO el e2 e3 e4 e5 e6 e7 dO dl d2 d3 d4 d5 d6 d7 ii) le circuit CCTl met à jour la variable r : r = (r +∑Nj) mod 8 = 8 mod 8 = 0, R1 // R2 = eO el e2 e3 e4 e5 e6 d7 dl d2 d3 d4 d5 d6 d7 ii) the circuit CCT1 updates the variable r: r = (r + ΣNj) mod 8 = 8 mod 8 = 0,
iii) le circuit met variable∑Nj à 0. iii) the circuit sets variable Σ Nj to 0.
Le circuit CCTl sort ensuite de la boucle de mise à jour des registres RI , R2 et applique la commande SHIFT = 7 au circuit BS (étape B07), puis charge le registre R3 avec les mots binaires sélectionnés dans les registres RI, R2 par le circuit BS (étape B08), soit : R3 = dO, dl, d2, d3, d4, d5, d6, d7 The circuit CCT1 then leaves the update loop of the registers R1, R2 and applies the command SHIFT = 7 to the circuit BS (step B07), then loads the register R3 with the selected binary words in the registers R1, R2 by the circuit BS (step B08), ie: R3 = d0, d1, d2, d3, d4, d5, d6, d7
Cinquième étape de lecture : Fifth reading step:
- l'unité Ul lit les mots binaires dO à d5 et renvoie la valeur N5=6 au circuit CCTl au moyen du signal d'accusé de réception ACK2(6), the unit U1 reads the binary words d0 to d5 and returns the value N5 = 6 to the circuit CCT1 by means of the acknowledgment signal ACK2 (6),
- le circuit CCTl met à jour la variable∑Nj :∑Nj =∑Nj + Nj = 0 + 6 = 6,  the circuit CCT1 updates the variable ΣNj: ΣNj = ΣNj + Nj = 0 + 6 = 6,
- le circuit CCTl exécute le test sur la variable r+∑Nj : r+∑Nj = 0 + 6 = 6 ^ 8,  the circuit CCT1 executes the test on the variable r + ΣNj: r + ΣNj = 0 + 6 = 6 ^ 8,
Comme la variable r+∑Nj n'est pas supérieure ou égale à 8, le circuit CCTl sort de la boucle de mise à jour des registres RI, R2 et applique la commande SHIFT = 6 au circuit BS (étape B07), puis charge le registre R3 avec les mots binaires sélectionnés dans les registres RI, R2 par le circuit BS (étape B08), soit : Since the variable r + ΣNj is not greater than or equal to 8, the circuit CCT1 exits the update loop of the registers R1, R2 and applies the command SHIFT = 6 to the circuit BS (step B07), then loads the register R3 with the binary words selected in the registers R1, R2 by the circuit BS (step B08), that is:
R3 = d6, d7, eO, el, e2, e3, e4, e5 R3 = d6, d7, e0, el, e2, e3, e4, e5

Claims

Revendications Claims
1. Dispositif (DV2) de traitement parallélisé de données, comprenant : 1. Device (DV2) for parallelized data processing, comprising:
- une première unité (UO) comprenant des sorties parallèles (Si) pour fournir des mots binaires (w;) en parallèle, et - a first unit (UO) comprising parallel outputs (Si) for supplying binary words (w;) in parallel, and
- une seconde unité (Ul) comprenant des entrées parallèles (Ei) pour recevoir un ensemble (W) de mots binaires (w;) en parallèle fournis par la première unité (UO), - a second unit (Ul) comprising parallel inputs (Ei) for receiving a set (W) of binary words (w;) in parallel supplied by the first unit (UO),
caractérisé en ce que la seconde unité (Ul) est configurée pour lire simultanément, au cours d'une même étape de lecture, tout ou partie des mots binaires de l'ensemble (W) de mots binaires (wi) appliqué sur ses entrées parallèles, et renvoyer une instruction (Nj) de purge de certains mots binaires de l'ensemble de mots binaires, characterized in that the second unit (Ul) is configured to read simultaneously, during the same reading step, all or part of the binary words of the set (W) of binary words (wi) applied to its parallel inputs , and return an instruction (Nj) for purging certain binary words from the set of binary words,
et en ce qu'il comprend une unité de mise en correspondance de données (BDG) reliant les sorties parallèles de la première unité (UO) aux entrées parallèles de la seconde unité (Ul) et configurée pour : and in that it comprises a data matching unit (BDG) connecting the parallel outputs of the first unit (UO) to the parallel inputs of the second unit (Ul) and configured for:
- fournir à la seconde unité (Ul) un premier ensemble de mots binaires (W, Wl) fourni par la première unité (UO), - provide the second unit (Ul) with a first set of binary words (W, Wl) provided by the first unit (UO),
- après lecture par la seconde unité (Ul) d'une partie (a0-a4) des mots binaires du premier ensemble (W, Wl) de mots binaires, fournir à la seconde unité (Ul) le ou les mots (a5-a7) du premier ensemble de mots binaires n'ayant pas été purgés, et un ou plusieurs mots binaires (b0-b4) d'un second ensemble de mots binaires (W, W2) fourni par la première unité. - after reading by the second unit (Ul) of a part (a0-a4) of the binary words of the first set (W, Wl) of binary words, provide the second unit (Ul) with the word(s) (a5-a7 ) of the first set of binary words that have not been purged, and one or more binary words (b0-b4) of a second set of binary words (W, W2) provided by the first unit.
2. Dispositif selon la revendication 1, dans lequel l'unité de mise en correspondance de données (BDG) est également configurée pour, lorsqu'une partie du second ensemble (W2) de mots binaires a été purgée, fournir à la seconde unité (Ul) le ou les mots binaires (bl-b7) du second ensemble de mots binaires n'ayant pas été purgés et un ou plusieurs mots binaires (cO) d'un troisième ensemble (W3) de mots binaires fourni par la première unité. 2. Device according to claim 1, wherein the data matching unit (BDG) is also configured to, when part of the second set (W2) of binary words has been purged, provide the second unit ( Ul) the binary word(s) (bl-b7) of the second set of binary words which have not been purged and one or more binary words (cO) of a third set (W3) of binary words provided by the first unit.
3. Dispositif selon l'une des revendications 1 et 2, dans lequel : 3. Device according to one of claims 1 and 2, in which:
- la seconde unité (Ul) est configurée pour, lors de la lecture d'une partie des mots binaires appliqués sur ses entrées parallèles, lire des mots binaires (a0-a4) présents sur des entrées à plus haute priorité de lecture, et - the second unit (Ul) is configured to, when reading part of the binary words applied to its parallel inputs, read binary words (a0-a4) present on inputs with higher reading priority, and
- l'unité de mise en correspondance de données (BDG) est configurée pour, après purge par la seconde unité d'une partie (a0-a4) de mots binaires du premier ensemble de mots binaires, appliquer sur les entrées à plus haute priorité de la seconde unité des mots (a5-a7) du premier ensemble (Wl) de mots binaires précédemment appliqués sur des entrées parallèles et n'ayant pas été purgés, et appliquer sur des entrées parallèles à plus faible priorité de lecture de la seconde unité un ou plusieurs mots binaires (b0-b4) du second ensemble (W2) de mots binaires. - the data matching unit (BDG) is configured to, after purging by the second unit a part (a0-a4) of binary words from the first set of binary words, apply to the highest priority inputs of the second unit of words (a5-a7) of the first set (Wl) of binary words previously applied to parallel inputs and not having been purged, and apply to parallel inputs with lower reading priority of the second unit one or more binary words (b0-b4) of the second set (W2) of binary words.
4. Dispositif selon la revendication 3, dans lequel l'unité de mise en correspondance de données comprend : 4. Device according to claim 3, wherein the data matching unit comprises:
- au moins deux registres d'entrée (RI, R2) agencés en parallèle et ayant chacun des entrées parallèles reliées aux sorties de la première unité (U0), - at least two input registers (RI, R2) arranged in parallel and each having parallel inputs connected to the outputs of the first unit (U0),
- un registre de sortie (R3) ayant des sorties reliées aux entrées parallèles de la seconde unité (Ul), - an output register (R3) having outputs connected to the parallel inputs of the second unit (Ul),
- un circuit à réorganisation de données (BS) reliant des sorties des registres d'entrée à des entrées parallèles du registre de sortie, et - a data reorganization circuit (BS) connecting outputs of the input registers to parallel inputs of the output register, and
- un circuit de contrôle (CCT1) configuré pour : - a control circuit (CCT1) configured for:
- charger dans les registres d'entrée des ensembles (Wl, W2, W3, W4, W5) de mots binaires (a0-a7, b0-b7, c0-c7, d0-d7, e0-e7) fournis par la première unité, et charger dans le registre de sortie, par l'intermédiaire du circuit à réorganisation de données, des mots binaires présents dans les registres d'entrée, - load into the input registers sets (Wl, W2, W3, W4, W5) of binary words (a0-a7, b0-b7, c0-c7, d0-d7, e0-e7) supplied by the first unit , and load into the output register, via the data reorganization circuit, binary words present in the input registers,
- commander le circuit à réorganisation de données en fonction du nombre de mots binaires (Nj) ayant été purgés, de manière à charger dans des cellules à plus haute priorité de lecture du registre de sortie les mots binaires (a5-a7) présents dans les registres d'entrée et n'ayant pas été purgés, et charger dans des cellules de plus faible priorité du registre de sortie des mots binaires (b0-b4) présents dans les registres d'entrée et n'ayant pas encore été présentés à la seconde unité. - control the data reorganization circuit as a function of the number of binary words (Nj) having been purged, so as to load into cells with higher reading priority of the output register the binary words (a5-a7) present in the input registers and not having been purged, and loading into lower priority cells of the output register binary words (b0-b4) present in the input registers and not yet having been presented to the second unit.
5. Dispositif selon la revendication 4, dans lequel le circuit de contrôle (CCT1) est configuré pour charger dans l'un des registres d'entrée (RI, R2) un nouvel ensemble (W3) de mots binaires fourni par la première unité (U0) au moins lorsque tous les mots binaires de l'ensemble (W2) de mots binaires présent dans le registre d'entrée ont été purgés. 5. Device according to claim 4, in which the control circuit (CCT1) is configured to load into one of the input registers (RI, R2) a new set (W3) of binary words supplied by the first unit ( U0) at least when all the binary words of the set (W2) of binary words present in the input register have been purged.
6. Dispositif selon l'une des revendications 1 à 5, dans lequel la seconde unité est configurée pour déterminer le nombre de mots binaires qu'elle lit au cours d'une même étape de lecture en fonction des mots binaires précédemment lus ou en fonction d'une consigne externe. 6. Device according to one of claims 1 to 5, in which the second unit is configured to determine the number of binary words that it reads during the same reading step as a function of the binary words previously read or as a function of an external instruction.
7. Dispositif selon l'une des revendications 1 à 6, dans lequel la première unité est un processeur, un circuit d'interface de communication série/parallèle, un circuit d'adaptation d'un nombre de bus agencés en parallèle, un circuit de modification de fréquence d'horloge, ou une combinaison de ces éléments. 7. Device according to one of claims 1 to 6, in which the first unit is a processor, a series/parallel communication interface circuit, a circuit for adapting a number of buses arranged in parallel, a circuit clock frequency modification, or a combination of these elements.
8. Circuit intégré à réseau de portes programmables, comprenant un dispositif selon l'une des revendications 1 à 7. 8. Integrated circuit with programmable gate array, comprising a device according to one of claims 1 to 7.
9. Procédé de traitement de données au moyen d'un dispositif de traitement parallélisé de données (DV2) comprenant une première unité (U0) comprenant des sorties parallèles (Si) pour fournir des mots binaires (w;) en parallèle, et une seconde unité (Ul) comprenant des entrées parallèles (Ei) pour recevoir un ensemble (W) de mots binaires (w;) en parallèle fournis par la première unité (U0), procédé caractérisé en ce qu'il comprend les étapes consistant à : 9. Method for processing data by means of a parallelized data processing device (DV2) comprising a first unit (U0) comprising parallel outputs (Si) for supplying binary words (w;) in parallel, and a second unit (Ul) comprising parallel inputs (Ei) for receiving a set (W) of binary words (w;) in parallel supplied by the first unit (U0), method characterized in that it comprises the steps consisting of:
- au moyen de la seconde unité (Ul), lire simultanément, au cours d'une étape de lecture, tout ou partie des mots binaires de l'ensemble (W) de mots binaires (wi) appliqué sur ses entrées parallèles, et renvoyer, après une étape de lecture, une instruction (Nj) de purge de certains mots binaires de l'ensemble de mots binaires, et - by means of the second unit (Ul), read simultaneously, during a reading step, all or part of the binary words of the set (W) of binary words (wi) applied to its parallel inputs, and return , after a reading step, an instruction (Nj) for purging certain binary words from the set of binary words, and
- après lecture par la seconde unité (Ul) de tout ou partie (a0-a4) des mots binaires du premier ensemble (W, Wl) de mots binaires, fournir à la seconde unité (Ul) le ou les mots - after reading by the second unit (Ul) of all or part (a0-a4) of the binary words of the first set (W, Wl) of binary words, provide the second unit (Ul) with the word(s)
(a5-a7) du premier ensemble de mots binaires n'ayant pas été purgés, et un ou plusieurs mots binaires (b0-b4) d'un second ensemble de mots binaires (W, W2) fourni par la première unité. (a5-a7) of the first set of binary words that have not been purged, and one or more binary words (b0-b4) of a second set of binary words (W, W2) provided by the first unit.
10. Procédé selon la revendication 9, comprenant l'étape consistant à, lorsqu'une partie du second ensemble (W2) de mots binaires a été purgée, fournir à la seconde unité le ou les mots binaires (bl-b7) du second ensemble de mots binaires n'ayant pas été purgés et un ou plusieurs mots binaires (cO) d'un troisième ensemble (W3) de mots binaires fourni par la première unité. 10. Method according to claim 9, comprising the step of, when a part of the second set (W2) of binary words has been purged, providing the second unit with the binary word(s) (bl-b7) of the second set of binary words that have not been purged and one or more binary words (cO) of a third set (W3) of binary words provided by the first unit.
11. Procédé selon l'une des revendications 9 et 10, comprenant les étapes consistant à : 11. Method according to one of claims 9 and 10, comprising the steps consisting of:
- lors de la lecture de tout ou partie (a0-a4) des mots binaires appliqués sur les entrées parallèles de la seconde unité, lire des mots binaires (a0-a4) présents sur des entrées à plus haute priorité de lecture, et - après purge d'une partie (a0-a4) des mots binaires du premier ensemble (Wl) de mots binaires, appliquer sur les entrées à plus haute priorité de lecture de la seconde unité des mots (a5-a7) du premier ensemble de mots binaires précédemment appliqués sur des entrées de plus faible priorité de lecture et n'ayant pas été purgés, et appliquer sur des entrées parallèles à plus faible priorité de lecture de la seconde unité un ou plusieurs mots binaires (b0-b4) du second ensemble (W2) de mot binaire. - when reading all or part (a0-a4) of the binary words applied to the parallel inputs of the second unit, read binary words (a0-a4) present on inputs with higher reading priority, and - after purging a part (a0-a4) of the binary words of the first set (Wl) of binary words, apply the words (a5-a7) of the first set of words (a5-a7) to the inputs with the highest reading priority of the second unit binary words previously applied to inputs of lower reading priority and which have not been purged, and apply to parallel inputs of lower reading priority of the second unit one or more binary words (b0-b4) of the second set (W2) of binary word.
12. Procédé selon l'une des revendications 9 à 11 , comprenant l'étape consistant à prévoir, entre la première et la seconde unité, une unité de mise en correspondance de données (BDG) reliant les sorties parallèles de la première unité (U0) aux entrées parallèles de la seconde unité (Ul) et comprenant au moins deux registres d'entrée (RI, R2) agencés en parallèle et ayant chacun des entrées parallèles reliées aux sorties de la première unité (U0), un registre de sortie (R3) ayant des sorties reliées aux entrées parallèles de la seconde unité (Ul), et un circuit à réorganisation de données (BS) reliant des sorties des registres d'entrée à des entrées parallèles du registre de sortie. 12. Method according to one of claims 9 to 11, comprising the step consisting of providing, between the first and the second unit, a data matching unit (BDG) connecting the parallel outputs of the first unit (U0 ) to the parallel inputs of the second unit (Ul) and comprising at least two input registers (RI, R2) arranged in parallel and each having parallel inputs connected to the outputs of the first unit (U0), an output register ( R3) having outputs connected to the parallel inputs of the second unit (Ul), and a data reorganization circuit (BS) connecting outputs of the input registers to parallel inputs of the output register.
13. Procédé selon la revendication 12, comprenant une étape consistant à charger dans l'un des registres d'entrée (RI R2) un nouvel ensemble de mots binaires fourni par la première unité, au moins lorsque tous les mots binaires de l'ensemble de mots binaires présent dans le registre d'entrée ont été purgés. 13. Method according to claim 12, comprising a step consisting of loading into one of the input registers (RI R2) a new set of binary words provided by the first unit, at least when all the binary words of the set of binary words present in the input register have been purged.
14. Procédé pour réaliser, dans un circuit intégré à réseau de portes programmables (FPGA), un dispositif (DV2) exécutant une fonction de traitement parallélisé de données nécessitant des étapes de lecture simultanée de mots binaires (w;) dans un ensemble (W) de mots binaires véhiculés par des bus de données parallèles, procédé comprenant : 14. Method for producing, in a programmable gate array integrated circuit (FPGA), a device (DV2) executing a parallel data processing function requiring simultaneous reading steps of binary words (w;) in a set (W ) of binary words carried by parallel data buses, method comprising:
- une étape (FOI) de description fonctionnelle de la fonction de traitement en utilisant un langage à haut niveau d'abstraction et en utilisant une variable non typée de taille non spécifiée (FOI) pour désigner les mots binaires (wi) devant être lus simultanément, - a step (FOI) of functional description of the processing function using a language with a high level of abstraction and using an untyped variable of unspecified size (FOI) to designate the binary words (wi) to be read simultaneously ,
- une étape (F02) de définition de contraintes matérielles à prendre en compte dans la réalisation du dispositif et incluant un choix d'un degré de parallélisme du dispositif,- a step (F02) of defining material constraints to be taken into account in the production of the device and including a choice of a degree of parallelism of the device,
- à partir de la définition fonctionnelle et des contraintes matérielles, une étape (F03) de description matérielle du dispositif présentant le degré de parallélisme choisi, en utilisant comme architecture cible un dispositif conforme à l'une des revendications 1 à 7 dans lequel la seconde unité (Ul) exécute la fonction de traitement des données, et - à partir de la description matérielle du dispositif, une étape (F04) de configuration du circuit intégré à réseau de portes programmables, pour obtenir le dispositif présentant le degré de parallélisme choisi. - from the functional definition and the hardware constraints, a step (F03) of hardware description of the device presenting the chosen degree of parallelism, using as target architecture a device conforming to one of claims 1 to 7 in which the second unit (Ul) performs the data processing function, and - from the hardware description of the device, a step (F04) of configuring the integrated circuit with an array of programmable gates, to obtain the device presenting the chosen degree of parallelism.
15. Procédé selon la revendication 14, comprenant les étapes consistant à : 15. Method according to claim 14, comprising the steps consisting of:
- tester le dispositif (F05), - test the device (F05),
- remanier (F02) la définition des contraintes matérielles du dispositif de manière à modifier son degré de parallélisme, sans modifier la description fonctionnelle (FOI) de la fonction de traitement, - rework (F02) the definition of the hardware constraints of the device so as to modify its degree of parallelism, without modifying the functional description (FOI) of the processing function,
- remanier (F03) la description matérielle du dispositif à partir de la définition remaniée des contraintes matérielles, et - rework (F03) the hardware description of the device based on the reworked definition of the hardware constraints, and
- à partir de la description matérielle remaniée du dispositif, reconfigurer (F04) le circuit intégré à réseau de portes programmables, pour obtenir le dispositif présentant le degré de parallélisme modifié. - from the revised hardware description of the device, reconfigure (F04) the integrated circuit with programmable gate array, to obtain the device presenting the modified degree of parallelism.
PCT/FR2017/051210 2016-05-31 2017-05-18 Device and method for parallel data processing WO2017207889A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1654927A FR3051933B1 (en) 2016-05-31 2016-05-31 DEVICE AND METHOD FOR PARALLELIZED DATA PROCESSING
FR1654927 2016-05-31

Publications (1)

Publication Number Publication Date
WO2017207889A1 true WO2017207889A1 (en) 2017-12-07

Family

ID=56990523

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/FR2017/051210 WO2017207889A1 (en) 2016-05-31 2017-05-18 Device and method for parallel data processing

Country Status (2)

Country Link
FR (1) FR3051933B1 (en)
WO (1) WO2017207889A1 (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5237701A (en) * 1989-03-31 1993-08-17 Ampex Systems Corporation Data unpacker using a pack ratio control signal for unpacked parallel fixed m-bit width into parallel variable n-bit width word
US5537624A (en) * 1991-02-12 1996-07-16 The United States Of America As Represented By The Secretary Of The Navy Data repacking circuit having toggle buffer for transferring digital data from P1Q1 bus width to P2Q2 bus width
US8504745B1 (en) * 2009-04-02 2013-08-06 Xilinx, Inc. Method of and circuit for determining a shift pattern to generate an output data stream

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5237701A (en) * 1989-03-31 1993-08-17 Ampex Systems Corporation Data unpacker using a pack ratio control signal for unpacked parallel fixed m-bit width into parallel variable n-bit width word
US5537624A (en) * 1991-02-12 1996-07-16 The United States Of America As Represented By The Secretary Of The Navy Data repacking circuit having toggle buffer for transferring digital data from P1Q1 bus width to P2Q2 bus width
US8504745B1 (en) * 2009-04-02 2013-08-06 Xilinx, Inc. Method of and circuit for determining a shift pattern to generate an output data stream

Also Published As

Publication number Publication date
FR3051933A1 (en) 2017-12-01
FR3051933B1 (en) 2018-06-01

Similar Documents

Publication Publication Date Title
EP1376417B1 (en) Method and system for emulating a circuit under test associated with a test environment
EP2490144B1 (en) Programmable cryptography integrated circuit
EP3912025B1 (en) Language and compiler that generate synchronous digital circuits that maintain thread execution order
US11144286B2 (en) Generating synchronous digital circuits from source code constructs that map to circuit implementations
EP0649101A1 (en) Parallel operating method of a plurality of calculating units, particularly in image processing, and corresponding architecture
EP0439855B1 (en) Microcontroller for the fast execution of a large number of operations which are decomposable in sequences of similar operations
FR2972566A1 (en) SINGLE CHIP SYSTEM COMPRISING A SYNTHETISABLE PROGRAMMABLE CORE AND A METHOD FOR MANUFACTURING SUCH A SYSTEM
EP2845131A2 (en) Cell library and method for designing an asynchronous integrated circuit
WO2024058912A1 (en) Microservice termination while maintaining high availability
EP2996040A1 (en) A method for determining by optimization a multi-core architecture
FR3083885A1 (en) CIRCUIT FOR GENERATING ROTATION FACTORS FOR NTT PROCESSOR
WO2017207889A1 (en) Device and method for parallel data processing
WO2012045941A1 (en) System for scheduling the execution of tasks clocked by a vectorial logic time
EP0793165A1 (en) Modular arithmetic coprocessor for fast execution of non-modular operations
FR2595474A1 (en) DEVICE FOR CHECKING AND VERIFYING THE OPERATION OF INTERNAL BLOCKS IN AN INTEGRATED CIRCUIT
FR2759178A1 (en) MEMORY MANAGEMENT CIRCUIT IN A MULTI-USER ENVIRONMENT WITH REQUEST AND PRIORITY OF ACCESS
EP3423978B1 (en) Displaying an animation while booting a device
JP4853185B2 (en) Information processing system
EP1803061A1 (en) Reconfigurable, modular and hierarchical parallel processor system
EP3716086A1 (en) Direct memory access
EP2315085A1 (en) Device for correcting set points and gradient generation system comprising such a device
US11973651B1 (en) Enhanced hierarchical network automation
US11862117B2 (en) Method and apparatus for matched buffer decompression
EP0337544B1 (en) Method and memory management unit for address words
EP4488833A1 (en) Configuring a memory

Legal Events

Date Code Title Description
DPE1 Request for preliminary examination filed after expiration of 19th month from priority date (pct application filed from 20040101)
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 17729180

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 17729180

Country of ref document: EP

Kind code of ref document: A1