Как рассчитать максимальный объем ОЗУ, адресуемый процессором

Обновлено: 24.11.2024

Я читаю свою книгу по компьютерной архитектуре и вижу, что в 32-разрядном процессоре x86 счетчик программ составляет 32 разряда.

Итак, количество байтов, которое он может адресовать, составляет 2^32 байта или 4 ГБ. Поэтому для меня имеет смысл, что большинство 32-битных машин ограничивают объем оперативной памяти до 4 ГБ (игнорируя PAE).

Правильно ли я предполагаю, что 64-битная машина теоретически может адресовать 2^64 байта или 16 экзабайт оперативной памяти?!

Обратите внимание, что ни один из существующих 64-разрядных процессоров x86 не может этого сделать. Их кеши не имеют достаточного количества бит тегов, их адресные шины не имеют достаточной ширины и так далее. 46-бит (8 ТБ) — это максимум для многих современных процессоров x86.

Теоретически ограничений нет. Даже 32-разрядные процессоры могут иметь адресное пространство более 4 ГБ. Это зависит от того, как аппаратно реализована система управления памятью, которая обычно не зависит от длины слова ЦП. Указатели в программах всегда имеют длину слова, но в любом случае это виртуальные адреса (а не физические), поэтому они в дальнейшем отображаются в другое адресное пространство.

Это старый вопрос со старыми ответами, но я чувствую, что ответы, получившие наибольшее количество голосов на этот вопрос, вводят в заблуждение, и они являются ответами на вопрос Сколько ОЗУ может иметь машина с 64-битным адресом адресной шины. Как указали Дэвид и Брейктер выше, "разрядность" архитектуры отражает размер первичных регистров, а не размер адресной шины.

9 ответов 9

Теоретически: 16,8 млн терабайт. На практике: корпус вашего компьютера слишком мал, чтобы вместить всю эту оперативную память.

Я читал в других источниках, что процессор не может использовать каждый бит для доступа к памяти, учитывается ли это в вашем ответе?

В дополнение к ответу Мэтта Болла скажу, что на данный момент самая большая планка оперативной памяти, которую я могу найти в одном конкретном интернет-магазине, составляет 32 ГБ. Чтобы достичь 1 терабайта, потребуется 32 из них. Приблизительно полдюйма на планку это дает нам выделенное 16 дюймов места на вашей материнской плате для терабайта оперативной памяти. Чтобы достичь 16,8 млн терабайт, материнской плате потребуется 4 242,42 мили. Расстояние от Лос-Анджелеса до Нью-Йорка составляет около 3 141 миль, поэтому материнская плата протянется через всю страну и обратно, чтобы вместить столько оперативной памяти.

Очевидно, что это нецелесообразно.

Как насчет того, чтобы не размещать оперативную память в один ряд, как на большинстве материнских плат, а вместо этого расположить их рядом. Я хочу сказать, что средняя палка барана имеет длину около шести дюймов, поэтому, если мы допустим полдюйма для ширины, вы можете получить квадратную единицу из 12 палочек барана в 6-дюймовом квадрате. Назовем этот квадрат RAM-плиткой. Затем плитка RAM содержит 384 ГБ ОЗУ. Чтобы достичь требуемых 16,8 млн терабайт в плитках по 384 ГБ, потребуется 44,8 миллиона плиток. Давайте будем неряшливыми и воспользуемся квадратным корнем из этого, чтобы сделать вывод, что это уместится в квадрате 6693 на 6694 плитки, или 13 386 на 13 388 футов, что достаточно близко к квадрату 2,5 миль, достаточно, чтобы покрыть центр Сиэтла тенью, как если бы им и так не на что жаловаться.

Мне было любопытно узнать, что ограничивает максимальный объем ОЗУ для ОС, когда я читал о том, что микропроцессоры бывают 32-разрядными и 64-разрядными. Я знаю, что предел для 32-разрядной ОС составляет 4 ГБ, а для 64-разрядной ОС — 16 эксабайт, но мой вопрос: как мы туда доберемся? Я нашел этот расчет:

$\qquad 2^ = 4\,294\,967\,296$

В 64-разрядной версии все по-другому:

$\qquad 2^ = 18\,446\,744\,073\,709\,551\,616$

Что я не понимаю, так это то, как вычисление битов превратилось в байты и достигло результатов 4GB и 16EXB?

