[an error occurred while processing this directive]
|
> С учетом пофиксенного бага XCC->XCCPART будет 4 такта. Вы еще
> не заметили || - XCCPART может параллелиться с инструкцией,
> которая выполняется условно.
То есть, вы считаете, что Ваш подправленный фрагмент
> MOV uns(*dataDQ),AC0
> SFTL AC0, #-1
> XCCPART CARRY
> ||OR #8000h, AC0
> MOV AC0,*(dataDQ)
будет выполняться за четыре такта? Но ни инструкция XCCPART CARRY,
ни инструкция OR #8000h, AC0 не имеет parallel enable bit. Значит ли это, что они не могут выполняться параллельно? Да и что значит параллельное выполнение для этих двух инструкций? На мой взгляд это нонсенс, ведь сначала надо проверить флаг переноса, а уж затем устанавливать 15-й бит в аккумуляторе ас0. Или я в корне неправ?
Если я прав, то за сколько все же циклов выполняется предложенный Вами фрагмент? Я спрашиваю так дотошно потому, что с Вашей подачи начал читать литературу по С55хх, хотелось бы для начала немного теоретически подковаться в этом процессоре, но как всегда вначале большого пути(:-) возникло больше вопросов, чем ответов...
Вот с ходу могу предложить такой вариант циклического сдвига для С55хх:
mov uns(*dataDQ),ac0
or ac0,16,ac0
mov ac0,#-1,*(dataDQ)
Если код будет выполняться за 3 такта, тогда я согласен, что циклический сдвиг слова на С55хх выполняется в два раза быстрее. Со всеми вытекающими...
Да вот еще, посчитал потребление С5401 на 300 МГц (данные взяты из описания процессора), получилось 870 мВт. Небольшая печка, не слабо!
А С5402А на 160 МГц потребляет 240 мВт (данные тоже из описания). Потребление пропорционально квадрату отношения частот! Куда мир катится(:-).
E-mail: info@telesys.ru