linux user group brescia

immagine del castello

Archivio della mailing list

VERO bitmap

Marcello Urbani murbani a libero.it
Mar 13 Maggio 2003 09:18:20 UTC


Bauno wrote:

>On Monday 12 M
>
>I registri degli x86 (dal 386 in poi, athlon compreso) sono a 32 bit.
>Saprai senz'altro (almeno, lo spero! :) che, prima di eseguire una
>qualunque operazione, devi caricare gli operandi nei registri. Ne
>
Scusa la pedanteria, ma questo avviene nei processori RISC, su x86 si 
può indirizzare direttamente la memoria (e spesso i compilatori lo 
fanno, anche perchè questa architettura soffre di una cronica carenza di 
registri).

>consegue che puoi operare al massimo su 32 bit x volta. Se usi variabili
>a 64 bit, queste vengono caricate e manipolate un pezzo alla volta.
>L'incremento prestazionale è nullo.
>
Non ne sarei così sicuro: se non ricordo male il vecchio Z80, che aveva 
i registri ad 8 bit, era in grado di fare alcune operazioni a 16 bit 
accoppiandone due; comunque per lavorare su stringhe di bit la cosa è 
irrilevante.

>Un'eccezione in realtà c'è, puoi usare il coprocessore matematico che ha
>registri + lunghi (128 bit, se non mi ricordo male) x fare operazioni su
>interi, xò tieni presente che:
>1) Caricare gli operandi nei registri della FPU è dispendioso in termini
>di cicli di CPU.
>2) Devi forzare la cosa in assembly.
>
>Non sono peraltro aggiornato sulle prestazioni della FPU sulle
>operazioni "tra interi", non giurerei sulla velocità...
>  
>
Se non sbaglio (non conosco bene l'assembler) esiste una operazione per 
passare il controllo dal processore al coprocessore matemetico, che sui 
386 richiedeva molto tempo, ma credo che ora sia stata ottimizata ad un 
ciclo o 0, non so come influenza la pipeline.
Comunque i registri del coprocessore sono organizzati a stack, e non so 
se esistono opcode per accedere ai singoli bit, per cui temo sia una 
cosa molto lenta.
Comunque se lasci fare al compilatore non li usa (a meno di usare un 
tipo di intero progettato apposta, credo che GCC ce l'abbia; ovviamente 
queste features non sono portabili).

Marcello




Maggiori informazioni sulla lista Lug