Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: подсчитать количество тактов
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > Linux
romez777
Есть софтверный mdio драйвер под линукс ядро 2.6.20 (один gpio пин на клок, второй на данные). Пытаюсь подсчитать количество тактов, расходуемое процессором на операцию выставления бита на ноге, но что-то мои расчетные данные не сходятся с показаниями осциллографа.

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

Т.е. получается 118нс * 2=236нс длина фронта, правильно? Осциллограф же показывает 2.6мкс. Откуда еще добавляются такты??
XVR
Цитата
обрабатывает 2 инструкции за такт
Инструкции бывают разные. И условия их выполнения тоже бывают разные. 2 штуки за такт - это максимум. Реально может быть много меньше (например, если инструкция полезет за данными в память, и их не окажется в кэше, то количество тактом на инструкцию возрастет на пару порядков)
Кроме того, у CPU весьма длинный конвеер (14/15 стадий), если инструкции окажутся зависимыми, то может случиться тормоз тактов на 15.
xyzzy
Две инструкции за такт - это если повезет. Т.е. если между ними нет зависимостей, что данны для инструкций уже доступны, что инструкции никуда "наружу" лезть не надо и т.д. Т.е. читать надо - "до двух инструкций за такт".

Ваш пин скорее всего расположен в болке, доступ к которому осуществляется через какую-нибудь шину. Обычно периферийные шины работают на частоте ниже частоты ядра и требуют по крайней мере несколько тактов шины, чтобы передать данные. Вот тут, скорее всего ваше время и набегает.
romez777
Большое спасибо за разъяснения! Осциллограф врать не будет smile.gif
Не посоветуете тулзы, аналогичные gprof, но для профилиирования ядра или модулей?

PS. Вроде бы связка VisionICE/VisionCLIK обеспечивает такую возможность, но это не дешево smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.