программистское
Пишу на ассемблере! Просто чуть ли не "бойцы вспоминают минувшие дни".
.text
.globl readcounter
readcounter:
pushl %ebx
pushl %ecx
subl %eax, %eax
cpuid
rdtsc
pushl %eax
pushl %edx
subl %eax, %eax
cpuid
popl %edx
popl %eax
popl %ecx
popl %ebx
ret
.size readcounter, .-counter
no subject
no subject
no subject
Тот самый классический ассемблер я ненавидела, а другой известный тебе бывший программер очень даже любил.
no subject
... Эстетически мотивированное любопытство ...
no subject
no subject
... She sells the seashells on the seashore ...
no subject
no subject
subl %eax, %eax
Re: subl %eax, %eax
глубокую мысль
bash to bash
Re: subl %eax, %eax
Re: subl %eax, %eax
Re: subl %eax, %eax
no subject
no subject
Реально жрет энергию текущий по проводам ток и перезаряд емкостей.
В реализации вычитания проводов заметно больше, чем в реализации побитовых операций.
no subject
offtopic
no subject
no subject
no subject
no subject
no subject
Мне вот интересно,
(Anonymous) 2007-02-13 05:22 pm (UTC)(link)no subject
В общем, как обычно выглядит. eax это нижняя половина rax итд.
Основные инструкции те же.
no subject
no subject
no subject
no subject
no subject
no subject
Но как-то симметричнее и последовательнее так, по-моему. А что касается самих затрат, я все равно буду учитывать (примерные) затраты на cpuid при калибровке результатов, так какая уж разница, один раз или два.
no subject
no subject
no subject
Проще говоря, если даже в случае без 2го cpuid будет какое-то "убыстрение" (хотя неясно, относительно чего), то в случае с ним будем замедление, которое гораздо труднее учесть.
Против "подобно тому...": первый cpuid делается только чтобы избежать OOO исполнения самого rdtsc. OOO исполнения чего нужно избежать после rdtsc?
Извините, что так длинно :)
no subject
no subject
Во-вторых, задержка у него самого меняется 90 до 120 циклов в зависимости от знака зодиака и погоды на Марсе, так что абсолютной точности не добиться.
http://softwarecommunity.intel.com/ISN/Community/en-US/forums/thread/30226599.aspx
no subject
no subject
no subject
no subject
no subject
no subject
no subject
Разные Люди советуют всё-таки использовать АПИ (под виндой - QueryPerformanceFrequency/QueryPerformanceCounter), которые вешаются на какой-то другой счётчик, насколько я понял, потому что Есть Нюансы. Оно, конечно, гораздо тормознее (когда я мерял, вызов QueryPerformanceCounter занимал несколько тысяч тактов), но его ж и не нужно часто вызывать.
Из нюансов -- проблемы на многопроцессорных системах (рекомендуется выставлять аффинити тому треду, которому нужно это всё мерять и раздавать окружающим) и на некоторых мобильных процессорах, которые самопроизвольно роняют тактовую частоту при высоком айдл тайме.
no subject
И про многопроцессоры понимаю. И про другие счетчики знаю, но спасибо все равно :) (но я в основном на линуксе запускать буду. но там тоже есть). Я в основном для самоудовлетворения, плюс все-таки для некоторых конкретных целей (сравнения нескольких разных алгоритмов на многих наборах исходных данных, причем алгоритмы бегут быстро, на однопроцессорной машине и в среднем намного быстрее, чем может переключиться контекст на другой тред - а такие редкие исключения можно убрать усреднением по медиане нескольких результатов; и все это для улучшения своего собственного понимания) хорошо подходит.
no subject
no subject
no subject