В HTML      В PDF
микроэлектроника, микросхема, транзистор, диод, микроконтроллер, память, msp430, Atmel, Maxim, LCD, hd44780, t6963, sed1335, avr, mega128
Предприятия Компоненты Документация Применения Статьи Новости

 
Пересюхтюмя


13-я Международная выставка электронных компонентов и комплектующих для электронной промышленности





Выставка Передовые Технологии Автоматизации





Главная страница > Обзоры по типам > Микроконтроллеры > ARM > ARM7TDMI
Пересюхтюмя


13-я Международная выставка электронных компонентов и комплектующих для электронной промышленности





Выставка Передовые Технологии Автоматизации


Временные диаграммы циклов инструкций

В данном разделе описываются циклы инструкций процессора ARM7TDMI в следующей последовательности:

1. Общие сведения о таблицах временных диаграмм циклов инструкций

В следующих таблицах:

  • nMREQ и SEQ имеют конвейерную организацию, опережая цикл, к которому они относятся, на один цикл. Они показываются в цикле, в котором они возникают, и индицируют тип следующего цикла.
  • Сигналы адреса, MAS[1:0], nRW, nOPC, nTRANS и TBIT возникают до полуцикла ранее и показываются в цикле, к которому они относятся. В большинстве случаев адрес инкрементируется для выборки инструкции. Поскольку размер инструкций в состоянии ARM равен 4 байтам, а в состоянии Thumb - 2 байтам, то инкрементирование выполняется с соответствующим приращением.
  • Символ "L" используется для индикации длины инструкции:
    - четыре байта в состоянии ARM
    - два байта в состоянии Thumb.
  • Символ "i" используется для индикации ширины выхода выборки инструкции сигналами MAS[1:0]:
    - i=2 указывает на доступ в словном формате в состоянии ARM;
    - i=1 указывает на доступ в полусловном формате в состоянии Thumb.
  • Запись внутри скобок представляет содержимое адреса.
  • Символ "·" индицирует ноль или более циклов.

2. Переход и переход по ссылке

Инструкция перехода вычисляет назначение перехода в первом цикле, выполняя предварительную выборку по текущему значению счетчика программы (PC). Данная предварительная выборка выполняется во всех случаях, т.к. по истечении времени, в течение которого будет выполняться переход, будет уже невозможно предотвратить предварительную выборку.

В течение второго цикла выборка выполняется из места назначения перехода и возвращается адрес, сохраненный в регистре 14, если бит ссылки установлен.

В третьем цикле выполняется выборка из места назначения +L, перезаполняя конвейер инструкций. Если инструкцией является переход по ссылке (R14 модифицируется), то из R14 необходимо вычесть 4 для упрощения инструкции возврата с SUB PC,R14,#4 на MOV PC,R14. Это позволяет подпрограммам поместить R14 в стек и извлечь его непосредственно в PC по завершении подпрограммы.

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

  • pc - адрес инструкции перехода
  • alu - адрес места назначения, вычисленный ядром ARM7TDMI
  • (alu) - содержимое этого адреса.

Таблица 6.1. Циклы инструкции перехода

Цикл Адрес MAS[1:0] nRW Данные nMREQ SEQ nOPC
1 pc+2L i 0 (pc+2L) 0 0 0
2 alu i 0 (alu) 0 1 0
3 alu+L i 0 (alu+L) 0 1 0
  alu+2L            

Прим.: переход по ссылке не доступен в состоянии 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, где:

  • pc -адрес первой инструкции данной операции.

Таблица 6.2. Длинный Thumb-переход по ссылке

Цикл Адрес MAS[1:0] nRW Данные nMREQ SEQ nOPC
1 pc+4 1 0 (pc+4) 0 1 0
2 pc+6 1 0 (pc+6) 0 0 0
3 alu 1 0 (alu) 0 1 0
4 alu+2 1 0 (alu+2) 0 1 0
  alu+4            

4. Переход и обмен

