Quote:
Originariamente inviato da Maury
Il NW è un grande procio, ma che stai a dì
|
diciamo che avrebbe potuto nascere meglio... svariate caratteristiche del design erano frutto di compromessi , come d' altra parte si appurava su svariati documenti per sviluppatori creati dalla stessa intel
come il mai abbastanza esaminato "willamette software development guide"
http://developer.intel.com/design/processor/wmtsdg.htm
per me è stato abbastanza illuminante... spiega ad esempio che :
- la pipeline è stata resa più lunga (in realtà sarebbe più profonda) rispetto a quella del precedente p3 , e quello si sa,
- è stata implementata la cache ETC , di per sè un concetto rivoluzionario per una cache , perchè insieme alle istruzioni memorizza anche i branch cercando di riempire una cache line (da 8) con le microops che appartengono a uno stesso flusso esecutivo, anche al di là dei salti
- è stato rifatto lo scheduler delle istruzioni per l' esecuzione fuori ordine , la rete di bypass e la gestione dei registri (che sono almeno 128 fisici)
ora, le modifiche di cui sopra hanno introdotto parecchi transistor (la ETC è 4 volte più complessa di una normale L1C), e quindi anche se il progetto originale del willamette prevedeva ad esempio, 2 unità FPU separate(1 ADD e 1 MUL come sull' athlon) , ne è stata usata una integrata per tutti i tipi di operazioni FP, che giri al doppio del clock nominale come per le alu intere
lo svantaggio è che siccome hanno ben pensato che una operazione SSE2 a 128 bit valesse come 2 istruzioni floating point con doppia precisione, anche le istr MMX e X87 sono penalizzate dal fatto che l' unità a cui sono inviate accetta comunque una sola struzione per volta
inoltre, avere la cache ETC, accelera i loop perchè ho un flusso continuo di microops già decodificate... (anzi imho per questo motivo non sussiete neppure l' argomento secondo cui "pipeline più lunga + errore di branch -> maggiore penalità" , perchè non è detto che si debba sempre svuotare l' intera pipeline, magari solo i 6 stadi che stanno tra le fasi ETC e schedule )
però questo ha indotto a ritenere che il decoder supercalare (che "crea" le istruzioni interne a partire dalle X86) fosse superfluo in quanto esterno al tratto principale della pipeline : decoder che era a 3 vie in p3 e athlon, a 4 (anche se è diverso, si parla di "dispatch level) nei risc moderni
per conto mio sono questi gli elementi che hanno fatto del p4 una cpu che rende bene in certi casi e male in altri , se lo si confronta con architetture più "omogenee" dal punto di vista progettuale... certo , attraversando un paio di "major release" è maturato al punto da diventare più "equilibrato prestazionalmente" oltre che (come tutti i prodotti intel) affidabile