Кэш данных L1 не секционируется ни в одном из режимов и всегда используется на конкурентной основе.
Обратите внимание, что в руководстве есть явная ошибка, режим определяется не битом context-ID, а IA32_MISC_ENABLE[24]
. Это усовершенствование поддерживается более поздними степпингами Northwood с HT и всеми процессорами Prescott с HT. Значение по умолчанию равно нулю, что соответствует адаптивному режиму. Однако в некоторых процессорах обновленный BIOS может переключаться в общий режим установкой IA32_MISC_ENABLE[24]
из-за ошибки в этих процессорах, возникающей только в адаптивном режиме.
В более ранних версиях Northwood с HT поддерживается только общий режим. В совместно используемом режиме, когда выдается запрос на загрузку кэша данных L1, запрос сначала обрабатывается на быстром пути, который включает прогнозирование пути на основе битов 11-15 линейного адреса и создание спекулятивного сигнала попадания/промаха. как результат. В процессорах с HT также сравнивается идентификатор логического ядра. И частичный тег, и идентификатор логического ядра должны совпадать, чтобы получить спекулятивное попадание. В общем, это помогает улучшить правильную спекулятивную частоту попаданий.
Если два родственных логических ядра работают в одном и том же режиме пейджинга и имеют одинаковые значения CR3, указывающие на то, что доступ из обоих ядер использует одни и те же таблицы страниц (если пейджинг включен), было бы лучше произвести спекулятивное попадание, даже если логический ID ядра не совпадает на быстром пути кэша.
В адаптивном режиме значение идентификатора контекста вычисляется всякий раз, когда изменяется режим пейджинга или регистр CR3 одного из ядер. Если режимы пейджинга и значения CR3 совпадают, бит идентификатора контекста устанавливается в одно из двух возможных значений. В противном случае устанавливается другое значение. Когда в кэш отправляется запрос на загрузку, проверяется идентификатор контекста. Если указывает, что ядра имеют одинаковые структуры преобразования адресов, результат сравнения логического идентификатора ядра игнорируется, и создается спекулятивное совпадение, если частичный виртуальный тег совпал. В противном случае сравнение ID логического ядра выполняется так же, как и в совместно используемом режиме.
person
Hadi Brais
schedule
01.12.2020