etaps 2008 budapest, hungary april 6, 2008 policies of system level pipeline modeling ed harcourt...
Post on 21-Dec-2015
232 views
TRANSCRIPT
![Page 1: ETAPS 2008 Budapest, Hungary April 6, 2008 Policies of System Level Pipeline Modeling Ed Harcourt Dept. Mathematics, Computer Science, and Statistics St.Lawrence](https://reader030.vdocument.in/reader030/viewer/2022013105/56649d6b5503460f94a4a4bf/html5/thumbnails/1.jpg)
ETAPS 2008 Budapest, Hungary April 6, 2008
Policies of System Level Pipeline Modeling
Ed HarcourtDept. Mathematics, Computer Science,
and StatisticsSt.Lawrence University
Workshop on Generative TechnologiesETAPS 2008,The European Conference on Theory and Practice of SoftwareBudapest, HungaryApril 2008
![Page 2: ETAPS 2008 Budapest, Hungary April 6, 2008 Policies of System Level Pipeline Modeling Ed Harcourt Dept. Mathematics, Computer Science, and Statistics St.Lawrence](https://reader030.vdocument.in/reader030/viewer/2022013105/56649d6b5503460f94a4a4bf/html5/thumbnails/2.jpg)
ETAPS 2008 Budapest, Hungary April 6, 2008
![Page 3: ETAPS 2008 Budapest, Hungary April 6, 2008 Policies of System Level Pipeline Modeling Ed Harcourt Dept. Mathematics, Computer Science, and Statistics St.Lawrence](https://reader030.vdocument.in/reader030/viewer/2022013105/56649d6b5503460f94a4a4bf/html5/thumbnails/3.jpg)
ETAPS 2008 Budapest, Hungary April 6, 2008
Overview
• Hardware Description Languages• SystemC, Briefly• Review Hardware Pipelining• Pipeline Policies• Reusable pipeline policy classes• Conclusions future work
![Page 4: ETAPS 2008 Budapest, Hungary April 6, 2008 Policies of System Level Pipeline Modeling Ed Harcourt Dept. Mathematics, Computer Science, and Statistics St.Lawrence](https://reader030.vdocument.in/reader030/viewer/2022013105/56649d6b5503460f94a4a4bf/html5/thumbnails/4.jpg)
ETAPS 2008 Budapest, Hungary April 6, 2008
Language Based Design• Hardware Description Languages (HDLs)• Verilog, VHDL• Discrete event simulation semantics• Circuit complexity growing exponentially• Poor abstraction mechanisms• System Design Languages
– SystemC, SystemVerilogHuman Spec
Architectural
RTL
Modeling gap[Sharad Malik]
SystemC enables …
Generic programmingGenerative programmingEmbedded DSLs
![Page 5: ETAPS 2008 Budapest, Hungary April 6, 2008 Policies of System Level Pipeline Modeling Ed Harcourt Dept. Mathematics, Computer Science, and Statistics St.Lawrence](https://reader030.vdocument.in/reader030/viewer/2022013105/56649d6b5503460f94a4a4bf/html5/thumbnails/5.jpg)
ETAPS 2008 Budapest, Hungary April 6, 2008
SystemC• C++ Library
– Block Structure, Ports– HW data types– Discrete Event Simulator– Communication/Concurrency
class Stage : public sc_module {public: sc_in<int> in; sc_out<int> out; Stage() { SC_METHOD(process); }
void process() { int v = in.read(); int tmp = f(v); out.write(tmp); }};
Stage2
Stage1
in
out
in
out
![Page 6: ETAPS 2008 Budapest, Hungary April 6, 2008 Policies of System Level Pipeline Modeling Ed Harcourt Dept. Mathematics, Computer Science, and Statistics St.Lawrence](https://reader030.vdocument.in/reader030/viewer/2022013105/56649d6b5503460f94a4a4bf/html5/thumbnails/6.jpg)
ETAPS 2008 Budapest, Hungary April 6, 2008
Hardware Pipelining2x2 + 4x - 7
Stage<F1> s1; Stage<F2> s2; Stage<F3> s3;Pipeline p = s1 >> s2 >> s3;
Human Spec
Architectural
RTL
321
3
2
21
pipeline
7.
4.
2.
sss
xxs
xxxs
xxs
![Page 7: ETAPS 2008 Budapest, Hungary April 6, 2008 Policies of System Level Pipeline Modeling Ed Harcourt Dept. Mathematics, Computer Science, and Statistics St.Lawrence](https://reader030.vdocument.in/reader030/viewer/2022013105/56649d6b5503460f94a4a4bf/html5/thumbnails/7.jpg)
ETAPS 2008 Budapest, Hungary April 6, 2008
Complex Pipelines
s1 s2 s3
Pipeline p1 = s1 >> s2 >> s3 >> s3;
Pipeline p2 = s1 >> s2 >> s3*2;
Pipeline p3 = s1 >> s2 >> s3 >> s1 >> s3*2 >> s1 >> s2;
p3 t1 t2 t3 t4 t5 t6 t7 t8
s1 X X X
s2 X X
s3 X X X
c1 c2 c3 c4
![Page 8: ETAPS 2008 Budapest, Hungary April 6, 2008 Policies of System Level Pipeline Modeling Ed Harcourt Dept. Mathematics, Computer Science, and Statistics St.Lawrence](https://reader030.vdocument.in/reader030/viewer/2022013105/56649d6b5503460f94a4a4bf/html5/thumbnails/8.jpg)
ETAPS 2008 Budapest, Hungary April 6, 2008
Policies for Modeling Pipelines
• Properties of Pipelines– Transaction– Route– Concurrency model– Communication model
• Properties of Stages – Function– Delay model
s1 s2 s3
![Page 9: ETAPS 2008 Budapest, Hungary April 6, 2008 Policies of System Level Pipeline Modeling Ed Harcourt Dept. Mathematics, Computer Science, and Statistics St.Lawrence](https://reader030.vdocument.in/reader030/viewer/2022013105/56649d6b5503460f94a4a4bf/html5/thumbnails/9.jpg)
ETAPS 2008 Budapest, Hungary April 6, 2008
class Stage1 : public sc_module {public: sc_fifo_in<Transaction *> in; sc_fifo_out<Transaction *> out;
Stage() { SC_THREAD(process); }
void process() { while (1) { Transaction * t = in.read(); t->data = t->data + 2 * sqr(t->orig); ::wait(1, SC_NS); t->advance(); out.write(t); } }};
Policies for Stages
s1 s2 s3
Communication
Concurrency
FunctionDelay Model
![Page 10: ETAPS 2008 Budapest, Hungary April 6, 2008 Policies of System Level Pipeline Modeling Ed Harcourt Dept. Mathematics, Computer Science, and Statistics St.Lawrence](https://reader030.vdocument.in/reader030/viewer/2022013105/56649d6b5503460f94a4a4bf/html5/thumbnails/10.jpg)
ETAPS 2008 Budapest, Hungary April 6, 2008
Generic Stagetemplate <class Transaction, class Function, class DelayModel, class PortInterface, class ConcurrencyModel>class Stage : public sc_module, public Function, public DelayModel, public PortInterface, public RunInterface {
Stage() { SC_THREAD(process); }
void run() { Transaction * t = in.read(); t->data = f(t->data); delay(1); t->advance(); out.write(t); } void process() { ConcurrencyModel::run(this); }};
![Page 11: ETAPS 2008 Budapest, Hungary April 6, 2008 Policies of System Level Pipeline Modeling Ed Harcourt Dept. Mathematics, Computer Science, and Statistics St.Lawrence](https://reader030.vdocument.in/reader030/viewer/2022013105/56649d6b5503460f94a4a4bf/html5/thumbnails/11.jpg)
ETAPS 2008 Budapest, Hungary April 6, 2008
Example Policy Classestemplate <typename T>struct Transaction { T data; void advance() { curr++; } private: static Route *r; Route::iterator curr;};
template<typename T>struct S1Func { static inline T f(T p) { … } };
struct TimedPolicy { static void delay(int x) { wait(x, SC_NS); }};struct UntimedPolicy { static void delay(int) { }};
template< class Transaction, template <class> class InPort, template <class> class OutPort >struct PortInterface { InPort<Transaction *> in; OutPort<Transaction *> out; };
struct Threading { static void run( RunInterface *r) { while(1) r->run(); }};
struct Method { static void run( RunInterface *r) { r->run(); }};
![Page 12: ETAPS 2008 Budapest, Hungary April 6, 2008 Policies of System Level Pipeline Modeling Ed Harcourt Dept. Mathematics, Computer Science, and Statistics St.Lawrence](https://reader030.vdocument.in/reader030/viewer/2022013105/56649d6b5503460f94a4a4bf/html5/thumbnails/12.jpg)
ETAPS 2008 Budapest, Hungary April 6, 2008
Controllers
• Transaction routers• Transactions keep track of location• Controllers have
– arbitrary number input/output ports– routing table
• Route transactions to next stage
s1 s2 s3c1 c2 c3 c4
![Page 13: ETAPS 2008 Budapest, Hungary April 6, 2008 Policies of System Level Pipeline Modeling Ed Harcourt Dept. Mathematics, Computer Science, and Statistics St.Lawrence](https://reader030.vdocument.in/reader030/viewer/2022013105/56649d6b5503460f94a4a4bf/html5/thumbnails/13.jpg)
ETAPS 2008 Budapest, Hungary April 6, 2008
ElaborationPipeline p3 = s1 >> s2 >> s3 >> s1 >> s3*2 >> s1 >> s2;
s1 s2 s3c1 c2 c3 c4
Elaboration
• Depth-first the AST for the pipeline expression• If encounter a new stage
• Instantiate stage• Instantiate controllers if necessary• Instantiate channels (FIFOs or wires), update map
• If stage is already instantiated• Instantiate channel, update map
![Page 14: ETAPS 2008 Budapest, Hungary April 6, 2008 Policies of System Level Pipeline Modeling Ed Harcourt Dept. Mathematics, Computer Science, and Statistics St.Lawrence](https://reader030.vdocument.in/reader030/viewer/2022013105/56649d6b5503460f94a4a4bf/html5/thumbnails/14.jpg)
ETAPS 2008 Budapest, Hungary April 6, 2008
Putting it all togethertypedef pair<double,double> Data;
typedef Transaction<Data> MyTransaction;
typedef PortInterface< MyTransaction, sc_fifo_in, sc_fifo_out> FIFOInterface;
Stage<MyTransaction, S1Func<Data>, TimedPolicy, FIFOInterface, Threading> s1;
Stage<MyTransaction, S2Func<Data>, TimedPolicy, FIFOInterface, Threading> s2;
Stage<MyTransaction, S3Func<Data>, TimedPolicy, FIFOInterface, Threading> s3;
Pipeline p = s1 >> s2 >> s3*3 >> s1 >> s3;
![Page 15: ETAPS 2008 Budapest, Hungary April 6, 2008 Policies of System Level Pipeline Modeling Ed Harcourt Dept. Mathematics, Computer Science, and Statistics St.Lawrence](https://reader030.vdocument.in/reader030/viewer/2022013105/56649d6b5503460f94a4a4bf/html5/thumbnails/15.jpg)
ETAPS 2008 Budapest, Hungary April 6, 2008
Conclusions and Future Work
• Generic/Generative programming +– Modeling gap
• C++ expertise• Prototype more complex pipelines• Use lambda library for function• Beef up the pipeline expression language
– Handle dynamic pipelines– Multi-function pipelines
• Lots of clean up – redundant template parameters– More compile time genericity