Программирование на JAVA

На рис. 9.6.2 показано, как в этом режиме генерируется физический адрес памяти на основе содержимого базового и индексного регистров, а также содержащегося в команде значения смещения. Для получения 32-разрядного исполнительного ад­реса значение индексного регистра умножается на коэффициент масштабирова­ния, равный 1, 2, 4 или 8, затем результат прибавляется к содержимому базового регистра с учетом заданного в команде смещения. Четырнадцать старших битов одного из шести сегментных регистров  определяют де­скриптор, используемый в качестве индекса в таблице дескрипторов сегментов, из которой извлекается 32-разрядный базовый адрес. Этот адрес прибавляется к исполнительному адресу внутри сегмента, вследствие чего получается 32-разряд­ный линейный адрес. Страничный блок, используя таблицу страниц, транслирует линейный адрес в 32-разрядный физический адрес.


Рис. 9.6.2. Формирование адреса в архитектуре IA-32

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


<< назад вперед >>