$\begingroup$ @Raphael-Да, это ключевой вопрос. Сколько байтов мы можем хранить по одному адресу памяти из 4 294 967 296 адресов, которые у нас есть. Если ответ ОДИН, то это имеет смысл, так как это означает, что 4 294 967 296 байт могут быть сохранены по такому количеству адресов, что равно 4 ГБ в случае 32-разрядной ОС. $\endgroup$

$\begingroup$ Во многом это произвольное дизайнерское решение. Ответ Юваля дает вам общий случай. $\endgroup$

5 ответов 5

Вычисления производятся в байтах, так как память адресуется в байтах. Если машинное слово состоит из $N$ бит, а адрес хранится в регистре, размер которого равен одному машинному слову, то вы можете адресовать $2^N$ различных ячеек, каждая из которых представляет собой байт (в принципе, это может зависеть от ЦП, но я не знаю ни одного ЦП, который обращается к своей памяти более крупными словами). Однако для адресации большего объема памяти можно использовать более сложные механизмы адресации. Например, указатели могут занимать больше машинного слова или могут применяться сегменты (как в 80386 и его преемниках).

$\begingroup$ Помимо ввода-вывода с отображением памяти, на современных ЦП можно отказаться от адресации байтов и «маленьких» слов, поскольку все операции с памятью выполняются в строках кэша, а не в байтах. Любая операция с байтом может быть эмулирована серией сдвигов, масок, логических операций и расширения знака. Некоторые микросхемы RISC пошли по этому пути до того, как программисты пожаловались на это, и разработчики добавили байтовую адресацию в качестве расширения набора инструкций. Самый последний известный мне пример — это DEC Alpha, который не поддерживал байтовую адресацию до 21164A. $\endgroup$

Прежде всего, в компьютерной архитектуре 32-разрядные/64-разрядные вычисления — это использование процессоров с шириной пути данных, целочисленным размером и шириной адресов памяти 32/64 бита (четыре/восемь октетов). Кроме того, 32-разрядные/64-разрядные архитектуры ЦП и АЛУ основаны на регистрах, адресных шинах или шинах данных такого размера (из-за конструктивных решений, которые могут различаться в разных ЦП/ОС).

Во-вторых, возникает путаница при расчете максимального объема ОЗУ для 32/64-битной ОС/микропроцессора. 32-битный/64-битный адрес/машинное слово обычно считается содержащим однобайтовое слово, а не байт (например, байтовое слово может быть числом с плавающей запятой из 32/64 битов в зависимости от архитектуры и байта). с другой стороны, это 8 бит), но поскольку мы делаем все наши вычисления с памятью в байтах, результат также будет в байтах. Следовательно, байты — это единица измерения, где

1 байт = 1 байтовое слово = 1 адресное пространство/машинное слово

Итак, если у нас есть 4 294 967 296 адресов, это означает, что мы можем адресовать столько байтовых слов, и, следовательно, общая емкость ОЗУ в 32-разрядной ОС составляет 4 ГБ, аналогично для 64-разрядной ОС вычисляются адреса с одним байтовым словом каждый и позже записано в байтах.

Надеюсь, это должно прояснить ситуацию. Спасибо за ваш вклад и ответы.

Простой ответ, что 32-битные ЦП могут адресовать $2^$ байт, а 64-битные ЦП могут адресовать $2^$ байт, вполне верен, но можно найти некоторые исключения или уточнить объяснение.

ЦП с MMU управляют отдельными виртуальными и физическими адресными пространствами. Они могут иметь разные размеры. 32-битное или 64-битное обозначение относится к виртуальному пространству: приложения имеют 32-битные или 64-битные указатели.

Физическое адресное пространство может быть меньше или больше виртуального адресного пространства:

  • В некоторых 32-битных процессорах x86, начиная с PentiumPro, может быть доступно большее 36-битное физическое адресное пространство (= 64 ГБ): несколько задач, каждая из которых занимает до 4 ГБ, могут одновременно выполняться на ЦП. ОС должна управлять глобальным адресным пространством, большим, чем пространство пользовательского программного обеспечения (и разработчики ОС действительно ненавидят это, потому что ОС необходимо постоянно менять местами сопоставления для доступа ко всей памяти). Аналогичный механизм был у 32-битных SPARC.
  • В текущей 64-битной версии x86 объем физической памяти, которой реально можно управлять, меньше, 48 бит IIRC, потому что 16EXB пока слишком велики.

