Multithreading: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
RolloBot (discussione | contributi)
m Bot: Correzione di uno o più errori comuni
Riga 17:
 
Per esempio:
#Ciclo i : l'istruzione j del thread A viene caricata
#Ciclo i+1 : l'istruzione j+1 del thread A viene caricata
#Ciclo i+2 : l'istruzione j+2 del thread A viene caricata, il caricamento provoca un cache miss con corrispondente richiesta nella memoria centrale
#Ciclo i+3 : il processore avvia l'esecuzione del thread B
#Ciclo i+4 : l'istruzione k del thread B viene caricata
#Ciclo i+5 : l'istruzione k+1 del thread B viene caricata
 
Concettualmente è una tecnica simile a quella presente nel multitasking cooperativo dei sistemi [[RTOS]], in questi sistemi operativi quando un programma deve attendere un evento volontariamente cede la priorità a un altro programma pronto all'esecuzione.
Riga 42:
 
Per esempio:
#Ciclo i : l'istruzione j del thread A viene caricata
#Ciclo i+1 : l'istruzione k del thread B viene caricata
#Ciclo i+2 : l'istruzione h del thread C viene caricata
 
Questa tipologia di multithreading dovrebbe rimuovere la dipendenza dai dati dei singoli thread e quindi dovrebbe azzerare o comunque ridurre gli stalli della [[pipeline dati|pipeline]] dovuta alla dipendenza dai dati. Dato che ogni thread dovrebbe funzionare in modo indipendente i singoli thread eseguiranno programmi non correlati e quindi vi saranno poche probabilità che le istruzioni di un thread necessitino dei risultati elaborati da un'istruzione di un altro thread in esecuzione in quel momento.