Micro-filo (multi-core)

Poiché i microprocessori stanno diventando più veloci, principalmente a causa dei core aggiunti ogni pochi mesi, il divario di latenza della memoria sta diventando più ampio. La latenza della memoria era di pochi cicli nel 1980 e attualmente raggiunge quasi i cicli 1000. Se il microprocessore ha abbastanza core e si spera che non stiano inviando richieste alla memoria principale allo stesso tempo, ci sarà un parziale nascondimento aggregato della latenza della memoria. Alcuni core potrebbero essere in esecuzione mentre altri sono in attesa di risposta della memoria. Questa non è la situazione migliore per i processori multi-core. Gli esperti di calcolo ad alte prestazioni si sforzano di mantenere tutti i core occupati tutto il tempo. Quindi, se ogni core è tenuto occupato tutto il tempo, è possibile un utilizzo completo dell’intero microprocessore. La creazione di thread basati su software non risolverà il problema per una ragione ovvia. Il passaggio contestuale dei thread alla memoria principale è un’operazione molto costosa rispetto alla latenza della memoria. Ad esempio, nel cambio di contesto del motore a banda larga delle celle qualsiasi thread del core richiede 2000 micro-secondi nei casi migliori. Alcune tecniche software come il doppio o il multi-buffering possono risolvere il problema della latenza della memoria. Tuttavia, possono essere utilizzati in algoritmi regolari, in cui il programma sa dove si trova il prossimo blocco di dati da recuperare dalla memoria; in questo caso invia la richiesta alla memoria mentre sta elaborando i dati di richiesta precedentemente. Tuttavia, questa tecnica non funzionerà se il programma non conosce il prossimo blocco di dati da recuperare dalla memoria. In altre parole, non funzionerà in algoritmi combinatori, come la spanning degli alberi o la classificazione delle liste casuali. Inoltre, il multi-buffering presuppone che la latenza della memoria sia costante e possa essere nascosta staticamente. Tuttavia, la realtà mostra che la latenza della memoria cambia da un’applicazione all’altra. Dipende dal carico complessivo sulle risorse condivise del microprocessore, come il tasso di richieste di memoria interconnessioni core condivisi.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

More: