L'unità vettore e il nuovo set di istruzioni
Intel ha equipaggiato ogni core con un'unità vettore che gestisce 16 elementi simultaneamente (le SPU del Cell gestiscono quattro operazioni SSE). Queste unità sono in grado di operare su elementi integer, single-prcision floating point e double precision floating point. Il throughput, pur ridotto alla metà, è ancora più grande di quello delle correnti GPU: i modelli AMD sono dalle due alla quattro volte più lenti, mentre Nvidia è dieci volte più lenta quando si passa dalla single alla double precision.
Anziché estendere il set di istruzioni SSE (ancora) per supportare la nuova unità vettore, gli ingegneri Intel ne hanno creato uno nuovo, chiamato Larrabee new instruction (LRBni). Intel è rimasta abbastanza vaga riguardo le istruzione attualmente supportate, ma dovremmo saperne qualcosa di più alla prossima Game Developers Conference (GDC). Intel ha pianificato molti incontri stampa durante l'evento, nei quali Michael Abrash, di RAD Game Tools, e Tom Forsyth di Intel comunicheranno i dettagli del set istruzioni.
Abbiamo comunque già diverse informazioni: il set istruzioni supporta fino a tre operandi, che permettono l'implementazione di istruzioni multiply-and-add (MAD) e anche l'esecuzione di operazioni non-destructive, diversamente dalle SSE, in cui uno dei registri sorgente è sovrascritto dalla scrittura del risultato. Rispetto al set di istruzioni VMX presente nel Cell PowerPC Processing Element (PPE), per esempio, che opera solo sui registri, qui uno degli operandi può essere letto direttamente dalla cache L1, abilitandone l'uso come un registro file esteso. Questa unità è anche molto flessibile, poiché può organizzare i dati in un registro o eseguire varie conversioni nel formato "esotico" solitamente usato dalla GPU, senza perdita di prestazioni, o nel caso peggiore, con solo una piccola riduzione prestazionale. Queste conversioni possono essere eseguite direttamente nel momento in cui il dato è caricato dalla memoria cache, permettendo l'immagazzinamento nelle memoria in una forma compatta, che massimizza la quantità di dati contenibili nella memoria cache.
Interessante anche l'abilità di eseguire operazioni di scatter/gather, tipicamente problematiche per la GPU. Le unità SIMD non hanno generalmente molta libertà quanto si tratta di accessi alla memoria. Un vettore è letto nella memoria partendo da un singolo indirizzo che spesso ha particolari restrizioni riguardanti la struttura dati. Larrabee è più flessibile. È possibile caricare o immagazzinare 16 elementi di un vettore in memoria da 16 differenti indirizzi contenuti in un altro vettore. Ovviamente, accessi alla memoria completamente incoerenti impattano negativamente sulla memoria cache e, nel caso peggiore, sono necessari fino a 16 cicli per effettuare l'operazione (viene letta al massimo una linea di cache per ciclo).