Finestra del registro

Nell'architettura del computer, le finestre di registro costituiscono una tecnica per migliorare le prestazioni delle chiamate di funzione . Sono stati utilizzati per la prima volta nei processori RISC di Berkeley, che sono la fonte delle architetture SPARC , AMD 29000 e Intel i960 .

La maggior parte dei processori ha un piccolo numero di memorie molto veloci chiamate registri . I processori utilizzano i registri per memorizzare temporaneamente i valori durante l'esecuzione delle suite di istruzioni. L'aumento del numero di registri nella progettazione iniziale del processore può comportare notevoli miglioramenti delle prestazioni.

Sebbene i registri siano un fattore di prestazioni, hanno anche degli svantaggi. Diverse parti di un programma per computer utilizzano ciascuna i propri valori temporanei e quindi tutte desiderano utilizzare i registri. Poiché è molto difficile comprendere appieno il flusso di esecuzione di un programma, non esiste un modo semplice per consentire allo sviluppatore di sapere in anticipo quanti registri deve utilizzare ciascuna parte di un programma. Di solito, considerazioni come questa vengono semplicemente ignorate: gli sviluppatori e ancor più probabilmente i compilatori che usano cercano di utilizzare tutti i registri visibili. Questo è anche l'unico modo corretto di procedere se il processore utilizzato ha pochi registri.

È qui che entrano in gioco le finestre del registro. Poiché ogni parte del programma vorrebbe avere registri per sé, è sufficiente fornire diversi set separati di registri alle diverse parti del programma. Il problema è che se tutti i registri sono visibili, una parte vorrà utilizzare i registri che non fanno parte dell'insieme di registri che gli sono stati assegnati. Il trucco sta quindi nel rendere invisibili ad esso tutti i registri che non appartengono al suo insieme di registri.

Pertanto, nella progettazione del Berkeley RISC, i programmi vedono solo 8 registri su un totale di 64. L'insieme completo di registri costituisce una banca di registri e ogni sottoinsieme di 8 registra una finestra . In questo modo, possono esserci fino a 8 chiamate di funzione che hanno il proprio set di 8 registri ciascuna. Se il programma non presenta chiamate di funzione annidate la cui profondità supera 8, allora il processore non ha bisogno di scaricare i registri, vale a dire di salvarli nella memoria principale o nella cache, memorie i cui tempi di accesso sono estremamente lenti rispetto a quella dei registri. Si noti inoltre che studi statistici su programmi come sistemi operativi o applicazioni reali hanno dimostrato che la profondità massima delle chiamate annidate è in media 8 e che una profondità maggiore si incontra solo nell'1% dei casi.

Vedi anche

Riferimenti

  1. Confronto CISC / RISC