EP2438528A1 - Method and device for loading and executing instructions with deterministic cycles in a multicore avionics system having a bus, the access time of which is unpredictable - Google Patents

Method and device for loading and executing instructions with deterministic cycles in a multicore avionics system having a bus, the access time of which is unpredictable

Info

Publication number
EP2438528A1
EP2438528A1 EP10734208A EP10734208A EP2438528A1 EP 2438528 A1 EP2438528 A1 EP 2438528A1 EP 10734208 A EP10734208 A EP 10734208A EP 10734208 A EP10734208 A EP 10734208A EP 2438528 A1 EP2438528 A1 EP 2438528A1
Authority
EP
European Patent Office
Prior art keywords
memory
execution
core
cores
access
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
EP10734208A
Other languages
German (de)
French (fr)
Inventor
Victor Jegu
Benoît TRIQUET
Frédéric ASPRO
Claire PAGETTI
Frédéric BONIOL
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.)
Airbus Operations SAS
Original Assignee
Airbus Operations SAS
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 Airbus Operations SAS filed Critical Airbus Operations SAS
Publication of EP2438528A1 publication Critical patent/EP2438528A1/en
Ceased 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/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • 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, look ahead
    • G06F9/3802Instruction prefetching

Definitions

  • the present invention relates to the architecture of avionic type systems and more particularly to a method and a device for loading and executing deterministic cycle instructions in a multi-core avionic system having a bus whose access time is not predictable.
  • Modern aircraft include more and more electronic and computer systems to improve their performance and assist pilots and crew members on their missions.
  • the electric flight controls reduce the mechanical complexity of the transmission of commands to the actuators and therefore the mass associated with these commands.
  • the presentation of relevant information allows the pilot to optimize flight paths and respond quickly to any incident detected.
  • Such information includes speed, position, heading, meteorological and navigation data.
  • All of these electronic and computer systems are generally called avionics.
  • avionics has often been functionally distributed by specific modules, also called LRU (abbreviation of A Replaceable Unit in English terminology).
  • LRU abbreviation of A Replaceable Unit in English terminology.
  • the flight controls are managed in a particular device while the power supply is managed in another. A specific function is thus associated with each module.
  • each module supporting a critical function is preferably redundant so that the failure of a module does not lead to the loss of the associated function.
  • the operation of an aircraft using a redundant module when the main module is faulty requires a maintenance operation.
  • avionics is now more and more integrated according to an architecture called IMA (abbreviation of Integrated Modular Avionics).
  • IMA abbreviation of Integrated Modular Avionics
  • the functionalities are decorrelated from the systems, that is to say calculators or computing resources, in which they are implemented. Nevertheless, a segregation system makes it possible to isolate each of the functionalities so that the failure of one function has no influence on another.
  • Such systems implement different modules, in particular data processing modules, called CPM (Acronym for Core Processing Module in English terminology), data switching modules, called ASM (acronym for Avionic Switch Module in English). English terminology), and power supply modules, also called PSM (acronym for Power Supply Module in English terminology).
  • CPM data processing modules
  • ASM Acronym for Avionic Switch Module in English
  • PSM power supply modules
  • the data processing modules include so-called “high performance” modules for general avionics applications, so-called “critical time” modules for avionics applications with strong temporal determinism constraints and server-type modules for the applications. open world applications, not critical.
  • a data processing module is generally composed of one or more processors, also called CPUs (acronym for Central Processing Unit in English terminology), associated with one or more RAM type memory banks (acronym of Random Access Memory in English). Anglo-Saxon terminology) and FLASH.
  • the communications between several CPUs of a CPM are preferably provided by means of direct links to a shared memory or through an exchange memory of a communication interface, for example an AFDX interface (acronym Avionic FuII DupleX in Anglo-Saxon terminology).
  • CPM TC Critical time data processing module
  • FIG. 1 schematically illustrates a CPM implementing such an architecture.
  • the CPM 100 here comprises four "single-core" processors 105-1 to 105-4 and, associated with each processor, memory type DDRAM (acronym for Double Data Rate Random Access Memory in English terminology), generically referenced 110, and of flash type, generically referenced 115.
  • the CPM comprises a set 120 of logic circuits allowing in particular the processors 105-1 to 105-4 to exchange data with other components of the aircraft via an input / output module 125.
  • TC CPMs do not typically implement processors based on multi-core architectures using cache memories. Indeed, the CPM TC need a strong determinism of their execution time and their hidden memories create a variability which is difficult to determine due to a historical effect according to which, according to the past events, information may still be cached or not. It may then be necessary to recharge it without this being determined in advance. The same is true for the pipelined instruction sequences of processor cores and memory controllers for which the instructions can be spread over several cycles, thus creating historical dependencies.
  • TC CPMs must discard the mechanisms behind these variabilities and use margins to determine runtimes in advance, making the use of multi-core processors inefficient.
  • the invention solves at least one of the problems discussed above. More particularly, it is possible, according to the invention, to determine in advance the use of cache memories of multi-core systems so that the latency of the memories is no longer a factor limiting the performance.
  • the invention also makes it possible, in a multi-core, multi-processor architecture, or more generally a shared processor bus, to obtain the independence of computing cores and the determination of non-pessimistic WCETs.
  • cache memory latency independence allows the determination of WCET even if the memory and memory controller models are imprecise.
  • the subject of the invention is thus a method for loading and executing deterministic execution cycles of a plurality of instructions in an avionic system comprising at least one processor having at least two cores and at least one memory controller, each of said at least two cores having a private memory, said plurality of instructions being loaded and executed in execution slots, the method comprising the following steps,
  • access authorization to said at least one memory controller to a first of said at least two cores said first core transmitting to said at least one memory controller at least one data item stored in its private memory previously modified, and receiving at least one datum and at least one instruction of said plurality of instructions, said at least one datum and said at least one received instruction being stored in its private memory; o prohibiting access to said at least one memory controller to a second of said at least two cores, said second core executing at least one instruction previously stored in its private memory; during a second execution slice, prohibiting access to said at least one memory controller at said first core, said first core executing at least one instruction previously stored in its private memory; and, o access authorization to said at least one memory controller to said second core, said second core transmitting to said at least one memory controller at least one piece of data stored in its private memory, previously modified, and receiving at least one piece of data, and least one instruction of said plurality of instructions, said at least one data item and said at least one received instruction being stored in its private memory.
  • the method according to the invention thus makes it possible to implement technologies based on multi-core processors having buses whose access time is unpredictable for applications having high temporal deterministic constraints.
  • the method allows the use of burst-type memories of the DDRx type (mode called burst in English terminology), cores working at frequencies above 1 GHz, the implementation of massively parallel architecture and the electronic integration as unique components.
  • the time of the memory access phases is advantageously less than the total time spent by a heart waiting for the completion of each of these accesses for the execution model to be effective.
  • Another significant advantage is the simplification and strong reduction of pessimism of WCET calculations by static analysis due to the presence in private memory of the data used in the calculation phases.
  • Another advantage is the static analysis tools based on a processor model. Since the tool does not have to consider scenarios including access to shared memory in its analyzes, the processor model can be reduced to the core and its private memories.
  • said at least one processor further comprises at least one second memory controller, the method further comprising the following steps,
  • the method thus allows cores to access shared memories to execute instructions using common data.
  • at least one of said at least two cores is dedicated to data transmission and reception operations to and from a network communication interface to simplify the modeling of the processor.
  • the invention also relates to a method of processing a plurality of instructions for enabling the loading and the execution at deterministic execution cycles of said plurality of instructions according to the method described above, the method of treatment comprising a step of cutting said plurality of instructions into execution slots, each execution slot comprising a transfer sequence and an execution sequence, said transfer sequence allowing the transmission of at least one previously stored data and the reception and storing at least one datum and at least one instruction, said at least one received datum being necessary for the execution of said at least one received instruction and allowing the execution of said at least one received instruction, autonomously, during execution of said execution sequence.
  • the processing method thus makes it possible to cut the instructions into execution slices in order to optimize the described loading and execution method whose efficiency depends on the ability to precisely determine the information needed for a next execution phase to avoid to underestimate or overestimate the amount of information needed, which has the effect of requiring access to the shared memory for the execution of the instructions or to generate a longer loading phase at the time that the heart would spend loading each given.
  • said step of cutting is based on the resolution of a system of linear equations representing constraints of execution of the instructions of said plurality of instructions according to at least one characteristic of said at least one processor.
  • the method according to the invention thus makes it possible to optimize the organization of the execution slots and to simplify their determination.
  • the duration of said execution slots is preferably constant and predetermined. This duration is, for example, determined by the time of transmission of previously modified data and the time of receipt of data and instructions to be executed.
  • the invention also relates to a computer program comprising instructions adapted to the implementation of each of the steps of the method described above when said program is executed in a processor, a device comprising means adapted to the implementation of each of the steps of the method described above and an aircraft comprising the device according to the preceding claim.
  • a computer program comprising instructions adapted to the implementation of each of the steps of the method described above when said program is executed in a processor
  • a device comprising means adapted to the implementation of each of the steps of the method described above and an aircraft comprising the device according to the preceding claim.
  • FIG. 1 schematically shows a data processing module comprising several single-core processors
  • FIG. 2 comprising FIGS. 2a to 2d, schematically illustrates a time diagram illustrating the activities of a processor comprising eight cores, implemented in accordance with the invention
  • FIG. 3 comprising FIGS. 3a and 3b, illustrates an exemplary multi-core architecture adapted to implement the invention
  • FIG. 4 comprising FIGS. 4a to 4d, illustrates an exemplary access mechanism, by each heart in the transfer phase of a multi-core processor, to the memory controllers of this processor;
  • FIG. 5 schematically illustrates a module of an avionics system, whose architecture is based on a multi-core processor such as that shown in Figure 3b, adapted to implement the invention.
  • Multi-core processors of the latest generation also called SoC multicores (acronym for System on Chip in English terminology)
  • SoC multicores acronym for System on Chip in English terminology
  • this potential is difficult to exploit, especially for reasons of determinism and proof or test relating to temporal requirements.
  • the notion of real time implies a precise control of the temporal behavior of applications executed, in particular of their WCET.
  • critical requires, in the field of aeronautics, to provide strong evidence of this control. This issue of determinism comes partly from the execution of one or more competing applications on each of the cores which share certain resources in insufficient number to physically segregate all the paths of all the cores, in particular the data exchange buses. and memories used.
  • each heart has one or more private cache memories.
  • the cores envisaged in the CPMs have three private cache memories per cores: an L1_l (or L1 I) cache memory for the instructions, an L1_D (or L1 D) cache for the data and a unified L2 cache memory for the instructions and the data. While it is important here that each core has an individual cache memory and instructions for loading and unloading them, the number of levels of caches does not matter.
  • each core can access a local memory having an address on the core network.
  • the invention can be implemented with an internal SoC device external to the cores, DMA SoC type (DMA stands for Direct Memory Access in English terminology), controlled by the cores or activated on a fixed date on the This device is responsible for transferring the data in both directions between the memories associated with the cores, of the RAM type, and the central memories of the DDR type.
  • DMA SoC type DMA stands for Direct Memory Access in English terminology
  • the principle of the system according to the invention is to create phases during which applications run exclusively within their private cache memories, no external request (data access or monitoring) to affect them.
  • rendezvous points between which a core has access to each resource (for example a particular memory controller), exclusive and shared with a minimum of other cores. Outside these beaches, the heart can not access these resources. It is therefore necessary to distribute the meeting points so that each heart has equitable access to resources.
  • these rendezvous points are placed statically and regularly.
  • FIG. 2 schematically illustrates a timing diagram illustrating the activities of a processor comprising eight cores, implemented in accordance with the invention.
  • the type of activity of each of the cores is here represented along the time axis 200.
  • FIG. 2b shows part of FIG. 2a to illustrate more precisely the roles of a particular heart, here the second.
  • the marks 205-i, 205-j and 205-k define moments that represent static and regular rendezvous points where the hearts change their role.
  • the first heart executes a series of instructions previously stored in its cache memory with the corresponding data (reference 210).
  • the second heart exchanges data with a memory controller.
  • the second core prepares for an autonomous execution phase during which it will not need to access the memory controllers.
  • the period separating two consecutive instants at which each heart changes its role defines an execution slot denoted T. Then, at time 205-j, the first heart transmits data stored in its cache memory to the memory controller (reference 225 ) and then receives data and instructions from the memory controller which it stores in its cache memory (reference 230). From the same instant 205-j, the second heart executes the instructions previously stored in its cache memory with the corresponding data (reference 235).
  • the first heart executes previously received instructions while the second heart transmits and receives data and instructions.
  • the SoC comprising the processor whose operation is illustrated in FIG. 2 also preferably comprises two memory controllers.
  • the two pairs of cores 240 and 245 of the set 250 each access a different memory controller so that within this set, each memory controller is accessed, at a given instant, only by one heart.
  • the two pairs of cores 255 and 260 of the set 265 each access a different memory controller so that within this together, each controller is accessed, at a given moment, only by one heart.
  • each memory controller is accessed by two separate cores.
  • the SoC has several memory controllers, the access of the cores to each of the memory controllers is advantageously balanced. However, only one memory controller can be used, especially if it is sufficient to serve the performance needs of the CPM TC. In this case, the use of a single memory controller makes it possible to improve the development costs as well as the reliability, the mass and the heat dissipation of the SoC.
  • the scheduling of the transfer phases on all the cores is preferably strictly synchronous, balanced and planned.
  • the use of shared resources, including memory controllers, is also preferably strictly synchronous, balanced and planned.
  • the SoC contains two memory controllers, half of the cores in the transfer phase access, at any time, to one of the memory controllers and the other half to the other memory controller. If necessary, at preset times, all or part of the cores in the transfer phase can change memory controller to maintain the correct balance.
  • Two strategies can be implemented:
  • two cores form a pipeline of 10 requests in the memory controller, ie 80 data transfers of the burst type of 8 data per request. It is thus enough that the latency of a request is less than 40 cycles, by using a double transfer rate ⁇ double data rate) so as not to have a period of inactivity in the pipeline of the memory controller.
  • worst time to execute the cached code instructions with its associated data depends on the nature of the application executed, it is relatively constant for avionics applications; and, worst time for transferring modified data to the memory controllers from the cache memories and to load, from the memory controllers, the instructions, constants and variables of a execution slice in caches. This time depends on the number of hearts competing.
  • FIGS. 2a and 2b illustrate an example of optimal placement when the duration of the unloading / loading phase is identical to that of the execution phase of the instructions, many other distributions are possible.
  • FIGS. 2c and 2d show examples of optimal placement when the duration of the execution phase of the instructions is less than three times that of the unloading / loading phase and greater than or equal to three times that of the unloading / loading phase, respectively, ⁇ representing the duration of an execution slice.
  • FIG. 3 comprising FIGS. 3a and 3b, illustrates an exemplary multi-core architecture adapted to implement the invention.
  • the multi-core system 300 diagrammatically shown in FIG. 3a here comprises eight cores referenced 305-1 to 305-8, each connected to a local memory with a low, invariant and history-independent access time, ie -describe the previous performance of the computing unit to which it is connected.
  • These local memories here bear references 310-1 to 310-8. They can be local cache memories or blocks of static memory accessible by virtual or physical addressing from the calculation units.
  • Each local memory is itself connected to a bus unit, whose references are 315-1 to 315-8, connected in turn to a common bus 320 connected to a shared memory 325.
  • the cores form arithmetic calculation units. , logical, floating or other that perform complex processing. They only access the local memory to which they are connected.
  • the issue of calculating WCET of the cores forming the domain 330 is decorrelated from the multi-core characteristic and the modeling problem of the shared external memory and the interconnection network of the cores forming the domain 335.
  • the cache memories or static memory blocks are maintained coherently and powered by a multi-actor system simpler than the cores.
  • the variability due to inputs, the combinatorics due to branching decisions, all the speculative decisions that the execution units can take and all the variability due to uncertainties of synchronism between the cores are ignored in the field 335.
  • the WCET problematic of the domain 330 then only consists in calculating the WCET of arbitrarily complex programs, considered individually, for each of the calculation slices, and independently of the complexity of the domain 335.
  • This decomposition into domains 330 and 335 can be achieved on conventional mono or multicore processors provided with cache memories and appropriate instruction sets by synchronizing the bus units of the cores and by making them play the role of the system implemented. to maintain coherence of memories 310-1 to 310-8.
  • FIG. 3b illustrates an exemplary architecture of a multi-core SoC adapted to implement the invention.
  • the SoC 300 'here comprises the eight cores 3O5'-1 to 3O5'-8, generically referenced 305, with which are associated private cache memories generically referenced 340, 345 and 350.
  • the cache memory L1_l, referenced 340-1 , the cache L1_D, referenced 345-1, and the cache memory L2, referenced 350-1 are associated with the core 3O5'-1.
  • the cache memory L1_1, referenced 340-8, the cache memory L1_D, referenced 345-8, and the cache memory L2, referenced 350-8 are associated with the core 305'-8. It is the same for other hearts.
  • Each system consisting of a core and the associated private cache is connected to a fast data bus, referenced 320 ', which is itself connected to memory controllers 355-1 and 355-2, generically referenced 355.
  • the heart 3O5'-8 is here dedicated to the management of physical inputs / outputs.
  • the cores 3O5'-1 to 3O5'-8 may have an internal frequency of 1.6 GHz.
  • the data bus connecting the cores to the memory controllers can also use a frequency of 1, 6 GHz.
  • the loading / unloading time is about 25 ⁇ s in count.
  • the execution time of the instructions representing about two-thirds of the data exchanged, with a ratio of one instruction per three cycles of a heart, to 1, 6 GHz, is about 54 ⁇ s.
  • FIG. 4 comprising FIGS. 4a to 4d, illustrates an example of access mechanism, by each heart in the transfer phase of a multi-core processor, to the memory controllers of this processor.
  • a first half of the cores in the transfer phase accesses the first controller and the second half accesses the second controller.
  • the cores 3O5'-1 and 3O5'-2 access the memory controller 355-2 while the cores 3O5'-3 and 3O5'-4 access the memory controller 355-1 and the cores 3O5'-5 at 3O5'-8 are in the execution phase and can not access memory controllers 355-1 and 355-2.
  • the second half of the cores in the transfer phase accesses the first controller and the first half accesses the second controller.
  • the cores 3O5'-1 and 3O5'-2 access the memory controller 355-1 while the cores 3O5'-3 and 3O5'-4 access the 355-2 memory controller and the 3O5'-5 to 3O5'-8 cores are still in the execution phase and still can not access the 355-1 and 355-2 memory controllers.
  • the first and second times illustrated in FIGS. 4a and 4b are repeated so that, during a first period, the memory controllers 355-1 and 355-2 are used for data unloading and that, during a second period, Memory controllers 355-1 and 355-2 are used for data loading.
  • the first and second periods here have the same duration, the duration of the first period being, like that of the second period, identical for each memory controller.
  • the sequence of operations consists of unloading all the data by crossing the links between the memory controllers and the cores in the transfer phase at a given time and then loading the new data by again crossing the links between the memory controllers. and hearts in the transfer phase at a given moment.
  • the hearts change roles.
  • the cores that were in the transfer phase go into execution phase while the cores that were in the execution phase go into the transfer phase.
  • the cores 3O5'-5 and 3O5'-6 access the memory controller 355-2 while the cores 3O5'-7 and 3O5'-8 access the controller of memory 355-1 and that cores 3O5'-1 to 3O5'-4 are in the execution phase and can not access memory controllers 3355-1 and 355-2.
  • the cores 3O5'-5 and 3O5'-6 access the memory controller 355-1 while the cores 3O5'-7 and 3O5'-8 access the controller of 355-2 memory and that the 3O5'-1 to 3O5'-4 cores are still in the execution phase and still can not access memory controllers 355-1 and 355-2.
  • the third and fourth times shown in Figs. 4c and 4d are repeated so that during a first period memory controllers 355-1 and 355-2 are used for data unloading and that second period, 355-1 memory controllers and 355-2 are used for data loading.
  • the first and second periods here have the same duration, the duration of the first period being, like that of the second period, identical for each memory controller.
  • the sequence of operations consists of unloading all the data by crossing the links between the memory controllers and the cores in the transfer phase at a given moment and then loading the new data by crossing the links again between memory controllers and cores in the transfer phase at a given moment.
  • the control of the counting of the page changes within the memories used imposes that two cores should not have access, in the same phase of transfer, to the same banks. This imposes additional constraints on two cores working at the same time for the same application. In practice, this requires that two cores do not access the memory used for an application at the same time.
  • the I / O server shown below, is a special case because, by definition, it accesses all applications. The goal is to place application access to their I / O at different dates on the I / O server.
  • Each core has, permanently, that is to say, locked in cache memory, an instance of a supervision software that aims to sequence all the slices to be executed on the core. For example, it performs, for each slice of execution, the following operations:
  • the determination of the worst-case transfer can be carried out according to two approaches:
  • the cores do not have access to the memory controllers during their execution phase. In other words, cores have no access to addresses not already present in cache memories.
  • the restriction of the execution to the data and instructions loaded in the cache thus has the same effect as a programming of the memory management unit, called MMU (acronym of memory management unit in English terminology), to the granularity of the lines of the cached memories since any access outside the addresses determined by the result of placement would have the effect of triggering an access violation exception.
  • the SoC has a DMA capable of loading in the caches or local memory of each core the data it needs for the next installment.
  • the caches preferably contain either locked data indefinitely, i.e. locked data for the duration of the critical time phase, or locked data for the duration of a slice.
  • the cache closest to the cores, reserved for instructions, is locked with the most critical code elements, for example a library of routines called frequently.
  • the most distant cache memory advantageously contains the application code and the largest tables of constants that have the least usage-to-volume ratio.
  • the slice-dependent data is loaded into the cache memory from a descriptor table itself contained in the memory accessible via a memory controller and loaded into cache memory. It is possible to build tables whose surplus, called overhead in English terminology, does not exceed one percent by volume. At the end of the execution slice, the descriptor table is still used to transmit the modified expected data (flush operation). It must also be ensured that there can not be an edge effect due to the unmodified data kept in the cache memory, for example by globally disabling the cache memories (after backup if necessary in another cache of locked persistent data) .
  • non-LRU cache memory (acronym for Least Recently Used in English terminology) does not guarantee that the data of the old slice will necessarily disappear in favor of the data of the new slice.
  • each slice should preferably satisfy the following conditions: - the execution must not produce an error in the cache memories, that is to say that all the data required by an execution slice must be available cached;
  • the treatments must be reasonably scored and not highly sequential, in order to leave a few degrees of freedom for the placement solution, and the ratio between instructions and data, i.e. the computational density, should preferably be high so that the solution is effective.
  • the ratio between instructions and data i.e. the computational density
  • the cores when the caches are loaded with instructions and data, it must be possible for the cores to execute a large number of instructions before having to return to the bus to update their cache memory. Thus, for example, it is desirable not to use a function requiring large tables of data which would have the effect of blocking a large part of the cache memory for only a few instructions.
  • SCADE SCADE is a brand
  • the scheduling of the boards is free.
  • the placement of the processing in slices is done offline, that is to say before the execution of the slices, by a tool of the chain of software generation.
  • the principle is to use the various methods available for multi-objective optimization under constraints in order to statically solve a placement of instructions and data.
  • the investment out Online processing of slices of execution is essential to find as optimal a solution as possible. It makes it possible to produce an improvement of the WCET, or even the obtaining of the minimum, for the application concerned while benefiting from the improvement of the determinism due to the locality constraints of the data defined previously.
  • the constraint resolution application makes it possible to restrict the mathematical expressions to linear equations in order to solve the system of equations and to optimize a function (operational search).
  • the solution here is preferably restricted to whole solutions.
  • Such a solution called Integer Linear Programming (ILP) or Integer Linear Programming (ILP) in Anglo-Saxon terminology, aims to express a problem by a system of equations and / or linear inequalities with (partially) integer solutions.
  • a resolution of the PLNE type can be done by the simplex method that combinatorial optimization tools can offer, supplemented with heuristics to make the problem computable.
  • the constraint resolution application is requested to choose a slice for each board.
  • the index i varying from 1 to S, denotes here the slice numbers while the index j, varying from 1 to N, denotes the plate numbers also called nodes, that is to say the non-breaking fractions of the application.
  • N the plate numbers also called nodes, that is to say the non-breaking fractions of the application.
  • N the plate numbers also called nodes.
  • slice i. Nj, i is said "decision variable" indicating the decision of placement of the node Nj.
  • Each node Nj is characterized by a large volume of instructions and constants, called L2j, specific to the node j, to be placed in the cache L2 as well as by a volume of variables and constants of small size, called L1j, own at node j, to be placed in the cache memory of data L1 D.
  • L2j large volume of instructions and constants
  • L1j volume of variables and constants of small size
  • Each node Nj is also characterized by a list of variables shared with other nodes and a worst execution time WCETj.
  • the constants of significant size are to be placed in the cache memory L2 so as not to exhaust the capacity of the cache L1 D.
  • the choice of the transition threshold between the cache memories L2 and L1 D is determined by the placement tool.
  • the expression of the size constraints on the cache memories L2 and L1 D is given here as an example and corresponds to an investment on two resources having different characteristics, one, fast for the scarce data, to be reserved to critical data at run time while the other is to be used for less critical instructions and data. This principle can be adapted to other distributions of resources.
  • N is, Vi ⁇ LI j XN j 1 ⁇ MAXLl
  • N is V /, ⁇ Z1 7 x N j1 , + RESVLW ⁇ MAXLW
  • N VU ⁇ WCET j x N j1 , ⁇ MAXWCET
  • cache L1 D is not only used for small constants and variables but also for variables shared between several nodes. The value
  • RESVL1 D represents this space. In a simplified approach of the problem, separating the problem of placement of the nodes from the problem of placement of the variables, it is advised to choose a fixed value leading to a feasible and satisfactory solution. In a solution combining the optimization of the placement of the nodes and the variables, RESVL1 D is chosen as representing exactly the occupation of the variables in cache memory L1 D.
  • Nj When a scheduling constraint exists between two nodes, for example if Nj is to be executed before Nk, the following set of constraints is added (there is one Nk, i for each candidate slice for placement): for all j, k such that j must precede k, for all i> 2, N k ,, + N k ,, + i + ... + N k , s ⁇ N j ,,
  • Nj is placed in the slice i
  • Nk must also be placed in the slice i or in one of the following ones. If there are also constraints prohibiting the separate placement of two nodes (non-breaking nodes), they can then share the same decision variable.
  • nodes can share constants.
  • the sharing of small constants is generally not very dimensioning and does not justify complicating the problem.
  • the small constants can be duplicated, ie find different solutions in each slice, without significant cost, by using locations not used in the distribution of variables in memory. Large constants, usually few, for example trigonometric interpolation tables, nevertheless justify a search for optimization.
  • variable Cc, i is defined as equal to one if the constant Cc is referenced in the slice i. In the opposite case it is equal to zero.
  • a constraint on Cc, i is added as follows, for any slice i, for any node j referencing Cc, Cc, i> Nj, i
  • Cc, i is forced to 1. It should be noted that Cc, i is not really a decision variable, it is a consequence of the decision of placement of nodes Nj.
  • Vv i
  • Nj Nj
  • a block here is a cache line or a group of cache lines.
  • the second constraint evoked by replacing the value RESVL1 D by the allocation of blocks intended for the variables. It is then necessary to minimize the USAGE value (where USE ⁇ MAXL1 D) respecting the following constraints, for all i, LI 1 * N 1 ,, + LI 2 * N 2 ,, + ... + L1 N * N N ,, + BLK_SZ * (H 1 ,, + ... + H B> , - B) ⁇ USAGE where BLK_SZ represents the size of a block.
  • the function minimizing the value USE (USE ⁇ MAXL1 D) is sought within the following constraints: for all I USAGE_W_L1, + BLK_SZ * (W, + ... + W B, ) ⁇ MAX_FLUSH where the value USAGE_W_L1 i comes from the result of placement of the nodes and corresponds to the size of all the data in modifications in the slice i and known before the resolution of the constraints of placement of the variables.
  • Some simplifications can be made to the equations described above. For example, it is possible to calculate only one placement decision for all variables sharing exactly the same list of referenced slices. According to a particular embodiment, it is possible to simplify the problem by cutting the nodes or the variables into several subsets. This choice of preliminary division can be directed by the designer of the software to be placed, for example because he knows that his application is composed of three largely independent subsystems, or by the placement tool according to heuristics, for example in identifying nodes referencing the same variables. Each subproblem is then subject to an independent placement of its nodes and its own variables. A last placement of the shared variables completes the problem resolution. For example, the nodes can be divided into several subsets according to periodicities.
  • the slices are then scheduled at the periodicity of the nodes. It is also possible to split the specification used into relatively independent functional blocks. Other alternatives are possible, including expressing a prior system of constraints to distribute the nodes into a small number of subsystems rather than directly distributing the nodes in a large number of slots.
  • the desired optimum can be degraded by heuristics (choice of simplification) put in place, non-exhaustive methods can be used to solve the problem of combinatorial optimization that represents the problem of placement.
  • optimization methods such as the estimation algorithm of distribution, called estimation of distribution algorithm in English terminology, the methods based on on the principle of evolutionary algorithm (or genetic algorithm), the neural networks or a particle swarm algorithm, called particle swarm optimizer in English terminology, can be used.
  • Combinatorial optimization is a highly researched and evolving subject of research, and many approaches are available, each with their advantages and disadvantages.
  • the idea here is to seek an optimization of placements of nodes then of variables, or even of variables only, the objective functions allowing the iterative search for a better solution being notably the objectives of minimality of data exchange between the slices and the objectives of minimization of the execution time by a very fine localization of the data (minimizing the number of lines of caches that a calculation sequence must load or unload at the level of an L1 cache within an execution slice).
  • the presence of constraints of different natures can lead to consider an optimum search based on several optimization methods.
  • the calculation slots have no access to inputs / outputs, called I / O, physical. They can only access variables that have been cached by the monitoring software.
  • a core or several if necessary, is preferably dedicated to the management of physical I / O.
  • This core hosts an "I / O server” type function as opposed to other cores that can be considered as "computing servers”.
  • the I / O core produces the variables corresponding to the deformed inputs of the module and consumes the variables corresponding to the outputs unformatted module.
  • the heart I / O is a heart producer and consumer of unmarked data.
  • the activities of the I / O server cover access operations to physical registers and bus controllers, for example to Ethernet, PCIe or non-volatile memory controllers, and data verification and data conversion operations. known data structures and types of applications These operations are defined by configuration tables, loaded during the transfer slices, planned by the placement tool, along with the planning of the loadings of the calculation slices.
  • the I / O core has its software and some data residually, and uses its transfer phases to load and unload the values of the actual inputs and outputs as well as the configuration table elements necessary for their processing.
  • the I / O core is preferably the only core having access to bus type PCIe, Ethernet or other. Being the only one, and provided that its accesses do not interfere with the access of computing cores to the memory controllers, the I / O core has the use of these buses full time. On the other hand, being trivialized from the point of view of access to the memory controllers, it has strictly static slots and access ranges, planned at the same time as the planning of the accesses of the computation cores.
  • a memory component must be available so that these DMA transfers can be made without affecting the memory used by the computing cores.
  • This component can be the cache memory, preferably in that of the I / O core, which is used as a target. It can also be another cache or memory area accessible by addressing in the SoC, possibly even an external memory plan addressed by a dedicated memory controller.
  • the activities of the I / O server are divided into execution and transfer slices, strictly synchronous, balanced and planned, like the activities of computing cores (or application cores).
  • the I / O core uses its transfer slots to read the configuration tables, drop the inputs into memory, and retrieve the outputs.
  • the execution slots are dedicated to controlling the bus controllers.
  • the distribution of operations by tranche is carried out by the offline investment tool described above, while respecting the processing capabilities of the I / O core and the bus controllers, in time consistency with the applications.
  • the SoC architecture must provide sufficient segregation of paths for exchanges between the I / O core and the bus controllers during the execution slots to avoid interfering with exchanges between the memory and the cores. calculation in the transfer phase.
  • the physical inputs of the I / O server can be classified into two families:
  • These inputs generally consist of reading one or more registers to receive information;
  • the I / O server For asynchronous entries, the I / O server must have a resident configuration table element in its private cache memories. This element should allow it to correlate the unplanned arrival of the event with a request to access a specific memory area, and then later use a scheduled access date to this area to acquire, if necessary, the elements additional configuration tables and drop reformatted or non-event data.
  • the raw data must be cached between the time of arrival and the opening of the memory access.
  • the arrival of the event is unplanned in the sense that the moment it must arrive is unknown. However, the very existence of the event is scheduled addresses in memory and access opportunities scheduled to memory have been assigned.
  • the execution slices on the compute cores are grouped so that only one application is active at a time on all the cores, it is possible to reserve on the I / O server a slice prologue for the inputs and an epilogue slice for the outputs so that the I / O server can be considered during all this time for the exclusive use of the active application.
  • This alternative according to which all the cores are dedicated to an application for a determined duration, that is to say several slices, requires that the problems of determinism of the memory controllers due to the page changes be solved. It can be, for example, by the use of a sufficiently precise model of the memory controllers applied to the memory transfer lists required by each slice. This alternative also requires that the applications thus distributed have sufficient scheduling freedom to distribute efficiently across all cores in a parallel manner.
  • the mix of applications on different computing cores can be allowed.
  • the slices of the I / O server preceding or following the calculation slices are provided with CPU time resources and static bus access (equivalent to micropartitions). These resources are known to the application placement tool so that they do not exceed their assigned resources.
  • SoC has several Ethernet controllers, it is possible to perform AFDX or Erebus inputs / outputs in software. These implementations must, however, remain compatible with the statistic and deterministic constraints necessary for splitting into calculation slices.
  • Ethernet controllers should not access the core memory used by the compute cores and must work with independent memory and bus resources.
  • Bus-type resources can optionally be shared if there is an "instantaneous" priority management capable of serving requests from the application cores without preemption, or observable delay, in the event of a conflict, with the accesses of the Ethernet controllers or the server of I / O, and without faulting the WCET scans of the I / O server.
  • This approach implies that the accesses of the Ethernet controllers can be transparent vis-à-vis the computing cores.
  • the AFDX transmission and reception operations are preferably adapted to be performed in the IO core, while complying with the following constraints: the IO core must respect the concept of communication slices and treatment slices; - Ethernet controllers must not disturb memory controllers or other cores; and,
  • the cache memories of the IO core being too small to fully store the configuration and the variables related to the AFDX interface, they must be loaded in portions.
  • the packets received by the Ethernet controllers are stored in the memory of the heart 10. They are analyzed as and when they are received and then transferred to other queues.
  • a configuration table residing in the local memory of the I / O server is used to associate the identifiers of the virtual links (or VL, abbreviation of Virtual Link in English terminology), called VLID, received frames to one or more Scheduled memory access windows for the I / O server.
  • IP / UDP addresses Abbreviation of Internet Protocol / User Datagram Protocol in English terminology
  • the configuration table residing in the local memory of the I / O server, whose size is of the order of a few kilos bytes, is used for each Ethernet frame received.
  • the management of redundancy and integrity advantageously uses resources also stored in the local memory of the I / O server.
  • the elements of this table necessary for the processing of the VL identified by the configuration table residing in the local memory of the I / O server, are loaded into the I / O server's memory read slices allowed for this VL and only the pending packets corresponding to these VLs are processed. If the capacity of the local memory of the I / O server allows it, it is preferable for reasons of simplicity and reduced latency to leave these tables in the I / O server.
  • the I / O server's broadcast activities are scheduled by the placement tool used for placement of application processing in the slices and for slot placement on the cores.
  • FIG. 5 schematically illustrates a CPM, the architecture of which is based on a multi-core processor such as that presented in FIG. 3b, adapted to implement the invention in which the AFDX functions are managed in software in the multi-processor -hearts.
  • the CPM 500 includes the multi-core processor 505 having here, in particular, eight cores and two memory controllers. These memory controllers are used as interface between the cores and memories 510-1 and 510-2.
  • the CPM 500 further comprises a memory 515, for example a flash memory, for storing, for example, some of the applications to be executed by the cores of the processor 505.
  • the CPM 500 further comprises a network interface for receiving and transmitting data. , in particular an AFDX interface, as well as the logic necessary for the operation of the CPM.
  • the AFDX function is here performed by the multi-core processor, that is to say, software.

