Регистры управления процессора 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].