Multithreading lato hardware
I processori con multithreading basato su hardware (chiamati anche processori multi-thread ) possono eseguire diversi processi in parallelo su ciascun core del processore , ad es. H. eseguire più programmi o parti di programma contemporaneamente. Il vantaggio consiste in un migliore utilizzo delle unità aritmetiche di ciascuna CPU e in una risposta più rapida dell'intero sistema agli eventi esterni, poiché più task possono essere elaborati in parallelo.
Multithreading
La spesa principale del multithreading hardware deriva dalla fornitura di diversi file di registro. Nei primi Intel Xeons con HT, questo costituiva circa il 5% dell'area del processore.
A differenza dell'esecuzione su più processori (in cui i processi generalmente "solo" devono condividere la memoria principale, I / O e cache L3, possibilmente anche il consumo di energia e la perdita di potenza), i processi con multithreading basato su hardware devono condividere molte più risorse condividere, quindi tra gli altri Cache L1, cache L2, cache µOp, predizione di ramo, fetcher di istruzioni, decodificatore di istruzioni, file di registro fisico, stazione di prenotazione, buffer di caricamento e memorizzazione, TLB, unità logiche aritmetiche, unità in virgola mobile. Poiché le unità di elaborazione di un core di processore sono raramente utilizzate completamente, il multithreading basato su hardware produce una potenza di elaborazione fino al 30% superiore a quella dei processori semplici, secondo Intel. In pratica, il valore è raramente superiore al 15 percento. Con le applicazioni ad alta intensità di memoria, anche il thrashing della cache può comportare un guadagno negativo.
Non vi è alcun cambiamento tra i thread, i comandi dei thread vengono eseguiti contemporaneamente. Ciò significa che non ci sono tempi morti (10-30 ms) a causa del cambio di contesto del sistema operativo. A tal fine, ogni core del processore ha due stati dell'architettura, inclusi set di registri , memoria dello stack , contatore di programma e MMU .
I processori che elaborano simultaneamente un gran numero di thread per core sono chiamati processori barile . Esempi sono l'XMOS XCore XS1-L1 con 8 thread / core, il CDC 6000 con 10 thread / core e il Cray Tera MTA con 128 thread / core.
Approfitta del multithreading
Il vantaggio del multithreading è un migliore utilizzo delle risorse della CPU.
Nei processori moderni, che hanno tutti una pipeline, si sta già tentando di aumentare l'utilizzo , ad esempio attraverso l' esecuzione fuori ordine , ma studi hanno dimostrato che molte sottounità della pipeline possono essere utilizzate anche meglio attraverso, ad esempio, il multithreading simultaneo. Uno dei motivi sono i rischi del gasdotto , che possono arrestare il gasdotto per un breve periodo.
Processori capaci di multithreading quindi processano più thread quasi simultaneamente. Questo può essere fatto in diversi modi:
- Multithreading semplice: viene commutato tra i diversi thread per ciclo.
- Multithreading simultaneo ( SMT ): le aree del file di registro sono riservate per un contesto di piccolo processore su cui viene eseguito un thread. I thread eseguiti in parallelo utilizzano quindi la stessa unità aritmetica. Ciò si traduce in un migliore utilizzo, soprattutto con i computer superscalari .
- Core MultiThreading (CMT): il processore ha diverse unità aritmetiche e logiche (ALU) che condividono un'unità a virgola mobile (FPU). Ciò significa che è possibile eseguire più thread contemporaneamente
Processori multithread per applicazioni embedded
Nelle applicazioni nell'area dei sistemi embedded , i processori multi-thread offrono ulteriori possibilità oltre al puro aumento delle prestazioni attraverso l'uso esplicito del multi-threading. Tali processori offrono algoritmi programmabili per il controllo dei singoli thread del programma (qui chiamato contesto). Ad esempio, un contesto può occupare in modo deterministico una certa proporzione dei clock e quindi le prestazioni del processore. I contesti possono anche competere per il tempo di elaborazione attraverso un controllo prioritario.
Possono essere messi in uno stato di attesa da comandi appropriati e svegliati da eventi hardware. Ciò consente al sistema di reagire molto rapidamente perché, a differenza del classico interrupt hardware, non è richiesto alcun sovraccarico quando si cambia contesto.
I contesti che occupano solo una piccola parte dei cicli di clock possono funzionare ciclicamente in modo permanente senza influenzare sensibilmente le prestazioni del sistema. B. può essere utilizzato per generare o decrittografare segnali più veloci.
Pertanto, utilizzando processori in grado di multithreading, è possibile fare a meno di hardware dedicato o processori aggiuntivi o processori di segnali digitali con poco sforzo nel chip del processore .
Poiché chiaramente più di due thread hanno senso in queste applicazioni, più pipeline non sono implementate in processori embedded multithread, ma la prima fase della pipeline decide il contesto da eseguire successivamente.
Esempi di processori multi-thread per applicazioni embedded:
- Ubicom 3K (8 thread)
- Famiglia Ubicom 5K (10 thread)
- Famiglia MIPS-34K (5 thread)
- Innovasic fido 1100 (un processore principale con 5 thread, 4 processori I / O aggiuntivi)
- XMOS (fino a 4 core con 8 thread ciascuno)
Guarda anche
- Computer parallelo
- Programmazione parallela
- Multithreading
- Multithreading simultaneo
- Hyper-Threading , un'implementazione speciale del multithreading basato su hardware nei processori x86
Prove individuali
- ↑ Hyper-Threading Technology Architecture and Microarchitecture ( Memento of the original from September 23, 2015 in the Internet Archive ) Info: Il link all'archivio è stato inserito automaticamente e non è stato ancora verificato. Si prega di controllare l'originale e il collegamento all'archivio secondo le istruzioni, quindi rimuovere questo avviso. (Intel)
- ↑ Le basi del multithreading hardware basato su Intel Hyperthreading (Servermeile Technet - il database della conoscenza)
- ↑ Hyper-Threading Technology Architecture and Microarchitecture ( Memento of the original from September 23, 2015 in the Internet Archive ) Info: Il link all'archivio è stato inserito automaticamente e non è stato ancora verificato. Si prega di controllare l'originale e il collegamento all'archivio secondo le istruzioni, quindi rimuovere questo avviso. (White paper Intel)
- ↑ Informazioni sulle prestazioni della tecnologia Intel® Hyper-Threading (Intel)
- ↑ IBM Knowledge Center. Estratto l'11 febbraio 2020 (inglese americano).