Как рассчитать максимальное количество оперативной памяти адресуемое процессором
Этот вопрос был перенесен из переполнения стека, поскольку на него могут ответить суперпользователи. Мигрировал 10 лет назад .
Я читаю книгу о своей компьютерной архитектуре и вижу, что в 32-разрядном процессоре x86 счетчик программ 32-разрядный.
Таким образом, число байтов, которые он может адресовать, составляет 2 ^ 32 байта или 4 ГБ. Поэтому для меня имеет смысл, что большинство 32-битных машин ограничивают объем оперативной памяти до 4 Гб (игнорируя PAE).
Прав ли я, предполагая, что 64-битная машина теоретически может адресовать 2 ^ 64 байта или 16 эксабайт оперативной памяти ?!
Обратите внимание, что ни один из существующих 64-разрядных процессоров x86 не может это сделать. Их кэшам не хватает битов тегов, их адресным шинам не хватает ширины и так далее. 46 бит (8 ТБ) - максимум для многих современных процессоров x86.
Теоретически, нет предела. Даже 32-разрядные процессоры могут иметь адресное пространство выше 4 ГиБ. Это зависит от того, как система управления памятью реализована аппаратно , что обычно не зависит от длины слова процессора. Указатели в программах всегда имеют длину слова, но в любом случае это виртуальные адреса (а не физические), поэтому они дополнительно отображаются в другое адресное пространство.
Теоретически: 16,8 миллиона терабайт. На практике: корпус вашего компьютера слишком мал, чтобы вместить всю эту оперативную память.
Я читал в других источниках, что процессор не может использовать каждый бит для доступа к памяти, учитывается ли это в вашем ответе?
В дополнение к ответу Мэтта Болла, на данный момент самый большой объем оперативной памяти, который я могу найти в одном конкретном онлайн-магазине, составляет 32 ГБ. Для достижения 1 терабайта потребуется 32 из них. Приблизительно полдюйма на одну флешку, это дает нам выделенные 16 дюймов места на вашей материнской плате для терабайта коммерческой оперативной памяти. Чтобы достичь 16,8 миллиона терабайт, материнской плате потребуется 4242,42 мили. Расстояние от Лос-Анджелеса до Нью-Йорка составляет около 2141 миль, поэтому материнская плата будет простираться по всей стране и обратно, чтобы вместить столько оперативной памяти.
Понятно, что это нецелесообразно.
Как насчет того, чтобы мы не поместили нашу оперативную память в один ряд, как на большинстве материнских плат, а вместо этого разместили их рядом. Я хочу сказать, что средняя палка барана составляет около шести дюймов в длину, поэтому, если мы допустим ширину в полдюйма, вы можете получить квадратную единицу из 12 палочек барана в квадрате 6 дюймов. Давайте назовем этот квадрат RAM-плиткой. Тогда RAM-плитка содержит 384 ГБ оперативной памяти. Для получения необходимых 16,8 миллионов терабайт в ячейках размером 384 ГБ потребуется 44,8 миллиона. Давайте запутаемся и используем квадратный корень из этого, чтобы сделать вывод, что это поместится в квадрат 6693 на 6694 плиток, или 13 386 на 13 388 футов, что достаточно близко к квадрату на 2,5 мили, что достаточно, чтобы покрыть центр Сиэтла в тени, как если бы у них уже не было достаточно, чтобы жаловаться.
Слишком большой. Почему вы кладете их на квартиру? Вы можете получить все это в 100-футовом кубе. Возможно, вам понадобится жидкий азот, чтобы он остыл.
количество газообразного азота, которое могло бы закипеть, могло бы создать угрозу безопасности для великих людей Сиэтла
Одна возможная коррекция. Так как размер плитки 6 на 6 дюймов, это не означает, что площадь 3346,5 на 3347 футов (половина количества плиток), а не 13,386, что в два раза превышает количество плиток. Кроме того, еще одна проблема, о которой никто не упоминал. Предположим, наилучшее расположение: круг, радиус должен быть около 1890 футов, чтобы охватить необходимую область. Как отметил Адм, Грейс Хоппер, задержка передачи по меди составляет около наносекунды / фут. Это означает, что задержка прохождения сигнала в оба конца до внешнего кольца будет составлять ~ 3,78 микросекунды. Это немного на медленной стороне для основной памяти. IMEHO.
По сути, да - процессы теоретически могут адресовать 2 ^ 64 байта памяти. Но, как вы указали, есть пределы этому пределу.
Всем привет. Стало интересно узнать. 32 битный процессор может использовать 2 в 32 степени бит. То есть 4 гигабайта оперативной памяти. А вот сколько 64 битный процессор может использовать? 2 в 64 степени / 8 / 1024 / 1024 / 1024 это сколько?
Сколько максимум оперативной памяти желательно использовать приложению?
Пишу простое приложение (просмотрщик новостей с сайта). В каких пределах использовать оперативную.
Минимальное значение частоты оперативной памяти и процессор
На процессоре. Intel Core i5 3330. Минимальная частота оперативной памяти - 1333Мгц. Что будет если.
Может ли из за оперативной памяти не читатся ЖД?
Забрал у дяди - компьютер производства "ДНС". Работал, работал исправно, но вдруг жесткий диск.
snake32, откуда такое число? Смахивает на бред какой-то.
В том то и дело, что раз байт - наименьшая адресуемая единица памяти, то надо все выразить в байтах.
Вообще, У Олифер и Олифер, как-то читал, что при сегментной организации памяти (без включения страничного механизма) процесс способен работать с виртуальным адресным пространством в 64ТБайта.
Однако, насколько я знаю, сейчас страничный механизм повсюду, тут надо уточнять.
Добавлено через 5 минут
Вот оно, на деле, вроде так:
На деле используется 48 младших бит для виртуального адресного пространства процессов в 64x системах.
Речь идет не про команды, а про адресное пространство, не путать.
Because that's all that's needed. 48 bits give you an address space of 256 terabyte. That's a lot. You're not going to see a system which needs more than that any time soon.
256 терабайт - довольно много.
Добавлено через 4 минуты
Последние PRO версии Threadripper-ов задействуют по максимуму только 2Терабайта, куда уж больше то.
There’s been a rumor going around this week about a new, 64-core Threadripper CPU from AMD. Dubbed the 3995WX and debuting under the “Threadripper Pro” brand-name, this chip is supposed to debut with an eight-channel memory configuration with support for up to 2TB of RAM.
Дык изначально в выражении: 2^64 или 2^32 - речь идёт о байтах. Поэтому дополнительные манипуляции приводящие к байтам - не нужны.
Хм, возможно. Я о максимальной теоретической адресации говорил (вроде как именно это и спрашивалось, по крайней мере я так понял вопрос)
Теоретически 64-разрядный указатель может адресовать до 16 эксабайт. На данный момент в 64-разрядных версиях Windows обеспечивается адресное пространство объемом до 16 ТБ.
Как видите цифры не сходятся, но возможно, для разных ОС (но с одинаковой битностью x64) разные ограничения на максимальный объём виртуальной памяти.
Элементарно посчитать. Адресное пространство процессора в N-разрядной операционной системе (ОС) составляет 2^N ячеек памяти. Каждая ячейка памяти = 1 байт. Соответственно, в 32 разрядной ОС имеем
2^32 = 4 294 967 296 ячеек памяти, т. е. 4 294 967 296 байт. Делим на 1024 (байт/килобайт) , получаем:
4 294 967 296 / 1024 = 4 194 304 килобайт = 4 096 мегабайт = 4 гигабайт.
В 64 разрядной ОС получаем:
2^64 = 18 446 744 073 709 551 616 ячеек памяти, т. е.
18 014 398 509 481 984 килобайт = 17 592 186 044 416 мегабайт = 17 179 869 184 гигабайт = 16 777 216 терабайт.
Элементарно посчитать. Адресное пространство процессора в N-разрядной операционной системе (ОС) составляет 2^N ячеек памяти.
Ну так себе ответ, в том плане, что нужно подробно понимать организацию памяти в конкретной ОС, при этом процесс в винде делится на две части - системную и пользовательскую, у каждой свое адресное пространство.
Я так понял, из 64 бит - 16 вообще не используется, остальные 48 делятся на два отдельных виртуальных адресных пространства, под пользователя и под ядро.
А просто попугаев считать на калькуляторе - практически недостоверно.
Google chrome нагружает процессор и ест много оперативной памяти
Добрый день. Google chrome нагружает процессор и ест много оперативной памяти. Очистка истории.
Google chrome нагружает процессор и ест много оперативной памяти - Удаление вирусов
Добрый день. Google chrome нагружает процессор и ест много оперативной памяти. Буду очень.
Сколько надо оперативной памяти?
Собираюсь покупать новый системный блок. Сколько надо ОЗУ для современных игр? Покупать 8 или 16 ГБ?
Как использовать весь объем оперативной памяти в приложении на C++ Builder
Всем привет! В приложении, написанном на C++ Builder возникла необходимость использовать.
Сколько можно поставить оперативной памяти
Сколько можно поставить оперативной памяти. Скринт ниже. МП M2N-VM HDMI
Если рассчитывать пропускную производительность процессора то получается (4*3200)*8=102,4 Гб/сек
Оперативная память 1600*8=12800 Гб/сек вот тут незнаю надо ли умножать на 4 Гб?
Если не умножать то получается что процессор большую часть времени будет просто бездействовать в ожидании данных из оперативки или как?)
И как в этом деле будет с видеокартой?
Заранее спасибо всем кто откликнется!
Добавлено через 1 час 33 минуты
Разгон процессора и оперативной памяти для начинающих
Эта статья о разгоне процессоров для начинающих "Оверклокеров" или людей столкнувшихся с проблемами.
Связь оперативной памяти и процессора
всем привет, хотелось бы узнать, существует ли взаимосвязь ОЗУ и ЦПУ. Если на процессоре написано.
Выбор оперативной памяти и процессора
хотелось бы увеличить объем оперативной памяти до 8Gb по каким параметрам выбирать планки и не.
Апгрейд процессора и оперативной памяти
Всем привет! Хотел бы посоветоваться по поводу улучшения древнего компа, т.к. на удивление, он.
Когда пользователь начинает думать об обновлении своего ПК, то первое что приходит в голову это оперативная память. Иногда только увеличения объема оперативной памяти бываете достаточно, и дальнейшее обновление составляющих компьютера становиться ненужным. Особое внимание на оперативную память обычно обращают геймеры, как бы это не показалось странно, современные игры требуют от компьютера высокой производительности, поэтому если вы хотите нормально играть в любые игры, вам придется установить несколько хороших планок оперативной памяти.
Типы оперативной памяти:
Очень часто, пользователи, выбирая ОЗУ, обращают свое внимание только на объем, а это не совсем правильный подход. Первым шагом для выбора оперативной памяти должно быть определение типа ОЗУ, который подойдет для инсталляции в вашу системную плату. Всего типов четыре, DDR, DDR2, DDR3 и DDR4, которая в скором времени выйдет в массовую продажу. В начале 90-х годов, на рынок вышла оперативная память типа SDRAM. Стоили они недорого и быстро завоевали популярность среди пользователей. На их смену пришли планки типа DDR SDRAM, сейчас они почти не используются, и купить их даже для старых компьютеров можно только с рук. DDR SDRAM от предыдущей версии отличалась двухканальным режимом работы, потребляя при этом 527 мВт, а для работы микросхем хватало напряжения в 2,6 В.
DDR2 от DDR отличается как внешне, так и технически, потребляемая мощность у DDR2 247 мВт, а 1,8 В хватает для нормального питания микросхем. Впрочем, DDR2 в наше время уже тоже неактуально, теперь все современные материнские платы поддерживают DDR3. Это позволяет сократить время задержки до пары наносекунд, также увеличить пропускную способность ОЗУ и обеспечить экономию энергии и более меньшею тепловыделение.
Если у вас нет ограничений по типу ОЗУ, то явно, лучшим решением будет покупка оперативной памяти типа DRR3. Ведь пока, DDR3 это самая последняя версия ОЗУ, новая DDR4 предположительно должна выйти только в конце 2013 году.
Пропускная способность:
Идеальным вариантом будет установка оперативной памяти с поддержкой такой пропускной способности, которая совпадает с возможностями пропускной способности на шине процессора. Пропускная способность может сильно повлиять на производительность ОЗУ, поэтому уделите этому параметру особе внимание. В большинстве случаев, пропускная способность у планки меньше, поэтому для положительного эффекта необходимо вставить сразу две планки, имеющие такие одинаковые характеристики как тайминг, объем и пропускная способность оперативной памяти. При выполнении этих правил, пропускная способность будет суммироваться, так например если пропускная способность шины процессора 10600, то у модуля памяти пропускная способность должна быть 5300.
Не забывайте, для правильной работы сразу двух планок, материнская плата должна поддерживать двухканальный режим.
Тайминги:
При выборе модуля памяти, многие также забывают о таком важном моменте как временная задержка сигнала, или тайминг. Обычно, значение таймингов записывается как четырех цифр через дефис. Знание этой информации обычному пользователю много не принесет, но стоит понимать, чем меньше там цифры, тем лучше.
Частота оперативной памяти:
Выбирая ОЗУ, стоит обратить внимание на поддерживаемую частоту оперативной памяти, не стоит покупать ОЗУ с больше частотой нежели поддерживает ваша материнская плата, в противном случае, купленная планка ОЗУ будет работать на максимальной частоте шины материнской платы. Но это еще не главное, несоответствие тактовой частоты может в дальнейшем привести к ошибкам в работе программ. Бывает так, что тактовая частота может быть указана в названии самого модуля памяти, например DDR3 1333, частота которого 1333МГц или DDR2 667, с частотой 667МГц.
Объем оперативной памяти:
Самыми распространенными объемами оперативной памяти являются 1024 и 2048Мб. На данный момент, рекомендуемый минимальный порог это 2 Гб (2048Мб). Если вы не планируете использовать какие-либо более ресурсоемкие приложения чем сейчас, то вы можете вызвать диспетчер задач (через Ctr+Alt+Del) и посмотреть, сколько оперативной памяти потребляет ваш компьютер на пике загруженности. Конечно, при апгрейде компьютера, некоторым из нас может захотеться укомплектовать компьютер по максимуму, но стоит помнить, что 32 битные версии ОС, не поддерживают работу с ОЗУ объемом более 3,5 Гб. Поэтому смысла покупать ОЗУ объемом более 4 гигабайт не имеет смысла.
Автор статьи: gaborik.
В 1945 году математик Джон Фон Нейман чётко сформулировал общие принципы функционирования цифровых вычислительных устройств.
Принципы фон Неймана
Цифровое вычислительное устройства должно работать по следующим принципам:
1. Принцип двоичного кодирования.
Согласно этому принципу, вся информация, поступающая в ЭВМ, кодируется с помощью двоичных сигналов.
2. Принцип программного управления.
Из него следует, что программа состоит из набора команд, которые выполняются процессором автоматически друг за другом в определенной последовательности.
3. Принцип однородности памяти:
— программы и данные хранятся в одной и той же памяти, то есть компьютеру всё равно, что содержится в данной ячейке памяти — число, текст или команда;
— над командами выполняются такие же операции, как и над данными;
— команды одной программы могут быть результатом исполнения команд другой программы;
4. Принцип адресации:
— структурно основная память состоит из пронумерованных ячеек, причем процессору в произвольный момент доступна любая ячейка. Двоичные коды команд и данных разделяются на единицы информации, называемые словами, и хранятся в ячейках памяти, а для доступа к ним используются номера соответствующих ячеек — адреса.
— АЛУ в любой момент времени доступна любая ячейка.
Компьютеры, построенные на этих принципах, называются фон-неймановскими.
Цифровое вычислительное устройство должно содержать:
— АЛУ (арифметическо-логическое устройство), которое должно выполнять арифметические и логические операции;
— УУ (устройство управления), которое организует процесс выполнения программ;
В современных компьютерах арифметическо-логическое устройство и устройство управления объединены в центральный процессор;
— ЗУ (запоминающее устройство или память), которое хранит программы и данные;
— ВУ (внешние устройства), которые служат для ввода и вывода информации.
Компьютерная память.
Внешняя память. (Внешние запоминающие устройства - ВЗУ)
Внешняя память предназначена для долговременного и энергонезависимого хранения программ и данных (память, реализованная в виде внешних, относительно материнской платы, устройств с разными принципами хранения информации и типами носителя).
Устройство, которое обеспечивает запись/считывание информации, называется накопителем, или дисководом, а хранится информация на носителях (например, DVD - дисках)
Устройства внешней памяти:
накопители на жестких магнитных дисках (НЖМД), английское название - HDD - Hard Disk Drive)
оптические диски - CD, DVD, Blue-Ray
Flash - память,
Твердотельные накопители (англ. - SSD solid-state drive)
Единицей хранения информации во внешней памяти является файл – последовательность байтов, записанная в устройство внешней памяти и имеющая имя. Обмен информации между оперативной памятью и внешней осуществляется файлами.
Внутренняя память
Оперативная память (ОП) предназначена для временного хранения выполняемых программ и данных, обрабатываемых этими программами. Это энергозависимая память. Физически реализуется в модулях ОЗУ (оперативных запоминающих устройствах) различного типа. При выключении электропитания вся информация в оперативной памяти исчезает.
Занесение информации в память и её извлечение, производится по адресам. Каждый байт ОП имеет свой индивидуальный адрес (порядковый номер).
Адрес – число, которое идентифицирует ячейки памяти (регистры). ОП состоит из большого количества ячеек, в каждой из которых хранится определенный объем информации. ОП непосредственно связана с процессором. Возможности ПК во многом зависят от объёма ОП.
Кеш память - очень быстрая память малого объема служит для увеличения производительности компьютера, согласования работы устройств различной скорости. Это энергозависимая память.
Постоянное запоминающее устройство (ПЗУ) – энергонезависимая память для хранения программ управления работой и тестирования устройств ПК. Важнейшая микросхема ПЗУ – модуль BIOS (Basic Input/Output System – базовая система ввода/вывода), в котором хранятся программы автоматического тестирования устройств после включения компьютера и загрузки ОС в оперативную память. Это неразрушимая память, которая не изменяется при выключении питания.
CMOS (Complementary Metal-Oxide Semiconductor) - память с невысоким быстродействием и минимальным энергопотреблением от батарейки. Используется для хранения информации о конфигурации и составе оборудования компьютера, о режимах его работы. Содержимое изменяется программой, находящейся в BIOS (Basic Input Output System).
Видеопамять — это внутренняя оперативная память, отведённая для хранения данных, которые используются для формирования изображения на экране монитора.
Регистр процессора — блок ячеек памяти, образующий сверхбыструю оперативную память (СОЗУ) внутри процессора; используется самим процессором и большей частью недоступен программисту.
Внутренняя память компьютера
Дискретность -
Внутренняя память состоит из частиц – битов
В одном бите памяти хранится один бит информации
Адресуемость
Байт памяти – наименьшая адресуемая часть внутренней памяти ( 1 байт = 8 бит )
Все байты пронумерованы, начиная от 0
Номер байта – адрес байта памяти
Процессор обращается к памяти по адресам
Основные характеристики ПК
Производительность (быстродействие) ПК – возможность компьютера обрабатывать большие объёмы информации. Определяется быстродействием процессора, объёмом ОП и скоростью доступа к ней (современный ПК обрабатывает информацию со скоростью в сотни миллионов операций в секунду).
Производительность (быстродействие) процессора – количество элементарных операций выполняемых за 1 секунду.
Тактовая частота процессора (частота синхронизации) - число тактов процессора в секунду, а такт – промежуток времени (микросекунды) за который выполняется элементарная операция (например сложение). Таким образом Тактовая частота - это число вырабатываемых за секунду импульсов, синхронизирующих работу узлов компьютера. Именно ТЧ определяет быстродействие компьютера. Задается ТЧ специальной микросхемой «генератор тактовой частота», который вырабатывает периодические импульсы. На выполнение процессором каждой операции отводится определенное количество тактов. Частота измеряется в герцах (1/сек). Превышение порога тактовой частоты приводит к возникновению ошибок процессора и др. устройств. Поэтому существуют фиксированные величины тактовых частот для каждого типа процессоров, например: 2,8 ; 3,0 ГГц и тд.
Время доступа - Быстродействие модулей ОП, это период времени, необходимый для считывание min порции информации из ячеек памяти или записи в память. Современные модули обладают скоростью доступа свыше 10нс (1нс=10 -9 с).
Объем памяти (ёмкость) – max объем информации, который может храниться в ней. Скорость обмена информации – скорость записи/считывания на носитель, которая определяется скоростью вращения и перемещения этого носителя в устройстве
Магистрально-модульный принцип построения компьютера.
В основу архитектуры современных персональных компьютеров положен магистрально-модульный принцип. Модульный принцип позволяет потребителю самому комплектовать нужную ему конфигурацию компьютера и производить при необходимости ее модернизацию. Модульная организация компьютера опирается на магистральный (шинный) принцип обмена информацией между устройствами.
Магистраль (системная шина) включает в себя три многоразрядные шины: шину данных, шину адреса и шину управления, которые представляют собой многопроводные линии.
К магистрали подключаются процессор и оперативная память, а также, с помощью специальных согласующих устройств - контроллеров (контроллер клавиатуры, контроллер дисководов, видеоадаптер и т.д.), остальные устройства ввода, вывода и хранения информации. Необходимость использования контроллеров вызвана тем, что функциональные и технические параметры компонентов компьютера могут существенно различаться, например, их быстродействие. Так, процессор может проводить сотни миллионов операций в секунду, тогда как пользователь может вводить с клавиатуры, в лучшем случае 2-3 знака в секунду. Контроллер клавиатуры как раз и обеспечивает согласование скорости ввода информации со скоростью ее обработки.
Шина данных. По этой шине данные передаются между различными устройствами. Например, считанные из оперативной памяти данные могут быть переданы процессору для обработки, а затем полученные данные могут быть отправлены обратно в оперативную память для хранения. Таким образом, данные по шине данных могут передаваться от устройства к устройству в любом направлении. Разрядность шины данных определяется разрядностью процессора, то есть количеством двоичных разрядов, которые могут обрабатываться или передаваться процессором одновременно. Разрядность процессоров постоянно увеличивается по мере развития компьютерной техники.
Шина адреса. Выбор устройства или ячейки памяти, куда пересылаются или откуда считываются данные по шине данных, производит процессор. Каждое устройство или ячейка оперативной памяти имеет свой адрес. Адрес передается по адресной шине, причем сигналы по ней передаются в одном направлении - от процессора к оперативной памяти и устройствам (однонаправленная шина). Разрядность шины адреса определяет объем адресуемой памяти (адресное пространство), то есть количество однобайтовых ячеек оперативной памяти, которые могут иметь уникальные адреса. Количество адресуемых ячеек памяти можно рассчитать по формуле:N = 2 I , где I - разрядность шины адреса. Разрядность шины адреса постоянно увеличивалась и в современных персональных компьютерах составляет 36 бит. Таким образом, максимально возможное количество адресуемых ячеек памяти равно: N = 2 36 = 68719476736.
Шина управления. По шине управления передаются сигналы, определяющие характер обмена информацией по магистрали. Сигналы управления показывают, какую операцию - считывание или запись информации из памяти - нужно производить, синхронизируют обмен информацией между устройствами и так далее.
На главную страницу
К уроку
Все информационные, фото, видео материалы на официальном сайте образовательной организации размещены с согласия сотрудников, родителей (законных представителей) учащихся.
В случае, если Вам нежелательно размещение на сайте "изображения гражданина (ребенка) полученного при съемке, которая проводится в местах, открытых для свободного посещения, или на публичных мероприятиях" убедительная просьба прислать ссылку на изображение администратору сайта по адресу Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. и изображение будет удалено.
Сколько адресов памяти мы можем получить с 32-разрядным процессором и оперативной памятью 1 ГБ и сколько с 64-разрядным процессором?
Я думаю, что это что-то вроде этого:
1 ГБ оперативной памяти делится на 32 бита или делится на 4? узнать количество адресов памяти?
Но я не уверен. Вот почему я спрашиваю.
Я прочитал в википедии, что 1 адрес памяти имеет ширину 32 бита или 4 октета (1 октет = 8 бит) по сравнению с 64-битным процессором, где 1 адрес памяти или 1 целое число имеют ширину 64 бита или 8 октетов. Но не знаю, правильно ли я это понял.
Практически все современные системы имеют байтовую адресацию, что означает, что 32 бита могут адресовать около 4 гигабайт (если установлено столько оперативной памяти). Исторически существовали схемы с адресом слова, где «слово» составляло 12, 15, 16, 17, 24, 32, 36 или 48 бит, и, вероятно, некоторые другие, плюс десятичные машины, которые адресовали 4 или 6 бит Блок. Но также имейте в виду, что большинство современных систем используют виртуальную память, а это означает, что процессор может адресовать даже больше памяти, чем установлено.
@JamieHanrahan - Чтобы виртуальная память работала, должен быть какой-то механизм адресации, который охватывает диапазон виртуальных адресов (одного процесса). Это можно сделать с помощью программного моделирования, но это неэффективно, поэтому в большинстве систем диапазон адресации процессора сделан достаточно большим, чтобы охватить максимальное адресное пространство процесса.
@DanielRHicks Конечно, но это не влияет на объем оперативной памяти . ОЗУ - это физическая память, а не виртуальная. Виртуальные адреса не являются адресами ОЗУ, а виртуальная память не является ОЗУ.
@JamieHanrahan - Ты не имеешь никакого смысла. Если вы не можете обращаться к страницам ОЗУ в виртуальном адресном пространстве, то ОЗУ бесполезно. (Я очень хорошо знаю, как работает виртуальная память, работая над проектами виртуальной памяти с 1972 года.)
Краткий ответ: Количество доступных адресов равно меньшему из них:
- Объем памяти в байтах
- Наибольшее целое число без знака, которое можно сохранить в машинном слове процессора
Длинный ответ и объяснение вышесказанного:
Память состоит из байтов (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). Жесткий диск на несколько порядков медленнее, чем ОЗУ, но это не является серьезной проблемой для редко используемых данных и позволяет ОС предоставлять приложениям больше оперативной памяти, чем вы фактически установили.
То, о чем мы говорили, называется плоской схемой адресации.
Пейджинг - это альтернативная схема адресации, которая позволяет адресовать больше памяти, чем обычно, одним машинным словом в плоской модели.
Представьте себе книгу, заполненную 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 байт).
Что плохо в сегментации, так это то, что она сложная (но я думаю, вы уже это знаете;) Что хорошо, вы можете использовать некоторые умные методы для создания модульных программ.
Например, вы можете загрузить какой-либо модуль в сегмент, затем сделать вид, что сегмент меньше, чем он есть на самом деле (достаточно мал, чтобы вместить модуль), затем выбрать первый сегмент, который не перекрывается с этим псевдо-меньшим, и загрузить следующий модуль. , и так далее. По сути, вы получаете страницы переменного размера.
Операционная система может предоставить пользовательскому процессу полное виртуальное адресное пространство 4 ГБ (возможно, за вычетом одной страницы - 4 КБ для x86), но это делает системные вызовы более дорогими, поскольку необходимо изменить адресное пространство. С помощью PAE и аналогичных механизмов объем физической памяти, адресуемой системой, может быть увеличен, хотя адреса по-прежнему ограничены 32 битами.
Это не то, что я искал, но это хорошая информация в любом случае! Спасибо за хорошее объяснение макс. цифровая вещь (1 = макс., как в двоичном 9 макс.) для сравнения двоичной и десятичной таблиц. Действительно хороший способ думать об этом. Я узнал что-то новое. :) Благодарность!
Эти Гиби и Гига настолько сбивают с толку . Потому что на некоторых сайтах я читал, что память измеряется в Гиби, а на других - в Гига . У вас есть хороший / надежный источник?
Благодарность! Мне это нужно для школьных экзаменов. :) Я думаю, что теперь я понимаю большинство вещей. Единственное, что меня до сих пор беспокоит, так это почему 2 ^ 32 B, если это 32-битный процессор, а не 32-байтовый?
В дополнение к вышесказанному обратите внимание, что используется виртуальная адресация наряду с несколькими адресными пространствами . Таким образом, несмотря на то, что у вас есть только 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 может каким-либо образом переставить все это в процесс пользовательского пространства.
Я прочитал в википедии, что 1 адрес памяти имеет ширину 32 бита или 4 октета (1 октет = 8 бит) по сравнению с 64-битным процессором, где 1 адрес памяти или 1 целое число имеют ширину 64 бита или 8 октетов. Вы правы в отношении адресного пространства 4 * 1024 * 1024 * 1024 байта, но я искал адресное пространство памяти, которое, я думаю, составляет 1 ГБ / 32 бита, но я все еще не знаю, прав ли я или нет. :) Спасибо за ваш ответ!
Np. Процессоры Intel имеют два адресных пространства: «Память» и «Ввод / вывод». Вещи, кроме ОЗУ, появляются в области «Память». Другие вещи, такие как устройства ввода-вывода или ПЗУ, могут быть в местах, не занятых ОЗУ. Обычно в адресном пространстве ввода-вывода отображаются только устройства ввода-вывода.
@johansmohan Ни ваши цифры, ни ответ Лоуренса не верны. Не существует фиксированной связи между «битовой шириной» процессора и шириной адресов ОЗУ, которые он может использовать. 32-разрядные процессоры x86 могут адресовать 64 ГБ оперативной памяти. Процессоры x64 были запущены в 40-битном физическом адресном пространстве и теперь имеют 52 бита. Что касается виртуального адресного пространства, то оно тоже может быть другим. На x64, хотя для хранения виртуальных адресов требуется 64 бита, реализовано только 48 бит, для VAS 256 ТиБ вместо 16 EiB, которые вы ожидаете от 64 бит.
32-разрядный процессор может адресовать не более 2 ^ 32 отдельных байтов памяти (около 4 ГБ), но наличие 1 ГБ памяти приведет к 1 * 1024 * 1024 * 1024 адресуемым байтам памяти (хотя у вас, вероятно, все еще будет виртуальное адресное пространство 2 ^ 32). ). 64-битный процессор может адресовать 2 ^ 64 отдельных байтов, но я думаю, что большинство систем используют только 48 бит для адресов памяти, составляющих верхнюю границу. адресуемые байты 2 ^ 48.
Читайте также: