Как рассчитать максимальное количество оперативной памяти адресуемое процессором

от admin

Какой максимальный объем оперативной памяти можно установить на компьютер / ноутбук

Сегодняшний вопрос достаточно популярный, особенно среди пользователей с относительно старыми ноутбуками и ПК.

Вроде бы с одной стороны — их производительности для веб-серфинга, фильмов и простеньких игр пока хватает (и менять их полностью — нет смысла), но с другой — иногда приходится сталкиваться с нехваткой ОЗУ (например, при открытии 10-ка вкладок в Chrome. ) .

Вообще, увеличить объем оперативной памяти не так сложно (достаточно купить и установить нужную плашку памяти), однако, есть нюансы (например, «лимиты» по макс. объему. ).

Собственно, об этом и поговорим в этой заметке. 👌

Какой максимум ОЗУ поддерживает устройство

ШАГ 1: базовые основы

👉 Максимальный объем оперативной памяти, который можно установить в ПК/ноутбук, зависит от трех составляющих:

  1. процессора;
  2. материнской платы;
  3. ОС Windows (32 битные системы «не видят» более 3 ГБ ОЗУ. Также добавлю, что версии «Windows 7 Home» могут иметь ограничение видимости в 8 ГБ!) .

Первые два компонента наиболее важны, т.к. изначально идут с поддержкой только какого-то одного типа памяти (например, DDR4), и имеют ограничения по частоте и объему.

Важно!

Если установить памяти больше, чем поддерживает ЦП или мат. плата (например) — вероятнее всего, устройство просто ее не увидит (и вы зря потратите средства на апгрейд)!

Впрочем, в ряде случаев не исключены синие экраны и отказы ПК загружаться.

👉 Еще один достаточно существенный момент — обратите внимание на количество слотов под оперативную память на материнской плате. Дело в том, что какие-нибудь утилиты могут показать наличие свободного слота — а по факту его может не быть вовсе (просто не распаян на плате)! И проверить это — можно только разобрав устройство.

Слоты под плашки ОЗУ

Слоты под плашки ОЗУ

👉 Кстати, что касается ноутбуков — то в ряде случаев у них может не быть вообще ни одного слота (вся ОЗУ просто распаяна на мат. плате)! Наиболее часто это встречается у компактных ультрабуков (Lenovo, например).

Впрочем, большинство средне-бюджетных моделек всё-таки имеет хотя бы 1 слот (как на фото ниже).

Один слот - ноутбук Dell (Only DDR3L)

Один слот — ноутбук Dell (Only DDR3L)

ШАГ 2: определяем модель ЦП и мат. платы, и находим их спецификацию

👉 Для ПК

  • с помощью документов, которые шли при покупке устройства;
  • разобрав системный блок и посмотрев модель на самой плате;
  • воспользовавшись 👉 спец. утилитой AIDA64.

После, достаточно вбить в поисковую систему Google (Yandex) запрос вида «Asus H110M-K тех. характеристики» (у вас будет свой производитель и модель мат. платы).

Собственно, одним из первых в результатах поиска будет официальный сайт, на котором в большинстве случаев и указана нужная информация. См. пример на скрине ниже. 👇

Скриншот с официального сайта ASUS

Скриншот с официального сайта ASUS

После, аналогичным образом нужно посмотреть, что поддерживает процессор (ЦП). На сайте Intel и AMD спецификации очень подробные, и, как правило, в них можно найти даже больше, чем нужно! 👌

👉 В помощь!

Как узнать точную модель своего процессора (CPU), посмотреть его спецификацию, характеристики

Скрин с сайта Intel (INTEL® CORE™ i5-5200U)

Скрин с сайта Intel (INTEL® CORE™ i5-5200U)

👉 Для ноутбуков

Что касается ноутбуков — то зная 👉 точную модель устройства можно сразу же зайти на официальный сайт и посмотреть спецификацию. Пример ниже.

Скриншот с официального сайта Lenovo

Скриншот с официального сайта Lenovo

ШАГ 3: быстрое решение с помощью спец. утилит 👍

Не всегда и не для каждого производителя можно найти подробную спецификацию, где указаны все тонкости (в некоторых случаях приходится прибегать к данным из спец. утилит) . К тому же, утилиты (как правило) позволяют намного быстрее получить нужные данные.