В: Как определить максимальный объем оперативной памяти для операционной системы?

О: Загляните в документацию по ОС (правда).

Давайте разберем

Я знаю, что предел для 32-разрядной ОС составляет 4 ГБ, а для 64-разрядной ОС — 16 эксабайт, но мой вопрос: как мы туда доберемся?

Теперь мы говорим о плоском адресном пространстве (т.е. о том, сколько разных адресов может различать программа). Если такая программа использует 32-битные (64-битные) указатели, существует 2³² (2⁶⁴) различных адресов. Предполагая, что каждая из этих позиций может вместить 1 байт, у нас есть 4 ГБ (16 ЭБ) выделяемой емкости. Это также отвечает на последний вопрос:

Чего я не понимаю, так это как вычисление битов превратилось в байты и достигло результатов 4GB и 16EXB?

OP относится к 32-разрядным и 64-разрядным микропроцессорам в первом предложении. Мы должны понимать, что это ссылка на внутреннюю архитектуру. Чтобы проиллюстрировать, насколько важно определить тему обсуждения, давайте взглянем на процессор Intel 80386SX:

  • Его 32-битная архитектура.
  • ширина шины данных составляет 16 бит,
  • ширина адресной шины составляет 24 бита.

Хотя это 32-разрядный ЦП, он может адресовать только 16 МБ ОЗУ, и ему требуется два цикла ЦП для перемещения слова между регистром и ОЗУ (больше примеров).

$\begingroup$ @D.W. Теперь я вижу источник путаницы. Я пытался ответить на вопрос Как определить максимальный объем оперативной памяти для операционной системы?, в то время как текст вопроса фактически смещается в сторону вашей интерпретации. Хотя я считаю, что такая сумма не может быть надежно рассчитана, я надеюсь, что расширенный текст теперь соответствует категории ответ. $\endgroup$

Первый вопрос: какой объем оперативной памяти может поддерживать аппаратное обеспечение?Например, если между ЦП и ОЗУ при каждом доступе передается n бит, а ЦП имеет k адресных строк, то ЦП может получить доступ к $2^k·n$ битам или $2^k·n/8$ байтам.< /p>

Однако ЦП должен обращаться не только к ОЗУ, но и к другим вещам, например к видеопамяти, отображаемому в память вводу-выводу, ПЗУ и т. д. Поэтому вам нужно сложить эти вещи, чтобы получить максимально полезный объем оперативной памяти. И это зависит как от процессора, так и от оборудования памяти, сколько на самом деле можно использовать. Например, если адресных строк достаточно для 64 ГБ, а для другого оборудования требуется 2 ГБ адресуемого пространства, то в зависимости от оборудования можно будет использовать только 32 ГБ, 48 ГБ или 56 ГБ ОЗУ, но, скорее всего, не 62 ГБ.

Следующий уровень определяет объем ОЗУ, который может распознать микропрограмма компьютера. Компьютер не знает, сколько у него оперативной памяти, когда он включен, он должен распознать эту оперативную память. Обычно это делается с помощью встроенного в компьютер программного обеспечения. И это программное обеспечение может распознавать, скажем, 16 ГБ ОЗУ. (Это часто случается со старыми компьютерами, где на момент продажи компьютера не было в наличии чипов памяти емкостью более 16 ГБ, а более новые, более крупные чипы памяти невозможно распознать).

Итак, это все, до того, как в игру вступит операционная система. Обычно сама ОС не имеет никаких ограничений. Конечно, требуется больше памяти для таблиц страниц и т. д., если есть больше ОЗУ, но тогда у него больше ОЗУ для хранения таблиц страниц, потому что у него больше ОЗУ. Бывают случаи, когда у производителя ОС есть «домашняя версия» и «профессиональная версия» ОС, а «домашняя версия» ОС может быть искусственно ограничена.

Или, например, ОС могла произвольно решить использовать лишь небольшое количество битов для индекса страницы ОЗУ в какой-либо структуре данных. Если ОС использует только 24 бита для хранения индекса страницы ОЗУ, а размер страницы ОЗУ составляет 4 КБ, то эта ОС может обрабатывать только 64 ГБ ОЗУ. Что вполне возможно для ОС, написанной двадцать лет назад, когда кто-то мог подумать, что «ни у кого никогда не будет больше 64 ГБ ОЗУ». (Я помню компьютер, который мог вмещать до 1,5 ГБ ОЗУ, а ОЗУ стоило в четыре раза дороже, чем остальная часть компьютера).

