ЧЕТЫРЕ ГИГАБАЙТА ПАМЯТИ - НЕДОСТИЖИМАЯ ЦЕЛЬ

ПРОЧИТАЙТЕ ЭТО ИНТЕРЕСНО Предупреждение. В данной статье рассматриваются 32-разрядные версии Windows. Во всех случаях, когда разрядность системы не упоминается, речь идет именно о них. Компьютеры все совершенствуются и совершенствуются, а память все дешевеет и дешевеет. Одиннадцать лет назад модуль памяти объемом четыре мегабайта стоил сто с небольшим долларов. С тех пор цены упали на три порядка — почти за те же деньги сейчас можно купить четыре гигабайтовых модуля. ЧЕТЫРЕ ГИГАБАЙТА ПАМЯТИ - НЕДОСТИЖИМАЯ ЦЕЛЬ Системные платы для домашних компьютеров, поддерживающие установку четырех и даже восьми гигабайт оперативной памяти, перестали быть экзотикой, а удешевление памяти сделало покупку и установку ОЗУ такого размера реальными. Еще раз уточню, что речь идет именно о домашних компьютерах и о массовых рабочих компьютерах, поскольку серверы достигли этого рубежа достаточно давно, да и для серьезных рабочих станций такой объем ОЗУ уже не в новинку.
_ А вот рядовые пользователи лишь недавно получили возможность приобрести по приемлемой цене компьютер с четырьмя гигабайтами ОЗУ или расширить до этого предела память в уже имеющемся компьютере. Поэтому количество вопросов «Почему Windows не видит все мои четыре гигабайта» в последнее время увеличивается даже не в арифметической, а в геометрической прогрессии. Ответ на этот вопрос начнем с небольшого экскурса в теорию организации ЭВМ и в историю развития семейства этих машин, совместимого с IBM PC. Оперативная память ЭВМ практически всегда работала на несколько порядков быстрее, чем устройства внешней памяти или ввода-вывода. Поэтому для разработчиков было вполне логичным разделить операции обращения к ОП и к другим устройствам. К памяти шло непосредственное обращение, а операции ввода-вывода и работа с внешними устройствами выполнялись через специальные регистры — порты. С другой стороны, такое разделение усложняло систему команд, и в ряде моделей для обращения к устройствам была выделена область адресов памяти, в которой и размещались регистры устройств. По второй модели, в частности, была спроектирована знаменитая PDP-11: ее шестьдесят четыре килобайта адресного пространства были разделены на две части — 56 для оперативной памяти и восемь для устройств. Установка модуля ОЗУ полного объема (64 КБ) приводила к тому, что одна восьмая его часть просто не могла быть использована. Компания Intel с самого начала, с модели 4004 использовала первый подход: одно адресное пространство для ОЗУ и ПЗУ, а другое, отдельное пространство портов ввода-вывода — для остальных устройств. Такое решение, конечно, давало возможность полностью использовать все адресное пространство под память. Но оно имело и отрицательные стороны. Обращение к портам обычно занимает больше времени, к тому же оно не совместимо с технологией прямого доступа в память, заметно увеличивающей скорость обмена данными и разгружающей центральный процессор. Поэтому разработчики компьютеров и периферийных устройств уже достаточно давно стали совмещать ввод-вывод через порты с прямым обращением в оперативную память устройства. Но чтобы обратиться к памяти устройства напрямую, эта память должна быть расположена в общем адресном пространстве. Если взять классический ПК, выпущенный в 1981 году, то его адресное пространство было поделено на две части в соотношении пять к трем. Первая часть отводилась для ОЗУ, а вторая — для ПЗУ самого компьютера (программа самотестирования — POST и базовая система ввода-вывода — BIOS) и для ПЗУ и ОЗУ устройств. Уже самый первый видеоадаптер MDA имел свою оперативную память, находящуюся в общем адресном пространстве памяти. Следует обратить внимание, что та часть адресного пространства, которая занята устройствами, не может быть одновременно использована для основной памяти компьютера. Ведь если на обращение к ячейке памяти будут откликаться два устройства, то возможны конфликты между ними и, как следствие, нарушение работы компьютера. Когда в 1985 году компания Intel выпустила процессор 80386, то при разработке компьютеров на его основе были приняты два решения. Во-первых, распределение адресов в первом мегабайте было оставлено неизменным ради совместимости с предшествующими моделями компьютеров и разработанными для них программами. Во-вторых, для реализации преимуществ 32-разрядной архитектуры было предусмотрено, что устройствам, нуждающимся в использовании адресного пространства памяти, выделяется четвертый гигабайт. Возможно, сейчас кому-то это решение и кажется опрометчивым, но тогда гигабайты памяти казались чем-то фантастическим. Да и вряд ли кто-то мог в то время предположить, что эта архитектура проживет еще как минимум двадцать лет. Впрочем, как оказалось, на самом деле решение вовсе не было опрометчивым: для работы видеоускорителей жизненно важна возможность прямого доступа драйвера к видеопамяти. Ведь альтернативой является пословная запись данных в порт, и тогда можно забыть, к примеру, о современной графике в играх. Чтобы получить примерное представление, как бы это выглядело, можете сравнить поведение дисковой системы в режиме прямого доступа в память (UDMA) и в режиме программного ввода-вывода (включите режим PIO 1 в настройках контроллера дисков, только не забудьте потом вернуть исходные настройки). Итак, в IBM PC/386 и во всех последующих совместимых компьютерах (а именно эта архитектура господствует сейчас на рынке персональных компьютеров) ОЗУ в адресном пространстве занимало нижние области, а остальное оборудование — от верхней границы 4 Гб вниз. Причем долгое время никто всерьез не беспокоился об этом четвертом гигабайте — единицы или десятки килобайт буферов сетевого адаптера и контроллера дисков и считанные мегабайты памяти видеоадаптера погоды не делали. К тому же для домашних и рабочих компьютеров такой объем памяти был просто нереален, а для установки большого количества памяти в мощные рабочие станции и серверы было предложено другое решение, о котором будет рассказано ниже. Первый серьезный скачок в «отжирании» у ОЗУ адресного пространства сделала технология AGP. С появлением видеоадаптеров с аппаратными ускорителями вывода трехмерных изображений резко увеличилась потребность в объеме оперативной памяти такого адаптера. Технология AGP дала возможность в случае необходимости (нехватки собственной памяти) использовать для нужд видеоадаптера часть основной памяти компьютера. Необходимость быстрой работы с памятью видеоускорителя диктовала размещение всего объема этой памяти в физическом адресном пространстве. Поэтому оборудование AGP резервирует для своих нужд адресное пространство, которое до недавних пор было гораздо больше, чем размер видеоОЗУ. Обычно резервируется 256 Мб, причем не имеет значения, сколько памяти установлено в видеоадаптере. Появление PCI-E принципиальных изменений не принесло — изменился физический интерфейс, а организация использования видеопамяти осталась той же. Чтобы наглядно показать, как количество доступного объема ОЗУ связано с использованием физического адресного пространства устройствами, приведем две картинки — окно свойств компьютера и окно диспетчера устройств с распределением ресурсов памяти. Использовался видеоадаптер со 128 Мб ОЗУ. ЧЕТЫРЕ ГИГАБАЙТА ПАМЯТИ - НЕДОСТИЖИМАЯ ЦЕЛЬ ЧЕТЫРЕ ГИГАБАЙТА ПАМЯТИ - НЕДОСТИЖИМАЯ ЦЕЛЬ Операционная система использует 3,25 Гб ОЗУ из четырех установленных, и эта величина в точности соответствует нижней границе адресного пространства, используемого видеоадаптером (портом PCI-E): шестнадцатеричное значение d0000000. Обратите внимание, что отведены для видеоадаптера адреса с d000000 по dfffffff, то есть 256 Мб. Драйверы устройств не устанавливались (в значках устройств стоят вопросительные знаки) сознательно, чтобы продемонстрировать, что дело не в них. Для ограничения доступного для ОЗУ адресного пространства достаточно физического присутствия устройства на шине, и не имеет значения, используется оно или нет. Впрочем, установка всех драйверов картину не меняет. В 32-разрядной Windows Vista дело обстоит точно так же — системе доступно 3,25 Гб ОЗУ. ЧЕТЫРЕ ГИГАБАЙТА ПАМЯТИ - НЕДОСТИЖИМАЯ ЦЕЛЬ И было бы странно, если бы доступно оказалось другое количество памяти — ведь оборудование-то одно и то же, и адреса оно отнимает у оперативной памяти одни и те же независимо от того, какая установлена ОС. Проверим, как влияет на доступный объем ОЗУ размер памяти видеоадаптера. Заменим плату со 128 Мб на такую же модель, но с 512 Мб. ЧЕТЫРЕ ГИГАБАЙТА ПАМЯТИ - НЕДОСТИЖИМАЯ ЦЕЛЬ Как видим, ничего не изменилось. Размер используемого адресного пространства задается не самим адаптером, а оборудованием шины AGP или PCI-E. В рассмотренных примерах самый младший из адресов устройств был использован видеоадаптером. Правда, надо отметить, что количество устройств на системной плате было невелико и относительно стандартно для новых плат. Добавление каких-либо плат в гнезда системной платы (или интегрирование дополнительных устройств в плату ее изготовителем) может привести к тому, что добавленное устройство займет адреса младше, чем у других устройств. Тогда доступный ОС объем ОЗУ еще больше уменьшится. С другой стороны, адреса устройств могут распределиться так, что новое устройство займет свободные области между уже имеющимися устройствами, и тогда уменьшения доступного системе ОЗУ не произойдет. Например, когда в компьютер автора были добавлены два ТВ-тюнера, они заняли адресное пространство выше, чем видеоадаптер, и уменьшения доступного системе ОЗУ не произошло. ЧЕТЫРЕ ГИГАБАЙТА ПАМЯТИ - НЕДОСТИЖИМАЯ ЦЕЛЬ С другой стороны, когда те же два тюнера стояли в старом компьютере автора с системной платой на базе i865, они занимали адресное пространство ниже видеоадаптера (и уменьшали бы доступный объем ОЗУ, если бы памяти на том компьютере было больше 3 Гб). Например, установка четырех видеоадаптеров может заметно ограничить размер используемого ОЗУ (показанная таблица распределения ресурсов была приведена на форуме 3Dnews участником HarfulL). ЧЕТЫРЕ ГИГАБАЙТА ПАМЯТИ - НЕДОСТИЖИМАЯ ЦЕЛЬ Как видно, видеоадаптеры заняли четыре области адресного пространства по 256 Мб каждая, начинающиеся на границах 2,5, 2,75, 3,0 и 3,25 Гб. (В данном примере был установлен только один гигабайт ОЗУ). У любопытного читателя уже наготове вопросы: а каким образом адреса распределяются между устройствами? Можно ли каким-нибудь способом «сдвинуть» все адреса в одну сплошную кучу и освободить для ОЗУ дополнительно десятки или даже сотни мегабайт адресного пространства? Адреса (а также порты ввода-вывода, а на шине ISA — еще и прерывания) определяются дешифратором устройства. Настройки этого дешифратора обычно можно менять в некоторых пределах, заданных изготовителем. До середины девяностых годов такая настройка выполнялась установкой или удалением специальных перемычек на устройстве. И задача конфигурирования компьютера с несколькими дополнительными устройствами была не слишком простым делом. Поэтому была предложена технология plug-and-play. В то время она была у всех на слуху, а сейчас стала совершенно обыденным явлением. Суть этой технологии в том, что используемые устройством адреса памяти, порты ввода-вывода и линии прерываний могут конфигурироваться программно. Это делает либо BIOS на этапе подготовки компьютера к загрузке, либо операционная система в ходе своей загрузки. Программа конфигурирования опрашивает устройства, определяет, какие ресурсы могут использоваться каждым из них, а затем распределяет эти ресурсы между устройствами. Границы конфигурирования каждого устройства задает его изготовитель. Причем для упрощения дешифраторов адресов ступени конфигурирования обычно кратны размеру ресурсов, используемых устройством. Например, если некая «железка» имеет ОЗУ размером 32 Кб, то и начальный адрес, как правило, можно установить только кратным этому размеру или даже большей величине. В результате сдвигать адреса разных устройств «вплотную» не оказывается возможным, хотя теоретически эта задача и реализуема. Вывод 1. Хотя 32-разрядные версии Windows XP и Windows Vista могут использовать четыре гигабайта ОЗУ, из-за ограничений, накладываемых архитектурой используемого оборудования, эта величина обычно оказывается в пределах 3-3,5 Гб. Вывод 2. Добавление устройств, использующих шины PCI или PCI-E, может уменьшить количество доступного системе ОЗУ. В таких случаях можно рекомендовать рассмотреть замену внутренних модулей на устройства с аналогичной функциональностью, подключаемые к интерфейсу USB. Возможно, читатель уже обратил внимание, что про серверные варианты ОС пока не было сказано ни слова. И этому есть свои причины — в серверных версиях дело обстоит несколько по-другому. Например, на том же самом компьютере с тем же самым оборудованием 32-разрядный Windows Server 2003 Standard Edition «видит» практически все четыре гигабайта, хотя устройства занимают в четвертом гигабайте те же самые адреса. ЧЕТЫРЕ ГИГАБАЙТА ПАМЯТИ - НЕДОСТИЖИМАЯ ЦЕЛЬ ЧЕТЫРЕ ГИГАБАЙТА ПАМЯТИ - НЕДОСТИЖИМАЯ ЦЕЛЬ

