Основные характеристики ядра ARM7



 

1. 32-разрядный RISC процессор (32-разрядные шины данных и адреса) с производительностью 17 MIPS при тактовой частоте 25 МГц (пиковая производительность 25 MIPS)

2. 32-разрядная адресация - линейное адресное пространство в 4 Гбайта - исключает потребность в сегментированной, разделенной на банки или оверлейной памяти

3. Тридцать один 32-разрядный регистр общего назначения и шесть регистров состояния

4. Регистры адресов, записи и конвейера         

5. Циклическое сдвиговое устройство и перемножитель

6. Трехуровневый конвейер (выборка команды, ее декодирование и выполнение)

7. Рабочие режимы Big Endian и Little Endian

8. Напряжение питания 3,3 и 5 В

9. Малое потребление 0,6 мА/МГц, при изготовлении по CMOS технологии с топологическими нормами 0,8 мкм.

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

11. Быстрый отклик на прерывания применений реального масштаба времени

12. Поддержка систем виртуальной памяти

13. Простая но мощная система команд

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

 

 

Блок -схема ядра ARM7

32-разрядная система команд ядра ARM7 содержит одиннадцать базовых типов команд:

  1. Два типа используют встроенное арифметико-логическое устройство, циклическое сдвиговое устройство и умножитель при операциях над данными в банке из 31 регистра, форматом по 32 разряда каждый;
  2. Три класса команд управления перемещением данных между памятью и регистрами, один оптимизированный на обеспечение гибкости адресации, другой под быстрое контекстное переключение и третий под подкачку данных;
  3. Три команды управляют потоком и уровнем привилегии выполнения;
  4. Три типа предназначены для управления внешними сопроцессорами, что позволяет расширить функциональные возможности системы команд за пределами ядра.

Система команд ARM хорошо обрабатывается компиляторами языков высокого уровня. В отличие от некоторых RISC процессоров, процессор ARM7, при возникновении необходимости в некотором уменьшении объема кодов, допускает программирование и на ассемблере.

Предоставляя, на лицензионной основе, ядро ARM7 своим кремниевым партнерам фирма ARM на основе разработала микроконтроллеры ARM7100, ARM7500 и ARM7500FE и, пожалуй, небольшое описание этих микроконтроллеров позволит оценить возможности, предоставляемые ядром ARM7.

На основе ядер ARM7 реализуются достаточно мощные и сложные приборы, по своей производительности приближающиеся к производительности рабочих станций недавнего прошлого, что обеспечивается высокопроизводительным RISC ядром и мощной 32-разрядной ARM системой команд.

Необходимо отметить, что программы, подготовленные даже для довольно эффективной 32-разрядной ARM системы команд, требуют памяти значительного объема, что в свою очередь приводит к росту общей стоимости системы. Специалисты фирмы ARM предложили решение этой проблемы, разработав и внедрив технологию Thumb, технологию, позволяющую существенно сократить объем кодов, необходимых для реализации той же программы, что выполняется на 32-разрядной ARM системе команд. До настоящего времени эта технология считается лучшей из технологий, использующих сжатые системы команд.

 

Подходы для решения проблемы большого размера кода

 

Архитектура с расширенными возможностями

 

Архитектура RISC фирмы ARM обеспечивает как малое потребление мощности и малый размер кристалла так и высокую производительность, необходимые во встраиваемых применениях. Фирма ARM расширила возможности этой архитектуры, с точки зрения решения проблемы размера кодов, разработав новую технологию - новую систему команд Thumb.

В этом кратком обзоре описывается технология Thumb фирмы ARM.

 

Существует несколько подходов, решающих проблему размера кода:

  1. Написание кода вручную на ассемблере

Для получения минимального размера кода программист может писать коды вручную - на ассемблере. Однако, этот процесс может занять непрактично большое время и в результате может быть получен код, который трудно поддерживать и всего лишь на 10-20% более компактный чем код, полученный при использовании хорошего компилятора. Корень проблемы, неэффективность кода, все еще не решается.

  1. Использование улучшенного компилятора

Технология компилирования может улучшить код, но опять таки меньшим размер кода будет при ручном кодировании на ассемблере.

  1. Использование компрессированного кода

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

 

Решение от фирмы ARM

 

