[an error occurred while processing this directive]
|
Помогите разобраться по сабж.
Вот пример кода для теста который написал
1 mvkl.S2 0x1111, B2
2 B.S2 code2
3 mvkl.S2 Buffer, B1
4 mvkh.S2 Buffer, B1
5 stw.D2 B2, *B1++
6 stw.D2 B2, *B1++
7 stw.D2 B2, *B1++
8 stw.D2 B2, *B1++
В документации написано, что "The C67x uses a FP of 8 instructions".
Это значит что в итоге в процессор попало сразу 8 инструкций. Ввиду того что все они выполняюся последовательно, то часть конвейра, отвечающая за чтение из памяти тормозится. Значит пока последняя инструкция не перейдет в фазу декодирования, новая инсрукция (по адресу code2) не должна попасть в фазу диспетчеризации.
Если это так, то я хотел увидеть в buffer 4-ре 0х1111. Но запустив все это под дебагером и просмотрев память вижу только, что заполнены только 2-е ячейки.
Прочитав, что Branch имеет 5-ть delay slots, то все вроде правильно, так и должно работать. И тут что то не сходится, куда делись еще две команды? Скоро мозги сломаются, понять как все это работает. Не дайте погибнуть:)
E-mail: info@telesys.ru