Команды управления

Регистры управления процессора Nios II могут быть прочитаны или записаны с помощью следующих команд:

· rdctl rC, ctlN – копирует содержимое регистра ctlN в rC;

· wrctl ctlN, rA – копирует содержимое регистра rA в ctlN.

Команды trap и eret аналогичны командам call и ret, но используются для вызова/ возврата из обработчика исключений.

Команды break и bret определяют контрольные точки и осуществляют возврат из процедуры обработки контрольных точек. Используются только программными средствами отладки.

Для управления КЭШ памятью используются следующие команды:

· initd IMMED16(rA) (Initialize data-cache line) - объявляет недостоверной строку КЭШа данных, ассоциированную с адресом (rA)+ IMMED16;

· initi rA (Initialize instruction-cache line) - объявляет недостоверной строку КЭШа команд, ассоциированную с адресом в rA;

· flushd IMMED16(rA) (Flush data-cache line) - объявляет недостоверной строку КЭШа данных, ассоциированную с адресом (rA)+ IMMED16, выполнив предварительно запись данных в основную память;

· flushi rA (Flush instruction-cache line) - объявляет недостоверной строку КЭШа команд, ассоциированную с адресом в rA, выполнив предварительно запись этой строки в основную память.

Специализированные инструкции

Специализированные инструкции представляют собой инструкции, реализованные аппаратно пользователем внутри кристалла FPGA и подключенные в SOPC Builder во время генерации процессорной системы.

Доступ к специализированным инструкциям процессора Nios II осуществляется с помощью команды custom. Процессором допускается подключение до 256 специализированных инструкций, причем каждой инструкции присваивается свой номер. Символьное обозначение пользовательской инструкции:

Custom N, xC, xA, xB

Формат инструкции следующий:

31 27 26 22 21 17 16 15 14 13 6 5 0

xA xB xC readra readrb writerc N 0x32

Поле N определяет номер специализированной инструкции. Каждая инструкция может использовать до двух операндов, которые могут размещаться в РОНах процессора, либо в пользовательских регистрах, входящих в состав пользовательской логики. Аналогичным образом, запись результата может выполняться либо в РОНы, либо в специализированные регистры. Для того, чтобы определить какие из регистров используются, применяются однобитные поля readra, readrb и writerc. Если в этом поле установлено единичное значение, тогда используются РОНы, и пользовательские регистры – в противном случае. Например, инструкция custom 0, c3, r5, r0 выполняет специализированную инструкцию с номером 0, которая использует операнды в регистрах общего назначения r5 и r0, после чего сохраняет результат в пользовательском регистре c3. Более подробное описание применения специализированных инструкций приводится в [13].


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: