EP3814923A1 - Asynchronous processor architecture - Google Patents

Asynchronous processor architecture

Info

Publication number
EP3814923A1
EP3814923A1 EP19737810.2A EP19737810A EP3814923A1 EP 3814923 A1 EP3814923 A1 EP 3814923A1 EP 19737810 A EP19737810 A EP 19737810A EP 3814923 A1 EP3814923 A1 EP 3814923A1
Authority
EP
European Patent Office
Prior art keywords
data
memory
registers
arithmetic
calculation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
EP19737810.2A
Other languages
German (de)
French (fr)
Inventor
Khaled Maalej
Trung-Dung NGUYEN
Julien Schmitt
Pierre-Emmanuel BERNARD
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Vsora
Original Assignee
Vsora
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 Vsora filed Critical Vsora
Publication of EP3814923A1 publication Critical patent/EP3814923A1/en
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • G06F15/8015One dimensional arrays, e.g. rings, linear arrays, buses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Definitions

  • the invention relates to the field of processors and their functional architecture.
  • a computing device comprises a set of one or more processors.
  • Each processor includes one or more processing units, or PU for "Processing Units".
  • Each PU includes one or more calculation units called arithmetic and logical units, or ALU for "Arithmetic-Logic Unit".
  • ALU arithmetic-Logic Unit
  • ALUs can process operations in parallel, i.e. at the same time. The unit of time is then a cycle of calculation. It is therefore common to quantify the computing power of the IT device in terms of the number of operations it is capable of performing per computing cycle.
  • Such a device comprises a memory assembly, itself comprising one or more memory organs, each having a fixed number of memory locations on which computer data can be permanently stored.
  • the ALUs receive input data from the memory organs and output data which, in turn, is stored on the memory organs. It is therefore understood that, in addition to the number of ALUs, the number of memory units is another determining criterion of the computing power of the device.
  • bus is used here in its general sense of system (or interface) of data transfer including hardware (interface circuit) and the protocols governing the exchanges.
  • the bus transmits the data itself, addresses and control signals.
  • Each bus also has hardware limits and software so that data routing is limited.
  • the bus has a limited number of ports on the memory unit side and a limited number of ports on the ALUs side.
  • a memory location is accessible via the bus in a single direction (in “read” or in “write”).
  • a memory location is accessible for a single ALU.
  • a computing device generally comprises a set of registers and local memory organs, which can be seen as memories distinct from the aforementioned memory organs.
  • registers intended for storing data as such
  • local memory organs intended for storing memory addresses.
  • the ALUs of a PU are assigned to each register.
  • a PU is assigned several registers.
  • the storage capacity of the registers is very limited in comparison with the memory devices, but their content is directly accessible to the ALUs.
  • each ALU must generally first obtain the calculation input data, typically the two operands of an elementary calculation. An operation of "reading" the corresponding memory location via the bus to import each of the two operands into a register is therefore implemented. Then, the ALU performs the calculation operation by itself from data in a register and by exporting the result as data to a register. Finally, a "write" operation is implemented to save, in a memory location, the result of the calculation. During such a write operation, the result stored in the register is saved in a memory location via the bus. Each of the operations a priori consumes one or more calculation cycles.
  • the invention improves the situation.
  • a data processing method is proposed, which can be broken down into a set of elementary operations to be carried out, implemented by a computer device, said device comprising:
  • a set of registers capable of supplying data forming the operand of the inputs of said first arithmetic and logic unit and capable of being supplied with data originating from the outputs of said arithmetic and logic unit;
  • the process includes:
  • Such a method makes it possible, by dissociating in time the tasks relating to the processing of memory addresses and the calculation tasks, to exempt the ALU performing the calculations from carrying out further addressing operations which would necessitate stopping the calculation operations .
  • the processing as a whole becomes both asynchronous and self-adapting: elementary calculations are initiated (by an instruction transmitted to an ALU) only once the memory addresses have been updated in the local memory organs.
  • the sum of the time necessary to update the memory addresses in the local memory organs during a first process, then to perform the calculations during a second process is less than the time required for the same amount of resources to perform all of the processing during a single process (with access address updates memory in local memory organs on the fly).
  • the saving of time is particularly important in the case of iterative processing which can typically be carried out by means of computer loops.
  • a computerized data processing device is proposed, said processing being decomposable into a set of elementary operations to be carried out.
  • the device includes:
  • a set of registers capable of supplying data forming the operand of the inputs of said arithmetic and logic units and capable of being supplied with data from the outputs of said arithmetic and logic units;
  • the IT device is configured to:
  • a set of machine instructions is proposed for the implementation of a method as defined herein when this program is executed by a processor.
  • a computer program in particular a compilation program, is proposed, comprising instructions for the implementation of all or part of a process as defined herein when this program is executed by a processor.
  • a non-transient recording medium readable by a computer, is proposed on which such a program is recorded.
  • the first arithmetic and logic unit performs all the elementary calculations of the processing during consecutive calculation cycles, no memory access being carried out by said first arithmetic and logic unit during said calculation cycles. This allows the first arithmetic and logical unit to be dispensed from any memory access operation during elementary calculations and therefore to speed up the implementation of said calculations.
  • At least one of the following steps includes an iterative loop:
  • the device further comprises at least one additional arithmetic and logic unit and distinct from the first arithmetic and logic unit executing all of said elementary operations.
  • the additional arithmetic and logic unit implements:
  • the applicant also describes an approach in which, at each read operation, the number of data read is greater than the number of data strictly necessary for the implementation of the next calculation.
  • Such an approach could, in contrast, be called “predictive memory access”. It is then possible that a data item among the data read is used for a future calculation, other than the calculation implemented immediately after reading. In such cases, the necessary data was obtained during a single memory access operation (with increased memory bandwidth) while the usual approach would have required at least two separate memory accesses.
  • Such an approach therefore has the effect, at least in certain cases, of reducing the consumption of calculation cycles for memory accesses and therefore makes it possible to improve the efficiency of the device. In the long term (several consecutive calculation cycles) the number of memory accesses (in read and / or write) is reduced.
  • FIG. 1 shows an architecture of a computer device according to the invention
  • FIG. 2 is a partial representation of an architecture of a computer device according to the invention.
  • FIG. 3 shows an example of memory access
  • Figure 4 is a variant of the example of Figure 3;
  • FIG. 6 shows a chronological breakdown of an example of operation according to the invention.
  • FIG. 1 shows an example of a computing device 1.
  • the device 1 comprises a set of one or more processors 3, sometimes called central processing units or CPU for "Central Processing Units".
  • the processor assembly (s) 3 comprises at least one control unit 5 and at least one processing unit 7, or PU 7 for "Processing Unit".
  • Each PU 7 comprises one or more calculation units called arithmetic and logical units 9, or ALU 9 for "Arithmetic-Logic Unit".
  • each PU 7 further comprises a set of registers 11.
  • the device 1 comprises at least one memory 13 capable of interacting with the processor assembly (s) 3.
  • the device 1 comprises in addition a memory interface 15, or "Bus".
  • the memory organs are single-port, that is to say that the read and write operations are implemented during different cycles, as opposed to the memories called "double -port ”(more expensive in terms of surface area and requiring larger split control buses for writing and reading).
  • the proposed technical solutions can be implemented with so-called “dual-port” memories. In such embodiments, reads and writes can be implemented during the same calculation cycle.
  • three PU 7 are represented: PU 1, PU X and PU N. Only the structure of PU X is shown in detail in order to simplify FIG. 1. Nevertheless, the structures of the PUs are similar to each other. In variants, the number of PUs is different.
  • the device 1 can comprise a single PU, two PUs or more than three PUs.
  • the PU X comprises four ALUs: ALU X.0, ALU X.1, ALU X.2 and ALU X.3.
  • the PUs can comprise a number of ALUs which are different from each other and / or different from four, including a single ALU.
  • Each PU includes a set of registers 11, here at least one register 11 assigned to each ALU.
  • the PU X comprises a single register 11 per ALU, that is to say four registers referenced REG X.0, REG X.1, REG X.2 and REG X.3 and allocated respectively to ALU X.0, ALU X.1, ALU X.2 and ALU X.3.
  • each ALU is assigned a plurality of registers 11.
  • Each register 11 is capable of supplying operand type data with the inputs of said ALUs 9 and is capable of being supplied with data from the outputs of said ALUs.
  • Each register 11 is furthermore capable of storing data from memory 13 obtained via bus 15 by a so-called "read” operation.
  • Each register 11 is, furthermore, capable of transmitting stored data, destined for the memory 13 and via the bus 15, by a so-called "write” operation. The read and write operations are managed by controlling the memory accesses from the control unit 5.
  • the control unit 5 imposes on each ALU 9 the manner of carrying out elementary calculations, in particular their order, and attributes to each ALU 9 the operations to be executed.
  • the control unit 5 is configured to drive the ALUs 9 according to a micro-architecture in the processing chain so that the ALUs 9 perform calculations in parallel with each other. others.
  • the device 1 has an architecture with a single instruction stream and multiple data streams, called SIMD for “Single Instructions Multiple Data”, and / or an architecture with multiple instruction streams and multiple data streams, called MIMD for "Multiple Instructions Multiple Data”.
  • the control unit 5 is further arranged to control the memory accesses via the memory interface 15 and in particular, here, the read and write operations.
  • the two types of control (calculation and memory access) are represented, in FIG. 1, by arrows in broken lines.
  • FIG. 2 in which a single ALU Y is represented.
  • Data transmissions are represented by arrows with solid lines.
  • the data transmission being carried out step by step, it is understood that FIG. 2 does not necessarily represent an instant t with simultaneous data transmissions.
  • FIG. 2 does not necessarily represent an instant t with simultaneous data transmissions.
  • for a datum to be transmitted from a register 11 to an ALU 9 it is for example necessary that said datum is previously transmitted to said register 11 from the memory 13, here via the memory interface 15 (or Bus) .
  • each ALU 9 has at least three ports, namely two inputs and an output. For each operation, at least two operands are received, respectively by the first and the second input. The result of the calculation is issued via the output.
  • the operands received as input come from the REG Y.0 register and the REG Y.2 register respectively. The result of the calculation is entered in the REG register Y.1. Once registered in the REG Y.1 register, the result (in the form of data) is written in memory 13, via the memory interface 15.
  • at least one ALU can have more than two entries and receive more of two operands for a calculation.
  • Each ALU 9 can perform:
  • ALUs 9 do not directly exchange data with each other. For example, if the result of a first calculation performed by a first ALU constitutes an operand for a second calculation to be performed by a second ALU, then the result of the first calculation must at least be entered in a register 11 before being usable by an ALU 9.
  • the data written to a register 11 is also systematically written to memory 13 (via the memory interface 15), even if said data is obtained only to serve as an operand and not as a result of a whole treatment process.
  • the data obtained to serve as an operand and having a short relevance are not systematically written in memory 13 and can be stored only temporarily on a register 11.
  • the result of a first calculation carried out by a first ALU constitutes an operand for a second calculation to be carried out by a second ALU
  • the result of the first calculation must be entered in a register 11.
  • said data is transmitted to the second ALU as an operand directly from the register 11.
  • This allocation can in particular take the form of addressing data which makes it possible to locate, at all times, the location of a data item, whether on a register 11 or at a location in the memory 15.
  • the operation of the device 1 is described for a processing applied to computer data, the processing being composed of a set of operations, including calculations performed in parallel by a plurality of ALUs 9 over a period of time consisting of a sequence of calculation cycles. It is then said that the ALUs 9 operate according to a microarchitecture in the processing chain.
  • the processing implemented by the device 1 and which we are talking about here can itself constitute part (or a subset) of a more global IT process.
  • Such a more global process can include, in other parts or sub-assemblies, calculations carried out in a non-parallel manner by a plurality of ALUs, for example according to a series or cascade operation.
  • the operating architectures can be constant or dynamic, for example imposed (controlled) by the control unit 5.
  • the architectural variations can for example be a function of the data to be processed and the current instructions received in input of the device 1.
  • Such dynamic adaptation of the architectures can be implemented at the compilation stage, by adapting the machine instructions generated by the compiler according to the type of data to be processed and the instructions when the type of data to be processed and the instructions can be derived from the source code.
  • Such an adaptation can also be implemented only at the level of the device 1, or of a processor, when it executes a conventional machine code and when it is programmed to implement a set of configuration instructions according to the data. to be processed and current instructions received.
  • the memory interface 15, or "bus" transmits and routes the data between the ALUs 9 and the memory 15, in both directions.
  • the memory interface 15 is controlled by the control unit 5.
  • the control unit 5 controls access to the memory 13 of the device 1 via the memory interface 15.
  • the command 5 coordinates operations
  • the control of the control unit 5 includes the implementation of a succession of operations broken down into calculation cycles. Piloting includes the generation of a first cycle i and a second cycle ii. Chronologically, the first cycle i predates the second cycle ii. As will be described more in detail in the examples below, the second cycle ii can be immediately subsequent to the first cycle i, or else the first cycle i and the second cycle ii can be chronologically spaced from each other, for example with cycles intermediate.
  • the first cycle i includes:
  • the second cycle ii includes the implementation of a second calculation by at least one ALU 9.
  • the second calculation can be implemented by the same ALU 9 as the first calculation or by a separate ALU 9. At least part of the first data set downloaded during the first cycle i forms an operand for the second calculation.
  • Data, or blocks of data, are respectively referenced A0 to A15 and are stored in memory 13.
  • the data A0 to A15 are grouped by four as follows :
  • AA0_3 a data set referenced AA0_3 consisting of data A0, A1, A2 and A3;
  • AA4_7 a data set referenced AA4_7 consisting of data A4, A5, A6 and A 7;
  • AA8_11 a data set referenced AA8_11 consisting of data A8, A9, A10 and A11;
  • AA12_15 a data set referenced AA12_15 consisting of data A12, A13, A14 and A15.
  • the data can be grouped differently, in particular by group (or “block”, or “slot”) of two, three or more than four.
  • a data set can be seen as a group of data accessible on the memory 13 via a single port of the memory interface 15 during a single read operation.
  • the data of a data set can be written into memory 13 via a single port of the memory interface 15 during a single write operation.
  • at least one data set AA0_3, AA4_7, AA8_11 and / or AA12_15 is downloaded to at least one register 11.
  • each of the data sets AA0_3, AA4_7, AA8_11 and / or AA12_15 is downloaded to a respective register 11, that is to say four registers 1 1 distinct from each other.
  • Each of the registers 11 is assigned at least temporarily to a respective ALU 9, here referenced respectively ALU 0, ALU 1 ALU 2 and ALU 3.
  • the ALUs 9 may have implemented a calculation.
  • each ALU 9 implements a calculation for which at least one of the data stored in the corresponding register 1 1 forms an operand.
  • ALU 0 implements a calculation, one of the operands of which is A0.
  • A1, A2 and A3 may be unused during the second cycle ii.
  • downloading data from memory 13 to a register 11 consumes less computation time than implementing calculations by ALUs 9.
  • a memory access operation here a reading
  • the implementation of a calculation by an ALU 9 consumes a calculation cycle or a succession of several calculation cycles, for example four.
  • FIG. 3 there are a plurality of registers 11 allocated to each ALU 9, represented by groups of registers 11 referenced REG A, REG B and REG C.
  • the data downloaded from the memory 13 on the registers 11 correspond to the REG A and REG B groups.
  • the REG C group is here intended to store data obtained by calculations implemented by the ALUs 9 (during a write operation).
  • the registers 11 of the REG B and REG C groups can thus contain data sets referenced in a similar way to those of REG A:
  • the REG B group includes four registers 11 on which are respectively stored a data set BB0_3 consisting of data B0 to B3, a data set BB4_7 consisting of data B4 to B7, a data set BB8_11 consisting of data B8 to B11 and a data set BB12_15 consisting of data B12 to B15;
  • the group REG C comprises four registers 11 on which are respectively stored a data set CC0_3 consisting of data C0 to C3, a data set CC4_7 consisting of data C4 to C7, a data set CC8_11 consisting of data C8 to C11 and a CC12_15 data set consisting of data C12 to C15.
  • the data AN and BN constitute the operands of a calculation implemented by an ALU 9 while the data CN constitutes the result, with “N” an integer between 0 and 15.
  • CN AN + BN.
  • the data processing implemented by the device 1 corresponds to 16 operations. The 16 operations are independent of each other in the sense that none of the results of the 16 operations is necessary to implement one of the other 15 operations.
  • the implementation of the treatment (the 16 operations) can therefore, for example, be broken down as follows, into 18 cycles.
  • cycle # 2 calculation of C0 (of game CC0_3) and reading of AA4_7 (forming for example a cycle i);
  • cycle # 7 calculation of C5 (from game CC4_7) and reading of BB8_11 (for example forming a cycle ii);
  • cycle # 8 calculation of C6 (from game CC4_7) (for example forming a cycle ii);
  • example 1 (18 cycles), we notice that the first two cycles # 0 and # 1 constitute initialization cycles.
  • the number I of initialization cycles corresponds to the number of operands per calculation.
  • a pattern of four successive cycles is repeated four times. For example, cycles # 2 to # 5 together form a pattern.
  • the number of cycles per pattern corresponds to the number D of data per data set while the number of patterns corresponds to the number E of data set to be processed.
  • the total number of cycles can therefore be expressed as follows: I + D * E.
  • the number of data accessible (in reading or writing) in a single cycle is equal to three (and no longer four), for example because of material limitations.
  • the succession of cycles can, for example, be broken down as follows:
  • each cycle includes a memory access operation (read or write). It is therefore understood that, if the number D of data accessible in a single cycle is strictly less than three, then additional cycles will be necessary to perform memory accesses. The optimum of 18 cycles for 16 elementary operations will therefore no longer be reached. However, even if the optimum is not reached, the number of cycles remains significantly less than the number of cycles required in Example 0.
  • An embodiment in which the data sets comprise two data presents an improvement compared to to the existing.
  • the small total number of cycles is achieved in particular because a maximum of memory access operations is implemented per set of (several) data rather than individually and in parallel with calculation operations.
  • the reading of all the necessary operands can be completed even before the preceding elementary calculation operation is completed.
  • it is preserved from the computing power to perform a calculation and record (write operation) the result of said calculation in a common calculation cycle (cycle # 5 of example 1 for example).
  • reading the operand data in advance is implemented throughout the process (repeated from one pattern to another).
  • the operands necessary for the calculations carried out during a pattern are systematically obtained (read) during the chronologically previous pattern.
  • the reading in advance is implemented only partially (for two successive reasons only). Such degraded mode compared to the examples above presents better results than the existing methods.
  • the data is read before serving as operands.
  • the data read in advance are read randomly, or at least independently of the calculations to be performed in the future.
  • at least some of the data read in advance from the data sets effectively correspond to operands for subsequent calculations while other data read are not operands for subsequent calculations.
  • at least some of the data read can be subsequently erased from the registers 11 without having been used by the ALUs 9, typically overwritten by other data subsequently recorded in the registers 11. Certain data are therefore read unnecessarily (and recorded unnecessarily on registers 11).
  • the data read in advance are preselected, and depend on the calculations to be performed. This improves the relevance of the pre-read data. Indeed, in the examples with 16 elementary calculations above, each of the 16 elementary calculations requires as input a pair of operands, respectively A0 and B0; A1 and B1; ...; A15 and B15. If the data is read randomly, then the first two cycles could correspond to the reading of AA0_3 and BB4_7. In such a case, no complete pair of operands is available on the registers 11 at the end of the first two cycles. Consequently, ALUs 9 cannot carry out any elementary calculation in the following cycle.
  • Such an algorithm receives as input parameters information data relating to the calculations to be carried out subsequently by the ALUs 9, and in particular relating to the necessary operands. Such an algorithm makes it possible, at the output, to select the data read (per set) in anticipation of the future calculations to be performed.
  • Such an algorithm is, for example, implemented by the control unit 5 when controlling the memory accesses. According to a first approach, the algorithm imposes an organization of the data as soon as they are recorded in the memory 13. For example, the data which one wishes to see forming together a dataset are juxtaposed and / or scheduled so that the whole of the dataset can be called by a single query.
  • the memory interface 15 can be configured for, in response to a read request on @ A0 , read the data automatically at the following three addresses @ A1, @ A2 and @ A3.
  • the prefetch algorithm provided at the output of the memory access requests adapted as a function of the calculations to be performed subsequently by the ALUs 9, and in particular relating to the necessary operands.
  • the algorithm identifies for example that the data to be read in priority are those of AA0_3 and BB0_3 to make possible, from the next cycle, the elementary calculations resulting in CC0_3, that is to say the calculation of CO with the operands AO and BO, the calculation of C1 with the operands A1 and B1, the calculation of C2 with the operands A2 and B2 and the calculation of C3 with the operands A3 and B3.
  • the algorithm therefore provides, at the output, memory access requests constructed to generate the reading of AA0_3 and BB0 3.
  • the algorithm identifies the data to be read and the control unit 5 deduces therefrom requests for memory access to the memory interface 15 to obtain said data , the requests being adapted as a function of the characteristics (structure and protocol) of the memory interface 15.
  • the number of ALUs assigned to elementary calculations is not defined.
  • a single ALU 9 can perform all of the elementary calculations, cycle by cycle.
  • the elementary calculations to be performed can also be distributed over a plurality of ALUs 9 of a PU, for example four. In such cases, coordinating the distribution of the calculations on the ALUs with the manner of grouping the data to be read in each read operation can make it possible to further improve efficiency. Two approaches stand out.
  • the data read in one operation form operands in calculations implemented by a single ALU 9.
  • the groups AA0_3 and BB0_3 of data A0, A1, A2, A3, B0, B1, B2 and B3 are read first and a first ALU is responsible for calculating CC0 3 (C0, C1, C2 and C3).
  • the groups AA4 _7 (A4, A5, A6, A7) and BB4_7 (B4, B5, B6 and B7) are then read and a second ALU is responsible for calculating CC4_7 (C4, C5, C6 and C7).
  • the first ALU will be able to start implementing the calculations before the second ALU can do the same because the operands necessary for the calculations of the first ALU will be available on the registers 11 before the operands necessary for the calculations of the second ALU are.
  • the ALUs 9 of a PU then operate in parallel and asynchronous fashion.
  • the data read in one operation form operands in calculations each implemented by different ALUs 9, for example four. For example, two groups of data including A0, A4, A8 and A12 respectively; B0, B4, B8 and B12 are read first.
  • a first ALU is responsible for calculating C0
  • a second ALU is responsible for calculating C4
  • a third ALU is responsible for calculating C8
  • a fourth ALU is responsible for calculating C12. It will then be understood that the four ALUs will be able to start implementing their respective calculation in a substantially simultaneous manner, because the necessary operands will be available on the registers 11 at the same time as downloaded in a common operation.
  • the ALUs 9 of a PU operate in parallel and synchronized. Depending on the types of calculations to be performed, the accessibility of the data in memory and the resources available, one or the other of the two approaches may be preferred.
  • the two approaches can also be combined: the ALUs can be organized into subgroups, the ALUs of a subgroup operating in synchronized fashion and the subgroups operating asynchronously with respect to each other.
  • the grouping of the data to be read by read operation must be selected in correspondence with the distribution of the assignments of the calculation operations to various ALUs.
  • the elementary calculations are independent of each other. The order in which they are carried out therefore does not a priori matter.
  • the scheduling of the calculations can be specific. Such a situation typically arises in the context of recursive computations.
  • the algorithm can be configured to identify the data to be acquired (read) in priority. For example, if:
  • the result C9 is obtained by a calculation of which one of the operands is C8, C8 being itself obtained from the operands A8 and B8, and
  • the result C13 is obtained by a calculation of which one of the operands is C12, C12 itself being obtained from the operands A12 and B12,
  • the algorithm can be configured to read, during the first two cycles # 0 and # 1 of initialization, the data sets defined as follows:
  • the dataset thus defined is represented in FIG. 4.
  • the data are grouped “online” in the embodiment represented in FIG. 3 and grouped “in column” in the embodiment represented in FIG. 4.
  • the implementation of the algorithm makes it possible to read and make available on the registers 11, the operands useful for the priority elementary computations.
  • the implementation of the algorithm makes it possible to increase the short-term relevance of the data read compared to a random reading.
  • processors - a processor or a set of processors
  • FIG. 5 There is shown an example of the operating architecture of a device 1 in which the memory access and address processing operations are treated separately. Elementary calculation operations.
  • Such an architecture can take the form of a computer process. It can optionally be combined with the embodiments described above.
  • the numerical references common with those of the preceding figures designate similar elements, in particular a control unit 5, an ALU 9, registers 11, a memory 13 and a memory interface 15, or "bus".
  • a set of instructions can be implemented by the computer device 1.
  • An example of such a set of instructions is given at the end of the description in the form of a computer pseudocode. .
  • Such instructions are applied one after the other during a common process implemented by an ALU 9.
  • the instructions relating to memory accesses and the instructions relating to operations elementary computations are processed by separate processes from each other.
  • the method can be broken down into steps referenced respectively 101 to 109.
  • the memory addresses @ A0 to @AN, respectively @ B0 to @BN, of each of the data forming operands for at least one of the elementary operations to be performed are obtained.
  • “obtained” is meant that at the end of operations 101 and 102, one or more local memory organs store the addresses of all the data forming operand.
  • Such memory accesses are for example triggered by the reception of instructions from the control unit 5.
  • at least some of said addresses are already stored in the local memory organs. No memory access is therefore necessary at this stage to obtain said addresses previously installed on the local memory organs.
  • step 101 concerning the first operands "A" of the addition and from step 102 concerning the second operands "B” of the addition. Distinguishing the two operands then makes it possible to implement iterative loops (in the computer sense) specific to each of the two operands, and possibly different from each other.
  • steps 101 and 102 can be implemented at least partially in parallel with one another, independently of one another.
  • step 103 and 104 each of said data obtained, respectively A0 to AN and B0 to BN, is read from memory 13, for loading into registers 11, via the memory interface 15. Such readings are made possible by addresses obtained in steps 101 and 102.
  • step 103 concerns the first operands "A” while step 104 concerns the second operands "B".
  • a calculation execution instruction is transmitted from the control unit 5 to an ALU 9.
  • the execution instruction is constructed so as to trigger the implementation of the calculations basic treatment for ALU 9.
  • the instruction here is devoid of addressing instruction.
  • devoid of addressing instruction it is meant here that, contrary to what is usually done, the instruction for carrying out calculations transmitted by the control unit 5 is not included in a general instruction set combining both addressing instructions and instructions for performing calculations.
  • the ALU 9 is able to immediately apply the instructions by carrying out the elementary calculations without the need to apply instructions for configuring the memory interface 15 in advance and therefore without it being necessary, either, to verify any mutual dependence on the various instructions received.
  • the ALU 9 then behaves like a computer resource implementing the calculations (step 106 described below) independently of a possible complexity of interdependence between the different instructions.
  • the registers 11 behave like first-in-first-out (or FIFO for “First In, First Out”) buffers.
  • the registers 11 filling and emptying respecting the order of arrival of the data, here the operands AN (step 103) and BN (step 104).
  • Step 106 is executed if the registers 11 are not empty: the registers 11 are unstacked from the operands AN and BN. As a variant, the registers 11 do not operate in FIFO mode. In this case, data can be stored there more permanently without the risk of being erased and can be reused later if necessary.
  • step 106 upon receipt of the instruction for executing calculations, the ALU 9 executes all of the corresponding elementary operations, as soon as the operands are available in the registers 11. Step 106 therefore includes the reception of the ALU 9 of each of the operands from the registers 11 as inputs. Provided that the addressing operations 103, 104 have been previously and correctly carried out, step 106 can be devoid of memory access (read).
  • step 107 the data forming results of the processing are stored on the registers 11 at the outputs of the ALU 9.
  • the results of the processing and not the results of each of the elementary calculations. Indeed, in the case where some of the results of the elementary calculations are used as operands for other elementary calculations during step 107, such (intermediate) results may become useless at the end of the processing. In these cases, the intermediate results can be deleted from the registers 11 at the end of step 107 (for example overwritten by other data, FIFO mode). As a variant, all of the data forming results of elementary operations are stored on registers 11 at the end of step 107 (mode different from FIFO).
  • step 108 a memory address @CX for each of the CX data forming the result of the processing is obtained.
  • Such an addressing operation makes it possible to determine the memory location on which each of the data forming the result will be stored.
  • step 108 is implemented after step 107 of recording the results in the registers 11 and before writing the results to memory 13 (step 109 described below).
  • step 107 can be implemented earlier during the process, in particular before step 106. In fact, especially when the shape (for example the size) of the result data is known in advance, it is possible to address the result data even before their calculation.
  • Obtaining the @CX memory addresses may include the transmission of addressing instructions from the control unit 5.
  • each of the data forming the result of the processing is written into memory 13 from registers 11, for storage and via the memory interface 15, by means of the memory addresses obtained in step 108.
  • steps 101, 102, 106 and 108 are given in the form of a computer pseudocode.
  • Such non-limiting examples represent operations in the form of computer loops.
  • the use of loops is particularly advantageous for limiting the number of calculation cycles necessary, and therefore for improving efficiency, when the operations to be implemented are substantially analogous to each other (for example all additions) and that only the input data varies.
  • the calculation instructions transmitted in step 105 may take the form of a repetitive loop for each operation.
  • FIG. 6 illustrates that, unlike the use in the technical field, the addressing of the input data (operands) is implemented distinct from the calculations themselves. In other words, addressing and calculation are treated as two separate processes from each other rather than being treated indiscriminately, on the fly, upon receipt of general instructions.
  • the step 106 for executing the elementary operations can start even though all the operands have not yet been downloaded from the memory 13 to the registers 11.
  • the first cycles of the step 106 can start as soon as that the first corresponding operands are available on the registers 11 for the calculations. This cascading implementation of operations gives the system its asynchronous nature.
  • the ALU 9 performs (step 106) all of the elementary calculations of the processing during consecutive calculation cycles. No memory access is made by the ALU 9 during these calculation cycles. Thus, the implementation of the calculations can be particularly rapid. The ALU 9, during such cycles, is exempt from memory access operation. In addition, from the point of view of the ALU 9 performing the calculations, obtaining the operands is similar to calling memory 13 but obtaining the operands is faster and independent of the memory interface 15 because the operands are in practice read directly from the registers 11. The memory accesses are implemented by another ALU (separate from the one performing the calculations). At least during a process, each ALU 9 has a fixed function: either the implementation of calculations, or the implementation of memory accesses.
  • each ALU 9 can be modified at the end of the implementation of the process to give flexibility to the IT device. However, this often involves adapting the addressing path accordingly. In the preferred embodiments, the function of each ALU 9 is therefore frozen from one process to another: the ALUs are specialized.
  • the methods and variants described above can take the form of a computer device, including a processor or a set of processors, arranged to implement such a method.
  • the invention is not limited to the examples of methods and devices described above, only by way of example, but it encompasses all the variants that a person skilled in the art may envisage within the framework of the protection sought.
  • the invention also relates to a set of machine instructions which can be implemented in a processor for obtaining such a computing device, such as a processor or a set of processors, the implementation of such a set of machine instructions on a processor, the processor architecture management method implemented by the processor, the computer program comprising the corresponding set of machine instructions, as well as the recording medium on which such a set of machine instructions is recorded by computer.
  • reg2 regO + governed
  • GOTO LOOP (10x) Example in the form of a computer pseudocode of instructions for carrying out a processing consisting of ten additions according to an embodiment in which the addressing instructions and the calculation instructions are distinguished from each other: // step 101 //

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)

