программистское
Feb. 13th, 2007 04:52 pmПишу на ассемблере! Просто чуть ли не "бойцы вспоминают минувшие дни".
.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
Date: 2007-02-13 06:27 pm (UTC)Но как-то симметричнее и последовательнее так, по-моему. А что касается самих затрат, я все равно буду учитывать (примерные) затраты на cpuid при калибровке результатов, так какая уж разница, один раз или два.
no subject
Date: 2007-02-13 07:08 pm (UTC)no subject
Date: 2007-02-13 08:01 pm (UTC)no subject
Date: 2007-02-13 08:54 pm (UTC)Проще говоря, если даже в случае без 2го cpuid будет какое-то "убыстрение" (хотя неясно, относительно чего), то в случае с ним будем замедление, которое гораздо труднее учесть.
Против "подобно тому...": первый cpuid делается только чтобы избежать OOO исполнения самого rdtsc. OOO исполнения чего нужно избежать после rdtsc?
Извините, что так длинно :)
no subject
Date: 2007-02-18 11:28 pm (UTC)no subject
Date: 2007-02-14 02:11 am (UTC)Во-вторых, задержка у него самого меняется 90 до 120 циклов в зависимости от знака зодиака и погоды на Марсе, так что абсолютной точности не добиться.
http://softwarecommunity.intel.com/ISN/Community/en-US/forums/thread/30226599.aspx
no subject
Date: 2007-02-14 03:26 am (UTC)no subject
Date: 2007-02-14 05:02 am (UTC)no subject
Date: 2007-02-18 11:29 pm (UTC)