Отображение адресов памяти физическим модулям в Windows XP
Я планирую запустить 32-разрядную Windows XP на рабочей станции с двумя процессорами на основе микроархитектуры Intel Nehalem и трехканальной оперативной памяти. Несмотря на то, что XP ограничена 4 ГБ ОЗУ, я понимаю, что она будет работать с установленным более 4 ГБ, но будет отображать только 4 ГБ (или чуть меньше).
Мой вопрос: если предположить, что в шести модулях по 1 ГБ установлено 6 ГБ ОЗУ, то какие физические 4 ГБ Windows будет отображать в своем адресном пространстве?
Особенно:
Будет ли он использовать все шесть модулей по 1 ГБ, используя все каналы памяти? (Я предполагаю, что да, и что сопоставление с отдельными модулями в группе происходит аппаратно.)
Будет ли он отображать 2 ГБ адресного пространства на каждый из двух узлов NUMA (поскольку каждый процессор имеет собственный интерфейс памяти), или один процессор получит быстрый доступ к 3 ГБ ОЗУ, а другой - только 1 ГБ?
Спасибо!
1 ответ
На этот вопрос ответили в SuperUser. Поскольку здесь нет других ответов, я отвечаю на свой вопрос, чтобы можно было легко найти соответствующую информацию.
После того, как вопрос был задан, я также натолкнулся на это сообщение в блоге Марка Руссиновича, объясняющее, как ядро Windows XP управляет памятью.
В заключение получается, что в результате ядро, хотя и поддерживает PAE, усекает все адреса физической памяти до 32-битной, что означает, что будет использовано только самое низкое физическое 4 ГБ ОЗУ. Это, в свою очередь, отображается аппаратно на модули памяти и соответствует полному первому триплету модуля (всего 3 ГБ) и трети второго триплета (разброс по всем трем его модулям - всего 1 ГБ),
Таким образом, будут использоваться все каналы памяти, но объем памяти не будет сбалансирован между узлами NUMA.