реклама на сайте
подробности

 
 
> подсчитать количество тактов
romez777
сообщение May 20 2010, 15:13
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 292
Регистрация: 9-11-04
Пользователь №: 1 077



Есть софтверный mdio драйвер под линукс ядро 2.6.20 (один gpio пин на клок, второй на данные). Пытаюсь подсчитать количество тактов, расходуемое процессором на операцию выставления бита на ноге, но что-то мои расчетные данные не сходятся с показаниями осциллографа.

Исходные данные: процессор на ядре mips74K, частота 300mhz, т.е. длина такта 3.3ns, обрабатывает 2 инструкции за такт (судя по документу с mips.com). Дизассемблировал объектный модуль драйвера, нашел ф-цию дергания пином, число инструкций 72, соответственно занимает 36 тактов или 118нс чтобы выставить единицу и столько же чтобы выставить ноль; никаких задержек (udelay) между этими операциями в драйвере нет.

Т.е. получается 118нс * 2=236нс длина фронта, правильно? Осциллограф же показывает 2.6мкс. Откуда еще добавляются такты??
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
XVR
сообщение May 21 2010, 05:47
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата
обрабатывает 2 инструкции за такт
Инструкции бывают разные. И условия их выполнения тоже бывают разные. 2 штуки за такт - это максимум. Реально может быть много меньше (например, если инструкция полезет за данными в память, и их не окажется в кэше, то количество тактом на инструкцию возрастет на пару порядков)
Кроме того, у CPU весьма длинный конвеер (14/15 стадий), если инструкции окажутся зависимыми, то может случиться тормоз тактов на 15.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 3rd August 2025 - 20:44
Рейтинг@Mail.ru


Страница сгенерированна за 0.01367 секунд с 7
ELECTRONIX ©2004-2016