Существуют три фактора, которые ограничивают максимальный объем ОЗУ, который может использовать ваш компьютер:

  • 32- или 64-разрядный процессор
  • Ограничение оперативной памяти операционной системы
  • Ограничение оперативной памяти материнской платы

Начнем с процессора. Имеет значение, является ли ваш процессор 32-разрядным (x86) или 64-разрядным (x64), потому что это влияет на тип операционной системы, которую вы можете установить. Если у вас 32-разрядный процессор, вы сможете установить только 32-разрядные операционные системы, что снижает максимальный объем оперативной памяти до 4 ГБ.

Хорошей новостью является то, что почти все современные процессоры являются 64-разрядными (за редкими исключениями, такими как Intel Atom). На всякий случай вот как проверить, является ли ваш процессор 32- или 64-разрядным:

<р>1. Скачайте CPU-Z, бесплатную программу, которая предоставляет массу информации о вашем процессоре

<р>2. На вкладке "ЦП" найдите поле "Инструкции" (обведено желтым цветом ниже)

<р>3. Если у вас 64-разрядный процессор, в разделе "Инструкции" будет отображаться EM64T или AMD64

Максимальный объем ОЗУ, поддерживаемый вашей операционной системой

Windows 8, 64-разрядная Enterprise
Windows 8, 64-разрядная Pro
Windows 8, 64-разрядная
Windows 8, 32-разрядная

Windows 7, 64-разрядная Ultimate
Windows 7, 64-разрядная Enterprise
Windows 7, 64-разрядная Professional
Windows 7, 64-разрядная Home Premium
Windows 7, 64-разрядная Home Basic
Windows 7 32-разрядная (кроме Starter)
Windows 7 32-разрядная Starter

Windows Vista, 64-разрядная Ultimate
Windows Vista, 64-разрядная Enterprise
Windows Vista, 64-разрядная Business
Windows Vista, 64-разрядная Home Premium
Windows Vista, 64-разрядная Home Basic
Windows Vista 32-разрядная (кроме Starter)
Windows Vista 32-разрядная Starter

Windows XP 64-разрядная
Windows XP 32-разрядная

Mac OS X 64-разрядная версия

64-разрядная версия Linux
32-разрядная версия Linux
32-разрядная версия Linux (с PAE)

Внимательно изучив приведенную выше таблицу, вы заметите, что 32-разрядные операционные системы могут получить доступ не более чем к 4 ГБ ОЗУ.

И еще одна плохая новость: ограничение в 4 ГБ распределяется между оперативной памятью и другими устройствами (например, видео-, аудио- и сетевой памятью), поэтому в большинстве случаев объем доступной оперативной памяти сокращается до 3–3,5 ГБ.

Урок дня. Если вы планируете иметь 4 ГБ ОЗУ или больше, настоятельно рекомендуется установить 64-разрядную операционную систему (если только вы не застряли с примитивными драйверами устройств или программами, которые работают только в 32-разрядной версии).< бр />

Максимальный объем оперативной памяти, поддерживаемый вашей материнской платой

Поскольку производитель материнской платы определяет максимальный поддерживаемый объем ОЗУ, единственный верный способ узнать это — обратиться к руководству по материнской плате (обведено желтым цветом ниже):

Если вы пользуетесь ноутбуком, в руководстве пользователя будет указан максимальный поддерживаемый объем оперативной памяти. Просто найдите его в разделе "Технические характеристики".

Обобщая все, что мы объяснили до сих пор, компьютер с 64-разрядным процессором, работающий под управлением 64-разрядной версии Windows 8 (ограничение ОЗУ 128 ГБ) и имеющий материнскую плату, поддерживающую до 32 ГБ ОЗУ. сможет поддерживать до 32 ГБ оперативной памяти.

Здесь мы представляем вам обзор максимальной адресуемой памяти в текущих 32-битных и 64-битных операционных системах.

Как правило, для использования 4 ГБ или более памяти необходима 64-разрядная операционная система.
В приведенной ниже таблице представлен обзор максимальной адресуемой памяти в текущих операционных системах:

Рекомендовать эту статью:

15 мыслей на тему «Максимальная адресуемая память в текущих операционных системах»