Для текущей работы нам понадобиться программа 👉 AIDA64.

После запуска AIDA64 — перейдите в раздел «Системная плата/Чипсет» и вы увидите две заветные строки:

  • поддерживаемые типы памяти (в моем случае DDR4 1333, DDR4 1600 и др.);
  • максимальный объем памяти (32 ГБ).

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

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

Кстати, если макс. объем во вкладке «Чипсет» не отображается — попробуйте открыть «Компьютер/DMI/Массивы памяти/Системная память» . Как правило, в этой вкладке эта информация дублируется.

Компьютер — DMI (AIDA64)

Компьютер — DMI (AIDA64)

👉 Тем не менее, когда есть возможность, рекомендую данные из AIDA64 (и подобных ей утилит) перепроверять (по модели устройства зайти на сайт производителя и уточнить спецификацию)!

Как узнать сколько оперативной памяти поддерживает компьютер

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

Оперативная память (RAM), наряду с другими важными составляющими конфигурации компьютера (центральный процессор, жесткий диск, видеокарта и так далее), заметно влияет на общую производительность ноутбука или настольного ПК.

Поэтому часто увеличение размера оперативной памяти влечет за собой рост производительности ноутбука или стационарного ПК. Но для правильного решения необходимо заранее знать сколько нужно ОЗУ установить.

ОЗУ (Оперативное запоминающее устройство) — физический модуль, выполняющий функции оперативной памяти, который устанавливается в соответствующий разъем на материнской плате компьютера. На материнской плате, обычно имеется несколько слотов, предназначенных для использования модулями ОЗУ.

Вам нужно будет приобрести один или несколько модулей ОЗУ в комплекте, или как их еще называют планок оперативной памяти, а затем установить их на ноутбук или стационарный ПК. Но чтобы не ошибиться при покупке, нам нужно проверить тип поддерживаемой памяти (например, DDR2, DDR3, DDR4, DDR5), форм-фактор, частоту, тайминги и, самое главное, сколько памяти поддерживает материнская плата.

Вопрос в том, какой максимальный объем оперативной памяти поддерживается на вашем устройстве. Он уже на максимуме или еще есть место для апгрейда. Необходимо знать, сколько оперативной памяти можно поставить, чтобы покупка не оказалась бесполезной.

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

Как узнать сколько оперативной памяти установлено на компьютере

Сначала вам необходимо посмотреть сколько памяти установлено на вашем компьютере, чтобы заранее знать сколько ОЗУ поддерживает материнская плата, есть ли возможность для увеличения объема RAM.

Выполните следующие действия, чтобы узнать сколько памяти на ПК:

  1. В операционных системах Windows 10 и Windows 11 запустите приложение «Параметры».
  2. Откройте «Система», а затем «О системе» («О программе»).
  3. В разделе «Характеристики устройства» в имени устройства «Оперативная память» вы увидите текущий объем установленной оперативной памяти.

В данном случае на ПК имеется 8 ГБ памяти.

объем оперативной памяти

Во всех ОС: Windows 11, Windows 10, Windows 8, Windows 7 можно использовать приложение «Сведения о системе». Утилиту можно запустить из списка программ, или используя диалоговое окно «Выполнить», после ввода команды «msinfo32».

В окне приложения «Сведения о системе» среди прочей информации найдите элемент «Установленная оперативная память (RAM)», в котором будет указано текущее значение.

установленная оперативная память

Полезную информацию можно получить в Диспетчере задач Windows 11 или Windows 10:

  1. Щелкните правой кнопкой мыши по меню «Пуск».
  2. В открывшемся меню нажмите на пункт «Диспетчер задач».
  3. В окне «Диспетчер задач» откройте вкладку «Производительность».
  4. Щелкните «Память».
  5. Подведите курсор мыши к пункту «Использование гнезд». Помимо других характеристик здесь указано общее и занятое количество слотов оперативной памяти на материнской плате. В нашем случае занято 2 из 4.
  6. Во всплывающем окне отобразится информация об использовании гнезд: вы узнаете сколько планок памяти установлено.

На данном компьютере установлено два модуля оперативной памяти по 4 ГБ, работающие в двухканальном режиме. На системной плате имеются 2 свободных слота, в которые можно дополнительно установить две планки оперативной памяти.

использование слотов

Как узнать сколько оперативной памяти поддерживает ПК в командной строке

Теперь пришло время узнать, сколько оперативной памяти поддерживает ноутбук или настольный ПК. Сколько оперативной памяти поддерживает материнская плата зависит от производителя и модели устройства.

Если вы хотите использовать больше ОЗУ, чем имеется на вашем компьютере, вам нужно будет заменить материнскую плату.

Пользователи Windows могут определить максимальный объем ОЗУ в командной строке с помощью приведенной ниже команды. Вы увидите значение в килобайтах, которое можно преобразовать в гигабайты для более удобного понимания.

  1. В поле поиска Windows введите «CMD».
  2. Запустите приложение на компьютере.
  3. В окне интерпретатора командной строки введите команду, а затем нажмите на клавишу «Enter»:

значение объема оперативной памяти

В колонке «MaxCapacity» указано максимальное значение объема оперативной памяти в килобайтах, а в колонке «MemoryDevices» — общее количество слотов на материнской плате, которые могут быть использованы для этого объема.

Чтобы узнать, сколько максимум оперативной памяти можно использовать на вашем компьютере, вам нужно будет разделить полученное значение на «1048576». Это действие позволит преобразовать КБ в ГБ.

В моем случае, максимальный объем ОЗУ составляет 32 ГБ. На материнской плате находится 4 слота памяти, это означает, что максимальный объем оперативной памяти на слот составляет 32/4 = 8 ГБ.

Получение информации с сайта производителя материнской платы

Вы можете собрать сведения в Интернете, чтобы проверить максимальный поддерживаемый объем оперативной памяти для своего ноутбука или стационарного ПК. Лучший вариант — использование официального сайта производителя устройства. Также подойдут сайты крупных торговых площадок, где обычно имеются подробные сведения о продаваемой технике.

Вам нужно узнать модель материнской платы на вашем компьютере. Об этом прочитайте в другой статье на сайте.

С помощью названия модели материнской платы или модели ноутбука найдите в поиске полезную информацию о характеристиках этого устройства.

характеристики памяти

Ограничения по объему оперативной памяти

Помимо свойств материнской платы, на максимальный размер оперативной памяти влияют характеристики процессора и разрядность операционной системы Windows.

Посмотрите на официальном сайте производителя какой максимальный размер памяти поддерживает центральный процессор вашего компьютера.

Имейте в виду, что 32-битные версии операционных систем Windows 10, Windows 8, Windows 7 имеют ограничения по суммарному объему памяти в 4 ГБ, а версия Windows 7 Starter — в 2 ГБ. Это означает, что несмотря на то, что на ПК будет физически установлено больше оперативной памяти, система увидит и будет использовать только до 4 ГБ памяти.

В 64-битных версиях Windows подобные ограничения практически не оказывают влияние на максимальный размер ОЗУ. Исключения касаются только версий Windows 7 Home Premium — 16 ГБ и Windows 7 Home Basic — 8 ГБ.

Размер оперативной памяти — не единственное, что следует учитывать при выборе оперативной памяти. Вы столкнетесь с уменьшением отдачи в большинстве случаев использования, когда достигнете 16 ГБ, и в большей степени — 32 ГБ.

Следующий фактор ОЗУ, на который следует обратить внимание, — это частота (измеряется в МГц), которая также имеет значение до определенного момента.

Выводы статьи

Для повышения производительности компьютера пользователь может увеличить объем оперативной памяти на своем устройстве. Сначала нужно определить текущий размер ОЗУ, а затем максимальный объем оперативной памяти для своего компьютера. Если ваш ПК поддерживает больше памяти, чем установлено сейчас, вы можете установить дополнительные модули ОЗУ на свое устройство.

Сколько адресов памяти мы можем получить с 32-разрядным процессором и оперативной памятью 1 ГБ?

Сколько адресов памяти мы можем получить с 32-разрядным процессором и оперативной памятью 1 ГБ и сколько с 64-разрядным процессором?

Я думаю, что это что-то вроде этого:

1 ГБ оперативной памяти делится на 32 бита или делится на 4? узнать количество адресов памяти?

Но я не уверен. Вот почему я спрашиваю.

