integrated wcet estimation of multicore applications
play

INTEGRATED WCET ESTIMATION OF MULTICORE APPLICATIONS Dumitru - PowerPoint PPT Presentation

1 INTEGRATED WCET ESTIMATION OF MULTICORE APPLICATIONS Dumitru Potop-Butucaru, Isabelle Puaut Motivation: Scalable timing analysis 2 Real-time systems: complexity steadily increases Hardware: Multi-core, networks-on-chips Software:


  1. 1 INTEGRATED WCET ESTIMATION OF MULTICORE APPLICATIONS Dumitru Potop-Butucaru, Isabelle Puaut

  2. Motivation: Scalable timing analysis 2  Real-time systems: complexity steadily increases  Hardware: Multi-core, networks-on-chips  Software: Parallel/concurrent software  Safety margins used in practice after schedulability analysis are already enormous (40%-60%)  Further static abstraction is not a solution  How to preserve both tractability and precision?  Probabilistic approaches (another form of abstraction), or  Use « WCET-friendly » hardware and software  Limit/control timing interferences due to concurrency  Static (off-line) scheduling, non-preemptive, etc.  No shared caches, LRU caches, time-triggered execution, etc.

  3. Static timing analysis 3  3 basic sources of imprecision:  Application-related:  Input arrival dates, data-dependent behavior  Mapping-related:  Concurrency (pipelining, buses, scheduling)  Analysis-related:  Abstraction (e.g. IPET, real-time calculus, etc.)  Our thesis: Few sources of imprecision in the application and mapping allow for scalable, precise analysis

  4. Reducing imprecision 4  Everybody is doing it (to a point)  Industry: Space & time partitioning (among others)  Time-triggered standards: TTA, ARINC 653  Recent many-core chips: TilePro64, Kalray MPPA256, etc.  Research:  Precision timed architectures (PRET) – Lee, etc.  CompSoC, Aethereal, etc.  Off-line scheduling – Fohler, Eles, Sorel, etc.  But we do it all the way:  Remove all application- and mapping-related imprecision sources that are not handled by classical WCET analysis  Possibly add some back later on (future work)  This paper: see that it’s possible and determine the gain

  5. Djemal et al., DASIP 2012 Tiled MPSoC architecture Based on SoCLib (UPMC/LIP6) 5 Command RAM/ROM Lock unit router Multi- Prog. bank RAM Local interconnect (crossbar) NIC Cache n (PLRU, Cache n (LRU, write-through) Buffered write-through) DMA I/O  Multi-bank RAM CPU n (option) CPU n Response (MIPS32) (MIPS32)  Harvard-like architecture router  Full crossbar intra-tile interconnect  Hardware locks for synchronization (not interrupts)  Static routing (X-first)

  6. Tiled MPSoC architecture 6 Command RAM/ROM Lock unit router West East Multi- Prog. bank RAM Local interconnect (crossbar) NIC Cache n (LRU, Buffered Local South write-back) DMA I/O (option) CPU n Response (MIPS32) router  Provide timing guarantees for inter-tile communications  Use of locks, programmed arbitration (others do TDMA or other types of resource reservation)  Tool limitation: 1CPU/tile

  7. Tiled MPSoC applications 7  On each processor, sequential code  Non-preemptive, off-line scheduling  Synchronization by blocking send/recv operations  Lossless FIFOs  A.k.a. Kahn process networks (G. Kahn, 1974)  No concurrent access to RAM banks, DMA units, NoC router outputs  Data allocation on memory banks, use of locks to enforce a predefined schedule  Tool limitations  Sampled I/O only  Send/recv primitives are explicitly matched  Send/recv only at top level (global loop), non-conditioned

  8. Tiled MPSoC applications (example) 8 ¡ const ¡int ¡decis_levl ¡[30]; ¡ void ¡core1() ¡{ ¡ int ¡core2() ¡{ ¡ ¡ ¡int ¡tqmf[24]; ¡long ¡xa, ¡xb, ¡el; ¡ ¡ ¡ ¡int ¡q,el; ¡ ¡ ¡int ¡xin1, ¡xin2, ¡decis_levl; ¡ ¡ ¡ ¡for(;;) ¡{ ¡//Infinite ¡loop ¡ ¡ ¡ ¡for(;;) ¡{//Infinite ¡loop ¡ ¡ ¡ ¡ ¡xa ¡= ¡0; ¡xb ¡= ¡0; ¡ ¡ ¡ ¡ ¡ ¡for ¡(i=0;i<12;i++) ¡{ ¡// ¡12 ¡iterations ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡xa ¡+= ¡(long) ¡tqmf[2*i]*h[2*i]; ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡xb ¡+= ¡(long) ¡tqmf[2*i+1]*h[2*i+1]; ¡ ¡ ¡ ¡ ¡ ¡} ¡ ¡ ¡ ¡ ¡ ¡send(channel1,(int)((xa+xb)>>15)); ¡ ¡ ¡ ¡ ¡ ¡el ¡= ¡receive(channel1); ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡xin1=read_input(); ¡xin2=read_input(); ¡ ¡ ¡ ¡ ¡el ¡= ¡(el>=0)?el:(-­‑el); ¡ ¡ ¡ ¡ ¡for(i=23;i>=2;i-­‑-­‑) ¡{ ¡// ¡22 ¡iterations ¡ ¡ ¡ ¡ ¡for ¡(q ¡= ¡0; ¡q ¡< ¡30; ¡q++) ¡{ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡tqmf[i]=tqmf[i-­‑2]; ¡ ¡ ¡ ¡ ¡ ¡ ¡// ¡30 ¡iterations ¡ ¡ ¡ ¡ ¡} ¡ ¡ ¡ ¡ ¡ ¡ ¡if ¡(el ¡<= ¡decis_levl[q]) ¡ ¡ ¡ ¡ ¡ ¡tqmf[1] ¡= ¡xin1; ¡tqmf[0] ¡= ¡xin2; ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡break; ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡} ¡ ¡ ¡ ¡ ¡decis_levl ¡= ¡receive(channel2) ¡; ¡ ¡ ¡ ¡ ¡ ¡send(channel2,decis_levl) ¡; ¡ ¡ ¡ ¡ ¡write_output(decis_levl) ¡; ¡ ¡ ¡ ¡} ¡ ¡ ¡} ¡ } ¡ } ¡

  9. Traditional timing analysis 9 ¡ const ¡int ¡decis_levl ¡[30]; ¡ void ¡core1() ¡{ ¡ int ¡core2() ¡{ ¡ ¡ ¡int ¡tqmf[24]; ¡long ¡xa, ¡xb, ¡el; ¡ ¡ ¡ ¡int ¡q,el; ¡ ¡ ¡int ¡xin1, ¡xin2, ¡decis_levl; ¡ ¡ ¡ ¡for(;;) ¡{ ¡//Infinite ¡loop ¡ ¡ ¡ ¡for(;;) ¡{//Infinite ¡loop ¡ ¡ ¡ ¡ ¡xa ¡= ¡0; ¡xb ¡= ¡0; ¡ ¡ ¡ ¡ ¡ ¡for ¡(i=0;i<12;i++) ¡{ ¡// ¡12 ¡iterations ¡ ¡ Task1_1 ¡ ¡ ¡ ¡ ¡ ¡xa ¡+= ¡(long) ¡tqmf[2*i]*h[2*i]; ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡xb ¡+= ¡(long) ¡tqmf[2*i+1]*h[2*i+1]; ¡ ¡ ¡ ¡ ¡ ¡} ¡ ¡ ¡ ¡ ¡ ¡send(channel1,(int)((xa+xb)>>15)); ¡ ¡ ¡ ¡ ¡ ¡el ¡= ¡receive(channel1); ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡xin1=read_input(); ¡xin2=read_input(); ¡ ¡ ¡ ¡ ¡el ¡= ¡(el>=0)?el:(-­‑el); ¡ ¡ ¡ ¡ ¡for(i=23;i>=2;i-­‑-­‑) ¡{ ¡// ¡22 ¡iterations ¡ ¡ ¡ ¡ ¡for ¡(q ¡= ¡0; ¡q ¡< ¡30; ¡q++) ¡{ ¡ ¡ Task1_2 Task2_1 ¡ ¡ ¡ ¡ ¡ ¡tqmf[i]=tqmf[i-­‑2]; ¡ ¡ ¡ ¡ ¡ ¡ ¡// ¡30 ¡iterations ¡ ¡ ¡ ¡ ¡} ¡ ¡ ¡ ¡ ¡ ¡ ¡if ¡(el ¡<= ¡decis_levl[q]) ¡ ¡ ¡ ¡ ¡ ¡tqmf[1] ¡= ¡xin1; ¡tqmf[0] ¡= ¡xin2; ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡break; ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡} ¡ ¡ ¡ ¡ ¡decis_levl ¡= ¡receive(channel2) ¡; ¡ ¡ ¡ ¡ ¡ ¡send(channel2,decis_levl) ¡; ¡ ¡ ¡ ¡ ¡write_output(decis_levl) ¡; ¡ ¡ Task1_3 ¡ ¡} ¡ ¡ ¡} ¡ } ¡ } ¡

  10. Traditional timing analysis 10 Task1_1 Task1_2 Task2_1 Task1_3

  11. Traditional timing analysis 11 Task1_1 WCET1_1 Task1_2 WCET1_2 Task2_1 WCET2_1 WCET1_3 Task1_3

  12. Traditional timing analysis 12 Application latency Task1_1 WCET1_1 Task1_2 WCET1_2 Task2_1 WCET2_1 WCET1_3 Task1_3

  13. Traditional timing analysis 13 Application latency Task1_1 WCET1_1 Task1_2 WCET1_2 Task2_1 WCET2_1 Safety considerations when analyzing subtasks  WCET_i_j are overestimated WCET1_3 Task1_3 Glue code between tasks is not considered  Margins must be added to WCET_i_j

  14. Unified timing analysis 14 ¡ const ¡int ¡decis_levl ¡[30]; ¡ void ¡core1() ¡{ ¡ int ¡core2() ¡{ ¡ ¡ ¡int ¡tqmf[24]; ¡long ¡xa, ¡xb, ¡el; ¡ ¡ ¡ ¡int ¡q,el; ¡ ¡ ¡int ¡xin1, ¡xin2, ¡decis_levl; ¡ ¡ ¡ ¡for(;;) ¡{ ¡//Infinite ¡loop ¡ ¡ ¡ ¡for(;;) ¡{//Infinite ¡loop ¡ ¡ ¡ ¡ ¡xa ¡= ¡0; ¡xb ¡= ¡0; ¡ ¡ ¡ ¡ ¡ ¡for ¡(i=0;i<12;i++) ¡{ ¡// ¡12 ¡iterations ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡xa ¡+= ¡(long) ¡tqmf[2*i]*h[2*i]; ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡xb ¡+= ¡(long) ¡tqmf[2*i+1]*h[2*i+1]; ¡ ¡ ¡ ¡ ¡ ¡} ¡ ¡ ¡ ¡ ¡ ¡send(channel1,(int)((xa+xb)>>15)); ¡ ¡ ¡ ¡ ¡ ¡el ¡= ¡receive(channel1); ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡xin1=read_input(); ¡xin2=read_input(); ¡ ¡ ¡ ¡ ¡el ¡= ¡(el>=0)?el:(-­‑el); ¡ ¡ ¡ ¡ ¡for(i=23;i>=2;i-­‑-­‑) ¡{ ¡// ¡22 ¡iterations ¡ ¡ ¡ ¡ ¡for ¡(q ¡= ¡0; ¡q ¡< ¡30; ¡q++) ¡{ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡tqmf[i]=tqmf[i-­‑2]; ¡ ¡ ¡ ¡ ¡ ¡ ¡// ¡30 ¡iterations ¡ ¡ ¡ ¡ ¡} ¡ ¡ ¡ ¡ ¡ ¡ ¡if ¡(el ¡<= ¡decis_levl[q]) ¡ ¡ ¡ ¡ ¡ ¡tqmf[1] ¡= ¡xin1; ¡tqmf[0] ¡= ¡xin2; ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡break; ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡} ¡ ¡ ¡ ¡ ¡decis_levl ¡= ¡receive(channel2) ¡; ¡ ¡ ¡ ¡ ¡ ¡send(channel2,decis_levl) ¡; ¡ ¡ ¡ ¡ ¡write_output(decis_levl) ¡; ¡ ¡ ¡ ¡} ¡ ¡ ¡} ¡ } ¡ } ¡

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend