Quote:
Originariamente inviato da cdimauro
Dubito che assisteremo a implementazioni così spinte, per i problemi di clock skew di cui abbiamo già parlato.
|
Questo perche continui a ragionare in termini di
"è un unità SIMD con relative estensioni del set d'istruzioni".
Mentre invece a livello di progettazione del set d'istruzioni è un estensione per vector processing generico senza vincoli troppo stretti su
COME E DOVE va implementata.
Un vettore è un gruppo di word di una certa dimensione,
non necessariamente un unico super-registro.
SVE è pensata per essere implementata in modo semplice ed economico ANCHE come unità SIMD "nel core" ed ovviamente per interoperare agilmente con il set d'istruzioni "standard" (da cui la sovrapposizione dei primi 128bit dei registri Z di SVE con i registri NEON a livello di logica di programmazione), ma non è l'unica implementazione possibile.
E non è un caso che nel documento che avevo linkato dicano esplicitamente
"SVE is
not an extension of NEON, but a new set of vector instructions developed to target HPC workloads".
Ad esempio un implementazione a 2048bit in realtà potrebbe generare microOp o macroOp per 16 shadow register a 128bit da/verso fino a 16 unita funzionali e/o accumulando le operazioni nel reorder buffer del core o di un unita di esecuzione separata con datapath separati verso le cache e/o condivisa tra più core.
Immagina ad esempio un core ARM 4-way SMT in cui ogni thread ha un SVE "virtuale"
che in realtà è implementato come 16 unità NEON condivise tra i 4 thread;
dove quindi quando tutti e 4 i thread eseguono istruzioni SVE hanno le prestazioni di un SVE-512 ma quando solo uno di essi sta usando SVE e gli altri operano su interi è come se questo avesse un unità SVE-2048 tutta per se.
Notare che l'unico "aggravio" sarebbe che i registri P dei predicati dovrebbero essere a 128bit ma non si supererebbe il caso peggiore di problemi di clock skew che si avrebbe implementando dei "semplici" core con set d'istruzioni ARMv8 e come detto prima nel caso "peggiore" in cui tutti i thread usano SVE simultaneamene si avrebbero "solo" le prestazioni di un implementazione SVE-512 (oppure SVE-1536 con un thread che usa SVE e gli altri che usano "solo" le NEON).
A parte questo, non mi stupirei se in futuro spuntassero fuori GPU
basate su ARMv8+SVE a gestire le parti più "computazionalmente flessibili"
o anche SoC multicore ottimizzati per il signal processing e cose simili con implementazioni di SVE che dominano sul resto del core ARM vero e proprio.