Я прочитал в википедии, что 1 адрес памяти имеет ширину 32 бита или 4 октета (1 октет = 8 бит) по сравнению с 64-битным процессором, где 1 адрес памяти или 1 целое число имеют ширину 64 бита или 8 октетов. Но не знаю, правильно ли я это понял.

6 ответов на вопрос

  • Популярные
  • Новые
  • С комментариями
  • Активные

Краткий ответ: Количество доступных адресов равно меньшему из них:

  • Объем памяти в байтах
  • Наибольшее целое число без знака, которое можно сохранить в машинном слове процессора

Длинный ответ и объяснение вышесказанного:

Память состоит из байтов (B). Каждый байт состоит из 8 бит (б).

1 ГБ ОЗУ на самом деле составляет 1 ГБ (гибибайт, а не гигабайт). Разница в том, что:

Каждый байт памяти имеет свой собственный адрес, независимо от того, насколько велико машинное слово процессора. Например. Процессор Intel 8086 был 16-разрядным, и он обращался к памяти байтами, как и современные 32-разрядные и 64-разрядные процессоры. Это является причиной первого ограничения — вы не можете иметь больше адресов, чем байтов памяти.

Адрес памяти — это просто число байтов, которое ЦП должен пропустить с начала памяти, чтобы получить тот, который он ищет.

  • Для доступа к первому байту необходимо пропустить 0 байтов, поэтому адрес первого байта равен 0.
  • Для доступа ко второму байту необходимо пропустить 1 байт, поэтому его адрес равен 1.
  • (и так далее. )
  • Для доступа к последнему байту процессор пропускает 1073741823 байта, поэтому его адрес равен 1073741823.

Теперь вы должны знать, что на самом деле означает 32-разрядный. Как я уже говорил, это размер машинного слова.

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

Теперь подумайте об этом: если у вас есть один бит, вы можете сохранить на нем два значения: 0 или 1. Добавьте еще один бит, и у вас будет четыре значения: 0, 1, 2, 3. На трех битах вы можете сохранить восемь значений : 0, 1, 2 . 6, 7. На самом деле это двоичная система, и она работает так:

Это работает точно так же, как обычное сложение, но максимальная цифра — 1, а не 9. Десятичная дробь 0 — это 0000 , затем вы добавляете 1 и получаете 0001 , добавляете еще раз, и у вас есть 0010 . То, что здесь происходит, похоже на десятичную 09 и добавление единицы: вы меняете 9 на 0 и увеличиваете следующую цифру.

Из приведенного выше примера вы можете видеть, что всегда есть максимальное значение, которое вы можете хранить в числе с постоянным количеством битов — потому что, когда все биты равны 1, и вы пытаетесь увеличить значение на 1, все биты станут равными 0, таким образом разбивая число. Это называется целочисленным переполнением и вызывает много неприятных проблем, как для пользователей, так и для разработчиков.

  • Для 1 бита наибольшее значение равно 1,
  • 2 бита — 3,
  • 3 бита — 7,
  • 4 бита — 15
Читать:
Вспомните что такое служебные ключевые слова языка программирования

Максимально возможное число всегда равно 2 ^ N-1, где N — количество битов. Как я уже говорил, адрес памяти — это число, которое также имеет максимальное значение. Вот почему размер машинного слова также является ограничением для количества доступных адресов памяти — иногда ваш процессор просто не может обработать числа, достаточно большие, чтобы адресовать больше памяти.

Таким образом, в 32 битах вы можете хранить числа от 0 до 2 ^ 32-1, и это 4 294 967 295. Это больше, чем самый большой адрес в 1 ГБ ОЗУ, поэтому в вашем конкретном случае объем ОЗУ будет ограничивающим фактором.

Предел оперативной памяти для 32-разрядного ЦП теоретически составляет 4 ГБ (2 ^ 32), а для 64-разрядного ЦП — 16 ЭБ (эксабайт, 1 ЭБ = 2 ^ 30 ГБ). Другими словами, 64-битный процессор может адресовать весь Интернет . 200 раз;) (по оценкам WolframAlpha ).

Однако в реальных операционных системах 32-разрядные процессоры могут обрабатывать около 3 ГБ ОЗУ. Это из-за внутренней архитектуры операционной системы — некоторые адреса зарезервированы для других целей. Вы можете прочитать больше об этом так называемом барьере 3 ГБ в Википедии . Вы можете снять этот предел с помощью расширения физического адреса .

Говоря об адресации памяти, я должен упомянуть несколько вещей: виртуальную память, сегментацию и разбиение на страницы .

Виртуальная память

Как отметил @Daniel R Hicks в другом ответе, операционные системы используют виртуальную память. Это означает, что приложения на самом деле работают не с реальными адресами памяти, а с ОС.

Этот метод позволяет операционной системе перемещать некоторые данные из ОЗУ в так называемый Pagefile (Windows) или Swap (* NIX). Жесткий диск на несколько порядков медленнее, чем ОЗУ, но это не является серьезной проблемой для редко используемых данных и позволяет ОС предоставлять приложениям больше оперативной памяти, чем вы фактически установили.

Paging

То, о чем мы говорили до сих пор, называется плоской схемой адресации.

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

Представьте себе книгу, заполненную 4-буквенными словами. Допустим, на каждой странице 1024 номера. Чтобы обратиться к номеру, нужно знать две вещи:

  • Номер страницы, на которой напечатано это слово.
  • Какое слово на этой странице является тем, которое вы ищете.

Теперь именно так современные процессоры x86 обрабатывают память. Он разделен на 4 страницы по КиБ (1024 машинных слова каждая), и эти страницы имеют номера. (на самом деле страницы также могут иметь размер 4 МБ или 2 МБ с PAE ). Если вы хотите обратиться к ячейке памяти, вам нужен номер страницы и адрес на этой странице. Обратите внимание, что на каждую ячейку памяти ссылается ровно одна пара чисел, это не относится к сегментации.

сегментация

Ну, этот очень похож на пейджинг. Он был использован в Intel 8086, просто чтобы назвать один пример. Группы адресов теперь называются сегментами памяти, а не страницами. Разница в том, что сегменты могут перекрываться, и они сильно перекрываются. Например, на 8086 большинство ячеек памяти были доступны из 4096 различных сегментов.

Допустим, у нас есть 8 байтов памяти, все держат нули, кроме 4-го байта, который равен 255.

Иллюстрация для плоской модели памяти:

Иллюстрация для страничной памяти с 4-байтовыми страницами:

Иллюстрация для сегментированной памяти с 4-байтовыми сегментами, сдвинутыми на 1:

Как видите, 4-й байт может быть адресован четырьмя способами: (адресация от 0)

  • Сегмент 0, смещение 3
  • Сегмент 1, смещение 2
  • Сегмент 2, смещение 1
  • Сегмент 3, смещение 0

Это всегда одна и та же ячейка памяти.

В реальных реализациях сегменты смещены более чем на 1 байт (для 8086 это было 16 байт).

Что плохо в сегментации, так это то, что она сложная (но я думаю, вы уже это знаете;) Что хорошо, вы можете использовать некоторые умные методы для создания модульных программ.

Например, вы можете загрузить какой-либо модуль в сегмент, а затем сделать вид, что сегмент меньше, чем он есть на самом деле (достаточно мал, чтобы вместить модуль), затем выбрать первый сегмент, который не перекрывается с этим псевдо-меньшим, и загрузить следующий модуль., и так далее. По сути, вы получаете страницы переменного размера.

В дополнение к вышесказанному обратите внимание, что используется виртуальная адресация, а также несколько адресных пространств . Таким образом, даже если у вас есть только 1 ГБ ОЗУ, программа может концептуально использовать до 4 ГБ виртуальной памяти (хотя большинство операционных систем ограничит ее до этой величины). И вы можете концептуально иметь (почти) бесконечное количество таких 4 ГБ адресных пространств.

Размер ОЗУ не ограничивает (настолько сильно) максимальный размер программы или количество программ, которые вы можете запустить, а скорее ограничивает производительность. Когда реальная память становится «перегруженной» и система начинает «перебивать», когда она «переставляет» «страницы» памяти между оперативной памятью и диском, производительность падает.

1 ГБ ОЗУ будет занимать 1024 * 1024 * 1024 байта или 1 073 741 824 байта.

32-разрядный процессор всегда имеет 4 * 1024 * 1024 * 1024 байта или 4 294 967 296 байт адресного пространства. В этом пространстве появляется 1 ГБ ОЗУ. На процессорах Intel часть ОЗУ должна появляться по адресу 0 для векторов прерываний, поэтому физическая ОЗУ начинается с адреса 0 и увеличивается.

