🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: SSE2: znaczenie wyrównania danych

#1810
From: Bogdan (bogdro)
Date: Sat, 17 May 2008 08:57
36 lines
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-mail
References: <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