Este é um pouco "um megabyte deve ser suficiente para qualquer um", mas ...
Um espaço de endereço plano de 64 bits permite até 4,3 milhões de bilhões de vezes mais espaço que um espaço de endereço de 32 bits. São 17.179.869.184 GiB.
Obviamente, a transição de 8 bits para 16 bits foi bem rápida (eu estou vendo as coisas dos anos 80, ignorando todos os mainframes e minis porque eles não conseguiam rodar um porto de Elite). A transição de 16 bits para 32 bits demorou um pouco mais e 32 bits realmente duraram um bom tempo.
Agora, temos 64 bits, seria estúpido dizer que "17.179.869.184 GiB devem ser suficientes para alguém"?
Esta é uma pergunta dos programadores, porque eu realmente tenho o ponto de vista de programação em mente. Mesmo que um dia um computador tenha uma quantidade aparentemente infinita de memória operacional, isso não significa que os aplicativos precisarão ver um espaço de endereço plano aparentemente infinito.
Basicamente, podemos programadores dar um suspiro de alívio e dizer "bem, quaisquer números inteiros ou flutuadores podem fazer, pelo menos não preciso me preocupar com meus indicadores crescendo mais?".
fonte
Respostas:
Não acho que teremos máquinas com mais de 2 ^ 64 bytes de RAM no futuro próximo, mas não é para isso que serve o espaço de endereçamento.
Para alguns propósitos, é útil mapear outras coisas no espaço de endereço, sendo os arquivos um exemplo importante. Portanto, é razoável ter mais de 2 ^ 64 bytes de qualquer tipo de armazenamento conectado a um computador em um futuro próximo?
Eu teria que dizer que sim. Deve haver mais de 2 ^ 64 bytes de armazenamento por aí, já que são apenas 17 milhões de pessoas com discos rígidos terabytes. Temos bancos de dados com vários petabytes há alguns anos e 2 ^ 64 são apenas 17 mil petabytes.
Acho que provavelmente usaremos um espaço de endereço> 2 ^ 64 nas próximas décadas.
fonte
A menos que os computadores comecem a usar algumas tecnologias inovadoras que ainda não existem em laboratórios, ter mais de 2 64 espaços endereçáveis simplesmente não é fisicamente possível com a atual tecnologia de silício . A tecnologia está atingindo os limites físicos . O limite de velocidade (GHz) foi atingido já há alguns anos. O limite de miniaturização também está muito próximo. Atualmente, a tecnologia mais avançada em produção é de 20 nm, em laboratórios é de 4 nm com transistores feitos de 7 átomos.
Apenas para colocar em perspectiva quanto tempo leva para o desenvolvimento de novas tecnologias: os computadores atuais são baseados em transistores inventados em 1925, e a atual tecnologia de silício remonta a 1954.
Quanto às tecnologias alternativas:
fonte
for(unsigned __int128 i=0; i<2^128; i++){}
. Com a tecnologia atual, não há muito uso de números inteiros de 128 bits. Além de talvez voltar ao espaço de endereço não protegido, porque seria acidentalmente pisar acidentalmente na memória de outros aplicativos no espaço de endereço de 128 bits, mesmo se você estivesse gravando endereços aleatórios aleatoriamente.O super computador ligado ao Thorbjoern possui cerca de 2 ^ 47 B de memória física.
Supondo que a Lei de Moore seja válida para a memória de supercomputadores, ela se tornará 2 ^ 64B de memória física em apenas 34 anos. É como "OMG, viveremos para ver isso !!!!". Talvez. E, de fato, é fascinante. Mas tão irrelevante.
A questão é: preciso de espaço de endereço de 128 bits para usar 2 ^ 65 B de memória física?
A resposta é NÃO . Preciso de espaço de endereçamento de 128 bits para endereçar 2 ^ 65 B de memória virtual a partir de um único processo .
Esse é um ponto-chave da sua pergunta: "Os aplicativos do mundo real precisarão de um espaço de endereço plano de 128 bits ?". " Need ", não absolutamente, você pode conviver com menos, tornar o espaço de endereço mapeado (não plano); mas você não teria um "espaço de endereço plano de 128 bits".
Como exemplo, suponha que você desejasse atribuir aos átomos da Terra um endereço de memória física (por qualquer motivo, principalmente por fornecer este exemplo simples), começar do zero e continuar contando (volte para mim quando terminar). Agora, outra pessoa deseja fazer o mesmo no Kepler-10c (a 568 km de distância).
Você não deseja um conflito de endereços para que a outra pessoa aloque um endereço de memória alta no espaço de memória disponível, permitindo que você, eles e as próximas pessoas sejam endereçados diretamente , sem mapear a memória. Se você não estiver fazendo isso ou conseguir sobreviver sem um relacionamento individual entre a memória e o endereço (está disposto a implementar uma matriz esparsa), poderá se dar bem com uma mísera memória de 64 bits ou menos.
Sempre que alguém propõe " X quantidade de Y será suficiente ", essa previsão geralmente permanece curta.
Portanto, a pergunta é: em quanto tempo teremos processos únicos , que usam 2 ^ 65 B de memória. Espero nunca.
O grande problema de nosso tempo é que o poder de processamento de uma única CPU é limitado. Há um limite de tamanho definido pelo tamanho dos átomos e, para um determinado tamanho, há um limite na taxa de clock, dada pela velocidade da luz, a velocidade na qual as informações sobre mudanças nos campos magnéticos são propagadas em nosso universo.
E, na verdade, o limite foi atingido alguns anos atrás e estabelecemos taxas de clock abaixo do que eram anteriormente. A energia da CPU não aumentará mais linearmente. Agora, o desempenho é aprimorado por meio de execução fora de ordem, previsão de ramificação, caches maiores, mais códigos operacionais, operações de vetores e outros. Houve otimização arquitetônica .
E uma ideia importante é a da paralelização. O problema da paralelização é que ele não aumenta. Se você escreveu um código lento há 20 anos, funcionou muito mais rápido há 10 anos. Se você escrever um código lento agora, ele não ficará muito mais rápido em 10 anos.
Os processos que usam 2 ^ 65 B de memória são um sinal de extrema estupidez. Isso mostra que não houve otimização arquitetural . Para processar esses dados de maneira sensata, você precisaria de 10 milhões de núcleos, a maioria dos quais gastaria tempo aguardando a disponibilização de algum recurso, porque esses núcleos que realmente adquiriram o recurso estão usando memória física pela Ethernet em uma máquina completamente diferente. A chave para lidar com problemas grandes e complexos é decompô-los em problemas pequenos e simples e não criar sistemas cada vez maiores e cada vez mais complexos. Você precisa de particionamento horizontal ao lidar com sh * tloads de dados.
Mas, mesmo supondo que essa loucura deva continuar, tenha certeza de que 128 bits é suficiente :
Para usar o espaço de endereçamento de 128 bits, precisamos de 2 ^ 133 bits, portanto 2 ^ 152 átomos que precisamos . Assumindo uma distribuição igual de átomos na Terra, vamos ver a quantidade de crosta que precisamos retirar para obtê-los:
Então você tem 130 metros para percorrer toda a superfície (incluindo os 80% cobertos de água, areia ou gelo). Não vai acontecer. Mesmo supondo que você possa desenterrá-lo (risos) e todo esse assunto ser adequado para ser processado em chips, de onde você obterá energia?
fonte
Bem, definitivamente poderíamos usar um grande espaço de endereço.
Imagina isto:
O espaço de endereço não está limitado a um único computador. Em vez disso, um endereço identifica exclusivamente uma célula de memória em um espaço de endereço universal. Assim, você pode apontar para uma célula de memória em qualquer computador do mundo. Será necessário haver algum protocolo para permitir a leitura da memória remota, mas esse é um detalhe da implementação. :-)
A memória é Write Once, Read Many, ou seja, você só pode gravar dados em um endereço de memória uma vez. Para um valor mutável, você precisará alocar um novo pedaço de memória toda vez que ele mudar. Nós programadores começamos a ver os profissionais da imutabilidade e da memória transacional; portanto, um design de hardware que nem sequer permite a substituição de memória pode não ser uma idéia tão impossível.
Combine essas duas idéias e você precisará de um espaço de endereço enorme.
fonte
Quanto mais computadores capazes se tornam, mais problemas complexos eles precisam trabalhar.
O maior supercomputador listado em top500.org é http://www.top500.org/system/10587, com cerca de 220 TB de RAM e 180000 núcleos. Em outras palavras, é com isso que "aplicativos da vida real" podem trabalhar nessa plataforma.
Os computadores atuais são tão poderosos quanto os supercomputadores 10 a 15 anos atrás (mesmo que o poder da computação possa estar oculto na sua placa de vídeo).
Portanto, um fator 100 na memória em 10 a 15 anos significará que o espaço de endereço de 64 bits será um fator limitante em cerca de 100 anos (já que log (100 milhões) / log (100) é em torno de 6) se a tendência atual se mantiver.
fonte
Todo este tópico é bastante engraçado de ler, uma opinião muito forte a favor e contra ...
Aqui alguma coisa ..
Eu entendo pela pergunta que era uma tecnologia agnóstica e não limitada pelo tempo. Assim, o desenvolvimento atual em silício, computadores quânticos ou o Ábaco Infinito para Pedagogia de Macacos é de fato irrelevante.
Cálculos e extrapolações também são bastante engraçados, embora a resposta do back2dos funcione muito bem para ilustrar o tamanho do que esse número representa. então vamos trabalhar com isso.
Coloque sua mente no futuro, onde o homem não está mais preso ao seu pequeno planeta, um meio de transporte realista foi desenvolvido para permitir o transporte por grandes distâncias e as estruturas sociais (econômicas, políticas, etc.) evoluíram para transcender gerações. Projetos faraônicos abrangendo tornaram-se lugares comuns. Vamos nos concentrar em dois aspectos dessa visão tão abrangente do futuro, se alguém quiser gastar tempo para explicar todos os detalhes. Tenho certeza de que poderia racionalizar tudo isso através de uma série de evoluções plausíveis nas tecnologias atuais. Em outras palavras, um futuro plausível, embora improvável ... de qualquer maneira ...
O primeiro projeto chamado Colossus, em memória desse primeiro computador eletrônico, é o primeiro computador planetário. A Irmandade Colossus realmente descobriu um meio de capturar um pequeno planetoide e transformá-lo em um computador em funcionamento. Recentemente descobertos no cinturão de Kuyper, que é perticularmente rico em isótopos fusíveis, tornando-o energeticamente autônomo, eles tornaram o processo de construção completamente autônomo com sondas, robôs etc., tornando o sistema de computador auto-reparável e auto-construtivo. Nessa condição, seria concebível que o espaço de endereço 2 ^ 64 fosse um pouco restritivo para este projeto, pois eles desejam obter um espaço de endereço contínuo para facilmente portar aplicativos já existentes para outro projeto que também está em andamento.
O outro projeto é mais um experimento em rede do que um sistema físico, mas rapidamente demonstrou que era necessário um espaço de endereço maior. 540 anos atrás, um jovem hacker estava brincando com a idéia de criar uma gigantesca rede de bots. A internet já havia se expandido para incluir as colônias nascentes ao redor do sistema solar, construindo os principais avanços feitos no poder de fusão. Suas idéias eram basicamente ter pequenos bots espalhados pela rede, mas a carga útil destinava-se a fornecer uma máquina virtual unificada onde o código seria escrito assumindo que ele tinha todo o poder de todos os bots combinados. Foram feitos grandes esforços no compilador e na implantação, tentando otimizar atrasos e algoritmos sofisticados projetados para levar em conta a falta de confiabilidade inerente ao meio subjacente. Um idioma foi escrito especificamente para segmentar este novo " nosso hacker criou uma empresa guarda-chuva e vendeu o poder da computação ao maior lance. Quando ele morreu, ele doou esse botnet e todas as tecnologias para uma fundação. Nesse ponto, a botnet já estava em funcionamento há 64 anos e já havia superado o espaço de endereço 2 ^ 64 há algum tempo, quebrando o preconceito de mil anos de que nunca exigiríamos um espaço de endereço maior. Atualmente 2 ^ 128 é a norma e o que será usado para o Colossus, mas já há planos de expandir isso para 2 ^ 256. nosso hacker criou uma empresa guarda-chuva e vendeu o poder da computação ao maior lance. Quando ele morreu, ele doou esse botnet e todas as tecnologias para uma fundação. Nesse ponto, a botnet já estava em funcionamento há 64 anos e já havia superado o espaço de endereço 2 ^ 64 há algum tempo, quebrando o preconceito de mil anos de que nunca exigiríamos um espaço de endereço maior. Atualmente 2 ^ 128 é a norma e o que será usado para o Colossus, mas já há planos de expandir isso para 2 ^ 256.
Provavelmente, eu poderia criar cenários mais plausíveis que ilustram que sim ... é bem possível, mas quase certo, que um dia precisaremos de um espaço de endereço maior que isso.
Dito isto, no entanto, acho que não perderia o sono por isso, se seu aplicativo exigir que um determinado espaço de endereço funcione corretamente, provavelmente ele viverá em uma VM que fornece tudo o que precisa ...
Assim ... resposta curta ...
SIM, muito provavelmente
mas
Por que não lidar com isso quando o problema surge ... Pessoalmente, nunca faço suposições em meus programas, portanto, nunca recebo surpresas.
fonte
Os locais dos endereços têm um custo logarítmico em relação à largura do endereço, para que possamos considerar os limites superiores com base nos parâmetros em questão:
Poderíamos assumir as configurações possíveis como o limite superior para o maior endereço de memória construtível fisicamente possível.
fonte
Bem, acho que, nos próximos anos, você provavelmente poderá respirar aliviado. Se você observar a velocidade da inovação em hardware, pode-se observar que nos últimos anos não houve avanços significativos. As CPUs com frequências de 2.x GHz já existem há algum tempo e qualquer aumento no poder de processamento hoje em dia vem do empacotamento de mais núcleos no chip. A capacidade da unidade ainda está subindo, mas não nas mesmas taxas de 10 anos atrás.
Eu acho que nossa tecnologia atual está se aproximando dos limites da física.
O que isso significa para o futuro? Penso que, para obter novos saltos quânticos no processamento de informações, serão necessárias novas tecnologias. Essas tecnologias provavelmente usarão "software", embora possivelmente em um contexto bastante estranho ao que é hoje. E quem sabe quais requisitos de espaço de endereço eles têm ou podem fornecer? Ou se o espaço de endereço é mesmo um conceito significativo nessa tecnologia?
Portanto, não se aposente nisso ainda.
fonte
Sim, haverá. (Jogos? Coisas relacionadas à inteligência artificial?)
Uma pergunta mais apropriada pode ser se isso conta para o programador típico. Pense em como o Ruby converte automaticamente números do FixNum para o BigNum e vice-versa quando necessário. Eu ficaria surpreso se outros idiomas (pelo menos os dinâmicos) não fizerem o mesmo eventualmente.
fonte
Armazenar essa quantidade de informação é uma coisa e fazer algo útil com ela é outra. Do meu ponto de vista, não vejo necessidade desse armazenamento, a menos que tenhamos o poder de processamento para utilizá-lo. Talvez o cache de grandes bancos de dados seja uma coisa, mas para o processamento numérico, acho que precisamos de processadores primeiro.
fonte
Os aplicativos precisarão de tanta memória? Bem possível. Aplicativos como previsões do tempo, simulações físicas em geral ou criptografia provavelmente sempre se beneficiarão de mais memória e mais poder de processamento. E quem sabe qual será o aplicativo assassino daqui a 50 a 100 anos? Displays holográficos? Tabelas Rainbow para todas as senhas possíveis de 100 caracteres?
É fisicamente possível representar tanta memória? Definitivamente possível. Por exemplo, um computador quântico de 100 qubit pode representar o mesmo número de estados que um computador clássico de 2 ^ 100 bits. Muito mais do que os 2 ^ 67 bits de espaço de endereço que temos agora. (Eu sei, um computador quântico de 100 qubit soa como ficção científica. Não estou convencido de que algum dia será possível criar um. Mas, por outro lado, provavelmente poderia ser dito o mesmo sobre qualquer tecnologia que será usada 50 daqui a 100 anos.)
Mas duvido seriamente que "espaços de endereço simples" sejam a principal preocupação até então. Talvez estejamos desenvolvendo algoritmos quânticos até então, onde o conceito de "espaço de endereço" não faz muito sentido. Mesmo se os computadores permanecerem "clássicos", provavelmente teremos que lidar com um número assustador de unidades de processamento com memória não uniforme anexada a eles.
fonte
O que aconteceria se cada local de memória tivesse um endereço exclusivo globalmente?
FILE
,fopen()
etc.fonte
Apenas "pensando em voz alta" aqui, mas me ocorreu que alguém poderia fazer coisas semânticas interessantes com os 64 bits restantes em um computador, digamos, de 128 bits. Cf. a maneira como o IP funciona.
Tenho certeza de que as pessoas poderiam usar usos divertidos para algo assim. :) Alguém sabe para que o PS3 usa seus endereços de 128 bits? Certamente você não desperdiçaria toda essa memória extra (e eu estou falando apenas da memória dos endereços reais, não do que esses endereços apontam). Endereços como dados. Você pode até codificar uma ramificação no próprio endereço ... ou seja, 0x [ifAddress] [elseAddress] Os sistemas com vários núcleos também podem se beneficiar desse tipo de segmentação. E e...
fonte
Existe alguma razão para ir além da arquitetura de 64 bits? (18.446.744.073.709.551.615 bytes de memória endereçável)
Usando o padrão IEEE 1541-2002 referente ao uso de prefixos para múltiplos binários de unidades de medida relacionadas à eletrônica e computação digitais, vemos que:
1 Byte = 8 Bits, 1 Kilobyte = 1024 Bytes, 1 Megabyte = 1024 KB, 1 Gigabyte = 1024 MB, 1 Terabyte = 1024 GB, 1 Petabyte = 1024 TB, 1 Exabyte = 1024 PB
E assim por diante, para Zettabyte, Yottabyte, Xenottabyte, Shilentnobyte, Domegemegrottebyte, Icosebyte e Monoicosebyte.
O armazenamento total da unidade Earth é estimado em cerca de 2.500 Exabytes a partir de 2016.
Um registro de 64 bits pode acessar diretamente 15 Exabytes de memória. Um registro de 128 bits pode acessar diretamente 3,40282367 × 10 ^ 35 Zettabytes. Ou 295.147.905.247.928.000 monoicosebytes.
Assim, podemos ver que um registro de 128 bits estaria em uma boa posição para acessar toda a memória da Terra, tudo já enviado na Internet, todas as palavras ditas ou escritas, todos os filmes e muito mais, por muito tempo. .
Portanto, a resposta é sim , dependendo de uma estrutura que possa apontar para qualquer coisa digital que já foi ou será .
fonte
A melhor estimativa que posso encontrar para o número de neurônios em um cérebro humano médio é de cerca de 86 bilhões. Não podemos comparar diretamente a RAM com os neurônios em geral, mas em uma rede neural você meio que pode. São necessários vários endereços para representar o estado do neurônio ou uma sinapse. Então, vou fazer um palpite e dizer que estamos vendo algo como um trilhão de endereços para criar uma rede neural que seria comparável a um cérebro humano. Então, se isso pode ser feito, não vejo por que não iria muito além disso. Os tipos de problemas que uma rede como essa poderia ser capaz de contemplar estariam além de nossas habilidades de compreensão e também por que eles precisariam ser tão grandes para fazê-lo.
fonte
É o espaço de endereço. Digamos que alteremos o padrão C para que o realloc não tenha permissão para alterar o ponteiro usado. Posso alocar 2 ^ 33 blocos de memória hoje (exigiria 192 GB de RAM no meu Mac, 8 bilhões de vezes um ponteiro de 8 bytes e 16 bytes de espaço alocado, por isso não posso fazer isso agora, mas poderia comprar um Mac que possa fazer isso. sem tirar uma nova hipoteca).
E posso realocar qualquer um desses ponteiros para conter 2 ^ 33 bytes. Porém, não muitos ao mesmo tempo :-) Se o realloc não permitir mover ponteiros e 2 ^ 33 bytes forem permitidos, os ponteiros originais deverão estar separados por 2 ^ 33 bytes, o que significa que são necessários 2 ^ 66 bytes de memória.
fonte
Claro, não vejo razão para que essa quantidade de espaço não seja necessária no futuro. Se você considera o desenvolvimento de jogos, não há limite para quão realista ou complexo um jogo pode ser feito, certo? (Detalhe dos gráficos / número de polígonos utilizados e algoritmos que definem a interação e o comportamento dos objetos)?
Quem sabe, daqui a 10 anos, estaremos jogando jogos de 10 TB com requisitos mínimos de 12 GB de RAM e um processador de 8 núcleos. : P
fonte
Há 20 anos, havia 2 bilhões a menos de pessoas no planeta e a maioria dos sistemas de computadores tinha memória endereçável que podia ser medida em kilobytes. Hoje, a população do mundo aumenta na mesma proporção e o número de usuários de computadores aumenta exponencialmente a cada ano.
É verdade que muito poucos sistemas precisam de um espaço de endereço completo de 64 bytes. Alguns sistemas armazenam terabytes de informações todos os dias, no entanto. Isso foi possível devido ao aumento de usuários de computador e velocidade da internet. Já podemos suportar velocidades de internet de 10 GB / s após apenas 23 anos após a invenção do HTTP. A esse ritmo, acho que seria tolice não esperar 1 TB / s ou maiores velocidades de internet em 50 anos. Quando todos nós podemos mover dados com tanta rapidez, haverá mais dados a serem armazenados, enquanto mais pessoas existirão para armazená-los e é quase inevitável que haja outra transição generalizada para um sistema de 128 bits e, eventualmente, 256 e 512 bits.
fonte
Sim, os aplicativos não preenchem todos os bytes de espaço virtual. a aleatorização do layout do espaço de endereço obteria o maior benefício.
fonte