Per le AGU dell'A64 concordo, ma mi riferivo ad addizioni "utili", perchè il P4 ha le AGU direttamente attaccate alle unità di load e store (quindi sono 2 AGU). Non so se è meglio così, oppure è meglio calcolare gli effettive address prima (ad un rate di max 3 per clock) ed accodare le istruzioni nelle code dei load e store. Dalla teoria delle code qualcosa mi dice che è meglio questa ultima soluzione
Quindi anche la slow ALU del P4 è "double-pumped"?
Le "fast" alu possono processare 2 istruzioni a 16 bit per clock o una a 32 bit.
Per quelle a 64 bit non so proprio: usare le 2 ALU in parallelo come hai detto tu è la soluzione più semplice, ma non la più veloce.
Se si usasse una sola ALU non si avrebbero constraint di sincronizzazione (se una ALU è occupata, l'istruzione a 64 bit deve attendere) e l'altra ALU rimane libera (una istruzione a 16/32 bit deve attendere il completamento di quella a 64 bit), ma si guadagna qualche ciclo in latenza.