Abstract

The invention concerns a data processing method comprising: - a control unit, at least one ALU (9), a set of registers (11), a memory (13) and a memory interface (15). The method comprises: a) obtaining (101, 102) the memory addresses of the operands; b) reading (103, 104) the operands in the memory (13); c) transmitting (105) an instruction to execute calculations to the ALU (9) without an addressing instruction; d) executing all the elementary operations (106) by the ALU (9) receiving as input each of the operands from the registers (11); e) storing (107) the data forming results of the processing operation on the registers (11); f) obtaining (108) a memory address for each of the data items forming a result of the processing operation; g) writing (109) the results in the memory (13), for storage and via the memory interface (15), by means of the obtained memory addresses.

Description

Architecture de processeur asynchrone  Asynchronous processor architecture
L’invention relève du domaine des processeurs et de leur architecture fonctionnelle. The invention relates to the field of processors and their functional architecture.
Classiquement, un dispositif informatique comprend un ensemble d’un ou plusieurs processeurs. Chaque processeur comprend une ou plusieurs unités de traitement, ou PU pour « Processing Units ». Chaque PU comprend un ou plusieurs organes de calcul appelés unités arithmétiques et logiques, ou ALU pour « Arithmetic-Logic Unit ». Pour disposer d’un dispositif informatique performant, c’est-à-dire rapide pour effectuer des opérations informatiques, il est classique de prévoir un nombre élevé d’ALU. Ainsi, les ALU peuvent traiter des opérations en parallèle, c’est-à-dire en même temps. L’unité de temps est alors un cycle de calcul. Il est donc commun de quantifier la puissance de calcul du dispositif informatique en nombre d’opérations qu’il est capable d’effectuer par cycle de calcul. Conventionally, a computing device comprises a set of one or more processors. Each processor includes one or more processing units, or PU for "Processing Units". Each PU includes one or more calculation units called arithmetic and logical units, or ALU for "Arithmetic-Logic Unit". To have a high-performance IT device, that is to say fast to perform IT operations, it is conventional to provide a high number of ALUs. Thus, ALUs can process operations in parallel, i.e. at the same time. The unit of time is then a cycle of calculation. It is therefore common to quantify the computing power of the IT device in terms of the number of operations it is capable of performing per computing cycle.
Néanmoins, une part importante de la puissance de calcul d’un dispositif informatique est consommée pour gérer les accès mémoire. Un tel dispositif comprend un ensemble mémoire, comprenant lui-même un ou plusieurs organes mémoire, chacun disposant d’un nombre fixe d’emplacements mémoire sur lesquels des données informatiques peuvent être stockées durablement. Au cours des traitements informatiques, les ALU reçoivent en entrée des données issues des organes mémoires et fournissent en sortie des données qui sont, à leur tour, stockées sur les organes mémoires. On comprend alors que, outre le nombre d’ALU, le nombre d’organes mémoire est un autre critère déterminant de la puissance de calcul du dispositif. However, a significant part of the computing power of a computing device is consumed to manage memory access. Such a device comprises a memory assembly, itself comprising one or more memory organs, each having a fixed number of memory locations on which computer data can be permanently stored. During computer processing, the ALUs receive input data from the memory organs and output data which, in turn, is stored on the memory organs. It is therefore understood that, in addition to the number of ALUs, the number of memory units is another determining criterion of the computing power of the device.
Le routage des données entre les ALU et les organes mémoire, dans les deux sens, est assuré par un bus du dispositif. Le terme « bus » est utilisé ici dans son sens général de système (ou interface) de transfert de données incluant du matériel (circuit d’interface) et les protocoles régissant les échanges. Le bus transmet les données elles-mêmes, des adresses et des signaux de commande. Chaque bus présente, lui aussi, des limites matérielles et logicielles de sorte que le routage des données est limité. Notamment, le bus présente un nombre limité de ports côté organe mémoire et un nombre limité de ports côté ALUs. Ainsi, au cours d’un cycle de calcul, un emplacement mémoire est accessible via le bus dans un unique sens (en « lecture » ou en « écriture »). En outre, au cours d’un cycle de calcul, un emplacement mémoire est accessible pour une unique ALU. Data routing between the ALUs and the memory devices, in both directions, is ensured by a device bus. The term “bus” is used here in its general sense of system (or interface) of data transfer including hardware (interface circuit) and the protocols governing the exchanges. The bus transmits the data itself, addresses and control signals. Each bus also has hardware limits and software so that data routing is limited. In particular, the bus has a limited number of ports on the memory unit side and a limited number of ports on the ALUs side. Thus, during a calculation cycle, a memory location is accessible via the bus in a single direction (in “read” or in “write”). In addition, during a calculation cycle, a memory location is accessible for a single ALU.
Entre le bus et les ALUs, un dispositif informatique comprend généralement un jeu de registres et d’organes mémoires locaux, qui peuvent être vus comme des mémoires distinctes des organes mémoires précités. Pour faciliter la compréhension, on distingue ici les « registres », destinés à stocker des données en tant que telles, et les « organes mémoires locaux », destinés à stocker des adresses mémoire. À chaque registre sont attribuées les ALUs d’une PU. Une PU se voit attribuée plusieurs registres. La capacité de stockage des registres est très limitée en comparaison des organes mémoire mais leur contenu est directement accessible aux ALUs. Between the bus and the ALUs, a computing device generally comprises a set of registers and local memory organs, which can be seen as memories distinct from the aforementioned memory organs. To facilitate understanding, a distinction is made here between "registers", intended for storing data as such, and "local memory organs", intended for storing memory addresses. The ALUs of a PU are assigned to each register. A PU is assigned several registers. The storage capacity of the registers is very limited in comparison with the memory devices, but their content is directly accessible to the ALUs.
Pour effectuer les calculs, chaque ALU doit généralement, dans un premier temps, obtenir les données d’entrée du calcul, typiquement les deux opérandes d’un calcul élémentaire. Une opération de « lecture » de l’emplacement mémoire correspondant via le bus pour importer chacun des deux opérandes sur un registre est donc mise en œuvre. Puis, l’ALU effectue l’opération de calcul en elle-même à partir des données d’un registre et en exportant le résultat sous forme d’une donnée sur un registre. Enfin, une opération d’ « écriture » est mise en œuvre pour enregistrer, dans un emplacement mémoire, le résultat du calcul. Au cours d’une telle opération d’écriture, le résultat stocké sur le registre est enregistré dans un emplacement mémoire via le bus. Chacune des opérations consomme a priori un ou plusieurs cycles de calcul. To perform the calculations, each ALU must generally first obtain the calculation input data, typically the two operands of an elementary calculation. An operation of "reading" the corresponding memory location via the bus to import each of the two operands into a register is therefore implemented. Then, the ALU performs the calculation operation by itself from data in a register and by exporting the result as data to a register. Finally, a "write" operation is implemented to save, in a memory location, the result of the calculation. During such a write operation, the result stored in the register is saved in a memory location via the bus. Each of the operations a priori consumes one or more calculation cycles.
Dans les dispositifs informatiques connus, il est usuel d’essayer de faire exécuter plusieurs opérations (ou plusieurs instructions) au cours d’un même cycle de calcul, afin de réduire le nombre total de cycles de calcul et donc d’augmenter l’efficacité. On parle alors de « chaînes de traitement » ou « pipelines » parallèles. Cependant, il existe souvent de nombreuses dépendances des opérations les unes par rapport aux autres. Par exemple, il est impossible d’effectuer un calcul élémentaire tant que les opérandes n’ont pas été lus et qu’ils ne sont pas accessibles sur un registre pour l’ALU. Mettre en œuvre des chaînes de traitement implique donc de vérifier la dépendance des opérations (des instructions) les unes par rapport aux autres, ce qui est complexe et donc coûteux. In known computer devices, it is usual to try to execute several operations (or several instructions) during the same calculation cycle, in order to reduce the total number of calculation cycles and therefore to increase the efficiency . We then speak of parallel “processing chains” or “pipelines”. However, there are often many dependencies of operations on each other. For example, it is impossible to carry out an elementary calculation until the operands have not been read and they are not accessible on a register for the ALU. Implementing processing chains therefore involves checking the dependence of operations (instructions) on each other, which is complex and therefore costly.
Usuellement, plusieurs opérations indépendantes sont mises en œuvre au cours d’un même cycle de calcul. Généralement, pour une ALU donnée et au cours d’un même cycle de calcul, il est possible d’effectuer une opération de calcul et une opération de lecture ou d’écriture. En revanche, pour une ALU donnée et au cours d’un même cycle de calcul, il est impossible d’effectuer à la fois une opération de lecture et une opération d’écriture (dans le cas d’organes mémoire mono-port). D’autre part, les accès mémoire (le bus) ne permettent pas d’effectuer, au cours d’un même cycle de calcul et pour un emplacement mémoire donné, des opérations de lecture ou d’écriture pour deux ALUs distinctes l’une de l’autre. Usually, several independent operations are implemented during the same calculation cycle. Generally, for a given ALU and during the same calculation cycle, it is possible to perform a calculation operation and a read or write operation. On the other hand, for a given ALU and during the same calculation cycle, it is impossible to carry out both a read operation and a write operation (in the case of single-port memory organs). On the other hand, the memory accesses (the bus) do not make it possible, during the same calculation cycle and for a given memory location, to read or write operations for two separate ALUs, one the other.
Par conséquent, il est connu d’effectuer un calcul élémentaire et d’écrire le résultat obtenu en mémoire au cours d’un même cycle de calcul. L’économie en termes de cycles de calculs (ou de ressources informatiques) reste faible. Consequently, it is known to perform an elementary calculation and to write the result obtained in memory during the same calculation cycle. The economy in terms of calculation cycles (or IT resources) remains weak.
L’invention vient améliorer la situation. The invention improves the situation.
Il est proposé un procédé de traitement de données, décomposable en un ensemble d’opérations élémentaires à effectuer, mis en œuvre par un dispositif informatique, ledit dispositif comprenant : A data processing method is proposed, which can be broken down into a set of elementary operations to be carried out, implemented by a computer device, said device comprising:
- une unité de commande ;  - a control unit;
- au moins une unité arithmétique et logique ;  - at least one arithmetic and logical unit;
- un jeu de registres aptes à alimenter en données formant opérande des entrées de ladite première unité arithmétique et logique et aptes à être alimentés en données issues des sorties de ladite unité arithmétique et logique ;  a set of registers capable of supplying data forming the operand of the inputs of said first arithmetic and logic unit and capable of being supplied with data originating from the outputs of said arithmetic and logic unit;
- une mémoire ;  - a memory ;
- une interface mémoire par l’intermédiaire de laquelle des données sont transmises et routées entre les registres et la mémoire. - a memory interface through which data is transmitted and routed between registers and memory.
Le procédé comprend :  The process includes:
a) obtenir les adresses mémoire de chacune des données absentes des registres et formant opérande pour une au moins desdites opérations élémentaires à effectuer et ; a) obtaining the memory addresses of each of the data absent from the registers and forming an operand for at least one of said elementary operations to be carried out and;
b) lire en mémoire, pour chargement dans les registres via l’interface mémoire, chacune desdites données au moyen des adresses mémoire obtenues ; b) read from memory, for loading into the registers via the memory interface, each of said data by means of the memory addresses obtained;
c) transmettre une instruction d’exécution de calculs depuis l’unité de commande à destination de ladite première unité arithmétique et logique, ladite instruction étant dépourvue d’instruction d’adressage ; c) transmit an instruction for executing calculations from the control unit to said first arithmetic and logic unit, said instruction being devoid of addressing instructions;
d) à réception de ladite instruction d’exécution de calculs, et dès que les opérandes correspondants sont disponibles sur les registres, exécuter l’ensemble desdites opérations élémentaires par ladite première unité arithmétique et logique recevant en entrées chacun des opérandes depuis les registres ; d) upon receipt of said instruction for executing calculations, and as soon as the corresponding operands are available in the registers, execute all of said elementary operations by said first arithmetic and logic unit receiving each of the operands from the registers as inputs;
e) stocker les données formant résultats du traitement sur les registres en sorties de ladite première unité arithmétique et logique ; e) storing the data forming processing results on the registers at the outputs of said first arithmetic and logic unit;
f) obtenir une adresses mémoire pour chacune des données formant résultat du traitement ; f) obtaining a memory address for each of the data forming the result of the processing;
g) écrire en mémoire chacune des données formant résultat du traitement issues des registres, pour stockage et via l’interface mémoire, au moyen des adresses mémoire obtenues. g) write in memory each of the data forming a result of the processing coming from the registers, for storage and via the memory interface, by means of the memory addresses obtained.
Un tel procédé permet, en dissociant dans le temps les tâches relatives au traitement des adresses mémoires et les tâches de calcul, de dispenser l’ALU effectuant des calculs d’effectuer en outre des opérations d’adressage qui nécessiterait de stopper les opérations de calcul. Ce faisant, le traitement dans son ensemble devient à la fois asynchrone et auto adaptable : les calculs élémentaires sont initiés (par une instruction transmise à une ALU) seulement une fois que les adresses mémoires ont été mises à jour dans les organes mémoires locaux. En dissociant les deux types d’opérations (mise à jour des adresses mémoire dans les organes mémoires locaux d’une part et calcul d’autre part), le temps de traitement peut être réduit. Autrement dit, pour une quantité de ressources fixée, la somme du temps nécessaire pour mettre à jour les adresse mémoire dans les organes mémoires locaux au cours d’un premier processus, puis pour effectuer les calculs au cours d’un second processus, est inférieur au temps nécessaire à la même quantité de ressources pour effectuer l’ensemble du traitement au cours d’un unique processus (avec des accès mise à jour d’adresses mémoire dans les organes mémoires locaux à la volée). Le gain de temps est particulièrement important dans le cas de traitements itératifs qui peuvent typiquement être effectués au moyen de boucles informatiques. Such a method makes it possible, by dissociating in time the tasks relating to the processing of memory addresses and the calculation tasks, to exempt the ALU performing the calculations from carrying out further addressing operations which would necessitate stopping the calculation operations . In doing so, the processing as a whole becomes both asynchronous and self-adapting: elementary calculations are initiated (by an instruction transmitted to an ALU) only once the memory addresses have been updated in the local memory organs. By dissociating the two types of operations (updating memory addresses in local memory organs on the one hand and calculation on the other hand), the processing time can be reduced. In other words, for a fixed quantity of resources, the sum of the time necessary to update the memory addresses in the local memory organs during a first process, then to perform the calculations during a second process, is less than the time required for the same amount of resources to perform all of the processing during a single process (with access address updates memory in local memory organs on the fly). The saving of time is particularly important in the case of iterative processing which can typically be carried out by means of computer loops.
Selon un autre aspect, il est proposé un dispositif informatique de traitement de données, ledit traitement étant décomposable en un ensemble d’opérations élémentaires à effectuer. Le dispositif comprend : According to another aspect, a computerized data processing device is proposed, said processing being decomposable into a set of elementary operations to be carried out. The device includes:
- une unité de commande ;  - a control unit;
- au moins une première unité arithmétique et logique parmi une pluralité ;  - at least a first arithmetic and logical unit among a plurality;
- un jeu de registres aptes à alimenter en données formant opérande des entrées desdites unités arithmétiques et logiques et aptes à être alimentés en données issues des sorties desdites unités arithmétiques et logiques ;  a set of registers capable of supplying data forming the operand of the inputs of said arithmetic and logic units and capable of being supplied with data from the outputs of said arithmetic and logic units;
- une mémoire ;  - a memory ;
- une interface mémoire par l’intermédiaire de laquelle des données sont transmises et routées entre les registres et la mémoire. Le dispositif informatique est configuré pour :  - a memory interface through which data is transmitted and routed between registers and memory. The IT device is configured to:
a) obtenir les adresses mémoire de chacune des données absentes des registres et formant opérande pour une au moins desdites opérations élémentaires à effectuer et ; a) obtaining the memory addresses of each of the data absent from the registers and forming an operand for at least one of said elementary operations to be carried out and;
b) lire en mémoire, pour chargement dans les registres via l’interface mémoire, chacune desdites données au moyen des adresses mémoire obtenues ; b) read from memory, for loading into the registers via the memory interface, each of said data by means of the memory addresses obtained;
c) transmettre une instruction d’exécution de calculs depuis l’unité de commande à destination de ladite première unité arithmétique et logique, ladite instruction étant dépourvue d’instruction d’adressage ; c) transmit an instruction for executing calculations from the control unit to said first arithmetic and logic unit, said instruction being devoid of addressing instructions;
d) à réception de ladite instruction d’exécution de calculs, et dès que les opérandes sont disponibles sur les registres, exécuter l’ensemble desdites opérations élémentaires par ladite première unité arithmétique et logique recevant en entrées chacun des opérandes depuis les registres ; d) upon receipt of said instruction for carrying out calculations, and as soon as the operands are available in the registers, execute all of said elementary operations by said first arithmetic and logic unit receiving as inputs each of the operands from the registers;
e) stocker les données formant résultats du traitement sur les registres en sorties de ladite première unité arithmétique et logique ; e) storing the data forming processing results on the registers at the outputs of said first arithmetic and logic unit;
f) obtenir une adresses mémoire pour chacune des données formant résultat du traitement ; g) écrire en mémoire chacune des données formant résultat du traitement issues des registres, pour stockage et via l’interface mémoire, au moyen des adresses mémoire obtenues. f) obtaining a memory address for each of the data forming the result of the processing; g) write in memory each of the data forming a result of the processing coming from the registers, for storage and via the memory interface, by means of the memory addresses obtained.
Selon un autre aspect, il est proposé un jeu d’instructions machines pour la mise en œuvre d’un procédé tel que défini dans les présentes lorsque ce programme est exécuté par un processeur. Selon un autre aspect, il est proposé un programme informatique, notamment de compilation, comportant des instructions pour la mise en œuvre de tout ou partie d’un procédé tel que défini dans les présentes lorsque ce programme est exécuté par un processeur. Selon un autre aspect, il est proposé un support d’enregistrement non transitoire, lisible par un ordinateur, sur lequel est enregistré un tel programme. According to another aspect, a set of machine instructions is proposed for the implementation of a method as defined herein when this program is executed by a processor. According to another aspect, a computer program, in particular a compilation program, is proposed, comprising instructions for the implementation of all or part of a process as defined herein when this program is executed by a processor. According to another aspect, a non-transient recording medium, readable by a computer, is proposed on which such a program is recorded.
Les caractéristiques suivantes peuvent, optionnellement, être mises en œuvre. Elles peuvent être mises en œuvre indépendamment les unes des autres ou en combinaison les unes avec les autres : The following features can optionally be implemented. They can be implemented independently of each other or in combination with each other:
- La première unité arithmétique et logique exécute l’ensemble des calculs élémentaires du traitement au cours de cycles de calculs consécutifs, aucun accès mémoire n’étant effectué par ladite première unité arithmétique et logique durant lesdits cycles de calculs. Cela permet de dispenser la première unité arithmétique et logique de toute opération d’accès mémoire durant les calculs élémentaires et donc d’accélérer la mise en œuvre desdits calculs.  - The first arithmetic and logic unit performs all the elementary calculations of the processing during consecutive calculation cycles, no memory access being carried out by said first arithmetic and logic unit during said calculation cycles. This allows the first arithmetic and logical unit to be dispensed from any memory access operation during elementary calculations and therefore to speed up the implementation of said calculations.
- L’une au moins parmi les étapes suivantes comprend une boucle itératives :  - At least one of the following steps includes an iterative loop:
a) obtenir les adresses mémoire de chacune des données absentes des registres et formant opérande pour une au moins desdites opérations élémentaires à effectuer et ; a) obtaining the memory addresses of each of the data absent from the registers and forming an operand for at least one of said elementary operations to be carried out and;
d) à réception de ladite instruction d’exécution de calculs, exécuter l’ensemble desdites opérations élémentaires par ladite première unité arithmétique et logique recevant en entrées chacun des opérandes depuis les registres ; d) upon receipt of said instruction for carrying out calculations, execute all of said elementary operations by said first arithmetic and logic unit receiving as inputs each of the operands from the registers;
f) obtenir une adresses mémoire pour chacune des données formant résultat du traitement. f) obtain a memory address for each of the data forming the result of the processing.
Cela permet de mettre en œuvre des processus de calculs particulièrement rapides car répétitifs. - Le dispositif comprend en outre au moins une unité arithmétique et logique supplémentaire et distincte de la première unité arithmétique et logique exécutant l’ensemble desdites opérations élémentaires. L’unité arithmétique et logique supplémentaire met en œuvre : This makes it possible to implement particularly fast calculation processes because repetitive. - The device further comprises at least one additional arithmetic and logic unit and distinct from the first arithmetic and logic unit executing all of said elementary operations. The additional arithmetic and logic unit implements:
a) l’obtention des adresses mémoire de chacune des données absentes des registres et formant opérande pour une au moins desdites opérations élémentaires à effectuer ; et a) obtaining the memory addresses of each of the data absent from the registers and forming an operand for at least one of said elementary operations to be carried out; and
b) la lecture en mémoire, pour chargement dans les registres via l’interface mémoire, de chacune desdites données au moyen des adresses mémoire obtenues. b) reading from memory, for loading into the registers via the memory interface, of each of said data by means of the memory addresses obtained.
Cela permet de répartir les fonctions fixement pour chaque ALU et donc d’améliorer leur efficacité respective.  This allows the functions to be fixedly distributed for each ALU and therefore to improve their respective efficiency.
En parallèle, la demanderesse décrit aussi une approche dans laquelle, à chaque opération de lecture, le nombre de données lues est supérieur au nombre de données strictement nécessaire pour la mise en œuvre du prochain calcul. Une telle approche pourrait, par opposition, être appelée « accès mémoire prévisionnel ». Il est alors possible qu’une donnée parmi les données lues soit utilisée pour un calcul futur, autre que le calcul mis en œuvre immédiatement après la lecture. Dans de tels cas, les données nécessaires ont été obtenues au cours d’une unique opération d’accès mémoire (avec augmentation de la bande passante de la mémoire) tandis que l’approche usuelle aurait nécessité au moins deux accès mémoire distincts. Une telle approche a donc pour effet, au moins dans certains cas, de réduire la consommation de cycles de calcul pour les accès mémoire et permet donc d’améliorer l’efficacité du dispositif. Sur le long terme (plusieurs cycles de calculs consécutifs) le nombre d’accès mémoire (en lecture et/ou en écriture) est réduit. In parallel, the applicant also describes an approach in which, at each read operation, the number of data read is greater than the number of data strictly necessary for the implementation of the next calculation. Such an approach could, in contrast, be called "predictive memory access". It is then possible that a data item among the data read is used for a future calculation, other than the calculation implemented immediately after reading. In such cases, the necessary data was obtained during a single memory access operation (with increased memory bandwidth) while the usual approach would have required at least two separate memory accesses. Such an approach therefore has the effect, at least in certain cases, of reducing the consumption of calculation cycles for memory accesses and therefore makes it possible to improve the efficiency of the device. In the long term (several consecutive calculation cycles) the number of memory accesses (in read and / or write) is reduced.
Cette approche n’exclut pas des pertes : certaines des données lues et mémorisées sur un registre peuvent être perdues (écrasées par d’autres données mémorisées ensuite sur le même registre) avant même d’avoir été utilisées dans un calcul. Néanmoins, sur un grand nombre de calculs et de cycles de calcul, la demanderesse a constaté une amélioration des performances, y compris en l’absence de sélection des ensembles de données lues. Autrement dit, même en l’absence de sélection des données lues (ou sélection aléatoire) cette approche permet statistiquement d’améliorer l’efficacité du dispositif informatique par rapport à l’approche habituelle. This approach does not exclude losses: some of the data read and stored in a register can be lost (overwritten by other data then stored in the same register) even before being used in a calculation. Nevertheless, over a large number of calculations and calculation cycles, the applicant has observed an improvement in performance, including in the absence of selection of the data sets read. In other words, even in the absence of selection of the data read (or random selection), this approach makes it possible statistically to improve the efficiency of the computing device compared to the usual approach.
D’autres caractéristiques, détails et avantages de l’invention apparaîtront à la lecture de la description détaillée ci-après, et à l’analyse des dessins annexés, sur lesquels : Other characteristics, details and advantages of the invention will appear on reading the detailed description below, and on analysis of the appended drawings, in which:
- la figure 1 montre une architecture d’un dispositif informatique selon l’invention ;  - Figure 1 shows an architecture of a computer device according to the invention;
- la figure 2 est une représentation partielle d’une architecture d’un dispositif informatique selon l’invention ;  - Figure 2 is a partial representation of an architecture of a computer device according to the invention;
- la figure 3 représente un exemple d’accès mémoire ;  - Figure 3 shows an example of memory access;
- la figure 4 est une variante de l’exemple de la figure 3 ;  - Figure 4 is a variant of the example of Figure 3;
- la figure 5 représente schématiquement une architecture de fonctionnement selon l’invention ; et  - Figure 5 schematically shows an operating architecture according to the invention; and
- la figure 6 représente une décomposition chronologique d’un exemple de fonctionnement selon l’invention.  - Figure 6 shows a chronological breakdown of an example of operation according to the invention.
La figure 1 montre un exemple d’un dispositif 1 informatique. Le dispositif 1 comprend un ensemble d’un ou plusieurs processeurs 3, parfois appelé unités centrales de traitement ou CPU pour « Central Processing Units ». L’ensemble de processeur(s) 3 comprend au moins une unité de commande 5 et au moins une unité de traitement 7, ou PU 7 pour « Processing Unit ». Chaque PU 7 comprend un ou plusieurs organes de calcul appelés unités arithmétiques et logiques 9, ou ALU 9 pour « Arithmetic-Logic Unit ». Dans l’exemple décrit ici, chaque PU 7 comprend en outre un jeu de registres 11. Le dispositif 1 comprend au moins une mémoire 13 apte à interagir avec l’ensemble de processeur(s) 3. À cet effet, le dispositif 1 comprend en outre une interface mémoire 15, ou « Bus ». Figure 1 shows an example of a computing device 1. The device 1 comprises a set of one or more processors 3, sometimes called central processing units or CPU for "Central Processing Units". The processor assembly (s) 3 comprises at least one control unit 5 and at least one processing unit 7, or PU 7 for "Processing Unit". Each PU 7 comprises one or more calculation units called arithmetic and logical units 9, or ALU 9 for "Arithmetic-Logic Unit". In the example described here, each PU 7 further comprises a set of registers 11. The device 1 comprises at least one memory 13 capable of interacting with the processor assembly (s) 3. For this purpose, the device 1 comprises in addition a memory interface 15, or "Bus".
Dans le présent contexte, il est considéré que les organes mémoires sont mono-port, c’est-à-dire que les opérations de lecture et d’écriture sont mis en œuvre au cours de cycles différents, par opposition aux mémoires dites « double-port » (plus coûteuses en terme de surface et nécessitant des bus de commande dédoublés plus larges pour l’écriture et la lecture). En variante, les solutions techniques proposées peuvent être mises en œuvre avec des mémoires dites « double-port ». Dans de tels modes de réalisation, des lectures et écritures peuvent être mises en œuvre au cours d’un même cycle de calcul. In the present context, it is considered that the memory organs are single-port, that is to say that the read and write operations are implemented during different cycles, as opposed to the memories called "double -port ”(more expensive in terms of surface area and requiring larger split control buses for writing and reading). Alternatively, the proposed technical solutions can be implemented with so-called “dual-port” memories. In such embodiments, reads and writes can be implemented during the same calculation cycle.
En figure 1 , trois PU 7 sont représentées : PU 1 , PU X et PU N. Seule la structure de PU X est représentée en détail afin de simplifier la figure 1. Néanmoins, les structures des PUs sont analogues les unes aux autres. Dans des variantes, le nombre de PUs est différent. Le dispositif 1 peut comprendre une unique PU, deux PUs ou plus de trois PUs. In FIG. 1, three PU 7 are represented: PU 1, PU X and PU N. Only the structure of PU X is shown in detail in order to simplify FIG. 1. Nevertheless, the structures of the PUs are similar to each other. In variants, the number of PUs is different. The device 1 can comprise a single PU, two PUs or more than three PUs.
Dans l’exemple décrit ici, la PU X comprend quatre ALUs : ALU X.0, ALU X.1 , ALU X.2 et ALU X.3. Dans des variantes, les PUs peuvent comprendre un nombre d’ALUs différent les unes des autres et/ou différent de quatre, y compris une unique ALU. Chaque PU comprend un jeu de registres 11 , ici au moins un registre 11 attribué à chaque ALU. Dans l’exemple décrit ici, la PU X comprend un unique registre 11 par ALU, soit quatre registres référencés REG X.0, REG X.1 , REG X.2 et REG X.3 et attribués respectivement à ALU X.0, ALU X.1 , ALU X.2 et ALU X.3. Dans des variantes, chaque ALU se voit attribué une pluralité de registres 11. In the example described here, the PU X comprises four ALUs: ALU X.0, ALU X.1, ALU X.2 and ALU X.3. In variants, the PUs can comprise a number of ALUs which are different from each other and / or different from four, including a single ALU. Each PU includes a set of registers 11, here at least one register 11 assigned to each ALU. In the example described here, the PU X comprises a single register 11 per ALU, that is to say four registers referenced REG X.0, REG X.1, REG X.2 and REG X.3 and allocated respectively to ALU X.0, ALU X.1, ALU X.2 and ALU X.3. In variants, each ALU is assigned a plurality of registers 11.
Chaque registre 11 est apte à alimenter en données de type opérande les entrées desdites ALUs 9 et est apte à être alimenté en données issues des sorties desdites ALU 9. Chaque registre 11 est, en outre, apte à stocker des données issues de la mémoire 13 obtenues par l’intermédiaire du bus 15 par une opération dite de « lecture ». Chaque registre 11 est, en outre, apte à transmettre des données stockées, à destination de la mémoire 13 et par l’intermédiaire du bus 15, par une opération dite d’ « écriture ». Les opérations de lecture et d’écriture sont gérées par le pilotage des accès mémoire depuis l’unité de commande 5. Each register 11 is capable of supplying operand type data with the inputs of said ALUs 9 and is capable of being supplied with data from the outputs of said ALUs. Each register 11 is furthermore capable of storing data from memory 13 obtained via bus 15 by a so-called "read" operation. Each register 11 is, furthermore, capable of transmitting stored data, destined for the memory 13 and via the bus 15, by a so-called "write" operation. The read and write operations are managed by controlling the memory accesses from the control unit 5.
L’unité de commande 5 impose à chaque ALU 9 la manière d’effectuer des calculs élémentaires, notamment leur ordre, et attribut à chaque ALU 9 les opérations à exécuter. Dans l’exemple décrit ici, l’unité de commande 5 est configurée pour piloter les ALUs 9 selon une microarchitecture en chaîne de traitement de sorte que les ALUs 9 effectuent des calculs en parallèle les unes des autres. Par exemple, le dispositif 1 présente une architecture à Unique flux d’instructions et multiple flux de données, dites SIMD pour « Single Instructions Multiple Data », et/ou une architecture à multiples flux d’instructions et multiples flux de données, dites MIMD pour « Multiple Instructions Multiple Data ». D’autre part, l’unité de commande 5 est en outre agencée pour piloter les accès mémoire par l’intermédiaire de l’interface mémoire 15 et notamment, ici, les opérations de lecture et d’écriture. Les deux types de pilotage (calcul et accès mémoire) sont représentés, en figure 1 , par des flèches en traits discontinus. The control unit 5 imposes on each ALU 9 the manner of carrying out elementary calculations, in particular their order, and attributes to each ALU 9 the operations to be executed. In the example described here, the control unit 5 is configured to drive the ALUs 9 according to a micro-architecture in the processing chain so that the ALUs 9 perform calculations in parallel with each other. others. For example, the device 1 has an architecture with a single instruction stream and multiple data streams, called SIMD for “Single Instructions Multiple Data”, and / or an architecture with multiple instruction streams and multiple data streams, called MIMD for "Multiple Instructions Multiple Data". On the other hand, the control unit 5 is further arranged to control the memory accesses via the memory interface 15 and in particular, here, the read and write operations. The two types of control (calculation and memory access) are represented, in FIG. 1, by arrows in broken lines.
Il est maintenant fait référence à la figure 2, sur laquelle une unique ALU Y est représentée. Les transmissions de données sont représentées par des flèches à traits pleins. La transmission des données étant réalisée de proche en proche, on comprend que la figure 2 ne représente pas nécessairement un instant t avec des transmissions de données simultanées. Au contraire, pour qu’une donnée soit transmise d’un registre 11 vers une ALU 9, il est par exemple nécessaire que ladite donnée soit préalablement transmise audit registre 11 depuis la mémoire 13, ici via l’interface mémoire 15 (ou Bus). Reference is now made to FIG. 2, in which a single ALU Y is represented. Data transmissions are represented by arrows with solid lines. The data transmission being carried out step by step, it is understood that FIG. 2 does not necessarily represent an instant t with simultaneous data transmissions. On the contrary, for a datum to be transmitted from a register 11 to an ALU 9, it is for example necessary that said datum is previously transmitted to said register 11 from the memory 13, here via the memory interface 15 (or Bus) .
Dans l’exemple de la figure 2, trois registres 11 , référencés respectivement REG Y.0, REG Y.1 et REG Y.2, sont attribués une ALU référencée ALU Y. Chaque ALU 9 présente au moins trois ports, à savoir deux entrées et une sortie. Pour chaque opération, au moins deux opérandes sont reçus, respectivement par la première et la seconde entrée. Le résultat du calcul est émis via la sortie. Dans l’exemple représenté en figure 2, les opérandes reçus en entrée proviennent respectivement du registre REG Y.0 et du registre REG Y.2. Le résultat du calcul est inscrit au registre REG Y.1. Une fois inscrite au registre REG Y.1 , le résultat (sous forme d’une donnée) est écrite en mémoire 13, via l’interface mémoire 15. Dans des variantes, au moins une ALU peut présenter plus de deux entrées et recevoir plus de deux opérandes pour un calcul. In the example of FIG. 2, three registers 11, respectively referenced REG Y.0, REG Y.1 and REG Y.2, are assigned an ALU referenced ALU Y. Each ALU 9 has at least three ports, namely two inputs and an output. For each operation, at least two operands are received, respectively by the first and the second input. The result of the calculation is issued via the output. In the example shown in Figure 2, the operands received as input come from the REG Y.0 register and the REG Y.2 register respectively. The result of the calculation is entered in the REG register Y.1. Once registered in the REG Y.1 register, the result (in the form of data) is written in memory 13, via the memory interface 15. In variants, at least one ALU can have more than two entries and receive more of two operands for a calculation.
Chaque ALU 9 peut effectuer : Each ALU 9 can perform:
- des opérations arithmétiques sur des données entières (addition, soustraction, multiplication, division, etc.) ; - des opérations arithmétiques sur des données flottantes (addition, soustraction, multiplication, division, inversion, racine carrée, logarithmes, trigonométrie, etc.) ; - arithmetic operations on whole data (addition, subtraction, multiplication, division, etc.); - arithmetic operations on floating point data (addition, subtraction, multiplication, division, inversion, square root, logarithms, trigonometry, etc.);
- des opérations logiques (compléments à deux, « ET », « OU », « OU exclusif », etc.).  - logical operations (two's complement, "AND", "OR", "exclusive OR", etc.).
Les ALUs 9 n’échangent pas directement de données entre elles. Par exemple, si le résultat d’un premier calcul effectué par une première ALU constitue un opérande pour un deuxième calcul à effectuer par une deuxième ALU, alors le résultat du premier calcul doit au moins être inscrit dans un registre 11 avant d’être utilisable par une ALU 9. ALUs 9 do not directly exchange data with each other. For example, if the result of a first calculation performed by a first ALU constitutes an operand for a second calculation to be performed by a second ALU, then the result of the first calculation must at least be entered in a register 11 before being usable by an ALU 9.
Dans des modes de réalisation, les données inscrites sur un registre 11 sont en outre systématiquement écrites en mémoire 13 (via l’interface mémoire 15), même si ladite donnée est obtenue seulement pour servir d’opérande et pas en tant que résultat d’un processus de traitement dans son ensemble. In embodiments, the data written to a register 11 is also systematically written to memory 13 (via the memory interface 15), even if said data is obtained only to serve as an operand and not as a result of a whole treatment process.
Dans des modes de réalisation, les données obtenues pour servir d’opérande et ayant une pertinence courte (résultat intermédiaire sans intérêt à l’issu du traitement dans son ensemble) ne sont pas systématiquement écrites en mémoire 13 et peuvent être stockées seulement de manière temporaire sur un registre 11. Par exemple, si le résultat d’un premier calcul effectué par une première ALU constitue un opérande pour un deuxième calcul à effectuer par une deuxième ALU, alors le résultat du premier calcul doit être inscrit dans un registre 11. Puis, ladite donnée est transmise à la deuxième ALU en tant qu’opérande directement depuis le registre 11. On comprend alors que l’attribution d’un registre 11 à une ALU 9 peut évoluer au fil du temps et notamment d’un cycle de calcul à un autre. Cette attribution peut notamment prendre la forme de données d’adressage qui permettent de localiser, à chaque instant, l’emplacement d’une donnée, que ce soit sur un registre 11 ou en un emplacement de la mémoire 15. In embodiments, the data obtained to serve as an operand and having a short relevance (intermediate result without interest at the end of the treatment as a whole) are not systematically written in memory 13 and can be stored only temporarily on a register 11. For example, if the result of a first calculation carried out by a first ALU constitutes an operand for a second calculation to be carried out by a second ALU, then the result of the first calculation must be entered in a register 11. Then , said data is transmitted to the second ALU as an operand directly from the register 11. It is then understood that the allocation of a register 11 to an ALU 9 can change over time and in particular a calculation cycle to another. This allocation can in particular take the form of addressing data which makes it possible to locate, at all times, the location of a data item, whether on a register 11 or at a location in the memory 15.
Dans la suite, le fonctionnement du dispositif 1 est décrit pour un traitement appliqué à des données informatiques, le traitement étant composé d’un ensemble d’opérations, dont des calculs effectués en parallèle par une pluralité d’ALUs 9 au cours d’une période de temps constituée d’une séquence de cycles de calcul. On dit alors que les ALUs 9 fonctionnent selon une microarchitecture en chaîne de traitement. Néanmoins, le traitement mis en œuvre par le dispositif 1 et dont il est question ici peut, lui-même, constituer une partie (ou un sous-ensemble) d’un processus informatique plus global. Un tel processus plus global peut comprendre, dans d’autres parties ou sous- ensembles, des calculs effectués de manière non parallèle par une pluralité d’ALUs, par exemple selon un fonctionnement en série, ou en cascade. In the following, the operation of the device 1 is described for a processing applied to computer data, the processing being composed of a set of operations, including calculations performed in parallel by a plurality of ALUs 9 over a period of time consisting of a sequence of calculation cycles. It is then said that the ALUs 9 operate according to a microarchitecture in the processing chain. However, the processing implemented by the device 1 and which we are talking about here can itself constitute part (or a subset) of a more global IT process. Such a more global process can include, in other parts or sub-assemblies, calculations carried out in a non-parallel manner by a plurality of ALUs, for example according to a series or cascade operation.
Les architectures de fonctionnement (parallèle ou en série) peuvent être constantes ou dynamiques, par exemple imposées (pilotées) par l’unité de commande 5. Les variations d’architecture peuvent par exemple être fonction des données à traiter et des instructions courantes reçues en entrée du dispositif 1. Une telle adaptation dynamique des architectures peut être mise en œuvre dès le stade de la compilation, en adaptant les instructions machines générées par le compilateur en fonction du type de données à traiter et des instructions lorsque le type de données à traiter et les instructions peuvent être déduites du code source. Une telle adaptation peut aussi être mise en œuvre seulement au niveau du dispositif 1 , ou d’un processeur, lorsqu’il exécute un code machine classique et qu’il est programmé pour mettre en œuvre un ensemble d’instructions de configuration fonction des données à traiter et des instructions courantes reçues. The operating architectures (parallel or in series) can be constant or dynamic, for example imposed (controlled) by the control unit 5. The architectural variations can for example be a function of the data to be processed and the current instructions received in input of the device 1. Such dynamic adaptation of the architectures can be implemented at the compilation stage, by adapting the machine instructions generated by the compiler according to the type of data to be processed and the instructions when the type of data to be processed and the instructions can be derived from the source code. Such an adaptation can also be implemented only at the level of the device 1, or of a processor, when it executes a conventional machine code and when it is programmed to implement a set of configuration instructions according to the data. to be processed and current instructions received.
L’interface de mémoire 15, ou « bus », transmet et route les données entre les ALU 9 et la mémoire 15, dans les deux sens. L’interface de mémoire 15 est pilotée par l’unité de commande 5. Ainsi, l’unité de commande 5 pilote l’accès à la mémoire 13 du dispositif 1 par l’intermédiaire de l’interface mémoire 15. L’unité de commande 5 pilote de manière coordonnée les opérationsThe memory interface 15, or "bus", transmits and routes the data between the ALUs 9 and the memory 15, in both directions. The memory interface 15 is controlled by the control unit 5. Thus, the control unit 5 controls access to the memory 13 of the device 1 via the memory interface 15. The command 5 coordinates operations
(calculs) mises en œuvre par les ALU 9 et les accès mémoire. Le pilotage de l’unité de commande 5 comprend la mise en œuvre d’une succession d’opérations décomposées en cycles de calcul. Le pilotage comprend la génération d’un premier cycle i et d’un deuxième cycle ii. Chronologiquement, le premier cycle i est antérieur au deuxième cycle ii. Comme cela sera décrit plus en détails dans les exemples ci-après, le deuxième cycle ii peut être immédiatement ultérieur au premier cycle i, ou bien le premier cycle i et le deuxième cycle ii peuvent être chronologiquement espacés l’un de l’autre, par exemple avec des cycles intermédiaires. (calculations) implemented by ALU 9 and memory accesses. The control of the control unit 5 includes the implementation of a succession of operations broken down into calculation cycles. Piloting includes the generation of a first cycle i and a second cycle ii. Chronologically, the first cycle i predates the second cycle ii. As will be described more in detail in the examples below, the second cycle ii can be immediately subsequent to the first cycle i, or else the first cycle i and the second cycle ii can be chronologically spaced from each other, for example with cycles intermediate.
Le premier cycle i comprend : The first cycle i includes:
- la mise en œuvre d’un premier calcul par au moins une ALU 9 ; et  - the implementation of a first calculation by at least one ALU 9; and
- le téléchargement, depuis la mémoire 13 sur au moins un registre 11 , d’un premier jeu de données.  - downloading, from memory 13 onto at least one register 11, of a first set of data.
Le deuxième cycle ii comprend la mise en œuvre d’un deuxième calcul par au moins une ALU 9. Le deuxième calcul peut être mis en œuvre par la même ALU 9 que le premier calcul ou par une ALU 9 distincte. Une partie au moins du premier jeu de données téléchargé au cours du premier cycle i forme un opérande pour le deuxième calcul. The second cycle ii includes the implementation of a second calculation by at least one ALU 9. The second calculation can be implemented by the same ALU 9 as the first calculation or by a separate ALU 9. At least part of the first data set downloaded during the first cycle i forms an operand for the second calculation.
Il est maintenant fait référence à la figure 3. Des données, ou blocs de données, sont référencées respectivement A0 à A15 et sont stockées dans la mémoire 13. Dans l’exemple, il est considéré que les données A0 à A15 sont regroupées par quatre de la manière suivante : Reference is now made to FIG. 3. Data, or blocks of data, are respectively referenced A0 to A15 and are stored in memory 13. In the example, it is considered that the data A0 to A15 are grouped by four as follows :
- un jeu de données référencé AA0_3 constitué des données A0, A1 , A2 et A3 ; - a data set referenced AA0_3 consisting of data A0, A1, A2 and A3;
- un jeu de données référencé AA4_7 constitué des données A4, A5, A6 et A 7 ;- a data set referenced AA4_7 consisting of data A4, A5, A6 and A 7;
- un jeu de données référencé AA8_11 constitué des données A8, A9, A10 et A11 ; et - a data set referenced AA8_11 consisting of data A8, A9, A10 and A11; and
- un jeu de données référencé AA12_15 constitué des données A12, A13, A14 et A15.  - a data set referenced AA12_15 consisting of data A12, A13, A14 and A15.
En variante, les données peuvent être regroupées différemment, notamment par groupe (ou « bloc », ou « slot ») de deux, trois ou plus de quatre. Un jeu de données peut être vu comme un groupe de données accessibles sur la mémoire 13 par l’intermédiaire d’un unique port de l’interface mémoire 15 au cours d’une unique opération de lecture. De même, les données d’un jeu de données peuvent être inscrites en mémoire 13 par l’intermédiaire d’un unique port de l’interface mémoire 15 au cours d’une unique opération d’écriture. Ainsi, au cours d’un premier cycle i, au moins un jeu de données AA0_3, AA4_7, AA8_11 et/ou AA12_15 est téléchargé sur au moins un registre 11. Dans l’exemple de la figure, chacun des jeux de données AA0_3, AA4_7, AA8_11 et/ou AA12_15 est téléchargé sur un registre 11 respectif, soit quatre registres 1 1 distincts les uns des autres. Chacun des registres 11 est attribué au moins temporairement à une ALU 9 respective, ici référencée respectivement ALU 0, ALU 1 ALU 2 et ALU 3. Au cours de ce même cycle i, les ALUs 9 peuvent avoir mis en œuvre un calcul. As a variant, the data can be grouped differently, in particular by group (or “block”, or “slot”) of two, three or more than four. A data set can be seen as a group of data accessible on the memory 13 via a single port of the memory interface 15 during a single read operation. Similarly, the data of a data set can be written into memory 13 via a single port of the memory interface 15 during a single write operation. Thus, during a first cycle i, at least one data set AA0_3, AA4_7, AA8_11 and / or AA12_15 is downloaded to at least one register 11. In the example of the figure, each of the data sets AA0_3, AA4_7, AA8_11 and / or AA12_15 is downloaded to a respective register 11, that is to say four registers 1 1 distinct from each other. Each of the registers 11 is assigned at least temporarily to a respective ALU 9, here referenced respectively ALU 0, ALU 1 ALU 2 and ALU 3. During this same cycle i, the ALUs 9 may have implemented a calculation.
Au cours d’un deuxième cycle ii, chaque ALU 9 met en œuvre un calcul pour lequel l’une au moins des données stockées sur le registre 1 1 correspondant forme un opérande. Par exemple, l’ALU 0 met en œuvre un calcul dont l’un des opérandes est A0. A1 , A2 et A3 peuvent être inutilisés au cours du deuxième cycle ii. During a second cycle ii, each ALU 9 implements a calculation for which at least one of the data stored in the corresponding register 1 1 forms an operand. For example, ALU 0 implements a calculation, one of the operands of which is A0. A1, A2 and A3 may be unused during the second cycle ii.
De manière générale, télécharger des données depuis la mémoire 13 jusqu’à un registre 11 est moins consommateur de temps de calcul que de mettre en œuvre des calculs par des ALUs 9. Ainsi, on peut généralement considérer qu’une opération d’accès mémoire (ici une lecture) consomme un unique cycle de calcul, tandis que la mise en œuvre d’un calcul par une ALU 9 consomme un cycle de calcul ou une succession de plusieurs cycles de calcul, par exemple quatre. Dans l’exemple de la figure 3, il existe une pluralité de registres 11 attribués à chaque ALU 9, représentés par des groupe de registres 11 référencés REG A, REG B et REG C. Les données téléchargées depuis la mémoire 13 sur les registres 11 correspondent aux groupes REG A et REG B. Le groupe REG C est ici destiné à stocker des données obtenues par des calculs mis en œuvre par les ALUs 9 (au cours d’une opération d’écriture). In general, downloading data from memory 13 to a register 11 consumes less computation time than implementing calculations by ALUs 9. Thus, it can generally be considered that a memory access operation (here a reading) consumes a single calculation cycle, while the implementation of a calculation by an ALU 9 consumes a calculation cycle or a succession of several calculation cycles, for example four. In the example of FIG. 3, there are a plurality of registers 11 allocated to each ALU 9, represented by groups of registers 11 referenced REG A, REG B and REG C. The data downloaded from the memory 13 on the registers 11 correspond to the REG A and REG B groups. The REG C group is here intended to store data obtained by calculations implemented by the ALUs 9 (during a write operation).
Les registres 11 des groupes REG B et REG C peuvent ainsi contenir des jeux de données référencés de manière analogues à ceux de REG A : The registers 11 of the REG B and REG C groups can thus contain data sets referenced in a similar way to those of REG A:
- le groupe REG B comprend quatre registres 11 sur lesquels sont respectivement stockés un jeu de données BB0_3 constitué de données B0 à B3, un jeu de données BB4_7 constitué de données B4 à B7, un jeu de données BB8_11 constitué de données B8 à B11 et un jeu de données BB12_15 constitué de données B12 à B15 ; - the REG B group includes four registers 11 on which are respectively stored a data set BB0_3 consisting of data B0 to B3, a data set BB4_7 consisting of data B4 to B7, a data set BB8_11 consisting of data B8 to B11 and a data set BB12_15 consisting of data B12 to B15;
- le groupe REG C comprend quatre registres 11 sur lesquels sont respectivement stockés un jeu de données CC0_3 constitué de données C0 à C3, un jeu de données CC4_7 constitué de données C4 à C7, un jeu de données CC8_11 constitué de données C8 à C11 et un jeu de données CC12_15 constitué de données C12 à C15.  the group REG C comprises four registers 11 on which are respectively stored a data set CC0_3 consisting of data C0 to C3, a data set CC4_7 consisting of data C4 to C7, a data set CC8_11 consisting of data C8 to C11 and a CC12_15 data set consisting of data C12 to C15.
Dans l’exemple de la figure 3, les données AN et BN constituent les opérandes d’un calcul mis en œuvre par une ALU 9 tandis que la donnée CN constitue le résultat, avec « N » un entier compris entre 0 et 15. Par exemple, dans le cas d’une addition, CN = AN + BN. Dans un tel exemple, le traitement des données mis en œuvre par le dispositif 1 correspond à 16 opérations. Les 16 opérations sont indépendantes les unes des autres au sens qu’aucun des résultats des 16 opérations n’est nécessaire pour mettre en œuvre l’une des 15 autres opérations. In the example of FIG. 3, the data AN and BN constitute the operands of a calculation implemented by an ALU 9 while the data CN constitutes the result, with “N” an integer between 0 and 15. By example, in the case of an addition, CN = AN + BN. In such an example, the data processing implemented by the device 1 corresponds to 16 operations. The 16 operations are independent of each other in the sense that none of the results of the 16 operations is necessary to implement one of the other 15 operations.
La mise en œuvre du traitement (les 16 opérations) peut donc, par exemple, se décomposer de la manière suivante, en 18 cycles. The implementation of the treatment (the 16 operations) can therefore, for example, be broken down as follows, into 18 cycles.
Exemple 1 :  Example 1:
- cycle #0 : lecture de AA0_3 ;  - cycle # 0: reading of AA0_3;
- cycle #1 : lecture de BB0_3 ;  - cycle # 1: reading of BB0_3;
- cycle #2 : calcul de C0 (du jeu CC0_3) et lecture de AA4_7 (formant par exemple un cycle i) ; - cycle # 2: calculation of C0 (of game CC0_3) and reading of AA4_7 (forming for example a cycle i);
- cycle #3 : calcul de C1 (du jeu CC0_3) et lecture de BB4_7 (formant par exemple un cycle i) ;  - cycle # 3: calculation of C1 (of game CC0_3) and reading of BB4_7 (forming for example a cycle i);
- cycle #4 : calcul de C2 (du jeu CC0_3) ;  - cycle # 4: calculation of C2 (from game CC0_3);
- cycle #5 : calcul de C3 (du jeu CC0_3) et écriture de CC0_3 ;  - cycle # 5: calculation of C3 (from game CC0_3) and writing of CC0_3;
- cycle #6 : calcul de C4 (du jeu CC4_7) et lecture de AA8_11 (formant par exemple un cycle ii) ; - cycle # 6: calculation of C4 (from game CC4_7) and reading of AA8_11 (forming for example a cycle ii);
- cycle #7 : calcul de C5 (du jeu CC4_7) et lecture de BB8_11 (formant par exemple un cycle ii) ; - cycle #8 : calcul de C6 (du jeu CC4_7) (formant par exemple un cycle ii) ;- cycle # 7: calculation of C5 (from game CC4_7) and reading of BB8_11 (for example forming a cycle ii); - cycle # 8: calculation of C6 (from game CC4_7) (for example forming a cycle ii);
- cycle #9 : calcul de C7 (du jeu CC4_7) et écriture de CC4_7 (formant par exemple un cycle ii) ; - cycle # 9: calculation of C7 (from game CC4_7) and writing of CC4_7 (forming for example a cycle ii);
- cycle #10 : calcul de C8 (du jeu CC8_11 ) et lecture de AA12_15 ; - cycle # 10: calculation of C8 (from game CC8_11) and reading of AA12_15;
- cycle #11 : calcul de C9 (du jeu CC8_11 ) et lecture de BB12_15 ;  - cycle # 11: calculation of C9 (from game CC8_11) and reading of BB12_15;
- cycle #12 : calcul de C10 (du jeu CC8_11 ) ;  - cycle # 12: calculation of C10 (from game CC8_11);
- cycle #13 : calcul de C11 (du jeu CC8_11 ) et écriture de CC8_11 ;  - cycle # 13: calculation of C11 (from game CC8_11) and writing of CC8_11;
- cycle #14 : calcul de C12 (du jeu CC12_15) ; - cycle # 14: calculation of C12 (from game CC12_15);
- cycle #15 : calcul de C13 (du jeu CC12_15) ;  - cycle # 15: calculation of C13 (from game CC12_15);
- cycle #16 : calcul de C14 (du jeu CC12_15) ;  - cycle # 16: calculation of C14 (from game CC12_15);
- cycle #17 : calcul de C15 (du jeu CC12_15) et écriture de CC12_15.  - cycle # 17: calculation of C15 (from game CC12_15) and writing of CC12_15.
On comprend alors que, à l’exception des cycles #0 et #1 initiaux, les accès mémoire (lectures et écritures) sont mis en œuvre en parallèle des calculs, sans consommer de cycle de calcul supplémentaire. Lire des jeux de (plusieurs) données, ou blocs de données, plutôt que de lire une unique donnée, permet de terminer l’importation des données depuis la mémoire 13 sur les registres avant mêmes que lesdites données ne deviennent nécessaires, en tant qu’opérande, pour un calcul. It is then understood that, with the exception of the initial cycles # 0 and # 1, the memory accesses (reads and writes) are implemented in parallel with the calculations, without consuming any additional calculation cycle. Reading sets of (several) data, or blocks of data, rather than reading a single piece of data, makes it possible to complete the import of the data from the memory 13 into the registers even before said data becomes necessary, as operand, for a calculation.
Dans l’exemple du cycle #2 ci-dessus, si seule la donnée immédiatement nécessaire (A0) avait été lue plutôt que de lire le jeu AA0_3 = {A0 ; A1 ; A2 ; A3}, alors il aurait été nécessaire de mettre en œuvre, ultérieurement, trois opérations de lecture supplémentaires pour obtenir A1 , A2 et A3. In the example of cycle # 2 above, if only the immediately necessary data (A0) had been read rather than reading the game AA0_3 = {A0; A1; A2; A3}, then it would have been necessary to implement three additional read operations later to obtain A1, A2 and A3.
Pour mieux comprendre, et par comparaison, on reproduit ci-après la mise en œuvre d’un traitement dans lequel une unique donnée est lue à chaque fois plutôt qu’un jeu de (plusieurs) données. On constate que 48 cycles sont nécessaires. To better understand, and by comparison, we reproduce below the implementation of a process in which a single data item is read each time rather than a set of (several) data items. We see that 48 cycles are necessary.
Exemple 0 : Example 0:
- cycle #0 : lecture de A0 ;  - cycle # 0: reading of A0;
- cycle #1 : lecture de B0 ; - cycle #2 : calcul de CO et écriture de CO ; - cycle # 1: reading of B0; - cycle # 2: CO calculation and CO writing;
- cycle #3 : lecture de A1 ;  - cycle # 3: reading of A1;
- cycle #4 : lecture de B1 ;  - cycle # 4: reading of B1;
- cycle #5 : calcul de C1 écriture de C1 ;  - cycle # 5: calculation of C1 writing of C1;
- cycle #45 : lecture de A15 ; - cycle # 45: reading of A15;
- cycle #46 : lecture de B15 ;  - cycle # 46: reading of B15;
- cycle #47 : calcul de C15 et écriture de C15.  - cycle # 47: calculation of C15 and writing of C15.
Dans l’exemple 1 (18 cycles), on remarque que les deux premiers cycles #0 et #1 constituent des cycles d’initialisation. Le nombre I de cycles d’initialisation correspond au nombre d’opérandes par calcul. Ensuite un motif de quatre cycles successifs est répété quatre fois. Par exemple, les cycles #2 à #5 forment ensemble un motif. Le nombre de cycles par motif correspond au nombre D de données par jeu de données tandis que le nombre de motifs correspond au nombre E de jeu de données à traiter. Le nombre total de cycles peut donc s’exprimer de la manière suivante : I + D*E. In example 1 (18 cycles), we notice that the first two cycles # 0 and # 1 constitute initialization cycles. The number I of initialization cycles corresponds to the number of operands per calculation. Then a pattern of four successive cycles is repeated four times. For example, cycles # 2 to # 5 together form a pattern. The number of cycles per pattern corresponds to the number D of data per data set while the number of patterns corresponds to the number E of data set to be processed. The total number of cycles can therefore be expressed as follows: I + D * E.
Atteindre une bonne performance équivaut à réduire au minimum le nombre total de cycles. Dans les conditions considérées, c’est-à-dire 16 opérations élémentaires et indépendantes pouvant être chacune mise en œuvre sur un cycle, le nombre de cycles optimum semblent donc être égal à celui nombre d’opérations élémentaires (16) auquel s’ajoute la phase d’initialisation (2 cycles), soit un total de 18 cycles. Achieving good performance is equivalent to minimizing the total number of cycles. Under the conditions considered, that is to say 16 elementary and independent operations which can each be implemented over a cycle, the number of optimum cycles therefore seems to be equal to that number of elementary operations (16) to which is added the initialization phase (2 cycles), for a total of 18 cycles.
Dans une variante, on considère que le nombre de données accessibles (en lecture ou en écriture) en un unique cycle (le nombre D de données par jeu de données) est égal à trois (et non plus quatre), par exemple à cause de limitations matérielles. Alors, la succession des cycles peut, par exemple, être décomposée de la manière suivante : In a variant, it is considered that the number of data accessible (in reading or writing) in a single cycle (the number D of data per data set) is equal to three (and no longer four), for example because of material limitations. Then the succession of cycles can, for example, be broken down as follows:
- une phase d’initialisation de 2 cycles ; puis  - an initialization phase of 2 cycles; then
- 5 motifs de 3 cycles pour un total de 15 calculs élémentaires sur les 16 à effectuer ; puis  - 5 patterns of 3 cycles for a total of 15 elementary calculations out of the 16 to be performed; then
- un ultime cycle pour calculer et enregistrer le résultat du dernier calcul élémentaire. Exemple 2 : - a final cycle to calculate and save the result of the last elementary calculation. Example 2:
- cycle #0 : lecture de AA0_2={A0 ; A1 ; A2} ;  - cycle # 0: reading of AA0_2 = {A0; A1; A2};
- cycle #1 : lecture de BB0_2={B0 ; B1 ; B2} ;  - cycle # 1: reading of BB0_2 = {B0; B1; B2};
- cycle #2 : calcul de CO (du jeu CC0_2={C0 ; C1 ; C2}) et lecture de AA3_5 (formant par exemple un cycle i) ; - cycle # 2: calculation of CO (of the game CC0_2 = {C0; C1; C2}) and reading of AA3_5 (forming for example a cycle i);
- cycle #3 : calcul de C1 (du jeu CC0_2) et lecture de BB3_5 (formant par exemple un cycle i) ;  - cycle # 3: calculation of C1 (of game CC0_2) and reading of BB3_5 (for example forming a cycle i);
- cycle #4 : calcul de C2 (du jeu CC0_2) et écriture de CC0_2 ; - cycle # 4: calculation of C2 (of game CC0_2) and writing of CC0_2;
- cycle #5 : calcul de C3 (du jeu CC3_5) et lecture de AA6_8 (formant par exemple un cycle ii) ; - cycle # 5: calculation of C3 (of game CC3_5) and reading of AA6_8 (forming for example a cycle ii);
- cycle #6 : calcul de C4 (du jeu CC3_5) et lecture de BB6_8 (formant par exemple un cycle ii) ;  - cycle # 6: calculation of C4 (of game CC3_5) and reading of BB6_8 (forming for example a cycle ii);
- cycle #7 : calcul de C5 (du jeu CC3_5) et écriture de CC3_5 (formant par exemple un cycle ii) ;  - cycle # 7: calculation of C5 (of game CC3_5) and writing of CC3_5 (forming for example a cycle ii);
- cycle #8 : calcul de C6 (du jeu CC6_8) et lecture de AA9_11 ; - cycle # 8: calculation of C6 (from game CC6_8) and reading of AA9_11;
- cycle #9 : calcul de C7 (du jeu CC6_8) et lecture de BB9_11 ; - cycle # 9: calculation of C7 (from game CC6_8) and reading of BB9_11;
- cycle #10 : calcul de C8 (du jeu CC6_8) et écriture de CC6_8 ;  - cycle # 10: calculation of C8 (from game CC6_8) and writing of CC6_8;
- cycle #11 : calcul de C9 (du jeu CC9_11 ) et lecture de AA12_14 ; - cycle # 11: calculation of C9 (from game CC9_11) and reading of AA12_14;
- cycle #12 : calcul de C10 (du jeu CC9_11 ) et lecture de BB12_14 ;  - cycle # 12: calculation of C10 (from game CC9_11) and reading of BB12_14;
- cycle #13 : calcul de C11 (du jeu CC9_11 ) et écriture de CC9_11 ; - cycle # 13: calculation of C11 (from game CC9_11) and writing of CC9_11;
- cycle #14 : calcul de C12 (du jeu CC12_14) et lecture de A15 (formant par exemple un cycle i) ; - cycle # 14: calculation of C12 (from game CC12_14) and reading of A15 (for example forming a cycle i);
- cycle #15 : calcul de C13 (du jeu CC12_14) et lecture de B15 (formant par exemple un cycle i) ;  - cycle # 15: calculation of C13 (from game CC12_14) and reading of B15 (forming for example a cycle i);
- cycle #16 : calcul de C14 (du jeu CC12_14) et écriture de CC12_14 ;  - cycle # 16: calculation of C14 (from game CC12_14) and writing of CC12_14;
- cycle #17 : calcul de C15 (donnée isolée) et écriture de C15 (formant par exemple un cycle ii). Dans l’exemple 2, on constate que chaque cycle inclut une opération d’accès mémoire (en lecture ou en écriture). On comprend donc que, si le nombre D de données accessibles en un unique cycle est strictement inférieur à trois, alors des cycles supplémentaires seront nécessaires pour effectuer des accès mémoire. L’optimum de 18 cycles pour 16 opérations élémentaires ne sera donc plus atteint. Pour autant, même si l’optimum n’est pas atteint, le nombre de cycles reste significativement inférieur au nombre de cycles nécessaire dans l’exemple 0. Un mode de réalisation dans lequel les jeux de données comprennent deux données présentent une amélioration par rapport à l’existant. - cycle # 17: calculation of C15 (isolated data) and writing of C15 (forming for example a cycle ii). In example 2, it can be seen that each cycle includes a memory access operation (read or write). It is therefore understood that, if the number D of data accessible in a single cycle is strictly less than three, then additional cycles will be necessary to perform memory accesses. The optimum of 18 cycles for 16 elementary operations will therefore no longer be reached. However, even if the optimum is not reached, the number of cycles remains significantly less than the number of cycles required in Example 0. An embodiment in which the data sets comprise two data presents an improvement compared to to the existing.
Dans l’exemple 1 , si les cycles #2 et/ou #3 correspondent par exemple à un cycle i tel que défini ci-avant, alors chacun des cycles #6, #7, #8 et #9 correspond à un cycle ii. Bien entendu, cela est transposable de motif en motif. Dans l’exemple 2, si les cycles #2 et/ou #3 correspondent par exemple à un cycle i tel que défini ci-avant, alors chacun des cycles #5, #6 et #7 correspond à un cycle ii. Bien entendu, cela est transposable de motif en motif. In example 1, if cycles # 2 and / or # 3 correspond for example to a cycle i as defined above, then each of cycles # 6, # 7, # 8 and # 9 corresponds to a cycle ii . Of course, this can be transposed from motif to motif. In example 2, if cycles # 2 and / or # 3 correspond for example to a cycle i as defined above, then each of cycles # 5, # 6 and # 7 corresponds to a cycle ii. Of course, this can be transposed from motif to motif.
Dans les exemples décrits jusqu’ici, notamment les exemples 1 et 2, le faible nombre total de cycles est atteint notamment parce qu’un maximum d’opérations d’accès mémoire est mis en œuvre par jeu de (plusieurs) données plutôt qu’à l’unité et en parallèle d’opérations de calculs. Ainsi, pour certaines parties du processus (pour toutes les parties dans les exemples optimisés), la lecture de l’ensemble des opérandes nécessaires peut être achevée avant même que l’opération de calcul élémentaire précédente ne soit terminée. De préférence, il est préservé de la puissance de calcul pour effectuer un calcul et enregistrer (opération d’écriture) le résultat dudit calcul en un cycle de calcul commun (cycle #5 de l’exemple 1 par exemple). In the examples described so far, in particular examples 1 and 2, the small total number of cycles is achieved in particular because a maximum of memory access operations is implemented per set of (several) data rather than individually and in parallel with calculation operations. Thus, for certain parts of the process (for all the parts in the optimized examples), the reading of all the necessary operands can be completed even before the preceding elementary calculation operation is completed. Preferably, it is preserved from the computing power to perform a calculation and record (write operation) the result of said calculation in a common calculation cycle (cycle # 5 of example 1 for example).
Dans les exemples, la lecture des données-opérandes en avance est mise en œuvre tout au long du processus (répété d’un motif à l’autre). Les opérandes nécessaires aux calculs effectués au cours d’un motif sont systématiquement obtenus (lus) au cours du motif chronologiquement antérieur. On notera que, dans des modes de réalisation dégradés, la lecture en avance est mise en œuvre seulement partiellement (pour deux motifs successifs seulement). Un tel mode dégradé par rapport aux exemples ci-avant présente de meilleurs résultats que les méthodes existantes. In the examples, reading the operand data in advance is implemented throughout the process (repeated from one pattern to another). The operands necessary for the calculations carried out during a pattern are systematically obtained (read) during the chronologically previous pattern. It will be noted that, in degraded embodiments, the reading in advance is implemented only partially (for two successive reasons only). Such degraded mode compared to the examples above presents better results than the existing methods.
Dans les exemples décrits jusqu’ici, il a été admis que les données étaient lues avant de servir d’opérandes. Dans des modes de réalisation, les données lues en avance le sont aléatoirement, ou du moins indépendamment des calculs à réaliser dans le futur. Ainsi, certaines au moins des données lues en avance parmi les jeux de données correspondent effectivement à des opérandes pour des calculs ultérieurs tandis que d’autres données lues ne sont pas des opérandes pour des calculs ultérieurs. Par exemple, certaines au moins des données lues peuvent être ultérieurement effacées des registres 11 sans avoir été utilisées par les ALUs 9, typiquement écrasées par d’autres données enregistrées ultérieurement sur les registres 11. Certaines données sont donc lues inutilement (et enregistrées inutilement sur les registres 11 ). Néanmoins, il suffit que certaines au moins des données parmi les jeux de données lues soient effectivement des opérandes pour qu’une économie en cycle de calcul se produise, et donc que la situation soit améliorée par rapport à l’existant. Aussi, en fonction du nombre de données à traiter et du nombre de cycles, il est probable (au sens mathématique du terme), que certaines au moins des données pré-lues puissent effectivement être utilisées en tant qu’opérande dans un calcul effectué par une ALU 9 dans un cycle suivant. In the examples described so far, it has been assumed that the data is read before serving as operands. In embodiments, the data read in advance are read randomly, or at least independently of the calculations to be performed in the future. Thus, at least some of the data read in advance from the data sets effectively correspond to operands for subsequent calculations while other data read are not operands for subsequent calculations. For example, at least some of the data read can be subsequently erased from the registers 11 without having been used by the ALUs 9, typically overwritten by other data subsequently recorded in the registers 11. Certain data are therefore read unnecessarily (and recorded unnecessarily on registers 11). However, it is sufficient that at least some of the data among the data sets read are actually operands for a saving in the calculation cycle to occur, and therefore that the situation is improved compared to the existing one. Also, depending on the number of data to be processed and the number of cycles, it is likely (in the mathematical sense of the term), that at least some of the pre-read data can actually be used as an operand in a calculation performed by an ALU 9 in a following cycle.
Dans des modes de réalisation, les données lues en avance sont présélectionnées, et dépendent des calculs à réaliser. Cela permet d’améliorer la pertinence des données pré-lues. En effet, dans les exemples à 16 calculs élémentaires ci-avant, chacun des 16 calculs élémentaires nécessite en entrée une paire d’opérandes, respectivement A0 et B0 ; A1 et B1 ; ... ; A15 et B15. Si les données sont lues aléatoirement, alors les deux premiers cycles pourraient correspondre à la lecture de AA0_3 et BB4_7. Dans un tel cas, aucune paire complète d’opérande n’est disponible sur les registres 11 à l’issue des deux premiers cycles. Par conséquent, les ALUs 9 ne peuvent mettre en œuvre aucun calcul élémentaire au cycle suivant. Un ou plusieurs cycles supplémentaires seraient donc nécessairement consommés pour de l’accès mémoire avant que les calculs élémentaires ne puissent débuter, ce qui augmente le nombre total de cycles et est donc nuisible pour l’efficacité. Compter sur le hasard et les probabilités pour que les données obtenues en lecture soient les plus pertinentes possibles suffit à améliorer l’existant mais n’est pas pleinement satisfaisant. La situation peut encore être améliorée. In embodiments, the data read in advance are preselected, and depend on the calculations to be performed. This improves the relevance of the pre-read data. Indeed, in the examples with 16 elementary calculations above, each of the 16 elementary calculations requires as input a pair of operands, respectively A0 and B0; A1 and B1; ...; A15 and B15. If the data is read randomly, then the first two cycles could correspond to the reading of AA0_3 and BB4_7. In such a case, no complete pair of operands is available on the registers 11 at the end of the first two cycles. Consequently, ALUs 9 cannot carry out any elementary calculation in the following cycle. One or more additional cycles would therefore necessarily be consumed for memory access before the elementary computations could begin, which increases the total number of cycles and is therefore detrimental for efficiency. Relying on chance and probability so that the data obtained in reading is as relevant as possible is enough to improve what already exists, but is not fully satisfactory. The situation can still be improved.
La mise en œuvre d’un algorithme de prélecture (ou « prefetch algorithm ») permet d’obtenir, dès que possible, tous les opérandes du prochain calcul à effectuer. Dans l’exemple ci-avant, lire AA0_3 et BB0_3 au cours des deux premiers cycles permet, par exemple, de rendre disponibles, sur les registres 11 , l’ensemble des opérandes nécessaires à la mise en œuvre de 4 premiers calculs élémentaires. The implementation of a prefetch algorithm makes it possible, as soon as possible, to obtain all the operands of the next calculation to be performed. In the example above, reading AA0_3 and BB0_3 during the first two cycles allows, for example, to make available, on the registers 11, all the operands necessary for the implementation of the first 4 elementary calculations.
Un tel algorithme reçoit en paramètres d’entrée des données d’informations relatives aux calculs à réaliser ultérieurement par les ALUs 9, et en particulier relatives aux opérandes nécessaires. Un tel algorithme permet, en sortie, de sélectionner les données lues (par jeu) en prévision des calculs futurs à effectuer. Un tel algorithme est, par exemple, mis en œuvre par l’unité de commande 5 lors du pilotage des accès mémoire. Selon une première approche, l’algorithme impose une organisation des données dès leur enregistrement dans la mémoire 13. Par exemple, les données que l’on souhaite voir former ensemble un jeu de données sont juxtaposées et/ou ordonnancées de sorte que l’ensemble du jeu de données peut être appelé par une requête unique. Par exemple, si les adresses des données A0, A1 , A2 et A3 sont référencées respectivement @A0 @A1 , @A2, @A3, alors l’interface mémoire 15 peut être configurée pour, en réponse à une requête de lecture sur @A0, lire en outre automatiquement les données aux trois adresses suivantes @A1 , @A2 et @A3. Selon une deuxième approche, l’algorithme de prélecture fourni en sortie des requêtes en accès mémoire adaptées en fonction des calculs à réaliser ultérieurement par les ALUs 9, et en particulier relatives aux opérandes nécessaires. Dans les exemples précédents, l’algorithme identifie par exemple que les données à lire en priorité sont celles de AA0_3 et BB0_3 pour rendre possible, dès le cycle suivant, les calculs élémentaires ayant pour résultat CC0_3, soit le calcul de CO avec les opérandes AO et BO, le calcul de C1 avec les opérandes A1 et B1 , le calcul de C2 avec les opérandes A2 et B2 et le calcul de C3 avec les opérandes A3 et B3. L’algorithme fournit donc, en sortie, des requêtes d’accès mémoire construites pour générer la lecture de AA0_3 et BB0 3. Such an algorithm receives as input parameters information data relating to the calculations to be carried out subsequently by the ALUs 9, and in particular relating to the necessary operands. Such an algorithm makes it possible, at the output, to select the data read (per set) in anticipation of the future calculations to be performed. Such an algorithm is, for example, implemented by the control unit 5 when controlling the memory accesses. According to a first approach, the algorithm imposes an organization of the data as soon as they are recorded in the memory 13. For example, the data which one wishes to see forming together a dataset are juxtaposed and / or scheduled so that the whole of the dataset can be called by a single query. For example, if the addresses of the data A0, A1, A2 and A3 are referenced respectively @ A0 @ A1, @ A2, @ A3, then the memory interface 15 can be configured for, in response to a read request on @ A0 , read the data automatically at the following three addresses @ A1, @ A2 and @ A3. According to a second approach, the prefetch algorithm provided at the output of the memory access requests adapted as a function of the calculations to be performed subsequently by the ALUs 9, and in particular relating to the necessary operands. In the previous examples, the algorithm identifies for example that the data to be read in priority are those of AA0_3 and BB0_3 to make possible, from the next cycle, the elementary calculations resulting in CC0_3, that is to say the calculation of CO with the operands AO and BO, the calculation of C1 with the operands A1 and B1, the calculation of C2 with the operands A2 and B2 and the calculation of C3 with the operands A3 and B3. The algorithm therefore provides, at the output, memory access requests constructed to generate the reading of AA0_3 and BB0 3.
Les deux approches peuvent, optionnellement, être combinées l’une avec l’autre : l’algorithme identifie les données à lire et l’unité de commande 5 en déduit des requêtes d’accès mémoire à l’interface mémoire 15 pour obtenir lesdites données, les requêtes étant adaptées en fonction des caractéristiques (structure et protocole) de l’interface mémoire 15. The two approaches can, optionally, be combined with each other: the algorithm identifies the data to be read and the control unit 5 deduces therefrom requests for memory access to the memory interface 15 to obtain said data , the requests being adapted as a function of the characteristics (structure and protocol) of the memory interface 15.
Dans les exemples précédents, notamment les exemples 1 et 2 ci-avant, le nombre d’ALUs affectées aux calculs élémentaires n’est pas défini. Une unique ALU 9 peut effectuer l’ensemble des calculs élémentaires, cycle par cycle. Les calculs élémentaires à effectuer peuvent aussi être répartis sur une pluralité d’ALUs 9 d’une PU, par exemple quatre. Dans de tels cas, coordonner la répartition des calculs sur les ALUs avec la manière de regrouper les données à lire à chaque opération de lecture peut permettre d’améliorer encore l’efficacité. Deux approches se distinguent. In the previous examples, in particular examples 1 and 2 above, the number of ALUs assigned to elementary calculations is not defined. A single ALU 9 can perform all of the elementary calculations, cycle by cycle. The elementary calculations to be performed can also be distributed over a plurality of ALUs 9 of a PU, for example four. In such cases, coordinating the distribution of the calculations on the ALUs with the manner of grouping the data to be read in each read operation can make it possible to further improve efficiency. Two approaches stand out.
Dans une première approche, les données lues en une opération forment opérandes dans des calculs mis en œuvre par une seule et même ALU 9. Par exemple, les groupes AA0_3 et BB0_3 de données A0, A1 , A2, A3, B0, B1 , B2 et B3 sont lus les premiers et une première ALU est chargée du calcul de CC0 3 (C0, C1 , C2 et C3). Les groupes AA4 _7 (A4, A5, A6, A7) et BB4_7 (B4, B5, B6 et B7) sont lus ensuite et une seconde ALU est chargée du calcul de CC4_7 (C4, C5, C6 et C7). On comprend alors que la première ALU va pouvoir commencer à mettre en œuvre les calculs avant que la seconde ALU puisse faire de même car les opérandes nécessaires aux calculs de la première ALU seront disponibles sur les registres 11 avant que les opérandes nécessaires aux calculs de la seconde ALU ne le soient. Les ALUs 9 d’une PU fonctionnent alors de manière parallèle et asynchrone. Dans une deuxième approche, les données lues en une opération forment opérandes dans des calculs chacun mis en œuvre par différentes ALUs 9, par exemple quatre. Par exemple, deux groupes de données incluant respectivement A0, A4, A8 et A12 ; B0, B4, B8 et B12 sont lus les premiers. Une première ALU est chargée du calcul de C0, une seconde ALU est chargée du calcul de C4, une troisième ALU est chargée du calcul de C8 et une quatrième ALU est chargée du calcul de C12. On comprend alors que les quatre ALUs vont pouvoir commencer à mettre en œuvre leur calcul respectif de manière sensiblement simultanée, car les opérandes nécessaires seront disponibles sur les registres 11 en même temps car téléchargés en une opération commune. Les ALUs 9 d’une PU fonctionnent de manière parallèle et synchronisées. En fonction, des types de calculs à effectuer, de l’accessibilité des données en mémoire et des ressources disponibles, l’une ou l’autre des deux approches peut être préférée. Les deux approches peuvent également être combinées : les ALUs peuvent être organisés en sous-groupes, les ALUs d’un sous-groupe fonctionnant de manière synchronisées et les sous-groupes fonctionnant de manière asynchrone les uns par rapport aux autres. In a first approach, the data read in one operation form operands in calculations implemented by a single ALU 9. For example, the groups AA0_3 and BB0_3 of data A0, A1, A2, A3, B0, B1, B2 and B3 are read first and a first ALU is responsible for calculating CC0 3 (C0, C1, C2 and C3). The groups AA4 _7 (A4, A5, A6, A7) and BB4_7 (B4, B5, B6 and B7) are then read and a second ALU is responsible for calculating CC4_7 (C4, C5, C6 and C7). It is then understood that the first ALU will be able to start implementing the calculations before the second ALU can do the same because the operands necessary for the calculations of the first ALU will be available on the registers 11 before the operands necessary for the calculations of the second ALU are. The ALUs 9 of a PU then operate in parallel and asynchronous fashion. In a second approach, the data read in one operation form operands in calculations each implemented by different ALUs 9, for example four. For example, two groups of data including A0, A4, A8 and A12 respectively; B0, B4, B8 and B12 are read first. A first ALU is responsible for calculating C0, a second ALU is responsible for calculating C4, a third ALU is responsible for calculating C8 and a fourth ALU is responsible for calculating C12. It will then be understood that the four ALUs will be able to start implementing their respective calculation in a substantially simultaneous manner, because the necessary operands will be available on the registers 11 at the same time as downloaded in a common operation. The ALUs 9 of a PU operate in parallel and synchronized. Depending on the types of calculations to be performed, the accessibility of the data in memory and the resources available, one or the other of the two approaches may be preferred. The two approaches can also be combined: the ALUs can be organized into subgroups, the ALUs of a subgroup operating in synchronized fashion and the subgroups operating asynchronously with respect to each other.
Pour imposer un fonctionnant synchronisé, asynchrone ou mixte des ALUs, le regroupement des données à lire par opération de lecture doit être sélectionné en correspondance avec la répartition des affectations des opérations de calcul à diverses ALUs. To impose a synchronized, asynchronous or mixed operation of the ALUs, the grouping of the data to be read by read operation must be selected in correspondence with the distribution of the assignments of the calculation operations to various ALUs.
Dans les exemples précédents, les calculs élémentaires sont indépendants les uns des autres. L’ordre dans lequel ils sont effectués n’a donc a priori pas d’importance. Dans des applications pour lesquels certains au moins des calculs sont dépendants les uns des autres, l’ordonnancement des calculs peut être spécifique. Une telle situation se présente typiquement dans le contexte de calculs récursifs. Dans de tels cas, l’algorithme peut être configuré pour identifier les données à acquérir (lire) en priorité. Par exemple, si : In the previous examples, the elementary calculations are independent of each other. The order in which they are carried out therefore does not a priori matter. In applications for which at least some of the calculations are dependent on each other, the scheduling of the calculations can be specific. Such a situation typically arises in the context of recursive computations. In such cases, the algorithm can be configured to identify the data to be acquired (read) in priority. For example, if:
- le résultat C1 est obtenu par un calcul dont l’un des opérandes est C0, C0 étant lui-même obtenu à partir des opérandes A0 et B0,  - the result C1 is obtained by a calculation of which one of the operands is C0, C0 being itself obtained from the operands A0 and B0,
- le résultat C5 est obtenu par un calcul dont l’un des opérandes est C4, C4 étant lui-même obtenu à partir des opérandes A4 et B4,  - the result C5 is obtained by a calculation of which one of the operands is C4, C4 itself being obtained from the operands A4 and B4,
- le résultat C9 est obtenu par un calcul dont l’un des opérandes est C8, C8 étant lui-même obtenu à partir des opérandes A8 et B8, et - the result C9 is obtained by a calculation of which one of the operands is C8, C8 being itself obtained from the operands A8 and B8, and
- le résultat C13 est obtenu par un calcul dont l’un des opérandes est C12, C12 étant lui-même obtenu à partir des opérandes A12 et B12,  - the result C13 is obtained by a calculation of which one of the operands is C12, C12 itself being obtained from the operands A12 and B12,
alors l’algorithme peut être configuré pour lire, lors des deux premiers cycles #0 et #1 d’initialisation, les jeux de données définis comme suit : then the algorithm can be configured to read, during the first two cycles # 0 and # 1 of initialization, the data sets defined as follows:
- {A0 ; A4 ; A8 ; A12}, et  - {A0; A4; AT 8 ; A12}, and
- {B0 ; B4 ; B8 ; B12}. - {B0; B4; B8; B12}.
Le jeu de données ainsi défini est représenté en figure 4. De manière imagée, on peut dire que les données sont regroupées « en ligne » dans le mode de réalisation représenté en figure 3 et regroupées « en colonne » dans le mode de réalisation représenté en figure 4. Ainsi, la mise en œuvre de l’algorithme permet de lire et de rendre disponibles sur les registres 11 , les opérandes utiles pour les calculs élémentaires prioritaires. Autrement dit, la mise en œuvre de l’algorithme permet d’augmenter la pertinence à court terme des données lues par rapport à une lecture aléatoire. The dataset thus defined is represented in FIG. 4. In a pictorial manner, it can be said that the data are grouped “online” in the embodiment represented in FIG. 3 and grouped “in column” in the embodiment represented in FIG. 4. Thus, the implementation of the algorithm makes it possible to read and make available on the registers 11, the operands useful for the priority elementary computations. In other words, the implementation of the algorithm makes it possible to increase the short-term relevance of the data read compared to a random reading.
Les exemples d’unités de traitement et de procédés décrits ci-avant, seulement à titre d’exemple ne sauraient être considérés comme limitatifs, d’autres variantes pourront être envisagées par l’homme de l’art dans le cadre de la protection recherchée. Les exemples peuvent aussi prendre la forme :The examples of processing units and methods described above, only by way of example should not be considered as limiting, other variants may be envisaged by those skilled in the art in the context of the protection sought. . Examples can also take the form:
- d’un jeu d’instructions machines implémentable dans un processeur pour obtenir un tel dispositif informatique, - a set of machine instructions that can be implemented in a processor to obtain such a computing device,
- d’un processeur ou un ensemble de processeurs,  - a processor or a set of processors,
- l’implémentation d’un tel jeu d’instructions machines sur un processeur, - the implementation of such a set of machine instructions on a processor,
- le procédé de gestion d’architecture de processeur mis en œuvre par le processeur, - the processor architecture management method implemented by the processor,
- le programme informatique comprenant le jeu d’instructions machines correspondant, ainsi que  - the computer program including the corresponding machine instruction set, as well as
- le support d’enregistrement sur lequel est enregistré informatiquement un tel jeu d’instructions machines.  - the recording medium on which such a set of machine instructions is recorded by computer.
Il est maintenant fait référence à la figure 5. Il y est représenté un exemple d’architecture de fonctionnement d’un dispositif 1 dans laquelle les opérations d’accès mémoire et de traitement des adressages sont traitées distinctement des opérations de calcul élémentaire. Une telle architecture peut prendre la forme d’un procédé informatique. Elle peut optionnellement être combinée avec les modes de réalisation décrits ci-avant. Les références numériques communes avec celles des figures précédentes désignent des éléments analogues, notamment une unité de contrôle 5, une ALU 9, des registres 11 , une mémoire 13 et une interface mémoire 15, ou « bus ». Reference is now made to FIG. 5. There is shown an example of the operating architecture of a device 1 in which the memory access and address processing operations are treated separately. elementary calculation operations. Such an architecture can take the form of a computer process. It can optionally be combined with the embodiments described above. The numerical references common with those of the preceding figures designate similar elements, in particular a control unit 5, an ALU 9, registers 11, a memory 13 and a memory interface 15, or "bus".
Afin de faciliter la compréhension, les même conventions de nommage sont utilisées : on considère une opération élémentaire, par exemple une addition, dans laquelle AX et BX sont des données formant opérandes pour obtenir une donnée formant résultat CX, avec X un entier compris entre 0 et N, N+1 étant le nombre d’opérations élémentaires à effectuer au cours d’un traitement. L’ensemble des N+1 opérations forme le traitement de données dans son ensemble. En outre, les adresses mémoire de chacune des données sont référencées par leur nom précédé du caractère « @ » (arobase). Par exemple, l’adresse de la donnée A0 est notée « @A0 ». In order to facilitate understanding, the same naming conventions are used: we consider an elementary operation, for example an addition, in which AX and BX are data forming operands to obtain a data forming result CX, with X an integer between 0 and N, N + 1 being the number of elementary operations to be carried out during a treatment. The set of N + 1 operations forms the data processing as a whole. In addition, the memory addresses of each of the data are referenced by their name preceded by the character “@” (at sign). For example, the address of the data A0 is noted "@ A0".
Pour chaque addition (chaque valeur de X), un jeu d’instructions peut être mis en œuvre par le dispositif informatique 1. Un exemple d’un tel jeu d’instructions est donné en fin de description sous la forme d’un pseudocode informatique. Habituellement, de telles instructions sont appliquées les unes à la suite des autres au cours d’un processus commun mis en œuvre par une ALU 9. Dans les modes de réalisation ci-après, les instructions relatives aux accès mémoire et les instructions relatives aux opérations de calcul élémentaire sont traitées par des processus distincts les uns des autres. For each addition (each value of X), a set of instructions can be implemented by the computer device 1. An example of such a set of instructions is given at the end of the description in the form of a computer pseudocode. . Usually, such instructions are applied one after the other during a common process implemented by an ALU 9. In the embodiments below, the instructions relating to memory accesses and the instructions relating to operations elementary computations are processed by separate processes from each other.
Dans un mode de réalisation d’un procédé informatique conforme à la figure 5, on peut décomposer le procédé en étapes référencées respectivement 101 à 109. In an embodiment of a computer method in accordance with FIG. 5, the method can be broken down into steps referenced respectively 101 to 109.
Au cours des étapes 101 et 102, les adresses mémoire @A0 à @AN, respectivement @B0 à @BN, de chacune des données formant opérande pour une au moins des opérations élémentaires à effectuer sont obtenues. On entend par « obtenues » qu’à l’issue des opérations 101 et 102, un ou plusieurs organes mémoires locaux stockent les adresses de toutes les données formant opérande. De tels accès mémoire sont par exemple déclenchés par la réception d’instructions depuis l’unité de commande 5. Dans certains cas, certaines au moins desdites adresses sont déjà stockées dans les organes mémoires locaux. Aucun accès mémoire n’est donc nécessaire à ce stade pour obtenir lesdites adresses préalablement installées sur les organes mémoires locaux. During steps 101 and 102, the memory addresses @ A0 to @AN, respectively @ B0 to @BN, of each of the data forming operands for at least one of the elementary operations to be performed are obtained. By "obtained" is meant that at the end of operations 101 and 102, one or more local memory organs store the addresses of all the data forming operand. Such memory accesses are for example triggered by the reception of instructions from the control unit 5. In certain cases, at least some of said addresses are already stored in the local memory organs. No memory access is therefore necessary at this stage to obtain said addresses previously installed on the local memory organs.
Dans l’exemple décrit ici, on distingue l’étape 101 concernant les premiers opérandes « A » de l’addition de l’étape 102 concernant les seconds opérandes « B » de l’addition. Distinguer les deux opérandes permet ensuite de mettre en œuvre des boucles itératives (au sens informatique) propres à chacun des deux opérandes, et éventuellement différentes l’une de l’autre. In the example described here, a distinction is made between step 101 concerning the first operands "A" of the addition and from step 102 concerning the second operands "B" of the addition. Distinguishing the two operands then makes it possible to implement iterative loops (in the computer sense) specific to each of the two operands, and possibly different from each other.
En variante, en particulier lorsque les deux opérandes préexistent au début du procédé, les étapes 101 et 102 peuvent être mises en œuvre au moins en partie en parallèle l’une de l’autre, indépendamment l’une de l’autre. Alternatively, in particular when the two operands preexist at the start of the process, steps 101 and 102 can be implemented at least partially in parallel with one another, independently of one another.
Au cours des étapes 103 et 104, chacune desdites données obtenues, respectivement A0 à AN et B0 à BN, est lue en mémoire 13, pour chargement dans les registres 11 , via l’interface mémoire 15. De telles lectures sont rendues possibles grâce aux adresses obtenues aux étapes 101 et 102. Dans l’exemple décrit ici, l’étape 103 concerne les premiers opérandes « A » tandis que l’étape 104 concerne les seconds opérandes « B ». During steps 103 and 104, each of said data obtained, respectively A0 to AN and B0 to BN, is read from memory 13, for loading into registers 11, via the memory interface 15. Such readings are made possible by addresses obtained in steps 101 and 102. In the example described here, step 103 concerns the first operands "A" while step 104 concerns the second operands "B".
Au cours de l’étape 105, une instruction d’exécution de calculs est transmise depuis l’unité de commande 5 à destination d’une ALU 9. L’instruction d’exécution est construite de manière à déclencher la mise en œuvre des calculs élémentaires du traitement par l’ALU 9. L’instruction est, ici, dépourvue d’instruction d’adressage. Par dépourvue d’instruction d’adressage, on entend ici que, contrairement à ce qui se fait habituellement, l’instruction d’exécution de calculs transmise par l’unité de commande 5 n’est pas incluse dans un jeu d’instructions général combinant à la fois des instructions d’adressage et des instructions d’exécution de calculs. Ainsi, à réception des instructions, l’ALU 9 est en mesure d’appliquer immédiatement les instructions en effectuant les calculs élémentaires sans qu’il soit nécessaire d’appliquer préalablement des instructions de configuration de l’interface mémoire 15 et donc sans qu’il soit nécessaire, non plus, de vérifier une quelconque dépendance mutuelle des diverses instructions reçues. De manière imagée, l’ALU 9 se comporte alors comme une ressource informatique mettant en œuvre les calculs (étape 106 décrite ci-après) indépendamment d’une éventuelle complexité d’interdépendance entre les différentes instructions. En conditionnant la transmission de l’instruction de calcul (étape 105) à l’exécution préalable des opérations d’adressage (étapes 103 et 104), la disponibilité des données formant opérandes sur les registres 11 est assurée. En pratique, les registres 11 se comportent comme des mémoires tampons de type premier- entré-premier-sorti (ou FIFO pour « First In, First Out »). Les registres 11 se remplissant et se vident en respectant l’ordre d’arrivée des données, ici les opérandes AN (étape 103) et BN (étape 104). L’étape 106 est exécutée si les registres 11 sont non vides : les registres 11 sont dépilés des opérandes AN et BN. En variante, les registres 11 ne fonctionnent pas en mode FIFO. Dans ce cas, des données peuvent y être stockées plus durablement sans risquer d’être effacées et peuvent être réutilisées ultérieurement si besoin. During step 105, a calculation execution instruction is transmitted from the control unit 5 to an ALU 9. The execution instruction is constructed so as to trigger the implementation of the calculations basic treatment for ALU 9. The instruction here is devoid of addressing instruction. By devoid of addressing instruction, it is meant here that, contrary to what is usually done, the instruction for carrying out calculations transmitted by the control unit 5 is not included in a general instruction set combining both addressing instructions and instructions for performing calculations. Thus, on receipt of the instructions, the ALU 9 is able to immediately apply the instructions by carrying out the elementary calculations without the need to apply instructions for configuring the memory interface 15 in advance and therefore without it being necessary, either, to verify any mutual dependence on the various instructions received. In an imaginary manner, the ALU 9 then behaves like a computer resource implementing the calculations (step 106 described below) independently of a possible complexity of interdependence between the different instructions. By conditioning the transmission of the calculation instruction (step 105) to the prior execution of the addressing operations (steps 103 and 104), the availability of the data forming operands on the registers 11 is ensured. In practice, the registers 11 behave like first-in-first-out (or FIFO for “First In, First Out”) buffers. The registers 11 filling and emptying respecting the order of arrival of the data, here the operands AN (step 103) and BN (step 104). Step 106 is executed if the registers 11 are not empty: the registers 11 are unstacked from the operands AN and BN. As a variant, the registers 11 do not operate in FIFO mode. In this case, data can be stored there more permanently without the risk of being erased and can be reused later if necessary.
Au cours de l’étape 106, à réception de l’instruction d’exécution de calculs, l’ALU 9 exécute l’ensemble des opérations élémentaires correspondantes, dès que les opérandes sont disponibles sur les registres 11 . L’étape 106 inclut donc la réception en entrées de l’ALU 9 de chacun des opérandes depuis les registres 11. Sous réserve que les opérations d’adressage 103, 104 aient été préalablement et correctement effectuées, l’étape 106 peut être dépourvue d’accès mémoire (en lecture). During step 106, upon receipt of the instruction for executing calculations, the ALU 9 executes all of the corresponding elementary operations, as soon as the operands are available in the registers 11. Step 106 therefore includes the reception of the ALU 9 of each of the operands from the registers 11 as inputs. Provided that the addressing operations 103, 104 have been previously and correctly carried out, step 106 can be devoid of memory access (read).
Au cours de l’étape 107, les données formant résultats du traitement sont stockées sur les registres 11 en sorties de l’ALU 9. On mentionne ici uniquement les résultats du traitement et non les résultats de chacun des calculs élémentaires. En effet, dans le cas où certains des résultats des calculs élémentaires sont utilisés en tant qu’opérandes pour d’autres calculs élémentaires au cours de l’étape 107, de tels résultats (intermédiaires) peuvent devenir inutiles à l’issu du traitement. Dans ces cas, les résultats intermédiaires peuvent être supprimés des registres 11 à l’issue de l’étape 107 (par exemple écrasés par d’autres données, mode FIFO). En variante, l’ensemble des données formant résultats des opérations élémentaires sont stockées sur les registres 11 à l’issue de l’étape 107 (mode différent du FIFO). During step 107, the data forming results of the processing are stored on the registers 11 at the outputs of the ALU 9. Here we only mention the results of the processing and not the results of each of the elementary calculations. Indeed, in the case where some of the results of the elementary calculations are used as operands for other elementary calculations during step 107, such (intermediate) results may become useless at the end of the processing. In these cases, the intermediate results can be deleted from the registers 11 at the end of step 107 (for example overwritten by other data, FIFO mode). As a variant, all of the data forming results of elementary operations are stored on registers 11 at the end of step 107 (mode different from FIFO).
Au cours de l’étape 108, une adresses mémoire @CX pour chacune des données CX formant résultat du traitement est obtenue. Une telle opération d’adressage permet de déterminer l’emplacement mémoire sur lequel sera stockée chacune des données formant résultat. Dans l’exemple décrit ici, l’étape 108 est mise en œuvre après l’étape 107 d’inscription des résultats dans les registres 11 et avant l’écriture des résultats en mémoire 13 (étape 109 décrite ci-après). En variante, l’étape 107 peut être mise en œuvre plus précocement au cours du procédé, notamment avant l’étape 106. En effet, notamment lorsque la forme (par exemple la taille) des données de résultat est connue à l’avance, il est possible d’adresser les données de résultat avant même leur calcul. L’obtention des adresses mémoire @CX peut inclure la transmission d’instructions d’adressage depuis l’unité de commande 5. During step 108, a memory address @CX for each of the CX data forming the result of the processing is obtained. Such an addressing operation makes it possible to determine the memory location on which each of the data forming the result will be stored. In the example described here, step 108 is implemented after step 107 of recording the results in the registers 11 and before writing the results to memory 13 (step 109 described below). As a variant, step 107 can be implemented earlier during the process, in particular before step 106. In fact, especially when the shape (for example the size) of the result data is known in advance, it is possible to address the result data even before their calculation. Obtaining the @CX memory addresses may include the transmission of addressing instructions from the control unit 5.
Au cours de l’étape 109, chacune des données formant résultat du traitement est écrite en mémoire 13 à partir des registres 11 , pour stockage et via l’interface mémoire 15, au moyen des adresses mémoire obtenues à l’étape 108. During step 109, each of the data forming the result of the processing is written into memory 13 from registers 11, for storage and via the memory interface 15, by means of the memory addresses obtained in step 108.
En figure 6, des exemples de mises en œuvre des étapes 101 , 102, 106 et 108 sont données sous forme de pseudocode informatique. De tels exemples, non limitatifs, représentent des opérations sous forme de boucles informatiques. L’utilisation de boucles est particulièrement avantageux pour limiter le nombre de cycles de calculs nécessaires, et donc pour améliorer l’efficacité, lorsque les opérations à mettre en œuvre sont sensiblement analogues les unes aux autres (par exemple toutes des additions) et que seules les données d’entrée varient. Dans de tels cas, les instructions de calcul transmises à l’étape 105 peuvent prendre la forme d’une boucle réitérée pour chaque opération. In FIG. 6, examples of the implementation of steps 101, 102, 106 and 108 are given in the form of a computer pseudocode. Such non-limiting examples represent operations in the form of computer loops. The use of loops is particularly advantageous for limiting the number of calculation cycles necessary, and therefore for improving efficiency, when the operations to be implemented are substantially analogous to each other (for example all additions) and that only the input data varies. In such cases, the calculation instructions transmitted in step 105 may take the form of a repetitive loop for each operation.
L’ordonnancement chronologique des étapes 101 , 102, 106, 108 est représenté par la flèche « t » en figure 6. Un tel ordonnancement constitue un exemple non limitatif. La figure 6 illustre que, contrairement à l’usage dans le domaine technique, l’adressage des données d’entrée (opérandes) est mis en œuvre distinctement des calculs eux-mêmes. Autrement dit, l’adressage et le calcul sont traités comme deux processus distincts l’un de l’autre plutôt que d’être traités indistinctement, à la volée, à réception d’instructions générales. En particulier, l’étape 106 d’exécution des opérations élémentaires peut débuter alors même que tous les opérandes n’ont pas encore été téléchargés depuis la mémoire 13 sur les registres 11. Typiquement, les premiers cycles de l’étape 106 peuvent débuter dès que les premiers opérandes correspondant sont disponibles sur les registres 11 pour les calculs. Cette mise en œuvre en cascade des opérations confère au système son caractère asynchrone. The chronological ordering of steps 101, 102, 106, 108 is represented by the arrow “t” in FIG. 6. Such a ordering constitutes a nonlimiting example. Figure 6 illustrates that, unlike the use in the technical field, the addressing of the input data (operands) is implemented distinct from the calculations themselves. In other words, addressing and calculation are treated as two separate processes from each other rather than being treated indiscriminately, on the fly, upon receipt of general instructions. In particular, the step 106 for executing the elementary operations can start even though all the operands have not yet been downloaded from the memory 13 to the registers 11. Typically, the first cycles of the step 106 can start as soon as that the first corresponding operands are available on the registers 11 for the calculations. This cascading implementation of operations gives the system its asynchronous nature.
Dans des modes de réalisation, l’ALU 9 exécute (étape 106) l’ensemble des calculs élémentaires du traitement au cours de cycles de calculs consécutifs. Aucun accès mémoire n’est effectué par l’ALU 9 durant ces cycles de calculs. Ainsi, la mise en œuvre des calculs peut être particulièrement rapide. L’ALU 9, durant de tels cycles, est dispensée d’opération d’accès mémoire. En outre, du point de vue de l’ALU 9 effectuant les calculs, l’obtention des opérandes est similaire à un appel en mémoire 13 mais l’obtention des opérandes est plus rapide et indépendantes de l’interface mémoire 15 car les opérandes sont en pratiques lues directement dans les registres 11. Les accès mémoire sont mis en œuvre par une autre ALU (distincte de celle effectuant les calculs). Au moins au cours d’un processus, chaque ALU 9 a une fonction fixe : soit la mise en œuvre des calculs, soit la mise en œuvre des accès mémoire. Cette attribution de fonction fixe à chaque ALU 9 peut être modifiée à l’issue de la mise en œuvre du processus pour conférer de la souplesse au dispositif informatique. Néanmoins, cela implique souvent d’adapter en conséquence le parcours d’adressage. Dans les modes de réalisation préférés, la fonction de chaque ALU 9 est donc figée d’un processus à l’autre : les ALUs sont spécialisées. In embodiments, the ALU 9 performs (step 106) all of the elementary calculations of the processing during consecutive calculation cycles. No memory access is made by the ALU 9 during these calculation cycles. Thus, the implementation of the calculations can be particularly rapid. The ALU 9, during such cycles, is exempt from memory access operation. In addition, from the point of view of the ALU 9 performing the calculations, obtaining the operands is similar to calling memory 13 but obtaining the operands is faster and independent of the memory interface 15 because the operands are in practice read directly from the registers 11. The memory accesses are implemented by another ALU (separate from the one performing the calculations). At least during a process, each ALU 9 has a fixed function: either the implementation of calculations, or the implementation of memory accesses. This fixed function assignment to each ALU 9 can be modified at the end of the implementation of the process to give flexibility to the IT device. However, this often involves adapting the addressing path accordingly. In the preferred embodiments, the function of each ALU 9 is therefore frozen from one process to another: the ALUs are specialized.
Les procédés et les variantes décrits ci-avant peuvent prendre la forme d’un dispositif informatique, incluant un processeur ou un ensemble de processeurs, agencé pour mettre en œuvre un tel procédé. L’invention ne se limite pas aux exemples de procédés et de dispositifs décrits ci-avant, seulement à titre d’exemple, mais elle englobe toutes les variantes que pourra envisager l’homme de l’art dans le cadre de la protection recherchée. L’invention concerne aussi un jeu d’instructions machines implémentable dans un processeur pour obtenir un tel dispositif informatique, tel qu’un processeur ou un ensemble de processeurs, l’implémentation d’un tel jeu d’instructions machines sur un processeur, le procédé de gestion d’architecture de processeur mis en œuvre par le processeur, le programme informatique comprenant le jeu d’instructions machines correspondant, ainsi que le support d’enregistrement sur lequel est enregistré informatiquement un tel jeu d’instructions machines. The methods and variants described above can take the form of a computer device, including a processor or a set of processors, arranged to implement such a method. The invention is not limited to the examples of methods and devices described above, only by way of example, but it encompasses all the variants that a person skilled in the art may envisage within the framework of the protection sought. The invention also relates to a set of machine instructions which can be implemented in a processor for obtaining such a computing device, such as a processor or a set of processors, the implementation of such a set of machine instructions on a processor, the processor architecture management method implemented by the processor, the computer program comprising the corresponding set of machine instructions, as well as the recording medium on which such a set of machine instructions is recorded by computer.
En pages suivantes de la description du document original, sont donnés des exemples de mis en œuvre sous forme de pseudocode informatique. On the following pages of the description of the original document, examples of implementation are given in the form of a computer pseudocode.
Exemple sous forme de pseudocode informatique d’un traitement à effectuer sous la forme de dix additions : Example in the form of a computer pseudocode of a treatment to be carried out in the form of ten additions:
Int A[10], B[10], C[10]  Int A [10], B [10], C [10]
for (i=0; i<10; i++) for (i = 0; i <10; i ++)
{ {
C[i] = A[i] + B[i];  C [i] = A [i] + B [i];
}  }
Exemple sous forme de pseudocode informatique d’instructions usuelles pour effectuer un traitement composé de dix additions : Example in the form of a computer pseudocode of usual instructions for carrying out a treatment consisting of ten additions:
@A, @B, @C  @A, @B, @C
AddrO = @A AddrO = @A
Addrl = @B Addrl = @B
Addr2 = @C Addr2 = @C
LOOP: LOOP:
Load AddrO regO  Load AddrO regO
Load Addrl régi Load Addrl governed
reg2 = regO + régi reg2 = regO + governed
Store addr2 reg2 Store addr2 reg2
AddrO = AddrO + 1 AddrO = AddrO + 1
Addrl = Addrl + 1 Addrl = Addrl + 1
Addr2 = Addr2 + 1 Addr2 = Addr2 + 1
GOTO LOOP (10x) Exemple sous forme de pseudocode informatique d’instructions pour effectuer un traitement composé de dix additions selon un mode de réalisation dans lequel les instructions d’adressage et les instructions de calcul sont distinguées les unes des autres : //étape 101// GOTO LOOP (10x) Example in the form of a computer pseudocode of instructions for carrying out a processing consisting of ten additions according to an embodiment in which the addressing instructions and the calculation instructions are distinguished from each other: // step 101 //
Addr = @A  Addr = @A
LOOP LOOP
Load Addr Load Addr
Addr = addr + 1 Addr = addr + 1
GOTO LOOP (10x) //étape 102//GOTO LOOP (10x) // step 102 //
Addr = @B Addr = @B
LOOP LOOP
Load Addr Load Addr
Addr = addr + 1 GOTO LOOP (10x) Addr = addr + 1 GOTO LOOP (10x)
//étape 106// LOOP // step 106 // LOOP
c = a + b c = a + b
GOTO LOOP (10x)  GOTO LOOP (10x)
//étape 108// Addr = @C // step 108 // Addr = @C
LOOP LOOP
Load Addr Load Addr
Addr = addr + 1 GOTO LOOP (10x) Addr = addr + 1 GOTO LOOP (10x)

Claims

Revendications claims
1. Procédé de traitement de données, décomposable en un ensemble d’opérations élémentaires à effectuer, mis en œuvre par un dispositif (1 ) informatique, ledit dispositif (1 ) comprenant : 1. Data processing method, decomposable into a set of elementary operations to be carried out, implemented by a computer device (1), said device (1) comprising:
- une unité de commande (5) ;  - a control unit (5);
- au moins une unité arithmétique et logique (9) ;  - at least one arithmetic and logical unit (9);
- un jeu de registres (11 ) aptes à alimenter en données formant opérande des entrées de ladite première unité arithmétique et logique (9) et aptes à être alimentés en données issues des sorties de ladite unité arithmétique et logique (9) ;  - a set of registers (11) capable of supplying data forming operands to the inputs of said first arithmetic and logic unit (9) and capable of being supplied with data originating from the outputs of said arithmetic and logic unit (9);
- une mémoire (13) ;  - a memory (13);
- une interface mémoire (15) par l’intermédiaire de laquelle des données (A0, A15) sont transmises et routées entre les registres (11 ) et la mémoire (13) ; ledit procédé comprenant :  - a memory interface (15) by means of which data (A0, A15) are transmitted and routed between the registers (11) and the memory (13); said method comprising:
a) obtenir (101 , 102) les adresses mémoire (@A0, @A15) de chacune des données absentes des registres (11 ) et formant opérande pour une au moins desdites opérations élémentaires à effectuer et ; a) obtaining (101, 102) the memory addresses (@ A0, @ A15) of each of the data absent from the registers (11) and forming the operand for at least one of said elementary operations to be carried out and;
b) lire (103, 104) en mémoire (13), pour chargement dans les registres (11 ) via l’interface mémoire (15), chacune desdites données (A0, A15) au moyen des adresses mémoire (@A0, @A15) obtenues ; b) read (103, 104) in memory (13), for loading into the registers (11) via the memory interface (15), each of said data (A0, A15) by means of the memory addresses (@ A0, @ A15 ) obtained;
c) transmettre (105) une instruction d’exécution de calculs depuis l’unité de commande (5) à destination de ladite première unité arithmétique et logique (9), ladite instruction étant dépourvue d’instruction d’adressage ; c) transmitting (105) an instruction for executing calculations from the control unit (5) to said first arithmetic and logic unit (9), said instruction being devoid of addressing instructions;
d) à réception de ladite instruction d’exécution de calculs, et dès que les opérandes correspondants sont disponibles sur les registres (11 ), exécuter l’ensemble desdites opérations élémentaires (106) par ladite première unité arithmétique et logique (9) recevant en entrées chacun des opérandes depuis les registres (11 ) ; d) on receipt of said instruction for executing calculations, and as soon as the corresponding operands are available in the registers (11), execute all of said elementary operations (106) by said first arithmetic and logic unit (9) receiving in inputs each of the operands from the registers (11);
e) stocker (107) les données (C0, C15) formant résultats du traitement sur les registres (11 ) en sorties de ladite première unité arithmétique et logique (9) ; f) obtenir (108) une adresses mémoire (@C0, @C15) pour chacune des données formant résultat du traitement ; e) storing (107) the data (C0, C15) forming results of the processing on the registers (11) at the outputs of said first arithmetic and logic unit (9); f) obtain (108) a memory address (@ C0, @ C15) for each of the data forming the result of the processing;
g) écrire (109) en mémoire (13) chacune des données (C0, C15) formant résultat du traitement issues des registres (11 ), pour stockage et via l’interface mémoire (15), au moyen des adresses mémoire (@C0, @C15) obtenues. g) write (109) in memory (13) each of the data (C0, C15) forming the result of the processing from the registers (11), for storage and via the memory interface (15), by means of the memory addresses (@ C0 , @ C15) obtained.
2. Procédé selon la revendication 1 , dans lequel ladite première unité arithmétique et logique (9) exécute l’ensemble des calculs élémentaires du traitement au cours de cycles de calculs consécutifs, aucun accès mémoire n’étant effectué par ladite première unité arithmétique et logique (9) durant lesdits cycles de calculs. 2. Method according to claim 1, in which said first arithmetic and logic unit (9) performs all of the elementary calculations of the processing during consecutive calculation cycles, no memory access being carried out by said first arithmetic and logic unit. (9) during said calculation cycles.
3. Procédé selon l’une des revendications précédentes, dans lequel l’une au moins parmi les étapes suivantes comprend une boucle itératives : 3. Method according to one of the preceding claims, in which at least one of the following steps comprises an iterative loop:
a) obtenir (101 , 102) les adresses mémoire (@A0, @A15) de chacune des données absentes des registres (11 ) et formant opérande pour une au moins desdites opérations élémentaires à effectuer et ; a) obtaining (101, 102) the memory addresses (@ A0, @ A15) of each of the data absent from the registers (11) and forming the operand for at least one of said elementary operations to be carried out and;
d) à réception de ladite instruction d’exécution de calculs, exécuter l’ensemble desdites opérations élémentaires (106) par ladite première unité arithmétique et logique (9) recevant en entrées chacun des opérandes depuis les registres (1 1 ) ; d) upon receipt of said instruction for executing calculations, execute all of said elementary operations (106) by said first arithmetic and logic unit (9) receiving as inputs each of the operands from the registers (1 1);
f) obtenir (108) une adresses mémoire (@C0, @C15) pour chacune des données formant résultat du traitement. f) obtaining (108) a memory address (@ C0, @ C15) for each of the data forming the result of the processing.
4. Procédé selon l’une des revendications précédentes, dans lequel le dispositif (1 ) comprend en outre au moins une unité arithmétique et logique supplémentaire et distincte de la première unité arithmétique et logique (9) exécutant l’ensemble desdites opérations élémentaires (106), l’unité arithmétique et logique supplémentaire mettant en œuvre : 4. Method according to one of the preceding claims, wherein the device (1) further comprises at least one additional arithmetic and logic unit and distinct from the first arithmetic and logic unit (9) performing all of said elementary operations (106 ), the additional arithmetic and logical unit implementing:
a) l’obtention (101 , 102) des adresses mémoire (@A0, @A15) de chacune des données absentes des registres (11 ) et formant opérande pour une au moins desdites opérations élémentaires à effectuer ; et a) obtaining (101, 102) memory addresses (@ A0, @ A15) of each of the data absent from the registers (11) and forming the operand for at least one of said elementary operations to be carried out; and
b) la lecture (103, 104) en mémoire (13), pour chargement dans les registres (11 ) via l’interface mémoire (15), de chacune desdites données (AO, A15) au moyen des adresses mémoire (@A0, @A15) obtenues. b) reading (103, 104) in memory (13), for loading into the registers (11) via the memory interface (15), of each of said data (AO, A15) by means of the memory addresses (@ A0, @ A15) obtained.
5. Dispositif (1 ) informatique de traitement de données, ledit traitement étant décomposable en un ensemble d’opérations élémentaires à effectuer, ledit dispositif (1 ) comprenant : 5. Data processing device (1), said processing being decomposable into a set of elementary operations to be carried out, said device (1) comprising:
- une unité de commande (5) ;  - a control unit (5);
- au moins une première unité arithmétique et logique (9) parmi une pluralité ; - at least a first arithmetic and logic unit (9) among a plurality;
- un jeu de registres (11 ) aptes à alimenter en données formant opérande des entrées desdites unités arithmétiques et logiques (9, 10) et aptes à être alimentés en données issues des sorties desdites unités arithmétiques et logiques (9) ; - a set of registers (11) capable of supplying data forming operand to the inputs of said arithmetic and logic units (9, 10) and capable of being supplied with data from the outputs of said arithmetic and logic units (9);
- une mémoire (13) ;  - a memory (13);
- une interface mémoire (15) par l’intermédiaire de laquelle des données (A0, A15) sont transmises et routées entre les registres (11 ) et la mémoire (13) ; ledit dispositif (1 ) informatique étant configuré pour :  - a memory interface (15) by means of which data (A0, A15) are transmitted and routed between the registers (11) and the memory (13); said computer device (1) being configured for:
a) obtenir (101 , 102) les adresses mémoire de chacune des données absentes des registres (11 ) et formant opérande pour une au moins desdites opérations élémentaires à effectuer et ; a) obtaining (101, 102) the memory addresses of each of the data absent from the registers (11) and forming an operand for at least one of said elementary operations to be carried out and;
b) lire (103, 104) en mémoire (13), pour chargement dans les registres (11 ) via l’interface mémoire (15), chacune desdites données au moyen des adresses mémoire obtenues ; b) read (103, 104) in memory (13), for loading into the registers (11) via the memory interface (15), each of said data by means of the memory addresses obtained;
c) transmettre (105) une instruction d’exécution de calculs depuis l’unité de commande (5) à destination de ladite première unité arithmétique et logique (9), ladite instruction étant dépourvue d’instruction d’adressage ; c) transmitting (105) an instruction for executing calculations from the control unit (5) to said first arithmetic and logic unit (9), said instruction being devoid of addressing instructions;
d) à réception de ladite instruction d’exécution de calculs, et dès que les opérandes sont disponibles sur les registres (11 ), exécuter l’ensemble desdites opérations élémentaires (106) par ladite première unité arithmétique et logique (9) recevant en entrées chacun des opérandes depuis les registres (11 ) ; d) on receipt of said instruction for carrying out calculations, and as soon as the operands are available on the registers (11), execute all of said elementary operations (106) by said first arithmetic and logic unit (9) receiving as inputs each of the operands from the registers (11);
e) stocker (107) les données formant résultats du traitement sur les registres (11 ) en sorties de ladite première unité arithmétique et logique (9) ; e) storing (107) the data forming results of the processing on the registers (11) as outputs of said first arithmetic and logic unit (9);
f) obtenir (108) une adresses mémoire pour chacune des données formant résultat du traitement ; f) obtain (108) a memory address for each of the data forming treatment result;
g) écrire (109) en mémoire (13) chacune des données formant résultat du traitement issues des registres (11 ), pour stockage et via l’interface mémoire (15), au moyen des adresses mémoire obtenues. g) write (109) in memory (13) each of the data forming a result of the processing coming from the registers (11), for storage and via the memory interface (15), by means of the memory addresses obtained.
6. Jeu d’instructions machines pour la mise en œuvre du procédé selon l’une des revendications 1 à 4 lorsque ce programme est exécuté par un dispositif (1 ) informatique incluant au moins un processeur. 6. Set of machine instructions for implementing the method according to one of claims 1 to 4 when this program is executed by a computer device (1) including at least one processor.
7. Programme informatique comportant des instructions pour la mise en œuvre du procédé selon l’une des revendications 1 à 4 lorsque ce programme est exécuté par un dispositif (1 ) informatique incluant au moins un processeur. 7. Computer program comprising instructions for implementing the method according to one of claims 1 to 4 when this program is executed by a computer device (1) including at least one processor.
8. Support d’enregistrement non transitoire lisible par un ordinateur sur lequel est enregistré un programme pour la mise en œuvre du procédé selon l’une des revendications 1 à 4 lorsque ce programme est exécuté par un processeur. 8. Non-transient recording medium readable by a computer on which a program for implementing the method according to one of claims 1 to 4 is recorded when this program is executed by a processor.
EP19737810.2A 2018-06-29 2019-05-21 Asynchronous processor architecture Pending EP3814923A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1856000A FR3083351B1 (en) 2018-06-29 2018-06-29 ASYNCHRONOUS PROCESSOR ARCHITECTURE
PCT/FR2019/051156 WO2020002783A1 (en) 2018-06-29 2019-05-21 Asynchronous processor architecture

