En architecture informatique , les entiers 64 bits , les adresses mémoire et autres unités données sont ceux qui occupent 64 De même, les unités centrales de traitement (CPU) et les unités arithmétiques et logiques (UAL) 64 bits sont celles qui utilisent des registres , des bus d'adresses ou des bus de données de cette taille. Un ordinateur utilisant un tel processeur est un ordinateur 64 bits.
Du point de vue logiciel, le calcul 64 bits implique l'utilisation de code machine avec des adresses mémoire virtuelles de 64 bits . Cependant, tous les jeux d'instructions 64 bits ne prennent pas en charge l'intégralité des adresses mémoire virtuelles sur 64 bits ; x86-64 et AArch64 , par exemple, ne prennent en charge que 48 bits d'adresse virtuelle, les 16 bits restants devant être soit tous à zéro (000…), soit tous à un (111…). De plus, plusieurs jeux d'instructions 64 bits prennent en charge moins de 64 bits d'adresse mémoire physique.
Le terme « 64 bits » désigne également une génération d'ordinateurs où les processeurs 64 bits sont la norme. 64 bits correspond à une taille de mot qui définit certaines architectures informatiques, bus, mémoires et processeurs, et par extension, les logiciels qui y sont exécutés. Les processeurs 64 bits sont utilisés dans les supercalculateurs depuis les années 1970 ( Cray-1 , 1975) et dans les stations de travail et serveurs RISC ( Reduced Instruction Set Computers ) depuis le début des années 1990. En 2003, les processeurs 64 bits ont fait leur apparition sur le marché des PC grand public avec les processeurs x86-64 et le PowerPC G5 .
Un registre 64 bits peut contenir 2⁶⁴ valeurs différentes (soit plus de 18 quintillions ou 1,8 × 10¹⁹ ). La plage de valeurs entières pouvant être stockées sur 64 bits dépend de la représentation utilisée. Avec les deux représentations les plus courantes, cette plage va de 0 à 18 446 744 073 709 551 615 (soit 2⁶⁴ − 1) pour une représentation binaire ( non signée ) , et de −9 223 372 036 854 775 808 (−2⁶³ ) à 9 223 372 036 854 775 807 ( 2⁶³ − 1) pour une représentation en complément à deux . Par conséquent, un processeur avec des adresses mémoire de 64 bits peut accéder directement à 2 64 octets (16 exaoctets ou EB) de mémoire adressable par octet .
Sans autre précision, une architecture informatique 64 bits possède généralement des registres d'entiers et d'adressage de 64 bits, permettant une prise en charge directe des types de données et des adresses 64 bits. Cependant, un processeur peut disposer de bus de données ou d'adresses externes de tailles différentes de celles des registres, voire supérieures (le Pentium 32 bits possédait par exemple un bus de données 64 bits).
registres à virgule flottante , registres SIMD ( Single Instruction, Multiple Data ), registres de contrôle et, souvent, des registres spéciaux pour l'arithmétique d'adresses, qui peuvent avoir diverses appellations telles que registre d'adresse , d'index ou de base . Cependant, dans les architectures modernes, ces fonctions sont souvent assurées par des registres d'entiers plus généraux . Dans la plupart des processeurs, seuls les registres d'entiers ou d'adresses peuvent être utilisés pour adresser les données en mémoire ; les autres types de registres ne le permettent pas. La taille de ces registres limite donc généralement la quantité de mémoire directement adressable, même s'il existe des registres plus larges, comme les registres à virgule flottante.La plupart des processeurs 32 bits et 64 bits hautes performances (à l'exception notable des processeurs ARM plus anciens ou embarqués et des processeurs MIPS 32 bits ) intègrent un matériel de calcul en virgule flottante, souvent, mais pas toujours, basé sur des unités de données 64 bits. Par exemple, bien que l' architecture x86 / x87 dispose d'instructions permettant de charger et de stocker des valeurs en virgule flottante 64 bits (et 32 bits) en mémoire, le format interne des données et des registres en virgule flottante est de 80 bits, tandis que les registres généraux sont de 32 bits. En revanche, la famille Alpha 64 bits utilise un format de données et de registres en virgule flottante de 64 bits, ainsi que des registres d'entiers de 64 bits.
Histoire
De nombreux jeux d'instructions informatiques sont conçus de telle sorte qu'un seul registre entier puisse stocker l' adresse mémoire de n'importe quel emplacement dans la mémoire physique ou virtuelle de l'ordinateur . Par conséquent, le nombre total d'adresses mémoire est souvent déterminé par la largeur de ces registres. L' IBM System/360 des années 1960 était un des premiers ordinateurs 32 bits ; il disposait de registres entiers 32 bits, mais n'utilisait que les 24 bits de poids faible d'un mot pour les adresses, ce qui limitait l'espace d'adressage à 16 ) . -ordinateurs 32 bits , tels que le DEC VAX , se sont répandus dans les années 1970, et les microprocesseurs 32 bits, comme la famille Motorola 68000 et les modèles 32 bits de la famille x86 à partir de l' Intel 80386 , sont apparus au milieu des années 1980, faisant de 32 bits une taille de registre standard et pratique.
Un registre d'adresse 32 bits permettait d'accéder à 2<sup> 32 </sup> adresses, soit 4 Go de mémoire vive (RAM). À l'époque de la conception de ces architectures, 4 Go de mémoire dépassaient largement les capacités habituelles (4 Mio) des installations, et cette marge était donc considérée comme suffisante pour l'adressage. 4,29 milliards d'adresses étaient également jugées appropriées pour une autre raison importante : 4,29 milliards d'entiers suffisent pour attribuer des références uniques à la plupart des entités dans des applications telles que les bases de données .
La plupart des ordinateurs modernes disposent d'une mémoire vive pouvant contenir entre 8 et 32 milliards d'adresses uniques ; une architecture 64 bits permet d'accéder à une adresse 2 milliards de fois plus élevée. Il est probable que la totalité de cet espace mémoire 64 bits ne soit jamais utilisée.de supercalculateurs des années 1970 et 1980, comme le Cray-1 [ des registres jusqu'à 64 bits et prenaient en charge l'arithmétique entière sur 64 bits, mais pas l'adressage sur 64 bits. Au milieu des années 1980, le développement de l'Intel i860 a abouti à sa sortie en 1989 ; l'i860 disposait de registres entiers 32 bits et d'un adressage 32 bits, ce qui en faisait un processeur non entièrement 64 bits, bien que son unité graphique prenne en charge l'arithmétique entière sur 64 bits . Cependant, 32 bits sont restés la norme jusqu'au début des années 1990, lorsque la baisse continue du coût de la mémoire a permis des installations avec des quantités de RAM approchant les 4 Go, et que l'utilisation d'espaces de mémoire virtuelle dépassant cette limite est devenue souhaitable pour traiter certains types de problèmes. En réponse, MIPS et DEC ont développé des architectures de microprocesseurs 64 bits, initialement destinées aux stations de travail et serveurs haut de gamme . Au milieu des années 1990, HAL Computer Systems , Sun Microsystems , IBM , Silicon Graphics et Hewlett-Packard avaient développé des architectures 64 bits pour leurs stations de travail et serveurs. Les mainframes d'IBM constituaient une exception notable : ils utilisaient alors des données 32 bits et des adresses 31 bits, et n'ont intégré de processeurs 64 bits qu'à partir de 2000. Durant les années 1990, plusieurs microprocesseurs 64 bits économiques ont été utilisés dans l'électronique grand public et les applications embarquées. Notamment, la Nintendo 64 et la PlayStation 2 étaient équipées de microprocesseurs 64 bits avant leur intégration dans les ordinateurs personnels. Les imprimantes haut de gamme, les équipements réseau et les ordinateurs industriels utilisaient également des microprocesseurs 64 bits, tels que le Quantum Effect Devices R5000 . L'informatique 64 bits a commencé à se démocratiser sur les ordinateurs de bureau à partir de 2003, lorsque certains modèles de la gamme Macintosh d' Apple sont passés aux processeurs PowerPC 970 (appelés G5 par Apple) et qu'Advanced Micro Devices (AMD) a commercialisé son premier processeur x86-64 64 bits . La mémoire physique a fini par atteindre les limites du 32 bits. En 2023, les ordinateurs portables étaient couramment équipés de 16 Go de mémoire et les serveurs d'au moins 64 Go, dépassant largement la capacité d'adressage de 4 Go du 32 bits.
Chronologie des données 64 bits
- 1961
- IBM propose le supercalculateur IBM 7030 Stretch , qui utilise des mots de données de 64 bits et des mots d'instruction de 32 ou 64 bits.
- 1974
- Control Data Corporation lance le supercalculateur vectoriel CDC Star-100 , qui utilise une architecture de mots de 64 bits (les systèmes CDC précédents étaient basés sur une architecture de 60 bits).
- International Computers Limited lance la série ICL 2900, offrant des capacités de calcul en complément à deux pour les entiers 32, 64 et 128 bits ; en virgule flottante 64 et 128 bits ; en décimal compacté 32, 64 et 128 bits ; et un registre accumulateur 128 bits. Cette architecture a été reprise dans plusieurs machines ICL et Fujitsu. La plus récente est la Fujitsu Supernova, qui émule l'environnement d'origine sur des processeurs Intel 64 bits.
- 1976
- Cray Research livre le premier supercalculateur Cray-1 , basé sur une architecture de mots de 64 bits et qui constituera la base des futurs supercalculateurs vectoriels Cray.
- 1983
- Elxsi lance le mini-supercalculateur parallèle Elxsi 6400. L'architecture Elxsi dispose de registres de données 64 bits mais d'un espace d'adressage 32 bits.
- 1989
- Intel lance le processeur Intel i860 RISC ( Reduced Instruction Set Computer ). Commercialisé comme un « microprocesseur 64 bits », il possède essentiellement une architecture 32 bits, améliorée par une unité graphique 3D capable d'effectuer des opérations sur des entiers 64 bits.
- 1993
- Atari lance la console de jeux vidéo Atari Jaguar , dont l'architecture inclut des chemins de données de 64 bits.
Chronologie des adresses 64 bits
- 1991
- MIPS Computer Systems produit le premier microprocesseur 64 bits, le R4000 , qui implémente l' architecture MIPS III , la troisième révision de son architecture MIPS . Ce processeur est utilisé dans les stations de travail graphiques SGI, à commencer par l' IRIS Crimson . Kendall Square Research livre son premier supercalculateur, le KSR1, basé sur une architecture de processeur RISC 64 bits propriétaire fonctionnant sous OSF/1 .
- 1992
- Digital Equipment Corporation (DEC) introduit l'architecture Alpha 64 bits pure, issue du projet PRISM .
- 1994
- Intel annonce son projet d' architecture IA- 64 64 bits (développée conjointement avec Hewlett-Packard ) pour succéder à ses processeurs IA-32 32 bits . Un lancement entre 1998 et 1999 était prévu.
- 1995
- Sun lance un processeur SPARC 64 bits , l' UltraSPARC . HAL Computer Systems, filiale de Fujitsu, lance des stations de travail basées sur un processeur 64 bits, le SPARC64 de première génération conçu indépendamment par HAL . IBM commercialise les microprocesseurs A10 et A30, les premiers processeurs PowerPC AS 64 bits. IBM propose également une mise à niveau 64 bits pour le système AS/400, permettant la conversion du système d'exploitation, de la base de données et des applications.
- 1996
- Nintendo lance la console de jeux vidéo Nintendo 64 , construite autour d'une variante à bas coût du MIPS R4000. HP commercialise la première implémentation de son architecture 64 bits PA-RISC 2.0 , le PA-8000 .
- 1998
- IBM lance la gamme POWER3 de processeurs PowerPC/ POWER entièrement 64 bits .
- 1999
- Intel publie le jeu d'instructions pour l' architecture IA-64 . AMD dévoile publiquement son ensemble d'extensions 64 bits pour IA-32, appelé x86-64 (rebaptisé ultérieurement AMD64).
- 2000
- IBM commercialise son premier mainframe 64 bits basé sur l'architecture z/Architecture , le zSeries z900. L'architecture z/Architecture est une version 64 bits de l' architecture ESA/390 32 bits, elle-même dérivée de l'architecture System/360 32 bits .
- 2001
- Après de nombreux retards de commercialisation, Intel lance sa gamme de processeurs IA-64. Rebaptisée Itanium et destinée aux serveurs haut de gamme, elle ne réalise pas les ventes escomptées.
- 2003
- AMD lance ses gammes de processeurs Opteron et Athlon 64 , basées sur son architecture AMD64 , la première architecture de processeur 64 bits x86. Apple commercialise également le processeur 64 bits « G5 » PowerPC 970, produit par IBM. Intel maintient que ses puces Itanium resteront ses seuls processeurs 64 bits.
- 2004
- Intel, en réaction au succès commercial d'AMD, admet avoir développé un clone des extensions AMD64, nommé IA-32e (rebaptisé ensuite EM64T, puis Intel 64). Intel commercialise des versions mises à jour de ses processeurs Xeon et Pentium 4 compatibles avec le nouveau jeu d'instructions 64 bits.
- VIA Technologies annonce le processeur Isaiah 64 bits.
- 2006
- Sony, IBM et Toshiba ont commencé la production du processeur Cell 64 bits pour la PlayStation 3 , les serveurs, les stations de travail et autres appareils. Intel a lancé le Core 2 Duo , son premier processeur x86-64 grand public pour ses gammes d'ordinateurs portables, de bureau et de stations de travail. Les précédentes gammes de processeurs 64 bits n'étaient pas largement disponibles sur le marché grand public (la plupart des Pentium 4/D 64 bits étaient destinés aux OEM). Les Pentium 4, Pentium D et Celeron 64 bits n'ont pas été produits en masse avant fin 2006 en raison de problèmes de rendement (la plupart des plaquettes à bon rendement étaient destinées aux serveurs et aux ordinateurs centraux, tandis que le grand public restait basé sur les processeurs 32 bits gravés en 130 nm jusqu'en 2006). Ils sont rapidement devenus des processeurs d'entrée de gamme après le lancement du Core 2. AMD a lancé son premier processeur mobile 64 bits, gravé en 90 nm.
- 2011
- ARM Holdings annonce ARMv8-A, la première version 64 bits de la famille d'architectures ARM .
- 2012
- ARM Holdings a annoncé ses cœurs Cortex-A53 et Cortex-A57, ses premiers cœurs basés sur son architecture 64 bits, le 30 octobre 2012.
- 2013
- Apple annonce l' iPhone 5S , qui est le premier smartphone doté d'un processeur 64 bits, le système sur puce A7 basé sur l'architecture ARMv8-A, ainsi que l' iPad Air et l'iPad Mini 2 , qui sont les premières tablettes équipées de processeurs 64 bits.
- 2014
- RISC-V , avec prise en charge des architectures 32 bits et 64 bits, a été publié. Google annonce la tablette Nexus 9 , le premier appareil Android à fonctionner sur la puce Tegra K1 64 bits.
- 2015
- Apple annonce l' iPod Touch (6e génération) , le premier iPod Touch à utiliser un processeur 64 bits, le système sur puce A8 basé sur ARMv8-A, ainsi que l' Apple TV (4e génération) , la première Apple TV à utiliser un processeur 64 bits.
- 2018
- Apple annonce l' Apple Watch Series 4 , la première Apple Watch à utiliser un processeur 64 bits, le système sur puce S4 basé sur ARMv8-A.
- 2020
- Synopsis annonce l'ARCv3 ISA, la première version 64 bits de l' ARC ISA . Apple lance l' Apple M1 , qui ne prend pas en charge les applications 32 bits.
- 2023
- Qualcomm lance les Snapdragon 8 Gen 3 et Snapdragon X Elite , qui ne prennent pas en charge les applications ARM 32 bits.
Chronologie des systèmes d'exploitation 64 bits
- 1985
- Cray lance UNICOS , la première implémentation 64 bits du système d'exploitation Unix .
- 1993
- DEC lance le système d'exploitation 64 bits DEC OSF/1 AXP de type Unix (rebaptisé plus tard Tru64 UNIX) pour ses systèmes basés sur l' architecture Alpha .
- 1994
- La prise en charge du processeur R8000 est ajoutée par Silicon Graphics au système d'exploitation IRIX dans la version 6.0.
- 1995
- DEC publie OpenVMS 7.0, la première version 64 bits complète d'OpenVMS pour Alpha. Première distribution Linux 64 bits pour l'architecture Alpha publiée.
- 1996
- Silicon Graphics a ajouté la prise en charge des processeurs R4x00 en mode 64 bits au système d'exploitation IRIX dans la version 6.2.
- 1998
- Sun lance Solaris 7, avec une prise en charge complète des architectures UltraSPARC 64 bits .
- 2000
- IBM lance z/OS , un système d'exploitation 64 bits dérivé de MVS , pour les nouveaux mainframes 64 bits zSeries ; Linux 64 bits sur z Systems suit presque immédiatement la sortie du processeur.
- 2001
- Linux devient le premier noyau de système d'exploitation à prendre entièrement en charge x86-64 (sur un simulateur, car aucun processeur x86-64 n'avait encore été commercialisé).
- 2001
- Microsoft lance Windows XP Édition 64 bits pour l' architecture IA-64 de l' Itanium ; celle-ci peut exécuter des applications 32 bits via une couche d'exécution.Mac OS X 10.3 « Panther », qui prend désormais en charge l'arithmétique entière 64 bits native sur les processeurs PowerPC 970. Plusieurs distributions Linux sont publiées avec la prise en charge d' AMD64 . FreeBSD est également publié avec la prise en charge d'AMD64.
- 2005
- Le 4 janvier, Microsoft abandonne Windows XP Édition 64 bits, aucun PC équipé de processeurs IA-64 n'étant disponible depuis septembre précédent, et annonce le développement de versions x86-64 de Windows pour la remplacer. Le 31 janvier, Sun lance Solaris 10 compatible avec les processeurs AMD64 et EM64T. Le 29 avril, Apple publie Mac OS X 10.4 « Tiger », offrant une prise en charge limitée des applications en ligne de commande 64 bits sur les machines équipées de processeurs PowerPC 970 ; les versions ultérieures pour Mac Intel prennent en charge les applications en ligne de commande 64 bits sur les Mac équipés de processeurs EM64T. Le 30 avril, Microsoft publie Windows XP Professionnel Édition x64 et Windows Server 2003 Édition x64 pour les processeurs AMD64 et EM64T.
- 2006
- Microsoft lance Windows Vista , incluant une version 64 bits pour les processeurs AMD64/EM64T qui conserve la compatibilité 32 bits. Dans cette version 64 bits, toutes les applications et tous les composants Windows sont en 64 bits, même si de nombreuses versions 32 bits sont également incluses pour assurer la compatibilité avec les modules complémentaires .Mac OS X 10.5 « Leopard », qui prend entièrement en charge les applications 64 bits sur les machines équipées de processeurs PowerPC 970 ou EM64T.Windows 7 qui, comme Windows Vista, inclut une version 64 bits complète pour les processeurs AMD64/Intel64 ; la plupart des nouveaux ordinateurs sont équipés par défaut d’une version 64 bits. Microsoft lance également Windows Server 2008 R2 , le premier système d’exploitation serveur exclusivement 64 bits. Apple lance Mac OS X 10.6 , « Snow Leopard », qui intègre un noyau 64 bits pour les processeurs AMD64/Intel64, bien que seuls certains modèles récents d’ordinateurs Apple exécutent ce noyau 64 bits par défaut. La plupart des applications fournies avec Mac OS X 10.6 sont désormais également en 64 bits.
- 2010
- Windows 7 (64 bits) devient le système d'exploitation le plus populaire sur Steam, dépassant Windows XP (32 bits).
- 2011
- Apple lance Mac OS X 10.7 , dit « Lion », qui exécute par défaut le noyau 64 bits sur les machines compatibles. Les machines plus anciennes, incapables d'exécuter le noyau 64 bits, utilisent le noyau 32 bits, mais, comme avec les versions précédentes, peuvent toujours exécuter des applications 64 bits ; Lion n'est pas compatible avec les machines dotées de processeurs 32 bits. Presque toutes les applications fournies avec Mac OS X 10.7 sont désormais compatibles 64 bits, y compris iTunes.Windows 8 qui prend en charge l'UEFI de classe 3 ( UEFI sans CSM) et le démarrage sécurisé . Apple lance OS X Mountain Lion , qui fait du noyau 64 bits le noyau par défaut sur certaines machines plus anciennes auparavant non prises en charge et supprime le noyau 32 bits.
- 2018
- Apple lance watchOS 5 , la première version de watchOS à proposer la prise en charge 64 bits.macOS 10.15 « Catalina », abandonnant la prise en charge des applications Intel 32 bits.Windows 11 le 5 octobre, qui ne prend en charge que les systèmes 64 bits, abandonnant ainsi la prise en charge des systèmes IA-32 et AArch32.Pixel 7 , qui abandonne la prise en charge des applications 32 bits. Apple lance watchOS 9 , la première version de watchOS conçue exclusivement pour les modèles d'Apple Watch dotés d'un processeur 64 bits (notamment l'Apple Watch Series 4 et les modèles ultérieurs, l'Apple Watch SE (1re génération) et les modèles ultérieurs, ainsi que la nouvelle Apple Watch Ultra ), abandonnant ainsi la prise en charge de l'Apple Watch Series 3 , dernier modèle d'Apple Watch équipé d'un processeur 32 bits.Android 14 , qui abandonne la prise en charge des applications 32 bits.
- 2024
- Microsoft publie la mise à jour Windows 11 2024 , dont les versions ARM abandonnent la prise en charge des applications ARM 32 bits.
Limites des processeurs
En principe, un microprocesseur 64 bits peut adresser 16 EB ( architecture x86-64 ( To ( ( 4 pétaoctets ISA Power v3.0 permet 64 bits pour une adresse effective, mappée sur une adresse segmentée avec entre 65 et 78 bits autorisés, pour la mémoire virtuelle et, pour tout processeur donné, jusqu'à 60 bits pour la mémoire physique.
L'architecture Oracle SPARC 2015 autorise 64 bits pour la mémoire virtuelle et, pour tout processeur donné, entre 40 et 56 bits pour la mémoire physique.
L'architecture système de mémoire virtuelle ARM AArch64 permet de 48 à 56 bits pour la mémoire virtuelle et, pour tout processeur donné, de 32 à 56 bits pour la mémoire physique.
La spécification DEC Alpha exige la prise en charge d' un minimum de 43 bits d'espace d'adressage mémoire virtuelle (8 To). Le matériel doit vérifier et gérer les erreurs si les bits restants sont nuls (pour assurer la compatibilité avec les futurs processeurs). Alpha 21064 prenait en charge 43 bits d'espace d'adressage mémoire virtuelle (8 To) et 34 bits d'espace d'adressage mémoire physique (16 Go). Alpha 21164 prenait en charge 43 bits d'espace d'adressage mémoire virtuelle (8 To) et 40 bits d'espace d'adressage mémoire physique (1 To). Alpha 21264 prenait en charge 43 ou 48 bits d'espace d'adressage mémoire virtuelle (8 To ou 256 To) configurables par l'utilisateur, et 44 bits d'espace d'adressage mémoire physique (16 To).
Applications 64 bits
32 bits contre 64 bits
Le passage d'une architecture 32 bits à une architecture 64 bits constitue une modification fondamentale, car la plupart des systèmes d'exploitation doivent être profondément remaniés pour tirer parti de la nouvelle architecture, ces logiciels devant gérer l'adressage mémoire. D'autres logiciels doivent également être portés pour utiliser les nouvelles fonctionnalités ; les anciens logiciels 32 bits peuvent être pris en charge soit parce que le jeu d'instructions 64 bits est un sur-ensemble du jeu d'instructions 32 bits (les processeurs compatibles 64 bits peuvent donc exécuter du code 32 bits), soit par émulation logicielle , soit par l'intégration d'un cœur de processeur 32 bits au sein du processeur 64 bits, comme c'était le cas pour certains processeurs Itanium d'Intel, qui intégraient un cœur IA-32 pour exécuter des applications x86 32 bits . Les systèmes d'exploitation pour ces architectures 64 bits prennent généralement en charge les applications 32 bits et 64 bits.
Une exception notable est l' IBM AS/400 , dont le logiciel est compilé dans une architecture de jeu d'instructions virtuelle (ISA) appelée TIMI ( Technology Independent Machine Interface ). Le code TIMI est ensuite traduit en code machine natif par un logiciel de bas niveau avant d'être exécuté. Seul ce logiciel de traduction doit être réécrit pour migrer l'intégralité du système d'exploitation et des logiciels vers une nouvelle plateforme, comme lors de la transition du jeu d'instructions natif de l'AS/400, passant de l'ancien IMPI 32/48 bits au nouveau PowerPC-AS 64 bits , nom de code Amazon . Le jeu d'instructions IMPI étant très différent du PowerPC 32 bits, cette transition fut encore plus importante que le simple passage d'un jeu d'instructions 32 bits à 64 bits.
Sur les matériels 64 bits à architecture x86-64 (AMD64), la plupart des systèmes d'exploitation et applications 32 bits fonctionnent sans problème de compatibilité. Si l'espace d'adressage plus étendu des architectures 64 bits facilite le traitement de grands ensembles de données dans des applications telles que la vidéo numérique , le calcul scientifique et les bases de données volumineuses , la question de savoir si ces architectures, ou leurs modes de compatibilité 32 bits , sont plus performantes que des systèmes 32 bits de prix comparable pour d'autres tâches fait l'objet de nombreux débats.
Un programme Java compilé peut s'exécuter sans modification sur une machine virtuelle Java 32 ou 64 bits. La longueur et la précision de tous les types intégrés, tels que char`int` short, `int` int, `int` long, `int`, float`int` et double`int`, ainsi que les types pouvant servir d'indices de tableau, sont spécifiés par la norme et ne dépendent pas de l'architecture sous-jacente. Les programmes Java exécutés sur une machine virtuelle Java 64 bits bénéficient d'un espace d'adressage plus étendu.
La vitesse n'est pas le seul critère à prendre en compte pour comparer les processeurs 32 bits et 64 bits. Des applications telles que le multitâche, les tests de charge et le clustering – pour le calcul haute performance (HPC) – peuvent être mieux adaptées à une architecture 64 bits lorsqu'elles sont déployées de manière appropriée. C'est pourquoi les clusters 64 bits sont largement déployés dans les grandes entreprises, comme IBM, HP et Microsoft.
Résumé:
- Un processeur 64 bits fonctionne de manière optimale avec un logiciel 64 bits.
- Un processeur 64 bits peut être rétrocompatible , ce qui lui permet d'exécuter des logiciels d'application 32 bits pour la version 32 bits de son jeu d'instructions, et peut également prendre en charge l'exécution de systèmes d'exploitation 32 bits pour la version 32 bits de son jeu d'instructions.
- Un processeur 32 bits est incompatible avec les logiciels 64 bits.
Avantages et inconvénients
Une idée fausse courante est que les architectures 64 bits ne sont pas meilleures que les architectures 32 bits, sauf si l'ordinateur dispose de plus de 4 Go de mémoire vive . Ce n'est pas tout à fait vrai :
- Certains systèmes d'exploitation et certaines configurations matérielles limitent l'espace mémoire physique à 3 Go sur les systèmes IA-32 , car une grande partie de la zone de 3 à 4 Go est réservée à l'adressage matériel (voir la limite des 3 Go ). Les architectures 64 bits peuvent adresser bien plus de 4 Go. Cependant, les processeurs IA-32, du Pentium Pro aux modèles suivants , permettent un espace d'adressage mémoire physique de 36 bits grâce à l'extension d'adresse physique (PAE), offrant ainsi une plage d'adresses physiques de 64 Go, dont jusqu'à 62 Go peuvent être utilisés par la mémoire principale. Les systèmes d'exploitation compatibles PAE peuvent ne pas être limités à 4 Go de mémoire physique, même sur les processeurs IA-32. Toutefois, les pilotes et autres logiciels en mode noyau, notamment les versions plus anciennes, peuvent être incompatibles avec PAE. Cette incompatibilité a été invoquée pour expliquer la limitation à 4 Go de RAM physique des versions 32 bits de Microsoft Windows (bien que la validité de cette explication soit contestée ).
- Certains systèmes d'exploitation réservent une partie de l'espace d'adressage des processus à leur propre usage, réduisant ainsi l'espace d'adressage total disponible pour l'allocation de mémoire aux programmes utilisateur. Par exemple, Windows 32 bits réserve 1 ou 2 Go (selon la configuration) de l'espace d'adressage total au noyau, ne laissant que 3 ou 2 Go (respectivement) disponibles pour le mode utilisateur. Cette limite est bien plus élevée sur les systèmes d'exploitation 64 bits.
- La mise en œuvre de fichiers mappés en mémoire devient plus complexe sur les architectures 32 bits, notamment avec la multiplication des fichiers de plus de 4 Go. Ces fichiers volumineux ne peuvent être mappés facilement en mémoire sur les architectures 32 bits, car seule une partie du fichier peut être mappée dans l'espace d'adressage à la fois. Pour accéder à un tel fichier par mappage mémoire, il est nécessaire de permuter les portions mappées dans et hors de l'espace d'adressage selon les besoins. Ceci pose problème, car le mappage mémoire, lorsqu'il est correctement implémenté par le système d'exploitation, est l'une des méthodes de transfert disque-mémoire les plus efficaces.
- Certains programmes 64 bits, tels que les encodeurs, les décodeurs et les logiciels de chiffrement, peuvent grandement bénéficier des registres 64 bits, tandis que les performances d'autres programmes, tels que ceux orientés vers les graphismes 3D, restent inchangées lors du passage d'un environnement 32 bits à un environnement 64 bits.x86-64 et AArch64 , prennent en charge davantage de registres à usage général que leurs homologues 32 bits (bien que cela ne soit pas spécifiquement lié à la longueur des mots). Il en résulte un gain de vitesse significatif pour les boucles serrées, car le processeur n'a pas besoin de récupérer les données depuis le cache ou la mémoire principale si celles-ci peuvent être stockées dans les registres disponibles.
- Exemple en C :
Disponibilité du logiciel
Les systèmes 64 bits basés sur x86 manquent parfois d'équivalents logiciels conçus pour les architectures 32 bits. Le problème le plus critique sous Microsoft Windows réside dans l'incompatibilité des pilotes de périphériques pour le matériel obsolète. La plupart des applications 32 bits peuvent fonctionner sur un système d'exploitation 64 bits en mode de compatibilité , également appelé mode d'émulation , par exemple la technologie Microsoft WoW64 pour IA-64 et AMD64. L'environnement de pilotes du mode natif Windows 64 bits s'exécute sur la bibliothèque NTDLL.DLL 64 bits , qui ne peut pas appeler le code du sous-système Win32 32 bits (souvent utilisé pour les périphériques dont la fonction matérielle est émulée par les logiciels en mode utilisateur, comme les imprimantes Windows). L'absence de pilotes 64 bits pour la plupart des périphériques jusqu'au début de l'année 2007 (Vista x64) rendait l'utilisation d'une version 64 bits de Windows complexe. Cependant, la tendance s'est depuis orientée vers l'informatique 64 bits, notamment avec la baisse du prix de la mémoire et la généralisation de l'utilisation de plus de 4 Go de RAM. La plupart des fabricants ont commencé à fournir des pilotes 32 bits et 64 bits pour les nouveaux périphériques, ce qui a mis fin au problème de l'indisponibilité des pilotes 64 bits. En revanche, aucun pilote 64 bits n'était fourni pour de nombreux périphériques plus anciens, qui ne pouvaient donc pas être utilisés sur des systèmes 64 bits.
La compatibilité des pilotes posait moins de problèmes avec les pilotes open source, car les pilotes 32 bits pouvaient être adaptés à une utilisation 64 bits. La prise en charge du matériel antérieur à début 2007 était problématique pour les plateformes open source, en raison du nombre relativement faible d'utilisateurs.de logiciels 16 bits . Cependant, la plupart des applications 32 bits fonctionnent correctement. Les utilisateurs de systèmes 64 bits sont contraints d'installer une machine virtuelle d'un système d'exploitation 16 ou 32 bits pour exécuter des applications 16 bits ou d'utiliser une alternative à NTVDM .
Mac OS X 10.4 « Tiger » et Mac OS X 10.5 « Leopard » disposaient d'un noyau 32 bits uniquement, mais pouvaient exécuter du code en mode utilisateur 64 bits sur des processeurs 64 bits. Mac OS X 10.6 « Snow Leopard » proposait des noyaux 32 et 64 bits et, sur la plupart des Mac, utilisait le noyau 32 bits même sur les processeurs 64 bits. Cela permettait à ces Mac de prendre en charge les processus 64 bits tout en conservant la compatibilité avec les pilotes de périphériques 32 bits ; toutefois, ils ne pouvaient pas bénéficier des pilotes 64 bits et des gains de performance associés. Mac OS X 10.7 « Lion » fonctionnait avec un noyau 64 bits sur un plus grand nombre de Mac, tandis que OS X 10.8 « Mountain Lion » et les versions ultérieures de macOS ne disposaient que d'un noyau 64 bits. Sur les systèmes dotés de processeurs 64 bits, les noyaux macOS 32 et 64 bits peuvent exécuter du code en mode utilisateur 32 bits. Toutes les versions de macOS jusqu'à macOS Mojave (10.14) incluaient des versions 32 bits des bibliothèques utilisées par les applications 32 bits, permettant ainsi l'exécution de logiciels en mode utilisateur 32 bits pour macOS sur ces systèmes. Apple a supprimé ces versions 32 bits des bibliothèques dans macOS Catalina (10.15).
Linux et la plupart des systèmes d'exploitation de type Unix , ainsi que leurs chaînes d'outils C et C++ , prennent en charge les processeurs 64 bits depuis de nombreuses années. De nombreuses applications et bibliothèques pour ces plateformes sont des logiciels libres , écrits en C et C++, et peuvent donc, si elles sont compatibles 64 bits, être compilées en versions 64 bits. Ce modèle de distribution basé sur le code source, avec des mises à jour fréquentes, facilite grandement la disponibilité des applications pour ces systèmes d'exploitation.
Modèles de données 64 bits
Dans les programmes 32 bits, les pointeurs et les types de données tels que les entiers ont généralement la même longueur. Ce n'est pas nécessairement le cas sur les machines 64 bits. Par conséquent, le mélange de types de données dans des langages de programmation tels que le C et ses dérivés comme le C++ et l'Objective-C peut fonctionner sur les implémentations 32 bits, mais pas sur les implémentations 64 bits.
Dans de nombreux environnements de programmation pour le C et les langages dérivés du C sur des machines 64 bits, intles variables conservent une largeur de 32 bits, tandis que les entiers longs et les pointeurs occupent 64 bits. On parle alors de modèle de données LP64 , abréviation de « Long, Pointer, 64 » . D'autres modèles existent, comme le modèle ILP64 où les trois types de données occupent 64 bits , et même le modèle SILP64 où les entiers courts occupent également 64 bits . Cependant, dans la plupart des cas, les modifications requises sont relativement mineures et simples, et de nombreux programmes bien écrits peuvent être recompilés pour le nouvel environnement sans aucune modification. Une autre alternative est le modèle LLP64 , qui maintient la compatibilité avec le code 32 bits en conservant les types `long` et ` pointer` sur 32 bits. LL fait référence au type entier long long , qui est d'au moins 64 bits sur toutes les plateformes, y compris les environnements 32 bits.intlong
Il existe également des systèmes dotés de processeurs 64 bits utilisant un modèle de données ILP32 , auquel s'ajoutent des entiers long long 64 bits ; ce modèle est également utilisé sur de nombreuses plateformes à processeurs 32 bits. Il permet de réduire la taille du code et celle des structures de données contenant des pointeurs, au prix d'un espace d'adressage beaucoup plus restreint, ce qui en fait un choix judicieux pour certains systèmes embarqués. Pour les jeux d'instructions tels que x86 et ARM, où la version 64 bits possède davantage de registres que la version 32 bits, il offre un accès à ces registres supplémentaires sans pénalité d'espace mémoire. Courant sur les machines RISC 64 bits, il a été implémenté en x86 sous le nom d'ABI x32 et a récemment été utilisé dans les Apple Watch Series 4 et 5.
| Modèle de données | Microsoft Windows (x86-64, IA-64 et ARM64) utilisant Visual C++ et MinGW |
|---|---|
| Unix et apparentés , par exemple Solaris , Linux , BSD , macOS ; Windows (avec Cygwin) ; z/OS | |
| Portage de Solaris sur SPARC64 par HAL Computer Systems | |
| UNICOS classique (contre UNICOS/mp, etc.) |
Un modèle de programmation est un choix effectué pour s'adapter à un compilateur donné, et plusieurs peuvent coexister sur le même système d'exploitation. Cependant, le modèle de programmation choisi comme modèle principal pour l' interface de programmation d'application (API) du système d'exploitation est généralement prédominant.
Un autre élément à prendre en compte est le modèle de données utilisé par les pilotes de périphériques . Dans la plupart des systèmes d'exploitation modernes, les pilotes constituent la majeure partie du code du système d'exploitation (même si nombre d'entre eux ne sont pas chargés lors de l'exécution du système). De nombreux pilotes utilisent intensivement les pointeurs pour manipuler les données et, dans certains cas, doivent charger des pointeurs d'une taille spécifique dans le matériel qu'ils prennent en charge pour l'accès direct à la mémoire (DMA). Par exemple, un pilote pour un périphérique PCI 32 bits demandant au périphérique d'effectuer un DMA vers les zones supérieures de la mémoire d'une machine 64 bits ne pourrait pas satisfaire les requêtes du système d'exploitation visant à charger des données du périphérique vers la mémoire au-delà de la limite de 4 gigaoctets , car les pointeurs correspondant à ces adresses ne tiendraient pas dans les registres DMA du périphérique. Ce problème est résolu soit par la prise en compte, par le système d'exploitation, des limitations de mémoire du périphérique lors de la génération des requêtes DMA aux pilotes, soit par l'utilisation d'une unité de gestion de la mémoire d'entrée/sortie (IOMMU).
Architectures 64 bits actuelles
- Extensions AMD64 d'AMD (utilisées dans les processeurs Athlon 64 , Opteron , Sempron , Turion 64 , Phenom , Athlon II , Phenom II , APU , FX , Ryzen et Epyc )
- Les extensions Intel 64 d' Intel , utilisées dans les processeurs Intel Core 2/i3/i5/i7/i9, certains processeurs Atom et les processeurs Celeron , Pentium et Xeon plus récents.
- Extensions 64 bits de VIA Technologies , utilisées dans les processeurs VIA Nano
- Le processeur Power10 d'IBM et ses prédécesseurs, ainsi que les processeurs IBM A2
- Processeur IBM Telum II et prédécesseurs
- Hitachi AP8000E
- Les processeurs M8 et S7 d' Oracle et leurs prédécesseurs
- Les processeurs SPARC64 XII et SPARC64 XIfx de Fujitsu et leurs prédécesseurs
La plupart des architectures 64 bits dérivées d'une version 32 bits de la même architecture peuvent exécuter nativement du code écrit pour la version 32 bits, sans perte de performance. Par exemple, les processeurs x86-64 peuvent exécuter des applications IA-32 à pleine vitesse. Ce type de prise en charge est communément appelé prise en charge bi-architecture ou, plus généralement, prise en charge multi-architecture .