Автор: Пользователь скрыл имя, 10 Марта 2012 в 05:33, курсовая работа
Архитектура ARM (Advanced RISC Machine, Acorn RISC Machine, усовершенствованная RISC-машина) — семейство лицензируемых 32-битных и 64-битных микропроцессорных ядер разработки компании ARM Limited. Компания занимается исключительно разработкой ядер и инструментов для них (компиляторы, средства отладки и т. п.), зарабатывая на лицензировании архитектуры сторонним производителям.
Вступление 2
1. Общие сведения об архитектуре ARM 3
1.1. Краткая история 3
1.2. Главные особенности 7
2. Архитектура ARM 11
2.1. Особенности архитектуры ARM 11
2.2. Набор инструкций Thumb 12
2.3. Технология SIMD 13
2.4. Набор инструкций DSP 13
2.5. Технология Jazelle 14
2.6. Технология интеллектуального управления энергопотреблением 15
3. Семейства ядер и процессоров ARM 16
4. Регистры общего назначения (ARM) 18
4.1. Регистры общего назначения на прикладном уровне 18
4.1.1. Счётчик команд PC (R15) 19
4.1.2. Считывание счётчика команд 19
4.1.3. Запись в счётчик команд 20
4.1.4. Указатель стека SP (R13) 21
4.1.5. Регистр связи LR (R14) 22
4.2. Регистры общего назначения на системном уровне 23
4.2.1. Архитектуры ARMv7-A, ARMv7-R и более ранние 23
4.2.2. Архитектуры ARMv6-M и ARMv7-M 23
4.3. Стандартные соглашения о связях 24
5. Логическая структура памяти (ARM) 26
5.1. Адресное пространство 26
5.2. Порядок следования байтов в многобайтовых величинах 26
5.2.1. Порядок LE 27
5.2.2. Порядок BE-32 27
5.2.3. Порядок BE-8 28
5.3. Доступы по невыровненным адресам 29
5.3.1. Архитектуры, предшествующие ARMv6 29
5.3.2. Архитектура ARMv6 30
С появлением системы команд Thumb-2 (версия архитектуры ARMv6T2) компания ARM унифицировала язык ассемблера для наборов команд ARM и Thumb, назвав получившийся гибрид аббревиатурой UAL (Unified Assembler Language). Упоминаемые и описываемые в статьях команды приводятся в соответствии с нотацией UAL, которая, особенно для инструкций Thumb, может отличаться от ранее применявшихся обозначений.
Первое ядро, названное ARM6, было разработано в 1991 г., однако реальное воплощение получила только следующая разработка – ядро ARM7, созданное в 1993 г. Компания не занимается непосредственным производством микросхем. Возможно, эта особенность, которая, на первый взгляд, воспринимается как недостаток, и способствовала удивительной популярности архитектуры ARM. Фирма поставляет свои разработки в электронном виде, на основе которых клиенты конструируют свои собственные микропроцессоры и микроконтроллеры.
Клиентами ARM являются свыше 60 производителей полупроводников, среди которых можно выделить такие известные компании, как Altera, Analog Devices, Atmel, Cirrus Logic, Fujitsu, MagnaChip (Hynix), Intel, Freescale (Motorola), National Semiconductor, NXP (Philips), OKI, ST Microelectronics и Texas Instruments.
В настоящее время архитектура ARM занимает лидирующие позиции и охватывает 75% рынка 32разрядных встраиваемых RISC микропроцессоров. Фактически можно говорить об архитектуре ARM как о промышленном стандарте. Распространённость ядра предоставляет возможность разработчику более гибко использовать свои и сторонние программные наработки как при переходе на новое процессорное ARM ядро, так и при «миграциях» между разными типами ARM микроконтроллеров.
Архитектура ARM отражает собственную философию компании, суть которой – максимальное удовлетворение требованиям встраиваемых систем. Для этого разработчики не стали замыкаться в формальных рамках RISC архитектуры, а в одном продукте реализовали идеи, ранее считавшиеся несовместимыми.
Хотя в своей основе ядро ARM отталкивается от идеологии RISC архитектуры (ограниченный набор команд, очередь выборки инструкций, активное использование регистров и ограниченный доступ к памяти), оно не является «чистым» представителем RISC.
Не все инструкции ARM выполняются за один цикл. Например, есть инструкции, позволяющие переслать между памятью и регистрами 16 слов по 32 разряда. Поскольку подобные операции активно используются компиляторами при каждом вызове и возврате из функций, введение таких инструкций существенно ускоряет работу программы, и минимизируют размер кода.
В состав системы команд входят так же инструкции обращения к аппаратному сопроцессору. Это позволяет разработчикам микроконтроллеров на базе ARM расширять возможности базовой архитектуры, добавляя свои сопроцессоры в случае необходимости.
Дополнительно к ARM архитектуре могут интегрироваться несколько расширений:
Первоначальная система команд ARM содержала только 32разрядные инструкции. Однако для систем, критичных к стоимости и объёму памяти программ, к которым относятся практически все встраиваемые системы реального времени, большая длина инструкций оказалась «узким местом», ограничивающим распространение новой архитектуры.
FLASH память – один из наиболее дорогих компонентов системы, и снижение её объёмов – актуальная задача. Поэтому в 1995 г. система команд ARM дополнилась новым набором 16разрядных инструкций, получившим название Thumb.
Это стало в инженерном смысле очень красивым решением проблемы. Из всего набора инструкций ARM были отобраны наиболее употребляемые инструкции и перекодированы в 16 разрядные опкоды. При выборке такой инструкции процессор ARM с помощью простого аппаратного дешифратора восстанавливает истинный 32 разрядный код инструкции, который и выполняется процессором. Таким образом, стандартное 32 разрядное ядро без каких-либо переделок получило возможность работы с 16 битовыми инструкциями.
При разработке Thumb пришлось пожертвовать некоторыми инструкциями, было снижено по сравнению с ARM количество доступных регистров, режимов адресации, ограничен доступ к некоторым системным ресурсам (регистрам состояния, сопроцессорам).
Однако при необходимости процессор может легко сменить режим выбора инструкций, переходя из Thum в ARM и обратно. Имея это в виду, разработчик может гибко управлять поведением своей программы, используя наиболее эффективный для каждого случая набор команд.
Технология SIMD (несколько данных в одной инструкции) используется в media расширении и нацелена на увеличение скорости обработки данных в приложениях, где требуется малое энергопотребление. SIMD расширения оптимизированы под широкий диапазон программного обеспечения, в том числе под аудио видео кодеки, где эти технологии позволяют увеличить быстродействие обработки в 4 раза.
Многие приложения предъявляют повышенные требования по быстродействию реально-временной обработки сигналов. Традиционно в таких ситуациях разработчики прибегают к использованию цифрового сигнального процессора (DSP), что увеличивает энергопотребление и стоимость, как самой разработки, так и конечного устройства. Для устранения этих недостатков в ряд ARM процессоров интегрированы инструкции ЦСП, выполняющие 16 и 32разрядные арифметические операции.
Технология ARM Jazelle предназначена для приложений с поддержкой языка программирования Java. Она предлагает уникальное сочетание высокой производительности, малой системной стоимости и невысоких запросов к энергопотреблению, что не может быть достигнуто одновременно, если использовать сопроцессор или специализированный Java процессор.
Технология ARM Jazelle является расширением 32разрядной RISC архитектуры, которое позволяет ARM процессору выполнять Java код на аппаратном уровне. При этом достигается непревзойдённое быстродействие исполнения Java кода с помощью ARM архитектуры.
Таким образом, разработчики имеют возможность свободно реализовывать Java приложения, в том числе операционные системы и прикладной код, на одном процессоре.
В настоящее время технология Jazelle интегрирована в следующие ARM процессоры:
ARM1176JZ(F)S, ARM1136J(F)S, ARM1026EJS, ARM926EJS и ARM7EJS.
Традиционные ARM процессоры поддерживают два набора инструкций. В режиме ARM поддерживаются 32 разрядные инструкции, а в режиме Thumb наиболее популярные инструкции сжимаются до 16 разрядного формата. Технология Jazelle расширяет эту концепцию, добавляя третий набор инструкций – Java, который активизируется в новом Java режиме.
Одна из основных задач, которую решают разработчики портативных устройств, например, смартфонов, персональных цифровых помощников и аудио видео плееров, – это оптимизация энергопотребления, что позволяет улучшить эксплуатационные характеристики готового устройства за счёт продления ресурса батареи питания или уменьшения размеров устройства.
Традиционным методом снижения энергопотребления является использование экономичных режимов работы, например, холостой ход (idle) или сон (sleep), которые различаются глубиной деактивации внутренних элементов. Как правило, активный режим работы такой системы рассчитан на наихудшие условия функционирования и характеризуется максимальной загрузкой. Тем самым неоправданно сокращается срок службы батареи. Поэтому для оптимизации расходования энергии бата процессоров ARM. Технология является сочетанием аппаратных и программных компонентов, которые сов местно выполняют динамическое управление напряжением питания (power scaling).
Суть метода
динамического управления напряжением
питания можно понять, проанализировав
формулу потребляемой мощности для КМОП
процессоров:
где Р – общая потребляемая мощность,
С – переключаемая ёмкость, fc – частота
процессора, VDD – напряжение питания, IQ
– ток утечки в статическом режиме.
Из формулы следует, что энергопотребление зависит от частоты и напряжения питания. Снижение частоты для уменьшения энергопотребления широко используется в микроконтроллерах и системах на кристаллах (PSoC), но недостатком этого метода является уменьшение быстродействия. Метод динамического управления напряжением основан на изменении напряжения питания (см. рис. 2), однако если возможности регулировки исчерпаны, то как дополнительный используется метод регулировки частоты процессора.
К настоящему времени разработано восемь основных семейств ядер: ARM7™, ARM9™, ARM9E™, ARM10E™, ARM11™, Cortex, SecurCore™ и OptimoDE Data Engines.
Помимо перечисленных, существуют также специфические ядра, разработанные совместно с компанией Intel: XScale™ и StrongARM®.
Первоначально
для обозначения различных вариантов
ядер и процессоров компания ARM использовала
свою внутреннюю систему обозначений,
которая предполагала, что имя любого
ядра или процессора формируется в соответствии
с шаблоном – ARM{x}{y}{z}{T}{D}{M}{I}{E}{J}
x – семейство;
y – блок управления или защиты памяти;
z – память кэш;
T – поддержка режима Thumb;
D – JTAG порт;
M – быстрый умножитель;
I – встроенный блок эмуляции;
E – расширенный набор инструкций (подразумевает обязательное наличие функций TDMI, поэтому в случае использования индекса E индексы TDMI из названия опускаются);
J – поддержка Java инструкций (режим Jazelle);
F – блок векторной арифметики над числами с плавающей точкой;
S – синтезируемая версия (поставляется производителю кристалла в виде исходного текста, требующего компиляции (синтеза), в отличие от несинтезируемых версий, которые имеют заданную и неизменяемую топологию).
Процессоры ARM разрабатывались для удовлетворения потребностей следующих основных категорий систем:
С точки зрения прикладного программиста, процессор располагает 16-ю 32-разрядными регистрами общего назначения (РОН, GPR), из которых три на деле имеют специальные функции:
Первые 13 регистров с точки зрения архитектуры являются абсолютно равноправными, за исключением того, что в командах, обрабатывающих сразу пару регистров (например, LDRD), указывается всегда регистр с чётным номером, а пару с ним составляет следующий за ним регистр с нечётным номером.
Остальные три регистра имеют специальное назначение. Счётчик команд как РОН использоваться не может, а в командах применяется для достижения специальных целей. LR может использоваться как РОН в тех случаях, когда он не применяется по прямому назначению. Возможность такого использования для SP определяется разновидностью процессора. В частности, в архитектуре ARMv7-M при записи в SP младшие два бита принудительно устанавливаются в 0, что ограничивает возможности его применения как обычного РОНа. Подробнее об использовании этих регистров сказано ниже.
Заметим, что в системе команд Thumb свободно могут использоваться лишь регистры R0-R7, называемые также младшими регистрами. Явный доступ к старшим регистрам в Thumb крайне ограничен. Система команд Thumb-2 преодолела это ограничение, однако для доступа к старшим регистрам в ней почти во всех случаях применяется 32-, а не 16-разрядное кодирование команд. Система команд ARM ограничений на доступ к регистрам не имеет.
Регистр PC (Program Counter) используется для хранения адресов выполняющихся команд. При последовательном выполнении команд он последовательно увеличивается, при переходах в него загружается новое значение.
Многие команды запрещают программисту явно использовать PC или налагают на это определённые ограничения, что всегда оговаривается в описаниях конкретных команд. Нарушение этих правил обычно ведёт к непредсказуемым результатам.
В тех случаях, когда описание команды не налагает ограничений на использование PC, применяются изложенные ниже правила.