Для решения проблемы большого объема кода фирма ARM использовала сочетание программных и аппаратных средств. Изящное и простое решение, использованное фирмой ARM, обеспечило реальные преимущества:

  1. Ведущее в отрасли соотношение производительность/потребление (MIPS/Watt)
  2. Превосходную плотность кода
  3. Малый размер кристалла
  4. Признание и активную поддержку большим количеством фирм-разрабочиков специализированных ИС для различных применений

 

Режимы.

 

Процессор может находиться в одном из следующих операционных режимов:

· User mode — обычный режим выполнения программ. В этом режиме выполняется большинство программ.

· Fast Interrupt (FIQ) — режим быстрого прерывания (меньшее время срабатывания)

· Interrupt (IRQ) — основной режим прерывания.

· System mode — защищённый режим для использования операционной системой.

· Abort mode — режим, в который процессор переходит при возникновении ошибки доступа к памяти (доступ к данным или к инструкции на этапе prefetch конвейера).

· Supervisor mode — привилегированный пользовательский режим.

· Undefined mode — режим, в который процессор входит при попытке выполнить неизвестную ему инструкцию.

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

 

Функции RISC

 

Архитектура ARM обладает следующими особенностями RISC:

  • Архитектура загрузки/хранения
  • Нет поддержки нелинейного (не выровненного по словам) доступа к памяти (теперь поддерживается в процессорах ARMv6 за некоторыми исключениями и полностью в ARMv7)
  • Равномерный 16х32-битный регистровый файл
  • Фиксированная длина команд (32 бита) для упрощения декодирования за счет снижения плотности кода. Позднее режим Thumb повысил плотность кода.
  • Одноцикловое исполнение

Чтобы компенсировать простой дизайн, в сравнении с современными процессорами вроде Intel 80286 или Motorola 68020 были использованы некоторые особенности дизайна:

  • Арифметические инструкции заменяют условные коды только когда это необходимо
  • 32-битное многорегистровое циклическое сдвиговое устройство, которое может быть использовано без потерь производительности в большинстве арифметических инструкций и адресных расчетов.
  • Мощные индексированные адресные режимы
  • Регистр ссылок для быстрого вызова функций листьев
  • Простые, но быстрые, с двумя уровнями приоритетов подсистемы прерываний с включенными банками регистров.

 

Условное исполнение

 

Одним из существенных отличий архитектуры ARM от других архитектур ЦПУ является так называемая предикация — возможность условного исполнения команд. Под «условным исполнением» здесь понимается то, что команда будет выполнена или проигнорирована в зависимости от текущего состояния флагов состояния процессора.

В то время как для других архитектур таким свойством, как правило, обладают только команды условных переходов, в архитектуру ARM была заложена возможность условного исполнения практически любой команды. Это было достигнуто добавлением в коды их инструкций особого 4-битового поля (предиката). Одно из его значений зарезервировано на то, что инструкция должна быть выполнена безусловно, а остальные кодируют то или иное сочетание условий (флагов). С одной стороны, с учётом ограниченности общей длины инструкции, это сократило число бит, доступных для кодирования смещения в командах обращения к памяти, но с другой — позволило избавляться от инструкций ветвления при генерации кода для небольших if-блоков.

 

Пример, обычно рассматриваемый для иллюстрации — основанный на вычитании алгоритм Евклида. В языке C он выглядит так:

while (i != j)

{

if (i > j)

i -= j;

else

j -= i;

}

А на ассемблере ARM — так:

loop CMP Ri, Rj   ; set condition «NE» if (i != j),

; "GT" if (i > j),

;or "LT" if (i < j)

SUBGT Ri, Ri, Rj ; if "GT" (greater than), i = i-j;

SUBLT Rj, Rj, Ri ; if "LT" (less than), j = j-i;

BNE loop              ; if "NE" (not equal), then loop

Из кода видно, что использование предикации позволило полностью избежать ветвления в операторах else и then. Заметим, что если Ri и Rj равны, то ни одна из SUB инструкций не будет выполнена, полностью убирая необходимость в ветке, реализующей проверку while при каждом начале цикла, что могло быть реализовано, например, при помощи инструкции SUBLE (меньше либо равно).

Один из способов, которым уплотнённый (Thumb) код достигает большей экономии объёма — это именно удаление 4-битового предиката из всех инструкций, кроме ветвлений.

 

Другие особенности

 

