Поиск по сайту: |
|
По базе: |
|
Главная страница > Обзоры по типам > Микроконтроллеры > ARM > ARM7TDMI |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Временные диаграммы циклов инструкцийВ данном разделе описываются циклы инструкций процессора ARM7TDMI в следующей последовательности:
1. Общие сведения о таблицах временных диаграмм циклов инструкций В следующих таблицах:
2. Переход и переход по ссылке Инструкция перехода вычисляет назначение перехода в первом цикле, выполняя предварительную выборку по текущему значению счетчика программы (PC). Данная предварительная выборка выполняется во всех случаях, т.к. по истечении времени, в течение которого будет выполняться переход, будет уже невозможно предотвратить предварительную выборку. В течение второго цикла выборка выполняется из места назначения перехода и возвращается адрес, сохраненный в регистре 14, если бит ссылки установлен. В третьем цикле выполняется выборка из места назначения +L, перезаполняя конвейер инструкций. Если инструкцией является переход по ссылке (R14 модифицируется), то из R14 необходимо вычесть 4 для упрощения инструкции возврата с SUB PC,R14,#4 на MOV PC,R14. Это позволяет подпрограммам поместить R14 в стек и извлечь его непосредственно в PC по завершении подпрограммы. Во временных диаграммах циклов, представленных в таблице 6.1. используются следующие обозначения:
Таблица 6.1. Циклы инструкции перехода
Прим.: переход по ссылке не доступен в состоянии Thumb. 3. Thumb-переход по ссылке Операция Thumb-перехода по ссылке состоит из двух последовательных Thumb-инструкций. Более детальная информация приведена в "ARM Architecture Reference Manual" (Справочное руководство по архитектуре ARM). Первая инструкция выполняется как обычная операция с данными для сложения PC с верхней частью смещения и с запоминанием результата в регистре 14 (LR). Вторая инструкция в первом цикле действует подобно инструкции перехода по ссылке в состоянии ARM. Таким образом, в первом цикле вычисляется место назначения перехода, при этом, выполняя предварительную выборку по текущему значению PC. Во втором цикле второй инструкции выполняется выборка из места назначения перехода, а адрес возврата запоминается в R14. Во время третьего цикла второй инструкции выполняется выборка из места назначения перехода +2, тем самым, перезаполняя конвейер инструкции, R14 модифицируется вычитанием из его содержимого 2 для упрощения возврата с помощью MOV PC, R14. Это делает корректной работу подпрограмм PUSH {..,LR} ; POP {..,PC} - типа. Полная временная диаграмма представлена в таблице 6.2, где:
Таблица 6.2. Длинный Thumb-переход по ссылке
4. Переход и обмен Операция перехода и обмена (BX) требует для выполнения трех циклов и выполняется аналогично переходу. В первом цикле место назначения перехода и новое состояние ядра извлекаются из регистра-источника, при этом, выполняя выборку по текущему значению PC. Данная предварительная выборка выполняется во всех случаях, т.к. по истечении времени, которое потребуется на выполнение перехода, будет уже невозможно предотвратить предварительную выборку. В ходе второго цикла, выборка выполняется по адресу места назначения перехода с помощью инструкции нового размера, который зависит от выбранного состояния. В третьем цикле выполняется выборка по адресу назначения +2 или +4 (в зависимости от состояния), перезаполняя конвейер инструкций. Временная диаграмма циклов представлена в таблице 6.3, где:
Таблица 6.3. Циклы инструкции перехода и обмена
5. Операции с данными Операция с данными выполняется в одном цикле передачи данных, кроме ситуации, когда в содержимом регистра задан сдвиг. Регистр считывается на шину А, а второй регистр или поле константы - на шину B (см. рисунок 1.3). АЛУ выполняет операцию над источником на шине А и сдвинутым источником на шине B в соответствии с операцией, заданной инструкцией, а затем, если требуется, помещает результат в регистр назначения. Прим.: Операции сравнения и тестирования не формируют результата, а влияют только на флаги статуса АЛУ. Предварительная выборка инициируется одновременно с операцией с данными и инкрементируется счетчик программы. Если длина сдвига задана регистром, то в течение этого цикла инициируется еще один дополнительный цикл передачи данных. Операция с данными выполняется в следующем цикле, который является внутренним и не требует доступа к памяти. Внутренний цикл может быть объединен менеджером памяти со следующим последовательным доступом, т.к. адрес поддерживается стабильным в течение обеих циклов. PC может выступать в качестве одного или более регистров-операндов. Если он выступает в роли назначения, то активность внешней шины может быть нарушена. Если результат помещен в PC, то содержимое конвейера инструкций является недействительным и адрес для предварительной выборки следующей инструкции берется из АЛУ, а не из инкрементора адреса. Конвейер инструкций перезаполняется перед любым дальнейшим выполнением инструкции и в течение этого времени игнорируются все исключительные ситуации. Операции передачи PSR (MSR и MRS) обладают теми же характеристиками временной диаграммы, что и операции с данными, кроме PC, который в этом случае никогда не используется в качестве регистра источника или назначения. Временные диаграммы циклов представлены в таблице 6.4, где:
Таблица 6.4. Циклы инструкций операций с данными
Прим.: операции со сдвинутым регистром, когда PC выступает в роли назначения, являются недоступными в состоянии Thumb. 6. Умножение и умножение-накопление Инструкции умножения используют специальную аппаратную логику, которая выполняет целочисленное умножение с преждевременным завершением. Все циклы, кроме первого, являются внутренними. Временные диаграммы циклов представлены в следующих таблицах:
В таблицах 6.5-6.8 "m" представляет число циклов, требуемое алгоритмом умножения. Таблица 6.5. Циклы инструкции умножения
Таблица 6.6. Циклы инструкции умножение-накопление
Таблица 6.7. Циклы инструкции умножения длинных значений
Таблица 6.8. Циклы инструкции умножения-накопления длинных значений
Прим.: умножение-накопление, умножение длинных значений и умножение-накопление длинных значений не поддерживаются в состоянии Thumb. 7. Считывание регистра В первом цикле инструкции считывания регистра выполняется вычисление адреса. В ходе второго цикла данные считываются из памяти и, при необходимости, выполняется модификация основного регистра. В течение третьего цикла данные передаются в регистр назначения, внешняя память не используется. Данный третий цикл можно объединить со следующим циклом предварительной выборки для образования одного N-цикла памяти. PC может выступать в качестве основного регистра, регистра назначения или сразу обеих этих регистров. В этом случае, если изменяется содержимое PC, то также изменяется последовательность предварительной выборки. Выборка данных может быть прервана и в этом случае модификация назначения предотвращается. Кроме того, если процессор сконфигурирован на преждевременное прекращение, то также предотвращается обратная запись основного регистра. Временная диаграмма циклов представлена в таблице 6.9, где:
Таблица 6.9. Циклы инструкции загрузки регистра
Прим.: операции, в которых PC используется в качестве назначения, не поддерживаются в состоянии Thumb. Таблица 6.10. Кодирование сигналов MAS[1:0]
8. Запись регистра Первый цикл инструкции записи регистра аналогичен первому циклу инструкции считывания регистра. В течение второго цикла выполняется модификация основного регистра, а также выполняется запись в память. Третий цикл отсутствует. Временная диаграмма циклов представлена в таблице 6.11, где:
Таблица 6.11. Циклы инструкции записи регистра
9. Считывание нескольких регистров Первый цикл инструкции LDM используется для вычисления адреса первого слова, при этом, выполняя предварительную выборку из памяти. Во втором цикле выполняется выборка первого слова и модификация основного регистра. В ходе третьего цикла первое слово перемещается в соответствующий регистр назначения, при этом, выполняется выборка второго слова из памяти, а, в случае необходимости восстановить состояние процессора после возникновения аварийной ситуации, модифицированный основной регистр фиксируется внутренне. Третий цикл является повторяемым для выполнения последовательных выборок вплоть до чтения последнего слова данных, когда последний (внутренний цикл) копирует последнее слово в регистр назначения. Временные диаграммы циклов представлены в таблице 6.12. Последний цикл может быть объединен со следующей предварительной выборкой для образования одного N-цикла памяти. Если возникает аварийная ситуация, то инструкция завершит свое выполнение, но модификация всех регистров будет предотвращена. Последний цикл выполняется для восстановления модифицированного основного регистра (который мог быть перезаписан активностью чтения перед возникновением аварийной ситуации). Если PC присутствует в списке регистров, то текущий конвейер инструкций может стать недействительным. Прим.: PC должен быть всегда последним регистром, т.к. в этом случае возникновение аварийной ситуации в любой точке исполнения инструкции предотвратит перезапись PC. LDM с PC в качестве назначения на поддерживается в состоянии Thumb. Для выполнения этой функции необходимо использовать POP{Rlist,PC}. Таблица 6.12. Циклы инструкции считывания нескольких регистров
10. Запись нескольких регистров Инструкция записи нескольких регистров выполняется подобно инструкции чтения нескольких регистров, но без последнего цикла. Обработка аварийных ситуаций выполняется более просто, т.к. не выполняется масштабная перезапись регистров. Временная диаграмма циклов представлена в таблице 6.13, где:
Таблица 6.13. Циклы инструкции записи нескольких регистров
11. Обмен данными Исполнение аналогично инструкциям чтения и записи регистра, но фактический обмен выполняется во втором и третьем циклах. Во втором цикле данные считываются из внешней памяти. В третьем цикле содержимое регистра-источника передается во внешнюю память. Данные, которые были считаны во втором цикле, записываются в регистр назначения в четвертом цикле. LOCK принимает высокий уровень в течение второго и третьего циклов для индикации, что эти циклы должны завершиться без прерывания. В качестве обмениваемых данных может выступать байт или слово. Обмен полусловами не поддерживается. Операция обмена может быть прервана в цикле чтения или записи, в обоих случаях регистр назначения не нарушается. Временные диаграммы циклов представлены в таблице 6.14, где:
Таблица 6.14. Циклы инструкции обмена данными
Прим: операция обмена данными не поддерживается в состоянии Thumb. 12. Вход в программное прерывание и исключительную ситуацию Исключительные ситуации, в т.ч. программные прерывания, приводят к загрузке в PC соответствующего значения и перезаполнению конвейера инструкций. В течение первого цикла вычисляется адрес перехода и изменяется режим работы. Адрес возврата перемещается в R14, а CPSR в SPSR_svc. В течение второго цикла адрес возврата модифицируется для упрощения возврата, хотя данная модификация менее полезна, чем в случае инструкции перехода по ссылке. Третий цикл требуется только для завершения перезаполнения конвейера инструкций. Временная диаграмма представлена в таблице 6.15, где:
Таблица 6.15. Циклы инструкции программногопрерывания
13. Операция с данными сопроцессора Операция с данными сопроцессора - запрос из ядра на инициацию некоторого действия. На выполнение данного действия не отводится некоторое фиксированное время, но сопроцессор должен подтвердить возможность выполнения действия установкой низкого уровня CPB. Если сопроцессор не способен выполнить запрашиваемую задачу, он должен оставить выходы CPA и CPB в высоком состоянии. Если он может выполнить задачу, но не может ее выполнить в данный момент, то он должен установить низкий уровень на CPA и оставить CPB в высоком состоянии до момента, когда он сможет выполнить задачу. Ядро ожидает состояние занятости до установки низкого уровня на CPB. Временная диаграмма представлена в таблице 6.16, где:
Таблица 6.16. Циклы инструкции операции с данными сопроцессора
Прим: операции с данными сопроцессора не поддерживаются в состоянии Thumb. 14. Передача данных сопроцессора из памяти в сопроцессор Для инструкций передачи из памяти в сопроцессор последний должен принять передачу данных, только если он готов принять данные. Когда CPB принимает низкий уровень, процессор генерирует адреса и ожидает получение сопроцессором данных на скорости последовательных циклов. Сопроцессор отвечает за определение количества передаваемых слов и индицирует последний цикл передачи путем установки высоких уровней на CPA и CPB. Процессор ARM7TDMI использует первый цикл (а также любые циклы ожидания занятости) для генерации адресов передачи и обновляет основной адрес в течение циклов передачи. Временная диаграмма представлена в таблице 6.17, где:
Таблица 6.17. Циклы инструкции передачи данных сопроцессора
Прим.: операции передачи данных сопроцессора не поддерживаются в состоянии Thumb. 15. Передача данных сопроцессора из сопроцессора в память Процессор ARM7TDMI управляет данными инструкциями также как и передачей из памяти в сопроцессор за тем исключением, что линия nRW инвертирована в течение цикла передачи. Временная диаграмма представлена в таблице 6.18, где:
Таблица 6.28. Циклы инструкций передачи данных сопроцессора
Прим.: операции передачи данных сопроцессора не поддерживаются в состоянии Thumb. 16. Передача регистра сопроцессора, чтение из сопроцессора Циклы ожидания занятости аналогичны описанным в Передача данных сопроцессора из памяти в сопроцессор, но передача ограничивается одним словом и ядро ARM7TDMI помещает данные в регистр назначения в третьем цикле. Третий цикл может быть объединен со следующим циклом предварительной выборки в один N-цикл памяти, как и в случае всех остальных инструкций чтения процессорных регистров. Временная диаграмма представлена в таблице 6.19, где:
Таблица 6.19. Передача регистра сопроцессора, чтение из сопроцессора
Прим.: операции передачи регистра сопроцессора не поддерживаются в состоянии Thumb. 17. Передача регистра сопроцессора, запись в сопроцессор Операция аналогична, описанной в Передача регистра сопроцессора, чтение из сопроцессора, за исключением того, что последний цикл исключен. Временная диаграмма представлена в таблице 6.20, где:
Таблица 6.20. Передача регистра сопроцессора, запись в сопроцессор
Прим.: операции передачи регистра сопроцессора не поддерживаются в состоянии Thumb. 18. Неопределенные инструкции и отсутствие сопроцессора Если процессор выполняет попытку исполнения инструкции, которая ни им, ни сопроцессором не может быть выполнена, в т.ч. все неопределенные инструкции, то это вызывает выполнение последовательности неопределенной инструкции. Временная диаграмма представлена в таблице 6.21, где:
Таблица 6.21. Циклы выполнения неопределенной инструкции
Прим.:
19. Неисполняемые инструкции Любая инструкция, код условия которой не выполняется, не исполняется и добавляется один цикл ко времени выполнения сегмента кода, в который она входит (см. табл. 6.22). Таблица 6.22. Выполнение неисполняемой инструкции
20. Итоговая информация по быстродействию инструкций Благодаря конвейеризованной архитектуре ЦПУ возможно наложение инструкций. В типичном цикле одна инструкция может использовать канал данных, при этом, следующая инструкция может дешифрироваться, а еще одна вслед за этой - загружаться из памяти программ. По этой причине в таблице 6.23 представляется возрастающее количество циклов, требуемое инструкцией, а не общее количество циклов, в течение которого инструкция использует часть процессора. Общее время, выраженное в циклах, для подпрограммы может быть вычислено с помощью выражений из таблицы 6.23. В данных выражениях полагается, что инструкция является выполняемой. Неисполняемые инструкции требуют один цикл. Если условие не выполняется, то все инструкции используют один S-цикл. Циклы типов N, S, I и C описаны в параграфе Типы шинных циклов. В таблице 6.23:
Таблица 6.23. Итоговая информация по быстродействию инструкций ARM
Главная - Микросхемы - DOC - ЖКИ - Источники питания - Электромеханика - Интерфейсы - Программы - Применения - Статьи |
|
Впервые? | Реклама на сайте | О проекте | Карта портала тел. редакции: +7 (995) 900 6254. e-mail:info@eust.ru ©1998-2023 Рынок Микроэлектроники |
|