EP1949234A1 - Procede et systeme de calcul intensif multitache et multiflot en temps reel - Google Patents
Procede et systeme de calcul intensif multitache et multiflot en temps reelInfo
- Publication number
- EP1949234A1 EP1949234A1 EP06764855A EP06764855A EP1949234A1 EP 1949234 A1 EP1949234 A1 EP 1949234A1 EP 06764855 A EP06764855 A EP 06764855A EP 06764855 A EP06764855 A EP 06764855A EP 1949234 A1 EP1949234 A1 EP 1949234A1
- Authority
- EP
- European Patent Office
- Prior art keywords
- auxiliary
- unit
- apun
- apuo
- spp
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
- 238000004364 calculation method Methods 0.000 title claims abstract description 75
- 238000000034 method Methods 0.000 title claims description 51
- 230000015654 memory Effects 0.000 claims abstract description 136
- 238000012545 processing Methods 0.000 claims abstract description 98
- 238000004891 communication Methods 0.000 claims abstract description 26
- 238000007726 management method Methods 0.000 claims description 31
- 230000008569 process Effects 0.000 claims description 29
- 238000003860 storage Methods 0.000 claims description 16
- 230000006870 function Effects 0.000 claims description 12
- 230000001360 synchronised effect Effects 0.000 claims description 11
- 238000011282 treatment Methods 0.000 claims description 8
- 238000013468 resource allocation Methods 0.000 claims description 5
- 230000001960 triggered effect Effects 0.000 claims description 3
- 238000012546 transfer Methods 0.000 description 26
- 230000007246 mechanism Effects 0.000 description 17
- 230000010354 integration Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 239000013256 coordination polymer Substances 0.000 description 6
- 238000010168 coupling process Methods 0.000 description 6
- 238000005457 optimization Methods 0.000 description 6
- 230000008878 coupling Effects 0.000 description 5
- 238000005859 coupling reaction Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 230000001788 irregular Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000006378 damage Effects 0.000 description 2
- 238000000354 decomposition reaction Methods 0.000 description 2
- 230000001066 destructive effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 101100015675 Mus musculus Gpr15 gene Proteins 0.000 description 1
- SYJGKVOENHZYMQ-UHFFFAOYSA-N Penoxsulam Chemical compound N1=C2C(OC)=CN=C(OC)N2N=C1NS(=O)(=O)C1=C(OCC(F)F)C=CC=C1C(F)(F)F SYJGKVOENHZYMQ-UHFFFAOYSA-N 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 241000271897 Viperidae Species 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 210000000056 organ Anatomy 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000009257 reactivity Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000004043 responsiveness Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000004513 sizing Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 238000004148 unit process Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5044—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
Definitions
- the present invention relates to a method and a multitasking and multiflot intensive computing system in real time.
- the invention applies more particularly to embedded multiprocessor architectures.
- the aim of the invention is to provide a processing solution for systems having the following properties:
- High computing power the complexity of embedded applications is constantly growing. This is mainly due to the desire to integrate more and more functionalities into embedded systems (combination of multimedia, gaming, telecommunication and positioning functions in a mobile phone) and to increase the volumes of data to be processed. (video sensor capabilities, fast converters, ). Embedded systems must also be able to "digest" concurrently several streams of information. It is therefore essential to collect, distribute and effectively process all the information of the organs distributed in the system. This need to concurrently handle multiple streams of information combined with the opening of systems also results in multitasking execution environments.
- targeted embedded systems have strong capabilities to handle heterogeneous data flows, strong opportunities for dynamic adaptation to the environment and good demand-responsive communication capabilities. They are also strongly constrained by the external environment (consumption, real-time, ...) and want to be open, that is to say that the same product can be intended for several uses.
- tasks can be dynamically (ie at runtime) created, suspended, destroyed, etc.
- the object of this invention is to provide a calculation structure in which the integration of dynamic control solutions is not at the expense of performance.
- the exploitation of parallelism has historically been tied to the solutions allowing to benefit from the parallelism at the level of operations or instructions within the applications.
- the complexity of applications embedded makes extremely difficult or inefficient modeling in the form of a single control flow.
- users and architects agree to favor parallelism at the task level. Consequently, a strong trend currently observed is the integration on the same silicon substrate of several cores of processors, allowing the parallel execution of tasks on the same circuit.
- SMFT Simultaneous MultiThreading
- CMP Multiprocessing
- CMP Multiprocessing
- CMT Multiprocessing
- simultaneous multiflot or SMT is for example implemented in the latest generations of processors Intel, IBM or HP Alpha. It consists in using several program counters, in order to supply the computing units with instructions from several instruction streams. The dependencies between tasks are limited, the parallel level of instructions or ILP (Instruction Level Parallelism) seen by the processor is increased and consequently the performance of the processor are too.
- ILP Instruction Level Parallelism
- Figure IA is a block diagram illustrating the principle of a SMT architecture of the simultaneous multiflot type.
- Functional units or calculation units FU are supplied with processing by a single control resource CP associated with a task allocator TD.
- the control block CP associated with the task allocator TD concurrently assigns instructions to the functional units FU as a function of the availability of the data and any operational hazards.
- Functional units cooperate with shared SMS memory space.
- Figure 1B illustrates an example of operation for a structure having four FU functional units. In this figure, each square 1 represents an instruction and the vertical black lines 2 represent the control and assignment tasks of the instructions.
- the squares 3 marked with a cross correspond to time slots not used by the functional units because of dependencies of data or resources.
- the multiprocess-based component or CMP solution is generally preferred in embedded systems because of its relative simplicity of implementation.
- the principle of this solution is to concurrently distribute tasks to computing resources according to their availability. Each calculation resource then executes the tasks assigned to it one after the other.
- These architectures are divided into two families, homogeneous structures and heterogeneous structures:
- Heterogeneous structures these structures integrate heterogeneous computation units optimized for a given application domain, the distribution of tasks on these resources being identified beforehand at the time of compilation. Software partitioning done at compile time simplifies the distribution mechanisms (dynamic) of tasks at run time.
- These application-oriented solutions include the OMAP, VIPER, PNX or Nomadik platforms.
- Homogeneous structures are based on the integration of homogeneous calculation units. These units can be general-purpose, as in IBM's CeIIs or ARM's MPCore platforms, or optimized for a given application domain, such as the Craddle Technologies CT3400, optimized for MPEG4-AVC encoding / decoding.
- the first solutions make it possible to target very large ranges of problems, whereas the second is optimized for a clearly identified application domain.
- Figure 2A is a block diagram illustrating the principle of an architecture of the multiprocess type on component or CMP.
- the functional units or calculation units FU which cooperate with an SMS shared memory space are supplied with processing by a single control resource CP associated with a task allocator TD.
- the CP control unit associated with the TD task allocator is responsible for determining which tasks are ready for execution. As soon as a computing resource frees, it is assigned a task that will be processed as soon as the data is finished loading.
- These zones 4 are hatched in FIG. 2B which illustrates an example of operation for a structure having four functional units FU, with squares 1 representing instructions and vertical black lines 2 representing control and assignment tasks of the instructions. .
- Processor architectures of the multiprocess and multiflow type on component or CMT are a combination of the two previous models.
- the CMP multiprocess concept is extended to allow multiple tasks to be performed on compute primitives.
- This technology is considered mainly in the context of server-type solutions.
- Figure 3A illustrates a generic architecture model of the CMT type.
- a set of functional units or calculation units FU are fed into processing by a single control resource CP associated with a task allocator TD.
- FU functional units cooperate with shared SMS memory space.
- Figure 3B illustrates an example of operation of a functional unit FU.
- the CP control unit associated with the TD task allocator is responsible for determining which tasks are ready for execution. As soon as a computing resource is released, it is assigned a task that will be processed as soon as the data is loaded. This is represented by the striped areas 4 in FIG. 3B, while the squares 1 represent instructions and the vertical black lines 2 represent control and assignment tasks of the instructions.
- Each compute resource can concurrently handle multiple tasks. As soon as a job is blocked, for example because of a cache fault, the FU functional unit replaces it with a new one. In this case, task switching within the functional unit does not result in context loading penalties.
- Some CMP-type solutions lead to the distinction between regular and irregular treatments. These architectures integrate therefore computing resources dedicated to the implementation of intensive treatments. Irregular processing is then processed with the system software on a general purpose processor. If the integration of computing resources dedicated to intensive processing allows the implementation of optimizations to improve the performance or the energy efficiency of these architectures, the inefficiency of the communications between the processing tasks and between processing tasks and system software or control processing lose the benefit of these optimizations at the system level.
- the communications between the different elements of the architecture are made by means of bus systems, accompanied by strong penalties, both latency and bandwidth. As a result, these systems are penalized by the latency accompanying the transmission of control information and the throughput that disrupts the data transfers. These penalties result in a lower responsiveness of the architecture and an inability of the system software to optimize the use of computing resources.
- the document US2Q04 / 0Q88519A1 proposes a solution to the management of a parallelism of task in the context of high performance processors but the proposed solution can not apply to embedded systems, especially for reasons of cost and determinism.
- SMT type solutions are typically based on standard general purpose processors on which an additional control stage has been grafted.
- these solutions do not solve the problems of consumption and determinism inherent in current general-purpose processors and, on the other hand, they add an additional complexity for managing several instruction streams concurrently.
- CMP type architectures Despite the variety of implementation of CMP type architectures, it is also difficult to retain a solution that addresses embedded issues. On the one hand, application-oriented solutions do not have sufficient flexibility, and on the other hand the more general architectures do not offer calculation solutions and remain based on expensive solutions developed for general purpose processors. Similarly, CMT solutions, while extending the parallelism of the architectures, still do not meet the requirements of consumption and still face the problems of managing the consistency of data and communications in the circuit.
- the present invention aims to remedy the aforementioned drawbacks and in particular to allow a very strong integration of computing resources in a processor.
- a multitasking and multiflux intensive computing system in real time, characterized in that it comprises at least one central processor core, responsible for the support of the system software, and comprising a control unit responsible for the allocating an application's light processes (threads), the non-critical lightweight processes being executed by the core processor core, while the intensive or specialized thin processes are allocated to an auxiliary processing part, comprising a set of N Auxiliary computation optimized for the fast processing of some operations, a memory space shared by the auxiliary computing units via a network and a unit for control and allocation of auxiliary resources, responsible on the one hand for the allocation of elementary instruction streams, corresponding to intensive or specialized light processes, parallel auxiliary computing units, and responsible for on the other hand, the control of the execution and the synchronization of these instruction flows and the management of the execution contexts of the instruction flows, and in that the various constituent elements of the system are arranged in such a way that the communication of at least a portion of the data between the different auxiliary calculation units or between these auxiliary computing
- the system may include a system bus connected to the core of the central processor.
- system further comprises a mass memory for storing all the data and programs manipulated by the auxiliary calculation units.
- a main memory controller can be associated with the mass memory.
- the system may further include input-output controllers connected to at least one input-output device.
- the input-output signals are made available for the other system elements via the SMS shared memory space and can thus be processed in a critical time by the system.
- Auxiliary computing units may include units selected from programmable units, reconfigurable units, and dedicated units.
- the shared memory space may include multiple storage resources and an interconnection network to aggregate all of these resources and this shared memory space stores all the data handled within the auxiliary computing units.
- the shared memory space may further include a memory space controller responsible for establishing a link between the computing resources and the memory resources of the shared memory space.
- the central processor core may further include a computing unit, a storage unit and a loading unit.
- the control unit may have additional instructions for controlling the auxiliary processing part.
- the loading unit can integrate a queue of additional registers allowing data exchanges between the central processor core and the auxiliary processing part.
- the number N of auxiliary calculation units which at a time each processes a stream of elementary instructions forming part of a task is optimized according to the application and can be for example between 2 and 100.
- L The auxiliary resource control and allocation unit may also be responsible for at least one management function selected from the dynamic power management, fault management and crisis management functions.
- the system comprises a bus arbiter for managing the communication between the system bus on the one hand and the central processor core on the one hand and, as the case may be, the input-output and the memory on the other hand. massive.
- the system comprises a set of processors connected to a system bus, each processor comprising a central processor core, a set of N auxiliary computing units, a shared memory space and a control and allocation unit. auxiliary resources.
- the system may include a system bus arbitrator shared between multiple processors to link to the system bus.
- the system may further include mass memory shared between multiple processors.
- the subject of the invention is also a multitasking and multiflot intensive computing method in real time using at least one processor comprising at least one central processor core, a control unit, a set of N auxiliary calculation units. , a memory space shared by the auxiliary computing units via an internal network, a control unit and auxiliary resource allocation, characterized in that the central processor core is responsible for the support of the system software, and in that the control unit is responsible for allocating the light threads of an application, the non-critical lightweight processes being executed by the central processor core, while the intensive or specialized light processes are allocated to an auxiliary processing part, through the control unit and auxiliary resource allocation which is responsible for the allocation of the parallel flow of elementary instructions , corresponding to the intensive or specialized tasks, on the auxiliary computing units optimized for the fast processing of certain operations, and on the other hand the control of the execution and the synchronization of these instruction flows and the management of the contexts executing these instruction flows, and in that the communication of at least part of the data between the different auxiliary calculating units or between these auxiliary
- the control unit can control the control of the auxiliary resource control and allocation unit by means of standard read / write instructions or standard exceptions.
- the control unit can still control the control of the control unit and the allocation of auxiliary resources by means of specialized instructions dedicated to communication and synchronization operations.
- an auxiliary calculating unit processes only a stream of elementary instructions forming part of a task and each stream of elementary instructions is executed only on a single auxiliary calculating unit.
- all the data and programs manipulated by the auxiliary calculation units are stored in a mass memory.
- input-output signals can be transmitted in critical time to the auxiliary calculation units, via the shared memory space.
- the processor can be connected to a system bus.
- the communication between the system bus on the one hand and the central processor core on the other, and the input / output controllers or the mass memory, if appropriate, can be managed by a controller.
- bus referee.
- a task allocated to the central processor core constituting the standard processing part is processed cycle by cycle on this same central processor core until it reaches a specialized instruction that is decoded and generates a command to the control and allocation unit so as to cause the creation of a flow of instructions that is executed on one computation units under the control and allocation unit management whereas, once the decoded specialized instruction and the corresponding command generated, the execution of the current task continues in the central processor core, without intervention in the management of the flow of instructions initiated and executed on an auxiliary calculation unit.
- a strong synchronization in which all the components of the processor are synchronized can be selectively triggered depending on the type of trap.
- a local synchronization is selectively triggered whereby the auxiliary computing unit concerned manages the trap alone and is synchronized independently of the rest of the processor. .
- the invention incorporates a new coupling mechanism allowing a very strong integration of computing resources in the processor.
- the architecture of the system according to the invention integrates a first subset or part of standard processing (SPP) which constitutes a central processor core and a second subset or part of auxiliary processing (APP) which incorporates in particular the units of Auxiliary calculation as well as the control unit and auxiliary resource allocation and the shared memory space.
- SPP standard processing
- APP auxiliary processing
- FIGS. 1A and 1B respectively represent a generic model of SMT architecture and an example of operation
- FIGS. 2A and 2B respectively represent a generic model of CMP architecture and an example of operation
- FIGS. 3A and 3B respectively represent a generic model of CMT architecture and an example of operation
- FIG. 4 symbolically represents the decomposition of a system into applications, then into tasks and finally into flows of instructions or threads;
- FIG. 5 is a block diagram showing the main elements of the architecture of a processor according to FIG. the invention.
- FIG. 6 is a block diagram showing a coupling mechanism between an auxiliary processing part and a standard processing part
- FIG. 7 is a diagram showing a mechanism for accessing the data in an auxiliary processing part
- FIG. 8 is a diagram showing a data transfer mechanism between an auxiliary processing part and a standard processing part
- FIG. 9 is a diagram showing a data transfer mechanism between a standard processing part and a part auxiliary treatment
- FIG. 10 is a block diagram of an example of a shared memory multiprocessor system embodying the invention. It will first be pointed out with reference to FIG. 4 the decomposition of a system 10 into applications 11, 12, then into tasks 21 to 25, and finally into streams of instructions or "threads" 31 to 33, again referred to as “processes”. light. "
- An embedded system 10 is typically capable of handling several applications 11, 12 concurrently.
- An application refers to a feature, a service offered by a system embedded. Any application 11, 12 processed on an embedded system can then be decomposed in the form of tasks 21 to 25 which are linked to each other following control dependencies expressed in the application. These tasks 21 to 25 can in turn be decomposed into operations executed sequentially or in parallel threads 31 to 33 for which concurrent executions are possible.
- FIG. 5 shows an example of a processor architecture according to the invention, with a first subset constituted by a standard processing part SPP forming a central processor core, and a second subset constituted by a auxiliary processing part APP.
- the standard processing part SPP takes care of the execution of the tasks. This includes on the one hand the processing of the instructions constituting the program to be processed but also the system software. Unlike a conventional processor, however, it is able to use APUO, APU1, ..., APUN-2, APUN-I auxiliary execution units included in the auxiliary processing part APP to process some application portions requiring very high computing power.
- the invention implements a specific method in the way of using the auxiliary calculation units.
- SPP standard processing part
- SPP processes non-specialized calculations within the applications. It also processes system software that manages resource sharing and job control. It is built on the basis of a generalist processor. It is therefore classically based on four units:
- ESCU control unit this unit is responsible for reading and decoding instructions.
- the complexity of this unit is variable.
- This unit can also incorporate a number of mechanisms to predict branch direction. Depending on the instruction, this unit sends commands to the other units of the architecture.
- SPU calculation unit this unit is responsible for performing the standard calculations identified by the instructions. This unit can optionally integrate several calculation resources if the ESCU control unit can handle several instructions simultaneously.
- Storage unit This unit is responsible for storing the data and instructions related to the program. This unit can be built on the basis of two levels of cache hierarchies according to a Harvard execution model and with a unified level 2 cache.
- This storage unit then comprises cache memories L1 D-Cache and L1 I-Cache level 1 and a L2 Cache level 2 cache.
- LSU loading unit The loading unit is responsible for linking the data stored in the memory and the units handled by the SPU calculation unit. This link is materialized by a queue of registers whose number of ports varies according to the number of instructions processed per cycle within the standard processing part
- the ESCU control unit may include additional instructions for controlling the auxiliary processing part APP. These instructions allow for example to request the execution of a critical treatment. However, more standard mechanisms can also be implemented, not requiring the introduction of new instructions (for example coupling method with memory mapping called "m ⁇ mory mapped").
- the LSU load unit can integrate an additional queue of registers. In addition to the conventional general register queue, a second register queue is thus integrated into the LSU load unit. This allows data exchange between the two subsets SPP and APP.
- the processor distinguishes the general registers from the auxiliary registers by their address. It should be noted that this mode of communication between the two subsets SPP and APP is particularly suitable for small data transfers.
- the auxiliary part APP supports the specialized and / or intensive calculations of the application. It integrates several APUO, APUl, ... APUN-2, APUN-I auxiliary computing units sharing a single SMS memory space. The number N of auxiliary calculation elements APUO, ... APUN-I is not subject to any particular limitation.
- auxiliary processing part APP is therefore particularly suitable for setting up GALS (Globally Asynchronous and Locally Synchronous) type structures.
- GALS Globally Asynchronous and Locally Synchronous
- An APP auxiliary portion will typically contain from 4 to 8 APU calculation elements.
- an auxiliary calculating unit APU processes only one thread and a thread is executed only on an auxiliary computing unit APU.
- a set of lightweight processes or threads is assigned to the auxiliary calculation units APU by the allocation and control unit ACU included in the auxiliary part APP following execution requests from the control unit ESCU.
- the physical allocation of the threads to the APU auxiliary computing units as well as the management of their execution and the synchronization between different threads are the responsibility of this allocation and control unit ACU.
- the auxiliary processing part APP also integrates IO input-output controllers known as critical times. These are directly related to time-critical input-output devices. These can for example correspond to fast Analog-Digital converters, to Radio Frequency interfaces, video sensors ... These M input-output controllers IOO to IOM-1 are considered by the control and allocation unit ACU as auxiliary calculating units APU. The control and allocation unit ACU must then assign a task to the input / output controller to load it to manage access to the input / output. The data sent or received is from or to the shared SMS memory space.
- the less critical inputs, such as those corresponding to a keyboard or a mouse are however connected by more standard means, such as the system bus SB, to the standard processing part SPP.
- the auxiliary processing part APP can still contain a mass memory MM in order to store all the data and programs handled by the auxiliary calculating units APU.
- This memory MM also has its own MMC controller on which the control unit and allocation ACU allocates data transfer threads between the system (shown in Figure 5 by the system bus SB) and the calculation threads intensive.
- This MMC controller is also involved in data transfers between the SMS shared memory space and the mass memory MM.
- APU auxiliary computing units are optimized for fast processing of certain operations. They can offer different tradeoffs between performance, flexibility, cost or consumption depending on their type. The selection of this or that type of computing unit is then strongly influenced by the application context.
- Auxiliary computing units may include programmable units, reconfigurable units, or dedicated units.
- Programmable units this type of unit corresponds to cores of general processors (MIPS, ARM, etc.) or optimized (DSP, ST2xx, etc.) cores for embedded computing. As these units are optimized for computation, they see their control structures simplified, for example by eliminating the mechanisms of branch prediction, interrupt management or data virtualization. These units can also integrate specialized computing units such as floating units and / or vector units.
- Reconfigurable units can also be used as a calculation accelerator. Large grain structures are favored because of their ability to be reconfigured quickly, and the good performance / flexibility tradeoff they can offer. Thin grain structures can also be integrated if great flexibility of use is required or if operations working on very small data (1 to 4 bits) are likely to be processed. Because of their very low reactivity, that is to say very long reconfiguration times, these fine grain resources are likely to be managed differently, for example in order to avoid their pre-emption.
- Dedicated Units Units that are optimized for certain critical processes can ultimately be integrated into the component. These dedicated accelerators support critical processes, for which programmable or reconfigurable solutions do not offer sufficient computing power. For example, cryptographic processing or management of very high-speed input / output flows are good candidates for such implementations.
- APU auxiliary calculation units may also contain private storage resources. These can be used either to store intermediate data to facilitate their access and to minimize bandwidth on the shared memory space, or to store the instructions of the running program. Programs that might be run could also be stored locally to speed up the task allocation phases.
- Two elements may require access to the system bus in the auxiliary processing part APP, the main memory and the input-output controllers 10. From the point of view of the standard processing part SPP, this access to the system bus SB is used to loading the L2-Cache cache with data or instructions from the mass memory MM or peripheral elements. In case of requests for simultaneous access of several elements of the processor, the bus arbitrator
- the standard processing part SPP continues the execution of the program, without intervening in the management of the thread initiated on the auxiliary processing part APP.
- the execution of the program therefore continues until its end or the processing of new specialized instructions, which can cause among other things the creation or the destruction of threads, the reading of data generated in the auxiliary processing part APP,.
- the ACU allocation and control unit is responsible for executing specialized instructions from the ESCU control unit.
- the detail of this coupling allowing the ESCU control unit to communicate with the allocation and control unit ACU is modeled in Figure 6.
- FIG. 6 shows the ESCU control unit, the LSU loading unit and the SPU calculation unit of the standard processing part SPP, as well as a part of the storage unit Ll I-Cache. .
- Figure 6 also shows the control and allocation unit ACU forming part of the auxiliary processing part APP.
- the standard instructions of the standard processing part SPP are read and then decoded, respectively in the reading and decoding stages of the control unit ESCU, in order to control the loading unit LSU and the calculation unit SPU. Conversely, in the case of specialized instructions, the ESCU control unit redirects the command stream to the allocation and control unit ACU.
- These specialized instructions can be of different natures and concern for example:
- the system software realizes a virtual allocation of the threads to the auxiliary calculation units APU. It is then up to the control and allocation unit ACU to physically perform this allocation and to take into account all the parameters making it possible to determine the best possible allocation.
- the ACU control and allocation unit also manages synchronization between threads as well as access to shared critical resources. This control and allocation unit ACU can also be responsible for providing support for the system software, for example by managing only the pre-emptions or by updating the task lists.
- control and allocation unit ACU must have the execution context of each of the threads running on the auxiliary processing part APP. Indeed, during a weak synchronization, the unit of control and allocation ACU is only responsible for the evolution of the threads. As a result, when the task is reallocated to the standard SPP processing part, it is necessary to inform it about the progress of the calculation threads. This makes it possible for the standard processing part SPP not to reactivate unfinished threads, but running on the auxiliary processing part APP.
- the availability of a local context in the control and allocation unit ACU makes it possible to guarantee a coherent state when a task is allocated on the processor. This is especially true if the tasks are executed in the disorder on the standard SPP processing part.
- the ACU control and allocation unit will also be able to support functions more specific to the application domains. dynamic power management, fault management or the management of "crisis modes".
- SMS shared memory space is made up of multiple storage resources and an interconnection network that brings all of these resources together in a single space.
- a memory controller MSC is responsible for establishing a link between the computing resources and the storage resources.
- the control and allocation unit ACU is also used to provide certain information making it possible to link the virtual addresses in the shared memory space, manipulated by the auxiliary control units APU, (corresponding to the name of a variable as well as a position in this variable, eg image name and pixel index) and the physical address to be propagated to the storage resource used.
- the data access mechanism is illustrated in FIG.
- auxiliary processing part APP for a data transfer operating between a producer APU auxiliary computing unit denoted APUp and a consumer APU auxiliary computing unit denoted APUc.
- This data access mechanism in the auxiliary processing part APP is broken down into two steps, identified by circles 1 and 2 in this Figure 7.
- the first phase of a data access is only performed when an auxiliary computing unit APU accesses a variable for the first time. In this case, there is no link between the data and the memory that contains it.
- the auxiliary computing unit APU queries the control and allocation unit ACU. This integrates a memory management unit MSMU performing this function by associating the name of a variable memory that stores it. When the data is identified in this unit, the MSMU management unit returns to the unit the identifier of the memory storing the variable. Conversely, when an auxiliary calculating unit APU attempts to write data which is not referenced (at the time of the first writing of this variable for example), the MSMU management unit is responsible for allocating a memory among the storage elements available in the shared memory space SMS.
- the unit associating on the name of a variable the memory that stores it is updated. and the memory identifier is returned to the APU auxiliary computing unit.
- the MSMU management unit is responsible for repatriating it (in connection with the data controller).
- main memory MMC main memory MMC and allocate a memory among the storage elements available in the shared memory space SMS.
- a data item is definitively written (final result)
- the corresponding entry in the unit associating on the name of a variable the memory that stores it is released and a request is transmitted to the main memory controller MMC to repatriate this data item.
- the second phase of data access is systematically performed since it makes it possible to make the link between the auxiliary computing unit APU and the memory containing the data.
- the auxiliary computing unit APU knows the memory to which it wishes to access, it transfers this information to the controller of the shared memory space SMS, in the same cycle time as the address of the searched data and the control signals. of memory.
- the memory controller MSC is then responsible for routing these signals (and then the data back) to the appropriate memory.
- this service may be different.
- this memory space controller MSC will be used to "packetize" the data, that is to say to add to the data the routing information. in the network.
- the memory controller MSC will be responsible for the hardware configuration of the path to be taken.
- auxiliary calculation units APU the management of the data addresses at the level of the auxiliary calculation units APU is ensured by specific input-output blocks, possibly capable of handling more complex data flows and burst communications for example .
- these data management elements take care of recovering the data manipulated by the APU auxiliary calculation units. If data access is impossible or slowed down, these control modules can freeze the execution of the thread on the auxiliary calculation unit APU, in order to prevent the latter from attempting to manipulate an unstable data item.
- T access Tmem x SuA - ⁇ ⁇ ⁇ - (1)
- Nbac ⁇ ss is the number of accesses
- Nbport is the number of ports in the SMS shared memory space or a node in the network
- Tmem represents the minimum memory access time.
- the memory structure used is interesting because the data are linked to a memory structure and not to a computing element. Preemption can therefore be achieved very quickly because a change of context does not necessarily imply data transfer between computing resources.
- reading the LOAD instruction Rx, Ty, Rz from the example illustrated in FIG. 8 makes it possible to load in the register Rx of the standard processing part SPP the variable Rz of the thread Ty executed on the auxiliary processing part.
- APP When the ESCU control unit decodes this instruction, it must generate three commands:
- This command is sent to the control and allocation unit ACU to identify the auxiliary computing unit APU which executes the thread Ty. This identification is carried out by means of a page table or Translation Look-aside Buffer (TLB) associating each active thread on the control and allocation unit.
- TLB Translation Look-aside Buffer
- the APU auxiliary computing unit that executes it. If this TLB does not return an APU calculation unit identifier, the thread is not running and the task running on the standard processing part SPP is pending. If the thread is running, the TLB returns the identifier of the APU compute unit that executes it. This identifier is used at the level of the standard processing part SPP to select the data to be sent to the auxiliary register queue of this auxiliary processing part SPP. This identifier can also be used at the level of the auxiliary calculation units APU to validate. or not reading the data in the SRF shared register queue.
- FIG. 9 is similar to Figure 8, but with the substitution of STORE statements Rx, Ty, Rz, Write (Rz) and Read (Rx) respectively to LOAD statements Rx, Ty, Rz, Read (Rz) and Write (Rx).
- the main memory controller MMC, the allocation and control unit ACU and the memory space controller MSC can intervene in the control of these communications, depending on the type of communication implemented.
- the main memory MM intervenes in four types of communications:
- System bus SB to main memory MM This first type of transfer makes it possible to repatriate data from outside the system to the main memory MM of the auxiliary processing part APP. These transfers occur following the decoding of a special instruction in the ESCU control unit. This special instruction causes the creation of a data transfer operation that will be assigned by the control and allocation unit ACU to the main memory controller MMC. The behavior of this one will then be comparable to that of a DMA controller (of direct access to the memory). At the same time, the main memory controller MMC informs a table that will allow it to link the loaded data and its position in the main memory MM.
- Main memory MM to SB system bus In a symmetrical manner, the data is transferred from the main memory MM to the rest of the system following the arrival of a transfer operation identified by special instructions at the ESCU control unit. Sendings from the main memory MM may also result in the destruction of an entry in the correspondence table if this data was a final result. This assumes that special instructions decoded by the ESCU control unit allow the distinction between destructive and non-destructive
- Main memory MM to shared memory space SMS If an auxiliary calculation unit APU attempts to access data not present in the shared memory space SMS, a transfer request is transmitted by the control unit and ACU allocation to the MMC to route this data to the shared SMS memory space. The auxiliary computing unit APU is then blocked the transfer time.
- Shared memory space SMS to main memory MM These transfers follow special data transfers of APU auxiliary calculation units which specify the writing of a final result, that is to say which is not intended to be replayed in the auxiliary processing part APP, in the shared memory space SMS. These transfers can also intervene in case of strong synchronization as part of a context backup. In this case, the SMS shared memory space sends a transfer request through the control and allocation unit ACU to the main memory controller MMC.
- the performance of the architecture is subject to some degradation when the number of auxiliary calculating units APU is too large, for example of the order of several hundred.
- FIG. 10 shows by way of example that the combination of two processors according to the invention, but could naturally include a larger number of associated processors which all cores have of the same organization, centered on the coupling of a standard processing part SPP and an auxiliary calculation part APP, as described previously, in particular with reference to FIG. 5.
- the invention essentially relates to a device and a method for controlling and allocating threads on an embedded architecture, advantageously integrating multiple processing resources, dedicated to multi-tasking and multi-tasking intensive computing in real-time.
- the real-time parallel computer architecture comprises:
- a central processor core SPP responsible for executing the non-critical processing of the tasks and the support of the system software
- an ACU unit for controlling and allocating auxiliary resources, which manages the execution of the intensive processing of the APUi auxiliary calculating units in parallel.
- the communication between the different auxiliary calculation units APU, between the calculation units APU auxiliary and SPP core processor core is through the shared SMS memory space and an internal network.
- the method of allocating and processing tasks makes it possible to separate the control tasks executed by the central processor core SPP from the intensive calculation tasks performed by the specialized APU calculation units.
- the control and allocation unit ACU manages the allocation of the intensive computing tasks for the different APU auxiliary computing units working in parallel.
- This auxiliary controller ACU allows the implementation of so-called weak synchronization mechanisms by which auxiliary calculation units APU can process threads of a task different from that performed on the core of the central processor SPP.
- the state of the system is no longer represented by a single context, unlike a Von Neuman architecture.
- the time-critical input inputs are directly connected to the shared memory space by the auxiliary computing units APU.
- This architecture and allocation method allow optimized real-time multitask processing, that is to say with a decrease in data loading times, and adaptable to different applications.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
- Multi Processors (AREA)
Abstract
Description
Claims
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR0511266A FR2893156B1 (fr) | 2005-11-04 | 2005-11-04 | Procede et systeme de calcul intensif multitache et multiflot en temps reel. |
PCT/FR2006/050535 WO2007051935A1 (fr) | 2005-11-04 | 2006-06-08 | Procede et systeme de calcul intensif multitache et multiflot en temps reel |
Publications (1)
Publication Number | Publication Date |
---|---|
EP1949234A1 true EP1949234A1 (fr) | 2008-07-30 |
Family
ID=36588738
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
EP06764855A Withdrawn EP1949234A1 (fr) | 2005-11-04 | 2006-06-08 | Procede et systeme de calcul intensif multitache et multiflot en temps reel |
Country Status (5)
Country | Link |
---|---|
US (1) | US9052957B2 (fr) |
EP (1) | EP1949234A1 (fr) |
JP (1) | JP5366552B2 (fr) |
FR (1) | FR2893156B1 (fr) |
WO (1) | WO2007051935A1 (fr) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2937439B1 (fr) * | 2008-10-17 | 2012-04-20 | Commissariat Energie Atomique | Procede d'execution deterministe et de synchronisation d'un systeme de traitement de l'information comportant plusieurs coeurs de traitement executant des taches systemes. |
FR2942556B1 (fr) | 2009-02-24 | 2011-03-25 | Commissariat Energie Atomique | Unite d'allocation et de controle |
US9459941B2 (en) * | 2009-07-28 | 2016-10-04 | Telefonaktiebolaget Lm Ericsson (Publ) | Apparatus and method for synchronizing the processing of events associated with application sessions in a telecommunications network |
CN101872317B (zh) * | 2010-07-16 | 2012-12-26 | 山东中创软件工程股份有限公司 | VxWorks多任务同步与通信方法 |
US9055069B2 (en) * | 2012-03-19 | 2015-06-09 | Xcelemor, Inc. | Hardware computing system with software mediation and method of operation thereof |
FR3004274A1 (fr) * | 2013-04-09 | 2014-10-10 | Krono Safe | Procede d'execution de taches dans un systeme temps-reel critique |
CN103618942B (zh) * | 2013-12-16 | 2016-09-28 | 乐视致新电子科技(天津)有限公司 | 智能电视及其浏览器网页视频的播放方法和装置 |
JP5949977B1 (ja) * | 2015-02-19 | 2016-07-13 | 日本電気株式会社 | 情報処理装置、情報処理方法、メインプロセッサコア、プログラム、情報処理方法、サブプロセッサコア |
US9904580B2 (en) | 2015-05-29 | 2018-02-27 | International Business Machines Corporation | Efficient critical thread scheduling for non-privileged thread requests |
JP6432450B2 (ja) * | 2015-06-04 | 2018-12-05 | 富士通株式会社 | 並列計算装置、コンパイル装置、並列処理方法、コンパイル方法、並列処理プログラムおよびコンパイルプログラム |
US11599383B2 (en) * | 2016-08-30 | 2023-03-07 | Microsoft Technology Licensing, Llc | Concurrent execution of task instances relating to a plurality of applications |
US10284501B2 (en) * | 2016-12-08 | 2019-05-07 | Intel IP Corporation | Technologies for multi-core wireless network data transmission |
US10871998B2 (en) * | 2018-01-18 | 2020-12-22 | Red Hat, Inc. | Usage instrumented workload scheduling |
US11900156B2 (en) * | 2019-09-24 | 2024-02-13 | Speedata Ltd. | Inter-thread communication in multi-threaded reconfigurable coarse-grain arrays |
WO2022056828A1 (fr) * | 2020-09-18 | 2022-03-24 | Alibaba Group Holding Limited | Architecture de traitement configurable |
US20220276914A1 (en) * | 2021-03-01 | 2022-09-01 | Nvidia Corporation | Interface for multiple processors |
US11836527B2 (en) | 2021-08-02 | 2023-12-05 | Nvidia Corporation | Accelerating table lookups using a decoupled lookup table accelerator in a system on a chip |
US11704067B2 (en) * | 2021-08-02 | 2023-07-18 | Nvidia Corporation | Performing multiple point table lookups in a single cycle in a system on chip |
TWI802302B (zh) * | 2022-03-01 | 2023-05-11 | 正大光明有限公司 | 光明燈顯示同步系統與方法 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5001624A (en) * | 1987-02-13 | 1991-03-19 | Harrell Hoffman | Processor controlled DMA controller for transferring instruction and data from memory to coprocessor |
US4862407A (en) * | 1987-10-05 | 1989-08-29 | Motorola, Inc. | Digital signal processing apparatus |
US5056000A (en) * | 1988-06-21 | 1991-10-08 | International Parallel Machines, Inc. | Synchronized parallel processing with shared memory |
US5239654A (en) * | 1989-11-17 | 1993-08-24 | Texas Instruments Incorporated | Dual mode SIMD/MIMD processor providing reuse of MIMD instruction memories as data memories when operating in SIMD mode |
US5682512A (en) * | 1995-06-30 | 1997-10-28 | Intel Corporation | Use of deferred bus access for address translation in a shared memory clustered computer system |
US5706514A (en) * | 1996-03-04 | 1998-01-06 | Compaq Computer Corporation | Distributed execution of mode mismatched commands in multiprocessor computer systems |
US5822553A (en) * | 1996-03-13 | 1998-10-13 | Diamond Multimedia Systems, Inc. | Multiple parallel digital data stream channel controller architecture |
KR100308618B1 (ko) * | 1999-02-27 | 2001-09-26 | 윤종용 | 단일 칩 상의 마이크로프로세서-코프로세서 시스템을 구비한 파이프라인 데이터 처리 시스템 및 호스트 마이크로프로세서와 코프로세서 사이의 인터페이스 방법 |
JP2002041489A (ja) * | 2000-07-25 | 2002-02-08 | Mitsubishi Electric Corp | 同期信号生成回路、それを用いたプロセッサシステムおよび同期信号生成方法 |
GB2378271B (en) * | 2001-07-30 | 2004-12-29 | Advanced Risc Mach Ltd | Handling of coprocessor instructions in a data processing apparatus |
JP4647307B2 (ja) * | 2002-04-25 | 2011-03-09 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | スケーラブルプロセッサにおける自動タスク分散 |
US7533382B2 (en) * | 2002-10-30 | 2009-05-12 | Stmicroelectronics, Inc. | Hyperprocessor |
US6944747B2 (en) * | 2002-12-09 | 2005-09-13 | Gemtech Systems, Llc | Apparatus and method for matrix data processing |
-
2005
- 2005-11-04 FR FR0511266A patent/FR2893156B1/fr active Active
-
2006
- 2006-06-08 JP JP2008538384A patent/JP5366552B2/ja not_active Expired - Fee Related
- 2006-06-08 US US12/084,495 patent/US9052957B2/en not_active Expired - Fee Related
- 2006-06-08 WO PCT/FR2006/050535 patent/WO2007051935A1/fr active Application Filing
- 2006-06-08 EP EP06764855A patent/EP1949234A1/fr not_active Withdrawn
Non-Patent Citations (2)
Title |
---|
None * |
See also references of WO2007051935A1 * |
Also Published As
Publication number | Publication date |
---|---|
US20090327610A1 (en) | 2009-12-31 |
WO2007051935A1 (fr) | 2007-05-10 |
US9052957B2 (en) | 2015-06-09 |
FR2893156A1 (fr) | 2007-05-11 |
FR2893156B1 (fr) | 2008-02-15 |
JP5366552B2 (ja) | 2013-12-11 |
JP2009515246A (ja) | 2009-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1949234A1 (fr) | Procede et systeme de calcul intensif multitache et multiflot en temps reel | |
US11734179B2 (en) | Efficient work unit processing in a multicore system | |
EP2232368B1 (fr) | Systeme comportant une pluralite d'unites de traitement permettant d'executer des taches en parallele, en mixant le mode d'execution de type controle et le mode d'execution de type flot de donnees | |
US10671557B2 (en) | Dynamic component communication using general purpose links between respectively pooled together of like typed devices in disaggregated datacenters | |
EP2350836B1 (fr) | Dispositif pour gerer des tampons de donnees dans un espace memoire reparti sur une pluralite d'elements de memoire | |
KR20090018068A (ko) | 컴퓨팅 장치 및 컴퓨팅 장치 상에서 가상 머신을 구현하기 위한 컴퓨터 실행 가능 명령들을 저장한 컴퓨터 판독 가능 매체 | |
CN114424172B (zh) | 虚拟存储器元数据管理 | |
JP2023538938A (ja) | 共用可能なアプリケーションスナップショットの為のコンパイル化戦略 | |
Healy et al. | Single system image: A survey | |
US10802988B2 (en) | Dynamic memory-based communication in disaggregated datacenters | |
Pemberton et al. | Kernel-as-a-service: A serverless interface to gpus | |
US10409762B2 (en) | Remote direct memory access-based on static analysis of asynchronous blocks | |
Wrede et al. | Simultaneous CPU–GPU execution of data parallel algorithmic skeletons | |
US11650849B2 (en) | Efficient component communication through accelerator switching in disaggregated datacenters | |
US11163713B2 (en) | Efficient component communication through protocol switching in disaggregated datacenters | |
US10915493B2 (en) | Component building blocks and optimized compositions thereof in disaggregated datacenters | |
JP2022531452A (ja) | コンテナ画像の動的分散 | |
Brodowicz et al. | A non von neumann continuum computer architecture for scalability beyond Moore's law | |
US20240134698A1 (en) | Serverless computing using resource multiplexing | |
US20240231925A9 (en) | Serverless computing using resource multiplexing | |
Hong | GPU-enabled Functional-as-a-Service | |
Henry et al. | SOCL: An OpenCL Implementation with Automatic Multi-Device Adaptation Support | |
Schirmer | Parallel Architecture Hardware and General Purpose Operating System Co-design | |
Vergilio et al. | Non-Functional Requirements for Real World Big Data Systems | |
Krzyzanowski | A taxonomy of distributed systems |
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: 20080526 |
|
AK | Designated contracting states |
Kind code of ref document: A1 Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LI LT LU LV MC NL PL PT RO SE SI SK TR |
|
RIN1 | Information on inventor provided before grant (corrected) |
Inventor name: DAVID, RAPHAEL Inventor name: DAVID, VINCENT Inventor name: VENTROUX, NICOLAS Inventor name: COLLETTE, THIERRY |
|
17Q | First examination report despatched |
Effective date: 20090409 |
|
RAP1 | Party data changed (applicant data changed or rights of an application transferred) |
Owner name: COMMISSARIAT A L'ENERGIE ATOMIQUE ET AUX ENERGIES |
|
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: THE APPLICATION IS DEEMED TO BE WITHDRAWN |
|
18D | Application deemed to be withdrawn |
Effective date: 20180424 |