Yo à tous !
Je voudrais avoir quelques précisions sur le fonctionnement des
pipelines sur 603e ou 604e (et même d'autres PPC, le principe doit
être grosso-modo le même).
La doc d'IBM sur le 604e n'est pas très clair je trouve.
Petit exemple:
(1) add
(2) div
(3) add
(1) est passé dans la SCIU et (2) dans la MCIU. Et ensuite, que ce
passe-t-il pour (3) ?
Le cpu bloque en attendant la fin de (2) pour charger (3) dans la SCIU
?
Yo à tous !
Je voudrais avoir quelques précisions sur le fonctionnement des
pipelines sur 603e ou 604e (et même d'autres PPC, le principe doit
être grosso-modo le même).
La doc d'IBM sur le 604e n'est pas très clair je trouve.
Petit exemple:
(1) add
(2) div
(3) add
(1) est passé dans la SCIU et (2) dans la MCIU. Et ensuite, que ce
passe-t-il pour (3) ?
Le cpu bloque en attendant la fin de (2) pour charger (3) dans la SCIU
?
Yo à tous !
Je voudrais avoir quelques précisions sur le fonctionnement des
pipelines sur 603e ou 604e (et même d'autres PPC, le principe doit
être grosso-modo le même).
La doc d'IBM sur le 604e n'est pas très clair je trouve.
Petit exemple:
(1) add
(2) div
(3) add
(1) est passé dans la SCIU et (2) dans la MCIU. Et ensuite, que ce
passe-t-il pour (3) ?
Le cpu bloque en attendant la fin de (2) pour charger (3) dans la SCIU
?
Sinon la doc du 604e par IBM ne contient pas toutes les mnémoniques
(lis et mr n'y sont pas, par exemple).
Sinon la doc du 604e par IBM ne contient pas toutes les mnémoniques
(lis et mr n'y sont pas, par exemple).
Sinon la doc du 604e par IBM ne contient pas toutes les mnémoniques
(lis et mr n'y sont pas, par exemple).
héhé, Didier Levet, pas trop nostalique de ton précédent computer ?
...........
Sinon la doc du 604e par IBM ne contient pas toutes les mnémoniques
(lis et mr n'y sont pas, par exemple). Tu connais une doc qui les as
toutes ? Je vais jeter un oeil sur celles du G3 et G4 de ce pas
d'ailleurs...
A+
héhé, Didier Levet, pas trop nostalique de ton précédent computer ?
...........
Sinon la doc du 604e par IBM ne contient pas toutes les mnémoniques
(lis et mr n'y sont pas, par exemple). Tu connais une doc qui les as
toutes ? Je vais jeter un oeil sur celles du G3 et G4 de ce pas
d'ailleurs...
A+
héhé, Didier Levet, pas trop nostalique de ton précédent computer ?
...........
Sinon la doc du 604e par IBM ne contient pas toutes les mnémoniques
(lis et mr n'y sont pas, par exemple). Tu connais une doc qui les as
toutes ? Je vais jeter un oeil sur celles du G3 et G4 de ce pas
d'ailleurs...
A+
héhé, Didier Levet, pas trop nostalique de ton précédent computer ?
(1) add
(2) div
(3) add
(3) va etre dispatche dans la SCIU a condition qu'il n'y ait pas de
dependance entre (2) et (3). Ceci dit, un blocage va intervenir dans
la Completion Queue : tout ce qui suit (2) ne pourra pas etre retire
tant que le div ne sera pas termine, ce qui induit rapidement un
blocage du dispatching (remplissage de la Completion Queue).
Oui, pas de dépendance d'écriture. En supposant qu'on est sur un 603e,
(3) est tout de même executé (car 3 pipelines sur 603e) pendant le
calcul de (2) ou le cpu attend vraiment la toute fin du div ?
Je demande ça, car toute l'organisation des mnémoniques en dépends: il
faut donc regrouper les ménmos selon leurs appartenances à telle ou
telle unité pour obtenir les meilleurs perfs. Si la réponse est non à
ma question, le code doit devenir (1) (3) (2), c'est mieux.
J'ai aussi lu que les store en load pouvaient s'executer par 2 en 1
cycle avec 3 pipelines, tu confirmes bien ? Il faut donc grouper tant
que faire se peut ces 2 mnémos. Mais que se passe-t-il pour:
Sinon la doc du 604e par IBM ne contient pas toutes les mnémoniques
(lis et mr n'y sont pas, par exemple). Tu connais une doc qui les as
toutes ? Je vais jeter un oeil sur celles du G3 et G4 de ce pas
d'ailleurs...
héhé, Didier Levet, pas trop nostalique de ton précédent computer ?
(1) add
(2) div
(3) add
(3) va etre dispatche dans la SCIU a condition qu'il n'y ait pas de
dependance entre (2) et (3). Ceci dit, un blocage va intervenir dans
la Completion Queue : tout ce qui suit (2) ne pourra pas etre retire
tant que le div ne sera pas termine, ce qui induit rapidement un
blocage du dispatching (remplissage de la Completion Queue).
Oui, pas de dépendance d'écriture. En supposant qu'on est sur un 603e,
(3) est tout de même executé (car 3 pipelines sur 603e) pendant le
calcul de (2) ou le cpu attend vraiment la toute fin du div ?
Je demande ça, car toute l'organisation des mnémoniques en dépends: il
faut donc regrouper les ménmos selon leurs appartenances à telle ou
telle unité pour obtenir les meilleurs perfs. Si la réponse est non à
ma question, le code doit devenir (1) (3) (2), c'est mieux.
J'ai aussi lu que les store en load pouvaient s'executer par 2 en 1
cycle avec 3 pipelines, tu confirmes bien ? Il faut donc grouper tant
que faire se peut ces 2 mnémos. Mais que se passe-t-il pour:
Sinon la doc du 604e par IBM ne contient pas toutes les mnémoniques
(lis et mr n'y sont pas, par exemple). Tu connais une doc qui les as
toutes ? Je vais jeter un oeil sur celles du G3 et G4 de ce pas
d'ailleurs...
héhé, Didier Levet, pas trop nostalique de ton précédent computer ?
(1) add
(2) div
(3) add
(3) va etre dispatche dans la SCIU a condition qu'il n'y ait pas de
dependance entre (2) et (3). Ceci dit, un blocage va intervenir dans
la Completion Queue : tout ce qui suit (2) ne pourra pas etre retire
tant que le div ne sera pas termine, ce qui induit rapidement un
blocage du dispatching (remplissage de la Completion Queue).
Oui, pas de dépendance d'écriture. En supposant qu'on est sur un 603e,
(3) est tout de même executé (car 3 pipelines sur 603e) pendant le
calcul de (2) ou le cpu attend vraiment la toute fin du div ?
Je demande ça, car toute l'organisation des mnémoniques en dépends: il
faut donc regrouper les ménmos selon leurs appartenances à telle ou
telle unité pour obtenir les meilleurs perfs. Si la réponse est non à
ma question, le code doit devenir (1) (3) (2), c'est mieux.
J'ai aussi lu que les store en load pouvaient s'executer par 2 en 1
cycle avec 3 pipelines, tu confirmes bien ? Il faut donc grouper tant
que faire se peut ces 2 mnémos. Mais que se passe-t-il pour:
Sinon la doc du 604e par IBM ne contient pas toutes les mnémoniques
(lis et mr n'y sont pas, par exemple). Tu connais une doc qui les as
toutes ? Je vais jeter un oeil sur celles du G3 et G4 de ce pas
d'ailleurs...
héhé, Didier Levet, pas trop nostalique de ton précédent computer ?
Ca depend des jours :)
(1) add
(2) div
(3) add
(1) et (2), ou (2) et (3) vont etre dispatchees en meme temps compte
tenu qu'il n'y a pas de dependances. Dans les deux cas, les instructions
(1) et (3) vont etre terminees bien avant le div, si bien que seul le
premier add pourra etre retire de la Completion Queue (Completion Unit).
Lorsque le div sera termine, (2) et (3) seront retirees de la CQ en
meme temps.
Ce depend de ce que tu as avant. S'il s'avere que (1) est retiree de
la CQ avec l'instruction precedente, le code actuel fonctionne tout
a fait bien. En revanche, si (1) est retiree seule, il vaut mieux
utiliser la seconde solution (2 add puis le div).
Il n'y a qu'une seule LSU, donc ca m'etonnerai que deux instructions
puissent etre executees simultanement.
Ce sont des pseudo-instructions, reconnues par l'assembleur, mais
qui correspondent a des instructions documentees plus complexes (il
s'agit en fait de formes simplifiees). Par exemple, "mr rA,rB"
correspond a "ori rA,Rb,0" (ou quelque chose commme ca).
héhé, Didier Levet, pas trop nostalique de ton précédent computer ?
Ca depend des jours :)
(1) add
(2) div
(3) add
(1) et (2), ou (2) et (3) vont etre dispatchees en meme temps compte
tenu qu'il n'y a pas de dependances. Dans les deux cas, les instructions
(1) et (3) vont etre terminees bien avant le div, si bien que seul le
premier add pourra etre retire de la Completion Queue (Completion Unit).
Lorsque le div sera termine, (2) et (3) seront retirees de la CQ en
meme temps.
Ce depend de ce que tu as avant. S'il s'avere que (1) est retiree de
la CQ avec l'instruction precedente, le code actuel fonctionne tout
a fait bien. En revanche, si (1) est retiree seule, il vaut mieux
utiliser la seconde solution (2 add puis le div).
Il n'y a qu'une seule LSU, donc ca m'etonnerai que deux instructions
puissent etre executees simultanement.
Ce sont des pseudo-instructions, reconnues par l'assembleur, mais
qui correspondent a des instructions documentees plus complexes (il
s'agit en fait de formes simplifiees). Par exemple, "mr rA,rB"
correspond a "ori rA,Rb,0" (ou quelque chose commme ca).
héhé, Didier Levet, pas trop nostalique de ton précédent computer ?
Ca depend des jours :)
(1) add
(2) div
(3) add
(1) et (2), ou (2) et (3) vont etre dispatchees en meme temps compte
tenu qu'il n'y a pas de dependances. Dans les deux cas, les instructions
(1) et (3) vont etre terminees bien avant le div, si bien que seul le
premier add pourra etre retire de la Completion Queue (Completion Unit).
Lorsque le div sera termine, (2) et (3) seront retirees de la CQ en
meme temps.
Ce depend de ce que tu as avant. S'il s'avere que (1) est retiree de
la CQ avec l'instruction precedente, le code actuel fonctionne tout
a fait bien. En revanche, si (1) est retiree seule, il vaut mieux
utiliser la seconde solution (2 add puis le div).
Il n'y a qu'une seule LSU, donc ca m'etonnerai que deux instructions
puissent etre executees simultanement.
Ce sont des pseudo-instructions, reconnues par l'assembleur, mais
qui correspondent a des instructions documentees plus complexes (il
s'agit en fait de formes simplifiees). Par exemple, "mr rA,rB"
correspond a "ori rA,Rb,0" (ou quelque chose commme ca).
héhé, Didier Levet, pas trop nostalique de ton précédent computer ?
Ca depend des jours :)
(1) add
(2) div
(3) add
(1) et (2), ou (2) et (3) vont etre dispatchees en meme temps compte
tenu qu'il n'y a pas de dependances. Dans les deux cas, les instructions
(1) et (3) vont etre terminees bien avant le div, si bien que seul le
premier add pourra etre retire de la Completion Queue (Completion Unit).
Lorsque le div sera termine, (2) et (3) seront retirees de la CQ en
meme temps.
Ce depend de ce que tu as avant. S'il s'avere que (1) est retiree de
la CQ avec l'instruction precedente, le code actuel fonctionne tout
a fait bien. En revanche, si (1) est retiree seule, il vaut mieux
utiliser la seconde solution (2 add puis le div).
Il n'y a qu'une seule LSU, donc ca m'etonnerai que deux instructions
puissent etre executees simultanement.
Ce sont des pseudo-instructions, reconnues par l'assembleur, mais
qui correspondent a des instructions documentees plus complexes (il
s'agit en fait de formes simplifiees). Par exemple, "mr rA,rB"
correspond a "ori rA,Rb,0" (ou quelque chose commme ca).
héhé, Didier Levet, pas trop nostalique de ton précédent computer ?
Ca depend des jours :)
(1) add
(2) div
(3) add
(1) et (2), ou (2) et (3) vont etre dispatchees en meme temps compte
tenu qu'il n'y a pas de dependances. Dans les deux cas, les instructions
(1) et (3) vont etre terminees bien avant le div, si bien que seul le
premier add pourra etre retire de la Completion Queue (Completion Unit).
Lorsque le div sera termine, (2) et (3) seront retirees de la CQ en
meme temps.
Ce depend de ce que tu as avant. S'il s'avere que (1) est retiree de
la CQ avec l'instruction precedente, le code actuel fonctionne tout
a fait bien. En revanche, si (1) est retiree seule, il vaut mieux
utiliser la seconde solution (2 add puis le div).
Il n'y a qu'une seule LSU, donc ca m'etonnerai que deux instructions
puissent etre executees simultanement.
Ce sont des pseudo-instructions, reconnues par l'assembleur, mais
qui correspondent a des instructions documentees plus complexes (il
s'agit en fait de formes simplifiees). Par exemple, "mr rA,rB"
correspond a "ori rA,Rb,0" (ou quelque chose commme ca).
héhé, Didier Levet, pas trop nostalique de ton précédent computer ?
Ca depend des jours :)
(1) add
(2) div
(3) add
(1) et (2), ou (2) et (3) vont etre dispatchees en meme temps compte
tenu qu'il n'y a pas de dependances. Dans les deux cas, les instructions
(1) et (3) vont etre terminees bien avant le div, si bien que seul le
premier add pourra etre retire de la Completion Queue (Completion Unit).
Lorsque le div sera termine, (2) et (3) seront retirees de la CQ en
meme temps.
Ce depend de ce que tu as avant. S'il s'avere que (1) est retiree de
la CQ avec l'instruction precedente, le code actuel fonctionne tout
a fait bien. En revanche, si (1) est retiree seule, il vaut mieux
utiliser la seconde solution (2 add puis le div).
Il n'y a qu'une seule LSU, donc ca m'etonnerai que deux instructions
puissent etre executees simultanement.
Ce sont des pseudo-instructions, reconnues par l'assembleur, mais
qui correspondent a des instructions documentees plus complexes (il
s'agit en fait de formes simplifiees). Par exemple, "mr rA,rB"
correspond a "ori rA,Rb,0" (ou quelque chose commme ca).
Non, simplifions: ya rien avant. C'est le début de la routine.
Je débute en asm PPC, et je veux prendre les bonnes habitudes dès le
début, et j'ai un gros handicap, mon english n'est pas super bon...
Les docs me sont difficiles à bien comprendre !
Et visiblement, j'ai pas encore bien pigé le fonctionnement de la CQ.
L'exemple que j'ai donné contient 2 mnémos type SCIU et 1 type MCIU.
Le 603e possède 3 pipelines.
Les unités (LSU, MCIU, SCIU...) peuvent donc sans problèmes opérer sur
chacun des 3 pipelines indépendement (pas comme sur le 060) ?
Et quand un pipeline et l'unité MCIU sont busy par le div, les 2
autres pipelines continuent à fonctionner. Il faut donc bien organiser
les mnémos SCIU et MCIU.
Non, simplifions: ya rien avant. C'est le début de la routine.
Je débute en asm PPC, et je veux prendre les bonnes habitudes dès le
début, et j'ai un gros handicap, mon english n'est pas super bon...
Les docs me sont difficiles à bien comprendre !
Et visiblement, j'ai pas encore bien pigé le fonctionnement de la CQ.
L'exemple que j'ai donné contient 2 mnémos type SCIU et 1 type MCIU.
Le 603e possède 3 pipelines.
Les unités (LSU, MCIU, SCIU...) peuvent donc sans problèmes opérer sur
chacun des 3 pipelines indépendement (pas comme sur le 060) ?
Et quand un pipeline et l'unité MCIU sont busy par le div, les 2
autres pipelines continuent à fonctionner. Il faut donc bien organiser
les mnémos SCIU et MCIU.
Non, simplifions: ya rien avant. C'est le début de la routine.
Je débute en asm PPC, et je veux prendre les bonnes habitudes dès le
début, et j'ai un gros handicap, mon english n'est pas super bon...
Les docs me sont difficiles à bien comprendre !
Et visiblement, j'ai pas encore bien pigé le fonctionnement de la CQ.
L'exemple que j'ai donné contient 2 mnémos type SCIU et 1 type MCIU.
Le 603e possède 3 pipelines.
Les unités (LSU, MCIU, SCIU...) peuvent donc sans problèmes opérer sur
chacun des 3 pipelines indépendement (pas comme sur le 060) ?
Et quand un pipeline et l'unité MCIU sont busy par le div, les 2
autres pipelines continuent à fonctionner. Il faut donc bien organiser
les mnémos SCIU et MCIU.