Article View: pl.comp.lang.asm
Article #1192Re: Liczba cykli
From: Bogdan (bogdro)
Date: Sat, 16 Jun 2007 13:16
Date: Sat, 16 Jun 2007 13:16
47 lines
3076 bytes
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-mailReferences:
<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