[an error occurred while processing this directive]
|
до конца не разобрался еще
в чем "человек" может быть прав - может написано так (криво), что пайплайн тормозится и все время во внешнюю память лезет? то скорость определяется памятью? но такой же алгоритм и для 218x будет тормозить, но так как waitstait-ов меньше (память то тормозит не в циклах процессора а в наносекундах :-) то и получается так.
да и для периферийных регистров в BF вроде вэйтстэйты добавляются
и в 218х больше I (M,B,L) регистров - что опять же при кривой организации алгоритма работы с памятью может дать выигрышь перед BF
кстати BF это единственный из "процов за 10$" в котором спекулятивные вычисления (то есть если он лазит в память, пайплайн не останавливается, пока это значение не нужно для вычислений). кстати тут и TMS 64xx с его тупым пайплайном отдыхает.
хотя для DSP-шек это не нужно (там типа DMA подкачал в 0-waitstate, а потом процом лазишь), но очень приятно/полезно :) для "микропроцессорных" программ, хотя создает неудобства.
а в чем неправ - насколько я помню 218х - вся параллельность, которая там есть - в BF присутствует
при этом есть куча доп. инструкций и иногда (если специально алгоритм поправить) - можно добится уменьшение в 2 раза числа операций.
то что двухядерный - наверно не совсем то - есть двухядерные 56х BF, а имелось, наверно, в виду, что два умножителя/аккумулятора - ну так ими надо суметь воспользоваться :) - там из-за ограничения шин адрес/данные в ядре, много констрейнов на параллельное использование - но С (я смотрел) если чуть-чуть над исходником подумать - умеет "двойные" инструкции делать
если где неправ - не пинайте, не волшебник, а только учусь Ж:)
E-mail: info@telesys.ru