Upgrade sistema (solo info preliminari)
Luca Giuzzi
giuzzi a dmf.bs.unicatt.it
Ven 9 Feb 2001 13:19:11 UTC
...un commento su ABSTAIN FROM (che non ho incluso nel mail precedente):
Per una architettura di processore disegnata per lavorare a frequenze
alte, il dover ricaricare tutta la cache dalla DRAM e' un collo di
bottiglia estremamente oneroso. Al fine di evitare questo inconveniente
tutti i processori dal Pentium66 in poi (per ia32... su RISC da prima!)
includono una BPU o Branch Prediction Unit. Il fine della BPU e' di
`indovinare' se una istruzione di salto condizionale sara' eseguita
oppure no e, nel caso, fare il preload della cache. Il problema e' che
1. in un ciclo, la BPU non puo' fornire risultati significativi sin dopo la
seconda iterazione;
2. non sempre la BPU ha ragione.
Al fine di evitare questo collo di bottiglia l'architettura ia64 prevede l'idea
di eliminare il piu' possibile i salti condizionati, sostituendoli con
blocchi di istruzioni da cui il processore puo' decidere di `astenersi'.
Un compilatore deve ottimizzare il flusso del programma in modo da seguire
questa strategia piuttosto che introdurre salti condizionati nelle sezioni
critiche del codice. Evidentemente questo e' un lavoro non da poco
per linguaggi come il C o, peggio ancora, il fortran, ove l'istruzione
goto e' presente e usata. D'altro canto la funzionalita' e' mappata
direttamente in INTERCAL, cosa che facilita enormemente la realizzazione
di un compilatore ottimizzante.
[Nota a margine: Woods & Lyon hanno avuto il buon senso di non includere
il costrutto GO TO nel loro linguaggio; e' lasciato come esercizio al
lettore vedere come questo contribuisca a sviluppare codice molto piu'
leggibile]
Ciao,
lg
Maggiori informazioni sulla lista
Lug
|