🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.asm
12 messages
12 total messages Started by Wojciech Muła Wed, 07 May 2008 18:50
pusha/popa
#1796
Author: Wojciech Muła
Date: Wed, 07 May 2008 18:50
3 lines
1017 bytes
Ile cykli wynosi opóźnienie pusha/popa na Core2?

w.
Re: pusha/popa
#1797
Author: re-l
Date: Thu, 08 May 2008 13:20
10 lines
1258 bytes
http://developer.intel.com/design/processor/manuals/248966.pdf

:)

ale chyba tam nie znajdziesz bo ten opcode jest wewnetrznie dekodowany
z tego co mi sie kolacze to na core2 pushad ma 5 cykli
(aczkolwiek moge sie mylic)

-- 
re-l
Re: pusha/popa
#1799
Author: Wiktor S.
Date: Thu, 08 May 2008 21:45
8 lines
1040 bytes
> Ile cykli wynosi opóźnienie pusha/popa na Core2?

Porównaj jakiś bilion nopów z taką samą ilością pusha+popa i będziesz 
wiedział ;-)


-- 
Azarien
Re: pusha/popa
#1798
Author: Wojciech Muła
Date: Fri, 09 May 2008 20:24
18 lines
1492 bytes
"re-l" <xxx@spam.no> wrote:

> http://developer.intel.com/design/processor/manuals/248966.pdf
> 
> :)
> 
> ale chyba tam nie znajdziesz bo ten opcode jest wewnetrznie dekodowany

No właśnie zauważyłem, że tam nie ma nie tylko pusha/popa ale i dużej
liczby innych rozkazów.  Dlatego tutaj zapytałem.

> z tego co mi sie kolacze to na core2 pushad ma 5 cykli
> (aczkolwiek moge sie mylic)

U Agnera Foga znalazłem czasy dla P4 i jeśli teraz dobrze pamiętam,
to było coś 4-6 cykli.

w.
Re: pusha/popa
#1800
Author: Wojciech Muła
Date: Fri, 09 May 2008 20:27
12 lines
1355 bytes
"Wiktor S." <wswiktor&poczta,fm@no.spam> wrote:

> > Ile cykli wynosi opóźnienie pusha/popa na Core2?
> 
> Porównaj jakiś bilion nopów z taką samą ilością pusha+popa i będziesz 
> wiedział ;-)

To już prędzej wprost zmierzyć liczbę cykli za pomocą PMC.
Ale dopiero w przyszłym tygodniu będę miał komputer z Core2 --
wtedy przetestuję i Wam podam wyniki.

w.
Re: pusha/popa
#1802
Author: Wojciech Muła
Date: Fri, 16 May 2008 20:35
11 lines
1420 bytes
"Wiktor S." <wswiktor&poczta,fm@no.spam> wrote:

> > Ale dopiero w przyszłym tygodniu będę miał komputer z Core2 --
> > wtedy przetestuję i Wam podam wyniki.
> 
> jak masz gotowy test to mogę ci odpalić i podać wyniki na Q6600.

Dzięki, jednak niestety nie miałem ostatnio czasu żeby coś przygotować.
W międzyczasie Core2 pojawił się w pobliżu.

w.
Re: pusha/popa
#1805
Author: Dyziek
Date: Fri, 20 Jun 2008 16:31
3 lines
1098 bytes
Ja się podepnę do tematu pusha i popa.
Wiecie może jaki jest sens robienia pusha a zaraz potem popa ?
Ewentualnie popa a potem pusha ?
Re: pusha/popa
#1806
Author: Bogdan (bogdro)
Date: Sat, 21 Jun 2008 08:32
17 lines
1573 bytes
Dyziek pisze:
> Ja się podepnę do tematu pusha i popa.
> Wiecie może jaki jest sens robienia pusha a zaraz potem popa ?

  Możliwe, że można tego użyć do wykrywania rodzaju procesora 
(wkładana jest nowa lub stara wartość rejestru SP), ale nie wiem, czy 
jedno bezpośrednio po drugim może służyć temu celowi.

> Ewentualnie popa a potem pusha ?

  Tak, próba spowodowania błędu stosu :)

-- 
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
Re: pusha/popa
#1807
Author: Dyziek
Date: Sat, 21 Jun 2008 14:49
8 lines
1175 bytes
Bogdan (bogdro) pisze:
> Dyziek pisze:
>> Ewentualnie popa a potem pusha ?
> 
>  Tak, próba spowodowania błędu stosu :)
> 

nie no, oczywiście na stosie już coś było wcześniej kładzione ;)
Re: pusha/popa
#1803
Author: Wojciech Muła
Date: Sun, 22 Jun 2008 23:25
41 lines
2281 bytes
On Fri, 9 May 2008 22:27:28 +0200 Wojciech Muła (czyli ja) wrote:

> "Wiktor S." <wswiktor&poczta,fm@no.spam> wrote:
> 
> > > Ile cykli wynosi opóźnienie pusha/popa na Core2?
> > 
> > Porównaj jakiś bilion nopów z taką samą ilością pusha+popa i
> > będziesz wiedział ;-)
> 
> To już prędzej wprost zmierzyć liczbę cykli za pomocą PMC.
> Ale dopiero w przyszłym tygodniu będę miał komputer z Core2 --
> wtedy przetestuję i Wam podam wyniki.

Długo to trwało, ale wreszcie znalazłem czas na parę testów na Core2 E8200.


1. Test samego PUSHA:

		mov [old_ESP], esp	// zachowanie rejestru esp
	pętla:
		pusha
		mov esp, [old_ESP]
		loop pętla

   Pętla powtarzana 10 mln razy --- ok. 14-15 cykli/iterację; trzeba wziąć
   poprawkę na obsługę pętli oraz odtwarzanie ESP, myślę że to będzie 1-2
   cykle.  Dla porównania kod symulujący PUSHA złożony z szeregu pojedynczych
   instrukcji PUSH wykonuje się w czasie ok. 12-16 cykli, więc nieco szybciej.


2. Test pary PUSHA/POPA:

	pętla:
		pushal
		popal
		loop pętla

   Pętla powtarzana 10 mln razy --- 19-20 cykli/iterację.  [Prawie] równoważy
   kod złożony z instrukcji PUSH i POP potrzebuje trochę mniej, bo 15-19 cykli.

w.
Re: pusha/popa
#1804
Author: Wojciech Muła
Date: Wed, 25 Jun 2008 18:21
12 lines
1463 bytes
On Mon, 23 Jun 2008 01:25:01 +0200 Wojciech Muła
<wojciech_mula@poczta.null.onet.pl.invalid> wrote:

> Długo to trwało, ale wreszcie znalazłem czas na parę testów na Core2
> E8200.
> [...]

Powtórzyłem testy -- zmierzyłem czasy dla pustych pętli, odjąłem je od
wyników: pusha -- 9-10 cykli, sekwencja pusha/popa -- 14 cykli.  Dla
równoważnych ciągów push i pop czasy się wahają 8-14, oraz 10-16 cykli.

w.
Re: pusha/popa
#1808
Author: Wiktor S.
Date: Tue, 01 Jul 2008 14:15
12 lines
1245 bytes
>>> Ewentualnie popa a potem pusha ?
>>
>>  Tak, próba spowodowania błędu stosu :)
>>
>
> nie no, oczywiście na stosie już coś było wcześniej kładzione ;)

podjęcie rejestrów ze stosu, ale tak by na tym stosie pozostały.


-- 
Azarien
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads