Компоненты и технологии, № 3'2004
Окончание. Начало в № 1,2'2004.
Система команд
микропроцессорного ядра MicroBIaze
Валерий Зотов
Команды управления последовательностью выполнения операций в программе
Группа инструкций, используемых для передачи управления в программе, включает в себя:
• команды безусловных переходов;
• команды условных переходов;
• команды возврата из подпрограмм и процедур обслуживания прерываний.
Система команд микропроцессорного ядра MicroBlаze содержит инструкции безусловных переходов, использующие как абсолютную, так и относительную адресацию. При абсолютной адресации исполнительный адрес, по которому осуществляется передача управления в программе, указывается в виде значения соответствующего параметра команды. В случае применения инструкций переходов, использующих относительную адресацию, исполнительный адрес вычисляется как сумма текущего значения содержимого программного счетчика и смещения, задаваемого в виде значения соответствующего параметра команды. Для определения значения адреса перехода (при абсолютной адресации) или смещения (при относительной адресации) может применяться регистровый косвенный или непосредственный способы. При регистровом косвенном способе значение адреса перехода или
смещения содержится в регистре общего назначения, номер которого указывается в качестве соответствующего параметра команды. Непосредственный способ позволяет задавать требуемые значения адреса или смещения в виде составной части (соответствующего поля) инструкции. Как правило, при этом значение адреса или смещения представляет собой результат знакового расширения 16-разрядной константы Imm, указанной непосредственно в инструкции, до 32-разрядного слова.
Большинство команд безусловных переходов представлено в двух вариантах: с немедленной передачей управления и с задержкой исполнения. При выполнении инструкции с немедленной передачей управления загрузка нового значения (адреса перехода) в программный счетчик осуществляется сразу же после завершения обработки этой команды. Инструкции безусловных переходов с задержкой исполнения применяются с целью сокращения временных потерь, вызванных необходимостью перезагрузки конвейера после их выполнения. При использовании этих команд фактическая передача управления происходит только после завершения исполнения следующей инструкции, находящейся в фазе дешифрации. В конце мнемонического идентификатора таких инструкций присутствует символ D (Delay), указывающий на то, что исполнение этих команд осуществляется с дополнительной задержкой.
Новое значение программного счетчика
BRRb
Текущее значение программного счетчика
Регистр Rb
Новое значение программного счетчика
| BRI 1шт |
Текущее значение программного счетчика
Рис. 22. Выполнение инструкций безусловного перехода с относительной адресацией
Новое значение программного счетчика
Регистр Rb
Новое значение L программного счетчика
Рис. 24. Выполнение инструкций безусловного перехода с абсолютной адресацией
BRDRb BRLD Rd,Rb
Исполнение инструкции, следующей за командой перехода
Текущее значение программного счетчика
]
|| BRLD Rd,Rb~|
Регистр Rb
Новое значение Текущее значение
программного счетчика программного счетчика Регистр RЬ
BRID Imm BRLID Rd,lMM
Исполнение инструкции, следующей за командой перехода
Текущее значение программного счетчика
Новое значение программного счетчика
Константа, указанная в команде
Рис. 23. Выполнение инструкций безусловного перехода с относительной адресацией и задержкой исполнения
Компоненты и технологии, № 3'2004
Микропроцессорное ядро MicroBlaze поддерживает четырнадцать разновидностей команд безусловной передачи управления в программе, форматы которых приведены в таблице 17.
В инструкциях безусловного перехода BR Rb и BRI Imm используется относительная адресация с регистровым косвенным и непосредственным указанием значения смещения соответственно. Команда BR передает управление по адресу, равному сумме значений текущего состояния программного счетчика и содержимого регистра общего назначения, номер которого указывается в качестве единственного параметра инструкции. При использовании команды BRI адрес перехода представляет собой сумму текущего значения программного счетчика и результата знакового расширения 16-разрядной константы Imm, указанной непосредственно в инструкции, до 32-разрядного слова. Рисунок 22 демонстрирует выполнение команд безусловного перехода с относительной адресацией.
Команды BRD Rb и BRID Imm также предназначены для осуществления безусловного
перехода с относительной адресацией, но передача управления осуществляется только после завершения обработки следующей (декодируемой) инструкции. Команды BRLD Rd,Rb и BRLID Rd,Imm выполняют те же операции, что и предыдущая пара инструкций, сохраняя предварительно текущее состояние программного счетчика в регистре общего назначения. Номер регистра, используемого для записи текущего состояния программного счетчика, указывается в качестве значения первого параметра этих команд. Рисунок 23 поясняет выполнение команд безусловного перехода с относительной адресацией и задержкой исполнения.
Инструкции BRA Rb и BRAI Imm реализуют функцию безусловной передачи управления в программе с использованием абсолютной адресации, с регистровым косвенным и непосредственным указанием значения адреса перехода соответственно. В команде BRA значение адреса перехода определяется содержимым регистра общего назначения, номер которого указывается в качестве единственного параметра инструкции. Команда
BRAI передает управление по адресу, который представляет собой результат знакового расширения 16-разрядной константы Imm, указанной непосредственно в инструкции, до 32-разрядного слова. Рис. 24 демонстрирует выполнение команд безусловного перехода с абсолютной адресацией.
Команды BRAD Rb и BRAID Imm позволяют осуществлять безусловный переход с абсолютной адресацией и задержкой исполнения, которая необходима для завершения обработки следующей инструкции (находящейся в стадии декодирования). Единственным отличием команд BRALD Rd,Rb и BRALID Rd,Imm от предыдущей пары инструкций является сохранение текущего состояния программного счетчика в регистре общего назначения, номер которого указывается в качестве значения первого параметра этих команд. На рис. 25 показана последовательность операций при выполнении команд безусловного перехода с абсолютной адресацией и задержкой исполнения.
Инструкции BRK Rd,Rb и BRKI Rd,Imm предназначены для реализации в программе
Таблица 17. Форматы команд безусловной передачи управления в программе
Поле кода операции Поле номера первого регистра Поле типа перехода Поле номера второго регистра Нулевые разряды Мнемоника Выполняемая операция
1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 b b b b b 0 0 0 0 0 0 0 0 0 0 0 BR Rb Безусловный переход с относительной адресацией и регистровым косвенным указанием смещения (адрес перехода формируется путем суммирования текущего значения программного счетчика и содержимого регистра Rb)
1 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 b b b b b 0 0 0 0 0 0 0 0 0 0 0 BRD Rb Безусловный переход с относительной адресацией, регистровым косвенным указанием смещения и задержкой исполнения (до завершения обработки декодируемой инструкции)
1 0 0 1 1 0 d d d d d 1 0 1 0 0 b b b b b 0 0 0 0 0 0 0 0 0 0 0 BRLD Rd,Rb Безусловный переход с относительной адресацией, регистровым косвенным указанием смещения, задержкой исполнения и сохранением текущего состояния программного счетчика в регистре Rd
1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 b b b b b 0 0 0 0 0 0 0 0 0 0 0 BRA Rb Безусловный переход с абсолютной регистровой косвенной адресацией (адрес перехода указывается в форме значения содержимого регистра Rb)
1 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 b b b b b 0 0 0 0 0 0 0 0 0 0 0 BRAD Rb Безусловный переход с абсолютной регистровой косвенной адресацией и задержкой исполнения
1 0 0 1 1 0 d d d d d 1 1 1 0 0 b b b b b 0 0 0 0 0 0 0 0 0 0 0 BRALD Rd,Rb Безусловный переход с абсолютной регистровой косвенной адресацией, задержкой исполнения и сохранением текущего состояния программного счетчика в регистре Rd
1 0 0 1 1 0 d d d d d 0 1 1 0 0 b b b b b 0 0 0 0 0 0 0 0 0 0 0 BRK Rd,Rb Переход в режим Break с передачей управления по адресу, указанному в виде значения содержимого регистра Rb
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Номер разряда микрокоманды
Поле кода операции Поле номера первого регистра Поле значения константы Поле значения константы Мнемоника Выполняемая операция
1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 i i i i i i i i i i i i i i i i BRI Imm Безусловный переход с относительной адресацией и непосредственным определением смещения (адрес перехода формируется путем суммирования текущего значения программного счетчика и знакового расширения константы Imm)
1 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 i i i i i i i i i i i i i i i i BRID Imm Безусловный переход с относительной адресацией, непосредственным определением смещения и задержкой исполнения
1 0 1 1 1 0 d d d d d 1 0 1 0 0 i i i i i i i i i i i i i i i i BRLID Rd,Imm Безусловный переход с относительной адресацией, непосредственным определением смещения, задержкой исполнения и сохранением текущего состояния программного счетчика в регистре Rd
1 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 i i i i i i i i i i i i i i i i BRAI Imm Безусловный переход с непосредственной абсолютной адресацией (адрес перехода указывается в форме знакового расширения константы Imm)
1 0 1 1 1 0 0 0 0 0 0 1 1 0 0 0 i i i i i i i i i i i i i i i i BRAID Imm Безусловный переход с непосредственной абсолютной адресацией и задержкой исполнения
1 0 1 1 1 0 d d d d d 1 1 1 0 0 i i i i i i i i i i i i i i i i BRALID Rd,Imm Безусловный переход с непосредственной абсолютной адресацией, задержкой исполнения и сохранением текущего состояния программного счетчика в регистре Rd
1 0 1 1 1 0 d d d d d 0 1 1 0 0 i i i i i i i i i i i i i i i i BRKI Rd,Imm Переход в режим Break с передачей управления по непосредственно указываемому адресу (адрес перехода указывается в форме знакового расширения константы Imm)
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Номер разряда микрокоманды
Є~
Компоненты и технологии, № 3'2004
BRAD Rb BRALD Rd,Rb BRK Rd,RB
Исполнение инструкции,
следующей за командой
перехода
I
Текущее значение программного счетчика
Новое значение программного счетчика
Break in || BRALD Rd,Rbl Progress | BRKRd,Rb |-------► l-^O
Регистр Rb
Исполнение инструкции, следующей за командой перехода
Новое значение программного счетчика
Текущее значение программного счетчика
|[ BRALID RdJmml I BRKI Rd,lmm~|-------
Break in Progress
] Регистр Rb
Константа, указа иная в команде
ШИШ
Рис. 25. Выполнение инструкций безусловного перехода с абсолютной адресацией и задержкой исполнения
Условие не выполнено
Новое значение программного счетчика ,
BEQ Ra, Rb BNE Ra, Rb BLT Ra, Rb BLE Ra, Rb BGT Ra, Rb BGE Ra, Rb
Условие выполнено
Условие не выполнено
Текущее значение программного счетчика ]+4
Текущее значение программного счетчика
Текущее значение программного счетчика
Регистр Rb
Новое значение программного счетчика J
BEQI Ra,lmm BNEI Rajmm BLTI Rajmm BLEI Rajmm BGTI Rajmm BGEI Rajmm
Условие
выполнено
]+4
Текущее значение программного счетчика
Рис. 27. Выполнение инструкций условных переходов
| BRK Rd,Rb 1
Регистр Rb
Новое значение программного счетчика
Текущее значение программного счетчика
Регистр Rb
| BRALID Rd,lmm~l
Регистр Rb
Текущее значение программного счетчика
Break in Progress
Break in Progress
Новое значение программного счетчика
Константа, указаннаяв команде
Рис. 26. Выполнение команд BRK и BRKI
Условие не выполнено
Новое значение программного счетчика
И
Исполнение инстукции, следующе за командой пеехода
BEQD Ra, Rb BN ED Ra, Rb В LTD Ra, Rb BLED Ra, Rb BGTD Ra, Rb BGED Ra, Rb
Условие выполнено
Условие не выполнено
Новое значение программного счетчика|
Исполнение инстукции, следующе за командой пеехода
BEQDI Rajmm BNEID Rajmm BLTID Rajmm BLEID Rajmm BGTID Rajmm BGEID Rajmm
Текущее значение программного счетчика
Текущее значение программного счетчика
Текущее значение программного счетчика
И
Регистр Rb
Текущее значение программного счетчика
Условие
выполнено
ИМИ
Рис. 28. Выполнение инструкций условного перехода с задержкой исполнения
режима Break с передачей управления по указанному адресу. В этих командах применяется абсолютная адресация. Первым параметром в данных инструкциях является номер одного из регистров общего назначения, который используется для записи значения текущего состояния программного счетчика. Содержимое этого регистра впоследствии может использоваться в процессе вычисления адреса возврата при выполнении соответствующей инструкции. В качестве значения второго параметра команды BRK также указывается номер регистра, содержимое которого определяет адрес передачи управления. В инструкции BRKI адрес перехода представляет собой результат знакового расширения 16-разрядной константы Imm, указанной непосредственно в инструкции, до 32-разрядного слова. При исполнении рассмотренных команд флаг Break in Progress Flag (28-й разряд регистра статуса) переключается в установленное состояние. Процесс выполнения команд BRK и BRKI иллюстрирует рисунок 26.
При условных переходах загрузка в программный счетчик нового адреса, по которому передается управление в программе, производится только при выполнении соответствующего условия. Если заданное условие не выполнено, то программный счетчик продолжает работу в инкрементном режиме. Проверка выполнения соответствующего условия заключается в сопоставлении с нулем значения содержимого одного из регистров общего назначения, номер которого указывается в ка-
честве первого параметра инструкций условных переходов. Система команд микропроцессорного ядра MicroBlaze содержит инструкции, позволяющие анализировать выполнение одного из шести типов условий:
• значение содержимого указанного регистра равно нулю;
• значение содержимого указанного регистра не равно нулю;
• значение содержимого указанного регистра меньше нуля;
• значение содержимого указанного регистра меньше или равно нулю;
• значение содержимого указанного регистра больше нуля;
• значение содержимого указанного регистра больше или равно нулю.
В отличие от команд безусловного перехода в инструкциях условных переходов всегда используется относительная адресация с регистровым косвенным и непосредственным указанием значения смещения. Все команды условной передачи управления представлены в двух вариантах: с немедленным исполнением и с задержкой до завершения обработки следующей (декодируемой) инструкции. Форматы команд условных переходов представлены в таблице 18.
Инструкции ВЕО, Яа,ЯЬ и BEQI Ка,1тт инициируют передачу управления по заданному адресу при условии, что значение содержимого регистра общего назначения с номером а равно нулю. Адрес перехода формируется путем суммирования текущего
значения программного счетчика и смещения, которое указывается в виде содержимого регистра Rb (в команде BEQ) или результата знакового расширения 16-разрядной константы Imm до 32-разрядного слова (в команде BEQI). При исполнении команд BNE Ra,Rb и BNEI Ra,Imm управление передается инструкции с указанным адресом только в случае, если значение содержимого регистра общего назначения с номером a неравно нулю. Инструкции BLT Ra,Rb и BLTI Ra,Imm загружают новое значение адреса в программный счетчик при условии, что значение содержимого регистра Ra меньше нуля. С помощью команд BLE Ra,Rb и BLEI Ra,Imm осуществляется переход к выполнению инструкции с указанным адресом, если содержимое регистра Ra меньше или равно нулю. Инструкции BGT Ra,Rb и BGTI Ra,Imm предназначены для передачи управления в программе по новому адресу при условии, что значение содержимого регистра Ra больше нуля. Команды BGE Ra,Rb и BGEI Ra,Imm позволяют выполнить переход к инструкции с требуемым адресом, если содержимое регистра Ra больше или равно нулю. Рисунок 27 поясняет выполнение команд условных переходов.
Инструкции BEQD Ra,Rb, BNED Ra,Rb, BLTD Ra,Rb, BLED Ra,Rb, BGTD Ra,Rb, BGED Ra,Rb, BEQID Ra,Imm, BNEID Ra,Imm, BLTID Ra,Imm, BLEID Ra,Imm, BGTID Ra,Imm, BGEID Ra,Imm выполняют те же функции, что и команды BEQ, BNE, BLT, BLE, BGT, BGE, BEQI, BNEI, BLTI, BLEI, BGTI, BGEI, рас- www.finestreet.ru----------------------
Компоненты и технологии, № 3'2004
Таблица 18. Форматы команд условных переходов
Поле кода операции Поле типа условия перехода Поле номера первого регистра Поле номера второго регистра Нулевые разряды Мнемоника Выполняемая операция
1 0 0 1 1 1 0 0 0 0 0 a a a a a b b b b b 0 0 0 0 0 0 0 0 0 0 0 BEQ Ra,Rb Переход при условии, что значение содержимого регистра Ra равно нулю, с регистровой косвенной адресацией (адрес перехода формируется путем суммирования текущего значения программного счетчика и содержимого регистра Rb)
1 0 0 1 1 1 0 0 0 0 1 a a a a a b b b b b 0 0 0 0 0 0 0 0 0 0 0 BNE Ra,Rb Переход при условии, что значение содержимого регистра Ra неравно нулю, с регистровой косвенной адресацией
1 0 0 1 1 1 0 0 0 1 0 a a a a a b b b b b 0 0 0 0 0 0 0 0 0 0 0 BLT Ra,Rb Переход при условии, что значение содержимого регистра Ra меньше нуля, с регистровой косвенной адресацией
1 0 0 1 1 1 0 0 0 1 1 a a a a a b b b b b 0 0 0 0 0 0 0 0 0 0 0 BLE Ra,Rb Переход при условии, что значение содержимого регистра Ra меньше или равно нулю, с регистровой косвенной адресацией
1 0 0 1 1 1 0 0 1 0 0 a a a a a b b b b b 0 0 0 0 0 0 0 0 0 0 0 BGT Ra,Rb Переход при условии, что значение содержимого регистра Ra больше нуля, с регистровой косвенной адресацией
1 0 0 1 1 1 0 0 1 0 1 a a a a a b b b b b 0 0 0 0 0 0 0 0 0 0 0 BGE Ra,Rb Переход при условии, что значение содержимого регистра Ra больше или равно нулю, с регистровой косвенной адресацией
1 0 0 1 1 1 1 0 0 0 0 a a a a a b b b b b 0 0 0 0 0 0 0 0 0 0 0 BEQD Ra,Rb Переход при условии, что значение содержимого регистра Ra равно нулю, с регистровой косвенной адресацией и задержкой исполнения (до завершения обработки декодируемой инструкции)
1 0 0 1 1 1 1 0 0 0 1 a a a a a b b b b b 0 0 0 0 0 0 0 0 0 0 0 BNED Ra,Rb Переход при условии, что значение содержимого регистра Ra неравно нулю, с регистровой косвенной адресацией и задержкой исполнения
1 0 0 1 1 1 1 0 0 1 0 a a a a a b b b b b 0 0 0 0 0 0 0 0 0 0 0 BLTD Ra,Rb Переход при условии, что значение содержимого регистра Ra меньше нуля, с регистровой косвенной адресацией и задержкой исполнения
1 0 0 1 1 1 1 0 0 1 1 a a a a a b b b b b 0 0 0 0 0 0 0 0 0 0 0 BLED Ra,Rb Переход при условии, что значение содержимого регистра Ra меньше или равно нулю, с регистровой косвенной адресацией и задержкой исполнения
1 0 0 1 1 1 1 0 1 0 0 a a a a a b b b b b 0 0 0 0 0 0 0 0 0 0 0 BGTD Ra,Rb Переход при условии, что значение содержимого регистра Ra больше нуля, с регистровой косвенной адресацией и задержкой исполнения
1 0 0 1 1 1 1 0 1 0 1 a a a a a b b b b b 0 0 0 0 0 0 0 0 0 0 0 BGED Ra,Rb Переход при условии, что значение содержимого регистра Ra больше или равно нулю, с регистровой косвенной адресацией и задержкой исполнения
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Номер разряда микрокоманды
Поле кода операции Поле типа условия перехода Поле номера первого регистра Поле значения константы Мнемоника Выполняемая операция
1 0 1 1 1 1 0 0 0 0 0 a a a a a i i i i i i i i i i i i i i i i BEQI Ra,Imm Переход при условии, что значение содержимого регистра Ra равно нулю, с непосредственной адресацией (адрес перехода формируется путем суммирования текущего значения программного счетчика и знакового расширения константы ^ш)
1 0 1 1 1 1 0 0 0 0 1 a a a a a i i i i i i i i i i i i i i i i BNEI Ra,Imm Переход при условии, что значение содержимого регистра Ra неравно нулю, с непосредственной адресацией
1 0 1 1 1 1 0 0 0 1 0 a a a a a i i i i i i i i i i i i i i i i BLTI Ra,Imm Переход при условии, что значение содержимого регистра Ra меньше нуля, с непосредственной адресацией
1 0 1 1 1 1 0 0 0 1 1 a a a a a i i i i i i i i i i i i i i i i BLEI Ra,Imm Переход при условии, что значение содержимого регистра Ra меньше или равно нулю, с непосредственной адресацией
1 0 1 1 1 1 0 0 1 0 0 a a a a a i i i i i i i i i i i i i i i i BGTI Ra,Imm Переход при условии, что значение содержимого регистра Ra больше нуля, с непосредственной адресацией
1 0 1 1 1 1 0 0 1 0 1 a a a a a i i i i i i i i i i i i i i i i BGEI Ra,Imm Переход при условии, что значение содержимого регистра Ra больше или равно нулю, с непосредственной адресацией
1 0 1 1 1 1 1 0 0 0 0 a a a a a i i i i i i i i i i i i i i i i BEQID Ra,Imm Переход при условии, что значение содержимого регистра Ra равно нулю, с непосредственной адресацией и задержкой исполнения
1 0 1 1 1 1 1 0 0 0 1 a a a a a i i i i i i i i i i i i i i i i BNEID Ra,Imm Переход при условии, что значение содержимого регистра Ra неравно нулю, с непосредственной адресацией и задержкой исполнения
1 0 1 1 1 1 1 0 0 1 0 a a a a a i i i i i i i i i i i i i i i i BLTID Ra,Imm Переход при условии, что значение содержимого регистра Ra меньше нуля, с непосредственной адресацией и задержкой исполнения
1 0 1 1 1 1 1 0 0 1 1 a a a a a i i i i i i i i i i i i i i i i BLEID Ra,Imm Переход при условии, что значение содержимого регистра Ra меньше или равно нулю, с непосредственной адресацией и задержкой исполнения
1 0 1 1 1 1 1 0 1 0 0 a a a a a i i i i i i i i i i i i i i i i BGTID Ra,Imm Переход при условии, что значение содержимого регистра Ra больше нуля, с непосредственной адресацией и задержкой исполнения
1 0 1 1 1 1 1 0 1 0 1 a a a a a i i i i i i i i i i i i i i i i BGEID Ra,Imm Переход при условии, что значение содержимого регистра Ra больше или равно нулю, с непосредственной адресацией и задержкой исполнения
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Номер разряда микрокоманды
Є-
смотренные выше. Отличие заключается в том, что передача управления производится при выполнении соответствующего условия только после завершения обработки следующей инструкции, находящейся в стадии дешифрации. Процесс выполнения команд
условного перехода с задержкой исполнения показан на рисунке 28.
В системе команд микропроцессорного ядра MicroBlaze представлено три инструкции возврата управления в программе:
• команда возврата из подпрограмм;
• команда возврата из процедур обслуживания прерываний;
• команда выхода из режима Break.
Все команды этой подгруппы предусматривают задержку передачи управления до момента завершения исполнения следую-----------------------------------155
Компоненты и технологии, № 3'2004
Таблица 19. Форматы команд возврата управления в программе
Поле кода операции Поле типа возврата Поле номера первого регистра Поле значения константы Мнемоника Выполняемая операция
1 0 1 1 0 1 1 0 0 0 1 a a a a a i i i i i i i i i i i i i i i i RTID Ra,Imm Возврат из процедуры обработки прерывания с передачей управления по адресу, равному сумме содержимого регистра Ra и знакового расширения константы Imm
1 0 1 1 0 1 1 0 0 0 0 a a a a a i i i i i i i i i i i i i i i i RTSD Ra,Imm Возврат из подпрограммы с передачей управления по адресу, равному сумме содержимого регистра Ra и знакового расширения константы Imm
1 0 1 1 0 1 1 0 0 1 0 a a a a a i i i i i i i i i i i i i i i i RTBD Ra,Imm Возврат из режима Break с передачей управления по адресу, равному сумме содержимого регистра Ra и знакового расширения константы Imm
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Номер разряда микрокоманды
RTBD Rajmm RTID Rajmm RTSD Rajmm
Исполнение инстукции, следующе за командой возвата
Текущее значение программного счетчика
Новое значение программного счетчика
Регистр Rb
| RTBD Rajmm О—» Break in Progress | RTID Rajmm 1 —»■ Interrupt Enable
Рис. 29. Выполнение инструкций возврата управления в программе
щей инструкции, находящейся в стадии дешифрации. Тем самым снижаются временные потери, связанные с необходимостью перезагрузки конвейера. В командах возврата применяется относительная адресация, при которой значение адреса возврата складывается из базового значения и смещения.
Все три инструкции возврата управления используют два параметра. В качестве значения первого параметра указывается номер регистра общего назначения, в котором содержится базовый адрес передачи управления. Вторым параметром является 16-разряд -ная константа, значение которой определяется непосредственно в составе инструкции. Результат знакового расширения этой константы до 32-разрядного слова используется в качестве значения смещения при относительной адресации. Форматы инструкций возврата управления приведены в таблице 19.
Инструкция возврата из процедуры обслуживания прерывания RTID Ra,Imm предназначена для передачи управления программе, при выполнении которой поступил запрос прерывания. Адрес возврата вычисляется как сумма содержимого регистра общего назначения с номером a и результата знакового расширения константы Imm до 32-разрядного значения. После завершения исполнения этой команды флаг Interrupt Enable Flag (30-й
разряд регистра статуса) переключается в установленное состояние (высокого логического уровня), разрешая тем самым обработку последующих прерываний. Выполнение инструкции возврата из процедуры обслуживания прерывания демонстрирует рисунок 29.
Безусловное завершение выполняемой подпрограммы и передача управления основной программе или подпрограмме, из которой производилось обращение к этой процедуре, осуществляется с помощью команды RTSD Ra,Imm. При возврате из подпрограмм выполняется та же последовательность действий, что и при возврате из процедуры обслуживания прерывания, но значения флагов регистра статуса не изменяются (рис. 29).
Команда RTBD Ra,Imm используется для выхода из режима Break с передачей управления по адресу, значение которого равно сумме содержимого регистра общего назначения с номером a и результата знакового расширения константы Imm. После ее исполнения флаг Break in Progress Flag (двадцать восьмой разряд регистра статуса) переключается в сброшенное состояние (низкого логического уровня) (рис. 29).
Группа инструкций ввода/вывода
Интерфейс ввода-вывода микропроцессорного ядра MicroBlaze, соответствующий
спецификации FSL (Fast Simplex Link), поддерживает два режима передачи данных: с блокировкой и без блокировки работы процессора. Для каждого из этих режимов предусмотрены соответствующие команды ввода-вывода. При выполнении инструкций, использующих режим блокировки, работа процессора приостанавливается до завершения считывания или записи достоверных данных. Исполнение команд ввода-вывода без блокировки не останавливает функционирование процессора независимо от того, могут ли быть считаны или переданы достоверные данные через указанный канал интерфейса FSL.
Одни и те же каналы интерфейса FSL могут использоваться для передачи как информационных, так и управляющих данных. Тип передаваемого слова данных определяет значение специального контрольного бита. В случае передачи информационных данных значение этого бита должно быть равно нулю. Для идентификации управляющих данных используется единичное значение контрольного бита. Поэтому для передачи информационных и управляющих данных используются различные варианты инструкций ввода-вывода.
Команды ввода-вывода через каналы интерфейса FSL используют два параметра. Значение первого параметра определяет номер регистра общего назначения, используемого в качестве приемника данных при операции ввода (чтения) или в качестве источника при выполнении операции вывода (записи). Второй параметр позволяет указать номер используемого канала интерфейса FSL.
Система команд микропроцессорного ядра MicroBlaze включает в себя четыре инструкции, предназначенные для чтения данных различного типа, поступающих через входной интерфейс FSL. Информация о форматах этих команд содержится в таблице 20.
Команда GET Rd,FSLn выполняет операцию чтения информационных данных из n-го ка-
Таблица 20. Форматы команд чтения данных, передаваемых через интерфейс FSL
Поле кода операции Поле номера регистра Нулевые разряды Поле режима чтения Номер канала интерфейса FSL Мнемоника Выполняемая операция
0 1 1 0 1 1 d d d d d 0 0 0 0 0 0 0 0 0 0 n n n n n n n n n n n GET Rd,FSLn Чтение информационных данных из п-го канала интерфейса FSL в регистр Rd в режиме блокировки
0 1 1 0 1 1 d d d d d 0 0 0 0 0 0 1 0 0 0 n n n n n n n n n n n nGET Rd,FSLn Чтение информационных данных из п-го канала интерфейса FSL в регистр Rd без блокировки
0 1 1 0 1 1 d d d d d 0 0 0 0 0 0 0 1 0 0 n n n n n n n n n n n cGET Rd,FSLn Чтение управляющих данных из п-го канала интерфейса FSL в регистр Rd в режиме блокировки
0 1 1 0 1 1 d d d d d 0 0 0 0 0 0 1 1 0 0 n n n n n n n n n n n ncGET Rd,FSLn Чтение управляющих данных из п-го канала интерфейса FSL в регистр Rd без блокировки
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Номер разряда микрокоманды
Компоненты и технологии, № 3'2004
Регистр Rb
GET Rd.FSLn nGET Rd.FSL cGET Rd,FSL ncGET Rd,FSL
FSLOI
FSLn
FSL7
Рис. 30. Осуществление операций чтения данных из каналов интерфейса FSL
нала интерфейса FSL в регистр общего назначения с номером d, используя режим блокировки процессора. Инструкция nGET Rd,FSLn предназначена для чтения информационных данных из n-го канала интерфейса FSL в регистр Rd без блокировки. Считывание управляющих данных из n-го канала интерфейса FSL в регистр с номером d в режиме блокировки осуществляется с помощью команды cGETRd,FSLn. Для чтения управляющих данных из n-го канала интерфейса FSL в регистр Rd без блокировки используется инструкция ncGET Rd,FSLn. Если при выполнении операций чтения значение контрольного бита не соответствует ожидаемому типу данных, то флаг FSL Error Flag (27-й разряд регистра статуса MSR) устанавливается в состояние, соответствующее высокому логическому уровню. При выполнении команд чтения без блокировки для достоверных данных флаг переноса Carry Flag (двадцать девятый разряд регистра статуса) сбрасывается в состояние низкого логического уровня. В случае чтения неверных данных флаг переноса устанавливается в состояние высокого логического уровня. Рисунок 30 поясняет выполнение инструкций чтения данных из каналов интерфейса FSL
Регистр Rb
PUT Ra.FSLn nPUT Ra.FSLn ePUT Ra,FSLn ncPUT Ra.FSLn
FSLO •
FSLn I
FSL7
Рис. 31. Выполнение инструкций передачи данных из регистра общего назначения в выходные каналы интерфейса FSL
Для передачи данных различного типа из регистра общего назначения в выходной канал интерфейса FSL предусмотрены четыре варианта инструкций, форматы которых приведены в таблице 21.
Передача информационных данных из регистра общего назначения с номером a в n-й канал интерфейса FSL в режиме блокировки осуществляется с помощью команды PUT Ra,FSLn. Для записи информационных данных из регистра Ra в n-й канал интерфейса FSL без блокировки предназначена команда nPUT Ra,FSLn. Команда cPUT Ra,FSLn выполняет операцию передачи управляющих данных из регистра Ra в n-й канал интерфейса FSL, используя режим блокировки процессора. Инструкция ncPUT Ra,FSLn осуществляет вывод управляющих данных из регистра Ra в n-й канал интерфейса FSL без блокировки. При успешном выполнении команд передачи данных из регистра общего назначения в выходной канал интерфейса FSL флаг переноса Carry Flag сбрасывается в состояние низкого логического уровня. В противном случае флаг переноса устанавливается в состояние высокого логического уровня. Рисунок 31 поясняет выполнение команд передачи данных различного типа из регистра общего назначения в выходной канал интерфейса FSL.
Группа специальных команд
Инструкции, входящие в данную группу, предназначены для копирования содержимого регистров специального назначения в регистры общего назначения и наоборот.
Форматы специальных команд представлены в таблице 22.
Инструкция MTS S1,Ra позволяет загрузить содержимое выбранного регистра общего назначения Ra в регистр состояния MSR. Данные, записанные в регистр состояния с помощью команды MTS, вступают в силу через один цикл после исполнения этой инструкции.
Команда MFS Rd,Sa выполняет копирование содержимого одного из регистров специального назначения Sa в регистр общего назначения с номером d. При использовании в инструкции MFS в качестве второго параметра S1 производится копирование содержимого регистра состояния MSR. Если в качестве второго параметра указано значение S0, то в регистр общего назначения Rd записывается содержимое программного счетчика. Рисунок 32 иллюстрирует выполнение специальных инструкций.
Таблица 21. Форматы команд записи данных в выходной канал интерфейса FSL
Поле кода операции Нулевые разряды Поле номера регистра Поле режима вывода Номер канала интерфейса FSL Мнемоника Выполняемая операция
0 1 1 0 1 1 0 0 0 0 0 а а а а а 1 0 0 0 0 n n n n n n n n n n n PUT Ra,FSLn Передача информационных данных из регистра Ra в п-й канал интерфейса FSL в режиме блокировки
0 1 1 0 1 1 0 0 0 0 0 а а а а а 1 1 0 0 0 n n n n n n n n n n n nPUT Ra,FSLn Передача информационных данных из регистра Ra в п-й канал интерфейса FSL без блокировки
0 1 1 0 1 1 0 0 0 0 0 а а а а а 1 0 1 0 0 n n n n n n n n n n n cPUT Ra,FSLn Передача управляющих данных из регистра Ra в п-й канал интерфейса FSL в режиме блокировки
0 1 1 0 1 1 0 0 0 0 0 а а а а а 1 1 1 0 0 n n n n n n n n n n n ncPUT Ra,FSLn Передача управляющих данных из регистра Ra в п-й канал интерфейса FSL без блокировки
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Номер разряда микрокоманды
Таблица 22. Форматы специальных команд
Поле кода операции Нулевые разряды Поле номера регистра общего назначения Поле направления передачи данных и типа регистра специального назначения Мнемоника Выполняемая операция
1 0 0 1 0 1 0 0 0 0 0 a а а а а 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 MTS S1,Ra Загрузка содержимого регистра общего назначения Ra в регистр состояния MSR
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Номер разряда микрокоманды
Поле кода операции Поле номера регистра общего назначения Нулевые разряды Поле направления передачи данных и типа регистра специального назначения Мнемоника Выполняемая операция
1 0 0 1 0 1 d d d d d 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 а MFS Rd,Sa Загрузка содержимого регистра специального назначения (регистра состояния MSR S1или программного счетчика S0) в регистр общего назначения Rd
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Номер разряда микрокоманды
Компоненты и технологии, № 3'2004
Таблица 23. Форматы команд записи данных и команд в кэш-память
Поле кода операции Поле номера первого регистра Поле номера первого регистра Поле номера второго регистра Поле типа кэш-памяти Мнемоника Выполняемая операция
1 0 0 1 0 0 а а а а а а а а а а b b b b b 0 0 0 0 1 1 0 1 0 0 0 WIC Ra,Rb Загрузка содержимого регистра Rb в кэш-память команд.
1 0 0 1 0 0 а а а а а а а а а а b b b b b 0 0 0 0 1 1 0 0 1 0 0 WDC Ra,Rb Загрузка содержимого регистра Rb в кэш-память данных.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Номер разряда микрокоманды
Инструкции записи в кэш-память гистра общего назначения в кэш-память дан- определяет номер регистра общего назначе-
ных и в кэш-память команд. Эти инструкции ния, содержимое которого копируется в кэш-
Для работы с кэш-памятью в системе ко- используют два параметра. В качестве перво- память. Форматы команд, предназначенных
манд микропроцессорного ядра Micro Blaze го параметра указывается номер регистра об- для работы с кэш-памятью, определены
предусмотрены две инструкции, позволяю- щего назначения, который используется для в таблице 23.
щие загружать содержимое выбранного ре- хранения адреса записи. Второй параметр Инструкция WIC Ra,Rb используется для
загрузки содержимого регистра общего назначения Rb в кэш-память команд. Инструкция WDC Ra,Rb выполняет операцию копирования содержимого регистра Rb в кэш-память данных. Рисунок 33 поясняет процесс выполнения этих команд.
На этом завершается описание системы команд микропроцессорного ядра MicroBlaze. Прежде чем приступить к изучению процесса разработки устройств на основе этого модуля, необходимо познакомиться с программными средствами проектирования, составной частью которых является ядро MicroBlaze. Поэтому в следующей публикации цикла будут рассмотрены характеристики и структура пакета Embedded Development Kit (EDK), предлагаемого фирмой Xilinx в качестве основного инструмента разработки и отладки встраиваемых микропроцессорных систем на основе ПЛИС серий FPGA. ИИ
Регистр Rb
МПІІШ
WIC Ra,Rb WDC Ra,Rb
Кэш-память
tnttttnttttnttttttttttttttttt Данные
Регистр Rb I
Рис. 33. Осуществление операций записи данных и команд в кэш-память