Это немного "одного мегабайта должно хватить на всех", но ...
64-разрядное плоское адресное пространство позволяет в 4,3 миллиарда раз больше пространства, чем 32-разрядное адресное пространство. Это 17 179 869 184 ГиБ.
Очевидно, что переход от 8 бит к 16 битам был довольно быстрым (я смотрю на вещи подростком в 80-х, игнорируя все эти мэйнфреймы и мини, потому что они не могли управлять портом Elite). Переход от 16 бит к 32 битам занял немного больше времени, и 32 бит на самом деле длились довольно долго.
Теперь у нас есть 64 бита, глупо ли было бы говорить, что «17,179,869,184 ГиБ должно быть достаточно для всех»?
Это вопрос программистов, потому что я действительно думаю о программировании. Даже если у компьютера когда-нибудь будет, казалось бы, бесконечный объем рабочей памяти, это не значит, что приложениям нужно будет видеть, казалось бы, бесконечное плоское адресное пространство.
По сути, можем ли мы программисты вздохнуть с облегчением и сказать: «Ну, что бы ни делали целые числа или числа с плавающей запятой, по крайней мере, мне больше не нужно беспокоиться о том, что мои указатели больше растут?».
источник
Ответы:
Я не думаю, что в обозримом будущем у нас будут машины с более чем 2 ^ 64 байтами ОЗУ, но это еще не все, для чего полезно адресное пространство.
Для некоторых целей полезно отобразить другие вещи в адресное пространство, файлы являются важным примером. Итак, разумно ли в обозримом будущем иметь более 2 64 байт любого типа хранилища, подключенного к компьютеру?
Я бы сказал да. Там должно быть более 2 ^ 64 байт памяти, так как это всего около 17 миллионов человек с терабайтными жесткими дисками. Несколько лет назад у нас были базы данных с несколькими петабайтами, а 2 ^ 64 - это всего лишь 17 тысяч петабайт.
Я думаю, что мы можем использовать адресное пространство> 2 ^ 64 в течение следующих нескольких десятилетий.
источник
Если компьютеры не начнут использовать некоторые прорывные технологии, которые еще не существуют даже в лабораториях, использование более чем 2 64 адресуемых пространств просто физически невозможно при современной кремниевой технологии . Технология поражает физические пределы . Ограничение скорости (ГГц) было достигнуто уже несколько лет назад. Предел миниатюризации также очень близок. В настоящее время самая передовая технология в производстве составляет 20 нм, в лабораториях - 4 нм с транзисторами из 7 атомов.
Просто для того, чтобы оценить, сколько времени потребуется для разработки новой технологии: современные компьютеры основаны на транзисторах, изобретенных в 1925 году, а современная кремниевая технология восходит к 1954 году.
Что касается альтернативных технологий:
источник
for(unsigned __int128 i=0; i<2^128; i++){}
. С текущей технологией не так много использования 128-битных чисел. Помимо, возможно, возврата к незащищенному адресному пространству, потому что случайно наступить на память других приложений в 128-битном адресном пространстве было бы практически невозможно, даже если вы случайным образом записывали случайные адреса.Суперкомпьютер, с которым связан Торбьерн, имеет около 2 47 Б физической памяти.
Предполагая, что закон Мура действует для памяти суперкомпьютеров, он станет 2 ^ 64 В физической памяти всего за 34 года. Это как "OMG, мы доживем до этого !!!!" Может быть. И действительно, это увлекательно. Но так же не имеет значения.
Вопрос в том, нужно ли 128-битное адресное пространство для использования 2 ^ 65 B физической памяти?
Ответ НЕТ . Мне нужно 128-битное адресное пространство для адресации 2 ^ 65 B виртуальной памяти из одного процесса .
Это является ключевым моментом вашего вопроса, «Будут ли в реальном мире приложений когда - либо нужно 128-бит плоского адресного пространства?». « Нужно », не совсем, вы можете обойтись с меньшими затратами, сделать адресное пространство сопоставленным (не плоским); но тогда у вас не будет «плоского 128-битного адресного пространства».
В качестве примера, предположим, что вы хотите присвоить атомам на Земле физический адрес памяти (по какой-либо причине, главным образом для предоставления этого простого примера), начать с нуля и продолжать считать (ответьте мне, когда закончите). Теперь кто-то еще хочет сделать то же самое на Kepler-10c (который находится в 568 метрах).
Вы не хотели бы столкновения адресов, поэтому другой человек выделяет высокий адрес памяти в доступном пространстве памяти , что позволяет вам, им и следующим людям быть адресованными напрямую , без отображения памяти. Если вы этого не сделаете или можете обойтись без взаимно-однозначного отношения между вашей памятью и ее адресом (вы готовы реализовать разреженный массив), то вы можете обойтись ничтожной 64-битной памятью или меньше.
Всякий раз, когда кто-то предлагает « X количества Y будет достаточно », такой прогноз часто остается недолговечным.
Таким образом, вопрос заключается в следующем: как скоро у нас будут отдельные процессы , которые используют 2 ^ 65 B памяти. Надеюсь никогда.
Большая проблема нашего времени заключается в том, что вычислительная мощность одного процессора ограничена. Существует ограничение в размере, определяемом размером атомов, и для данного размера существует ограничение в тактовой частоте, определяемой скоростью света, скоростью, с которой информация об изменениях магнитных полей распространяется в нашей вселенной.
И на самом деле, предел был достигнут несколько лет назад, и мы установили тактовые ставки ниже, чем они были ранее. Мощность процессора больше не будет линейно увеличиваться. Производительность теперь повышается за счет выполнения не по порядку, прогнозирования ветвлений, увеличения кэшей, большего количества кодов операций, векторных операций и чего-то еще. Там была архитектурная оптимизация .
И важной идеей является идея распараллеливания. Проблема с распараллеливанием заключается в том, что он не масштабируется. Если вы написали медленный код 20 лет назад, он работал намного быстрее 10 лет назад. Если вы напишите медленный код сейчас, он не станет намного быстрее через 10 лет.
Процессы, которые используют 2 ^ 65 B памяти, являются признаком крайней глупости. Это показывает, что не было никакой архитектурной оптимизации . Для разумной обработки этих данных вам потребуется около 10 миллионов ядер, большая часть которых будет тратить время на ожидание доступности какого-либо ресурса, поскольку те ядра, которые фактически получили этот ресурс, используют физическую память через Ethernet на совершенно другой машине. Ключом к решению больших и сложных проблем является разложение их на небольшие простые задачи, а не построение все более крупных и все более сложных систем. Вам нужно горизонтальное разбиение, когда имейте дело с sh * tloads данных.
Но даже если предположить, это безумие должно продолжаться, будьте уверены , 128 бита является достаточно :
Чтобы использовать 128-битное адресное пространство, нам нужно 2 ^ 133 бита, поэтому нам нужно 2 ^ 152 атома . Предполагая равное распределение атомов на земле, давайте посмотрим, сколько коры мы должны взять, чтобы получить их:
Таким образом, у вас есть 130 метров на всю поверхность (включая 80% воды, песка или льда). Этого не случится. Даже если предположить, что вы можете его выкопать (смеется), и все это пригодно для переработки в чипсы, где вы получите энергию?
источник
Ну, мы можем определенно использовать большое адресное пространство.
Вообразите это:
Адресное пространство не ограничено одним компьютером. Вместо этого адрес однозначно идентифицирует ячейку памяти в универсальном адресном пространстве. Таким образом, вы можете иметь указатель на ячейку памяти на любом компьютере в мире. Должен быть какой-то протокол, позволяющий читать из удаленной памяти, но это деталь реализации. :-)
Память записывается один раз, считывается много, т.е. вы можете записать данные на адрес памяти только один раз. Для изменяемого значения вам придется выделять новый фрагмент памяти каждый раз, когда он изменяется. Мы, программисты, начали видеть плюсы неизменяемости и транзакционной памяти, поэтому аппаратный дизайн, который даже не допускает перезаписи памяти, не может быть такой невозможной идеей.
Объедините эти две идеи, и вам понадобится огромное адресное пространство.
источник
Чем более способными становятся компьютеры, тем более сложные проблемы им требуются для работы.
Самый большой суперкомпьютер, указанный на top500.org, - это http://www.top500.org/system/10587 с оперативной памятью около 220 ТБ и 180000 ядрами. Другими словами, это то, с чем «реальные приложения» могут работать на этой платформе.
Современные компьютеры столь же мощны, как и суперкомпьютеры 10–15 лет назад (хотя вычислительная мощность может быть скрыта в вашей видеокарте).
Таким образом, коэффициент 100 в памяти через 10-15 лет будет означать, что 64-разрядное адресное пространство будет ограничивающим фактором примерно через 100 лет (поскольку log (100 миллионов) / log (100) составляет около 6), если текущий тренд сохраняется.
источник
Весь этот поток довольно забавно читать, очень сильное мнение за и против ...
Здесь что-то ..
Из вопроса я понимаю, что это была технология, независимая и не связанная временем. Таким образом, текущее развитие в кремнии, квантовых компьютерах или Abacus бесконечной обезьяны в действительности не имеет значения.
Расчеты и экстраполяции также довольно забавны, хотя ответ от back2dos работает довольно хорошо, чтобы проиллюстрировать абсолютный размер того, что представляет это число. так что давайте работать с этим.
Помните о своем будущем, когда человек больше не привязан к границам своей маленькой планеты, был разработан реалистичный способ транспортировки, позволяющий осуществлять перевозки на очень большие расстояния, и социальные структуры (экономические, политические и т. Д.) Эволюционировали, чтобы превзойти поколения. Проекты фараонов стали обычным явлением. Давайте сконцентрируемся на двух аспектах этого надуманного видения будущего, если кто-то захочет потратить время на объяснение каждой детали, я вполне уверен, что можно было бы рационализировать все это через серию вероятных эволюций современных технологий. Другими словами, правдоподобное, хотя и маловероятное будущее ... во всяком случае ...
Первый проект называется «Колосс» в памяти этого первого электронного компьютера, поскольку это первый планетарный компьютер. Братство Колоссов действительно нашло способ захватить маленький планетоид и превратить его в работающий компьютер. Недавно обнаруженные в поясе Кайпера, который практически полностью содержит легкоплавкие изотопы, делающие его энергетически автономным, они сделали процесс строительства полностью автономным с помощью зондов, роботов и т. Д., Что делает компьютерную систему самовосстанавливающейся и самостроящейся. В этом случае вполне возможно, что 2 ^ 64 адресного пространства несколько ограничивают этот проект, так как они хотят получить непрерывное адресное пространство, чтобы легко переносить приложения, уже существующие для другого проекта.
Другой проект является скорее экспериментом в сети, чем физической системой, но он быстро продемонстрировал, что необходимо большее адресное пространство. 540 лет назад молодой хакер занимался идеей создания гигантской бот-сети. Интернет уже расширился и теперь включает зарождающиеся колонии вокруг Солнечной системы, основанные на значительных достижениях в области термоядерного синтеза. Его идея заключалась в том, чтобы в сети были распространены маленькие боты, но полезная нагрузка была предназначена для создания единой виртуальной машины, на которой был бы написан код, предполагая, что в нем объединены все возможности всех ботов. Большие усилия были приложены к компилятору и развертыванию, пытаясь оптимизировать лаги и сложные алгоритмы, разработанные для учета внутренней ненадежности базовой среды. Язык был специально написан для этого нового " вместо этого наш хакер создал зонтичную компанию и продал вычислительную мощность самой высокой цене. Когда он умер, он пожертвовал этот ботнет и все технологии в фонд. В тот момент ботнет уже работал 64 года и уже давно перерос адресное пространство 2 ^ 64, разрушив предвзятое 1000-летнее предубеждение о том, что нам никогда не потребуется больше адресного пространства. В настоящее время 2 ^ 128 является нормой и тем, что будет использоваться для Колосса, но уже есть планы расширить это до 2 ^ 256. вместо этого наш хакер создал зонтичную компанию и продал вычислительную мощность самой высокой цене. Когда он умер, он пожертвовал этот ботнет и все технологии в фонд. В тот момент ботнет уже работал 64 года и уже давно перерос адресное пространство 2 ^ 64, разрушив предвзятое 1000-летнее предубеждение о том, что нам никогда не потребуется больше адресного пространства. В настоящее время 2 ^ 128 является нормой и тем, что будет использоваться для Колосса, но уже есть планы расширить это до 2 ^ 256.
Я мог бы, вероятно, придумать более квази вероятные сценарии, которые иллюстрируют, что да ... вполне возможно, нет, почти наверняка, что однажды нам потребуется адресное пространство больше, чем это.
Тем не менее, я не думаю, что потерял бы сон из-за этого, если ваше приложение требует определенного адресного пространства для правильной работы, то, скорее всего, оно будет жить в виртуальной машине, которая дает все, что ему нужно ...
Таким образом ... короткий ответ ...
ДА, скорее всего
но
Почему бы не заняться этим, когда возникнет проблема ... Лично я никогда не делаю предположений в своих программах, поэтому никогда не получаю сюрпризов.
источник
Расположение адресов имеет логарифмическую стоимость по отношению к ширине адреса, поэтому мы можем рассмотреть верхние границы на основе рассматриваемых параметров:
Мы могли бы принять возможные конфигурации в качестве верхней границы для максимально возможного физически возможного адреса памяти.
источник
Ну, я думаю, что через несколько лет вы, вероятно, вздохнете с облегчением. Если вы посмотрите на скорость инноваций в аппаратном обеспечении, можно заметить, что за последние несколько лет значительных достижений не произошло. Процессоры с частотой 2.x ГГц существуют уже давно, и любое увеличение вычислительной мощности в настоящее время происходит из-за упаковки большего количества ядер в чип. Емкость диска все еще растет, но не такими же темпами, как 10 лет назад.
Я думаю, что наши современные технологии приближаются к пределам физики.
Что это значит для будущего? Я думаю, что для того, чтобы получить новые качественные скачки в обработке информации, нужно будет использовать совершенно новые технологии. Эти технологии, вероятно, будут использовать «программное обеспечение», хотя, возможно, в контексте, совершенно чуждом тому, что есть сегодня. И кто знает, какие требования к адресному пространству они имеют или могут предоставить? Или адресное пространство является даже значимым понятием в этой технологии?
Так что пока не уходите в отставку.
источник
Да, будет. (Игры? Предметы, связанные с искусственным интеллектом?)
Более подходящий вопрос может заключаться в том, будет ли это учитываться типичным программистом. Подумайте о том, как Ruby автоматически конвертирует числа из FixNum в BigNum и обратно при необходимости. Я был бы удивлен, если другие языки (по крайней мере, динамические) не делают то же самое в конце концов.
источник
Хранить такое количество информации - это одно, а делать что-то полезное - совсем другое. С моей точки зрения, я не вижу необходимости в этом хранилище, если у нас нет вычислительной мощности, чтобы его использовать. Возможно, кэширование огромных баз данных - это одно, но для числовой обработки, я думаю, нам сначала нужны процессоры.
источник
Потребуются ли приложениям столько памяти? Вполне возможно. Приложения, такие как прогнозы погоды, физическое моделирование в целом или криптография, вероятно, всегда выиграют от большей памяти и большей вычислительной мощности. И кто знает, каким будет приложение-убийца через 50-100 лет? Голографические дисплеи? Радужные таблицы для каждого возможного 100-символьного пароля?
Можно ли физически представить столько памяти? Определенно возможно. Например, 100-кубитный квантовый компьютер может представлять такое же количество состояний, что и классический 2 ^ 100-битный компьютер. Намного больше, чем 2 ^ 67 бит адресного пространства у нас сейчас. (Я знаю, что 100-кубитный квантовый компьютер звучит как научная фантастика. Я не уверен, что когда-нибудь удастся его создать. Но с другой стороны, то же самое можно сказать и о любой технологии, которая будет использоваться 50 или через 100 лет.)
Но я серьезно сомневаюсь, что к тому времени главной проблемой будут «плоские адресные пространства». Возможно, к тому времени мы будем разрабатывать квантовые алгоритмы, где концепция «адресного пространства» не имеет особого смысла. Даже если компьютеры останутся «классическими», нам, вероятно, придется иметь дело с пугающим числом процессорных блоков с неоднородной памятью, прикрепленной к ним.
источник
Что произойдет, если каждая ячейка памяти будет иметь глобально уникальный адрес?
FILE
,fopen()
и т.д.источник
Просто «мысли вслух» здесь, но мне просто пришло в голову, что можно делать интересные семантические вещи с оставшимися 64 битами на, скажем, 128-битном компьютере. Ср как работает IP.
Я уверен, что люди могут придумать забавное использование для чего-то подобного. :) Кто-нибудь знает, для чего PS3 использует свои 128-битные адреса? Конечно, вы не будете тратить всю эту дополнительную память (и я говорю только о памяти для фактических адресов, а не о том, на что указывают эти адреса). Адреса как данные. Вы могли бы даже закодировать ветку в самом адресе ... то есть, 0x [ifAddress] [elseAddress] Многоядерные системы могли бы также извлечь выгоду из этого типа сегментации. И и...
источник
Есть ли причина выходить за рамки 64-битной архитектуры? (18,446,744,073,709,551,615 байт адресуемой памяти)
Используя стандарт IEEE 1541-2002, касающийся использования префиксов для двоичных кратных единиц измерения, связанных с цифровой электроникой и вычислениями, мы видим, что:
1 байт = 8 бит, 1 килобайт = 1024 байта, 1 мегабайт = 1024 КБ, 1 гигабайт = 1024 МБ, 1 терабайт = 1024 ГБ, 1 петабайт = 1024 ТБ, 1 эксабайт = 1024 ПБ
И так далее для Zettabyte, Yottabyte, Xenottabyte, Shilentnobyte, Domegemegrottebyte, Icosebyte и Monoicosebyte.
По оценкам, общее количество накопителей на Земле составляет около 2500 эксабайт по состоянию на 2016 год.
64-битный регистр может напрямую обращаться к 15 эксабайтам памяти. 128-битный регистр может напрямую обращаться к 3,40282367 × 10 ^ 35 зетабайт. Или 295 147 905 247 928 000 моноикосебайт.
Таким образом, мы можем видеть, что 128-битный регистр будет в хорошем положении для доступа ко всей памяти Земли, всему, что когда-либо отправлялось в Интернете, каждому слову, когда-либо произнесенному или написанному, каждому фильму и многому другому, в течение некоторого времени ,
Таким образом, ответ - да , в ожидании структуры, которая может указывать на любую цифровую вещь, которая когда-либо была или будет .
источник
Лучшая оценка, которую я могу найти для числа нейронов в среднем человеческом мозге, составляет около 86 миллиардов. Мы не можем напрямую сравнивать оперативную память с нейронами в целом, но в нейронной сети вы можете. Требуется несколько адресов для представления состояния нейрона или синапса. Поэтому я выкину дикое предположение и скажу, что мы смотрим на что-то вроде триллиона адресов, чтобы создать нейронную сеть, которая была бы сопоставима с человеческим мозгом. Так что, если это можно сделать, я не понимаю, почему это не пойдет намного дальше. Виды проблем, которые такая сеть могла бы рассмотреть, были бы за пределами наших способностей понимать, а также почему они должны быть такими большими, чтобы сделать это.
источник
Это адресное пространство. Допустим, мы изменили стандарт C, так что realloc не может изменять используемый указатель. Сегодня я могу выделить 2 ^ 33 блоков памяти (на моем Mac потребуется 192 ГБ ОЗУ, 8-миллиардный 8-байтовый указатель и 16-байтовое выделенное пространство, поэтому я не могу сделать это прямо сейчас, но я мог бы купить Mac, который может делать это без вывоза новой ипотеки).
И я могу перераспределить любой из этих указателей для хранения 2 ^ 33 байтов. Хотя не так много одновременно :-) Если realloc не позволяет перемещать указатели, и разрешено 2 ^ 33 байта, исходные указатели должны быть на расстоянии 2 ^ 33 байта, что означает, что требуется 2 ^ 66 байтов памяти.
источник
Конечно, я не вижу причин, по которым такое количество места не потребовалось бы в будущем. Если вы рассматриваете разработку игр, нет предела тому, насколько реалистичной или сложной может быть игра, верно? (Подробная информация о графике / количестве используемых полигонов и алгоритмах, определяющих взаимодействие и поведение объектов)?
Кто знает, через 10 лет мы можем играть в игры по 10 ТБ с минимальными требованиями: 12 ГБ ОЗУ и 8-ядерный процессор. :П
источник
20 лет назад на планете было на 2 миллиарда человек меньше людей, и большинство компьютерных систем имели адресуемую память, которую можно измерять в килобайтах. Сегодня население мира увеличивается с той же скоростью, и число пользователей компьютеров увеличивается в геометрической прогрессии с каждым годом.
Это правда, что очень немногие системы нуждаются в полном 64-байтовом адресном пространстве. Однако некоторые системы хранят терабайты информации каждый день. Это стало возможным благодаря увеличению числа пользователей компьютеров и скорости интернета. Мы уже можем поддерживать скорость интернета 10 ГБ / с уже через 23 года после изобретения HTTP. При таких показателях я думаю, что было бы глупо не ожидать, что скорость интернета в 1 ТБ / с или выше через 50 лет. Когда все мы сможем перемещать данные так быстро, будет больше данных для хранения, в то время как для хранения этих данных будет больше людей, и почти неизбежно потребуется еще один широко распространенный переход в 128-битную систему, и в конечном итоге 256 и 512 бит
источник
да, приложения не заполняют каждый байт виртуального пространства. Рандомизация макета адресного пространства получила бы наибольшую выгоду.
источник