Intel
Itanium 2 Montecito: livelli record in virgola mobile
di Paolo Corsini pubblicata il 07 Luglio 2005, alle 09:31 nel canale Private Cloud
Il debutto delle cpu Itanium 2 basate su core Montecito si avvicina: Intel annuncia valori record per le performances di questi sistemi nell-esecuzione di calcoli in floating point
74 Commenti
Gli autori dei commenti, e non la redazione, sono responsabili dei contenuti da loro inseriti - infoOvviamente sì, e dipendono da diversi fattori, fra quelli da elencati prima quando parlavo in generale di processori in-order, e a cui neppure Itanium può sottrarsi (anzi).
x Cecco BS: di niente.
Nella ignore list deve aver messo anche la predicazione. Non parlarne e far finta che non esista sembra l'unico modo per sostenere questa tesi...
...E poi le CPU pensate per il calcolo parallelo con molte pipeline non hanno il problema di occupare una pipeline in più per quei pochi cicli che intercorrono tra quando si iniziano a riempire le pipeline stesse e quando il predicato viene processato effettivamente...
Con la tecnologia degli sleep transistors dinamici che verrà introdotta nel processo a 65nm, poi, ci sarà la possibilità di attivare o disattivare risorse inutilizzate (del core e della cache) con una notevole riduzione del leakage. Su una CPU OOO, il branch predictor deve restare comunque sempre attivo e non può essere mai disabilitato per poter ridurre il leakage.
Io non ho parlato di stallo per errate predizione, ho detto semplicemente stallo.
[QUOTE]
...O meglio, la "predizione" ([u]statica, però, e demandata al compilatore e non alla CPU[/u]) esiste negli Itanium per il programmatore che decide di non avvalersi della predicazione, solo in quel caso puoi avere stallo.
Secondo me, però, sarebbe come comprare una Ferrari e metterci l'impianto a GPL. L'Itanium è fatto per sfruttare il parallellismo a livello di istruzioni (ILP) attraverso la predicazione. Scegliere di utilizzare i salti condizionati invece dei predicati equivale a scegliere di far andar piano i programmi.
La predicazione non risolve tutte le possibili situazioni in cui uno stallo può verificarsi, ad es. perchè il codice per quanto il compilatore possa ottimizzare il codice per l'architettura EPIC, non riuscirà mai a "parallalelizzarlo" completamente.
stanno nel fatto che un compilatore per quanto efficiente non può risolvere tutte le situazioni che si presentano.
Il codice è una sequenza di istruzioni e ci saranno casi in cui, compilatore + o - affinato, un'istruzione non potrà essere eseguita in parallelo perchè l'istruzione successiva ad es. è collegata alla precedente.
Esempio stupido:
nel mio programma mi trovo ad un certo punto a dover sommare la variabile1 alla variabile 2. Subito dopo il risultato dell'addizione dovrà essere sommato alla variabile 3.
Come faccio ad eseguire in parallelo le due istruzioni?
Non posso.
Non solo...accade n così di rado che siano i programmatori stessi a dover rivedere il codice di un programma ( ad es portandolo da una piattaforma x86 all'IA-64) perchè la macchina non può arrivare ad un certo risultato, richiesto per poter beneficiare il + possibile dell'architettura EPIC.
Queste operazioni in termini di tempo possono essere costose e tempo = denaro
Predicazione e predizione alla fine sono due strumenti che nascono per risolvere lo stesso problema, anche se in maniera completamente diversa: quello di gestire le condizioni che portano o posso portare a un cambiamento nel flusso del codice.
Non penso che sia fattibile: proprio per la natura stessa della predicazione, quelle istruzioni DEVONO essere eseguite, e quindi impegneranno sempre e comunque quelle risorse. Quando il processore si vede costretto ad eseguire il rollback di un'istruzione la cui predicazione non è andata a buon fine, sarà comunque troppo tardi: il lavoro è già stato fatto, le risorse impegnate, usate e rilasciate.
Il discorso di Niagara è diverso, è simile a quanto avviene nel P4 con l'HT e nel Power5, ed è quel che Intel dovrebbe fare con le prossime versioni di Itanium, per utilizzare le risorse rimaste libere (perché non usate, o perché un thread è fermo a causa di uno stallo, e quindi è costretto a non usarle).
C'è da dire che, anche se sulla carta ha buone possibilità grazie alla presenza di numerose unità di esecuzione, il compito non è affatto semplice, a causa dei vincoli dell'architettura EPIC: le risorse devono essere impegnate in toto per portare a termine un intero bundle, e non qualcuna delle sue istruzioni.
Un processore con logica ooo è molto più facilitato in questo, perché può organizzare le istruzioni come vuole, e usare al meglio le risorse disponibili in quel preciso momento. "Posso eseguire 3 istruzioni liberamente, mi serve un load, una moltiplicazione intera e una somma FP, ma ho disponibile soltanto un'AGU e un sommatore FP: ne eseguo due, e per l'altra ci penso dopo".
[QUOTE]Considerando poi la quantità spropositata di cache che hanno... Anche per questo consumano tanta potenza: ci sono tanti calcolo fatti inutilmente. Se una pipeline stalla, non consuma potenza. Se una pipeline fa calcoli (inutili) si.
Indubbiamente, e per fortuna la cache non consuma molta potenza (soltanto spazio, prezioso, su chip).
Devi effettuare il login per poter commentare
Se non sei ancora registrato, puoi farlo attraverso questo form.
Se sei già registrato e loggato nel sito, puoi inserire il tuo commento.
Si tenga presente quanto letto nel regolamento, nel rispetto del "quieto vivere".