Как информация о размере адреса в / proc / cpuinfo связана с размером страницы памяти? - PullRequest
3 голосов
/ 30 октября 2011

cat / proc / cpuinfo на флаговом процессоре -lm дает

address sizes   : 36 bits physical, 48 bits virtual

размер страницы определяется с помощью

#include <unistd.h>
int getpagesize(void);

Дает 4096 байт.

Используя последнюю информацию, я бы подумал, что система использует младшие 12 бит адреса в качестве смещения, а остальные - для преобразования адреса виртуального в физический через TLB и таблицу страниц.

Как информация из cpuinfo связана с размером страницы?

Ответы [ 3 ]

2 голосов
/ 30 октября 2011

Как информация из cpuinfo связана с размером страницы?

Это не связано.Размер физического адреса дает в основном количество адресных строк, которые имеет процессор (36).Размер виртуального адреса дает вам размер виртуального адресного пространства, то есть, сколько памяти может адресовать одна программа (это 48 бит, что означает, что она может адресовать больше, чем объем физической памяти; это может быть, например, умножено ввиртуальное адресное пространство).Размер страницы составляет 2 ^ 12, что означает, как вы заметили, остальные биты виртуального адреса (36, а не 36 в физическом адресном пространстве) обрабатываются механизмом TLB и механизмом поискового вызова.

2 голосов
/ 30 октября 2011

Как информация из cpuinfo связана с размером страницы?

Это не так. Размер страницы на x86_64 может составлять 4 КБ, 2 МБ (или даже 1 ГБ) независимо от (физического или виртуального) «размера адреса».

Запись в Википедии для x86_64 содержит некоторую информацию о том, как работает виртуальное адресное пространство.

Отображение выполняется не так, как вы его описываете, а с помощью четырехуровневой таблицы страниц. Эта статья на LWN.net: Четырехуровневые таблицы страниц содержит краткое описание того, как это работает и зачем это нужно. (В статье больше говорится о трехуровневой карте, но четвертый уровень является лишь продолжением этой схемы).

1 голос
/ 30 октября 2011

cpuinfo отображает тип процессора и функции. Размер страницы системной памяти, используемой в настоящее время в вашей системе, там не отображается.

Современные процессоры поддерживают разные размеры страниц, и ОС устанавливает эти параметры при загрузке.

Итак, чтобы ответить на ваш вопрос: информация в cpuinfo не имеет прямого отношения к текущему размеру страницы. Используя тип процессора, вы можете узнать, какие размеры страниц поддерживаются. Например, расширение ia32 PAE позволяет использовать страницы размером 2 МБ (а также страницы размером 4 КБ).

...