· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› Скорость выполнения команд

Посл.отвђт Сообщенiе


Дата: Ноя 12, 2003 15:06:00 · Поправил: prog

Где можно взять инфу по скорости выполнения команд, в тактах? И размер в байтах.
Например, что быстрее-

lodsd
или
mov eax, dword ptr [esi]

?


Дата: Ноя 12, 2003 15:17:32

Размер в байтах - где угодно, хоть в отладчике, а скорость зависит от многих вещей, поэтому конкретной информации для _одной_ инструкции ты вряд ли найдешь. В профайлере смотреть можно, или вручную считать :)


Дата: Ноя 12, 2003 15:24:33 · Поправил: prog

хм..
но я помню- для доса был такой хелп , там было расписано про каждую инструкцию- сколько байт и сколько тактов смотря от размерности и типа операндов.

"а скорость зависит от многих вещей" - скорость работы куска кода или целой программы, конечно, зависит от многих вещей, но я имею ввиду одну_инструкцию_процессора, скорость выполнения которой жестко задана железом, принципиальной схемой процессора, тем, как там у него соединены транзисторы.. поэтому скорость выполнения одной инструкции процессора зависит только от состояния его внутреннего программного кэша (и то, наверное, только при работе с памятью) но это уже никто не предскажет конечно, и я это и не учитываю, и от его эл.схемы, так что я имею ввиду- кол-во тактов процессора, за которые он выполнит одну инструкцию.

в MASM32 opcodes.htp :

LODS:

Clocks:
808 : 12/16
286 : 5
386 : 5
486 : 5
Size bytes : 1

а mov reg,mem - 1 такт
чтото мне не верится.

вроде помню что в досе когда чтото делал - вроде все такие штуки- stos lods movs были быстрее..
но может я и забыл..


Дата: Ноя 12, 2003 17:01:14
Правка

А что, Opcodes.hlp не пойдёт? Устарел?

Есть, кажется, в Интелевских мануалах что-то типа справочника. Может, я ошибаюсь...


Дата: Ноя 12, 2003 17:11:03

А что, Opcodes.hlp не пойдёт? Устарел?
:)
не знаю..
смущает то, что там только до 486 данные и поэтому почемуто доверия мало к нему.
опятьже говою- насчет lods - мне почемуто казалось, что это быстрее чем mov reg,mem
т.к. этоже не макро, а инструкция процессора..


Дата: Ноя 12, 2003 17:17:04

Я тебе одно скажу - VTune. Это ответы на все твои вопросы.


Дата: Ноя 12, 2003 17:56:35

неужели все так сложно?


Дата: Ноя 12, 2003 18:09:00 · Поправил: masquer

неужели все так сложно?
Конечно, сложно, инструкции могут паралельно процессором выполняться, соотв. несколько инструкции могут выполняться за 1 такт, как ты их делить будешь? :)


Дата: Ноя 12, 2003 18:14:52 · Поправил: prog

хм..
я думал, что параллельно процессор на самом деле ничего не выполняет.. (это я про пентиумы)
считал, что параллельно - это когда процессор просто прерывается поочередно на каждую "параллельную" задачу и выполняет ее инструкции..
Если он может за один такт выполнить несколько инструкций одновременно, то это (количество аппаратно поддерживаемых параллельных процессов) должно входить в его технические характеристики?
какие они например для P4 ?


Дата: Ноя 12, 2003 19:01:01

prog
Почитайте сперва про pipelining (конвейер).


Дата: Ноя 12, 2003 19:12:05

вот блин..
точно.
все не так просто..
спасибо.


Дата: Ноя 12, 2003 19:55:00

Prog

Тебе поможет книга: Зубков С.В. Assembler для DOS, Windows и Unix (ст. 570-594 и Глава 9 Оптимизация). (команды для Intel 8080 - Pentium III)

Что касается скорости выполнения:
Каждое поколение процессоров индивидуально! Если собираешься делать низкоуровневую оптимизацию под конкретный CPU то изучай хорошо архитектуру (КЭШи, конвейеры и т.д.).
Но будь осторожен, так как это всё очень тонко. Пример: программу оптимизировал под пень второй, когда код цикла сдвинул на один байт, программа стала выполнять свою работу не 4 часа 20 минут, а 5 часов.

Мои тебе рекомендации: используй оптимизацию в построении алгоритма! Это самый большой выигрыш даст.

P.S. Не связывайся ты с этими тактами без большой необходимости.


Дата: Ноя 12, 2003 21:11:00

stres
спасибо


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.063