Операция перехода и обмена (BX) требует для выполнения трех циклов и выполняется аналогично переходу. В первом цикле место назначения перехода и новое состояние ядра извлекаются из регистра-источника, при этом, выполняя выборку по текущему значению PC. Данная предварительная выборка выполняется во всех случаях, т.к. по истечении времени, которое потребуется на выполнение перехода, будет уже невозможно предотвратить предварительную выборку.

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

Временная диаграмма циклов представлена в таблице 6.3, где:

  • "W" и "w" представляют ширину инструкции до и после BX, соответственно. Ширина равна четырем байтам в состоянии ARM и двум байтам в состоянии Thumb. Например, при изменении состояния с ARM на Thumb, W равно 4, а w равно 2.
  • "I" и "i" представляют размер доступа к памяти до и после BX, соответственно. MAS[1:0] равны 2 в состоянии ARM и 1 в состоянии Thumb. При изменении состояния с Thumb на ARM I будет равно 1, а i - двум.
  • T и t представляют состояние TBIT до и после BX, соответственно. TBIT равен 0 в состоянии ARM и 1 в состоянии Thumb. При изменении состояния с ARM на Thumb T = 0, а t = 1.

Таблица 6.3. Циклы инструкции перехода и обмена

Цикл Адрес MAS[1:0] nRW Данные nMREQ SEQ nOPC TBIT
1 pc + 2W I 0 (pc+2W) 0 0 0 T
2 alu i 0 (alu) 0 1 0 t
3 alu+w i 0 (alu+w) 0 1 0 t
  alu + 2w              

5. Операции с данными

Операция с данными выполняется в одном цикле передачи данных, кроме ситуации, когда в содержимом регистра задан сдвиг. Регистр считывается на шину А, а второй регистр или поле константы - на шину B (см. рисунок 1.3). АЛУ выполняет операцию над источником на шине А и сдвинутым источником на шине B в соответствии с операцией, заданной инструкцией, а затем, если требуется, помещает результат в регистр назначения.

Прим.: Операции сравнения и тестирования не формируют результата, а влияют только на флаги статуса АЛУ.

Предварительная выборка инициируется одновременно с операцией с данными и инкрементируется счетчик программы.

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

PC может выступать в качестве одного или более регистров-операндов. Если он выступает в роли назначения, то активность внешней шины может быть нарушена. Если результат помещен в PC, то содержимое конвейера инструкций является недействительным и адрес для предварительной выборки следующей инструкции берется из АЛУ, а не из инкрементора адреса. Конвейер инструкций перезаполняется перед любым дальнейшим выполнением инструкции и в течение этого времени игнорируются все исключительные ситуации.

Операции передачи PSR (MSR и MRS) обладают теми же характеристиками временной диаграммы, что и операции с данными, кроме PC, который в этом случае никогда не используется в качестве регистра источника или назначения.

Временные диаграммы циклов представлены в таблице 6.4, где:

  • pc - адрес инструкции перехода;
  • alu - адрес назначения, вычисленный ядром ARM7TDMI;
  • (alu) - содержимое этого адреса.

Таблица 6.4. Циклы инструкций операций с данными

Тип операции Цикл Адрес MAS[1:0] nRW Данные nMREQ SEQ nOPC
normal 1 pc+2L i 0 (pc+2L) 0 1 0
  pc+3L            
dest=pc 1 pc+2L i 0 (pc+2L) 0 0 0
2 alu i 0 (alu) 0 1 0
3 alu+L i 0 (alu+L) 0 1 0
  alu+2L            
shift(Rs) 1 pc+2L i 0 (pc+2L) 1 0 0
2 pc+3L i 0 - 0 1 1
  pc+3L            
shift(Rs) dest=pc 1 pc+8 2 0 (pc+8) 1 0 0
2 pc+12 2 0 - 0 0 1
3 alu 2 0 (alu) 0 1 0
4 alu+4 2 0 (alu+4) 0 1 0
  alu+8            

Прим.: операции со сдвинутым регистром, когда PC выступает в роли назначения, являются недоступными в состоянии Thumb.

6. Умножение и умножение-накопление

