Preparation Exercises for Final Examination in Embedded Systems

Page 1 sur 14Lecteur de document UniversityLib

Preparation Exercises for Final Examination in Embedded Systems

Embedded Systems · exam

Voir tous les documents en électronique et automatique

Exercices en préparation de l’examen

final du cours

INF3610 Systèmes embarqués

Chapitre 3

INF3610 – Exercices final (chapitre 3)

QUESTION #1 Architecture RISC et aléas

Soit un pipeline à 5 niveaux semblable au DLX :

 LI : lecture d’instruction

 DI : décodage de l’instruction et lecture des registres

 EX : exécution et calcul de l’adresse effective

 MEM : accès mémoire ou fin de branchement

 ER : écriture du résultat dans le banc de registres

Soit la boucle suivante (Figure 1.1) avec la spécification du tableau 1.1:

etiq : LW

ADDI

SW

ADDI

SUB

LW

BNZ

R1, 10(R2)

R1, R1, 1

R1, 10(R2)

R2, R2, 4

R4, R3, R2

R5, 10(R6)

R4, etiq

Figure 1.1

Instructions pouvant être

pipelinées

Signification

LW R1, 10(R2)

ADDI R1, R1, 1

SW R1, 10(R2)

SUB R4, R3, R2

BNZ R3, etiq

R1  Mem[10 + R2]

R1  R1 + 1

Mem[10 + R2]  R1

R4  R3 – R2

Branch. si non zéro

Cycle du pipeline où l’opération

termine (le résultat étant

disponible 1 cycle plus tard)

ER

ER

MEM

ER

EX

Table 1.1 Spécifications du DLX

Page 2 de 14

INF3610 – Exercices final (chapitre 3)

a) À l’aide de la figure 1.1 et du tableau 1.1, complétez le tableau 1.2 en utilisant au besoin

des suspensions (bulles). Pour l’instruction de branchement, considérez que le pipeline

suspend tous les instructions jusqu’à ce que la destination1. Autrement dit, le

branchement n’est pas effectué et le corps de boucle s’exécute une seule fois.

LW R1, 10(R2)

ADDI R1, R1, 1

SW R1, 10(R2)

ADDI R2, R2, 4

SUB R4, R3, R2

LW R5, 10(R6)

BNZ R4, etiq

LI

DI

LI

EX MEM ER

DI …

LI …

Tableau 1.2

b) Refaire a) mais en supposant le tableau 1.3 à la place du tableau 1.1. De plus,

considérez maintenant une politique de prédiction de branchement pris (avec toujours

une destination qui est l’instruction LW R1, 10(R2)).

Instructions pouvant être

pipelinées

Signification

LW R1, 10(R2)

ADDI R1, R1, 1

SW R1, 10(R2)

SUB R4, R3, R2

BNZ R3, etiq

R1  Mem[10 + R2]

R1  R1 + 1

Mem[10 + R2]  R1

R4  R3 – R2

Branch. si non zéro

Tableau 1.3 Spécifications du DLX

Cycle du pipeline où l’opération

termine et pour lequel le résultat

(cas de ADDI et SUB) est

disponible par n’importe quel

Publicité

autre étage (chemins d’envoi).

ER

EX

MEM

EX

DI

1 On parle alors d’un branchement avec délai (branch delay)

Page 3 de 14

INF3610 – Exercices final (chapitre 3)

QUESTION #2 Architecture RISC, aléas et superscalaire

Soit comme à la question précédente un pipeline à 5 niveaux semblable au DLX et soit la

boucle suivante (Figure 2.1) qui réalise l’opération vectorielle Z = X - Y + Z pour des

vecteurs de dimension 16:

Soit la boucle suivante qui réalise l’opération vectorielle Z = X - Y + Z pour des vecteurs de

dimension 16:

etiq : LD

LD

SUBF

LD

ADDF

SD

ADDI

ADDI

ADDI

SGEI

BEQZ

F0, 0(R1)

F10, 0(R2)

F20, F0, F10

F30, 0(R3)

F40, F30, F20

0(R3), F40

R1, R1, 8

R2, R2, 8

R3, R3, 8

R5, R1, R4

R5, etiq

; charge X(i)

;  Y(i)

; X(i) - Y(j)

; charge Z(i)

; X(i) – Y(i) + Z(i)

; range Z(i)

; incrémente l’indice X

;   Y

;   Z

; teste si plus grand ou égal à 16*8

