cosa sono i registri della cpu? a cosa servono?
cosa sono i registri della cpu? a cosa servono?
Sono aree di memoria di lavoro e di appoggio, le più veloci in assoluto di cui il processore dispone. È tramite i registri che operano la maggior parte delle istruzioni del processore.
Amaro C++, il gusto pieno dell'undefined behavior.
sfrutta maggiormente i registri rispetto a cache e ram quindi?
Be', diciamo che i registri sono indispensabili per il funzionamento della CPU, più o meno tutti i dati in fase di elaborazione passano per uno o più registri. Ad ogni istruzione la CPU accede ad almeno un registro (l'instruction pointer, che le dice dove pescare la prossima istruzione da eseguire), più o meno tutte le istruzioni danno l'output in un registro, e molte prendono l'input da uno di essi (esistono poi su molte architetture le varianti che prendono input dalla memoria).
Comunque devi considerare i registri come un tipo di memoria differente, essi contengono i dati su cui il processore sta lavorando al momento, e sono limitati a pochi byte: nell'architettura x86 i registri fondamentali sono nove, da 4 byte ciascuno, dei quali sei sono "general-purpose" (il programma può farci più o meno quel che gli pare, anche se ciascuno è sfruttato in maniera particolare da alcune istruzioni), mentre tre sono più specializzati (stack pointer, stack frame, instruction pointer). Ci sono poi il registro FLAGS, utilizzato per restituire l'esito di confronti e per segnalare particolari situazioni e modi di funzionamento del processore, e i registri relativi ai segmenti, utilizzati per accedere alla memoria secondo il modello di memoria segmentata. La parte di coprocessore matematico (x87) dell'architettura x86 fornisce poi otto registri per numeri in virgola mobile, impiegati collettivamente come uno stack.
Poiché l'architettura x86 è sempre stata piuttosto povera di registri, le successive espansioni al set di istruzioni x86 hanno spesso portato con sé un aumento del numero di registri, in alcuni casi soprattutto per numeri in virgola mobile (MMX, SSE, SSE2, ...); l'avvento dei 64 bit, in particolare, ha fatto sì che i registri esistenti venissero ampliati a 64 bit, e sono stati aggiunti altri otto registri (questa volta davvero general purpose). In effetti il maggior numero di registri disponibili nei processori a 64 bit dovrebbe rendere le applicazioni a 64 bit generalmente più veloci.
Per altre informazioni sui registri, dai un'occhiata qui e, per l'architettura x86, qui.
Amaro C++, il gusto pieno dell'undefined behavior.
Grazie mille. Sei stato chiaro ed esauriente.![]()
Prego; per curiosità, come mai ti interessavano tanto i registri?
Amaro C++, il gusto pieno dell'undefined behavior.
era solo curiosità...mi appassiona l'informatica...solo che non ne so molto ed allora sto cercando di informarmi il più possibile