[an error occurred while processing this directive]
|
там сделано так (в general purpose) если операнд-приемник 40-битный, то операция направляется в D-unit, если 16-битный, то в A-unit. Соответственно при условии выполнения остальных условий параллельности возможно за такт две операции. Далее - ВСЕ инструкции выполняются за 1 такт (в execute). И если нет STALL'ов из-за памяти или прочих конфликтов ресурсов (особенно между адресной фазой и execute/write) - то все операции выполняются за 1 такт (кроме переходов). В общем для подробного разбирательства есть "Cycle accurate simulator" и "Pipeline stall analyzer".
Межмодульных операций нет. На чтение все регистры доступны всем модулям, на запись - модулю A доступны T/AR, модулю D - ACx. Но оба модуля умеют все General purpose операции. Докучи запись-чтение в/из ОЗУ идет байпасным путем мимо модулей, позволяя параллелить эти операции с арифметикой.
Теперь аппаратные циклы - команды перехода там чистят конвейер, в результате выполняются 5-6 тактов. Даже если бы не чистили и декремент счетчика с переходом были бы 2 такта... Аппаратные циклы - выполняются 0 (ноль) тактов. Есть разница? Особенно если внутри цикла например две команды типа "dual MAC" и цикл на пару тысяч итераций?
E-mail: info@telesys.ru