🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.asm
Article #1192

Re: Liczba cykli

#1192
From: Bogdan (bogdro)
Date: Sat, 16 Jun 2007 13:16
47 lines
3076 bytes
Lopez pisze:
> Day napisał(a):
>> Witam,
>>
>> Mym pytaniem jest: W jaki sposób policzyć liczbę cykli wykonywanych na
>> daną operację na naszym procesorze oraz jak obliczyć wielkość[rozmiar w
>> bajtach] danej operacji?
> 
> Liczbę cykli możesz zmierzyc, hint: rdtsc
> Ale to i tak nie da miarodajnych wyników dla pojedynczej instrukcji,
> ponieważ wspołczesne procesory potrafia przetwarzac kilka instrukcji
> w jednym czasie,

 Tak, patrz: wytłumaczenie instrukcji CPUID w moim poście numer 2.

> a w systemach wielozadaniowych istnieje też
> prawdopodobienstwo, że system zmieni kontekst.

 Prawda. Nieracjonalnie wysokie wyniki należy wtedy odrzucić. I tak
należy wykonać kilka testów, każdy o innej liczbie iteracji. Należy
patrzeć, czy czasy rosną proporcjonalnie do liczby iteracji. Jeśli nie
(tzn. urosło dużo za dużo), to pewnie nastąpiło przełączenie zadań i
wynik należy odrzucić. Z nieodrzuconych wyciągnąć średnią.

[...]

> Zdecydowana większosc instrukcji (szczególnie te proste) zajmuje
> formalnie jeden cykl procesora, natomiast przy dobrej optymalizacji
> kodu bedą się one wykonywały po dwie jednocześnie, a wiec 0,5 cykla.
> Tylko niektore instrukcje nie nie mogą być wykonywane wraz z innymi,
> i nie mieszcza sie w tej normie bądź wykonują sie znacznie dłużej.

 Współcześnie sprawa jest jeszcze trudniejsza. Każda instrukcja ma
czas trwania i przepustowość. Oznaczają one czas wykonania instrukcji
w pełni oraz czas, po którym może być zaczęta podobna instrukcja. NOPy
bodajże idą w tempie 3 sztuk na cykl, MOV i inne proste instrukcje
rzeczywiście w 0,5 taktu, ale to wszystko zależy od złożoności
instrukcji, np. czasem potrzebny jest dodatkowy czas na obliczenie
adresu efektywnego zawartego w instrukcji lub poczekanie na wykonanie
zależności. Niektóre instrukcje FPU trwają setki cykli i tu
optymalizacja niewiele pomoże.

-- 
Pozdrawiam - Bogdan                                 (Linux i FreeDOS)
Kurs asemblera x86  (DOS i Linux):  http://rudy.mif.pg.gda.pl/~bogdro
Grupy dyskusyjne o asm:  pl.comp.lang.asm alt.pl.asm alt.pl.asm.win32
Rozmawiaj bezpiecznie: www.JabberPL.org Surfuj anonimowo: tor.eff.org
Technical Details
Message-ID: <f50nrt$qk9$1@inews.gazeta.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
References: <f509r6$m75$1@news.task.gda.pl> <f50bac$7cr$1@inews.gazeta.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
From: "Bogdan (bogdro)" <bogdan@poczta.gazeta.pl>
Newsgroups: pl.comp.lang.asm
Subject: Re: Liczba cykli
Date: Sat, 16 Jun 2007 15:16:39 +0200
Organization: "Portal Gazeta.pl -> http://www.gazeta.pl"
Lines: 47
Message-ID: <f50nrt$qk9$1@inews.gazeta.pl>
References: <f509r6$m75$1@news.task.gda.pl> <f50bac$7cr$1@inews.gazeta.pl>
NNTP-Posting-Host: rudy.mif.pg.gda.pl
Mime-Version: 1.0
X-Trace: inews.gazeta.pl 1181999807 27273 153.19.42.16 (16 Jun 2007 13:16:47 GMT)
X-Complaints-To: usenet@agora.pl
NNTP-Posting-Date: Sat, 16 Jun 2007 13:16:47 +0000 (UTC)
X-User: bog.d
In-Reply-To: <f50bac$7cr$1@inews.gazeta.pl>
User-Agent: Thunderbird 2.0.0.0 (X11/20070326)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit