Article View: pl.comp.lang.asm
Article #1810Re: SSE2: znaczenie wyrównania danych
From: Bogdan (bogdro)
Date: Sat, 17 May 2008 08:57
Date: Sat, 17 May 2008 08:57
36 lines
2686 bytes
2686 bytes
Wojciech Muła pisze: > Kontynuacja ostatniego tematu, tj. SSE2 wolniejsze niż MMX; > testowany algorytm http://wmula.republika.pl/snippets/asm/blur.c > (rozmycie obrazków grayscale). > > Tym razem testy przeprowadziłem na komputerze C2D E8200 -- na > nim większość całkowitoliczbowych rozkazów SSE wykonuje się w > jednym cyklu. Po zgrubnej zamianie nazw rejestrów i użyciu > MOVDQU (dla bezpieczeństwa) doznałem szoku: kod wolniejszy niż > MMX! Prawie zemdlałem. :) :) > Spróbowałem użyć zamiast MOVDQU rozkazu LDDQU -- nie pomogło. > W sumie dane mieściły się w L2, więc raczej nie mogło. > > Ostatecznie postanowiłem wyrównać adresy dwóch struktur, do > których odwołują się procedury (obraz oraz pomocnicza tablica), > wszystkie odczyty i zapisy do pamięci wykonują się poprzez > MOVDQA, zaś dane niewyrównane które są potrzebne zostały > wyciągnięte rozkazem PALIGNR. I wiecie co? Przyspieszenie > o 95% w stosunku do kodu MMX2 (przyspieszenie 6 razy w stosunku > do kodu x86). No to niezły wynik. Jednak co jedna operacja na pamięci, to nie dwie :) A nawet przy danych w L2 cache to robi różnicę. L2 jest sporo (kilkakrotnie?) wolniejsza od L1, które to z kolei jest pewnie sporo wolniejsze od rejestrów. Natrafiłeś na moment, w którym problemem wydajnościowym nie jest algorytm, lecz pamięć. Próbowałeś używać PREFETCH* do wcześniejszego pobrania danych bliżej procesora? -- Pozdrawiam/Regards - Bogdan (GNU/Linux & FreeDOS) Kurs asemblera x86 (DOS, GNU/Linux):http://rudy.mif.pg.gda.pl/~bogdro Grupy dyskusyjne o asm: pl.comp.lang.asm alt.pl.asm alt.pl.asm.win32 www.JabberPL.org www.TorProject.org Soft (EN): miniurl.pl/bogdro-soft
Technical Details
Message-ID:
<g0m6mn$mia$1@inews.gazeta.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mailReferences:
<20080516224152.58baddcc.wojciech_mula@poczta.null.onet.pl.invalid>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: SSE2: znaczenie wyrównania danych Date: Sat, 17 May 2008 10:57:55 +0200 Organization: "Portal Gazeta.pl -> http://www.gazeta.pl" Lines: 36 Message-ID: <g0m6mn$mia$1@inews.gazeta.pl> References: <20080516224152.58baddcc.wojciech_mula@poczta.null.onet.pl.invalid> NNTP-Posting-Host: gpftor3.privacyfoundation.de Mime-Version: 1.0 X-Trace: inews.gazeta.pl 1211014681 23114 91.121.102.64 (17 May 2008 08:58:01 GMT) X-Complaints-To: usenet@agora.pl NNTP-Posting-Date: Sat, 17 May 2008 08:58:01 +0000 (UTC) X-User: bog.d In-Reply-To: <20080516224152.58baddcc.wojciech_mula@poczta.null.onet.pl.invalid> User-Agent: Thunderbird 2.0.0.14 (X11/20080421) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit