Every people has right on left Каждый человек имеет право на лево CopyLeft (L) Юрий А. Денисов Назад... К оглавлению раздела Далее...
2. Сегментная трансляция. Сегментная трансляция обеспечивает обращение к сегментам памяти емкостью 256 Мбайт, которые разбиваются на страницы объемом по 4 Кбайт, размещенные в ОЗУ или внешних устройствах (свопинг). Для обращения к сегментам используются 16 сегментных регистров SR0-SR15. Они содержат дескрипторы сегментов (см. рисунок E.15.) Если в регистре MSR установлены биты IT=1 или DT=1, а также не реализуется блочная трансляция (старшие немаскируемые биты логического адреса не совпадают с битами BLPI в дескрипторах блоков, то производится сегментная трансляция. В этом случае разряды LA0-3 задают номер регистраSRi, из которого выбирается дескриптор соответствующего сегмента. В зависимости от значения бита T в сегменте реализуется:
При страничной адресации биты дескриптора сегмента (см. рисунок E.15.) имеют следующее назначение:
Процесс страничной адресации иллюстрирован на рисунке E.17. Рис. E.17. Трансляция адреса при страничной организации памяти. Устройство управления памятью IMMU или DMMU при страничной организации памяти формируют 52-х разрядный виртуальный адрес VA0-51. Этот адрес состоит из:
Старшие разряды этого адреса VA0-39 представляют собой виртуальный номер страницы VPN. Этот виртуальный номер поступает в блок страничной трансляции (БСТ), определяющий физический номер страницы RPN. Блок RPN определяет разряды PA0-19 физического адреса. Младшие разряды физического адреса совпадают с адресом блока на странице PA20-31 = LA20-31. Для определения RPN используются дескрипторы страниц PD, которые хранятся в специальной таблице TPD, хранящейся в ОЗУ. Базовый адрес этой таблицы задается содержимым регистра SDR1 (см. рисунок E.14., e) ):
Дескрипторы в таблице TPD объединены в группы по восемь 64-х битовых дескрипторов PD. Каждый дескриптор содержит:
Бит R=1 устанавливается, если к данной странице производилось обращение, бит C=1 устанавливается, если выполнялась запись на эту страницу. Эти биты используются системой для организации виртуальной памяти, При этом требуется оперативный обмен содержимым страниц между ОЗУ и внешней памяти большого объема (например, дисковых накопителей). Дескрипторы страниц, к которым было обращение, хранятся в специальной кэш-памяти TLB, входящей в состав IMMU и DMMU. Каждый TLB содержит 128 дескрипторов PD, которые размещены в наборы по 64 элемента, в каждом из которых находятся две строки. Кэш TLB работает аналогично кэшу IC, DC. В каждой строке содержится по одному дескриптору. При занесении дескриптора в кэш TLB устанавливается бит достоверности V=1. Для пустых (незаполненных) строк же значение бита достоверности равно нулю V=0). Аннулирование элемента строки производится с помощью команды tlbie. В качестве тэга строки используются старшие разряды виртуального адреса VPN, содержащейся в дескрипторе. При совпадении тэга одной из строк выбранного в TLB набора и соответствующих разрядов виртуального адреса VPN (кэш-попадание) из размещенного в строке дескриптора извлекается значение RPN, используемое в качестве разрядов PA0-19. Таким образом, при кэш-попадании в TLB не требуется обращение к ОЗУ. В случае кэш-промаха (несовпадения VPN ни с одним дескриптором таблицы TLB) блок страничной трансляции производит обращение к TPD. При этом из ОЗУ выбирается целая группа PD, а затем этот блок сравнивает значение полей (VSID:API) в каждом из восьми выбранных дескрипторов с соответствующими разрядами VPN. В случае совпадения значение RPN, хранящемся в данном дескрипторе, оно служит разрядами формируемого физического адреса, а сам дескриптор заносится в TLB. Он при этом:
Если в выбранной группе PD нужных дескрипторов не находится, то из TPD выбирается еще одна группа дескрипторов. Если и в ней не окажется требуемого дескриптора, то реализуется исключение с вектором Av=$00300 при выборе данных или Av=$00400 при выборке команды. При этом подпрограмма обслуживания этих прерываний должна обеспечить загрузку в ОЗУ необходимой страницы из внешней памяти, поместив в TPD соответствующий дескриптор. При выполнении страничной трансляции учитываются значения битов N, W, I, M, G дескрипторов. При нарушении правил обращения к сегментам и страницам используются исключения "ошибка выбора данных" (Av=$00300) или "ошибка выбора команды" (Av=$00400).
|
|
=== *** === *** === *** ===
Copyright (C) Юрий А. Денисов. 2000-2002 г.
В настоящее время проект закрыт (в версии 1.3.0 beta). Автор приносит извинения за прекрашение разработки.