Инструкции умножения используют специальную аппаратную логику, которая выполняет целочисленное умножение с преждевременным завершением. Все циклы, кроме первого, являются внутренними.

Временные диаграммы циклов представлены в следующих таблицах:

  • циклы инструкции умножения представлены в таблице 6.5;
  • циклы инструкции умножения-накопления представлены в таблице 6.6;
  • циклы инструкции умножения длинных значений представлены в таблице 6.7;
  • циклы инструкции умножения-накопления длинных значений представлены в таблице 6.8.;

В таблицах 6.5-6.8 "m" представляет число циклов, требуемое алгоритмом умножения.

Таблица 6.5. Циклы инструкции умножения

Цикл Адрес nRW MAS[1:0] Данные nMREQ SEQ nOPC
1 pc+2L 0 i (pc+2L) 1 0 0
2 pc+3L 0 i - 1 0 1
  • pc+3L 0 i - 1 0 1
    m pc+3L 0 i - 1 0 1
    m+1 pc+3L 0 i - 0 1 1
      pc+3L            

    Таблица 6.6. Циклы инструкции умножение-накопление

    Цикл Адрес nRW MAS[1:0] Данные nMREQ SEQ nOPC
    1 pc+8 0 2 (pc+8) 1 0 0
    2 pc+8 0 2 - 1 0 1
  • pc+12 0 2 - 1 0 1
    m pc+12 0 2 - 1 0 1
    m+1 pc+12 0 2 - 1 0 1
    m+2 pc+12 0 2 - 0 1 1
      pc+12            

    Таблица 6.7. Циклы инструкции умножения длинных значений

    Цикл Адрес nRW MAS[1:0] Данные nMREQ SEQ nOPC
    1 pc+8 0 i (pc+8) 1 0 0
    2 pc+12 0 i - 1 0 1
  • pc+12 0 i - 1 0 1
    m pc+12 0 i - 1 0 1
    m+1 pc+12 0 i - 1 0 1
    m+2 pc+12 0 i - 0 1 1
      pc+12            

    Таблица 6.8. Циклы инструкции умножения-накопления длинных значений

    Цикл Адрес nRW MAS[1:0] Данные nMREQ SEQ nOPC
    1 pc+8 0 2 (pc+8) 1 0 0
    2 pc+8 0 2 - 1 0 1
  • pc+12 0 2 - 1 0 1
    m pc+12 0 2 - 1 0 1
    m+1 pc+12 0 2 - 1 0 1
    m+2 pc+12 0 2 - 1 0 1
    m+3 pc+12 0 2 - 0 1 1
      pc+12            

    Прим.: умножение-накопление, умножение длинных значений и умножение-накопление длинных значений не поддерживаются в состоянии Thumb.

    7. Считывание регистра

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

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

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

    Временная диаграмма циклов представлена в таблице 6.9, где:

    • "c" представляет текущий режим процессора:
      - c=0 в пользовательском режиме
      - c=1 во всех остальных режимах
    • d=0, если T-бит задан в инструкции (например, LDRT), d=c во всех остальных случаях
    • s определяет размер передачи данных, индицируемый сигналами MAS[1:0] (см. табл. 6.10).

    Таблица 6.9. Циклы инструкции загрузки регистра

    Тип операции Цикл Адрес MAS[1:0] nRW Данные nMREQ SEQ nOPC nTRANS
    normal 1 pc+2L i 0 (pc+2L) 0 0 0 c
    2 alu s 0 (alu) 1 0 1 d
    3 pc+3L i 0 - 0 1 1 c
      pc+3L              
    dest=pc 1 pc+8 2 0 (pc+8) 0 0 0 c
    2 alu 0 pc' 1 0 1 d
    3 pc+12 2 0 - 0 0 1 c
    4 pc' 2 0 (pc') 0 1 0 c
    5 pc'+4 2 0 (pc'+4) 0 1 0 c
      pc'+8              

    Прим.: операции, в которых PC используется в качестве назначения, не поддерживаются в состоянии Thumb.

    Таблица 6.10. Кодирование сигналов MAS[1:0]

    Бит 1 Бит 0 Размер данных
    0 0 байт
    0 1 полуслово
    1 0 слово
    1 1 зарезервир.

    8. Запись регистра

    Первый цикл инструкции записи регистра аналогичен первому циклу инструкции считывания регистра. В течение второго цикла выполняется модификация основного регистра, а также выполняется запись в память. Третий цикл отсутствует.

    Временная диаграмма циклов представлена в таблице 6.11, где:

    • c представляет текущий процессорный режим:
      - c=0 в пользовательском режиме
      - c=1 во всех остальных режимах
    • d=0, если T-бит задан инструкцией (например, LDRT), d=c во всех остальных случаях.
    • s определяет размер передачи данных, индицируемого сигналами MAS[1:0] (см. табл. 6.10).

    Таблица 6.11. Циклы инструкции записи регистра

    Цикл Адрес MAS[1:0] nRW Данные nMREQ SEQ nOPC nTRANS
    1 pc+2L i 0 (pc+2L) 0 0 0 c
    2 alu s 1 Rd 0 0 1 d
      pc+3L              

    9. Считывание нескольких регистров

    Первый цикл инструкции LDM используется для вычисления адреса первого слова, при этом, выполняя предварительную выборку из памяти. Во втором цикле выполняется выборка первого слова и модификация основного регистра. В ходе третьего цикла первое слово перемещается в соответствующий регистр назначения, при этом, выполняется выборка второго слова из памяти, а, в случае необходимости восстановить состояние процессора после возникновения аварийной ситуации, модифицированный основной регистр фиксируется внутренне. Третий цикл является повторяемым для выполнения последовательных выборок вплоть до чтения последнего слова данных, когда последний (внутренний цикл) копирует последнее слово в регистр назначения. Временные диаграммы циклов представлены в таблице 6.12.

    Последний цикл может быть объединен со следующей предварительной выборкой для образования одного N-цикла памяти. Если возникает аварийная ситуация, то инструкция завершит свое выполнение, но модификация всех регистров будет предотвращена. Последний цикл выполняется для восстановления модифицированного основного регистра (который мог быть перезаписан активностью чтения перед возникновением аварийной ситуации).

    Если PC присутствует в списке регистров, то текущий конвейер инструкций может стать недействительным.

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

    LDM с PC в качестве назначения на поддерживается в состоянии Thumb. Для выполнения этой функции необходимо использовать POP{Rlist,PC}.

    Таблица 6.12. Циклы инструкции считывания нескольких регистров

    Регистры назначения Цикл Адрес MAS[1:0] nRW Данные nMREQ SEQ nOPC
    Один регистр 1 pc+2L i 0 (pc+2L) 0 0 0
    2 alu 2 0 (alu) 1 0 1
    3 pc+3L i 0 - 0 1 1
      pc+3L            
    Один регистр, РС в роли назначения 1 pc+2L i 0 (pc+2L) 0 0 0
    2 alu 2 0 pc' 1 0 1
    3 pc+3L i 0 - 0 0 1
    4 pc' i 0 (pc') 0 1 0
    5 pc'+L i 0 (pc'+L) 0 1 0
      pc'+2L            
    n-регистров (n>1) 1 pc+2L i 0 (pc+2L) 0 0 0
    2 alu 2 0 (alu) 0 1 1
    alu+ 2 0 (alu+) 0 1 1
    n alu+ 2 0 (alu+) 0 1 1
    n+1 alu+ 2 0 (alu+) 1 0 1
    n+2 pc+3L i 0 - 0 1 1
      pc+3L            
    n-регистров (n>1), в т.ч. РС 1 pc+2L i 0 (pc+2L) 0 0 0
    2 alu 2 0 (alu) 0 1 1
    alu+ 2 0 (alu+) 0 1 1
    n alu+ 2 0 (alu+) 0 1 1
    n+1 alu+ 2 0 pc' 1 0 1
    n+2 pc+3L i 0 - 0 0 1
    n+3 pc' i 0 (pc') 0 1 0
    n+4 pc'+L i 0 (pc'+L) 0 1 0
      pc'+2L            

    10. Запись нескольких регистров

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

    Временная диаграмма циклов представлена в таблице 6.13, где:

    • Ra - первый заданный регистр;
    • R - последовательность заданных регистров.

    Таблица 6.13. Циклы инструкции записи нескольких регистров

    Регистр Цикл Адрес MAS[1:0] nRW Данные nMREQ SEQ nOPC
    Один регистр 1 pc+2L i 0 (pc+2L) 0 0 0
    2 alu 2 1 Ra 0 0 1
      pc+3L            
    n-регистров (n>1) 1 pc+8 i 0 (pc+2L) 0 0 0
    2 alu 2 1 Ra 0 1 1
    alu+ 2 1 Ro 0 1 1
    n alu+ 2 1 R 0 1 1
    n+1 alu+ 2 1 R 0 0 1
      pc+12            

    11. Обмен данными

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

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

    В качестве обмениваемых данных может выступать байт или слово. Обмен полусловами не поддерживается.

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

    Временные диаграммы циклов представлены в таблице 6.14, где:

    • "s" определяет размер передаваемых данных, индицируемый сигналами MAS[1:0] (см. табл. 6.10), Кроме того, "s" может задавать только передачу байт и слова. Передача полуслов не поддерживается.

    Таблица 6.14. Циклы инструкции обмена данными

    Цикл Адрес MAS [1:0] nRW Данные nMREQ SEQ nOPC LOCK
    1 pc+8 2 0 (pc+8) 0 0 0 0
    2 Rn байт/слово 0 (Rn) 0 0 1 1
    3 Rn байт/слово 1 Rm 1 0 1 1
    4 pc+12 2 0 - 0 1 1 0
      pc+12              

    Прим: операция обмена данными не поддерживается в состоянии Thumb.

    12. Вход в программное прерывание и исключительную ситуацию

    Исключительные ситуации, в т.ч. программные прерывания, приводят к загрузке в PC соответствующего значения и перезаполнению конвейера инструкций. В течение первого цикла вычисляется адрес перехода и изменяется режим работы. Адрес возврата перемещается в R14, а CPSR в SPSR_svc.

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

    Временная диаграмма представлена в таблице 6.15, где:

    • "pc":
      - адрес инструкции SWI для программных прерываний;
      - адрес аварийной инструкции для исключительной ситуации аварийной предварительной выборки;
      - адрес инструкции следующей за той инструкцией, которая выполнила попытку передачи аварийных данных для исключительной ситуации Авар. данных;
      - адрес инструкции вслед за последней выполненной перед вводом исключительной ситуации для всех остальных исключительных ситуаций;
    • "C" представляет текущее зависимое от режима значение;
    • "T" представляет текущее зависимое от состояния значение;
    • Xn - соответствующий адрес перехода.

    Таблица 6.15. Циклы инструкции программногопрерывания

    Цикл Адрес MAS [1:0] nRW Данные nMREQ SEQ nOPC nTRANS Режим TBIT
    1 pc+2L i 0 (pc+2L) 0 0 0 C предыдущ. T
    2 Xn 2 0 (Xn) 0 1 0 1 искл. ситуация 0
    3 Xn+4 2 0 (Xn+4) 0 1 0 1 искл. ситуация 0
      Xn+8                  

    13. Операция с данными сопроцессора

    Операция с данными сопроцессора - запрос из ядра на инициацию некоторого действия. На выполнение данного действия не отводится некоторое фиксированное время, но сопроцессор должен подтвердить возможность выполнения действия установкой низкого уровня CPB.

    Если сопроцессор не способен выполнить запрашиваемую задачу, он должен оставить выходы CPA и CPB в высоком состоянии. Если он может выполнить задачу, но не может ее выполнить в данный момент, то он должен установить низкий уровень на CPA и оставить CPB в высоком состоянии до момента, когда он сможет выполнить задачу. Ядро ожидает состояние занятости до установки низкого уровня на CPB.

    Временная диаграмма представлена в таблице 6.16, где:

    • "b" определяет количество циклов занятости сопроцессора.

    Таблица 6.16. Циклы инструкции операции с данными сопроцессора

    Статус сопроцессора Цикл Адрес nRW MAS [1:0] Данные nMREQ SEQ nOPC nCPI CPA CPB
    готов 1 pc+8 0 2 (pc+8) 0 0 0 0 0 0
      pc+12                  
    не готов 1 pc+8 0 2 (pc+8) 1 0 0 0 0 1
    2 pc+8 0 2 - 1 0 1 0 0 1
    pc+8 0 2 - 1 0 1 0 0 1
    b pc+8 0 2 - 0 0 1 0 0 0
      pc+12                  

    Прим: операции с данными сопроцессора не поддерживаются в состоянии Thumb.

    14. Передача данных сопроцессора из памяти в сопроцессор

    Для инструкций передачи из памяти в сопроцессор последний должен принять передачу данных, только если он готов принять данные. Когда CPB принимает низкий уровень, процессор генерирует адреса и ожидает получение сопроцессором данных на скорости последовательных циклов. Сопроцессор отвечает за определение количества передаваемых слов и индицирует последний цикл передачи путем установки высоких уровней на CPA и CPB. Процессор ARM7TDMI использует первый цикл (а также любые циклы ожидания занятости) для генерации адресов передачи и обновляет основной адрес в течение циклов передачи.

    Временная диаграмма представлена в таблице 6.17, где:

    • "b" определяет циклы занятости;
    • "n" определяет количество регистров.

    Таблица 6.17. Циклы инструкции передачи данных сопроцессора

    Состояние регистра сопроцессора Циклы Адрес MAS [1:0] nRW Данные nMREQ SEQ nOPC nCPI CPA CPB
    Готовность одного регистра 1 pc+8 2 0 (pc+8) 0 0 0 0 0 0
    2 alu 2 0 (alu) 0 0 1 1 1 1
      pc+12                  
    Неготовность одного регистра 1 pc+8 2 0 (pc+8) 1 0 0 0 0 1
    2 pc+8 2 0 - 1 0 1 0 0 1
    pc+8 2 0 - 1 0 1 0 0 1
    b pc+8 2 0 - 0 0 1 0 0 0
    b+1 alu 2 0 (alu) 0 0 1 1 1 1
      pc+12                  
    Готовность n-регистров (n>1) 1 pc+8 2 0 (pc+8) 0 0 0 0 0 0
    2 alu 2 0 (alu) 0 1 1 1 0 0
    alu+ 2 0 (alu+) 0 1 1 1 0 0
    n alu+ 2 0 (alu+) 0 1 1 1 0 0
    n+1 alu+ 2 0 (alu+) 0 10 1 1 1 1
      pc+12                  
    Неготовность n-регистров (n>1) 1 pc+8 2 0 (pc+8) 1 0 0 0 0 1
    2 pc+8 2 0 - 1 0 1 0 0 1
    pc+8 2 0 - 1 0 1 0 0 1
    b pc+8 2 0 - 0 0 1 0 0 0
    b+1 alu 2 0 (alu) 0 1 1 1 0 0
      alu+ 0 (alu+) 0 1 1 1 0 0
    n+b alu+ 2 0 (alu+) 0 1 1 1 0 0
    n+b+1 alu+ 2 0 (alu+) 0 0 1 1 1 1
      pc+12                  

    Прим.: операции передачи данных сопроцессора не поддерживаются в состоянии Thumb.

    15. Передача данных сопроцессора из сопроцессора в память

    Процессор ARM7TDMI управляет данными инструкциями также как и передачей из памяти в сопроцессор за тем исключением, что линия nRW инвертирована в течение цикла передачи.

    Временная диаграмма представлена в таблице 6.18, где:

    • "b" представляет циклы занятости;
    • "n" представляет число регистров.

    Таблица 6.28. Циклы инструкций передачи данных сопроцессора

    Состояние регистра сопроцессора Цикл Адрес MAS [1:0] nRW Данные nMREQ SEQ nOPC nCPI CPA CPB
    Готовность одного регистра 1 pc+8 2 0 (pc+8) 0 0 0 0 0 0
    2 alu 2 1 Данные СП 0 0 1 1 1 1
    - pc+12 - - - - - - - - -
    Неготовность одного регистра 1 pc+8 2 0 (pc+8) 1 0 0 0 0 1
    2 pc+8 2 0 - 1 0 1 0 0 1
    pc+8 2 0 - 1 0 1 0 0 1
    b pc+8 2 0 - 0 0 1 0 0 0
    b+1 alu 2 0 Данные СП 0 0 1 1 1 1
      pc+12                  
    Готовность n-регистров (n>1) 1 pc+8 2 0 (pc+8) 0 0 0 0 0 0
    2 alu 2 1 Данные СП 0 1 1 1 0 0
    alu+ 2 1 Данные СП 0 1 1 1 0 0
    n alu+ 2 1 Данные СП 0 1 1 1 0 0
    n+1 alu+ 2 1 Данные СП 0 0 1 1 1 1
      pc+12                  
    Неготовность n-регистров (n>1) 1 pc+8 2 0 (pc+8) 1 0 0 0 0 1
    2 pc+8 2 0 - 1 0 1 0 0 1
    pc+8 2 0 - 1 0 1 0 0 1
    b pc+8 2 0 - 0 0 1 0 0 0
    b+1 alu 2 1 Данные СП 0 1 1 1 0 0
    alu+ 2 1 Данные СП 0 1 1 1 0 0
    n+b alu+ 2 1 Данные СП 0 1 1 1 0 0
    n+b+1 alu+ 2 1 Данные СП 0 0 1 1 1 1
      pc+12                  

    Прим.: операции передачи данных сопроцессора не поддерживаются в состоянии Thumb.

    16. Передача регистра сопроцессора, чтение из сопроцессора

    Циклы ожидания занятости аналогичны описанным в Передача данных сопроцессора из памяти в сопроцессор, но передача ограничивается одним словом и ядро ARM7TDMI помещает данные в регистр назначения в третьем цикле. Третий цикл может быть объединен со следующим циклом предварительной выборки в один N-цикл памяти, как и в случае всех остальных инструкций чтения процессорных регистров.

    Временная диаграмма представлена в таблице 6.19, где:

    • "b" определяет циклы занятости.

    Таблица 6.19. Передача регистра сопроцессора, чтение из сопроцессора

    Цикл Адрес MAS [1:0] nRW Данные nMREQ SEQ nOPC nCPI CPA CPB
    готовность 1 pc+8 2 0 (pc+8) 1 1 0 0 0 0
    2 pc+12 2 0 Данные СП 1 0 1 1 1 1
    3 - pc+12 2 0 - 0 1 1 1 - -
    pc+12                  
    неготовность 1 pc+8 2 0 (pc+8) 1 0 0 0 0 1
    2 pc+8 2 0 - 1 0 1 0 0 1
    pc+8 2 0 - 1 0 1 0 0 1
    b pc+8 2 0 - 1 1 1 0 0 0
    b+1 pc+12 2 0 Данные СП 1 0 1 1 1 1
    b+2 pc+12 2 0 - 0 1 1 1 - -
    pc+12                  

    Прим.: операции передачи регистра сопроцессора не поддерживаются в состоянии Thumb.

    17. Передача регистра сопроцессора, запись в сопроцессор

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

    Временная диаграмма представлена в таблице 6.20, где:

    • "b" представляет циклы занятости.

    Таблица 6.20. Передача регистра сопроцессора, запись в сопроцессор

    Цикл Адрес MAS [1:0] nRW Данные nMREQ SEQ nOPC nCPI CPA CPB
    готовность 1 pc+8 2 0 (pc+8) 1 1 0 0 0 0
    2 pc+12 2 1 Rd 0 0 1 1 1 1
      pc+12                  
    неготовность 1 pc+8 2 0 (pc+8) 1 0 0 0 0 1
    2 pc+8 2 0 - 1 0 1 0 0 1
    pc+8 2 0 - 1 0 1 0 0 1
    b pc+8 2 0 - 1 1 1 0 0 0
    b+1 pc+12 2 1 Rd 0 0 1 1 1 1
      pc+12                  

    Прим.: операции передачи регистра сопроцессора не поддерживаются в состоянии Thumb.

    18. Неопределенные инструкции и отсутствие сопроцессора

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

    Временная диаграмма представлена в таблице 6.21, где:

    • "C" представляет текущее зависящее от режима значение;
    • "T" представляет текущее зависящее от состояния значение.

    Таблица 6.21. Циклы выполнения неопределенной инструкции

    Цикл Адрес MAS [1:0] nRW Данные nMREQ SEQ nOPC nCPI nTRANS Режим TBIT
    1 pc+2L i 0 (pc+2L) 1 0 0 0 C пред. T
    2 pc+2L i 0 - 0 0 0 1 C пред. T
    3 Xn 2 0 (Xn) 0 1 0 1 1 00100 0
    4 Xn+4 2 0 (Xn+4) 0 1 0 1 1 00100 0
    Xn+8                    

    Прим.:

    • инструкции сопроцессора не поддерживаются в состоянии Thumb.
    • CPA и CPB имеют высокий уровень в ходе последовательности неопределенной инструкции.

    19. Неисполняемые инструкции

    Любая инструкция, код условия которой не выполняется, не исполняется и добавляется один цикл ко времени выполнения сегмента кода, в который она входит (см. табл. 6.22).

    Таблица 6.22. Выполнение неисполняемой инструкции

    Цикл Адрес MAS[1:0] nRW nOPC Данные nMREQ SEQ
    1 pc+2L i 0 (pc+2L) 0 1 0
      pc+3L            

    20. Итоговая информация по быстродействию инструкций

    Благодаря конвейеризованной архитектуре ЦПУ возможно наложение инструкций. В типичном цикле одна инструкция может использовать канал данных, при этом, следующая инструкция может дешифрироваться, а еще одна вслед за этой - загружаться из памяти программ. По этой причине в таблице 6.23 представляется возрастающее количество циклов, требуемое инструкцией, а не общее количество циклов, в течение которого инструкция использует часть процессора. Общее время, выраженное в циклах, для подпрограммы может быть вычислено с помощью выражений из таблицы 6.23. В данных выражениях полагается, что инструкция является выполняемой. Неисполняемые инструкции требуют один цикл. Если условие не выполняется, то все инструкции используют один S-цикл. Циклы типов N, S, I и C описаны в параграфе Типы шинных циклов.

    В таблице 6.23:

    • "b" - количество циклов, сгенерированных в ходе ожидания состояния занятости;
    • "m":
      - 1, если все биты [32:8] операнда умножающего устройства равны 0 или 1;
      - 2, если все биты [32:16] операнда умножающего устройства равны 0 или 1;
      - 3, если все биты [32:24] операнда умножающего устройства равны 0 или 1.
    • "n" - количество передаваемых слов.

    Таблица 6.23. Итоговая информация по быстродействию инструкций ARM

    Инструкции Количество циклов Дополнительно
    Обработка данных S +I для SHIFT(Rs) +S + N, если записан R15
    MSR, MRS S -
    LDR S+N+I +S +N, если считывается R15
    STR 2N -
    LDM nS+N+I +S +N, если считывается R15
    STM (n-1)S+2N -
    SWP S+2N+I -
    B,BL 2S+N -
    SWI, trap 2S+N -
    MUL S+mI -
    MLA S+(m+1)I -
    MULL S+(m+1)I -
    MLAL S+(m+2)I -
    CDP S+bI -
    LDC, STC (n-1)S+2N+bI -
    MCR N+bI+C -
    MRC S+(b+1)I+C -


    <-- Предыдущая страница Оглавление Следующая страница -->