Modélisation et Simulation de Systèmes sur Puce avec Soclib François Pêcheux Laboratoire...

Preview:

Citation preview

Modélisation et Simulation de Systèmes sur Puce avec Soclib

François Pêcheux

Laboratoire LIP6/ASIM

francois.pecheux@lip6.fr

Plan de la présentation

Principes de SoCLib Interfaces normalisées Composants disponibles Un exemple de plate-forme Outils associés Conclusion

SocLib, les principes

Résultat du travail collaboratif de 13 Laboratoires Nationaux et 6 partenaires industriels (dont ST et Thalès)

Plate-forme labellisée par le CNRS en 2003 La coordination est assurée par le LIP6

Bibliothèque de modèles de composants Ecrits en SystemC Deux types de modèles (CABA et TLM/T) Interopérables (VCI) Performants (automates d’états synchrones)

Open-source Conçue pour la modélisation et la simulation efficace de plate-

formes multiprocesseurs à espace mémoire partagé. Conçue pour l’exploration architecturale

Niveaux d’abstraction

Modèles RTL synthétisables(VHDL, Verilog)

Modèles CABA

Modèles TLM/T

Cycle d’horloge

Delta Cycle

Transaction :Plusieurs cycles

Granularité du temps

1 ordreDe grandeur

1 ordreDe grandeur

Interface normalisée : VCI (Virtual Component Interface)

Séparer clairement (au niveau du matériel) la fonction de calcul de la fonction de communication.

=> réutilisation des composants matériels Supporter les architectures multi-processeurs

=> plusieurs dizaines de maîtres Conserver le paradigme de communication « espace

d ’adressage partagé » : Un initiateur désigne sa cible par les bits de poids fort de l ’adresse et une case mémoire particulière par les bits de poids faible.

=> réutilisation des composants logiciels Fournir à chaque maître l’illusion qu ’il dispose d ’un canal de

communication point à point avec chaque cible.=> simplification du protocole d ’accès au « bus »

Possibilité de mécanismes de communication autres que le bus.=> bande passante « illimitée »

Envoi d’une commande VCI

ADDRESSADDRESS

CMDCMD

BEBE

WDATAWDATA

EOPEOP

SRCIDSRCID

……

CMDVALCMDVAL

CMDACKCMDACK

INITIATEURVCI

CIBLEVCI

~90 fils

Les FSMs correspondantes

ADDRESSADDRESS

CMDCMD

BEBE

WDATAWDATA

EOPEOP

SRCIDSRCID

……

CMDVALCMDVAL

CMDACKCMDACK

INITIATEURVCI

CIBLEVCI

CMDACK=0

CMDACK=1

CMDVAL=0

CMDVAL=1

Envoi d’une réponse VCI

RERRORRERROR

REOPREOP

RDATARDATA

RSRCIDRSRCID

……

RSPACKRSPACK

RSPVALRSPVAL

INITIATEURVCI

CIBLEVCI

RSPVAL=0

RSPVAL=1

RSPACK=0

RSPACK=1

~50 fils

AD

DR

ES

SA

DD

RE

SS

CM

DC

MD

BEBE

WD

AT

AW

DA

TA

EO

PE

OP

SR

CID

SR

CID

……

CM

DV

AL

CM

DV

AL

CM

DA

CK

CM

DA

CK

CIBLEVCI (1)

AD

DR

ES

SA

DD

RE

SS

CM

DC

MD

BEBE

WD

AT

AW

DA

TA

EO

PE

OP

SR

CID

SR

CID

……

CM

DV

AL

CM

DV

AL

CM

DA

CK

CM

DA

CK

CIBLEVCI (0)

Décodage d’adresse

AD

DR

ES

SA

DD

RE

SS

CM

DC

MD

BEBE

WD

AT

AW

DA

TA

EO

PE

OP

SR

CID

SR

CID

……

CM

DV

AL

CM

DV

AL

CM

DA

CK

CM

DA

CK

INITIATEURVCI

