Osservo che i compilatori generano codice che indirizza i registri SIMD ogni volta che viene utilizzata l'aritmetica double
. Questo vale per il codice non ottimizzato e ottimizzato. Questo significa che l'unità x87 FP può essere considerata obsoleta e presente solo per compatibilità con le versioni precedenti?Lo stack FP x87 è ancora rilevante?
Ho anche notato che altre piattaforme "popolari" si basano anche sulle rispettive implementazioni SIMD anziché su FP come stack.
Anche le implementazioni SIMD tendono ad essere di almeno 128 bit di larghezza, quindi mi chiedo se ciò significhi che la precisione (interna) delle operazioni è superiore a quella dell'unità x87 FP?
Mi interesso anche di prestazioni, velocità e latenza, considerando che SIMD è stato concepito pensando all'esecuzione del vettore, quindi mi chiedo come facciano con gli scalari.
In realtà la FPU può essere più precisa, poiché SIMD memorizza più valori in quei bit, attualmente supporta i doppi a 64 bit e i float a 32 bit. Esistono anche istruzioni scalari SSE. Tuttavia, FPU ha alcune funzioni che SSE non ha. – Jester
@Jester - si suppone che le unità SIMD non utilizzino i 128 bit completi per memorizzare il valore singolo? E che invece viene trattato come un 'double' pieno e ha solo 64 bit? –
E 'saldamente sulla lista delle specie in codice a rischio. Tutti hanno preso il cambio di rottura nei loro generatori di codice a 64 bit. I 3 grandi tutti sono passati. Ci sono alcuni ritardatari in giro, ad esempio il jitter .NET a 32 bit. A tempo debito possiamo chiamare il disastro FPU 80-bit una lontana brutta memoria. –