Download - Copyright © 2001 Stephen A. Edwards All rights reserved Research Areas Stephen A. Edwards
Copyright © 2001 Stephen A. Edwards All rights reserved
Research AreasResearch Areas
Stephen A. Edwards
Copyright © 2001 Stephen A. Edwards All rights reserved
Embedded SystemsEmbedded Systems
Computers Masquerading as Something Else
Casio Camera Watch
Nokia 7110 Browser Phone
Sony Playstation 2
Philips DVD player Philips TiVo Recorder
Copyright © 2001 Stephen A. Edwards All rights reserved
Long-term GoalLong-term Goal
Developing tools to speed the development of embedded systems
Copyright © 2001 Stephen A. Edwards All rights reserved
Domain-Specific LanguagesDomain-Specific Languages
Little languages that fit the problem
More succinct description• Quicker to create• Easier to get right
More opportunities for optimization• General-purpose languages
hindered by undecidability• Domain-specific languages much
simplerM. C. Escher, Tower of
Babel
Copyright © 2001 Stephen A. Edwards All rights reserved
Real-time languages: EsterelReal-time languages: Esterel
Synchronous language developed by Gerard Berry in France
Basic idea: use global clock for synchronization in software
Challenge: How to combine concurrency, synchronization, and instantaneous communication
Big Ben
Copyright © 2001 Stephen A. Edwards All rights reserved
EsterelEsterel
every RESET doevery RESET do looploop await A;await A; emit B;emit B; if C emit D;if C emit D; pausepause endend|||| looploop if B emit C;if B emit C; pausepause endendendend
Restart when RESET present
Infinite loop
Wait for next cycle with A present
Same-cycle bidirectional
communication
Run concurrently
Copyright © 2001 Stephen A. Edwards All rights reserved
EsterelEsterel
Previous work• Compiler that gave 100x speedup on certain large
programs• Has limitations• Owned by former employer
Current Projects• New, open compiler infrastructure designed for
future research• Based on SUIF2 system
Copyright © 2001 Stephen A. Edwards All rights reserved
Esterel Compilation PlansEsterel Compilation Plans
Apply discrete-event simulation techniques
Apply Program Dependence Graph representation• Concurrent representation used in optimizing
compilers
Apply “localized partial interpretation” to expand parts of the system into finite-state machines
Techniques will point the way for other synchronous, concurrent languages
Copyright © 2001 Stephen A. Edwards All rights reserved
Languages for Device DriversLanguages for Device Drivers
Device drivers are those pieces of software that you absolutely need that never seem to work
Tedious, difficult-to-write
Ever more important as systems incorporate customized hardware
Copyright © 2001 Stephen A. Edwards All rights reserved
Best To DateBest To Date
Thibault, Marlet, and Consel
IEEE Transactions Software Engineering, 1999
Developed the Graphics Adaptor Language for writing XFree86 video card drivers
Report GAL drivers are 1/9th the size of their C counterparts
No performance penalty
Copyright © 2001 Stephen A. Edwards All rights reserved
GAL S3 driver (fragment)GAL S3 driver (fragment)
chipsets S3_911, S3_924; What driver supports
port svga index := 0x3d4; Write address, then dataport misc := 0x3cc, 0x3c2;
register ChipID := sva(0x30); Logical register
serial begin Access sequence for register misc[3..2] <= (3,- , -, -, -) W; seq(0x12) <=> (-, PLL1, -, -, -) R/W;end;
identification begin Rules for identifying card1: ChipID[7..4] => (0x8 => step 2, 0x 9 => S3_928);2: ChipID[1..0] => (0x1 => S3_911, 0x2 => S3_924);
Copyright © 2001 Stephen A. Edwards All rights reserved
Future workFuture work
Develop language for network card drivers under Linux
Study many existing implementations
Develop prototype language, compiler
Explore challenge of porting to other OSes
Apply lessons to other classes of drivers
Copyright © 2001 Stephen A. Edwards All rights reserved
Languages for Communication Protocols Languages for Communication Protocols Many optimizations for implementing protocol code
• Fast-path optimization• Collapsing layers
Tedious to implement manually
Tend to obfuscate code
Too high-level to be applied to, say, C code
Domain-specific language would allow these optimizations to be automated
Copyright © 2001 Stephen A. Edwards All rights reserved
SummarySummary
Applying domain-specific languages to solve problems in embedded system design
New Esterel infrastructure for real-time programming
Languages for device drivers: network interfaces
Languages for implementing communication protocols