; boucle sinon

 X(0), Y(0) et Z(0) se trouve à partir de l’adresse R1, R2 et R3

 R1, R2 et R3 sont initialisés à 0, 128 et 256 respectivement.

 R4 est initialisé à 128.

Figure 2.1

Détails des d’instructions

pouvant être pipelinées

Nom de l’instruction

LD F10, 0(R1)

Charg. mot dans F10

ADDF F20, F0, F10

SUBF F20, F0, F10

ADDI R1, R1, 8

SGTI R3, R1, R4

SD 0(R2), F6

BEQZ R3, etiq

Additionne F0 et F10

Soustrait F0 de F10

Add immédiat

si (R1 > R4) alors R3  1

sinon R3  0

Rang. d’un mot à partie de F6

Branch. si zéro

Nombre de

cycles dans

EX

Cycle du pipeline où l’opération

termine

1

4

1

1

1

1

ER (le résultat est dans

l’accumulateur après MEM)

ER (le résultat est mis dans

l’accumulateur après EX4)

EX (le résultat est mis dans

l’accumulateur après EX)

ER ((le résultat est mis dans

l’accumulateur après EX)

MEM

EX

Table 2.1 Instructions

À partir de cette boucle et à l’aide de la table 2.1:

Page 4 de 14

Publicité

INF3610 – Exercices final (chapitre 3)

a) Donnez la boucle non ordonnancée, en tenant compte des cycles de suspension ou

d’attente. Considérez un modèle de pipeline avec une seule unité EX (elle aussi

pipelinée) qui peut jouer le rôle d’entier et de flottant. Donnez le temps d’exécution.

b) À partir du résultat obtenu en a), dépliez la boucle 4 fois et ordonnancé les

instructions afin de minimiser le nombre de cycles par itération. Au besoin vous

pouvez ajouter des registres Ri ou Fi. Donnez le nombre de cycles par itération

résultant.

c) Soit une machine superscalaire à deux pipelines distincts: un pipeline pour les

instructions entière (et les accès mémoire) et un pipeline pour le point flottant.

Ordonnancez la boucle dépliée obtenue en b). Donnez le nombre de cycles par

itération résultant.

Page 5 de 14

INF3610 – Exercices final (chapitre 3)

QUESTION #3 Pipeline et parallélisme d’instructions

Soit une boucle qui réalise l’opération vectorielle Y=a*X+Y/b pour un vecteur de

longueur de 100 selon le jeu d’instructions du tableau 3.1:

L:

LD

MULT F

LD

DIVF

ADDF

SD

ADDI

ADDI

STGI

BEQZ

F10, 0(R1)

F20, F10, F0

F30, 0(R2)

F40, F30, F1

F40, F40, F20

0(R2), F40

R1, R1, 8

R2, R2, 8

R3, R1, fait

R3, L

où F0 = a, F1=b et fait = 100

Instructions pipelinées

Signification

LD F0, 0(R3)

F0  Mem[0 + R3]

ADDF F8, F6, F1

F8  F6 + F1

MULTF F4, F2, F0

F4  F2 * F0

DIVF F8, F6, F1

F8  F6 + F1

ADDI R1, R1, 8

R1  R1 + 8

SD 0(R2), F8

STGI R3, R1, fait

BEQZ R3, etiq

Mem[0 + R2]  F8

si R1 > fait alors R3=0

Branchement si zéro

Nombre de

cycles dans

EX

1

2

4

6

1

1

1

1

Cycle du pipeline où l’opération termine (le

résultat étant disponible 1 cycle plus tard)

ER (le résultat est dans l’accumulateur

après MEM)

ER (le résultat est mis dans l’accumulateur

après EX2)

ER (le résultat est mis dans l’accumulateur

après EX4)

ER (le résultat est mis dans l’accumulateur

après EX6)

ER (le résultat est mis dans l’accumulateur

après EX)

MEM

EX

EX

Tableau 3.1 Instructions pipelinées

a) Complétez la trace de ce programme (Tableau 3.2, page suivante) pour l’exécution

d’une seule boucle. Considérez un modèle de pipeline sauf pour EX qui supporte à la

fois les opérations entières et flottantes. Donnez le nombre de cycles pour une itération.

b) Déroulez le code donné en a) autant de fois que nécessaire pour l’ordonnancer sans

aucune suspension, en déplaçant du code au besoin et en diminuant les instructions

de gestion de boucle, le tout en évitant les aléas. Montrez l’ordonnancement et le

gain par rapport à a).

Page 6 de 14

##

Instruction/Cycl 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

1 L: LD F10, 0(R1)

Publicité

