Synchron'2008 Funchal Giovanni - Presentation Transcript
Components and abstraction
levels for system-on-chip
Giovanni Funchal
STMicroelectronics
Verimag
Synchron’2008
Introduction Simulation mechanics In practice Contributions Future work
Imagine a system…
Display
USB FM radio
PAL/NTSC TV-out
Internet radio, podcasts
16Gb Flash
Browser
256Mb RAM
WLAN
RF
MPEG4
5Mp camera Bluetooth
Internet
2Mp camera
WCDMA, GSM
MP3
E-mail
MMS/SMS
Java
Operating Maps
System GPS
Microphone
Keypad Battery
Giovanni Funchal Components and abstraction levels for system-on-chip 2
Introduction Simulation mechanics In practice Contributions Future work
…-on-chip
STMicroelectronics
Nokia N96 Nomadik STn8815
Giovanni Funchal Components and abstraction levels for system-on-chip 3
Introduction Simulation mechanics In practice Contributions Future work
Design flow
RTL model
Giovanni Funchal Components and abstraction levels for system-on-chip 4
Introduction Simulation mechanics In practice Contributions Future work
Register transfer level
Precise description of hardware
Synchronous, deterministic
Giovanni Funchal Components and abstraction levels for system-on-chip 5
Introduction Simulation mechanics In practice Contributions Future work
Design flow
RTL model Fabrication
Giovanni Funchal Components and abstraction levels for system-on-chip 6
Introduction Simulation mechanics In practice Contributions Future work
Design flow
Software
RTL model Fabrication
Giovanni Funchal Components and abstraction levels for system-on-chip 7
Introduction Simulation mechanics In practice Contributions Future work
Design flow
Too late!
Software
RTL model Fabrication
Giovanni Funchal Components and abstraction levels for system-on-chip 8
Introduction Simulation mechanics In practice Contributions Future work
Design flow
Software
RTL model Fabrication
Giovanni Funchal Components and abstraction levels for system-on-chip 9
Introduction Simulation mechanics In practice Contributions Future work
Design flow
Software
Simulator
RTL model Fabrication
Giovanni Funchal Components and abstraction levels for system-on-chip 10
Introduction Simulation mechanics In practice Contributions Future work
Design flow
Too slow!
Software
Simulator
RTL model Fabrication
Giovanni Funchal Components and abstraction levels for system-on-chip 11
Introduction Simulation mechanics In practice Contributions Future work
Design flow
Simpler, faster
Software
TLM model Simulator
RTL model Fabrication
Giovanni Funchal Components and abstraction levels for system-on-chip 12
Introduction Simulation mechanics In practice Contributions Future work
Abstraction levels
TLM models
• Early (sw dev)
• Less precise
• Fast
RTL models
• Late (hw fab)
• Precise
• Slow
Giovanni Funchal Components and abstraction levels for system-on-chip 13
Introduction Simulation mechanics In practice Contributions Future work
Transaction level modeling
Abstract transfers of data
Asynchronous, non-deterministic
Giovanni Funchal Components and abstraction levels for system-on-chip 14
Components and abstraction
levels for system-on-chip
Giovanni Funchal
STMicroelectronics
Verimag
Synchron’2008
Introduction Simulation mechanics In practice Contributions Future work
Components
Component
Target port
Initiator port
Data interface
Interrupt interf.
Giovanni Funchal Components and abstraction levels for system-on-chip 16
Introduction Simulation mechanics In practice Contributions Future work
Components
What’s inside?
Giovanni Funchal Components and abstraction levels for system-on-chip 17
Introduction Simulation mechanics In practice Contributions Future work
SystemC
• Processes (C++ code)
Ready
Running
Waiting
Giovanni Funchal Components and abstraction levels for system-on-chip 18
Introduction Simulation mechanics In practice Contributions Future work
SystemC
• Processes (C++ code)
• Events
Ready
Running
Waiting
Giovanni Funchal Components and abstraction levels for system-on-chip 19
Introduction Simulation mechanics In practice Contributions Future work
SystemC
• Processes (C++ code)
• Events
• Scheduler
Ready
Running
Waiting
Giovanni Funchal Components and abstraction levels for system-on-chip 20
Introduction Simulation mechanics In practice Contributions Future work
SystemC
• Processes (C++ code)
– wait()
• Events
• Scheduler
Ready
Running
wait()
Waiting
Giovanni Funchal Components and abstraction levels for system-on-chip 21
Introduction Simulation mechanics In practice Contributions Future work
Transactions in SystemC
void irq() {
port.irq(); …
}
Giovanni Funchal Components and abstraction levels for system-on-chip 22
Introduction Simulation mechanics In practice Contributions Future work
Transactions in SystemC
void irq() {
port.irq(); …
}
Interface function calls
Giovanni Funchal Components and abstraction levels for system-on-chip 23
Introduction Simulation mechanics In practice Contributions Future work
An example
Video Display
decoder controller
Memory
Giovanni Funchal Components and abstraction levels for system-on-chip 24
Introduction Simulation mechanics In practice Contributions Future work
Decoder: Display:
decode(image); do {
write(mem, image); x = read(flag);
write(flag, true); } while(!x);
wait(irq); img = read(mem);
display(img);
irq();
Giovanni Funchal Components and abstraction levels for system-on-chip 25
Introduction Simulation mechanics In practice Contributions Future work
Decoder: Display:
decode(image); do {
write(mem, image); x = read(flag);
write(flag, true); } while(!x);
wait(irq); img = read(mem);
display(img);
irq();
Giovanni Funchal Components and abstraction levels for system-on-chip 26
Introduction Simulation mechanics In practice Contributions Future work
Decoder: Display:
decode(image); do {
write(mem, image); x = read(flag);
write(flag, true); } while(!x);
wait(irq); img = read(mem);
display(img);
irq();
Giovanni Funchal Components and abstraction levels for system-on-chip 27
Introduction Simulation mechanics In practice Contributions Future work
Decoder: Display:
decode(image); do {
write(mem, image); x = read(flag);
write(flag, true); } while(!x);
wait(irq); img = read(mem);
display(img);
irq();
Giovanni Funchal Components and abstraction levels for system-on-chip 28
Introduction Simulation mechanics In practice Contributions Future work
Decoder: Display:
decode(image); do {
write(mem, image); x = read(flag);
write(flag, true); } while(!x);
wait(irq); img = read(mem);
display(img);
irq();
Giovanni Funchal Components and abstraction levels for system-on-chip 29
Introduction Simulation mechanics In practice Contributions Future work
Decoder: Display:
decode(image); do {
write(mem, image); x = read(flag);
write(flag, true); } while(!x);
wait(irq); img = read(mem);
display(img);
irq();
Giovanni Funchal Components and abstraction levels for system-on-chip 30
Introduction Simulation mechanics In practice Contributions Future work
yield()
• Like “wait()” but without saying what it is
waiting for
• The scheduler may choose the same
process again
Giovanni Funchal Components and abstraction levels for system-on-chip 31
Introduction Simulation mechanics In practice Contributions Future work
Decoder: Display:
decode(image); do {
write(mem, image); yield();
write(flag, true); x = read(flag);
wait(irq); yield();
} while(!x);
img = read(mem);
display(img);
irq();
Giovanni Funchal Components and abstraction levels for system-on-chip 32
Introduction Simulation mechanics In practice Contributions Future work
Decoder: Display:
decode(image); do {
write(mem, image); yield();
write(flag, true); x = read(flag);
wait(irq); } while(!x);
img = read(mem);
display(img);
irq();
Giovanni Funchal Components and abstraction levels for system-on-chip 33
Introduction Simulation mechanics In practice Contributions Future work
Decoder: Display:
decode(image); do {
write(mem, image); yield();
write(flag, true); x = read(flag);
wait(irq); } while(!x);
img = read(mem);
display(img);
irq();
Giovanni Funchal Components and abstraction levels for system-on-chip 34
Introduction Simulation mechanics In practice Contributions Future work
Decoder: Display:
decode(image); do {
write(mem, image); yield();
write(flag, true); x = read(flag);
wait(irq); } while(!x);
img = read(mem);
display(img);
irq();
Giovanni Funchal Components and abstraction levels for system-on-chip 35
Introduction Simulation mechanics In practice Contributions Future work
Decoder: Display:
decode(image); do {
write(mem, image); yield();
write(flag, true); x = read(flag);
wait(irq); } while(!x);
img = read(mem);
display(img);
irq();
Giovanni Funchal Components and abstraction levels for system-on-chip 36
Introduction Simulation mechanics In practice Contributions Future work
Observations
• “yield()”
1. Avoids livelocks by possibly giving other
processes a chance to run
2. Finds bugs (next slides)
Giovanni Funchal Components and abstraction levels for system-on-chip 37
Introduction Simulation mechanics In practice Contributions Future work
Decoder: Display:
decode(image); do {
write(mem, image); yield();
write(flag, true); x = read(flag);
wait(irq); } while(!x);
img = read(mem);
display(img);
irq();
Giovanni Funchal Components and abstraction levels for system-on-chip 38
Introduction Simulation mechanics In practice Contributions Future work
Decoder: Display:
decode(image); do {
write(flag, true); yield();
write(mem, image); x = read(flag);
wait(irq); } while(!x);
img = read(mem);
display(img);
irq();
Giovanni Funchal Components and abstraction levels for system-on-chip 39
Introduction Simulation mechanics In practice Contributions Future work
Design flow
Software
TLM model Simulator
Software
RTL model Fabrication
Giovanni Funchal Components and abstraction levels for system-on-chip 40
Introduction Simulation mechanics In practice Contributions Future work
Decoder: Display:
decode(image); do {
write(flag, true); yield();
yield(); x = read(flag);
write(mem, image); } while(!x);
wait(irq); img = read(mem);
display(img);
irq();
Giovanni Funchal Components and abstraction levels for system-on-chip 41
Introduction Simulation mechanics In practice Contributions Future work
Decoder: Display:
decode(image); do {
write(mem, image); x = read(flag);
yield(); yield();
write(flag, true); } while(!x);
wait(irq); img = read(mem);
display(img);
yield();
irq();
Giovanni Funchal Components and abstraction levels for system-on-chip 42
Introduction Simulation mechanics In practice Contributions Future work
Conclusions
• A minimum amount of yielding makes a
certain platform work
• A bit more is needed to
– make any platform work
– finding bugs
• Essential for component based approach!
Giovanni Funchal Components and abstraction levels for system-on-chip 43
Introduction Simulation mechanics In practice Contributions Future work
Approaches at ST
• TAC1
– yield() between any two accesses
– Poor performance
Giovanni Funchal Components and abstraction levels for system-on-chip 44
Introduction Simulation mechanics In practice Contributions Future work
Approaches at ST
• TAC2
– Tag addresses “synchro” ( ) or “data”
– yield() after any “synchro”
– Very good performance
Giovanni Funchal Components and abstraction levels for system-on-chip 45
Introduction Simulation mechanics In practice Contributions Future work
Decoder: Display:
decode(image); do {
write(mem, image); x = read(flag);
write(flag, true); } while(!x);
wait(irq); img = read(mem);
display(img);
irq();
Giovanni Funchal Components and abstraction levels for system-on-chip 46
Introduction Simulation mechanics In practice Contributions Future work
Decoder: Display:
decode(image); do {
write(mem, image); x = read(flag);
write(flag, true); yield();
yield(); } while(!x);
wait(irq); img = read(mem);
display(img);
irq();
Giovanni Funchal Components and abstraction levels for system-on-chip 47
Introduction Simulation mechanics In practice Contributions Future work
Decoder: Display:
decode(image); do {
write(mem, image); x = read(flag);
yield(); yield();
write(flag, true); } while(!x);
yield(); img = read(mem);
wait(irq); display(img);
yield();
irq();
Giovanni Funchal Components and abstraction levels for system-on-chip 48
Introduction Simulation mechanics In practice Contributions Future work
State-of-the-art
• TAC2.5
– Experimental results by Jérôme Cornet
– Tag addresses “synchro” ( ) or “data”
– yield()
• before and after any “synchro”
• before irq’s
Giovanni Funchal Components and abstraction levels for system-on-chip 49
Introduction Simulation mechanics In practice Contributions Future work
Decoder: Display:
decode(image); do {
write(mem, image); x = read(flag);
write(flag, true); } while(!x);
wait(irq); img = read(mem);
display(img);
irq();
Giovanni Funchal Components and abstraction levels for system-on-chip 50
Introduction Simulation mechanics In practice Contributions Future work
Decoder: Display:
decode(image); do {
write(mem, image); yield();
yield(); x = read(flag);
write(flag, true); yield();
yield(); } while(!x);
wait(irq); img = read(mem);
display(img);
yield();
irq();
Giovanni Funchal Components and abstraction levels for system-on-chip 51
Introduction Simulation mechanics In practice Contributions Future work
Memory consistency contracts
• Contract between processor and software in a
multiprocessor system
– Assume: software follows guidelines
– Guarantee: memory stays consistent
• Cache flushes, out-of-order execution,…
Giovanni Funchal Components and abstraction levels for system-on-chip 52
Introduction Simulation mechanics In practice Contributions Future work
Memory consistency contracts
• Guidelines:
access
data
synchro
Giovanni Funchal Components and abstraction levels for system-on-chip 53
Introduction Simulation mechanics In practice Contributions Future work
Memory consistency contracts
• Guidelines:
access
data
synchro
non-competing
competing
release
acquire
Giovanni Funchal Components and abstraction levels for system-on-chip 54
Introduction Simulation mechanics In practice Contributions Future work
Design flow
Seen as
specification
TLM model
Valid implementation?
RTL model Fabrication
Giovanni Funchal Components and abstraction levels for system-on-chip 55
Introduction Simulation mechanics In practice Contributions Future work
From TLM…
write write
mem flag
... true
read read read read
flag flag flag mem irq
false false true ...
Giovanni Funchal Components and abstraction levels for system-on-chip 56
Introduction Simulation mechanics In practice Contributions Future work
…to RTL
write write write
mem mem flag
... ... true
read read read read read
flag flag flag mem mem irq
false false true ... ...
Giovanni Funchal Components and abstraction levels for system-on-chip 57
Introduction Simulation mechanics In practice Contributions Future work
…to RTL
write
mem
...
write write
mem flag
... true
read read read read
flag flag flag mem irq
false false true ...
read
mem
...
Giovanni Funchal Components and abstraction levels for system-on-chip 58
Introduction Simulation mechanics In practice Contributions Future work
And from RTL…
• “happens-before” partial-order
write
mem
...
write write
mem flag
... true
read read read read
flag flag flag mem irq
false false true ...
read
mem
...
Giovanni Funchal Components and abstraction levels for system-on-chip 59
Introduction Simulation mechanics In practice Contributions Future work
Back to TLM…
write write
mem flag
... true
read read read read
flag flag flag mem irq
false false true ...
Giovanni Funchal Components and abstraction levels for system-on-chip 60
Introduction Simulation mechanics In practice Contributions Future work
Understand yield
• Link with “happens-before” partial-order
Decoder: Display:
decode(image); do {
write(mem, image); x = read(flag);
write(flag, true); } while(!x);
wait(irq); img = read(mem);
display(img);
irq();
Giovanni Funchal Components and abstraction levels for system-on-chip 61
Introduction Simulation mechanics In practice Contributions Future work
Future work
• Import memory consistency contracts to TLM
– Formal justification for “synchro”
– Better understanding helps placing tags
• Multi abstraction-level components
– “happens-before” order must be maintained by
valid implementations (contracts?)
Giovanni Funchal Components and abstraction levels for system-on-chip 62
Components and abstraction
levels for system-on-chip
Giovanni Funchal
STMicroelectronics
Verimag
Synchron’2008
0 comments
Post a comment