View
By topic
As outline
Fully expanded
Forum topics
compiler-infrastructure
arch-summaries
compiler-summaries
moc's
network-drivers
Presentations
Princeton Presentation
Simulator
Reading List
Design Examples
Architecture Discussion
Related Conferences
Downloads
DEPRECATED
DEPRECATED
Taxonomies
Articles
A Framework
|
| |
A Framework for Development of Embedded Systems - Jain, Sinha, (Malik, Kumar, Balakrishnan) Michael Shilman, 17 Sep 1999
- MPI and Pthreads are two standard C APIs for adding concurrency and communication to a program. MPI supports both blocking and non-blocking message-based communication. Pthreads is based on a shared memory model and synchronization primitives.
- SUIF provides a basic annotation facility, whereby AST nodes can be annotated with user data. Each SUIF pass generates a set of ".SPF" files and the annotations can also be serialized into these files. The ESIR is a program representation that encompasses uses SUIF annotations for embedded systems design, including comprehension of threads and processes, as well as support real-time constraint satisfaction and flexible architecture mappings.
- The estimator they have written analyzes a C program written using MPI and/or Pthreads. The user can specify a number of constraints and the estimator tries to verify that these constraints are self-consistent(?):
- rate constraints [min/max]
- timeout constraints [number]
- latency constraints [number]
- intra-process constraints [min/max]
Because loops and conditionals cause analysis problems, they add restrictions which make it illegal to create new processes/threads inside a loop or conditional. Furthermore, blocking communications are also forbidden inside loops and conditionals.
The following annotations are statically extracted from the program:
- total # of processes, list of processes
- architecture template related information (???)
- communication graph
With each process:
- pointer to its code
- its rank (for static scheduling?)
- mapping (to sw for a particular arch, or to hardware)
- code size in Kb.
- an optional VHDL file
- a thread graph (fork/join graph of threads in the process)
- lists of send-to/receive-from processes
- time period, rate at which the process is invoked (???)
Stuff that I didn't understand from giving the report a once-over-lightly:
- How exactly do the constraints interrelate and how exactly are they used?
- Are the restrictions that have been placed on the specification sufficient to perform powerful analyses? If so, are they overly restrictive on the designer?
- What from the paper is actually implemented/automated and what is just hand-waved? Its fine to say that "annotating a process with X is sufficient for Blah" but this doesn't mean that it's possible to automatically compute X or easy to perform Blah in reasonable time.
| |
|