Every people has right on left Каждый человек имеет право на лево CopyLeft (L) Юрий А. Денисов E.3. Особенности страничной организации памяти в микропроцессоре Motorola MC68030.В микропроцессор MC68030, в отличие от микропроцессора Motorola MC68020, добавлено устройство управления памятью (Memory Management Unit, MMU). Для поддержки MMU дополнительно введены регистры CRP, SRP, TCR, TTR0, TTR1 и MMUSR, доступ к которым открыт только в режиме супервизора. Данное устройство предназначено для преобразования логического адреса микропроцессора в физический адрес байта, слова или двойного слова, размещенной на определенной странице в ОЗУ. При включении MMU сформированные адреса воспринимаются как логический адрес, отдельные поля которого служат для получения физического адреса с помощью размещенных в памяти таблиц трансляций (рисунок E.6.) Рис. E.6. Поле PS логического адреса определяет относительный адрес (смещение) требуемого байта или слова в таблице. Обращение к этой таблице осуществляется с использованием нескольких промежуточных уровней трансляций: A, B, C, D, определяемые полями логического адреса DA, DB, DC, DD и FC. Кроме того, логический адрес может содержать не транслируемые биты IS, игнорируемые MMU. На рисунке E.7. показан пример трансляции адреса с использованием трех уровней: FC, A и B . Рис. E.7. Микропроцессор допускает использование страниц размером 256, 512, 1К, 2К,4К, 8К, 16К и 32К, поэтому поле PS содержит от восьми до 15 разрядов. Максимальное число разрядов каждого из полей может достигать 15 - при этом общее число разрядов всех полей логического адреса должно быть равным 32. При нарушении этого условия подается прерывание (особая ситуация) на микропроцессор. Рис. E.08. Управление разбиением логического адреса на страницы задается 32-х разрядным регистром управления трансляциями TCR. Его значения: E=1 разрешение трансляции адреса MMU. SRE = 0 CRP используется и в режиме пользователя, и в режиме супервизора. SRE = 1 CRP используется в режиме пользователя, а SRP - в режиме супервизора. FLC = 1 разрешение использования верхнего уровня FLC. FLC = 0 верхним уровнем трансляции назначается уровень A. IS, TIA, TIB, TIC, TID 4-х битовые поля, задающие число разрядов в полях IS, DA, DB, DC и DD соответственно. PS поле разряда страниц: 1000 256 1001 512 1010 1К 1011 2К 1100 4К 1101 8К 1110 16К 1111 32К. Микропроцессоры MC68040 и MC68060Эти микропроцессоры имеют отдельные КЭШи и устройства управления страничной памятью (IMMU, DMMU) для команд и данных. Каждое MMU имеет свой адресный кэш ATC для ускорения табличной трансляции. Таким образом, в микропроцессорах реализовано характерное для гарвардской архитектуры разделение потоков команд и данных. Устройства управления памятью IMMU, DMMU осуществляют страничное разбиение памяти при выборке соответственно команд или данных. Каждое из устройств имеет свой кэш адресной трансляции IATC, DATC и по два регистра "прозрачной" трансляции адреса ITTR0, ITTR1, DTTR0, DTTR1. Принцип страничной трансляции для микропроцессоров MC68040, MC68060 имеет свои отличия от микропроцессора MC68030. Микропроцессоры MC68040, MC68060 формируют страницы только размером 4 Кбайт или 8 Кбайт. Разрешение страничной трансляции производится путем записи соответствующего значения в регистр TCR. Значение бита E=1 означает разрешение страничной трансляции, а бит P определяет размер страниц: при P=0 размер страницы равен 4 Кбайт, при P=1 -- * Кбайт. Для микропроцессора MC68060 биты NAD, NAI, FOTC, FITC в регистре TCR задают следующие режимы работы КЭШа адресной трансляции: NAD -- разрешает при NAD=1 запись нового адреса в кэш DATC в случае кэш-промаха; при NAD=0 содержимое КЭШа DATC не изменяется. NAI -- разрешает при NAI=1 запись нового адреса в кэш IATC в случае промаха; при NAI=0 содержимое IATC не изменяется. FOTS -- обеспечивает при FOTC использование КЭШа DATC половинной емкости (32 адреса; при FOTC=0 кэш содержит 64 адреса. FITC -- то же самое для КЭШа IATC. Остальные биты определяют режим работы КЭШей команд (DCO, DUO) и данных (DWO, DCI, DUI) при отключенных IMMU, DMMU (E=0). Значения битов DCO, DCI задают режим работы соответствующего КЭШа использование КЭШа со сквозной (при 00) или обратной (при 01) записью, отключение КЭШа с упорядоченным (при 10) или неупорядоченным (при 11) обращением к ОЗУ. Бит DWO запрещает при DWO=1 запись в кэш данных. Биты DUO, DUI определяют значения сигналов на выходах UPA1-0 микропроцессора при выборке данных или команд, если при этом отключено DMMU или IMMMU (в регистре TCR бит E=0). В регистрах микропроцессора MC68040 используются только биты P и E. Рис. E.9. Регистр CACR. Рис. E.10. Регистр TCR. Рис. E.11. Регистры ITTR1, ITTR0, DTTR1, DTTR0. Рис. E.12. Регистр MMUSR. Рис. E.13. Формат логического адреса для табличной трансляции. Рис. E.14. Использование логического адреса для определения физического адреса с помощью ATC. При включении MMU сформированный микропроцессором 32-х разрядный адрес команд или данных воспринимается как логический адрес, с помощью которого IMMU или DMMU образует физический адрес, поступающие на выход адресной шины. Логический адрес (рис. E.13) содержит поля RI, PI, PGI, которые служат для определения базового адреса страницы, и относительный адрес выбираемого байта, слова или двойного слова на этой странице. При этом используется три уровня трансляции, которые осуществляются с помощью дескрипторов, размещенных в памяти. Первый уровень трансляции обеспечивается двумя таблицами, каждая из которых содержит до 128 дескрипторов. Базовый адрес таблицы задается содержимым регистра URP в режиме пользователя и SRP в режиме супервизора. Выбор дескриптора в таблице задается содержимым поля RI (семь разрядов) логического адреса. В таблицах первого уровня хранятся 32-х разрядные дескрипторы, которые содержат разряды A31-9 базового адреса таблицы дескрипторов второго уровня трансляции. Выбор заданного дескриптора из этих таблиц производится в соответствии со значением поля PI (семь разрядов) логического адреса. В каждой из таблиц может быть до 128 дескрипторов второго уровня, которые содержат старшие разряды номеров страниц третьего уровня трансляции. В таблицах этого уровня хранятся дескриптора, определяющие базовые адреса страниц. Выбор дескриптора страницы (третий уровень) происходит с помощью поля PGI логического адреса. При использовании страниц размером 4 Кбайт поле PGI занимает шесть разрядов логического адреса, которые выбирают в таблице один из 64-х дескрипторов, содержащих старшие 20 разрядов (A31-12) базового адреса страницы. При использовании страниц размером 8 Кбайт поле PGI занимает пять разрядов, выбирая один из 32-х дескрипторов, содержащих старшие (A31-13) разряды базового адреса страницы. Физический адрес выбираемого байта, слова или длинного слова образуется путем добавления к базовому адресу страницы адреса младших разрядов A11-0 или A12-0 логического адреса. Хранящиеся в таблицах 32-х разрядные дескрипторы (помимо старших разрядов базовых адресов таблиц следующего уровня, содержат биты защиты и текущего состояния. Бит W дескриптора запрещает при W=1 запись в данную страницу и на страницу. Значение U=1 устанавливается, если выполнялось обращение к содержимому страницы или таблицы. Определенные значения полей UDT, PDT дескрипторов указывают, что они не загружены в память или их содержимое не достоверно. Такие таблицы и страницы называются нерезидентными, и к ним не должно осуществляться обращение. Дескрипторы таблиц содержат также биты защиты S, модификации M, глобальности G, двухбитовые поля CM и U1-0. При S=1 обращение к странице допускается только в режиме супервизора. Значение бита M=1 устанавливается, если производилась запись на данную страницу. Если для страниц установлено G=1, то при выполнении команд PFLUSHAN, PFLASHN строки КЭШа адресной трансляции, содержащие адреса размещенных на странице команд и данных, не будут аннулированы. Поле CM задает режимы работы КЭШа при обращении к данной странице: сквозная (CM=00) или обратная (CM=01) запись, отключение КЭШа с упорядоченным (CM=10) или неупорядоченным (CM=11) обращением к ОЗУ (аналогично битам DCO, DWO в регистре TCR). Поле U1-0 определяют значения сигналов, которые устанавливаются на выходах UPA1-0 микропроцессора при обращении к странице (аналогично битам DUO, DUI в регистре TCR). При нарушении правил обращения, устанавливаемых битами W, S, UDT, PDT дескрипторов, происходит исключение с номером Ne=2 (ошибка обращения). Для ускорения страничной трансляции IMMU и DMMU имеют кэш-память, хранящую адреса 64 страниц, к которым выполнялись последние обращения. КЭШи трансляции для команд (IATC) и данных (DATC) имеют одинаковую организацию. Она содержит 16 наборов по 4 строки. Каждая строка содержит тэг и старшие разряды физического адреса соответствующей страницы, ее атрибуты, а также бит достоверности V (V=1 при заполнении строки), и бит режима обращения FC2 (FC2=1, если обращение выполнялось в режиме супервизора, и FC2=0 -- в режиме пользователя). В качестве атрибутов страницы указываются биты S, M, W, G, и поля CM, U1-0, задаваемые дескриптором выбираемой страницы. При размере страниц 4 Кбайт в качестве тэга используются старшие 16 разрядов логического адреса, при размере 8 Кбайт -- старшие 15 разрядов. Соответственно, физический адрес страниц размером 4 Кбайт задается 20 старшими разрядами, размером 8 Кбайт -- 19 разрядами. При обращении к памяти старшие 16 или 15 разрядов логического адреса сравниваются с тэгами из набора строк, номера которого задается следующими четырьмя разрядами логического адреса. Если происходит совпадение тэгов (кэш-попадание), то из этой строки выбирается, то из этой строки выбираются физический адрес страницы и ее атрибуты, определяющие привила обращения к ее содержимому. В случае несовпадения тэгов (кэш-промах), то физический адрес и атрибуты страницы определяются путем страничной трансляции, и она заносится вместе со своим тэгом в одну из свободных строк набора (V=0). В случае, если все строки набора заполнены, заполняемая строка определяется псевдослучайным методом. Вероятность кэш-попадания -- 98%. Регистры "прозрачной" трансляции команд ITTR0, ITTR1 и данных DTTR0, DTTR1 позволяют обращаться к определенным блокам памяти без страничной трансляции. Формат содержимого этих регистров приведен на рисунке E.11. Два старших байта в этих регистрах определяют адреса не транслируемых блоков. "Прозрачная" трансляция выполняется, если для соответствующего блока в регистре ITTR0, ITTR1, DTTR0, DTTR1 установлен бит разрешения E=1. Бит защиты W, поля CM, U1-0 имеют то же значение, что и в дескрипторах таблиц и страниц. Поле SF определяет режим работы, при которых допускается прозрачная трансляция: только в режиме пользователя SF=00, только в режиме супервизора при SF=01, в любом режиме SF=10, 11. Используя данные регистры, можно реализовать прозрачную трансляцию двух блоков команд и двух блоков данных объемом по 16 Мбайт и более. Микропроцессор MC68040 содержит регистр состояния MMUSR, в котором хранятся результаты трансляции логического адреса при выполнении команд PTESR, PTESTW. Данный регистр содержит старшие 19 или 20 разрядов физического адреса выбираемой страницы и ее атрибуты G, S, M, W, CM, U1-0. Если заданный адрес находится в одном из регистров прозрачной трансляции, то в MMUSR устанавливается значение бита T=R=1, а остальные биты принимают значение 0. Значение R=1 устанавливается также в случае нормального выполнения трансляции. Если получить физический адрес не удается из-за обращения при трансляции к нерезидентным таблицам или странице, то бит R сбрасывается R=0. В случае обнаружения ошибки обращения к шине при выборке дескрипторов устанавливается бит ошибки B=1.
|
|
=== *** === *** === *** ===
Copyright (C) Юрий А. Денисов. 2000-2002 г.
В настоящее время проект закрыт (в версии 1.3.0 beta). Автор приносит извинения за прекрашение разработки.