Перейдите на главную страницу Windows и введите "компьютер" щелкните левой кнопкой мыши и выберите свойства, после чего вы увидите все, что вам нужно знать о вашем компьютере

о, спасибо, но я не вижу свой GPU, почему……

18 эксабайт? Или 16 эксабайт? Причина, по которой вы сказали 18 экзабайт, заключается в том, что она основана на 18 446 744 073 709 551 616 байтах. 18 эксабайт, если вы используете десятичное определение эксабайт. 16 эксабайт, если вы используете двоичное определение эксабайт.

Разве это не 16 эксибайт? Разница между a и i. вычисление base10 en base2.

Эта статья нуждается в обновлении. macOS теперь может поддерживать как минимум 1,5 ТБ ОЗУ, поскольку Mac Pro можно настроить с таким объемом.

Спасибо, мы сделали обновление.
1,5 ТБ — это аппаратное ограничение — теперь MacOS может поддерживать до 18 экзабайт ОЗУ.
С уважением из Мюнхена!

Можете ли вы указать достоверный источник этой информации? 18 EB выше всего. Теоретически да, но практически нет. Не существует оборудования, способного протестировать такой объем памяти.

Эй, чувак, я изучаю Comptia A+, и это ограничение оперативной памяти просто помогает мне в учебе. Большое спасибо, я забронировал отмеченную вами страницу в своем браузере.

С уважением,
Нанан Татен

время обновления

Видите ли вы одинаковую производительность при работе от батареи и при подключении к сети? Многие ноутбуки при работе от батареи падают до 33% или меньше.
Кроме того, я бы открыл ваш диспетчер задач и посмотрел на вкладку производительности, чтобы узнать, какова загрузка ЦП, использование диска, скорость чтения/записи диска. Если у вас высокая загрузка диска и низкая скорость чтения/записи, я бы посмотрел, насколько заполнен ваш SSD и какой тип интерфейса он использует.

Не существует универсального способа заставить приложения использовать больше оперативной памяти, и в целом они будут использовать то, что им нужно. Некоторые приложения _МОЖЕТ_ иметь некоторые настройки, влияющие на то, как и сколько используется ОЗУ, но вам нужно будет проверять каждое из них по отдельности, и это, как правило, верно только для приложений, требовательных к вводу-выводу.

Вы также должны включить Linux.

Здравствуйте, у меня вопрос. Я использую Windows 10 Enterprise, 64-битную версию на своем ThinkPad T480. Он имеет 32 ГБ оперативной памяти и 500 ГБ SSD. Он очень медленный при выполнении задач и никогда не использует более 15% памяти. Есть ли способ использовать больше оперативной памяти для задач/программ? Спасибо

Вероятно, вы могли бы удалить 16 ГБ ОЗУ, так как маловероятно, что вашим программам в любом случае потребуется столько ОЗУ.
Скорость действительно зависит от процессора, такого как более быстрые процессоры i7.

Существует также очень большая разница в скорости между SSD и M.2 SSD

Попробуйте выполнить сканирование с помощью Malwarebytes Free Edition, так как недавно я удалил более 620 ПНП с одного ноутбука, что замедлило его сканирование до минимума.

Я рекомендую проверить температуру вашего процессора, так как высокие температуры могут привести к снижению скорости процессора.
Я бы порекомендовал монитор openhardware для этого.

Поскольку это портативное устройство (ноутбук), а не настольный компьютер, вероятно, есть два варианта:
– Если ваш вентилятор настроен на бесшумный режим, температура в простое не должна превышать 80°C.
– Если ваш вентилятор настроен на режим эффективного охлаждения, температура в режиме ожидания должна быть ниже 60 °C.

При температуре выше 90–95 °C большинство процессоров начинают снижать скорость, чтобы предотвратить перегрев. В результате вы заметите снижение производительности.

Еще одна возможность – неверные показания температуры. Неправильные показания температуры могут привести к снижению производительности и громкому раздражающему шуму вентилятора.

Надеюсь, это было полезно.

откройте команду запуска, одновременно нажав клавишу Windows + R, затем введите msconfig, перейдите к параметрам загрузки на верхней вкладке, затем найдите расширенные, щелкните по ней, вы увидите количество ядер вашего процессора и объем оперативной памяти. компьютер использует максимальное использование памяти, а затем перезагрузите, вы почувствуете эффект, который вы также можете проверить в моих свойствах этого компьютера

Читайте также: