OSDev Wiki
Advertisement

Через регистр 0 сопроцессора управления системой осуществляется доступ к нескольким внутренним регистрам, содержащим информацию о различных характеристиках процессора. Нужный внутренний регистр выбирается с помощью поля дополнительной операции (opcode2) команды MRC. Все эти регистры доступны только для чтения:

opcode2 Содержимое регистра
000
Главный идентификатор (Main ID)
001
Тип кэша
010
Тип тесно связанной памяти (TCM)
011
Тип буфера быстрой переадресации (TLB)
100
Тип MPU (PMSAv6)
101–111
резерв

Регистр главного идентификатора[]

Старший байт главного идентификатора определяет фирму-разработчика (Implementor) данного процессора:

  • 41 — ARM Limited;
  • 44 — DEC;
  • 4D — Motorola — Freescale Semiconductor Inc.;
  • 56 — Marvell Semiconductor Inc.;
  • 69 — Intel Corporation.

Все остальные коды являются зарезервированными.

Остальные поля по историческим причинам нуждаются в дополнительной интерпретации. Если бит 19 равен нулю, биты 15:12 указывают версию архитектуры:

  • если они равны нулю, это устаревшая архитектура (до ARMv4);
  • если они равны 7, это архитектура ARM7;
  • если они больше 7, это более новая архитектура, чем ARM7.

Формат регистра главного идентификатора для процессоров архитектуры ARM7 показан на рисунке ниже.

ARM7 CP15 R0-0

Формат регистра главного идентификатора для процессоров ARM7

  • бит 23 (A) определяет версию архитектуры процессора ARM7: 0 соответствует устаревшей версии 3, 1 — версии 4T;
  • биты 22–16 (Variant) содержат номер варианта процессора, определяемый реализацией;
  • биты 15–4 (Primary part number) содержат определяемый реализацией номер основной части процессора. Старшие четыре бита будут равны 7;
  • биты 3–0 (Revision) содержат определяемый реализацией номер ревизии данного процессора.

Формат регистра главного идентификатора для процессоров с архитектурами после ARM7 показан на рисунке ниже.

ARM8+ CP15 R0-0

Формат регистра главного идентификатора для процессоров после ARM7

  • биты 23–20 (Variant) являются зависящим от реализации номером варианта процессора.
  • биты 19–16 (Architecture) содержат код архитектуры данного процессора:
    • 1 — ARMv4;
    • 2 — ARMv4T;
    • 3 — ARMv5;
    • 4 — ARMv5T;
    • 5 — ARMv5TE;
    • 6 — ARMv5TEJ;
    • 7 — ARMv6;
    • F — изменённый формат CPUID. Подробности можно узнать у ARM Limited.
  • биты 15–4 (Primary part number) содержат зависящий от реализации номер основной части процессора. Старшие четыре бита не могут быть равны нулю или семи.
  • биты 3–0 (Revision) являются зависящим от реализации номером ревизии процессора.

Регистр типа кэша[]

ARM CP15 R0-1

Формат регистра типа кэша

Назначение разрядов регистра типа кэша следующее:

  • биты 28–25 (ctype) задают тип кэша (см. ниже);
  • бит 24 (S) указывает, используется ли единый кэш инструкций и данных (=0) или же отдельные кэши (=1). Если используется единый кэш, поля Dsize и Isize должны быть равны;
  • биты 23:12 (Dsize) указывают размер кэша данных или единого кэша;
  • биты 11:0 (Isize) указывают размер кэша инструкций или единого кэша.

Значения поля ctype, не описанные в следующей таблице, являются зарезервированными. Подробное описание возможностей кэша и связанных с ним операций находится в соответствующем разделе.

ctype Тип кэша Очистка кэша Ограничение кэша
0000 Сквозная запись Не требуется Не поддерживается
0001 Обратная запись Чтение блока данных Не поддерживается (устарело в ARMv6)
0010 Обратная запись Операции регистра 7 Не поддерживается (устарело в ARMv6)
0101 Обратная запись Операции регистра 7 Формат D
0110 Обратная запись Операции регистра 7 Формат A
0111 Обратная запись Операции регистра 7 Формат B (устарело в ARMv6)
1110 Обратная запись Операции регистра 7 Формат C

Регистр типа TCM[]

ARM CP15 R0-2

Формат регистра типа тесно связанной памяти (TCM)

Назначение разрядов регистра типа тесно связанной памяти (TCM) следующее:

  • биты 28–19 и 15–3 (SBZ/UNP) — нули либо непредсказуемо;
  • биты 18–16 (DTCM) — количество реализованных модулей тесно связанной памяти данных (от 0 до 4, большие значения зарезервированы);
  • биты 2–0 (ITCM) — количество реализованных модулей тесно связанной памяти инструкций (или общей памяти; количество находится в пределах от 0 до 4, большие значения зарезервированы).

Регистр типа TLB[]

ARM CP15 R0-3

Формат регистра типа TLB

Назначение разрядов регистра типа TLB следующее:

  • биты 31–24 и 7–1 (SBZ/UNP) — нули либо непредсказуемо;
  • биты 23–16 (ILsize) — количество допускающих фиксацию элементов TLB инструкций, если S=1, иначе нули;
  • биты 15–8 (DLsize) — количество допускающих фиксацию элементов TLB данных, если S=1, или общего TLB, если S=0;
  • бит 0 (S) — равен нулю, если используется общий TLB, и единице, если имеются отдельные TLB инструкций и данных.

Регистр типа MPU[]

Этот регистр появился в версии PMSAv6.

ARM CP15 R0 PMSAv6

Формат регистра типа MPU

Назначение разрядов регистра типа блока защиты памяти (MPU) следующее:

  • биты 31–24 и 7–1 (SBZ/UNP) — нули либо непредсказуемо;
  • биты 23–16 (IRegion) — если S=1, содержит количество областей памяти инструкций, иначе содержит 0;
  • биты 15–8 (DRegion) — если S=1, содержит количество областей памяти данных, в противном случае — количество единых областей инструкций и данных;
  • бит 0 (S) — равен нулю, если MPU использует единые области инструкций и данных, и единице, если MPU разделяет области инструкций и области данных.

Подробно MPU обсуждается в разделе Архитектура системы защиты памяти.

Advertisement