В этом адресном пространстве появляются другие объекты, такие как BIOS и дополнительные ПЗУ (в верхних 384 КБ в пределах первого 1 МБ), устройства ввода-вывода (например, APIC) и видеопамять. Некоторые странные вещи также происходят с режимом управления системой «SMRAM», который я еще не полностью понимаю.

Обратите внимание, что это физическое адресное пространство с точки зрения ядра. MMU может каким-либо образом переставить все это в процесс пользовательского пространства.

Сколько адресов памяти мы можем получить с 32-разрядным процессором и оперативной памятью 1 ГБ?

Сколько адресов памяти мы можем получить с 32-разрядным процессором и оперативной памятью 1 ГБ и сколько с 64-разрядным процессором?

Я думаю, что это что-то вроде этого:

1 ГБ оперативной памяти делится на 32 бита или делится на 4? узнать количество адресов памяти?

Но я не уверен. Вот почему я спрашиваю.

Я прочитал в википедии, что 1 адрес памяти имеет ширину 32 бита или 4 октета (1 октет = 8 бит) по сравнению с 64-битным процессором, где 1 адрес памяти или 1 целое число имеют ширину 64 бита или 8 октетов. Но не знаю, правильно ли я это понял.

6 ответов 6

Краткий ответ: Количество доступных адресов равно меньшему из них:

  • Объем памяти в байтах
  • Наибольшее целое число без знака, которое можно сохранить в машинном слове процессора

Длинный ответ и объяснение вышесказанного:

Память состоит из байтов (B). Каждый байт состоит из 8 бит (б).

1 ГБ ОЗУ на самом деле составляет 1 ГБ (гибибайт, а не гигабайт). Разница в том, что:

Каждый байт памяти имеет свой собственный адрес, независимо от того, насколько велико машинное слово процессора. Например. Процессор Intel 8086 был 16-разрядным, и он обращался к памяти байтами, как и современные 32-разрядные и 64-разрядные процессоры. Это является причиной первого ограничения — вы не можете иметь больше адресов, чем байтов памяти.

Адрес памяти — это просто число байтов, которое ЦП должен пропустить с начала памяти, чтобы получить тот, который он ищет.

  • Для доступа к первому байту необходимо пропустить 0 байтов, поэтому адрес первого байта равен 0.
  • Для доступа ко второму байту необходимо пропустить 1 байт, поэтому его адрес равен 1.
  • (и так далее. )
  • Для доступа к последнему байту процессор пропускает 1073741823 байта, поэтому его адрес равен 1073741823.

Теперь вы должны знать, что на самом деле означает 32-разрядный. Как я уже говорил, это размер машинного слова.

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

Теперь подумайте об этом: если у вас есть один бит, вы можете сохранить на нем два значения: 0 или 1. Добавьте еще один бит, и вы получите четыре значения: 0, 1, 2, 3. На трех битах вы можете сохранить восемь значений: 0, 1, 2 . 6, 7. На самом деле это двоичная система, и она работает так:

Он работает точно так же, как обычное сложение, но максимальная цифра — 1, а не 9. Десятичное число 0 равно 0000 , затем вы добавляете 1 и получаете 0001 , добавляете еще раз, и у вас есть 0010 . То, что здесь происходит, похоже на десятичную 09 и добавление единицы: вы меняете 9 на 0 и увеличиваете следующую цифру.

Из приведенного выше примера вы можете видеть, что всегда есть максимальное значение, которое вы можете хранить в числе с постоянным количеством битов — потому что, когда все биты равны 1, и вы пытаетесь увеличить значение на 1, все биты станут равными 0, таким образом разбивая число. Это называется целочисленным переполнением и вызывает много неприятных проблем, как для пользователей, так и для разработчиков.

  • Для 1 бита наибольшее значение равно 1,
  • 2 бита — 3,
  • 3 бита — 7,
  • 4 бита — 15

Максимально возможное число всегда равно 2 ^ N-1, где N — количество битов. Как я уже говорил, адрес памяти — это число, которое также имеет максимальное значение. Вот почему размер машинного слова также является ограничением для количества доступных адресов памяти — иногда ваш процессор просто не может обработать числа, достаточно большие, чтобы адресовать больше памяти.

