2. Архитектура ядра ARM7TDMI
Процессор ARM7TDMI поддерживает два набора инструкций:
- 32-разрядный набор инструкций ARM;
- 16-разрядный набор инструкций Thumb.
Процессор ARM7TDMI является разновидностью архитектуры ARMv4T. Более детально о наборах инструкций ARM и Thumb можно узнать в "ARM Architecture Reference Manual" (справочное руководство по архитектуре ARM).
В данном разделе описывается:
- Сжатие инструкций;
- Набор инструкций Thumb.
2.1 Сжатие инструкций
Микропроцессорные архитектуры, как правило, используют набор инструкций той же разрядности, что и данные. Следовательно, 32-разрядные архитектуры обладают улучшенными характеристиками обработки 32-разрядных данных и могут более эффективно адресовать большие адресные пространства по сравнению с 16-разрядными архитектурами. 16-разрядные архитектуры в большинстве случаев обладают более высокой плотностью кода, но приблизительно вдвое уступают по производительности.
Thumb реализует 16-разрядный набор инструкций в составе 32-разрядной архитектуры, который обеспечивает:
- более высокую производительность по сравнению с 16-разрядной архитектурой
- более высокую плотность кода по сравнению с 32-разрядной архитектурой.
2.2 Набор инструкций Thumb
Набор инструкций Thumb является выборкой наиболее часто используемых 32-разрядных инструкций ARM. Thumb-инструкции характеризуются размером 16 бит и имеют соответствующую 32-разрядную инструкцию ARM. Соответствующие инструкции оказывают одинаковое влияние на модель процессора. Thumb-инструкции работают со стандартной конфигурацией ARM-регистра, обеспечивая превосходное взаимодействие между состояниями ARM и Thumb.
В процессе выполнения 16-разрядная инструкция подвергается декомпрессии в реальном времени до полных 32-разрядных инструкций ARM без потери производительности.
Thumb наследует все преимущества 32-разрядного ядра:
- 32-разрядное адресное пространство
- 32-разрядные регистры
- 32-разрядное сдвиговое устройство и арифметико-логического устройство (АЛУ)
- Пересылка в память 32-разрядных данных.
Следовательно, инструкции Thumb характеризуются большим диапазоном перехода, мощными арифметическими операциями и большим адресным пространством.
Код Thumb обычно занимает 65% от ARM-кода и достигает 160% производительности ARM-кода при исполнении из 16-разрядной системы памяти. Следовательно, Thumb, делает ядро ARM7TDMI идеально подходящим во встраиваемые приложения, где в качестве критичных параметров выступают плотность кода и габариты.
Доступность обоих наборов инструкций, 16-разрядного Thumb и 32-разрядного ARM, дает разработчикам гибкость по оптимизации быстродействия или размера кода на уровне процедуры в соответствии с требованиями к их приложению. Например, критические циклы в таких приложениях, как обработка часто возникающих прерываний и алгоритмы цифровой обработки сигналов, могут кодироваться с помощью полных ARM-инструкций, а затем линкована Thumb-кодом.
|