1 / 15

EmBounded Report on AbsInt’s Contributions

EmBounded Report on AbsInt’s Contributions. WCET Analyzer aiT. Input: Executable Specifications in AIS language Output now: Control-flow graph with WCET annotations Report file with addresses of memory accesses and WCET information Goal: Integration into Hume compiler.

chaney
Télécharger la présentation

EmBounded Report on AbsInt’s Contributions

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. EmBoundedReport on AbsInt’s Contributions

  2. WCET Analyzer aiT • Input: • Executable • Specifications in AIS language • Output now: • Control-flow graph with WCET annotations • Report file with addresses of memory accesses and WCET information • Goal: Integration into Hume compiler

  3. Extension of aiT for M32 • Support of executables in .X30 format • Value analysis • Bounds for register-dependent loop instructions • Extension of the AIS specification language • First experiences with output of Hume compiler

  4. X30 Executables • Originally, aiT for M32 could only read .elf executables • Now it can also read .X30 executables • Data sections in .X30 executables are better marked than in .elf executables

  5. Value Analysis • Value analysis tries to find lower and upper bounds for the values in the registers and memory cells • Value analysis for M32 was implemented during the EmBounded project

  6. Usage of Value Analysis The results of value analysis are used to get • Addresses of memory accesses • Important in case of different memory areas with different access times • Infeasibility information • If conditions evaluate always to true or always to false, the other successor need not be analyzed further • Upper bounds for the iteration numbers of simple loops

  7. Looping Instructions • Certain M32 instructions perform a data-dependent loop when executed. • rmpa, sinb, smovb, smovf, sout, and sstr:the number of loop iterations is given by the contents of register R3. • Value analysis can find loop bounds for these instructions. • smovu and scmpu iterate through the memory till they find a zero-byte. • aiT does not determine the iteration counts for any of these two instructions. Hence, all these instructions require a user annotation.

  8. AIS Annotations Generally important annotations: • INSTRUCTION … CALLS …;INSTRUCTION … BRANCHES TO …; • LOOP ProgramPoint Qualifier Bounds ; • loop “R” + 10 bytes end max 10; • loop “R” + 2 loops begin exactly 20; • RECURSION "name" Bounds ; • recursion “_cmpPrim” max 8;

  9. Annotations specific to M32 • Memory map is fixed apart from • End of Internal RAM Block A starting at 0x000400:global "XXXXXX" = address ; • Beginning of Internal RAM Block B ending at 0xFFFFFF:global "YYYYYY" = address ; • Declaration of external bus areas:AREA FROM … TO … ACCESS TIME = …; • area from 0x80a000 to 0xcfffff access time = 3;

  10. Annotations specific to M32 (cont.) • For instructions performing data-dependent loops:INSTRUCTION … FEATURES transfer_count = … ; • instruction “R” + 10 bytes features transfer_count = 5; • Always necessary for smovu and scmpu that loop till a zero-byte is found. • Necessary for rmpa, sinb, smovb, smovf, sout, and sstr, which depend on R3, if value of R3 is not found by value analysis.

  11. Experiences with code from Hume Example: Simple Simon translated from Hume to C and then further to M32 • Globally complicated control flow • Setjmp/longjmp • Many annotations required (from compiler) • Recursion needing recursion bounds • _cmpPrim (compares two structures recursively) • _throwException  _mkTup  _throwException • _throwException  _setException  _mkCon  _throwE. • Many loops requiring loop bounds

  12. Experience with Small Snippets In presence ofsnippet "_throwException" is never executed; many routines can be analyzed: • _mkBool, _mkCon, _mkInt, _mkTup • _output, _setException, _setHeap, … Result: WCET under the assumption that no exceptions occur.

  13. To do now • How to compute global WCET

  14. email: info@AbsInt.com http://www.AbsInt.com

More Related