ARM 64 bits : noyau Linux et GCC

En novembre 2011, ARM annonçait le jeu d’instructions ARMv8, qui a la particularité de proposer la gestion du 64 bits. Quelques mois après cette annonce, et alors qu’ARM n’a toujours pas annoncé de core compatible avec cette architecture, bonne nouvelle : le noyau Linux a été porté sur ce nouveau jeu d’instructions et GCC, le célèbre compilateur, peut sortir du code ARMv8/64 bits.

Si le matériel n’est pas encore annoncé, on sait que le jeu d’instructions est 64 bits, que la mémoire est gérée physiquement sur 48 bits (256 To de RAM au maximum) et la mémoire virtuelle sur 48 bits (256 To). En comparaison, le x86 en 64 bits travaille sur 52 bits pour la mémoire physique et 48 bits pour la mémoire virtuelle. Bien évidemment, les applications classiques, en ARMv7/32 bits, fonctionnent sur un noyau Linux ARMv8/64 bits, comme dans le cas des versions x86. Attention, le noyau Linux actuel limite visiblement les processus à 39 bits pour la mémoire (512 Go), ce qui n’est pas réellement un souci…

La possibilité de compiler du code ARMv8/64 bits (Aarch64) avec GCC est aussi une nouvelle importante : il va être possible de tester le fonctionnement des programmes et de commencer les tests.

Rappelons que les puces ARM actuelles sont 32 bits, même si certains modèles (Cortex A15 et A7) permettent de gérer la mémoire par page à la manière de certains x86 32 bits et 16 bits (LPAE, Large Physical Address Extensions) : la mémoire est gérée physiquement sur 40 bits, mais les applications n’ont accès qu’à 32 bits (et donc 4 Go) à la fois.