C'est un peu "un mégaoctet devrait être suffisant pour n'importe qui", mais ...
Un espace d'adressage plat de 64 bits permet jusqu'à 4,3 milliards de fois d'espace en plus qu'un espace d'adressage 32 bits. Cela représente 17 179 869 184 Gio.
De toute évidence, la transition de 8 bits à 16 bits a été assez rapide (je regarde les choses à l'adolescence dans les années 80, en ignorant tous ces mainframes et minis car ils ne pouvaient pas exécuter un port d'Elite). La transition de 16 bits à 32 bits a pris un peu plus de temps, et 32 bits ont en fait duré un certain temps.
Maintenant que nous avons 64 bits, serait-il stupide de dire "17 179 869 184 GiB devraient être suffisants pour n'importe qui"?
Ceci est une question de programmeurs parce que j'ai vraiment à l'esprit le point de vue de la programmation. Même si un ordinateur a un jour une quantité de mémoire de travail apparemment infinie, cela ne signifie pas que les applications devront voir un espace d'adressage plat apparemment infini.
Fondamentalement, pouvons-nous, les programmeurs, pousser un soupir de soulagement et dire "eh bien, quels que soient les nombres entiers ou flottants, au moins je n'ai plus à me soucier de la croissance de mes pointeurs?".
la source
Réponses:
Je ne pense pas que nous aurons des machines avec plus de 2 ^ 64 octets de RAM dans un avenir prévisible, mais ce n'est pas tout cet espace d'adressage qui est utile.
À certaines fins, il est utile de mapper d'autres choses dans l'espace d'adressage, les fichiers étant un exemple important. Alors, est-il raisonnable d'avoir plus de 2 ^ 64 octets de tout type de stockage attachés à un ordinateur dans un avenir prévisible?
Je dois dire oui. Il doit y avoir bien plus de 2 ^ 64 octets de stockage, car cela ne représente qu'environ 17 millions de personnes avec des disques durs de téraoctets. Nous avons des bases de données de plusieurs pétaoctets depuis quelques années maintenant, et 2 ^ 64 n'est que d'environ 17 000 pétaoctets.
Je pense que nous aurons probablement une utilisation pour un espace d'adressage> 2 ^ 64 au cours des prochaines décennies.
la source
À moins que les ordinateurs ne commencent à utiliser des technologies de pointe qui n'existent pas encore dans les laboratoires, disposer de plus de 2 64 espaces adressables n'est tout simplement pas physiquement possible avec la technologie silicium actuelle . La technologie atteint ses limites physiques . La limite de vitesse (GHz) a été atteinte il y a déjà quelques années. La limite de miniaturisation est également très proche. Actuellement, la technologie la plus avancée en production est de 20 nm, dans les laboratoires, elle est de 4 nm avec des transistors composés de 7 atomes.
Juste pour mettre en perspective le temps nécessaire au développement d'une nouvelle technologie: les ordinateurs actuels sont basés sur des transistors inventés en 1925, et la technologie actuelle du silicium remonte à 1954.
Quant aux technologies alternatives:
la source
for(unsigned __int128 i=0; i<2^128; i++){}
. Avec la technologie actuelle, il n'y a pas beaucoup d'utilisation d'entiers 128 bits. Mis à part peut-être revenir à l'espace d'adressage non protégé, parce que marcher accidentellement sur la mémoire d'autres applications dans l'espace d'adressage 128 bits serait assez impossible à faire, même si vous écriviez au hasard dans des adresses aléatoires.Le super ordinateur relié par Thorbjoern a environ 2 ^ 47 B de mémoire physique.
En supposant que la loi de Moore s'applique à la mémoire des super-ordinateurs, elle deviendra 2 ^ 64 B de mémoire physique en seulement 34 ans. C'est comme "OMG, nous vivrons pour voir ça !!!!". Peut être. Et en effet, c'est fascinant. Mais tout aussi hors de propos.
La question est la suivante: ai-je besoin d'un espace d'adressage de 128 bits pour utiliser 2 ^ 65 B de mémoire physique?
La réponse est NON . J'ai besoin d'un espace d'adressage de 128 bits pour adresser 2 ^ 65 B de mémoire virtuelle à partir d'un seul processus .
C'est un point clé de votre question, « Est-ce des applications du monde réel jamais besoin d' un 128 bits plat espace d'adressage? ». " Besoin ", pas absolument, vous pouvez vous en tirer avec moins, faire mapper l'espace d'adressage (pas plat); mais alors vous n'auriez pas un "espace d'adressage plat de 128 bits".
Par exemple, supposons que vous vouliez attribuer aux atomes sur Terre une adresse de mémoire physique (pour une raison quelconque, principalement pour avoir fourni cet exemple simple), commencez à zéro et continuez à compter (revenez à moi lorsque vous aurez terminé). Maintenant, quelqu'un d'autre désire faire la même chose sur Kepler-10c (qui est à 568 ly).
Vous ne voudriez pas d'un conflit d'adresses, donc l'autre personne alloue une adresse de mémoire élevée dans l' espace de mémoire plat disponible, ce qui vous permet, à eux et aux personnes suivantes, d'être directement adressés, sans mapper la mémoire. Si vous ne le ferez pas ou que vous pourrez vous passer d'une relation un à un entre votre mémoire et son adresse (vous êtes prêt à implémenter un tableau fragmenté), vous pouvez vous en tirer avec une mémoire de 64 bits, ou moins.
Chaque fois que quelqu'un propose " X quantité de Y sera suffisante ", une telle prédiction reste souvent de courte durée.
La question est donc: combien de temps aurons-nous des processus uniques , qui utilisent 2 ^ 65 B de mémoire. J'espère jamais.
Le gros problème de notre temps est que la puissance de traitement d'un seul processeur est limitée. Il y a une limite de taille définie par la taille des atomes, et pour une taille donnée, il y a une limite de la fréquence d'horloge, donnée par la vitesse de la lumière, la vitesse à laquelle l'information sur les changements de champs magnétiques se propage dans notre univers.
Et en fait, la limite a été atteinte il y a quelques années et nous nous sommes installés à des taux d'horloge inférieurs à ce qu'ils étaient auparavant. La puissance du processeur n'augmentera plus linéairement. Les performances sont désormais améliorées grâce à une exécution dans le désordre, à la prédiction de branche, à des caches plus importants, à plus de codes d'opération, à des opérations vectorielles, etc. Il y a eu une optimisation architecturale .
Et une idée importante est celle de la parallélisation. Le problème de la parallélisation est qu'elle ne prend pas de l'ampleur. Si vous avez écrit du code lent il y a 20 ans, cela a fonctionné beaucoup plus rapidement il y a 10 ans. Si vous écrivez du code lent maintenant, il ne sera pas beaucoup plus rapide dans 10 ans.
Les processus qui utilisent 2 ^ 65 B de mémoire sont un signe de stupidité extrême. Cela montre qu'il n'y a pas eu d' optimisation architecturale . Pour traiter judicieusement ces données, vous auriez besoin d'environ 10 millions de cœurs, dont la plupart passeraient du temps à attendre qu'une ressource soit disponible, car les cœurs qui ont effectivement acquis la ressource utilisent la mémoire physique sur Ethernet sur une machine complètement différente. La clé pour traiter de gros problèmes complexes est de les décomposer en petits problèmes simples et de ne pas construire des systèmes de plus en plus grands et de plus en plus complexes. Vous avez besoin d'un partitionnement horizontal, lorsque vous traitez avec des sh * tloads de données.
Mais même dans l' hypothèse, cette folie devrait continuer, rassurez - vous 128 bits est suffisant :
Pour utiliser l'espace d'adressage de 128 bits, nous avons besoin de 2 ^ 133 bits, donc 2 ^ 152 atomes dont nous avons besoin . En supposant une distribution égale des atomes sur terre, voyons combien de croûte nous devons prendre pour les obtenir:
Vous avez donc 130 mètres à parcourir sur toute la surface (dont les 80% recouverts d'eau, de sable ou de glace). CA ne va pas arriver. Même en supposant que vous puissiez le déterrer (lol) et que toute cette matière puisse être transformée en puces, où obtiendrez-vous l'énergie?
la source
Eh bien, nous pourrions certainement utiliser un grand espace d'adressage.
Imagine ça:
L'espace d'adressage n'est pas limité à un seul ordinateur. Au lieu de cela, une adresse identifie de manière unique une cellule de mémoire dans un espace d'adressage universel. Vous pouvez donc avoir un pointeur vers une cellule mémoire sur n'importe quel ordinateur dans le monde. Il faudra un protocole pour permettre la lecture à partir de la mémoire distante, mais c'est un détail d'implémentation. :-)
La mémoire est Write Once, Read Many, c'est-à-dire que vous ne pouvez écrire des données sur une adresse mémoire qu'une seule fois. Pour une valeur mutable, vous devrez allouer un nouveau morceau de mémoire chaque fois qu'il change. Nous, les programmeurs, avons commencé à voir les avantages de l'immuabilité et de la mémoire transactionnelle, donc une conception matérielle qui ne permet même pas d'écraser la mémoire n'est peut-être pas une idée aussi impossible.
Combinez ces deux idées et vous aurez besoin d'un immense espace d'adressage.
la source
Plus les ordinateurs sont capables, plus les problèmes avec lesquels ils doivent travailler sont complexes.
Le plus grand supercalculateur répertorié sur top500.org est http://www.top500.org/system/10587 avec environ 220 To de RAM et 180000 cœurs. En d'autres termes, c'est ce avec quoi les "applications réelles" peuvent fonctionner sur cette plate-forme.
Les ordinateurs d'aujourd'hui sont aussi puissants que les superordinateurs il y a 10 à 15 ans (même si la puissance de calcul peut être cachée dans votre carte graphique).
Ainsi, un facteur 100 en mémoire en 10-15 ans signifie que l'espace d'adressage 64 bits sera un facteur limitant dans environ 100 ans (puisque log (100 millions) / log (100) est d'environ 6) si la tendance actuelle se maintient.
la source
Tout ce fil est assez drôle à lire, très forte opinion pour et contre ...
Voici quelque chose ..
Je comprends de la question que c'était une technologie agnostique et non liée par le temps. Ainsi, le développement actuel du silicium, des ordinateurs quantiques ou de l'Infinite Monkey Peddling Abacus est en fait hors de propos.
Les calculs et les extrapolations sont également assez drôles, bien que la réponse de back2dos fonctionne assez bien pour illustrer l'ampleur de ce que ce nombre représente. alors travaillons avec ça.
Mettez votre esprit dans le futur où l'homme n'est plus tenu de confiner sa petite planète, un moyen de transport réaliste a été développé pour permettre le transport sur de très grandes distances et les structures sociales (économiques, politiques, etc.) ont évolué pour transcender les générations. Les projets pharaoniques s'étalant sur les lieux sont devenus monnaie courante. Concentrons-nous sur deux aspects de cette vision farfelue de l'avenir, si l'on souhaite passer du temps à expliquer tous les détails, je suis certain que l'on pourrait rationaliser tout cela à travers une série d'évolutions plausibles sur les technologies actuelles. En d'autres termes, un avenir plausible, quoique peu probable ... de toute façon ...
Le premier projet appelé Colossus en mémoire de ce premier ordinateur électronique car c'est le premier ordinateur planétaire. La confrérie des colosses a en effet trouvé un moyen de capturer un petit planétoïde et de le transformer en ordinateur de travail. Découvert récemment dans la ceinture de Kuyper qui est particulièrement riche en isotopes fusibles la rendant énergétiquement autonome, ils ont rendu le processus de construction complètement autonome avec des sondes, des robots, etc. rendant le système informatique auto-réparable et auto-constructif. Dans cette condition, il serait concevable que l'espace d'adressage 2 ^ 64 soit quelque peu confiné pour ce projet car ils souhaitent obtenir un espace d'adressage continu pour porter facilement les applications déjà existantes pour un autre projet également en cours.
L'autre projet est plus une expérience de mise en réseau qu'un système physique, mais il a rapidement démontré qu'un plus grand espace d'adressage était nécessaire. Il y a 540 ans, un jeune hacker jouait avec l'idée de créer un gigantesque filet de robots. Internet s'était déjà étendu pour inclure les colonies naissantes autour du système solaire en s'appuyant sur les avancées majeures de l'énergie de fusion. Son idée était essentiellement de répartir les petits bots sur le réseau, mais la charge utile était destinée à fournir une machine virtuelle unifiée où le code serait écrit en supposant qu'il avait toute la puissance de tous les bots combinés. De gros efforts ont été déployés dans le compilateur et le déploiement pour tenter d'optimiser les décalages et les algorithmes sophistiqués conçus pour prendre en compte la non-fiabilité inhérente du support sous-jacent. Une langue a été spécifiquement écrite pour cibler ce nouveau " notre pirate a créé une société faîtière et a vendu la puissance de calcul au plus offrant. À sa mort, il a fait don de ce botnet et de toutes les technologies à une fondation. À ce stade, le botnet fonctionnait déjà depuis 64 ans et avait déjà dépassé l'espace d'adressage 2 ^ 64 il y a un bon moment, brisant ainsi l'idée préconçue de 1000 ans selon laquelle nous n'aurions jamais besoin d'un espace d'adressage plus grand. De nos jours, 2 ^ 128 est la norme et ce qui sera utilisé pour Colossus, mais il est déjà prévu de l'étendre à 2 ^ 256. notre pirate a créé une société faîtière et a vendu la puissance de calcul au plus offrant. À sa mort, il a fait don de ce botnet et de toutes les technologies à une fondation. À ce stade, le botnet fonctionnait déjà depuis 64 ans et avait déjà dépassé l'espace d'adressage 2 ^ 64 il y a un bon moment, brisant la préconception vieille de 1000 ans selon laquelle nous n'aurions jamais besoin d'un espace d'adressage plus grand. De nos jours, 2 ^ 128 est la norme et ce qui sera utilisé pour Colossus, mais il est déjà prévu de l'étendre à 2 ^ 256.
Je pourrais probablement trouver des scénarios plus plausibles qui illustrent que oui ... il est tout à fait possible, voire presque certain, qu'un jour nous aurons besoin d'un espace d'adressage plus grand que cela.
Cela dit, je ne pense pas que je perdrais le sommeil à ce sujet, si votre application nécessite un certain espace d'adressage pour fonctionner correctement, alors elle vivra probablement dans une machine virtuelle qui lui donne tout ce dont elle a besoin ...
Ainsi ... réponse courte ...
OUI, Très probablement
mais
Pourquoi ne pas y faire face quand le problème vient ... Personnellement je ne fais jamais d'hypothèses dans mes programmes donc je n'ai jamais de surprises.
la source
Les emplacements d'adresses ont un coût logarithmique par rapport à la largeur de l'adresse, nous pouvons donc considérer les limites supérieures en fonction des paramètres en question:
Nous pourrions supposer que les configurations possibles sont la limite supérieure de la plus grande adresse de mémoire constructible physiquement possible.
la source
Eh bien, je pense que pendant quelques années à venir, vous pourrez probablement pousser un soupir de soulagement. Si vous regardez la vitesse de l'innovation dans le matériel, vous pouvez constater qu'au cours des dernières années, aucune percée significative ne s'est produite. Les processeurs avec des fréquences de 2.x GHz existent depuis un certain temps maintenant et toute augmentation de la puissance de traitement de nos jours vient du fait de placer plus de cœurs sur la puce. La capacité des lecteurs continue d'augmenter, mais pas au même rythme qu'il y a 10 ans.
Je pense que notre technologie actuelle approche des limites de la physique.
Qu'est-ce que cela signifie pour l'avenir? Je pense que pour obtenir de nouveaux sauts quantiques dans le traitement de l'information, des technologies entièrement nouvelles devront être utilisées. Ces technologies utiliseront vraisemblablement des «logiciels», quoique peut-être dans un contexte assez étranger à ce qu'il est aujourd'hui. Et qui sait quels besoins d'espace d'adressage ils ont ou peuvent fournir? Ou si l'espace d'adressage est même un concept significatif dans cette technologie?
Alors ne vous retirez pas pour l'instant.
la source
Oui, il y en aura. (Jeux? Trucs liés à l'intelligence artificielle?)
Une question plus appropriée pourrait être de savoir si cela comptera pour le programmeur typique. Pensez à la façon dont Ruby convertit automatiquement les numéros de FixNum à BigNum et vice-versa si nécessaire. Je serais surpris si d'autres langues (du moins les dynamiques) ne finissaient pas par faire la même chose.
la source
Stocker cette quantité d'informations est une chose et en faire quelque chose d'utile en est une autre. De mon point de vue, je ne vois pas la nécessité de ce stockage, sauf si nous avons la puissance de traitement nécessaire pour l'utiliser. Peut-être que la mise en cache d'énormes bases de données est une chose, mais pour le traitement numérique, je pense que nous avons d'abord besoin de processeurs.
la source
Les applications auront-elles jamais besoin de autant de mémoire? Tout à fait possible. Des applications comme les prévisions météorologiques, les simulations physiques en général ou la cryptographie bénéficieront probablement toujours de plus de mémoire et de puissance de traitement. Et qui sait ce que sera la killer-app dans 50 à 100 ans? Écrans holographiques? Des tableaux arc-en-ciel pour chaque mot de passe de 100 caractères possible?
Est-il physiquement possible de représenter autant de mémoire? Certainement possible. Par exemple, un ordinateur quantique à 100 qubits peut représenter le même nombre d'états qu'un ordinateur classique à 2 ^ 100 bits. Bien plus que les 2 ^ 67 bits d'espace d'adressage dont nous disposons actuellement. (Je sais, un ordinateur quantique de 100 qubits ressemble à de la science-fiction. Je ne suis pas convaincu qu'il sera jamais possible d'en construire un. Mais d'un autre côté, on pourrait probablement en dire autant de toute technologie qui sera utilisée 50 ou dans 100 ans.)
Mais je doute sérieusement que les "espaces d'adressage plats" soient la principale préoccupation d'ici là. Peut-être que nous développerons des algorithmes quantiques d'ici là, où le concept d'un "espace d'adressage" n'a pas beaucoup de sens. Même si les ordinateurs restent «classiques», nous devrons probablement faire face à un nombre effrayant d'unités de traitement avec une mémoire non uniforme qui leur est attachée.
la source
Que se passerait-il si chaque emplacement de mémoire avait une adresse unique au monde?
FILE
,fopen()
etc.la source
Il suffit de «penser à voix haute» ici, mais il m'est venu à l'esprit que l'on pouvait faire des choses sémantiques intéressantes avec les 64 bits restants sur, disons, un ordinateur 128 bits. Cf. la façon dont IP fonctionne.
Je suis sûr que les gens pourraient trouver des utilisations amusantes pour quelque chose comme ça. :) Quelqu'un sait pourquoi la PS3 utilise ses adresses 128 bits? Vous ne perdriez certainement pas toute cette mémoire supplémentaire (et je parle uniquement de la mémoire pour les adresses réelles, pas de ce que ces adresses indiquent). Adresses en tant que données. Vous pouvez même coder une branche dans l'adresse elle-même ... c'est-à-dire que 0x [ifAddress] [elseAddress] Les systèmes multicœurs pourraient également bénéficier de ce type de segmentation. Et et...
la source
Y a-t-il une raison d'aller au-dessus de l'architecture 64 bits? (18 446 744 073 709 551 615 octets de mémoire adressable)
En utilisant la norme IEEE 1541-2002 concernant l'utilisation de préfixes pour les multiples binaires d'unités de mesure liées à l'électronique numérique et à l'informatique, nous constatons que:
1 octet = 8 bits, 1 kilo-octet = 1024 octets, 1 mégaoctet = 1024 Ko, 1 gigaoctet = 1024 Mo, 1 téraoctet = 1024 Go, 1 pétaoctet = 1024 To, 1 exaoctet = 1024 PB
Et ainsi de suite pour Zettabyte, Yottabyte, Xenottabyte, Shilentnobyte, Domegemegrottebyte, Icosebyte et Monoicosebyte.
Le stockage total des disques Earth est estimé à environ 2 500 exaoctets en 2016.
Un registre 64 bits peut accéder directement à 15 exaoctets de mémoire. Un registre de 128 bits peut accéder directement à 3,40282367 × 10 ^ 35 zettaoctets. Ou 295.147.905.247.928.000 Monoicosebytes.
Nous pouvons donc voir qu'un registre de 128 bits serait bien placé pour accéder à toute la mémoire de la Terre, à tout ce qui a été envoyé sur Internet, à chaque mot prononcé ou écrit, à chaque film, et bien plus encore, pendant un bon bout de temps. .
Donc, la réponse est oui , en attendant un cadre qui peut pointer vers n'importe quelle chose numérique qui a jamais été ou sera jamais .
la source
La meilleure estimation que je puisse trouver pour le nombre de neurones dans un cerveau humain moyen est d'environ 86 milliards. Nous ne pouvons pas comparer directement la RAM aux neurones en général, mais dans un réseau neuronal, vous pouvez en quelque sorte. Il prend un certain nombre d'adresses pour représenter l'état d'un neurone ou d'une synapse. Je vais donc lancer une supposition sauvage et dire que nous examinons quelque chose comme un billion d'adresses pour créer un réseau neuronal qui serait comparable à un cerveau humain. Donc, si cela peut être fait, je ne vois pas pourquoi cela n'irait pas beaucoup plus loin que cela. Les types de problèmes qu'un tel réseau pourrait envisager seraient au-delà de nos capacités à comprendre ainsi que la raison pour laquelle ils devraient être si importants pour ce faire.
la source
C'est l'espace d'adressage. Supposons que nous modifions la norme C afin que realloc ne soit pas autorisé à modifier le pointeur utilisé. Je peux allouer 2 ^ 33 blocs de mémoire aujourd'hui (il faudrait 192 Go de RAM sur mon Mac, 8 milliards de fois un pointeur de 8 octets et 16 octets d'espace alloué, donc je ne peux pas le faire maintenant, mais je pourrais acheter un Mac qui peut le faire sans souscrire une nouvelle hypothèque).
Et je peux réaffecter n'importe lequel de ces pointeurs pour contenir 2 ^ 33 octets. Pas beaucoup en même temps cependant :-) Si la réallocation n'autorise pas le déplacement des pointeurs et que 2 ^ 33 octets sont autorisés, les pointeurs d'origine doivent être séparés de 2 ^ 33 octets, ce qui signifie que 2 ^ 66 octets de mémoire sont nécessaires.
la source
Bien sûr, je ne vois aucune raison pour laquelle cette quantité d'espace ne serait pas nécessaire à l'avenir. Si vous envisagez de développer un jeu, il n'y a aucune limite à la façon dont un jeu peut être réaliste ou complexe, non? (Détail des graphiques / nombre de polygones utilisés et algorithmes définissant l'interaction et le comportement des objets)?
Qui sait, dans 10 ans, nous pourrions jouer à des jeux de 10 To avec des exigences minimales de 12 Go de RAM et un processeur à 8 cœurs. : P
la source
Il y a 20 ans, il y avait 2 milliards de personnes de moins sur la planète et la plupart des systèmes informatiques avaient une mémoire adressable qui pouvait être mesurée en kilo-octets. Aujourd'hui, la population mondiale augmente au même rythme et le nombre d'utilisateurs d'ordinateurs augmente de façon exponentielle chaque année.
Il est vrai que très peu de systèmes ont besoin d'un espace d'adressage complet de 64 octets. Cependant, certains systèmes stockent chaque jour des téraoctets d'informations. Cela a été possible en raison de l'augmentation des utilisateurs d'ordinateurs et des vitesses Internet. Nous pouvons déjà prendre en charge des vitesses Internet de 10 Go / s après seulement 23 ans après l'invention de HTTP. À ce rythme, je pense qu'il serait stupide de ne pas s'attendre à des débits Internet de 1 To / s ou plus dans 50 ans. Lorsque nous pouvons tous déplacer des données aussi rapidement, il y aura plus de données à stocker tandis que plus de personnes existeront pour stocker ces données et il est presque inévitable qu'il faudra une autre transition généralisée vers un système 128 bits, et finalement 256 et 512 bits.
la source
oui, les applications ne remplissent pas chaque octet d'espace virtuel. la randomisation de la disposition de l'espace d'adressage serait la plus avantageuse.
la source