2 MULTF F20,F10,F0

3

LD F30,0(R2)

DIVF F40,F30,F20

4

5

6

7

8

9

10

ADDF F40, F40, F20

SD 0(R2),F40

ADDI R1, R1, 8

ADDI R2, R2, 8

STGI R3,R1,fait

BEQZ R3, L

Tableau 3.2 À compléter pour la question a)

Question #4 Protocole OPB

Soit le diagramme temporel suivant que nous avons vu en classe, expliquez cycle par

cycle le comportement auquel correspond ce diagramme correspond. (Attention : un

périphérique peut être à la fois maître ou esclave).

INF3610 – Exercices final (chapitre 3)

QUESTION #5 Modèle transactionnel et protocole OPB

Soit le sous-système transactionnel de la figure 5.1 intégrant 2 maîtres (A et F) de 32 bits

branchés directement sur un bus OPB, ainsi qu’un esclave D représentant un IP acheté

dont le code source est protégé relié au bus par un adaptateur de protocole (wrapper)

WD. Le wrapper ne fait aucun traitement particulier, à part convertir les protocoles.

Considérez qu’il est le wrapper que vous avez programmé au laboratoire 3. Enfin, cet IP

se connecte à un FIFO pour son bon fonctionnement. Comme ce circuit sera implanté sur

FPGA, avec des ressources matérielles limitées, le FIFO qui reliera le wrapper WD à l’IP

D sera de profondeur 4.

Figure 5.1

Une partie de l’implantation transactionnelle des maîtres A et F est représentée ci-

dessous.

A::thread()

{

unsigned long AddressD = 0x1000;

unsigned long data = 0;

F::thread()

{

unsigned long AddressD = 0x2000;

unsigned long data = 4;

// priorité la plus élevée

opb_set_master_priority(1);

// priorité la plus faible

opb_set_master_priority(2);

while(1)

{

opb_bus_write(AddressD, &data,

sizeof(data));

while(1)

{

opb_bus_write(AddressD, &data,

sizeof(data));

TraitementA(); // 2 cycles

TraitementF(); // 3 cycles

// on suppose que la fonction de

// traitement s’occupe de

// l’incrémentation de l’adresse

// on suppose que la fonction de

// traitement s’occupe de

// l’incrémentation de l’adresse

}

}

Vous savez que l’esclave D a besoin de 8 cycles pour répondre à une demande d’écriture

ou de lecture (incluant le temps de fifo). L’esclave D retire du fifo les données une à la

fois (extraction; traitement; extraction, traitement, etc.), qui lui sert donc de registre

tampon. TraitementA() nécessite 2 cycles pour s’exécuter et TraitementF() nécessite 3

cycles pour s’exécuter. La fonction opb_bus_write effectue des requêtes OPB, tel que vu

en classe et au laboratoire, à savoir : demander un accès au bus, fixer les options, placer

la requêtes sur le bus, attendre la réponse, vérifier l’acquittement, etc.

Page 9 de 14

INF3610 – Exercices final (chapitre 3)

a) Quoi que ce système semble fonctionner, il n’est pas en équilibre et un problème

majeur se produit.

 Décrivez ce problème.

 Une solution simple et efficace existe et permet de solutionner ce problème très

facilement tout en respectant des contraintes ci-dessus. Énoncez cette solution et

mentionnez les effets sur les performances du système.

b) Soit le modèle transactionnel de l’OPB vu au laboratoire.

i. À partir du code de la figure 5.2 (page suivante), donnez le code SystemC qui

décrirait la fonction opb_bus_write, en supposant les éléments suivants :

la déclaration data est unsigned long data[32] ;

o

o D est un esclave de 16 bits (OPB_HW) ;

o Le wrapper WD met 1 cycle pour se synchroniser pour chaque requête;

o Le maître possède un port d’horloge d’entrée nommé clk;

o Le wrapper supporte le mode verrouillage, mais pas le mode séquentiel.

Votre fonction doit être la plus performante possible (et évidemment, elle doit être

en mesure de transporter tout le tableau!) Toute hypothèse justifiée est acceptable.

Dans votre cahier de réponse, donnez le code associé aux éléments //(0) à //(7) ci-

dessous, //(0) étant facultatif. Chaque élément représente une ou plusieurs lignes

de code.

ii. Donnez également le nombre de cycles que requiert votre implantation pour

Publicité

transférer ce tableau. Tenez compte des temps de demande de bus, temps de

propagation des signaux sur le bus, temps d’esclave et d’acquittement et tout autre