INTERCONNECTVCI

TABLEDES

SEGMENTS

2 niveaux de routage CMD et RSP

SRCID MSB SRCID LSB

segtable.setMSB(4);segtable.setLSB(3);

segtable.addSegment(« seg », adrBase, segSize, idxCluster, idxTarget, segAttr);

ADRESSEMSB LSB

ADDRSIZE

SRCIDSIZE

Indice decluster

Indice local

Indice decluster

Indice local

CMD

RSP

Notion de cluster

CPU

Icache Dcache

VCI compliant on-chip interconnect

CPU

Icache Dcache

CPU

Icache Dcache

Interruptcontroller

ROMRAM RAM Timer

CPU

Icache Dcache

FIFOinterface

Coprocessor

FIFOinterface

Coprocessor

… DSPINto

VCI

VCIto

DSPIN

DSPINrouter

North

South

East

West

Local

Ecriture sous forme d’automates d’états synchrones communiquants

Fonction de

Moore

TRANSITION

Fonction de

MEALY

ETAT

S ’ S

1 modèle =

1 SC_METHOD transition(), appelée sur

chaque front montant de l’horloge+

1 SC_METHOD genMoore(), appelée sur

chaque front descendant de l’horloge

+N SC_METHOD genMealy(),

sensibles auxentrées

VCI favorise la réalisation d’automates de Moore N=0, ce qui accélère notablement la vitesse de simulationpour M composants

transition() 1..MgenMoore() 1..M

Modèles de composants disponibles

Processeurs + caches MIPS R3000, soclib_multi_mips.h OpenRISC 1200, soclib_or1200.h Power PC Sparc V8

Réseau d’interconnexion VGMN (Virtual Generic Micro Network), soclib_vci_gmn.h Local crossbar, soclib_vci_local_crossbar.h DSPIN (présentation à suivre)

Mémoire Multi-segments, soclib_vci_multiram.h Verrous, soclib_vci_ramlocks.h

Interfaçage coprocesseur Soclib_vci_threader, soclib_vci_threader.h Soclib_vci_target_multififo, soclib_vci_target_multififo.h

Périphériques d’entrées/sorties Terminal, soclib_vci_multitty.h Timer, soclib_vci_multitimer.h

Contrôleur de cache unifié

ADDRESS

CMD

BE

WDATA

EOP

SRCID

CMDVAL

CMDACK

XCACHE

Direct MappedWrite-Through

Write BufferREOP

RERROR

RDATA

RSRCID

RSPACK

RSPVAL

UNC

REQ

MISS

INS

BERR

ADR

REQ

MISS

RDATA

BERR

TYPE

WDATA

PROCESSEUR

MIPS R3000SPARC V8

OPENRISC 1200POWERPC 405

IRQ

VCIXCACHE

RSPACK

Mémoire SoCLib

ADDRESS

CMD

BE

WDATA

EOP

SRCID

CMDVAL

CMDACK

REOP

RERROR

RDATA

RSRCID

RSPVAL

VCI TARGET

« DATA » : 0x10000000SIZE : 0x00010000Caché

« RESET » : 0xBFC00000SIZE : 0x00010000Caché

« TEXT » : 0x00400000SIZE : 0x00010000Caché

Cluster,Index

Sources C de l’application

gcc_x

ld_x

« TEXT » : 0x00400000SIZE : 0x00010000

« RESET » : 0xBFC00000SIZE : 0x00010000

« DATA » : 0x10000000SIZE : 0x00010000

Binaire exécutable, Sections BFD

initSegmentExec()

Entrées/sorties : Terminal

ADDRESS

CMD

BE

WDATA

EOP

SRCID

CMDVAL

CMDACK SOCLIB_VCI_TTY

REOP

RERROR

RDATA

RSRCID

RSPACK

RSPVAL

VCI TARGET

Pipe Unix

Ecriturecaractère

Lecturecaractère

Application X-Window

Un exemple : La plate-forme date04

Micro-réseau

Cache I+D

