2013-02-08 2 views
5

Я понимаю, что предварительная выборка аппаратных средств никогда не пересечет границы страниц. Мне интересно, имеет ли предварительная выборка программного обеспечения те же ограничения, то есть я могу использовать предварительную выборку программного обеспечения, чтобы избежать будущей пропуски TLB. От поиска вокруг, кажется, возможно, но я не мог найти ничего окончательного в документации, поэтому ссылка была бы хорошей.Предварительная выборка программного обеспечения на границе страницы на x86

Меня интересует Nehalem, Sandy Bridge и Westmere.

+0

Обновление: IvyBridge делает предварительную выборку HW на границах страниц. https://stackoverflow.com/a/20758769/224132. Это новая функция в IvB, и из других вещей, которые я прочитал, я думаю, что точно сказать, что SnB и ранее Intel не префкетируют на следующей странице. Спекулятивные нагрузки TLB - это вещь, хотя, по крайней мере, при срабатывании спекулятивного выполнения команды load/store. –

ответ

2

Согласно данным Intel Optimization Reference Manual, это зависит от процессора. Из раздела 7.4.3:

Бывают случаи, когда PREFETCH не выполняет предварительную выборку данных. К ним относятся:

  • PREFETCH вызывает отправку DTLB (буфера обработки данных). Это относится к Pentium 4 процессоры с CPUID подписи, соответствующей семье 15, модель 0, 1 или 2. PREFETCH решает DTLB промахов и извлекает данные на Pentium 4 процессора с CPUID подписи , соответствующей семье 15, модель 3.
  • Доступ к указанному адресу, который вызывает ошибку/исключение.

Программное обеспечение предварительной выборки может или не может избежать TLB отсутствует, в зависимости от процессора. Он не будет извлекать данные, если это приведет к сбою страницы.

Если вы хотите, чтобы вы не пропустили пропуски TLB, вы могли бы сделать фиктивное чтение для загрузки данных вместо инструкции предварительной выборки. Это может привести к потере страницы на странице, которая может быть хорошей или плохой в зависимости от вашего варианта использования.

+0

Семейства CPU, упомянутые OP, не являются процессорами класса pentium4. – didierc

+0

@didierc Я бы не знал, но я скопировал это непосредственно из руководства Intel, а [wikipedia] (http://en.wikipedia.org/wiki/List_of_Intel_Pentium_4_microprocessors) перечисляет все из них, кроме модели 0, как Pentium 4. – ughoavgfhw

+0

Good указатель. OP интересуется последними поколениями процессоров ia64 (intel i5 & i7 class, afaik). Я просто пытался помочь немного снизить ваш ответ. Мой плохой, если это звучит суровым, это было не мое намерение. – didierc

2

В современных процессорах (Nehalem, Sandy Bridge и Westmere) предварительная выборка программного обеспечения действительно вызывает поиск TLB.

Из руководства по оптимизации Intel: (раздел 7.3.3)

В старых микроархитектурами, PREFETCH вызывая Перевод данных Lookaside Buffer (DTLB) промах будет отброшен. В процессорах, основанных на Nehalem, Westmere, Sandy Bridge и более новых микроархитектурах, Intel Процессоры Core 2 и процессоры Intel Atom, PREFETCH, вызывающие ошибку DTLB , могут быть получены по границе страницы.

Смежные вопросы