Отображение адресов памяти физическим модулям в Windows XP - PullRequest
0 голосов
/ 21 апреля 2010

Я планирую запустить 32-разрядную Windows XP на рабочей станции с двумя процессорами на основе микроархитектуры Intel Nehalem и трехканальной оперативной памятью. Несмотря на то, что XP ограничена 4 ГБ ОЗУ, я понимаю, что она будет работать с установленным более 4 ГБ, но будет отображать только 4 ГБ (или чуть меньше).

У меня вопрос: если в шести модулях по 1 ГБ установлено 6 ГБ ОЗУ, то какие физические 4 ГБ Windows будет отображать в своем адресном пространстве?

В частности:

  • Будет ли он использовать все шесть модулей по 1 ГБ, используя все каналы памяти? (Я предполагаю, что да, и что сопоставление с отдельными модулями в группе происходит аппаратно.)

  • Будет ли он отображать 2 ГБ адресного пространства на каждый из двух узлов NUMA (поскольку каждый процессор имеет собственный интерфейс памяти), или один процессор получит быстрый доступ к 3 ГБ ОЗУ, а другой - только 1 ГБ?

Спасибо!

1 Ответ

0 голосов
/ 16 апреля 2011

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

С тех пор, как был задан вопрос, я также натолкнулся на это сообщение в блоге Марка Руссиновича, объясняющее, как ядро ​​Windows XP обрабатывает память.

В заключение, получается, что ядро, даже если оно поддерживает PAE, усекает все адреса физической памяти до 32-битного, то есть только самые низкие физические 4 ГБ ОЗУ будут используемый. Это, в свою очередь, отображается аппаратно на модули памяти и соответствует полному первому триплету модуля (всего 3 ГБ) и трети второго триплета (разброс по всем трем его модулям - всего 1 ГБ) .

Таким образом, все каналы памяти будут использоваться, но объем памяти не будет сбалансирован между узлами NUMA.

...