Abstract

The invention particularly relates to a method and device for loading and executing a plurality of instructions in an avionics system including a processor having at least two cores and a memory controller, each of the cores including a private memory. The plurality of instructions is loaded and executed by execution slots such that, during a first execution slot, a first core has access to the memory controller for transmitting (215) at least one piece of data stored in the private memory thereof and for receiving (220) and storing at least one datum and an instruction from the plurality of instructions in the private memory thereof, while the second core does not have access to the memory controller and executes (210) at least one instruction previously stored in the the private memory thereof and such that, during a second execution slot, the roles of the two cores are reversed.

Description

« Procédé et dispositif de chargement et d'exécution d'instructions à cycles déterministes dans un système avionique multi-cœurs ayant un bus dont le temps d'accès est non prédictible » "Method and apparatus for loading and executing deterministic cycle instructions in a multi-core avionic system having a bus whose access time is unpredictable"
La présente invention concerne l'architecture de systèmes de type avionique et plus particulièrement un procédé et un dispositif de chargement et d'exécution d'instructions à cycles déterministes dans un système avionique multi-cœurs ayant un bus dont le temps d'accès est non prédictible.The present invention relates to the architecture of avionic type systems and more particularly to a method and a device for loading and executing deterministic cycle instructions in a multi-core avionic system having a bus whose access time is not predictable.
Les aéronefs modernes comprennent de plus en plus de systèmes électroniques et informatiques pour améliorer leurs performances et assister le pilote ainsi que les membres d'équipage lors de leurs missions. Ainsi, par exemple, les commandes de vol électriques permettent de réduire la complexité mécanique de la transmission des commandes aux actuateurs et donc la masse associée à ces commandes. De même, la présentation d'informations pertinentes permet au pilote d'optimiser les trajectoires de vol et de répondre rapidement à tout incident détecté. De telles informations sont notamment la vitesse, la position, le cap, des données de météorologie et de navigation. L'ensemble de ces systèmes électroniques et informatiques est généralement appelé l'avionique. Pour des raisons notamment de fiabilité, de simplicité et de certification, l'avionique a souvent été répartie de façon fonctionnelle par modules spécifiques, aussi appelé LRU (sigle de Une Replaceable Unit en terminologie anglo-saxonne). Ainsi, par exemple, les commandes de vol sont gérées dans un dispositif particulier tandis que l'alimentation électrique est gérée dans un autre. Une fonction spécifique est ainsi associée à chaque module.Modern aircraft include more and more electronic and computer systems to improve their performance and assist pilots and crew members on their missions. Thus, for example, the electric flight controls reduce the mechanical complexity of the transmission of commands to the actuators and therefore the mass associated with these commands. Similarly, the presentation of relevant information allows the pilot to optimize flight paths and respond quickly to any incident detected. Such information includes speed, position, heading, meteorological and navigation data. All of these electronic and computer systems are generally called avionics. For reasons including reliability, simplicity and certification, avionics has often been functionally distributed by specific modules, also called LRU (abbreviation of A Replaceable Unit in English terminology). Thus, for example, the flight controls are managed in a particular device while the power supply is managed in another. A specific function is thus associated with each module.
Par ailleurs, chaque module supportant une fonction critique est, de préférence, redondant de telle sorte que la défaillance d'un module n'entraîne pas la perte de la fonction associée. L'exploitation d'un aéronef utilisant un module redondant lorsque le module principal est défaillant nécessite une opération de maintenance. Afin d'améliorer les fonctionnalités des aéronefs, réduire le poids des équipements électroniques et faciliter les opérations de maintenance, l'avionique est maintenant de plus en plus intégrée selon une architecture appelée IMA (sigle d'Integrated Modular Avionics en terminologie anglo- saxonne). Selon cette architecture, les fonctionnalités sont décorrélées des systèmes, c'est-à-dire des calculateurs ou des ressources de calcul, dans lesquels elles sont implémentées. Néanmoins, un système de ségrégation permet d'isoler chacune des fonctionnalités de telle sorte que la défaillance d'une fonction n'ait pas d'influence sur une autre. De tels systèmes mettent en œuvre différents modules, en particulier des modules de traitement de données, appelés CPM (sigle de Core Processing Module en terminologie anglo-saxonne), des modules de commutation de données, appelés ASM (sigle d'Avionic Switch Module en terminologie anglo-saxonne), et des modules d'alimentation électrique, aussi appelés PSM (sigle de Power Supply Module en terminologie anglo-saxonne).Furthermore, each module supporting a critical function is preferably redundant so that the failure of a module does not lead to the loss of the associated function. The operation of an aircraft using a redundant module when the main module is faulty requires a maintenance operation. To improve the functionality of aircraft, reduce the weight of electronic equipment and facilitate maintenance operations, avionics is now more and more integrated according to an architecture called IMA (abbreviation of Integrated Modular Avionics). . According to this architecture, the functionalities are decorrelated from the systems, that is to say calculators or computing resources, in which they are implemented. Nevertheless, a segregation system makes it possible to isolate each of the functionalities so that the failure of one function has no influence on another. Such systems implement different modules, in particular data processing modules, called CPM (Acronym for Core Processing Module in English terminology), data switching modules, called ASM (acronym for Avionic Switch Module in English). English terminology), and power supply modules, also called PSM (acronym for Power Supply Module in English terminology).
Les modules de traitements de données comprennent des modules dits « hautes performances » pour les applications générales d'avionique, des modules dits « temps critique » pour les applications d'avionique ayant de forte contraintes de déterminisme temporel et des modules de type serveur pour les applications du monde ouvert, non critiques.The data processing modules include so-called "high performance" modules for general avionics applications, so-called "critical time" modules for avionics applications with strong temporal determinism constraints and server-type modules for the applications. open world applications, not critical.
Un module de traitement de données est généralement composé d'un ou de plusieurs processeurs, aussi appelés CPU (sigle de Central Processing Unit en terminologie anglo-saxonne), associés à un ou plusieurs bancs mémoire de type RAM (sigle de Random Access Memory en terminologie anglo-saxonne) et FLASH.A data processing module is generally composed of one or more processors, also called CPUs (acronym for Central Processing Unit in English terminology), associated with one or more RAM type memory banks (acronym of Random Access Memory in English). Anglo-Saxon terminology) and FLASH.
Les communications entre plusieurs CPU d'un CPM sont, de préférence, assurées à l'aide de liens directs vers une mémoire partagée ou à travers une mémoire d'échange d'une interface de communication, par exemple une interface AFDX (sigle d'Avionic FuII DupleX en terminologie anglo- saxonne).The communications between several CPUs of a CPM are preferably provided by means of direct links to a shared memory or through an exchange memory of a communication interface, for example an AFDX interface (acronym Avionic FuII DupleX in Anglo-Saxon terminology).
Afin de permettre le calcul du WCET (sigle de Worst Case Execution Time en terminologie anglo-saxonne) les modules de traitement de données dits temps critique doivent utiliser des processeurs et des architectures de mémoire permettant leur déterminisme temporel.In order to allow the calculation of the WCET (acronym for Worst Case Execution Time in English terminology) the data processing modules so-called critical time must use processors and memory architectures allowing their temporal determinism.
Pour réaliser un module de traitement de données dit temps critique, appelés CPM TC (sigle de Core Processing Module Time Critical en terminologie anglo-saxonne) dans la suite de la description, un nombre important de processeurs relativement simples peut être utilisé, avec une exécution du code en mémoire RAM statique ou en mémoire de type flash afin de garantir le déterminisme temporel.To realize a so-called critical time data processing module, called CPM TC (Acronym of Core Processing Module Time Critical in English terminology) in the following description, a large number of relatively simple processors can be used, with one execution. code in static RAM memory or flash type memory to ensure temporal determinism.
La figure 1 illustre schématiquement un CPM mettant en œuvre une telle architecture. Comme illustré, le CPM 100 comprend ici quatre processeurs « simple cœur » 105-1 à 105-4 et, associées à chaque processeur, des mémoires de type DDRAM (sigle de Double Data rate Random Access Memory en terminologie anglo-saxonne), génériquement référencées 110, et de type flash, génériquement référencées 115. Par ailleurs, le CPM comprend un ensemble 120 de circuits logiques permettant notamment aux processeurs 105- 1 à 105-4 d'échanger des données avec d'autres composants de l'aéronef via un module d'entrée/sortie 125.Figure 1 schematically illustrates a CPM implementing such an architecture. As illustrated, the CPM 100 here comprises four "single-core" processors 105-1 to 105-4 and, associated with each processor, memory type DDRAM (acronym for Double Data Rate Random Access Memory in English terminology), generically referenced 110, and of flash type, generically referenced 115. Furthermore, the CPM comprises a set 120 of logic circuits allowing in particular the processors 105-1 to 105-4 to exchange data with other components of the aircraft via an input / output module 125.
Cependant, l'utilisation d'un nombre important de processeurs augmente le risque de panne, ou MTBF (sigle de Mean Time Between Failures en terminologie anglo-saxonne), ainsi que le poids et les coûts de développement.However, the use of a large number of processors increases the risk of failure, or MTBF (acronym for Mean Time Between Failures in English terminology), as well as the weight and development costs.
Par ailleurs, en dépit de la puissance de calcul requise dans les CPM TC, des processeurs performants, super scalaires, qui exécutent des instructions de code depuis un banc de mémoire RAM dynamique ne sont pas ou mal utilisés à cause du temps de rafraîchissement de la mémoire, des changements de lignes, colonnes et/ou banques et surtout de la latence plus importante du contrôleur de mémoire. En d'autres termes, les CPM TC ne mettent généralement pas efficacement en œuvre des processeurs basés sur des architectures multi-cœurs utilisant des mémoires caches. En effet, les CPM TC ont besoin d'un déterminisme fort de leur temps d'exécution et leurs mémoires caches créent une variabilité difficilement déterminable due à un effet d'historique selon lequel, en fonction des événements passés, une information peut encore être ou non présente en mémoire cache. Il peut alors être nécessaire de la recharger sans que cela soit déterminé à l'avance. Il en va de même pour les séquences d'instructions de type pipeline des cœurs des processeurs et des contrôleurs de mémoire pour lesquelles les instructions peuvent être réparties sur plusieurs cycles créant ainsi des dépendances historiques.Moreover, despite the computing power required in TC CPMs, high-performance, super scalar processors, which execute code instructions from a dynamic RAM bank, are not or badly used because of the refresh time of the memory, changes of lines, columns and / or banks and especially the higher latency of the memory controller. In other words, TC CPMs do not typically implement processors based on multi-core architectures using cache memories. Indeed, the CPM TC need a strong determinism of their execution time and their hidden memories create a variability which is difficult to determine due to a historical effect according to which, according to the past events, information may still be cached or not. It may then be necessary to recharge it without this being determined in advance. The same is true for the pipelined instruction sequences of processor cores and memory controllers for which the instructions can be spread over several cycles, thus creating historical dependencies.
Par conséquent, pour être déterministes, les CPM TC doivent écarter les mécanismes à l'origine de ces variabilités et utiliser des marges permettant de déterminer à l'avance les temps d'exécution rendant ainsi l'utilisation de processeurs multi-cœurs inefficace.Therefore, to be deterministic, TC CPMs must discard the mechanisms behind these variabilities and use margins to determine runtimes in advance, making the use of multi-core processors inefficient.
L'invention permet de résoudre au moins un des problèmes exposés précédemment. Plus particulièrement, il est possible, selon l'invention, de déterminer à l'avance l'utilisation des mémoires caches de systèmes multi- cœurs de telle sorte que la latence des mémoires ne soit plus un facteur limitant les performances. L'invention permet également, dans une architecture multi- cœurs, multi-processeurs, ou plus généralement à bus processeur partagé, d'obtenir l'indépendance des cœurs de calcul et la détermination de WCET non pessimistes. De plus, l'indépendance vis-à-vis de la latence des mémoires caches autorise la détermination de WCET même si les modèles de mémoire et de contrôleur de mémoire sont imprécis.The invention solves at least one of the problems discussed above. More particularly, it is possible, according to the invention, to determine in advance the use of cache memories of multi-core systems so that the latency of the memories is no longer a factor limiting the performance. The invention also makes it possible, in a multi-core, multi-processor architecture, or more generally a shared processor bus, to obtain the independence of computing cores and the determination of non-pessimistic WCETs. In addition, cache memory latency independence allows the determination of WCET even if the memory and memory controller models are imprecise.
L'invention a ainsi pour objet un procédé de chargement et d'exécution à cycles d'exécution déterministes d'une pluralité d'instructions dans un système avionique comprenant au moins un processeur ayant au moins deux cœurs et au moins un contrôleur de mémoire, chacun desdits au moins deux cœurs disposant d'une mémoire privée, ladite pluralité d'instructions étant chargée et exécutée par tranches d'exécution, le procédé comprenant les étapes suivantes,The subject of the invention is thus a method for loading and executing deterministic execution cycles of a plurality of instructions in an avionic system comprising at least one processor having at least two cores and at least one memory controller, each of said at least two cores having a private memory, said plurality of instructions being loaded and executed in execution slots, the method comprising the following steps,
- durant une première tranche d'exécution, o autorisation d'accès audit au moins un contrôleur de mémoire à un premier desdits au moins deux cœurs, ledit premier cœur transmettant audit au moins un contrôleur de mémoire au moins une donnée mémorisée dans sa mémoire privée, préalablement modifiée, et recevant au moins une donnée et au moins une instruction de ladite pluralité d'instructions, ladite au moins une donnée et ladite au moins une instruction reçues étant mémorisées dans sa mémoire privée ; o interdiction d'accès audit au moins un contrôleur de mémoire à un second desdits au moins deux cœurs, ledit second cœur exécutant au moins une instruction préalablement mémorisée dans sa mémoire privée ; - durant une seconde tranche d'exécution, o interdiction d'accès audit au moins un contrôleur de mémoire audit premier cœur, ledit premier cœur exécutant au moins une instruction préalablement mémorisée dans sa mémoire privée ; et, o autorisation d'accès audit au moins un contrôleur de mémoire audit second cœur, ledit second cœur transmettant audit au moins un contrôleur de mémoire au moins une donnée mémorisée dans sa mémoire privée, préalablement modifiée, et recevant au moins une donnée et au moins une instruction de ladite pluralité d'instructions, ladite au moins une donnée et ladite au moins une instruction reçues étant mémorisées dans sa mémoire privée. Le procédé selon l'invention permet ainsi de mettre en œuvre des technologies basées sur des processeurs multi-cœurs ayant des bus dont le temps d'accès est non prédictible pour des applications ayant de forte contraintes de déterminisme temporel. En particulier, le procédé permet l'utilisation de mémoires de type DDRx fonctionnant en rafale (mode appelé burst en terminologie anglo-saxonne), de cœurs travaillant à des fréquences supérieures à 1 GHz, la mise en œuvre d'architecture massivement parallèle et l'intégration électronique sous forme de composants uniques.during a first execution slice, access authorization to said at least one memory controller to a first of said at least two cores, said first core transmitting to said at least one memory controller at least one data item stored in its private memory previously modified, and receiving at least one datum and at least one instruction of said plurality of instructions, said at least one datum and said at least one received instruction being stored in its private memory; o prohibiting access to said at least one memory controller to a second of said at least two cores, said second core executing at least one instruction previously stored in its private memory; during a second execution slice, prohibiting access to said at least one memory controller at said first core, said first core executing at least one instruction previously stored in its private memory; and, o access authorization to said at least one memory controller to said second core, said second core transmitting to said at least one memory controller at least one piece of data stored in its private memory, previously modified, and receiving at least one piece of data, and least one instruction of said plurality of instructions, said at least one data item and said at least one received instruction being stored in its private memory. The method according to the invention thus makes it possible to implement technologies based on multi-core processors having buses whose access time is unpredictable for applications having high temporal deterministic constraints. In particular, the method allows the use of burst-type memories of the DDRx type (mode called burst in English terminology), cores working at frequencies above 1 GHz, the implementation of massively parallel architecture and the electronic integration as unique components.
Bien que le découpage de l'activité des cœurs en longues phases d'exécution, sans accès à une mémoire partagée et en longues phases d'accès à une mémoire partagée, sans calcul, semble inefficace à première vue, il l'est du fait des applications avioniques envisagées et du découpage des applications. Le temps des phases d'accès mémoire est avantageusement inférieur au temps total passé par un cœur à attendre la complétion de chacun de ces accès pour que le modèle d'exécution soit efficace.Although the division of the activity of the cores into long phases of execution, without access to a shared memory and in long phases of access to a shared memory, without calculation, seems inefficient at first glance, it is in fact envisaged avionics applications and the cutting of applications. The time of the memory access phases is advantageously less than the total time spent by a heart waiting for the completion of each of these accesses for the execution model to be effective.
Un autre avantage significatif est la simplification et la forte réduction de pessimisme des calculs de WCET par analyse statique du fait de la présence en mémoire privée des données utilisées dans les phases de calcul.Another significant advantage is the simplification and strong reduction of pessimism of WCET calculations by static analysis due to the presence in private memory of the data used in the calculation phases.
Un autre avantage concerne les outils d'analyse statique basés sur un modèle du processeur. L'outil n'ayant pas à considérer dans ses analyses les scénarii incluant les accès à la mémoire partagée, le modèle du processeur peut être réduit au seul cœur et à ses mémoires privées.Another advantage is the static analysis tools based on a processor model. Since the tool does not have to consider scenarios including access to shared memory in its analyzes, the processor model can be reduced to the core and its private memories.
Cette approche est également compatible et adaptée aux évolutions des technologies de mémoire qui évoluent vers des débits très élevés, sans réduire les latences en proportion, le but étant ici d'alimenter des mémoires privées de plus en plus importantes et nombreuses. Selon un mode de réalisation particulier, ledit au moins un processeur comprend en outre au moins un second contrôleur de mémoire, le procédé comprenant en outre les étapes suivantes,This approach is also compatible and adapted to the evolutions of memory technologies that evolve towards very high data rates, without reducing the latencies in proportion, the aim here being to feed increasingly large and numerous private memories. According to a particular embodiment, said at least one processor further comprises at least one second memory controller, the method further comprising the following steps,
- durant une première phase de ladite première tranche d'exécution, autorisation d'accès à un premier desdits au moins deux contrôleurs de mémoire audit premier cœur et interdiction d'accès à un second desdits au moins deux contrôleurs de mémoire audit premier cœur ;during a first phase of said first execution slot, authorizing access to a first of said at least two memory controllers at said first core and prohibiting access to a second of said at least two memory controllers at said first core;
- durant une seconde phase de ladite première tranche d'exécution, autorisation d'accès audit second contrôleur de mémoire audit premier cœur et interdiction d'accès audit premier contrôleur de mémoire audit premier cœur ; - durant une première phase de ladite seconde tranche d'exécution, autorisation d'accès audit premier contrôleur de mémoire audit second cœur et interdiction d'accès audit second contrôleur de mémoire audit second cœur ; et,during a second phase of said first execution slot, allowing access to said second memory controller at said first core and prohibiting access to said first memory controller at said first core; during a first phase of said second execution slot, authorizing access to said first memory controller at said second core and prohibiting access to said second memory controller at said second core; and,
- durant une seconde phase de ladite seconde tranche d'exécution, autorisation d'accès audit second contrôleur de mémoire audit second cœur et interdiction d'accès audit premier contrôleur de mémoire audit second cœur.during a second phase of said second execution slot, authorizing access to said second memory controller at said second core and prohibiting access to said first memory controller at said second core.
Le procédé permet ainsi aux cœurs d'accéder à des mémoires partagées pour exécuter des instructions utilisant des données communes. Selon un mode de réalisation particulier, au moins un desdits au moins deux cœurs est dédié à des opérations de transmission et de réception de données vers et depuis une interface de communication réseau pour simplifier la modélisation du processeur. L'invention a également pour objet un procédé de traitement d'une pluralité d'instructions pour permettre le chargement et l'exécution à cycles d'exécution déterministes de ladite pluralité d'instructions selon le procédé décrit précédemment, le procédé de traitement comprenant une étape de découpage de ladite pluralité d'instructions en tranches d'exécution, chaque tranche d'exécution comprenant une séquence de transfert et une séquence d'exécution, ladite séquence de transfert permettant la transmission d'au moins une donnée préalablement mémorisée et la réception et la mémorisation d'au moins une donnée et d'au moins une instruction, ladite au moins une donnée reçue étant nécessaire à l'exécution de ladite au moins une instruction reçue et permettant l'exécution de ladite au moins une instruction reçue, de façon autonome, durant l'exécution de ladite séquence d'exécution.The method thus allows cores to access shared memories to execute instructions using common data. According to a particular embodiment, at least one of said at least two cores is dedicated to data transmission and reception operations to and from a network communication interface to simplify the modeling of the processor. The invention also relates to a method of processing a plurality of instructions for enabling the loading and the execution at deterministic execution cycles of said plurality of instructions according to the method described above, the method of treatment comprising a step of cutting said plurality of instructions into execution slots, each execution slot comprising a transfer sequence and an execution sequence, said transfer sequence allowing the transmission of at least one previously stored data and the reception and storing at least one datum and at least one instruction, said at least one received datum being necessary for the execution of said at least one received instruction and allowing the execution of said at least one received instruction, autonomously, during execution of said execution sequence.
Le procédé de traitement permet ainsi de découper les instructions en tranches d'exécution pour optimiser le procédé de chargement et d'exécution décrit dont l'efficacité dépend de la capacité à déterminer précisément les informations nécessaires d'une prochaine phase d'exécution pour éviter de sous-estimer ou surestimer la quantité d'informations nécessaires ce qui a pour effet de requérir un accès à la mémoire partagée pour l'exécution des instructions ou d'engendrer une phase de chargement plus longue au temps que passerait le cœur à charger chaque donnée. Selon un mode de réalisation particulier, ladite étape de découpage est basée sur la résolution d'un système d'équations linéaires représentant des contraintes d'exécution des instructions de ladite pluralité d'instructions selon au moins une caractéristique dudit au moins un processeur.The processing method thus makes it possible to cut the instructions into execution slices in order to optimize the described loading and execution method whose efficiency depends on the ability to precisely determine the information needed for a next execution phase to avoid to underestimate or overestimate the amount of information needed, which has the effect of requiring access to the shared memory for the execution of the instructions or to generate a longer loading phase at the time that the heart would spend loading each given. According to a particular embodiment, said step of cutting is based on the resolution of a system of linear equations representing constraints of execution of the instructions of said plurality of instructions according to at least one characteristic of said at least one processor.
Le procédé selon l'invention permet ainsi d'optimiser l'organisation des tranches d'exécution et de simplifier leur détermination.The method according to the invention thus makes it possible to optimize the organization of the execution slots and to simplify their determination.
La durée desdites tranches d'exécution est, de préférence, constante et prédéterminée. Cette durée est, par exemple, déterminée par le temps de transmission de données préalablement modifiées et le temps de réception de données et d'instructions à exécuter.The duration of said execution slots is preferably constant and predetermined. This duration is, for example, determined by the time of transmission of previously modified data and the time of receipt of data and instructions to be executed.
L'invention a également pour objet un programme d'ordinateur comprenant des instructions adaptées à la mise en œuvre de chacune des étapes du procédé décrit précédemment lorsque ledit programme est exécuté dans un processeur, un dispositif comprenant des moyens adaptés à la mise en œuvre de chacune des étapes du procédé décrit précédemment ainsi qu'un aéronef comprenant le dispositif selon la revendication précédente. Les avantages procurés par un tel programme d'ordinateur et un tel dispositif sont similaires à ceux évoqués précédemment.The invention also relates to a computer program comprising instructions adapted to the implementation of each of the steps of the method described above when said program is executed in a processor, a device comprising means adapted to the implementation of each of the steps of the method described above and an aircraft comprising the device according to the preceding claim. The advantages provided by such a computer program and such a device are similar to those mentioned above.
D'autres avantages, buts et caractéristiques de la présente invention ressortent de la description détaillée qui suit, faite à titre d'exemple non limitatif, au regard des dessins annexés dans lesquels :Other advantages, aims and features of the present invention will emerge from the detailed description which follows, given by way of non-limiting example, with reference to the accompanying drawings in which:
- la figure 1 représente schématiquement un module de traitement de données comprenant plusieurs processeurs simple cœur ;- Figure 1 schematically shows a data processing module comprising several single-core processors;
- la figure 2, comprenant les figures 2a à 2d, illustre schématiquement un diagramme de temps illustrant les activités d'un processeur comprenant huit cœurs, mis en œuvre conformément à l'invention ;FIG. 2, comprising FIGS. 2a to 2d, schematically illustrates a time diagram illustrating the activities of a processor comprising eight cores, implemented in accordance with the invention;
- la figure 3, comprenant les figures 3a et 3b, illustre un exemple d'architecture multi-cœurs adaptée à mettre en œuvre l'invention ;FIG. 3, comprising FIGS. 3a and 3b, illustrates an exemplary multi-core architecture adapted to implement the invention;
- la figure 4, comprenant les figures 4a à 4d, illustre un exemple de mécanisme d'accès, par chaque cœur en phase de transfert d'un processeur multi-cœurs, aux contrôleurs de mémoire de ce processeur ; et,FIG. 4, comprising FIGS. 4a to 4d, illustrates an exemplary access mechanism, by each heart in the transfer phase of a multi-core processor, to the memory controllers of this processor; and,
- la figure 5 illustre schématiquement un module d'un système avionique, dont l'architecture est fondée sur un processeur multi-cœurs tel que celui présenté sur la figure 3b, adapté à mettre en œuvre l'invention.- Figure 5 schematically illustrates a module of an avionics system, whose architecture is based on a multi-core processor such as that shown in Figure 3b, adapted to implement the invention.
Les processeurs multi-cœurs de dernière génération, aussi appelés SoC multicores (sigle de System on Chip en terminologie anglo-saxonne), offrent un fort potentiel de puissance de calcul. Cependant, dans le contexte des applications temps réel critique, ce potentiel est difficilement exploitable, notamment pour des raisons de déterminisme et de preuve ou test relatif à des exigences temporelles. II est rappelé ici que la notion de temps réel implique une maîtrise précise du comportement temporel d'applications exécutées, notamment de leur WCET. Le qualificatif « critique » exige, dans le domaine de l'aéronautique, d'apporter une preuve forte de cette maîtrise. Cette problématique de déterminisme provient en partie de l'exécution d'une ou plusieurs applications en concurrence sur chacun des cœurs qui partagent certaines ressources en nombre insuffisant pour ségréguer physiquement tous les chemins de tous les cœurs, en particulier des bus d'échange de données et des mémoires utilisées. Si ces partages ne sont pas maîtrisés (idéalement des accès maîtrisés sont des accès temporellement exclusifs), ils introduisent des contentions généralement indénombrables. Alternativement, la majoration par une analyse de type pire éventualité, worst- case en terminologie anglo-saxonne, est trop pessimiste et conduit à une sous exploitation extrême du processeur multi-cœurs. Une autre source d'indéterminisme provient de la complexité intrinsèque des SoC dont l'ensemble des composants crée des phénomènes d'historiques rendant prohibitif, en termes de coût de calcul, une analyse de type pire éventualité raisonnablement peu pessimiste. Le manque d'observabilité intra-SoC et l'absence de documentation concernant leur architecture rendent également impossible la création de modèles temporels et fiables adaptés aux analyses WCET.Multi-core processors of the latest generation, also called SoC multicores (acronym for System on Chip in English terminology), offer a high potential computing power. However, in the context of critical real-time applications, this potential is difficult to exploit, especially for reasons of determinism and proof or test relating to temporal requirements. It is recalled here that the notion of real time implies a precise control of the temporal behavior of applications executed, in particular of their WCET. The term "critical" requires, in the field of aeronautics, to provide strong evidence of this control. This issue of determinism comes partly from the execution of one or more competing applications on each of the cores which share certain resources in insufficient number to physically segregate all the paths of all the cores, in particular the data exchange buses. and memories used. If these shares are not controlled (ideally controlled access is temporally exclusive access), they introduce generally uncountable contentions. Alternatively, the increase by a worst-case analysis, worst-case in Anglo-Saxon terminology, is too pessimistic and leads to extreme under-utilization of the multi-core processor. Another source of indeterminacy comes from the intrinsic complexity of SoC whose set of components creates historical phenomena making it prohibitive, in terms of calculation cost, of a worst case scenario that is reasonably pessimistic. The lack of intra-SoC observability and the lack of documentation concerning their architecture also make it impossible to create temporal and reliable models adapted to WCET analyzes.
Le système selon l'invention permet de contourner ces difficultés. Il est tout d'abord rappelé qu'à l'intérieur des SoC, chaque cœur dispose d'une ou plusieurs mémoires caches privées. Typiquement, les cœurs envisagés dans les CPM possèdent trois mémoires caches privées par cœurs : une mémoire cache L1_l (ou L1 I) pour les instructions, une mémoire cache L1_D (ou L1 D) pour les données et une mémoire cache L2 unifiée pour les instructions et les données. S'il est important ici que chaque cœur dispose d'une mémoire cache individuelle et d'instructions pour les charger et les décharger, le nombre de niveaux des mémoires caches importe peu.The system according to the invention makes it possible to circumvent these difficulties. It is first recalled that within the SoC, each heart has one or more private cache memories. Typically, the cores envisaged in the CPMs have three private cache memories per cores: an L1_l (or L1 I) cache memory for the instructions, an L1_D (or L1 D) cache for the data and a unified L2 cache memory for the instructions and the data. While it is important here that each core has an individual cache memory and instructions for loading and unloading them, the number of levels of caches does not matter.
Alternativement, chaque cœur peut accéder à une mémoire locale ayant une adresse sur le réseau cœur (core-network). De façon similaire, l'invention peut être mise en œuvre avec un dispositif interne du SoC, externe aux cœurs, de type DMA SoC (DMA est le sigle de Direct Memory Access en terminologie anglo-saxonne), piloté par les cœurs ou activé à date fixe sur la base d'un calendrier de tâches, ce dispositif se chargeant de transférer les données dans les deux sens entre les mémoires associées aux cœurs, de type RAM, et les mémoires centrales de type DDR.Alternatively, each core can access a local memory having an address on the core network. In the same way, the invention can be implemented with an internal SoC device external to the cores, DMA SoC type (DMA stands for Direct Memory Access in English terminology), controlled by the cores or activated on a fixed date on the This device is responsible for transferring the data in both directions between the memories associated with the cores, of the RAM type, and the central memories of the DDR type.
Tant qu'une application s'exécute uniquement dans ces mémoires caches, il n'y a aucun problème de conflit de ressources dû à l'architecture multi-cœurs. Les problèmes de complexité des SoC sont aussi, dans ce cas, fortement réduits car les modèles nécessaires à la détermination des WCET se limitent aux cœurs et à leurs mémoires caches. Cependant, les mémoires caches n'ont généralement pas une taille suffisante pour mémoriser les applications dans leur intégralité. De plus, les applications exécutées ont besoin, par nature, de recevoir et de transmettre des données à travers des interfaces d'entrée/sortie, appelées I/O (sigle d'Input/Output en terminologie anglo-saxonne).As long as an application runs only in these caches, there is no problem of resource contention due to the multicore architecture. The complexity problems of the SoC are also, in this case, greatly reduced because the models necessary for the determination of the WCET are limited to the hearts and their caches. However, cache memories are generally not large enough to store applications in their entirety. In addition, the applications executed need, by their nature, to receive and transmit data through input / output interfaces, called I / O (acronym for Input / Output in English terminology).
Le principe du système selon l'invention est de créer des phases durant lesquelles les applications s'exécutent exclusivement à l'intérieur de leurs mémoires caches privées, aucune sollicitation externe (accès données ou surveillance) ne venant les affecter.The principle of the system according to the invention is to create phases during which applications run exclusively within their private cache memories, no external request (data access or monitoring) to affect them.
Ce principe apporte les bénéfices suivants :This principle brings the following benefits:
- l'exécution des phases est entièrement indépendante de l'activité des autres cœurs et l'analyse WCET de ces phases peut suivre une démarche traditionnelle mono-cœur ; et, - la détermination des WCET ne nécessite pas d'autre modèle que celui des cœurs et de leurs mémoires caches privées. En particulier, un modèle des bus de données inter-cœurs et du contrôleur de mémoire n'est pas requis.- the execution of the phases is entirely independent of the activity of the other cores and WCET analysis of these phases can follow a traditional single-core approach; and, - the determination of WCET does not require any other model than that of hearts and their private cache memories. In particular, a model of the inter-core data bus and the memory controller is not required.
Il convient cependant de noter que, comme invoqué précédemment, les applications ne peuvent généralement pas être entièrement contenues dans les mémoires caches privées des cœurs. Par ailleurs, un cœur n'est en général pas dédicacé à une application particulière. De plus, ses données ne sont pas locales, une application devant nécessairement consommer et produire des données utilisées par d'autres applications. Par conséquent, il est nécessaire de gérer les accès à une mémoire partagée et/ou des accès à un ou plusieurs réseaux pour charger et décharger des instructions de code et les données applicatives. Cependant, ces accès doivent être planifiés afin qu'ils soient exclusifs (idéalement) entre les cœurs ainsi que dénombrables et distribués de façon à ce que les conditions les pires soient le moins majorant possible en termes de temps de traitement.It should be noted, however, that, as previously invoked, applications can not usually be fully contained in private cache memories of cores. In addition, a heart is usually not dedicated to a particular application. Moreover, its data are not local, an application that must necessarily consume and produce data used by other applications. Therefore, it is necessary to manage access to shared memory and / or access to one or more networks to load and unload code instructions and application data. However, these accesses must be planned so that they are exclusive (ideally) between the cores as well as countable and distributed so that the worst conditions are the least significant possible in terms of processing time.
Une solution pour planifier ces accès consiste notamment à définir des points de rendez-vous entre lesquels un cœur dispose d'un accès a chaque ressource (par exemple un contrôleur de mémoire particulier), exclusif et partagé avec un minimum d'autres cœurs. En dehors de ces plages, le cœur ne peut pas accéder à ces ressources. Il est ainsi nécessaire de distribuer les points de rendez-vous de façon à ce que chaque cœur dispose d'un accès équitable aux ressources. De façon avantageuse, ces points de rendez-vous sont placés de façon statique et régulière.One solution for scheduling these accesses is to define rendezvous points between which a core has access to each resource (for example a particular memory controller), exclusive and shared with a minimum of other cores. Outside these beaches, the heart can not access these resources. It is therefore necessary to distribute the meeting points so that each heart has equitable access to resources. Advantageously, these rendezvous points are placed statically and regularly.
Ainsi, par exemple, pour un processeur disposant de huit cœurs et de deux contrôleurs de mémoire, pour des durées d'exécution et d'accès mémoire équivalentes, quatre cœurs sont autorisés, à tout moment, à accéder à une mémoire via les deux contrôleurs de mémoire, cet accès étant interdit aux quatre autres cœurs. Avantageusement, parmi les quatre cœurs pouvant accéder aux contrôleurs de mémoire, à tout instant, deux et seulement deux accèdent à chaque contrôleur de mémoire. Une durée d'accès mémoire plus courte permet de dédier plus de temps à la phase d'exécution, sans accès mémoire, sans changer la durée totale du cycle mémoire et de l'exécution. Une durée d'accès mémoire plus courte permet de limiter le nombre de cœurs accédant à la mémoire à tout instant.Thus, for example, for a processor having eight cores and two memory controllers, for equivalent execution times and memory access, four cores are allowed, at any time, to access a memory via the two controllers. memory, this access being forbidden to the other four cores. Advantageously, of the four cores that can access the memory controllers, at any moment, two and only two access each memory controller. A shorter memory access time makes it possible to dedicate more time to the execution phase, without memory access, without changing the total duration of the memory cycle and the execution. A shorter memory access time makes it possible to limit the number of cores accessing the memory at any time.
La figure 2, comprenant les figures 2a et 2b, illustre schématiquement un diagramme de temps illustrant les activités d'un processeur comprenant huit cœurs, mis en œuvre conformément à l'invention. Le type d'activité de chacun des cœurs est ici représenté selon l'axe des temps 200. La figure 2b reprend une partie de la figure 2a pour illustrer plus précisément les rôles d'un cœur particulier, ici le second. Les repères 205-i, 205-j et 205-k définissent des instants qui représentent des points de rendez-vous statiques et réguliers où les cœurs changent leur rôle. Ainsi, par exemple, à l'instant 205-i, le premier cœur exécute une série d'instructions préalablement mémorisées dans sa mémoire cache avec les données correspondantes (référence 210). A partir du même instant, le second cœur échange des données avec un contrôleur de mémoire. Dans un premier temps, il transmet des données mémorisées dans sa mémoire cache vers le contrôleur de mémoire (référence 215). Puis, dans un second temps, il reçoit des données et des instructions du contrôleur de mémoire qu'il mémorise dans sa mémoire cache (référence 220). Ainsi, le second cœur se prépare à une phase d'exécution autonome durant laquelle il n'aura pas besoin d'accéder aux contrôleurs de mémoire.Figure 2, including Figures 2a and 2b, schematically illustrates a timing diagram illustrating the activities of a processor comprising eight cores, implemented in accordance with the invention. The type of activity of each of the cores is here represented along the time axis 200. FIG. 2b shows part of FIG. 2a to illustrate more precisely the roles of a particular heart, here the second. The marks 205-i, 205-j and 205-k define moments that represent static and regular rendezvous points where the hearts change their role. Thus, for example, at time 205-i, the first heart executes a series of instructions previously stored in its cache memory with the corresponding data (reference 210). From the same moment, the second heart exchanges data with a memory controller. At first, it transmits data stored in its cache memory to the memory controller (reference 215). Then, in a second step, it receives data and instructions from the memory controller that it stores in its cache memory (reference 220). Thus, the second core prepares for an autonomous execution phase during which it will not need to access the memory controllers.
La période séparant deux instants consécutifs auxquels chaque cœur change de rôle définit une tranche d'exécution notée T. Ensuite, à l'instant 205-j, le premier cœur transmet des données mémorisées dans sa mémoire cache vers le contrôleur de mémoire (référence 225) puis reçoit des données et des instructions du contrôleur de mémoire qu'il mémorise dans sa mémoire cache (référence 230). A partir du même instant 205-j, le second cœur exécute les instructions préalablement mémorisées dans sa mémoire cache avec les données correspondantes (référence 235).The period separating two consecutive instants at which each heart changes its role defines an execution slot denoted T. Then, at time 205-j, the first heart transmits data stored in its cache memory to the memory controller (reference 225 ) and then receives data and instructions from the memory controller which it stores in its cache memory (reference 230). From the same instant 205-j, the second heart executes the instructions previously stored in its cache memory with the corresponding data (reference 235).
A nouveau, à l'instant 205-k, le premier cœur exécute les instructions préalablement reçues tandis que le second cœur transmet et reçoit des données et des instructions.Again, at time 205-k, the first heart executes previously received instructions while the second heart transmits and receives data and instructions.
Un mécanisme similaire est mis en œuvre dans tous les cœurs. Comme indiqué précédemment, le SoC comprenant le processeur dont le fonctionnement est illustré sur la figure 2 comprend également, de préférence, deux contrôleurs de mémoire. Ainsi, les deux paires de cœurs 240 et 245 de l'ensemble 250 accèdent chacune à un contrôleur de mémoire différent de telle sorte qu'au sein de cet ensemble, chaque contrôleur de mémoire n'est accédé, à un instant donné, que par un seul cœur. De façon similaire, les deux paires de cœurs 255 et 260 de l'ensemble 265 accèdent chacune à un contrôleur de mémoire différent de telle sorte qu'au sein de cet ensemble, chaque contrôleur n'est accédé, à un instant donné, que par un seul cœur. Ainsi, à un instant donné, chaque contrôleur de mémoire est accédé par deux cœurs distincts.A similar mechanism is implemented in all hearts. As indicated above, the SoC comprising the processor whose operation is illustrated in FIG. 2 also preferably comprises two memory controllers. Thus, the two pairs of cores 240 and 245 of the set 250 each access a different memory controller so that within this set, each memory controller is accessed, at a given instant, only by one heart. Similarly, the two pairs of cores 255 and 260 of the set 265 each access a different memory controller so that within this together, each controller is accessed, at a given moment, only by one heart. Thus, at a given moment, each memory controller is accessed by two separate cores.
Il convient de remarquer ici que si le SoC dispose de plusieurs contrôleurs de mémoire, l'accès des cœurs à chacun des contrôleurs de mémoire est avantageusement équilibré. Cependant, un seul contrôleur de mémoire peut être utilisé, notamment s'il suffit à servir les besoins de performance du CPM TC. Dans ce cas, l'utilisation d'un seul contrôleur de mémoire permet d'améliorer les coûts de développement ainsi que la fiabilité, la masse et la dissipation thermique du SoC.It should be noted here that if the SoC has several memory controllers, the access of the cores to each of the memory controllers is advantageously balanced. However, only one memory controller can be used, especially if it is sufficient to serve the performance needs of the CPM TC. In this case, the use of a single memory controller makes it possible to improve the development costs as well as the reliability, the mass and the heat dissipation of the SoC.
L'ordonnancement des phases de transfert sur l'ensemble des coeurs est, de préférence, strictement synchrone, équilibré et planifié. L'usage des ressources partagées, notamment des contrôleurs de mémoire, est également, de préférence, strictement synchrone, équilibré et planifié. Ainsi, si le SoC contient deux contrôleurs de mémoire, la moitié des cœurs en phase de transfert accède, à tout instant, à l'un des contrôleurs de mémoire et l'autre moitié à l'autre contrôleur de mémoire. Si nécessaire, à des instants prédéfinis, tout ou partie des cœurs en phase de transfert peut changer de contrôleur de mémoire afin de maintenir l'exact équilibre. Deux stratégies peuvent être mise en œuvre :The scheduling of the transfer phases on all the cores is preferably strictly synchronous, balanced and planned. The use of shared resources, including memory controllers, is also preferably strictly synchronous, balanced and planned. Thus, if the SoC contains two memory controllers, half of the cores in the transfer phase access, at any time, to one of the memory controllers and the other half to the other memory controller. If necessary, at preset times, all or part of the cores in the transfer phase can change memory controller to maintain the correct balance. Two strategies can be implemented:
- dédier un seul contrôleur de mémoire par tranche d'exécution, une tranche d'exécution représentant l'ensemble des instructions exécutées par un cœur entre deux points de rendez-vous consécutifs. Cependant, dans ce cas, la tranche d'exécution ne peut pas participer à des processus de calcul mettant en œuvre des fonctions particulières utilisant l'autre contrôleur de mémoire. Une telle stratégie conduit à la création de domaines de calculs propres à chaque contrôleur de mémoire, avec une problématique de communication entre les contrôleurs de mémoire qui peut s'avérer délicate à gérer, notamment pour les I/O utilisant un cœur particulier ; et, - obliger chaque tranche d'exécution à communiquer de façon équitable avec chaque contrôleur de mémoire. Une telle contrainte d'équilibrage n'est pas difficile à atteindre. Les données sont généralement privées pour chaque tranche d'exécution. En outre, elles peuvent être dupliquées si nécessaire, tout comme les instructions. Par ailleurs, ces données peuvent être placées indifféremment sur l'un ou l'autre contrôleur de mémoire pour équilibrer le partage. Bien que le partage d'un contrôleur de mémoire entre deux cœurs ne soit pas une solution optimale vis-à-vis du cœur, cette solution est néanmoins préférable vis-à-vis du contrôleur de mémoire car un cœur seul ne peut généralement pas maintenir un pipeline de requêtes suffisamment long pour effacer entièrement la latence des mémoires utilisées. En effet, lorsque P cœurs fonctionnent en tandem, dans la mesure où chaque requête d'accès ne dépend pas de la complétion des N requêtes précédentes, N étant la profondeur du pipeline d'accès d'un cœur (c'est-à-dire la capacité de l'entité appelée Load Store Unit (LSU) en terminologie anglo-saxonne), le pipeline formé dans le contrôleur de mémoire a une longueur PxN qui permet d'atteindre l'optimum d'efficacité des mémoires utilisées (souvent considérées comme étant l'un des goulets d'étranglement majeur dans un système multi-cœurs).- dedicate a single memory controller by execution slice, a slice of execution representing all the instructions executed by a heart between two consecutive rendezvous points. However, in this case, the execution slice can not participate in calculation processes implementing particular functions using the other memory controller. Such a strategy leads to the creation of calculation domains specific to each memory controller, with a problem of communication between the memory controllers which can be difficult to manage, especially for I / O using a particular core; and, - require each execution slice to communicate equitably with each memory controller. Such a balancing constraint is not difficult to achieve. Data is usually private for each slice of execution. In addition, they can be duplicated if necessary, just like instructions. Moreover, this data can be placed indifferently on one or the other memory controller to balance the sharing. Although sharing a memory controller between two cores is not an optimal solution to the heart, this solution is nevertheless preferable vis-à-vis the memory controller because a single heart can not usually maintain a query pipeline long enough to completely clear the latency of the used memory. Indeed, when the cores operate in tandem, since each access request does not depend on the completion of the N previous requests, where N is the depth of the access pipeline of a heart (i.e. say the capacity of the entity called Load Store Unit (LSU) in English terminology), the pipeline formed in the memory controller has a length PxN which makes it possible to reach the optimum efficiency of the memories used (often considered as one of the major bottlenecks in a multi-core system).
A titre d'illustration, pour des cœurs disposant d'un pipeline de 5 (LSU), deux cœurs forment un pipeline de 10 requêtes dans le contrôleur de mémoire, soit 80 transferts de données de type burst de 8 données par requête. II suffit ainsi que la latence d'une requête soit inférieure à 40 cycles, en utilisant un taux de transfert double {double data rate) pour ne pas avoir de période d'inactivité dans le pipeline du contrôleur de mémoire.By way of illustration, for cores having a pipeline of 5 (LSU), two cores form a pipeline of 10 requests in the memory controller, ie 80 data transfers of the burst type of 8 data per request. It is thus enough that the latency of a request is less than 40 cycles, by using a double transfer rate {double data rate) so as not to have a period of inactivity in the pipeline of the memory controller.
Concernant la longueur des tranches d'exécution, c'est-à-dire l'espacement de points de rendez-vous consécutifs, les références de temps suivantes peuvent être identifiées,Regarding the length of the execution slots, that is the spacing of consecutive rendezvous points, the following time references can be identified,
- temps le pire pour exécuter les instructions de code chargées en mémoire cache avec ses données associées. Bien que ce temps dépende de la nature de l'application exécutée, il est relativement constant pour des applications avioniques ; et, - temps le pire pour transférer des données modifiées vers les contrôleurs de mémoire à partir des mémoires caches et pour charger, depuis les contrôleurs de mémoire, les instructions, constantes et variables d'une tranche d'exécution dans les mémoires caches. Ce temps dépend du nombre de cœur en concurrence.worst time to execute the cached code instructions with its associated data. Although this time depends on the nature of the application executed, it is relatively constant for avionics applications; and, worst time for transferring modified data to the memory controllers from the cache memories and to load, from the memory controllers, the instructions, constants and variables of a execution slice in caches. This time depends on the number of hearts competing.
Il convient de remarquer ici que des points de rendez-vous rapprochés sont possibles mais augmentent le nombre de tranches d'exécution et la taille du problème de placement des instructions et de données pour le traitement en tranches d'exécution. Cette fragmentation des traitements augmente aussi le volume total des données à charger et à décharger des mémoires caches.It should be noted here that close rendezvous points are possible but increase the number of execution slots and the size of the instruction and data placement problem for processing into execution slices. This fragmentation of processing also increases the total volume of data to be loaded and unloaded caches.
Alors que les figures 2a et 2b illustrent un exemple de placement optimal lorsque la durée de la phase de déchargement/chargement est identique à celle de la phase d'exécution des instructions, de nombreuses autres répartitions sont possibles. A titre d'illustration, les figures 2c et 2d montrent des exemples de placement optimal lorsque la durée de la phase d'exécution des instructions est inférieure à trois fois celle de la phase de déchargement/chargement et supérieure ou égale à trois fois celle de la phase de déchargement/chargement, respectivement, Δ représentant la durée d'une tranche d'exécution.While Figures 2a and 2b illustrate an example of optimal placement when the duration of the unloading / loading phase is identical to that of the execution phase of the instructions, many other distributions are possible. By way of illustration, FIGS. 2c and 2d show examples of optimal placement when the duration of the execution phase of the instructions is less than three times that of the unloading / loading phase and greater than or equal to three times that of the unloading / loading phase, respectively, Δ representing the duration of an execution slice.
La figure 3, comprenant les figures 3a et 3b, illustre un exemple d'architecture multi-cœurs adaptée à mettre en œuvre l'invention. Le système multi-cœurs 300 représenté schématiquement sur la figure 3a comprend ici huit cœurs référencés 305-1 à 305-8 reliés chacun à une mémoire locale à durée d'accès faible, invariante et indépendante de l'historique, c'est-à-dire de l'exécution antérieure de l'unité de calcul à laquelle elle est reliée. Ces mémoires locales portent ici les références 310-1 à 310-8. Elles peuvent être des mémoires caches locales ou des blocs de mémoire statique accessibles par adressage virtuel ou physique depuis les unités de calcul. Chaque mémoire locale est elle-même connectée à une unité de bus, dont les références sont 315-1 à 315-8, connectée à son tour à un bus commun 320 relié à une mémoire partagée 325. Les cœurs forment des unités de calcul arithmétique, logique, flottant ou autre qui exécutent les traitements complexes. Ils n'accèdent qu'à la mémoire locale à laquelle ils sont reliés. La problématique de calcul de WCET des cœurs formant le domaine 330 est décorrélée de la caractéristique multi-cœurs et de la problématique de modélisation de la mémoire externe partagée et du réseau d'interconnexion des cœurs formant le domaine 335. Par ailleurs, les mémoires caches ou blocs de mémoire statique sont maintenus en cohérence et alimentés par un système à plusieurs acteurs plus simple que les cœurs. Notamment, la variabilité due aux entrées, la combinatoire due aux décisions de branchements, toutes les décisions spéculatives que peuvent prendre les unités d'exécution et toute la variabilité due aux incertitudes de synchronisme entre les cœurs sont ignorées du domaine 335. En pratique, du fait de l'absence de variabilité, il peut être considéré qu'une seule mesure suffit à déterminer l'unique temps nécessaire au chargement de chaque tranche. Cette invariabilité n'est cependant obtenue que si les opérations de rafraîchissement de la mémoire sont désactivées et que c'est la périodicité des accès du domaine 335, à chaque page de mémoire, qui assure le maintien de la mémoire partagée.FIG. 3, comprising FIGS. 3a and 3b, illustrates an exemplary multi-core architecture adapted to implement the invention. The multi-core system 300 diagrammatically shown in FIG. 3a here comprises eight cores referenced 305-1 to 305-8, each connected to a local memory with a low, invariant and history-independent access time, ie -describe the previous performance of the computing unit to which it is connected. These local memories here bear references 310-1 to 310-8. They can be local cache memories or blocks of static memory accessible by virtual or physical addressing from the calculation units. Each local memory is itself connected to a bus unit, whose references are 315-1 to 315-8, connected in turn to a common bus 320 connected to a shared memory 325. The cores form arithmetic calculation units. , logical, floating or other that perform complex processing. They only access the local memory to which they are connected. The issue of calculating WCET of the cores forming the domain 330 is decorrelated from the multi-core characteristic and the modeling problem of the shared external memory and the interconnection network of the cores forming the domain 335. Moreover, the cache memories or static memory blocks are maintained coherently and powered by a multi-actor system simpler than the cores. In particular, the variability due to inputs, the combinatorics due to branching decisions, all the speculative decisions that the execution units can take and all the variability due to uncertainties of synchronism between the cores are ignored in the field 335. In practice, Because of the lack of variability, it can be considered that a single measurement is sufficient to determine the unique time required to load each slice. This invariability is, however, obtained only if the memory refresh operations are deactivated and it is the periodicity of the accesses of the domain 335, on each page of memory, which ensures the maintenance of the shared memory.
La problématique WCET du domaine 330 consiste alors seulement à calculer le WCET de programmes arbitrairement complexes, considérés individuellement, pour chacune des tranches de calcul, et indépendamment de la complexité du domaine 335.The WCET problematic of the domain 330 then only consists in calculating the WCET of arbitrarily complex programs, considered individually, for each of the calculation slices, and independently of the complexity of the domain 335.
Cette décomposition en domaines 330 et 335 peut être atteinte sur des processeurs mono ou multi-cœurs classiques pourvus de mémoires caches et de jeux d'instructions adéquats en synchronisant les unités de bus des cœurs et en leur faisant jouer le rôle du système mis en œuvre pour maintenir la cohérence des mémoires 310-1 à 310-8.This decomposition into domains 330 and 335 can be achieved on conventional mono or multicore processors provided with cache memories and appropriate instruction sets by synchronizing the bus units of the cores and by making them play the role of the system implemented. to maintain coherence of memories 310-1 to 310-8.
La figure 3b illustre un exemple d'architecture d'un SoC multi-cœurs adapté à mettre en œuvre l'invention.FIG. 3b illustrates an exemplary architecture of a multi-core SoC adapted to implement the invention.
Le SoC 300' comprend ici les huit cœurs 3O5'-1 à 3O5'-8, génériquement référencés 305, auxquels sont associés des mémoires caches privées génériquement référencées 340, 345 et 350. Par exemple, la mémoire cache L1_l, référencée 340-1 , la mémoire cache L1_D, référencée 345-1 , et la mémoire cache L2, référencée 350-1 , sont associées au cœur 3O5'-1. De façon similaire, la mémoire cache L1_l, référencée 340-8, la mémoire cache L1_D, référencée 345-8, et la mémoire cache L2, référencée 350-8, sont associées au cœur 3O5'-8. Il en est de même pour les autres cœurs.The SoC 300 'here comprises the eight cores 3O5'-1 to 3O5'-8, generically referenced 305, with which are associated private cache memories generically referenced 340, 345 and 350. For example, the cache memory L1_l, referenced 340-1 , the cache L1_D, referenced 345-1, and the cache memory L2, referenced 350-1, are associated with the core 3O5'-1. In a way Similarly, the cache memory L1_1, referenced 340-8, the cache memory L1_D, referenced 345-8, and the cache memory L2, referenced 350-8, are associated with the core 305'-8. It is the same for other hearts.
Chaque système formé d'un cœur et de la mémoire cache privée associée est relié à un bus de données rapide, référencé 320', qui est lui-même relié aux contrôleurs de mémoire 355-1 et 355-2, génériquement référencés 355.Each system consisting of a core and the associated private cache is connected to a fast data bus, referenced 320 ', which is itself connected to memory controllers 355-1 and 355-2, generically referenced 355.
Il convient de remarquer ici que le cœur 3O5'-8 est ici dédié à la gestion des entrées/sorties physiques. A titre d'illustration, les cœurs 3O5'-1 à 3O5'-8 peuvent avoir une fréquence interne de 1 ,6 GHz. Le bus de données reliant les cœurs aux contrôleurs de mémoire peut également utiliser une fréquence de 1 ,6 GHz. Ainsi, si le volume de données échangées entre les contrôleurs de mémoire et les mémoires caches, comprenant les instructions, les données écrites et les données lues, est de 192 Ko, le temps de chargement/déchargement est alors d'environ 25 μs en comptant le partage du canal entre deux cœurs et les contrôleurs de mémoire ainsi qu'au surdébit, appelé overhead en terminologie anglo-saxonne, lié aux descripteurs de configuration de la tranche suivante.It should be noted here that the heart 3O5'-8 is here dedicated to the management of physical inputs / outputs. By way of illustration, the cores 3O5'-1 to 3O5'-8 may have an internal frequency of 1.6 GHz. The data bus connecting the cores to the memory controllers can also use a frequency of 1, 6 GHz. Thus, if the volume of data exchanged between the memory controllers and the cache memories, including the instructions, the written data and the read data, is 192 KB, then the loading / unloading time is about 25 μs in count. the sharing of the channel between two cores and the memory controllers as well as overhead, called overhead in English terminology, linked to the configuration descriptors of the next slice.
Toujours selon cet exemple, le temps d'exécution des instructions, représentant environ deux tiers des données échangées, avec un ratio d'une instruction par trois cycles d'un cœur, à 1 ,6 GHz, est d'environ 54 μs.Still according to this example, the execution time of the instructions, representing about two-thirds of the data exchanged, with a ratio of one instruction per three cycles of a heart, to 1, 6 GHz, is about 54 μs.
Par ailleurs, les applications nécessitant généralement un espace mémoire supérieur à la capacité des mémoires caches propres à chaque cœur, celles-ci doivent être découpées en plusieurs phases. Chaque phase est traitée dans une tranche d'exécution. Les volumes d'instructions et de données impliquées dans chaque tranche doivent être compatible avec la capacité des différentes mémoires caches. Le découpage doit notamment parvenir à un nombre de tranches aussi réduit que possible, avec des tranches réalisant le plus de traitements possible. Ce découpage est, de préférence, réalisé préalablement à son exécution par un atelier de génération logiciel. La figure 4, comprenant les figures 4a à 4d, illustre un exemple de mécanisme d'accès, par chaque cœur en phase de transfert d'un processeur multi-cœurs, aux contrôleurs de mémoire de ce processeur.Moreover, applications generally requiring a memory space greater than the capacity of memory caches specific to each core, they must be divided into several phases. Each phase is processed in an execution slice. The volumes of instructions and data involved in each slice must be compatible with the capacity of the different caches. The cutting must in particular reach as few slices as possible, with slices carrying out as many treatments as possible. This division is preferably performed prior to its execution by a software generation workshop. FIG. 4, comprising FIGS. 4a to 4d, illustrates an example of access mechanism, by each heart in the transfer phase of a multi-core processor, to the memory controllers of this processor.
Comme indiqué précédemment, pour ne pas spécialiser les cœurs sur une partie des applications, il est nécessaire de séparer les phases de chargement et déchargement en lots équilibrés sur chaque contrôleur de mémoire. Ce découpage doit aussi séparer les chargements et les déchargements afin de réduire et de simplifier les combinaisons d'accès obtenues en combinant deux cœurs (combinaisons réduites à tous les cœurs en phase de chargement ou à tous les cœurs en phase de déchargement). Une considération importante de la séparation des chargements et des déchargements est la facilité de construire un modèle du fonctionnement des unités de bus des cœurs, du réseau d'interconnexion des cœurs et des contrôleurs de mémoire. Pour les coeurs eux-mêmes, établir un modèle d'unité de bus entrelaçant de façon quelconque les accès mémoire serait très difficile, construire deux demi modèles, un pour les chargements et un pour les déchargements, apparaît plus facile. Ainsi, si un processeur est complexe, il est néanmoins possible de le « simplifier » en considérant son comportement seulement sur un programme simple, ici une séquence de chargement et une séquence de déchargement non corrélés, c'est-à-dire dont la complétion d'une instruction ne bloque pas les instructions suivantes.As indicated above, in order not to specialize the cores on a part of the applications, it is necessary to separate the loading and unloading phases in balanced batches on each memory controller. This splitting must also separate the loadings and the unloadings in order to reduce and simplify the access combinations obtained by combining two cores (combinations reduced to all the cores during the loading phase or to all the cores in phase of unloading). An important consideration in the separation of loadings and unloads is the ease of constructing a model of the operation of the core bus units, the core interconnect network and the memory controllers. For the hearts themselves, establishing a bus unit model intertwining any memory access would be very difficult, build two half models, one for loading and one for unloading, appears easier. Thus, if a processor is complex, it is nevertheless possible to "simplify" it by considering its behavior only on a simple program, here an uncorrelated loading sequence and an unloading sequence, that is to say, whose completion an instruction does not block the following instructions.
Comme illustré sur la figure 4a, dans un premier temps, une première moitié des cœurs en phase de transfert accède au premier contrôleur et la seconde moitié accède au second contrôleur. Ainsi, les cœurs 3O5'-1 et 3O5'-2 accèdent au contrôleur de mémoire 355-2 tandis que les cœurs 3O5'-3 et 3O5'-4 accèdent au contrôleur de mémoire 355-1 et que les cœurs 3O5'-5 à 3O5'-8 sont en phase d'exécution et ne peuvent accéder aux contrôleurs de mémoire 355-1 et 355-2.As illustrated in FIG. 4a, in a first step, a first half of the cores in the transfer phase accesses the first controller and the second half accesses the second controller. Thus, the cores 3O5'-1 and 3O5'-2 access the memory controller 355-2 while the cores 3O5'-3 and 3O5'-4 access the memory controller 355-1 and the cores 3O5'-5 at 3O5'-8 are in the execution phase and can not access memory controllers 355-1 and 355-2.
Dans un second temps, comme illustré sur la figure 4b, la seconde moitié des cœurs en phase de transfert accède au premier contrôleur et la première moitié accède au second contrôleur. Ainsi, les cœurs 3O5'-1 et 3O5'-2 accèdent au contrôleur de mémoire 355-1 tandis que les cœurs 3O5'-3 et 3O5'-4 accèdent au contrôleur de mémoire 355-2 et que les cœurs 3O5'-5 à 3O5'-8 sont toujours en phase d'exécution et ne peuvent toujours pas accéder aux contrôleurs de mémoire 355-1 et 355-2.In a second step, as illustrated in FIG. 4b, the second half of the cores in the transfer phase accesses the first controller and the first half accesses the second controller. Thus, the cores 3O5'-1 and 3O5'-2 access the memory controller 355-1 while the cores 3O5'-3 and 3O5'-4 access the 355-2 memory controller and the 3O5'-5 to 3O5'-8 cores are still in the execution phase and still can not access the 355-1 and 355-2 memory controllers.
Les premier et second temps illustrés sur les figures 4a et 4b sont répétés de telle sorte que, durant une première période, les contrôleurs de mémoire 355-1 et 355-2 sont utilisés pour le déchargement de données et que, durant une seconde période, les contrôleurs de mémoire 355-1 et 355-2 sont utilisés pour le chargement de données. La première et la seconde période ont ici une durée identique, la durée de la première période étant, comme celle de la seconde, identique pour chaque contrôleur de mémoire.The first and second times illustrated in FIGS. 4a and 4b are repeated so that, during a first period, the memory controllers 355-1 and 355-2 are used for data unloading and that, during a second period, Memory controllers 355-1 and 355-2 are used for data loading. The first and second periods here have the same duration, the duration of the first period being, like that of the second period, identical for each memory controller.
Ainsi, la séquence d'opérations consiste à décharger toutes les données en croisant les liens entre les contrôleurs de mémoire et les cœurs en phase de transfert à un instant donné puis à charger les nouvelles données en croisant à nouveau les liens entre les contrôleurs de mémoire et les cœurs en phase de transfert à un instant donné.Thus, the sequence of operations consists of unloading all the data by crossing the links between the memory controllers and the cores in the transfer phase at a given time and then loading the new data by again crossing the links between the memory controllers. and hearts in the transfer phase at a given moment.
Ensuite, les cœurs changent de rôle. En d'autres termes, les cœurs qui étaient en phase de transfert passent en phase d'exécution tandis que les cœurs qui étaient en phase d'exécution passent en phase de transfert. Ainsi, dans un troisième temps, comme illustré sur la figure 4c, les cœurs 3O5'-5 et 3O5'-6 accèdent au contrôleur de mémoire 355-2 tandis que les cœurs 3O5'-7 et 3O5'-8 accèdent au contrôleur de mémoire 355-1 et que les cœurs 3O5'-1 à 3O5'-4 sont en phase d'exécution et ne peuvent accéder aux contrôleurs de mémoire 3355-1 et 355-2.Then, the hearts change roles. In other words, the cores that were in the transfer phase go into execution phase while the cores that were in the execution phase go into the transfer phase. Thus, in a third step, as illustrated in FIG. 4c, the cores 3O5'-5 and 3O5'-6 access the memory controller 355-2 while the cores 3O5'-7 and 3O5'-8 access the controller of memory 355-1 and that cores 3O5'-1 to 3O5'-4 are in the execution phase and can not access memory controllers 3355-1 and 355-2.
Ensuite, dans un quatrième temps, comme illustré sur la figure 4d, les cœurs 3O5'-5 et 3O5'-6 accèdent au contrôleur de mémoire 355-1 tandis que les cœurs 3O5'-7 et 3O5'-8 accèdent au contrôleur de mémoire 355-2 et que les cœurs 3O5'-1 à 3O5'-4 sont toujours en phase d'exécution et ne peuvent toujours pas accéder aux contrôleurs de mémoire 355-1 et 355-2.Then, in a fourth step, as illustrated in FIG. 4d, the cores 3O5'-5 and 3O5'-6 access the memory controller 355-1 while the cores 3O5'-7 and 3O5'-8 access the controller of 355-2 memory and that the 3O5'-1 to 3O5'-4 cores are still in the execution phase and still can not access memory controllers 355-1 and 355-2.
A nouveau, les troisième et quatrième temps illustrés sur les figures 4c et 4d sont répétés de telle sorte que, durant une première période, les contrôleurs de mémoire 355-1 et 355-2 sont utilisés pour le déchargement de données et que, durant une seconde période, les contrôleurs de mémoire 355-1 et 355-2 sont utilisés pour le chargement de données. La première et la seconde période ont ici une durée identique, la durée de la première période étant, comme celle de la seconde, identique pour chaque contrôleur de mémoire. Ainsi, de façon similaire, la séquence d'opérations consiste à décharger toutes les données en croisant les liens entre les contrôleurs de mémoire et les cœurs en phase de transfert à un instant donné puis à charger les nouvelles données en croisant à nouveau les liens entre les contrôleurs de mémoire et les cœurs en phase de transfert à un instant donné. La maîtrise du dénombrement des changements de page au sein des mémoires utilisées impose que deux cœurs ne devraient pas accéder, dans une même phase de transfert, aux même banques. Cela impose des contraintes supplémentaires à deux cœurs travaillant en même temps pour une même application. En pratique, cela impose que deux cœurs n'accèdent pas en même temps à la mémoire utilisée pour une application. Le serveur d'I/O, présenté ci-dessous, est un cas particulier car, par définition, il accède à toutes les applications. L'objectif est alors de placer les accès des applications à leurs I/O à des dates différentes du serveur d'I/O.Again, the third and fourth times shown in Figs. 4c and 4d are repeated so that during a first period memory controllers 355-1 and 355-2 are used for data unloading and that second period, 355-1 memory controllers and 355-2 are used for data loading. The first and second periods here have the same duration, the duration of the first period being, like that of the second period, identical for each memory controller. Thus, in a similar way, the sequence of operations consists of unloading all the data by crossing the links between the memory controllers and the cores in the transfer phase at a given moment and then loading the new data by crossing the links again between memory controllers and cores in the transfer phase at a given moment. The control of the counting of the page changes within the memories used imposes that two cores should not have access, in the same phase of transfer, to the same banks. This imposes additional constraints on two cores working at the same time for the same application. In practice, this requires that two cores do not access the memory used for an application at the same time. The I / O server, shown below, is a special case because, by definition, it accesses all applications. The goal is to place application access to their I / O at different dates on the I / O server.
Chaque cœur possède, de façon permanente, c'est-à-dire verrouillée en mémoire cache, une instance d'un logiciel de supervision qui a pour objet de séquencer l'ensemble des tranches à exécuter sur le cœur. Par exemple, il réalise, pour chaque tranche d'exécution, les opérations suivantes :Each core has, permanently, that is to say, locked in cache memory, an instance of a supervision software that aims to sequence all the slices to be executed on the core. For example, it performs, for each slice of execution, the following operations:
- lecture dans une table de configuration mémorisée dans une mémoire accédée via un contrôleur de mémoire des informations de blocs à charger dans les mémoires caches et des informations à transmettre ;reading in a configuration table stored in a memory accessed via a memory controller of the block information to be loaded into the cache memories and information to be transmitted;
- chargement des instructions, des constantes et des données dans les mémoires cache ;- loading instructions, constants and data into cache memories;
- exécution du contenu de la tranche ;- execution of the contents of the slice;
- attente de la fin de la tranche d'exécution ; et, - transmission via les contrôleurs de mémoire des données modifiées. La détermination du cas de transfert le pire peut être effectuée selon deux approches :- waiting for the end of the execution slice; and, - transmission via the memory controllers of the modified data. The determination of the worst-case transfer can be carried out according to two approaches:
- par mesure s'il existe peu de configurations temporelles, qu'il est possible de les mesurer et de prédire, pour chaque séquence d'accès, le temps de chaque accès ; et,- by measurement if there are few temporal configurations, it is possible to measure them and to predict, for each access sequence, the time of each access; and,
- par construction d'un modèle du système multi-cœurs restreint aux séquences d'instructions dans le logiciel de supervision. Il est alors possible de connaître à tout instant l'état des cœurs. Cette approche suppose cependant que les informations de conception du SoC pour modéliser le processus de transfert soient connues.- by construction of a model of the multi-core system restricted to the sequences of instructions in the supervision software. It is then possible to know at any moment the state of the hearts. This approach assumes, however, that SoC design information for modeling the transfer process is known.
Il convient de rappeler ici que, conformément à l'invention, les cœurs n'ont pas accès aux contrôleurs de mémoire durant leur phase d'exécution. En d'autres termes, les cœurs n'ont aucun accès aux adresses non déjà présentes en mémoires caches. La restriction de l'exécution aux seules données et instructions chargées en mémoire cache a ainsi le même effet qu'une programmation de l'unité de gestion de la mémoire, appelée MMU (sigle de Memory Management Unit en terminologie anglo-saxonne), à la granularité des lignes des mémoires caches puisque tout accès en dehors des adresses déterminées par le résultat de placement aurait pour effet de déclencher une exception de violation d'accès.It should be recalled here that according to the invention, the cores do not have access to the memory controllers during their execution phase. In other words, cores have no access to addresses not already present in cache memories. The restriction of the execution to the data and instructions loaded in the cache thus has the same effect as a programming of the memory management unit, called MMU (acronym of memory management unit in English terminology), to the granularity of the lines of the cached memories since any access outside the addresses determined by the result of placement would have the effect of triggering an access violation exception.
Si une application est à l'origine d'une erreur dans une mémoire cache, que ce soit par bug, panne ou altération de type SEU (sigle de Single Event Upset en terminologie anglo-saxonne, représentant une altération de l'état d'un bit dans une mémoire ou un registre due au passage d'un rayon cosmique), le coeur est susceptible d'initier un accès aux contrôleurs de mémoires. Cependant, cet accès est dénié et provoque une exception qui est reprise par le logiciel de supervision qui désactive la tranche, le cœur ou l'application à laquelle appartient la tranche. Bien entendu, il est admis ici qu'un tel mécanisme de protection puisse être établi sur le système multi-cœurs. Un SoC explicitement conçu à cet usage offre très simplement cette opportunité.If an application is at the origin of an error in a cache, whether by bug, failure or alteration type SEU (acronym for Single Event Upset in English terminology, representing an alteration of the state of a bit in a memory or a register due to the passage of a cosmic ray), the heart is likely to initiate access to the memory controllers. However, this access is denied and causes an exception that is taken over by the monitoring software that disables the slice, core or application to which the slice belongs. Of course, it is accepted here that such a protection mechanism can be established on the multi-core system. A SoC explicitly designed for this purpose offers this opportunity very simply.
Alternativement, il est possible, au niveau du système d'arbitrage du bus, de dénier les requêtes des cœurs en exécution. Une autre solution consiste à déclencher une interruption sur un accès bus observé par un moyen normalement dédié au débogage. Il est également possible de cartographier, du côté des cœurs, les contrôleurs de mémoire à des adresses différentes pour des cœurs accédant à la mémoire à des instants différents et de cartographier ensuite physiquement les contrôleurs de mémoire sur les adresses attendues par les cœurs ayant à cet instant l'accès à la mémoire. De façon générale, le plus simple est que le SoC dispose d'un DMA capable de charger dans les mémoires caches ou la mémoire locale de chaque cœur les données dont il a besoin pour la prochaine tranche. Les mémoires caches contiennent, de préférence, soit des données verrouillées indéfiniment, c'est-à-dire des données verrouillées durant toute la durée de la phase temps critique, soit des données verrouillées pour la durée d'une tranche. La mémoire cache la plus proche des cœurs, réservée aux instructions, est verrouillée avec les éléments de code les plus critiques, par exemple une bibliothèque de routines appelées fréquemment. La mémoire cache la plus lointaine contient avantageusement le code applicatif et les tables de constantes les plus volumineuses qui présentent le moindre ratio usage sur volume.Alternatively, it is possible, at the level of the arbitration system of the bus, to deny the requests of the hearts in execution. Another solution consists in triggering an interruption on a bus access observed by a means normally dedicated to debugging. It is also possible to map, on the heart side, the memory controllers to different addresses for cores accessing the memory at different times and then to physically map the memory controllers to the addresses expected by the cores having at that time. instant access to memory. In general, the simplest is that the SoC has a DMA capable of loading in the caches or local memory of each core the data it needs for the next installment. The caches preferably contain either locked data indefinitely, i.e. locked data for the duration of the critical time phase, or locked data for the duration of a slice. The cache closest to the cores, reserved for instructions, is locked with the most critical code elements, for example a library of routines called frequently. The most distant cache memory advantageously contains the application code and the largest tables of constants that have the least usage-to-volume ratio.
Les données dépendantes des tranches sont chargées dans la mémoire cache à partir d'une table de descripteurs elle-même contenue dans la mémoire accessible via un contrôleur de mémoire et chargée en mémoire cache. Il est possible de construire des tables dont l'excédent, appelé overhead en terminologie anglo-saxonne, ne dépasse pas un pourcent en volume. En fin de tranche d'exécution, la table de descripteurs sert encore à transmettre les données attendues modifiées (opération de flush). Il faut s'assurer également qu'il ne puisse exister d'effet de bord dû aux données non modifiées restées en mémoire cache, par exemple en invalidant globalement les mémoires caches (après sauvegarde si nécessaire dans une autre mémoire cache des données rémanentes verrouillées). A titre d'illustration, les mémoires caches non LRU (sigle de Least Recently Used en terminologie anglo-saxonne) ne garantissent pas que les données de l'ancienne tranche disparaîtront nécessairement au profit des données de la nouvelle tranche. Un point important pour mettre en œuvre l'invention réside dans le bon découpage des instructions et des données pour permettre la construction de tranches de calcul utilisant au mieux les ressources des cœurs. Ainsi, chaque tranche doit, de préférence, satisfaire les conditions suivantes : - l'exécution ne doit pas produire d'erreur dans les mémoires caches c'est-à-dire que toutes les données requises par une tranche d'exécution doivent être disponibles en mémoire cache ;The slice-dependent data is loaded into the cache memory from a descriptor table itself contained in the memory accessible via a memory controller and loaded into cache memory. It is possible to build tables whose surplus, called overhead in English terminology, does not exceed one percent by volume. At the end of the execution slice, the descriptor table is still used to transmit the modified expected data (flush operation). It must also be ensured that there can not be an edge effect due to the unmodified data kept in the cache memory, for example by globally disabling the cache memories (after backup if necessary in another cache of locked persistent data) . By way of illustration, non-LRU cache memory (acronym for Least Recently Used in English terminology) does not guarantee that the data of the old slice will necessarily disappear in favor of the data of the new slice. An important point to implement the invention lies in the proper division of instructions and data to allow the construction of calculation slices that best utilize the resources of the cores. Thus, each slice should preferably satisfy the following conditions: - the execution must not produce an error in the cache memories, that is to say that all the data required by an execution slice must be available cached;
- les volumes d'instructions et de données doivent respecter les tailles des mémoires caches ; - le temps d'exécution le pire, ou WCET, doit être inférieur à la durée des tranches d'exécution ; et,- the instruction and data volumes must respect the sizes of the caches; - the worst execution time, or WCET, must be less than the duration of the execution slots; and,
- l'exécution doit respecter les contraintes d'ordonnancement.- the execution must respect the scheduling constraints.
De plus, les traitements doivent être raisonnablement sécables et non fortement séquentiels, afin de laisser quelques degrés de liberté à la solution de placement, et le ratio entre instructions et données, c'est-à-dire la densité de calcul, doit de préférence être élevé afin que la solution soit efficace. En d'autres termes, lorsque les mémoires caches sont chargées en instructions et en données, il doit être possible aux cœurs d'exécuter un grand nombre d'instructions avant de devoir revenir sur le bus pour mettre à jour leur mémoire cache. Ainsi, par exemple, il est souhaitable de ne pas utiliser de fonction nécessitant de grandes tables de données ce qui aurait pour effet de bloquer une grande partie de la mémoire cache pour seulement quelques instructions.In addition, the treatments must be reasonably scored and not highly sequential, in order to leave a few degrees of freedom for the placement solution, and the ratio between instructions and data, i.e. the computational density, should preferably be high so that the solution is effective. In other words, when the caches are loaded with instructions and data, it must be possible for the cores to execute a large number of instructions before having to return to the bus to update their cache memory. Thus, for example, it is desirable not to use a function requiring large tables of data which would have the effect of blocking a large part of the cache memory for only a few instructions.
Cependant, de nombreuses applications avioniques telles que les applications de commande de vol électrique sont écrites sous forme de planches, par exemple de planches SCADE (SCADE est une marque), qui possèdent de telles propriétés. De plus, à l'exception de certaines contraintes temporelles, l'ordonnancement des planches est libre.However, many avionics applications such as electrical flight control applications are written in the form of boards, for example SCADE boards (SCADE is a brand), which have such properties. Moreover, with the exception of certain temporal constraints, the scheduling of the boards is free.
Le placement des traitements en tranches est réalisé hors ligne, c'est-à-dire avant l'exécution des tranches, par un outil de la chaîne de génération logicielle. Le principe est de recourir aux différentes méthodes disponibles d'optimisation multi-objectifs sous contraintes afin de résoudre de manière statique un placement d'instructions et de données. Le placement hors ligne des traitements en tranches d'exécution est essentiel pour trouver une solution aussi optimale que possible. Il permet de produire une amélioration du WCET, voire l'obtention du minimum, pour l'application concernée tout en bénéficiant de l'amélioration du déterminisme due aux contraintes de localité des données définies précédemment.The placement of the processing in slices is done offline, that is to say before the execution of the slices, by a tool of the chain of software generation. The principle is to use the various methods available for multi-objective optimization under constraints in order to statically solve a placement of instructions and data. The investment out Online processing of slices of execution is essential to find as optimal a solution as possible. It makes it possible to produce an improvement of the WCET, or even the obtaining of the minimum, for the application concerned while benefiting from the improvement of the determinism due to the locality constraints of the data defined previously.
Avantageusement, l'application de résolution de contraintes permet de restreindre les expressions mathématiques à des équations linéaires afin de résoudre le système d'équations et optimiser une fonction (recherche opérationnelle). La solution est ici, de préférence, restreinte aux solutions entières. Une telle solution, appelée programmation linéaire en nombres entiers (PLNE) ou Integer Linear Programming (ILP) en terminologie anglo-saxonne, vise à exprimer un problème par système d'équations et/ou d'inéquations linéaires à solutions (partiellement) entières.Advantageously, the constraint resolution application makes it possible to restrict the mathematical expressions to linear equations in order to solve the system of equations and to optimize a function (operational search). The solution here is preferably restricted to whole solutions. Such a solution, called Integer Linear Programming (ILP) or Integer Linear Programming (ILP) in Anglo-Saxon terminology, aims to express a problem by a system of equations and / or linear inequalities with (partially) integer solutions.
Une résolution de type PLNE peut se faire par la méthode du simplexe que peuvent proposer des outils d'optimisation combinatoire, complétée d'heuristiques pour rendre le problème calculable.A resolution of the PLNE type can be done by the simplex method that combinatorial optimization tools can offer, supplemented with heuristics to make the problem computable.
Pour faciliter le travail de l'application de résolution de contraintes, il est préférable de simplifier le problème ou de le découper en plusieurs sous- problèmes plus simples. Selon un mode de réalisation particulier, il est demandé à l'application de résolution de contrainte de choisir une tranche pour chaque planche. L'indice i, variant de 1 à S, désigne ici les numéros de tranches tandis que l'indice j, variant de 1 à N, désigne les numéros de planches aussi appelées nœuds, c'est à dire les fractions insécables de l'application. II est défini une variable booléenne N désignant l'état d'un nœud tel que Nj, i = 1 si le noeud j est placé dans la tranche i et que Nj, i = 0 si le noeud j n'est pas placé dans la tranche i. Nj, i est dit "variable de décision" indiquant la décision de placement du noeud Nj.To make the constraint resolution application easier, it is best to simplify the problem or split it into more simple subproblems. According to a particular embodiment, the constraint resolution application is requested to choose a slice for each board. The index i, varying from 1 to S, denotes here the slice numbers while the index j, varying from 1 to N, denotes the plate numbers also called nodes, that is to say the non-breaking fractions of the application. There is defined a Boolean variable N designating the state of a node such that Nj, i = 1 if the node j is placed in the slice i and Nj, i = 0 if the node j is not placed in the node. slice i. Nj, i is said "decision variable" indicating the decision of placement of the node Nj.
Chaque noeud Nj est caractérisé par un volume d'instructions et de constantes de taille importante, appelé L2j, propres au nœud j, à placer en mémoire cache L2 ainsi que par un volume de variables et de constantes de petite taille, appelé L1j, propres au nœud j, à placer en la mémoire cache de données L1 D. Chaque nœud Nj est également caractérisé par une liste des variables partagées avec d'autres nœuds et par un pire temps d'exécution WCETj.Each node Nj is characterized by a large volume of instructions and constants, called L2j, specific to the node j, to be placed in the cache L2 as well as by a volume of variables and constants of small size, called L1j, own at node j, to be placed in the cache memory of data L1 D. Each node Nj is also characterized by a list of variables shared with other nodes and a worst execution time WCETj.
Les constantes de taille importante, par exemple des tables d'interpolation, sont à placer dans la mémoire cache L2 afin de ne pas épuiser la capacité de la mémoire cache L1 D. Le choix du seuil de transition entre les mémoires caches L2 et L1 D est déterminé par l'outil de placement. L'expression des contraintes de taille sur les mémoires caches L2 et L1 D est donnée ici à titre d'exemple et correspond à un placement sur deux ressources ayant des caractéristiques différentes, l'une, rapide pour les données peu abondantes, est à réserver aux données critiques au temps d'exécution tandis que l'autre est à utiliser pour les instructions et les données moins critiques. Ce principe peut être adapté à d'autres répartitions des ressources.The constants of significant size, for example interpolation tables, are to be placed in the cache memory L2 so as not to exhaust the capacity of the cache L1 D. The choice of the transition threshold between the cache memories L2 and L1 D is determined by the placement tool. The expression of the size constraints on the cache memories L2 and L1 D is given here as an example and corresponds to an investment on two resources having different characteristics, one, fast for the scarce data, to be reserved to critical data at run time while the other is to be used for less critical instructions and data. This principle can be adapted to other distributions of resources.
Il est alors nécessaire de prendre en considération les contraintes suivantes, exprimées sous forme d'inéquations linéaires,It is then necessary to take into consideration the following constraints, expressed in the form of linear inequalities,
- chaque tranche ne doit pas excéder la capacité MAXL2 de la mémoire cache L2 :- each slot must not exceed the MAXL2 capacity of the L2 cache memory:
=> pour tout i> L2r Ni,, + L22 * N2,, + ... + L2N * NN,, ≤ MAXL2=> for all i > L2r Ni ,, + L2 2 * N 2 ,, + ... + L2 N * N N ,, ≤ MAXL2
N soit, Vi^ LIj X Nj 1 ≤ MAXLlN is, Vi ^ LI j XN j 1 ≤ MAXLl
7=1 - chaque tranche ne doit pas excéder la capacité MAXL1 D de la mémoire cache L1 D : => pour tout i, L1 i * Ni,, + U2 * N2,, + ... + L1 N * NN,, + RESVL1 D < MAXL1 D7 = 1 - each slice must not exceed the capacity MAXL1 D of the cache L1 D: => for all i, L1 i * Ni ,, + U 2 * N 2 ,, + ... + L1 N * N N ,, + RESVL1 D <MAXL1 D
N soit V/,∑Z17 x Nj1, + RESVLW ≤ MAXLWN is V /, ΣZ1 7 x N j1 , + RESVLW ≤ MAXLW
7=17 = 1
- chaque tranche ne doit pas excéder un temps maximum d'exécution MAXWCET :- each slice must not exceed a MAXWCET maximum execution time:
=> pour tout i, WCETi * Nυ + WCET2 * N2,, + ... + WCETN * NN,, < MAXWCET=> for all i, WCETi * N υ + WCET 2 * N 2 ,, + ... + WCET N * N N ,, MAXWCET
N soit VU∑WCETj x Nj1, ≤ MAXWCETN is VUΣWCET j x N j1 , ≤ MAXWCET
7=17 = 1
II est également nécessaire de forcer la solution de placement à inclure une et une seule fois chaque nœud dans chaque tranche, => pour tout j, Nj, 1 + Nj,2 + ... + Nj,s = 1It is also necessary to force the placement solution to include once and once each node in each slice, => for all j, N j , 1 + N j , 2 + ... + N j , s = 1
soit, YAJX1 = Ieither, YAJX 1 = I
II convient de noter ici que la mémoire cache L1 D n'est pas seulement utilisée pour les constantes de petite taille et les variables mais également pour les variables partagées entre plusieurs nœuds. La valeurIt should be noted here that the cache L1 D is not only used for small constants and variables but also for variables shared between several nodes. The value
RESVL1 D représente cet espace. Dans une approche simplifiée du problème, séparant le problème de placement des noeuds du problème de placement des variables, il est conseillé de choisir une valeur fixe aboutissant à une solution réalisable et satisfaisante. Dans une solution combinant l'optimisation du placement des noeuds et des variables, RESVL1 D est choisi comme représentant exactement l'occupation des variables en mémoire cache L1 D.RESVL1 D represents this space. In a simplified approach of the problem, separating the problem of placement of the nodes from the problem of placement of the variables, it is advised to choose a fixed value leading to a feasible and satisfactory solution. In a solution combining the optimization of the placement of the nodes and the variables, RESVL1 D is chosen as representing exactly the occupation of the variables in cache memory L1 D.
Lorsqu'une contrainte d'ordonnancement existe entre deux noeuds, par exemple si Nj doit être exécuté avant Nk, la série de contraintes suivante est ajoutée (il existe un Nk,i pour chaque tranche candidate au placement) : pour tout j, k tel que j doit précéder k, pour tout i > 2, Nk,, + Nk,,+i + ...+ Nk,s ≥ Nj,,When a scheduling constraint exists between two nodes, for example if Nj is to be executed before Nk, the following set of constraints is added (there is one Nk, i for each candidate slice for placement): for all j, k such that j must precede k, for all i> 2, N k ,, + N k ,, + i + ... + N k , s ≥ N j ,,
soit J>w ≥ #„ l=ιlet J> w ≥ # "l = ι
Ainsi, si Nj est placé dans la tranche i, alors Nk doit aussi être placé dans la tranche i ou dans l'une des suivantes. S'il existe par ailleurs des contraintes interdisant le placement séparé de deux nœuds (noeuds insécables), ils peuvent alors partager la même variable de décision.Thus, if Nj is placed in the slice i, then Nk must also be placed in the slice i or in one of the following ones. If there are also constraints prohibiting the separate placement of two nodes (non-breaking nodes), they can then share the same decision variable.
Par ailleurs, en plus de partager des variables, les noeuds peuvent partager des constantes. Dans une représentation exhaustive du problème, il est possible d'exprimer de façon précise les décisions de placement de ces constantes. Cependant, le partage des constantes de petite taille n'est en général pas très dimensionnant et ne justifie pas de complexifier le problème. Les constantes de petite taille peuvent être dupliquées, c'est-à-dire trouver des solutions différentes dans chaque tranche, sans coût significatif, en utilisant des emplacements non utilisés dans la répartition des variables en mémoire. Les constantes de taille importante, généralement peu nombreuses, par exemple des tables d'interpolation trigonométriques, justifient néanmoins une recherche d'optimisation.In addition to sharing variables, nodes can share constants. In an exhaustive representation of the problem, it is possible to express accurately the investment decisions of these constants. However, the sharing of small constants is generally not very dimensioning and does not justify complicating the problem. The small constants can be duplicated, ie find different solutions in each slice, without significant cost, by using locations not used in the distribution of variables in memory. Large constants, usually few, for example trigonometric interpolation tables, nevertheless justify a search for optimization.
La variable Cc,i est définie comme égale à un si la constante Cc est référencée dans la tranche i. Dans le cas contraire elle est égale à zéro. Une contrainte sur Cc, i est ajoutée de la façon suivante, pour toute tranche i, pour tout noeud j référençant Cc, Cc,i > Nj, iThe variable Cc, i is defined as equal to one if the constant Cc is referenced in the slice i. In the opposite case it is equal to zero. A constraint on Cc, i is added as follows, for any slice i, for any node j referencing Cc, Cc, i> Nj, i
Ainsi, à partir du moment où le nœud j utilisant Cc est placé dans la tranche i, Cc,i est forcé à 1. Il convient de remarquer que Cc,i n'est pas réellement une variable de décision, c'est une conséquence de la décision de placement des nœuds Nj.Thus, from the moment when the node j using Cc is placed in the slice i, Cc, i is forced to 1. It should be noted that Cc, i is not really a decision variable, it is a consequence of the decision of placement of nodes Nj.
Les constantes de taille importante étant, par exemple, placées en mémoire cache L2, la contrainte sur la mémoire cache L2 est reformulée de la façon suivante, pour tout i, L2i * Nυ + L22 * N2,, + ... + L2N * NN,, + ... + sizeof(Cc) * Cc,i + ... < MAXL2The constants of large size being, for example, placed in cache L2, the constraint on the cache L2 is reformulated as follows, for all i, L2i * N υ + L2 2 * N 2 ,, + ... + L2 N * N N ,, + ... + sizeof (Cc) * Cc, i + ... <MAXL2
soit Vι,∑Z2, x NJ>t + ∑sizeof(Cc)x Cc>ι ≤ MAXL2let Vι, ΣZ2, x N J> t + Σsizeof (C c ) x C c> ι ≤ MAXL2
7=1 ' c=l où sizeof(Cc) représente la taille de la constante Cc, C étant le nombre de constantes de taille importante.7 = 1 'c = 1 where sizeof (Cc) represents the size of the constant Cc, where C is the number of large constants.
Le même formalisme peut être appliqué pour toute variable partagée Vv. En d'autres terme, Vv, i = 1 si la variable Vv est référencée dans la tranche i sinon Vv, i = 0.The same formalism can be applied for any shared variable Vv. In other words, Vv, i = 1 if the variable Vv is referenced in the slice i else Vv, i = 0.
Une contrainte est également ajoutée sur Vv, i de la façon suivante, pour toute tranche i, pour tout noeud j référençant Vv, Vv, i > Nj, iA constraint is also added on Vv, i as follows, for any slice i, for any node j referencing Vv, Vv, i> Nj, i
Pour restreindre la complexité globale du placement, il est possible de subdiviser le problème en recherchant d'abord une solution de placement des nœuds présentant des critères de regroupement des références aux variables (et constantes) et en recherchant une solution minimisant la somme des Vv, i sur toutes les variables Vv et toutes les tranches i. Il est ainsi nécessaire de minimiser la relation suivante, II convient de remarquer que cette fonction n'a pas pour objet de minimiser le cas le pire de remplissage des tranches. En pratique, minimiser le nombre de références aux variables consiste au contraire à maximiser l'occupation de certaines tranches. Il peut être souhaitable cependant de conserver une certaine marge dans la mémoire cache dans chaque tranche afin d'accepter des modifications du logiciel à placer sans avoir à relancer l'outil de placement et obtenir éventuellement un placement complètement différent du précédent. Ceci est notamment utile dans une optique de qualification et vérification incrémentale où il n'est alors pas nécessaire de tester à nouveau les parties de logiciel non modifiées.To limit the overall complexity of the placement, it is possible to subdivide the problem by first looking for a solution for placing the nodes with criteria for grouping the references to the variables (and constants) and looking for a solution that minimizes the sum of the Vv, i on all variables Vv and all slices i. It is thus necessary to minimize the following relationship, It should be noted that this function is not intended to minimize the case of the worst filling of the slices. In practice, minimizing the number of references to the variables consists on the contrary in maximizing the occupation of certain slices. It may be desirable, however, to maintain a certain margin in the cache memory in each slot in order to accept changes to the software to be placed without having to restart the investment tool and possibly obtain a completely different investment from the previous one. This is particularly useful in the context of qualification and incremental verification where it is not necessary to test the unmodified software parts again.
Pour le placement des variables, des variables de décision sont définies de la façon suivante : Mv, b = 1 si la variable Vv est placée dans le bloc b sinon Mv,b = 0, b étant un index de bloc variant de 1 à B (un bloc est ici une ligne de mémoire cache ou un groupe de lignes de mémoire cache). Plus les blocs sont grands, plus il est difficile de trouver des placements utilisant efficacement l'espace des blocs. Par contre, la complexité du problème est réduite (moins de variable de décision) et l'efficacité des opérations de mémoire cache améliorée.For the placement of the variables, decision variables are defined in the following way: Mv, b = 1 if the variable Vv is placed in the block b otherwise Mv, b = 0, b being a block index varying from 1 to B (A block here is a cache line or a group of cache lines). The larger the blocks, the more difficult it is to find placements that efficiently use block space. On the other hand, the complexity of the problem is reduced (less decision variable) and the efficiency of the cache operations improved.
Il en résulte les contraintes suivantes, exprimées sous forme d'équations linéaires :This results in the following constraints, expressed as linear equations:
- ne pas allouer de variables dans un bloc au-delà de sa capacité MAXBLOC, => pour tout bloc b, s/zeof(Vi) * Miιb + ... + taille(Vv) * Mv,b + ... ≤ MAXBLOC- do not allocate variables in a block beyond its capacity MAXBLOC, => for any block b, s / zeof (Vi) * Mi ιb + ... + size (V v ) * M v , b +. .. ≤ MAXBLOC
NbVar soit Vb, ∑sizeof(Vv)xMv b ≤ MAXBLOC v=l - allouer chaque variable une et une seule fois,NbVar is Vb, Σsizeof (V v ) xM vb ≤ MAXBLOC v = l - allocate each variable once and only once,
=> pour toute variable Vv, Mv,i + ... + Mv,b + ... = 1=> for any variable Vv, M v , i + ... + M v , b + ... = 1
soit Vv,∑Mv i = l b=\let Vv, ΣM vi = lb = \
Le chargement d'un bloc b dans une tranche i est identifié par contrainte de la façon suivante, pour toute variable Vv référencée par tout nœud Nj, Hb,, > Mv,b + Nj,, OÙ,The loading of a block b into a slice i is constrained as follows, for any variable Vv referenced by any node Nj, Hb ,,> M v , b + N j ,, OR,
Hb, i = 0 implique que la tranche i est vide et que le bloc i est aussi vide (ce qui n'est possible que si des tranches et des blocs ont été définis en excès) ; Hb, i = 1 implique qu'il n'existe aucun noeud Nj placé dans la tranche i et accédant à des variables placées dans le bloc b, et donc que le bloc b est non requis par la tranche i ; etHb, i = 0 implies that the slice i is empty and that the block i is also empty (which is only possible if slices and blocks have been defined in excess); Hb, i = 1 implies that there is no node Nj placed in the slice i and accessing variables placed in the block b, and therefore that the block b is not required by the slice i; and
Hb, i = 2 implique qu'il existe au moins un noeud Nj placé dans la tranche i et accédant à au moins une variable Vv placée dans le bloc b, et donc que le bloc b est requis par la tranche i. Pour une optimisation conjointe du placement des nœuds et des variables, il est alors possible de compléter la seconde contrainte évoquée en remplaçant la valeur RESVL1 D par l'allocation de blocs destinés aux variables. Il est alors nécessaire de minimiser la valeur USAGE (où USAGE < MAXL1 D) en respectant les contraintes suivantes, pour tout i, LI 1 * N1,, + LI2 * N2,, + ...+ L1 N * NN,, + BLK_SZ * (H1,, + ...+ HB>, - B) < USAGE où BLK_SZ représente la taille d'un bloc.Hb, i = 2 implies that there exists at least one node Nj placed in the slice i and accessing at least one variable Vv placed in the block b, and therefore that the block b is required by the slice i. For a joint optimization of the placement of the nodes and the variables, it is then possible to complete the second constraint evoked by replacing the value RESVL1 D by the allocation of blocks intended for the variables. It is then necessary to minimize the USAGE value (where USE <MAXL1 D) respecting the following constraints, for all i, LI 1 * N 1 ,, + LI 2 * N 2 ,, + ... + L1 N * N N ,, + BLK_SZ * (H 1 ,, + ... + H B> , - B) <USAGE where BLK_SZ represents the size of a block.
Minimiser la valeur USAGE a pour effet de rechercher le placement des variables minimisant le cas le pire de remplissage de la mémoire cache L1 D par tranches. Naturellement, un placement sur une zone mémoire monolithique d'instructions et de données conduirait à des formules différentes et un placement sur une hiérarchie mémoire à plus de niveaux aurait été différent encore sans pour autant invalider les principes cités ici.Minimizing the value USAGE has the effect of seeking the placement of the variables minimizing the worst-case filling of the L1 D cache by slices. Naturally, a placement on a monolithic memory area of instructions and data would lead to different formulas and a placement on a memory hierarchy at more levels would have been different yet without invalidating the principles mentioned here.
Pour formuler l'optimisation du placement des variables après le placement des nœuds, c'est-à-dire faire les placements en deux étapes, d'abord les nœuds en optimisant les références aux variables, mais sans optimiser le placement des variables en ligne de mémoires caches, puis le placement des variables en bénéficiant du résultat des nœuds, il est possible de reformuler plus simplement les contraintes selon les règles suivantes, - les variables dont toutes les références ont été placées dans une même tranche peuvent être intégrées à l'espace alloué en mémoire cache L1 D pour les variables et les constantes de petite taille propres aux nœuds de la tranche ; et,To formulate the optimization of the placement of the variables after the placement of the nodes, that is to say to make the placements in two stages, first the nodes by optimizing the references to the variables, but without optimizing the placement of the variables in line of hidden memories, then the placement of the variables while benefiting from the result of the nodes, it is possible to reformulate more simply the constraints according to the following rules, - the variables of which all the references were placed in the same slice can be integrated with the space allocated in cache L1 D for variables and small constants specific to the nodes of the slice; and,
- pour les variables Vv partagées par les tranches i, pour chaque bloc b, la contrainte suivante est définie, Hb, i > Mv,b avec Hb, i = 1 s'il existe au moins une variable Vv référencée pour la tranche i et placée dans le bloc b.for the variables Vv shared by the slices i, for each block b, the following constraint is defined, Hb, i> Mv, b with Hb, i = 1 if there exists at least one variable Vv referenced for the slice i and placed in the block b.
Il est alors nécessaire de rechercher la fonction minimisant USAGE (USAGE < MAXL1 D) en respectant les contraintes suivantes, pour tout i, USAGE_L1 i + BLK_SZ * (H1 ,i +...+ HB,i) < USAGE où USAGE_L1 i est issu du résultat de placement des nœuds, c'est-à-dire,It is then necessary to look for the function that minimizes USE (USE <MAXL1 D) by respecting the following constraints, for all i, USAGE_L1 i + BLK_SZ * (H1, i + ... + HB, i) <USAGE where USAGE_L1 i is derived from the placement result of the nodes, i.e.,
USAGE_L1 i = L1 i * Nυ + LI2 * N2,, +...+ L1 N * NN,, + s/zeof(variables partagées uniquement dans i)USAGE_L1 i = L1 i * N υ + LI 2 * N 2 ,, + ... + L1 N * N N ,, + s / zeof (shared variables only in i)
Les variables et les constantes de petite taille propres aux nœuds peuvent êtres séparées sans difficulté en blocs modifiés et en blocs non modifiés afin de minimiser le nombre de déchargement (flush) en fin de tranche. Pour optimiser le placement des variables partagées et garantir que la solution respecte la borne maximum du nombre de déchargement (flush), il est nécessaire d'ajouter des contraintes supplémentaires. Ainsi, pour toute variable Vv référencée en écriture par i, pour tout bloc b, WbJ > Mv,bThe node-specific variables and small constants can be easily separated into modified blocks and unmodified blocks to minimize the number of flushes at the end of the slice. To optimize the placement of the shared variables and ensure that the solution meets the maximum limit of the number of unloading (flush), it is necessary to add additional constraints. Thus, for any variable Vv referenced in writing by i, for any block b, WbJ> Mv, b
De plus, pour toute tranche i, la fonction minimisant la valeur USAGE (USAGE < MAXL1 D) est recherchée en respectant les contraintes suivantes : pour tout I, USAGE_W_L1 , + BLK_SZ * (Wi,, +...+ WB,,) < MAX_FLUSH où la valeur USAGE_W_L1 i est issue du résultat de placement des nœuds et correspond à la taille de toutes les données en modifications dans la tranche i et connues avant la résolution des contraintes de placement des variables.In addition, for any portion i, the function minimizing the value USE (USE <MAXL1 D) is sought within the following constraints: for all I USAGE_W_L1, + BLK_SZ * (W, + ... + W B, ) <MAX_FLUSH where the value USAGE_W_L1 i comes from the result of placement of the nodes and corresponds to the size of all the data in modifications in the slice i and known before the resolution of the constraints of placement of the variables.
Quelques simplifications peuvent être apportées aux équations décrites ci-dessus. Par exemple, il est possible de ne calculer qu'une seule décision de placement pour toutes les variables partageant exactement la même liste de tranches référencées. Selon un mode de réalisation particulier, il est possible de simplifier le problème en découpant les nœuds ou les variables en plusieurs sous- ensembles. Ce choix de découpage préalable peut être orienté par le concepteur du logiciel à placer, par exemple parce qu'il sait que son application est composée de trois sous-systèmes largement indépendants, ou par l'outil de placement suivant des heuristiques, par exemple en identifiant des nœuds référençant les même variables. Chaque sous problème fait alors l'objet d'un placement indépendant de ses nœuds et de ses variables propres. Un dernier placement des variables partagées termine la résolution du problème. Par exemple, les nœuds peuvent être découpés en plusieurs sous- ensembles selon des périodicités. Les tranches sont alors ordonnancées à la périodicité des nœuds. Il est également possible de découper la spécification utilisée en blocs fonctionnels relativement indépendants. D'autres alternatives sont possibles, notamment en exprimant un système préalable de contraintes visant à distribuer les nœuds en un petit nombre de sous-systèmes plutôt que de distribuer directement les nœuds dans un grand nombre de tranches.Some simplifications can be made to the equations described above. For example, it is possible to calculate only one placement decision for all variables sharing exactly the same list of referenced slices. According to a particular embodiment, it is possible to simplify the problem by cutting the nodes or the variables into several subsets. This choice of preliminary division can be directed by the designer of the software to be placed, for example because he knows that his application is composed of three largely independent subsystems, or by the placement tool according to heuristics, for example in identifying nodes referencing the same variables. Each subproblem is then subject to an independent placement of its nodes and its own variables. A last placement of the shared variables completes the problem resolution. For example, the nodes can be divided into several subsets according to periodicities. The slices are then scheduled at the periodicity of the nodes. It is also possible to split the specification used into relatively independent functional blocks. Other alternatives are possible, including expressing a prior system of constraints to distribute the nodes into a small number of subsystems rather than directly distributing the nodes in a large number of slots.
L'optimum recherché pouvant être dégradé par les heuristiques (choix de simplification) mises en places, des méthodes non exhaustives peuvent être employées afin de résoudre le problème d'optimisation combinatoire que représente le problème de placement.The desired optimum can be degraded by heuristics (choice of simplification) put in place, non-exhaustive methods can be used to solve the problem of combinatorial optimization that represents the problem of placement.
Tout en conservant les fonctions objectifs précédemment décrites et les contraintes liées à l'architecture mise en œuvre, des méthodes d'optimisation telles que l'algorithme d'estimation de distribution, appelé estimation of distribution algorithm en terminologie anglo-saxonne, les méthodes basées sur le principe d'algorithme évolutionnaire (ou algorithme génétique), les réseaux de neurones ou bien un algorithme à essaim de particules, appelé particle swarm optimizer en terminologie anglo-saxonne, peuvent être utilisées.While maintaining the objective functions previously described and the constraints related to the architecture implemented, optimization methods such as the estimation algorithm of distribution, called estimation of distribution algorithm in English terminology, the methods based on on the principle of evolutionary algorithm (or genetic algorithm), the neural networks or a particle swarm algorithm, called particle swarm optimizer in English terminology, can be used.
L'optimisation combinatoire étant un sujet de recherche fortement exploré et en constante évolution, de nombreuses approches sont disponibles, offrant chacune leurs avantages et inconvénients. S'agissant d'un algorithme d'estimation de distribution, l'idée est ici de rechercher une optimisation de placements de nœuds puis de variables, ou même de variables uniquement, les fonctions objectifs permettant la recherche itérative d'une meilleure solution étant notamment les objectifs de minimalité d'échanges de données entre les tranches et les objectifs de minimisation du temps d'exécution par une localisation très fine des données (minimiser le nombre de lignes de mémoires caches qu'une séquence de calcul doit charger ou décharger au niveau d'une mémoire cache L1 au sein d'une tranche d'exécution). La présence de contraintes de différentes natures peut conduire à envisager une recherche d'optimum s'appuyant sur plusieurs méthodes d'optimisation.Combinatorial optimization is a highly researched and evolving subject of research, and many approaches are available, each with their advantages and disadvantages. As it is a distribution estimation algorithm, the idea here is to seek an optimization of placements of nodes then of variables, or even of variables only, the objective functions allowing the iterative search for a better solution being notably the objectives of minimality of data exchange between the slices and the objectives of minimization of the execution time by a very fine localization of the data (minimizing the number of lines of caches that a calculation sequence must load or unload at the level of an L1 cache within an execution slice). The presence of constraints of different natures can lead to consider an optimum search based on several optimization methods.
Par exemple, concernant l'application de commande de vol, il est possible de distinguer des objectifs et contraintes visant à améliorer le WCET par une localisation fine des données des contraintes d'ordonnancement et de séquentialité d'ensembles de traitements. Ces dernières présentant plus de difficultés pour un algorithme d'estimation de distribution mais ne concernant pas l'ensemble des traitements, elles peuvent faire l'objet d'un traitement différent. Là encore, l'état de l'art concernant l'optimisation combinatoire permet d'adopter un ensemble de démarches donnant des résultats plus ou moins satisfaisants selon les contraintes de l'application considérée et de l'architecture matérielle envisagée afin d'obtenir le découpage en tranches de calculs recherché.For example, concerning the flight control application, it is possible to distinguish objectives and constraints aiming to improve the WCET by a fine localization of the data of the scheduling and sequential constraints of processing sets. Since the latter are more difficult for a distribution estimation algorithm but do not concern all the treatments, they can be treated differently. Here again, the state of the art concerning combinatorial optimization makes it possible to adopt a set of approaches giving more or less satisfactory results depending on the constraints of the application considered and the material architecture envisaged in order to obtain the slicing calculations sought.
Selon le système de l'invention, les tranches de calcul n'ont aucun accès aux entrées/sorties, appelées I/O, physiques. Elles ne peuvent accéder qu'aux variables ayant été transférées en mémoire cache par le logiciel de supervision. Ainsi, comme illustré sur la figure 3b, un cœur, ou plusieurs si nécessaire, est de préférence dédié à la gestion des I/O physiques. Ce cœur, appelé cœur I/O, héberge une fonction de type « serveur d'I/O » par opposition aux autres cœurs qui peuvent être considérés comme des « serveurs de calcul ». Le cœur I/O produit les variables correspondant aux entrées déformatées du module et consomme les variables correspondant aux sorties non formatées du module. Si la charge de calcul due aux fonctions de formatage du cœur I/O est trop importante, il est envisageable d'attribuer ces formatages aux cœurs de calcul et de laisser uniquement les transferts de données sur les bus externes du SoC au serveur d'I/O. Vu des cœurs de calcul, le cœur I/O est un cœur producteur et consommateur de données banalisées.According to the system of the invention, the calculation slots have no access to inputs / outputs, called I / O, physical. They can only access variables that have been cached by the monitoring software. Thus, as illustrated in FIG. 3b, a core, or several if necessary, is preferably dedicated to the management of physical I / O. This core, called the I / O core, hosts an "I / O server" type function as opposed to other cores that can be considered as "computing servers". The I / O core produces the variables corresponding to the deformed inputs of the module and consumes the variables corresponding to the outputs unformatted module. If the computational load due to the formatting functions of the I / O core is too large, it is conceivable to assign these formattings to the compute cores and to leave only the data transfers on the external buses of the SoC to the I server. / O. Given computing hearts, the heart I / O is a heart producer and consumer of unmarked data.
Les activités du serveur d'I/O couvrent les opérations d'accès aux registres physiques et aux contrôleurs de bus, par exemple à des contrôleurs Ethernet, PCIe ou à une mémoire non volatile, et les opérations de vérification et de conversion de données vers les structures et types de données connues des applications. Ces opérations sont définies par des tables de configuration, chargées durant les tranches de transfert, planifiées par l'outil de placement, en même temps que la planification des chargements des tranches de calcul. Le cœur I/O possède son logiciel et certaines données, de façon résidente, et utilise ses phases de transfert pour charger et décharger les valeurs des entrées et sorties proprement dites ainsi que les éléments de table de configuration nécessaires à leur traitement.The activities of the I / O server cover access operations to physical registers and bus controllers, for example to Ethernet, PCIe or non-volatile memory controllers, and data verification and data conversion operations. known data structures and types of applications These operations are defined by configuration tables, loaded during the transfer slices, planned by the placement tool, along with the planning of the loadings of the calculation slices. The I / O core has its software and some data residually, and uses its transfer phases to load and unload the values of the actual inputs and outputs as well as the configuration table elements necessary for their processing.
Le cœur I/O est, de préférence, le seul cœur ayant accès aux bus de type PCIe, Ethernet ou autre. Etant le seul, et sous réserve que ses accès ne perturbent pas les accès des cœurs de calcul aux contrôleurs de mémoire, le cœur I/O dispose de l'usage de ces bus à temps plein. Par contre, étant banalisé du point de vue des accès aux contrôleurs de mémoire, il dispose de tranches et de plages d'accès strictement statiques, planifiées en même temps que la planification des accès des cœurs de calcul.The I / O core is preferably the only core having access to bus type PCIe, Ethernet or other. Being the only one, and provided that its accesses do not interfere with the access of computing cores to the memory controllers, the I / O core has the use of these buses full time. On the other hand, being trivialized from the point of view of access to the memory controllers, it has strictly static slots and access ranges, planned at the same time as the planning of the accesses of the computation cores.
Par ailleurs, si des contrôleurs de bus doivent effectuer des transferts de données de type DMA, ils doivent pouvoir atteindre des cibles mémoires sans perturber les cœurs de calcul en phase de transfert. Ainsi, selon un mode de réalisation particulier, un composant mémoire doit être disponible afin que ces transferts DMA puisse être réalisés sans affecter la mémoire utilisée par les cœurs de calcul. Ce composant peut être la mémoire cache, de préférence dans celle du cœur I/O, qui est utilisée comme cible. Ce peut être aussi une autre mémoire cache ou zone mémoire accessible par adressage dans le SoC, éventuellement même un plan de mémoire externe adressé par un contrôleur mémoire dédié.Moreover, if bus controllers have to carry out data transfers of the DMA type, they must be able to reach memory targets without disturbing the calculation cores during the transfer phase. Thus, according to a particular embodiment, a memory component must be available so that these DMA transfers can be made without affecting the memory used by the computing cores. This component can be the cache memory, preferably in that of the I / O core, which is used as a target. It can also be another cache or memory area accessible by addressing in the SoC, possibly even an external memory plan addressed by a dedicated memory controller.
Les activités du serveur d'I/O sont découpées en tranches d'exécution et de transfert, strictement synchrones, équilibrées et planifiées, comme les activités des cœurs de calcul (ou cœurs applicatifs). Le cœur I/O utilise ses tranches de transfert pour lire les tables de configuration, déposer les entrées en mémoire et récupérer les sorties. Les tranches d'exécution sont dédiées au pilotage des contrôleurs de bus. La distribution des opérations par tranche est réalisée par l'outil hors ligne de placements décrit précédemment, dans le respect des capacités de traitement du cœur I/O et des contrôleurs de bus, en cohérence de temps avec les applications.The activities of the I / O server are divided into execution and transfer slices, strictly synchronous, balanced and planned, like the activities of computing cores (or application cores). The I / O core uses its transfer slots to read the configuration tables, drop the inputs into memory, and retrieve the outputs. The execution slots are dedicated to controlling the bus controllers. The distribution of operations by tranche is carried out by the offline investment tool described above, while respecting the processing capabilities of the I / O core and the bus controllers, in time consistency with the applications.
A ces fins, l'architecture du SoC doit offrir une ségrégation suffisante de chemins pour les échanges entres le cœur I/O et les contrôleurs de bus durant les tranches d'exécution pour éviter d'interférer avec les échanges entre la mémoire et les cœurs de calcul en phase de transfert.For these purposes, the SoC architecture must provide sufficient segregation of paths for exchanges between the I / O core and the bus controllers during the execution slots to avoid interfering with exchanges between the memory and the cores. calculation in the transfer phase.
Les entrées physiques du serveur d'I/O peuvent être classées en deux familles :The physical inputs of the I / O server can be classified into two families:
- les entrées synchrones des applications qui sont acquises sur l'initiative des applications et qui peuvent être placées à temps dans des tranches du serveur d'I/O. Ces entrées consistent généralement en la lecture d'un ou de plusieurs registres pour recevoir une information ; et,- synchronous entries of applications that are acquired on the initiative of applications and can be placed in time in I / O server slices. These inputs generally consist of reading one or more registers to receive information; and,
- les entrées asynchrones des applications qui sont acquises selon des événements extérieurs, non corrélés avec l'exécution des applications. Leur acquisition ne peut donc être planifiée de façon entièrement déterministe comme les traitements applicatifs ou les entrées synchrones. Ces entrées consistent généralement en trames ou messages reçus sur des bus numériques tel qu'Ethernet.- asynchronous entries of applications that are acquired according to external events, uncorrelated with the execution of the applications. Their acquisition can not be planned in a completely deterministic way, such as application processing or synchronous inputs. These inputs usually consist of frames or messages received on digital buses such as Ethernet.
Seules les sorties synchrones, c'est-à-dire les sorties émises ou générées sur l'initiative des applications, sont ici considérées. Cependant, pour les éventuelles sorties asynchrones, par exemple une sortie d'un dispositif interrogé par le contrôleur d'un bus asynchrone du séquencement des tranches, il est possible de considérer que le dispositif dispose d'une boîte aux lettres conservant les données déposées. La dépose de données en boîte aux lettres est synchrone des tranches tandis que l'émission sur le bus est asynchrone.Only the synchronous outputs, ie the outputs issued or generated on the initiative of the applications, are considered here. However, for the possible asynchronous outputs, for example an output of a device interrogated by the controller of an asynchronous bus of the sequencing of the slices, it is possible to consider that the device has a box with letters keeping the deposited data. The mailbox data submission is synchronous with the slices while the transmission on the bus is asynchronous.
Ainsi, hormis les entrées asynchrones, il est possible d'établir une planification statique, via l'outil hors ligne, pour déterminer les accès aux tables de configuration, aux variables d'entrées/sorties et les activités de pilotage des contrôleurs d'I/O.Thus, apart from the asynchronous entries, it is possible to establish a static planning, via the offline tool, to determine the accesses to the configuration tables, the input / output variables and the control activities of the I controllers. / O.
Pour les entrées asynchrones, le serveur d'I/O doit disposer d'un élément de tables de configuration à résidence dans ses mémoires caches privées. Cet élément doit lui permettre de corréler l'arrivée non planifiée de l'événement avec une requête d'accès à une zone mémoire précise, puis d'utiliser ultérieurement une date planifiée d'accès à cette zone pour acquérir, si nécessaire, les éléments supplémentaires de tables de configuration et déposer les données reformatées ou non correspondant à l'événement. Les données brutes doivent être conservées en mémoire cache entre l'instant d'arrivée et l'ouverture de l'accès mémoire. L'arrivée de l'événement est non planifiée dans le sens où l'instant auquel il doit arriver est inconnu. Cependant, l'existence même de l'événement est planifiée des adresses en mémoire et des opportunités d'accès planifiés à la mémoire lui ont été attribuées. Si les tranches d'exécution sur les cœurs de calcul sont regroupées de façon à ce qu'une seule application soit active à la fois sur l'ensemble des cœurs, il est possible de réserver sur le serveur d'I/O une tranche prologue pour les entrées et une tranche épilogue pour les sorties de façon à ce que le serveur d'I/O puisse être considéré pendant toute cette durée à l'usage exclusif de l'application active. Cette alternative selon laquelle tous les cœurs sont dédiés à une application pendant une durée déterminée, c'est-à-dire plusieurs tranches, nécessite que soient résolu les problèmes de déterminisme des contrôleurs de mémoire dus aux changements de page. Il peut l'être, par exemple, par l'utilisation d'un modèle suffisamment précis des contrôleurs de mémoire appliqué aux listes de transferts mémoire requis par chaque tranche. Cette alternative nécessite également que les applications ainsi distribuées disposent d'une liberté d'ordonnancement suffisante pour pouvoir être distribuées efficacement sur tous les cœurs de façon parallèle.For asynchronous entries, the I / O server must have a resident configuration table element in its private cache memories. This element should allow it to correlate the unplanned arrival of the event with a request to access a specific memory area, and then later use a scheduled access date to this area to acquire, if necessary, the elements additional configuration tables and drop reformatted or non-event data. The raw data must be cached between the time of arrival and the opening of the memory access. The arrival of the event is unplanned in the sense that the moment it must arrive is unknown. However, the very existence of the event is scheduled addresses in memory and access opportunities scheduled to memory have been assigned. If the execution slices on the compute cores are grouped so that only one application is active at a time on all the cores, it is possible to reserve on the I / O server a slice prologue for the inputs and an epilogue slice for the outputs so that the I / O server can be considered during all this time for the exclusive use of the active application. This alternative, according to which all the cores are dedicated to an application for a determined duration, that is to say several slices, requires that the problems of determinism of the memory controllers due to the page changes be solved. It can be, for example, by the use of a sufficiently precise model of the memory controllers applied to the memory transfer lists required by each slice. This alternative also requires that the applications thus distributed have sufficient scheduling freedom to distribute efficiently across all cores in a parallel manner.
Alternativement, la mixité des applications sur les différents cœurs de calcul peut être autorisée. Dans ce cas, les tranches du serveur d'I/O précédant ou suivant les tranches de calcul sont dotées de ressources de temps CPU et d'accès bus statiques (équivalents à des micropartitions). Ces ressources sont connues de l'outil de placement des applications de façon à ce que celles-ci n'excèdent pas leurs ressources attribuées.Alternatively, the mix of applications on different computing cores can be allowed. In this case, the slices of the I / O server preceding or following the calculation slices are provided with CPU time resources and static bus access (equivalent to micropartitions). These resources are known to the application placement tool so that they do not exceed their assigned resources.
Si le SoC dispose de plusieurs contrôleurs Ethernet, il est possible de réaliser des entrées/sorties AFDX ou Erebus de façon logicielle. Ces implémentations doivent cependant rester compatibles avec les contraintes de staticité et de déterminisme nécessaires au découpage en tranches de calcul.If the SoC has several Ethernet controllers, it is possible to perform AFDX or Erebus inputs / outputs in software. These implementations must, however, remain compatible with the statistic and deterministic constraints necessary for splitting into calculation slices.
A ces fins, les contrôleurs Ethernet ne doivent pas accéder à la mémoire centrale utilisée par les cœurs de calcul et doivent travailler avec une mémoire et des ressources bus indépendantes. Les ressources type bus peuvent éventuellement être partagées s'il existe une gestion de priorités « instantanée » capable de servir les requêtes des coeurs applicatifs sans préemption, or retard observable, en cas de conflit, avec les accès des contrôleurs Ethernet ou le serveur d'I/O, et sans mettre en défaut les analyses WCET du serveur d'I/O. Cette approche implique que les accès des contrôleurs Ethernet puissent être transparents vis-à-vis des cœurs de calcul. Pour des raisons de performance, il est aussi souhaitable que les données écrites par les bus externes, par exemple Ethernet ou PCIe, soient transférées dans la mémoire locale du serveur d'I/O. Ce transfert peut être réalisé soit directement par le DMA du contrôleur Ethernet soit par un mécanisme équivalent à celui utilisé pour le pré-chargement des mémoires caches.For these purposes, Ethernet controllers should not access the core memory used by the compute cores and must work with independent memory and bus resources. Bus-type resources can optionally be shared if there is an "instantaneous" priority management capable of serving requests from the application cores without preemption, or observable delay, in the event of a conflict, with the accesses of the Ethernet controllers or the server of I / O, and without faulting the WCET scans of the I / O server. This approach implies that the accesses of the Ethernet controllers can be transparent vis-à-vis the computing cores. For performance reasons, it is also desirable that the data written by the external buses, for example Ethernet or PCIe, be transferred to the local memory of the I / O server. This transfer can be carried out either directly by the DMA of the Ethernet controller or by a mechanism equivalent to that used for the pre-loading of the cache memories.
Les opérations d'émission et de réception AFDX sont de préférence adaptées pour être réalisées dans le cœur IO en respectant les contraintes suivantes : - le cœur IO doit respecter le concept de tranches de communication et de tranches de traitement ; - les contrôleurs Ethernet ne doivent pas perturber les contrôleurs de mémoire ni les autres cœurs ; et,The AFDX transmission and reception operations are preferably adapted to be performed in the IO core, while complying with the following constraints: the IO core must respect the concept of communication slices and treatment slices; - Ethernet controllers must not disturb memory controllers or other cores; and,
- les mémoires caches du cœur IO étant trop petites pour stocker entièrement la configuration et les variables liées à l'interface AFDX, elles doivent être chargées par portions.the cache memories of the IO core being too small to fully store the configuration and the variables related to the AFDX interface, they must be loaded in portions.
Durant la réception de données, les paquets reçus par les contrôleurs Ethernet sont stockés dans la mémoire du cœur 10. Ils sont analysés au fur et à mesure de leur réception puis transférés dans d'autres files d'attente. Une table de configuration résidant dans la mémoire locale du serveur d'I/O est utilisée pour associer les identifiants des liens virtuels (ou VL, sigle de Virtual Link en terminologie anglo-saxonne), appelés VLID, des trames reçues à une ou plusieurs des fenêtres planifiées d'accès à la mémoire pour le serveur d'I/O. Il existe une fenêtre pour déposer la partie applicative de la trame en mémoire et, éventuellement, une ou plusieurs autres fenêtres pour lire les éléments de tables de configuration nécessaires à l'identification et au traitement complet de la trame tels que les adresses IP/UDP (sigle d'Internet Protocol / User Datagram Protocol en terminologie anglo-saxonne) de destination pour l'identification du port de destination, le type et l'adresse de stockage du port en mémoire et les informations de surveillance du réseau. La table de configuration résidant dans la mémoire locale du serveur d'I/O, dont la taille est de l'ordre de quelques kilos octets, est utilisée pour chaque trame Ethernet reçue. La gestion de la redondance et de l'intégrité utilise avantageusement des ressources également conservées dans la mémoire locale du serveur d'I/O. Si la recherche des ports nécessite une table trop grande pour être stockée en mémoire locale, les éléments de cette table, nécessaires au traitement du VL identifié par la table de configuration résidant dans la mémoire locale du serveur d'I/O, sont chargés dans les tranches de lecture mémoire du serveur d'I/O autorisées à ce VL et seuls les paquets en attente correspondant à ces VLs sont traités. Si la capacité de la mémoire locale du serveur d'I/O le permet, il est préférable pour des raisons de simplicité et réduction de latence de laisser à résidence ces tables dans le serveur d'I/O. Les activités d'émission du serveur d'I/O sont planifiées par l'outil de placement utilisé pour le placement des traitements applicatifs dans les tranches et pour le placement des tranches sur les cœurs. Durant l'émission, la configuration associée à un VL est chargée dans la mémoire locale au cycle planifié, ainsi que l'état des ports qui lui sont associés. Si les conditions d'émission sont respectées, l'émission est déclenchée dans le cycle à un instant définit par la configuration. De façon similaire, si la mémoire locale du serveur d'I/O le permet, il est préférable de laisser à résidence les tables de configuration nécessaires aux émissions. La figure 5 illustre schématiquement un CPM, dont l'architecture est fondée sur un processeur multi-cœurs tel que celui présenté sur la figure 3b, adapté à mettre en œuvre l'invention où les fonctions AFDX sont gérées de façon logicielle dans le processeur multi-cœurs.During the reception of data, the packets received by the Ethernet controllers are stored in the memory of the heart 10. They are analyzed as and when they are received and then transferred to other queues. A configuration table residing in the local memory of the I / O server is used to associate the identifiers of the virtual links (or VL, abbreviation of Virtual Link in English terminology), called VLID, received frames to one or more Scheduled memory access windows for the I / O server. There is a window for depositing the application part of the frame in memory and possibly one or more other windows for reading the elements of configuration tables necessary for identification and complete processing of the frame such as IP / UDP addresses (Abbreviation of Internet Protocol / User Datagram Protocol in English terminology) destination for the identification of the destination port, the type and storage address of the port in memory and network monitoring information. The configuration table residing in the local memory of the I / O server, whose size is of the order of a few kilos bytes, is used for each Ethernet frame received. The management of redundancy and integrity advantageously uses resources also stored in the local memory of the I / O server. If the search for the ports requires a table that is too large to be stored in local memory, the elements of this table, necessary for the processing of the VL identified by the configuration table residing in the local memory of the I / O server, are loaded into the I / O server's memory read slices allowed for this VL and only the pending packets corresponding to these VLs are processed. If the capacity of the local memory of the I / O server allows it, it is preferable for reasons of simplicity and reduced latency to leave these tables in the I / O server. The I / O server's broadcast activities are scheduled by the placement tool used for placement of application processing in the slices and for slot placement on the cores. During transmission, the configuration associated with a VL is loaded into the local memory at the scheduled cycle, as well as the state of the ports associated with it. If the transmission conditions are met, the transmission is triggered in the cycle at a time defined by the configuration. Similarly, if the local memory of the I / O server permits, it is preferable to leave the configuration tables necessary for the transmissions. FIG. 5 schematically illustrates a CPM, the architecture of which is based on a multi-core processor such as that presented in FIG. 3b, adapted to implement the invention in which the AFDX functions are managed in software in the multi-processor -hearts.
Comme illustré, le CPM 500 comprend le processeur multi-cœurs 505 ayant ici, en particulier, huit cœurs et deux contrôleurs de mémoire. Ces contrôleurs de mémoire sont utilisés comme interface entre les cœurs et les mémoires 510-1 et 510-2. Le CPM 500 comprend en outre une mémoire 515, par exemple une mémoire flash, pour stocker, par exemple, certaines des applications devant être exécutées par les cœurs du processeur 505. Le CPM 500 comprend en outre une interface réseau pour recevoir et transmettre des données, en particulier une interface AFDX, ainsi que la logique nécessaire au fonctionnement du CPM. La fonction AFDX est ici réalisée par le processeur multi-cœurs, c'est-à-dire de façon logicielle.As illustrated, the CPM 500 includes the multi-core processor 505 having here, in particular, eight cores and two memory controllers. These memory controllers are used as interface between the cores and memories 510-1 and 510-2. The CPM 500 further comprises a memory 515, for example a flash memory, for storing, for example, some of the applications to be executed by the cores of the processor 505. The CPM 500 further comprises a network interface for receiving and transmitting data. , in particular an AFDX interface, as well as the logic necessary for the operation of the CPM. The AFDX function is here performed by the multi-core processor, that is to say, software.
Naturellement, pour satisfaire des besoins spécifiques, une personne compétente dans le domaine de l'invention pourra appliquer des modifications dans la description précédente. Naturally, to meet specific needs, a person skilled in the field of the invention may apply modifications in the foregoing description.

Claims

REVENDICATIONS
1. Procédé de chargement et d'exécution à cycles d'exécution déterministes d'une pluralité d'instructions dans un système avionique comprenant au moins un processeur ayant au moins deux cœurs (305, 305') et au moins un contrôleur de mémoire (355), chacun desdits au moins deux cœurs disposant d'une mémoire privée (310, 340, 345, 350), ce procédé étant caractérisé en ce que ladite pluralité d'instructions est chargée et exécutée par tranches d'exécution et en ce qu'il comprend les étapes suivantes, - durant une première tranche d'exécution, o autorisation d'accès audit au moins un contrôleur de mémoire à un premier desdits au moins deux cœurs, ledit premier cœur transmettant (215) audit au moins un contrôleur de mémoire au moins une donnée mémorisée dans sa mémoire privée, préalablement modifiée, et recevant (220) au moins une donnée et au moins une instruction de ladite pluralité d'instructions, ladite au moins une donnée et ladite au moins une instruction reçues étant mémorisées dans sa mémoire privée ; o interdiction d'accès audit au moins un contrôleur de mémoire à un second desdits au moins deux cœurs, ledit second cœur exécutant (210) au moins une instruction préalablement mémorisée dans sa mémoire privée ; - durant une seconde tranche d'exécution, o interdiction d'accès audit au moins un contrôleur de mémoire audit premier cœur, ledit premier cœur exécutant (235) au moins une instruction préalablement mémorisée dans sa mémoire privée ; et, o autorisation d'accès audit au moins un contrôleur de mémoire audit second cœur, ledit second cœur transmettant (225) audit au moins un contrôleur de mémoire au moins une donnée mémorisée dans sa mémoire privée, préalablement modifiée, et recevant (230) au moins une donnée et au moins une instruction de ladite pluralité d'instructions, ladite au moins une donnée et ladite au moins une instruction reçues étant mémorisées dans sa mémoire privée. A method of loading and executing deterministic executing cycles of a plurality of instructions in an avionic system comprising at least one processor having at least two cores (305, 305 ') and at least one memory controller ( 355), each of said at least two cores having a private memory (310, 340, 345, 350), said method being characterized in that said plurality of instructions are loaded and executed in execution slots and in that it comprises the following steps, - during a first execution slice, o access authorization to said at least one memory controller to a first of said at least two cores, said first core transmitting (215) to said at least one controller of memory at least one datum stored in its private memory, previously modified, and receiving (220) at least one datum and at least one instruction of said plurality of instructions, said at least one datum and said at least one datum received instructions being stored in his private memory; o prohibiting access to said at least one memory controller to a second of said at least two cores, said second core executing (210) at least one instruction previously stored in its private memory; during a second execution slice, prohibiting access to said at least one memory controller at said first core, said first core executing (235) at least one instruction previously stored in its private memory; and, o access authorization to said at least one memory controller to said second core, said second core transmitting (225) to said at least one memory controller at least one datum stored in its private memory, previously modified, and receiving (230) at least one data and at least one instruction of said plurality of instructions, said at least one data item and said at least one received instruction being stored in its private memory.
2. Procédé selon la revendication 1 selon lequel ledit au moins un processeur comprend en outre au moins un second contrôleur de mémoire, le procédé comprenant en outre les étapes suivantes,The method of claim 1 wherein said at least one processor further comprises at least one second memory controller, the method further comprising the steps of:
- durant une première phase de ladite première tranche d'exécution, autorisation d'accès à un premier desdits au moins deux contrôleurs de mémoire audit premier cœur et interdiction d'accès à un second desdits au moins deux contrôleurs de mémoire audit premier cœur ;during a first phase of said first execution slot, authorizing access to a first of said at least two memory controllers at said first core and prohibiting access to a second of said at least two memory controllers at said first core;
- durant une seconde phase de ladite première tranche d'exécution, autorisation d'accès audit second contrôleur de mémoire audit premier cœur et interdiction d'accès audit premier contrôleur de mémoire audit premier cœur ; - durant une première phase de ladite seconde tranche d'exécution, autorisation d'accès audit premier contrôleur de mémoire audit second cœur et interdiction d'accès audit second contrôleur de mémoire audit second cœur ; et,during a second phase of said first execution slot, allowing access to said second memory controller at said first core and prohibiting access to said first memory controller at said first core; during a first phase of said second execution slot, authorizing access to said first memory controller at said second core and prohibiting access to said second memory controller at said second core; and,
- durant une seconde phase de ladite seconde tranche d'exécution, autorisation d'accès audit second contrôleur de mémoire audit second cœur et interdiction d'accès audit premier contrôleur de mémoire audit second cœur.during a second phase of said second execution slot, authorizing access to said second memory controller at said second core and prohibiting access to said first memory controller at said second core.
3. Procédé selon la revendication 1 ou la revendication 2 selon lequel au moins un desdits au moins deux cœurs est dédié à des opérations de transmission et de réception de données vers et depuis une interface de communication réseau. The method of claim 1 or claim 2 wherein at least one of said at least two cores is dedicated to data transmission and reception operations to and from a network communication interface.
4. Procédé de traitement d'une pluralité d'instructions pour permettre le chargement et l'exécution à cycles d'exécution déterministes de ladite pluralité d'instructions selon l'une quelconque des revendications précédentes, le procédé de traitement comprenant une étape de découpage de ladite pluralité d'instructions en tranches d'exécution, chaque tranche d'exécution comprenant une séquence de transfert et une séquence d'exécution, ladite séquence de transfert permettant la transmission d'au moins une donnée préalablement mémorisée et la réception et la mémorisation d'au moins une donnée et d'au moins une instruction, ladite au moins une donnée reçue étant nécessaire à l'exécution de ladite au moins une instruction reçue et permettant l'exécution de ladite au moins une instruction reçue, de façon autonome, durant l'exécution de ladite séquence d'exécution. A method of processing a plurality of instructions to allow the deterministic runtime loading and execution of said plurality of instructions according to any one of the preceding claims, the method of processing comprising a step of clipping. said plurality of instructions in execution slots, each execution slot comprising a transfer sequence and an execution sequence, said transfer sequence allowing the transmission of at least one previously stored data and the reception and storage at at least one datum and at least one instruction, said at least one received datum being necessary for the execution of said at least one received instruction and allowing the execution of said at least one received instruction, autonomously, during the execution of said execution sequence.
5. Procédé selon la revendication précédente selon lequel ladite étape de découpage est basée sur la résolution d'un système d'équations linéaires représentant des contraintes d'exécution des instructions de ladite pluralité d'instructions selon au moins une caractéristique d'un processeur adapté à exécuter lesdites tranches d'exécution. 5. Method according to the preceding claim wherein said step of cutting is based on the resolution of a system of linear equations representing execution constraints of the instructions of said plurality of instructions according to at least one characteristic of a suitable processor. to execute said execution slots.
6. Procédé selon la revendication 4 ou la revendication 5 selon lequel la durée desdites tranches d'exécution est constante et prédéterminée.The method of claim 4 or claim 5 wherein the duration of said execution slots is constant and predetermined.
7. Procédé selon la revendication précédente selon lequel ladite durée est déterminée par le temps de transmission de données préalablement modifiées et le temps de réception de données et d'instructions à exécuter. 7. Method according to the preceding claim wherein said duration is determined by the previously modified data transmission time and the time of receipt of data and instructions to be executed.
8. Programme d'ordinateur comprenant des instructions adaptées à la mise en œuvre de chacune des étapes du procédé selon l'une quelconque des revendications précédentes lorsque ledit programme est exécuté un processeur.8. Computer program comprising instructions adapted to the implementation of each of the steps of the method according to any one of the preceding claims when said program is executed a processor.
9. Dispositif comprenant des moyens adaptés à la mise en œuvre de chacune des étapes du procédé selon l'une quelconque des revendications9. Device comprising means adapted to the implementation of each of the steps of the method according to any one of the claims.
1 à 7.1 to 7.
10. Aéronef comprenant le dispositif selon la revendication précédente. 10. Aircraft comprising the device according to the preceding claim.
EP10734208A 2009-06-05 2010-06-02 Method and device for loading and executing instructions with deterministic cycles in a multicore avionics system having a bus, the access time of which is unpredictable Ceased EP2438528A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR0902750A FR2946442B1 (en) 2009-06-05 2009-06-05 METHOD AND APPARATUS FOR LOADING AND EXECUTING DETERMINISTIC CYCLE INSTRUCTIONS IN A MULTI-HEART AVIONICS SYSTEM HAVING A BUS WHOSE ACCESS TIME IS NOT PREDICTIBLE
PCT/FR2010/051071 WO2010139896A1 (en) 2009-06-05 2010-06-02 Method and device for loading and executing instructions with deterministic cycles in a multicore avionics system having a bus, the access time of which is unpredictable

Publications (1)

Publication Number Publication Date
EP2438528A1 true EP2438528A1 (en) 2012-04-11

Family

ID=41667520

Family Applications (1)

Application Number Title Priority Date Filing Date
EP10734208A Ceased EP2438528A1 (en) 2009-06-05 2010-06-02 Method and device for loading and executing instructions with deterministic cycles in a multicore avionics system having a bus, the access time of which is unpredictable

Country Status (4)

Country Link
US (1) US8694747B2 (en)
EP (1) EP2438528A1 (en)
FR (1) FR2946442B1 (en)
WO (1) WO2010139896A1 (en)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2945647A1 (en) * 2009-05-18 2010-11-19 Airbus France METHOD OF OPTIMIZING AN AVIONIC PLATFORM
US8516205B2 (en) * 2010-10-29 2013-08-20 Nokia Corporation Method and apparatus for providing efficient context classification
US8516194B2 (en) * 2010-11-22 2013-08-20 Micron Technology, Inc. Systems and methods for caching data with a nonvolatile memory cache
US9137038B1 (en) * 2012-08-30 2015-09-15 Rockwell Collins, Inc. Integrated modular avionics system with distributed processing
DE102013224702A1 (en) * 2013-12-03 2015-06-03 Robert Bosch Gmbh Control device for a motor vehicle
US10375087B2 (en) * 2014-07-21 2019-08-06 Honeywell International Inc. Security architecture for the connected aircraft
CN104202188B (en) * 2014-09-01 2017-04-26 北京航空航天大学 Method for carrying out AFDX network path optimization by genetic algorithm
US9812221B1 (en) 2015-09-09 2017-11-07 Rockwell Collins, Inc. Multi-core cache coherency built-in test
US10089233B2 (en) 2016-05-11 2018-10-02 Ge Aviation Systems, Llc Method of partitioning a set-associative cache in a computing platform
WO2018078610A1 (en) 2016-10-31 2018-05-03 Leonardo S.P.A. Certifiable deterministic system software framework for hard real-time safety-critical applications in avionics systems featuring multi-core processors
US10402327B2 (en) * 2016-11-22 2019-09-03 Advanced Micro Devices, Inc. Network-aware cache coherence protocol enhancement
US10162757B2 (en) 2016-12-06 2018-12-25 Advanced Micro Devices, Inc. Proactive cache coherence
FR3086780B1 (en) * 2018-09-27 2020-11-06 Thales Sa SYSTEM AND METHOD FOR ACCESSING A SHARED RESOURCE
DE102019128206B4 (en) 2019-10-18 2022-09-01 Iav Gmbh Ingenieurgesellschaft Auto Und Verkehr Method and device for static memory management optimization in integrated multi-core processors
US11409643B2 (en) 2019-11-06 2022-08-09 Honeywell International Inc Systems and methods for simulating worst-case contention to determine worst-case execution time of applications executed on a processor
CN113422714B (en) * 2021-06-23 2022-07-05 中国航空无线电电子研究所 Module for supporting high-integrity redundancy management on AFDX terminal

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5590368A (en) * 1993-03-31 1996-12-31 Intel Corporation Method and apparatus for dynamically expanding the pipeline of a microprocessor
JP2003150395A (en) * 2001-11-15 2003-05-23 Nec Corp Processor and program transfer method thereof
EP2015174B1 (en) * 2007-06-21 2018-03-14 Imsys AB Microprogrammed processor having multiple processor cores using time-shared access to a microprogram control store

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
None *
See also references of WO2010139896A1 *

Also Published As

Publication number Publication date
WO2010139896A1 (en) 2010-12-09
FR2946442B1 (en) 2011-08-05
US20120084525A1 (en) 2012-04-05
US8694747B2 (en) 2014-04-08
FR2946442A1 (en) 2010-12-10

Similar Documents

Publication Publication Date Title
EP2438528A1 (en) Method and device for loading and executing instructions with deterministic cycles in a multicore avionics system having a bus, the access time of which is unpredictable
Harlap et al. Addressing the straggler problem for iterative convergent parallel ML
US11487589B2 (en) Self-adaptive batch dataset partitioning for distributed deep learning using hybrid set of accelerators
US10165488B2 (en) Method of and system for processing a transaction request in distributed data processing systems
CN110580197B (en) Distributed computing architecture for large model deep learning
KR20220078566A (en) memory-based processor
EP1949234A1 (en) Method and system for conducting intensive multitask and multiflow calculation in real-time
US10970118B2 (en) Shareable FPGA compute engine
WO2020047337A1 (en) Method, apparatus, and system for an architecture for machine learning acceleration
US11561833B1 (en) Allocation and placement of resources for network computation
US11176449B1 (en) Neural network accelerator hardware-specific division of inference into groups of layers
EP3494475B1 (en) Method and device for distributing partitions on a multicore processor
US11914903B2 (en) Systems, methods, and devices for accelerators with virtualization and tiered memory
JP2022137247A (en) Processing for a plurality of input data sets
CN103093446A (en) Multi-source image fusion device and method based on on-chip system of multiprocessor
FR3010201A1 (en) COMPUTER COMPRISING A MULTICOAL PROCESSOR AND METHOD OF CONTROLLING SUCH A CALCULATOR
Zhao et al. Gpu-enabled function-as-a-service for machine learning inference
CN116382599A (en) Distributed cluster-oriented task execution method, device, medium and equipment
HeydariGorji et al. In-storage processing of I/O intensive applications on computational storage drives
FR2991074A1 (en) METHOD, DEVICE AND COMPUTER PROGRAM FOR DYNAMICALLY CONTROLLING MEMORY ACCESS DISTANCES IN A NUMA-TYPE SYSTEM
EP2666092B1 (en) Multi-core system and data coherency method
US20210271536A1 (en) Algorithms for optimizing small message collectives with hardware supported triggered operations
FR2995705A1 (en) Method for preparation of sequence of execution for data processing program of service, involves assigning set of atomic sequences and atomic subtasks so that each task of program is executed in duration of temporal frame
Bueno et al. RapidIO for radar processing in advanced space systems
Roozbeh Toward Next-generation Data Centers: Principles of Software-Defined “Hardware” Infrastructures and Resource Disaggregation

Legal Events

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

Free format text: ORIGINAL CODE: 0009012

17P Request for examination filed

Effective date: 20111107

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 SE SI SK SM TR

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

REG Reference to a national code

Ref country code: DE

Ref legal event code: R003

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

Free format text: STATUS: THE APPLICATION HAS BEEN REFUSED

18R Application refused

Effective date: 20200529