human
Qu'est-ce que cela signifie exactement que le N64 fonctionne sur 64 bits ? [ Meilleure réponse imo ] ( URL_0 ) Expliquez comme si j'avais cinq ans.
gpt
Cela a à voir avec la façon dont le CPU et toutes les autres parties essentielles de la console (la RAM, le stockage et les entrées/sorties) stockent et transmettent les données les unes aux autres. Commençons à un niveau élevé. Vous savez que les jeux sont écrits dans une sorte de langage de programmation - pour le N64, je pense que c'était C. [1] Des langages comme C sont des moyens pour les programmeurs humains d'exprimer ce qu'ils veulent que l'ordinateur (ou dans ce cas, la console) faire . Une fois que les développeurs du jeu ont fini d'écrire le jeu, le code C est * * compilé * * (traduit, essentiellement) jusqu'à un langage plus simple, mais beaucoup plus difficile à lire - pour les humains, du moins - appelé * * assembly * * . Lorsque nous compilons du code C jusqu'à l'assemblage, nous devons casser toutes les structures compliquées comme les boucles, les instructions if-else, les appels de fonction, etc. ( que vous connaissez peut - être si vous avez déjà codé ) en un petit ensemble d' * * instructions * * simples . Ces instructions disent essentiellement au CPU de faire des choses comme ajouter quelques nombres , déplacer quelques bits d' un * * registre * * ( une unité de stockage dans le CPU ) à un autre , ou aller à une instruction différente et l' exécuter . Le langage d'assemblage est ce qui se rapproche le plus du déplacement direct de bits dans le processeur, sans pour autant tout exprimer en binaire (0 et 1). En fait, le langage assembleur est directement traduisible en binaire. C'est là que la distinction 64 bits devient importante. Vous voyez, il y a une raison pour laquelle tout finit par se résumer à des 0 et des 1. Au niveau matériel , la seule façon de représenter les informations est par des états marche / arrêt ( c'est - à - dire des niveaux de tension élevés ou bas ) - off / low est représenté par un 0 et on / high par un 1 . Nous pouvons stocker ces états dans des registres , que j'ai mentionnés plus tôt , et les faire passer autour et à travers des portes logiques ( qui prennent deux séquences de bits en entrée , effectuent des opérations comme ET , OU , NON sur eux , et sortent le résultat ) le long de * * bus * * , qui ne sont essentiellement que des fils sur les circuits imprimés . Par conséquent , une fois que nous avons traduit nos instructions de l' assembleur en binaire , nous pouvons les stocker dans des registres , les récupérer et les exécuter une par une . [ 2 ] Maintenant vous vous demandez peut - être : comment savons - nous exactement quelle instruction récupérer -- d' ailleurs , chaque fois que le CPU a besoin de données , comment sait - il où les trouver ? La réponse est , nous utilisons plus de bits pour représenter l' * * adresse * * de l' instruction ou des données que nous voulons récupérer . La longueur de l'adresse - le nombre de bits qu'elle contient - nous indique dans combien de « casiers » possibles les données peuvent résider. Puisqu'un nombre binaire de n bits peut aller de 0 à 2^n - 1, une adresse de n bits nous donne 2^n endroits possibles pour chercher une instruction ou une donnée. De même, la longueur de l'instruction affecte la quantité de données que vous pouvez y transmettre. Il suffit de quelques bits pour indiquer au processeur quelle opération effectuer ; le reste de l'instruction peut être utilisé pour transmettre des données pour cette opération, comme des nombres à ajouter ou l'adresse de certaines données (éventuellement une autre instruction). Maintenant , enfin , vient la réponse à votre question : le fait que le N64 " tourne sur 64 bits " signifie que notre valeur de n dans ce cas est 64 . Nos adresses ont donc une longueur de 64 bits , tout comme nos instructions . [ 3 ] C'est ce qu'on appelle la * * largeur du chemin de données * * du processeur , car cela signifie également que les bus physiques entre les composants sont deux fois plus larges . Par conséquent , chaque fois que vous souhaitez saisir un bit particulier en mémoire , vous disposez de 2 ^ 64 emplacements pour le récupérer ( beaucoup ) . Vos instructions ont également une longueur de 64 bits, ce qui signifie que vos registres doivent avoir une "largeur" ​​de 64 bits (c'est-à-dire qu'ils peuvent contenir 64 bits) et pour être cohérents, toutes vos autres données doivent également résider en mémoire dans des blocs de 64. Alors quel est le but de tout cela ? Remontons à travers les couches d'abstraction pour le découvrir. Contrairement à une architecture 32 bits, avoir toutes vos adresses et données en 64 bits signifie que le processeur peut contenir plus de données dans la mémoire de travail, c'est-à-dire qu'il peut prendre en charge des tailles de RAM plus importantes. Vous avez peut-être entendu parler de RAM ou même mis à niveau votre ordinateur avec plus de RAM. Il s'agit essentiellement de la "mémoire de travail" du processeur. Tout en effectuant ses tâches, le CPU peut charger des données du stockage sur disque dans la RAM, ou stocker des données temporaires dans la RAM, et y accéder beaucoup plus rapidement que si tout était stocké sur disque. [ 4 ] Ainsi , alors qu'un processeur 32 bits peut utiliser au plus 2 ^ 32 bits = 4 Go de RAM , un processeur 64 bits peut supporter 2 ^ 64 = 2 exaoctets de RAM ! C'est une énorme amélioration, et nous ne sommes même pas près d'avoir un matériel aussi puissant ! Un autre avantage est que puisque toutes les données sont en 64 bits , vous pouvez également représenter des valeurs plus grandes dans vos langages de programmation , donc une variable entière qui aurait représenté 2 ^ 32 - 1 ( 32 1 en binaire ) au plus , peut maintenant représenter 2 ^ 64 - 1 . L'inconvénient est que les mêmes données prennent maintenant deux fois plus de bits à représenter , avec juste un groupe de 0 à l'avant ( c'est-à-dire que 2 ^ 32 - 1 passe de 32 1 à 32 0 et 32 ​​1 's ) . Ainsi, le même programme nécessite plus de mémoire pour s'exécuter dans un système 64 bits que dans un système 32 bits. Dans l'ensemble, le fait d'avoir une architecture 64 bits offrait au N64 une plus grande vitesse et une plus grande puissance de traitement. C'est la même raison pour laquelle vous voyez maintenant des ordinateurs portables et des systèmes d'exploitation passer tous au 64 bits, et des logiciels disponibles en versions 64 bits et 32 ​​bits. J'espère que cela a du sens et vous a permis de mieux comprendre comment chaque ordinateur fonctionne en son cœur ! Faites-moi savoir s'il y a quelque chose qui doit être clarifié :) Désolé pour la longueur. Si vous êtes intéressé par l'architecture informatique, une excellente ressource est URL_1 - c'est un cours gratuit conçu pour vous enseigner les bases des systèmes informatiques, du niveau transistor jusqu'à la conception de votre propre processeur ! ( Avez-vous déjà vu ces superbes processeurs Minecraft ? C'est ce qu'ils ont dû apprendre au préalable ! ) Berkeley a également toutes les notes de cours de notre [cours d'informatique] (URL_3) en ligne, si vous voulez approfondir encore plus :D Enfin, les notes de bas de page sont ci - dessous - elles ne sont pas essentielles pour comprendre la distinction 64 bits , mais pourraient répondre à toutes vos questions persistantes ! [ 1 ] Le C est généralement considéré comme un langage de relativement bas niveau , ce qui signifie que vous obtenez un contrôle plus direct sur le matériel ( allouer des bits en mémoire , etc . ) donc c'est très puissant , mais il faut plus d' efforts pour comprendre , et coder en . Les langages de haut niveau comme Python ou Java font abstraction de ces contrôles plus fins, en les échangeant contre une syntaxe plus conviviale. [ 2 ] Cette idée de stocker essentiellement un programme ( une séquence d' instructions ) sous forme de données , et de le manipuler comme n'importe quelle autre donnée n'était pas évidente au début ! C'est ce qu'on appelle le * concept de programme stocké * , et a conduit à la proposition historique de l' [ architecture von Neumann ] ( URL_2 ) , qui est à la base de la façon dont tous les processeurs sont conçus aujourd'hui . Cela nous a permis de passer de la nécessité de saisir le programme entier à chaque fois que vous vouliez l'exécuter, à l'écrire une fois, à le compiler, puis à l'exécuter à tout moment. [ 3 ] Attendez , j'ai dit que nous pouvions intégrer des adresses dans une instruction 64 bits après avoir déjà utilisé certains bits , mais les adresses elles - mêmes font 64 bits ! Eh bien , nous pouvons nous en tirer avec * l' adressage relatif * - au lieu de nous référer à une position absolue avec 64 bits , nous pouvons simplement reculer ou avancer à partir de notre position actuelle en ajoutant ou en soustrayant ces 58 bits de notre adresse actuelle ( car rappelez - vous , chaque l'instruction a une adresse !) [4] Pourquoi le CPU accède-t-il plus rapidement à la RAM que votre disque dur ? C'est assez intuitif ; les registres qui composent la RAM sont physiquement beaucoup plus proches du processeur, alors que d'autres supports de stockage sont généralement plus éloignés, et donc les données prennent plus de temps pour aller et venir (en plus du temps qu'il faut pour trouver les données sur votre disque dur ! ) Par conséquent , accéder à la mémoire depuis « hors CPU » est coûteux , tandis que l' accès aux registres sur le CPU ( organisés en caches ) et à proximité de la RAM prend moins de temps . C'est comme emprunter un livre à la bibliothèque pour le prendre sur votre bureau quand vous le voulez, au lieu de retourner à la bibliothèque chaque fois que vous avez besoin d'un livre. Ces différents emplacements de stockage des données forment une * [ hiérarchie de mémoire ] ( URL_0 ) * qui a un effet énorme sur la vitesse du programme .