Другая особенность набора команд это возможность соединять сдвиги и вращения в инструкции «обработки информации» (арифметическую, логическую, движение регистр-регистр) так, что, например выражение С:

a += (j << 2);

может быть преобразовано в команду из одного слова и одного цикла в ARM:

ADD Ra, Ra, Rj, LSL #2

Это приводит к тому, что типичные программы ARM становятся плотнее, чем обычно, с меньшим доступом к памяти. Таким образом, конвейер используется гораздо более эффективно. Даже несмотря на то, что ARM работает на скоростях, которые многие бы сочли низкими, он довольно-таки легко конкурирует с многими более сложными архитектурами ЦПУ.

ARM процессор также имеет некоторые особенности, редко встречающиеся в других архитектурах RISC — такие, как адресация относительно счетчика команд (на самом деле счетчик команд ARM является одним из 16 регистров), а также пре- и пост-инкрементные режимы адресации.

Другая особенность, которую стоит отметить, это то, что некоторые ранние ARM процессоры (до ARM7TDMI), например, не имеют команд для хранения 2-байтных чисел. Таким образом, строго говоря, для них невозможно сгенерировать эффективный код, который бы вел себя так, как ожидается от объектов С, типа «volatile int16_t».

 

Конвейер и другие аспекты реализации

 

ARM7 и более ранние версии имеют трехступенчатый конвейер. Это ступени переноса, декодирования и исполнения. Более производительные архитектуры, типа ARM9, имеют более сложные конвейеры. Cortex-a8 имеет 13-ступенчатый конвейер.

 

Сопроцессоры

 

Архитектура предоставляет способ расширения набора команд, используя сопроцессоры, которые могут быть адресованы, используя MCR, MRC, MRRC, MCRR и похожие команды. Пространство сопроцессора логически разбито на 16 сопроцессоров с номерами от 0 до 15, причем 15-й зарезервирован для некоторых типичных функций управления, типа управления кэш-памятью и операции блока управления памятью (на процессорах, в которых они есть).

 

В машинах на основе ARM периферийные устройства обычно подсоединяются к процессору путем сопоставления их физических регистров в памяти ARM или в памяти сопроцессора, или путем присоединения к шинам, которые в свою очередь подсоединяются к процессору. Доступ к сопроцессорам имеет большее время ожидания, поэтому некоторые периферийные устройства проектируются для доступа в обоих направлениях. В остальных случаях разработчики чипов лишь пользуются механизмом интеграции сопроцессора. Например, движок обработки изображений должен состоять из малого ядра ARM7TDMI, совмещенного с сопроцессором, который поддерживает примитивные операции по обработке элементарных кодировок HDTV.

 

Усовершенствованный SIMD (NEON)

 

Расширение усовершенствованного SIMD, также называемое технологией NEON — это комбинированный 64- и 128-битный набор команд SIMD (single instruction multiple data), который обеспечивает стандартизованное ускорение для медиа приложений и приложений обработки сигнала. NEON может выполнять декодирование аудио формата mp3 на частоте процессора в 10 МГц, и может работать с речевым кодеком GSM AMR (adaptive multi-rate) на частоте более 13МГц. Он обладает внушительным набором команд, отдельными регистровыми файлами, и независимой системой исполнения на аппаратном уровне. NEON поддерживает 8-, 16-, 32-, 64-битную информацию целого типа, одинарной точности и с плавающей запятой, и работает в операциях SIMD по обработке аудио и видео (графика и игры). В NEON SIMD поддерживает до 16 операций единовременно.

 

VFP

 

Технология VFP (Vector Floating Point, вектора чисел с плавающей запятой) — расширение сопроцессора в архитектуре ARM. Она производит низкозатратные вычисления над числами с плавающей запятой одинарной/двойной точности, в полной мере соответствующие стандарту ANSI/IEEE Std 754—1985 Standard for Binary Floating-Point Arithmetic. VFP производит вычисления с плавающей запятой, подходящие для широкого спектра приложений — например, для КПК, смартфонов, сжатие звука, трёхмерной графики и цифрового звука, а также принтеров и телеприставок. Архитектура VFP также поддерживает исполнение коротких векторных команд. Но, поскольку процессор выполняет операции последовательно над каждым элементом вектора, то VFP нельзя назвать истинным SIMD набором инструкций. Этот режим может быть полезен в графике и приложениях обработки сигнала, так как он позволяет уменьшить размер кода и выработку команд.