I

T

T0

I0

MIPS R3000

I

TTY

T

Cache I+D

I

T

T1

MIPS R3000

I

Cache I+D

I

T

T2

MIPS R3000

I

Cache I+D

I

T

T3

MIPS R3000

I

I1

TTY

T

I2

TTY

T

I3

TTY

T

I4

MultiRAM 0

T

I5

MultiRAM 1

T

I6

Locks

T

I7

Multi-Timer

T

L’application embarquée en C de date04

main.cint main0(void){ int *p=(int*)0xB0000000; uputs("Hello from processor 0",procnum()); *(p+2)=10000; // Initalize timer *(p+1)=3; // Run timer while (1); return 0;}

int main3(void){ int *p=(int*)0xB0000030; uputs("Hello from processor 3",procnum()); *(p+2)=13000; // Initalize timer and run *(p+1)=3; // Run timer while (1); return 0;}

it.c void SwitchOnIt(int it){ char s[10]; int i,ti; int *p=(int*)0xB0000000;

/* Identify the active interrupt of highest priority */ for (i=0; i<8; i++) if (it&(1<<i)) break;

switch (i) {...

case 2: /* It 0 */ uputs("timer interrupt",procnum()); ti=*(p+0); itoa(ti,s); uputs("Interrupt acknowledged at cycle :", procnum()); uputs(s,procnum()); uputs("",procnum()); *(p+3+(procnum()<<2))=0; // reset irq break;

... default: break; }}

Exécution de la simulation

date04 : Les quatre terminaux

Outils associés

SystemCass, Simulateur à ordonnancement statique, 7 fois plus rapide que SystemC

SocView, Outil de mise au point des modèles et des plates-formes

DSG, outil de génération automatique de plate-forme et de déploiement de l’application multi-thread

« Serendipity », En cours de développement : Simulateur multi-niveaux d’abstraction : commutation «à chaud» entre simulation TLM/T et CABA.

DSG : Un exemple de cluster générique

CPU

Icache Dcache

VCI compliant on-chip interconnect

CPU

Icache Dcache

CPU

Icache Dcache

Interruptcontroller

ROMRAM RAM Timer

CPU

Icache Dcache

FIFOinterface

Coprocessor

FIFOinterface

Coprocessor

N processors

M rams

Semaph

Conclusion

Bibliothèque opérationnelle de modèles de composants

Environnement, bibliothèque et outils disponibles sur http://soclib.lip6.fr

Méthode simplifiée de déploiement d’une application logicielleparallèle sur une plate-forme matérielle générique par l’emploi de générateurs de systèmes

Réalisation d’un CI système sur puce, AoC, s’appuyant sur les principes de SoCLib

Point chaud : La conception d’un système embarqué opérationnel revient à trouver un placement optimal pour les threads de l’application embarquée sur les processeurs les canaux de communicationsur les bancs mémoire physique les coprocesseurs matériels dans l’espace mémoire partagé

Contacts dans l’équipe SoCLib du LIP6

Direction du projet SocLib, alain.greiner@lip6.fr Coordination, francois.pecheux@lip6.fr SystemCASS, richard.buchmann@lip6.fr MUTEK, franck.wajsburt@lip6.fr, pascal.gomez@lip6.fr Modélisation TLM/T, emmanuel.viaud@lip6.fr Déploiement de plates-formes, SoCView, wahid.bahroun@lip6.fr Processeur Réseau, daniela.genius@lip6.fr, etienne.faure@lip6.fr, Modèles Interconnect, herve.charlery@lip6.fr, laurent.mortiez@lip6.fr, Modèle Processeur Java, maxime.palus@lip6.fr Modèle Processeur Mips, pirouz.bazargan@lip6.fr, mathieu.rosiere@lip6.fr Micro-réseau DSPIN alain.greiner@lip6.fr, hamed.sheybanirad@lip6.fr Modèle Processeur test mounir.benabdenbi@lip6.fr, matthieu.tuna@lip6.fr

Recommended