C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Где найти? Время выполнения процессором операций, Где найти? Время выполнения процессором
vvkot
Отправлено: 22.11.2006, 09:06


Ученик-кочегар

Группа: Участник
Сообщений: 20



Где найти? Время выполнения процессором операций. Есть очень коротенький код, выполняющийся миллиарды раз, необходимо вылизать помаксимуму, хотелось бы подобрать наиболее короткие операции, где узнакть за сколько тактов делается какая операция на пентиуме 4.
Tantos
Отправлено: 22.11.2006, 14:44


Станционный диспетчер

Группа: Участник
Сообщений: 108



GetTickCount()?
Grigoriy
Отправлено: 22.11.2006, 14:58


Мастер участка

Группа: Участник
Сообщений: 381



Время выполнения участка машинного кода (с относительно большим количеством выполняемых инструкций) можно вычислить используя инструкцию
RDTSC (без операндов)
она читает 64-разрядный счетчик времени TSC, значение которого нарастает на 1 с каждым тактом ядра процессора. Значение счетчика помещается командой в пару 32-разрядных регистров общего назначения
edx:eax (старшее двойное слово — в edx). Команда впервые появилась в микропроцессоре Pentium.
И насколько я измерял, то могу сказать, что сама она выполняется за 80 тактов примерно.

Вообще, если вам нужно знать самые "медленные" команды, могу написать так, навскидку,
медленно выполняются операция умножения чисел без знака mul
операция умножения чисел со знаком imul
операция деления чисел без знака div
операция деления чисел со знаком idiv
(операнды не указываю)
эти команды выполняются ориентировочно за 15...20 тактов,
а также операции умножения и деления FPU.
По моим измерениям операции умножения из набора инструкций MMX выполняются в два раза быстрее (видимо разработчики выделили больше транзисторов для этих блоков АЛУ под умножение на каждое упакованное число).
Используйте расширения MMX и XMM (SSE, SSE2, SSE3, 3DNow!)арифметико-логического устройства.
Следует также учесть, что обмен между ядром процессора и КЭШ-памятью 2 уровня происходит в несколько раз быстрее, чем обмен между ядром процессора и оперативной памятью (тактовые частоты различаются). По моим измерениям для моего компьютера, например,

соотношение скорости чтения из кэш_2_уровень к скорости чтения из оперативной памяти в 7 раз

соотношение скорости записи в кэш_2_уровень к скорости записи в оперативную память — в 20 раз.

Из тех ссылок, что я тебе могу дать, это ссылки на вот этой странице
http://developer.intel.ru/design/pentium4/...cumentation.htm

И если по ним полазить, то вот такие ссылки на англоязычные документы
Часть 1: Основы архитектуры описывает архитектуру и среду программирования архитектуры Intel® IA-32. Документ
(Имя файла/Размер: 25366517.pdf, 3,17 МБ)
http://developer.intel.ru/download/design/...ls/25366517.pdf

Справочник по набору команд, A-M описывает формат набора команд архитектуры IA-32 и рассказывает о справочных страницах инструкций от А до М. Документ (Имя файла/Размер: 25366617.pdf, 2,57 МБ)
http://developer.intel.ru/download/design/...ls/25366617.pdf

Справочник по набору команд, N-Z описывает формат набора команд архитектуры IA-32 и рассказывает о справочных страницах инструкций от N до Z. Документ
(Имя файла/Размер: 25366717.pdf, 2,08 МБ)
http://developer.intel.ru/download/design/...ls/25366717.pdf

Том 3: Руководство по системному программированию описывает поддержку операционных систем процессорами на базе архитектуры IA-32, в том числе функции управления памятью, защиты, управления задачами, обработки прерываний и исключений и режим системного управления. Документ
(Имя файла/Размер: 25366817.pdf, 5,56 МБ)
http://developer.intel.ru/download/design/...ls/25366817.pdf

Архитектура Intel IA-32 — руководство по оптимизации содержит информацию по микроархитектуре Intel NetBurst® и микроархитектуре процессоров Pentium® M. Описывает методики оптимизации программного кода, позволяющие отладить приложение для получения оптимальных результатов при работе с процессорами Pentium®, Intel® Xeon® и Pentium® M. Документ
(Имя файла/Размер: 24896612.pdf, 1,86 МБ)
http://developer.intel.ru/download/design/...ls/24896612.pdf


Отредактировано Grigoriy — 22.11.2006, 15:02
vvkot
Отправлено: 22.11.2006, 19:51


Ученик-кочегар

Группа: Участник
Сообщений: 20



Спасибо за столь подробный ответ и приведенные ссылочки

Вернуться в Вопросы программирования в C++Builder