Другие сопроцессоры с плавающей запятой и/или SIMD, находящиеся в ARM процессорах включают в себя FPA, FPE, iwMMXt. Они обеспечивают ту же функциональность, что и VFP, но не совместимы с ним на уровне опкодов.

 

Расширения безопасности

 

Расширения безопасности, позиционируемые как TrustZone Technology, находятся в ARMv6KZ и других, более поздних, профилированных на приложениях архитектурах. Оно обеспечивает низкозатратную альтернативу добавлению специального ядра безопасности, обеспечивая 2 виртуальных процессора, поддерживаемых аппаратным контролем доступа. Это позволяет ядру приложения переключаться между двумя состояниями, называемыми «миры» (чтобы избежать путаницы с названиями возможных доменов), чтобы не допустить утечку информации из более важного мира в менее важный. Этот переключатель миров обычно ортогонален всем другим возможностям процессора. Таким образом, каждый мир может работать независимо от других миров, используя одно и то же ядро. Память и периферия соответственно изготавливаются с учетом особенностей мира ядра, и могут использовать это, чтобы получить контроль доступа к секретам и кодам ядра. Типичные приложения TrustZone Technology должны запускать полноценную операционную систему в менее важном мире, и компактный, специализированный на безопасности, код в более важном мире, позволяя Digital Rights Management’у намного точнее контролировать использование медиа на устройствах на базе ARM, и предотвращая несанкционированный доступ к устройству.

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

 

Отладка

 

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

Архитектура ARMv7 определяет базовые средства отладки на архитектурном уровне. К ним относятся точки останова, точки просмотра и выполнение команд в режиме отладки. Такие средства были также доступны с модулем отладки EmbeddedICE. Поддерживаются оба режима — остановки и обзора. Реальный транспортный механизм, который используется для доступа к средствам отладки, не специфицирован архитектурно, но реализация, как правило, включает поддержку JTAG.

Существует отдельная архитектура отладки «с обзором ядра», которая не требуется архитектурно процессорами ARMv7.

 

Поддерживаемые системы ввода-вывода

 

В большинстве существующих моделей микропроцессоров реализована шина PCI и возможность работы с внешней динамической оперативной памятью (DRAM). В процессорах, предназначенных для потребительских устройств, также обычно интегрируются: контроллеры шин USB, IIC, AC’97-совместимое звуковое устройство, устройство для работы с флэш-носителями стандарта SD и MMC, контроллер последовательного порта.

Все процессоры имеют линии ввода-вывода общего назначения (GPIO). В потребительских устройствах к ним могут быть подключены кнопки «быстрого запуска», сигнальные светодиоды, колесо прокрутки (JogDial), клавиатура.

 

Регистры

 

ARM предоставляет 31 регистр общего назначения разрядностью 32 бит. В зависимости от режима и состояния процессора пользователь имеет доступ только к строго определённому набору регистров. В ARM state разработчику постоянно доступны 17 регистров:

  • 13 регистров общего назначения (r0..r12).
  • Stack Pointer (r13) — содержит указатель стека выполняемой программы.
  • Link register (r14) — содержит адрес возврата в инструкциях ветвления.
  • Program Counter (r15) — биты [31:1] содержат адрес выполняемой инструкции.
  • Current Program Status Register (CPSR) — содержит флаги, описывающие текущее состояние процессора. Модифицируется при выполнении многих инструкций: логических, арифметических, и др.

Во всех режимах, кроме User mode и System mode, доступен также Saved Program Status Register (SPSR). После возникновения исключения регистр CPSR сохраняется в SPSR. Тем самым фиксируется состояние процессора (режим, состояние; флаги арифметических, логических операций, разрешения прерываний) на момент непосредственно перед прерыванием.

 

usr sys svc abt und irq fiq

R0

R1

R2

R3

R4

R5

R6

R7

R8

R8_fiq

R9

R9_fiq

R10

R10_fiq

R11

R11_fiq

R12

R12_fiq

R13

R13_svc R13_abt R13_und R13_irq R13_fiq

R14

R14_svc R14_abt R14_und R14_irq R14_fiq

R15

CPSR

 

SPSR_svc SPSR_abt SPSR_und SPSR_irq SPSR_fiq

 


Дата добавления: 2021-12-10; просмотров: 31; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!