Publications (1)

Publication Number Publication Date
EP3814923A1 true EP3814923A1 (en) 2021-05-05

Family

ID=65031328

Family Applications (1)

Application Number Title Priority Date Filing Date
EP19737810.2A Pending EP3814923A1 (en) 2018-06-29 2019-05-21 Asynchronous processor architecture

Country Status (6)

Country Link
US (1) US20210141644A1 (en)
EP (1) EP3814923A1 (en)
KR (1) KR20210021588A (en)
CN (1) CN112639760A (en)
FR (1) FR3083351B1 (en)
WO (1) WO2020002783A1 (en)

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5513366A (en) * 1994-09-28 1996-04-30 International Business Machines Corporation Method and system for dynamically reconfiguring a register file in a vector processor
CN1180427A (en) * 1996-02-28 1998-04-29 爱特梅尔股份有限公司 System for performing arithmetic operations with single or double precision
US6009505A (en) * 1996-12-02 1999-12-28 Compaq Computer Corp. System and method for routing one operand to arithmetic logic units from fixed register slots and another operand from any register slot
GB0323950D0 (en) * 2003-10-13 2003-11-12 Clearspeed Technology Ltd Unified simid processor
JP4232838B2 (en) * 2007-03-29 2009-03-04 日本電気株式会社 Reconfigurable SIMD type processor
US8880856B1 (en) * 2009-06-17 2014-11-04 Juniper Networks, Inc. Efficient arithmetic logic units
US8639882B2 (en) * 2011-12-14 2014-01-28 Nvidia Corporation Methods and apparatus for source operand collector caching
CN104115115B (en) * 2011-12-19 2017-06-13 英特尔公司 For the SIMD multiplication of integers accumulated instructions of multiple precision arithmetic
BR112014032625A2 (en) * 2012-07-06 2017-06-27 Koninklijke Philips Nv computer system; computer processor; and compiler