Таким образом, в 32 битах вы можете хранить числа от 0 до 2 ^ 32-1, а это 4 294 967 295. Это больше, чем самый большой адрес в 1 ГБ ОЗУ, поэтому в вашем конкретном случае объем ОЗУ будет ограничивающим фактором.

Предел оперативной памяти для 32-разрядного ЦП теоретически составляет 4 ГБ (2 ^ 32), а для 64-разрядного ЦП — 16 ЭБ (эксабайт, 1 ЭБ = 2 ^ 30 ГБ). Другими словами, 64-битный процессор может адресовать весь Интернет . 200 раз;) (по оценкам WolframAlpha).

Однако в реальных операционных системах 32-разрядные процессоры могут обрабатывать около 3 ГБ ОЗУ. Это из-за внутренней архитектуры операционной системы — некоторые адреса зарезервированы для других целей. Вы можете прочитать больше об этом так называемом барьере 3 ГБ в Википедии. Вы можете снять этот предел с помощью расширения физического адреса.

Говоря об адресации памяти, я должен упомянуть несколько вещей: виртуальную память, сегментацию и разбиение на страницы.

Виртуальная память

Как отметил @Daniel R Hicks в другом ответе, операционные системы используют виртуальную память. Это означает, что приложения на самом деле работают не с реальными адресами памяти, а с ОС.

Этот метод позволяет операционной системе перемещать некоторые данные из ОЗУ в так называемый Pagefile (Windows) или Swap (* NIX). Жесткий диск на несколько порядков медленнее, чем ОЗУ, но это не является серьезной проблемой для редко используемых данных и позволяет ОС предоставлять приложениям больше оперативной памяти, чем вы фактически установили.

Paging

То, о чем мы говорили до сих пор, называется плоской схемой адресации.

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

Представьте себе книгу, заполненную 4-буквенными словами. Допустим, на каждой странице 1024 номера. Чтобы обратиться к номеру, нужно знать две вещи:

  • Номер страницы, на которой напечатано это слово.
  • Какое слово на этой странице является тем, которое вы ищете.

Теперь именно так современные процессоры x86 обрабатывают память. Он разделен на 4 страницы по КиБ (1024 машинных слова каждая), и эти страницы имеют номера. (на самом деле страницы также могут иметь размер 4 МБ или 2 МБ с PAE). Если вы хотите обратиться к ячейке памяти, вам нужен номер страницы и адрес на этой странице. Обратите внимание, что на каждую ячейку памяти ссылается ровно одна пара чисел, это не относится к сегментации.

сегментация

Ну, этот очень похож на пейджинг. Он был использован в Intel 8086, просто чтобы назвать один пример. Группы адресов теперь называются сегментами памяти, а не страницами. Разница в том, что сегменты могут перекрываться, и они сильно перекрываются. Например, на 8086 большинство ячеек памяти были доступны из 4096 различных сегментов.

Допустим, у нас есть 8 байтов памяти, все держат нули, кроме 4-го байта, который равен 255.

Иллюстрация для плоской модели памяти:

Иллюстрация для страничной памяти с 4-байтовыми страницами:

Иллюстрация для сегментированной памяти с 4-байтовыми сегментами, сдвинутыми на 1:

Как видите, 4-й байт может быть адресован четырьмя способами: (адресация от 0)

  • Сегмент 0, смещение 3
  • Сегмент 1, смещение 2
  • Сегмент 2, смещение 1
  • Сегмент 3, смещение 0

Это всегда одна и та же ячейка памяти.

В реальных реализациях сегменты смещены более чем на 1 байт (для 8086 это было 16 байт).

Что плохо в сегментации, так это то, что она сложная (но я думаю, вы уже это знаете;) Что хорошо, вы можете использовать некоторые умные методы для создания модульных программ.

Например, вы можете загрузить какой-либо модуль в сегмент, а затем сделать вид, что сегмент меньше, чем он есть на самом деле (достаточно мал, чтобы вместить модуль), затем выбрать первый сегмент, который не перекрывается с этим псевдо-меньшим, и загрузить следующий модуль. , и так далее. По сути, вы получаете страницы переменного размера.

Похожие статьи