Assembleur

12

Neon Instruction : VTBL, VTBX

fév
9 Comments »   Posted by Etienne SOBOLE |  Category:ARM, Assembleur, Code

J’ai décidé de commencer une nouvelle série de posts pour détailler le fonctionnement de certaines instructions de NEON. Certaines instructions sont effectivement tellement particulières que lorsque je dois les utiliser à nouveau, je passe déjà une heure à me rappeler comment elles fonctionnent. Du coup, autant passer un peu de temps à faire une doc bien clair (pour moi ;) ) avec en plus quelques cas où j’ai eu besoin d’utiliser ces instructions.
Les premières à y passer sont les instructions VTBL et VTBX.

more...
 | Tags: , ,
31

Windows Phone 8, ca déchire !

jan

Une fois n’est pas coutume (ce n’est pas une bonne résolution pour 2013), je vais essayer de voir le verre à moitié plein plutôt qu’à moitié vide !
En mal d’inspiration et ayant quelques ressources pécuniaires j’ai offert à mon père un Nokia 920 équipé du flambant neuf Windows Phone 8 pour Noël. Je n’avais jusque là jamais vu tourner l’OS de microsoft, mais j’ai été décidé par la qualité de l’appareil photo et par le fait que pour une fois, il s’agit d’un téléphone assez novateur…

more...
 | Tags:
20

Fini les vacances pour ARM !!!

juin

Ca devrait arriver, même si on pouvait espérer que non!
Intel arrive dans le monde du smartphone avec son medfield Z2460.
Si Intel sait faire des processeurs (et de très bons processeurs), on avait cru que la gestion de l’énergie n’était pas son fort, et que donc, il n’était pas prêt de venir concurrencer l’ARM dans nos chers smartphones.
Et pourtant ils arrivent et ça va faire mal !

more...
 | Tags:
25

Réduction d’images avec NEON

nov

Ça fait un bout de temps que j’ai codé l’agrandissement bilinéaire d’une image. J’avais repoussé l’aspect réduction (qui utilise un algorithme assez différent en fait) à plus tard.
Nous y voilà !
L’algorithme est un peu plus complexe que pour l’agrandissement, mais d’un autre coté, j’ai capitalisé sur les expérimentations effectuée lors de l’agrandissement. Du coup la mise au point de ce code n’a pas pris trop de temps !
Repose-toi Mario, Ce coup-ci c’est Yoshi qui s’y colle…

more...
21

Réduction du nombre de couleurs avec NEON

sept

Aujourd’hui, je m’intéresse aux algorithmes de conversion d’une image RGB888 (16 million de couleurs) à une image RGB565 (65000 couleurs).
NEON n’a pas de prédispositions particulières pour traiter les pixels 16 bits (RGB565 sur Android) ce qui conduit souvent les développeurs à effectuer les opérations complexes sur des pixels 32 bits puis de convertir le résultat en 16 bits une fois le traitement terminé.
Contre toute attente, il existe des algorithmes très efficace et peu gourmand en temps CPU pour réaliser de façon correcte cette conversion…

more...
 | Tags: , ,
07

Performance du tracé de sprites sous Android

août

Je commence tout doucement à me faire à Android.
J’ai donc voulu tester la performance de ma Galaxy Tab. Et pour commencer avec un truc un peu ludique, j’ai testé l’affichage de sprites.
J’ai donc tester la méthode à base de Java et quelques variantes en Assembleur !!!

more...
 | Tags:
15

Agrandissement bilinéaire: Le retour

juil

Il y a quelques temps j’avais proposé un algorithme d’interpolation bilinéaire permettant l’agrandissement d’une image dont les performances quoique correctes m’avaient un peu déçues.

J’ai finalement trouvé une solution pour booster significativement la performance de l’algorithme.
Mais le plus intéressant est sans doute la technique en elle-même, qui permet de coupler les deux unités de calculs que sont l’ARM et NEON

more...
 | Tags: ,
20

A simple NEON optimization method

juin

This post is a translation of “Méthode simple d’optimisation de code NEON

Since I discovered NEON, I had the opportunity to encode several small programs to test the beast.
NEON really is one of the highlights of Cortex. Its use is really simple, the big amount of registers and its instructions with 3 registers make its usage easier than on other processors.
Highly pipelined, the order of instructions is quite significant.
Whichever program you will achieve with NEON, you rarely falls on the optimal version of its implementation the first time. Finally, once you have pipelined at best, there is a last small optimization that allows almost every time to gain a few more cycles …

more...
 | Tags: ,
19

Méthode simple d’optimisation de code NEON

juin
1 Comment »   Posted by Etienne SOBOLE |  Category:ARM, Assembleur, Code

Depuis que j’ai découvert NEON, j’ai eu l’occasion de coder plusieurs petits programmes pour tester un peu la bête.
NEON est vraiment l’un des points fort des Cortex. Son utilisation est vraiment simple, son nombre important de registres et ses instructions à 3 registres rendent sa programmation en assembleur plus facile que sur d’autre processeurs.
Fortement pipeliné, l’ordre des instructions est assez important.
Quelque soit le programme que vous allez réaliser avec NEON, vous tomberez rarement sur la version optimale de son implémentation du premier coup. Au final, une fois que vous avez tout pipeliné au mieux, il reste une petite optimisation qui permet quasiment à chaque fois de gagner encore quelques cycles…

more...
 | Tags: ,
25

Bilinear enlarge with NEON

mai

This post is a translation of “Agrandissement bilinéaire avec NEON

Between two versions of the cycle counter, I felt like a little fun with an exercise a little more playful.
So today, a small stop in the field of image processing … activity where normally, NEON is expected to excel.

more...
 | Tags: ,