délai de votre code. Voici des hypothèses qui vont certainement vous aider :

o Supposez que le bus est libre au moment de votre demande,

o Supposez que le fifo entre D et WD est de taille infinie

c) Lorsqu’on utilise le mode verrouillage (buslock), on dit qu’il est important de faire

attention au temps de préparation (i.e. le temps créer le(s) paquet(s)) du message à

transiger. En effet, comme le mode verrouillage empêche tout autre maître d’utiliser

le bus, le maître qui verrouille et qui prend son temps pour préparer ses messages

gaspille de précieux cycles de simulation. Pourquoi ce problème ne se pose-t-il pas

dans un modèle transactionnel programmé avec SystemC ?

Page 10 de 14

INF3610 – Exercices final (chapitre 3)

void opb_bus_write(unsigned long destination_address,

unsigned long* data,

unsigned long size_of_data)

{

OPB_TRANSACTION_REQUEST opb_request;

OPB_TRANSACTION_PAYLOAD opb_payload;

unsigned long temp1, temp2, temp3;

// (0) : facultatif -- vos délarations et initialization

opb_request.request = true;

while (opb_bus_port->request_bus(&opb_request) != //(1) )

{

//(2)

}

//(3)

opb_bus_port->set_options(&opb_request);

opb_payload.address = destination_address;

// obtenir le 1er demi-mot de données

opb_payload.data = ((unsigned short)(*data)) & OPB_HW0_MASK;

while ( //(4) )

{

if ( opb_bus_port->put_request(&opb_request, &opb_payload) == OPB_STATUS_SUCCESS) )

{

if ( //(5) )

{

cout << "toute erreur de requête est implantée de sorte que "

<< "nous reprenons la transaction précédente telle quelle" << endl;

break;

}

else

{

//(6)

}

} // si la transaction échoue

else

{

//(7)

}

}

}

Figure 5.2 Blocs de code à compléter

Page 11 de 14

INF3610 – Exercices final (chapitre 3)

QUESTION #6 Processeurs embarqués et architectures

a) Soit la figure 6.1 présentée en classe. Présentez et expliquez les grandes différences

(avantages/désavantage) entre ces quatre technologies à partir des axes X et Y

(suggestion : décrivez de droite à gauche).

Figure 6.1

b) Quelles sont les principales différences entre un RISC et un DSP au niveau architectural.

c) Quelles sont les principales différences entre une puce (chip) et un noyau (core)?

d) Qu’est-ce qu’un ASIP (Application Specific Instruction Processor)? Quels sont ses

avantages/désavantages par rapport au processeur d’usage général. Donnez un exemple

de produit commercial ASIP.

e) Dans la plupart des processeurs DSP on utilise l’expression zero-overhead looping.

Expliquez en quelques lignes ce que signifie cette expression.

f) Dans quel(s) blocs(s) de la figure 6.2 (page suivante) peut-on considérer le

Microblaze utilisez comme « softcore » dans un FPGA de Xilinx. Justifiez.

g) Expliquez les raisons qui font que le 545CK de Tensilica se classe parmi les noyaux

de processeurs DSP.

Page 12 de 14

INF3610 – Exercices final (chapitre 3)

Figure 6.2 (tiré de Trends in Embedded Microprocessor Design)

Page 13 de 14

INF3610 – Exercices final (chapitre 3)

QUESTION #7 FIR et architecture VLIW

Soit l’application du filtre 1D FIR N TAP :

y(n) = a0x(n) + a1x(n-1) + a2x(n-2) + ... + aN-1x(n-N-1)

où on a2

 une table de N coefficients, a0 à aN-1

 une table de N échantillons, allant de l’échantillon courant x(n) à l’échantillon le

plus ancien x(n-N-1)

 pour chaque échantillon résultat y(n) courant, la nécessitée d’effectuer N opérations

MAC.

 une structure itérative, l’échantillon d’entrée x(n) courant devenant l’échantillon

précédant à chaque calcul du nouvel échantillon de sortie y(n)

En considérant le cas N=3 proposez une architecture VLIW qui sera capable de faire une

instruction de filtrage par cycle. Considérez que la latence de l’unité qui fera l’addition et le

chargement/rangement demande 1 cycle alors que l’unité qui fait la multiplication demande

3 cycles. Donnez aussi l’ordonnancement du code pour cette architecture. Finalement,

comparez cette accélération à l’utilisation d’un processeur DSP d’usage générale.

2 Pour plus d’information référez à http://b.l.free.fr/Page7.html

Page 14 de 14