Modélisation et Simulation de Systèmes sur Puce avec Soclib
François Pêcheux
Laboratoire LIP6/ASIM
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, [email protected] Coordination, [email protected] SystemCASS, [email protected] MUTEK, [email protected], [email protected] Modélisation TLM/T, [email protected] Déploiement de plates-formes, SoCView, [email protected] Processeur Réseau, [email protected], [email protected], Modèles Interconnect, [email protected], [email protected], Modèle Processeur Java, [email protected] Modèle Processeur Mips, [email protected], [email protected] Micro-réseau DSPIN [email protected], [email protected] Modèle Processeur test [email protected], [email protected]