Автор: Пользователь скрыл имя, 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
Если осуществляется доступ к нескольким словам подряд (например, выполняется считывание двойного слова), то адрес младшего слова будет равен A, следующего за ним — A+4 и так далее.
Возможность доступа по невыровненным адресам определяется версией архитектуры процессора и несколькими управляющими битами. Подробнее об этом будет сказано ниже в соответствующем подразделе.
При порядке BE-32 старший байт полуслова, выровненного по границе полуслова и расположенного по адресу A (он будет кратен 2), находится по адресу A, а младший байт — по адресу A+1. Старший байт слова, выровненного на границу слова и расположенного по адресу A (он будет кратен 4), находится по адресу A, следующий за ним байт — по адресу A+1, третий байт — по адресу A+2 и четвёртый, самый младший байт — по адресу A+3.
Если осуществляется доступ к нескольким словам подряд (например, выполняется считывание двойного слова), то адрес младшего слова будет равен A, следующего за ним — A+4 и так далее, т.е. слова идут в порядке «младший-старший», как и при порядке LE, хотя байты в них расположены в порядке «старший-младший». Именно это обстоятельство подчёркивается в названии данного порядка следования байтов: «старший-младший» с постоянным положением слов.
Возможность доступа по невыровненным адресам определяется версией архитектуры процессора и несколькими управляющими битами. Подробнее об этом будет сказано ниже в соответствующем подразделе.
Как уже указывалось, порядок BE-8 появился в версии ARMv6 и распространяется только на доступы к данным; когда он активен, выборка инструкций производится в соответствии с порядком LE.
В отличие от порядка BE-32, порядок BE-8 не влияет на адреса байтов в памяти: они остаются одинаковыми в порядках LE и BE-8 (именно это подчёркивается названием: порядок «старший-младший» с постоянным положением байтов). Вместо этого при включении режима BE-8 информация, передаваемая между памятью и регистрами процессора, переворачивается «с ног на голову», что и создаёт эффект доступа с порядком следования байтов «старший-младший». Таким образом, младший байт полуслова, расположенного по адресу A, физически находится по адресу A, а старший байт — по адресу A+1, однако в регистре они будут расположены в разрядах 15:8 и 7:0 соответственно. Аналогичным образом, младший байт слова, расположенного по адресу A, физически находится по адресу A, следующий за ним байт — по адресу A+1, третий байт — по адресу A+2 и четвёртый, самый старший байт — по адресу A+3, однако в регистре они займут разряды соответственно 31:24, 23:16, 15:8 и 7:0.
Многословные доступы осуществляются как последовательность обращений к отдельным словам с последовательным увеличением адресов слов. Таким образом, положение слов при порядках BE-8 и LE тоже будет одинаковым.
Возможность доступов по невыровненным адресам зависит от режима работы процессора; подробнее это описывается в одном из следующих подразделов.
Архитектура ARM традиционно рассчитана на осуществление доступов к памяти по правильно выровненным адресам: это проще в реализации, а также обеспечивает наивысшую производительность. Тем не менее, в определённых ситуациях она позволяет осуществлять обращения к данным по невыровненным адресам. Инструкции всегда должны быть выровнены на правильную границу: команды набора ARM располагаются по границе слова, а команды набора Thumb — по границе полуслова.
Инструкции чтения и записи двойного слова (LDRD и STRD) при обращении по невыровненному адресу дают непредсказуемый результат.
Невыровненные доступы к словам и полусловам подчиняются следующим правилам:
Процессоры архитектуры ARMv6 всегда имеют в своём составе сопроцессор CP15, поэтому позволяют включать или отключать контроль выравнивания (бит A) по мере надобности. Кроме того, у них появился ещё один управляющий бит, U, который позволяет разрешить невыровненные доступы к словам и полусловам в командах LDRH, LDRSH, LDR, LDRT, STRH, STR и STRT набора ARM и их аналогов набора Thumb, а также ослабить контроль выравнивания для команд доступа к двойным словам LDRD и STRD (при установленном бите U задаваемый в них адрес должен быть кратен слову, а при сброшенном – двойному слову). Доступы к памяти в других инструкциях всегда должны быть выровненными независимо от состояния бита U.
Подробнее о выполнении различных видов доступов к памяти будет сказано в одном из следующих подразделов.