В ч 68060 адрес

Заглянем под капот Motorola 68060! Разбираем хитрую адресацию последнего из 68k.Must-read для ретро-фанатов и гиков.

Бесплатная консультация юриста

+7 (800) -02-87-29

Реклама jurik.ru

Процессор Motorola 68060 (часто упоминаемый как 68060) – это последний представитель линейки 68k, выпущенный в начале 1990‑х годов. Несмотря на то, что сегодня он уже не используется в новых системах, его архитектура до сих пор интересна инженерам, ретро‑разработчикам и любителям микропроцессорных технологий. Одним из ключевых аспектов любой архитектуры является способ обращения к памяти – то есть адресация. В этой статье мы подробно разберём, как устроена адресация в 68060, какие возможности предоставляет его MMU и какие ограничения следует учитывать при программировании.


Общие характеристики 68060
  • Разрядность процессора: 32‑битный.
  • Частота тактового генератора: до 75 МГц (в некоторых версиях – до 100 МГц).
  • Кеши: 2‑уровневый кеш (L1 – 4 KB инструкций + 4 KB данных, L2 – 256 KB, полностью ассоциативный).
  • Поддержка MMU: встроенный 32‑битный Memory Management Unit (MMU) совместимый с 68040.
  • Шина адресов: 32‑битная, что позволяет адресовать до 4 ГБ линейного адресного пространства.

Почему 32‑битная шина важна?

Шина адресов в 68060 состоит из 32 линий, что в теории даёт возможность задать 2³² = 4 294 967 296 уникальных адресов. На практике часть этого пространства может быть зарезервирована под специальные функции (например, доступ к периферии через адресные регистры), но в целом процессор способен работать с полным 4‑ГБ диапазоном.


Линейное (физическое) адресное пространство

Линейное (или физическое) адресное пространство 68060 – это прямая карта адресов к физическим ячейкам памяти. Оно делится на несколько логически выделенных областей:

Диапазон адресов Назначение Комментарий
0x0000 0000 – 0x0FFF FFFF ОЗУ (DRAM, SRAM) Основная рабочая память.
0x1000 0000 – 0x1FFF FFFF Периферийные устройства Регистры контроллеров, видеокарты, сетевых адаптеров и т.п.
0x2000 0000 – 0x3FFF FFFF Отображаемая память (memory‑mapped I/O) Зарезервировано для будущих расширений.
0x4000 0000 – 0x7FFF FFFF Неиспользуемая/резервная область Часто используется для отладки и тестирования.
0x8000 0000 – 0xFFFFFFFF Виртуальная память (через MMU) Отображается на физические адреса согласно таблицам страниц.

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


Виртуальная адресация и MMU

Одной из самых мощных возможностей 68060 является поддержка виртуальной памяти. MMU переводит виртуальные (логические) адреса, используемые программой, в физические адреса, доступные шине. Перевод происходит по таблицам страниц, которые хранятся в ОЗУ и управляются операционной системой.

Формат записи в таблице страниц
  • Размер страницы: 4 KB (по умолчанию), но поддерживаются и 8 KB, 16 KB, 32 KB, 64 KB.
  • Запись (PTE – Page Table Entry) состоит из 32 бит:
    • Биты 31‑12 – физический адрес начала страницы (выравнивание по 4 KB).
    • Бит 11 – Valid (страница присутствует в памяти).
    • Бит 10 – Writable (разрешена запись).
    • Бит 9 – Cacheable (может кешироваться).
    • Бит 8 – Supervisor (доступ только в привилегированном режиме).
    • Биты 7‑0 – дополнительные флаги (например, защита от выполнения).

Трансляция адреса
  1. CPU получает виртуальный адрес VA = [V31‑V0].
  2. Верхние 10 бит (V31‑V22) используются как индекс в директорий страниц (Page Directory).
  3. Следующие 10 бит (V21‑V12) – индекс в таблице страниц (Page Table).
  4. Нижние 12 бит (V11‑V0) – смещение внутри страницы.
  5. С помощью индексов находится запись PTE, из которой берётся физический базовый адрес страницы. К нему прибавляется смещение, получаем физический адрес PA.

Если бит Valid в PTE сброшен, генерируется исключение Page Fault, которое ОС обрабатывает, загружая нужную страницу из внешней памяти (например, из ROM или из внешнего хранилища).

Привилегированные режимы

68060 поддерживает два уровня доступа:

  • Supervisor (S) – режим ядра, имеет полный доступ к любой странице.
  • User (U) – режим пользователя, доступ ограничен флагом Supervisor в PTE.

Попытка доступа к странице, помеченной как Supervisor, из пользовательского режима приводит к исключению Privilege Violation.


Адресные режимы процессора

68060, как и остальные процессоры семейства 68k, поддерживает несколько режимов адресации, позволяющих гибко формировать адреса в инструкциях. Ниже перечислены основные из них.

Режим Синтаксис Описание
Data Register Direct Dn Операнд берётся непосредственно из регистра данных.
Address Register Direct An Операнд берётся из регистра адреса.
Address Register Indirect (An) Адрес берётся из регистра адреса, содержимое по этому адресу используется как операнд.
Address Register Indirect with Postincrement (An)+ После чтения/записи регистр An увеличивается на размер операнда.
Address Register Indirect with Predecrement -(An) Перед чтением/записью регистр An уменьшается.
Address Register Indirect with Displacement (d16, An) К содержимому An прибавляется 16‑битное смещение d16.
Address Register Indirect with Index (d8, An, Xn.SIZE*SCALE) Сложный режим, использующий индексный регистр Xn, масштаб (1,2,4,8) и 8‑битное смещение.
Absolute Short (d16) 16‑битный абсолютный адрес.
Absolute Long (d32) 32‑битный абсолютный адрес.
Program Counter with Displacement (d16, PC) Относительный к текущему PC адрес.
Program Counter with Index (d8, PC, Xn.SIZE*SCALE) Относительный к PC с индексом.

Все эти режимы работают как с линейными, так и с виртуальными адресами – окончательная трансляция происходит в MMU после вычисления полного 32‑битного адреса.


Выравнивание и ограничения доступа
  • Выравнивание данных – 68060 требует, чтобы 16‑битные данные находились по адресам, кратным 2, а 32‑битные – по адресам, кратным 4. Нарушение выравнивания приводит к исключению Address Error.
  • Кеширование – если в PTE установлен флаг Cacheable, данные могут быть помещены в L1/L2 кеш. Для областей ввода‑вывода часто флаг отключён, чтобы избежать несогласованности.
  • Права доступа – комбинация битов Writable и Supervisor определяет, кто и как может работать с страницей. Попытка записи в страницу без соответствующего бита генерирует Write Protect Violation.

Пример проверки выравнивания
 MOVE.L D0,(A0) ; Ожидается, что A0 % 4 == 0
 ; Если A0 = 0x1003, процессор выдаст Address Error.

Практические примеры использования адресации

Пример простого доступа к периферии

Предположим, что регистр управления UART расположен по физическому адресу 0x1000_2000. Чтобы записать в него значение 0x55, можно использовать следующий код на ассемблере 68k:

 MOVE.B #$55, $10002000 ; Абсолютный длинный адрес

Если система использует MMU и этот адрес отображён в виртуальное пространство, то вместо физического адреса будет использоватся виртуальный, например 0xC000_2000:

 MOVE.B #$55, $C0002000 ; Виртуальный адрес, будет транслирован MMU.

Пример создания таблицы страниц

Ниже – упрощённый фрагмент кода на C, демонстрирующий инициализацию первой записи таблицы страниц для 4 KB страницы, расположенной по физическому адресу 0x0010_0000:

 #define PAGE_SIZE 0x1000 // 4 KB
 #define PTE_VALID (1U << 11)
 #define PTE_WRITABLE (1U << 10)
 #define PTE_CACHEABLE (1U << 9)

 uint32_t page_table[1024] __attribute__((aligned(4096)));

 void init_page_table(void) {
 uint32_t phys_addr = 0x00100000; // начало физической страницы
 uint32_t pte = (phys_addr & 0xFFFFF000) // старшие 20 битов адреса
 | PTE_VALID | PTE_WRITABLE | PTE_CACHEABLE;
 page_table[0] = pte; // первая запись
 }

После загрузки этой таблицы в регистр MMU (например, в TT0), процессор будет автоматически переводить виртуальный адрес 0x0000_0000 – 0x0000_0FFF в физический 0x0010_0000 – 0x0010_0FFF.


Сравнение 68060 с предшествующими моделями
Характеристика 68040 68060
Шина адресов 32‑битная 32‑битная (совместима)
Кеш L1 (4 KB инструкций, 4 KB данных), без L2 L1 + L2 (256 KB), более эффективный алгоритм замещения
Поддержка MMU Встроенный, 4‑уровневый Встроенный, совместим с 68040, но ускоренный
Максимальная частота ≈ 40 МГц ≈ 75 МГц (в некоторых версиях – 100 МГц)
Поддержка SIMD Нет Есть (инструкции для ускорения DSP‑операций)

Таким образом, 68060 сохраняет совместимость с 68040 в части адресации, но предлагает более быстрый кеш и более гибкую поддержку SIMD‑инструкций.


Ошибки и отладка адресации

При работе с 68060 часто встречаются следующие типы ошибок, связанные с адресацией:

  1. Address Error – нарушение выравнивания или недопустимый тип адреса.
  2. Bus Error – попытка доступа к несуществующей физической области (например, к неинициализированному периферийному регистру).
  3. Page Fault – отсутствие валидной записи в таблице страниц.
  4. Privilege Violation – доступ к странице, защищённой режимом Supervisor, из пользовательского режима.

Для отладки рекомендуется использовать:

  • Трассировщик (trace) на уровне шины – позволяет увидеть, какие адреса действительно попадают на шину.
  • Регистры MMU (TT0, TT1, TC, etc.) – показывают текущие настройки таблиц страниц.
  • Отладочный вывод в виде TRAP #15 с пользовательским обработчиком, который печатает значение PC и SR при возникновении исключения.

Адресация в процессоре Motorola 68060 сочетает в себе простоту 32‑битной линейной шины и мощные возможности виртуальной памяти благодаря встроенному MMU. Понимание структуры линейного адресного пространства, формата записей в таблицах страниц и особенностей режимов доступа позволяет эффективно использовать процессор как в классических встраиваемых системах, так и в более сложных ОС, где требуется защита памяти и поддержка многозадачности.

Если вы планируете писать низкоуровневый код для 68060, помните о требованиях к выравниванию, правильно настраивайте флаги в PTE и всегда проверяйте, что используемые адреса находятся в разрешённом диапазоне. При соблюдении этих правил система будет работать стабильно, а отладка станет гораздо проще.


Ссылки для дальнейшего изучения
  • Motorola 68060 Family Programmer’s Reference Manual (PDF)
  • “68K Architecture” – статья в журнале Byte, 1995 год.
  • Open-source эмуляторы: 68kemu – позволяют исследовать работу MMU в реальном времени.
  • Книга «Программирование микропроцессоров семейства 68k» – глава 7 посвящена MMU и адресации.