`push' instructions (was: Bug fixes)_(re)
Sun, 5 May 2097 15:53:13 +0200
According to Peter Gerwinski :
> According to PredatorZeta:
> > Just little clarifying.....:))
> > No. Surely not on 80x86 machines. Look this (is for Pentium):
> >
> > 1 push (mem) take 2 cycles NOT pairable
> >
> > 2 a) mov (mem), reg take 1 cycle pairable
> > AGI Stall (1 cycle+cut off
pairing
> > system)
> > b) push reg take 1 cycle pairable
> >
> > TOTAL: 3 cycles
> >
> > Well, is 2 (not pairable) versus 2 1/2 (not pairable) cycles.....
> > However, with a manual re-ordering it could take only 1 cycle...8-))
> >
> > Hope this clarify......
>
> Partially. As far as I understand the above, it's
>
> push (mem) 2 cycles not pairable
>
> mov (mem), reg 1 cycle pariable
> push reg 1 cycle pairable
>
> so both versions have the same speed, but the second one
> is pairable (-;whatever that means ...
Only theoretically..::)) This is because between the two instructions
there is an AGI stall, a Pentium hardware-generated LOCK
instruction.(why? because there is a read after write!!) 8-< This block
ALL pairing rules and costs 1 cycle. Then:
1 cycle for the MOV pairable (BUT THAT DON'T PAIR!!)
1 cycle for AGI (block all pipeline!!)
1 cycle for the PUSH pairable
=
2 cycles(not pairable) + 1 pairable= 2 1/2 cycles
> I guess it means that
> it is executed in parallel with a floating point operation,
> right?).
Yez, but also PUSH (MEM) can do this...
Cya
PrZ
--
[<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<]
| Codename: PrEdAtOr~Z; Sex: Male; Status: Free coder |
* E-mail: predatorzeta@geocities.com *
| URL: http://www.geocities.com/SiliconValley/Vista/6573 |
[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>]
PredatorZeta (predatorzeta@geocities.com)
HTML conversion by Lluís de Yzaguirre i Maura
Institut de Lingüística Aplicada -
Universitat "Pompeu Fabra"
e-mail: de_yza@upf.es