Embedded Computer Systems Chapter5: Program design and analysis Eng. Husam Y. Alzaq Islamic...
-
date post
21-Dec-2015 -
Category
Documents
-
view
216 -
download
2
Transcript of Embedded Computer Systems Chapter5: Program design and analysis Eng. Husam Y. Alzaq Islamic...
![Page 1: Embedded Computer Systems Chapter5: Program design and analysis Eng. Husam Y. Alzaq Islamic University of Gaza 1 © 2010 Husam Alzaq Computers as Components.](https://reader036.fdocuments.in/reader036/viewer/2022070323/56649d595503460f94a38f1f/html5/thumbnails/1.jpg)
Embedded Computer Systems
Chapter5: Program design and
analysisEng. Husam Y. Alzaq
Islamic University of Gaza
1© 2010 Husam Alzaq
Computers as Components
![Page 2: Embedded Computer Systems Chapter5: Program design and analysis Eng. Husam Y. Alzaq Islamic University of Gaza 1 © 2010 Husam Alzaq Computers as Components.](https://reader036.fdocuments.in/reader036/viewer/2022070323/56649d595503460f94a38f1f/html5/thumbnails/2.jpg)
Program design and analysis
Software components.Representations of programs.Assembly and linking.
2© 2010 Husam Alzaq Computers as Components
![Page 3: Embedded Computer Systems Chapter5: Program design and analysis Eng. Husam Y. Alzaq Islamic University of Gaza 1 © 2010 Husam Alzaq Computers as Components.](https://reader036.fdocuments.in/reader036/viewer/2022070323/56649d595503460f94a38f1f/html5/thumbnails/3.jpg)
Software state machine
State machine keeps internal state as a variable, changes state based on inputs.
Uses: control-dominated code; reactive systems.
3© 2010 Husam Alzaq Computers as Components
![Page 4: Embedded Computer Systems Chapter5: Program design and analysis Eng. Husam Y. Alzaq Islamic University of Gaza 1 © 2010 Husam Alzaq Computers as Components.](https://reader036.fdocuments.in/reader036/viewer/2022070323/56649d595503460f94a38f1f/html5/thumbnails/4.jpg)
State machine example
idle
buzzer seated
belted
no seat/-
seat/timer on
no beltand notimer/-
no belt/timer on
belt/-belt/
buzzer off
Belt/buzzer on
no seat/-
no seat/buzzer off
4© 2010 Husam Alzaq Computers as Components
![Page 5: Embedded Computer Systems Chapter5: Program design and analysis Eng. Husam Y. Alzaq Islamic University of Gaza 1 © 2010 Husam Alzaq Computers as Components.](https://reader036.fdocuments.in/reader036/viewer/2022070323/56649d595503460f94a38f1f/html5/thumbnails/5.jpg)
C implementation
#define IDLE 0#define SEATED 1#define BELTED 2#define BUZZER 3switch (state) {
case IDLE: if (seat) { state = SEATED; timer_on = TRUE; }break;
case SEATED: if (belt) state = BELTED;else if (timer) state = BUZZER;
break;…
}
5© 2010 Husam Alzaq Computers as Components
![Page 6: Embedded Computer Systems Chapter5: Program design and analysis Eng. Husam Y. Alzaq Islamic University of Gaza 1 © 2010 Husam Alzaq Computers as Components.](https://reader036.fdocuments.in/reader036/viewer/2022070323/56649d595503460f94a38f1f/html5/thumbnails/6.jpg)
Signal processing and circular buffer
Commonly used in signal processing: new data constantly arrives; each datum has a limited lifetime.
Use a circular buffer to hold the data stream.
d1 d2 d3 d4 d5 d6 d7
time ttime t+1
6© 2010 Husam Alzaq Computers as Components
![Page 7: Embedded Computer Systems Chapter5: Program design and analysis Eng. Husam Y. Alzaq Islamic University of Gaza 1 © 2010 Husam Alzaq Computers as Components.](https://reader036.fdocuments.in/reader036/viewer/2022070323/56649d595503460f94a38f1f/html5/thumbnails/7.jpg)
Circular buffer
x1 x2 x3 x4 x5 x6
t1 t2 t3
Data stream
x1 x2 x3 x4
Circular buffer
x5 x6 x7
7© 2010 Husam Alzaq Computers as Components
![Page 8: Embedded Computer Systems Chapter5: Program design and analysis Eng. Husam Y. Alzaq Islamic University of Gaza 1 © 2010 Husam Alzaq Computers as Components.](https://reader036.fdocuments.in/reader036/viewer/2022070323/56649d595503460f94a38f1f/html5/thumbnails/8.jpg)
Circular buffers
Indexes locate currently used data, current input data:
d1
d2
d3
d4
time t1
use
input d5
d2
d3
d4
time t1+1
use
input
8© 2010 Husam Alzaq Computers as Components
![Page 9: Embedded Computer Systems Chapter5: Program design and analysis Eng. Husam Y. Alzaq Islamic University of Gaza 1 © 2010 Husam Alzaq Computers as Components.](https://reader036.fdocuments.in/reader036/viewer/2022070323/56649d595503460f94a38f1f/html5/thumbnails/9.jpg)
Circular buffer implementation: FIR filter
int circ_buffer[N], circ_buffer_head = 0;int c[N]; /* coefficients */…int ibuf, ic;for (f=0, ibuff=circ_buff_head, ic=0;
ic<N; ibuff=(ibuff==N-1?0:ibuff++), ic++)f = f + c[ic]*circ_buffer[ibuf];
9© 2010 Husam Alzaq Computers as Components
![Page 10: Embedded Computer Systems Chapter5: Program design and analysis Eng. Husam Y. Alzaq Islamic University of Gaza 1 © 2010 Husam Alzaq Computers as Components.](https://reader036.fdocuments.in/reader036/viewer/2022070323/56649d595503460f94a38f1f/html5/thumbnails/10.jpg)
Queues
Elastic buffer: holds data that arrives irregularly.
10© 2010 Husam Alzaq Computers as Components
![Page 11: Embedded Computer Systems Chapter5: Program design and analysis Eng. Husam Y. Alzaq Islamic University of Gaza 1 © 2010 Husam Alzaq Computers as Components.](https://reader036.fdocuments.in/reader036/viewer/2022070323/56649d595503460f94a38f1f/html5/thumbnails/11.jpg)
Buffer-based queues
#define Q_SIZE 32#define Q_MAX (Q_SIZE-1)int q[Q_MAX], head, tail;void initialize_queue() { head
= tail = 0; }void enqueue(int val) {
if (((tail+1)%Q_SIZE) == head) error();q[tail]=val;if (tail == Q_MAX) tail = 0; else tail++;
}
int dequeue() {int returnval;if (head == tail) error();returnval = q[head];if (head == Q_MAX) head = 0;
else head++;return returnval;
}
11© 2010 Husam Alzaq Computers as Components
![Page 12: Embedded Computer Systems Chapter5: Program design and analysis Eng. Husam Y. Alzaq Islamic University of Gaza 1 © 2010 Husam Alzaq Computers as Components.](https://reader036.fdocuments.in/reader036/viewer/2022070323/56649d595503460f94a38f1f/html5/thumbnails/12.jpg)
Models of programs
Source code is not a good representation for programs: clumsy; leaves much information implicit.
Compilers derive intermediate representations to manipulate and optiize the program.
12© 2010 Husam Alzaq Computers as Components
![Page 13: Embedded Computer Systems Chapter5: Program design and analysis Eng. Husam Y. Alzaq Islamic University of Gaza 1 © 2010 Husam Alzaq Computers as Components.](https://reader036.fdocuments.in/reader036/viewer/2022070323/56649d595503460f94a38f1f/html5/thumbnails/13.jpg)
Data flow graph
DFG: data flow graph.Does not represent control.Models basic block: code with no
entry or exit.Describes the minimal ordering
requirements on operations.
13© 2010 Husam Alzaq Computers as Components
![Page 14: Embedded Computer Systems Chapter5: Program design and analysis Eng. Husam Y. Alzaq Islamic University of Gaza 1 © 2010 Husam Alzaq Computers as Components.](https://reader036.fdocuments.in/reader036/viewer/2022070323/56649d595503460f94a38f1f/html5/thumbnails/14.jpg)
Single assignment form
x = a + b;y = c - d;z = x * y;y = b + d;
original basic block
x = a + b;y = c - d;z = x * y;y1 = b + d;
single assignment form
14© 2010 Husam Alzaq Computers as Components
![Page 15: Embedded Computer Systems Chapter5: Program design and analysis Eng. Husam Y. Alzaq Islamic University of Gaza 1 © 2010 Husam Alzaq Computers as Components.](https://reader036.fdocuments.in/reader036/viewer/2022070323/56649d595503460f94a38f1f/html5/thumbnails/15.jpg)
Data flow graph
x = a + b;y = c - d;z = x * y;y1 = b + d;
single assignment form
+ -
+*
DFG
a b c d
z
xy
y1
15© 2010 Husam Alzaq Computers as Components
![Page 16: Embedded Computer Systems Chapter5: Program design and analysis Eng. Husam Y. Alzaq Islamic University of Gaza 1 © 2010 Husam Alzaq Computers as Components.](https://reader036.fdocuments.in/reader036/viewer/2022070323/56649d595503460f94a38f1f/html5/thumbnails/16.jpg)
DFGs and partial orders
Partial order:a+b, c-d; b+d and
x*y Can do pairs of operations in any order.
+ -
+*
a b c d
z
xy
y1
16© 2010 Husam Alzaq Computers as Components
![Page 17: Embedded Computer Systems Chapter5: Program design and analysis Eng. Husam Y. Alzaq Islamic University of Gaza 1 © 2010 Husam Alzaq Computers as Components.](https://reader036.fdocuments.in/reader036/viewer/2022070323/56649d595503460f94a38f1f/html5/thumbnails/17.jpg)
© 2010 Husam Alzaq Computers as Components
Control-data flow graph
CDFG: represents control and data.Uses data flow graphs as
components.Two types of nodes:
decision; data flow.
17
![Page 18: Embedded Computer Systems Chapter5: Program design and analysis Eng. Husam Y. Alzaq Islamic University of Gaza 1 © 2010 Husam Alzaq Computers as Components.](https://reader036.fdocuments.in/reader036/viewer/2022070323/56649d595503460f94a38f1f/html5/thumbnails/18.jpg)
© 2010 Husam Alzaq Computers as Components
Data flow node
Encapsulates a data flow graph:
Write operations in basic block form for simplicity.
x = a + b;y = c + d
18
![Page 19: Embedded Computer Systems Chapter5: Program design and analysis Eng. Husam Y. Alzaq Islamic University of Gaza 1 © 2010 Husam Alzaq Computers as Components.](https://reader036.fdocuments.in/reader036/viewer/2022070323/56649d595503460f94a38f1f/html5/thumbnails/19.jpg)
© 2010 Husam Alzaq Computers as Components
Control
condT
F
Equivalent forms
valuev1
v2 v3
v4
19
![Page 20: Embedded Computer Systems Chapter5: Program design and analysis Eng. Husam Y. Alzaq Islamic University of Gaza 1 © 2010 Husam Alzaq Computers as Components.](https://reader036.fdocuments.in/reader036/viewer/2022070323/56649d595503460f94a38f1f/html5/thumbnails/20.jpg)
CDFG example
if (cond1) bb1(); else bb2();bb3();switch (test1) {
case c1: bb4(); break;case c2: bb5(); break;case c3: bb6(); break;
}
cond1 bb1()
bb2()
bb3()
bb4()
test1
bb5() bb6()
T
F
c1
c2
c3
20© 2010 Husam Alzaq Computers as Components
![Page 21: Embedded Computer Systems Chapter5: Program design and analysis Eng. Husam Y. Alzaq Islamic University of Gaza 1 © 2010 Husam Alzaq Computers as Components.](https://reader036.fdocuments.in/reader036/viewer/2022070323/56649d595503460f94a38f1f/html5/thumbnails/21.jpg)
for loop
for (i=0; i<N; i++)loop_body();
for loop
i=0;while (i<N) {
loop_body(); i++; }equivalent
i<N
loop_body()
T
F
i=0
21© 2010 Husam Alzaq Computers as Components
![Page 22: Embedded Computer Systems Chapter5: Program design and analysis Eng. Husam Y. Alzaq Islamic University of Gaza 1 © 2010 Husam Alzaq Computers as Components.](https://reader036.fdocuments.in/reader036/viewer/2022070323/56649d595503460f94a38f1f/html5/thumbnails/22.jpg)
Assembly and linking
Last steps in compilation:
HLL compile assembly assembleHLLHLL assemblyassembly
linkexecutablelink
22© 2010 Husam Alzaq Computers as Components
![Page 23: Embedded Computer Systems Chapter5: Program design and analysis Eng. Husam Y. Alzaq Islamic University of Gaza 1 © 2010 Husam Alzaq Computers as Components.](https://reader036.fdocuments.in/reader036/viewer/2022070323/56649d595503460f94a38f1f/html5/thumbnails/23.jpg)
Multiple-module programs
Programs may be composed from several files.
Addresses become more specific during processing: relative addresses are measured relative
to the start of a module; absolute addresses are measured relative
to the start of the CPU address space.
23© 2010 Husam Alzaq Computers as Components
![Page 24: Embedded Computer Systems Chapter5: Program design and analysis Eng. Husam Y. Alzaq Islamic University of Gaza 1 © 2010 Husam Alzaq Computers as Components.](https://reader036.fdocuments.in/reader036/viewer/2022070323/56649d595503460f94a38f1f/html5/thumbnails/24.jpg)
Assemblers
Major tasks: generate binary for symbolic instructions; translate labels into addresses; handle pseudo-ops (data, etc.).
Generally one-to-one translation.Assembly labels:
ORG 100label1 ADR r4,c
24© 2010 Husam Alzaq Computers as Components
![Page 25: Embedded Computer Systems Chapter5: Program design and analysis Eng. Husam Y. Alzaq Islamic University of Gaza 1 © 2010 Husam Alzaq Computers as Components.](https://reader036.fdocuments.in/reader036/viewer/2022070323/56649d595503460f94a38f1f/html5/thumbnails/25.jpg)
Symbol table
ADD r0,r1,r2xx ADD r3,r4,r5
CMP r0,r3yy SUB r5,r6,r7
assembly code
xx 0x8yy 0x10
symbol table
25© 2010 Husam Alzaq Computers as Components
![Page 26: Embedded Computer Systems Chapter5: Program design and analysis Eng. Husam Y. Alzaq Islamic University of Gaza 1 © 2010 Husam Alzaq Computers as Components.](https://reader036.fdocuments.in/reader036/viewer/2022070323/56649d595503460f94a38f1f/html5/thumbnails/26.jpg)
Symbol table generation
Use program location counter (PLC) to determine address of each location.
Scan program, keeping count of PLC.Addresses are generated at
assembly time, not execution time.
26© 2010 Husam Alzaq Computers as Components
![Page 27: Embedded Computer Systems Chapter5: Program design and analysis Eng. Husam Y. Alzaq Islamic University of Gaza 1 © 2010 Husam Alzaq Computers as Components.](https://reader036.fdocuments.in/reader036/viewer/2022070323/56649d595503460f94a38f1f/html5/thumbnails/27.jpg)
Symbol table example
ADD r0,r1,r2xx ADD r3,r4,r5
CMP r0,r3yy SUB r5,r6,r7
xx 0x8yy 0x10
27© 2010 Husam Alzaq Computers as Components
![Page 28: Embedded Computer Systems Chapter5: Program design and analysis Eng. Husam Y. Alzaq Islamic University of Gaza 1 © 2010 Husam Alzaq Computers as Components.](https://reader036.fdocuments.in/reader036/viewer/2022070323/56649d595503460f94a38f1f/html5/thumbnails/28.jpg)
Two-pass assembly
Pass 1: generate symbol table
Pass 2: generate binary instructions
28© 2010 Husam Alzaq Computers as Components
![Page 29: Embedded Computer Systems Chapter5: Program design and analysis Eng. Husam Y. Alzaq Islamic University of Gaza 1 © 2010 Husam Alzaq Computers as Components.](https://reader036.fdocuments.in/reader036/viewer/2022070323/56649d595503460f94a38f1f/html5/thumbnails/29.jpg)
Relative address generation
Some label values may not be known at assembly time.
Labels within the module may be kept in relative form.
Must keep track of external labels---can’t generate full binary for instructions that use external labels.
29© 2010 Husam Alzaq Computers as Components
![Page 30: Embedded Computer Systems Chapter5: Program design and analysis Eng. Husam Y. Alzaq Islamic University of Gaza 1 © 2010 Husam Alzaq Computers as Components.](https://reader036.fdocuments.in/reader036/viewer/2022070323/56649d595503460f94a38f1f/html5/thumbnails/30.jpg)
Pseudo-operations
Pseudo-ops do not generate instructions: ORG sets program location. EQU generates symbol table entry
without advancing PLC. Data statements define data blocks.
30© 2010 Husam Alzaq Computers as Components
![Page 31: Embedded Computer Systems Chapter5: Program design and analysis Eng. Husam Y. Alzaq Islamic University of Gaza 1 © 2010 Husam Alzaq Computers as Components.](https://reader036.fdocuments.in/reader036/viewer/2022070323/56649d595503460f94a38f1f/html5/thumbnails/31.jpg)
Linking
Combines several object modules into a single executable module.
Jobs: put modules in order; resolve labels across modules.
31© 2010 Husam Alzaq Computers as Components
![Page 32: Embedded Computer Systems Chapter5: Program design and analysis Eng. Husam Y. Alzaq Islamic University of Gaza 1 © 2010 Husam Alzaq Computers as Components.](https://reader036.fdocuments.in/reader036/viewer/2022070323/56649d595503460f94a38f1f/html5/thumbnails/32.jpg)
external reference
entry point
Externals and entry points
xxx ADD r1,r2,r3B a
yyy %1
a ADR r4,yyyADD r3,r4,r5
32© 2010 Husam Alzaq Computers as Components
![Page 33: Embedded Computer Systems Chapter5: Program design and analysis Eng. Husam Y. Alzaq Islamic University of Gaza 1 © 2010 Husam Alzaq Computers as Components.](https://reader036.fdocuments.in/reader036/viewer/2022070323/56649d595503460f94a38f1f/html5/thumbnails/33.jpg)
Module ordering
Code modules must be placed in absolute positions in the memory space.
Load map or linker flags control the order of modules.
module1
module2
module3
33© 2010 Husam Alzaq Computers as Components
![Page 34: Embedded Computer Systems Chapter5: Program design and analysis Eng. Husam Y. Alzaq Islamic University of Gaza 1 © 2010 Husam Alzaq Computers as Components.](https://reader036.fdocuments.in/reader036/viewer/2022070323/56649d595503460f94a38f1f/html5/thumbnails/34.jpg)
Dynamic linking
Some operating systems link modules dynamically at run time: shares one copy of library among all
executing programs; allows programs to be updated with
new versions of libraries.
34© 2010 Husam Alzaq Computers as Components