Руководство пользователя Allwinner H616


  Описание      Система      Графика    Память    Ethernet    Видео    Аудио    Интерфейсы    Безопасность  

3. Система (System)

3.1. Отображение памяти

3.10. Контроллер термодатчика

3.11. Подключение периферийной системы PSI

  3.12. Модуль управления памятью ввода-вывода IOMMU  

3.13. Часы реального времени RTC

3.2. Конфигурация CPUX

3.3. Контроллер синхрогенератора

3.4. Загрузочное ПЗУ (BROM)

3.5. Конфигурация системы

3.6. Таймер

3.7. Таймер высокой скорости

3.8. Универсальный контроллер прерываний

3.9. Прямой доступ к памяти



Глава 3. Система - System
Раздел 3.12. Модуль управления памятью ввода-вывода IOMMU - Input/Output Memory management unit (IOMMU)

3.12. IOMMU


3.12.1. Обзор

IOMMU (модуль управления памятью ввода-вывода) разработан для конкретных требований к памяти продукта. Он сопоставляет виртуальный адрес (отправленный памятью периферийного доступа) с физическим адресом. IOMMU позволяет несколькими способами управлять расположением физического адреса, и он может использовать физический адрес, который имеет потенциально конфликтное сопоставление для различных процессов для выделения пространства памяти, а также позволяет применять прерывистое сопоставление адресов в непрерывное виртуальное адресное пространство.

Особенности:

Поддерживает отображение виртуального адреса на физический адрес посредством аппаратной реализации Поддерживает параллельное отображение адресов DE, DI, VE_R, VE, G2D Независимая поддержка функции обхода DE, DI, VE_R, VE, G2D Независимая поддержка предварительной выборки DE, DI, VE_R, VE, G2D Независимая поддержка механизма обработки прерываний DE, DI, VE_R, VE, G2D Поддерживает 2 уровня TLB (TLB уровня 1 для специального использования и TLB уровня 2 для совместного использования) Поддержка TLB полностью очищена и частично отключена Поддерживает запуск PTW при пропуске TLB Поддерживает проверку разрешения


3.12.2. Блок-схема

Внутренний модуль IOMMU в основном состоит из следующих частей.
  • Micro TLB: TLB уровня 1, 64 слова. Каждое периферийное устройство соответствует TLB, который кэширует таблицу страниц уровня 2 для периферийного устройства.
  • Макрос TLB: TLB уровня 2, слова 4K. Каждое периферийное устройство использует TLB уровня 2 для кэширования таблицы страниц уровня 2.
  • Логика предварительной выборки: каждый Micro TLB соответствует логике предварительной выборки. Путем мониторинга каждого ведущего устройства для прогнозирования доступа к шине таблица вторичных страниц, соответствующая адресу, к которому должен быть осуществлен доступ, может быть прочитана из памяти и сохранена во вторичном TLB для улучшения коэффициента совпадений.
  • Логика PTW: обход таблицы страниц, в основном содержит кэш PTW и PTW. Кэш PTW используется для хранения таблицы страниц уровня 1; когда виртуальный адрес VA отсутствует в TLB уровня 1 и уровня 2, запускается PTW. PTW Cache может хранить 512 таблиц страниц уровня 1, то есть 512 слов.
  • PMU: блок мониторинга производительности, который используется для подсчета эффективности попаданий и задержки.
  • Интерфейс APB: модуль создания экземпляра регистра IOMMU. CPU читает и записывает регистр IOMMU по шине APB.

    На рис. 3-28 показана внутренняя блок-схема IOMMU.

    Рисунок 3-28 Внутренняя блок-схема IOMMU.

    Таблица 3-8. Соотношение между ведущим устройством (master) и модулем

    Номер | Модуль

  • Master0 DE
  • Мастер1 DI
  • Мастер2 VE_R
  • Master3 VE
  • Master4 Зарезервировано
  • Master5 Зарезервировано
  • Master6 G2D


    3.12.3. Операции и функциональные описания


    3.12.3.1

    Источники синхронизации

    IOMMU содержит в модуле два тактовых домена. Отображение адресов создается тактовой областью MBUS, а обработка регистров и прерываний генерируется тактовой областью APB. Эти два домена являются асинхронными, и они из разных источников синхронизации.


    3.12.3.2

    Режимы работы

    1. Инициализация

  • Отпустите сигнал сброса IOMMU, записав 1 в бит [31] регистра сброса IOMMU;
  • Запишите базовый адрес первого TLB в базовый регистр таблицы трансляции IOMMU;
  • Настройте регистр разрешения прерывания IOMMU;
  • Включите IOMMU, настроив регистр включения IOMMU в финале.

    2. Изменение адреса

    В процессе отображения адреса периферийный виртуальный адрес VA [31:12] извлекается в TLB уровня 1, когда TLB попадает, отображение завершается, или они извлекаются в TLB уровня 2 таким же образом.

  • Если TLB попадает, он запишет отображение попаданий в TLB уровня 1 и попадания в TLB уровня 1.
  • Если получение TLB уровней 1 и 2 завершается неудачно, запускается PTW.

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

    Типичное приложение выглядит следующим образом.

  • Хит Micro TLB
    - a) Главное устройство отправляет команду передачи, а также отправляет адрес в соответствующий Micro TLB и выполняет поиск виртуального адреса, соответствующего таблице страниц уровня 2;
    - b) При попадании в Micro TLB он вернет соответствующие физические адреса и таблицу разрешений на странице Level2; в). Модуль преобразования адресов преобразует виртуальный адрес в физический и одновременно проверяет разрешения. Если прошел, перевод завершен.
  • Промах Micro TLB, попадание Macro TLB
    - a) Главное устройство отправляет команду передачи, а также отправляет адрес в соответствующий Micro TLB и выполняет поиск виртуального адреса, соответствующего таблице страниц уровня 2; б). Если Micro TLB не работает, продолжайте поиск Macro TLB;
    - b) Если Macro TLB сработает, он вернет таблицу страниц Level2 в Micro TLB;
    - c) Micro TLB получает таблицу страниц и помещает ее в Micro TLB (если этот Micro TLB заполнен, есть действия по замене), в то же время отправляет записи таблицы страниц в модуль трансляции адресов;
    - d) Модуль преобразования адресов преобразует виртуальный адрес в физический и одновременно проверяет разрешения. Если пройден, перевод завершен.
  • Промах Micro TLB, промах Macro TLB, попадание в кеш PTW
    - a) Главное устройство отправляет команду передачи, а также отправляет адрес в соответствующий Micro TLB и выполняет поиск виртуального адреса, соответствующего таблице страниц уровня 2;
    - b) Если Micro TLB не работает, продолжайте поиск Macro TLB;
    - c) Если Macro TLB пропущен, он отправит запрос в PTW, чтобы вернуть соответствующую таблицу страниц;
    - d) PTW сначала обращается к кэшу PTW, подтверждает, что требуемая таблица страниц уровня 1 существует в кэше PTW, отправляет таблицу страниц в логику PTW;
    - e) Логика PTW возвращает соответствующую таблицу страниц уровня 2 из таблицы страниц памяти в соответствии с таблицей страниц уровня 1, проверяет эффективность и отправляет в Macro TLB;
    - f) Макрос TLB хранит таблицу страниц уровня 2 (могут произойти действия по замене) и возвращает таблицу страниц уровня 2 в Micro TLB;
    - g) Micro TLB получает записи таблицы страниц, помещает в Micro TLB (если этот Micro TLB заполнен, произойдут действия по замене) и отправляет записи таблицы страниц в модуль трансляции адресов;
    - h) Модуль преобразования адресов преобразует виртуальный адрес в физический и одновременно проверяет разрешения. Если пройден, перевод завершен.
  • Отсутствует Micro TLB, Отсутствует Macro TLB, Отсутствует кеш PTW
    - a) Главное устройство отправляет команду передачи, а также отправляет адрес в соответствующий Micro TLB и выполняет поиск виртуального адреса, соответствующего таблице страниц уровня 2; б). Если Micro TLB не работает, продолжайте поиск Macro TLB;
    - b) Если Macro TLB пропущен, PTW отправит запрос на возврат соответствующей таблицы страниц; г). PTW обращается к кэшу PTW, отсутствует необходимая таблица страниц уровня 1;
    - c) PTW обращается к памяти, получает соответствующую таблицу страниц уровня 1 и сохраняет в кэше PTW; (может произойти замена деятельности)
    - d) Логика PTW возвращает соответствующую таблицу страниц уровня 2 из таблицы страниц памяти в соответствии с таблицей страниц уровня 1, проверяет эффективность и отправляет в Macro TLB;
    - e) Макрос-TLB хранит таблицу страниц уровня 2 (могут произойти действия по замене) и возвращает таблицу страниц уровня 2 в Micro TLB;
    - f) Micro TLB получает записи таблицы страниц, помещает в Micro TLB (если этот Micro TLB заполнен, произойдут действия по замене) и отправляет записи таблицы страниц в модуль трансляции адресов;
    - g) Модуль преобразования адресов преобразует виртуальный адрес в физический и одновременно проверяет разрешения. Если пройден, перевод завершен.
  • Ошибка разрешения
    - a) Проверка разрешений всегда выполняется при преобразовании адресов;
    - b) Как только при проверке разрешений возникает ошибка, новый доступ мастера приостанавливается, прежде чем это посещение продолжится;
    - c) Установите регистр статуса ошибки;
    - d) Триггер прерывания.
  • Неверная таблица страниц уровня 1
    - a) Недопустимая таблица страниц уровня 1 проверяется, когда логика PTW считывает таблицу страниц нового уровня из памяти;
    - b) PTW последовательно считывает из памяти две записи таблицы страниц (64-битные данные, полную строку кэша) и сохраняет в кэше PTW;
    - c) Если текущая таблица страниц обнаружена как недопустимая, тогда устанавливается флаг ошибки и запускается прерывание, строка кэша должна быть признана недействительной.

    Примечание

    Недопустимая таблица страниц имеет две ситуации: чтение целевой таблицы страниц из памяти недопустимо; и таблица страниц, хранящаяся в кэше PTW с таблицей целевой страницы, оказывается недействительной после использования;

    Если таблица страниц недействительна, то общая строка кэша (то есть две таблицы страниц) должна быть признана недействительной.

  • Неверная таблица страниц уровня 2
    - а) Недопустимая таблица страниц уровня 2 проверяет, когда TLB макроса считывает таблицу страниц нового уровня из памяти;
    - б) TLB макроса последовательно считывает из памяти две записи таблицы страниц (64-битные данные, полную строку кэша) и сохраняет в TLB макроса;
    - в) Если текущая таблица страниц обнаружена как недопустимая, тогда устанавливается флаг ошибки и запускается прерывание, строка кэша должна быть признана недействительной.

    Примечание

    Недопустимая таблица страниц имеет две ситуации: чтение целевой таблицы страниц из памяти недопустимо; и таблица страниц, хранящаяся в Macro TLB с таблицей целевой страницы, оказывается недействительной после использования.

    Если таблица страниц недействительна, то общая строка кэша (то есть две таблицы страниц) должна быть признана недействительной.

    Процесс переключения внутреннего адреса показан на Рисунке 3-29.

    Рисунок 3-29. Процесс внутреннего переключения

    3. Отображение VA-PA

    Таблица страниц IOMMU определяется как отображение уровня 2, первый уровень - это отображение адресного пространства 1M, второй уровень - адресное пространство 4K. Эта версия не поддерживает 1 КБ, 16 КБ и другие размеры таблиц страниц. IOMMU поддерживает только таблицу страниц, ее значение:

  • Все периферийные устройства, подключенные к IOMMU, используют одно и то же виртуальное адресное пространство;
  • Виртуальное адресное пространство периферийных устройств может перекрываться;
  • Различные виртуальные адреса могут отображаться в одно и то же физическое адресное пространство;

    Базовый адрес таблицы страниц определяется программным обеспечением и требует выравнивания адресов 16 КБ; Таблица страниц элемента таблицы Level2 требует выравнивания адреса 1 КБ. Полный процесс трансляции адресов VA-PA показан на рисунке 3-30.

    Рисунок 3-30. Процесс переключения VA-PA

    4. Очистить и аннулировать TLB

    При обновлении содержимого многостраничной таблицы или изменении адреса таблицы все сопоставления VA-PA, которые были кэшированы в TLB, больше не будут действительны, тогда вам необходимо настроить регистр включения сброса TLB IOMMU, чтобы очистить TLB или PTW Cache. Сначала приостановите доступ к TLB или кэшу, затем настройте соответствующий бит сброса регистра разрешения сброса TLB IOMMU, после того как операция вступит в силу, связанные периферийные устройства могут продолжать отправлять новые операции доступа к памяти.

    Когда какая-либо таблица страниц является недопустимой или неверным отображением, вы можете установить соответствующий регистр TLB Invalidation, чтобы сделать недействительными пары сопоставления TLB VA-PA. Недопустимый TLB поддерживает два режима.

    (1) Режим 0

  • Во-первых, установите регистр выбора режима недействительности TLB IOMMU на 0, чтобы выбрать режим 0;
  • Во-вторых, записать целевой адрес в регистр адреса недействительности TLB IOMMU;
  • В-третьих, установите значения конфигурации в регистр маски адреса недействительности TLB IOMMU, требования следующие:
    - Значение регистра маски адреса недействительности TLB IOMMU не может быть меньше регистра адреса недействительности TLB IOMMU.
    - Старший бит регистра маски адреса недействительности TLB IOMMU должен быть непрерывным 1, младший бит должен быть непрерывным 0, например, 0xfffff000, 0xffffe000, 0xffffc000, 0xffff8000, 0xffff0000 принадлежит разрешенному значению и 0xffffd000, 0xffffb000, 0xffffa000, 0xffff9000, 0xffff7000 принадлежит к недопустимым значениям.

    Наконец, настройте регистр включения недействительности TLB IOMMU, чтобы разрешить недопустимую операцию. Одним из способов определения недопустимого адреса является получение максимального допустимого бита и определение диапазона целевого адреса с помощью целевого адреса И адреса маски. Процесс показан следующим образом.

    Рисунок 3-31. Недопустимый диапазон адресов TLB

    Например:


    - a) Когда значение регистра маски адреса недействительности TLB IOMMU по умолчанию равно 0xFFFFF000, результатом AND является целевой адрес, то есть недействителен только целевой адрес.
    - b) Когда значение регистра маски адреса недействительности TLB IOMMU равно 0xFFFF0000, значение регистра адреса недействительности TLB IOMMU равно 0xEEEE1000, тогда диапазон целевых адресов составляет от 0xEEEE0000 до 0xEEEEF000.
    - c) Когда значение регистра маски адреса недействительности TLB IOMMU равно 0xFFFFC000, значение регистра адреса недействительности TLB IOMMU равно 0xEEEE8000, тогда диапазон целевых адресов составляет от 0xEEEE8000 до 0xEEEEB000.
    - d) Когда значение регистра маски адреса недействительности TLB IOMMU равно 0xFFFF8000, значение регистра адреса недействительности TLB IOMMU равно 0xEEEEC000, тогда диапазон целевых адресов составляет от 0xEEEE8000 до 0xEEEEF000.
    - e) Когда значение регистра маски адреса недействительности TLB IOMMU равно 0xFFFFC000, значение регистра адреса недействительности TLB IOMMU равно 0xEEEE0000, тогда диапазон целевых адресов составляет от 0xEEEE0000 до 0xEEEE3000.

    (2) Режим 1

  • Во-первых, установите регистр выбора режима недействительности TLB IOMMU на 1, чтобы выбрать режим 1;
  • Во-вторых, установите начальный адрес недопустимого TLB с помощью регистра IOMMU TLB Invalidation Start Address Register и установите конечный адрес недействительного TLB регистром начального адреса недействительности TLB IOMMU;
  • Наконец, настройте регистр включения недействительности TLB IOMMU для включения недопустимой операции, после чего может быть завершена связанная с недействительной TLB операция.


    3.12.3.3

    Формат таблицы страниц

    1. Таблица страниц уровня 1

    Формат таблицы страниц Уровня 1 следующий.

    Рисунок 3-32. Формат таблицы страницы уровня 1 Бит [31:10]: базовый адрес таблицы страниц уровня 2; Бит [9: 2]: зарезервирован; Бит [1: 0]: 01 - действительная таблица страниц; другие виноваты;

    2. Таблица страниц уровня 2

    Формат таблицы страниц Уровня 2 следующий.

    Рисунок 3-33. Формат таблицы страницы уровня 1 Бит [31:12]: физический адрес адреса 4K; Бит [11: 8]: зарезервирован; Бит [7: 4]: ACI, индекс контроля разрешений; соответствуют биту управления разрешениями регистра управления полномочиями домена IOMMU; Бит [3: 2]: зарезервирован; Бит [1]: 1 - действительная таблица страниц; 0 - ошибка; Бит [0]: зарезервирован

    3. Индекс разрешений

    Управление доступом для чтения / записи последовательного регистра, такого как регистр управления полномочиями домена IOMMU, выглядит следующим образом

    .

    Рисунок 3-34. Контроль разрешений на чтение / запись

  • Бит [1: 0] / Бит [17:16]: Управление разрешением чтения / записи для Мастера0;
  • Бит [3: 2] / Бит [19:18]: Управление правами чтения / записи для Мастера 1;
  • Бит [5: 4] / Бит [21:20]: управление разрешением чтения / записи для мастера 2;
  • Бит [7: 6] / Бит [23:22]: управление разрешением чтения / записи Master3;
  • Бит [9: 8] / Бит [25:24]: управление разрешением чтения / записи Master4;
  • Бит [11:10] / Бит [27:26]: управление разрешением чтения / записи Master5;
  • Бит [13:12] / Бит [29:28]: Контроль разрешений на чтение / запись Master6.

    Значение регистра управления полномочиями домена IOMMU по умолчанию доступно только для чтения. Другие регистры можно настроить в соответствии с требованиями системы. В процессе переключения адреса соответствующие отношения между ACI и доменом выглядят следующим образом.

    Таблица 3-9. Связь между ACI и доменом

    ACI | Domain | Register

  • 0 Домен 0 Регистр управления полномочиями домена IOMMU 0
  • 1 Домен 1 Регистр управления полномочиями домена IOMMU 0
  • 2 Домен 2 Регистр управления полномочиями домена IOMMU 1
  • 3 Домен 3 Регистр управления полномочиями домена IOMMU 1
  • 4 Домен 4 Регистр управления полномочиями домена IOMMU 2
  • 5 Домен 5 Регистр управления полномочиями домена IOMMU 2
  • 6 Домен 6 Регистр управления полномочиями домена IOMMU 3
  • 7 Домен 7 Регистр управления полномочиями домена IOMMU 3
  • 8 Домен 8 Регистр управления полномочиями домена IOMMU 4
  • 9 Домен 9 Регистр управления полномочиями домена IOMMU 4
  • 10 Домен 10 Регистр управления полномочиями домена IOMMU 5
  • 11 Домен 11 Регистр управления полномочиями домена IOMMU 5
  • 12 Домен 12 Регистр управления полномочиями домена IOMMU 6
  • 13 Домен 13 Регистр управления полномочиями домена IOMMU 6
  • 14 Домен 14 Регистр управления полномочиями домена IOMMU 7
  • 15 Домен 15 Регистр управления полномочиями домена IOMMU 7

    После включения регистра перезаписи полномочий домена IOMMU разрешение управления чтением / записью может переопределить все регистры управления полномочиями домена IOMMU.


    3.12.4. Рекомендации по программированию


    3.12.4.1

    Сброс IOMMU

    Перед операцией сброса программного обеспечения модуля IOMMU убедитесь, что IOMMU никогда не открывается, все операции с шиной завершены, или что DRAM и периферийные устройства уже открывают соответствующий переключатель, чтобы экранировать влияние сброса IOMMU.


    3.12.4.2

    IOMMU Включить

    Перед открытием функции сопоставления адресов IOMMU базовый регистр таблицы трансляции должен быть правильно настроен, или все ведущие устройства находятся в состоянии байпаса, или все ведущие устройства не отправляют команду шины.


    3.12.4.3

    Настроить TTB

    При работе с регистром необходимо закрыть функцию отображения адресов IOMMU, а именно: IOMMU_ENABLE_REG [0] равно 0; или обход функция всех мастеров установлена в 1, или нет состояния команд шины передачи.


    3.12.4.4

    Очистить TTB

    В операции сброса весь доступ к TLB / кэшу будет приостановлен; но операция, введенная в TLB, будет продолжена до начала очистки.


    3.12.4.5

    Чтение / запись данных VA

    Для виртуального адреса прочтите / запишите соответствующие данные физического адреса, чтобы убедиться, что функция сопоставления адресов модуля IOMMU работает нормально. Сначала убедитесь, что вы выполняете чтение или запись, а затем настройте целевой виртуальный адрес или запись данных, затем начните чтение или запись, после завершения операции проверьте, соответствуют ли результаты ожидаемым.


    3.12.4.6

    Статистика PMU

    Когда функция PMU используется в первый раз, установите регистр включения IOMMU PMU, чтобы включить функцию статистики; при чтении соответствующего регистра сбросьте бит разрешения регистра включения IOMMU PMU; когда функция PMU используется в следующий раз, устанавливается первый регистр очистки IOMMU PMU, после сброса счетчика устанавливается бит разрешения регистра включения IOMMU PMU.

    Учитывая, что таблица страниц уровня 2 администрирует непрерывный адрес размером 4 КБ, если Micro TLB пропускает непрерывный виртуальный адрес, может потребоваться возврат таблицы страниц уровня 2 для попадания из TLB макроса; но номер попадания не записывается в регистр попаданий Macro TLB и Micro TLB.

    Таким образом, истинный расчет показателя попаданий выглядит следующим образом:

    Hit Rate = N1 / M1 + (1-N1 / M1) * N2 / M2

  • N1: номер обращения Micro TLB
  • M1: номер доступа к Micro TLB
  • N2: номер обращения макроса TLB
  • M2: номер доступа Macro TLB




  •    3.12.5. Список регистров