30

./20 ? cheeky
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

31

erf ^^

32

Ah ouais, c'est pour les opérations sur des longs que lsl.l #2,dn n'est pas plus lent que deux add.l dn,dn. Pour les shorts, l'équivalence est à 3 shifts.
Bien vu smile
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

33

Bon, je crois qu'on plafonne, plus personne n'a d'idée ?

La seule piste de réflexion que j'entrevois, c'est le fait
qu'on doive faire un and juste pour un seul petit bit
qui dépasserai.
Mais même avec un BCLR ce n'est pas mieu :/
Peut-être une autre technique ?

34

travaille sur des long words et non des words et plus besoin d'un and

ou ton "and" fait le a la toute fin, quand le hash est fini de calculer

mais bon comme dit plus haut 5 ou 10 cycle c'est rien, ie si gagner "20 cycles" ne t'a fait gagner que 5% c'est que le bottleneck est ailleurs

Un bref calcul sachant qu'on prend une HW1 a 10Mhz, qu'il faut entre 4 et 5 cycle d'horloge pour executer un cycle d'instruction sur un 68000 (donc je prend 4.5 front d'horloge pour faire une moyenne)

On a donc

(1 / (10 MHz)) * 4.5 = 100 nanosecondes

100 ns pour chaques cycles

Si on prend dans la doc officielle de motorola/freescale

andi #xx, dx

Il faut pour un byte/word 8 cycles

donc 8 * 100 ns soit 800 nanosecondes

si on prend un fichier de 65533 Octets, l'execution des 65533 andi prendras 52,4 ms

Si on prend le nombre total de cycles de:

move.l a2,a0		; 4
move.b (a0)+,d0		; 8
add.w d0,d0		; 4
add.w d0,d0		; 4
moveq #0,d1		; 4
move.b (a0)+,d1		; 8
add.w d1,d0		; 4
add.w d0,d0		; 4
add.w d0,d0		; 4
move.b (a0),d1		; 8
add.w d1,d0		; 4
andi.w #$0FFF,d0	; 8
add.w d0,d0		; 4
add.w d0,d0		; 4
lea 0(a6,d0.w),a1	; 12


soit 84 cycles, autant dire que les 8 cycles sont quand meme ridicules...

sachant que la le code prendrait 550 ms pour lui tout seul.. 52 ms de plus ou de moins ne change plus grand chose, sachant que ce n'est pas le seul code utilisé

Je sais pas comment tu obtiens 58Ko/s mais la rien que théoriquement juste sur le calcul du hash ce n'est pas possible...

La on obtiens du 25 a 26Ko/s max juste pour le calcul du hash...


edit: #phoque#
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

35

Je comprend pas bien ce que les longs apporteraient?
Le 13eme bit sera toujours à éliminer non ?

Pourquoi le and à la fin ?

Oui, c'est pas 3 cycles qui vont tout changer à ce stade, mais c'est interessant !
Regarde le coup du add à la place du lsl wink

36

Si tu ne veux vraiment pas faire ce andi.w, tu peux peut-être doubler la taille des données pointées par a1 et dupliquer les informations.
Ca va augmenter la consommation mémoire, et ce n'est même pas dit que ça gagne de la vitesse au final.
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

37

et utiliser move 1(a2) et move 2(a2) plutôt que mettre les données dans a0 pour pouvoir l'incrémenter, c'est plus long ?
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

38

C'est plus gros et pas plus rapide smile
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

39

Lionel Debroux (./36) :
Si tu ne veux vraiment pas faire ce andi.w, tu peux peut-être doubler la taille des données pointées par a1 et dupliquer les informations.
Ca va augmenter la consommation mémoire, et ce n'est même pas dit que ça gagne de la vitesse au final.


Effectivement, mais je n'irai pas jusque là wink
Je voulais juste voir si vous aviez d'autres idées.

Mais rien que sur ce petit exemple j'ai appris 2-3 bricoles
qui me font revoir le code, merci !