Комментарии (17)

RSSсвернуть /развернуть
+
0
вскоре будет статья про 64 bit ОС
avatar

FrikerOla

  • 19 марта 2008, 11:10
+
0
через 15 лет статья:
почему ОС не видит мои 16 эксабайт, а только 15? :)
avatar

Timur

  • 19 марта 2008, 11:26
+
0
ну думаю в будущем это исправят
avatar

MureevKostya

  • 19 марта 2008, 13:20
+
0
мне и двух хватает пка!
avatar

m_i_sh_k_a

  • 19 марта 2008, 14:37
+
0
Пока хватает и 2 гб
avatar

DJ_xXx

  • 19 марта 2008, 15:04
+
0
я совсем отстал от жизни..( у меня максимум поддерживает 1 гиг((
avatar

KapToxa

  • 19 марта 2008, 16:49
+
0
MAXter,
так же как и у тебя)))
avatar

anykey

  • 19 марта 2008, 17:41
+
0
такая большая статья из-за такой херни. если надо 4 гектара, то ставь x64 винду и нет проблем!
avatar

xander1563

  • 19 марта 2008, 19:42
+
0
дак давайте сразу 8 гектаров а то все 10 lolа мне для работы 512 хватает feel
avatar

AkseL

  • 19 марта 2008, 19:44
+
0
хватает гектара
avatar

DimastyRU

  • 19 марта 2008, 20:25
+
0
да не ось не видит. что вы к ней привязались. макось и линукс тоже не увидят.
в 64 битных ОС максимально поддерживаемый объем озу обычно превышает финансовые возможности владельцев ПК
avatar

DMR

  • 19 марта 2008, 21:08
+
0
avatar

LYBER

  • 19 марта 2008, 21:32
+
0
ниочём…
avatar

Virtue

  • 20 марта 2008, 00:56
+
0
у меня два по 512 даже не ДДР2))) но инфа очень полезная
avatar

Dimko

  • 22 марта 2008, 03:15
+
0
прикольнее было бы если каждая память по 4 гига, а не на 4 гига…
avatar

inet011

  • 08 апреля 2008, 13:07
+
0
блин ничё не понял
avatar

SASHOK

  • 01 февраля 2009, 22:25

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.
Валидный HTMLВалидный CSSRambler's Top100