Architecture: modeling and mapping - Metropolis approach -OutlineMetropolis FrameworkMetropolis meta-modelMeta-model : netlistSlide 6Slide 7Meta-model: execution semanticsExecution semanticsAction automataSlide 11Slide 12Slide 13Slide 14Slide 15Slide 16Slide 17Slide 18AwaitSemantics of awaitSemantics summaryArchitecture componentsMeta-model: architecture componentsMeta-model: quantitiesSlide 25Slide 26Quantity resolutionSlide 28Slide 29Slide 30Slide 31Slide 32Meta-model: architecture netlistMeta-model: architecture netlistSlide 35Meta-model: mapping processesSlide 37Meta-model: mapping netlistSlide 39Meta-model: platformsSlide 41Meta-model: recursive paradigm of platformsMeta-model: summarySlide 44Metropolis infrastructure architectureFormal models from the meta-modelMetropolis design environmentSlide 48SummaryArchitecture: modeling and mapping- Metropolis approach -Yoshi WatanabeCadence Berkeley Labsfor EE249 class in October 2002OutlineOutlineMetropolis meta-modelMeta-model execution semanticsArchitecture: what do we care about?MappingPlatforms: recursive paradigm of platform based designMetropolis FrameworkMetropolis FrameworkInfrastructure• Metropolis meta-model - language - modeling mechanisms• Meta-model compilerMeta-model Library• Models of computationMeta-model Library• Architecture platformsToolsSimulatorQSSPIGSTARSSPIN…MethodologiesMulti-media, wireless communication, mechanical controls, processorsMetropolis meta-modelMetropolis meta-modelConcurrent specification with a formal execution semantics:• process• port• interface• medium• netlist• constraint• quantityMeta-model : netlistMeta-model : netlistprocess P{ port reader X; port writer Y; thread(){ while(true){ ... z = f(X.read()); Y.write(z); }}}MP1XYP2XYEnv1Env2MyNetlist• thread() generates a sequence of events for the process• communication only through ports:• no global variable• no update on static fields outside yourself• a port is specified with an interface type• all and only the methods of the interface can be called through the portMeta-model : netlistMeta-model : netlistprocess P{ port reader X; port writer Y; thread(){ while(true){ ... z = f(X.read()); Y.write(z); }}}medium M implements reader, writer{ int storage; int n, space; void write(int z){ await(space>0; this.all ; this.all) n=1; space=0; storage=z; } word read(){ ... }}interface reader extends Port{ update int read(); eval int n();}interface writer extends Port{ update void write(int i); eval int space();}MP1XYP2XYEnv1Env2MyNetlistMeta-model : netlistMeta-model : netlistprocess P{ port reader X; port writer Y; thread(){ while(true){ ... z = f(X.read()); Y.write(z); }}}medium M implements reader, writer{ int storage; int n, space; void write(int z){ await(space>0; this.all ; this.all) n=1; space=0; storage=z; } word read(){ ... }}MP1XYP2XYEnv1Env2MyNetlistconstraint { B(P1, M.write) -> !B(P3, M.write) U E(P1, M.write); B(P3, M.write) -> !B(P1, M.write) U E(P3, M.write); }P3XYEnv3Meta-model: execution semanticsMeta-model: execution semantics Processes take actions.statements, function calls, function arguments, top-level expressions (e.g. assignment, conditional, RHS of an assignment):y = z+port.f();, y = z+port.f(), z+port.f(), port.f(), i < 10, … An execution of a given netlist is a sequence of vectors of events.event : the beginning of an action, e.g. B(process, port.f()), the end of an action, e.g. E(process, port.f()), or null Nthe i-th component of a vector is an event of the i-th process An execution is feasible ifit satisfies all coordination constraints, andit is accepted by all action automata.Execution semanticsExecution semanticsAction automaton:one for each action of each processdefines the set of sequences of events that can happen in executing the actiona transition corresponds to an event:it may update shared memory variables:process and media member variablesvalues of actions-expressionsit may have guards that depend on states of other action automata and memory variableseach state has a self-loop transition with the null N event.all the automata have their alphabets in common:transitions must be taken together in different automata, if they correspond to the same event.B y=x+1Action automataAction automatay=x+1;B y=x+1 B x+1 E x+1 E y=x+1y:=Vx+1B x+1 E x+1 E y=x+1y:=anycccc* = write y* * *B x+1 E x+1Vx+1 :=x+1E x+1Vx+1 :=anyccwrite xy=x+1x+1Vx+1yx000NAction automataAction automatay=x+1;y=x+1x+1Vx+1yxB y=x+1 B x+1 E x+1 E y=x+1y:=Vx+1B x+1 E x+1 E y=x+1y:=anycccc* = write y* * *B x+1 E x+1Vx+1 :=x+1E x+1Vx+1 :=anyccwrite x000B y=x+1 B x+1 NN NE x+1100Action automataAction automatay=x+1;y=x+1x+1Vx+1yxB y=x+1 B x+1 E x+1 E y=x+1y:=Vx+1B x+1 E x+1 E y=x+1y:=anycccc* = write y* * *B x+1 E x+1Vx+1 :=x+1E x+1Vx+1 :=anyccwrite x000B y=x+1 B x+1 NN NAction automataAction automatay=x+1;y=x+1x+1Vx+1yxB y=x+1 B x+1 E x+1 E y=x+1y:=Vx+1B x+1 E x+1 E y=x+1y:=anycccc* = write y* * *B x+1 E x+1Vx+1 :=x+1E x+1Vx+1 :=anyccwrite x000B y=x+1 B x+1 E x+1NN N E y=x+1100110B y=x+1Action automataAction automatay=x+1;y=x+1x+1Vx+1yxB y=x+1 B x+1 E x+1 E y=x+1y:=Vx+1B x+1 E x+1 E y=x+1y:=anycccc* = write y* * *B x+1 E x+1Vx+1 :=x+1E x+1Vx+1 :=anyccwrite x000NAction automataAction automatay=x+1;y=x+1x+1Vx+1yxB y=x+1 B x+1 E x+1 E y=x+1y:=Vx+1B x+1 E x+1 E y=x+1y:=anycccc* = write y* * *B x+1 E x+1Vx+1 :=x+1E x+1Vx+1 :=anyccwrite x000B y=x+1 B x+1 NNAction automataAction automatay=x+1;y=x+1x+1Vx+1yxB y=x+1 B x+1 E x+1 E y=x+1y:=Vx+1B x+1 E x+1 E y=x+1y:=anycccc* = write y* * *B x+1 E x+1Vx+1 :=x+1E x+1Vx+1 :=anyccwrite x000B y=x+1 B x+1 NN NE x+1500Action automataAction automatay=x+1;y=x+1x+1Vx+1yxB y=x+1 B x+1 E x+1 E y=x+1y:=Vx+1B x+1 E x+1 E y=x+1y:=anycccc* = write y* * *B x+1 E x+1Vx+1 :=x+1E x+1Vx+1 :=anyccwrite x000B y=x+1 B x+1 NN NAction automataAction automatay=x+1;y=x+1x+1Vx+1yxB y=x+1 B x+1 E x+1 E y=x+1y:=Vx+1B x+1 E x+1 E y=x+1y:=anycccc* = write y* * *B x+1 E x+1Vx+1 :=x+1E x+1Vx+1 :=anyccwrite x000B y=x+1 B x+1 E x+1NN N E y=x+1500550AwaitAwaitawait { (guard_1; test_1; set_1){ statements_1; } ... (guard_n; test_k; set_n){ statements_n; }}guard_i : expression with no side effecttest_i, set_i: { (object, port interface) }• the only operational construct to coordinate
View Full Document