Also Published As

Publication number Publication date
US20210141644A1 (en) 2021-05-13
FR3083351A1 (en) 2020-01-03
KR20210021588A (en) 2021-02-26
FR3083351B1 (en) 2021-01-01
WO2020002783A1 (en) 2020-01-02
CN112639760A (en) 2021-04-09

Similar Documents

Publication Publication Date Title
EP2232368B1 (en) System comprising a plurality of processing units making it possible to execute tasks in parallel, by mixing the mode of execution of control type and the mode of execution of data flow type
EP2366147B1 (en) Physical manager of synchronization barrier between multiple processes
WO2006021713A1 (en) Task processing scheduling method and device for implementing same
EP1949234A1 (en) Method and system for conducting intensive multitask and multiflow calculation in real-time
FR2668271A1 (en) Interface for dynamic modelling of the performance of computer systems
FR2500659A1 (en) DEVICE FOR DYNAMICALLY ALLOCATING TASKS OF A MULTIPROCESSOR COMPUTER
EP2947563B1 (en) Conditional instruction processor
EP3814893A1 (en) Processor memory access
WO2020002783A1 (en) Asynchronous processor architecture
EP2585931B1 (en) Device, string, and method for processing data, and corresponding computer program
EP2956874B1 (en) Device and method for accelerating the update phase of a simulation kernel
EP3716086A1 (en) Direct memory access
WO2014195141A1 (en) Material accelerator for handling red and black trees
EP4242855B1 (en) Address generator for a computer having a single instruction multiple data architecture
EP1596282A2 (en) Apparatus and method of instruction set control in a microprocessor
FR2957699A1 (en) DATA PROCESSING SYSTEM
WO2019115902A1 (en) Processor architectures
FR2858074A1 (en) Computer program execution managing method, involves selecting part of input data if selected computer does not have sufficient resources to execute entire program execution request, and creating two execution sub-requests

Legal Events

Date Code Title Description
STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: UNKNOWN

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

Free format text: STATUS: THE INTERNATIONAL PUBLICATION HAS BEEN MADE

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

Free format text: STATUS: THE INTERNATIONAL PUBLICATION HAS BEEN MADE

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

Free format text: ORIGINAL CODE: 0009012

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

Free format text: STATUS: REQUEST FOR EXAMINATION WAS MADE

17P Request for examination filed

Effective date: 20201223

AK Designated contracting states

Kind code of ref document: A1

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

DAV Request for validation of the european patent (deleted)
DAX Request for extension of the european patent (deleted)
STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: EXAMINATION IS IN PROGRESS

17Q First examination report despatched

Effective date: 20230629